From af7d5b77020e46ce63b4efd8872da9c2f9a07aa4 Mon Sep 17 00:00:00 2001 From: David Mejia Date: Thu, 10 Mar 2022 12:15:14 -0500 Subject: [PATCH 001/220] add filename to filter for computed files --- api/data_refinery_api/views/computed_file.py | 1 + 1 file changed, 1 insertion(+) diff --git a/api/data_refinery_api/views/computed_file.py b/api/data_refinery_api/views/computed_file.py index 6e0c2c4d8..0af9fa926 100644 --- a/api/data_refinery_api/views/computed_file.py +++ b/api/data_refinery_api/views/computed_file.py @@ -139,6 +139,7 @@ class ComputedFileListView(generics.ListAPIView): "created_at", "last_modified", "result__id", + "filename", ) ordering_fields = ( "id", From 57071f9a584187b7b3a3bed4626939c5031032d2 Mon Sep 17 00:00:00 2001 From: Deepa Prasad Date: Mon, 11 Apr 2022 13:38:13 -0400 Subject: [PATCH 002/220] changed donate link --- .github/FUNDING.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/FUNDING.yml b/.github/FUNDING.yml index 5194db9a2..66f9b7754 100644 --- a/.github/FUNDING.yml +++ b/.github/FUNDING.yml @@ -9,4 +9,4 @@ community_bridge: # Replace with a single Community Bridge project-name e.g., cl liberapay: # Replace with a single Liberapay username issuehunt: # Replace with a single IssueHunt username otechie: # Replace with a single Otechie username -custom: https://www.ccdatalab.org/donate +custom: https://www.ccdatalab.org/donate-link From f777db3f61f723ab9b46dd1ff5102cc93964a223 Mon Sep 17 00:00:00 2001 From: ark Date: Thu, 5 May 2022 12:03:20 -0700 Subject: [PATCH 003/220] Get rid of wildcard imports. --- .../import_external_sample_attributes.py | 2 +- .../import_external_sample_keywords.py | 6 ++++-- .../management/commands/clear_database.py | 21 ++++++++++++++++++- .../commands/correct_affy_samples.py | 2 +- 4 files changed, 26 insertions(+), 5 deletions(-) diff --git a/foreman/data_refinery_foreman/foreman/management/commands/import_external_sample_attributes.py b/foreman/data_refinery_foreman/foreman/management/commands/import_external_sample_attributes.py index c22a3f354..def44fbdd 100644 --- a/foreman/data_refinery_foreman/foreman/management/commands/import_external_sample_attributes.py +++ b/foreman/data_refinery_foreman/foreman/management/commands/import_external_sample_attributes.py @@ -23,7 +23,7 @@ import botocore from data_refinery_common.logging import get_and_configure_logger -from data_refinery_common.models import * +from data_refinery_common.models import Contribution, OntologyTerm, Sample, SampleAttribute from data_refinery_common.utils import parse_s3_url logger = get_and_configure_logger(__name__) diff --git a/foreman/data_refinery_foreman/foreman/management/commands/import_external_sample_keywords.py b/foreman/data_refinery_foreman/foreman/management/commands/import_external_sample_keywords.py index 434b12ceb..c3b84375a 100644 --- a/foreman/data_refinery_foreman/foreman/management/commands/import_external_sample_keywords.py +++ b/foreman/data_refinery_foreman/foreman/management/commands/import_external_sample_keywords.py @@ -25,7 +25,7 @@ import botocore from data_refinery_common.logging import get_and_configure_logger -from data_refinery_common.models import * +from data_refinery_common.models import Contribution, OntologyTerm, Sample, SampleKeyword from data_refinery_common.utils import parse_s3_url logger = get_and_configure_logger(__name__) @@ -56,7 +56,9 @@ def import_keywords(keywords: Dict, source: Contribution): for keyword in keywords: SampleKeyword.objects.get_or_create( - sample=sample, source=source, name=OntologyTerm.get_or_create_from_api(keyword), + sample=sample, + source=source, + name=OntologyTerm.get_or_create_from_api(keyword), ) for experiment in dirty_experiments: diff --git a/foreman/data_refinery_foreman/surveyor/management/commands/clear_database.py b/foreman/data_refinery_foreman/surveyor/management/commands/clear_database.py index 81ea94c7e..a1518c6ae 100644 --- a/foreman/data_refinery_foreman/surveyor/management/commands/clear_database.py +++ b/foreman/data_refinery_foreman/surveyor/management/commands/clear_database.py @@ -4,7 +4,26 @@ from django.core.management.base import BaseCommand -from data_refinery_common.models import * +from data_refinery_common.models import ( + ComputationalResult, + ComputationalResultAnnotation, + ComputedFile, + DownloaderJob, + DownloaderJobOriginalFileAssociation, + Experiment, + ExperimentAnnotation, + ExperimentSampleAssociation, + Organism, + OrganismIndex, + OriginalFile, + ProcessorJob, + ProcessorJobOriginalFileAssociation, + Sample, + SampleAnnotation, + SampleResultAssociation, + SurveyJob, + SurveyJobKeyValue, +) class Command(BaseCommand): diff --git a/workers/data_refinery_workers/processors/management/commands/correct_affy_samples.py b/workers/data_refinery_workers/processors/management/commands/correct_affy_samples.py index 8f5567b66..7de449438 100644 --- a/workers/data_refinery_workers/processors/management/commands/correct_affy_samples.py +++ b/workers/data_refinery_workers/processors/management/commands/correct_affy_samples.py @@ -22,7 +22,7 @@ from rpy2.rinterface_lib.embedded import RRuntimeError from data_refinery_common.logging import get_and_configure_logger -from data_refinery_common.models import * +from data_refinery_common.models import Sample from data_refinery_common.utils import get_env_variable, get_readable_affymetrix_names logger = get_and_configure_logger(__name__) From 6b606f2013982e78cee31a1bec8f2d6672cbf629 Mon Sep 17 00:00:00 2001 From: ark Date: Thu, 5 May 2022 20:30:59 -0700 Subject: [PATCH 004/220] Fix test_common job. --- workers/install_affy_only.R | 1 + 1 file changed, 1 insertion(+) diff --git a/workers/install_affy_only.R b/workers/install_affy_only.R index 354e0e592..b488a0287 100644 --- a/workers/install_affy_only.R +++ b/workers/install_affy_only.R @@ -8,6 +8,7 @@ options(Ncpus=parallel::detectCores()) devtools::install_version('dplyr', version='1.0.0') devtools::install_version('tidyr', version='1.1.0') devtools::install_version('ff', version='2.2-14') +devtools::install_version('locfit', version='1.5-9.4') # Helper function that installs a list of packages using the input URLs install_with_url <- function(urls) { From 980a8316b3b8dfa1e0f98d937e8e99822ebd4292 Mon Sep 17 00:00:00 2001 From: Arkadii Yakovets Date: Fri, 24 Jun 2022 10:06:50 -0700 Subject: [PATCH 005/220] Add psycopg2 package dependencies. --- common/dockerfiles/Dockerfile.migrations | 5 +++++ foreman/dockerfiles/Dockerfile.foreman | 2 ++ 2 files changed, 7 insertions(+) diff --git a/common/dockerfiles/Dockerfile.migrations b/common/dockerfiles/Dockerfile.migrations index 7c042f255..8688f12f1 100644 --- a/common/dockerfiles/Dockerfile.migrations +++ b/common/dockerfiles/Dockerfile.migrations @@ -3,6 +3,11 @@ FROM python:3.8.5-slim-buster RUN groupadd user && useradd --create-home --home-dir /home/user -g user user WORKDIR /home/user +RUN apt-get update -qq && \ + apt-get install -y \ + gcc \ + libpq-dev + # Needed for migration 0006 COPY config/ config diff --git a/foreman/dockerfiles/Dockerfile.foreman b/foreman/dockerfiles/Dockerfile.foreman index 8c09c6888..929ef2476 100644 --- a/foreman/dockerfiles/Dockerfile.foreman +++ b/foreman/dockerfiles/Dockerfile.foreman @@ -8,6 +8,8 @@ RUN apt-get -y install apt-fast RUN apt-fast update -qq && \ apt-fast install -y \ + gcc \ + libpq-dev \ python3 \ python3-pip From 0836c327d843c3aca5d980b9bc60a93b02f988e0 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 11 Aug 2022 14:51:52 +0000 Subject: [PATCH 006/220] Bump django from 3.2.7 to 3.2.15 in /api Bumps [django](https://github.com/django/django) from 3.2.7 to 3.2.15. - [Release notes](https://github.com/django/django/releases) - [Commits](https://github.com/django/django/compare/3.2.7...3.2.15) --- updated-dependencies: - dependency-name: django dependency-type: direct:production ... Signed-off-by: dependabot[bot] --- api/requirements.txt | 182 ++++++++++++++++++++++++++++++++----------- 1 file changed, 137 insertions(+), 45 deletions(-) diff --git a/api/requirements.txt b/api/requirements.txt index 2bbe81c1e..d3adfa3fa 100644 --- a/api/requirements.txt +++ b/api/requirements.txt @@ -4,51 +4,143 @@ # # pip-compile requirements.in # -apscheduler==3.7.0 # via -r requirements.in -asgiref==3.3.4 # via django -boto3==1.17.93 # via -r requirements.in -botocore==1.20.93 # via boto3, s3transfer -certifi==2021.5.30 # via requests -chardet==4.0.0 # via requests -coreapi==2.3.3 # via -r requirements.in, drf-yasg -coreschema==0.0.4 # via coreapi, drf-yasg -coverage==5.5 # via -r requirements.in -django-computedfields==0.1.5 # via -r requirements.in -django-cors-headers==3.7.0 # via -r requirements.in -django-elasticsearch-dsl-drf==0.22.1 # via -r requirements.in -django-elasticsearch-dsl==6.5.0 # via -r requirements.in, django-elasticsearch-dsl-drf -django-filter==2.4.0 # via -r requirements.in -django-hstore==1.4.2 # via djangorestframework-hstore -django-nine==0.2.4 # via django-elasticsearch-dsl-drf -django==3.2.7 # via -r requirements.in, django-cors-headers, django-filter, django-nine, djangorestframework, djangorestframework-hstore, drf-yasg -djangorestframework-hstore==1.3 # via -r requirements.in -djangorestframework==3.12.4 # via -r requirements.in, django-elasticsearch-dsl-drf, djangorestframework-hstore, drf-yasg -drf-yasg==1.20.0 # via -r requirements.in -elasticsearch-dsl==6.4.0 # via -r requirements.in, django-elasticsearch-dsl, django-elasticsearch-dsl-drf -elasticsearch==6.8.2 # via django-elasticsearch-dsl-drf, elasticsearch-dsl -idna==2.10 # via requests -inflection==0.5.1 # via drf-yasg -itypes==1.2.0 # via coreapi -jinja2==3.0.1 # via -r requirements.in, coreschema -jmespath==0.10.0 # via boto3, botocore -markupsafe==2.0.1 # via -r requirements.in, jinja2 -packaging==20.9 # via drf-yasg -psycopg2-binary==2.8.6 # via -r requirements.in -psycopg2==2.8.6 # via djangorestframework-hstore -pyparsing==2.4.7 # via packaging -python-dateutil==2.8.1 # via botocore, elasticsearch-dsl -pytz==2021.1 # via apscheduler, django, tzlocal -pyyaml==5.4.1 # via -r requirements.in -requests==2.25.1 # via -r requirements.in, coreapi -ruamel.yaml.clib==0.2.2 # via ruamel.yaml -ruamel.yaml==0.17.9 # via drf-yasg -s3transfer==0.4.2 # via boto3 -six==1.16.0 # via -r requirements.in, apscheduler, django-elasticsearch-dsl, django-elasticsearch-dsl-drf, elasticsearch-dsl, python-dateutil -sqlparse==0.4.2 # via -r requirements.in, django -typing-extensions==3.10.0.0 # via asgiref -tzlocal==2.1 # via apscheduler -uritemplate==3.0.1 # via coreapi, drf-yasg -urllib3==1.26.5 # via -r requirements.in, botocore, elasticsearch, requests +apscheduler==3.7.0 + # via -r requirements.in +asgiref==3.3.4 + # via django +boto3==1.17.93 + # via -r requirements.in +botocore==1.20.93 + # via + # boto3 + # s3transfer +certifi==2021.5.30 + # via requests +chardet==4.0.0 + # via requests +coreapi==2.3.3 + # via + # -r requirements.in + # drf-yasg +coreschema==0.0.4 + # via + # coreapi + # drf-yasg +coverage==5.5 + # via -r requirements.in +django==3.2.15 + # via + # -r requirements.in + # django-cors-headers + # django-filter + # django-nine + # djangorestframework + # djangorestframework-hstore + # drf-yasg +django-computedfields==0.1.5 + # via -r requirements.in +django-cors-headers==3.7.0 + # via -r requirements.in +django-elasticsearch-dsl==6.5.0 + # via + # -r requirements.in + # django-elasticsearch-dsl-drf +django-elasticsearch-dsl-drf==0.22.1 + # via -r requirements.in +django-filter==2.4.0 + # via -r requirements.in +django-hstore==1.4.2 + # via djangorestframework-hstore +django-nine==0.2.4 + # via django-elasticsearch-dsl-drf +djangorestframework==3.12.4 + # via + # -r requirements.in + # django-elasticsearch-dsl-drf + # djangorestframework-hstore + # drf-yasg +djangorestframework-hstore==1.3 + # via -r requirements.in +drf-yasg==1.20.0 + # via -r requirements.in +elasticsearch==6.8.2 + # via + # django-elasticsearch-dsl-drf + # elasticsearch-dsl +elasticsearch-dsl==6.4.0 + # via + # -r requirements.in + # django-elasticsearch-dsl + # django-elasticsearch-dsl-drf +idna==2.10 + # via requests +inflection==0.5.1 + # via drf-yasg +itypes==1.2.0 + # via coreapi +jinja2==3.0.1 + # via + # -r requirements.in + # coreschema +jmespath==0.10.0 + # via + # boto3 + # botocore +markupsafe==2.0.1 + # via + # -r requirements.in + # jinja2 +packaging==20.9 + # via drf-yasg +psycopg2==2.8.6 + # via djangorestframework-hstore +psycopg2-binary==2.8.6 + # via -r requirements.in +pyparsing==2.4.7 + # via packaging +python-dateutil==2.8.1 + # via + # botocore + # elasticsearch-dsl +pytz==2021.1 + # via + # apscheduler + # django + # tzlocal +pyyaml==5.4.1 + # via -r requirements.in +requests==2.25.1 + # via + # -r requirements.in + # coreapi +ruamel-yaml==0.17.9 + # via drf-yasg +s3transfer==0.4.2 + # via boto3 +six==1.16.0 + # via + # -r requirements.in + # apscheduler + # django-elasticsearch-dsl + # django-elasticsearch-dsl-drf + # elasticsearch-dsl + # python-dateutil +sqlparse==0.4.2 + # via + # -r requirements.in + # django +tzlocal==2.1 + # via apscheduler +uritemplate==3.0.1 + # via + # coreapi + # drf-yasg +urllib3==1.26.5 + # via + # -r requirements.in + # botocore + # elasticsearch + # requests # The following packages are considered to be unsafe in a requirements file: # setuptools From d654b01c98cc4bc0acf3740b41bf965db0b13ea1 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 11 Aug 2022 14:51:54 +0000 Subject: [PATCH 007/220] Bump django in /workers/data_refinery_workers/downloaders Bumps [django](https://github.com/django/django) from 3.2.7 to 3.2.15. - [Release notes](https://github.com/django/django/releases) - [Commits](https://github.com/django/django/compare/3.2.7...3.2.15) --- updated-dependencies: - dependency-name: django dependency-type: direct:production ... Signed-off-by: dependabot[bot] --- .../downloaders/requirements.txt | 79 +++++++++++++------ 1 file changed, 56 insertions(+), 23 deletions(-) diff --git a/workers/data_refinery_workers/downloaders/requirements.txt b/workers/data_refinery_workers/downloaders/requirements.txt index 8a5a95c18..fe064620f 100644 --- a/workers/data_refinery_workers/downloaders/requirements.txt +++ b/workers/data_refinery_workers/downloaders/requirements.txt @@ -4,26 +4,59 @@ # # pip-compile requirements.in # -asgiref==3.3.4 # via django -certifi==2021.5.30 # via requests -chardet==4.0.0 # via requests -coverage==5.5 # via coveralls -coveralls==3.1.0 # via -r requirements.in -django-computedfields==0.1.5 # via -r requirements.in -django==3.2.7 # via -r requirements.in -docopt==0.6.2 # via coveralls -idna==2.10 # via requests, yarl -multidict==5.1.0 # via yarl -psutil==5.8.0 # via -r requirements.in -psycopg2-binary==2.8.6 # via -r requirements.in -pytz==2021.1 # via django -pyyaml==5.4.1 # via -r requirements.in, vcrpy -requests==2.25.1 # via -r requirements.in, coveralls -retrying==1.3.3 # via -r requirements.in -six==1.16.0 # via retrying, vcrpy -sqlparse==0.4.2 # via -r requirements.in, django -typing-extensions==3.10.0.0 # via asgiref, yarl -urllib3==1.26.5 # via -r requirements.in, requests -vcrpy==4.1.1 # via -r requirements.in -wrapt==1.12.1 # via vcrpy -yarl==1.6.3 # via vcrpy +asgiref==3.3.4 + # via django +certifi==2021.5.30 + # via requests +chardet==4.0.0 + # via requests +coverage==5.5 + # via coveralls +coveralls==3.1.0 + # via -r requirements.in +django==3.2.15 + # via -r requirements.in +django-computedfields==0.1.5 + # via -r requirements.in +docopt==0.6.2 + # via coveralls +idna==2.10 + # via + # requests + # yarl +multidict==5.1.0 + # via yarl +psutil==5.8.0 + # via -r requirements.in +psycopg2-binary==2.8.6 + # via -r requirements.in +pytz==2021.1 + # via django +pyyaml==5.4.1 + # via + # -r requirements.in + # vcrpy +requests==2.25.1 + # via + # -r requirements.in + # coveralls +retrying==1.3.3 + # via -r requirements.in +six==1.16.0 + # via + # retrying + # vcrpy +sqlparse==0.4.2 + # via + # -r requirements.in + # django +urllib3==1.26.5 + # via + # -r requirements.in + # requests +vcrpy==4.1.1 + # via -r requirements.in +wrapt==1.12.1 + # via vcrpy +yarl==1.6.3 + # via vcrpy From 3986cdc24685c7b87c24ebefda1c4c045e973474 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 11 Aug 2022 14:53:37 +0000 Subject: [PATCH 008/220] Bump django from 3.2.7 to 3.2.15 in /common Bumps [django](https://github.com/django/django) from 3.2.7 to 3.2.15. - [Release notes](https://github.com/django/django/releases) - [Commits](https://github.com/django/django/compare/3.2.7...3.2.15) --- updated-dependencies: - dependency-name: django dependency-type: direct:production ... Signed-off-by: dependabot[bot] --- common/requirements.txt | 134 ++++++++++++++++++++++++++++++---------- 1 file changed, 100 insertions(+), 34 deletions(-) diff --git a/common/requirements.txt b/common/requirements.txt index 088feeb37..b8efe2dea 100644 --- a/common/requirements.txt +++ b/common/requirements.txt @@ -4,37 +4,103 @@ # # pip-compile requirements.in # -asgiref==3.3.4 # via django -boto3==1.17.93 # via -r requirements.in -botocore==1.20.93 # via boto3, s3transfer -certifi==2021.5.30 # via requests -chardet==4.0.0 # via requests -coverage==5.5 # via -r requirements.in -daiquiri==3.0.0 # via -r requirements.in -django-computedfields==0.1.5 # via -r requirements.in -django-elasticsearch-dsl-drf==0.22.1 # via -r requirements.in -django-elasticsearch-dsl==6.5.0 # via -r requirements.in, django-elasticsearch-dsl-drf -django-nine==0.2.4 # via django-elasticsearch-dsl-drf -django==3.2.7 # via -r requirements.in, django-nine, djangorestframework -djangorestframework==3.12.4 # via -r requirements.in, django-elasticsearch-dsl-drf -elasticsearch-dsl==6.4.0 # via -r requirements.in, django-elasticsearch-dsl, django-elasticsearch-dsl-drf -elasticsearch==6.8.2 # via django-elasticsearch-dsl-drf, elasticsearch-dsl -idna==2.10 # via requests, yarl -jmespath==0.10.0 # via boto3, botocore -multidict==5.1.0 # via yarl -psycopg2-binary==2.8.6 # via -r requirements.in -python-dateutil==2.8.1 # via botocore, elasticsearch-dsl -python-json-logger==2.0.1 # via daiquiri -pytz==2021.1 # via django -pyyaml==5.4.1 # via -r requirements.in, vcrpy -raven==6.10.0 # via -r requirements.in -requests==2.25.1 # via -r requirements.in -retrying==1.3.3 # via -r requirements.in -s3transfer==0.4.2 # via boto3 -six==1.16.0 # via django-elasticsearch-dsl, django-elasticsearch-dsl-drf, elasticsearch-dsl, python-dateutil, retrying, vcrpy -sqlparse==0.4.2 # via -r requirements.in, django -typing-extensions==3.10.0.0 # via asgiref, yarl -urllib3==1.26.5 # via -r requirements.in, botocore, elasticsearch, requests -vcrpy==4.1.1 # via -r requirements.in -wrapt==1.12.1 # via vcrpy -yarl==1.6.3 # via vcrpy +asgiref==3.3.4 + # via django +boto3==1.17.93 + # via -r requirements.in +botocore==1.20.93 + # via + # boto3 + # s3transfer +certifi==2021.5.30 + # via requests +chardet==4.0.0 + # via requests +coverage==5.5 + # via -r requirements.in +daiquiri==3.0.0 + # via -r requirements.in +django==3.2.15 + # via + # -r requirements.in + # django-nine + # djangorestframework +django-computedfields==0.1.5 + # via -r requirements.in +django-elasticsearch-dsl==6.5.0 + # via + # -r requirements.in + # django-elasticsearch-dsl-drf +django-elasticsearch-dsl-drf==0.22.1 + # via -r requirements.in +django-nine==0.2.4 + # via django-elasticsearch-dsl-drf +djangorestframework==3.12.4 + # via + # -r requirements.in + # django-elasticsearch-dsl-drf +elasticsearch==6.8.2 + # via + # django-elasticsearch-dsl-drf + # elasticsearch-dsl +elasticsearch-dsl==6.4.0 + # via + # -r requirements.in + # django-elasticsearch-dsl + # django-elasticsearch-dsl-drf +idna==2.10 + # via + # requests + # yarl +jmespath==0.10.0 + # via + # boto3 + # botocore +multidict==5.1.0 + # via yarl +psycopg2-binary==2.8.6 + # via -r requirements.in +python-dateutil==2.8.1 + # via + # botocore + # elasticsearch-dsl +python-json-logger==2.0.1 + # via daiquiri +pytz==2021.1 + # via django +pyyaml==5.4.1 + # via + # -r requirements.in + # vcrpy +raven==6.10.0 + # via -r requirements.in +requests==2.25.1 + # via -r requirements.in +retrying==1.3.3 + # via -r requirements.in +s3transfer==0.4.2 + # via boto3 +six==1.16.0 + # via + # django-elasticsearch-dsl + # django-elasticsearch-dsl-drf + # elasticsearch-dsl + # python-dateutil + # retrying + # vcrpy +sqlparse==0.4.2 + # via + # -r requirements.in + # django +urllib3==1.26.5 + # via + # -r requirements.in + # botocore + # elasticsearch + # requests +vcrpy==4.1.1 + # via -r requirements.in +wrapt==1.12.1 + # via vcrpy +yarl==1.6.3 + # via vcrpy From c4e19e75bd7fad17c6611cd438cf87e38b48bbe0 Mon Sep 17 00:00:00 2001 From: Arkadii Yakovets Date: Thu, 1 Sep 2022 10:50:59 -0700 Subject: [PATCH 009/220] Update pre-commit config. Bump black version. --- .pre-commit-config.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index d024704da..b651ce24a 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -22,7 +22,7 @@ repos: - id: isort - repo: https://github.com/psf/black - rev: 19.10b0 + rev: 22.3.0 hooks: - id: black args: [--line-length=100] From b87cbd21675c51dbaa8a956a3c87a1444ccade14 Mon Sep 17 00:00:00 2001 From: Arkadii Yakovets Date: Thu, 1 Sep 2022 11:03:18 -0700 Subject: [PATCH 010/220] Add `Accession` model. Update pre-commit config. --- .pre-commit-config.yaml | 2 +- .../migrations/0071_auto_20220901_1653.py | 44 +++++++++++++++++++ .../data_refinery_common/models/__init__.py | 1 + .../data_refinery_common/models/accession.py | 22 ++++++++++ 4 files changed, 68 insertions(+), 1 deletion(-) create mode 100644 common/data_refinery_common/migrations/0071_auto_20220901_1653.py create mode 100644 common/data_refinery_common/models/accession.py diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index d024704da..b651ce24a 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -22,7 +22,7 @@ repos: - id: isort - repo: https://github.com/psf/black - rev: 19.10b0 + rev: 22.3.0 hooks: - id: black args: [--line-length=100] diff --git a/common/data_refinery_common/migrations/0071_auto_20220901_1653.py b/common/data_refinery_common/migrations/0071_auto_20220901_1653.py new file mode 100644 index 000000000..c7d3b0b63 --- /dev/null +++ b/common/data_refinery_common/migrations/0071_auto_20220901_1653.py @@ -0,0 +1,44 @@ +# Generated by Django 3.2.7 on 2022-09-01 16:53 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ("data_refinery_common", "0070_auto_20211208_2118"), + ] + + operations = [ + migrations.CreateModel( + name="Accession", + fields=[ + ( + "id", + models.AutoField( + auto_created=True, + primary_key=True, + serialize=False, + verbose_name="ID", + ), + ), + ("code", models.TextField()), + ("created_at", models.DateTimeField(auto_now_add=True)), + ("last_modified_at", models.DateTimeField(auto_now=True)), + ("organism", models.TextField()), + ("published_date", models.DateTimeField()), + ("sample_count", models.PositiveIntegerField(default=0)), + ("source", models.TextField()), + ("technology", models.TextField()), + ], + options={ + "db_table": "accessions", + }, + ), + migrations.AddConstraint( + model_name="accession", + constraint=models.UniqueConstraint( + fields=("code", "source", "technology"), name="unique_accession" + ), + ), + ] diff --git a/common/data_refinery_common/models/__init__.py b/common/data_refinery_common/models/__init__.py index 39abe7ee3..8e9564153 100644 --- a/common/data_refinery_common/models/__init__.py +++ b/common/data_refinery_common/models/__init__.py @@ -1,3 +1,4 @@ +from data_refinery_common.models.accession import Accession # noqa from data_refinery_common.models.api_token import APIToken # noqa from data_refinery_common.models.associations.compendium_result_organism_association import ( # noqa CompendiumResultOrganismAssociation, diff --git a/common/data_refinery_common/models/accession.py b/common/data_refinery_common/models/accession.py new file mode 100644 index 000000000..dc93cfd88 --- /dev/null +++ b/common/data_refinery_common/models/accession.py @@ -0,0 +1,22 @@ +from django.db import models + + +class Accession(models.Model): + """Accession model.""" + + class Meta: + constraints = ( + models.UniqueConstraint( + fields=("code", "source", "technology"), name="unique_accession" + ), + ) + db_table = "accessions" + + code = models.TextField() + created_at = models.DateTimeField(auto_now_add=True) + last_modified_at = models.DateTimeField(auto_now=True) + organism = models.TextField() + published_date = models.DateTimeField() + sample_count = models.PositiveIntegerField(default=0) + source = models.TextField() + technology = models.TextField() From 8f7f51693d53f75a8336f66c340383d58adaee78 Mon Sep 17 00:00:00 2001 From: Arkadii Yakovets Date: Thu, 1 Sep 2022 11:37:53 -0700 Subject: [PATCH 011/220] Run black. --- api/data_refinery_api/middleware.py | 10 +- api/data_refinery_api/settings.py | 16 ++- .../test/test_api_general.py | 4 +- api/data_refinery_api/test/test_compendia.py | 3 +- api/data_refinery_api/test/test_dataset.py | 19 ++- .../test/test_dataset_stats.py | 2 +- api/data_refinery_api/test/test_search.py | 6 +- api/data_refinery_api/urls.py | 14 ++- api/data_refinery_api/views/api_token.py | 4 +- api/data_refinery_api/views/dataset.py | 60 +++++++--- api/data_refinery_api/views/experiment.py | 6 +- .../views/experiment_document.py | 5 +- .../views/jobs/downloader_job.py | 2 +- .../views/jobs/processor_job.py | 2 +- .../views/jobs/survey_job.py | 2 +- api/data_refinery_api/views/stats.py | 4 +- common/data_refinery_common/job_management.py | 6 +- common/data_refinery_common/message_queue.py | 6 +- .../migrations/0001_initial.py | 112 +++++++++++++----- .../migrations/0005_auto_20181030_1955.py | 8 +- .../migrations/0006_auto_20181102_1526.py | 4 +- .../migrations/0008_auto_20190104_2135.py | 7 +- .../migrations/0009_es_cache.py | 4 +- .../migrations/0015_dataset_email_ccdl_ok.py | 4 +- .../0018_downloaderjob_ram_amount.py | 4 +- .../migrations/0019_sample_is_blacklisted.py | 4 +- .../migrations/0027_organism_qn_target.py | 2 +- .../0030_update_sample_manufacturer.py | 2 +- .../migrations/0032_surveyedaccession.py | 4 +- .../migrations/0034_cdfcorrectedaccession.py | 4 +- .../0038_paginate_default_svd_algorithm.py | 8 +- .../migrations/0039_auto_20190925_1338.py | 5 +- .../0042_remove_experiment_organism_names.py | 5 +- .../migrations/0043_auto_20191108_2144.py | 9 +- .../migrations/0044_compendium_results.py | 2 +- .../migrations/0045_svd_algorithm.py | 2 +- .../0046_compendium_version_number.py | 2 +- .../migrations/0047_clean_compendia_files.py | 2 +- .../migrations/0048_processorjob_abort.py | 6 +- .../0050_remove_organismindex_s3_url.py | 5 +- .../0051_remove_dataset_email_sent.py | 5 +- ...52_remove_invalid_tximport_associations.py | 4 +- .../migrations/0054_datasetannotation.py | 5 +- .../migrations/0056_auto_20200529_1230.py | 8 +- .../migrations/0059_auto_20200819_1632.py | 12 +- .../migrations/0060_auto_20200828_1650.py | 4 +- .../0061_transcriptome_database_name.py | 2 +- .../migrations/0064_auto_20210225_1622.py | 5 +- .../migrations/0065_auto_20210324_1948.py | 36 ++++-- .../migrations/0066_auto_20210611_1900.py | 16 ++- .../migrations/0067_dataset_notify_me.py | 4 +- .../migrations/0068_auto_20210729_1610.py | 4 +- ...version_computedfile_compendium_version.py | 4 +- .../data_refinery_common/models/api_token.py | 4 +- .../models/base_models.py | 2 +- .../models/command_progress.py | 4 +- .../models/compendium_result.py | 6 +- .../models/computational_result.py | 13 +- .../models/computational_result_annotation.py | 4 +- .../models/computed_file.py | 36 +++--- .../models/contributions.py | 2 +- .../models/dataset_annotation.py | 6 +- .../data_refinery_common/models/documents.py | 6 +- .../models/experiment_annotation.py | 4 +- .../models/jobs/downloader_job.py | 2 +- .../models/jobs/processor_job.py | 6 +- .../models/jobs/survey_job.py | 6 +- .../data_refinery_common/models/organism.py | 4 +- .../models/organism_index.py | 6 +- .../models/original_file.py | 31 ++--- .../models/sample_annotation.py | 4 +- .../models/test_ontology_term.py | 6 +- .../models/test_organisms.py | 3 +- .../runtests/settings.py | 7 +- common/data_refinery_common/settings.py | 16 ++- common/data_refinery_common/signals.py | 3 +- common/data_refinery_common/test_utils.py | 2 +- common/data_refinery_common/utils.py | 22 ++-- .../foreman/job_control.py | 2 +- .../foreman/job_requeuing.py | 4 +- .../commands/check_computed_files.py | 2 +- .../management/commands/correct_affy_cdfs.py | 3 +- .../management/commands/create_compendia.py | 10 +- .../create_missing_downloader_jobs.py | 2 +- .../management/commands/create_quantpendia.py | 5 +- .../management/commands/fix_compendia.py | 5 +- .../commands/generate_dataset_report.py | 4 +- .../import_external_sample_keywords.py | 4 +- .../management/commands/import_ontology.py | 4 +- .../commands/mark_samples_unprocessable.py | 22 ++-- .../management/commands/organism_shepherd.py | 3 +- .../management/commands/retry_samples.py | 4 +- .../management/commands/run_tximport.py | 6 +- .../foreman/management/commands/stop_jobs.py | 4 +- .../commands/test_rerun_salmon_old_samples.py | 2 +- .../management/commands/test_retry_samples.py | 5 +- .../commands/update_experiment_metadata.py | 7 +- .../commands/update_sample_metadata.py | 3 +- foreman/data_refinery_foreman/settings.py | 16 ++- .../surveyor/external_source.py | 3 +- .../data_refinery_foreman/surveyor/harmony.py | 6 +- foreman/data_refinery_foreman/surveyor/sra.py | 2 +- .../surveyor/test_array_express.py | 3 +- .../surveyor/test_geo.py | 9 +- .../surveyor/test_harmony.py | 4 +- .../surveyor/test_sra.py | 12 +- .../surveyor/test_transcriptome_index.py | 8 +- .../surveyor/transcriptome_index.py | 7 +- .../data_refinery_foreman/surveyor/utils.py | 2 +- foreman/data_refinery_foreman/test_runner.py | 6 +- scripts/kill_all_jobs.py | 4 +- scripts/run_full_pipeline.py | 3 +- .../downloaders/array_express.py | 7 +- .../data_refinery_workers/downloaders/geo.py | 25 ++-- .../data_refinery_workers/downloaders/sra.py | 5 +- .../downloaders/test_geo.py | 7 +- .../downloaders/transcriptome_index.py | 2 +- .../processors/create_quantpendia.py | 4 +- .../processors/illumina.py | 13 +- .../processors/janitor.py | 2 +- .../management/commands/fetch_compendia.py | 3 +- .../management/commands/qn_dispatcher.py | 2 +- .../remove_invalid_computational_results.py | 2 +- .../management/commands/run_tximport.py | 3 +- .../data_refinery_workers/processors/no_op.py | 19 +-- .../processors/smasher.py | 28 ++++- .../processors/test_illumina.py | 25 +++- .../processors/test_janitor.py | 2 +- .../processors/test_salmon.py | 6 +- .../processors/test_transcriptome_index.py | 5 +- .../processors/tximport.py | 5 +- 131 files changed, 670 insertions(+), 371 deletions(-) diff --git a/api/data_refinery_api/middleware.py b/api/data_refinery_api/middleware.py index a9bd5c503..988dfae59 100644 --- a/api/data_refinery_api/middleware.py +++ b/api/data_refinery_api/middleware.py @@ -25,7 +25,10 @@ def process_response(self, request, response): # create data representation data = client.get_data_from_request(request) data.update( - {"level": logging.WARN, "logger": "BadRequestMiddleware",} + { + "level": logging.WARN, + "logger": "BadRequestMiddleware", + } ) client.captureMessage(message=message, data=data) @@ -40,7 +43,10 @@ def process_exception(self, request, exception): data = client.get_data_from_request(request) data.update( - {"level": logging.WARN, "logger": "BadRequestMiddleware",} + { + "level": logging.WARN, + "logger": "BadRequestMiddleware", + } ) client.captureMessage(message=str(exception), data=data) diff --git a/api/data_refinery_api/settings.py b/api/data_refinery_api/settings.py index 7d2ea00f5..e185a699b 100644 --- a/api/data_refinery_api/settings.py +++ b/api/data_refinery_api/settings.py @@ -121,10 +121,18 @@ # https://docs.djangoproject.com/en/1.10/ref/settings/#auth-password-validators AUTH_PASSWORD_VALIDATORS = [ - {"NAME": ("django.contrib.auth.password_validation" + ".UserAttributeSimilarityValidator"),}, - {"NAME": ("django.contrib.auth.password_validation." + "MinimumLengthValidator"),}, - {"NAME": ("django.contrib.auth.password_validation" + ".CommonPasswordValidator"),}, - {"NAME": ("django.contrib.auth.password_validation" + ".NumericPasswordValidator"),}, + { + "NAME": ("django.contrib.auth.password_validation" + ".UserAttributeSimilarityValidator"), + }, + { + "NAME": ("django.contrib.auth.password_validation." + "MinimumLengthValidator"), + }, + { + "NAME": ("django.contrib.auth.password_validation" + ".CommonPasswordValidator"), + }, + { + "NAME": ("django.contrib.auth.password_validation" + ".NumericPasswordValidator"), + }, ] diff --git a/api/data_refinery_api/test/test_api_general.py b/api/data_refinery_api/test/test_api_general.py index 7b48cc803..49f7e7331 100644 --- a/api/data_refinery_api/test/test_api_general.py +++ b/api/data_refinery_api/test/test_api_general.py @@ -205,7 +205,7 @@ def setUp(self): return def tearDown(self): - """ Good bye """ + """Good bye""" cache.clear() Experiment.objects.all().delete() ExperimentAnnotation.objects.all().delete() @@ -483,7 +483,7 @@ def test_fetching_organism_index(self): self.assertEqual(response.status_code, 404) def test_processed_samples_only(self): - """ Don't return unprocessed samples """ + """Don't return unprocessed samples""" experiment = Experiment() experiment.accession_code = "GSX12345" experiment.is_public = True diff --git a/api/data_refinery_api/test/test_compendia.py b/api/data_refinery_api/test/test_compendia.py index 0cfb2c19c..ddd9677e9 100644 --- a/api/data_refinery_api/test/test_compendia.py +++ b/api/data_refinery_api/test/test_compendia.py @@ -124,7 +124,8 @@ def test_organism_has_compendia(self): self.assertEqual(2, len(response_json)) response = self.client.get( - reverse("organisms", kwargs={"version": API_VERSION}), {"has_compendia": True}, + reverse("organisms", kwargs={"version": API_VERSION}), + {"has_compendia": True}, ) response_json = response.json()["results"] self.assertEqual(1, len(response_json)) diff --git a/api/data_refinery_api/test/test_dataset.py b/api/data_refinery_api/test/test_dataset.py index e360c8407..c0293db96 100644 --- a/api/data_refinery_api/test/test_dataset.py +++ b/api/data_refinery_api/test/test_dataset.py @@ -205,7 +205,12 @@ def test_create_dataset_fails_without_email(self): # Good, except for empty email. jdata = json.dumps( - {"start": True, "data": {"GSE123": ["789"]}, "token_id": token_id, "email_address": "",} + { + "start": True, + "data": {"GSE123": ["789"]}, + "token_id": token_id, + "email_address": "", + } ) response = self.client.post( reverse("create_dataset", kwargs={"version": API_VERSION}), @@ -328,7 +333,8 @@ def test_dataset_adding_non_downloadable_samples_fails(self): ) self.assertEqual(response.status_code, 400) self.assertIn( - "Non-downloadable sample(s) in dataset", response.json()["message"], + "Non-downloadable sample(s) in dataset", + response.json()["message"], ) self.assertEqual(response.json()["details"], ["456"]) cache.clear() @@ -341,7 +347,8 @@ def test_dataset_adding_non_downloadable_samples_fails(self): content_type="application/json", ) self.assertIn( - "Sample(s) in dataset do not exist on refine", response.json()["message"], + "Sample(s) in dataset do not exist on refine", + response.json()["message"], ) self.assertEqual(response.status_code, 400) cache.clear() @@ -374,7 +381,8 @@ def test_dataset_adding_non_downloadable_samples_fails(self): ) self.assertEqual(response.status_code, 400) self.assertIn( - "Sample(s) in dataset are missing quant.sf files", response.json()["message"], + "Sample(s) in dataset are missing quant.sf files", + response.json()["message"], ) self.assertEqual(response.json()["details"], ["456"]) cache.clear() @@ -394,7 +402,8 @@ def test_dataset_adding_non_downloadable_samples_fails(self): ) self.assertEqual(response.status_code, 400) self.assertIn( - "Experiment(s) in dataset have zero downloadable samples", response.json()["message"], + "Experiment(s) in dataset have zero downloadable samples", + response.json()["message"], ) self.assertEqual(response.json()["details"], ["GSE123"]) cache.clear() diff --git a/api/data_refinery_api/test/test_dataset_stats.py b/api/data_refinery_api/test/test_dataset_stats.py index 6c14181d8..f29971b68 100644 --- a/api/data_refinery_api/test/test_dataset_stats.py +++ b/api/data_refinery_api/test/test_dataset_stats.py @@ -20,7 +20,7 @@ def setUp(self): self.homo_sapiens.save() def test_dataset_stats(self): - """ Test the dataset stats endpoint """ + """Test the dataset stats endpoint""" gallus_gallus = Organism(name="GALLUS_GALLUS", taxonomy_id=9031, is_scientific_name=True) gallus_gallus.save() diff --git a/api/data_refinery_api/test/test_search.py b/api/data_refinery_api/test/test_search.py index a7a5c05b6..d09917b48 100644 --- a/api/data_refinery_api/test/test_search.py +++ b/api/data_refinery_api/test/test_search.py @@ -66,7 +66,11 @@ def setUpClass(cls): sample.accession_code = "123" sample.save() - organism = Organism(name=ECOLI_STRAIN_NAME, taxonomy_id=879462, is_scientific_name=True,) + organism = Organism( + name=ECOLI_STRAIN_NAME, + taxonomy_id=879462, + is_scientific_name=True, + ) organism.save() sample = Sample() diff --git a/api/data_refinery_api/urls.py b/api/data_refinery_api/urls.py index ff30ee2c6..751e85929 100644 --- a/api/data_refinery_api/urls.py +++ b/api/data_refinery_api/urls.py @@ -59,12 +59,22 @@ def handle404error(request, exception): if not match(r"^/v[1-9]/.*", request.path): message = "refine.bio API resources are only available through versioned requests." - return JsonResponse({"message": message, "docs": url, "status_code": 404,}, status=404) + return JsonResponse( + { + "message": message, + "docs": url, + "status_code": 404, + }, + status=404, + ) def handle500error(request): return JsonResponse( - {"message": "A server error occured. This has been reported.", "status_code": 500,}, + { + "message": "A server error occured. This has been reported.", + "status_code": 500, + }, status=500, ) diff --git a/api/data_refinery_api/views/api_token.py b/api/data_refinery_api/views/api_token.py index 34e73aef9..71da7aabc 100644 --- a/api/data_refinery_api/views/api_token.py +++ b/api/data_refinery_api/views/api_token.py @@ -49,7 +49,9 @@ class Meta: ) @method_decorator( name="retrieve", - decorator=swagger_auto_schema(operation_description="Return details about a specific token.",), + decorator=swagger_auto_schema( + operation_description="Return details about a specific token.", + ), ) @method_decorator( name="update", diff --git a/api/data_refinery_api/views/dataset.py b/api/data_refinery_api/views/dataset.py index cf65489f4..c3699101c 100644 --- a/api/data_refinery_api/views/dataset.py +++ b/api/data_refinery_api/views/dataset.py @@ -221,24 +221,54 @@ class Meta: "worker_version", ) extra_kwargs = { - "data": {"required": True,}, - "id": {"read_only": True,}, - "is_processing": {"read_only": True,}, - "is_processed": {"read_only": True,}, - "is_available": {"read_only": True,}, + "data": { + "required": True, + }, + "id": { + "read_only": True, + }, + "is_processing": { + "read_only": True, + }, + "is_processed": { + "read_only": True, + }, + "is_available": { + "read_only": True, + }, "email_address": {"required": False, "write_only": True}, "email_ccdl_ok": {"required": False, "write_only": True}, "notify_me": {"required": False, "write_only": True}, - "expires_on": {"read_only": True,}, - "s3_bucket": {"read_only": True,}, - "s3_key": {"read_only": True,}, - "success": {"read_only": True,}, - "failure_reason": {"read_only": True,}, - "created_at": {"read_only": True,}, - "last_modified": {"read_only": True,}, - "size_in_bytes": {"read_only": True,}, - "sha1": {"read_only": True,}, - "download_url": {"read_only": True,}, + "expires_on": { + "read_only": True, + }, + "s3_bucket": { + "read_only": True, + }, + "s3_key": { + "read_only": True, + }, + "success": { + "read_only": True, + }, + "failure_reason": { + "read_only": True, + }, + "created_at": { + "read_only": True, + }, + "last_modified": { + "read_only": True, + }, + "size_in_bytes": { + "read_only": True, + }, + "sha1": { + "read_only": True, + }, + "download_url": { + "read_only": True, + }, "worker_version": { "read_only": True, "help_text": "Returns the latest version of refine.bio that was used to build this dataset.", diff --git a/api/data_refinery_api/views/experiment.py b/api/data_refinery_api/views/experiment.py index d7148d509..6ed81f2e8 100644 --- a/api/data_refinery_api/views/experiment.py +++ b/api/data_refinery_api/views/experiment.py @@ -66,7 +66,7 @@ class Meta: @staticmethod def setup_eager_loading(queryset): - """ Perform necessary eager loading of data. """ + """Perform necessary eager loading of data.""" queryset = queryset.prefetch_related("samples").prefetch_related("organisms") # Multiple count annotations @@ -117,7 +117,7 @@ class Meta: class ExperimentListView(generics.ListAPIView): - """ Paginated list of all experiments. Advanced filtering can be done with the `/search` endpoint. """ + """Paginated list of all experiments. Advanced filtering can be done with the `/search` endpoint.""" model = Experiment queryset = Experiment.public_objects.all() @@ -152,7 +152,7 @@ def get_queryset(self): class ExperimentDetailView(generics.RetrieveAPIView): - """ Retrieve details for an experiment given it's accession code """ + """Retrieve details for an experiment given it's accession code""" lookup_field = "accession_code" queryset = Experiment.public_objects.all() diff --git a/api/data_refinery_api/views/experiment_document.py b/api/data_refinery_api/views/experiment_document.py index e1780c791..b1e177a56 100644 --- a/api/data_refinery_api/views/experiment_document.py +++ b/api/data_refinery_api/views/experiment_document.py @@ -276,7 +276,10 @@ class ExperimentDocumentView(DocumentViewSet): # Define filtering fields filter_fields = { - "id": {"field": "_id", "lookups": [LOOKUP_FILTER_RANGE, LOOKUP_QUERY_IN],}, + "id": { + "field": "_id", + "lookups": [LOOKUP_FILTER_RANGE, LOOKUP_QUERY_IN], + }, "technology": "technology", "has_publication": "has_publication", "accession_code": "accession_code", diff --git a/api/data_refinery_api/views/jobs/downloader_job.py b/api/data_refinery_api/views/jobs/downloader_job.py index 730de72e5..33419b54d 100644 --- a/api/data_refinery_api/views/jobs/downloader_job.py +++ b/api/data_refinery_api/views/jobs/downloader_job.py @@ -120,7 +120,7 @@ def get_queryset(self): class DownloaderJobDetailView(generics.RetrieveAPIView): - """ Retrieves a DownloaderJob by ID """ + """Retrieves a DownloaderJob by ID""" lookup_field = "id" model = DownloaderJob diff --git a/api/data_refinery_api/views/jobs/processor_job.py b/api/data_refinery_api/views/jobs/processor_job.py index a7e590e5a..1d86f9cf0 100644 --- a/api/data_refinery_api/views/jobs/processor_job.py +++ b/api/data_refinery_api/views/jobs/processor_job.py @@ -121,7 +121,7 @@ def get_queryset(self): class ProcessorJobDetailView(generics.RetrieveAPIView): - """ Retrieves a ProcessorJob by ID """ + """Retrieves a ProcessorJob by ID""" lookup_field = "id" model = ProcessorJob diff --git a/api/data_refinery_api/views/jobs/survey_job.py b/api/data_refinery_api/views/jobs/survey_job.py index 80d04afdd..b3f492932 100644 --- a/api/data_refinery_api/views/jobs/survey_job.py +++ b/api/data_refinery_api/views/jobs/survey_job.py @@ -90,7 +90,7 @@ def get_queryset(self): class SurveyJobDetailView(generics.RetrieveAPIView): - """ Retrieves a SurveyJob by ID """ + """Retrieves a SurveyJob by ID""" lookup_field = "id" model = SurveyJob diff --git a/api/data_refinery_api/views/stats.py b/api/data_refinery_api/views/stats.py index 19ac6360a..25c7c3fdf 100644 --- a/api/data_refinery_api/views/stats.py +++ b/api/data_refinery_api/views/stats.py @@ -116,7 +116,9 @@ def get_jobs_in_queue(batch_job_queue: str) -> list: while "nextToken" in list_jobs_dict and list_jobs_dict["nextToken"]: list_jobs_dict = batch.list_jobs( - jobQueue=batch_job_queue, jobStatus=status, nextToken=list_jobs_dict["nextToken"], + jobQueue=batch_job_queue, + jobStatus=status, + nextToken=list_jobs_dict["nextToken"], ) jobs.extend(list_jobs_dict["jobSummaryList"]) diff --git a/common/data_refinery_common/job_management.py b/common/data_refinery_common/job_management.py index 4076696fd..789c0e7f5 100644 --- a/common/data_refinery_common/job_management.py +++ b/common/data_refinery_common/job_management.py @@ -168,7 +168,8 @@ def create_downloader_job( def create_processor_jobs_for_original_files( - original_files: List[OriginalFile], downloader_job: DownloaderJob = None, + original_files: List[OriginalFile], + downloader_job: DownloaderJob = None, ): """ Creates one processor job for each original file given. @@ -178,7 +179,8 @@ def create_processor_jobs_for_original_files( def create_processor_job_for_original_files( - original_files: List[OriginalFile], downloader_job: DownloaderJob = None, + original_files: List[OriginalFile], + downloader_job: DownloaderJob = None, ): """ Create a processor job and queue a processor task for sample related to an experiment. diff --git a/common/data_refinery_common/message_queue.py b/common/data_refinery_common/message_queue.py index 45d6fcabb..d92f8ec05 100644 --- a/common/data_refinery_common/message_queue.py +++ b/common/data_refinery_common/message_queue.py @@ -111,8 +111,7 @@ def get_downloader_job_queue_depth(job_queue_name): def get_capacity_for_jobs() -> bool: - """Returns how many jobs the system has remaining capacity for. - """ + """Returns how many jobs the system has remaining capacity for.""" num_job_queues = len(settings.AWS_BATCH_QUEUE_WORKERS_NAMES) MAX_JOBS_PER_NODE = int(get_env_variable("MAX_JOBS_PER_NODE")) # Maximum number of total jobs running at a time. @@ -163,8 +162,7 @@ def increment_downloader_job_queue_depth(job_queue_name): def get_batch_queue_for_downloader_job(): - """Logic for distributing downloader jobs across queues. - """ + """Logic for distributing downloader jobs across queues.""" job_queue_depths = get_job_queue_depths()["downloader_jobs"] for job_queue in settings.AWS_BATCH_QUEUE_WORKERS_NAMES: if job_queue_depths[job_queue] <= settings.MAX_DOWNLOADER_JOBS_PER_NODE: diff --git a/common/data_refinery_common/migrations/0001_initial.py b/common/data_refinery_common/migrations/0001_initial.py index ffcad7927..0a591f807 100644 --- a/common/data_refinery_common/migrations/0001_initial.py +++ b/common/data_refinery_common/migrations/0001_initial.py @@ -59,7 +59,10 @@ class Migration(migrations.Migration): ), ("last_modified", models.DateTimeField(default=django.utils.timezone.now)), ], - options={"db_table": "computational_results", "base_manager_name": "public_objects",}, + options={ + "db_table": "computational_results", + "base_manager_name": "public_objects", + }, managers=[ ("objects", django.db.models.manager.Manager()), ("public_objects", django.db.models.manager.Manager()), @@ -131,7 +134,10 @@ class Migration(migrations.Migration): ), ), ], - options={"db_table": "computed_files", "get_latest_by": "created_at",}, + options={ + "db_table": "computed_files", + "get_latest_by": "created_at", + }, ), migrations.CreateModel( name="Dataset", @@ -213,7 +219,9 @@ class Migration(migrations.Migration): ), ("last_modified", models.DateTimeField(default=django.utils.timezone.now)), ], - options={"db_table": "downloader_jobs",}, + options={ + "db_table": "downloader_jobs", + }, ), migrations.CreateModel( name="DownloaderJobOriginalFileAssociation", @@ -232,7 +240,9 @@ class Migration(migrations.Migration): ), ), ], - options={"db_table": "downloaderjob_originalfile_associations",}, + options={ + "db_table": "downloaderjob_originalfile_associations", + }, ), migrations.CreateModel( name="Experiment", @@ -273,7 +283,10 @@ class Migration(migrations.Migration): ), ("last_modified", models.DateTimeField(default=django.utils.timezone.now)), ], - options={"db_table": "experiments", "base_manager_name": "public_objects",}, + options={ + "db_table": "experiments", + "base_manager_name": "public_objects", + }, managers=[ ("objects", django.db.models.manager.Manager()), ("public_objects", django.db.models.manager.Manager()), @@ -304,7 +317,10 @@ class Migration(migrations.Migration): ), ), ], - options={"db_table": "experiment_annotations", "base_manager_name": "public_objects",}, + options={ + "db_table": "experiment_annotations", + "base_manager_name": "public_objects", + }, managers=[ ("objects", django.db.models.manager.Manager()), ("public_objects", django.db.models.manager.Manager()), @@ -327,7 +343,9 @@ class Migration(migrations.Migration): ), ), ], - options={"db_table": "experiment_organism_associations",}, + options={ + "db_table": "experiment_organism_associations", + }, ), migrations.CreateModel( name="ExperimentSampleAssociation", @@ -346,7 +364,9 @@ class Migration(migrations.Migration): ), ), ], - options={"db_table": "experiment_sample_associations",}, + options={ + "db_table": "experiment_sample_associations", + }, ), migrations.CreateModel( name="Organism", @@ -366,7 +386,9 @@ class Migration(migrations.Migration): ), ("last_modified", models.DateTimeField(default=django.utils.timezone.now)), ], - options={"db_table": "organisms",}, + options={ + "db_table": "organisms", + }, ), migrations.CreateModel( name="OrganismIndex", @@ -407,7 +429,10 @@ class Migration(migrations.Migration): ), ), ], - options={"db_table": "organism_index", "base_manager_name": "public_objects",}, + options={ + "db_table": "organism_index", + "base_manager_name": "public_objects", + }, managers=[ ("objects", django.db.models.manager.Manager()), ("public_objects", django.db.models.manager.Manager()), @@ -440,7 +465,9 @@ class Migration(migrations.Migration): ), ("last_modified", models.DateTimeField(default=django.utils.timezone.now)), ], - options={"db_table": "original_files",}, + options={ + "db_table": "original_files", + }, ), migrations.CreateModel( name="OriginalFileSampleAssociation", @@ -459,7 +486,9 @@ class Migration(migrations.Migration): ), ), ], - options={"db_table": "original_file_sample_associations",}, + options={ + "db_table": "original_file_sample_associations", + }, ), migrations.CreateModel( name="Pipeline", @@ -478,7 +507,9 @@ class Migration(migrations.Migration): ), ), ], - options={"db_table": "pipelines",}, + options={ + "db_table": "pipelines", + }, ), migrations.CreateModel( name="Processor", @@ -494,7 +525,9 @@ class Migration(migrations.Migration): ("docker_image", models.CharField(max_length=255)), ("environment", django.contrib.postgres.fields.jsonb.JSONField(default={})), ], - options={"db_table": "processors",}, + options={ + "db_table": "processors", + }, ), migrations.CreateModel( name="ProcessorJob", @@ -524,7 +557,9 @@ class Migration(migrations.Migration): ), ("last_modified", models.DateTimeField(default=django.utils.timezone.now)), ], - options={"db_table": "processor_jobs",}, + options={ + "db_table": "processor_jobs", + }, ), migrations.CreateModel( name="ProcessorJobDatasetAssociation", @@ -550,7 +585,9 @@ class Migration(migrations.Migration): ), ), ], - options={"db_table": "processorjob_dataset_associations",}, + options={ + "db_table": "processorjob_dataset_associations", + }, ), migrations.CreateModel( name="ProcessorJobOriginalFileAssociation", @@ -576,7 +613,9 @@ class Migration(migrations.Migration): ), ), ], - options={"db_table": "processorjob_originalfile_associations",}, + options={ + "db_table": "processorjob_originalfile_associations", + }, ), migrations.CreateModel( name="Sample", @@ -659,7 +698,10 @@ class Migration(migrations.Migration): ), ), ], - options={"db_table": "sample_annotations", "base_manager_name": "public_objects",}, + options={ + "db_table": "sample_annotations", + "base_manager_name": "public_objects", + }, managers=[ ("objects", django.db.models.manager.Manager()), ("public_objects", django.db.models.manager.Manager()), @@ -689,7 +731,9 @@ class Migration(migrations.Migration): ), ), ], - options={"db_table": "sample_computed_file_associations",}, + options={ + "db_table": "sample_computed_file_associations", + }, ), migrations.CreateModel( name="SampleResultAssociation", @@ -715,7 +759,9 @@ class Migration(migrations.Migration): ), ), ], - options={"db_table": "sample_result_associations",}, + options={ + "db_table": "sample_result_associations", + }, ), migrations.CreateModel( name="SurveyJob", @@ -738,7 +784,9 @@ class Migration(migrations.Migration): ), ("last_modified", models.DateTimeField(default=django.utils.timezone.now)), ], - options={"db_table": "survey_jobs",}, + options={ + "db_table": "survey_jobs", + }, ), migrations.CreateModel( name="SurveyJobKeyValue", @@ -759,7 +807,9 @@ class Migration(migrations.Migration): ), ), ], - options={"db_table": "survey_job_key_values",}, + options={ + "db_table": "survey_job_key_values", + }, ), migrations.AddField( model_name="sample", @@ -821,7 +871,8 @@ class Migration(migrations.Migration): ), ), migrations.AlterUniqueTogether( - name="processor", unique_together={("name", "version", "docker_image", "environment")}, + name="processor", + unique_together={("name", "version", "docker_image", "environment")}, ), migrations.AddField( model_name="originalfilesampleassociation", @@ -921,23 +972,28 @@ class Migration(migrations.Migration): ), ), migrations.AlterUniqueTogether( - name="sampleresultassociation", unique_together={("result", "sample")}, + name="sampleresultassociation", + unique_together={("result", "sample")}, ), migrations.AlterUniqueTogether( - name="samplecomputedfileassociation", unique_together={("sample", "computed_file")}, + name="samplecomputedfileassociation", + unique_together={("sample", "computed_file")}, ), migrations.AlterUniqueTogether( name="processorjoboriginalfileassociation", unique_together={("processor_job", "original_file")}, ), migrations.AlterUniqueTogether( - name="originalfilesampleassociation", unique_together={("original_file", "sample")}, + name="originalfilesampleassociation", + unique_together={("original_file", "sample")}, ), migrations.AlterUniqueTogether( - name="experimentsampleassociation", unique_together={("experiment", "sample")}, + name="experimentsampleassociation", + unique_together={("experiment", "sample")}, ), migrations.AlterUniqueTogether( - name="experimentorganismassociation", unique_together={("experiment", "organism")}, + name="experimentorganismassociation", + unique_together={("experiment", "organism")}, ), migrations.AlterUniqueTogether( name="downloaderjoboriginalfileassociation", diff --git a/common/data_refinery_common/migrations/0005_auto_20181030_1955.py b/common/data_refinery_common/migrations/0005_auto_20181030_1955.py index 9f20949e5..2682b7ad6 100644 --- a/common/data_refinery_common/migrations/0005_auto_20181030_1955.py +++ b/common/data_refinery_common/migrations/0005_auto_20181030_1955.py @@ -11,9 +11,13 @@ class Migration(migrations.Migration): operations = [ migrations.AddField( - model_name="surveyjob", name="num_retries", field=models.IntegerField(default=0), + model_name="surveyjob", + name="num_retries", + field=models.IntegerField(default=0), ), migrations.AddField( - model_name="surveyjob", name="retried", field=models.BooleanField(default=False), + model_name="surveyjob", + name="retried", + field=models.BooleanField(default=False), ), ] diff --git a/common/data_refinery_common/migrations/0006_auto_20181102_1526.py b/common/data_refinery_common/migrations/0006_auto_20181102_1526.py index e3ba4ffda..0192cc83b 100644 --- a/common/data_refinery_common/migrations/0006_auto_20181102_1526.py +++ b/common/data_refinery_common/migrations/0006_auto_20181102_1526.py @@ -16,6 +16,8 @@ class Migration(migrations.Migration): field=models.CharField(max_length=256, null=True), ), migrations.AddField( - model_name="surveyjob", name="ram_amount", field=models.IntegerField(default=256), + model_name="surveyjob", + name="ram_amount", + field=models.IntegerField(default=256), ), ] diff --git a/common/data_refinery_common/migrations/0008_auto_20190104_2135.py b/common/data_refinery_common/migrations/0008_auto_20190104_2135.py index c4f2daa9f..901a30443 100644 --- a/common/data_refinery_common/migrations/0008_auto_20190104_2135.py +++ b/common/data_refinery_common/migrations/0008_auto_20190104_2135.py @@ -28,7 +28,9 @@ class Migration(migrations.Migration): ), ), ], - options={"db_table": "experiment_result_associations",}, + options={ + "db_table": "experiment_result_associations", + }, ), migrations.AddField( model_name="computationalresult", @@ -47,6 +49,7 @@ class Migration(migrations.Migration): ), ), migrations.AlterUniqueTogether( - name="experimentresultassociation", unique_together={("result", "experiment")}, + name="experimentresultassociation", + unique_together={("result", "experiment")}, ), ] diff --git a/common/data_refinery_common/migrations/0009_es_cache.py b/common/data_refinery_common/migrations/0009_es_cache.py index 9fbbc25bc..2dc7b1869 100644 --- a/common/data_refinery_common/migrations/0009_es_cache.py +++ b/common/data_refinery_common/migrations/0009_es_cache.py @@ -67,7 +67,9 @@ class Migration(migrations.Migration): field=models.IntegerField(default=0), ), migrations.AddField( - model_name="experiment", name="num_total_samples", field=models.IntegerField(default=0), + model_name="experiment", + name="num_total_samples", + field=models.IntegerField(default=0), ), migrations.AddField( model_name="experiment", diff --git a/common/data_refinery_common/migrations/0015_dataset_email_ccdl_ok.py b/common/data_refinery_common/migrations/0015_dataset_email_ccdl_ok.py index a7e1fd461..723ceaf51 100644 --- a/common/data_refinery_common/migrations/0015_dataset_email_ccdl_ok.py +++ b/common/data_refinery_common/migrations/0015_dataset_email_ccdl_ok.py @@ -11,6 +11,8 @@ class Migration(migrations.Migration): operations = [ migrations.AddField( - model_name="dataset", name="email_ccdl_ok", field=models.BooleanField(default=False), + model_name="dataset", + name="email_ccdl_ok", + field=models.BooleanField(default=False), ), ] diff --git a/common/data_refinery_common/migrations/0018_downloaderjob_ram_amount.py b/common/data_refinery_common/migrations/0018_downloaderjob_ram_amount.py index ad4829039..9c235e0e0 100644 --- a/common/data_refinery_common/migrations/0018_downloaderjob_ram_amount.py +++ b/common/data_refinery_common/migrations/0018_downloaderjob_ram_amount.py @@ -11,6 +11,8 @@ class Migration(migrations.Migration): operations = [ migrations.AddField( - model_name="downloaderjob", name="ram_amount", field=models.IntegerField(default=1024), + model_name="downloaderjob", + name="ram_amount", + field=models.IntegerField(default=1024), ), ] diff --git a/common/data_refinery_common/migrations/0019_sample_is_blacklisted.py b/common/data_refinery_common/migrations/0019_sample_is_blacklisted.py index 3193e5da4..8decc97d2 100644 --- a/common/data_refinery_common/migrations/0019_sample_is_blacklisted.py +++ b/common/data_refinery_common/migrations/0019_sample_is_blacklisted.py @@ -33,7 +33,9 @@ class Migration(migrations.Migration): operations = [ migrations.AddField( - model_name="sample", name="is_blacklisted", field=models.BooleanField(default=False), + model_name="sample", + name="is_blacklisted", + field=models.BooleanField(default=False), ), migrations.RunPython(update_blacklisted_samples), ] diff --git a/common/data_refinery_common/migrations/0027_organism_qn_target.py b/common/data_refinery_common/migrations/0027_organism_qn_target.py index 58b4a9644..d4804d815 100644 --- a/common/data_refinery_common/migrations/0027_organism_qn_target.py +++ b/common/data_refinery_common/migrations/0027_organism_qn_target.py @@ -5,7 +5,7 @@ def update_organisms_qn_targets(apps, schema_editor): - """ Set the latest qn_target to each organism. """ + """Set the latest qn_target to each organism.""" Organism = apps.get_model("data_refinery_common", "Organism") ComputationalResultAnnotation = apps.get_model( "data_refinery_common", "ComputationalResultAnnotation" diff --git a/common/data_refinery_common/migrations/0030_update_sample_manufacturer.py b/common/data_refinery_common/migrations/0030_update_sample_manufacturer.py index a2d565c1b..a722fd145 100644 --- a/common/data_refinery_common/migrations/0030_update_sample_manufacturer.py +++ b/common/data_refinery_common/migrations/0030_update_sample_manufacturer.py @@ -4,7 +4,7 @@ def fix_typo_in_sample_manufacturer(apps, schema_editor): - """ Fixes affymetrix samples that have their manufacturer set to "AFFYMETRTIX" or "NEXTSEQ" """ + """Fixes affymetrix samples that have their manufacturer set to "AFFYMETRTIX" or "NEXTSEQ" """ Sample = apps.get_model("data_refinery_common", "Sample") Sample.objects.all().filter(manufacturer="AFFYMETRTIX").update(manufacturer="AFFYMETRIX") Sample.objects.all().filter(manufacturer="NEXTSEQ").update(manufacturer="ILLUMINA") diff --git a/common/data_refinery_common/migrations/0032_surveyedaccession.py b/common/data_refinery_common/migrations/0032_surveyedaccession.py index 01433e3cf..4c0534b83 100644 --- a/common/data_refinery_common/migrations/0032_surveyedaccession.py +++ b/common/data_refinery_common/migrations/0032_surveyedaccession.py @@ -26,6 +26,8 @@ class Migration(migrations.Migration): models.DateTimeField(default=django.utils.timezone.now, editable=False), ), ], - options={"db_table": "surveyed_accessions",}, + options={ + "db_table": "surveyed_accessions", + }, ), ] diff --git a/common/data_refinery_common/migrations/0034_cdfcorrectedaccession.py b/common/data_refinery_common/migrations/0034_cdfcorrectedaccession.py index b82cc3b17..fafbfcfa7 100644 --- a/common/data_refinery_common/migrations/0034_cdfcorrectedaccession.py +++ b/common/data_refinery_common/migrations/0034_cdfcorrectedaccession.py @@ -26,6 +26,8 @@ class Migration(migrations.Migration): models.DateTimeField(default=django.utils.timezone.now, editable=False), ), ], - options={"db_table": "cdf_corrected_accessions",}, + options={ + "db_table": "cdf_corrected_accessions", + }, ), ] diff --git a/common/data_refinery_common/migrations/0038_paginate_default_svd_algorithm.py b/common/data_refinery_common/migrations/0038_paginate_default_svd_algorithm.py index 32f711509..12d8cc22a 100644 --- a/common/data_refinery_common/migrations/0038_paginate_default_svd_algorithm.py +++ b/common/data_refinery_common/migrations/0038_paginate_default_svd_algorithm.py @@ -2,7 +2,7 @@ def batch_update(queryset, batch=1000, **changes): - """ Update per batch """ + """Update per batch""" is_done = False current = 0 @@ -18,21 +18,21 @@ def batch_update(queryset, batch=1000, **changes): def set_computed_file_svd_algorithm_arpack(apps, schema_editor): - """ Set svd_algorithm for computed files - ARPACK when is_compendia""" + """Set svd_algorithm for computed files - ARPACK when is_compendia""" ComputedFile = apps.get_model("data_refinery_common", "ComputedFile") arpack_queryset = ComputedFile.objects.filter(is_compendia=True).order_by("id") batch_update(arpack_queryset, svd_algorithm="ARPACK") def set_computed_file_svd_algorithm_none(apps, schema_editor): - """ Set svd_algorithm for computed files - None when not is_compendia""" + """Set svd_algorithm for computed files - None when not is_compendia""" ComputedFile = apps.get_model("data_refinery_common", "ComputedFile") none_queryset = ComputedFile.objects.filter(is_compendia=False).order_by("id") batch_update(none_queryset, svd_algorithm="NONE") def set_dataset_svd_algorithm_none(apps, schema_editor): - """ Apply default svd_algorithm via pagination to dataset """ + """Apply default svd_algorithm via pagination to dataset""" Dataset = apps.get_model("data_refinery_common", "Dataset") queryset = Dataset.objects.all().order_by("id") batch_update(queryset, svd_algorithm="NONE") diff --git a/common/data_refinery_common/migrations/0039_auto_20190925_1338.py b/common/data_refinery_common/migrations/0039_auto_20190925_1338.py index 0cc8875cc..5cf958235 100644 --- a/common/data_refinery_common/migrations/0039_auto_20190925_1338.py +++ b/common/data_refinery_common/migrations/0039_auto_20190925_1338.py @@ -10,5 +10,8 @@ class Migration(migrations.Migration): ] operations = [ - migrations.RemoveIndex(model_name="computedfile", name="computed_fi_filenam_64958d_idx",), + migrations.RemoveIndex( + model_name="computedfile", + name="computed_fi_filenam_64958d_idx", + ), ] diff --git a/common/data_refinery_common/migrations/0042_remove_experiment_organism_names.py b/common/data_refinery_common/migrations/0042_remove_experiment_organism_names.py index b6baaa467..3bc63cd19 100644 --- a/common/data_refinery_common/migrations/0042_remove_experiment_organism_names.py +++ b/common/data_refinery_common/migrations/0042_remove_experiment_organism_names.py @@ -10,5 +10,8 @@ class Migration(migrations.Migration): ] operations = [ - migrations.RemoveField(model_name="experiment", name="organism_names",), + migrations.RemoveField( + model_name="experiment", + name="organism_names", + ), ] diff --git a/common/data_refinery_common/migrations/0043_auto_20191108_2144.py b/common/data_refinery_common/migrations/0043_auto_20191108_2144.py index a7bd8afe2..50fe0e998 100644 --- a/common/data_refinery_common/migrations/0043_auto_20191108_2144.py +++ b/common/data_refinery_common/migrations/0043_auto_20191108_2144.py @@ -38,7 +38,10 @@ class Migration(migrations.Migration): ), ("is_public", models.BooleanField(default=True)), ], - options={"db_table": "compendium_results", "base_manager_name": "public_objects",}, + options={ + "db_table": "compendium_results", + "base_manager_name": "public_objects", + }, managers=[ ("objects", django.db.models.manager.Manager()), ("public_objects", django.db.models.manager.Manager()), @@ -68,7 +71,9 @@ class Migration(migrations.Migration): ), ), ], - options={"db_table": "compendium_result_organism_associations",}, + options={ + "db_table": "compendium_result_organism_associations", + }, ), migrations.AddField( model_name="compendiumresult", diff --git a/common/data_refinery_common/migrations/0044_compendium_results.py b/common/data_refinery_common/migrations/0044_compendium_results.py index a2d2f57c0..886b6f6e9 100644 --- a/common/data_refinery_common/migrations/0044_compendium_results.py +++ b/common/data_refinery_common/migrations/0044_compendium_results.py @@ -2,7 +2,7 @@ def populate_compendium_results(apps, schema_editor): - """ Fetch existing compendia and create compendium results""" + """Fetch existing compendia and create compendium results""" CompendiumResult = apps.get_model("data_refinery_common", "CompendiumResult") CompendiumResultOrganismAssociation = apps.get_model( "data_refinery_common", "CompendiumResultOrganismAssociation" diff --git a/common/data_refinery_common/migrations/0045_svd_algorithm.py b/common/data_refinery_common/migrations/0045_svd_algorithm.py index 17511a7e4..30121683b 100644 --- a/common/data_refinery_common/migrations/0045_svd_algorithm.py +++ b/common/data_refinery_common/migrations/0045_svd_algorithm.py @@ -2,7 +2,7 @@ def svd_algorithm_fix(apps, schema_editor): - """ Fetch existing compendia and create compendium results""" + """Fetch existing compendia and create compendium results""" ComputedFile = apps.get_model("data_refinery_common", "ComputedFile") compendium_computed_files = ComputedFile.objects.filter( diff --git a/common/data_refinery_common/migrations/0046_compendium_version_number.py b/common/data_refinery_common/migrations/0046_compendium_version_number.py index a518ab21d..32ea9c903 100644 --- a/common/data_refinery_common/migrations/0046_compendium_version_number.py +++ b/common/data_refinery_common/migrations/0046_compendium_version_number.py @@ -4,7 +4,7 @@ def compendium_version_number_fix(apps, schema_editor): - """ Fetch existing compendia and fix their version_number.""" + """Fetch existing compendia and fix their version_number.""" CompendiumResult = apps.get_model("data_refinery_common", "CompendiumResult") # normalized compendia diff --git a/common/data_refinery_common/migrations/0047_clean_compendia_files.py b/common/data_refinery_common/migrations/0047_clean_compendia_files.py index 67e86e717..6fe20d338 100644 --- a/common/data_refinery_common/migrations/0047_clean_compendia_files.py +++ b/common/data_refinery_common/migrations/0047_clean_compendia_files.py @@ -3,7 +3,7 @@ def clean_compendium_files(apps, schema_editor): - """ We used to have more than one computed file for a compendium + """We used to have more than one computed file for a compendium Now we just want to keep the zipped file that lives on s3.""" CompendiumResult = apps.get_model("data_refinery_common", "CompendiumResult") ComputedFile = apps.get_model("data_refinery_common", "ComputedFile") diff --git a/common/data_refinery_common/migrations/0048_processorjob_abort.py b/common/data_refinery_common/migrations/0048_processorjob_abort.py index ce2e23f7d..240737294 100644 --- a/common/data_refinery_common/migrations/0048_processorjob_abort.py +++ b/common/data_refinery_common/migrations/0048_processorjob_abort.py @@ -2,7 +2,7 @@ def batch_update(queryset, batch=1000, **changes): - """ Update per batch """ + """Update per batch""" is_done = False current = 0 @@ -36,7 +36,9 @@ class Migration(migrations.Migration): operations = [ # 1. add fields with None as default value migrations.AddField( - model_name="processorjob", name="abort", field=models.BooleanField(null=True), + model_name="processorjob", + name="abort", + field=models.BooleanField(null=True), ), # 2. set default value in batches migrations.RunPython(set_default_abort_value), diff --git a/common/data_refinery_common/migrations/0050_remove_organismindex_s3_url.py b/common/data_refinery_common/migrations/0050_remove_organismindex_s3_url.py index d3e0d8dca..87d10a903 100644 --- a/common/data_refinery_common/migrations/0050_remove_organismindex_s3_url.py +++ b/common/data_refinery_common/migrations/0050_remove_organismindex_s3_url.py @@ -10,5 +10,8 @@ class Migration(migrations.Migration): ] operations = [ - migrations.RemoveField(model_name="organismindex", name="s3_url",), + migrations.RemoveField( + model_name="organismindex", + name="s3_url", + ), ] diff --git a/common/data_refinery_common/migrations/0051_remove_dataset_email_sent.py b/common/data_refinery_common/migrations/0051_remove_dataset_email_sent.py index 23bc26e5b..2f3fbcc52 100644 --- a/common/data_refinery_common/migrations/0051_remove_dataset_email_sent.py +++ b/common/data_refinery_common/migrations/0051_remove_dataset_email_sent.py @@ -10,5 +10,8 @@ class Migration(migrations.Migration): ] operations = [ - migrations.RemoveField(model_name="dataset", name="email_sent",), + migrations.RemoveField( + model_name="dataset", + name="email_sent", + ), ] diff --git a/common/data_refinery_common/migrations/0052_remove_invalid_tximport_associations.py b/common/data_refinery_common/migrations/0052_remove_invalid_tximport_associations.py index d2dea32e6..49de916bf 100644 --- a/common/data_refinery_common/migrations/0052_remove_invalid_tximport_associations.py +++ b/common/data_refinery_common/migrations/0052_remove_invalid_tximport_associations.py @@ -2,9 +2,9 @@ def remove_tximport_invalid_associations(apps, schema_editor): - """ We were associating tximport with all samples in an experiment + """We were associating tximport with all samples in an experiment even though some of them were unprocessed. - Ref https://github.com/AlexsLemonade/refinebio/issues/2054 """ + Ref https://github.com/AlexsLemonade/refinebio/issues/2054""" SampleResultAssociation = apps.get_model("data_refinery_common", "SampleResultAssociation") SampleResultAssociation.objects.filter( diff --git a/common/data_refinery_common/migrations/0054_datasetannotation.py b/common/data_refinery_common/migrations/0054_datasetannotation.py index 94820439d..139ba15ff 100644 --- a/common/data_refinery_common/migrations/0054_datasetannotation.py +++ b/common/data_refinery_common/migrations/0054_datasetannotation.py @@ -38,7 +38,10 @@ class Migration(migrations.Migration): ), ), ], - options={"db_table": "dataset_annotations", "base_manager_name": "public_objects",}, + options={ + "db_table": "dataset_annotations", + "base_manager_name": "public_objects", + }, managers=[ ("objects", django.db.models.manager.Manager()), ("public_objects", django.db.models.manager.Manager()), diff --git a/common/data_refinery_common/migrations/0056_auto_20200529_1230.py b/common/data_refinery_common/migrations/0056_auto_20200529_1230.py index 95b7ba293..7eae34282 100644 --- a/common/data_refinery_common/migrations/0056_auto_20200529_1230.py +++ b/common/data_refinery_common/migrations/0056_auto_20200529_1230.py @@ -11,9 +11,13 @@ class Migration(migrations.Migration): operations = [ migrations.AlterModelOptions( - name="datasetannotation", options={"base_manager_name": "objects"}, + name="datasetannotation", + options={"base_manager_name": "objects"}, + ), + migrations.AlterModelManagers( + name="datasetannotation", + managers=[], ), - migrations.AlterModelManagers(name="datasetannotation", managers=[],), migrations.AlterField( model_name="datasetannotation", name="is_public", diff --git a/common/data_refinery_common/migrations/0059_auto_20200819_1632.py b/common/data_refinery_common/migrations/0059_auto_20200819_1632.py index e1fa29bc4..286072fcd 100644 --- a/common/data_refinery_common/migrations/0059_auto_20200819_1632.py +++ b/common/data_refinery_common/migrations/0059_auto_20200819_1632.py @@ -42,7 +42,9 @@ class Migration(migrations.Migration): ("ontology_term", models.TextField(unique=True)), ("human_readable_name", models.TextField()), ], - options={"db_table": "ontology_terms",}, + options={ + "db_table": "ontology_terms", + }, ), migrations.AddField( model_name="experiment", @@ -150,7 +152,9 @@ class Migration(migrations.Migration): ), ), ], - options={"abstract": False,}, + options={ + "abstract": False, + }, ), migrations.CreateModel( name="ExperimentAttribute", @@ -207,6 +211,8 @@ class Migration(migrations.Migration): ), ), ], - options={"abstract": False,}, + options={ + "abstract": False, + }, ), ] diff --git a/common/data_refinery_common/migrations/0060_auto_20200828_1650.py b/common/data_refinery_common/migrations/0060_auto_20200828_1650.py index 257101985..608029107 100644 --- a/common/data_refinery_common/migrations/0060_auto_20200828_1650.py +++ b/common/data_refinery_common/migrations/0060_auto_20200828_1650.py @@ -11,7 +11,9 @@ class Migration(migrations.Migration): operations = [ migrations.RenameField( - model_name="organismindex", old_name="source_version", new_name="release_version", + model_name="organismindex", + old_name="source_version", + new_name="release_version", ), migrations.AddField( model_name="organismindex", diff --git a/common/data_refinery_common/migrations/0061_transcriptome_database_name.py b/common/data_refinery_common/migrations/0061_transcriptome_database_name.py index fd1183262..243df922e 100644 --- a/common/data_refinery_common/migrations/0061_transcriptome_database_name.py +++ b/common/data_refinery_common/migrations/0061_transcriptome_database_name.py @@ -27,7 +27,7 @@ def find_division_by_species(species: str, division_jsons: dict) -> str: def add_transcriptome_database_names(apps, schema_editor): - """ Updates `database_name` values for transcriptome indices """ + """Updates `database_name` values for transcriptome indices""" OrganismIndex = apps.get_model("data_refinery_common", "OrganismIndex") transcriptome_indices = OrganismIndex.objects.all() diff --git a/common/data_refinery_common/migrations/0064_auto_20210225_1622.py b/common/data_refinery_common/migrations/0064_auto_20210225_1622.py index a31efda44..33b169ff7 100644 --- a/common/data_refinery_common/migrations/0064_auto_20210225_1622.py +++ b/common/data_refinery_common/migrations/0064_auto_20210225_1622.py @@ -10,5 +10,8 @@ class Migration(migrations.Migration): ] operations = [ - migrations.AlterModelOptions(name="dataset", options={"base_manager_name": "objects"},), + migrations.AlterModelOptions( + name="dataset", + options={"base_manager_name": "objects"}, + ), ] diff --git a/common/data_refinery_common/migrations/0065_auto_20210324_1948.py b/common/data_refinery_common/migrations/0065_auto_20210324_1948.py index 170eed9cf..a1e8bac8f 100644 --- a/common/data_refinery_common/migrations/0065_auto_20210324_1948.py +++ b/common/data_refinery_common/migrations/0065_auto_20210324_1948.py @@ -24,13 +24,19 @@ class Migration(migrations.Migration): ), ), migrations.AlterField( - model_name="dataset", name="success", field=models.BooleanField(null=True), + model_name="dataset", + name="success", + field=models.BooleanField(null=True), ), migrations.AlterField( - model_name="datasetannotation", name="data", field=models.JSONField(default=dict), + model_name="datasetannotation", + name="data", + field=models.JSONField(default=dict), ), migrations.AlterField( - model_name="downloaderjob", name="success", field=models.BooleanField(null=True), + model_name="downloaderjob", + name="success", + field=models.BooleanField(null=True), ), migrations.AlterField( model_name="experiment", @@ -38,21 +44,33 @@ class Migration(migrations.Migration): field=models.JSONField(default=dict), ), migrations.AlterField( - model_name="experimentannotation", name="data", field=models.JSONField(default=dict), + model_name="experimentannotation", + name="data", + field=models.JSONField(default=dict), ), migrations.AlterField( - model_name="processor", name="environment", field=models.JSONField(default=dict), + model_name="processor", + name="environment", + field=models.JSONField(default=dict), ), migrations.AlterField( - model_name="processorjob", name="success", field=models.BooleanField(null=True), + model_name="processorjob", + name="success", + field=models.BooleanField(null=True), ), migrations.AlterField( - model_name="sample", name="protocol_info", field=models.JSONField(default=dict), + model_name="sample", + name="protocol_info", + field=models.JSONField(default=dict), ), migrations.AlterField( - model_name="sampleannotation", name="data", field=models.JSONField(default=dict), + model_name="sampleannotation", + name="data", + field=models.JSONField(default=dict), ), migrations.AlterField( - model_name="surveyjob", name="success", field=models.BooleanField(null=True), + model_name="surveyjob", + name="success", + field=models.BooleanField(null=True), ), ] diff --git a/common/data_refinery_common/migrations/0066_auto_20210611_1900.py b/common/data_refinery_common/migrations/0066_auto_20210611_1900.py index d035d93a9..ddaa01b5f 100644 --- a/common/data_refinery_common/migrations/0066_auto_20210611_1900.py +++ b/common/data_refinery_common/migrations/0066_auto_20210611_1900.py @@ -12,13 +12,19 @@ class Migration(migrations.Migration): operations = [ migrations.RenameField( - model_name="downloaderjob", old_name="nomad_job_id", new_name="batch_job_id", + model_name="downloaderjob", + old_name="nomad_job_id", + new_name="batch_job_id", ), migrations.RenameField( - model_name="processorjob", old_name="nomad_job_id", new_name="batch_job_id", + model_name="processorjob", + old_name="nomad_job_id", + new_name="batch_job_id", ), migrations.RenameField( - model_name="surveyjob", old_name="nomad_job_id", new_name="batch_job_id", + model_name="surveyjob", + old_name="nomad_job_id", + new_name="batch_job_id", ), migrations.AddField( model_name="downloaderjob", @@ -54,6 +60,8 @@ class Migration(migrations.Migration): ), ), migrations.AlterField( - model_name="surveyjob", name="ram_amount", field=models.IntegerField(default=1024), + model_name="surveyjob", + name="ram_amount", + field=models.IntegerField(default=1024), ), ] diff --git a/common/data_refinery_common/migrations/0067_dataset_notify_me.py b/common/data_refinery_common/migrations/0067_dataset_notify_me.py index f7894bfd8..78c2bf42f 100644 --- a/common/data_refinery_common/migrations/0067_dataset_notify_me.py +++ b/common/data_refinery_common/migrations/0067_dataset_notify_me.py @@ -11,6 +11,8 @@ class Migration(migrations.Migration): operations = [ migrations.AddField( - model_name="dataset", name="notify_me", field=models.BooleanField(default=True), + model_name="dataset", + name="notify_me", + field=models.BooleanField(default=True), ), ] diff --git a/common/data_refinery_common/migrations/0068_auto_20210729_1610.py b/common/data_refinery_common/migrations/0068_auto_20210729_1610.py index 463bdfed4..c4faa0ef8 100644 --- a/common/data_refinery_common/migrations/0068_auto_20210729_1610.py +++ b/common/data_refinery_common/migrations/0068_auto_20210729_1610.py @@ -21,6 +21,8 @@ class Migration(migrations.Migration): field=models.BigIntegerField(blank=True, null=True), ), migrations.AddField( - model_name="originalfile", name="md5", field=models.CharField(max_length=32, null=True), + model_name="originalfile", + name="md5", + field=models.CharField(max_length=32, null=True), ), ] diff --git a/common/data_refinery_common/migrations/0069_rename_compendia_version_computedfile_compendium_version.py b/common/data_refinery_common/migrations/0069_rename_compendia_version_computedfile_compendium_version.py index d0ec65ee6..99a389ec3 100644 --- a/common/data_refinery_common/migrations/0069_rename_compendia_version_computedfile_compendium_version.py +++ b/common/data_refinery_common/migrations/0069_rename_compendia_version_computedfile_compendium_version.py @@ -11,6 +11,8 @@ class Migration(migrations.Migration): operations = [ migrations.RenameField( - model_name="computedfile", old_name="compendia_version", new_name="compendium_version", + model_name="computedfile", + old_name="compendia_version", + new_name="compendium_version", ), ] diff --git a/common/data_refinery_common/models/api_token.py b/common/data_refinery_common/models/api_token.py index 628462367..4a0d1183d 100644 --- a/common/data_refinery_common/models/api_token.py +++ b/common/data_refinery_common/models/api_token.py @@ -6,7 +6,7 @@ class APIToken(models.Model): - """ Required for starting a smash job """ + """Required for starting a smash job""" # ID id = models.UUIDField(primary_key=True, default=uuid.uuid4, editable=False) @@ -19,7 +19,7 @@ class APIToken(models.Model): last_modified = models.DateTimeField(default=timezone.now) def save(self, *args, **kwargs): - """ On save, update timestamps """ + """On save, update timestamps""" current_time = timezone.now() if not self.id: self.created_at = current_time diff --git a/common/data_refinery_common/models/base_models.py b/common/data_refinery_common/models/base_models.py index cf9df7afc..d5b7fb9a5 100644 --- a/common/data_refinery_common/models/base_models.py +++ b/common/data_refinery_common/models/base_models.py @@ -9,7 +9,7 @@ class TimeTrackedModel(models.Model): updated_at = models.DateTimeField() def save(self, *args, **kwargs): - """ On save, update timestamps """ + """On save, update timestamps""" current_time = timezone.now() if not self.id: self.created_at = current_time diff --git a/common/data_refinery_common/models/command_progress.py b/common/data_refinery_common/models/command_progress.py index e103e4708..ed46032cd 100644 --- a/common/data_refinery_common/models/command_progress.py +++ b/common/data_refinery_common/models/command_progress.py @@ -8,7 +8,7 @@ class SurveyedAccession(models.Model): created_at = models.DateTimeField(editable=False, default=timezone.now) def save(self, *args, **kwargs): - """ On save, update timestamps """ + """On save, update timestamps""" current_time = timezone.now() if not self.id: self.created_at = current_time @@ -26,7 +26,7 @@ class CdfCorrectedAccession(models.Model): created_at = models.DateTimeField(editable=False, default=timezone.now) def save(self, *args, **kwargs): - """ On save, update timestamps """ + """On save, update timestamps""" current_time = timezone.now() if not self.id: self.created_at = current_time diff --git a/common/data_refinery_common/models/compendium_result.py b/common/data_refinery_common/models/compendium_result.py index 031136648..73e472b96 100644 --- a/common/data_refinery_common/models/compendium_result.py +++ b/common/data_refinery_common/models/compendium_result.py @@ -7,7 +7,7 @@ # Compendium Computational Result class CompendiumResult(models.Model): - """ Computational Result For A Compendium """ + """Computational Result For A Compendium""" class Meta: db_table = "compendium_results" @@ -61,7 +61,7 @@ def __str__(self): last_modified = models.DateTimeField(default=timezone.now) def save(self, *args, **kwargs): - """ On save, update timestamps """ + """On save, update timestamps""" current_time = timezone.now() if not self.id: self.created_at = current_time @@ -70,5 +70,5 @@ def save(self, *args, **kwargs): # helper def get_computed_file(self): - """ Short hand method for getting the computed file for this compendium""" + """Short hand method for getting the computed file for this compendium""" return ComputedFile.objects.filter(result=self.result).first() diff --git a/common/data_refinery_common/models/computational_result.py b/common/data_refinery_common/models/computational_result.py index fcf0cbc9d..5a06b6b93 100644 --- a/common/data_refinery_common/models/computational_result.py +++ b/common/data_refinery_common/models/computational_result.py @@ -10,7 +10,7 @@ class ComputationalResult(models.Model): - """ Meta-information about the output of a computer process. (Ex Salmon) """ + """Meta-information about the output of a computer process. (Ex Salmon)""" class Meta: db_table = "computational_results" @@ -49,7 +49,7 @@ def __str__(self): last_modified = models.DateTimeField(default=timezone.now) def save(self, *args, **kwargs): - """ On save, update timestamps """ + """On save, update timestamps""" current_time = timezone.now() if not self.id: self.created_at = current_time @@ -58,7 +58,7 @@ def save(self, *args, **kwargs): # Currently unused because of pre_delete signal for computed files def remove_computed_files_from_s3(self): - """ Removes all associated computed files from S3. + """Removes all associated computed files from S3. Use this before deleting a computational result. """ @@ -66,7 +66,7 @@ def remove_computed_files_from_s3(self): computed_file.delete_s3_file() def get_index_length(self): - """ Pull the index_length from one of the result annotations """ + """Pull the index_length from one of the result annotations""" annotations = ComputationalResultAnnotation.objects.filter(result=self) for annotation_json in annotations: @@ -78,7 +78,10 @@ def get_index_length(self): def get_quant_sf_file(self): return ( ComputedFile.objects.filter( - result=self, filename="quant.sf", s3_key__isnull=False, s3_bucket__isnull=False, + result=self, + filename="quant.sf", + s3_key__isnull=False, + s3_bucket__isnull=False, ) .order_by("-id") .first() diff --git a/common/data_refinery_common/models/computational_result_annotation.py b/common/data_refinery_common/models/computational_result_annotation.py index a30bfa9d2..44a29cd8f 100644 --- a/common/data_refinery_common/models/computational_result_annotation.py +++ b/common/data_refinery_common/models/computational_result_annotation.py @@ -5,7 +5,7 @@ class ComputationalResultAnnotation(models.Model): - """ Non-standard information associated with an ComputationalResult """ + """Non-standard information associated with an ComputationalResult""" class Meta: db_table = "computational_result_annotations" @@ -30,7 +30,7 @@ class Meta: last_modified = models.DateTimeField(default=timezone.now) def save(self, *args, **kwargs): - """ On save, update timestamps """ + """On save, update timestamps""" current_time = timezone.now() if not self.id: self.created_at = current_time diff --git a/common/data_refinery_common/models/computed_file.py b/common/data_refinery_common/models/computed_file.py index f1ee79d62..6999c3625 100644 --- a/common/data_refinery_common/models/computed_file.py +++ b/common/data_refinery_common/models/computed_file.py @@ -20,7 +20,7 @@ class ComputedFile(models.Model): - """ A representation of a file created by a data-refinery process """ + """A representation of a file created by a data-refinery process""" class Meta: db_table = "computed_files" @@ -88,7 +88,7 @@ def __str__(self): last_modified = models.DateTimeField(default=timezone.now) def save(self, *args, **kwargs): - """ On save, update timestamps """ + """On save, update timestamps""" current_time = timezone.now() if not self.id: self.created_at = current_time @@ -96,8 +96,7 @@ def save(self, *args, **kwargs): return super(ComputedFile, self).save(*args, **kwargs) def sync_to_s3(self, s3_bucket, s3_key, public=False) -> bool: - """ Syncs a file to AWS S3. - """ + """Syncs a file to AWS S3.""" if not settings.RUNNING_IN_CLOUD: return True @@ -108,7 +107,10 @@ def sync_to_s3(self, s3_bucket, s3_key, public=False) -> bool: extra_args["ACL"] = "public-read" S3.upload_file( - self.absolute_file_path, s3_bucket, s3_key, ExtraArgs=extra_args, + self.absolute_file_path, + s3_bucket, + s3_key, + ExtraArgs=extra_args, ) except Exception: logger.exception( @@ -126,7 +128,7 @@ def sync_to_s3(self, s3_bucket, s3_key, public=False) -> bool: return True def sync_from_s3(self, force=False, path=None): - """ Downloads a file from S3 to the local file system. + """Downloads a file from S3 to the local file system. Returns the absolute file path. """ path = path if path is not None else self.absolute_file_path @@ -219,19 +221,17 @@ def change_s3_location(self, new_bucket: str, new_key: str) -> bool: return True def calculate_sha1(self) -> None: - """ Calculate the SHA1 value of a given file. - """ + """Calculate the SHA1 value of a given file.""" self.sha1 = calculate_sha1(self.absolute_file_path) return self.sha1 def calculate_size(self) -> None: - """ Calculate the number of bytes in a given file. - """ + """Calculate the number of bytes in a given file.""" self.size_in_bytes = calculate_file_size(self.absolute_file_path) return self.size_in_bytes def delete_local_file(self, force=False): - """ Deletes a file from the path and actually removes it from the file system.""" + """Deletes a file from the path and actually removes it from the file system.""" if not settings.RUNNING_IN_CLOUD and not force: return @@ -271,8 +271,8 @@ def delete_s3_file(self, force=False): return True def get_synced_file_path(self, force=False, path=None): - """ Fetches the absolute file path to this ComputedFile, fetching from S3 if it - isn't already available locally. """ + """Fetches the absolute file path to this ComputedFile, fetching from S3 if it + isn't already available locally.""" if path: if os.path.exists(path): return path @@ -286,11 +286,11 @@ def get_synced_file_path(self, force=False, path=None): @property def s3_url(self): - """ Render the resulting HTTPS URL for the S3 object.""" + """Render the resulting HTTPS URL for the S3 object.""" return self.get_s3_url() def get_s3_url(self): - """ Render the resulting HTTPS URL for the S3 object.""" + """Render the resulting HTTPS URL for the S3 object.""" if (self.s3_key) and (self.s3_bucket): return "https://s3.amazonaws.com/" + self.s3_bucket + "/" + self.s3_key else: @@ -298,11 +298,11 @@ def get_s3_url(self): @property def download_url(self): - """ A temporary URL from which the file can be downloaded. """ + """A temporary URL from which the file can be downloaded.""" return self.create_download_url() def create_download_url(self): - """ Create a temporary URL from which the file can be downloaded.""" + """Create a temporary URL from which the file can be downloaded.""" if settings.RUNNING_IN_CLOUD and self.s3_bucket and self.s3_key: return S3.generate_presigned_url( ClientMethod="get_object", @@ -313,5 +313,5 @@ def create_download_url(self): return None def has_been_log2scaled(self): - """ Return true if this is a smashable file that has been log2 scaled """ + """Return true if this is a smashable file that has been log2 scaled""" return self.is_smashable and self.filename.endswith("lengthScaledTPM.tsv") diff --git a/common/data_refinery_common/models/contributions.py b/common/data_refinery_common/models/contributions.py index a9dc542aa..5a0a971d4 100644 --- a/common/data_refinery_common/models/contributions.py +++ b/common/data_refinery_common/models/contributions.py @@ -14,7 +14,7 @@ class Contribution(models.Model): created_at = models.DateTimeField(editable=False, default=timezone.now) def save(self, *args, **kwargs): - """ On save, update timestamps """ + """On save, update timestamps""" if not self.id: self.created_at = timezone.now() return super(Contribution, self).save(*args, **kwargs) diff --git a/common/data_refinery_common/models/dataset_annotation.py b/common/data_refinery_common/models/dataset_annotation.py index f282eca65..6aa59925e 100644 --- a/common/data_refinery_common/models/dataset_annotation.py +++ b/common/data_refinery_common/models/dataset_annotation.py @@ -5,8 +5,8 @@ class DatasetAnnotation(models.Model): - """ Semi-standard information associated with a Dataset. - IMPORTANT: This data shouldn't not be exposed through an API. """ + """Semi-standard information associated with a Dataset. + IMPORTANT: This data shouldn't not be exposed through an API.""" class Meta: db_table = "dataset_annotations" @@ -28,7 +28,7 @@ class Meta: last_modified = models.DateTimeField(default=timezone.now) def save(self, *args, **kwargs): - """ On save, update timestamps """ + """On save, update timestamps""" current_time = timezone.now() if not self.pk: self.created_at = current_time diff --git a/common/data_refinery_common/models/documents.py b/common/data_refinery_common/models/documents.py index 789886911..d767a66da 100644 --- a/common/data_refinery_common/models/documents.py +++ b/common/data_refinery_common/models/documents.py @@ -30,7 +30,11 @@ filter=["standard", "lowercase"], char_filter=["html_strip"], ) -standard_keyword = analyzer("standard_keyword", tokenizer="keyword", filter=[],) +standard_keyword = analyzer( + "standard_keyword", + tokenizer="keyword", + filter=[], +) @experiment_index.doc_type diff --git a/common/data_refinery_common/models/experiment_annotation.py b/common/data_refinery_common/models/experiment_annotation.py index dde785ecc..40d7d2e0c 100644 --- a/common/data_refinery_common/models/experiment_annotation.py +++ b/common/data_refinery_common/models/experiment_annotation.py @@ -5,7 +5,7 @@ class ExperimentAnnotation(models.Model): - """ Semi-standard information associated with an Experiment """ + """Semi-standard information associated with an Experiment""" class Meta: db_table = "experiment_annotations" @@ -28,7 +28,7 @@ class Meta: last_modified = models.DateTimeField(default=timezone.now) def save(self, *args, **kwargs): - """ On save, update timestamps """ + """On save, update timestamps""" current_time = timezone.now() if not self.id: self.created_at = current_time diff --git a/common/data_refinery_common/models/jobs/downloader_job.py b/common/data_refinery_common/models/jobs/downloader_job.py index f06308180..c5d38ed5e 100644 --- a/common/data_refinery_common/models/jobs/downloader_job.py +++ b/common/data_refinery_common/models/jobs/downloader_job.py @@ -104,7 +104,7 @@ def get_samples(self) -> Set[Sample]: return samples def save(self, *args, **kwargs): - """ On save, update timestamps """ + """On save, update timestamps""" current_time = timezone.now() if not self.id: self.created_at = current_time diff --git a/common/data_refinery_common/models/jobs/processor_job.py b/common/data_refinery_common/models/jobs/processor_job.py index abc1c1912..6c2ddde0b 100644 --- a/common/data_refinery_common/models/jobs/processor_job.py +++ b/common/data_refinery_common/models/jobs/processor_job.py @@ -88,7 +88,9 @@ class Meta: # If the job had data downloaded for it, this is the DownloaderJob that did so. downloader_job = models.ForeignKey( - "data_refinery_common.DownloaderJob", on_delete=models.SET_NULL, null=True, + "data_refinery_common.DownloaderJob", + on_delete=models.SET_NULL, + null=True, ) # If the job is retried, this is the id of the new job @@ -106,7 +108,7 @@ def get_samples(self) -> Set[Sample]: return samples def save(self, *args, **kwargs): - """ On save, update timestamps """ + """On save, update timestamps""" current_time = timezone.now() if not self.id: self.created_at = current_time diff --git a/common/data_refinery_common/models/jobs/survey_job.py b/common/data_refinery_common/models/jobs/survey_job.py index 4dc65d7e0..fde501f80 100644 --- a/common/data_refinery_common/models/jobs/survey_job.py +++ b/common/data_refinery_common/models/jobs/survey_job.py @@ -59,7 +59,7 @@ class Meta: last_modified = models.DateTimeField(default=timezone.now) def save(self, *args, **kwargs): - """ On save, update timestamps """ + """On save, update timestamps""" current_time = timezone.now() if not self.id: self.created_at = current_time @@ -67,11 +67,11 @@ def save(self, *args, **kwargs): return super(SurveyJob, self).save(*args, **kwargs) def get_properties(self) -> Dict: - """ Return all associated SurveyJobKeyValues as a dict""" + """Return all associated SurveyJobKeyValues as a dict""" return {pair.key: pair.value for pair in self.surveyjobkeyvalue_set.all()} def get_accession_code(self): - """ Return `experiment_accession_code`, the most important code.""" + """Return `experiment_accession_code`, the most important code.""" try: kvp = self.surveyjobkeyvalue_set.get(key="experiment_accession_code") return kvp.value diff --git a/common/data_refinery_common/models/organism.py b/common/data_refinery_common/models/organism.py index a119c3ddb..f1e2ec261 100644 --- a/common/data_refinery_common/models/organism.py +++ b/common/data_refinery_common/models/organism.py @@ -150,7 +150,7 @@ def __str__(self): return str(self.name) def save(self, *args, **kwargs): - """ On save, update timestamps """ + """On save, update timestamps""" current_time = timezone.now() if not self.id: self.created_at = current_time @@ -223,5 +223,5 @@ def get_object_for_name(cls, name: str, taxonomy_id=None): @classmethod def get_objects_with_qn_targets(cls): - """ Return a list of Organisms who already have valid QN targets associated with them. """ + """Return a list of Organisms who already have valid QN targets associated with them.""" return Organism.objects.all().filter(qn_target__isnull=False) diff --git a/common/data_refinery_common/models/organism_index.py b/common/data_refinery_common/models/organism_index.py index b53ef2204..475cc3e12 100644 --- a/common/data_refinery_common/models/organism_index.py +++ b/common/data_refinery_common/models/organism_index.py @@ -6,7 +6,7 @@ class OrganismIndex(models.Model): - """ A special type of process result, necessary for processing other SRA samples """ + """A special type of process result, necessary for processing other SRA samples""" class Meta: db_table = "organism_index" @@ -62,11 +62,11 @@ def __str__(self): last_modified = models.DateTimeField(default=timezone.now) def get_computed_file(self): - """ Short hand method for getting the computed file for this organism index""" + """Short hand method for getting the computed file for this organism index""" return self.result.computedfile_set.first() def save(self, *args, **kwargs): - """ On save, update timestamps """ + """On save, update timestamps""" current_time = timezone.now() if not self.id: self.created_at = current_time diff --git a/common/data_refinery_common/models/original_file.py b/common/data_refinery_common/models/original_file.py index 5fb1e582f..eba916929 100644 --- a/common/data_refinery_common/models/original_file.py +++ b/common/data_refinery_common/models/original_file.py @@ -20,7 +20,7 @@ class OriginalFile(models.Model): - """ A representation of a file from an external source """ + """A representation of a file from an external source""" class Meta: db_table = "original_files" @@ -76,7 +76,7 @@ def __str__(self): last_modified = models.DateTimeField(default=timezone.now) def save(self, *args, **kwargs): - """ On save, update timestamps """ + """On save, update timestamps""" current_time = timezone.now() if not self.id: self.created_at = current_time @@ -84,8 +84,8 @@ def save(self, *args, **kwargs): return super(OriginalFile, self).save(*args, **kwargs) def set_downloaded(self, absolute_file_path, filename=None): - """ Marks the file as downloaded, if `filename` is not provided it will - be parsed from the `absolute_file_path` """ + """Marks the file as downloaded, if `filename` is not provided it will + be parsed from the `absolute_file_path`""" self.is_downloaded = True self.is_archive = FileUtils.is_archive(absolute_file_path) self.absolute_file_path = absolute_file_path @@ -95,46 +95,42 @@ def set_downloaded(self, absolute_file_path, filename=None): self.save() def calculate_sha1(self) -> None: - """ Calculate the SHA1 value of a given file. - """ + """Calculate the SHA1 value of a given file.""" self.sha1 = calculate_sha1(self.absolute_file_path) return self.sha1 def calculate_md5(self) -> None: - """ Calculate the MD5 value of a given file. - """ + """Calculate the MD5 value of a given file.""" self.md5 = calculate_md5(self.absolute_file_path) return self.md5 def calculate_sha1_and_md5(self) -> None: - """ Calculate the MD5 and SHA1 value of a given file at the same time. - """ + """Calculate the MD5 and SHA1 value of a given file at the same time.""" self.sha1, self.md5 = calculate_sha1_and_md5(self.absolute_file_path) return self.sha1, self.md5 def calculate_size(self) -> None: - """ Calculate the number of bytes in a given file. - """ + """Calculate the number of bytes in a given file.""" self.size_in_bytes = calculate_file_size(self.absolute_file_path) return self.size_in_bytes def get_display_name(self): - """ For dev convenience """ + """For dev convenience""" if not self.filename: return self.source_filename else: return self.filename def get_extension(self): - """ Returns the lowercased extension of the filename - Thanks to https://stackoverflow.com/a/541408/763705 """ + """Returns the lowercased extension of the filename + Thanks to https://stackoverflow.com/a/541408/763705""" return FileUtils.get_extension(self.filename) def is_blacklisted(self): return self.get_extension() in [".xml", ".chp", ".exp"] def delete_local_file(self): - """ Deletes this file from the local file system.""" + """Deletes this file from the local file system.""" try: os.remove(self.absolute_file_path) except OSError: @@ -276,8 +272,7 @@ def needs_downloading(self, own_processor_id=None) -> bool: return self.needs_processing(own_processor_id) def is_affy_data(self) -> bool: - """Return true if original_file is a CEL file or a gzipped CEL file. - """ + """Return true if original_file is a CEL file or a gzipped CEL file.""" upper_name = self.source_filename.upper() return (len(upper_name) > 4 and upper_name[-4:] == ".CEL") or ( len(upper_name) > 7 and upper_name[-7:] == ".CEL.GZ" diff --git a/common/data_refinery_common/models/sample_annotation.py b/common/data_refinery_common/models/sample_annotation.py index 318797950..092f83a94 100644 --- a/common/data_refinery_common/models/sample_annotation.py +++ b/common/data_refinery_common/models/sample_annotation.py @@ -5,7 +5,7 @@ class SampleAnnotation(models.Model): - """ Semi-standard information associated with a Sample """ + """Semi-standard information associated with a Sample""" class Meta: db_table = "sample_annotations" @@ -28,7 +28,7 @@ class Meta: last_modified = models.DateTimeField(default=timezone.now) def save(self, *args, **kwargs): - """ On save, update timestamps """ + """On save, update timestamps""" current_time = timezone.now() if not self.id: self.created_at = current_time diff --git a/common/data_refinery_common/models/test_ontology_term.py b/common/data_refinery_common/models/test_ontology_term.py index 65340349d..4b2200059 100644 --- a/common/data_refinery_common/models/test_ontology_term.py +++ b/common/data_refinery_common/models/test_ontology_term.py @@ -108,12 +108,14 @@ def test_import_cellosaurus(self, mock_api_call): created_terms = OntologyTerm.import_entire_ontology("cvcl") self.assertEqual( - OntologyTerm.objects.all().count(), 34, # This is the number I counted in the file + OntologyTerm.objects.all().count(), + 34, # This is the number I counted in the file ) self.assertEqual(OntologyTerm.objects.all().count(), created_terms) self.assertEqual( - "#W7079", OntologyTerm.get_or_create_from_api("CVCL:E549").human_readable_name, + "#W7079", + OntologyTerm.get_or_create_from_api("CVCL:E549").human_readable_name, ) mock_api_call.assert_not_called() diff --git a/common/data_refinery_common/models/test_organisms.py b/common/data_refinery_common/models/test_organisms.py index b84dbaa65..4fc14540b 100644 --- a/common/data_refinery_common/models/test_organisms.py +++ b/common/data_refinery_common/models/test_organisms.py @@ -231,8 +231,7 @@ def test_invalid_ids_cause_exceptions(self, mock_get): @patch("data_refinery_common.models.organism.requests.get") def test_unfound_names_raise(self, mock_get): - """If we can't find the taxonomy id, it's likely a bad organism name. - """ + """If we can't find the taxonomy id, it's likely a bad organism name.""" mock_get.return_value = Mock(ok=True) mock_get.return_value.text = ESEARCH_NOT_FOUND_XML diff --git a/common/data_refinery_common/performant_pagination/runtests/settings.py b/common/data_refinery_common/performant_pagination/runtests/settings.py index 5d04dfc1e..85c892c6f 100644 --- a/common/data_refinery_common/performant_pagination/runtests/settings.py +++ b/common/data_refinery_common/performant_pagination/runtests/settings.py @@ -11,7 +11,12 @@ # https://dev.to/rubyflewtoo/upgrading-to-django-3-2-and-fixing-defaultautofield-warnings-518n DEFAULT_AUTO_FIELD = "django.db.models.AutoField" -DATABASES = {"default": {"ENGINE": "django.db.backends.sqlite3", "NAME": "sqlite.db",}} +DATABASES = { + "default": { + "ENGINE": "django.db.backends.sqlite3", + "NAME": "sqlite.db", + } +} SECRET_KEY = "p!_%jd*snxvam@gs2(+w*mzg+x231s37rz#v*=f&kz07nn81j5" diff --git a/common/data_refinery_common/settings.py b/common/data_refinery_common/settings.py index 8989db263..1b8107751 100644 --- a/common/data_refinery_common/settings.py +++ b/common/data_refinery_common/settings.py @@ -99,10 +99,18 @@ # https://docs.djangoproject.com/en/1.10/ref/settings/#auth-password-validators AUTH_PASSWORD_VALIDATORS = [ - {"NAME": ("django.contrib.auth.password_validation" + ".UserAttributeSimilarityValidator"),}, - {"NAME": ("django.contrib.auth.password_validation." + "MinimumLengthValidator"),}, - {"NAME": ("django.contrib.auth.password_validation" + ".CommonPasswordValidator"),}, - {"NAME": ("django.contrib.auth.password_validation" + ".NumericPasswordValidator"),}, + { + "NAME": ("django.contrib.auth.password_validation" + ".UserAttributeSimilarityValidator"), + }, + { + "NAME": ("django.contrib.auth.password_validation." + "MinimumLengthValidator"), + }, + { + "NAME": ("django.contrib.auth.password_validation" + ".CommonPasswordValidator"), + }, + { + "NAME": ("django.contrib.auth.password_validation" + ".NumericPasswordValidator"), + }, ] diff --git a/common/data_refinery_common/signals.py b/common/data_refinery_common/signals.py index a8cc5809e..bb1c90d62 100644 --- a/common/data_refinery_common/signals.py +++ b/common/data_refinery_common/signals.py @@ -9,6 +9,5 @@ @receiver(pre_delete, sender=ComputedFile) def remove_file_from_s3(sender, instance, **kwargs): - """ When the local model is about to be deleted, try to delete the s3 file - """ + """When the local model is about to be deleted, try to delete the s3 file""" instance.delete_s3_file() diff --git a/common/data_refinery_common/test_utils.py b/common/data_refinery_common/test_utils.py index 71c8772ee..bcf9ee01a 100644 --- a/common/data_refinery_common/test_utils.py +++ b/common/data_refinery_common/test_utils.py @@ -89,7 +89,7 @@ def test_readable_affymetrix_names(self): self.assertTrue(readable_platform_names["xenopuslaevis"] == expected_readable_name) def test_get_normalized_platform(self): - """ Test a particular normaization we need to perform """ + """Test a particular normaization we need to perform""" self.assertEqual(utils.get_normalized_platform("hugene10stv1"), "hugene10st") self.assertEqual(utils.get_normalized_platform("hugene10stv2"), "hugene10st") diff --git a/common/data_refinery_common/utils.py b/common/data_refinery_common/utils.py index b573d3cdb..318ad6ae9 100644 --- a/common/data_refinery_common/utils.py +++ b/common/data_refinery_common/utils.py @@ -28,7 +28,7 @@ def get_env_variable(var_name: str, default: str = None) -> str: - """ Get an environment variable or return a default value """ + """Get an environment variable or return a default value""" try: return os.environ[var_name] except KeyError: @@ -167,7 +167,9 @@ def get_readable_affymetrix_names( READABLE_PLATFORM_NAMES = {} with open(mapping_csv, encoding="utf-8") as mapping_file: - reader = csv.reader(mapping_file,) + reader = csv.reader( + mapping_file, + ) for line in reader: # Skip the header row # Lines are 1 indexed, #BecauseCSV @@ -194,7 +196,9 @@ def get_affymetrix_annotation_package_name_overrides( ANNOTATION_PACKAGE_OVERRIDES = {} with open(overrides_csv, encoding="utf-8") as overrides_file: - reader = csv.reader(overrides_file,) + reader = csv.reader( + overrides_file, + ) for line in reader: # Skip the header row # Lines are 1 indexed, #BecauseCSV @@ -344,11 +348,13 @@ def get_https_sra_download(run_accession: str): def load_blacklist(blacklist_csv: str = "config/RNASeqRunBlackList.csv"): - """ Loads the SRA run blacklist """ + """Loads the SRA run blacklist""" blacklisted_samples = [] with open(blacklist_csv, encoding="utf-8") as blacklist_file: - reader = csv.reader(blacklist_file,) + reader = csv.reader( + blacklist_file, + ) for line in reader: # Skip the header row # Lines are 1 indexed, #BecauseCSV @@ -361,7 +367,7 @@ def load_blacklist(blacklist_csv: str = "config/RNASeqRunBlackList.csv"): def queryset_page_iterator(queryset, page_size=2000): - """ use the performant paginator to iterate over each page in a queryset """ + """use the performant paginator to iterate over each page in a queryset""" paginator = PerformantPaginator(queryset, page_size) page = paginator.page() while True: @@ -374,7 +380,7 @@ def queryset_page_iterator(queryset, page_size=2000): def queryset_iterator(queryset, page_size=2000): - """ use the performant paginator to iterate over a queryset """ + """use the performant paginator to iterate over a queryset""" for page in queryset_page_iterator(queryset, page_size): for item in page: yield item @@ -407,7 +413,7 @@ def download_file( if retry < max_retries: # After the retry-th failed attempt, retry downloading after # k*backoff_factor, where k is a random integer between 0 and 2^retry − 1. - k = random.randint(0, 2 ** retry - 1) + k = random.randint(0, 2**retry - 1) sleep_timeout = min(k * backoff_factor, max_sleep_timeout) time.sleep(sleep_timeout) diff --git a/foreman/data_refinery_foreman/foreman/job_control.py b/foreman/data_refinery_foreman/foreman/job_control.py index e4a46de59..1c0697fe9 100644 --- a/foreman/data_refinery_foreman/foreman/job_control.py +++ b/foreman/data_refinery_foreman/foreman/job_control.py @@ -59,7 +59,7 @@ def send_janitor_jobs(): def clean_database(): - """ Removes duplicated objects that may have appeared through race, OOM, bugs, etc. + """Removes duplicated objects that may have appeared through race, OOM, bugs, etc. See: https://github.com/AlexsLemonade/refinebio/issues/1183 """ diff --git a/foreman/data_refinery_foreman/foreman/job_requeuing.py b/foreman/data_refinery_foreman/foreman/job_requeuing.py index 40e9ea7de..e7df92f0a 100644 --- a/foreman/data_refinery_foreman/foreman/job_requeuing.py +++ b/foreman/data_refinery_foreman/foreman/job_requeuing.py @@ -245,7 +245,9 @@ def requeue_survey_job(last_job: SurveyJob) -> None: for keyvalue in keyvalues: SurveyJobKeyValue.objects.get_or_create( - survey_job=new_job, key=keyvalue.key, value=keyvalue.value, + survey_job=new_job, + key=keyvalue.key, + value=keyvalue.value, ) logger.debug( diff --git a/foreman/data_refinery_foreman/foreman/management/commands/check_computed_files.py b/foreman/data_refinery_foreman/foreman/management/commands/check_computed_files.py index 18cf65aac..9019571ba 100644 --- a/foreman/data_refinery_foreman/foreman/management/commands/check_computed_files.py +++ b/foreman/data_refinery_foreman/foreman/management/commands/check_computed_files.py @@ -39,7 +39,7 @@ def check_item(computed_file): class Command(BaseCommand): def handle(self, *args, **options): - """ We found some computed files that seem to be in S3 but they don't exist for some reason. + """We found some computed files that seem to be in S3 but they don't exist for some reason. This command will check all of them and ensure they exists in S3. For those that don't exist it will clear their `s3_key`/`s3_bucket` fields. ref https://github.com/AlexsLemonade/refinebio/issues/1696 diff --git a/foreman/data_refinery_foreman/foreman/management/commands/correct_affy_cdfs.py b/foreman/data_refinery_foreman/foreman/management/commands/correct_affy_cdfs.py index 3f6063538..a719247ae 100644 --- a/foreman/data_refinery_foreman/foreman/management/commands/correct_affy_cdfs.py +++ b/foreman/data_refinery_foreman/foreman/management/commands/correct_affy_cdfs.py @@ -42,8 +42,7 @@ def add_arguments(self, parser): ) def handle(self, *args, **options): - """Re-surveys GEO experiments containing samples with incorrect platform information. - """ + """Re-surveys GEO experiments containing samples with incorrect platform information.""" # Check against CDF corrected accessions table to prevent recorrection of the same samples. corrected_experiments = CdfCorrectedAccession.objects.all().values("accession_code") diff --git a/foreman/data_refinery_foreman/foreman/management/commands/create_compendia.py b/foreman/data_refinery_foreman/foreman/management/commands/create_compendia.py index 613c7d36b..258d596a0 100644 --- a/foreman/data_refinery_foreman/foreman/management/commands/create_compendia.py +++ b/foreman/data_refinery_foreman/foreman/management/commands/create_compendia.py @@ -83,8 +83,8 @@ def get_target_organisms(organisms): def group_organisms_by_biggest_platform(target_organisms): - """ Create groups of organisms that share the same platform - ref https://github.com/AlexsLemonade/refinebio/issues/1736 """ + """Create groups of organisms that share the same platform + ref https://github.com/AlexsLemonade/refinebio/issues/1736""" result = [] # process the organisms with the most platforms first @@ -122,8 +122,8 @@ def group_organisms_by_biggest_platform(target_organisms): def get_organism_microarray_platforms(organism): - """ Returns the accession codes of the Affymetrix microarray platforms associated with an - organism. Ordered by the number of samples for each platform in descending order """ + """Returns the accession codes of the Affymetrix microarray platforms associated with an + organism. Ordered by the number of samples for each platform in descending order""" return ( organism.sample_set.filter(has_raw=True, technology="MICROARRAY", is_processed=True) .values("platform_accession_code") @@ -165,7 +165,7 @@ def create_job_for_organism(organisms: List[Organism], svd_algorithm="ARPACK"): def get_dataset(organisms: List[Organism]): - """ Builds a dataset with the samples associated with the given organisms """ + """Builds a dataset with the samples associated with the given organisms""" dataset = {} filter_query = Q() diff --git a/foreman/data_refinery_foreman/foreman/management/commands/create_missing_downloader_jobs.py b/foreman/data_refinery_foreman/foreman/management/commands/create_missing_downloader_jobs.py index 174c42da3..5f0851d85 100644 --- a/foreman/data_refinery_foreman/foreman/management/commands/create_missing_downloader_jobs.py +++ b/foreman/data_refinery_foreman/foreman/management/commands/create_missing_downloader_jobs.py @@ -32,7 +32,7 @@ def add_arguments(self, parser): ) def handle(self, *args, **options): - """ Requeues downloader jobs for samples that haven't been processed and their original files + """Requeues downloader jobs for samples that haven't been processed and their original files have no no downloader jobs associated with them """ supported_microarray_platforms = [ diff --git a/foreman/data_refinery_foreman/foreman/management/commands/create_quantpendia.py b/foreman/data_refinery_foreman/foreman/management/commands/create_quantpendia.py index d598ac3e9..3c0465c0a 100644 --- a/foreman/data_refinery_foreman/foreman/management/commands/create_quantpendia.py +++ b/foreman/data_refinery_foreman/foreman/management/commands/create_quantpendia.py @@ -49,7 +49,10 @@ def create_job_for_organism(organism: Organism): def build_dataset(organism: Organism): data = {} - experiments = Experiment.objects.filter(organisms=organism, technology="RNA-SEQ",).distinct() + experiments = Experiment.objects.filter( + organisms=organism, + technology="RNA-SEQ", + ).distinct() for experiment_page in queryset_page_iterator(experiments): for experiment in experiment_page: diff --git a/foreman/data_refinery_foreman/foreman/management/commands/fix_compendia.py b/foreman/data_refinery_foreman/foreman/management/commands/fix_compendia.py index ee8b06b69..ba42d87ad 100644 --- a/foreman/data_refinery_foreman/foreman/management/commands/fix_compendia.py +++ b/foreman/data_refinery_foreman/foreman/management/commands/fix_compendia.py @@ -31,7 +31,10 @@ def transfer_computed_file(computed_file): copy_source = {"Bucket": old_s3_bucket, "Key": s3_key} # keep the same key, just different S3.copy( - copy_source, S3_COMPENDIA_BUCKET_NAME, s3_key, ExtraArgs={"StorageClass": "STANDARD_IA"}, + copy_source, + S3_COMPENDIA_BUCKET_NAME, + s3_key, + ExtraArgs={"StorageClass": "STANDARD_IA"}, ) # 2. update computed file diff --git a/foreman/data_refinery_foreman/foreman/management/commands/generate_dataset_report.py b/foreman/data_refinery_foreman/foreman/management/commands/generate_dataset_report.py index 818bb7ad9..b14910e2a 100644 --- a/foreman/data_refinery_foreman/foreman/management/commands/generate_dataset_report.py +++ b/foreman/data_refinery_foreman/foreman/management/commands/generate_dataset_report.py @@ -10,7 +10,9 @@ qs = ( Dataset.processed_filtered_objects.filter(created_at__gt=START_DATE) - .annotate(week=ExtractWeek("created_at"),) + .annotate( + week=ExtractWeek("created_at"), + ) .values("week") .annotate(n=Count("pk")) .order_by("week") diff --git a/foreman/data_refinery_foreman/foreman/management/commands/import_external_sample_keywords.py b/foreman/data_refinery_foreman/foreman/management/commands/import_external_sample_keywords.py index 434b12ceb..8b1d0c93a 100644 --- a/foreman/data_refinery_foreman/foreman/management/commands/import_external_sample_keywords.py +++ b/foreman/data_refinery_foreman/foreman/management/commands/import_external_sample_keywords.py @@ -56,7 +56,9 @@ def import_keywords(keywords: Dict, source: Contribution): for keyword in keywords: SampleKeyword.objects.get_or_create( - sample=sample, source=source, name=OntologyTerm.get_or_create_from_api(keyword), + sample=sample, + source=source, + name=OntologyTerm.get_or_create_from_api(keyword), ) for experiment in dirty_experiments: diff --git a/foreman/data_refinery_foreman/foreman/management/commands/import_ontology.py b/foreman/data_refinery_foreman/foreman/management/commands/import_ontology.py index 37ae04b20..b206a02d8 100644 --- a/foreman/data_refinery_foreman/foreman/management/commands/import_ontology.py +++ b/foreman/data_refinery_foreman/foreman/management/commands/import_ontology.py @@ -17,7 +17,9 @@ class Command(BaseCommand): def add_arguments(self, parser): parser.add_argument( - "--ontology", type=str, help=("The prefix of the ontology to import (e.g. UO)."), + "--ontology", + type=str, + help=("The prefix of the ontology to import (e.g. UO)."), ) def handle(self, *args, **options): diff --git a/foreman/data_refinery_foreman/foreman/management/commands/mark_samples_unprocessable.py b/foreman/data_refinery_foreman/foreman/management/commands/mark_samples_unprocessable.py index be2c9015a..35e960251 100644 --- a/foreman/data_refinery_foreman/foreman/management/commands/mark_samples_unprocessable.py +++ b/foreman/data_refinery_foreman/foreman/management/commands/mark_samples_unprocessable.py @@ -16,17 +16,17 @@ def mark_unprocessable_samples(): """This function performs the function explained at the head of this file. - It does so by following this general strategy: - 1. Find samples that have is_processed=True - 2. Find the most recent processor job for that sample. - 3. Check that processor job's failure reason and mark - the sample accordingly. - - Along the way it will also populate the following fields: - * last_processor_job - * last_downloader_job - * most_recent_smashable_file - * most_recent_quant_file + It does so by following this general strategy: + 1. Find samples that have is_processed=True + 2. Find the most recent processor job for that sample. + 3. Check that processor job's failure reason and mark + the sample accordingly. + + Along the way it will also populate the following fields: + * last_processor_job + * last_downloader_job + * most_recent_smashable_file + * most_recent_quant_file """ unprocessed_samples = Sample.objects.filter(is_processed=False).prefetch_related( "original_files__processor_jobs" diff --git a/foreman/data_refinery_foreman/foreman/management/commands/organism_shepherd.py b/foreman/data_refinery_foreman/foreman/management/commands/organism_shepherd.py index 1366078c7..22bf6a841 100644 --- a/foreman/data_refinery_foreman/foreman/management/commands/organism_shepherd.py +++ b/foreman/data_refinery_foreman/foreman/management/commands/organism_shepherd.py @@ -222,8 +222,7 @@ def add_arguments(self, parser): ) def handle(self, *args, **options): - """Requeues all unprocessed RNA-Seq samples for an organism. - """ + """Requeues all unprocessed RNA-Seq samples for an organism.""" if options["organism_name"] is None: logger.error("You must specify an organism-name.") sys.exit(1) diff --git a/foreman/data_refinery_foreman/foreman/management/commands/retry_samples.py b/foreman/data_refinery_foreman/foreman/management/commands/retry_samples.py index bce0a6221..4924c44ee 100644 --- a/foreman/data_refinery_foreman/foreman/management/commands/retry_samples.py +++ b/foreman/data_refinery_foreman/foreman/management/commands/retry_samples.py @@ -66,7 +66,7 @@ def retry_by_accession_codes(accession_codes_param): def retry_by_regex(pattern, last_modified=None): - """ Finds the samples where the failure reason of the latest processor job that was applied to them + """Finds the samples where the failure reason of the latest processor job that was applied to them matches the given regex https://docs.djangoproject.com/en/dev/ref/models/querysets/#regex """ @@ -158,7 +158,7 @@ def add_arguments(self, parser): ) def handle(self, *args, **options): - """ Re-queues all unprocessed RNA-Seq samples for an organism. """ + """Re-queues all unprocessed RNA-Seq samples for an organism.""" if options["source_database"]: retry_by_source_database(options["source_database"]) diff --git a/foreman/data_refinery_foreman/foreman/management/commands/run_tximport.py b/foreman/data_refinery_foreman/foreman/management/commands/run_tximport.py index 6b93b4324..aa0a2bd58 100644 --- a/foreman/data_refinery_foreman/foreman/management/commands/run_tximport.py +++ b/foreman/data_refinery_foreman/foreman/management/commands/run_tximport.py @@ -65,8 +65,7 @@ def run_tximport_if_eligible(experiment: Experiment, dispatch_jobs=True) -> bool def run_tximport_for_all_eligible_experiments(dispatch_jobs=True): - """Creates a tximport job for all eligible experiments. - """ + """Creates a tximport job for all eligible experiments.""" eligible_experiments = ( Experiment.objects.annotate(num_organisms=Count("organisms")) .filter(num_organisms=1, technology="RNA-SEQ", num_processed_samples=0) @@ -101,8 +100,7 @@ def run_tximport_for_all_eligible_experiments(dispatch_jobs=True): def run_tximport_for_list(accession_codes: List[str], dispatch_jobs=True): - """Creates a tximport job for all experiments in the list of accession_codes that are eligble. - """ + """Creates a tximport job for all experiments in the list of accession_codes that are eligble.""" accession_codes = accession_codes.split(",") creation_count = 0 print(accession_codes) diff --git a/foreman/data_refinery_foreman/foreman/management/commands/stop_jobs.py b/foreman/data_refinery_foreman/foreman/management/commands/stop_jobs.py index b147a8368..dea026781 100644 --- a/foreman/data_refinery_foreman/foreman/management/commands/stop_jobs.py +++ b/foreman/data_refinery_foreman/foreman/management/commands/stop_jobs.py @@ -41,7 +41,9 @@ def stop_jobs(job_ids, job_type, reason): class Command(BaseCommand): def add_arguments(self, parser): parser.add_argument( - "job-ids", type=str, help=("Comma separated job IDs that need to be stopped."), + "job-ids", + type=str, + help=("Comma separated job IDs that need to be stopped."), ) parser.add_argument( diff --git a/foreman/data_refinery_foreman/foreman/management/commands/test_rerun_salmon_old_samples.py b/foreman/data_refinery_foreman/foreman/management/commands/test_rerun_salmon_old_samples.py index c964e25eb..4f1b3a2bc 100644 --- a/foreman/data_refinery_foreman/foreman/management/commands/test_rerun_salmon_old_samples.py +++ b/foreman/data_refinery_foreman/foreman/management/commands/test_rerun_salmon_old_samples.py @@ -27,7 +27,7 @@ def setup_experiment(new_version_accessions: List[str], old_version_accessions: List[str]) -> Dict: - """ Create an experiment where some samples were processed with the newest version of salmon and + """Create an experiment where some samples were processed with the newest version of salmon and other with an older one. """ # Create the experiment diff --git a/foreman/data_refinery_foreman/foreman/management/commands/test_retry_samples.py b/foreman/data_refinery_foreman/foreman/management/commands/test_retry_samples.py index ade3112f7..ef5023a34 100644 --- a/foreman/data_refinery_foreman/foreman/management/commands/test_retry_samples.py +++ b/foreman/data_refinery_foreman/foreman/management/commands/test_retry_samples.py @@ -27,7 +27,7 @@ def setup_experiment() -> Dict: - """ Create an experiment with two samples where one of them has a processor job that failed + """Create an experiment with two samples where one of them has a processor job that failed because Batch restarted it.""" # Create the experiment @@ -92,8 +92,7 @@ def setup_experiment() -> Dict: class RetrySamples(TestCase): - """ - """ + """ """ def test(self): setup_experiment() diff --git a/foreman/data_refinery_foreman/foreman/management/commands/update_experiment_metadata.py b/foreman/data_refinery_foreman/foreman/management/commands/update_experiment_metadata.py index b365e2c73..00d8a637d 100644 --- a/foreman/data_refinery_foreman/foreman/management/commands/update_experiment_metadata.py +++ b/foreman/data_refinery_foreman/foreman/management/commands/update_experiment_metadata.py @@ -30,8 +30,7 @@ def add_arguments(self, parser): ) def handle(self, *args, **options): - """Refreshes the metadata for all experiments, or experiments from a specific database - """ + """Refreshes the metadata for all experiments, or experiments from a specific database""" possible_source_databases = ["ARRAY_EXPRESS", "GEO", "SRA"] if options.get("source_database", None) is None: @@ -63,7 +62,9 @@ def handle(self, *args, **options): elif experiment.source_database == "GEO": gse = GEOparse.get_GEO( - experiment.accession_code, destdir="/tmp/management", silent=True, + experiment.accession_code, + destdir="/tmp/management", + silent=True, ) GeoSurveyor._apply_metadata_to_experiment(experiment, gse) diff --git a/foreman/data_refinery_foreman/foreman/management/commands/update_sample_metadata.py b/foreman/data_refinery_foreman/foreman/management/commands/update_sample_metadata.py index a676829c6..db313e801 100644 --- a/foreman/data_refinery_foreman/foreman/management/commands/update_sample_metadata.py +++ b/foreman/data_refinery_foreman/foreman/management/commands/update_sample_metadata.py @@ -30,8 +30,7 @@ def add_arguments(self, parser): ) def handle(self, *args, **options): - """Refreshes the metadata for all samples, or samples from a specific database - """ + """Refreshes the metadata for all samples, or samples from a specific database""" possible_source_databases = ["ARRAY_EXPRESS", "GEO", "SRA"] if options.get("source_database", None) is None: diff --git a/foreman/data_refinery_foreman/settings.py b/foreman/data_refinery_foreman/settings.py index 7a489facc..c6d903bf2 100644 --- a/foreman/data_refinery_foreman/settings.py +++ b/foreman/data_refinery_foreman/settings.py @@ -108,10 +108,18 @@ # https://docs.djangoproject.com/en/1.10/ref/settings/#auth-password-validators AUTH_PASSWORD_VALIDATORS = [ - {"NAME": "django.contrib.auth.password_validation.UserAttributeSimilarityValidator",}, - {"NAME": "django.contrib.auth.password_validation.MinimumLengthValidator",}, - {"NAME": "django.contrib.auth.password_validation.CommonPasswordValidator",}, - {"NAME": "django.contrib.auth.password_validation.NumericPasswordValidator",}, + { + "NAME": "django.contrib.auth.password_validation.UserAttributeSimilarityValidator", + }, + { + "NAME": "django.contrib.auth.password_validation.MinimumLengthValidator", + }, + { + "NAME": "django.contrib.auth.password_validation.CommonPasswordValidator", + }, + { + "NAME": "django.contrib.auth.password_validation.NumericPasswordValidator", + }, ] diff --git a/foreman/data_refinery_foreman/surveyor/external_source.py b/foreman/data_refinery_foreman/surveyor/external_source.py index 3d9e47a6d..eab426e26 100644 --- a/foreman/data_refinery_foreman/surveyor/external_source.py +++ b/foreman/data_refinery_foreman/surveyor/external_source.py @@ -106,8 +106,7 @@ def queue_downloader_job_for_original_files( experiment_accession_code: str = None, is_transcriptome: bool = False, ): - """Creates a single DownloaderJob with multiple files to download. - """ + """Creates a single DownloaderJob with multiple files to download.""" # Transcriptome is a special case because there's no sample_object. # It's alright to re-process transcriptome indices. if is_transcriptome: diff --git a/foreman/data_refinery_foreman/surveyor/harmony.py b/foreman/data_refinery_foreman/surveyor/harmony.py index 5949f0cb9..433206de9 100644 --- a/foreman/data_refinery_foreman/surveyor/harmony.py +++ b/foreman/data_refinery_foreman/surveyor/harmony.py @@ -265,7 +265,7 @@ def extract_title(sample: Dict, priority_field: str = None) -> str: - """ Given a flat sample dictionary, find the title """ + """Given a flat sample dictionary, find the title""" if priority_field: title_fields = [priority_field] + [tf for tf in TITLE_FIELDS if tf != priority_field] else: @@ -288,7 +288,7 @@ def extract_title(sample: Dict, priority_field: str = None) -> str: def create_variants(fields_list: List): - """ Given a list of strings, create variations likely to give metadata hits. + """Given a list of strings, create variations likely to give metadata hits. Ex, given 'cell line', add the ability to hit on 'characteristic [cell_line]' as well. """ @@ -324,7 +324,7 @@ def create_variants(fields_list: List): def parse_sdrf(sdrf_url: str) -> List: - """ Given a URL to an SDRF file, download parses it into JSON. """ + """Given a URL to an SDRF file, download parses it into JSON.""" try: sdrf_response = requests_retry_session().get(sdrf_url, timeout=60) diff --git a/foreman/data_refinery_foreman/surveyor/sra.py b/foreman/data_refinery_foreman/surveyor/sra.py index 11fbb0586..777a199ce 100644 --- a/foreman/data_refinery_foreman/surveyor/sra.py +++ b/foreman/data_refinery_foreman/surveyor/sra.py @@ -190,7 +190,7 @@ def gather_file_report(run_accession: str) -> List[Dict]: This endpoint returns a weird format, so some custom parsing is required: run_accession fastq_ftp fastq_bytes fastq_md5 submitted_ftp submitted_bytes submitted_md5 sra_ftp sra_bytes sra_md5 - SRR7353755 ftp.sra.ebi.ac.uk/vol1/fastq/SRR735/005/SRR7353755/SRR7353755.fastq.gz;ftp.sra.ebi.ac.uk/vol1/fastq/SRR735/005/SRR7353755/SRR7353755_1.fastq.gz;ftp.sra.ebi.ac.uk/vol1/fastq/SRR735/005/SRR7353755/SRR7353755_2.fastq.gz 25176;2856704;3140575 7ef1ba010dcb679217112efa380798b2;6bc5651b7103306d4d65018180ab8d0d;3856c14164612d9879d576a046a9879f """ + SRR7353755 ftp.sra.ebi.ac.uk/vol1/fastq/SRR735/005/SRR7353755/SRR7353755.fastq.gz;ftp.sra.ebi.ac.uk/vol1/fastq/SRR735/005/SRR7353755/SRR7353755_1.fastq.gz;ftp.sra.ebi.ac.uk/vol1/fastq/SRR735/005/SRR7353755/SRR7353755_2.fastq.gz 25176;2856704;3140575 7ef1ba010dcb679217112efa380798b2;6bc5651b7103306d4d65018180ab8d0d;3856c14164612d9879d576a046a9879f""" response = utils.requests_retry_session().get( ENA_FILE_REPORT_URL_TEMPLATE.format(accession=run_accession) ) diff --git a/foreman/data_refinery_foreman/surveyor/test_array_express.py b/foreman/data_refinery_foreman/surveyor/test_array_express.py index c1d41d3b9..47a2d971b 100644 --- a/foreman/data_refinery_foreman/surveyor/test_array_express.py +++ b/foreman/data_refinery_foreman/surveyor/test_array_express.py @@ -109,8 +109,7 @@ def test_survey_with_protocol_list(self): "/home/user/data_store/cassettes/surveyor.array_express.determine_accession.yaml" ) def test_determine_accession(self): - """Test of the `determine_sample_accession` function - """ + """Test of the `determine_sample_accession` function""" survey_job = self.create_job_for_accession("E-MTAB-3050") ae_surveyor = ArrayExpressSurveyor(survey_job) diff --git a/foreman/data_refinery_foreman/surveyor/test_geo.py b/foreman/data_refinery_foreman/surveyor/test_geo.py index 96037ea96..cd93b282f 100644 --- a/foreman/data_refinery_foreman/surveyor/test_geo.py +++ b/foreman/data_refinery_foreman/surveyor/test_geo.py @@ -34,7 +34,7 @@ def tearDown(self): @vcr.use_cassette("/home/user/data_store/cassettes/surveyor.geo.geo_survey_microarray.yaml") @patch("data_refinery_foreman.surveyor.external_source.send_job") def test_geo_survey_microarray(self, mock_send_task): - """ Run the GEO surveyor and make sure we get some files to DL! + """Run the GEO surveyor and make sure we get some files to DL! For an Illumina Microarray platform. """ @@ -87,8 +87,7 @@ def test_geo_survey_GSE6532(self, mock_send_task): @vcr.use_cassette("/home/user/data_store/cassettes/surveyor.geo.geo_survey_not_agilent.yaml") @patch("data_refinery_foreman.surveyor.external_source.send_job") def test_geo_survey_not_agilent(self, mock_send_task): - """ Test to make sure we're setting MFG correctly - """ + """Test to make sure we're setting MFG correctly""" self.prep_test("GSE34198") geo_surveyor = GeoSurveyor(self.survey_job) @@ -100,7 +99,7 @@ def test_geo_survey_not_agilent(self, mock_send_task): @vcr.use_cassette("/home/user/data_store/cassettes/surveyor.geo.geo_survey_agilent.yaml") @patch("data_refinery_foreman.surveyor.external_source.send_job") def test_geo_survey_agilent(self, mock_send_task): - """ Run the GEO surveyor and make sure we get some files to DL! + """Run the GEO surveyor and make sure we get some files to DL! For an Agilent Microarray platform. """ @@ -183,7 +182,7 @@ def test_geo_survey_superseries(self, mock_send_task): @vcr.use_cassette("/home/user/data_store/cassettes/surveyor.geo.get_pubmet_id_title.yaml") def test_get_pubmed_id_title(self): - """ We scrape PMIDs now. """ + """We scrape PMIDs now.""" resp = get_title_and_authors_for_pubmed_id("22367537") self.assertEqual( resp[0], diff --git a/foreman/data_refinery_foreman/surveyor/test_harmony.py b/foreman/data_refinery_foreman/surveyor/test_harmony.py index 8e69068c4..7334cbfa5 100644 --- a/foreman/data_refinery_foreman/surveyor/test_harmony.py +++ b/foreman/data_refinery_foreman/surveyor/test_harmony.py @@ -36,7 +36,7 @@ def setUp(self): @vcr.use_cassette("/home/user/data_store/cassettes/surveyor.harmony.sdrf_harmony.yaml") def test_sdrf_harmony(self): - """ Harmonize SDRF test""" + """Harmonize SDRF test""" metadata = parse_sdrf( "https://www.ebi.ac.uk/arrayexpress/files/E-MTAB-3050/E-MTAB-3050.sdrf.txt" @@ -56,7 +56,7 @@ def test_sdrf_harmony(self): @vcr.use_cassette("/home/user/data_store/cassettes/surveyor.harmony.sdrf_big.yaml") @tag("slow") def test_sdrf_big(self): - """ Tests lots of different cases for harmonization""" + """Tests lots of different cases for harmonization""" lots = [ "E-GEOD-59071", diff --git a/foreman/data_refinery_foreman/surveyor/test_sra.py b/foreman/data_refinery_foreman/surveyor/test_sra.py index 3b4f9beda..0ec12f2b2 100644 --- a/foreman/data_refinery_foreman/surveyor/test_sra.py +++ b/foreman/data_refinery_foreman/surveyor/test_sra.py @@ -51,8 +51,7 @@ def tearDown(self): SurveyJob.objects.all().delete() def test_survey(self): - """A Simple test of the SRA surveyor. - """ + """A Simple test of the SRA surveyor.""" sra_surveyor = SraSurveyor(self.survey_job) sra_surveyor.discover_experiment_and_samples() @@ -69,8 +68,7 @@ def test_survey(self): @vcr.use_cassette("/home/user/data_store/cassettes/surveyor.sra.srp_survey.yaml") @patch("data_refinery_foreman.surveyor.external_source.send_job") def test_srp_survey(self, mock_send_job): - """A slightly harder test of the SRA surveyor. - """ + """A slightly harder test of the SRA surveyor.""" survey_job = SurveyJob(source_type="SRA") survey_job.save() key_value_pair = SurveyJobKeyValue( @@ -148,8 +146,7 @@ def test_survey_unmated_reads(self, mock_send_job): @vcr.use_cassette("/home/user/data_store/cassettes/surveyor.sra.survey_nonexistant.yaml") def test_nonexistant_srp_survey(self): - """Try surveying an accession that does not exist - """ + """Try surveying an accession that does not exist""" survey_job = SurveyJob(source_type="SRA") survey_job.save() key_value_pair = SurveyJobKeyValue( @@ -167,8 +164,7 @@ def test_nonexistant_srp_survey(self): "/home/user/data_store/cassettes/surveyor.sra.arrayexpress_alternate_accession.yaml" ) def test_arrayexpress_alternate_accession(self): - """ Make sure that ENA experiments correctly detect their ArrayExpress alternate accession - """ + """Make sure that ENA experiments correctly detect their ArrayExpress alternate accession""" survey_job = SurveyJob(source_type="SRA") survey_job.save() diff --git a/foreman/data_refinery_foreman/surveyor/test_transcriptome_index.py b/foreman/data_refinery_foreman/surveyor/test_transcriptome_index.py index c559419b9..4a90ff2a1 100644 --- a/foreman/data_refinery_foreman/surveyor/test_transcriptome_index.py +++ b/foreman/data_refinery_foreman/surveyor/test_transcriptome_index.py @@ -37,7 +37,7 @@ def test_survey(self, mock_send_job): "/home/user/data_store/cassettes/surveyor.transcriptome.correct_index_location.yaml" ) def test_correct_index_location(self): - """ Tests that the files returned actually exist. + """Tests that the files returned actually exist. Uses an organism in the main division. """ @@ -68,7 +68,7 @@ def test_correct_index_location(self): "/home/user/data_store/cassettes/surveyor.transcriptome.correct_location_metazoa.yaml" ) def test_correct_index_location_metazoa(self): - """ Tests that the files returned actually exist. + """Tests that the files returned actually exist. Tests the Metazoa division instead of the main division. """ @@ -97,7 +97,7 @@ def test_correct_index_location_metazoa(self): @vcr.use_cassette("/home/user/data_store/cassettes/surveyor.transcriptome.single_plant.yaml") def test_single_plant(self): - """ Tests that the files returned actually exist. + """Tests that the files returned actually exist. Tests the Metazoa division instead of the main division. """ @@ -128,7 +128,7 @@ def test_single_plant(self): "/home/user/data_store/cassettes/surveyor.transcriptome.correct_location_protist.yaml" ) def test_correct_index_location_protist(self): - """ Tests that the files returned actually exist. + """Tests that the files returned actually exist. Tests the Metazoa division instead of the main division. """ diff --git a/foreman/data_refinery_foreman/surveyor/transcriptome_index.py b/foreman/data_refinery_foreman/surveyor/transcriptome_index.py index cc84b37b9..d2b5df053 100644 --- a/foreman/data_refinery_foreman/surveyor/transcriptome_index.py +++ b/foreman/data_refinery_foreman/surveyor/transcriptome_index.py @@ -57,8 +57,7 @@ def get_strain_mapping_for_organism( species_name: str, config_file="config/organism_strain_mapping.csv" ) -> List[Dict]: - """Returns the row of the strain/organism mapping for the species_name - """ + """Returns the row of the strain/organism mapping for the species_name""" upper_name = species_name.upper() with open(config_file) as csvfile: reader = csv.DictReader(csvfile) @@ -369,7 +368,9 @@ def discover_species(self): ).value logger.info( - "Surveying %s division of ensembl.", ensembl_division, survey_job=self.survey_job.id, + "Surveying %s division of ensembl.", + ensembl_division, + survey_job=self.survey_job.id, ) try: diff --git a/foreman/data_refinery_foreman/surveyor/utils.py b/foreman/data_refinery_foreman/surveyor/utils.py index b8e44eb0f..d14c7d7df 100644 --- a/foreman/data_refinery_foreman/surveyor/utils.py +++ b/foreman/data_refinery_foreman/surveyor/utils.py @@ -44,7 +44,7 @@ def flatten(d, parent_key="", sep="_"): def get_title_and_authors_for_pubmed_id(pmid): - """ Given a PMID, return that PMID's (title, [authors]). """ + """Given a PMID, return that PMID's (title, [authors]).""" try: j_url = ( diff --git a/foreman/data_refinery_foreman/test_runner.py b/foreman/data_refinery_foreman/test_runner.py index 213d8639e..a6719a790 100644 --- a/foreman/data_refinery_foreman/test_runner.py +++ b/foreman/data_refinery_foreman/test_runner.py @@ -2,12 +2,12 @@ class NoDbTestRunner(DiscoverRunner): - """ A test runner to test without database creation """ + """A test runner to test without database creation""" def setup_databases(self, **kwargs): - """ Override the database creation defined in parent class """ + """Override the database creation defined in parent class""" pass def teardown_databases(self, old_config, **kwargs): - """ Override the database teardown defined in parent class """ + """Override the database teardown defined in parent class""" pass diff --git a/scripts/kill_all_jobs.py b/scripts/kill_all_jobs.py index 19f7db9ff..7e1853c2f 100644 --- a/scripts/kill_all_jobs.py +++ b/scripts/kill_all_jobs.py @@ -18,7 +18,9 @@ while "nextToken" in list_jobs_dict and list_jobs_dict["nextToken"]: list_jobs_dict = batch.list_jobs( - jobQueue=batch_queue_name, jobStatus=status, nextToken=list_jobs_dict["nextToken"], + jobQueue=batch_queue_name, + jobStatus=status, + nextToken=list_jobs_dict["nextToken"], ) for job in list_jobs_dict["jobSummaryList"]: diff --git a/scripts/run_full_pipeline.py b/scripts/run_full_pipeline.py index 9f49d618a..ba1b258d4 100755 --- a/scripts/run_full_pipeline.py +++ b/scripts/run_full_pipeline.py @@ -24,7 +24,8 @@ def parse_args(): def get_job_to_run(): completed_command = subprocess.run( - ["./foreman/run_management_command.sh", "get_job_to_be_run"], stdout=subprocess.PIPE, + ["./foreman/run_management_command.sh", "get_job_to_be_run"], + stdout=subprocess.PIPE, ) # The JSON output is on the last line of the output, but it has a diff --git a/workers/data_refinery_workers/downloaders/array_express.py b/workers/data_refinery_workers/downloaders/array_express.py index 6a69a921a..5b2a1fb4f 100644 --- a/workers/data_refinery_workers/downloaders/array_express.py +++ b/workers/data_refinery_workers/downloaders/array_express.py @@ -27,8 +27,8 @@ def _download_file(download_url: str, file_path: str, job: DownloaderJob) -> None: - """ Download a file from ArrayExpress via FTP. There is no Aspera endpoint - which I can find. """ + """Download a file from ArrayExpress via FTP. There is no Aspera endpoint + which I can find.""" try: logger.debug( "Downloading file from %s to %s.", download_url, file_path, downloader_job=job.id @@ -45,8 +45,7 @@ def _download_file(download_url: str, file_path: str, job: DownloaderJob) -> Non def _extract_files(file_path: str, accession_code: str, job: DownloaderJob) -> List[str]: - """Extract zip and return a list of the raw files. - """ + """Extract zip and return a list of the raw files.""" logger.debug("Extracting %s!", file_path, file_path=file_path, downloader_job=job.id) abs_with_code_raw = LOCAL_ROOT_DIR + "/" + accession_code + "/raw/" diff --git a/workers/data_refinery_workers/downloaders/geo.py b/workers/data_refinery_workers/downloaders/geo.py index 29f37f6ab..d395c5f2c 100644 --- a/workers/data_refinery_workers/downloaders/geo.py +++ b/workers/data_refinery_workers/downloaders/geo.py @@ -27,8 +27,7 @@ def _download_file(download_url: str, file_path: str, job: DownloaderJob, force_ftp=False) -> None: - """ Download a file from GEO via Aspera unless `force_ftp` is True - """ + """Download a file from GEO via Aspera unless `force_ftp` is True""" # Ensure directory exists os.makedirs(file_path.rsplit("/", 1)[0], exist_ok=True) @@ -64,7 +63,7 @@ def _download_file(download_url: str, file_path: str, job: DownloaderJob, force_ def _download_file_aspera( download_url: str, downloader_job: DownloaderJob, target_file_path: str, attempt=0 ) -> bool: - """ Download a file to a location using Aspera by shelling out to the `ascp` client. """ + """Download a file to a location using Aspera by shelling out to the `ascp` client.""" try: logger.debug( @@ -154,7 +153,7 @@ def __init__(self, file_path, original_error): class ArchivedFile: - """ Contains utility functions to enumerate the files inside an archive that was downloaded from GEO. """ + """Contains utility functions to enumerate the files inside an archive that was downloaded from GEO.""" def __init__(self, downloaded_file_path, parent_archive=None): self.file_path = downloaded_file_path @@ -165,31 +164,31 @@ def __init__(self, downloaded_file_path, parent_archive=None): self.extension = os.path.splitext(self.file_path)[1] def parent_is_archive(self): - """ Returns true if this file came from an archive """ + """Returns true if this file came from an archive""" return self.parent_archive and self.parent_archive.is_archive() def experiment_accession_code(self): - """ Tries to get an experiment accession code from the file name. - GEO experiment accession codes start with GSE and have between 5 and 9 characters """ + """Tries to get an experiment accession code from the file name. + GEO experiment accession codes start with GSE and have between 5 and 9 characters""" match = re.match(r"(GSE\d{2,6})", self.filename) if match: return match.group(0) return None def sample_accession_code(self): - """ Tries to get a sample accession code from the file name. - GEO sample accession codes start with GSM and have between 6 and 10 characters """ + """Tries to get a sample accession code from the file name. + GEO sample accession codes start with GSM and have between 6 and 10 characters""" match = re.match(r"(GSM\d{4,7})", self.filename) if match: return match.group(0) return None def get_sample(self): - """ Tries to find the sample associated with this file, and returns None if unable. """ + """Tries to find the sample associated with this file, and returns None if unable.""" return Sample.objects.filter(accession_code=self.sample_accession_code()).first() def is_processable(self): - """ There're some known file patterns that are found in GEO that we know we can ignore. """ + """There're some known file patterns that are found in GEO that we know we can ignore.""" if re.match(r"(GSE\d{2,6})_family.xml", self.filename): return False @@ -234,7 +233,7 @@ def _extract_files(self): raise FileExtractionError(self.file_path, "Unknown archive file format.") def _get_absolute_path(self): - """ This returns the path where this file would be extracted if it's an archive """ + """This returns the path where this file would be extracted if it's an archive""" if self.experiment_accession_code(): return LOCAL_ROOT_DIR + "/" + self.experiment_accession_code() + "/raw/" elif self.sample_accession_code(): @@ -243,7 +242,7 @@ def _get_absolute_path(self): return LOCAL_ROOT_DIR + "/" + self.filename + "/raw/" def _extract_tar(self) -> List[str]: - """ Extract tar and return a list of the raw files. """ + """Extract tar and return a list of the raw files.""" # This is technically an unsafe operation. # However, we're trusting GEO as a data source. abs_with_code_raw = self._get_absolute_path() diff --git a/workers/data_refinery_workers/downloaders/sra.py b/workers/data_refinery_workers/downloaders/sra.py index 181135027..c4a6a367b 100644 --- a/workers/data_refinery_workers/downloaders/sra.py +++ b/workers/data_refinery_workers/downloaders/sra.py @@ -29,8 +29,7 @@ def _download_file( original_file: OriginalFile, downloader_job: DownloaderJob, target_file_path: str ) -> bool: - """ Download file dispatcher. Dispatches to the HTTP or Aspera downloader - """ + """Download file dispatcher. Dispatches to the HTTP or Aspera downloader""" download_url = original_file.source_url # SRA files have Apsera downloads. if "ftp.sra.ebi.ac.uk" in download_url: @@ -92,7 +91,7 @@ def _download_file_aspera( original_file=None, source="NCBI", ) -> bool: - """ Download a file to a location using Aspera by shelling out to the `ascp` client. """ + """Download a file to a location using Aspera by shelling out to the `ascp` client.""" try: logger.debug( diff --git a/workers/data_refinery_workers/downloaders/test_geo.py b/workers/data_refinery_workers/downloaders/test_geo.py index 9d951a33b..8f6ebc2de 100644 --- a/workers/data_refinery_workers/downloaders/test_geo.py +++ b/workers/data_refinery_workers/downloaders/test_geo.py @@ -90,7 +90,7 @@ def test_download_and_extract_file(self): @tag("downloaders") def test_download_aspera_and_ftp(self): - """ Tests the main 'download_geo' function. """ + """Tests the main 'download_geo' function.""" dlj = DownloaderJob() dlj.accession_code = "GSE22427" @@ -158,7 +158,7 @@ def test_download_aspera_and_ftp(self): @tag("downloaders") def test_download_geo(self): - """ Tests the main 'download_geo' function. """ + """Tests the main 'download_geo' function.""" dlj = DownloaderJob() dlj.accession_code = "GSE22427" @@ -217,8 +217,7 @@ def test_download_geo(self): @tag("downloaders") def test_no_rnaseq(self): - """Makes sure that no RNA-Seq data gets downloaded even if there's a job for it. - """ + """Makes sure that no RNA-Seq data gets downloaded even if there's a job for it.""" dlj = DownloaderJob() dlj.accession_code = "GSE103217" dlj.save() diff --git a/workers/data_refinery_workers/downloaders/transcriptome_index.py b/workers/data_refinery_workers/downloaders/transcriptome_index.py index a09999166..1ffb005f6 100644 --- a/workers/data_refinery_workers/downloaders/transcriptome_index.py +++ b/workers/data_refinery_workers/downloaders/transcriptome_index.py @@ -129,7 +129,7 @@ def download_transcriptome(job_id: int) -> None: def create_long_and_short_processor_jobs( downloader_job, long_files_to_process, short_files_to_process ): - """ Creates two processor jobs for the files needed for this transcriptome""" + """Creates two processor jobs for the files needed for this transcriptome""" processor_job_long = ProcessorJob() processor_job_long.downloader_job = downloader_job diff --git a/workers/data_refinery_workers/processors/create_quantpendia.py b/workers/data_refinery_workers/processors/create_quantpendia.py index 7dbdd8654..3336409e4 100644 --- a/workers/data_refinery_workers/processors/create_quantpendia.py +++ b/workers/data_refinery_workers/processors/create_quantpendia.py @@ -196,8 +196,8 @@ def _create_result_objects(job_context: Dict) -> Dict: def _remove_job_dir(job_context: Dict): - """ remove the directory when the job is successful. At this point - the quantpendia was already zipped and uploaded. """ + """remove the directory when the job is successful. At this point + the quantpendia was already zipped and uploaded.""" # don't remove the files when running locally or for tests if settings.RUNNING_IN_CLOUD: shutil.rmtree(job_context["job_dir"], ignore_errors=True) diff --git a/workers/data_refinery_workers/processors/illumina.py b/workers/data_refinery_workers/processors/illumina.py index e7d1cc368..c216ef584 100644 --- a/workers/data_refinery_workers/processors/illumina.py +++ b/workers/data_refinery_workers/processors/illumina.py @@ -73,7 +73,12 @@ def _detect_encoding(job_context: Dict) -> Dict: try: encoding = subprocess.check_output( - ["file", "--brief", "--mime-encoding", job_context["input_file_path"],], + [ + "file", + "--brief", + "--mime-encoding", + job_context["input_file_path"], + ], encoding="utf-8", ).strip() except subprocess.CalledProcessError as e: @@ -365,7 +370,11 @@ def _detect_platform(job_context: Dict) -> Dict: "illuminaHumanv3", "illuminaHumanv4", ], - "MUS_MUSCULUS": ["illuminaMousev1", "illuminaMousev1p1", "illuminaMousev2",], + "MUS_MUSCULUS": [ + "illuminaMousev1", + "illuminaMousev1p1", + "illuminaMousev2", + ], "RATTUS_NORVEGICUS": ["illuminaRatv1"], } diff --git a/workers/data_refinery_workers/processors/janitor.py b/workers/data_refinery_workers/processors/janitor.py index 1d5fa12b6..83b368901 100644 --- a/workers/data_refinery_workers/processors/janitor.py +++ b/workers/data_refinery_workers/processors/janitor.py @@ -23,7 +23,7 @@ def _find_and_remove_expired_jobs(job_context): - """ Finds expired jobs and removes their working directories """ + """Finds expired jobs and removes their working directories""" job_context["deleted_items"] = [] diff --git a/workers/data_refinery_workers/processors/management/commands/fetch_compendia.py b/workers/data_refinery_workers/processors/management/commands/fetch_compendia.py index c2fa3f6e3..2af837764 100644 --- a/workers/data_refinery_workers/processors/management/commands/fetch_compendia.py +++ b/workers/data_refinery_workers/processors/management/commands/fetch_compendia.py @@ -15,8 +15,7 @@ def add_arguments(self, parser): parser.add_argument("--dataset-ids", type=str, help=("Comma-separated Dataset IDs.")) def handle(self, *args, **options): - """ Given a dataset ID, fetch the resulting smashed object. - """ + """Given a dataset ID, fetch the resulting smashed object.""" if options["dataset_ids"] is None: logger.error("You must specify dataset IDs.") diff --git a/workers/data_refinery_workers/processors/management/commands/qn_dispatcher.py b/workers/data_refinery_workers/processors/management/commands/qn_dispatcher.py index ff5b03b71..829088c54 100644 --- a/workers/data_refinery_workers/processors/management/commands/qn_dispatcher.py +++ b/workers/data_refinery_workers/processors/management/commands/qn_dispatcher.py @@ -19,7 +19,7 @@ class Command(BaseCommand): def handle(self, *args, **options): - """ Dispatch QN_REFERENCE creation jobs for all Organisms with a platform with enough processed samples. """ + """Dispatch QN_REFERENCE creation jobs for all Organisms with a platform with enough processed samples.""" organisms = Organism.objects.all() diff --git a/workers/data_refinery_workers/processors/management/commands/remove_invalid_computational_results.py b/workers/data_refinery_workers/processors/management/commands/remove_invalid_computational_results.py index 614985f73..0d13b7cbf 100644 --- a/workers/data_refinery_workers/processors/management/commands/remove_invalid_computational_results.py +++ b/workers/data_refinery_workers/processors/management/commands/remove_invalid_computational_results.py @@ -35,7 +35,7 @@ def add_arguments(self, parser): ) def handle(self, *args, **options): - """ Takes care of removing invalid computational results. """ + """Takes care of removing invalid computational results.""" computational_result_ids = [] if options["compendias"]: diff --git a/workers/data_refinery_workers/processors/management/commands/run_tximport.py b/workers/data_refinery_workers/processors/management/commands/run_tximport.py index b491667e7..38b736f77 100644 --- a/workers/data_refinery_workers/processors/management/commands/run_tximport.py +++ b/workers/data_refinery_workers/processors/management/commands/run_tximport.py @@ -22,8 +22,7 @@ def add_arguments(self, parser): ) def handle(self, *args, **options): - """Run tximport on an experiment for the samples that have been processed by Salmon. - """ + """Run tximport on an experiment for the samples that have been processed by Salmon.""" if options["experiment_accession"] is None: logger.error("The --experiment-accession argument must be provided") sys.exit(1) diff --git a/workers/data_refinery_workers/processors/no_op.py b/workers/data_refinery_workers/processors/no_op.py index 636d99be8..bc37935a3 100644 --- a/workers/data_refinery_workers/processors/no_op.py +++ b/workers/data_refinery_workers/processors/no_op.py @@ -22,8 +22,7 @@ def _prepare_files(job_context: Dict) -> Dict: - """A processor which takes externally-processed sample data and makes it smashable. - """ + """A processor which takes externally-processed sample data and makes it smashable.""" try: original_file = job_context["original_files"][0] sample0 = job_context["samples"][0] @@ -167,7 +166,7 @@ def _prepare_files(job_context: Dict) -> Dict: def _convert_genes(job_context: Dict) -> Dict: - """ Dispatches to the appropriate gene converter""" + """Dispatches to the appropriate gene converter""" sample0 = job_context["samples"][0] if sample0.manufacturer == "ILLUMINA": @@ -177,7 +176,7 @@ def _convert_genes(job_context: Dict) -> Dict: def _convert_affy_genes(job_context: Dict) -> Dict: - """ Convert to Ensembl genes if we can""" + """Convert to Ensembl genes if we can""" if "internal_accession" not in job_context or not job_context["internal_accession"]: error_msg = ( @@ -258,7 +257,7 @@ def _convert_affy_genes(job_context: Dict) -> Dict: def _convert_illumina_genes(job_context: Dict) -> Dict: - """ Convert to Ensembl genes if we can""" + """Convert to Ensembl genes if we can""" all_databases = { "HOMO_SAPIENS": [ @@ -267,7 +266,11 @@ def _convert_illumina_genes(job_context: Dict) -> Dict: "illuminaHumanv3", "illuminaHumanv4", ], - "MUS_MUSCULUS": ["illuminaMousev1", "illuminaMousev1p1", "illuminaMousev2",], + "MUS_MUSCULUS": [ + "illuminaMousev1", + "illuminaMousev1p1", + "illuminaMousev2", + ], "RATTUS_NORVEGICUS": ["illuminaRatv1"], } @@ -362,7 +365,7 @@ def _convert_illumina_genes(job_context: Dict) -> Dict: def _create_result(job_context: Dict) -> Dict: - """ Create the actual Result object""" + """Create the actual Result object""" # This is a NO-OP, but we make a ComputationalResult regardless. result = ComputationalResult() @@ -408,7 +411,7 @@ def _create_result(job_context: Dict) -> Dict: def check_output_quality(output_file_path: str): - """ Verify our output file meets spec """ + """Verify our output file meets spec""" try: with open(output_file_path, "r") as tsv_in: tsv_in = csv.reader(tsv_in, delimiter="\t") diff --git a/workers/data_refinery_workers/processors/smasher.py b/workers/data_refinery_workers/processors/smasher.py index da9c5c485..fa832925f 100644 --- a/workers/data_refinery_workers/processors/smasher.py +++ b/workers/data_refinery_workers/processors/smasher.py @@ -327,7 +327,9 @@ def _upload(job_context: Dict) -> Dict: # Note that file expiry is handled by the S3 object lifecycle, # managed by terraform. s3_client.upload_file( - job_context["output_file"], RESULTS_BUCKET, output_filename, + job_context["output_file"], + RESULTS_BUCKET, + output_filename, ) except Exception: raise utils.ProcessorJobError( @@ -484,13 +486,29 @@ def _notify_send_email(job_context): # Provide the contents of the email. client.send_email( - Destination={"ToAddresses": [RECIPIENT,], "BccAddresses": [SLACK_CCDL_EMAIL,],}, + Destination={ + "ToAddresses": [ + RECIPIENT, + ], + "BccAddresses": [ + SLACK_CCDL_EMAIL, + ], + }, Message={ "Body": { - "Html": {"Charset": CHARSET, "Data": FORMATTED_HTML,}, - "Text": {"Charset": CHARSET, "Data": BODY_TEXT,}, + "Html": { + "Charset": CHARSET, + "Data": FORMATTED_HTML, + }, + "Text": { + "Charset": CHARSET, + "Data": BODY_TEXT, + }, + }, + "Subject": { + "Charset": CHARSET, + "Data": SUBJECT, }, - "Subject": {"Charset": CHARSET, "Data": SUBJECT,}, }, Source=SENDER, ) diff --git a/workers/data_refinery_workers/processors/test_illumina.py b/workers/data_refinery_workers/processors/test_illumina.py index de2ff9d0e..7bccadecd 100644 --- a/workers/data_refinery_workers/processors/test_illumina.py +++ b/workers/data_refinery_workers/processors/test_illumina.py @@ -318,7 +318,10 @@ def test_illumina_quoted_row_names(self): "filename": "GSE33814_trimmed_non-normalized.txt", "absolute_file_path": "/home/user/data_store/raw/TEST/ILLUMINA/GSE33814_trimmed_non-normalized.txt", "organism": organism, - "samples": [("GSM836222", "IMGUS_32"), ("GSM836223", "IMGUS_33"),], + "samples": [ + ("GSM836222", "IMGUS_32"), + ("GSM836223", "IMGUS_33"), + ], } ) @@ -357,12 +360,16 @@ def test_illumina_rows_starting_with_whitespace(self): ( "GSM3071991", "MCF-7 KLHDC7B siRNA knockdown control", - {"description": ["SAMPLE 1"],}, + { + "description": ["SAMPLE 1"], + }, ), ( "GSM3071992", "MCF-7 KLHDC7B siRNA knockdown", - {"description": ["SAMPLE 2"],}, + { + "description": ["SAMPLE 2"], + }, ), ], } @@ -420,7 +427,9 @@ def test_illumina_no_pvalue(self): "filename": "GSE41355_non-normalized.txt", "absolute_file_path": "/home/user/data_store/raw/TEST/ILLUMINA/GSE41355_non-normalized.txt", "organism": organism, - "samples": [("GSM1015436", "IRF3/7 DKO 2"),], + "samples": [ + ("GSM1015436", "IRF3/7 DKO 2"), + ], } ) @@ -445,7 +454,13 @@ def test_illumina_id_ref_column_with_whitespace(self): "absolute_file_path": "/home/user/data_store/raw/TEST/ILLUMINA/GSE100301_non-normalized.txt", "organism": organism, "samples": [ - ("GSM2677583", "22Rv1-tetO-Gal4, replicate 1", {"description": ["SAMPLE 1"],},), + ( + "GSM2677583", + "22Rv1-tetO-Gal4, replicate 1", + { + "description": ["SAMPLE 1"], + }, + ), ], } ) diff --git a/workers/data_refinery_workers/processors/test_janitor.py b/workers/data_refinery_workers/processors/test_janitor.py index a3ba2aa3a..fb755ca8e 100644 --- a/workers/data_refinery_workers/processors/test_janitor.py +++ b/workers/data_refinery_workers/processors/test_janitor.py @@ -79,7 +79,7 @@ class JanitorTestCase(TestCase): @tag("janitor") @patch("data_refinery_workers.processors.janitor.batch.describe_jobs") def test_janitor(self, mock_describe_jobs): - """ Main tester. """ + """Main tester.""" job = prepare_job() mock_describe_jobs.return_value = {"jobs": [{"jobId": "running_job", "status": "RUNNING"}]} diff --git a/workers/data_refinery_workers/processors/test_salmon.py b/workers/data_refinery_workers/processors/test_salmon.py index afe00ca03..ff390915c 100644 --- a/workers/data_refinery_workers/processors/test_salmon.py +++ b/workers/data_refinery_workers/processors/test_salmon.py @@ -496,8 +496,7 @@ def test_salmon_quant_two_samples_single_read(self): @tag("salmon") def test_set_tximport_inputs(self): - """"Tests that tximport only considers RNA-Seq samples from GEO. - """ + """ "Tests that tximport only considers RNA-Seq samples from GEO.""" # Create one experiment and two related samples, based on: # https://www.ncbi.nlm.nih.gov/sra/?term=SRP040623 # (We don't need any original files because @@ -1070,8 +1069,7 @@ def test_early_tximport(self): @tag("salmon") def test_version_filter(self): - """Tests that we don't run tximport on old salmon versions. - """ + """Tests that we don't run tximport on old salmon versions.""" # Accessions SRR5125616-SRR5125620 don't exist in SRA, but we # don't actually want to process them so it's okay. incomplete_accessions = [ diff --git a/workers/data_refinery_workers/processors/test_transcriptome_index.py b/workers/data_refinery_workers/processors/test_transcriptome_index.py index fb1187b73..c549afa5f 100644 --- a/workers/data_refinery_workers/processors/test_transcriptome_index.py +++ b/workers/data_refinery_workers/processors/test_transcriptome_index.py @@ -121,7 +121,10 @@ def test_process_gtf(self): job_context = transcriptome_index._process_gtf(job_context) transcript_to_gene_ids = pd.read_csv( - job_context["genes_to_transcripts_path"], sep="\t", index_col=1, names=["Gene"], + job_context["genes_to_transcripts_path"], + sep="\t", + index_col=1, + names=["Gene"], )["Gene"] self.assertEqual(transcript_to_gene_ids.get("ENST00000480647", None), "ENSG00000041988") diff --git a/workers/data_refinery_workers/processors/tximport.py b/workers/data_refinery_workers/processors/tximport.py index 7395815c2..9df86c0f0 100644 --- a/workers/data_refinery_workers/processors/tximport.py +++ b/workers/data_refinery_workers/processors/tximport.py @@ -20,14 +20,13 @@ def _set_job_prefix(job_context: Dict) -> Dict: - """ Sets the `job_dir_prefix` value in the job context object.""" + """Sets the `job_dir_prefix` value in the job context object.""" job_context["job_dir_prefix"] = JOB_DIR_PREFIX + str(job_context["job_id"]) return job_context def _prepare_files(job_context: Dict) -> Dict: - """Moves the file(s) from the raw directory to the temp directory. - """ + """Moves the file(s) from the raw directory to the temp directory.""" logger.debug("Preparing files..") # Create a directory specific to this processor job. From f1b1c06ee75d91a97fa40c2276c3d7b937431a72 Mon Sep 17 00:00:00 2001 From: Arkadii Yakovets Date: Thu, 8 Sep 2022 18:12:39 -0700 Subject: [PATCH 012/220] Port Python script to Django command. - Introduce AccessionBacklogEntry model. - Clean up command flags. - Get previous accessions from the DB. - --- .../migrations/0071_accessionbacklogentry.py | 38 + .../data_refinery_common/models/accession.py | 82 +- .../gatherer/__init__.py | 0 .../gatherer/management/__init__.py | 0 .../gatherer/management/commands/__init__.py | 0 .../management/commands/gather_accessions.py | 731 ++++++++++++++++++ foreman/data_refinery_foreman/settings.py | 17 +- foreman/dockerfiles/Dockerfile.foreman | 2 + 8 files changed, 856 insertions(+), 14 deletions(-) create mode 100644 common/data_refinery_common/migrations/0071_accessionbacklogentry.py create mode 100644 foreman/data_refinery_foreman/gatherer/__init__.py create mode 100644 foreman/data_refinery_foreman/gatherer/management/__init__.py create mode 100644 foreman/data_refinery_foreman/gatherer/management/commands/__init__.py create mode 100644 foreman/data_refinery_foreman/gatherer/management/commands/gather_accessions.py diff --git a/common/data_refinery_common/migrations/0071_accessionbacklogentry.py b/common/data_refinery_common/migrations/0071_accessionbacklogentry.py new file mode 100644 index 000000000..86c04daed --- /dev/null +++ b/common/data_refinery_common/migrations/0071_accessionbacklogentry.py @@ -0,0 +1,38 @@ +# Generated by Django 3.2.7 on 2022-09-07 19:31 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ("data_refinery_common", "0070_auto_20211208_2118"), + ] + + operations = [ + migrations.CreateModel( + name="AccessionBacklogEntry", + fields=[ + ( + "id", + models.AutoField( + auto_created=True, + primary_key=True, + serialize=False, + verbose_name="ID", + ), + ), + ("code", models.TextField(unique=True)), + ("created_at", models.DateTimeField(auto_now_add=True)), + ("last_modified_at", models.DateTimeField(auto_now=True)), + ("organism", models.TextField()), + ("published_date", models.DateTimeField()), + ("sample_count", models.PositiveIntegerField(default=0)), + ("source", models.TextField()), + ("technology", models.TextField()), + ], + options={ + "db_table": "accession_backlog", + }, + ), + ] diff --git a/common/data_refinery_common/models/accession.py b/common/data_refinery_common/models/accession.py index dc93cfd88..6ac62da9f 100644 --- a/common/data_refinery_common/models/accession.py +++ b/common/data_refinery_common/models/accession.py @@ -1,18 +1,16 @@ +from datetime import datetime + from django.db import models +from django.utils import timezone -class Accession(models.Model): - """Accession model.""" +class AccessionBacklogEntry(models.Model): + """Accession backlog entry model.""" class Meta: - constraints = ( - models.UniqueConstraint( - fields=("code", "source", "technology"), name="unique_accession" - ), - ) - db_table = "accessions" - - code = models.TextField() + db_table = "accession_backlog" + + code = models.TextField(unique=True) created_at = models.DateTimeField(auto_now_add=True) last_modified_at = models.DateTimeField(auto_now=True) organism = models.TextField() @@ -20,3 +18,67 @@ class Meta: sample_count = models.PositiveIntegerField(default=0) source = models.TextField() technology = models.TextField() + + def __eq__(self, other: object) -> bool: + """Returns True if two objects are equal. Otherwise returns False.""" + return isinstance(other, AccessionBacklogEntry) and self.code == other.code + + def __hash__(self) -> int: + """Returns accession object unique hash value.""" + return hash(self.code) + + def __str__(self) -> str: + """Returns accession default string representation.""" + return ", ".join((self.code, self.technology, self.source, str(self.published_date.date()))) + + @staticmethod + def create_from_ma_ae_entry(entry): + """Creates accession object from MicroArray ArrayExpress entry.""" + accession = AccessionBacklogEntry() + accession.code = entry["accession"] + accession.source = "ebi_biostudies" + accession.technology = "microarray" + + if "organism" in entry: + accession.organism = entry["organism"] + if "release_date" in entry: + accession.published_date = timezone.make_aware( + datetime.strptime(entry["release_date"], "%Y-%m-%d") + ) + + return accession + + @staticmethod + def create_from_ma_geo_entry(entry): + """Creates accession object from MicroArray GEO meta DB entry.""" + accession = AccessionBacklogEntry() + accession.code = entry["gse"] + accession.source = "geo_meta_db" + accession.technology = "microarray" + + if "organism" in entry: + accession.organism = entry["organism"].lower() + if "submission_date" in entry: + + accession.published_date = timezone.make_aware( + datetime.strptime(entry["submission_date"], "%Y-%m-%d") + ) + + return accession + + @staticmethod + def create_from_rnaseq_entry(entry): + """Creates accession object from RNA-Seq entry.""" + accession = AccessionBacklogEntry() + accession.code = entry["secondary_study_accession"] + accession.source = "ebi_ena_portal" + accession.technology = "rna-seq" + + if "scientific_name" in entry: + accession.organism = entry["scientific_name"].lower() + if "first_public" in entry: + accession.published_date = timezone.make_aware( + datetime.strptime(entry["first_public"], "%Y-%m-%d") + ) + + return accession diff --git a/foreman/data_refinery_foreman/gatherer/__init__.py b/foreman/data_refinery_foreman/gatherer/__init__.py new file mode 100644 index 000000000..e69de29bb diff --git a/foreman/data_refinery_foreman/gatherer/management/__init__.py b/foreman/data_refinery_foreman/gatherer/management/__init__.py new file mode 100644 index 000000000..e69de29bb diff --git a/foreman/data_refinery_foreman/gatherer/management/commands/__init__.py b/foreman/data_refinery_foreman/gatherer/management/commands/__init__.py new file mode 100644 index 000000000..e69de29bb diff --git a/foreman/data_refinery_foreman/gatherer/management/commands/gather_accessions.py b/foreman/data_refinery_foreman/gatherer/management/commands/gather_accessions.py new file mode 100644 index 000000000..c4808a191 --- /dev/null +++ b/foreman/data_refinery_foreman/gatherer/management/commands/gather_accessions.py @@ -0,0 +1,731 @@ +"""MicroArray (ArrayExpress, GEO) and RNA-Seq accession gathering automation. +Data sources: + - https://www.ebi.ac.uk/biostudies/help (MicroArray ArrayExpress). + - local SQLite meta DB from https://www.bioconductor.org/packages/release/bioc/html/GEOmetadb.html + (MicroArray GEO). + - https://www.ebi.ac.uk/ena/portal/api/ (RNA-Seq). +""" + +import argparse +import logging +import os +import re +import sqlite3 +from datetime import datetime +from http.client import RemoteDisconnected +from json.decoder import JSONDecodeError +from typing import List, Set +from urllib.parse import quote + +from django.core.management.base import BaseCommand + +import requests +from requests.exceptions import ConnectionError, ConnectTimeout +from retrying import retry +from urllib3.exceptions import ProtocolError + +from data_refinery_common.logging import get_and_configure_logger +from data_refinery_common.models.accession import AccessionBacklogEntry +from data_refinery_common.models.experiment import Experiment + +log = get_and_configure_logger(__name__) + + +class Command(BaseCommand): + """Creates agents and runs actual accession gathering.""" + + RE_ACCESSION = re.compile(r"(\D+)(\d+)") + RE_DATE = re.compile(r"\d{4}-\d{2}-\d{2}") + + # TODO(ark): remove after upgrade to python3.8 where parser argument + # "extend" action is directly available. + # https://docs.python.org/3.8/library/argparse.html#action + class ExtendAction(argparse.Action): + def __call__(self, parser, namespace, values, option_string=None): + items = getattr(namespace, self.dest) or [] + items.extend(values) + setattr(namespace, self.dest, items) + + def add_arguments(self, parser) -> None: + parser.register("action", "extend", Command.ExtendAction) + + parser.add_argument( + "--ae-id", + action="extend", + nargs="+", + type=str, + help="ArrayExpress ID(s) to use for filtering.", + ) + parser.add_argument( + "--ae-ids-file", + type=str, + help="Path to a file containing ArrayExpress ID(s) to use for filtering.", + ) + parser.add_argument("-c", "--count", type=int, help="Number of accessions to collect.") + parser.add_argument( + "-d", + "--dry-run", + action="store_true", + default=False, + help="Do not write the result to the database.", + ) + parser.add_argument( + "-e", + "--exclude-previous", + action="store_true", + default=True, + help="Exclude previously gathered or surveyed accessions.", + ) + parser.add_argument( + "-ne", + "--no-exclude-previous", + action="store_false", + default=False, + dest="exclude_previous", + help="Do not exclude previously gathered or surveyed accessions.", + ) + parser.add_argument( + "--gpl-id", + action="extend", + nargs="+", + type=str, + help="GEO platform ID(s) to use for filtering.", + ) + parser.add_argument( + "--gpl-ids-file", + type=str, + help="Path to a file containing GEO platform ID(s) to use for filtering.", + ) + parser.add_argument( + "-k", + "--keyword", + type=str, + help="Keyword to use for filtering.", + ) + parser.add_argument( + "-m", + "--microarray", + action="store_true", + default=False, + help="Collect MicroArray accessions.", + ) + parser.add_argument( + "-o", "--organism", type=str, help="Organism name to use for filtering." + ) + parser.add_argument( + "-r", + "--rna-seq", + action="store_true", + default=False, + help="Collect RNA-Seq accessions.", + ) + parser.add_argument( + "-s", + "--since", + type=str, + required=True, + help="Collect accessions made public on or after this date.", + ) + parser.add_argument( + "--taxon-id", + action="extend", + nargs="+", + type=int, + help="Taxon ID(s) to use for filtering.", + ) + parser.add_argument( + "--taxon-ids-file", + type=str, + help="Path to a file containing taxon ID(s) to use for filtering.", + ) + parser.add_argument( + "-u", + "--until", + type=str, + help="Collect accessions made public before or on this date.", + ) + parser.add_argument( + "-lv", + "--log-verbose", + action="store_true", + default=False, + help="Enable verbose log output.", + ) + + def set_verbosity_level(self, options) -> None: + """Configures log verbosity level.""" + if options["log_verbose"]: + log.addHandler(logging.StreamHandler()) + log.setLevel(logging.DEBUG) + else: + log.setLevel(logging.ERROR) + + def validate_args(self, options) -> None: + """Validates arguments.""" + if not options["microarray"] and not options["rna_seq"]: + exit("Either --microarray or --rna-seq must be specified.") + + errors = list() + since = options["since"] + until = options["until"] + if not self.RE_DATE.match(since): + errors.append('The -s, --since value must match "YYYY-MM-DD" format.') + if until and not self.RE_DATE.match(until): + errors.append('The -u, --until value must match "YYYY-MM-DD" format.') + if since and until and since > until: + errors.append("The -s, --since date must be earlier than -u, --until date.") + + keyword = options["keyword"] + organism = options["organism"] + if options["microarray"]: + ae_id = options["ae_id"] or options["ae_ids_file"] + gpl_id = options["gpl_id"] or options["gpl_ids_file"] + ids = ae_id or gpl_id + invalid_options_message = ( + "Exactly one of the keyword [-k, --keyword], organism [-o, --organism] or " + "ArrayExpress ID(s) [--ae-id, --ae-ids-file] / GEO platform ID(s) " + "[--gpl-id, --gpl-ids-file] must be specified." + ) + elif options["rna_seq"]: + taxon_id = options["taxon_id"] or options["taxon_ids_file"] + ids = taxon_id + invalid_options_message = ( + "Exactly one of the keyword [-k, --keyword], organism [-o, --organism] " + "or taxon ID(s) [--taxon-id, --taxon-ids-file] must be specified." + ) + + if len([option for option in (ids, keyword, organism) if option]) != 1: + errors.append(invalid_options_message) + + if errors: + exit("\n".join(errors)) + + def handle(self, *args, **options): + """Runs the accession gathering process.""" + self.validate_args(options) + self.set_verbosity_level(options) + + agents = list() + if options["rna_seq"]: + agents.append(RNASeqAccessionAgent(options)) + elif options["microarray"]: + if ( + options["ae_id"] + or options["ae_ids_file"] + or options["keyword"] + or options["organism"] + ): + agents.append(MicroArrayExpressAccessionAgent(options)) + if ( + options["gpl_id"] + or options["gpl_ids_file"] + or options["keyword"] + or options["organism"] + ): + agents.append(MicroArrayGEOAccessionAgent(options)) + + entries = set() + for agent in agents: + entries.update(agent.collect_data()) + + entries = sorted( # Sort the resulting list. + (entry for entry in entries if self.RE_ACCESSION.match(entry.code)), + key=lambda entry: ( + self.RE_ACCESSION.match(entry.code).group(1), + int(self.RE_ACCESSION.match(entry.code).group(2)), + ), + ) + # Limit the number of output entries. + entries = entries[: options["count"]] if options["count"] else entries + + if options["dry_run"]: + if entries: + output = "\n".join((str(entry) for entry in entries)) + else: + output = "No accessions found." + print(output) + else: + AccessionBacklogEntry.objects.bulk_create(entries) + + +class AccessionAgentBase: + "Accession agent base class." + + previous_accessions = set() + retry_params = { + "retry_on_exception": lambda e: isinstance( + e, (ConnectionError, ConnectTimeout, ProtocolError, RemoteDisconnected) + ), + "stop_max_attempt_number": 5, + "wait_exponential_multiplier": 1000, # Seconds. + "wait_exponential_max": 16000, # Seconds. + } + + def __init__(self, options) -> None: + """Populates args and values for major variables.""" + self.options = options + self.count = options["count"] + self.keyword = options["keyword"] + self.organism = options["organism"] + self.since = options["since"] + self.until = options["until"] or datetime.now().strftime("%Y-%m-%d") + + self.populate_previous_accessions() + + def build_query(self): + """Returns query/query dict depending on the accession data source.""" + raise NotImplementedError + + def collect_data(self): + """Generates resulting entry collection.""" + raise NotImplementedError + + def fetch_data(self): + """Fetches data from an external or local data source.""" + raise NotImplementedError + + def get_ids(self): + """Gets IDs for query filtering depending on the accession technology.""" + raise NotImplementedError + + def populate_previous_accessions(self) -> None: + """Populates previous accession set from a provided excluded ids file.""" + if not self.options["exclude_previous"] or self.previous_accessions: + return + + # Gathered accessions. + self.previous_accessions.update( + (entry["code"] for entry in AccessionBacklogEntry.objects.values("code")) + ) + + # Surveyed accessions. + experiments = Experiment.objects.values("accession_code", "alternate_accession_code") + self.previous_accessions.update( + (experiment["accession_code"] for experiment in experiments) + ) + self.previous_accessions.update( + (experiment["alternate_accession_code"] for experiment in experiments) + ) + + +class MicroArrayExpressAccessionAgent(AccessionAgentBase): + """ + MicroArray ArrayExpress accession gathering agent. The data is fetched from + the BioStudies database. See https://www.ebi.ac.uk/biostudies/help and + https://www.ebi.ac.uk/biostudies/arrayexpress/help#programmatic for more + information about the API endpoints. + """ + + def __init__(self, options) -> None: + super().__init__(options) + + self.data_chunk_size = 100 + self.data_url = "https://www.ebi.ac.uk/biostudies/api/v1/search" + self.ids = self.get_ids() + + def build_query(self) -> dict: + """Returns a query dict for getting array/organism specific accessions.""" + query_dict = { + "directsub": "true", + "page": 1, + "pageSize": self.data_chunk_size, + "release_date": f"[{self.since} TO {self.until}]", + "type": "study", + } + + if self.ids: + # TODO(ark): figure out better way of array filtering. + # Also make sure it's equivalent to the array filtering in this query + # https://github.com/AlexsLemonade/accession_retrieval/blob/master/experiment_accession_retrieval.R#L208 + query_dict.update({"content": ", ".join(self.ids)}) + elif self.keyword: + query_dict.update({"content": self.keyword}) + elif self.organism: + query_dict.update({"organism": f'"{self.organism}"'}) + + return query_dict + + def collect_data(self) -> Set[str]: + """Gets new accessions from EBI Biostudies API.""" + accessions = set() + + if self.ids: + message = ( + "Getting MicroArray ArrayExpress entries by " + f"ArrayExpress ID(s): {', '.join(self.ids)} for [{self.since} - {self.until}] " + "range." + ) + elif self.keyword: + message = ( + "Getting MicroArray ArrayExpress entries by " + f'"{self.keyword}" keyword for [{self.since} - {self.until}] range.' + ) + elif self.organism: + message = ( + "Getting MicroArray ArrayExpress entries by " + f'"{self.organism}" organism for [{self.since} - {self.until}] range.' + ) + else: + return accessions + + log.debug(message) + accessions.update(self.fetch_data()) + + return accessions + + def fetch_data(self) -> Set[str]: + """Retrieves accessions from API search endpoint.""" + + @retry(**self.retry_params) + def get_response(url, **kwargs): + """Gets response from an API endpoint.""" + return requests.get(url, **kwargs) + + accessions = set() + + is_done = False + params = self.build_query() + while not is_done: + range_start = (params["page"] - 1) * params["pageSize"] + 1 + range_end = (params["page"] - 1) * params["pageSize"] + self.data_chunk_size + log.debug(f"Processing entries {range_start} - {range_end}") + + response = get_response(self.data_url, params=params) + entries = response.json().get("hits") + if entries: + entries = ( + AccessionBacklogEntry.create_from_ma_ae_entry(entry) for entry in entries + ) + params["page"] += 1 + else: + is_done = True + + if self.previous_accessions: + entries = (entry for entry in entries if entry.code not in self.previous_accessions) + accessions.update(entries) + + # Quit after getting a sufficient amount of accessions. + if self.count and len(accessions) >= self.count: + is_done = True + + return accessions + + def get_ids(self) -> List[str]: + """Returns a combined list of passed ArrayExpress IDs.""" + ids = set() + + if self.options["ae_id"]: + ids.update(self.options["ae_id"]) + + if self.options["ae_ids_file"]: + with open(self.options["ae_ids_file"]) as ae_ids_file: + ids.update((ae_id.strip() for ae_id in ae_ids_file.readlines())) + + return sorted(ids) + + +class MicroArrayGEOAccessionAgent(AccessionAgentBase): + """ + MicroArray GEO accession gathering agent. The data is fetched from a local + SQLite GEO meta database. + """ + + def __init__(self, options) -> None: + super().__init__(options) + + self.db_path = "data/microarray/GEOmetadb.sqlite" + self.ids = self.get_ids() + + def build_query(self) -> str: + """Returns a query for getting GEO accessions from the local SQLite meta DB.""" + tables = [ + f"SELECT *", + "FROM gse_gpl", + "JOIN gpl ON gse_gpl.gpl=gpl.gpl", + "JOIN gse ON gse.gse=gse_gpl.gse", + "GROUP BY gse_gpl.gse", + ] + + conditions = [ + f"HAVING gse.submission_date >= '{self.since}'", + f"gse.submission_date <= '{self.until}'", + ] + + if self.ids: + gpl_ids = (f"'{gpl_id}'" for gpl_id in self.ids) + conditions.append(f"gse_gpl.gpl IN ({', '.join(gpl_ids)})") + elif self.organism: + conditions.append(f"lower(organism)='{self.organism.lower()}'") + + return f"{' '.join(tables)} {' AND '.join(conditions)}" + + def collect_data(self) -> Set[str]: + """Gets new accessions from GEO database.""" + accessions = set() + + if self.ids: + message = ( + "Getting MicroArray GEO entries by GEO platform ID(s): " + f"{', '.join(self.ids)} for [{self.since} - {self.until}] range." + ) + elif self.keyword: + message = ( + f'Getting MicroArray GEO entries by "{self.keyword}" keyword ' + f"for [{self.since} - {self.until}] range." + ) + elif self.organism: + message = ( + f'Getting MicroArray GEO entries by "{self.organism}" organism ' + f"for [{self.since} - {self.until}] range." + ) + else: + return accessions + + log.debug(message) + accessions.update(self.fetch_data()) + + return accessions + + def fetch_data(self) -> Set[str]: + """Retrieves accessions from the GEO meta DB.""" + + def match_keyword(row): + """ + Returns True if `row` matches `self.keyword` based regex. + Otherwise returns False. + """ + return re_keyword.match(" ".join((str(c) for c in row if c))) + + accessions = set() + + if not os.path.exists(self.db_path): + log.error("GEO meta database doesn't exist.") + return accessions + + connection = sqlite3.connect(self.db_path) + connection.row_factory = sqlite3.Row + connection.text_factory = lambda b: b.decode(errors="ignore") + entries = connection.execute(self.build_query()).fetchall() + connection.close() + + if self.keyword: + re_keyword = re.compile(f".*{self.keyword}.*", re.IGNORECASE) # Keyword regex. + entries = filter(match_keyword, entries) + + entries = ({key.lower(): entry[key] for key in entry.keys()} for entry in entries) + entries = set((AccessionBacklogEntry.create_from_ma_geo_entry(entry) for entry in entries)) + + if self.previous_accessions: + entries = (entry for entry in entries if entry.code not in self.previous_accessions) + accessions.update(entries) + + return accessions + + def get_ids(self) -> List[str]: + """Returns a combined list of passed GEO platform IDs.""" + ids = set() + + if self.options["gpl_id"]: + ids.update(self.options["gpl_id"]) + + if self.options["gpl_ids_file"]: + with open(self.options["gpl_ids_file"]) as gpl_ids_file: + ids.update((gpl_id.strip() for gpl_id in gpl_ids_file.readlines())) + + return sorted(ids) + + +class RNASeqAccessionAgent(AccessionAgentBase): + """ + RNA-Seq accession gathering agent. The data is fetched from + The European Nucleotide Archive (ENA) Portal. + See https://www.ebi.ac.uk/ena/portal/api/ for more information about the API + endpoints. + """ + + def __init__(self, options) -> None: + super().__init__(options) + + self.data_chunk_size = 10000 + self.data_url = "https://www.ebi.ac.uk/ena/portal/api/search" + self.ids = self.get_ids() + + def build_query(self, taxon_id: str = None) -> str: + """ + Returns a query to use for getting specific taxon ID accessions. + Some special characters must remain unquoted. + """ + + AND = " AND " + OR = " OR " + instrument_models = ( + "HiSeq X Five", + "HiSeq X Ten", + "Illumina Genome Analyzer II", + "Illumina Genome Analyzer IIx", + "Illumina Genome Analyzer", + "Illumina HiScanSQ", + "Illumina HiSeq 1000", + "Illumina HiSeq 1500", + "Illumina HiSeq 2000", + "Illumina HiSeq 2500", + "Illumina HiSeq 3000", + "Illumina HiSeq 4000", + "Illumina MiSeq", + "Illumina NovaSeq 6000", + "Ion Torrent Proton", + "Ion Torrent S5 XL", + "Ion Torrent S5", + "NextSeq 500", + "NextSeq 550", + ) + + instrument_models = OR.join((f'instrument_model="{im}"' for im in instrument_models)) + conditions = [ + # Relevant date fields: collection_date, collection_date_submitted, + # first_public, last_updated. + f"first_public >= {self.since}", + f"first_public <= {self.until}", + f"({instrument_models})", + 'library_source="TRANSCRIPTOMIC"', + 'library_strategy="RNA-Seq"', + ] + + if taxon_id: + conditions.append(f"tax_eq({taxon_id})") + elif self.keyword: + search_fields = ( + "assembly_software", + "bio_material", + "center_name", + "collected_by", + "experiment_title", + "host_body_site", + "instrument_model", + "instrument_platform", + "library_name", + "project_name", + "sample_title", + "sequencing_method", + "study_title", + ) + search_fields = OR.join( + (f'{sf}="*{self.keyword}*"' for sf in search_fields) + ) # Keyword regex. + conditions.append(f"({search_fields})") + elif self.organism: + # `host`: Natural (as opposed to laboratory) host to the organism from which sample + # was obtained. + # `host_scientific_name`: Scientific name of the natural (as opposed to laboratory) + # host to the organism from which sample was obtained. + # `scientific_name` Scientific name of the organism from which the sample was derived. + # Neither `host_scientific_name` nor `scientific_name` available for search. + # https://www.ebi.ac.uk/ena/portal/api/searchFields?dataPortal=ena&format=json&result=read_study + conditions.append(f'host="{self.organism}"') + + return quote(AND.join(conditions), safe='*()-="<>/ ') # Must remain unquoted. + + def collect_data(self) -> Set[str]: + """Gets new accessions from EBI ENA API.""" + accessions = set() + + if self.ids: + log.debug( + f"Getting RNA-Seq entries by taxon ID(s): " + f"{', '.join((str(idx) for idx in self.ids))} for [{self.since} - {self.until}] range." + ) + total = len(self.ids) + for idx, taxon_id in enumerate(self.ids): + if self.count and len(accessions) >= self.count: + break + + if total > 1: + log.debug(f"Getting entries for taxon ID {taxon_id}, {idx + 1} of {total}.") + accessions.update(self.fetch_data(taxon_id=taxon_id)) + elif self.keyword: + log.debug( + f'Getting RNA-Seq entries by "{self.keyword}" keyword ' + f"for [{self.since} - {self.until}] range." + ) + accessions.update(self.fetch_data()) + elif self.organism: + log.debug( + f'Getting entries by "{self.organism}" organism ' + f"for [{self.since} - {self.until}] range." + ) + accessions.update(self.fetch_data()) + + return accessions + + def fetch_data(self, taxon_id=None) -> Set[str]: + """ + Retrieves accessions from API search endpoint. + The API allows to set limit to 0 (get all in one request) but we do + it in a paginated fashion with `self.data_chunk_size` as a page size. + """ + + @retry(**self.retry_params) + def get_response(url, **kwargs): + """Gets response from an API endpoint.""" + return requests.post(url, **kwargs) + + accessions = set() + + fields = [ + "first_public", + "scientific_name", + "secondary_study_accession", + ] # For DRP/ERP/SRP-prefixed accessions. + data = { + "dataPortal": "ena", + # TODO(ark): add excludeAccessions/excludeAccessionType support. + "fields": ",".join(fields), # Use "all" to get all fields. + "format": "json", + "limit": self.data_chunk_size, + "offset": 0, + "query": self.build_query(taxon_id=taxon_id), + "result": "read_study", + "sortFields": fields, + } + + is_done = False + while not is_done: + log.debug( + f"Processing entries {data['offset'] + 1} - {data['offset'] + self.data_chunk_size}" + ) + entries = () + try: + response = get_response(self.data_url, data=data) + entries = response.json() + # TODO(ark): add `organism` when -o, --organism flag is used. + entries = ( + AccessionBacklogEntry.create_from_rnaseq_entry(entry) for entry in entries + ) + except JSONDecodeError: + is_done = True + except TypeError: + log.error(f"Couldn't get data from {self.data_url}. Response: {entries}") + data["offset"] += self.data_chunk_size + + if self.previous_accessions: + entries = (entry for entry in entries if entry.code not in self.previous_accessions) + accessions.update(entries) + + # Quit after getting a sufficient amount of accessions. + if self.count and len(accessions) >= self.count: + is_done = True + + return accessions + + def get_ids(self) -> List[str]: + """Returns a combined list of passed taxon IDs.""" + ids = set() + + if self.options["taxon_id"]: + ids.update(self.options["taxon_id"]) + + if self.options["taxon_ids_file"]: + with open(self.options["taxon_ids_file"]) as taxon_id_file: + ids.update((taxon_id.strip() for taxon_id in taxon_id_file.readlines())) + + return sorted(ids) diff --git a/foreman/data_refinery_foreman/settings.py b/foreman/data_refinery_foreman/settings.py index 7a489facc..5fea76d71 100644 --- a/foreman/data_refinery_foreman/settings.py +++ b/foreman/data_refinery_foreman/settings.py @@ -47,6 +47,7 @@ "data_refinery_common", "data_refinery_foreman.surveyor", "data_refinery_foreman.foreman", + "data_refinery_foreman.gatherer", "raven.contrib.django.raven_compat", "computedfields", ] @@ -108,10 +109,18 @@ # https://docs.djangoproject.com/en/1.10/ref/settings/#auth-password-validators AUTH_PASSWORD_VALIDATORS = [ - {"NAME": "django.contrib.auth.password_validation.UserAttributeSimilarityValidator",}, - {"NAME": "django.contrib.auth.password_validation.MinimumLengthValidator",}, - {"NAME": "django.contrib.auth.password_validation.CommonPasswordValidator",}, - {"NAME": "django.contrib.auth.password_validation.NumericPasswordValidator",}, + { + "NAME": "django.contrib.auth.password_validation.UserAttributeSimilarityValidator", + }, + { + "NAME": "django.contrib.auth.password_validation.MinimumLengthValidator", + }, + { + "NAME": "django.contrib.auth.password_validation.CommonPasswordValidator", + }, + { + "NAME": "django.contrib.auth.password_validation.NumericPasswordValidator", + }, ] diff --git a/foreman/dockerfiles/Dockerfile.foreman b/foreman/dockerfiles/Dockerfile.foreman index 8c09c6888..929ef2476 100644 --- a/foreman/dockerfiles/Dockerfile.foreman +++ b/foreman/dockerfiles/Dockerfile.foreman @@ -8,6 +8,8 @@ RUN apt-get -y install apt-fast RUN apt-fast update -qq && \ apt-fast install -y \ + gcc \ + libpq-dev \ python3 \ python3-pip From 47d13d431917c78ef2d42e548b00bbca54b4a2b6 Mon Sep 17 00:00:00 2001 From: Arkadii Yakovets Date: Fri, 9 Sep 2022 12:12:16 -0700 Subject: [PATCH 013/220] Add accession gathering cron job. --- config/rna_seq_taxon_ids.txt | 247 ++++++++++++++++++ .../commands/gather_weekly_accessions.py | 30 +++ .../foreman-server-instance-user-data.tpl.sh | 1 + 3 files changed, 278 insertions(+) create mode 100644 config/rna_seq_taxon_ids.txt create mode 100644 foreman/data_refinery_foreman/gatherer/management/commands/gather_weekly_accessions.py diff --git a/config/rna_seq_taxon_ids.txt b/config/rna_seq_taxon_ids.txt new file mode 100644 index 000000000..6d284d3cc --- /dev/null +++ b/config/rna_seq_taxon_ids.txt @@ -0,0 +1,247 @@ +2769 +3055 +3218 +3625 +3641 +3659 +3694 +3702 +3708 +3711 +3712 +3760 +3847 +3871 +3880 +3885 +3914 +3983 +4039 +4113 +4232 +4528 +4529 +4530 +4533 +4536 +4537 +4538 +4555 +4558 +4572 +4577 +4641 +4932 +6183 +6238 +6239 +6279 +6282 +6334 +6412 +6669 +6945 +7029 +7070 +7091 +7159 +7165 +7176 +7209 +7217 +7220 +7222 +7227 +7230 +7234 +7237 +7238 +7240 +7244 +7245 +7260 +7375 +7425 +7460 +7574 +7668 +7719 +7757 +7764 +7897 +7918 +7955 +7994 +8010 +8049 +8078 +8083 +8090 +8128 +8154 +8364 +8502 +8508 +8663 +8790 +8823 +8824 +8839 +8996 +9031 +9103 +9157 +9305 +9315 +9358 +9361 +9365 +9371 +9483 +9516 +9531 +9545 +9565 +9601 +9606 +9615 +9627 +9646 +9669 +9685 +9739 +9785 +9796 +9813 +9823 +9913 +9925 +9940 +9978 +9986 +10089 +10090 +10093 +10096 +10103 +10116 +10141 +10228 +12957 +13146 +13249 +13333 +13616 +13686 +13735 +15368 +27923 +28377 +28743 +29159 +29730 +29760 +30195 +30464 +30538 +30611 +30732 +31033 +31234 +32264 +32473 +32507 +33528 +34506 +34740 +34839 +35525 +36166 +37347 +37548 +37653 +37682 +38626 +39758 +40148 +40149 +40217 +42254 +43151 +43179 +44394 +45157 +45351 +48698 +48701 +48709 +49451 +51511 +52283 +52904 +54126 +55577 +57577 +59463 +59689 +59729 +59894 +60711 +61819 +61853 +64144 +65489 +69293 +72004 +72036 +74533 +77166 +77586 +79684 +80972 +81970 +83772 +88036 +93934 +94237 +96440 +99883 +106582 +106734 +113334 +113540 +121225 +126957 +130081 +132113 +132585 +132908 +135651 +136037 +139649 +144197 +157791 +158441 +161767 +161934 +179676 +198806 +205130 +210143 +217634 +225164 +230844 +242159 +281687 +283909 +299123 +303518 +315563 +321398 +328815 +336983 +400682 +407821 +409849 +452646 +669202 diff --git a/foreman/data_refinery_foreman/gatherer/management/commands/gather_weekly_accessions.py b/foreman/data_refinery_foreman/gatherer/management/commands/gather_weekly_accessions.py new file mode 100644 index 000000000..35b27a5ab --- /dev/null +++ b/foreman/data_refinery_foreman/gatherer/management/commands/gather_weekly_accessions.py @@ -0,0 +1,30 @@ +"""A wrapper for `gather_accessions` command which can be executed as a cron job.""" + +from datetime import datetime + +from django.core.management import call_command +from django.core.management.base import BaseCommand + +from dateutil.relativedelta import SU, relativedelta + + +class Command(BaseCommand): + """Gathers accessions published since previous Sunday.""" + + def handle(self, *args, **options): + """Runs accession gathering.""" + last_sunday = (datetime.now() - relativedelta(weekday=SU(-1))).strftime("%Y-%m-%d") + + # TODO(ark): make the command process all sources within a single run. + call_command( + "gather_accessions", + "--microarray", + since=last_sunday, + organism="homo sapiens", + ) + call_command( + "gather_accessions", + "--rna-seq", + since=last_sunday, + taxon_ids_file="config/rna_seq_taxon_ids.txt", + ) diff --git a/infrastructure/foreman-configuration/foreman-server-instance-user-data.tpl.sh b/infrastructure/foreman-configuration/foreman-server-instance-user-data.tpl.sh index e77541c75..f14e9bcc1 100644 --- a/infrastructure/foreman-configuration/foreman-server-instance-user-data.tpl.sh +++ b/infrastructure/foreman-configuration/foreman-server-instance-user-data.tpl.sh @@ -114,6 +114,7 @@ crontab -l > tempcron cat <> tempcron 0 12 * * MON /bin/bash /home/ubuntu/run_cron_job_test.sh affymetrix check_brainarray_gene_agreement >> /var/log/cron_job_tests.log 2>&1 0 12 * * MON /bin/bash /home/ubuntu/run_cron_job_test.sh affymetrix check_tx_index_transcript_agreement >> /var/log/cron_job_tests.log 2>&1 +0 12 * * SUN /bin/bash /home/ubuntu/run_management_command.sh gather_weekly_accessions >> /var/log/gather_weekly_accessions.log 2>&1 EOF # install new cron file crontab tempcron From 9e520a0e0834368830fa73e409cd23c29de01587 Mon Sep 17 00:00:00 2001 From: Arkadii Yakovets Date: Tue, 13 Sep 2022 17:12:41 -0700 Subject: [PATCH 014/220] Address review comments. --- .../migrations/0071_auto_20220901_1653.py | 44 -- ...klogentry.py => 0071_gatheredaccession.py} | 6 +- .../data_refinery_common/models/__init__.py | 2 +- .../{accession.py => gathered_accession.py} | 20 +- .../gatherer/agents/__init__.py | 0 .../gatherer/agents/base.py | 79 +++ .../gatherer/agents/microarray_ae.py | 126 ++++ .../gatherer/agents/microarray_geo.py | 123 ++++ .../gatherer/agents/rna_seq.py | 204 ++++++ .../management/commands/gather_accessions.py | 643 +++--------------- 10 files changed, 626 insertions(+), 621 deletions(-) delete mode 100644 common/data_refinery_common/migrations/0071_auto_20220901_1653.py rename common/data_refinery_common/migrations/{0071_accessionbacklogentry.py => 0071_gatheredaccession.py} (88%) rename common/data_refinery_common/models/{accession.py => gathered_accession.py} (84%) create mode 100644 foreman/data_refinery_foreman/gatherer/agents/__init__.py create mode 100644 foreman/data_refinery_foreman/gatherer/agents/base.py create mode 100644 foreman/data_refinery_foreman/gatherer/agents/microarray_ae.py create mode 100644 foreman/data_refinery_foreman/gatherer/agents/microarray_geo.py create mode 100644 foreman/data_refinery_foreman/gatherer/agents/rna_seq.py diff --git a/common/data_refinery_common/migrations/0071_auto_20220901_1653.py b/common/data_refinery_common/migrations/0071_auto_20220901_1653.py deleted file mode 100644 index c7d3b0b63..000000000 --- a/common/data_refinery_common/migrations/0071_auto_20220901_1653.py +++ /dev/null @@ -1,44 +0,0 @@ -# Generated by Django 3.2.7 on 2022-09-01 16:53 - -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ("data_refinery_common", "0070_auto_20211208_2118"), - ] - - operations = [ - migrations.CreateModel( - name="Accession", - fields=[ - ( - "id", - models.AutoField( - auto_created=True, - primary_key=True, - serialize=False, - verbose_name="ID", - ), - ), - ("code", models.TextField()), - ("created_at", models.DateTimeField(auto_now_add=True)), - ("last_modified_at", models.DateTimeField(auto_now=True)), - ("organism", models.TextField()), - ("published_date", models.DateTimeField()), - ("sample_count", models.PositiveIntegerField(default=0)), - ("source", models.TextField()), - ("technology", models.TextField()), - ], - options={ - "db_table": "accessions", - }, - ), - migrations.AddConstraint( - model_name="accession", - constraint=models.UniqueConstraint( - fields=("code", "source", "technology"), name="unique_accession" - ), - ), - ] diff --git a/common/data_refinery_common/migrations/0071_accessionbacklogentry.py b/common/data_refinery_common/migrations/0071_gatheredaccession.py similarity index 88% rename from common/data_refinery_common/migrations/0071_accessionbacklogentry.py rename to common/data_refinery_common/migrations/0071_gatheredaccession.py index 86c04daed..a1740d96e 100644 --- a/common/data_refinery_common/migrations/0071_accessionbacklogentry.py +++ b/common/data_refinery_common/migrations/0071_gatheredaccession.py @@ -1,4 +1,4 @@ -# Generated by Django 3.2.7 on 2022-09-07 19:31 +# Generated by Django 3.2.7 on 2022-09-13 18:14 from django.db import migrations, models @@ -11,7 +11,7 @@ class Migration(migrations.Migration): operations = [ migrations.CreateModel( - name="AccessionBacklogEntry", + name="GatheredAccession", fields=[ ( "id", @@ -32,7 +32,7 @@ class Migration(migrations.Migration): ("technology", models.TextField()), ], options={ - "db_table": "accession_backlog", + "db_table": "gathered_accessions", }, ), ] diff --git a/common/data_refinery_common/models/__init__.py b/common/data_refinery_common/models/__init__.py index 8e9564153..2b544765d 100644 --- a/common/data_refinery_common/models/__init__.py +++ b/common/data_refinery_common/models/__init__.py @@ -1,4 +1,3 @@ -from data_refinery_common.models.accession import Accession # noqa from data_refinery_common.models.api_token import APIToken # noqa from data_refinery_common.models.associations.compendium_result_organism_association import ( # noqa CompendiumResultOrganismAssociation, @@ -46,6 +45,7 @@ from data_refinery_common.models.dataset_annotation import DatasetAnnotation # noqa from data_refinery_common.models.experiment import Experiment # noqa from data_refinery_common.models.experiment_annotation import ExperimentAnnotation # noqa +from data_refinery_common.models.gathered_accession import GatheredAccession # noqa from data_refinery_common.models.jobs.downloader_job import DownloaderJob # noqa from data_refinery_common.models.jobs.processor_job import ProcessorJob # noqa from data_refinery_common.models.jobs.survey_job import SurveyJob # noqa diff --git a/common/data_refinery_common/models/accession.py b/common/data_refinery_common/models/gathered_accession.py similarity index 84% rename from common/data_refinery_common/models/accession.py rename to common/data_refinery_common/models/gathered_accession.py index 6ac62da9f..04b084533 100644 --- a/common/data_refinery_common/models/accession.py +++ b/common/data_refinery_common/models/gathered_accession.py @@ -4,11 +4,11 @@ from django.utils import timezone -class AccessionBacklogEntry(models.Model): - """Accession backlog entry model.""" +class GatheredAccession(models.Model): + """Gathered accession model.""" class Meta: - db_table = "accession_backlog" + db_table = "gathered_accessions" code = models.TextField(unique=True) created_at = models.DateTimeField(auto_now_add=True) @@ -21,7 +21,7 @@ class Meta: def __eq__(self, other: object) -> bool: """Returns True if two objects are equal. Otherwise returns False.""" - return isinstance(other, AccessionBacklogEntry) and self.code == other.code + return isinstance(other, GatheredAccession) and self.code == other.code def __hash__(self) -> int: """Returns accession object unique hash value.""" @@ -32,15 +32,15 @@ def __str__(self) -> str: return ", ".join((self.code, self.technology, self.source, str(self.published_date.date()))) @staticmethod - def create_from_ma_ae_entry(entry): + def create_from_ma_ae_entry(entry, organism=None): """Creates accession object from MicroArray ArrayExpress entry.""" - accession = AccessionBacklogEntry() + accession = GatheredAccession() accession.code = entry["accession"] accession.source = "ebi_biostudies" accession.technology = "microarray" - if "organism" in entry: - accession.organism = entry["organism"] + if organism: + accession.organism = organism if "release_date" in entry: accession.published_date = timezone.make_aware( datetime.strptime(entry["release_date"], "%Y-%m-%d") @@ -51,7 +51,7 @@ def create_from_ma_ae_entry(entry): @staticmethod def create_from_ma_geo_entry(entry): """Creates accession object from MicroArray GEO meta DB entry.""" - accession = AccessionBacklogEntry() + accession = GatheredAccession() accession.code = entry["gse"] accession.source = "geo_meta_db" accession.technology = "microarray" @@ -69,7 +69,7 @@ def create_from_ma_geo_entry(entry): @staticmethod def create_from_rnaseq_entry(entry): """Creates accession object from RNA-Seq entry.""" - accession = AccessionBacklogEntry() + accession = GatheredAccession() accession.code = entry["secondary_study_accession"] accession.source = "ebi_ena_portal" accession.technology = "rna-seq" diff --git a/foreman/data_refinery_foreman/gatherer/agents/__init__.py b/foreman/data_refinery_foreman/gatherer/agents/__init__.py new file mode 100644 index 000000000..e69de29bb diff --git a/foreman/data_refinery_foreman/gatherer/agents/base.py b/foreman/data_refinery_foreman/gatherer/agents/base.py new file mode 100644 index 000000000..3754a4068 --- /dev/null +++ b/foreman/data_refinery_foreman/gatherer/agents/base.py @@ -0,0 +1,79 @@ +"""Abstract base class for accession gathering automation agents.""" + +from abc import ABC, abstractmethod +from datetime import datetime +from http.client import RemoteDisconnected + +from requests.exceptions import ConnectionError, ConnectTimeout +from urllib3.exceptions import ProtocolError + +from data_refinery_common.logging import get_and_configure_logger +from data_refinery_common.models.experiment import Experiment +from data_refinery_common.models.gathered_accession import GatheredAccession + +logger = get_and_configure_logger(__name__) + + +class AccessionAgentBase(ABC): + "Accession agent abstract base class." + + previous_accessions = set() + retry_params = { + "retry_on_exception": lambda e: isinstance( + e, (ConnectionError, ConnectTimeout, ProtocolError, RemoteDisconnected) + ), + "stop_max_attempt_number": 5, + "wait_exponential_multiplier": 1000, # Seconds. + "wait_exponential_max": 16000, # Seconds. + } + + def __init__(self, options) -> None: + """Populates args and values for major variables.""" + self.options = options + self.count = options["count"] + self.keyword = options["keyword"] + self.organism = options["organism"] + self.since = options["since"] + self.until = options["until"] or datetime.now().strftime("%Y-%m-%d") + + self.ids = self.get_ids() + self.populate_previous_accessions() + + @abstractmethod + def build_query(self): + """Returns query/query dict depending on the accession data source.""" + pass + + @abstractmethod + def collect_data(self): + """Generates resulting entry collection.""" + pass + + @abstractmethod + def fetch_data(self): + """Fetches data from an external or local data source.""" + pass + + @abstractmethod + def get_ids(self): + """Gets IDs for query filtering depending on the accession technology.""" + pass + + def populate_previous_accessions(self) -> None: + """Populates previous accession set from a provided excluded ids file.""" + if not self.options["exclude_previous"] or self.previous_accessions: + return + + # Gathered accessions. + self.previous_accessions.update( + (entry["code"] for entry in GatheredAccession.objects.values("code")) + ) + + # Surveyed accessions. + experiments = Experiment.objects.values("accession_code", "alternate_accession_code") + self.previous_accessions.update( + (experiment["accession_code"] for experiment in experiments) + ) + self.previous_accessions.update( + (experiment["alternate_accession_code"] for experiment in experiments) + ) diff --git a/foreman/data_refinery_foreman/gatherer/agents/microarray_ae.py b/foreman/data_refinery_foreman/gatherer/agents/microarray_ae.py new file mode 100644 index 000000000..b5314302b --- /dev/null +++ b/foreman/data_refinery_foreman/gatherer/agents/microarray_ae.py @@ -0,0 +1,126 @@ +"""MicroArray ArrayExpress accession gathering automation. +Data source: https://www.ebi.ac.uk/biostudies/help""" + +from typing import List, Set + +import requests +from retrying import retry + +from data_refinery_common.logging import get_and_configure_logger +from data_refinery_common.models.gathered_accession import GatheredAccession +from data_refinery_foreman.gatherer.agents.base import AccessionAgentBase + +logger = get_and_configure_logger(__name__) + + +class MicroArrayExpressAccessionAgent(AccessionAgentBase): + """ + MicroArray ArrayExpress accession gathering agent. The data is fetched from + the BioStudies database. See https://www.ebi.ac.uk/biostudies/help and + https://www.ebi.ac.uk/biostudies/arrayexpress/help#programmatic for more + information about the API endpoints. + """ + + DATA_CHUNK_SIZE = 100 + DATA_URL = "https://www.ebi.ac.uk/biostudies/api/v1/search" + + def build_query(self) -> dict: + """Returns a query dict for getting array/organism specific accessions.""" + query_dict = { + "directsub": "true", + "page": 1, + "pageSize": self.DATA_CHUNK_SIZE, + "release_date": f"[{self.since} TO {self.until}]", + "type": "study", + } + + if self.ids: + # TODO(ark): figure out better way of array filtering. + # Also make sure it's equivalent to the array filtering in this query + # https://github.com/AlexsLemonade/accession_retrieval/blob/master/experiment_accession_retrieval.R#L208 + query_dict.update({"content": ", ".join(self.ids)}) + elif self.keyword: + query_dict.update({"content": self.keyword}) + elif self.organism: + query_dict.update({"organism": f'"{self.organism}"'}) + + return query_dict + + def collect_data(self) -> Set[str]: + """Gets new accessions from EBI Biostudies API.""" + accessions = set() + + if self.ids: + message = ( + "Getting MicroArray ArrayExpress entries by " + f"ArrayExpress ID(s): {', '.join(self.ids)} for [{self.since} - {self.until}] " + "range." + ) + elif self.keyword: + message = ( + "Getting MicroArray ArrayExpress entries by " + f'"{self.keyword}" keyword for [{self.since} - {self.until}] range.' + ) + elif self.organism: + message = ( + "Getting MicroArray ArrayExpress entries by " + f'"{self.organism}" organism for [{self.since} - {self.until}] range.' + ) + else: + return accessions + + logger.debug(message) + accessions.update(self.fetch_data()) + + return accessions + + def fetch_data(self) -> Set[str]: + """Retrieves accessions from API search endpoint.""" + + @retry(**self.retry_params) + def get_response(url, **kwargs): + """Gets response from an API endpoint.""" + return requests.get(url, **kwargs) + + accessions = set() + + is_done = False + params = self.build_query() + while not is_done: + range_start = (params["page"] - 1) * params["pageSize"] + 1 + range_end = (params["page"] - 1) * params["pageSize"] + self.DATA_CHUNK_SIZE + logger.debug(f"Processing entries {range_start} - {range_end}") + + response = get_response(self.DATA_URL, params=params) + entries = response.json().get("hits") + if entries: + entries = ( + GatheredAccession.create_from_ma_ae_entry(entry, organism=self.organism) + for entry in entries + ) + params["page"] += 1 + else: + is_done = True + + if self.previous_accessions: + entries = (entry for entry in entries if entry.code not in self.previous_accessions) + accessions.update(entries) + + # Quit after getting a sufficient amount of accessions. + if self.count and len(accessions) >= self.count: + is_done = True + + return accessions + + def get_ids(self) -> List[str]: + """Returns a combined list of passed ArrayExpress IDs.""" + ids = set() + + if self.options["ae_id"]: + ids.update(self.options["ae_id"]) + + if self.options["ae_ids_file"]: + with open(self.options["ae_ids_file"]) as ae_ids_file: + ids.update((ae_id.strip() for ae_id in ae_ids_file.readlines())) + + return sorted(ids) diff --git a/foreman/data_refinery_foreman/gatherer/agents/microarray_geo.py b/foreman/data_refinery_foreman/gatherer/agents/microarray_geo.py new file mode 100644 index 000000000..975c715b3 --- /dev/null +++ b/foreman/data_refinery_foreman/gatherer/agents/microarray_geo.py @@ -0,0 +1,123 @@ +"""MicroArray GEO accession gathering automation. +Data source: local SQLite meta DB from https://www.bioconductor.org/packages/release/bioc/html/GEOmetadb.html""" + +import os +import re +import sqlite3 +from typing import List, Set + +from data_refinery_common.logging import get_and_configure_logger +from data_refinery_common.models.gathered_accession import GatheredAccession +from data_refinery_foreman.gatherer.agents.base import AccessionAgentBase + +logger = get_and_configure_logger(__name__) + + +class MicroArrayGEOAccessionAgent(AccessionAgentBase): + """ + MicroArray GEO accession gathering agent. The data is fetched from a local + SQLite GEO meta database. + """ + + # TODO(ark): move the DB file from Docker image to S3. + # Implement syncing procedure. + # Update URL once the original file is available again. + DB_PATH = "data/microarray/GEOmetadb.sqlite" + + def build_query(self) -> str: + """Returns a query for getting GEO accessions from the local SQLite meta DB.""" + tables = [ + "SELECT *", + "FROM gse_gpl", + "JOIN gpl ON gse_gpl.gpl=gpl.gpl", + "JOIN gse ON gse.gse=gse_gpl.gse", + "GROUP BY gse_gpl.gse", + ] + + conditions = [ + f"HAVING gse.submission_date >= '{self.since}'", + f"gse.submission_date <= '{self.until}'", + ] + + if self.ids: + gpl_ids = (f"'{gpl_id}'" for gpl_id in self.ids) + conditions.append(f"gse_gpl.gpl IN ({', '.join(gpl_ids)})") + elif self.organism: + conditions.append(f"lower(organism)='{self.organism.lower()}'") + + return f"{' '.join(tables)} {' AND '.join(conditions)}" + + def collect_data(self) -> Set[str]: + """Gets new accessions from GEO database.""" + accessions = set() + + if self.ids: + message = ( + "Getting MicroArray GEO entries by GEO platform ID(s): " + f"{', '.join(self.ids)} for [{self.since} - {self.until}] range." + ) + elif self.keyword: + message = ( + f'Getting MicroArray GEO entries by "{self.keyword}" keyword ' + f"for [{self.since} - {self.until}] range." + ) + elif self.organism: + message = ( + f'Getting MicroArray GEO entries by "{self.organism}" organism ' + f"for [{self.since} - {self.until}] range." + ) + else: + return accessions + + logger.debug(message) + accessions.update(self.fetch_data()) + + return accessions + + def fetch_data(self) -> Set[str]: + """Retrieves accessions from the GEO meta DB.""" + + def match_keyword(row): + """ + Returns True if `row` matches `self.keyword` based regex. + Otherwise returns False. + """ + return re_keyword.match(" ".join((str(c) for c in row if c))) + + accessions = set() + + if not os.path.exists(self.DB_PATH): + logger.error("GEO meta database doesn't exist.") + return accessions + + connection = sqlite3.connect(self.DB_PATH) + connection.row_factory = sqlite3.Row + connection.text_factory = lambda b: b.decode(errors="ignore") + entries = connection.execute(self.build_query()).fetchall() + connection.close() + + if self.keyword: + re_keyword = re.compile(f".*{self.keyword}.*", re.IGNORECASE) # Keyword regex. + entries = filter(match_keyword, entries) + + entries = ({key.lower(): entry[key] for key in entry.keys()} for entry in entries) + entries = set((GatheredAccession.create_from_ma_geo_entry(entry) for entry in entries)) + + if self.previous_accessions: + entries = (entry for entry in entries if entry.code not in self.previous_accessions) + accessions.update(entries) + + return accessions + + def get_ids(self) -> List[str]: + """Returns a combined list of passed GEO platform IDs.""" + ids = set() + + if self.options["gpl_id"]: + ids.update(self.options["gpl_id"]) + + if self.options["gpl_ids_file"]: + with open(self.options["gpl_ids_file"]) as gpl_ids_file: + ids.update((gpl_id.strip() for gpl_id in gpl_ids_file.readlines())) + + return sorted(ids) diff --git a/foreman/data_refinery_foreman/gatherer/agents/rna_seq.py b/foreman/data_refinery_foreman/gatherer/agents/rna_seq.py new file mode 100644 index 000000000..f9497f3ba --- /dev/null +++ b/foreman/data_refinery_foreman/gatherer/agents/rna_seq.py @@ -0,0 +1,204 @@ +"""RNA-Seq accession gathering automation. +Data source: https://www.ebi.ac.uk/ena/portal/api/""" + +from json.decoder import JSONDecodeError +from typing import List, Set +from urllib.parse import quote + +import requests +from retrying import retry + +from data_refinery_common.logging import get_and_configure_logger +from data_refinery_common.models.gathered_accession import GatheredAccession +from data_refinery_foreman.gatherer.agents.base import AccessionAgentBase + +logger = get_and_configure_logger(__name__) + + +class RNASeqAccessionAgent(AccessionAgentBase): + """ + RNA-Seq accession gathering agent. The data is fetched from + The European Nucleotide Archive (ENA) Portal. + See https://www.ebi.ac.uk/ena/portal/api/ for more information about the API + endpoints. + """ + + DATA_CHUNK_SIZE = 10000 + DATA_URL = "https://www.ebi.ac.uk/ena/portal/api/search" + + def build_query(self, taxon_id: str = None) -> str: + """ + Returns a query to use for getting specific taxon ID accessions. + Some special characters must remain unquoted. + """ + + AND = " AND " + OR = " OR " + instrument_models = ( + "HiSeq X Five", + "HiSeq X Ten", + "Illumina Genome Analyzer II", + "Illumina Genome Analyzer IIx", + "Illumina Genome Analyzer", + "Illumina HiScanSQ", + "Illumina HiSeq 1000", + "Illumina HiSeq 1500", + "Illumina HiSeq 2000", + "Illumina HiSeq 2500", + "Illumina HiSeq 3000", + "Illumina HiSeq 4000", + "Illumina MiSeq", + "Illumina NovaSeq 6000", + "Ion Torrent Proton", + "Ion Torrent S5 XL", + "Ion Torrent S5", + "NextSeq 500", + "NextSeq 550", + ) + + instrument_models = OR.join((f'instrument_model="{im}"' for im in instrument_models)) + conditions = [ + # Relevant date fields: collection_date, collection_date_submitted, + # first_public, last_updated. + f"first_public >= {self.since}", + f"first_public <= {self.until}", + f"({instrument_models})", + 'library_source="TRANSCRIPTOMIC"', + 'library_strategy="RNA-Seq"', + ] + + if taxon_id: + conditions.append(f"tax_eq({taxon_id})") + elif self.keyword: + search_fields = ( + "assembly_software", + "bio_material", + "center_name", + "collected_by", + "experiment_title", + "host_body_site", + "instrument_model", + "instrument_platform", + "library_name", + "project_name", + "sample_title", + "sequencing_method", + "study_title", + ) + search_fields = OR.join( + (f'{sf}="*{self.keyword}*"' for sf in search_fields) + ) # Keyword regex. + conditions.append(f"({search_fields})") + elif self.organism: + # `host`: Natural (as opposed to laboratory) host to the organism from which sample + # was obtained. + # `host_scientific_name`: Scientific name of the natural (as opposed to laboratory) + # host to the organism from which sample was obtained. + # `scientific_name` Scientific name of the organism from which the sample was derived. + # Neither `host_scientific_name` nor `scientific_name` available for search. + # https://www.ebi.ac.uk/ena/portal/api/searchFields?dataPortal=ena&format=json&result=read_study + conditions.append(f'host="{self.organism}"') + + return quote(AND.join(conditions), safe='*()-="<>/ ') # Must remain unquoted. + + def collect_data(self) -> Set[str]: + """Gets new accessions from EBI ENA API.""" + accessions = set() + + if self.ids: + logger.debug( + f"Getting RNA-Seq entries by taxon ID(s): " + f"{', '.join((str(i) for i in self.ids))} for [{self.since} - {self.until}] range." + ) + total = len(self.ids) + for idx, taxon_id in enumerate(self.ids): + if self.count and len(accessions) >= self.count: + break + + if total > 1: + logger.debug(f"Getting entries for taxon ID {taxon_id}, {idx + 1} of {total}.") + accessions.update(self.fetch_data(taxon_id=taxon_id)) + elif self.keyword: + logger.debug( + f'Getting RNA-Seq entries by "{self.keyword}" keyword ' + f"for [{self.since} - {self.until}] range." + ) + accessions.update(self.fetch_data()) + elif self.organism: + logger.debug( + f'Getting entries by "{self.organism}" organism ' + f"for [{self.since} - {self.until}] range." + ) + accessions.update(self.fetch_data()) + + return accessions + + def fetch_data(self, taxon_id=None) -> Set[str]: + """ + Retrieves accessions from API search endpoint. + The API allows to set limit to 0 (get all in one request) but we do + it in a paginated fashion with `self.DATA_CHUNK_SIZE` as a page size. + """ + + @retry(**self.retry_params) + def get_response(url, **kwargs): + """Gets response from an API endpoint.""" + return requests.post(url, **kwargs) + + accessions = set() + + fields = [ + "first_public", + "scientific_name", + "secondary_study_accession", + ] # For DRP/ERP/SRP-prefixed accessions. + data = { + "dataPortal": "ena", + # TODO(ark): add excludeAccessions/excludeAccessionType support. + "fields": ",".join(fields), # Use "all" to get all fields. + "format": "json", + "limit": self.DATA_CHUNK_SIZE, + "offset": 0, + "query": self.build_query(taxon_id=taxon_id), + "result": "read_study", + "sortFields": fields, + } + + is_done = False + while not is_done: + logger.debug( + f"Processing entries {data['offset'] + 1} - {data['offset'] + self.DATA_CHUNK_SIZE}" + ) + entries = () + try: + response = get_response(self.DATA_URL, data=data) + entries = response.json() + entries = (GatheredAccession.create_from_rnaseq_entry(entry) for entry in entries) + except JSONDecodeError: + is_done = True + except TypeError: + logger.error(f"Couldn't get data from {self.data_url}. Response: {entries}") + data["offset"] += self.DATA_CHUNK_SIZE + + if self.previous_accessions: + entries = (entry for entry in entries if entry.code not in self.previous_accessions) + accessions.update(entries) + + # Quit after getting a sufficient amount of accessions. + if self.count and len(accessions) >= self.count: + is_done = True + + return accessions + + def get_ids(self) -> List[str]: + """Returns a combined list of passed taxon IDs.""" + ids = set() + + if self.options["taxon_id"]: + ids.update(self.options["taxon_id"]) + + if self.options["taxon_ids_file"]: + with open(self.options["taxon_ids_file"]) as taxon_id_file: + ids.update((taxon_id.strip() for taxon_id in taxon_id_file.readlines())) + + return sorted(ids) diff --git a/foreman/data_refinery_foreman/gatherer/management/commands/gather_accessions.py b/foreman/data_refinery_foreman/gatherer/management/commands/gather_accessions.py index c4808a191..445245d3a 100644 --- a/foreman/data_refinery_foreman/gatherer/management/commands/gather_accessions.py +++ b/foreman/data_refinery_foreman/gatherer/management/commands/gather_accessions.py @@ -8,32 +8,27 @@ import argparse import logging -import os import re -import sqlite3 -from datetime import datetime -from http.client import RemoteDisconnected -from json.decoder import JSONDecodeError -from typing import List, Set -from urllib.parse import quote from django.core.management.base import BaseCommand -import requests -from requests.exceptions import ConnectionError, ConnectTimeout -from retrying import retry -from urllib3.exceptions import ProtocolError - from data_refinery_common.logging import get_and_configure_logger -from data_refinery_common.models.accession import AccessionBacklogEntry -from data_refinery_common.models.experiment import Experiment +from data_refinery_common.models.gathered_accession import GatheredAccession +from data_refinery_foreman.gatherer.agents.microarray_ae import MicroArrayExpressAccessionAgent +from data_refinery_foreman.gatherer.agents.microarray_geo import MicroArrayGEOAccessionAgent +from data_refinery_foreman.gatherer.agents.rna_seq import RNASeqAccessionAgent -log = get_and_configure_logger(__name__) +logger = get_and_configure_logger(__name__) class Command(BaseCommand): """Creates agents and runs actual accession gathering.""" + DATA_SOURCE_MA_AE = "microarray-ae" + DATA_SOURCE_MA_GEO = "microarray-geo" + DATA_SOURCE_RNA_SEQ = "rna-seq" + DATA_SOURCES = (DATA_SOURCE_MA_AE, DATA_SOURCE_MA_GEO, DATA_SOURCE_RNA_SEQ) + RE_ACCESSION = re.compile(r"(\D+)(\d+)") RE_DATE = re.compile(r"\d{4}-\d{2}-\d{2}") @@ -76,14 +71,6 @@ def add_arguments(self, parser) -> None: default=True, help="Exclude previously gathered or surveyed accessions.", ) - parser.add_argument( - "-ne", - "--no-exclude-previous", - action="store_false", - default=False, - dest="exclude_previous", - help="Do not exclude previously gathered or surveyed accessions.", - ) parser.add_argument( "--gpl-id", action="extend", @@ -103,21 +90,22 @@ def add_arguments(self, parser) -> None: help="Keyword to use for filtering.", ) parser.add_argument( - "-m", - "--microarray", + "-lv", + "--log-verbose", action="store_true", default=False, - help="Collect MicroArray accessions.", + help="Enable verbose log output.", ) parser.add_argument( - "-o", "--organism", type=str, help="Organism name to use for filtering." + "-ne", + "--no-exclude-previous", + action="store_false", + default=False, + dest="exclude_previous", + help="Do not exclude previously gathered or surveyed accessions.", ) parser.add_argument( - "-r", - "--rna-seq", - action="store_true", - default=False, - help="Collect RNA-Seq accessions.", + "-o", "--organism", type=str, help="Organism name to use for filtering." ) parser.add_argument( "-s", @@ -126,6 +114,14 @@ def add_arguments(self, parser) -> None: required=True, help="Collect accessions made public on or after this date.", ) + parser.add_argument( + "-src", + "--source", + type=str, + action="extend", + nargs="+", + help="Gather accessions from selected sources.", + ) parser.add_argument( "--taxon-id", action="extend", @@ -144,28 +140,19 @@ def add_arguments(self, parser) -> None: type=str, help="Collect accessions made public before or on this date.", ) - parser.add_argument( - "-lv", - "--log-verbose", - action="store_true", - default=False, - help="Enable verbose log output.", - ) def set_verbosity_level(self, options) -> None: """Configures log verbosity level.""" if options["log_verbose"]: - log.addHandler(logging.StreamHandler()) - log.setLevel(logging.DEBUG) + logger.addHandler(logging.StreamHandler()) + logger.setLevel(logging.DEBUG) else: - log.setLevel(logging.ERROR) + logger.setLevel(logging.ERROR) def validate_args(self, options) -> None: """Validates arguments.""" - if not options["microarray"] and not options["rna_seq"]: - exit("Either --microarray or --rna-seq must be specified.") - errors = list() + since = options["since"] until = options["until"] if not self.RE_DATE.match(since): @@ -177,52 +164,65 @@ def validate_args(self, options) -> None: keyword = options["keyword"] organism = options["organism"] - if options["microarray"]: - ae_id = options["ae_id"] or options["ae_ids_file"] - gpl_id = options["gpl_id"] or options["gpl_ids_file"] - ids = ae_id or gpl_id - invalid_options_message = ( - "Exactly one of the keyword [-k, --keyword], organism [-o, --organism] or " - "ArrayExpress ID(s) [--ae-id, --ae-ids-file] / GEO platform ID(s) " - "[--gpl-id, --gpl-ids-file] must be specified." - ) - elif options["rna_seq"]: - taxon_id = options["taxon_id"] or options["taxon_ids_file"] - ids = taxon_id - invalid_options_message = ( - "Exactly one of the keyword [-k, --keyword], organism [-o, --organism] " - "or taxon ID(s) [--taxon-id, --taxon-ids-file] must be specified." + sources = options["source"] or self.DATA_SOURCES + + for source in sources: + if source in self.DATA_SOURCES: + continue + errors.append( + f"Unknown source: {source}. Supported sources: {', '.join(self.DATA_SOURCES)}" ) - if len([option for option in (ids, keyword, organism) if option]) != 1: - errors.append(invalid_options_message) + if self.DATA_SOURCE_MA_AE in sources: + ids = options["ae_id"] or options["ae_ids_file"] + if not (ids or keyword or organism): + errors.append( + ( + "Exactly one of the keyword [-k, --keyword], organism [-o, --organism] or " + "ArrayExpress ID(s) [--ae-id, --ae-ids-file] must be specified for " + f"'{self.DATA_SOURCE_MA_AE}' source." + ) + ) + if self.DATA_SOURCE_MA_GEO in sources: + ids = options["gpl_id"] or options["gpl_ids_file"] + if not (ids or keyword or organism): + errors.append( + ( + "Exactly one of the keyword [-k, --keyword], organism [-o, --organism] or " + "GEO platform ID(s) [--gpl-id, --gpl-ids-file] must be specified for " + f"'{self.DATA_SOURCE_MA_GEO}' source." + ) + ) + if self.DATA_SOURCE_RNA_SEQ in sources: + ids = options["taxon_id"] or options["taxon_ids_file"] + if not (ids or keyword or organism): + errors.append( + ( + "Exactly one of the keyword [-k, --keyword], organism [-o, --organism] " + "or taxon ID(s) [--taxon-id, --taxon-ids-file] must be specified for " + f"'{self.DATA_SOURCE_RNA_SEQ}' source." + ) + ) if errors: exit("\n".join(errors)) def handle(self, *args, **options): - """Runs the accession gathering process.""" + """Creates agents and runs the accession gathering process.""" self.validate_args(options) self.set_verbosity_level(options) agents = list() - if options["rna_seq"]: + sources = options["source"] or self.DATA_SOURCES + + if self.DATA_SOURCE_RNA_SEQ in sources: agents.append(RNASeqAccessionAgent(options)) - elif options["microarray"]: - if ( - options["ae_id"] - or options["ae_ids_file"] - or options["keyword"] - or options["organism"] - ): - agents.append(MicroArrayExpressAccessionAgent(options)) - if ( - options["gpl_id"] - or options["gpl_ids_file"] - or options["keyword"] - or options["organism"] - ): - agents.append(MicroArrayGEOAccessionAgent(options)) + + if self.DATA_SOURCE_MA_AE in sources: + agents.append(MicroArrayExpressAccessionAgent(options)) + + if self.DATA_SOURCE_MA_GEO in sources: + agents.append(MicroArrayGEOAccessionAgent(options)) entries = set() for agent in agents: @@ -245,487 +245,4 @@ def handle(self, *args, **options): output = "No accessions found." print(output) else: - AccessionBacklogEntry.objects.bulk_create(entries) - - -class AccessionAgentBase: - "Accession agent base class." - - previous_accessions = set() - retry_params = { - "retry_on_exception": lambda e: isinstance( - e, (ConnectionError, ConnectTimeout, ProtocolError, RemoteDisconnected) - ), - "stop_max_attempt_number": 5, - "wait_exponential_multiplier": 1000, # Seconds. - "wait_exponential_max": 16000, # Seconds. - } - - def __init__(self, options) -> None: - """Populates args and values for major variables.""" - self.options = options - self.count = options["count"] - self.keyword = options["keyword"] - self.organism = options["organism"] - self.since = options["since"] - self.until = options["until"] or datetime.now().strftime("%Y-%m-%d") - - self.populate_previous_accessions() - - def build_query(self): - """Returns query/query dict depending on the accession data source.""" - raise NotImplementedError - - def collect_data(self): - """Generates resulting entry collection.""" - raise NotImplementedError - - def fetch_data(self): - """Fetches data from an external or local data source.""" - raise NotImplementedError - - def get_ids(self): - """Gets IDs for query filtering depending on the accession technology.""" - raise NotImplementedError - - def populate_previous_accessions(self) -> None: - """Populates previous accession set from a provided excluded ids file.""" - if not self.options["exclude_previous"] or self.previous_accessions: - return - - # Gathered accessions. - self.previous_accessions.update( - (entry["code"] for entry in AccessionBacklogEntry.objects.values("code")) - ) - - # Surveyed accessions. - experiments = Experiment.objects.values("accession_code", "alternate_accession_code") - self.previous_accessions.update( - (experiment["accession_code"] for experiment in experiments) - ) - self.previous_accessions.update( - (experiment["alternate_accession_code"] for experiment in experiments) - ) - - -class MicroArrayExpressAccessionAgent(AccessionAgentBase): - """ - MicroArray ArrayExpress accession gathering agent. The data is fetched from - the BioStudies database. See https://www.ebi.ac.uk/biostudies/help and - https://www.ebi.ac.uk/biostudies/arrayexpress/help#programmatic for more - information about the API endpoints. - """ - - def __init__(self, options) -> None: - super().__init__(options) - - self.data_chunk_size = 100 - self.data_url = "https://www.ebi.ac.uk/biostudies/api/v1/search" - self.ids = self.get_ids() - - def build_query(self) -> dict: - """Returns a query dict for getting array/organism specific accessions.""" - query_dict = { - "directsub": "true", - "page": 1, - "pageSize": self.data_chunk_size, - "release_date": f"[{self.since} TO {self.until}]", - "type": "study", - } - - if self.ids: - # TODO(ark): figure out better way of array filtering. - # Also make sure it's equivalent to the array filtering in this query - # https://github.com/AlexsLemonade/accession_retrieval/blob/master/experiment_accession_retrieval.R#L208 - query_dict.update({"content": ", ".join(self.ids)}) - elif self.keyword: - query_dict.update({"content": self.keyword}) - elif self.organism: - query_dict.update({"organism": f'"{self.organism}"'}) - - return query_dict - - def collect_data(self) -> Set[str]: - """Gets new accessions from EBI Biostudies API.""" - accessions = set() - - if self.ids: - message = ( - "Getting MicroArray ArrayExpress entries by " - f"ArrayExpress ID(s): {', '.join(self.ids)} for [{self.since} - {self.until}] " - "range." - ) - elif self.keyword: - message = ( - "Getting MicroArray ArrayExpress entries by " - f'"{self.keyword}" keyword for [{self.since} - {self.until}] range.' - ) - elif self.organism: - message = ( - "Getting MicroArray ArrayExpress entries by " - f'"{self.organism}" organism for [{self.since} - {self.until}] range.' - ) - else: - return accessions - - log.debug(message) - accessions.update(self.fetch_data()) - - return accessions - - def fetch_data(self) -> Set[str]: - """Retrieves accessions from API search endpoint.""" - - @retry(**self.retry_params) - def get_response(url, **kwargs): - """Gets response from an API endpoint.""" - return requests.get(url, **kwargs) - - accessions = set() - - is_done = False - params = self.build_query() - while not is_done: - range_start = (params["page"] - 1) * params["pageSize"] + 1 - range_end = (params["page"] - 1) * params["pageSize"] + self.data_chunk_size - log.debug(f"Processing entries {range_start} - {range_end}") - - response = get_response(self.data_url, params=params) - entries = response.json().get("hits") - if entries: - entries = ( - AccessionBacklogEntry.create_from_ma_ae_entry(entry) for entry in entries - ) - params["page"] += 1 - else: - is_done = True - - if self.previous_accessions: - entries = (entry for entry in entries if entry.code not in self.previous_accessions) - accessions.update(entries) - - # Quit after getting a sufficient amount of accessions. - if self.count and len(accessions) >= self.count: - is_done = True - - return accessions - - def get_ids(self) -> List[str]: - """Returns a combined list of passed ArrayExpress IDs.""" - ids = set() - - if self.options["ae_id"]: - ids.update(self.options["ae_id"]) - - if self.options["ae_ids_file"]: - with open(self.options["ae_ids_file"]) as ae_ids_file: - ids.update((ae_id.strip() for ae_id in ae_ids_file.readlines())) - - return sorted(ids) - - -class MicroArrayGEOAccessionAgent(AccessionAgentBase): - """ - MicroArray GEO accession gathering agent. The data is fetched from a local - SQLite GEO meta database. - """ - - def __init__(self, options) -> None: - super().__init__(options) - - self.db_path = "data/microarray/GEOmetadb.sqlite" - self.ids = self.get_ids() - - def build_query(self) -> str: - """Returns a query for getting GEO accessions from the local SQLite meta DB.""" - tables = [ - f"SELECT *", - "FROM gse_gpl", - "JOIN gpl ON gse_gpl.gpl=gpl.gpl", - "JOIN gse ON gse.gse=gse_gpl.gse", - "GROUP BY gse_gpl.gse", - ] - - conditions = [ - f"HAVING gse.submission_date >= '{self.since}'", - f"gse.submission_date <= '{self.until}'", - ] - - if self.ids: - gpl_ids = (f"'{gpl_id}'" for gpl_id in self.ids) - conditions.append(f"gse_gpl.gpl IN ({', '.join(gpl_ids)})") - elif self.organism: - conditions.append(f"lower(organism)='{self.organism.lower()}'") - - return f"{' '.join(tables)} {' AND '.join(conditions)}" - - def collect_data(self) -> Set[str]: - """Gets new accessions from GEO database.""" - accessions = set() - - if self.ids: - message = ( - "Getting MicroArray GEO entries by GEO platform ID(s): " - f"{', '.join(self.ids)} for [{self.since} - {self.until}] range." - ) - elif self.keyword: - message = ( - f'Getting MicroArray GEO entries by "{self.keyword}" keyword ' - f"for [{self.since} - {self.until}] range." - ) - elif self.organism: - message = ( - f'Getting MicroArray GEO entries by "{self.organism}" organism ' - f"for [{self.since} - {self.until}] range." - ) - else: - return accessions - - log.debug(message) - accessions.update(self.fetch_data()) - - return accessions - - def fetch_data(self) -> Set[str]: - """Retrieves accessions from the GEO meta DB.""" - - def match_keyword(row): - """ - Returns True if `row` matches `self.keyword` based regex. - Otherwise returns False. - """ - return re_keyword.match(" ".join((str(c) for c in row if c))) - - accessions = set() - - if not os.path.exists(self.db_path): - log.error("GEO meta database doesn't exist.") - return accessions - - connection = sqlite3.connect(self.db_path) - connection.row_factory = sqlite3.Row - connection.text_factory = lambda b: b.decode(errors="ignore") - entries = connection.execute(self.build_query()).fetchall() - connection.close() - - if self.keyword: - re_keyword = re.compile(f".*{self.keyword}.*", re.IGNORECASE) # Keyword regex. - entries = filter(match_keyword, entries) - - entries = ({key.lower(): entry[key] for key in entry.keys()} for entry in entries) - entries = set((AccessionBacklogEntry.create_from_ma_geo_entry(entry) for entry in entries)) - - if self.previous_accessions: - entries = (entry for entry in entries if entry.code not in self.previous_accessions) - accessions.update(entries) - - return accessions - - def get_ids(self) -> List[str]: - """Returns a combined list of passed GEO platform IDs.""" - ids = set() - - if self.options["gpl_id"]: - ids.update(self.options["gpl_id"]) - - if self.options["gpl_ids_file"]: - with open(self.options["gpl_ids_file"]) as gpl_ids_file: - ids.update((gpl_id.strip() for gpl_id in gpl_ids_file.readlines())) - - return sorted(ids) - - -class RNASeqAccessionAgent(AccessionAgentBase): - """ - RNA-Seq accession gathering agent. The data is fetched from - The European Nucleotide Archive (ENA) Portal. - See https://www.ebi.ac.uk/ena/portal/api/ for more information about the API - endpoints. - """ - - def __init__(self, options) -> None: - super().__init__(options) - - self.data_chunk_size = 10000 - self.data_url = "https://www.ebi.ac.uk/ena/portal/api/search" - self.ids = self.get_ids() - - def build_query(self, taxon_id: str = None) -> str: - """ - Returns a query to use for getting specific taxon ID accessions. - Some special characters must remain unquoted. - """ - - AND = " AND " - OR = " OR " - instrument_models = ( - "HiSeq X Five", - "HiSeq X Ten", - "Illumina Genome Analyzer II", - "Illumina Genome Analyzer IIx", - "Illumina Genome Analyzer", - "Illumina HiScanSQ", - "Illumina HiSeq 1000", - "Illumina HiSeq 1500", - "Illumina HiSeq 2000", - "Illumina HiSeq 2500", - "Illumina HiSeq 3000", - "Illumina HiSeq 4000", - "Illumina MiSeq", - "Illumina NovaSeq 6000", - "Ion Torrent Proton", - "Ion Torrent S5 XL", - "Ion Torrent S5", - "NextSeq 500", - "NextSeq 550", - ) - - instrument_models = OR.join((f'instrument_model="{im}"' for im in instrument_models)) - conditions = [ - # Relevant date fields: collection_date, collection_date_submitted, - # first_public, last_updated. - f"first_public >= {self.since}", - f"first_public <= {self.until}", - f"({instrument_models})", - 'library_source="TRANSCRIPTOMIC"', - 'library_strategy="RNA-Seq"', - ] - - if taxon_id: - conditions.append(f"tax_eq({taxon_id})") - elif self.keyword: - search_fields = ( - "assembly_software", - "bio_material", - "center_name", - "collected_by", - "experiment_title", - "host_body_site", - "instrument_model", - "instrument_platform", - "library_name", - "project_name", - "sample_title", - "sequencing_method", - "study_title", - ) - search_fields = OR.join( - (f'{sf}="*{self.keyword}*"' for sf in search_fields) - ) # Keyword regex. - conditions.append(f"({search_fields})") - elif self.organism: - # `host`: Natural (as opposed to laboratory) host to the organism from which sample - # was obtained. - # `host_scientific_name`: Scientific name of the natural (as opposed to laboratory) - # host to the organism from which sample was obtained. - # `scientific_name` Scientific name of the organism from which the sample was derived. - # Neither `host_scientific_name` nor `scientific_name` available for search. - # https://www.ebi.ac.uk/ena/portal/api/searchFields?dataPortal=ena&format=json&result=read_study - conditions.append(f'host="{self.organism}"') - - return quote(AND.join(conditions), safe='*()-="<>/ ') # Must remain unquoted. - - def collect_data(self) -> Set[str]: - """Gets new accessions from EBI ENA API.""" - accessions = set() - - if self.ids: - log.debug( - f"Getting RNA-Seq entries by taxon ID(s): " - f"{', '.join((str(idx) for idx in self.ids))} for [{self.since} - {self.until}] range." - ) - total = len(self.ids) - for idx, taxon_id in enumerate(self.ids): - if self.count and len(accessions) >= self.count: - break - - if total > 1: - log.debug(f"Getting entries for taxon ID {taxon_id}, {idx + 1} of {total}.") - accessions.update(self.fetch_data(taxon_id=taxon_id)) - elif self.keyword: - log.debug( - f'Getting RNA-Seq entries by "{self.keyword}" keyword ' - f"for [{self.since} - {self.until}] range." - ) - accessions.update(self.fetch_data()) - elif self.organism: - log.debug( - f'Getting entries by "{self.organism}" organism ' - f"for [{self.since} - {self.until}] range." - ) - accessions.update(self.fetch_data()) - - return accessions - - def fetch_data(self, taxon_id=None) -> Set[str]: - """ - Retrieves accessions from API search endpoint. - The API allows to set limit to 0 (get all in one request) but we do - it in a paginated fashion with `self.data_chunk_size` as a page size. - """ - - @retry(**self.retry_params) - def get_response(url, **kwargs): - """Gets response from an API endpoint.""" - return requests.post(url, **kwargs) - - accessions = set() - - fields = [ - "first_public", - "scientific_name", - "secondary_study_accession", - ] # For DRP/ERP/SRP-prefixed accessions. - data = { - "dataPortal": "ena", - # TODO(ark): add excludeAccessions/excludeAccessionType support. - "fields": ",".join(fields), # Use "all" to get all fields. - "format": "json", - "limit": self.data_chunk_size, - "offset": 0, - "query": self.build_query(taxon_id=taxon_id), - "result": "read_study", - "sortFields": fields, - } - - is_done = False - while not is_done: - log.debug( - f"Processing entries {data['offset'] + 1} - {data['offset'] + self.data_chunk_size}" - ) - entries = () - try: - response = get_response(self.data_url, data=data) - entries = response.json() - # TODO(ark): add `organism` when -o, --organism flag is used. - entries = ( - AccessionBacklogEntry.create_from_rnaseq_entry(entry) for entry in entries - ) - except JSONDecodeError: - is_done = True - except TypeError: - log.error(f"Couldn't get data from {self.data_url}. Response: {entries}") - data["offset"] += self.data_chunk_size - - if self.previous_accessions: - entries = (entry for entry in entries if entry.code not in self.previous_accessions) - accessions.update(entries) - - # Quit after getting a sufficient amount of accessions. - if self.count and len(accessions) >= self.count: - is_done = True - - return accessions - - def get_ids(self) -> List[str]: - """Returns a combined list of passed taxon IDs.""" - ids = set() - - if self.options["taxon_id"]: - ids.update(self.options["taxon_id"]) - - if self.options["taxon_ids_file"]: - with open(self.options["taxon_ids_file"]) as taxon_id_file: - ids.update((taxon_id.strip() for taxon_id in taxon_id_file.readlines())) - - return sorted(ids) + GatheredAccession.objects.bulk_create(entries) From 30434e042320e418774257cf494f49860be7f57e Mon Sep 17 00:00:00 2001 From: Arkadii Yakovets Date: Tue, 13 Sep 2022 17:17:19 -0700 Subject: [PATCH 015/220] Add a TODO. --- foreman/data_refinery_foreman/gatherer/agents/rna_seq.py | 1 + 1 file changed, 1 insertion(+) diff --git a/foreman/data_refinery_foreman/gatherer/agents/rna_seq.py b/foreman/data_refinery_foreman/gatherer/agents/rna_seq.py index f9497f3ba..f54ba570a 100644 --- a/foreman/data_refinery_foreman/gatherer/agents/rna_seq.py +++ b/foreman/data_refinery_foreman/gatherer/agents/rna_seq.py @@ -34,6 +34,7 @@ def build_query(self, taxon_id: str = None) -> str: AND = " AND " OR = " OR " + # TODO(ark): extract instrument models to a config file. instrument_models = ( "HiSeq X Five", "HiSeq X Ten", From 11cf3ea78695746fb5e636f7ab9466524ac5482a Mon Sep 17 00:00:00 2001 From: Arkadii Yakovets Date: Tue, 13 Sep 2022 18:24:33 -0700 Subject: [PATCH 016/220] Sync recent changes. --- .../management/commands/gather_weekly_accessions.py | 7 ------- 1 file changed, 7 deletions(-) diff --git a/foreman/data_refinery_foreman/gatherer/management/commands/gather_weekly_accessions.py b/foreman/data_refinery_foreman/gatherer/management/commands/gather_weekly_accessions.py index 35b27a5ab..648a71cce 100644 --- a/foreman/data_refinery_foreman/gatherer/management/commands/gather_weekly_accessions.py +++ b/foreman/data_refinery_foreman/gatherer/management/commands/gather_weekly_accessions.py @@ -15,16 +15,9 @@ def handle(self, *args, **options): """Runs accession gathering.""" last_sunday = (datetime.now() - relativedelta(weekday=SU(-1))).strftime("%Y-%m-%d") - # TODO(ark): make the command process all sources within a single run. call_command( "gather_accessions", - "--microarray", - since=last_sunday, organism="homo sapiens", - ) - call_command( - "gather_accessions", - "--rna-seq", since=last_sunday, taxon_ids_file="config/rna_seq_taxon_ids.txt", ) From 811b77ff78d303316d1c10beaff18584122b8e4b Mon Sep 17 00:00:00 2001 From: Arkadii Yakovets Date: Tue, 13 Sep 2022 18:37:09 -0700 Subject: [PATCH 017/220] Fix empty response issue. --- foreman/data_refinery_foreman/gatherer/agents/microarray_ae.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/foreman/data_refinery_foreman/gatherer/agents/microarray_ae.py b/foreman/data_refinery_foreman/gatherer/agents/microarray_ae.py index b5314302b..541bd86d2 100644 --- a/foreman/data_refinery_foreman/gatherer/agents/microarray_ae.py +++ b/foreman/data_refinery_foreman/gatherer/agents/microarray_ae.py @@ -92,7 +92,7 @@ def get_response(url, **kwargs): logger.debug(f"Processing entries {range_start} - {range_end}") response = get_response(self.DATA_URL, params=params) - entries = response.json().get("hits") + entries = response.json().get("hits", ()) if entries: entries = ( GatheredAccession.create_from_ma_ae_entry(entry, organism=self.organism) From 4ba5314bf1d7296b819227a9abbc05e7861bf6d6 Mon Sep 17 00:00:00 2001 From: Arkadii Yakovets Date: Wed, 14 Sep 2022 11:27:59 -0700 Subject: [PATCH 018/220] Add accession gathering logging. --- .../gatherer/agents/microarray_ae.py | 3 + .../gatherer/agents/microarray_geo.py | 3 + .../gatherer/agents/rna_seq.py | 3 + .../management/commands/gather_accessions.py | 67 +++++++++++-------- 4 files changed, 47 insertions(+), 29 deletions(-) diff --git a/foreman/data_refinery_foreman/gatherer/agents/microarray_ae.py b/foreman/data_refinery_foreman/gatherer/agents/microarray_ae.py index 541bd86d2..89fbe09f7 100644 --- a/foreman/data_refinery_foreman/gatherer/agents/microarray_ae.py +++ b/foreman/data_refinery_foreman/gatherer/agents/microarray_ae.py @@ -24,6 +24,9 @@ class MicroArrayExpressAccessionAgent(AccessionAgentBase): DATA_CHUNK_SIZE = 100 DATA_URL = "https://www.ebi.ac.uk/biostudies/api/v1/search" + def __str__(self): + return "MicroArray ArrayExpress accession agent" + def build_query(self) -> dict: """Returns a query dict for getting array/organism specific accessions.""" query_dict = { diff --git a/foreman/data_refinery_foreman/gatherer/agents/microarray_geo.py b/foreman/data_refinery_foreman/gatherer/agents/microarray_geo.py index 975c715b3..afb243854 100644 --- a/foreman/data_refinery_foreman/gatherer/agents/microarray_geo.py +++ b/foreman/data_refinery_foreman/gatherer/agents/microarray_geo.py @@ -24,6 +24,9 @@ class MicroArrayGEOAccessionAgent(AccessionAgentBase): # Update URL once the original file is available again. DB_PATH = "data/microarray/GEOmetadb.sqlite" + def __str__(self): + return "MicroArray GEO accession agent" + def build_query(self) -> str: """Returns a query for getting GEO accessions from the local SQLite meta DB.""" tables = [ diff --git a/foreman/data_refinery_foreman/gatherer/agents/rna_seq.py b/foreman/data_refinery_foreman/gatherer/agents/rna_seq.py index f54ba570a..cbb81c828 100644 --- a/foreman/data_refinery_foreman/gatherer/agents/rna_seq.py +++ b/foreman/data_refinery_foreman/gatherer/agents/rna_seq.py @@ -26,6 +26,9 @@ class RNASeqAccessionAgent(AccessionAgentBase): DATA_CHUNK_SIZE = 10000 DATA_URL = "https://www.ebi.ac.uk/ena/portal/api/search" + def __str__(self): + return "RNA-Seq accession agent" + def build_query(self, taxon_id: str = None) -> str: """ Returns a query to use for getting specific taxon ID accessions. diff --git a/foreman/data_refinery_foreman/gatherer/management/commands/gather_accessions.py b/foreman/data_refinery_foreman/gatherer/management/commands/gather_accessions.py index 445245d3a..b770aaeb4 100644 --- a/foreman/data_refinery_foreman/gatherer/management/commands/gather_accessions.py +++ b/foreman/data_refinery_foreman/gatherer/management/commands/gather_accessions.py @@ -7,12 +7,13 @@ """ import argparse -import logging import re from django.core.management.base import BaseCommand +from django.template.defaultfilters import pluralize from data_refinery_common.logging import get_and_configure_logger +from data_refinery_common.models import gathered_accession from data_refinery_common.models.gathered_accession import GatheredAccession from data_refinery_foreman.gatherer.agents.microarray_ae import MicroArrayExpressAccessionAgent from data_refinery_foreman.gatherer.agents.microarray_geo import MicroArrayGEOAccessionAgent @@ -89,13 +90,6 @@ def add_arguments(self, parser) -> None: type=str, help="Keyword to use for filtering.", ) - parser.add_argument( - "-lv", - "--log-verbose", - action="store_true", - default=False, - help="Enable verbose log output.", - ) parser.add_argument( "-ne", "--no-exclude-previous", @@ -141,14 +135,6 @@ def add_arguments(self, parser) -> None: help="Collect accessions made public before or on this date.", ) - def set_verbosity_level(self, options) -> None: - """Configures log verbosity level.""" - if options["log_verbose"]: - logger.addHandler(logging.StreamHandler()) - logger.setLevel(logging.DEBUG) - else: - logger.setLevel(logging.ERROR) - def validate_args(self, options) -> None: """Validates arguments.""" errors = list() @@ -210,7 +196,6 @@ def validate_args(self, options) -> None: def handle(self, *args, **options): """Creates agents and runs the accession gathering process.""" self.validate_args(options) - self.set_verbosity_level(options) agents = list() sources = options["source"] or self.DATA_SOURCES @@ -224,25 +209,49 @@ def handle(self, *args, **options): if self.DATA_SOURCE_MA_GEO in sources: agents.append(MicroArrayGEOAccessionAgent(options)) - entries = set() + gathered_accessions = set() + gathered_accessions_count = 0 for agent in agents: - entries.update(agent.collect_data()) + agent_accessions = agent.collect_data() + agent_accessions_count = len(agent_accessions) + + gathered_accessions.update(agent_accessions) + gathered_accessions_count += agent_accessions_count - entries = sorted( # Sort the resulting list. - (entry for entry in entries if self.RE_ACCESSION.match(entry.code)), - key=lambda entry: ( - self.RE_ACCESSION.match(entry.code).group(1), - int(self.RE_ACCESSION.match(entry.code).group(2)), + logger.info( + f"{agent} gathered {agent_accessions_count} " + f"new accession{pluralize(gathered_accessions_count)} since {options['since']}." + ) + + gathered_accessions = sorted( # Sort the resulting list. + (ga for ga in gathered_accessions if self.RE_ACCESSION.match(ga.code)), + key=lambda ga: ( + self.RE_ACCESSION.match(ga.code).group(1), + int(self.RE_ACCESSION.match(ga.code).group(2)), ), ) # Limit the number of output entries. - entries = entries[: options["count"]] if options["count"] else entries + gathered_accessions = ( + gathered_accessions[: options["count"]] if options["count"] else gathered_accessions + ) + + agents_count = len(agents) + logger.info( + f"{gathered_accessions_count} new accession{pluralize(gathered_accessions_count)} " + f"w{pluralize(gathered_accessions_count, 'as,ere')} gathered by {agents_count} " + f"accession agent{pluralize(agents_count)} since {options['since']}." + ) if options["dry_run"]: - if entries: - output = "\n".join((str(entry) for entry in entries)) + if gathered_accessions: + output = "\n".join((str(ga) for ga in gathered_accessions)) else: - output = "No accessions found." + output = "No new accessions gathered." print(output) else: - GatheredAccession.objects.bulk_create(entries) + GatheredAccession.objects.bulk_create(gathered_accessions) + added_accessions_count = len(gathered_accessions) + logger.info( + f"{added_accessions_count} new accession{pluralize(added_accessions_count)} " + f"w{pluralize(added_accessions_count, 'as,ere')} added to the database. " + ) From df14fe3d1e63991f681371e3ecf325e7a0d16edc Mon Sep 17 00:00:00 2001 From: Arkadii Yakovets Date: Wed, 14 Sep 2022 18:52:57 -0700 Subject: [PATCH 019/220] Address review comments. --- .../migrations/0071_gatheredaccession.py | 2 +- .../models/gathered_accession.py | 72 +++++++------------ .../gatherer/agents/base.py | 5 +- .../gatherer/agents/microarray_ae.py | 21 ++++-- .../gatherer/agents/microarray_geo.py | 23 ++++-- .../gatherer/agents/rna_seq.py | 24 +++++-- .../management/commands/gather_accessions.py | 60 ++++++++-------- 7 files changed, 112 insertions(+), 95 deletions(-) diff --git a/common/data_refinery_common/migrations/0071_gatheredaccession.py b/common/data_refinery_common/migrations/0071_gatheredaccession.py index a1740d96e..65d192b59 100644 --- a/common/data_refinery_common/migrations/0071_gatheredaccession.py +++ b/common/data_refinery_common/migrations/0071_gatheredaccession.py @@ -22,7 +22,7 @@ class Migration(migrations.Migration): verbose_name="ID", ), ), - ("code", models.TextField(unique=True)), + ("accession_code", models.TextField(unique=True)), ("created_at", models.DateTimeField(auto_now_add=True)), ("last_modified_at", models.DateTimeField(auto_now=True)), ("organism", models.TextField()), diff --git a/common/data_refinery_common/models/gathered_accession.py b/common/data_refinery_common/models/gathered_accession.py index 04b084533..e56ed615c 100644 --- a/common/data_refinery_common/models/gathered_accession.py +++ b/common/data_refinery_common/models/gathered_accession.py @@ -10,7 +10,7 @@ class GatheredAccession(models.Model): class Meta: db_table = "gathered_accessions" - code = models.TextField(unique=True) + accession_code = models.TextField(unique=True) created_at = models.DateTimeField(auto_now_add=True) last_modified_at = models.DateTimeField(auto_now=True) organism = models.TextField() @@ -21,64 +21,44 @@ class Meta: def __eq__(self, other: object) -> bool: """Returns True if two objects are equal. Otherwise returns False.""" - return isinstance(other, GatheredAccession) and self.code == other.code + return isinstance(other, GatheredAccession) and self.accession_code == other.accession_code def __hash__(self) -> int: """Returns accession object unique hash value.""" - return hash(self.code) + return hash(self.accession_code) def __str__(self) -> str: """Returns accession default string representation.""" - return ", ".join((self.code, self.technology, self.source, str(self.published_date.date()))) - - @staticmethod - def create_from_ma_ae_entry(entry, organism=None): - """Creates accession object from MicroArray ArrayExpress entry.""" - accession = GatheredAccession() - accession.code = entry["accession"] - accession.source = "ebi_biostudies" - accession.technology = "microarray" - - if organism: - accession.organism = organism - if "release_date" in entry: - accession.published_date = timezone.make_aware( - datetime.strptime(entry["release_date"], "%Y-%m-%d") + return ", ".join( + ( + self.accession_code, + self.technology, + self.source, + str(self.published_date.date()), ) - - return accession + ) @staticmethod - def create_from_ma_geo_entry(entry): - """Creates accession object from MicroArray GEO meta DB entry.""" + def create_from_external_entry(data, source, technology, organism=None): + """Creates accession object from MicroArray ArrayExpress entry.""" accession = GatheredAccession() - accession.code = entry["gse"] - accession.source = "geo_meta_db" - accession.technology = "microarray" - - if "organism" in entry: - accession.organism = entry["organism"].lower() - if "submission_date" in entry: - accession.published_date = timezone.make_aware( - datetime.strptime(entry["submission_date"], "%Y-%m-%d") - ) + accession.accession_code = ( + data.get("accession") or data.get("gse") or data.get("secondary_study_accession") + ) - return accession + organism = data.get("organism") or data.get("scientific_name") or organism + if organism: + accession.organism = organism.lower() - @staticmethod - def create_from_rnaseq_entry(entry): - """Creates accession object from RNA-Seq entry.""" - accession = GatheredAccession() - accession.code = entry["secondary_study_accession"] - accession.source = "ebi_ena_portal" - accession.technology = "rna-seq" + published_date = ( + data.get("first_public") or data.get("release_date") or data.get("submission_date") + ) + accession.published_date = timezone.make_aware( + datetime.strptime(published_date, "%Y-%m-%d") + ) - if "scientific_name" in entry: - accession.organism = entry["scientific_name"].lower() - if "first_public" in entry: - accession.published_date = timezone.make_aware( - datetime.strptime(entry["first_public"], "%Y-%m-%d") - ) + accession.source = source + accession.technology = technology return accession diff --git a/foreman/data_refinery_foreman/gatherer/agents/base.py b/foreman/data_refinery_foreman/gatherer/agents/base.py index 3754a4068..818bbf72c 100644 --- a/foreman/data_refinery_foreman/gatherer/agents/base.py +++ b/foreman/data_refinery_foreman/gatherer/agents/base.py @@ -66,7 +66,10 @@ def populate_previous_accessions(self) -> None: # Gathered accessions. self.previous_accessions.update( - (entry["code"] for entry in GatheredAccession.objects.values("code")) + ( + entry["accession_code"] + for entry in GatheredAccession.objects.values("accession_code") + ) ) # Surveyed accessions. diff --git a/foreman/data_refinery_foreman/gatherer/agents/microarray_ae.py b/foreman/data_refinery_foreman/gatherer/agents/microarray_ae.py index 541bd86d2..3bfcf08fe 100644 --- a/foreman/data_refinery_foreman/gatherer/agents/microarray_ae.py +++ b/foreman/data_refinery_foreman/gatherer/agents/microarray_ae.py @@ -1,5 +1,7 @@ -"""MicroArray ArrayExpress accession gathering automation. -Data source: https://www.ebi.ac.uk/biostudies/help""" +""" +MicroArray ArrayExpress accession gathering automation. +Data source: https://www.ebi.ac.uk/biostudies/help +""" from typing import List, Set @@ -13,7 +15,7 @@ logger = get_and_configure_logger(__name__) -class MicroArrayExpressAccessionAgent(AccessionAgentBase): +class AEAgent(AccessionAgentBase): """ MicroArray ArrayExpress accession gathering agent. The data is fetched from the BioStudies database. See https://www.ebi.ac.uk/biostudies/help and @@ -23,6 +25,9 @@ class MicroArrayExpressAccessionAgent(AccessionAgentBase): DATA_CHUNK_SIZE = 100 DATA_URL = "https://www.ebi.ac.uk/biostudies/api/v1/search" + SOURCE = "ebi-biostudies" + SOURCE_NAME = "microarray-ae" + TECHNOLOGY = "microarray" def build_query(self) -> dict: """Returns a query dict for getting array/organism specific accessions.""" @@ -95,7 +100,9 @@ def get_response(url, **kwargs): entries = response.json().get("hits", ()) if entries: entries = ( - GatheredAccession.create_from_ma_ae_entry(entry, organism=self.organism) + GatheredAccession.create_from_external_entry( + entry, self.SOURCE, self.TECHNOLOGY, organism=self.organism + ) for entry in entries ) params["page"] += 1 @@ -103,7 +110,11 @@ def get_response(url, **kwargs): is_done = True if self.previous_accessions: - entries = (entry for entry in entries if entry.code not in self.previous_accessions) + entries = ( + entry + for entry in entries + if entry.accession_code not in self.previous_accessions + ) accessions.update(entries) # Quit after getting a sufficient amount of accessions. diff --git a/foreman/data_refinery_foreman/gatherer/agents/microarray_geo.py b/foreman/data_refinery_foreman/gatherer/agents/microarray_geo.py index 975c715b3..2500bcec5 100644 --- a/foreman/data_refinery_foreman/gatherer/agents/microarray_geo.py +++ b/foreman/data_refinery_foreman/gatherer/agents/microarray_geo.py @@ -1,5 +1,8 @@ -"""MicroArray GEO accession gathering automation. -Data source: local SQLite meta DB from https://www.bioconductor.org/packages/release/bioc/html/GEOmetadb.html""" +""" +MicroArray GEO accession gathering automation. +Data source: local SQLite meta DB from +https://www.bioconductor.org/packages/release/bioc/html/GEOmetadb.html +""" import os import re @@ -13,7 +16,7 @@ logger = get_and_configure_logger(__name__) -class MicroArrayGEOAccessionAgent(AccessionAgentBase): +class GEOAgent(AccessionAgentBase): """ MicroArray GEO accession gathering agent. The data is fetched from a local SQLite GEO meta database. @@ -23,6 +26,9 @@ class MicroArrayGEOAccessionAgent(AccessionAgentBase): # Implement syncing procedure. # Update URL once the original file is available again. DB_PATH = "data/microarray/GEOmetadb.sqlite" + SOURCE = "geo-meta-db" + SOURCE_NAME = "microarray-geo" + TECHNOLOGY = "microarray" def build_query(self) -> str: """Returns a query for getting GEO accessions from the local SQLite meta DB.""" @@ -101,10 +107,17 @@ def match_keyword(row): entries = filter(match_keyword, entries) entries = ({key.lower(): entry[key] for key in entry.keys()} for entry in entries) - entries = set((GatheredAccession.create_from_ma_geo_entry(entry) for entry in entries)) + entries = set( + ( + GatheredAccession.create_from_external_entry(entry, self.SOURCE, self.TECHNOLOGY) + for entry in entries + ) + ) if self.previous_accessions: - entries = (entry for entry in entries if entry.code not in self.previous_accessions) + entries = ( + entry for entry in entries if entry.accession_code not in self.previous_accessions + ) accessions.update(entries) return accessions diff --git a/foreman/data_refinery_foreman/gatherer/agents/rna_seq.py b/foreman/data_refinery_foreman/gatherer/agents/rna_seq.py index f54ba570a..577f815b8 100644 --- a/foreman/data_refinery_foreman/gatherer/agents/rna_seq.py +++ b/foreman/data_refinery_foreman/gatherer/agents/rna_seq.py @@ -1,5 +1,7 @@ -"""RNA-Seq accession gathering automation. -Data source: https://www.ebi.ac.uk/ena/portal/api/""" +""" +RNA-Seq accession gathering automation. +Data source: https://www.ebi.ac.uk/ena/portal/api/ +""" from json.decoder import JSONDecodeError from typing import List, Set @@ -15,7 +17,7 @@ logger = get_and_configure_logger(__name__) -class RNASeqAccessionAgent(AccessionAgentBase): +class RNASeqAgent(AccessionAgentBase): """ RNA-Seq accession gathering agent. The data is fetched from The European Nucleotide Archive (ENA) Portal. @@ -25,6 +27,9 @@ class RNASeqAccessionAgent(AccessionAgentBase): DATA_CHUNK_SIZE = 10000 DATA_URL = "https://www.ebi.ac.uk/ena/portal/api/search" + SOURCE = "ebi-ena-portal" + SOURCE_NAME = "rna-seq" + TECHNOLOGY = "rna-seq" def build_query(self, taxon_id: str = None) -> str: """ @@ -174,7 +179,12 @@ def get_response(url, **kwargs): try: response = get_response(self.DATA_URL, data=data) entries = response.json() - entries = (GatheredAccession.create_from_rnaseq_entry(entry) for entry in entries) + entries = ( + GatheredAccession.create_from_external_entry( + entry, self.SOURCE, self.TECHNOLOGY + ) + for entry in entries + ) except JSONDecodeError: is_done = True except TypeError: @@ -182,7 +192,11 @@ def get_response(url, **kwargs): data["offset"] += self.DATA_CHUNK_SIZE if self.previous_accessions: - entries = (entry for entry in entries if entry.code not in self.previous_accessions) + entries = ( + entry + for entry in entries + if entry.accession_code not in self.previous_accessions + ) accessions.update(entries) # Quit after getting a sufficient amount of accessions. diff --git a/foreman/data_refinery_foreman/gatherer/management/commands/gather_accessions.py b/foreman/data_refinery_foreman/gatherer/management/commands/gather_accessions.py index 445245d3a..2b073ef45 100644 --- a/foreman/data_refinery_foreman/gatherer/management/commands/gather_accessions.py +++ b/foreman/data_refinery_foreman/gatherer/management/commands/gather_accessions.py @@ -11,12 +11,13 @@ import re from django.core.management.base import BaseCommand +from django.db.utils import IntegrityError from data_refinery_common.logging import get_and_configure_logger from data_refinery_common.models.gathered_accession import GatheredAccession -from data_refinery_foreman.gatherer.agents.microarray_ae import MicroArrayExpressAccessionAgent -from data_refinery_foreman.gatherer.agents.microarray_geo import MicroArrayGEOAccessionAgent -from data_refinery_foreman.gatherer.agents.rna_seq import RNASeqAccessionAgent +from data_refinery_foreman.gatherer.agents.microarray_ae import AEAgent +from data_refinery_foreman.gatherer.agents.microarray_geo import GEOAgent +from data_refinery_foreman.gatherer.agents.rna_seq import RNASeqAgent logger = get_and_configure_logger(__name__) @@ -24,11 +25,8 @@ class Command(BaseCommand): """Creates agents and runs actual accession gathering.""" - DATA_SOURCE_MA_AE = "microarray-ae" - DATA_SOURCE_MA_GEO = "microarray-geo" - DATA_SOURCE_RNA_SEQ = "rna-seq" - DATA_SOURCES = (DATA_SOURCE_MA_AE, DATA_SOURCE_MA_GEO, DATA_SOURCE_RNA_SEQ) - + DATA_AGENTS = (AEAgent, GEOAgent, RNASeqAgent) + DATA_SOURCE_NAMES = [agent.SOURCE_NAME for agent in DATA_AGENTS] RE_ACCESSION = re.compile(r"(\D+)(\d+)") RE_DATE = re.compile(r"\d{4}-\d{2}-\d{2}") @@ -164,43 +162,43 @@ def validate_args(self, options) -> None: keyword = options["keyword"] organism = options["organism"] - sources = options["source"] or self.DATA_SOURCES + source_names = options["source"] or self.DATA_SOURCE_NAMES - for source in sources: - if source in self.DATA_SOURCES: + for source_name in source_names: + if source_name in self.DATA_SOURCE_NAMES: continue errors.append( - f"Unknown source: {source}. Supported sources: {', '.join(self.DATA_SOURCES)}" + f"Unknown source: {source_name}. Supported sources: {', '.join(self.DATA_SOURCE_NAMES)}" ) - if self.DATA_SOURCE_MA_AE in sources: + if AEAgent.SOURCE_NAME in source_names: ids = options["ae_id"] or options["ae_ids_file"] if not (ids or keyword or organism): errors.append( ( "Exactly one of the keyword [-k, --keyword], organism [-o, --organism] or " "ArrayExpress ID(s) [--ae-id, --ae-ids-file] must be specified for " - f"'{self.DATA_SOURCE_MA_AE}' source." + f"'{AEAgent.SOURCE_NAME}' source." ) ) - if self.DATA_SOURCE_MA_GEO in sources: + if GEOAgent.SOURCE_NAME in source_names: ids = options["gpl_id"] or options["gpl_ids_file"] if not (ids or keyword or organism): errors.append( ( "Exactly one of the keyword [-k, --keyword], organism [-o, --organism] or " "GEO platform ID(s) [--gpl-id, --gpl-ids-file] must be specified for " - f"'{self.DATA_SOURCE_MA_GEO}' source." + f"'{GEOAgent.SOURCE_NAME}' source." ) ) - if self.DATA_SOURCE_RNA_SEQ in sources: + if RNASeqAgent.SOURCE_NAME in source_names: ids = options["taxon_id"] or options["taxon_ids_file"] if not (ids or keyword or organism): errors.append( ( "Exactly one of the keyword [-k, --keyword], organism [-o, --organism] " "or taxon ID(s) [--taxon-id, --taxon-ids-file] must be specified for " - f"'{self.DATA_SOURCE_RNA_SEQ}' source." + f"'{RNASeqAgent.SOURCE_NAME}' source." ) ) @@ -213,26 +211,21 @@ def handle(self, *args, **options): self.set_verbosity_level(options) agents = list() - sources = options["source"] or self.DATA_SOURCES - - if self.DATA_SOURCE_RNA_SEQ in sources: - agents.append(RNASeqAccessionAgent(options)) - - if self.DATA_SOURCE_MA_AE in sources: - agents.append(MicroArrayExpressAccessionAgent(options)) - - if self.DATA_SOURCE_MA_GEO in sources: - agents.append(MicroArrayGEOAccessionAgent(options)) + sources_names = options["source"] or self.DATA_SOURCE_NAMES + for cls in self.DATA_AGENTS: + if cls.SOURCE_NAME not in sources_names: + continue + agents.append(cls(options)) entries = set() for agent in agents: entries.update(agent.collect_data()) entries = sorted( # Sort the resulting list. - (entry for entry in entries if self.RE_ACCESSION.match(entry.code)), + (entry for entry in entries if self.RE_ACCESSION.match(entry.accession_code)), key=lambda entry: ( - self.RE_ACCESSION.match(entry.code).group(1), - int(self.RE_ACCESSION.match(entry.code).group(2)), + self.RE_ACCESSION.match(entry.accession_code).group(1), + int(self.RE_ACCESSION.match(entry.accession_code).group(2)), ), ) # Limit the number of output entries. @@ -245,4 +238,7 @@ def handle(self, *args, **options): output = "No accessions found." print(output) else: - GatheredAccession.objects.bulk_create(entries) + try: + GatheredAccession.objects.bulk_create(entries) + except IntegrityError as e: + logger.exception(f"Could not save new accessions to the database: {e}") From c4b43eecc479255a40902707bd026eeacff95788 Mon Sep 17 00:00:00 2001 From: Arkadii Yakovets Date: Wed, 21 Sep 2022 11:05:24 -0700 Subject: [PATCH 020/220] Rename agent files. --- .../gatherer/agents/{microarray_ae.py => ae_agent.py} | 0 .../gatherer/agents/{microarray_geo.py => geo_agent.py} | 0 .../gatherer/agents/{rna_seq.py => rnaseq_agent.py} | 0 .../gatherer/management/commands/gather_accessions.py | 6 +++--- 4 files changed, 3 insertions(+), 3 deletions(-) rename foreman/data_refinery_foreman/gatherer/agents/{microarray_ae.py => ae_agent.py} (100%) rename foreman/data_refinery_foreman/gatherer/agents/{microarray_geo.py => geo_agent.py} (100%) rename foreman/data_refinery_foreman/gatherer/agents/{rna_seq.py => rnaseq_agent.py} (100%) diff --git a/foreman/data_refinery_foreman/gatherer/agents/microarray_ae.py b/foreman/data_refinery_foreman/gatherer/agents/ae_agent.py similarity index 100% rename from foreman/data_refinery_foreman/gatherer/agents/microarray_ae.py rename to foreman/data_refinery_foreman/gatherer/agents/ae_agent.py diff --git a/foreman/data_refinery_foreman/gatherer/agents/microarray_geo.py b/foreman/data_refinery_foreman/gatherer/agents/geo_agent.py similarity index 100% rename from foreman/data_refinery_foreman/gatherer/agents/microarray_geo.py rename to foreman/data_refinery_foreman/gatherer/agents/geo_agent.py diff --git a/foreman/data_refinery_foreman/gatherer/agents/rna_seq.py b/foreman/data_refinery_foreman/gatherer/agents/rnaseq_agent.py similarity index 100% rename from foreman/data_refinery_foreman/gatherer/agents/rna_seq.py rename to foreman/data_refinery_foreman/gatherer/agents/rnaseq_agent.py diff --git a/foreman/data_refinery_foreman/gatherer/management/commands/gather_accessions.py b/foreman/data_refinery_foreman/gatherer/management/commands/gather_accessions.py index 2b073ef45..554b74350 100644 --- a/foreman/data_refinery_foreman/gatherer/management/commands/gather_accessions.py +++ b/foreman/data_refinery_foreman/gatherer/management/commands/gather_accessions.py @@ -15,9 +15,9 @@ from data_refinery_common.logging import get_and_configure_logger from data_refinery_common.models.gathered_accession import GatheredAccession -from data_refinery_foreman.gatherer.agents.microarray_ae import AEAgent -from data_refinery_foreman.gatherer.agents.microarray_geo import GEOAgent -from data_refinery_foreman.gatherer.agents.rna_seq import RNASeqAgent +from data_refinery_foreman.gatherer.agents.ae_agent import AEAgent +from data_refinery_foreman.gatherer.agents.geo_agent import GEOAgent +from data_refinery_foreman.gatherer.agents.rnaseq_agent import RNASeqAgent logger = get_and_configure_logger(__name__) From fc813da8e93864174f7ddd2da962c6a9208002a5 Mon Sep 17 00:00:00 2001 From: Arkadii Yakovets Date: Wed, 21 Sep 2022 12:15:48 -0700 Subject: [PATCH 021/220] Add accession gathering logging. --- .../gatherer/agents/ae_agent.py | 3 + .../gatherer/agents/geo_agent.py | 3 + .../gatherer/agents/rnaseq_agent.py | 3 + .../management/commands/gather_accessions.py | 67 +++++++++++-------- 4 files changed, 47 insertions(+), 29 deletions(-) diff --git a/foreman/data_refinery_foreman/gatherer/agents/ae_agent.py b/foreman/data_refinery_foreman/gatherer/agents/ae_agent.py index 3bfcf08fe..4328f0713 100644 --- a/foreman/data_refinery_foreman/gatherer/agents/ae_agent.py +++ b/foreman/data_refinery_foreman/gatherer/agents/ae_agent.py @@ -29,6 +29,9 @@ class AEAgent(AccessionAgentBase): SOURCE_NAME = "microarray-ae" TECHNOLOGY = "microarray" + def __str__(self): + return "MicroArray ArrayExpress accession agent" + def build_query(self) -> dict: """Returns a query dict for getting array/organism specific accessions.""" query_dict = { diff --git a/foreman/data_refinery_foreman/gatherer/agents/geo_agent.py b/foreman/data_refinery_foreman/gatherer/agents/geo_agent.py index 2500bcec5..22a3bd0bd 100644 --- a/foreman/data_refinery_foreman/gatherer/agents/geo_agent.py +++ b/foreman/data_refinery_foreman/gatherer/agents/geo_agent.py @@ -30,6 +30,9 @@ class GEOAgent(AccessionAgentBase): SOURCE_NAME = "microarray-geo" TECHNOLOGY = "microarray" + def __str__(self): + return "MicroArray GEO accession agent" + def build_query(self) -> str: """Returns a query for getting GEO accessions from the local SQLite meta DB.""" tables = [ diff --git a/foreman/data_refinery_foreman/gatherer/agents/rnaseq_agent.py b/foreman/data_refinery_foreman/gatherer/agents/rnaseq_agent.py index 577f815b8..3fcb87fbb 100644 --- a/foreman/data_refinery_foreman/gatherer/agents/rnaseq_agent.py +++ b/foreman/data_refinery_foreman/gatherer/agents/rnaseq_agent.py @@ -31,6 +31,9 @@ class RNASeqAgent(AccessionAgentBase): SOURCE_NAME = "rna-seq" TECHNOLOGY = "rna-seq" + def __str__(self): + return "RNA-Seq accession agent" + def build_query(self, taxon_id: str = None) -> str: """ Returns a query to use for getting specific taxon ID accessions. diff --git a/foreman/data_refinery_foreman/gatherer/management/commands/gather_accessions.py b/foreman/data_refinery_foreman/gatherer/management/commands/gather_accessions.py index 554b74350..f3f644a91 100644 --- a/foreman/data_refinery_foreman/gatherer/management/commands/gather_accessions.py +++ b/foreman/data_refinery_foreman/gatherer/management/commands/gather_accessions.py @@ -7,13 +7,14 @@ """ import argparse -import logging import re from django.core.management.base import BaseCommand from django.db.utils import IntegrityError +from django.template.defaultfilters import pluralize from data_refinery_common.logging import get_and_configure_logger +from data_refinery_common.models import gathered_accession from data_refinery_common.models.gathered_accession import GatheredAccession from data_refinery_foreman.gatherer.agents.ae_agent import AEAgent from data_refinery_foreman.gatherer.agents.geo_agent import GEOAgent @@ -87,13 +88,6 @@ def add_arguments(self, parser) -> None: type=str, help="Keyword to use for filtering.", ) - parser.add_argument( - "-lv", - "--log-verbose", - action="store_true", - default=False, - help="Enable verbose log output.", - ) parser.add_argument( "-ne", "--no-exclude-previous", @@ -139,14 +133,6 @@ def add_arguments(self, parser) -> None: help="Collect accessions made public before or on this date.", ) - def set_verbosity_level(self, options) -> None: - """Configures log verbosity level.""" - if options["log_verbose"]: - logger.addHandler(logging.StreamHandler()) - logger.setLevel(logging.DEBUG) - else: - logger.setLevel(logging.ERROR) - def validate_args(self, options) -> None: """Validates arguments.""" errors = list() @@ -208,7 +194,6 @@ def validate_args(self, options) -> None: def handle(self, *args, **options): """Creates agents and runs the accession gathering process.""" self.validate_args(options) - self.set_verbosity_level(options) agents = list() sources_names = options["source"] or self.DATA_SOURCE_NAMES @@ -217,28 +202,52 @@ def handle(self, *args, **options): continue agents.append(cls(options)) - entries = set() + gathered_accessions = set() + gathered_accessions_count = 0 for agent in agents: - entries.update(agent.collect_data()) + agent_accessions = agent.collect_data() + agent_accessions_count = len(agent_accessions) + + gathered_accessions.update(agent_accessions) + gathered_accessions_count += agent_accessions_count - entries = sorted( # Sort the resulting list. - (entry for entry in entries if self.RE_ACCESSION.match(entry.accession_code)), - key=lambda entry: ( - self.RE_ACCESSION.match(entry.accession_code).group(1), - int(self.RE_ACCESSION.match(entry.accession_code).group(2)), + logger.info( + f"{agent} gathered {agent_accessions_count} " + f"new accession{pluralize(gathered_accessions_count)} since {options['since']}." + ) + + gathered_accessions = sorted( # Sort the resulting list. + (ga for ga in gathered_accessions if self.RE_ACCESSION.match(ga.code)), + key=lambda ga: ( + self.RE_ACCESSION.match(ga.code).group(1), + int(self.RE_ACCESSION.match(ga.code).group(2)), ), ) # Limit the number of output entries. - entries = entries[: options["count"]] if options["count"] else entries + gathered_accessions = ( + gathered_accessions[: options["count"]] if options["count"] else gathered_accessions + ) + + agents_count = len(agents) + logger.info( + f"{gathered_accessions_count} new accession{pluralize(gathered_accessions_count)} " + f"w{pluralize(gathered_accessions_count, 'as,ere')} gathered by {agents_count} " + f"accession agent{pluralize(agents_count)} since {options['since']}." + ) if options["dry_run"]: - if entries: - output = "\n".join((str(entry) for entry in entries)) + if gathered_accessions: + output = "\n".join((str(ga) for ga in gathered_accessions)) else: - output = "No accessions found." + output = "No new accessions gathered." print(output) else: try: - GatheredAccession.objects.bulk_create(entries) + GatheredAccession.objects.bulk_create(gathered_accessions) + added_accessions_count = len(gathered_accessions) + logger.info( + f"{added_accessions_count} new accession{pluralize(added_accessions_count)} " + f"w{pluralize(added_accessions_count, 'as,ere')} added to the database. " + ) except IntegrityError as e: logger.exception(f"Could not save new accessions to the database: {e}") From a3bb0f2348b1d96d10d2bf2a5b3e4a4b47d96663 Mon Sep 17 00:00:00 2001 From: Arkadii Yakovets Date: Thu, 22 Sep 2022 16:59:59 -0700 Subject: [PATCH 022/220] Add automatic accession command. Exclude `SurveyJob` accessions instead of `Experiment` accessions. --- .../management/commands/automatic_survey.py | 72 +++++++++++++++++++ .../gatherer/agents/base.py | 11 +-- 2 files changed, 75 insertions(+), 8 deletions(-) create mode 100644 foreman/data_refinery_foreman/foreman/management/commands/automatic_survey.py diff --git a/foreman/data_refinery_foreman/foreman/management/commands/automatic_survey.py b/foreman/data_refinery_foreman/foreman/management/commands/automatic_survey.py new file mode 100644 index 000000000..02063e11b --- /dev/null +++ b/foreman/data_refinery_foreman/foreman/management/commands/automatic_survey.py @@ -0,0 +1,72 @@ +""" +Automatic survey command. +""" + +from django.core.management.base import BaseCommand +from django.template.defaultfilters import pluralize +from django.utils import timezone + +from dateutil.relativedelta import relativedelta + +from data_refinery_common.logging import get_and_configure_logger +from data_refinery_common.models import GatheredAccession, SurveyedAccession, SurveyJob +from data_refinery_foreman.surveyor.management.commands.surveyor_dispatcher import ( + queue_surveyor_for_accession, +) + +logger = get_and_configure_logger(__name__) + + +class Command(BaseCommand): + def add_arguments(self, parser): + parser.add_argument("-d", "--days", help="The time window in days.", type=int, default=7) + parser.add_argument( + "-q", + "--quota", + help="The number of accessions to survey per the time window.", + type=int, + default=10, + ) + + def handle(self, *args, **options): + create_survey_jobs(options["days"], options["quota"]) + + +def create_survey_jobs(days, quota): + """Automatically creates survey jobs based on the passed time window requirements.""" + surveyed_accessions = ( + sa["accession_code"] for sa in SurveyedAccession.objects.values("accession_code") + ) + gathered_accessions = [ + ga["accession_code"] + for ga in GatheredAccession.objects.exclude(accession_code__in=surveyed_accessions) + .order_by("created_at") + .values("accession_code") + ] + + time_window_survey_jobs = SurveyJob.objects.filter( + created_at__gt=timezone.now() - relativedelta(days=days) + ) + + remaining_quota = quota - time_window_survey_jobs.count() + if remaining_quota > 0: + queued_accessions = list() + for accession_code in gathered_accessions[:remaining_quota]: + try: + queue_surveyor_for_accession(accession_code) + queued_accessions.append(accession_code) + except Exception as e: + logger.error(f"Couldn't queue accession {accession_code} due to: {e}") + + queued_accession_count = len(queued_accessions) + logger.info( + f"Queued {queued_accession_count} accession{pluralize(queued_accession_count)} " + f"based on {quota} accession{pluralize(quota)} per {days} " + f"day{pluralize(days)} quota." + ) + SurveyedAccession.objects.bulk_create( + ( + SurveyedAccession(accession_code=accession_code) + for accession_code in queued_accessions + ) + ) diff --git a/foreman/data_refinery_foreman/gatherer/agents/base.py b/foreman/data_refinery_foreman/gatherer/agents/base.py index 818bbf72c..bf730fb86 100644 --- a/foreman/data_refinery_foreman/gatherer/agents/base.py +++ b/foreman/data_refinery_foreman/gatherer/agents/base.py @@ -8,8 +8,7 @@ from urllib3.exceptions import ProtocolError from data_refinery_common.logging import get_and_configure_logger -from data_refinery_common.models.experiment import Experiment -from data_refinery_common.models.gathered_accession import GatheredAccession +from data_refinery_common.models import GatheredAccession, SurveyedAccession logger = get_and_configure_logger(__name__) @@ -60,7 +59,7 @@ def get_ids(self): pass def populate_previous_accessions(self) -> None: - """Populates previous accession set from a provided excluded ids file.""" + """Populates previous accession set from gathered/surveyed accessions.""" if not self.options["exclude_previous"] or self.previous_accessions: return @@ -73,10 +72,6 @@ def populate_previous_accessions(self) -> None: ) # Surveyed accessions. - experiments = Experiment.objects.values("accession_code", "alternate_accession_code") self.previous_accessions.update( - (experiment["accession_code"] for experiment in experiments) - ) - self.previous_accessions.update( - (experiment["alternate_accession_code"] for experiment in experiments) + (sa["accession_code"] for sa in SurveyedAccession.objects.values("accession_code")) ) From d27cc5e1b3fd447af59902e274cb12e63a56306a Mon Sep 17 00:00:00 2001 From: Arkadii Yakovets Date: Tue, 27 Sep 2022 12:15:22 -0700 Subject: [PATCH 023/220] Address PR comments. --- .../management/commands/automatic_survey.py | 76 ++++++++++++------- 1 file changed, 49 insertions(+), 27 deletions(-) diff --git a/foreman/data_refinery_foreman/foreman/management/commands/automatic_survey.py b/foreman/data_refinery_foreman/foreman/management/commands/automatic_survey.py index 02063e11b..6dc1273ac 100644 --- a/foreman/data_refinery_foreman/foreman/management/commands/automatic_survey.py +++ b/foreman/data_refinery_foreman/foreman/management/commands/automatic_survey.py @@ -19,7 +19,7 @@ class Command(BaseCommand): def add_arguments(self, parser): - parser.add_argument("-d", "--days", help="The time window in days.", type=int, default=7) + parser.add_argument("-d", "--days", help="The time window in days.", type=int, default=1) parser.add_argument( "-q", "--quota", @@ -34,39 +34,61 @@ def handle(self, *args, **options): def create_survey_jobs(days, quota): """Automatically creates survey jobs based on the passed time window requirements.""" - surveyed_accessions = ( - sa["accession_code"] for sa in SurveyedAccession.objects.values("accession_code") - ) + + remaining_quota = get_remaining_quota(days, quota) + if not remaining_quota: + return + gathered_accessions = [ ga["accession_code"] - for ga in GatheredAccession.objects.exclude(accession_code__in=surveyed_accessions) - .order_by("created_at") - .values("accession_code") + for ga in GatheredAccession.objects.order_by("created_at").values("accession_code") ] - time_window_survey_jobs = SurveyJob.objects.filter( - created_at__gt=timezone.now() - relativedelta(days=days) - ) + batch_start = 0 + batch_size = 1000 + queued_accessions = list() + while True: + batch_accessions = gathered_accessions[batch_start : batch_start + batch_size] + if not batch_accessions: + break - remaining_quota = quota - time_window_survey_jobs.count() - if remaining_quota > 0: - queued_accessions = list() - for accession_code in gathered_accessions[:remaining_quota]: + surveyed_accessions = ( + sa["accession_code"] + for sa in SurveyedAccession.objects.filter(accession_code__in=batch_accessions).values( + "accession_code" + ) + ) + + for accession_code in set(batch_accessions) - set(surveyed_accessions): try: queue_surveyor_for_accession(accession_code) - queued_accessions.append(accession_code) except Exception as e: logger.error(f"Couldn't queue accession {accession_code} due to: {e}") + else: + queued_accessions.append(accession_code) + if len(queued_accessions) == remaining_quota: + break - queued_accession_count = len(queued_accessions) - logger.info( - f"Queued {queued_accession_count} accession{pluralize(queued_accession_count)} " - f"based on {quota} accession{pluralize(quota)} per {days} " - f"day{pluralize(days)} quota." - ) - SurveyedAccession.objects.bulk_create( - ( - SurveyedAccession(accession_code=accession_code) - for accession_code in queued_accessions - ) - ) + if len(queued_accessions) == remaining_quota: + break + + batch_start += batch_size + + queued_accession_count = len(queued_accessions) + logger.info( + f"Queued {queued_accession_count} accession{pluralize(queued_accession_count)} " + f"based on {quota} accession{pluralize(quota)} per {days} " + f"day{pluralize(days)} quota." + ) + SurveyedAccession.objects.bulk_create( + (SurveyedAccession(accession_code=accession_code) for accession_code in queued_accessions) + ) + + +def get_remaining_quota(days, quota): + """Returns the remaining quota or 0 if nothing left.""" + time_window_survey_jobs = SurveyJob.objects.filter( + created_at__gt=timezone.now() - relativedelta(days=days) + ) + + return max(0, quota - time_window_survey_jobs.count()) From 140470b8d5ccf2f64ee6769aabbf0fd5a4463b1a Mon Sep 17 00:00:00 2001 From: Arkadii Yakovets Date: Tue, 27 Sep 2022 17:18:38 -0700 Subject: [PATCH 024/220] Add indexes to `GatheredAccession` model. --- .../migrations/0072_auto_20220927_2235.py | 21 +++++++++++++++++++ .../models/gathered_accession.py | 4 ++++ 2 files changed, 25 insertions(+) create mode 100644 common/data_refinery_common/migrations/0072_auto_20220927_2235.py diff --git a/common/data_refinery_common/migrations/0072_auto_20220927_2235.py b/common/data_refinery_common/migrations/0072_auto_20220927_2235.py new file mode 100644 index 000000000..06e9451a8 --- /dev/null +++ b/common/data_refinery_common/migrations/0072_auto_20220927_2235.py @@ -0,0 +1,21 @@ +# Generated by Django 3.2.7 on 2022-09-27 22:35 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ("data_refinery_common", "0071_gatheredaccession"), + ] + + operations = [ + migrations.AddIndex( + model_name="gatheredaccession", + index=models.Index(fields=["accession_code"], name="gathered_ac_accessi_5dde9a_idx"), + ), + migrations.AddIndex( + model_name="gatheredaccession", + index=models.Index(fields=["created_at"], name="gathered_ac_created_2efd0f_idx"), + ), + ] diff --git a/common/data_refinery_common/models/gathered_accession.py b/common/data_refinery_common/models/gathered_accession.py index e56ed615c..1d71de204 100644 --- a/common/data_refinery_common/models/gathered_accession.py +++ b/common/data_refinery_common/models/gathered_accession.py @@ -9,6 +9,10 @@ class GatheredAccession(models.Model): class Meta: db_table = "gathered_accessions" + indexes = ( + models.Index(fields=("accession_code",)), + models.Index(fields=("created_at",)), + ) accession_code = models.TextField(unique=True) created_at = models.DateTimeField(auto_now_add=True) From 16b4cd044cdf8e476a16755f5c098bdf3133d25f Mon Sep 17 00:00:00 2001 From: Arkadii Yakovets Date: Thu, 29 Sep 2022 08:42:39 -0700 Subject: [PATCH 025/220] Fix shell check errors. Add quotes around $OPTARG. --- foreman/test_survey.sh | 4 ++-- scripts/format_batch_with_env.sh | 8 ++++---- scripts/update_my_docker_images.sh | 4 ++-- 3 files changed, 8 insertions(+), 8 deletions(-) diff --git a/foreman/test_survey.sh b/foreman/test_survey.sh index c77ba6a6d..55e662174 100755 --- a/foreman/test_survey.sh +++ b/foreman/test_survey.sh @@ -12,10 +12,10 @@ EOF while getopts ":s:a:h" opt; do case $opt in s) - export SURVEYOR=$OPTARG + export SURVEYOR="$OPTARG" ;; a) - export ACCESSION=$OPTARG + export ACCESSION="$OPTARG" ;; h) print_description diff --git a/scripts/format_batch_with_env.sh b/scripts/format_batch_with_env.sh index 1977b0426..5ab5bd386 100755 --- a/scripts/format_batch_with_env.sh +++ b/scripts/format_batch_with_env.sh @@ -25,16 +25,16 @@ print_options() { while getopts ":p:e:o:v:h" opt; do case $opt in p) - export project=$OPTARG + export project="$OPTARG" ;; e) - export env=$OPTARG + export env="$OPTARG" ;; o) - export output_dir=$OPTARG + export output_dir="$OPTARG" ;; v) - export system_version=$OPTARG + export system_version="$OPTARG" ;; h) print_description diff --git a/scripts/update_my_docker_images.sh b/scripts/update_my_docker_images.sh index 32950fda0..025e9ad1f 100755 --- a/scripts/update_my_docker_images.sh +++ b/scripts/update_my_docker_images.sh @@ -38,10 +38,10 @@ EOF while getopts ":d:v:ah" opt; do case $opt in d) - export DOCKERHUB_REPO=$OPTARG + export DOCKERHUB_REPO="$OPTARG" ;; v) - export SYSTEM_VERSION=$OPTARG + export SYSTEM_VERSION="$OPTARG" ;; a) AFFYMETRIX=true From fef0e6fd4b07eccbdfc25a6d5860000b41203281 Mon Sep 17 00:00:00 2001 From: Arkadii Yakovets Date: Mon, 3 Oct 2022 16:15:57 -0700 Subject: [PATCH 026/220] Update terraform config in order to make it runnable on arm64. - Migrate `template_file` to `templatefile` - Inline user_data templates. - Fix s3 backend configuration. - Set postgres version to 11.16. - Change DB `name` to `db_name`. --- ami/instance.tf | 12 ++- ami/user-data-script.tf | 16 ---- infrastructure/backend.tf | 10 +-- infrastructure/batch.tf | 14 +++- infrastructure/database.tf | 34 ++++---- infrastructure/instances.tf | 162 ++++++++++++++---------------------- infrastructure/variables.tf | 2 +- 7 files changed, 103 insertions(+), 147 deletions(-) diff --git a/ami/instance.tf b/ami/instance.tf index 620b13803..80680f351 100644 --- a/ami/instance.tf +++ b/ami/instance.tf @@ -26,7 +26,11 @@ resource "aws_instance" "ubuntu-ami-template-instance" { # Our instance-user-data.sh script is built by Terraform at # apply-time so that it can put additional files onto the # instance. For more information see the definition of this resource. - user_data = data.template_file.ubuntu_instance_user_data.rendered + user_data = templatefile("ubuntu-instance-user-data.tpl.sh", + { + docker_apt_key = data.local_file.docker_apt_key.content + } + ) subnet_id = data.aws_subnet.ccdl_dev_subnet.id associate_public_ip_address = true @@ -46,7 +50,11 @@ resource "aws_instance" "ecs-ami-template-instance" { # Our instance-user-data.sh script is built by Terraform at # apply-time so that it can put additional files onto the # instance. For more information see the definition of this resource. - user_data = data.template_file.ecs_instance_user_data.rendered + user_data = templatefile("ecs-instance-user-data.tpl.sh", + { + docker_apt_key = data.local_file.docker_apt_key.content + } + ) subnet_id = data.aws_subnet.ccdl_dev_subnet.id associate_public_ip_address = true diff --git a/ami/user-data-script.tf b/ami/user-data-script.tf index d5d0718e3..585beacbe 100644 --- a/ami/user-data-script.tf +++ b/ami/user-data-script.tf @@ -2,19 +2,3 @@ data "local_file" "docker_apt_key" { filename = "docker-apt-key.gpg" } - -data "template_file" "ubuntu_instance_user_data" { - template = file("ubuntu-instance-user-data.tpl.sh") - - vars = { - docker_apt_key = data.local_file.docker_apt_key.content - } -} - -data "template_file" "ecs_instance_user_data" { - template = file("ecs-instance-user-data.tpl.sh") - - vars = { - docker_apt_key = data.local_file.docker_apt_key.content - } -} diff --git a/infrastructure/backend.tf b/infrastructure/backend.tf index 02e25fc39..294f50ef7 100644 --- a/infrastructure/backend.tf +++ b/infrastructure/backend.tf @@ -1,16 +1,8 @@ terraform { backend "s3" { - # Terraform will prompt the user for the other keys. - region = "us-east-1" - } -} - -data "terraform_remote_state" "network" { - backend = "s3" - config = { bucket = "refinebio-tfstate-deploy-${var.stage}" + encrypt = true key = "terraform-${var.user}.tfstate" region = "us-east-1" - encrypt = true } } diff --git a/infrastructure/batch.tf b/infrastructure/batch.tf index 8dbbebd94..ae1ab8216 100644 --- a/infrastructure/batch.tf +++ b/infrastructure/batch.tf @@ -16,7 +16,19 @@ module "batch" { data_refinery_keypair = aws_key_pair.data_refinery data_refinery_worker_security_group = aws_security_group.data_refinery_worker - data_refinery_worker_user_data = data.template_file.worker_script_smusher.rendered + data_refinery_worker_user_data = templatefile( + "workers-configuration/workers-instance-user-data.tpl.sh", + { + database_host = aws_instance.pg_bouncer.private_ip + database_name = aws_db_instance.postgres_db.name + database_password = var.database_password + database_port = var.database_port + database_user = var.database_user + region = var.region + stage = var.stage + user = var.user + } + ) data_refinery_worker_ami = var.worker_ami user = var.user diff --git a/infrastructure/database.tf b/infrastructure/database.tf index 8f4f8520e..503fcf75b 100644 --- a/infrastructure/database.tf +++ b/infrastructure/database.tf @@ -137,11 +137,11 @@ resource "aws_db_instance" "postgres_db" { allocated_storage = 100 storage_type = "gp2" engine = "postgres" - engine_version = "11.1" + engine_version = "11.16" allow_major_version_upgrade = true auto_minor_version_upgrade = false instance_class = "db.${var.database_instance_type}" - name = "data_refinery" + db_name = "data_refinery" port = var.database_hidden_port username = var.database_user password = var.database_password @@ -182,7 +182,19 @@ resource "aws_instance" "pg_bouncer" { # Our instance-user-data.sh script is built by Terraform at # apply-time so that it can put additional files onto the # instance. For more information see the definition of this resource. - user_data = data.template_file.pg_bouncer_script_smusher.rendered + user_data = templatefile("workers-configuration/pg-bouncer-instance-user-data.tpl.sh", + { + database_host = aws_db_instance.postgres_db.address + database_name = aws_db_instance.postgres_db.db_name + database_password = var.database_password + database_port = var.database_hidden_port + database_user = var.database_user + listen_port = var.database_port + region = var.region + stage = var.stage + user = var.user + } + ) tags = merge( var.default_tags, @@ -198,19 +210,3 @@ resource "aws_instance" "pg_bouncer" { tags = var.default_tags } } - -data "template_file" "pg_bouncer_script_smusher" { - template = file("workers-configuration/pg-bouncer-instance-user-data.tpl.sh") - - vars = { - database_host = aws_db_instance.postgres_db.address - database_user = var.database_user - database_port = var.database_hidden_port - database_password = var.database_password - database_name = aws_db_instance.postgres_db.name - listen_port = var.database_port - user = var.user - stage = var.stage - region = var.region - } -} diff --git a/infrastructure/instances.tf b/infrastructure/instances.tf index 379971e8d..bed2234dd 100644 --- a/infrastructure/instances.tf +++ b/infrastructure/instances.tf @@ -7,34 +7,11 @@ data "aws_ami" "ubuntu" { owners = ["589864003899"] filter { - name = "name" + name = "name" values = ["ccdl-ubuntu-18.04-*"] } } -# This script smusher exists in order to be able to circumvent a -# limitation of AWS which is that you get one script and one script -# only to set up the instance when it boots up. Because there is only -# one script you cannot place additional files your script may need -# onto the instance. Therefore this script smusher templates the files -# the instance-user-data.sh script needs into it, so that once it -# makes its way onto the instance it can spit them back out onto the -# disk. -data "template_file" "worker_script_smusher" { - template = file("workers-configuration/workers-instance-user-data.tpl.sh") - - vars = { - user = var.user - stage = var.stage - region = var.region - database_host = aws_instance.pg_bouncer.private_ip - database_port = var.database_port - database_user = var.database_user - database_password = var.database_password - database_name = aws_db_instance.postgres_db.name - } -} - ## # ElasticSearch ## @@ -53,7 +30,7 @@ data "aws_caller_identity" "current" { } resource "aws_elasticsearch_domain" "es" { - domain_name = "es-${var.user}-${var.stage}" + domain_name = "es-${var.user}-${var.stage}" elasticsearch_version = "6.3" advanced_options = { @@ -109,7 +86,7 @@ CONFIG var.default_tags, { Domain = "es-${var.user}-${var.stage}" - Name = "es-${var.user}-${var.stage}" + Name = "es-${var.user}-${var.stage}" } ) } @@ -130,56 +107,43 @@ data "local_file" "api_environment" { filename = "api-configuration/environment" } -# This script smusher serves a similar purpose to -# ${data.template_file.worker_script_smusher} but for the Nginx/API. -data "template_file" "api_server_script_smusher" { - template = file("api-configuration/api-server-instance-user-data.tpl.sh") - - vars = { - nginx_config = data.local_file.api_nginx_config.content - api_environment = data.local_file.api_environment.content - dockerhub_repo = var.dockerhub_repo - api_docker_image = var.api_docker_image - data_refinery_cert_bucket = aws_s3_bucket.data_refinery_cert_bucket.id - user = var.user - stage = var.stage - region = var.region - database_host = aws_instance.pg_bouncer.private_ip - database_user = var.database_user - database_password = var.database_password - database_name = aws_db_instance.postgres_db.name - elasticsearch_host = aws_elasticsearch_domain.es.endpoint - elasticsearch_port = "80" # AWS doesn't support the data transfer protocol on 9200 >:[ - log_group = aws_cloudwatch_log_group.data_refinery_log_group.name - log_stream = aws_cloudwatch_log_stream.log_stream_api.name - } - - depends_on = [ - aws_db_instance.postgres_db, - aws_elasticsearch_domain.es, - aws_instance.pg_bouncer, - aws_security_group_rule.data_refinery_api_http, - aws_security_group_rule.data_refinery_api_outbound, - aws_s3_bucket.data_refinery_cert_bucket, - ] -} - resource "aws_instance" "api_server_1" { - ami = data.aws_ami.ubuntu.id - instance_type = var.api_instance_type - availability_zone = "${var.region}a" + ami = data.aws_ami.ubuntu.id + instance_type = var.api_instance_type + availability_zone = "${var.region}a" vpc_security_group_ids = [aws_security_group.data_refinery_api.id] - iam_instance_profile = aws_iam_instance_profile.data_refinery_api.name - subnet_id = aws_subnet.data_refinery_1a.id + iam_instance_profile = aws_iam_instance_profile.data_refinery_api.name + subnet_id = aws_subnet.data_refinery_1a.id depends_on = [ aws_db_instance.postgres_db, aws_elasticsearch_domain.es, aws_instance.pg_bouncer, + aws_s3_bucket.data_refinery_cert_bucket, aws_security_group_rule.data_refinery_api_http, aws_security_group_rule.data_refinery_api_outbound, ] - user_data = data.template_file.api_server_script_smusher.rendered - key_name = aws_key_pair.data_refinery.key_name + + user_data = templatefile("api-configuration/api-server-instance-user-data.tpl.sh", + { + api_docker_image = var.api_docker_image + api_environment = data.local_file.api_environment.content + data_refinery_cert_bucket = aws_s3_bucket.data_refinery_cert_bucket.id + database_host = aws_instance.pg_bouncer.private_ip + database_name = aws_db_instance.postgres_db.db_name + database_password = var.database_password + database_user = var.database_user + dockerhub_repo = var.dockerhub_repo + elasticsearch_host = aws_elasticsearch_domain.es.endpoint + elasticsearch_port = "80" # AWS doesn't support the data transfer protocol on 9200 >:[ + log_group = aws_cloudwatch_log_group.data_refinery_log_group.name + log_stream = aws_cloudwatch_log_stream.log_stream_api.name + nginx_config = data.local_file.api_nginx_config.content + region = var.region + stage = var.stage + user = var.user + } + ) + key_name = aws_key_pair.data_refinery.key_name tags = merge( var.default_tags, @@ -210,44 +174,44 @@ data "local_file" "foreman_environment" { filename = "foreman-configuration/environment" } -# This script smusher serves a similar purpose to -# ${data.template_file.worker_script_smusher} but for the Foreman. -data "template_file" "foreman_server_script_smusher" { - template = file( - "foreman-configuration/foreman-server-instance-user-data.tpl.sh", - ) - - vars = { - foreman_environment = data.local_file.foreman_environment.content - dockerhub_repo = var.dockerhub_repo - foreman_docker_image = var.foreman_docker_image - user = var.user - stage = var.stage - region = var.region - database_host = aws_instance.pg_bouncer.private_ip - database_user = var.database_user - database_password = var.database_password - database_name = aws_db_instance.postgres_db.name - elasticsearch_host = aws_elasticsearch_domain.es.endpoint - elasticsearch_port = var.elasticsearch_port - log_group = aws_cloudwatch_log_group.data_refinery_log_group.name - } -} - resource "aws_instance" "foreman_server_1" { - ami = data.aws_ami.ubuntu.id - instance_type = var.foreman_instance_type - availability_zone = "${var.region}a" + ami = data.aws_ami.ubuntu.id + instance_type = var.foreman_instance_type + availability_zone = "${var.region}a" vpc_security_group_ids = [aws_security_group.data_refinery_foreman.id] - iam_instance_profile = aws_iam_instance_profile.data_refinery_foreman.name - subnet_id = aws_subnet.data_refinery_1a.id + iam_instance_profile = aws_iam_instance_profile.data_refinery_foreman.name + subnet_id = aws_subnet.data_refinery_1a.id + depends_on = [ aws_db_instance.postgres_db, - aws_instance.pg_bouncer, aws_elasticsearch_domain.es, + aws_instance.pg_bouncer, + aws_s3_bucket.data_refinery_cert_bucket, + aws_security_group_rule.data_refinery_api_http, + aws_security_group_rule.data_refinery_api_outbound, ] - user_data = data.template_file.foreman_server_script_smusher.rendered - key_name = aws_key_pair.data_refinery.key_name + + user_data = templatefile("api-configuration/api-server-instance-user-data.tpl.sh", + { + api_docker_image = var.api_docker_image + api_environment = data.local_file.api_environment.content + data_refinery_cert_bucket = aws_s3_bucket.data_refinery_cert_bucket.id + database_host = aws_instance.pg_bouncer.private_ip + database_name = aws_db_instance.postgres_db.db_name + database_password = var.database_password + database_user = var.database_user + dockerhub_repo = var.dockerhub_repo + elasticsearch_host = aws_elasticsearch_domain.es.endpoint + elasticsearch_port = "80" # AWS doesn't support the data transfer protocol on 9200 >:[ + log_group = aws_cloudwatch_log_group.data_refinery_log_group.name + log_stream = aws_cloudwatch_log_stream.log_stream_api.name + nginx_config = data.local_file.api_nginx_config.content + region = var.region + stage = var.stage + user = var.user + } + ) + key_name = aws_key_pair.data_refinery.key_name tags = merge( var.default_tags, diff --git a/infrastructure/variables.tf b/infrastructure/variables.tf index 3d56947a0..ab2589f14 100644 --- a/infrastructure/variables.tf +++ b/infrastructure/variables.tf @@ -256,7 +256,7 @@ output "environment_variables" { }, { name = "DATABASE_NAME" - value = aws_db_instance.postgres_db.name + value = aws_db_instance.postgres_db.db_name }, { name = "DATABASE_HOST" From 96867782b7ce3d38336eb3d78af18357d726741f Mon Sep 17 00:00:00 2001 From: Arkadii Yakovets Date: Thu, 6 Oct 2022 09:19:40 -0700 Subject: [PATCH 027/220] Fix foreman misconfiguration. --- .../foreman-server-instance-user-data.tpl.sh | 9 +++--- infrastructure/instances.tf | 32 +++++++++---------- infrastructure/variables.tf | 8 +++++ 3 files changed, 28 insertions(+), 21 deletions(-) diff --git a/infrastructure/foreman-configuration/foreman-server-instance-user-data.tpl.sh b/infrastructure/foreman-configuration/foreman-server-instance-user-data.tpl.sh index e77541c75..3598c2a45 100644 --- a/infrastructure/foreman-configuration/foreman-server-instance-user-data.tpl.sh +++ b/infrastructure/foreman-configuration/foreman-server-instance-user-data.tpl.sh @@ -77,8 +77,8 @@ docker run \\ -e DATABASE_PASSWORD=${database_password} \\ -v /tmp:/tmp \\ -it ${dockerhub_repo}/dr_\"\$1\" python3 manage.py \"\$2\" -" >> /home/ubuntu/run_cron_job_test.sh -chmod +x /home/ubuntu/run_cron_job_test.sh +" >> /home/ubuntu/run_cron_job.sh +chmod +x /home/ubuntu/run_cron_job.sh # Use Monit to ensure the Foreman is always running apt-get -y update @@ -112,8 +112,9 @@ service monit restart # Install the cron job tests crontab -l > tempcron cat <> tempcron -0 12 * * MON /bin/bash /home/ubuntu/run_cron_job_test.sh affymetrix check_brainarray_gene_agreement >> /var/log/cron_job_tests.log 2>&1 -0 12 * * MON /bin/bash /home/ubuntu/run_cron_job_test.sh affymetrix check_tx_index_transcript_agreement >> /var/log/cron_job_tests.log 2>&1 +0 12 * * MON /bin/bash /home/ubuntu/run_cron_job.sh affymetrix check_brainarray_gene_agreement >> /var/log/cron_job_tests.log 2>&1 +0 12 * * MON /bin/bash /home/ubuntu/run_cron_job.sh affymetrix check_tx_index_transcript_agreement >> /var/log/cron_job_tests.log 2>&1 +0 12 * * ${accession_gathering_job_run_day} /bin/bash /home/ubuntu/run_cron_job.sh foreman gather_weekly_accessions >> /var/log/gather_weekly_accessions.log 2>&1 EOF # install new cron file crontab tempcron diff --git a/infrastructure/instances.tf b/infrastructure/instances.tf index bed2234dd..0628c31d3 100644 --- a/infrastructure/instances.tf +++ b/infrastructure/instances.tf @@ -191,24 +191,22 @@ resource "aws_instance" "foreman_server_1" { aws_security_group_rule.data_refinery_api_outbound, ] - user_data = templatefile("api-configuration/api-server-instance-user-data.tpl.sh", + user_data = templatefile("foreman-configuration/foreman-server-instance-user-data.tpl.sh", { - api_docker_image = var.api_docker_image - api_environment = data.local_file.api_environment.content - data_refinery_cert_bucket = aws_s3_bucket.data_refinery_cert_bucket.id - database_host = aws_instance.pg_bouncer.private_ip - database_name = aws_db_instance.postgres_db.db_name - database_password = var.database_password - database_user = var.database_user - dockerhub_repo = var.dockerhub_repo - elasticsearch_host = aws_elasticsearch_domain.es.endpoint - elasticsearch_port = "80" # AWS doesn't support the data transfer protocol on 9200 >:[ - log_group = aws_cloudwatch_log_group.data_refinery_log_group.name - log_stream = aws_cloudwatch_log_stream.log_stream_api.name - nginx_config = data.local_file.api_nginx_config.content - region = var.region - stage = var.stage - user = var.user + accession_gathering_job_run_day = var.accession_gathering_job_run_day + database_host = aws_instance.pg_bouncer.private_ip + database_name = aws_db_instance.postgres_db.name + database_password = var.database_password + database_user = var.database_user + dockerhub_repo = var.dockerhub_repo + elasticsearch_host = aws_elasticsearch_domain.es.endpoint + elasticsearch_port = var.elasticsearch_port + foreman_docker_image = var.foreman_docker_image + foreman_environment = data.local_file.foreman_environment.content + log_group = aws_cloudwatch_log_group.data_refinery_log_group.name + region = var.region + stage = var.stage + user = var.user } ) key_name = aws_key_pair.data_refinery.key_name diff --git a/infrastructure/variables.tf b/infrastructure/variables.tf index ab2589f14..8bf167971 100644 --- a/infrastructure/variables.tf +++ b/infrastructure/variables.tf @@ -223,6 +223,14 @@ variable "processing_compendia" { default = true } +variable "accession_gathering_job_run_day" { + default = "SAT" +} + +variable "max_accessions_gathered_per_run" { + default = 0 +} + # Output our production environment variables. output "environment_variables" { value = [ From 8b79baecaf8b489add70d04c48fbc967fed626e5 Mon Sep 17 00:00:00 2001 From: Arkadii Yakovets Date: Thu, 6 Oct 2022 14:27:20 -0700 Subject: [PATCH 028/220] Update AMI terraform config. --- ami/instance.tf | 16 +++++++++++----- ami/user-data-script.tf | 16 ---------------- 2 files changed, 11 insertions(+), 21 deletions(-) diff --git a/ami/instance.tf b/ami/instance.tf index 620b13803..41c01ae48 100644 --- a/ami/instance.tf +++ b/ami/instance.tf @@ -1,5 +1,4 @@ provider "aws" { - version = "2.70.0" region = "us-east-1" } @@ -26,10 +25,14 @@ resource "aws_instance" "ubuntu-ami-template-instance" { # Our instance-user-data.sh script is built by Terraform at # apply-time so that it can put additional files onto the # instance. For more information see the definition of this resource. - user_data = data.template_file.ubuntu_instance_user_data.rendered + user_data = templatefile("ubuntu-instance-user-data.tpl.sh", { + docker_apt_key = data.local_file.docker_apt_key.content + } + ) - subnet_id = data.aws_subnet.ccdl_dev_subnet.id associate_public_ip_address = true + key_name = "data-refinery-key-circleci-prod" + subnet_id = data.aws_subnet.ccdl_dev_subnet.id vpc_security_group_ids = [aws_security_group.ami_template_instance.id] tags = { @@ -46,11 +49,14 @@ resource "aws_instance" "ecs-ami-template-instance" { # Our instance-user-data.sh script is built by Terraform at # apply-time so that it can put additional files onto the # instance. For more information see the definition of this resource. - user_data = data.template_file.ecs_instance_user_data.rendered + user_data = templatefile("ecs-instance-user-data.tpl.sh", { + docker_apt_key = data.local_file.docker_apt_key.content + } + ) - subnet_id = data.aws_subnet.ccdl_dev_subnet.id associate_public_ip_address = true key_name = "data-refinery-key-circleci-prod" + subnet_id = data.aws_subnet.ccdl_dev_subnet.id vpc_security_group_ids = [aws_security_group.ami_template_instance.id] tags = { diff --git a/ami/user-data-script.tf b/ami/user-data-script.tf index d5d0718e3..585beacbe 100644 --- a/ami/user-data-script.tf +++ b/ami/user-data-script.tf @@ -2,19 +2,3 @@ data "local_file" "docker_apt_key" { filename = "docker-apt-key.gpg" } - -data "template_file" "ubuntu_instance_user_data" { - template = file("ubuntu-instance-user-data.tpl.sh") - - vars = { - docker_apt_key = data.local_file.docker_apt_key.content - } -} - -data "template_file" "ecs_instance_user_data" { - template = file("ecs-instance-user-data.tpl.sh") - - vars = { - docker_apt_key = data.local_file.docker_apt_key.content - } -} From 7215e1244ed485cbb32c15ee452388d2df175c87 Mon Sep 17 00:00:00 2001 From: Arkadii Yakovets Date: Thu, 6 Oct 2022 17:50:56 -0700 Subject: [PATCH 029/220] Update .gitignore: - exclude terraform files - exclude VSCode project files - exclude `errors.txt` file --- .gitignore | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/.gitignore b/.gitignore index 55b0a1f8e..1a543b4b8 100644 --- a/.gitignore +++ b/.gitignore @@ -17,11 +17,12 @@ foreman/batch-job-specs/* !foreman/batch-job-specs/*.tpl # Terraform -infrastructure/.terraform/ -ami/.terraform/ -.circleci/s3_tfstate/.terraform +.terraform +.terraform.lock.hcl infrastructure/api-configuration/environment infrastructure/foreman-configuration/environment +terraform.tfstate +terraform.tfstate.backup # Files that are created during deploys infrastructure/batch-job-templates/ @@ -141,6 +142,7 @@ dr_env/ #VS Code .vscode +*.code-workspace # OSX .DS_Store @@ -154,3 +156,6 @@ dr_env/ # vim swp files *.*.swp + +# Other +errors.txt From 16fa51e0a9177c9240e910c3cd0ce1582d6f783c Mon Sep 17 00:00:00 2001 From: Arkadii Yakovets Date: Wed, 19 Oct 2022 11:23:40 -0700 Subject: [PATCH 030/220] Refactor `script_directory` setting code. --- api/run_tests.sh | 4 +--- api/serve.sh | 4 +--- api/serve_production.sh | 4 +--- common/run_tests.sh | 4 +--- config/externally_supplied_metadata/metasra/translate.sh | 4 +--- foreman/run_end_to_end_tests.sh | 4 +--- foreman/run_management_command.sh | 4 +--- foreman/run_tests.sh | 4 +--- foreman/test_survey.sh | 4 +--- infrastructure/deploy.sh | 4 +--- infrastructure/destroy_terraform.sh | 4 +--- scripts/create_virtualenv.sh | 4 +--- scripts/format_batch_with_env.sh | 4 +--- scripts/install_all.sh | 4 +--- scripts/kill_all_jobs.sh | 4 +--- scripts/make_migrations.sh | 4 +--- scripts/prepare_image.sh | 4 +--- scripts/rebuild_es_index.sh | 4 +--- scripts/reinit_database.sh | 4 +--- scripts/run_all_tests.sh | 4 +--- scripts/run_manage.sh | 4 +--- scripts/run_postgres.sh | 4 +--- scripts/run_shell.sh | 4 +--- scripts/update_models.sh | 4 +--- scripts/update_my_docker_images.sh | 4 +--- workers/run_command.sh | 4 +--- workers/run_janitor.sh | 4 +--- workers/run_job.sh | 4 +--- workers/run_tests.sh | 4 +--- 29 files changed, 29 insertions(+), 87 deletions(-) diff --git a/api/run_tests.sh b/api/run_tests.sh index 3bf778973..aea19826d 100755 --- a/api/run_tests.sh +++ b/api/run_tests.sh @@ -4,9 +4,7 @@ # This script should always run as if it were being called from # the directory it lives in. -script_directory="$(perl -e 'use File::Basename; - use Cwd "abs_path"; - print dirname(abs_path(@ARGV[0]));' -- "$0")" +script_directory="$(cd "$(dirname "$0")" || exit; pwd)" cd "$script_directory" || exit # However in order to give Docker access to all the code we have to diff --git a/api/serve.sh b/api/serve.sh index f1246e7a9..4bae59fe9 100755 --- a/api/serve.sh +++ b/api/serve.sh @@ -4,9 +4,7 @@ # This script should always run as if it were being called from # the directory it lives in. -script_directory="$(perl -e 'use File::Basename; - use Cwd "abs_path"; - print dirname(abs_path(@ARGV[0]));' -- "$0")" +script_directory="$(cd "$(dirname "$0")" || exit; pwd)" cd "$script_directory" || exit # However in order to give Docker access to all the code we have to diff --git a/api/serve_production.sh b/api/serve_production.sh index 9962b337d..530b237ca 100755 --- a/api/serve_production.sh +++ b/api/serve_production.sh @@ -4,9 +4,7 @@ # This script should always run as if it were being called from # the directory it lives in. -script_directory="$(perl -e 'use File::Basename; - use Cwd "abs_path"; - print dirname(abs_path(@ARGV[0]));' -- "$0")" +script_directory="$(cd "$(dirname "$0")" || exit; pwd)" cd "$script_directory" || exit # However in order to give Docker access to all the code we have to diff --git a/common/run_tests.sh b/common/run_tests.sh index fa5fd1bd1..06de9ac44 100755 --- a/common/run_tests.sh +++ b/common/run_tests.sh @@ -4,9 +4,7 @@ # This script should always run as if it were being called from # the directory it lives in. -script_directory="$(perl -e 'use File::Basename; - use Cwd "abs_path"; - print dirname(abs_path(@ARGV[0]));' -- "$0")" +script_directory="$(cd "$(dirname "$0")" || exit; pwd)" cd "$script_directory" || exit # However in order to give Docker access to all the code we have to diff --git a/config/externally_supplied_metadata/metasra/translate.sh b/config/externally_supplied_metadata/metasra/translate.sh index 9091d9d6b..48d0f4305 100755 --- a/config/externally_supplied_metadata/metasra/translate.sh +++ b/config/externally_supplied_metadata/metasra/translate.sh @@ -11,9 +11,7 @@ PROCESSED_ACCESSIONS_FILE="$(basename -s .tab "$ACCESSIONS_FILE").processed.tab" # This script should always run as if it were being called from # the directory it lives in. -script_directory="$(perl -e 'use File::Basename; - use Cwd "abs_path"; - print dirname(abs_path(@ARGV[0]));' -- "$0")" +script_directory="$(cd "$(dirname "$0")" || exit; pwd)" cd "$script_directory" || exit if ! [ -e "$JSON_FILE" ]; then diff --git a/foreman/run_end_to_end_tests.sh b/foreman/run_end_to_end_tests.sh index 1199b9a19..03e3fd4b8 100755 --- a/foreman/run_end_to_end_tests.sh +++ b/foreman/run_end_to_end_tests.sh @@ -4,9 +4,7 @@ # This script should always run as if it were being called from # the directory it lives in. -script_directory="$(perl -e 'use File::Basename; - use Cwd "abs_path"; - print dirname(abs_path(@ARGV[0]));' -- "$0")" +script_directory="$(cd "$(dirname "$0")" || exit; pwd)" cd "$script_directory" || exit # Set up the data volume directory if it does not already exist. diff --git a/foreman/run_management_command.sh b/foreman/run_management_command.sh index 9ad3bd0f0..08231665a 100755 --- a/foreman/run_management_command.sh +++ b/foreman/run_management_command.sh @@ -4,9 +4,7 @@ # This script should always run as if it were being called from # the directory it lives in. -script_directory="$(perl -e 'use File::Basename; - use Cwd "abs_path"; - print dirname(abs_path(@ARGV[0]));' -- "$0")" +script_directory="$(cd "$(dirname "$0")" || exit; pwd)" cd "$script_directory" || exit # However in order to give Docker access to all the code we have to diff --git a/foreman/run_tests.sh b/foreman/run_tests.sh index f4c594763..a78a128ab 100755 --- a/foreman/run_tests.sh +++ b/foreman/run_tests.sh @@ -4,9 +4,7 @@ # This script should always run as if it were being called from # the directory it lives in. -script_directory="$(perl -e 'use File::Basename; - use Cwd "abs_path"; - print dirname(abs_path(@ARGV[0]));' -- "$0")" +script_directory="$(cd "$(dirname "$0")" || exit; pwd)" cd "$script_directory" || exit # Set up the data volume directory if it does not already exist. diff --git a/foreman/test_survey.sh b/foreman/test_survey.sh index 55e662174..7a4016573 100755 --- a/foreman/test_survey.sh +++ b/foreman/test_survey.sh @@ -48,9 +48,7 @@ fi # This script should always run as if it were being called from # the directory it lives in. -script_directory="$(perl -e 'use File::Basename; - use Cwd "abs_path"; - print dirname(abs_path(@ARGV[0]));' -- "$0")" +script_directory="$(cd "$(dirname "$0")" || exit; pwd)" cd "$script_directory" || exit # Set up the data volume directory if it does not already exist. diff --git a/infrastructure/deploy.sh b/infrastructure/deploy.sh index 47dcab5c6..d8175b423 100755 --- a/infrastructure/deploy.sh +++ b/infrastructure/deploy.sh @@ -2,9 +2,7 @@ # This script should always run as if it were being called from # the directory it lives in. -script_directory="$(perl -e 'use File::Basename; - use Cwd "abs_path"; - print dirname(abs_path(@ARGV[0]));' -- "$0")" +script_directory="$(cd "$(dirname "$0")" || exit; pwd)" cd "$script_directory" || exit print_description() { diff --git a/infrastructure/destroy_terraform.sh b/infrastructure/destroy_terraform.sh index 6a784963b..cf91053e4 100755 --- a/infrastructure/destroy_terraform.sh +++ b/infrastructure/destroy_terraform.sh @@ -2,9 +2,7 @@ # This script should always run as if it were being called from # the directory it lives in. -script_directory="$(perl -e 'use File::Basename; - use Cwd "abs_path"; - print dirname(abs_path(@ARGV[0]));' -- "$0")" +script_directory="$(cd "$(dirname "$0")" || exit; pwd)" cd "$script_directory" || exit print_description() { diff --git a/scripts/create_virtualenv.sh b/scripts/create_virtualenv.sh index 7b1cf4f9a..5857f3f40 100755 --- a/scripts/create_virtualenv.sh +++ b/scripts/create_virtualenv.sh @@ -2,9 +2,7 @@ # This script should always run as if it were being called from # the directory it lives in. -script_directory="$(perl -e 'use File::Basename; - use Cwd "abs_path"; - print dirname(abs_path(@ARGV[0]));' -- "$0")" +script_directory="$(cd "$(dirname "$0")" || exit; pwd)" cd "$script_directory" || exit # However in order to give virtualenv access to all the code we have to diff --git a/scripts/format_batch_with_env.sh b/scripts/format_batch_with_env.sh index 5ab5bd386..a86ee36b5 100755 --- a/scripts/format_batch_with_env.sh +++ b/scripts/format_batch_with_env.sh @@ -105,9 +105,7 @@ fi # This script should always run from the context of the directory of # the project it is building. -script_directory="$(perl -e 'use File::Basename; - use Cwd "abs_path"; - print dirname(abs_path(@ARGV[0]));' -- "$0")" +script_directory="$(cd "$(dirname "$0")" || exit; pwd)" project_directory="$script_directory/.." diff --git a/scripts/install_all.sh b/scripts/install_all.sh index 22a44cc89..0d389712e 100755 --- a/scripts/install_all.sh +++ b/scripts/install_all.sh @@ -8,9 +8,7 @@ TERRAFORM_VERSION="0.13.5" # This script should always run as if it were being called from # the directory it lives in. -script_directory="$(perl -e 'use File::Basename; - use Cwd "abs_path"; - print dirname(abs_path(@ARGV[0]));' -- "$0")" +script_directory="$(cd "$(dirname "$0")" || exit; pwd)" cd "$script_directory" || exit print_description() { diff --git a/scripts/kill_all_jobs.sh b/scripts/kill_all_jobs.sh index e57b3e510..6ef70be94 100755 --- a/scripts/kill_all_jobs.sh +++ b/scripts/kill_all_jobs.sh @@ -2,9 +2,7 @@ # This script should always run as if it were being called from # the directory it lives in. -script_directory="$(perl -e 'use File::Basename; - use Cwd "abs_path"; - print dirname(abs_path(@ARGV[0]));' -- "$0")" +script_directory="$(cd "$(dirname "$0")" || exit; pwd)" cd "$script_directory" || exit while read -r row; do diff --git a/scripts/make_migrations.sh b/scripts/make_migrations.sh index 689799e43..25ef9e6c8 100755 --- a/scripts/make_migrations.sh +++ b/scripts/make_migrations.sh @@ -8,9 +8,7 @@ set -e # This script should always run as if it were being called from # the directory it lives in. -script_directory="$(perl -e 'use File::Basename; - use Cwd "abs_path"; - print dirname(abs_path(@ARGV[0]));' -- "$0")" +script_directory="$(cd "$(dirname "$0")" || exit; pwd)" cd "$script_directory" || exit ./prepare_image.sh -i migrations -s common diff --git a/scripts/prepare_image.sh b/scripts/prepare_image.sh index c1d809367..e791ce589 100755 --- a/scripts/prepare_image.sh +++ b/scripts/prepare_image.sh @@ -2,9 +2,7 @@ # This script should always run as if it were being called from # the directory it lives in. -script_directory="$(perl -e 'use File::Basename; - use Cwd "abs_path"; - print dirname(abs_path(@ARGV[0]));' -- "$0")" +script_directory="$(cd "$(dirname "$0")" || exit; pwd)" cd "$script_directory" || exit # Import the functions in common.sh diff --git a/scripts/rebuild_es_index.sh b/scripts/rebuild_es_index.sh index 17ebe8462..30fded027 100755 --- a/scripts/rebuild_es_index.sh +++ b/scripts/rebuild_es_index.sh @@ -2,9 +2,7 @@ # This script should always run as if it were being called from # the directory it lives in. -script_directory="$(perl -e 'use File::Basename; - use Cwd "abs_path"; - print dirname(abs_path(@ARGV[0]));' -- "$0")" +script_directory="$(cd "$(dirname "$0")" || exit; pwd)" cd "$script_directory" || exit ./run_manage.sh -i api_local -s api search_index --rebuild -f diff --git a/scripts/reinit_database.sh b/scripts/reinit_database.sh index 1f4b01385..18107000d 100755 --- a/scripts/reinit_database.sh +++ b/scripts/reinit_database.sh @@ -5,9 +5,7 @@ # This script should always run as if it were being called from # the directory it lives in. -script_directory="$(perl -e 'use File::Basename; - use Cwd "abs_path"; - print dirname(abs_path(@ARGV[0]));' -- "$0")" +script_directory="$(cd "$(dirname "$0")" || exit; pwd)" cd "$script_directory" || exit # Clear it out. diff --git a/scripts/run_all_tests.sh b/scripts/run_all_tests.sh index 0d2f68985..9372e43f2 100755 --- a/scripts/run_all_tests.sh +++ b/scripts/run_all_tests.sh @@ -7,9 +7,7 @@ set -e # This script should always run as if it were being called from # the directory it lives in. -script_directory="$(perl -e 'use File::Basename; - use Cwd "abs_path"; - print dirname(abs_path(@ARGV[0]));' -- "$0")" +script_directory="$(cd "$(dirname "$0")" || exit; pwd)" cd "$script_directory" || exit # Get access to all of the refinebio project diff --git a/scripts/run_manage.sh b/scripts/run_manage.sh index 1a9417d59..9ccb4761d 100755 --- a/scripts/run_manage.sh +++ b/scripts/run_manage.sh @@ -6,9 +6,7 @@ # This script should always run as if it were being called from # the directory it lives in. -script_directory="$(perl -e 'use File::Basename; - use Cwd "abs_path"; - print dirname(abs_path(@ARGV[0]));' -- "$0")" +script_directory="$(cd "$(dirname "$0")" || exit; pwd)" cd "$script_directory" || exit # Import the functions in common.sh diff --git a/scripts/run_postgres.sh b/scripts/run_postgres.sh index 15d43a5dd..2798dc04b 100755 --- a/scripts/run_postgres.sh +++ b/scripts/run_postgres.sh @@ -2,9 +2,7 @@ # This script should always run as if it were being called from # the directory it lives in. -script_directory="$(perl -e 'use File::Basename; - use Cwd "abs_path"; - print dirname(abs_path(@ARGV[0]));' -- "$0")" +script_directory="$(cd "$(dirname "$0")" || exit; pwd)" cd "$script_directory" || exit # Get access to all of refinebio diff --git a/scripts/run_shell.sh b/scripts/run_shell.sh index bb6a2b350..d5be913ad 100755 --- a/scripts/run_shell.sh +++ b/scripts/run_shell.sh @@ -12,9 +12,7 @@ set -e # This script should always run as if it were being called from # the directory it lives in. -script_directory="$(perl -e 'use File::Basename; - use Cwd "abs_path"; - print dirname(abs_path(@ARGV[0]));' -- "$0")" +script_directory="$(cd "$(dirname "$0")" || exit; pwd)" cd "$script_directory" || exit # Import functions in common.sh diff --git a/scripts/update_models.sh b/scripts/update_models.sh index c5ffe72cc..d6648df8f 100755 --- a/scripts/update_models.sh +++ b/scripts/update_models.sh @@ -6,9 +6,7 @@ set -e # This script should always run as if it were being called from # the directory it lives in. -script_directory="$(perl -e 'use File::Basename; - use Cwd "abs_path"; - print dirname(abs_path(@ARGV[0]));' -- "$0")" +script_directory="$(cd "$(dirname "$0")" || exit; pwd)" cd "$script_directory" || exit # Get access to all of refinebio diff --git a/scripts/update_my_docker_images.sh b/scripts/update_my_docker_images.sh index 025e9ad1f..e49d1d542 100755 --- a/scripts/update_my_docker_images.sh +++ b/scripts/update_my_docker_images.sh @@ -8,9 +8,7 @@ set -e # This script should always run as if it were being called from # the directory it lives in. -script_directory="$(perl -e 'use File::Basename; - use Cwd "abs_path"; - print dirname(abs_path(@ARGV[0]));' -- "$0")" +script_directory="$(cd "$(dirname "$0")" || exit; pwd)" cd "$script_directory" || exit # Get access to all of refinebio diff --git a/workers/run_command.sh b/workers/run_command.sh index 7ada45b5e..0edfd614f 100755 --- a/workers/run_command.sh +++ b/workers/run_command.sh @@ -26,9 +26,7 @@ fi # This script should always run as if it were being called from # the directory it lives in. -script_directory="$(perl -e 'use File::Basename; - use Cwd "abs_path"; - print dirname(abs_path(@ARGV[0]));' -- "$0")" +script_directory="$(cd "$(dirname "$0")" || exit; pwd)" cd "$script_directory" || exit # However in order to give Docker access to all the code we have to diff --git a/workers/run_janitor.sh b/workers/run_janitor.sh index e8fbcd9bf..27c6ed6f5 100755 --- a/workers/run_janitor.sh +++ b/workers/run_janitor.sh @@ -1,9 +1,7 @@ #!/bin/sh # the directory it lives in. -script_directory="$(perl -e 'use File::Basename; - use Cwd "abs_path"; - print dirname(abs_path(@ARGV[0]));' -- "$0")" +script_directory="$(cd "$(dirname "$0")" || exit; pwd)" cd "$script_directory" || exit # However in order to give Docker access to all the code we have to diff --git a/workers/run_job.sh b/workers/run_job.sh index 779fa5844..081b94646 100755 --- a/workers/run_job.sh +++ b/workers/run_job.sh @@ -61,9 +61,7 @@ fi # This script should always run as if it were being called from # the directory it lives in. -script_directory="$(perl -e 'use File::Basename; - use Cwd "abs_path"; - print dirname(abs_path(@ARGV[0]));' -- "$0")" +script_directory="$(cd "$(dirname "$0")" || exit; pwd)" cd "$script_directory" || exit # However in order to give Docker access to all the code we have to diff --git a/workers/run_tests.sh b/workers/run_tests.sh index 32f8c7e08..a750b502a 100755 --- a/workers/run_tests.sh +++ b/workers/run_tests.sh @@ -44,9 +44,7 @@ done # This script should always run as if it were being called from # the directory it lives in. -script_directory="$(perl -e 'use File::Basename; - use Cwd "abs_path"; - print dirname(abs_path(@ARGV[0]));' -- "$0")" +script_directory="$(cd "$(dirname "$0")" || exit; pwd)" cd "$script_directory" || exit # However in order to give Docker access to all the code we have to From 042fa9e2ce3deade5ec3d6ea49424d5bd247e294 Mon Sep 17 00:00:00 2001 From: Arkadii Yakovets Date: Fri, 21 Oct 2022 18:11:07 -0700 Subject: [PATCH 031/220] Move all tests to `tests` directory. Extract testing env settings into a separate file (tests/settings.py). Add setup.cfg to the Docker container for coverate.report settings. Update `test_all_endpoints` test to use current job IDs instead of hardcoded '1'. --- .pre-commit-config.yaml | 2 +- api/data_refinery_api/middleware.py | 10 +++- api/data_refinery_api/settings.py | 29 +++++---- api/data_refinery_api/test_imports.py | 16 ----- api/data_refinery_api/urls.py | 14 ++++- api/data_refinery_api/views/api_token.py | 4 +- api/data_refinery_api/views/dataset.py | 60 ++++++++++++++----- api/data_refinery_api/views/experiment.py | 6 +- .../views/experiment_document.py | 5 +- .../views/jobs/downloader_job.py | 2 +- .../views/jobs/processor_job.py | 2 +- .../views/jobs/survey_job.py | 2 +- api/data_refinery_api/views/stats.py | 4 +- api/dockerfiles/Dockerfile.api_local | 1 + .../test => tests}/__init__.py | 0 api/tests/management/__init__.py | 0 api/tests/management/commands/__init__.py | 0 .../commands/test_post_downloads_summary.py | 0 api/tests/settings.py | 10 ++++ api/tests/test_imports.py | 16 +++++ .../test => tests}/test_sentry_middleware.py | 5 +- api/tests/views/__init__.py | 0 .../test => tests/views}/test_api_general.py | 59 ++++++++++-------- .../test => tests/views}/test_compendia.py | 9 ++- .../test => tests/views}/test_dataset.py | 22 +++++-- .../views}/test_dataset_stats.py | 6 +- .../test => tests/views}/test_processor.py | 3 +- .../test => tests/views}/test_qn_target.py | 3 +- .../test => tests/views}/test_search.py | 9 ++- .../test => tests/views}/test_stats.py | 3 +- scripts/common.sh | 2 +- setup.cfg | 28 +++++---- 32 files changed, 219 insertions(+), 113 deletions(-) delete mode 100644 api/data_refinery_api/test_imports.py rename api/{data_refinery_api/test => tests}/__init__.py (100%) create mode 100644 api/tests/management/__init__.py create mode 100644 api/tests/management/commands/__init__.py rename api/{data_refinery_api => tests}/management/commands/test_post_downloads_summary.py (100%) create mode 100644 api/tests/settings.py create mode 100644 api/tests/test_imports.py rename api/{data_refinery_api/test => tests}/test_sentry_middleware.py (96%) create mode 100644 api/tests/views/__init__.py rename api/{data_refinery_api/test => tests/views}/test_api_general.py (93%) rename api/{data_refinery_api/test => tests/views}/test_compendia.py (97%) rename api/{data_refinery_api/test => tests/views}/test_dataset.py (97%) rename api/{data_refinery_api/test => tests/views}/test_dataset_stats.py (96%) rename api/{data_refinery_api/test => tests/views}/test_processor.py (98%) rename api/{data_refinery_api/test => tests/views}/test_qn_target.py (96%) rename api/{data_refinery_api/test => tests/views}/test_search.py (97%) rename api/{data_refinery_api/test => tests/views}/test_stats.py (98%) diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index d024704da..b651ce24a 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -22,7 +22,7 @@ repos: - id: isort - repo: https://github.com/psf/black - rev: 19.10b0 + rev: 22.3.0 hooks: - id: black args: [--line-length=100] diff --git a/api/data_refinery_api/middleware.py b/api/data_refinery_api/middleware.py index a9bd5c503..988dfae59 100644 --- a/api/data_refinery_api/middleware.py +++ b/api/data_refinery_api/middleware.py @@ -25,7 +25,10 @@ def process_response(self, request, response): # create data representation data = client.get_data_from_request(request) data.update( - {"level": logging.WARN, "logger": "BadRequestMiddleware",} + { + "level": logging.WARN, + "logger": "BadRequestMiddleware", + } ) client.captureMessage(message=message, data=data) @@ -40,7 +43,10 @@ def process_exception(self, request, exception): data = client.get_data_from_request(request) data.update( - {"level": logging.WARN, "logger": "BadRequestMiddleware",} + { + "level": logging.WARN, + "logger": "BadRequestMiddleware", + } ) client.captureMessage(message=str(exception), data=data) diff --git a/api/data_refinery_api/settings.py b/api/data_refinery_api/settings.py index 7d2ea00f5..fa3cd2228 100644 --- a/api/data_refinery_api/settings.py +++ b/api/data_refinery_api/settings.py @@ -121,10 +121,18 @@ # https://docs.djangoproject.com/en/1.10/ref/settings/#auth-password-validators AUTH_PASSWORD_VALIDATORS = [ - {"NAME": ("django.contrib.auth.password_validation" + ".UserAttributeSimilarityValidator"),}, - {"NAME": ("django.contrib.auth.password_validation." + "MinimumLengthValidator"),}, - {"NAME": ("django.contrib.auth.password_validation" + ".CommonPasswordValidator"),}, - {"NAME": ("django.contrib.auth.password_validation" + ".NumericPasswordValidator"),}, + { + "NAME": ("django.contrib.auth.password_validation.UserAttributeSimilarityValidator"), + }, + { + "NAME": ("django.contrib.auth.password_validation.MinimumLengthValidator"), + }, + { + "NAME": ("django.contrib.auth.password_validation.CommonPasswordValidator"), + }, + { + "NAME": ("django.contrib.auth.password_validation.NumericPasswordValidator"), + }, ] @@ -228,15 +236,10 @@ } } -if "test" in sys.argv: - ELASTICSEARCH_INDEX_NAMES = { - "data_refinery_common.models.documents": "experiments_test", - } -else: - ELASTICSEARCH_INDEX_NAMES = { - "data_refinery_common.models.documents": "experiments", - } - ELASTICSEARCH_DSL_AUTOSYNC = False +ELASTICSEARCH_INDEX_NAMES = { + "data_refinery_common.models.documents": "experiments", +} +ELASTICSEARCH_DSL_AUTOSYNC = False # ToS TERMS_AND_CONDITIONS = """Welcome to the Alex’s Lemonade Childhood Cancer Data Lab, which is supported by Alex’s Lemonade Stand Foundation ("we," "our," or "us"). These Terms of Use (these "Terms") are a binding legal agreement between you and us regarding your access to and use of the websites located at https://www.ccdatalab.org, https://cognoma.org, http://www.refine.bio or any subdomains thereof and any embedded or associated software, applications, data or other content, provided or managed by us in connection with such websites (collectively, as may be updated, modified or replaced from time to time, the "CCDL"). diff --git a/api/data_refinery_api/test_imports.py b/api/data_refinery_api/test_imports.py deleted file mode 100644 index 2d4d8b2dd..000000000 --- a/api/data_refinery_api/test_imports.py +++ /dev/null @@ -1,16 +0,0 @@ -from django.test import TestCase, tag - - -class ImportTestCase(TestCase): - def test_imports(self): - # Make sure we can import the api tests - import data_refinery_api.management.commands.test_post_downloads_summary - import data_refinery_api.test.test_api_general - import data_refinery_api.test.test_compendia - import data_refinery_api.test.test_dataset - import data_refinery_api.test.test_dataset_stats - import data_refinery_api.test.test_processor - import data_refinery_api.test.test_qn_target - import data_refinery_api.test.test_search - import data_refinery_api.test.test_sentry_middleware - import data_refinery_api.test.test_stats diff --git a/api/data_refinery_api/urls.py b/api/data_refinery_api/urls.py index ff30ee2c6..751e85929 100644 --- a/api/data_refinery_api/urls.py +++ b/api/data_refinery_api/urls.py @@ -59,12 +59,22 @@ def handle404error(request, exception): if not match(r"^/v[1-9]/.*", request.path): message = "refine.bio API resources are only available through versioned requests." - return JsonResponse({"message": message, "docs": url, "status_code": 404,}, status=404) + return JsonResponse( + { + "message": message, + "docs": url, + "status_code": 404, + }, + status=404, + ) def handle500error(request): return JsonResponse( - {"message": "A server error occured. This has been reported.", "status_code": 500,}, + { + "message": "A server error occured. This has been reported.", + "status_code": 500, + }, status=500, ) diff --git a/api/data_refinery_api/views/api_token.py b/api/data_refinery_api/views/api_token.py index 34e73aef9..71da7aabc 100644 --- a/api/data_refinery_api/views/api_token.py +++ b/api/data_refinery_api/views/api_token.py @@ -49,7 +49,9 @@ class Meta: ) @method_decorator( name="retrieve", - decorator=swagger_auto_schema(operation_description="Return details about a specific token.",), + decorator=swagger_auto_schema( + operation_description="Return details about a specific token.", + ), ) @method_decorator( name="update", diff --git a/api/data_refinery_api/views/dataset.py b/api/data_refinery_api/views/dataset.py index cf65489f4..c3699101c 100644 --- a/api/data_refinery_api/views/dataset.py +++ b/api/data_refinery_api/views/dataset.py @@ -221,24 +221,54 @@ class Meta: "worker_version", ) extra_kwargs = { - "data": {"required": True,}, - "id": {"read_only": True,}, - "is_processing": {"read_only": True,}, - "is_processed": {"read_only": True,}, - "is_available": {"read_only": True,}, + "data": { + "required": True, + }, + "id": { + "read_only": True, + }, + "is_processing": { + "read_only": True, + }, + "is_processed": { + "read_only": True, + }, + "is_available": { + "read_only": True, + }, "email_address": {"required": False, "write_only": True}, "email_ccdl_ok": {"required": False, "write_only": True}, "notify_me": {"required": False, "write_only": True}, - "expires_on": {"read_only": True,}, - "s3_bucket": {"read_only": True,}, - "s3_key": {"read_only": True,}, - "success": {"read_only": True,}, - "failure_reason": {"read_only": True,}, - "created_at": {"read_only": True,}, - "last_modified": {"read_only": True,}, - "size_in_bytes": {"read_only": True,}, - "sha1": {"read_only": True,}, - "download_url": {"read_only": True,}, + "expires_on": { + "read_only": True, + }, + "s3_bucket": { + "read_only": True, + }, + "s3_key": { + "read_only": True, + }, + "success": { + "read_only": True, + }, + "failure_reason": { + "read_only": True, + }, + "created_at": { + "read_only": True, + }, + "last_modified": { + "read_only": True, + }, + "size_in_bytes": { + "read_only": True, + }, + "sha1": { + "read_only": True, + }, + "download_url": { + "read_only": True, + }, "worker_version": { "read_only": True, "help_text": "Returns the latest version of refine.bio that was used to build this dataset.", diff --git a/api/data_refinery_api/views/experiment.py b/api/data_refinery_api/views/experiment.py index d7148d509..6ed81f2e8 100644 --- a/api/data_refinery_api/views/experiment.py +++ b/api/data_refinery_api/views/experiment.py @@ -66,7 +66,7 @@ class Meta: @staticmethod def setup_eager_loading(queryset): - """ Perform necessary eager loading of data. """ + """Perform necessary eager loading of data.""" queryset = queryset.prefetch_related("samples").prefetch_related("organisms") # Multiple count annotations @@ -117,7 +117,7 @@ class Meta: class ExperimentListView(generics.ListAPIView): - """ Paginated list of all experiments. Advanced filtering can be done with the `/search` endpoint. """ + """Paginated list of all experiments. Advanced filtering can be done with the `/search` endpoint.""" model = Experiment queryset = Experiment.public_objects.all() @@ -152,7 +152,7 @@ def get_queryset(self): class ExperimentDetailView(generics.RetrieveAPIView): - """ Retrieve details for an experiment given it's accession code """ + """Retrieve details for an experiment given it's accession code""" lookup_field = "accession_code" queryset = Experiment.public_objects.all() diff --git a/api/data_refinery_api/views/experiment_document.py b/api/data_refinery_api/views/experiment_document.py index e1780c791..b1e177a56 100644 --- a/api/data_refinery_api/views/experiment_document.py +++ b/api/data_refinery_api/views/experiment_document.py @@ -276,7 +276,10 @@ class ExperimentDocumentView(DocumentViewSet): # Define filtering fields filter_fields = { - "id": {"field": "_id", "lookups": [LOOKUP_FILTER_RANGE, LOOKUP_QUERY_IN],}, + "id": { + "field": "_id", + "lookups": [LOOKUP_FILTER_RANGE, LOOKUP_QUERY_IN], + }, "technology": "technology", "has_publication": "has_publication", "accession_code": "accession_code", diff --git a/api/data_refinery_api/views/jobs/downloader_job.py b/api/data_refinery_api/views/jobs/downloader_job.py index 730de72e5..33419b54d 100644 --- a/api/data_refinery_api/views/jobs/downloader_job.py +++ b/api/data_refinery_api/views/jobs/downloader_job.py @@ -120,7 +120,7 @@ def get_queryset(self): class DownloaderJobDetailView(generics.RetrieveAPIView): - """ Retrieves a DownloaderJob by ID """ + """Retrieves a DownloaderJob by ID""" lookup_field = "id" model = DownloaderJob diff --git a/api/data_refinery_api/views/jobs/processor_job.py b/api/data_refinery_api/views/jobs/processor_job.py index a7e590e5a..1d86f9cf0 100644 --- a/api/data_refinery_api/views/jobs/processor_job.py +++ b/api/data_refinery_api/views/jobs/processor_job.py @@ -121,7 +121,7 @@ def get_queryset(self): class ProcessorJobDetailView(generics.RetrieveAPIView): - """ Retrieves a ProcessorJob by ID """ + """Retrieves a ProcessorJob by ID""" lookup_field = "id" model = ProcessorJob diff --git a/api/data_refinery_api/views/jobs/survey_job.py b/api/data_refinery_api/views/jobs/survey_job.py index 80d04afdd..b3f492932 100644 --- a/api/data_refinery_api/views/jobs/survey_job.py +++ b/api/data_refinery_api/views/jobs/survey_job.py @@ -90,7 +90,7 @@ def get_queryset(self): class SurveyJobDetailView(generics.RetrieveAPIView): - """ Retrieves a SurveyJob by ID """ + """Retrieves a SurveyJob by ID""" lookup_field = "id" model = SurveyJob diff --git a/api/data_refinery_api/views/stats.py b/api/data_refinery_api/views/stats.py index 19ac6360a..25c7c3fdf 100644 --- a/api/data_refinery_api/views/stats.py +++ b/api/data_refinery_api/views/stats.py @@ -116,7 +116,9 @@ def get_jobs_in_queue(batch_job_queue: str) -> list: while "nextToken" in list_jobs_dict and list_jobs_dict["nextToken"]: list_jobs_dict = batch.list_jobs( - jobQueue=batch_job_queue, jobStatus=status, nextToken=list_jobs_dict["nextToken"], + jobQueue=batch_job_queue, + jobStatus=status, + nextToken=list_jobs_dict["nextToken"], ) jobs.extend(list_jobs_dict["jobSummaryList"]) diff --git a/api/dockerfiles/Dockerfile.api_local b/api/dockerfiles/Dockerfile.api_local index f52c29d4f..5ad7c771f 100644 --- a/api/dockerfiles/Dockerfile.api_local +++ b/api/dockerfiles/Dockerfile.api_local @@ -22,6 +22,7 @@ RUN pip install \ common/$(ls common -1 | sort --version-sort | tail -1) COPY api/ . +COPY setup.cfg . ARG SYSTEM_VERSION diff --git a/api/data_refinery_api/test/__init__.py b/api/tests/__init__.py similarity index 100% rename from api/data_refinery_api/test/__init__.py rename to api/tests/__init__.py diff --git a/api/tests/management/__init__.py b/api/tests/management/__init__.py new file mode 100644 index 000000000..e69de29bb diff --git a/api/tests/management/commands/__init__.py b/api/tests/management/commands/__init__.py new file mode 100644 index 000000000..e69de29bb diff --git a/api/data_refinery_api/management/commands/test_post_downloads_summary.py b/api/tests/management/commands/test_post_downloads_summary.py similarity index 100% rename from api/data_refinery_api/management/commands/test_post_downloads_summary.py rename to api/tests/management/commands/test_post_downloads_summary.py diff --git a/api/tests/settings.py b/api/tests/settings.py new file mode 100644 index 000000000..66f43b2c7 --- /dev/null +++ b/api/tests/settings.py @@ -0,0 +1,10 @@ +""" +Django settings for data_refinery_api project tests. +""" + +from data_refinery_api.settings import * + +ELASTICSEARCH_INDEX_NAMES = { + "data_refinery_common.models.documents": "experiments_test", +} +ELASTICSEARCH_DSL_AUTOSYNC = True diff --git a/api/tests/test_imports.py b/api/tests/test_imports.py new file mode 100644 index 000000000..c7048c3b3 --- /dev/null +++ b/api/tests/test_imports.py @@ -0,0 +1,16 @@ +from django.test import TestCase + + +class ImportTestCase(TestCase): + def test_imports(self): + # Make sure we can import the api tests + import tests.management.commands.test_post_downloads_summary + import tests.views.test_api_general + import tests.views.test_compendia + import tests.views.test_dataset + import tests.views.test_dataset_stats + import tests.views.test_processor + import tests.views.test_qn_target + import tests.views.test_search + import tests.test_sentry_middleware + import tests.views.test_stats diff --git a/api/data_refinery_api/test/test_sentry_middleware.py b/api/tests/test_sentry_middleware.py similarity index 96% rename from api/data_refinery_api/test/test_sentry_middleware.py rename to api/tests/test_sentry_middleware.py index edd158e7e..840bea545 100644 --- a/api/data_refinery_api/test/test_sentry_middleware.py +++ b/api/tests/test_sentry_middleware.py @@ -5,8 +5,9 @@ from rest_framework import status from rest_framework.test import APITestCase -from data_refinery_api.test.test_api_general import API_VERSION -from data_refinery_api.views import DatasetView, ExperimentListView +from tests.views.test_api_general import API_VERSION + +from data_refinery_api.views import ExperimentListView class APITestCases(APITestCase): diff --git a/api/tests/views/__init__.py b/api/tests/views/__init__.py new file mode 100644 index 000000000..e69de29bb diff --git a/api/data_refinery_api/test/test_api_general.py b/api/tests/views/test_api_general.py similarity index 93% rename from api/data_refinery_api/test/test_api_general.py rename to api/tests/views/test_api_general.py index 7b48cc803..8d0b76358 100644 --- a/api/data_refinery_api/test/test_api_general.py +++ b/api/tests/views/test_api_general.py @@ -205,7 +205,7 @@ def setUp(self): return def tearDown(self): - """ Good bye """ + """Good bye""" cache.clear() Experiment.objects.all().delete() ExperimentAnnotation.objects.all().delete() @@ -256,11 +256,12 @@ def test_all_endpoints(self): response = self.client.get(reverse("survey_jobs", kwargs={"version": API_VERSION})) self.assertEqual(response.status_code, status.HTTP_200_OK) - self.assertFalse(response.data["results"][0]["is_queued"]) + job = response.data["results"][0] + self.assertFalse(job["is_queued"]) cache.clear() response = self.client.get( - reverse("survey_jobs", kwargs={"version": API_VERSION}) + "1/" # change back + reverse("survey_jobs_detail", kwargs={"id": job["id"], "version": API_VERSION}) ) self.assertEqual(response.status_code, status.HTTP_200_OK) self.assertFalse(response.data["is_queued"]) @@ -268,16 +269,15 @@ def test_all_endpoints(self): response = self.client.get(reverse("downloader_jobs", kwargs={"version": API_VERSION})) self.assertEqual(response.status_code, status.HTTP_200_OK) - self.assertFalse(response.data["results"][0]["is_queued"]) + job = response.data["results"][0] + self.assertFalse(job["is_queued"]) cache.clear() - # Don't know the best way to deal with this, but since the - # other tests in different files create objects which are then - # deleted, the new objects from these tests will have - # different IDs. In this case, since this file is ran first, - # the IDs are 1, but this may be a problem in the future. response = self.client.get( - reverse("downloader_jobs", kwargs={"version": API_VERSION}) + "1/" # change back + reverse( + "downloader_jobs_detail", + kwargs={"id": job["id"], "version": API_VERSION}, + ) ) self.assertEqual(response.status_code, status.HTTP_200_OK) self.assertFalse(response.data["is_queued"]) @@ -285,11 +285,15 @@ def test_all_endpoints(self): response = self.client.get(reverse("processor_jobs", kwargs={"version": API_VERSION})) self.assertEqual(response.status_code, status.HTTP_200_OK) - self.assertFalse(response.data["results"][0]["is_queued"]) + job = response.data["results"][0] + self.assertFalse(job["is_queued"]) cache.clear() response = self.client.get( - reverse("processor_jobs", kwargs={"version": API_VERSION}) + "1/" + reverse( + "processor_jobs_detail", + kwargs={"id": job["id"], "version": API_VERSION}, + ) ) self.assertEqual(response.status_code, status.HTTP_200_OK) self.assertFalse(response.data["is_queued"]) @@ -301,9 +305,12 @@ def test_all_endpoints(self): response = self.client.get(reverse("results", kwargs={"version": API_VERSION})) self.assertEqual(response.status_code, status.HTTP_200_OK) + result = response.data["results"][0] cache.clear() - response = self.client.get(reverse("results", kwargs={"version": API_VERSION}) + "1/") + response = self.client.get( + reverse("results_detail", kwargs={"id": result["id"], "version": API_VERSION}) + ) self.assertEqual(response.status_code, status.HTTP_200_OK) cache.clear() @@ -311,16 +318,14 @@ def test_all_endpoints(self): self.assertEqual(response.status_code, status.HTTP_200_OK) cache.clear() - response = self.client.get( - reverse("transcriptome_indices", kwargs={"version": API_VERSION}) - + "?organism__name=DANIO_RERIO" + transcriptome_indices_url = reverse( + "transcriptome_indices", kwargs={"version": API_VERSION} ) + response = self.client.get(f"{transcriptome_indices_url}?organism__name=DANIO_RERIO") self.assertEqual(response.status_code, status.HTTP_200_OK) cache.clear() - response = self.client.get( - reverse("transcriptome_indices", kwargs={"version": API_VERSION}) + "?result_id=1" - ) + response = self.client.get(f"{transcriptome_indices_url}?result_id={result['id']}") self.assertEqual(response.status_code, status.HTTP_200_OK) cache.clear() @@ -415,14 +420,16 @@ def test_sample_pagination(self): cache.clear() response = self.client.get( - reverse("samples", kwargs={"version": API_VERSION}), {"limit": 1, "ordering": "-title"} + reverse("samples", kwargs={"version": API_VERSION}), + {"limit": 1, "ordering": "-title"}, ) self.assertEqual(response.status_code, status.HTTP_200_OK) self.assertEqual(response.json()["results"][0]["title"], "789") cache.clear() response = self.client.get( - reverse("samples", kwargs={"version": API_VERSION}), {"limit": 1, "ordering": "title"} + reverse("samples", kwargs={"version": API_VERSION}), + {"limit": 1, "ordering": "title"}, ) self.assertEqual(response.status_code, status.HTTP_200_OK) self.assertEqual(response.json()["results"][0]["title"], "123") @@ -460,7 +467,10 @@ def test_fetching_experiment_samples(self): def test_sample_detail_experiment_accessions(self): response = self.client.get( - reverse("samples_detail", kwargs={"version": API_VERSION, "accession_code": "789"}) + reverse( + "samples_detail", + kwargs={"version": API_VERSION, "accession_code": "789"}, + ) ) self.assertEqual(response.status_code, status.HTTP_200_OK) self.assertEqual(response.json()["experiment_accession_codes"], ["GSE123"]) @@ -483,7 +493,7 @@ def test_fetching_organism_index(self): self.assertEqual(response.status_code, 404) def test_processed_samples_only(self): - """ Don't return unprocessed samples """ + """Don't return unprocessed samples""" experiment = Experiment() experiment.accession_code = "GSX12345" experiment.is_public = True @@ -552,7 +562,8 @@ def test_create_token(self): # Now activate using a second request response = self.client.post( - reverse("token", kwargs={"version": API_VERSION}), content_type="application/json" + reverse("token", kwargs={"version": API_VERSION}), + content_type="application/json", ) self.assertEqual(response.status_code, 201) token = response.json() diff --git a/api/data_refinery_api/test/test_compendia.py b/api/tests/views/test_compendia.py similarity index 97% rename from api/data_refinery_api/test/test_compendia.py rename to api/tests/views/test_compendia.py index 0cfb2c19c..e837677f0 100644 --- a/api/data_refinery_api/test/test_compendia.py +++ b/api/tests/views/test_compendia.py @@ -3,7 +3,8 @@ from django.urls import reverse from rest_framework.test import APITestCase -from data_refinery_api.test.test_api_general import API_VERSION +from tests.views.test_api_general import API_VERSION + from data_refinery_common.models import ( CompendiumResult, ComputationalResult, @@ -76,7 +77,8 @@ def test_compendia(self): drc1.save() response = self.client.get( - reverse("computed_files", kwargs={"version": API_VERSION}), {"is_compendia": True} + reverse("computed_files", kwargs={"version": API_VERSION}), + {"is_compendia": True}, ) response_json = response.json()["results"] self.assertEqual(3, len(response_json)) @@ -124,7 +126,8 @@ def test_organism_has_compendia(self): self.assertEqual(2, len(response_json)) response = self.client.get( - reverse("organisms", kwargs={"version": API_VERSION}), {"has_compendia": True}, + reverse("organisms", kwargs={"version": API_VERSION}), + {"has_compendia": True}, ) response_json = response.json()["results"] self.assertEqual(1, len(response_json)) diff --git a/api/data_refinery_api/test/test_dataset.py b/api/tests/views/test_dataset.py similarity index 97% rename from api/data_refinery_api/test/test_dataset.py rename to api/tests/views/test_dataset.py index e360c8407..bf6e7a4ea 100644 --- a/api/data_refinery_api/test/test_dataset.py +++ b/api/tests/views/test_dataset.py @@ -6,7 +6,8 @@ from rest_framework import status from rest_framework.test import APITestCase -from data_refinery_api.test.test_api_general import API_VERSION +from tests.views.test_api_general import API_VERSION + from data_refinery_common.models import ( ComputationalResult, ComputationalResultAnnotation, @@ -205,7 +206,12 @@ def test_create_dataset_fails_without_email(self): # Good, except for empty email. jdata = json.dumps( - {"start": True, "data": {"GSE123": ["789"]}, "token_id": token_id, "email_address": "",} + { + "start": True, + "data": {"GSE123": ["789"]}, + "token_id": token_id, + "email_address": "", + } ) response = self.client.post( reverse("create_dataset", kwargs={"version": API_VERSION}), @@ -328,7 +334,8 @@ def test_dataset_adding_non_downloadable_samples_fails(self): ) self.assertEqual(response.status_code, 400) self.assertIn( - "Non-downloadable sample(s) in dataset", response.json()["message"], + "Non-downloadable sample(s) in dataset", + response.json()["message"], ) self.assertEqual(response.json()["details"], ["456"]) cache.clear() @@ -341,7 +348,8 @@ def test_dataset_adding_non_downloadable_samples_fails(self): content_type="application/json", ) self.assertIn( - "Sample(s) in dataset do not exist on refine", response.json()["message"], + "Sample(s) in dataset do not exist on refine", + response.json()["message"], ) self.assertEqual(response.status_code, 400) cache.clear() @@ -374,7 +382,8 @@ def test_dataset_adding_non_downloadable_samples_fails(self): ) self.assertEqual(response.status_code, 400) self.assertIn( - "Sample(s) in dataset are missing quant.sf files", response.json()["message"], + "Sample(s) in dataset are missing quant.sf files", + response.json()["message"], ) self.assertEqual(response.json()["details"], ["456"]) cache.clear() @@ -394,7 +403,8 @@ def test_dataset_adding_non_downloadable_samples_fails(self): ) self.assertEqual(response.status_code, 400) self.assertIn( - "Experiment(s) in dataset have zero downloadable samples", response.json()["message"], + "Experiment(s) in dataset have zero downloadable samples", + response.json()["message"], ) self.assertEqual(response.json()["details"], ["GSE123"]) cache.clear() diff --git a/api/data_refinery_api/test/test_dataset_stats.py b/api/tests/views/test_dataset_stats.py similarity index 96% rename from api/data_refinery_api/test/test_dataset_stats.py rename to api/tests/views/test_dataset_stats.py index 6c14181d8..7a0633e69 100644 --- a/api/data_refinery_api/test/test_dataset_stats.py +++ b/api/tests/views/test_dataset_stats.py @@ -1,10 +1,10 @@ import json from django.urls import reverse -from rest_framework import status from rest_framework.test import APITestCase -from data_refinery_api.test.test_api_general import API_VERSION +from tests.views.test_api_general import API_VERSION + from data_refinery_common.models import ( Experiment, ExperimentOrganismAssociation, @@ -20,7 +20,7 @@ def setUp(self): self.homo_sapiens.save() def test_dataset_stats(self): - """ Test the dataset stats endpoint """ + """Test the dataset stats endpoint""" gallus_gallus = Organism(name="GALLUS_GALLUS", taxonomy_id=9031, is_scientific_name=True) gallus_gallus.save() diff --git a/api/data_refinery_api/test/test_processor.py b/api/tests/views/test_processor.py similarity index 98% rename from api/data_refinery_api/test/test_processor.py rename to api/tests/views/test_processor.py index f5f49d8db..88932e313 100644 --- a/api/data_refinery_api/test/test_processor.py +++ b/api/tests/views/test_processor.py @@ -2,7 +2,8 @@ from rest_framework import status from rest_framework.test import APITestCase -from data_refinery_api.test.test_api_general import API_VERSION +from tests.views.test_api_general import API_VERSION + from data_refinery_common.models import ( ComputationalResult, Organism, diff --git a/api/data_refinery_api/test/test_qn_target.py b/api/tests/views/test_qn_target.py similarity index 96% rename from api/data_refinery_api/test/test_qn_target.py rename to api/tests/views/test_qn_target.py index 7443c731b..b03af1e3b 100644 --- a/api/data_refinery_api/test/test_qn_target.py +++ b/api/tests/views/test_qn_target.py @@ -1,7 +1,8 @@ from django.urls import reverse from rest_framework.test import APITestCase -from data_refinery_api.test.test_api_general import API_VERSION +from tests.views.test_api_general import API_VERSION + from data_refinery_common.models import ComputationalResult, ComputationalResultAnnotation, Organism diff --git a/api/data_refinery_api/test/test_search.py b/api/tests/views/test_search.py similarity index 97% rename from api/data_refinery_api/test/test_search.py rename to api/tests/views/test_search.py index a7a5c05b6..f28c8ae9b 100644 --- a/api/data_refinery_api/test/test_search.py +++ b/api/tests/views/test_search.py @@ -6,7 +6,8 @@ from django.urls import reverse from rest_framework.test import APITestCase -from data_refinery_api.test.test_api_general import API_VERSION +from tests.views.test_api_general import API_VERSION + from data_refinery_common.models import ( ComputationalResult, ComputationalResultAnnotation, @@ -66,7 +67,11 @@ def setUpClass(cls): sample.accession_code = "123" sample.save() - organism = Organism(name=ECOLI_STRAIN_NAME, taxonomy_id=879462, is_scientific_name=True,) + organism = Organism( + name=ECOLI_STRAIN_NAME, + taxonomy_id=879462, + is_scientific_name=True, + ) organism.save() sample = Sample() diff --git a/api/data_refinery_api/test/test_stats.py b/api/tests/views/test_stats.py similarity index 98% rename from api/data_refinery_api/test/test_stats.py rename to api/tests/views/test_stats.py index a724ef5c9..28426182f 100644 --- a/api/data_refinery_api/test/test_stats.py +++ b/api/tests/views/test_stats.py @@ -4,7 +4,8 @@ from django.urls import reverse from rest_framework.test import APITestCase -from data_refinery_api.test.test_api_general import API_VERSION +from tests.views.test_api_general import API_VERSION + from data_refinery_api.views.stats import get_batch_jobs_breakdown QUEUE_NAMES = [ diff --git a/scripts/common.sh b/scripts/common.sh index db91ab9a1..612de1a7b 100755 --- a/scripts/common.sh +++ b/scripts/common.sh @@ -20,7 +20,7 @@ get_docker_es_ip_address () { # then exit with the appropriate code. # This is done a function so arguments to the tests can be passed through. run_tests_with_coverage () { - COVERAGE="coverage run --source=\".\" manage.py test --no-input $*; exit_code=\$?;" + COVERAGE="coverage run --source=\".\" manage.py test --settings=tests.settings --no-input $*; exit_code=\$?;" SAVE_REPORT="coverage xml -o data_store/coverage.xml;" PRINT_REPORT="coverage report -m;" RETURN="exit \$exit_code" diff --git a/setup.cfg b/setup.cfg index 677a0f31c..8b9a8a747 100644 --- a/setup.cfg +++ b/setup.cfg @@ -1,20 +1,26 @@ +[coverage:report] +include = + data_refinery_api/* +omit = + data_refinery_api/wsgi.py + [pep8] -max-line-length: 100 +max-line-length = 100 [flake8] -max-line-length: 100 ignore = E203 +max-line-length = 100 [isort] # Settings for compatibility with black. -line_length = 100 -use_parentheses = True -multi_line_output = 3 -include_trailing_comma = True -combine_as_imports = True -known_django=django, rest_framework -known_first_party=data_refinery_api,data_refinery_common,data_refinery_foreman,data_refinery_workers -default_section=THIRDPARTY -sections=FUTURE,STDLIB,DJANGO,THIRDPARTY,FIRSTPARTY,LOCALFOLDER +combine_as_imports = true combine_star = true +default_section = THIRDPARTY +include_trailing_comma = true +known_django = django,rest_framework +known_first_party = data_refinery_api,data_refinery_common,data_refinery_foreman,data_refinery_workers length_sort = false +line_length = 100 +multi_line_output = 3 +sections = FUTURE,STDLIB,DJANGO,THIRDPARTY,FIRSTPARTY,LOCALFOLDER +use_parentheses = true From a3a21bf261e8744d10e1b099bde66e1854a7b784 Mon Sep 17 00:00:00 2001 From: Arkadii Yakovets Date: Mon, 24 Oct 2022 17:48:37 -0700 Subject: [PATCH 032/220] Update `validate_dataset` to allow for experiments with duplicate samples. Change some checks to more readable versions. Use sets instead of lists for entity IDs tracking (accessions, experiments). Get rid of str + str. --- api/data_refinery_api/views/dataset.py | 34 +++++++------- api/tests/views/test_dataset.py | 62 +++++++++++++++++++++++++- 2 files changed, 78 insertions(+), 18 deletions(-) diff --git a/api/data_refinery_api/views/dataset.py b/api/data_refinery_api/views/dataset.py index c3699101c..87d4c69ed 100644 --- a/api/data_refinery_api/views/dataset.py +++ b/api/data_refinery_api/views/dataset.py @@ -75,60 +75,60 @@ def validate_dataset(data): if data.get("data") is None or type(data["data"]) != dict: raise InvalidData("`data` must be a dict of lists.") - if data.get("start") and len(data["data"]) == 0: + if data.get("start") and not data["data"]: raise InvalidData("`data` must contain at least one experiment.") - accessions = [] - non_downloadable_experiments = [] + accessions = set() + non_downloadable_experiments = set() + for key, value in data["data"].items(): if type(value) != list: - raise InvalidData("`data` must be a dict of lists. Problem with `" + str(key) + "`") + raise InvalidData(f"`data` must be a dict of lists. Problem with `{key}`") - if len(value) < 1: + if not value: raise InvalidData( - "`data` must be a dict of lists, each with one or more elements. Problem with `" - + str(key) - + "`" + "`data` must be a dict of lists, each with one or more elements. " + f"Problem with `{key}`" ) if len(value) != len(set(value)): - raise InvalidData("Duplicate values detected in " + str(value)) + raise InvalidData(f"Duplicate values detected in {value}") # If they want "ALL", just make sure that the experiment has at least one downloadable sample if value == ["ALL"]: if not experiment_has_downloadable_samples( key, quant_sf_only=data.get("quant_sf_only", False) ): - non_downloadable_experiments.append(key) + non_downloadable_experiments.add(key) # Otherwise, we will check that all the samples they requested are downloadable else: - accessions.extend(value) + accessions.update(value) - if len(non_downloadable_experiments) != 0: + if non_downloadable_experiments: raise InvalidData( message="Experiment(s) in dataset have zero downloadable samples. See `details` for a full list", details=non_downloadable_experiments, ) - if len(accessions) == 0: + if not accessions: return samples = Sample.public_objects.filter(accession_code__in=accessions) if samples.count() != len(accessions): raise InvalidData( message="Sample(s) in dataset do not exist on refine.bio. See `details` for a full list", - details=list(set(accessions) - set(s.accession_code for s in samples)), + details=list(accessions - set(s.accession_code for s in samples)), ) - if data.get("quant_sf_only", False): + if data.get("quant_sf_only"): samples_without_quant_sf = samples.exclude( # Exclude samples that have at least one uploaded quant.sf file associated with them results__computedfile__filename="quant.sf", results__computedfile__s3_key__isnull=False, results__computedfile__s3_bucket__isnull=False, ) - if samples_without_quant_sf.count() > 0: + if samples_without_quant_sf.count(): raise InvalidData( message="Sample(s) in dataset are missing quant.sf files. See `details` for a full list", details=[s.accession_code for s in samples_without_quant_sf], @@ -136,7 +136,7 @@ def validate_dataset(data): else: unprocessed_samples = samples.exclude(is_processed=True) - if unprocessed_samples.count() > 0: + if unprocessed_samples.count(): raise InvalidData( message="Non-downloadable sample(s) in dataset. See `details` for a full list", details=[s.accession_code for s in unprocessed_samples], diff --git a/api/tests/views/test_dataset.py b/api/tests/views/test_dataset.py index bf6e7a4ea..f2a65bb55 100644 --- a/api/tests/views/test_dataset.py +++ b/api/tests/views/test_dataset.py @@ -348,7 +348,7 @@ def test_dataset_adding_non_downloadable_samples_fails(self): content_type="application/json", ) self.assertIn( - "Sample(s) in dataset do not exist on refine", + "Sample(s) in dataset do not exist on refine.bio", response.json()["message"], ) self.assertEqual(response.status_code, 400) @@ -707,3 +707,63 @@ def test_create_dataset_notify_me(self): ds.refresh_from_db() self.assertFalse(ds.notify_me) + + def test_add_dataset_multiple_experiment_sample(self): + response = self.client.post( + reverse("token", kwargs={"version": API_VERSION}), + json.dumps({"is_activated": True}), + content_type="application/json", + ) + token_id = response.json()["id"] + + response = self.client.post( + reverse("create_dataset", kwargs={"version": API_VERSION}), + json.dumps( + { + "data": { + "GSE000": ["789"], + }, + "token_id": token_id, + } + ), + content_type="application/json", + ) + self.assertEqual(response.status_code, 201) + + data_set_id = response.json()["id"] + data = { + "GSE000": ["789"], + "GSE123": ["789"], + } + response = self.client.put( + reverse("dataset", kwargs={"id": data_set_id, "version": API_VERSION}), + json.dumps( + { + "data": data, + "token_id": token_id, + } + ), + content_type="application/json", + ) + self.assertEqual(response.status_code, 200) + + data_set = Dataset.objects.get(id=data_set_id) + self.assertEqual(data_set.data, data) + + data = { + "GSE000": ["789"], + } + response = self.client.put( + reverse("dataset", kwargs={"id": data_set_id, "version": API_VERSION}), + json.dumps( + { + "data": data, + "token_id": token_id, + } + ), + content_type="application/json", + ) + self.assertEqual(response.status_code, 200) + + data_set.refresh_from_db() + self.assertEqual(data_set.data, data) From d2d997c37ea3888775b1f69ef0b3d986e63f1de5 Mon Sep 17 00:00:00 2001 From: Arkadii Yakovets Date: Mon, 31 Oct 2022 16:48:41 -0700 Subject: [PATCH 033/220] Optimize rna-seq accessions gathering. --- .../gatherer/agents/rnaseq_agent.py | 33 +++++++------------ 1 file changed, 12 insertions(+), 21 deletions(-) diff --git a/foreman/data_refinery_foreman/gatherer/agents/rnaseq_agent.py b/foreman/data_refinery_foreman/gatherer/agents/rnaseq_agent.py index 9f2f54e3a..574a91109 100644 --- a/foreman/data_refinery_foreman/gatherer/agents/rnaseq_agent.py +++ b/foreman/data_refinery_foreman/gatherer/agents/rnaseq_agent.py @@ -34,10 +34,7 @@ class RNASeqAgent(AccessionAgentBase): def __str__(self): return "RNA-Seq accession agent" - def __str__(self): - return "RNA-Seq accession agent" - - def build_query(self, taxon_id: str = None) -> str: + def build_query(self, taxon_ids: tuple = None) -> str: """ Returns a query to use for getting specific taxon ID accessions. Some special characters must remain unquoted. @@ -69,6 +66,7 @@ def build_query(self, taxon_id: str = None) -> str: ) instrument_models = OR.join((f'instrument_model="{im}"' for im in instrument_models)) + taxon_ids = OR.join((f"tax_eq({taxon_id})" for taxon_id in taxon_ids)) conditions = [ # Relevant date fields: collection_date, collection_date_submitted, # first_public, last_updated. @@ -79,8 +77,8 @@ def build_query(self, taxon_id: str = None) -> str: 'library_strategy="RNA-Seq"', ] - if taxon_id: - conditions.append(f"tax_eq({taxon_id})") + if taxon_ids: + conditions.append(f"({taxon_ids})") elif self.keyword: search_fields = ( "assembly_software", @@ -118,26 +116,19 @@ def collect_data(self) -> Set[str]: accessions = set() if self.ids: - logger.debug( - f"Getting RNA-Seq entries by taxon ID(s): " + logger.info( + f"Getting {self.count or 'all'} RNA-Seq entries by taxon ID(s): " f"{', '.join((str(i) for i in self.ids))} for [{self.since} - {self.until}] range." ) - total = len(self.ids) - for idx, taxon_id in enumerate(self.ids): - if self.count and len(accessions) >= self.count: - break - - if total > 1: - logger.debug(f"Getting entries for taxon ID {taxon_id}, {idx + 1} of {total}.") - accessions.update(self.fetch_data(taxon_id=taxon_id)) + accessions.update(self.fetch_data(taxon_ids=self.ids)) elif self.keyword: - logger.debug( + logger.info( f'Getting RNA-Seq entries by "{self.keyword}" keyword ' f"for [{self.since} - {self.until}] range." ) accessions.update(self.fetch_data()) elif self.organism: - logger.debug( + logger.info( f'Getting entries by "{self.organism}" organism ' f"for [{self.since} - {self.until}] range." ) @@ -145,7 +136,7 @@ def collect_data(self) -> Set[str]: return accessions - def fetch_data(self, taxon_id=None) -> Set[str]: + def fetch_data(self, taxon_ids=None) -> Set[str]: """ Retrieves accessions from API search endpoint. The API allows to set limit to 0 (get all in one request) but we do @@ -171,14 +162,14 @@ def get_response(url, **kwargs): "format": "json", "limit": self.DATA_CHUNK_SIZE, "offset": 0, - "query": self.build_query(taxon_id=taxon_id), + "query": self.build_query(taxon_ids=taxon_ids), "result": "read_study", "sortFields": fields, } is_done = False while not is_done: - logger.debug( + logger.info( f"Processing entries {data['offset'] + 1} - {data['offset'] + self.DATA_CHUNK_SIZE}" ) entries = () From 8b5808a8c782060f05565f31c8009f43295ec059 Mon Sep 17 00:00:00 2001 From: Arkadii Yakovets Date: Mon, 31 Oct 2022 16:52:09 -0700 Subject: [PATCH 034/220] Revert "Optimize rna-seq accessions gathering." This reverts commit d2d997c37ea3888775b1f69ef0b3d986e63f1de5. --- .../gatherer/agents/rnaseq_agent.py | 33 ++++++++++++------- 1 file changed, 21 insertions(+), 12 deletions(-) diff --git a/foreman/data_refinery_foreman/gatherer/agents/rnaseq_agent.py b/foreman/data_refinery_foreman/gatherer/agents/rnaseq_agent.py index 574a91109..9f2f54e3a 100644 --- a/foreman/data_refinery_foreman/gatherer/agents/rnaseq_agent.py +++ b/foreman/data_refinery_foreman/gatherer/agents/rnaseq_agent.py @@ -34,7 +34,10 @@ class RNASeqAgent(AccessionAgentBase): def __str__(self): return "RNA-Seq accession agent" - def build_query(self, taxon_ids: tuple = None) -> str: + def __str__(self): + return "RNA-Seq accession agent" + + def build_query(self, taxon_id: str = None) -> str: """ Returns a query to use for getting specific taxon ID accessions. Some special characters must remain unquoted. @@ -66,7 +69,6 @@ def build_query(self, taxon_ids: tuple = None) -> str: ) instrument_models = OR.join((f'instrument_model="{im}"' for im in instrument_models)) - taxon_ids = OR.join((f"tax_eq({taxon_id})" for taxon_id in taxon_ids)) conditions = [ # Relevant date fields: collection_date, collection_date_submitted, # first_public, last_updated. @@ -77,8 +79,8 @@ def build_query(self, taxon_ids: tuple = None) -> str: 'library_strategy="RNA-Seq"', ] - if taxon_ids: - conditions.append(f"({taxon_ids})") + if taxon_id: + conditions.append(f"tax_eq({taxon_id})") elif self.keyword: search_fields = ( "assembly_software", @@ -116,19 +118,26 @@ def collect_data(self) -> Set[str]: accessions = set() if self.ids: - logger.info( - f"Getting {self.count or 'all'} RNA-Seq entries by taxon ID(s): " + logger.debug( + f"Getting RNA-Seq entries by taxon ID(s): " f"{', '.join((str(i) for i in self.ids))} for [{self.since} - {self.until}] range." ) - accessions.update(self.fetch_data(taxon_ids=self.ids)) + total = len(self.ids) + for idx, taxon_id in enumerate(self.ids): + if self.count and len(accessions) >= self.count: + break + + if total > 1: + logger.debug(f"Getting entries for taxon ID {taxon_id}, {idx + 1} of {total}.") + accessions.update(self.fetch_data(taxon_id=taxon_id)) elif self.keyword: - logger.info( + logger.debug( f'Getting RNA-Seq entries by "{self.keyword}" keyword ' f"for [{self.since} - {self.until}] range." ) accessions.update(self.fetch_data()) elif self.organism: - logger.info( + logger.debug( f'Getting entries by "{self.organism}" organism ' f"for [{self.since} - {self.until}] range." ) @@ -136,7 +145,7 @@ def collect_data(self) -> Set[str]: return accessions - def fetch_data(self, taxon_ids=None) -> Set[str]: + def fetch_data(self, taxon_id=None) -> Set[str]: """ Retrieves accessions from API search endpoint. The API allows to set limit to 0 (get all in one request) but we do @@ -162,14 +171,14 @@ def get_response(url, **kwargs): "format": "json", "limit": self.DATA_CHUNK_SIZE, "offset": 0, - "query": self.build_query(taxon_ids=taxon_ids), + "query": self.build_query(taxon_id=taxon_id), "result": "read_study", "sortFields": fields, } is_done = False while not is_done: - logger.info( + logger.debug( f"Processing entries {data['offset'] + 1} - {data['offset'] + self.DATA_CHUNK_SIZE}" ) entries = () From 6ee639400058ba94d7db6e0754f065d8b48c4164 Mon Sep 17 00:00:00 2001 From: Arkadii Yakovets Date: Mon, 31 Oct 2022 16:59:06 -0700 Subject: [PATCH 035/220] Update logging. --- .../management/commands/gather_accessions.py | 23 +++++++++---------- 1 file changed, 11 insertions(+), 12 deletions(-) diff --git a/foreman/data_refinery_foreman/gatherer/management/commands/gather_accessions.py b/foreman/data_refinery_foreman/gatherer/management/commands/gather_accessions.py index f3f644a91..3e50dac28 100644 --- a/foreman/data_refinery_foreman/gatherer/management/commands/gather_accessions.py +++ b/foreman/data_refinery_foreman/gatherer/management/commands/gather_accessions.py @@ -14,7 +14,6 @@ from django.template.defaultfilters import pluralize from data_refinery_common.logging import get_and_configure_logger -from data_refinery_common.models import gathered_accession from data_refinery_common.models.gathered_accession import GatheredAccession from data_refinery_foreman.gatherer.agents.ae_agent import AEAgent from data_refinery_foreman.gatherer.agents.geo_agent import GEOAgent @@ -203,24 +202,22 @@ def handle(self, *args, **options): agents.append(cls(options)) gathered_accessions = set() - gathered_accessions_count = 0 for agent in agents: agent_accessions = agent.collect_data() agent_accessions_count = len(agent_accessions) gathered_accessions.update(agent_accessions) - gathered_accessions_count += agent_accessions_count logger.info( - f"{agent} gathered {agent_accessions_count} " - f"new accession{pluralize(gathered_accessions_count)} since {options['since']}." + f"Since {options['since']} {agent} has gathered {agent_accessions_count} " + f"new accession{pluralize(agent_accessions_count)}." ) gathered_accessions = sorted( # Sort the resulting list. - (ga for ga in gathered_accessions if self.RE_ACCESSION.match(ga.code)), + (ga for ga in gathered_accessions if self.RE_ACCESSION.match(ga.accession_code)), key=lambda ga: ( - self.RE_ACCESSION.match(ga.code).group(1), - int(self.RE_ACCESSION.match(ga.code).group(2)), + self.RE_ACCESSION.match(ga.accession_code).group(1), + int(self.RE_ACCESSION.match(ga.accession_code).group(2)), ), ) # Limit the number of output entries. @@ -229,10 +226,12 @@ def handle(self, *args, **options): ) agents_count = len(agents) + gathered_accessions_count = len(gathered_accessions) logger.info( - f"{gathered_accessions_count} new accession{pluralize(gathered_accessions_count)} " - f"w{pluralize(gathered_accessions_count, 'as,ere')} gathered by {agents_count} " - f"accession agent{pluralize(agents_count)} since {options['since']}." + f"Since {options['since']} {gathered_accessions_count} " + f"new accession{pluralize(gathered_accessions_count)} " + f"h{pluralize(gathered_accessions_count, 'as,ave')} been gathered by {agents_count} " + f"accession agent{pluralize(agents_count)}." ) if options["dry_run"]: @@ -247,7 +246,7 @@ def handle(self, *args, **options): added_accessions_count = len(gathered_accessions) logger.info( f"{added_accessions_count} new accession{pluralize(added_accessions_count)} " - f"w{pluralize(added_accessions_count, 'as,ere')} added to the database. " + f"h{pluralize(added_accessions_count, 'as,ave')} been added to the database. " ) except IntegrityError as e: logger.exception(f"Could not save new accessions to the database: {e}") From 03e43e706e658ce502c24b7e935d460a8638d7da Mon Sep 17 00:00:00 2001 From: Arkadii Yakovets Date: Tue, 1 Nov 2022 18:39:37 -0700 Subject: [PATCH 036/220] Move all tests to tests directory. Add separate settings file (tests/settings.py). Refactor import according to the new structure. --- .pre-commit-config.yaml | 2 +- workers/tests/__init__.py | 0 workers/tests/downloaders/__init__.py | 0 .../downloaders/test_array_express.py | 0 .../downloaders/test_geo.py | 7 ++--- .../downloaders/test_imports.py | 0 .../downloaders/test_sra.py | 0 .../downloaders/test_transcriptome_index.py | 0 workers/tests/processors/__init__.py | 0 .../processors/test_agilent.py | 0 .../processors/test_array_express.py | 2 +- .../processors/test_compendia.py | 2 +- .../processors/test_create_quantpendia.py | 0 .../processors/test_illumina.py | 29 +++++++++++++++---- .../processors/test_imports.py | 22 +++++++------- .../processors/test_janitor.py | 2 +- .../processors/test_no_op.py | 0 .../processors/test_qn_reference.py | 0 .../processors/test_salmon.py | 7 ++--- .../processors/test_smasher.py | 5 +--- .../processors/test_transcriptome_index.py | 5 +++- .../processors/test_tximport.R | 0 .../processors/test_utils.py | 0 workers/tests/settings.py | 1 + .../testing_utils.py => tests/utils.py} | 0 25 files changed, 49 insertions(+), 35 deletions(-) create mode 100644 workers/tests/__init__.py create mode 100644 workers/tests/downloaders/__init__.py rename workers/{data_refinery_workers => tests}/downloaders/test_array_express.py (100%) rename workers/{data_refinery_workers => tests}/downloaders/test_geo.py (98%) rename workers/{data_refinery_workers => tests}/downloaders/test_imports.py (100%) rename workers/{data_refinery_workers => tests}/downloaders/test_sra.py (100%) rename workers/{data_refinery_workers => tests}/downloaders/test_transcriptome_index.py (100%) create mode 100644 workers/tests/processors/__init__.py rename workers/{data_refinery_workers => tests}/processors/test_agilent.py (100%) rename workers/{data_refinery_workers => tests}/processors/test_array_express.py (98%) rename workers/{data_refinery_workers => tests}/processors/test_compendia.py (99%) rename workers/{data_refinery_workers => tests}/processors/test_create_quantpendia.py (100%) rename workers/{data_refinery_workers => tests}/processors/test_illumina.py (96%) rename workers/{data_refinery_workers => tests}/processors/test_imports.py (62%) rename workers/{data_refinery_workers => tests}/processors/test_janitor.py (99%) rename workers/{data_refinery_workers => tests}/processors/test_no_op.py (100%) rename workers/{data_refinery_workers => tests}/processors/test_qn_reference.py (100%) rename workers/{data_refinery_workers => tests}/processors/test_salmon.py (99%) rename workers/{data_refinery_workers => tests}/processors/test_smasher.py (99%) rename workers/{data_refinery_workers => tests}/processors/test_transcriptome_index.py (98%) rename workers/{data_refinery_workers => tests}/processors/test_tximport.R (100%) rename workers/{data_refinery_workers => tests}/processors/test_utils.py (100%) create mode 100644 workers/tests/settings.py rename workers/{data_refinery_workers/processors/testing_utils.py => tests/utils.py} (100%) diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index d024704da..b651ce24a 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -22,7 +22,7 @@ repos: - id: isort - repo: https://github.com/psf/black - rev: 19.10b0 + rev: 22.3.0 hooks: - id: black args: [--line-length=100] diff --git a/workers/tests/__init__.py b/workers/tests/__init__.py new file mode 100644 index 000000000..e69de29bb diff --git a/workers/tests/downloaders/__init__.py b/workers/tests/downloaders/__init__.py new file mode 100644 index 000000000..e69de29bb diff --git a/workers/data_refinery_workers/downloaders/test_array_express.py b/workers/tests/downloaders/test_array_express.py similarity index 100% rename from workers/data_refinery_workers/downloaders/test_array_express.py rename to workers/tests/downloaders/test_array_express.py diff --git a/workers/data_refinery_workers/downloaders/test_geo.py b/workers/tests/downloaders/test_geo.py similarity index 98% rename from workers/data_refinery_workers/downloaders/test_geo.py rename to workers/tests/downloaders/test_geo.py index 9d951a33b..8f6ebc2de 100644 --- a/workers/data_refinery_workers/downloaders/test_geo.py +++ b/workers/tests/downloaders/test_geo.py @@ -90,7 +90,7 @@ def test_download_and_extract_file(self): @tag("downloaders") def test_download_aspera_and_ftp(self): - """ Tests the main 'download_geo' function. """ + """Tests the main 'download_geo' function.""" dlj = DownloaderJob() dlj.accession_code = "GSE22427" @@ -158,7 +158,7 @@ def test_download_aspera_and_ftp(self): @tag("downloaders") def test_download_geo(self): - """ Tests the main 'download_geo' function. """ + """Tests the main 'download_geo' function.""" dlj = DownloaderJob() dlj.accession_code = "GSE22427" @@ -217,8 +217,7 @@ def test_download_geo(self): @tag("downloaders") def test_no_rnaseq(self): - """Makes sure that no RNA-Seq data gets downloaded even if there's a job for it. - """ + """Makes sure that no RNA-Seq data gets downloaded even if there's a job for it.""" dlj = DownloaderJob() dlj.accession_code = "GSE103217" dlj.save() diff --git a/workers/data_refinery_workers/downloaders/test_imports.py b/workers/tests/downloaders/test_imports.py similarity index 100% rename from workers/data_refinery_workers/downloaders/test_imports.py rename to workers/tests/downloaders/test_imports.py diff --git a/workers/data_refinery_workers/downloaders/test_sra.py b/workers/tests/downloaders/test_sra.py similarity index 100% rename from workers/data_refinery_workers/downloaders/test_sra.py rename to workers/tests/downloaders/test_sra.py diff --git a/workers/data_refinery_workers/downloaders/test_transcriptome_index.py b/workers/tests/downloaders/test_transcriptome_index.py similarity index 100% rename from workers/data_refinery_workers/downloaders/test_transcriptome_index.py rename to workers/tests/downloaders/test_transcriptome_index.py diff --git a/workers/tests/processors/__init__.py b/workers/tests/processors/__init__.py new file mode 100644 index 000000000..e69de29bb diff --git a/workers/data_refinery_workers/processors/test_agilent.py b/workers/tests/processors/test_agilent.py similarity index 100% rename from workers/data_refinery_workers/processors/test_agilent.py rename to workers/tests/processors/test_agilent.py diff --git a/workers/data_refinery_workers/processors/test_array_express.py b/workers/tests/processors/test_array_express.py similarity index 98% rename from workers/data_refinery_workers/processors/test_array_express.py rename to workers/tests/processors/test_array_express.py index 70247b4a2..ee447e0dd 100644 --- a/workers/data_refinery_workers/processors/test_array_express.py +++ b/workers/tests/processors/test_array_express.py @@ -5,6 +5,7 @@ import pandas as pd import scipy.stats +from tests.utils import assertMostlyAgrees from data_refinery_common.models import ( ComputationalResult, @@ -14,7 +15,6 @@ ProcessorJobOriginalFileAssociation, ) from data_refinery_workers.processors import array_express -from data_refinery_workers.processors.testing_utils import assertMostlyAgrees def prepare_ba_job(): diff --git a/workers/data_refinery_workers/processors/test_compendia.py b/workers/tests/processors/test_compendia.py similarity index 99% rename from workers/data_refinery_workers/processors/test_compendia.py rename to workers/tests/processors/test_compendia.py index 1c4234181..85373a6a7 100644 --- a/workers/data_refinery_workers/processors/test_compendia.py +++ b/workers/tests/processors/test_compendia.py @@ -11,6 +11,7 @@ import numpy as np import pandas as pd +from tests.utils import ProcessorJobTestCaseMixin from data_refinery_common.enums import PipelineEnum, ProcessorPipeline from data_refinery_common.models import ( @@ -29,7 +30,6 @@ SampleResultAssociation, ) from data_refinery_workers.processors import create_compendia, utils -from data_refinery_workers.processors.testing_utils import ProcessorJobTestCaseMixin def create_sample_for_experiment(sample_info: Dict, experiment: Experiment) -> Sample: diff --git a/workers/data_refinery_workers/processors/test_create_quantpendia.py b/workers/tests/processors/test_create_quantpendia.py similarity index 100% rename from workers/data_refinery_workers/processors/test_create_quantpendia.py rename to workers/tests/processors/test_create_quantpendia.py diff --git a/workers/data_refinery_workers/processors/test_illumina.py b/workers/tests/processors/test_illumina.py similarity index 96% rename from workers/data_refinery_workers/processors/test_illumina.py rename to workers/tests/processors/test_illumina.py index de2ff9d0e..44e568daa 100644 --- a/workers/data_refinery_workers/processors/test_illumina.py +++ b/workers/tests/processors/test_illumina.py @@ -7,6 +7,8 @@ from django.test import TestCase, tag +from tests import utils + from data_refinery_common.enums import PipelineEnum from data_refinery_common.models import ( Organism, @@ -18,7 +20,7 @@ Sample, SampleAnnotation, ) -from data_refinery_workers.processors import illumina, testing_utils, utils +from data_refinery_workers.processors import illumina, utils def prepare_illumina_job(job_info: Dict) -> ProcessorJob: @@ -318,7 +320,10 @@ def test_illumina_quoted_row_names(self): "filename": "GSE33814_trimmed_non-normalized.txt", "absolute_file_path": "/home/user/data_store/raw/TEST/ILLUMINA/GSE33814_trimmed_non-normalized.txt", "organism": organism, - "samples": [("GSM836222", "IMGUS_32"), ("GSM836223", "IMGUS_33"),], + "samples": [ + ("GSM836222", "IMGUS_32"), + ("GSM836223", "IMGUS_33"), + ], } ) @@ -357,12 +362,16 @@ def test_illumina_rows_starting_with_whitespace(self): ( "GSM3071991", "MCF-7 KLHDC7B siRNA knockdown control", - {"description": ["SAMPLE 1"],}, + { + "description": ["SAMPLE 1"], + }, ), ( "GSM3071992", "MCF-7 KLHDC7B siRNA knockdown", - {"description": ["SAMPLE 2"],}, + { + "description": ["SAMPLE 2"], + }, ), ], } @@ -420,7 +429,9 @@ def test_illumina_no_pvalue(self): "filename": "GSE41355_non-normalized.txt", "absolute_file_path": "/home/user/data_store/raw/TEST/ILLUMINA/GSE41355_non-normalized.txt", "organism": organism, - "samples": [("GSM1015436", "IRF3/7 DKO 2"),], + "samples": [ + ("GSM1015436", "IRF3/7 DKO 2"), + ], } ) @@ -445,7 +456,13 @@ def test_illumina_id_ref_column_with_whitespace(self): "absolute_file_path": "/home/user/data_store/raw/TEST/ILLUMINA/GSE100301_non-normalized.txt", "organism": organism, "samples": [ - ("GSM2677583", "22Rv1-tetO-Gal4, replicate 1", {"description": ["SAMPLE 1"],},), + ( + "GSM2677583", + "22Rv1-tetO-Gal4, replicate 1", + { + "description": ["SAMPLE 1"], + }, + ), ], } ) diff --git a/workers/data_refinery_workers/processors/test_imports.py b/workers/tests/processors/test_imports.py similarity index 62% rename from workers/data_refinery_workers/processors/test_imports.py rename to workers/tests/processors/test_imports.py index 5e85071c1..f344a0488 100644 --- a/workers/data_refinery_workers/processors/test_imports.py +++ b/workers/tests/processors/test_imports.py @@ -5,50 +5,50 @@ class ImportTestCase(TestCase): @tag("salmon") def test_salmon_imports(self): # Make sure we can import the salmon tests - import data_refinery_workers.processors.test_salmon + import tests.processors.test_salmon @tag("transcriptome") def test_transcriptome_imports(self): # Make sure we can import the transcriptome tests - import data_refinery_workers.processors.test_transcriptome_index + import tests.processors.test_transcriptome_index @tag("no_op") def test_no_op_imports(self): # Make sure we can import the no_op tests - import data_refinery_workers.processors.test_no_op + import tests.processors.test_no_op @tag("smasher") def test_smasher_imports(self): # Make sure we can import the smasher tests - import data_refinery_workers.processors.test_smasher + import tests.processors.test_smasher @tag("illumina") def test_illumina_imports(self): # Make sure we can import the illumina tests - import data_refinery_workers.processors.test_illumina + import tests.processors.test_illumina @tag("agilent") def test_agilent_imports(self): # Make sure we can import the agilent tests - import data_refinery_workers.processors.test_agilent + import tests.processors.test_agilent @tag("affymetrix") def test_affymetrix_imports(self): # Make sure we can import the affy tests - import data_refinery_workers.processors.test_array_express + import tests.processors.test_array_express @tag("qn") def test_qn_imports(self): # Make sure we can import the qn tests - import data_refinery_workers.processors.test_qn_reference + import tests.processors.test_qn_reference @tag("janitor") def test_janitor_imports(self): # Make sure we can import the janitor tests - import data_refinery_workers.processors.test_janitor + import tests.processors.test_janitor @tag("compendia") def test_compendia_imports(self): # Make sure we can import the compendia tests - import data_refinery_workers.processors.test_compendia - import data_refinery_workers.processors.test_create_quantpendia + import tests.processors.test_compendia + import tests.processors.test_create_quantpendia diff --git a/workers/data_refinery_workers/processors/test_janitor.py b/workers/tests/processors/test_janitor.py similarity index 99% rename from workers/data_refinery_workers/processors/test_janitor.py rename to workers/tests/processors/test_janitor.py index a3ba2aa3a..fb755ca8e 100644 --- a/workers/data_refinery_workers/processors/test_janitor.py +++ b/workers/tests/processors/test_janitor.py @@ -79,7 +79,7 @@ class JanitorTestCase(TestCase): @tag("janitor") @patch("data_refinery_workers.processors.janitor.batch.describe_jobs") def test_janitor(self, mock_describe_jobs): - """ Main tester. """ + """Main tester.""" job = prepare_job() mock_describe_jobs.return_value = {"jobs": [{"jobId": "running_job", "status": "RUNNING"}]} diff --git a/workers/data_refinery_workers/processors/test_no_op.py b/workers/tests/processors/test_no_op.py similarity index 100% rename from workers/data_refinery_workers/processors/test_no_op.py rename to workers/tests/processors/test_no_op.py diff --git a/workers/data_refinery_workers/processors/test_qn_reference.py b/workers/tests/processors/test_qn_reference.py similarity index 100% rename from workers/data_refinery_workers/processors/test_qn_reference.py rename to workers/tests/processors/test_qn_reference.py diff --git a/workers/data_refinery_workers/processors/test_salmon.py b/workers/tests/processors/test_salmon.py similarity index 99% rename from workers/data_refinery_workers/processors/test_salmon.py rename to workers/tests/processors/test_salmon.py index afe00ca03..e2744668b 100644 --- a/workers/data_refinery_workers/processors/test_salmon.py +++ b/workers/tests/processors/test_salmon.py @@ -28,7 +28,6 @@ Sample, SampleComputedFileAssociation, SampleResultAssociation, - SurveyJob, ) from data_refinery_common.utils import get_env_variable from data_refinery_workers.processors import salmon, tximport, utils @@ -496,8 +495,7 @@ def test_salmon_quant_two_samples_single_read(self): @tag("salmon") def test_set_tximport_inputs(self): - """"Tests that tximport only considers RNA-Seq samples from GEO. - """ + """ "Tests that tximport only considers RNA-Seq samples from GEO.""" # Create one experiment and two related samples, based on: # https://www.ncbi.nlm.nih.gov/sra/?term=SRP040623 # (We don't need any original files because @@ -1070,8 +1068,7 @@ def test_early_tximport(self): @tag("salmon") def test_version_filter(self): - """Tests that we don't run tximport on old salmon versions. - """ + """Tests that we don't run tximport on old salmon versions.""" # Accessions SRR5125616-SRR5125620 don't exist in SRA, but we # don't actually want to process them so it's okay. incomplete_accessions = [ diff --git a/workers/data_refinery_workers/processors/test_smasher.py b/workers/tests/processors/test_smasher.py similarity index 99% rename from workers/data_refinery_workers/processors/test_smasher.py rename to workers/tests/processors/test_smasher.py index 379caa144..38e7760df 100644 --- a/workers/data_refinery_workers/processors/test_smasher.py +++ b/workers/tests/processors/test_smasher.py @@ -13,6 +13,7 @@ import pandas as pd import vcr +from tests.utils import ProcessorJobTestCaseMixin from data_refinery_common.models import ( ComputationalResult, @@ -24,19 +25,15 @@ ExperimentSampleAssociation, OntologyTerm, Organism, - OriginalFile, ProcessorJob, ProcessorJobDatasetAssociation, - ProcessorJobOriginalFileAssociation, Sample, SampleAnnotation, SampleAttribute, SampleComputedFileAssociation, SampleResultAssociation, - SurveyJob, ) from data_refinery_workers.processors import smasher, smashing_utils -from data_refinery_workers.processors.testing_utils import ProcessorJobTestCaseMixin def prepare_job(): diff --git a/workers/data_refinery_workers/processors/test_transcriptome_index.py b/workers/tests/processors/test_transcriptome_index.py similarity index 98% rename from workers/data_refinery_workers/processors/test_transcriptome_index.py rename to workers/tests/processors/test_transcriptome_index.py index fb1187b73..c549afa5f 100644 --- a/workers/data_refinery_workers/processors/test_transcriptome_index.py +++ b/workers/tests/processors/test_transcriptome_index.py @@ -121,7 +121,10 @@ def test_process_gtf(self): job_context = transcriptome_index._process_gtf(job_context) transcript_to_gene_ids = pd.read_csv( - job_context["genes_to_transcripts_path"], sep="\t", index_col=1, names=["Gene"], + job_context["genes_to_transcripts_path"], + sep="\t", + index_col=1, + names=["Gene"], )["Gene"] self.assertEqual(transcript_to_gene_ids.get("ENST00000480647", None), "ENSG00000041988") diff --git a/workers/data_refinery_workers/processors/test_tximport.R b/workers/tests/processors/test_tximport.R similarity index 100% rename from workers/data_refinery_workers/processors/test_tximport.R rename to workers/tests/processors/test_tximport.R diff --git a/workers/data_refinery_workers/processors/test_utils.py b/workers/tests/processors/test_utils.py similarity index 100% rename from workers/data_refinery_workers/processors/test_utils.py rename to workers/tests/processors/test_utils.py diff --git a/workers/tests/settings.py b/workers/tests/settings.py new file mode 100644 index 000000000..cb2bd4c16 --- /dev/null +++ b/workers/tests/settings.py @@ -0,0 +1 @@ +from data_refinery_workers.settings import * diff --git a/workers/data_refinery_workers/processors/testing_utils.py b/workers/tests/utils.py similarity index 100% rename from workers/data_refinery_workers/processors/testing_utils.py rename to workers/tests/utils.py From dccc246703eb8d25fbca521ebd625de9fd257298 Mon Sep 17 00:00:00 2001 From: Arkadii Yakovets Date: Wed, 2 Nov 2022 09:11:57 -0700 Subject: [PATCH 037/220] Update workers Docker images: - Optimize and reorder building instructions. - Update Python to v3.8. - Resolve OS level package dependency conflicts. - Add and set up missing OS packages. - Add apt cache clean up instructions. - Use `--ignore-installed` pip flag for better deps management. - --- workers/dockerfiles/Dockerfile.affymetrix | 87 +++++++------- .../dockerfiles/Dockerfile.affymetrix_local | 3 +- workers/dockerfiles/Dockerfile.compendia | 106 +++++++++--------- workers/dockerfiles/Dockerfile.downloaders | 88 ++++++++------- workers/dockerfiles/Dockerfile.illumina | 87 +++++++------- workers/dockerfiles/Dockerfile.no_op | 81 ++++++------- workers/dockerfiles/Dockerfile.salmon | 100 +++++++++-------- workers/dockerfiles/Dockerfile.smasher | 86 +++++++------- workers/dockerfiles/Dockerfile.transcriptome | 61 +++++----- 9 files changed, 362 insertions(+), 337 deletions(-) diff --git a/workers/dockerfiles/Dockerfile.affymetrix b/workers/dockerfiles/Dockerfile.affymetrix index 33c6e2518..151473ecf 100644 --- a/workers/dockerfiles/Dockerfile.affymetrix +++ b/workers/dockerfiles/Dockerfile.affymetrix @@ -1,45 +1,51 @@ FROM ubuntu:20.04 +# Source: https://github.com/thisbejim/Pyrebase/issues/87#issuecomment-354452082 +# For whatever reason this worked and 'en_US.UTF-8' did not. +ENV LANG C.UTF-8 + +# Prevent tzdata from prompting us for a timezone and hanging the build. +ENV DEBIAN_FRONTEND=noninteractive + RUN apt-get update -qq RUN apt-get install -y software-properties-common RUN add-apt-repository ppa:apt-fast/stable -RUN apt-get update -qq -RUN apt-get -y install apt-fast -# Prevent tzdata from prompting us for a timezone and hanging the build. -ENV DEBIAN_FRONTEND=noninteractive +RUN apt-get update -qq +RUN apt-get install -y apt-fast apt-transport-https # The packages related to R are somewhat weird, see the README for more details. - COPY workers/CRAN.gpg . -RUN \ - apt-fast update -qq && \ - apt-get install -y apt-transport-https && \ - apt-fast install -y lsb-release && \ - echo "deb https://cloud.r-project.org/bin/linux/ubuntu bionic-cran35/" \ - >> /etc/apt/sources.list.d/added_repos.list && \ - apt-key add CRAN.gpg && \ - apt-fast update -qq && \ - apt-fast install -y \ +RUN apt-key add CRAN.gpg +RUN echo "deb https://cloud.r-project.org/bin/linux/ubuntu bionic-cran35/" \ + >> /etc/apt/sources.list.d/added_repos.list + +RUN apt-fast update -qq && apt-fast install -y \ + build-essential \ + cmake \ + curl \ + cython3 \ ed \ git \ - mercurial \ libcairo-dev \ + libcurl4-openssl-dev \ libedit-dev \ + libpq-dev \ + libssl-dev \ + libxml2-dev \ + llvm-10-dev \ lsb-release \ - python3 \ + mercurial \ + pkg-config \ python3-pip \ + python3 \ python3-dev \ r-base-core \ - r-base-dev \ - libpq-dev \ - libxml2-dev \ - libssl-dev \ - libcurl4-openssl-dev \ - curl \ - wget && \ - rm -rf /var/lib/apt/lists/* + wget + RUN rm CRAN.gpg +RUN apt-get clean; rm -rf /var/lib/apt/lists/* +RUN ln -s /usr/bin/llvm-config-10 /usr/bin/llvm-config RUN groupadd user && useradd --create-home --home-dir /home/user -g user user WORKDIR /home/user @@ -47,41 +53,29 @@ WORKDIR /home/user ENV R_LIBS "/usr/local/lib/R/site-library" COPY common/install_devtools.R . - RUN Rscript install_devtools.R COPY workers/R_dependencies/affymetrix/dependencies.R . RUN Rscript dependencies.R COPY workers/affymetrix_dependencies.R . -COPY workers/install_ensg_pkgs.R . - RUN Rscript affymetrix_dependencies.R -# Source: https://github.com/thisbejim/Pyrebase/issues/87#issuecomment-354452082 -# For whatever reason this worked and 'en_US.UTF-8' did not. -ENV LANG C.UTF-8 - RUN pip3 install pip --upgrade +RUN pip3 install setuptools --upgrade -RUN pip3 install setuptools --upgrade && \ - rm -rf /root/.cache - -COPY config/ config/ -COPY .boto .boto - -COPY common/dist/data-refinery-common-* common/ +# Install this one here instead of via requirements.txt because not +# all processors need it. +RUN pip3 install rpy2==3.4.5 +COPY workers/data_refinery_workers/processors/requirements.txt . +RUN pip3 install -r requirements.txt # Get the latest version from the dist directory. +COPY common/dist/data-refinery-common-* common/ RUN pip3 install common/$(ls common -1 | sort --version-sort | tail -1) -COPY workers/data_refinery_workers/processors/requirements.txt . - -RUN pip3 install -r requirements.txt - -# Install this one here instead of via requirements.txt because not -# all processors need it. -RUN pip3 install rpy2==3.4.5 +# Clear out the pip3 cache. +RUN rm -rf /root/.cache ARG SYSTEM_VERSION @@ -89,6 +83,9 @@ ENV SYSTEM_VERSION $SYSTEM_VERSION USER user +COPY .boto .boto +COPY config/ config/ COPY workers/ . +COPY workers/install_ensg_pkgs.R . ENTRYPOINT [] diff --git a/workers/dockerfiles/Dockerfile.affymetrix_local b/workers/dockerfiles/Dockerfile.affymetrix_local index 84309b4e9..9a37692e6 100644 --- a/workers/dockerfiles/Dockerfile.affymetrix_local +++ b/workers/dockerfiles/Dockerfile.affymetrix_local @@ -6,9 +6,8 @@ USER root RUN rm -r common/ RUN pip3 uninstall -y data_refinery_common -# Reinstall common. -COPY common/dist/data-refinery-common-* common/ # Get the latest version from the dist directory. +COPY common/dist/data-refinery-common-* common/ RUN pip3 install common/$(ls common -1 | sort --version-sort | tail -1) ARG SYSTEM_VERSION diff --git a/workers/dockerfiles/Dockerfile.compendia b/workers/dockerfiles/Dockerfile.compendia index 3a6df3f5f..2c6a38784 100644 --- a/workers/dockerfiles/Dockerfile.compendia +++ b/workers/dockerfiles/Dockerfile.compendia @@ -1,55 +1,67 @@ -FROM nvidia/cuda:11.1-runtime-ubuntu18.04 +FROM nvidia/cuda:11.8.0-runtime-ubuntu18.04 # This is very similar to the `smasher` image, but comes with OpenBLAS and some # of the other libraries required for fancyimpute. -RUN apt-get update -qq -RUN apt-get install -y software-properties-common -RUN add-apt-repository ppa:apt-fast/stable -RUN apt-get update -qq +# Prevent tzdata from prompting us for a timezone and hanging the build. +ENV DEBIAN_FRONTEND=noninteractive + +# Source: https://github.com/thisbejim/Pyrebase/issues/87#issuecomment-354452082 +# For whatever reason this worked and 'en_US.UTF-8' did not. +ENV LANG C.UTF-8 + +# RUN apt-key adv --fetch-keys https://developer.download.nvidia.com/compute/cuda/repos/ubuntu1804/x86_64/3bf863cc.pub # via https://github.com/ilikenwf/apt-fast/issues/85#issuecomment-261640099 RUN echo debconf apt-fast/maxdownloads string 16 | debconf-set-selections RUN echo debconf apt-fast/dlflag boolean true | debconf-set-selections RUN echo debconf apt-fast/aptmanager string apt-get | debconf-set-selections -RUN _APTMGR=apt-get apt-get install -y apt-fast - -RUN export DEBIAN_FRONTEND=noninteractive; \ - export DEBCONF_NONINTERACTIVE_SEEN=true; \ - echo 'tzdata tzdata/Areas select Etc' | debconf-set-selections; \ - echo 'tzdata tzdata/Zones/Etc select UTC' | debconf-set-selections; \ - apt-get update -qqy \ - && apt-get install -qqy --no-install-recommends \ - tzdata \ - && apt-get clean \ - && rm -rf /var/lib/apt/lists/* +RUN echo 'tzdata tzdata/Areas select Etc' | debconf-set-selections +RUN echo 'tzdata tzdata/Zones/Etc select UTC' | debconf-set-selections + +RUN apt-get update -qq +RUN apt-get install -y software-properties-common +RUN add-apt-repository ppa:apt-fast/stable +RUN add-apt-repository ppa:deadsnakes/ppa +RUN add-apt-repository ppa:savoury1/llvm-defaults-10 + +RUN apt-get update -qq +RUN apt-get install -y apt-fast apt-transport-https tzdata COPY workers/CRAN.gpg . -RUN \ - apt-fast update -qq && \ - apt-fast install -y lsb-release && \ - echo "deb https://cloud.r-project.org/bin/linux/ubuntu bionic-cran35/" \ - >> /etc/apt/sources.list.d/added_repos.list && \ - apt-key add CRAN.gpg && \ - apt-fast update -qq && \ - apt-fast install -y \ +RUN apt-key add CRAN.gpg +RUN echo "deb https://cloud.r-project.org/bin/linux/ubuntu bionic-cran35/" \ + >> /etc/apt/sources.list.d/added_repos.list + +RUN apt-fast update -qq && apt-fast install -y \ + build-essential \ + cmake \ + curl \ + cython3 \ ed \ + gfortran \ git \ - liblapack-dev \ - libopenblas-dev \ - python3 \ - python3-pip \ + libcairo-dev \ libcurl4-openssl-dev \ + libedit-dev \ + libblas-dev \ + liblapack-dev \ libpq-dev \ - r-base-core \ - r-base-dev \ - libpq-dev \ - libxml2-dev \ libssl-dev \ - libcurl4-openssl-dev \ - curl \ - wget && \ - rm -rf /var/lib/apt/lists/* + libxml2-dev \ + llvm-10-dev \ + lsb-release \ + mercurial \ + pkg-config \ + python3-pip \ + python3.8 \ + python3.8-dev \ + r-base-core \ + wget + RUN rm CRAN.gpg +RUN apt-get clean; rm -rf /var/lib/apt/lists/* +RUN ln -s /usr/bin/llvm-config-10 /usr/bin/llvm-config +RUN update-alternatives --install /usr/bin/python3 python3 /usr/bin/python3.8 1 RUN groupadd user && useradd --create-home --home-dir /home/user -g user user WORKDIR /home/user @@ -62,7 +74,6 @@ RUN ln -s /usr/local/share/phantomjs-2.1.1-linux-x86_64/bin/phantomjs /usr/local ENV R_LIBS "/usr/local/lib/R/site-library" COPY common/install_devtools.R . - RUN Rscript install_devtools.R COPY workers/R_dependencies/qn/dependencies.R . @@ -72,30 +83,21 @@ COPY workers/qn_dependencies.R . RUN Rscript qn_dependencies.R # End QN-specific -# Source: https://github.com/thisbejim/Pyrebase/issues/87#issuecomment-354452082 -# For whatever reason this worked and 'en_US.UTF-8' did not. -ENV LANG C.UTF-8 - RUN pip3 install --upgrade pip - # Smasher-specific requirements -RUN pip3 install numpy scipy matplotlib pandas==0.25.3 scikit-learn sympy nose rpy2===3.4.5 tzlocal fancySVD +RUN pip3 install --ignore-installed numpy scipy matplotlib pandas==0.25.3 scikit-learn sympy nose rpy2===3.4.5 tzlocal fancySVD # End smasher-specific -COPY config/ config/ -COPY .boto .boto - COPY workers/data_refinery_workers/processors/requirements.txt . +RUN pip3 install --ignore-installed -r requirements.txt -RUN pip3 --no-cache-dir install -r requirements.txt -RUN pip3 install numpy==1.16.0 # Fix a downgrade - -COPY common/dist/data-refinery-common-* common/ +RUN pip3 install --ignore-installed numpy==1.16.0 # Fix a downgrade # Get the latest version from the dist directory. +COPY common/dist/data-refinery-common-* common/ RUN pip3 install common/$(ls common -1 | sort --version-sort | tail -1) -# Clear our the pip3 cache +# Clear out the pip3 cache. RUN rm -rf /root/.cache ARG SYSTEM_VERSION @@ -104,6 +106,8 @@ ENV SYSTEM_VERSION $SYSTEM_VERSION USER user +COPY .boto .boto +COPY config/ config/ COPY workers/ . ENTRYPOINT [] diff --git a/workers/dockerfiles/Dockerfile.downloaders b/workers/dockerfiles/Dockerfile.downloaders index f2fc9e78a..1b3337325 100644 --- a/workers/dockerfiles/Dockerfile.downloaders +++ b/workers/dockerfiles/Dockerfile.downloaders @@ -1,59 +1,64 @@ FROM ubuntu:18.04 -RUN apt-get update -qq +# Prevent tzdata from prompting us for a timezone and hanging the build. +ENV DEBIAN_FRONTEND=noninteractive + +# Source: https://github.com/thisbejim/Pyrebase/issues/87#issuecomment-354452082 +# For whatever reason this worked and 'en_US.UTF-8' did not. +ENV LANG C.UTF-8 + +RUN apt-get update RUN apt-get install -y software-properties-common RUN add-apt-repository ppa:apt-fast/stable -RUN apt-get update -qq -RUN apt-get -y install apt-fast +RUN add-apt-repository ppa:deadsnakes/ppa +RUN add-apt-repository ppa:savoury1/llvm-defaults-10 -# Prevent tzdata from prompting us for a timezone and hanging the build. -ENV DEBIAN_FRONTEND=noninteractive +RUN apt-get update -qq +RUN apt-get install -y apt-fast apt-transport-https # The packages related to R are somewhat weird, see the README for more details. - COPY workers/CRAN.gpg . -RUN \ - apt-fast update -qq && \ - apt-get install -y apt-transport-https && \ - apt-fast install -y lsb-release && \ - echo "deb https://cloud.r-project.org/bin/linux/ubuntu bionic-cran35/" \ - >> /etc/apt/sources.list.d/added_repos.list && \ - apt-key add CRAN.gpg && \ - apt-fast update -qq && \ - apt-fast install -y \ +RUN apt-key add CRAN.gpg +RUN echo "deb https://cloud.r-project.org/bin/linux/ubuntu bionic-cran35/" \ + >> /etc/apt/sources.list.d/added_repos.list + +RUN apt-fast update -qq && apt-fast install -y \ + build-essential \ + cmake \ + curl \ + cython3 \ ed \ git \ - python3 \ - python3-pip \ - r-base-core \ - r-base-dev \ - libpq-dev \ - libxml2-dev \ - libssl-dev \ + libcairo-dev \ libcurl4-openssl-dev \ + libedit-dev \ libpq-dev \ - curl \ - wget && \ - rm -rf /var/lib/apt/lists/* + libssl-dev \ + libxml2-dev \ + llvm-10-dev \ + lsb-release \ + mercurial \ + pkg-config \ + python3-pip \ + python3.8 \ + python3.8-dev \ + r-base-core \ + wget + RUN rm CRAN.gpg +RUN apt-get clean; rm -rf /var/lib/apt/lists/* +RUN ln -s /usr/bin/llvm-config-10 /usr/bin/llvm-config +RUN update-alternatives --install /usr/bin/python3 python3 /usr/bin/python3.8 1 RUN groupadd user && useradd --create-home --home-dir /home/user -g user user WORKDIR /home/user -# Source: https://github.com/thisbejim/Pyrebase/issues/87#issuecomment-354452082 -# For whatever reason this worked and 'en_US.UTF-8' did not. -ENV LANG C.UTF-8 - -RUN pip3 install --upgrade pip - ENV R_LIBS "/usr/local/lib/R/site-library" COPY common/install_devtools.R . - RUN Rscript install_devtools.R COPY workers/install_downloader_R_only.R . - RUN Rscript install_downloader_R_only.R # Aspera will only install as the current user. @@ -71,22 +76,19 @@ RUN rm aspera-cli-3.9.1-0.tar.bz2 # Now that we're done installing Aspera go back to being root for a bit. USER root -COPY config config -COPY .boto .boto - -COPY workers/data_refinery_workers/downloaders/requirements.txt . - -RUN pip3 install -r requirements.txt - +RUN pip3 install --upgrade pip # Install this rpy2 here instead of via requirements.txt because # pip-compile throws an error for it. RUN pip3 install rpy2==3.4.5 -COPY common/dist/data-refinery-common-* common/ + +COPY workers/data_refinery_workers/downloaders/requirements.txt . +RUN pip3 install --ignore-installed -r requirements.txt # Get the latest version from the dist directory. +COPY common/dist/data-refinery-common-* common/ RUN pip3 install common/$(ls common -1 | sort --version-sort | tail -1) -# Clear our the pip3 cache +# Clear out the pip3 cache. RUN rm -rf /root/.cache ARG SYSTEM_VERSION @@ -95,6 +97,8 @@ ENV SYSTEM_VERSION $SYSTEM_VERSION USER user +COPY .boto .boto +COPY config config COPY workers/ . ENTRYPOINT [] diff --git a/workers/dockerfiles/Dockerfile.illumina b/workers/dockerfiles/Dockerfile.illumina index bc2294425..e4cc70268 100644 --- a/workers/dockerfiles/Dockerfile.illumina +++ b/workers/dockerfiles/Dockerfile.illumina @@ -1,46 +1,57 @@ FROM ubuntu:18.04 -RUN apt-get update -qq +# Prevent tzdata from prompting us for a timezone and hanging the build. +ENV DEBIAN_FRONTEND=noninteractive + +# Source: https://github.com/thisbejim/Pyrebase/issues/87#issuecomment-354452082 +# For whatever reason this worked and 'en_US.UTF-8' did not. +ENV LANG C.UTF-8 + +RUN apt-get update RUN apt-get install -y software-properties-common RUN add-apt-repository ppa:apt-fast/stable +RUN add-apt-repository ppa:deadsnakes/ppa +RUN add-apt-repository ppa:savoury1/llvm-defaults-10 + RUN apt-get update -qq -RUN apt-get -y install apt-fast +RUN apt-get install -y apt-fast apt-transport-https # The packages related to R are somewhat weird, see the README for more details. - COPY workers/CRAN.gpg . -RUN \ - apt-fast update -qq && \ - apt-get install -y apt-transport-https && \ - apt-fast install -y lsb-release && \ - echo "deb https://cloud.r-project.org/bin/linux/ubuntu bionic-cran35/" \ - >> /etc/apt/sources.list.d/added_repos.list && \ - apt-key add CRAN.gpg && \ - apt-fast update -qq +RUN apt-key add CRAN.gpg +RUN echo "deb https://cloud.r-project.org/bin/linux/ubuntu bionic-cran35/" \ + >> /etc/apt/sources.list.d/added_repos.list -# Prevent tzdata from prompting us for a timezone and hanging the build. -ENV DEBIAN_FRONTEND=noninteractive - -RUN apt-fast install -y \ +RUN apt-fast update -qq && apt-fast install -y \ + build-essential \ + cmake \ + curl \ + cython3 \ ed \ + gfortran \ git \ - mercurial \ libcairo-dev \ + libcurl4-openssl-dev \ libedit-dev \ + libblas-dev \ + liblapack-dev \ + libpq-dev \ + libssl-dev \ + libxml2-dev \ + llvm-10-dev \ lsb-release \ - python3 \ + mercurial \ + pkg-config \ python3-pip \ + python3.8 \ + python3.8-dev \ r-base-core \ - r-base-dev \ - libpq-dev \ - libxml2-dev \ - libssl-dev \ - libcurl4-openssl-dev \ - curl \ - wget && \ - rm -rf /var/lib/apt/lists/* + wget RUN rm CRAN.gpg +RUN apt-get clean; rm -rf /var/lib/apt/lists/* +RUN ln -s /usr/bin/llvm-config-10 /usr/bin/llvm-config +RUN update-alternatives --install /usr/bin/python3 python3 /usr/bin/python3.8 1 RUN groupadd user && useradd --create-home --home-dir /home/user -g user user WORKDIR /home/user @@ -48,37 +59,24 @@ WORKDIR /home/user ENV R_LIBS "/usr/local/lib/R/site-library" COPY common/install_devtools.R . - RUN Rscript install_devtools.R COPY workers/R_dependencies/illumina/dependencies.R . RUN Rscript dependencies.R -# These are for Illumina +# These are for Illumina. COPY workers/illumina_dependencies.R . RUN Rscript illumina_dependencies.R -# Source: https://github.com/thisbejim/Pyrebase/issues/87#issuecomment-354452082 -# For whatever reason this worked and 'en_US.UTF-8' did not. -ENV LANG C.UTF-8 - RUN pip3 install --upgrade pip - -COPY config/ config/ -COPY .boto .boto - -COPY workers/illumina_probe_maps/ probe_maps/ - COPY workers/data_refinery_workers/processors/requirements.txt . - -RUN pip3 install -r requirements.txt - -COPY common/dist/data-refinery-common-* common/ +RUN pip3 install --ignore-installed -r requirements.txt # Get the latest version from the dist directory. +COPY common/dist/data-refinery-common-* common/ RUN pip3 install common/$(ls common -1 | sort --version-sort | tail -1) -# Clear our the pip3 cache +# Clear out the pip3 cache. RUN rm -rf /root/.cache ARG SYSTEM_VERSION @@ -87,7 +85,10 @@ ENV SYSTEM_VERSION $SYSTEM_VERSION USER user -COPY workers/data_refinery_workers/processors/detect_database.R . +COPY .boto .boto +COPY config/ config/ COPY workers/ . +COPY workers/data_refinery_workers/processors/detect_database.R . +COPY workers/illumina_probe_maps/ probe_maps/ ENTRYPOINT [] diff --git a/workers/dockerfiles/Dockerfile.no_op b/workers/dockerfiles/Dockerfile.no_op index ee59a63a5..98f35d772 100644 --- a/workers/dockerfiles/Dockerfile.no_op +++ b/workers/dockerfiles/Dockerfile.no_op @@ -1,51 +1,56 @@ FROM ubuntu:18.04 +# Prevent tzdata from prompting us for a timezone and hanging the build. +ENV DEBIAN_FRONTEND=noninteractive + +# Source: https://github.com/thisbejim/Pyrebase/issues/87#issuecomment-354452082 +# For whatever reason this worked and 'en_US.UTF-8' did not. +ENV LANG C.UTF-8 + RUN apt-get update -qq RUN apt-get install -y software-properties-common + RUN add-apt-repository ppa:apt-fast/stable # deadsnakes packages new python versions for older Ubuntu releases RUN add-apt-repository ppa:deadsnakes/ppa + RUN apt-get update -qq RUN apt-get -y install apt-fast -# Prevent tzdata from prompting us for a timezone and hanging the build. -ENV DEBIAN_FRONTEND=noninteractive - # The packages related to R are somewhat weird, see the README for more details. - COPY workers/CRAN.gpg . -RUN \ - apt-fast update -qq && \ - apt-get install -y apt-transport-https && \ - apt-fast install -y lsb-release && \ - echo "deb https://cloud.r-project.org/bin/linux/ubuntu bionic-cran35/" \ - >> /etc/apt/sources.list.d/added_repos.list && \ - apt-key add CRAN.gpg && \ - apt-fast update -qq && \ - apt-fast install -y \ +RUN apt-key add CRAN.gpg +RUN echo "deb https://cloud.r-project.org/bin/linux/ubuntu bionic-cran35/" \ + >> /etc/apt/sources.list.d/added_repos.list + +RUN apt-fast update -qq && apt-fast install -y \ + build-essential \ + cmake \ + curl \ + cython3 \ ed \ git \ - mercurial \ libcairo-dev \ + libcurl4-openssl-dev \ libedit-dev \ + libfreetype6-dev \ + libpq-dev \ + libssl-dev \ + libxml2-dev \ + llvm-10-dev \ lsb-release \ - python3.6 \ - python3.6-dev \ + mercurial \ + pkg-config \ python3-pip \ + python3.8 \ + python3.8-dev \ r-base-core \ - r-base-dev \ - libpq-dev \ - libxml2-dev \ - libssl-dev \ - libcurl4-openssl-dev \ - curl \ - unzip \ - wget && \ - rm -rf /var/lib/apt/lists/* -RUN rm CRAN.gpg + wget -# Set the system python version to python3.6 from deadsnakes -RUN update-alternatives --install /usr/bin/python3 python3 /usr/bin/python3.6 1 +RUN rm CRAN.gpg +RUN apt-get clean; rm -rf /var/lib/apt/lists/* +RUN ln -s /usr/bin/llvm-config-10 /usr/bin/llvm-config +RUN update-alternatives --install /usr/bin/python3 python3 /usr/bin/python3.8 1 RUN groupadd user && useradd --create-home --home-dir /home/user -g user user WORKDIR /home/user @@ -54,7 +59,6 @@ WORKDIR /home/user ENV R_LIBS "/usr/local/lib/R/site-library" COPY common/install_devtools.R . - RUN Rscript install_devtools.R COPY workers/R_dependencies/no_op/dependencies.R . @@ -62,6 +66,7 @@ RUN Rscript dependencies.R COPY workers/install_gene_convert.R . RUN Rscript install_gene_convert.R + RUN mkdir -p gene_indexes WORKDIR /home/user/gene_indexes ENV ID_REFINERY_URL https://zenodo.org/record/1410647/files/all_1536267482.zip @@ -72,23 +77,17 @@ RUN rm *.zip WORKDIR /home/user # End Noop-specific -COPY workers/data_refinery_workers/processors/requirements.txt . - -# Source: https://github.com/thisbejim/Pyrebase/issues/87#issuecomment-354452082 -# For whatever reason this worked and 'en_US.UTF-8' did not. -ENV LANG C.UTF-8 - RUN pip3 install --upgrade pip -RUN pip3 install -r requirements.txt +RUN pip3 install numpy -COPY config/ config/ -COPY .boto .boto -COPY common/dist/data-refinery-common-* common/ +COPY workers/data_refinery_workers/processors/requirements.txt . +RUN pip3 install --ignore-installed -r requirements.txt # Get the latest version from the dist directory. +COPY common/dist/data-refinery-common-* common/ RUN pip3 install common/$(ls common -1 | sort --version-sort | tail -1) -# Clear our the pip3 cache +# Clear out the pip3 cache. RUN rm -rf /root/.cache ARG SYSTEM_VERSION @@ -97,6 +96,8 @@ ENV SYSTEM_VERSION $SYSTEM_VERSION USER user +COPY .boto .boto +COPY config/ config/ COPY workers/ . ENTRYPOINT [] diff --git a/workers/dockerfiles/Dockerfile.salmon b/workers/dockerfiles/Dockerfile.salmon index 31922880e..8bfbbe9a7 100644 --- a/workers/dockerfiles/Dockerfile.salmon +++ b/workers/dockerfiles/Dockerfile.salmon @@ -1,44 +1,54 @@ FROM ubuntu:18.04 -RUN apt-get update -qq +# Prevent tzdata from prompting us for a timezone and hanging the build. +ENV DEBIAN_FRONTEND=noninteractive + +# Source: https://github.com/thisbejim/Pyrebase/issues/87#issuecomment-354452082 +# For whatever reason this worked and 'en_US.UTF-8' did not. +ENV LANG C.UTF-8 + +RUN apt-get update RUN apt-get install -y software-properties-common RUN add-apt-repository ppa:apt-fast/stable -RUN apt-get update -qq -RUN apt-get -y install apt-fast +RUN add-apt-repository ppa:deadsnakes/ppa +RUN add-apt-repository ppa:savoury1/llvm-defaults-10 -# Prevent tzdata from prompting us for a timezone and hanging the build. -ENV DEBIAN_FRONTEND=noninteractive +RUN apt-get update -qq +RUN apt-get install -y apt-fast apt-transport-https # The packages related to R are somewhat weird, see the README for more details. - COPY workers/CRAN.gpg . +RUN apt-key add CRAN.gpg +RUN echo "deb https://cloud.r-project.org/bin/linux/ubuntu bionic-cran35/" \ + >> /etc/apt/sources.list.d/added_repos.list -RUN \ - apt-fast update -qq && \ - apt-get install -y apt-transport-https && \ - apt-fast install -y lsb-release && \ - echo "deb https://cloud.r-project.org/bin/linux/ubuntu bionic-cran35/" \ - >> /etc/apt/sources.list.d/added_repos.list && \ - apt-key add CRAN.gpg && \ - apt-fast update -qq && \ - apt-fast install -y \ +RUN apt-fast update -qq && apt-fast install -y \ + build-essential \ + cmake \ + curl \ + cython3 \ ed \ git \ - mercurial \ libcairo-dev \ + libcurl4-openssl-dev \ libedit-dev \ + libpq-dev \ + libssl-dev \ + libxml2-dev \ + llvm-10-dev \ lsb-release \ - python3 \ + mercurial \ + pkg-config \ python3-pip \ - libxml2-dev \ - cmake \ + python3.8 \ + python3.8-dev \ r-base-core \ - libssl-dev \ - libcurl4-openssl-dev \ - curl \ - wget && \ - rm -rf /var/lib/apt/lists/* + wget + RUN rm CRAN.gpg +RUN apt-get upgrade; apt-get clean; rm -rf /var/lib/apt/lists/* +RUN ln -s /usr/bin/llvm-config-10 /usr/bin/llvm-config +RUN update-alternatives --install /usr/bin/python3 python3 /usr/bin/python3.8 1 RUN groupadd user && useradd --create-home --home-dir /home/user -g user user WORKDIR /home/user @@ -60,44 +70,40 @@ RUN ln -sf `pwd`/Salmon-${SALMON_VERSION}_linux_x86_64/bin/salmon /usr/local/bin RUN rm -f Salmon-${SALMON_VERSION}_linux_x86_64.tar.gz # End Salmon installation. -# Install R dependencies +# Install R dependencies. COPY common/install_devtools.R . RUN Rscript install_devtools.R + COPY workers/R_dependencies/tximport/dependencies.R tximport_dependencies.R RUN Rscript tximport_dependencies.R -# Install tximport +# Install tximport. COPY workers/install_tximport.R . RUN Rscript install_tximport.R -# Install SalmonTools +RUN pip3 install --upgrade pip +RUN pip3 install numpy + +COPY workers/data_refinery_workers/processors/requirements.txt . +RUN pip3 install --ignore-installed -r requirements.txt + +# Get the latest version from the dist directory. +COPY common/dist/data-refinery-common-* common/ +RUN pip3 install common/$(ls common -1 | sort --version-sort | tail -1) + +# Install SalmonTools. RUN git clone https://github.com/COMBINE-lab/SalmonTools.git && cd SalmonTools && git checkout 3e6654c2c10a5225498b623056993947fa688afc RUN cd SalmonTools && cmake . -DCMAKE_INSTALL_PREFIX=/usr/local && make install RUN rm -rf SalmonTools -# Install sra-tools +# Install sra-tools. ENV SRA_VERSION 2.9.1 -RUN wget "http://ftp-trace.ncbi.nlm.nih.gov/sra/sdk/${SRA_VERSION}/sratoolkit.${SRA_VERSION}-ubuntu64.tar.gz" && \ +RUN wget "https://ftp.ncbi.nlm.nih.gov/sra/sdk/${SRA_VERSION}/sratoolkit.${SRA_VERSION}-ubuntu64.tar.gz" && \ tar zxfv sratoolkit.${SRA_VERSION}-ubuntu64.tar.gz && \ cp -r sratoolkit.${SRA_VERSION}-ubuntu64/bin/* /usr/bin -# Source: https://github.com/thisbejim/Pyrebase/issues/87#issuecomment-354452082 -# For whatever reason this worked and 'en_US.UTF-8' did not. -ENV LANG C.UTF-8 - -RUN pip3 install --upgrade pip - -COPY config/ config/ -COPY .boto .boto - -COPY workers/data_refinery_workers/processors/requirements.txt . - -RUN pip3 install -r requirements.txt - -COPY common/dist/data-refinery-common-* common/ - -# Get the latest version from the dist directory. -RUN pip3 install common/$(ls common -1 | sort --version-sort | tail -1) +# Clear out the pip3 cache. +RUN rm -rf /root/.cache ARG SYSTEM_VERSION @@ -105,6 +111,8 @@ ENV SYSTEM_VERSION $SYSTEM_VERSION USER user +COPY .boto .boto +COPY config/ config/ COPY workers/ . ENTRYPOINT [] diff --git a/workers/dockerfiles/Dockerfile.smasher b/workers/dockerfiles/Dockerfile.smasher index 7b95644db..313ba2150 100644 --- a/workers/dockerfiles/Dockerfile.smasher +++ b/workers/dockerfiles/Dockerfile.smasher @@ -1,42 +1,57 @@ FROM ubuntu:18.04 -RUN apt-get update -qq +# Prevent tzdata from prompting us for a timezone and hanging the build. +ENV DEBIAN_FRONTEND=noninteractive + +# Source: https://github.com/thisbejim/Pyrebase/issues/87#issuecomment-354452082 +# For whatever reason this worked and 'en_US.UTF-8' did not. +ENV LANG C.UTF-8 + +RUN apt-get update RUN apt-get install -y software-properties-common RUN add-apt-repository ppa:apt-fast/stable -RUN apt-get update -qq -RUN apt-get -y install apt-fast +RUN add-apt-repository ppa:deadsnakes/ppa +RUN add-apt-repository ppa:savoury1/llvm-defaults-10 -# Prevent tzdata from prompting us for a timezone and hanging the build. -ENV DEBIAN_FRONTEND=noninteractive +RUN apt-get update -qq +RUN apt-get install -y apt-fast apt-transport-https # The packages related to R are somewhat weird, see the README for more details. - COPY workers/CRAN.gpg . -RUN \ - apt-fast update -qq && \ - apt-get install -y apt-transport-https && \ - apt-fast install -y lsb-release && \ - echo "deb https://cloud.r-project.org/bin/linux/ubuntu bionic-cran35/" \ - >> /etc/apt/sources.list.d/added_repos.list && \ - apt-key add CRAN.gpg && \ - apt-fast update -qq && \ - apt-fast install -y \ +RUN apt-key add CRAN.gpg +RUN echo "deb https://cloud.r-project.org/bin/linux/ubuntu bionic-cran35/" \ + >> /etc/apt/sources.list.d/added_repos.list + +RUN apt-fast update -qq && apt-fast install -y \ + build-essential \ + cmake \ + curl \ + cython3 \ ed \ + gfortran \ git \ - python3 \ - python3-pip \ + libcairo-dev \ libcurl4-openssl-dev \ + libedit-dev \ + libblas-dev \ + liblapack-dev \ libpq-dev \ - r-base-core \ - r-base-dev \ - libpq-dev \ - libxml2-dev \ libssl-dev \ - libcurl4-openssl-dev \ - curl \ - wget && \ - rm -rf /var/lib/apt/lists/* + libxml2-dev \ + llvm-10-dev \ + lsb-release \ + mercurial \ + pkg-config \ + python3-pip \ + python3.8 \ + python3.8-dev \ + r-base-core \ + wget + RUN rm CRAN.gpg +RUN apt-get clean; rm -rf /var/lib/apt/lists/* +RUN ln -s /usr/bin/llvm-config-10 /usr/bin/llvm-config +RUN update-alternatives --install /usr/bin/python3 python3 /usr/bin/python3.8 1 RUN groupadd user && useradd --create-home --home-dir /home/user -g user user WORKDIR /home/user @@ -45,7 +60,6 @@ WORKDIR /home/user ENV R_LIBS "/usr/local/lib/R/site-library" COPY common/install_devtools.R . - RUN Rscript install_devtools.R COPY workers/R_dependencies/qn/dependencies.R . @@ -55,29 +69,19 @@ COPY workers/qn_dependencies.R . RUN Rscript qn_dependencies.R # End QN-specific -# Source: https://github.com/thisbejim/Pyrebase/issues/87#issuecomment-354452082 -# For whatever reason this worked and 'en_US.UTF-8' did not. -ENV LANG C.UTF-8 - RUN pip3 install --upgrade pip - # Smasher-specific requirements -RUN pip3 install numpy scipy matplotlib pandas==0.25.3 scikit-learn sympy nose rpy2==3.4.5 tzlocal +RUN pip3 install --ignore-installed nose numpy rpy2==3.4.5 # End smasher-specific -COPY config/ config/ -COPY .boto .boto - COPY workers/data_refinery_workers/processors/requirements.txt . - -RUN pip3 install -r requirements.txt - -COPY common/dist/data-refinery-common-* common/ +RUN pip3 install --ignore-installed -r requirements.txt # Get the latest version from the dist directory. +COPY common/dist/data-refinery-common-* common/ RUN pip3 install common/$(ls common -1 | sort --version-sort | tail -1) -# Clear our the pip3 cache +# Clear out the pip3 cache. RUN rm -rf /root/.cache ARG SYSTEM_VERSION @@ -86,6 +90,8 @@ ENV SYSTEM_VERSION $SYSTEM_VERSION USER user +COPY .boto .boto +COPY config/ config/ COPY workers/ . ENTRYPOINT [] diff --git a/workers/dockerfiles/Dockerfile.transcriptome b/workers/dockerfiles/Dockerfile.transcriptome index 5cb65a6b2..d1ac0ea63 100644 --- a/workers/dockerfiles/Dockerfile.transcriptome +++ b/workers/dockerfiles/Dockerfile.transcriptome @@ -1,36 +1,49 @@ FROM ubuntu:18.04 +# Prevent tzdata from prompting us for a timezone and hanging the build. +ENV DEBIAN_FRONTEND=noninteractive + +# Source: https://github.com/thisbejim/Pyrebase/issues/87#issuecomment-354452082 +# For whatever reason this worked and 'en_US.UTF-8' did not. +ENV LANG C.UTF-8 + RUN apt-get update -qq RUN apt-get install -y software-properties-common RUN add-apt-repository ppa:apt-fast/stable +RUN add-apt-repository ppa:deadsnakes/ppa +RUN add-apt-repository ppa:savoury1/llvm-defaults-10 + RUN apt-get update -qq RUN apt-get -y install apt-fast -# Prevent tzdata from prompting us for a timezone and hanging the build. -ENV DEBIAN_FRONTEND=noninteractive - -RUN \ - apt-fast update -qq && \ - apt-fast install -y \ +RUN apt-fast update -qq && apt-fast install -y \ + build-essential \ + curl \ + cython3 \ ed \ git \ - python3 \ - python3-pip \ libcurl4-openssl-dev \ + libfreetype6-dev \ libpq-dev \ - zlib1g-dev \ - curl \ - wget && \ - rm -rf /var/lib/apt/lists/* + llvm-10-dev \ + pkg-config \ + python3-pip \ + python3.8 \ + python3.8-dev \ + wget \ + zlib1g-dev + +RUN rm CRAN.gpg +RUN apt-get clean; rm -rf /var/lib/apt/lists/* +RUN ln -s /usr/bin/llvm-config-10 /usr/bin/llvm-config +RUN update-alternatives --install /usr/bin/python3 python3 /usr/bin/python3.8 1 RUN groupadd user && useradd --create-home --home-dir /home/user -g user user WORKDIR /home/user # It's annoying that this can only be installed via git. RUN git clone https://github.com/deweylab/RSEM.git - RUN cd RSEM && make install - RUN rm -rf RSEM # Install Salmon @@ -48,36 +61,26 @@ ENV SALMON_VERSION 0.13.1 # ENV SALMON_VERSION 0.10.2 RUN wget https://github.com/COMBINE-lab/salmon/releases/download/v${SALMON_VERSION}/Salmon-${SALMON_VERSION}_linux_x86_64.tar.gz - RUN tar -xzf Salmon-${SALMON_VERSION}_linux_x86_64.tar.gz # Salmon can extract to a different directory than the name of the tar file. RUN cp `tar -tzf Salmon-${SALMON_VERSION}_linux_x86_64.tar.gz | head -1 | cut -f1 -d"/"`/bin/salmon /usr/local/bin - RUN cp `tar -tzf Salmon-${SALMON_VERSION}_linux_x86_64.tar.gz | head -1 | cut -f1 -d"/"`/lib/* /usr/local/lib RUN rm -r Salmon* # End Salmon installation. -# Source: https://github.com/thisbejim/Pyrebase/issues/87#issuecomment-354452082 -# For whatever reason this worked and 'en_US.UTF-8' did not. -ENV LANG C.UTF-8 - RUN pip3 install --upgrade pip - -COPY config/ config/ -COPY .boto .boto +RUN pip3 install numpy COPY workers/data_refinery_workers/processors/requirements.txt . - -RUN pip3 install -r requirements.txt - -COPY common/dist/data-refinery-common-* common/ +RUN pip3 install --ignore-installed -r requirements.txt # Get the latest version from the dist directory. +COPY common/dist/data-refinery-common-* common/ RUN pip3 install common/$(ls common -1 | sort --version-sort | tail -1) -# Clear our the pip3 cache +# Clear out the pip3 cache. RUN rm -rf /root/.cache ARG SYSTEM_VERSION @@ -86,6 +89,8 @@ ENV SYSTEM_VERSION $SYSTEM_VERSION USER user +COPY .boto .boto +COPY config/ config/ COPY workers/ . ENTRYPOINT [] From 46dfdae0bc77c8a6d5e66eba4844ab192c3bad45 Mon Sep 17 00:00:00 2001 From: Arkadii Yakovets Date: Thu, 1 Sep 2022 11:03:18 -0700 Subject: [PATCH 038/220] Add `Accession` model. Update pre-commit config. --- .pre-commit-config.yaml | 2 +- .../migrations/0071_auto_20220901_1653.py | 44 +++++++++++++++++++ .../data_refinery_common/models/__init__.py | 1 + .../data_refinery_common/models/accession.py | 22 ++++++++++ 4 files changed, 68 insertions(+), 1 deletion(-) create mode 100644 common/data_refinery_common/migrations/0071_auto_20220901_1653.py create mode 100644 common/data_refinery_common/models/accession.py diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index d024704da..b651ce24a 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -22,7 +22,7 @@ repos: - id: isort - repo: https://github.com/psf/black - rev: 19.10b0 + rev: 22.3.0 hooks: - id: black args: [--line-length=100] diff --git a/common/data_refinery_common/migrations/0071_auto_20220901_1653.py b/common/data_refinery_common/migrations/0071_auto_20220901_1653.py new file mode 100644 index 000000000..c7d3b0b63 --- /dev/null +++ b/common/data_refinery_common/migrations/0071_auto_20220901_1653.py @@ -0,0 +1,44 @@ +# Generated by Django 3.2.7 on 2022-09-01 16:53 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ("data_refinery_common", "0070_auto_20211208_2118"), + ] + + operations = [ + migrations.CreateModel( + name="Accession", + fields=[ + ( + "id", + models.AutoField( + auto_created=True, + primary_key=True, + serialize=False, + verbose_name="ID", + ), + ), + ("code", models.TextField()), + ("created_at", models.DateTimeField(auto_now_add=True)), + ("last_modified_at", models.DateTimeField(auto_now=True)), + ("organism", models.TextField()), + ("published_date", models.DateTimeField()), + ("sample_count", models.PositiveIntegerField(default=0)), + ("source", models.TextField()), + ("technology", models.TextField()), + ], + options={ + "db_table": "accessions", + }, + ), + migrations.AddConstraint( + model_name="accession", + constraint=models.UniqueConstraint( + fields=("code", "source", "technology"), name="unique_accession" + ), + ), + ] diff --git a/common/data_refinery_common/models/__init__.py b/common/data_refinery_common/models/__init__.py index 39abe7ee3..8e9564153 100644 --- a/common/data_refinery_common/models/__init__.py +++ b/common/data_refinery_common/models/__init__.py @@ -1,3 +1,4 @@ +from data_refinery_common.models.accession import Accession # noqa from data_refinery_common.models.api_token import APIToken # noqa from data_refinery_common.models.associations.compendium_result_organism_association import ( # noqa CompendiumResultOrganismAssociation, diff --git a/common/data_refinery_common/models/accession.py b/common/data_refinery_common/models/accession.py new file mode 100644 index 000000000..dc93cfd88 --- /dev/null +++ b/common/data_refinery_common/models/accession.py @@ -0,0 +1,22 @@ +from django.db import models + + +class Accession(models.Model): + """Accession model.""" + + class Meta: + constraints = ( + models.UniqueConstraint( + fields=("code", "source", "technology"), name="unique_accession" + ), + ) + db_table = "accessions" + + code = models.TextField() + created_at = models.DateTimeField(auto_now_add=True) + last_modified_at = models.DateTimeField(auto_now=True) + organism = models.TextField() + published_date = models.DateTimeField() + sample_count = models.PositiveIntegerField(default=0) + source = models.TextField() + technology = models.TextField() From cb9249981fb8081d4bc5cf041598b17f77d83a55 Mon Sep 17 00:00:00 2001 From: Arkadii Yakovets Date: Thu, 8 Sep 2022 18:12:39 -0700 Subject: [PATCH 039/220] Port Python script to Django command. - Introduce AccessionBacklogEntry model. - Clean up command flags. - Get previous accessions from the DB. - --- .../migrations/0071_accessionbacklogentry.py | 38 + .../data_refinery_common/models/accession.py | 82 +- .../gatherer/__init__.py | 0 .../gatherer/management/__init__.py | 0 .../gatherer/management/commands/__init__.py | 0 .../management/commands/gather_accessions.py | 731 ++++++++++++++++++ foreman/data_refinery_foreman/settings.py | 17 +- foreman/dockerfiles/Dockerfile.foreman | 2 + 8 files changed, 856 insertions(+), 14 deletions(-) create mode 100644 common/data_refinery_common/migrations/0071_accessionbacklogentry.py create mode 100644 foreman/data_refinery_foreman/gatherer/__init__.py create mode 100644 foreman/data_refinery_foreman/gatherer/management/__init__.py create mode 100644 foreman/data_refinery_foreman/gatherer/management/commands/__init__.py create mode 100644 foreman/data_refinery_foreman/gatherer/management/commands/gather_accessions.py diff --git a/common/data_refinery_common/migrations/0071_accessionbacklogentry.py b/common/data_refinery_common/migrations/0071_accessionbacklogentry.py new file mode 100644 index 000000000..86c04daed --- /dev/null +++ b/common/data_refinery_common/migrations/0071_accessionbacklogentry.py @@ -0,0 +1,38 @@ +# Generated by Django 3.2.7 on 2022-09-07 19:31 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ("data_refinery_common", "0070_auto_20211208_2118"), + ] + + operations = [ + migrations.CreateModel( + name="AccessionBacklogEntry", + fields=[ + ( + "id", + models.AutoField( + auto_created=True, + primary_key=True, + serialize=False, + verbose_name="ID", + ), + ), + ("code", models.TextField(unique=True)), + ("created_at", models.DateTimeField(auto_now_add=True)), + ("last_modified_at", models.DateTimeField(auto_now=True)), + ("organism", models.TextField()), + ("published_date", models.DateTimeField()), + ("sample_count", models.PositiveIntegerField(default=0)), + ("source", models.TextField()), + ("technology", models.TextField()), + ], + options={ + "db_table": "accession_backlog", + }, + ), + ] diff --git a/common/data_refinery_common/models/accession.py b/common/data_refinery_common/models/accession.py index dc93cfd88..6ac62da9f 100644 --- a/common/data_refinery_common/models/accession.py +++ b/common/data_refinery_common/models/accession.py @@ -1,18 +1,16 @@ +from datetime import datetime + from django.db import models +from django.utils import timezone -class Accession(models.Model): - """Accession model.""" +class AccessionBacklogEntry(models.Model): + """Accession backlog entry model.""" class Meta: - constraints = ( - models.UniqueConstraint( - fields=("code", "source", "technology"), name="unique_accession" - ), - ) - db_table = "accessions" - - code = models.TextField() + db_table = "accession_backlog" + + code = models.TextField(unique=True) created_at = models.DateTimeField(auto_now_add=True) last_modified_at = models.DateTimeField(auto_now=True) organism = models.TextField() @@ -20,3 +18,67 @@ class Meta: sample_count = models.PositiveIntegerField(default=0) source = models.TextField() technology = models.TextField() + + def __eq__(self, other: object) -> bool: + """Returns True if two objects are equal. Otherwise returns False.""" + return isinstance(other, AccessionBacklogEntry) and self.code == other.code + + def __hash__(self) -> int: + """Returns accession object unique hash value.""" + return hash(self.code) + + def __str__(self) -> str: + """Returns accession default string representation.""" + return ", ".join((self.code, self.technology, self.source, str(self.published_date.date()))) + + @staticmethod + def create_from_ma_ae_entry(entry): + """Creates accession object from MicroArray ArrayExpress entry.""" + accession = AccessionBacklogEntry() + accession.code = entry["accession"] + accession.source = "ebi_biostudies" + accession.technology = "microarray" + + if "organism" in entry: + accession.organism = entry["organism"] + if "release_date" in entry: + accession.published_date = timezone.make_aware( + datetime.strptime(entry["release_date"], "%Y-%m-%d") + ) + + return accession + + @staticmethod + def create_from_ma_geo_entry(entry): + """Creates accession object from MicroArray GEO meta DB entry.""" + accession = AccessionBacklogEntry() + accession.code = entry["gse"] + accession.source = "geo_meta_db" + accession.technology = "microarray" + + if "organism" in entry: + accession.organism = entry["organism"].lower() + if "submission_date" in entry: + + accession.published_date = timezone.make_aware( + datetime.strptime(entry["submission_date"], "%Y-%m-%d") + ) + + return accession + + @staticmethod + def create_from_rnaseq_entry(entry): + """Creates accession object from RNA-Seq entry.""" + accession = AccessionBacklogEntry() + accession.code = entry["secondary_study_accession"] + accession.source = "ebi_ena_portal" + accession.technology = "rna-seq" + + if "scientific_name" in entry: + accession.organism = entry["scientific_name"].lower() + if "first_public" in entry: + accession.published_date = timezone.make_aware( + datetime.strptime(entry["first_public"], "%Y-%m-%d") + ) + + return accession diff --git a/foreman/data_refinery_foreman/gatherer/__init__.py b/foreman/data_refinery_foreman/gatherer/__init__.py new file mode 100644 index 000000000..e69de29bb diff --git a/foreman/data_refinery_foreman/gatherer/management/__init__.py b/foreman/data_refinery_foreman/gatherer/management/__init__.py new file mode 100644 index 000000000..e69de29bb diff --git a/foreman/data_refinery_foreman/gatherer/management/commands/__init__.py b/foreman/data_refinery_foreman/gatherer/management/commands/__init__.py new file mode 100644 index 000000000..e69de29bb diff --git a/foreman/data_refinery_foreman/gatherer/management/commands/gather_accessions.py b/foreman/data_refinery_foreman/gatherer/management/commands/gather_accessions.py new file mode 100644 index 000000000..c4808a191 --- /dev/null +++ b/foreman/data_refinery_foreman/gatherer/management/commands/gather_accessions.py @@ -0,0 +1,731 @@ +"""MicroArray (ArrayExpress, GEO) and RNA-Seq accession gathering automation. +Data sources: + - https://www.ebi.ac.uk/biostudies/help (MicroArray ArrayExpress). + - local SQLite meta DB from https://www.bioconductor.org/packages/release/bioc/html/GEOmetadb.html + (MicroArray GEO). + - https://www.ebi.ac.uk/ena/portal/api/ (RNA-Seq). +""" + +import argparse +import logging +import os +import re +import sqlite3 +from datetime import datetime +from http.client import RemoteDisconnected +from json.decoder import JSONDecodeError +from typing import List, Set +from urllib.parse import quote + +from django.core.management.base import BaseCommand + +import requests +from requests.exceptions import ConnectionError, ConnectTimeout +from retrying import retry +from urllib3.exceptions import ProtocolError + +from data_refinery_common.logging import get_and_configure_logger +from data_refinery_common.models.accession import AccessionBacklogEntry +from data_refinery_common.models.experiment import Experiment + +log = get_and_configure_logger(__name__) + + +class Command(BaseCommand): + """Creates agents and runs actual accession gathering.""" + + RE_ACCESSION = re.compile(r"(\D+)(\d+)") + RE_DATE = re.compile(r"\d{4}-\d{2}-\d{2}") + + # TODO(ark): remove after upgrade to python3.8 where parser argument + # "extend" action is directly available. + # https://docs.python.org/3.8/library/argparse.html#action + class ExtendAction(argparse.Action): + def __call__(self, parser, namespace, values, option_string=None): + items = getattr(namespace, self.dest) or [] + items.extend(values) + setattr(namespace, self.dest, items) + + def add_arguments(self, parser) -> None: + parser.register("action", "extend", Command.ExtendAction) + + parser.add_argument( + "--ae-id", + action="extend", + nargs="+", + type=str, + help="ArrayExpress ID(s) to use for filtering.", + ) + parser.add_argument( + "--ae-ids-file", + type=str, + help="Path to a file containing ArrayExpress ID(s) to use for filtering.", + ) + parser.add_argument("-c", "--count", type=int, help="Number of accessions to collect.") + parser.add_argument( + "-d", + "--dry-run", + action="store_true", + default=False, + help="Do not write the result to the database.", + ) + parser.add_argument( + "-e", + "--exclude-previous", + action="store_true", + default=True, + help="Exclude previously gathered or surveyed accessions.", + ) + parser.add_argument( + "-ne", + "--no-exclude-previous", + action="store_false", + default=False, + dest="exclude_previous", + help="Do not exclude previously gathered or surveyed accessions.", + ) + parser.add_argument( + "--gpl-id", + action="extend", + nargs="+", + type=str, + help="GEO platform ID(s) to use for filtering.", + ) + parser.add_argument( + "--gpl-ids-file", + type=str, + help="Path to a file containing GEO platform ID(s) to use for filtering.", + ) + parser.add_argument( + "-k", + "--keyword", + type=str, + help="Keyword to use for filtering.", + ) + parser.add_argument( + "-m", + "--microarray", + action="store_true", + default=False, + help="Collect MicroArray accessions.", + ) + parser.add_argument( + "-o", "--organism", type=str, help="Organism name to use for filtering." + ) + parser.add_argument( + "-r", + "--rna-seq", + action="store_true", + default=False, + help="Collect RNA-Seq accessions.", + ) + parser.add_argument( + "-s", + "--since", + type=str, + required=True, + help="Collect accessions made public on or after this date.", + ) + parser.add_argument( + "--taxon-id", + action="extend", + nargs="+", + type=int, + help="Taxon ID(s) to use for filtering.", + ) + parser.add_argument( + "--taxon-ids-file", + type=str, + help="Path to a file containing taxon ID(s) to use for filtering.", + ) + parser.add_argument( + "-u", + "--until", + type=str, + help="Collect accessions made public before or on this date.", + ) + parser.add_argument( + "-lv", + "--log-verbose", + action="store_true", + default=False, + help="Enable verbose log output.", + ) + + def set_verbosity_level(self, options) -> None: + """Configures log verbosity level.""" + if options["log_verbose"]: + log.addHandler(logging.StreamHandler()) + log.setLevel(logging.DEBUG) + else: + log.setLevel(logging.ERROR) + + def validate_args(self, options) -> None: + """Validates arguments.""" + if not options["microarray"] and not options["rna_seq"]: + exit("Either --microarray or --rna-seq must be specified.") + + errors = list() + since = options["since"] + until = options["until"] + if not self.RE_DATE.match(since): + errors.append('The -s, --since value must match "YYYY-MM-DD" format.') + if until and not self.RE_DATE.match(until): + errors.append('The -u, --until value must match "YYYY-MM-DD" format.') + if since and until and since > until: + errors.append("The -s, --since date must be earlier than -u, --until date.") + + keyword = options["keyword"] + organism = options["organism"] + if options["microarray"]: + ae_id = options["ae_id"] or options["ae_ids_file"] + gpl_id = options["gpl_id"] or options["gpl_ids_file"] + ids = ae_id or gpl_id + invalid_options_message = ( + "Exactly one of the keyword [-k, --keyword], organism [-o, --organism] or " + "ArrayExpress ID(s) [--ae-id, --ae-ids-file] / GEO platform ID(s) " + "[--gpl-id, --gpl-ids-file] must be specified." + ) + elif options["rna_seq"]: + taxon_id = options["taxon_id"] or options["taxon_ids_file"] + ids = taxon_id + invalid_options_message = ( + "Exactly one of the keyword [-k, --keyword], organism [-o, --organism] " + "or taxon ID(s) [--taxon-id, --taxon-ids-file] must be specified." + ) + + if len([option for option in (ids, keyword, organism) if option]) != 1: + errors.append(invalid_options_message) + + if errors: + exit("\n".join(errors)) + + def handle(self, *args, **options): + """Runs the accession gathering process.""" + self.validate_args(options) + self.set_verbosity_level(options) + + agents = list() + if options["rna_seq"]: + agents.append(RNASeqAccessionAgent(options)) + elif options["microarray"]: + if ( + options["ae_id"] + or options["ae_ids_file"] + or options["keyword"] + or options["organism"] + ): + agents.append(MicroArrayExpressAccessionAgent(options)) + if ( + options["gpl_id"] + or options["gpl_ids_file"] + or options["keyword"] + or options["organism"] + ): + agents.append(MicroArrayGEOAccessionAgent(options)) + + entries = set() + for agent in agents: + entries.update(agent.collect_data()) + + entries = sorted( # Sort the resulting list. + (entry for entry in entries if self.RE_ACCESSION.match(entry.code)), + key=lambda entry: ( + self.RE_ACCESSION.match(entry.code).group(1), + int(self.RE_ACCESSION.match(entry.code).group(2)), + ), + ) + # Limit the number of output entries. + entries = entries[: options["count"]] if options["count"] else entries + + if options["dry_run"]: + if entries: + output = "\n".join((str(entry) for entry in entries)) + else: + output = "No accessions found." + print(output) + else: + AccessionBacklogEntry.objects.bulk_create(entries) + + +class AccessionAgentBase: + "Accession agent base class." + + previous_accessions = set() + retry_params = { + "retry_on_exception": lambda e: isinstance( + e, (ConnectionError, ConnectTimeout, ProtocolError, RemoteDisconnected) + ), + "stop_max_attempt_number": 5, + "wait_exponential_multiplier": 1000, # Seconds. + "wait_exponential_max": 16000, # Seconds. + } + + def __init__(self, options) -> None: + """Populates args and values for major variables.""" + self.options = options + self.count = options["count"] + self.keyword = options["keyword"] + self.organism = options["organism"] + self.since = options["since"] + self.until = options["until"] or datetime.now().strftime("%Y-%m-%d") + + self.populate_previous_accessions() + + def build_query(self): + """Returns query/query dict depending on the accession data source.""" + raise NotImplementedError + + def collect_data(self): + """Generates resulting entry collection.""" + raise NotImplementedError + + def fetch_data(self): + """Fetches data from an external or local data source.""" + raise NotImplementedError + + def get_ids(self): + """Gets IDs for query filtering depending on the accession technology.""" + raise NotImplementedError + + def populate_previous_accessions(self) -> None: + """Populates previous accession set from a provided excluded ids file.""" + if not self.options["exclude_previous"] or self.previous_accessions: + return + + # Gathered accessions. + self.previous_accessions.update( + (entry["code"] for entry in AccessionBacklogEntry.objects.values("code")) + ) + + # Surveyed accessions. + experiments = Experiment.objects.values("accession_code", "alternate_accession_code") + self.previous_accessions.update( + (experiment["accession_code"] for experiment in experiments) + ) + self.previous_accessions.update( + (experiment["alternate_accession_code"] for experiment in experiments) + ) + + +class MicroArrayExpressAccessionAgent(AccessionAgentBase): + """ + MicroArray ArrayExpress accession gathering agent. The data is fetched from + the BioStudies database. See https://www.ebi.ac.uk/biostudies/help and + https://www.ebi.ac.uk/biostudies/arrayexpress/help#programmatic for more + information about the API endpoints. + """ + + def __init__(self, options) -> None: + super().__init__(options) + + self.data_chunk_size = 100 + self.data_url = "https://www.ebi.ac.uk/biostudies/api/v1/search" + self.ids = self.get_ids() + + def build_query(self) -> dict: + """Returns a query dict for getting array/organism specific accessions.""" + query_dict = { + "directsub": "true", + "page": 1, + "pageSize": self.data_chunk_size, + "release_date": f"[{self.since} TO {self.until}]", + "type": "study", + } + + if self.ids: + # TODO(ark): figure out better way of array filtering. + # Also make sure it's equivalent to the array filtering in this query + # https://github.com/AlexsLemonade/accession_retrieval/blob/master/experiment_accession_retrieval.R#L208 + query_dict.update({"content": ", ".join(self.ids)}) + elif self.keyword: + query_dict.update({"content": self.keyword}) + elif self.organism: + query_dict.update({"organism": f'"{self.organism}"'}) + + return query_dict + + def collect_data(self) -> Set[str]: + """Gets new accessions from EBI Biostudies API.""" + accessions = set() + + if self.ids: + message = ( + "Getting MicroArray ArrayExpress entries by " + f"ArrayExpress ID(s): {', '.join(self.ids)} for [{self.since} - {self.until}] " + "range." + ) + elif self.keyword: + message = ( + "Getting MicroArray ArrayExpress entries by " + f'"{self.keyword}" keyword for [{self.since} - {self.until}] range.' + ) + elif self.organism: + message = ( + "Getting MicroArray ArrayExpress entries by " + f'"{self.organism}" organism for [{self.since} - {self.until}] range.' + ) + else: + return accessions + + log.debug(message) + accessions.update(self.fetch_data()) + + return accessions + + def fetch_data(self) -> Set[str]: + """Retrieves accessions from API search endpoint.""" + + @retry(**self.retry_params) + def get_response(url, **kwargs): + """Gets response from an API endpoint.""" + return requests.get(url, **kwargs) + + accessions = set() + + is_done = False + params = self.build_query() + while not is_done: + range_start = (params["page"] - 1) * params["pageSize"] + 1 + range_end = (params["page"] - 1) * params["pageSize"] + self.data_chunk_size + log.debug(f"Processing entries {range_start} - {range_end}") + + response = get_response(self.data_url, params=params) + entries = response.json().get("hits") + if entries: + entries = ( + AccessionBacklogEntry.create_from_ma_ae_entry(entry) for entry in entries + ) + params["page"] += 1 + else: + is_done = True + + if self.previous_accessions: + entries = (entry for entry in entries if entry.code not in self.previous_accessions) + accessions.update(entries) + + # Quit after getting a sufficient amount of accessions. + if self.count and len(accessions) >= self.count: + is_done = True + + return accessions + + def get_ids(self) -> List[str]: + """Returns a combined list of passed ArrayExpress IDs.""" + ids = set() + + if self.options["ae_id"]: + ids.update(self.options["ae_id"]) + + if self.options["ae_ids_file"]: + with open(self.options["ae_ids_file"]) as ae_ids_file: + ids.update((ae_id.strip() for ae_id in ae_ids_file.readlines())) + + return sorted(ids) + + +class MicroArrayGEOAccessionAgent(AccessionAgentBase): + """ + MicroArray GEO accession gathering agent. The data is fetched from a local + SQLite GEO meta database. + """ + + def __init__(self, options) -> None: + super().__init__(options) + + self.db_path = "data/microarray/GEOmetadb.sqlite" + self.ids = self.get_ids() + + def build_query(self) -> str: + """Returns a query for getting GEO accessions from the local SQLite meta DB.""" + tables = [ + f"SELECT *", + "FROM gse_gpl", + "JOIN gpl ON gse_gpl.gpl=gpl.gpl", + "JOIN gse ON gse.gse=gse_gpl.gse", + "GROUP BY gse_gpl.gse", + ] + + conditions = [ + f"HAVING gse.submission_date >= '{self.since}'", + f"gse.submission_date <= '{self.until}'", + ] + + if self.ids: + gpl_ids = (f"'{gpl_id}'" for gpl_id in self.ids) + conditions.append(f"gse_gpl.gpl IN ({', '.join(gpl_ids)})") + elif self.organism: + conditions.append(f"lower(organism)='{self.organism.lower()}'") + + return f"{' '.join(tables)} {' AND '.join(conditions)}" + + def collect_data(self) -> Set[str]: + """Gets new accessions from GEO database.""" + accessions = set() + + if self.ids: + message = ( + "Getting MicroArray GEO entries by GEO platform ID(s): " + f"{', '.join(self.ids)} for [{self.since} - {self.until}] range." + ) + elif self.keyword: + message = ( + f'Getting MicroArray GEO entries by "{self.keyword}" keyword ' + f"for [{self.since} - {self.until}] range." + ) + elif self.organism: + message = ( + f'Getting MicroArray GEO entries by "{self.organism}" organism ' + f"for [{self.since} - {self.until}] range." + ) + else: + return accessions + + log.debug(message) + accessions.update(self.fetch_data()) + + return accessions + + def fetch_data(self) -> Set[str]: + """Retrieves accessions from the GEO meta DB.""" + + def match_keyword(row): + """ + Returns True if `row` matches `self.keyword` based regex. + Otherwise returns False. + """ + return re_keyword.match(" ".join((str(c) for c in row if c))) + + accessions = set() + + if not os.path.exists(self.db_path): + log.error("GEO meta database doesn't exist.") + return accessions + + connection = sqlite3.connect(self.db_path) + connection.row_factory = sqlite3.Row + connection.text_factory = lambda b: b.decode(errors="ignore") + entries = connection.execute(self.build_query()).fetchall() + connection.close() + + if self.keyword: + re_keyword = re.compile(f".*{self.keyword}.*", re.IGNORECASE) # Keyword regex. + entries = filter(match_keyword, entries) + + entries = ({key.lower(): entry[key] for key in entry.keys()} for entry in entries) + entries = set((AccessionBacklogEntry.create_from_ma_geo_entry(entry) for entry in entries)) + + if self.previous_accessions: + entries = (entry for entry in entries if entry.code not in self.previous_accessions) + accessions.update(entries) + + return accessions + + def get_ids(self) -> List[str]: + """Returns a combined list of passed GEO platform IDs.""" + ids = set() + + if self.options["gpl_id"]: + ids.update(self.options["gpl_id"]) + + if self.options["gpl_ids_file"]: + with open(self.options["gpl_ids_file"]) as gpl_ids_file: + ids.update((gpl_id.strip() for gpl_id in gpl_ids_file.readlines())) + + return sorted(ids) + + +class RNASeqAccessionAgent(AccessionAgentBase): + """ + RNA-Seq accession gathering agent. The data is fetched from + The European Nucleotide Archive (ENA) Portal. + See https://www.ebi.ac.uk/ena/portal/api/ for more information about the API + endpoints. + """ + + def __init__(self, options) -> None: + super().__init__(options) + + self.data_chunk_size = 10000 + self.data_url = "https://www.ebi.ac.uk/ena/portal/api/search" + self.ids = self.get_ids() + + def build_query(self, taxon_id: str = None) -> str: + """ + Returns a query to use for getting specific taxon ID accessions. + Some special characters must remain unquoted. + """ + + AND = " AND " + OR = " OR " + instrument_models = ( + "HiSeq X Five", + "HiSeq X Ten", + "Illumina Genome Analyzer II", + "Illumina Genome Analyzer IIx", + "Illumina Genome Analyzer", + "Illumina HiScanSQ", + "Illumina HiSeq 1000", + "Illumina HiSeq 1500", + "Illumina HiSeq 2000", + "Illumina HiSeq 2500", + "Illumina HiSeq 3000", + "Illumina HiSeq 4000", + "Illumina MiSeq", + "Illumina NovaSeq 6000", + "Ion Torrent Proton", + "Ion Torrent S5 XL", + "Ion Torrent S5", + "NextSeq 500", + "NextSeq 550", + ) + + instrument_models = OR.join((f'instrument_model="{im}"' for im in instrument_models)) + conditions = [ + # Relevant date fields: collection_date, collection_date_submitted, + # first_public, last_updated. + f"first_public >= {self.since}", + f"first_public <= {self.until}", + f"({instrument_models})", + 'library_source="TRANSCRIPTOMIC"', + 'library_strategy="RNA-Seq"', + ] + + if taxon_id: + conditions.append(f"tax_eq({taxon_id})") + elif self.keyword: + search_fields = ( + "assembly_software", + "bio_material", + "center_name", + "collected_by", + "experiment_title", + "host_body_site", + "instrument_model", + "instrument_platform", + "library_name", + "project_name", + "sample_title", + "sequencing_method", + "study_title", + ) + search_fields = OR.join( + (f'{sf}="*{self.keyword}*"' for sf in search_fields) + ) # Keyword regex. + conditions.append(f"({search_fields})") + elif self.organism: + # `host`: Natural (as opposed to laboratory) host to the organism from which sample + # was obtained. + # `host_scientific_name`: Scientific name of the natural (as opposed to laboratory) + # host to the organism from which sample was obtained. + # `scientific_name` Scientific name of the organism from which the sample was derived. + # Neither `host_scientific_name` nor `scientific_name` available for search. + # https://www.ebi.ac.uk/ena/portal/api/searchFields?dataPortal=ena&format=json&result=read_study + conditions.append(f'host="{self.organism}"') + + return quote(AND.join(conditions), safe='*()-="<>/ ') # Must remain unquoted. + + def collect_data(self) -> Set[str]: + """Gets new accessions from EBI ENA API.""" + accessions = set() + + if self.ids: + log.debug( + f"Getting RNA-Seq entries by taxon ID(s): " + f"{', '.join((str(idx) for idx in self.ids))} for [{self.since} - {self.until}] range." + ) + total = len(self.ids) + for idx, taxon_id in enumerate(self.ids): + if self.count and len(accessions) >= self.count: + break + + if total > 1: + log.debug(f"Getting entries for taxon ID {taxon_id}, {idx + 1} of {total}.") + accessions.update(self.fetch_data(taxon_id=taxon_id)) + elif self.keyword: + log.debug( + f'Getting RNA-Seq entries by "{self.keyword}" keyword ' + f"for [{self.since} - {self.until}] range." + ) + accessions.update(self.fetch_data()) + elif self.organism: + log.debug( + f'Getting entries by "{self.organism}" organism ' + f"for [{self.since} - {self.until}] range." + ) + accessions.update(self.fetch_data()) + + return accessions + + def fetch_data(self, taxon_id=None) -> Set[str]: + """ + Retrieves accessions from API search endpoint. + The API allows to set limit to 0 (get all in one request) but we do + it in a paginated fashion with `self.data_chunk_size` as a page size. + """ + + @retry(**self.retry_params) + def get_response(url, **kwargs): + """Gets response from an API endpoint.""" + return requests.post(url, **kwargs) + + accessions = set() + + fields = [ + "first_public", + "scientific_name", + "secondary_study_accession", + ] # For DRP/ERP/SRP-prefixed accessions. + data = { + "dataPortal": "ena", + # TODO(ark): add excludeAccessions/excludeAccessionType support. + "fields": ",".join(fields), # Use "all" to get all fields. + "format": "json", + "limit": self.data_chunk_size, + "offset": 0, + "query": self.build_query(taxon_id=taxon_id), + "result": "read_study", + "sortFields": fields, + } + + is_done = False + while not is_done: + log.debug( + f"Processing entries {data['offset'] + 1} - {data['offset'] + self.data_chunk_size}" + ) + entries = () + try: + response = get_response(self.data_url, data=data) + entries = response.json() + # TODO(ark): add `organism` when -o, --organism flag is used. + entries = ( + AccessionBacklogEntry.create_from_rnaseq_entry(entry) for entry in entries + ) + except JSONDecodeError: + is_done = True + except TypeError: + log.error(f"Couldn't get data from {self.data_url}. Response: {entries}") + data["offset"] += self.data_chunk_size + + if self.previous_accessions: + entries = (entry for entry in entries if entry.code not in self.previous_accessions) + accessions.update(entries) + + # Quit after getting a sufficient amount of accessions. + if self.count and len(accessions) >= self.count: + is_done = True + + return accessions + + def get_ids(self) -> List[str]: + """Returns a combined list of passed taxon IDs.""" + ids = set() + + if self.options["taxon_id"]: + ids.update(self.options["taxon_id"]) + + if self.options["taxon_ids_file"]: + with open(self.options["taxon_ids_file"]) as taxon_id_file: + ids.update((taxon_id.strip() for taxon_id in taxon_id_file.readlines())) + + return sorted(ids) diff --git a/foreman/data_refinery_foreman/settings.py b/foreman/data_refinery_foreman/settings.py index 7a489facc..5fea76d71 100644 --- a/foreman/data_refinery_foreman/settings.py +++ b/foreman/data_refinery_foreman/settings.py @@ -47,6 +47,7 @@ "data_refinery_common", "data_refinery_foreman.surveyor", "data_refinery_foreman.foreman", + "data_refinery_foreman.gatherer", "raven.contrib.django.raven_compat", "computedfields", ] @@ -108,10 +109,18 @@ # https://docs.djangoproject.com/en/1.10/ref/settings/#auth-password-validators AUTH_PASSWORD_VALIDATORS = [ - {"NAME": "django.contrib.auth.password_validation.UserAttributeSimilarityValidator",}, - {"NAME": "django.contrib.auth.password_validation.MinimumLengthValidator",}, - {"NAME": "django.contrib.auth.password_validation.CommonPasswordValidator",}, - {"NAME": "django.contrib.auth.password_validation.NumericPasswordValidator",}, + { + "NAME": "django.contrib.auth.password_validation.UserAttributeSimilarityValidator", + }, + { + "NAME": "django.contrib.auth.password_validation.MinimumLengthValidator", + }, + { + "NAME": "django.contrib.auth.password_validation.CommonPasswordValidator", + }, + { + "NAME": "django.contrib.auth.password_validation.NumericPasswordValidator", + }, ] diff --git a/foreman/dockerfiles/Dockerfile.foreman b/foreman/dockerfiles/Dockerfile.foreman index 8c09c6888..929ef2476 100644 --- a/foreman/dockerfiles/Dockerfile.foreman +++ b/foreman/dockerfiles/Dockerfile.foreman @@ -8,6 +8,8 @@ RUN apt-get -y install apt-fast RUN apt-fast update -qq && \ apt-fast install -y \ + gcc \ + libpq-dev \ python3 \ python3-pip From 4c7f8049506257c22d07bb96c606dd2221c1a8f7 Mon Sep 17 00:00:00 2001 From: Arkadii Yakovets Date: Tue, 13 Sep 2022 17:12:41 -0700 Subject: [PATCH 040/220] Address review comments. --- .../migrations/0071_auto_20220901_1653.py | 44 -- ...klogentry.py => 0071_gatheredaccession.py} | 6 +- .../data_refinery_common/models/__init__.py | 2 +- .../{accession.py => gathered_accession.py} | 20 +- .../gatherer/agents/__init__.py | 0 .../gatherer/agents/base.py | 79 +++ .../gatherer/agents/microarray_ae.py | 126 ++++ .../gatherer/agents/microarray_geo.py | 123 ++++ .../gatherer/agents/rna_seq.py | 204 ++++++ .../management/commands/gather_accessions.py | 643 +++--------------- 10 files changed, 626 insertions(+), 621 deletions(-) delete mode 100644 common/data_refinery_common/migrations/0071_auto_20220901_1653.py rename common/data_refinery_common/migrations/{0071_accessionbacklogentry.py => 0071_gatheredaccession.py} (88%) rename common/data_refinery_common/models/{accession.py => gathered_accession.py} (84%) create mode 100644 foreman/data_refinery_foreman/gatherer/agents/__init__.py create mode 100644 foreman/data_refinery_foreman/gatherer/agents/base.py create mode 100644 foreman/data_refinery_foreman/gatherer/agents/microarray_ae.py create mode 100644 foreman/data_refinery_foreman/gatherer/agents/microarray_geo.py create mode 100644 foreman/data_refinery_foreman/gatherer/agents/rna_seq.py diff --git a/common/data_refinery_common/migrations/0071_auto_20220901_1653.py b/common/data_refinery_common/migrations/0071_auto_20220901_1653.py deleted file mode 100644 index c7d3b0b63..000000000 --- a/common/data_refinery_common/migrations/0071_auto_20220901_1653.py +++ /dev/null @@ -1,44 +0,0 @@ -# Generated by Django 3.2.7 on 2022-09-01 16:53 - -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ("data_refinery_common", "0070_auto_20211208_2118"), - ] - - operations = [ - migrations.CreateModel( - name="Accession", - fields=[ - ( - "id", - models.AutoField( - auto_created=True, - primary_key=True, - serialize=False, - verbose_name="ID", - ), - ), - ("code", models.TextField()), - ("created_at", models.DateTimeField(auto_now_add=True)), - ("last_modified_at", models.DateTimeField(auto_now=True)), - ("organism", models.TextField()), - ("published_date", models.DateTimeField()), - ("sample_count", models.PositiveIntegerField(default=0)), - ("source", models.TextField()), - ("technology", models.TextField()), - ], - options={ - "db_table": "accessions", - }, - ), - migrations.AddConstraint( - model_name="accession", - constraint=models.UniqueConstraint( - fields=("code", "source", "technology"), name="unique_accession" - ), - ), - ] diff --git a/common/data_refinery_common/migrations/0071_accessionbacklogentry.py b/common/data_refinery_common/migrations/0071_gatheredaccession.py similarity index 88% rename from common/data_refinery_common/migrations/0071_accessionbacklogentry.py rename to common/data_refinery_common/migrations/0071_gatheredaccession.py index 86c04daed..a1740d96e 100644 --- a/common/data_refinery_common/migrations/0071_accessionbacklogentry.py +++ b/common/data_refinery_common/migrations/0071_gatheredaccession.py @@ -1,4 +1,4 @@ -# Generated by Django 3.2.7 on 2022-09-07 19:31 +# Generated by Django 3.2.7 on 2022-09-13 18:14 from django.db import migrations, models @@ -11,7 +11,7 @@ class Migration(migrations.Migration): operations = [ migrations.CreateModel( - name="AccessionBacklogEntry", + name="GatheredAccession", fields=[ ( "id", @@ -32,7 +32,7 @@ class Migration(migrations.Migration): ("technology", models.TextField()), ], options={ - "db_table": "accession_backlog", + "db_table": "gathered_accessions", }, ), ] diff --git a/common/data_refinery_common/models/__init__.py b/common/data_refinery_common/models/__init__.py index 8e9564153..2b544765d 100644 --- a/common/data_refinery_common/models/__init__.py +++ b/common/data_refinery_common/models/__init__.py @@ -1,4 +1,3 @@ -from data_refinery_common.models.accession import Accession # noqa from data_refinery_common.models.api_token import APIToken # noqa from data_refinery_common.models.associations.compendium_result_organism_association import ( # noqa CompendiumResultOrganismAssociation, @@ -46,6 +45,7 @@ from data_refinery_common.models.dataset_annotation import DatasetAnnotation # noqa from data_refinery_common.models.experiment import Experiment # noqa from data_refinery_common.models.experiment_annotation import ExperimentAnnotation # noqa +from data_refinery_common.models.gathered_accession import GatheredAccession # noqa from data_refinery_common.models.jobs.downloader_job import DownloaderJob # noqa from data_refinery_common.models.jobs.processor_job import ProcessorJob # noqa from data_refinery_common.models.jobs.survey_job import SurveyJob # noqa diff --git a/common/data_refinery_common/models/accession.py b/common/data_refinery_common/models/gathered_accession.py similarity index 84% rename from common/data_refinery_common/models/accession.py rename to common/data_refinery_common/models/gathered_accession.py index 6ac62da9f..04b084533 100644 --- a/common/data_refinery_common/models/accession.py +++ b/common/data_refinery_common/models/gathered_accession.py @@ -4,11 +4,11 @@ from django.utils import timezone -class AccessionBacklogEntry(models.Model): - """Accession backlog entry model.""" +class GatheredAccession(models.Model): + """Gathered accession model.""" class Meta: - db_table = "accession_backlog" + db_table = "gathered_accessions" code = models.TextField(unique=True) created_at = models.DateTimeField(auto_now_add=True) @@ -21,7 +21,7 @@ class Meta: def __eq__(self, other: object) -> bool: """Returns True if two objects are equal. Otherwise returns False.""" - return isinstance(other, AccessionBacklogEntry) and self.code == other.code + return isinstance(other, GatheredAccession) and self.code == other.code def __hash__(self) -> int: """Returns accession object unique hash value.""" @@ -32,15 +32,15 @@ def __str__(self) -> str: return ", ".join((self.code, self.technology, self.source, str(self.published_date.date()))) @staticmethod - def create_from_ma_ae_entry(entry): + def create_from_ma_ae_entry(entry, organism=None): """Creates accession object from MicroArray ArrayExpress entry.""" - accession = AccessionBacklogEntry() + accession = GatheredAccession() accession.code = entry["accession"] accession.source = "ebi_biostudies" accession.technology = "microarray" - if "organism" in entry: - accession.organism = entry["organism"] + if organism: + accession.organism = organism if "release_date" in entry: accession.published_date = timezone.make_aware( datetime.strptime(entry["release_date"], "%Y-%m-%d") @@ -51,7 +51,7 @@ def create_from_ma_ae_entry(entry): @staticmethod def create_from_ma_geo_entry(entry): """Creates accession object from MicroArray GEO meta DB entry.""" - accession = AccessionBacklogEntry() + accession = GatheredAccession() accession.code = entry["gse"] accession.source = "geo_meta_db" accession.technology = "microarray" @@ -69,7 +69,7 @@ def create_from_ma_geo_entry(entry): @staticmethod def create_from_rnaseq_entry(entry): """Creates accession object from RNA-Seq entry.""" - accession = AccessionBacklogEntry() + accession = GatheredAccession() accession.code = entry["secondary_study_accession"] accession.source = "ebi_ena_portal" accession.technology = "rna-seq" diff --git a/foreman/data_refinery_foreman/gatherer/agents/__init__.py b/foreman/data_refinery_foreman/gatherer/agents/__init__.py new file mode 100644 index 000000000..e69de29bb diff --git a/foreman/data_refinery_foreman/gatherer/agents/base.py b/foreman/data_refinery_foreman/gatherer/agents/base.py new file mode 100644 index 000000000..3754a4068 --- /dev/null +++ b/foreman/data_refinery_foreman/gatherer/agents/base.py @@ -0,0 +1,79 @@ +"""Abstract base class for accession gathering automation agents.""" + +from abc import ABC, abstractmethod +from datetime import datetime +from http.client import RemoteDisconnected + +from requests.exceptions import ConnectionError, ConnectTimeout +from urllib3.exceptions import ProtocolError + +from data_refinery_common.logging import get_and_configure_logger +from data_refinery_common.models.experiment import Experiment +from data_refinery_common.models.gathered_accession import GatheredAccession + +logger = get_and_configure_logger(__name__) + + +class AccessionAgentBase(ABC): + "Accession agent abstract base class." + + previous_accessions = set() + retry_params = { + "retry_on_exception": lambda e: isinstance( + e, (ConnectionError, ConnectTimeout, ProtocolError, RemoteDisconnected) + ), + "stop_max_attempt_number": 5, + "wait_exponential_multiplier": 1000, # Seconds. + "wait_exponential_max": 16000, # Seconds. + } + + def __init__(self, options) -> None: + """Populates args and values for major variables.""" + self.options = options + self.count = options["count"] + self.keyword = options["keyword"] + self.organism = options["organism"] + self.since = options["since"] + self.until = options["until"] or datetime.now().strftime("%Y-%m-%d") + + self.ids = self.get_ids() + self.populate_previous_accessions() + + @abstractmethod + def build_query(self): + """Returns query/query dict depending on the accession data source.""" + pass + + @abstractmethod + def collect_data(self): + """Generates resulting entry collection.""" + pass + + @abstractmethod + def fetch_data(self): + """Fetches data from an external or local data source.""" + pass + + @abstractmethod + def get_ids(self): + """Gets IDs for query filtering depending on the accession technology.""" + pass + + def populate_previous_accessions(self) -> None: + """Populates previous accession set from a provided excluded ids file.""" + if not self.options["exclude_previous"] or self.previous_accessions: + return + + # Gathered accessions. + self.previous_accessions.update( + (entry["code"] for entry in GatheredAccession.objects.values("code")) + ) + + # Surveyed accessions. + experiments = Experiment.objects.values("accession_code", "alternate_accession_code") + self.previous_accessions.update( + (experiment["accession_code"] for experiment in experiments) + ) + self.previous_accessions.update( + (experiment["alternate_accession_code"] for experiment in experiments) + ) diff --git a/foreman/data_refinery_foreman/gatherer/agents/microarray_ae.py b/foreman/data_refinery_foreman/gatherer/agents/microarray_ae.py new file mode 100644 index 000000000..b5314302b --- /dev/null +++ b/foreman/data_refinery_foreman/gatherer/agents/microarray_ae.py @@ -0,0 +1,126 @@ +"""MicroArray ArrayExpress accession gathering automation. +Data source: https://www.ebi.ac.uk/biostudies/help""" + +from typing import List, Set + +import requests +from retrying import retry + +from data_refinery_common.logging import get_and_configure_logger +from data_refinery_common.models.gathered_accession import GatheredAccession +from data_refinery_foreman.gatherer.agents.base import AccessionAgentBase + +logger = get_and_configure_logger(__name__) + + +class MicroArrayExpressAccessionAgent(AccessionAgentBase): + """ + MicroArray ArrayExpress accession gathering agent. The data is fetched from + the BioStudies database. See https://www.ebi.ac.uk/biostudies/help and + https://www.ebi.ac.uk/biostudies/arrayexpress/help#programmatic for more + information about the API endpoints. + """ + + DATA_CHUNK_SIZE = 100 + DATA_URL = "https://www.ebi.ac.uk/biostudies/api/v1/search" + + def build_query(self) -> dict: + """Returns a query dict for getting array/organism specific accessions.""" + query_dict = { + "directsub": "true", + "page": 1, + "pageSize": self.DATA_CHUNK_SIZE, + "release_date": f"[{self.since} TO {self.until}]", + "type": "study", + } + + if self.ids: + # TODO(ark): figure out better way of array filtering. + # Also make sure it's equivalent to the array filtering in this query + # https://github.com/AlexsLemonade/accession_retrieval/blob/master/experiment_accession_retrieval.R#L208 + query_dict.update({"content": ", ".join(self.ids)}) + elif self.keyword: + query_dict.update({"content": self.keyword}) + elif self.organism: + query_dict.update({"organism": f'"{self.organism}"'}) + + return query_dict + + def collect_data(self) -> Set[str]: + """Gets new accessions from EBI Biostudies API.""" + accessions = set() + + if self.ids: + message = ( + "Getting MicroArray ArrayExpress entries by " + f"ArrayExpress ID(s): {', '.join(self.ids)} for [{self.since} - {self.until}] " + "range." + ) + elif self.keyword: + message = ( + "Getting MicroArray ArrayExpress entries by " + f'"{self.keyword}" keyword for [{self.since} - {self.until}] range.' + ) + elif self.organism: + message = ( + "Getting MicroArray ArrayExpress entries by " + f'"{self.organism}" organism for [{self.since} - {self.until}] range.' + ) + else: + return accessions + + logger.debug(message) + accessions.update(self.fetch_data()) + + return accessions + + def fetch_data(self) -> Set[str]: + """Retrieves accessions from API search endpoint.""" + + @retry(**self.retry_params) + def get_response(url, **kwargs): + """Gets response from an API endpoint.""" + return requests.get(url, **kwargs) + + accessions = set() + + is_done = False + params = self.build_query() + while not is_done: + range_start = (params["page"] - 1) * params["pageSize"] + 1 + range_end = (params["page"] - 1) * params["pageSize"] + self.DATA_CHUNK_SIZE + logger.debug(f"Processing entries {range_start} - {range_end}") + + response = get_response(self.DATA_URL, params=params) + entries = response.json().get("hits") + if entries: + entries = ( + GatheredAccession.create_from_ma_ae_entry(entry, organism=self.organism) + for entry in entries + ) + params["page"] += 1 + else: + is_done = True + + if self.previous_accessions: + entries = (entry for entry in entries if entry.code not in self.previous_accessions) + accessions.update(entries) + + # Quit after getting a sufficient amount of accessions. + if self.count and len(accessions) >= self.count: + is_done = True + + return accessions + + def get_ids(self) -> List[str]: + """Returns a combined list of passed ArrayExpress IDs.""" + ids = set() + + if self.options["ae_id"]: + ids.update(self.options["ae_id"]) + + if self.options["ae_ids_file"]: + with open(self.options["ae_ids_file"]) as ae_ids_file: + ids.update((ae_id.strip() for ae_id in ae_ids_file.readlines())) + + return sorted(ids) diff --git a/foreman/data_refinery_foreman/gatherer/agents/microarray_geo.py b/foreman/data_refinery_foreman/gatherer/agents/microarray_geo.py new file mode 100644 index 000000000..975c715b3 --- /dev/null +++ b/foreman/data_refinery_foreman/gatherer/agents/microarray_geo.py @@ -0,0 +1,123 @@ +"""MicroArray GEO accession gathering automation. +Data source: local SQLite meta DB from https://www.bioconductor.org/packages/release/bioc/html/GEOmetadb.html""" + +import os +import re +import sqlite3 +from typing import List, Set + +from data_refinery_common.logging import get_and_configure_logger +from data_refinery_common.models.gathered_accession import GatheredAccession +from data_refinery_foreman.gatherer.agents.base import AccessionAgentBase + +logger = get_and_configure_logger(__name__) + + +class MicroArrayGEOAccessionAgent(AccessionAgentBase): + """ + MicroArray GEO accession gathering agent. The data is fetched from a local + SQLite GEO meta database. + """ + + # TODO(ark): move the DB file from Docker image to S3. + # Implement syncing procedure. + # Update URL once the original file is available again. + DB_PATH = "data/microarray/GEOmetadb.sqlite" + + def build_query(self) -> str: + """Returns a query for getting GEO accessions from the local SQLite meta DB.""" + tables = [ + "SELECT *", + "FROM gse_gpl", + "JOIN gpl ON gse_gpl.gpl=gpl.gpl", + "JOIN gse ON gse.gse=gse_gpl.gse", + "GROUP BY gse_gpl.gse", + ] + + conditions = [ + f"HAVING gse.submission_date >= '{self.since}'", + f"gse.submission_date <= '{self.until}'", + ] + + if self.ids: + gpl_ids = (f"'{gpl_id}'" for gpl_id in self.ids) + conditions.append(f"gse_gpl.gpl IN ({', '.join(gpl_ids)})") + elif self.organism: + conditions.append(f"lower(organism)='{self.organism.lower()}'") + + return f"{' '.join(tables)} {' AND '.join(conditions)}" + + def collect_data(self) -> Set[str]: + """Gets new accessions from GEO database.""" + accessions = set() + + if self.ids: + message = ( + "Getting MicroArray GEO entries by GEO platform ID(s): " + f"{', '.join(self.ids)} for [{self.since} - {self.until}] range." + ) + elif self.keyword: + message = ( + f'Getting MicroArray GEO entries by "{self.keyword}" keyword ' + f"for [{self.since} - {self.until}] range." + ) + elif self.organism: + message = ( + f'Getting MicroArray GEO entries by "{self.organism}" organism ' + f"for [{self.since} - {self.until}] range." + ) + else: + return accessions + + logger.debug(message) + accessions.update(self.fetch_data()) + + return accessions + + def fetch_data(self) -> Set[str]: + """Retrieves accessions from the GEO meta DB.""" + + def match_keyword(row): + """ + Returns True if `row` matches `self.keyword` based regex. + Otherwise returns False. + """ + return re_keyword.match(" ".join((str(c) for c in row if c))) + + accessions = set() + + if not os.path.exists(self.DB_PATH): + logger.error("GEO meta database doesn't exist.") + return accessions + + connection = sqlite3.connect(self.DB_PATH) + connection.row_factory = sqlite3.Row + connection.text_factory = lambda b: b.decode(errors="ignore") + entries = connection.execute(self.build_query()).fetchall() + connection.close() + + if self.keyword: + re_keyword = re.compile(f".*{self.keyword}.*", re.IGNORECASE) # Keyword regex. + entries = filter(match_keyword, entries) + + entries = ({key.lower(): entry[key] for key in entry.keys()} for entry in entries) + entries = set((GatheredAccession.create_from_ma_geo_entry(entry) for entry in entries)) + + if self.previous_accessions: + entries = (entry for entry in entries if entry.code not in self.previous_accessions) + accessions.update(entries) + + return accessions + + def get_ids(self) -> List[str]: + """Returns a combined list of passed GEO platform IDs.""" + ids = set() + + if self.options["gpl_id"]: + ids.update(self.options["gpl_id"]) + + if self.options["gpl_ids_file"]: + with open(self.options["gpl_ids_file"]) as gpl_ids_file: + ids.update((gpl_id.strip() for gpl_id in gpl_ids_file.readlines())) + + return sorted(ids) diff --git a/foreman/data_refinery_foreman/gatherer/agents/rna_seq.py b/foreman/data_refinery_foreman/gatherer/agents/rna_seq.py new file mode 100644 index 000000000..f9497f3ba --- /dev/null +++ b/foreman/data_refinery_foreman/gatherer/agents/rna_seq.py @@ -0,0 +1,204 @@ +"""RNA-Seq accession gathering automation. +Data source: https://www.ebi.ac.uk/ena/portal/api/""" + +from json.decoder import JSONDecodeError +from typing import List, Set +from urllib.parse import quote + +import requests +from retrying import retry + +from data_refinery_common.logging import get_and_configure_logger +from data_refinery_common.models.gathered_accession import GatheredAccession +from data_refinery_foreman.gatherer.agents.base import AccessionAgentBase + +logger = get_and_configure_logger(__name__) + + +class RNASeqAccessionAgent(AccessionAgentBase): + """ + RNA-Seq accession gathering agent. The data is fetched from + The European Nucleotide Archive (ENA) Portal. + See https://www.ebi.ac.uk/ena/portal/api/ for more information about the API + endpoints. + """ + + DATA_CHUNK_SIZE = 10000 + DATA_URL = "https://www.ebi.ac.uk/ena/portal/api/search" + + def build_query(self, taxon_id: str = None) -> str: + """ + Returns a query to use for getting specific taxon ID accessions. + Some special characters must remain unquoted. + """ + + AND = " AND " + OR = " OR " + instrument_models = ( + "HiSeq X Five", + "HiSeq X Ten", + "Illumina Genome Analyzer II", + "Illumina Genome Analyzer IIx", + "Illumina Genome Analyzer", + "Illumina HiScanSQ", + "Illumina HiSeq 1000", + "Illumina HiSeq 1500", + "Illumina HiSeq 2000", + "Illumina HiSeq 2500", + "Illumina HiSeq 3000", + "Illumina HiSeq 4000", + "Illumina MiSeq", + "Illumina NovaSeq 6000", + "Ion Torrent Proton", + "Ion Torrent S5 XL", + "Ion Torrent S5", + "NextSeq 500", + "NextSeq 550", + ) + + instrument_models = OR.join((f'instrument_model="{im}"' for im in instrument_models)) + conditions = [ + # Relevant date fields: collection_date, collection_date_submitted, + # first_public, last_updated. + f"first_public >= {self.since}", + f"first_public <= {self.until}", + f"({instrument_models})", + 'library_source="TRANSCRIPTOMIC"', + 'library_strategy="RNA-Seq"', + ] + + if taxon_id: + conditions.append(f"tax_eq({taxon_id})") + elif self.keyword: + search_fields = ( + "assembly_software", + "bio_material", + "center_name", + "collected_by", + "experiment_title", + "host_body_site", + "instrument_model", + "instrument_platform", + "library_name", + "project_name", + "sample_title", + "sequencing_method", + "study_title", + ) + search_fields = OR.join( + (f'{sf}="*{self.keyword}*"' for sf in search_fields) + ) # Keyword regex. + conditions.append(f"({search_fields})") + elif self.organism: + # `host`: Natural (as opposed to laboratory) host to the organism from which sample + # was obtained. + # `host_scientific_name`: Scientific name of the natural (as opposed to laboratory) + # host to the organism from which sample was obtained. + # `scientific_name` Scientific name of the organism from which the sample was derived. + # Neither `host_scientific_name` nor `scientific_name` available for search. + # https://www.ebi.ac.uk/ena/portal/api/searchFields?dataPortal=ena&format=json&result=read_study + conditions.append(f'host="{self.organism}"') + + return quote(AND.join(conditions), safe='*()-="<>/ ') # Must remain unquoted. + + def collect_data(self) -> Set[str]: + """Gets new accessions from EBI ENA API.""" + accessions = set() + + if self.ids: + logger.debug( + f"Getting RNA-Seq entries by taxon ID(s): " + f"{', '.join((str(i) for i in self.ids))} for [{self.since} - {self.until}] range." + ) + total = len(self.ids) + for idx, taxon_id in enumerate(self.ids): + if self.count and len(accessions) >= self.count: + break + + if total > 1: + logger.debug(f"Getting entries for taxon ID {taxon_id}, {idx + 1} of {total}.") + accessions.update(self.fetch_data(taxon_id=taxon_id)) + elif self.keyword: + logger.debug( + f'Getting RNA-Seq entries by "{self.keyword}" keyword ' + f"for [{self.since} - {self.until}] range." + ) + accessions.update(self.fetch_data()) + elif self.organism: + logger.debug( + f'Getting entries by "{self.organism}" organism ' + f"for [{self.since} - {self.until}] range." + ) + accessions.update(self.fetch_data()) + + return accessions + + def fetch_data(self, taxon_id=None) -> Set[str]: + """ + Retrieves accessions from API search endpoint. + The API allows to set limit to 0 (get all in one request) but we do + it in a paginated fashion with `self.DATA_CHUNK_SIZE` as a page size. + """ + + @retry(**self.retry_params) + def get_response(url, **kwargs): + """Gets response from an API endpoint.""" + return requests.post(url, **kwargs) + + accessions = set() + + fields = [ + "first_public", + "scientific_name", + "secondary_study_accession", + ] # For DRP/ERP/SRP-prefixed accessions. + data = { + "dataPortal": "ena", + # TODO(ark): add excludeAccessions/excludeAccessionType support. + "fields": ",".join(fields), # Use "all" to get all fields. + "format": "json", + "limit": self.DATA_CHUNK_SIZE, + "offset": 0, + "query": self.build_query(taxon_id=taxon_id), + "result": "read_study", + "sortFields": fields, + } + + is_done = False + while not is_done: + logger.debug( + f"Processing entries {data['offset'] + 1} - {data['offset'] + self.DATA_CHUNK_SIZE}" + ) + entries = () + try: + response = get_response(self.DATA_URL, data=data) + entries = response.json() + entries = (GatheredAccession.create_from_rnaseq_entry(entry) for entry in entries) + except JSONDecodeError: + is_done = True + except TypeError: + logger.error(f"Couldn't get data from {self.data_url}. Response: {entries}") + data["offset"] += self.DATA_CHUNK_SIZE + + if self.previous_accessions: + entries = (entry for entry in entries if entry.code not in self.previous_accessions) + accessions.update(entries) + + # Quit after getting a sufficient amount of accessions. + if self.count and len(accessions) >= self.count: + is_done = True + + return accessions + + def get_ids(self) -> List[str]: + """Returns a combined list of passed taxon IDs.""" + ids = set() + + if self.options["taxon_id"]: + ids.update(self.options["taxon_id"]) + + if self.options["taxon_ids_file"]: + with open(self.options["taxon_ids_file"]) as taxon_id_file: + ids.update((taxon_id.strip() for taxon_id in taxon_id_file.readlines())) + + return sorted(ids) diff --git a/foreman/data_refinery_foreman/gatherer/management/commands/gather_accessions.py b/foreman/data_refinery_foreman/gatherer/management/commands/gather_accessions.py index c4808a191..445245d3a 100644 --- a/foreman/data_refinery_foreman/gatherer/management/commands/gather_accessions.py +++ b/foreman/data_refinery_foreman/gatherer/management/commands/gather_accessions.py @@ -8,32 +8,27 @@ import argparse import logging -import os import re -import sqlite3 -from datetime import datetime -from http.client import RemoteDisconnected -from json.decoder import JSONDecodeError -from typing import List, Set -from urllib.parse import quote from django.core.management.base import BaseCommand -import requests -from requests.exceptions import ConnectionError, ConnectTimeout -from retrying import retry -from urllib3.exceptions import ProtocolError - from data_refinery_common.logging import get_and_configure_logger -from data_refinery_common.models.accession import AccessionBacklogEntry -from data_refinery_common.models.experiment import Experiment +from data_refinery_common.models.gathered_accession import GatheredAccession +from data_refinery_foreman.gatherer.agents.microarray_ae import MicroArrayExpressAccessionAgent +from data_refinery_foreman.gatherer.agents.microarray_geo import MicroArrayGEOAccessionAgent +from data_refinery_foreman.gatherer.agents.rna_seq import RNASeqAccessionAgent -log = get_and_configure_logger(__name__) +logger = get_and_configure_logger(__name__) class Command(BaseCommand): """Creates agents and runs actual accession gathering.""" + DATA_SOURCE_MA_AE = "microarray-ae" + DATA_SOURCE_MA_GEO = "microarray-geo" + DATA_SOURCE_RNA_SEQ = "rna-seq" + DATA_SOURCES = (DATA_SOURCE_MA_AE, DATA_SOURCE_MA_GEO, DATA_SOURCE_RNA_SEQ) + RE_ACCESSION = re.compile(r"(\D+)(\d+)") RE_DATE = re.compile(r"\d{4}-\d{2}-\d{2}") @@ -76,14 +71,6 @@ def add_arguments(self, parser) -> None: default=True, help="Exclude previously gathered or surveyed accessions.", ) - parser.add_argument( - "-ne", - "--no-exclude-previous", - action="store_false", - default=False, - dest="exclude_previous", - help="Do not exclude previously gathered or surveyed accessions.", - ) parser.add_argument( "--gpl-id", action="extend", @@ -103,21 +90,22 @@ def add_arguments(self, parser) -> None: help="Keyword to use for filtering.", ) parser.add_argument( - "-m", - "--microarray", + "-lv", + "--log-verbose", action="store_true", default=False, - help="Collect MicroArray accessions.", + help="Enable verbose log output.", ) parser.add_argument( - "-o", "--organism", type=str, help="Organism name to use for filtering." + "-ne", + "--no-exclude-previous", + action="store_false", + default=False, + dest="exclude_previous", + help="Do not exclude previously gathered or surveyed accessions.", ) parser.add_argument( - "-r", - "--rna-seq", - action="store_true", - default=False, - help="Collect RNA-Seq accessions.", + "-o", "--organism", type=str, help="Organism name to use for filtering." ) parser.add_argument( "-s", @@ -126,6 +114,14 @@ def add_arguments(self, parser) -> None: required=True, help="Collect accessions made public on or after this date.", ) + parser.add_argument( + "-src", + "--source", + type=str, + action="extend", + nargs="+", + help="Gather accessions from selected sources.", + ) parser.add_argument( "--taxon-id", action="extend", @@ -144,28 +140,19 @@ def add_arguments(self, parser) -> None: type=str, help="Collect accessions made public before or on this date.", ) - parser.add_argument( - "-lv", - "--log-verbose", - action="store_true", - default=False, - help="Enable verbose log output.", - ) def set_verbosity_level(self, options) -> None: """Configures log verbosity level.""" if options["log_verbose"]: - log.addHandler(logging.StreamHandler()) - log.setLevel(logging.DEBUG) + logger.addHandler(logging.StreamHandler()) + logger.setLevel(logging.DEBUG) else: - log.setLevel(logging.ERROR) + logger.setLevel(logging.ERROR) def validate_args(self, options) -> None: """Validates arguments.""" - if not options["microarray"] and not options["rna_seq"]: - exit("Either --microarray or --rna-seq must be specified.") - errors = list() + since = options["since"] until = options["until"] if not self.RE_DATE.match(since): @@ -177,52 +164,65 @@ def validate_args(self, options) -> None: keyword = options["keyword"] organism = options["organism"] - if options["microarray"]: - ae_id = options["ae_id"] or options["ae_ids_file"] - gpl_id = options["gpl_id"] or options["gpl_ids_file"] - ids = ae_id or gpl_id - invalid_options_message = ( - "Exactly one of the keyword [-k, --keyword], organism [-o, --organism] or " - "ArrayExpress ID(s) [--ae-id, --ae-ids-file] / GEO platform ID(s) " - "[--gpl-id, --gpl-ids-file] must be specified." - ) - elif options["rna_seq"]: - taxon_id = options["taxon_id"] or options["taxon_ids_file"] - ids = taxon_id - invalid_options_message = ( - "Exactly one of the keyword [-k, --keyword], organism [-o, --organism] " - "or taxon ID(s) [--taxon-id, --taxon-ids-file] must be specified." + sources = options["source"] or self.DATA_SOURCES + + for source in sources: + if source in self.DATA_SOURCES: + continue + errors.append( + f"Unknown source: {source}. Supported sources: {', '.join(self.DATA_SOURCES)}" ) - if len([option for option in (ids, keyword, organism) if option]) != 1: - errors.append(invalid_options_message) + if self.DATA_SOURCE_MA_AE in sources: + ids = options["ae_id"] or options["ae_ids_file"] + if not (ids or keyword or organism): + errors.append( + ( + "Exactly one of the keyword [-k, --keyword], organism [-o, --organism] or " + "ArrayExpress ID(s) [--ae-id, --ae-ids-file] must be specified for " + f"'{self.DATA_SOURCE_MA_AE}' source." + ) + ) + if self.DATA_SOURCE_MA_GEO in sources: + ids = options["gpl_id"] or options["gpl_ids_file"] + if not (ids or keyword or organism): + errors.append( + ( + "Exactly one of the keyword [-k, --keyword], organism [-o, --organism] or " + "GEO platform ID(s) [--gpl-id, --gpl-ids-file] must be specified for " + f"'{self.DATA_SOURCE_MA_GEO}' source." + ) + ) + if self.DATA_SOURCE_RNA_SEQ in sources: + ids = options["taxon_id"] or options["taxon_ids_file"] + if not (ids or keyword or organism): + errors.append( + ( + "Exactly one of the keyword [-k, --keyword], organism [-o, --organism] " + "or taxon ID(s) [--taxon-id, --taxon-ids-file] must be specified for " + f"'{self.DATA_SOURCE_RNA_SEQ}' source." + ) + ) if errors: exit("\n".join(errors)) def handle(self, *args, **options): - """Runs the accession gathering process.""" + """Creates agents and runs the accession gathering process.""" self.validate_args(options) self.set_verbosity_level(options) agents = list() - if options["rna_seq"]: + sources = options["source"] or self.DATA_SOURCES + + if self.DATA_SOURCE_RNA_SEQ in sources: agents.append(RNASeqAccessionAgent(options)) - elif options["microarray"]: - if ( - options["ae_id"] - or options["ae_ids_file"] - or options["keyword"] - or options["organism"] - ): - agents.append(MicroArrayExpressAccessionAgent(options)) - if ( - options["gpl_id"] - or options["gpl_ids_file"] - or options["keyword"] - or options["organism"] - ): - agents.append(MicroArrayGEOAccessionAgent(options)) + + if self.DATA_SOURCE_MA_AE in sources: + agents.append(MicroArrayExpressAccessionAgent(options)) + + if self.DATA_SOURCE_MA_GEO in sources: + agents.append(MicroArrayGEOAccessionAgent(options)) entries = set() for agent in agents: @@ -245,487 +245,4 @@ def handle(self, *args, **options): output = "No accessions found." print(output) else: - AccessionBacklogEntry.objects.bulk_create(entries) - - -class AccessionAgentBase: - "Accession agent base class." - - previous_accessions = set() - retry_params = { - "retry_on_exception": lambda e: isinstance( - e, (ConnectionError, ConnectTimeout, ProtocolError, RemoteDisconnected) - ), - "stop_max_attempt_number": 5, - "wait_exponential_multiplier": 1000, # Seconds. - "wait_exponential_max": 16000, # Seconds. - } - - def __init__(self, options) -> None: - """Populates args and values for major variables.""" - self.options = options - self.count = options["count"] - self.keyword = options["keyword"] - self.organism = options["organism"] - self.since = options["since"] - self.until = options["until"] or datetime.now().strftime("%Y-%m-%d") - - self.populate_previous_accessions() - - def build_query(self): - """Returns query/query dict depending on the accession data source.""" - raise NotImplementedError - - def collect_data(self): - """Generates resulting entry collection.""" - raise NotImplementedError - - def fetch_data(self): - """Fetches data from an external or local data source.""" - raise NotImplementedError - - def get_ids(self): - """Gets IDs for query filtering depending on the accession technology.""" - raise NotImplementedError - - def populate_previous_accessions(self) -> None: - """Populates previous accession set from a provided excluded ids file.""" - if not self.options["exclude_previous"] or self.previous_accessions: - return - - # Gathered accessions. - self.previous_accessions.update( - (entry["code"] for entry in AccessionBacklogEntry.objects.values("code")) - ) - - # Surveyed accessions. - experiments = Experiment.objects.values("accession_code", "alternate_accession_code") - self.previous_accessions.update( - (experiment["accession_code"] for experiment in experiments) - ) - self.previous_accessions.update( - (experiment["alternate_accession_code"] for experiment in experiments) - ) - - -class MicroArrayExpressAccessionAgent(AccessionAgentBase): - """ - MicroArray ArrayExpress accession gathering agent. The data is fetched from - the BioStudies database. See https://www.ebi.ac.uk/biostudies/help and - https://www.ebi.ac.uk/biostudies/arrayexpress/help#programmatic for more - information about the API endpoints. - """ - - def __init__(self, options) -> None: - super().__init__(options) - - self.data_chunk_size = 100 - self.data_url = "https://www.ebi.ac.uk/biostudies/api/v1/search" - self.ids = self.get_ids() - - def build_query(self) -> dict: - """Returns a query dict for getting array/organism specific accessions.""" - query_dict = { - "directsub": "true", - "page": 1, - "pageSize": self.data_chunk_size, - "release_date": f"[{self.since} TO {self.until}]", - "type": "study", - } - - if self.ids: - # TODO(ark): figure out better way of array filtering. - # Also make sure it's equivalent to the array filtering in this query - # https://github.com/AlexsLemonade/accession_retrieval/blob/master/experiment_accession_retrieval.R#L208 - query_dict.update({"content": ", ".join(self.ids)}) - elif self.keyword: - query_dict.update({"content": self.keyword}) - elif self.organism: - query_dict.update({"organism": f'"{self.organism}"'}) - - return query_dict - - def collect_data(self) -> Set[str]: - """Gets new accessions from EBI Biostudies API.""" - accessions = set() - - if self.ids: - message = ( - "Getting MicroArray ArrayExpress entries by " - f"ArrayExpress ID(s): {', '.join(self.ids)} for [{self.since} - {self.until}] " - "range." - ) - elif self.keyword: - message = ( - "Getting MicroArray ArrayExpress entries by " - f'"{self.keyword}" keyword for [{self.since} - {self.until}] range.' - ) - elif self.organism: - message = ( - "Getting MicroArray ArrayExpress entries by " - f'"{self.organism}" organism for [{self.since} - {self.until}] range.' - ) - else: - return accessions - - log.debug(message) - accessions.update(self.fetch_data()) - - return accessions - - def fetch_data(self) -> Set[str]: - """Retrieves accessions from API search endpoint.""" - - @retry(**self.retry_params) - def get_response(url, **kwargs): - """Gets response from an API endpoint.""" - return requests.get(url, **kwargs) - - accessions = set() - - is_done = False - params = self.build_query() - while not is_done: - range_start = (params["page"] - 1) * params["pageSize"] + 1 - range_end = (params["page"] - 1) * params["pageSize"] + self.data_chunk_size - log.debug(f"Processing entries {range_start} - {range_end}") - - response = get_response(self.data_url, params=params) - entries = response.json().get("hits") - if entries: - entries = ( - AccessionBacklogEntry.create_from_ma_ae_entry(entry) for entry in entries - ) - params["page"] += 1 - else: - is_done = True - - if self.previous_accessions: - entries = (entry for entry in entries if entry.code not in self.previous_accessions) - accessions.update(entries) - - # Quit after getting a sufficient amount of accessions. - if self.count and len(accessions) >= self.count: - is_done = True - - return accessions - - def get_ids(self) -> List[str]: - """Returns a combined list of passed ArrayExpress IDs.""" - ids = set() - - if self.options["ae_id"]: - ids.update(self.options["ae_id"]) - - if self.options["ae_ids_file"]: - with open(self.options["ae_ids_file"]) as ae_ids_file: - ids.update((ae_id.strip() for ae_id in ae_ids_file.readlines())) - - return sorted(ids) - - -class MicroArrayGEOAccessionAgent(AccessionAgentBase): - """ - MicroArray GEO accession gathering agent. The data is fetched from a local - SQLite GEO meta database. - """ - - def __init__(self, options) -> None: - super().__init__(options) - - self.db_path = "data/microarray/GEOmetadb.sqlite" - self.ids = self.get_ids() - - def build_query(self) -> str: - """Returns a query for getting GEO accessions from the local SQLite meta DB.""" - tables = [ - f"SELECT *", - "FROM gse_gpl", - "JOIN gpl ON gse_gpl.gpl=gpl.gpl", - "JOIN gse ON gse.gse=gse_gpl.gse", - "GROUP BY gse_gpl.gse", - ] - - conditions = [ - f"HAVING gse.submission_date >= '{self.since}'", - f"gse.submission_date <= '{self.until}'", - ] - - if self.ids: - gpl_ids = (f"'{gpl_id}'" for gpl_id in self.ids) - conditions.append(f"gse_gpl.gpl IN ({', '.join(gpl_ids)})") - elif self.organism: - conditions.append(f"lower(organism)='{self.organism.lower()}'") - - return f"{' '.join(tables)} {' AND '.join(conditions)}" - - def collect_data(self) -> Set[str]: - """Gets new accessions from GEO database.""" - accessions = set() - - if self.ids: - message = ( - "Getting MicroArray GEO entries by GEO platform ID(s): " - f"{', '.join(self.ids)} for [{self.since} - {self.until}] range." - ) - elif self.keyword: - message = ( - f'Getting MicroArray GEO entries by "{self.keyword}" keyword ' - f"for [{self.since} - {self.until}] range." - ) - elif self.organism: - message = ( - f'Getting MicroArray GEO entries by "{self.organism}" organism ' - f"for [{self.since} - {self.until}] range." - ) - else: - return accessions - - log.debug(message) - accessions.update(self.fetch_data()) - - return accessions - - def fetch_data(self) -> Set[str]: - """Retrieves accessions from the GEO meta DB.""" - - def match_keyword(row): - """ - Returns True if `row` matches `self.keyword` based regex. - Otherwise returns False. - """ - return re_keyword.match(" ".join((str(c) for c in row if c))) - - accessions = set() - - if not os.path.exists(self.db_path): - log.error("GEO meta database doesn't exist.") - return accessions - - connection = sqlite3.connect(self.db_path) - connection.row_factory = sqlite3.Row - connection.text_factory = lambda b: b.decode(errors="ignore") - entries = connection.execute(self.build_query()).fetchall() - connection.close() - - if self.keyword: - re_keyword = re.compile(f".*{self.keyword}.*", re.IGNORECASE) # Keyword regex. - entries = filter(match_keyword, entries) - - entries = ({key.lower(): entry[key] for key in entry.keys()} for entry in entries) - entries = set((AccessionBacklogEntry.create_from_ma_geo_entry(entry) for entry in entries)) - - if self.previous_accessions: - entries = (entry for entry in entries if entry.code not in self.previous_accessions) - accessions.update(entries) - - return accessions - - def get_ids(self) -> List[str]: - """Returns a combined list of passed GEO platform IDs.""" - ids = set() - - if self.options["gpl_id"]: - ids.update(self.options["gpl_id"]) - - if self.options["gpl_ids_file"]: - with open(self.options["gpl_ids_file"]) as gpl_ids_file: - ids.update((gpl_id.strip() for gpl_id in gpl_ids_file.readlines())) - - return sorted(ids) - - -class RNASeqAccessionAgent(AccessionAgentBase): - """ - RNA-Seq accession gathering agent. The data is fetched from - The European Nucleotide Archive (ENA) Portal. - See https://www.ebi.ac.uk/ena/portal/api/ for more information about the API - endpoints. - """ - - def __init__(self, options) -> None: - super().__init__(options) - - self.data_chunk_size = 10000 - self.data_url = "https://www.ebi.ac.uk/ena/portal/api/search" - self.ids = self.get_ids() - - def build_query(self, taxon_id: str = None) -> str: - """ - Returns a query to use for getting specific taxon ID accessions. - Some special characters must remain unquoted. - """ - - AND = " AND " - OR = " OR " - instrument_models = ( - "HiSeq X Five", - "HiSeq X Ten", - "Illumina Genome Analyzer II", - "Illumina Genome Analyzer IIx", - "Illumina Genome Analyzer", - "Illumina HiScanSQ", - "Illumina HiSeq 1000", - "Illumina HiSeq 1500", - "Illumina HiSeq 2000", - "Illumina HiSeq 2500", - "Illumina HiSeq 3000", - "Illumina HiSeq 4000", - "Illumina MiSeq", - "Illumina NovaSeq 6000", - "Ion Torrent Proton", - "Ion Torrent S5 XL", - "Ion Torrent S5", - "NextSeq 500", - "NextSeq 550", - ) - - instrument_models = OR.join((f'instrument_model="{im}"' for im in instrument_models)) - conditions = [ - # Relevant date fields: collection_date, collection_date_submitted, - # first_public, last_updated. - f"first_public >= {self.since}", - f"first_public <= {self.until}", - f"({instrument_models})", - 'library_source="TRANSCRIPTOMIC"', - 'library_strategy="RNA-Seq"', - ] - - if taxon_id: - conditions.append(f"tax_eq({taxon_id})") - elif self.keyword: - search_fields = ( - "assembly_software", - "bio_material", - "center_name", - "collected_by", - "experiment_title", - "host_body_site", - "instrument_model", - "instrument_platform", - "library_name", - "project_name", - "sample_title", - "sequencing_method", - "study_title", - ) - search_fields = OR.join( - (f'{sf}="*{self.keyword}*"' for sf in search_fields) - ) # Keyword regex. - conditions.append(f"({search_fields})") - elif self.organism: - # `host`: Natural (as opposed to laboratory) host to the organism from which sample - # was obtained. - # `host_scientific_name`: Scientific name of the natural (as opposed to laboratory) - # host to the organism from which sample was obtained. - # `scientific_name` Scientific name of the organism from which the sample was derived. - # Neither `host_scientific_name` nor `scientific_name` available for search. - # https://www.ebi.ac.uk/ena/portal/api/searchFields?dataPortal=ena&format=json&result=read_study - conditions.append(f'host="{self.organism}"') - - return quote(AND.join(conditions), safe='*()-="<>/ ') # Must remain unquoted. - - def collect_data(self) -> Set[str]: - """Gets new accessions from EBI ENA API.""" - accessions = set() - - if self.ids: - log.debug( - f"Getting RNA-Seq entries by taxon ID(s): " - f"{', '.join((str(idx) for idx in self.ids))} for [{self.since} - {self.until}] range." - ) - total = len(self.ids) - for idx, taxon_id in enumerate(self.ids): - if self.count and len(accessions) >= self.count: - break - - if total > 1: - log.debug(f"Getting entries for taxon ID {taxon_id}, {idx + 1} of {total}.") - accessions.update(self.fetch_data(taxon_id=taxon_id)) - elif self.keyword: - log.debug( - f'Getting RNA-Seq entries by "{self.keyword}" keyword ' - f"for [{self.since} - {self.until}] range." - ) - accessions.update(self.fetch_data()) - elif self.organism: - log.debug( - f'Getting entries by "{self.organism}" organism ' - f"for [{self.since} - {self.until}] range." - ) - accessions.update(self.fetch_data()) - - return accessions - - def fetch_data(self, taxon_id=None) -> Set[str]: - """ - Retrieves accessions from API search endpoint. - The API allows to set limit to 0 (get all in one request) but we do - it in a paginated fashion with `self.data_chunk_size` as a page size. - """ - - @retry(**self.retry_params) - def get_response(url, **kwargs): - """Gets response from an API endpoint.""" - return requests.post(url, **kwargs) - - accessions = set() - - fields = [ - "first_public", - "scientific_name", - "secondary_study_accession", - ] # For DRP/ERP/SRP-prefixed accessions. - data = { - "dataPortal": "ena", - # TODO(ark): add excludeAccessions/excludeAccessionType support. - "fields": ",".join(fields), # Use "all" to get all fields. - "format": "json", - "limit": self.data_chunk_size, - "offset": 0, - "query": self.build_query(taxon_id=taxon_id), - "result": "read_study", - "sortFields": fields, - } - - is_done = False - while not is_done: - log.debug( - f"Processing entries {data['offset'] + 1} - {data['offset'] + self.data_chunk_size}" - ) - entries = () - try: - response = get_response(self.data_url, data=data) - entries = response.json() - # TODO(ark): add `organism` when -o, --organism flag is used. - entries = ( - AccessionBacklogEntry.create_from_rnaseq_entry(entry) for entry in entries - ) - except JSONDecodeError: - is_done = True - except TypeError: - log.error(f"Couldn't get data from {self.data_url}. Response: {entries}") - data["offset"] += self.data_chunk_size - - if self.previous_accessions: - entries = (entry for entry in entries if entry.code not in self.previous_accessions) - accessions.update(entries) - - # Quit after getting a sufficient amount of accessions. - if self.count and len(accessions) >= self.count: - is_done = True - - return accessions - - def get_ids(self) -> List[str]: - """Returns a combined list of passed taxon IDs.""" - ids = set() - - if self.options["taxon_id"]: - ids.update(self.options["taxon_id"]) - - if self.options["taxon_ids_file"]: - with open(self.options["taxon_ids_file"]) as taxon_id_file: - ids.update((taxon_id.strip() for taxon_id in taxon_id_file.readlines())) - - return sorted(ids) + GatheredAccession.objects.bulk_create(entries) From 3fe5d8088d0862a1445cf002c4a4b1f067f4cb55 Mon Sep 17 00:00:00 2001 From: Arkadii Yakovets Date: Tue, 13 Sep 2022 17:17:19 -0700 Subject: [PATCH 041/220] Add a TODO. --- foreman/data_refinery_foreman/gatherer/agents/rna_seq.py | 1 + 1 file changed, 1 insertion(+) diff --git a/foreman/data_refinery_foreman/gatherer/agents/rna_seq.py b/foreman/data_refinery_foreman/gatherer/agents/rna_seq.py index f9497f3ba..f54ba570a 100644 --- a/foreman/data_refinery_foreman/gatherer/agents/rna_seq.py +++ b/foreman/data_refinery_foreman/gatherer/agents/rna_seq.py @@ -34,6 +34,7 @@ def build_query(self, taxon_id: str = None) -> str: AND = " AND " OR = " OR " + # TODO(ark): extract instrument models to a config file. instrument_models = ( "HiSeq X Five", "HiSeq X Ten", From ee66ac812337f7cdf9101c7a906497d9e3ea75ba Mon Sep 17 00:00:00 2001 From: Arkadii Yakovets Date: Tue, 13 Sep 2022 18:37:09 -0700 Subject: [PATCH 042/220] Fix empty response issue. --- foreman/data_refinery_foreman/gatherer/agents/microarray_ae.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/foreman/data_refinery_foreman/gatherer/agents/microarray_ae.py b/foreman/data_refinery_foreman/gatherer/agents/microarray_ae.py index b5314302b..541bd86d2 100644 --- a/foreman/data_refinery_foreman/gatherer/agents/microarray_ae.py +++ b/foreman/data_refinery_foreman/gatherer/agents/microarray_ae.py @@ -92,7 +92,7 @@ def get_response(url, **kwargs): logger.debug(f"Processing entries {range_start} - {range_end}") response = get_response(self.DATA_URL, params=params) - entries = response.json().get("hits") + entries = response.json().get("hits", ()) if entries: entries = ( GatheredAccession.create_from_ma_ae_entry(entry, organism=self.organism) From 5521286c64b4dc41a9ce070907157fce435c2cfa Mon Sep 17 00:00:00 2001 From: Arkadii Yakovets Date: Wed, 14 Sep 2022 18:52:57 -0700 Subject: [PATCH 043/220] Address review comments. --- .../migrations/0071_gatheredaccession.py | 2 +- .../models/gathered_accession.py | 72 +++++++------------ .../gatherer/agents/base.py | 5 +- .../gatherer/agents/microarray_ae.py | 21 ++++-- .../gatherer/agents/microarray_geo.py | 23 ++++-- .../gatherer/agents/rna_seq.py | 24 +++++-- .../management/commands/gather_accessions.py | 60 ++++++++-------- 7 files changed, 112 insertions(+), 95 deletions(-) diff --git a/common/data_refinery_common/migrations/0071_gatheredaccession.py b/common/data_refinery_common/migrations/0071_gatheredaccession.py index a1740d96e..65d192b59 100644 --- a/common/data_refinery_common/migrations/0071_gatheredaccession.py +++ b/common/data_refinery_common/migrations/0071_gatheredaccession.py @@ -22,7 +22,7 @@ class Migration(migrations.Migration): verbose_name="ID", ), ), - ("code", models.TextField(unique=True)), + ("accession_code", models.TextField(unique=True)), ("created_at", models.DateTimeField(auto_now_add=True)), ("last_modified_at", models.DateTimeField(auto_now=True)), ("organism", models.TextField()), diff --git a/common/data_refinery_common/models/gathered_accession.py b/common/data_refinery_common/models/gathered_accession.py index 04b084533..e56ed615c 100644 --- a/common/data_refinery_common/models/gathered_accession.py +++ b/common/data_refinery_common/models/gathered_accession.py @@ -10,7 +10,7 @@ class GatheredAccession(models.Model): class Meta: db_table = "gathered_accessions" - code = models.TextField(unique=True) + accession_code = models.TextField(unique=True) created_at = models.DateTimeField(auto_now_add=True) last_modified_at = models.DateTimeField(auto_now=True) organism = models.TextField() @@ -21,64 +21,44 @@ class Meta: def __eq__(self, other: object) -> bool: """Returns True if two objects are equal. Otherwise returns False.""" - return isinstance(other, GatheredAccession) and self.code == other.code + return isinstance(other, GatheredAccession) and self.accession_code == other.accession_code def __hash__(self) -> int: """Returns accession object unique hash value.""" - return hash(self.code) + return hash(self.accession_code) def __str__(self) -> str: """Returns accession default string representation.""" - return ", ".join((self.code, self.technology, self.source, str(self.published_date.date()))) - - @staticmethod - def create_from_ma_ae_entry(entry, organism=None): - """Creates accession object from MicroArray ArrayExpress entry.""" - accession = GatheredAccession() - accession.code = entry["accession"] - accession.source = "ebi_biostudies" - accession.technology = "microarray" - - if organism: - accession.organism = organism - if "release_date" in entry: - accession.published_date = timezone.make_aware( - datetime.strptime(entry["release_date"], "%Y-%m-%d") + return ", ".join( + ( + self.accession_code, + self.technology, + self.source, + str(self.published_date.date()), ) - - return accession + ) @staticmethod - def create_from_ma_geo_entry(entry): - """Creates accession object from MicroArray GEO meta DB entry.""" + def create_from_external_entry(data, source, technology, organism=None): + """Creates accession object from MicroArray ArrayExpress entry.""" accession = GatheredAccession() - accession.code = entry["gse"] - accession.source = "geo_meta_db" - accession.technology = "microarray" - - if "organism" in entry: - accession.organism = entry["organism"].lower() - if "submission_date" in entry: - accession.published_date = timezone.make_aware( - datetime.strptime(entry["submission_date"], "%Y-%m-%d") - ) + accession.accession_code = ( + data.get("accession") or data.get("gse") or data.get("secondary_study_accession") + ) - return accession + organism = data.get("organism") or data.get("scientific_name") or organism + if organism: + accession.organism = organism.lower() - @staticmethod - def create_from_rnaseq_entry(entry): - """Creates accession object from RNA-Seq entry.""" - accession = GatheredAccession() - accession.code = entry["secondary_study_accession"] - accession.source = "ebi_ena_portal" - accession.technology = "rna-seq" + published_date = ( + data.get("first_public") or data.get("release_date") or data.get("submission_date") + ) + accession.published_date = timezone.make_aware( + datetime.strptime(published_date, "%Y-%m-%d") + ) - if "scientific_name" in entry: - accession.organism = entry["scientific_name"].lower() - if "first_public" in entry: - accession.published_date = timezone.make_aware( - datetime.strptime(entry["first_public"], "%Y-%m-%d") - ) + accession.source = source + accession.technology = technology return accession diff --git a/foreman/data_refinery_foreman/gatherer/agents/base.py b/foreman/data_refinery_foreman/gatherer/agents/base.py index 3754a4068..818bbf72c 100644 --- a/foreman/data_refinery_foreman/gatherer/agents/base.py +++ b/foreman/data_refinery_foreman/gatherer/agents/base.py @@ -66,7 +66,10 @@ def populate_previous_accessions(self) -> None: # Gathered accessions. self.previous_accessions.update( - (entry["code"] for entry in GatheredAccession.objects.values("code")) + ( + entry["accession_code"] + for entry in GatheredAccession.objects.values("accession_code") + ) ) # Surveyed accessions. diff --git a/foreman/data_refinery_foreman/gatherer/agents/microarray_ae.py b/foreman/data_refinery_foreman/gatherer/agents/microarray_ae.py index 541bd86d2..3bfcf08fe 100644 --- a/foreman/data_refinery_foreman/gatherer/agents/microarray_ae.py +++ b/foreman/data_refinery_foreman/gatherer/agents/microarray_ae.py @@ -1,5 +1,7 @@ -"""MicroArray ArrayExpress accession gathering automation. -Data source: https://www.ebi.ac.uk/biostudies/help""" +""" +MicroArray ArrayExpress accession gathering automation. +Data source: https://www.ebi.ac.uk/biostudies/help +""" from typing import List, Set @@ -13,7 +15,7 @@ logger = get_and_configure_logger(__name__) -class MicroArrayExpressAccessionAgent(AccessionAgentBase): +class AEAgent(AccessionAgentBase): """ MicroArray ArrayExpress accession gathering agent. The data is fetched from the BioStudies database. See https://www.ebi.ac.uk/biostudies/help and @@ -23,6 +25,9 @@ class MicroArrayExpressAccessionAgent(AccessionAgentBase): DATA_CHUNK_SIZE = 100 DATA_URL = "https://www.ebi.ac.uk/biostudies/api/v1/search" + SOURCE = "ebi-biostudies" + SOURCE_NAME = "microarray-ae" + TECHNOLOGY = "microarray" def build_query(self) -> dict: """Returns a query dict for getting array/organism specific accessions.""" @@ -95,7 +100,9 @@ def get_response(url, **kwargs): entries = response.json().get("hits", ()) if entries: entries = ( - GatheredAccession.create_from_ma_ae_entry(entry, organism=self.organism) + GatheredAccession.create_from_external_entry( + entry, self.SOURCE, self.TECHNOLOGY, organism=self.organism + ) for entry in entries ) params["page"] += 1 @@ -103,7 +110,11 @@ def get_response(url, **kwargs): is_done = True if self.previous_accessions: - entries = (entry for entry in entries if entry.code not in self.previous_accessions) + entries = ( + entry + for entry in entries + if entry.accession_code not in self.previous_accessions + ) accessions.update(entries) # Quit after getting a sufficient amount of accessions. diff --git a/foreman/data_refinery_foreman/gatherer/agents/microarray_geo.py b/foreman/data_refinery_foreman/gatherer/agents/microarray_geo.py index 975c715b3..2500bcec5 100644 --- a/foreman/data_refinery_foreman/gatherer/agents/microarray_geo.py +++ b/foreman/data_refinery_foreman/gatherer/agents/microarray_geo.py @@ -1,5 +1,8 @@ -"""MicroArray GEO accession gathering automation. -Data source: local SQLite meta DB from https://www.bioconductor.org/packages/release/bioc/html/GEOmetadb.html""" +""" +MicroArray GEO accession gathering automation. +Data source: local SQLite meta DB from +https://www.bioconductor.org/packages/release/bioc/html/GEOmetadb.html +""" import os import re @@ -13,7 +16,7 @@ logger = get_and_configure_logger(__name__) -class MicroArrayGEOAccessionAgent(AccessionAgentBase): +class GEOAgent(AccessionAgentBase): """ MicroArray GEO accession gathering agent. The data is fetched from a local SQLite GEO meta database. @@ -23,6 +26,9 @@ class MicroArrayGEOAccessionAgent(AccessionAgentBase): # Implement syncing procedure. # Update URL once the original file is available again. DB_PATH = "data/microarray/GEOmetadb.sqlite" + SOURCE = "geo-meta-db" + SOURCE_NAME = "microarray-geo" + TECHNOLOGY = "microarray" def build_query(self) -> str: """Returns a query for getting GEO accessions from the local SQLite meta DB.""" @@ -101,10 +107,17 @@ def match_keyword(row): entries = filter(match_keyword, entries) entries = ({key.lower(): entry[key] for key in entry.keys()} for entry in entries) - entries = set((GatheredAccession.create_from_ma_geo_entry(entry) for entry in entries)) + entries = set( + ( + GatheredAccession.create_from_external_entry(entry, self.SOURCE, self.TECHNOLOGY) + for entry in entries + ) + ) if self.previous_accessions: - entries = (entry for entry in entries if entry.code not in self.previous_accessions) + entries = ( + entry for entry in entries if entry.accession_code not in self.previous_accessions + ) accessions.update(entries) return accessions diff --git a/foreman/data_refinery_foreman/gatherer/agents/rna_seq.py b/foreman/data_refinery_foreman/gatherer/agents/rna_seq.py index f54ba570a..577f815b8 100644 --- a/foreman/data_refinery_foreman/gatherer/agents/rna_seq.py +++ b/foreman/data_refinery_foreman/gatherer/agents/rna_seq.py @@ -1,5 +1,7 @@ -"""RNA-Seq accession gathering automation. -Data source: https://www.ebi.ac.uk/ena/portal/api/""" +""" +RNA-Seq accession gathering automation. +Data source: https://www.ebi.ac.uk/ena/portal/api/ +""" from json.decoder import JSONDecodeError from typing import List, Set @@ -15,7 +17,7 @@ logger = get_and_configure_logger(__name__) -class RNASeqAccessionAgent(AccessionAgentBase): +class RNASeqAgent(AccessionAgentBase): """ RNA-Seq accession gathering agent. The data is fetched from The European Nucleotide Archive (ENA) Portal. @@ -25,6 +27,9 @@ class RNASeqAccessionAgent(AccessionAgentBase): DATA_CHUNK_SIZE = 10000 DATA_URL = "https://www.ebi.ac.uk/ena/portal/api/search" + SOURCE = "ebi-ena-portal" + SOURCE_NAME = "rna-seq" + TECHNOLOGY = "rna-seq" def build_query(self, taxon_id: str = None) -> str: """ @@ -174,7 +179,12 @@ def get_response(url, **kwargs): try: response = get_response(self.DATA_URL, data=data) entries = response.json() - entries = (GatheredAccession.create_from_rnaseq_entry(entry) for entry in entries) + entries = ( + GatheredAccession.create_from_external_entry( + entry, self.SOURCE, self.TECHNOLOGY + ) + for entry in entries + ) except JSONDecodeError: is_done = True except TypeError: @@ -182,7 +192,11 @@ def get_response(url, **kwargs): data["offset"] += self.DATA_CHUNK_SIZE if self.previous_accessions: - entries = (entry for entry in entries if entry.code not in self.previous_accessions) + entries = ( + entry + for entry in entries + if entry.accession_code not in self.previous_accessions + ) accessions.update(entries) # Quit after getting a sufficient amount of accessions. diff --git a/foreman/data_refinery_foreman/gatherer/management/commands/gather_accessions.py b/foreman/data_refinery_foreman/gatherer/management/commands/gather_accessions.py index 445245d3a..2b073ef45 100644 --- a/foreman/data_refinery_foreman/gatherer/management/commands/gather_accessions.py +++ b/foreman/data_refinery_foreman/gatherer/management/commands/gather_accessions.py @@ -11,12 +11,13 @@ import re from django.core.management.base import BaseCommand +from django.db.utils import IntegrityError from data_refinery_common.logging import get_and_configure_logger from data_refinery_common.models.gathered_accession import GatheredAccession -from data_refinery_foreman.gatherer.agents.microarray_ae import MicroArrayExpressAccessionAgent -from data_refinery_foreman.gatherer.agents.microarray_geo import MicroArrayGEOAccessionAgent -from data_refinery_foreman.gatherer.agents.rna_seq import RNASeqAccessionAgent +from data_refinery_foreman.gatherer.agents.microarray_ae import AEAgent +from data_refinery_foreman.gatherer.agents.microarray_geo import GEOAgent +from data_refinery_foreman.gatherer.agents.rna_seq import RNASeqAgent logger = get_and_configure_logger(__name__) @@ -24,11 +25,8 @@ class Command(BaseCommand): """Creates agents and runs actual accession gathering.""" - DATA_SOURCE_MA_AE = "microarray-ae" - DATA_SOURCE_MA_GEO = "microarray-geo" - DATA_SOURCE_RNA_SEQ = "rna-seq" - DATA_SOURCES = (DATA_SOURCE_MA_AE, DATA_SOURCE_MA_GEO, DATA_SOURCE_RNA_SEQ) - + DATA_AGENTS = (AEAgent, GEOAgent, RNASeqAgent) + DATA_SOURCE_NAMES = [agent.SOURCE_NAME for agent in DATA_AGENTS] RE_ACCESSION = re.compile(r"(\D+)(\d+)") RE_DATE = re.compile(r"\d{4}-\d{2}-\d{2}") @@ -164,43 +162,43 @@ def validate_args(self, options) -> None: keyword = options["keyword"] organism = options["organism"] - sources = options["source"] or self.DATA_SOURCES + source_names = options["source"] or self.DATA_SOURCE_NAMES - for source in sources: - if source in self.DATA_SOURCES: + for source_name in source_names: + if source_name in self.DATA_SOURCE_NAMES: continue errors.append( - f"Unknown source: {source}. Supported sources: {', '.join(self.DATA_SOURCES)}" + f"Unknown source: {source_name}. Supported sources: {', '.join(self.DATA_SOURCE_NAMES)}" ) - if self.DATA_SOURCE_MA_AE in sources: + if AEAgent.SOURCE_NAME in source_names: ids = options["ae_id"] or options["ae_ids_file"] if not (ids or keyword or organism): errors.append( ( "Exactly one of the keyword [-k, --keyword], organism [-o, --organism] or " "ArrayExpress ID(s) [--ae-id, --ae-ids-file] must be specified for " - f"'{self.DATA_SOURCE_MA_AE}' source." + f"'{AEAgent.SOURCE_NAME}' source." ) ) - if self.DATA_SOURCE_MA_GEO in sources: + if GEOAgent.SOURCE_NAME in source_names: ids = options["gpl_id"] or options["gpl_ids_file"] if not (ids or keyword or organism): errors.append( ( "Exactly one of the keyword [-k, --keyword], organism [-o, --organism] or " "GEO platform ID(s) [--gpl-id, --gpl-ids-file] must be specified for " - f"'{self.DATA_SOURCE_MA_GEO}' source." + f"'{GEOAgent.SOURCE_NAME}' source." ) ) - if self.DATA_SOURCE_RNA_SEQ in sources: + if RNASeqAgent.SOURCE_NAME in source_names: ids = options["taxon_id"] or options["taxon_ids_file"] if not (ids or keyword or organism): errors.append( ( "Exactly one of the keyword [-k, --keyword], organism [-o, --organism] " "or taxon ID(s) [--taxon-id, --taxon-ids-file] must be specified for " - f"'{self.DATA_SOURCE_RNA_SEQ}' source." + f"'{RNASeqAgent.SOURCE_NAME}' source." ) ) @@ -213,26 +211,21 @@ def handle(self, *args, **options): self.set_verbosity_level(options) agents = list() - sources = options["source"] or self.DATA_SOURCES - - if self.DATA_SOURCE_RNA_SEQ in sources: - agents.append(RNASeqAccessionAgent(options)) - - if self.DATA_SOURCE_MA_AE in sources: - agents.append(MicroArrayExpressAccessionAgent(options)) - - if self.DATA_SOURCE_MA_GEO in sources: - agents.append(MicroArrayGEOAccessionAgent(options)) + sources_names = options["source"] or self.DATA_SOURCE_NAMES + for cls in self.DATA_AGENTS: + if cls.SOURCE_NAME not in sources_names: + continue + agents.append(cls(options)) entries = set() for agent in agents: entries.update(agent.collect_data()) entries = sorted( # Sort the resulting list. - (entry for entry in entries if self.RE_ACCESSION.match(entry.code)), + (entry for entry in entries if self.RE_ACCESSION.match(entry.accession_code)), key=lambda entry: ( - self.RE_ACCESSION.match(entry.code).group(1), - int(self.RE_ACCESSION.match(entry.code).group(2)), + self.RE_ACCESSION.match(entry.accession_code).group(1), + int(self.RE_ACCESSION.match(entry.accession_code).group(2)), ), ) # Limit the number of output entries. @@ -245,4 +238,7 @@ def handle(self, *args, **options): output = "No accessions found." print(output) else: - GatheredAccession.objects.bulk_create(entries) + try: + GatheredAccession.objects.bulk_create(entries) + except IntegrityError as e: + logger.exception(f"Could not save new accessions to the database: {e}") From 6d3e17988765f045a69ebac8618a6fffad55a907 Mon Sep 17 00:00:00 2001 From: Arkadii Yakovets Date: Wed, 21 Sep 2022 11:05:24 -0700 Subject: [PATCH 044/220] Rename agent files. --- .../gatherer/agents/{microarray_ae.py => ae_agent.py} | 0 .../gatherer/agents/{microarray_geo.py => geo_agent.py} | 0 .../gatherer/agents/{rna_seq.py => rnaseq_agent.py} | 0 .../gatherer/management/commands/gather_accessions.py | 6 +++--- 4 files changed, 3 insertions(+), 3 deletions(-) rename foreman/data_refinery_foreman/gatherer/agents/{microarray_ae.py => ae_agent.py} (100%) rename foreman/data_refinery_foreman/gatherer/agents/{microarray_geo.py => geo_agent.py} (100%) rename foreman/data_refinery_foreman/gatherer/agents/{rna_seq.py => rnaseq_agent.py} (100%) diff --git a/foreman/data_refinery_foreman/gatherer/agents/microarray_ae.py b/foreman/data_refinery_foreman/gatherer/agents/ae_agent.py similarity index 100% rename from foreman/data_refinery_foreman/gatherer/agents/microarray_ae.py rename to foreman/data_refinery_foreman/gatherer/agents/ae_agent.py diff --git a/foreman/data_refinery_foreman/gatherer/agents/microarray_geo.py b/foreman/data_refinery_foreman/gatherer/agents/geo_agent.py similarity index 100% rename from foreman/data_refinery_foreman/gatherer/agents/microarray_geo.py rename to foreman/data_refinery_foreman/gatherer/agents/geo_agent.py diff --git a/foreman/data_refinery_foreman/gatherer/agents/rna_seq.py b/foreman/data_refinery_foreman/gatherer/agents/rnaseq_agent.py similarity index 100% rename from foreman/data_refinery_foreman/gatherer/agents/rna_seq.py rename to foreman/data_refinery_foreman/gatherer/agents/rnaseq_agent.py diff --git a/foreman/data_refinery_foreman/gatherer/management/commands/gather_accessions.py b/foreman/data_refinery_foreman/gatherer/management/commands/gather_accessions.py index 2b073ef45..554b74350 100644 --- a/foreman/data_refinery_foreman/gatherer/management/commands/gather_accessions.py +++ b/foreman/data_refinery_foreman/gatherer/management/commands/gather_accessions.py @@ -15,9 +15,9 @@ from data_refinery_common.logging import get_and_configure_logger from data_refinery_common.models.gathered_accession import GatheredAccession -from data_refinery_foreman.gatherer.agents.microarray_ae import AEAgent -from data_refinery_foreman.gatherer.agents.microarray_geo import GEOAgent -from data_refinery_foreman.gatherer.agents.rna_seq import RNASeqAgent +from data_refinery_foreman.gatherer.agents.ae_agent import AEAgent +from data_refinery_foreman.gatherer.agents.geo_agent import GEOAgent +from data_refinery_foreman.gatherer.agents.rnaseq_agent import RNASeqAgent logger = get_and_configure_logger(__name__) From 36c9f8a2067c1a6da7a152d816d5a6b4538ab9dc Mon Sep 17 00:00:00 2001 From: Arkadii Yakovets Date: Wed, 2 Nov 2022 10:36:07 -0700 Subject: [PATCH 045/220] Update API Docker images. Reorder and clean up the instructions. --- api/dockerfiles/Dockerfile.api_local | 16 +++++++-------- api/dockerfiles/Dockerfile.api_production | 24 +++++++++++------------ 2 files changed, 18 insertions(+), 22 deletions(-) diff --git a/api/dockerfiles/Dockerfile.api_local b/api/dockerfiles/Dockerfile.api_local index f52c29d4f..05dd00df1 100644 --- a/api/dockerfiles/Dockerfile.api_local +++ b/api/dockerfiles/Dockerfile.api_local @@ -1,27 +1,25 @@ FROM python:3.8.5-slim-buster -# Install libpq-dev for psycopg2 +# Install gcc and libpq-dev for psycopg2. RUN apt-get update -qq -RUN apt-get install -y libpq-dev gcc +RUN apt-get install -y \ + gcc \ + libpq-dev RUN groupadd user && useradd --create-home --home-dir /home/user -g user user WORKDIR /home/user RUN pip install --upgrade pip -COPY config/ config/ - COPY api/requirements.txt . - RUN pip install -r requirements.txt -COPY common/dist/data-refinery-common-* common/ - # Get the latest version from the dist directory. -RUN pip install \ - common/$(ls common -1 | sort --version-sort | tail -1) +COPY common/dist/data-refinery-common-* common/ +RUN pip install common/$(ls common -1 | sort --version-sort | tail -1) COPY api/ . +COPY config/ config/ ARG SYSTEM_VERSION diff --git a/api/dockerfiles/Dockerfile.api_production b/api/dockerfiles/Dockerfile.api_production index 2de11c2b7..a432610ff 100644 --- a/api/dockerfiles/Dockerfile.api_production +++ b/api/dockerfiles/Dockerfile.api_production @@ -1,30 +1,28 @@ FROM python:3.8.5-buster -# Install libpq-dev and gcc for psycopg2 +# Install gcc and libpq-dev for psycopg2. RUN apt-get update -qq -RUN apt-get install -y libpq-dev gcc +RUN apt-get install -y \ + gcc \ + libpq-dev RUN groupadd user && useradd --create-home --home-dir /home/user -g user user WORKDIR /home/user -COPY config/ config/ - COPY api/requirements.txt . - RUN pip install -r requirements.txt +# Get the latest version from the dist directory. COPY common/dist/data-refinery-common-* common/ +RUN pip install common/$(ls common -1 | sort --version-sort | tail -1) -# Get the latest version from the dist directory. -RUN pip install \ - common/$(ls common -1 | sort --version-sort | tail -1) +# uWSGI. +RUN pip install uwsgi COPY api/ . +COPY config/ config/ -# uWSGI -RUN pip install uwsgi RUN chmod +x /home/user/collect_and_run_uwsgi.sh - RUN mkdir -p /tmp/www/static RUN chown user /tmp/www/static @@ -34,8 +32,8 @@ ENV SYSTEM_VERSION $SYSTEM_VERSION USER user -# We collect Django's static files and expose them -# as a volume so that Nginx can serve them directly. +# We collect Django's static files and expose them as a volume so that Nginx +# can serve them directly. VOLUME /tmp/www/static EXPOSE 8081 From 50ce1e0e9eb0393abd1ed40ebc342858d0baf156 Mon Sep 17 00:00:00 2001 From: Arkadii Yakovets Date: Wed, 2 Nov 2022 10:44:26 -0700 Subject: [PATCH 046/220] Update foreman Docker image. Reorder and clean up the instructions. --- foreman/dockerfiles/Dockerfile.foreman | 28 ++++++++++++-------------- 1 file changed, 13 insertions(+), 15 deletions(-) diff --git a/foreman/dockerfiles/Dockerfile.foreman b/foreman/dockerfiles/Dockerfile.foreman index 8c09c6888..8b7b9f239 100644 --- a/foreman/dockerfiles/Dockerfile.foreman +++ b/foreman/dockerfiles/Dockerfile.foreman @@ -1,40 +1,38 @@ FROM ubuntu:18.04 +# Source: https://github.com/thisbejim/Pyrebase/issues/87#issuecomment-354452082 +# For whatever reason this worked and 'en_US.UTF-8' did not. +ENV LANG C.UTF-8 + RUN apt-get update -qq RUN apt-get install -y software-properties-common RUN add-apt-repository ppa:apt-fast/stable + RUN apt-get update -qq RUN apt-get -y install apt-fast - -RUN apt-fast update -qq && \ - apt-fast install -y \ +RUN apt-fast update -qq +RUN apt-fast install -y \ + gcc \ + libpq-dev \ python3 \ python3-pip RUN groupadd user && useradd --create-home --home-dir /home/user -g user user WORKDIR /home/user -# Source: https://github.com/thisbejim/Pyrebase/issues/87#issuecomment-354452082 -# For whatever reason this worked and 'en_US.UTF-8' did not. -ENV LANG C.UTF-8 - RUN pip3 install --upgrade pip -COPY config config -COPY .boto .boto - COPY foreman/requirements.txt . - # The base image does not have Python 2.X on it at all, so all calls # to pip or python are by default calls to pip3 or python3 RUN pip3 install -r requirements.txt -COPY common/dist/data-refinery-common-* common/ - # Get the latest version from the dist directory. -RUN pip3 install \ - common/$(ls common -1 | sort --version-sort | tail -1) +COPY common/dist/data-refinery-common-* common/ +RUN pip3 install common/$(ls common -1 | sort --version-sort | tail -1) +COPY .boto .boto +COPY config config COPY foreman/ . ARG SYSTEM_VERSION From bba6fbee71740aa13e49cbe85e71f016215c5f85 Mon Sep 17 00:00:00 2001 From: Arkadii Yakovets Date: Wed, 2 Nov 2022 15:32:16 -0700 Subject: [PATCH 047/220] Move all tests to tests directory. Add separate settings file (tests/settings.py). Refactor import according to the new structure. --- .pre-commit-config.yaml | 2 +- common/data_refinery_common/test_imports.py | 13 ------------ .../data_refinery_common/test_microarray.py | 16 -------------- common/tests/__init__.py | 0 .../data/microarray}/97_(Mouse430_2).CEL.gz | Bin .../data/microarray}/C30057.CEL.gz | Bin .../data/microarray}/CONTROL6.cel.gz | Bin .../data/microarray}/SG2_u34a.CEL.gz | Bin common/tests/models/__init__.py | 0 .../models/test_jobs.py | 0 .../models/test_models.py | 0 .../models/test_ontology_term.py | 6 ++++-- .../models/test_organisms.py | 3 +-- common/tests/settings.py | 5 +++++ common/tests/test_imports.py | 13 ++++++++++++ .../test_job_management.py | 0 common/tests/test_microarray.py | 20 ++++++++++++++++++ .../test_utils.py | 2 +- 18 files changed, 45 insertions(+), 35 deletions(-) delete mode 100644 common/data_refinery_common/test_imports.py delete mode 100644 common/data_refinery_common/test_microarray.py create mode 100644 common/tests/__init__.py rename common/{test-files => tests/data/microarray}/97_(Mouse430_2).CEL.gz (100%) rename common/{test-files => tests/data/microarray}/C30057.CEL.gz (100%) rename common/{test-files => tests/data/microarray}/CONTROL6.cel.gz (100%) rename common/{test-files => tests/data/microarray}/SG2_u34a.CEL.gz (100%) create mode 100644 common/tests/models/__init__.py rename common/{data_refinery_common => tests}/models/test_jobs.py (100%) rename common/{data_refinery_common => tests}/models/test_models.py (100%) rename common/{data_refinery_common => tests}/models/test_ontology_term.py (95%) rename common/{data_refinery_common => tests}/models/test_organisms.py (99%) create mode 100644 common/tests/settings.py create mode 100644 common/tests/test_imports.py rename common/{data_refinery_common => tests}/test_job_management.py (100%) create mode 100644 common/tests/test_microarray.py rename common/{data_refinery_common => tests}/test_utils.py (98%) diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index d024704da..b651ce24a 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -22,7 +22,7 @@ repos: - id: isort - repo: https://github.com/psf/black - rev: 19.10b0 + rev: 22.3.0 hooks: - id: black args: [--line-length=100] diff --git a/common/data_refinery_common/test_imports.py b/common/data_refinery_common/test_imports.py deleted file mode 100644 index a637ad54a..000000000 --- a/common/data_refinery_common/test_imports.py +++ /dev/null @@ -1,13 +0,0 @@ -from django.test import TestCase, tag - - -class ImportTestCase(TestCase): - def test_imports(self): - # Make sure we can import the common tests - import data_refinery_common.models.test_jobs - import data_refinery_common.models.test_models - import data_refinery_common.models.test_ontology_term - import data_refinery_common.models.test_organisms - import data_refinery_common.test_job_management - import data_refinery_common.test_microarray - import data_refinery_common.test_utils diff --git a/common/data_refinery_common/test_microarray.py b/common/data_refinery_common/test_microarray.py deleted file mode 100644 index a2f6d9f91..000000000 --- a/common/data_refinery_common/test_microarray.py +++ /dev/null @@ -1,16 +0,0 @@ -from django.test import TestCase - -from data_refinery_common import microarray - -CEL_FILE_HUMAN = "test-files/C30057.CEL.gz" -CEL_FILE_RAT = "test-files/SG2_u34a.CEL.gz" -CEL_FILE_MOUSE = "test-files/97_(Mouse430_2).CEL.gz" -CEL_FILE_ZEBRAFISH = "test-files/CONTROL6.cel.gz" - - -class MicroarrayTestCase(TestCase): - def test_get_platform_from_CEL(self): - self.assertEqual("hgu95av2", microarray.get_platform_from_CEL(CEL_FILE_HUMAN)) - self.assertEqual("rgu34a", microarray.get_platform_from_CEL(CEL_FILE_RAT)) - self.assertEqual("mouse4302", microarray.get_platform_from_CEL(CEL_FILE_MOUSE)) - self.assertEqual("zebgene11st", microarray.get_platform_from_CEL(CEL_FILE_ZEBRAFISH)) diff --git a/common/tests/__init__.py b/common/tests/__init__.py new file mode 100644 index 000000000..e69de29bb diff --git a/common/test-files/97_(Mouse430_2).CEL.gz b/common/tests/data/microarray/97_(Mouse430_2).CEL.gz similarity index 100% rename from common/test-files/97_(Mouse430_2).CEL.gz rename to common/tests/data/microarray/97_(Mouse430_2).CEL.gz diff --git a/common/test-files/C30057.CEL.gz b/common/tests/data/microarray/C30057.CEL.gz similarity index 100% rename from common/test-files/C30057.CEL.gz rename to common/tests/data/microarray/C30057.CEL.gz diff --git a/common/test-files/CONTROL6.cel.gz b/common/tests/data/microarray/CONTROL6.cel.gz similarity index 100% rename from common/test-files/CONTROL6.cel.gz rename to common/tests/data/microarray/CONTROL6.cel.gz diff --git a/common/test-files/SG2_u34a.CEL.gz b/common/tests/data/microarray/SG2_u34a.CEL.gz similarity index 100% rename from common/test-files/SG2_u34a.CEL.gz rename to common/tests/data/microarray/SG2_u34a.CEL.gz diff --git a/common/tests/models/__init__.py b/common/tests/models/__init__.py new file mode 100644 index 000000000..e69de29bb diff --git a/common/data_refinery_common/models/test_jobs.py b/common/tests/models/test_jobs.py similarity index 100% rename from common/data_refinery_common/models/test_jobs.py rename to common/tests/models/test_jobs.py diff --git a/common/data_refinery_common/models/test_models.py b/common/tests/models/test_models.py similarity index 100% rename from common/data_refinery_common/models/test_models.py rename to common/tests/models/test_models.py diff --git a/common/data_refinery_common/models/test_ontology_term.py b/common/tests/models/test_ontology_term.py similarity index 95% rename from common/data_refinery_common/models/test_ontology_term.py rename to common/tests/models/test_ontology_term.py index 65340349d..4b2200059 100644 --- a/common/data_refinery_common/models/test_ontology_term.py +++ b/common/tests/models/test_ontology_term.py @@ -108,12 +108,14 @@ def test_import_cellosaurus(self, mock_api_call): created_terms = OntologyTerm.import_entire_ontology("cvcl") self.assertEqual( - OntologyTerm.objects.all().count(), 34, # This is the number I counted in the file + OntologyTerm.objects.all().count(), + 34, # This is the number I counted in the file ) self.assertEqual(OntologyTerm.objects.all().count(), created_terms) self.assertEqual( - "#W7079", OntologyTerm.get_or_create_from_api("CVCL:E549").human_readable_name, + "#W7079", + OntologyTerm.get_or_create_from_api("CVCL:E549").human_readable_name, ) mock_api_call.assert_not_called() diff --git a/common/data_refinery_common/models/test_organisms.py b/common/tests/models/test_organisms.py similarity index 99% rename from common/data_refinery_common/models/test_organisms.py rename to common/tests/models/test_organisms.py index b84dbaa65..4fc14540b 100644 --- a/common/data_refinery_common/models/test_organisms.py +++ b/common/tests/models/test_organisms.py @@ -231,8 +231,7 @@ def test_invalid_ids_cause_exceptions(self, mock_get): @patch("data_refinery_common.models.organism.requests.get") def test_unfound_names_raise(self, mock_get): - """If we can't find the taxonomy id, it's likely a bad organism name. - """ + """If we can't find the taxonomy id, it's likely a bad organism name.""" mock_get.return_value = Mock(ok=True) mock_get.return_value.text = ESEARCH_NOT_FOUND_XML diff --git a/common/tests/settings.py b/common/tests/settings.py new file mode 100644 index 000000000..b821f1f9a --- /dev/null +++ b/common/tests/settings.py @@ -0,0 +1,5 @@ +""" +Django settings for data_refinery_common project tests. +""" + +from data_refinery_common.settings import * diff --git a/common/tests/test_imports.py b/common/tests/test_imports.py new file mode 100644 index 000000000..b3af0ac3e --- /dev/null +++ b/common/tests/test_imports.py @@ -0,0 +1,13 @@ +from django.test import TestCase + + +class ImportTestCase(TestCase): + def test_imports(self): + # Make sure we can import the common tests + import tests.models.test_jobs + import tests.models.test_models + import tests.models.test_ontology_term + import tests.models.test_organisms + import tests.test_job_management + import tests.test_microarray + import tests.test_utils diff --git a/common/data_refinery_common/test_job_management.py b/common/tests/test_job_management.py similarity index 100% rename from common/data_refinery_common/test_job_management.py rename to common/tests/test_job_management.py diff --git a/common/tests/test_microarray.py b/common/tests/test_microarray.py new file mode 100644 index 000000000..4bc66d039 --- /dev/null +++ b/common/tests/test_microarray.py @@ -0,0 +1,20 @@ +from django.test import TestCase + +from data_refinery_common import microarray + + +class MicroarrayTestCase(TestCase): + def test_get_platform_from_CEL(self): + self.assertEqual( + "hgu95av2", microarray.get_platform_from_CEL("test/data/microarray/C30057.CEL.gz") + ) + self.assertEqual( + "rgu34a", microarray.get_platform_from_CEL("test/data/microarray/SG2_u34a.CEL.gz") + ) + self.assertEqual( + "mouse4302", + microarray.get_platform_from_CEL("test/data/microarray/97_(Mouse430_2).CEL.gz"), + ) + self.assertEqual( + "zebgene11st", microarray.get_platform_from_CEL("test/data/microarray/CONTROL6.cel.gz") + ) diff --git a/common/data_refinery_common/test_utils.py b/common/tests/test_utils.py similarity index 98% rename from common/data_refinery_common/test_utils.py rename to common/tests/test_utils.py index 71c8772ee..bcf9ee01a 100644 --- a/common/data_refinery_common/test_utils.py +++ b/common/tests/test_utils.py @@ -89,7 +89,7 @@ def test_readable_affymetrix_names(self): self.assertTrue(readable_platform_names["xenopuslaevis"] == expected_readable_name) def test_get_normalized_platform(self): - """ Test a particular normaization we need to perform """ + """Test a particular normaization we need to perform""" self.assertEqual(utils.get_normalized_platform("hugene10stv1"), "hugene10st") self.assertEqual(utils.get_normalized_platform("hugene10stv2"), "hugene10st") From 2f6ff4a36d263433241b75629bef7ad041227652 Mon Sep 17 00:00:00 2001 From: Arkadii Yakovets Date: Thu, 17 Nov 2022 14:46:30 -0800 Subject: [PATCH 048/220] Workers Docker images refactoring. --- common/{ => R}/install_devtools.R | 12 +- .../dependencies}/README.md | 0 .../affymetrix/bioc/dependencies.R | 221 ++++++++++++++++++ .../affymetrix/cran}/dependencies.R | 0 .../affymetrix/cran}/packages.txt | 0 .../affymetrix/cran}/versions.tsv | 0 .../affymetrix/install_affy_only.R | 38 +++ .../affymetrix}/install_ensg_pkgs.R | 8 +- .../illumina/bioc/dependencies.R} | 0 .../illumina/cran}/dependencies.R | 0 .../dependencies/illumina/cran}/packages.txt | 0 .../dependencies/illumina/cran}/versions.tsv | 0 workers/{ => R/dependencies}/install_bioc.R | 10 +- .../dependencies}/install_downloader_R_only.R | 14 +- .../dependencies/no_op/cran}/dependencies.R | 0 .../dependencies/no_op/cran}/packages.txt | 0 .../dependencies/no_op/cran}/versions.tsv | 0 .../dependencies/no_op/install_gene_convert.R | 43 ++++ .../dependencies/qn/bioc/dependencies.R} | 12 +- .../dependencies/qn/cran}/dependencies.R | 0 .../dependencies/qn/cran}/packages.txt | 0 .../dependencies/qn/cran}/versions.tsv | 0 .../dependencies/tximport/cran/dependencies.R | 25 ++ .../dependencies/tximport/cran}/packages.txt | 0 .../dependencies/tximport/cran}/versions.tsv | 0 .../dependencies/tximport/install_tximport.R | 7 + .../R_dependencies/tximport/dependencies.R | 25 -- workers/affymetrix_dependencies.R | 220 ----------------- workers/ccache.conf | 5 + workers/dockerfiles/Dockerfile.affymetrix | 90 ++----- .../dockerfiles/Dockerfile.affymetrix_local | 12 +- workers/dockerfiles/Dockerfile.compendia | 154 ++++++------ workers/dockerfiles/Dockerfile.downloaders | 87 ++----- workers/dockerfiles/Dockerfile.illumina | 80 +------ workers/dockerfiles/Dockerfile.no_op | 90 ++----- workers/dockerfiles/Dockerfile.salmon | 114 +++------ workers/dockerfiles/Dockerfile.smasher | 90 ++----- workers/dockerfiles/Dockerfile.transcriptome | 90 ++----- workers/dockerfiles/Dockerfile.worker_base | 68 ++++++ workers/install_affy_only.R | 38 --- workers/install_gene_convert.R | 43 ---- workers/install_tximport.R | 7 - 42 files changed, 650 insertions(+), 953 deletions(-) rename common/{ => R}/install_devtools.R (95%) rename workers/{R_dependencies => R/dependencies}/README.md (100%) create mode 100644 workers/R/dependencies/affymetrix/bioc/dependencies.R rename workers/{R_dependencies/affymetrix => R/dependencies/affymetrix/cran}/dependencies.R (100%) rename workers/{R_dependencies/affymetrix => R/dependencies/affymetrix/cran}/packages.txt (100%) rename workers/{R_dependencies/affymetrix => R/dependencies/affymetrix/cran}/versions.tsv (100%) create mode 100644 workers/R/dependencies/affymetrix/install_affy_only.R rename workers/{ => R/dependencies/affymetrix}/install_ensg_pkgs.R (89%) rename workers/{illumina_dependencies.R => R/dependencies/illumina/bioc/dependencies.R} (100%) rename workers/{R_dependencies/illumina => R/dependencies/illumina/cran}/dependencies.R (100%) rename workers/{R_dependencies/illumina => R/dependencies/illumina/cran}/packages.txt (100%) rename workers/{R_dependencies/illumina => R/dependencies/illumina/cran}/versions.tsv (100%) rename workers/{ => R/dependencies}/install_bioc.R (58%) rename workers/{ => R/dependencies}/install_downloader_R_only.R (54%) rename workers/{R_dependencies/no_op => R/dependencies/no_op/cran}/dependencies.R (100%) rename workers/{R_dependencies/no_op => R/dependencies/no_op/cran}/packages.txt (100%) rename workers/{R_dependencies/no_op => R/dependencies/no_op/cran}/versions.tsv (100%) create mode 100644 workers/R/dependencies/no_op/install_gene_convert.R rename workers/{qn_dependencies.R => R/dependencies/qn/bioc/dependencies.R} (61%) rename workers/{R_dependencies/qn => R/dependencies/qn/cran}/dependencies.R (100%) rename workers/{R_dependencies/qn => R/dependencies/qn/cran}/packages.txt (100%) rename workers/{R_dependencies/qn => R/dependencies/qn/cran}/versions.tsv (100%) create mode 100644 workers/R/dependencies/tximport/cran/dependencies.R rename workers/{R_dependencies/tximport => R/dependencies/tximport/cran}/packages.txt (100%) rename workers/{R_dependencies/tximport => R/dependencies/tximport/cran}/versions.tsv (100%) create mode 100644 workers/R/dependencies/tximport/install_tximport.R delete mode 100644 workers/R_dependencies/tximport/dependencies.R delete mode 100644 workers/affymetrix_dependencies.R create mode 100644 workers/ccache.conf create mode 100644 workers/dockerfiles/Dockerfile.worker_base delete mode 100644 workers/install_affy_only.R delete mode 100644 workers/install_gene_convert.R delete mode 100644 workers/install_tximport.R diff --git a/common/install_devtools.R b/common/R/install_devtools.R similarity index 95% rename from common/install_devtools.R rename to common/R/install_devtools.R index 678418f19..e241152ea 100644 --- a/common/install_devtools.R +++ b/common/R/install_devtools.R @@ -16,9 +16,9 @@ # Cranlock was used to find the versions of dependencies to install # Treat warnings as errors, set CRAN mirror, and set parallelization: -options(warn=2) -options(repos=structure(c(CRAN="https://cloud.r-project.org/"))) -options(Ncpus=parallel::detectCores()) +options(warn = 2) +options(repos = structure(c(CRAN = "https://cloud.r-project.org/"))) +options(Ncpus = parallel::detectCores()) install_package_version <- function(package_name, version) { @@ -31,18 +31,18 @@ install_package_version <- function(package_name, version) { package_url <- paste0("https://cloud.r-project.org/src/contrib/", package_tarball) # Give CRAN a full minute to timeout since it's not always the most reliable. - curl_result <- system(paste0("curl --head --connect-timeout 60 ", package_url), intern=TRUE) + curl_result <- system(paste0("curl --head --connect-timeout 60 ", package_url), intern = TRUE) if (grepl("404", curl_result[1])) { package_url <- paste0("https://cloud.r-project.org/src/contrib/Archive/", package_name, "/", package_tarball) # Make sure the package actually exists in the archive! - curl_result <- system(paste0("curl --head --connect-timeout 120 ", package_url), intern=TRUE) + curl_result <- system(paste0("curl --head --connect-timeout 120 ", package_url), intern = TRUE) if (grepl("404", curl_result[1])) { stop(paste("Package", package_name, "version", version, "does not exist!")) } } - install.packages(package_url) + install.packages(package_url, Ncpus = 32) } # Generated using cranlock diff --git a/workers/R_dependencies/README.md b/workers/R/dependencies/README.md similarity index 100% rename from workers/R_dependencies/README.md rename to workers/R/dependencies/README.md diff --git a/workers/R/dependencies/affymetrix/bioc/dependencies.R b/workers/R/dependencies/affymetrix/bioc/dependencies.R new file mode 100644 index 000000000..1570292e0 --- /dev/null +++ b/workers/R/dependencies/affymetrix/bioc/dependencies.R @@ -0,0 +1,221 @@ +# Turn warnings into errors because biocLite throws warnings instead # of error if it fails to install something. +options(warn = 2) +options(repos = structure(c(CRAN = "https://cloud.r-project.org"))) +options(Ncpus = parallel::detectCores()) + +# Bioconductor packages, installed by devtools::install_url() + +# Helper function that installs a list of packages using the input URLs +install_with_url <- function(urls) { + pkg_ids <- devtools::install_url(urls) + if (any(is.na(pkg_ids))) { + pkg_fails <- paste(urls[is.na(pkg_ids)], collapse = "; ") + stop(paste("Failed to install package(s):", pkg_fails)) + } + return(pkg_ids) +} + +devtools::install_version("dplyr", version = "1.0.2") +devtools::install_version("locfit", version = "1.5-9.4") + +bioc_pkg_urls <- c( + "https://bioconductor.org/packages/3.11/bioc/src/contrib/oligoClasses_1.50.4.tar.gz", + "https://bioconductor.org/packages/3.11/bioc/src/contrib/oligo_1.52.1.tar.gz", + "https://bioconductor.org/packages/3.11/bioc/src/contrib/GEOquery_2.56.0.tar.gz", + "https://bioconductor.org/packages/3.11/bioc/src/contrib/SCAN.UPC_2.30.0.tar.gz", + "https://bioconductor.org/packages/3.11/bioc/src/contrib/affy_1.66.0.tar.gz", + "https://bioconductor.org/packages/3.11/bioc/src/contrib/affyio_1.58.0.tar.gz", + "https://bioconductor.org/packages/3.11/bioc/src/contrib/AnnotationDbi_1.50.3.tar.gz", + "https://bioconductor.org/packages/3.11/bioc/src/contrib/zlibbioc_1.34.0.tar.gz", + "https://bioconductor.org/packages/3.11/bioc/src/contrib/preprocessCore_1.50.0.tar.gz", + "https://bioconductor.org/packages/3.11/bioc/src/contrib/genefilter_1.70.0.tar.gz", + "https://bioconductor.org/packages/3.11/bioc/src/contrib/sva_3.36.0.tar.gz", + "https://bioconductor.org/packages/3.11/bioc/src/contrib/limma_3.44.3.tar.gz" +) +install_with_url(bioc_pkg_urls) + +# Invoke another R script to install BrainArray ensg packages +source("install_ensg_pkgs.R") + +# Install Bioconductor platform design (pd) packages +pd_experiment_pkgs <- c( + "https://bioconductor.org/packages/3.11/data/experiment/src/contrib/pd.atdschip.tiling_0.26.0.tar.gz" +) +install_with_url(pd_experiment_pkgs) + +pd_annotation_pkgs <- c( + "https://bioconductor.org/packages/3.11/data/annotation/src/contrib/pd.081229.hg18.promoter.medip.hx1_0.99.4.tar.gz", + "https://bioconductor.org/packages/3.11/data/annotation/src/contrib/pd.2006.07.18.hg18.refseq.promoter_1.8.1.tar.gz", + "https://bioconductor.org/packages/3.11/data/annotation/src/contrib/pd.2006.07.18.mm8.refseq.promoter_0.99.3.tar.gz", + "https://bioconductor.org/packages/3.11/data/annotation/src/contrib/pd.2006.10.31.rn34.refseq.promoter_0.99.3.tar.gz", + "https://bioconductor.org/packages/3.11/data/annotation/src/contrib/pd.ag_3.12.0.tar.gz", + "https://bioconductor.org/packages/3.11/data/annotation/src/contrib/pd.aragene.1.0.st_3.12.0.tar.gz", + "https://bioconductor.org/packages/3.11/data/annotation/src/contrib/pd.aragene.1.1.st_3.12.0.tar.gz", + "https://bioconductor.org/packages/3.11/data/annotation/src/contrib/pd.ath1.121501_3.12.0.tar.gz", + "https://bioconductor.org/packages/3.11/data/annotation/src/contrib/pd.barley1_3.12.0.tar.gz", + "https://bioconductor.org/packages/3.11/data/annotation/src/contrib/pd.bovgene.1.0.st_3.12.0.tar.gz", + "https://bioconductor.org/packages/3.11/data/annotation/src/contrib/pd.bovgene.1.1.st_3.12.0.tar.gz", + "https://bioconductor.org/packages/3.11/data/annotation/src/contrib/pd.bovine_3.12.0.tar.gz", + "https://bioconductor.org/packages/3.11/data/annotation/src/contrib/pd.bsubtilis_3.12.0.tar.gz", + "https://bioconductor.org/packages/3.11/data/annotation/src/contrib/pd.cangene.1.0.st_3.12.0.tar.gz", + "https://bioconductor.org/packages/3.11/data/annotation/src/contrib/pd.cangene.1.1.st_3.12.0.tar.gz", + "https://bioconductor.org/packages/3.11/data/annotation/src/contrib/pd.canine_3.12.0.tar.gz", + "https://bioconductor.org/packages/3.11/data/annotation/src/contrib/pd.canine.2_3.12.0.tar.gz", + "https://bioconductor.org/packages/3.11/data/annotation/src/contrib/pd.celegans_3.12.0.tar.gz", + "https://bioconductor.org/packages/3.11/data/annotation/src/contrib/pd.charm.hg18.example_0.99.4.tar.gz", + "https://bioconductor.org/packages/3.11/data/annotation/src/contrib/pd.chicken_3.12.0.tar.gz", + "https://bioconductor.org/packages/3.11/data/annotation/src/contrib/pd.chigene.1.0.st_3.12.0.tar.gz", + "https://bioconductor.org/packages/3.11/data/annotation/src/contrib/pd.chigene.1.1.st_3.12.0.tar.gz", + "https://bioconductor.org/packages/3.11/data/annotation/src/contrib/pd.chogene.2.0.st_3.12.0.tar.gz", + "https://bioconductor.org/packages/3.11/data/annotation/src/contrib/pd.chogene.2.1.st_3.12.0.tar.gz", + "https://bioconductor.org/packages/3.11/data/annotation/src/contrib/pd.citrus_3.12.0.tar.gz", + "https://bioconductor.org/packages/3.11/data/annotation/src/contrib/pd.clariom.d.human_3.14.1.tar.gz", + "https://bioconductor.org/packages/3.11/data/annotation/src/contrib/pd.clariom.s.human_3.14.1.tar.gz", + "https://bioconductor.org/packages/3.11/data/annotation/src/contrib/pd.clariom.s.human.ht_3.14.1.tar.gz", + "https://bioconductor.org/packages/3.11/data/annotation/src/contrib/pd.clariom.s.mouse_3.14.1.tar.gz", + "https://bioconductor.org/packages/3.11/data/annotation/src/contrib/pd.clariom.s.mouse.ht_3.14.1.tar.gz", + "https://bioconductor.org/packages/3.11/data/annotation/src/contrib/pd.clariom.s.rat_3.14.1.tar.gz", + "https://bioconductor.org/packages/3.11/data/annotation/src/contrib/pd.clariom.s.rat.ht_3.14.1.tar.gz", + "https://bioconductor.org/packages/3.11/data/annotation/src/contrib/pd.cotton_3.12.0.tar.gz", + "https://bioconductor.org/packages/3.11/data/annotation/src/contrib/pd.cyngene.1.0.st_3.12.0.tar.gz", + "https://bioconductor.org/packages/3.11/data/annotation/src/contrib/pd.cyngene.1.1.st_3.12.0.tar.gz", + "https://bioconductor.org/packages/3.11/data/annotation/src/contrib/pd.cyrgene.1.0.st_3.12.0.tar.gz", + "https://bioconductor.org/packages/3.11/data/annotation/src/contrib/pd.cyrgene.1.1.st_3.12.0.tar.gz", + "https://bioconductor.org/packages/3.11/data/annotation/src/contrib/pd.cytogenetics.array_3.12.0.tar.gz", + "https://bioconductor.org/packages/3.11/data/annotation/src/contrib/pd.drogene.1.0.st_3.12.0.tar.gz", + "https://bioconductor.org/packages/3.11/data/annotation/src/contrib/pd.drogene.1.1.st_3.12.0.tar.gz", + "https://bioconductor.org/packages/3.11/data/annotation/src/contrib/pd.drosgenome1_3.12.0.tar.gz", + "https://bioconductor.org/packages/3.11/data/annotation/src/contrib/pd.drosophila.2_3.12.0.tar.gz", + "https://bioconductor.org/packages/3.11/data/annotation/src/contrib/pd.e.coli.2_3.12.0.tar.gz", + "https://bioconductor.org/packages/3.11/data/annotation/src/contrib/pd.ecoli_3.12.0.tar.gz", + "https://bioconductor.org/packages/3.11/data/annotation/src/contrib/pd.ecoli.asv2_3.12.0.tar.gz", + "https://bioconductor.org/packages/3.11/data/annotation/src/contrib/pd.elegene.1.0.st_3.12.0.tar.gz", + "https://bioconductor.org/packages/3.11/data/annotation/src/contrib/pd.elegene.1.1.st_3.12.0.tar.gz", + "https://bioconductor.org/packages/3.11/data/annotation/src/contrib/pd.equgene.1.0.st_3.12.0.tar.gz", + "https://bioconductor.org/packages/3.11/data/annotation/src/contrib/pd.equgene.1.1.st_3.12.0.tar.gz", + "https://bioconductor.org/packages/3.11/data/annotation/src/contrib/pd.feinberg.hg18.me.hx1_0.99.3.tar.gz", + "https://bioconductor.org/packages/3.11/data/annotation/src/contrib/pd.feinberg.mm8.me.hx1_0.99.3.tar.gz", + "https://bioconductor.org/packages/3.11/data/annotation/src/contrib/pd.felgene.1.0.st_3.12.0.tar.gz", + "https://bioconductor.org/packages/3.11/data/annotation/src/contrib/pd.felgene.1.1.st_3.12.0.tar.gz", + "https://bioconductor.org/packages/3.11/data/annotation/src/contrib/pd.fingene.1.0.st_3.12.0.tar.gz", + "https://bioconductor.org/packages/3.11/data/annotation/src/contrib/pd.fingene.1.1.st_3.12.0.tar.gz", + "https://bioconductor.org/packages/3.11/data/annotation/src/contrib/pd.genomewidesnp.5_3.14.1.tar.gz", + "https://bioconductor.org/packages/3.11/data/annotation/src/contrib/pd.genomewidesnp.6_3.14.1.tar.gz", + "https://bioconductor.org/packages/3.11/data/annotation/src/contrib/pd.guigene.1.0.st_3.12.0.tar.gz", + "https://bioconductor.org/packages/3.11/data/annotation/src/contrib/pd.guigene.1.1.st_3.12.0.tar.gz", + "https://bioconductor.org/packages/3.11/data/annotation/src/contrib/pd.hc.g110_3.12.0.tar.gz", + "https://bioconductor.org/packages/3.11/data/annotation/src/contrib/pd.hg.focus_3.12.0.tar.gz", + "https://bioconductor.org/packages/3.11/data/annotation/src/contrib/pd.hg.u133.plus.2_3.12.0.tar.gz", + "https://bioconductor.org/packages/3.11/data/annotation/src/contrib/pd.hg.u133a_3.12.0.tar.gz", + "https://bioconductor.org/packages/3.11/data/annotation/src/contrib/pd.hg.u133a.2_3.12.0.tar.gz", + "https://bioconductor.org/packages/3.11/data/annotation/src/contrib/pd.hg.u133a.tag_3.12.0.tar.gz", + "https://bioconductor.org/packages/3.11/data/annotation/src/contrib/pd.hg.u133b_3.12.0.tar.gz", + "https://bioconductor.org/packages/3.11/data/annotation/src/contrib/pd.hg.u219_3.12.0.tar.gz", + "https://bioconductor.org/packages/3.11/data/annotation/src/contrib/pd.hg.u95a_3.12.0.tar.gz", + "https://bioconductor.org/packages/3.11/data/annotation/src/contrib/pd.hg.u95av2_3.12.0.tar.gz", + "https://bioconductor.org/packages/3.11/data/annotation/src/contrib/pd.hg.u95b_3.12.0.tar.gz", + "https://bioconductor.org/packages/3.11/data/annotation/src/contrib/pd.hg.u95c_3.12.0.tar.gz", + "https://bioconductor.org/packages/3.11/data/annotation/src/contrib/pd.hg.u95d_3.12.0.tar.gz", + "https://bioconductor.org/packages/3.11/data/annotation/src/contrib/pd.hg.u95e_3.12.0.tar.gz", + "https://bioconductor.org/packages/3.11/data/annotation/src/contrib/pd.hg18.60mer.expr_3.12.0.tar.gz", + "https://bioconductor.org/packages/3.11/data/annotation/src/contrib/pd.ht.hg.u133.plus.pm_3.12.0.tar.gz", + "https://bioconductor.org/packages/3.11/data/annotation/src/contrib/pd.ht.hg.u133a_3.12.0.tar.gz", + "https://bioconductor.org/packages/3.11/data/annotation/src/contrib/pd.ht.mg.430a_3.12.0.tar.gz", + "https://bioconductor.org/packages/3.11/data/annotation/src/contrib/pd.hta.2.0_3.12.2.tar.gz", + "https://bioconductor.org/packages/3.11/data/annotation/src/contrib/pd.hu6800_3.12.0.tar.gz", + "https://bioconductor.org/packages/3.11/data/annotation/src/contrib/pd.huex.1.0.st.v2_3.14.1.tar.gz", + "https://bioconductor.org/packages/3.11/data/annotation/src/contrib/pd.hugene.1.0.st.v1_3.14.1.tar.gz", + "https://bioconductor.org/packages/3.11/data/annotation/src/contrib/pd.hugene.1.1.st.v1_3.14.1.tar.gz", + "https://bioconductor.org/packages/3.11/data/annotation/src/contrib/pd.hugene.2.0.st_3.14.1.tar.gz", + "https://bioconductor.org/packages/3.11/data/annotation/src/contrib/pd.hugene.2.1.st_3.14.1.tar.gz", + "https://bioconductor.org/packages/3.11/data/annotation/src/contrib/pd.maize_3.12.0.tar.gz", + "https://bioconductor.org/packages/3.11/data/annotation/src/contrib/pd.mapping250k.nsp_3.12.0.tar.gz", + "https://bioconductor.org/packages/3.11/data/annotation/src/contrib/pd.mapping250k.sty_3.12.0.tar.gz", + "https://bioconductor.org/packages/3.11/data/annotation/src/contrib/pd.mapping50k.hind240_3.12.0.tar.gz", + "https://bioconductor.org/packages/3.11/data/annotation/src/contrib/pd.mapping50k.xba240_3.12.0.tar.gz", + "https://bioconductor.org/packages/3.11/data/annotation/src/contrib/pd.margene.1.0.st_3.12.0.tar.gz", + "https://bioconductor.org/packages/3.11/data/annotation/src/contrib/pd.margene.1.1.st_3.12.0.tar.gz", + "https://bioconductor.org/packages/3.11/data/annotation/src/contrib/pd.medgene.1.0.st_3.12.0.tar.gz", + "https://bioconductor.org/packages/3.11/data/annotation/src/contrib/pd.medgene.1.1.st_3.12.0.tar.gz", + "https://bioconductor.org/packages/3.11/data/annotation/src/contrib/pd.medicago_3.12.0.tar.gz", + "https://bioconductor.org/packages/3.11/data/annotation/src/contrib/pd.mg.u74a_3.12.0.tar.gz", + "https://bioconductor.org/packages/3.11/data/annotation/src/contrib/pd.mg.u74av2_3.12.0.tar.gz", + "https://bioconductor.org/packages/3.11/data/annotation/src/contrib/pd.mg.u74b_3.12.0.tar.gz", + "https://bioconductor.org/packages/3.11/data/annotation/src/contrib/pd.mg.u74bv2_3.12.0.tar.gz", + "https://bioconductor.org/packages/3.11/data/annotation/src/contrib/pd.mg.u74c_3.12.0.tar.gz", + "https://bioconductor.org/packages/3.11/data/annotation/src/contrib/pd.mg.u74cv2_3.12.0.tar.gz", + "https://bioconductor.org/packages/3.11/data/annotation/src/contrib/pd.mirna.1.0_3.12.0.tar.gz", + "https://bioconductor.org/packages/3.11/data/annotation/src/contrib/pd.mirna.2.0_3.12.0.tar.gz", + "https://bioconductor.org/packages/3.11/data/annotation/src/contrib/pd.mirna.3.0_3.12.0.tar.gz", + "https://bioconductor.org/packages/3.11/data/annotation/src/contrib/pd.mirna.3.1_3.8.1.tar.gz", + "https://bioconductor.org/packages/3.11/data/annotation/src/contrib/pd.mirna.4.0_3.12.0.tar.gz", + "https://bioconductor.org/packages/3.11/data/annotation/src/contrib/pd.moe430a_3.12.0.tar.gz", + "https://bioconductor.org/packages/3.11/data/annotation/src/contrib/pd.moe430b_3.12.0.tar.gz", + "https://bioconductor.org/packages/3.11/data/annotation/src/contrib/pd.moex.1.0.st.v1_3.14.1.tar.gz", + "https://bioconductor.org/packages/3.11/data/annotation/src/contrib/pd.mogene.1.0.st.v1_3.14.1.tar.gz", + "https://bioconductor.org/packages/3.11/data/annotation/src/contrib/pd.mogene.1.1.st.v1_3.14.1.tar.gz", + "https://bioconductor.org/packages/3.11/data/annotation/src/contrib/pd.mogene.2.0.st_3.14.1.tar.gz", + "https://bioconductor.org/packages/3.11/data/annotation/src/contrib/pd.mogene.2.1.st_3.14.1.tar.gz", + "https://bioconductor.org/packages/3.11/data/annotation/src/contrib/pd.mouse430.2_3.12.0.tar.gz", + "https://bioconductor.org/packages/3.11/data/annotation/src/contrib/pd.mouse430a.2_3.12.0.tar.gz", + "https://bioconductor.org/packages/3.11/data/annotation/src/contrib/pd.mta.1.0_3.12.0.tar.gz", + "https://bioconductor.org/packages/3.11/data/annotation/src/contrib/pd.mu11ksuba_3.12.0.tar.gz", + "https://bioconductor.org/packages/3.11/data/annotation/src/contrib/pd.mu11ksubb_3.12.0.tar.gz", + "https://bioconductor.org/packages/3.11/data/annotation/src/contrib/pd.nugo.hs1a520180_3.4.0.tar.gz", + "https://bioconductor.org/packages/3.11/data/annotation/src/contrib/pd.nugo.mm1a520177_3.4.0.tar.gz", + "https://bioconductor.org/packages/3.11/data/annotation/src/contrib/pd.ovigene.1.0.st_3.12.0.tar.gz", + "https://bioconductor.org/packages/3.11/data/annotation/src/contrib/pd.ovigene.1.1.st_3.12.0.tar.gz", + "https://bioconductor.org/packages/3.11/data/annotation/src/contrib/pd.pae.g1a_3.12.0.tar.gz", + "https://bioconductor.org/packages/3.11/data/annotation/src/contrib/pd.plasmodium.anopheles_3.12.0.tar.gz", + "https://bioconductor.org/packages/3.11/data/annotation/src/contrib/pd.poplar_3.12.0.tar.gz", + "https://bioconductor.org/packages/3.11/data/annotation/src/contrib/pd.porcine_3.12.0.tar.gz", + "https://bioconductor.org/packages/3.11/data/annotation/src/contrib/pd.porgene.1.0.st_3.12.0.tar.gz", + "https://bioconductor.org/packages/3.11/data/annotation/src/contrib/pd.porgene.1.1.st_3.12.0.tar.gz", + "https://bioconductor.org/packages/3.11/data/annotation/src/contrib/pd.rabgene.1.0.st_3.12.0.tar.gz", + "https://bioconductor.org/packages/3.11/data/annotation/src/contrib/pd.rabgene.1.1.st_3.12.0.tar.gz", + "https://bioconductor.org/packages/3.11/data/annotation/src/contrib/pd.rae230a_3.12.0.tar.gz", + "https://bioconductor.org/packages/3.11/data/annotation/src/contrib/pd.rae230b_3.12.0.tar.gz", + "https://bioconductor.org/packages/3.11/data/annotation/src/contrib/pd.raex.1.0.st.v1_3.14.1.tar.gz", + "https://bioconductor.org/packages/3.11/data/annotation/src/contrib/pd.ragene.1.0.st.v1_3.14.1.tar.gz", + "https://bioconductor.org/packages/3.11/data/annotation/src/contrib/pd.ragene.1.1.st.v1_3.14.1.tar.gz", + "https://bioconductor.org/packages/3.11/data/annotation/src/contrib/pd.ragene.2.0.st_3.14.1.tar.gz", + "https://bioconductor.org/packages/3.11/data/annotation/src/contrib/pd.ragene.2.1.st_3.14.1.tar.gz", + "https://bioconductor.org/packages/3.11/data/annotation/src/contrib/pd.rat230.2_3.12.0.tar.gz", + "https://bioconductor.org/packages/3.11/data/annotation/src/contrib/pd.rcngene.1.0.st_3.12.0.tar.gz", + "https://bioconductor.org/packages/3.11/data/annotation/src/contrib/pd.rcngene.1.1.st_3.12.0.tar.gz", + "https://bioconductor.org/packages/3.11/data/annotation/src/contrib/pd.rg.u34a_3.12.0.tar.gz", + "https://bioconductor.org/packages/3.11/data/annotation/src/contrib/pd.rg.u34b_3.12.0.tar.gz", + "https://bioconductor.org/packages/3.11/data/annotation/src/contrib/pd.rg.u34c_3.12.0.tar.gz", + "https://bioconductor.org/packages/3.11/data/annotation/src/contrib/pd.rhegene.1.0.st_3.12.0.tar.gz", + "https://bioconductor.org/packages/3.11/data/annotation/src/contrib/pd.rhegene.1.1.st_3.12.0.tar.gz", + "https://bioconductor.org/packages/3.11/data/annotation/src/contrib/pd.rhesus_3.12.0.tar.gz", + "https://bioconductor.org/packages/3.11/data/annotation/src/contrib/pd.rice_3.12.0.tar.gz", + "https://bioconductor.org/packages/3.11/data/annotation/src/contrib/pd.rjpgene.1.0.st_3.12.0.tar.gz", + "https://bioconductor.org/packages/3.11/data/annotation/src/contrib/pd.rjpgene.1.1.st_3.12.0.tar.gz", + "https://bioconductor.org/packages/3.11/data/annotation/src/contrib/pd.rn.u34_3.12.0.tar.gz", + "https://bioconductor.org/packages/3.11/data/annotation/src/contrib/pd.rta.1.0_3.12.2.tar.gz", + "https://bioconductor.org/packages/3.11/data/annotation/src/contrib/pd.rusgene.1.0.st_3.12.0.tar.gz", + "https://bioconductor.org/packages/3.11/data/annotation/src/contrib/pd.rusgene.1.1.st_3.12.0.tar.gz", + "https://bioconductor.org/packages/3.11/data/annotation/src/contrib/pd.s.aureus_3.12.0.tar.gz", + "https://bioconductor.org/packages/3.11/data/annotation/src/contrib/pd.soybean_3.12.0.tar.gz", + "https://bioconductor.org/packages/3.11/data/annotation/src/contrib/pd.soygene.1.0.st_3.12.0.tar.gz", + "https://bioconductor.org/packages/3.11/data/annotation/src/contrib/pd.soygene.1.1.st_3.12.0.tar.gz", + "https://bioconductor.org/packages/3.11/data/annotation/src/contrib/pd.sugar.cane_3.12.0.tar.gz", + "https://bioconductor.org/packages/3.11/data/annotation/src/contrib/pd.tomato_3.12.0.tar.gz", + "https://bioconductor.org/packages/3.11/data/annotation/src/contrib/pd.u133.x3p_3.12.0.tar.gz", + "https://bioconductor.org/packages/3.11/data/annotation/src/contrib/pd.vitis.vinifera_3.12.0.tar.gz", + "https://bioconductor.org/packages/3.11/data/annotation/src/contrib/pd.wheat_3.12.0.tar.gz", + "https://bioconductor.org/packages/3.11/data/annotation/src/contrib/pd.x.laevis.2_3.12.0.tar.gz", + "https://bioconductor.org/packages/3.11/data/annotation/src/contrib/pd.x.tropicalis_3.12.0.tar.gz", + "https://bioconductor.org/packages/3.11/data/annotation/src/contrib/pd.xenopus.laevis_3.12.0.tar.gz", + "https://bioconductor.org/packages/3.11/data/annotation/src/contrib/pd.yeast.2_3.12.0.tar.gz", + "https://bioconductor.org/packages/3.11/data/annotation/src/contrib/pd.yg.s98_3.12.0.tar.gz", + "https://bioconductor.org/packages/3.11/data/annotation/src/contrib/pd.zebgene.1.0.st_3.12.0.tar.gz", + "https://bioconductor.org/packages/3.11/data/annotation/src/contrib/pd.zebgene.1.1.st_3.12.0.tar.gz", + "https://bioconductor.org/packages/3.11/data/annotation/src/contrib/pd.zebrafish_3.12.0.tar.gz" +) +install_with_url(pd_annotation_pkgs) + +# Load this libraries because apparently just installing it isn't +# enough to verify that the correct versions of dependencies are installed. +library("foreach") diff --git a/workers/R_dependencies/affymetrix/dependencies.R b/workers/R/dependencies/affymetrix/cran/dependencies.R similarity index 100% rename from workers/R_dependencies/affymetrix/dependencies.R rename to workers/R/dependencies/affymetrix/cran/dependencies.R diff --git a/workers/R_dependencies/affymetrix/packages.txt b/workers/R/dependencies/affymetrix/cran/packages.txt similarity index 100% rename from workers/R_dependencies/affymetrix/packages.txt rename to workers/R/dependencies/affymetrix/cran/packages.txt diff --git a/workers/R_dependencies/affymetrix/versions.tsv b/workers/R/dependencies/affymetrix/cran/versions.tsv similarity index 100% rename from workers/R_dependencies/affymetrix/versions.tsv rename to workers/R/dependencies/affymetrix/cran/versions.tsv diff --git a/workers/R/dependencies/affymetrix/install_affy_only.R b/workers/R/dependencies/affymetrix/install_affy_only.R new file mode 100644 index 000000000..2bce94bc4 --- /dev/null +++ b/workers/R/dependencies/affymetrix/install_affy_only.R @@ -0,0 +1,38 @@ +# Turn warnings into errors because biocLite throws warnings instead +# of error if it fails to install something. +options(warn = 2) +options(repos = structure(c(CRAN = "https://cloud.r-project.org"))) +options(Ncpus = parallel::detectCores()) + +# Use devtools::install_version() to install packages in cran. +devtools::install_version("dplyr", version = "1.0.0") +devtools::install_version("tidyr", version = "1.1.0") +devtools::install_version("ff", version = "2.2-14") +devtools::install_version("locfit", version = "1.5-9.4") + +# Helper function that installs a list of packages using the input URLs +install_with_url <- function(urls) { + pkg_ids <- devtools::install_url(urls) + if (any(is.na(pkg_ids))) { + pkg_fails <- paste(urls[is.na(pkg_ids)], collapse = "; ") + stop(paste("Failed to install package(s):", pkg_fails)) + } + return(pkg_ids) +} + +bioc_pkgs <- c( + "https://bioconductor.org/packages/3.11/bioc/src/contrib/oligoClasses_1.50.4.tar.gz", + "https://bioconductor.org/packages/3.11/bioc/src/contrib/oligo_1.52.1.tar.gz", + "https://bioconductor.org/packages/3.11/bioc/src/contrib/GEOquery_2.56.0.tar.gz", + "https://bioconductor.org/packages/3.11/bioc/src/contrib/SCAN.UPC_2.30.0.tar.gz", + "https://bioconductor.org/packages/3.11/bioc/src/contrib/affy_1.66.0.tar.gz", + "https://bioconductor.org/packages/3.11/bioc/src/contrib/affyio_1.58.0.tar.gz", + "https://bioconductor.org/packages/3.11/bioc/src/contrib/AnnotationDbi_1.50.3.tar.gz", + "https://bioconductor.org/packages/3.11/bioc/src/contrib/zlibbioc_1.34.0.tar.gz", + "https://bioconductor.org/packages/3.11/bioc/src/contrib/preprocessCore_1.50.0.tar.gz", + "https://bioconductor.org/packages/3.11/bioc/src/contrib/genefilter_1.70.0.tar.gz", + "https://bioconductor.org/packages/3.11/bioc/src/contrib/sva_3.36.0.tar.gz", + "https://bioconductor.org/packages/3.11/bioc/src/contrib/tximport_1.16.1.tar.gz", + "https://bioconductor.org/packages/3.11/bioc/src/contrib/limma_3.44.3.tar.gz" +) +install_with_url(bioc_pkgs) diff --git a/workers/install_ensg_pkgs.R b/workers/R/dependencies/affymetrix/install_ensg_pkgs.R similarity index 89% rename from workers/install_ensg_pkgs.R rename to workers/R/dependencies/affymetrix/install_ensg_pkgs.R index 3f3b5bf08..5de25a262 100644 --- a/workers/install_ensg_pkgs.R +++ b/workers/R/dependencies/affymetrix/install_ensg_pkgs.R @@ -1,4 +1,4 @@ -options(Ncpus=parallel::detectCores()) +options(Ncpus = parallel::detectCores()) install.packages("xml2") library("xml2") ensg_url <- "http://brainarray.mbni.med.umich.edu/Brainarray/Database/CustomCDF/22.0.0/ensg.asp" @@ -39,8 +39,10 @@ lapply(data_rows, save_chip_pkg) # Write chips and pkg_urls to a tab-delimited file output_filename <- "/home/user/r_ensg_probe_pkgs.txt" -write.table(list(chips, pkg_urls), file=output_filename, quote=FALSE, - row.names=FALSE, col.names=FALSE, sep="\t") +write.table(list(chips, pkg_urls), + file = output_filename, quote = FALSE, + row.names = FALSE, col.names = FALSE, sep = "\t" +) # Install these ensg packages lapply(pkg_urls, devtools::install_url) diff --git a/workers/illumina_dependencies.R b/workers/R/dependencies/illumina/bioc/dependencies.R similarity index 100% rename from workers/illumina_dependencies.R rename to workers/R/dependencies/illumina/bioc/dependencies.R diff --git a/workers/R_dependencies/illumina/dependencies.R b/workers/R/dependencies/illumina/cran/dependencies.R similarity index 100% rename from workers/R_dependencies/illumina/dependencies.R rename to workers/R/dependencies/illumina/cran/dependencies.R diff --git a/workers/R_dependencies/illumina/packages.txt b/workers/R/dependencies/illumina/cran/packages.txt similarity index 100% rename from workers/R_dependencies/illumina/packages.txt rename to workers/R/dependencies/illumina/cran/packages.txt diff --git a/workers/R_dependencies/illumina/versions.tsv b/workers/R/dependencies/illumina/cran/versions.tsv similarity index 100% rename from workers/R_dependencies/illumina/versions.tsv rename to workers/R/dependencies/illumina/cran/versions.tsv diff --git a/workers/install_bioc.R b/workers/R/dependencies/install_bioc.R similarity index 58% rename from workers/install_bioc.R rename to workers/R/dependencies/install_bioc.R index c51d36988..3eb5aa29a 100644 --- a/workers/install_bioc.R +++ b/workers/R/dependencies/install_bioc.R @@ -1,12 +1,12 @@ # Turn warnings into errors because biocLite throws warnings instead # of error if it fails to install something. -options(warn=2) -options(repos=structure(c(CRAN="https://cloud.r-project.org"))) -options(Ncpus=parallel::detectCores()) +options(warn = 2) +options(repos = structure(c(CRAN = "https://cloud.r-project.org"))) +options(Ncpus = parallel::detectCores()) # Use devtools::install_version() to install packages in cran. -devtools::install_version('dplyr', version='1.0.0') -devtools::install_version('tidyr', version='1.1.0') +devtools::install_version("dplyr", version = "1.0.0") +devtools::install_version("tidyr", version = "1.1.0") # devtools::install_url() requires BiocInstaller # install.packages('https://bioconductor.org/packages/3.6/bioc/src/contrib/BiocInstaller_1.28.0.tar.gz') diff --git a/workers/install_downloader_R_only.R b/workers/R/dependencies/install_downloader_R_only.R similarity index 54% rename from workers/install_downloader_R_only.R rename to workers/R/dependencies/install_downloader_R_only.R index 02feb6275..85eb866b1 100644 --- a/workers/install_downloader_R_only.R +++ b/workers/R/dependencies/install_downloader_R_only.R @@ -1,8 +1,8 @@ # Turn warnings into errors because biocLite throws warnings instead # of error if it fails to install something. -options(warn=2) -options(repos=structure(c(CRAN="https://cloud.r-project.org"))) -options(Ncpus=parallel::detectCores()) +options(warn = 2) +options(repos = structure(c(CRAN = "https://cloud.r-project.org"))) +options(Ncpus = parallel::detectCores()) # Bioconductor packages, installed by devtools::install_url() @@ -10,15 +10,15 @@ options(Ncpus=parallel::detectCores()) # Helper function that installs a list of packages using the input URLs install_with_url <- function(urls) { pkg_ids <- devtools::install_url(urls) - if(any(is.na(pkg_ids))) { + if (any(is.na(pkg_ids))) { pkg_fails <- paste(urls[is.na(pkg_ids)], collapse = "; ") - stop(paste("Failed to install package(s):", pkg_fails )) + stop(paste("Failed to install package(s):", pkg_fails)) } return(pkg_ids) } bioc_pkgs <- c( - 'https://bioconductor.org/packages/3.11/bioc/src/contrib/affyio_1.58.0.tar.gz', - 'https://bioconductor.org/packages/3.11/bioc/src/contrib/zlibbioc_1.34.0.tar.gz' + "https://bioconductor.org/packages/3.11/bioc/src/contrib/affyio_1.58.0.tar.gz", + "https://bioconductor.org/packages/3.11/bioc/src/contrib/zlibbioc_1.34.0.tar.gz" ) install_with_url(bioc_pkgs) diff --git a/workers/R_dependencies/no_op/dependencies.R b/workers/R/dependencies/no_op/cran/dependencies.R similarity index 100% rename from workers/R_dependencies/no_op/dependencies.R rename to workers/R/dependencies/no_op/cran/dependencies.R diff --git a/workers/R_dependencies/no_op/packages.txt b/workers/R/dependencies/no_op/cran/packages.txt similarity index 100% rename from workers/R_dependencies/no_op/packages.txt rename to workers/R/dependencies/no_op/cran/packages.txt diff --git a/workers/R_dependencies/no_op/versions.tsv b/workers/R/dependencies/no_op/cran/versions.tsv similarity index 100% rename from workers/R_dependencies/no_op/versions.tsv rename to workers/R/dependencies/no_op/cran/versions.tsv diff --git a/workers/R/dependencies/no_op/install_gene_convert.R b/workers/R/dependencies/no_op/install_gene_convert.R new file mode 100644 index 000000000..2ad4afb84 --- /dev/null +++ b/workers/R/dependencies/no_op/install_gene_convert.R @@ -0,0 +1,43 @@ +# Turn warnings into errors because biocLite throws warnings instead +# of error if it fails to install something. +options(warn = 2) +options(Ncpus = parallel::detectCores()) +options(repos = structure(c(CRAN = "https://cloud.r-project.org"))) + +# Helper function that installs a list of packages using the input URLs +install_with_url <- function(urls) { + pkg_ids <- devtools::install_url(urls) + if (any(is.na(pkg_ids))) { + pkg_fails <- paste(urls[is.na(pkg_ids)], collapse = "; ") + stop(paste("Failed to install package(s):", pkg_fails)) + } + return(pkg_ids) +} + +devtools::install_version("dplyr", version = "1.0.2") + +bioc_pkgs <- c( + "https://bioconductor.org/packages/3.11/bioc/src/contrib/AnnotationDbi_1.50.3.tar.gz" +) +install_with_url(bioc_pkgs) + +illumina_pkgs <- c( + "https://bioconductor.org/packages/3.11/data/annotation/src/contrib/illuminaHumanv1.db_1.26.0.tar.gz", + "https://bioconductor.org/packages/3.11/data/annotation/src/contrib/illuminaHumanv2.db_1.26.0.tar.gz", + "https://bioconductor.org/packages/3.11/data/annotation/src/contrib/illuminaHumanv3.db_1.26.0.tar.gz", + "https://bioconductor.org/packages/3.11/data/annotation/src/contrib/illuminaHumanv4.db_1.26.0.tar.gz", + "https://bioconductor.org/packages/3.11/data/annotation/src/contrib/illuminaMousev1.db_1.26.0.tar.gz", + "https://bioconductor.org/packages/3.11/data/annotation/src/contrib/illuminaMousev1p1.db_1.26.0.tar.gz", + "https://bioconductor.org/packages/3.11/data/annotation/src/contrib/illuminaMousev2.db_1.26.0.tar.gz", + "https://bioconductor.org/packages/3.11/data/annotation/src/contrib/illuminaRatv1.db_1.26.0.tar.gz" +) +install_with_url(illumina_pkgs) + +# Load these libraries because apparently just installing them isn't +# enough to verify that they have complementary versions. +library("optparse") +library(data.table) +library("dplyr") +library("rlang") +library(lazyeval) +library(AnnotationDbi) diff --git a/workers/qn_dependencies.R b/workers/R/dependencies/qn/bioc/dependencies.R similarity index 61% rename from workers/qn_dependencies.R rename to workers/R/dependencies/qn/bioc/dependencies.R index 8238bb7a4..2abd45f49 100644 --- a/workers/qn_dependencies.R +++ b/workers/R/dependencies/qn/bioc/dependencies.R @@ -1,19 +1,19 @@ -options(warn=2) -options(repos=structure(c(CRAN="https://cloud.r-project.org"))) -options(Ncpus=parallel::detectCores()) +options(warn = 2) +options(repos = structure(c(CRAN = "https://cloud.r-project.org"))) +options(Ncpus = parallel::detectCores()) # Helper function that installs a list of packages using the input URLs install_with_url <- function(urls) { pkg_ids <- devtools::install_url(urls) - if(any(is.na(pkg_ids))) { + if (any(is.na(pkg_ids))) { pkg_fails <- paste(urls[is.na(pkg_ids)], collapse = "; ") - stop(paste("Failed to install package(s):", pkg_fails )) + stop(paste("Failed to install package(s):", pkg_fails)) } return(pkg_ids) } bioc_pkgs <- c( - 'https://bioconductor.org/packages/3.11/bioc/src/contrib/preprocessCore_1.50.0.tar.gz' + "https://bioconductor.org/packages/3.11/bioc/src/contrib/preprocessCore_1.50.0.tar.gz" ) install_with_url(bioc_pkgs) diff --git a/workers/R_dependencies/qn/dependencies.R b/workers/R/dependencies/qn/cran/dependencies.R similarity index 100% rename from workers/R_dependencies/qn/dependencies.R rename to workers/R/dependencies/qn/cran/dependencies.R diff --git a/workers/R_dependencies/qn/packages.txt b/workers/R/dependencies/qn/cran/packages.txt similarity index 100% rename from workers/R_dependencies/qn/packages.txt rename to workers/R/dependencies/qn/cran/packages.txt diff --git a/workers/R_dependencies/qn/versions.tsv b/workers/R/dependencies/qn/cran/versions.tsv similarity index 100% rename from workers/R_dependencies/qn/versions.tsv rename to workers/R/dependencies/qn/cran/versions.tsv diff --git a/workers/R/dependencies/tximport/cran/dependencies.R b/workers/R/dependencies/tximport/cran/dependencies.R new file mode 100644 index 000000000..02c5ed011 --- /dev/null +++ b/workers/R/dependencies/tximport/cran/dependencies.R @@ -0,0 +1,25 @@ +# Generated from cranlock +options(warn = 2) +options(Ncpus = parallel::detectCores()) +options(repos = structure(c(CRAN = "https://cloud.r-project.org"))) +devtools::install_version("getopt", version = "1.20.3") +devtools::install_version("optparse", version = "1.4.4") +devtools::install_version("rjson", version = "0.2.19") +devtools::install_version("R6", version = "2.4.0") +devtools::install_version("pkgconfig", version = "2.0.2") +devtools::install_version("rlang", version = "0.4.0") +devtools::install_version("zeallot", version = "0.1.0") +devtools::install_version("backports", version = "1.1.4") +devtools::install_version("glue", version = "1.3.1") +devtools::install_version("digest", version = "0.6.19") +devtools::install_version("vctrs", version = "0.1.0") +devtools::install_version("hms", version = "0.4.2") +devtools::install_version("Rcpp", version = "1.0.1") +devtools::install_version("assertthat", version = "0.2.1") +devtools::install_version("crayon", version = "1.3.4") +devtools::install_version("cli", version = "1.1.0") +devtools::install_version("utf8", version = "1.1.4") +devtools::install_version("fansi", version = "0.4.0") +devtools::install_version("pillar", version = "1.4.2") +devtools::install_version("tibble", version = "2.1.3") +devtools::install_version("readr", version = "1.1.1") diff --git a/workers/R_dependencies/tximport/packages.txt b/workers/R/dependencies/tximport/cran/packages.txt similarity index 100% rename from workers/R_dependencies/tximport/packages.txt rename to workers/R/dependencies/tximport/cran/packages.txt diff --git a/workers/R_dependencies/tximport/versions.tsv b/workers/R/dependencies/tximport/cran/versions.tsv similarity index 100% rename from workers/R_dependencies/tximport/versions.tsv rename to workers/R/dependencies/tximport/cran/versions.tsv diff --git a/workers/R/dependencies/tximport/install_tximport.R b/workers/R/dependencies/tximport/install_tximport.R new file mode 100644 index 000000000..f28c97538 --- /dev/null +++ b/workers/R/dependencies/tximport/install_tximport.R @@ -0,0 +1,7 @@ +# Turn warnings into errors because biocLite throws warnings instead +# of error if it fails to install something. +options(warn = 2) +options(Ncpus = parallel::detectCores()) +options(repos = structure(c(CRAN = "https://cloud.r-project.org"))) + +devtools::install_url("https://bioconductor.org/packages/3.11/bioc/src/contrib/tximport_1.16.1.tar.gz") diff --git a/workers/R_dependencies/tximport/dependencies.R b/workers/R_dependencies/tximport/dependencies.R deleted file mode 100644 index 62fce5df5..000000000 --- a/workers/R_dependencies/tximport/dependencies.R +++ /dev/null @@ -1,25 +0,0 @@ -# Generated from cranlock -options(warn=2) -options(Ncpus=parallel::detectCores()) -options(repos=structure(c(CRAN="https://cloud.r-project.org"))) -devtools::install_version('getopt', version='1.20.3') -devtools::install_version('optparse', version='1.4.4') -devtools::install_version('rjson', version='0.2.19') -devtools::install_version('R6', version='2.4.0') -devtools::install_version('pkgconfig', version='2.0.2') -devtools::install_version('rlang', version='0.4.0') -devtools::install_version('zeallot', version='0.1.0') -devtools::install_version('backports', version='1.1.4') -devtools::install_version('glue', version='1.3.1') -devtools::install_version('digest', version='0.6.19') -devtools::install_version('vctrs', version='0.1.0') -devtools::install_version('hms', version='0.4.2') -devtools::install_version('Rcpp', version='1.0.1') -devtools::install_version('assertthat', version='0.2.1') -devtools::install_version('crayon', version='1.3.4') -devtools::install_version('cli', version='1.1.0') -devtools::install_version('utf8', version='1.1.4') -devtools::install_version('fansi', version='0.4.0') -devtools::install_version('pillar', version='1.4.2') -devtools::install_version('tibble', version='2.1.3') -devtools::install_version('readr', version='1.1.1') diff --git a/workers/affymetrix_dependencies.R b/workers/affymetrix_dependencies.R deleted file mode 100644 index 5fd501002..000000000 --- a/workers/affymetrix_dependencies.R +++ /dev/null @@ -1,220 +0,0 @@ -# Turn warnings into errors because biocLite throws warnings instead # of error if it fails to install something. -options(warn=2) -options(repos=structure(c(CRAN="https://cloud.r-project.org"))) -options(Ncpus=parallel::detectCores()) - -# Bioconductor packages, installed by devtools::install_url() - -# Helper function that installs a list of packages using the input URLs -install_with_url <- function(urls) { - pkg_ids <- devtools::install_url(urls) - if(any(is.na(pkg_ids))) { - pkg_fails <- paste(urls[is.na(pkg_ids)], collapse = "; ") - stop(paste("Failed to install package(s):", pkg_fails )) - } - return(pkg_ids) -} - -devtools::install_version('dplyr', version='1.0.2') - -bioc_pkg_urls <- c( - 'https://bioconductor.org/packages/3.11/bioc/src/contrib/oligoClasses_1.50.4.tar.gz', - 'https://bioconductor.org/packages/3.11/bioc/src/contrib/oligo_1.52.1.tar.gz', - 'https://bioconductor.org/packages/3.11/bioc/src/contrib/GEOquery_2.56.0.tar.gz', - 'https://bioconductor.org/packages/3.11/bioc/src/contrib/SCAN.UPC_2.30.0.tar.gz', - 'https://bioconductor.org/packages/3.11/bioc/src/contrib/affy_1.66.0.tar.gz', - 'https://bioconductor.org/packages/3.11/bioc/src/contrib/affyio_1.58.0.tar.gz', - 'https://bioconductor.org/packages/3.11/bioc/src/contrib/AnnotationDbi_1.50.3.tar.gz', - 'https://bioconductor.org/packages/3.11/bioc/src/contrib/zlibbioc_1.34.0.tar.gz', - 'https://bioconductor.org/packages/3.11/bioc/src/contrib/preprocessCore_1.50.0.tar.gz', - 'https://bioconductor.org/packages/3.11/bioc/src/contrib/genefilter_1.70.0.tar.gz', - 'https://bioconductor.org/packages/3.11/bioc/src/contrib/sva_3.36.0.tar.gz', - 'https://bioconductor.org/packages/3.11/bioc/src/contrib/limma_3.44.3.tar.gz' -) -install_with_url(bioc_pkg_urls) - -# Invoke another R script to install BrainArray ensg packages -source("install_ensg_pkgs.R") - -# Install Bioconductor platform design (pd) packages -pd_experiment_pkgs <- c( - 'https://bioconductor.org/packages/3.11/data/experiment/src/contrib/pd.atdschip.tiling_0.26.0.tar.gz' -) -install_with_url(pd_experiment_pkgs) - -pd_annotation_pkgs <- c( - 'https://bioconductor.org/packages/3.11/data/annotation/src/contrib/pd.081229.hg18.promoter.medip.hx1_0.99.4.tar.gz', - 'https://bioconductor.org/packages/3.11/data/annotation/src/contrib/pd.2006.07.18.hg18.refseq.promoter_1.8.1.tar.gz', - 'https://bioconductor.org/packages/3.11/data/annotation/src/contrib/pd.2006.07.18.mm8.refseq.promoter_0.99.3.tar.gz', - 'https://bioconductor.org/packages/3.11/data/annotation/src/contrib/pd.2006.10.31.rn34.refseq.promoter_0.99.3.tar.gz', - 'https://bioconductor.org/packages/3.11/data/annotation/src/contrib/pd.ag_3.12.0.tar.gz', - 'https://bioconductor.org/packages/3.11/data/annotation/src/contrib/pd.aragene.1.0.st_3.12.0.tar.gz', - 'https://bioconductor.org/packages/3.11/data/annotation/src/contrib/pd.aragene.1.1.st_3.12.0.tar.gz', - 'https://bioconductor.org/packages/3.11/data/annotation/src/contrib/pd.ath1.121501_3.12.0.tar.gz', - 'https://bioconductor.org/packages/3.11/data/annotation/src/contrib/pd.barley1_3.12.0.tar.gz', - 'https://bioconductor.org/packages/3.11/data/annotation/src/contrib/pd.bovgene.1.0.st_3.12.0.tar.gz', - 'https://bioconductor.org/packages/3.11/data/annotation/src/contrib/pd.bovgene.1.1.st_3.12.0.tar.gz', - 'https://bioconductor.org/packages/3.11/data/annotation/src/contrib/pd.bovine_3.12.0.tar.gz', - 'https://bioconductor.org/packages/3.11/data/annotation/src/contrib/pd.bsubtilis_3.12.0.tar.gz', - 'https://bioconductor.org/packages/3.11/data/annotation/src/contrib/pd.cangene.1.0.st_3.12.0.tar.gz', - 'https://bioconductor.org/packages/3.11/data/annotation/src/contrib/pd.cangene.1.1.st_3.12.0.tar.gz', - 'https://bioconductor.org/packages/3.11/data/annotation/src/contrib/pd.canine_3.12.0.tar.gz', - 'https://bioconductor.org/packages/3.11/data/annotation/src/contrib/pd.canine.2_3.12.0.tar.gz', - 'https://bioconductor.org/packages/3.11/data/annotation/src/contrib/pd.celegans_3.12.0.tar.gz', - 'https://bioconductor.org/packages/3.11/data/annotation/src/contrib/pd.charm.hg18.example_0.99.4.tar.gz', - 'https://bioconductor.org/packages/3.11/data/annotation/src/contrib/pd.chicken_3.12.0.tar.gz', - 'https://bioconductor.org/packages/3.11/data/annotation/src/contrib/pd.chigene.1.0.st_3.12.0.tar.gz', - 'https://bioconductor.org/packages/3.11/data/annotation/src/contrib/pd.chigene.1.1.st_3.12.0.tar.gz', - 'https://bioconductor.org/packages/3.11/data/annotation/src/contrib/pd.chogene.2.0.st_3.12.0.tar.gz', - 'https://bioconductor.org/packages/3.11/data/annotation/src/contrib/pd.chogene.2.1.st_3.12.0.tar.gz', - 'https://bioconductor.org/packages/3.11/data/annotation/src/contrib/pd.citrus_3.12.0.tar.gz', - 'https://bioconductor.org/packages/3.11/data/annotation/src/contrib/pd.clariom.d.human_3.14.1.tar.gz', - 'https://bioconductor.org/packages/3.11/data/annotation/src/contrib/pd.clariom.s.human_3.14.1.tar.gz', - 'https://bioconductor.org/packages/3.11/data/annotation/src/contrib/pd.clariom.s.human.ht_3.14.1.tar.gz', - 'https://bioconductor.org/packages/3.11/data/annotation/src/contrib/pd.clariom.s.mouse_3.14.1.tar.gz', - 'https://bioconductor.org/packages/3.11/data/annotation/src/contrib/pd.clariom.s.mouse.ht_3.14.1.tar.gz', - 'https://bioconductor.org/packages/3.11/data/annotation/src/contrib/pd.clariom.s.rat_3.14.1.tar.gz', - 'https://bioconductor.org/packages/3.11/data/annotation/src/contrib/pd.clariom.s.rat.ht_3.14.1.tar.gz', - 'https://bioconductor.org/packages/3.11/data/annotation/src/contrib/pd.cotton_3.12.0.tar.gz', - 'https://bioconductor.org/packages/3.11/data/annotation/src/contrib/pd.cyngene.1.0.st_3.12.0.tar.gz', - 'https://bioconductor.org/packages/3.11/data/annotation/src/contrib/pd.cyngene.1.1.st_3.12.0.tar.gz', - 'https://bioconductor.org/packages/3.11/data/annotation/src/contrib/pd.cyrgene.1.0.st_3.12.0.tar.gz', - 'https://bioconductor.org/packages/3.11/data/annotation/src/contrib/pd.cyrgene.1.1.st_3.12.0.tar.gz', - 'https://bioconductor.org/packages/3.11/data/annotation/src/contrib/pd.cytogenetics.array_3.12.0.tar.gz', - 'https://bioconductor.org/packages/3.11/data/annotation/src/contrib/pd.drogene.1.0.st_3.12.0.tar.gz', - 'https://bioconductor.org/packages/3.11/data/annotation/src/contrib/pd.drogene.1.1.st_3.12.0.tar.gz', - 'https://bioconductor.org/packages/3.11/data/annotation/src/contrib/pd.drosgenome1_3.12.0.tar.gz', - 'https://bioconductor.org/packages/3.11/data/annotation/src/contrib/pd.drosophila.2_3.12.0.tar.gz', - 'https://bioconductor.org/packages/3.11/data/annotation/src/contrib/pd.e.coli.2_3.12.0.tar.gz', - 'https://bioconductor.org/packages/3.11/data/annotation/src/contrib/pd.ecoli_3.12.0.tar.gz', - 'https://bioconductor.org/packages/3.11/data/annotation/src/contrib/pd.ecoli.asv2_3.12.0.tar.gz', - 'https://bioconductor.org/packages/3.11/data/annotation/src/contrib/pd.elegene.1.0.st_3.12.0.tar.gz', - 'https://bioconductor.org/packages/3.11/data/annotation/src/contrib/pd.elegene.1.1.st_3.12.0.tar.gz', - 'https://bioconductor.org/packages/3.11/data/annotation/src/contrib/pd.equgene.1.0.st_3.12.0.tar.gz', - 'https://bioconductor.org/packages/3.11/data/annotation/src/contrib/pd.equgene.1.1.st_3.12.0.tar.gz', - 'https://bioconductor.org/packages/3.11/data/annotation/src/contrib/pd.feinberg.hg18.me.hx1_0.99.3.tar.gz', - 'https://bioconductor.org/packages/3.11/data/annotation/src/contrib/pd.feinberg.mm8.me.hx1_0.99.3.tar.gz', - 'https://bioconductor.org/packages/3.11/data/annotation/src/contrib/pd.felgene.1.0.st_3.12.0.tar.gz', - 'https://bioconductor.org/packages/3.11/data/annotation/src/contrib/pd.felgene.1.1.st_3.12.0.tar.gz', - 'https://bioconductor.org/packages/3.11/data/annotation/src/contrib/pd.fingene.1.0.st_3.12.0.tar.gz', - 'https://bioconductor.org/packages/3.11/data/annotation/src/contrib/pd.fingene.1.1.st_3.12.0.tar.gz', - 'https://bioconductor.org/packages/3.11/data/annotation/src/contrib/pd.genomewidesnp.5_3.14.1.tar.gz', - 'https://bioconductor.org/packages/3.11/data/annotation/src/contrib/pd.genomewidesnp.6_3.14.1.tar.gz', - 'https://bioconductor.org/packages/3.11/data/annotation/src/contrib/pd.guigene.1.0.st_3.12.0.tar.gz', - 'https://bioconductor.org/packages/3.11/data/annotation/src/contrib/pd.guigene.1.1.st_3.12.0.tar.gz', - 'https://bioconductor.org/packages/3.11/data/annotation/src/contrib/pd.hc.g110_3.12.0.tar.gz', - 'https://bioconductor.org/packages/3.11/data/annotation/src/contrib/pd.hg.focus_3.12.0.tar.gz', - 'https://bioconductor.org/packages/3.11/data/annotation/src/contrib/pd.hg.u133.plus.2_3.12.0.tar.gz', - 'https://bioconductor.org/packages/3.11/data/annotation/src/contrib/pd.hg.u133a_3.12.0.tar.gz', - 'https://bioconductor.org/packages/3.11/data/annotation/src/contrib/pd.hg.u133a.2_3.12.0.tar.gz', - 'https://bioconductor.org/packages/3.11/data/annotation/src/contrib/pd.hg.u133a.tag_3.12.0.tar.gz', - 'https://bioconductor.org/packages/3.11/data/annotation/src/contrib/pd.hg.u133b_3.12.0.tar.gz', - 'https://bioconductor.org/packages/3.11/data/annotation/src/contrib/pd.hg.u219_3.12.0.tar.gz', - 'https://bioconductor.org/packages/3.11/data/annotation/src/contrib/pd.hg.u95a_3.12.0.tar.gz', - 'https://bioconductor.org/packages/3.11/data/annotation/src/contrib/pd.hg.u95av2_3.12.0.tar.gz', - 'https://bioconductor.org/packages/3.11/data/annotation/src/contrib/pd.hg.u95b_3.12.0.tar.gz', - 'https://bioconductor.org/packages/3.11/data/annotation/src/contrib/pd.hg.u95c_3.12.0.tar.gz', - 'https://bioconductor.org/packages/3.11/data/annotation/src/contrib/pd.hg.u95d_3.12.0.tar.gz', - 'https://bioconductor.org/packages/3.11/data/annotation/src/contrib/pd.hg.u95e_3.12.0.tar.gz', - 'https://bioconductor.org/packages/3.11/data/annotation/src/contrib/pd.hg18.60mer.expr_3.12.0.tar.gz', - 'https://bioconductor.org/packages/3.11/data/annotation/src/contrib/pd.ht.hg.u133.plus.pm_3.12.0.tar.gz', - 'https://bioconductor.org/packages/3.11/data/annotation/src/contrib/pd.ht.hg.u133a_3.12.0.tar.gz', - 'https://bioconductor.org/packages/3.11/data/annotation/src/contrib/pd.ht.mg.430a_3.12.0.tar.gz', - 'https://bioconductor.org/packages/3.11/data/annotation/src/contrib/pd.hta.2.0_3.12.2.tar.gz', - 'https://bioconductor.org/packages/3.11/data/annotation/src/contrib/pd.hu6800_3.12.0.tar.gz', - 'https://bioconductor.org/packages/3.11/data/annotation/src/contrib/pd.huex.1.0.st.v2_3.14.1.tar.gz', - 'https://bioconductor.org/packages/3.11/data/annotation/src/contrib/pd.hugene.1.0.st.v1_3.14.1.tar.gz', - 'https://bioconductor.org/packages/3.11/data/annotation/src/contrib/pd.hugene.1.1.st.v1_3.14.1.tar.gz', - 'https://bioconductor.org/packages/3.11/data/annotation/src/contrib/pd.hugene.2.0.st_3.14.1.tar.gz', - 'https://bioconductor.org/packages/3.11/data/annotation/src/contrib/pd.hugene.2.1.st_3.14.1.tar.gz', - 'https://bioconductor.org/packages/3.11/data/annotation/src/contrib/pd.maize_3.12.0.tar.gz', - 'https://bioconductor.org/packages/3.11/data/annotation/src/contrib/pd.mapping250k.nsp_3.12.0.tar.gz', - 'https://bioconductor.org/packages/3.11/data/annotation/src/contrib/pd.mapping250k.sty_3.12.0.tar.gz', - 'https://bioconductor.org/packages/3.11/data/annotation/src/contrib/pd.mapping50k.hind240_3.12.0.tar.gz', - 'https://bioconductor.org/packages/3.11/data/annotation/src/contrib/pd.mapping50k.xba240_3.12.0.tar.gz', - 'https://bioconductor.org/packages/3.11/data/annotation/src/contrib/pd.margene.1.0.st_3.12.0.tar.gz', - 'https://bioconductor.org/packages/3.11/data/annotation/src/contrib/pd.margene.1.1.st_3.12.0.tar.gz', - 'https://bioconductor.org/packages/3.11/data/annotation/src/contrib/pd.medgene.1.0.st_3.12.0.tar.gz', - 'https://bioconductor.org/packages/3.11/data/annotation/src/contrib/pd.medgene.1.1.st_3.12.0.tar.gz', - 'https://bioconductor.org/packages/3.11/data/annotation/src/contrib/pd.medicago_3.12.0.tar.gz', - 'https://bioconductor.org/packages/3.11/data/annotation/src/contrib/pd.mg.u74a_3.12.0.tar.gz', - 'https://bioconductor.org/packages/3.11/data/annotation/src/contrib/pd.mg.u74av2_3.12.0.tar.gz', - 'https://bioconductor.org/packages/3.11/data/annotation/src/contrib/pd.mg.u74b_3.12.0.tar.gz', - 'https://bioconductor.org/packages/3.11/data/annotation/src/contrib/pd.mg.u74bv2_3.12.0.tar.gz', - 'https://bioconductor.org/packages/3.11/data/annotation/src/contrib/pd.mg.u74c_3.12.0.tar.gz', - 'https://bioconductor.org/packages/3.11/data/annotation/src/contrib/pd.mg.u74cv2_3.12.0.tar.gz', - 'https://bioconductor.org/packages/3.11/data/annotation/src/contrib/pd.mirna.1.0_3.12.0.tar.gz', - 'https://bioconductor.org/packages/3.11/data/annotation/src/contrib/pd.mirna.2.0_3.12.0.tar.gz', - 'https://bioconductor.org/packages/3.11/data/annotation/src/contrib/pd.mirna.3.0_3.12.0.tar.gz', - 'https://bioconductor.org/packages/3.11/data/annotation/src/contrib/pd.mirna.3.1_3.8.1.tar.gz', - 'https://bioconductor.org/packages/3.11/data/annotation/src/contrib/pd.mirna.4.0_3.12.0.tar.gz', - 'https://bioconductor.org/packages/3.11/data/annotation/src/contrib/pd.moe430a_3.12.0.tar.gz', - 'https://bioconductor.org/packages/3.11/data/annotation/src/contrib/pd.moe430b_3.12.0.tar.gz', - 'https://bioconductor.org/packages/3.11/data/annotation/src/contrib/pd.moex.1.0.st.v1_3.14.1.tar.gz', - 'https://bioconductor.org/packages/3.11/data/annotation/src/contrib/pd.mogene.1.0.st.v1_3.14.1.tar.gz', - 'https://bioconductor.org/packages/3.11/data/annotation/src/contrib/pd.mogene.1.1.st.v1_3.14.1.tar.gz', - 'https://bioconductor.org/packages/3.11/data/annotation/src/contrib/pd.mogene.2.0.st_3.14.1.tar.gz', - 'https://bioconductor.org/packages/3.11/data/annotation/src/contrib/pd.mogene.2.1.st_3.14.1.tar.gz', - 'https://bioconductor.org/packages/3.11/data/annotation/src/contrib/pd.mouse430.2_3.12.0.tar.gz', - 'https://bioconductor.org/packages/3.11/data/annotation/src/contrib/pd.mouse430a.2_3.12.0.tar.gz', - 'https://bioconductor.org/packages/3.11/data/annotation/src/contrib/pd.mta.1.0_3.12.0.tar.gz', - 'https://bioconductor.org/packages/3.11/data/annotation/src/contrib/pd.mu11ksuba_3.12.0.tar.gz', - 'https://bioconductor.org/packages/3.11/data/annotation/src/contrib/pd.mu11ksubb_3.12.0.tar.gz', - 'https://bioconductor.org/packages/3.11/data/annotation/src/contrib/pd.nugo.hs1a520180_3.4.0.tar.gz', - 'https://bioconductor.org/packages/3.11/data/annotation/src/contrib/pd.nugo.mm1a520177_3.4.0.tar.gz', - 'https://bioconductor.org/packages/3.11/data/annotation/src/contrib/pd.ovigene.1.0.st_3.12.0.tar.gz', - 'https://bioconductor.org/packages/3.11/data/annotation/src/contrib/pd.ovigene.1.1.st_3.12.0.tar.gz', - 'https://bioconductor.org/packages/3.11/data/annotation/src/contrib/pd.pae.g1a_3.12.0.tar.gz', - 'https://bioconductor.org/packages/3.11/data/annotation/src/contrib/pd.plasmodium.anopheles_3.12.0.tar.gz', - 'https://bioconductor.org/packages/3.11/data/annotation/src/contrib/pd.poplar_3.12.0.tar.gz', - 'https://bioconductor.org/packages/3.11/data/annotation/src/contrib/pd.porcine_3.12.0.tar.gz', - 'https://bioconductor.org/packages/3.11/data/annotation/src/contrib/pd.porgene.1.0.st_3.12.0.tar.gz', - 'https://bioconductor.org/packages/3.11/data/annotation/src/contrib/pd.porgene.1.1.st_3.12.0.tar.gz', - 'https://bioconductor.org/packages/3.11/data/annotation/src/contrib/pd.rabgene.1.0.st_3.12.0.tar.gz', - 'https://bioconductor.org/packages/3.11/data/annotation/src/contrib/pd.rabgene.1.1.st_3.12.0.tar.gz', - 'https://bioconductor.org/packages/3.11/data/annotation/src/contrib/pd.rae230a_3.12.0.tar.gz', - 'https://bioconductor.org/packages/3.11/data/annotation/src/contrib/pd.rae230b_3.12.0.tar.gz', - 'https://bioconductor.org/packages/3.11/data/annotation/src/contrib/pd.raex.1.0.st.v1_3.14.1.tar.gz', - 'https://bioconductor.org/packages/3.11/data/annotation/src/contrib/pd.ragene.1.0.st.v1_3.14.1.tar.gz', - 'https://bioconductor.org/packages/3.11/data/annotation/src/contrib/pd.ragene.1.1.st.v1_3.14.1.tar.gz', - 'https://bioconductor.org/packages/3.11/data/annotation/src/contrib/pd.ragene.2.0.st_3.14.1.tar.gz', - 'https://bioconductor.org/packages/3.11/data/annotation/src/contrib/pd.ragene.2.1.st_3.14.1.tar.gz', - 'https://bioconductor.org/packages/3.11/data/annotation/src/contrib/pd.rat230.2_3.12.0.tar.gz', - 'https://bioconductor.org/packages/3.11/data/annotation/src/contrib/pd.rcngene.1.0.st_3.12.0.tar.gz', - 'https://bioconductor.org/packages/3.11/data/annotation/src/contrib/pd.rcngene.1.1.st_3.12.0.tar.gz', - 'https://bioconductor.org/packages/3.11/data/annotation/src/contrib/pd.rg.u34a_3.12.0.tar.gz', - 'https://bioconductor.org/packages/3.11/data/annotation/src/contrib/pd.rg.u34b_3.12.0.tar.gz', - 'https://bioconductor.org/packages/3.11/data/annotation/src/contrib/pd.rg.u34c_3.12.0.tar.gz', - 'https://bioconductor.org/packages/3.11/data/annotation/src/contrib/pd.rhegene.1.0.st_3.12.0.tar.gz', - 'https://bioconductor.org/packages/3.11/data/annotation/src/contrib/pd.rhegene.1.1.st_3.12.0.tar.gz', - 'https://bioconductor.org/packages/3.11/data/annotation/src/contrib/pd.rhesus_3.12.0.tar.gz', - 'https://bioconductor.org/packages/3.11/data/annotation/src/contrib/pd.rice_3.12.0.tar.gz', - 'https://bioconductor.org/packages/3.11/data/annotation/src/contrib/pd.rjpgene.1.0.st_3.12.0.tar.gz', - 'https://bioconductor.org/packages/3.11/data/annotation/src/contrib/pd.rjpgene.1.1.st_3.12.0.tar.gz', - 'https://bioconductor.org/packages/3.11/data/annotation/src/contrib/pd.rn.u34_3.12.0.tar.gz', - 'https://bioconductor.org/packages/3.11/data/annotation/src/contrib/pd.rta.1.0_3.12.2.tar.gz', - 'https://bioconductor.org/packages/3.11/data/annotation/src/contrib/pd.rusgene.1.0.st_3.12.0.tar.gz', - 'https://bioconductor.org/packages/3.11/data/annotation/src/contrib/pd.rusgene.1.1.st_3.12.0.tar.gz', - 'https://bioconductor.org/packages/3.11/data/annotation/src/contrib/pd.s.aureus_3.12.0.tar.gz', - 'https://bioconductor.org/packages/3.11/data/annotation/src/contrib/pd.soybean_3.12.0.tar.gz', - 'https://bioconductor.org/packages/3.11/data/annotation/src/contrib/pd.soygene.1.0.st_3.12.0.tar.gz', - 'https://bioconductor.org/packages/3.11/data/annotation/src/contrib/pd.soygene.1.1.st_3.12.0.tar.gz', - 'https://bioconductor.org/packages/3.11/data/annotation/src/contrib/pd.sugar.cane_3.12.0.tar.gz', - 'https://bioconductor.org/packages/3.11/data/annotation/src/contrib/pd.tomato_3.12.0.tar.gz', - 'https://bioconductor.org/packages/3.11/data/annotation/src/contrib/pd.u133.x3p_3.12.0.tar.gz', - 'https://bioconductor.org/packages/3.11/data/annotation/src/contrib/pd.vitis.vinifera_3.12.0.tar.gz', - 'https://bioconductor.org/packages/3.11/data/annotation/src/contrib/pd.wheat_3.12.0.tar.gz', - 'https://bioconductor.org/packages/3.11/data/annotation/src/contrib/pd.x.laevis.2_3.12.0.tar.gz', - 'https://bioconductor.org/packages/3.11/data/annotation/src/contrib/pd.x.tropicalis_3.12.0.tar.gz', - 'https://bioconductor.org/packages/3.11/data/annotation/src/contrib/pd.xenopus.laevis_3.12.0.tar.gz', - 'https://bioconductor.org/packages/3.11/data/annotation/src/contrib/pd.yeast.2_3.12.0.tar.gz', - 'https://bioconductor.org/packages/3.11/data/annotation/src/contrib/pd.yg.s98_3.12.0.tar.gz', - 'https://bioconductor.org/packages/3.11/data/annotation/src/contrib/pd.zebgene.1.0.st_3.12.0.tar.gz', - 'https://bioconductor.org/packages/3.11/data/annotation/src/contrib/pd.zebgene.1.1.st_3.12.0.tar.gz', - 'https://bioconductor.org/packages/3.11/data/annotation/src/contrib/pd.zebrafish_3.12.0.tar.gz' -) -install_with_url(pd_annotation_pkgs) - -# Load this libraries because apparently just installing it isn't -# enough to verify that the correct versions of dependencies are installed. -library('foreach') diff --git a/workers/ccache.conf b/workers/ccache.conf new file mode 100644 index 000000000..cde43e665 --- /dev/null +++ b/workers/ccache.conf @@ -0,0 +1,5 @@ +max_size = 5.0G +# important for R CMD INSTALL *.tar.gz as tarballs are expanded freshly -> fresh ctime +sloppiness = include_file_ctime +# also important as the (temp.) directory name will differ +hash_dir = false diff --git a/workers/dockerfiles/Dockerfile.affymetrix b/workers/dockerfiles/Dockerfile.affymetrix index 151473ecf..3ee59ea1a 100644 --- a/workers/dockerfiles/Dockerfile.affymetrix +++ b/workers/dockerfiles/Dockerfile.affymetrix @@ -1,81 +1,30 @@ -FROM ubuntu:20.04 +FROM ccdlstaging/dr_worker_base:latest -# Source: https://github.com/thisbejim/Pyrebase/issues/87#issuecomment-354452082 -# For whatever reason this worked and 'en_US.UTF-8' did not. -ENV LANG C.UTF-8 +# Fail in case of an error at any stage in the pipe. +SHELL ["/bin/bash", "-o", "pipefail", "-c"] -# Prevent tzdata from prompting us for a timezone and hanging the build. -ENV DEBIAN_FRONTEND=noninteractive - -RUN apt-get update -qq -RUN apt-get install -y software-properties-common -RUN add-apt-repository ppa:apt-fast/stable - -RUN apt-get update -qq -RUN apt-get install -y apt-fast apt-transport-https - -# The packages related to R are somewhat weird, see the README for more details. -COPY workers/CRAN.gpg . -RUN apt-key add CRAN.gpg -RUN echo "deb https://cloud.r-project.org/bin/linux/ubuntu bionic-cran35/" \ - >> /etc/apt/sources.list.d/added_repos.list - -RUN apt-fast update -qq && apt-fast install -y \ - build-essential \ - cmake \ - curl \ - cython3 \ - ed \ - git \ - libcairo-dev \ - libcurl4-openssl-dev \ - libedit-dev \ - libpq-dev \ - libssl-dev \ - libxml2-dev \ - llvm-10-dev \ - lsb-release \ - mercurial \ - pkg-config \ - python3-pip \ - python3 \ - python3-dev \ - r-base-core \ - wget - -RUN rm CRAN.gpg -RUN apt-get clean; rm -rf /var/lib/apt/lists/* -RUN ln -s /usr/bin/llvm-config-10 /usr/bin/llvm-config - -RUN groupadd user && useradd --create-home --home-dir /home/user -g user user WORKDIR /home/user -ENV R_LIBS "/usr/local/lib/R/site-library" - -COPY common/install_devtools.R . -RUN Rscript install_devtools.R - -COPY workers/R_dependencies/affymetrix/dependencies.R . -RUN Rscript dependencies.R - -COPY workers/affymetrix_dependencies.R . -RUN Rscript affymetrix_dependencies.R +RUN pip3 install --ignore-installed --no-cache-dir --upgrade pip setuptools && \ + # Install this one here instead of via requirements.txt because not + # all processors need it. + pip3 install rpy2==3.4.5 -RUN pip3 install pip --upgrade -RUN pip3 install setuptools --upgrade +# Get the latest version from the dist directory. +COPY common/dist/data-refinery-common-* common/ +RUN pip3 install --ignore-installed --no-cache-dir \ + common/$(ls common -1 | sort --version-sort | tail -1) -# Install this one here instead of via requirements.txt because not -# all processors need it. -RUN pip3 install rpy2==3.4.5 COPY workers/data_refinery_workers/processors/requirements.txt . -RUN pip3 install -r requirements.txt +RUN pip3 install --ignore-installed --no-cache-dir -r requirements.txt -# Get the latest version from the dist directory. -COPY common/dist/data-refinery-common-* common/ -RUN pip3 install common/$(ls common -1 | sort --version-sort | tail -1) +COPY workers/R/dependencies/affymetrix/cran/dependencies.R dependencies.R +RUN Rscript dependencies.R + +COPY workers/R/dependencies/affymetrix/install_ensg_pkgs.R . -# Clear out the pip3 cache. -RUN rm -rf /root/.cache +COPY workers/R/dependencies/affymetrix/bioc/dependencies.R dependencies.R +RUN Rscript dependencies.R ARG SYSTEM_VERSION @@ -86,6 +35,7 @@ USER user COPY .boto .boto COPY config/ config/ COPY workers/ . -COPY workers/install_ensg_pkgs.R . + +RUN ccache -s ENTRYPOINT [] diff --git a/workers/dockerfiles/Dockerfile.affymetrix_local b/workers/dockerfiles/Dockerfile.affymetrix_local index 9a37692e6..3d7eff18f 100644 --- a/workers/dockerfiles/Dockerfile.affymetrix_local +++ b/workers/dockerfiles/Dockerfile.affymetrix_local @@ -1,14 +1,18 @@ FROM ccdlstaging/dr_affymetrix:latest -USER root +# Fail in case of an error at any stage in the pipe. +SHELL ["/bin/bash", "-o", "pipefail", "-c"] + +WORKDIR /home/user # Remove the version of common already installed. -RUN rm -r common/ -RUN pip3 uninstall -y data_refinery_common +RUN rm -r common && \ + pip3 uninstall -y data_refinery_common # Get the latest version from the dist directory. COPY common/dist/data-refinery-common-* common/ -RUN pip3 install common/$(ls common -1 | sort --version-sort | tail -1) +RUN pip3 install --ignore-installed --no-cache-dir \ + common/$(ls common -1 | sort --version-sort | tail -1) ARG SYSTEM_VERSION diff --git a/workers/dockerfiles/Dockerfile.compendia b/workers/dockerfiles/Dockerfile.compendia index 2c6a38784..82e14df01 100644 --- a/workers/dockerfiles/Dockerfile.compendia +++ b/workers/dockerfiles/Dockerfile.compendia @@ -3,102 +3,98 @@ FROM nvidia/cuda:11.8.0-runtime-ubuntu18.04 # This is very similar to the `smasher` image, but comes with OpenBLAS and some # of the other libraries required for fancyimpute. +# Fail in case of an error at any stage in the pipe. +SHELL ["/bin/bash", "-o", "pipefail", "-c"] + +WORKDIR /home/user + # Prevent tzdata from prompting us for a timezone and hanging the build. ENV DEBIAN_FRONTEND=noninteractive # Source: https://github.com/thisbejim/Pyrebase/issues/87#issuecomment-354452082 # For whatever reason this worked and 'en_US.UTF-8' did not. -ENV LANG C.UTF-8 - -# RUN apt-key adv --fetch-keys https://developer.download.nvidia.com/compute/cuda/repos/ubuntu1804/x86_64/3bf863cc.pub -# via https://github.com/ilikenwf/apt-fast/issues/85#issuecomment-261640099 -RUN echo debconf apt-fast/maxdownloads string 16 | debconf-set-selections -RUN echo debconf apt-fast/dlflag boolean true | debconf-set-selections -RUN echo debconf apt-fast/aptmanager string apt-get | debconf-set-selections -RUN echo 'tzdata tzdata/Areas select Etc' | debconf-set-selections -RUN echo 'tzdata tzdata/Zones/Etc select UTC' | debconf-set-selections - -RUN apt-get update -qq -RUN apt-get install -y software-properties-common -RUN add-apt-repository ppa:apt-fast/stable -RUN add-apt-repository ppa:deadsnakes/ppa -RUN add-apt-repository ppa:savoury1/llvm-defaults-10 - -RUN apt-get update -qq -RUN apt-get install -y apt-fast apt-transport-https tzdata +ENV LANG=C.UTF-8 COPY workers/CRAN.gpg . -RUN apt-key add CRAN.gpg -RUN echo "deb https://cloud.r-project.org/bin/linux/ubuntu bionic-cran35/" \ - >> /etc/apt/sources.list.d/added_repos.list - -RUN apt-fast update -qq && apt-fast install -y \ - build-essential \ - cmake \ - curl \ - cython3 \ - ed \ - gfortran \ - git \ - libcairo-dev \ - libcurl4-openssl-dev \ - libedit-dev \ - libblas-dev \ - liblapack-dev \ - libpq-dev \ - libssl-dev \ - libxml2-dev \ - llvm-10-dev \ - lsb-release \ - mercurial \ - pkg-config \ - python3-pip \ - python3.8 \ - python3.8-dev \ - r-base-core \ - wget - -RUN rm CRAN.gpg -RUN apt-get clean; rm -rf /var/lib/apt/lists/* -RUN ln -s /usr/bin/llvm-config-10 /usr/bin/llvm-config -RUN update-alternatives --install /usr/bin/python3 python3 /usr/bin/python3.8 1 - -RUN groupadd user && useradd --create-home --home-dir /home/user -g user user -WORKDIR /home/user - -RUN wget https://bitbucket.org/ariya/phantomjs/downloads/phantomjs-2.1.1-linux-x86_64.tar.bz2 -RUN tar xvjf phantomjs-2.1.1-linux-x86_64.tar.bz2 -C /usr/local/share/ -RUN ln -s /usr/local/share/phantomjs-2.1.1-linux-x86_64/bin/phantomjs /usr/local/bin/ -# We need a few special packages for QN -ENV R_LIBS "/usr/local/lib/R/site-library" - -COPY common/install_devtools.R . +# RUN apt-key adv --fetch-keys https://developer.download.nvidia.com/compute/cuda/repos/ubuntu1804/x86_64/3bf863cc.pub +# via https://github.com/ilikenwf/apt-fast/issues/85#issuecomment-261640099 +RUN echo debconf apt-fast/maxdownloads string 16 | debconf-set-selections && \ + echo debconf apt-fast/dlflag boolean true | debconf-set-selections && \ + echo debconf apt-fast/aptmanager string apt-get | debconf-set-selections && \ + echo 'tzdata tzdata/Areas select Etc' | debconf-set-selections && \ + echo 'tzdata tzdata/Zones/Etc select UTC' | debconf-set-selections && \ + apt-get update -qq && \ + apt-get install --no-install-recommends -y software-properties-common && \ + add-apt-repository ppa:apt-fast/stable && \ + add-apt-repository ppa:deadsnakes/ppa && \ + add-apt-repository ppa:savoury1/llvm-defaults-10 && \ + apt-get update -qq && \ + apt-get install --no-install-recommends -y apt-fast apt-transport-https gpg-agent tzdata && \ + apt-key add CRAN.gpg && \ + echo "deb https://cloud.r-project.org/bin/linux/ubuntu bionic-cran35/" \ + >> /etc/apt/sources.list.d/added_repos.list && \ + apt-fast update -qq && \ + apt-fast install -y \ + build-essential \ + ccache \ + cmake \ + curl \ + cython3 \ + ed \ + gfortran \ + git \ + libblas-dev \ + libcairo-dev \ + libcurl4-openssl-dev \ + libedit-dev \ + liblapack-dev \ + libpq-dev \ + libssl-dev \ + libxml2-dev \ + llvm-10-dev \ + lsb-release \ + mercurial \ + pkg-config \ + python3-pip \ + python3.8 \ + python3.8-dev \ + r-base-core \ + wget && \ + rm CRAN.gpg && \ + apt-get clean; rm -rf /var/lib/apt/lists/* && \ + ln -s /usr/bin/llvm-config-10 /usr/bin/llvm-config & \ + update-alternatives --install /usr/bin/python3 python3 /usr/bin/python3.8 1 && \ + groupadd user && useradd --create-home --home-dir /home/user -g user user && \ + wget -q https://bitbucket.org/ariya/phantomjs/downloads/phantomjs-2.1.1-linux-x86_64.tar.bz2 && \ + tar xvjf phantomjs-2.1.1-linux-x86_64.tar.bz2 -C /usr/local/share/ && \ + ln -s /usr/local/share/phantomjs-2.1.1-linux-x86_64/bin/phantomjs /usr/local/bin/ + +# We need a few special packages for QN. +ENV R_LIBS="/usr/local/lib/R/site-library" + +COPY common/R/install_devtools.R . RUN Rscript install_devtools.R -COPY workers/R_dependencies/qn/dependencies.R . +COPY workers/R/dependencies/qn/cran/dependencies.R . RUN Rscript dependencies.R -COPY workers/qn_dependencies.R . -RUN Rscript qn_dependencies.R +COPY workers/R/dependencies/qn/bioc/dependencies.R . +RUN Rscript dependencies.R # End QN-specific -RUN pip3 install --upgrade pip -# Smasher-specific requirements -RUN pip3 install --ignore-installed numpy scipy matplotlib pandas==0.25.3 scikit-learn sympy nose rpy2===3.4.5 tzlocal fancySVD -# End smasher-specific - -COPY workers/data_refinery_workers/processors/requirements.txt . -RUN pip3 install --ignore-installed -r requirements.txt - -RUN pip3 install --ignore-installed numpy==1.16.0 # Fix a downgrade - # Get the latest version from the dist directory. COPY common/dist/data-refinery-common-* common/ -RUN pip3 install common/$(ls common -1 | sort --version-sort | tail -1) +RUN pip3 install --ignore-installed --no-cache-dir \ + common/$(ls common -1 | sort --version-sort | tail -1) -# Clear out the pip3 cache. -RUN rm -rf /root/.cache +RUN pip3 install --ignore-installed --no-cache-dir --upgrade pip && \ + pip3 install --ignore-installed --no-cache-dir numpy scipy matplotlib \ + pandas==0.25.3 scikit-learn sympy nose rpy2===3.4.5 tzlocal fancySVD + +COPY workers/data_refinery_workers/processors/requirements.txt . +RUN pip3 install --ignore-installed --no-cache-dir -r requirements.txt && \ + pip3 install --ignore-installed --no-cache-dir numpy==1.16.0 ARG SYSTEM_VERSION diff --git a/workers/dockerfiles/Dockerfile.downloaders b/workers/dockerfiles/Dockerfile.downloaders index 1b3337325..3a5974491 100644 --- a/workers/dockerfiles/Dockerfile.downloaders +++ b/workers/dockerfiles/Dockerfile.downloaders @@ -1,64 +1,11 @@ -FROM ubuntu:18.04 +FROM ccdlstaging/dr_worker_base:latest -# Prevent tzdata from prompting us for a timezone and hanging the build. -ENV DEBIAN_FRONTEND=noninteractive +# Fail in case of an error at any stage in the pipe. +SHELL ["/bin/bash", "-o", "pipefail", "-c"] -# Source: https://github.com/thisbejim/Pyrebase/issues/87#issuecomment-354452082 -# For whatever reason this worked and 'en_US.UTF-8' did not. -ENV LANG C.UTF-8 - -RUN apt-get update -RUN apt-get install -y software-properties-common -RUN add-apt-repository ppa:apt-fast/stable -RUN add-apt-repository ppa:deadsnakes/ppa -RUN add-apt-repository ppa:savoury1/llvm-defaults-10 - -RUN apt-get update -qq -RUN apt-get install -y apt-fast apt-transport-https - -# The packages related to R are somewhat weird, see the README for more details. -COPY workers/CRAN.gpg . -RUN apt-key add CRAN.gpg -RUN echo "deb https://cloud.r-project.org/bin/linux/ubuntu bionic-cran35/" \ - >> /etc/apt/sources.list.d/added_repos.list - -RUN apt-fast update -qq && apt-fast install -y \ - build-essential \ - cmake \ - curl \ - cython3 \ - ed \ - git \ - libcairo-dev \ - libcurl4-openssl-dev \ - libedit-dev \ - libpq-dev \ - libssl-dev \ - libxml2-dev \ - llvm-10-dev \ - lsb-release \ - mercurial \ - pkg-config \ - python3-pip \ - python3.8 \ - python3.8-dev \ - r-base-core \ - wget - -RUN rm CRAN.gpg -RUN apt-get clean; rm -rf /var/lib/apt/lists/* -RUN ln -s /usr/bin/llvm-config-10 /usr/bin/llvm-config -RUN update-alternatives --install /usr/bin/python3 python3 /usr/bin/python3.8 1 - -RUN groupadd user && useradd --create-home --home-dir /home/user -g user user WORKDIR /home/user -ENV R_LIBS "/usr/local/lib/R/site-library" - -COPY common/install_devtools.R . -RUN Rscript install_devtools.R - -COPY workers/install_downloader_R_only.R . +COPY workers/R/dependencies/install_downloader_R_only.R . RUN Rscript install_downloader_R_only.R # Aspera will only install as the current user. @@ -67,29 +14,25 @@ USER user # Install Aspera. We have to install it using Holland Computing Center's conda # repo because download.asperasoft.com now returns 403s -RUN wget -q https://anaconda.org/HCC/aspera-cli/3.9.1/download/linux-64/aspera-cli-3.9.1-0.tar.bz2 -RUN [ "$(sha256sum aspera-cli-3.9.1-0.tar.bz2 | cut -d' ' -f1)" = 60a09a7f3795186954079869106aa89a64183b7be8e0da7cbbe9d57c66c9bcdb ] -RUN mkdir -p .aspera/cli -RUN tar xf aspera-cli-3.9.1-0.tar.bz2 -C .aspera/cli -RUN rm aspera-cli-3.9.1-0.tar.bz2 +RUN wget -q https://anaconda.org/HCC/aspera-cli/3.9.1/download/linux-64/aspera-cli-3.9.1-0.tar.bz2 && \ + [ "$(sha256sum aspera-cli-3.9.1-0.tar.bz2 | cut -d ' ' -f1)" = 60a09a7f3795186954079869106aa89a64183b7be8e0da7cbbe9d57c66c9bcdb ] && \ + mkdir -p .aspera/cli && \ + tar xf aspera-cli-3.9.1-0.tar.bz2 -C .aspera/cli && \ + rm aspera-cli-3.9.1-0.tar.bz2 # Now that we're done installing Aspera go back to being root for a bit. USER root -RUN pip3 install --upgrade pip -# Install this rpy2 here instead of via requirements.txt because -# pip-compile throws an error for it. -RUN pip3 install rpy2==3.4.5 - -COPY workers/data_refinery_workers/downloaders/requirements.txt . -RUN pip3 install --ignore-installed -r requirements.txt +RUN pip3 install --ignore-installed --no-cache-dir --upgrade pip && \ + pip3 install --ignore-installed --no-cache-dir rpy2==3.4.5 # Get the latest version from the dist directory. COPY common/dist/data-refinery-common-* common/ -RUN pip3 install common/$(ls common -1 | sort --version-sort | tail -1) +RUN pip3 install --ignore-installed --no-cache-dir \ + common/$(ls common -1 | sort --version-sort | tail -1) -# Clear out the pip3 cache. -RUN rm -rf /root/.cache +COPY workers/data_refinery_workers/downloaders/requirements.txt . +RUN pip3 install --ignore-installed --no-cache-dir -r requirements.txt ARG SYSTEM_VERSION diff --git a/workers/dockerfiles/Dockerfile.illumina b/workers/dockerfiles/Dockerfile.illumina index e4cc70268..949c22405 100644 --- a/workers/dockerfiles/Dockerfile.illumina +++ b/workers/dockerfiles/Dockerfile.illumina @@ -1,83 +1,25 @@ -FROM ubuntu:18.04 +FROM ccdlstaging/dr_worker_base:latest -# Prevent tzdata from prompting us for a timezone and hanging the build. -ENV DEBIAN_FRONTEND=noninteractive +# Fail in case of an error at any stage in the pipe. +SHELL ["/bin/bash", "-o", "pipefail", "-c"] -# Source: https://github.com/thisbejim/Pyrebase/issues/87#issuecomment-354452082 -# For whatever reason this worked and 'en_US.UTF-8' did not. -ENV LANG C.UTF-8 - -RUN apt-get update -RUN apt-get install -y software-properties-common -RUN add-apt-repository ppa:apt-fast/stable -RUN add-apt-repository ppa:deadsnakes/ppa -RUN add-apt-repository ppa:savoury1/llvm-defaults-10 - -RUN apt-get update -qq -RUN apt-get install -y apt-fast apt-transport-https - -# The packages related to R are somewhat weird, see the README for more details. -COPY workers/CRAN.gpg . -RUN apt-key add CRAN.gpg -RUN echo "deb https://cloud.r-project.org/bin/linux/ubuntu bionic-cran35/" \ - >> /etc/apt/sources.list.d/added_repos.list - -RUN apt-fast update -qq && apt-fast install -y \ - build-essential \ - cmake \ - curl \ - cython3 \ - ed \ - gfortran \ - git \ - libcairo-dev \ - libcurl4-openssl-dev \ - libedit-dev \ - libblas-dev \ - liblapack-dev \ - libpq-dev \ - libssl-dev \ - libxml2-dev \ - llvm-10-dev \ - lsb-release \ - mercurial \ - pkg-config \ - python3-pip \ - python3.8 \ - python3.8-dev \ - r-base-core \ - wget - -RUN rm CRAN.gpg -RUN apt-get clean; rm -rf /var/lib/apt/lists/* -RUN ln -s /usr/bin/llvm-config-10 /usr/bin/llvm-config -RUN update-alternatives --install /usr/bin/python3 python3 /usr/bin/python3.8 1 - -RUN groupadd user && useradd --create-home --home-dir /home/user -g user user WORKDIR /home/user -ENV R_LIBS "/usr/local/lib/R/site-library" - -COPY common/install_devtools.R . -RUN Rscript install_devtools.R - -COPY workers/R_dependencies/illumina/dependencies.R . +COPY workers/R/dependencies/illumina/cran/dependencies.R . RUN Rscript dependencies.R # These are for Illumina. -COPY workers/illumina_dependencies.R . -RUN Rscript illumina_dependencies.R - -RUN pip3 install --upgrade pip -COPY workers/data_refinery_workers/processors/requirements.txt . -RUN pip3 install --ignore-installed -r requirements.txt +COPY workers/R/dependencies/illumina/bioc/dependencies.R . +RUN Rscript dependencies.R # Get the latest version from the dist directory. COPY common/dist/data-refinery-common-* common/ -RUN pip3 install common/$(ls common -1 | sort --version-sort | tail -1) +RUN pip3 install --ignore-installed --no-cache-dir \ + common/$(ls common -1 | sort --version-sort | tail -1) -# Clear out the pip3 cache. -RUN rm -rf /root/.cache +RUN pip3 install --ignore-installed --no-cache-dir --upgrade pip +COPY workers/data_refinery_workers/processors/requirements.txt . +RUN pip3 install --ignore-installed -r requirements.txt ARG SYSTEM_VERSION diff --git a/workers/dockerfiles/Dockerfile.no_op b/workers/dockerfiles/Dockerfile.no_op index 98f35d772..a0cb7855e 100644 --- a/workers/dockerfiles/Dockerfile.no_op +++ b/workers/dockerfiles/Dockerfile.no_op @@ -1,94 +1,38 @@ -FROM ubuntu:18.04 +FROM ccdlstaging/dr_worker_base:latest -# Prevent tzdata from prompting us for a timezone and hanging the build. -ENV DEBIAN_FRONTEND=noninteractive +# Fail in case of an error at any stage in the pipe. +SHELL ["/bin/bash", "-o", "pipefail", "-c"] -# Source: https://github.com/thisbejim/Pyrebase/issues/87#issuecomment-354452082 -# For whatever reason this worked and 'en_US.UTF-8' did not. -ENV LANG C.UTF-8 - -RUN apt-get update -qq -RUN apt-get install -y software-properties-common - -RUN add-apt-repository ppa:apt-fast/stable -# deadsnakes packages new python versions for older Ubuntu releases -RUN add-apt-repository ppa:deadsnakes/ppa - -RUN apt-get update -qq -RUN apt-get -y install apt-fast - -# The packages related to R are somewhat weird, see the README for more details. -COPY workers/CRAN.gpg . -RUN apt-key add CRAN.gpg -RUN echo "deb https://cloud.r-project.org/bin/linux/ubuntu bionic-cran35/" \ - >> /etc/apt/sources.list.d/added_repos.list - -RUN apt-fast update -qq && apt-fast install -y \ - build-essential \ - cmake \ - curl \ - cython3 \ - ed \ - git \ - libcairo-dev \ - libcurl4-openssl-dev \ - libedit-dev \ - libfreetype6-dev \ - libpq-dev \ - libssl-dev \ - libxml2-dev \ - llvm-10-dev \ - lsb-release \ - mercurial \ - pkg-config \ - python3-pip \ - python3.8 \ - python3.8-dev \ - r-base-core \ - wget - -RUN rm CRAN.gpg -RUN apt-get clean; rm -rf /var/lib/apt/lists/* -RUN ln -s /usr/bin/llvm-config-10 /usr/bin/llvm-config -RUN update-alternatives --install /usr/bin/python3 python3 /usr/bin/python3.8 1 - -RUN groupadd user && useradd --create-home --home-dir /home/user -g user user WORKDIR /home/user -# Noop-specific requirements -ENV R_LIBS "/usr/local/lib/R/site-library" - -COPY common/install_devtools.R . -RUN Rscript install_devtools.R - -COPY workers/R_dependencies/no_op/dependencies.R . +COPY workers/R/dependencies/no_op/cran/dependencies.R . RUN Rscript dependencies.R -COPY workers/install_gene_convert.R . +COPY workers/R/dependencies/no_op/install_gene_convert.R . RUN Rscript install_gene_convert.R +# Noop-specific. RUN mkdir -p gene_indexes WORKDIR /home/user/gene_indexes ENV ID_REFINERY_URL https://zenodo.org/record/1410647/files/all_1536267482.zip -RUN curl -O $ID_REFINERY_URL -RUN echo $ID_REFINERY_URL > /etc/identifier_refinery_url -RUN unzip *.zip -RUN rm *.zip +RUN curl -O $ID_REFINERY_URL && \ + echo $ID_REFINERY_URL > /etc/identifier_refinery_url && \ + unzip *.zip && \ + rm *.zip +# End Noop-specific. + WORKDIR /home/user -# End Noop-specific -RUN pip3 install --upgrade pip -RUN pip3 install numpy +RUN pip3 install --ignore-installed --no-cache-dir --upgrade pip && \ + pip3 install --ignore-installed --no-cache-dir numpy COPY workers/data_refinery_workers/processors/requirements.txt . -RUN pip3 install --ignore-installed -r requirements.txt +RUN pip3 install --ignore-installed --no-cache-dir -r requirements.txt # Get the latest version from the dist directory. COPY common/dist/data-refinery-common-* common/ -RUN pip3 install common/$(ls common -1 | sort --version-sort | tail -1) - -# Clear out the pip3 cache. -RUN rm -rf /root/.cache +RUN pip3 install --ignore-installed --no-cache-dir \ + common/$(ls common -1 | sort --version-sort | tail -1) ARG SYSTEM_VERSION diff --git a/workers/dockerfiles/Dockerfile.salmon b/workers/dockerfiles/Dockerfile.salmon index 8bfbbe9a7..724ddac60 100644 --- a/workers/dockerfiles/Dockerfile.salmon +++ b/workers/dockerfiles/Dockerfile.salmon @@ -1,109 +1,59 @@ -FROM ubuntu:18.04 - -# Prevent tzdata from prompting us for a timezone and hanging the build. -ENV DEBIAN_FRONTEND=noninteractive - -# Source: https://github.com/thisbejim/Pyrebase/issues/87#issuecomment-354452082 -# For whatever reason this worked and 'en_US.UTF-8' did not. -ENV LANG C.UTF-8 - -RUN apt-get update -RUN apt-get install -y software-properties-common -RUN add-apt-repository ppa:apt-fast/stable -RUN add-apt-repository ppa:deadsnakes/ppa -RUN add-apt-repository ppa:savoury1/llvm-defaults-10 - -RUN apt-get update -qq -RUN apt-get install -y apt-fast apt-transport-https - -# The packages related to R are somewhat weird, see the README for more details. -COPY workers/CRAN.gpg . -RUN apt-key add CRAN.gpg -RUN echo "deb https://cloud.r-project.org/bin/linux/ubuntu bionic-cran35/" \ - >> /etc/apt/sources.list.d/added_repos.list - -RUN apt-fast update -qq && apt-fast install -y \ - build-essential \ - cmake \ - curl \ - cython3 \ - ed \ - git \ - libcairo-dev \ - libcurl4-openssl-dev \ - libedit-dev \ - libpq-dev \ - libssl-dev \ - libxml2-dev \ - llvm-10-dev \ - lsb-release \ - mercurial \ - pkg-config \ - python3-pip \ - python3.8 \ - python3.8-dev \ - r-base-core \ - wget - -RUN rm CRAN.gpg -RUN apt-get upgrade; apt-get clean; rm -rf /var/lib/apt/lists/* -RUN ln -s /usr/bin/llvm-config-10 /usr/bin/llvm-config -RUN update-alternatives --install /usr/bin/python3 python3 /usr/bin/python3.8 1 - -RUN groupadd user && useradd --create-home --home-dir /home/user -g user user +FROM ccdlstaging/dr_worker_base:latest + +# Fail in case of an error at any stage in the pipe. +SHELL ["/bin/bash", "-o", "pipefail", "-c"] + WORKDIR /home/user # Install Salmon - -# Tximport requires all experiments to be processed with the same version of Salmon to work https://github.com/AlexsLemonade/refinebio/issues/1496 +# Tximport requires all experiments to be processed with the same version of +# Salmon to work https://github.com/AlexsLemonade/refinebio/issues/1496. # This is something that should be considered when updating salmon, because # all samples from incomplete experiments must have salmon run on them again. ENV SALMON_VERSION 0.13.1 -RUN wget https://github.com/COMBINE-lab/salmon/releases/download/v${SALMON_VERSION}/Salmon-${SALMON_VERSION}_linux_x86_64.tar.gz -RUN mkdir Salmon-${SALMON_VERSION}_linux_x86_64 # On version 0.13.1 salmon was being extracted to a folder with an all lowercase name # the options `-C` and `--strip-components` allow us to specify the name for the resulting file -RUN tar -xzf Salmon-${SALMON_VERSION}_linux_x86_64.tar.gz -C Salmon-${SALMON_VERSION}_linux_x86_64 --strip-components 1 -# Create soft link `/usr/local/bin/salmon` that points to the actual program -RUN ln -sf `pwd`/Salmon-${SALMON_VERSION}_linux_x86_64/bin/salmon /usr/local/bin/ -RUN rm -f Salmon-${SALMON_VERSION}_linux_x86_64.tar.gz +RUN wget -q "https://github.com/COMBINE-lab/salmon/releases/download/v${SALMON_VERSION}/Salmon-${SALMON_VERSION}_linux_x86_64.tar.gz" && \ + mkdir "Salmon-${SALMON_VERSION}_linux_x86_64" && \ + tar -xzf "Salmon-${SALMON_VERSION}_linux_x86_64.tar.gz" \ + -C "Salmon-${SALMON_VERSION}_linux_x86_64" --strip-components 1 && \ + ln -sf "$(pwd)/Salmon-${SALMON_VERSION}_linux_x86_64/bin/salmon" \ + /usr/local/bin/ && \ + rm -f "Salmon-${SALMON_VERSION}_linux_x86_64.tar.gz" # End Salmon installation. -# Install R dependencies. -COPY common/install_devtools.R . -RUN Rscript install_devtools.R - -COPY workers/R_dependencies/tximport/dependencies.R tximport_dependencies.R +COPY workers/R/dependencies/tximport/cran/dependencies.R tximport_dependencies.R RUN Rscript tximport_dependencies.R # Install tximport. -COPY workers/install_tximport.R . +COPY workers/R/dependencies/tximport/install_tximport.R . RUN Rscript install_tximport.R -RUN pip3 install --upgrade pip -RUN pip3 install numpy - -COPY workers/data_refinery_workers/processors/requirements.txt . -RUN pip3 install --ignore-installed -r requirements.txt +RUN pip3 install --ignore-installed --no-cache-dir --upgrade pip && \ + pip3 install --ignore-installed --no-cache-dir numpy # Get the latest version from the dist directory. COPY common/dist/data-refinery-common-* common/ -RUN pip3 install common/$(ls common -1 | sort --version-sort | tail -1) +RUN pip3 install --ignore-installed --no-cache-dir \ + common/$(ls common -1 | sort --version-sort | tail -1) + +COPY workers/data_refinery_workers/processors/requirements.txt . +RUN pip3 install --ignore-installed --no-cache-dir -r requirements.txt # Install SalmonTools. -RUN git clone https://github.com/COMBINE-lab/SalmonTools.git && cd SalmonTools && git checkout 3e6654c2c10a5225498b623056993947fa688afc -RUN cd SalmonTools && cmake . -DCMAKE_INSTALL_PREFIX=/usr/local && make install -RUN rm -rf SalmonTools +RUN git clone https://github.com/COMBINE-lab/SalmonTools.git && \ + cd SalmonTools && \ + git checkout 3e6654c2c10a5225498b623056993947fa688afc && \ + cmake . -DCMAKE_INSTALL_PREFIX=/usr/local && \ + make install && \ + rm -rf SalmonTools # Install sra-tools. ENV SRA_VERSION 2.9.1 -RUN wget "https://ftp.ncbi.nlm.nih.gov/sra/sdk/${SRA_VERSION}/sratoolkit.${SRA_VERSION}-ubuntu64.tar.gz" && \ - tar zxfv sratoolkit.${SRA_VERSION}-ubuntu64.tar.gz && \ - cp -r sratoolkit.${SRA_VERSION}-ubuntu64/bin/* /usr/bin - -# Clear out the pip3 cache. -RUN rm -rf /root/.cache +RUN wget -q "https://ftp.ncbi.nlm.nih.gov/sra/sdk/${SRA_VERSION}/sratoolkit.${SRA_VERSION}-ubuntu64.tar.gz" && \ + tar zxfv "sratoolkit.${SRA_VERSION}-ubuntu64.tar.gz" && \ + cp -r "sratoolkit.${SRA_VERSION}-ubuntu64/bin/"* /usr/bin ARG SYSTEM_VERSION diff --git a/workers/dockerfiles/Dockerfile.smasher b/workers/dockerfiles/Dockerfile.smasher index 313ba2150..00ea02baa 100644 --- a/workers/dockerfiles/Dockerfile.smasher +++ b/workers/dockerfiles/Dockerfile.smasher @@ -1,88 +1,26 @@ -FROM ubuntu:18.04 +FROM ccdlstaging/dr_worker_base:latest -# Prevent tzdata from prompting us for a timezone and hanging the build. -ENV DEBIAN_FRONTEND=noninteractive +# Fail in case of an error at any stage in the pipe. +SHELL ["/bin/bash", "-o", "pipefail", "-c"] -# Source: https://github.com/thisbejim/Pyrebase/issues/87#issuecomment-354452082 -# For whatever reason this worked and 'en_US.UTF-8' did not. -ENV LANG C.UTF-8 - -RUN apt-get update -RUN apt-get install -y software-properties-common -RUN add-apt-repository ppa:apt-fast/stable -RUN add-apt-repository ppa:deadsnakes/ppa -RUN add-apt-repository ppa:savoury1/llvm-defaults-10 - -RUN apt-get update -qq -RUN apt-get install -y apt-fast apt-transport-https - -# The packages related to R are somewhat weird, see the README for more details. -COPY workers/CRAN.gpg . -RUN apt-key add CRAN.gpg -RUN echo "deb https://cloud.r-project.org/bin/linux/ubuntu bionic-cran35/" \ - >> /etc/apt/sources.list.d/added_repos.list - -RUN apt-fast update -qq && apt-fast install -y \ - build-essential \ - cmake \ - curl \ - cython3 \ - ed \ - gfortran \ - git \ - libcairo-dev \ - libcurl4-openssl-dev \ - libedit-dev \ - libblas-dev \ - liblapack-dev \ - libpq-dev \ - libssl-dev \ - libxml2-dev \ - llvm-10-dev \ - lsb-release \ - mercurial \ - pkg-config \ - python3-pip \ - python3.8 \ - python3.8-dev \ - r-base-core \ - wget - -RUN rm CRAN.gpg -RUN apt-get clean; rm -rf /var/lib/apt/lists/* -RUN ln -s /usr/bin/llvm-config-10 /usr/bin/llvm-config -RUN update-alternatives --install /usr/bin/python3 python3 /usr/bin/python3.8 1 - -RUN groupadd user && useradd --create-home --home-dir /home/user -g user user WORKDIR /home/user -# We need a few special packages for QN -ENV R_LIBS "/usr/local/lib/R/site-library" - -COPY common/install_devtools.R . -RUN Rscript install_devtools.R - -COPY workers/R_dependencies/qn/dependencies.R . -RUN Rscript dependencies.R - -COPY workers/qn_dependencies.R . -RUN Rscript qn_dependencies.R -# End QN-specific +RUN pip3 install --no-cache-dir --upgrade pip && \ + pip3 install --ignore-installed --no-cache-dir nose numpy rpy2==3.4.5 -RUN pip3 install --upgrade pip -# Smasher-specific requirements -RUN pip3 install --ignore-installed nose numpy rpy2==3.4.5 -# End smasher-specific +# Get the latest version from the dist directory. +COPY common/dist/data-refinery-common-* common/ +RUN pip3 install --ignore-installed --no-cache-dir \ + common/$(ls common -1 | sort --version-sort | tail -1) COPY workers/data_refinery_workers/processors/requirements.txt . -RUN pip3 install --ignore-installed -r requirements.txt +RUN pip3 install --ignore-installed --no-cache-dir -r requirements.txt -# Get the latest version from the dist directory. -COPY common/dist/data-refinery-common-* common/ -RUN pip3 install common/$(ls common -1 | sort --version-sort | tail -1) +COPY workers/R/dependencies/qn/cran/dependencies.R . +RUN Rscript dependencies.R -# Clear out the pip3 cache. -RUN rm -rf /root/.cache +COPY workers/R/dependencies/qn/bioc/dependencies.R . +RUN Rscript dependencies.R ARG SYSTEM_VERSION diff --git a/workers/dockerfiles/Dockerfile.transcriptome b/workers/dockerfiles/Dockerfile.transcriptome index d1ac0ea63..1c04e7390 100644 --- a/workers/dockerfiles/Dockerfile.transcriptome +++ b/workers/dockerfiles/Dockerfile.transcriptome @@ -1,87 +1,41 @@ -FROM ubuntu:18.04 +FROM ccdlstaging/dr_worker_base:latest -# Prevent tzdata from prompting us for a timezone and hanging the build. -ENV DEBIAN_FRONTEND=noninteractive +# Fail in case of an error at any stage in the pipe. +SHELL ["/bin/bash", "-o", "pipefail", "-c"] -# Source: https://github.com/thisbejim/Pyrebase/issues/87#issuecomment-354452082 -# For whatever reason this worked and 'en_US.UTF-8' did not. -ENV LANG C.UTF-8 - -RUN apt-get update -qq -RUN apt-get install -y software-properties-common -RUN add-apt-repository ppa:apt-fast/stable -RUN add-apt-repository ppa:deadsnakes/ppa -RUN add-apt-repository ppa:savoury1/llvm-defaults-10 - -RUN apt-get update -qq -RUN apt-get -y install apt-fast - -RUN apt-fast update -qq && apt-fast install -y \ - build-essential \ - curl \ - cython3 \ - ed \ - git \ - libcurl4-openssl-dev \ - libfreetype6-dev \ - libpq-dev \ - llvm-10-dev \ - pkg-config \ - python3-pip \ - python3.8 \ - python3.8-dev \ - wget \ - zlib1g-dev - -RUN rm CRAN.gpg -RUN apt-get clean; rm -rf /var/lib/apt/lists/* -RUN ln -s /usr/bin/llvm-config-10 /usr/bin/llvm-config -RUN update-alternatives --install /usr/bin/python3 python3 /usr/bin/python3.8 1 - -RUN groupadd user && useradd --create-home --home-dir /home/user -g user user WORKDIR /home/user # It's annoying that this can only be installed via git. -RUN git clone https://github.com/deweylab/RSEM.git -RUN cd RSEM && make install -RUN rm -rf RSEM - -# Install Salmon +RUN git clone https://github.com/deweylab/RSEM.git && \ + cd RSEM && make install && \ + rm -rf RSEM -# Tximport requires all experiments to be processed with the same version of Salmon to work https://github.com/AlexsLemonade/refinebio/issues/1496 +# Install Salmon. +# Tximport requires all experiments to be processed with the same version of +# Salmon to work https://github.com/AlexsLemonade/refinebio/issues/1496. # This is something that should be considered when updating salmon, because # all samples from incomplete experiments must have salmon run on them again. ENV SALMON_VERSION 0.13.1 -# Doesn't work: -# salmon: relocation error: /usr/local/bin/../lib/librt.so.1: symbol __vdso_clock_gettime, version GLIBC_PRIVATE not defined in file libc.so.6 with link time reference -# ENV SALMON_VERSION 0.10.0 - -# Binary releases moved to bioconda, doesn't work anymore. -# ENV SALMON_VERSION 0.10.2 - -RUN wget https://github.com/COMBINE-lab/salmon/releases/download/v${SALMON_VERSION}/Salmon-${SALMON_VERSION}_linux_x86_64.tar.gz -RUN tar -xzf Salmon-${SALMON_VERSION}_linux_x86_64.tar.gz - # Salmon can extract to a different directory than the name of the tar file. -RUN cp `tar -tzf Salmon-${SALMON_VERSION}_linux_x86_64.tar.gz | head -1 | cut -f1 -d"/"`/bin/salmon /usr/local/bin -RUN cp `tar -tzf Salmon-${SALMON_VERSION}_linux_x86_64.tar.gz | head -1 | cut -f1 -d"/"`/lib/* /usr/local/lib - -RUN rm -r Salmon* +RUN wget -q "https://github.com/COMBINE-lab/salmon/releases/download/v${SALMON_VERSION}/Salmon-${SALMON_VERSION}_linux_x86_64.tar.gz" && \ + tar -xzf "Salmon-${SALMON_VERSION}_linux_x86_64.tar.gz" && \ + cp "$(tar -tzf Salmon-${SALMON_VERSION}_linux_x86_64.tar.gz | \ + head -1 | cut -f1 -d '/')/bin/salmon" /usr/local/bin && \ + cp "$(tar -tzf Salmon-${SALMON_VERSION}_linux_x86_64.tar.gz | \ + head -1 | cut -f1 -d '/')/lib/"* /usr/local/lib/ && \ + rm -r Salmon* # End Salmon installation. -RUN pip3 install --upgrade pip -RUN pip3 install numpy +RUN pip3 install --ignore-installed --no-cache-dir --upgrade pip && \ + pip3 install --ignore-installed --no-cache-dir numpy -COPY workers/data_refinery_workers/processors/requirements.txt . -RUN pip3 install --ignore-installed -r requirements.txt - -# Get the latest version from the dist directory. COPY common/dist/data-refinery-common-* common/ -RUN pip3 install common/$(ls common -1 | sort --version-sort | tail -1) +RUN pip3 install --ignore-installed --no-cache-dir \ + common/$(ls common -1 | sort --version-sort | tail -1) -# Clear out the pip3 cache. -RUN rm -rf /root/.cache +COPY workers/data_refinery_workers/processors/requirements.txt . +RUN pip3 install --ignore-installed --no-cache-dir -r requirements.txt ARG SYSTEM_VERSION diff --git a/workers/dockerfiles/Dockerfile.worker_base b/workers/dockerfiles/Dockerfile.worker_base new file mode 100644 index 000000000..d8f1a0588 --- /dev/null +++ b/workers/dockerfiles/Dockerfile.worker_base @@ -0,0 +1,68 @@ +FROM ubuntu:18.04 + +# Fail in case of an error at any stage in the pipe. +SHELL ["/bin/bash", "-o", "pipefail", "-c"] + +WORKDIR /home/user + +# Prevent tzdata from prompting us for a timezone and hanging the build. +ENV DEBIAN_FRONTEND=noninteractive + +# Source: https://github.com/thisbejim/Pyrebase/issues/87#issuecomment-354452082 +# For whatever reason this worked and 'en_US.UTF-8' did not. +ENV LANG=C.UTF-8 + +RUN apt-get update && \ + apt-get install --no-install-recommends -y software-properties-common && \ + add-apt-repository ppa:apt-fast/stable && \ + add-apt-repository ppa:deadsnakes/ppa && \ + add-apt-repository ppa:savoury1/llvm-defaults-10 && \ + apt-get update -qq && \ + apt-get install --no-install-recommends -y apt-fast apt-transport-https gpg-agent + +# The packages related to R are somewhat weird, see the README for more details. +COPY workers/CRAN.gpg . +RUN apt-key add CRAN.gpg && \ + echo "deb https://cloud.r-project.org/bin/linux/ubuntu bionic-cran35/" \ + >> /etc/apt/sources.list.d/added_repos.list + +RUN apt-fast update -qq && apt-fast install -y \ + build-essential \ + ccache \ + cmake \ + curl \ + cython3 \ + ed \ + git \ + libcairo-dev \ + libcurl4-gnutls-dev \ + libedit-dev \ + libgit2-dev \ + libpq-dev \ + libssl-dev \ + libxml2-dev \ + llvm-10-dev \ + lsb-release \ + mercurial \ + pkg-config \ + python3-pip \ + python3.8 \ + python3.8-dev \ + r-base-core \ + wget && \ + rm CRAN.gpg && \ + apt-get clean && \ + rm -rf /var/lib/apt/lists/* && \ + ln -s /usr/bin/llvm-config-10 /usr/bin/llvm-config && \ + update-alternatives --install /usr/bin/python3 python3 /usr/bin/python3.8 1 && \ + groupadd user && useradd --create-home --home-dir /home/user -g user user + +# Set up ccache. +COPY workers/ccache.conf /root/.ccache/ccache.conf +RUN for i in c++ cc g++ gcc; do ln -s /usr/bin/ccache /usr/local/bin/$i; done +ENV PATH="/usr/local/bin:${PATH}" + +# Pre-install dev tools. +ENV R_LIBS="/usr/local/lib/R/site-library" +COPY common/R/install_devtools.R . +RUN Rscript install_devtools.R diff --git a/workers/install_affy_only.R b/workers/install_affy_only.R deleted file mode 100644 index b488a0287..000000000 --- a/workers/install_affy_only.R +++ /dev/null @@ -1,38 +0,0 @@ -# Turn warnings into errors because biocLite throws warnings instead -# of error if it fails to install something. -options(warn=2) -options(repos=structure(c(CRAN="https://cloud.r-project.org"))) -options(Ncpus=parallel::detectCores()) - -# Use devtools::install_version() to install packages in cran. -devtools::install_version('dplyr', version='1.0.0') -devtools::install_version('tidyr', version='1.1.0') -devtools::install_version('ff', version='2.2-14') -devtools::install_version('locfit', version='1.5-9.4') - -# Helper function that installs a list of packages using the input URLs -install_with_url <- function(urls) { - pkg_ids <- devtools::install_url(urls) - if(any(is.na(pkg_ids))) { - pkg_fails <- paste(urls[is.na(pkg_ids)], collapse = "; ") - stop(paste("Failed to install package(s):", pkg_fails )) - } - return(pkg_ids) -} - -bioc_pkgs <- c( - 'https://bioconductor.org/packages/3.11/bioc/src/contrib/oligoClasses_1.50.4.tar.gz', - 'https://bioconductor.org/packages/3.11/bioc/src/contrib/oligo_1.52.1.tar.gz', - 'https://bioconductor.org/packages/3.11/bioc/src/contrib/GEOquery_2.56.0.tar.gz', - 'https://bioconductor.org/packages/3.11/bioc/src/contrib/SCAN.UPC_2.30.0.tar.gz', - 'https://bioconductor.org/packages/3.11/bioc/src/contrib/affy_1.66.0.tar.gz', - 'https://bioconductor.org/packages/3.11/bioc/src/contrib/affyio_1.58.0.tar.gz', - 'https://bioconductor.org/packages/3.11/bioc/src/contrib/AnnotationDbi_1.50.3.tar.gz', - 'https://bioconductor.org/packages/3.11/bioc/src/contrib/zlibbioc_1.34.0.tar.gz', - 'https://bioconductor.org/packages/3.11/bioc/src/contrib/preprocessCore_1.50.0.tar.gz', - 'https://bioconductor.org/packages/3.11/bioc/src/contrib/genefilter_1.70.0.tar.gz', - 'https://bioconductor.org/packages/3.11/bioc/src/contrib/sva_3.36.0.tar.gz', - 'https://bioconductor.org/packages/3.11/bioc/src/contrib/tximport_1.16.1.tar.gz', - 'https://bioconductor.org/packages/3.11/bioc/src/contrib/limma_3.44.3.tar.gz' -) -install_with_url(bioc_pkgs) diff --git a/workers/install_gene_convert.R b/workers/install_gene_convert.R deleted file mode 100644 index 5e053f9c6..000000000 --- a/workers/install_gene_convert.R +++ /dev/null @@ -1,43 +0,0 @@ -# Turn warnings into errors because biocLite throws warnings instead -# of error if it fails to install something. -options(warn=2) -options(Ncpus=parallel::detectCores()) -options(repos=structure(c(CRAN="https://cloud.r-project.org"))) - -# Helper function that installs a list of packages using the input URLs -install_with_url <- function(urls) { - pkg_ids <- devtools::install_url(urls) - if(any(is.na(pkg_ids))) { - pkg_fails <- paste(urls[is.na(pkg_ids)], collapse = "; ") - stop(paste("Failed to install package(s):", pkg_fails )) - } - return(pkg_ids) -} - -devtools::install_version('dplyr', version='1.0.2') - -bioc_pkgs <- c( - 'https://bioconductor.org/packages/3.11/bioc/src/contrib/AnnotationDbi_1.50.3.tar.gz' -) -install_with_url(bioc_pkgs) - -illumina_pkgs <- c( - 'https://bioconductor.org/packages/3.11/data/annotation/src/contrib/illuminaHumanv1.db_1.26.0.tar.gz', - 'https://bioconductor.org/packages/3.11/data/annotation/src/contrib/illuminaHumanv2.db_1.26.0.tar.gz', - 'https://bioconductor.org/packages/3.11/data/annotation/src/contrib/illuminaHumanv3.db_1.26.0.tar.gz', - 'https://bioconductor.org/packages/3.11/data/annotation/src/contrib/illuminaHumanv4.db_1.26.0.tar.gz', - 'https://bioconductor.org/packages/3.11/data/annotation/src/contrib/illuminaMousev1.db_1.26.0.tar.gz', - 'https://bioconductor.org/packages/3.11/data/annotation/src/contrib/illuminaMousev1p1.db_1.26.0.tar.gz', - 'https://bioconductor.org/packages/3.11/data/annotation/src/contrib/illuminaMousev2.db_1.26.0.tar.gz', - 'https://bioconductor.org/packages/3.11/data/annotation/src/contrib/illuminaRatv1.db_1.26.0.tar.gz' -) -install_with_url(illumina_pkgs) - -# Load these libraries because apparently just installing them isn't -# enough to verify that they have complementary versions. -library("optparse") -library(data.table) -library("dplyr") -library("rlang") -library(lazyeval) -library(AnnotationDbi) diff --git a/workers/install_tximport.R b/workers/install_tximport.R deleted file mode 100644 index 2889fc630..000000000 --- a/workers/install_tximport.R +++ /dev/null @@ -1,7 +0,0 @@ -# Turn warnings into errors because biocLite throws warnings instead -# of error if it fails to install something. -options(warn=2) -options(Ncpus=parallel::detectCores()) -options(repos=structure(c(CRAN="https://cloud.r-project.org"))) - -devtools::install_url('https://bioconductor.org/packages/3.11/bioc/src/contrib/tximport_1.16.1.tar.gz') From f2260eaa7f0033a1cdfa8a862ccdd34ea2c73fe6 Mon Sep 17 00:00:00 2001 From: Arkadii Yakovets Date: Thu, 17 Nov 2022 15:32:21 -0800 Subject: [PATCH 049/220] Update foreman Docker image. --- foreman/dockerfiles/Dockerfile.foreman | 55 ++++++++++++++------------ 1 file changed, 30 insertions(+), 25 deletions(-) diff --git a/foreman/dockerfiles/Dockerfile.foreman b/foreman/dockerfiles/Dockerfile.foreman index 8b7b9f239..f95cb393e 100644 --- a/foreman/dockerfiles/Dockerfile.foreman +++ b/foreman/dockerfiles/Dockerfile.foreman @@ -1,35 +1,40 @@ FROM ubuntu:18.04 -# Source: https://github.com/thisbejim/Pyrebase/issues/87#issuecomment-354452082 -# For whatever reason this worked and 'en_US.UTF-8' did not. -ENV LANG C.UTF-8 - -RUN apt-get update -qq -RUN apt-get install -y software-properties-common -RUN add-apt-repository ppa:apt-fast/stable - -RUN apt-get update -qq -RUN apt-get -y install apt-fast -RUN apt-fast update -qq -RUN apt-fast install -y \ - gcc \ - libpq-dev \ - python3 \ - python3-pip - -RUN groupadd user && useradd --create-home --home-dir /home/user -g user user -WORKDIR /home/user +# Fail in case of an error at any stage in the pipe. +SHELL ["/bin/bash", "-o", "pipefail", "-c"] -RUN pip3 install --upgrade pip +WORKDIR /home/user -COPY foreman/requirements.txt . -# The base image does not have Python 2.X on it at all, so all calls -# to pip or python are by default calls to pip3 or python3 -RUN pip3 install -r requirements.txt +# Source: https://github.com/thisbejim/Pyrebase/issues/87#issuecomment-354452082 +# For whatever reason this worked and 'en_US.UTF-8' did not. +ENV LANG=C.UTF-8 + +# Prevent tzdata from prompting us for a timezone and hanging the build. +ENV DEBIAN_FRONTEND=noninteractive + +RUN apt-get update -qq && \ + apt-get install --no-install-recommends -y software-properties-common && \ + add-apt-repository ppa:apt-fast/stable && \ + apt-get update -qq && \ + apt-get install --no-install-recommends -y apt-fast && \ + apt-fast update -qq && \ + apt-fast install -y \ + gcc \ + libpq-dev \ + python3 \ + python3-pip && \ + apt-get clean && \ + groupadd user && \ + useradd --create-home --home-dir /home/user -g user user && \ + pip3 install --ignore-installed --no-cache-dir --upgrade pip # Get the latest version from the dist directory. COPY common/dist/data-refinery-common-* common/ -RUN pip3 install common/$(ls common -1 | sort --version-sort | tail -1) +RUN pip3 install --ignore-installed --no-cache-dir \ + common/$(ls common -1 | sort --version-sort | tail -1) + +COPY foreman/requirements.txt . +RUN pip3 install --ignore-installed --no-cache-dir -r requirements.txt COPY .boto .boto COPY config config From 5f3b5625a0c13a72a9e191ff7c15255cb0fdd415 Mon Sep 17 00:00:00 2001 From: Arkadii Yakovets Date: Tue, 22 Nov 2022 13:45:21 -0800 Subject: [PATCH 050/220] Update docker images. --- common/dockerfiles/Dockerfile.base | 65 +++++++++++ .../dependencies/illumina/bioc/dependencies.R | 36 +++---- workers/dockerfiles/Dockerfile.affymetrix | 41 ++++--- .../dockerfiles/Dockerfile.affymetrix_local | 3 +- workers/dockerfiles/Dockerfile.compendia | 102 +++++++++--------- workers/dockerfiles/Dockerfile.downloaders | 23 ++-- workers/dockerfiles/Dockerfile.illumina | 12 ++- workers/dockerfiles/Dockerfile.no_op | 23 ++-- workers/dockerfiles/Dockerfile.salmon | 28 ++--- workers/dockerfiles/Dockerfile.smasher | 27 ++--- workers/dockerfiles/Dockerfile.transcriptome | 20 ++-- workers/dockerfiles/Dockerfile.worker_base | 68 ------------ 12 files changed, 238 insertions(+), 210 deletions(-) create mode 100644 common/dockerfiles/Dockerfile.base delete mode 100644 workers/dockerfiles/Dockerfile.worker_base diff --git a/common/dockerfiles/Dockerfile.base b/common/dockerfiles/Dockerfile.base new file mode 100644 index 000000000..5b833cef9 --- /dev/null +++ b/common/dockerfiles/Dockerfile.base @@ -0,0 +1,65 @@ +FROM ubuntu:18.04 + +# Fail in case of an error at any stage in the pipe. +SHELL ["/bin/bash", "-o", "pipefail", "-c"] + +WORKDIR /home/user + +# Prevent tzdata from prompting us for a timezone and hanging the build. +ENV DEBIAN_FRONTEND=noninteractive + +# Source: https://github.com/thisbejim/Pyrebase/issues/87#issuecomment-354452082 +# For whatever reason this worked and 'en_US.UTF-8' did not. +ENV LANG=C.UTF-8 + +COPY workers/CRAN.gpg . +RUN apt-get update && \ + apt-get install --no-install-recommends -y software-properties-common && \ + add-apt-repository ppa:apt-fast/stable && \ + add-apt-repository ppa:deadsnakes/ppa && \ + add-apt-repository ppa:savoury1/llvm-defaults-10 && \ + apt-get update -qq && \ + apt-get install --no-install-recommends -y \ + apt-fast \ + apt-transport-https \ + gpg-agent && \ + apt-key add CRAN.gpg && \ + echo "deb https://cloud.r-project.org/bin/linux/ubuntu bionic-cran35/" \ + >> /etc/apt/sources.list.d/added_repos.list && \ + apt-fast update -qq && apt-fast install -y \ + build-essential \ + cmake \ + curl \ + cython3 \ + ed \ + git \ + libcairo-dev \ + libcurl4-gnutls-dev \ + libedit-dev \ + libgit2-dev \ + libpq-dev \ + libssl-dev \ + libxml2-dev \ + llvm-10-dev \ + lsb-release \ + mercurial \ + pkg-config \ + python3-pip \ + python3.8 \ + python3.8-dev \ + r-base-core \ + wget && \ + apt-get clean && \ + rm CRAN.gpg && \ + rm -rf /var/lib/apt/lists/* && \ + ln -s /usr/bin/llvm-config-10 /usr/bin/llvm-config && \ + update-alternatives --install \ + /usr/bin/python3 python3 /usr/bin/python3.8 1 && \ + groupadd user && \ + useradd --create-home --home-dir /home/user/ -g user user && \ + chown -R user /home/user/ + +# Pre-install dev tools. +ENV R_LIBS=/usr/local/lib/R/site-library +COPY common/R/install_devtools.R . +RUN Rscript install_devtools.R diff --git a/workers/R/dependencies/illumina/bioc/dependencies.R b/workers/R/dependencies/illumina/bioc/dependencies.R index b3e598f79..06aee98a5 100644 --- a/workers/R/dependencies/illumina/bioc/dependencies.R +++ b/workers/R/dependencies/illumina/bioc/dependencies.R @@ -1,36 +1,36 @@ -options(warn=2) -options(repos=structure(c(CRAN="https://cloud.r-project.org"))) -options(Ncpus=parallel::detectCores()) +options(warn = 2) +options(repos = structure(c(CRAN = "https://cloud.r-project.org"))) +options(Ncpus = parallel::detectCores()) # Helper function that installs a list of packages using the input URLs install_with_url <- function(urls) { pkg_ids <- devtools::install_url(urls) - if(any(is.na(pkg_ids))) { + if (any(is.na(pkg_ids))) { pkg_fails <- paste(urls[is.na(pkg_ids)], collapse = "; ") - stop(paste("Failed to install package(s):", pkg_fails )) + stop(paste("Failed to install package(s):", pkg_fails)) } return(pkg_ids) } -devtools::install_version('dplyr', version='1.0.2') +devtools::install_version("dplyr", version = "1.0.2") bioc_pkgs <- c( - 'https://bioconductor.org/packages/3.11/bioc/src/contrib/oligoClasses_1.50.4.tar.gz', - 'https://bioconductor.org/packages/3.11/bioc/src/contrib/oligo_1.52.1.tar.gz', - 'https://bioconductor.org/packages/3.11/bioc/src/contrib/AnnotationDbi_1.50.3.tar.gz', - 'https://bioconductor.org/packages/3.11/bioc/src/contrib/limma_3.44.3.tar.gz' + "https://bioconductor.org/packages/3.11/bioc/src/contrib/oligoClasses_1.50.4.tar.gz", + "https://bioconductor.org/packages/3.11/bioc/src/contrib/oligo_1.52.1.tar.gz", + "https://bioconductor.org/packages/3.11/bioc/src/contrib/AnnotationDbi_1.50.3.tar.gz", + "https://bioconductor.org/packages/3.11/bioc/src/contrib/limma_3.44.3.tar.gz" ) install_with_url(bioc_pkgs) illumina_pkgs <- c( - 'https://bioconductor.org/packages/3.11/data/annotation/src/contrib/illuminaHumanv1.db_1.26.0.tar.gz', - 'https://bioconductor.org/packages/3.11/data/annotation/src/contrib/illuminaHumanv2.db_1.26.0.tar.gz', - 'https://bioconductor.org/packages/3.11/data/annotation/src/contrib/illuminaHumanv3.db_1.26.0.tar.gz', - 'https://bioconductor.org/packages/3.11/data/annotation/src/contrib/illuminaHumanv4.db_1.26.0.tar.gz', - 'https://bioconductor.org/packages/3.11/data/annotation/src/contrib/illuminaMousev1.db_1.26.0.tar.gz', - 'https://bioconductor.org/packages/3.11/data/annotation/src/contrib/illuminaMousev1p1.db_1.26.0.tar.gz', - 'https://bioconductor.org/packages/3.11/data/annotation/src/contrib/illuminaMousev2.db_1.26.0.tar.gz', - 'https://bioconductor.org/packages/3.11/data/annotation/src/contrib/illuminaRatv1.db_1.26.0.tar.gz' + "https://bioconductor.org/packages/3.11/data/annotation/src/contrib/illuminaHumanv1.db_1.26.0.tar.gz", + "https://bioconductor.org/packages/3.11/data/annotation/src/contrib/illuminaHumanv2.db_1.26.0.tar.gz", + "https://bioconductor.org/packages/3.11/data/annotation/src/contrib/illuminaHumanv3.db_1.26.0.tar.gz", + "https://bioconductor.org/packages/3.11/data/annotation/src/contrib/illuminaHumanv4.db_1.26.0.tar.gz", + "https://bioconductor.org/packages/3.11/data/annotation/src/contrib/illuminaMousev1.db_1.26.0.tar.gz", + "https://bioconductor.org/packages/3.11/data/annotation/src/contrib/illuminaMousev1p1.db_1.26.0.tar.gz", + "https://bioconductor.org/packages/3.11/data/annotation/src/contrib/illuminaMousev2.db_1.26.0.tar.gz", + "https://bioconductor.org/packages/3.11/data/annotation/src/contrib/illuminaRatv1.db_1.26.0.tar.gz" ) install_with_url(illumina_pkgs) diff --git a/workers/dockerfiles/Dockerfile.affymetrix b/workers/dockerfiles/Dockerfile.affymetrix index 3ee59ea1a..e90300240 100644 --- a/workers/dockerfiles/Dockerfile.affymetrix +++ b/workers/dockerfiles/Dockerfile.affymetrix @@ -5,18 +5,12 @@ SHELL ["/bin/bash", "-o", "pipefail", "-c"] WORKDIR /home/user -RUN pip3 install --ignore-installed --no-cache-dir --upgrade pip setuptools && \ - # Install this one here instead of via requirements.txt because not - # all processors need it. - pip3 install rpy2==3.4.5 - -# Get the latest version from the dist directory. -COPY common/dist/data-refinery-common-* common/ -RUN pip3 install --ignore-installed --no-cache-dir \ - common/$(ls common -1 | sort --version-sort | tail -1) - -COPY workers/data_refinery_workers/processors/requirements.txt . -RUN pip3 install --ignore-installed --no-cache-dir -r requirements.txt +# Install and set up ccache. +RUN apt-get update && \ + apt-get install --no-install-recommends -y ccache && \ + for i in c++ cc g++ gcc; do ln -fs /usr/bin/ccache /usr/local/bin/$i; done +COPY workers/ccache.conf /root/.ccache/ccache.conf +ENV PATH="/usr/local/bin:${PATH}" COPY workers/R/dependencies/affymetrix/cran/dependencies.R dependencies.R RUN Rscript dependencies.R @@ -26,9 +20,28 @@ COPY workers/R/dependencies/affymetrix/install_ensg_pkgs.R . COPY workers/R/dependencies/affymetrix/bioc/dependencies.R dependencies.R RUN Rscript dependencies.R +RUN pip3 install --ignore-installed --upgrade pip setuptools && \ + # Install this one here instead of via requirements.txt because not + # all processors need it. + pip3 install --ignore-installed rpy2==3.4.5 + +# Get the latest version from the dist directory. +COPY common/dist/data-refinery-common-* common/ +RUN pip3 install --ignore-installed \ + common/$(ls common -1 | sort --version-sort | tail -1) + +COPY workers/data_refinery_workers/processors/requirements.txt . +RUN pip3 install --ignore-installed -r requirements.txt && \ + # Clear out the pip3 cache. + rm -r /root/.cache + ARG SYSTEM_VERSION +ENV SYSTEM_VERSION=$SYSTEM_VERSION -ENV SYSTEM_VERSION $SYSTEM_VERSION +# Print compiler cache stats (the cache hit ratio should be ~90%). +RUN ccache --show-stats && \ + # Clear out the ccache. + ccache --clear USER user @@ -36,6 +49,4 @@ COPY .boto .boto COPY config/ config/ COPY workers/ . -RUN ccache -s - ENTRYPOINT [] diff --git a/workers/dockerfiles/Dockerfile.affymetrix_local b/workers/dockerfiles/Dockerfile.affymetrix_local index 3d7eff18f..7f1af8ad6 100644 --- a/workers/dockerfiles/Dockerfile.affymetrix_local +++ b/workers/dockerfiles/Dockerfile.affymetrix_local @@ -15,8 +15,7 @@ RUN pip3 install --ignore-installed --no-cache-dir \ common/$(ls common -1 | sort --version-sort | tail -1) ARG SYSTEM_VERSION - -ENV SYSTEM_VERSION $SYSTEM_VERSION +ENV SYSTEM_VERSION=$SYSTEM_VERSION USER user diff --git a/workers/dockerfiles/Dockerfile.compendia b/workers/dockerfiles/Dockerfile.compendia index 82e14df01..f2afa185f 100644 --- a/workers/dockerfiles/Dockerfile.compendia +++ b/workers/dockerfiles/Dockerfile.compendia @@ -1,13 +1,11 @@ -FROM nvidia/cuda:11.8.0-runtime-ubuntu18.04 - # This is very similar to the `smasher` image, but comes with OpenBLAS and some # of the other libraries required for fancyimpute. +FROM nvidia/cuda:11.8.0-runtime-ubuntu18.04 + # Fail in case of an error at any stage in the pipe. SHELL ["/bin/bash", "-o", "pipefail", "-c"] -WORKDIR /home/user - # Prevent tzdata from prompting us for a timezone and hanging the build. ENV DEBIAN_FRONTEND=noninteractive @@ -33,45 +31,52 @@ RUN echo debconf apt-fast/maxdownloads string 16 | debconf-set-selections && \ apt-get install --no-install-recommends -y apt-fast apt-transport-https gpg-agent tzdata && \ apt-key add CRAN.gpg && \ echo "deb https://cloud.r-project.org/bin/linux/ubuntu bionic-cran35/" \ - >> /etc/apt/sources.list.d/added_repos.list && \ + >> /etc/apt/sources.list.d/added_repos.list && \ apt-fast update -qq && \ apt-fast install -y \ - build-essential \ - ccache \ - cmake \ - curl \ - cython3 \ - ed \ - gfortran \ - git \ - libblas-dev \ - libcairo-dev \ - libcurl4-openssl-dev \ - libedit-dev \ - liblapack-dev \ - libpq-dev \ - libssl-dev \ - libxml2-dev \ - llvm-10-dev \ - lsb-release \ - mercurial \ - pkg-config \ - python3-pip \ - python3.8 \ - python3.8-dev \ - r-base-core \ - wget && \ + build-essential \ + ccache \ + cmake \ + curl \ + cython3 \ + ed \ + gfortran \ + git \ + libblas-dev \ + libcairo-dev \ + libcurl4-openssl-dev \ + libedit-dev \ + liblapack-dev \ + libpq-dev \ + libssl-dev \ + libxml2-dev \ + llvm-10-dev \ + lsb-release \ + mercurial \ + pkg-config \ + python3-pip \ + python3.8 \ + python3.8-dev \ + r-base-core \ + wget && \ + apt-get clean && \ rm CRAN.gpg && \ - apt-get clean; rm -rf /var/lib/apt/lists/* && \ - ln -s /usr/bin/llvm-config-10 /usr/bin/llvm-config & \ - update-alternatives --install /usr/bin/python3 python3 /usr/bin/python3.8 1 && \ - groupadd user && useradd --create-home --home-dir /home/user -g user user && \ - wget -q https://bitbucket.org/ariya/phantomjs/downloads/phantomjs-2.1.1-linux-x86_64.tar.bz2 && \ + rm -rf /var/lib/apt/lists/* && \ + ln -s /usr/bin/llvm-config-10 /usr/bin/llvm-config && \ + update-alternatives --install /usr/bin/python3 python3 \ + /usr/bin/python3.8 1 && \ + groupadd user && \ + useradd --create-home --home-dir /home/user -g user user + +WORKDIR /home/user +RUN wget -q https://bitbucket.org/ariya/phantomjs/downloads/\ +phantomjs-2.1.1-linux-x86_64.tar.bz2 && \ tar xvjf phantomjs-2.1.1-linux-x86_64.tar.bz2 -C /usr/local/share/ && \ - ln -s /usr/local/share/phantomjs-2.1.1-linux-x86_64/bin/phantomjs /usr/local/bin/ + ln -s /usr/local/share/phantomjs-2.1.1-linux-x86_64/bin/phantomjs \ + /usr/local/bin/ # We need a few special packages for QN. -ENV R_LIBS="/usr/local/lib/R/site-library" +ENV R_LIBS=/usr/local/lib/R/site-library COPY common/R/install_devtools.R . RUN Rscript install_devtools.R @@ -83,22 +88,23 @@ COPY workers/R/dependencies/qn/bioc/dependencies.R . RUN Rscript dependencies.R # End QN-specific +RUN pip3 install --ignore-installed --upgrade pip && \ + pip3 install --ignore-installed numpy scipy matplotlib \ + pandas==0.25.3 scikit-learn sympy nose rpy2===3.4.5 tzlocal fancySVD + +COPY workers/data_refinery_workers/processors/requirements.txt . +RUN pip3 install --ignore-installed -r requirements.txt && \ + # Pin setuptools as a workaround for + # https://github.com/pypa/setuptools/issues/3693 + pip3 install --ignore-installed setuptools==65.0.1 numpy==1.16.0 + # Get the latest version from the dist directory. COPY common/dist/data-refinery-common-* common/ -RUN pip3 install --ignore-installed --no-cache-dir \ +RUN pip3 install --ignore-installed \ common/$(ls common -1 | sort --version-sort | tail -1) -RUN pip3 install --ignore-installed --no-cache-dir --upgrade pip && \ - pip3 install --ignore-installed --no-cache-dir numpy scipy matplotlib \ - pandas==0.25.3 scikit-learn sympy nose rpy2===3.4.5 tzlocal fancySVD - -COPY workers/data_refinery_workers/processors/requirements.txt . -RUN pip3 install --ignore-installed --no-cache-dir -r requirements.txt && \ - pip3 install --ignore-installed --no-cache-dir numpy==1.16.0 - ARG SYSTEM_VERSION - -ENV SYSTEM_VERSION $SYSTEM_VERSION +ENV SYSTEM_VERSION=$SYSTEM_VERSION USER user diff --git a/workers/dockerfiles/Dockerfile.downloaders b/workers/dockerfiles/Dockerfile.downloaders index 3a5974491..c65faf5dc 100644 --- a/workers/dockerfiles/Dockerfile.downloaders +++ b/workers/dockerfiles/Dockerfile.downloaders @@ -10,12 +10,16 @@ RUN Rscript install_downloader_R_only.R # Aspera will only install as the current user. # Even using `su - user &&` doesn't work... -USER user +USER user # Install Aspera. We have to install it using Holland Computing Center's conda # repo because download.asperasoft.com now returns 403s -RUN wget -q https://anaconda.org/HCC/aspera-cli/3.9.1/download/linux-64/aspera-cli-3.9.1-0.tar.bz2 && \ - [ "$(sha256sum aspera-cli-3.9.1-0.tar.bz2 | cut -d ' ' -f1)" = 60a09a7f3795186954079869106aa89a64183b7be8e0da7cbbe9d57c66c9bcdb ] && \ + +RUN wget -q "https://anaconda.org/HCC/aspera-cli/3.9.1/download/\ +linux-64/aspera-cli-3.9.1-0.tar.bz2" && \ + [ "$(sha256sum aspera-cli-3.9.1-0.tar.bz2 | cut -d ' ' -f1)" =\ + "60a09a7f3795186954079869106aa89a64183b7be8e0da7cbbe9d57c66c9bcdb" ] && \ + rm -rf .aspera && \ mkdir -p .aspera/cli && \ tar xf aspera-cli-3.9.1-0.tar.bz2 -C .aspera/cli && \ rm aspera-cli-3.9.1-0.tar.bz2 @@ -23,20 +27,21 @@ RUN wget -q https://anaconda.org/HCC/aspera-cli/3.9.1/download/linux-64/aspera-c # Now that we're done installing Aspera go back to being root for a bit. USER root -RUN pip3 install --ignore-installed --no-cache-dir --upgrade pip && \ - pip3 install --ignore-installed --no-cache-dir rpy2==3.4.5 +RUN pip3 install --ignore-installed --upgrade pip && \ + pip3 install --ignore-installed rpy2==3.4.5 # Get the latest version from the dist directory. COPY common/dist/data-refinery-common-* common/ -RUN pip3 install --ignore-installed --no-cache-dir \ +RUN pip3 install --ignore-installed \ common/$(ls common -1 | sort --version-sort | tail -1) COPY workers/data_refinery_workers/downloaders/requirements.txt . -RUN pip3 install --ignore-installed --no-cache-dir -r requirements.txt +RUN pip3 install --ignore-installed -r requirements.txt && \ + # Clear out the pip3 cache. + rm -r /root/.cache ARG SYSTEM_VERSION - -ENV SYSTEM_VERSION $SYSTEM_VERSION +ENV SYSTEM_VERSION=$SYSTEM_VERSION USER user diff --git a/workers/dockerfiles/Dockerfile.illumina b/workers/dockerfiles/Dockerfile.illumina index 949c22405..fe65bf7ab 100644 --- a/workers/dockerfiles/Dockerfile.illumina +++ b/workers/dockerfiles/Dockerfile.illumina @@ -14,16 +14,18 @@ RUN Rscript dependencies.R # Get the latest version from the dist directory. COPY common/dist/data-refinery-common-* common/ -RUN pip3 install --ignore-installed --no-cache-dir \ +RUN pip3 install --ignore-installed \ common/$(ls common -1 | sort --version-sort | tail -1) -RUN pip3 install --ignore-installed --no-cache-dir --upgrade pip +RUN pip3 install --ignore-installed --upgrade pip + COPY workers/data_refinery_workers/processors/requirements.txt . -RUN pip3 install --ignore-installed -r requirements.txt +RUN pip3 install --ignore-installed -r requirements.txt && \ + # Clear out the pip3 cache. + rm -r /root/.cache ARG SYSTEM_VERSION - -ENV SYSTEM_VERSION $SYSTEM_VERSION +ENV SYSTEM_VERSION=$SYSTEM_VERSION USER user diff --git a/workers/dockerfiles/Dockerfile.no_op b/workers/dockerfiles/Dockerfile.no_op index a0cb7855e..7f55589d0 100644 --- a/workers/dockerfiles/Dockerfile.no_op +++ b/workers/dockerfiles/Dockerfile.no_op @@ -14,29 +14,30 @@ RUN Rscript install_gene_convert.R # Noop-specific. RUN mkdir -p gene_indexes WORKDIR /home/user/gene_indexes -ENV ID_REFINERY_URL https://zenodo.org/record/1410647/files/all_1536267482.zip +ENV ID_REFINERY_URL=https://zenodo.org/record/1410647/files/all_1536267482.zip RUN curl -O $ID_REFINERY_URL && \ echo $ID_REFINERY_URL > /etc/identifier_refinery_url && \ unzip *.zip && \ rm *.zip # End Noop-specific. -WORKDIR /home/user - -RUN pip3 install --ignore-installed --no-cache-dir --upgrade pip && \ - pip3 install --ignore-installed --no-cache-dir numpy - -COPY workers/data_refinery_workers/processors/requirements.txt . -RUN pip3 install --ignore-installed --no-cache-dir -r requirements.txt +WORKDIR /home/user/ # Get the latest version from the dist directory. COPY common/dist/data-refinery-common-* common/ -RUN pip3 install --ignore-installed --no-cache-dir \ +RUN pip3 install --ignore-installed \ common/$(ls common -1 | sort --version-sort | tail -1) -ARG SYSTEM_VERSION +RUN pip3 install --ignore-installed --upgrade pip && \ + pip3 install --ignore-installed numpy + +COPY workers/data_refinery_workers/processors/requirements.txt . +RUN pip3 install --ignore-installed -r requirements.txt && \ + # Clear out the pip3 cache. + rm -r /root/.cache -ENV SYSTEM_VERSION $SYSTEM_VERSION +ARG SYSTEM_VERSION +ENV SYSTEM_VERSION=$SYSTEM_VERSION USER user diff --git a/workers/dockerfiles/Dockerfile.salmon b/workers/dockerfiles/Dockerfile.salmon index 724ddac60..1bb8de6e6 100644 --- a/workers/dockerfiles/Dockerfile.salmon +++ b/workers/dockerfiles/Dockerfile.salmon @@ -10,11 +10,13 @@ WORKDIR /home/user # Salmon to work https://github.com/AlexsLemonade/refinebio/issues/1496. # This is something that should be considered when updating salmon, because # all samples from incomplete experiments must have salmon run on them again. -ENV SALMON_VERSION 0.13.1 +ENV SALMON_VERSION=0.13.1 -# On version 0.13.1 salmon was being extracted to a folder with an all lowercase name -# the options `-C` and `--strip-components` allow us to specify the name for the resulting file -RUN wget -q "https://github.com/COMBINE-lab/salmon/releases/download/v${SALMON_VERSION}/Salmon-${SALMON_VERSION}_linux_x86_64.tar.gz" && \ +# On version 0.13.1 salmon was being extracted to a folder with an all +# lowercase name the options `-C` and `--strip-components` allow us to specify +#the name for the resulting file. +RUN wget -q "https://github.com/COMBINE-lab/salmon/releases/download/\ +v${SALMON_VERSION}/Salmon-${SALMON_VERSION}_linux_x86_64.tar.gz" && \ mkdir "Salmon-${SALMON_VERSION}_linux_x86_64" && \ tar -xzf "Salmon-${SALMON_VERSION}_linux_x86_64.tar.gz" \ -C "Salmon-${SALMON_VERSION}_linux_x86_64" --strip-components 1 && \ @@ -30,16 +32,18 @@ RUN Rscript tximport_dependencies.R COPY workers/R/dependencies/tximport/install_tximport.R . RUN Rscript install_tximport.R -RUN pip3 install --ignore-installed --no-cache-dir --upgrade pip && \ - pip3 install --ignore-installed --no-cache-dir numpy +RUN pip3 install --ignore-installed --upgrade pip && \ + pip3 install --ignore-installed numpy # Get the latest version from the dist directory. COPY common/dist/data-refinery-common-* common/ -RUN pip3 install --ignore-installed --no-cache-dir \ +RUN pip3 install --ignore-installed \ common/$(ls common -1 | sort --version-sort | tail -1) COPY workers/data_refinery_workers/processors/requirements.txt . -RUN pip3 install --ignore-installed --no-cache-dir -r requirements.txt +RUN pip3 install --ignore-installed -r requirements.txt && \ + # Clear out the pip3 cache. + rm -r /root/.cache # Install SalmonTools. RUN git clone https://github.com/COMBINE-lab/SalmonTools.git && \ @@ -50,14 +54,14 @@ RUN git clone https://github.com/COMBINE-lab/SalmonTools.git && \ rm -rf SalmonTools # Install sra-tools. -ENV SRA_VERSION 2.9.1 -RUN wget -q "https://ftp.ncbi.nlm.nih.gov/sra/sdk/${SRA_VERSION}/sratoolkit.${SRA_VERSION}-ubuntu64.tar.gz" && \ +ENV SRA_VERSION=2.9.1 +RUN wget -q "https://ftp.ncbi.nlm.nih.gov/sra/sdk/${SRA_VERSION}/\ +sratoolkit.${SRA_VERSION}-ubuntu64.tar.gz" && \ tar zxfv "sratoolkit.${SRA_VERSION}-ubuntu64.tar.gz" && \ cp -r "sratoolkit.${SRA_VERSION}-ubuntu64/bin/"* /usr/bin ARG SYSTEM_VERSION - -ENV SYSTEM_VERSION $SYSTEM_VERSION +ENV SYSTEM_VERSION=$SYSTEM_VERSION USER user diff --git a/workers/dockerfiles/Dockerfile.smasher b/workers/dockerfiles/Dockerfile.smasher index 00ea02baa..ebdf924a4 100644 --- a/workers/dockerfiles/Dockerfile.smasher +++ b/workers/dockerfiles/Dockerfile.smasher @@ -1,30 +1,31 @@ -FROM ccdlstaging/dr_worker_base:latest +FROM ccdlstaging/dr_base:latest # Fail in case of an error at any stage in the pipe. SHELL ["/bin/bash", "-o", "pipefail", "-c"] WORKDIR /home/user -RUN pip3 install --no-cache-dir --upgrade pip && \ - pip3 install --ignore-installed --no-cache-dir nose numpy rpy2==3.4.5 +COPY workers/R/dependencies/qn/cran/dependencies.R . +RUN Rscript dependencies.R + +COPY workers/R/dependencies/qn/bioc/dependencies.R . +RUN Rscript dependencies.R + +RUN pip3 install --ignore-installed --upgrade pip && \ + pip3 install --ignore-installed nose numpy rpy2==3.4.5 # Get the latest version from the dist directory. COPY common/dist/data-refinery-common-* common/ -RUN pip3 install --ignore-installed --no-cache-dir \ +RUN pip3 install --ignore-installed \ common/$(ls common -1 | sort --version-sort | tail -1) COPY workers/data_refinery_workers/processors/requirements.txt . -RUN pip3 install --ignore-installed --no-cache-dir -r requirements.txt - -COPY workers/R/dependencies/qn/cran/dependencies.R . -RUN Rscript dependencies.R - -COPY workers/R/dependencies/qn/bioc/dependencies.R . -RUN Rscript dependencies.R +RUN pip3 install --ignore-installed -r requirements.txt && \ + # Clear out the pip3 cache. + rm -rf /root/.cache ARG SYSTEM_VERSION - -ENV SYSTEM_VERSION $SYSTEM_VERSION +ENV SYSTEM_VERSION=$SYSTEM_VERSION USER user diff --git a/workers/dockerfiles/Dockerfile.transcriptome b/workers/dockerfiles/Dockerfile.transcriptome index 1c04e7390..8ce0d974a 100644 --- a/workers/dockerfiles/Dockerfile.transcriptome +++ b/workers/dockerfiles/Dockerfile.transcriptome @@ -1,4 +1,4 @@ -FROM ccdlstaging/dr_worker_base:latest +FROM ccdlstaging/dr_base:latest # Fail in case of an error at any stage in the pipe. SHELL ["/bin/bash", "-o", "pipefail", "-c"] @@ -15,10 +15,11 @@ RUN git clone https://github.com/deweylab/RSEM.git && \ # Salmon to work https://github.com/AlexsLemonade/refinebio/issues/1496. # This is something that should be considered when updating salmon, because # all samples from incomplete experiments must have salmon run on them again. -ENV SALMON_VERSION 0.13.1 +ENV SALMON_VERSION=0.13.1 # Salmon can extract to a different directory than the name of the tar file. -RUN wget -q "https://github.com/COMBINE-lab/salmon/releases/download/v${SALMON_VERSION}/Salmon-${SALMON_VERSION}_linux_x86_64.tar.gz" && \ +RUN wget -q "https://github.com/COMBINE-lab/salmon/releases/download/\ +v${SALMON_VERSION}/Salmon-${SALMON_VERSION}_linux_x86_64.tar.gz" && \ tar -xzf "Salmon-${SALMON_VERSION}_linux_x86_64.tar.gz" && \ cp "$(tar -tzf Salmon-${SALMON_VERSION}_linux_x86_64.tar.gz | \ head -1 | cut -f1 -d '/')/bin/salmon" /usr/local/bin && \ @@ -27,19 +28,20 @@ RUN wget -q "https://github.com/COMBINE-lab/salmon/releases/download/v${SALMON_V rm -r Salmon* # End Salmon installation. -RUN pip3 install --ignore-installed --no-cache-dir --upgrade pip && \ - pip3 install --ignore-installed --no-cache-dir numpy +RUN pip3 install --ignore-installed --upgrade pip && \ + pip3 install --ignore-installed numpy COPY common/dist/data-refinery-common-* common/ -RUN pip3 install --ignore-installed --no-cache-dir \ +RUN pip3 install --ignore-installed \ common/$(ls common -1 | sort --version-sort | tail -1) COPY workers/data_refinery_workers/processors/requirements.txt . -RUN pip3 install --ignore-installed --no-cache-dir -r requirements.txt +RUN pip3 install --ignore-installed -r requirements.txt && \ + # Clear out the pip3 cache. + rm -rf /root/.cache ARG SYSTEM_VERSION - -ENV SYSTEM_VERSION $SYSTEM_VERSION +ENV SYSTEM_VERSION=$SYSTEM_VERSION USER user diff --git a/workers/dockerfiles/Dockerfile.worker_base b/workers/dockerfiles/Dockerfile.worker_base deleted file mode 100644 index d8f1a0588..000000000 --- a/workers/dockerfiles/Dockerfile.worker_base +++ /dev/null @@ -1,68 +0,0 @@ -FROM ubuntu:18.04 - -# Fail in case of an error at any stage in the pipe. -SHELL ["/bin/bash", "-o", "pipefail", "-c"] - -WORKDIR /home/user - -# Prevent tzdata from prompting us for a timezone and hanging the build. -ENV DEBIAN_FRONTEND=noninteractive - -# Source: https://github.com/thisbejim/Pyrebase/issues/87#issuecomment-354452082 -# For whatever reason this worked and 'en_US.UTF-8' did not. -ENV LANG=C.UTF-8 - -RUN apt-get update && \ - apt-get install --no-install-recommends -y software-properties-common && \ - add-apt-repository ppa:apt-fast/stable && \ - add-apt-repository ppa:deadsnakes/ppa && \ - add-apt-repository ppa:savoury1/llvm-defaults-10 && \ - apt-get update -qq && \ - apt-get install --no-install-recommends -y apt-fast apt-transport-https gpg-agent - -# The packages related to R are somewhat weird, see the README for more details. -COPY workers/CRAN.gpg . -RUN apt-key add CRAN.gpg && \ - echo "deb https://cloud.r-project.org/bin/linux/ubuntu bionic-cran35/" \ - >> /etc/apt/sources.list.d/added_repos.list - -RUN apt-fast update -qq && apt-fast install -y \ - build-essential \ - ccache \ - cmake \ - curl \ - cython3 \ - ed \ - git \ - libcairo-dev \ - libcurl4-gnutls-dev \ - libedit-dev \ - libgit2-dev \ - libpq-dev \ - libssl-dev \ - libxml2-dev \ - llvm-10-dev \ - lsb-release \ - mercurial \ - pkg-config \ - python3-pip \ - python3.8 \ - python3.8-dev \ - r-base-core \ - wget && \ - rm CRAN.gpg && \ - apt-get clean && \ - rm -rf /var/lib/apt/lists/* && \ - ln -s /usr/bin/llvm-config-10 /usr/bin/llvm-config && \ - update-alternatives --install /usr/bin/python3 python3 /usr/bin/python3.8 1 && \ - groupadd user && useradd --create-home --home-dir /home/user -g user user - -# Set up ccache. -COPY workers/ccache.conf /root/.ccache/ccache.conf -RUN for i in c++ cc g++ gcc; do ln -s /usr/bin/ccache /usr/local/bin/$i; done -ENV PATH="/usr/local/bin:${PATH}" - -# Pre-install dev tools. -ENV R_LIBS="/usr/local/lib/R/site-library" -COPY common/R/install_devtools.R . -RUN Rscript install_devtools.R From 13089441a9f96b8778fcb8852e62be26eb017b6d Mon Sep 17 00:00:00 2001 From: Arkadii Yakovets Date: Mon, 28 Nov 2022 10:42:12 -0800 Subject: [PATCH 051/220] Add another docker images update. --- workers/dockerfiles/Dockerfile.compendia | 8 +++----- workers/dockerfiles/Dockerfile.downloaders | 2 +- workers/dockerfiles/Dockerfile.illumina | 2 +- workers/dockerfiles/Dockerfile.no_op | 2 +- workers/dockerfiles/Dockerfile.salmon | 2 +- 5 files changed, 7 insertions(+), 9 deletions(-) diff --git a/workers/dockerfiles/Dockerfile.compendia b/workers/dockerfiles/Dockerfile.compendia index f2afa185f..4dd80559f 100644 --- a/workers/dockerfiles/Dockerfile.compendia +++ b/workers/dockerfiles/Dockerfile.compendia @@ -69,8 +69,8 @@ RUN echo debconf apt-fast/maxdownloads string 16 | debconf-set-selections && \ useradd --create-home --home-dir /home/user -g user user WORKDIR /home/user -RUN wget -q https://bitbucket.org/ariya/phantomjs/downloads/\ -phantomjs-2.1.1-linux-x86_64.tar.bz2 && \ +RUN wget "https://bitbucket.org/ariya/phantomjs/downloads/\ +phantomjs-2.1.1-linux-x86_64.tar.bz2" && \ tar xvjf phantomjs-2.1.1-linux-x86_64.tar.bz2 -C /usr/local/share/ && \ ln -s /usr/local/share/phantomjs-2.1.1-linux-x86_64/bin/phantomjs \ /usr/local/bin/ @@ -94,9 +94,7 @@ RUN pip3 install --ignore-installed --upgrade pip && \ COPY workers/data_refinery_workers/processors/requirements.txt . RUN pip3 install --ignore-installed -r requirements.txt && \ - # Pin setuptools as a workaround for - # https://github.com/pypa/setuptools/issues/3693 - pip3 install --ignore-installed setuptools==65.0.1 numpy==1.16.0 + pip3 install --ignore-installed numpy==1.16.0 # Get the latest version from the dist directory. COPY common/dist/data-refinery-common-* common/ diff --git a/workers/dockerfiles/Dockerfile.downloaders b/workers/dockerfiles/Dockerfile.downloaders index c65faf5dc..145d567e1 100644 --- a/workers/dockerfiles/Dockerfile.downloaders +++ b/workers/dockerfiles/Dockerfile.downloaders @@ -1,4 +1,4 @@ -FROM ccdlstaging/dr_worker_base:latest +FROM ccdlstaging/dr_base:latest # Fail in case of an error at any stage in the pipe. SHELL ["/bin/bash", "-o", "pipefail", "-c"] diff --git a/workers/dockerfiles/Dockerfile.illumina b/workers/dockerfiles/Dockerfile.illumina index fe65bf7ab..648d2e758 100644 --- a/workers/dockerfiles/Dockerfile.illumina +++ b/workers/dockerfiles/Dockerfile.illumina @@ -1,4 +1,4 @@ -FROM ccdlstaging/dr_worker_base:latest +FROM ccdlstaging/dr_base:latest # Fail in case of an error at any stage in the pipe. SHELL ["/bin/bash", "-o", "pipefail", "-c"] diff --git a/workers/dockerfiles/Dockerfile.no_op b/workers/dockerfiles/Dockerfile.no_op index 7f55589d0..8d55281ca 100644 --- a/workers/dockerfiles/Dockerfile.no_op +++ b/workers/dockerfiles/Dockerfile.no_op @@ -1,4 +1,4 @@ -FROM ccdlstaging/dr_worker_base:latest +FROM ccdlstaging/dr_base:latest # Fail in case of an error at any stage in the pipe. SHELL ["/bin/bash", "-o", "pipefail", "-c"] diff --git a/workers/dockerfiles/Dockerfile.salmon b/workers/dockerfiles/Dockerfile.salmon index 1bb8de6e6..b6395ef58 100644 --- a/workers/dockerfiles/Dockerfile.salmon +++ b/workers/dockerfiles/Dockerfile.salmon @@ -1,4 +1,4 @@ -FROM ccdlstaging/dr_worker_base:latest +FROM ccdlstaging/dr_base:latest # Fail in case of an error at any stage in the pipe. SHELL ["/bin/bash", "-o", "pipefail", "-c"] From 5e79a6ee007b46628d55f26b4a6ed18641cccb6c Mon Sep 17 00:00:00 2001 From: Arkadii Yakovets Date: Mon, 28 Nov 2022 15:24:59 -0800 Subject: [PATCH 052/220] Refactor API docker files. --- api/dockerfiles/Dockerfile.api_local | 26 +++++++++------- api/dockerfiles/Dockerfile.api_production | 36 +++++++++++++---------- 2 files changed, 35 insertions(+), 27 deletions(-) diff --git a/api/dockerfiles/Dockerfile.api_local b/api/dockerfiles/Dockerfile.api_local index 05dd00df1..c333aa29a 100644 --- a/api/dockerfiles/Dockerfile.api_local +++ b/api/dockerfiles/Dockerfile.api_local @@ -1,29 +1,33 @@ FROM python:3.8.5-slim-buster +# Fail in case of an error at any stage in the pipe. +SHELL ["/bin/bash", "-o", "pipefail", "-c"] + # Install gcc and libpq-dev for psycopg2. -RUN apt-get update -qq -RUN apt-get install -y \ - gcc \ - libpq-dev +RUN apt-get update -qq && \ + apt-get install -y \ + gcc \ + libpq-dev -RUN groupadd user && useradd --create-home --home-dir /home/user -g user user +RUN groupadd user && \ + useradd --create-home --home-dir /home/user -g user user WORKDIR /home/user -RUN pip install --upgrade pip - COPY api/requirements.txt . -RUN pip install -r requirements.txt +RUN pip install --upgrade pip && \ + pip install --ignore-installed -r requirements.txt && \ + rm -r /root/.cache # Get the latest version from the dist directory. COPY common/dist/data-refinery-common-* common/ -RUN pip install common/$(ls common -1 | sort --version-sort | tail -1) +RUN pip install --ignore-installed \ + common/$(ls common -1 | sort --version-sort | tail -1) COPY api/ . COPY config/ config/ ARG SYSTEM_VERSION - -ENV SYSTEM_VERSION $SYSTEM_VERSION +ENV SYSTEM_VERSION=$SYSTEM_VERSION USER user diff --git a/api/dockerfiles/Dockerfile.api_production b/api/dockerfiles/Dockerfile.api_production index a432610ff..37184be03 100644 --- a/api/dockerfiles/Dockerfile.api_production +++ b/api/dockerfiles/Dockerfile.api_production @@ -1,34 +1,38 @@ FROM python:3.8.5-buster +# Fail in case of an error at any stage in the pipe. +SHELL ["/bin/bash", "-o", "pipefail", "-c"] + # Install gcc and libpq-dev for psycopg2. -RUN apt-get update -qq -RUN apt-get install -y \ - gcc \ - libpq-dev +RUN apt-get update -qq && \ + apt-get install -y \ + gcc \ + libpq-dev -RUN groupadd user && useradd --create-home --home-dir /home/user -g user user +RUN groupadd user && \ + useradd --create-home --home-dir /home/user -g user user WORKDIR /home/user COPY api/requirements.txt . -RUN pip install -r requirements.txt +RUN pip install --upgrade pip && \ + pip install --ignore-installed -r requirements.txt && \ + pip install --ignore-installed uwsgi && \ + rm -r /root/.cache # Get the latest version from the dist directory. COPY common/dist/data-refinery-common-* common/ -RUN pip install common/$(ls common -1 | sort --version-sort | tail -1) - -# uWSGI. -RUN pip install uwsgi +RUN pip install --ignore-installed \ + common/$(ls common -1 | sort --version-sort | tail -1) COPY api/ . COPY config/ config/ -RUN chmod +x /home/user/collect_and_run_uwsgi.sh -RUN mkdir -p /tmp/www/static -RUN chown user /tmp/www/static +RUN chmod +x /home/user/collect_and_run_uwsgi.sh && \ + mkdir -p /tmp/www/static && \ + chown user /tmp/www/static ARG SYSTEM_VERSION - -ENV SYSTEM_VERSION $SYSTEM_VERSION +ENV SYSTEM_VERSION=$SYSTEM_VERSION USER user @@ -38,4 +42,4 @@ VOLUME /tmp/www/static EXPOSE 8081 -CMD ["/home/user/collect_and_run_uwsgi.sh"] +CMD ["sh", "-c", "/home/user/collect_and_run_uwsgi.sh"] From d72d10cd8bb4df068357647d7d5cf468d6d1b8df Mon Sep 17 00:00:00 2001 From: Arkadii Yakovets Date: Mon, 28 Nov 2022 16:31:37 -0800 Subject: [PATCH 053/220] Update foreman docker image. --- foreman/dockerfiles/Dockerfile.foreman | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/foreman/dockerfiles/Dockerfile.foreman b/foreman/dockerfiles/Dockerfile.foreman index f95cb393e..8fad92fd9 100644 --- a/foreman/dockerfiles/Dockerfile.foreman +++ b/foreman/dockerfiles/Dockerfile.foreman @@ -3,8 +3,6 @@ FROM ubuntu:18.04 # Fail in case of an error at any stage in the pipe. SHELL ["/bin/bash", "-o", "pipefail", "-c"] -WORKDIR /home/user - # Source: https://github.com/thisbejim/Pyrebase/issues/87#issuecomment-354452082 # For whatever reason this worked and 'en_US.UTF-8' did not. ENV LANG=C.UTF-8 @@ -24,25 +22,28 @@ RUN apt-get update -qq && \ python3 \ python3-pip && \ apt-get clean && \ + rm -rf /var/lib/apt/lists/* && \ groupadd user && \ useradd --create-home --home-dir /home/user -g user user && \ pip3 install --ignore-installed --no-cache-dir --upgrade pip +WORKDIR /home/user + # Get the latest version from the dist directory. COPY common/dist/data-refinery-common-* common/ -RUN pip3 install --ignore-installed --no-cache-dir \ +RUN pip3 install --ignore-installed \ common/$(ls common -1 | sort --version-sort | tail -1) COPY foreman/requirements.txt . -RUN pip3 install --ignore-installed --no-cache-dir -r requirements.txt +RUN pip3 install --ignore-installed -r requirements.txt && \ + rm -rf /root/.cache COPY .boto .boto COPY config config COPY foreman/ . ARG SYSTEM_VERSION - -ENV SYSTEM_VERSION $SYSTEM_VERSION +ENV SYSTEM_VERSION=$SYSTEM_VERSION USER user From 5fd3b1e90b5d5edf7361eae1f291ee0744b8df9d Mon Sep 17 00:00:00 2001 From: Arkadii Yakovets Date: Mon, 28 Nov 2022 18:17:38 -0800 Subject: [PATCH 054/220] Update common docker images. Reorder and clean up the instructions. --- common/dockerfiles/Dockerfile.common_tests | 75 +++-------- common/dockerfiles/Dockerfile.migrations | 21 ++-- common/requirements.in | 2 + common/requirements.txt | 140 +++++++++++++++------ 4 files changed, 134 insertions(+), 104 deletions(-) diff --git a/common/dockerfiles/Dockerfile.common_tests b/common/dockerfiles/Dockerfile.common_tests index da18704b2..c47468be6 100644 --- a/common/dockerfiles/Dockerfile.common_tests +++ b/common/dockerfiles/Dockerfile.common_tests @@ -1,79 +1,36 @@ -FROM ubuntu:18.04 +FROM ccdlstaging/dr_base:latest -RUN apt-get update -qq -RUN apt-get install -y software-properties-common -RUN add-apt-repository ppa:apt-fast/stable -RUN apt-get update -qq -RUN apt-get -y install apt-fast +# Fail in case of an error at any stage in the pipe. +SHELL ["/bin/bash", "-o", "pipefail", "-c"] -# Prevent tzdata from prompting us for a timezone and hanging the build. -ENV DEBIAN_FRONTEND=noninteractive - -# The packages related to R are somewhat weird, see the README for more details. - -COPY workers/CRAN.gpg . -RUN \ - apt-fast update -qq && \ - apt-get install -y apt-transport-https && \ - apt-fast install -y lsb-release && \ - echo "deb https://cloud.r-project.org/bin/linux/ubuntu bionic-cran35/" \ - >> /etc/apt/sources.list.d/added_repos.list && \ - apt-key add CRAN.gpg && \ - apt-fast update -qq && \ - apt-fast install -y \ - ed \ - git \ - python3 \ - python3-pip \ - python3-dev \ - r-base-core \ - r-base-dev \ - libpq-dev \ - libxml2-dev \ - libssl-dev \ - libcurl4-openssl-dev \ - curl \ - wget && \ - rm -rf /var/lib/apt/lists/* -RUN rm CRAN.gpg +# Source: https://github.com/thisbejim/Pyrebase/issues/87#issuecomment-354452082 +# For whatever reason this worked and 'en_US.UTF-8' did not. +ENV LANG=C.UTF-8 -RUN groupadd user && useradd --create-home --home-dir /home/user -g user user WORKDIR /home/user -ENV R_LIBS "/usr/local/lib/R/site-library" - -COPY common/install_devtools.R . - -RUN Rscript install_devtools.R - -COPY workers/install_bioc.R . +ENV R_LIBS=/usr/local/lib/R/site-library +COPY workers/R/dependencies/install_bioc.R . RUN Rscript install_bioc.R -COPY workers/install_affy_only.R . - +COPY workers/R/dependencies/affymetrix/install_affy_only.R . RUN Rscript install_affy_only.R -# Source: https://github.com/thisbejim/Pyrebase/issues/87#issuecomment-354452082 -# For whatever reason this worked and 'en_US.UTF-8' did not. -ENV LANG C.UTF-8 - COPY config config COPY common/requirements.txt . - -RUN pip3 install --no-cache-dir -r requirements.txt - -# Install this rpy2 here instead of via requirements.txt because -# pip-compile throws an error for it. -RUN pip3 install rpy2==3.4.5 +RUN pip3 install --ignore-installed -r requirements.txt && \ + # Install this rpy2 here instead of via requirements.txt because + # pip-compile throws an error for it. + pip3 install rpy2==3.4.5 && \ + rm -rf /root/.cache COPY common/ . ARG SYSTEM_VERSION - -ENV SYSTEM_VERSION $SYSTEM_VERSION +ENV SYSTEM_VERSION=$SYSTEM_VERSION USER user -ENTRYPOINT [""] +ENTRYPOINT [] diff --git a/common/dockerfiles/Dockerfile.migrations b/common/dockerfiles/Dockerfile.migrations index 7c042f255..e3f8c6fcb 100644 --- a/common/dockerfiles/Dockerfile.migrations +++ b/common/dockerfiles/Dockerfile.migrations @@ -1,21 +1,24 @@ FROM python:3.8.5-slim-buster -RUN groupadd user && useradd --create-home --home-dir /home/user -g user user -WORKDIR /home/user +# Fail in case of an error at any stage in the pipe. +SHELL ["/bin/bash", "-o", "pipefail", "-c"] -# Needed for migration 0006 -COPY config/ config +RUN groupadd user && \ + useradd --create-home --home-dir /home/user -g user user -COPY common/requirements.txt . +WORKDIR /home/user -RUN pip install -r requirements.txt +COPY common/requirements.txt . +RUN pip install --ignore-installed -r requirements.txt && \ + rm -rf /root/.cache COPY common/ . +# Needed for migration 0006. +COPY config config ARG SYSTEM_VERSION - -ENV SYSTEM_VERSION $SYSTEM_VERSION +ENV SYSTEM_VERSION=$SYSTEM_VERSION USER user -ENTRYPOINT [""] +ENTRYPOINT [] diff --git a/common/requirements.in b/common/requirements.in index a5d3e724a..54ef9542f 100644 --- a/common/requirements.in +++ b/common/requirements.in @@ -16,3 +16,5 @@ vcrpy django-computedfields>=0.1.5 pyyaml>=5.4 sqlparse>=0.4.2 +markupsafe==2.0.1 + # via jinja2 # via boto3, botocore diff --git a/common/requirements.txt b/common/requirements.txt index 088feeb37..a5f2f91a0 100644 --- a/common/requirements.txt +++ b/common/requirements.txt @@ -1,40 +1,108 @@ # -# This file is autogenerated by pip-compile +# This file is autogenerated by pip-compile with python 3.9 # To update, run: # -# pip-compile requirements.in +# pip-compile common/requirements.in # -asgiref==3.3.4 # via django -boto3==1.17.93 # via -r requirements.in -botocore==1.20.93 # via boto3, s3transfer -certifi==2021.5.30 # via requests -chardet==4.0.0 # via requests -coverage==5.5 # via -r requirements.in -daiquiri==3.0.0 # via -r requirements.in -django-computedfields==0.1.5 # via -r requirements.in -django-elasticsearch-dsl-drf==0.22.1 # via -r requirements.in -django-elasticsearch-dsl==6.5.0 # via -r requirements.in, django-elasticsearch-dsl-drf -django-nine==0.2.4 # via django-elasticsearch-dsl-drf -django==3.2.7 # via -r requirements.in, django-nine, djangorestframework -djangorestframework==3.12.4 # via -r requirements.in, django-elasticsearch-dsl-drf -elasticsearch-dsl==6.4.0 # via -r requirements.in, django-elasticsearch-dsl, django-elasticsearch-dsl-drf -elasticsearch==6.8.2 # via django-elasticsearch-dsl-drf, elasticsearch-dsl -idna==2.10 # via requests, yarl -jmespath==0.10.0 # via boto3, botocore -multidict==5.1.0 # via yarl -psycopg2-binary==2.8.6 # via -r requirements.in -python-dateutil==2.8.1 # via botocore, elasticsearch-dsl -python-json-logger==2.0.1 # via daiquiri -pytz==2021.1 # via django -pyyaml==5.4.1 # via -r requirements.in, vcrpy -raven==6.10.0 # via -r requirements.in -requests==2.25.1 # via -r requirements.in -retrying==1.3.3 # via -r requirements.in -s3transfer==0.4.2 # via boto3 -six==1.16.0 # via django-elasticsearch-dsl, django-elasticsearch-dsl-drf, elasticsearch-dsl, python-dateutil, retrying, vcrpy -sqlparse==0.4.2 # via -r requirements.in, django -typing-extensions==3.10.0.0 # via asgiref, yarl -urllib3==1.26.5 # via -r requirements.in, botocore, elasticsearch, requests -vcrpy==4.1.1 # via -r requirements.in -wrapt==1.12.1 # via vcrpy -yarl==1.6.3 # via vcrpy +asgiref==3.3.4 + # via django +boto3==1.17.93 + # via -r common/requirements.in +botocore==1.20.93 + # via + # boto3 + # s3transfer +certifi==2021.5.30 + # via requests +chardet==4.0.0 + # via requests +coverage==5.5 + # via -r common/requirements.in +daiquiri==3.0.0 + # via -r common/requirements.in +django==3.2.7 + # via + # -r common/requirements.in + # django-nine + # djangorestframework +django-computedfields==0.1.5 + # via -r common/requirements.in +django-elasticsearch-dsl==6.5.0 + # via + # -r common/requirements.in + # django-elasticsearch-dsl-drf +django-elasticsearch-dsl-drf==0.22.1 + # via -r common/requirements.in +django-nine==0.2.4 + # via django-elasticsearch-dsl-drf +djangorestframework==3.12.4 + # via + # -r common/requirements.in + # django-elasticsearch-dsl-drf +elasticsearch==6.8.2 + # via + # django-elasticsearch-dsl-drf + # elasticsearch-dsl +elasticsearch-dsl==6.4.0 + # via + # -r common/requirements.in + # django-elasticsearch-dsl + # django-elasticsearch-dsl-drf +idna==2.10 + # via + # requests + # yarl +jmespath==0.10.0 + # via + # boto3 + # botocore +markupsafe==2.0.1 + # via -r common/requirements.in +multidict==5.1.0 + # via yarl +psycopg2-binary==2.8.6 + # via -r common/requirements.in +python-dateutil==2.8.1 + # via + # botocore + # elasticsearch-dsl +python-json-logger==2.0.1 + # via daiquiri +pytz==2021.1 + # via django +pyyaml==5.4.1 + # via + # -r common/requirements.in + # vcrpy +raven==6.10.0 + # via -r common/requirements.in +requests==2.25.1 + # via -r common/requirements.in +retrying==1.3.3 + # via -r common/requirements.in +s3transfer==0.4.2 + # via boto3 +six==1.16.0 + # via + # django-elasticsearch-dsl + # django-elasticsearch-dsl-drf + # elasticsearch-dsl + # python-dateutil + # retrying + # vcrpy +sqlparse==0.4.2 + # via + # -r common/requirements.in + # django +urllib3==1.26.5 + # via + # -r common/requirements.in + # botocore + # elasticsearch + # requests +vcrpy==4.1.1 + # via -r common/requirements.in +wrapt==1.12.1 + # via vcrpy +yarl==1.6.3 + # via vcrpy From f7191badbd0d28d8ef944bd91e5287d8ba3a918b Mon Sep 17 00:00:00 2001 From: Arkadii Yakovets Date: Thu, 1 Dec 2022 17:05:49 -0800 Subject: [PATCH 055/220] Optimize docker images, put cache invalidating instructions to the tail. --- .pre-commit-config.yaml | 2 +- .../dockerfiles/Dockerfile.affymetrix_local | 10 +-- workers/dockerfiles/Dockerfile.compendia | 36 +++++------ workers/dockerfiles/Dockerfile.downloaders | 34 +++++------ workers/dockerfiles/Dockerfile.illumina | 25 ++++---- workers/dockerfiles/Dockerfile.no_op | 35 +++++------ workers/dockerfiles/Dockerfile.salmon | 61 +++++++++---------- workers/dockerfiles/Dockerfile.smasher | 19 +++--- workers/dockerfiles/Dockerfile.transcriptome | 29 +++++---- 9 files changed, 124 insertions(+), 127 deletions(-) diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index d024704da..b651ce24a 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -22,7 +22,7 @@ repos: - id: isort - repo: https://github.com/psf/black - rev: 19.10b0 + rev: 22.3.0 hooks: - id: black args: [--line-length=100] diff --git a/workers/dockerfiles/Dockerfile.affymetrix_local b/workers/dockerfiles/Dockerfile.affymetrix_local index 7f1af8ad6..08db9e197 100644 --- a/workers/dockerfiles/Dockerfile.affymetrix_local +++ b/workers/dockerfiles/Dockerfile.affymetrix_local @@ -6,20 +6,20 @@ SHELL ["/bin/bash", "-o", "pipefail", "-c"] WORKDIR /home/user # Remove the version of common already installed. -RUN rm -r common && \ +RUN rm -rf common && \ pip3 uninstall -y data_refinery_common # Get the latest version from the dist directory. COPY common/dist/data-refinery-common-* common/ RUN pip3 install --ignore-installed --no-cache-dir \ - common/$(ls common -1 | sort --version-sort | tail -1) + common/$(ls common -1 | sort --version-sort | tail -1) + +COPY config/ config/ +COPY workers/ . ARG SYSTEM_VERSION ENV SYSTEM_VERSION=$SYSTEM_VERSION USER user -COPY config/ config/ -COPY workers/ . - ENTRYPOINT [] diff --git a/workers/dockerfiles/Dockerfile.compendia b/workers/dockerfiles/Dockerfile.compendia index 4dd80559f..9a44a7ecc 100644 --- a/workers/dockerfiles/Dockerfile.compendia +++ b/workers/dockerfiles/Dockerfile.compendia @@ -69,11 +69,6 @@ RUN echo debconf apt-fast/maxdownloads string 16 | debconf-set-selections && \ useradd --create-home --home-dir /home/user -g user user WORKDIR /home/user -RUN wget "https://bitbucket.org/ariya/phantomjs/downloads/\ -phantomjs-2.1.1-linux-x86_64.tar.bz2" && \ - tar xvjf phantomjs-2.1.1-linux-x86_64.tar.bz2 -C /usr/local/share/ && \ - ln -s /usr/local/share/phantomjs-2.1.1-linux-x86_64/bin/phantomjs \ - /usr/local/bin/ # We need a few special packages for QN. ENV R_LIBS=/usr/local/lib/R/site-library @@ -86,28 +81,35 @@ RUN Rscript dependencies.R COPY workers/R/dependencies/qn/bioc/dependencies.R . RUN Rscript dependencies.R -# End QN-specific - -RUN pip3 install --ignore-installed --upgrade pip && \ - pip3 install --ignore-installed numpy scipy matplotlib \ - pandas==0.25.3 scikit-learn sympy nose rpy2===3.4.5 tzlocal fancySVD +# End QN-specific. COPY workers/data_refinery_workers/processors/requirements.txt . -RUN pip3 install --ignore-installed -r requirements.txt && \ - pip3 install --ignore-installed numpy==1.16.0 +RUN pip3 install --ignore-installed --upgrade pip && \ + pip3 install --ignore-installed nose numpy scipy matplotlib \ + pandas==0.25.3 scikit-learn sympy rpy2===3.4.5 tzlocal fancySVD && \ + pip3 install --ignore-installed -r requirements.txt && \ + pip3 install --ignore-installed numpy==1.16.0 && \ + # Clear out the pip cache. + rm -rf /root/.cache # Get the latest version from the dist directory. COPY common/dist/data-refinery-common-* common/ RUN pip3 install --ignore-installed \ - common/$(ls common -1 | sort --version-sort | tail -1) + common/$(ls common -1 | sort --version-sort | tail -1) && \ + # Install phantomjs. + wget "https://bitbucket.org/ariya/phantomjs/downloads/\ +phantomjs-2.1.1-linux-x86_64.tar.bz2" && \ + tar xvjf phantomjs-2.1.1-linux-x86_64.tar.bz2 -C /usr/local/share/ && \ + ln -s /usr/local/share/phantomjs-2.1.1-linux-x86_64/bin/phantomjs \ + /usr/local/bin/ + +COPY .boto .boto +COPY config/ config/ +COPY workers/ . ARG SYSTEM_VERSION ENV SYSTEM_VERSION=$SYSTEM_VERSION USER user -COPY .boto .boto -COPY config/ config/ -COPY workers/ . - ENTRYPOINT [] diff --git a/workers/dockerfiles/Dockerfile.downloaders b/workers/dockerfiles/Dockerfile.downloaders index 145d567e1..02917518d 100644 --- a/workers/dockerfiles/Dockerfile.downloaders +++ b/workers/dockerfiles/Dockerfile.downloaders @@ -8,13 +8,24 @@ WORKDIR /home/user COPY workers/R/dependencies/install_downloader_R_only.R . RUN Rscript install_downloader_R_only.R +COPY workers/data_refinery_workers/downloaders/requirements.txt . +RUN pip3 install --ignore-installed --upgrade pip && \ + pip3 install --ignore-installed rpy2==3.4.5 && \ + pip3 install --ignore-installed -r requirements.txt && \ + # Clear out the pip cache. + rm -rf /root/.cache + +# Get the latest version from the dist directory. +COPY common/dist/data-refinery-common-* common/ +RUN pip3 install --ignore-installed \ + common/$(ls common -1 | sort --version-sort | tail -1) + # Aspera will only install as the current user. # Even using `su - user &&` doesn't work... - USER user + # Install Aspera. We have to install it using Holland Computing Center's conda # repo because download.asperasoft.com now returns 403s - RUN wget -q "https://anaconda.org/HCC/aspera-cli/3.9.1/download/\ linux-64/aspera-cli-3.9.1-0.tar.bz2" && \ [ "$(sha256sum aspera-cli-3.9.1-0.tar.bz2 | cut -d ' ' -f1)" =\ @@ -27,26 +38,13 @@ linux-64/aspera-cli-3.9.1-0.tar.bz2" && \ # Now that we're done installing Aspera go back to being root for a bit. USER root -RUN pip3 install --ignore-installed --upgrade pip && \ - pip3 install --ignore-installed rpy2==3.4.5 - -# Get the latest version from the dist directory. -COPY common/dist/data-refinery-common-* common/ -RUN pip3 install --ignore-installed \ - common/$(ls common -1 | sort --version-sort | tail -1) - -COPY workers/data_refinery_workers/downloaders/requirements.txt . -RUN pip3 install --ignore-installed -r requirements.txt && \ - # Clear out the pip3 cache. - rm -r /root/.cache +COPY .boto .boto +COPY config config +COPY workers/ . ARG SYSTEM_VERSION ENV SYSTEM_VERSION=$SYSTEM_VERSION USER user -COPY .boto .boto -COPY config config -COPY workers/ . - ENTRYPOINT [] diff --git a/workers/dockerfiles/Dockerfile.illumina b/workers/dockerfiles/Dockerfile.illumina index 648d2e758..e578b0b69 100644 --- a/workers/dockerfiles/Dockerfile.illumina +++ b/workers/dockerfiles/Dockerfile.illumina @@ -12,22 +12,16 @@ RUN Rscript dependencies.R COPY workers/R/dependencies/illumina/bioc/dependencies.R . RUN Rscript dependencies.R +COPY workers/data_refinery_workers/processors/requirements.txt . +RUN pip3 install --ignore-installed --upgrade pip && \ + pip3 install --ignore-installed -r requirements.txt && \ + # Clear out the pip cache. + rm -rf /root/.cache + # Get the latest version from the dist directory. COPY common/dist/data-refinery-common-* common/ RUN pip3 install --ignore-installed \ - common/$(ls common -1 | sort --version-sort | tail -1) - -RUN pip3 install --ignore-installed --upgrade pip - -COPY workers/data_refinery_workers/processors/requirements.txt . -RUN pip3 install --ignore-installed -r requirements.txt && \ - # Clear out the pip3 cache. - rm -r /root/.cache - -ARG SYSTEM_VERSION -ENV SYSTEM_VERSION=$SYSTEM_VERSION - -USER user + common/$(ls common -1 | sort --version-sort | tail -1) COPY .boto .boto COPY config/ config/ @@ -35,4 +29,9 @@ COPY workers/ . COPY workers/data_refinery_workers/processors/detect_database.R . COPY workers/illumina_probe_maps/ probe_maps/ +ARG SYSTEM_VERSION +ENV SYSTEM_VERSION=$SYSTEM_VERSION + +USER user + ENTRYPOINT [] diff --git a/workers/dockerfiles/Dockerfile.no_op b/workers/dockerfiles/Dockerfile.no_op index 8d55281ca..0d98229ee 100644 --- a/workers/dockerfiles/Dockerfile.no_op +++ b/workers/dockerfiles/Dockerfile.no_op @@ -11,9 +11,23 @@ RUN Rscript dependencies.R COPY workers/R/dependencies/no_op/install_gene_convert.R . RUN Rscript install_gene_convert.R +COPY workers/data_refinery_workers/processors/requirements.txt . +RUN pip3 install --ignore-installed --upgrade pip && \ + pip3 install --ignore-installed numpy && \ + pip3 install --ignore-installed -r requirements.txt && \ + # Clear out the pip cache. + rm -rf /root/.cache + +# Get the latest version from the dist directory. +COPY common/dist/data-refinery-common-* common/ +RUN pip3 install --ignore-installed \ + common/$(ls common -1 | sort --version-sort | tail -1) + # Noop-specific. RUN mkdir -p gene_indexes + WORKDIR /home/user/gene_indexes + ENV ID_REFINERY_URL=https://zenodo.org/record/1410647/files/all_1536267482.zip RUN curl -O $ID_REFINERY_URL && \ echo $ID_REFINERY_URL > /etc/identifier_refinery_url && \ @@ -21,28 +35,15 @@ RUN curl -O $ID_REFINERY_URL && \ rm *.zip # End Noop-specific. -WORKDIR /home/user/ - -# Get the latest version from the dist directory. -COPY common/dist/data-refinery-common-* common/ -RUN pip3 install --ignore-installed \ - common/$(ls common -1 | sort --version-sort | tail -1) - -RUN pip3 install --ignore-installed --upgrade pip && \ - pip3 install --ignore-installed numpy +WORKDIR /home/user -COPY workers/data_refinery_workers/processors/requirements.txt . -RUN pip3 install --ignore-installed -r requirements.txt && \ - # Clear out the pip3 cache. - rm -r /root/.cache +COPY .boto .boto +COPY config/ config/ +COPY workers/ . ARG SYSTEM_VERSION ENV SYSTEM_VERSION=$SYSTEM_VERSION USER user -COPY .boto .boto -COPY config/ config/ -COPY workers/ . - ENTRYPOINT [] diff --git a/workers/dockerfiles/Dockerfile.salmon b/workers/dockerfiles/Dockerfile.salmon index b6395ef58..b4493b2e9 100644 --- a/workers/dockerfiles/Dockerfile.salmon +++ b/workers/dockerfiles/Dockerfile.salmon @@ -5,6 +5,25 @@ SHELL ["/bin/bash", "-o", "pipefail", "-c"] WORKDIR /home/user +COPY workers/R/dependencies/tximport/cran/dependencies.R tximport_dependencies.R +RUN Rscript tximport_dependencies.R + +# Install tximport. +COPY workers/R/dependencies/tximport/install_tximport.R . +RUN Rscript install_tximport.R + +COPY workers/data_refinery_workers/processors/requirements.txt . +RUN pip3 install --ignore-installed --upgrade pip && \ + pip3 install --ignore-installed numpy && \ + pip3 install --ignore-installed -r requirements.txt && \ + # Clear out the pip cache. + rm -rf /root/.cache + +# Get the latest version from the dist directory. +COPY common/dist/data-refinery-common-* common/ +RUN pip3 install --ignore-installed \ + common/$(ls common -1 | sort --version-sort | tail -1) + # Install Salmon # Tximport requires all experiments to be processed with the same version of # Salmon to work https://github.com/AlexsLemonade/refinebio/issues/1496. @@ -25,48 +44,28 @@ v${SALMON_VERSION}/Salmon-${SALMON_VERSION}_linux_x86_64.tar.gz" && \ rm -f "Salmon-${SALMON_VERSION}_linux_x86_64.tar.gz" # End Salmon installation. -COPY workers/R/dependencies/tximport/cran/dependencies.R tximport_dependencies.R -RUN Rscript tximport_dependencies.R - -# Install tximport. -COPY workers/R/dependencies/tximport/install_tximport.R . -RUN Rscript install_tximport.R - -RUN pip3 install --ignore-installed --upgrade pip && \ - pip3 install --ignore-installed numpy - -# Get the latest version from the dist directory. -COPY common/dist/data-refinery-common-* common/ -RUN pip3 install --ignore-installed \ - common/$(ls common -1 | sort --version-sort | tail -1) - -COPY workers/data_refinery_workers/processors/requirements.txt . -RUN pip3 install --ignore-installed -r requirements.txt && \ - # Clear out the pip3 cache. - rm -r /root/.cache - -# Install SalmonTools. -RUN git clone https://github.com/COMBINE-lab/SalmonTools.git && \ +ENV SRA_VERSION=2.9.1 +RUN \ + # Install SalmonTools. + git clone https://github.com/COMBINE-lab/SalmonTools.git && \ cd SalmonTools && \ git checkout 3e6654c2c10a5225498b623056993947fa688afc && \ cmake . -DCMAKE_INSTALL_PREFIX=/usr/local && \ make install && \ - rm -rf SalmonTools - -# Install sra-tools. -ENV SRA_VERSION=2.9.1 -RUN wget -q "https://ftp.ncbi.nlm.nih.gov/sra/sdk/${SRA_VERSION}/\ + rm -rf SalmonTools && \ + # Install sra-tools. + wget -q "https://ftp.ncbi.nlm.nih.gov/sra/sdk/${SRA_VERSION}/\ sratoolkit.${SRA_VERSION}-ubuntu64.tar.gz" && \ tar zxfv "sratoolkit.${SRA_VERSION}-ubuntu64.tar.gz" && \ cp -r "sratoolkit.${SRA_VERSION}-ubuntu64/bin/"* /usr/bin +COPY .boto .boto +COPY config/ config/ +COPY workers/ . + ARG SYSTEM_VERSION ENV SYSTEM_VERSION=$SYSTEM_VERSION USER user -COPY .boto .boto -COPY config/ config/ -COPY workers/ . - ENTRYPOINT [] diff --git a/workers/dockerfiles/Dockerfile.smasher b/workers/dockerfiles/Dockerfile.smasher index ebdf924a4..bdf146474 100644 --- a/workers/dockerfiles/Dockerfile.smasher +++ b/workers/dockerfiles/Dockerfile.smasher @@ -11,26 +11,25 @@ RUN Rscript dependencies.R COPY workers/R/dependencies/qn/bioc/dependencies.R . RUN Rscript dependencies.R +COPY workers/data_refinery_workers/processors/requirements.txt . RUN pip3 install --ignore-installed --upgrade pip && \ - pip3 install --ignore-installed nose numpy rpy2==3.4.5 + pip3 install --ignore-installed nose numpy rpy2==3.4.5 && \ + pip3 install --ignore-installed -r requirements.txt && \ + # Clear out the pip cache. + rm -rf /root/.cache # Get the latest version from the dist directory. COPY common/dist/data-refinery-common-* common/ RUN pip3 install --ignore-installed \ - common/$(ls common -1 | sort --version-sort | tail -1) + common/$(ls common -1 | sort --version-sort | tail -1) -COPY workers/data_refinery_workers/processors/requirements.txt . -RUN pip3 install --ignore-installed -r requirements.txt && \ - # Clear out the pip3 cache. - rm -rf /root/.cache +COPY .boto .boto +COPY config/ config/ +COPY workers/ . ARG SYSTEM_VERSION ENV SYSTEM_VERSION=$SYSTEM_VERSION USER user -COPY .boto .boto -COPY config/ config/ -COPY workers/ . - ENTRYPOINT [] diff --git a/workers/dockerfiles/Dockerfile.transcriptome b/workers/dockerfiles/Dockerfile.transcriptome index 8ce0d974a..ae75c87a8 100644 --- a/workers/dockerfiles/Dockerfile.transcriptome +++ b/workers/dockerfiles/Dockerfile.transcriptome @@ -5,6 +5,17 @@ SHELL ["/bin/bash", "-o", "pipefail", "-c"] WORKDIR /home/user +COPY workers/data_refinery_workers/processors/requirements.txt . +RUN pip3 install --ignore-installed --upgrade pip && \ + pip3 install --ignore-installed numpy && \ + pip3 install --ignore-installed -r requirements.txt && \ + # Clear out the pip cache. + rm -rf /root/.cache + +COPY common/dist/data-refinery-common-* common/ +RUN pip3 install --ignore-installed \ + common/$(ls common -1 | sort --version-sort | tail -1) + # It's annoying that this can only be installed via git. RUN git clone https://github.com/deweylab/RSEM.git && \ cd RSEM && make install && \ @@ -28,25 +39,13 @@ v${SALMON_VERSION}/Salmon-${SALMON_VERSION}_linux_x86_64.tar.gz" && \ rm -r Salmon* # End Salmon installation. -RUN pip3 install --ignore-installed --upgrade pip && \ - pip3 install --ignore-installed numpy - -COPY common/dist/data-refinery-common-* common/ -RUN pip3 install --ignore-installed \ - common/$(ls common -1 | sort --version-sort | tail -1) - -COPY workers/data_refinery_workers/processors/requirements.txt . -RUN pip3 install --ignore-installed -r requirements.txt && \ - # Clear out the pip3 cache. - rm -rf /root/.cache +COPY .boto .boto +COPY config/ config/ +COPY workers/ . ARG SYSTEM_VERSION ENV SYSTEM_VERSION=$SYSTEM_VERSION USER user -COPY .boto .boto -COPY config/ config/ -COPY workers/ . - ENTRYPOINT [] From 8b8de4e0d600576be19aa0475d47cfea07e7cfd1 Mon Sep 17 00:00:00 2001 From: Arkadii Yakovets Date: Fri, 2 Dec 2022 10:51:06 -0800 Subject: [PATCH 056/220] Add `--no-cache-dir`, optimize order. --- common/dockerfiles/Dockerfile.common_tests | 11 ++++------- common/dockerfiles/Dockerfile.migrations | 3 +-- 2 files changed, 5 insertions(+), 9 deletions(-) diff --git a/common/dockerfiles/Dockerfile.common_tests b/common/dockerfiles/Dockerfile.common_tests index c47468be6..d795603d7 100644 --- a/common/dockerfiles/Dockerfile.common_tests +++ b/common/dockerfiles/Dockerfile.common_tests @@ -6,27 +6,24 @@ SHELL ["/bin/bash", "-o", "pipefail", "-c"] # Source: https://github.com/thisbejim/Pyrebase/issues/87#issuecomment-354452082 # For whatever reason this worked and 'en_US.UTF-8' did not. ENV LANG=C.UTF-8 +ENV R_LIBS=/usr/local/lib/R/site-library WORKDIR /home/user -ENV R_LIBS=/usr/local/lib/R/site-library - COPY workers/R/dependencies/install_bioc.R . RUN Rscript install_bioc.R COPY workers/R/dependencies/affymetrix/install_affy_only.R . RUN Rscript install_affy_only.R -COPY config config - COPY common/requirements.txt . -RUN pip3 install --ignore-installed -r requirements.txt && \ +RUN pip3 install --ignore-installed --no-cache-dir -r requirements.txt && \ # Install this rpy2 here instead of via requirements.txt because # pip-compile throws an error for it. - pip3 install rpy2==3.4.5 && \ - rm -rf /root/.cache + pip3 install --ignore-installed --no-cache-dir rpy2==3.4.5 COPY common/ . +COPY config config ARG SYSTEM_VERSION ENV SYSTEM_VERSION=$SYSTEM_VERSION diff --git a/common/dockerfiles/Dockerfile.migrations b/common/dockerfiles/Dockerfile.migrations index e3f8c6fcb..f91316128 100644 --- a/common/dockerfiles/Dockerfile.migrations +++ b/common/dockerfiles/Dockerfile.migrations @@ -9,8 +9,7 @@ RUN groupadd user && \ WORKDIR /home/user COPY common/requirements.txt . -RUN pip install --ignore-installed -r requirements.txt && \ - rm -rf /root/.cache +RUN pip install --ignore-installed --no-cache-dir -r requirements.txt COPY common/ . # Needed for migration 0006. From 28209606cbbba184875693f0ba637c9b1d4432f3 Mon Sep 17 00:00:00 2001 From: Arkadii Yakovets Date: Fri, 2 Dec 2022 10:55:05 -0800 Subject: [PATCH 057/220] Add `--no-cache-dir`. --- foreman/dockerfiles/Dockerfile.foreman | 13 ++++++------- 1 file changed, 6 insertions(+), 7 deletions(-) diff --git a/foreman/dockerfiles/Dockerfile.foreman b/foreman/dockerfiles/Dockerfile.foreman index 8fad92fd9..043ab3700 100644 --- a/foreman/dockerfiles/Dockerfile.foreman +++ b/foreman/dockerfiles/Dockerfile.foreman @@ -25,18 +25,17 @@ RUN apt-get update -qq && \ rm -rf /var/lib/apt/lists/* && \ groupadd user && \ useradd --create-home --home-dir /home/user -g user user && \ - pip3 install --ignore-installed --no-cache-dir --upgrade pip + pip3 install --ignore-installed --upgrade pip WORKDIR /home/user +COPY foreman/requirements.txt . +RUN pip3 install --ignore-installed --no-cache-dir -r requirements.txt + # Get the latest version from the dist directory. COPY common/dist/data-refinery-common-* common/ -RUN pip3 install --ignore-installed \ - common/$(ls common -1 | sort --version-sort | tail -1) - -COPY foreman/requirements.txt . -RUN pip3 install --ignore-installed -r requirements.txt && \ - rm -rf /root/.cache +RUN pip3 install --ignore-installed --no-cache-dir \ + common/$(ls common -1 | sort --version-sort | tail -1) COPY .boto .boto COPY config config From a10865346ddce740acdbc1d6f6bb9513c94f03f5 Mon Sep 17 00:00:00 2001 From: Arkadii Yakovets Date: Fri, 2 Dec 2022 17:04:51 -0800 Subject: [PATCH 058/220] Add `--no-cache-dir` to pip. Move common package intallation to the bottom. --- workers/dockerfiles/Dockerfile.compendia | 23 +++++++++---------- workers/dockerfiles/Dockerfile.downloaders | 18 +++++++-------- workers/dockerfiles/Dockerfile.illumina | 8 +++---- workers/dockerfiles/Dockerfile.no_op | 18 +++++++-------- workers/dockerfiles/Dockerfile.salmon | 24 +++++++++----------- workers/dockerfiles/Dockerfile.smasher | 10 ++++---- workers/dockerfiles/Dockerfile.transcriptome | 21 ++++++++--------- 7 files changed, 54 insertions(+), 68 deletions(-) diff --git a/workers/dockerfiles/Dockerfile.compendia b/workers/dockerfiles/Dockerfile.compendia index 9a44a7ecc..8790d859c 100644 --- a/workers/dockerfiles/Dockerfile.compendia +++ b/workers/dockerfiles/Dockerfile.compendia @@ -84,25 +84,24 @@ RUN Rscript dependencies.R # End QN-specific. COPY workers/data_refinery_workers/processors/requirements.txt . -RUN pip3 install --ignore-installed --upgrade pip && \ - pip3 install --ignore-installed nose numpy scipy matplotlib \ +RUN pip3 install --ignore-installed --no-cache-dir --upgrade pip && \ + pip3 install --ignore-installed --no-cache-dir nose numpy scipy matplotlib \ pandas==0.25.3 scikit-learn sympy rpy2===3.4.5 tzlocal fancySVD && \ - pip3 install --ignore-installed -r requirements.txt && \ - pip3 install --ignore-installed numpy==1.16.0 && \ - # Clear out the pip cache. - rm -rf /root/.cache + pip3 install --ignore-installed --no-cache-dir -r requirements.txt && \ + pip3 install --ignore-installed --no-cache-dir numpy==1.16.0 -# Get the latest version from the dist directory. -COPY common/dist/data-refinery-common-* common/ -RUN pip3 install --ignore-installed \ - common/$(ls common -1 | sort --version-sort | tail -1) && \ - # Install phantomjs. - wget "https://bitbucket.org/ariya/phantomjs/downloads/\ +# Install phantomjs. +RUN wget -q "https://bitbucket.org/ariya/phantomjs/downloads/\ phantomjs-2.1.1-linux-x86_64.tar.bz2" && \ tar xvjf phantomjs-2.1.1-linux-x86_64.tar.bz2 -C /usr/local/share/ && \ ln -s /usr/local/share/phantomjs-2.1.1-linux-x86_64/bin/phantomjs \ /usr/local/bin/ +# Get the latest version from the dist directory. +COPY common/dist/data-refinery-common-* common/ +RUN pip3 install --ignore-installed --no-cache-dir \ + common/$(ls common -1 | sort --version-sort | tail -1) + COPY .boto .boto COPY config/ config/ COPY workers/ . diff --git a/workers/dockerfiles/Dockerfile.downloaders b/workers/dockerfiles/Dockerfile.downloaders index 02917518d..9b611956d 100644 --- a/workers/dockerfiles/Dockerfile.downloaders +++ b/workers/dockerfiles/Dockerfile.downloaders @@ -9,16 +9,9 @@ COPY workers/R/dependencies/install_downloader_R_only.R . RUN Rscript install_downloader_R_only.R COPY workers/data_refinery_workers/downloaders/requirements.txt . -RUN pip3 install --ignore-installed --upgrade pip && \ - pip3 install --ignore-installed rpy2==3.4.5 && \ - pip3 install --ignore-installed -r requirements.txt && \ - # Clear out the pip cache. - rm -rf /root/.cache - -# Get the latest version from the dist directory. -COPY common/dist/data-refinery-common-* common/ -RUN pip3 install --ignore-installed \ - common/$(ls common -1 | sort --version-sort | tail -1) +RUN pip3 install --ignore-installed --no-cache-dir --upgrade pip && \ + pip3 install --ignore-installed --no-cache-dir rpy2==3.4.5 && \ + pip3 install --ignore-installed --no-cache-dir -r requirements.txt # Aspera will only install as the current user. # Even using `su - user &&` doesn't work... @@ -38,6 +31,11 @@ linux-64/aspera-cli-3.9.1-0.tar.bz2" && \ # Now that we're done installing Aspera go back to being root for a bit. USER root +# Get the latest version from the dist directory. +COPY common/dist/data-refinery-common-* common/ +RUN pip3 install --ignore-installed --no-cache-dir \ + common/$(ls common -1 | sort --version-sort | tail -1) + COPY .boto .boto COPY config config COPY workers/ . diff --git a/workers/dockerfiles/Dockerfile.illumina b/workers/dockerfiles/Dockerfile.illumina index e578b0b69..200b37725 100644 --- a/workers/dockerfiles/Dockerfile.illumina +++ b/workers/dockerfiles/Dockerfile.illumina @@ -13,14 +13,12 @@ COPY workers/R/dependencies/illumina/bioc/dependencies.R . RUN Rscript dependencies.R COPY workers/data_refinery_workers/processors/requirements.txt . -RUN pip3 install --ignore-installed --upgrade pip && \ - pip3 install --ignore-installed -r requirements.txt && \ - # Clear out the pip cache. - rm -rf /root/.cache +RUN pip3 install --ignore-installed --no-cache-dir --upgrade pip && \ + pip3 install --ignore-installed --no-cache-dir -r requirements.txt # Get the latest version from the dist directory. COPY common/dist/data-refinery-common-* common/ -RUN pip3 install --ignore-installed \ +RUN pip3 install --ignore-installed --no-cache-dir \ common/$(ls common -1 | sort --version-sort | tail -1) COPY .boto .boto diff --git a/workers/dockerfiles/Dockerfile.no_op b/workers/dockerfiles/Dockerfile.no_op index 0d98229ee..60f686265 100644 --- a/workers/dockerfiles/Dockerfile.no_op +++ b/workers/dockerfiles/Dockerfile.no_op @@ -12,16 +12,9 @@ COPY workers/R/dependencies/no_op/install_gene_convert.R . RUN Rscript install_gene_convert.R COPY workers/data_refinery_workers/processors/requirements.txt . -RUN pip3 install --ignore-installed --upgrade pip && \ - pip3 install --ignore-installed numpy && \ - pip3 install --ignore-installed -r requirements.txt && \ - # Clear out the pip cache. - rm -rf /root/.cache - -# Get the latest version from the dist directory. -COPY common/dist/data-refinery-common-* common/ -RUN pip3 install --ignore-installed \ - common/$(ls common -1 | sort --version-sort | tail -1) +RUN pip3 install --ignore-installed --no-cache-dir --upgrade pip && \ + pip3 install --ignore-installed --no-cache-dir numpy && \ + pip3 install --ignore-installed --no-cache-dir -r requirements.txt # Noop-specific. RUN mkdir -p gene_indexes @@ -37,6 +30,11 @@ RUN curl -O $ID_REFINERY_URL && \ WORKDIR /home/user +# Get the latest version from the dist directory. +COPY common/dist/data-refinery-common-* common/ +RUN pip3 install --ignore-installed --no-cache-dir \ + common/$(ls common -1 | sort --version-sort | tail -1) + COPY .boto .boto COPY config/ config/ COPY workers/ . diff --git a/workers/dockerfiles/Dockerfile.salmon b/workers/dockerfiles/Dockerfile.salmon index b4493b2e9..046ee0b89 100644 --- a/workers/dockerfiles/Dockerfile.salmon +++ b/workers/dockerfiles/Dockerfile.salmon @@ -13,16 +13,9 @@ COPY workers/R/dependencies/tximport/install_tximport.R . RUN Rscript install_tximport.R COPY workers/data_refinery_workers/processors/requirements.txt . -RUN pip3 install --ignore-installed --upgrade pip && \ - pip3 install --ignore-installed numpy && \ - pip3 install --ignore-installed -r requirements.txt && \ - # Clear out the pip cache. - rm -rf /root/.cache - -# Get the latest version from the dist directory. -COPY common/dist/data-refinery-common-* common/ -RUN pip3 install --ignore-installed \ - common/$(ls common -1 | sort --version-sort | tail -1) +RUN pip3 install --ignore-installed --no-cache-dir --upgrade pip && \ + pip3 install --ignore-installed --no-cache-dir numpy && \ + pip3 install --ignore-installed --no-cache-dir -r requirements.txt # Install Salmon # Tximport requires all experiments to be processed with the same version of @@ -45,9 +38,9 @@ v${SALMON_VERSION}/Salmon-${SALMON_VERSION}_linux_x86_64.tar.gz" && \ # End Salmon installation. ENV SRA_VERSION=2.9.1 -RUN \ - # Install SalmonTools. - git clone https://github.com/COMBINE-lab/SalmonTools.git && \ + +# Install SalmonTools. +RUN git clone https://github.com/COMBINE-lab/SalmonTools.git && \ cd SalmonTools && \ git checkout 3e6654c2c10a5225498b623056993947fa688afc && \ cmake . -DCMAKE_INSTALL_PREFIX=/usr/local && \ @@ -59,6 +52,11 @@ sratoolkit.${SRA_VERSION}-ubuntu64.tar.gz" && \ tar zxfv "sratoolkit.${SRA_VERSION}-ubuntu64.tar.gz" && \ cp -r "sratoolkit.${SRA_VERSION}-ubuntu64/bin/"* /usr/bin +# Get the latest version from the dist directory. +COPY common/dist/data-refinery-common-* common/ +RUN pip3 install --ignore-installed --no-cache-dir \ + common/$(ls common -1 | sort --version-sort | tail -1) + COPY .boto .boto COPY config/ config/ COPY workers/ . diff --git a/workers/dockerfiles/Dockerfile.smasher b/workers/dockerfiles/Dockerfile.smasher index bdf146474..926f98208 100644 --- a/workers/dockerfiles/Dockerfile.smasher +++ b/workers/dockerfiles/Dockerfile.smasher @@ -12,15 +12,13 @@ COPY workers/R/dependencies/qn/bioc/dependencies.R . RUN Rscript dependencies.R COPY workers/data_refinery_workers/processors/requirements.txt . -RUN pip3 install --ignore-installed --upgrade pip && \ - pip3 install --ignore-installed nose numpy rpy2==3.4.5 && \ - pip3 install --ignore-installed -r requirements.txt && \ - # Clear out the pip cache. - rm -rf /root/.cache +RUN pip3 install --ignore-installed --no-cache-dir --upgrade pip && \ + pip3 install --ignore-installed --no-cache-dir nose numpy rpy2==3.4.5 && \ + pip3 install --ignore-installed --no-cache-dir -r requirements.txt # Get the latest version from the dist directory. COPY common/dist/data-refinery-common-* common/ -RUN pip3 install --ignore-installed \ +RUN pip3 install --ignore-installed --no-cache-dir \ common/$(ls common -1 | sort --version-sort | tail -1) COPY .boto .boto diff --git a/workers/dockerfiles/Dockerfile.transcriptome b/workers/dockerfiles/Dockerfile.transcriptome index ae75c87a8..f7dbe3676 100644 --- a/workers/dockerfiles/Dockerfile.transcriptome +++ b/workers/dockerfiles/Dockerfile.transcriptome @@ -6,18 +6,11 @@ SHELL ["/bin/bash", "-o", "pipefail", "-c"] WORKDIR /home/user COPY workers/data_refinery_workers/processors/requirements.txt . -RUN pip3 install --ignore-installed --upgrade pip && \ - pip3 install --ignore-installed numpy && \ - pip3 install --ignore-installed -r requirements.txt && \ - # Clear out the pip cache. - rm -rf /root/.cache - -COPY common/dist/data-refinery-common-* common/ -RUN pip3 install --ignore-installed \ - common/$(ls common -1 | sort --version-sort | tail -1) - -# It's annoying that this can only be installed via git. -RUN git clone https://github.com/deweylab/RSEM.git && \ +RUN pip3 install --ignore-installed --no-cache-dir --upgrade pip && \ + pip3 install --ignore-installed --no-cache-dir numpy && \ + pip3 install --ignore-installed --no-cache-dir -r requirements.txt && \ + # It's annoying that this can only be installed via git. + git clone https://github.com/deweylab/RSEM.git && \ cd RSEM && make install && \ rm -rf RSEM @@ -39,6 +32,10 @@ v${SALMON_VERSION}/Salmon-${SALMON_VERSION}_linux_x86_64.tar.gz" && \ rm -r Salmon* # End Salmon installation. +COPY common/dist/data-refinery-common-* common/ +RUN pip3 install --ignore-installed --no-cache-dir \ + common/$(ls common -1 | sort --version-sort | tail -1) + COPY .boto .boto COPY config/ config/ COPY workers/ . From b2994cb2b1f6b559d99f616945311074b23eb180 Mon Sep 17 00:00:00 2001 From: Arkadii Yakovets Date: Tue, 13 Dec 2022 13:51:53 -0800 Subject: [PATCH 059/220] Update affymetrix image. Revert `ccache` and `crancache` optimizations. --- .../affymetrix/bioc/dependencies.R | 11 ++--- .../affymetrix/install_ensg_pkgs.R | 5 ++- workers/dockerfiles/Dockerfile.affymetrix | 40 ++++++------------- 3 files changed, 21 insertions(+), 35 deletions(-) diff --git a/workers/R/dependencies/affymetrix/bioc/dependencies.R b/workers/R/dependencies/affymetrix/bioc/dependencies.R index 1570292e0..c6d6a3391 100644 --- a/workers/R/dependencies/affymetrix/bioc/dependencies.R +++ b/workers/R/dependencies/affymetrix/bioc/dependencies.R @@ -1,11 +1,12 @@ -# Turn warnings into errors because biocLite throws warnings instead # of error if it fails to install something. +# Turn warnings into errors because biocLite throws warnings instead +# of error if it fails to install something. options(warn = 2) options(repos = structure(c(CRAN = "https://cloud.r-project.org"))) options(Ncpus = parallel::detectCores()) -# Bioconductor packages, installed by devtools::install_url() +# Bioconductor packages, installed by devtools::install_url(). -# Helper function that installs a list of packages using the input URLs +# Helper function that installs a list of packages using the input URLs. install_with_url <- function(urls) { pkg_ids <- devtools::install_url(urls) if (any(is.na(pkg_ids))) { @@ -34,10 +35,10 @@ bioc_pkg_urls <- c( ) install_with_url(bioc_pkg_urls) -# Invoke another R script to install BrainArray ensg packages +# Invoke another R script to install BrainArray ensg packages. source("install_ensg_pkgs.R") -# Install Bioconductor platform design (pd) packages +# Install Bioconductor platform design (pd) packages. pd_experiment_pkgs <- c( "https://bioconductor.org/packages/3.11/data/experiment/src/contrib/pd.atdschip.tiling_0.26.0.tar.gz" ) diff --git a/workers/R/dependencies/affymetrix/install_ensg_pkgs.R b/workers/R/dependencies/affymetrix/install_ensg_pkgs.R index 5de25a262..dbb1fc516 100644 --- a/workers/R/dependencies/affymetrix/install_ensg_pkgs.R +++ b/workers/R/dependencies/affymetrix/install_ensg_pkgs.R @@ -1,4 +1,5 @@ options(Ncpus = parallel::detectCores()) + install.packages("xml2") library("xml2") ensg_url <- "http://brainarray.mbni.med.umich.edu/Brainarray/Database/CustomCDF/22.0.0/ensg.asp" @@ -44,5 +45,5 @@ write.table(list(chips, pkg_urls), row.names = FALSE, col.names = FALSE, sep = "\t" ) -# Install these ensg packages -lapply(pkg_urls, devtools::install_url) +# Install these ensg packages. +install_with_url(pkg_urls) diff --git a/workers/dockerfiles/Dockerfile.affymetrix b/workers/dockerfiles/Dockerfile.affymetrix index e90300240..082163825 100644 --- a/workers/dockerfiles/Dockerfile.affymetrix +++ b/workers/dockerfiles/Dockerfile.affymetrix @@ -1,52 +1,36 @@ -FROM ccdlstaging/dr_worker_base:latest +FROM ccdlstaging/dr_base:latest # Fail in case of an error at any stage in the pipe. SHELL ["/bin/bash", "-o", "pipefail", "-c"] WORKDIR /home/user -# Install and set up ccache. -RUN apt-get update && \ - apt-get install --no-install-recommends -y ccache && \ - for i in c++ cc g++ gcc; do ln -fs /usr/bin/ccache /usr/local/bin/$i; done -COPY workers/ccache.conf /root/.ccache/ccache.conf -ENV PATH="/usr/local/bin:${PATH}" +COPY workers/data_refinery_workers/processors/requirements.txt . +RUN pip3 install --ignore-installed --no-cache-dir --upgrade pip setuptools && \ + # Install this one here instead of via requirements.txt because not + # all processors need it. + pip3 install --ignore-installed --no-cache-dir rpy2==3.4.5 && \ + pip3 install --ignore-installed --no-cache-dir -r requirements.txt COPY workers/R/dependencies/affymetrix/cran/dependencies.R dependencies.R RUN Rscript dependencies.R COPY workers/R/dependencies/affymetrix/install_ensg_pkgs.R . - COPY workers/R/dependencies/affymetrix/bioc/dependencies.R dependencies.R RUN Rscript dependencies.R -RUN pip3 install --ignore-installed --upgrade pip setuptools && \ - # Install this one here instead of via requirements.txt because not - # all processors need it. - pip3 install --ignore-installed rpy2==3.4.5 - # Get the latest version from the dist directory. COPY common/dist/data-refinery-common-* common/ -RUN pip3 install --ignore-installed \ - common/$(ls common -1 | sort --version-sort | tail -1) +RUN pip3 install --ignore-installed --no-cache-dir \ + common/$(ls common -1 | sort --version-sort | tail -1) -COPY workers/data_refinery_workers/processors/requirements.txt . -RUN pip3 install --ignore-installed -r requirements.txt && \ - # Clear out the pip3 cache. - rm -r /root/.cache +COPY .boto .boto +COPY config/ config/ +COPY workers/ . ARG SYSTEM_VERSION ENV SYSTEM_VERSION=$SYSTEM_VERSION -# Print compiler cache stats (the cache hit ratio should be ~90%). -RUN ccache --show-stats && \ - # Clear out the ccache. - ccache --clear - USER user -COPY .boto .boto -COPY config/ config/ -COPY workers/ . - ENTRYPOINT [] From 37c3a40c71f2c13ba8e9994e4cb561018c6d0ba4 Mon Sep 17 00:00:00 2001 From: Arkadii Yakovets Date: Wed, 18 Jan 2023 17:33:39 -0800 Subject: [PATCH 060/220] Migrate R dependencies to renv. --- common/dockerfiles/Dockerfile.base | 11 +- workers/R/dependencies/affymetrix/renv.R | 361 + workers/R/dependencies/affymetrix/renv.lock | 5958 +++++++++++++++++ workers/R/dependencies/compendia/renv.R | 12 + workers/R/dependencies/compendia/renv.lock | 1070 +++ workers/R/dependencies/downloaders/renv.R | 4 + workers/R/dependencies/downloaders/renv.lock | 1029 +++ workers/R/dependencies/illumina/renv.R | 49 + workers/R/dependencies/illumina/renv.lock | 1615 +++++ .../R/dependencies}/install_devtools.R | 0 .../R/dependencies/install_devtools_renv.R | 76 + workers/R/dependencies/no_op/renv.R | 48 + workers/R/dependencies/no_op/renv.lock | 1389 ++++ workers/R/dependencies/salmon/renv.R | 26 + workers/R/dependencies/salmon/renv.lock | 1064 +++ workers/R/dependencies/smasher/renv.R | 12 + workers/R/dependencies/smasher/renv.lock | 1066 +++ workers/R/renv_load.R | 13 + workers/R/renv_save.R | 12 + workers/dockerfiles/Dockerfile.affymetrix | 45 +- workers/dockerfiles/Dockerfile.compendia | 13 +- workers/dockerfiles/Dockerfile.downloaders | 5 +- workers/dockerfiles/Dockerfile.illumina | 9 +- workers/dockerfiles/Dockerfile.no_op | 8 +- workers/dockerfiles/Dockerfile.salmon | 9 +- workers/dockerfiles/Dockerfile.smasher | 8 +- 26 files changed, 13843 insertions(+), 69 deletions(-) create mode 100644 workers/R/dependencies/affymetrix/renv.R create mode 100644 workers/R/dependencies/affymetrix/renv.lock create mode 100644 workers/R/dependencies/compendia/renv.R create mode 100644 workers/R/dependencies/compendia/renv.lock create mode 100644 workers/R/dependencies/downloaders/renv.R create mode 100644 workers/R/dependencies/downloaders/renv.lock create mode 100644 workers/R/dependencies/illumina/renv.R create mode 100644 workers/R/dependencies/illumina/renv.lock rename {common/R => workers/R/dependencies}/install_devtools.R (100%) create mode 100644 workers/R/dependencies/install_devtools_renv.R create mode 100644 workers/R/dependencies/no_op/renv.R create mode 100644 workers/R/dependencies/no_op/renv.lock create mode 100644 workers/R/dependencies/salmon/renv.R create mode 100644 workers/R/dependencies/salmon/renv.lock create mode 100644 workers/R/dependencies/smasher/renv.R create mode 100644 workers/R/dependencies/smasher/renv.lock create mode 100644 workers/R/renv_load.R create mode 100644 workers/R/renv_save.R diff --git a/common/dockerfiles/Dockerfile.base b/common/dockerfiles/Dockerfile.base index 5b833cef9..a5ca53616 100644 --- a/common/dockerfiles/Dockerfile.base +++ b/common/dockerfiles/Dockerfile.base @@ -36,9 +36,15 @@ RUN apt-get update && \ libcairo-dev \ libcurl4-gnutls-dev \ libedit-dev \ + libfreetype6-dev \ + libfribidi-dev \ libgit2-dev \ + libharfbuzz-dev \ + libjpeg-dev \ + libpng-dev \ libpq-dev \ libssl-dev \ + libtiff5-dev \ libxml2-dev \ llvm-10-dev \ lsb-release \ @@ -59,7 +65,6 @@ RUN apt-get update && \ useradd --create-home --home-dir /home/user/ -g user user && \ chown -R user /home/user/ -# Pre-install dev tools. ENV R_LIBS=/usr/local/lib/R/site-library -COPY common/R/install_devtools.R . -RUN Rscript install_devtools.R + +ENTRYPOINT [] diff --git a/workers/R/dependencies/affymetrix/renv.R b/workers/R/dependencies/affymetrix/renv.R new file mode 100644 index 000000000..2e7fb397b --- /dev/null +++ b/workers/R/dependencies/affymetrix/renv.R @@ -0,0 +1,361 @@ +renv::install("bit@1.1-14") +renv::install("ff@2.2-14") +renv::install("XML@3.98-1.10") +renv::install("bitops@1.0-6") +renv::install("RCurl@1.95-4.10") +renv::install("pkgconfig@2.0.1") +renv::install("backports@1.1.4") +renv::install("rlang@0.4.0") +renv::install("zeallot@0.1.0") +renv::install("glue@1.3.1") +renv::install("digest@0.6.19") +renv::install("vctrs@0.1.0") +renv::install("magrittr@1.5") +renv::install("assertthat@0.2.1") +renv::install("prettyunits@1.0.2") +renv::install("blob@1.1.1") +renv::install("memoise@1.1.0") +renv::install("DBI@1.0.0") +renv::install("Rcpp@1.0.1") +renv::install("bit64@0.9-7") +renv::install("RSQLite@2.0") +renv::install("fansi@0.4.0") +renv::install("crayon@1.3.4") +renv::install("cli@1.1.0") +renv::install("utf8@1.1.4") +renv::install("pillar@1.4.2") +renv::install("lifecycle@1.0.3") +renv::install("tibble@1.4.2") +renv::install("xtable@1.8-2") +renv::install("purrr@0.3.3") +renv::install("tidyselect@0.2.5") +renv::install("R6@2.4.0") +renv::install("dplyr@1.0.2") +renv::install("stringi@1.4.3") +renv::install("tidyr@0.8.2") +renv::install("sys@3.2") +renv::install("askpass@1.1") +renv::install("openssl@1.4") +renv::install("curl@3.3") +renv::install("mime@0.7") +renv::install("httr@1.4.1") +renv::install("hms@0.4.2") +renv::install("clipr@0.6.0") +renv::install("readr@1.3.1") +renv::install("xml2@1.2.0") +renv::install("locfit@1.5-9.4") + +renv::install( + "https://bioconductor.org/packages/3.11/bioc/src/contrib/oligoClasses_1.50.4.tar.gz", + "https://bioconductor.org/packages/3.11/bioc/src/contrib/oligo_1.52.1.tar.gz", + "https://bioconductor.org/packages/3.11/bioc/src/contrib/GEOquery_2.56.0.tar.gz", + "https://bioconductor.org/packages/3.11/bioc/src/contrib/SCAN.UPC_2.30.0.tar.gz", + "https://bioconductor.org/packages/3.11/bioc/src/contrib/affy_1.66.0.tar.gz", + "https://bioconductor.org/packages/3.11/bioc/src/contrib/affyio_1.58.0.tar.gz", + "https://bioconductor.org/packages/3.11/bioc/src/contrib/AnnotationDbi_1.50.3.tar.gz", + "https://bioconductor.org/packages/3.11/bioc/src/contrib/zlibbioc_1.34.0.tar.gz", + "https://bioconductor.org/packages/3.11/bioc/src/contrib/preprocessCore_1.50.0.tar.gz", + "https://bioconductor.org/packages/3.11/bioc/src/contrib/genefilter_1.70.0.tar.gz", + "https://bioconductor.org/packages/3.11/bioc/src/contrib/sva_3.36.0.tar.gz", + "https://bioconductor.org/packages/3.11/bioc/src/contrib/limma_3.44.3.tar.gz" +) + +renv::install( + "https://mbni.org/customcdf/22.0.0/ensg.download/bovinebtensgprobe_22.0.0.tar.gz", + "https://mbni.org/customcdf/22.0.0/ensg.download/bovgene10stbtensgprobe_22.0.0.tar.gz", + "https://mbni.org/customcdf/22.0.0/ensg.download/bovgene11stbtensgprobe_22.0.0.tar.gz", + "https://mbni.org/customcdf/22.0.0/ensg.download/celegansceensgprobe_22.0.0.tar.gz", + "https://mbni.org/customcdf/22.0.0/ensg.download/elegene10stceensgprobe_22.0.0.tar.gz", + "https://mbni.org/customcdf/22.0.0/ensg.download/elegene11stceensgprobe_22.0.0.tar.gz", + "https://mbni.org/customcdf/22.0.0/ensg.download/canine2cfensgprobe_22.0.0.tar.gz", + "https://mbni.org/customcdf/22.0.0/ensg.download/canine2pmcfensgprobe_22.0.0.tar.gz", + "https://mbni.org/customcdf/22.0.0/ensg.download/cangene10stcfensgprobe_22.0.0.tar.gz", + "https://mbni.org/customcdf/22.0.0/ensg.download/cangene11stcfensgprobe_22.0.0.tar.gz", + "https://mbni.org/customcdf/22.0.0/ensg.download/zebrafishdrensgprobe_22.0.0.tar.gz", + "https://mbni.org/customcdf/22.0.0/ensg.download/zebgene10stdrensgprobe_22.0.0.tar.gz", + "https://mbni.org/customcdf/22.0.0/ensg.download/zebgene11stdrensgprobe_22.0.0.tar.gz", + "https://mbni.org/customcdf/22.0.0/ensg.download/drosgenome1dmensgprobe_22.0.0.tar.gz", + "https://mbni.org/customcdf/22.0.0/ensg.download/drosophila2dmensgprobe_22.0.0.tar.gz", + "https://mbni.org/customcdf/22.0.0/ensg.download/drogene10stdmensgprobe_22.0.0.tar.gz", + "https://mbni.org/customcdf/22.0.0/ensg.download/drogene11stdmensgprobe_22.0.0.tar.gz", + "https://mbni.org/customcdf/22.0.0/ensg.download/equgene10steqcaensgprobe_22.0.0.tar.gz", + "https://mbni.org/customcdf/22.0.0/ensg.download/equgene11steqcaensgprobe_22.0.0.tar.gz", + "https://mbni.org/customcdf/22.0.0/ensg.download/chickenggensgprobe_22.0.0.tar.gz", + "https://mbni.org/customcdf/22.0.0/ensg.download/chigene10stggensgprobe_22.0.0.tar.gz", + "https://mbni.org/customcdf/22.0.0/ensg.download/chigene11stggensgprobe_22.0.0.tar.gz", + "https://mbni.org/customcdf/22.0.0/ensg.download/clariomdhumanhsensgprobe_22.0.0.tar.gz", + "https://mbni.org/customcdf/22.0.0/ensg.download/clariomshumanhsensgprobe_22.0.0.tar.gz", + "https://mbni.org/customcdf/22.0.0/ensg.download/clariomshumanhthsensgprobe_22.0.0.tar.gz", + "https://mbni.org/customcdf/22.0.0/ensg.download/hcg110hsensgprobe_22.0.0.tar.gz", + "https://mbni.org/customcdf/22.0.0/ensg.download/hgfocushsensgprobe_22.0.0.tar.gz", + "https://mbni.org/customcdf/22.0.0/ensg.download/hgu133ahsensgprobe_22.0.0.tar.gz", + "https://mbni.org/customcdf/22.0.0/ensg.download/hgu133a2hsensgprobe_22.0.0.tar.gz", + "https://mbni.org/customcdf/22.0.0/ensg.download/hgu133bhsensgprobe_22.0.0.tar.gz", + "https://mbni.org/customcdf/22.0.0/ensg.download/hgu133plus2hsensgprobe_22.0.0.tar.gz", + "https://mbni.org/customcdf/22.0.0/ensg.download/hgu219hsensgprobe_22.0.0.tar.gz", + "https://mbni.org/customcdf/22.0.0/ensg.download/hgu95ahsensgprobe_22.0.0.tar.gz", + "https://mbni.org/customcdf/22.0.0/ensg.download/hgu95av2hsensgprobe_22.0.0.tar.gz", + "https://mbni.org/customcdf/22.0.0/ensg.download/hgu95bhsensgprobe_22.0.0.tar.gz", + "https://mbni.org/customcdf/22.0.0/ensg.download/hgu95chsensgprobe_22.0.0.tar.gz", + "https://mbni.org/customcdf/22.0.0/ensg.download/hgu95dhsensgprobe_22.0.0.tar.gz", + "https://mbni.org/customcdf/22.0.0/ensg.download/hgu95ehsensgprobe_22.0.0.tar.gz", + "https://mbni.org/customcdf/22.0.0/ensg.download/hthgu133ahsensgprobe_22.0.0.tar.gz", + "https://mbni.org/customcdf/22.0.0/ensg.download/hthgu133bhsensgprobe_22.0.0.tar.gz", + "https://mbni.org/customcdf/22.0.0/ensg.download/hthgu133pluspmhsensgprobe_22.0.0.tar.gz", + "https://mbni.org/customcdf/22.0.0/ensg.download/hu6800hsensgprobe_22.0.0.tar.gz", + "https://mbni.org/customcdf/22.0.0/ensg.download/jnj384screenhsensgprobe_22.0.0.tar.gz", + "https://mbni.org/customcdf/22.0.0/ensg.download/mapping10kxba142hsensgprobe_22.0.0.tar.gz", + "https://mbni.org/customcdf/22.0.0/ensg.download/mapping250knsphsensgprobe_22.0.0.tar.gz", + "https://mbni.org/customcdf/22.0.0/ensg.download/mapping250kstyhsensgprobe_22.0.0.tar.gz", + "https://mbni.org/customcdf/22.0.0/ensg.download/mapping50khind240hsensgprobe_22.0.0.tar.gz", + "https://mbni.org/customcdf/22.0.0/ensg.download/mapping50kxba240hsensgprobe_22.0.0.tar.gz", + "https://mbni.org/customcdf/22.0.0/ensg.download/nugohs1a520180hsensgprobe_22.0.0.tar.gz", + "https://mbni.org/customcdf/22.0.0/ensg.download/primeviewhsensgprobe_22.0.0.tar.gz", + "https://mbni.org/customcdf/22.0.0/ensg.download/u133aaofav2hsensgprobe_22.0.0.tar.gz", + "https://mbni.org/customcdf/22.0.0/ensg.download/u133x3phsensgprobe_22.0.0.tar.gz", + "https://mbni.org/customcdf/22.0.0/ensg.download/xcelhsensgprobe_22.0.0.tar.gz", + "https://mbni.org/customcdf/22.0.0/ensg.download/gngnf1bahsensgprobe_22.0.0.tar.gz", + "https://mbni.org/customcdf/22.0.0/ensg.download/hglue20hsensgprobe_22.0.0.tar.gz", + "https://mbni.org/customcdf/22.0.0/ensg.download/hta20hsensgprobe_22.0.0.tar.gz", + "https://mbni.org/customcdf/22.0.0/ensg.download/huex10sthsensgprobe_22.0.0.tar.gz", + "https://mbni.org/customcdf/22.0.0/ensg.download/hugene10sthsensgprobe_22.0.0.tar.gz", + "https://mbni.org/customcdf/22.0.0/ensg.download/hugene11sthsensgprobe_22.0.0.tar.gz", + "https://mbni.org/customcdf/22.0.0/ensg.download/hugene20sthsensgprobe_22.0.0.tar.gz", + "https://mbni.org/customcdf/22.0.0/ensg.download/hugene21sthsensgprobe_22.0.0.tar.gz", + "https://mbni.org/customcdf/22.0.0/ensg.download/rhesusmamuensgprobe_22.0.0.tar.gz", + "https://mbni.org/customcdf/22.0.0/ensg.download/cyrgene10stmamuensgprobe_22.0.0.tar.gz", + "https://mbni.org/customcdf/22.0.0/ensg.download/cyrgene11stmamuensgprobe_22.0.0.tar.gz", + "https://mbni.org/customcdf/22.0.0/ensg.download/mafacyrgene10stmamuensgprobe_22.0.0.tar.gz", + "https://mbni.org/customcdf/22.0.0/ensg.download/mafacyrgene11stmamuensgprobe_22.0.0.tar.gz", + "https://mbni.org/customcdf/22.0.0/ensg.download/clariomdmousemmensgprobe_22.0.0.tar.gz", + "https://mbni.org/customcdf/22.0.0/ensg.download/clariomsmousemmensgprobe_22.0.0.tar.gz", + "https://mbni.org/customcdf/22.0.0/ensg.download/clariomsmousehtmmensgprobe_22.0.0.tar.gz", + "https://mbni.org/customcdf/22.0.0/ensg.download/htmg430ammensgprobe_22.0.0.tar.gz", + "https://mbni.org/customcdf/22.0.0/ensg.download/htmg430bmmensgprobe_22.0.0.tar.gz", + "https://mbni.org/customcdf/22.0.0/ensg.download/htmg430pmmmensgprobe_22.0.0.tar.gz", + "https://mbni.org/customcdf/22.0.0/ensg.download/mgu74ammensgprobe_22.0.0.tar.gz", + "https://mbni.org/customcdf/22.0.0/ensg.download/mgu74av2mmensgprobe_22.0.0.tar.gz", + "https://mbni.org/customcdf/22.0.0/ensg.download/mgu74bv2mmensgprobe_22.0.0.tar.gz", + "https://mbni.org/customcdf/22.0.0/ensg.download/mgu74cv2mmensgprobe_22.0.0.tar.gz", + "https://mbni.org/customcdf/22.0.0/ensg.download/moe430ammensgprobe_22.0.0.tar.gz", + "https://mbni.org/customcdf/22.0.0/ensg.download/moe430bmmensgprobe_22.0.0.tar.gz", + "https://mbni.org/customcdf/22.0.0/ensg.download/mouse4302mmensgprobe_22.0.0.tar.gz", + "https://mbni.org/customcdf/22.0.0/ensg.download/mouse430a2mmensgprobe_22.0.0.tar.gz", + "https://mbni.org/customcdf/22.0.0/ensg.download/mu11ksubammensgprobe_22.0.0.tar.gz", + "https://mbni.org/customcdf/22.0.0/ensg.download/mu11ksubbmmensgprobe_22.0.0.tar.gz", + "https://mbni.org/customcdf/22.0.0/ensg.download/nugomm1a520177mmensgprobe_22.0.0.tar.gz", + "https://mbni.org/customcdf/22.0.0/ensg.download/chogene20stmmensgprobe_22.0.0.tar.gz", + "https://mbni.org/customcdf/22.0.0/ensg.download/chogene21stmmensgprobe_22.0.0.tar.gz", + "https://mbni.org/customcdf/22.0.0/ensg.download/gngnf1musammensgprobe_22.0.0.tar.gz", + "https://mbni.org/customcdf/22.0.0/ensg.download/moex10stmmensgprobe_22.0.0.tar.gz", + "https://mbni.org/customcdf/22.0.0/ensg.download/mogene10stmmensgprobe_22.0.0.tar.gz", + "https://mbni.org/customcdf/22.0.0/ensg.download/mogene11stmmensgprobe_22.0.0.tar.gz", + "https://mbni.org/customcdf/22.0.0/ensg.download/mogene20stmmensgprobe_22.0.0.tar.gz", + "https://mbni.org/customcdf/22.0.0/ensg.download/mogene21stmmensgprobe_22.0.0.tar.gz", + "https://mbni.org/customcdf/22.0.0/ensg.download/rabbit2a520535focensgprobe_22.0.0.tar.gz", + "https://mbni.org/customcdf/22.0.0/ensg.download/rabgene10stocensgprobe_22.0.0.tar.gz", + "https://mbni.org/customcdf/22.0.0/ensg.download/rabgene11stocensgprobe_22.0.0.tar.gz", + "https://mbni.org/customcdf/22.0.0/ensg.download/ovigene10stoaensgprobe_22.0.0.tar.gz", + "https://mbni.org/customcdf/22.0.0/ensg.download/ovigene11stoaensgprobe_22.0.0.tar.gz", + "https://mbni.org/customcdf/22.0.0/ensg.download/clariomdratrnensgprobe_22.0.0.tar.gz", + "https://mbni.org/customcdf/22.0.0/ensg.download/clariomsratrnensgprobe_22.0.0.tar.gz", + "https://mbni.org/customcdf/22.0.0/ensg.download/clariomsrathtrnensgprobe_22.0.0.tar.gz", + "https://mbni.org/customcdf/22.0.0/ensg.download/htrat230pmrnensgprobe_22.0.0.tar.gz", + "https://mbni.org/customcdf/22.0.0/ensg.download/htratfocusrnensgprobe_22.0.0.tar.gz", + "https://mbni.org/customcdf/22.0.0/ensg.download/rae230arnensgprobe_22.0.0.tar.gz", + "https://mbni.org/customcdf/22.0.0/ensg.download/rae230brnensgprobe_22.0.0.tar.gz", + "https://mbni.org/customcdf/22.0.0/ensg.download/rgu34arnensgprobe_22.0.0.tar.gz", + "https://mbni.org/customcdf/22.0.0/ensg.download/rgu34brnensgprobe_22.0.0.tar.gz", + "https://mbni.org/customcdf/22.0.0/ensg.download/rgu34crnensgprobe_22.0.0.tar.gz", + "https://mbni.org/customcdf/22.0.0/ensg.download/rnu34rnensgprobe_22.0.0.tar.gz", + "https://mbni.org/customcdf/22.0.0/ensg.download/rtu34rnensgprobe_22.0.0.tar.gz", + "https://mbni.org/customcdf/22.0.0/ensg.download/rat2302rnensgprobe_22.0.0.tar.gz", + "https://mbni.org/customcdf/22.0.0/ensg.download/rattoxfxrnensgprobe_22.0.0.tar.gz", + "https://mbni.org/customcdf/22.0.0/ensg.download/raex10strnensgprobe_22.0.0.tar.gz", + "https://mbni.org/customcdf/22.0.0/ensg.download/ragene10strnensgprobe_22.0.0.tar.gz", + "https://mbni.org/customcdf/22.0.0/ensg.download/ragene11strnensgprobe_22.0.0.tar.gz", + "https://mbni.org/customcdf/22.0.0/ensg.download/ragene20strnensgprobe_22.0.0.tar.gz", + "https://mbni.org/customcdf/22.0.0/ensg.download/ragene21strnensgprobe_22.0.0.tar.gz", + "https://mbni.org/customcdf/22.0.0/ensg.download/ygs98scensgprobe_22.0.0.tar.gz", + "https://mbni.org/customcdf/22.0.0/ensg.download/yeast2scensgprobe_22.0.0.tar.gz", + "https://mbni.org/customcdf/22.0.0/ensg.download/porcinessensgprobe_22.0.0.tar.gz", + "https://mbni.org/customcdf/22.0.0/ensg.download/snowballs520824fssensgprobe_22.0.0.tar.gz", + "https://mbni.org/customcdf/22.0.0/ensg.download/porgene10stssensgprobe_22.0.0.tar.gz", + "https://mbni.org/customcdf/22.0.0/ensg.download/porgene11stssensgprobe_22.0.0.tar.gz" +) + +renv::install( + "https://bioconductor.org/packages/3.11/data/experiment/src/contrib/pd.atdschip.tiling_0.26.0.tar.gz" +) + +renv::install( + "https://bioconductor.org/packages/3.11/data/annotation/src/contrib/pd.081229.hg18.promoter.medip.hx1_0.99.4.tar.gz", + "https://bioconductor.org/packages/3.11/data/annotation/src/contrib/pd.2006.07.18.hg18.refseq.promoter_1.8.1.tar.gz", + "https://bioconductor.org/packages/3.11/data/annotation/src/contrib/pd.2006.07.18.mm8.refseq.promoter_0.99.3.tar.gz", + "https://bioconductor.org/packages/3.11/data/annotation/src/contrib/pd.2006.10.31.rn34.refseq.promoter_0.99.3.tar.gz", + "https://bioconductor.org/packages/3.11/data/annotation/src/contrib/pd.ag_3.12.0.tar.gz", + "https://bioconductor.org/packages/3.11/data/annotation/src/contrib/pd.aragene.1.0.st_3.12.0.tar.gz", + "https://bioconductor.org/packages/3.11/data/annotation/src/contrib/pd.aragene.1.1.st_3.12.0.tar.gz", + "https://bioconductor.org/packages/3.11/data/annotation/src/contrib/pd.ath1.121501_3.12.0.tar.gz", + "https://bioconductor.org/packages/3.11/data/annotation/src/contrib/pd.barley1_3.12.0.tar.gz", + "https://bioconductor.org/packages/3.11/data/annotation/src/contrib/pd.bovgene.1.0.st_3.12.0.tar.gz", + "https://bioconductor.org/packages/3.11/data/annotation/src/contrib/pd.bovgene.1.1.st_3.12.0.tar.gz", + "https://bioconductor.org/packages/3.11/data/annotation/src/contrib/pd.bovine_3.12.0.tar.gz", + "https://bioconductor.org/packages/3.11/data/annotation/src/contrib/pd.bsubtilis_3.12.0.tar.gz", + "https://bioconductor.org/packages/3.11/data/annotation/src/contrib/pd.cangene.1.0.st_3.12.0.tar.gz", + "https://bioconductor.org/packages/3.11/data/annotation/src/contrib/pd.cangene.1.1.st_3.12.0.tar.gz", + "https://bioconductor.org/packages/3.11/data/annotation/src/contrib/pd.canine_3.12.0.tar.gz", + "https://bioconductor.org/packages/3.11/data/annotation/src/contrib/pd.canine.2_3.12.0.tar.gz", + "https://bioconductor.org/packages/3.11/data/annotation/src/contrib/pd.celegans_3.12.0.tar.gz", + "https://bioconductor.org/packages/3.11/data/annotation/src/contrib/pd.charm.hg18.example_0.99.4.tar.gz", + "https://bioconductor.org/packages/3.11/data/annotation/src/contrib/pd.chicken_3.12.0.tar.gz", + "https://bioconductor.org/packages/3.11/data/annotation/src/contrib/pd.chigene.1.0.st_3.12.0.tar.gz", + "https://bioconductor.org/packages/3.11/data/annotation/src/contrib/pd.chigene.1.1.st_3.12.0.tar.gz", + "https://bioconductor.org/packages/3.11/data/annotation/src/contrib/pd.chogene.2.0.st_3.12.0.tar.gz", + "https://bioconductor.org/packages/3.11/data/annotation/src/contrib/pd.chogene.2.1.st_3.12.0.tar.gz", + "https://bioconductor.org/packages/3.11/data/annotation/src/contrib/pd.citrus_3.12.0.tar.gz", + "https://bioconductor.org/packages/3.11/data/annotation/src/contrib/pd.clariom.d.human_3.14.1.tar.gz", + "https://bioconductor.org/packages/3.11/data/annotation/src/contrib/pd.clariom.s.human_3.14.1.tar.gz", + "https://bioconductor.org/packages/3.11/data/annotation/src/contrib/pd.clariom.s.human.ht_3.14.1.tar.gz", + "https://bioconductor.org/packages/3.11/data/annotation/src/contrib/pd.clariom.s.mouse_3.14.1.tar.gz", + "https://bioconductor.org/packages/3.11/data/annotation/src/contrib/pd.clariom.s.mouse.ht_3.14.1.tar.gz", + "https://bioconductor.org/packages/3.11/data/annotation/src/contrib/pd.clariom.s.rat_3.14.1.tar.gz", + "https://bioconductor.org/packages/3.11/data/annotation/src/contrib/pd.clariom.s.rat.ht_3.14.1.tar.gz", + "https://bioconductor.org/packages/3.11/data/annotation/src/contrib/pd.cotton_3.12.0.tar.gz", + "https://bioconductor.org/packages/3.11/data/annotation/src/contrib/pd.cyngene.1.0.st_3.12.0.tar.gz", + "https://bioconductor.org/packages/3.11/data/annotation/src/contrib/pd.cyngene.1.1.st_3.12.0.tar.gz", + "https://bioconductor.org/packages/3.11/data/annotation/src/contrib/pd.cyrgene.1.0.st_3.12.0.tar.gz", + "https://bioconductor.org/packages/3.11/data/annotation/src/contrib/pd.cyrgene.1.1.st_3.12.0.tar.gz", + "https://bioconductor.org/packages/3.11/data/annotation/src/contrib/pd.cytogenetics.array_3.12.0.tar.gz", + "https://bioconductor.org/packages/3.11/data/annotation/src/contrib/pd.drogene.1.0.st_3.12.0.tar.gz", + "https://bioconductor.org/packages/3.11/data/annotation/src/contrib/pd.drogene.1.1.st_3.12.0.tar.gz", + "https://bioconductor.org/packages/3.11/data/annotation/src/contrib/pd.drosgenome1_3.12.0.tar.gz", + "https://bioconductor.org/packages/3.11/data/annotation/src/contrib/pd.drosophila.2_3.12.0.tar.gz", + "https://bioconductor.org/packages/3.11/data/annotation/src/contrib/pd.e.coli.2_3.12.0.tar.gz", + "https://bioconductor.org/packages/3.11/data/annotation/src/contrib/pd.ecoli_3.12.0.tar.gz", + "https://bioconductor.org/packages/3.11/data/annotation/src/contrib/pd.ecoli.asv2_3.12.0.tar.gz", + "https://bioconductor.org/packages/3.11/data/annotation/src/contrib/pd.elegene.1.0.st_3.12.0.tar.gz", + "https://bioconductor.org/packages/3.11/data/annotation/src/contrib/pd.elegene.1.1.st_3.12.0.tar.gz", + "https://bioconductor.org/packages/3.11/data/annotation/src/contrib/pd.equgene.1.0.st_3.12.0.tar.gz", + "https://bioconductor.org/packages/3.11/data/annotation/src/contrib/pd.equgene.1.1.st_3.12.0.tar.gz", + "https://bioconductor.org/packages/3.11/data/annotation/src/contrib/pd.feinberg.hg18.me.hx1_0.99.3.tar.gz", + "https://bioconductor.org/packages/3.11/data/annotation/src/contrib/pd.feinberg.mm8.me.hx1_0.99.3.tar.gz", + "https://bioconductor.org/packages/3.11/data/annotation/src/contrib/pd.felgene.1.0.st_3.12.0.tar.gz", + "https://bioconductor.org/packages/3.11/data/annotation/src/contrib/pd.felgene.1.1.st_3.12.0.tar.gz", + "https://bioconductor.org/packages/3.11/data/annotation/src/contrib/pd.fingene.1.0.st_3.12.0.tar.gz", + "https://bioconductor.org/packages/3.11/data/annotation/src/contrib/pd.fingene.1.1.st_3.12.0.tar.gz", + "https://bioconductor.org/packages/3.11/data/annotation/src/contrib/pd.genomewidesnp.5_3.14.1.tar.gz", + "https://bioconductor.org/packages/3.11/data/annotation/src/contrib/pd.genomewidesnp.6_3.14.1.tar.gz", + "https://bioconductor.org/packages/3.11/data/annotation/src/contrib/pd.guigene.1.0.st_3.12.0.tar.gz", + "https://bioconductor.org/packages/3.11/data/annotation/src/contrib/pd.guigene.1.1.st_3.12.0.tar.gz", + "https://bioconductor.org/packages/3.11/data/annotation/src/contrib/pd.hc.g110_3.12.0.tar.gz", + "https://bioconductor.org/packages/3.11/data/annotation/src/contrib/pd.hg.focus_3.12.0.tar.gz", + "https://bioconductor.org/packages/3.11/data/annotation/src/contrib/pd.hg.u133.plus.2_3.12.0.tar.gz", + "https://bioconductor.org/packages/3.11/data/annotation/src/contrib/pd.hg.u133a_3.12.0.tar.gz", + "https://bioconductor.org/packages/3.11/data/annotation/src/contrib/pd.hg.u133a.2_3.12.0.tar.gz", + "https://bioconductor.org/packages/3.11/data/annotation/src/contrib/pd.hg.u133a.tag_3.12.0.tar.gz", + "https://bioconductor.org/packages/3.11/data/annotation/src/contrib/pd.hg.u133b_3.12.0.tar.gz", + "https://bioconductor.org/packages/3.11/data/annotation/src/contrib/pd.hg.u219_3.12.0.tar.gz", + "https://bioconductor.org/packages/3.11/data/annotation/src/contrib/pd.hg.u95a_3.12.0.tar.gz", + "https://bioconductor.org/packages/3.11/data/annotation/src/contrib/pd.hg.u95av2_3.12.0.tar.gz", + "https://bioconductor.org/packages/3.11/data/annotation/src/contrib/pd.hg.u95b_3.12.0.tar.gz", + "https://bioconductor.org/packages/3.11/data/annotation/src/contrib/pd.hg.u95c_3.12.0.tar.gz", + "https://bioconductor.org/packages/3.11/data/annotation/src/contrib/pd.hg.u95d_3.12.0.tar.gz", + "https://bioconductor.org/packages/3.11/data/annotation/src/contrib/pd.hg.u95e_3.12.0.tar.gz", + "https://bioconductor.org/packages/3.11/data/annotation/src/contrib/pd.hg18.60mer.expr_3.12.0.tar.gz", + "https://bioconductor.org/packages/3.11/data/annotation/src/contrib/pd.ht.hg.u133.plus.pm_3.12.0.tar.gz", + "https://bioconductor.org/packages/3.11/data/annotation/src/contrib/pd.ht.hg.u133a_3.12.0.tar.gz", + "https://bioconductor.org/packages/3.11/data/annotation/src/contrib/pd.ht.mg.430a_3.12.0.tar.gz", + "https://bioconductor.org/packages/3.11/data/annotation/src/contrib/pd.hta.2.0_3.12.2.tar.gz", + "https://bioconductor.org/packages/3.11/data/annotation/src/contrib/pd.hu6800_3.12.0.tar.gz", + "https://bioconductor.org/packages/3.11/data/annotation/src/contrib/pd.huex.1.0.st.v2_3.14.1.tar.gz", + "https://bioconductor.org/packages/3.11/data/annotation/src/contrib/pd.hugene.1.0.st.v1_3.14.1.tar.gz", + "https://bioconductor.org/packages/3.11/data/annotation/src/contrib/pd.hugene.1.1.st.v1_3.14.1.tar.gz", + "https://bioconductor.org/packages/3.11/data/annotation/src/contrib/pd.hugene.2.0.st_3.14.1.tar.gz", + "https://bioconductor.org/packages/3.11/data/annotation/src/contrib/pd.hugene.2.1.st_3.14.1.tar.gz", + "https://bioconductor.org/packages/3.11/data/annotation/src/contrib/pd.maize_3.12.0.tar.gz", + "https://bioconductor.org/packages/3.11/data/annotation/src/contrib/pd.mapping250k.nsp_3.12.0.tar.gz", + "https://bioconductor.org/packages/3.11/data/annotation/src/contrib/pd.mapping250k.sty_3.12.0.tar.gz", + "https://bioconductor.org/packages/3.11/data/annotation/src/contrib/pd.mapping50k.hind240_3.12.0.tar.gz", + "https://bioconductor.org/packages/3.11/data/annotation/src/contrib/pd.mapping50k.xba240_3.12.0.tar.gz", + "https://bioconductor.org/packages/3.11/data/annotation/src/contrib/pd.margene.1.0.st_3.12.0.tar.gz", + "https://bioconductor.org/packages/3.11/data/annotation/src/contrib/pd.margene.1.1.st_3.12.0.tar.gz", + "https://bioconductor.org/packages/3.11/data/annotation/src/contrib/pd.medgene.1.0.st_3.12.0.tar.gz", + "https://bioconductor.org/packages/3.11/data/annotation/src/contrib/pd.medgene.1.1.st_3.12.0.tar.gz", + "https://bioconductor.org/packages/3.11/data/annotation/src/contrib/pd.medicago_3.12.0.tar.gz", + "https://bioconductor.org/packages/3.11/data/annotation/src/contrib/pd.mg.u74a_3.12.0.tar.gz", + "https://bioconductor.org/packages/3.11/data/annotation/src/contrib/pd.mg.u74av2_3.12.0.tar.gz", + "https://bioconductor.org/packages/3.11/data/annotation/src/contrib/pd.mg.u74b_3.12.0.tar.gz", + "https://bioconductor.org/packages/3.11/data/annotation/src/contrib/pd.mg.u74bv2_3.12.0.tar.gz", + "https://bioconductor.org/packages/3.11/data/annotation/src/contrib/pd.mg.u74c_3.12.0.tar.gz", + "https://bioconductor.org/packages/3.11/data/annotation/src/contrib/pd.mg.u74cv2_3.12.0.tar.gz", + "https://bioconductor.org/packages/3.11/data/annotation/src/contrib/pd.mirna.1.0_3.12.0.tar.gz", + "https://bioconductor.org/packages/3.11/data/annotation/src/contrib/pd.mirna.2.0_3.12.0.tar.gz", + "https://bioconductor.org/packages/3.11/data/annotation/src/contrib/pd.mirna.3.0_3.12.0.tar.gz", + "https://bioconductor.org/packages/3.11/data/annotation/src/contrib/pd.mirna.3.1_3.8.1.tar.gz", + "https://bioconductor.org/packages/3.11/data/annotation/src/contrib/pd.mirna.4.0_3.12.0.tar.gz", + "https://bioconductor.org/packages/3.11/data/annotation/src/contrib/pd.moe430a_3.12.0.tar.gz", + "https://bioconductor.org/packages/3.11/data/annotation/src/contrib/pd.moe430b_3.12.0.tar.gz", + "https://bioconductor.org/packages/3.11/data/annotation/src/contrib/pd.moex.1.0.st.v1_3.14.1.tar.gz", + "https://bioconductor.org/packages/3.11/data/annotation/src/contrib/pd.mogene.1.0.st.v1_3.14.1.tar.gz", + "https://bioconductor.org/packages/3.11/data/annotation/src/contrib/pd.mogene.1.1.st.v1_3.14.1.tar.gz", + "https://bioconductor.org/packages/3.11/data/annotation/src/contrib/pd.mogene.2.0.st_3.14.1.tar.gz", + "https://bioconductor.org/packages/3.11/data/annotation/src/contrib/pd.mogene.2.1.st_3.14.1.tar.gz", + "https://bioconductor.org/packages/3.11/data/annotation/src/contrib/pd.mouse430.2_3.12.0.tar.gz", + "https://bioconductor.org/packages/3.11/data/annotation/src/contrib/pd.mouse430a.2_3.12.0.tar.gz", + "https://bioconductor.org/packages/3.11/data/annotation/src/contrib/pd.mta.1.0_3.12.0.tar.gz", + "https://bioconductor.org/packages/3.11/data/annotation/src/contrib/pd.mu11ksuba_3.12.0.tar.gz", + "https://bioconductor.org/packages/3.11/data/annotation/src/contrib/pd.mu11ksubb_3.12.0.tar.gz", + "https://bioconductor.org/packages/3.11/data/annotation/src/contrib/pd.nugo.hs1a520180_3.4.0.tar.gz", + "https://bioconductor.org/packages/3.11/data/annotation/src/contrib/pd.nugo.mm1a520177_3.4.0.tar.gz", + "https://bioconductor.org/packages/3.11/data/annotation/src/contrib/pd.ovigene.1.0.st_3.12.0.tar.gz", + "https://bioconductor.org/packages/3.11/data/annotation/src/contrib/pd.ovigene.1.1.st_3.12.0.tar.gz", + "https://bioconductor.org/packages/3.11/data/annotation/src/contrib/pd.pae.g1a_3.12.0.tar.gz", + "https://bioconductor.org/packages/3.11/data/annotation/src/contrib/pd.plasmodium.anopheles_3.12.0.tar.gz", + "https://bioconductor.org/packages/3.11/data/annotation/src/contrib/pd.poplar_3.12.0.tar.gz", + "https://bioconductor.org/packages/3.11/data/annotation/src/contrib/pd.porcine_3.12.0.tar.gz", + "https://bioconductor.org/packages/3.11/data/annotation/src/contrib/pd.porgene.1.0.st_3.12.0.tar.gz", + "https://bioconductor.org/packages/3.11/data/annotation/src/contrib/pd.porgene.1.1.st_3.12.0.tar.gz", + "https://bioconductor.org/packages/3.11/data/annotation/src/contrib/pd.rabgene.1.0.st_3.12.0.tar.gz", + "https://bioconductor.org/packages/3.11/data/annotation/src/contrib/pd.rabgene.1.1.st_3.12.0.tar.gz", + "https://bioconductor.org/packages/3.11/data/annotation/src/contrib/pd.rae230a_3.12.0.tar.gz", + "https://bioconductor.org/packages/3.11/data/annotation/src/contrib/pd.rae230b_3.12.0.tar.gz", + "https://bioconductor.org/packages/3.11/data/annotation/src/contrib/pd.raex.1.0.st.v1_3.14.1.tar.gz", + "https://bioconductor.org/packages/3.11/data/annotation/src/contrib/pd.ragene.1.0.st.v1_3.14.1.tar.gz", + "https://bioconductor.org/packages/3.11/data/annotation/src/contrib/pd.ragene.1.1.st.v1_3.14.1.tar.gz", + "https://bioconductor.org/packages/3.11/data/annotation/src/contrib/pd.ragene.2.0.st_3.14.1.tar.gz", + "https://bioconductor.org/packages/3.11/data/annotation/src/contrib/pd.ragene.2.1.st_3.14.1.tar.gz", + "https://bioconductor.org/packages/3.11/data/annotation/src/contrib/pd.rat230.2_3.12.0.tar.gz", + "https://bioconductor.org/packages/3.11/data/annotation/src/contrib/pd.rcngene.1.0.st_3.12.0.tar.gz", + "https://bioconductor.org/packages/3.11/data/annotation/src/contrib/pd.rcngene.1.1.st_3.12.0.tar.gz", + "https://bioconductor.org/packages/3.11/data/annotation/src/contrib/pd.rg.u34a_3.12.0.tar.gz", + "https://bioconductor.org/packages/3.11/data/annotation/src/contrib/pd.rg.u34b_3.12.0.tar.gz", + "https://bioconductor.org/packages/3.11/data/annotation/src/contrib/pd.rg.u34c_3.12.0.tar.gz", + "https://bioconductor.org/packages/3.11/data/annotation/src/contrib/pd.rhegene.1.0.st_3.12.0.tar.gz", + "https://bioconductor.org/packages/3.11/data/annotation/src/contrib/pd.rhegene.1.1.st_3.12.0.tar.gz", + "https://bioconductor.org/packages/3.11/data/annotation/src/contrib/pd.rhesus_3.12.0.tar.gz", + "https://bioconductor.org/packages/3.11/data/annotation/src/contrib/pd.rice_3.12.0.tar.gz", + "https://bioconductor.org/packages/3.11/data/annotation/src/contrib/pd.rjpgene.1.0.st_3.12.0.tar.gz", + "https://bioconductor.org/packages/3.11/data/annotation/src/contrib/pd.rjpgene.1.1.st_3.12.0.tar.gz", + "https://bioconductor.org/packages/3.11/data/annotation/src/contrib/pd.rn.u34_3.12.0.tar.gz", + "https://bioconductor.org/packages/3.11/data/annotation/src/contrib/pd.rta.1.0_3.12.2.tar.gz", + "https://bioconductor.org/packages/3.11/data/annotation/src/contrib/pd.rusgene.1.0.st_3.12.0.tar.gz", + "https://bioconductor.org/packages/3.11/data/annotation/src/contrib/pd.rusgene.1.1.st_3.12.0.tar.gz", + "https://bioconductor.org/packages/3.11/data/annotation/src/contrib/pd.s.aureus_3.12.0.tar.gz", + "https://bioconductor.org/packages/3.11/data/annotation/src/contrib/pd.soybean_3.12.0.tar.gz", + "https://bioconductor.org/packages/3.11/data/annotation/src/contrib/pd.soygene.1.0.st_3.12.0.tar.gz", + "https://bioconductor.org/packages/3.11/data/annotation/src/contrib/pd.soygene.1.1.st_3.12.0.tar.gz", + "https://bioconductor.org/packages/3.11/data/annotation/src/contrib/pd.sugar.cane_3.12.0.tar.gz", + "https://bioconductor.org/packages/3.11/data/annotation/src/contrib/pd.tomato_3.12.0.tar.gz", + "https://bioconductor.org/packages/3.11/data/annotation/src/contrib/pd.u133.x3p_3.12.0.tar.gz", + "https://bioconductor.org/packages/3.11/data/annotation/src/contrib/pd.vitis.vinifera_3.12.0.tar.gz", + "https://bioconductor.org/packages/3.11/data/annotation/src/contrib/pd.wheat_3.12.0.tar.gz", + "https://bioconductor.org/packages/3.11/data/annotation/src/contrib/pd.x.laevis.2_3.12.0.tar.gz", + "https://bioconductor.org/packages/3.11/data/annotation/src/contrib/pd.x.tropicalis_3.12.0.tar.gz", + "https://bioconductor.org/packages/3.11/data/annotation/src/contrib/pd.xenopus.laevis_3.12.0.tar.gz", + "https://bioconductor.org/packages/3.11/data/annotation/src/contrib/pd.yeast.2_3.12.0.tar.gz", + "https://bioconductor.org/packages/3.11/data/annotation/src/contrib/pd.yg.s98_3.12.0.tar.gz", + "https://bioconductor.org/packages/3.11/data/annotation/src/contrib/pd.zebgene.1.0.st_3.12.0.tar.gz", + "https://bioconductor.org/packages/3.11/data/annotation/src/contrib/pd.zebgene.1.1.st_3.12.0.tar.gz", + "https://bioconductor.org/packages/3.11/data/annotation/src/contrib/pd.zebrafish_3.12.0.tar.gz" +) diff --git a/workers/R/dependencies/affymetrix/renv.lock b/workers/R/dependencies/affymetrix/renv.lock new file mode 100644 index 000000000..5e282445e --- /dev/null +++ b/workers/R/dependencies/affymetrix/renv.lock @@ -0,0 +1,5958 @@ +{ + "R": { + "Version": "3.6.3", + "Repositories": [ + { + "Name": "Bioconductor", + "URL": "https://bioconductor.org/packages/3.11/bioc" + }, + { + "Name": "BioconductorAnnotation", + "URL": "https://bioconductor.org/packages/3.11/data/annotation" + }, + { + "Name": "BioconductorExperiment", + "URL": "https://bioconductor.org/packages/3.11/data/experiment" + }, + { + "Name": "CRAN", + "URL": "https://cloud.r-project.org" + } + ] + }, + "Packages": { + "AnnotationDbi": { + "Package": "AnnotationDbi", + "Version": "1.50.3", + "Source": "URL", + "RemoteType": "url", + "RemoteUrl": "https://bioconductor.org/packages/3.11/bioc/src/contrib/AnnotationDbi_1.50.3.tar.gz", + "git_url": "https://git.bioconductor.org/packages/AnnotationDbi", + "git_branch": "RELEASE_3_11", + "git_last_commit": "efa119c", + "git_last_commit_date": "2020-07-24", + "Hash": "8118f8655ad5604099a0e8ac14090f91", + "Requirements": [ + "Biobase", + "BiocGenerics", + "DBI", + "IRanges", + "RSQLite", + "S4Vectors" + ] + }, + "BH": { + "Package": "BH", + "Version": "1.72.0-3", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "8f9ce74c6417d61f0782cbae5fd2b7b0", + "Requirements": [] + }, + "Biobase": { + "Package": "Biobase", + "Version": "2.48.0", + "Source": "Bioconductor", + "git_url": "https://git.bioconductor.org/packages/Biobase", + "git_branch": "RELEASE_3_11", + "git_last_commit": "4ffadf2", + "git_last_commit_date": "2020-04-27", + "Hash": "da9b1bc36fb35ebbec219dc007657f21", + "Requirements": [ + "BiocGenerics" + ] + }, + "BiocGenerics": { + "Package": "BiocGenerics", + "Version": "0.34.0", + "Source": "Bioconductor", + "git_url": "https://git.bioconductor.org/packages/BiocGenerics", + "git_branch": "RELEASE_3_11", + "git_last_commit": "f7c2020", + "git_last_commit_date": "2020-04-27", + "Hash": "ae191b5608f175de0f69b6302390c705", + "Requirements": [] + }, + "BiocManager": { + "Package": "BiocManager", + "Version": "1.30.19", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "726b3bc83ff8e0c35c7efdb74a462b0d", + "Requirements": [] + }, + "BiocParallel": { + "Package": "BiocParallel", + "Version": "1.22.0", + "Source": "Bioconductor", + "git_url": "https://git.bioconductor.org/packages/BiocParallel", + "git_branch": "RELEASE_3_11", + "git_last_commit": "430511c", + "git_last_commit_date": "2020-04-27", + "Hash": "6457b5a769de3e02704fd1b529a3c6e1", + "Requirements": [ + "BH", + "futile.logger", + "snow" + ] + }, + "Biostrings": { + "Package": "Biostrings", + "Version": "2.56.0", + "Source": "Bioconductor", + "git_url": "https://git.bioconductor.org/packages/Biostrings", + "git_branch": "RELEASE_3_11", + "git_last_commit": "79b7ec8", + "git_last_commit_date": "2020-04-27", + "Hash": "f5d135c565a244740559409e48c410cd", + "Requirements": [ + "BiocGenerics", + "IRanges", + "S4Vectors", + "XVector", + "crayon" + ] + }, + "DBI": { + "Package": "DBI", + "Version": "1.0.0", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "7bc8be0e425da29fe0e10f792bdbb74b", + "Requirements": [] + }, + "DT": { + "Package": "DT", + "Version": "0.14", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "a3580ce0309c94d061c23b0afb4accbd", + "Requirements": [ + "crosstalk", + "htmltools", + "htmlwidgets", + "jsonlite", + "magrittr", + "promises" + ] + }, + "DelayedArray": { + "Package": "DelayedArray", + "Version": "0.14.1", + "Source": "Bioconductor", + "git_url": "https://git.bioconductor.org/packages/DelayedArray", + "git_branch": "RELEASE_3_11", + "git_last_commit": "52230a4", + "git_last_commit_date": "2020-07-13", + "Hash": "8430a6ec606d0d92198ff107f1d98261", + "Requirements": [ + "BiocGenerics", + "IRanges", + "Matrix", + "S4Vectors", + "matrixStats" + ] + }, + "GEOquery": { + "Package": "GEOquery", + "Version": "2.56.0", + "Source": "URL", + "RemoteType": "url", + "RemoteUrl": "https://bioconductor.org/packages/3.11/bioc/src/contrib/GEOquery_2.56.0.tar.gz", + "git_url": "https://git.bioconductor.org/packages/GEOquery", + "git_branch": "RELEASE_3_11", + "git_last_commit": "50417b3", + "git_last_commit_date": "2020-04-27", + "Hash": "4f5f180eb5db85e0741db59fee6158c2", + "Requirements": [ + "Biobase", + "dplyr", + "httr", + "limma", + "magrittr", + "readr", + "tidyr", + "xml2" + ] + }, + "GenomeInfoDb": { + "Package": "GenomeInfoDb", + "Version": "1.24.2", + "Source": "Bioconductor", + "git_url": "https://git.bioconductor.org/packages/GenomeInfoDb", + "git_branch": "RELEASE_3_11", + "git_last_commit": "e3713f3", + "git_last_commit_date": "2020-06-14", + "Hash": "f1556568ab93fd7704380539fca71e6a", + "Requirements": [ + "BiocGenerics", + "GenomeInfoDbData", + "IRanges", + "RCurl", + "S4Vectors" + ] + }, + "GenomeInfoDbData": { + "Package": "GenomeInfoDbData", + "Version": "1.2.3", + "Source": "Bioconductor", + "Hash": "8fe62eac6e27b8e56d51f9ae6030cbcd", + "Requirements": [] + }, + "GenomicRanges": { + "Package": "GenomicRanges", + "Version": "1.40.0", + "Source": "Bioconductor", + "git_url": "https://git.bioconductor.org/packages/GenomicRanges", + "git_branch": "RELEASE_3_11", + "git_last_commit": "a9e18e4", + "git_last_commit_date": "2020-04-27", + "Hash": "05cd2ba8e1e373e9089454cf762df723", + "Requirements": [ + "BiocGenerics", + "GenomeInfoDb", + "IRanges", + "S4Vectors", + "XVector" + ] + }, + "IRanges": { + "Package": "IRanges", + "Version": "2.22.2", + "Source": "Bioconductor", + "git_url": "https://git.bioconductor.org/packages/IRanges", + "git_branch": "RELEASE_3_11", + "git_last_commit": "8c5e991", + "git_last_commit_date": "2020-05-20", + "Hash": "1403fa5c98c5f48b989a6bc5a65c6c25", + "Requirements": [ + "BiocGenerics", + "S4Vectors" + ] + }, + "KernSmooth": { + "Package": "KernSmooth", + "Version": "2.23-20", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "8dcfa99b14c296bc9f1fd64d52fd3ce7", + "Requirements": [] + }, + "MASS": { + "Package": "MASS", + "Version": "7.3-58", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "4bf2c61e656bbc238634c798c208d386", + "Requirements": [] + }, + "Matrix": { + "Package": "Matrix", + "Version": "1.5-1", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "539dc0c0c05636812f1080f473d2c177", + "Requirements": [ + "lattice" + ] + }, + "R6": { + "Package": "R6", + "Version": "2.4.0", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "d4618c4cb36bc46831551c5d85815818", + "Requirements": [] + }, + "RCurl": { + "Package": "RCurl", + "Version": "1.95-4.10", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "6875cb45c7e5e749120442b47ebc04db", + "Requirements": [ + "bitops" + ] + }, + "RSQLite": { + "Package": "RSQLite", + "Version": "2.0", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "162bf21ed2680cd3d386b0c8b119deba", + "Requirements": [ + "BH", + "DBI", + "Rcpp", + "bit64", + "blob", + "memoise", + "pkgconfig", + "plogr" + ] + }, + "Rcpp": { + "Package": "Rcpp", + "Version": "1.0.1", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "d5ae8445d4972caed1c5517ffae908d7", + "Requirements": [] + }, + "S4Vectors": { + "Package": "S4Vectors", + "Version": "0.26.1", + "Source": "Bioconductor", + "git_url": "https://git.bioconductor.org/packages/S4Vectors", + "git_branch": "RELEASE_3_11", + "git_last_commit": "935769c", + "git_last_commit_date": "2020-05-15", + "Hash": "c252d04c13a3a6667d3cc140360780f1", + "Requirements": [ + "BiocGenerics" + ] + }, + "SCAN.UPC": { + "Package": "SCAN.UPC", + "Version": "2.30.0", + "Source": "URL", + "RemoteType": "url", + "RemoteUrl": "https://bioconductor.org/packages/3.11/bioc/src/contrib/SCAN.UPC_2.30.0.tar.gz", + "git_url": "https://git.bioconductor.org/packages/SCAN.UPC", + "git_branch": "RELEASE_3_11", + "git_last_commit": "052d3c4", + "git_last_commit_date": "2020-04-27", + "Hash": "f76f2473345a4c25263772c3c862df0e", + "Requirements": [ + "Biobase", + "Biostrings", + "GEOquery", + "IRanges", + "MASS", + "affy", + "affyio", + "foreach", + "oligo", + "sva" + ] + }, + "SummarizedExperiment": { + "Package": "SummarizedExperiment", + "Version": "1.18.2", + "Source": "Bioconductor", + "git_url": "https://git.bioconductor.org/packages/SummarizedExperiment", + "git_branch": "RELEASE_3_11", + "git_last_commit": "e22fafe", + "git_last_commit_date": "2020-07-09", + "Hash": "811eb16b3d542aa098d4c89f0985f3bc", + "Requirements": [ + "Biobase", + "BiocGenerics", + "DelayedArray", + "GenomeInfoDb", + "GenomicRanges", + "IRanges", + "Matrix", + "S4Vectors" + ] + }, + "XML": { + "Package": "XML", + "Version": "3.98-1.10", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "f24c56597fc23b321a5478f6f3e7824c", + "Requirements": [] + }, + "XVector": { + "Package": "XVector", + "Version": "0.28.0", + "Source": "Bioconductor", + "git_url": "https://git.bioconductor.org/packages/XVector", + "git_branch": "RELEASE_3_11", + "git_last_commit": "8bda737", + "git_last_commit_date": "2020-04-27", + "Hash": "a5669a9d44010120a5c10be7977f0626", + "Requirements": [ + "BiocGenerics", + "IRanges", + "S4Vectors", + "zlibbioc" + ] + }, + "affxparser": { + "Package": "affxparser", + "Version": "1.60.0", + "Source": "Bioconductor", + "git_url": "https://git.bioconductor.org/packages/affxparser", + "git_branch": "RELEASE_3_11", + "git_last_commit": "22b10b1", + "git_last_commit_date": "2020-04-27", + "Hash": "4fca40e4bb842b56d6be95bff88ac85f", + "Requirements": [] + }, + "affy": { + "Package": "affy", + "Version": "1.66.0", + "Source": "URL", + "RemoteType": "url", + "RemoteUrl": "https://bioconductor.org/packages/3.11/bioc/src/contrib/affy_1.66.0.tar.gz", + "git_url": "https://git.bioconductor.org/packages/affy", + "git_branch": "RELEASE_3_11", + "git_last_commit": "ae131f8", + "git_last_commit_date": "2020-04-27", + "Hash": "7d4686f9fa0ba9db6d0f596058dd1a15", + "Requirements": [ + "Biobase", + "BiocGenerics", + "BiocManager", + "affyio", + "preprocessCore", + "zlibbioc" + ] + }, + "affyio": { + "Package": "affyio", + "Version": "1.58.0", + "Source": "URL", + "RemoteType": "url", + "RemoteUrl": "https://bioconductor.org/packages/3.11/bioc/src/contrib/affyio_1.58.0.tar.gz", + "git_url": "https://git.bioconductor.org/packages/affyio", + "git_branch": "RELEASE_3_11", + "git_last_commit": "76fee54", + "git_last_commit_date": "2020-04-27", + "Hash": "841239ddcf5f028105cd3687976948ef", + "Requirements": [ + "zlibbioc" + ] + }, + "annotate": { + "Package": "annotate", + "Version": "1.66.0", + "Source": "Bioconductor", + "git_url": "https://git.bioconductor.org/packages/annotate", + "git_branch": "RELEASE_3_11", + "git_last_commit": "a63378f", + "git_last_commit_date": "2020-04-27", + "Hash": "61677ca20165e7790955cdd1fc27281e", + "Requirements": [ + "AnnotationDbi", + "Biobase", + "BiocGenerics", + "DBI", + "RCurl", + "XML", + "xtable" + ] + }, + "askpass": { + "Package": "askpass", + "Version": "1.1", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "e8a22846fff485f0be3770c2da758713", + "Requirements": [ + "sys" + ] + }, + "assertthat": { + "Package": "assertthat", + "Version": "0.2.1", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "50c838a310445e954bc13f26f26a6ecf", + "Requirements": [] + }, + "backports": { + "Package": "backports", + "Version": "1.1.4", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "b9a4db2667d7e43d197ed12e40781889", + "Requirements": [] + }, + "base64enc": { + "Package": "base64enc", + "Version": "0.1-3", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "543776ae6848fde2f48ff3816d0628bc", + "Requirements": [] + }, + "bit": { + "Package": "bit", + "Version": "1.1-14", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "ac0b4115f7bddd07e733e1ac1697c687", + "Requirements": [] + }, + "bit64": { + "Package": "bit64", + "Version": "0.9-7", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "3338d4a9b1352f5a613e2bdcefe784ea", + "Requirements": [ + "bit" + ] + }, + "bitops": { + "Package": "bitops", + "Version": "1.0-6", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "0b118d5900596bae6c4d4865374536a6", + "Requirements": [] + }, + "blob": { + "Package": "blob", + "Version": "1.1.1", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "3ce988193cfb67e59fde06121bd9f8be", + "Requirements": [ + "prettyunits" + ] + }, + "boot": { + "Package": "boot", + "Version": "1.3-28", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "0baa960e3b49c6176a4f42addcbacc59", + "Requirements": [] + }, + "bovgene10stbtensgprobe": { + "Package": "bovgene10stbtensgprobe", + "Version": "22.0.0", + "Source": "URL", + "RemoteType": "url", + "RemoteUrl": "https://mbni.org/customcdf/22.0.0/ensg.download/bovgene10stbtensgprobe_22.0.0.tar.gz", + "Hash": "0f2f8916fc2e5ca95281c72a3cdfe917", + "Requirements": [ + "AnnotationDbi" + ] + }, + "bovgene11stbtensgprobe": { + "Package": "bovgene11stbtensgprobe", + "Version": "22.0.0", + "Source": "URL", + "RemoteType": "url", + "RemoteUrl": "https://mbni.org/customcdf/22.0.0/ensg.download/bovgene11stbtensgprobe_22.0.0.tar.gz", + "Hash": "9a30b34e562ea508986eba9794043d9d", + "Requirements": [ + "AnnotationDbi" + ] + }, + "bovinebtensgprobe": { + "Package": "bovinebtensgprobe", + "Version": "22.0.0", + "Source": "URL", + "RemoteType": "url", + "RemoteUrl": "https://mbni.org/customcdf/22.0.0/ensg.download/bovinebtensgprobe_22.0.0.tar.gz", + "Hash": "ede0216535fd3c5c4406f5e4fcda9627", + "Requirements": [ + "AnnotationDbi" + ] + }, + "brew": { + "Package": "brew", + "Version": "1.0-6", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "92a5f887f9ae3035ac7afde22ba73ee9", + "Requirements": [] + }, + "callr": { + "Package": "callr", + "Version": "3.4.3", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "643163a00cb536454c624883a10ae0bc", + "Requirements": [ + "R6", + "processx" + ] + }, + "cangene10stcfensgprobe": { + "Package": "cangene10stcfensgprobe", + "Version": "22.0.0", + "Source": "URL", + "RemoteType": "url", + "RemoteUrl": "https://mbni.org/customcdf/22.0.0/ensg.download/cangene10stcfensgprobe_22.0.0.tar.gz", + "Hash": "3c07fbcd5c313d469d0a6240f04a173e", + "Requirements": [ + "AnnotationDbi" + ] + }, + "cangene11stcfensgprobe": { + "Package": "cangene11stcfensgprobe", + "Version": "22.0.0", + "Source": "URL", + "RemoteType": "url", + "RemoteUrl": "https://mbni.org/customcdf/22.0.0/ensg.download/cangene11stcfensgprobe_22.0.0.tar.gz", + "Hash": "220a1678f78dd6ef664996c76cb1c62f", + "Requirements": [ + "AnnotationDbi" + ] + }, + "canine2cfensgprobe": { + "Package": "canine2cfensgprobe", + "Version": "22.0.0", + "Source": "URL", + "RemoteType": "url", + "RemoteUrl": "https://mbni.org/customcdf/22.0.0/ensg.download/canine2cfensgprobe_22.0.0.tar.gz", + "Hash": "c78f430adf8a4dcba1852fbc2ee73fa3", + "Requirements": [ + "AnnotationDbi" + ] + }, + "canine2pmcfensgprobe": { + "Package": "canine2pmcfensgprobe", + "Version": "22.0.0", + "Source": "URL", + "RemoteType": "url", + "RemoteUrl": "https://mbni.org/customcdf/22.0.0/ensg.download/canine2pmcfensgprobe_22.0.0.tar.gz", + "Hash": "82caba97f2b64aafe84b2c2e017c6e2c", + "Requirements": [ + "AnnotationDbi" + ] + }, + "celegansceensgprobe": { + "Package": "celegansceensgprobe", + "Version": "22.0.0", + "Source": "URL", + "RemoteType": "url", + "RemoteUrl": "https://mbni.org/customcdf/22.0.0/ensg.download/celegansceensgprobe_22.0.0.tar.gz", + "Hash": "c9bd264a581fd374c8f6ff1f4b14235f", + "Requirements": [ + "AnnotationDbi" + ] + }, + "chickenggensgprobe": { + "Package": "chickenggensgprobe", + "Version": "22.0.0", + "Source": "URL", + "RemoteType": "url", + "RemoteUrl": "https://mbni.org/customcdf/22.0.0/ensg.download/chickenggensgprobe_22.0.0.tar.gz", + "Hash": "24ab2dfb9a8de7da71a9ec651161ec91", + "Requirements": [ + "AnnotationDbi" + ] + }, + "chigene10stggensgprobe": { + "Package": "chigene10stggensgprobe", + "Version": "22.0.0", + "Source": "URL", + "RemoteType": "url", + "RemoteUrl": "https://mbni.org/customcdf/22.0.0/ensg.download/chigene10stggensgprobe_22.0.0.tar.gz", + "Hash": "de09679f96e6d60252dae5dbb94b01b7", + "Requirements": [ + "AnnotationDbi" + ] + }, + "chigene11stggensgprobe": { + "Package": "chigene11stggensgprobe", + "Version": "22.0.0", + "Source": "URL", + "RemoteType": "url", + "RemoteUrl": "https://mbni.org/customcdf/22.0.0/ensg.download/chigene11stggensgprobe_22.0.0.tar.gz", + "Hash": "d3971a4f125a7cac5d936ef49859408f", + "Requirements": [ + "AnnotationDbi" + ] + }, + "chogene20stmmensgprobe": { + "Package": "chogene20stmmensgprobe", + "Version": "22.0.0", + "Source": "URL", + "RemoteType": "url", + "RemoteUrl": "https://mbni.org/customcdf/22.0.0/ensg.download/chogene20stmmensgprobe_22.0.0.tar.gz", + "Hash": "c7bb55ed13d7a0c357f840a2513adad8", + "Requirements": [ + "AnnotationDbi" + ] + }, + "chogene21stmmensgprobe": { + "Package": "chogene21stmmensgprobe", + "Version": "22.0.0", + "Source": "URL", + "RemoteType": "url", + "RemoteUrl": "https://mbni.org/customcdf/22.0.0/ensg.download/chogene21stmmensgprobe_22.0.0.tar.gz", + "Hash": "3156824087c91e69be8d2b983d26cb58", + "Requirements": [ + "AnnotationDbi" + ] + }, + "clariomdhumanhsensgprobe": { + "Package": "clariomdhumanhsensgprobe", + "Version": "22.0.0", + "Source": "URL", + "RemoteType": "url", + "RemoteUrl": "https://mbni.org/customcdf/22.0.0/ensg.download/clariomdhumanhsensgprobe_22.0.0.tar.gz", + "Hash": "0338d8d542f00f2ee2e6f02944a67d6e", + "Requirements": [ + "AnnotationDbi" + ] + }, + "clariomdmousemmensgprobe": { + "Package": "clariomdmousemmensgprobe", + "Version": "22.0.0", + "Source": "URL", + "RemoteType": "url", + "RemoteUrl": "https://mbni.org/customcdf/22.0.0/ensg.download/clariomdmousemmensgprobe_22.0.0.tar.gz", + "Hash": "c38095308128b4f5337508c6ecad320e", + "Requirements": [ + "AnnotationDbi" + ] + }, + "clariomdratrnensgprobe": { + "Package": "clariomdratrnensgprobe", + "Version": "22.0.0", + "Source": "URL", + "RemoteType": "url", + "RemoteUrl": "https://mbni.org/customcdf/22.0.0/ensg.download/clariomdratrnensgprobe_22.0.0.tar.gz", + "Hash": "d1fbd47318dac632752d040b4f55ad1e", + "Requirements": [ + "AnnotationDbi" + ] + }, + "clariomshumanhsensgprobe": { + "Package": "clariomshumanhsensgprobe", + "Version": "22.0.0", + "Source": "URL", + "RemoteType": "url", + "RemoteUrl": "https://mbni.org/customcdf/22.0.0/ensg.download/clariomshumanhsensgprobe_22.0.0.tar.gz", + "Hash": "6cde955ea4ee547be8210973fc51bffe", + "Requirements": [ + "AnnotationDbi" + ] + }, + "clariomshumanhthsensgprobe": { + "Package": "clariomshumanhthsensgprobe", + "Version": "22.0.0", + "Source": "URL", + "RemoteType": "url", + "RemoteUrl": "https://mbni.org/customcdf/22.0.0/ensg.download/clariomshumanhthsensgprobe_22.0.0.tar.gz", + "Hash": "e378b6cf87aeb7e4b2a62a51ede4645f", + "Requirements": [ + "AnnotationDbi" + ] + }, + "clariomsmousehtmmensgprobe": { + "Package": "clariomsmousehtmmensgprobe", + "Version": "22.0.0", + "Source": "URL", + "RemoteType": "url", + "RemoteUrl": "https://mbni.org/customcdf/22.0.0/ensg.download/clariomsmousehtmmensgprobe_22.0.0.tar.gz", + "Hash": "94310a2c27b478dc85d3c0d848706ad8", + "Requirements": [ + "AnnotationDbi" + ] + }, + "clariomsmousemmensgprobe": { + "Package": "clariomsmousemmensgprobe", + "Version": "22.0.0", + "Source": "URL", + "RemoteType": "url", + "RemoteUrl": "https://mbni.org/customcdf/22.0.0/ensg.download/clariomsmousemmensgprobe_22.0.0.tar.gz", + "Hash": "ed514e3e601f8fd981ddd72d0f63e1a7", + "Requirements": [ + "AnnotationDbi" + ] + }, + "clariomsrathtrnensgprobe": { + "Package": "clariomsrathtrnensgprobe", + "Version": "22.0.0", + "Source": "URL", + "RemoteType": "url", + "RemoteUrl": "https://mbni.org/customcdf/22.0.0/ensg.download/clariomsrathtrnensgprobe_22.0.0.tar.gz", + "Hash": "c72460c841833d727bacf3a9767711b1", + "Requirements": [ + "AnnotationDbi" + ] + }, + "clariomsratrnensgprobe": { + "Package": "clariomsratrnensgprobe", + "Version": "22.0.0", + "Source": "URL", + "RemoteType": "url", + "RemoteUrl": "https://mbni.org/customcdf/22.0.0/ensg.download/clariomsratrnensgprobe_22.0.0.tar.gz", + "Hash": "6397cdc881fac8ad8edf3e4206b0b521", + "Requirements": [ + "AnnotationDbi" + ] + }, + "class": { + "Package": "class", + "Version": "7.3-20", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "da09d82223e669d270e47ed24ac8686e", + "Requirements": [ + "MASS" + ] + }, + "cli": { + "Package": "cli", + "Version": "3.6.0", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "3177a5a16c243adc199ba33117bd9657", + "Requirements": [] + }, + "clipr": { + "Package": "clipr", + "Version": "0.6.0", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "8633315be5a50b858a69615dc1234c3b", + "Requirements": [] + }, + "cluster": { + "Package": "cluster", + "Version": "2.1.4", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "5edbbabab6ce0bf7900a74fd4358628e", + "Requirements": [] + }, + "codetools": { + "Package": "codetools", + "Version": "0.2-18", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "019388fc48e48b3da0d3a76ff94608a8", + "Requirements": [] + }, + "commonmark": { + "Package": "commonmark", + "Version": "1.7", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "0f22be39ec1d141fd03683c06f3a6e67", + "Requirements": [] + }, + "covr": { + "Package": "covr", + "Version": "3.5.0", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "cbc6df1ef6ee576f844f973c1fc04ab4", + "Requirements": [ + "crayon", + "digest", + "httr", + "jsonlite", + "rex", + "withr", + "yaml" + ] + }, + "crayon": { + "Package": "crayon", + "Version": "1.3.4", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "0d57bc8e27b7ba9e45dba825ebc0de6b", + "Requirements": [] + }, + "crosstalk": { + "Package": "crosstalk", + "Version": "1.1.0.1", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "ae55f5d7c02f0ab43c58dd050694f2b4", + "Requirements": [ + "R6", + "htmltools", + "jsonlite", + "lazyeval" + ] + }, + "curl": { + "Package": "curl", + "Version": "3.3", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "c71bf321a357db97242bc233a1f99a55", + "Requirements": [] + }, + "cyrgene10stmamuensgprobe": { + "Package": "cyrgene10stmamuensgprobe", + "Version": "22.0.0", + "Source": "URL", + "RemoteType": "url", + "RemoteUrl": "https://mbni.org/customcdf/22.0.0/ensg.download/cyrgene10stmamuensgprobe_22.0.0.tar.gz", + "Hash": "3fc60a34f303bf15c9a52616e41e0db5", + "Requirements": [ + "AnnotationDbi" + ] + }, + "cyrgene11stmamuensgprobe": { + "Package": "cyrgene11stmamuensgprobe", + "Version": "22.0.0", + "Source": "URL", + "RemoteType": "url", + "RemoteUrl": "https://mbni.org/customcdf/22.0.0/ensg.download/cyrgene11stmamuensgprobe_22.0.0.tar.gz", + "Hash": "299169558d61c16243246eaffd58b072", + "Requirements": [ + "AnnotationDbi" + ] + }, + "desc": { + "Package": "desc", + "Version": "1.2.0", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "6c8fe8fa26a23b79949375d372c7b395", + "Requirements": [ + "R6", + "assertthat", + "crayon", + "rprojroot" + ] + }, + "devtools": { + "Package": "devtools", + "Version": "2.3.1", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "271df6a328617c64149283e98b1cd8da", + "Requirements": [ + "DT", + "callr", + "cli", + "covr", + "desc", + "ellipsis", + "httr", + "jsonlite", + "memoise", + "pkgbuild", + "pkgload", + "rcmdcheck", + "remotes", + "rlang", + "roxygen2", + "rstudioapi", + "rversions", + "sessioninfo", + "testthat", + "usethis", + "withr" + ] + }, + "digest": { + "Package": "digest", + "Version": "0.6.19", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "2ac7f712959404638ccb1977809eabdd", + "Requirements": [] + }, + "dplyr": { + "Package": "dplyr", + "Version": "1.0.2", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "d0509913b27ea898189ee664b6030dc2", + "Requirements": [ + "R6", + "ellipsis", + "generics", + "glue", + "lifecycle", + "magrittr", + "rlang", + "tibble", + "tidyselect", + "vctrs" + ] + }, + "drogene10stdmensgprobe": { + "Package": "drogene10stdmensgprobe", + "Version": "22.0.0", + "Source": "URL", + "RemoteType": "url", + "RemoteUrl": "https://mbni.org/customcdf/22.0.0/ensg.download/drogene10stdmensgprobe_22.0.0.tar.gz", + "Hash": "a6e69a3942bd21e83fa4a881e14e978d", + "Requirements": [ + "AnnotationDbi" + ] + }, + "drogene11stdmensgprobe": { + "Package": "drogene11stdmensgprobe", + "Version": "22.0.0", + "Source": "URL", + "RemoteType": "url", + "RemoteUrl": "https://mbni.org/customcdf/22.0.0/ensg.download/drogene11stdmensgprobe_22.0.0.tar.gz", + "Hash": "e7b2e4430e272bbfbe09c875332d4224", + "Requirements": [ + "AnnotationDbi" + ] + }, + "drosgenome1dmensgprobe": { + "Package": "drosgenome1dmensgprobe", + "Version": "22.0.0", + "Source": "URL", + "RemoteType": "url", + "RemoteUrl": "https://mbni.org/customcdf/22.0.0/ensg.download/drosgenome1dmensgprobe_22.0.0.tar.gz", + "Hash": "c782e7c9f1faf8b340f3d925dd79304e", + "Requirements": [ + "AnnotationDbi" + ] + }, + "drosophila2dmensgprobe": { + "Package": "drosophila2dmensgprobe", + "Version": "22.0.0", + "Source": "URL", + "RemoteType": "url", + "RemoteUrl": "https://mbni.org/customcdf/22.0.0/ensg.download/drosophila2dmensgprobe_22.0.0.tar.gz", + "Hash": "2e42c332a3f5bb18b9880e8137590eef", + "Requirements": [ + "AnnotationDbi" + ] + }, + "edgeR": { + "Package": "edgeR", + "Version": "3.30.3", + "Source": "Bioconductor", + "git_url": "https://git.bioconductor.org/packages/edgeR", + "git_branch": "RELEASE_3_11", + "git_last_commit": "7a3a272", + "git_last_commit_date": "2020-06-02", + "Hash": "fed69054bac345df0b60fc9afa7101e9", + "Requirements": [ + "Rcpp", + "limma", + "locfit" + ] + }, + "elegene10stceensgprobe": { + "Package": "elegene10stceensgprobe", + "Version": "22.0.0", + "Source": "URL", + "RemoteType": "url", + "RemoteUrl": "https://mbni.org/customcdf/22.0.0/ensg.download/elegene10stceensgprobe_22.0.0.tar.gz", + "Hash": "79edad2a1c2f65f363b17f0e592befa9", + "Requirements": [ + "AnnotationDbi" + ] + }, + "elegene11stceensgprobe": { + "Package": "elegene11stceensgprobe", + "Version": "22.0.0", + "Source": "URL", + "RemoteType": "url", + "RemoteUrl": "https://mbni.org/customcdf/22.0.0/ensg.download/elegene11stceensgprobe_22.0.0.tar.gz", + "Hash": "a100f1ba98041940e9e4e1be594db9a2", + "Requirements": [ + "AnnotationDbi" + ] + }, + "ellipsis": { + "Package": "ellipsis", + "Version": "0.3.1", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "fd2844b3a43ae2d27e70ece2df1b4e2a", + "Requirements": [ + "rlang" + ] + }, + "equgene10steqcaensgprobe": { + "Package": "equgene10steqcaensgprobe", + "Version": "22.0.0", + "Source": "URL", + "RemoteType": "url", + "RemoteUrl": "https://mbni.org/customcdf/22.0.0/ensg.download/equgene10steqcaensgprobe_22.0.0.tar.gz", + "Hash": "9f44cc067a066f0879b372ecba9e740e", + "Requirements": [ + "AnnotationDbi" + ] + }, + "equgene11steqcaensgprobe": { + "Package": "equgene11steqcaensgprobe", + "Version": "22.0.0", + "Source": "URL", + "RemoteType": "url", + "RemoteUrl": "https://mbni.org/customcdf/22.0.0/ensg.download/equgene11steqcaensgprobe_22.0.0.tar.gz", + "Hash": "2d6cf9f7604053b5fba365ebb0f4edd3", + "Requirements": [ + "AnnotationDbi" + ] + }, + "evaluate": { + "Package": "evaluate", + "Version": "0.14", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "ec8ca05cffcc70569eaaad8469d2a3a7", + "Requirements": [] + }, + "fansi": { + "Package": "fansi", + "Version": "0.4.0", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "b31d9e5d051553d1177083aeba04b5b9", + "Requirements": [] + }, + "ff": { + "Package": "ff", + "Version": "2.2-14", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "2f745ad9a324bf4247df10ea6ebc3953", + "Requirements": [ + "bit" + ] + }, + "foreach": { + "Package": "foreach", + "Version": "1.5.2", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "618609b42c9406731ead03adf5379850", + "Requirements": [ + "codetools", + "iterators" + ] + }, + "foreign": { + "Package": "foreign", + "Version": "0.8-76", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "649b9c7a979d50d869578c73fed072cd", + "Requirements": [] + }, + "formatR": { + "Package": "formatR", + "Version": "1.14", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "63cb26d12517c7863f5abb006c5e0f25", + "Requirements": [] + }, + "fs": { + "Package": "fs", + "Version": "1.4.2", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "8c04112383ca1988e96f429255f95675", + "Requirements": [] + }, + "futile.logger": { + "Package": "futile.logger", + "Version": "1.4.3", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "99f0ace8c05ec7d3683d27083c4f1e7e", + "Requirements": [ + "futile.options", + "lambda.r" + ] + }, + "futile.options": { + "Package": "futile.options", + "Version": "1.0.1", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "0d9bf02413ddc2bbe8da9ce369dcdd2b", + "Requirements": [] + }, + "genefilter": { + "Package": "genefilter", + "Version": "1.70.0", + "Source": "URL", + "RemoteType": "url", + "RemoteUrl": "https://bioconductor.org/packages/3.11/bioc/src/contrib/genefilter_1.70.0.tar.gz", + "git_url": "https://git.bioconductor.org/packages/genefilter", + "git_branch": "RELEASE_3_11", + "git_last_commit": "a071480", + "git_last_commit_date": "2020-04-27", + "Hash": "8db2ebb178f95b85a77813e2d99c6b40", + "Requirements": [ + "AnnotationDbi", + "Biobase", + "BiocGenerics", + "annotate", + "survival" + ] + }, + "generics": { + "Package": "generics", + "Version": "0.1.3", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "15e9634c0fcd294799e9b2e929ed1b86", + "Requirements": [] + }, + "gh": { + "Package": "gh", + "Version": "1.1.0", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "89ea5998938d1ad55f035c8a86f96b74", + "Requirements": [ + "cli", + "httr", + "ini", + "jsonlite" + ] + }, + "git2r": { + "Package": "git2r", + "Version": "0.27.1", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "531a82d1beed1f545beb25f4f5945bf7", + "Requirements": [] + }, + "glue": { + "Package": "glue", + "Version": "1.6.2", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "4f2596dfb05dac67b9dc558e5c6fba2e", + "Requirements": [] + }, + "gngnf1bahsensgprobe": { + "Package": "gngnf1bahsensgprobe", + "Version": "22.0.0", + "Source": "URL", + "RemoteType": "url", + "RemoteUrl": "https://mbni.org/customcdf/22.0.0/ensg.download/gngnf1bahsensgprobe_22.0.0.tar.gz", + "Hash": "0b71fe88bf3590dc4f0d9fc1f38f6d85", + "Requirements": [ + "AnnotationDbi" + ] + }, + "gngnf1musammensgprobe": { + "Package": "gngnf1musammensgprobe", + "Version": "22.0.0", + "Source": "URL", + "RemoteType": "url", + "RemoteUrl": "https://mbni.org/customcdf/22.0.0/ensg.download/gngnf1musammensgprobe_22.0.0.tar.gz", + "Hash": "a11abd250c8501c936826d3038d3c81d", + "Requirements": [ + "AnnotationDbi" + ] + }, + "hcg110hsensgprobe": { + "Package": "hcg110hsensgprobe", + "Version": "22.0.0", + "Source": "URL", + "RemoteType": "url", + "RemoteUrl": "https://mbni.org/customcdf/22.0.0/ensg.download/hcg110hsensgprobe_22.0.0.tar.gz", + "Hash": "2382a4d470148a607f6337d3dc1392e5", + "Requirements": [ + "AnnotationDbi" + ] + }, + "hgfocushsensgprobe": { + "Package": "hgfocushsensgprobe", + "Version": "22.0.0", + "Source": "URL", + "RemoteType": "url", + "RemoteUrl": "https://mbni.org/customcdf/22.0.0/ensg.download/hgfocushsensgprobe_22.0.0.tar.gz", + "Hash": "fefdf348384e5f5daf89949ac90ee2ec", + "Requirements": [ + "AnnotationDbi" + ] + }, + "hglue20hsensgprobe": { + "Package": "hglue20hsensgprobe", + "Version": "22.0.0", + "Source": "URL", + "RemoteType": "url", + "RemoteUrl": "https://mbni.org/customcdf/22.0.0/ensg.download/hglue20hsensgprobe_22.0.0.tar.gz", + "Hash": "ef919aeffd12b71c4176eb98293df668", + "Requirements": [ + "AnnotationDbi" + ] + }, + "hgu133a2hsensgprobe": { + "Package": "hgu133a2hsensgprobe", + "Version": "22.0.0", + "Source": "URL", + "RemoteType": "url", + "RemoteUrl": "https://mbni.org/customcdf/22.0.0/ensg.download/hgu133a2hsensgprobe_22.0.0.tar.gz", + "Hash": "6a298e8e6c7d72bbf9ad6fc718c6475e", + "Requirements": [ + "AnnotationDbi" + ] + }, + "hgu133ahsensgprobe": { + "Package": "hgu133ahsensgprobe", + "Version": "22.0.0", + "Source": "URL", + "RemoteType": "url", + "RemoteUrl": "https://mbni.org/customcdf/22.0.0/ensg.download/hgu133ahsensgprobe_22.0.0.tar.gz", + "Hash": "2fc701a661efd831d3420f80bdc210aa", + "Requirements": [ + "AnnotationDbi" + ] + }, + "hgu133bhsensgprobe": { + "Package": "hgu133bhsensgprobe", + "Version": "22.0.0", + "Source": "URL", + "RemoteType": "url", + "RemoteUrl": "https://mbni.org/customcdf/22.0.0/ensg.download/hgu133bhsensgprobe_22.0.0.tar.gz", + "Hash": "af2eaaff811c9578959111dd3f4856f3", + "Requirements": [ + "AnnotationDbi" + ] + }, + "hgu133plus2hsensgprobe": { + "Package": "hgu133plus2hsensgprobe", + "Version": "22.0.0", + "Source": "URL", + "RemoteType": "url", + "RemoteUrl": "https://mbni.org/customcdf/22.0.0/ensg.download/hgu133plus2hsensgprobe_22.0.0.tar.gz", + "Hash": "2cdaade2be9d9b60ac7e8479af77f0d6", + "Requirements": [ + "AnnotationDbi" + ] + }, + "hgu219hsensgprobe": { + "Package": "hgu219hsensgprobe", + "Version": "22.0.0", + "Source": "URL", + "RemoteType": "url", + "RemoteUrl": "https://mbni.org/customcdf/22.0.0/ensg.download/hgu219hsensgprobe_22.0.0.tar.gz", + "Hash": "7ce6584d368325333f6a5e68a453e163", + "Requirements": [ + "AnnotationDbi" + ] + }, + "hgu95ahsensgprobe": { + "Package": "hgu95ahsensgprobe", + "Version": "22.0.0", + "Source": "URL", + "RemoteType": "url", + "RemoteUrl": "https://mbni.org/customcdf/22.0.0/ensg.download/hgu95ahsensgprobe_22.0.0.tar.gz", + "Hash": "e8a759b0d3058003640cc5aafaf5bcde", + "Requirements": [ + "AnnotationDbi" + ] + }, + "hgu95av2hsensgprobe": { + "Package": "hgu95av2hsensgprobe", + "Version": "22.0.0", + "Source": "URL", + "RemoteType": "url", + "RemoteUrl": "https://mbni.org/customcdf/22.0.0/ensg.download/hgu95av2hsensgprobe_22.0.0.tar.gz", + "Hash": "68fa8e53177ad06eca3c93db3c47303e", + "Requirements": [ + "AnnotationDbi" + ] + }, + "hgu95bhsensgprobe": { + "Package": "hgu95bhsensgprobe", + "Version": "22.0.0", + "Source": "URL", + "RemoteType": "url", + "RemoteUrl": "https://mbni.org/customcdf/22.0.0/ensg.download/hgu95bhsensgprobe_22.0.0.tar.gz", + "Hash": "903a9ed33067c9fd2082f17dbfec779b", + "Requirements": [ + "AnnotationDbi" + ] + }, + "hgu95chsensgprobe": { + "Package": "hgu95chsensgprobe", + "Version": "22.0.0", + "Source": "URL", + "RemoteType": "url", + "RemoteUrl": "https://mbni.org/customcdf/22.0.0/ensg.download/hgu95chsensgprobe_22.0.0.tar.gz", + "Hash": "17c8270194e6fb8cd2e3122b4918e315", + "Requirements": [ + "AnnotationDbi" + ] + }, + "hgu95dhsensgprobe": { + "Package": "hgu95dhsensgprobe", + "Version": "22.0.0", + "Source": "URL", + "RemoteType": "url", + "RemoteUrl": "https://mbni.org/customcdf/22.0.0/ensg.download/hgu95dhsensgprobe_22.0.0.tar.gz", + "Hash": "70ee4a984dfcb42ed502e932edde87b8", + "Requirements": [ + "AnnotationDbi" + ] + }, + "hgu95ehsensgprobe": { + "Package": "hgu95ehsensgprobe", + "Version": "22.0.0", + "Source": "URL", + "RemoteType": "url", + "RemoteUrl": "https://mbni.org/customcdf/22.0.0/ensg.download/hgu95ehsensgprobe_22.0.0.tar.gz", + "Hash": "b5a593aeff3b5bd1f18fc23e0ee7c6b5", + "Requirements": [ + "AnnotationDbi" + ] + }, + "highr": { + "Package": "highr", + "Version": "0.8", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "4dc5bb88961e347a0f4d8aad597cbfac", + "Requirements": [] + }, + "hms": { + "Package": "hms", + "Version": "0.4.2", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "b1d40b416da234147d5869a009458702", + "Requirements": [ + "pkgconfig", + "rlang" + ] + }, + "hta20hsensgprobe": { + "Package": "hta20hsensgprobe", + "Version": "22.0.0", + "Source": "URL", + "RemoteType": "url", + "RemoteUrl": "https://mbni.org/customcdf/22.0.0/ensg.download/hta20hsensgprobe_22.0.0.tar.gz", + "Hash": "28f6512e3e1b4d36737ada3c5fdd3f53", + "Requirements": [ + "AnnotationDbi" + ] + }, + "hthgu133ahsensgprobe": { + "Package": "hthgu133ahsensgprobe", + "Version": "22.0.0", + "Source": "URL", + "RemoteType": "url", + "RemoteUrl": "https://mbni.org/customcdf/22.0.0/ensg.download/hthgu133ahsensgprobe_22.0.0.tar.gz", + "Hash": "2219357b7db3310bbc3013e512181ab1", + "Requirements": [ + "AnnotationDbi" + ] + }, + "hthgu133bhsensgprobe": { + "Package": "hthgu133bhsensgprobe", + "Version": "22.0.0", + "Source": "URL", + "RemoteType": "url", + "RemoteUrl": "https://mbni.org/customcdf/22.0.0/ensg.download/hthgu133bhsensgprobe_22.0.0.tar.gz", + "Hash": "b10f1e4bafec603f33c9477cd4852dbd", + "Requirements": [ + "AnnotationDbi" + ] + }, + "hthgu133pluspmhsensgprobe": { + "Package": "hthgu133pluspmhsensgprobe", + "Version": "22.0.0", + "Source": "URL", + "RemoteType": "url", + "RemoteUrl": "https://mbni.org/customcdf/22.0.0/ensg.download/hthgu133pluspmhsensgprobe_22.0.0.tar.gz", + "Hash": "c4f1a6c03969628eb5cd7f178d440dfd", + "Requirements": [ + "AnnotationDbi" + ] + }, + "htmg430ammensgprobe": { + "Package": "htmg430ammensgprobe", + "Version": "22.0.0", + "Source": "URL", + "RemoteType": "url", + "RemoteUrl": "https://mbni.org/customcdf/22.0.0/ensg.download/htmg430ammensgprobe_22.0.0.tar.gz", + "Hash": "d237023099ee22633e15c9f253889be7", + "Requirements": [ + "AnnotationDbi" + ] + }, + "htmg430bmmensgprobe": { + "Package": "htmg430bmmensgprobe", + "Version": "22.0.0", + "Source": "URL", + "RemoteType": "url", + "RemoteUrl": "https://mbni.org/customcdf/22.0.0/ensg.download/htmg430bmmensgprobe_22.0.0.tar.gz", + "Hash": "35dcf3941b4a994a467449b0431391e0", + "Requirements": [ + "AnnotationDbi" + ] + }, + "htmg430pmmmensgprobe": { + "Package": "htmg430pmmmensgprobe", + "Version": "22.0.0", + "Source": "URL", + "RemoteType": "url", + "RemoteUrl": "https://mbni.org/customcdf/22.0.0/ensg.download/htmg430pmmmensgprobe_22.0.0.tar.gz", + "Hash": "90c3be3baa266b5009ffa0f9a6026ea5", + "Requirements": [ + "AnnotationDbi" + ] + }, + "htmltools": { + "Package": "htmltools", + "Version": "0.5.0", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "7d651b7131794fe007b1ad6f21aaa401", + "Requirements": [ + "base64enc", + "digest", + "rlang" + ] + }, + "htmlwidgets": { + "Package": "htmlwidgets", + "Version": "1.5.1", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "41bace23583fbc25089edae324de2dc3", + "Requirements": [ + "htmltools", + "jsonlite", + "yaml" + ] + }, + "htrat230pmrnensgprobe": { + "Package": "htrat230pmrnensgprobe", + "Version": "22.0.0", + "Source": "URL", + "RemoteType": "url", + "RemoteUrl": "https://mbni.org/customcdf/22.0.0/ensg.download/htrat230pmrnensgprobe_22.0.0.tar.gz", + "Hash": "c176d5a6e28fdb0f06db6259c4eba33c", + "Requirements": [ + "AnnotationDbi" + ] + }, + "htratfocusrnensgprobe": { + "Package": "htratfocusrnensgprobe", + "Version": "22.0.0", + "Source": "URL", + "RemoteType": "url", + "RemoteUrl": "https://mbni.org/customcdf/22.0.0/ensg.download/htratfocusrnensgprobe_22.0.0.tar.gz", + "Hash": "23b2365cda2fd5b9cda558edb27d319d", + "Requirements": [ + "AnnotationDbi" + ] + }, + "httr": { + "Package": "httr", + "Version": "1.4.1", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "7146fea4685b4252ebf478978c75f597", + "Requirements": [ + "R6", + "curl", + "jsonlite", + "mime", + "openssl" + ] + }, + "hu6800hsensgprobe": { + "Package": "hu6800hsensgprobe", + "Version": "22.0.0", + "Source": "URL", + "RemoteType": "url", + "RemoteUrl": "https://mbni.org/customcdf/22.0.0/ensg.download/hu6800hsensgprobe_22.0.0.tar.gz", + "Hash": "3817e088bc515f26b17e147b47a6b7b8", + "Requirements": [ + "AnnotationDbi" + ] + }, + "huex10sthsensgprobe": { + "Package": "huex10sthsensgprobe", + "Version": "22.0.0", + "Source": "URL", + "RemoteType": "url", + "RemoteUrl": "https://mbni.org/customcdf/22.0.0/ensg.download/huex10sthsensgprobe_22.0.0.tar.gz", + "Hash": "aa0e3a8d31c028ebdd06d0eb30566c77", + "Requirements": [ + "AnnotationDbi" + ] + }, + "hugene10sthsensgprobe": { + "Package": "hugene10sthsensgprobe", + "Version": "22.0.0", + "Source": "URL", + "RemoteType": "url", + "RemoteUrl": "https://mbni.org/customcdf/22.0.0/ensg.download/hugene10sthsensgprobe_22.0.0.tar.gz", + "Hash": "84562ab57fe068be425370679728973b", + "Requirements": [ + "AnnotationDbi" + ] + }, + "hugene11sthsensgprobe": { + "Package": "hugene11sthsensgprobe", + "Version": "22.0.0", + "Source": "URL", + "RemoteType": "url", + "RemoteUrl": "https://mbni.org/customcdf/22.0.0/ensg.download/hugene11sthsensgprobe_22.0.0.tar.gz", + "Hash": "35b772f85615e17f4e5aa53d3ebc4eff", + "Requirements": [ + "AnnotationDbi" + ] + }, + "hugene20sthsensgprobe": { + "Package": "hugene20sthsensgprobe", + "Version": "22.0.0", + "Source": "URL", + "RemoteType": "url", + "RemoteUrl": "https://mbni.org/customcdf/22.0.0/ensg.download/hugene20sthsensgprobe_22.0.0.tar.gz", + "Hash": "17d4cc2257f5eb430e307ac42308fe81", + "Requirements": [ + "AnnotationDbi" + ] + }, + "hugene21sthsensgprobe": { + "Package": "hugene21sthsensgprobe", + "Version": "22.0.0", + "Source": "URL", + "RemoteType": "url", + "RemoteUrl": "https://mbni.org/customcdf/22.0.0/ensg.download/hugene21sthsensgprobe_22.0.0.tar.gz", + "Hash": "71ea5226d8a79a139400dff193216c16", + "Requirements": [ + "AnnotationDbi" + ] + }, + "ini": { + "Package": "ini", + "Version": "0.3.1", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "6154ec2223172bce8162d4153cda21f7", + "Requirements": [] + }, + "iterators": { + "Package": "iterators", + "Version": "1.0.14", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "8954069286b4b2b0d023d1b288dce978", + "Requirements": [] + }, + "jnj384screenhsensgprobe": { + "Package": "jnj384screenhsensgprobe", + "Version": "22.0.0", + "Source": "URL", + "RemoteType": "url", + "RemoteUrl": "https://mbni.org/customcdf/22.0.0/ensg.download/jnj384screenhsensgprobe_22.0.0.tar.gz", + "Hash": "867f0597943b3dafd80ca9d88b8b1dfc", + "Requirements": [ + "AnnotationDbi" + ] + }, + "jsonlite": { + "Package": "jsonlite", + "Version": "1.7.0", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "2657f20b9a74c996c602e74ebe540b06", + "Requirements": [] + }, + "knitr": { + "Package": "knitr", + "Version": "1.29", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "e5f4c41c17df8cdf7b0df12117c0d99a", + "Requirements": [ + "evaluate", + "highr", + "markdown", + "stringr", + "xfun", + "yaml" + ] + }, + "lambda.r": { + "Package": "lambda.r", + "Version": "1.2.4", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "b1e925c4b9ffeb901bacf812cbe9a6ad", + "Requirements": [ + "formatR" + ] + }, + "later": { + "Package": "later", + "Version": "1.1.0.1", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "d0a62b247165aabf397fded504660d8a", + "Requirements": [ + "BH", + "Rcpp", + "rlang" + ] + }, + "lattice": { + "Package": "lattice", + "Version": "0.20-45", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "b64cdbb2b340437c4ee047a1f4c4377b", + "Requirements": [] + }, + "lazyeval": { + "Package": "lazyeval", + "Version": "0.2.2", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "d908914ae53b04d4c0c0fd72ecc35370", + "Requirements": [] + }, + "lifecycle": { + "Package": "lifecycle", + "Version": "1.0.3", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "001cecbeac1cff9301bdc3775ee46a86", + "Requirements": [ + "cli", + "glue", + "rlang" + ] + }, + "limma": { + "Package": "limma", + "Version": "3.44.3", + "Source": "URL", + "RemoteType": "url", + "RemoteUrl": "https://bioconductor.org/packages/3.11/bioc/src/contrib/limma_3.44.3.tar.gz", + "git_url": "https://git.bioconductor.org/packages/limma", + "git_branch": "RELEASE_3_11", + "git_last_commit": "90275de", + "git_last_commit_date": "2020-06-12", + "Hash": "6f85e30aa587815acc9551390ff0bbec", + "Requirements": [] + }, + "locfit": { + "Package": "locfit", + "Version": "1.5-9.4", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "760b5b542e8435237d1b3c253bfe18e7", + "Requirements": [ + "lattice" + ] + }, + "mafacyrgene10stmamuensgprobe": { + "Package": "mafacyrgene10stmamuensgprobe", + "Version": "22.0.0", + "Source": "URL", + "RemoteType": "url", + "RemoteUrl": "https://mbni.org/customcdf/22.0.0/ensg.download/mafacyrgene10stmamuensgprobe_22.0.0.tar.gz", + "Hash": "2f477a95b56f2ab667be9d0c59f38718", + "Requirements": [ + "AnnotationDbi" + ] + }, + "mafacyrgene11stmamuensgprobe": { + "Package": "mafacyrgene11stmamuensgprobe", + "Version": "22.0.0", + "Source": "URL", + "RemoteType": "url", + "RemoteUrl": "https://mbni.org/customcdf/22.0.0/ensg.download/mafacyrgene11stmamuensgprobe_22.0.0.tar.gz", + "Hash": "a9ab46277c25cec2cc3be70d75cb96da", + "Requirements": [ + "AnnotationDbi" + ] + }, + "magrittr": { + "Package": "magrittr", + "Version": "1.5", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "1bb58822a20301cee84a41678e25d9b7", + "Requirements": [] + }, + "mapping10kxba142hsensgprobe": { + "Package": "mapping10kxba142hsensgprobe", + "Version": "22.0.0", + "Source": "URL", + "RemoteType": "url", + "RemoteUrl": "https://mbni.org/customcdf/22.0.0/ensg.download/mapping10kxba142hsensgprobe_22.0.0.tar.gz", + "Hash": "d1e475013f3392ddf8c445431b653089", + "Requirements": [ + "AnnotationDbi" + ] + }, + "mapping250knsphsensgprobe": { + "Package": "mapping250knsphsensgprobe", + "Version": "22.0.0", + "Source": "URL", + "RemoteType": "url", + "RemoteUrl": "https://mbni.org/customcdf/22.0.0/ensg.download/mapping250knsphsensgprobe_22.0.0.tar.gz", + "Hash": "bfcdeaac04421dd2047b487b319bb206", + "Requirements": [ + "AnnotationDbi" + ] + }, + "mapping250kstyhsensgprobe": { + "Package": "mapping250kstyhsensgprobe", + "Version": "22.0.0", + "Source": "URL", + "RemoteType": "url", + "RemoteUrl": "https://mbni.org/customcdf/22.0.0/ensg.download/mapping250kstyhsensgprobe_22.0.0.tar.gz", + "Hash": "ba87421cb5062157c864d50fdeccedb0", + "Requirements": [ + "AnnotationDbi" + ] + }, + "mapping50khind240hsensgprobe": { + "Package": "mapping50khind240hsensgprobe", + "Version": "22.0.0", + "Source": "URL", + "RemoteType": "url", + "RemoteUrl": "https://mbni.org/customcdf/22.0.0/ensg.download/mapping50khind240hsensgprobe_22.0.0.tar.gz", + "Hash": "28e76ed9ea04e4e8ca4b72c9f4a3830d", + "Requirements": [ + "AnnotationDbi" + ] + }, + "mapping50kxba240hsensgprobe": { + "Package": "mapping50kxba240hsensgprobe", + "Version": "22.0.0", + "Source": "URL", + "RemoteType": "url", + "RemoteUrl": "https://mbni.org/customcdf/22.0.0/ensg.download/mapping50kxba240hsensgprobe_22.0.0.tar.gz", + "Hash": "3c2796e8883ae35fe26ac98214e9035a", + "Requirements": [ + "AnnotationDbi" + ] + }, + "markdown": { + "Package": "markdown", + "Version": "1.1", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "61e4a10781dd00d7d81dd06ca9b94e95", + "Requirements": [ + "mime", + "xfun" + ] + }, + "matrixStats": { + "Package": "matrixStats", + "Version": "0.63.0", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "57af0c3da1f1a50680b186591c3359af", + "Requirements": [] + }, + "memoise": { + "Package": "memoise", + "Version": "1.1.0", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "58baa74e4603fcfb9a94401c58c8f9b1", + "Requirements": [ + "digest" + ] + }, + "mgcv": { + "Package": "mgcv", + "Version": "1.8-41", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "6b3904f13346742caa3e82dd0303d4ad", + "Requirements": [ + "Matrix", + "nlme" + ] + }, + "mgu74ammensgprobe": { + "Package": "mgu74ammensgprobe", + "Version": "22.0.0", + "Source": "URL", + "RemoteType": "url", + "RemoteUrl": "https://mbni.org/customcdf/22.0.0/ensg.download/mgu74ammensgprobe_22.0.0.tar.gz", + "Hash": "1da7f55112979080ac5cff18b863be43", + "Requirements": [ + "AnnotationDbi" + ] + }, + "mgu74av2mmensgprobe": { + "Package": "mgu74av2mmensgprobe", + "Version": "22.0.0", + "Source": "URL", + "RemoteType": "url", + "RemoteUrl": "https://mbni.org/customcdf/22.0.0/ensg.download/mgu74av2mmensgprobe_22.0.0.tar.gz", + "Hash": "1e58cbe215399d64286e3cd96b108bb9", + "Requirements": [ + "AnnotationDbi" + ] + }, + "mgu74bv2mmensgprobe": { + "Package": "mgu74bv2mmensgprobe", + "Version": "22.0.0", + "Source": "URL", + "RemoteType": "url", + "RemoteUrl": "https://mbni.org/customcdf/22.0.0/ensg.download/mgu74bv2mmensgprobe_22.0.0.tar.gz", + "Hash": "be58a8feb30ae8f4ab7e819d09d2a685", + "Requirements": [ + "AnnotationDbi" + ] + }, + "mgu74cv2mmensgprobe": { + "Package": "mgu74cv2mmensgprobe", + "Version": "22.0.0", + "Source": "URL", + "RemoteType": "url", + "RemoteUrl": "https://mbni.org/customcdf/22.0.0/ensg.download/mgu74cv2mmensgprobe_22.0.0.tar.gz", + "Hash": "2320dde26a32115f6bd5cf64d4b4231b", + "Requirements": [ + "AnnotationDbi" + ] + }, + "mime": { + "Package": "mime", + "Version": "0.7", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "f085cb5d1548336cafa5ee7ec56d7e34", + "Requirements": [] + }, + "moe430ammensgprobe": { + "Package": "moe430ammensgprobe", + "Version": "22.0.0", + "Source": "URL", + "RemoteType": "url", + "RemoteUrl": "https://mbni.org/customcdf/22.0.0/ensg.download/moe430ammensgprobe_22.0.0.tar.gz", + "Hash": "8d33ed927fbc22aada931433ca307ea3", + "Requirements": [ + "AnnotationDbi" + ] + }, + "moe430bmmensgprobe": { + "Package": "moe430bmmensgprobe", + "Version": "22.0.0", + "Source": "URL", + "RemoteType": "url", + "RemoteUrl": "https://mbni.org/customcdf/22.0.0/ensg.download/moe430bmmensgprobe_22.0.0.tar.gz", + "Hash": "d044d977477f32f320999747df7a717d", + "Requirements": [ + "AnnotationDbi" + ] + }, + "moex10stmmensgprobe": { + "Package": "moex10stmmensgprobe", + "Version": "22.0.0", + "Source": "URL", + "RemoteType": "url", + "RemoteUrl": "https://mbni.org/customcdf/22.0.0/ensg.download/moex10stmmensgprobe_22.0.0.tar.gz", + "Hash": "9fb3e659b96a591377b67de036ad2204", + "Requirements": [ + "AnnotationDbi" + ] + }, + "mogene10stmmensgprobe": { + "Package": "mogene10stmmensgprobe", + "Version": "22.0.0", + "Source": "URL", + "RemoteType": "url", + "RemoteUrl": "https://mbni.org/customcdf/22.0.0/ensg.download/mogene10stmmensgprobe_22.0.0.tar.gz", + "Hash": "9d42f3bf699d3e224c415105bf45a3c5", + "Requirements": [ + "AnnotationDbi" + ] + }, + "mogene11stmmensgprobe": { + "Package": "mogene11stmmensgprobe", + "Version": "22.0.0", + "Source": "URL", + "RemoteType": "url", + "RemoteUrl": "https://mbni.org/customcdf/22.0.0/ensg.download/mogene11stmmensgprobe_22.0.0.tar.gz", + "Hash": "c8f7092b9441993cd46ccd40ff118986", + "Requirements": [ + "AnnotationDbi" + ] + }, + "mogene20stmmensgprobe": { + "Package": "mogene20stmmensgprobe", + "Version": "22.0.0", + "Source": "URL", + "RemoteType": "url", + "RemoteUrl": "https://mbni.org/customcdf/22.0.0/ensg.download/mogene20stmmensgprobe_22.0.0.tar.gz", + "Hash": "14590a5dfdeb2b63a32d2018a10bd6f7", + "Requirements": [ + "AnnotationDbi" + ] + }, + "mogene21stmmensgprobe": { + "Package": "mogene21stmmensgprobe", + "Version": "22.0.0", + "Source": "URL", + "RemoteType": "url", + "RemoteUrl": "https://mbni.org/customcdf/22.0.0/ensg.download/mogene21stmmensgprobe_22.0.0.tar.gz", + "Hash": "0fe56ec3dcd2304ef38bdcb3f016daec", + "Requirements": [ + "AnnotationDbi" + ] + }, + "mouse4302mmensgprobe": { + "Package": "mouse4302mmensgprobe", + "Version": "22.0.0", + "Source": "URL", + "RemoteType": "url", + "RemoteUrl": "https://mbni.org/customcdf/22.0.0/ensg.download/mouse4302mmensgprobe_22.0.0.tar.gz", + "Hash": "c661b15d365974df317ea0ad294d4f08", + "Requirements": [ + "AnnotationDbi" + ] + }, + "mouse430a2mmensgprobe": { + "Package": "mouse430a2mmensgprobe", + "Version": "22.0.0", + "Source": "URL", + "RemoteType": "url", + "RemoteUrl": "https://mbni.org/customcdf/22.0.0/ensg.download/mouse430a2mmensgprobe_22.0.0.tar.gz", + "Hash": "5fc08b266b92a072455a789eb2fa7900", + "Requirements": [ + "AnnotationDbi" + ] + }, + "mu11ksubammensgprobe": { + "Package": "mu11ksubammensgprobe", + "Version": "22.0.0", + "Source": "URL", + "RemoteType": "url", + "RemoteUrl": "https://mbni.org/customcdf/22.0.0/ensg.download/mu11ksubammensgprobe_22.0.0.tar.gz", + "Hash": "79418a202a1996a2fdc787704e809f72", + "Requirements": [ + "AnnotationDbi" + ] + }, + "mu11ksubbmmensgprobe": { + "Package": "mu11ksubbmmensgprobe", + "Version": "22.0.0", + "Source": "URL", + "RemoteType": "url", + "RemoteUrl": "https://mbni.org/customcdf/22.0.0/ensg.download/mu11ksubbmmensgprobe_22.0.0.tar.gz", + "Hash": "260949154fe0d78aa5b34f5beaa2557e", + "Requirements": [ + "AnnotationDbi" + ] + }, + "nlme": { + "Package": "nlme", + "Version": "3.1-161", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "b49e163093c0ef46fbbfc40bcb87916c", + "Requirements": [ + "lattice" + ] + }, + "nnet": { + "Package": "nnet", + "Version": "7.3-18", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "170da2130d5332bea7d6ede01875ba1d", + "Requirements": [] + }, + "nugohs1a520180hsensgprobe": { + "Package": "nugohs1a520180hsensgprobe", + "Version": "22.0.0", + "Source": "URL", + "RemoteType": "url", + "RemoteUrl": "https://mbni.org/customcdf/22.0.0/ensg.download/nugohs1a520180hsensgprobe_22.0.0.tar.gz", + "Hash": "b1f67e8eb215f5d91b11edea11cf79a8", + "Requirements": [ + "AnnotationDbi" + ] + }, + "nugomm1a520177mmensgprobe": { + "Package": "nugomm1a520177mmensgprobe", + "Version": "22.0.0", + "Source": "URL", + "RemoteType": "url", + "RemoteUrl": "https://mbni.org/customcdf/22.0.0/ensg.download/nugomm1a520177mmensgprobe_22.0.0.tar.gz", + "Hash": "b011919717c126bbcb8f78eebcf98244", + "Requirements": [ + "AnnotationDbi" + ] + }, + "oligo": { + "Package": "oligo", + "Version": "1.52.1", + "Source": "URL", + "RemoteType": "url", + "RemoteUrl": "https://bioconductor.org/packages/3.11/bioc/src/contrib/oligo_1.52.1.tar.gz", + "git_url": "https://git.bioconductor.org/packages/oligo", + "git_branch": "RELEASE_3_11", + "git_last_commit": "cbd66c8", + "git_last_commit_date": "2020-08-10", + "Hash": "25a32b15cf0656f2624672150de9d750", + "Requirements": [ + "Biobase", + "BiocGenerics", + "Biostrings", + "DBI", + "RSQLite", + "affxparser", + "affyio", + "ff", + "oligoClasses", + "preprocessCore", + "zlibbioc" + ] + }, + "oligoClasses": { + "Package": "oligoClasses", + "Version": "1.50.4", + "Source": "URL", + "RemoteType": "url", + "RemoteUrl": "https://bioconductor.org/packages/3.11/bioc/src/contrib/oligoClasses_1.50.4.tar.gz", + "git_url": "https://git.bioconductor.org/packages/oligoClasses", + "git_branch": "RELEASE_3_11", + "git_last_commit": "da7b856", + "git_last_commit_date": "2020-08-10", + "Hash": "f4190217bc7d1b697b37bd4711560084", + "Requirements": [ + "Biobase", + "BiocGenerics", + "BiocManager", + "Biostrings", + "DBI", + "GenomicRanges", + "IRanges", + "RSQLite", + "S4Vectors", + "SummarizedExperiment", + "affyio", + "ff", + "foreach" + ] + }, + "openssl": { + "Package": "openssl", + "Version": "1.4", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "fd1f6c1cdd6519189d6d4a7d275da15f", + "Requirements": [ + "askpass" + ] + }, + "ovigene10stoaensgprobe": { + "Package": "ovigene10stoaensgprobe", + "Version": "22.0.0", + "Source": "URL", + "RemoteType": "url", + "RemoteUrl": "https://mbni.org/customcdf/22.0.0/ensg.download/ovigene10stoaensgprobe_22.0.0.tar.gz", + "Hash": "a672cdcf426dc98f1db139da91d30fea", + "Requirements": [ + "AnnotationDbi" + ] + }, + "ovigene11stoaensgprobe": { + "Package": "ovigene11stoaensgprobe", + "Version": "22.0.0", + "Source": "URL", + "RemoteType": "url", + "RemoteUrl": "https://mbni.org/customcdf/22.0.0/ensg.download/ovigene11stoaensgprobe_22.0.0.tar.gz", + "Hash": "15f4080fbfa9ecfdaa369ea61e53e34a", + "Requirements": [ + "AnnotationDbi" + ] + }, + "pd.081229.hg18.promoter.medip.hx1": { + "Package": "pd.081229.hg18.promoter.medip.hx1", + "Version": "0.99.4", + "Source": "URL", + "RemoteType": "url", + "RemoteUrl": "https://bioconductor.org/packages/3.11/data/annotation/src/contrib/pd.081229.hg18.promoter.medip.hx1_0.99.4.tar.gz", + "Hash": "53eb6e8405e70bfa03b1e4db51ce6c76", + "Requirements": [ + "Biostrings", + "DBI", + "IRanges", + "RSQLite", + "oligo", + "oligoClasses" + ] + }, + "pd.2006.07.18.hg18.refseq.promoter": { + "Package": "pd.2006.07.18.hg18.refseq.promoter", + "Version": "1.8.1", + "Source": "URL", + "RemoteType": "url", + "RemoteUrl": "https://bioconductor.org/packages/3.11/data/annotation/src/contrib/pd.2006.07.18.hg18.refseq.promoter_1.8.1.tar.gz", + "Hash": "6af2e6d0af52fe293ba67330533f192f", + "Requirements": [ + "Biostrings", + "DBI", + "IRanges", + "RSQLite", + "oligo", + "oligoClasses" + ] + }, + "pd.2006.07.18.mm8.refseq.promoter": { + "Package": "pd.2006.07.18.mm8.refseq.promoter", + "Version": "0.99.3", + "Source": "URL", + "RemoteType": "url", + "RemoteUrl": "https://bioconductor.org/packages/3.11/data/annotation/src/contrib/pd.2006.07.18.mm8.refseq.promoter_0.99.3.tar.gz", + "Hash": "b25c881b9f22f06da95f014d40058bc7", + "Requirements": [ + "Biostrings", + "DBI", + "IRanges", + "RSQLite", + "oligo", + "oligoClasses" + ] + }, + "pd.2006.10.31.rn34.refseq.promoter": { + "Package": "pd.2006.10.31.rn34.refseq.promoter", + "Version": "0.99.3", + "Source": "URL", + "RemoteType": "url", + "RemoteUrl": "https://bioconductor.org/packages/3.11/data/annotation/src/contrib/pd.2006.10.31.rn34.refseq.promoter_0.99.3.tar.gz", + "Hash": "8a4e2adabf9e3bb67710a171207a0157", + "Requirements": [ + "Biostrings", + "DBI", + "IRanges", + "RSQLite", + "oligo", + "oligoClasses" + ] + }, + "pd.ag": { + "Package": "pd.ag", + "Version": "3.12.0", + "Source": "URL", + "RemoteType": "url", + "RemoteUrl": "https://bioconductor.org/packages/3.11/data/annotation/src/contrib/pd.ag_3.12.0.tar.gz", + "Hash": "6f607b3f209d25c0a1a375890689c26e", + "Requirements": [ + "Biostrings", + "DBI", + "IRanges", + "RSQLite", + "S4Vectors", + "oligo", + "oligoClasses" + ] + }, + "pd.aragene.1.0.st": { + "Package": "pd.aragene.1.0.st", + "Version": "3.12.0", + "Source": "URL", + "RemoteType": "url", + "RemoteUrl": "https://bioconductor.org/packages/3.11/data/annotation/src/contrib/pd.aragene.1.0.st_3.12.0.tar.gz", + "Hash": "242f70197f2dbc0bd0dc43260b52f40a", + "Requirements": [ + "Biostrings", + "DBI", + "IRanges", + "RSQLite", + "S4Vectors", + "oligo", + "oligoClasses" + ] + }, + "pd.aragene.1.1.st": { + "Package": "pd.aragene.1.1.st", + "Version": "3.12.0", + "Source": "URL", + "RemoteType": "url", + "RemoteUrl": "https://bioconductor.org/packages/3.11/data/annotation/src/contrib/pd.aragene.1.1.st_3.12.0.tar.gz", + "Hash": "ada75b31598483587ac87c5420b75870", + "Requirements": [ + "Biostrings", + "DBI", + "IRanges", + "RSQLite", + "S4Vectors", + "oligo", + "oligoClasses" + ] + }, + "pd.atdschip.tiling": { + "Package": "pd.atdschip.tiling", + "Version": "0.26.0", + "Source": "URL", + "RemoteType": "url", + "RemoteUrl": "https://bioconductor.org/packages/3.11/data/experiment/src/contrib/pd.atdschip.tiling_0.26.0.tar.gz", + "git_url": "https://git.bioconductor.org/packages/pd.atdschip.tiling", + "git_branch": "RELEASE_3_11", + "git_last_commit": "68d6c37", + "git_last_commit_date": "2020-04-27", + "Hash": "d5ee2c695abedbcc7d5a7240a2fdbfb3", + "Requirements": [ + "Biostrings", + "DBI", + "IRanges", + "RSQLite", + "S4Vectors", + "oligo", + "oligoClasses" + ] + }, + "pd.ath1.121501": { + "Package": "pd.ath1.121501", + "Version": "3.12.0", + "Source": "URL", + "RemoteType": "url", + "RemoteUrl": "https://bioconductor.org/packages/3.11/data/annotation/src/contrib/pd.ath1.121501_3.12.0.tar.gz", + "Hash": "85c4777c6e50a58d41c18ce8614d3ce0", + "Requirements": [ + "Biostrings", + "DBI", + "IRanges", + "RSQLite", + "S4Vectors", + "oligo", + "oligoClasses" + ] + }, + "pd.barley1": { + "Package": "pd.barley1", + "Version": "3.12.0", + "Source": "URL", + "RemoteType": "url", + "RemoteUrl": "https://bioconductor.org/packages/3.11/data/annotation/src/contrib/pd.barley1_3.12.0.tar.gz", + "Hash": "03fd799ccc5ff7120f8b15e05eb650fe", + "Requirements": [ + "Biostrings", + "DBI", + "IRanges", + "RSQLite", + "S4Vectors", + "oligo", + "oligoClasses" + ] + }, + "pd.bovgene.1.0.st": { + "Package": "pd.bovgene.1.0.st", + "Version": "3.12.0", + "Source": "URL", + "RemoteType": "url", + "RemoteUrl": "https://bioconductor.org/packages/3.11/data/annotation/src/contrib/pd.bovgene.1.0.st_3.12.0.tar.gz", + "Hash": "1f03de61afcfcc1f521015d0edcd8fd2", + "Requirements": [ + "Biostrings", + "DBI", + "IRanges", + "RSQLite", + "S4Vectors", + "oligo", + "oligoClasses" + ] + }, + "pd.bovgene.1.1.st": { + "Package": "pd.bovgene.1.1.st", + "Version": "3.12.0", + "Source": "URL", + "RemoteType": "url", + "RemoteUrl": "https://bioconductor.org/packages/3.11/data/annotation/src/contrib/pd.bovgene.1.1.st_3.12.0.tar.gz", + "Hash": "7947efb64ef885055e8d4e105b7d1b34", + "Requirements": [ + "Biostrings", + "DBI", + "IRanges", + "RSQLite", + "S4Vectors", + "oligo", + "oligoClasses" + ] + }, + "pd.bovine": { + "Package": "pd.bovine", + "Version": "3.12.0", + "Source": "URL", + "RemoteType": "url", + "RemoteUrl": "https://bioconductor.org/packages/3.11/data/annotation/src/contrib/pd.bovine_3.12.0.tar.gz", + "Hash": "87697e66b2f3aa88c5cce324a527558f", + "Requirements": [ + "Biostrings", + "DBI", + "IRanges", + "RSQLite", + "S4Vectors", + "oligo", + "oligoClasses" + ] + }, + "pd.bsubtilis": { + "Package": "pd.bsubtilis", + "Version": "3.12.0", + "Source": "URL", + "RemoteType": "url", + "RemoteUrl": "https://bioconductor.org/packages/3.11/data/annotation/src/contrib/pd.bsubtilis_3.12.0.tar.gz", + "Hash": "70e507fe536a247a80e5a8e313506a80", + "Requirements": [ + "Biostrings", + "DBI", + "IRanges", + "RSQLite", + "S4Vectors", + "oligo", + "oligoClasses" + ] + }, + "pd.cangene.1.0.st": { + "Package": "pd.cangene.1.0.st", + "Version": "3.12.0", + "Source": "URL", + "RemoteType": "url", + "RemoteUrl": "https://bioconductor.org/packages/3.11/data/annotation/src/contrib/pd.cangene.1.0.st_3.12.0.tar.gz", + "Hash": "ca4441cd54c41382952e4fb7fe5ce62b", + "Requirements": [ + "Biostrings", + "DBI", + "IRanges", + "RSQLite", + "S4Vectors", + "oligo", + "oligoClasses" + ] + }, + "pd.cangene.1.1.st": { + "Package": "pd.cangene.1.1.st", + "Version": "3.12.0", + "Source": "URL", + "RemoteType": "url", + "RemoteUrl": "https://bioconductor.org/packages/3.11/data/annotation/src/contrib/pd.cangene.1.1.st_3.12.0.tar.gz", + "Hash": "2db861757aca17a6a5b6a9a5b8a00699", + "Requirements": [ + "Biostrings", + "DBI", + "IRanges", + "RSQLite", + "S4Vectors", + "oligo", + "oligoClasses" + ] + }, + "pd.canine": { + "Package": "pd.canine", + "Version": "3.12.0", + "Source": "URL", + "RemoteType": "url", + "RemoteUrl": "https://bioconductor.org/packages/3.11/data/annotation/src/contrib/pd.canine_3.12.0.tar.gz", + "Hash": "cab4560c9edb751edf137ce1e5966a3d", + "Requirements": [ + "Biostrings", + "DBI", + "IRanges", + "RSQLite", + "S4Vectors", + "oligo", + "oligoClasses" + ] + }, + "pd.canine.2": { + "Package": "pd.canine.2", + "Version": "3.12.0", + "Source": "URL", + "RemoteType": "url", + "RemoteUrl": "https://bioconductor.org/packages/3.11/data/annotation/src/contrib/pd.canine.2_3.12.0.tar.gz", + "Hash": "7b6c1c117c6e5612239c83d50f9e55d6", + "Requirements": [ + "Biostrings", + "DBI", + "IRanges", + "RSQLite", + "S4Vectors", + "oligo", + "oligoClasses" + ] + }, + "pd.celegans": { + "Package": "pd.celegans", + "Version": "3.12.0", + "Source": "URL", + "RemoteType": "url", + "RemoteUrl": "https://bioconductor.org/packages/3.11/data/annotation/src/contrib/pd.celegans_3.12.0.tar.gz", + "Hash": "6602f8e81b7e4023e7a01cca00ef1da3", + "Requirements": [ + "Biostrings", + "DBI", + "IRanges", + "RSQLite", + "S4Vectors", + "oligo", + "oligoClasses" + ] + }, + "pd.charm.hg18.example": { + "Package": "pd.charm.hg18.example", + "Version": "0.99.4", + "Source": "URL", + "RemoteType": "url", + "RemoteUrl": "https://bioconductor.org/packages/3.11/data/annotation/src/contrib/pd.charm.hg18.example_0.99.4.tar.gz", + "Hash": "186efe738f0f3d18f5b28a0c7867106e", + "Requirements": [ + "Biostrings", + "DBI", + "IRanges", + "RSQLite", + "oligo", + "oligoClasses" + ] + }, + "pd.chicken": { + "Package": "pd.chicken", + "Version": "3.12.0", + "Source": "URL", + "RemoteType": "url", + "RemoteUrl": "https://bioconductor.org/packages/3.11/data/annotation/src/contrib/pd.chicken_3.12.0.tar.gz", + "Hash": "d4511f1e387dc82ab9f6bc06cccdc705", + "Requirements": [ + "Biostrings", + "DBI", + "IRanges", + "RSQLite", + "S4Vectors", + "oligo", + "oligoClasses" + ] + }, + "pd.chigene.1.0.st": { + "Package": "pd.chigene.1.0.st", + "Version": "3.12.0", + "Source": "URL", + "RemoteType": "url", + "RemoteUrl": "https://bioconductor.org/packages/3.11/data/annotation/src/contrib/pd.chigene.1.0.st_3.12.0.tar.gz", + "Hash": "23f3f6b53d057e3009f04306bc0e5cfb", + "Requirements": [ + "Biostrings", + "DBI", + "IRanges", + "RSQLite", + "S4Vectors", + "oligo", + "oligoClasses" + ] + }, + "pd.chigene.1.1.st": { + "Package": "pd.chigene.1.1.st", + "Version": "3.12.0", + "Source": "URL", + "RemoteType": "url", + "RemoteUrl": "https://bioconductor.org/packages/3.11/data/annotation/src/contrib/pd.chigene.1.1.st_3.12.0.tar.gz", + "Hash": "639e72a56120512a78a128834687e35d", + "Requirements": [ + "Biostrings", + "DBI", + "IRanges", + "RSQLite", + "S4Vectors", + "oligo", + "oligoClasses" + ] + }, + "pd.chogene.2.0.st": { + "Package": "pd.chogene.2.0.st", + "Version": "3.12.0", + "Source": "URL", + "RemoteType": "url", + "RemoteUrl": "https://bioconductor.org/packages/3.11/data/annotation/src/contrib/pd.chogene.2.0.st_3.12.0.tar.gz", + "Hash": "0c5dd426566a261bc938941d886fc8b2", + "Requirements": [ + "Biostrings", + "DBI", + "IRanges", + "RSQLite", + "S4Vectors", + "oligo", + "oligoClasses" + ] + }, + "pd.chogene.2.1.st": { + "Package": "pd.chogene.2.1.st", + "Version": "3.12.0", + "Source": "URL", + "RemoteType": "url", + "RemoteUrl": "https://bioconductor.org/packages/3.11/data/annotation/src/contrib/pd.chogene.2.1.st_3.12.0.tar.gz", + "Hash": "45873a91801e8d8dd8cdcbf867268ff5", + "Requirements": [ + "Biostrings", + "DBI", + "IRanges", + "RSQLite", + "S4Vectors", + "oligo", + "oligoClasses" + ] + }, + "pd.citrus": { + "Package": "pd.citrus", + "Version": "3.12.0", + "Source": "URL", + "RemoteType": "url", + "RemoteUrl": "https://bioconductor.org/packages/3.11/data/annotation/src/contrib/pd.citrus_3.12.0.tar.gz", + "Hash": "a1eb0fa690fc30f98172a316db69d71a", + "Requirements": [ + "Biostrings", + "DBI", + "IRanges", + "RSQLite", + "S4Vectors", + "oligo", + "oligoClasses" + ] + }, + "pd.clariom.d.human": { + "Package": "pd.clariom.d.human", + "Version": "3.14.1", + "Source": "URL", + "RemoteType": "url", + "RemoteUrl": "https://bioconductor.org/packages/3.11/data/annotation/src/contrib/pd.clariom.d.human_3.14.1.tar.gz", + "Hash": "1e25dd0c5769aa2fd2b18ba19ed29a9e", + "Requirements": [ + "Biostrings", + "DBI", + "IRanges", + "RSQLite", + "S4Vectors", + "oligo", + "oligoClasses" + ] + }, + "pd.clariom.s.human": { + "Package": "pd.clariom.s.human", + "Version": "3.14.1", + "Source": "URL", + "RemoteType": "url", + "RemoteUrl": "https://bioconductor.org/packages/3.11/data/annotation/src/contrib/pd.clariom.s.human_3.14.1.tar.gz", + "Hash": "81b8231c1ada91024fe01ad2c437bb69", + "Requirements": [ + "Biostrings", + "DBI", + "IRanges", + "RSQLite", + "S4Vectors", + "oligo", + "oligoClasses" + ] + }, + "pd.clariom.s.human.ht": { + "Package": "pd.clariom.s.human.ht", + "Version": "3.14.1", + "Source": "URL", + "RemoteType": "url", + "RemoteUrl": "https://bioconductor.org/packages/3.11/data/annotation/src/contrib/pd.clariom.s.human.ht_3.14.1.tar.gz", + "Hash": "4052db2f8bc6a7d0a05bc6f4edad1482", + "Requirements": [ + "Biostrings", + "DBI", + "IRanges", + "RSQLite", + "S4Vectors", + "oligo", + "oligoClasses" + ] + }, + "pd.clariom.s.mouse": { + "Package": "pd.clariom.s.mouse", + "Version": "3.14.1", + "Source": "URL", + "RemoteType": "url", + "RemoteUrl": "https://bioconductor.org/packages/3.11/data/annotation/src/contrib/pd.clariom.s.mouse_3.14.1.tar.gz", + "Hash": "9e19a00ea02ad8511bcc1f58a20fea07", + "Requirements": [ + "Biostrings", + "DBI", + "IRanges", + "RSQLite", + "S4Vectors", + "oligo", + "oligoClasses" + ] + }, + "pd.clariom.s.mouse.ht": { + "Package": "pd.clariom.s.mouse.ht", + "Version": "3.14.1", + "Source": "URL", + "RemoteType": "url", + "RemoteUrl": "https://bioconductor.org/packages/3.11/data/annotation/src/contrib/pd.clariom.s.mouse.ht_3.14.1.tar.gz", + "Hash": "bb89ada94db2031b19d35c34ad7af700", + "Requirements": [ + "Biostrings", + "DBI", + "IRanges", + "RSQLite", + "S4Vectors", + "oligo", + "oligoClasses" + ] + }, + "pd.clariom.s.rat": { + "Package": "pd.clariom.s.rat", + "Version": "3.14.1", + "Source": "URL", + "RemoteType": "url", + "RemoteUrl": "https://bioconductor.org/packages/3.11/data/annotation/src/contrib/pd.clariom.s.rat_3.14.1.tar.gz", + "Hash": "4dac0df605a64fe27347d2e6f8ba16e9", + "Requirements": [ + "Biostrings", + "DBI", + "IRanges", + "RSQLite", + "S4Vectors", + "oligo", + "oligoClasses" + ] + }, + "pd.clariom.s.rat.ht": { + "Package": "pd.clariom.s.rat.ht", + "Version": "3.14.1", + "Source": "URL", + "RemoteType": "url", + "RemoteUrl": "https://bioconductor.org/packages/3.11/data/annotation/src/contrib/pd.clariom.s.rat.ht_3.14.1.tar.gz", + "Hash": "f03d76988375f79de8095e3dfe7b2347", + "Requirements": [ + "Biostrings", + "DBI", + "IRanges", + "RSQLite", + "S4Vectors", + "oligo", + "oligoClasses" + ] + }, + "pd.cotton": { + "Package": "pd.cotton", + "Version": "3.12.0", + "Source": "URL", + "RemoteType": "url", + "RemoteUrl": "https://bioconductor.org/packages/3.11/data/annotation/src/contrib/pd.cotton_3.12.0.tar.gz", + "Hash": "99caab42d24b4e38852379616eec715a", + "Requirements": [ + "Biostrings", + "DBI", + "IRanges", + "RSQLite", + "S4Vectors", + "oligo", + "oligoClasses" + ] + }, + "pd.cyngene.1.0.st": { + "Package": "pd.cyngene.1.0.st", + "Version": "3.12.0", + "Source": "URL", + "RemoteType": "url", + "RemoteUrl": "https://bioconductor.org/packages/3.11/data/annotation/src/contrib/pd.cyngene.1.0.st_3.12.0.tar.gz", + "Hash": "ea3adaef2f518700a10ce11ae9aeab95", + "Requirements": [ + "Biostrings", + "DBI", + "IRanges", + "RSQLite", + "S4Vectors", + "oligo", + "oligoClasses" + ] + }, + "pd.cyngene.1.1.st": { + "Package": "pd.cyngene.1.1.st", + "Version": "3.12.0", + "Source": "URL", + "RemoteType": "url", + "RemoteUrl": "https://bioconductor.org/packages/3.11/data/annotation/src/contrib/pd.cyngene.1.1.st_3.12.0.tar.gz", + "Hash": "e2c8a84ad5e38fdbedcdcc7761d6981a", + "Requirements": [ + "Biostrings", + "DBI", + "IRanges", + "RSQLite", + "S4Vectors", + "oligo", + "oligoClasses" + ] + }, + "pd.cyrgene.1.0.st": { + "Package": "pd.cyrgene.1.0.st", + "Version": "3.12.0", + "Source": "URL", + "RemoteType": "url", + "RemoteUrl": "https://bioconductor.org/packages/3.11/data/annotation/src/contrib/pd.cyrgene.1.0.st_3.12.0.tar.gz", + "Hash": "36d90d255b62639d6d36811586b73545", + "Requirements": [ + "Biostrings", + "DBI", + "IRanges", + "RSQLite", + "S4Vectors", + "oligo", + "oligoClasses" + ] + }, + "pd.cyrgene.1.1.st": { + "Package": "pd.cyrgene.1.1.st", + "Version": "3.12.0", + "Source": "URL", + "RemoteType": "url", + "RemoteUrl": "https://bioconductor.org/packages/3.11/data/annotation/src/contrib/pd.cyrgene.1.1.st_3.12.0.tar.gz", + "Hash": "9a6176a4e4176c1fbe0767200588369e", + "Requirements": [ + "Biostrings", + "DBI", + "IRanges", + "RSQLite", + "S4Vectors", + "oligo", + "oligoClasses" + ] + }, + "pd.cytogenetics.array": { + "Package": "pd.cytogenetics.array", + "Version": "3.12.0", + "Source": "URL", + "RemoteType": "url", + "RemoteUrl": "https://bioconductor.org/packages/3.11/data/annotation/src/contrib/pd.cytogenetics.array_3.12.0.tar.gz", + "Hash": "f973e810afeb38384124ecc8ae9af030", + "Requirements": [ + "Biostrings", + "DBI", + "IRanges", + "RSQLite", + "S4Vectors", + "oligo", + "oligoClasses" + ] + }, + "pd.drogene.1.0.st": { + "Package": "pd.drogene.1.0.st", + "Version": "3.12.0", + "Source": "URL", + "RemoteType": "url", + "RemoteUrl": "https://bioconductor.org/packages/3.11/data/annotation/src/contrib/pd.drogene.1.0.st_3.12.0.tar.gz", + "Hash": "01960f47aaa60ab3f93988ab4e790980", + "Requirements": [ + "Biostrings", + "DBI", + "IRanges", + "RSQLite", + "S4Vectors", + "oligo", + "oligoClasses" + ] + }, + "pd.drogene.1.1.st": { + "Package": "pd.drogene.1.1.st", + "Version": "3.12.0", + "Source": "URL", + "RemoteType": "url", + "RemoteUrl": "https://bioconductor.org/packages/3.11/data/annotation/src/contrib/pd.drogene.1.1.st_3.12.0.tar.gz", + "Hash": "b056bb075d7c7f59f6e9ecb44c359552", + "Requirements": [ + "Biostrings", + "DBI", + "IRanges", + "RSQLite", + "S4Vectors", + "oligo", + "oligoClasses" + ] + }, + "pd.drosgenome1": { + "Package": "pd.drosgenome1", + "Version": "3.12.0", + "Source": "URL", + "RemoteType": "url", + "RemoteUrl": "https://bioconductor.org/packages/3.11/data/annotation/src/contrib/pd.drosgenome1_3.12.0.tar.gz", + "Hash": "81712dc7144b9876a288a6e60997a799", + "Requirements": [ + "Biostrings", + "DBI", + "IRanges", + "RSQLite", + "S4Vectors", + "oligo", + "oligoClasses" + ] + }, + "pd.drosophila.2": { + "Package": "pd.drosophila.2", + "Version": "3.12.0", + "Source": "URL", + "RemoteType": "url", + "RemoteUrl": "https://bioconductor.org/packages/3.11/data/annotation/src/contrib/pd.drosophila.2_3.12.0.tar.gz", + "Hash": "d434036c82a87f17fb77e5e252e9b321", + "Requirements": [ + "Biostrings", + "DBI", + "IRanges", + "RSQLite", + "S4Vectors", + "oligo", + "oligoClasses" + ] + }, + "pd.e.coli.2": { + "Package": "pd.e.coli.2", + "Version": "3.12.0", + "Source": "URL", + "RemoteType": "url", + "RemoteUrl": "https://bioconductor.org/packages/3.11/data/annotation/src/contrib/pd.e.coli.2_3.12.0.tar.gz", + "Hash": "09fc8d04e48f8457f7a032689dbc1cab", + "Requirements": [ + "Biostrings", + "DBI", + "IRanges", + "RSQLite", + "S4Vectors", + "oligo", + "oligoClasses" + ] + }, + "pd.ecoli": { + "Package": "pd.ecoli", + "Version": "3.12.0", + "Source": "URL", + "RemoteType": "url", + "RemoteUrl": "https://bioconductor.org/packages/3.11/data/annotation/src/contrib/pd.ecoli_3.12.0.tar.gz", + "Hash": "d758441cc8e4366c2479536983cfa1a9", + "Requirements": [ + "Biostrings", + "DBI", + "IRanges", + "RSQLite", + "S4Vectors", + "oligo", + "oligoClasses" + ] + }, + "pd.ecoli.asv2": { + "Package": "pd.ecoli.asv2", + "Version": "3.12.0", + "Source": "URL", + "RemoteType": "url", + "RemoteUrl": "https://bioconductor.org/packages/3.11/data/annotation/src/contrib/pd.ecoli.asv2_3.12.0.tar.gz", + "Hash": "73c26a981ed6e1b8231b018bcd9b5fed", + "Requirements": [ + "Biostrings", + "DBI", + "IRanges", + "RSQLite", + "S4Vectors", + "oligo", + "oligoClasses" + ] + }, + "pd.elegene.1.0.st": { + "Package": "pd.elegene.1.0.st", + "Version": "3.12.0", + "Source": "URL", + "RemoteType": "url", + "RemoteUrl": "https://bioconductor.org/packages/3.11/data/annotation/src/contrib/pd.elegene.1.0.st_3.12.0.tar.gz", + "Hash": "aa3fa2fabd8101de4d1f64ddcd245487", + "Requirements": [ + "Biostrings", + "DBI", + "IRanges", + "RSQLite", + "S4Vectors", + "oligo", + "oligoClasses" + ] + }, + "pd.elegene.1.1.st": { + "Package": "pd.elegene.1.1.st", + "Version": "3.12.0", + "Source": "URL", + "RemoteType": "url", + "RemoteUrl": "https://bioconductor.org/packages/3.11/data/annotation/src/contrib/pd.elegene.1.1.st_3.12.0.tar.gz", + "Hash": "43c81cd9ebf43531bbe1a4f7bd84ec20", + "Requirements": [ + "Biostrings", + "DBI", + "IRanges", + "RSQLite", + "S4Vectors", + "oligo", + "oligoClasses" + ] + }, + "pd.equgene.1.0.st": { + "Package": "pd.equgene.1.0.st", + "Version": "3.12.0", + "Source": "URL", + "RemoteType": "url", + "RemoteUrl": "https://bioconductor.org/packages/3.11/data/annotation/src/contrib/pd.equgene.1.0.st_3.12.0.tar.gz", + "Hash": "e1f20c3af31fccef85308b6934b55441", + "Requirements": [ + "Biostrings", + "DBI", + "IRanges", + "RSQLite", + "S4Vectors", + "oligo", + "oligoClasses" + ] + }, + "pd.equgene.1.1.st": { + "Package": "pd.equgene.1.1.st", + "Version": "3.12.0", + "Source": "URL", + "RemoteType": "url", + "RemoteUrl": "https://bioconductor.org/packages/3.11/data/annotation/src/contrib/pd.equgene.1.1.st_3.12.0.tar.gz", + "Hash": "2133db340ef06d187341f13a63c60fb1", + "Requirements": [ + "Biostrings", + "DBI", + "IRanges", + "RSQLite", + "S4Vectors", + "oligo", + "oligoClasses" + ] + }, + "pd.feinberg.hg18.me.hx1": { + "Package": "pd.feinberg.hg18.me.hx1", + "Version": "0.99.3", + "Source": "URL", + "RemoteType": "url", + "RemoteUrl": "https://bioconductor.org/packages/3.11/data/annotation/src/contrib/pd.feinberg.hg18.me.hx1_0.99.3.tar.gz", + "Hash": "b27c1962737363bfd2df0385e73415cd", + "Requirements": [ + "Biostrings", + "DBI", + "IRanges", + "RSQLite", + "oligo", + "oligoClasses" + ] + }, + "pd.feinberg.mm8.me.hx1": { + "Package": "pd.feinberg.mm8.me.hx1", + "Version": "0.99.3", + "Source": "URL", + "RemoteType": "url", + "RemoteUrl": "https://bioconductor.org/packages/3.11/data/annotation/src/contrib/pd.feinberg.mm8.me.hx1_0.99.3.tar.gz", + "Hash": "d12e341636e1df38b2621f7b06827dc2", + "Requirements": [ + "Biostrings", + "DBI", + "IRanges", + "RSQLite", + "oligo", + "oligoClasses" + ] + }, + "pd.felgene.1.0.st": { + "Package": "pd.felgene.1.0.st", + "Version": "3.12.0", + "Source": "URL", + "RemoteType": "url", + "RemoteUrl": "https://bioconductor.org/packages/3.11/data/annotation/src/contrib/pd.felgene.1.0.st_3.12.0.tar.gz", + "Hash": "bce45f4260a9569b56b6ca1ec5a52f06", + "Requirements": [ + "Biostrings", + "DBI", + "IRanges", + "RSQLite", + "S4Vectors", + "oligo", + "oligoClasses" + ] + }, + "pd.felgene.1.1.st": { + "Package": "pd.felgene.1.1.st", + "Version": "3.12.0", + "Source": "URL", + "RemoteType": "url", + "RemoteUrl": "https://bioconductor.org/packages/3.11/data/annotation/src/contrib/pd.felgene.1.1.st_3.12.0.tar.gz", + "Hash": "84a1d84d08cdc3c9f956179de207f824", + "Requirements": [ + "Biostrings", + "DBI", + "IRanges", + "RSQLite", + "S4Vectors", + "oligo", + "oligoClasses" + ] + }, + "pd.fingene.1.0.st": { + "Package": "pd.fingene.1.0.st", + "Version": "3.12.0", + "Source": "URL", + "RemoteType": "url", + "RemoteUrl": "https://bioconductor.org/packages/3.11/data/annotation/src/contrib/pd.fingene.1.0.st_3.12.0.tar.gz", + "Hash": "1241f4f526e9d7d3292cec4f0a0754bc", + "Requirements": [ + "Biostrings", + "DBI", + "IRanges", + "RSQLite", + "S4Vectors", + "oligo", + "oligoClasses" + ] + }, + "pd.fingene.1.1.st": { + "Package": "pd.fingene.1.1.st", + "Version": "3.12.0", + "Source": "URL", + "RemoteType": "url", + "RemoteUrl": "https://bioconductor.org/packages/3.11/data/annotation/src/contrib/pd.fingene.1.1.st_3.12.0.tar.gz", + "Hash": "bce18b90b1fbd651dc087bdbd6f01621", + "Requirements": [ + "Biostrings", + "DBI", + "IRanges", + "RSQLite", + "S4Vectors", + "oligo", + "oligoClasses" + ] + }, + "pd.genomewidesnp.5": { + "Package": "pd.genomewidesnp.5", + "Version": "3.14.1", + "Source": "URL", + "RemoteType": "url", + "RemoteUrl": "https://bioconductor.org/packages/3.11/data/annotation/src/contrib/pd.genomewidesnp.5_3.14.1.tar.gz", + "Hash": "21f0f87b10084d9ea472a361490917ba", + "Requirements": [ + "Biostrings", + "DBI", + "IRanges", + "RSQLite", + "S4Vectors", + "oligo", + "oligoClasses" + ] + }, + "pd.genomewidesnp.6": { + "Package": "pd.genomewidesnp.6", + "Version": "3.14.1", + "Source": "URL", + "RemoteType": "url", + "RemoteUrl": "https://bioconductor.org/packages/3.11/data/annotation/src/contrib/pd.genomewidesnp.6_3.14.1.tar.gz", + "Hash": "241aadeca6a1aed8bf169981ee394896", + "Requirements": [ + "Biostrings", + "DBI", + "IRanges", + "RSQLite", + "S4Vectors", + "oligo", + "oligoClasses" + ] + }, + "pd.guigene.1.0.st": { + "Package": "pd.guigene.1.0.st", + "Version": "3.12.0", + "Source": "URL", + "RemoteType": "url", + "RemoteUrl": "https://bioconductor.org/packages/3.11/data/annotation/src/contrib/pd.guigene.1.0.st_3.12.0.tar.gz", + "Hash": "af0f7c522eddaaee500709217ced6949", + "Requirements": [ + "Biostrings", + "DBI", + "IRanges", + "RSQLite", + "S4Vectors", + "oligo", + "oligoClasses" + ] + }, + "pd.guigene.1.1.st": { + "Package": "pd.guigene.1.1.st", + "Version": "3.12.0", + "Source": "URL", + "RemoteType": "url", + "RemoteUrl": "https://bioconductor.org/packages/3.11/data/annotation/src/contrib/pd.guigene.1.1.st_3.12.0.tar.gz", + "Hash": "279ca6325786bffcf7383779d0f02ca2", + "Requirements": [ + "Biostrings", + "DBI", + "IRanges", + "RSQLite", + "S4Vectors", + "oligo", + "oligoClasses" + ] + }, + "pd.hc.g110": { + "Package": "pd.hc.g110", + "Version": "3.12.0", + "Source": "URL", + "RemoteType": "url", + "RemoteUrl": "https://bioconductor.org/packages/3.11/data/annotation/src/contrib/pd.hc.g110_3.12.0.tar.gz", + "Hash": "8833c5fe83e3cea7f3b17ee7b51edf6d", + "Requirements": [ + "Biostrings", + "DBI", + "IRanges", + "RSQLite", + "S4Vectors", + "oligo", + "oligoClasses" + ] + }, + "pd.hg.focus": { + "Package": "pd.hg.focus", + "Version": "3.12.0", + "Source": "URL", + "RemoteType": "url", + "RemoteUrl": "https://bioconductor.org/packages/3.11/data/annotation/src/contrib/pd.hg.focus_3.12.0.tar.gz", + "Hash": "36d959e8b729163358ff249e8cace254", + "Requirements": [ + "Biostrings", + "DBI", + "IRanges", + "RSQLite", + "S4Vectors", + "oligo", + "oligoClasses" + ] + }, + "pd.hg.u133.plus.2": { + "Package": "pd.hg.u133.plus.2", + "Version": "3.12.0", + "Source": "URL", + "RemoteType": "url", + "RemoteUrl": "https://bioconductor.org/packages/3.11/data/annotation/src/contrib/pd.hg.u133.plus.2_3.12.0.tar.gz", + "Hash": "f1830b276400302cd41748c89c28dfc0", + "Requirements": [ + "Biostrings", + "DBI", + "IRanges", + "RSQLite", + "S4Vectors", + "oligo", + "oligoClasses" + ] + }, + "pd.hg.u133a": { + "Package": "pd.hg.u133a", + "Version": "3.12.0", + "Source": "URL", + "RemoteType": "url", + "RemoteUrl": "https://bioconductor.org/packages/3.11/data/annotation/src/contrib/pd.hg.u133a_3.12.0.tar.gz", + "Hash": "2596d3dc9326c4f6dfef1f8094f4b294", + "Requirements": [ + "Biostrings", + "DBI", + "IRanges", + "RSQLite", + "S4Vectors", + "oligo", + "oligoClasses" + ] + }, + "pd.hg.u133a.2": { + "Package": "pd.hg.u133a.2", + "Version": "3.12.0", + "Source": "URL", + "RemoteType": "url", + "RemoteUrl": "https://bioconductor.org/packages/3.11/data/annotation/src/contrib/pd.hg.u133a.2_3.12.0.tar.gz", + "Hash": "00eb5b3cbeb1cdb23a0db8824fdf87cc", + "Requirements": [ + "Biostrings", + "DBI", + "IRanges", + "RSQLite", + "S4Vectors", + "oligo", + "oligoClasses" + ] + }, + "pd.hg.u133a.tag": { + "Package": "pd.hg.u133a.tag", + "Version": "3.12.0", + "Source": "URL", + "RemoteType": "url", + "RemoteUrl": "https://bioconductor.org/packages/3.11/data/annotation/src/contrib/pd.hg.u133a.tag_3.12.0.tar.gz", + "Hash": "08641f6f22b14d377c3e3b19dd97ec40", + "Requirements": [ + "Biostrings", + "DBI", + "IRanges", + "RSQLite", + "S4Vectors", + "oligo", + "oligoClasses" + ] + }, + "pd.hg.u133b": { + "Package": "pd.hg.u133b", + "Version": "3.12.0", + "Source": "URL", + "RemoteType": "url", + "RemoteUrl": "https://bioconductor.org/packages/3.11/data/annotation/src/contrib/pd.hg.u133b_3.12.0.tar.gz", + "Hash": "dfb1f98d541b66127700c86ee65dadc6", + "Requirements": [ + "Biostrings", + "DBI", + "IRanges", + "RSQLite", + "S4Vectors", + "oligo", + "oligoClasses" + ] + }, + "pd.hg.u219": { + "Package": "pd.hg.u219", + "Version": "3.12.0", + "Source": "URL", + "RemoteType": "url", + "RemoteUrl": "https://bioconductor.org/packages/3.11/data/annotation/src/contrib/pd.hg.u219_3.12.0.tar.gz", + "Hash": "ab647b495a91672f7f5f2338f4f05086", + "Requirements": [ + "Biostrings", + "DBI", + "IRanges", + "RSQLite", + "S4Vectors", + "oligo", + "oligoClasses" + ] + }, + "pd.hg.u95a": { + "Package": "pd.hg.u95a", + "Version": "3.12.0", + "Source": "URL", + "RemoteType": "url", + "RemoteUrl": "https://bioconductor.org/packages/3.11/data/annotation/src/contrib/pd.hg.u95a_3.12.0.tar.gz", + "Hash": "e3987e45dbbfd1ef73e20cb8ce10c31b", + "Requirements": [ + "Biostrings", + "DBI", + "IRanges", + "RSQLite", + "S4Vectors", + "oligo", + "oligoClasses" + ] + }, + "pd.hg.u95av2": { + "Package": "pd.hg.u95av2", + "Version": "3.12.0", + "Source": "URL", + "RemoteType": "url", + "RemoteUrl": "https://bioconductor.org/packages/3.11/data/annotation/src/contrib/pd.hg.u95av2_3.12.0.tar.gz", + "Hash": "3ba29538fc0235a75e3882840acfdab3", + "Requirements": [ + "Biostrings", + "DBI", + "IRanges", + "RSQLite", + "S4Vectors", + "oligo", + "oligoClasses" + ] + }, + "pd.hg.u95b": { + "Package": "pd.hg.u95b", + "Version": "3.12.0", + "Source": "URL", + "RemoteType": "url", + "RemoteUrl": "https://bioconductor.org/packages/3.11/data/annotation/src/contrib/pd.hg.u95b_3.12.0.tar.gz", + "Hash": "39cd7f7e24dcfc40afa147d6217084dd", + "Requirements": [ + "Biostrings", + "DBI", + "IRanges", + "RSQLite", + "S4Vectors", + "oligo", + "oligoClasses" + ] + }, + "pd.hg.u95c": { + "Package": "pd.hg.u95c", + "Version": "3.12.0", + "Source": "URL", + "RemoteType": "url", + "RemoteUrl": "https://bioconductor.org/packages/3.11/data/annotation/src/contrib/pd.hg.u95c_3.12.0.tar.gz", + "Hash": "4721e88f48515638f28ed7074e333975", + "Requirements": [ + "Biostrings", + "DBI", + "IRanges", + "RSQLite", + "S4Vectors", + "oligo", + "oligoClasses" + ] + }, + "pd.hg.u95d": { + "Package": "pd.hg.u95d", + "Version": "3.12.0", + "Source": "URL", + "RemoteType": "url", + "RemoteUrl": "https://bioconductor.org/packages/3.11/data/annotation/src/contrib/pd.hg.u95d_3.12.0.tar.gz", + "Hash": "94db900f0a126348c1453b809b93f006", + "Requirements": [ + "Biostrings", + "DBI", + "IRanges", + "RSQLite", + "S4Vectors", + "oligo", + "oligoClasses" + ] + }, + "pd.hg.u95e": { + "Package": "pd.hg.u95e", + "Version": "3.12.0", + "Source": "URL", + "RemoteType": "url", + "RemoteUrl": "https://bioconductor.org/packages/3.11/data/annotation/src/contrib/pd.hg.u95e_3.12.0.tar.gz", + "Hash": "30e685be5c9393a6c0ecaf827f21ff32", + "Requirements": [ + "Biostrings", + "DBI", + "IRanges", + "RSQLite", + "S4Vectors", + "oligo", + "oligoClasses" + ] + }, + "pd.hg18.60mer.expr": { + "Package": "pd.hg18.60mer.expr", + "Version": "3.12.0", + "Source": "URL", + "RemoteType": "url", + "RemoteUrl": "https://bioconductor.org/packages/3.11/data/annotation/src/contrib/pd.hg18.60mer.expr_3.12.0.tar.gz", + "Hash": "b62484e2aa61cb46bf151e5e0459809a", + "Requirements": [ + "Biostrings", + "DBI", + "IRanges", + "RSQLite", + "S4Vectors", + "oligo", + "oligoClasses" + ] + }, + "pd.ht.hg.u133.plus.pm": { + "Package": "pd.ht.hg.u133.plus.pm", + "Version": "3.12.0", + "Source": "URL", + "RemoteType": "url", + "RemoteUrl": "https://bioconductor.org/packages/3.11/data/annotation/src/contrib/pd.ht.hg.u133.plus.pm_3.12.0.tar.gz", + "Hash": "0c85213d8202eb50cc653cae3a729127", + "Requirements": [ + "Biostrings", + "DBI", + "IRanges", + "RSQLite", + "S4Vectors", + "oligo", + "oligoClasses" + ] + }, + "pd.ht.hg.u133a": { + "Package": "pd.ht.hg.u133a", + "Version": "3.12.0", + "Source": "URL", + "RemoteType": "url", + "RemoteUrl": "https://bioconductor.org/packages/3.11/data/annotation/src/contrib/pd.ht.hg.u133a_3.12.0.tar.gz", + "Hash": "5325025c794b806ad59abaf236647b71", + "Requirements": [ + "Biostrings", + "DBI", + "IRanges", + "RSQLite", + "S4Vectors", + "oligo", + "oligoClasses" + ] + }, + "pd.ht.mg.430a": { + "Package": "pd.ht.mg.430a", + "Version": "3.12.0", + "Source": "URL", + "RemoteType": "url", + "RemoteUrl": "https://bioconductor.org/packages/3.11/data/annotation/src/contrib/pd.ht.mg.430a_3.12.0.tar.gz", + "Hash": "13e54d888910bd1d5023b5ceb8e40ca8", + "Requirements": [ + "Biostrings", + "DBI", + "IRanges", + "RSQLite", + "S4Vectors", + "oligo", + "oligoClasses" + ] + }, + "pd.hta.2.0": { + "Package": "pd.hta.2.0", + "Version": "3.12.2", + "Source": "URL", + "RemoteType": "url", + "RemoteUrl": "https://bioconductor.org/packages/3.11/data/annotation/src/contrib/pd.hta.2.0_3.12.2.tar.gz", + "Hash": "ec21a5163f80c39e13ca9a5380520118", + "Requirements": [ + "Biostrings", + "DBI", + "IRanges", + "RSQLite", + "S4Vectors", + "oligo", + "oligoClasses" + ] + }, + "pd.hu6800": { + "Package": "pd.hu6800", + "Version": "3.12.0", + "Source": "URL", + "RemoteType": "url", + "RemoteUrl": "https://bioconductor.org/packages/3.11/data/annotation/src/contrib/pd.hu6800_3.12.0.tar.gz", + "Hash": "3feff94112b3a6e93c420ac2ec2cf724", + "Requirements": [ + "Biostrings", + "DBI", + "IRanges", + "RSQLite", + "S4Vectors", + "oligo", + "oligoClasses" + ] + }, + "pd.huex.1.0.st.v2": { + "Package": "pd.huex.1.0.st.v2", + "Version": "3.14.1", + "Source": "URL", + "RemoteType": "url", + "RemoteUrl": "https://bioconductor.org/packages/3.11/data/annotation/src/contrib/pd.huex.1.0.st.v2_3.14.1.tar.gz", + "Hash": "0f4628027cc7c9e99d6113fbcbe905ad", + "Requirements": [ + "Biostrings", + "DBI", + "IRanges", + "RSQLite", + "S4Vectors", + "oligo", + "oligoClasses" + ] + }, + "pd.hugene.1.0.st.v1": { + "Package": "pd.hugene.1.0.st.v1", + "Version": "3.14.1", + "Source": "URL", + "RemoteType": "url", + "RemoteUrl": "https://bioconductor.org/packages/3.11/data/annotation/src/contrib/pd.hugene.1.0.st.v1_3.14.1.tar.gz", + "Hash": "b4af98eee538b41c048c6b0072e63bfe", + "Requirements": [ + "Biostrings", + "DBI", + "IRanges", + "RSQLite", + "S4Vectors", + "oligo", + "oligoClasses" + ] + }, + "pd.hugene.1.1.st.v1": { + "Package": "pd.hugene.1.1.st.v1", + "Version": "3.14.1", + "Source": "URL", + "RemoteType": "url", + "RemoteUrl": "https://bioconductor.org/packages/3.11/data/annotation/src/contrib/pd.hugene.1.1.st.v1_3.14.1.tar.gz", + "Hash": "28a838217e3e27a26e061dd90afc65dc", + "Requirements": [ + "Biostrings", + "DBI", + "IRanges", + "RSQLite", + "S4Vectors", + "oligo", + "oligoClasses" + ] + }, + "pd.hugene.2.0.st": { + "Package": "pd.hugene.2.0.st", + "Version": "3.14.1", + "Source": "URL", + "RemoteType": "url", + "RemoteUrl": "https://bioconductor.org/packages/3.11/data/annotation/src/contrib/pd.hugene.2.0.st_3.14.1.tar.gz", + "Hash": "405d09ad6449026e2586e7fc54164798", + "Requirements": [ + "Biostrings", + "DBI", + "IRanges", + "RSQLite", + "S4Vectors", + "oligo", + "oligoClasses" + ] + }, + "pd.hugene.2.1.st": { + "Package": "pd.hugene.2.1.st", + "Version": "3.14.1", + "Source": "URL", + "RemoteType": "url", + "RemoteUrl": "https://bioconductor.org/packages/3.11/data/annotation/src/contrib/pd.hugene.2.1.st_3.14.1.tar.gz", + "Hash": "fa247194ecb0caf2be3a6012d9232fbc", + "Requirements": [ + "Biostrings", + "DBI", + "IRanges", + "RSQLite", + "S4Vectors", + "oligo", + "oligoClasses" + ] + }, + "pd.maize": { + "Package": "pd.maize", + "Version": "3.12.0", + "Source": "URL", + "RemoteType": "url", + "RemoteUrl": "https://bioconductor.org/packages/3.11/data/annotation/src/contrib/pd.maize_3.12.0.tar.gz", + "Hash": "13bd0c8d75eed396aa838af65337221b", + "Requirements": [ + "Biostrings", + "DBI", + "IRanges", + "RSQLite", + "S4Vectors", + "oligo", + "oligoClasses" + ] + }, + "pd.mapping250k.nsp": { + "Package": "pd.mapping250k.nsp", + "Version": "3.12.0", + "Source": "URL", + "RemoteType": "url", + "RemoteUrl": "https://bioconductor.org/packages/3.11/data/annotation/src/contrib/pd.mapping250k.nsp_3.12.0.tar.gz", + "Hash": "0dd6d0ae1fb4e06cc1f409a4b38ba355", + "Requirements": [ + "Biostrings", + "DBI", + "IRanges", + "RSQLite", + "S4Vectors", + "oligo", + "oligoClasses" + ] + }, + "pd.mapping250k.sty": { + "Package": "pd.mapping250k.sty", + "Version": "3.12.0", + "Source": "URL", + "RemoteType": "url", + "RemoteUrl": "https://bioconductor.org/packages/3.11/data/annotation/src/contrib/pd.mapping250k.sty_3.12.0.tar.gz", + "Hash": "5f567ed7d6ff7f728ebb2009ede4d0ad", + "Requirements": [ + "Biostrings", + "DBI", + "IRanges", + "RSQLite", + "S4Vectors", + "oligo", + "oligoClasses" + ] + }, + "pd.mapping50k.hind240": { + "Package": "pd.mapping50k.hind240", + "Version": "3.12.0", + "Source": "URL", + "RemoteType": "url", + "RemoteUrl": "https://bioconductor.org/packages/3.11/data/annotation/src/contrib/pd.mapping50k.hind240_3.12.0.tar.gz", + "Hash": "73d85fe02f1730110942900b9e8c65ba", + "Requirements": [ + "Biostrings", + "DBI", + "IRanges", + "RSQLite", + "S4Vectors", + "oligo", + "oligoClasses" + ] + }, + "pd.mapping50k.xba240": { + "Package": "pd.mapping50k.xba240", + "Version": "3.12.0", + "Source": "URL", + "RemoteType": "url", + "RemoteUrl": "https://bioconductor.org/packages/3.11/data/annotation/src/contrib/pd.mapping50k.xba240_3.12.0.tar.gz", + "Hash": "5852c728bf36a2fd0a3b4ce3745a23dd", + "Requirements": [ + "Biostrings", + "DBI", + "IRanges", + "RSQLite", + "S4Vectors", + "oligo", + "oligoClasses" + ] + }, + "pd.margene.1.0.st": { + "Package": "pd.margene.1.0.st", + "Version": "3.12.0", + "Source": "URL", + "RemoteType": "url", + "RemoteUrl": "https://bioconductor.org/packages/3.11/data/annotation/src/contrib/pd.margene.1.0.st_3.12.0.tar.gz", + "Hash": "9d227a2cdad65864f2ba4afb440e5cf3", + "Requirements": [ + "Biostrings", + "DBI", + "IRanges", + "RSQLite", + "S4Vectors", + "oligo", + "oligoClasses" + ] + }, + "pd.margene.1.1.st": { + "Package": "pd.margene.1.1.st", + "Version": "3.12.0", + "Source": "URL", + "RemoteType": "url", + "RemoteUrl": "https://bioconductor.org/packages/3.11/data/annotation/src/contrib/pd.margene.1.1.st_3.12.0.tar.gz", + "Hash": "567b69c8cd8eb74ed86becd6da207e98", + "Requirements": [ + "Biostrings", + "DBI", + "IRanges", + "RSQLite", + "S4Vectors", + "oligo", + "oligoClasses" + ] + }, + "pd.medgene.1.0.st": { + "Package": "pd.medgene.1.0.st", + "Version": "3.12.0", + "Source": "URL", + "RemoteType": "url", + "RemoteUrl": "https://bioconductor.org/packages/3.11/data/annotation/src/contrib/pd.medgene.1.0.st_3.12.0.tar.gz", + "Hash": "67c90efbab960446b965e53cea17ff2f", + "Requirements": [ + "Biostrings", + "DBI", + "IRanges", + "RSQLite", + "S4Vectors", + "oligo", + "oligoClasses" + ] + }, + "pd.medgene.1.1.st": { + "Package": "pd.medgene.1.1.st", + "Version": "3.12.0", + "Source": "URL", + "RemoteType": "url", + "RemoteUrl": "https://bioconductor.org/packages/3.11/data/annotation/src/contrib/pd.medgene.1.1.st_3.12.0.tar.gz", + "Hash": "42b4d2b4419371bcd5c05881796a97c9", + "Requirements": [ + "Biostrings", + "DBI", + "IRanges", + "RSQLite", + "S4Vectors", + "oligo", + "oligoClasses" + ] + }, + "pd.medicago": { + "Package": "pd.medicago", + "Version": "3.12.0", + "Source": "URL", + "RemoteType": "url", + "RemoteUrl": "https://bioconductor.org/packages/3.11/data/annotation/src/contrib/pd.medicago_3.12.0.tar.gz", + "Hash": "68293e5d7e7f3417643ba05a98b4cac7", + "Requirements": [ + "Biostrings", + "DBI", + "IRanges", + "RSQLite", + "S4Vectors", + "oligo", + "oligoClasses" + ] + }, + "pd.mg.u74a": { + "Package": "pd.mg.u74a", + "Version": "3.12.0", + "Source": "URL", + "RemoteType": "url", + "RemoteUrl": "https://bioconductor.org/packages/3.11/data/annotation/src/contrib/pd.mg.u74a_3.12.0.tar.gz", + "Hash": "0c29196050eb08ffe1de8606671b0011", + "Requirements": [ + "Biostrings", + "DBI", + "IRanges", + "RSQLite", + "S4Vectors", + "oligo", + "oligoClasses" + ] + }, + "pd.mg.u74av2": { + "Package": "pd.mg.u74av2", + "Version": "3.12.0", + "Source": "URL", + "RemoteType": "url", + "RemoteUrl": "https://bioconductor.org/packages/3.11/data/annotation/src/contrib/pd.mg.u74av2_3.12.0.tar.gz", + "Hash": "0eedb6ab46f639ee57f128e9c9ce7270", + "Requirements": [ + "Biostrings", + "DBI", + "IRanges", + "RSQLite", + "S4Vectors", + "oligo", + "oligoClasses" + ] + }, + "pd.mg.u74b": { + "Package": "pd.mg.u74b", + "Version": "3.12.0", + "Source": "URL", + "RemoteType": "url", + "RemoteUrl": "https://bioconductor.org/packages/3.11/data/annotation/src/contrib/pd.mg.u74b_3.12.0.tar.gz", + "Hash": "21622eb1566bb9b27cd1e28ac4e8d72e", + "Requirements": [ + "Biostrings", + "DBI", + "IRanges", + "RSQLite", + "S4Vectors", + "oligo", + "oligoClasses" + ] + }, + "pd.mg.u74bv2": { + "Package": "pd.mg.u74bv2", + "Version": "3.12.0", + "Source": "URL", + "RemoteType": "url", + "RemoteUrl": "https://bioconductor.org/packages/3.11/data/annotation/src/contrib/pd.mg.u74bv2_3.12.0.tar.gz", + "Hash": "304cd79e6b82eb951376f0b9c20aa15c", + "Requirements": [ + "Biostrings", + "DBI", + "IRanges", + "RSQLite", + "S4Vectors", + "oligo", + "oligoClasses" + ] + }, + "pd.mg.u74c": { + "Package": "pd.mg.u74c", + "Version": "3.12.0", + "Source": "URL", + "RemoteType": "url", + "RemoteUrl": "https://bioconductor.org/packages/3.11/data/annotation/src/contrib/pd.mg.u74c_3.12.0.tar.gz", + "Hash": "ab46cfcdcfef3df2481791f4f192abc5", + "Requirements": [ + "Biostrings", + "DBI", + "IRanges", + "RSQLite", + "S4Vectors", + "oligo", + "oligoClasses" + ] + }, + "pd.mg.u74cv2": { + "Package": "pd.mg.u74cv2", + "Version": "3.12.0", + "Source": "URL", + "RemoteType": "url", + "RemoteUrl": "https://bioconductor.org/packages/3.11/data/annotation/src/contrib/pd.mg.u74cv2_3.12.0.tar.gz", + "Hash": "59377f7fdf33bed26b30ad123986c26b", + "Requirements": [ + "Biostrings", + "DBI", + "IRanges", + "RSQLite", + "S4Vectors", + "oligo", + "oligoClasses" + ] + }, + "pd.mirna.1.0": { + "Package": "pd.mirna.1.0", + "Version": "3.12.0", + "Source": "URL", + "RemoteType": "url", + "RemoteUrl": "https://bioconductor.org/packages/3.11/data/annotation/src/contrib/pd.mirna.1.0_3.12.0.tar.gz", + "Hash": "03d28ddf735af432b402cd2f24ea1214", + "Requirements": [ + "Biostrings", + "DBI", + "IRanges", + "RSQLite", + "S4Vectors", + "oligo", + "oligoClasses" + ] + }, + "pd.mirna.2.0": { + "Package": "pd.mirna.2.0", + "Version": "3.12.0", + "Source": "URL", + "RemoteType": "url", + "RemoteUrl": "https://bioconductor.org/packages/3.11/data/annotation/src/contrib/pd.mirna.2.0_3.12.0.tar.gz", + "Hash": "4e1e7c7bc918cce5991106be4d0b5a3a", + "Requirements": [ + "Biostrings", + "DBI", + "IRanges", + "RSQLite", + "S4Vectors", + "oligo", + "oligoClasses" + ] + }, + "pd.mirna.3.0": { + "Package": "pd.mirna.3.0", + "Version": "3.12.0", + "Source": "URL", + "RemoteType": "url", + "RemoteUrl": "https://bioconductor.org/packages/3.11/data/annotation/src/contrib/pd.mirna.3.0_3.12.0.tar.gz", + "Hash": "c812f0da2e232a0e048880c7db79e562", + "Requirements": [ + "Biostrings", + "DBI", + "IRanges", + "RSQLite", + "S4Vectors", + "oligo", + "oligoClasses" + ] + }, + "pd.mirna.3.1": { + "Package": "pd.mirna.3.1", + "Version": "3.8.1", + "Source": "URL", + "RemoteType": "url", + "RemoteUrl": "https://bioconductor.org/packages/3.11/data/annotation/src/contrib/pd.mirna.3.1_3.8.1.tar.gz", + "Hash": "4c08046922af110cbaf10fbe27357f8a", + "Requirements": [ + "Biostrings", + "DBI", + "IRanges", + "RSQLite", + "oligo", + "oligoClasses" + ] + }, + "pd.mirna.4.0": { + "Package": "pd.mirna.4.0", + "Version": "3.12.0", + "Source": "URL", + "RemoteType": "url", + "RemoteUrl": "https://bioconductor.org/packages/3.11/data/annotation/src/contrib/pd.mirna.4.0_3.12.0.tar.gz", + "Hash": "5590536cc4095346fe47602590af9414", + "Requirements": [ + "Biostrings", + "DBI", + "IRanges", + "RSQLite", + "S4Vectors", + "oligo", + "oligoClasses" + ] + }, + "pd.moe430a": { + "Package": "pd.moe430a", + "Version": "3.12.0", + "Source": "URL", + "RemoteType": "url", + "RemoteUrl": "https://bioconductor.org/packages/3.11/data/annotation/src/contrib/pd.moe430a_3.12.0.tar.gz", + "Hash": "49f7265936d773098909c3c964698858", + "Requirements": [ + "Biostrings", + "DBI", + "IRanges", + "RSQLite", + "S4Vectors", + "oligo", + "oligoClasses" + ] + }, + "pd.moe430b": { + "Package": "pd.moe430b", + "Version": "3.12.0", + "Source": "URL", + "RemoteType": "url", + "RemoteUrl": "https://bioconductor.org/packages/3.11/data/annotation/src/contrib/pd.moe430b_3.12.0.tar.gz", + "Hash": "d412d7c91ac35cec71090ca910960348", + "Requirements": [ + "Biostrings", + "DBI", + "IRanges", + "RSQLite", + "S4Vectors", + "oligo", + "oligoClasses" + ] + }, + "pd.moex.1.0.st.v1": { + "Package": "pd.moex.1.0.st.v1", + "Version": "3.14.1", + "Source": "URL", + "RemoteType": "url", + "RemoteUrl": "https://bioconductor.org/packages/3.11/data/annotation/src/contrib/pd.moex.1.0.st.v1_3.14.1.tar.gz", + "Hash": "2e7b2bc4f82d682fe4f65666d43ba76f", + "Requirements": [ + "Biostrings", + "DBI", + "IRanges", + "RSQLite", + "S4Vectors", + "oligo", + "oligoClasses" + ] + }, + "pd.mogene.1.0.st.v1": { + "Package": "pd.mogene.1.0.st.v1", + "Version": "3.14.1", + "Source": "URL", + "RemoteType": "url", + "RemoteUrl": "https://bioconductor.org/packages/3.11/data/annotation/src/contrib/pd.mogene.1.0.st.v1_3.14.1.tar.gz", + "Hash": "1317c9eb4cdacc77ac9519883f593cb7", + "Requirements": [ + "Biostrings", + "DBI", + "IRanges", + "RSQLite", + "S4Vectors", + "oligo", + "oligoClasses" + ] + }, + "pd.mogene.1.1.st.v1": { + "Package": "pd.mogene.1.1.st.v1", + "Version": "3.14.1", + "Source": "URL", + "RemoteType": "url", + "RemoteUrl": "https://bioconductor.org/packages/3.11/data/annotation/src/contrib/pd.mogene.1.1.st.v1_3.14.1.tar.gz", + "Hash": "cf6c9fc4d7157888f63999988626a5ef", + "Requirements": [ + "Biostrings", + "DBI", + "IRanges", + "RSQLite", + "S4Vectors", + "oligo", + "oligoClasses" + ] + }, + "pd.mogene.2.0.st": { + "Package": "pd.mogene.2.0.st", + "Version": "3.14.1", + "Source": "URL", + "RemoteType": "url", + "RemoteUrl": "https://bioconductor.org/packages/3.11/data/annotation/src/contrib/pd.mogene.2.0.st_3.14.1.tar.gz", + "Hash": "7688e5d41096d438eae51237b4ad3371", + "Requirements": [ + "Biostrings", + "DBI", + "IRanges", + "RSQLite", + "S4Vectors", + "oligo", + "oligoClasses" + ] + }, + "pd.mogene.2.1.st": { + "Package": "pd.mogene.2.1.st", + "Version": "3.14.1", + "Source": "URL", + "RemoteType": "url", + "RemoteUrl": "https://bioconductor.org/packages/3.11/data/annotation/src/contrib/pd.mogene.2.1.st_3.14.1.tar.gz", + "Hash": "3d1c811dfb475ca807c630742c92ce64", + "Requirements": [ + "Biostrings", + "DBI", + "IRanges", + "RSQLite", + "S4Vectors", + "oligo", + "oligoClasses" + ] + }, + "pd.mouse430.2": { + "Package": "pd.mouse430.2", + "Version": "3.12.0", + "Source": "URL", + "RemoteType": "url", + "RemoteUrl": "https://bioconductor.org/packages/3.11/data/annotation/src/contrib/pd.mouse430.2_3.12.0.tar.gz", + "Hash": "3e53415d95dc45785cf413a016a8ea14", + "Requirements": [ + "Biostrings", + "DBI", + "IRanges", + "RSQLite", + "S4Vectors", + "oligo", + "oligoClasses" + ] + }, + "pd.mouse430a.2": { + "Package": "pd.mouse430a.2", + "Version": "3.12.0", + "Source": "URL", + "RemoteType": "url", + "RemoteUrl": "https://bioconductor.org/packages/3.11/data/annotation/src/contrib/pd.mouse430a.2_3.12.0.tar.gz", + "Hash": "5002ecebff1a59423962635cf950f2a3", + "Requirements": [ + "Biostrings", + "DBI", + "IRanges", + "RSQLite", + "S4Vectors", + "oligo", + "oligoClasses" + ] + }, + "pd.mta.1.0": { + "Package": "pd.mta.1.0", + "Version": "3.12.0", + "Source": "URL", + "RemoteType": "url", + "RemoteUrl": "https://bioconductor.org/packages/3.11/data/annotation/src/contrib/pd.mta.1.0_3.12.0.tar.gz", + "Hash": "d3698ce540b2816c234f11b325ec9fba", + "Requirements": [ + "Biostrings", + "DBI", + "IRanges", + "RSQLite", + "S4Vectors", + "oligo", + "oligoClasses" + ] + }, + "pd.mu11ksuba": { + "Package": "pd.mu11ksuba", + "Version": "3.12.0", + "Source": "URL", + "RemoteType": "url", + "RemoteUrl": "https://bioconductor.org/packages/3.11/data/annotation/src/contrib/pd.mu11ksuba_3.12.0.tar.gz", + "Hash": "f65488e4371a693645ad8e02de4d8b72", + "Requirements": [ + "Biostrings", + "DBI", + "IRanges", + "RSQLite", + "S4Vectors", + "oligo", + "oligoClasses" + ] + }, + "pd.mu11ksubb": { + "Package": "pd.mu11ksubb", + "Version": "3.12.0", + "Source": "URL", + "RemoteType": "url", + "RemoteUrl": "https://bioconductor.org/packages/3.11/data/annotation/src/contrib/pd.mu11ksubb_3.12.0.tar.gz", + "Hash": "133e97943763f8bece6b3f635bbb1861", + "Requirements": [ + "Biostrings", + "DBI", + "IRanges", + "RSQLite", + "S4Vectors", + "oligo", + "oligoClasses" + ] + }, + "pd.nugo.hs1a520180": { + "Package": "pd.nugo.hs1a520180", + "Version": "3.4.0", + "Source": "URL", + "RemoteType": "url", + "RemoteUrl": "https://bioconductor.org/packages/3.11/data/annotation/src/contrib/pd.nugo.hs1a520180_3.4.0.tar.gz", + "Hash": "443f78281706ec9586d72d4dae08b156", + "Requirements": [ + "Biostrings", + "DBI", + "IRanges", + "RSQLite", + "S4Vectors", + "oligo", + "oligoClasses" + ] + }, + "pd.nugo.mm1a520177": { + "Package": "pd.nugo.mm1a520177", + "Version": "3.4.0", + "Source": "URL", + "RemoteType": "url", + "RemoteUrl": "https://bioconductor.org/packages/3.11/data/annotation/src/contrib/pd.nugo.mm1a520177_3.4.0.tar.gz", + "Hash": "c7da30acb046a2006acd6d80b5ca7662", + "Requirements": [ + "Biostrings", + "DBI", + "IRanges", + "RSQLite", + "S4Vectors", + "oligo", + "oligoClasses" + ] + }, + "pd.ovigene.1.0.st": { + "Package": "pd.ovigene.1.0.st", + "Version": "3.12.0", + "Source": "URL", + "RemoteType": "url", + "RemoteUrl": "https://bioconductor.org/packages/3.11/data/annotation/src/contrib/pd.ovigene.1.0.st_3.12.0.tar.gz", + "Hash": "fa7c5ed7a601ff5947db24f8a493a12d", + "Requirements": [ + "Biostrings", + "DBI", + "IRanges", + "RSQLite", + "S4Vectors", + "oligo", + "oligoClasses" + ] + }, + "pd.ovigene.1.1.st": { + "Package": "pd.ovigene.1.1.st", + "Version": "3.12.0", + "Source": "URL", + "RemoteType": "url", + "RemoteUrl": "https://bioconductor.org/packages/3.11/data/annotation/src/contrib/pd.ovigene.1.1.st_3.12.0.tar.gz", + "Hash": "f02d7884dc14ec0b077d20f657e55479", + "Requirements": [ + "Biostrings", + "DBI", + "IRanges", + "RSQLite", + "S4Vectors", + "oligo", + "oligoClasses" + ] + }, + "pd.pae.g1a": { + "Package": "pd.pae.g1a", + "Version": "3.12.0", + "Source": "URL", + "RemoteType": "url", + "RemoteUrl": "https://bioconductor.org/packages/3.11/data/annotation/src/contrib/pd.pae.g1a_3.12.0.tar.gz", + "Hash": "d379ef475ae17d25a309cdeb905f294c", + "Requirements": [ + "Biostrings", + "DBI", + "IRanges", + "RSQLite", + "S4Vectors", + "oligo", + "oligoClasses" + ] + }, + "pd.plasmodium.anopheles": { + "Package": "pd.plasmodium.anopheles", + "Version": "3.12.0", + "Source": "URL", + "RemoteType": "url", + "RemoteUrl": "https://bioconductor.org/packages/3.11/data/annotation/src/contrib/pd.plasmodium.anopheles_3.12.0.tar.gz", + "Hash": "fde3fcc90a788ff052c7bb7be61af756", + "Requirements": [ + "Biostrings", + "DBI", + "IRanges", + "RSQLite", + "S4Vectors", + "oligo", + "oligoClasses" + ] + }, + "pd.poplar": { + "Package": "pd.poplar", + "Version": "3.12.0", + "Source": "URL", + "RemoteType": "url", + "RemoteUrl": "https://bioconductor.org/packages/3.11/data/annotation/src/contrib/pd.poplar_3.12.0.tar.gz", + "Hash": "bbf8b3cd2bb678774f4a5db94acf27a1", + "Requirements": [ + "Biostrings", + "DBI", + "IRanges", + "RSQLite", + "S4Vectors", + "oligo", + "oligoClasses" + ] + }, + "pd.porcine": { + "Package": "pd.porcine", + "Version": "3.12.0", + "Source": "URL", + "RemoteType": "url", + "RemoteUrl": "https://bioconductor.org/packages/3.11/data/annotation/src/contrib/pd.porcine_3.12.0.tar.gz", + "Hash": "d87681c713103bb27748aec26814edea", + "Requirements": [ + "Biostrings", + "DBI", + "IRanges", + "RSQLite", + "S4Vectors", + "oligo", + "oligoClasses" + ] + }, + "pd.porgene.1.0.st": { + "Package": "pd.porgene.1.0.st", + "Version": "3.12.0", + "Source": "URL", + "RemoteType": "url", + "RemoteUrl": "https://bioconductor.org/packages/3.11/data/annotation/src/contrib/pd.porgene.1.0.st_3.12.0.tar.gz", + "Hash": "90962886bf1d9c1475dcdfc59d20d9f7", + "Requirements": [ + "Biostrings", + "DBI", + "IRanges", + "RSQLite", + "S4Vectors", + "oligo", + "oligoClasses" + ] + }, + "pd.porgene.1.1.st": { + "Package": "pd.porgene.1.1.st", + "Version": "3.12.0", + "Source": "URL", + "RemoteType": "url", + "RemoteUrl": "https://bioconductor.org/packages/3.11/data/annotation/src/contrib/pd.porgene.1.1.st_3.12.0.tar.gz", + "Hash": "01536193871647030bed87edd35ac49f", + "Requirements": [ + "Biostrings", + "DBI", + "IRanges", + "RSQLite", + "S4Vectors", + "oligo", + "oligoClasses" + ] + }, + "pd.rabgene.1.0.st": { + "Package": "pd.rabgene.1.0.st", + "Version": "3.12.0", + "Source": "URL", + "RemoteType": "url", + "RemoteUrl": "https://bioconductor.org/packages/3.11/data/annotation/src/contrib/pd.rabgene.1.0.st_3.12.0.tar.gz", + "Hash": "ccc4050dea6b532db890627f02adce92", + "Requirements": [ + "Biostrings", + "DBI", + "IRanges", + "RSQLite", + "S4Vectors", + "oligo", + "oligoClasses" + ] + }, + "pd.rabgene.1.1.st": { + "Package": "pd.rabgene.1.1.st", + "Version": "3.12.0", + "Source": "URL", + "RemoteType": "url", + "RemoteUrl": "https://bioconductor.org/packages/3.11/data/annotation/src/contrib/pd.rabgene.1.1.st_3.12.0.tar.gz", + "Hash": "f00c89472c63d7c59519dd175737c53e", + "Requirements": [ + "Biostrings", + "DBI", + "IRanges", + "RSQLite", + "S4Vectors", + "oligo", + "oligoClasses" + ] + }, + "pd.rae230a": { + "Package": "pd.rae230a", + "Version": "3.12.0", + "Source": "URL", + "RemoteType": "url", + "RemoteUrl": "https://bioconductor.org/packages/3.11/data/annotation/src/contrib/pd.rae230a_3.12.0.tar.gz", + "Hash": "47140a04ce212d23c3a6afff031d8e8d", + "Requirements": [ + "Biostrings", + "DBI", + "IRanges", + "RSQLite", + "S4Vectors", + "oligo", + "oligoClasses" + ] + }, + "pd.rae230b": { + "Package": "pd.rae230b", + "Version": "3.12.0", + "Source": "URL", + "RemoteType": "url", + "RemoteUrl": "https://bioconductor.org/packages/3.11/data/annotation/src/contrib/pd.rae230b_3.12.0.tar.gz", + "Hash": "0c149e5216e37e8a9ee48a7976c07d60", + "Requirements": [ + "Biostrings", + "DBI", + "IRanges", + "RSQLite", + "S4Vectors", + "oligo", + "oligoClasses" + ] + }, + "pd.raex.1.0.st.v1": { + "Package": "pd.raex.1.0.st.v1", + "Version": "3.14.1", + "Source": "URL", + "RemoteType": "url", + "RemoteUrl": "https://bioconductor.org/packages/3.11/data/annotation/src/contrib/pd.raex.1.0.st.v1_3.14.1.tar.gz", + "Hash": "49423efdc8f78000b12689da2123d8d3", + "Requirements": [ + "Biostrings", + "DBI", + "IRanges", + "RSQLite", + "S4Vectors", + "oligo", + "oligoClasses" + ] + }, + "pd.ragene.1.0.st.v1": { + "Package": "pd.ragene.1.0.st.v1", + "Version": "3.14.1", + "Source": "URL", + "RemoteType": "url", + "RemoteUrl": "https://bioconductor.org/packages/3.11/data/annotation/src/contrib/pd.ragene.1.0.st.v1_3.14.1.tar.gz", + "Hash": "5aa0befbbb317ffaf3aed4f5022a421a", + "Requirements": [ + "Biostrings", + "DBI", + "IRanges", + "RSQLite", + "S4Vectors", + "oligo", + "oligoClasses" + ] + }, + "pd.ragene.1.1.st.v1": { + "Package": "pd.ragene.1.1.st.v1", + "Version": "3.14.1", + "Source": "URL", + "RemoteType": "url", + "RemoteUrl": "https://bioconductor.org/packages/3.11/data/annotation/src/contrib/pd.ragene.1.1.st.v1_3.14.1.tar.gz", + "Hash": "37e9c8c272f08a8db01e7b914cbcb8c0", + "Requirements": [ + "Biostrings", + "DBI", + "IRanges", + "RSQLite", + "S4Vectors", + "oligo", + "oligoClasses" + ] + }, + "pd.ragene.2.0.st": { + "Package": "pd.ragene.2.0.st", + "Version": "3.14.1", + "Source": "URL", + "RemoteType": "url", + "RemoteUrl": "https://bioconductor.org/packages/3.11/data/annotation/src/contrib/pd.ragene.2.0.st_3.14.1.tar.gz", + "Hash": "a38149212bba8d13e470f885f1c18800", + "Requirements": [ + "Biostrings", + "DBI", + "IRanges", + "RSQLite", + "S4Vectors", + "oligo", + "oligoClasses" + ] + }, + "pd.ragene.2.1.st": { + "Package": "pd.ragene.2.1.st", + "Version": "3.14.1", + "Source": "URL", + "RemoteType": "url", + "RemoteUrl": "https://bioconductor.org/packages/3.11/data/annotation/src/contrib/pd.ragene.2.1.st_3.14.1.tar.gz", + "Hash": "d37172c436b8067d37cd47ab285c0779", + "Requirements": [ + "Biostrings", + "DBI", + "IRanges", + "RSQLite", + "S4Vectors", + "oligo", + "oligoClasses" + ] + }, + "pd.rat230.2": { + "Package": "pd.rat230.2", + "Version": "3.12.0", + "Source": "URL", + "RemoteType": "url", + "RemoteUrl": "https://bioconductor.org/packages/3.11/data/annotation/src/contrib/pd.rat230.2_3.12.0.tar.gz", + "Hash": "480f2f4648e2f2d0a0fca5516dab6687", + "Requirements": [ + "Biostrings", + "DBI", + "IRanges", + "RSQLite", + "S4Vectors", + "oligo", + "oligoClasses" + ] + }, + "pd.rcngene.1.0.st": { + "Package": "pd.rcngene.1.0.st", + "Version": "3.12.0", + "Source": "URL", + "RemoteType": "url", + "RemoteUrl": "https://bioconductor.org/packages/3.11/data/annotation/src/contrib/pd.rcngene.1.0.st_3.12.0.tar.gz", + "Hash": "687d94202e4d91dcad430e6b596c1e30", + "Requirements": [ + "Biostrings", + "DBI", + "IRanges", + "RSQLite", + "S4Vectors", + "oligo", + "oligoClasses" + ] + }, + "pd.rcngene.1.1.st": { + "Package": "pd.rcngene.1.1.st", + "Version": "3.12.0", + "Source": "URL", + "RemoteType": "url", + "RemoteUrl": "https://bioconductor.org/packages/3.11/data/annotation/src/contrib/pd.rcngene.1.1.st_3.12.0.tar.gz", + "Hash": "0f81a022379ee7737a049ae38bc1e2cc", + "Requirements": [ + "Biostrings", + "DBI", + "IRanges", + "RSQLite", + "S4Vectors", + "oligo", + "oligoClasses" + ] + }, + "pd.rg.u34a": { + "Package": "pd.rg.u34a", + "Version": "3.12.0", + "Source": "URL", + "RemoteType": "url", + "RemoteUrl": "https://bioconductor.org/packages/3.11/data/annotation/src/contrib/pd.rg.u34a_3.12.0.tar.gz", + "Hash": "626bd412668d9a0d77cd91e57c360b56", + "Requirements": [ + "Biostrings", + "DBI", + "IRanges", + "RSQLite", + "S4Vectors", + "oligo", + "oligoClasses" + ] + }, + "pd.rg.u34b": { + "Package": "pd.rg.u34b", + "Version": "3.12.0", + "Source": "URL", + "RemoteType": "url", + "RemoteUrl": "https://bioconductor.org/packages/3.11/data/annotation/src/contrib/pd.rg.u34b_3.12.0.tar.gz", + "Hash": "358cd293aa16641847c5414b59a47668", + "Requirements": [ + "Biostrings", + "DBI", + "IRanges", + "RSQLite", + "S4Vectors", + "oligo", + "oligoClasses" + ] + }, + "pd.rg.u34c": { + "Package": "pd.rg.u34c", + "Version": "3.12.0", + "Source": "URL", + "RemoteType": "url", + "RemoteUrl": "https://bioconductor.org/packages/3.11/data/annotation/src/contrib/pd.rg.u34c_3.12.0.tar.gz", + "Hash": "f3b00c1f6aaf1cce57be9b2ed2b8c6d0", + "Requirements": [ + "Biostrings", + "DBI", + "IRanges", + "RSQLite", + "S4Vectors", + "oligo", + "oligoClasses" + ] + }, + "pd.rhegene.1.0.st": { + "Package": "pd.rhegene.1.0.st", + "Version": "3.12.0", + "Source": "URL", + "RemoteType": "url", + "RemoteUrl": "https://bioconductor.org/packages/3.11/data/annotation/src/contrib/pd.rhegene.1.0.st_3.12.0.tar.gz", + "Hash": "96c940e5f09cf198cc5ba33e8ec9c05d", + "Requirements": [ + "Biostrings", + "DBI", + "IRanges", + "RSQLite", + "S4Vectors", + "oligo", + "oligoClasses" + ] + }, + "pd.rhegene.1.1.st": { + "Package": "pd.rhegene.1.1.st", + "Version": "3.12.0", + "Source": "URL", + "RemoteType": "url", + "RemoteUrl": "https://bioconductor.org/packages/3.11/data/annotation/src/contrib/pd.rhegene.1.1.st_3.12.0.tar.gz", + "Hash": "6d56195dadeaa4cefe8c5e1a9b82f76e", + "Requirements": [ + "Biostrings", + "DBI", + "IRanges", + "RSQLite", + "S4Vectors", + "oligo", + "oligoClasses" + ] + }, + "pd.rhesus": { + "Package": "pd.rhesus", + "Version": "3.12.0", + "Source": "URL", + "RemoteType": "url", + "RemoteUrl": "https://bioconductor.org/packages/3.11/data/annotation/src/contrib/pd.rhesus_3.12.0.tar.gz", + "Hash": "bfef43bc1f1caaba7a276f8a7cd8d99e", + "Requirements": [ + "Biostrings", + "DBI", + "IRanges", + "RSQLite", + "S4Vectors", + "oligo", + "oligoClasses" + ] + }, + "pd.rice": { + "Package": "pd.rice", + "Version": "3.12.0", + "Source": "URL", + "RemoteType": "url", + "RemoteUrl": "https://bioconductor.org/packages/3.11/data/annotation/src/contrib/pd.rice_3.12.0.tar.gz", + "Hash": "251cb8b0ff216f7990c3543aef0b4bb8", + "Requirements": [ + "Biostrings", + "DBI", + "IRanges", + "RSQLite", + "S4Vectors", + "oligo", + "oligoClasses" + ] + }, + "pd.rjpgene.1.0.st": { + "Package": "pd.rjpgene.1.0.st", + "Version": "3.12.0", + "Source": "URL", + "RemoteType": "url", + "RemoteUrl": "https://bioconductor.org/packages/3.11/data/annotation/src/contrib/pd.rjpgene.1.0.st_3.12.0.tar.gz", + "Hash": "6ca673862d4fa15e624822198f38c8a9", + "Requirements": [ + "Biostrings", + "DBI", + "IRanges", + "RSQLite", + "S4Vectors", + "oligo", + "oligoClasses" + ] + }, + "pd.rjpgene.1.1.st": { + "Package": "pd.rjpgene.1.1.st", + "Version": "3.12.0", + "Source": "URL", + "RemoteType": "url", + "RemoteUrl": "https://bioconductor.org/packages/3.11/data/annotation/src/contrib/pd.rjpgene.1.1.st_3.12.0.tar.gz", + "Hash": "e6516e4e0b6690ea0fb9ddc224314907", + "Requirements": [ + "Biostrings", + "DBI", + "IRanges", + "RSQLite", + "S4Vectors", + "oligo", + "oligoClasses" + ] + }, + "pd.rn.u34": { + "Package": "pd.rn.u34", + "Version": "3.12.0", + "Source": "URL", + "RemoteType": "url", + "RemoteUrl": "https://bioconductor.org/packages/3.11/data/annotation/src/contrib/pd.rn.u34_3.12.0.tar.gz", + "Hash": "25bfa9ad38c1a4542fc6c885eb6e4040", + "Requirements": [ + "Biostrings", + "DBI", + "IRanges", + "RSQLite", + "S4Vectors", + "oligo", + "oligoClasses" + ] + }, + "pd.rta.1.0": { + "Package": "pd.rta.1.0", + "Version": "3.12.2", + "Source": "URL", + "RemoteType": "url", + "RemoteUrl": "https://bioconductor.org/packages/3.11/data/annotation/src/contrib/pd.rta.1.0_3.12.2.tar.gz", + "Hash": "bf812de8106bd4d52dc60851cd77babb", + "Requirements": [ + "Biostrings", + "DBI", + "IRanges", + "RSQLite", + "S4Vectors", + "oligo", + "oligoClasses" + ] + }, + "pd.rusgene.1.0.st": { + "Package": "pd.rusgene.1.0.st", + "Version": "3.12.0", + "Source": "URL", + "RemoteType": "url", + "RemoteUrl": "https://bioconductor.org/packages/3.11/data/annotation/src/contrib/pd.rusgene.1.0.st_3.12.0.tar.gz", + "Hash": "fbdad934b59c18a4cf55f0b7ce313fd2", + "Requirements": [ + "Biostrings", + "DBI", + "IRanges", + "RSQLite", + "S4Vectors", + "oligo", + "oligoClasses" + ] + }, + "pd.rusgene.1.1.st": { + "Package": "pd.rusgene.1.1.st", + "Version": "3.12.0", + "Source": "URL", + "RemoteType": "url", + "RemoteUrl": "https://bioconductor.org/packages/3.11/data/annotation/src/contrib/pd.rusgene.1.1.st_3.12.0.tar.gz", + "Hash": "056e35d33ab8893372586c202bc6ec7e", + "Requirements": [ + "Biostrings", + "DBI", + "IRanges", + "RSQLite", + "S4Vectors", + "oligo", + "oligoClasses" + ] + }, + "pd.s.aureus": { + "Package": "pd.s.aureus", + "Version": "3.12.0", + "Source": "URL", + "RemoteType": "url", + "RemoteUrl": "https://bioconductor.org/packages/3.11/data/annotation/src/contrib/pd.s.aureus_3.12.0.tar.gz", + "Hash": "97e63f00fcd19361b37d05bde757a04b", + "Requirements": [ + "Biostrings", + "DBI", + "IRanges", + "RSQLite", + "S4Vectors", + "oligo", + "oligoClasses" + ] + }, + "pd.soybean": { + "Package": "pd.soybean", + "Version": "3.12.0", + "Source": "URL", + "RemoteType": "url", + "RemoteUrl": "https://bioconductor.org/packages/3.11/data/annotation/src/contrib/pd.soybean_3.12.0.tar.gz", + "Hash": "8ce34d2bf0d26c7dc3f2341a600e57ba", + "Requirements": [ + "Biostrings", + "DBI", + "IRanges", + "RSQLite", + "S4Vectors", + "oligo", + "oligoClasses" + ] + }, + "pd.soygene.1.0.st": { + "Package": "pd.soygene.1.0.st", + "Version": "3.12.0", + "Source": "URL", + "RemoteType": "url", + "RemoteUrl": "https://bioconductor.org/packages/3.11/data/annotation/src/contrib/pd.soygene.1.0.st_3.12.0.tar.gz", + "Hash": "b738a8fac4c93c21d9c5f1341792b4ea", + "Requirements": [ + "Biostrings", + "DBI", + "IRanges", + "RSQLite", + "S4Vectors", + "oligo", + "oligoClasses" + ] + }, + "pd.soygene.1.1.st": { + "Package": "pd.soygene.1.1.st", + "Version": "3.12.0", + "Source": "URL", + "RemoteType": "url", + "RemoteUrl": "https://bioconductor.org/packages/3.11/data/annotation/src/contrib/pd.soygene.1.1.st_3.12.0.tar.gz", + "Hash": "6624621ee345c61b4f132c6bdf4b9688", + "Requirements": [ + "Biostrings", + "DBI", + "IRanges", + "RSQLite", + "S4Vectors", + "oligo", + "oligoClasses" + ] + }, + "pd.sugar.cane": { + "Package": "pd.sugar.cane", + "Version": "3.12.0", + "Source": "URL", + "RemoteType": "url", + "RemoteUrl": "https://bioconductor.org/packages/3.11/data/annotation/src/contrib/pd.sugar.cane_3.12.0.tar.gz", + "Hash": "cc37459d251a951ff6b3c37874298d0d", + "Requirements": [ + "Biostrings", + "DBI", + "IRanges", + "RSQLite", + "S4Vectors", + "oligo", + "oligoClasses" + ] + }, + "pd.tomato": { + "Package": "pd.tomato", + "Version": "3.12.0", + "Source": "URL", + "RemoteType": "url", + "RemoteUrl": "https://bioconductor.org/packages/3.11/data/annotation/src/contrib/pd.tomato_3.12.0.tar.gz", + "Hash": "50dda903035a8cdb8234b20994a6f5b7", + "Requirements": [ + "Biostrings", + "DBI", + "IRanges", + "RSQLite", + "S4Vectors", + "oligo", + "oligoClasses" + ] + }, + "pd.u133.x3p": { + "Package": "pd.u133.x3p", + "Version": "3.12.0", + "Source": "URL", + "RemoteType": "url", + "RemoteUrl": "https://bioconductor.org/packages/3.11/data/annotation/src/contrib/pd.u133.x3p_3.12.0.tar.gz", + "Hash": "0e8db8f1e971e492d379107bc98edabc", + "Requirements": [ + "Biostrings", + "DBI", + "IRanges", + "RSQLite", + "S4Vectors", + "oligo", + "oligoClasses" + ] + }, + "pd.vitis.vinifera": { + "Package": "pd.vitis.vinifera", + "Version": "3.12.0", + "Source": "URL", + "RemoteType": "url", + "RemoteUrl": "https://bioconductor.org/packages/3.11/data/annotation/src/contrib/pd.vitis.vinifera_3.12.0.tar.gz", + "Hash": "28e0e5c7b53198864ecd12ebb52c1f09", + "Requirements": [ + "Biostrings", + "DBI", + "IRanges", + "RSQLite", + "S4Vectors", + "oligo", + "oligoClasses" + ] + }, + "pd.wheat": { + "Package": "pd.wheat", + "Version": "3.12.0", + "Source": "URL", + "RemoteType": "url", + "RemoteUrl": "https://bioconductor.org/packages/3.11/data/annotation/src/contrib/pd.wheat_3.12.0.tar.gz", + "Hash": "dbca4083c501f8a47bec20edfec51511", + "Requirements": [ + "Biostrings", + "DBI", + "IRanges", + "RSQLite", + "S4Vectors", + "oligo", + "oligoClasses" + ] + }, + "pd.x.laevis.2": { + "Package": "pd.x.laevis.2", + "Version": "3.12.0", + "Source": "URL", + "RemoteType": "url", + "RemoteUrl": "https://bioconductor.org/packages/3.11/data/annotation/src/contrib/pd.x.laevis.2_3.12.0.tar.gz", + "Hash": "3eedcf374550f394996071feaf7d897a", + "Requirements": [ + "Biostrings", + "DBI", + "IRanges", + "RSQLite", + "S4Vectors", + "oligo", + "oligoClasses" + ] + }, + "pd.x.tropicalis": { + "Package": "pd.x.tropicalis", + "Version": "3.12.0", + "Source": "URL", + "RemoteType": "url", + "RemoteUrl": "https://bioconductor.org/packages/3.11/data/annotation/src/contrib/pd.x.tropicalis_3.12.0.tar.gz", + "Hash": "bfd9f2351d054b1fa8795ed857a783ec", + "Requirements": [ + "Biostrings", + "DBI", + "IRanges", + "RSQLite", + "S4Vectors", + "oligo", + "oligoClasses" + ] + }, + "pd.xenopus.laevis": { + "Package": "pd.xenopus.laevis", + "Version": "3.12.0", + "Source": "URL", + "RemoteType": "url", + "RemoteUrl": "https://bioconductor.org/packages/3.11/data/annotation/src/contrib/pd.xenopus.laevis_3.12.0.tar.gz", + "Hash": "0d23ca0f9529ac065a0c2f453156483c", + "Requirements": [ + "Biostrings", + "DBI", + "IRanges", + "RSQLite", + "S4Vectors", + "oligo", + "oligoClasses" + ] + }, + "pd.yeast.2": { + "Package": "pd.yeast.2", + "Version": "3.12.0", + "Source": "URL", + "RemoteType": "url", + "RemoteUrl": "https://bioconductor.org/packages/3.11/data/annotation/src/contrib/pd.yeast.2_3.12.0.tar.gz", + "Hash": "e7b4817bcff6c1f6612972dbe383bf37", + "Requirements": [ + "Biostrings", + "DBI", + "IRanges", + "RSQLite", + "S4Vectors", + "oligo", + "oligoClasses" + ] + }, + "pd.yg.s98": { + "Package": "pd.yg.s98", + "Version": "3.12.0", + "Source": "URL", + "RemoteType": "url", + "RemoteUrl": "https://bioconductor.org/packages/3.11/data/annotation/src/contrib/pd.yg.s98_3.12.0.tar.gz", + "Hash": "393e8cdc6b89fee611f5303f84ad60b9", + "Requirements": [ + "Biostrings", + "DBI", + "IRanges", + "RSQLite", + "S4Vectors", + "oligo", + "oligoClasses" + ] + }, + "pd.zebgene.1.0.st": { + "Package": "pd.zebgene.1.0.st", + "Version": "3.12.0", + "Source": "URL", + "RemoteType": "url", + "RemoteUrl": "https://bioconductor.org/packages/3.11/data/annotation/src/contrib/pd.zebgene.1.0.st_3.12.0.tar.gz", + "Hash": "04d67c12fddf84e911cc5942d77a84dd", + "Requirements": [ + "Biostrings", + "DBI", + "IRanges", + "RSQLite", + "S4Vectors", + "oligo", + "oligoClasses" + ] + }, + "pd.zebgene.1.1.st": { + "Package": "pd.zebgene.1.1.st", + "Version": "3.12.0", + "Source": "URL", + "RemoteType": "url", + "RemoteUrl": "https://bioconductor.org/packages/3.11/data/annotation/src/contrib/pd.zebgene.1.1.st_3.12.0.tar.gz", + "Hash": "d352cde50922c13e489405ff6abe63bc", + "Requirements": [ + "Biostrings", + "DBI", + "IRanges", + "RSQLite", + "S4Vectors", + "oligo", + "oligoClasses" + ] + }, + "pd.zebrafish": { + "Package": "pd.zebrafish", + "Version": "3.12.0", + "Source": "URL", + "RemoteType": "url", + "RemoteUrl": "https://bioconductor.org/packages/3.11/data/annotation/src/contrib/pd.zebrafish_3.12.0.tar.gz", + "Hash": "9b1b745bc2a6884595ca22b2ff57e85f", + "Requirements": [ + "Biostrings", + "DBI", + "IRanges", + "RSQLite", + "S4Vectors", + "oligo", + "oligoClasses" + ] + }, + "pillar": { + "Package": "pillar", + "Version": "1.8.1", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "f2316df30902c81729ae9de95ad5a608", + "Requirements": [ + "cli", + "fansi", + "glue", + "lifecycle", + "rlang", + "utf8", + "vctrs" + ] + }, + "pkgbuild": { + "Package": "pkgbuild", + "Version": "1.1.0", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "404684bc4e3685007f9720adf13b06c1", + "Requirements": [ + "R6", + "callr", + "cli", + "crayon", + "desc", + "prettyunits", + "rprojroot", + "withr" + ] + }, + "pkgconfig": { + "Package": "pkgconfig", + "Version": "2.0.1", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "b8a063ca3694e651ac46f71b4bf0e090", + "Requirements": [] + }, + "pkgload": { + "Package": "pkgload", + "Version": "1.1.0", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "b6b150cd4709e0c0c9b5d51ac4376282", + "Requirements": [ + "cli", + "crayon", + "desc", + "pkgbuild", + "rlang", + "rprojroot", + "rstudioapi", + "withr" + ] + }, + "plogr": { + "Package": "plogr", + "Version": "0.2.0", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "09eb987710984fc2905c7129c7d85e65", + "Requirements": [] + }, + "porcinessensgprobe": { + "Package": "porcinessensgprobe", + "Version": "22.0.0", + "Source": "URL", + "RemoteType": "url", + "RemoteUrl": "https://mbni.org/customcdf/22.0.0/ensg.download/porcinessensgprobe_22.0.0.tar.gz", + "Hash": "1b2a5d94b6b3669c8beead5004c8162b", + "Requirements": [ + "AnnotationDbi" + ] + }, + "porgene10stssensgprobe": { + "Package": "porgene10stssensgprobe", + "Version": "22.0.0", + "Source": "URL", + "RemoteType": "url", + "RemoteUrl": "https://mbni.org/customcdf/22.0.0/ensg.download/porgene10stssensgprobe_22.0.0.tar.gz", + "Hash": "aced001073d065e85b3fc133be037171", + "Requirements": [ + "AnnotationDbi" + ] + }, + "porgene11stssensgprobe": { + "Package": "porgene11stssensgprobe", + "Version": "22.0.0", + "Source": "URL", + "RemoteType": "url", + "RemoteUrl": "https://mbni.org/customcdf/22.0.0/ensg.download/porgene11stssensgprobe_22.0.0.tar.gz", + "Hash": "37e3293ed9414af57c60c3d9dc7d43e4", + "Requirements": [ + "AnnotationDbi" + ] + }, + "praise": { + "Package": "praise", + "Version": "1.0.0", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "a555924add98c99d2f411e37e7d25e9f", + "Requirements": [] + }, + "preprocessCore": { + "Package": "preprocessCore", + "Version": "1.50.0", + "Source": "URL", + "RemoteType": "url", + "RemoteUrl": "https://bioconductor.org/packages/3.11/bioc/src/contrib/preprocessCore_1.50.0.tar.gz", + "git_url": "https://git.bioconductor.org/packages/preprocessCore", + "git_branch": "RELEASE_3_11", + "git_last_commit": "9230366", + "git_last_commit_date": "2020-04-27", + "Hash": "4d183aca4311a7610cb96d14e528e73e", + "Requirements": [] + }, + "prettyunits": { + "Package": "prettyunits", + "Version": "1.0.2", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "f3c960f0105f2ed179460864979fc37c", + "Requirements": [ + "assertthat", + "magrittr" + ] + }, + "primeviewhsensgprobe": { + "Package": "primeviewhsensgprobe", + "Version": "22.0.0", + "Source": "URL", + "RemoteType": "url", + "RemoteUrl": "https://mbni.org/customcdf/22.0.0/ensg.download/primeviewhsensgprobe_22.0.0.tar.gz", + "Hash": "c244f01edfcf9fbff9a0db054cc60743", + "Requirements": [ + "AnnotationDbi" + ] + }, + "processx": { + "Package": "processx", + "Version": "3.4.3", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "f4f13345fcb00c51ace12f65dd18749f", + "Requirements": [ + "R6", + "ps" + ] + }, + "promises": { + "Package": "promises", + "Version": "1.1.1", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "a8730dcbdd19f9047774909f0ec214a4", + "Requirements": [ + "R6", + "Rcpp", + "later", + "magrittr", + "rlang" + ] + }, + "ps": { + "Package": "ps", + "Version": "1.3.3", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "425d938eb9c02906a8ac98c0c2a306b5", + "Requirements": [] + }, + "purrr": { + "Package": "purrr", + "Version": "0.3.3", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "22aca7d1181718e927d403a8c2d69d62", + "Requirements": [ + "magrittr", + "rlang" + ] + }, + "rabbit2a520535focensgprobe": { + "Package": "rabbit2a520535focensgprobe", + "Version": "22.0.0", + "Source": "URL", + "RemoteType": "url", + "RemoteUrl": "https://mbni.org/customcdf/22.0.0/ensg.download/rabbit2a520535focensgprobe_22.0.0.tar.gz", + "Hash": "dd7d0bbfac8181127d2b4ccf221c9ef0", + "Requirements": [ + "AnnotationDbi" + ] + }, + "rabgene10stocensgprobe": { + "Package": "rabgene10stocensgprobe", + "Version": "22.0.0", + "Source": "URL", + "RemoteType": "url", + "RemoteUrl": "https://mbni.org/customcdf/22.0.0/ensg.download/rabgene10stocensgprobe_22.0.0.tar.gz", + "Hash": "c824bf5eeafb2654aa0ebc1fcb204405", + "Requirements": [ + "AnnotationDbi" + ] + }, + "rabgene11stocensgprobe": { + "Package": "rabgene11stocensgprobe", + "Version": "22.0.0", + "Source": "URL", + "RemoteType": "url", + "RemoteUrl": "https://mbni.org/customcdf/22.0.0/ensg.download/rabgene11stocensgprobe_22.0.0.tar.gz", + "Hash": "7439b9b5c9bc9e215ae5bbb116c89931", + "Requirements": [ + "AnnotationDbi" + ] + }, + "rae230arnensgprobe": { + "Package": "rae230arnensgprobe", + "Version": "22.0.0", + "Source": "URL", + "RemoteType": "url", + "RemoteUrl": "https://mbni.org/customcdf/22.0.0/ensg.download/rae230arnensgprobe_22.0.0.tar.gz", + "Hash": "291ac5412ea6369b55d8e64317ee8942", + "Requirements": [ + "AnnotationDbi" + ] + }, + "rae230brnensgprobe": { + "Package": "rae230brnensgprobe", + "Version": "22.0.0", + "Source": "URL", + "RemoteType": "url", + "RemoteUrl": "https://mbni.org/customcdf/22.0.0/ensg.download/rae230brnensgprobe_22.0.0.tar.gz", + "Hash": "376144773efbd1e3ac69ad4528df724d", + "Requirements": [ + "AnnotationDbi" + ] + }, + "raex10strnensgprobe": { + "Package": "raex10strnensgprobe", + "Version": "22.0.0", + "Source": "URL", + "RemoteType": "url", + "RemoteUrl": "https://mbni.org/customcdf/22.0.0/ensg.download/raex10strnensgprobe_22.0.0.tar.gz", + "Hash": "56e2cad481c8e43c1848a82bfdf7126c", + "Requirements": [ + "AnnotationDbi" + ] + }, + "ragene10strnensgprobe": { + "Package": "ragene10strnensgprobe", + "Version": "22.0.0", + "Source": "URL", + "RemoteType": "url", + "RemoteUrl": "https://mbni.org/customcdf/22.0.0/ensg.download/ragene10strnensgprobe_22.0.0.tar.gz", + "Hash": "4f735b2c6f8c6370f58639ad13379772", + "Requirements": [ + "AnnotationDbi" + ] + }, + "ragene11strnensgprobe": { + "Package": "ragene11strnensgprobe", + "Version": "22.0.0", + "Source": "URL", + "RemoteType": "url", + "RemoteUrl": "https://mbni.org/customcdf/22.0.0/ensg.download/ragene11strnensgprobe_22.0.0.tar.gz", + "Hash": "fe80b1465ff18c5ed13192f660a28af1", + "Requirements": [ + "AnnotationDbi" + ] + }, + "ragene20strnensgprobe": { + "Package": "ragene20strnensgprobe", + "Version": "22.0.0", + "Source": "URL", + "RemoteType": "url", + "RemoteUrl": "https://mbni.org/customcdf/22.0.0/ensg.download/ragene20strnensgprobe_22.0.0.tar.gz", + "Hash": "d0fa70b640e6033fea59cabffc7b5558", + "Requirements": [ + "AnnotationDbi" + ] + }, + "ragene21strnensgprobe": { + "Package": "ragene21strnensgprobe", + "Version": "22.0.0", + "Source": "URL", + "RemoteType": "url", + "RemoteUrl": "https://mbni.org/customcdf/22.0.0/ensg.download/ragene21strnensgprobe_22.0.0.tar.gz", + "Hash": "6d60b6d84e8a2f910fd4b46bb7170011", + "Requirements": [ + "AnnotationDbi" + ] + }, + "rat2302rnensgprobe": { + "Package": "rat2302rnensgprobe", + "Version": "22.0.0", + "Source": "URL", + "RemoteType": "url", + "RemoteUrl": "https://mbni.org/customcdf/22.0.0/ensg.download/rat2302rnensgprobe_22.0.0.tar.gz", + "Hash": "cfbd68bec4e5a6ee8f97a67e2fa2135e", + "Requirements": [ + "AnnotationDbi" + ] + }, + "rattoxfxrnensgprobe": { + "Package": "rattoxfxrnensgprobe", + "Version": "22.0.0", + "Source": "URL", + "RemoteType": "url", + "RemoteUrl": "https://mbni.org/customcdf/22.0.0/ensg.download/rattoxfxrnensgprobe_22.0.0.tar.gz", + "Hash": "9fa5bd74eb360790b5d5db61165a750a", + "Requirements": [ + "AnnotationDbi" + ] + }, + "rcmdcheck": { + "Package": "rcmdcheck", + "Version": "1.3.3", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "ed95895886dab6d2a584da45503555da", + "Requirements": [ + "R6", + "callr", + "cli", + "crayon", + "desc", + "digest", + "pkgbuild", + "prettyunits", + "rprojroot", + "sessioninfo", + "withr", + "xopen" + ] + }, + "readr": { + "Package": "readr", + "Version": "1.3.1", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "af8ab99cd936773a148963905736907b", + "Requirements": [ + "BH", + "R6", + "Rcpp", + "clipr", + "crayon", + "hms", + "tibble" + ] + }, + "rematch2": { + "Package": "rematch2", + "Version": "2.1.2", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "76c9e04c712a05848ae7a23d2f170a40", + "Requirements": [ + "tibble" + ] + }, + "remotes": { + "Package": "remotes", + "Version": "2.2.0", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "430a0908aee75b1fcba0e62857cab0ce", + "Requirements": [] + }, + "renv": { + "Package": "renv", + "Version": "0.16.0", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "c9e8442ab69bc21c9697ecf856c1e6c7", + "Requirements": [] + }, + "rex": { + "Package": "rex", + "Version": "1.2.0", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "093584b944440c5cd07a696b3c8e0e4c", + "Requirements": [ + "lazyeval" + ] + }, + "rgu34arnensgprobe": { + "Package": "rgu34arnensgprobe", + "Version": "22.0.0", + "Source": "URL", + "RemoteType": "url", + "RemoteUrl": "https://mbni.org/customcdf/22.0.0/ensg.download/rgu34arnensgprobe_22.0.0.tar.gz", + "Hash": "d1deefa14a7b70f307771a2de323dd94", + "Requirements": [ + "AnnotationDbi" + ] + }, + "rgu34brnensgprobe": { + "Package": "rgu34brnensgprobe", + "Version": "22.0.0", + "Source": "URL", + "RemoteType": "url", + "RemoteUrl": "https://mbni.org/customcdf/22.0.0/ensg.download/rgu34brnensgprobe_22.0.0.tar.gz", + "Hash": "57682fae4e0af1c70c4cd6d81c704fc5", + "Requirements": [ + "AnnotationDbi" + ] + }, + "rgu34crnensgprobe": { + "Package": "rgu34crnensgprobe", + "Version": "22.0.0", + "Source": "URL", + "RemoteType": "url", + "RemoteUrl": "https://mbni.org/customcdf/22.0.0/ensg.download/rgu34crnensgprobe_22.0.0.tar.gz", + "Hash": "af0d881bbe5a3392980fbefefc6711f1", + "Requirements": [ + "AnnotationDbi" + ] + }, + "rhesusmamuensgprobe": { + "Package": "rhesusmamuensgprobe", + "Version": "22.0.0", + "Source": "URL", + "RemoteType": "url", + "RemoteUrl": "https://mbni.org/customcdf/22.0.0/ensg.download/rhesusmamuensgprobe_22.0.0.tar.gz", + "Hash": "cc2696d3dbf8bd90f734053f8d68d77c", + "Requirements": [ + "AnnotationDbi" + ] + }, + "rlang": { + "Package": "rlang", + "Version": "1.0.6", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "4ed1f8336c8d52c3e750adcdc57228a7", + "Requirements": [] + }, + "rnu34rnensgprobe": { + "Package": "rnu34rnensgprobe", + "Version": "22.0.0", + "Source": "URL", + "RemoteType": "url", + "RemoteUrl": "https://mbni.org/customcdf/22.0.0/ensg.download/rnu34rnensgprobe_22.0.0.tar.gz", + "Hash": "68f66af31133d5d4ba416cd6d2e8f0f5", + "Requirements": [ + "AnnotationDbi" + ] + }, + "roxygen2": { + "Package": "roxygen2", + "Version": "7.1.1", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "fcd94e00cc409b25d07ca50f7bf339f5", + "Requirements": [ + "R6", + "Rcpp", + "brew", + "commonmark", + "desc", + "digest", + "knitr", + "pkgload", + "purrr", + "rlang", + "stringi", + "stringr", + "xml2" + ] + }, + "rpart": { + "Package": "rpart", + "Version": "4.1.19", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "b3c892a81783376cc2204af0f5805a80", + "Requirements": [] + }, + "rprojroot": { + "Package": "rprojroot", + "Version": "1.3-2", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "f6a407ae5dd21f6f80a6708bbb6eb3ae", + "Requirements": [ + "backports" + ] + }, + "rstudioapi": { + "Package": "rstudioapi", + "Version": "0.11", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "33a5b27a03da82ac4b1d43268f80088a", + "Requirements": [] + }, + "rtu34rnensgprobe": { + "Package": "rtu34rnensgprobe", + "Version": "22.0.0", + "Source": "URL", + "RemoteType": "url", + "RemoteUrl": "https://mbni.org/customcdf/22.0.0/ensg.download/rtu34rnensgprobe_22.0.0.tar.gz", + "Hash": "3e182022a9a9b72fe810930fa8e11815", + "Requirements": [ + "AnnotationDbi" + ] + }, + "rversions": { + "Package": "rversions", + "Version": "2.0.2", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "0ec41191f744d0f5afad8c6f35cc36e4", + "Requirements": [ + "curl", + "xml2" + ] + }, + "sessioninfo": { + "Package": "sessioninfo", + "Version": "1.1.1", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "308013098befe37484df72c39cf90d6e", + "Requirements": [ + "cli", + "withr" + ] + }, + "snow": { + "Package": "snow", + "Version": "0.4-4", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "40b74690debd20c57d93d8c246b305d4", + "Requirements": [] + }, + "snowballs520824fssensgprobe": { + "Package": "snowballs520824fssensgprobe", + "Version": "22.0.0", + "Source": "URL", + "RemoteType": "url", + "RemoteUrl": "https://mbni.org/customcdf/22.0.0/ensg.download/snowballs520824fssensgprobe_22.0.0.tar.gz", + "Hash": "b2df0ae4f0ff09ed14efecd71e0b9984", + "Requirements": [ + "AnnotationDbi" + ] + }, + "spatial": { + "Package": "spatial", + "Version": "7.3-11", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "f27a078d834614513608da2c08031130", + "Requirements": [] + }, + "stringi": { + "Package": "stringi", + "Version": "1.4.3", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "74a50760af835563fb2c124e66aa134e", + "Requirements": [] + }, + "stringr": { + "Package": "stringr", + "Version": "1.4.0", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "0759e6b6c0957edb1311028a49a35e76", + "Requirements": [ + "glue", + "magrittr", + "stringi" + ] + }, + "survival": { + "Package": "survival", + "Version": "3.4-0", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "04411ae66ab4659230c067c32966fc20", + "Requirements": [ + "Matrix" + ] + }, + "sva": { + "Package": "sva", + "Version": "3.36.0", + "Source": "URL", + "RemoteType": "url", + "RemoteUrl": "https://bioconductor.org/packages/3.11/bioc/src/contrib/sva_3.36.0.tar.gz", + "git_url": "https://git.bioconductor.org/packages/sva", + "git_branch": "RELEASE_3_11", + "git_last_commit": "d92b71f", + "git_last_commit_date": "2020-04-27", + "Hash": "7063ce04e0eeec513cff2d23b1eef5b1", + "Requirements": [ + "BiocParallel", + "edgeR", + "genefilter", + "limma", + "matrixStats", + "mgcv" + ] + }, + "sys": { + "Package": "sys", + "Version": "3.2", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "595c352c624e65f8f67f66a77a6409b6", + "Requirements": [] + }, + "testthat": { + "Package": "testthat", + "Version": "2.3.2", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "0829b987b8961fb07f3b1b64a2fbc495", + "Requirements": [ + "R6", + "cli", + "crayon", + "digest", + "ellipsis", + "evaluate", + "magrittr", + "pkgload", + "praise", + "rlang", + "withr" + ] + }, + "tibble": { + "Package": "tibble", + "Version": "3.1.8", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "56b6934ef0f8c68225949a8672fe1a8f", + "Requirements": [ + "fansi", + "lifecycle", + "magrittr", + "pillar", + "pkgconfig", + "rlang", + "vctrs" + ] + }, + "tidyr": { + "Package": "tidyr", + "Version": "0.8.2", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "1ee2ae693b6a7e5a05208d04bddfaad5", + "Requirements": [ + "Rcpp", + "dplyr", + "glue", + "magrittr", + "purrr", + "rlang", + "stringi", + "tibble", + "tidyselect" + ] + }, + "tidyselect": { + "Package": "tidyselect", + "Version": "1.2.0", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "79540e5fcd9e0435af547d885f184fd5", + "Requirements": [ + "cli", + "glue", + "lifecycle", + "rlang", + "vctrs", + "withr" + ] + }, + "u133aaofav2hsensgprobe": { + "Package": "u133aaofav2hsensgprobe", + "Version": "22.0.0", + "Source": "URL", + "RemoteType": "url", + "RemoteUrl": "https://mbni.org/customcdf/22.0.0/ensg.download/u133aaofav2hsensgprobe_22.0.0.tar.gz", + "Hash": "9aa99d386368e992dd4fdb6dd120ea45", + "Requirements": [ + "AnnotationDbi" + ] + }, + "u133x3phsensgprobe": { + "Package": "u133x3phsensgprobe", + "Version": "22.0.0", + "Source": "URL", + "RemoteType": "url", + "RemoteUrl": "https://mbni.org/customcdf/22.0.0/ensg.download/u133x3phsensgprobe_22.0.0.tar.gz", + "Hash": "433f2798c95c2a71a7bab894ab28fd57", + "Requirements": [ + "AnnotationDbi" + ] + }, + "usethis": { + "Package": "usethis", + "Version": "1.6.1", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "e1985f5a9985fea2e338fa7eb99018ca", + "Requirements": [ + "cli", + "clipr", + "crayon", + "curl", + "desc", + "fs", + "gh", + "git2r", + "glue", + "purrr", + "rematch2", + "rlang", + "rprojroot", + "rstudioapi", + "whisker", + "withr", + "yaml" + ] + }, + "utf8": { + "Package": "utf8", + "Version": "1.1.4", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "4a5081acfb7b81a572e4384a7aaf2af1", + "Requirements": [] + }, + "vctrs": { + "Package": "vctrs", + "Version": "0.5.1", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "970324f6572b4fd81db507b5d4062cb0", + "Requirements": [ + "cli", + "glue", + "lifecycle", + "rlang" + ] + }, + "whisker": { + "Package": "whisker", + "Version": "0.4", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "ca970b96d894e90397ed20637a0c1bbe", + "Requirements": [] + }, + "withr": { + "Package": "withr", + "Version": "2.2.0", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "ecd17882a0b4419545691e095b74ee89", + "Requirements": [] + }, + "xcelhsensgprobe": { + "Package": "xcelhsensgprobe", + "Version": "22.0.0", + "Source": "URL", + "RemoteType": "url", + "RemoteUrl": "https://mbni.org/customcdf/22.0.0/ensg.download/xcelhsensgprobe_22.0.0.tar.gz", + "Hash": "13c99be92d11040f255d75cefe0d78ef", + "Requirements": [ + "AnnotationDbi" + ] + }, + "xfun": { + "Package": "xfun", + "Version": "0.16", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "b4106139b90981a8bfea9c10bab0baf1", + "Requirements": [] + }, + "xml2": { + "Package": "xml2", + "Version": "1.2.0", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "300860f90d5798249a0a8ad9271d4c18", + "Requirements": [ + "Rcpp" + ] + }, + "xopen": { + "Package": "xopen", + "Version": "1.0.0", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "6c85f015dee9cc7710ddd20f86881f58", + "Requirements": [ + "processx" + ] + }, + "xtable": { + "Package": "xtable", + "Version": "1.8-2", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "4739f99be2ab40fe89cbd00365c98294", + "Requirements": [] + }, + "yaml": { + "Package": "yaml", + "Version": "2.2.1", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "2826c5d9efb0a88f657c7a679c7106db", + "Requirements": [] + }, + "yeast2scensgprobe": { + "Package": "yeast2scensgprobe", + "Version": "22.0.0", + "Source": "URL", + "RemoteType": "url", + "RemoteUrl": "https://mbni.org/customcdf/22.0.0/ensg.download/yeast2scensgprobe_22.0.0.tar.gz", + "Hash": "6baa4190005f29aac3de58aa02da899e", + "Requirements": [ + "AnnotationDbi" + ] + }, + "ygs98scensgprobe": { + "Package": "ygs98scensgprobe", + "Version": "22.0.0", + "Source": "URL", + "RemoteType": "url", + "RemoteUrl": "https://mbni.org/customcdf/22.0.0/ensg.download/ygs98scensgprobe_22.0.0.tar.gz", + "Hash": "b458e2a476194cc40f6e649d38568ec4", + "Requirements": [ + "AnnotationDbi" + ] + }, + "zeallot": { + "Package": "zeallot", + "Version": "0.1.0", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "ee9b643aa8331c45d8d82eb3a137c9bc", + "Requirements": [] + }, + "zebgene10stdrensgprobe": { + "Package": "zebgene10stdrensgprobe", + "Version": "22.0.0", + "Source": "URL", + "RemoteType": "url", + "RemoteUrl": "https://mbni.org/customcdf/22.0.0/ensg.download/zebgene10stdrensgprobe_22.0.0.tar.gz", + "Hash": "e82a5135e1bef65e28eb1d954c71755b", + "Requirements": [ + "AnnotationDbi" + ] + }, + "zebgene11stdrensgprobe": { + "Package": "zebgene11stdrensgprobe", + "Version": "22.0.0", + "Source": "URL", + "RemoteType": "url", + "RemoteUrl": "https://mbni.org/customcdf/22.0.0/ensg.download/zebgene11stdrensgprobe_22.0.0.tar.gz", + "Hash": "a37398ce016c74f123c33c9aca6f5275", + "Requirements": [ + "AnnotationDbi" + ] + }, + "zebrafishdrensgprobe": { + "Package": "zebrafishdrensgprobe", + "Version": "22.0.0", + "Source": "URL", + "RemoteType": "url", + "RemoteUrl": "https://mbni.org/customcdf/22.0.0/ensg.download/zebrafishdrensgprobe_22.0.0.tar.gz", + "Hash": "068e6bfde72381b6447564e5283da635", + "Requirements": [ + "AnnotationDbi" + ] + }, + "zlibbioc": { + "Package": "zlibbioc", + "Version": "1.34.0", + "Source": "URL", + "RemoteType": "url", + "RemoteUrl": "https://bioconductor.org/packages/3.11/bioc/src/contrib/zlibbioc_1.34.0.tar.gz", + "git_url": "https://git.bioconductor.org/packages/zlibbioc", + "git_branch": "RELEASE_3_11", + "git_last_commit": "2db035c", + "git_last_commit_date": "2020-04-27", + "Hash": "d9bbfbd67e8c4bced2f5c1ce4251a744", + "Requirements": [] + } + } +} diff --git a/workers/R/dependencies/compendia/renv.R b/workers/R/dependencies/compendia/renv.R new file mode 100644 index 000000000..b98ee6b62 --- /dev/null +++ b/workers/R/dependencies/compendia/renv.R @@ -0,0 +1,12 @@ +renv::install("codetools@0.2-15") +renv::install("iterators@1.0.10") +renv::install("foreach@1.4.4") +renv::install("doParallel@1.0.11") +renv::install("data.table@1.11.0") +renv::install("getopt@1.20.3") +renv::install("optparse@1.4.4") +renv::install("lazyeval@0.2.1") + +renv::install( + "https://bioconductor.org/packages/3.11/bioc/src/contrib/preprocessCore_1.50.0.tar.gz" +) diff --git a/workers/R/dependencies/compendia/renv.lock b/workers/R/dependencies/compendia/renv.lock new file mode 100644 index 000000000..2b6d90b4e --- /dev/null +++ b/workers/R/dependencies/compendia/renv.lock @@ -0,0 +1,1070 @@ +{ + "R": { + "Version": "3.6.3", + "Repositories": [ + { + "Name": "Bioconductor", + "URL": "https://bioconductor.org/packages/3.11/bioc" + }, + { + "Name": "BioconductorAnnotation", + "URL": "https://bioconductor.org/packages/3.11/data/annotation" + }, + { + "Name": "BioconductorExperiment", + "URL": "https://bioconductor.org/packages/3.11/data/experiment" + }, + { + "Name": "CRAN", + "URL": "https://cloud.r-project.org" + } + ] + }, + "Packages": { + "BH": { + "Package": "BH", + "Version": "1.72.0-3", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "8f9ce74c6417d61f0782cbae5fd2b7b0", + "Requirements": [] + }, + "DT": { + "Package": "DT", + "Version": "0.14", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "a3580ce0309c94d061c23b0afb4accbd", + "Requirements": [ + "crosstalk", + "htmltools", + "htmlwidgets", + "jsonlite", + "magrittr", + "promises" + ] + }, + "KernSmooth": { + "Package": "KernSmooth", + "Version": "2.23-20", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "8dcfa99b14c296bc9f1fd64d52fd3ce7", + "Requirements": [] + }, + "MASS": { + "Package": "MASS", + "Version": "7.3-58", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "4bf2c61e656bbc238634c798c208d386", + "Requirements": [] + }, + "Matrix": { + "Package": "Matrix", + "Version": "1.5-1", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "539dc0c0c05636812f1080f473d2c177", + "Requirements": [ + "lattice" + ] + }, + "R6": { + "Package": "R6", + "Version": "2.4.1", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "292b54f8f4b94669b08f94e5acce6be2", + "Requirements": [] + }, + "Rcpp": { + "Package": "Rcpp", + "Version": "1.0.5", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "125dc7a0ed375eb68c0ce533b48d291f", + "Requirements": [] + }, + "askpass": { + "Package": "askpass", + "Version": "1.1", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "e8a22846fff485f0be3770c2da758713", + "Requirements": [ + "sys" + ] + }, + "assertthat": { + "Package": "assertthat", + "Version": "0.2.1", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "50c838a310445e954bc13f26f26a6ecf", + "Requirements": [] + }, + "backports": { + "Package": "backports", + "Version": "1.1.8", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "3ef0eac19317fd03c0c854aed581d473", + "Requirements": [] + }, + "base64enc": { + "Package": "base64enc", + "Version": "0.1-3", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "543776ae6848fde2f48ff3816d0628bc", + "Requirements": [] + }, + "boot": { + "Package": "boot", + "Version": "1.3-28", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "0baa960e3b49c6176a4f42addcbacc59", + "Requirements": [] + }, + "brew": { + "Package": "brew", + "Version": "1.0-6", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "92a5f887f9ae3035ac7afde22ba73ee9", + "Requirements": [] + }, + "callr": { + "Package": "callr", + "Version": "3.4.3", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "643163a00cb536454c624883a10ae0bc", + "Requirements": [ + "R6", + "processx" + ] + }, + "class": { + "Package": "class", + "Version": "7.3-20", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "da09d82223e669d270e47ed24ac8686e", + "Requirements": [ + "MASS" + ] + }, + "cli": { + "Package": "cli", + "Version": "2.0.2", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "ff0becff7bfdfe3f75d29aff8f3172dd", + "Requirements": [ + "assertthat", + "crayon", + "fansi", + "glue" + ] + }, + "clipr": { + "Package": "clipr", + "Version": "0.7.0", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "08cf4045c149a0f0eaf405324c7495bd", + "Requirements": [] + }, + "cluster": { + "Package": "cluster", + "Version": "2.1.4", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "5edbbabab6ce0bf7900a74fd4358628e", + "Requirements": [] + }, + "codetools": { + "Package": "codetools", + "Version": "0.2-15", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "9f88e0b246d1b22d1a88b9aa4ea57ebd", + "Requirements": [] + }, + "commonmark": { + "Package": "commonmark", + "Version": "1.7", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "0f22be39ec1d141fd03683c06f3a6e67", + "Requirements": [] + }, + "covr": { + "Package": "covr", + "Version": "3.5.0", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "cbc6df1ef6ee576f844f973c1fc04ab4", + "Requirements": [ + "crayon", + "digest", + "httr", + "jsonlite", + "rex", + "withr", + "yaml" + ] + }, + "crayon": { + "Package": "crayon", + "Version": "1.3.4", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "0d57bc8e27b7ba9e45dba825ebc0de6b", + "Requirements": [] + }, + "crosstalk": { + "Package": "crosstalk", + "Version": "1.1.0.1", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "ae55f5d7c02f0ab43c58dd050694f2b4", + "Requirements": [ + "R6", + "htmltools", + "jsonlite", + "lazyeval" + ] + }, + "curl": { + "Package": "curl", + "Version": "4.3", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "2b7d10581cc730804e9ed178c8374bd6", + "Requirements": [] + }, + "data.table": { + "Package": "data.table", + "Version": "1.11.0", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "e3c68af9852f074f4895ba72b2e65b0f", + "Requirements": [] + }, + "desc": { + "Package": "desc", + "Version": "1.2.0", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "6c8fe8fa26a23b79949375d372c7b395", + "Requirements": [ + "R6", + "assertthat", + "crayon", + "rprojroot" + ] + }, + "devtools": { + "Package": "devtools", + "Version": "2.3.1", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "271df6a328617c64149283e98b1cd8da", + "Requirements": [ + "DT", + "callr", + "cli", + "covr", + "desc", + "ellipsis", + "httr", + "jsonlite", + "memoise", + "pkgbuild", + "pkgload", + "rcmdcheck", + "remotes", + "rlang", + "roxygen2", + "rstudioapi", + "rversions", + "sessioninfo", + "testthat", + "usethis", + "withr" + ] + }, + "digest": { + "Package": "digest", + "Version": "0.6.25", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "f697db7d92b7028c4b3436e9603fb636", + "Requirements": [] + }, + "doParallel": { + "Package": "doParallel", + "Version": "1.0.11", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "b96d7b9fff2027367cc36de12e6bf6a1", + "Requirements": [ + "foreach", + "iterators" + ] + }, + "ellipsis": { + "Package": "ellipsis", + "Version": "0.3.1", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "fd2844b3a43ae2d27e70ece2df1b4e2a", + "Requirements": [ + "rlang" + ] + }, + "evaluate": { + "Package": "evaluate", + "Version": "0.14", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "ec8ca05cffcc70569eaaad8469d2a3a7", + "Requirements": [] + }, + "fansi": { + "Package": "fansi", + "Version": "0.4.1", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "7fce217eaaf8016e72065e85c73027b5", + "Requirements": [] + }, + "foreach": { + "Package": "foreach", + "Version": "1.4.4", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "c179d1dd8abd4b888214d44f4de2359a", + "Requirements": [ + "codetools", + "iterators" + ] + }, + "foreign": { + "Package": "foreign", + "Version": "0.8-76", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "649b9c7a979d50d869578c73fed072cd", + "Requirements": [] + }, + "fs": { + "Package": "fs", + "Version": "1.4.2", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "8c04112383ca1988e96f429255f95675", + "Requirements": [] + }, + "getopt": { + "Package": "getopt", + "Version": "1.20.3", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "ad68e3263f0bc9269aab8c2039440117", + "Requirements": [] + }, + "gh": { + "Package": "gh", + "Version": "1.1.0", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "89ea5998938d1ad55f035c8a86f96b74", + "Requirements": [ + "cli", + "httr", + "ini", + "jsonlite" + ] + }, + "git2r": { + "Package": "git2r", + "Version": "0.27.1", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "531a82d1beed1f545beb25f4f5945bf7", + "Requirements": [] + }, + "glue": { + "Package": "glue", + "Version": "1.4.1", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "f43e0d5e85ccb0a4045670c0607ee504", + "Requirements": [] + }, + "highr": { + "Package": "highr", + "Version": "0.8", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "4dc5bb88961e347a0f4d8aad597cbfac", + "Requirements": [] + }, + "htmltools": { + "Package": "htmltools", + "Version": "0.5.0", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "7d651b7131794fe007b1ad6f21aaa401", + "Requirements": [ + "base64enc", + "digest", + "rlang" + ] + }, + "htmlwidgets": { + "Package": "htmlwidgets", + "Version": "1.5.1", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "41bace23583fbc25089edae324de2dc3", + "Requirements": [ + "htmltools", + "jsonlite", + "yaml" + ] + }, + "httr": { + "Package": "httr", + "Version": "1.4.2", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "a525aba14184fec243f9eaec62fbed43", + "Requirements": [ + "R6", + "curl", + "jsonlite", + "mime", + "openssl" + ] + }, + "ini": { + "Package": "ini", + "Version": "0.3.1", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "6154ec2223172bce8162d4153cda21f7", + "Requirements": [] + }, + "iterators": { + "Package": "iterators", + "Version": "1.0.10", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "02caec9a169f9344577950df8f70aaa8", + "Requirements": [] + }, + "jsonlite": { + "Package": "jsonlite", + "Version": "1.7.0", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "2657f20b9a74c996c602e74ebe540b06", + "Requirements": [] + }, + "knitr": { + "Package": "knitr", + "Version": "1.29", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "e5f4c41c17df8cdf7b0df12117c0d99a", + "Requirements": [ + "evaluate", + "highr", + "markdown", + "stringr", + "xfun", + "yaml" + ] + }, + "later": { + "Package": "later", + "Version": "1.1.0.1", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "d0a62b247165aabf397fded504660d8a", + "Requirements": [ + "BH", + "Rcpp", + "rlang" + ] + }, + "lattice": { + "Package": "lattice", + "Version": "0.20-45", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "b64cdbb2b340437c4ee047a1f4c4377b", + "Requirements": [] + }, + "lazyeval": { + "Package": "lazyeval", + "Version": "0.2.1", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "ea5964121f493fb3057e9887d424f634", + "Requirements": [] + }, + "lifecycle": { + "Package": "lifecycle", + "Version": "0.2.0", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "361811f31f71f8a617a9a68bf63f1f42", + "Requirements": [ + "glue", + "rlang" + ] + }, + "magrittr": { + "Package": "magrittr", + "Version": "1.5", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "1bb58822a20301cee84a41678e25d9b7", + "Requirements": [] + }, + "markdown": { + "Package": "markdown", + "Version": "1.1", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "61e4a10781dd00d7d81dd06ca9b94e95", + "Requirements": [ + "mime", + "xfun" + ] + }, + "memoise": { + "Package": "memoise", + "Version": "1.1.0", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "58baa74e4603fcfb9a94401c58c8f9b1", + "Requirements": [ + "digest" + ] + }, + "mgcv": { + "Package": "mgcv", + "Version": "1.8-41", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "6b3904f13346742caa3e82dd0303d4ad", + "Requirements": [ + "Matrix", + "nlme" + ] + }, + "mime": { + "Package": "mime", + "Version": "0.9", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "e87a35ec73b157552814869f45a63aa3", + "Requirements": [] + }, + "nlme": { + "Package": "nlme", + "Version": "3.1-161", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "b49e163093c0ef46fbbfc40bcb87916c", + "Requirements": [ + "lattice" + ] + }, + "nnet": { + "Package": "nnet", + "Version": "7.3-18", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "170da2130d5332bea7d6ede01875ba1d", + "Requirements": [] + }, + "openssl": { + "Package": "openssl", + "Version": "1.4.2", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "b3209c62052922b6c629544d94c8fa8a", + "Requirements": [ + "askpass" + ] + }, + "optparse": { + "Package": "optparse", + "Version": "1.4.4", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "803e834713c77eda6c233965977b2c58", + "Requirements": [ + "getopt" + ] + }, + "pillar": { + "Package": "pillar", + "Version": "1.4.6", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "bdf26e55ccb7df3e49a490150277f002", + "Requirements": [ + "cli", + "crayon", + "ellipsis", + "fansi", + "lifecycle", + "rlang", + "utf8", + "vctrs" + ] + }, + "pkgbuild": { + "Package": "pkgbuild", + "Version": "1.1.0", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "404684bc4e3685007f9720adf13b06c1", + "Requirements": [ + "R6", + "callr", + "cli", + "crayon", + "desc", + "prettyunits", + "rprojroot", + "withr" + ] + }, + "pkgconfig": { + "Package": "pkgconfig", + "Version": "2.0.3", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "01f28d4278f15c76cddbea05899c5d6f", + "Requirements": [] + }, + "pkgload": { + "Package": "pkgload", + "Version": "1.1.0", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "b6b150cd4709e0c0c9b5d51ac4376282", + "Requirements": [ + "cli", + "crayon", + "desc", + "pkgbuild", + "rlang", + "rprojroot", + "rstudioapi", + "withr" + ] + }, + "praise": { + "Package": "praise", + "Version": "1.0.0", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "a555924add98c99d2f411e37e7d25e9f", + "Requirements": [] + }, + "preprocessCore": { + "Package": "preprocessCore", + "Version": "1.50.0", + "Source": "URL", + "RemoteType": "url", + "RemoteUrl": "https://bioconductor.org/packages/3.11/bioc/src/contrib/preprocessCore_1.50.0.tar.gz", + "git_url": "https://git.bioconductor.org/packages/preprocessCore", + "git_branch": "RELEASE_3_11", + "git_last_commit": "9230366", + "git_last_commit_date": "2020-04-27", + "Hash": "4d183aca4311a7610cb96d14e528e73e", + "Requirements": [] + }, + "prettyunits": { + "Package": "prettyunits", + "Version": "1.1.1", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "95ef9167b75dde9d2ccc3c7528393e7e", + "Requirements": [] + }, + "processx": { + "Package": "processx", + "Version": "3.4.3", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "f4f13345fcb00c51ace12f65dd18749f", + "Requirements": [ + "R6", + "ps" + ] + }, + "promises": { + "Package": "promises", + "Version": "1.1.1", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "a8730dcbdd19f9047774909f0ec214a4", + "Requirements": [ + "R6", + "Rcpp", + "later", + "magrittr", + "rlang" + ] + }, + "ps": { + "Package": "ps", + "Version": "1.3.3", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "425d938eb9c02906a8ac98c0c2a306b5", + "Requirements": [] + }, + "purrr": { + "Package": "purrr", + "Version": "0.3.4", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "97def703420c8ab10d8f0e6c72101e02", + "Requirements": [ + "magrittr", + "rlang" + ] + }, + "rcmdcheck": { + "Package": "rcmdcheck", + "Version": "1.3.3", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "ed95895886dab6d2a584da45503555da", + "Requirements": [ + "R6", + "callr", + "cli", + "crayon", + "desc", + "digest", + "pkgbuild", + "prettyunits", + "rprojroot", + "sessioninfo", + "withr", + "xopen" + ] + }, + "rematch2": { + "Package": "rematch2", + "Version": "2.1.2", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "76c9e04c712a05848ae7a23d2f170a40", + "Requirements": [ + "tibble" + ] + }, + "remotes": { + "Package": "remotes", + "Version": "2.2.0", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "430a0908aee75b1fcba0e62857cab0ce", + "Requirements": [] + }, + "renv": { + "Package": "renv", + "Version": "0.16.0", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "c9e8442ab69bc21c9697ecf856c1e6c7", + "Requirements": [] + }, + "rex": { + "Package": "rex", + "Version": "1.2.0", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "093584b944440c5cd07a696b3c8e0e4c", + "Requirements": [ + "lazyeval" + ] + }, + "rlang": { + "Package": "rlang", + "Version": "0.4.7", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "c06d2a6887f4b414f8e927afd9ee976a", + "Requirements": [] + }, + "roxygen2": { + "Package": "roxygen2", + "Version": "7.1.1", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "fcd94e00cc409b25d07ca50f7bf339f5", + "Requirements": [ + "R6", + "Rcpp", + "brew", + "commonmark", + "desc", + "digest", + "knitr", + "pkgload", + "purrr", + "rlang", + "stringi", + "stringr", + "xml2" + ] + }, + "rpart": { + "Package": "rpart", + "Version": "4.1.19", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "b3c892a81783376cc2204af0f5805a80", + "Requirements": [] + }, + "rprojroot": { + "Package": "rprojroot", + "Version": "1.3-2", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "f6a407ae5dd21f6f80a6708bbb6eb3ae", + "Requirements": [ + "backports" + ] + }, + "rstudioapi": { + "Package": "rstudioapi", + "Version": "0.11", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "33a5b27a03da82ac4b1d43268f80088a", + "Requirements": [] + }, + "rversions": { + "Package": "rversions", + "Version": "2.0.2", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "0ec41191f744d0f5afad8c6f35cc36e4", + "Requirements": [ + "curl", + "xml2" + ] + }, + "sessioninfo": { + "Package": "sessioninfo", + "Version": "1.1.1", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "308013098befe37484df72c39cf90d6e", + "Requirements": [ + "cli", + "withr" + ] + }, + "spatial": { + "Package": "spatial", + "Version": "7.3-11", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "f27a078d834614513608da2c08031130", + "Requirements": [] + }, + "stringi": { + "Package": "stringi", + "Version": "1.4.6", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "e99d8d656980d2dd416a962ae55aec90", + "Requirements": [] + }, + "stringr": { + "Package": "stringr", + "Version": "1.4.0", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "0759e6b6c0957edb1311028a49a35e76", + "Requirements": [ + "glue", + "magrittr", + "stringi" + ] + }, + "survival": { + "Package": "survival", + "Version": "3.4-0", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "04411ae66ab4659230c067c32966fc20", + "Requirements": [ + "Matrix" + ] + }, + "sys": { + "Package": "sys", + "Version": "3.4", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "b227d13e29222b4574486cfcbde077fa", + "Requirements": [] + }, + "testthat": { + "Package": "testthat", + "Version": "2.3.2", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "0829b987b8961fb07f3b1b64a2fbc495", + "Requirements": [ + "R6", + "cli", + "crayon", + "digest", + "ellipsis", + "evaluate", + "magrittr", + "pkgload", + "praise", + "rlang", + "withr" + ] + }, + "tibble": { + "Package": "tibble", + "Version": "3.0.3", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "08bd36bd34b20d4f7971d49e81deaab0", + "Requirements": [ + "cli", + "crayon", + "ellipsis", + "fansi", + "lifecycle", + "magrittr", + "pillar", + "pkgconfig", + "rlang", + "vctrs" + ] + }, + "usethis": { + "Package": "usethis", + "Version": "1.6.1", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "e1985f5a9985fea2e338fa7eb99018ca", + "Requirements": [ + "cli", + "clipr", + "crayon", + "curl", + "desc", + "fs", + "gh", + "git2r", + "glue", + "purrr", + "rematch2", + "rlang", + "rprojroot", + "rstudioapi", + "whisker", + "withr", + "yaml" + ] + }, + "utf8": { + "Package": "utf8", + "Version": "1.1.4", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "4a5081acfb7b81a572e4384a7aaf2af1", + "Requirements": [] + }, + "vctrs": { + "Package": "vctrs", + "Version": "0.3.2", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "5ba3006888ac62fd5e97b208d00d3317", + "Requirements": [ + "digest", + "ellipsis", + "glue", + "rlang" + ] + }, + "whisker": { + "Package": "whisker", + "Version": "0.4", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "ca970b96d894e90397ed20637a0c1bbe", + "Requirements": [] + }, + "withr": { + "Package": "withr", + "Version": "2.2.0", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "ecd17882a0b4419545691e095b74ee89", + "Requirements": [] + }, + "xfun": { + "Package": "xfun", + "Version": "0.16", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "b4106139b90981a8bfea9c10bab0baf1", + "Requirements": [] + }, + "xml2": { + "Package": "xml2", + "Version": "1.3.2", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "d4d71a75dd3ea9eb5fa28cc21f9585e2", + "Requirements": [] + }, + "xopen": { + "Package": "xopen", + "Version": "1.0.0", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "6c85f015dee9cc7710ddd20f86881f58", + "Requirements": [ + "processx" + ] + }, + "yaml": { + "Package": "yaml", + "Version": "2.2.1", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "2826c5d9efb0a88f657c7a679c7106db", + "Requirements": [] + } + } +} diff --git a/workers/R/dependencies/downloaders/renv.R b/workers/R/dependencies/downloaders/renv.R new file mode 100644 index 000000000..f7a68788a --- /dev/null +++ b/workers/R/dependencies/downloaders/renv.R @@ -0,0 +1,4 @@ +renv::install( + "https://bioconductor.org/packages/3.11/bioc/src/contrib/affyio_1.58.0.tar.gz", + "https://bioconductor.org/packages/3.11/bioc/src/contrib/zlibbioc_1.34.0.tar.gz" +) diff --git a/workers/R/dependencies/downloaders/renv.lock b/workers/R/dependencies/downloaders/renv.lock new file mode 100644 index 000000000..6bef76b99 --- /dev/null +++ b/workers/R/dependencies/downloaders/renv.lock @@ -0,0 +1,1029 @@ +{ + "R": { + "Version": "3.6.3", + "Repositories": [ + { + "Name": "Bioconductor", + "URL": "https://bioconductor.org/packages/3.11/bioc" + }, + { + "Name": "BioconductorAnnotation", + "URL": "https://bioconductor.org/packages/3.11/data/annotation" + }, + { + "Name": "BioconductorExperiment", + "URL": "https://bioconductor.org/packages/3.11/data/experiment" + }, + { + "Name": "CRAN", + "URL": "https://cloud.r-project.org" + } + ] + }, + "Packages": { + "BH": { + "Package": "BH", + "Version": "1.72.0-3", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "8f9ce74c6417d61f0782cbae5fd2b7b0", + "Requirements": [] + }, + "DT": { + "Package": "DT", + "Version": "0.14", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "a3580ce0309c94d061c23b0afb4accbd", + "Requirements": [ + "crosstalk", + "htmltools", + "htmlwidgets", + "jsonlite", + "magrittr", + "promises" + ] + }, + "KernSmooth": { + "Package": "KernSmooth", + "Version": "2.23-20", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "8dcfa99b14c296bc9f1fd64d52fd3ce7", + "Requirements": [] + }, + "MASS": { + "Package": "MASS", + "Version": "7.3-58", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "4bf2c61e656bbc238634c798c208d386", + "Requirements": [] + }, + "Matrix": { + "Package": "Matrix", + "Version": "1.5-1", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "539dc0c0c05636812f1080f473d2c177", + "Requirements": [ + "lattice" + ] + }, + "R6": { + "Package": "R6", + "Version": "2.4.1", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "292b54f8f4b94669b08f94e5acce6be2", + "Requirements": [] + }, + "Rcpp": { + "Package": "Rcpp", + "Version": "1.0.5", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "125dc7a0ed375eb68c0ce533b48d291f", + "Requirements": [] + }, + "affyio": { + "Package": "affyio", + "Version": "1.58.0", + "Source": "URL", + "RemoteType": "url", + "RemoteUrl": "https://bioconductor.org/packages/3.11/bioc/src/contrib/affyio_1.58.0.tar.gz", + "git_url": "https://git.bioconductor.org/packages/affyio", + "git_branch": "RELEASE_3_11", + "git_last_commit": "76fee54", + "git_last_commit_date": "2020-04-27", + "Hash": "841239ddcf5f028105cd3687976948ef", + "Requirements": [ + "zlibbioc" + ] + }, + "askpass": { + "Package": "askpass", + "Version": "1.1", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "e8a22846fff485f0be3770c2da758713", + "Requirements": [ + "sys" + ] + }, + "assertthat": { + "Package": "assertthat", + "Version": "0.2.1", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "50c838a310445e954bc13f26f26a6ecf", + "Requirements": [] + }, + "backports": { + "Package": "backports", + "Version": "1.1.8", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "3ef0eac19317fd03c0c854aed581d473", + "Requirements": [] + }, + "base64enc": { + "Package": "base64enc", + "Version": "0.1-3", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "543776ae6848fde2f48ff3816d0628bc", + "Requirements": [] + }, + "boot": { + "Package": "boot", + "Version": "1.3-28", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "0baa960e3b49c6176a4f42addcbacc59", + "Requirements": [] + }, + "brew": { + "Package": "brew", + "Version": "1.0-6", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "92a5f887f9ae3035ac7afde22ba73ee9", + "Requirements": [] + }, + "callr": { + "Package": "callr", + "Version": "3.4.3", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "643163a00cb536454c624883a10ae0bc", + "Requirements": [ + "R6", + "processx" + ] + }, + "class": { + "Package": "class", + "Version": "7.3-20", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "da09d82223e669d270e47ed24ac8686e", + "Requirements": [ + "MASS" + ] + }, + "cli": { + "Package": "cli", + "Version": "2.0.2", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "ff0becff7bfdfe3f75d29aff8f3172dd", + "Requirements": [ + "assertthat", + "crayon", + "fansi", + "glue" + ] + }, + "clipr": { + "Package": "clipr", + "Version": "0.7.0", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "08cf4045c149a0f0eaf405324c7495bd", + "Requirements": [] + }, + "cluster": { + "Package": "cluster", + "Version": "2.1.4", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "5edbbabab6ce0bf7900a74fd4358628e", + "Requirements": [] + }, + "codetools": { + "Package": "codetools", + "Version": "0.2-18", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "019388fc48e48b3da0d3a76ff94608a8", + "Requirements": [] + }, + "commonmark": { + "Package": "commonmark", + "Version": "1.7", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "0f22be39ec1d141fd03683c06f3a6e67", + "Requirements": [] + }, + "covr": { + "Package": "covr", + "Version": "3.5.0", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "cbc6df1ef6ee576f844f973c1fc04ab4", + "Requirements": [ + "crayon", + "digest", + "httr", + "jsonlite", + "rex", + "withr", + "yaml" + ] + }, + "crayon": { + "Package": "crayon", + "Version": "1.3.4", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "0d57bc8e27b7ba9e45dba825ebc0de6b", + "Requirements": [] + }, + "crosstalk": { + "Package": "crosstalk", + "Version": "1.1.0.1", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "ae55f5d7c02f0ab43c58dd050694f2b4", + "Requirements": [ + "R6", + "htmltools", + "jsonlite", + "lazyeval" + ] + }, + "curl": { + "Package": "curl", + "Version": "4.3", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "2b7d10581cc730804e9ed178c8374bd6", + "Requirements": [] + }, + "desc": { + "Package": "desc", + "Version": "1.2.0", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "6c8fe8fa26a23b79949375d372c7b395", + "Requirements": [ + "R6", + "assertthat", + "crayon", + "rprojroot" + ] + }, + "devtools": { + "Package": "devtools", + "Version": "2.3.1", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "271df6a328617c64149283e98b1cd8da", + "Requirements": [ + "DT", + "callr", + "cli", + "covr", + "desc", + "ellipsis", + "httr", + "jsonlite", + "memoise", + "pkgbuild", + "pkgload", + "rcmdcheck", + "remotes", + "rlang", + "roxygen2", + "rstudioapi", + "rversions", + "sessioninfo", + "testthat", + "usethis", + "withr" + ] + }, + "digest": { + "Package": "digest", + "Version": "0.6.25", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "f697db7d92b7028c4b3436e9603fb636", + "Requirements": [] + }, + "ellipsis": { + "Package": "ellipsis", + "Version": "0.3.1", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "fd2844b3a43ae2d27e70ece2df1b4e2a", + "Requirements": [ + "rlang" + ] + }, + "evaluate": { + "Package": "evaluate", + "Version": "0.14", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "ec8ca05cffcc70569eaaad8469d2a3a7", + "Requirements": [] + }, + "fansi": { + "Package": "fansi", + "Version": "0.4.1", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "7fce217eaaf8016e72065e85c73027b5", + "Requirements": [] + }, + "foreign": { + "Package": "foreign", + "Version": "0.8-76", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "649b9c7a979d50d869578c73fed072cd", + "Requirements": [] + }, + "fs": { + "Package": "fs", + "Version": "1.4.2", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "8c04112383ca1988e96f429255f95675", + "Requirements": [] + }, + "gh": { + "Package": "gh", + "Version": "1.1.0", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "89ea5998938d1ad55f035c8a86f96b74", + "Requirements": [ + "cli", + "httr", + "ini", + "jsonlite" + ] + }, + "git2r": { + "Package": "git2r", + "Version": "0.27.1", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "531a82d1beed1f545beb25f4f5945bf7", + "Requirements": [] + }, + "glue": { + "Package": "glue", + "Version": "1.4.1", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "f43e0d5e85ccb0a4045670c0607ee504", + "Requirements": [] + }, + "highr": { + "Package": "highr", + "Version": "0.8", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "4dc5bb88961e347a0f4d8aad597cbfac", + "Requirements": [] + }, + "htmltools": { + "Package": "htmltools", + "Version": "0.5.0", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "7d651b7131794fe007b1ad6f21aaa401", + "Requirements": [ + "base64enc", + "digest", + "rlang" + ] + }, + "htmlwidgets": { + "Package": "htmlwidgets", + "Version": "1.5.1", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "41bace23583fbc25089edae324de2dc3", + "Requirements": [ + "htmltools", + "jsonlite", + "yaml" + ] + }, + "httr": { + "Package": "httr", + "Version": "1.4.2", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "a525aba14184fec243f9eaec62fbed43", + "Requirements": [ + "R6", + "curl", + "jsonlite", + "mime", + "openssl" + ] + }, + "ini": { + "Package": "ini", + "Version": "0.3.1", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "6154ec2223172bce8162d4153cda21f7", + "Requirements": [] + }, + "jsonlite": { + "Package": "jsonlite", + "Version": "1.7.0", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "2657f20b9a74c996c602e74ebe540b06", + "Requirements": [] + }, + "knitr": { + "Package": "knitr", + "Version": "1.29", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "e5f4c41c17df8cdf7b0df12117c0d99a", + "Requirements": [ + "evaluate", + "highr", + "markdown", + "stringr", + "xfun", + "yaml" + ] + }, + "later": { + "Package": "later", + "Version": "1.1.0.1", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "d0a62b247165aabf397fded504660d8a", + "Requirements": [ + "BH", + "Rcpp", + "rlang" + ] + }, + "lattice": { + "Package": "lattice", + "Version": "0.20-45", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "b64cdbb2b340437c4ee047a1f4c4377b", + "Requirements": [] + }, + "lazyeval": { + "Package": "lazyeval", + "Version": "0.2.2", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "d908914ae53b04d4c0c0fd72ecc35370", + "Requirements": [] + }, + "lifecycle": { + "Package": "lifecycle", + "Version": "0.2.0", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "361811f31f71f8a617a9a68bf63f1f42", + "Requirements": [ + "glue", + "rlang" + ] + }, + "magrittr": { + "Package": "magrittr", + "Version": "1.5", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "1bb58822a20301cee84a41678e25d9b7", + "Requirements": [] + }, + "markdown": { + "Package": "markdown", + "Version": "1.1", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "61e4a10781dd00d7d81dd06ca9b94e95", + "Requirements": [ + "mime", + "xfun" + ] + }, + "memoise": { + "Package": "memoise", + "Version": "1.1.0", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "58baa74e4603fcfb9a94401c58c8f9b1", + "Requirements": [ + "digest" + ] + }, + "mgcv": { + "Package": "mgcv", + "Version": "1.8-41", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "6b3904f13346742caa3e82dd0303d4ad", + "Requirements": [ + "Matrix", + "nlme" + ] + }, + "mime": { + "Package": "mime", + "Version": "0.9", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "e87a35ec73b157552814869f45a63aa3", + "Requirements": [] + }, + "nlme": { + "Package": "nlme", + "Version": "3.1-161", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "b49e163093c0ef46fbbfc40bcb87916c", + "Requirements": [ + "lattice" + ] + }, + "nnet": { + "Package": "nnet", + "Version": "7.3-18", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "170da2130d5332bea7d6ede01875ba1d", + "Requirements": [] + }, + "openssl": { + "Package": "openssl", + "Version": "1.4.2", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "b3209c62052922b6c629544d94c8fa8a", + "Requirements": [ + "askpass" + ] + }, + "pillar": { + "Package": "pillar", + "Version": "1.4.6", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "bdf26e55ccb7df3e49a490150277f002", + "Requirements": [ + "cli", + "crayon", + "ellipsis", + "fansi", + "lifecycle", + "rlang", + "utf8", + "vctrs" + ] + }, + "pkgbuild": { + "Package": "pkgbuild", + "Version": "1.1.0", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "404684bc4e3685007f9720adf13b06c1", + "Requirements": [ + "R6", + "callr", + "cli", + "crayon", + "desc", + "prettyunits", + "rprojroot", + "withr" + ] + }, + "pkgconfig": { + "Package": "pkgconfig", + "Version": "2.0.3", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "01f28d4278f15c76cddbea05899c5d6f", + "Requirements": [] + }, + "pkgload": { + "Package": "pkgload", + "Version": "1.1.0", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "b6b150cd4709e0c0c9b5d51ac4376282", + "Requirements": [ + "cli", + "crayon", + "desc", + "pkgbuild", + "rlang", + "rprojroot", + "rstudioapi", + "withr" + ] + }, + "praise": { + "Package": "praise", + "Version": "1.0.0", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "a555924add98c99d2f411e37e7d25e9f", + "Requirements": [] + }, + "prettyunits": { + "Package": "prettyunits", + "Version": "1.1.1", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "95ef9167b75dde9d2ccc3c7528393e7e", + "Requirements": [] + }, + "processx": { + "Package": "processx", + "Version": "3.4.3", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "f4f13345fcb00c51ace12f65dd18749f", + "Requirements": [ + "R6", + "ps" + ] + }, + "promises": { + "Package": "promises", + "Version": "1.1.1", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "a8730dcbdd19f9047774909f0ec214a4", + "Requirements": [ + "R6", + "Rcpp", + "later", + "magrittr", + "rlang" + ] + }, + "ps": { + "Package": "ps", + "Version": "1.3.3", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "425d938eb9c02906a8ac98c0c2a306b5", + "Requirements": [] + }, + "purrr": { + "Package": "purrr", + "Version": "0.3.4", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "97def703420c8ab10d8f0e6c72101e02", + "Requirements": [ + "magrittr", + "rlang" + ] + }, + "rcmdcheck": { + "Package": "rcmdcheck", + "Version": "1.3.3", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "ed95895886dab6d2a584da45503555da", + "Requirements": [ + "R6", + "callr", + "cli", + "crayon", + "desc", + "digest", + "pkgbuild", + "prettyunits", + "rprojroot", + "sessioninfo", + "withr", + "xopen" + ] + }, + "rematch2": { + "Package": "rematch2", + "Version": "2.1.2", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "76c9e04c712a05848ae7a23d2f170a40", + "Requirements": [ + "tibble" + ] + }, + "remotes": { + "Package": "remotes", + "Version": "2.2.0", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "430a0908aee75b1fcba0e62857cab0ce", + "Requirements": [] + }, + "renv": { + "Package": "renv", + "Version": "0.16.0", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "c9e8442ab69bc21c9697ecf856c1e6c7", + "Requirements": [] + }, + "rex": { + "Package": "rex", + "Version": "1.2.0", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "093584b944440c5cd07a696b3c8e0e4c", + "Requirements": [ + "lazyeval" + ] + }, + "rlang": { + "Package": "rlang", + "Version": "0.4.7", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "c06d2a6887f4b414f8e927afd9ee976a", + "Requirements": [] + }, + "roxygen2": { + "Package": "roxygen2", + "Version": "7.1.1", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "fcd94e00cc409b25d07ca50f7bf339f5", + "Requirements": [ + "R6", + "Rcpp", + "brew", + "commonmark", + "desc", + "digest", + "knitr", + "pkgload", + "purrr", + "rlang", + "stringi", + "stringr", + "xml2" + ] + }, + "rpart": { + "Package": "rpart", + "Version": "4.1.19", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "b3c892a81783376cc2204af0f5805a80", + "Requirements": [] + }, + "rprojroot": { + "Package": "rprojroot", + "Version": "1.3-2", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "f6a407ae5dd21f6f80a6708bbb6eb3ae", + "Requirements": [ + "backports" + ] + }, + "rstudioapi": { + "Package": "rstudioapi", + "Version": "0.11", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "33a5b27a03da82ac4b1d43268f80088a", + "Requirements": [] + }, + "rversions": { + "Package": "rversions", + "Version": "2.0.2", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "0ec41191f744d0f5afad8c6f35cc36e4", + "Requirements": [ + "curl", + "xml2" + ] + }, + "sessioninfo": { + "Package": "sessioninfo", + "Version": "1.1.1", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "308013098befe37484df72c39cf90d6e", + "Requirements": [ + "cli", + "withr" + ] + }, + "spatial": { + "Package": "spatial", + "Version": "7.3-11", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "f27a078d834614513608da2c08031130", + "Requirements": [] + }, + "stringi": { + "Package": "stringi", + "Version": "1.4.6", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "e99d8d656980d2dd416a962ae55aec90", + "Requirements": [] + }, + "stringr": { + "Package": "stringr", + "Version": "1.4.0", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "0759e6b6c0957edb1311028a49a35e76", + "Requirements": [ + "glue", + "magrittr", + "stringi" + ] + }, + "survival": { + "Package": "survival", + "Version": "3.4-0", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "04411ae66ab4659230c067c32966fc20", + "Requirements": [ + "Matrix" + ] + }, + "sys": { + "Package": "sys", + "Version": "3.4", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "b227d13e29222b4574486cfcbde077fa", + "Requirements": [] + }, + "testthat": { + "Package": "testthat", + "Version": "2.3.2", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "0829b987b8961fb07f3b1b64a2fbc495", + "Requirements": [ + "R6", + "cli", + "crayon", + "digest", + "ellipsis", + "evaluate", + "magrittr", + "pkgload", + "praise", + "rlang", + "withr" + ] + }, + "tibble": { + "Package": "tibble", + "Version": "3.0.3", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "08bd36bd34b20d4f7971d49e81deaab0", + "Requirements": [ + "cli", + "crayon", + "ellipsis", + "fansi", + "lifecycle", + "magrittr", + "pillar", + "pkgconfig", + "rlang", + "vctrs" + ] + }, + "usethis": { + "Package": "usethis", + "Version": "1.6.1", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "e1985f5a9985fea2e338fa7eb99018ca", + "Requirements": [ + "cli", + "clipr", + "crayon", + "curl", + "desc", + "fs", + "gh", + "git2r", + "glue", + "purrr", + "rematch2", + "rlang", + "rprojroot", + "rstudioapi", + "whisker", + "withr", + "yaml" + ] + }, + "utf8": { + "Package": "utf8", + "Version": "1.1.4", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "4a5081acfb7b81a572e4384a7aaf2af1", + "Requirements": [] + }, + "vctrs": { + "Package": "vctrs", + "Version": "0.3.2", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "5ba3006888ac62fd5e97b208d00d3317", + "Requirements": [ + "digest", + "ellipsis", + "glue", + "rlang" + ] + }, + "whisker": { + "Package": "whisker", + "Version": "0.4", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "ca970b96d894e90397ed20637a0c1bbe", + "Requirements": [] + }, + "withr": { + "Package": "withr", + "Version": "2.2.0", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "ecd17882a0b4419545691e095b74ee89", + "Requirements": [] + }, + "xfun": { + "Package": "xfun", + "Version": "0.16", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "b4106139b90981a8bfea9c10bab0baf1", + "Requirements": [] + }, + "xml2": { + "Package": "xml2", + "Version": "1.3.2", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "d4d71a75dd3ea9eb5fa28cc21f9585e2", + "Requirements": [] + }, + "xopen": { + "Package": "xopen", + "Version": "1.0.0", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "6c85f015dee9cc7710ddd20f86881f58", + "Requirements": [ + "processx" + ] + }, + "yaml": { + "Package": "yaml", + "Version": "2.2.1", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "2826c5d9efb0a88f657c7a679c7106db", + "Requirements": [] + }, + "zlibbioc": { + "Package": "zlibbioc", + "Version": "1.34.0", + "Source": "URL", + "RemoteType": "url", + "RemoteUrl": "https://bioconductor.org/packages/3.11/bioc/src/contrib/zlibbioc_1.34.0.tar.gz", + "git_url": "https://git.bioconductor.org/packages/zlibbioc", + "git_branch": "RELEASE_3_11", + "git_last_commit": "2db035c", + "git_last_commit_date": "2020-04-27", + "Hash": "d9bbfbd67e8c4bced2f5c1ce4251a744", + "Requirements": [] + } + } +} diff --git a/workers/R/dependencies/illumina/renv.R b/workers/R/dependencies/illumina/renv.R new file mode 100644 index 000000000..f40a5849d --- /dev/null +++ b/workers/R/dependencies/illumina/renv.R @@ -0,0 +1,49 @@ +renv::install("iterators@1.0.10") +renv::install("codetools@0.2-16") +renv::install("foreach@1.4.4") +renv::install("doParallel@1.0.11") +renv::install("data.table@1.11.0") +renv::install("getopt@1.20.3") +renv::install("optparse@1.4.4") +renv::install("lazyeval@0.2.1") +renv::install("rlang@0.3.1") +renv::install("glue@1.3.1") +renv::install("digest@0.6.18") +renv::install("crayon@1.3.4") +renv::install("assertthat@0.2.1") +renv::install("fansi@0.4.0") +renv::install("utf8@1.1.4") +renv::install("pillar@1.3.1") +renv::install("pkgconfig@2.0.2") +renv::install("pillar@1.3.1") +renv::install("tibble@2.0.1") +renv::install("R6@2.4.0") +renv::install("Rcpp@1.0.1") +renv::install("magrittr@1.5") +renv::install("tidyselect@0.2.5") +renv::install("lifecycle@1.0.3") +renv::install("tibble@2.0.1") +renv::install("dplyr@1.0.0") +renv::install("DBI@1.0.0") +renv::install("memoise@1.1.0") +renv::install("bit@1.1-14") +renv::install("bit64@0.9-7") +renv::install("ff@2.2-14") +renv::install("prettyunits@1.0.2") +renv::install("blob@1.1.1") +renv::install("RSQLite@2.1.1") + +renv::install( + "https://bioconductor.org/packages/3.11/bioc/src/contrib/oligoClasses_1.50.4.tar.gz", + "https://bioconductor.org/packages/3.11/bioc/src/contrib/oligo_1.52.1.tar.gz", + "https://bioconductor.org/packages/3.11/bioc/src/contrib/AnnotationDbi_1.50.3.tar.gz", + "https://bioconductor.org/packages/3.11/bioc/src/contrib/limma_3.44.3.tar.gz", + "https://bioconductor.org/packages/3.11/data/annotation/src/contrib/illuminaHumanv1.db_1.26.0.tar.gz", + "https://bioconductor.org/packages/3.11/data/annotation/src/contrib/illuminaHumanv2.db_1.26.0.tar.gz", + "https://bioconductor.org/packages/3.11/data/annotation/src/contrib/illuminaHumanv3.db_1.26.0.tar.gz", + "https://bioconductor.org/packages/3.11/data/annotation/src/contrib/illuminaHumanv4.db_1.26.0.tar.gz", + "https://bioconductor.org/packages/3.11/data/annotation/src/contrib/illuminaMousev1.db_1.26.0.tar.gz", + "https://bioconductor.org/packages/3.11/data/annotation/src/contrib/illuminaMousev1p1.db_1.26.0.tar.gz", + "https://bioconductor.org/packages/3.11/data/annotation/src/contrib/illuminaMousev2.db_1.26.0.tar.gz", + "https://bioconductor.org/packages/3.11/data/annotation/src/contrib/illuminaRatv1.db_1.26.0.tar.gz" +) diff --git a/workers/R/dependencies/illumina/renv.lock b/workers/R/dependencies/illumina/renv.lock new file mode 100644 index 000000000..aca039eb7 --- /dev/null +++ b/workers/R/dependencies/illumina/renv.lock @@ -0,0 +1,1615 @@ +{ + "R": { + "Version": "3.6.3", + "Repositories": [ + { + "Name": "Bioconductor", + "URL": "https://bioconductor.org/packages/3.11/bioc" + }, + { + "Name": "BioconductorAnnotation", + "URL": "https://bioconductor.org/packages/3.11/data/annotation" + }, + { + "Name": "BioconductorExperiment", + "URL": "https://bioconductor.org/packages/3.11/data/experiment" + }, + { + "Name": "CRAN", + "URL": "https://cloud.r-project.org" + } + ] + }, + "Packages": { + "AnnotationDbi": { + "Package": "AnnotationDbi", + "Version": "1.50.3", + "Source": "URL", + "RemoteType": "url", + "RemoteUrl": "https://bioconductor.org/packages/3.11/bioc/src/contrib/AnnotationDbi_1.50.3.tar.gz", + "git_url": "https://git.bioconductor.org/packages/AnnotationDbi", + "git_branch": "RELEASE_3_11", + "git_last_commit": "efa119c", + "git_last_commit_date": "2020-07-24", + "Hash": "8118f8655ad5604099a0e8ac14090f91", + "Requirements": [ + "Biobase", + "BiocGenerics", + "DBI", + "IRanges", + "RSQLite", + "S4Vectors" + ] + }, + "BH": { + "Package": "BH", + "Version": "1.72.0-3", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "8f9ce74c6417d61f0782cbae5fd2b7b0", + "Requirements": [] + }, + "Biobase": { + "Package": "Biobase", + "Version": "2.48.0", + "Source": "Bioconductor", + "git_url": "https://git.bioconductor.org/packages/Biobase", + "git_branch": "RELEASE_3_11", + "git_last_commit": "4ffadf2", + "git_last_commit_date": "2020-04-27", + "Hash": "da9b1bc36fb35ebbec219dc007657f21", + "Requirements": [ + "BiocGenerics" + ] + }, + "BiocGenerics": { + "Package": "BiocGenerics", + "Version": "0.34.0", + "Source": "Bioconductor", + "git_url": "https://git.bioconductor.org/packages/BiocGenerics", + "git_branch": "RELEASE_3_11", + "git_last_commit": "f7c2020", + "git_last_commit_date": "2020-04-27", + "Hash": "ae191b5608f175de0f69b6302390c705", + "Requirements": [] + }, + "BiocManager": { + "Package": "BiocManager", + "Version": "1.30.19", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "726b3bc83ff8e0c35c7efdb74a462b0d", + "Requirements": [] + }, + "Biostrings": { + "Package": "Biostrings", + "Version": "2.56.0", + "Source": "Bioconductor", + "git_url": "https://git.bioconductor.org/packages/Biostrings", + "git_branch": "RELEASE_3_11", + "git_last_commit": "79b7ec8", + "git_last_commit_date": "2020-04-27", + "Hash": "f5d135c565a244740559409e48c410cd", + "Requirements": [ + "BiocGenerics", + "IRanges", + "S4Vectors", + "XVector", + "crayon" + ] + }, + "DBI": { + "Package": "DBI", + "Version": "1.0.0", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "7bc8be0e425da29fe0e10f792bdbb74b", + "Requirements": [] + }, + "DT": { + "Package": "DT", + "Version": "0.14", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "a3580ce0309c94d061c23b0afb4accbd", + "Requirements": [ + "crosstalk", + "htmltools", + "htmlwidgets", + "jsonlite", + "magrittr", + "promises" + ] + }, + "DelayedArray": { + "Package": "DelayedArray", + "Version": "0.14.1", + "Source": "Bioconductor", + "git_url": "https://git.bioconductor.org/packages/DelayedArray", + "git_branch": "RELEASE_3_11", + "git_last_commit": "52230a4", + "git_last_commit_date": "2020-07-13", + "Hash": "8430a6ec606d0d92198ff107f1d98261", + "Requirements": [ + "BiocGenerics", + "IRanges", + "Matrix", + "S4Vectors", + "matrixStats" + ] + }, + "GenomeInfoDb": { + "Package": "GenomeInfoDb", + "Version": "1.24.2", + "Source": "Bioconductor", + "git_url": "https://git.bioconductor.org/packages/GenomeInfoDb", + "git_branch": "RELEASE_3_11", + "git_last_commit": "e3713f3", + "git_last_commit_date": "2020-06-14", + "Hash": "f1556568ab93fd7704380539fca71e6a", + "Requirements": [ + "BiocGenerics", + "GenomeInfoDbData", + "IRanges", + "RCurl", + "S4Vectors" + ] + }, + "GenomeInfoDbData": { + "Package": "GenomeInfoDbData", + "Version": "1.2.3", + "Source": "Bioconductor", + "Hash": "8fe62eac6e27b8e56d51f9ae6030cbcd", + "Requirements": [] + }, + "GenomicRanges": { + "Package": "GenomicRanges", + "Version": "1.40.0", + "Source": "Bioconductor", + "git_url": "https://git.bioconductor.org/packages/GenomicRanges", + "git_branch": "RELEASE_3_11", + "git_last_commit": "a9e18e4", + "git_last_commit_date": "2020-04-27", + "Hash": "05cd2ba8e1e373e9089454cf762df723", + "Requirements": [ + "BiocGenerics", + "GenomeInfoDb", + "IRanges", + "S4Vectors", + "XVector" + ] + }, + "IRanges": { + "Package": "IRanges", + "Version": "2.22.2", + "Source": "Bioconductor", + "git_url": "https://git.bioconductor.org/packages/IRanges", + "git_branch": "RELEASE_3_11", + "git_last_commit": "8c5e991", + "git_last_commit_date": "2020-05-20", + "Hash": "1403fa5c98c5f48b989a6bc5a65c6c25", + "Requirements": [ + "BiocGenerics", + "S4Vectors" + ] + }, + "KernSmooth": { + "Package": "KernSmooth", + "Version": "2.23-20", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "8dcfa99b14c296bc9f1fd64d52fd3ce7", + "Requirements": [] + }, + "MASS": { + "Package": "MASS", + "Version": "7.3-58", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "4bf2c61e656bbc238634c798c208d386", + "Requirements": [] + }, + "Matrix": { + "Package": "Matrix", + "Version": "1.5-1", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "539dc0c0c05636812f1080f473d2c177", + "Requirements": [ + "lattice" + ] + }, + "R6": { + "Package": "R6", + "Version": "2.4.0", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "d4618c4cb36bc46831551c5d85815818", + "Requirements": [] + }, + "RCurl": { + "Package": "RCurl", + "Version": "1.98-1.9", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "ea2f19dade6bd911b29b9bbb115d08f6", + "Requirements": [ + "bitops" + ] + }, + "RSQLite": { + "Package": "RSQLite", + "Version": "2.1.1", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "78c7eac4e23d9cbc194b7439bfc45079", + "Requirements": [ + "BH", + "DBI", + "Rcpp", + "bit64", + "blob", + "memoise", + "pkgconfig", + "plogr" + ] + }, + "Rcpp": { + "Package": "Rcpp", + "Version": "1.0.1", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "d5ae8445d4972caed1c5517ffae908d7", + "Requirements": [] + }, + "S4Vectors": { + "Package": "S4Vectors", + "Version": "0.26.1", + "Source": "Bioconductor", + "git_url": "https://git.bioconductor.org/packages/S4Vectors", + "git_branch": "RELEASE_3_11", + "git_last_commit": "935769c", + "git_last_commit_date": "2020-05-15", + "Hash": "c252d04c13a3a6667d3cc140360780f1", + "Requirements": [ + "BiocGenerics" + ] + }, + "SummarizedExperiment": { + "Package": "SummarizedExperiment", + "Version": "1.18.2", + "Source": "Bioconductor", + "git_url": "https://git.bioconductor.org/packages/SummarizedExperiment", + "git_branch": "RELEASE_3_11", + "git_last_commit": "e22fafe", + "git_last_commit_date": "2020-07-09", + "Hash": "811eb16b3d542aa098d4c89f0985f3bc", + "Requirements": [ + "Biobase", + "BiocGenerics", + "DelayedArray", + "GenomeInfoDb", + "GenomicRanges", + "IRanges", + "Matrix", + "S4Vectors" + ] + }, + "XVector": { + "Package": "XVector", + "Version": "0.28.0", + "Source": "Bioconductor", + "git_url": "https://git.bioconductor.org/packages/XVector", + "git_branch": "RELEASE_3_11", + "git_last_commit": "8bda737", + "git_last_commit_date": "2020-04-27", + "Hash": "a5669a9d44010120a5c10be7977f0626", + "Requirements": [ + "BiocGenerics", + "IRanges", + "S4Vectors", + "zlibbioc" + ] + }, + "affxparser": { + "Package": "affxparser", + "Version": "1.60.0", + "Source": "Bioconductor", + "git_url": "https://git.bioconductor.org/packages/affxparser", + "git_branch": "RELEASE_3_11", + "git_last_commit": "22b10b1", + "git_last_commit_date": "2020-04-27", + "Hash": "4fca40e4bb842b56d6be95bff88ac85f", + "Requirements": [] + }, + "affyio": { + "Package": "affyio", + "Version": "1.58.0", + "Source": "Bioconductor", + "git_url": "https://git.bioconductor.org/packages/affyio", + "git_branch": "RELEASE_3_11", + "git_last_commit": "76fee54", + "git_last_commit_date": "2020-04-27", + "Hash": "c74fdb2854d12ad7fc819bdfbdc0a237", + "Requirements": [ + "zlibbioc" + ] + }, + "askpass": { + "Package": "askpass", + "Version": "1.1", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "e8a22846fff485f0be3770c2da758713", + "Requirements": [ + "sys" + ] + }, + "assertthat": { + "Package": "assertthat", + "Version": "0.2.1", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "50c838a310445e954bc13f26f26a6ecf", + "Requirements": [] + }, + "backports": { + "Package": "backports", + "Version": "1.1.8", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "3ef0eac19317fd03c0c854aed581d473", + "Requirements": [] + }, + "base64enc": { + "Package": "base64enc", + "Version": "0.1-3", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "543776ae6848fde2f48ff3816d0628bc", + "Requirements": [] + }, + "bit": { + "Package": "bit", + "Version": "1.1-14", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "ac0b4115f7bddd07e733e1ac1697c687", + "Requirements": [] + }, + "bit64": { + "Package": "bit64", + "Version": "0.9-7", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "3338d4a9b1352f5a613e2bdcefe784ea", + "Requirements": [ + "bit" + ] + }, + "bitops": { + "Package": "bitops", + "Version": "1.0-7", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "b7d8d8ee39869c18d8846a184dd8a1af", + "Requirements": [] + }, + "blob": { + "Package": "blob", + "Version": "1.1.1", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "3ce988193cfb67e59fde06121bd9f8be", + "Requirements": [ + "prettyunits" + ] + }, + "boot": { + "Package": "boot", + "Version": "1.3-28", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "0baa960e3b49c6176a4f42addcbacc59", + "Requirements": [] + }, + "brew": { + "Package": "brew", + "Version": "1.0-6", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "92a5f887f9ae3035ac7afde22ba73ee9", + "Requirements": [] + }, + "callr": { + "Package": "callr", + "Version": "3.4.3", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "643163a00cb536454c624883a10ae0bc", + "Requirements": [ + "R6", + "processx" + ] + }, + "class": { + "Package": "class", + "Version": "7.3-20", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "da09d82223e669d270e47ed24ac8686e", + "Requirements": [ + "MASS" + ] + }, + "cli": { + "Package": "cli", + "Version": "3.6.0", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "3177a5a16c243adc199ba33117bd9657", + "Requirements": [] + }, + "clipr": { + "Package": "clipr", + "Version": "0.7.0", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "08cf4045c149a0f0eaf405324c7495bd", + "Requirements": [] + }, + "cluster": { + "Package": "cluster", + "Version": "2.1.4", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "5edbbabab6ce0bf7900a74fd4358628e", + "Requirements": [] + }, + "codetools": { + "Package": "codetools", + "Version": "0.2-16", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "89cf4b8207269ccf82fbeb6473fd662b", + "Requirements": [] + }, + "commonmark": { + "Package": "commonmark", + "Version": "1.7", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "0f22be39ec1d141fd03683c06f3a6e67", + "Requirements": [] + }, + "covr": { + "Package": "covr", + "Version": "3.5.0", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "cbc6df1ef6ee576f844f973c1fc04ab4", + "Requirements": [ + "crayon", + "digest", + "httr", + "jsonlite", + "rex", + "withr", + "yaml" + ] + }, + "crayon": { + "Package": "crayon", + "Version": "1.3.4", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "0d57bc8e27b7ba9e45dba825ebc0de6b", + "Requirements": [] + }, + "crosstalk": { + "Package": "crosstalk", + "Version": "1.1.0.1", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "ae55f5d7c02f0ab43c58dd050694f2b4", + "Requirements": [ + "R6", + "htmltools", + "jsonlite", + "lazyeval" + ] + }, + "curl": { + "Package": "curl", + "Version": "4.3", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "2b7d10581cc730804e9ed178c8374bd6", + "Requirements": [] + }, + "data.table": { + "Package": "data.table", + "Version": "1.11.0", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "e3c68af9852f074f4895ba72b2e65b0f", + "Requirements": [] + }, + "desc": { + "Package": "desc", + "Version": "1.2.0", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "6c8fe8fa26a23b79949375d372c7b395", + "Requirements": [ + "R6", + "assertthat", + "crayon", + "rprojroot" + ] + }, + "devtools": { + "Package": "devtools", + "Version": "2.3.1", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "271df6a328617c64149283e98b1cd8da", + "Requirements": [ + "DT", + "callr", + "cli", + "covr", + "desc", + "ellipsis", + "httr", + "jsonlite", + "memoise", + "pkgbuild", + "pkgload", + "rcmdcheck", + "remotes", + "rlang", + "roxygen2", + "rstudioapi", + "rversions", + "sessioninfo", + "testthat", + "usethis", + "withr" + ] + }, + "digest": { + "Package": "digest", + "Version": "0.6.18", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "496dd262e1ec64e452151479a74c972f", + "Requirements": [] + }, + "doParallel": { + "Package": "doParallel", + "Version": "1.0.11", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "b96d7b9fff2027367cc36de12e6bf6a1", + "Requirements": [ + "foreach", + "iterators" + ] + }, + "dplyr": { + "Package": "dplyr", + "Version": "1.0.0", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "4011f62581a34080e44105d4aa05a97f", + "Requirements": [ + "R6", + "ellipsis", + "generics", + "glue", + "lifecycle", + "magrittr", + "rlang", + "tibble", + "tidyselect", + "vctrs" + ] + }, + "ellipsis": { + "Package": "ellipsis", + "Version": "0.3.1", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "fd2844b3a43ae2d27e70ece2df1b4e2a", + "Requirements": [ + "rlang" + ] + }, + "evaluate": { + "Package": "evaluate", + "Version": "0.14", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "ec8ca05cffcc70569eaaad8469d2a3a7", + "Requirements": [] + }, + "fansi": { + "Package": "fansi", + "Version": "0.4.0", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "b31d9e5d051553d1177083aeba04b5b9", + "Requirements": [] + }, + "ff": { + "Package": "ff", + "Version": "2.2-14", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "2f745ad9a324bf4247df10ea6ebc3953", + "Requirements": [ + "bit" + ] + }, + "foreach": { + "Package": "foreach", + "Version": "1.4.4", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "c179d1dd8abd4b888214d44f4de2359a", + "Requirements": [ + "codetools", + "iterators" + ] + }, + "foreign": { + "Package": "foreign", + "Version": "0.8-76", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "649b9c7a979d50d869578c73fed072cd", + "Requirements": [] + }, + "fs": { + "Package": "fs", + "Version": "1.4.2", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "8c04112383ca1988e96f429255f95675", + "Requirements": [] + }, + "generics": { + "Package": "generics", + "Version": "0.1.3", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "15e9634c0fcd294799e9b2e929ed1b86", + "Requirements": [] + }, + "getopt": { + "Package": "getopt", + "Version": "1.20.3", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "ad68e3263f0bc9269aab8c2039440117", + "Requirements": [] + }, + "gh": { + "Package": "gh", + "Version": "1.1.0", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "89ea5998938d1ad55f035c8a86f96b74", + "Requirements": [ + "cli", + "httr", + "ini", + "jsonlite" + ] + }, + "git2r": { + "Package": "git2r", + "Version": "0.27.1", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "531a82d1beed1f545beb25f4f5945bf7", + "Requirements": [] + }, + "glue": { + "Package": "glue", + "Version": "1.6.2", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "4f2596dfb05dac67b9dc558e5c6fba2e", + "Requirements": [] + }, + "highr": { + "Package": "highr", + "Version": "0.8", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "4dc5bb88961e347a0f4d8aad597cbfac", + "Requirements": [] + }, + "htmltools": { + "Package": "htmltools", + "Version": "0.5.0", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "7d651b7131794fe007b1ad6f21aaa401", + "Requirements": [ + "base64enc", + "digest", + "rlang" + ] + }, + "htmlwidgets": { + "Package": "htmlwidgets", + "Version": "1.5.1", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "41bace23583fbc25089edae324de2dc3", + "Requirements": [ + "htmltools", + "jsonlite", + "yaml" + ] + }, + "httr": { + "Package": "httr", + "Version": "1.4.2", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "a525aba14184fec243f9eaec62fbed43", + "Requirements": [ + "R6", + "curl", + "jsonlite", + "mime", + "openssl" + ] + }, + "illuminaHumanv1.db": { + "Package": "illuminaHumanv1.db", + "Version": "1.26.0", + "Source": "URL", + "RemoteType": "url", + "RemoteUrl": "https://bioconductor.org/packages/3.11/data/annotation/src/contrib/illuminaHumanv1.db_1.26.0.tar.gz", + "Hash": "0a3a1bbd72e9e7fbaf45c2f526e0860b", + "Requirements": [ + "AnnotationDbi", + "org.Hs.eg.db" + ] + }, + "illuminaHumanv2.db": { + "Package": "illuminaHumanv2.db", + "Version": "1.26.0", + "Source": "URL", + "RemoteType": "url", + "RemoteUrl": "https://bioconductor.org/packages/3.11/data/annotation/src/contrib/illuminaHumanv2.db_1.26.0.tar.gz", + "Hash": "00bfc88c78a89609c090c452faba5463", + "Requirements": [ + "AnnotationDbi", + "org.Hs.eg.db" + ] + }, + "illuminaHumanv3.db": { + "Package": "illuminaHumanv3.db", + "Version": "1.26.0", + "Source": "URL", + "RemoteType": "url", + "RemoteUrl": "https://bioconductor.org/packages/3.11/data/annotation/src/contrib/illuminaHumanv3.db_1.26.0.tar.gz", + "Hash": "d9caa9d6721eaa23570c7ce120fb85e5", + "Requirements": [ + "AnnotationDbi", + "org.Hs.eg.db" + ] + }, + "illuminaHumanv4.db": { + "Package": "illuminaHumanv4.db", + "Version": "1.26.0", + "Source": "URL", + "RemoteType": "url", + "RemoteUrl": "https://bioconductor.org/packages/3.11/data/annotation/src/contrib/illuminaHumanv4.db_1.26.0.tar.gz", + "Hash": "f39df79d54bc50cc06091ef4c25bf68e", + "Requirements": [ + "AnnotationDbi", + "org.Hs.eg.db" + ] + }, + "illuminaMousev1.db": { + "Package": "illuminaMousev1.db", + "Version": "1.26.0", + "Source": "URL", + "RemoteType": "url", + "RemoteUrl": "https://bioconductor.org/packages/3.11/data/annotation/src/contrib/illuminaMousev1.db_1.26.0.tar.gz", + "Hash": "2ba4014bef28915740cb0a5cfe98cb8a", + "Requirements": [ + "AnnotationDbi", + "org.Mm.eg.db" + ] + }, + "illuminaMousev1p1.db": { + "Package": "illuminaMousev1p1.db", + "Version": "1.26.0", + "Source": "URL", + "RemoteType": "url", + "RemoteUrl": "https://bioconductor.org/packages/3.11/data/annotation/src/contrib/illuminaMousev1p1.db_1.26.0.tar.gz", + "Hash": "6ff4f1afb020fe555bb4869a3a3deae1", + "Requirements": [ + "AnnotationDbi", + "org.Mm.eg.db" + ] + }, + "illuminaMousev2.db": { + "Package": "illuminaMousev2.db", + "Version": "1.26.0", + "Source": "URL", + "RemoteType": "url", + "RemoteUrl": "https://bioconductor.org/packages/3.11/data/annotation/src/contrib/illuminaMousev2.db_1.26.0.tar.gz", + "Hash": "3c26b8c0fbbcbda9e0ac427474d17b88", + "Requirements": [ + "AnnotationDbi", + "org.Mm.eg.db" + ] + }, + "illuminaRatv1.db": { + "Package": "illuminaRatv1.db", + "Version": "1.26.0", + "Source": "URL", + "RemoteType": "url", + "RemoteUrl": "https://bioconductor.org/packages/3.11/data/annotation/src/contrib/illuminaRatv1.db_1.26.0.tar.gz", + "Hash": "3163ade3bc5aa76bcfb4e791b60db7f6", + "Requirements": [ + "AnnotationDbi", + "org.Rn.eg.db" + ] + }, + "ini": { + "Package": "ini", + "Version": "0.3.1", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "6154ec2223172bce8162d4153cda21f7", + "Requirements": [] + }, + "iterators": { + "Package": "iterators", + "Version": "1.0.10", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "02caec9a169f9344577950df8f70aaa8", + "Requirements": [] + }, + "jsonlite": { + "Package": "jsonlite", + "Version": "1.7.0", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "2657f20b9a74c996c602e74ebe540b06", + "Requirements": [] + }, + "knitr": { + "Package": "knitr", + "Version": "1.29", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "e5f4c41c17df8cdf7b0df12117c0d99a", + "Requirements": [ + "evaluate", + "highr", + "markdown", + "stringr", + "xfun", + "yaml" + ] + }, + "later": { + "Package": "later", + "Version": "1.1.0.1", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "d0a62b247165aabf397fded504660d8a", + "Requirements": [ + "BH", + "Rcpp", + "rlang" + ] + }, + "lattice": { + "Package": "lattice", + "Version": "0.20-45", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "b64cdbb2b340437c4ee047a1f4c4377b", + "Requirements": [] + }, + "lazyeval": { + "Package": "lazyeval", + "Version": "0.2.1", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "ea5964121f493fb3057e9887d424f634", + "Requirements": [] + }, + "lifecycle": { + "Package": "lifecycle", + "Version": "1.0.3", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "001cecbeac1cff9301bdc3775ee46a86", + "Requirements": [ + "cli", + "glue", + "rlang" + ] + }, + "limma": { + "Package": "limma", + "Version": "3.44.3", + "Source": "URL", + "RemoteType": "url", + "RemoteUrl": "https://bioconductor.org/packages/3.11/bioc/src/contrib/limma_3.44.3.tar.gz", + "git_url": "https://git.bioconductor.org/packages/limma", + "git_branch": "RELEASE_3_11", + "git_last_commit": "90275de", + "git_last_commit_date": "2020-06-12", + "Hash": "6f85e30aa587815acc9551390ff0bbec", + "Requirements": [] + }, + "magrittr": { + "Package": "magrittr", + "Version": "1.5", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "1bb58822a20301cee84a41678e25d9b7", + "Requirements": [] + }, + "markdown": { + "Package": "markdown", + "Version": "1.1", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "61e4a10781dd00d7d81dd06ca9b94e95", + "Requirements": [ + "mime", + "xfun" + ] + }, + "matrixStats": { + "Package": "matrixStats", + "Version": "0.63.0", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "57af0c3da1f1a50680b186591c3359af", + "Requirements": [] + }, + "memoise": { + "Package": "memoise", + "Version": "1.1.0", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "58baa74e4603fcfb9a94401c58c8f9b1", + "Requirements": [ + "digest" + ] + }, + "mgcv": { + "Package": "mgcv", + "Version": "1.8-41", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "6b3904f13346742caa3e82dd0303d4ad", + "Requirements": [ + "Matrix", + "nlme" + ] + }, + "mime": { + "Package": "mime", + "Version": "0.9", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "e87a35ec73b157552814869f45a63aa3", + "Requirements": [] + }, + "nlme": { + "Package": "nlme", + "Version": "3.1-161", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "b49e163093c0ef46fbbfc40bcb87916c", + "Requirements": [ + "lattice" + ] + }, + "nnet": { + "Package": "nnet", + "Version": "7.3-18", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "170da2130d5332bea7d6ede01875ba1d", + "Requirements": [] + }, + "oligo": { + "Package": "oligo", + "Version": "1.52.1", + "Source": "URL", + "RemoteType": "url", + "RemoteUrl": "https://bioconductor.org/packages/3.11/bioc/src/contrib/oligo_1.52.1.tar.gz", + "git_url": "https://git.bioconductor.org/packages/oligo", + "git_branch": "RELEASE_3_11", + "git_last_commit": "cbd66c8", + "git_last_commit_date": "2020-08-10", + "Hash": "25a32b15cf0656f2624672150de9d750", + "Requirements": [ + "Biobase", + "BiocGenerics", + "Biostrings", + "DBI", + "RSQLite", + "affxparser", + "affyio", + "ff", + "oligoClasses", + "preprocessCore", + "zlibbioc" + ] + }, + "oligoClasses": { + "Package": "oligoClasses", + "Version": "1.50.4", + "Source": "URL", + "RemoteType": "url", + "RemoteUrl": "https://bioconductor.org/packages/3.11/bioc/src/contrib/oligoClasses_1.50.4.tar.gz", + "git_url": "https://git.bioconductor.org/packages/oligoClasses", + "git_branch": "RELEASE_3_11", + "git_last_commit": "da7b856", + "git_last_commit_date": "2020-08-10", + "Hash": "f4190217bc7d1b697b37bd4711560084", + "Requirements": [ + "Biobase", + "BiocGenerics", + "BiocManager", + "Biostrings", + "DBI", + "GenomicRanges", + "IRanges", + "RSQLite", + "S4Vectors", + "SummarizedExperiment", + "affyio", + "ff", + "foreach" + ] + }, + "openssl": { + "Package": "openssl", + "Version": "1.4.2", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "b3209c62052922b6c629544d94c8fa8a", + "Requirements": [ + "askpass" + ] + }, + "optparse": { + "Package": "optparse", + "Version": "1.4.4", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "803e834713c77eda6c233965977b2c58", + "Requirements": [ + "getopt" + ] + }, + "org.Hs.eg.db": { + "Package": "org.Hs.eg.db", + "Version": "3.11.4", + "Source": "Bioconductor", + "Hash": "30e8ecad485994b19435671c36a36290", + "Requirements": [ + "AnnotationDbi" + ] + }, + "org.Mm.eg.db": { + "Package": "org.Mm.eg.db", + "Version": "3.11.4", + "Source": "Bioconductor", + "Hash": "133273535e42fadf1d244ef36e372811", + "Requirements": [ + "AnnotationDbi" + ] + }, + "org.Rn.eg.db": { + "Package": "org.Rn.eg.db", + "Version": "3.11.4", + "Source": "Bioconductor", + "Hash": "ed8c8527c724a46e6b446f7cc4d5f1bd", + "Requirements": [ + "AnnotationDbi" + ] + }, + "pillar": { + "Package": "pillar", + "Version": "1.8.1", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "f2316df30902c81729ae9de95ad5a608", + "Requirements": [ + "cli", + "fansi", + "glue", + "lifecycle", + "rlang", + "utf8", + "vctrs" + ] + }, + "pkgbuild": { + "Package": "pkgbuild", + "Version": "1.1.0", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "404684bc4e3685007f9720adf13b06c1", + "Requirements": [ + "R6", + "callr", + "cli", + "crayon", + "desc", + "prettyunits", + "rprojroot", + "withr" + ] + }, + "pkgconfig": { + "Package": "pkgconfig", + "Version": "2.0.2", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "f5940986fb19bcef52284068baeb3f29", + "Requirements": [] + }, + "pkgload": { + "Package": "pkgload", + "Version": "1.1.0", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "b6b150cd4709e0c0c9b5d51ac4376282", + "Requirements": [ + "cli", + "crayon", + "desc", + "pkgbuild", + "rlang", + "rprojroot", + "rstudioapi", + "withr" + ] + }, + "plogr": { + "Package": "plogr", + "Version": "0.2.0", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "09eb987710984fc2905c7129c7d85e65", + "Requirements": [] + }, + "praise": { + "Package": "praise", + "Version": "1.0.0", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "a555924add98c99d2f411e37e7d25e9f", + "Requirements": [] + }, + "preprocessCore": { + "Package": "preprocessCore", + "Version": "1.50.0", + "Source": "Bioconductor", + "git_url": "https://git.bioconductor.org/packages/preprocessCore", + "git_branch": "RELEASE_3_11", + "git_last_commit": "9230366", + "git_last_commit_date": "2020-04-27", + "Hash": "23e31327cfd9b9d1359c5f6165414cb9", + "Requirements": [] + }, + "prettyunits": { + "Package": "prettyunits", + "Version": "1.0.2", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "f3c960f0105f2ed179460864979fc37c", + "Requirements": [ + "assertthat", + "magrittr" + ] + }, + "processx": { + "Package": "processx", + "Version": "3.4.3", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "f4f13345fcb00c51ace12f65dd18749f", + "Requirements": [ + "R6", + "ps" + ] + }, + "promises": { + "Package": "promises", + "Version": "1.1.1", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "a8730dcbdd19f9047774909f0ec214a4", + "Requirements": [ + "R6", + "Rcpp", + "later", + "magrittr", + "rlang" + ] + }, + "ps": { + "Package": "ps", + "Version": "1.3.3", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "425d938eb9c02906a8ac98c0c2a306b5", + "Requirements": [] + }, + "purrr": { + "Package": "purrr", + "Version": "0.3.4", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "97def703420c8ab10d8f0e6c72101e02", + "Requirements": [ + "magrittr", + "rlang" + ] + }, + "rcmdcheck": { + "Package": "rcmdcheck", + "Version": "1.3.3", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "ed95895886dab6d2a584da45503555da", + "Requirements": [ + "R6", + "callr", + "cli", + "crayon", + "desc", + "digest", + "pkgbuild", + "prettyunits", + "rprojroot", + "sessioninfo", + "withr", + "xopen" + ] + }, + "rematch2": { + "Package": "rematch2", + "Version": "2.1.2", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "76c9e04c712a05848ae7a23d2f170a40", + "Requirements": [ + "tibble" + ] + }, + "remotes": { + "Package": "remotes", + "Version": "2.2.0", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "430a0908aee75b1fcba0e62857cab0ce", + "Requirements": [] + }, + "renv": { + "Package": "renv", + "Version": "0.16.0", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "c9e8442ab69bc21c9697ecf856c1e6c7", + "Requirements": [] + }, + "rex": { + "Package": "rex", + "Version": "1.2.0", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "093584b944440c5cd07a696b3c8e0e4c", + "Requirements": [ + "lazyeval" + ] + }, + "rlang": { + "Package": "rlang", + "Version": "1.0.6", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "4ed1f8336c8d52c3e750adcdc57228a7", + "Requirements": [] + }, + "roxygen2": { + "Package": "roxygen2", + "Version": "7.1.1", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "fcd94e00cc409b25d07ca50f7bf339f5", + "Requirements": [ + "R6", + "Rcpp", + "brew", + "commonmark", + "desc", + "digest", + "knitr", + "pkgload", + "purrr", + "rlang", + "stringi", + "stringr", + "xml2" + ] + }, + "rpart": { + "Package": "rpart", + "Version": "4.1.19", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "b3c892a81783376cc2204af0f5805a80", + "Requirements": [] + }, + "rprojroot": { + "Package": "rprojroot", + "Version": "1.3-2", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "f6a407ae5dd21f6f80a6708bbb6eb3ae", + "Requirements": [ + "backports" + ] + }, + "rstudioapi": { + "Package": "rstudioapi", + "Version": "0.11", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "33a5b27a03da82ac4b1d43268f80088a", + "Requirements": [] + }, + "rversions": { + "Package": "rversions", + "Version": "2.0.2", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "0ec41191f744d0f5afad8c6f35cc36e4", + "Requirements": [ + "curl", + "xml2" + ] + }, + "sessioninfo": { + "Package": "sessioninfo", + "Version": "1.1.1", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "308013098befe37484df72c39cf90d6e", + "Requirements": [ + "cli", + "withr" + ] + }, + "spatial": { + "Package": "spatial", + "Version": "7.3-11", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "f27a078d834614513608da2c08031130", + "Requirements": [] + }, + "stringi": { + "Package": "stringi", + "Version": "1.4.6", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "e99d8d656980d2dd416a962ae55aec90", + "Requirements": [] + }, + "stringr": { + "Package": "stringr", + "Version": "1.4.0", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "0759e6b6c0957edb1311028a49a35e76", + "Requirements": [ + "glue", + "magrittr", + "stringi" + ] + }, + "survival": { + "Package": "survival", + "Version": "3.4-0", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "04411ae66ab4659230c067c32966fc20", + "Requirements": [ + "Matrix" + ] + }, + "sys": { + "Package": "sys", + "Version": "3.4", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "b227d13e29222b4574486cfcbde077fa", + "Requirements": [] + }, + "testthat": { + "Package": "testthat", + "Version": "2.3.2", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "0829b987b8961fb07f3b1b64a2fbc495", + "Requirements": [ + "R6", + "cli", + "crayon", + "digest", + "ellipsis", + "evaluate", + "magrittr", + "pkgload", + "praise", + "rlang", + "withr" + ] + }, + "tibble": { + "Package": "tibble", + "Version": "3.1.8", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "56b6934ef0f8c68225949a8672fe1a8f", + "Requirements": [ + "fansi", + "lifecycle", + "magrittr", + "pillar", + "pkgconfig", + "rlang", + "vctrs" + ] + }, + "tidyselect": { + "Package": "tidyselect", + "Version": "1.2.0", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "79540e5fcd9e0435af547d885f184fd5", + "Requirements": [ + "cli", + "glue", + "lifecycle", + "rlang", + "vctrs", + "withr" + ] + }, + "usethis": { + "Package": "usethis", + "Version": "1.6.1", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "e1985f5a9985fea2e338fa7eb99018ca", + "Requirements": [ + "cli", + "clipr", + "crayon", + "curl", + "desc", + "fs", + "gh", + "git2r", + "glue", + "purrr", + "rematch2", + "rlang", + "rprojroot", + "rstudioapi", + "whisker", + "withr", + "yaml" + ] + }, + "utf8": { + "Package": "utf8", + "Version": "1.1.4", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "4a5081acfb7b81a572e4384a7aaf2af1", + "Requirements": [] + }, + "vctrs": { + "Package": "vctrs", + "Version": "0.5.1", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "970324f6572b4fd81db507b5d4062cb0", + "Requirements": [ + "cli", + "glue", + "lifecycle", + "rlang" + ] + }, + "whisker": { + "Package": "whisker", + "Version": "0.4", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "ca970b96d894e90397ed20637a0c1bbe", + "Requirements": [] + }, + "withr": { + "Package": "withr", + "Version": "2.2.0", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "ecd17882a0b4419545691e095b74ee89", + "Requirements": [] + }, + "xfun": { + "Package": "xfun", + "Version": "0.16", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "b4106139b90981a8bfea9c10bab0baf1", + "Requirements": [] + }, + "xml2": { + "Package": "xml2", + "Version": "1.3.2", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "d4d71a75dd3ea9eb5fa28cc21f9585e2", + "Requirements": [] + }, + "xopen": { + "Package": "xopen", + "Version": "1.0.0", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "6c85f015dee9cc7710ddd20f86881f58", + "Requirements": [ + "processx" + ] + }, + "yaml": { + "Package": "yaml", + "Version": "2.2.1", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "2826c5d9efb0a88f657c7a679c7106db", + "Requirements": [] + }, + "zlibbioc": { + "Package": "zlibbioc", + "Version": "1.34.0", + "Source": "Bioconductor", + "git_url": "https://git.bioconductor.org/packages/zlibbioc", + "git_branch": "RELEASE_3_11", + "git_last_commit": "2db035c", + "git_last_commit_date": "2020-04-27", + "Hash": "a1b2fc6a5b8076e5e9edf275d50d1795", + "Requirements": [] + } + } +} diff --git a/common/R/install_devtools.R b/workers/R/dependencies/install_devtools.R similarity index 100% rename from common/R/install_devtools.R rename to workers/R/dependencies/install_devtools.R diff --git a/workers/R/dependencies/install_devtools_renv.R b/workers/R/dependencies/install_devtools_renv.R new file mode 100644 index 000000000..b8b522e9d --- /dev/null +++ b/workers/R/dependencies/install_devtools_renv.R @@ -0,0 +1,76 @@ +renv::install("jsonlite@1.7.0") +renv::install("withr@2.2.0") +renv::install("crayon@1.3.4") +renv::install("fansi@0.4.1") +renv::install("glue@1.4.1") +renv::install("assertthat@0.2.1") +renv::install("cli@2.0.2") +renv::install("sessioninfo@1.1.1") +renv::install("rlang@0.4.7") +renv::install("ellipsis@0.3.1") +renv::install("xml2@1.3.2") +renv::install("curl@4.3") +renv::install("rversions@2.0.2") +renv::install("remotes@2.2.0") +renv::install("R6@2.4.1") +renv::install("praise@1.0.0") +renv::install("magrittr@1.5") +renv::install("digest@0.6.25") +renv::install("evaluate@0.14") +renv::install("backports@1.1.8") +renv::install("rprojroot@1.3-2") +renv::install("desc@1.2.0") +renv::install("prettyunits@1.1.1") +renv::install("ps@1.3.3") +renv::install("processx@3.4.3") +renv::install("callr@3.4.3") +renv::install("pkgbuild@1.1.0") +renv::install("rstudioapi@0.11") +renv::install("pkgload@1.1.0") +renv::install("testthat@2.3.2") +renv::install("mime@0.9") +renv::install("sys@3.4") +renv::install("askpass@1.1") +renv::install("openssl@1.4.2") +renv::install("httr@1.4.2") +renv::install("fs@1.4.2") +renv::install("git2r@0.27.1") +renv::install("whisker@0.4") +renv::install("clipr@0.7.0") +renv::install("ini@0.3.1") +renv::install("gh@1.1.0") +renv::install("utf8@1.1.4") +renv::install("lifecycle@0.2.0") +renv::install("vctrs@0.3.2") +renv::install("pillar@1.4.6") +renv::install("pkgconfig@2.0.3") +renv::install("tibble@3.0.3") +renv::install("rematch2@2.1.2") +renv::install("purrr@0.3.4") +renv::install("yaml@2.2.1") +renv::install("usethis@1.6.1") +renv::install("lazyeval@0.2.2") +renv::install("rex@1.2.0") +renv::install("covr@3.5.0") +renv::install("memoise@1.1.0") +renv::install("base64enc@0.1-3") +renv::install("htmltools@0.5.0") +renv::install("crosstalk@1.1.0.1") +renv::install("htmlwidgets@1.5.1") +renv::install("Rcpp@1.0.5") +renv::install("BH@1.72.0-3") +renv::install("later@1.1.0.1") +renv::install("promises@1.1.1") +renv::install("DT@0.14") +renv::install("commonmark@1.7") +renv::install("stringi@1.4.6") +renv::install("stringr@1.4.0") +renv::install("xfun@0.16") +renv::install("markdown@1.1") +renv::install("highr@0.8") +renv::install("knitr@1.29") +renv::install("brew@1.0-6") +renv::install("roxygen2@7.1.1") +renv::install("xopen@1.0.0") +renv::install("rcmdcheck@1.3.3") +renv::install("devtools@2.3.1") diff --git a/workers/R/dependencies/no_op/renv.R b/workers/R/dependencies/no_op/renv.R new file mode 100644 index 000000000..04fcf2910 --- /dev/null +++ b/workers/R/dependencies/no_op/renv.R @@ -0,0 +1,48 @@ +renv::install("data.table@1.11.0") +renv::install("getopt@1.20.3") +renv::install("optparse@1.4.4") +renv::install("rlang@0.3.1") +renv::install("crayon@1.3.4") +renv::install("assertthat@0.2.1") +renv::install("cli@1.1.0") +renv::install("fansi@0.4.0") +renv::install("utf8@1.1.4") +renv::install("digest@0.6.18") +renv::install("rlang@0.3.1") +renv::install("glue@1.3.1") +renv::install("pillar@1.3.1") +renv::install("pkgconfig@2.0.2") +renv::install("pillar@1.3.1") +renv::install("tibble@2.0.1") +renv::install("lazyeval@0.2.1") +renv::install("Rcpp@1.0.1") +renv::install("magrittr@1.5") +renv::install("purrr@0.3.3") +renv::install("tidyselect@0.2.5") +renv::install("R6@2.4.0") +renv::install("lifecycle@1.0.3") +renv::install("tibble@2.0.1") +renv::install("dplyr@1.0.2") +renv::install("stringi@1.4.3") +renv::install("stringr@1.4.0") +renv::install("plyr@1.8.4") +renv::install("reshape2@1.4.3") +renv::install("bit@1.1-14") +renv::install("bit64@0.9-7") +renv::install("prettyunits@1.0.2") +renv::install("blob@1.1.1") +renv::install("DBI@1.0.0") +renv::install("memoise@1.1.0") +renv::install("RSQLite@2.1.1") + +renv::install( + "https://bioconductor.org/packages/3.11/bioc/src/contrib/AnnotationDbi_1.50.3.tar.gz", + "https://bioconductor.org/packages/3.11/data/annotation/src/contrib/illuminaHumanv1.db_1.26.0.tar.gz", + "https://bioconductor.org/packages/3.11/data/annotation/src/contrib/illuminaHumanv2.db_1.26.0.tar.gz", + "https://bioconductor.org/packages/3.11/data/annotation/src/contrib/illuminaHumanv3.db_1.26.0.tar.gz", + "https://bioconductor.org/packages/3.11/data/annotation/src/contrib/illuminaHumanv4.db_1.26.0.tar.gz", + "https://bioconductor.org/packages/3.11/data/annotation/src/contrib/illuminaMousev1.db_1.26.0.tar.gz", + "https://bioconductor.org/packages/3.11/data/annotation/src/contrib/illuminaMousev1p1.db_1.26.0.tar.gz", + "https://bioconductor.org/packages/3.11/data/annotation/src/contrib/illuminaMousev2.db_1.26.0.tar.gz", + "https://bioconductor.org/packages/3.11/data/annotation/src/contrib/illuminaRatv1.db_1.26.0.tar.gz" +) diff --git a/workers/R/dependencies/no_op/renv.lock b/workers/R/dependencies/no_op/renv.lock new file mode 100644 index 000000000..0870c9e07 --- /dev/null +++ b/workers/R/dependencies/no_op/renv.lock @@ -0,0 +1,1389 @@ +{ + "R": { + "Version": "3.6.3", + "Repositories": [ + { + "Name": "Bioconductor", + "URL": "https://bioconductor.org/packages/3.11/bioc" + }, + { + "Name": "BioconductorAnnotation", + "URL": "https://bioconductor.org/packages/3.11/data/annotation" + }, + { + "Name": "BioconductorExperiment", + "URL": "https://bioconductor.org/packages/3.11/data/experiment" + }, + { + "Name": "CRAN", + "URL": "https://cloud.r-project.org" + } + ] + }, + "Packages": { + "AnnotationDbi": { + "Package": "AnnotationDbi", + "Version": "1.50.3", + "Source": "URL", + "RemoteType": "url", + "RemoteUrl": "https://bioconductor.org/packages/3.11/bioc/src/contrib/AnnotationDbi_1.50.3.tar.gz", + "git_url": "https://git.bioconductor.org/packages/AnnotationDbi", + "git_branch": "RELEASE_3_11", + "git_last_commit": "efa119c", + "git_last_commit_date": "2020-07-24", + "Hash": "8118f8655ad5604099a0e8ac14090f91", + "Requirements": [ + "Biobase", + "BiocGenerics", + "DBI", + "IRanges", + "RSQLite", + "S4Vectors" + ] + }, + "BH": { + "Package": "BH", + "Version": "1.72.0-3", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "8f9ce74c6417d61f0782cbae5fd2b7b0", + "Requirements": [] + }, + "Biobase": { + "Package": "Biobase", + "Version": "2.48.0", + "Source": "Bioconductor", + "git_url": "https://git.bioconductor.org/packages/Biobase", + "git_branch": "RELEASE_3_11", + "git_last_commit": "4ffadf2", + "git_last_commit_date": "2020-04-27", + "Hash": "da9b1bc36fb35ebbec219dc007657f21", + "Requirements": [ + "BiocGenerics" + ] + }, + "BiocGenerics": { + "Package": "BiocGenerics", + "Version": "0.34.0", + "Source": "Bioconductor", + "git_url": "https://git.bioconductor.org/packages/BiocGenerics", + "git_branch": "RELEASE_3_11", + "git_last_commit": "f7c2020", + "git_last_commit_date": "2020-04-27", + "Hash": "ae191b5608f175de0f69b6302390c705", + "Requirements": [] + }, + "BiocManager": { + "Package": "BiocManager", + "Version": "1.30.19", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "726b3bc83ff8e0c35c7efdb74a462b0d", + "Requirements": [] + }, + "DBI": { + "Package": "DBI", + "Version": "1.0.0", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "7bc8be0e425da29fe0e10f792bdbb74b", + "Requirements": [] + }, + "DT": { + "Package": "DT", + "Version": "0.14", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "a3580ce0309c94d061c23b0afb4accbd", + "Requirements": [ + "crosstalk", + "htmltools", + "htmlwidgets", + "jsonlite", + "magrittr", + "promises" + ] + }, + "IRanges": { + "Package": "IRanges", + "Version": "2.22.2", + "Source": "Bioconductor", + "git_url": "https://git.bioconductor.org/packages/IRanges", + "git_branch": "RELEASE_3_11", + "git_last_commit": "8c5e991", + "git_last_commit_date": "2020-05-20", + "Hash": "1403fa5c98c5f48b989a6bc5a65c6c25", + "Requirements": [ + "BiocGenerics", + "S4Vectors" + ] + }, + "KernSmooth": { + "Package": "KernSmooth", + "Version": "2.23-20", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "8dcfa99b14c296bc9f1fd64d52fd3ce7", + "Requirements": [] + }, + "MASS": { + "Package": "MASS", + "Version": "7.3-58", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "4bf2c61e656bbc238634c798c208d386", + "Requirements": [] + }, + "Matrix": { + "Package": "Matrix", + "Version": "1.5-1", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "539dc0c0c05636812f1080f473d2c177", + "Requirements": [ + "lattice" + ] + }, + "R6": { + "Package": "R6", + "Version": "2.4.0", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "d4618c4cb36bc46831551c5d85815818", + "Requirements": [] + }, + "RSQLite": { + "Package": "RSQLite", + "Version": "2.1.1", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "78c7eac4e23d9cbc194b7439bfc45079", + "Requirements": [ + "BH", + "DBI", + "Rcpp", + "bit64", + "blob", + "memoise", + "pkgconfig", + "plogr" + ] + }, + "Rcpp": { + "Package": "Rcpp", + "Version": "1.0.1", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "d5ae8445d4972caed1c5517ffae908d7", + "Requirements": [] + }, + "S4Vectors": { + "Package": "S4Vectors", + "Version": "0.26.1", + "Source": "Bioconductor", + "git_url": "https://git.bioconductor.org/packages/S4Vectors", + "git_branch": "RELEASE_3_11", + "git_last_commit": "935769c", + "git_last_commit_date": "2020-05-15", + "Hash": "c252d04c13a3a6667d3cc140360780f1", + "Requirements": [ + "BiocGenerics" + ] + }, + "askpass": { + "Package": "askpass", + "Version": "1.1", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "e8a22846fff485f0be3770c2da758713", + "Requirements": [ + "sys" + ] + }, + "assertthat": { + "Package": "assertthat", + "Version": "0.2.1", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "50c838a310445e954bc13f26f26a6ecf", + "Requirements": [] + }, + "backports": { + "Package": "backports", + "Version": "1.1.8", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "3ef0eac19317fd03c0c854aed581d473", + "Requirements": [] + }, + "base64enc": { + "Package": "base64enc", + "Version": "0.1-3", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "543776ae6848fde2f48ff3816d0628bc", + "Requirements": [] + }, + "bit": { + "Package": "bit", + "Version": "1.1-14", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "ac0b4115f7bddd07e733e1ac1697c687", + "Requirements": [] + }, + "bit64": { + "Package": "bit64", + "Version": "0.9-7", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "3338d4a9b1352f5a613e2bdcefe784ea", + "Requirements": [ + "bit" + ] + }, + "blob": { + "Package": "blob", + "Version": "1.1.1", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "3ce988193cfb67e59fde06121bd9f8be", + "Requirements": [ + "prettyunits" + ] + }, + "boot": { + "Package": "boot", + "Version": "1.3-28", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "0baa960e3b49c6176a4f42addcbacc59", + "Requirements": [] + }, + "brew": { + "Package": "brew", + "Version": "1.0-6", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "92a5f887f9ae3035ac7afde22ba73ee9", + "Requirements": [] + }, + "callr": { + "Package": "callr", + "Version": "3.4.3", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "643163a00cb536454c624883a10ae0bc", + "Requirements": [ + "R6", + "processx" + ] + }, + "class": { + "Package": "class", + "Version": "7.3-20", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "da09d82223e669d270e47ed24ac8686e", + "Requirements": [ + "MASS" + ] + }, + "cli": { + "Package": "cli", + "Version": "3.6.0", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "3177a5a16c243adc199ba33117bd9657", + "Requirements": [] + }, + "clipr": { + "Package": "clipr", + "Version": "0.7.0", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "08cf4045c149a0f0eaf405324c7495bd", + "Requirements": [] + }, + "cluster": { + "Package": "cluster", + "Version": "2.1.4", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "5edbbabab6ce0bf7900a74fd4358628e", + "Requirements": [] + }, + "codetools": { + "Package": "codetools", + "Version": "0.2-16", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "89cf4b8207269ccf82fbeb6473fd662b", + "Requirements": [] + }, + "commonmark": { + "Package": "commonmark", + "Version": "1.7", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "0f22be39ec1d141fd03683c06f3a6e67", + "Requirements": [] + }, + "covr": { + "Package": "covr", + "Version": "3.5.0", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "cbc6df1ef6ee576f844f973c1fc04ab4", + "Requirements": [ + "crayon", + "digest", + "httr", + "jsonlite", + "rex", + "withr", + "yaml" + ] + }, + "crayon": { + "Package": "crayon", + "Version": "1.3.4", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "0d57bc8e27b7ba9e45dba825ebc0de6b", + "Requirements": [] + }, + "crosstalk": { + "Package": "crosstalk", + "Version": "1.1.0.1", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "ae55f5d7c02f0ab43c58dd050694f2b4", + "Requirements": [ + "R6", + "htmltools", + "jsonlite", + "lazyeval" + ] + }, + "curl": { + "Package": "curl", + "Version": "4.3", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "2b7d10581cc730804e9ed178c8374bd6", + "Requirements": [] + }, + "data.table": { + "Package": "data.table", + "Version": "1.11.0", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "e3c68af9852f074f4895ba72b2e65b0f", + "Requirements": [] + }, + "desc": { + "Package": "desc", + "Version": "1.2.0", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "6c8fe8fa26a23b79949375d372c7b395", + "Requirements": [ + "R6", + "assertthat", + "crayon", + "rprojroot" + ] + }, + "devtools": { + "Package": "devtools", + "Version": "2.3.1", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "271df6a328617c64149283e98b1cd8da", + "Requirements": [ + "DT", + "callr", + "cli", + "covr", + "desc", + "ellipsis", + "httr", + "jsonlite", + "memoise", + "pkgbuild", + "pkgload", + "rcmdcheck", + "remotes", + "rlang", + "roxygen2", + "rstudioapi", + "rversions", + "sessioninfo", + "testthat", + "usethis", + "withr" + ] + }, + "digest": { + "Package": "digest", + "Version": "0.6.18", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "496dd262e1ec64e452151479a74c972f", + "Requirements": [] + }, + "doParallel": { + "Package": "doParallel", + "Version": "1.0.11", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "b96d7b9fff2027367cc36de12e6bf6a1", + "Requirements": [ + "foreach", + "iterators" + ] + }, + "dplyr": { + "Package": "dplyr", + "Version": "1.0.2", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "d0509913b27ea898189ee664b6030dc2", + "Requirements": [ + "R6", + "ellipsis", + "generics", + "glue", + "lifecycle", + "magrittr", + "rlang", + "tibble", + "tidyselect", + "vctrs" + ] + }, + "ellipsis": { + "Package": "ellipsis", + "Version": "0.3.1", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "fd2844b3a43ae2d27e70ece2df1b4e2a", + "Requirements": [ + "rlang" + ] + }, + "evaluate": { + "Package": "evaluate", + "Version": "0.14", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "ec8ca05cffcc70569eaaad8469d2a3a7", + "Requirements": [] + }, + "fansi": { + "Package": "fansi", + "Version": "0.4.0", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "b31d9e5d051553d1177083aeba04b5b9", + "Requirements": [] + }, + "ff": { + "Package": "ff", + "Version": "2.2-14", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "2f745ad9a324bf4247df10ea6ebc3953", + "Requirements": [ + "bit" + ] + }, + "foreach": { + "Package": "foreach", + "Version": "1.4.4", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "c179d1dd8abd4b888214d44f4de2359a", + "Requirements": [ + "codetools", + "iterators" + ] + }, + "foreign": { + "Package": "foreign", + "Version": "0.8-76", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "649b9c7a979d50d869578c73fed072cd", + "Requirements": [] + }, + "fs": { + "Package": "fs", + "Version": "1.4.2", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "8c04112383ca1988e96f429255f95675", + "Requirements": [] + }, + "generics": { + "Package": "generics", + "Version": "0.1.3", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "15e9634c0fcd294799e9b2e929ed1b86", + "Requirements": [] + }, + "getopt": { + "Package": "getopt", + "Version": "1.20.3", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "ad68e3263f0bc9269aab8c2039440117", + "Requirements": [] + }, + "gh": { + "Package": "gh", + "Version": "1.1.0", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "89ea5998938d1ad55f035c8a86f96b74", + "Requirements": [ + "cli", + "httr", + "ini", + "jsonlite" + ] + }, + "git2r": { + "Package": "git2r", + "Version": "0.27.1", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "531a82d1beed1f545beb25f4f5945bf7", + "Requirements": [] + }, + "glue": { + "Package": "glue", + "Version": "1.6.2", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "4f2596dfb05dac67b9dc558e5c6fba2e", + "Requirements": [] + }, + "highr": { + "Package": "highr", + "Version": "0.8", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "4dc5bb88961e347a0f4d8aad597cbfac", + "Requirements": [] + }, + "htmltools": { + "Package": "htmltools", + "Version": "0.5.0", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "7d651b7131794fe007b1ad6f21aaa401", + "Requirements": [ + "base64enc", + "digest", + "rlang" + ] + }, + "htmlwidgets": { + "Package": "htmlwidgets", + "Version": "1.5.1", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "41bace23583fbc25089edae324de2dc3", + "Requirements": [ + "htmltools", + "jsonlite", + "yaml" + ] + }, + "httr": { + "Package": "httr", + "Version": "1.4.2", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "a525aba14184fec243f9eaec62fbed43", + "Requirements": [ + "R6", + "curl", + "jsonlite", + "mime", + "openssl" + ] + }, + "illuminaHumanv1.db": { + "Package": "illuminaHumanv1.db", + "Version": "1.26.0", + "Source": "URL", + "RemoteType": "url", + "RemoteUrl": "https://bioconductor.org/packages/3.11/data/annotation/src/contrib/illuminaHumanv1.db_1.26.0.tar.gz", + "Hash": "0a3a1bbd72e9e7fbaf45c2f526e0860b", + "Requirements": [ + "AnnotationDbi", + "org.Hs.eg.db" + ] + }, + "illuminaHumanv2.db": { + "Package": "illuminaHumanv2.db", + "Version": "1.26.0", + "Source": "URL", + "RemoteType": "url", + "RemoteUrl": "https://bioconductor.org/packages/3.11/data/annotation/src/contrib/illuminaHumanv2.db_1.26.0.tar.gz", + "Hash": "00bfc88c78a89609c090c452faba5463", + "Requirements": [ + "AnnotationDbi", + "org.Hs.eg.db" + ] + }, + "illuminaHumanv3.db": { + "Package": "illuminaHumanv3.db", + "Version": "1.26.0", + "Source": "URL", + "RemoteType": "url", + "RemoteUrl": "https://bioconductor.org/packages/3.11/data/annotation/src/contrib/illuminaHumanv3.db_1.26.0.tar.gz", + "Hash": "d9caa9d6721eaa23570c7ce120fb85e5", + "Requirements": [ + "AnnotationDbi", + "org.Hs.eg.db" + ] + }, + "illuminaHumanv4.db": { + "Package": "illuminaHumanv4.db", + "Version": "1.26.0", + "Source": "URL", + "RemoteType": "url", + "RemoteUrl": "https://bioconductor.org/packages/3.11/data/annotation/src/contrib/illuminaHumanv4.db_1.26.0.tar.gz", + "Hash": "f39df79d54bc50cc06091ef4c25bf68e", + "Requirements": [ + "AnnotationDbi", + "org.Hs.eg.db" + ] + }, + "illuminaMousev1.db": { + "Package": "illuminaMousev1.db", + "Version": "1.26.0", + "Source": "URL", + "RemoteType": "url", + "RemoteUrl": "https://bioconductor.org/packages/3.11/data/annotation/src/contrib/illuminaMousev1.db_1.26.0.tar.gz", + "Hash": "2ba4014bef28915740cb0a5cfe98cb8a", + "Requirements": [ + "AnnotationDbi", + "org.Mm.eg.db" + ] + }, + "illuminaMousev1p1.db": { + "Package": "illuminaMousev1p1.db", + "Version": "1.26.0", + "Source": "URL", + "RemoteType": "url", + "RemoteUrl": "https://bioconductor.org/packages/3.11/data/annotation/src/contrib/illuminaMousev1p1.db_1.26.0.tar.gz", + "Hash": "6ff4f1afb020fe555bb4869a3a3deae1", + "Requirements": [ + "AnnotationDbi", + "org.Mm.eg.db" + ] + }, + "illuminaMousev2.db": { + "Package": "illuminaMousev2.db", + "Version": "1.26.0", + "Source": "URL", + "RemoteType": "url", + "RemoteUrl": "https://bioconductor.org/packages/3.11/data/annotation/src/contrib/illuminaMousev2.db_1.26.0.tar.gz", + "Hash": "3c26b8c0fbbcbda9e0ac427474d17b88", + "Requirements": [ + "AnnotationDbi", + "org.Mm.eg.db" + ] + }, + "illuminaRatv1.db": { + "Package": "illuminaRatv1.db", + "Version": "1.26.0", + "Source": "URL", + "RemoteType": "url", + "RemoteUrl": "https://bioconductor.org/packages/3.11/data/annotation/src/contrib/illuminaRatv1.db_1.26.0.tar.gz", + "Hash": "3163ade3bc5aa76bcfb4e791b60db7f6", + "Requirements": [ + "AnnotationDbi", + "org.Rn.eg.db" + ] + }, + "ini": { + "Package": "ini", + "Version": "0.3.1", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "6154ec2223172bce8162d4153cda21f7", + "Requirements": [] + }, + "iterators": { + "Package": "iterators", + "Version": "1.0.10", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "02caec9a169f9344577950df8f70aaa8", + "Requirements": [] + }, + "jsonlite": { + "Package": "jsonlite", + "Version": "1.7.0", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "2657f20b9a74c996c602e74ebe540b06", + "Requirements": [] + }, + "knitr": { + "Package": "knitr", + "Version": "1.29", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "e5f4c41c17df8cdf7b0df12117c0d99a", + "Requirements": [ + "evaluate", + "highr", + "markdown", + "stringr", + "xfun", + "yaml" + ] + }, + "later": { + "Package": "later", + "Version": "1.1.0.1", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "d0a62b247165aabf397fded504660d8a", + "Requirements": [ + "BH", + "Rcpp", + "rlang" + ] + }, + "lattice": { + "Package": "lattice", + "Version": "0.20-45", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "b64cdbb2b340437c4ee047a1f4c4377b", + "Requirements": [] + }, + "lazyeval": { + "Package": "lazyeval", + "Version": "0.2.1", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "ea5964121f493fb3057e9887d424f634", + "Requirements": [] + }, + "lifecycle": { + "Package": "lifecycle", + "Version": "1.0.3", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "001cecbeac1cff9301bdc3775ee46a86", + "Requirements": [ + "cli", + "glue", + "rlang" + ] + }, + "magrittr": { + "Package": "magrittr", + "Version": "1.5", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "1bb58822a20301cee84a41678e25d9b7", + "Requirements": [] + }, + "markdown": { + "Package": "markdown", + "Version": "1.1", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "61e4a10781dd00d7d81dd06ca9b94e95", + "Requirements": [ + "mime", + "xfun" + ] + }, + "memoise": { + "Package": "memoise", + "Version": "1.1.0", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "58baa74e4603fcfb9a94401c58c8f9b1", + "Requirements": [ + "digest" + ] + }, + "mgcv": { + "Package": "mgcv", + "Version": "1.8-41", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "6b3904f13346742caa3e82dd0303d4ad", + "Requirements": [ + "Matrix", + "nlme" + ] + }, + "mime": { + "Package": "mime", + "Version": "0.9", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "e87a35ec73b157552814869f45a63aa3", + "Requirements": [] + }, + "nlme": { + "Package": "nlme", + "Version": "3.1-161", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "b49e163093c0ef46fbbfc40bcb87916c", + "Requirements": [ + "lattice" + ] + }, + "nnet": { + "Package": "nnet", + "Version": "7.3-18", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "170da2130d5332bea7d6ede01875ba1d", + "Requirements": [] + }, + "openssl": { + "Package": "openssl", + "Version": "1.4.2", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "b3209c62052922b6c629544d94c8fa8a", + "Requirements": [ + "askpass" + ] + }, + "optparse": { + "Package": "optparse", + "Version": "1.4.4", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "803e834713c77eda6c233965977b2c58", + "Requirements": [ + "getopt" + ] + }, + "org.Hs.eg.db": { + "Package": "org.Hs.eg.db", + "Version": "3.11.4", + "Source": "Bioconductor", + "Hash": "30e8ecad485994b19435671c36a36290", + "Requirements": [ + "AnnotationDbi" + ] + }, + "org.Mm.eg.db": { + "Package": "org.Mm.eg.db", + "Version": "3.11.4", + "Source": "Bioconductor", + "Hash": "133273535e42fadf1d244ef36e372811", + "Requirements": [ + "AnnotationDbi" + ] + }, + "org.Rn.eg.db": { + "Package": "org.Rn.eg.db", + "Version": "3.11.4", + "Source": "Bioconductor", + "Hash": "ed8c8527c724a46e6b446f7cc4d5f1bd", + "Requirements": [ + "AnnotationDbi" + ] + }, + "pillar": { + "Package": "pillar", + "Version": "1.8.1", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "f2316df30902c81729ae9de95ad5a608", + "Requirements": [ + "cli", + "fansi", + "glue", + "lifecycle", + "rlang", + "utf8", + "vctrs" + ] + }, + "pkgbuild": { + "Package": "pkgbuild", + "Version": "1.1.0", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "404684bc4e3685007f9720adf13b06c1", + "Requirements": [ + "R6", + "callr", + "cli", + "crayon", + "desc", + "prettyunits", + "rprojroot", + "withr" + ] + }, + "pkgconfig": { + "Package": "pkgconfig", + "Version": "2.0.2", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "f5940986fb19bcef52284068baeb3f29", + "Requirements": [] + }, + "pkgload": { + "Package": "pkgload", + "Version": "1.1.0", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "b6b150cd4709e0c0c9b5d51ac4376282", + "Requirements": [ + "cli", + "crayon", + "desc", + "pkgbuild", + "rlang", + "rprojroot", + "rstudioapi", + "withr" + ] + }, + "plogr": { + "Package": "plogr", + "Version": "0.2.0", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "09eb987710984fc2905c7129c7d85e65", + "Requirements": [] + }, + "plyr": { + "Package": "plyr", + "Version": "1.8.4", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "23026346e3e0f023f326919320627a01", + "Requirements": [ + "Rcpp" + ] + }, + "praise": { + "Package": "praise", + "Version": "1.0.0", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "a555924add98c99d2f411e37e7d25e9f", + "Requirements": [] + }, + "prettyunits": { + "Package": "prettyunits", + "Version": "1.0.2", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "f3c960f0105f2ed179460864979fc37c", + "Requirements": [ + "assertthat", + "magrittr" + ] + }, + "processx": { + "Package": "processx", + "Version": "3.4.3", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "f4f13345fcb00c51ace12f65dd18749f", + "Requirements": [ + "R6", + "ps" + ] + }, + "promises": { + "Package": "promises", + "Version": "1.1.1", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "a8730dcbdd19f9047774909f0ec214a4", + "Requirements": [ + "R6", + "Rcpp", + "later", + "magrittr", + "rlang" + ] + }, + "ps": { + "Package": "ps", + "Version": "1.3.3", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "425d938eb9c02906a8ac98c0c2a306b5", + "Requirements": [] + }, + "purrr": { + "Package": "purrr", + "Version": "0.3.3", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "22aca7d1181718e927d403a8c2d69d62", + "Requirements": [ + "magrittr", + "rlang" + ] + }, + "rcmdcheck": { + "Package": "rcmdcheck", + "Version": "1.3.3", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "ed95895886dab6d2a584da45503555da", + "Requirements": [ + "R6", + "callr", + "cli", + "crayon", + "desc", + "digest", + "pkgbuild", + "prettyunits", + "rprojroot", + "sessioninfo", + "withr", + "xopen" + ] + }, + "rematch2": { + "Package": "rematch2", + "Version": "2.1.2", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "76c9e04c712a05848ae7a23d2f170a40", + "Requirements": [ + "tibble" + ] + }, + "remotes": { + "Package": "remotes", + "Version": "2.2.0", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "430a0908aee75b1fcba0e62857cab0ce", + "Requirements": [] + }, + "renv": { + "Package": "renv", + "Version": "0.16.0", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "c9e8442ab69bc21c9697ecf856c1e6c7", + "Requirements": [] + }, + "reshape2": { + "Package": "reshape2", + "Version": "1.4.3", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "15a23ad30f51789188e439599559815c", + "Requirements": [ + "Rcpp", + "plyr", + "stringr" + ] + }, + "rex": { + "Package": "rex", + "Version": "1.2.0", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "093584b944440c5cd07a696b3c8e0e4c", + "Requirements": [ + "lazyeval" + ] + }, + "rlang": { + "Package": "rlang", + "Version": "1.0.6", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "4ed1f8336c8d52c3e750adcdc57228a7", + "Requirements": [] + }, + "roxygen2": { + "Package": "roxygen2", + "Version": "7.1.1", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "fcd94e00cc409b25d07ca50f7bf339f5", + "Requirements": [ + "R6", + "Rcpp", + "brew", + "commonmark", + "desc", + "digest", + "knitr", + "pkgload", + "purrr", + "rlang", + "stringi", + "stringr", + "xml2" + ] + }, + "rpart": { + "Package": "rpart", + "Version": "4.1.19", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "b3c892a81783376cc2204af0f5805a80", + "Requirements": [] + }, + "rprojroot": { + "Package": "rprojroot", + "Version": "1.3-2", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "f6a407ae5dd21f6f80a6708bbb6eb3ae", + "Requirements": [ + "backports" + ] + }, + "rstudioapi": { + "Package": "rstudioapi", + "Version": "0.11", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "33a5b27a03da82ac4b1d43268f80088a", + "Requirements": [] + }, + "rversions": { + "Package": "rversions", + "Version": "2.0.2", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "0ec41191f744d0f5afad8c6f35cc36e4", + "Requirements": [ + "curl", + "xml2" + ] + }, + "sessioninfo": { + "Package": "sessioninfo", + "Version": "1.1.1", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "308013098befe37484df72c39cf90d6e", + "Requirements": [ + "cli", + "withr" + ] + }, + "spatial": { + "Package": "spatial", + "Version": "7.3-11", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "f27a078d834614513608da2c08031130", + "Requirements": [] + }, + "stringi": { + "Package": "stringi", + "Version": "1.4.3", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "74a50760af835563fb2c124e66aa134e", + "Requirements": [] + }, + "stringr": { + "Package": "stringr", + "Version": "1.4.0", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "0759e6b6c0957edb1311028a49a35e76", + "Requirements": [ + "glue", + "magrittr", + "stringi" + ] + }, + "survival": { + "Package": "survival", + "Version": "3.4-0", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "04411ae66ab4659230c067c32966fc20", + "Requirements": [ + "Matrix" + ] + }, + "sys": { + "Package": "sys", + "Version": "3.4", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "b227d13e29222b4574486cfcbde077fa", + "Requirements": [] + }, + "testthat": { + "Package": "testthat", + "Version": "2.3.2", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "0829b987b8961fb07f3b1b64a2fbc495", + "Requirements": [ + "R6", + "cli", + "crayon", + "digest", + "ellipsis", + "evaluate", + "magrittr", + "pkgload", + "praise", + "rlang", + "withr" + ] + }, + "tibble": { + "Package": "tibble", + "Version": "3.1.8", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "56b6934ef0f8c68225949a8672fe1a8f", + "Requirements": [ + "fansi", + "lifecycle", + "magrittr", + "pillar", + "pkgconfig", + "rlang", + "vctrs" + ] + }, + "tidyselect": { + "Package": "tidyselect", + "Version": "1.2.0", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "79540e5fcd9e0435af547d885f184fd5", + "Requirements": [ + "cli", + "glue", + "lifecycle", + "rlang", + "vctrs", + "withr" + ] + }, + "usethis": { + "Package": "usethis", + "Version": "1.6.1", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "e1985f5a9985fea2e338fa7eb99018ca", + "Requirements": [ + "cli", + "clipr", + "crayon", + "curl", + "desc", + "fs", + "gh", + "git2r", + "glue", + "purrr", + "rematch2", + "rlang", + "rprojroot", + "rstudioapi", + "whisker", + "withr", + "yaml" + ] + }, + "utf8": { + "Package": "utf8", + "Version": "1.1.4", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "4a5081acfb7b81a572e4384a7aaf2af1", + "Requirements": [] + }, + "vctrs": { + "Package": "vctrs", + "Version": "0.5.1", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "970324f6572b4fd81db507b5d4062cb0", + "Requirements": [ + "cli", + "glue", + "lifecycle", + "rlang" + ] + }, + "whisker": { + "Package": "whisker", + "Version": "0.4", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "ca970b96d894e90397ed20637a0c1bbe", + "Requirements": [] + }, + "withr": { + "Package": "withr", + "Version": "2.2.0", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "ecd17882a0b4419545691e095b74ee89", + "Requirements": [] + }, + "xfun": { + "Package": "xfun", + "Version": "0.16", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "b4106139b90981a8bfea9c10bab0baf1", + "Requirements": [] + }, + "xml2": { + "Package": "xml2", + "Version": "1.3.2", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "d4d71a75dd3ea9eb5fa28cc21f9585e2", + "Requirements": [] + }, + "xopen": { + "Package": "xopen", + "Version": "1.0.0", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "6c85f015dee9cc7710ddd20f86881f58", + "Requirements": [ + "processx" + ] + }, + "yaml": { + "Package": "yaml", + "Version": "2.2.1", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "2826c5d9efb0a88f657c7a679c7106db", + "Requirements": [] + } + } +} diff --git a/workers/R/dependencies/salmon/renv.R b/workers/R/dependencies/salmon/renv.R new file mode 100644 index 000000000..9916bba22 --- /dev/null +++ b/workers/R/dependencies/salmon/renv.R @@ -0,0 +1,26 @@ +renv::install("getopt@1.20.3") +renv::install("optparse@1.4.4") +renv::install("rjson@0.2.19") +renv::install("R6@2.4.0") +renv::install("pkgconfig@2.0.2") +renv::install("cli@2.0.2") +renv::install("rlang@0.4.5") +renv::install("zeallot@0.1.0") +renv::install("backports@1.1.4") +renv::install("glue@1.3.1") +renv::install("digest@0.6.19") +renv::install("vctrs@0.1.0") +renv::install("hms@0.4.2") +renv::install("Rcpp@1.0.1") +renv::install("assertthat@0.2.1") +renv::install("crayon@1.3.4") +renv::install("cli@1.1.0") +renv::install("utf8@1.1.4") +renv::install("fansi@0.4.0") +renv::install("pillar@1.4.2") +renv::install("tibble@2.1.3") +renv::install("readr@1.1.1") + +renv::install( + "https://bioconductor.org/packages/3.11/bioc/src/contrib/tximport_1.16.1.tar.gz" +) diff --git a/workers/R/dependencies/salmon/renv.lock b/workers/R/dependencies/salmon/renv.lock new file mode 100644 index 000000000..8ce773ae5 --- /dev/null +++ b/workers/R/dependencies/salmon/renv.lock @@ -0,0 +1,1064 @@ +{ + "R": { + "Version": "3.6.3", + "Repositories": [ + { + "Name": "BioconductorAnnotation", + "URL": "https://bioconductor.org/packages/3.11/data/annotation" + }, + { + "Name": "BioconductorExperiment", + "URL": "https://bioconductor.org/packages/3.11/data/experiment" + }, + { + "Name": "CRAN", + "URL": "https://cloud.r-project.org" + } + ] + }, + "Packages": { + "BH": { + "Package": "BH", + "Version": "1.72.0-3", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "8f9ce74c6417d61f0782cbae5fd2b7b0", + "Requirements": [] + }, + "DT": { + "Package": "DT", + "Version": "0.14", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "a3580ce0309c94d061c23b0afb4accbd", + "Requirements": [ + "crosstalk", + "htmltools", + "htmlwidgets", + "jsonlite", + "magrittr", + "promises" + ] + }, + "KernSmooth": { + "Package": "KernSmooth", + "Version": "2.23-20", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "8dcfa99b14c296bc9f1fd64d52fd3ce7", + "Requirements": [] + }, + "MASS": { + "Package": "MASS", + "Version": "7.3-58", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "4bf2c61e656bbc238634c798c208d386", + "Requirements": [] + }, + "Matrix": { + "Package": "Matrix", + "Version": "1.5-1", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "539dc0c0c05636812f1080f473d2c177", + "Requirements": [ + "lattice" + ] + }, + "R6": { + "Package": "R6", + "Version": "2.4.0", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "d4618c4cb36bc46831551c5d85815818", + "Requirements": [] + }, + "Rcpp": { + "Package": "Rcpp", + "Version": "1.0.1", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "d5ae8445d4972caed1c5517ffae908d7", + "Requirements": [] + }, + "askpass": { + "Package": "askpass", + "Version": "1.1", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "e8a22846fff485f0be3770c2da758713", + "Requirements": [ + "sys" + ] + }, + "assertthat": { + "Package": "assertthat", + "Version": "0.2.1", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "50c838a310445e954bc13f26f26a6ecf", + "Requirements": [] + }, + "backports": { + "Package": "backports", + "Version": "1.1.4", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "b9a4db2667d7e43d197ed12e40781889", + "Requirements": [] + }, + "base64enc": { + "Package": "base64enc", + "Version": "0.1-3", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "543776ae6848fde2f48ff3816d0628bc", + "Requirements": [] + }, + "boot": { + "Package": "boot", + "Version": "1.3-28", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "0baa960e3b49c6176a4f42addcbacc59", + "Requirements": [] + }, + "brew": { + "Package": "brew", + "Version": "1.0-6", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "92a5f887f9ae3035ac7afde22ba73ee9", + "Requirements": [] + }, + "callr": { + "Package": "callr", + "Version": "3.4.3", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "643163a00cb536454c624883a10ae0bc", + "Requirements": [ + "R6", + "processx" + ] + }, + "class": { + "Package": "class", + "Version": "7.3-20", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "da09d82223e669d270e47ed24ac8686e", + "Requirements": [ + "MASS" + ] + }, + "cli": { + "Package": "cli", + "Version": "2.0.2", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "ff0becff7bfdfe3f75d29aff8f3172dd", + "Requirements": [ + "assertthat", + "crayon", + "fansi", + "glue" + ] + }, + "clipr": { + "Package": "clipr", + "Version": "0.7.0", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "08cf4045c149a0f0eaf405324c7495bd", + "Requirements": [] + }, + "cluster": { + "Package": "cluster", + "Version": "2.1.4", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "5edbbabab6ce0bf7900a74fd4358628e", + "Requirements": [] + }, + "codetools": { + "Package": "codetools", + "Version": "0.2-18", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "019388fc48e48b3da0d3a76ff94608a8", + "Requirements": [] + }, + "commonmark": { + "Package": "commonmark", + "Version": "1.7", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "0f22be39ec1d141fd03683c06f3a6e67", + "Requirements": [] + }, + "covr": { + "Package": "covr", + "Version": "3.5.0", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "cbc6df1ef6ee576f844f973c1fc04ab4", + "Requirements": [ + "crayon", + "digest", + "httr", + "jsonlite", + "rex", + "withr", + "yaml" + ] + }, + "crayon": { + "Package": "crayon", + "Version": "1.3.4", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "0d57bc8e27b7ba9e45dba825ebc0de6b", + "Requirements": [] + }, + "crosstalk": { + "Package": "crosstalk", + "Version": "1.1.0.1", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "ae55f5d7c02f0ab43c58dd050694f2b4", + "Requirements": [ + "R6", + "htmltools", + "jsonlite", + "lazyeval" + ] + }, + "curl": { + "Package": "curl", + "Version": "4.3", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "2b7d10581cc730804e9ed178c8374bd6", + "Requirements": [] + }, + "desc": { + "Package": "desc", + "Version": "1.2.0", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "6c8fe8fa26a23b79949375d372c7b395", + "Requirements": [ + "R6", + "assertthat", + "crayon", + "rprojroot" + ] + }, + "devtools": { + "Package": "devtools", + "Version": "2.3.1", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "271df6a328617c64149283e98b1cd8da", + "Requirements": [ + "DT", + "callr", + "cli", + "covr", + "desc", + "ellipsis", + "httr", + "jsonlite", + "memoise", + "pkgbuild", + "pkgload", + "rcmdcheck", + "remotes", + "rlang", + "roxygen2", + "rstudioapi", + "rversions", + "sessioninfo", + "testthat", + "usethis", + "withr" + ] + }, + "digest": { + "Package": "digest", + "Version": "0.6.19", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "2ac7f712959404638ccb1977809eabdd", + "Requirements": [] + }, + "ellipsis": { + "Package": "ellipsis", + "Version": "0.3.1", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "fd2844b3a43ae2d27e70ece2df1b4e2a", + "Requirements": [ + "rlang" + ] + }, + "evaluate": { + "Package": "evaluate", + "Version": "0.14", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "ec8ca05cffcc70569eaaad8469d2a3a7", + "Requirements": [] + }, + "fansi": { + "Package": "fansi", + "Version": "0.4.0", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "b31d9e5d051553d1177083aeba04b5b9", + "Requirements": [] + }, + "foreign": { + "Package": "foreign", + "Version": "0.8-76", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "649b9c7a979d50d869578c73fed072cd", + "Requirements": [] + }, + "fs": { + "Package": "fs", + "Version": "1.4.2", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "8c04112383ca1988e96f429255f95675", + "Requirements": [] + }, + "getopt": { + "Package": "getopt", + "Version": "1.20.3", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "ad68e3263f0bc9269aab8c2039440117", + "Requirements": [] + }, + "gh": { + "Package": "gh", + "Version": "1.1.0", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "89ea5998938d1ad55f035c8a86f96b74", + "Requirements": [ + "cli", + "httr", + "ini", + "jsonlite" + ] + }, + "git2r": { + "Package": "git2r", + "Version": "0.27.1", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "531a82d1beed1f545beb25f4f5945bf7", + "Requirements": [] + }, + "glue": { + "Package": "glue", + "Version": "1.3.1", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "d4e25697c450c01b202c79ef35694a83", + "Requirements": [] + }, + "highr": { + "Package": "highr", + "Version": "0.8", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "4dc5bb88961e347a0f4d8aad597cbfac", + "Requirements": [] + }, + "hms": { + "Package": "hms", + "Version": "0.4.2", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "b1d40b416da234147d5869a009458702", + "Requirements": [ + "pkgconfig", + "rlang" + ] + }, + "htmltools": { + "Package": "htmltools", + "Version": "0.5.0", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "7d651b7131794fe007b1ad6f21aaa401", + "Requirements": [ + "base64enc", + "digest", + "rlang" + ] + }, + "htmlwidgets": { + "Package": "htmlwidgets", + "Version": "1.5.1", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "41bace23583fbc25089edae324de2dc3", + "Requirements": [ + "htmltools", + "jsonlite", + "yaml" + ] + }, + "httr": { + "Package": "httr", + "Version": "1.4.2", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "a525aba14184fec243f9eaec62fbed43", + "Requirements": [ + "R6", + "curl", + "jsonlite", + "mime", + "openssl" + ] + }, + "ini": { + "Package": "ini", + "Version": "0.3.1", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "6154ec2223172bce8162d4153cda21f7", + "Requirements": [] + }, + "jsonlite": { + "Package": "jsonlite", + "Version": "1.7.0", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "2657f20b9a74c996c602e74ebe540b06", + "Requirements": [] + }, + "knitr": { + "Package": "knitr", + "Version": "1.29", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "e5f4c41c17df8cdf7b0df12117c0d99a", + "Requirements": [ + "evaluate", + "highr", + "markdown", + "stringr", + "xfun", + "yaml" + ] + }, + "later": { + "Package": "later", + "Version": "1.1.0.1", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "d0a62b247165aabf397fded504660d8a", + "Requirements": [ + "BH", + "Rcpp", + "rlang" + ] + }, + "lattice": { + "Package": "lattice", + "Version": "0.20-45", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "b64cdbb2b340437c4ee047a1f4c4377b", + "Requirements": [] + }, + "lazyeval": { + "Package": "lazyeval", + "Version": "0.2.2", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "d908914ae53b04d4c0c0fd72ecc35370", + "Requirements": [] + }, + "lifecycle": { + "Package": "lifecycle", + "Version": "0.2.0", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "361811f31f71f8a617a9a68bf63f1f42", + "Requirements": [ + "glue", + "rlang" + ] + }, + "magrittr": { + "Package": "magrittr", + "Version": "1.5", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "1bb58822a20301cee84a41678e25d9b7", + "Requirements": [] + }, + "markdown": { + "Package": "markdown", + "Version": "1.1", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "61e4a10781dd00d7d81dd06ca9b94e95", + "Requirements": [ + "mime", + "xfun" + ] + }, + "memoise": { + "Package": "memoise", + "Version": "1.1.0", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "58baa74e4603fcfb9a94401c58c8f9b1", + "Requirements": [ + "digest" + ] + }, + "mgcv": { + "Package": "mgcv", + "Version": "1.8-41", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "6b3904f13346742caa3e82dd0303d4ad", + "Requirements": [ + "Matrix", + "nlme" + ] + }, + "mime": { + "Package": "mime", + "Version": "0.9", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "e87a35ec73b157552814869f45a63aa3", + "Requirements": [] + }, + "nlme": { + "Package": "nlme", + "Version": "3.1-161", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "b49e163093c0ef46fbbfc40bcb87916c", + "Requirements": [ + "lattice" + ] + }, + "nnet": { + "Package": "nnet", + "Version": "7.3-18", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "170da2130d5332bea7d6ede01875ba1d", + "Requirements": [] + }, + "openssl": { + "Package": "openssl", + "Version": "1.4.2", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "b3209c62052922b6c629544d94c8fa8a", + "Requirements": [ + "askpass" + ] + }, + "optparse": { + "Package": "optparse", + "Version": "1.4.4", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "803e834713c77eda6c233965977b2c58", + "Requirements": [ + "getopt" + ] + }, + "pillar": { + "Package": "pillar", + "Version": "1.4.2", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "9f20924c27aee3d09296c22fb84bc9de", + "Requirements": [ + "cli", + "crayon", + "fansi", + "rlang", + "utf8", + "vctrs" + ] + }, + "pkgbuild": { + "Package": "pkgbuild", + "Version": "1.1.0", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "404684bc4e3685007f9720adf13b06c1", + "Requirements": [ + "R6", + "callr", + "cli", + "crayon", + "desc", + "prettyunits", + "rprojroot", + "withr" + ] + }, + "pkgconfig": { + "Package": "pkgconfig", + "Version": "2.0.2", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "f5940986fb19bcef52284068baeb3f29", + "Requirements": [] + }, + "pkgload": { + "Package": "pkgload", + "Version": "1.1.0", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "b6b150cd4709e0c0c9b5d51ac4376282", + "Requirements": [ + "cli", + "crayon", + "desc", + "pkgbuild", + "rlang", + "rprojroot", + "rstudioapi", + "withr" + ] + }, + "praise": { + "Package": "praise", + "Version": "1.0.0", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "a555924add98c99d2f411e37e7d25e9f", + "Requirements": [] + }, + "prettyunits": { + "Package": "prettyunits", + "Version": "1.1.1", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "95ef9167b75dde9d2ccc3c7528393e7e", + "Requirements": [] + }, + "processx": { + "Package": "processx", + "Version": "3.4.3", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "f4f13345fcb00c51ace12f65dd18749f", + "Requirements": [ + "R6", + "ps" + ] + }, + "promises": { + "Package": "promises", + "Version": "1.1.1", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "a8730dcbdd19f9047774909f0ec214a4", + "Requirements": [ + "R6", + "Rcpp", + "later", + "magrittr", + "rlang" + ] + }, + "ps": { + "Package": "ps", + "Version": "1.3.3", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "425d938eb9c02906a8ac98c0c2a306b5", + "Requirements": [] + }, + "purrr": { + "Package": "purrr", + "Version": "0.3.4", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "97def703420c8ab10d8f0e6c72101e02", + "Requirements": [ + "magrittr", + "rlang" + ] + }, + "rcmdcheck": { + "Package": "rcmdcheck", + "Version": "1.3.3", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "ed95895886dab6d2a584da45503555da", + "Requirements": [ + "R6", + "callr", + "cli", + "crayon", + "desc", + "digest", + "pkgbuild", + "prettyunits", + "rprojroot", + "sessioninfo", + "withr", + "xopen" + ] + }, + "readr": { + "Package": "readr", + "Version": "1.1.1", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "74f9b53b37192cbcff9ec6d04fce0844", + "Requirements": [ + "BH", + "R6", + "Rcpp", + "hms", + "tibble" + ] + }, + "rematch2": { + "Package": "rematch2", + "Version": "2.1.2", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "76c9e04c712a05848ae7a23d2f170a40", + "Requirements": [ + "tibble" + ] + }, + "remotes": { + "Package": "remotes", + "Version": "2.2.0", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "430a0908aee75b1fcba0e62857cab0ce", + "Requirements": [] + }, + "renv": { + "Package": "renv", + "Version": "0.16.0", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "c9e8442ab69bc21c9697ecf856c1e6c7", + "Requirements": [] + }, + "rex": { + "Package": "rex", + "Version": "1.2.0", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "093584b944440c5cd07a696b3c8e0e4c", + "Requirements": [ + "lazyeval" + ] + }, + "rjson": { + "Package": "rjson", + "Version": "0.2.19", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "1ea7e20c916450aea884e225787b9de4", + "Requirements": [] + }, + "rlang": { + "Package": "rlang", + "Version": "0.4.5", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "1cc1b38e4db40ea6eb19ab8080bbed3b", + "Requirements": [] + }, + "roxygen2": { + "Package": "roxygen2", + "Version": "7.1.1", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "fcd94e00cc409b25d07ca50f7bf339f5", + "Requirements": [ + "R6", + "Rcpp", + "brew", + "commonmark", + "desc", + "digest", + "knitr", + "pkgload", + "purrr", + "rlang", + "stringi", + "stringr", + "xml2" + ] + }, + "rpart": { + "Package": "rpart", + "Version": "4.1.19", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "b3c892a81783376cc2204af0f5805a80", + "Requirements": [] + }, + "rprojroot": { + "Package": "rprojroot", + "Version": "1.3-2", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "f6a407ae5dd21f6f80a6708bbb6eb3ae", + "Requirements": [ + "backports" + ] + }, + "rstudioapi": { + "Package": "rstudioapi", + "Version": "0.11", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "33a5b27a03da82ac4b1d43268f80088a", + "Requirements": [] + }, + "rversions": { + "Package": "rversions", + "Version": "2.0.2", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "0ec41191f744d0f5afad8c6f35cc36e4", + "Requirements": [ + "curl", + "xml2" + ] + }, + "sessioninfo": { + "Package": "sessioninfo", + "Version": "1.1.1", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "308013098befe37484df72c39cf90d6e", + "Requirements": [ + "cli", + "withr" + ] + }, + "spatial": { + "Package": "spatial", + "Version": "7.3-11", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "f27a078d834614513608da2c08031130", + "Requirements": [] + }, + "stringi": { + "Package": "stringi", + "Version": "1.4.6", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "e99d8d656980d2dd416a962ae55aec90", + "Requirements": [] + }, + "stringr": { + "Package": "stringr", + "Version": "1.4.0", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "0759e6b6c0957edb1311028a49a35e76", + "Requirements": [ + "glue", + "magrittr", + "stringi" + ] + }, + "survival": { + "Package": "survival", + "Version": "3.4-0", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "04411ae66ab4659230c067c32966fc20", + "Requirements": [ + "Matrix" + ] + }, + "sys": { + "Package": "sys", + "Version": "3.4", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "b227d13e29222b4574486cfcbde077fa", + "Requirements": [] + }, + "testthat": { + "Package": "testthat", + "Version": "2.3.2", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "0829b987b8961fb07f3b1b64a2fbc495", + "Requirements": [ + "R6", + "cli", + "crayon", + "digest", + "ellipsis", + "evaluate", + "magrittr", + "pkgload", + "praise", + "rlang", + "withr" + ] + }, + "tibble": { + "Package": "tibble", + "Version": "2.1.3", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "8248ee35d1e15d1e506f05f5a5d46a75", + "Requirements": [ + "cli", + "crayon", + "fansi", + "pillar", + "pkgconfig", + "rlang" + ] + }, + "tximport": { + "Package": "tximport", + "Version": "1.16.1", + "Source": "URL", + "RemoteType": "url", + "RemoteUrl": "https://bioconductor.org/packages/3.11/bioc/src/contrib/tximport_1.16.1.tar.gz", + "git_url": "https://git.bioconductor.org/packages/tximport", + "git_branch": "RELEASE_3_11", + "git_last_commit": "a4fe5d3", + "git_last_commit_date": "2020-06-05", + "Hash": "f75925813c3e168c8d5ec5c41e645d71", + "Requirements": [] + }, + "usethis": { + "Package": "usethis", + "Version": "1.6.1", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "e1985f5a9985fea2e338fa7eb99018ca", + "Requirements": [ + "cli", + "clipr", + "crayon", + "curl", + "desc", + "fs", + "gh", + "git2r", + "glue", + "purrr", + "rematch2", + "rlang", + "rprojroot", + "rstudioapi", + "whisker", + "withr", + "yaml" + ] + }, + "utf8": { + "Package": "utf8", + "Version": "1.1.4", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "4a5081acfb7b81a572e4384a7aaf2af1", + "Requirements": [] + }, + "vctrs": { + "Package": "vctrs", + "Version": "0.1.0", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "35e5495dca3cf9aa5c89f0b4e6865cf3", + "Requirements": [ + "backports", + "digest", + "glue", + "rlang", + "zeallot" + ] + }, + "whisker": { + "Package": "whisker", + "Version": "0.4", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "ca970b96d894e90397ed20637a0c1bbe", + "Requirements": [] + }, + "withr": { + "Package": "withr", + "Version": "2.2.0", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "ecd17882a0b4419545691e095b74ee89", + "Requirements": [] + }, + "xfun": { + "Package": "xfun", + "Version": "0.16", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "b4106139b90981a8bfea9c10bab0baf1", + "Requirements": [] + }, + "xml2": { + "Package": "xml2", + "Version": "1.3.2", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "d4d71a75dd3ea9eb5fa28cc21f9585e2", + "Requirements": [] + }, + "xopen": { + "Package": "xopen", + "Version": "1.0.0", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "6c85f015dee9cc7710ddd20f86881f58", + "Requirements": [ + "processx" + ] + }, + "yaml": { + "Package": "yaml", + "Version": "2.2.1", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "2826c5d9efb0a88f657c7a679c7106db", + "Requirements": [] + }, + "zeallot": { + "Package": "zeallot", + "Version": "0.1.0", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "ee9b643aa8331c45d8d82eb3a137c9bc", + "Requirements": [] + } + } +} diff --git a/workers/R/dependencies/smasher/renv.R b/workers/R/dependencies/smasher/renv.R new file mode 100644 index 000000000..b98ee6b62 --- /dev/null +++ b/workers/R/dependencies/smasher/renv.R @@ -0,0 +1,12 @@ +renv::install("codetools@0.2-15") +renv::install("iterators@1.0.10") +renv::install("foreach@1.4.4") +renv::install("doParallel@1.0.11") +renv::install("data.table@1.11.0") +renv::install("getopt@1.20.3") +renv::install("optparse@1.4.4") +renv::install("lazyeval@0.2.1") + +renv::install( + "https://bioconductor.org/packages/3.11/bioc/src/contrib/preprocessCore_1.50.0.tar.gz" +) diff --git a/workers/R/dependencies/smasher/renv.lock b/workers/R/dependencies/smasher/renv.lock new file mode 100644 index 000000000..9a191bf8e --- /dev/null +++ b/workers/R/dependencies/smasher/renv.lock @@ -0,0 +1,1066 @@ +{ + "R": { + "Version": "3.6.3", + "Repositories": [ + { + "Name": "BioconductorAnnotation", + "URL": "https://bioconductor.org/packages/3.11/data/annotation" + }, + { + "Name": "BioconductorExperiment", + "URL": "https://bioconductor.org/packages/3.11/data/experiment" + }, + { + "Name": "CRAN", + "URL": "https://cloud.r-project.org" + } + ] + }, + "Packages": { + "BH": { + "Package": "BH", + "Version": "1.72.0-3", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "8f9ce74c6417d61f0782cbae5fd2b7b0", + "Requirements": [] + }, + "DT": { + "Package": "DT", + "Version": "0.14", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "a3580ce0309c94d061c23b0afb4accbd", + "Requirements": [ + "crosstalk", + "htmltools", + "htmlwidgets", + "jsonlite", + "magrittr", + "promises" + ] + }, + "KernSmooth": { + "Package": "KernSmooth", + "Version": "2.23-20", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "8dcfa99b14c296bc9f1fd64d52fd3ce7", + "Requirements": [] + }, + "MASS": { + "Package": "MASS", + "Version": "7.3-58", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "4bf2c61e656bbc238634c798c208d386", + "Requirements": [] + }, + "Matrix": { + "Package": "Matrix", + "Version": "1.5-1", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "539dc0c0c05636812f1080f473d2c177", + "Requirements": [ + "lattice" + ] + }, + "R6": { + "Package": "R6", + "Version": "2.4.1", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "292b54f8f4b94669b08f94e5acce6be2", + "Requirements": [] + }, + "Rcpp": { + "Package": "Rcpp", + "Version": "1.0.5", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "125dc7a0ed375eb68c0ce533b48d291f", + "Requirements": [] + }, + "askpass": { + "Package": "askpass", + "Version": "1.1", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "e8a22846fff485f0be3770c2da758713", + "Requirements": [ + "sys" + ] + }, + "assertthat": { + "Package": "assertthat", + "Version": "0.2.1", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "50c838a310445e954bc13f26f26a6ecf", + "Requirements": [] + }, + "backports": { + "Package": "backports", + "Version": "1.1.8", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "3ef0eac19317fd03c0c854aed581d473", + "Requirements": [] + }, + "base64enc": { + "Package": "base64enc", + "Version": "0.1-3", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "543776ae6848fde2f48ff3816d0628bc", + "Requirements": [] + }, + "boot": { + "Package": "boot", + "Version": "1.3-28", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "0baa960e3b49c6176a4f42addcbacc59", + "Requirements": [] + }, + "brew": { + "Package": "brew", + "Version": "1.0-6", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "92a5f887f9ae3035ac7afde22ba73ee9", + "Requirements": [] + }, + "callr": { + "Package": "callr", + "Version": "3.4.3", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "643163a00cb536454c624883a10ae0bc", + "Requirements": [ + "R6", + "processx" + ] + }, + "class": { + "Package": "class", + "Version": "7.3-20", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "da09d82223e669d270e47ed24ac8686e", + "Requirements": [ + "MASS" + ] + }, + "cli": { + "Package": "cli", + "Version": "2.0.2", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "ff0becff7bfdfe3f75d29aff8f3172dd", + "Requirements": [ + "assertthat", + "crayon", + "fansi", + "glue" + ] + }, + "clipr": { + "Package": "clipr", + "Version": "0.7.0", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "08cf4045c149a0f0eaf405324c7495bd", + "Requirements": [] + }, + "cluster": { + "Package": "cluster", + "Version": "2.1.4", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "5edbbabab6ce0bf7900a74fd4358628e", + "Requirements": [] + }, + "codetools": { + "Package": "codetools", + "Version": "0.2-15", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "9f88e0b246d1b22d1a88b9aa4ea57ebd", + "Requirements": [] + }, + "commonmark": { + "Package": "commonmark", + "Version": "1.7", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "0f22be39ec1d141fd03683c06f3a6e67", + "Requirements": [] + }, + "covr": { + "Package": "covr", + "Version": "3.5.0", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "cbc6df1ef6ee576f844f973c1fc04ab4", + "Requirements": [ + "crayon", + "digest", + "httr", + "jsonlite", + "rex", + "withr", + "yaml" + ] + }, + "crayon": { + "Package": "crayon", + "Version": "1.3.4", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "0d57bc8e27b7ba9e45dba825ebc0de6b", + "Requirements": [] + }, + "crosstalk": { + "Package": "crosstalk", + "Version": "1.1.0.1", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "ae55f5d7c02f0ab43c58dd050694f2b4", + "Requirements": [ + "R6", + "htmltools", + "jsonlite", + "lazyeval" + ] + }, + "curl": { + "Package": "curl", + "Version": "4.3", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "2b7d10581cc730804e9ed178c8374bd6", + "Requirements": [] + }, + "data.table": { + "Package": "data.table", + "Version": "1.11.0", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "e3c68af9852f074f4895ba72b2e65b0f", + "Requirements": [] + }, + "desc": { + "Package": "desc", + "Version": "1.2.0", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "6c8fe8fa26a23b79949375d372c7b395", + "Requirements": [ + "R6", + "assertthat", + "crayon", + "rprojroot" + ] + }, + "devtools": { + "Package": "devtools", + "Version": "2.3.1", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "271df6a328617c64149283e98b1cd8da", + "Requirements": [ + "DT", + "callr", + "cli", + "covr", + "desc", + "ellipsis", + "httr", + "jsonlite", + "memoise", + "pkgbuild", + "pkgload", + "rcmdcheck", + "remotes", + "rlang", + "roxygen2", + "rstudioapi", + "rversions", + "sessioninfo", + "testthat", + "usethis", + "withr" + ] + }, + "digest": { + "Package": "digest", + "Version": "0.6.25", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "f697db7d92b7028c4b3436e9603fb636", + "Requirements": [] + }, + "doParallel": { + "Package": "doParallel", + "Version": "1.0.11", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "b96d7b9fff2027367cc36de12e6bf6a1", + "Requirements": [ + "foreach", + "iterators" + ] + }, + "ellipsis": { + "Package": "ellipsis", + "Version": "0.3.1", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "fd2844b3a43ae2d27e70ece2df1b4e2a", + "Requirements": [ + "rlang" + ] + }, + "evaluate": { + "Package": "evaluate", + "Version": "0.14", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "ec8ca05cffcc70569eaaad8469d2a3a7", + "Requirements": [] + }, + "fansi": { + "Package": "fansi", + "Version": "0.4.1", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "7fce217eaaf8016e72065e85c73027b5", + "Requirements": [] + }, + "foreach": { + "Package": "foreach", + "Version": "1.4.4", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "c179d1dd8abd4b888214d44f4de2359a", + "Requirements": [ + "codetools", + "iterators" + ] + }, + "foreign": { + "Package": "foreign", + "Version": "0.8-76", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "649b9c7a979d50d869578c73fed072cd", + "Requirements": [] + }, + "fs": { + "Package": "fs", + "Version": "1.4.2", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "8c04112383ca1988e96f429255f95675", + "Requirements": [] + }, + "getopt": { + "Package": "getopt", + "Version": "1.20.3", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "ad68e3263f0bc9269aab8c2039440117", + "Requirements": [] + }, + "gh": { + "Package": "gh", + "Version": "1.1.0", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "89ea5998938d1ad55f035c8a86f96b74", + "Requirements": [ + "cli", + "httr", + "ini", + "jsonlite" + ] + }, + "git2r": { + "Package": "git2r", + "Version": "0.27.1", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "531a82d1beed1f545beb25f4f5945bf7", + "Requirements": [] + }, + "glue": { + "Package": "glue", + "Version": "1.4.1", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "f43e0d5e85ccb0a4045670c0607ee504", + "Requirements": [] + }, + "highr": { + "Package": "highr", + "Version": "0.8", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "4dc5bb88961e347a0f4d8aad597cbfac", + "Requirements": [] + }, + "htmltools": { + "Package": "htmltools", + "Version": "0.5.0", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "7d651b7131794fe007b1ad6f21aaa401", + "Requirements": [ + "base64enc", + "digest", + "rlang" + ] + }, + "htmlwidgets": { + "Package": "htmlwidgets", + "Version": "1.5.1", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "41bace23583fbc25089edae324de2dc3", + "Requirements": [ + "htmltools", + "jsonlite", + "yaml" + ] + }, + "httr": { + "Package": "httr", + "Version": "1.4.2", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "a525aba14184fec243f9eaec62fbed43", + "Requirements": [ + "R6", + "curl", + "jsonlite", + "mime", + "openssl" + ] + }, + "ini": { + "Package": "ini", + "Version": "0.3.1", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "6154ec2223172bce8162d4153cda21f7", + "Requirements": [] + }, + "iterators": { + "Package": "iterators", + "Version": "1.0.10", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "02caec9a169f9344577950df8f70aaa8", + "Requirements": [] + }, + "jsonlite": { + "Package": "jsonlite", + "Version": "1.7.0", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "2657f20b9a74c996c602e74ebe540b06", + "Requirements": [] + }, + "knitr": { + "Package": "knitr", + "Version": "1.29", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "e5f4c41c17df8cdf7b0df12117c0d99a", + "Requirements": [ + "evaluate", + "highr", + "markdown", + "stringr", + "xfun", + "yaml" + ] + }, + "later": { + "Package": "later", + "Version": "1.1.0.1", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "d0a62b247165aabf397fded504660d8a", + "Requirements": [ + "BH", + "Rcpp", + "rlang" + ] + }, + "lattice": { + "Package": "lattice", + "Version": "0.20-45", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "b64cdbb2b340437c4ee047a1f4c4377b", + "Requirements": [] + }, + "lazyeval": { + "Package": "lazyeval", + "Version": "0.2.1", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "ea5964121f493fb3057e9887d424f634", + "Requirements": [] + }, + "lifecycle": { + "Package": "lifecycle", + "Version": "0.2.0", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "361811f31f71f8a617a9a68bf63f1f42", + "Requirements": [ + "glue", + "rlang" + ] + }, + "magrittr": { + "Package": "magrittr", + "Version": "1.5", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "1bb58822a20301cee84a41678e25d9b7", + "Requirements": [] + }, + "markdown": { + "Package": "markdown", + "Version": "1.1", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "61e4a10781dd00d7d81dd06ca9b94e95", + "Requirements": [ + "mime", + "xfun" + ] + }, + "memoise": { + "Package": "memoise", + "Version": "1.1.0", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "58baa74e4603fcfb9a94401c58c8f9b1", + "Requirements": [ + "digest" + ] + }, + "mgcv": { + "Package": "mgcv", + "Version": "1.8-41", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "6b3904f13346742caa3e82dd0303d4ad", + "Requirements": [ + "Matrix", + "nlme" + ] + }, + "mime": { + "Package": "mime", + "Version": "0.9", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "e87a35ec73b157552814869f45a63aa3", + "Requirements": [] + }, + "nlme": { + "Package": "nlme", + "Version": "3.1-161", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "b49e163093c0ef46fbbfc40bcb87916c", + "Requirements": [ + "lattice" + ] + }, + "nnet": { + "Package": "nnet", + "Version": "7.3-18", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "170da2130d5332bea7d6ede01875ba1d", + "Requirements": [] + }, + "openssl": { + "Package": "openssl", + "Version": "1.4.2", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "b3209c62052922b6c629544d94c8fa8a", + "Requirements": [ + "askpass" + ] + }, + "optparse": { + "Package": "optparse", + "Version": "1.4.4", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "803e834713c77eda6c233965977b2c58", + "Requirements": [ + "getopt" + ] + }, + "pillar": { + "Package": "pillar", + "Version": "1.4.6", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "bdf26e55ccb7df3e49a490150277f002", + "Requirements": [ + "cli", + "crayon", + "ellipsis", + "fansi", + "lifecycle", + "rlang", + "utf8", + "vctrs" + ] + }, + "pkgbuild": { + "Package": "pkgbuild", + "Version": "1.1.0", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "404684bc4e3685007f9720adf13b06c1", + "Requirements": [ + "R6", + "callr", + "cli", + "crayon", + "desc", + "prettyunits", + "rprojroot", + "withr" + ] + }, + "pkgconfig": { + "Package": "pkgconfig", + "Version": "2.0.3", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "01f28d4278f15c76cddbea05899c5d6f", + "Requirements": [] + }, + "pkgload": { + "Package": "pkgload", + "Version": "1.1.0", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "b6b150cd4709e0c0c9b5d51ac4376282", + "Requirements": [ + "cli", + "crayon", + "desc", + "pkgbuild", + "rlang", + "rprojroot", + "rstudioapi", + "withr" + ] + }, + "praise": { + "Package": "praise", + "Version": "1.0.0", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "a555924add98c99d2f411e37e7d25e9f", + "Requirements": [] + }, + "preprocessCore": { + "Package": "preprocessCore", + "Version": "1.50.0", + "Source": "URL", + "RemoteType": "url", + "RemoteUrl": "https://bioconductor.org/packages/3.11/bioc/src/contrib/preprocessCore_1.50.0.tar.gz", + "git_url": "https://git.bioconductor.org/packages/preprocessCore", + "git_branch": "RELEASE_3_11", + "git_last_commit": "9230366", + "git_last_commit_date": "2020-04-27", + "Hash": "4d183aca4311a7610cb96d14e528e73e", + "Requirements": [] + }, + "prettyunits": { + "Package": "prettyunits", + "Version": "1.1.1", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "95ef9167b75dde9d2ccc3c7528393e7e", + "Requirements": [] + }, + "processx": { + "Package": "processx", + "Version": "3.4.3", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "f4f13345fcb00c51ace12f65dd18749f", + "Requirements": [ + "R6", + "ps" + ] + }, + "promises": { + "Package": "promises", + "Version": "1.1.1", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "a8730dcbdd19f9047774909f0ec214a4", + "Requirements": [ + "R6", + "Rcpp", + "later", + "magrittr", + "rlang" + ] + }, + "ps": { + "Package": "ps", + "Version": "1.3.3", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "425d938eb9c02906a8ac98c0c2a306b5", + "Requirements": [] + }, + "purrr": { + "Package": "purrr", + "Version": "0.3.4", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "97def703420c8ab10d8f0e6c72101e02", + "Requirements": [ + "magrittr", + "rlang" + ] + }, + "rcmdcheck": { + "Package": "rcmdcheck", + "Version": "1.3.3", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "ed95895886dab6d2a584da45503555da", + "Requirements": [ + "R6", + "callr", + "cli", + "crayon", + "desc", + "digest", + "pkgbuild", + "prettyunits", + "rprojroot", + "sessioninfo", + "withr", + "xopen" + ] + }, + "rematch2": { + "Package": "rematch2", + "Version": "2.1.2", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "76c9e04c712a05848ae7a23d2f170a40", + "Requirements": [ + "tibble" + ] + }, + "remotes": { + "Package": "remotes", + "Version": "2.2.0", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "430a0908aee75b1fcba0e62857cab0ce", + "Requirements": [] + }, + "renv": { + "Package": "renv", + "Version": "0.16.0", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "c9e8442ab69bc21c9697ecf856c1e6c7", + "Requirements": [] + }, + "rex": { + "Package": "rex", + "Version": "1.2.0", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "093584b944440c5cd07a696b3c8e0e4c", + "Requirements": [ + "lazyeval" + ] + }, + "rlang": { + "Package": "rlang", + "Version": "0.4.7", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "c06d2a6887f4b414f8e927afd9ee976a", + "Requirements": [] + }, + "roxygen2": { + "Package": "roxygen2", + "Version": "7.1.1", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "fcd94e00cc409b25d07ca50f7bf339f5", + "Requirements": [ + "R6", + "Rcpp", + "brew", + "commonmark", + "desc", + "digest", + "knitr", + "pkgload", + "purrr", + "rlang", + "stringi", + "stringr", + "xml2" + ] + }, + "rpart": { + "Package": "rpart", + "Version": "4.1.19", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "b3c892a81783376cc2204af0f5805a80", + "Requirements": [] + }, + "rprojroot": { + "Package": "rprojroot", + "Version": "1.3-2", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "f6a407ae5dd21f6f80a6708bbb6eb3ae", + "Requirements": [ + "backports" + ] + }, + "rstudioapi": { + "Package": "rstudioapi", + "Version": "0.11", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "33a5b27a03da82ac4b1d43268f80088a", + "Requirements": [] + }, + "rversions": { + "Package": "rversions", + "Version": "2.0.2", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "0ec41191f744d0f5afad8c6f35cc36e4", + "Requirements": [ + "curl", + "xml2" + ] + }, + "sessioninfo": { + "Package": "sessioninfo", + "Version": "1.1.1", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "308013098befe37484df72c39cf90d6e", + "Requirements": [ + "cli", + "withr" + ] + }, + "spatial": { + "Package": "spatial", + "Version": "7.3-11", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "f27a078d834614513608da2c08031130", + "Requirements": [] + }, + "stringi": { + "Package": "stringi", + "Version": "1.4.6", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "e99d8d656980d2dd416a962ae55aec90", + "Requirements": [] + }, + "stringr": { + "Package": "stringr", + "Version": "1.4.0", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "0759e6b6c0957edb1311028a49a35e76", + "Requirements": [ + "glue", + "magrittr", + "stringi" + ] + }, + "survival": { + "Package": "survival", + "Version": "3.4-0", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "04411ae66ab4659230c067c32966fc20", + "Requirements": [ + "Matrix" + ] + }, + "sys": { + "Package": "sys", + "Version": "3.4", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "b227d13e29222b4574486cfcbde077fa", + "Requirements": [] + }, + "testthat": { + "Package": "testthat", + "Version": "2.3.2", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "0829b987b8961fb07f3b1b64a2fbc495", + "Requirements": [ + "R6", + "cli", + "crayon", + "digest", + "ellipsis", + "evaluate", + "magrittr", + "pkgload", + "praise", + "rlang", + "withr" + ] + }, + "tibble": { + "Package": "tibble", + "Version": "3.0.3", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "08bd36bd34b20d4f7971d49e81deaab0", + "Requirements": [ + "cli", + "crayon", + "ellipsis", + "fansi", + "lifecycle", + "magrittr", + "pillar", + "pkgconfig", + "rlang", + "vctrs" + ] + }, + "usethis": { + "Package": "usethis", + "Version": "1.6.1", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "e1985f5a9985fea2e338fa7eb99018ca", + "Requirements": [ + "cli", + "clipr", + "crayon", + "curl", + "desc", + "fs", + "gh", + "git2r", + "glue", + "purrr", + "rematch2", + "rlang", + "rprojroot", + "rstudioapi", + "whisker", + "withr", + "yaml" + ] + }, + "utf8": { + "Package": "utf8", + "Version": "1.1.4", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "4a5081acfb7b81a572e4384a7aaf2af1", + "Requirements": [] + }, + "vctrs": { + "Package": "vctrs", + "Version": "0.3.2", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "5ba3006888ac62fd5e97b208d00d3317", + "Requirements": [ + "digest", + "ellipsis", + "glue", + "rlang" + ] + }, + "whisker": { + "Package": "whisker", + "Version": "0.4", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "ca970b96d894e90397ed20637a0c1bbe", + "Requirements": [] + }, + "withr": { + "Package": "withr", + "Version": "2.2.0", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "ecd17882a0b4419545691e095b74ee89", + "Requirements": [] + }, + "xfun": { + "Package": "xfun", + "Version": "0.16", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "b4106139b90981a8bfea9c10bab0baf1", + "Requirements": [] + }, + "xml2": { + "Package": "xml2", + "Version": "1.3.2", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "d4d71a75dd3ea9eb5fa28cc21f9585e2", + "Requirements": [] + }, + "xopen": { + "Package": "xopen", + "Version": "1.0.0", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "6c85f015dee9cc7710ddd20f86881f58", + "Requirements": [ + "processx" + ] + }, + "yaml": { + "Package": "yaml", + "Version": "2.2.1", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "2826c5d9efb0a88f657c7a679c7106db", + "Requirements": [] + } + } +} diff --git a/workers/R/renv_load.R b/workers/R/renv_load.R new file mode 100644 index 000000000..abaf13935 --- /dev/null +++ b/workers/R/renv_load.R @@ -0,0 +1,13 @@ +options(warn = 2) +options(repos = structure(c( + Bioconductor = "https://bioconductor.org/packages/3.11/bioc/", + BioconductorAnnotation = "https://bioconductor.org/packages/3.11/data/annotation/", + BioconductorExperiment = "https://bioconductor.org/packages/3.11/data/experiment", + CRAN = "https://cloud.r-project.org/" +))) +options(Ncpus = parallel::detectCores()) + +install.packages("renv") + +renv::consent(provided = TRUE) +renv::restore(prompt = FALSE) diff --git a/workers/R/renv_save.R b/workers/R/renv_save.R new file mode 100644 index 000000000..5857f391b --- /dev/null +++ b/workers/R/renv_save.R @@ -0,0 +1,12 @@ +options(warn = 2) +options(repos = structure(c( + Bioconductor = "https://bioconductor.org/packages/3.11/bioc/", + BioconductorAnnotation = "https://bioconductor.org/packages/3.11/data/annotation/", + BioconductorExperiment = "https://bioconductor.org/packages/3.11/data/experiment", + CRAN = "https://cloud.r-project.org/" +))) +options(Ncpus = parallel::detectCores()) + +install.packages("renv") + +renv::init(bare = TRUE) diff --git a/workers/dockerfiles/Dockerfile.affymetrix b/workers/dockerfiles/Dockerfile.affymetrix index e90300240..14bf633a7 100644 --- a/workers/dockerfiles/Dockerfile.affymetrix +++ b/workers/dockerfiles/Dockerfile.affymetrix @@ -1,52 +1,33 @@ -FROM ccdlstaging/dr_worker_base:latest +FROM ccdlstaging/dr_base:latest # Fail in case of an error at any stage in the pipe. SHELL ["/bin/bash", "-o", "pipefail", "-c"] WORKDIR /home/user -# Install and set up ccache. -RUN apt-get update && \ - apt-get install --no-install-recommends -y ccache && \ - for i in c++ cc g++ gcc; do ln -fs /usr/bin/ccache /usr/local/bin/$i; done -COPY workers/ccache.conf /root/.ccache/ccache.conf -ENV PATH="/usr/local/bin:${PATH}" +COPY workers/R/dependencies/affymetrix/renv.lock . +COPY workers/R/renv_load.R . +RUN Rscript renv_load.R -COPY workers/R/dependencies/affymetrix/cran/dependencies.R dependencies.R -RUN Rscript dependencies.R - -COPY workers/R/dependencies/affymetrix/install_ensg_pkgs.R . - -COPY workers/R/dependencies/affymetrix/bioc/dependencies.R dependencies.R -RUN Rscript dependencies.R - -RUN pip3 install --ignore-installed --upgrade pip setuptools && \ +COPY workers/data_refinery_workers/processors/requirements.txt . +RUN pip3 install --ignore-installed --no-cache-dir --upgrade pip setuptools && \ # Install this one here instead of via requirements.txt because not # all processors need it. - pip3 install --ignore-installed rpy2==3.4.5 + pip3 install --ignore-installed --no-cache-dir rpy2==3.4.5 && \ + pip3 install --ignore-installed --no-cache-dir -r requirements.txt # Get the latest version from the dist directory. COPY common/dist/data-refinery-common-* common/ -RUN pip3 install --ignore-installed \ - common/$(ls common -1 | sort --version-sort | tail -1) +RUN pip3 install --ignore-installed --no-cache-dir \ + common/$(ls common -1 | sort --version-sort | tail -1) -COPY workers/data_refinery_workers/processors/requirements.txt . -RUN pip3 install --ignore-installed -r requirements.txt && \ - # Clear out the pip3 cache. - rm -r /root/.cache +COPY .boto .boto +COPY config/ config/ +COPY workers/ . ARG SYSTEM_VERSION ENV SYSTEM_VERSION=$SYSTEM_VERSION -# Print compiler cache stats (the cache hit ratio should be ~90%). -RUN ccache --show-stats && \ - # Clear out the ccache. - ccache --clear - USER user -COPY .boto .boto -COPY config/ config/ -COPY workers/ . - ENTRYPOINT [] diff --git a/workers/dockerfiles/Dockerfile.compendia b/workers/dockerfiles/Dockerfile.compendia index 8790d859c..d49e7918d 100644 --- a/workers/dockerfiles/Dockerfile.compendia +++ b/workers/dockerfiles/Dockerfile.compendia @@ -70,18 +70,11 @@ RUN echo debconf apt-fast/maxdownloads string 16 | debconf-set-selections && \ WORKDIR /home/user -# We need a few special packages for QN. ENV R_LIBS=/usr/local/lib/R/site-library -COPY common/R/install_devtools.R . -RUN Rscript install_devtools.R - -COPY workers/R/dependencies/qn/cran/dependencies.R . -RUN Rscript dependencies.R - -COPY workers/R/dependencies/qn/bioc/dependencies.R . -RUN Rscript dependencies.R -# End QN-specific. +COPY workers/R/dependencies/compendia/renv.lock . +COPY workers/R/renv_load.R . +RUN Rscript renv_load.R COPY workers/data_refinery_workers/processors/requirements.txt . RUN pip3 install --ignore-installed --no-cache-dir --upgrade pip && \ diff --git a/workers/dockerfiles/Dockerfile.downloaders b/workers/dockerfiles/Dockerfile.downloaders index 9b611956d..534084860 100644 --- a/workers/dockerfiles/Dockerfile.downloaders +++ b/workers/dockerfiles/Dockerfile.downloaders @@ -5,8 +5,9 @@ SHELL ["/bin/bash", "-o", "pipefail", "-c"] WORKDIR /home/user -COPY workers/R/dependencies/install_downloader_R_only.R . -RUN Rscript install_downloader_R_only.R +COPY workers/R/dependencies/downloaders/renv.lock . +COPY workers/R/renv_load.R . +RUN Rscript renv_load.R COPY workers/data_refinery_workers/downloaders/requirements.txt . RUN pip3 install --ignore-installed --no-cache-dir --upgrade pip && \ diff --git a/workers/dockerfiles/Dockerfile.illumina b/workers/dockerfiles/Dockerfile.illumina index 200b37725..4bbbf9ea7 100644 --- a/workers/dockerfiles/Dockerfile.illumina +++ b/workers/dockerfiles/Dockerfile.illumina @@ -5,12 +5,9 @@ SHELL ["/bin/bash", "-o", "pipefail", "-c"] WORKDIR /home/user -COPY workers/R/dependencies/illumina/cran/dependencies.R . -RUN Rscript dependencies.R - -# These are for Illumina. -COPY workers/R/dependencies/illumina/bioc/dependencies.R . -RUN Rscript dependencies.R +COPY workers/R/dependencies/illumina/renv.lock . +COPY workers/R/renv_load.R . +RUN Rscript renv_load.R COPY workers/data_refinery_workers/processors/requirements.txt . RUN pip3 install --ignore-installed --no-cache-dir --upgrade pip && \ diff --git a/workers/dockerfiles/Dockerfile.no_op b/workers/dockerfiles/Dockerfile.no_op index 60f686265..a46c45fe8 100644 --- a/workers/dockerfiles/Dockerfile.no_op +++ b/workers/dockerfiles/Dockerfile.no_op @@ -5,11 +5,9 @@ SHELL ["/bin/bash", "-o", "pipefail", "-c"] WORKDIR /home/user -COPY workers/R/dependencies/no_op/cran/dependencies.R . -RUN Rscript dependencies.R - -COPY workers/R/dependencies/no_op/install_gene_convert.R . -RUN Rscript install_gene_convert.R +COPY workers/R/dependencies/no_op/renv.lock . +COPY workers/R/renv_load.R . +RUN Rscript renv_load.R COPY workers/data_refinery_workers/processors/requirements.txt . RUN pip3 install --ignore-installed --no-cache-dir --upgrade pip && \ diff --git a/workers/dockerfiles/Dockerfile.salmon b/workers/dockerfiles/Dockerfile.salmon index 046ee0b89..af93dbcb3 100644 --- a/workers/dockerfiles/Dockerfile.salmon +++ b/workers/dockerfiles/Dockerfile.salmon @@ -5,12 +5,9 @@ SHELL ["/bin/bash", "-o", "pipefail", "-c"] WORKDIR /home/user -COPY workers/R/dependencies/tximport/cran/dependencies.R tximport_dependencies.R -RUN Rscript tximport_dependencies.R - -# Install tximport. -COPY workers/R/dependencies/tximport/install_tximport.R . -RUN Rscript install_tximport.R +COPY workers/R/dependencies/salmon/renv.lock . +COPY workers/R/renv_load.R . +RUN Rscript renv_load.R COPY workers/data_refinery_workers/processors/requirements.txt . RUN pip3 install --ignore-installed --no-cache-dir --upgrade pip && \ diff --git a/workers/dockerfiles/Dockerfile.smasher b/workers/dockerfiles/Dockerfile.smasher index 926f98208..78258cf01 100644 --- a/workers/dockerfiles/Dockerfile.smasher +++ b/workers/dockerfiles/Dockerfile.smasher @@ -5,11 +5,9 @@ SHELL ["/bin/bash", "-o", "pipefail", "-c"] WORKDIR /home/user -COPY workers/R/dependencies/qn/cran/dependencies.R . -RUN Rscript dependencies.R - -COPY workers/R/dependencies/qn/bioc/dependencies.R . -RUN Rscript dependencies.R +COPY workers/R/dependencies/smasher/renv.lock . +COPY workers/R/renv_load.R . +RUN Rscript renv_load.R COPY workers/data_refinery_workers/processors/requirements.txt . RUN pip3 install --ignore-installed --no-cache-dir --upgrade pip && \ From f9b6d7ea4ad7e0f6a193da7ff9ef022a933e48e6 Mon Sep 17 00:00:00 2001 From: Arkadii Yakovets Date: Mon, 23 Jan 2023 10:59:52 -0800 Subject: [PATCH 061/220] Fix `affymetrix_local` permission denied issue. --- workers/dockerfiles/Dockerfile.affymetrix_local | 2 ++ 1 file changed, 2 insertions(+) diff --git a/workers/dockerfiles/Dockerfile.affymetrix_local b/workers/dockerfiles/Dockerfile.affymetrix_local index 08db9e197..b4cab3676 100644 --- a/workers/dockerfiles/Dockerfile.affymetrix_local +++ b/workers/dockerfiles/Dockerfile.affymetrix_local @@ -3,6 +3,8 @@ FROM ccdlstaging/dr_affymetrix:latest # Fail in case of an error at any stage in the pipe. SHELL ["/bin/bash", "-o", "pipefail", "-c"] +USER root + WORKDIR /home/user # Remove the version of common already installed. From 85aed7be0be5b6838403e0031bf6a646382144cb Mon Sep 17 00:00:00 2001 From: Arkadii Yakovets Date: Thu, 26 Jan 2023 08:20:17 -0800 Subject: [PATCH 062/220] Migrate `common_tests` image. --- common/R/dependencies/common_tests/renv.R | 24 + common/R/dependencies/common_tests/renv.lock | 1808 ++++++++++++++++++ common/R/renv_load.R | 13 + common/dockerfiles/Dockerfile.common_tests | 82 +- 4 files changed, 1862 insertions(+), 65 deletions(-) create mode 100644 common/R/dependencies/common_tests/renv.R create mode 100644 common/R/dependencies/common_tests/renv.lock create mode 100644 common/R/renv_load.R diff --git a/common/R/dependencies/common_tests/renv.R b/common/R/dependencies/common_tests/renv.R new file mode 100644 index 000000000..b5a23e262 --- /dev/null +++ b/common/R/dependencies/common_tests/renv.R @@ -0,0 +1,24 @@ +renv::install("rlang@1.0.4") +renv::install("dplyr@1.0.0") +renv::install("tidyr@1.1.0") +renv::install("ff@2.2-14") +renv::install("locfit@1.5-9.4") +renv::install("cli@3.3.0") +renv::install("lifecycle@1.0.3") +renv::install("vctrs@0.4.1") + +renv::install( + "https://bioconductor.org/packages/3.11/bioc/src/contrib/oligoClasses_1.50.4.tar.gz", + "https://bioconductor.org/packages/3.11/bioc/src/contrib/oligo_1.52.1.tar.gz", + "https://bioconductor.org/packages/3.11/bioc/src/contrib/GEOquery_2.56.0.tar.gz", + "https://bioconductor.org/packages/3.11/bioc/src/contrib/SCAN.UPC_2.30.0.tar.gz", + "https://bioconductor.org/packages/3.11/bioc/src/contrib/affy_1.66.0.tar.gz", + "https://bioconductor.org/packages/3.11/bioc/src/contrib/affyio_1.58.0.tar.gz", + "https://bioconductor.org/packages/3.11/bioc/src/contrib/AnnotationDbi_1.50.3.tar.gz", + "https://bioconductor.org/packages/3.11/bioc/src/contrib/zlibbioc_1.34.0.tar.gz", + "https://bioconductor.org/packages/3.11/bioc/src/contrib/preprocessCore_1.50.0.tar.gz", + "https://bioconductor.org/packages/3.11/bioc/src/contrib/genefilter_1.70.0.tar.gz", + "https://bioconductor.org/packages/3.11/bioc/src/contrib/sva_3.36.0.tar.gz", + "https://bioconductor.org/packages/3.11/bioc/src/contrib/tximport_1.16.1.tar.gz", + "https://bioconductor.org/packages/3.11/bioc/src/contrib/limma_3.44.3.tar.gz" +) diff --git a/common/R/dependencies/common_tests/renv.lock b/common/R/dependencies/common_tests/renv.lock new file mode 100644 index 000000000..a715ce7d2 --- /dev/null +++ b/common/R/dependencies/common_tests/renv.lock @@ -0,0 +1,1808 @@ +{ + "R": { + "Version": "3.6.3", + "Repositories": [ + { + "Name": "Bioconductor", + "URL": "https://bioconductor.org/packages/3.11/bioc" + }, + { + "Name": "BioconductorAnnotation", + "URL": "https://bioconductor.org/packages/3.11/data/annotation" + }, + { + "Name": "BioconductorExperiment", + "URL": "https://bioconductor.org/packages/3.11/data/experiment" + }, + { + "Name": "CRAN", + "URL": "https://cloud.r-project.org" + } + ] + }, + "Packages": { + "AnnotationDbi": { + "Package": "AnnotationDbi", + "Version": "1.50.3", + "Source": "URL", + "RemoteType": "url", + "RemoteUrl": "https://bioconductor.org/packages/3.11/bioc/src/contrib/AnnotationDbi_1.50.3.tar.gz", + "git_url": "https://git.bioconductor.org/packages/AnnotationDbi", + "git_branch": "RELEASE_3_11", + "git_last_commit": "efa119c", + "git_last_commit_date": "2020-07-24", + "Hash": "8118f8655ad5604099a0e8ac14090f91", + "Requirements": [ + "Biobase", + "BiocGenerics", + "DBI", + "IRanges", + "RSQLite", + "S4Vectors" + ] + }, + "BH": { + "Package": "BH", + "Version": "1.72.0-3", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "8f9ce74c6417d61f0782cbae5fd2b7b0", + "Requirements": [] + }, + "Biobase": { + "Package": "Biobase", + "Version": "2.48.0", + "Source": "Bioconductor", + "git_url": "https://git.bioconductor.org/packages/Biobase", + "git_branch": "RELEASE_3_11", + "git_last_commit": "4ffadf2", + "git_last_commit_date": "2020-04-27", + "Hash": "da9b1bc36fb35ebbec219dc007657f21", + "Requirements": [ + "BiocGenerics" + ] + }, + "BiocGenerics": { + "Package": "BiocGenerics", + "Version": "0.34.0", + "Source": "Bioconductor", + "git_url": "https://git.bioconductor.org/packages/BiocGenerics", + "git_branch": "RELEASE_3_11", + "git_last_commit": "f7c2020", + "git_last_commit_date": "2020-04-27", + "Hash": "ae191b5608f175de0f69b6302390c705", + "Requirements": [] + }, + "BiocManager": { + "Package": "BiocManager", + "Version": "1.30.19", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "726b3bc83ff8e0c35c7efdb74a462b0d", + "Requirements": [] + }, + "BiocParallel": { + "Package": "BiocParallel", + "Version": "1.22.0", + "Source": "Bioconductor", + "git_url": "https://git.bioconductor.org/packages/BiocParallel", + "git_branch": "RELEASE_3_11", + "git_last_commit": "430511c", + "git_last_commit_date": "2020-04-27", + "Hash": "6457b5a769de3e02704fd1b529a3c6e1", + "Requirements": [ + "BH", + "futile.logger", + "snow" + ] + }, + "Biostrings": { + "Package": "Biostrings", + "Version": "2.56.0", + "Source": "Bioconductor", + "git_url": "https://git.bioconductor.org/packages/Biostrings", + "git_branch": "RELEASE_3_11", + "git_last_commit": "79b7ec8", + "git_last_commit_date": "2020-04-27", + "Hash": "f5d135c565a244740559409e48c410cd", + "Requirements": [ + "BiocGenerics", + "IRanges", + "S4Vectors", + "XVector", + "crayon" + ] + }, + "DBI": { + "Package": "DBI", + "Version": "1.1.3", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "b2866e62bab9378c3cc9476a1954226b", + "Requirements": [] + }, + "DT": { + "Package": "DT", + "Version": "0.14", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "a3580ce0309c94d061c23b0afb4accbd", + "Requirements": [ + "crosstalk", + "htmltools", + "htmlwidgets", + "jsonlite", + "magrittr", + "promises" + ] + }, + "DelayedArray": { + "Package": "DelayedArray", + "Version": "0.14.1", + "Source": "Bioconductor", + "git_url": "https://git.bioconductor.org/packages/DelayedArray", + "git_branch": "RELEASE_3_11", + "git_last_commit": "52230a4", + "git_last_commit_date": "2020-07-13", + "Hash": "8430a6ec606d0d92198ff107f1d98261", + "Requirements": [ + "BiocGenerics", + "IRanges", + "Matrix", + "S4Vectors", + "matrixStats" + ] + }, + "GEOquery": { + "Package": "GEOquery", + "Version": "2.56.0", + "Source": "URL", + "RemoteType": "url", + "RemoteUrl": "https://bioconductor.org/packages/3.11/bioc/src/contrib/GEOquery_2.56.0.tar.gz", + "git_url": "https://git.bioconductor.org/packages/GEOquery", + "git_branch": "RELEASE_3_11", + "git_last_commit": "50417b3", + "git_last_commit_date": "2020-04-27", + "Hash": "4f5f180eb5db85e0741db59fee6158c2", + "Requirements": [ + "Biobase", + "dplyr", + "httr", + "limma", + "magrittr", + "readr", + "tidyr", + "xml2" + ] + }, + "GenomeInfoDb": { + "Package": "GenomeInfoDb", + "Version": "1.24.2", + "Source": "Bioconductor", + "git_url": "https://git.bioconductor.org/packages/GenomeInfoDb", + "git_branch": "RELEASE_3_11", + "git_last_commit": "e3713f3", + "git_last_commit_date": "2020-06-14", + "Hash": "f1556568ab93fd7704380539fca71e6a", + "Requirements": [ + "BiocGenerics", + "GenomeInfoDbData", + "IRanges", + "RCurl", + "S4Vectors" + ] + }, + "GenomeInfoDbData": { + "Package": "GenomeInfoDbData", + "Version": "1.2.3", + "Source": "Bioconductor", + "Hash": "8fe62eac6e27b8e56d51f9ae6030cbcd", + "Requirements": [] + }, + "GenomicRanges": { + "Package": "GenomicRanges", + "Version": "1.40.0", + "Source": "Bioconductor", + "git_url": "https://git.bioconductor.org/packages/GenomicRanges", + "git_branch": "RELEASE_3_11", + "git_last_commit": "a9e18e4", + "git_last_commit_date": "2020-04-27", + "Hash": "05cd2ba8e1e373e9089454cf762df723", + "Requirements": [ + "BiocGenerics", + "GenomeInfoDb", + "IRanges", + "S4Vectors", + "XVector" + ] + }, + "IRanges": { + "Package": "IRanges", + "Version": "2.22.2", + "Source": "Bioconductor", + "git_url": "https://git.bioconductor.org/packages/IRanges", + "git_branch": "RELEASE_3_11", + "git_last_commit": "8c5e991", + "git_last_commit_date": "2020-05-20", + "Hash": "1403fa5c98c5f48b989a6bc5a65c6c25", + "Requirements": [ + "BiocGenerics", + "S4Vectors" + ] + }, + "KernSmooth": { + "Package": "KernSmooth", + "Version": "2.23-20", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "8dcfa99b14c296bc9f1fd64d52fd3ce7", + "Requirements": [] + }, + "MASS": { + "Package": "MASS", + "Version": "7.3-58", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "4bf2c61e656bbc238634c798c208d386", + "Requirements": [] + }, + "Matrix": { + "Package": "Matrix", + "Version": "1.5-1", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "539dc0c0c05636812f1080f473d2c177", + "Requirements": [ + "lattice" + ] + }, + "R6": { + "Package": "R6", + "Version": "2.4.1", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "292b54f8f4b94669b08f94e5acce6be2", + "Requirements": [] + }, + "RCurl": { + "Package": "RCurl", + "Version": "1.98-1.9", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "ea2f19dade6bd911b29b9bbb115d08f6", + "Requirements": [ + "bitops" + ] + }, + "RSQLite": { + "Package": "RSQLite", + "Version": "2.2.20", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "b5df65015a2d74c144a1419dab6ffd3b", + "Requirements": [ + "DBI", + "Rcpp", + "bit64", + "blob", + "memoise", + "pkgconfig", + "plogr" + ] + }, + "Rcpp": { + "Package": "Rcpp", + "Version": "1.0.10", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "e749cae40fa9ef469b6050959517453c", + "Requirements": [] + }, + "S4Vectors": { + "Package": "S4Vectors", + "Version": "0.26.1", + "Source": "Bioconductor", + "git_url": "https://git.bioconductor.org/packages/S4Vectors", + "git_branch": "RELEASE_3_11", + "git_last_commit": "935769c", + "git_last_commit_date": "2020-05-15", + "Hash": "c252d04c13a3a6667d3cc140360780f1", + "Requirements": [ + "BiocGenerics" + ] + }, + "SCAN.UPC": { + "Package": "SCAN.UPC", + "Version": "2.30.0", + "Source": "URL", + "RemoteType": "url", + "RemoteUrl": "https://bioconductor.org/packages/3.11/bioc/src/contrib/SCAN.UPC_2.30.0.tar.gz", + "git_url": "https://git.bioconductor.org/packages/SCAN.UPC", + "git_branch": "RELEASE_3_11", + "git_last_commit": "052d3c4", + "git_last_commit_date": "2020-04-27", + "Hash": "f76f2473345a4c25263772c3c862df0e", + "Requirements": [ + "Biobase", + "Biostrings", + "GEOquery", + "IRanges", + "MASS", + "affy", + "affyio", + "foreach", + "oligo", + "sva" + ] + }, + "SummarizedExperiment": { + "Package": "SummarizedExperiment", + "Version": "1.18.2", + "Source": "Bioconductor", + "git_url": "https://git.bioconductor.org/packages/SummarizedExperiment", + "git_branch": "RELEASE_3_11", + "git_last_commit": "e22fafe", + "git_last_commit_date": "2020-07-09", + "Hash": "811eb16b3d542aa098d4c89f0985f3bc", + "Requirements": [ + "Biobase", + "BiocGenerics", + "DelayedArray", + "GenomeInfoDb", + "GenomicRanges", + "IRanges", + "Matrix", + "S4Vectors" + ] + }, + "XML": { + "Package": "XML", + "Version": "3.99-0.3", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "c1616606f097075542c12fb8a10a071e", + "Requirements": [] + }, + "XVector": { + "Package": "XVector", + "Version": "0.28.0", + "Source": "Bioconductor", + "git_url": "https://git.bioconductor.org/packages/XVector", + "git_branch": "RELEASE_3_11", + "git_last_commit": "8bda737", + "git_last_commit_date": "2020-04-27", + "Hash": "a5669a9d44010120a5c10be7977f0626", + "Requirements": [ + "BiocGenerics", + "IRanges", + "S4Vectors", + "zlibbioc" + ] + }, + "affxparser": { + "Package": "affxparser", + "Version": "1.60.0", + "Source": "Bioconductor", + "git_url": "https://git.bioconductor.org/packages/affxparser", + "git_branch": "RELEASE_3_11", + "git_last_commit": "22b10b1", + "git_last_commit_date": "2020-04-27", + "Hash": "4fca40e4bb842b56d6be95bff88ac85f", + "Requirements": [] + }, + "affy": { + "Package": "affy", + "Version": "1.66.0", + "Source": "URL", + "RemoteType": "url", + "RemoteUrl": "https://bioconductor.org/packages/3.11/bioc/src/contrib/affy_1.66.0.tar.gz", + "git_url": "https://git.bioconductor.org/packages/affy", + "git_branch": "RELEASE_3_11", + "git_last_commit": "ae131f8", + "git_last_commit_date": "2020-04-27", + "Hash": "7d4686f9fa0ba9db6d0f596058dd1a15", + "Requirements": [ + "Biobase", + "BiocGenerics", + "BiocManager", + "affyio", + "preprocessCore", + "zlibbioc" + ] + }, + "affyio": { + "Package": "affyio", + "Version": "1.58.0", + "Source": "URL", + "RemoteType": "url", + "RemoteUrl": "https://bioconductor.org/packages/3.11/bioc/src/contrib/affyio_1.58.0.tar.gz", + "git_url": "https://git.bioconductor.org/packages/affyio", + "git_branch": "RELEASE_3_11", + "git_last_commit": "76fee54", + "git_last_commit_date": "2020-04-27", + "Hash": "841239ddcf5f028105cd3687976948ef", + "Requirements": [ + "zlibbioc" + ] + }, + "annotate": { + "Package": "annotate", + "Version": "1.66.0", + "Source": "Bioconductor", + "git_url": "https://git.bioconductor.org/packages/annotate", + "git_branch": "RELEASE_3_11", + "git_last_commit": "a63378f", + "git_last_commit_date": "2020-04-27", + "Hash": "61677ca20165e7790955cdd1fc27281e", + "Requirements": [ + "AnnotationDbi", + "Biobase", + "BiocGenerics", + "DBI", + "RCurl", + "XML", + "xtable" + ] + }, + "askpass": { + "Package": "askpass", + "Version": "1.1", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "e8a22846fff485f0be3770c2da758713", + "Requirements": [ + "sys" + ] + }, + "assertthat": { + "Package": "assertthat", + "Version": "0.2.1", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "50c838a310445e954bc13f26f26a6ecf", + "Requirements": [] + }, + "backports": { + "Package": "backports", + "Version": "1.1.8", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "3ef0eac19317fd03c0c854aed581d473", + "Requirements": [] + }, + "base64enc": { + "Package": "base64enc", + "Version": "0.1-3", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "543776ae6848fde2f48ff3816d0628bc", + "Requirements": [] + }, + "bit": { + "Package": "bit", + "Version": "4.0.5", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "d242abec29412ce988848d0294b208fd", + "Requirements": [] + }, + "bit64": { + "Package": "bit64", + "Version": "4.0.5", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "9fe98599ca456d6552421db0d6772d8f", + "Requirements": [ + "bit" + ] + }, + "bitops": { + "Package": "bitops", + "Version": "1.0-7", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "b7d8d8ee39869c18d8846a184dd8a1af", + "Requirements": [] + }, + "blob": { + "Package": "blob", + "Version": "1.2.3", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "10d231579bc9c06ab1c320618808d4ff", + "Requirements": [ + "rlang", + "vctrs" + ] + }, + "boot": { + "Package": "boot", + "Version": "1.3-28", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "0baa960e3b49c6176a4f42addcbacc59", + "Requirements": [] + }, + "brew": { + "Package": "brew", + "Version": "1.0-6", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "92a5f887f9ae3035ac7afde22ba73ee9", + "Requirements": [] + }, + "callr": { + "Package": "callr", + "Version": "3.4.3", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "643163a00cb536454c624883a10ae0bc", + "Requirements": [ + "R6", + "processx" + ] + }, + "class": { + "Package": "class", + "Version": "7.3-20", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "da09d82223e669d270e47ed24ac8686e", + "Requirements": [ + "MASS" + ] + }, + "cli": { + "Package": "cli", + "Version": "3.6.0", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "3177a5a16c243adc199ba33117bd9657", + "Requirements": [] + }, + "clipr": { + "Package": "clipr", + "Version": "0.7.0", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "08cf4045c149a0f0eaf405324c7495bd", + "Requirements": [] + }, + "cluster": { + "Package": "cluster", + "Version": "2.1.4", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "5edbbabab6ce0bf7900a74fd4358628e", + "Requirements": [] + }, + "codetools": { + "Package": "codetools", + "Version": "0.2-18", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "019388fc48e48b3da0d3a76ff94608a8", + "Requirements": [] + }, + "commonmark": { + "Package": "commonmark", + "Version": "1.7", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "0f22be39ec1d141fd03683c06f3a6e67", + "Requirements": [] + }, + "covr": { + "Package": "covr", + "Version": "3.5.0", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "cbc6df1ef6ee576f844f973c1fc04ab4", + "Requirements": [ + "crayon", + "digest", + "httr", + "jsonlite", + "rex", + "withr", + "yaml" + ] + }, + "cpp11": { + "Package": "cpp11", + "Version": "0.4.3", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "ed588261931ee3be2c700d22e94a29ab", + "Requirements": [] + }, + "crayon": { + "Package": "crayon", + "Version": "1.3.4", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "0d57bc8e27b7ba9e45dba825ebc0de6b", + "Requirements": [] + }, + "crosstalk": { + "Package": "crosstalk", + "Version": "1.1.0.1", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "ae55f5d7c02f0ab43c58dd050694f2b4", + "Requirements": [ + "R6", + "htmltools", + "jsonlite", + "lazyeval" + ] + }, + "curl": { + "Package": "curl", + "Version": "4.3", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "2b7d10581cc730804e9ed178c8374bd6", + "Requirements": [] + }, + "desc": { + "Package": "desc", + "Version": "1.2.0", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "6c8fe8fa26a23b79949375d372c7b395", + "Requirements": [ + "R6", + "assertthat", + "crayon", + "rprojroot" + ] + }, + "devtools": { + "Package": "devtools", + "Version": "2.3.1", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "271df6a328617c64149283e98b1cd8da", + "Requirements": [ + "DT", + "callr", + "cli", + "covr", + "desc", + "ellipsis", + "httr", + "jsonlite", + "memoise", + "pkgbuild", + "pkgload", + "rcmdcheck", + "remotes", + "rlang", + "roxygen2", + "rstudioapi", + "rversions", + "sessioninfo", + "testthat", + "usethis", + "withr" + ] + }, + "digest": { + "Package": "digest", + "Version": "0.6.25", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "f697db7d92b7028c4b3436e9603fb636", + "Requirements": [] + }, + "dplyr": { + "Package": "dplyr", + "Version": "1.0.0", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "4011f62581a34080e44105d4aa05a97f", + "Requirements": [ + "R6", + "ellipsis", + "generics", + "glue", + "lifecycle", + "magrittr", + "rlang", + "tibble", + "tidyselect", + "vctrs" + ] + }, + "edgeR": { + "Package": "edgeR", + "Version": "3.30.3", + "Source": "Bioconductor", + "git_url": "https://git.bioconductor.org/packages/edgeR", + "git_branch": "RELEASE_3_11", + "git_last_commit": "7a3a272", + "git_last_commit_date": "2020-06-02", + "Hash": "fed69054bac345df0b60fc9afa7101e9", + "Requirements": [ + "Rcpp", + "limma", + "locfit" + ] + }, + "ellipsis": { + "Package": "ellipsis", + "Version": "0.3.2", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "bb0eec2fe32e88d9e2836c2f73ea2077", + "Requirements": [ + "rlang" + ] + }, + "evaluate": { + "Package": "evaluate", + "Version": "0.14", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "ec8ca05cffcc70569eaaad8469d2a3a7", + "Requirements": [] + }, + "fansi": { + "Package": "fansi", + "Version": "0.4.1", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "7fce217eaaf8016e72065e85c73027b5", + "Requirements": [] + }, + "ff": { + "Package": "ff", + "Version": "2.2-14", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "2f745ad9a324bf4247df10ea6ebc3953", + "Requirements": [ + "bit" + ] + }, + "foreach": { + "Package": "foreach", + "Version": "1.5.2", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "618609b42c9406731ead03adf5379850", + "Requirements": [ + "codetools", + "iterators" + ] + }, + "foreign": { + "Package": "foreign", + "Version": "0.8-76", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "649b9c7a979d50d869578c73fed072cd", + "Requirements": [] + }, + "formatR": { + "Package": "formatR", + "Version": "1.14", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "63cb26d12517c7863f5abb006c5e0f25", + "Requirements": [] + }, + "fs": { + "Package": "fs", + "Version": "1.4.2", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "8c04112383ca1988e96f429255f95675", + "Requirements": [] + }, + "futile.logger": { + "Package": "futile.logger", + "Version": "1.4.3", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "99f0ace8c05ec7d3683d27083c4f1e7e", + "Requirements": [ + "futile.options", + "lambda.r" + ] + }, + "futile.options": { + "Package": "futile.options", + "Version": "1.0.1", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "0d9bf02413ddc2bbe8da9ce369dcdd2b", + "Requirements": [] + }, + "genefilter": { + "Package": "genefilter", + "Version": "1.70.0", + "Source": "URL", + "RemoteType": "url", + "RemoteUrl": "https://bioconductor.org/packages/3.11/bioc/src/contrib/genefilter_1.70.0.tar.gz", + "git_url": "https://git.bioconductor.org/packages/genefilter", + "git_branch": "RELEASE_3_11", + "git_last_commit": "a071480", + "git_last_commit_date": "2020-04-27", + "Hash": "8db2ebb178f95b85a77813e2d99c6b40", + "Requirements": [ + "AnnotationDbi", + "Biobase", + "BiocGenerics", + "annotate", + "survival" + ] + }, + "generics": { + "Package": "generics", + "Version": "0.1.3", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "15e9634c0fcd294799e9b2e929ed1b86", + "Requirements": [] + }, + "gh": { + "Package": "gh", + "Version": "1.1.0", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "89ea5998938d1ad55f035c8a86f96b74", + "Requirements": [ + "cli", + "httr", + "ini", + "jsonlite" + ] + }, + "git2r": { + "Package": "git2r", + "Version": "0.27.1", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "531a82d1beed1f545beb25f4f5945bf7", + "Requirements": [] + }, + "glue": { + "Package": "glue", + "Version": "1.6.2", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "4f2596dfb05dac67b9dc558e5c6fba2e", + "Requirements": [] + }, + "highr": { + "Package": "highr", + "Version": "0.8", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "4dc5bb88961e347a0f4d8aad597cbfac", + "Requirements": [] + }, + "hms": { + "Package": "hms", + "Version": "1.1.2", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "41100392191e1244b887878b533eea91", + "Requirements": [ + "ellipsis", + "lifecycle", + "pkgconfig", + "rlang", + "vctrs" + ] + }, + "htmltools": { + "Package": "htmltools", + "Version": "0.5.0", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "7d651b7131794fe007b1ad6f21aaa401", + "Requirements": [ + "base64enc", + "digest", + "rlang" + ] + }, + "htmlwidgets": { + "Package": "htmlwidgets", + "Version": "1.5.1", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "41bace23583fbc25089edae324de2dc3", + "Requirements": [ + "htmltools", + "jsonlite", + "yaml" + ] + }, + "httr": { + "Package": "httr", + "Version": "1.4.2", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "a525aba14184fec243f9eaec62fbed43", + "Requirements": [ + "R6", + "curl", + "jsonlite", + "mime", + "openssl" + ] + }, + "ini": { + "Package": "ini", + "Version": "0.3.1", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "6154ec2223172bce8162d4153cda21f7", + "Requirements": [] + }, + "iterators": { + "Package": "iterators", + "Version": "1.0.14", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "8954069286b4b2b0d023d1b288dce978", + "Requirements": [] + }, + "jsonlite": { + "Package": "jsonlite", + "Version": "1.7.0", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "2657f20b9a74c996c602e74ebe540b06", + "Requirements": [] + }, + "knitr": { + "Package": "knitr", + "Version": "1.29", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "e5f4c41c17df8cdf7b0df12117c0d99a", + "Requirements": [ + "evaluate", + "highr", + "markdown", + "stringr", + "xfun", + "yaml" + ] + }, + "lambda.r": { + "Package": "lambda.r", + "Version": "1.2.4", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "b1e925c4b9ffeb901bacf812cbe9a6ad", + "Requirements": [ + "formatR" + ] + }, + "later": { + "Package": "later", + "Version": "1.1.0.1", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "d0a62b247165aabf397fded504660d8a", + "Requirements": [ + "BH", + "Rcpp", + "rlang" + ] + }, + "lattice": { + "Package": "lattice", + "Version": "0.20-45", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "b64cdbb2b340437c4ee047a1f4c4377b", + "Requirements": [] + }, + "lazyeval": { + "Package": "lazyeval", + "Version": "0.2.2", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "d908914ae53b04d4c0c0fd72ecc35370", + "Requirements": [] + }, + "lifecycle": { + "Package": "lifecycle", + "Version": "1.0.3", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "001cecbeac1cff9301bdc3775ee46a86", + "Requirements": [ + "cli", + "glue", + "rlang" + ] + }, + "limma": { + "Package": "limma", + "Version": "3.44.3", + "Source": "URL", + "RemoteType": "url", + "RemoteUrl": "https://bioconductor.org/packages/3.11/bioc/src/contrib/limma_3.44.3.tar.gz", + "git_url": "https://git.bioconductor.org/packages/limma", + "git_branch": "RELEASE_3_11", + "git_last_commit": "90275de", + "git_last_commit_date": "2020-06-12", + "Hash": "6f85e30aa587815acc9551390ff0bbec", + "Requirements": [] + }, + "locfit": { + "Package": "locfit", + "Version": "1.5-9.4", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "760b5b542e8435237d1b3c253bfe18e7", + "Requirements": [ + "lattice" + ] + }, + "magrittr": { + "Package": "magrittr", + "Version": "1.5", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "1bb58822a20301cee84a41678e25d9b7", + "Requirements": [] + }, + "markdown": { + "Package": "markdown", + "Version": "1.1", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "61e4a10781dd00d7d81dd06ca9b94e95", + "Requirements": [ + "mime", + "xfun" + ] + }, + "matrixStats": { + "Package": "matrixStats", + "Version": "0.63.0", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "57af0c3da1f1a50680b186591c3359af", + "Requirements": [] + }, + "memoise": { + "Package": "memoise", + "Version": "1.1.0", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "58baa74e4603fcfb9a94401c58c8f9b1", + "Requirements": [ + "digest" + ] + }, + "mgcv": { + "Package": "mgcv", + "Version": "1.8-41", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "6b3904f13346742caa3e82dd0303d4ad", + "Requirements": [ + "Matrix", + "nlme" + ] + }, + "mime": { + "Package": "mime", + "Version": "0.9", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "e87a35ec73b157552814869f45a63aa3", + "Requirements": [] + }, + "nlme": { + "Package": "nlme", + "Version": "3.1-161", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "b49e163093c0ef46fbbfc40bcb87916c", + "Requirements": [ + "lattice" + ] + }, + "nnet": { + "Package": "nnet", + "Version": "7.3-18", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "170da2130d5332bea7d6ede01875ba1d", + "Requirements": [] + }, + "oligo": { + "Package": "oligo", + "Version": "1.52.1", + "Source": "URL", + "RemoteType": "url", + "RemoteUrl": "https://bioconductor.org/packages/3.11/bioc/src/contrib/oligo_1.52.1.tar.gz", + "git_url": "https://git.bioconductor.org/packages/oligo", + "git_branch": "RELEASE_3_11", + "git_last_commit": "cbd66c8", + "git_last_commit_date": "2020-08-10", + "Hash": "25a32b15cf0656f2624672150de9d750", + "Requirements": [ + "Biobase", + "BiocGenerics", + "Biostrings", + "DBI", + "RSQLite", + "affxparser", + "affyio", + "ff", + "oligoClasses", + "preprocessCore", + "zlibbioc" + ] + }, + "oligoClasses": { + "Package": "oligoClasses", + "Version": "1.50.4", + "Source": "URL", + "RemoteType": "url", + "RemoteUrl": "https://bioconductor.org/packages/3.11/bioc/src/contrib/oligoClasses_1.50.4.tar.gz", + "git_url": "https://git.bioconductor.org/packages/oligoClasses", + "git_branch": "RELEASE_3_11", + "git_last_commit": "da7b856", + "git_last_commit_date": "2020-08-10", + "Hash": "f4190217bc7d1b697b37bd4711560084", + "Requirements": [ + "Biobase", + "BiocGenerics", + "BiocManager", + "Biostrings", + "DBI", + "GenomicRanges", + "IRanges", + "RSQLite", + "S4Vectors", + "SummarizedExperiment", + "affyio", + "ff", + "foreach" + ] + }, + "openssl": { + "Package": "openssl", + "Version": "1.4.2", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "b3209c62052922b6c629544d94c8fa8a", + "Requirements": [ + "askpass" + ] + }, + "pillar": { + "Package": "pillar", + "Version": "1.4.6", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "bdf26e55ccb7df3e49a490150277f002", + "Requirements": [ + "cli", + "crayon", + "ellipsis", + "fansi", + "lifecycle", + "rlang", + "utf8", + "vctrs" + ] + }, + "pkgbuild": { + "Package": "pkgbuild", + "Version": "1.1.0", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "404684bc4e3685007f9720adf13b06c1", + "Requirements": [ + "R6", + "callr", + "cli", + "crayon", + "desc", + "prettyunits", + "rprojroot", + "withr" + ] + }, + "pkgconfig": { + "Package": "pkgconfig", + "Version": "2.0.3", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "01f28d4278f15c76cddbea05899c5d6f", + "Requirements": [] + }, + "pkgload": { + "Package": "pkgload", + "Version": "1.1.0", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "b6b150cd4709e0c0c9b5d51ac4376282", + "Requirements": [ + "cli", + "crayon", + "desc", + "pkgbuild", + "rlang", + "rprojroot", + "rstudioapi", + "withr" + ] + }, + "plogr": { + "Package": "plogr", + "Version": "0.2.0", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "09eb987710984fc2905c7129c7d85e65", + "Requirements": [] + }, + "praise": { + "Package": "praise", + "Version": "1.0.0", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "a555924add98c99d2f411e37e7d25e9f", + "Requirements": [] + }, + "preprocessCore": { + "Package": "preprocessCore", + "Version": "1.50.0", + "Source": "URL", + "RemoteType": "url", + "RemoteUrl": "https://bioconductor.org/packages/3.11/bioc/src/contrib/preprocessCore_1.50.0.tar.gz", + "git_url": "https://git.bioconductor.org/packages/preprocessCore", + "git_branch": "RELEASE_3_11", + "git_last_commit": "9230366", + "git_last_commit_date": "2020-04-27", + "Hash": "4d183aca4311a7610cb96d14e528e73e", + "Requirements": [] + }, + "prettyunits": { + "Package": "prettyunits", + "Version": "1.1.1", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "95ef9167b75dde9d2ccc3c7528393e7e", + "Requirements": [] + }, + "processx": { + "Package": "processx", + "Version": "3.4.3", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "f4f13345fcb00c51ace12f65dd18749f", + "Requirements": [ + "R6", + "ps" + ] + }, + "progress": { + "Package": "progress", + "Version": "1.2.2", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "14dc9f7a3c91ebb14ec5bb9208a07061", + "Requirements": [ + "R6", + "crayon", + "hms", + "prettyunits" + ] + }, + "promises": { + "Package": "promises", + "Version": "1.1.1", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "a8730dcbdd19f9047774909f0ec214a4", + "Requirements": [ + "R6", + "Rcpp", + "later", + "magrittr", + "rlang" + ] + }, + "ps": { + "Package": "ps", + "Version": "1.3.3", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "425d938eb9c02906a8ac98c0c2a306b5", + "Requirements": [] + }, + "purrr": { + "Package": "purrr", + "Version": "0.3.4", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "97def703420c8ab10d8f0e6c72101e02", + "Requirements": [ + "magrittr", + "rlang" + ] + }, + "rcmdcheck": { + "Package": "rcmdcheck", + "Version": "1.3.3", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "ed95895886dab6d2a584da45503555da", + "Requirements": [ + "R6", + "callr", + "cli", + "crayon", + "desc", + "digest", + "pkgbuild", + "prettyunits", + "rprojroot", + "sessioninfo", + "withr", + "xopen" + ] + }, + "readr": { + "Package": "readr", + "Version": "2.1.3", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "2dfbfc673ccb3de3d8836b4b3bd23d14", + "Requirements": [ + "R6", + "cli", + "clipr", + "cpp11", + "crayon", + "hms", + "lifecycle", + "rlang", + "tibble", + "tzdb", + "vroom" + ] + }, + "rematch2": { + "Package": "rematch2", + "Version": "2.1.2", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "76c9e04c712a05848ae7a23d2f170a40", + "Requirements": [ + "tibble" + ] + }, + "remotes": { + "Package": "remotes", + "Version": "2.2.0", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "430a0908aee75b1fcba0e62857cab0ce", + "Requirements": [] + }, + "renv": { + "Package": "renv", + "Version": "0.16.0", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "c9e8442ab69bc21c9697ecf856c1e6c7", + "Requirements": [] + }, + "rex": { + "Package": "rex", + "Version": "1.2.0", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "093584b944440c5cd07a696b3c8e0e4c", + "Requirements": [ + "lazyeval" + ] + }, + "rlang": { + "Package": "rlang", + "Version": "1.0.6", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "4ed1f8336c8d52c3e750adcdc57228a7", + "Requirements": [] + }, + "roxygen2": { + "Package": "roxygen2", + "Version": "7.1.1", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "fcd94e00cc409b25d07ca50f7bf339f5", + "Requirements": [ + "R6", + "Rcpp", + "brew", + "commonmark", + "desc", + "digest", + "knitr", + "pkgload", + "purrr", + "rlang", + "stringi", + "stringr", + "xml2" + ] + }, + "rpart": { + "Package": "rpart", + "Version": "4.1.19", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "b3c892a81783376cc2204af0f5805a80", + "Requirements": [] + }, + "rprojroot": { + "Package": "rprojroot", + "Version": "1.3-2", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "f6a407ae5dd21f6f80a6708bbb6eb3ae", + "Requirements": [ + "backports" + ] + }, + "rstudioapi": { + "Package": "rstudioapi", + "Version": "0.11", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "33a5b27a03da82ac4b1d43268f80088a", + "Requirements": [] + }, + "rversions": { + "Package": "rversions", + "Version": "2.0.2", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "0ec41191f744d0f5afad8c6f35cc36e4", + "Requirements": [ + "curl", + "xml2" + ] + }, + "sessioninfo": { + "Package": "sessioninfo", + "Version": "1.1.1", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "308013098befe37484df72c39cf90d6e", + "Requirements": [ + "cli", + "withr" + ] + }, + "snow": { + "Package": "snow", + "Version": "0.4-4", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "40b74690debd20c57d93d8c246b305d4", + "Requirements": [] + }, + "spatial": { + "Package": "spatial", + "Version": "7.3-11", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "f27a078d834614513608da2c08031130", + "Requirements": [] + }, + "stringi": { + "Package": "stringi", + "Version": "1.4.6", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "e99d8d656980d2dd416a962ae55aec90", + "Requirements": [] + }, + "stringr": { + "Package": "stringr", + "Version": "1.4.0", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "0759e6b6c0957edb1311028a49a35e76", + "Requirements": [ + "glue", + "magrittr", + "stringi" + ] + }, + "survival": { + "Package": "survival", + "Version": "3.4-0", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "04411ae66ab4659230c067c32966fc20", + "Requirements": [ + "Matrix" + ] + }, + "sva": { + "Package": "sva", + "Version": "3.36.0", + "Source": "URL", + "RemoteType": "url", + "RemoteUrl": "https://bioconductor.org/packages/3.11/bioc/src/contrib/sva_3.36.0.tar.gz", + "git_url": "https://git.bioconductor.org/packages/sva", + "git_branch": "RELEASE_3_11", + "git_last_commit": "d92b71f", + "git_last_commit_date": "2020-04-27", + "Hash": "7063ce04e0eeec513cff2d23b1eef5b1", + "Requirements": [ + "BiocParallel", + "edgeR", + "genefilter", + "limma", + "matrixStats", + "mgcv" + ] + }, + "sys": { + "Package": "sys", + "Version": "3.4", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "b227d13e29222b4574486cfcbde077fa", + "Requirements": [] + }, + "testthat": { + "Package": "testthat", + "Version": "2.3.2", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "0829b987b8961fb07f3b1b64a2fbc495", + "Requirements": [ + "R6", + "cli", + "crayon", + "digest", + "ellipsis", + "evaluate", + "magrittr", + "pkgload", + "praise", + "rlang", + "withr" + ] + }, + "tibble": { + "Package": "tibble", + "Version": "3.0.3", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "08bd36bd34b20d4f7971d49e81deaab0", + "Requirements": [ + "cli", + "crayon", + "ellipsis", + "fansi", + "lifecycle", + "magrittr", + "pillar", + "pkgconfig", + "rlang", + "vctrs" + ] + }, + "tidyr": { + "Package": "tidyr", + "Version": "1.1.0", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "7395a05640bf91502dd475a84008d87e", + "Requirements": [ + "Rcpp", + "dplyr", + "ellipsis", + "glue", + "lifecycle", + "magrittr", + "purrr", + "rlang", + "stringi", + "tibble", + "tidyselect", + "vctrs" + ] + }, + "tidyselect": { + "Package": "tidyselect", + "Version": "1.2.0", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "79540e5fcd9e0435af547d885f184fd5", + "Requirements": [ + "cli", + "glue", + "lifecycle", + "rlang", + "vctrs", + "withr" + ] + }, + "tximport": { + "Package": "tximport", + "Version": "1.16.1", + "Source": "URL", + "RemoteType": "url", + "RemoteUrl": "https://bioconductor.org/packages/3.11/bioc/src/contrib/tximport_1.16.1.tar.gz", + "git_url": "https://git.bioconductor.org/packages/tximport", + "git_branch": "RELEASE_3_11", + "git_last_commit": "a4fe5d3", + "git_last_commit_date": "2020-06-05", + "Hash": "f75925813c3e168c8d5ec5c41e645d71", + "Requirements": [] + }, + "tzdb": { + "Package": "tzdb", + "Version": "0.3.0", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "b2e1cbce7c903eaf23ec05c58e59fb5e", + "Requirements": [ + "cpp11" + ] + }, + "usethis": { + "Package": "usethis", + "Version": "1.6.1", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "e1985f5a9985fea2e338fa7eb99018ca", + "Requirements": [ + "cli", + "clipr", + "crayon", + "curl", + "desc", + "fs", + "gh", + "git2r", + "glue", + "purrr", + "rematch2", + "rlang", + "rprojroot", + "rstudioapi", + "whisker", + "withr", + "yaml" + ] + }, + "utf8": { + "Package": "utf8", + "Version": "1.1.4", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "4a5081acfb7b81a572e4384a7aaf2af1", + "Requirements": [] + }, + "vctrs": { + "Package": "vctrs", + "Version": "0.4.1", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "8b54f22e2a58c4f275479c92ce041a57", + "Requirements": [ + "cli", + "glue", + "rlang" + ] + }, + "vroom": { + "Package": "vroom", + "Version": "1.6.1", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "7015a74373b83ffaef64023f4a0f5033", + "Requirements": [ + "bit64", + "cli", + "cpp11", + "crayon", + "glue", + "hms", + "lifecycle", + "progress", + "rlang", + "tibble", + "tidyselect", + "tzdb", + "vctrs", + "withr" + ] + }, + "whisker": { + "Package": "whisker", + "Version": "0.4", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "ca970b96d894e90397ed20637a0c1bbe", + "Requirements": [] + }, + "withr": { + "Package": "withr", + "Version": "2.2.0", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "ecd17882a0b4419545691e095b74ee89", + "Requirements": [] + }, + "xfun": { + "Package": "xfun", + "Version": "0.16", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "b4106139b90981a8bfea9c10bab0baf1", + "Requirements": [] + }, + "xml2": { + "Package": "xml2", + "Version": "1.3.2", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "d4d71a75dd3ea9eb5fa28cc21f9585e2", + "Requirements": [] + }, + "xopen": { + "Package": "xopen", + "Version": "1.0.0", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "6c85f015dee9cc7710ddd20f86881f58", + "Requirements": [ + "processx" + ] + }, + "xtable": { + "Package": "xtable", + "Version": "1.8-4", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "b8acdf8af494d9ec19ccb2481a9b11c2", + "Requirements": [] + }, + "yaml": { + "Package": "yaml", + "Version": "2.2.1", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "2826c5d9efb0a88f657c7a679c7106db", + "Requirements": [] + }, + "zlibbioc": { + "Package": "zlibbioc", + "Version": "1.34.0", + "Source": "URL", + "RemoteType": "url", + "RemoteUrl": "https://bioconductor.org/packages/3.11/bioc/src/contrib/zlibbioc_1.34.0.tar.gz", + "git_url": "https://git.bioconductor.org/packages/zlibbioc", + "git_branch": "RELEASE_3_11", + "git_last_commit": "2db035c", + "git_last_commit_date": "2020-04-27", + "Hash": "d9bbfbd67e8c4bced2f5c1ce4251a744", + "Requirements": [] + } + } +} diff --git a/common/R/renv_load.R b/common/R/renv_load.R new file mode 100644 index 000000000..abaf13935 --- /dev/null +++ b/common/R/renv_load.R @@ -0,0 +1,13 @@ +options(warn = 2) +options(repos = structure(c( + Bioconductor = "https://bioconductor.org/packages/3.11/bioc/", + BioconductorAnnotation = "https://bioconductor.org/packages/3.11/data/annotation/", + BioconductorExperiment = "https://bioconductor.org/packages/3.11/data/experiment", + CRAN = "https://cloud.r-project.org/" +))) +options(Ncpus = parallel::detectCores()) + +install.packages("renv") + +renv::consent(provided = TRUE) +renv::restore(prompt = FALSE) diff --git a/common/dockerfiles/Dockerfile.common_tests b/common/dockerfiles/Dockerfile.common_tests index da18704b2..015e89bb6 100644 --- a/common/dockerfiles/Dockerfile.common_tests +++ b/common/dockerfiles/Dockerfile.common_tests @@ -1,79 +1,31 @@ -FROM ubuntu:18.04 +FROM ccdlstaging/dr_base:latest -RUN apt-get update -qq -RUN apt-get install -y software-properties-common -RUN add-apt-repository ppa:apt-fast/stable -RUN apt-get update -qq -RUN apt-get -y install apt-fast - -# Prevent tzdata from prompting us for a timezone and hanging the build. -ENV DEBIAN_FRONTEND=noninteractive - -# The packages related to R are somewhat weird, see the README for more details. - -COPY workers/CRAN.gpg . -RUN \ - apt-fast update -qq && \ - apt-get install -y apt-transport-https && \ - apt-fast install -y lsb-release && \ - echo "deb https://cloud.r-project.org/bin/linux/ubuntu bionic-cran35/" \ - >> /etc/apt/sources.list.d/added_repos.list && \ - apt-key add CRAN.gpg && \ - apt-fast update -qq && \ - apt-fast install -y \ - ed \ - git \ - python3 \ - python3-pip \ - python3-dev \ - r-base-core \ - r-base-dev \ - libpq-dev \ - libxml2-dev \ - libssl-dev \ - libcurl4-openssl-dev \ - curl \ - wget && \ - rm -rf /var/lib/apt/lists/* -RUN rm CRAN.gpg - -RUN groupadd user && useradd --create-home --home-dir /home/user -g user user -WORKDIR /home/user - -ENV R_LIBS "/usr/local/lib/R/site-library" - -COPY common/install_devtools.R . - -RUN Rscript install_devtools.R - -COPY workers/install_bioc.R . - -RUN Rscript install_bioc.R - -COPY workers/install_affy_only.R . - -RUN Rscript install_affy_only.R +# Fail in case of an error at any stage in the pipe. +SHELL ["/bin/bash", "-o", "pipefail", "-c"] # Source: https://github.com/thisbejim/Pyrebase/issues/87#issuecomment-354452082 # For whatever reason this worked and 'en_US.UTF-8' did not. -ENV LANG C.UTF-8 +ENV LANG=C.UTF-8 +ENV R_LIBS=/usr/local/lib/R/site-library -COPY config config - -COPY common/requirements.txt . +WORKDIR /home/user -RUN pip3 install --no-cache-dir -r requirements.txt +COPY common/R/dependencies/common_tests/renv.lock . +COPY common/R/renv_load.R . +RUN Rscript renv_load.R -# Install this rpy2 here instead of via requirements.txt because -# pip-compile throws an error for it. -RUN pip3 install rpy2==3.4.5 +COPY common/requirements.txt . +RUN pip3 install --ignore-installed --no-cache-dir -r requirements.txt && \ + # Install this rpy2 here instead of via requirements.txt because + # pip-compile throws an error for it. + pip3 install --ignore-installed --no-cache-dir rpy2==3.4.5 COPY common/ . +COPY config config ARG SYSTEM_VERSION - -ENV SYSTEM_VERSION $SYSTEM_VERSION +ENV SYSTEM_VERSION=$SYSTEM_VERSION USER user -ENTRYPOINT [""] +ENTRYPOINT [] From 6ec7fa6731b8580f8491baaf41a37250a07b8e44 Mon Sep 17 00:00:00 2001 From: Arkadii Yakovets Date: Thu, 2 Feb 2023 10:01:41 -0800 Subject: [PATCH 063/220] Fix cache disk usage. --- workers/R/renv_load.R | 3 ++- workers/R/renv_save.R | 1 + workers/dockerfiles/Dockerfile.affymetrix | 2 ++ workers/dockerfiles/Dockerfile.affymetrix_local | 2 ++ workers/dockerfiles/Dockerfile.compendia | 2 ++ workers/dockerfiles/Dockerfile.downloaders | 2 ++ workers/dockerfiles/Dockerfile.illumina | 2 ++ workers/dockerfiles/Dockerfile.no_op | 2 ++ workers/dockerfiles/Dockerfile.salmon | 2 ++ workers/dockerfiles/Dockerfile.smasher | 2 ++ workers/dockerfiles/Dockerfile.transcriptome | 2 ++ 11 files changed, 21 insertions(+), 1 deletion(-) diff --git a/workers/R/renv_load.R b/workers/R/renv_load.R index abaf13935..8468d72ed 100644 --- a/workers/R/renv_load.R +++ b/workers/R/renv_load.R @@ -6,8 +6,9 @@ options(repos = structure(c( CRAN = "https://cloud.r-project.org/" ))) options(Ncpus = parallel::detectCores()) +options(renv.settings.use.cache = FALSE) install.packages("renv") renv::consent(provided = TRUE) -renv::restore(prompt = FALSE) +renv::restore(prompt = FALSE, rebuild = TRUE) diff --git a/workers/R/renv_save.R b/workers/R/renv_save.R index 5857f391b..6650cd06b 100644 --- a/workers/R/renv_save.R +++ b/workers/R/renv_save.R @@ -6,6 +6,7 @@ options(repos = structure(c( CRAN = "https://cloud.r-project.org/" ))) options(Ncpus = parallel::detectCores()) +options(renv.settings.use.cache = FALSE) install.packages("renv") diff --git a/workers/dockerfiles/Dockerfile.affymetrix b/workers/dockerfiles/Dockerfile.affymetrix index 14bf633a7..617ab1706 100644 --- a/workers/dockerfiles/Dockerfile.affymetrix +++ b/workers/dockerfiles/Dockerfile.affymetrix @@ -25,6 +25,8 @@ COPY .boto .boto COPY config/ config/ COPY workers/ . +RUN rm -rf /root/.cache/* + ARG SYSTEM_VERSION ENV SYSTEM_VERSION=$SYSTEM_VERSION diff --git a/workers/dockerfiles/Dockerfile.affymetrix_local b/workers/dockerfiles/Dockerfile.affymetrix_local index b4cab3676..7fe881ab0 100644 --- a/workers/dockerfiles/Dockerfile.affymetrix_local +++ b/workers/dockerfiles/Dockerfile.affymetrix_local @@ -19,6 +19,8 @@ RUN pip3 install --ignore-installed --no-cache-dir \ COPY config/ config/ COPY workers/ . +RUN rm -rf /root/.cache/* + ARG SYSTEM_VERSION ENV SYSTEM_VERSION=$SYSTEM_VERSION diff --git a/workers/dockerfiles/Dockerfile.compendia b/workers/dockerfiles/Dockerfile.compendia index d49e7918d..78b88af37 100644 --- a/workers/dockerfiles/Dockerfile.compendia +++ b/workers/dockerfiles/Dockerfile.compendia @@ -99,6 +99,8 @@ COPY .boto .boto COPY config/ config/ COPY workers/ . +RUN rm -rf /root/.cache/* + ARG SYSTEM_VERSION ENV SYSTEM_VERSION=$SYSTEM_VERSION diff --git a/workers/dockerfiles/Dockerfile.downloaders b/workers/dockerfiles/Dockerfile.downloaders index 534084860..b8f8a3082 100644 --- a/workers/dockerfiles/Dockerfile.downloaders +++ b/workers/dockerfiles/Dockerfile.downloaders @@ -41,6 +41,8 @@ COPY .boto .boto COPY config config COPY workers/ . +RUN rm -rf /root/.cache/* + ARG SYSTEM_VERSION ENV SYSTEM_VERSION=$SYSTEM_VERSION diff --git a/workers/dockerfiles/Dockerfile.illumina b/workers/dockerfiles/Dockerfile.illumina index 4bbbf9ea7..50c72d8fe 100644 --- a/workers/dockerfiles/Dockerfile.illumina +++ b/workers/dockerfiles/Dockerfile.illumina @@ -24,6 +24,8 @@ COPY workers/ . COPY workers/data_refinery_workers/processors/detect_database.R . COPY workers/illumina_probe_maps/ probe_maps/ +RUN rm -rf /root/.cache/* + ARG SYSTEM_VERSION ENV SYSTEM_VERSION=$SYSTEM_VERSION diff --git a/workers/dockerfiles/Dockerfile.no_op b/workers/dockerfiles/Dockerfile.no_op index a46c45fe8..ca8c33202 100644 --- a/workers/dockerfiles/Dockerfile.no_op +++ b/workers/dockerfiles/Dockerfile.no_op @@ -37,6 +37,8 @@ COPY .boto .boto COPY config/ config/ COPY workers/ . +RUN rm -rf /root/.cache/* + ARG SYSTEM_VERSION ENV SYSTEM_VERSION=$SYSTEM_VERSION diff --git a/workers/dockerfiles/Dockerfile.salmon b/workers/dockerfiles/Dockerfile.salmon index af93dbcb3..c10b5e290 100644 --- a/workers/dockerfiles/Dockerfile.salmon +++ b/workers/dockerfiles/Dockerfile.salmon @@ -58,6 +58,8 @@ COPY .boto .boto COPY config/ config/ COPY workers/ . +RUN rm -rf /root/.cache/* + ARG SYSTEM_VERSION ENV SYSTEM_VERSION=$SYSTEM_VERSION diff --git a/workers/dockerfiles/Dockerfile.smasher b/workers/dockerfiles/Dockerfile.smasher index 78258cf01..1c9905b2a 100644 --- a/workers/dockerfiles/Dockerfile.smasher +++ b/workers/dockerfiles/Dockerfile.smasher @@ -23,6 +23,8 @@ COPY .boto .boto COPY config/ config/ COPY workers/ . +RUN rm -rf /root/.cache/* + ARG SYSTEM_VERSION ENV SYSTEM_VERSION=$SYSTEM_VERSION diff --git a/workers/dockerfiles/Dockerfile.transcriptome b/workers/dockerfiles/Dockerfile.transcriptome index f7dbe3676..69020d49b 100644 --- a/workers/dockerfiles/Dockerfile.transcriptome +++ b/workers/dockerfiles/Dockerfile.transcriptome @@ -40,6 +40,8 @@ COPY .boto .boto COPY config/ config/ COPY workers/ . +RUN rm -rf /root/.cache/* + ARG SYSTEM_VERSION ENV SYSTEM_VERSION=$SYSTEM_VERSION From 29b8d24e7f8db875c92fa785b70730ffdaa7834a Mon Sep 17 00:00:00 2001 From: Arkadii Yakovets Date: Thu, 2 Feb 2023 10:25:52 -0800 Subject: [PATCH 064/220] Rename cron job script. --- .../foreman-server-instance-user-data.tpl.sh | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/infrastructure/foreman-configuration/foreman-server-instance-user-data.tpl.sh b/infrastructure/foreman-configuration/foreman-server-instance-user-data.tpl.sh index 3598c2a45..c53d368bf 100644 --- a/infrastructure/foreman-configuration/foreman-server-instance-user-data.tpl.sh +++ b/infrastructure/foreman-configuration/foreman-server-instance-user-data.tpl.sh @@ -77,8 +77,8 @@ docker run \\ -e DATABASE_PASSWORD=${database_password} \\ -v /tmp:/tmp \\ -it ${dockerhub_repo}/dr_\"\$1\" python3 manage.py \"\$2\" -" >> /home/ubuntu/run_cron_job.sh -chmod +x /home/ubuntu/run_cron_job.sh +" >> /home/ubuntu/run_manage_command.sh +chmod +x /home/ubuntu/run_manage_command.sh # Use Monit to ensure the Foreman is always running apt-get -y update @@ -112,9 +112,9 @@ service monit restart # Install the cron job tests crontab -l > tempcron cat <> tempcron -0 12 * * MON /bin/bash /home/ubuntu/run_cron_job.sh affymetrix check_brainarray_gene_agreement >> /var/log/cron_job_tests.log 2>&1 -0 12 * * MON /bin/bash /home/ubuntu/run_cron_job.sh affymetrix check_tx_index_transcript_agreement >> /var/log/cron_job_tests.log 2>&1 -0 12 * * ${accession_gathering_job_run_day} /bin/bash /home/ubuntu/run_cron_job.sh foreman gather_weekly_accessions >> /var/log/gather_weekly_accessions.log 2>&1 +0 12 * * MON /bin/bash /home/ubuntu/run_manage_command.sh affymetrix check_brainarray_gene_agreement >> /var/log/affymetrix_checks.log 2>&1 +0 12 * * MON /bin/bash /home/ubuntu/run_manage_command.sh affymetrix check_tx_index_transcript_agreement >> /var/log/affymetrix_checks.log 2>&1 +0 12 * * ${accession_gathering_job_run_day} /bin/bash /home/ubuntu/run_manage_command.sh foreman gather_weekly_accessions >> /var/log/weekly_accessions.log 2>&1 EOF # install new cron file crontab tempcron From 0698aee72eafe0bf91e1fa0a64b37bb23476b9f7 Mon Sep 17 00:00:00 2001 From: Arkadii Yakovets Date: Fri, 3 Feb 2023 10:26:31 -0800 Subject: [PATCH 065/220] Replace `count()` with `exists()`. --- api/data_refinery_api/views/dataset.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/api/data_refinery_api/views/dataset.py b/api/data_refinery_api/views/dataset.py index 87d4c69ed..9316409d8 100644 --- a/api/data_refinery_api/views/dataset.py +++ b/api/data_refinery_api/views/dataset.py @@ -54,7 +54,7 @@ def experiment_has_downloadable_samples(experiment, quant_sf_only=False): results__computedfile__s3_bucket__isnull=False, ) - if samples.count() == 0: + if not samples.exists(): return False else: @@ -128,7 +128,7 @@ def validate_dataset(data): results__computedfile__s3_key__isnull=False, results__computedfile__s3_bucket__isnull=False, ) - if samples_without_quant_sf.count(): + if samples_without_quant_sf.exists(): raise InvalidData( message="Sample(s) in dataset are missing quant.sf files. See `details` for a full list", details=[s.accession_code for s in samples_without_quant_sf], @@ -136,7 +136,7 @@ def validate_dataset(data): else: unprocessed_samples = samples.exclude(is_processed=True) - if unprocessed_samples.count(): + if unprocessed_samples.exists(): raise InvalidData( message="Non-downloadable sample(s) in dataset. See `details` for a full list", details=[s.accession_code for s in unprocessed_samples], From dca9bf7f44918c0b4014045d421a660cf26b7939 Mon Sep 17 00:00:00 2001 From: Arkadii Yakovets Date: Tue, 7 Feb 2023 14:32:15 -0800 Subject: [PATCH 066/220] Fix merge. --- .../foreman-server-instance-user-data.tpl.sh | 2 -- 1 file changed, 2 deletions(-) diff --git a/infrastructure/foreman-configuration/foreman-server-instance-user-data.tpl.sh b/infrastructure/foreman-configuration/foreman-server-instance-user-data.tpl.sh index 050e8f1f1..c53d368bf 100644 --- a/infrastructure/foreman-configuration/foreman-server-instance-user-data.tpl.sh +++ b/infrastructure/foreman-configuration/foreman-server-instance-user-data.tpl.sh @@ -112,11 +112,9 @@ service monit restart # Install the cron job tests crontab -l > tempcron cat <> tempcron - 0 12 * * MON /bin/bash /home/ubuntu/run_manage_command.sh affymetrix check_brainarray_gene_agreement >> /var/log/affymetrix_checks.log 2>&1 0 12 * * MON /bin/bash /home/ubuntu/run_manage_command.sh affymetrix check_tx_index_transcript_agreement >> /var/log/affymetrix_checks.log 2>&1 0 12 * * ${accession_gathering_job_run_day} /bin/bash /home/ubuntu/run_manage_command.sh foreman gather_weekly_accessions >> /var/log/weekly_accessions.log 2>&1 - EOF # install new cron file crontab tempcron From 1cf54ad55ad29fd62c7065fb0683855b2e90a46c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Peter=20St=C3=B6ckli?= Date: Wed, 8 Feb 2023 15:43:41 +0100 Subject: [PATCH 067/220] Fix typo in container registry domain --- scripts/prepare_image.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/scripts/prepare_image.sh b/scripts/prepare_image.sh index e791ce589..81975da90 100755 --- a/scripts/prepare_image.sh +++ b/scripts/prepare_image.sh @@ -104,7 +104,7 @@ else if test "$GITHUB_ACTIONS"; then # docker needs repositories to be lowercase - CACHE_REPO="$(echo "ghrc.io/$GITHUB_REPOSITORY" | tr '[:upper:]' '[:lower:]')" + CACHE_REPO="$(echo "ghcr.io/$GITHUB_REPOSITORY" | tr '[:upper:]' '[:lower:]')" CACHED_PACKAGE="$CACHE_REPO/dr_$image" CACHE="--build-arg BUILDKIT_INLINE_CACHE=1 --cache-from $CACHED_PACKAGE" fi From 231a8e1f20ce3c61936db3b3cd8f0a5f731155b3 Mon Sep 17 00:00:00 2001 From: Arkadii Yakovets Date: Thu, 16 Feb 2023 10:08:15 -0800 Subject: [PATCH 068/220] Address review comments. Fix git unrelated history issue. --- .../commands/post_downloads_summary.py | 196 ++++++++++++------ .../commands/test_post_downloads_summary.py | 128 ++++++++++-- 2 files changed, 237 insertions(+), 87 deletions(-) diff --git a/api/data_refinery_api/management/commands/post_downloads_summary.py b/api/data_refinery_api/management/commands/post_downloads_summary.py index 30a49cb1f..75db2db9b 100644 --- a/api/data_refinery_api/management/commands/post_downloads_summary.py +++ b/api/data_refinery_api/management/commands/post_downloads_summary.py @@ -1,7 +1,9 @@ import datetime +from collections import Counter from django.conf import settings from django.core.management.base import BaseCommand +from django.template.defaultfilters import pluralize from django.utils import timezone import requests @@ -9,109 +11,173 @@ from data_refinery_common.models import Dataset, DatasetAnnotation -def post_downloads_summary(days, channel): - start_time = timezone.now() - datetime.timedelta(days=days) +class Command(BaseCommand): + help = "Post downloads summary to Slack" + def add_arguments(self, parser): + parser.add_argument( + "--channel", + type=str, + default="ccdl-general", + help=("Optional parameter to choose the channel where the message will be posted."), + ) + parser.add_argument( + "--days", + type=int, + default=7, # Default to a week. + help=("Number of days in the past for which to build the stats."), + ) + parser.add_argument( + "--top-countries", + type=int, + default=5, + help=("Number of countries to show in the per country downloads summary."), + ) + + def handle(self, *args, **options): + post_downloads_summary(options["days"], options["channel"], options["top_countries"]) + + +def format_user_data(header, data): + """ + Formats user email, downloads count, location information sorted + by downloads count. + """ + # Allowed overhead for 2 column sorting: downloads count, email. + lines = sorted(data, key=lambda u: u[0].lower()) + lines = [ + f"{email.lower()} | {downloads} download{pluralize(downloads)} from {location}" + for email, downloads, location in sorted(lines, key=lambda u: u[1], reverse=True) + ] + lines.insert(0, header) + + return "\n".join(lines) + + +def get_user_location(ip_address): + """Gets user location information based on their IP address.""" + try: + data = requests.get(f"https://ipapi.co/{ip_address}/json/", timeout=10).json() + # The list of available fields https://ipapi.co/api/#complete-location + return ", ".join((data["city"], data["country_name"])) + except (requests.exceptions.RequestException, KeyError, ValueError): + return ip_address + + +def post_downloads_summary(days, channel, top_countries=5): + """Posts downloads summary to Slack channel.""" + + start_time = timezone.now() - datetime.timedelta(days=days) datasets = Dataset.processed_filtered_objects.filter( created_at__gt=start_time ).prefetch_related("datasetannotation_set") + annotations = DatasetAnnotation.objects.filter(dataset__in=datasets) + users_emails = set(dataset.email_address for dataset in datasets) - annotation_queryset = DatasetAnnotation.objects.filter(dataset__in=datasets) - - # Save the locations permanently, since IP addresses can cycle over time - location_cache = dict() - for annotation in annotation_queryset: + locations = set() + locations_cache = dict() + for annotation in annotations: if "location" not in annotation.data: - ip = annotation.data["ip"] - if ip not in location_cache: - location_cache[ip] = get_ip_location(ip) - annotation.data["location"] = location_cache[ip] + ip_address = annotation.data["ip"] + if ip_address not in locations_cache: + locations_cache[ip_address] = get_user_location(ip_address) + + # Save the locations permanently, since IP addresses can cycle over time. + annotation.data["location"] = locations_cache[ip_address] annotation.save() + locations.add(annotation.data["location"]) + + downloads_per_country = Counter() + downloads_total = 0 + new_users = [] + returning_users = [] + for user_email in users_emails: + user_annotations = annotations.filter(dataset__email_address=user_email) + user_downloads = user_annotations.count() + downloads_total += user_downloads + + user_locations = set() + for user_annotation in user_annotations: + user_locations.add(annotation.data["location"]) + try: + country = user_annotation.data["location"].split(", ")[1] + downloads_per_country.update({country: 1}) + except (IndexError, TypeError): + pass + + user_locations = "; ".join(sorted(user_locations)) + user_data = (user_email, user_downloads, user_locations) - unique_users = list(set(dataset.email_address for dataset in datasets)) - unique_locations = list(set(annotation.data["location"] for annotation in annotation_queryset)) - - new_users = "" - returning_users = "" - total_downloads = 0 - for email in unique_users: - user_annotations = annotation_queryset.filter(dataset__email_address=email) - downloads = user_annotations.count() - total_downloads += downloads - locations = ", ".join( - list(set(annotation.data["location"] for annotation in user_annotations)) - ) is_returning_user = Dataset.processed_filtered_objects.filter( - created_at__lt=start_time, email_address=email + created_at__lt=start_time, email_address=user_email ) - text = "{0} | {1} downloads from {2}\n".format(email, downloads, locations) if is_returning_user: - returning_users += text + returning_users.append(user_data) else: - new_users += text + new_users.append(user_data) - if total_downloads > 0: + if downloads_total: + locations_count = len(locations) + users_emails_count = len(users_emails) fallback_text = ( - f"In the last {days} days, {len(unique_users)} users downloaded {total_downloads}" - f" datasets from {len(unique_locations)} locations." + f"In the last {days} day{pluralize(days)}, {users_emails_count} " + f"user{pluralize(users_emails_count)} downloaded {downloads_total} " + f"dataset{pluralize(downloads_total)} from {locations_count} " + f"location{pluralize(locations_count)}." ) else: - fallback_text = f"There were no downloads in the last {days} days." + fallback_text = f"There were no downloads in the last {days} day{pluralize(days)}." blocks = [ {"type": "section", "text": {"type": "plain_text", "emoji": True, "text": fallback_text}} ] + if new_users: blocks.append( - {"type": "section", "text": {"type": "mrkdwn", "text": "*New users* \n" + new_users}} + { + "type": "section", + "text": {"type": "mrkdwn", "text": format_user_data("*New users*", new_users)}, + } ) + if returning_users: blocks.append( { "type": "section", - "text": {"type": "mrkdwn", "text": "*Returning users* \n" + returning_users}, + "text": { + "type": "mrkdwn", + "text": format_user_data("*Returning users*", returning_users), + }, + } + ) + + if top_countries and downloads_per_country: + countries_count = downloads_per_country.most_common(top_countries) + top_countries = min(top_countries, len(countries_count)) + lines = [f"*Top {top_countries} countr{pluralize(top_countries, 'y,ies')}*"] + # Allowed overhead for 2 column sorting: downloads count, country. + countries_count = sorted(countries_count, key=lambda cc: cc[0]) + countries_count = sorted(countries_count, key=lambda cc: cc[1], reverse=True) + for country, count in countries_count: + lines.append(f"{country}: {count} download{pluralize(count)}") + + blocks.append( + { + "type": "section", + "text": {"type": "mrkdwn", "text": "\n".join(lines)}, } ) - # Post to slack + # Post to Slack. requests.post( settings.ENGAGEMENTBOT_WEBHOOK, json={ "username": "EngagementBot", "icon_emoji": ":halal:", - "channel": "#" + channel, + "channel": f"#{channel}", "text": fallback_text, "blocks": blocks, }, headers={"Content-Type": "application/json"}, timeout=10, ) - - -class Command(BaseCommand): - help = "Post downloads summary to slack" - - def add_arguments(self, parser): - parser.add_argument( - "--days", - type=int, - default=7, # default to a week - help=("Number of days in the past for which to build the stats"), - ) - parser.add_argument( - "--channel", - type=str, - default="ccdl-general", - help=("Optional parameter to choose the channel where the message will be posted."), - ) - - def handle(self, *args, **options): - post_downloads_summary(options["days"], options["channel"]) - - -def get_ip_location(remote_ip): - try: - data = requests.get("https://ipapi.co/" + remote_ip + "/json/", timeout=10).json() - return "{0}, {1}".format(data["city"], data["country_name"]) - except (requests.exceptions.RequestException, ValueError, KeyError): - return remote_ip diff --git a/api/data_refinery_api/management/commands/test_post_downloads_summary.py b/api/data_refinery_api/management/commands/test_post_downloads_summary.py index f7b00b898..967986b42 100644 --- a/api/data_refinery_api/management/commands/test_post_downloads_summary.py +++ b/api/data_refinery_api/management/commands/test_post_downloads_summary.py @@ -9,51 +9,135 @@ class DownloadsPostTestCase(TestCase): - @patch("data_refinery_common.models.organism.requests.post") + @patch("data_refinery_api.management.commands.post_downloads_summary.requests.post") def test_post_download_summary_one_download(self, requests_post): dataset = Dataset(email_address="test@gmail.com", is_processed=True) dataset.save() - DatasetAnnotation(dataset=dataset, data={"location": "Testyville"}).save() + DatasetAnnotation(dataset=dataset, data={"location": "Testyville, TSA"}).save() - post_downloads_summary(7, "ccdl-general") + post_downloads_summary(7, "ccdl-general-test") + json = requests_post.mock_calls[0][2]["json"] - text = requests_post.mock_calls[0][2]["json"]["text"] - self.assertIn("1 users downloaded 1 datasets from 1 locations.", text) + self.assertEqual( + "In the last 7 days, 1 user downloaded 1 dataset from 1 location.", json["text"] + ) + self.assertEqual( + "\n".join(("*New users*", "test@gmail.com | 1 download from Testyville, TSA")), + json["blocks"][1]["text"]["text"], + ) + self.assertEqual( + "\n".join(("*Top 1 country*", "TSA: 1 download")), json["blocks"][2]["text"]["text"] + ) - @patch("data_refinery_common.models.organism.requests.post") + @patch("data_refinery_api.management.commands.post_downloads_summary.requests.post") def test_post_download_summary_two_downloads(self, requests_post): dataset = Dataset(email_address="test@gmail.com", is_processed=True) dataset.save() - DatasetAnnotation(dataset=dataset, data={"location": "Testyville"}).save() + DatasetAnnotation(dataset=dataset, data={"location": "Testyville, TSA"}).save() + + dataset = Dataset(email_address="test@gmail.com", is_processed=True) + dataset.save() + DatasetAnnotation(dataset=dataset, data={"location": "Testyville, TSA"}).save() + dataset = Dataset(email_address="test2@gmail.com", is_processed=True) dataset.save() - DatasetAnnotation(dataset=dataset, data={"location": "Not Testyville"}).save() + DatasetAnnotation(dataset=dataset, data={"location": "Not Testyville, Not TSA"}).save() - post_downloads_summary(7, "ccdl-general") + post_downloads_summary(7, "ccdl-general-test") + json = requests_post.mock_calls[0][2]["json"] - text = requests_post.mock_calls[0][2]["json"]["text"] - self.assertIn("2 users downloaded 2 datasets from 2 locations.", text) + self.assertEqual( + "In the last 7 days, 2 users downloaded 3 datasets from 2 locations.", json["text"] + ) + self.assertEqual( + "\n".join( + ( + "*New users*", + "test@gmail.com | 2 downloads from Testyville, TSA", + "test2@gmail.com | 1 download from Not Testyville, Not TSA", + ) + ), + json["blocks"][1]["text"]["text"], + ) + self.assertEqual( + "\n".join(("*Top 2 countries*", "TSA: 2 downloads", "Not TSA: 1 download")), + json["blocks"][2]["text"]["text"], + ) - @patch("data_refinery_common.models.organism.requests.post") + @patch("data_refinery_api.management.commands.post_downloads_summary.requests.post") + def test_post_download_summary_ordering(self, requests_post): + for _ in range(2): + dataset = Dataset(email_address="ATEST2@gmail.com", is_processed=True) + dataset.save() + DatasetAnnotation(dataset=dataset, data={"location": "Not Testyville, Not TSA"}).save() + + for _ in range(2): + dataset = Dataset(email_address="TEST@gmail.com", is_processed=True) + dataset.save() + DatasetAnnotation(dataset=dataset, data={"location": "Testyville, TSA"}).save() + + dataset = Dataset(email_address="TEST3@gmail.com", is_processed=True) + dataset.save() + DatasetAnnotation(dataset=dataset, data={"location": "Testbec City, Tanada"}).save() + + for _ in range(3): + dataset = Dataset(email_address="WEST@gmail.com", is_processed=True) + dataset.save() + DatasetAnnotation(dataset=dataset, data={"location": "Westyville, Texico"}).save() + + post_downloads_summary(7, "ccdl-general-test") + json = requests_post.mock_calls[0][2]["json"] + + self.assertEqual( + "In the last 7 days, 4 users downloaded 8 datasets from 4 locations.", json["text"] + ) + self.assertEqual( + "\n".join( + ( + "*New users*", + "west@gmail.com | 3 downloads from Westyville, Texico", + "atest2@gmail.com | 2 downloads from Not Testyville, Not TSA", + "test@gmail.com | 2 downloads from Testyville, TSA", + "test3@gmail.com | 1 download from Testbec City, Tanada", + ) + ), + json["blocks"][1]["text"]["text"], + ) + self.assertEqual( + "\n".join( + ( + "*Top 4 countries*", + "Texico: 3 downloads", + "Not TSA: 2 downloads", + "TSA: 2 downloads", + "Tanada: 1 download", + ) + ), + json["blocks"][2]["text"]["text"], + ) + + @patch("data_refinery_api.management.commands.post_downloads_summary.requests.post") def test_post_download_summary_filtered(self, requests_post): dataset = Dataset(email_address="test@gmail.com", is_processed=True) dataset.save() - DatasetAnnotation(dataset=dataset, data={"location": "Testyville"}).save() + DatasetAnnotation(dataset=dataset, data={"location": "Testyville, TSA"}).save() + last_week = timezone.now() - timedelta(days=8) dataset = Dataset(created_at=last_week, email_address="test2@gmail.com", is_processed=True) dataset.save() DatasetAnnotation( - created_at=last_week, dataset=dataset, data={"location": "Not Testyville"} + created_at=last_week, dataset=dataset, data={"location": "Testyville, TSA"} ).save() - post_downloads_summary(7, "ccdl-general") - - text = requests_post.mock_calls[0][2]["json"]["text"] - self.assertIn("1 users downloaded 1 datasets from 1 locations.", text) + post_downloads_summary(7, "ccdl-general-test") + json = requests_post.mock_calls[0][2]["json"] + self.assertEqual( + "In the last 7 days, 1 user downloaded 1 dataset from 1 location.", json["text"] + ) - @patch("data_refinery_common.models.organism.requests.post") + @patch("data_refinery_api.management.commands.post_downloads_summary.requests.post") def test_empty_post_download_summary(self, requests_post): - post_downloads_summary(7, "ccdl-general") + post_downloads_summary(7, "ccdl-general-test") - text = requests_post.mock_calls[0][2]["json"]["text"] - self.assertIn("no downloads", text) + json = requests_post.mock_calls[0][2]["json"] + self.assertEqual("There were no downloads in the last 7 days.", json["text"]) From 8ad2452bd158273d08444bb362e3f59409fb0b7a Mon Sep 17 00:00:00 2001 From: Arkadii Yakovets Date: Thu, 16 Feb 2023 10:15:47 -0800 Subject: [PATCH 069/220] Fix tests. --- .../management/commands/post_downloads_summary.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/api/data_refinery_api/management/commands/post_downloads_summary.py b/api/data_refinery_api/management/commands/post_downloads_summary.py index 75db2db9b..f43650cd5 100644 --- a/api/data_refinery_api/management/commands/post_downloads_summary.py +++ b/api/data_refinery_api/management/commands/post_downloads_summary.py @@ -98,7 +98,7 @@ def post_downloads_summary(days, channel, top_countries=5): user_locations = set() for user_annotation in user_annotations: - user_locations.add(annotation.data["location"]) + user_locations.add(user_annotation.data["location"]) try: country = user_annotation.data["location"].split(", ")[1] downloads_per_country.update({country: 1}) From 273bb3ce8d3ddb3cc59beacc9c57f93ddc33d91f Mon Sep 17 00:00:00 2001 From: Arkadii Yakovets Date: Fri, 3 Mar 2023 10:33:33 -0800 Subject: [PATCH 070/220] Update Github actions checkout to v3. --- .github/workflows/config.yml | 26 +++++++++++++------------- 1 file changed, 13 insertions(+), 13 deletions(-) diff --git a/.github/workflows/config.yml b/.github/workflows/config.yml index 1a7b832b0..74113e557 100644 --- a/.github/workflows/config.yml +++ b/.github/workflows/config.yml @@ -10,7 +10,7 @@ jobs: AWS_ACCESS_KEY_ID: ${{ secrets.AWS_ACCESS_KEY_ID }} AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_SECRET_ACCESS_KEY }} steps: - - uses: actions/checkout@v2 + - uses: actions/checkout@v3 - uses: hashicorp/setup-terraform@v1 with: @@ -37,7 +37,7 @@ jobs: DOCKER_BUILDKIT: 1 CODECOV_TOKEN: ${{ secrets.CODECOV_TOKEN }} steps: - - uses: actions/checkout@v2 + - uses: actions/checkout@v3 - name: Free up space run: ./.github/scripts/cleanup_instance.sh @@ -83,7 +83,7 @@ jobs: DOCKER_BUILDKIT: 1 CODECOV_TOKEN: ${{ secrets.CODECOV_TOKEN }} steps: - - uses: actions/checkout@v2 + - uses: actions/checkout@v3 - name: Login to Packages Container registry uses: docker/login-action@v1 @@ -125,7 +125,7 @@ jobs: DOCKER_BUILDKIT: 1 CODECOV_TOKEN: ${{ secrets.CODECOV_TOKEN }} steps: - - uses: actions/checkout@v2 + - uses: actions/checkout@v3 - name: Free up space run: ./.github/scripts/cleanup_instance.sh @@ -177,7 +177,7 @@ jobs: DOCKER_BUILDKIT: 1 CODECOV_TOKEN: ${{ secrets.CODECOV_TOKEN }} steps: - - uses: actions/checkout@v2 + - uses: actions/checkout@v3 - name: Login to Packages Container registry uses: docker/login-action@v1 @@ -226,7 +226,7 @@ jobs: DOCKER_BUILDKIT: 1 CODECOV_TOKEN: ${{ secrets.CODECOV_TOKEN }} steps: - - uses: actions/checkout@v2 + - uses: actions/checkout@v3 - name: Free up space run: ./.github/scripts/cleanup_instance.sh @@ -278,7 +278,7 @@ jobs: DOCKER_BUILDKIT: 1 CODECOV_TOKEN: ${{ secrets.CODECOV_TOKEN }} steps: - - uses: actions/checkout@v2 + - uses: actions/checkout@v3 - name: Login to Packages Container registry uses: docker/login-action@v1 @@ -321,7 +321,7 @@ jobs: DOCKER_BUILDKIT: 1 CODECOV_TOKEN: ${{ secrets.CODECOV_TOKEN }} steps: - - uses: actions/checkout@v2 + - uses: actions/checkout@v3 - name: Login to Packages Container registry uses: docker/login-action@v1 @@ -363,7 +363,7 @@ jobs: DOCKER_BUILDKIT: 1 CODECOV_TOKEN: ${{ secrets.CODECOV_TOKEN }} steps: - - uses: actions/checkout@v2 + - uses: actions/checkout@v3 - name: Free up space run: ./.github/scripts/cleanup_instance.sh @@ -426,7 +426,7 @@ jobs: DOCKER_BUILDKIT: 1 CODECOV_TOKEN: ${{ secrets.CODECOV_TOKEN }} steps: - - uses: actions/checkout@v2 + - uses: actions/checkout@v3 - name: Login to Packages Container registry uses: docker/login-action@v1 @@ -470,7 +470,7 @@ jobs: outputs: branch: ${{ steps.set_branch.outputs.branch }} steps: - - uses: actions/checkout@v2 + - uses: actions/checkout@v3 with: fetch-depth: 0 @@ -515,7 +515,7 @@ jobs: - test_smasher - test_transcriptome steps: - - uses: actions/checkout@v2 + - uses: actions/checkout@v3 with: fetch-depth: 0 @@ -576,7 +576,7 @@ jobs: needs: - determine_branch steps: - - uses: actions/checkout@v2 + - uses: actions/checkout@v3 with: fetch-depth: 0 From 0091e526b702bf65a820c9994b9c957cf28e7a19 Mon Sep 17 00:00:00 2001 From: Arkadii Yakovets Date: Fri, 3 Mar 2023 10:44:23 -0800 Subject: [PATCH 071/220] Update API requirements and run_tests.sh --- api/requirements.in | 4 +- api/requirements.txt | 188 +++++++++++-------------------------------- api/run_tests.sh | 1 + 3 files changed, 52 insertions(+), 141 deletions(-) diff --git a/api/requirements.in b/api/requirements.in index 5382ed624..e167ead49 100644 --- a/api/requirements.in +++ b/api/requirements.in @@ -1,5 +1,5 @@ coverage -django>=3.2.5 +django>=3.2,<4 psycopg2-binary boto3>=1.12.21 requests>=2.23.0 @@ -7,7 +7,7 @@ urllib3>=1.24.2 Jinja2>=2.11.3 # We need at least 1.1 because of https://github.com/pallets/markupsafe/issues/57 markupsafe>=1.1 -djangorestframework>=3.11.2 +djangorestframework<3.14.0 djangorestframework-hstore django-cors-headers django-filter diff --git a/api/requirements.txt b/api/requirements.txt index d3adfa3fa..59317c266 100644 --- a/api/requirements.txt +++ b/api/requirements.txt @@ -1,146 +1,56 @@ # -# This file is autogenerated by pip-compile +# This file is autogenerated by pip-compile with python 3.9 # To update, run: # -# pip-compile requirements.in +# pip-compile --annotation-style=line api/requirements.in # -apscheduler==3.7.0 - # via -r requirements.in -asgiref==3.3.4 - # via django -boto3==1.17.93 - # via -r requirements.in -botocore==1.20.93 - # via - # boto3 - # s3transfer -certifi==2021.5.30 - # via requests -chardet==4.0.0 - # via requests -coreapi==2.3.3 - # via - # -r requirements.in - # drf-yasg -coreschema==0.0.4 - # via - # coreapi - # drf-yasg -coverage==5.5 - # via -r requirements.in -django==3.2.15 - # via - # -r requirements.in - # django-cors-headers - # django-filter - # django-nine - # djangorestframework - # djangorestframework-hstore - # drf-yasg -django-computedfields==0.1.5 - # via -r requirements.in -django-cors-headers==3.7.0 - # via -r requirements.in -django-elasticsearch-dsl==6.5.0 - # via - # -r requirements.in - # django-elasticsearch-dsl-drf -django-elasticsearch-dsl-drf==0.22.1 - # via -r requirements.in -django-filter==2.4.0 - # via -r requirements.in -django-hstore==1.4.2 - # via djangorestframework-hstore -django-nine==0.2.4 - # via django-elasticsearch-dsl-drf -djangorestframework==3.12.4 - # via - # -r requirements.in - # django-elasticsearch-dsl-drf - # djangorestframework-hstore - # drf-yasg -djangorestframework-hstore==1.3 - # via -r requirements.in -drf-yasg==1.20.0 - # via -r requirements.in -elasticsearch==6.8.2 - # via - # django-elasticsearch-dsl-drf - # elasticsearch-dsl -elasticsearch-dsl==6.4.0 - # via - # -r requirements.in - # django-elasticsearch-dsl - # django-elasticsearch-dsl-drf -idna==2.10 - # via requests -inflection==0.5.1 - # via drf-yasg -itypes==1.2.0 - # via coreapi -jinja2==3.0.1 - # via - # -r requirements.in - # coreschema -jmespath==0.10.0 - # via - # boto3 - # botocore -markupsafe==2.0.1 - # via - # -r requirements.in - # jinja2 -packaging==20.9 - # via drf-yasg -psycopg2==2.8.6 - # via djangorestframework-hstore -psycopg2-binary==2.8.6 - # via -r requirements.in -pyparsing==2.4.7 - # via packaging -python-dateutil==2.8.1 - # via - # botocore - # elasticsearch-dsl -pytz==2021.1 - # via - # apscheduler - # django - # tzlocal -pyyaml==5.4.1 - # via -r requirements.in -requests==2.25.1 - # via - # -r requirements.in - # coreapi -ruamel-yaml==0.17.9 - # via drf-yasg -s3transfer==0.4.2 - # via boto3 -six==1.16.0 - # via - # -r requirements.in - # apscheduler - # django-elasticsearch-dsl - # django-elasticsearch-dsl-drf - # elasticsearch-dsl - # python-dateutil -sqlparse==0.4.2 - # via - # -r requirements.in - # django -tzlocal==2.1 - # via apscheduler -uritemplate==3.0.1 - # via - # coreapi - # drf-yasg -urllib3==1.26.5 - # via - # -r requirements.in - # botocore - # elasticsearch - # requests +apscheduler==3.10.0 # via -r api/requirements.in +asgiref==3.6.0 # via django +boto3==1.26.68 # via -r api/requirements.in +botocore==1.29.68 # via boto3, s3transfer +certifi==2022.12.7 # via requests +charset-normalizer==3.0.1 # via requests +coreapi==2.3.3 # via -r api/requirements.in, drf-yasg +coreschema==0.0.4 # via coreapi, drf-yasg +coverage==7.1.0 # via -r api/requirements.in +django==3.2.17 # via -r api/requirements.in, django-computedfields, django-cors-headers, django-fast-update, django-filter, django-nine, djangorestframework, djangorestframework-hstore, drf-yasg +django-computedfields==0.2.1 # via -r api/requirements.in +django-cors-headers==3.13.0 # via -r api/requirements.in +django-elasticsearch-dsl==6.5.0 # via -r api/requirements.in, django-elasticsearch-dsl-drf +django-elasticsearch-dsl-drf==0.22.5 # via -r api/requirements.in +django-fast-update==0.2.1 # via django-computedfields +django-filter==22.1 # via -r api/requirements.in +django-hstore==1.4.2 # via djangorestframework-hstore +django-nine==0.2.7 # via django-elasticsearch-dsl-drf +djangorestframework==3.13.1 # via -r api/requirements.in, django-elasticsearch-dsl-drf, djangorestframework-hstore, drf-yasg +djangorestframework-hstore==1.3 # via -r api/requirements.in +drf-yasg==1.21.5 # via -r api/requirements.in +elasticsearch==6.8.2 # via django-elasticsearch-dsl-drf, elasticsearch-dsl +elasticsearch-dsl==6.4.0 # via -r api/requirements.in, django-elasticsearch-dsl, django-elasticsearch-dsl-drf +idna==3.4 # via requests +inflection==0.5.1 # via drf-yasg +itypes==1.2.0 # via coreapi +jinja2==3.1.2 # via -r api/requirements.in, coreschema +jmespath==1.0.1 # via boto3, botocore +markupsafe==2.1.2 # via -r api/requirements.in, jinja2 +packaging==23.0 # via django-nine, drf-yasg +psycopg2==2.9.5 # via djangorestframework-hstore +psycopg2-binary==2.9.5 # via -r api/requirements.in +python-dateutil==2.8.2 # via botocore, elasticsearch-dsl +pytz==2022.7.1 # via apscheduler, django, djangorestframework, drf-yasg +pytz-deprecation-shim==0.1.0.post0 # via tzlocal +pyyaml==6.0 # via -r api/requirements.in +requests==2.28.2 # via -r api/requirements.in, coreapi +ruamel-yaml==0.17.21 # via drf-yasg +ruamel-yaml-clib==0.2.7 # via ruamel-yaml +s3transfer==0.6.0 # via boto3 +six==1.16.0 # via -r api/requirements.in, apscheduler, django-elasticsearch-dsl, django-elasticsearch-dsl-drf, elasticsearch-dsl, python-dateutil +sqlparse==0.4.3 # via -r api/requirements.in, django +typing-extensions==4.4.0 # via django-computedfields +tzdata==2022.7 # via pytz-deprecation-shim +tzlocal==4.2 # via apscheduler +uritemplate==4.1.1 # via coreapi, drf-yasg +urllib3==1.26.14 # via -r api/requirements.in, botocore, elasticsearch, requests # The following packages are considered to be unsafe in a requirements file: # setuptools diff --git a/api/run_tests.sh b/api/run_tests.sh index aea19826d..fedf4cbbe 100755 --- a/api/run_tests.sh +++ b/api/run_tests.sh @@ -46,5 +46,6 @@ docker run -t $INTERACTIVE \ --add-host=database:"$DB_HOST_IP" \ --add-host=elasticsearch:"$ES_HOST_IP" \ --env-file api/environments/test \ + --platform linux/amd64 \ --volume "$volume_directory":/home/user/data_store \ ccdlstaging/dr_api_local bash -c "$(run_tests_with_coverage "$@")" From 5d151bb5d07ecd83a1101eda57539ec1a7813efe Mon Sep 17 00:00:00 2001 From: Arkadii Yakovets Date: Fri, 3 Mar 2023 10:54:24 -0800 Subject: [PATCH 072/220] Update Docker base image. Use R v3.4. Remove R dependencies from the base image. --- common/R/install_devtools.R | 124 ----------------------------- common/dockerfiles/Dockerfile.base | 20 +++-- workers/CRAN.gpg | 44 ---------- 3 files changed, 12 insertions(+), 176 deletions(-) delete mode 100644 common/R/install_devtools.R delete mode 100644 workers/CRAN.gpg diff --git a/common/R/install_devtools.R b/common/R/install_devtools.R deleted file mode 100644 index e241152ea..000000000 --- a/common/R/install_devtools.R +++ /dev/null @@ -1,124 +0,0 @@ -# This script installs version 1.13.6 of the R package devtools. - -# Because devtools is the tool which will install specific versions of -# other R packages, it cannot be used it to install itself. However in -# order to ensure there are no dependency conflicts, it also needs to -# pin each version of its dependencies. - -# This script uses install.packages to install all of the dependencies -# for devtools, however install.packages unfortunately does not -# recursively install dependencies for the packages it -# installs. Therefore this script installs every dependency up the -# chain to devtools. It's not ideal, but it guarantees a stable -# install of devtools that won't break when a new version of devtools -# is released. - -# Cranlock was used to find the versions of dependencies to install - -# Treat warnings as errors, set CRAN mirror, and set parallelization: -options(warn = 2) -options(repos = structure(c(CRAN = "https://cloud.r-project.org/"))) -options(Ncpus = parallel::detectCores()) - - -install_package_version <- function(package_name, version) { - # This function install a specific version of a package. - - # However, because the most current version of a package lives in a - # different location than the older versions, we have to check where - # it can be found. - package_tarball <- paste0(package_name, "_", version, ".tar.gz") - package_url <- paste0("https://cloud.r-project.org/src/contrib/", package_tarball) - - # Give CRAN a full minute to timeout since it's not always the most reliable. - curl_result <- system(paste0("curl --head --connect-timeout 60 ", package_url), intern = TRUE) - if (grepl("404", curl_result[1])) { - package_url <- paste0("https://cloud.r-project.org/src/contrib/Archive/", package_name, "/", package_tarball) - - # Make sure the package actually exists in the archive! - curl_result <- system(paste0("curl --head --connect-timeout 120 ", package_url), intern = TRUE) - if (grepl("404", curl_result[1])) { - stop(paste("Package", package_name, "version", version, "does not exist!")) - } - } - - install.packages(package_url, Ncpus = 32) -} - -# Generated using cranlock -install_package_version("jsonlite", "1.7.0") -install_package_version("withr", "2.2.0") -install_package_version("crayon", "1.3.4") -install_package_version("fansi", "0.4.1") -install_package_version("glue", "1.4.1") -install_package_version("assertthat", "0.2.1") -install_package_version("cli", "2.0.2") -install_package_version("sessioninfo", "1.1.1") -install_package_version("rlang", "0.4.7") -install_package_version("ellipsis", "0.3.1") -install_package_version("xml2", "1.3.2") -install_package_version("curl", "4.3") -install_package_version("rversions", "2.0.2") -install_package_version("remotes", "2.2.0") -install_package_version("R6", "2.4.1") -install_package_version("praise", "1.0.0") -install_package_version("magrittr", "1.5") -install_package_version("digest", "0.6.25") -install_package_version("evaluate", "0.14") -install_package_version("backports", "1.1.8") -install_package_version("rprojroot", "1.3-2") -install_package_version("desc", "1.2.0") -install_package_version("prettyunits", "1.1.1") -install_package_version("ps", "1.3.3") -install_package_version("processx", "3.4.3") -install_package_version("callr", "3.4.3") -install_package_version("pkgbuild", "1.1.0") -install_package_version("rstudioapi", "0.11") -install_package_version("pkgload", "1.1.0") -install_package_version("testthat", "2.3.2") -install_package_version("mime", "0.9") -install_package_version("sys", "3.4") -install_package_version("askpass", "1.1") -install_package_version("openssl", "1.4.2") -install_package_version("httr", "1.4.2") -install_package_version("fs", "1.4.2") -install_package_version("git2r", "0.27.1") -install_package_version("whisker", "0.4") -install_package_version("clipr", "0.7.0") -install_package_version("ini", "0.3.1") -install_package_version("gh", "1.1.0") -install_package_version("utf8", "1.1.4") -install_package_version("lifecycle", "0.2.0") -install_package_version("vctrs", "0.3.2") -install_package_version("pillar", "1.4.6") -install_package_version("pkgconfig", "2.0.3") -install_package_version("tibble", "3.0.3") -install_package_version("rematch2", "2.1.2") -install_package_version("purrr", "0.3.4") -install_package_version("yaml", "2.2.1") -install_package_version("usethis", "1.6.1") -install_package_version("lazyeval", "0.2.2") -install_package_version("rex", "1.2.0") -install_package_version("covr", "3.5.0") -install_package_version("memoise", "1.1.0") -install_package_version("base64enc", "0.1-3") -install_package_version("htmltools", "0.5.0") -install_package_version("crosstalk", "1.1.0.1") -install_package_version("htmlwidgets", "1.5.1") -install_package_version("Rcpp", "1.0.5") -install_package_version("BH", "1.72.0-3") -install_package_version("later", "1.1.0.1") -install_package_version("promises", "1.1.1") -install_package_version("DT", "0.14") -install_package_version("commonmark", "1.7") -install_package_version("stringi", "1.4.6") -install_package_version("stringr", "1.4.0") -install_package_version("xfun", "0.16") -install_package_version("markdown", "1.1") -install_package_version("highr", "0.8") -install_package_version("knitr", "1.29") -install_package_version("brew", "1.0-6") -install_package_version("roxygen2", "7.1.1") -install_package_version("xopen", "1.0.0") -install_package_version("rcmdcheck", "1.3.3") -install_package_version("devtools", "2.3.1") diff --git a/common/dockerfiles/Dockerfile.base b/common/dockerfiles/Dockerfile.base index 5b833cef9..13987e894 100644 --- a/common/dockerfiles/Dockerfile.base +++ b/common/dockerfiles/Dockerfile.base @@ -12,7 +12,6 @@ ENV DEBIAN_FRONTEND=noninteractive # For whatever reason this worked and 'en_US.UTF-8' did not. ENV LANG=C.UTF-8 -COPY workers/CRAN.gpg . RUN apt-get update && \ apt-get install --no-install-recommends -y software-properties-common && \ add-apt-repository ppa:apt-fast/stable && \ @@ -23,43 +22,48 @@ RUN apt-get update && \ apt-fast \ apt-transport-https \ gpg-agent && \ - apt-key add CRAN.gpg && \ - echo "deb https://cloud.r-project.org/bin/linux/ubuntu bionic-cran35/" \ - >> /etc/apt/sources.list.d/added_repos.list && \ apt-fast update -qq && apt-fast install -y \ build-essential \ cmake \ curl \ + cython \ cython3 \ ed \ + file \ git \ libcairo-dev \ libcurl4-gnutls-dev \ libedit-dev \ + libfreetype6-dev \ + libfribidi-dev \ libgit2-dev \ + libharfbuzz-dev \ + libjpeg-dev \ + libpng-dev \ libpq-dev \ libssl-dev \ + libtiff5-dev \ libxml2-dev \ llvm-10-dev \ lsb-release \ mercurial \ pkg-config \ python3-pip \ + python3-pybind11 \ python3.8 \ python3.8-dev \ r-base-core \ wget && \ apt-get clean && \ - rm CRAN.gpg && \ rm -rf /var/lib/apt/lists/* && \ ln -s /usr/bin/llvm-config-10 /usr/bin/llvm-config && \ update-alternatives --install \ /usr/bin/python3 python3 /usr/bin/python3.8 1 && \ + pip3 install --upgrade pip setuptools && \ groupadd user && \ useradd --create-home --home-dir /home/user/ -g user user && \ chown -R user /home/user/ -# Pre-install dev tools. ENV R_LIBS=/usr/local/lib/R/site-library -COPY common/R/install_devtools.R . -RUN Rscript install_devtools.R + +ENTRYPOINT [] diff --git a/workers/CRAN.gpg b/workers/CRAN.gpg deleted file mode 100644 index e77c79f27..000000000 --- a/workers/CRAN.gpg +++ /dev/null @@ -1,44 +0,0 @@ ------BEGIN PGP PUBLIC KEY BLOCK----- - -mQENBEy9tcUBCACnWQfqdrcz7tQL/iCeWDYSYPwXpPMUMLE721HfFH7d8ErunPKP -Iwq1v4CrNmMjcainofbu/BfuZESSK1hBAItOk/5VTkzCJlzkrHY9g5v+XlBMPDQC -9u4AE/myw3p52+0NXsnBz+a35mxJKMl+9v9ztvueA6EmLr2xaLf/nx4XwXUMSi1L -p8i8XpAOz/Xg1fspPMRhuDAGYDnOh4uH1jADGoqYaPMty0yVEmzx74qvdIOvfgj1 -6A/9LYXk67td6/JQ5LFCZmFsbahAsqi9inNgBZmnfXO4m4lhzeqNjJAgaw7Fz2zq -UmvpEheKKClgTQMWWNI9Rx1L8IKnJkuKnpzHABEBAAG0I01pY2hhZWwgUnV0dGVy -IDxtYXJ1dHRlckBnbWFpbC5jb20+iQFVBBMBCgA/AhsjBgsJCAcDAgYVCAIJCgsE -FgIDAQIeAQIXgBYhBOKYo6glwNZd/VfLtlFxZhnghNq5BQJfdcXRBQkf4HiMAAoJ -EFFxZhnghNq5Nj8IAIqCTIJ/tMjZqiuwe7M4DQjpvGn4/QylkYLxn9dOds2nGz82 -FAukEAR3tmi22TETrqm+UOukFYUnAEOez7BJiWPwCDt9WuD4/Be8rzbjL0wEv/xu -D1JHWxVd2DfbJG1PAsuv7ouFYbIdh24a8gYpasd6twdbPOdZa0mbzVOnwAmHiH1l -gv2oY/McOO7unc/YGuD2lTb5ohK8yYdHsL5WYK7REPGqEGBS+ppUPWjI1qQb/g2X -oSVfbLLiXiwdvBS4hzjiwGNe76B2jDuHsfmQFMdVpOzNKN0dk10Nm8MFFPrirUIl -Uwk45UttOrcrs5hluLYZhMYHPJ/UNYnaJeJH58iJAT4EEwECACgCGyMGCwkIBwMC -BhUIAgkKCwQWAgMBAh4BAheABQJWI9aNBQkSzCJAAAoJEFFxZhnghNq5/UEH/39q -0IDpE52iqcu7fFWy0ZuENfTeAkV/T8HQ4+CsnZLhih8+DjEDDsde2DKBj/69f8NJ -Q0VOW5LcfSgvgFLBKy+8i1Pp+1rTiBsSU/0kwW/Gky+WKCEqmDLcP0AaMjnCLw9J -cmf3V2xbVeZCPs6iHo6bpNBt31b5YcM8dyY2Ee8yCW4K8LVlP8ndFJtKVkhs2VCz -IAM71McWuQ3IHZxl7wdbpra/I/sDIwaWZd8p0cNBMbVq0PN3/SYAhIqBjgJSBPVQ -Ym7EbfY3Z4/Bxz+BahEdAbkwP7Gbqh6eGGA51T5/RNyssf2fofgGADg9NlHz9pqN -7vx2IlJRrN/pxFobR4OJAT4EEwECACgFAky9tcUCGyMFCQlmAYAGCwkIBwMCBhUI -AgkKCwQWAgMBAh4BAheAAAoJEFFxZhnghNq5PL0H/iGY9DsJKrDk5Lm3xTnLfwGW -od+WoV6/eWVfrywO3Nh/FC5BVLd/E4GgaYVD8tJ9dBiEMboFlricO4NkSBvzUy+P -QMkOXiWbIx0Ggi9eG90Q8N3+us4b7W3b5Ljb1b00g5sppkKz1pu/Z+ciGu3IBbFz -+I1HmsmY1ejO8lUYCAB42EFKu9moVo8n/8GSVsmF9WA3C3gaC0WXW9pTssxoys5Y -D0fJ3x1YAa4iFthc44WPVZn86FSVheewh7xfNonXLovJWQIuFon4xW0bBNesVdGE -EtCWEJgF87bmL88ZRZK9GEjyf+v5Ew067LUeUVt7FFiu09c4tuI7wCUW4ixf2dG5 -AQ0ETL21xQEIANhwKBAIIXVZRKftz9Vc2+CZfO+/eVVf1aRXhB2lwleK1eCVd1Nn -BXEa/cDEO5osTDFbutuopE/NY2OPjFMfG3Zi1SMT6YtXnwAVpBBTdqV1gbwk+vZ6 -iEw1mqnYEbah1zPDl5o7mXkROMLWcdSMNSby6zdNXcBc5qMCOC4a+kbcMqfH+Ca5 -2swFVIAQTriR5/IGZJHrzfOReHD42BtMgP1dbU5KoT58tB/RnNASiMx19gh5XxDm -wwCZTcn0B2WnIOtlphGaKmGDDw9lMxqGHP+joHPunpWoDg1yavbbmee0iyNRTPSI -rpOxo6L0qsXbdHD4gNQl5iR1VvAapq+AkbUAEQEAAYkBPAQYAQoAJgIbDBYhBOKY -o6glwNZd/VfLtlFxZhnghNq5BQJfdcYKBQkf4HjFAAoJEFFxZhnghNq5J2MH/13z -MlB45Qire0mklv3z/Q0HVHTgV8QTRWNdb2GTOQAWQjJZrupkz/MlwmFejoSJo1uM -/Dhb19PNnLyVQ7onHBd7+aeKJ+Tbzlw2dHkgjO3bkRVFVBg0U2xg5a7NXlqSoaAz -Wi+py6bQR+Qj1AIbZNL9s24LSUfazPc2hO7TsNQoOUCGBQ8zvot2oRXOe/4lOmja -YFTb13KXr5ozrKzkm66p07QM5lXmrdsgterKUDdf00+zEXG+vo+j5qnz77Tghahi -vkZip3FwW5APP+/8fWrQRSMzBToFWGZuLri4uef+P/7D2jiqon7LxHKcTkL+MajT -gwrtuH5bI7hL2445uew= -=TIsN ------END PGP PUBLIC KEY BLOCK----- From 5cd9d96d5a2e3c457e9f484e1fbb1c0b8d5e3a37 Mon Sep 17 00:00:00 2001 From: Arkadii Yakovets Date: Fri, 3 Mar 2023 11:09:12 -0800 Subject: [PATCH 073/220] Update common requirements. --- common/requirements.in | 6 +- common/requirements.txt | 148 +++++++++++++--------------------------- 2 files changed, 50 insertions(+), 104 deletions(-) diff --git a/common/requirements.in b/common/requirements.in index a5d3e724a..0002337e5 100644 --- a/common/requirements.in +++ b/common/requirements.in @@ -1,5 +1,5 @@ coverage -django>=3.2.5 +django>=3.2,<4 psycopg2-binary>=2.8.4 boto3>=1.12.21 requests>=2.23.0 @@ -11,8 +11,10 @@ elasticsearch-dsl<7.0.0 django-elasticsearch-dsl-drf # Can't go above 6.X without upgrading elasticsearch django-elasticsearch-dsl==6.5.0 -djangorestframework>=3.11.2 +djangorestframework<3.14.0 vcrpy django-computedfields>=0.1.5 pyyaml>=5.4 sqlparse>=0.4.2 +markupsafe==2.0.0 +rpy2==3.4.5 diff --git a/common/requirements.txt b/common/requirements.txt index b8efe2dea..d5b0e70fe 100644 --- a/common/requirements.txt +++ b/common/requirements.txt @@ -1,106 +1,50 @@ # -# This file is autogenerated by pip-compile +# This file is autogenerated by pip-compile with python 3.9 # To update, run: # -# pip-compile requirements.in +# pip-compile --annotation-style=line common/requirements.in # -asgiref==3.3.4 - # via django -boto3==1.17.93 - # via -r requirements.in -botocore==1.20.93 - # via - # boto3 - # s3transfer -certifi==2021.5.30 - # via requests -chardet==4.0.0 - # via requests -coverage==5.5 - # via -r requirements.in -daiquiri==3.0.0 - # via -r requirements.in -django==3.2.15 - # via - # -r requirements.in - # django-nine - # djangorestframework -django-computedfields==0.1.5 - # via -r requirements.in -django-elasticsearch-dsl==6.5.0 - # via - # -r requirements.in - # django-elasticsearch-dsl-drf -django-elasticsearch-dsl-drf==0.22.1 - # via -r requirements.in -django-nine==0.2.4 - # via django-elasticsearch-dsl-drf -djangorestframework==3.12.4 - # via - # -r requirements.in - # django-elasticsearch-dsl-drf -elasticsearch==6.8.2 - # via - # django-elasticsearch-dsl-drf - # elasticsearch-dsl -elasticsearch-dsl==6.4.0 - # via - # -r requirements.in - # django-elasticsearch-dsl - # django-elasticsearch-dsl-drf -idna==2.10 - # via - # requests - # yarl -jmespath==0.10.0 - # via - # boto3 - # botocore -multidict==5.1.0 - # via yarl -psycopg2-binary==2.8.6 - # via -r requirements.in -python-dateutil==2.8.1 - # via - # botocore - # elasticsearch-dsl -python-json-logger==2.0.1 - # via daiquiri -pytz==2021.1 - # via django -pyyaml==5.4.1 - # via - # -r requirements.in - # vcrpy -raven==6.10.0 - # via -r requirements.in -requests==2.25.1 - # via -r requirements.in -retrying==1.3.3 - # via -r requirements.in -s3transfer==0.4.2 - # via boto3 -six==1.16.0 - # via - # django-elasticsearch-dsl - # django-elasticsearch-dsl-drf - # elasticsearch-dsl - # python-dateutil - # retrying - # vcrpy -sqlparse==0.4.2 - # via - # -r requirements.in - # django -urllib3==1.26.5 - # via - # -r requirements.in - # botocore - # elasticsearch - # requests -vcrpy==4.1.1 - # via -r requirements.in -wrapt==1.12.1 - # via vcrpy -yarl==1.6.3 - # via vcrpy +asgiref==3.6.0 # via django +boto3==1.26.71 # via -r common/requirements.in +botocore==1.29.71 # via boto3, s3transfer +certifi==2022.12.7 # via requests +cffi==1.15.1 # via rpy2 +charset-normalizer==3.0.1 # via requests +coverage==7.1.0 # via -r common/requirements.in +daiquiri==3.2.1 # via -r common/requirements.in +django==3.2.18 # via -r common/requirements.in, django-computedfields, django-fast-update, django-nine, djangorestframework +django-computedfields==0.2.1 # via -r common/requirements.in +django-elasticsearch-dsl==6.5.0 # via -r common/requirements.in, django-elasticsearch-dsl-drf +django-elasticsearch-dsl-drf==0.22.5 # via -r common/requirements.in +django-fast-update==0.2.1 # via django-computedfields +django-nine==0.2.7 # via django-elasticsearch-dsl-drf +djangorestframework==3.13.1 # via -r common/requirements.in, django-elasticsearch-dsl-drf +elasticsearch==6.8.2 # via django-elasticsearch-dsl-drf, elasticsearch-dsl +elasticsearch-dsl==6.4.0 # via -r common/requirements.in, django-elasticsearch-dsl, django-elasticsearch-dsl-drf +idna==3.4 # via requests, yarl +jinja2==3.1.2 # via rpy2 +jmespath==1.0.1 # via boto3, botocore +markupsafe==2.0.0 # via -r common/requirements.in, jinja2 +multidict==6.0.4 # via yarl +packaging==23.0 # via django-nine +psycopg2-binary==2.9.5 # via -r common/requirements.in +pycparser==2.21 # via cffi +python-dateutil==2.8.2 # via botocore, elasticsearch-dsl +python-json-logger==2.0.6 # via daiquiri +pytz==2022.7.1 # via django, djangorestframework, rpy2 +pytz-deprecation-shim==0.1.0.post0 # via tzlocal +pyyaml==6.0 # via -r common/requirements.in, vcrpy +raven==6.10.0 # via -r common/requirements.in +requests==2.28.2 # via -r common/requirements.in +retrying==1.3.4 # via -r common/requirements.in +rpy2==3.4.5 # via -r common/requirements.in +s3transfer==0.6.0 # via boto3 +six==1.16.0 # via django-elasticsearch-dsl, django-elasticsearch-dsl-drf, elasticsearch-dsl, python-dateutil, retrying, vcrpy +sqlparse==0.4.3 # via -r common/requirements.in, django +typing-extensions==4.5.0 # via django-computedfields +tzdata==2022.7 # via pytz-deprecation-shim +tzlocal==4.2 # via rpy2 +urllib3==1.26.14 # via -r common/requirements.in, botocore, elasticsearch, requests +vcrpy==4.2.1 # via -r common/requirements.in +wrapt==1.14.1 # via vcrpy +yarl==1.8.2 # via vcrpy From 3857b0f89608ac6c3ce5f8114b507e103d32d98e Mon Sep 17 00:00:00 2001 From: Arkadii Yakovets Date: Fri, 3 Mar 2023 11:14:28 -0800 Subject: [PATCH 074/220] Add setup.py. --- common/setup.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/common/setup.py b/common/setup.py index 7bb05f857..64d62624c 100644 --- a/common/setup.py +++ b/common/setup.py @@ -26,7 +26,7 @@ "boto3>=1.9.16", "coverage>=4.5.1", "daiquiri>=1.5.0", - "django>=2.1.8", + "django>=3.2,<4", "raven>=6.9.0", "requests>=2.10.1", "retrying>=1.3.3", From 8ff42fad178f93253e29acc2028ba6de495d8667 Mon Sep 17 00:00:00 2001 From: Arkadii Yakovets Date: Fri, 3 Mar 2023 11:23:44 -0800 Subject: [PATCH 075/220] Update common tests: - Update docker image build instructions. - Fix microarray test data path. - Add platform flag to test run command. --- common/dockerfiles/Dockerfile.common_tests | 76 +++------------------- common/run_tests.sh | 1 + common/tests/test_microarray.py | 8 +-- 3 files changed, 15 insertions(+), 70 deletions(-) diff --git a/common/dockerfiles/Dockerfile.common_tests b/common/dockerfiles/Dockerfile.common_tests index da18704b2..2a31940f4 100644 --- a/common/dockerfiles/Dockerfile.common_tests +++ b/common/dockerfiles/Dockerfile.common_tests @@ -1,79 +1,23 @@ -FROM ubuntu:18.04 +FROM ccdlstaging/dr_base:latest -RUN apt-get update -qq -RUN apt-get install -y software-properties-common -RUN add-apt-repository ppa:apt-fast/stable -RUN apt-get update -qq -RUN apt-get -y install apt-fast +# Fail in case of an error at any stage in the pipe. +SHELL ["/bin/bash", "-o", "pipefail", "-c"] -# Prevent tzdata from prompting us for a timezone and hanging the build. -ENV DEBIAN_FRONTEND=noninteractive - -# The packages related to R are somewhat weird, see the README for more details. - -COPY workers/CRAN.gpg . -RUN \ - apt-fast update -qq && \ - apt-get install -y apt-transport-https && \ - apt-fast install -y lsb-release && \ - echo "deb https://cloud.r-project.org/bin/linux/ubuntu bionic-cran35/" \ - >> /etc/apt/sources.list.d/added_repos.list && \ - apt-key add CRAN.gpg && \ - apt-fast update -qq && \ - apt-fast install -y \ - ed \ - git \ - python3 \ - python3-pip \ - python3-dev \ - r-base-core \ - r-base-dev \ - libpq-dev \ - libxml2-dev \ - libssl-dev \ - libcurl4-openssl-dev \ - curl \ - wget && \ - rm -rf /var/lib/apt/lists/* -RUN rm CRAN.gpg - -RUN groupadd user && useradd --create-home --home-dir /home/user -g user user WORKDIR /home/user -ENV R_LIBS "/usr/local/lib/R/site-library" - -COPY common/install_devtools.R . - -RUN Rscript install_devtools.R - -COPY workers/install_bioc.R . - -RUN Rscript install_bioc.R - -COPY workers/install_affy_only.R . - -RUN Rscript install_affy_only.R - -# Source: https://github.com/thisbejim/Pyrebase/issues/87#issuecomment-354452082 -# For whatever reason this worked and 'en_US.UTF-8' did not. -ENV LANG C.UTF-8 - -COPY config config +COPY common/R/dependencies/common_tests/renv.lock . +COPY common/R/renv_load.R . +RUN Rscript renv_load.R COPY common/requirements.txt . - -RUN pip3 install --no-cache-dir -r requirements.txt - -# Install this rpy2 here instead of via requirements.txt because -# pip-compile throws an error for it. -RUN pip3 install rpy2==3.4.5 +RUN pip3 install --ignore-installed --no-cache-dir -r requirements.txt COPY common/ . +COPY config config ARG SYSTEM_VERSION - -ENV SYSTEM_VERSION $SYSTEM_VERSION +ENV SYSTEM_VERSION=$SYSTEM_VERSION USER user -ENTRYPOINT [""] +ENTRYPOINT [] diff --git a/common/run_tests.sh b/common/run_tests.sh index 06de9ac44..dfed8defd 100755 --- a/common/run_tests.sh +++ b/common/run_tests.sh @@ -40,5 +40,6 @@ docker run -t $INTERACTIVE \ --add-host=database:"$DB_HOST_IP" \ --add-host=elasticsearch:"$ES_HOST_IP" \ --env-file common/environments/test \ + --platform linux/amd64 \ --volume "$volume_directory":/home/user/data_store \ ccdlstaging/dr_common_tests bash -c "$(run_tests_with_coverage "$@")" --parallel diff --git a/common/tests/test_microarray.py b/common/tests/test_microarray.py index 4bc66d039..32c87b648 100644 --- a/common/tests/test_microarray.py +++ b/common/tests/test_microarray.py @@ -6,15 +6,15 @@ class MicroarrayTestCase(TestCase): def test_get_platform_from_CEL(self): self.assertEqual( - "hgu95av2", microarray.get_platform_from_CEL("test/data/microarray/C30057.CEL.gz") + "hgu95av2", microarray.get_platform_from_CEL("tests/data/microarray/C30057.CEL.gz") ) self.assertEqual( - "rgu34a", microarray.get_platform_from_CEL("test/data/microarray/SG2_u34a.CEL.gz") + "rgu34a", microarray.get_platform_from_CEL("tests/data/microarray/SG2_u34a.CEL.gz") ) self.assertEqual( "mouse4302", - microarray.get_platform_from_CEL("test/data/microarray/97_(Mouse430_2).CEL.gz"), + microarray.get_platform_from_CEL("tests/data/microarray/97_(Mouse430_2).CEL.gz"), ) self.assertEqual( - "zebgene11st", microarray.get_platform_from_CEL("test/data/microarray/CONTROL6.cel.gz") + "zebgene11st", microarray.get_platform_from_CEL("tests/data/microarray/CONTROL6.cel.gz") ) From 2f4c8dfe4d961f5600cf55d856b29d4cca4fbecf Mon Sep 17 00:00:00 2001 From: Arkadii Yakovets Date: Fri, 3 Mar 2023 11:40:03 -0800 Subject: [PATCH 076/220] Use docker base image for foreman. --- foreman/dockerfiles/Dockerfile.foreman | 26 +------------------------- 1 file changed, 1 insertion(+), 25 deletions(-) diff --git a/foreman/dockerfiles/Dockerfile.foreman b/foreman/dockerfiles/Dockerfile.foreman index 043ab3700..f1781ec0a 100644 --- a/foreman/dockerfiles/Dockerfile.foreman +++ b/foreman/dockerfiles/Dockerfile.foreman @@ -1,32 +1,8 @@ -FROM ubuntu:18.04 +FROM ccdlstaging/dr_base:latest # Fail in case of an error at any stage in the pipe. SHELL ["/bin/bash", "-o", "pipefail", "-c"] -# Source: https://github.com/thisbejim/Pyrebase/issues/87#issuecomment-354452082 -# For whatever reason this worked and 'en_US.UTF-8' did not. -ENV LANG=C.UTF-8 - -# Prevent tzdata from prompting us for a timezone and hanging the build. -ENV DEBIAN_FRONTEND=noninteractive - -RUN apt-get update -qq && \ - apt-get install --no-install-recommends -y software-properties-common && \ - add-apt-repository ppa:apt-fast/stable && \ - apt-get update -qq && \ - apt-get install --no-install-recommends -y apt-fast && \ - apt-fast update -qq && \ - apt-fast install -y \ - gcc \ - libpq-dev \ - python3 \ - python3-pip && \ - apt-get clean && \ - rm -rf /var/lib/apt/lists/* && \ - groupadd user && \ - useradd --create-home --home-dir /home/user -g user user && \ - pip3 install --ignore-installed --upgrade pip - WORKDIR /home/user COPY foreman/requirements.txt . From 26ffbeed2c894fa02faba11739935e87519fa082 Mon Sep 17 00:00:00 2001 From: Arkadii Yakovets Date: Fri, 3 Mar 2023 11:42:07 -0800 Subject: [PATCH 077/220] Update foreman requirements. --- foreman/requirements.in | 19 +++++----- foreman/requirements.txt | 78 ++++++++++++++++++++-------------------- 2 files changed, 49 insertions(+), 48 deletions(-) diff --git a/foreman/requirements.in b/foreman/requirements.in index 5559a7856..20b88a17f 100644 --- a/foreman/requirements.in +++ b/foreman/requirements.in @@ -1,22 +1,23 @@ -django>=3.2.5 -psycopg2-binary>=2.8.4 -requests>=2.20.0 +django>=3.2,<4 +psycopg2-binary +requests retrying coverage -GEOparse>=2.0.3 +geoparse python-dateutil raven pyrefinebio>=0.4.7 tblib -djangorestframework>=3.11.2 +djangorestframework<3.14.0 # Can't go above 6.X without upgrading elasticsearch django-elasticsearch-dsl==6.5.0 django-elasticsearch-dsl-drf>=0.17.1 elasticsearch-dsl>=6.1.0,<7.0.0 vcrpy -django-computedfields>=0.1.5 -pyyaml>=5.4 +django-computedfields +pyyaml # For end-to-end tests -numpy +numpy==1.19.5 +pandas==1.1.5 scipy -sqlparse>=0.4.2 +sqlparse diff --git a/foreman/requirements.txt b/foreman/requirements.txt index b14125bff..bd5406014 100644 --- a/foreman/requirements.txt +++ b/foreman/requirements.txt @@ -1,46 +1,46 @@ # -# This file is autogenerated by pip-compile +# This file is autogenerated by pip-compile with python 3.9 # To update, run: # -# pip-compile requirements.in +# pip-compile --annotation-style=line foreman/requirements.in # -asgiref==3.3.4 # via django -certifi==2021.5.30 # via requests -chardet==4.0.0 # via requests -click==8.0.1 # via pyrefinebio -coverage==5.5 # via -r requirements.in -django-computedfields==0.1.5 # via -r requirements.in -django-elasticsearch-dsl-drf==0.22.1 # via -r requirements.in -django-elasticsearch-dsl==6.5.0 # via -r requirements.in, django-elasticsearch-dsl-drf -django-nine==0.2.4 # via django-elasticsearch-dsl-drf -django==3.2.7 # via -r requirements.in, django-nine, djangorestframework -djangorestframework==3.12.4 # via -r requirements.in, django-elasticsearch-dsl-drf -elasticsearch-dsl==6.4.0 # via -r requirements.in, django-elasticsearch-dsl, django-elasticsearch-dsl-drf +asgiref==3.6.0 # via django +certifi==2022.12.7 # via requests +charset-normalizer==3.0.1 # via requests +click==8.1.3 # via pyrefinebio +coverage==7.1.0 # via -r foreman/requirements.in +django==3.2.17 # via -r foreman/requirements.in, django-computedfields, django-fast-update, django-nine, djangorestframework +django-computedfields==0.2.1 # via -r foreman/requirements.in +django-elasticsearch-dsl==6.5.0 # via -r foreman/requirements.in, django-elasticsearch-dsl-drf +django-elasticsearch-dsl-drf==0.22.5 # via -r foreman/requirements.in +django-fast-update==0.2.1 # via django-computedfields +django-nine==0.2.7 # via django-elasticsearch-dsl-drf +djangorestframework==3.13.1 # via -r foreman/requirements.in, django-elasticsearch-dsl-drf elasticsearch==6.8.2 # via django-elasticsearch-dsl-drf, elasticsearch-dsl -geoparse==2.0.3 # via -r requirements.in -idna==2.10 # via requests, yarl -importlib-metadata==4.5.0 # via click -iso8601==0.1.16 # via pyrefinebio -multidict==5.1.0 # via yarl -numpy==1.19.5 # via -r requirements.in, geoparse, pandas, scipy -pandas==1.1.5 # via geoparse -psycopg2-binary==2.8.6 # via -r requirements.in -pyrefinebio==0.4.7 # via -r requirements.in -python-dateutil==2.8.1 # via -r requirements.in, elasticsearch-dsl, pandas +elasticsearch-dsl==6.4.0 # via -r foreman/requirements.in, django-elasticsearch-dsl, django-elasticsearch-dsl-drf +geoparse==2.0.3 # via -r foreman/requirements.in +idna==3.4 # via requests, yarl +iso8601==1.1.0 # via pyrefinebio +multidict==6.0.4 # via yarl +numpy==1.19.5 # via -r foreman/requirements.in, geoparse, pandas, scipy +packaging==23.0 # via django-nine +pandas==1.1.5 # via -r foreman/requirements.in, geoparse +psycopg2-binary==2.9.5 # via -r foreman/requirements.in +pyrefinebio==0.4.9 # via -r foreman/requirements.in +python-dateutil==2.8.2 # via -r foreman/requirements.in, elasticsearch-dsl, pandas pytimeparse==1.1.8 # via pyrefinebio -pytz==2021.1 # via django, pandas -pyyaml==5.4.1 # via -r requirements.in, pyrefinebio, vcrpy -raven==6.10.0 # via -r requirements.in -requests==2.25.1 # via -r requirements.in, geoparse, pyrefinebio -retrying==1.3.3 # via -r requirements.in -scipy==1.5.4 # via -r requirements.in +pytz==2022.7.1 # via django, djangorestframework, pandas +pyyaml==6.0 # via -r foreman/requirements.in, pyrefinebio, vcrpy +raven==6.10.0 # via -r foreman/requirements.in +requests==2.28.2 # via -r foreman/requirements.in, geoparse, pyrefinebio +retrying==1.3.4 # via -r foreman/requirements.in +scipy==1.10.0 # via -r foreman/requirements.in six==1.16.0 # via django-elasticsearch-dsl, django-elasticsearch-dsl-drf, elasticsearch-dsl, python-dateutil, retrying, vcrpy -sqlparse==0.4.2 # via -r requirements.in, django -tblib==1.7.0 # via -r requirements.in -tqdm==4.61.1 # via geoparse -typing-extensions==3.10.0.0 # via asgiref, importlib-metadata, yarl -urllib3==1.26.5 # via elasticsearch, requests -vcrpy==4.1.1 # via -r requirements.in -wrapt==1.12.1 # via vcrpy -yarl==1.6.3 # via vcrpy -zipp==3.4.1 # via importlib-metadata +sqlparse==0.4.3 # via -r foreman/requirements.in, django +tblib==1.7.0 # via -r foreman/requirements.in +tqdm==4.64.1 # via geoparse +typing-extensions==4.4.0 # via django-computedfields +urllib3==1.26.14 # via elasticsearch, requests +vcrpy==4.2.1 # via -r foreman/requirements.in +wrapt==1.14.1 # via vcrpy +yarl==1.8.2 # via vcrpy From e0c5d8d088fc916bfae391ab6bf8c54b0eefbb2c Mon Sep 17 00:00:00 2001 From: Arkadii Yakovets Date: Mon, 6 Mar 2023 07:52:43 -0800 Subject: [PATCH 078/220] Fix downloaders tests: - Update requirements. - Fix aspera downloader. - Migrate to new sra data source. - Update docker image. --- .gitignore | 1 + workers/R/dependencies/downloaders/renv.R | 11 + workers/R/dependencies/downloaders/renv.lock | 1787 +++++++++++++++++ .../data_refinery_workers/downloaders/geo.py | 4 +- .../downloaders/requirements.in | 3 +- .../downloaders/requirements.txt | 92 +- .../data_refinery_workers/downloaders/sra.py | 45 +- workers/dockerfiles/Dockerfile.downloaders | 35 +- workers/keys/asperaweb_id_dsa.openssh | 12 + workers/tests/downloaders/test_imports.py | 10 +- workers/tests/downloaders/test_sra.py | 9 +- 11 files changed, 1893 insertions(+), 116 deletions(-) create mode 100644 workers/R/dependencies/downloaders/renv.R create mode 100644 workers/R/dependencies/downloaders/renv.lock create mode 100644 workers/keys/asperaweb_id_dsa.openssh diff --git a/.gitignore b/.gitignore index 1a543b4b8..4de36889a 100644 --- a/.gitignore +++ b/.gitignore @@ -8,6 +8,7 @@ test_volume/* workers/test_volume/processed/TEST/TRANSCRIPTOME_INDEX/Homo_sapiens_short.tar.gz volumes_postgres/ aspera* +!workers/keys/asperaweb_id_dsa.openssh common/version # Project-specific Batch related files diff --git a/workers/R/dependencies/downloaders/renv.R b/workers/R/dependencies/downloaders/renv.R new file mode 100644 index 000000000..de5da9813 --- /dev/null +++ b/workers/R/dependencies/downloaders/renv.R @@ -0,0 +1,11 @@ +renv::install( + "affyio", + "dplyr@1.0.2", + "ff@2.2-14", + "httr@1.4.4", + "oligo", + "oligoClasses", + "purrr@0.3.5", + "readr@1.3.1", + "zlibbioc" +) diff --git a/workers/R/dependencies/downloaders/renv.lock b/workers/R/dependencies/downloaders/renv.lock new file mode 100644 index 000000000..7bdd92f8b --- /dev/null +++ b/workers/R/dependencies/downloaders/renv.lock @@ -0,0 +1,1787 @@ +{ + "R": { + "Version": "3.4.4", + "Repositories": [ + { + "Name": "Bioconductor", + "URL": "https://bioconductor.org/packages/3.6/bioc" + }, + { + "Name": "BioconductorAnnotation", + "URL": "https://bioconductor.org/packages/3.6/data/annotation" + }, + { + "Name": "BioconductorExperiment", + "URL": "https://bioconductor.org/packages/3.6/data/experiment" + }, + { + "Name": "CRAN", + "URL": "https://cloud.r-project.org" + } + ] + }, + "Packages": { + "AnnotationDbi": { + "Package": "AnnotationDbi", + "Version": "1.40.0", + "Source": "Bioconductor", + "Hash": "abb20d74ae5ea08a8d9616a6f1bbaca5", + "Requirements": [ + "Biobase", + "BiocGenerics", + "DBI", + "IRanges", + "RSQLite", + "S4Vectors" + ] + }, + "BH": { + "Package": "BH", + "Version": "1.81.0-1", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "68122010f01c4dcfbe58ce7112f2433d", + "Requirements": [] + }, + "Biobase": { + "Package": "Biobase", + "Version": "2.38.0", + "Source": "Bioconductor", + "Hash": "8c8060a3f339c35f1dc14af3b7d22d71", + "Requirements": [ + "BiocGenerics" + ] + }, + "BiocGenerics": { + "Package": "BiocGenerics", + "Version": "0.24.0", + "Source": "Bioconductor", + "Hash": "108ff3e3233e79aef825decc9fa87ee3", + "Requirements": [] + }, + "BiocInstaller": { + "Package": "BiocInstaller", + "Version": "1.28.0", + "Source": "Bioconductor", + "Hash": "ee02868b8bd3657a3463d8bc3a64d831", + "Requirements": [] + }, + "BiocManager": { + "Package": "BiocManager", + "Version": "1.30.20", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "a7fca16a50b6ef7771b49d636dd54b57", + "Requirements": [] + }, + "Biostrings": { + "Package": "Biostrings", + "Version": "2.46.0", + "Source": "Bioconductor", + "Hash": "12005b8dd90f7f7f9864ee9d6965c366", + "Requirements": [ + "BiocGenerics", + "IRanges", + "S4Vectors", + "XVector" + ] + }, + "DBI": { + "Package": "DBI", + "Version": "1.1.3", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "b2866e62bab9378c3cc9476a1954226b", + "Requirements": [] + }, + "DelayedArray": { + "Package": "DelayedArray", + "Version": "0.4.1", + "Source": "Bioconductor", + "Hash": "c2572a27fb1281ee4c11390826f326a1", + "Requirements": [ + "BiocGenerics", + "IRanges", + "S4Vectors", + "matrixStats" + ] + }, + "GenomeInfoDb": { + "Package": "GenomeInfoDb", + "Version": "1.14.0", + "Source": "Bioconductor", + "Hash": "39dc4261100e402165a6db62f364b493", + "Requirements": [ + "BiocGenerics", + "GenomeInfoDbData", + "IRanges", + "RCurl", + "S4Vectors" + ] + }, + "GenomeInfoDbData": { + "Package": "GenomeInfoDbData", + "Version": "1.0.0", + "Source": "Bioconductor", + "Hash": "336cc20fd69db19ebfad8a73e05d88b3", + "Requirements": [] + }, + "GenomicRanges": { + "Package": "GenomicRanges", + "Version": "1.30.3", + "Source": "Bioconductor", + "Hash": "ecfab21e609cea7ee297e0e1230b5bb4", + "Requirements": [ + "BiocGenerics", + "GenomeInfoDb", + "IRanges", + "S4Vectors", + "XVector" + ] + }, + "IRanges": { + "Package": "IRanges", + "Version": "2.12.0", + "Source": "Bioconductor", + "Hash": "d89aecf720b113b47f936c48b356d264", + "Requirements": [ + "BiocGenerics", + "S4Vectors" + ] + }, + "KernSmooth": { + "Package": "KernSmooth", + "Version": "2.23-15", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "081f417f4d6d55b7e8981433e8404a22", + "Requirements": [] + }, + "MASS": { + "Package": "MASS", + "Version": "7.3-49", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "f47828414f155725f342d93be7fcfabd", + "Requirements": [] + }, + "Matrix": { + "Package": "Matrix", + "Version": "1.2-12", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "2451d6490ec017b18b6eff460c65fd85", + "Requirements": [ + "lattice" + ] + }, + "R6": { + "Package": "R6", + "Version": "2.5.1", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "470851b6d5d0ac559e9d01bb352b4021", + "Requirements": [] + }, + "RCurl": { + "Package": "RCurl", + "Version": "1.98-1.10", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "35136c52e39f2679ebbe7bf448e3bd5a", + "Requirements": [ + "bitops" + ] + }, + "RSQLite": { + "Package": "RSQLite", + "Version": "2.3.0", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "264c1861d7ac1dc71ecb5ac5c4c1318a", + "Requirements": [ + "DBI", + "bit64", + "blob", + "cpp11", + "memoise", + "pkgconfig", + "plogr" + ] + }, + "Rcpp": { + "Package": "Rcpp", + "Version": "1.0.10", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "e749cae40fa9ef469b6050959517453c", + "Requirements": [] + }, + "S4Vectors": { + "Package": "S4Vectors", + "Version": "0.16.0", + "Source": "Bioconductor", + "Hash": "e9cd4cea8c93cbdd8595e562c8ed0624", + "Requirements": [ + "BiocGenerics" + ] + }, + "SummarizedExperiment": { + "Package": "SummarizedExperiment", + "Version": "1.8.1", + "Source": "Bioconductor", + "Hash": "57080b28b2f5606100e02a7ab01b3022", + "Requirements": [ + "Biobase", + "BiocGenerics", + "DelayedArray", + "GenomeInfoDb", + "GenomicRanges", + "IRanges", + "Matrix", + "S4Vectors" + ] + }, + "XVector": { + "Package": "XVector", + "Version": "0.18.0", + "Source": "Bioconductor", + "Hash": "c677dd00d99bd1f81caf0fc3d9fa7672", + "Requirements": [ + "BiocGenerics", + "IRanges", + "S4Vectors", + "zlibbioc" + ] + }, + "affxparser": { + "Package": "affxparser", + "Version": "1.50.0", + "Source": "Bioconductor", + "Hash": "86914cfc7998f083d207a8ae84488697", + "Requirements": [] + }, + "affyio": { + "Package": "affyio", + "Version": "1.48.0", + "Source": "Bioconductor", + "Hash": "f973e1ee016e8ff7095847e0769a9d97", + "Requirements": [ + "zlibbioc" + ] + }, + "askpass": { + "Package": "askpass", + "Version": "1.1", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "e8a22846fff485f0be3770c2da758713", + "Requirements": [ + "sys" + ] + }, + "base64enc": { + "Package": "base64enc", + "Version": "0.1-3", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "543776ae6848fde2f48ff3816d0628bc", + "Requirements": [] + }, + "bit": { + "Package": "bit", + "Version": "4.0.5", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "d242abec29412ce988848d0294b208fd", + "Requirements": [] + }, + "bit64": { + "Package": "bit64", + "Version": "4.0.5", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "9fe98599ca456d6552421db0d6772d8f", + "Requirements": [ + "bit" + ] + }, + "bitops": { + "Package": "bitops", + "Version": "1.0-7", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "b7d8d8ee39869c18d8846a184dd8a1af", + "Requirements": [] + }, + "blob": { + "Package": "blob", + "Version": "1.2.3", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "10d231579bc9c06ab1c320618808d4ff", + "Requirements": [ + "rlang", + "vctrs" + ] + }, + "boot": { + "Package": "boot", + "Version": "1.3-20", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "560a6eb3b4658e2ce3d0f8feb087fe56", + "Requirements": [] + }, + "brew": { + "Package": "brew", + "Version": "1.0-8", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "d69a786e85775b126bddbee185ae6084", + "Requirements": [] + }, + "brio": { + "Package": "brio", + "Version": "1.1.3", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "976cf154dfb043c012d87cddd8bca363", + "Requirements": [] + }, + "bslib": { + "Package": "bslib", + "Version": "0.4.2", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "a7fbf03946ad741129dc81098722fca1", + "Requirements": [ + "base64enc", + "cachem", + "htmltools", + "jquerylib", + "jsonlite", + "memoise", + "mime", + "rlang", + "sass" + ] + }, + "cachem": { + "Package": "cachem", + "Version": "1.0.7", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "cda74447c42f529de601fe4d4050daef", + "Requirements": [ + "fastmap", + "rlang" + ] + }, + "callr": { + "Package": "callr", + "Version": "3.7.3", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "9b2191ede20fa29828139b9900922e51", + "Requirements": [ + "R6", + "processx" + ] + }, + "class": { + "Package": "class", + "Version": "7.3-14", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "c39d47020cdf42e88bd80c83ca6a0a0b", + "Requirements": [ + "MASS" + ] + }, + "cli": { + "Package": "cli", + "Version": "3.6.0", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "3177a5a16c243adc199ba33117bd9657", + "Requirements": [] + }, + "clipr": { + "Package": "clipr", + "Version": "0.8.0", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "3f038e5ac7f41d4ac41ce658c85e3042", + "Requirements": [] + }, + "cluster": { + "Package": "cluster", + "Version": "2.0.6", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "ea8c392e186024710ab52bc405212f5e", + "Requirements": [] + }, + "codetools": { + "Package": "codetools", + "Version": "0.2-19", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "c089a619a7fae175d149d89164f8c7d8", + "Requirements": [] + }, + "commonmark": { + "Package": "commonmark", + "Version": "1.8.1", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "b6e3e947d1d7ebf3d2bdcea1bde63fe7", + "Requirements": [] + }, + "cpp11": { + "Package": "cpp11", + "Version": "0.4.3", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "ed588261931ee3be2c700d22e94a29ab", + "Requirements": [] + }, + "crayon": { + "Package": "crayon", + "Version": "1.5.2", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "e8a1e41acf02548751f45c718d55aa6a", + "Requirements": [] + }, + "credentials": { + "Package": "credentials", + "Version": "1.3.2", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "93762d0a34d78e6a025efdbfb5c6bb41", + "Requirements": [ + "askpass", + "curl", + "jsonlite", + "openssl", + "sys" + ] + }, + "curl": { + "Package": "curl", + "Version": "5.0.0", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "e4f97056611e8e6b8b852d13b7400cf1", + "Requirements": [] + }, + "data.table": { + "Package": "data.table", + "Version": "1.14.8", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "b4c06e554f33344e044ccd7fdca750a9", + "Requirements": [] + }, + "desc": { + "Package": "desc", + "Version": "1.4.2", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "6b9602c7ebbe87101a9c8edb6e8b6d21", + "Requirements": [ + "R6", + "cli", + "rprojroot" + ] + }, + "devtools": { + "Package": "devtools", + "Version": "2.4.5", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "ea5bc8b4a6a01e4f12d98b58329930bb", + "Requirements": [ + "cli", + "desc", + "ellipsis", + "fs", + "lifecycle", + "memoise", + "miniUI", + "pkgbuild", + "pkgdown", + "pkgload", + "profvis", + "rcmdcheck", + "remotes", + "rlang", + "roxygen2", + "rversions", + "sessioninfo", + "testthat", + "urlchecker", + "usethis", + "withr" + ] + }, + "diffobj": { + "Package": "diffobj", + "Version": "0.3.5", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "bcaa8b95f8d7d01a5dedfd959ce88ab8", + "Requirements": [ + "crayon" + ] + }, + "digest": { + "Package": "digest", + "Version": "0.6.31", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "8b708f296afd9ae69f450f9640be8990", + "Requirements": [] + }, + "doParallel": { + "Package": "doParallel", + "Version": "1.0.17", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "451e5edf411987991ab6a5410c45011f", + "Requirements": [ + "foreach", + "iterators" + ] + }, + "downlit": { + "Package": "downlit", + "Version": "0.4.2", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "79bf3f66590752ffbba20f8d2da94c7c", + "Requirements": [ + "brio", + "desc", + "digest", + "evaluate", + "fansi", + "memoise", + "rlang", + "vctrs", + "withr", + "yaml" + ] + }, + "dplyr": { + "Package": "dplyr", + "Version": "1.0.2", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "d0509913b27ea898189ee664b6030dc2", + "Requirements": [ + "R6", + "ellipsis", + "generics", + "glue", + "lifecycle", + "magrittr", + "rlang", + "tibble", + "tidyselect", + "vctrs" + ] + }, + "ellipsis": { + "Package": "ellipsis", + "Version": "0.3.2", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "bb0eec2fe32e88d9e2836c2f73ea2077", + "Requirements": [ + "rlang" + ] + }, + "evaluate": { + "Package": "evaluate", + "Version": "0.20", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "4b68aa51edd89a0e044a66e75ae3cc6c", + "Requirements": [] + }, + "fansi": { + "Package": "fansi", + "Version": "1.0.4", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "1d9e7ad3c8312a192dea7d3db0274fde", + "Requirements": [] + }, + "fastmap": { + "Package": "fastmap", + "Version": "1.1.1", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "f7736a18de97dea803bde0a2daaafb27", + "Requirements": [] + }, + "ff": { + "Package": "ff", + "Version": "2.2-14", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "2f745ad9a324bf4247df10ea6ebc3953", + "Requirements": [ + "bit" + ] + }, + "fontawesome": { + "Package": "fontawesome", + "Version": "0.5.0", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "e80750aec5717dedc019ad7ee40e4a7c", + "Requirements": [ + "htmltools", + "rlang" + ] + }, + "foreach": { + "Package": "foreach", + "Version": "1.5.2", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "618609b42c9406731ead03adf5379850", + "Requirements": [ + "codetools", + "iterators" + ] + }, + "foreign": { + "Package": "foreign", + "Version": "0.8-69", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "6f953f3e73fc00af8cdad0864f535f97", + "Requirements": [] + }, + "fs": { + "Package": "fs", + "Version": "1.6.1", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "f4dcd23b67e33d851d2079f703e8b985", + "Requirements": [] + }, + "generics": { + "Package": "generics", + "Version": "0.1.3", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "15e9634c0fcd294799e9b2e929ed1b86", + "Requirements": [] + }, + "gert": { + "Package": "gert", + "Version": "1.9.2", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "9122b3958e749badb5c939f498038b57", + "Requirements": [ + "askpass", + "credentials", + "openssl", + "rstudioapi", + "sys", + "zip" + ] + }, + "getopt": { + "Package": "getopt", + "Version": "1.20.3", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "ad68e3263f0bc9269aab8c2039440117", + "Requirements": [] + }, + "gh": { + "Package": "gh", + "Version": "1.4.0", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "03533b1c875028233598f848fda44c4c", + "Requirements": [ + "cli", + "gitcreds", + "httr2", + "ini", + "jsonlite", + "rlang" + ] + }, + "gitcreds": { + "Package": "gitcreds", + "Version": "0.1.2", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "ab08ac61f3e1be454ae21911eb8bc2fe", + "Requirements": [] + }, + "glue": { + "Package": "glue", + "Version": "1.6.2", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "4f2596dfb05dac67b9dc558e5c6fba2e", + "Requirements": [] + }, + "highr": { + "Package": "highr", + "Version": "0.10", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "06230136b2d2b9ba5805e1963fa6e890", + "Requirements": [ + "xfun" + ] + }, + "hms": { + "Package": "hms", + "Version": "1.1.2", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "41100392191e1244b887878b533eea91", + "Requirements": [ + "ellipsis", + "lifecycle", + "pkgconfig", + "rlang", + "vctrs" + ] + }, + "htmltools": { + "Package": "htmltools", + "Version": "0.5.4", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "9d27e99cc90bd701c0a7a63e5923f9b7", + "Requirements": [ + "base64enc", + "digest", + "ellipsis", + "fastmap", + "rlang" + ] + }, + "htmlwidgets": { + "Package": "htmlwidgets", + "Version": "1.6.1", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "b677ee5954471eaa974c0d099a343a1a", + "Requirements": [ + "htmltools", + "jsonlite", + "knitr", + "rmarkdown", + "yaml" + ] + }, + "httpuv": { + "Package": "httpuv", + "Version": "1.6.9", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "1046aa31a57eae8b357267a56a0b6d8b", + "Requirements": [ + "R6", + "Rcpp", + "later", + "promises" + ] + }, + "httr": { + "Package": "httr", + "Version": "1.4.4", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "57557fac46471f0dbbf44705cc6a5c8c", + "Requirements": [ + "R6", + "curl", + "jsonlite", + "mime", + "openssl" + ] + }, + "httr2": { + "Package": "httr2", + "Version": "0.2.2", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "5c09fe33064978ede54de42309c8b532", + "Requirements": [ + "R6", + "cli", + "curl", + "glue", + "magrittr", + "openssl", + "rappdirs", + "rlang", + "withr" + ] + }, + "ini": { + "Package": "ini", + "Version": "0.3.1", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "6154ec2223172bce8162d4153cda21f7", + "Requirements": [] + }, + "iterators": { + "Package": "iterators", + "Version": "1.0.14", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "8954069286b4b2b0d023d1b288dce978", + "Requirements": [] + }, + "jquerylib": { + "Package": "jquerylib", + "Version": "0.1.4", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "5aab57a3bd297eee1c1d862735972182", + "Requirements": [ + "htmltools" + ] + }, + "jsonlite": { + "Package": "jsonlite", + "Version": "1.8.4", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "a4269a09a9b865579b2635c77e572374", + "Requirements": [] + }, + "knitr": { + "Package": "knitr", + "Version": "1.42", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "8329a9bcc82943c8069104d4be3ee22d", + "Requirements": [ + "evaluate", + "highr", + "xfun", + "yaml" + ] + }, + "later": { + "Package": "later", + "Version": "1.3.0", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "7e7b457d7766bc47f2a5f21cc2984f8e", + "Requirements": [ + "Rcpp", + "rlang" + ] + }, + "lattice": { + "Package": "lattice", + "Version": "0.20-35", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "10a22a9a66fbe7944e9ef98985d7c927", + "Requirements": [] + }, + "lazyeval": { + "Package": "lazyeval", + "Version": "0.2.2", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "d908914ae53b04d4c0c0fd72ecc35370", + "Requirements": [] + }, + "lifecycle": { + "Package": "lifecycle", + "Version": "1.0.3", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "001cecbeac1cff9301bdc3775ee46a86", + "Requirements": [ + "cli", + "glue", + "rlang" + ] + }, + "limma": { + "Package": "limma", + "Version": "3.34.9", + "Source": "Bioconductor", + "Hash": "06c81c4043f41177428a83c73a59d094", + "Requirements": [] + }, + "magrittr": { + "Package": "magrittr", + "Version": "2.0.3", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "7ce2733a9826b3aeb1775d56fd305472", + "Requirements": [] + }, + "matrixStats": { + "Package": "matrixStats", + "Version": "0.63.0", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "57af0c3da1f1a50680b186591c3359af", + "Requirements": [] + }, + "memoise": { + "Package": "memoise", + "Version": "2.0.1", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "e2817ccf4a065c5d9d7f2cfbe7c1d78c", + "Requirements": [ + "cachem", + "rlang" + ] + }, + "mgcv": { + "Package": "mgcv", + "Version": "1.8-23", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "b1a3bba86e45ddea6b66e67623f587ee", + "Requirements": [ + "Matrix", + "nlme" + ] + }, + "mime": { + "Package": "mime", + "Version": "0.12", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "18e9c28c1d3ca1560ce30658b22ce104", + "Requirements": [] + }, + "miniUI": { + "Package": "miniUI", + "Version": "0.1.1.1", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "fec5f52652d60615fdb3957b3d74324a", + "Requirements": [ + "htmltools", + "shiny" + ] + }, + "nlme": { + "Package": "nlme", + "Version": "3.1-131", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "215a901b25abf4077a8e7d2d6ce2b211", + "Requirements": [ + "lattice" + ] + }, + "nnet": { + "Package": "nnet", + "Version": "7.3-12", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "68287aec1f476c41d16ce1ace445800c", + "Requirements": [] + }, + "oligo": { + "Package": "oligo", + "Version": "1.42.0", + "Source": "Bioconductor", + "Hash": "694c134c6a0d42dd72084c9283735e1a", + "Requirements": [ + "Biobase", + "BiocGenerics", + "Biostrings", + "DBI", + "RSQLite", + "affxparser", + "affyio", + "ff", + "oligoClasses", + "preprocessCore", + "zlibbioc" + ] + }, + "oligoClasses": { + "Package": "oligoClasses", + "Version": "1.40.0", + "Source": "Bioconductor", + "Hash": "c197dfefe8a4928044851fceb05b5eba", + "Requirements": [ + "Biobase", + "BiocGenerics", + "BiocInstaller", + "Biostrings", + "DBI", + "GenomicRanges", + "IRanges", + "RSQLite", + "S4Vectors", + "SummarizedExperiment", + "affyio", + "ff", + "foreach" + ] + }, + "openssl": { + "Package": "openssl", + "Version": "2.0.5", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "b04c27110bf367b4daa93f34f3d58e75", + "Requirements": [ + "askpass" + ] + }, + "optparse": { + "Package": "optparse", + "Version": "1.7.1", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "2490600671344e847c37a7f75ee458c0", + "Requirements": [ + "getopt" + ] + }, + "pillar": { + "Package": "pillar", + "Version": "1.8.1", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "f2316df30902c81729ae9de95ad5a608", + "Requirements": [ + "cli", + "fansi", + "glue", + "lifecycle", + "rlang", + "utf8", + "vctrs" + ] + }, + "pkgbuild": { + "Package": "pkgbuild", + "Version": "1.4.0", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "d6c3008d79653a0f267703288230105e", + "Requirements": [ + "R6", + "callr", + "cli", + "crayon", + "desc", + "prettyunits", + "processx", + "rprojroot", + "withr" + ] + }, + "pkgconfig": { + "Package": "pkgconfig", + "Version": "2.0.3", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "01f28d4278f15c76cddbea05899c5d6f", + "Requirements": [] + }, + "pkgdown": { + "Package": "pkgdown", + "Version": "2.0.7", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "16fa15449c930bf3a7761d3c68f8abf9", + "Requirements": [ + "bslib", + "callr", + "cli", + "desc", + "digest", + "downlit", + "fs", + "httr", + "jsonlite", + "magrittr", + "memoise", + "purrr", + "ragg", + "rlang", + "rmarkdown", + "tibble", + "whisker", + "withr", + "xml2", + "yaml" + ] + }, + "pkgload": { + "Package": "pkgload", + "Version": "1.3.2", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "6b0c222c5071efe0f3baf3dae9aa40e2", + "Requirements": [ + "cli", + "crayon", + "desc", + "fs", + "glue", + "rlang", + "rprojroot", + "withr" + ] + }, + "plogr": { + "Package": "plogr", + "Version": "0.2.0", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "09eb987710984fc2905c7129c7d85e65", + "Requirements": [] + }, + "plyr": { + "Package": "plyr", + "Version": "1.8.8", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "d744387aef9047b0b48be2933d78e862", + "Requirements": [ + "Rcpp" + ] + }, + "praise": { + "Package": "praise", + "Version": "1.0.0", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "a555924add98c99d2f411e37e7d25e9f", + "Requirements": [] + }, + "preprocessCore": { + "Package": "preprocessCore", + "Version": "1.40.0", + "Source": "Bioconductor", + "Hash": "db115919701b4e644b96de3f7523d17a", + "Requirements": [] + }, + "prettyunits": { + "Package": "prettyunits", + "Version": "1.1.1", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "95ef9167b75dde9d2ccc3c7528393e7e", + "Requirements": [] + }, + "processx": { + "Package": "processx", + "Version": "3.8.0", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "a33ee2d9bf07564efb888ad98410da84", + "Requirements": [ + "R6", + "ps" + ] + }, + "profvis": { + "Package": "profvis", + "Version": "0.3.7", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "e9d21e79848e02e524bea6f5bd53e7e4", + "Requirements": [ + "htmlwidgets", + "stringr" + ] + }, + "promises": { + "Package": "promises", + "Version": "1.2.0.1", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "4ab2c43adb4d4699cf3690acd378d75d", + "Requirements": [ + "R6", + "Rcpp", + "later", + "magrittr", + "rlang" + ] + }, + "ps": { + "Package": "ps", + "Version": "1.7.2", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "68dd03d98a5efd1eb3012436de45ba83", + "Requirements": [] + }, + "purrr": { + "Package": "purrr", + "Version": "0.3.5", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "54842a2443c76267152eface28d9e90a", + "Requirements": [ + "magrittr", + "rlang" + ] + }, + "ragg": { + "Package": "ragg", + "Version": "1.2.5", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "690bc058ea2b1b8a407d3cfe3dce3ef9", + "Requirements": [ + "systemfonts", + "textshaping" + ] + }, + "rappdirs": { + "Package": "rappdirs", + "Version": "0.3.3", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "5e3c5dc0b071b21fa128676560dbe94d", + "Requirements": [] + }, + "rcmdcheck": { + "Package": "rcmdcheck", + "Version": "1.4.0", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "8f25ebe2ec38b1f2aef3b0d2ef76f6c4", + "Requirements": [ + "R6", + "callr", + "cli", + "curl", + "desc", + "digest", + "pkgbuild", + "prettyunits", + "rprojroot", + "sessioninfo", + "withr", + "xopen" + ] + }, + "readr": { + "Package": "readr", + "Version": "1.3.1", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "af8ab99cd936773a148963905736907b", + "Requirements": [ + "BH", + "R6", + "Rcpp", + "clipr", + "crayon", + "hms", + "tibble" + ] + }, + "rematch2": { + "Package": "rematch2", + "Version": "2.1.2", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "76c9e04c712a05848ae7a23d2f170a40", + "Requirements": [ + "tibble" + ] + }, + "remotes": { + "Package": "remotes", + "Version": "2.4.2", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "227045be9aee47e6dda9bb38ac870d67", + "Requirements": [] + }, + "renv": { + "Package": "renv", + "Version": "0.16.0", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "c9e8442ab69bc21c9697ecf856c1e6c7", + "Requirements": [] + }, + "reshape2": { + "Package": "reshape2", + "Version": "1.4.4", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "bb5996d0bd962d214a11140d77589917", + "Requirements": [ + "Rcpp", + "plyr", + "stringr" + ] + }, + "rlang": { + "Package": "rlang", + "Version": "1.0.6", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "4ed1f8336c8d52c3e750adcdc57228a7", + "Requirements": [] + }, + "rmarkdown": { + "Package": "rmarkdown", + "Version": "2.20", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "716fde5382293cc94a71f68c85b78d19", + "Requirements": [ + "bslib", + "evaluate", + "htmltools", + "jquerylib", + "jsonlite", + "knitr", + "stringr", + "tinytex", + "xfun", + "yaml" + ] + }, + "roxygen2": { + "Package": "roxygen2", + "Version": "7.2.3", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "7b153c746193b143c14baa072bae4e27", + "Requirements": [ + "R6", + "brew", + "cli", + "commonmark", + "cpp11", + "desc", + "knitr", + "pkgload", + "purrr", + "rlang", + "stringi", + "stringr", + "withr", + "xml2" + ] + }, + "rpart": { + "Package": "rpart", + "Version": "4.1-13", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "6315535da80d5cc6c2e573966d8c8210", + "Requirements": [] + }, + "rprojroot": { + "Package": "rprojroot", + "Version": "2.0.3", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "1de7ab598047a87bba48434ba35d497d", + "Requirements": [] + }, + "rstudioapi": { + "Package": "rstudioapi", + "Version": "0.14", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "690bd2acc42a9166ce34845884459320", + "Requirements": [] + }, + "rversions": { + "Package": "rversions", + "Version": "2.1.2", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "a9881dfed103e83f9de151dc17002cd1", + "Requirements": [ + "curl", + "xml2" + ] + }, + "sass": { + "Package": "sass", + "Version": "0.4.5", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "2bb4371a4c80115518261866eab6ab11", + "Requirements": [ + "R6", + "fs", + "htmltools", + "rappdirs", + "rlang" + ] + }, + "sessioninfo": { + "Package": "sessioninfo", + "Version": "1.2.2", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "3f9796a8d0a0e8c6eb49a4b029359d1f", + "Requirements": [ + "cli" + ] + }, + "shiny": { + "Package": "shiny", + "Version": "1.7.4", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "c2eae3d8c670fa9dfa35a12066f4a1d5", + "Requirements": [ + "R6", + "bslib", + "cachem", + "commonmark", + "crayon", + "ellipsis", + "fastmap", + "fontawesome", + "glue", + "htmltools", + "httpuv", + "jsonlite", + "later", + "lifecycle", + "mime", + "promises", + "rlang", + "sourcetools", + "withr", + "xtable" + ] + }, + "sourcetools": { + "Package": "sourcetools", + "Version": "0.1.7-1", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "5f5a7629f956619d519205ec475fe647", + "Requirements": [] + }, + "spatial": { + "Package": "spatial", + "Version": "7.3-11", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "f27a078d834614513608da2c08031130", + "Requirements": [] + }, + "stringi": { + "Package": "stringi", + "Version": "1.7.12", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "ca8bd84263c77310739d2cf64d84d7c9", + "Requirements": [] + }, + "stringr": { + "Package": "stringr", + "Version": "1.5.0", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "671a4d384ae9d32fc47a14e98bfa3dc8", + "Requirements": [ + "cli", + "glue", + "lifecycle", + "magrittr", + "rlang", + "stringi", + "vctrs" + ] + }, + "survival": { + "Package": "survival", + "Version": "2.41-3", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "60b1da51f5e3556fd177170a1aa40b49", + "Requirements": [ + "Matrix" + ] + }, + "sys": { + "Package": "sys", + "Version": "3.4.1", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "34c16f1ef796057bfa06d3f4ff818a5d", + "Requirements": [] + }, + "systemfonts": { + "Package": "systemfonts", + "Version": "1.0.4", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "90b28393209827327de889f49935140a", + "Requirements": [ + "cpp11" + ] + }, + "testthat": { + "Package": "testthat", + "Version": "3.1.6", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "7910146255835c66e9eb272fb215248d", + "Requirements": [ + "R6", + "brio", + "callr", + "cli", + "desc", + "digest", + "ellipsis", + "evaluate", + "jsonlite", + "lifecycle", + "magrittr", + "pkgload", + "praise", + "processx", + "ps", + "rlang", + "waldo", + "withr" + ] + }, + "textshaping": { + "Package": "textshaping", + "Version": "0.3.6", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "1ab6223d3670fac7143202cb6a2d43d5", + "Requirements": [ + "cpp11", + "systemfonts" + ] + }, + "tibble": { + "Package": "tibble", + "Version": "3.1.8", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "56b6934ef0f8c68225949a8672fe1a8f", + "Requirements": [ + "fansi", + "lifecycle", + "magrittr", + "pillar", + "pkgconfig", + "rlang", + "vctrs" + ] + }, + "tidyselect": { + "Package": "tidyselect", + "Version": "1.2.0", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "79540e5fcd9e0435af547d885f184fd5", + "Requirements": [ + "cli", + "glue", + "lifecycle", + "rlang", + "vctrs", + "withr" + ] + }, + "tinytex": { + "Package": "tinytex", + "Version": "0.44", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "c0f007e2eeed7722ce13d42b84a22e07", + "Requirements": [ + "xfun" + ] + }, + "tximport": { + "Package": "tximport", + "Version": "1.6.0", + "Source": "Bioconductor", + "Hash": "2c824ac20bbb34bba92a9b5b0d600fec", + "Requirements": [] + }, + "urlchecker": { + "Package": "urlchecker", + "Version": "1.0.1", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "409328b8e1253c8d729a7836fe7f7a16", + "Requirements": [ + "cli", + "curl", + "xml2" + ] + }, + "usethis": { + "Package": "usethis", + "Version": "2.1.6", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "a67a22c201832b12c036cc059f1d137d", + "Requirements": [ + "cli", + "clipr", + "crayon", + "curl", + "desc", + "fs", + "gert", + "gh", + "glue", + "jsonlite", + "lifecycle", + "purrr", + "rappdirs", + "rlang", + "rprojroot", + "rstudioapi", + "whisker", + "withr", + "yaml" + ] + }, + "utf8": { + "Package": "utf8", + "Version": "1.2.3", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "1fe17157424bb09c48a8b3b550c753bc", + "Requirements": [] + }, + "vctrs": { + "Package": "vctrs", + "Version": "0.5.2", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "e4ffa94ceed5f124d429a5a5f0f5b378", + "Requirements": [ + "cli", + "glue", + "lifecycle", + "rlang" + ] + }, + "waldo": { + "Package": "waldo", + "Version": "0.4.0", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "035fba89d0c86e2113120f93301b98ad", + "Requirements": [ + "cli", + "diffobj", + "fansi", + "glue", + "rematch2", + "rlang", + "tibble" + ] + }, + "whisker": { + "Package": "whisker", + "Version": "0.4.1", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "c6abfa47a46d281a7d5159d0a8891e88", + "Requirements": [] + }, + "withr": { + "Package": "withr", + "Version": "2.5.0", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "c0e49a9760983e81e55cdd9be92e7182", + "Requirements": [] + }, + "xfun": { + "Package": "xfun", + "Version": "0.37", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "a6860e1400a8fd1ddb6d9b4230cc34ab", + "Requirements": [] + }, + "xml2": { + "Package": "xml2", + "Version": "1.3.3", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "40682ed6a969ea5abfd351eb67833adc", + "Requirements": [] + }, + "xopen": { + "Package": "xopen", + "Version": "1.0.0", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "6c85f015dee9cc7710ddd20f86881f58", + "Requirements": [ + "processx" + ] + }, + "xtable": { + "Package": "xtable", + "Version": "1.8-4", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "b8acdf8af494d9ec19ccb2481a9b11c2", + "Requirements": [] + }, + "yaml": { + "Package": "yaml", + "Version": "2.3.7", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "0d0056cc5383fbc240ccd0cb584bf436", + "Requirements": [] + }, + "zip": { + "Package": "zip", + "Version": "2.2.2", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "c42bfcec3fa6a0cce17ce1f8bc684f88", + "Requirements": [] + }, + "zlibbioc": { + "Package": "zlibbioc", + "Version": "1.24.0", + "Source": "Bioconductor", + "Hash": "75640bcdaa390770a672332c904642db", + "Requirements": [] + } + } +} diff --git a/workers/data_refinery_workers/downloaders/geo.py b/workers/data_refinery_workers/downloaders/geo.py index d395c5f2c..1fc415b16 100644 --- a/workers/data_refinery_workers/downloaders/geo.py +++ b/workers/data_refinery_workers/downloaders/geo.py @@ -73,8 +73,8 @@ def _download_file_aspera( downloader_job=downloader_job.id, ) - ascp = ".aspera/cli/bin/ascp" - key = ".aspera/cli/etc/asperaweb_id_dsa.openssh" + ascp = "ascp" + key = "keys/asperaweb_id_dsa.openssh" url = download_url user = "anonftp" ftp = "ftp-trace.ncbi.nlm.nih.gov" diff --git a/workers/data_refinery_workers/downloaders/requirements.in b/workers/data_refinery_workers/downloaders/requirements.in index 9728c78a8..a368292d3 100644 --- a/workers/data_refinery_workers/downloaders/requirements.in +++ b/workers/data_refinery_workers/downloaders/requirements.in @@ -1,4 +1,4 @@ -django>=3.2.5 +django>=3.2,<4 requests>=2.23.0 urllib3>=1.24.2 psycopg2-binary>=2.8.4 @@ -9,3 +9,4 @@ vcrpy django-computedfields>=0.1.5 pyyaml>=5.4 sqlparse>=0.4.2 +rpy2==3.4.5 diff --git a/workers/data_refinery_workers/downloaders/requirements.txt b/workers/data_refinery_workers/downloaders/requirements.txt index fe064620f..157a33fce 100644 --- a/workers/data_refinery_workers/downloaders/requirements.txt +++ b/workers/data_refinery_workers/downloaders/requirements.txt @@ -1,62 +1,38 @@ # -# This file is autogenerated by pip-compile +# This file is autogenerated by pip-compile with python 3.9 # To update, run: # -# pip-compile requirements.in +# pip-compile --annotation-style=line workers/data_refinery_workers/downloaders/requirements.in # -asgiref==3.3.4 - # via django -certifi==2021.5.30 - # via requests -chardet==4.0.0 - # via requests -coverage==5.5 - # via coveralls -coveralls==3.1.0 - # via -r requirements.in -django==3.2.15 - # via -r requirements.in -django-computedfields==0.1.5 - # via -r requirements.in -docopt==0.6.2 - # via coveralls -idna==2.10 - # via - # requests - # yarl -multidict==5.1.0 - # via yarl -psutil==5.8.0 - # via -r requirements.in -psycopg2-binary==2.8.6 - # via -r requirements.in -pytz==2021.1 - # via django -pyyaml==5.4.1 - # via - # -r requirements.in - # vcrpy -requests==2.25.1 - # via - # -r requirements.in - # coveralls -retrying==1.3.3 - # via -r requirements.in -six==1.16.0 - # via - # retrying - # vcrpy -sqlparse==0.4.2 - # via - # -r requirements.in - # django -urllib3==1.26.5 - # via - # -r requirements.in - # requests -vcrpy==4.1.1 - # via -r requirements.in -wrapt==1.12.1 - # via vcrpy -yarl==1.6.3 - # via vcrpy +asgiref==3.6.0 # via django +certifi==2022.12.7 # via requests +cffi==1.15.1 # via rpy2 +charset-normalizer==3.0.1 # via requests +coverage==6.5.0 # via coveralls +coveralls==3.3.1 # via -r workers/data_refinery_workers/downloaders/requirements.in +django==3.2.18 # via -r workers/data_refinery_workers/downloaders/requirements.in, django-computedfields, django-fast-update +django-computedfields==0.2.1 # via -r workers/data_refinery_workers/downloaders/requirements.in +django-fast-update==0.2.1 # via django-computedfields +docopt==0.6.2 # via coveralls +idna==3.4 # via requests, yarl +jinja2==3.1.2 # via rpy2 +markupsafe==2.1.2 # via jinja2 +multidict==6.0.4 # via yarl +psutil==5.9.4 # via -r workers/data_refinery_workers/downloaders/requirements.in +psycopg2-binary==2.9.5 # via -r workers/data_refinery_workers/downloaders/requirements.in +pycparser==2.21 # via cffi +pytz==2022.7.1 # via django, rpy2 +pytz-deprecation-shim==0.1.0.post0 # via tzlocal +pyyaml==6.0 # via -r workers/data_refinery_workers/downloaders/requirements.in, vcrpy +requests==2.28.2 # via -r workers/data_refinery_workers/downloaders/requirements.in, coveralls +retrying==1.3.4 # via -r workers/data_refinery_workers/downloaders/requirements.in +rpy2==3.4.5 # via -r workers/data_refinery_workers/downloaders/requirements.in +six==1.16.0 # via retrying, vcrpy +sqlparse==0.4.3 # via -r workers/data_refinery_workers/downloaders/requirements.in, django +typing-extensions==4.5.0 # via django-computedfields +tzdata==2022.7 # via pytz-deprecation-shim +tzlocal==4.2 # via rpy2 +urllib3==1.26.14 # via -r workers/data_refinery_workers/downloaders/requirements.in, requests +vcrpy==4.2.1 # via -r workers/data_refinery_workers/downloaders/requirements.in +wrapt==1.14.1 # via vcrpy +yarl==1.8.2 # via vcrpy diff --git a/workers/data_refinery_workers/downloaders/sra.py b/workers/data_refinery_workers/downloaders/sra.py index c4a6a367b..c0268dc5a 100644 --- a/workers/data_refinery_workers/downloaders/sra.py +++ b/workers/data_refinery_workers/downloaders/sra.py @@ -35,29 +35,22 @@ def _download_file( if "ftp.sra.ebi.ac.uk" in download_url: # From: ftp.sra.ebi.ac.uk/vol1/fastq/SRR735/005/SRR7353755/SRR7353755_1.fastq.gz # To: era-fasp@fasp.sra.ebi.ac.uk:/vol1/fastq/SRR735/005/SRR7353755/SRR7353755_1.fastq.gz - download_url = download_url.replace("ftp", "era-fasp@fasp") - download_url = download_url.replace(".uk/", ".uk:/") + download_url = download_url.replace("ftp", "era-fasp@fasp").replace(".uk/", ".uk:/") original_file.source_url = download_url return _download_file_aspera( - download_url, downloader_job, target_file_path, 0, original_file, source="ENA" + download_url, + downloader_job, + target_file_path, + 0, + original_file, + source="ENA", ) - elif "ncbi.nlm.nih.gov" in download_url: - # Try to convert old-style endpoints into new-style endpoints if possible - try: - if "anonftp" in download_url or "dbtest" in download_url: - accession = download_url.split("/")[-1].split(".sra")[0] - new_url = get_https_sra_download(accession) - if new_url: - download_url = new_url - except Exception: - pass + elif "sra-pub-run-odp.s3.amazonaws.com" in download_url: return _download_file_http(download_url, downloader_job, target_file_path) else: downloader_job.failure_reason = ("Unrecognized URL pattern: {}").format(download_url) return False - return True - def _download_file_http( download_url: str, downloader_job: DownloaderJob, target_file_path: str @@ -105,26 +98,24 @@ def _download_file_aspera( # aspera.sra.ebi.ac.uk users port 33001 for SSH communication # We are also NOT using encryption (-T) to avoid slowdown, # and we are not using any kind of rate limiting. - command_str = ( - ".aspera/cli/bin/ascp -QT -l 300m -P33001" - " -i .aspera/cli/etc/asperaweb_id_dsa.openssh {src} {dest}" - ) + command_str = "ascp -QT -l 300m -P 33001 -i keys/asperaweb_id_dsa.openssh {src} {dest}" formatted_command = command_str.format(src=download_url, dest=target_file_path) completed_command = subprocess.run( - formatted_command.split(), stdout=subprocess.PIPE, stderr=subprocess.PIPE + formatted_command.split(), + stdout=subprocess.PIPE, + stderr=subprocess.PIPE, ) else: # NCBI requires encryption and recommends -k1 resume, as # well as the 450m limit and -Q (play fair). # ex: https://github.com/AlexsLemonade/refinebio/pull/1189#issuecomment-478018580 - command_str = ( - ".aspera/cli/bin/ascp -p -Q -T -k1 -l 450m" - " -i .aspera/cli/etc/asperaweb_id_dsa.openssh {src} {dest}" - ) + command_str = "ascp -p -Q -T -k1 -l 450m -i keys/asperaweb_id_dsa.openssh {src} {dest}" formatted_command = command_str.format(src=download_url, dest=target_file_path) logger.info("Starting NCBI ascp", time=str(timezone.now())) completed_command = subprocess.run( - formatted_command.split(), stdout=subprocess.PIPE, stderr=subprocess.PIPE + formatted_command.split(), + stdout=subprocess.PIPE, + stderr=subprocess.PIPE, ) logger.info("Ending NCBI ascp", time=str(timezone.now())) @@ -252,7 +243,9 @@ def _replace_dotsra_with_fastq_files( original_file.save() read_two_original_file = OriginalFile.objects.get_or_create( - source_url=read_two_url, source_filename=read_two_url.split("/")[-1], has_raw=True + source_url=read_two_url, + source_filename=read_two_url.split("/")[-1], + has_raw=True, )[0] OriginalFileSampleAssociation.objects.get_or_create( original_file=read_two_original_file, sample=sample diff --git a/workers/dockerfiles/Dockerfile.downloaders b/workers/dockerfiles/Dockerfile.downloaders index 9b611956d..1b19485e2 100644 --- a/workers/dockerfiles/Dockerfile.downloaders +++ b/workers/dockerfiles/Dockerfile.downloaders @@ -5,30 +5,22 @@ SHELL ["/bin/bash", "-o", "pipefail", "-c"] WORKDIR /home/user -COPY workers/R/dependencies/install_downloader_R_only.R . -RUN Rscript install_downloader_R_only.R +COPY workers/R/dependencies/downloaders/renv.lock . +COPY workers/R/renv_load.R . +RUN Rscript renv_load.R COPY workers/data_refinery_workers/downloaders/requirements.txt . -RUN pip3 install --ignore-installed --no-cache-dir --upgrade pip && \ - pip3 install --ignore-installed --no-cache-dir rpy2==3.4.5 && \ - pip3 install --ignore-installed --no-cache-dir -r requirements.txt +RUN pip3 install --ignore-installed --no-cache-dir -r requirements.txt -# Aspera will only install as the current user. -# Even using `su - user &&` doesn't work... -USER user +# Install Aspera. +RUN gpg --keyserver keyserver.ubuntu.com --recv-keys \ + 409B6B1796C275462A1703113804BB82D39DC0E3 \ + 7D2BAF1CF37B13E2069D6956105BD0E739499BDB && \ + curl -sSL https://get.rvm.io | bash -s stable --ruby --gems=aspera-cli -# Install Aspera. We have to install it using Holland Computing Center's conda -# repo because download.asperasoft.com now returns 403s -RUN wget -q "https://anaconda.org/HCC/aspera-cli/3.9.1/download/\ -linux-64/aspera-cli-3.9.1-0.tar.bz2" && \ - [ "$(sha256sum aspera-cli-3.9.1-0.tar.bz2 | cut -d ' ' -f1)" =\ - "60a09a7f3795186954079869106aa89a64183b7be8e0da7cbbe9d57c66c9bcdb" ] && \ - rm -rf .aspera && \ - mkdir -p .aspera/cli && \ - tar xf aspera-cli-3.9.1-0.tar.bz2 -C .aspera/cli && \ - rm aspera-cli-3.9.1-0.tar.bz2 - -# Now that we're done installing Aspera go back to being root for a bit. +USER user +RUN source /usr/local/rvm/scripts/rvm && \ + ascli conf ascp install USER root # Get the latest version from the dist directory. @@ -40,7 +32,10 @@ COPY .boto .boto COPY config config COPY workers/ . +RUN rm -rf /root/.cache/* + ARG SYSTEM_VERSION +ENV PATH="$PATH:/home/user/.aspera/ascli/sdk" ENV SYSTEM_VERSION=$SYSTEM_VERSION USER user diff --git a/workers/keys/asperaweb_id_dsa.openssh b/workers/keys/asperaweb_id_dsa.openssh new file mode 100644 index 000000000..c6c2a528f --- /dev/null +++ b/workers/keys/asperaweb_id_dsa.openssh @@ -0,0 +1,12 @@ +-----BEGIN DSA PRIVATE KEY----- +MIIBuwIBAAKBgQDkKQHD6m4yIxgjsey6Pny46acZXERsJHy54p/BqXIyYkVOAkEp +KgvT3qTTNmykWWw4ovOP1+Di1c/2FpYcllcTphkWcS8lA7j012mUEecXavXjPPG0 +i3t5vtB8xLy33kQ3e9v9/Lwh0xcRfua0d5UfFwopBIAXvJAr3B6raps8+QIVALws +yeqsx3EolCaCVXJf+61ceJppAoGAPoPtEP4yzHG2XtcxCfXab4u9zE6wPz4ePJt0 +UTn3fUvnQmJT7i0KVCRr3g2H2OZMWF12y0jUq8QBuZ2so3CHee7W1VmAdbN7Fxc+ +cyV9nE6zURqAaPyt2bE+rgM1pP6LQUYxgD3xKdv1ZG+kDIDEf6U3onjcKbmA6ckx +T6GavoACgYEAobapDv5p2foH+cG5K07sIFD9r0RD7uKJnlqjYAXzFc8U76wXKgu6 +WXup2ac0Co+RnZp7Hsa9G+E+iJ6poI9pOR08XTdPly4yDULNST4PwlfrbSFT9FVh +zkWfpOvAUc8fkQAhZqv/PE6VhFQ8w03Z8GpqXx7b3NvBR+EfIx368KoCFEyfl0vH +Ta7g6mGwIMXrdTQQ8fZs +-----END DSA PRIVATE KEY----- diff --git a/workers/tests/downloaders/test_imports.py b/workers/tests/downloaders/test_imports.py index 005405f7a..2b2195574 100644 --- a/workers/tests/downloaders/test_imports.py +++ b/workers/tests/downloaders/test_imports.py @@ -4,8 +4,8 @@ class ImportTestCase(TestCase): @tag("downloaders") def test_downloader_imports(self): - # Make sure we can import the downloader tests - import data_refinery_workers.downloaders.test_array_express - import data_refinery_workers.downloaders.test_geo - import data_refinery_workers.downloaders.test_sra - import data_refinery_workers.downloaders.test_transcriptome_index + # Make sure we can import the downloader tests. + from tests.downloaders import test_array_express + from tests.downloaders import test_geo + from tests.downloaders import test_sra + from tests.downloaders import test_transcriptome_index diff --git a/workers/tests/downloaders/test_sra.py b/workers/tests/downloaders/test_sra.py index d07df4454..8c969043c 100644 --- a/workers/tests/downloaders/test_sra.py +++ b/workers/tests/downloaders/test_sra.py @@ -63,8 +63,9 @@ def test_download_file_ncbi(self): dlj.accession_code = "SRR9117853" dlj.save() og = OriginalFile() - og.source_filename = "SRR9117853.sra" - og.source_url = "anonftp@ftp.ncbi.nlm.nih.gov:/sra/sra-instant/reads/ByRun/sra/SRR/SRR9117/SRR9117853/SRR9117853.sra" + og.source_filename = "SRR9117853" + og.source_url = "https://sra-pub-run-odp.s3.amazonaws.com/sra/SRR9117853/SRR9117853" + og.is_archive = True og.save() sample = Sample() @@ -92,8 +93,8 @@ def test_download_file_swapper(self): dlj.accession_code = "SRR9117853" dlj.save() og = OriginalFile() - og.source_filename = "SRR9117853.sra" - og.source_url = "anonftp@ftp.ncbi.nlm.nih.gov:/sra/sra-instant/reads/ByRun/sra/SRR/SRR9117/SRR9117853/SRR9117853.sra" + og.source_filename = "SRR9117853" + og.source_url = "https://sra-pub-run-odp.s3.amazonaws.com/sra/SRR9117853/SRR9117853" og.is_archive = True og.save() sample = Sample() From 632c86f2f2b3c495bf05c26684f014901fb04b1f Mon Sep 17 00:00:00 2001 From: Arkadii Yakovets Date: Mon, 6 Mar 2023 08:18:54 -0800 Subject: [PATCH 079/220] Add `renv` scripts. Set platform for workers run_tests.sh. --- .../R/dependencies/install_devtools_renv.R | 76 +++++++++++++++++++ workers/R/renv_load.R | 16 ++++ workers/R/renv_save.R | 15 ++++ 3 files changed, 107 insertions(+) create mode 100644 workers/R/dependencies/install_devtools_renv.R create mode 100644 workers/R/renv_load.R create mode 100644 workers/R/renv_save.R diff --git a/workers/R/dependencies/install_devtools_renv.R b/workers/R/dependencies/install_devtools_renv.R new file mode 100644 index 000000000..58c97546b --- /dev/null +++ b/workers/R/dependencies/install_devtools_renv.R @@ -0,0 +1,76 @@ +renv::install("jsonlite@1.7.0") +renv::install("withr@2.2.0") +renv::install("crayon@1.3.4") +renv::install("fansi@0.4.1") +renv::install("glue@1.4.1") +renv::install("assertthat@0.2.1") +renv::install("cli@2.0.2") +renv::install("sessioninfo@1.1.1") +renv::install("rlang@0.4.7") +renv::install("ellipsis@0.3.2") +renv::install("xml2@1.3.2") +renv::install("curl@4.3") +renv::install("rversions@2.0.2") +renv::install("remotes@2.2.0") +renv::install("R6@2.4.1") +renv::install("praise@1.0.0") +renv::install("magrittr@1.5") +renv::install("digest@0.6.25") +renv::install("evaluate@0.14") +renv::install("backports@1.1.8") +renv::install("rprojroot@1.3-2") +renv::install("desc@1.2.0") +renv::install("prettyunits@1.1.1") +renv::install("ps@1.3.3") +renv::install("processx@3.4.3") +renv::install("callr@3.4.3") +renv::install("pkgbuild@1.1.0") +renv::install("rstudioapi@0.11") +renv::install("pkgload@1.1.0") +renv::install("testthat@2.3.2") +renv::install("mime@0.9") +renv::install("sys@3.4") +renv::install("askpass@1.1") +renv::install("openssl@2.0.3") +renv::install("httr@1.4.2") +renv::install("fs@1.4.2") +renv::install("git2r@0.27.1") +renv::install("whisker@0.4") +renv::install("clipr@0.7.0") +renv::install("ini@0.3.1") +renv::install("gh@1.1.0") +renv::install("utf8@1.1.4") +renv::install("lifecycle@1.0.3") +renv::install("vctrs@0.4.1") +renv::install("pillar@1.4.6") +renv::install("pkgconfig@2.0.3") +renv::install("tibble@3.0.3") +renv::install("rematch2@2.1.2") +renv::install("purrr@0.3.4") +renv::install("yaml@2.2.1") +renv::install("usethis@1.6.1") +renv::install("lazyeval@0.2.2") +renv::install("rex@1.2.0") +renv::install("covr@3.5.0") +renv::install("memoise@2.0.1") +renv::install("base64enc@0.1-3") +renv::install("htmltools@0.5.4") +renv::install("crosstalk@1.1.0.1") +renv::install("htmlwidgets@1.5.1") +renv::install("Rcpp@1.0.7") +renv::install("BH@1.72.0-3") +renv::install("later@1.1.0.1") +renv::install("promises@1.1.1") +renv::install("DT@0.14") +renv::install("commonmark@1.7") +renv::install("stringi@1.4.6") +renv::install("stringr@1.4.0") +renv::install("xfun@0.36") +renv::install("markdown@1.1") +renv::install("highr@0.8") +renv::install("knitr@1.29") +renv::install("brew@1.0-6") +renv::install("roxygen2@7.1.1") +renv::install("xopen@1.0.0") +renv::install("rcmdcheck@1.3.3") +renv::install("devtools@2.4.5") diff --git a/workers/R/renv_load.R b/workers/R/renv_load.R new file mode 100644 index 000000000..601e479b1 --- /dev/null +++ b/workers/R/renv_load.R @@ -0,0 +1,16 @@ +options(warn = 2) +options(repos = structure(c( + Bioconductor = "https://bioconductor.org/packages/3.6/bioc", + BioconductorAnnotation = "https://bioconductor.org/packages/3.6/data/annotation", + BioconductorExperiment = "https://bioconductor.org/packages/3.6/data/experiment", + CRAN = "https://cloud.r-project.org" +))) +options(Ncpus = parallel::detectCores()) +options(renv.r.version = "3.4.4") +options(renv.settings.use.cache = FALSE) + +install.packages("BiocInstaller") +install.packages("https://cloud.r-project.org/src/contrib/renv_0.16.0.tar.gz") + +renv::consent(provided = TRUE) +renv::restore(prompt = FALSE, rebuild = TRUE) diff --git a/workers/R/renv_save.R b/workers/R/renv_save.R new file mode 100644 index 000000000..7892c0a3a --- /dev/null +++ b/workers/R/renv_save.R @@ -0,0 +1,15 @@ +options(warn = 2) +options(repos = structure(c( + Bioconductor = "https://bioconductor.org/packages/3.6/bioc", + BioconductorAnnotation = "https://bioconductor.org/packages/3.6/data/annotation", + BioconductorExperiment = "https://bioconductor.org/packages/3.6/data/experiment", + CRAN = "https://cloud.r-project.org" +))) +options(Ncpus = parallel::detectCores()) +options(renv.r.version = "3.4.4") +options(renv.settings.use.cache = FALSE) + +install.packages("BiocInstaller") +install.packages("https://cloud.r-project.org/src/contrib/renv_0.16.0.tar.gz") + +renv::init(bioconductor = "3.6") From 258a3a9a9a52288c6f7fe69f913aaeefcb67d0d8 Mon Sep 17 00:00:00 2001 From: Arkadii Yakovets Date: Tue, 7 Mar 2023 18:05:32 -0800 Subject: [PATCH 080/220] Update smasher dependencies. --- workers/R/dependencies/smasher/renv.R | 21 + workers/R/dependencies/smasher/renv.lock | 1511 ++++++++++++++++++++++ workers/dockerfiles/Dockerfile.smasher | 14 +- 3 files changed, 1538 insertions(+), 8 deletions(-) create mode 100644 workers/R/dependencies/smasher/renv.R create mode 100644 workers/R/dependencies/smasher/renv.lock diff --git a/workers/R/dependencies/smasher/renv.R b/workers/R/dependencies/smasher/renv.R new file mode 100644 index 000000000..9fd953eb3 --- /dev/null +++ b/workers/R/dependencies/smasher/renv.R @@ -0,0 +1,21 @@ +renv::install("codetools@0.2-15") +renv::install("iterators@1.0.10") +renv::install("foreach@1.4.4") +renv::install("doParallel@1.0.11") +renv::install("data.table@1.11.0") +renv::install("getopt@1.20.3") +renv::install("optparse@1.4.4") +renv::install("lazyeval@0.2.1") +renv::install("ff@2.2-14.2") +renv::install("bit@1.1-15.2") +renv::install("dplyr@1.0.2") +renv::install("readr@1.3.1") +renv::install("rlang@1.0.6") +renv::install("ellipsis@0.3.2") + +# Bioconductor. +renv::install( + "oligo", + "oligoClasses", + "preprocessCore" +) diff --git a/workers/R/dependencies/smasher/renv.lock b/workers/R/dependencies/smasher/renv.lock new file mode 100644 index 000000000..5eceeee80 --- /dev/null +++ b/workers/R/dependencies/smasher/renv.lock @@ -0,0 +1,1511 @@ +{ + "R": { + "Version": "3.4.4", + "Repositories": [ + { + "Name": "Bioconductor", + "URL": "https://bioconductor.org/packages/3.6/bioc" + }, + { + "Name": "BioconductorAnnotation", + "URL": "https://bioconductor.org/packages/3.6/data/annotation" + }, + { + "Name": "BioconductorExperiment", + "URL": "https://bioconductor.org/packages/3.6/data/experiment" + }, + { + "Name": "CRAN", + "URL": "https://cloud.r-project.org" + } + ] + }, + "Packages": { + "AnnotationDbi": { + "Package": "AnnotationDbi", + "Version": "1.40.0", + "Source": "Bioconductor", + "Hash": "abb20d74ae5ea08a8d9616a6f1bbaca5", + "Requirements": [ + "Biobase", + "BiocGenerics", + "DBI", + "IRanges", + "RSQLite", + "S4Vectors" + ] + }, + "BH": { + "Package": "BH", + "Version": "1.72.0-3", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "8f9ce74c6417d61f0782cbae5fd2b7b0", + "Requirements": [] + }, + "Biobase": { + "Package": "Biobase", + "Version": "2.38.0", + "Source": "Bioconductor", + "Hash": "8c8060a3f339c35f1dc14af3b7d22d71", + "Requirements": [ + "BiocGenerics" + ] + }, + "BiocGenerics": { + "Package": "BiocGenerics", + "Version": "0.24.0", + "Source": "Bioconductor", + "Hash": "108ff3e3233e79aef825decc9fa87ee3", + "Requirements": [] + }, + "BiocInstaller": { + "Package": "BiocInstaller", + "Version": "1.28.0", + "Source": "Bioconductor", + "Hash": "ee02868b8bd3657a3463d8bc3a64d831", + "Requirements": [] + }, + "BiocManager": { + "Package": "BiocManager", + "Version": "1.30.20", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "a7fca16a50b6ef7771b49d636dd54b57", + "Requirements": [] + }, + "Biostrings": { + "Package": "Biostrings", + "Version": "2.46.0", + "Source": "Bioconductor", + "Hash": "12005b8dd90f7f7f9864ee9d6965c366", + "Requirements": [ + "BiocGenerics", + "IRanges", + "S4Vectors", + "XVector" + ] + }, + "DBI": { + "Package": "DBI", + "Version": "1.1.3", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "b2866e62bab9378c3cc9476a1954226b", + "Requirements": [] + }, + "DT": { + "Package": "DT", + "Version": "0.14", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "a3580ce0309c94d061c23b0afb4accbd", + "Requirements": [ + "crosstalk", + "htmltools", + "htmlwidgets", + "jsonlite", + "magrittr", + "promises" + ] + }, + "DelayedArray": { + "Package": "DelayedArray", + "Version": "0.4.1", + "Source": "Bioconductor", + "Hash": "c2572a27fb1281ee4c11390826f326a1", + "Requirements": [ + "BiocGenerics", + "IRanges", + "S4Vectors", + "matrixStats" + ] + }, + "GenomeInfoDb": { + "Package": "GenomeInfoDb", + "Version": "1.14.0", + "Source": "Bioconductor", + "Hash": "39dc4261100e402165a6db62f364b493", + "Requirements": [ + "BiocGenerics", + "GenomeInfoDbData", + "IRanges", + "RCurl", + "S4Vectors" + ] + }, + "GenomeInfoDbData": { + "Package": "GenomeInfoDbData", + "Version": "1.0.0", + "Source": "Bioconductor", + "Hash": "336cc20fd69db19ebfad8a73e05d88b3", + "Requirements": [] + }, + "GenomicRanges": { + "Package": "GenomicRanges", + "Version": "1.30.3", + "Source": "Bioconductor", + "Hash": "ecfab21e609cea7ee297e0e1230b5bb4", + "Requirements": [ + "BiocGenerics", + "GenomeInfoDb", + "IRanges", + "S4Vectors", + "XVector" + ] + }, + "IRanges": { + "Package": "IRanges", + "Version": "2.12.0", + "Source": "Bioconductor", + "Hash": "d89aecf720b113b47f936c48b356d264", + "Requirements": [ + "BiocGenerics", + "S4Vectors" + ] + }, + "KernSmooth": { + "Package": "KernSmooth", + "Version": "2.23-15", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "081f417f4d6d55b7e8981433e8404a22", + "Requirements": [] + }, + "MASS": { + "Package": "MASS", + "Version": "7.3-49", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "f47828414f155725f342d93be7fcfabd", + "Requirements": [] + }, + "Matrix": { + "Package": "Matrix", + "Version": "1.2-12", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "2451d6490ec017b18b6eff460c65fd85", + "Requirements": [ + "lattice" + ] + }, + "R6": { + "Package": "R6", + "Version": "2.4.1", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "292b54f8f4b94669b08f94e5acce6be2", + "Requirements": [] + }, + "RCurl": { + "Package": "RCurl", + "Version": "1.98-1.10", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "35136c52e39f2679ebbe7bf448e3bd5a", + "Requirements": [ + "bitops" + ] + }, + "RSQLite": { + "Package": "RSQLite", + "Version": "2.3.0", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "264c1861d7ac1dc71ecb5ac5c4c1318a", + "Requirements": [ + "DBI", + "bit64", + "blob", + "cpp11", + "memoise", + "pkgconfig", + "plogr" + ] + }, + "Rcpp": { + "Package": "Rcpp", + "Version": "1.0.10", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "e749cae40fa9ef469b6050959517453c", + "Requirements": [] + }, + "S4Vectors": { + "Package": "S4Vectors", + "Version": "0.16.0", + "Source": "Bioconductor", + "Hash": "e9cd4cea8c93cbdd8595e562c8ed0624", + "Requirements": [ + "BiocGenerics" + ] + }, + "SummarizedExperiment": { + "Package": "SummarizedExperiment", + "Version": "1.8.1", + "Source": "Bioconductor", + "Hash": "57080b28b2f5606100e02a7ab01b3022", + "Requirements": [ + "Biobase", + "BiocGenerics", + "DelayedArray", + "GenomeInfoDb", + "GenomicRanges", + "IRanges", + "Matrix", + "S4Vectors" + ] + }, + "XVector": { + "Package": "XVector", + "Version": "0.18.0", + "Source": "Bioconductor", + "Hash": "c677dd00d99bd1f81caf0fc3d9fa7672", + "Requirements": [ + "BiocGenerics", + "IRanges", + "S4Vectors", + "zlibbioc" + ] + }, + "affxparser": { + "Package": "affxparser", + "Version": "1.50.0", + "Source": "Bioconductor", + "Hash": "86914cfc7998f083d207a8ae84488697", + "Requirements": [] + }, + "affyio": { + "Package": "affyio", + "Version": "1.48.0", + "Source": "Bioconductor", + "Hash": "f973e1ee016e8ff7095847e0769a9d97", + "Requirements": [ + "zlibbioc" + ] + }, + "askpass": { + "Package": "askpass", + "Version": "1.1", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "e8a22846fff485f0be3770c2da758713", + "Requirements": [ + "sys" + ] + }, + "assertthat": { + "Package": "assertthat", + "Version": "0.2.1", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "50c838a310445e954bc13f26f26a6ecf", + "Requirements": [] + }, + "backports": { + "Package": "backports", + "Version": "1.1.8", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "3ef0eac19317fd03c0c854aed581d473", + "Requirements": [] + }, + "base64enc": { + "Package": "base64enc", + "Version": "0.1-3", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "543776ae6848fde2f48ff3816d0628bc", + "Requirements": [] + }, + "bit": { + "Package": "bit", + "Version": "4.0.5", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "d242abec29412ce988848d0294b208fd", + "Requirements": [] + }, + "bit64": { + "Package": "bit64", + "Version": "4.0.5", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "9fe98599ca456d6552421db0d6772d8f", + "Requirements": [ + "bit" + ] + }, + "bitops": { + "Package": "bitops", + "Version": "1.0-7", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "b7d8d8ee39869c18d8846a184dd8a1af", + "Requirements": [] + }, + "blob": { + "Package": "blob", + "Version": "1.2.3", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "10d231579bc9c06ab1c320618808d4ff", + "Requirements": [ + "rlang", + "vctrs" + ] + }, + "boot": { + "Package": "boot", + "Version": "1.3-20", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "560a6eb3b4658e2ce3d0f8feb087fe56", + "Requirements": [] + }, + "brew": { + "Package": "brew", + "Version": "1.0-6", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "92a5f887f9ae3035ac7afde22ba73ee9", + "Requirements": [] + }, + "cachem": { + "Package": "cachem", + "Version": "1.0.7", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "cda74447c42f529de601fe4d4050daef", + "Requirements": [ + "fastmap", + "rlang" + ] + }, + "callr": { + "Package": "callr", + "Version": "3.4.3", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "643163a00cb536454c624883a10ae0bc", + "Requirements": [ + "R6", + "processx" + ] + }, + "class": { + "Package": "class", + "Version": "7.3-14", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "c39d47020cdf42e88bd80c83ca6a0a0b", + "Requirements": [ + "MASS" + ] + }, + "cli": { + "Package": "cli", + "Version": "3.6.0", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "3177a5a16c243adc199ba33117bd9657", + "Requirements": [] + }, + "clipr": { + "Package": "clipr", + "Version": "0.7.0", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "08cf4045c149a0f0eaf405324c7495bd", + "Requirements": [] + }, + "cluster": { + "Package": "cluster", + "Version": "2.0.6", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "ea8c392e186024710ab52bc405212f5e", + "Requirements": [] + }, + "codetools": { + "Package": "codetools", + "Version": "0.2-19", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "c089a619a7fae175d149d89164f8c7d8", + "Requirements": [] + }, + "commonmark": { + "Package": "commonmark", + "Version": "1.7", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "0f22be39ec1d141fd03683c06f3a6e67", + "Requirements": [] + }, + "covr": { + "Package": "covr", + "Version": "3.5.0", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "cbc6df1ef6ee576f844f973c1fc04ab4", + "Requirements": [ + "crayon", + "digest", + "httr", + "jsonlite", + "rex", + "withr", + "yaml" + ] + }, + "cpp11": { + "Package": "cpp11", + "Version": "0.4.3", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "ed588261931ee3be2c700d22e94a29ab", + "Requirements": [] + }, + "crayon": { + "Package": "crayon", + "Version": "1.3.4", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "0d57bc8e27b7ba9e45dba825ebc0de6b", + "Requirements": [] + }, + "crosstalk": { + "Package": "crosstalk", + "Version": "1.1.0.1", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "ae55f5d7c02f0ab43c58dd050694f2b4", + "Requirements": [ + "R6", + "htmltools", + "jsonlite", + "lazyeval" + ] + }, + "curl": { + "Package": "curl", + "Version": "4.3", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "2b7d10581cc730804e9ed178c8374bd6", + "Requirements": [] + }, + "data.table": { + "Package": "data.table", + "Version": "1.11.0", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "e3c68af9852f074f4895ba72b2e65b0f", + "Requirements": [] + }, + "desc": { + "Package": "desc", + "Version": "1.2.0", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "6c8fe8fa26a23b79949375d372c7b395", + "Requirements": [ + "R6", + "assertthat", + "crayon", + "rprojroot" + ] + }, + "devtools": { + "Package": "devtools", + "Version": "2.3.1", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "271df6a328617c64149283e98b1cd8da", + "Requirements": [ + "DT", + "callr", + "cli", + "covr", + "desc", + "ellipsis", + "httr", + "jsonlite", + "memoise", + "pkgbuild", + "pkgload", + "rcmdcheck", + "remotes", + "rlang", + "roxygen2", + "rstudioapi", + "rversions", + "sessioninfo", + "testthat", + "usethis", + "withr" + ] + }, + "digest": { + "Package": "digest", + "Version": "0.6.25", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "f697db7d92b7028c4b3436e9603fb636", + "Requirements": [] + }, + "doParallel": { + "Package": "doParallel", + "Version": "1.0.11", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "b96d7b9fff2027367cc36de12e6bf6a1", + "Requirements": [ + "foreach", + "iterators" + ] + }, + "dplyr": { + "Package": "dplyr", + "Version": "1.0.2", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "d0509913b27ea898189ee664b6030dc2", + "Requirements": [ + "R6", + "ellipsis", + "generics", + "glue", + "lifecycle", + "magrittr", + "rlang", + "tibble", + "tidyselect", + "vctrs" + ] + }, + "ellipsis": { + "Package": "ellipsis", + "Version": "0.3.2", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "bb0eec2fe32e88d9e2836c2f73ea2077", + "Requirements": [ + "rlang" + ] + }, + "evaluate": { + "Package": "evaluate", + "Version": "0.14", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "ec8ca05cffcc70569eaaad8469d2a3a7", + "Requirements": [] + }, + "fansi": { + "Package": "fansi", + "Version": "0.4.1", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "7fce217eaaf8016e72065e85c73027b5", + "Requirements": [] + }, + "fastmap": { + "Package": "fastmap", + "Version": "1.1.1", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "f7736a18de97dea803bde0a2daaafb27", + "Requirements": [] + }, + "ff": { + "Package": "ff", + "Version": "2.2-14.2", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "0dbbd7f58314528e8906ed4969e82e1e", + "Requirements": [ + "bit" + ] + }, + "foreach": { + "Package": "foreach", + "Version": "1.5.2", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "618609b42c9406731ead03adf5379850", + "Requirements": [ + "codetools", + "iterators" + ] + }, + "foreign": { + "Package": "foreign", + "Version": "0.8-69", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "6f953f3e73fc00af8cdad0864f535f97", + "Requirements": [] + }, + "fs": { + "Package": "fs", + "Version": "1.4.2", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "8c04112383ca1988e96f429255f95675", + "Requirements": [] + }, + "generics": { + "Package": "generics", + "Version": "0.1.3", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "15e9634c0fcd294799e9b2e929ed1b86", + "Requirements": [] + }, + "getopt": { + "Package": "getopt", + "Version": "1.20.3", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "ad68e3263f0bc9269aab8c2039440117", + "Requirements": [] + }, + "gh": { + "Package": "gh", + "Version": "1.1.0", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "89ea5998938d1ad55f035c8a86f96b74", + "Requirements": [ + "cli", + "httr", + "ini", + "jsonlite" + ] + }, + "git2r": { + "Package": "git2r", + "Version": "0.27.1", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "531a82d1beed1f545beb25f4f5945bf7", + "Requirements": [] + }, + "glue": { + "Package": "glue", + "Version": "1.6.2", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "4f2596dfb05dac67b9dc558e5c6fba2e", + "Requirements": [] + }, + "highr": { + "Package": "highr", + "Version": "0.8", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "4dc5bb88961e347a0f4d8aad597cbfac", + "Requirements": [] + }, + "hms": { + "Package": "hms", + "Version": "1.1.2", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "41100392191e1244b887878b533eea91", + "Requirements": [ + "ellipsis", + "lifecycle", + "pkgconfig", + "rlang", + "vctrs" + ] + }, + "htmltools": { + "Package": "htmltools", + "Version": "0.5.4", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "9d27e99cc90bd701c0a7a63e5923f9b7", + "Requirements": [ + "base64enc", + "digest", + "ellipsis", + "fastmap", + "rlang" + ] + }, + "htmlwidgets": { + "Package": "htmlwidgets", + "Version": "1.5.1", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "41bace23583fbc25089edae324de2dc3", + "Requirements": [ + "htmltools", + "jsonlite", + "yaml" + ] + }, + "httr": { + "Package": "httr", + "Version": "1.4.2", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "a525aba14184fec243f9eaec62fbed43", + "Requirements": [ + "R6", + "curl", + "jsonlite", + "mime", + "openssl" + ] + }, + "ini": { + "Package": "ini", + "Version": "0.3.1", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "6154ec2223172bce8162d4153cda21f7", + "Requirements": [] + }, + "iterators": { + "Package": "iterators", + "Version": "1.0.14", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "8954069286b4b2b0d023d1b288dce978", + "Requirements": [] + }, + "jsonlite": { + "Package": "jsonlite", + "Version": "1.7.0", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "2657f20b9a74c996c602e74ebe540b06", + "Requirements": [] + }, + "knitr": { + "Package": "knitr", + "Version": "1.29", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "e5f4c41c17df8cdf7b0df12117c0d99a", + "Requirements": [ + "evaluate", + "highr", + "markdown", + "stringr", + "xfun", + "yaml" + ] + }, + "later": { + "Package": "later", + "Version": "1.1.0.1", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "d0a62b247165aabf397fded504660d8a", + "Requirements": [ + "BH", + "Rcpp", + "rlang" + ] + }, + "lattice": { + "Package": "lattice", + "Version": "0.20-35", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "10a22a9a66fbe7944e9ef98985d7c927", + "Requirements": [] + }, + "lazyeval": { + "Package": "lazyeval", + "Version": "0.2.1", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "ea5964121f493fb3057e9887d424f634", + "Requirements": [] + }, + "lifecycle": { + "Package": "lifecycle", + "Version": "1.0.3", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "001cecbeac1cff9301bdc3775ee46a86", + "Requirements": [ + "cli", + "glue", + "rlang" + ] + }, + "limma": { + "Package": "limma", + "Version": "3.34.9", + "Source": "Bioconductor", + "Hash": "06c81c4043f41177428a83c73a59d094", + "Requirements": [] + }, + "magrittr": { + "Package": "magrittr", + "Version": "2.0.3", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "7ce2733a9826b3aeb1775d56fd305472", + "Requirements": [] + }, + "markdown": { + "Package": "markdown", + "Version": "1.1", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "61e4a10781dd00d7d81dd06ca9b94e95", + "Requirements": [ + "mime", + "xfun" + ] + }, + "matrixStats": { + "Package": "matrixStats", + "Version": "0.63.0", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "57af0c3da1f1a50680b186591c3359af", + "Requirements": [] + }, + "memoise": { + "Package": "memoise", + "Version": "2.0.1", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "e2817ccf4a065c5d9d7f2cfbe7c1d78c", + "Requirements": [ + "cachem", + "rlang" + ] + }, + "mgcv": { + "Package": "mgcv", + "Version": "1.8-23", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "b1a3bba86e45ddea6b66e67623f587ee", + "Requirements": [ + "Matrix", + "nlme" + ] + }, + "mime": { + "Package": "mime", + "Version": "0.9", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "e87a35ec73b157552814869f45a63aa3", + "Requirements": [] + }, + "nlme": { + "Package": "nlme", + "Version": "3.1-131", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "215a901b25abf4077a8e7d2d6ce2b211", + "Requirements": [ + "lattice" + ] + }, + "nnet": { + "Package": "nnet", + "Version": "7.3-12", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "68287aec1f476c41d16ce1ace445800c", + "Requirements": [] + }, + "oligo": { + "Package": "oligo", + "Version": "1.42.0", + "Source": "Bioconductor", + "Hash": "694c134c6a0d42dd72084c9283735e1a", + "Requirements": [ + "Biobase", + "BiocGenerics", + "Biostrings", + "DBI", + "RSQLite", + "affxparser", + "affyio", + "ff", + "oligoClasses", + "preprocessCore", + "zlibbioc" + ] + }, + "oligoClasses": { + "Package": "oligoClasses", + "Version": "1.40.0", + "Source": "Bioconductor", + "Hash": "c197dfefe8a4928044851fceb05b5eba", + "Requirements": [ + "Biobase", + "BiocGenerics", + "BiocInstaller", + "Biostrings", + "DBI", + "GenomicRanges", + "IRanges", + "RSQLite", + "S4Vectors", + "SummarizedExperiment", + "affyio", + "ff", + "foreach" + ] + }, + "openssl": { + "Package": "openssl", + "Version": "2.0.3", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "b9621e75c0652041002a19609fb23c5a", + "Requirements": [ + "askpass" + ] + }, + "optparse": { + "Package": "optparse", + "Version": "1.4.4", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "803e834713c77eda6c233965977b2c58", + "Requirements": [ + "getopt" + ] + }, + "pillar": { + "Package": "pillar", + "Version": "1.4.6", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "bdf26e55ccb7df3e49a490150277f002", + "Requirements": [ + "cli", + "crayon", + "ellipsis", + "fansi", + "lifecycle", + "rlang", + "utf8", + "vctrs" + ] + }, + "pkgbuild": { + "Package": "pkgbuild", + "Version": "1.1.0", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "404684bc4e3685007f9720adf13b06c1", + "Requirements": [ + "R6", + "callr", + "cli", + "crayon", + "desc", + "prettyunits", + "rprojroot", + "withr" + ] + }, + "pkgconfig": { + "Package": "pkgconfig", + "Version": "2.0.3", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "01f28d4278f15c76cddbea05899c5d6f", + "Requirements": [] + }, + "pkgload": { + "Package": "pkgload", + "Version": "1.1.0", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "b6b150cd4709e0c0c9b5d51ac4376282", + "Requirements": [ + "cli", + "crayon", + "desc", + "pkgbuild", + "rlang", + "rprojroot", + "rstudioapi", + "withr" + ] + }, + "plogr": { + "Package": "plogr", + "Version": "0.2.0", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "09eb987710984fc2905c7129c7d85e65", + "Requirements": [] + }, + "plyr": { + "Package": "plyr", + "Version": "1.8.8", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "d744387aef9047b0b48be2933d78e862", + "Requirements": [ + "Rcpp" + ] + }, + "praise": { + "Package": "praise", + "Version": "1.0.0", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "a555924add98c99d2f411e37e7d25e9f", + "Requirements": [] + }, + "preprocessCore": { + "Package": "preprocessCore", + "Version": "1.40.0", + "Source": "Bioconductor", + "Hash": "db115919701b4e644b96de3f7523d17a", + "Requirements": [] + }, + "prettyunits": { + "Package": "prettyunits", + "Version": "1.1.1", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "95ef9167b75dde9d2ccc3c7528393e7e", + "Requirements": [] + }, + "processx": { + "Package": "processx", + "Version": "3.4.3", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "f4f13345fcb00c51ace12f65dd18749f", + "Requirements": [ + "R6", + "ps" + ] + }, + "promises": { + "Package": "promises", + "Version": "1.1.1", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "a8730dcbdd19f9047774909f0ec214a4", + "Requirements": [ + "R6", + "Rcpp", + "later", + "magrittr", + "rlang" + ] + }, + "ps": { + "Package": "ps", + "Version": "1.3.3", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "425d938eb9c02906a8ac98c0c2a306b5", + "Requirements": [] + }, + "purrr": { + "Package": "purrr", + "Version": "0.3.4", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "97def703420c8ab10d8f0e6c72101e02", + "Requirements": [ + "magrittr", + "rlang" + ] + }, + "rcmdcheck": { + "Package": "rcmdcheck", + "Version": "1.3.3", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "ed95895886dab6d2a584da45503555da", + "Requirements": [ + "R6", + "callr", + "cli", + "crayon", + "desc", + "digest", + "pkgbuild", + "prettyunits", + "rprojroot", + "sessioninfo", + "withr", + "xopen" + ] + }, + "readr": { + "Package": "readr", + "Version": "1.3.1", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "af8ab99cd936773a148963905736907b", + "Requirements": [ + "BH", + "R6", + "Rcpp", + "clipr", + "crayon", + "hms", + "tibble" + ] + }, + "rematch2": { + "Package": "rematch2", + "Version": "2.1.2", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "76c9e04c712a05848ae7a23d2f170a40", + "Requirements": [ + "tibble" + ] + }, + "remotes": { + "Package": "remotes", + "Version": "2.2.0", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "430a0908aee75b1fcba0e62857cab0ce", + "Requirements": [] + }, + "renv": { + "Package": "renv", + "Version": "0.16.0", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "c9e8442ab69bc21c9697ecf856c1e6c7", + "Requirements": [] + }, + "reshape2": { + "Package": "reshape2", + "Version": "1.4.4", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "bb5996d0bd962d214a11140d77589917", + "Requirements": [ + "Rcpp", + "plyr", + "stringr" + ] + }, + "rex": { + "Package": "rex", + "Version": "1.2.0", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "093584b944440c5cd07a696b3c8e0e4c", + "Requirements": [ + "lazyeval" + ] + }, + "rlang": { + "Package": "rlang", + "Version": "1.0.6", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "4ed1f8336c8d52c3e750adcdc57228a7", + "Requirements": [] + }, + "roxygen2": { + "Package": "roxygen2", + "Version": "7.1.1", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "fcd94e00cc409b25d07ca50f7bf339f5", + "Requirements": [ + "R6", + "Rcpp", + "brew", + "commonmark", + "desc", + "digest", + "knitr", + "pkgload", + "purrr", + "rlang", + "stringi", + "stringr", + "xml2" + ] + }, + "rpart": { + "Package": "rpart", + "Version": "4.1-13", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "6315535da80d5cc6c2e573966d8c8210", + "Requirements": [] + }, + "rprojroot": { + "Package": "rprojroot", + "Version": "1.3-2", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "f6a407ae5dd21f6f80a6708bbb6eb3ae", + "Requirements": [ + "backports" + ] + }, + "rstudioapi": { + "Package": "rstudioapi", + "Version": "0.11", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "33a5b27a03da82ac4b1d43268f80088a", + "Requirements": [] + }, + "rversions": { + "Package": "rversions", + "Version": "2.0.2", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "0ec41191f744d0f5afad8c6f35cc36e4", + "Requirements": [ + "curl", + "xml2" + ] + }, + "sessioninfo": { + "Package": "sessioninfo", + "Version": "1.1.1", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "308013098befe37484df72c39cf90d6e", + "Requirements": [ + "cli", + "withr" + ] + }, + "spatial": { + "Package": "spatial", + "Version": "7.3-11", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "f27a078d834614513608da2c08031130", + "Requirements": [] + }, + "stringi": { + "Package": "stringi", + "Version": "1.7.12", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "ca8bd84263c77310739d2cf64d84d7c9", + "Requirements": [] + }, + "stringr": { + "Package": "stringr", + "Version": "1.5.0", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "671a4d384ae9d32fc47a14e98bfa3dc8", + "Requirements": [ + "cli", + "glue", + "lifecycle", + "magrittr", + "rlang", + "stringi", + "vctrs" + ] + }, + "survival": { + "Package": "survival", + "Version": "2.41-3", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "60b1da51f5e3556fd177170a1aa40b49", + "Requirements": [ + "Matrix" + ] + }, + "sys": { + "Package": "sys", + "Version": "3.4", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "b227d13e29222b4574486cfcbde077fa", + "Requirements": [] + }, + "testthat": { + "Package": "testthat", + "Version": "2.3.2", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "0829b987b8961fb07f3b1b64a2fbc495", + "Requirements": [ + "R6", + "cli", + "crayon", + "digest", + "ellipsis", + "evaluate", + "magrittr", + "pkgload", + "praise", + "rlang", + "withr" + ] + }, + "tibble": { + "Package": "tibble", + "Version": "3.0.3", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "08bd36bd34b20d4f7971d49e81deaab0", + "Requirements": [ + "cli", + "crayon", + "ellipsis", + "fansi", + "lifecycle", + "magrittr", + "pillar", + "pkgconfig", + "rlang", + "vctrs" + ] + }, + "tidyselect": { + "Package": "tidyselect", + "Version": "1.2.0", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "79540e5fcd9e0435af547d885f184fd5", + "Requirements": [ + "cli", + "glue", + "lifecycle", + "rlang", + "vctrs", + "withr" + ] + }, + "tximport": { + "Package": "tximport", + "Version": "1.6.0", + "Source": "Bioconductor", + "Hash": "2c824ac20bbb34bba92a9b5b0d600fec", + "Requirements": [] + }, + "usethis": { + "Package": "usethis", + "Version": "1.6.1", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "e1985f5a9985fea2e338fa7eb99018ca", + "Requirements": [ + "cli", + "clipr", + "crayon", + "curl", + "desc", + "fs", + "gh", + "git2r", + "glue", + "purrr", + "rematch2", + "rlang", + "rprojroot", + "rstudioapi", + "whisker", + "withr", + "yaml" + ] + }, + "utf8": { + "Package": "utf8", + "Version": "1.1.4", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "4a5081acfb7b81a572e4384a7aaf2af1", + "Requirements": [] + }, + "vctrs": { + "Package": "vctrs", + "Version": "0.5.2", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "e4ffa94ceed5f124d429a5a5f0f5b378", + "Requirements": [ + "cli", + "glue", + "lifecycle", + "rlang" + ] + }, + "whisker": { + "Package": "whisker", + "Version": "0.4", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "ca970b96d894e90397ed20637a0c1bbe", + "Requirements": [] + }, + "withr": { + "Package": "withr", + "Version": "2.2.0", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "ecd17882a0b4419545691e095b74ee89", + "Requirements": [] + }, + "xfun": { + "Package": "xfun", + "Version": "0.36", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "f5baec54606751aa53ac9c0e05848ed6", + "Requirements": [] + }, + "xml2": { + "Package": "xml2", + "Version": "1.3.2", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "d4d71a75dd3ea9eb5fa28cc21f9585e2", + "Requirements": [] + }, + "xopen": { + "Package": "xopen", + "Version": "1.0.0", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "6c85f015dee9cc7710ddd20f86881f58", + "Requirements": [ + "processx" + ] + }, + "yaml": { + "Package": "yaml", + "Version": "2.2.1", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "2826c5d9efb0a88f657c7a679c7106db", + "Requirements": [] + }, + "zlibbioc": { + "Package": "zlibbioc", + "Version": "1.24.0", + "Source": "Bioconductor", + "Hash": "75640bcdaa390770a672332c904642db", + "Requirements": [] + } + } +} diff --git a/workers/dockerfiles/Dockerfile.smasher b/workers/dockerfiles/Dockerfile.smasher index 926f98208..29bba5cd8 100644 --- a/workers/dockerfiles/Dockerfile.smasher +++ b/workers/dockerfiles/Dockerfile.smasher @@ -5,16 +5,12 @@ SHELL ["/bin/bash", "-o", "pipefail", "-c"] WORKDIR /home/user -COPY workers/R/dependencies/qn/cran/dependencies.R . -RUN Rscript dependencies.R - -COPY workers/R/dependencies/qn/bioc/dependencies.R . -RUN Rscript dependencies.R +COPY workers/R/dependencies/smasher/renv.lock . +COPY workers/R/renv_load.R . +RUN Rscript renv_load.R COPY workers/data_refinery_workers/processors/requirements.txt . -RUN pip3 install --ignore-installed --no-cache-dir --upgrade pip && \ - pip3 install --ignore-installed --no-cache-dir nose numpy rpy2==3.4.5 && \ - pip3 install --ignore-installed --no-cache-dir -r requirements.txt +RUN pip3 install --ignore-installed --no-cache-dir -r requirements.txt # Get the latest version from the dist directory. COPY common/dist/data-refinery-common-* common/ @@ -25,6 +21,8 @@ COPY .boto .boto COPY config/ config/ COPY workers/ . +RUN rm -rf /root/.cache/* + ARG SYSTEM_VERSION ENV SYSTEM_VERSION=$SYSTEM_VERSION From 5fc6d3e8df9aace9d49a1ea9da9d06803de52ceb Mon Sep 17 00:00:00 2001 From: Arkadii Yakovets Date: Tue, 7 Mar 2023 18:13:37 -0800 Subject: [PATCH 081/220] Update transcriptome Docker image. --- workers/dockerfiles/Dockerfile.transcriptome | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/workers/dockerfiles/Dockerfile.transcriptome b/workers/dockerfiles/Dockerfile.transcriptome index f7dbe3676..3aec1395b 100644 --- a/workers/dockerfiles/Dockerfile.transcriptome +++ b/workers/dockerfiles/Dockerfile.transcriptome @@ -6,9 +6,7 @@ SHELL ["/bin/bash", "-o", "pipefail", "-c"] WORKDIR /home/user COPY workers/data_refinery_workers/processors/requirements.txt . -RUN pip3 install --ignore-installed --no-cache-dir --upgrade pip && \ - pip3 install --ignore-installed --no-cache-dir numpy && \ - pip3 install --ignore-installed --no-cache-dir -r requirements.txt && \ +RUN pip3 install --ignore-installed --no-cache-dir -r requirements.txt && \ # It's annoying that this can only be installed via git. git clone https://github.com/deweylab/RSEM.git && \ cd RSEM && make install && \ @@ -40,6 +38,8 @@ COPY .boto .boto COPY config/ config/ COPY workers/ . +RUN rm -rf /root/.cache/* + ARG SYSTEM_VERSION ENV SYSTEM_VERSION=$SYSTEM_VERSION From c007cf27efc0d1284e2b85bee7cb30f978ce94ba Mon Sep 17 00:00:00 2001 From: Arkadii Yakovets Date: Thu, 9 Mar 2023 09:39:51 -0800 Subject: [PATCH 082/220] Update salmon dependencies. --- workers/R/dependencies/salmon/renv.R | 30 + workers/R/dependencies/salmon/renv.lock | 1834 +++++++++++++++++++++++ workers/dockerfiles/Dockerfile.salmon | 15 +- 3 files changed, 1870 insertions(+), 9 deletions(-) create mode 100644 workers/R/dependencies/salmon/renv.R create mode 100644 workers/R/dependencies/salmon/renv.lock diff --git a/workers/R/dependencies/salmon/renv.R b/workers/R/dependencies/salmon/renv.R new file mode 100644 index 000000000..87742dc0b --- /dev/null +++ b/workers/R/dependencies/salmon/renv.R @@ -0,0 +1,30 @@ +renv::install( + "assertthat@0.2.1", + "backports@1.1.4", + "cli@2.0.2", + "crayon@1.3.4", + "digest@0.6.19", + "dplyr@1.0.2", + "ellipsis@0.3.2", + "fansi@0.4.0", + "ff@2.2-14", + "getopt@1.20.3", + "glue@1.6.1", + "hms@0.4.2", + "oligo", + "optparse@1.4.4", + "pillar@1.4.2", + "pkgconfig@2.0.2", + "purrr@0.3.5", + "R6@2.4.0", + "Rcpp@1.0.1", + "readr@1.3.1", + "rjson@0.2.19", + "rlang@1.0.6", + "tibble@2.1.3", + "tidyr@1.1.0", + "tximport", + "utf8@1.1.4", + "vctrs@0.4.1", + "zeallot@0.1.0" +) diff --git a/workers/R/dependencies/salmon/renv.lock b/workers/R/dependencies/salmon/renv.lock new file mode 100644 index 000000000..afb6de003 --- /dev/null +++ b/workers/R/dependencies/salmon/renv.lock @@ -0,0 +1,1834 @@ +{ + "R": { + "Version": "3.4.4", + "Repositories": [ + { + "Name": "Bioconductor", + "URL": "https://bioconductor.org/packages/3.6/bioc" + }, + { + "Name": "BioconductorAnnotation", + "URL": "https://bioconductor.org/packages/3.6/data/annotation" + }, + { + "Name": "BioconductorExperiment", + "URL": "https://bioconductor.org/packages/3.6/data/experiment" + }, + { + "Name": "CRAN", + "URL": "https://cloud.r-project.org" + } + ] + }, + "Packages": { + "AnnotationDbi": { + "Package": "AnnotationDbi", + "Version": "1.40.0", + "Source": "Bioconductor", + "Hash": "abb20d74ae5ea08a8d9616a6f1bbaca5", + "Requirements": [ + "Biobase", + "BiocGenerics", + "DBI", + "IRanges", + "RSQLite", + "S4Vectors" + ] + }, + "BH": { + "Package": "BH", + "Version": "1.81.0-1", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "68122010f01c4dcfbe58ce7112f2433d", + "Requirements": [] + }, + "Biobase": { + "Package": "Biobase", + "Version": "2.38.0", + "Source": "Bioconductor", + "Hash": "8c8060a3f339c35f1dc14af3b7d22d71", + "Requirements": [ + "BiocGenerics" + ] + }, + "BiocGenerics": { + "Package": "BiocGenerics", + "Version": "0.24.0", + "Source": "Bioconductor", + "Hash": "108ff3e3233e79aef825decc9fa87ee3", + "Requirements": [] + }, + "BiocInstaller": { + "Package": "BiocInstaller", + "Version": "1.28.0", + "Source": "Bioconductor", + "Hash": "ee02868b8bd3657a3463d8bc3a64d831", + "Requirements": [] + }, + "BiocManager": { + "Package": "BiocManager", + "Version": "1.30.20", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "a7fca16a50b6ef7771b49d636dd54b57", + "Requirements": [] + }, + "Biostrings": { + "Package": "Biostrings", + "Version": "2.46.0", + "Source": "Bioconductor", + "Hash": "12005b8dd90f7f7f9864ee9d6965c366", + "Requirements": [ + "BiocGenerics", + "IRanges", + "S4Vectors", + "XVector" + ] + }, + "DBI": { + "Package": "DBI", + "Version": "1.1.3", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "b2866e62bab9378c3cc9476a1954226b", + "Requirements": [] + }, + "DelayedArray": { + "Package": "DelayedArray", + "Version": "0.4.1", + "Source": "Bioconductor", + "Hash": "c2572a27fb1281ee4c11390826f326a1", + "Requirements": [ + "BiocGenerics", + "IRanges", + "S4Vectors", + "matrixStats" + ] + }, + "GenomeInfoDb": { + "Package": "GenomeInfoDb", + "Version": "1.14.0", + "Source": "Bioconductor", + "Hash": "39dc4261100e402165a6db62f364b493", + "Requirements": [ + "BiocGenerics", + "GenomeInfoDbData", + "IRanges", + "RCurl", + "S4Vectors" + ] + }, + "GenomeInfoDbData": { + "Package": "GenomeInfoDbData", + "Version": "1.0.0", + "Source": "Bioconductor", + "Hash": "336cc20fd69db19ebfad8a73e05d88b3", + "Requirements": [] + }, + "GenomicRanges": { + "Package": "GenomicRanges", + "Version": "1.30.3", + "Source": "Bioconductor", + "Hash": "ecfab21e609cea7ee297e0e1230b5bb4", + "Requirements": [ + "BiocGenerics", + "GenomeInfoDb", + "IRanges", + "S4Vectors", + "XVector" + ] + }, + "IRanges": { + "Package": "IRanges", + "Version": "2.12.0", + "Source": "Bioconductor", + "Hash": "d89aecf720b113b47f936c48b356d264", + "Requirements": [ + "BiocGenerics", + "S4Vectors" + ] + }, + "KernSmooth": { + "Package": "KernSmooth", + "Version": "2.23-15", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "081f417f4d6d55b7e8981433e8404a22", + "Requirements": [] + }, + "MASS": { + "Package": "MASS", + "Version": "7.3-49", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "f47828414f155725f342d93be7fcfabd", + "Requirements": [] + }, + "Matrix": { + "Package": "Matrix", + "Version": "1.2-12", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "2451d6490ec017b18b6eff460c65fd85", + "Requirements": [ + "lattice" + ] + }, + "R6": { + "Package": "R6", + "Version": "2.4.0", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "d4618c4cb36bc46831551c5d85815818", + "Requirements": [] + }, + "RCurl": { + "Package": "RCurl", + "Version": "1.98-1.10", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "35136c52e39f2679ebbe7bf448e3bd5a", + "Requirements": [ + "bitops" + ] + }, + "RSQLite": { + "Package": "RSQLite", + "Version": "2.3.0", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "264c1861d7ac1dc71ecb5ac5c4c1318a", + "Requirements": [ + "DBI", + "bit64", + "blob", + "cpp11", + "memoise", + "pkgconfig", + "plogr" + ] + }, + "Rcpp": { + "Package": "Rcpp", + "Version": "1.0.10", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "e749cae40fa9ef469b6050959517453c", + "Requirements": [] + }, + "S4Vectors": { + "Package": "S4Vectors", + "Version": "0.16.0", + "Source": "Bioconductor", + "Hash": "e9cd4cea8c93cbdd8595e562c8ed0624", + "Requirements": [ + "BiocGenerics" + ] + }, + "SummarizedExperiment": { + "Package": "SummarizedExperiment", + "Version": "1.8.1", + "Source": "Bioconductor", + "Hash": "57080b28b2f5606100e02a7ab01b3022", + "Requirements": [ + "Biobase", + "BiocGenerics", + "DelayedArray", + "GenomeInfoDb", + "GenomicRanges", + "IRanges", + "Matrix", + "S4Vectors" + ] + }, + "XVector": { + "Package": "XVector", + "Version": "0.18.0", + "Source": "Bioconductor", + "Hash": "c677dd00d99bd1f81caf0fc3d9fa7672", + "Requirements": [ + "BiocGenerics", + "IRanges", + "S4Vectors", + "zlibbioc" + ] + }, + "affxparser": { + "Package": "affxparser", + "Version": "1.50.0", + "Source": "Bioconductor", + "Hash": "86914cfc7998f083d207a8ae84488697", + "Requirements": [] + }, + "affyio": { + "Package": "affyio", + "Version": "1.48.0", + "Source": "Bioconductor", + "Hash": "f973e1ee016e8ff7095847e0769a9d97", + "Requirements": [ + "zlibbioc" + ] + }, + "askpass": { + "Package": "askpass", + "Version": "1.1", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "e8a22846fff485f0be3770c2da758713", + "Requirements": [ + "sys" + ] + }, + "assertthat": { + "Package": "assertthat", + "Version": "0.2.1", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "50c838a310445e954bc13f26f26a6ecf", + "Requirements": [] + }, + "backports": { + "Package": "backports", + "Version": "1.1.4", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "b9a4db2667d7e43d197ed12e40781889", + "Requirements": [] + }, + "base64enc": { + "Package": "base64enc", + "Version": "0.1-3", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "543776ae6848fde2f48ff3816d0628bc", + "Requirements": [] + }, + "bit": { + "Package": "bit", + "Version": "4.0.5", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "d242abec29412ce988848d0294b208fd", + "Requirements": [] + }, + "bit64": { + "Package": "bit64", + "Version": "4.0.5", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "9fe98599ca456d6552421db0d6772d8f", + "Requirements": [ + "bit" + ] + }, + "bitops": { + "Package": "bitops", + "Version": "1.0-7", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "b7d8d8ee39869c18d8846a184dd8a1af", + "Requirements": [] + }, + "blob": { + "Package": "blob", + "Version": "1.2.3", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "10d231579bc9c06ab1c320618808d4ff", + "Requirements": [ + "rlang", + "vctrs" + ] + }, + "boot": { + "Package": "boot", + "Version": "1.3-20", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "560a6eb3b4658e2ce3d0f8feb087fe56", + "Requirements": [] + }, + "brew": { + "Package": "brew", + "Version": "1.0-8", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "d69a786e85775b126bddbee185ae6084", + "Requirements": [] + }, + "brio": { + "Package": "brio", + "Version": "1.1.3", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "976cf154dfb043c012d87cddd8bca363", + "Requirements": [] + }, + "bslib": { + "Package": "bslib", + "Version": "0.4.2", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "a7fbf03946ad741129dc81098722fca1", + "Requirements": [ + "base64enc", + "cachem", + "htmltools", + "jquerylib", + "jsonlite", + "memoise", + "mime", + "rlang", + "sass" + ] + }, + "cachem": { + "Package": "cachem", + "Version": "1.0.7", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "cda74447c42f529de601fe4d4050daef", + "Requirements": [ + "fastmap", + "rlang" + ] + }, + "callr": { + "Package": "callr", + "Version": "3.7.3", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "9b2191ede20fa29828139b9900922e51", + "Requirements": [ + "R6", + "processx" + ] + }, + "class": { + "Package": "class", + "Version": "7.3-14", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "c39d47020cdf42e88bd80c83ca6a0a0b", + "Requirements": [ + "MASS" + ] + }, + "cli": { + "Package": "cli", + "Version": "3.6.0", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "3177a5a16c243adc199ba33117bd9657", + "Requirements": [] + }, + "clipr": { + "Package": "clipr", + "Version": "0.8.0", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "3f038e5ac7f41d4ac41ce658c85e3042", + "Requirements": [] + }, + "cluster": { + "Package": "cluster", + "Version": "2.0.6", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "ea8c392e186024710ab52bc405212f5e", + "Requirements": [] + }, + "codetools": { + "Package": "codetools", + "Version": "0.2-19", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "c089a619a7fae175d149d89164f8c7d8", + "Requirements": [] + }, + "commonmark": { + "Package": "commonmark", + "Version": "1.8.1", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "b6e3e947d1d7ebf3d2bdcea1bde63fe7", + "Requirements": [] + }, + "cpp11": { + "Package": "cpp11", + "Version": "0.4.3", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "ed588261931ee3be2c700d22e94a29ab", + "Requirements": [] + }, + "crayon": { + "Package": "crayon", + "Version": "1.3.4", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "0d57bc8e27b7ba9e45dba825ebc0de6b", + "Requirements": [] + }, + "credentials": { + "Package": "credentials", + "Version": "1.3.2", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "93762d0a34d78e6a025efdbfb5c6bb41", + "Requirements": [ + "askpass", + "curl", + "jsonlite", + "openssl", + "sys" + ] + }, + "curl": { + "Package": "curl", + "Version": "5.0.0", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "e4f97056611e8e6b8b852d13b7400cf1", + "Requirements": [] + }, + "data.table": { + "Package": "data.table", + "Version": "1.14.8", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "b4c06e554f33344e044ccd7fdca750a9", + "Requirements": [] + }, + "desc": { + "Package": "desc", + "Version": "1.4.2", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "6b9602c7ebbe87101a9c8edb6e8b6d21", + "Requirements": [ + "R6", + "cli", + "rprojroot" + ] + }, + "devtools": { + "Package": "devtools", + "Version": "2.4.5", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "ea5bc8b4a6a01e4f12d98b58329930bb", + "Requirements": [ + "cli", + "desc", + "ellipsis", + "fs", + "lifecycle", + "memoise", + "miniUI", + "pkgbuild", + "pkgdown", + "pkgload", + "profvis", + "rcmdcheck", + "remotes", + "rlang", + "roxygen2", + "rversions", + "sessioninfo", + "testthat", + "urlchecker", + "usethis", + "withr" + ] + }, + "diffobj": { + "Package": "diffobj", + "Version": "0.3.5", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "bcaa8b95f8d7d01a5dedfd959ce88ab8", + "Requirements": [ + "crayon" + ] + }, + "digest": { + "Package": "digest", + "Version": "0.6.19", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "2ac7f712959404638ccb1977809eabdd", + "Requirements": [] + }, + "doParallel": { + "Package": "doParallel", + "Version": "1.0.17", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "451e5edf411987991ab6a5410c45011f", + "Requirements": [ + "foreach", + "iterators" + ] + }, + "downlit": { + "Package": "downlit", + "Version": "0.4.2", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "79bf3f66590752ffbba20f8d2da94c7c", + "Requirements": [ + "brio", + "desc", + "digest", + "evaluate", + "fansi", + "memoise", + "rlang", + "vctrs", + "withr", + "yaml" + ] + }, + "dplyr": { + "Package": "dplyr", + "Version": "1.0.2", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "d0509913b27ea898189ee664b6030dc2", + "Requirements": [ + "R6", + "ellipsis", + "generics", + "glue", + "lifecycle", + "magrittr", + "rlang", + "tibble", + "tidyselect", + "vctrs" + ] + }, + "ellipsis": { + "Package": "ellipsis", + "Version": "0.3.2", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "bb0eec2fe32e88d9e2836c2f73ea2077", + "Requirements": [ + "rlang" + ] + }, + "evaluate": { + "Package": "evaluate", + "Version": "0.20", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "4b68aa51edd89a0e044a66e75ae3cc6c", + "Requirements": [] + }, + "fansi": { + "Package": "fansi", + "Version": "0.4.0", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "b31d9e5d051553d1177083aeba04b5b9", + "Requirements": [] + }, + "fastmap": { + "Package": "fastmap", + "Version": "1.1.1", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "f7736a18de97dea803bde0a2daaafb27", + "Requirements": [] + }, + "ff": { + "Package": "ff", + "Version": "2.2-14", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "2f745ad9a324bf4247df10ea6ebc3953", + "Requirements": [ + "bit" + ] + }, + "fontawesome": { + "Package": "fontawesome", + "Version": "0.5.0", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "e80750aec5717dedc019ad7ee40e4a7c", + "Requirements": [ + "htmltools", + "rlang" + ] + }, + "foreach": { + "Package": "foreach", + "Version": "1.5.2", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "618609b42c9406731ead03adf5379850", + "Requirements": [ + "codetools", + "iterators" + ] + }, + "foreign": { + "Package": "foreign", + "Version": "0.8-69", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "6f953f3e73fc00af8cdad0864f535f97", + "Requirements": [] + }, + "fs": { + "Package": "fs", + "Version": "1.6.1", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "f4dcd23b67e33d851d2079f703e8b985", + "Requirements": [] + }, + "generics": { + "Package": "generics", + "Version": "0.1.3", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "15e9634c0fcd294799e9b2e929ed1b86", + "Requirements": [] + }, + "gert": { + "Package": "gert", + "Version": "1.9.2", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "9122b3958e749badb5c939f498038b57", + "Requirements": [ + "askpass", + "credentials", + "openssl", + "rstudioapi", + "sys", + "zip" + ] + }, + "getopt": { + "Package": "getopt", + "Version": "1.20.3", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "ad68e3263f0bc9269aab8c2039440117", + "Requirements": [] + }, + "gh": { + "Package": "gh", + "Version": "1.4.0", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "03533b1c875028233598f848fda44c4c", + "Requirements": [ + "cli", + "gitcreds", + "httr2", + "ini", + "jsonlite", + "rlang" + ] + }, + "gitcreds": { + "Package": "gitcreds", + "Version": "0.1.2", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "ab08ac61f3e1be454ae21911eb8bc2fe", + "Requirements": [] + }, + "glue": { + "Package": "glue", + "Version": "1.6.1", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "de07842fc27ebf60e1102091c0c85e47", + "Requirements": [] + }, + "highr": { + "Package": "highr", + "Version": "0.10", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "06230136b2d2b9ba5805e1963fa6e890", + "Requirements": [ + "xfun" + ] + }, + "hms": { + "Package": "hms", + "Version": "0.4.2", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "b1d40b416da234147d5869a009458702", + "Requirements": [ + "pkgconfig", + "rlang" + ] + }, + "htmltools": { + "Package": "htmltools", + "Version": "0.5.4", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "9d27e99cc90bd701c0a7a63e5923f9b7", + "Requirements": [ + "base64enc", + "digest", + "ellipsis", + "fastmap", + "rlang" + ] + }, + "htmlwidgets": { + "Package": "htmlwidgets", + "Version": "1.6.1", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "b677ee5954471eaa974c0d099a343a1a", + "Requirements": [ + "htmltools", + "jsonlite", + "knitr", + "rmarkdown", + "yaml" + ] + }, + "httpuv": { + "Package": "httpuv", + "Version": "1.6.9", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "1046aa31a57eae8b357267a56a0b6d8b", + "Requirements": [ + "R6", + "Rcpp", + "later", + "promises" + ] + }, + "httr": { + "Package": "httr", + "Version": "1.4.2", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "a525aba14184fec243f9eaec62fbed43", + "Requirements": [ + "R6", + "curl", + "jsonlite", + "mime", + "openssl" + ] + }, + "httr2": { + "Package": "httr2", + "Version": "0.2.2", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "5c09fe33064978ede54de42309c8b532", + "Requirements": [ + "R6", + "cli", + "curl", + "glue", + "magrittr", + "openssl", + "rappdirs", + "rlang", + "withr" + ] + }, + "ini": { + "Package": "ini", + "Version": "0.3.1", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "6154ec2223172bce8162d4153cda21f7", + "Requirements": [] + }, + "iterators": { + "Package": "iterators", + "Version": "1.0.14", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "8954069286b4b2b0d023d1b288dce978", + "Requirements": [] + }, + "jquerylib": { + "Package": "jquerylib", + "Version": "0.1.4", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "5aab57a3bd297eee1c1d862735972182", + "Requirements": [ + "htmltools" + ] + }, + "jsonlite": { + "Package": "jsonlite", + "Version": "1.8.4", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "a4269a09a9b865579b2635c77e572374", + "Requirements": [] + }, + "knitr": { + "Package": "knitr", + "Version": "1.42", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "8329a9bcc82943c8069104d4be3ee22d", + "Requirements": [ + "evaluate", + "highr", + "xfun", + "yaml" + ] + }, + "later": { + "Package": "later", + "Version": "1.3.0", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "7e7b457d7766bc47f2a5f21cc2984f8e", + "Requirements": [ + "Rcpp", + "rlang" + ] + }, + "lattice": { + "Package": "lattice", + "Version": "0.20-35", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "10a22a9a66fbe7944e9ef98985d7c927", + "Requirements": [] + }, + "lazyeval": { + "Package": "lazyeval", + "Version": "0.2.2", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "d908914ae53b04d4c0c0fd72ecc35370", + "Requirements": [] + }, + "lifecycle": { + "Package": "lifecycle", + "Version": "1.0.3", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "001cecbeac1cff9301bdc3775ee46a86", + "Requirements": [ + "cli", + "glue", + "rlang" + ] + }, + "limma": { + "Package": "limma", + "Version": "3.34.9", + "Source": "Bioconductor", + "Hash": "06c81c4043f41177428a83c73a59d094", + "Requirements": [] + }, + "magrittr": { + "Package": "magrittr", + "Version": "2.0.3", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "7ce2733a9826b3aeb1775d56fd305472", + "Requirements": [] + }, + "matrixStats": { + "Package": "matrixStats", + "Version": "0.63.0", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "57af0c3da1f1a50680b186591c3359af", + "Requirements": [] + }, + "memoise": { + "Package": "memoise", + "Version": "2.0.1", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "e2817ccf4a065c5d9d7f2cfbe7c1d78c", + "Requirements": [ + "cachem", + "rlang" + ] + }, + "mgcv": { + "Package": "mgcv", + "Version": "1.8-23", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "b1a3bba86e45ddea6b66e67623f587ee", + "Requirements": [ + "Matrix", + "nlme" + ] + }, + "mime": { + "Package": "mime", + "Version": "0.12", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "18e9c28c1d3ca1560ce30658b22ce104", + "Requirements": [] + }, + "miniUI": { + "Package": "miniUI", + "Version": "0.1.1.1", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "fec5f52652d60615fdb3957b3d74324a", + "Requirements": [ + "htmltools", + "shiny" + ] + }, + "nlme": { + "Package": "nlme", + "Version": "3.1-131", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "215a901b25abf4077a8e7d2d6ce2b211", + "Requirements": [ + "lattice" + ] + }, + "nnet": { + "Package": "nnet", + "Version": "7.3-12", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "68287aec1f476c41d16ce1ace445800c", + "Requirements": [] + }, + "oligo": { + "Package": "oligo", + "Version": "1.42.0", + "Source": "Bioconductor", + "Hash": "694c134c6a0d42dd72084c9283735e1a", + "Requirements": [ + "Biobase", + "BiocGenerics", + "Biostrings", + "DBI", + "RSQLite", + "affxparser", + "affyio", + "ff", + "oligoClasses", + "preprocessCore", + "zlibbioc" + ] + }, + "oligoClasses": { + "Package": "oligoClasses", + "Version": "1.40.0", + "Source": "Bioconductor", + "Hash": "c197dfefe8a4928044851fceb05b5eba", + "Requirements": [ + "Biobase", + "BiocGenerics", + "BiocInstaller", + "Biostrings", + "DBI", + "GenomicRanges", + "IRanges", + "RSQLite", + "S4Vectors", + "SummarizedExperiment", + "affyio", + "ff", + "foreach" + ] + }, + "openssl": { + "Package": "openssl", + "Version": "2.0.5", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "b04c27110bf367b4daa93f34f3d58e75", + "Requirements": [ + "askpass" + ] + }, + "optparse": { + "Package": "optparse", + "Version": "1.4.4", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "803e834713c77eda6c233965977b2c58", + "Requirements": [ + "getopt" + ] + }, + "pillar": { + "Package": "pillar", + "Version": "1.4.2", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "9f20924c27aee3d09296c22fb84bc9de", + "Requirements": [ + "cli", + "crayon", + "fansi", + "rlang", + "utf8", + "vctrs" + ] + }, + "pkgbuild": { + "Package": "pkgbuild", + "Version": "1.4.0", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "d6c3008d79653a0f267703288230105e", + "Requirements": [ + "R6", + "callr", + "cli", + "crayon", + "desc", + "prettyunits", + "processx", + "rprojroot", + "withr" + ] + }, + "pkgconfig": { + "Package": "pkgconfig", + "Version": "2.0.2", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "f5940986fb19bcef52284068baeb3f29", + "Requirements": [] + }, + "pkgdown": { + "Package": "pkgdown", + "Version": "2.0.7", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "16fa15449c930bf3a7761d3c68f8abf9", + "Requirements": [ + "bslib", + "callr", + "cli", + "desc", + "digest", + "downlit", + "fs", + "httr", + "jsonlite", + "magrittr", + "memoise", + "purrr", + "ragg", + "rlang", + "rmarkdown", + "tibble", + "whisker", + "withr", + "xml2", + "yaml" + ] + }, + "pkgload": { + "Package": "pkgload", + "Version": "1.3.2", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "6b0c222c5071efe0f3baf3dae9aa40e2", + "Requirements": [ + "cli", + "crayon", + "desc", + "fs", + "glue", + "rlang", + "rprojroot", + "withr" + ] + }, + "plogr": { + "Package": "plogr", + "Version": "0.2.0", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "09eb987710984fc2905c7129c7d85e65", + "Requirements": [] + }, + "plyr": { + "Package": "plyr", + "Version": "1.8.8", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "d744387aef9047b0b48be2933d78e862", + "Requirements": [ + "Rcpp" + ] + }, + "praise": { + "Package": "praise", + "Version": "1.0.0", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "a555924add98c99d2f411e37e7d25e9f", + "Requirements": [] + }, + "preprocessCore": { + "Package": "preprocessCore", + "Version": "1.40.0", + "Source": "Bioconductor", + "Hash": "db115919701b4e644b96de3f7523d17a", + "Requirements": [] + }, + "prettyunits": { + "Package": "prettyunits", + "Version": "1.1.1", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "95ef9167b75dde9d2ccc3c7528393e7e", + "Requirements": [] + }, + "processx": { + "Package": "processx", + "Version": "3.8.0", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "a33ee2d9bf07564efb888ad98410da84", + "Requirements": [ + "R6", + "ps" + ] + }, + "profvis": { + "Package": "profvis", + "Version": "0.3.7", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "e9d21e79848e02e524bea6f5bd53e7e4", + "Requirements": [ + "htmlwidgets", + "stringr" + ] + }, + "promises": { + "Package": "promises", + "Version": "1.2.0.1", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "4ab2c43adb4d4699cf3690acd378d75d", + "Requirements": [ + "R6", + "Rcpp", + "later", + "magrittr", + "rlang" + ] + }, + "ps": { + "Package": "ps", + "Version": "1.7.2", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "68dd03d98a5efd1eb3012436de45ba83", + "Requirements": [] + }, + "purrr": { + "Package": "purrr", + "Version": "0.3.5", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "54842a2443c76267152eface28d9e90a", + "Requirements": [ + "magrittr", + "rlang" + ] + }, + "ragg": { + "Package": "ragg", + "Version": "1.2.5", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "690bc058ea2b1b8a407d3cfe3dce3ef9", + "Requirements": [ + "systemfonts", + "textshaping" + ] + }, + "rappdirs": { + "Package": "rappdirs", + "Version": "0.3.3", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "5e3c5dc0b071b21fa128676560dbe94d", + "Requirements": [] + }, + "rcmdcheck": { + "Package": "rcmdcheck", + "Version": "1.4.0", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "8f25ebe2ec38b1f2aef3b0d2ef76f6c4", + "Requirements": [ + "R6", + "callr", + "cli", + "curl", + "desc", + "digest", + "pkgbuild", + "prettyunits", + "rprojroot", + "sessioninfo", + "withr", + "xopen" + ] + }, + "readr": { + "Package": "readr", + "Version": "1.3.1", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "af8ab99cd936773a148963905736907b", + "Requirements": [ + "BH", + "R6", + "Rcpp", + "clipr", + "crayon", + "hms", + "tibble" + ] + }, + "rematch2": { + "Package": "rematch2", + "Version": "2.1.2", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "76c9e04c712a05848ae7a23d2f170a40", + "Requirements": [ + "tibble" + ] + }, + "remotes": { + "Package": "remotes", + "Version": "2.4.2", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "227045be9aee47e6dda9bb38ac870d67", + "Requirements": [] + }, + "renv": { + "Package": "renv", + "Version": "0.16.0", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "c9e8442ab69bc21c9697ecf856c1e6c7", + "Requirements": [] + }, + "reshape2": { + "Package": "reshape2", + "Version": "1.4.4", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "bb5996d0bd962d214a11140d77589917", + "Requirements": [ + "Rcpp", + "plyr", + "stringr" + ] + }, + "rjson": { + "Package": "rjson", + "Version": "0.2.19", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "1ea7e20c916450aea884e225787b9de4", + "Requirements": [] + }, + "rlang": { + "Package": "rlang", + "Version": "1.0.6", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "4ed1f8336c8d52c3e750adcdc57228a7", + "Requirements": [] + }, + "rmarkdown": { + "Package": "rmarkdown", + "Version": "2.20", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "716fde5382293cc94a71f68c85b78d19", + "Requirements": [ + "bslib", + "evaluate", + "htmltools", + "jquerylib", + "jsonlite", + "knitr", + "stringr", + "tinytex", + "xfun", + "yaml" + ] + }, + "roxygen2": { + "Package": "roxygen2", + "Version": "7.2.3", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "7b153c746193b143c14baa072bae4e27", + "Requirements": [ + "R6", + "brew", + "cli", + "commonmark", + "cpp11", + "desc", + "knitr", + "pkgload", + "purrr", + "rlang", + "stringi", + "stringr", + "withr", + "xml2" + ] + }, + "rpart": { + "Package": "rpart", + "Version": "4.1-13", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "6315535da80d5cc6c2e573966d8c8210", + "Requirements": [] + }, + "rprojroot": { + "Package": "rprojroot", + "Version": "2.0.3", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "1de7ab598047a87bba48434ba35d497d", + "Requirements": [] + }, + "rstudioapi": { + "Package": "rstudioapi", + "Version": "0.14", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "690bd2acc42a9166ce34845884459320", + "Requirements": [] + }, + "rversions": { + "Package": "rversions", + "Version": "2.1.2", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "a9881dfed103e83f9de151dc17002cd1", + "Requirements": [ + "curl", + "xml2" + ] + }, + "sass": { + "Package": "sass", + "Version": "0.4.5", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "2bb4371a4c80115518261866eab6ab11", + "Requirements": [ + "R6", + "fs", + "htmltools", + "rappdirs", + "rlang" + ] + }, + "sessioninfo": { + "Package": "sessioninfo", + "Version": "1.2.2", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "3f9796a8d0a0e8c6eb49a4b029359d1f", + "Requirements": [ + "cli" + ] + }, + "shiny": { + "Package": "shiny", + "Version": "1.7.4", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "c2eae3d8c670fa9dfa35a12066f4a1d5", + "Requirements": [ + "R6", + "bslib", + "cachem", + "commonmark", + "crayon", + "ellipsis", + "fastmap", + "fontawesome", + "glue", + "htmltools", + "httpuv", + "jsonlite", + "later", + "lifecycle", + "mime", + "promises", + "rlang", + "sourcetools", + "withr", + "xtable" + ] + }, + "sourcetools": { + "Package": "sourcetools", + "Version": "0.1.7-1", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "5f5a7629f956619d519205ec475fe647", + "Requirements": [] + }, + "spatial": { + "Package": "spatial", + "Version": "7.3-11", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "f27a078d834614513608da2c08031130", + "Requirements": [] + }, + "stringi": { + "Package": "stringi", + "Version": "1.7.12", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "ca8bd84263c77310739d2cf64d84d7c9", + "Requirements": [] + }, + "stringr": { + "Package": "stringr", + "Version": "1.5.0", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "671a4d384ae9d32fc47a14e98bfa3dc8", + "Requirements": [ + "cli", + "glue", + "lifecycle", + "magrittr", + "rlang", + "stringi", + "vctrs" + ] + }, + "survival": { + "Package": "survival", + "Version": "2.41-3", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "60b1da51f5e3556fd177170a1aa40b49", + "Requirements": [ + "Matrix" + ] + }, + "sys": { + "Package": "sys", + "Version": "3.4.1", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "34c16f1ef796057bfa06d3f4ff818a5d", + "Requirements": [] + }, + "systemfonts": { + "Package": "systemfonts", + "Version": "1.0.4", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "90b28393209827327de889f49935140a", + "Requirements": [ + "cpp11" + ] + }, + "testthat": { + "Package": "testthat", + "Version": "3.1.6", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "7910146255835c66e9eb272fb215248d", + "Requirements": [ + "R6", + "brio", + "callr", + "cli", + "desc", + "digest", + "ellipsis", + "evaluate", + "jsonlite", + "lifecycle", + "magrittr", + "pkgload", + "praise", + "processx", + "ps", + "rlang", + "waldo", + "withr" + ] + }, + "textshaping": { + "Package": "textshaping", + "Version": "0.3.6", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "1ab6223d3670fac7143202cb6a2d43d5", + "Requirements": [ + "cpp11", + "systemfonts" + ] + }, + "tibble": { + "Package": "tibble", + "Version": "2.1.3", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "8248ee35d1e15d1e506f05f5a5d46a75", + "Requirements": [ + "cli", + "crayon", + "fansi", + "pillar", + "pkgconfig", + "rlang" + ] + }, + "tidyr": { + "Package": "tidyr", + "Version": "1.1.0", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "7395a05640bf91502dd475a84008d87e", + "Requirements": [ + "Rcpp", + "dplyr", + "ellipsis", + "glue", + "lifecycle", + "magrittr", + "purrr", + "rlang", + "stringi", + "tibble", + "tidyselect", + "vctrs" + ] + }, + "tidyselect": { + "Package": "tidyselect", + "Version": "1.2.0", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "79540e5fcd9e0435af547d885f184fd5", + "Requirements": [ + "cli", + "glue", + "lifecycle", + "rlang", + "vctrs", + "withr" + ] + }, + "tinytex": { + "Package": "tinytex", + "Version": "0.44", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "c0f007e2eeed7722ce13d42b84a22e07", + "Requirements": [ + "xfun" + ] + }, + "tximport": { + "Package": "tximport", + "Version": "1.6.0", + "Source": "Bioconductor", + "Hash": "2c824ac20bbb34bba92a9b5b0d600fec", + "Requirements": [] + }, + "urlchecker": { + "Package": "urlchecker", + "Version": "1.0.1", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "409328b8e1253c8d729a7836fe7f7a16", + "Requirements": [ + "cli", + "curl", + "xml2" + ] + }, + "usethis": { + "Package": "usethis", + "Version": "2.1.6", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "a67a22c201832b12c036cc059f1d137d", + "Requirements": [ + "cli", + "clipr", + "crayon", + "curl", + "desc", + "fs", + "gert", + "gh", + "glue", + "jsonlite", + "lifecycle", + "purrr", + "rappdirs", + "rlang", + "rprojroot", + "rstudioapi", + "whisker", + "withr", + "yaml" + ] + }, + "utf8": { + "Package": "utf8", + "Version": "1.1.4", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "4a5081acfb7b81a572e4384a7aaf2af1", + "Requirements": [] + }, + "vctrs": { + "Package": "vctrs", + "Version": "0.4.1", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "8b54f22e2a58c4f275479c92ce041a57", + "Requirements": [ + "cli", + "glue", + "rlang" + ] + }, + "waldo": { + "Package": "waldo", + "Version": "0.4.0", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "035fba89d0c86e2113120f93301b98ad", + "Requirements": [ + "cli", + "diffobj", + "fansi", + "glue", + "rematch2", + "rlang", + "tibble" + ] + }, + "whisker": { + "Package": "whisker", + "Version": "0.4.1", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "c6abfa47a46d281a7d5159d0a8891e88", + "Requirements": [] + }, + "withr": { + "Package": "withr", + "Version": "2.5.0", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "c0e49a9760983e81e55cdd9be92e7182", + "Requirements": [] + }, + "xfun": { + "Package": "xfun", + "Version": "0.37", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "a6860e1400a8fd1ddb6d9b4230cc34ab", + "Requirements": [] + }, + "xml2": { + "Package": "xml2", + "Version": "1.3.3", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "40682ed6a969ea5abfd351eb67833adc", + "Requirements": [] + }, + "xopen": { + "Package": "xopen", + "Version": "1.0.0", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "6c85f015dee9cc7710ddd20f86881f58", + "Requirements": [ + "processx" + ] + }, + "xtable": { + "Package": "xtable", + "Version": "1.8-4", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "b8acdf8af494d9ec19ccb2481a9b11c2", + "Requirements": [] + }, + "yaml": { + "Package": "yaml", + "Version": "2.3.7", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "0d0056cc5383fbc240ccd0cb584bf436", + "Requirements": [] + }, + "zeallot": { + "Package": "zeallot", + "Version": "0.1.0", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "ee9b643aa8331c45d8d82eb3a137c9bc", + "Requirements": [] + }, + "zip": { + "Package": "zip", + "Version": "2.2.2", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "c42bfcec3fa6a0cce17ce1f8bc684f88", + "Requirements": [] + }, + "zlibbioc": { + "Package": "zlibbioc", + "Version": "1.24.0", + "Source": "Bioconductor", + "Hash": "75640bcdaa390770a672332c904642db", + "Requirements": [] + } + } +} diff --git a/workers/dockerfiles/Dockerfile.salmon b/workers/dockerfiles/Dockerfile.salmon index 046ee0b89..d9cd8818e 100644 --- a/workers/dockerfiles/Dockerfile.salmon +++ b/workers/dockerfiles/Dockerfile.salmon @@ -5,17 +5,12 @@ SHELL ["/bin/bash", "-o", "pipefail", "-c"] WORKDIR /home/user -COPY workers/R/dependencies/tximport/cran/dependencies.R tximport_dependencies.R -RUN Rscript tximport_dependencies.R - -# Install tximport. -COPY workers/R/dependencies/tximport/install_tximport.R . -RUN Rscript install_tximport.R +COPY workers/R/dependencies/salmon/renv.lock . +COPY workers/R/renv_load.R . +RUN Rscript renv_load.R COPY workers/data_refinery_workers/processors/requirements.txt . -RUN pip3 install --ignore-installed --no-cache-dir --upgrade pip && \ - pip3 install --ignore-installed --no-cache-dir numpy && \ - pip3 install --ignore-installed --no-cache-dir -r requirements.txt +RUN pip3 install --ignore-installed --no-cache-dir -r requirements.txt # Install Salmon # Tximport requires all experiments to be processed with the same version of @@ -61,6 +56,8 @@ COPY .boto .boto COPY config/ config/ COPY workers/ . +RUN rm -rf /root/.cache/* + ARG SYSTEM_VERSION ENV SYSTEM_VERSION=$SYSTEM_VERSION From 263136ddff2f724696ab44ba8403e17f471960d6 Mon Sep 17 00:00:00 2001 From: Arkadii Yakovets Date: Thu, 9 Mar 2023 09:47:19 -0800 Subject: [PATCH 083/220] Update no_op docker image and R dependencies. --- workers/R/dependencies/no_op/renv.R | 53 + workers/R/dependencies/no_op/renv.lock | 1613 ++++++++++++++++++++++++ workers/dockerfiles/Dockerfile.no_op | 16 +- 3 files changed, 1672 insertions(+), 10 deletions(-) create mode 100644 workers/R/dependencies/no_op/renv.R create mode 100644 workers/R/dependencies/no_op/renv.lock diff --git a/workers/R/dependencies/no_op/renv.R b/workers/R/dependencies/no_op/renv.R new file mode 100644 index 000000000..406954de8 --- /dev/null +++ b/workers/R/dependencies/no_op/renv.R @@ -0,0 +1,53 @@ +renv::install("data.table@1.11.0") +renv::install("getopt@1.20.3") +renv::install("optparse@1.4.4") +renv::install("rlang@0.3.1") +renv::install("crayon@1.3.4") +renv::install("assertthat@0.2.1") +renv::install("cli@1.1.0") +renv::install("fansi@0.4.0") +renv::install("utf8@1.1.4") +renv::install("digest@0.6.18") +renv::install("glue@1.3.1") +renv::install("pillar@1.3.1") +renv::install("pkgconfig@2.0.2") +renv::install("pillar@1.3.1") +renv::install("tibble@2.0.1") +renv::install("lazyeval@0.2.1") +renv::install("Rcpp@1.0.7") +renv::install("magrittr@1.5") +renv::install("purrr@0.3.3") +renv::install("tidyselect@0.2.5") +renv::install("R6@2.4.0") +renv::install("lifecycle@1.0.3") +renv::install("tibble@2.0.1") +renv::install("stringi@1.4.3") +renv::install("stringr@1.4.0") +renv::install("plyr@1.8.4") +renv::install("reshape2@1.4.3") +renv::install("bit@1.1-14") +renv::install("bit64@0.9-7") +renv::install("prettyunits@1.0.2") +renv::install("blob@1.1.1") +renv::install("DBI@1.0.0") +renv::install("memoise@2.0.1") +renv::install("RSQLite@2.1.1") +renv::install("ff@2.2-14") +renv::install("dplyr@1.0.2") +renv::install("readr@1.3.1") +renv::install("rlang@1.0.6") +renv::install("ellipsis@0.3.2") + +renv::install( + "oligo", + "oligoClasses", + "AnnotationDbi", + "illuminaHumanv1.db", + "illuminaHumanv2.db", + "illuminaHumanv3.db", + "illuminaHumanv4.db", + "illuminaMousev1.db", + "illuminaMousev1p1.db", + "illuminaMousev2.db", + "illuminaRatv1.db" +) diff --git a/workers/R/dependencies/no_op/renv.lock b/workers/R/dependencies/no_op/renv.lock new file mode 100644 index 000000000..7c1ebdefc --- /dev/null +++ b/workers/R/dependencies/no_op/renv.lock @@ -0,0 +1,1613 @@ +{ + "R": { + "Version": "3.4.4", + "Repositories": [ + { + "Name": "Bioconductor", + "URL": "https://bioconductor.org/packages/3.6/bioc" + }, + { + "Name": "BioconductorAnnotation", + "URL": "https://bioconductor.org/packages/3.6/data/annotation" + }, + { + "Name": "BioconductorExperiment", + "URL": "https://bioconductor.org/packages/3.6/data/experiment" + }, + { + "Name": "CRAN", + "URL": "https://cloud.r-project.org" + } + ] + }, + "Packages": { + "AnnotationDbi": { + "Package": "AnnotationDbi", + "Version": "1.40.0", + "Source": "Bioconductor", + "Hash": "abb20d74ae5ea08a8d9616a6f1bbaca5", + "Requirements": [ + "Biobase", + "BiocGenerics", + "DBI", + "IRanges", + "RSQLite", + "S4Vectors" + ] + }, + "BH": { + "Package": "BH", + "Version": "1.72.0-3", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "8f9ce74c6417d61f0782cbae5fd2b7b0", + "Requirements": [] + }, + "Biobase": { + "Package": "Biobase", + "Version": "2.38.0", + "Source": "Bioconductor", + "Hash": "8c8060a3f339c35f1dc14af3b7d22d71", + "Requirements": [ + "BiocGenerics" + ] + }, + "BiocGenerics": { + "Package": "BiocGenerics", + "Version": "0.24.0", + "Source": "Bioconductor", + "Hash": "108ff3e3233e79aef825decc9fa87ee3", + "Requirements": [] + }, + "BiocInstaller": { + "Package": "BiocInstaller", + "Version": "1.28.0", + "Source": "Bioconductor", + "Hash": "ee02868b8bd3657a3463d8bc3a64d831", + "Requirements": [] + }, + "BiocManager": { + "Package": "BiocManager", + "Version": "1.30.20", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "a7fca16a50b6ef7771b49d636dd54b57", + "Requirements": [] + }, + "Biostrings": { + "Package": "Biostrings", + "Version": "2.46.0", + "Source": "Bioconductor", + "Hash": "12005b8dd90f7f7f9864ee9d6965c366", + "Requirements": [ + "BiocGenerics", + "IRanges", + "S4Vectors", + "XVector" + ] + }, + "DBI": { + "Package": "DBI", + "Version": "1.0.0", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "7bc8be0e425da29fe0e10f792bdbb74b", + "Requirements": [] + }, + "DT": { + "Package": "DT", + "Version": "0.14", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "a3580ce0309c94d061c23b0afb4accbd", + "Requirements": [ + "crosstalk", + "htmltools", + "htmlwidgets", + "jsonlite", + "magrittr", + "promises" + ] + }, + "DelayedArray": { + "Package": "DelayedArray", + "Version": "0.4.1", + "Source": "Bioconductor", + "Hash": "c2572a27fb1281ee4c11390826f326a1", + "Requirements": [ + "BiocGenerics", + "IRanges", + "S4Vectors", + "matrixStats" + ] + }, + "GenomeInfoDb": { + "Package": "GenomeInfoDb", + "Version": "1.14.0", + "Source": "Bioconductor", + "Hash": "39dc4261100e402165a6db62f364b493", + "Requirements": [ + "BiocGenerics", + "GenomeInfoDbData", + "IRanges", + "RCurl", + "S4Vectors" + ] + }, + "GenomeInfoDbData": { + "Package": "GenomeInfoDbData", + "Version": "1.0.0", + "Source": "Bioconductor", + "Hash": "336cc20fd69db19ebfad8a73e05d88b3", + "Requirements": [] + }, + "GenomicRanges": { + "Package": "GenomicRanges", + "Version": "1.30.3", + "Source": "Bioconductor", + "Hash": "ecfab21e609cea7ee297e0e1230b5bb4", + "Requirements": [ + "BiocGenerics", + "GenomeInfoDb", + "IRanges", + "S4Vectors", + "XVector" + ] + }, + "IRanges": { + "Package": "IRanges", + "Version": "2.12.0", + "Source": "Bioconductor", + "Hash": "d89aecf720b113b47f936c48b356d264", + "Requirements": [ + "BiocGenerics", + "S4Vectors" + ] + }, + "KernSmooth": { + "Package": "KernSmooth", + "Version": "2.23-15", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "081f417f4d6d55b7e8981433e8404a22", + "Requirements": [] + }, + "MASS": { + "Package": "MASS", + "Version": "7.3-49", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "f47828414f155725f342d93be7fcfabd", + "Requirements": [] + }, + "Matrix": { + "Package": "Matrix", + "Version": "1.2-12", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "2451d6490ec017b18b6eff460c65fd85", + "Requirements": [ + "lattice" + ] + }, + "R6": { + "Package": "R6", + "Version": "2.4.0", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "d4618c4cb36bc46831551c5d85815818", + "Requirements": [] + }, + "RCurl": { + "Package": "RCurl", + "Version": "1.98-1.10", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "35136c52e39f2679ebbe7bf448e3bd5a", + "Requirements": [ + "bitops" + ] + }, + "RSQLite": { + "Package": "RSQLite", + "Version": "2.1.1", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "78c7eac4e23d9cbc194b7439bfc45079", + "Requirements": [ + "BH", + "DBI", + "Rcpp", + "bit64", + "blob", + "memoise", + "pkgconfig", + "plogr" + ] + }, + "Rcpp": { + "Package": "Rcpp", + "Version": "1.0.7", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "dab19adae4440ae55aa8a9d238b246bb", + "Requirements": [] + }, + "S4Vectors": { + "Package": "S4Vectors", + "Version": "0.16.0", + "Source": "Bioconductor", + "Hash": "e9cd4cea8c93cbdd8595e562c8ed0624", + "Requirements": [ + "BiocGenerics" + ] + }, + "SummarizedExperiment": { + "Package": "SummarizedExperiment", + "Version": "1.8.1", + "Source": "Bioconductor", + "Hash": "57080b28b2f5606100e02a7ab01b3022", + "Requirements": [ + "Biobase", + "BiocGenerics", + "DelayedArray", + "GenomeInfoDb", + "GenomicRanges", + "IRanges", + "Matrix", + "S4Vectors" + ] + }, + "XVector": { + "Package": "XVector", + "Version": "0.18.0", + "Source": "Bioconductor", + "Hash": "c677dd00d99bd1f81caf0fc3d9fa7672", + "Requirements": [ + "BiocGenerics", + "IRanges", + "S4Vectors", + "zlibbioc" + ] + }, + "affxparser": { + "Package": "affxparser", + "Version": "1.50.0", + "Source": "Bioconductor", + "Hash": "86914cfc7998f083d207a8ae84488697", + "Requirements": [] + }, + "affyio": { + "Package": "affyio", + "Version": "1.48.0", + "Source": "Bioconductor", + "Hash": "f973e1ee016e8ff7095847e0769a9d97", + "Requirements": [ + "zlibbioc" + ] + }, + "askpass": { + "Package": "askpass", + "Version": "1.1", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "e8a22846fff485f0be3770c2da758713", + "Requirements": [ + "sys" + ] + }, + "assertthat": { + "Package": "assertthat", + "Version": "0.2.1", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "50c838a310445e954bc13f26f26a6ecf", + "Requirements": [] + }, + "backports": { + "Package": "backports", + "Version": "1.1.8", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "3ef0eac19317fd03c0c854aed581d473", + "Requirements": [] + }, + "base64enc": { + "Package": "base64enc", + "Version": "0.1-3", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "543776ae6848fde2f48ff3816d0628bc", + "Requirements": [] + }, + "bit": { + "Package": "bit", + "Version": "1.1-14", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "ac0b4115f7bddd07e733e1ac1697c687", + "Requirements": [] + }, + "bit64": { + "Package": "bit64", + "Version": "0.9-7", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "3338d4a9b1352f5a613e2bdcefe784ea", + "Requirements": [ + "bit" + ] + }, + "bitops": { + "Package": "bitops", + "Version": "1.0-7", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "b7d8d8ee39869c18d8846a184dd8a1af", + "Requirements": [] + }, + "blob": { + "Package": "blob", + "Version": "1.1.1", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "3ce988193cfb67e59fde06121bd9f8be", + "Requirements": [ + "prettyunits" + ] + }, + "boot": { + "Package": "boot", + "Version": "1.3-20", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "560a6eb3b4658e2ce3d0f8feb087fe56", + "Requirements": [] + }, + "brew": { + "Package": "brew", + "Version": "1.0-6", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "92a5f887f9ae3035ac7afde22ba73ee9", + "Requirements": [] + }, + "cachem": { + "Package": "cachem", + "Version": "1.0.7", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "cda74447c42f529de601fe4d4050daef", + "Requirements": [ + "fastmap", + "rlang" + ] + }, + "callr": { + "Package": "callr", + "Version": "3.4.3", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "643163a00cb536454c624883a10ae0bc", + "Requirements": [ + "R6", + "processx" + ] + }, + "class": { + "Package": "class", + "Version": "7.3-14", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "c39d47020cdf42e88bd80c83ca6a0a0b", + "Requirements": [ + "MASS" + ] + }, + "cli": { + "Package": "cli", + "Version": "3.6.0", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "3177a5a16c243adc199ba33117bd9657", + "Requirements": [] + }, + "clipr": { + "Package": "clipr", + "Version": "0.7.0", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "08cf4045c149a0f0eaf405324c7495bd", + "Requirements": [] + }, + "cluster": { + "Package": "cluster", + "Version": "2.0.6", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "ea8c392e186024710ab52bc405212f5e", + "Requirements": [] + }, + "codetools": { + "Package": "codetools", + "Version": "0.2-19", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "c089a619a7fae175d149d89164f8c7d8", + "Requirements": [] + }, + "commonmark": { + "Package": "commonmark", + "Version": "1.7", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "0f22be39ec1d141fd03683c06f3a6e67", + "Requirements": [] + }, + "covr": { + "Package": "covr", + "Version": "3.5.0", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "cbc6df1ef6ee576f844f973c1fc04ab4", + "Requirements": [ + "crayon", + "digest", + "httr", + "jsonlite", + "rex", + "withr", + "yaml" + ] + }, + "cpp11": { + "Package": "cpp11", + "Version": "0.4.3", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "ed588261931ee3be2c700d22e94a29ab", + "Requirements": [] + }, + "crayon": { + "Package": "crayon", + "Version": "1.3.4", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "0d57bc8e27b7ba9e45dba825ebc0de6b", + "Requirements": [] + }, + "crosstalk": { + "Package": "crosstalk", + "Version": "1.1.0.1", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "ae55f5d7c02f0ab43c58dd050694f2b4", + "Requirements": [ + "R6", + "htmltools", + "jsonlite", + "lazyeval" + ] + }, + "curl": { + "Package": "curl", + "Version": "4.3", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "2b7d10581cc730804e9ed178c8374bd6", + "Requirements": [] + }, + "data.table": { + "Package": "data.table", + "Version": "1.11.0", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "e3c68af9852f074f4895ba72b2e65b0f", + "Requirements": [] + }, + "desc": { + "Package": "desc", + "Version": "1.2.0", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "6c8fe8fa26a23b79949375d372c7b395", + "Requirements": [ + "R6", + "assertthat", + "crayon", + "rprojroot" + ] + }, + "devtools": { + "Package": "devtools", + "Version": "2.3.1", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "271df6a328617c64149283e98b1cd8da", + "Requirements": [ + "DT", + "callr", + "cli", + "covr", + "desc", + "ellipsis", + "httr", + "jsonlite", + "memoise", + "pkgbuild", + "pkgload", + "rcmdcheck", + "remotes", + "rlang", + "roxygen2", + "rstudioapi", + "rversions", + "sessioninfo", + "testthat", + "usethis", + "withr" + ] + }, + "digest": { + "Package": "digest", + "Version": "0.6.18", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "496dd262e1ec64e452151479a74c972f", + "Requirements": [] + }, + "doParallel": { + "Package": "doParallel", + "Version": "1.0.17", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "451e5edf411987991ab6a5410c45011f", + "Requirements": [ + "foreach", + "iterators" + ] + }, + "dplyr": { + "Package": "dplyr", + "Version": "1.0.2", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "d0509913b27ea898189ee664b6030dc2", + "Requirements": [ + "R6", + "ellipsis", + "generics", + "glue", + "lifecycle", + "magrittr", + "rlang", + "tibble", + "tidyselect", + "vctrs" + ] + }, + "ellipsis": { + "Package": "ellipsis", + "Version": "0.3.2", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "bb0eec2fe32e88d9e2836c2f73ea2077", + "Requirements": [ + "rlang" + ] + }, + "evaluate": { + "Package": "evaluate", + "Version": "0.14", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "ec8ca05cffcc70569eaaad8469d2a3a7", + "Requirements": [] + }, + "fansi": { + "Package": "fansi", + "Version": "0.4.0", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "b31d9e5d051553d1177083aeba04b5b9", + "Requirements": [] + }, + "fastmap": { + "Package": "fastmap", + "Version": "1.1.1", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "f7736a18de97dea803bde0a2daaafb27", + "Requirements": [] + }, + "ff": { + "Package": "ff", + "Version": "2.2-14", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "2f745ad9a324bf4247df10ea6ebc3953", + "Requirements": [ + "bit" + ] + }, + "foreach": { + "Package": "foreach", + "Version": "1.5.2", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "618609b42c9406731ead03adf5379850", + "Requirements": [ + "codetools", + "iterators" + ] + }, + "foreign": { + "Package": "foreign", + "Version": "0.8-69", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "6f953f3e73fc00af8cdad0864f535f97", + "Requirements": [] + }, + "fs": { + "Package": "fs", + "Version": "1.4.2", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "8c04112383ca1988e96f429255f95675", + "Requirements": [] + }, + "generics": { + "Package": "generics", + "Version": "0.1.3", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "15e9634c0fcd294799e9b2e929ed1b86", + "Requirements": [] + }, + "getopt": { + "Package": "getopt", + "Version": "1.20.3", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "ad68e3263f0bc9269aab8c2039440117", + "Requirements": [] + }, + "gh": { + "Package": "gh", + "Version": "1.1.0", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "89ea5998938d1ad55f035c8a86f96b74", + "Requirements": [ + "cli", + "httr", + "ini", + "jsonlite" + ] + }, + "git2r": { + "Package": "git2r", + "Version": "0.27.1", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "531a82d1beed1f545beb25f4f5945bf7", + "Requirements": [] + }, + "glue": { + "Package": "glue", + "Version": "1.6.2", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "4f2596dfb05dac67b9dc558e5c6fba2e", + "Requirements": [] + }, + "highr": { + "Package": "highr", + "Version": "0.8", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "4dc5bb88961e347a0f4d8aad597cbfac", + "Requirements": [] + }, + "hms": { + "Package": "hms", + "Version": "1.1.2", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "41100392191e1244b887878b533eea91", + "Requirements": [ + "ellipsis", + "lifecycle", + "pkgconfig", + "rlang", + "vctrs" + ] + }, + "htmltools": { + "Package": "htmltools", + "Version": "0.5.4", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "9d27e99cc90bd701c0a7a63e5923f9b7", + "Requirements": [ + "base64enc", + "digest", + "ellipsis", + "fastmap", + "rlang" + ] + }, + "htmlwidgets": { + "Package": "htmlwidgets", + "Version": "1.5.1", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "41bace23583fbc25089edae324de2dc3", + "Requirements": [ + "htmltools", + "jsonlite", + "yaml" + ] + }, + "httr": { + "Package": "httr", + "Version": "1.4.2", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "a525aba14184fec243f9eaec62fbed43", + "Requirements": [ + "R6", + "curl", + "jsonlite", + "mime", + "openssl" + ] + }, + "illuminaHumanv1.db": { + "Package": "illuminaHumanv1.db", + "Version": "1.26.0", + "Source": "Bioconductor", + "Hash": "1d7fc2a61c42efed3bf75739bc84ad6a", + "Requirements": [ + "AnnotationDbi", + "org.Hs.eg.db" + ] + }, + "illuminaHumanv2.db": { + "Package": "illuminaHumanv2.db", + "Version": "1.26.0", + "Source": "Bioconductor", + "Hash": "d37f3c1e9d959a6d0d7f9f9b2d4d8b3c", + "Requirements": [ + "AnnotationDbi", + "org.Hs.eg.db" + ] + }, + "illuminaHumanv3.db": { + "Package": "illuminaHumanv3.db", + "Version": "1.26.0", + "Source": "Bioconductor", + "Hash": "4d440f2a6e46b8bd1622f8053d972ba7", + "Requirements": [ + "AnnotationDbi", + "org.Hs.eg.db" + ] + }, + "illuminaHumanv4.db": { + "Package": "illuminaHumanv4.db", + "Version": "1.26.0", + "Source": "Bioconductor", + "Hash": "dd95a57e2078439239495ea7aa866ac4", + "Requirements": [ + "AnnotationDbi", + "org.Hs.eg.db" + ] + }, + "illuminaMousev1.db": { + "Package": "illuminaMousev1.db", + "Version": "1.26.0", + "Source": "Bioconductor", + "Hash": "bd27e1248f2ae6c18c4d475bb7f78a1f", + "Requirements": [ + "AnnotationDbi", + "org.Mm.eg.db" + ] + }, + "illuminaMousev1p1.db": { + "Package": "illuminaMousev1p1.db", + "Version": "1.26.0", + "Source": "Bioconductor", + "Hash": "7eea4de4f3811e2fa883ff4fc93435ba", + "Requirements": [ + "AnnotationDbi", + "org.Mm.eg.db" + ] + }, + "illuminaMousev2.db": { + "Package": "illuminaMousev2.db", + "Version": "1.26.0", + "Source": "Bioconductor", + "Hash": "8e092cdd041fda0b2a98baa29ce77e44", + "Requirements": [ + "AnnotationDbi", + "org.Mm.eg.db" + ] + }, + "illuminaRatv1.db": { + "Package": "illuminaRatv1.db", + "Version": "1.26.0", + "Source": "Bioconductor", + "Hash": "b558243f788316a9bf90503828b49a9b", + "Requirements": [ + "AnnotationDbi", + "org.Rn.eg.db" + ] + }, + "ini": { + "Package": "ini", + "Version": "0.3.1", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "6154ec2223172bce8162d4153cda21f7", + "Requirements": [] + }, + "iterators": { + "Package": "iterators", + "Version": "1.0.14", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "8954069286b4b2b0d023d1b288dce978", + "Requirements": [] + }, + "jsonlite": { + "Package": "jsonlite", + "Version": "1.7.0", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "2657f20b9a74c996c602e74ebe540b06", + "Requirements": [] + }, + "knitr": { + "Package": "knitr", + "Version": "1.29", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "e5f4c41c17df8cdf7b0df12117c0d99a", + "Requirements": [ + "evaluate", + "highr", + "markdown", + "stringr", + "xfun", + "yaml" + ] + }, + "later": { + "Package": "later", + "Version": "1.1.0.1", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "d0a62b247165aabf397fded504660d8a", + "Requirements": [ + "BH", + "Rcpp", + "rlang" + ] + }, + "lattice": { + "Package": "lattice", + "Version": "0.20-35", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "10a22a9a66fbe7944e9ef98985d7c927", + "Requirements": [] + }, + "lazyeval": { + "Package": "lazyeval", + "Version": "0.2.1", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "ea5964121f493fb3057e9887d424f634", + "Requirements": [] + }, + "lifecycle": { + "Package": "lifecycle", + "Version": "1.0.3", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "001cecbeac1cff9301bdc3775ee46a86", + "Requirements": [ + "cli", + "glue", + "rlang" + ] + }, + "limma": { + "Package": "limma", + "Version": "3.34.9", + "Source": "Bioconductor", + "Hash": "06c81c4043f41177428a83c73a59d094", + "Requirements": [] + }, + "magrittr": { + "Package": "magrittr", + "Version": "1.5", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "1bb58822a20301cee84a41678e25d9b7", + "Requirements": [] + }, + "markdown": { + "Package": "markdown", + "Version": "1.1", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "61e4a10781dd00d7d81dd06ca9b94e95", + "Requirements": [ + "mime", + "xfun" + ] + }, + "matrixStats": { + "Package": "matrixStats", + "Version": "0.63.0", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "57af0c3da1f1a50680b186591c3359af", + "Requirements": [] + }, + "memoise": { + "Package": "memoise", + "Version": "2.0.1", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "e2817ccf4a065c5d9d7f2cfbe7c1d78c", + "Requirements": [ + "cachem", + "rlang" + ] + }, + "mgcv": { + "Package": "mgcv", + "Version": "1.8-23", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "b1a3bba86e45ddea6b66e67623f587ee", + "Requirements": [ + "Matrix", + "nlme" + ] + }, + "mime": { + "Package": "mime", + "Version": "0.9", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "e87a35ec73b157552814869f45a63aa3", + "Requirements": [] + }, + "nlme": { + "Package": "nlme", + "Version": "3.1-131", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "215a901b25abf4077a8e7d2d6ce2b211", + "Requirements": [ + "lattice" + ] + }, + "nnet": { + "Package": "nnet", + "Version": "7.3-12", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "68287aec1f476c41d16ce1ace445800c", + "Requirements": [] + }, + "oligo": { + "Package": "oligo", + "Version": "1.42.0", + "Source": "Bioconductor", + "Hash": "694c134c6a0d42dd72084c9283735e1a", + "Requirements": [ + "Biobase", + "BiocGenerics", + "Biostrings", + "DBI", + "RSQLite", + "affxparser", + "affyio", + "ff", + "oligoClasses", + "preprocessCore", + "zlibbioc" + ] + }, + "oligoClasses": { + "Package": "oligoClasses", + "Version": "1.40.0", + "Source": "Bioconductor", + "Hash": "c197dfefe8a4928044851fceb05b5eba", + "Requirements": [ + "Biobase", + "BiocGenerics", + "BiocInstaller", + "Biostrings", + "DBI", + "GenomicRanges", + "IRanges", + "RSQLite", + "S4Vectors", + "SummarizedExperiment", + "affyio", + "ff", + "foreach" + ] + }, + "openssl": { + "Package": "openssl", + "Version": "2.0.3", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "b9621e75c0652041002a19609fb23c5a", + "Requirements": [ + "askpass" + ] + }, + "optparse": { + "Package": "optparse", + "Version": "1.4.4", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "803e834713c77eda6c233965977b2c58", + "Requirements": [ + "getopt" + ] + }, + "org.Hs.eg.db": { + "Package": "org.Hs.eg.db", + "Version": "3.5.0", + "Source": "Bioconductor", + "Hash": "9330efb371032d9fa60e61e20f781df8", + "Requirements": [ + "AnnotationDbi" + ] + }, + "org.Mm.eg.db": { + "Package": "org.Mm.eg.db", + "Version": "3.5.0", + "Source": "Bioconductor", + "Hash": "cff056ccbda3d147a4f6605db991363c", + "Requirements": [ + "AnnotationDbi" + ] + }, + "org.Rn.eg.db": { + "Package": "org.Rn.eg.db", + "Version": "3.5.0", + "Source": "Bioconductor", + "Hash": "32f71a7a35451effb4d56449df074b77", + "Requirements": [ + "AnnotationDbi" + ] + }, + "pillar": { + "Package": "pillar", + "Version": "1.8.1", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "f2316df30902c81729ae9de95ad5a608", + "Requirements": [ + "cli", + "fansi", + "glue", + "lifecycle", + "rlang", + "utf8", + "vctrs" + ] + }, + "pkgbuild": { + "Package": "pkgbuild", + "Version": "1.1.0", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "404684bc4e3685007f9720adf13b06c1", + "Requirements": [ + "R6", + "callr", + "cli", + "crayon", + "desc", + "prettyunits", + "rprojroot", + "withr" + ] + }, + "pkgconfig": { + "Package": "pkgconfig", + "Version": "2.0.2", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "f5940986fb19bcef52284068baeb3f29", + "Requirements": [] + }, + "pkgload": { + "Package": "pkgload", + "Version": "1.1.0", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "b6b150cd4709e0c0c9b5d51ac4376282", + "Requirements": [ + "cli", + "crayon", + "desc", + "pkgbuild", + "rlang", + "rprojroot", + "rstudioapi", + "withr" + ] + }, + "plogr": { + "Package": "plogr", + "Version": "0.2.0", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "09eb987710984fc2905c7129c7d85e65", + "Requirements": [] + }, + "plyr": { + "Package": "plyr", + "Version": "1.8.4", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "23026346e3e0f023f326919320627a01", + "Requirements": [ + "Rcpp" + ] + }, + "praise": { + "Package": "praise", + "Version": "1.0.0", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "a555924add98c99d2f411e37e7d25e9f", + "Requirements": [] + }, + "preprocessCore": { + "Package": "preprocessCore", + "Version": "1.40.0", + "Source": "Bioconductor", + "Hash": "db115919701b4e644b96de3f7523d17a", + "Requirements": [] + }, + "prettyunits": { + "Package": "prettyunits", + "Version": "1.0.2", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "f3c960f0105f2ed179460864979fc37c", + "Requirements": [ + "assertthat", + "magrittr" + ] + }, + "processx": { + "Package": "processx", + "Version": "3.4.3", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "f4f13345fcb00c51ace12f65dd18749f", + "Requirements": [ + "R6", + "ps" + ] + }, + "promises": { + "Package": "promises", + "Version": "1.1.1", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "a8730dcbdd19f9047774909f0ec214a4", + "Requirements": [ + "R6", + "Rcpp", + "later", + "magrittr", + "rlang" + ] + }, + "ps": { + "Package": "ps", + "Version": "1.3.3", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "425d938eb9c02906a8ac98c0c2a306b5", + "Requirements": [] + }, + "purrr": { + "Package": "purrr", + "Version": "0.3.3", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "22aca7d1181718e927d403a8c2d69d62", + "Requirements": [ + "magrittr", + "rlang" + ] + }, + "rcmdcheck": { + "Package": "rcmdcheck", + "Version": "1.3.3", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "ed95895886dab6d2a584da45503555da", + "Requirements": [ + "R6", + "callr", + "cli", + "crayon", + "desc", + "digest", + "pkgbuild", + "prettyunits", + "rprojroot", + "sessioninfo", + "withr", + "xopen" + ] + }, + "readr": { + "Package": "readr", + "Version": "1.3.1", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "af8ab99cd936773a148963905736907b", + "Requirements": [ + "BH", + "R6", + "Rcpp", + "clipr", + "crayon", + "hms", + "tibble" + ] + }, + "rematch2": { + "Package": "rematch2", + "Version": "2.1.2", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "76c9e04c712a05848ae7a23d2f170a40", + "Requirements": [ + "tibble" + ] + }, + "remotes": { + "Package": "remotes", + "Version": "2.2.0", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "430a0908aee75b1fcba0e62857cab0ce", + "Requirements": [] + }, + "renv": { + "Package": "renv", + "Version": "0.16.0", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "c9e8442ab69bc21c9697ecf856c1e6c7", + "Requirements": [] + }, + "reshape2": { + "Package": "reshape2", + "Version": "1.4.3", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "15a23ad30f51789188e439599559815c", + "Requirements": [ + "Rcpp", + "plyr", + "stringr" + ] + }, + "rex": { + "Package": "rex", + "Version": "1.2.0", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "093584b944440c5cd07a696b3c8e0e4c", + "Requirements": [ + "lazyeval" + ] + }, + "rlang": { + "Package": "rlang", + "Version": "1.0.6", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "4ed1f8336c8d52c3e750adcdc57228a7", + "Requirements": [] + }, + "roxygen2": { + "Package": "roxygen2", + "Version": "7.1.1", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "fcd94e00cc409b25d07ca50f7bf339f5", + "Requirements": [ + "R6", + "Rcpp", + "brew", + "commonmark", + "desc", + "digest", + "knitr", + "pkgload", + "purrr", + "rlang", + "stringi", + "stringr", + "xml2" + ] + }, + "rpart": { + "Package": "rpart", + "Version": "4.1-13", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "6315535da80d5cc6c2e573966d8c8210", + "Requirements": [] + }, + "rprojroot": { + "Package": "rprojroot", + "Version": "1.3-2", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "f6a407ae5dd21f6f80a6708bbb6eb3ae", + "Requirements": [ + "backports" + ] + }, + "rstudioapi": { + "Package": "rstudioapi", + "Version": "0.11", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "33a5b27a03da82ac4b1d43268f80088a", + "Requirements": [] + }, + "rversions": { + "Package": "rversions", + "Version": "2.0.2", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "0ec41191f744d0f5afad8c6f35cc36e4", + "Requirements": [ + "curl", + "xml2" + ] + }, + "sessioninfo": { + "Package": "sessioninfo", + "Version": "1.1.1", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "308013098befe37484df72c39cf90d6e", + "Requirements": [ + "cli", + "withr" + ] + }, + "spatial": { + "Package": "spatial", + "Version": "7.3-11", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "f27a078d834614513608da2c08031130", + "Requirements": [] + }, + "stringi": { + "Package": "stringi", + "Version": "1.4.3", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "74a50760af835563fb2c124e66aa134e", + "Requirements": [] + }, + "stringr": { + "Package": "stringr", + "Version": "1.4.0", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "0759e6b6c0957edb1311028a49a35e76", + "Requirements": [ + "glue", + "magrittr", + "stringi" + ] + }, + "survival": { + "Package": "survival", + "Version": "2.41-3", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "60b1da51f5e3556fd177170a1aa40b49", + "Requirements": [ + "Matrix" + ] + }, + "sys": { + "Package": "sys", + "Version": "3.4", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "b227d13e29222b4574486cfcbde077fa", + "Requirements": [] + }, + "testthat": { + "Package": "testthat", + "Version": "2.3.2", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "0829b987b8961fb07f3b1b64a2fbc495", + "Requirements": [ + "R6", + "cli", + "crayon", + "digest", + "ellipsis", + "evaluate", + "magrittr", + "pkgload", + "praise", + "rlang", + "withr" + ] + }, + "tibble": { + "Package": "tibble", + "Version": "3.1.8", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "56b6934ef0f8c68225949a8672fe1a8f", + "Requirements": [ + "fansi", + "lifecycle", + "magrittr", + "pillar", + "pkgconfig", + "rlang", + "vctrs" + ] + }, + "tidyselect": { + "Package": "tidyselect", + "Version": "1.2.0", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "79540e5fcd9e0435af547d885f184fd5", + "Requirements": [ + "cli", + "glue", + "lifecycle", + "rlang", + "vctrs", + "withr" + ] + }, + "tximport": { + "Package": "tximport", + "Version": "1.6.0", + "Source": "Bioconductor", + "Hash": "2c824ac20bbb34bba92a9b5b0d600fec", + "Requirements": [] + }, + "usethis": { + "Package": "usethis", + "Version": "1.6.1", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "e1985f5a9985fea2e338fa7eb99018ca", + "Requirements": [ + "cli", + "clipr", + "crayon", + "curl", + "desc", + "fs", + "gh", + "git2r", + "glue", + "purrr", + "rematch2", + "rlang", + "rprojroot", + "rstudioapi", + "whisker", + "withr", + "yaml" + ] + }, + "utf8": { + "Package": "utf8", + "Version": "1.1.4", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "4a5081acfb7b81a572e4384a7aaf2af1", + "Requirements": [] + }, + "vctrs": { + "Package": "vctrs", + "Version": "0.5.2", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "e4ffa94ceed5f124d429a5a5f0f5b378", + "Requirements": [ + "cli", + "glue", + "lifecycle", + "rlang" + ] + }, + "whisker": { + "Package": "whisker", + "Version": "0.4", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "ca970b96d894e90397ed20637a0c1bbe", + "Requirements": [] + }, + "withr": { + "Package": "withr", + "Version": "2.5.0", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "c0e49a9760983e81e55cdd9be92e7182", + "Requirements": [] + }, + "xfun": { + "Package": "xfun", + "Version": "0.36", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "f5baec54606751aa53ac9c0e05848ed6", + "Requirements": [] + }, + "xml2": { + "Package": "xml2", + "Version": "1.3.2", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "d4d71a75dd3ea9eb5fa28cc21f9585e2", + "Requirements": [] + }, + "xopen": { + "Package": "xopen", + "Version": "1.0.0", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "6c85f015dee9cc7710ddd20f86881f58", + "Requirements": [ + "processx" + ] + }, + "yaml": { + "Package": "yaml", + "Version": "2.2.1", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "2826c5d9efb0a88f657c7a679c7106db", + "Requirements": [] + }, + "zlibbioc": { + "Package": "zlibbioc", + "Version": "1.24.0", + "Source": "Bioconductor", + "Hash": "75640bcdaa390770a672332c904642db", + "Requirements": [] + } + } +} diff --git a/workers/dockerfiles/Dockerfile.no_op b/workers/dockerfiles/Dockerfile.no_op index 60f686265..11729dba4 100644 --- a/workers/dockerfiles/Dockerfile.no_op +++ b/workers/dockerfiles/Dockerfile.no_op @@ -5,22 +5,16 @@ SHELL ["/bin/bash", "-o", "pipefail", "-c"] WORKDIR /home/user -COPY workers/R/dependencies/no_op/cran/dependencies.R . -RUN Rscript dependencies.R - -COPY workers/R/dependencies/no_op/install_gene_convert.R . -RUN Rscript install_gene_convert.R +COPY workers/R/dependencies/no_op/renv.lock . +COPY workers/R/renv_load.R . +RUN Rscript renv_load.R COPY workers/data_refinery_workers/processors/requirements.txt . -RUN pip3 install --ignore-installed --no-cache-dir --upgrade pip && \ - pip3 install --ignore-installed --no-cache-dir numpy && \ - pip3 install --ignore-installed --no-cache-dir -r requirements.txt +RUN pip3 install --ignore-installed --no-cache-dir -r requirements.txt # Noop-specific. RUN mkdir -p gene_indexes - WORKDIR /home/user/gene_indexes - ENV ID_REFINERY_URL=https://zenodo.org/record/1410647/files/all_1536267482.zip RUN curl -O $ID_REFINERY_URL && \ echo $ID_REFINERY_URL > /etc/identifier_refinery_url && \ @@ -39,6 +33,8 @@ COPY .boto .boto COPY config/ config/ COPY workers/ . +RUN rm -rf /root/.cache/* + ARG SYSTEM_VERSION ENV SYSTEM_VERSION=$SYSTEM_VERSION From 98e7a6df5c13449c76bc1fe8f30e19eef83c84b4 Mon Sep 17 00:00:00 2001 From: Arkadii Yakovets Date: Thu, 9 Mar 2023 11:05:33 -0800 Subject: [PATCH 084/220] Update illumina docker image and R dependencies. --- workers/R/dependencies/illumina/renv.R | 49 + workers/R/dependencies/illumina/renv.lock | 1587 +++++++++++++++++++++ workers/dockerfiles/Dockerfile.illumina | 14 +- 3 files changed, 1642 insertions(+), 8 deletions(-) create mode 100644 workers/R/dependencies/illumina/renv.R create mode 100644 workers/R/dependencies/illumina/renv.lock diff --git a/workers/R/dependencies/illumina/renv.R b/workers/R/dependencies/illumina/renv.R new file mode 100644 index 000000000..acebff1eb --- /dev/null +++ b/workers/R/dependencies/illumina/renv.R @@ -0,0 +1,49 @@ +renv::install("iterators@1.0.10") +renv::install("codetools@0.2-16") +renv::install("foreach@1.4.4") +renv::install("doParallel@1.0.11") +renv::install("data.table@1.11.0") +renv::install("getopt@1.20.3") +renv::install("optparse@1.4.4") +renv::install("lazyeval@0.2.1") +renv::install("rlang@0.3.1") +renv::install("glue@1.3.1") +renv::install("digest@0.6.18") +renv::install("crayon@1.3.4") +renv::install("assertthat@0.2.1") +renv::install("fansi@0.4.0") +renv::install("utf8@1.1.4") +renv::install("pillar@1.3.1") +renv::install("pkgconfig@2.0.2") +renv::install("pillar@1.3.1") +renv::install("tibble@2.0.1") +renv::install("R6@2.4.0") +renv::install("Rcpp@1.0.1") +renv::install("magrittr@1.5") +renv::install("tidyselect@0.2.5") +renv::install("lifecycle@1.0.3") +renv::install("tibble@2.0.1") +renv::install("dplyr@1.0.0") +renv::install("DBI@1.0.0") +renv::install("memoise@1.1.0") +renv::install("bit@1.1-14") +renv::install("bit64@0.9-7") +renv::install("ff@2.2-14") +renv::install("prettyunits@1.0.2") +renv::install("blob@1.1.1") +renv::install("RSQLite@2.1.1") + +renv::install( + "oligoClasses", + "oligo", + "AnnotationDbi", + "limma", + "illuminaHumanv1.db", + "illuminaHumanv2.db", + "illuminaHumanv3.db", + "illuminaHumanv4.db", + "illuminaMousev1.db", + "illuminaMousev1p1.db", + "illuminaMousev2.db", + "illuminaRatv1.db" +) diff --git a/workers/R/dependencies/illumina/renv.lock b/workers/R/dependencies/illumina/renv.lock new file mode 100644 index 000000000..b1d6d8cda --- /dev/null +++ b/workers/R/dependencies/illumina/renv.lock @@ -0,0 +1,1587 @@ +{ + "R": { + "Version": "3.4.4", + "Repositories": [ + { + "Name": "Bioconductor", + "URL": "https://bioconductor.org/packages/3.6/bioc" + }, + { + "Name": "BioconductorAnnotation", + "URL": "https://bioconductor.org/packages/3.6/data/annotation" + }, + { + "Name": "BioconductorExperiment", + "URL": "https://bioconductor.org/packages/3.6/data/experiment" + }, + { + "Name": "CRAN", + "URL": "https://cloud.r-project.org" + } + ] + }, + "Packages": { + "AnnotationDbi": { + "Package": "AnnotationDbi", + "Version": "1.40.0", + "Source": "Bioconductor", + "Hash": "abb20d74ae5ea08a8d9616a6f1bbaca5", + "Requirements": [ + "Biobase", + "BiocGenerics", + "DBI", + "IRanges", + "RSQLite", + "S4Vectors" + ] + }, + "BH": { + "Package": "BH", + "Version": "1.72.0-3", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "8f9ce74c6417d61f0782cbae5fd2b7b0", + "Requirements": [] + }, + "Biobase": { + "Package": "Biobase", + "Version": "2.38.0", + "Source": "Bioconductor", + "Hash": "8c8060a3f339c35f1dc14af3b7d22d71", + "Requirements": [ + "BiocGenerics" + ] + }, + "BiocGenerics": { + "Package": "BiocGenerics", + "Version": "0.24.0", + "Source": "Bioconductor", + "Hash": "108ff3e3233e79aef825decc9fa87ee3", + "Requirements": [] + }, + "BiocInstaller": { + "Package": "BiocInstaller", + "Version": "1.28.0", + "Source": "Bioconductor", + "Hash": "ee02868b8bd3657a3463d8bc3a64d831", + "Requirements": [] + }, + "BiocManager": { + "Package": "BiocManager", + "Version": "1.30.20", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "a7fca16a50b6ef7771b49d636dd54b57", + "Requirements": [] + }, + "Biostrings": { + "Package": "Biostrings", + "Version": "2.46.0", + "Source": "Bioconductor", + "Hash": "12005b8dd90f7f7f9864ee9d6965c366", + "Requirements": [ + "BiocGenerics", + "IRanges", + "S4Vectors", + "XVector" + ] + }, + "DBI": { + "Package": "DBI", + "Version": "1.1.3", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "b2866e62bab9378c3cc9476a1954226b", + "Requirements": [] + }, + "DT": { + "Package": "DT", + "Version": "0.14", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "a3580ce0309c94d061c23b0afb4accbd", + "Requirements": [ + "crosstalk", + "htmltools", + "htmlwidgets", + "jsonlite", + "magrittr", + "promises" + ] + }, + "DelayedArray": { + "Package": "DelayedArray", + "Version": "0.4.1", + "Source": "Bioconductor", + "Hash": "c2572a27fb1281ee4c11390826f326a1", + "Requirements": [ + "BiocGenerics", + "IRanges", + "S4Vectors", + "matrixStats" + ] + }, + "GenomeInfoDb": { + "Package": "GenomeInfoDb", + "Version": "1.14.0", + "Source": "Bioconductor", + "Hash": "39dc4261100e402165a6db62f364b493", + "Requirements": [ + "BiocGenerics", + "GenomeInfoDbData", + "IRanges", + "RCurl", + "S4Vectors" + ] + }, + "GenomeInfoDbData": { + "Package": "GenomeInfoDbData", + "Version": "1.0.0", + "Source": "Bioconductor", + "Hash": "336cc20fd69db19ebfad8a73e05d88b3", + "Requirements": [] + }, + "GenomicRanges": { + "Package": "GenomicRanges", + "Version": "1.30.3", + "Source": "Bioconductor", + "Hash": "ecfab21e609cea7ee297e0e1230b5bb4", + "Requirements": [ + "BiocGenerics", + "GenomeInfoDb", + "IRanges", + "S4Vectors", + "XVector" + ] + }, + "IRanges": { + "Package": "IRanges", + "Version": "2.12.0", + "Source": "Bioconductor", + "Hash": "d89aecf720b113b47f936c48b356d264", + "Requirements": [ + "BiocGenerics", + "S4Vectors" + ] + }, + "KernSmooth": { + "Package": "KernSmooth", + "Version": "2.23-15", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "081f417f4d6d55b7e8981433e8404a22", + "Requirements": [] + }, + "MASS": { + "Package": "MASS", + "Version": "7.3-49", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "f47828414f155725f342d93be7fcfabd", + "Requirements": [] + }, + "Matrix": { + "Package": "Matrix", + "Version": "1.2-12", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "2451d6490ec017b18b6eff460c65fd85", + "Requirements": [ + "lattice" + ] + }, + "R6": { + "Package": "R6", + "Version": "2.4.0", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "d4618c4cb36bc46831551c5d85815818", + "Requirements": [] + }, + "RCurl": { + "Package": "RCurl", + "Version": "1.98-1.10", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "35136c52e39f2679ebbe7bf448e3bd5a", + "Requirements": [ + "bitops" + ] + }, + "RSQLite": { + "Package": "RSQLite", + "Version": "2.3.0", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "264c1861d7ac1dc71ecb5ac5c4c1318a", + "Requirements": [ + "DBI", + "bit64", + "blob", + "cpp11", + "memoise", + "pkgconfig", + "plogr" + ] + }, + "Rcpp": { + "Package": "Rcpp", + "Version": "1.0.10", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "e749cae40fa9ef469b6050959517453c", + "Requirements": [] + }, + "S4Vectors": { + "Package": "S4Vectors", + "Version": "0.16.0", + "Source": "Bioconductor", + "Hash": "e9cd4cea8c93cbdd8595e562c8ed0624", + "Requirements": [ + "BiocGenerics" + ] + }, + "SummarizedExperiment": { + "Package": "SummarizedExperiment", + "Version": "1.8.1", + "Source": "Bioconductor", + "Hash": "57080b28b2f5606100e02a7ab01b3022", + "Requirements": [ + "Biobase", + "BiocGenerics", + "DelayedArray", + "GenomeInfoDb", + "GenomicRanges", + "IRanges", + "Matrix", + "S4Vectors" + ] + }, + "XVector": { + "Package": "XVector", + "Version": "0.18.0", + "Source": "Bioconductor", + "Hash": "c677dd00d99bd1f81caf0fc3d9fa7672", + "Requirements": [ + "BiocGenerics", + "IRanges", + "S4Vectors", + "zlibbioc" + ] + }, + "affxparser": { + "Package": "affxparser", + "Version": "1.50.0", + "Source": "Bioconductor", + "Hash": "86914cfc7998f083d207a8ae84488697", + "Requirements": [] + }, + "affyio": { + "Package": "affyio", + "Version": "1.48.0", + "Source": "Bioconductor", + "Hash": "f973e1ee016e8ff7095847e0769a9d97", + "Requirements": [ + "zlibbioc" + ] + }, + "askpass": { + "Package": "askpass", + "Version": "1.1", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "e8a22846fff485f0be3770c2da758713", + "Requirements": [ + "sys" + ] + }, + "assertthat": { + "Package": "assertthat", + "Version": "0.2.1", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "50c838a310445e954bc13f26f26a6ecf", + "Requirements": [] + }, + "backports": { + "Package": "backports", + "Version": "1.1.8", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "3ef0eac19317fd03c0c854aed581d473", + "Requirements": [] + }, + "base64enc": { + "Package": "base64enc", + "Version": "0.1-3", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "543776ae6848fde2f48ff3816d0628bc", + "Requirements": [] + }, + "bit": { + "Package": "bit", + "Version": "4.0.5", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "d242abec29412ce988848d0294b208fd", + "Requirements": [] + }, + "bit64": { + "Package": "bit64", + "Version": "4.0.5", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "9fe98599ca456d6552421db0d6772d8f", + "Requirements": [ + "bit" + ] + }, + "bitops": { + "Package": "bitops", + "Version": "1.0-7", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "b7d8d8ee39869c18d8846a184dd8a1af", + "Requirements": [] + }, + "blob": { + "Package": "blob", + "Version": "1.2.3", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "10d231579bc9c06ab1c320618808d4ff", + "Requirements": [ + "rlang", + "vctrs" + ] + }, + "boot": { + "Package": "boot", + "Version": "1.3-20", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "560a6eb3b4658e2ce3d0f8feb087fe56", + "Requirements": [] + }, + "brew": { + "Package": "brew", + "Version": "1.0-6", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "92a5f887f9ae3035ac7afde22ba73ee9", + "Requirements": [] + }, + "cachem": { + "Package": "cachem", + "Version": "1.0.7", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "cda74447c42f529de601fe4d4050daef", + "Requirements": [ + "fastmap", + "rlang" + ] + }, + "callr": { + "Package": "callr", + "Version": "3.4.3", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "643163a00cb536454c624883a10ae0bc", + "Requirements": [ + "R6", + "processx" + ] + }, + "class": { + "Package": "class", + "Version": "7.3-14", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "c39d47020cdf42e88bd80c83ca6a0a0b", + "Requirements": [ + "MASS" + ] + }, + "cli": { + "Package": "cli", + "Version": "3.6.0", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "3177a5a16c243adc199ba33117bd9657", + "Requirements": [] + }, + "clipr": { + "Package": "clipr", + "Version": "0.7.0", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "08cf4045c149a0f0eaf405324c7495bd", + "Requirements": [] + }, + "cluster": { + "Package": "cluster", + "Version": "2.0.6", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "ea8c392e186024710ab52bc405212f5e", + "Requirements": [] + }, + "codetools": { + "Package": "codetools", + "Version": "0.2-19", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "c089a619a7fae175d149d89164f8c7d8", + "Requirements": [] + }, + "commonmark": { + "Package": "commonmark", + "Version": "1.7", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "0f22be39ec1d141fd03683c06f3a6e67", + "Requirements": [] + }, + "covr": { + "Package": "covr", + "Version": "3.5.0", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "cbc6df1ef6ee576f844f973c1fc04ab4", + "Requirements": [ + "crayon", + "digest", + "httr", + "jsonlite", + "rex", + "withr", + "yaml" + ] + }, + "cpp11": { + "Package": "cpp11", + "Version": "0.4.3", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "ed588261931ee3be2c700d22e94a29ab", + "Requirements": [] + }, + "crayon": { + "Package": "crayon", + "Version": "1.3.4", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "0d57bc8e27b7ba9e45dba825ebc0de6b", + "Requirements": [] + }, + "crosstalk": { + "Package": "crosstalk", + "Version": "1.1.0.1", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "ae55f5d7c02f0ab43c58dd050694f2b4", + "Requirements": [ + "R6", + "htmltools", + "jsonlite", + "lazyeval" + ] + }, + "curl": { + "Package": "curl", + "Version": "4.3", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "2b7d10581cc730804e9ed178c8374bd6", + "Requirements": [] + }, + "data.table": { + "Package": "data.table", + "Version": "1.11.0", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "e3c68af9852f074f4895ba72b2e65b0f", + "Requirements": [] + }, + "desc": { + "Package": "desc", + "Version": "1.2.0", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "6c8fe8fa26a23b79949375d372c7b395", + "Requirements": [ + "R6", + "assertthat", + "crayon", + "rprojroot" + ] + }, + "devtools": { + "Package": "devtools", + "Version": "2.3.1", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "271df6a328617c64149283e98b1cd8da", + "Requirements": [ + "DT", + "callr", + "cli", + "covr", + "desc", + "ellipsis", + "httr", + "jsonlite", + "memoise", + "pkgbuild", + "pkgload", + "rcmdcheck", + "remotes", + "rlang", + "roxygen2", + "rstudioapi", + "rversions", + "sessioninfo", + "testthat", + "usethis", + "withr" + ] + }, + "digest": { + "Package": "digest", + "Version": "0.6.18", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "496dd262e1ec64e452151479a74c972f", + "Requirements": [] + }, + "doParallel": { + "Package": "doParallel", + "Version": "1.0.11", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "b96d7b9fff2027367cc36de12e6bf6a1", + "Requirements": [ + "foreach", + "iterators" + ] + }, + "dplyr": { + "Package": "dplyr", + "Version": "1.0.0", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "4011f62581a34080e44105d4aa05a97f", + "Requirements": [ + "R6", + "ellipsis", + "generics", + "glue", + "lifecycle", + "magrittr", + "rlang", + "tibble", + "tidyselect", + "vctrs" + ] + }, + "ellipsis": { + "Package": "ellipsis", + "Version": "0.3.2", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "bb0eec2fe32e88d9e2836c2f73ea2077", + "Requirements": [ + "rlang" + ] + }, + "evaluate": { + "Package": "evaluate", + "Version": "0.14", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "ec8ca05cffcc70569eaaad8469d2a3a7", + "Requirements": [] + }, + "fansi": { + "Package": "fansi", + "Version": "0.4.0", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "b31d9e5d051553d1177083aeba04b5b9", + "Requirements": [] + }, + "fastmap": { + "Package": "fastmap", + "Version": "1.1.1", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "f7736a18de97dea803bde0a2daaafb27", + "Requirements": [] + }, + "ff": { + "Package": "ff", + "Version": "2.2-14", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "2f745ad9a324bf4247df10ea6ebc3953", + "Requirements": [ + "bit" + ] + }, + "foreach": { + "Package": "foreach", + "Version": "1.5.2", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "618609b42c9406731ead03adf5379850", + "Requirements": [ + "codetools", + "iterators" + ] + }, + "foreign": { + "Package": "foreign", + "Version": "0.8-69", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "6f953f3e73fc00af8cdad0864f535f97", + "Requirements": [] + }, + "fs": { + "Package": "fs", + "Version": "1.4.2", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "8c04112383ca1988e96f429255f95675", + "Requirements": [] + }, + "generics": { + "Package": "generics", + "Version": "0.1.3", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "15e9634c0fcd294799e9b2e929ed1b86", + "Requirements": [] + }, + "getopt": { + "Package": "getopt", + "Version": "1.20.3", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "ad68e3263f0bc9269aab8c2039440117", + "Requirements": [] + }, + "gh": { + "Package": "gh", + "Version": "1.1.0", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "89ea5998938d1ad55f035c8a86f96b74", + "Requirements": [ + "cli", + "httr", + "ini", + "jsonlite" + ] + }, + "git2r": { + "Package": "git2r", + "Version": "0.27.1", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "531a82d1beed1f545beb25f4f5945bf7", + "Requirements": [] + }, + "glue": { + "Package": "glue", + "Version": "1.6.2", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "4f2596dfb05dac67b9dc558e5c6fba2e", + "Requirements": [] + }, + "highr": { + "Package": "highr", + "Version": "0.8", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "4dc5bb88961e347a0f4d8aad597cbfac", + "Requirements": [] + }, + "htmltools": { + "Package": "htmltools", + "Version": "0.5.4", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "9d27e99cc90bd701c0a7a63e5923f9b7", + "Requirements": [ + "base64enc", + "digest", + "ellipsis", + "fastmap", + "rlang" + ] + }, + "htmlwidgets": { + "Package": "htmlwidgets", + "Version": "1.5.1", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "41bace23583fbc25089edae324de2dc3", + "Requirements": [ + "htmltools", + "jsonlite", + "yaml" + ] + }, + "httr": { + "Package": "httr", + "Version": "1.4.2", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "a525aba14184fec243f9eaec62fbed43", + "Requirements": [ + "R6", + "curl", + "jsonlite", + "mime", + "openssl" + ] + }, + "illuminaHumanv1.db": { + "Package": "illuminaHumanv1.db", + "Version": "1.26.0", + "Source": "Bioconductor", + "Hash": "1d7fc2a61c42efed3bf75739bc84ad6a", + "Requirements": [ + "AnnotationDbi", + "org.Hs.eg.db" + ] + }, + "illuminaHumanv2.db": { + "Package": "illuminaHumanv2.db", + "Version": "1.26.0", + "Source": "Bioconductor", + "Hash": "d37f3c1e9d959a6d0d7f9f9b2d4d8b3c", + "Requirements": [ + "AnnotationDbi", + "org.Hs.eg.db" + ] + }, + "illuminaHumanv3.db": { + "Package": "illuminaHumanv3.db", + "Version": "1.26.0", + "Source": "Bioconductor", + "Hash": "4d440f2a6e46b8bd1622f8053d972ba7", + "Requirements": [ + "AnnotationDbi", + "org.Hs.eg.db" + ] + }, + "illuminaHumanv4.db": { + "Package": "illuminaHumanv4.db", + "Version": "1.26.0", + "Source": "Bioconductor", + "Hash": "dd95a57e2078439239495ea7aa866ac4", + "Requirements": [ + "AnnotationDbi", + "org.Hs.eg.db" + ] + }, + "illuminaMousev1.db": { + "Package": "illuminaMousev1.db", + "Version": "1.26.0", + "Source": "Bioconductor", + "Hash": "bd27e1248f2ae6c18c4d475bb7f78a1f", + "Requirements": [ + "AnnotationDbi", + "org.Mm.eg.db" + ] + }, + "illuminaMousev1p1.db": { + "Package": "illuminaMousev1p1.db", + "Version": "1.26.0", + "Source": "Bioconductor", + "Hash": "7eea4de4f3811e2fa883ff4fc93435ba", + "Requirements": [ + "AnnotationDbi", + "org.Mm.eg.db" + ] + }, + "illuminaMousev2.db": { + "Package": "illuminaMousev2.db", + "Version": "1.26.0", + "Source": "Bioconductor", + "Hash": "8e092cdd041fda0b2a98baa29ce77e44", + "Requirements": [ + "AnnotationDbi", + "org.Mm.eg.db" + ] + }, + "illuminaRatv1.db": { + "Package": "illuminaRatv1.db", + "Version": "1.26.0", + "Source": "Bioconductor", + "Hash": "b558243f788316a9bf90503828b49a9b", + "Requirements": [ + "AnnotationDbi", + "org.Rn.eg.db" + ] + }, + "ini": { + "Package": "ini", + "Version": "0.3.1", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "6154ec2223172bce8162d4153cda21f7", + "Requirements": [] + }, + "iterators": { + "Package": "iterators", + "Version": "1.0.14", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "8954069286b4b2b0d023d1b288dce978", + "Requirements": [] + }, + "jsonlite": { + "Package": "jsonlite", + "Version": "1.7.0", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "2657f20b9a74c996c602e74ebe540b06", + "Requirements": [] + }, + "knitr": { + "Package": "knitr", + "Version": "1.29", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "e5f4c41c17df8cdf7b0df12117c0d99a", + "Requirements": [ + "evaluate", + "highr", + "markdown", + "stringr", + "xfun", + "yaml" + ] + }, + "later": { + "Package": "later", + "Version": "1.1.0.1", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "d0a62b247165aabf397fded504660d8a", + "Requirements": [ + "BH", + "Rcpp", + "rlang" + ] + }, + "lattice": { + "Package": "lattice", + "Version": "0.20-35", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "10a22a9a66fbe7944e9ef98985d7c927", + "Requirements": [] + }, + "lazyeval": { + "Package": "lazyeval", + "Version": "0.2.1", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "ea5964121f493fb3057e9887d424f634", + "Requirements": [] + }, + "lifecycle": { + "Package": "lifecycle", + "Version": "1.0.3", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "001cecbeac1cff9301bdc3775ee46a86", + "Requirements": [ + "cli", + "glue", + "rlang" + ] + }, + "limma": { + "Package": "limma", + "Version": "3.34.9", + "Source": "Bioconductor", + "Hash": "06c81c4043f41177428a83c73a59d094", + "Requirements": [] + }, + "magrittr": { + "Package": "magrittr", + "Version": "2.0.3", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "7ce2733a9826b3aeb1775d56fd305472", + "Requirements": [] + }, + "markdown": { + "Package": "markdown", + "Version": "1.1", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "61e4a10781dd00d7d81dd06ca9b94e95", + "Requirements": [ + "mime", + "xfun" + ] + }, + "matrixStats": { + "Package": "matrixStats", + "Version": "0.63.0", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "57af0c3da1f1a50680b186591c3359af", + "Requirements": [] + }, + "memoise": { + "Package": "memoise", + "Version": "2.0.1", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "e2817ccf4a065c5d9d7f2cfbe7c1d78c", + "Requirements": [ + "cachem", + "rlang" + ] + }, + "mgcv": { + "Package": "mgcv", + "Version": "1.8-23", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "b1a3bba86e45ddea6b66e67623f587ee", + "Requirements": [ + "Matrix", + "nlme" + ] + }, + "mime": { + "Package": "mime", + "Version": "0.9", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "e87a35ec73b157552814869f45a63aa3", + "Requirements": [] + }, + "nlme": { + "Package": "nlme", + "Version": "3.1-131", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "215a901b25abf4077a8e7d2d6ce2b211", + "Requirements": [ + "lattice" + ] + }, + "nnet": { + "Package": "nnet", + "Version": "7.3-12", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "68287aec1f476c41d16ce1ace445800c", + "Requirements": [] + }, + "oligo": { + "Package": "oligo", + "Version": "1.42.0", + "Source": "Bioconductor", + "Hash": "694c134c6a0d42dd72084c9283735e1a", + "Requirements": [ + "Biobase", + "BiocGenerics", + "Biostrings", + "DBI", + "RSQLite", + "affxparser", + "affyio", + "ff", + "oligoClasses", + "preprocessCore", + "zlibbioc" + ] + }, + "oligoClasses": { + "Package": "oligoClasses", + "Version": "1.40.0", + "Source": "Bioconductor", + "Hash": "c197dfefe8a4928044851fceb05b5eba", + "Requirements": [ + "Biobase", + "BiocGenerics", + "BiocInstaller", + "Biostrings", + "DBI", + "GenomicRanges", + "IRanges", + "RSQLite", + "S4Vectors", + "SummarizedExperiment", + "affyio", + "ff", + "foreach" + ] + }, + "openssl": { + "Package": "openssl", + "Version": "2.0.3", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "b9621e75c0652041002a19609fb23c5a", + "Requirements": [ + "askpass" + ] + }, + "optparse": { + "Package": "optparse", + "Version": "1.4.4", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "803e834713c77eda6c233965977b2c58", + "Requirements": [ + "getopt" + ] + }, + "org.Hs.eg.db": { + "Package": "org.Hs.eg.db", + "Version": "3.5.0", + "Source": "Bioconductor", + "Hash": "9330efb371032d9fa60e61e20f781df8", + "Requirements": [ + "AnnotationDbi" + ] + }, + "org.Mm.eg.db": { + "Package": "org.Mm.eg.db", + "Version": "3.5.0", + "Source": "Bioconductor", + "Hash": "cff056ccbda3d147a4f6605db991363c", + "Requirements": [ + "AnnotationDbi" + ] + }, + "org.Rn.eg.db": { + "Package": "org.Rn.eg.db", + "Version": "3.5.0", + "Source": "Bioconductor", + "Hash": "32f71a7a35451effb4d56449df074b77", + "Requirements": [ + "AnnotationDbi" + ] + }, + "pillar": { + "Package": "pillar", + "Version": "1.8.1", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "f2316df30902c81729ae9de95ad5a608", + "Requirements": [ + "cli", + "fansi", + "glue", + "lifecycle", + "rlang", + "utf8", + "vctrs" + ] + }, + "pkgbuild": { + "Package": "pkgbuild", + "Version": "1.1.0", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "404684bc4e3685007f9720adf13b06c1", + "Requirements": [ + "R6", + "callr", + "cli", + "crayon", + "desc", + "prettyunits", + "rprojroot", + "withr" + ] + }, + "pkgconfig": { + "Package": "pkgconfig", + "Version": "2.0.3", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "01f28d4278f15c76cddbea05899c5d6f", + "Requirements": [] + }, + "pkgload": { + "Package": "pkgload", + "Version": "1.1.0", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "b6b150cd4709e0c0c9b5d51ac4376282", + "Requirements": [ + "cli", + "crayon", + "desc", + "pkgbuild", + "rlang", + "rprojroot", + "rstudioapi", + "withr" + ] + }, + "plogr": { + "Package": "plogr", + "Version": "0.2.0", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "09eb987710984fc2905c7129c7d85e65", + "Requirements": [] + }, + "plyr": { + "Package": "plyr", + "Version": "1.8.8", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "d744387aef9047b0b48be2933d78e862", + "Requirements": [ + "Rcpp" + ] + }, + "praise": { + "Package": "praise", + "Version": "1.0.0", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "a555924add98c99d2f411e37e7d25e9f", + "Requirements": [] + }, + "preprocessCore": { + "Package": "preprocessCore", + "Version": "1.40.0", + "Source": "Bioconductor", + "Hash": "db115919701b4e644b96de3f7523d17a", + "Requirements": [] + }, + "prettyunits": { + "Package": "prettyunits", + "Version": "1.0.2", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "f3c960f0105f2ed179460864979fc37c", + "Requirements": [ + "assertthat", + "magrittr" + ] + }, + "processx": { + "Package": "processx", + "Version": "3.4.3", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "f4f13345fcb00c51ace12f65dd18749f", + "Requirements": [ + "R6", + "ps" + ] + }, + "promises": { + "Package": "promises", + "Version": "1.1.1", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "a8730dcbdd19f9047774909f0ec214a4", + "Requirements": [ + "R6", + "Rcpp", + "later", + "magrittr", + "rlang" + ] + }, + "ps": { + "Package": "ps", + "Version": "1.3.3", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "425d938eb9c02906a8ac98c0c2a306b5", + "Requirements": [] + }, + "purrr": { + "Package": "purrr", + "Version": "0.3.4", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "97def703420c8ab10d8f0e6c72101e02", + "Requirements": [ + "magrittr", + "rlang" + ] + }, + "rcmdcheck": { + "Package": "rcmdcheck", + "Version": "1.3.3", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "ed95895886dab6d2a584da45503555da", + "Requirements": [ + "R6", + "callr", + "cli", + "crayon", + "desc", + "digest", + "pkgbuild", + "prettyunits", + "rprojroot", + "sessioninfo", + "withr", + "xopen" + ] + }, + "rematch2": { + "Package": "rematch2", + "Version": "2.1.2", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "76c9e04c712a05848ae7a23d2f170a40", + "Requirements": [ + "tibble" + ] + }, + "remotes": { + "Package": "remotes", + "Version": "2.2.0", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "430a0908aee75b1fcba0e62857cab0ce", + "Requirements": [] + }, + "renv": { + "Package": "renv", + "Version": "0.16.0", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "c9e8442ab69bc21c9697ecf856c1e6c7", + "Requirements": [] + }, + "reshape2": { + "Package": "reshape2", + "Version": "1.4.4", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "bb5996d0bd962d214a11140d77589917", + "Requirements": [ + "Rcpp", + "plyr", + "stringr" + ] + }, + "rex": { + "Package": "rex", + "Version": "1.2.0", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "093584b944440c5cd07a696b3c8e0e4c", + "Requirements": [ + "lazyeval" + ] + }, + "rlang": { + "Package": "rlang", + "Version": "1.0.6", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "4ed1f8336c8d52c3e750adcdc57228a7", + "Requirements": [] + }, + "roxygen2": { + "Package": "roxygen2", + "Version": "7.1.1", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "fcd94e00cc409b25d07ca50f7bf339f5", + "Requirements": [ + "R6", + "Rcpp", + "brew", + "commonmark", + "desc", + "digest", + "knitr", + "pkgload", + "purrr", + "rlang", + "stringi", + "stringr", + "xml2" + ] + }, + "rpart": { + "Package": "rpart", + "Version": "4.1-13", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "6315535da80d5cc6c2e573966d8c8210", + "Requirements": [] + }, + "rprojroot": { + "Package": "rprojroot", + "Version": "1.3-2", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "f6a407ae5dd21f6f80a6708bbb6eb3ae", + "Requirements": [ + "backports" + ] + }, + "rstudioapi": { + "Package": "rstudioapi", + "Version": "0.11", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "33a5b27a03da82ac4b1d43268f80088a", + "Requirements": [] + }, + "rversions": { + "Package": "rversions", + "Version": "2.0.2", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "0ec41191f744d0f5afad8c6f35cc36e4", + "Requirements": [ + "curl", + "xml2" + ] + }, + "sessioninfo": { + "Package": "sessioninfo", + "Version": "1.1.1", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "308013098befe37484df72c39cf90d6e", + "Requirements": [ + "cli", + "withr" + ] + }, + "spatial": { + "Package": "spatial", + "Version": "7.3-11", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "f27a078d834614513608da2c08031130", + "Requirements": [] + }, + "stringi": { + "Package": "stringi", + "Version": "1.7.12", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "ca8bd84263c77310739d2cf64d84d7c9", + "Requirements": [] + }, + "stringr": { + "Package": "stringr", + "Version": "1.5.0", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "671a4d384ae9d32fc47a14e98bfa3dc8", + "Requirements": [ + "cli", + "glue", + "lifecycle", + "magrittr", + "rlang", + "stringi", + "vctrs" + ] + }, + "survival": { + "Package": "survival", + "Version": "2.41-3", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "60b1da51f5e3556fd177170a1aa40b49", + "Requirements": [ + "Matrix" + ] + }, + "sys": { + "Package": "sys", + "Version": "3.4", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "b227d13e29222b4574486cfcbde077fa", + "Requirements": [] + }, + "testthat": { + "Package": "testthat", + "Version": "2.3.2", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "0829b987b8961fb07f3b1b64a2fbc495", + "Requirements": [ + "R6", + "cli", + "crayon", + "digest", + "ellipsis", + "evaluate", + "magrittr", + "pkgload", + "praise", + "rlang", + "withr" + ] + }, + "tibble": { + "Package": "tibble", + "Version": "3.1.8", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "56b6934ef0f8c68225949a8672fe1a8f", + "Requirements": [ + "fansi", + "lifecycle", + "magrittr", + "pillar", + "pkgconfig", + "rlang", + "vctrs" + ] + }, + "tidyselect": { + "Package": "tidyselect", + "Version": "1.2.0", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "79540e5fcd9e0435af547d885f184fd5", + "Requirements": [ + "cli", + "glue", + "lifecycle", + "rlang", + "vctrs", + "withr" + ] + }, + "tximport": { + "Package": "tximport", + "Version": "1.6.0", + "Source": "Bioconductor", + "Hash": "2c824ac20bbb34bba92a9b5b0d600fec", + "Requirements": [] + }, + "usethis": { + "Package": "usethis", + "Version": "1.6.1", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "e1985f5a9985fea2e338fa7eb99018ca", + "Requirements": [ + "cli", + "clipr", + "crayon", + "curl", + "desc", + "fs", + "gh", + "git2r", + "glue", + "purrr", + "rematch2", + "rlang", + "rprojroot", + "rstudioapi", + "whisker", + "withr", + "yaml" + ] + }, + "utf8": { + "Package": "utf8", + "Version": "1.1.4", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "4a5081acfb7b81a572e4384a7aaf2af1", + "Requirements": [] + }, + "vctrs": { + "Package": "vctrs", + "Version": "0.5.2", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "e4ffa94ceed5f124d429a5a5f0f5b378", + "Requirements": [ + "cli", + "glue", + "lifecycle", + "rlang" + ] + }, + "whisker": { + "Package": "whisker", + "Version": "0.4", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "ca970b96d894e90397ed20637a0c1bbe", + "Requirements": [] + }, + "withr": { + "Package": "withr", + "Version": "2.2.0", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "ecd17882a0b4419545691e095b74ee89", + "Requirements": [] + }, + "xfun": { + "Package": "xfun", + "Version": "0.36", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "f5baec54606751aa53ac9c0e05848ed6", + "Requirements": [] + }, + "xml2": { + "Package": "xml2", + "Version": "1.3.2", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "d4d71a75dd3ea9eb5fa28cc21f9585e2", + "Requirements": [] + }, + "xopen": { + "Package": "xopen", + "Version": "1.0.0", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "6c85f015dee9cc7710ddd20f86881f58", + "Requirements": [ + "processx" + ] + }, + "yaml": { + "Package": "yaml", + "Version": "2.2.1", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "2826c5d9efb0a88f657c7a679c7106db", + "Requirements": [] + }, + "zlibbioc": { + "Package": "zlibbioc", + "Version": "1.24.0", + "Source": "Bioconductor", + "Hash": "75640bcdaa390770a672332c904642db", + "Requirements": [] + } + } +} diff --git a/workers/dockerfiles/Dockerfile.illumina b/workers/dockerfiles/Dockerfile.illumina index 200b37725..b89630096 100644 --- a/workers/dockerfiles/Dockerfile.illumina +++ b/workers/dockerfiles/Dockerfile.illumina @@ -5,16 +5,12 @@ SHELL ["/bin/bash", "-o", "pipefail", "-c"] WORKDIR /home/user -COPY workers/R/dependencies/illumina/cran/dependencies.R . -RUN Rscript dependencies.R - -# These are for Illumina. -COPY workers/R/dependencies/illumina/bioc/dependencies.R . -RUN Rscript dependencies.R +COPY workers/R/dependencies/illumina/renv.lock . +COPY workers/R/renv_load.R . +RUN Rscript renv_load.R COPY workers/data_refinery_workers/processors/requirements.txt . -RUN pip3 install --ignore-installed --no-cache-dir --upgrade pip && \ - pip3 install --ignore-installed --no-cache-dir -r requirements.txt +RUN pip3 install --ignore-installed --no-cache-dir -r requirements.txt # Get the latest version from the dist directory. COPY common/dist/data-refinery-common-* common/ @@ -27,6 +23,8 @@ COPY workers/ . COPY workers/data_refinery_workers/processors/detect_database.R . COPY workers/illumina_probe_maps/ probe_maps/ +RUN rm -rf /root/.cache/* + ARG SYSTEM_VERSION ENV SYSTEM_VERSION=$SYSTEM_VERSION From 75e57c3a3d6842e8c40277ce81ef00bf045086c2 Mon Sep 17 00:00:00 2001 From: Arkadii Yakovets Date: Thu, 9 Mar 2023 15:04:25 -0800 Subject: [PATCH 085/220] Update compendia Docker image and R dependencies. --- workers/R/dependencies/compendia/renv.R | 15 + workers/R/dependencies/compendia/renv.lock | 1440 ++++++++++++++++++++ workers/dockerfiles/Dockerfile.compendia | 32 +- 3 files changed, 1465 insertions(+), 22 deletions(-) create mode 100644 workers/R/dependencies/compendia/renv.R create mode 100644 workers/R/dependencies/compendia/renv.lock diff --git a/workers/R/dependencies/compendia/renv.R b/workers/R/dependencies/compendia/renv.R new file mode 100644 index 000000000..a6523cf18 --- /dev/null +++ b/workers/R/dependencies/compendia/renv.R @@ -0,0 +1,15 @@ +renv::install("codetools@0.2-15") +renv::install("iterators@1.0.10") +renv::install("foreach@1.4.4") +renv::install("doParallel@1.0.11") +renv::install("data.table@1.11.0") +renv::install("getopt@1.20.3") +renv::install("optparse@1.4.4") +renv::install("lazyeval@0.2.1") +renv::install("ff@2.2-14") + +renv::install( + "oligo", + "oligoClasses", + "preprocessCore" +) diff --git a/workers/R/dependencies/compendia/renv.lock b/workers/R/dependencies/compendia/renv.lock new file mode 100644 index 000000000..54d4c677b --- /dev/null +++ b/workers/R/dependencies/compendia/renv.lock @@ -0,0 +1,1440 @@ +{ + "R": { + "Version": "3.4.4", + "Repositories": [ + { + "Name": "Bioconductor", + "URL": "https://bioconductor.org/packages/3.6/bioc" + }, + { + "Name": "BioconductorAnnotation", + "URL": "https://bioconductor.org/packages/3.6/data/annotation" + }, + { + "Name": "BioconductorExperiment", + "URL": "https://bioconductor.org/packages/3.6/data/experiment" + }, + { + "Name": "CRAN", + "URL": "https://cloud.r-project.org" + } + ] + }, + "Packages": { + "AnnotationDbi": { + "Package": "AnnotationDbi", + "Version": "1.40.0", + "Source": "Bioconductor", + "Hash": "abb20d74ae5ea08a8d9616a6f1bbaca5", + "Requirements": [ + "Biobase", + "BiocGenerics", + "DBI", + "IRanges", + "RSQLite", + "S4Vectors" + ] + }, + "BH": { + "Package": "BH", + "Version": "1.72.0-3", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "8f9ce74c6417d61f0782cbae5fd2b7b0", + "Requirements": [] + }, + "Biobase": { + "Package": "Biobase", + "Version": "2.38.0", + "Source": "Bioconductor", + "Hash": "8c8060a3f339c35f1dc14af3b7d22d71", + "Requirements": [ + "BiocGenerics" + ] + }, + "BiocGenerics": { + "Package": "BiocGenerics", + "Version": "0.24.0", + "Source": "Bioconductor", + "Hash": "108ff3e3233e79aef825decc9fa87ee3", + "Requirements": [] + }, + "BiocInstaller": { + "Package": "BiocInstaller", + "Version": "1.28.0", + "Source": "Bioconductor", + "Hash": "ee02868b8bd3657a3463d8bc3a64d831", + "Requirements": [] + }, + "BiocManager": { + "Package": "BiocManager", + "Version": "1.30.20", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "a7fca16a50b6ef7771b49d636dd54b57", + "Requirements": [] + }, + "Biostrings": { + "Package": "Biostrings", + "Version": "2.46.0", + "Source": "Bioconductor", + "Hash": "12005b8dd90f7f7f9864ee9d6965c366", + "Requirements": [ + "BiocGenerics", + "IRanges", + "S4Vectors", + "XVector" + ] + }, + "DBI": { + "Package": "DBI", + "Version": "1.1.3", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "b2866e62bab9378c3cc9476a1954226b", + "Requirements": [] + }, + "DT": { + "Package": "DT", + "Version": "0.14", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "a3580ce0309c94d061c23b0afb4accbd", + "Requirements": [ + "crosstalk", + "htmltools", + "htmlwidgets", + "jsonlite", + "magrittr", + "promises" + ] + }, + "DelayedArray": { + "Package": "DelayedArray", + "Version": "0.4.1", + "Source": "Bioconductor", + "Hash": "c2572a27fb1281ee4c11390826f326a1", + "Requirements": [ + "BiocGenerics", + "IRanges", + "S4Vectors", + "matrixStats" + ] + }, + "GenomeInfoDb": { + "Package": "GenomeInfoDb", + "Version": "1.14.0", + "Source": "Bioconductor", + "Hash": "39dc4261100e402165a6db62f364b493", + "Requirements": [ + "BiocGenerics", + "GenomeInfoDbData", + "IRanges", + "RCurl", + "S4Vectors" + ] + }, + "GenomeInfoDbData": { + "Package": "GenomeInfoDbData", + "Version": "1.0.0", + "Source": "Bioconductor", + "Hash": "336cc20fd69db19ebfad8a73e05d88b3", + "Requirements": [] + }, + "GenomicRanges": { + "Package": "GenomicRanges", + "Version": "1.30.3", + "Source": "Bioconductor", + "Hash": "ecfab21e609cea7ee297e0e1230b5bb4", + "Requirements": [ + "BiocGenerics", + "GenomeInfoDb", + "IRanges", + "S4Vectors", + "XVector" + ] + }, + "IRanges": { + "Package": "IRanges", + "Version": "2.12.0", + "Source": "Bioconductor", + "Hash": "d89aecf720b113b47f936c48b356d264", + "Requirements": [ + "BiocGenerics", + "S4Vectors" + ] + }, + "KernSmooth": { + "Package": "KernSmooth", + "Version": "2.23-15", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "081f417f4d6d55b7e8981433e8404a22", + "Requirements": [] + }, + "MASS": { + "Package": "MASS", + "Version": "7.3-49", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "f47828414f155725f342d93be7fcfabd", + "Requirements": [] + }, + "Matrix": { + "Package": "Matrix", + "Version": "1.2-12", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "2451d6490ec017b18b6eff460c65fd85", + "Requirements": [ + "lattice" + ] + }, + "R6": { + "Package": "R6", + "Version": "2.5.1", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "470851b6d5d0ac559e9d01bb352b4021", + "Requirements": [] + }, + "RCurl": { + "Package": "RCurl", + "Version": "1.98-1.10", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "35136c52e39f2679ebbe7bf448e3bd5a", + "Requirements": [ + "bitops" + ] + }, + "RSQLite": { + "Package": "RSQLite", + "Version": "2.3.0", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "264c1861d7ac1dc71ecb5ac5c4c1318a", + "Requirements": [ + "DBI", + "bit64", + "blob", + "cpp11", + "memoise", + "pkgconfig", + "plogr" + ] + }, + "Rcpp": { + "Package": "Rcpp", + "Version": "1.0.10", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "e749cae40fa9ef469b6050959517453c", + "Requirements": [] + }, + "S4Vectors": { + "Package": "S4Vectors", + "Version": "0.16.0", + "Source": "Bioconductor", + "Hash": "e9cd4cea8c93cbdd8595e562c8ed0624", + "Requirements": [ + "BiocGenerics" + ] + }, + "SummarizedExperiment": { + "Package": "SummarizedExperiment", + "Version": "1.8.1", + "Source": "Bioconductor", + "Hash": "57080b28b2f5606100e02a7ab01b3022", + "Requirements": [ + "Biobase", + "BiocGenerics", + "DelayedArray", + "GenomeInfoDb", + "GenomicRanges", + "IRanges", + "Matrix", + "S4Vectors" + ] + }, + "XVector": { + "Package": "XVector", + "Version": "0.18.0", + "Source": "Bioconductor", + "Hash": "c677dd00d99bd1f81caf0fc3d9fa7672", + "Requirements": [ + "BiocGenerics", + "IRanges", + "S4Vectors", + "zlibbioc" + ] + }, + "affxparser": { + "Package": "affxparser", + "Version": "1.50.0", + "Source": "Bioconductor", + "Hash": "86914cfc7998f083d207a8ae84488697", + "Requirements": [] + }, + "affyio": { + "Package": "affyio", + "Version": "1.48.0", + "Source": "Bioconductor", + "Hash": "f973e1ee016e8ff7095847e0769a9d97", + "Requirements": [ + "zlibbioc" + ] + }, + "askpass": { + "Package": "askpass", + "Version": "1.1", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "e8a22846fff485f0be3770c2da758713", + "Requirements": [ + "sys" + ] + }, + "assertthat": { + "Package": "assertthat", + "Version": "0.2.1", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "50c838a310445e954bc13f26f26a6ecf", + "Requirements": [] + }, + "backports": { + "Package": "backports", + "Version": "1.1.8", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "3ef0eac19317fd03c0c854aed581d473", + "Requirements": [] + }, + "base64enc": { + "Package": "base64enc", + "Version": "0.1-3", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "543776ae6848fde2f48ff3816d0628bc", + "Requirements": [] + }, + "bit": { + "Package": "bit", + "Version": "4.0.5", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "d242abec29412ce988848d0294b208fd", + "Requirements": [] + }, + "bit64": { + "Package": "bit64", + "Version": "4.0.5", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "9fe98599ca456d6552421db0d6772d8f", + "Requirements": [ + "bit" + ] + }, + "bitops": { + "Package": "bitops", + "Version": "1.0-7", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "b7d8d8ee39869c18d8846a184dd8a1af", + "Requirements": [] + }, + "blob": { + "Package": "blob", + "Version": "1.2.3", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "10d231579bc9c06ab1c320618808d4ff", + "Requirements": [ + "rlang", + "vctrs" + ] + }, + "boot": { + "Package": "boot", + "Version": "1.3-20", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "560a6eb3b4658e2ce3d0f8feb087fe56", + "Requirements": [] + }, + "brew": { + "Package": "brew", + "Version": "1.0-6", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "92a5f887f9ae3035ac7afde22ba73ee9", + "Requirements": [] + }, + "cachem": { + "Package": "cachem", + "Version": "1.0.7", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "cda74447c42f529de601fe4d4050daef", + "Requirements": [ + "fastmap", + "rlang" + ] + }, + "callr": { + "Package": "callr", + "Version": "3.4.3", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "643163a00cb536454c624883a10ae0bc", + "Requirements": [ + "R6", + "processx" + ] + }, + "class": { + "Package": "class", + "Version": "7.3-14", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "c39d47020cdf42e88bd80c83ca6a0a0b", + "Requirements": [ + "MASS" + ] + }, + "cli": { + "Package": "cli", + "Version": "3.6.0", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "3177a5a16c243adc199ba33117bd9657", + "Requirements": [] + }, + "clipr": { + "Package": "clipr", + "Version": "0.7.0", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "08cf4045c149a0f0eaf405324c7495bd", + "Requirements": [] + }, + "cluster": { + "Package": "cluster", + "Version": "2.0.6", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "ea8c392e186024710ab52bc405212f5e", + "Requirements": [] + }, + "codetools": { + "Package": "codetools", + "Version": "0.2-19", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "c089a619a7fae175d149d89164f8c7d8", + "Requirements": [] + }, + "commonmark": { + "Package": "commonmark", + "Version": "1.7", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "0f22be39ec1d141fd03683c06f3a6e67", + "Requirements": [] + }, + "covr": { + "Package": "covr", + "Version": "3.5.0", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "cbc6df1ef6ee576f844f973c1fc04ab4", + "Requirements": [ + "crayon", + "digest", + "httr", + "jsonlite", + "rex", + "withr", + "yaml" + ] + }, + "cpp11": { + "Package": "cpp11", + "Version": "0.4.3", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "ed588261931ee3be2c700d22e94a29ab", + "Requirements": [] + }, + "crayon": { + "Package": "crayon", + "Version": "1.3.4", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "0d57bc8e27b7ba9e45dba825ebc0de6b", + "Requirements": [] + }, + "crosstalk": { + "Package": "crosstalk", + "Version": "1.1.0.1", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "ae55f5d7c02f0ab43c58dd050694f2b4", + "Requirements": [ + "R6", + "htmltools", + "jsonlite", + "lazyeval" + ] + }, + "curl": { + "Package": "curl", + "Version": "4.3", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "2b7d10581cc730804e9ed178c8374bd6", + "Requirements": [] + }, + "data.table": { + "Package": "data.table", + "Version": "1.14.8", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "b4c06e554f33344e044ccd7fdca750a9", + "Requirements": [] + }, + "desc": { + "Package": "desc", + "Version": "1.2.0", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "6c8fe8fa26a23b79949375d372c7b395", + "Requirements": [ + "R6", + "assertthat", + "crayon", + "rprojroot" + ] + }, + "devtools": { + "Package": "devtools", + "Version": "2.3.1", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "271df6a328617c64149283e98b1cd8da", + "Requirements": [ + "DT", + "callr", + "cli", + "covr", + "desc", + "ellipsis", + "httr", + "jsonlite", + "memoise", + "pkgbuild", + "pkgload", + "rcmdcheck", + "remotes", + "rlang", + "roxygen2", + "rstudioapi", + "rversions", + "sessioninfo", + "testthat", + "usethis", + "withr" + ] + }, + "digest": { + "Package": "digest", + "Version": "0.6.25", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "f697db7d92b7028c4b3436e9603fb636", + "Requirements": [] + }, + "doParallel": { + "Package": "doParallel", + "Version": "1.0.17", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "451e5edf411987991ab6a5410c45011f", + "Requirements": [ + "foreach", + "iterators" + ] + }, + "ellipsis": { + "Package": "ellipsis", + "Version": "0.3.2", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "bb0eec2fe32e88d9e2836c2f73ea2077", + "Requirements": [ + "rlang" + ] + }, + "evaluate": { + "Package": "evaluate", + "Version": "0.14", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "ec8ca05cffcc70569eaaad8469d2a3a7", + "Requirements": [] + }, + "fansi": { + "Package": "fansi", + "Version": "1.0.4", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "1d9e7ad3c8312a192dea7d3db0274fde", + "Requirements": [] + }, + "fastmap": { + "Package": "fastmap", + "Version": "1.1.1", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "f7736a18de97dea803bde0a2daaafb27", + "Requirements": [] + }, + "ff": { + "Package": "ff", + "Version": "2.2-14", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "2f745ad9a324bf4247df10ea6ebc3953", + "Requirements": [ + "bit" + ] + }, + "foreach": { + "Package": "foreach", + "Version": "1.5.2", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "618609b42c9406731ead03adf5379850", + "Requirements": [ + "codetools", + "iterators" + ] + }, + "foreign": { + "Package": "foreign", + "Version": "0.8-69", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "6f953f3e73fc00af8cdad0864f535f97", + "Requirements": [] + }, + "fs": { + "Package": "fs", + "Version": "1.4.2", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "8c04112383ca1988e96f429255f95675", + "Requirements": [] + }, + "generics": { + "Package": "generics", + "Version": "0.1.3", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "15e9634c0fcd294799e9b2e929ed1b86", + "Requirements": [] + }, + "gh": { + "Package": "gh", + "Version": "1.1.0", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "89ea5998938d1ad55f035c8a86f96b74", + "Requirements": [ + "cli", + "httr", + "ini", + "jsonlite" + ] + }, + "git2r": { + "Package": "git2r", + "Version": "0.27.1", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "531a82d1beed1f545beb25f4f5945bf7", + "Requirements": [] + }, + "glue": { + "Package": "glue", + "Version": "1.6.2", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "4f2596dfb05dac67b9dc558e5c6fba2e", + "Requirements": [] + }, + "highr": { + "Package": "highr", + "Version": "0.8", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "4dc5bb88961e347a0f4d8aad597cbfac", + "Requirements": [] + }, + "htmltools": { + "Package": "htmltools", + "Version": "0.5.4", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "9d27e99cc90bd701c0a7a63e5923f9b7", + "Requirements": [ + "base64enc", + "digest", + "ellipsis", + "fastmap", + "rlang" + ] + }, + "htmlwidgets": { + "Package": "htmlwidgets", + "Version": "1.5.1", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "41bace23583fbc25089edae324de2dc3", + "Requirements": [ + "htmltools", + "jsonlite", + "yaml" + ] + }, + "httr": { + "Package": "httr", + "Version": "1.4.2", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "a525aba14184fec243f9eaec62fbed43", + "Requirements": [ + "R6", + "curl", + "jsonlite", + "mime", + "openssl" + ] + }, + "ini": { + "Package": "ini", + "Version": "0.3.1", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "6154ec2223172bce8162d4153cda21f7", + "Requirements": [] + }, + "iterators": { + "Package": "iterators", + "Version": "1.0.14", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "8954069286b4b2b0d023d1b288dce978", + "Requirements": [] + }, + "jsonlite": { + "Package": "jsonlite", + "Version": "1.7.0", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "2657f20b9a74c996c602e74ebe540b06", + "Requirements": [] + }, + "knitr": { + "Package": "knitr", + "Version": "1.29", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "e5f4c41c17df8cdf7b0df12117c0d99a", + "Requirements": [ + "evaluate", + "highr", + "markdown", + "stringr", + "xfun", + "yaml" + ] + }, + "later": { + "Package": "later", + "Version": "1.1.0.1", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "d0a62b247165aabf397fded504660d8a", + "Requirements": [ + "BH", + "Rcpp", + "rlang" + ] + }, + "lattice": { + "Package": "lattice", + "Version": "0.20-35", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "10a22a9a66fbe7944e9ef98985d7c927", + "Requirements": [] + }, + "lazyeval": { + "Package": "lazyeval", + "Version": "0.2.2", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "d908914ae53b04d4c0c0fd72ecc35370", + "Requirements": [] + }, + "lifecycle": { + "Package": "lifecycle", + "Version": "1.0.3", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "001cecbeac1cff9301bdc3775ee46a86", + "Requirements": [ + "cli", + "glue", + "rlang" + ] + }, + "limma": { + "Package": "limma", + "Version": "3.34.9", + "Source": "Bioconductor", + "Hash": "06c81c4043f41177428a83c73a59d094", + "Requirements": [] + }, + "magrittr": { + "Package": "magrittr", + "Version": "2.0.3", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "7ce2733a9826b3aeb1775d56fd305472", + "Requirements": [] + }, + "markdown": { + "Package": "markdown", + "Version": "1.1", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "61e4a10781dd00d7d81dd06ca9b94e95", + "Requirements": [ + "mime", + "xfun" + ] + }, + "matrixStats": { + "Package": "matrixStats", + "Version": "0.63.0", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "57af0c3da1f1a50680b186591c3359af", + "Requirements": [] + }, + "memoise": { + "Package": "memoise", + "Version": "2.0.1", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "e2817ccf4a065c5d9d7f2cfbe7c1d78c", + "Requirements": [ + "cachem", + "rlang" + ] + }, + "mgcv": { + "Package": "mgcv", + "Version": "1.8-23", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "b1a3bba86e45ddea6b66e67623f587ee", + "Requirements": [ + "Matrix", + "nlme" + ] + }, + "mime": { + "Package": "mime", + "Version": "0.9", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "e87a35ec73b157552814869f45a63aa3", + "Requirements": [] + }, + "nlme": { + "Package": "nlme", + "Version": "3.1-131", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "215a901b25abf4077a8e7d2d6ce2b211", + "Requirements": [ + "lattice" + ] + }, + "nnet": { + "Package": "nnet", + "Version": "7.3-12", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "68287aec1f476c41d16ce1ace445800c", + "Requirements": [] + }, + "oligo": { + "Package": "oligo", + "Version": "1.42.0", + "Source": "Bioconductor", + "Hash": "694c134c6a0d42dd72084c9283735e1a", + "Requirements": [ + "Biobase", + "BiocGenerics", + "Biostrings", + "DBI", + "RSQLite", + "affxparser", + "affyio", + "ff", + "oligoClasses", + "preprocessCore", + "zlibbioc" + ] + }, + "oligoClasses": { + "Package": "oligoClasses", + "Version": "1.40.0", + "Source": "Bioconductor", + "Hash": "c197dfefe8a4928044851fceb05b5eba", + "Requirements": [ + "Biobase", + "BiocGenerics", + "BiocInstaller", + "Biostrings", + "DBI", + "GenomicRanges", + "IRanges", + "RSQLite", + "S4Vectors", + "SummarizedExperiment", + "affyio", + "ff", + "foreach" + ] + }, + "openssl": { + "Package": "openssl", + "Version": "2.0.3", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "b9621e75c0652041002a19609fb23c5a", + "Requirements": [ + "askpass" + ] + }, + "pillar": { + "Package": "pillar", + "Version": "1.8.1", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "f2316df30902c81729ae9de95ad5a608", + "Requirements": [ + "cli", + "fansi", + "glue", + "lifecycle", + "rlang", + "utf8", + "vctrs" + ] + }, + "pkgbuild": { + "Package": "pkgbuild", + "Version": "1.1.0", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "404684bc4e3685007f9720adf13b06c1", + "Requirements": [ + "R6", + "callr", + "cli", + "crayon", + "desc", + "prettyunits", + "rprojroot", + "withr" + ] + }, + "pkgconfig": { + "Package": "pkgconfig", + "Version": "2.0.3", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "01f28d4278f15c76cddbea05899c5d6f", + "Requirements": [] + }, + "pkgload": { + "Package": "pkgload", + "Version": "1.1.0", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "b6b150cd4709e0c0c9b5d51ac4376282", + "Requirements": [ + "cli", + "crayon", + "desc", + "pkgbuild", + "rlang", + "rprojroot", + "rstudioapi", + "withr" + ] + }, + "plogr": { + "Package": "plogr", + "Version": "0.2.0", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "09eb987710984fc2905c7129c7d85e65", + "Requirements": [] + }, + "plyr": { + "Package": "plyr", + "Version": "1.8.8", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "d744387aef9047b0b48be2933d78e862", + "Requirements": [ + "Rcpp" + ] + }, + "praise": { + "Package": "praise", + "Version": "1.0.0", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "a555924add98c99d2f411e37e7d25e9f", + "Requirements": [] + }, + "preprocessCore": { + "Package": "preprocessCore", + "Version": "1.40.0", + "Source": "Bioconductor", + "Hash": "db115919701b4e644b96de3f7523d17a", + "Requirements": [] + }, + "prettyunits": { + "Package": "prettyunits", + "Version": "1.1.1", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "95ef9167b75dde9d2ccc3c7528393e7e", + "Requirements": [] + }, + "processx": { + "Package": "processx", + "Version": "3.4.3", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "f4f13345fcb00c51ace12f65dd18749f", + "Requirements": [ + "R6", + "ps" + ] + }, + "promises": { + "Package": "promises", + "Version": "1.1.1", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "a8730dcbdd19f9047774909f0ec214a4", + "Requirements": [ + "R6", + "Rcpp", + "later", + "magrittr", + "rlang" + ] + }, + "ps": { + "Package": "ps", + "Version": "1.3.3", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "425d938eb9c02906a8ac98c0c2a306b5", + "Requirements": [] + }, + "purrr": { + "Package": "purrr", + "Version": "0.3.4", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "97def703420c8ab10d8f0e6c72101e02", + "Requirements": [ + "magrittr", + "rlang" + ] + }, + "rcmdcheck": { + "Package": "rcmdcheck", + "Version": "1.3.3", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "ed95895886dab6d2a584da45503555da", + "Requirements": [ + "R6", + "callr", + "cli", + "crayon", + "desc", + "digest", + "pkgbuild", + "prettyunits", + "rprojroot", + "sessioninfo", + "withr", + "xopen" + ] + }, + "rematch2": { + "Package": "rematch2", + "Version": "2.1.2", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "76c9e04c712a05848ae7a23d2f170a40", + "Requirements": [ + "tibble" + ] + }, + "remotes": { + "Package": "remotes", + "Version": "2.2.0", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "430a0908aee75b1fcba0e62857cab0ce", + "Requirements": [] + }, + "renv": { + "Package": "renv", + "Version": "0.16.0", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "c9e8442ab69bc21c9697ecf856c1e6c7", + "Requirements": [] + }, + "reshape2": { + "Package": "reshape2", + "Version": "1.4.4", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "bb5996d0bd962d214a11140d77589917", + "Requirements": [ + "Rcpp", + "plyr", + "stringr" + ] + }, + "rex": { + "Package": "rex", + "Version": "1.2.0", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "093584b944440c5cd07a696b3c8e0e4c", + "Requirements": [ + "lazyeval" + ] + }, + "rlang": { + "Package": "rlang", + "Version": "1.0.6", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "4ed1f8336c8d52c3e750adcdc57228a7", + "Requirements": [] + }, + "roxygen2": { + "Package": "roxygen2", + "Version": "7.1.1", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "fcd94e00cc409b25d07ca50f7bf339f5", + "Requirements": [ + "R6", + "Rcpp", + "brew", + "commonmark", + "desc", + "digest", + "knitr", + "pkgload", + "purrr", + "rlang", + "stringi", + "stringr", + "xml2" + ] + }, + "rpart": { + "Package": "rpart", + "Version": "4.1-13", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "6315535da80d5cc6c2e573966d8c8210", + "Requirements": [] + }, + "rprojroot": { + "Package": "rprojroot", + "Version": "1.3-2", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "f6a407ae5dd21f6f80a6708bbb6eb3ae", + "Requirements": [ + "backports" + ] + }, + "rstudioapi": { + "Package": "rstudioapi", + "Version": "0.11", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "33a5b27a03da82ac4b1d43268f80088a", + "Requirements": [] + }, + "rversions": { + "Package": "rversions", + "Version": "2.0.2", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "0ec41191f744d0f5afad8c6f35cc36e4", + "Requirements": [ + "curl", + "xml2" + ] + }, + "sessioninfo": { + "Package": "sessioninfo", + "Version": "1.1.1", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "308013098befe37484df72c39cf90d6e", + "Requirements": [ + "cli", + "withr" + ] + }, + "spatial": { + "Package": "spatial", + "Version": "7.3-11", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "f27a078d834614513608da2c08031130", + "Requirements": [] + }, + "stringi": { + "Package": "stringi", + "Version": "1.7.12", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "ca8bd84263c77310739d2cf64d84d7c9", + "Requirements": [] + }, + "stringr": { + "Package": "stringr", + "Version": "1.5.0", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "671a4d384ae9d32fc47a14e98bfa3dc8", + "Requirements": [ + "cli", + "glue", + "lifecycle", + "magrittr", + "rlang", + "stringi", + "vctrs" + ] + }, + "survival": { + "Package": "survival", + "Version": "2.41-3", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "60b1da51f5e3556fd177170a1aa40b49", + "Requirements": [ + "Matrix" + ] + }, + "sys": { + "Package": "sys", + "Version": "3.4", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "b227d13e29222b4574486cfcbde077fa", + "Requirements": [] + }, + "testthat": { + "Package": "testthat", + "Version": "2.3.2", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "0829b987b8961fb07f3b1b64a2fbc495", + "Requirements": [ + "R6", + "cli", + "crayon", + "digest", + "ellipsis", + "evaluate", + "magrittr", + "pkgload", + "praise", + "rlang", + "withr" + ] + }, + "tibble": { + "Package": "tibble", + "Version": "3.1.8", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "56b6934ef0f8c68225949a8672fe1a8f", + "Requirements": [ + "fansi", + "lifecycle", + "magrittr", + "pillar", + "pkgconfig", + "rlang", + "vctrs" + ] + }, + "tidyselect": { + "Package": "tidyselect", + "Version": "1.2.0", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "79540e5fcd9e0435af547d885f184fd5", + "Requirements": [ + "cli", + "glue", + "lifecycle", + "rlang", + "vctrs", + "withr" + ] + }, + "tximport": { + "Package": "tximport", + "Version": "1.6.0", + "Source": "Bioconductor", + "Hash": "2c824ac20bbb34bba92a9b5b0d600fec", + "Requirements": [] + }, + "usethis": { + "Package": "usethis", + "Version": "1.6.1", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "e1985f5a9985fea2e338fa7eb99018ca", + "Requirements": [ + "cli", + "clipr", + "crayon", + "curl", + "desc", + "fs", + "gh", + "git2r", + "glue", + "purrr", + "rematch2", + "rlang", + "rprojroot", + "rstudioapi", + "whisker", + "withr", + "yaml" + ] + }, + "utf8": { + "Package": "utf8", + "Version": "1.2.3", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "1fe17157424bb09c48a8b3b550c753bc", + "Requirements": [] + }, + "vctrs": { + "Package": "vctrs", + "Version": "0.5.2", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "e4ffa94ceed5f124d429a5a5f0f5b378", + "Requirements": [ + "cli", + "glue", + "lifecycle", + "rlang" + ] + }, + "whisker": { + "Package": "whisker", + "Version": "0.4", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "ca970b96d894e90397ed20637a0c1bbe", + "Requirements": [] + }, + "withr": { + "Package": "withr", + "Version": "2.5.0", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "c0e49a9760983e81e55cdd9be92e7182", + "Requirements": [] + }, + "xfun": { + "Package": "xfun", + "Version": "0.36", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "f5baec54606751aa53ac9c0e05848ed6", + "Requirements": [] + }, + "xml2": { + "Package": "xml2", + "Version": "1.3.2", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "d4d71a75dd3ea9eb5fa28cc21f9585e2", + "Requirements": [] + }, + "xopen": { + "Package": "xopen", + "Version": "1.0.0", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "6c85f015dee9cc7710ddd20f86881f58", + "Requirements": [ + "processx" + ] + }, + "yaml": { + "Package": "yaml", + "Version": "2.2.1", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "2826c5d9efb0a88f657c7a679c7106db", + "Requirements": [] + }, + "zlibbioc": { + "Package": "zlibbioc", + "Version": "1.24.0", + "Source": "Bioconductor", + "Hash": "75640bcdaa390770a672332c904642db", + "Requirements": [] + } + } +} diff --git a/workers/dockerfiles/Dockerfile.compendia b/workers/dockerfiles/Dockerfile.compendia index 8790d859c..6ab413714 100644 --- a/workers/dockerfiles/Dockerfile.compendia +++ b/workers/dockerfiles/Dockerfile.compendia @@ -13,8 +13,6 @@ ENV DEBIAN_FRONTEND=noninteractive # For whatever reason this worked and 'en_US.UTF-8' did not. ENV LANG=C.UTF-8 -COPY workers/CRAN.gpg . - # RUN apt-key adv --fetch-keys https://developer.download.nvidia.com/compute/cuda/repos/ubuntu1804/x86_64/3bf863cc.pub # via https://github.com/ilikenwf/apt-fast/issues/85#issuecomment-261640099 RUN echo debconf apt-fast/maxdownloads string 16 | debconf-set-selections && \ @@ -29,13 +27,9 @@ RUN echo debconf apt-fast/maxdownloads string 16 | debconf-set-selections && \ add-apt-repository ppa:savoury1/llvm-defaults-10 && \ apt-get update -qq && \ apt-get install --no-install-recommends -y apt-fast apt-transport-https gpg-agent tzdata && \ - apt-key add CRAN.gpg && \ - echo "deb https://cloud.r-project.org/bin/linux/ubuntu bionic-cran35/" \ - >> /etc/apt/sources.list.d/added_repos.list && \ apt-fast update -qq && \ apt-fast install -y \ build-essential \ - ccache \ cmake \ curl \ cython3 \ @@ -55,40 +49,32 @@ RUN echo debconf apt-fast/maxdownloads string 16 | debconf-set-selections && \ mercurial \ pkg-config \ python3-pip \ + python3-pybind11 \ python3.8 \ python3.8-dev \ r-base-core \ wget && \ apt-get clean && \ - rm CRAN.gpg && \ rm -rf /var/lib/apt/lists/* && \ ln -s /usr/bin/llvm-config-10 /usr/bin/llvm-config && \ update-alternatives --install /usr/bin/python3 python3 \ /usr/bin/python3.8 1 && \ + pip3 install --upgrade pip setuptools && \ groupadd user && \ useradd --create-home --home-dir /home/user -g user user WORKDIR /home/user -# We need a few special packages for QN. ENV R_LIBS=/usr/local/lib/R/site-library -COPY common/R/install_devtools.R . -RUN Rscript install_devtools.R - -COPY workers/R/dependencies/qn/cran/dependencies.R . -RUN Rscript dependencies.R - -COPY workers/R/dependencies/qn/bioc/dependencies.R . -RUN Rscript dependencies.R -# End QN-specific. +COPY workers/R/dependencies/compendia/renv.lock . +COPY workers/R/renv_load.R . +RUN Rscript renv_load.R COPY workers/data_refinery_workers/processors/requirements.txt . -RUN pip3 install --ignore-installed --no-cache-dir --upgrade pip && \ - pip3 install --ignore-installed --no-cache-dir nose numpy scipy matplotlib \ - pandas==0.25.3 scikit-learn sympy rpy2===3.4.5 tzlocal fancySVD && \ - pip3 install --ignore-installed --no-cache-dir -r requirements.txt && \ - pip3 install --ignore-installed --no-cache-dir numpy==1.16.0 +RUN pip3 install --ignore-installed --no-cache-dir nose numpy scipy matplotlib \ + pandas==0.25.3 scikit-learn sympy tzlocal fancySVD && \ + pip3 install --ignore-installed --no-cache-dir -r requirements.txt # Install phantomjs. RUN wget -q "https://bitbucket.org/ariya/phantomjs/downloads/\ @@ -106,6 +92,8 @@ COPY .boto .boto COPY config/ config/ COPY workers/ . +RUN rm -rf /root/.cache/* + ARG SYSTEM_VERSION ENV SYSTEM_VERSION=$SYSTEM_VERSION From 531149906d74ee1b448997868c658da004d7115f Mon Sep 17 00:00:00 2001 From: Arkadii Yakovets Date: Thu, 9 Mar 2023 15:18:28 -0800 Subject: [PATCH 086/220] Update affymetrix dependencies. --- .../affymetrix/install_ensg_pkgs.R | 15 +- workers/R/dependencies/affymetrix/renv.R | 236 + workers/R/dependencies/affymetrix/renv.lock | 4545 +++++++++++++++++ workers/ccache.conf | 5 - workers/dockerfiles/Dockerfile.affymetrix | 46 +- .../dockerfiles/Dockerfile.affymetrix_local | 4 + 6 files changed, 4807 insertions(+), 44 deletions(-) create mode 100644 workers/R/dependencies/affymetrix/renv.R create mode 100644 workers/R/dependencies/affymetrix/renv.lock delete mode 100644 workers/ccache.conf diff --git a/workers/R/dependencies/affymetrix/install_ensg_pkgs.R b/workers/R/dependencies/affymetrix/install_ensg_pkgs.R index 5de25a262..da75b17a8 100644 --- a/workers/R/dependencies/affymetrix/install_ensg_pkgs.R +++ b/workers/R/dependencies/affymetrix/install_ensg_pkgs.R @@ -1,16 +1,17 @@ options(Ncpus = parallel::detectCores()) -install.packages("xml2") + library("xml2") + ensg_url <- "http://brainarray.mbni.med.umich.edu/Brainarray/Database/CustomCDF/22.0.0/ensg.asp" html_content <- read_html(ensg_url) # The second table in the html is the main table that lists all ensg packages. data_table <- xml_find_all(html_content, ".//table")[[2]] -# Extract data rows from the second table: +# Extract data rows from the second table. data_rows <- xml_children(data_table)[3:xml_length(data_table)] -# These two global variables will be modified by save_chip_pkg(): +# These two global variables will be modified by save_chip_pkg(). chips <- c() pkg_urls <- c() @@ -34,15 +35,15 @@ save_chip_pkg <- function(row) { } } -# Extract data of interest out of each row +# Extract data of interest out of each row. lapply(data_rows, save_chip_pkg) -# Write chips and pkg_urls to a tab-delimited file +# Write chips and pkg_urls to a tab-delimited file. output_filename <- "/home/user/r_ensg_probe_pkgs.txt" write.table(list(chips, pkg_urls), file = output_filename, quote = FALSE, row.names = FALSE, col.names = FALSE, sep = "\t" ) -# Install these ensg packages -lapply(pkg_urls, devtools::install_url) +# Install these ensg packages. +lapply(pkg_urls, install.packages) diff --git a/workers/R/dependencies/affymetrix/renv.R b/workers/R/dependencies/affymetrix/renv.R new file mode 100644 index 000000000..ecc78f904 --- /dev/null +++ b/workers/R/dependencies/affymetrix/renv.R @@ -0,0 +1,236 @@ +renv::install("bit@1.1-14") +renv::install("XML@3.98-1.10") +renv::install("bitops@1.0-6") +renv::install("RCurl@1.95-4.10") +renv::install("pkgconfig@2.0.1") +renv::install("backports@1.1.4") +renv::install("rlang@0.4.0") +renv::install("zeallot@0.1.0") +renv::install("glue@1.3.1") +renv::install("digest@0.6.19") +renv::install("vctrs@0.1.0") +renv::install("magrittr@1.5") +renv::install("assertthat@0.2.1") +renv::install("prettyunits@1.0.2") +renv::install("blob@1.1.1") +renv::install("memoise@2.0.1") +renv::install("DBI@1.0.0") +renv::install("Rcpp@1.0.7") +renv::install("bit64@0.9-7") +renv::install("RSQLite@2.0") +renv::install("fansi@0.4.0") +renv::install("crayon@1.3.4") +renv::install("cli@1.1.0") +renv::install("utf8@1.1.4") +renv::install("pillar@1.4.2") +renv::install("lifecycle@1.0.3") +renv::install("tibble@1.4.2") +renv::install("xtable@1.8-2") +renv::install("tidyselect@0.2.5") +renv::install("R6@2.4.0") +renv::install("dplyr@1.0.2") +renv::install("stringi@1.5.3") +renv::install("sys@3.2") +renv::install("askpass@1.1") +renv::install("openssl@2.0.3") +renv::install("curl@3.3") +renv::install("mime@0.7") +renv::install("httr@1.4.2") +renv::install("hms@0.4.2") +renv::install("clipr@0.6.0") +renv::install("readr@1.3.1") +renv::install("xml2@1.3.1") +renv::install("locfit@1.5-9.2") +renv::install("getopt@1.20.3") +renv::install("optparse@1.4.4") + +renv::install( + "affy", + "affyio", + "AnnotationDbi", + "ff@2.2-14", + "genefilter", + "GEOquery", + "limma", + "oligo", + "oligoClasses", + "preprocessCore", + "purrr@0.3.5", + "SCAN.UPC", + "sva", + "tidyr@1.1.0", + "zlibbioc" +) + +renv::install( + "pd.081229.hg18.promoter.medip.hx1", + "pd.2006.07.18.hg18.refseq.promoter", + "pd.2006.07.18.mm8.refseq.promoter", + "pd.2006.10.31.rn34.refseq.promoter", + "pd.ag", + "pd.aragene.1.0.st", + "pd.aragene.1.1.st", + "pd.atdschip.tiling", + "pd.ath1.121501", + "pd.barley1", + "pd.bovgene.1.0.st", + "pd.bovgene.1.1.st", + "pd.bovine", + "pd.bsubtilis", + "pd.cangene.1.0.st", + "pd.cangene.1.1.st", + "pd.canine.2", + "pd.canine", + "pd.celegans", + "pd.charm.hg18.example", + "pd.chicken", + "pd.chigene.1.0.st", + "pd.chigene.1.1.st", + "pd.chogene.2.0.st", + "pd.chogene.2.1.st", + "pd.citrus", + "pd.clariom.d.human", + "pd.clariom.s.human.ht", + "pd.clariom.s.human", + "pd.clariom.s.mouse.ht", + "pd.clariom.s.mouse", + "pd.clariom.s.rat.ht", + "pd.clariom.s.rat", + "pd.cotton", + "pd.cyngene.1.0.st", + "pd.cyngene.1.1.st", + "pd.cyrgene.1.0.st", + "pd.cyrgene.1.1.st", + "pd.cytogenetics.array", + "pd.drogene.1.0.st", + "pd.drogene.1.1.st", + "pd.drosgenome1", + "pd.drosophila.2", + "pd.e.coli.2", + "pd.ecoli.asv2", + "pd.ecoli", + "pd.elegene.1.0.st", + "pd.elegene.1.1.st", + "pd.equgene.1.0.st", + "pd.equgene.1.1.st", + "pd.feinberg.hg18.me.hx1", + "pd.feinberg.mm8.me.hx1", + "pd.felgene.1.0.st", + "pd.felgene.1.1.st", + "pd.fingene.1.0.st", + "pd.fingene.1.1.st", + "pd.genomewidesnp.5", + "pd.genomewidesnp.6", + "pd.guigene.1.0.st", + "pd.guigene.1.1.st", + "pd.hc.g110", + "pd.hg.focus", + "pd.hg.u133.plus.2", + "pd.hg.u133a.2", + "pd.hg.u133a.tag", + "pd.hg.u133a", + "pd.hg.u133b", + "pd.hg.u219", + "pd.hg.u95a", + "pd.hg.u95av2", + "pd.hg.u95b", + "pd.hg.u95c", + "pd.hg.u95d", + "pd.hg.u95e", + "pd.hg18.60mer.expr", + "pd.ht.hg.u133.plus.pm", + "pd.ht.hg.u133a", + "pd.ht.mg.430a", + "pd.hta.2.0", + "pd.hu6800", + "pd.huex.1.0.st.v2", + "pd.hugene.1.0.st.v1", + "pd.hugene.1.1.st.v1", + "pd.hugene.2.0.st", + "pd.hugene.2.1.st", + "pd.maize", + "pd.mapping250k.nsp", + "pd.mapping250k.sty", + "pd.mapping50k.hind240", + "pd.mapping50k.xba240", + "pd.margene.1.0.st", + "pd.margene.1.1.st", + "pd.medgene.1.0.st", + "pd.medgene.1.1.st", + "pd.medicago", + "pd.mg.u74a", + "pd.mg.u74av2", + "pd.mg.u74b", + "pd.mg.u74bv2", + "pd.mg.u74c", + "pd.mg.u74cv2", + "pd.mirna.1.0", + "pd.mirna.2.0", + "pd.mirna.3.0", + "pd.mirna.3.1", + "pd.mirna.4.0", + "pd.moe430a", + "pd.moe430b", + "pd.moex.1.0.st.v1", + "pd.mogene.1.0.st.v1", + "pd.mogene.1.1.st.v1", + "pd.mogene.2.0.st", + "pd.mogene.2.1.st", + "pd.mouse430.2", + "pd.mouse430a.2", + "pd.mta.1.0", + "pd.mu11ksuba", + "pd.mu11ksubb", + "pd.nugo.hs1a520180", + "pd.nugo.mm1a520177", + "pd.ovigene.1.0.st", + "pd.ovigene.1.1.st", + "pd.pae.g1a", + "pd.plasmodium.anopheles", + "pd.poplar", + "pd.porcine", + "pd.porgene.1.0.st", + "pd.porgene.1.1.st", + "pd.rabgene.1.0.st", + "pd.rabgene.1.1.st", + "pd.rae230a", + "pd.rae230b", + "pd.raex.1.0.st.v1", + "pd.ragene.1.0.st.v1", + "pd.ragene.1.1.st.v1", + "pd.ragene.2.0.st", + "pd.ragene.2.1.st", + "pd.rat230.2", + "pd.rcngene.1.0.st", + "pd.rcngene.1.1.st", + "pd.rg.u34a", + "pd.rg.u34b", + "pd.rg.u34c", + "pd.rhegene.1.0.st", + "pd.rhegene.1.1.st", + "pd.rhesus", + "pd.rice", + "pd.rjpgene.1.0.st", + "pd.rjpgene.1.1.st", + "pd.rn.u34", + "pd.rta.1.0", + "pd.rusgene.1.0.st", + "pd.rusgene.1.1.st", + "pd.s.aureus", + "pd.soybean", + "pd.soygene.1.0.st", + "pd.soygene.1.1.st", + "pd.sugar.cane", + "pd.tomato", + "pd.u133.x3p", + "pd.vitis.vinifera", + "pd.wheat", + "pd.x.laevis.2", + "pd.x.tropicalis", + "pd.xenopus.laevis", + "pd.yeast.2", + "pd.yg.s98", + "pd.zebgene.1.0.st", + "pd.zebgene.1.1.st", + "pd.zebrafish" +) diff --git a/workers/R/dependencies/affymetrix/renv.lock b/workers/R/dependencies/affymetrix/renv.lock new file mode 100644 index 000000000..9cc79aa4c --- /dev/null +++ b/workers/R/dependencies/affymetrix/renv.lock @@ -0,0 +1,4545 @@ +{ + "R": { + "Version": "3.4.4", + "Repositories": [ + { + "Name": "Bioconductor", + "URL": "https://bioconductor.org/packages/3.6/bioc" + }, + { + "Name": "BioconductorAnnotation", + "URL": "https://bioconductor.org/packages/3.6/data/annotation" + }, + { + "Name": "BioconductorExperiment", + "URL": "https://bioconductor.org/packages/3.6/data/experiment" + }, + { + "Name": "CRAN", + "URL": "https://cloud.r-project.org" + } + ] + }, + "Packages": { + "AnnotationDbi": { + "Package": "AnnotationDbi", + "Version": "1.40.0", + "Source": "Bioconductor", + "Hash": "abb20d74ae5ea08a8d9616a6f1bbaca5", + "Requirements": [ + "Biobase", + "BiocGenerics", + "DBI", + "IRanges", + "RSQLite", + "S4Vectors" + ] + }, + "BH": { + "Package": "BH", + "Version": "1.72.0-3", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "8f9ce74c6417d61f0782cbae5fd2b7b0", + "Requirements": [] + }, + "Biobase": { + "Package": "Biobase", + "Version": "2.38.0", + "Source": "Bioconductor", + "Hash": "8c8060a3f339c35f1dc14af3b7d22d71", + "Requirements": [ + "BiocGenerics" + ] + }, + "BiocGenerics": { + "Package": "BiocGenerics", + "Version": "0.24.0", + "Source": "Bioconductor", + "Hash": "108ff3e3233e79aef825decc9fa87ee3", + "Requirements": [] + }, + "BiocInstaller": { + "Package": "BiocInstaller", + "Version": "1.28.0", + "Source": "Bioconductor", + "Hash": "ee02868b8bd3657a3463d8bc3a64d831", + "Requirements": [] + }, + "BiocManager": { + "Package": "BiocManager", + "Version": "1.30.20", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "a7fca16a50b6ef7771b49d636dd54b57", + "Requirements": [] + }, + "BiocParallel": { + "Package": "BiocParallel", + "Version": "1.12.0", + "Source": "Bioconductor", + "Hash": "4fc0d93ea840783e2000f15f111b8a9b", + "Requirements": [ + "BH", + "futile.logger", + "snow" + ] + }, + "Biostrings": { + "Package": "Biostrings", + "Version": "2.46.0", + "Source": "Bioconductor", + "Hash": "12005b8dd90f7f7f9864ee9d6965c366", + "Requirements": [ + "BiocGenerics", + "IRanges", + "S4Vectors", + "XVector" + ] + }, + "DBI": { + "Package": "DBI", + "Version": "1.0.0", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "7bc8be0e425da29fe0e10f792bdbb74b", + "Requirements": [] + }, + "DelayedArray": { + "Package": "DelayedArray", + "Version": "0.4.1", + "Source": "Bioconductor", + "Hash": "c2572a27fb1281ee4c11390826f326a1", + "Requirements": [ + "BiocGenerics", + "IRanges", + "S4Vectors", + "matrixStats" + ] + }, + "GEOquery": { + "Package": "GEOquery", + "Version": "2.46.15", + "Source": "Bioconductor", + "Hash": "71fbb4c39d7ea4ca06dcfdfd41ef1ee5", + "Requirements": [ + "Biobase", + "dplyr", + "httr", + "limma", + "magrittr", + "readr", + "tidyr", + "xml2" + ] + }, + "GenomeInfoDb": { + "Package": "GenomeInfoDb", + "Version": "1.14.0", + "Source": "Bioconductor", + "Hash": "39dc4261100e402165a6db62f364b493", + "Requirements": [ + "BiocGenerics", + "GenomeInfoDbData", + "IRanges", + "RCurl", + "S4Vectors" + ] + }, + "GenomeInfoDbData": { + "Package": "GenomeInfoDbData", + "Version": "1.0.0", + "Source": "Bioconductor", + "Hash": "336cc20fd69db19ebfad8a73e05d88b3", + "Requirements": [] + }, + "GenomicRanges": { + "Package": "GenomicRanges", + "Version": "1.30.3", + "Source": "Bioconductor", + "Hash": "ecfab21e609cea7ee297e0e1230b5bb4", + "Requirements": [ + "BiocGenerics", + "GenomeInfoDb", + "IRanges", + "S4Vectors", + "XVector" + ] + }, + "IRanges": { + "Package": "IRanges", + "Version": "2.12.0", + "Source": "Bioconductor", + "Hash": "d89aecf720b113b47f936c48b356d264", + "Requirements": [ + "BiocGenerics", + "S4Vectors" + ] + }, + "KernSmooth": { + "Package": "KernSmooth", + "Version": "2.23-15", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "081f417f4d6d55b7e8981433e8404a22", + "Requirements": [] + }, + "MASS": { + "Package": "MASS", + "Version": "7.3-49", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "f47828414f155725f342d93be7fcfabd", + "Requirements": [] + }, + "Matrix": { + "Package": "Matrix", + "Version": "1.2-12", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "2451d6490ec017b18b6eff460c65fd85", + "Requirements": [ + "lattice" + ] + }, + "R6": { + "Package": "R6", + "Version": "2.4.0", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "d4618c4cb36bc46831551c5d85815818", + "Requirements": [] + }, + "RCurl": { + "Package": "RCurl", + "Version": "1.95-4.10", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "6875cb45c7e5e749120442b47ebc04db", + "Requirements": [ + "bitops" + ] + }, + "RSQLite": { + "Package": "RSQLite", + "Version": "2.0", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "162bf21ed2680cd3d386b0c8b119deba", + "Requirements": [ + "BH", + "DBI", + "Rcpp", + "bit64", + "blob", + "memoise", + "pkgconfig", + "plogr" + ] + }, + "Rcpp": { + "Package": "Rcpp", + "Version": "1.0.7", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "dab19adae4440ae55aa8a9d238b246bb", + "Requirements": [] + }, + "S4Vectors": { + "Package": "S4Vectors", + "Version": "0.16.0", + "Source": "Bioconductor", + "Hash": "e9cd4cea8c93cbdd8595e562c8ed0624", + "Requirements": [ + "BiocGenerics" + ] + }, + "SCAN.UPC": { + "Package": "SCAN.UPC", + "Version": "2.20.0", + "Source": "Bioconductor", + "Hash": "1583bdf3637b41eb5f8812e7ac678f73", + "Requirements": [ + "Biobase", + "Biostrings", + "GEOquery", + "IRanges", + "MASS", + "affy", + "affyio", + "foreach", + "oligo", + "sva" + ] + }, + "SummarizedExperiment": { + "Package": "SummarizedExperiment", + "Version": "1.8.1", + "Source": "Bioconductor", + "Hash": "57080b28b2f5606100e02a7ab01b3022", + "Requirements": [ + "Biobase", + "BiocGenerics", + "DelayedArray", + "GenomeInfoDb", + "GenomicRanges", + "IRanges", + "Matrix", + "S4Vectors" + ] + }, + "XML": { + "Package": "XML", + "Version": "3.98-1.10", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "f24c56597fc23b321a5478f6f3e7824c", + "Requirements": [] + }, + "XVector": { + "Package": "XVector", + "Version": "0.18.0", + "Source": "Bioconductor", + "Hash": "c677dd00d99bd1f81caf0fc3d9fa7672", + "Requirements": [ + "BiocGenerics", + "IRanges", + "S4Vectors", + "zlibbioc" + ] + }, + "affxparser": { + "Package": "affxparser", + "Version": "1.50.0", + "Source": "Bioconductor", + "Hash": "86914cfc7998f083d207a8ae84488697", + "Requirements": [] + }, + "affy": { + "Package": "affy", + "Version": "1.56.0", + "Source": "Bioconductor", + "Hash": "1022ecaff1da7aaa5f1ebe6168794e97", + "Requirements": [ + "Biobase", + "BiocGenerics", + "BiocInstaller", + "affyio", + "preprocessCore", + "zlibbioc" + ] + }, + "affyio": { + "Package": "affyio", + "Version": "1.48.0", + "Source": "Bioconductor", + "Hash": "f973e1ee016e8ff7095847e0769a9d97", + "Requirements": [ + "zlibbioc" + ] + }, + "annotate": { + "Package": "annotate", + "Version": "1.56.2", + "Source": "Bioconductor", + "Hash": "064f14d8325abc226f7433f9ff8094c9", + "Requirements": [ + "AnnotationDbi", + "Biobase", + "BiocGenerics", + "DBI", + "RCurl", + "XML", + "xtable" + ] + }, + "askpass": { + "Package": "askpass", + "Version": "1.1", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "e8a22846fff485f0be3770c2da758713", + "Requirements": [ + "sys" + ] + }, + "assertthat": { + "Package": "assertthat", + "Version": "0.2.1", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "50c838a310445e954bc13f26f26a6ecf", + "Requirements": [] + }, + "backports": { + "Package": "backports", + "Version": "1.1.4", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "b9a4db2667d7e43d197ed12e40781889", + "Requirements": [] + }, + "base64enc": { + "Package": "base64enc", + "Version": "0.1-3", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "543776ae6848fde2f48ff3816d0628bc", + "Requirements": [] + }, + "bit": { + "Package": "bit", + "Version": "1.1-14", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "ac0b4115f7bddd07e733e1ac1697c687", + "Requirements": [] + }, + "bit64": { + "Package": "bit64", + "Version": "0.9-7", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "3338d4a9b1352f5a613e2bdcefe784ea", + "Requirements": [ + "bit" + ] + }, + "bitops": { + "Package": "bitops", + "Version": "1.0-6", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "0b118d5900596bae6c4d4865374536a6", + "Requirements": [] + }, + "blob": { + "Package": "blob", + "Version": "1.1.1", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "3ce988193cfb67e59fde06121bd9f8be", + "Requirements": [ + "prettyunits" + ] + }, + "boot": { + "Package": "boot", + "Version": "1.3-20", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "560a6eb3b4658e2ce3d0f8feb087fe56", + "Requirements": [] + }, + "brew": { + "Package": "brew", + "Version": "1.0-6", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "92a5f887f9ae3035ac7afde22ba73ee9", + "Requirements": [] + }, + "brio": { + "Package": "brio", + "Version": "1.1.3", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "976cf154dfb043c012d87cddd8bca363", + "Requirements": [] + }, + "bslib": { + "Package": "bslib", + "Version": "0.4.2", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "a7fbf03946ad741129dc81098722fca1", + "Requirements": [ + "base64enc", + "cachem", + "htmltools", + "jquerylib", + "jsonlite", + "memoise", + "mime", + "rlang", + "sass" + ] + }, + "cachem": { + "Package": "cachem", + "Version": "1.0.7", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "cda74447c42f529de601fe4d4050daef", + "Requirements": [ + "fastmap", + "rlang" + ] + }, + "callr": { + "Package": "callr", + "Version": "3.7.3", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "9b2191ede20fa29828139b9900922e51", + "Requirements": [ + "R6", + "processx" + ] + }, + "class": { + "Package": "class", + "Version": "7.3-14", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "c39d47020cdf42e88bd80c83ca6a0a0b", + "Requirements": [ + "MASS" + ] + }, + "cli": { + "Package": "cli", + "Version": "3.6.0", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "3177a5a16c243adc199ba33117bd9657", + "Requirements": [] + }, + "clipr": { + "Package": "clipr", + "Version": "0.6.0", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "8633315be5a50b858a69615dc1234c3b", + "Requirements": [] + }, + "cluster": { + "Package": "cluster", + "Version": "2.0.6", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "ea8c392e186024710ab52bc405212f5e", + "Requirements": [] + }, + "codetools": { + "Package": "codetools", + "Version": "0.2-19", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "c089a619a7fae175d149d89164f8c7d8", + "Requirements": [] + }, + "commonmark": { + "Package": "commonmark", + "Version": "1.7", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "0f22be39ec1d141fd03683c06f3a6e67", + "Requirements": [] + }, + "cpp11": { + "Package": "cpp11", + "Version": "0.4.3", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "ed588261931ee3be2c700d22e94a29ab", + "Requirements": [] + }, + "crayon": { + "Package": "crayon", + "Version": "1.3.4", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "0d57bc8e27b7ba9e45dba825ebc0de6b", + "Requirements": [] + }, + "credentials": { + "Package": "credentials", + "Version": "1.3.2", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "93762d0a34d78e6a025efdbfb5c6bb41", + "Requirements": [ + "askpass", + "curl", + "jsonlite", + "openssl", + "sys" + ] + }, + "curl": { + "Package": "curl", + "Version": "3.3", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "c71bf321a357db97242bc233a1f99a55", + "Requirements": [] + }, + "data.table": { + "Package": "data.table", + "Version": "1.14.8", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "b4c06e554f33344e044ccd7fdca750a9", + "Requirements": [] + }, + "desc": { + "Package": "desc", + "Version": "1.4.2", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "6b9602c7ebbe87101a9c8edb6e8b6d21", + "Requirements": [ + "R6", + "cli", + "rprojroot" + ] + }, + "devtools": { + "Package": "devtools", + "Version": "2.4.5", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "ea5bc8b4a6a01e4f12d98b58329930bb", + "Requirements": [ + "cli", + "desc", + "ellipsis", + "fs", + "lifecycle", + "memoise", + "miniUI", + "pkgbuild", + "pkgdown", + "pkgload", + "profvis", + "rcmdcheck", + "remotes", + "rlang", + "roxygen2", + "rversions", + "sessioninfo", + "testthat", + "urlchecker", + "usethis", + "withr" + ] + }, + "diffobj": { + "Package": "diffobj", + "Version": "0.3.5", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "bcaa8b95f8d7d01a5dedfd959ce88ab8", + "Requirements": [ + "crayon" + ] + }, + "digest": { + "Package": "digest", + "Version": "0.6.19", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "2ac7f712959404638ccb1977809eabdd", + "Requirements": [] + }, + "doParallel": { + "Package": "doParallel", + "Version": "1.0.17", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "451e5edf411987991ab6a5410c45011f", + "Requirements": [ + "foreach", + "iterators" + ] + }, + "downlit": { + "Package": "downlit", + "Version": "0.4.2", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "79bf3f66590752ffbba20f8d2da94c7c", + "Requirements": [ + "brio", + "desc", + "digest", + "evaluate", + "fansi", + "memoise", + "rlang", + "vctrs", + "withr", + "yaml" + ] + }, + "dplyr": { + "Package": "dplyr", + "Version": "1.0.2", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "d0509913b27ea898189ee664b6030dc2", + "Requirements": [ + "R6", + "ellipsis", + "generics", + "glue", + "lifecycle", + "magrittr", + "rlang", + "tibble", + "tidyselect", + "vctrs" + ] + }, + "ellipsis": { + "Package": "ellipsis", + "Version": "0.3.2", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "bb0eec2fe32e88d9e2836c2f73ea2077", + "Requirements": [ + "rlang" + ] + }, + "evaluate": { + "Package": "evaluate", + "Version": "0.14", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "ec8ca05cffcc70569eaaad8469d2a3a7", + "Requirements": [] + }, + "fansi": { + "Package": "fansi", + "Version": "0.4.0", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "b31d9e5d051553d1177083aeba04b5b9", + "Requirements": [] + }, + "fastmap": { + "Package": "fastmap", + "Version": "1.1.1", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "f7736a18de97dea803bde0a2daaafb27", + "Requirements": [] + }, + "ff": { + "Package": "ff", + "Version": "2.2-14", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "2f745ad9a324bf4247df10ea6ebc3953", + "Requirements": [ + "bit" + ] + }, + "fontawesome": { + "Package": "fontawesome", + "Version": "0.5.0", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "e80750aec5717dedc019ad7ee40e4a7c", + "Requirements": [ + "htmltools", + "rlang" + ] + }, + "foreach": { + "Package": "foreach", + "Version": "1.5.2", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "618609b42c9406731ead03adf5379850", + "Requirements": [ + "codetools", + "iterators" + ] + }, + "foreign": { + "Package": "foreign", + "Version": "0.8-69", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "6f953f3e73fc00af8cdad0864f535f97", + "Requirements": [] + }, + "formatR": { + "Package": "formatR", + "Version": "1.14", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "63cb26d12517c7863f5abb006c5e0f25", + "Requirements": [] + }, + "fs": { + "Package": "fs", + "Version": "1.6.1", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "f4dcd23b67e33d851d2079f703e8b985", + "Requirements": [] + }, + "futile.logger": { + "Package": "futile.logger", + "Version": "1.4.3", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "99f0ace8c05ec7d3683d27083c4f1e7e", + "Requirements": [ + "futile.options", + "lambda.r" + ] + }, + "futile.options": { + "Package": "futile.options", + "Version": "1.0.1", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "0d9bf02413ddc2bbe8da9ce369dcdd2b", + "Requirements": [] + }, + "genefilter": { + "Package": "genefilter", + "Version": "1.60.0", + "Source": "Bioconductor", + "Hash": "e325ea00e99e1c3ce474aa07b88cd81c", + "Requirements": [ + "AnnotationDbi", + "Biobase", + "S4Vectors", + "annotate", + "survival" + ] + }, + "generics": { + "Package": "generics", + "Version": "0.1.3", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "15e9634c0fcd294799e9b2e929ed1b86", + "Requirements": [] + }, + "gert": { + "Package": "gert", + "Version": "1.9.2", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "9122b3958e749badb5c939f498038b57", + "Requirements": [ + "askpass", + "credentials", + "openssl", + "rstudioapi", + "sys", + "zip" + ] + }, + "getopt": { + "Package": "getopt", + "Version": "1.20.3", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "ad68e3263f0bc9269aab8c2039440117", + "Requirements": [] + }, + "gh": { + "Package": "gh", + "Version": "1.4.0", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "03533b1c875028233598f848fda44c4c", + "Requirements": [ + "cli", + "gitcreds", + "httr2", + "ini", + "jsonlite", + "rlang" + ] + }, + "gitcreds": { + "Package": "gitcreds", + "Version": "0.1.2", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "ab08ac61f3e1be454ae21911eb8bc2fe", + "Requirements": [] + }, + "glue": { + "Package": "glue", + "Version": "1.6.2", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "4f2596dfb05dac67b9dc558e5c6fba2e", + "Requirements": [] + }, + "highr": { + "Package": "highr", + "Version": "0.8", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "4dc5bb88961e347a0f4d8aad597cbfac", + "Requirements": [] + }, + "hms": { + "Package": "hms", + "Version": "0.4.2", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "b1d40b416da234147d5869a009458702", + "Requirements": [ + "pkgconfig", + "rlang" + ] + }, + "htmltools": { + "Package": "htmltools", + "Version": "0.5.4", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "9d27e99cc90bd701c0a7a63e5923f9b7", + "Requirements": [ + "base64enc", + "digest", + "ellipsis", + "fastmap", + "rlang" + ] + }, + "htmlwidgets": { + "Package": "htmlwidgets", + "Version": "1.5.1", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "41bace23583fbc25089edae324de2dc3", + "Requirements": [ + "htmltools", + "jsonlite", + "yaml" + ] + }, + "httpuv": { + "Package": "httpuv", + "Version": "1.6.9", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "1046aa31a57eae8b357267a56a0b6d8b", + "Requirements": [ + "R6", + "Rcpp", + "later", + "promises" + ] + }, + "httr": { + "Package": "httr", + "Version": "1.4.2", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "a525aba14184fec243f9eaec62fbed43", + "Requirements": [ + "R6", + "curl", + "jsonlite", + "mime", + "openssl" + ] + }, + "httr2": { + "Package": "httr2", + "Version": "0.2.2", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "5c09fe33064978ede54de42309c8b532", + "Requirements": [ + "R6", + "cli", + "curl", + "glue", + "magrittr", + "openssl", + "rappdirs", + "rlang", + "withr" + ] + }, + "ini": { + "Package": "ini", + "Version": "0.3.1", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "6154ec2223172bce8162d4153cda21f7", + "Requirements": [] + }, + "iterators": { + "Package": "iterators", + "Version": "1.0.14", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "8954069286b4b2b0d023d1b288dce978", + "Requirements": [] + }, + "jquerylib": { + "Package": "jquerylib", + "Version": "0.1.4", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "5aab57a3bd297eee1c1d862735972182", + "Requirements": [ + "htmltools" + ] + }, + "jsonlite": { + "Package": "jsonlite", + "Version": "1.7.0", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "2657f20b9a74c996c602e74ebe540b06", + "Requirements": [] + }, + "knitr": { + "Package": "knitr", + "Version": "1.29", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "e5f4c41c17df8cdf7b0df12117c0d99a", + "Requirements": [ + "evaluate", + "highr", + "markdown", + "stringr", + "xfun", + "yaml" + ] + }, + "lambda.r": { + "Package": "lambda.r", + "Version": "1.2.4", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "b1e925c4b9ffeb901bacf812cbe9a6ad", + "Requirements": [ + "formatR" + ] + }, + "later": { + "Package": "later", + "Version": "1.1.0.1", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "d0a62b247165aabf397fded504660d8a", + "Requirements": [ + "BH", + "Rcpp", + "rlang" + ] + }, + "lattice": { + "Package": "lattice", + "Version": "0.20-35", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "10a22a9a66fbe7944e9ef98985d7c927", + "Requirements": [] + }, + "lazyeval": { + "Package": "lazyeval", + "Version": "0.2.2", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "d908914ae53b04d4c0c0fd72ecc35370", + "Requirements": [] + }, + "lifecycle": { + "Package": "lifecycle", + "Version": "1.0.3", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "001cecbeac1cff9301bdc3775ee46a86", + "Requirements": [ + "cli", + "glue", + "rlang" + ] + }, + "limma": { + "Package": "limma", + "Version": "3.34.9", + "Source": "Bioconductor", + "Hash": "06c81c4043f41177428a83c73a59d094", + "Requirements": [] + }, + "locfit": { + "Package": "locfit", + "Version": "1.5-9.2", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "ea75a919bdd6a9b1dc983d8931b27385", + "Requirements": [ + "lattice" + ] + }, + "magrittr": { + "Package": "magrittr", + "Version": "1.5", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "1bb58822a20301cee84a41678e25d9b7", + "Requirements": [] + }, + "markdown": { + "Package": "markdown", + "Version": "1.1", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "61e4a10781dd00d7d81dd06ca9b94e95", + "Requirements": [ + "mime", + "xfun" + ] + }, + "matrixStats": { + "Package": "matrixStats", + "Version": "0.63.0", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "57af0c3da1f1a50680b186591c3359af", + "Requirements": [] + }, + "memoise": { + "Package": "memoise", + "Version": "2.0.1", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "e2817ccf4a065c5d9d7f2cfbe7c1d78c", + "Requirements": [ + "cachem", + "rlang" + ] + }, + "mgcv": { + "Package": "mgcv", + "Version": "1.8-23", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "b1a3bba86e45ddea6b66e67623f587ee", + "Requirements": [ + "Matrix", + "nlme" + ] + }, + "mime": { + "Package": "mime", + "Version": "0.7", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "f085cb5d1548336cafa5ee7ec56d7e34", + "Requirements": [] + }, + "miniUI": { + "Package": "miniUI", + "Version": "0.1.1.1", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "fec5f52652d60615fdb3957b3d74324a", + "Requirements": [ + "htmltools", + "shiny" + ] + }, + "nlme": { + "Package": "nlme", + "Version": "3.1-131", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "215a901b25abf4077a8e7d2d6ce2b211", + "Requirements": [ + "lattice" + ] + }, + "nnet": { + "Package": "nnet", + "Version": "7.3-12", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "68287aec1f476c41d16ce1ace445800c", + "Requirements": [] + }, + "oligo": { + "Package": "oligo", + "Version": "1.42.0", + "Source": "Bioconductor", + "Hash": "694c134c6a0d42dd72084c9283735e1a", + "Requirements": [ + "Biobase", + "BiocGenerics", + "Biostrings", + "DBI", + "RSQLite", + "affxparser", + "affyio", + "ff", + "oligoClasses", + "preprocessCore", + "zlibbioc" + ] + }, + "oligoClasses": { + "Package": "oligoClasses", + "Version": "1.40.0", + "Source": "Bioconductor", + "Hash": "c197dfefe8a4928044851fceb05b5eba", + "Requirements": [ + "Biobase", + "BiocGenerics", + "BiocInstaller", + "Biostrings", + "DBI", + "GenomicRanges", + "IRanges", + "RSQLite", + "S4Vectors", + "SummarizedExperiment", + "affyio", + "ff", + "foreach" + ] + }, + "openssl": { + "Package": "openssl", + "Version": "2.0.3", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "b9621e75c0652041002a19609fb23c5a", + "Requirements": [ + "askpass" + ] + }, + "optparse": { + "Package": "optparse", + "Version": "1.4.4", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "803e834713c77eda6c233965977b2c58", + "Requirements": [ + "getopt" + ] + }, + "pd.081229.hg18.promoter.medip.hx1": { + "Package": "pd.081229.hg18.promoter.medip.hx1", + "Version": "0.99.4", + "Source": "Bioconductor", + "Hash": "f7afce8ddb37b0e59242a9ad8c85e6e0", + "Requirements": [ + "Biostrings", + "DBI", + "IRanges", + "RSQLite", + "oligo", + "oligoClasses" + ] + }, + "pd.2006.07.18.hg18.refseq.promoter": { + "Package": "pd.2006.07.18.hg18.refseq.promoter", + "Version": "1.8.1", + "Source": "Bioconductor", + "Hash": "a1ec02a7117ca194e12f144ee12bd5e8", + "Requirements": [ + "Biostrings", + "DBI", + "IRanges", + "RSQLite", + "oligo", + "oligoClasses" + ] + }, + "pd.2006.07.18.mm8.refseq.promoter": { + "Package": "pd.2006.07.18.mm8.refseq.promoter", + "Version": "0.99.3", + "Source": "Bioconductor", + "Hash": "a53d98d1a5c9f1e43f4fb7fcec2f5bc1", + "Requirements": [ + "Biostrings", + "DBI", + "IRanges", + "RSQLite", + "oligo", + "oligoClasses" + ] + }, + "pd.2006.10.31.rn34.refseq.promoter": { + "Package": "pd.2006.10.31.rn34.refseq.promoter", + "Version": "0.99.3", + "Source": "Bioconductor", + "Hash": "1721412a2805c3afbf10bfc7f28bf8bf", + "Requirements": [ + "Biostrings", + "DBI", + "IRanges", + "RSQLite", + "oligo", + "oligoClasses" + ] + }, + "pd.ag": { + "Package": "pd.ag", + "Version": "3.12.0", + "Source": "Bioconductor", + "Hash": "6e7114b6570a8771f661feea577b6275", + "Requirements": [ + "Biostrings", + "DBI", + "IRanges", + "RSQLite", + "S4Vectors", + "oligo", + "oligoClasses" + ] + }, + "pd.aragene.1.0.st": { + "Package": "pd.aragene.1.0.st", + "Version": "3.12.0", + "Source": "Bioconductor", + "Hash": "f83a280c15589e486fea8a5f1980914c", + "Requirements": [ + "Biostrings", + "DBI", + "IRanges", + "RSQLite", + "S4Vectors", + "oligo", + "oligoClasses" + ] + }, + "pd.aragene.1.1.st": { + "Package": "pd.aragene.1.1.st", + "Version": "3.12.0", + "Source": "Bioconductor", + "Hash": "e92aceacade8c2edc64945e4888c4360", + "Requirements": [ + "Biostrings", + "DBI", + "IRanges", + "RSQLite", + "S4Vectors", + "oligo", + "oligoClasses" + ] + }, + "pd.atdschip.tiling": { + "Package": "pd.atdschip.tiling", + "Version": "0.16.0", + "Source": "Bioconductor", + "Hash": "eedc76fd65ea3a49b8cc5984b66c653a", + "Requirements": [ + "Biostrings", + "DBI", + "IRanges", + "RSQLite", + "S4Vectors", + "oligo", + "oligoClasses" + ] + }, + "pd.ath1.121501": { + "Package": "pd.ath1.121501", + "Version": "3.12.0", + "Source": "Bioconductor", + "Hash": "d69eef00df9efc44e7eb8f034b3272aa", + "Requirements": [ + "Biostrings", + "DBI", + "IRanges", + "RSQLite", + "S4Vectors", + "oligo", + "oligoClasses" + ] + }, + "pd.barley1": { + "Package": "pd.barley1", + "Version": "3.12.0", + "Source": "Bioconductor", + "Hash": "77fe5652e678146506b5613f7a126f6f", + "Requirements": [ + "Biostrings", + "DBI", + "IRanges", + "RSQLite", + "S4Vectors", + "oligo", + "oligoClasses" + ] + }, + "pd.bovgene.1.0.st": { + "Package": "pd.bovgene.1.0.st", + "Version": "3.12.0", + "Source": "Bioconductor", + "Hash": "78adab01c64f1551370f9e95f0ca027f", + "Requirements": [ + "Biostrings", + "DBI", + "IRanges", + "RSQLite", + "S4Vectors", + "oligo", + "oligoClasses" + ] + }, + "pd.bovgene.1.1.st": { + "Package": "pd.bovgene.1.1.st", + "Version": "3.12.0", + "Source": "Bioconductor", + "Hash": "8087e043592a519c2e8097b412b538c6", + "Requirements": [ + "Biostrings", + "DBI", + "IRanges", + "RSQLite", + "S4Vectors", + "oligo", + "oligoClasses" + ] + }, + "pd.bovine": { + "Package": "pd.bovine", + "Version": "3.12.0", + "Source": "Bioconductor", + "Hash": "e82d5e05667825c5a0d828deb4c28105", + "Requirements": [ + "Biostrings", + "DBI", + "IRanges", + "RSQLite", + "S4Vectors", + "oligo", + "oligoClasses" + ] + }, + "pd.bsubtilis": { + "Package": "pd.bsubtilis", + "Version": "3.12.0", + "Source": "Bioconductor", + "Hash": "7798014213a9968146d737a033ce3ba5", + "Requirements": [ + "Biostrings", + "DBI", + "IRanges", + "RSQLite", + "S4Vectors", + "oligo", + "oligoClasses" + ] + }, + "pd.cangene.1.0.st": { + "Package": "pd.cangene.1.0.st", + "Version": "3.12.0", + "Source": "Bioconductor", + "Hash": "3ef64330c89b37aeb26f6fd3276ea604", + "Requirements": [ + "Biostrings", + "DBI", + "IRanges", + "RSQLite", + "S4Vectors", + "oligo", + "oligoClasses" + ] + }, + "pd.cangene.1.1.st": { + "Package": "pd.cangene.1.1.st", + "Version": "3.12.0", + "Source": "Bioconductor", + "Hash": "0cc260228ac0c7ad160e65ce66292c0e", + "Requirements": [ + "Biostrings", + "DBI", + "IRanges", + "RSQLite", + "S4Vectors", + "oligo", + "oligoClasses" + ] + }, + "pd.canine": { + "Package": "pd.canine", + "Version": "3.12.0", + "Source": "Bioconductor", + "Hash": "d5dfd581bb94bd791b66fc930d143b04", + "Requirements": [ + "Biostrings", + "DBI", + "IRanges", + "RSQLite", + "S4Vectors", + "oligo", + "oligoClasses" + ] + }, + "pd.canine.2": { + "Package": "pd.canine.2", + "Version": "3.12.0", + "Source": "Bioconductor", + "Hash": "e2c1aaa1e7883375ce80d5874193d4d0", + "Requirements": [ + "Biostrings", + "DBI", + "IRanges", + "RSQLite", + "S4Vectors", + "oligo", + "oligoClasses" + ] + }, + "pd.celegans": { + "Package": "pd.celegans", + "Version": "3.12.0", + "Source": "Bioconductor", + "Hash": "3b3af11b819506a41c5f6a705df139c6", + "Requirements": [ + "Biostrings", + "DBI", + "IRanges", + "RSQLite", + "S4Vectors", + "oligo", + "oligoClasses" + ] + }, + "pd.charm.hg18.example": { + "Package": "pd.charm.hg18.example", + "Version": "0.99.4", + "Source": "Bioconductor", + "Hash": "1aae017e6d612b75f5354b5ed7bee356", + "Requirements": [ + "Biostrings", + "DBI", + "IRanges", + "RSQLite", + "oligo", + "oligoClasses" + ] + }, + "pd.chicken": { + "Package": "pd.chicken", + "Version": "3.12.0", + "Source": "Bioconductor", + "Hash": "c9198a85a6c61e7ff1ce2bfb68dab1be", + "Requirements": [ + "Biostrings", + "DBI", + "IRanges", + "RSQLite", + "S4Vectors", + "oligo", + "oligoClasses" + ] + }, + "pd.chigene.1.0.st": { + "Package": "pd.chigene.1.0.st", + "Version": "3.12.0", + "Source": "Bioconductor", + "Hash": "6c58a7ed8ca073fd4ef1ad8ddd233437", + "Requirements": [ + "Biostrings", + "DBI", + "IRanges", + "RSQLite", + "S4Vectors", + "oligo", + "oligoClasses" + ] + }, + "pd.chigene.1.1.st": { + "Package": "pd.chigene.1.1.st", + "Version": "3.12.0", + "Source": "Bioconductor", + "Hash": "bfcf87bc9de432ed11d5d882ad8f29e6", + "Requirements": [ + "Biostrings", + "DBI", + "IRanges", + "RSQLite", + "S4Vectors", + "oligo", + "oligoClasses" + ] + }, + "pd.chogene.2.0.st": { + "Package": "pd.chogene.2.0.st", + "Version": "3.12.0", + "Source": "Bioconductor", + "Hash": "b530bc3a2b0bacf1bcea988317fcf283", + "Requirements": [ + "Biostrings", + "DBI", + "IRanges", + "RSQLite", + "S4Vectors", + "oligo", + "oligoClasses" + ] + }, + "pd.chogene.2.1.st": { + "Package": "pd.chogene.2.1.st", + "Version": "3.12.0", + "Source": "Bioconductor", + "Hash": "1f8e27d05b2af91f32929ffb371d54d0", + "Requirements": [ + "Biostrings", + "DBI", + "IRanges", + "RSQLite", + "S4Vectors", + "oligo", + "oligoClasses" + ] + }, + "pd.citrus": { + "Package": "pd.citrus", + "Version": "3.12.0", + "Source": "Bioconductor", + "Hash": "c9100773bc865186caaa6fe7c2df8b1d", + "Requirements": [ + "Biostrings", + "DBI", + "IRanges", + "RSQLite", + "S4Vectors", + "oligo", + "oligoClasses" + ] + }, + "pd.clariom.d.human": { + "Package": "pd.clariom.d.human", + "Version": "3.14.1", + "Source": "Bioconductor", + "Hash": "e12d4cb420290368afe9d76d1c0d361d", + "Requirements": [ + "Biostrings", + "DBI", + "IRanges", + "RSQLite", + "S4Vectors", + "oligo", + "oligoClasses" + ] + }, + "pd.clariom.s.human": { + "Package": "pd.clariom.s.human", + "Version": "3.14.1", + "Source": "Bioconductor", + "Hash": "ab32b37823e2754938aec1b8c2853086", + "Requirements": [ + "Biostrings", + "DBI", + "IRanges", + "RSQLite", + "S4Vectors", + "oligo", + "oligoClasses" + ] + }, + "pd.clariom.s.human.ht": { + "Package": "pd.clariom.s.human.ht", + "Version": "3.14.1", + "Source": "Bioconductor", + "Hash": "cb36c373bd60915cc854593ecf54af93", + "Requirements": [ + "Biostrings", + "DBI", + "IRanges", + "RSQLite", + "S4Vectors", + "oligo", + "oligoClasses" + ] + }, + "pd.clariom.s.mouse": { + "Package": "pd.clariom.s.mouse", + "Version": "3.14.1", + "Source": "Bioconductor", + "Hash": "3435057a30bced113ed298f319992a84", + "Requirements": [ + "Biostrings", + "DBI", + "IRanges", + "RSQLite", + "S4Vectors", + "oligo", + "oligoClasses" + ] + }, + "pd.clariom.s.mouse.ht": { + "Package": "pd.clariom.s.mouse.ht", + "Version": "3.14.1", + "Source": "Bioconductor", + "Hash": "5c8e35ded88d7dde1858eab86eb57270", + "Requirements": [ + "Biostrings", + "DBI", + "IRanges", + "RSQLite", + "S4Vectors", + "oligo", + "oligoClasses" + ] + }, + "pd.clariom.s.rat": { + "Package": "pd.clariom.s.rat", + "Version": "3.14.1", + "Source": "Bioconductor", + "Hash": "3e6fba0ae2c5b7e8de4f0286e430a645", + "Requirements": [ + "Biostrings", + "DBI", + "IRanges", + "RSQLite", + "S4Vectors", + "oligo", + "oligoClasses" + ] + }, + "pd.clariom.s.rat.ht": { + "Package": "pd.clariom.s.rat.ht", + "Version": "3.14.1", + "Source": "Bioconductor", + "Hash": "ecb89f6f6f13d08692a2c79564470cf5", + "Requirements": [ + "Biostrings", + "DBI", + "IRanges", + "RSQLite", + "S4Vectors", + "oligo", + "oligoClasses" + ] + }, + "pd.cotton": { + "Package": "pd.cotton", + "Version": "3.12.0", + "Source": "Bioconductor", + "Hash": "fec18f69bdca3c47ef6cb5c10dcb2887", + "Requirements": [ + "Biostrings", + "DBI", + "IRanges", + "RSQLite", + "S4Vectors", + "oligo", + "oligoClasses" + ] + }, + "pd.cyngene.1.0.st": { + "Package": "pd.cyngene.1.0.st", + "Version": "3.12.0", + "Source": "Bioconductor", + "Hash": "42f13f7489b2c25506a07cf216f3eeb2", + "Requirements": [ + "Biostrings", + "DBI", + "IRanges", + "RSQLite", + "S4Vectors", + "oligo", + "oligoClasses" + ] + }, + "pd.cyngene.1.1.st": { + "Package": "pd.cyngene.1.1.st", + "Version": "3.12.0", + "Source": "Bioconductor", + "Hash": "6212be4e2c884ec936d60172e8a769d8", + "Requirements": [ + "Biostrings", + "DBI", + "IRanges", + "RSQLite", + "S4Vectors", + "oligo", + "oligoClasses" + ] + }, + "pd.cyrgene.1.0.st": { + "Package": "pd.cyrgene.1.0.st", + "Version": "3.12.0", + "Source": "Bioconductor", + "Hash": "4413b1b3eab0e9c019b74cee0414d65b", + "Requirements": [ + "Biostrings", + "DBI", + "IRanges", + "RSQLite", + "S4Vectors", + "oligo", + "oligoClasses" + ] + }, + "pd.cyrgene.1.1.st": { + "Package": "pd.cyrgene.1.1.st", + "Version": "3.12.0", + "Source": "Bioconductor", + "Hash": "a673d3efcecdf5ee450c918a7ffc81e4", + "Requirements": [ + "Biostrings", + "DBI", + "IRanges", + "RSQLite", + "S4Vectors", + "oligo", + "oligoClasses" + ] + }, + "pd.cytogenetics.array": { + "Package": "pd.cytogenetics.array", + "Version": "3.12.0", + "Source": "Bioconductor", + "Hash": "c38ea2c4866259bca2632c1be08e9233", + "Requirements": [ + "Biostrings", + "DBI", + "IRanges", + "RSQLite", + "S4Vectors", + "oligo", + "oligoClasses" + ] + }, + "pd.drogene.1.0.st": { + "Package": "pd.drogene.1.0.st", + "Version": "3.12.0", + "Source": "Bioconductor", + "Hash": "caca9fe3c6c03e9861ca3b4be6bc776a", + "Requirements": [ + "Biostrings", + "DBI", + "IRanges", + "RSQLite", + "S4Vectors", + "oligo", + "oligoClasses" + ] + }, + "pd.drogene.1.1.st": { + "Package": "pd.drogene.1.1.st", + "Version": "3.12.0", + "Source": "Bioconductor", + "Hash": "a07e8f1ec3bda92e61da44b78168d897", + "Requirements": [ + "Biostrings", + "DBI", + "IRanges", + "RSQLite", + "S4Vectors", + "oligo", + "oligoClasses" + ] + }, + "pd.drosgenome1": { + "Package": "pd.drosgenome1", + "Version": "3.12.0", + "Source": "Bioconductor", + "Hash": "55912d30ef52adadd16b513173d81c0c", + "Requirements": [ + "Biostrings", + "DBI", + "IRanges", + "RSQLite", + "S4Vectors", + "oligo", + "oligoClasses" + ] + }, + "pd.drosophila.2": { + "Package": "pd.drosophila.2", + "Version": "3.12.0", + "Source": "Bioconductor", + "Hash": "59583c4005783ccc32b122105bd549f8", + "Requirements": [ + "Biostrings", + "DBI", + "IRanges", + "RSQLite", + "S4Vectors", + "oligo", + "oligoClasses" + ] + }, + "pd.e.coli.2": { + "Package": "pd.e.coli.2", + "Version": "3.12.0", + "Source": "Bioconductor", + "Hash": "896e06201d209d0d1c7cea0945230fe0", + "Requirements": [ + "Biostrings", + "DBI", + "IRanges", + "RSQLite", + "S4Vectors", + "oligo", + "oligoClasses" + ] + }, + "pd.ecoli": { + "Package": "pd.ecoli", + "Version": "3.12.0", + "Source": "Bioconductor", + "Hash": "ae2e68783e7026b1a93f7e6378c121a7", + "Requirements": [ + "Biostrings", + "DBI", + "IRanges", + "RSQLite", + "S4Vectors", + "oligo", + "oligoClasses" + ] + }, + "pd.ecoli.asv2": { + "Package": "pd.ecoli.asv2", + "Version": "3.12.0", + "Source": "Bioconductor", + "Hash": "b69d425bb7519135bacfcf10f64caddb", + "Requirements": [ + "Biostrings", + "DBI", + "IRanges", + "RSQLite", + "S4Vectors", + "oligo", + "oligoClasses" + ] + }, + "pd.elegene.1.0.st": { + "Package": "pd.elegene.1.0.st", + "Version": "3.12.0", + "Source": "Bioconductor", + "Hash": "dd05e38a55833ed4c9e5240daa421b7e", + "Requirements": [ + "Biostrings", + "DBI", + "IRanges", + "RSQLite", + "S4Vectors", + "oligo", + "oligoClasses" + ] + }, + "pd.elegene.1.1.st": { + "Package": "pd.elegene.1.1.st", + "Version": "3.12.0", + "Source": "Bioconductor", + "Hash": "3d7c4efc8498eebb4958b6d34be98fe9", + "Requirements": [ + "Biostrings", + "DBI", + "IRanges", + "RSQLite", + "S4Vectors", + "oligo", + "oligoClasses" + ] + }, + "pd.equgene.1.0.st": { + "Package": "pd.equgene.1.0.st", + "Version": "3.12.0", + "Source": "Bioconductor", + "Hash": "a4b517c3216ef93b07b4c58cdad659c8", + "Requirements": [ + "Biostrings", + "DBI", + "IRanges", + "RSQLite", + "S4Vectors", + "oligo", + "oligoClasses" + ] + }, + "pd.equgene.1.1.st": { + "Package": "pd.equgene.1.1.st", + "Version": "3.12.0", + "Source": "Bioconductor", + "Hash": "27163e1db034ead4212adaabad1f7f5b", + "Requirements": [ + "Biostrings", + "DBI", + "IRanges", + "RSQLite", + "S4Vectors", + "oligo", + "oligoClasses" + ] + }, + "pd.feinberg.hg18.me.hx1": { + "Package": "pd.feinberg.hg18.me.hx1", + "Version": "0.99.3", + "Source": "Bioconductor", + "Hash": "4a5046b9eaff9c8bfdbbb32d80bf0427", + "Requirements": [ + "Biostrings", + "DBI", + "IRanges", + "RSQLite", + "oligo", + "oligoClasses" + ] + }, + "pd.feinberg.mm8.me.hx1": { + "Package": "pd.feinberg.mm8.me.hx1", + "Version": "0.99.3", + "Source": "Bioconductor", + "Hash": "dc5f65af57e55e62a60df469ccadd282", + "Requirements": [ + "Biostrings", + "DBI", + "IRanges", + "RSQLite", + "oligo", + "oligoClasses" + ] + }, + "pd.felgene.1.0.st": { + "Package": "pd.felgene.1.0.st", + "Version": "3.12.0", + "Source": "Bioconductor", + "Hash": "c97bf3bffe58673156f8420b238acf98", + "Requirements": [ + "Biostrings", + "DBI", + "IRanges", + "RSQLite", + "S4Vectors", + "oligo", + "oligoClasses" + ] + }, + "pd.felgene.1.1.st": { + "Package": "pd.felgene.1.1.st", + "Version": "3.12.0", + "Source": "Bioconductor", + "Hash": "1d01331a51389db843697f391965f271", + "Requirements": [ + "Biostrings", + "DBI", + "IRanges", + "RSQLite", + "S4Vectors", + "oligo", + "oligoClasses" + ] + }, + "pd.fingene.1.0.st": { + "Package": "pd.fingene.1.0.st", + "Version": "3.12.0", + "Source": "Bioconductor", + "Hash": "601b5b660eda40bdb6be31aaac16250c", + "Requirements": [ + "Biostrings", + "DBI", + "IRanges", + "RSQLite", + "S4Vectors", + "oligo", + "oligoClasses" + ] + }, + "pd.fingene.1.1.st": { + "Package": "pd.fingene.1.1.st", + "Version": "3.12.0", + "Source": "Bioconductor", + "Hash": "babd5432001e080550f7611b1988338d", + "Requirements": [ + "Biostrings", + "DBI", + "IRanges", + "RSQLite", + "S4Vectors", + "oligo", + "oligoClasses" + ] + }, + "pd.genomewidesnp.5": { + "Package": "pd.genomewidesnp.5", + "Version": "3.14.1", + "Source": "Bioconductor", + "Hash": "1489b56df1d7e09795a14b10ed4c7a40", + "Requirements": [ + "Biostrings", + "DBI", + "IRanges", + "RSQLite", + "S4Vectors", + "oligo", + "oligoClasses" + ] + }, + "pd.genomewidesnp.6": { + "Package": "pd.genomewidesnp.6", + "Version": "3.14.1", + "Source": "Bioconductor", + "Hash": "7d354c2b21dc9b9c0d3e0514a9ab069d", + "Requirements": [ + "Biostrings", + "DBI", + "IRanges", + "RSQLite", + "S4Vectors", + "oligo", + "oligoClasses" + ] + }, + "pd.guigene.1.0.st": { + "Package": "pd.guigene.1.0.st", + "Version": "3.12.0", + "Source": "Bioconductor", + "Hash": "0197bfaf8d9d5b38a882154060ca4091", + "Requirements": [ + "Biostrings", + "DBI", + "IRanges", + "RSQLite", + "S4Vectors", + "oligo", + "oligoClasses" + ] + }, + "pd.guigene.1.1.st": { + "Package": "pd.guigene.1.1.st", + "Version": "3.12.0", + "Source": "Bioconductor", + "Hash": "d6dc551e8b56cb13603a5b62e466c203", + "Requirements": [ + "Biostrings", + "DBI", + "IRanges", + "RSQLite", + "S4Vectors", + "oligo", + "oligoClasses" + ] + }, + "pd.hc.g110": { + "Package": "pd.hc.g110", + "Version": "3.12.0", + "Source": "Bioconductor", + "Hash": "828558c354b1ab66fd1d8cac76fe78ee", + "Requirements": [ + "Biostrings", + "DBI", + "IRanges", + "RSQLite", + "S4Vectors", + "oligo", + "oligoClasses" + ] + }, + "pd.hg.focus": { + "Package": "pd.hg.focus", + "Version": "3.12.0", + "Source": "Bioconductor", + "Hash": "2774b8238ee043a11018dafa1af42f1a", + "Requirements": [ + "Biostrings", + "DBI", + "IRanges", + "RSQLite", + "S4Vectors", + "oligo", + "oligoClasses" + ] + }, + "pd.hg.u133.plus.2": { + "Package": "pd.hg.u133.plus.2", + "Version": "3.12.0", + "Source": "Bioconductor", + "Hash": "848b0566554c7c4fff45d7ee4b6e75b4", + "Requirements": [ + "Biostrings", + "DBI", + "IRanges", + "RSQLite", + "S4Vectors", + "oligo", + "oligoClasses" + ] + }, + "pd.hg.u133a": { + "Package": "pd.hg.u133a", + "Version": "3.12.0", + "Source": "Bioconductor", + "Hash": "bbecde18cad9c4542c0a5f468287c4a5", + "Requirements": [ + "Biostrings", + "DBI", + "IRanges", + "RSQLite", + "S4Vectors", + "oligo", + "oligoClasses" + ] + }, + "pd.hg.u133a.2": { + "Package": "pd.hg.u133a.2", + "Version": "3.12.0", + "Source": "Bioconductor", + "Hash": "be9315fd0552936789fd9568ad619348", + "Requirements": [ + "Biostrings", + "DBI", + "IRanges", + "RSQLite", + "S4Vectors", + "oligo", + "oligoClasses" + ] + }, + "pd.hg.u133a.tag": { + "Package": "pd.hg.u133a.tag", + "Version": "3.12.0", + "Source": "Bioconductor", + "Hash": "a9042815776d78630a146fa5a4024d29", + "Requirements": [ + "Biostrings", + "DBI", + "IRanges", + "RSQLite", + "S4Vectors", + "oligo", + "oligoClasses" + ] + }, + "pd.hg.u133b": { + "Package": "pd.hg.u133b", + "Version": "3.12.0", + "Source": "Bioconductor", + "Hash": "6747b0e8d19d8dadfc688da01298d953", + "Requirements": [ + "Biostrings", + "DBI", + "IRanges", + "RSQLite", + "S4Vectors", + "oligo", + "oligoClasses" + ] + }, + "pd.hg.u219": { + "Package": "pd.hg.u219", + "Version": "3.12.0", + "Source": "Bioconductor", + "Hash": "88697315a1b5e136908da9fb55b0ace8", + "Requirements": [ + "Biostrings", + "DBI", + "IRanges", + "RSQLite", + "S4Vectors", + "oligo", + "oligoClasses" + ] + }, + "pd.hg.u95a": { + "Package": "pd.hg.u95a", + "Version": "3.12.0", + "Source": "Bioconductor", + "Hash": "454b843b22231e7c466efd1d71e8f0f7", + "Requirements": [ + "Biostrings", + "DBI", + "IRanges", + "RSQLite", + "S4Vectors", + "oligo", + "oligoClasses" + ] + }, + "pd.hg.u95av2": { + "Package": "pd.hg.u95av2", + "Version": "3.12.0", + "Source": "Bioconductor", + "Hash": "4e303d782ca41feb31e92aab0ab12a47", + "Requirements": [ + "Biostrings", + "DBI", + "IRanges", + "RSQLite", + "S4Vectors", + "oligo", + "oligoClasses" + ] + }, + "pd.hg.u95b": { + "Package": "pd.hg.u95b", + "Version": "3.12.0", + "Source": "Bioconductor", + "Hash": "bfc7aa4ad7403a0d699ca3f28a48f1ec", + "Requirements": [ + "Biostrings", + "DBI", + "IRanges", + "RSQLite", + "S4Vectors", + "oligo", + "oligoClasses" + ] + }, + "pd.hg.u95c": { + "Package": "pd.hg.u95c", + "Version": "3.12.0", + "Source": "Bioconductor", + "Hash": "34736e253ea53ba84f32f6909605cc88", + "Requirements": [ + "Biostrings", + "DBI", + "IRanges", + "RSQLite", + "S4Vectors", + "oligo", + "oligoClasses" + ] + }, + "pd.hg.u95d": { + "Package": "pd.hg.u95d", + "Version": "3.12.0", + "Source": "Bioconductor", + "Hash": "f7194cdd4912cf4c9cecd1930ead8ed0", + "Requirements": [ + "Biostrings", + "DBI", + "IRanges", + "RSQLite", + "S4Vectors", + "oligo", + "oligoClasses" + ] + }, + "pd.hg.u95e": { + "Package": "pd.hg.u95e", + "Version": "3.12.0", + "Source": "Bioconductor", + "Hash": "8a43d193465a5087ed3d67f03e5de3fe", + "Requirements": [ + "Biostrings", + "DBI", + "IRanges", + "RSQLite", + "S4Vectors", + "oligo", + "oligoClasses" + ] + }, + "pd.hg18.60mer.expr": { + "Package": "pd.hg18.60mer.expr", + "Version": "3.12.0", + "Source": "Bioconductor", + "Hash": "30224e6414b55cfa7f016d22329dd39e", + "Requirements": [ + "Biostrings", + "DBI", + "IRanges", + "RSQLite", + "S4Vectors", + "oligo", + "oligoClasses" + ] + }, + "pd.ht.hg.u133.plus.pm": { + "Package": "pd.ht.hg.u133.plus.pm", + "Version": "3.12.0", + "Source": "Bioconductor", + "Hash": "1bd584f01fb0c0873e52a12bf74e0a76", + "Requirements": [ + "Biostrings", + "DBI", + "IRanges", + "RSQLite", + "S4Vectors", + "oligo", + "oligoClasses" + ] + }, + "pd.ht.hg.u133a": { + "Package": "pd.ht.hg.u133a", + "Version": "3.12.0", + "Source": "Bioconductor", + "Hash": "a517bb1f4b2801f6fcb358cef89e3c43", + "Requirements": [ + "Biostrings", + "DBI", + "IRanges", + "RSQLite", + "S4Vectors", + "oligo", + "oligoClasses" + ] + }, + "pd.ht.mg.430a": { + "Package": "pd.ht.mg.430a", + "Version": "3.12.0", + "Source": "Bioconductor", + "Hash": "071a7f9de3e5f146d23da96660968d7b", + "Requirements": [ + "Biostrings", + "DBI", + "IRanges", + "RSQLite", + "S4Vectors", + "oligo", + "oligoClasses" + ] + }, + "pd.hta.2.0": { + "Package": "pd.hta.2.0", + "Version": "3.12.2", + "Source": "Bioconductor", + "Hash": "6efc1bbeb7bbb66166e37356b9807216", + "Requirements": [ + "Biostrings", + "DBI", + "IRanges", + "RSQLite", + "S4Vectors", + "oligo", + "oligoClasses" + ] + }, + "pd.hu6800": { + "Package": "pd.hu6800", + "Version": "3.12.0", + "Source": "Bioconductor", + "Hash": "c23e01c0846afc22cf6181dd4656d090", + "Requirements": [ + "Biostrings", + "DBI", + "IRanges", + "RSQLite", + "S4Vectors", + "oligo", + "oligoClasses" + ] + }, + "pd.huex.1.0.st.v2": { + "Package": "pd.huex.1.0.st.v2", + "Version": "3.14.1", + "Source": "Bioconductor", + "Hash": "6ed65a58c116d39085afe62bf02b9621", + "Requirements": [ + "Biostrings", + "DBI", + "IRanges", + "RSQLite", + "S4Vectors", + "oligo", + "oligoClasses" + ] + }, + "pd.hugene.1.0.st.v1": { + "Package": "pd.hugene.1.0.st.v1", + "Version": "3.14.1", + "Source": "Bioconductor", + "Hash": "e56491718a5b69a6ddfc6b56c9c60d1c", + "Requirements": [ + "Biostrings", + "DBI", + "IRanges", + "RSQLite", + "S4Vectors", + "oligo", + "oligoClasses" + ] + }, + "pd.hugene.1.1.st.v1": { + "Package": "pd.hugene.1.1.st.v1", + "Version": "3.14.1", + "Source": "Bioconductor", + "Hash": "6378db1c5aac356650fe7ad19311cce8", + "Requirements": [ + "Biostrings", + "DBI", + "IRanges", + "RSQLite", + "S4Vectors", + "oligo", + "oligoClasses" + ] + }, + "pd.hugene.2.0.st": { + "Package": "pd.hugene.2.0.st", + "Version": "3.14.1", + "Source": "Bioconductor", + "Hash": "0613934bbd5f2603938c5d9bcd3af9bd", + "Requirements": [ + "Biostrings", + "DBI", + "IRanges", + "RSQLite", + "S4Vectors", + "oligo", + "oligoClasses" + ] + }, + "pd.hugene.2.1.st": { + "Package": "pd.hugene.2.1.st", + "Version": "3.14.1", + "Source": "Bioconductor", + "Hash": "6579531e878ad16ce4ec572293af2970", + "Requirements": [ + "Biostrings", + "DBI", + "IRanges", + "RSQLite", + "S4Vectors", + "oligo", + "oligoClasses" + ] + }, + "pd.maize": { + "Package": "pd.maize", + "Version": "3.12.0", + "Source": "Bioconductor", + "Hash": "a8df1cd9981fe039dac5557615f16d08", + "Requirements": [ + "Biostrings", + "DBI", + "IRanges", + "RSQLite", + "S4Vectors", + "oligo", + "oligoClasses" + ] + }, + "pd.mapping250k.nsp": { + "Package": "pd.mapping250k.nsp", + "Version": "3.12.0", + "Source": "Bioconductor", + "Hash": "f3fafdb6002e60727bbd9b402451eb52", + "Requirements": [ + "Biostrings", + "DBI", + "IRanges", + "RSQLite", + "S4Vectors", + "oligo", + "oligoClasses" + ] + }, + "pd.mapping250k.sty": { + "Package": "pd.mapping250k.sty", + "Version": "3.12.0", + "Source": "Bioconductor", + "Hash": "814ebf2048086214328ce0c572ecb5d4", + "Requirements": [ + "Biostrings", + "DBI", + "IRanges", + "RSQLite", + "S4Vectors", + "oligo", + "oligoClasses" + ] + }, + "pd.mapping50k.hind240": { + "Package": "pd.mapping50k.hind240", + "Version": "3.12.0", + "Source": "Bioconductor", + "Hash": "8bd0b82b63964fe6e2fd026c31464a75", + "Requirements": [ + "Biostrings", + "DBI", + "IRanges", + "RSQLite", + "S4Vectors", + "oligo", + "oligoClasses" + ] + }, + "pd.mapping50k.xba240": { + "Package": "pd.mapping50k.xba240", + "Version": "3.12.0", + "Source": "Bioconductor", + "Hash": "18ebcc1f7149528bbab0f4003a076146", + "Requirements": [ + "Biostrings", + "DBI", + "IRanges", + "RSQLite", + "S4Vectors", + "oligo", + "oligoClasses" + ] + }, + "pd.margene.1.0.st": { + "Package": "pd.margene.1.0.st", + "Version": "3.12.0", + "Source": "Bioconductor", + "Hash": "e184cc4ff9a6b544c8efce48a412d65b", + "Requirements": [ + "Biostrings", + "DBI", + "IRanges", + "RSQLite", + "S4Vectors", + "oligo", + "oligoClasses" + ] + }, + "pd.margene.1.1.st": { + "Package": "pd.margene.1.1.st", + "Version": "3.12.0", + "Source": "Bioconductor", + "Hash": "c3618171b02b1b8a29861a6433f00712", + "Requirements": [ + "Biostrings", + "DBI", + "IRanges", + "RSQLite", + "S4Vectors", + "oligo", + "oligoClasses" + ] + }, + "pd.medgene.1.0.st": { + "Package": "pd.medgene.1.0.st", + "Version": "3.12.0", + "Source": "Bioconductor", + "Hash": "60b9e246e8add38acdde0a52a6c5b1f6", + "Requirements": [ + "Biostrings", + "DBI", + "IRanges", + "RSQLite", + "S4Vectors", + "oligo", + "oligoClasses" + ] + }, + "pd.medgene.1.1.st": { + "Package": "pd.medgene.1.1.st", + "Version": "3.12.0", + "Source": "Bioconductor", + "Hash": "94211f97dcfffee35d94fa547b037671", + "Requirements": [ + "Biostrings", + "DBI", + "IRanges", + "RSQLite", + "S4Vectors", + "oligo", + "oligoClasses" + ] + }, + "pd.medicago": { + "Package": "pd.medicago", + "Version": "3.12.0", + "Source": "Bioconductor", + "Hash": "472ff892c995f42d475a6feeba2d89b0", + "Requirements": [ + "Biostrings", + "DBI", + "IRanges", + "RSQLite", + "S4Vectors", + "oligo", + "oligoClasses" + ] + }, + "pd.mg.u74a": { + "Package": "pd.mg.u74a", + "Version": "3.12.0", + "Source": "Bioconductor", + "Hash": "201381c56dbd99e8f69f9f10c7dd312a", + "Requirements": [ + "Biostrings", + "DBI", + "IRanges", + "RSQLite", + "S4Vectors", + "oligo", + "oligoClasses" + ] + }, + "pd.mg.u74av2": { + "Package": "pd.mg.u74av2", + "Version": "3.12.0", + "Source": "Bioconductor", + "Hash": "26d99b1297dbcf64e1366c81e19ed7a6", + "Requirements": [ + "Biostrings", + "DBI", + "IRanges", + "RSQLite", + "S4Vectors", + "oligo", + "oligoClasses" + ] + }, + "pd.mg.u74b": { + "Package": "pd.mg.u74b", + "Version": "3.12.0", + "Source": "Bioconductor", + "Hash": "2e530eee736305e00489198c95bb8280", + "Requirements": [ + "Biostrings", + "DBI", + "IRanges", + "RSQLite", + "S4Vectors", + "oligo", + "oligoClasses" + ] + }, + "pd.mg.u74bv2": { + "Package": "pd.mg.u74bv2", + "Version": "3.12.0", + "Source": "Bioconductor", + "Hash": "14072516062c0082854cc76f8e7df6c2", + "Requirements": [ + "Biostrings", + "DBI", + "IRanges", + "RSQLite", + "S4Vectors", + "oligo", + "oligoClasses" + ] + }, + "pd.mg.u74c": { + "Package": "pd.mg.u74c", + "Version": "3.12.0", + "Source": "Bioconductor", + "Hash": "e10560072e988ae7542833a5a66e24a2", + "Requirements": [ + "Biostrings", + "DBI", + "IRanges", + "RSQLite", + "S4Vectors", + "oligo", + "oligoClasses" + ] + }, + "pd.mg.u74cv2": { + "Package": "pd.mg.u74cv2", + "Version": "3.12.0", + "Source": "Bioconductor", + "Hash": "763d01111316fa41a5d5157ca72146d3", + "Requirements": [ + "Biostrings", + "DBI", + "IRanges", + "RSQLite", + "S4Vectors", + "oligo", + "oligoClasses" + ] + }, + "pd.mirna.1.0": { + "Package": "pd.mirna.1.0", + "Version": "3.12.0", + "Source": "Bioconductor", + "Hash": "2f3268bd844cef62853a81be4e2f6a82", + "Requirements": [ + "Biostrings", + "DBI", + "IRanges", + "RSQLite", + "S4Vectors", + "oligo", + "oligoClasses" + ] + }, + "pd.mirna.2.0": { + "Package": "pd.mirna.2.0", + "Version": "3.12.0", + "Source": "Bioconductor", + "Hash": "866660498b76471d4150c730f7e0b3f8", + "Requirements": [ + "Biostrings", + "DBI", + "IRanges", + "RSQLite", + "S4Vectors", + "oligo", + "oligoClasses" + ] + }, + "pd.mirna.3.0": { + "Package": "pd.mirna.3.0", + "Version": "3.12.0", + "Source": "Bioconductor", + "Hash": "0f835755831d62094151c1b9c6a718fd", + "Requirements": [ + "Biostrings", + "DBI", + "IRanges", + "RSQLite", + "S4Vectors", + "oligo", + "oligoClasses" + ] + }, + "pd.mirna.3.1": { + "Package": "pd.mirna.3.1", + "Version": "3.8.1", + "Source": "Bioconductor", + "Hash": "dd0758c5c37379e389c9417c82e8e334", + "Requirements": [ + "Biostrings", + "DBI", + "IRanges", + "RSQLite", + "oligo", + "oligoClasses" + ] + }, + "pd.mirna.4.0": { + "Package": "pd.mirna.4.0", + "Version": "3.12.0", + "Source": "Bioconductor", + "Hash": "be6efd9d4dacfccbd05248b69dfab30f", + "Requirements": [ + "Biostrings", + "DBI", + "IRanges", + "RSQLite", + "S4Vectors", + "oligo", + "oligoClasses" + ] + }, + "pd.moe430a": { + "Package": "pd.moe430a", + "Version": "3.12.0", + "Source": "Bioconductor", + "Hash": "3dfda2542f7dbe9aedb68dba8c2660c3", + "Requirements": [ + "Biostrings", + "DBI", + "IRanges", + "RSQLite", + "S4Vectors", + "oligo", + "oligoClasses" + ] + }, + "pd.moe430b": { + "Package": "pd.moe430b", + "Version": "3.12.0", + "Source": "Bioconductor", + "Hash": "3ea40e238da7fd16fe85c34b169af914", + "Requirements": [ + "Biostrings", + "DBI", + "IRanges", + "RSQLite", + "S4Vectors", + "oligo", + "oligoClasses" + ] + }, + "pd.moex.1.0.st.v1": { + "Package": "pd.moex.1.0.st.v1", + "Version": "3.14.1", + "Source": "Bioconductor", + "Hash": "55a68c024d3e70030ba425863b9ea3b4", + "Requirements": [ + "Biostrings", + "DBI", + "IRanges", + "RSQLite", + "S4Vectors", + "oligo", + "oligoClasses" + ] + }, + "pd.mogene.1.0.st.v1": { + "Package": "pd.mogene.1.0.st.v1", + "Version": "3.14.1", + "Source": "Bioconductor", + "Hash": "f2221926975778f4366d8e764f009656", + "Requirements": [ + "Biostrings", + "DBI", + "IRanges", + "RSQLite", + "S4Vectors", + "oligo", + "oligoClasses" + ] + }, + "pd.mogene.1.1.st.v1": { + "Package": "pd.mogene.1.1.st.v1", + "Version": "3.14.1", + "Source": "Bioconductor", + "Hash": "0302be5361adf4c63a2da4b331036c29", + "Requirements": [ + "Biostrings", + "DBI", + "IRanges", + "RSQLite", + "S4Vectors", + "oligo", + "oligoClasses" + ] + }, + "pd.mogene.2.0.st": { + "Package": "pd.mogene.2.0.st", + "Version": "3.14.1", + "Source": "Bioconductor", + "Hash": "3c2bf1a3c259599f2bc1c2cbc738c3d8", + "Requirements": [ + "Biostrings", + "DBI", + "IRanges", + "RSQLite", + "S4Vectors", + "oligo", + "oligoClasses" + ] + }, + "pd.mogene.2.1.st": { + "Package": "pd.mogene.2.1.st", + "Version": "3.14.1", + "Source": "Bioconductor", + "Hash": "cd872a9007316eac76335bca38e466f5", + "Requirements": [ + "Biostrings", + "DBI", + "IRanges", + "RSQLite", + "S4Vectors", + "oligo", + "oligoClasses" + ] + }, + "pd.mouse430.2": { + "Package": "pd.mouse430.2", + "Version": "3.12.0", + "Source": "Bioconductor", + "Hash": "c770d88aac6375fa5b1a5bce80e83025", + "Requirements": [ + "Biostrings", + "DBI", + "IRanges", + "RSQLite", + "S4Vectors", + "oligo", + "oligoClasses" + ] + }, + "pd.mouse430a.2": { + "Package": "pd.mouse430a.2", + "Version": "3.12.0", + "Source": "Bioconductor", + "Hash": "26470c816f5b4ad6b5e2fb3b97ddc593", + "Requirements": [ + "Biostrings", + "DBI", + "IRanges", + "RSQLite", + "S4Vectors", + "oligo", + "oligoClasses" + ] + }, + "pd.mta.1.0": { + "Package": "pd.mta.1.0", + "Version": "3.12.0", + "Source": "Bioconductor", + "Hash": "de2d20403bfe44fb47c22583ebb766f5", + "Requirements": [ + "Biostrings", + "DBI", + "IRanges", + "RSQLite", + "S4Vectors", + "oligo", + "oligoClasses" + ] + }, + "pd.mu11ksuba": { + "Package": "pd.mu11ksuba", + "Version": "3.12.0", + "Source": "Bioconductor", + "Hash": "b0eeaa8c13b7fbf64214c52122c582bd", + "Requirements": [ + "Biostrings", + "DBI", + "IRanges", + "RSQLite", + "S4Vectors", + "oligo", + "oligoClasses" + ] + }, + "pd.mu11ksubb": { + "Package": "pd.mu11ksubb", + "Version": "3.12.0", + "Source": "Bioconductor", + "Hash": "84c54cc4e27e404b2f7fb6cd602f2601", + "Requirements": [ + "Biostrings", + "DBI", + "IRanges", + "RSQLite", + "S4Vectors", + "oligo", + "oligoClasses" + ] + }, + "pd.nugo.hs1a520180": { + "Package": "pd.nugo.hs1a520180", + "Version": "3.4.0", + "Source": "Bioconductor", + "Hash": "01ab5af77c42e0e5bc553ba6bc7d6e0d", + "Requirements": [ + "Biostrings", + "DBI", + "IRanges", + "RSQLite", + "S4Vectors", + "oligo", + "oligoClasses" + ] + }, + "pd.nugo.mm1a520177": { + "Package": "pd.nugo.mm1a520177", + "Version": "3.4.0", + "Source": "Bioconductor", + "Hash": "39f360fb191a898f870cf947dacf5457", + "Requirements": [ + "Biostrings", + "DBI", + "IRanges", + "RSQLite", + "S4Vectors", + "oligo", + "oligoClasses" + ] + }, + "pd.ovigene.1.0.st": { + "Package": "pd.ovigene.1.0.st", + "Version": "3.12.0", + "Source": "Bioconductor", + "Hash": "5a55ca184be90dcb9f15990a9b04e7a7", + "Requirements": [ + "Biostrings", + "DBI", + "IRanges", + "RSQLite", + "S4Vectors", + "oligo", + "oligoClasses" + ] + }, + "pd.ovigene.1.1.st": { + "Package": "pd.ovigene.1.1.st", + "Version": "3.12.0", + "Source": "Bioconductor", + "Hash": "bfbec7a969c1ebb819aedecac8ee906a", + "Requirements": [ + "Biostrings", + "DBI", + "IRanges", + "RSQLite", + "S4Vectors", + "oligo", + "oligoClasses" + ] + }, + "pd.pae.g1a": { + "Package": "pd.pae.g1a", + "Version": "3.12.0", + "Source": "Bioconductor", + "Hash": "215764ad2c872aa5211e7a2f72417858", + "Requirements": [ + "Biostrings", + "DBI", + "IRanges", + "RSQLite", + "S4Vectors", + "oligo", + "oligoClasses" + ] + }, + "pd.plasmodium.anopheles": { + "Package": "pd.plasmodium.anopheles", + "Version": "3.12.0", + "Source": "Bioconductor", + "Hash": "64b1f07b7b6e7e0de18ef445ca125afb", + "Requirements": [ + "Biostrings", + "DBI", + "IRanges", + "RSQLite", + "S4Vectors", + "oligo", + "oligoClasses" + ] + }, + "pd.poplar": { + "Package": "pd.poplar", + "Version": "3.12.0", + "Source": "Bioconductor", + "Hash": "6a2564b87de65479a54377c2fcc24d3c", + "Requirements": [ + "Biostrings", + "DBI", + "IRanges", + "RSQLite", + "S4Vectors", + "oligo", + "oligoClasses" + ] + }, + "pd.porcine": { + "Package": "pd.porcine", + "Version": "3.12.0", + "Source": "Bioconductor", + "Hash": "1e1a763d1fa6ed3ebf3f43323fbe3377", + "Requirements": [ + "Biostrings", + "DBI", + "IRanges", + "RSQLite", + "S4Vectors", + "oligo", + "oligoClasses" + ] + }, + "pd.porgene.1.0.st": { + "Package": "pd.porgene.1.0.st", + "Version": "3.12.0", + "Source": "Bioconductor", + "Hash": "d7a8e92838ad5c5ec10e7fbdfe70aeee", + "Requirements": [ + "Biostrings", + "DBI", + "IRanges", + "RSQLite", + "S4Vectors", + "oligo", + "oligoClasses" + ] + }, + "pd.porgene.1.1.st": { + "Package": "pd.porgene.1.1.st", + "Version": "3.12.0", + "Source": "Bioconductor", + "Hash": "46079b207fb8e441220027d0c03c4c00", + "Requirements": [ + "Biostrings", + "DBI", + "IRanges", + "RSQLite", + "S4Vectors", + "oligo", + "oligoClasses" + ] + }, + "pd.rabgene.1.0.st": { + "Package": "pd.rabgene.1.0.st", + "Version": "3.12.0", + "Source": "Bioconductor", + "Hash": "59255bd928ecedb83bfd3a6b953c9668", + "Requirements": [ + "Biostrings", + "DBI", + "IRanges", + "RSQLite", + "S4Vectors", + "oligo", + "oligoClasses" + ] + }, + "pd.rabgene.1.1.st": { + "Package": "pd.rabgene.1.1.st", + "Version": "3.12.0", + "Source": "Bioconductor", + "Hash": "b863fdcabd0bd7c8e3a55022b7c75af1", + "Requirements": [ + "Biostrings", + "DBI", + "IRanges", + "RSQLite", + "S4Vectors", + "oligo", + "oligoClasses" + ] + }, + "pd.rae230a": { + "Package": "pd.rae230a", + "Version": "3.12.0", + "Source": "Bioconductor", + "Hash": "b08a6dd291da79df3d6d3e4cb6613ef8", + "Requirements": [ + "Biostrings", + "DBI", + "IRanges", + "RSQLite", + "S4Vectors", + "oligo", + "oligoClasses" + ] + }, + "pd.rae230b": { + "Package": "pd.rae230b", + "Version": "3.12.0", + "Source": "Bioconductor", + "Hash": "adc00bfdcf464341f7fc33545751f86f", + "Requirements": [ + "Biostrings", + "DBI", + "IRanges", + "RSQLite", + "S4Vectors", + "oligo", + "oligoClasses" + ] + }, + "pd.raex.1.0.st.v1": { + "Package": "pd.raex.1.0.st.v1", + "Version": "3.14.1", + "Source": "Bioconductor", + "Hash": "a5e9d042b6723ea1c97af9ff870d4b60", + "Requirements": [ + "Biostrings", + "DBI", + "IRanges", + "RSQLite", + "S4Vectors", + "oligo", + "oligoClasses" + ] + }, + "pd.ragene.1.0.st.v1": { + "Package": "pd.ragene.1.0.st.v1", + "Version": "3.14.1", + "Source": "Bioconductor", + "Hash": "0733d14b3698f46a5e081c66e5f4681b", + "Requirements": [ + "Biostrings", + "DBI", + "IRanges", + "RSQLite", + "S4Vectors", + "oligo", + "oligoClasses" + ] + }, + "pd.ragene.1.1.st.v1": { + "Package": "pd.ragene.1.1.st.v1", + "Version": "3.14.1", + "Source": "Bioconductor", + "Hash": "e4aaea733c24e4e9bf86a91f52eeacba", + "Requirements": [ + "Biostrings", + "DBI", + "IRanges", + "RSQLite", + "S4Vectors", + "oligo", + "oligoClasses" + ] + }, + "pd.ragene.2.0.st": { + "Package": "pd.ragene.2.0.st", + "Version": "3.14.1", + "Source": "Bioconductor", + "Hash": "c0ed2ea86c30cecd2333b70b2e3975a2", + "Requirements": [ + "Biostrings", + "DBI", + "IRanges", + "RSQLite", + "S4Vectors", + "oligo", + "oligoClasses" + ] + }, + "pd.ragene.2.1.st": { + "Package": "pd.ragene.2.1.st", + "Version": "3.14.1", + "Source": "Bioconductor", + "Hash": "977d7727c9be56a81ec5931c556bcf24", + "Requirements": [ + "Biostrings", + "DBI", + "IRanges", + "RSQLite", + "S4Vectors", + "oligo", + "oligoClasses" + ] + }, + "pd.rat230.2": { + "Package": "pd.rat230.2", + "Version": "3.12.0", + "Source": "Bioconductor", + "Hash": "8eafcb38c9203f1c02f486c89edcbedb", + "Requirements": [ + "Biostrings", + "DBI", + "IRanges", + "RSQLite", + "S4Vectors", + "oligo", + "oligoClasses" + ] + }, + "pd.rcngene.1.0.st": { + "Package": "pd.rcngene.1.0.st", + "Version": "3.12.0", + "Source": "Bioconductor", + "Hash": "6ca9e12b9fe4389009d8a7f3411466e2", + "Requirements": [ + "Biostrings", + "DBI", + "IRanges", + "RSQLite", + "S4Vectors", + "oligo", + "oligoClasses" + ] + }, + "pd.rcngene.1.1.st": { + "Package": "pd.rcngene.1.1.st", + "Version": "3.12.0", + "Source": "Bioconductor", + "Hash": "37f0b72d85d9079bef6f4bd6fb262eaf", + "Requirements": [ + "Biostrings", + "DBI", + "IRanges", + "RSQLite", + "S4Vectors", + "oligo", + "oligoClasses" + ] + }, + "pd.rg.u34a": { + "Package": "pd.rg.u34a", + "Version": "3.12.0", + "Source": "Bioconductor", + "Hash": "53a893071aca38d467b28ce71cc91dbf", + "Requirements": [ + "Biostrings", + "DBI", + "IRanges", + "RSQLite", + "S4Vectors", + "oligo", + "oligoClasses" + ] + }, + "pd.rg.u34b": { + "Package": "pd.rg.u34b", + "Version": "3.12.0", + "Source": "Bioconductor", + "Hash": "69813d646af4d08fb64c9c1df3e9ce5f", + "Requirements": [ + "Biostrings", + "DBI", + "IRanges", + "RSQLite", + "S4Vectors", + "oligo", + "oligoClasses" + ] + }, + "pd.rg.u34c": { + "Package": "pd.rg.u34c", + "Version": "3.12.0", + "Source": "Bioconductor", + "Hash": "9c24d0128dc81bc04780d1270de1a440", + "Requirements": [ + "Biostrings", + "DBI", + "IRanges", + "RSQLite", + "S4Vectors", + "oligo", + "oligoClasses" + ] + }, + "pd.rhegene.1.0.st": { + "Package": "pd.rhegene.1.0.st", + "Version": "3.12.0", + "Source": "Bioconductor", + "Hash": "b435e86c98391f4fb708b53ecfbef972", + "Requirements": [ + "Biostrings", + "DBI", + "IRanges", + "RSQLite", + "S4Vectors", + "oligo", + "oligoClasses" + ] + }, + "pd.rhegene.1.1.st": { + "Package": "pd.rhegene.1.1.st", + "Version": "3.12.0", + "Source": "Bioconductor", + "Hash": "830b21fdb9776cc7f584f659cc975eec", + "Requirements": [ + "Biostrings", + "DBI", + "IRanges", + "RSQLite", + "S4Vectors", + "oligo", + "oligoClasses" + ] + }, + "pd.rhesus": { + "Package": "pd.rhesus", + "Version": "3.12.0", + "Source": "Bioconductor", + "Hash": "c086f7ba9c53ddc4ac837c905d95aad2", + "Requirements": [ + "Biostrings", + "DBI", + "IRanges", + "RSQLite", + "S4Vectors", + "oligo", + "oligoClasses" + ] + }, + "pd.rice": { + "Package": "pd.rice", + "Version": "3.12.0", + "Source": "Bioconductor", + "Hash": "d20989134682192c94ca350658b4aec2", + "Requirements": [ + "Biostrings", + "DBI", + "IRanges", + "RSQLite", + "S4Vectors", + "oligo", + "oligoClasses" + ] + }, + "pd.rjpgene.1.0.st": { + "Package": "pd.rjpgene.1.0.st", + "Version": "3.12.0", + "Source": "Bioconductor", + "Hash": "38dc751c18dafee2a441f40056828580", + "Requirements": [ + "Biostrings", + "DBI", + "IRanges", + "RSQLite", + "S4Vectors", + "oligo", + "oligoClasses" + ] + }, + "pd.rjpgene.1.1.st": { + "Package": "pd.rjpgene.1.1.st", + "Version": "3.12.0", + "Source": "Bioconductor", + "Hash": "a3ac441163d4a7322b687d02ef7dff1c", + "Requirements": [ + "Biostrings", + "DBI", + "IRanges", + "RSQLite", + "S4Vectors", + "oligo", + "oligoClasses" + ] + }, + "pd.rn.u34": { + "Package": "pd.rn.u34", + "Version": "3.12.0", + "Source": "Bioconductor", + "Hash": "a22b1c43976cb7068686d0d2a599c740", + "Requirements": [ + "Biostrings", + "DBI", + "IRanges", + "RSQLite", + "S4Vectors", + "oligo", + "oligoClasses" + ] + }, + "pd.rta.1.0": { + "Package": "pd.rta.1.0", + "Version": "3.12.2", + "Source": "Bioconductor", + "Hash": "23f045e2e690d3868451d761837285a2", + "Requirements": [ + "Biostrings", + "DBI", + "IRanges", + "RSQLite", + "S4Vectors", + "oligo", + "oligoClasses" + ] + }, + "pd.rusgene.1.0.st": { + "Package": "pd.rusgene.1.0.st", + "Version": "3.12.0", + "Source": "Bioconductor", + "Hash": "9574263c96820c71900ef16e791658cd", + "Requirements": [ + "Biostrings", + "DBI", + "IRanges", + "RSQLite", + "S4Vectors", + "oligo", + "oligoClasses" + ] + }, + "pd.rusgene.1.1.st": { + "Package": "pd.rusgene.1.1.st", + "Version": "3.12.0", + "Source": "Bioconductor", + "Hash": "eabc8cd5788b3e5c13b0571b88f7c1fd", + "Requirements": [ + "Biostrings", + "DBI", + "IRanges", + "RSQLite", + "S4Vectors", + "oligo", + "oligoClasses" + ] + }, + "pd.s.aureus": { + "Package": "pd.s.aureus", + "Version": "3.12.0", + "Source": "Bioconductor", + "Hash": "07d98e6048c0d0a91245cae86a6b0385", + "Requirements": [ + "Biostrings", + "DBI", + "IRanges", + "RSQLite", + "S4Vectors", + "oligo", + "oligoClasses" + ] + }, + "pd.soybean": { + "Package": "pd.soybean", + "Version": "3.12.0", + "Source": "Bioconductor", + "Hash": "937fa075ce784fad770f8a21b68617a6", + "Requirements": [ + "Biostrings", + "DBI", + "IRanges", + "RSQLite", + "S4Vectors", + "oligo", + "oligoClasses" + ] + }, + "pd.soygene.1.0.st": { + "Package": "pd.soygene.1.0.st", + "Version": "3.12.0", + "Source": "Bioconductor", + "Hash": "e8665453335633c8454b131a308eec27", + "Requirements": [ + "Biostrings", + "DBI", + "IRanges", + "RSQLite", + "S4Vectors", + "oligo", + "oligoClasses" + ] + }, + "pd.soygene.1.1.st": { + "Package": "pd.soygene.1.1.st", + "Version": "3.12.0", + "Source": "Bioconductor", + "Hash": "f0afcd1ae6d9b2e3348ad02c8bd5b7d1", + "Requirements": [ + "Biostrings", + "DBI", + "IRanges", + "RSQLite", + "S4Vectors", + "oligo", + "oligoClasses" + ] + }, + "pd.sugar.cane": { + "Package": "pd.sugar.cane", + "Version": "3.12.0", + "Source": "Bioconductor", + "Hash": "2bbc61cd06f67b0c962ba1b6500f9339", + "Requirements": [ + "Biostrings", + "DBI", + "IRanges", + "RSQLite", + "S4Vectors", + "oligo", + "oligoClasses" + ] + }, + "pd.tomato": { + "Package": "pd.tomato", + "Version": "3.12.0", + "Source": "Bioconductor", + "Hash": "d6fd6592faae7b009a6744538c5eca74", + "Requirements": [ + "Biostrings", + "DBI", + "IRanges", + "RSQLite", + "S4Vectors", + "oligo", + "oligoClasses" + ] + }, + "pd.u133.x3p": { + "Package": "pd.u133.x3p", + "Version": "3.12.0", + "Source": "Bioconductor", + "Hash": "d8e93f9787aba181426723464be3aec0", + "Requirements": [ + "Biostrings", + "DBI", + "IRanges", + "RSQLite", + "S4Vectors", + "oligo", + "oligoClasses" + ] + }, + "pd.vitis.vinifera": { + "Package": "pd.vitis.vinifera", + "Version": "3.12.0", + "Source": "Bioconductor", + "Hash": "46c90d3f46397d0a5e22aef96a857e6c", + "Requirements": [ + "Biostrings", + "DBI", + "IRanges", + "RSQLite", + "S4Vectors", + "oligo", + "oligoClasses" + ] + }, + "pd.wheat": { + "Package": "pd.wheat", + "Version": "3.12.0", + "Source": "Bioconductor", + "Hash": "fcf7d7fa792238501b2f7c7f5931985c", + "Requirements": [ + "Biostrings", + "DBI", + "IRanges", + "RSQLite", + "S4Vectors", + "oligo", + "oligoClasses" + ] + }, + "pd.x.laevis.2": { + "Package": "pd.x.laevis.2", + "Version": "3.12.0", + "Source": "Bioconductor", + "Hash": "a669e12d776049b377ceae109b7947e3", + "Requirements": [ + "Biostrings", + "DBI", + "IRanges", + "RSQLite", + "S4Vectors", + "oligo", + "oligoClasses" + ] + }, + "pd.x.tropicalis": { + "Package": "pd.x.tropicalis", + "Version": "3.12.0", + "Source": "Bioconductor", + "Hash": "276bf9487d567b4e7dfd1ea0c0856f74", + "Requirements": [ + "Biostrings", + "DBI", + "IRanges", + "RSQLite", + "S4Vectors", + "oligo", + "oligoClasses" + ] + }, + "pd.xenopus.laevis": { + "Package": "pd.xenopus.laevis", + "Version": "3.12.0", + "Source": "Bioconductor", + "Hash": "38f4924fc343ef2b122d84c87a7d2925", + "Requirements": [ + "Biostrings", + "DBI", + "IRanges", + "RSQLite", + "S4Vectors", + "oligo", + "oligoClasses" + ] + }, + "pd.yeast.2": { + "Package": "pd.yeast.2", + "Version": "3.12.0", + "Source": "Bioconductor", + "Hash": "adce2916c9f381a2e43e19eae91b858f", + "Requirements": [ + "Biostrings", + "DBI", + "IRanges", + "RSQLite", + "S4Vectors", + "oligo", + "oligoClasses" + ] + }, + "pd.yg.s98": { + "Package": "pd.yg.s98", + "Version": "3.12.0", + "Source": "Bioconductor", + "Hash": "bd9af42efd037b14eaaeb6e9359522e5", + "Requirements": [ + "Biostrings", + "DBI", + "IRanges", + "RSQLite", + "S4Vectors", + "oligo", + "oligoClasses" + ] + }, + "pd.zebgene.1.0.st": { + "Package": "pd.zebgene.1.0.st", + "Version": "3.12.0", + "Source": "Bioconductor", + "Hash": "8055ffc0ff24cbf788904f7aa9423b54", + "Requirements": [ + "Biostrings", + "DBI", + "IRanges", + "RSQLite", + "S4Vectors", + "oligo", + "oligoClasses" + ] + }, + "pd.zebgene.1.1.st": { + "Package": "pd.zebgene.1.1.st", + "Version": "3.12.0", + "Source": "Bioconductor", + "Hash": "8535b9d5f4f79a208ce1bc587f6b74e9", + "Requirements": [ + "Biostrings", + "DBI", + "IRanges", + "RSQLite", + "S4Vectors", + "oligo", + "oligoClasses" + ] + }, + "pd.zebrafish": { + "Package": "pd.zebrafish", + "Version": "3.12.0", + "Source": "Bioconductor", + "Hash": "73aeaab62445f915e528c4fea6a8896a", + "Requirements": [ + "Biostrings", + "DBI", + "IRanges", + "RSQLite", + "S4Vectors", + "oligo", + "oligoClasses" + ] + }, + "pillar": { + "Package": "pillar", + "Version": "1.8.1", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "f2316df30902c81729ae9de95ad5a608", + "Requirements": [ + "cli", + "fansi", + "glue", + "lifecycle", + "rlang", + "utf8", + "vctrs" + ] + }, + "pkgbuild": { + "Package": "pkgbuild", + "Version": "1.4.0", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "d6c3008d79653a0f267703288230105e", + "Requirements": [ + "R6", + "callr", + "cli", + "crayon", + "desc", + "prettyunits", + "processx", + "rprojroot", + "withr" + ] + }, + "pkgconfig": { + "Package": "pkgconfig", + "Version": "2.0.1", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "b8a063ca3694e651ac46f71b4bf0e090", + "Requirements": [] + }, + "pkgdown": { + "Package": "pkgdown", + "Version": "2.0.7", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "16fa15449c930bf3a7761d3c68f8abf9", + "Requirements": [ + "bslib", + "callr", + "cli", + "desc", + "digest", + "downlit", + "fs", + "httr", + "jsonlite", + "magrittr", + "memoise", + "purrr", + "ragg", + "rlang", + "rmarkdown", + "tibble", + "whisker", + "withr", + "xml2", + "yaml" + ] + }, + "pkgload": { + "Package": "pkgload", + "Version": "1.3.2", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "6b0c222c5071efe0f3baf3dae9aa40e2", + "Requirements": [ + "cli", + "crayon", + "desc", + "fs", + "glue", + "rlang", + "rprojroot", + "withr" + ] + }, + "plogr": { + "Package": "plogr", + "Version": "0.2.0", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "09eb987710984fc2905c7129c7d85e65", + "Requirements": [] + }, + "plyr": { + "Package": "plyr", + "Version": "1.8.8", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "d744387aef9047b0b48be2933d78e862", + "Requirements": [ + "Rcpp" + ] + }, + "praise": { + "Package": "praise", + "Version": "1.0.0", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "a555924add98c99d2f411e37e7d25e9f", + "Requirements": [] + }, + "preprocessCore": { + "Package": "preprocessCore", + "Version": "1.40.0", + "Source": "Bioconductor", + "Hash": "db115919701b4e644b96de3f7523d17a", + "Requirements": [] + }, + "prettyunits": { + "Package": "prettyunits", + "Version": "1.0.2", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "f3c960f0105f2ed179460864979fc37c", + "Requirements": [ + "assertthat", + "magrittr" + ] + }, + "processx": { + "Package": "processx", + "Version": "3.8.0", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "a33ee2d9bf07564efb888ad98410da84", + "Requirements": [ + "R6", + "ps" + ] + }, + "profvis": { + "Package": "profvis", + "Version": "0.3.7", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "e9d21e79848e02e524bea6f5bd53e7e4", + "Requirements": [ + "htmlwidgets", + "stringr" + ] + }, + "promises": { + "Package": "promises", + "Version": "1.1.1", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "a8730dcbdd19f9047774909f0ec214a4", + "Requirements": [ + "R6", + "Rcpp", + "later", + "magrittr", + "rlang" + ] + }, + "ps": { + "Package": "ps", + "Version": "1.3.4", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "a54a7dfd68124abb2225dbfa9a85c457", + "Requirements": [] + }, + "purrr": { + "Package": "purrr", + "Version": "0.3.5", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "54842a2443c76267152eface28d9e90a", + "Requirements": [ + "magrittr", + "rlang" + ] + }, + "ragg": { + "Package": "ragg", + "Version": "1.2.5", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "690bc058ea2b1b8a407d3cfe3dce3ef9", + "Requirements": [ + "systemfonts", + "textshaping" + ] + }, + "rappdirs": { + "Package": "rappdirs", + "Version": "0.3.3", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "5e3c5dc0b071b21fa128676560dbe94d", + "Requirements": [] + }, + "rcmdcheck": { + "Package": "rcmdcheck", + "Version": "1.4.0", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "8f25ebe2ec38b1f2aef3b0d2ef76f6c4", + "Requirements": [ + "R6", + "callr", + "cli", + "curl", + "desc", + "digest", + "pkgbuild", + "prettyunits", + "rprojroot", + "sessioninfo", + "withr", + "xopen" + ] + }, + "readr": { + "Package": "readr", + "Version": "1.3.1", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "af8ab99cd936773a148963905736907b", + "Requirements": [ + "BH", + "R6", + "Rcpp", + "clipr", + "crayon", + "hms", + "tibble" + ] + }, + "rematch2": { + "Package": "rematch2", + "Version": "2.1.2", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "76c9e04c712a05848ae7a23d2f170a40", + "Requirements": [ + "tibble" + ] + }, + "remotes": { + "Package": "remotes", + "Version": "2.4.2", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "227045be9aee47e6dda9bb38ac870d67", + "Requirements": [] + }, + "renv": { + "Package": "renv", + "Version": "0.16.0", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "c9e8442ab69bc21c9697ecf856c1e6c7", + "Requirements": [] + }, + "reshape2": { + "Package": "reshape2", + "Version": "1.4.4", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "bb5996d0bd962d214a11140d77589917", + "Requirements": [ + "Rcpp", + "plyr", + "stringr" + ] + }, + "rlang": { + "Package": "rlang", + "Version": "1.0.6", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "4ed1f8336c8d52c3e750adcdc57228a7", + "Requirements": [] + }, + "rmarkdown": { + "Package": "rmarkdown", + "Version": "2.20", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "716fde5382293cc94a71f68c85b78d19", + "Requirements": [ + "bslib", + "evaluate", + "htmltools", + "jquerylib", + "jsonlite", + "knitr", + "stringr", + "tinytex", + "xfun", + "yaml" + ] + }, + "roxygen2": { + "Package": "roxygen2", + "Version": "7.2.3", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "7b153c746193b143c14baa072bae4e27", + "Requirements": [ + "R6", + "brew", + "cli", + "commonmark", + "cpp11", + "desc", + "knitr", + "pkgload", + "purrr", + "rlang", + "stringi", + "stringr", + "withr", + "xml2" + ] + }, + "rpart": { + "Package": "rpart", + "Version": "4.1-13", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "6315535da80d5cc6c2e573966d8c8210", + "Requirements": [] + }, + "rprojroot": { + "Package": "rprojroot", + "Version": "1.3-2", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "f6a407ae5dd21f6f80a6708bbb6eb3ae", + "Requirements": [ + "backports" + ] + }, + "rstudioapi": { + "Package": "rstudioapi", + "Version": "0.11", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "33a5b27a03da82ac4b1d43268f80088a", + "Requirements": [] + }, + "rversions": { + "Package": "rversions", + "Version": "2.1.2", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "a9881dfed103e83f9de151dc17002cd1", + "Requirements": [ + "curl", + "xml2" + ] + }, + "sass": { + "Package": "sass", + "Version": "0.4.5", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "2bb4371a4c80115518261866eab6ab11", + "Requirements": [ + "R6", + "fs", + "htmltools", + "rappdirs", + "rlang" + ] + }, + "sessioninfo": { + "Package": "sessioninfo", + "Version": "1.2.2", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "3f9796a8d0a0e8c6eb49a4b029359d1f", + "Requirements": [ + "cli" + ] + }, + "shiny": { + "Package": "shiny", + "Version": "1.7.4", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "c2eae3d8c670fa9dfa35a12066f4a1d5", + "Requirements": [ + "R6", + "bslib", + "cachem", + "commonmark", + "crayon", + "ellipsis", + "fastmap", + "fontawesome", + "glue", + "htmltools", + "httpuv", + "jsonlite", + "later", + "lifecycle", + "mime", + "promises", + "rlang", + "sourcetools", + "withr", + "xtable" + ] + }, + "snow": { + "Package": "snow", + "Version": "0.4-4", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "40b74690debd20c57d93d8c246b305d4", + "Requirements": [] + }, + "sourcetools": { + "Package": "sourcetools", + "Version": "0.1.7-1", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "5f5a7629f956619d519205ec475fe647", + "Requirements": [] + }, + "spatial": { + "Package": "spatial", + "Version": "7.3-11", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "f27a078d834614513608da2c08031130", + "Requirements": [] + }, + "stringi": { + "Package": "stringi", + "Version": "1.5.3", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "a063ebea753c92910a4cca7b18bc1f05", + "Requirements": [] + }, + "stringr": { + "Package": "stringr", + "Version": "1.4.0", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "0759e6b6c0957edb1311028a49a35e76", + "Requirements": [ + "glue", + "magrittr", + "stringi" + ] + }, + "survival": { + "Package": "survival", + "Version": "2.41-3", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "60b1da51f5e3556fd177170a1aa40b49", + "Requirements": [ + "Matrix" + ] + }, + "sva": { + "Package": "sva", + "Version": "3.26.0", + "Source": "Bioconductor", + "Hash": "c21e7fce3b904dae22f5d1a151b8a0c5", + "Requirements": [ + "BiocParallel", + "genefilter", + "limma", + "matrixStats", + "mgcv" + ] + }, + "sys": { + "Package": "sys", + "Version": "3.2", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "595c352c624e65f8f67f66a77a6409b6", + "Requirements": [] + }, + "systemfonts": { + "Package": "systemfonts", + "Version": "1.0.4", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "90b28393209827327de889f49935140a", + "Requirements": [ + "cpp11" + ] + }, + "testthat": { + "Package": "testthat", + "Version": "3.1.6", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "7910146255835c66e9eb272fb215248d", + "Requirements": [ + "R6", + "brio", + "callr", + "cli", + "desc", + "digest", + "ellipsis", + "evaluate", + "jsonlite", + "lifecycle", + "magrittr", + "pkgload", + "praise", + "processx", + "ps", + "rlang", + "waldo", + "withr" + ] + }, + "textshaping": { + "Package": "textshaping", + "Version": "0.3.6", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "1ab6223d3670fac7143202cb6a2d43d5", + "Requirements": [ + "cpp11", + "systemfonts" + ] + }, + "tibble": { + "Package": "tibble", + "Version": "3.2.0", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "37695ff125982007d42a59ad10982ff2", + "Requirements": [ + "fansi", + "lifecycle", + "magrittr", + "pillar", + "pkgconfig", + "rlang", + "vctrs" + ] + }, + "tidyr": { + "Package": "tidyr", + "Version": "1.1.0", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "7395a05640bf91502dd475a84008d87e", + "Requirements": [ + "Rcpp", + "dplyr", + "ellipsis", + "glue", + "lifecycle", + "magrittr", + "purrr", + "rlang", + "stringi", + "tibble", + "tidyselect", + "vctrs" + ] + }, + "tidyselect": { + "Package": "tidyselect", + "Version": "1.2.0", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "79540e5fcd9e0435af547d885f184fd5", + "Requirements": [ + "cli", + "glue", + "lifecycle", + "rlang", + "vctrs", + "withr" + ] + }, + "tinytex": { + "Package": "tinytex", + "Version": "0.44", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "c0f007e2eeed7722ce13d42b84a22e07", + "Requirements": [ + "xfun" + ] + }, + "tximport": { + "Package": "tximport", + "Version": "1.6.0", + "Source": "Bioconductor", + "Hash": "2c824ac20bbb34bba92a9b5b0d600fec", + "Requirements": [] + }, + "urlchecker": { + "Package": "urlchecker", + "Version": "1.0.1", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "409328b8e1253c8d729a7836fe7f7a16", + "Requirements": [ + "cli", + "curl", + "xml2" + ] + }, + "usethis": { + "Package": "usethis", + "Version": "2.1.6", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "a67a22c201832b12c036cc059f1d137d", + "Requirements": [ + "cli", + "clipr", + "crayon", + "curl", + "desc", + "fs", + "gert", + "gh", + "glue", + "jsonlite", + "lifecycle", + "purrr", + "rappdirs", + "rlang", + "rprojroot", + "rstudioapi", + "whisker", + "withr", + "yaml" + ] + }, + "utf8": { + "Package": "utf8", + "Version": "1.1.4", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "4a5081acfb7b81a572e4384a7aaf2af1", + "Requirements": [] + }, + "vctrs": { + "Package": "vctrs", + "Version": "0.5.2", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "e4ffa94ceed5f124d429a5a5f0f5b378", + "Requirements": [ + "cli", + "glue", + "lifecycle", + "rlang" + ] + }, + "waldo": { + "Package": "waldo", + "Version": "0.4.0", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "035fba89d0c86e2113120f93301b98ad", + "Requirements": [ + "cli", + "diffobj", + "fansi", + "glue", + "rematch2", + "rlang", + "tibble" + ] + }, + "whisker": { + "Package": "whisker", + "Version": "0.4", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "ca970b96d894e90397ed20637a0c1bbe", + "Requirements": [] + }, + "withr": { + "Package": "withr", + "Version": "2.5.0", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "c0e49a9760983e81e55cdd9be92e7182", + "Requirements": [] + }, + "xfun": { + "Package": "xfun", + "Version": "0.36", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "f5baec54606751aa53ac9c0e05848ed6", + "Requirements": [] + }, + "xml2": { + "Package": "xml2", + "Version": "1.3.1", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "921dce7c0ec595ed85e77683d3e6c8b6", + "Requirements": [] + }, + "xopen": { + "Package": "xopen", + "Version": "1.0.0", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "6c85f015dee9cc7710ddd20f86881f58", + "Requirements": [ + "processx" + ] + }, + "xtable": { + "Package": "xtable", + "Version": "1.8-2", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "4739f99be2ab40fe89cbd00365c98294", + "Requirements": [] + }, + "yaml": { + "Package": "yaml", + "Version": "2.2.1", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "2826c5d9efb0a88f657c7a679c7106db", + "Requirements": [] + }, + "zeallot": { + "Package": "zeallot", + "Version": "0.1.0", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "ee9b643aa8331c45d8d82eb3a137c9bc", + "Requirements": [] + }, + "zip": { + "Package": "zip", + "Version": "2.2.2", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "c42bfcec3fa6a0cce17ce1f8bc684f88", + "Requirements": [] + }, + "zlibbioc": { + "Package": "zlibbioc", + "Version": "1.24.0", + "Source": "Bioconductor", + "Hash": "75640bcdaa390770a672332c904642db", + "Requirements": [] + } + } +} diff --git a/workers/ccache.conf b/workers/ccache.conf deleted file mode 100644 index cde43e665..000000000 --- a/workers/ccache.conf +++ /dev/null @@ -1,5 +0,0 @@ -max_size = 5.0G -# important for R CMD INSTALL *.tar.gz as tarballs are expanded freshly -> fresh ctime -sloppiness = include_file_ctime -# also important as the (temp.) directory name will differ -hash_dir = false diff --git a/workers/dockerfiles/Dockerfile.affymetrix b/workers/dockerfiles/Dockerfile.affymetrix index e90300240..6ac42f4ef 100644 --- a/workers/dockerfiles/Dockerfile.affymetrix +++ b/workers/dockerfiles/Dockerfile.affymetrix @@ -1,52 +1,34 @@ -FROM ccdlstaging/dr_worker_base:latest +FROM ccdlstaging/dr_base:latest # Fail in case of an error at any stage in the pipe. SHELL ["/bin/bash", "-o", "pipefail", "-c"] WORKDIR /home/user -# Install and set up ccache. -RUN apt-get update && \ - apt-get install --no-install-recommends -y ccache && \ - for i in c++ cc g++ gcc; do ln -fs /usr/bin/ccache /usr/local/bin/$i; done -COPY workers/ccache.conf /root/.ccache/ccache.conf -ENV PATH="/usr/local/bin:${PATH}" - -COPY workers/R/dependencies/affymetrix/cran/dependencies.R dependencies.R -RUN Rscript dependencies.R +COPY workers/R/dependencies/affymetrix/renv.lock . +COPY workers/R/renv_load.R . +RUN Rscript renv_load.R COPY workers/R/dependencies/affymetrix/install_ensg_pkgs.R . +RUN Rscript install_ensg_pkgs.R -COPY workers/R/dependencies/affymetrix/bioc/dependencies.R dependencies.R -RUN Rscript dependencies.R - -RUN pip3 install --ignore-installed --upgrade pip setuptools && \ - # Install this one here instead of via requirements.txt because not - # all processors need it. - pip3 install --ignore-installed rpy2==3.4.5 +COPY workers/data_refinery_workers/processors/requirements.txt . +RUN pip3 install --ignore-installed --no-cache-dir -r requirements.txt # Get the latest version from the dist directory. COPY common/dist/data-refinery-common-* common/ -RUN pip3 install --ignore-installed \ - common/$(ls common -1 | sort --version-sort | tail -1) +RUN pip3 install --ignore-installed --no-cache-dir \ + common/$(ls common -1 | sort --version-sort | tail -1) -COPY workers/data_refinery_workers/processors/requirements.txt . -RUN pip3 install --ignore-installed -r requirements.txt && \ - # Clear out the pip3 cache. - rm -r /root/.cache +COPY .boto .boto +COPY config/ config/ +COPY workers/ . + +RUN rm -rf /root/.cache/* ARG SYSTEM_VERSION ENV SYSTEM_VERSION=$SYSTEM_VERSION -# Print compiler cache stats (the cache hit ratio should be ~90%). -RUN ccache --show-stats && \ - # Clear out the ccache. - ccache --clear - USER user -COPY .boto .boto -COPY config/ config/ -COPY workers/ . - ENTRYPOINT [] diff --git a/workers/dockerfiles/Dockerfile.affymetrix_local b/workers/dockerfiles/Dockerfile.affymetrix_local index 08db9e197..7fe881ab0 100644 --- a/workers/dockerfiles/Dockerfile.affymetrix_local +++ b/workers/dockerfiles/Dockerfile.affymetrix_local @@ -3,6 +3,8 @@ FROM ccdlstaging/dr_affymetrix:latest # Fail in case of an error at any stage in the pipe. SHELL ["/bin/bash", "-o", "pipefail", "-c"] +USER root + WORKDIR /home/user # Remove the version of common already installed. @@ -17,6 +19,8 @@ RUN pip3 install --ignore-installed --no-cache-dir \ COPY config/ config/ COPY workers/ . +RUN rm -rf /root/.cache/* + ARG SYSTEM_VERSION ENV SYSTEM_VERSION=$SYSTEM_VERSION From 035959b31d78ff81cd317585944ab62de804c8d9 Mon Sep 17 00:00:00 2001 From: David Mejia Date: Thu, 16 Mar 2023 16:45:49 -0400 Subject: [PATCH 087/220] pull salmontools test data from s3 --- workers/run_tests.sh | 19 ++++++++++++------- 1 file changed, 12 insertions(+), 7 deletions(-) diff --git a/workers/run_tests.sh b/workers/run_tests.sh index a750b502a..185a98394 100755 --- a/workers/run_tests.sh +++ b/workers/run_tests.sh @@ -77,13 +77,18 @@ if [ -z "$tag" ] || [ "$tag" = "salmon" ]; then rm "$volume_directory"/salmon_tests.tar.gz fi - # Download salmontools test data - rm -rf "$volume_directory"/salmontools/ - git clone https://github.com/dongbohu/salmontools_tests.git "$volume_directory"/salmontools - - # Download tximport test data - rm -rf "$volume_directory"/tximport_test/ - git clone https://github.com/dongbohu/tximport_test.git "$volume_directory"/tximport_test + # salmontools test data + salmontools_test_zip="$test_data_repo/salmontools_test_data.tar.gz" + salmontools_test_dir="$volume_directory/salmontools" + + # Clean the test data directory + rm -rf "$salmontools_test_dir" + mkdir -p "$salmontools_test_dir" + + echo "Downloading 'salmontools' test data..." + wget -q -O "$volume_directory"/salmontools.tar.gz "$salmontools_test_zip" + tar xzf "$volume_directory"/salmontools.tar.gz -C "$volume_directory" + rm "$volume_directory"/salmontools.tar.gz # Make sure data for Salmon test is downloaded from S3. rna_seq_test_raw_dir="$volume_directory/raw/TEST/SALMON" From 9969016937ea28b4923620eb73825fd05f265c3d Mon Sep 17 00:00:00 2001 From: Arkadii Yakovets Date: Wed, 29 Mar 2023 15:33:27 -0700 Subject: [PATCH 088/220] Remove old comment. --- common/dockerfiles/Dockerfile.migrations | 1 - 1 file changed, 1 deletion(-) diff --git a/common/dockerfiles/Dockerfile.migrations b/common/dockerfiles/Dockerfile.migrations index f91316128..a7e54b019 100644 --- a/common/dockerfiles/Dockerfile.migrations +++ b/common/dockerfiles/Dockerfile.migrations @@ -12,7 +12,6 @@ COPY common/requirements.txt . RUN pip install --ignore-installed --no-cache-dir -r requirements.txt COPY common/ . -# Needed for migration 0006. COPY config config ARG SYSTEM_VERSION From bb88c46fc5187b347fb8a8a8e82430930b05c264 Mon Sep 17 00:00:00 2001 From: Arkadii Yakovets Date: Thu, 30 Mar 2023 08:58:11 -0700 Subject: [PATCH 089/220] Add a TODO. --- foreman/data_refinery_foreman/surveyor/sdrf.csv | 13 +++++++++++++ foreman/requirements.in | 1 + 2 files changed, 14 insertions(+) create mode 100644 foreman/data_refinery_foreman/surveyor/sdrf.csv diff --git a/foreman/data_refinery_foreman/surveyor/sdrf.csv b/foreman/data_refinery_foreman/surveyor/sdrf.csv new file mode 100644 index 000000000..d01d4cb2d --- /dev/null +++ b/foreman/data_refinery_foreman/surveyor/sdrf.csv @@ -0,0 +1,13 @@ +Source Name Description Material Type Characteristics[organism] Characteristics[organism part] Characteristics[sex] Characteristics[developmental stage] Characteristics[age] Unit [time unit] Protocol REF Protocol REF Protocol REF Protocol REF Extract Name Protocol REF Labeled Extract Name Label Protocol REF Assay Name Technology Type Array Design REF Protocol REF Image File Protocol REF Array Data File Comment [ArrayExpress FTP file] Protocol REF Derived Array Data File Comment [Derived ArrayExpress FTP file] Factor Value[cell type] Factor Value[individual] Factor Value[test result] +donor A islets �Islets from 54 years old female at 90% purity. Time from islet preparation to culture initiation: 96 hours. Provided by the University of Miami. cell Homo sapiens islet female adult 54 year P-MTAB-41854 P-MTAB-41858 donor A islets RNA P-MTAB-41859 donor A islets LEX biotin P-MTAB-41859 1007409-C30057 array assay A-AFFY-1 P-MTAB-41860 C30057.DAT P-MTAB-41861 C30057.CEL ftp://ftp.ebi.ac.uk/pub/databases/microarray/data/experiment/MTAB/E-MTAB-3050/E-MTAB-3050.raw.1.zip P-MTAB-41862 C30057.txt ftp://ftp.ebi.ac.uk/pub/databases/microarray/data/experiment/MTAB/E-MTAB-3050/E-MTAB-3050.processed.1.zip freshly isolated A NA +donor A islets �Islets from 54 years old female at 90% purity. Time from islet preparation to culture initiation: 96 hours. Provided by the University of Miami. cell Homo sapiens islet female adult 54 year P-MTAB-41854 P-MTAB-41855 P-MTAB-41858 donor A expanded cells RNA P-MTAB-41859 donor A expanded cells LEX biotin P-MTAB-41859 1007409-C30058 array assay A-AFFY-1 P-MTAB-41860 C30058.DAT P-MTAB-41861 C30058.CEL ftp://ftp.ebi.ac.uk/pub/databases/microarray/data/experiment/MTAB/E-MTAB-3050/E-MTAB-3050.raw.1.zip P-MTAB-41862 C30058.txt ftp://ftp.ebi.ac.uk/pub/databases/microarray/data/experiment/MTAB/E-MTAB-3050/E-MTAB-3050.processed.1.zip expanded A NA +donor A islets �Islets from 54 years old female at 90% purity. Time from islet preparation to culture initiation: 96 hours. Provided by the University of Miami. cell Homo sapiens islet female adult 54 year P-MTAB-41854 P-MTAB-41855 P-MTAB-41856 P-MTAB-41858 donor A differentiated cells RNA P-MTAB-41859 donor A differentiated cells LEX biotin P-MTAB-41859 1009003-C30059 array assay A-AFFY-1 P-MTAB-41860 C30059.DAT P-MTAB-41861 C30059.CEL ftp://ftp.ebi.ac.uk/pub/databases/microarray/data/experiment/MTAB/E-MTAB-3050/E-MTAB-3050.raw.1.zip P-MTAB-41862 C30059.txt ftp://ftp.ebi.ac.uk/pub/databases/microarray/data/experiment/MTAB/E-MTAB-3050/E-MTAB-3050.processed.1.zip differentiated A successful +donor B islets Islets from 38 years old male. Time from islet preparation to culture initiation: 96 hours. Provided by the North West Tissue Center Seattle. cell Homo sapiens islet male adult 38 year P-MTAB-41854 P-MTAB-41855 P-MTAB-41858 donor B expanded cells RNA P-MTAB-41859 donor B expanded cells LEX biotin P-MTAB-41859 1009003-C30060 array assay A-AFFY-1 P-MTAB-41860 C30060.DAT P-MTAB-41861 C30060.CEL ftp://ftp.ebi.ac.uk/pub/databases/microarray/data/experiment/MTAB/E-MTAB-3050/E-MTAB-3050.raw.1.zip P-MTAB-41862 C30060.txt ftp://ftp.ebi.ac.uk/pub/databases/microarray/data/experiment/MTAB/E-MTAB-3050/E-MTAB-3050.processed.1.zip expanded B NA +donor B islets Islets from 38 years old male. Time from islet preparation to culture initiation: 96 hours. Provided by the North West Tissue Center Seattle. cell Homo sapiens islet male adult 38 year P-MTAB-41854 P-MTAB-41855 P-MTAB-41856 P-MTAB-41858 donor B differentiated cells RNA P-MTAB-41859 donor B differentiated cells LEX biotin P-MTAB-41859 1009003-C30061 array assay A-AFFY-1 P-MTAB-41860 C30061.DAT P-MTAB-41861 C30061.CEL ftp://ftp.ebi.ac.uk/pub/databases/microarray/data/experiment/MTAB/E-MTAB-3050/E-MTAB-3050.raw.1.zip P-MTAB-41862 C30061.txt ftp://ftp.ebi.ac.uk/pub/databases/microarray/data/experiment/MTAB/E-MTAB-3050/E-MTAB-3050.processed.1.zip differentiated B unsuccessful + + + + +Source Name Characteristics [Age] Characteristics [GeneticModification] Characteristics [Organism] Term Source REF Term Accession Number Characteristics [BioSourceType] Characteristics [Genotype] Term Source REF Term Accession Number Characteristics [DevelopmentalStage] Term Source REF Term Accession Number Protocol REF Extract Name Material Type Protocol REF Labeled Extract Name Label Material Type Protocol REF Hybridization Name Array Design REF Protocol REF Factor Value [GENOTYPE] Term Source REF Term Accession Number Scan Name Array Data File Comment [ArrayExpress FTP file] +SAMPLE229091SUB6092 48 hours induced_mutation Danio rerio EFO http://purl.org/obo/owl/NCBITaxon#NCBITaxon_7955 fresh_sample RPL11 mutation embryo EFO EFO_0001367 P-MTAB-5485 SAMPLE229091SUB6092 total_RNA P-AFFY-2 SAMPLE229091SUB6092 biotin unknown Affymetrix:Protocol:Hybridization-Unknown SAMPLE229091SUB6092 A-AFFY-38 P-NGEN-13 RPL11 mutation 135354-135352_ExpPt1.CEL 135354-135352_ExpPt1.CEL ftp://ftp.ebi.ac.uk/pub/databases/microarray/data/experiment/MEXP/E-MEXP-2381/E-MEXP-2381.raw.1.zip +SAMPLE229092SUB6092 48 hours Danio rerio EFO http://purl.org/obo/owl/NCBITaxon#NCBITaxon_7955 control EFO EFO_0001461 P-MTAB-5485 SAMPLE229092SUB6092 total_RNA P-AFFY-2 SAMPLE229092SUB6092 biotin unknown Affymetrix:Protocol:Hybridization-Unknown SAMPLE229092SUB6092 A-AFFY-38 P-NGEN-13 control EFO EFO_0001461 135353-135351_CtrlPt1.CEL 135353-135351_CtrlPt1.CEL ftp://ftp.ebi.ac.uk/pub/databases/microarray/data/experiment/MEXP/E-MEXP-2381/E-MEXP-2381.raw.1.zip diff --git a/foreman/requirements.in b/foreman/requirements.in index 20b88a17f..3d92224a1 100644 --- a/foreman/requirements.in +++ b/foreman/requirements.in @@ -8,6 +8,7 @@ python-dateutil raven pyrefinebio>=0.4.7 tblib +# TODO(ark): make sure DRF is required. djangorestframework<3.14.0 # Can't go above 6.X without upgrading elasticsearch django-elasticsearch-dsl==6.5.0 From 231f473396677ed5b30470e2bdfc581e042116af Mon Sep 17 00:00:00 2001 From: Arkadii Yakovets Date: Fri, 31 Mar 2023 13:55:56 -0700 Subject: [PATCH 090/220] Extract compendia requirements. --- workers/data_refinery_workers/requirements/compendia.txt | 9 +++++++++ workers/dockerfiles/Dockerfile.compendia | 9 +++++---- 2 files changed, 14 insertions(+), 4 deletions(-) create mode 100644 workers/data_refinery_workers/requirements/compendia.txt diff --git a/workers/data_refinery_workers/requirements/compendia.txt b/workers/data_refinery_workers/requirements/compendia.txt new file mode 100644 index 000000000..10e91e3c6 --- /dev/null +++ b/workers/data_refinery_workers/requirements/compendia.txt @@ -0,0 +1,9 @@ +nose +numpy +scipy +matplotlib +pandas==0.25.3 +scikit-learn +sympy +tzlocal +fancySVD diff --git a/workers/dockerfiles/Dockerfile.compendia b/workers/dockerfiles/Dockerfile.compendia index 6ab413714..7b8240b78 100644 --- a/workers/dockerfiles/Dockerfile.compendia +++ b/workers/dockerfiles/Dockerfile.compendia @@ -71,10 +71,11 @@ COPY workers/R/dependencies/compendia/renv.lock . COPY workers/R/renv_load.R . RUN Rscript renv_load.R -COPY workers/data_refinery_workers/processors/requirements.txt . -RUN pip3 install --ignore-installed --no-cache-dir nose numpy scipy matplotlib \ - pandas==0.25.3 scikit-learn sympy tzlocal fancySVD && \ - pip3 install --ignore-installed --no-cache-dir -r requirements.txt +COPY workers/data_refinery_workers/requirements/compendia.txt requirements.txt +RUN pip3 install --ignore-installed --no-cache-dir -r requirements.txt + +COPY workers/data_refinery_workers/processors/requirements.txt requirements.txt +RUN pip3 install --ignore-installed --no-cache-dir -r requirements.txt # Install phantomjs. RUN wget -q "https://bitbucket.org/ariya/phantomjs/downloads/\ From 39af92af12c6f5ae5e8c6fca07350f50900ed0ef Mon Sep 17 00:00:00 2001 From: Arkadii Yakovets Date: Mon, 3 Apr 2023 11:54:53 -0700 Subject: [PATCH 091/220] Add keys README. --- workers/keys/README.md | 3 +++ 1 file changed, 3 insertions(+) create mode 100644 workers/keys/README.md diff --git a/workers/keys/README.md b/workers/keys/README.md new file mode 100644 index 000000000..bf95182d9 --- /dev/null +++ b/workers/keys/README.md @@ -0,0 +1,3 @@ +`asperaweb_id_dsa.openssh` is a publicly available "private" key required by ascp. +See https://www.ibm.com/docs/en/aspera-on-cloud?topic=ak-fasp-security-aspera-connect-transfer-client-authorized-keys-aspshell +for more details. From 307143db59b558d9358a185372bc1513c345caf9 Mon Sep 17 00:00:00 2001 From: Arkadii Yakovets Date: Mon, 3 Apr 2023 14:05:30 -0700 Subject: [PATCH 092/220] Address review comments. --- .../gatherer/agents/ae_agent.py | 3 --- .../gatherer/agents/geo_agent.py | 3 --- .../gatherer/agents/rnaseq_agent.py | 3 --- .../management/commands/gather_accessions.py | 14 +++++++------- 4 files changed, 7 insertions(+), 16 deletions(-) diff --git a/foreman/data_refinery_foreman/gatherer/agents/ae_agent.py b/foreman/data_refinery_foreman/gatherer/agents/ae_agent.py index df8399bca..4328f0713 100644 --- a/foreman/data_refinery_foreman/gatherer/agents/ae_agent.py +++ b/foreman/data_refinery_foreman/gatherer/agents/ae_agent.py @@ -29,9 +29,6 @@ class AEAgent(AccessionAgentBase): SOURCE_NAME = "microarray-ae" TECHNOLOGY = "microarray" - def __str__(self): - return "MicroArray ArrayExpress accession agent" - def __str__(self): return "MicroArray ArrayExpress accession agent" diff --git a/foreman/data_refinery_foreman/gatherer/agents/geo_agent.py b/foreman/data_refinery_foreman/gatherer/agents/geo_agent.py index 2eb7f7b6f..22a3bd0bd 100644 --- a/foreman/data_refinery_foreman/gatherer/agents/geo_agent.py +++ b/foreman/data_refinery_foreman/gatherer/agents/geo_agent.py @@ -30,9 +30,6 @@ class GEOAgent(AccessionAgentBase): SOURCE_NAME = "microarray-geo" TECHNOLOGY = "microarray" - def __str__(self): - return "MicroArray GEO accession agent" - def __str__(self): return "MicroArray GEO accession agent" diff --git a/foreman/data_refinery_foreman/gatherer/agents/rnaseq_agent.py b/foreman/data_refinery_foreman/gatherer/agents/rnaseq_agent.py index 9f2f54e3a..3fcb87fbb 100644 --- a/foreman/data_refinery_foreman/gatherer/agents/rnaseq_agent.py +++ b/foreman/data_refinery_foreman/gatherer/agents/rnaseq_agent.py @@ -31,9 +31,6 @@ class RNASeqAgent(AccessionAgentBase): SOURCE_NAME = "rna-seq" TECHNOLOGY = "rna-seq" - def __str__(self): - return "RNA-Seq accession agent" - def __str__(self): return "RNA-Seq accession agent" diff --git a/foreman/data_refinery_foreman/gatherer/management/commands/gather_accessions.py b/foreman/data_refinery_foreman/gatherer/management/commands/gather_accessions.py index 3e50dac28..3c1ac8f73 100644 --- a/foreman/data_refinery_foreman/gatherer/management/commands/gather_accessions.py +++ b/foreman/data_refinery_foreman/gatherer/management/commands/gather_accessions.py @@ -27,8 +27,6 @@ class Command(BaseCommand): DATA_AGENTS = (AEAgent, GEOAgent, RNASeqAgent) DATA_SOURCE_NAMES = [agent.SOURCE_NAME for agent in DATA_AGENTS] - RE_ACCESSION = re.compile(r"(\D+)(\d+)") - RE_DATE = re.compile(r"\d{4}-\d{2}-\d{2}") # TODO(ark): remove after upgrade to python3.8 where parser argument # "extend" action is directly available. @@ -136,11 +134,12 @@ def validate_args(self, options) -> None: """Validates arguments.""" errors = list() + RE_DATE = re.compile(r"\d{4}-\d{2}-\d{2}") since = options["since"] until = options["until"] - if not self.RE_DATE.match(since): + if not RE_DATE.match(since): errors.append('The -s, --since value must match "YYYY-MM-DD" format.') - if until and not self.RE_DATE.match(until): + if until and not RE_DATE.match(until): errors.append('The -u, --until value must match "YYYY-MM-DD" format.') if since and until and since > until: errors.append("The -s, --since date must be earlier than -u, --until date.") @@ -213,11 +212,12 @@ def handle(self, *args, **options): f"new accession{pluralize(agent_accessions_count)}." ) + RE_ACCESSION = re.compile(r"(\D+)(\d+)") gathered_accessions = sorted( # Sort the resulting list. - (ga for ga in gathered_accessions if self.RE_ACCESSION.match(ga.accession_code)), + (ga for ga in gathered_accessions if RE_ACCESSION.match(ga.accession_code)), key=lambda ga: ( - self.RE_ACCESSION.match(ga.accession_code).group(1), - int(self.RE_ACCESSION.match(ga.accession_code).group(2)), + RE_ACCESSION.match(ga.accession_code).group(1), + int(RE_ACCESSION.match(ga.accession_code).group(2)), ), ) # Limit the number of output entries. From ea640a01703075ce4e9f5bc99f7acb797f80541d Mon Sep 17 00:00:00 2001 From: Arkadii Yakovets Date: Wed, 5 Apr 2023 11:46:39 -0700 Subject: [PATCH 093/220] Add batch processing. --- .../management/commands/gather_accessions.py | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) diff --git a/foreman/data_refinery_foreman/gatherer/management/commands/gather_accessions.py b/foreman/data_refinery_foreman/gatherer/management/commands/gather_accessions.py index 3c1ac8f73..6cf1e4873 100644 --- a/foreman/data_refinery_foreman/gatherer/management/commands/gather_accessions.py +++ b/foreman/data_refinery_foreman/gatherer/management/commands/gather_accessions.py @@ -239,14 +239,19 @@ def handle(self, *args, **options): output = "\n".join((str(ga) for ga in gathered_accessions)) else: output = "No new accessions gathered." - print(output) - else: + exit(output) + + BATCH_SIZE = 100 + for batch_start in range(0, len(gathered_accessions), BATCH_SIZE): + batch = gathered_accessions[batch_start : batch_start + BATCH_SIZE] try: - GatheredAccession.objects.bulk_create(gathered_accessions) - added_accessions_count = len(gathered_accessions) + GatheredAccession.objects.bulk_create(batch) + added_accessions_count = len(batch) logger.info( f"{added_accessions_count} new accession{pluralize(added_accessions_count)} " f"h{pluralize(added_accessions_count, 'as,ave')} been added to the database. " ) + logger.info("Added accessions: '%s'" % batch) except IntegrityError as e: logger.exception(f"Could not save new accessions to the database: {e}") + logger.info("Failed accessions: '%s'" % batch) From 09e650edffeac5cc9bc058b6b038fc6cee0dcac3 Mon Sep 17 00:00:00 2001 From: Arkadii Yakovets Date: Wed, 5 Apr 2023 12:44:30 -0700 Subject: [PATCH 094/220] Address review comments. --- .../management/commands/gather_accessions.py | 15 +++++++++++---- 1 file changed, 11 insertions(+), 4 deletions(-) diff --git a/foreman/data_refinery_foreman/gatherer/management/commands/gather_accessions.py b/foreman/data_refinery_foreman/gatherer/management/commands/gather_accessions.py index 6cf1e4873..ce8333781 100644 --- a/foreman/data_refinery_foreman/gatherer/management/commands/gather_accessions.py +++ b/foreman/data_refinery_foreman/gatherer/management/commands/gather_accessions.py @@ -25,7 +25,8 @@ class Command(BaseCommand): """Creates agents and runs actual accession gathering.""" - DATA_AGENTS = (AEAgent, GEOAgent, RNASeqAgent) + DATA_AGENTS = (AEAgent, GEOAgent) + # DATA_AGENTS = (AEAgent, GEOAgent, RNASeqAgent) DATA_SOURCE_NAMES = [agent.SOURCE_NAME for agent in DATA_AGENTS] # TODO(ark): remove after upgrade to python3.8 where parser argument @@ -52,7 +53,12 @@ def add_arguments(self, parser) -> None: type=str, help="Path to a file containing ArrayExpress ID(s) to use for filtering.", ) - parser.add_argument("-c", "--count", type=int, help="Number of accessions to collect.") + parser.add_argument( + "-c", + "--count", + type=int, + help="Number of accessions to collect.", + ) parser.add_argument( "-d", "--dry-run", @@ -244,6 +250,7 @@ def handle(self, *args, **options): BATCH_SIZE = 100 for batch_start in range(0, len(gathered_accessions), BATCH_SIZE): batch = gathered_accessions[batch_start : batch_start + BATCH_SIZE] + batch_accessions = (ga.accession_code for ga in batch) try: GatheredAccession.objects.bulk_create(batch) added_accessions_count = len(batch) @@ -251,7 +258,7 @@ def handle(self, *args, **options): f"{added_accessions_count} new accession{pluralize(added_accessions_count)} " f"h{pluralize(added_accessions_count, 'as,ave')} been added to the database. " ) - logger.info("Added accessions: '%s'" % batch) + logger.info("Added accessions: %s." % ", ".join(batch_accessions)) except IntegrityError as e: logger.exception(f"Could not save new accessions to the database: {e}") - logger.info("Failed accessions: '%s'" % batch) + logger.info("Failed accessions: %s." % ", ".join(batch_accessions)) From a26b2b89922254aed03ca1033cacd9d50ee1c221 Mon Sep 17 00:00:00 2001 From: Arkadii Yakovets Date: Wed, 5 Apr 2023 15:16:10 -0700 Subject: [PATCH 095/220] Address review comments. --- .../management/commands/automatic_survey.py | 69 ++++++++++--------- 1 file changed, 35 insertions(+), 34 deletions(-) diff --git a/foreman/data_refinery_foreman/foreman/management/commands/automatic_survey.py b/foreman/data_refinery_foreman/foreman/management/commands/automatic_survey.py index 6dc1273ac..be1d8132a 100644 --- a/foreman/data_refinery_foreman/foreman/management/commands/automatic_survey.py +++ b/foreman/data_refinery_foreman/foreman/management/commands/automatic_survey.py @@ -37,29 +37,29 @@ def create_survey_jobs(days, quota): remaining_quota = get_remaining_quota(days, quota) if not remaining_quota: - return - - gathered_accessions = [ - ga["accession_code"] - for ga in GatheredAccession.objects.order_by("created_at").values("accession_code") - ] - - batch_start = 0 - batch_size = 1000 - queued_accessions = list() - while True: - batch_accessions = gathered_accessions[batch_start : batch_start + batch_size] - if not batch_accessions: + logger.info("Unable to create new survey jobs: remaining quota is 0.") + return None + + gathered_accessions = GatheredAccession.objects.order_by("created_at").values_list( + "accession_code", flat=True + ) + + BATCH_SIZE = 100 + queued_accessions = [] + for batch_start in range(0, len(gathered_accessions), BATCH_SIZE): + if len(queued_accessions) == remaining_quota: + logger.info("Unable to create new survey jobs: remaining quota is 0.") break - surveyed_accessions = ( - sa["accession_code"] - for sa in SurveyedAccession.objects.filter(accession_code__in=batch_accessions).values( - "accession_code" - ) - ) + batch = gathered_accessions[batch_start : batch_start + BATCH_SIZE] + if not batch: + break + + surveyed_accessions = SurveyedAccession.objects.filter( + accession_code__in=batch + ).values_list("accession_code", flat=True) - for accession_code in set(batch_accessions) - set(surveyed_accessions): + for accession_code in set(batch).difference(set(surveyed_accessions)): try: queue_surveyor_for_accession(accession_code) except Exception as e: @@ -69,20 +69,21 @@ def create_survey_jobs(days, quota): if len(queued_accessions) == remaining_quota: break - if len(queued_accessions) == remaining_quota: - break - - batch_start += batch_size - - queued_accession_count = len(queued_accessions) - logger.info( - f"Queued {queued_accession_count} accession{pluralize(queued_accession_count)} " - f"based on {quota} accession{pluralize(quota)} per {days} " - f"day{pluralize(days)} quota." - ) - SurveyedAccession.objects.bulk_create( - (SurveyedAccession(accession_code=accession_code) for accession_code in queued_accessions) - ) + try: + SurveyedAccession.objects.bulk_create( + ( + SurveyedAccession(accession_code=accession_code) + for accession_code in queued_accessions + ) + ) + queued_accession_count = len(queued_accessions) + logger.info( + f"Queued {queued_accession_count} accession{pluralize(queued_accession_count)} " + f"based on {quota} accession{pluralize(quota)} per {days} " + f"day{pluralize(days)} quota." + ) + except Exception as e: + logger.error("Couldn't add surveyed accessions due to: %s" % e) def get_remaining_quota(days, quota): From c4176bc28213d35d0644fbff97518115fdabdad7 Mon Sep 17 00:00:00 2001 From: Arkadii Yakovets Date: Thu, 6 Apr 2023 10:52:47 -0700 Subject: [PATCH 096/220] Add GEOMetaDB support. For now it's going to be a part of Foreman Docker image. Migrate to dynamically loaded data later. --- foreman/data_refinery_foreman/gatherer/agents/geo_agent.py | 2 +- .../gatherer/management/commands/gather_accessions.py | 7 +++---- foreman/dockerfiles/Dockerfile.foreman | 4 ++++ 3 files changed, 8 insertions(+), 5 deletions(-) diff --git a/foreman/data_refinery_foreman/gatherer/agents/geo_agent.py b/foreman/data_refinery_foreman/gatherer/agents/geo_agent.py index 22a3bd0bd..7f59306fe 100644 --- a/foreman/data_refinery_foreman/gatherer/agents/geo_agent.py +++ b/foreman/data_refinery_foreman/gatherer/agents/geo_agent.py @@ -25,7 +25,7 @@ class GEOAgent(AccessionAgentBase): # TODO(ark): move the DB file from Docker image to S3. # Implement syncing procedure. # Update URL once the original file is available again. - DB_PATH = "data/microarray/GEOmetadb.sqlite" + DB_PATH = "/home/user/data/microarray/GEOmetadb.sqlite" SOURCE = "geo-meta-db" SOURCE_NAME = "microarray-geo" TECHNOLOGY = "microarray" diff --git a/foreman/data_refinery_foreman/gatherer/management/commands/gather_accessions.py b/foreman/data_refinery_foreman/gatherer/management/commands/gather_accessions.py index ce8333781..07d708007 100644 --- a/foreman/data_refinery_foreman/gatherer/management/commands/gather_accessions.py +++ b/foreman/data_refinery_foreman/gatherer/management/commands/gather_accessions.py @@ -25,8 +25,7 @@ class Command(BaseCommand): """Creates agents and runs actual accession gathering.""" - DATA_AGENTS = (AEAgent, GEOAgent) - # DATA_AGENTS = (AEAgent, GEOAgent, RNASeqAgent) + DATA_AGENTS = (AEAgent, GEOAgent, RNASeqAgent) DATA_SOURCE_NAMES = [agent.SOURCE_NAME for agent in DATA_AGENTS] # TODO(ark): remove after upgrade to python3.8 where parser argument @@ -214,8 +213,8 @@ def handle(self, *args, **options): gathered_accessions.update(agent_accessions) logger.info( - f"Since {options['since']} {agent} has gathered {agent_accessions_count} " - f"new accession{pluralize(agent_accessions_count)}." + f"{agent} has gathered {agent_accessions_count} " + f"new accession{pluralize(agent_accessions_count)} since {options['since']}." ) RE_ACCESSION = re.compile(r"(\D+)(\d+)") diff --git a/foreman/dockerfiles/Dockerfile.foreman b/foreman/dockerfiles/Dockerfile.foreman index f1781ec0a..ec0ce50db 100644 --- a/foreman/dockerfiles/Dockerfile.foreman +++ b/foreman/dockerfiles/Dockerfile.foreman @@ -5,6 +5,10 @@ SHELL ["/bin/bash", "-o", "pipefail", "-c"] WORKDIR /home/user +ADD https://gbnci.cancer.gov/geo/GEOmetadb.sqlite.gz data/microarray/GEOmetadb.sqlite.gz +RUN gunzip data/microarray/GEOmetadb.sqlite.gz && \ + chmod 644 data/microarray/GEOmetadb.sqlite + COPY foreman/requirements.txt . RUN pip3 install --ignore-installed --no-cache-dir -r requirements.txt From 45b3ab12d45d8741dd7e36ebab563983c1b89102 Mon Sep 17 00:00:00 2001 From: Arkadii Yakovets Date: Thu, 6 Apr 2023 14:01:38 -0700 Subject: [PATCH 097/220] Update foreman/data_refinery_foreman/gatherer/management/commands/gather_accessions.py Co-authored-by: David --- .../gatherer/management/commands/gather_accessions.py | 1 + 1 file changed, 1 insertion(+) diff --git a/foreman/data_refinery_foreman/gatherer/management/commands/gather_accessions.py b/foreman/data_refinery_foreman/gatherer/management/commands/gather_accessions.py index 07d708007..97dbc45d1 100644 --- a/foreman/data_refinery_foreman/gatherer/management/commands/gather_accessions.py +++ b/foreman/data_refinery_foreman/gatherer/management/commands/gather_accessions.py @@ -217,6 +217,7 @@ def handle(self, *args, **options): f"new accession{pluralize(agent_accessions_count)} since {options['since']}." ) + # Regex to split into two groups, non-digits and digits ex: (GSE)(1234). RE_ACCESSION = re.compile(r"(\D+)(\d+)") gathered_accessions = sorted( # Sort the resulting list. (ga for ga in gathered_accessions if RE_ACCESSION.match(ga.accession_code)), From 78dc4e78d8a4387df31bffc304562ca00ff59dd8 Mon Sep 17 00:00:00 2001 From: Arkadii Yakovets Date: Thu, 6 Apr 2023 14:03:48 -0700 Subject: [PATCH 098/220] Fix indentation. --- foreman/dockerfiles/Dockerfile.foreman | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/foreman/dockerfiles/Dockerfile.foreman b/foreman/dockerfiles/Dockerfile.foreman index ec0ce50db..94e5c185a 100644 --- a/foreman/dockerfiles/Dockerfile.foreman +++ b/foreman/dockerfiles/Dockerfile.foreman @@ -7,7 +7,7 @@ WORKDIR /home/user ADD https://gbnci.cancer.gov/geo/GEOmetadb.sqlite.gz data/microarray/GEOmetadb.sqlite.gz RUN gunzip data/microarray/GEOmetadb.sqlite.gz && \ - chmod 644 data/microarray/GEOmetadb.sqlite + chmod 644 data/microarray/GEOmetadb.sqlite COPY foreman/requirements.txt . RUN pip3 install --ignore-installed --no-cache-dir -r requirements.txt From 04e3919d7ade01eb4f01b0ca5905f5e9550e52a9 Mon Sep 17 00:00:00 2001 From: Arkadii Yakovets Date: Thu, 6 Apr 2023 14:07:40 -0700 Subject: [PATCH 099/220] Update workers/keys/README.md Co-authored-by: David --- workers/keys/README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/workers/keys/README.md b/workers/keys/README.md index bf95182d9..153247aa1 100644 --- a/workers/keys/README.md +++ b/workers/keys/README.md @@ -1,3 +1,3 @@ `asperaweb_id_dsa.openssh` is a publicly available "private" key required by ascp. -See https://www.ibm.com/docs/en/aspera-on-cloud?topic=ak-fasp-security-aspera-connect-transfer-client-authorized-keys-aspshell +See [IBM's documentation](https://www.ibm.com/docs/en/aspera-on-cloud?topic=ak-fasp-security-aspera-connect-transfer-client-authorized-keys-aspshell) for more details. From a34004e2d555076f2def5d9b3259e84e6f6be429 Mon Sep 17 00:00:00 2001 From: Arkadii Yakovets Date: Tue, 11 Apr 2023 10:53:54 -0700 Subject: [PATCH 100/220] Fix common/oreman tests. Migrate common/migrations image to `dr_base`. Move foreman tests to tests directory. Add separate settings file (tests/settings.py). Refactor import according to the new structure. --- common/R/dependencies/common_tests/renv.R | 40 +- common/R/dependencies/common_tests/renv.lock | 501 ++++++------------ common/dockerfiles/Dockerfile.migrations | 23 +- .../commands/update_experiment_metadata.py | 13 +- .../surveyor/array_express.py | 297 ++++++----- foreman/run_tests.sh | 1 + foreman/tests/__init__.py | 0 foreman/tests/foreman/__init__.py | 0 foreman/tests/foreman/management/__init__.py | 0 .../foreman/management/commands/__init__.py | 0 .../commands/test_correct_affy_cdfs.py | 0 .../commands/test_create_compendia.py | 0 .../test_create_missing_downloader_jobs.py | 6 - .../test_create_missing_processor_jobs.py | 5 - .../commands/test_create_quantpendia.py | 0 .../test_import_external_sample_attributes.py | 0 .../test_import_external_sample_keywords.py | 0 .../commands/test_organism_shepherd.py | 0 .../commands/test_rerun_salmon_old_samples.py | 0 .../management/commands/test_retry_samples.py | 9 - .../management/commands/test_run_tximport.py | 0 .../test_update_experiment_metadata.py | 59 +-- .../foreman/test_downloader_job_manager.py | 3 +- .../foreman/test_end_to_end.py | 0 .../foreman/test_job_control.py | 0 .../foreman/test_job_requeuing.py | 7 +- .../foreman/test_processor_job_manager.py | 3 +- .../foreman/test_survey_job_manager.py | 3 +- .../test_utils.py => tests/foreman/utils.py} | 0 foreman/tests/settings.py | 5 + foreman/tests/surveyor/management/__init__.py | 0 .../surveyor/management/commands/__init__.py | 0 .../commands/test_dispatch_qn_jobs.py | 0 .../management/commands/test_unsurvey.py | 0 .../surveyor/test_array_express.py | 0 .../surveyor/test_external_source.py | 0 .../surveyor/test_geo.py | 0 .../surveyor/test_harmony.py | 0 .../surveyor/test_sra.py | 0 .../surveyor/test_surveyor.py | 0 .../surveyor/test_transcriptome_index.py | 0 .../test_imports.py | 56 +- .../test_runner.py | 0 .../R/dependencies/install_devtools_renv.R | 4 +- workers/R/renv_load.R | 2 +- workers/R/renv_save.R | 2 +- .../processors/requirements.in | 12 +- .../processors/requirements.txt | 167 +++--- workers/run_tests.sh | 3 +- workers/tests/processors/test_compendia.py | 2 +- workers/tests/processors/test_illumina.py | 4 +- 51 files changed, 517 insertions(+), 710 deletions(-) create mode 100644 foreman/tests/__init__.py create mode 100644 foreman/tests/foreman/__init__.py create mode 100644 foreman/tests/foreman/management/__init__.py create mode 100644 foreman/tests/foreman/management/commands/__init__.py rename foreman/{data_refinery_foreman => tests}/foreman/management/commands/test_correct_affy_cdfs.py (100%) rename foreman/{data_refinery_foreman => tests}/foreman/management/commands/test_create_compendia.py (100%) rename foreman/{data_refinery_foreman => tests}/foreman/management/commands/test_create_missing_downloader_jobs.py (96%) rename foreman/{data_refinery_foreman => tests}/foreman/management/commands/test_create_missing_processor_jobs.py (99%) rename foreman/{data_refinery_foreman => tests}/foreman/management/commands/test_create_quantpendia.py (100%) rename foreman/{data_refinery_foreman => tests}/foreman/management/commands/test_import_external_sample_attributes.py (100%) rename foreman/{data_refinery_foreman => tests}/foreman/management/commands/test_import_external_sample_keywords.py (100%) rename foreman/{data_refinery_foreman => tests}/foreman/management/commands/test_organism_shepherd.py (100%) rename foreman/{data_refinery_foreman => tests}/foreman/management/commands/test_rerun_salmon_old_samples.py (100%) rename foreman/{data_refinery_foreman => tests}/foreman/management/commands/test_retry_samples.py (92%) rename foreman/{data_refinery_foreman => tests}/foreman/management/commands/test_run_tximport.py (100%) rename foreman/{data_refinery_foreman => tests}/foreman/management/commands/test_update_experiment_metadata.py (74%) rename foreman/{data_refinery_foreman => tests}/foreman/test_downloader_job_manager.py (99%) rename foreman/{data_refinery_foreman => tests}/foreman/test_end_to_end.py (100%) rename foreman/{data_refinery_foreman => tests}/foreman/test_job_control.py (100%) rename foreman/{data_refinery_foreman => tests}/foreman/test_job_requeuing.py (97%) rename foreman/{data_refinery_foreman => tests}/foreman/test_processor_job_manager.py (99%) rename foreman/{data_refinery_foreman => tests}/foreman/test_survey_job_manager.py (99%) rename foreman/{data_refinery_foreman/foreman/test_utils.py => tests/foreman/utils.py} (100%) create mode 100644 foreman/tests/settings.py create mode 100644 foreman/tests/surveyor/management/__init__.py create mode 100644 foreman/tests/surveyor/management/commands/__init__.py rename foreman/{data_refinery_foreman => tests}/surveyor/management/commands/test_dispatch_qn_jobs.py (100%) rename foreman/{data_refinery_foreman => tests}/surveyor/management/commands/test_unsurvey.py (100%) rename foreman/{data_refinery_foreman => tests}/surveyor/test_array_express.py (100%) rename foreman/{data_refinery_foreman => tests}/surveyor/test_external_source.py (100%) rename foreman/{data_refinery_foreman => tests}/surveyor/test_geo.py (100%) rename foreman/{data_refinery_foreman => tests}/surveyor/test_harmony.py (100%) rename foreman/{data_refinery_foreman => tests}/surveyor/test_sra.py (100%) rename foreman/{data_refinery_foreman => tests}/surveyor/test_surveyor.py (100%) rename foreman/{data_refinery_foreman => tests}/surveyor/test_transcriptome_index.py (100%) rename foreman/{data_refinery_foreman => tests}/test_imports.py (53%) rename foreman/{data_refinery_foreman => tests}/test_runner.py (100%) diff --git a/common/R/dependencies/common_tests/renv.R b/common/R/dependencies/common_tests/renv.R index b5a23e262..019586a8c 100644 --- a/common/R/dependencies/common_tests/renv.R +++ b/common/R/dependencies/common_tests/renv.R @@ -1,24 +1,20 @@ -renv::install("rlang@1.0.4") -renv::install("dplyr@1.0.0") -renv::install("tidyr@1.1.0") -renv::install("ff@2.2-14") -renv::install("locfit@1.5-9.4") -renv::install("cli@3.3.0") -renv::install("lifecycle@1.0.3") -renv::install("vctrs@0.4.1") - renv::install( - "https://bioconductor.org/packages/3.11/bioc/src/contrib/oligoClasses_1.50.4.tar.gz", - "https://bioconductor.org/packages/3.11/bioc/src/contrib/oligo_1.52.1.tar.gz", - "https://bioconductor.org/packages/3.11/bioc/src/contrib/GEOquery_2.56.0.tar.gz", - "https://bioconductor.org/packages/3.11/bioc/src/contrib/SCAN.UPC_2.30.0.tar.gz", - "https://bioconductor.org/packages/3.11/bioc/src/contrib/affy_1.66.0.tar.gz", - "https://bioconductor.org/packages/3.11/bioc/src/contrib/affyio_1.58.0.tar.gz", - "https://bioconductor.org/packages/3.11/bioc/src/contrib/AnnotationDbi_1.50.3.tar.gz", - "https://bioconductor.org/packages/3.11/bioc/src/contrib/zlibbioc_1.34.0.tar.gz", - "https://bioconductor.org/packages/3.11/bioc/src/contrib/preprocessCore_1.50.0.tar.gz", - "https://bioconductor.org/packages/3.11/bioc/src/contrib/genefilter_1.70.0.tar.gz", - "https://bioconductor.org/packages/3.11/bioc/src/contrib/sva_3.36.0.tar.gz", - "https://bioconductor.org/packages/3.11/bioc/src/contrib/tximport_1.16.1.tar.gz", - "https://bioconductor.org/packages/3.11/bioc/src/contrib/limma_3.44.3.tar.gz" + "affy", + "affyio", + "AnnotationDbi", + "dplyr@1.0.2", + "ff@2.2-14", + "genefilter", + "GEOquery", + "limma", + "oligo", + "oligoClasses", + "preprocessCore", + "purrr@0.3.5", + "readr@1.3.1", + "SCAN.UPC", + "sva", + "tidyr@1.1.0", + "tximport", + "zlibbioc" ) diff --git a/common/R/dependencies/common_tests/renv.lock b/common/R/dependencies/common_tests/renv.lock index a715ce7d2..5c656dab7 100644 --- a/common/R/dependencies/common_tests/renv.lock +++ b/common/R/dependencies/common_tests/renv.lock @@ -1,18 +1,18 @@ { "R": { - "Version": "3.6.3", + "Version": "3.4.4", "Repositories": [ { "Name": "Bioconductor", - "URL": "https://bioconductor.org/packages/3.11/bioc" + "URL": "https://bioconductor.org/packages/3.6/bioc" }, { "Name": "BioconductorAnnotation", - "URL": "https://bioconductor.org/packages/3.11/data/annotation" + "URL": "https://bioconductor.org/packages/3.6/data/annotation" }, { "Name": "BioconductorExperiment", - "URL": "https://bioconductor.org/packages/3.11/data/experiment" + "URL": "https://bioconductor.org/packages/3.6/data/experiment" }, { "Name": "CRAN", @@ -23,15 +23,9 @@ "Packages": { "AnnotationDbi": { "Package": "AnnotationDbi", - "Version": "1.50.3", - "Source": "URL", - "RemoteType": "url", - "RemoteUrl": "https://bioconductor.org/packages/3.11/bioc/src/contrib/AnnotationDbi_1.50.3.tar.gz", - "git_url": "https://git.bioconductor.org/packages/AnnotationDbi", - "git_branch": "RELEASE_3_11", - "git_last_commit": "efa119c", - "git_last_commit_date": "2020-07-24", - "Hash": "8118f8655ad5604099a0e8ac14090f91", + "Version": "1.40.0", + "Source": "Bioconductor", + "Hash": "abb20d74ae5ea08a8d9616a6f1bbaca5", "Requirements": [ "Biobase", "BiocGenerics", @@ -51,45 +45,32 @@ }, "Biobase": { "Package": "Biobase", - "Version": "2.48.0", + "Version": "2.38.0", "Source": "Bioconductor", - "git_url": "https://git.bioconductor.org/packages/Biobase", - "git_branch": "RELEASE_3_11", - "git_last_commit": "4ffadf2", - "git_last_commit_date": "2020-04-27", - "Hash": "da9b1bc36fb35ebbec219dc007657f21", + "Hash": "8c8060a3f339c35f1dc14af3b7d22d71", "Requirements": [ "BiocGenerics" ] }, "BiocGenerics": { "Package": "BiocGenerics", - "Version": "0.34.0", + "Version": "0.24.0", "Source": "Bioconductor", - "git_url": "https://git.bioconductor.org/packages/BiocGenerics", - "git_branch": "RELEASE_3_11", - "git_last_commit": "f7c2020", - "git_last_commit_date": "2020-04-27", - "Hash": "ae191b5608f175de0f69b6302390c705", + "Hash": "108ff3e3233e79aef825decc9fa87ee3", "Requirements": [] }, - "BiocManager": { - "Package": "BiocManager", - "Version": "1.30.19", - "Source": "Repository", - "Repository": "CRAN", - "Hash": "726b3bc83ff8e0c35c7efdb74a462b0d", + "BiocInstaller": { + "Package": "BiocInstaller", + "Version": "1.28.0", + "Source": "Bioconductor", + "Hash": "ee02868b8bd3657a3463d8bc3a64d831", "Requirements": [] }, "BiocParallel": { "Package": "BiocParallel", - "Version": "1.22.0", + "Version": "1.12.0", "Source": "Bioconductor", - "git_url": "https://git.bioconductor.org/packages/BiocParallel", - "git_branch": "RELEASE_3_11", - "git_last_commit": "430511c", - "git_last_commit_date": "2020-04-27", - "Hash": "6457b5a769de3e02704fd1b529a3c6e1", + "Hash": "4fc0d93ea840783e2000f15f111b8a9b", "Requirements": [ "BH", "futile.logger", @@ -98,19 +79,14 @@ }, "Biostrings": { "Package": "Biostrings", - "Version": "2.56.0", + "Version": "2.46.0", "Source": "Bioconductor", - "git_url": "https://git.bioconductor.org/packages/Biostrings", - "git_branch": "RELEASE_3_11", - "git_last_commit": "79b7ec8", - "git_last_commit_date": "2020-04-27", - "Hash": "f5d135c565a244740559409e48c410cd", + "Hash": "12005b8dd90f7f7f9864ee9d6965c366", "Requirements": [ "BiocGenerics", "IRanges", "S4Vectors", - "XVector", - "crayon" + "XVector" ] }, "DBI": { @@ -138,32 +114,21 @@ }, "DelayedArray": { "Package": "DelayedArray", - "Version": "0.14.1", + "Version": "0.4.1", "Source": "Bioconductor", - "git_url": "https://git.bioconductor.org/packages/DelayedArray", - "git_branch": "RELEASE_3_11", - "git_last_commit": "52230a4", - "git_last_commit_date": "2020-07-13", - "Hash": "8430a6ec606d0d92198ff107f1d98261", + "Hash": "c2572a27fb1281ee4c11390826f326a1", "Requirements": [ "BiocGenerics", "IRanges", - "Matrix", "S4Vectors", "matrixStats" ] }, "GEOquery": { "Package": "GEOquery", - "Version": "2.56.0", - "Source": "URL", - "RemoteType": "url", - "RemoteUrl": "https://bioconductor.org/packages/3.11/bioc/src/contrib/GEOquery_2.56.0.tar.gz", - "git_url": "https://git.bioconductor.org/packages/GEOquery", - "git_branch": "RELEASE_3_11", - "git_last_commit": "50417b3", - "git_last_commit_date": "2020-04-27", - "Hash": "4f5f180eb5db85e0741db59fee6158c2", + "Version": "2.46.15", + "Source": "Bioconductor", + "Hash": "71fbb4c39d7ea4ca06dcfdfd41ef1ee5", "Requirements": [ "Biobase", "dplyr", @@ -177,13 +142,9 @@ }, "GenomeInfoDb": { "Package": "GenomeInfoDb", - "Version": "1.24.2", + "Version": "1.14.0", "Source": "Bioconductor", - "git_url": "https://git.bioconductor.org/packages/GenomeInfoDb", - "git_branch": "RELEASE_3_11", - "git_last_commit": "e3713f3", - "git_last_commit_date": "2020-06-14", - "Hash": "f1556568ab93fd7704380539fca71e6a", + "Hash": "39dc4261100e402165a6db62f364b493", "Requirements": [ "BiocGenerics", "GenomeInfoDbData", @@ -194,20 +155,16 @@ }, "GenomeInfoDbData": { "Package": "GenomeInfoDbData", - "Version": "1.2.3", + "Version": "1.0.0", "Source": "Bioconductor", - "Hash": "8fe62eac6e27b8e56d51f9ae6030cbcd", + "Hash": "336cc20fd69db19ebfad8a73e05d88b3", "Requirements": [] }, "GenomicRanges": { "Package": "GenomicRanges", - "Version": "1.40.0", + "Version": "1.30.3", "Source": "Bioconductor", - "git_url": "https://git.bioconductor.org/packages/GenomicRanges", - "git_branch": "RELEASE_3_11", - "git_last_commit": "a9e18e4", - "git_last_commit_date": "2020-04-27", - "Hash": "05cd2ba8e1e373e9089454cf762df723", + "Hash": "ecfab21e609cea7ee297e0e1230b5bb4", "Requirements": [ "BiocGenerics", "GenomeInfoDb", @@ -218,13 +175,9 @@ }, "IRanges": { "Package": "IRanges", - "Version": "2.22.2", + "Version": "2.12.0", "Source": "Bioconductor", - "git_url": "https://git.bioconductor.org/packages/IRanges", - "git_branch": "RELEASE_3_11", - "git_last_commit": "8c5e991", - "git_last_commit_date": "2020-05-20", - "Hash": "1403fa5c98c5f48b989a6bc5a65c6c25", + "Hash": "d89aecf720b113b47f936c48b356d264", "Requirements": [ "BiocGenerics", "S4Vectors" @@ -232,26 +185,26 @@ }, "KernSmooth": { "Package": "KernSmooth", - "Version": "2.23-20", + "Version": "2.23-15", "Source": "Repository", "Repository": "CRAN", - "Hash": "8dcfa99b14c296bc9f1fd64d52fd3ce7", + "Hash": "081f417f4d6d55b7e8981433e8404a22", "Requirements": [] }, "MASS": { "Package": "MASS", - "Version": "7.3-58", + "Version": "7.3-49", "Source": "Repository", "Repository": "CRAN", - "Hash": "4bf2c61e656bbc238634c798c208d386", + "Hash": "f47828414f155725f342d93be7fcfabd", "Requirements": [] }, "Matrix": { "Package": "Matrix", - "Version": "1.5-1", + "Version": "1.2-12", "Source": "Repository", "Repository": "CRAN", - "Hash": "539dc0c0c05636812f1080f473d2c177", + "Hash": "2451d6490ec017b18b6eff460c65fd85", "Requirements": [ "lattice" ] @@ -266,25 +219,25 @@ }, "RCurl": { "Package": "RCurl", - "Version": "1.98-1.9", + "Version": "1.98-1.10", "Source": "Repository", "Repository": "CRAN", - "Hash": "ea2f19dade6bd911b29b9bbb115d08f6", + "Hash": "35136c52e39f2679ebbe7bf448e3bd5a", "Requirements": [ "bitops" ] }, "RSQLite": { "Package": "RSQLite", - "Version": "2.2.20", + "Version": "2.3.0", "Source": "Repository", "Repository": "CRAN", - "Hash": "b5df65015a2d74c144a1419dab6ffd3b", + "Hash": "264c1861d7ac1dc71ecb5ac5c4c1318a", "Requirements": [ "DBI", - "Rcpp", "bit64", "blob", + "cpp11", "memoise", "pkgconfig", "plogr" @@ -292,36 +245,26 @@ }, "Rcpp": { "Package": "Rcpp", - "Version": "1.0.10", + "Version": "1.0.7", "Source": "Repository", "Repository": "CRAN", - "Hash": "e749cae40fa9ef469b6050959517453c", + "Hash": "dab19adae4440ae55aa8a9d238b246bb", "Requirements": [] }, "S4Vectors": { "Package": "S4Vectors", - "Version": "0.26.1", + "Version": "0.16.0", "Source": "Bioconductor", - "git_url": "https://git.bioconductor.org/packages/S4Vectors", - "git_branch": "RELEASE_3_11", - "git_last_commit": "935769c", - "git_last_commit_date": "2020-05-15", - "Hash": "c252d04c13a3a6667d3cc140360780f1", + "Hash": "e9cd4cea8c93cbdd8595e562c8ed0624", "Requirements": [ "BiocGenerics" ] }, "SCAN.UPC": { "Package": "SCAN.UPC", - "Version": "2.30.0", - "Source": "URL", - "RemoteType": "url", - "RemoteUrl": "https://bioconductor.org/packages/3.11/bioc/src/contrib/SCAN.UPC_2.30.0.tar.gz", - "git_url": "https://git.bioconductor.org/packages/SCAN.UPC", - "git_branch": "RELEASE_3_11", - "git_last_commit": "052d3c4", - "git_last_commit_date": "2020-04-27", - "Hash": "f76f2473345a4c25263772c3c862df0e", + "Version": "2.20.0", + "Source": "Bioconductor", + "Hash": "1583bdf3637b41eb5f8812e7ac678f73", "Requirements": [ "Biobase", "Biostrings", @@ -337,13 +280,9 @@ }, "SummarizedExperiment": { "Package": "SummarizedExperiment", - "Version": "1.18.2", + "Version": "1.8.1", "Source": "Bioconductor", - "git_url": "https://git.bioconductor.org/packages/SummarizedExperiment", - "git_branch": "RELEASE_3_11", - "git_last_commit": "e22fafe", - "git_last_commit_date": "2020-07-09", - "Hash": "811eb16b3d542aa098d4c89f0985f3bc", + "Hash": "57080b28b2f5606100e02a7ab01b3022", "Requirements": [ "Biobase", "BiocGenerics", @@ -365,13 +304,9 @@ }, "XVector": { "Package": "XVector", - "Version": "0.28.0", + "Version": "0.18.0", "Source": "Bioconductor", - "git_url": "https://git.bioconductor.org/packages/XVector", - "git_branch": "RELEASE_3_11", - "git_last_commit": "8bda737", - "git_last_commit_date": "2020-04-27", - "Hash": "a5669a9d44010120a5c10be7977f0626", + "Hash": "c677dd00d99bd1f81caf0fc3d9fa7672", "Requirements": [ "BiocGenerics", "IRanges", @@ -381,30 +316,20 @@ }, "affxparser": { "Package": "affxparser", - "Version": "1.60.0", + "Version": "1.50.0", "Source": "Bioconductor", - "git_url": "https://git.bioconductor.org/packages/affxparser", - "git_branch": "RELEASE_3_11", - "git_last_commit": "22b10b1", - "git_last_commit_date": "2020-04-27", - "Hash": "4fca40e4bb842b56d6be95bff88ac85f", + "Hash": "86914cfc7998f083d207a8ae84488697", "Requirements": [] }, "affy": { "Package": "affy", - "Version": "1.66.0", - "Source": "URL", - "RemoteType": "url", - "RemoteUrl": "https://bioconductor.org/packages/3.11/bioc/src/contrib/affy_1.66.0.tar.gz", - "git_url": "https://git.bioconductor.org/packages/affy", - "git_branch": "RELEASE_3_11", - "git_last_commit": "ae131f8", - "git_last_commit_date": "2020-04-27", - "Hash": "7d4686f9fa0ba9db6d0f596058dd1a15", + "Version": "1.56.0", + "Source": "Bioconductor", + "Hash": "1022ecaff1da7aaa5f1ebe6168794e97", "Requirements": [ "Biobase", "BiocGenerics", - "BiocManager", + "BiocInstaller", "affyio", "preprocessCore", "zlibbioc" @@ -412,28 +337,18 @@ }, "affyio": { "Package": "affyio", - "Version": "1.58.0", - "Source": "URL", - "RemoteType": "url", - "RemoteUrl": "https://bioconductor.org/packages/3.11/bioc/src/contrib/affyio_1.58.0.tar.gz", - "git_url": "https://git.bioconductor.org/packages/affyio", - "git_branch": "RELEASE_3_11", - "git_last_commit": "76fee54", - "git_last_commit_date": "2020-04-27", - "Hash": "841239ddcf5f028105cd3687976948ef", + "Version": "1.48.0", + "Source": "Bioconductor", + "Hash": "f973e1ee016e8ff7095847e0769a9d97", "Requirements": [ "zlibbioc" ] }, "annotate": { "Package": "annotate", - "Version": "1.66.0", + "Version": "1.56.2", "Source": "Bioconductor", - "git_url": "https://git.bioconductor.org/packages/annotate", - "git_branch": "RELEASE_3_11", - "git_last_commit": "a63378f", - "git_last_commit_date": "2020-04-27", - "Hash": "61677ca20165e7790955cdd1fc27281e", + "Hash": "064f14d8325abc226f7433f9ff8094c9", "Requirements": [ "AnnotationDbi", "Biobase", @@ -517,10 +432,10 @@ }, "boot": { "Package": "boot", - "Version": "1.3-28", + "Version": "1.3-20", "Source": "Repository", "Repository": "CRAN", - "Hash": "0baa960e3b49c6176a4f42addcbacc59", + "Hash": "560a6eb3b4658e2ce3d0f8feb087fe56", "Requirements": [] }, "brew": { @@ -531,6 +446,17 @@ "Hash": "92a5f887f9ae3035ac7afde22ba73ee9", "Requirements": [] }, + "cachem": { + "Package": "cachem", + "Version": "1.0.7", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "cda74447c42f529de601fe4d4050daef", + "Requirements": [ + "fastmap", + "rlang" + ] + }, "callr": { "Package": "callr", "Version": "3.4.3", @@ -544,10 +470,10 @@ }, "class": { "Package": "class", - "Version": "7.3-20", + "Version": "7.3-14", "Source": "Repository", "Repository": "CRAN", - "Hash": "da09d82223e669d270e47ed24ac8686e", + "Hash": "c39d47020cdf42e88bd80c83ca6a0a0b", "Requirements": [ "MASS" ] @@ -570,18 +496,18 @@ }, "cluster": { "Package": "cluster", - "Version": "2.1.4", + "Version": "2.0.6", "Source": "Repository", "Repository": "CRAN", - "Hash": "5edbbabab6ce0bf7900a74fd4358628e", + "Hash": "ea8c392e186024710ab52bc405212f5e", "Requirements": [] }, "codetools": { "Package": "codetools", - "Version": "0.2-18", + "Version": "0.2-15", "Source": "Repository", "Repository": "CRAN", - "Hash": "019388fc48e48b3da0d3a76ff94608a8", + "Hash": "9f88e0b246d1b22d1a88b9aa4ea57ebd", "Requirements": [] }, "commonmark": { @@ -698,10 +624,10 @@ }, "dplyr": { "Package": "dplyr", - "Version": "1.0.0", + "Version": "1.0.2", "Source": "Repository", "Repository": "CRAN", - "Hash": "4011f62581a34080e44105d4aa05a97f", + "Hash": "d0509913b27ea898189ee664b6030dc2", "Requirements": [ "R6", "ellipsis", @@ -715,21 +641,6 @@ "vctrs" ] }, - "edgeR": { - "Package": "edgeR", - "Version": "3.30.3", - "Source": "Bioconductor", - "git_url": "https://git.bioconductor.org/packages/edgeR", - "git_branch": "RELEASE_3_11", - "git_last_commit": "7a3a272", - "git_last_commit_date": "2020-06-02", - "Hash": "fed69054bac345df0b60fc9afa7101e9", - "Requirements": [ - "Rcpp", - "limma", - "locfit" - ] - }, "ellipsis": { "Package": "ellipsis", "Version": "0.3.2", @@ -756,6 +667,14 @@ "Hash": "7fce217eaaf8016e72065e85c73027b5", "Requirements": [] }, + "fastmap": { + "Package": "fastmap", + "Version": "1.1.1", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "f7736a18de97dea803bde0a2daaafb27", + "Requirements": [] + }, "ff": { "Package": "ff", "Version": "2.2-14", @@ -779,10 +698,10 @@ }, "foreign": { "Package": "foreign", - "Version": "0.8-76", + "Version": "0.8-69", "Source": "Repository", "Repository": "CRAN", - "Hash": "649b9c7a979d50d869578c73fed072cd", + "Hash": "6f953f3e73fc00af8cdad0864f535f97", "Requirements": [] }, "formatR": { @@ -822,19 +741,13 @@ }, "genefilter": { "Package": "genefilter", - "Version": "1.70.0", - "Source": "URL", - "RemoteType": "url", - "RemoteUrl": "https://bioconductor.org/packages/3.11/bioc/src/contrib/genefilter_1.70.0.tar.gz", - "git_url": "https://git.bioconductor.org/packages/genefilter", - "git_branch": "RELEASE_3_11", - "git_last_commit": "a071480", - "git_last_commit_date": "2020-04-27", - "Hash": "8db2ebb178f95b85a77813e2d99c6b40", + "Version": "1.60.0", + "Source": "Bioconductor", + "Hash": "e325ea00e99e1c3ce474aa07b88cd81c", "Requirements": [ "AnnotationDbi", "Biobase", - "BiocGenerics", + "S4Vectors", "annotate", "survival" ] @@ -870,10 +783,10 @@ }, "glue": { "Package": "glue", - "Version": "1.6.2", + "Version": "1.4.1", "Source": "Repository", "Repository": "CRAN", - "Hash": "4f2596dfb05dac67b9dc558e5c6fba2e", + "Hash": "f43e0d5e85ccb0a4045670c0607ee504", "Requirements": [] }, "highr": { @@ -900,13 +813,15 @@ }, "htmltools": { "Package": "htmltools", - "Version": "0.5.0", + "Version": "0.5.4", "Source": "Repository", "Repository": "CRAN", - "Hash": "7d651b7131794fe007b1ad6f21aaa401", + "Hash": "9d27e99cc90bd701c0a7a63e5923f9b7", "Requirements": [ "base64enc", "digest", + "ellipsis", + "fastmap", "rlang" ] }, @@ -999,10 +914,10 @@ }, "lattice": { "Package": "lattice", - "Version": "0.20-45", + "Version": "0.20-35", "Source": "Repository", "Repository": "CRAN", - "Hash": "b64cdbb2b340437c4ee047a1f4c4377b", + "Hash": "10a22a9a66fbe7944e9ef98985d7c927", "Requirements": [] }, "lazyeval": { @@ -1027,27 +942,11 @@ }, "limma": { "Package": "limma", - "Version": "3.44.3", - "Source": "URL", - "RemoteType": "url", - "RemoteUrl": "https://bioconductor.org/packages/3.11/bioc/src/contrib/limma_3.44.3.tar.gz", - "git_url": "https://git.bioconductor.org/packages/limma", - "git_branch": "RELEASE_3_11", - "git_last_commit": "90275de", - "git_last_commit_date": "2020-06-12", - "Hash": "6f85e30aa587815acc9551390ff0bbec", + "Version": "3.34.9", + "Source": "Bioconductor", + "Hash": "06c81c4043f41177428a83c73a59d094", "Requirements": [] }, - "locfit": { - "Package": "locfit", - "Version": "1.5-9.4", - "Source": "Repository", - "Repository": "CRAN", - "Hash": "760b5b542e8435237d1b3c253bfe18e7", - "Requirements": [ - "lattice" - ] - }, "magrittr": { "Package": "magrittr", "Version": "1.5", @@ -1077,20 +976,21 @@ }, "memoise": { "Package": "memoise", - "Version": "1.1.0", + "Version": "2.0.1", "Source": "Repository", "Repository": "CRAN", - "Hash": "58baa74e4603fcfb9a94401c58c8f9b1", + "Hash": "e2817ccf4a065c5d9d7f2cfbe7c1d78c", "Requirements": [ - "digest" + "cachem", + "rlang" ] }, "mgcv": { "Package": "mgcv", - "Version": "1.8-41", + "Version": "1.8-23", "Source": "Repository", "Repository": "CRAN", - "Hash": "6b3904f13346742caa3e82dd0303d4ad", + "Hash": "b1a3bba86e45ddea6b66e67623f587ee", "Requirements": [ "Matrix", "nlme" @@ -1106,33 +1006,27 @@ }, "nlme": { "Package": "nlme", - "Version": "3.1-161", + "Version": "3.1-131", "Source": "Repository", "Repository": "CRAN", - "Hash": "b49e163093c0ef46fbbfc40bcb87916c", + "Hash": "215a901b25abf4077a8e7d2d6ce2b211", "Requirements": [ "lattice" ] }, "nnet": { "Package": "nnet", - "Version": "7.3-18", + "Version": "7.3-12", "Source": "Repository", "Repository": "CRAN", - "Hash": "170da2130d5332bea7d6ede01875ba1d", + "Hash": "68287aec1f476c41d16ce1ace445800c", "Requirements": [] }, "oligo": { "Package": "oligo", - "Version": "1.52.1", - "Source": "URL", - "RemoteType": "url", - "RemoteUrl": "https://bioconductor.org/packages/3.11/bioc/src/contrib/oligo_1.52.1.tar.gz", - "git_url": "https://git.bioconductor.org/packages/oligo", - "git_branch": "RELEASE_3_11", - "git_last_commit": "cbd66c8", - "git_last_commit_date": "2020-08-10", - "Hash": "25a32b15cf0656f2624672150de9d750", + "Version": "1.42.0", + "Source": "Bioconductor", + "Hash": "694c134c6a0d42dd72084c9283735e1a", "Requirements": [ "Biobase", "BiocGenerics", @@ -1149,19 +1043,13 @@ }, "oligoClasses": { "Package": "oligoClasses", - "Version": "1.50.4", - "Source": "URL", - "RemoteType": "url", - "RemoteUrl": "https://bioconductor.org/packages/3.11/bioc/src/contrib/oligoClasses_1.50.4.tar.gz", - "git_url": "https://git.bioconductor.org/packages/oligoClasses", - "git_branch": "RELEASE_3_11", - "git_last_commit": "da7b856", - "git_last_commit_date": "2020-08-10", - "Hash": "f4190217bc7d1b697b37bd4711560084", + "Version": "1.40.0", + "Source": "Bioconductor", + "Hash": "c197dfefe8a4928044851fceb05b5eba", "Requirements": [ "Biobase", "BiocGenerics", - "BiocManager", + "BiocInstaller", "Biostrings", "DBI", "GenomicRanges", @@ -1176,10 +1064,10 @@ }, "openssl": { "Package": "openssl", - "Version": "1.4.2", + "Version": "2.0.3", "Source": "Repository", "Repository": "CRAN", - "Hash": "b3209c62052922b6c629544d94c8fa8a", + "Hash": "b9621e75c0652041002a19609fb23c5a", "Requirements": [ "askpass" ] @@ -1261,15 +1149,9 @@ }, "preprocessCore": { "Package": "preprocessCore", - "Version": "1.50.0", - "Source": "URL", - "RemoteType": "url", - "RemoteUrl": "https://bioconductor.org/packages/3.11/bioc/src/contrib/preprocessCore_1.50.0.tar.gz", - "git_url": "https://git.bioconductor.org/packages/preprocessCore", - "git_branch": "RELEASE_3_11", - "git_last_commit": "9230366", - "git_last_commit_date": "2020-04-27", - "Hash": "4d183aca4311a7610cb96d14e528e73e", + "Version": "1.40.0", + "Source": "Bioconductor", + "Hash": "db115919701b4e644b96de3f7523d17a", "Requirements": [] }, "prettyunits": { @@ -1291,19 +1173,6 @@ "ps" ] }, - "progress": { - "Package": "progress", - "Version": "1.2.2", - "Source": "Repository", - "Repository": "CRAN", - "Hash": "14dc9f7a3c91ebb14ec5bb9208a07061", - "Requirements": [ - "R6", - "crayon", - "hms", - "prettyunits" - ] - }, "promises": { "Package": "promises", "Version": "1.1.1", @@ -1328,10 +1197,10 @@ }, "purrr": { "Package": "purrr", - "Version": "0.3.4", + "Version": "0.3.5", "Source": "Repository", "Repository": "CRAN", - "Hash": "97def703420c8ab10d8f0e6c72101e02", + "Hash": "54842a2443c76267152eface28d9e90a", "Requirements": [ "magrittr", "rlang" @@ -1360,22 +1229,18 @@ }, "readr": { "Package": "readr", - "Version": "2.1.3", + "Version": "1.3.1", "Source": "Repository", "Repository": "CRAN", - "Hash": "2dfbfc673ccb3de3d8836b4b3bd23d14", + "Hash": "af8ab99cd936773a148963905736907b", "Requirements": [ + "BH", "R6", - "cli", + "Rcpp", "clipr", - "cpp11", "crayon", "hms", - "lifecycle", - "rlang", - "tibble", - "tzdb", - "vroom" + "tibble" ] }, "rematch2": { @@ -1446,10 +1311,10 @@ }, "rpart": { "Package": "rpart", - "Version": "4.1.19", + "Version": "4.1-13", "Source": "Repository", "Repository": "CRAN", - "Hash": "b3c892a81783376cc2204af0f5805a80", + "Hash": "6315535da80d5cc6c2e573966d8c8210", "Requirements": [] }, "rprojroot": { @@ -1530,28 +1395,21 @@ }, "survival": { "Package": "survival", - "Version": "3.4-0", + "Version": "2.41-3", "Source": "Repository", "Repository": "CRAN", - "Hash": "04411ae66ab4659230c067c32966fc20", + "Hash": "60b1da51f5e3556fd177170a1aa40b49", "Requirements": [ "Matrix" ] }, "sva": { "Package": "sva", - "Version": "3.36.0", - "Source": "URL", - "RemoteType": "url", - "RemoteUrl": "https://bioconductor.org/packages/3.11/bioc/src/contrib/sva_3.36.0.tar.gz", - "git_url": "https://git.bioconductor.org/packages/sva", - "git_branch": "RELEASE_3_11", - "git_last_commit": "d92b71f", - "git_last_commit_date": "2020-04-27", - "Hash": "7063ce04e0eeec513cff2d23b1eef5b1", + "Version": "3.26.0", + "Source": "Bioconductor", + "Hash": "c21e7fce3b904dae22f5d1a151b8a0c5", "Requirements": [ "BiocParallel", - "edgeR", "genefilter", "limma", "matrixStats", @@ -1643,27 +1501,11 @@ }, "tximport": { "Package": "tximport", - "Version": "1.16.1", - "Source": "URL", - "RemoteType": "url", - "RemoteUrl": "https://bioconductor.org/packages/3.11/bioc/src/contrib/tximport_1.16.1.tar.gz", - "git_url": "https://git.bioconductor.org/packages/tximport", - "git_branch": "RELEASE_3_11", - "git_last_commit": "a4fe5d3", - "git_last_commit_date": "2020-06-05", - "Hash": "f75925813c3e168c8d5ec5c41e645d71", + "Version": "1.6.0", + "Source": "Bioconductor", + "Hash": "2c824ac20bbb34bba92a9b5b0d600fec", "Requirements": [] }, - "tzdb": { - "Package": "tzdb", - "Version": "0.3.0", - "Source": "Repository", - "Repository": "CRAN", - "Hash": "b2e1cbce7c903eaf23ec05c58e59fb5e", - "Requirements": [ - "cpp11" - ] - }, "usethis": { "Package": "usethis", "Version": "1.6.1", @@ -1710,29 +1552,6 @@ "rlang" ] }, - "vroom": { - "Package": "vroom", - "Version": "1.6.1", - "Source": "Repository", - "Repository": "CRAN", - "Hash": "7015a74373b83ffaef64023f4a0f5033", - "Requirements": [ - "bit64", - "cli", - "cpp11", - "crayon", - "glue", - "hms", - "lifecycle", - "progress", - "rlang", - "tibble", - "tidyselect", - "tzdb", - "vctrs", - "withr" - ] - }, "whisker": { "Package": "whisker", "Version": "0.4", @@ -1751,10 +1570,10 @@ }, "xfun": { "Package": "xfun", - "Version": "0.16", + "Version": "0.36", "Source": "Repository", "Repository": "CRAN", - "Hash": "b4106139b90981a8bfea9c10bab0baf1", + "Hash": "f5baec54606751aa53ac9c0e05848ed6", "Requirements": [] }, "xml2": { @@ -1793,15 +1612,9 @@ }, "zlibbioc": { "Package": "zlibbioc", - "Version": "1.34.0", - "Source": "URL", - "RemoteType": "url", - "RemoteUrl": "https://bioconductor.org/packages/3.11/bioc/src/contrib/zlibbioc_1.34.0.tar.gz", - "git_url": "https://git.bioconductor.org/packages/zlibbioc", - "git_branch": "RELEASE_3_11", - "git_last_commit": "2db035c", - "git_last_commit_date": "2020-04-27", - "Hash": "d9bbfbd67e8c4bced2f5c1ce4251a744", + "Version": "1.24.0", + "Source": "Bioconductor", + "Hash": "75640bcdaa390770a672332c904642db", "Requirements": [] } } diff --git a/common/dockerfiles/Dockerfile.migrations b/common/dockerfiles/Dockerfile.migrations index 8688f12f1..00e704fa2 100644 --- a/common/dockerfiles/Dockerfile.migrations +++ b/common/dockerfiles/Dockerfile.migrations @@ -1,26 +1,19 @@ -FROM python:3.8.5-slim-buster +FROM ccdlstaging/dr_base:latest -RUN groupadd user && useradd --create-home --home-dir /home/user -g user user -WORKDIR /home/user - -RUN apt-get update -qq && \ - apt-get install -y \ - gcc \ - libpq-dev +# Fail in case of an error at any stage in the pipe. +SHELL ["/bin/bash", "-o", "pipefail", "-c"] -# Needed for migration 0006 -COPY config/ config +WORKDIR /home/user COPY common/requirements.txt . - -RUN pip install -r requirements.txt +RUN pip install --ignore-installed --no-cache-dir -r requirements.txt COPY common/ . +COPY config config ARG SYSTEM_VERSION - -ENV SYSTEM_VERSION $SYSTEM_VERSION +ENV SYSTEM_VERSION=$SYSTEM_VERSION USER user -ENTRYPOINT [""] +ENTRYPOINT [] diff --git a/foreman/data_refinery_foreman/foreman/management/commands/update_experiment_metadata.py b/foreman/data_refinery_foreman/foreman/management/commands/update_experiment_metadata.py index 00d8a637d..21ef3fe11 100644 --- a/foreman/data_refinery_foreman/foreman/management/commands/update_experiment_metadata.py +++ b/foreman/data_refinery_foreman/foreman/management/commands/update_experiment_metadata.py @@ -51,7 +51,8 @@ def handle(self, *args, **options): while True: for experiment in page.object_list: logger.debug( - "Refreshing metadata for an experiment.", experiment=experiment.accession_code + "Refreshing metadata for an experiment.", + experiment=experiment.accession_code, ) try: if experiment.source_database == "SRA": @@ -70,12 +71,10 @@ def handle(self, *args, **options): GeoSurveyor._apply_metadata_to_experiment(experiment, gse) elif experiment.source_database == "ARRAY_EXPRESS": - request_url = EXPERIMENTS_URL + experiment.accession_code - experiment_request = utils.requests_retry_session().get( - request_url, timeout=60 - ) try: - parsed_json = experiment_request.json()["experiments"]["experiment"][0] + metadata = ArrayExpressSurveyor._get_experiment_data( + experiment.accession_code + ) except KeyError: logger.error( "Remote experiment has no Experiment data!", @@ -83,7 +82,7 @@ def handle(self, *args, **options): survey_job=self.survey_job.id, ) continue - ArrayExpressSurveyor._apply_metadata_to_experiment(experiment, parsed_json) + ArrayExpressSurveyor._apply_metadata_to_experiment(experiment, metadata) experiment.save() diff --git a/foreman/data_refinery_foreman/surveyor/array_express.py b/foreman/data_refinery_foreman/surveyor/array_express.py index f99568454..e99cb5863 100644 --- a/foreman/data_refinery_foreman/surveyor/array_express.py +++ b/foreman/data_refinery_foreman/surveyor/array_express.py @@ -1,6 +1,5 @@ -from typing import Dict, List - -from django.utils.dateparse import parse_date +from datetime import datetime +from typing import Dict, List, Tuple from data_refinery_common.enums import Downloaders from data_refinery_common.logging import get_and_configure_logger @@ -27,7 +26,9 @@ logger = get_and_configure_logger(__name__) -EXPERIMENTS_URL = "https://www.ebi.ac.uk/arrayexpress/json/v3/experiments/" +EXPERIMENTS_URL = "https://www.ebi.ac.uk/biostudies/api/v1/studies/" +IDF_URL_TEMPLATE = "https://www.ebi.ac.uk/arrayexpress/files/{code}/{code}.idf.txt" +SDRF_URL_TEMPLATE = "https://www.ebi.ac.uk/biostudies/files/{code}/{code}.sdrf.txt" SAMPLES_URL = EXPERIMENTS_URL + "{}/samples" UNKNOWN = "UNKNOWN" @@ -40,37 +41,81 @@ class ArrayExpressSurveyor(ExternalSourceSurveyor): def source_type(self): return Downloaders.ARRAY_EXPRESS.value - @staticmethod - def _get_last_update_date(parsed_json: Dict) -> str: - if "lastupdatedate" in parsed_json: - return parsed_json["lastupdatedate"] - else: - return parsed_json["releasedate"] + def _parse_api_info_response(data: Dict) -> Dict: + return { + "file_count": data["files"], + "ftp_link": data["ftpLink"], + "last_updated_at": datetime.fromtimestamp(data["modified"] / 1000), + "released_at": datetime.fromtimestamp(data["released"] / 1000), + } @classmethod - def _apply_metadata_to_experiment(cls, experiment_object: Experiment, parsed_json: Dict): - # We aren't sure these fields will be populated, or how many there will be. - # Try to join them all together, or set a sensible default. - experiment_descripton = "" - if "description" in parsed_json and len(parsed_json["description"]) > 0: - for description_item in parsed_json["description"]: - if "text" in description_item: - experiment_descripton = experiment_descripton + description_item["text"] + "\n" - - if experiment_descripton == "": - experiment_descripton = "Description not available.\n" - - experiment_object.source_database = "ARRAY_EXPRESS" - experiment_object.title = parsed_json["name"] - # This will need to be updated if we ever use Array - # Express to get other kinds of data. - experiment_object.technology = "MICROARRAY" - experiment_object.description = experiment_descripton - - experiment_object.source_first_published = parse_date(parsed_json["releasedate"]) - experiment_object.source_last_modified = parse_date(cls._get_last_update_date(parsed_json)) - - def create_experiment_from_api(self, experiment_accession_code: str) -> (Experiment, Dict): + def _parse_api_data_response(cls, data: Dict) -> Dict: + parsed_data = {} + for attribute in data["section"]["attributes"]: + attribute_name = attribute["name"] + if attribute_name not in {"Description", "Organism", "Title"}: + continue + parsed_data[attribute_name.lower()] = attribute["value"] + + for subsection in data["section"]["subsections"]: + for subsection_entry in subsection: + # Protocols. + if isinstance(subsection_entry, dict) and subsection_entry["type"] == "Protocols": + if "protocols" not in parsed_data: + parsed_data["protocols"] = [] + + protocol = {} + for attribute in subsection_entry["attributes"]: + if "value" not in attribute: + continue + protocol[attribute["name"].lower()] = attribute["value"] + if protocol: + parsed_data["protocols"].append(protocol) + + # Array Designs. + elif subsection["type"] == "Assays and Data": + array_designs = [] + for assays_data_subsection in subsection["subsections"]: + if assays_data_subsection["type"] == "Array Designs": + for link in assays_data_subsection["links"]: + for link_entry in link: + array_designs.append(link_entry["url"]) + parsed_data["array_designs"] = array_designs + + return parsed_data + + @classmethod + def _get_experiment_data(cls, accession_code: str) -> Dict: + experiment_url = f"{EXPERIMENTS_URL}{accession_code}" + data = {"url": experiment_url} + + # Get experiment main data. + response = utils.requests_retry_session().get(experiment_url, timeout=60).json() + data.update(cls._parse_api_data_response(response)) + + # Get experiment info. + response = ( + utils.requests_retry_session() + .get(f"{EXPERIMENTS_URL}{accession_code}/info", timeout=60) + .json() + ) + info = cls._parse_api_info_response(response) + + data.update(info) + return data + + @classmethod + def _apply_metadata_to_experiment(cls, experiment: Experiment, metadata: Dict): + experiment.title = metadata["title"] + experiment.description = metadata.get("description", "Description not available.") + experiment.source_database = "ARRAY_EXPRESS" + # This will need to be updated if we ever use Array Express to get other kinds of data. + experiment.technology = "MICROARRAY" + experiment.source_first_published = metadata["released_at"] + experiment.source_last_modified = metadata["last_updated_at"] + + def create_experiment_from_api(self, experiment_accession_code: str) -> Tuple[Experiment, Dict]: """Given an experiment accession code, create an Experiment object. Also returns a dictionary of additional information about the @@ -78,184 +123,154 @@ def create_experiment_from_api(self, experiment_accession_code: str) -> (Experim Will raise an UnsupportedPlatformException if this experiment was conducted using a platform which we don't support. - - See an example at: https://www.ebi.ac.uk/arrayexpress/json/v3/experiments/E-MTAB-3050/sample """ - request_url = EXPERIMENTS_URL + experiment_accession_code - experiment_request = utils.requests_retry_session().get(request_url, timeout=60) try: - parsed_json = experiment_request.json()["experiments"]["experiment"][0] + experiment_data = self._get_experiment_data(accession_code=experiment_accession_code) except KeyError: logger.error( - "Remote experiment has no Experiment data!", + "Could not collect data from remote experiment source!", experiment_accession_code=experiment_accession_code, survey_job=self.survey_job.id, ) raise - experiment = {} - experiment["name"] = parsed_json["name"] - experiment["experiment_accession_code"] = experiment_accession_code - + array_designs = experiment_data["array_designs"] # This experiment has no platform at all, and is therefore useless. - if "arraydesign" not in parsed_json or len(parsed_json["arraydesign"]) == 0: + if not array_designs: logger.warn( - "Remote experiment has no arraydesign listed.", + "Remote experiment has no array design listed.", experiment_accession_code=experiment_accession_code, survey_job=self.survey_job.id, ) raise UnsupportedPlatformException - # If there is more than one arraydesign listed in the experiment + + platforms = {} + # If there is more than one array design listed in the experiment # then there is no other way to determine which array was used # for which sample other than looking at the header of the CEL # file. That obviously cannot happen until the CEL file has been # downloaded so we can just mark it as UNKNOWN and let the # downloader inspect the downloaded file to determine the # array then. - elif ( - len(parsed_json["arraydesign"]) != 1 or "accession" not in parsed_json["arraydesign"][0] - ): - experiment["platform_accession_code"] = UNKNOWN - experiment["platform_accession_name"] = UNKNOWN - experiment["manufacturer"] = UNKNOWN + if len(array_designs) != 1: + platforms["platform_accession_code"] = UNKNOWN + platforms["platform_accession_name"] = UNKNOWN + platforms["manufacturer"] = UNKNOWN else: - external_accession = parsed_json["arraydesign"][0]["accession"] + external_accession = array_designs[0] for platform in get_supported_microarray_platforms(): if platform["external_accession"] == external_accession: - experiment["platform_accession_code"] = get_normalized_platform( + platforms["platform_accession_code"] = get_normalized_platform( platform["platform_accession"] ) - # Illumina appears in the accession codes for # platforms manufactured by Illumina - if "ILLUMINA" in experiment["platform_accession_code"].upper(): - experiment["manufacturer"] = "ILLUMINA" - experiment["platform_accession_name"] = platform["platform_accession"] + if "ILLUMINA" in platforms["platform_accession_code"].upper(): + platforms["manufacturer"] = "ILLUMINA" + platforms["platform_accession_name"] = platform["platform_accession"] + # It's not Illumina, the only other supported Microarray platform is + # Affy. As our list of supported platforms grows this logic will + # need to get more sophisticated. else: - # It's not Illumina, the only other supported Microarray platform is - # Affy. As our list of supported platforms grows this logic will - # need to get more sophisticated. - experiment["manufacturer"] = "AFFYMETRIX" + platforms["manufacturer"] = "AFFYMETRIX" platform_mapping = get_readable_affymetrix_names() - experiment["platform_accession_name"] = platform_mapping[ + platforms["platform_accession_name"] = platform_mapping[ platform["platform_accession"] ] - if "platform_accession_code" not in experiment: + if "platform_accession_code" not in platforms: # We don't know what platform this accession corresponds to. - experiment["platform_accession_code"] = external_accession - experiment["platform_accession_name"] = UNKNOWN - experiment["manufacturer"] = UNKNOWN - - experiment["release_date"] = parsed_json["releasedate"] - experiment["last_update_date"] = self._get_last_update_date(parsed_json) + platforms["platform_accession_code"] = external_accession + platforms["platform_accession_name"] = UNKNOWN + platforms["manufacturer"] = UNKNOWN - # Create the experiment object + # Create the experiment. try: - experiment_object = Experiment.objects.get(accession_code=experiment_accession_code) + experiment = Experiment.objects.get(accession_code=experiment_accession_code) logger.debug( "Experiment already exists, skipping object creation.", experiment_accession_code=experiment_accession_code, survey_job=self.survey_job.id, ) except Experiment.DoesNotExist: - experiment_object = Experiment() - experiment_object.accession_code = experiment_accession_code - experiment_object.source_url = request_url - ArrayExpressSurveyor._apply_metadata_to_experiment(experiment_object, parsed_json) - experiment_object.save() + experiment = Experiment() + experiment.accession_code = experiment_accession_code + experiment.source_url = experiment_data["url"] + self._apply_metadata_to_experiment(experiment, experiment_data) + experiment.save() json_xa = ExperimentAnnotation() - json_xa.experiment = experiment_object - json_xa.data = parsed_json + json_xa.experiment = experiment + json_xa.data = experiment_data json_xa.is_ccdl = False json_xa.save() - # Fetch and parse the IDF/SDRF file for any other fields - IDF_URL_TEMPLATE = "https://www.ebi.ac.uk/arrayexpress/files/{code}/{code}.idf.txt" + # Fetch and parse the IDF/SDRF file for any other fields. idf_url = IDF_URL_TEMPLATE.format(code=experiment_accession_code) idf_text = utils.requests_retry_session().get(idf_url, timeout=60).text - lines = idf_text.split("\n") - idf_dict = {} - for line in lines: - keyval = line.strip().split("\t") - if len(keyval) == 2: - idf_dict[keyval[0]] = keyval[1] - elif len(keyval) > 2: - idf_dict[keyval[0]] = keyval[1:] + idf_data = {} + for line in idf_text.split("\n"): + key_val = line.strip().split("\t") + if len(key_val) == 2: + idf_data[key_val[0]] = key_val[1] + elif len(key_val) > 2: + idf_data[key_val[0]] = key_val[1:] idf_xa = ExperimentAnnotation() - idf_xa.data = idf_dict - idf_xa.experiment = experiment_object + idf_xa.data = idf_data + idf_xa.experiment = experiment idf_xa.is_ccdl = False idf_xa.save() - if "Investigation Title" in idf_dict and isinstance( - idf_dict["Investigation Title"], str + if "Investigation Title" in idf_data and isinstance( + idf_data["Investigation Title"], str ): - experiment_object.title = idf_dict["Investigation Title"] - if "Person Affiliation" in idf_dict: - # This is very rare, ex: E-MEXP-32 - if isinstance(idf_dict["Person Affiliation"], list): + experiment.title = idf_data["Investigation Title"] - unique_people = list(set(idf_dict["Person Affiliation"])) - experiment_object.submitter_institution = ", ".join(unique_people)[:255] + if "Person Affiliation" in idf_data: + # This is very rare, ex: E-MEXP-32 + if isinstance(idf_data["Person Affiliation"], list): + unique_people = list(set(idf_data["Person Affiliation"])) + experiment.submitter_institution = ", ".join(unique_people)[:255] else: - experiment_object.submitter_institution = idf_dict["Person Affiliation"] - - # Get protocol_description from "/protocols" - # instead of from idf_dict, because the former provides more - # details. - protocol_url = request_url + "/protocols" - protocol_request = utils.requests_retry_session().get(protocol_url, timeout=60) - try: - experiment_object.protocol_description = protocol_request.json()["protocols"] - except KeyError: - logger.warning( - "Remote experiment has no protocol data!", - experiment_accession_code=experiment_accession_code, - survey_job=self.survey_job.id, - ) + experiment.submitter_institution = idf_data["Person Affiliation"] - if "Publication Title" in idf_dict: + if "Publication Title" in idf_data: # This will happen for some superseries. # Ex: E-GEOD-29536 # Assume most recent is "best:, store the rest in experiment annotation. - if isinstance(idf_dict["Publication Title"], list): - experiment_object.publication_title = "; ".join(idf_dict["Publication Title"]) + if isinstance(idf_data["Publication Title"], list): + experiment.publication_title = "; ".join(idf_data["Publication Title"]) else: - experiment_object.publication_title = idf_dict["Publication Title"] - experiment_object.has_publication = True - if "Publication DOI" in idf_dict: - if isinstance(idf_dict["Publication DOI"], list): - experiment_object.publication_doi = ", ".join(idf_dict["Publication DOI"]) + experiment.publication_title = idf_data["Publication Title"] + experiment.has_publication = True + + if "Publication DOI" in idf_data: + experiment.has_publication = True + if isinstance(idf_data["Publication DOI"], list): + experiment.publication_doi = ", ".join(idf_data["Publication DOI"]) else: - experiment_object.publication_doi = idf_dict["Publication DOI"] - experiment_object.has_publication = True - if "PubMed ID" in idf_dict: - if isinstance(idf_dict["PubMed ID"], list): - experiment_object.pubmed_id = ", ".join(idf_dict["PubMed ID"]) + experiment.publication_doi = idf_data["Publication DOI"] + + if "PubMed ID" in idf_data: + experiment.has_publication = True + if isinstance(idf_data["PubMed ID"], list): + experiment.pubmed_id = ", ".join(idf_data["PubMed ID"]) else: - experiment_object.pubmed_id = idf_dict["PubMed ID"] - experiment_object.has_publication = True + experiment.pubmed_id = idf_data["PubMed ID"] # Scrape publication title and authorship from Pubmed - if experiment_object.pubmed_id: - pubmed_metadata = utils.get_title_and_authors_for_pubmed_id( - experiment_object.pubmed_id - ) - experiment_object.publication_title = pubmed_metadata[0] - experiment_object.publication_authors = pubmed_metadata[1] - - experiment_object.save() + if experiment.pubmed_id: + pubmed_metadata = utils.get_title_and_authors_for_pubmed_id(experiment.pubmed_id) + experiment.publication_title = pubmed_metadata[0] + experiment.publication_authors = pubmed_metadata[1] - platform_dict = {} - for k in ("platform_accession_code", "platform_accession_name", "manufacturer"): - platform_dict[k] = experiment[k] + experiment.protocol_description = experiment_data["protocols"] + experiment.save() - return experiment_object, platform_dict + return experiment, platforms def determine_sample_accession( self, diff --git a/foreman/run_tests.sh b/foreman/run_tests.sh index a78a128ab..e35df351b 100755 --- a/foreman/run_tests.sh +++ b/foreman/run_tests.sh @@ -42,5 +42,6 @@ fi docker run -t $INTERACTIVE \ --add-host=database:"$DB_HOST_IP" \ --env-file foreman/environments/test \ + --platform linux/amd64 \ --volume "$volume_directory":/home/user/data_store \ ccdlstaging/dr_foreman bash -c "$(run_tests_with_coverage --exclude-tag=manual "$@")" diff --git a/foreman/tests/__init__.py b/foreman/tests/__init__.py new file mode 100644 index 000000000..e69de29bb diff --git a/foreman/tests/foreman/__init__.py b/foreman/tests/foreman/__init__.py new file mode 100644 index 000000000..e69de29bb diff --git a/foreman/tests/foreman/management/__init__.py b/foreman/tests/foreman/management/__init__.py new file mode 100644 index 000000000..e69de29bb diff --git a/foreman/tests/foreman/management/commands/__init__.py b/foreman/tests/foreman/management/commands/__init__.py new file mode 100644 index 000000000..e69de29bb diff --git a/foreman/data_refinery_foreman/foreman/management/commands/test_correct_affy_cdfs.py b/foreman/tests/foreman/management/commands/test_correct_affy_cdfs.py similarity index 100% rename from foreman/data_refinery_foreman/foreman/management/commands/test_correct_affy_cdfs.py rename to foreman/tests/foreman/management/commands/test_correct_affy_cdfs.py diff --git a/foreman/data_refinery_foreman/foreman/management/commands/test_create_compendia.py b/foreman/tests/foreman/management/commands/test_create_compendia.py similarity index 100% rename from foreman/data_refinery_foreman/foreman/management/commands/test_create_compendia.py rename to foreman/tests/foreman/management/commands/test_create_compendia.py diff --git a/foreman/data_refinery_foreman/foreman/management/commands/test_create_missing_downloader_jobs.py b/foreman/tests/foreman/management/commands/test_create_missing_downloader_jobs.py similarity index 96% rename from foreman/data_refinery_foreman/foreman/management/commands/test_create_missing_downloader_jobs.py rename to foreman/tests/foreman/management/commands/test_create_missing_downloader_jobs.py index e8b545c57..fa85d17db 100644 --- a/foreman/data_refinery_foreman/foreman/management/commands/test_create_missing_downloader_jobs.py +++ b/foreman/tests/foreman/management/commands/test_create_missing_downloader_jobs.py @@ -3,15 +3,9 @@ from data_refinery_common.models import ( DownloaderJob, DownloaderJobOriginalFileAssociation, - Experiment, - ExperimentSampleAssociation, - Organism, OriginalFile, OriginalFileSampleAssociation, - ProcessorJob, Sample, - SurveyJob, - SurveyJobKeyValue, ) from data_refinery_foreman.foreman.management.commands.create_missing_downloader_jobs import Command diff --git a/foreman/data_refinery_foreman/foreman/management/commands/test_create_missing_processor_jobs.py b/foreman/tests/foreman/management/commands/test_create_missing_processor_jobs.py similarity index 99% rename from foreman/data_refinery_foreman/foreman/management/commands/test_create_missing_processor_jobs.py rename to foreman/tests/foreman/management/commands/test_create_missing_processor_jobs.py index a30dd191f..a45d68312 100644 --- a/foreman/data_refinery_foreman/foreman/management/commands/test_create_missing_processor_jobs.py +++ b/foreman/tests/foreman/management/commands/test_create_missing_processor_jobs.py @@ -3,16 +3,11 @@ from data_refinery_common.models import ( DownloaderJob, DownloaderJobOriginalFileAssociation, - Experiment, - ExperimentSampleAssociation, - Organism, OriginalFile, OriginalFileSampleAssociation, ProcessorJob, ProcessorJobOriginalFileAssociation, Sample, - SurveyJob, - SurveyJobKeyValue, ) from data_refinery_foreman.foreman.management.commands.create_missing_processor_jobs import Command diff --git a/foreman/data_refinery_foreman/foreman/management/commands/test_create_quantpendia.py b/foreman/tests/foreman/management/commands/test_create_quantpendia.py similarity index 100% rename from foreman/data_refinery_foreman/foreman/management/commands/test_create_quantpendia.py rename to foreman/tests/foreman/management/commands/test_create_quantpendia.py diff --git a/foreman/data_refinery_foreman/foreman/management/commands/test_import_external_sample_attributes.py b/foreman/tests/foreman/management/commands/test_import_external_sample_attributes.py similarity index 100% rename from foreman/data_refinery_foreman/foreman/management/commands/test_import_external_sample_attributes.py rename to foreman/tests/foreman/management/commands/test_import_external_sample_attributes.py diff --git a/foreman/data_refinery_foreman/foreman/management/commands/test_import_external_sample_keywords.py b/foreman/tests/foreman/management/commands/test_import_external_sample_keywords.py similarity index 100% rename from foreman/data_refinery_foreman/foreman/management/commands/test_import_external_sample_keywords.py rename to foreman/tests/foreman/management/commands/test_import_external_sample_keywords.py diff --git a/foreman/data_refinery_foreman/foreman/management/commands/test_organism_shepherd.py b/foreman/tests/foreman/management/commands/test_organism_shepherd.py similarity index 100% rename from foreman/data_refinery_foreman/foreman/management/commands/test_organism_shepherd.py rename to foreman/tests/foreman/management/commands/test_organism_shepherd.py diff --git a/foreman/data_refinery_foreman/foreman/management/commands/test_rerun_salmon_old_samples.py b/foreman/tests/foreman/management/commands/test_rerun_salmon_old_samples.py similarity index 100% rename from foreman/data_refinery_foreman/foreman/management/commands/test_rerun_salmon_old_samples.py rename to foreman/tests/foreman/management/commands/test_rerun_salmon_old_samples.py diff --git a/foreman/data_refinery_foreman/foreman/management/commands/test_retry_samples.py b/foreman/tests/foreman/management/commands/test_retry_samples.py similarity index 92% rename from foreman/data_refinery_foreman/foreman/management/commands/test_retry_samples.py rename to foreman/tests/foreman/management/commands/test_retry_samples.py index ef5023a34..26ab04f52 100644 --- a/foreman/data_refinery_foreman/foreman/management/commands/test_retry_samples.py +++ b/foreman/tests/foreman/management/commands/test_retry_samples.py @@ -4,24 +4,15 @@ from django.utils import timezone from data_refinery_common.models import ( - ComputationalResult, - ComputationalResultAnnotation, - ComputedFile, DownloaderJob, - DownloaderJobOriginalFileAssociation, Experiment, - ExperimentOrganismAssociation, - ExperimentResultAssociation, ExperimentSampleAssociation, Organism, - OrganismIndex, OriginalFile, OriginalFileSampleAssociation, - Processor, ProcessorJob, ProcessorJobOriginalFileAssociation, Sample, - SampleResultAssociation, ) from data_refinery_foreman.foreman.management.commands.retry_samples import retry_by_regex diff --git a/foreman/data_refinery_foreman/foreman/management/commands/test_run_tximport.py b/foreman/tests/foreman/management/commands/test_run_tximport.py similarity index 100% rename from foreman/data_refinery_foreman/foreman/management/commands/test_run_tximport.py rename to foreman/tests/foreman/management/commands/test_run_tximport.py diff --git a/foreman/data_refinery_foreman/foreman/management/commands/test_update_experiment_metadata.py b/foreman/tests/foreman/management/commands/test_update_experiment_metadata.py similarity index 74% rename from foreman/data_refinery_foreman/foreman/management/commands/test_update_experiment_metadata.py rename to foreman/tests/foreman/management/commands/test_update_experiment_metadata.py index b87517356..2b2239f95 100644 --- a/foreman/data_refinery_foreman/foreman/management/commands/test_update_experiment_metadata.py +++ b/foreman/tests/foreman/management/commands/test_update_experiment_metadata.py @@ -1,5 +1,3 @@ -from unittest.mock import patch - from django.test import TransactionTestCase from data_refinery_common.models import Experiment, ExperimentSampleAssociation, Sample @@ -7,24 +5,26 @@ class SurveyTestCase(TransactionTestCase): + BAD_TITLE = ( + "BAD TITLE: Accession is currently private " + "and is scheduled to be released on Jan 01, 1970." + ) + def tearDown(self): Experiment.objects.all().delete() def test_sra_experiment_missing_metadata(self): """Tests that an SRA experiment has its missing metadata added.""" - # 1. Create an experiment with a bad title - BAD_TITLE = "GEO accession GSE1337 is currently private\ - and is scheduled to be released on Jan 01, 1970." - + # 1. Create an experiment with a bad title. experiment = Experiment() experiment.accession_code = "DRP003977" experiment.source_database = "SRA" - experiment.title = BAD_TITLE + experiment.title = SurveyTestCase.BAD_TITLE experiment.save() # 2. We need to add a sample because the way that the SRA surveyor finds metadata is - # through run accessions + # through run accessions. sample = Sample() sample.accession_code = "DRR002116" sample.technology = "RNA-SEQ" @@ -38,20 +38,21 @@ def test_sra_experiment_missing_metadata(self): command = Command() command.handle() - # Test that the title was fixed + # Test that the title was fixed. + experiment = Experiment.objects.get_or_create(accession_code=experiment.accession_code)[0] self.assertNotEqual( - Experiment.objects.get_or_create(accession_code=experiment.accession_code)[0].title, - BAD_TITLE, + experiment.title, + SurveyTestCase.BAD_TITLE, ) - # Run the command again to make sure that it does not fail if there are no changes + # Run the command again to make sure that it does not fail if there are no changes. command = Command() command.handle() def test_sra_experiment_missing_alternate_accession(self): """Tests that an SRA experiment has its missing alternate_accession_code added.""" - # 1. Create an experiment without an alternate_accession_code + # 1. Create an experiment without an alternate_accession_code. experiment = Experiment() experiment.accession_code = "SRP094947" experiment.source_database = "SRA" @@ -59,7 +60,7 @@ def test_sra_experiment_missing_alternate_accession(self): experiment.save() # 2. We need to add a sample because the way that the SRA surveyor finds metadata is - # through run accessions + # through run accessions. sample = Sample() sample.accession_code = "SRR5099111" sample.technology = "RNA-SEQ" @@ -82,27 +83,25 @@ def test_sra_experiment_missing_alternate_accession(self): def test_geo_experiment_missing_metadata(self): """Tests that a GEO experiment has its missing metadata added.""" - # 1. Create an experiment with a bad title - BAD_TITLE = "GEO accession GSE1337 is currently private\ - and is scheduled to be released on Jan 01, 1970." - + # 1. Create an experiment with a bad title. experiment = Experiment() experiment.accession_code = "GSE11915" experiment.source_database = "GEO" - experiment.title = BAD_TITLE + experiment.title = SurveyTestCase.BAD_TITLE experiment.save() # 2. Setup is done, actually run the command. command = Command() command.handle() - # Test that the title was fixed + # Test that the title was fixed. + experiment = Experiment.objects.get_or_create(accession_code=experiment.accession_code)[0] self.assertNotEqual( - Experiment.objects.get_or_create(accession_code=experiment.accession_code)[0].title, - BAD_TITLE, + experiment.title, + SurveyTestCase.BAD_TITLE, ) - # Run the command again to make sure that it does not fail if there are no changes + # Run the command again to make sure that it does not fail if there are no changes. command = Command() command.handle() @@ -110,25 +109,23 @@ def test_array_express_experiment_missing_metadata(self): """Tests that an ArrayExpress experiment has its missing metadata added.""" # 1. Create an experiment with a bad title - BAD_TITLE = "GEO accession GSE1337 is currently private\ - and is scheduled to be released on Jan 01, 1970." - experiment = Experiment() experiment.accession_code = "E-MTAB-3050" experiment.source_database = "ARRAY_EXPRESS" - experiment.title = BAD_TITLE + experiment.title = SurveyTestCase.BAD_TITLE experiment.save() # 2. Setup is done, actually run the command. command = Command() command.handle() - # Test that the title was fixed + # Test that the title was fixed. + experiment = Experiment.objects.get_or_create(accession_code=experiment.accession_code)[0] self.assertNotEqual( - Experiment.objects.get_or_create(accession_code=experiment.accession_code)[0].title, - BAD_TITLE, + experiment.title, + SurveyTestCase.BAD_TITLE, ) - # Run the command again to make sure that it does not fail if there are no changes + # Run the command again to make sure that it does not fail if there are no changes. command = Command() command.handle() diff --git a/foreman/data_refinery_foreman/foreman/test_downloader_job_manager.py b/foreman/tests/foreman/test_downloader_job_manager.py similarity index 99% rename from foreman/data_refinery_foreman/foreman/test_downloader_job_manager.py rename to foreman/tests/foreman/test_downloader_job_manager.py index 1de377a0f..9b3f6b15d 100644 --- a/foreman/data_refinery_foreman/foreman/test_downloader_job_manager.py +++ b/foreman/tests/foreman/test_downloader_job_manager.py @@ -5,9 +5,10 @@ from django.test import TestCase from django.utils import timezone +from tests.foreman.utils import create_downloader_job + from data_refinery_common.models import DownloaderJob from data_refinery_foreman.foreman import downloader_job_manager, utils -from data_refinery_foreman.foreman.test_utils import create_downloader_job # For use in tests that test the JOB_CREATED_AT_CUTOFF functionality. DAY_BEFORE_JOB_CUTOFF = utils.JOB_CREATED_AT_CUTOFF - datetime.timedelta(days=1) diff --git a/foreman/data_refinery_foreman/foreman/test_end_to_end.py b/foreman/tests/foreman/test_end_to_end.py similarity index 100% rename from foreman/data_refinery_foreman/foreman/test_end_to_end.py rename to foreman/tests/foreman/test_end_to_end.py diff --git a/foreman/data_refinery_foreman/foreman/test_job_control.py b/foreman/tests/foreman/test_job_control.py similarity index 100% rename from foreman/data_refinery_foreman/foreman/test_job_control.py rename to foreman/tests/foreman/test_job_control.py diff --git a/foreman/data_refinery_foreman/foreman/test_job_requeuing.py b/foreman/tests/foreman/test_job_requeuing.py similarity index 97% rename from foreman/data_refinery_foreman/foreman/test_job_requeuing.py rename to foreman/tests/foreman/test_job_requeuing.py index c6fc7f622..d87f4bcf5 100644 --- a/foreman/data_refinery_foreman/foreman/test_job_requeuing.py +++ b/foreman/tests/foreman/test_job_requeuing.py @@ -5,13 +5,10 @@ from django.test import TestCase from django.utils import timezone +from tests.foreman.utils import create_downloader_job, create_processor_job, create_survey_job + from data_refinery_common.models import DownloaderJob, ProcessorJob, SurveyJob from data_refinery_foreman.foreman import job_requeuing -from data_refinery_foreman.foreman.test_utils import ( - create_downloader_job, - create_processor_job, - create_survey_job, -) def fake_send_job(job_type, job, is_dispatch=False): diff --git a/foreman/data_refinery_foreman/foreman/test_processor_job_manager.py b/foreman/tests/foreman/test_processor_job_manager.py similarity index 99% rename from foreman/data_refinery_foreman/foreman/test_processor_job_manager.py rename to foreman/tests/foreman/test_processor_job_manager.py index 5754a65b7..3c2e461af 100644 --- a/foreman/data_refinery_foreman/foreman/test_processor_job_manager.py +++ b/foreman/tests/foreman/test_processor_job_manager.py @@ -5,9 +5,10 @@ from django.test import TestCase from django.utils import timezone +from tests.foreman.utils import create_processor_job + from data_refinery_common.models import ProcessorJob from data_refinery_foreman.foreman import processor_job_manager, utils -from data_refinery_foreman.foreman.test_utils import create_processor_job # For use in tests that test the JOB_CREATED_AT_CUTOFF functionality. DAY_BEFORE_JOB_CUTOFF = utils.JOB_CREATED_AT_CUTOFF - datetime.timedelta(days=1) diff --git a/foreman/data_refinery_foreman/foreman/test_survey_job_manager.py b/foreman/tests/foreman/test_survey_job_manager.py similarity index 99% rename from foreman/data_refinery_foreman/foreman/test_survey_job_manager.py rename to foreman/tests/foreman/test_survey_job_manager.py index 74e71f868..7c2b6bbfd 100644 --- a/foreman/data_refinery_foreman/foreman/test_survey_job_manager.py +++ b/foreman/tests/foreman/test_survey_job_manager.py @@ -6,9 +6,10 @@ from django.test import TestCase from django.utils import timezone +from tests.foreman.utils import create_survey_job + from data_refinery_common.models import SurveyJob from data_refinery_foreman.foreman import survey_job_manager, utils -from data_refinery_foreman.foreman.test_utils import create_survey_job # For use in tests that test the JOB_CREATED_AT_CUTOFF functionality. DAY_BEFORE_JOB_CUTOFF = utils.JOB_CREATED_AT_CUTOFF - datetime.timedelta(days=1) diff --git a/foreman/data_refinery_foreman/foreman/test_utils.py b/foreman/tests/foreman/utils.py similarity index 100% rename from foreman/data_refinery_foreman/foreman/test_utils.py rename to foreman/tests/foreman/utils.py diff --git a/foreman/tests/settings.py b/foreman/tests/settings.py new file mode 100644 index 000000000..ad7d4a4a9 --- /dev/null +++ b/foreman/tests/settings.py @@ -0,0 +1,5 @@ +""" +Django settings for data_refinery_foreman project tests. +""" + +from data_refinery_foreman.settings import * diff --git a/foreman/tests/surveyor/management/__init__.py b/foreman/tests/surveyor/management/__init__.py new file mode 100644 index 000000000..e69de29bb diff --git a/foreman/tests/surveyor/management/commands/__init__.py b/foreman/tests/surveyor/management/commands/__init__.py new file mode 100644 index 000000000..e69de29bb diff --git a/foreman/data_refinery_foreman/surveyor/management/commands/test_dispatch_qn_jobs.py b/foreman/tests/surveyor/management/commands/test_dispatch_qn_jobs.py similarity index 100% rename from foreman/data_refinery_foreman/surveyor/management/commands/test_dispatch_qn_jobs.py rename to foreman/tests/surveyor/management/commands/test_dispatch_qn_jobs.py diff --git a/foreman/data_refinery_foreman/surveyor/management/commands/test_unsurvey.py b/foreman/tests/surveyor/management/commands/test_unsurvey.py similarity index 100% rename from foreman/data_refinery_foreman/surveyor/management/commands/test_unsurvey.py rename to foreman/tests/surveyor/management/commands/test_unsurvey.py diff --git a/foreman/data_refinery_foreman/surveyor/test_array_express.py b/foreman/tests/surveyor/test_array_express.py similarity index 100% rename from foreman/data_refinery_foreman/surveyor/test_array_express.py rename to foreman/tests/surveyor/test_array_express.py diff --git a/foreman/data_refinery_foreman/surveyor/test_external_source.py b/foreman/tests/surveyor/test_external_source.py similarity index 100% rename from foreman/data_refinery_foreman/surveyor/test_external_source.py rename to foreman/tests/surveyor/test_external_source.py diff --git a/foreman/data_refinery_foreman/surveyor/test_geo.py b/foreman/tests/surveyor/test_geo.py similarity index 100% rename from foreman/data_refinery_foreman/surveyor/test_geo.py rename to foreman/tests/surveyor/test_geo.py diff --git a/foreman/data_refinery_foreman/surveyor/test_harmony.py b/foreman/tests/surveyor/test_harmony.py similarity index 100% rename from foreman/data_refinery_foreman/surveyor/test_harmony.py rename to foreman/tests/surveyor/test_harmony.py diff --git a/foreman/data_refinery_foreman/surveyor/test_sra.py b/foreman/tests/surveyor/test_sra.py similarity index 100% rename from foreman/data_refinery_foreman/surveyor/test_sra.py rename to foreman/tests/surveyor/test_sra.py diff --git a/foreman/data_refinery_foreman/surveyor/test_surveyor.py b/foreman/tests/surveyor/test_surveyor.py similarity index 100% rename from foreman/data_refinery_foreman/surveyor/test_surveyor.py rename to foreman/tests/surveyor/test_surveyor.py diff --git a/foreman/data_refinery_foreman/surveyor/test_transcriptome_index.py b/foreman/tests/surveyor/test_transcriptome_index.py similarity index 100% rename from foreman/data_refinery_foreman/surveyor/test_transcriptome_index.py rename to foreman/tests/surveyor/test_transcriptome_index.py diff --git a/foreman/data_refinery_foreman/test_imports.py b/foreman/tests/test_imports.py similarity index 53% rename from foreman/data_refinery_foreman/test_imports.py rename to foreman/tests/test_imports.py index ef1cf2633..9c2717e0e 100644 --- a/foreman/data_refinery_foreman/test_imports.py +++ b/foreman/tests/test_imports.py @@ -1,4 +1,4 @@ -from django.test import TestCase, tag +from django.test import TestCase class ImportTestCase(TestCase): @@ -28,33 +28,33 @@ def test_imports(self): import data_refinery_foreman.foreman.management.commands.retry_timed_out_jobs import data_refinery_foreman.foreman.management.commands.run_tximport import data_refinery_foreman.foreman.management.commands.stop_jobs - import data_refinery_foreman.foreman.management.commands.test_correct_affy_cdfs - import data_refinery_foreman.foreman.management.commands.test_create_compendia - import data_refinery_foreman.foreman.management.commands.test_create_missing_downloader_jobs - import data_refinery_foreman.foreman.management.commands.test_create_missing_processor_jobs - import data_refinery_foreman.foreman.management.commands.test_create_quantpendia - import data_refinery_foreman.foreman.management.commands.test_import_external_sample_attributes - import data_refinery_foreman.foreman.management.commands.test_import_external_sample_keywords - import data_refinery_foreman.foreman.management.commands.test_organism_shepherd - import data_refinery_foreman.foreman.management.commands.test_rerun_salmon_old_samples - import data_refinery_foreman.foreman.management.commands.test_retry_samples - import data_refinery_foreman.foreman.management.commands.test_run_tximport - import data_refinery_foreman.foreman.management.commands.test_update_experiment_metadata import data_refinery_foreman.foreman.management.commands.update_downloadable_samples import data_refinery_foreman.foreman.management.commands.update_experiment_metadata import data_refinery_foreman.foreman.management.commands.update_sample_metadata - import data_refinery_foreman.foreman.test_downloader_job_manager - import data_refinery_foreman.foreman.test_end_to_end - import data_refinery_foreman.foreman.test_job_control - import data_refinery_foreman.foreman.test_job_requeuing - import data_refinery_foreman.foreman.test_processor_job_manager - import data_refinery_foreman.foreman.test_survey_job_manager - import data_refinery_foreman.foreman.test_utils - import data_refinery_foreman.surveyor.management.commands.test_unsurvey - import data_refinery_foreman.surveyor.test_array_express - import data_refinery_foreman.surveyor.test_external_source - import data_refinery_foreman.surveyor.test_geo - import data_refinery_foreman.surveyor.test_harmony - import data_refinery_foreman.surveyor.test_sra - import data_refinery_foreman.surveyor.test_surveyor - import data_refinery_foreman.surveyor.test_transcriptome_index + import data_refinery_foreman.foreman.utils + import tests.foreman.management.commands.test_correct_affy_cdfs + import tests.foreman.management.commands.test_create_compendia + import tests.foreman.management.commands.test_create_missing_downloader_jobs + import tests.foreman.management.commands.test_create_missing_processor_jobs + import tests.foreman.management.commands.test_create_quantpendia + import tests.foreman.management.commands.test_import_external_sample_attributes + import tests.foreman.management.commands.test_import_external_sample_keywords + import tests.foreman.management.commands.test_organism_shepherd + import tests.foreman.management.commands.test_rerun_salmon_old_samples + import tests.foreman.management.commands.test_retry_samples + import tests.foreman.management.commands.test_run_tximport + import tests.foreman.management.commands.test_update_experiment_metadata + import tests.foreman.test_downloader_job_manager + import tests.foreman.test_end_to_end + import tests.foreman.test_job_control + import tests.foreman.test_job_requeuing + import tests.foreman.test_processor_job_manager + import tests.foreman.test_survey_job_manager + import tests.surveyor.management.commands.test_unsurvey + import tests.surveyor.test_array_express + import tests.surveyor.test_external_source + import tests.surveyor.test_geo + import tests.surveyor.test_harmony + import tests.surveyor.test_sra + import tests.surveyor.test_surveyor + import tests.surveyor.test_transcriptome_index diff --git a/foreman/data_refinery_foreman/test_runner.py b/foreman/tests/test_runner.py similarity index 100% rename from foreman/data_refinery_foreman/test_runner.py rename to foreman/tests/test_runner.py diff --git a/workers/R/dependencies/install_devtools_renv.R b/workers/R/dependencies/install_devtools_renv.R index 58c97546b..03b259f39 100644 --- a/workers/R/dependencies/install_devtools_renv.R +++ b/workers/R/dependencies/install_devtools_renv.R @@ -21,9 +21,9 @@ renv::install("backports@1.1.8") renv::install("rprojroot@1.3-2") renv::install("desc@1.2.0") renv::install("prettyunits@1.1.1") -renv::install("ps@1.3.3") +renv::install("ps@1.3.4") renv::install("processx@3.4.3") -renv::install("callr@3.4.3") +renv::install("callr@3.7.3") renv::install("pkgbuild@1.1.0") renv::install("rstudioapi@0.11") renv::install("pkgload@1.1.0") diff --git a/workers/R/renv_load.R b/workers/R/renv_load.R index 601e479b1..dd5caa080 100644 --- a/workers/R/renv_load.R +++ b/workers/R/renv_load.R @@ -10,7 +10,7 @@ options(renv.r.version = "3.4.4") options(renv.settings.use.cache = FALSE) install.packages("BiocInstaller") -install.packages("https://cloud.r-project.org/src/contrib/renv_0.16.0.tar.gz") +install.packages("https://cran.r-project.org/src/contrib/Archive/renv/renv_0.16.0.tar.gz") renv::consent(provided = TRUE) renv::restore(prompt = FALSE, rebuild = TRUE) diff --git a/workers/R/renv_save.R b/workers/R/renv_save.R index 7892c0a3a..a7196bae1 100644 --- a/workers/R/renv_save.R +++ b/workers/R/renv_save.R @@ -10,6 +10,6 @@ options(renv.r.version = "3.4.4") options(renv.settings.use.cache = FALSE) install.packages("BiocInstaller") -install.packages("https://cloud.r-project.org/src/contrib/renv_0.16.0.tar.gz") +install.packages("https://cran.r-project.org/src/contrib/Archive/renv/renv_0.16.0.tar.gz") renv::init(bioconductor = "3.6") diff --git a/workers/data_refinery_workers/processors/requirements.in b/workers/data_refinery_workers/processors/requirements.in index 1a02ecdbe..10394b9f0 100644 --- a/workers/data_refinery_workers/processors/requirements.in +++ b/workers/data_refinery_workers/processors/requirements.in @@ -1,6 +1,7 @@ boto3>=1.9.199 coveralls -django>=3.2.5 +django>=3.2,<4 +rpy2===3.4.5 matplotlib numpy pandas @@ -20,13 +21,14 @@ unicodecsv untangle>=1.1.1 # For visualization dask>=1.1.1 -xarray>=0.12.2 -datashader>=0.6.9 +xarray==0.16.2 +datashader==0.14.4 datashape>=0.5.2 holoviews>=1.11.2 selenium==3.141.0 -# For mocking out S3 calls for the smasher -vcrpy +# For mocking out S3 calls for the smasher. +vcrpy==4.1.1 django-computedfields>=0.1.5 pyyaml>=5.4 sqlparse>=0.4.2 +nose diff --git a/workers/data_refinery_workers/processors/requirements.txt b/workers/data_refinery_workers/processors/requirements.txt index 20dce991c..9c64659b3 100644 --- a/workers/data_refinery_workers/processors/requirements.txt +++ b/workers/data_refinery_workers/processors/requirements.txt @@ -1,91 +1,96 @@ # -# This file is autogenerated by pip-compile +# This file is autogenerated by pip-compile with python 3.9 # To update, run: # -# pip-compile requirements.in +# pip-compile --annotation-style=line workers/data_refinery_workers/processors/requirements.in # -asgiref==3.3.4 # via django -bokeh==2.3.2 # via dask, panel -boto3==1.17.92 # via -r requirements.in -botocore==1.20.92 # via boto3, s3transfer -certifi==2021.5.30 # via requests -chardet==4.0.0 # via requests -click==8.0.1 # via distributed -cloudpickle==1.6.0 # via dask, distributed -colorcet==2.0.6 # via datashader, holoviews -contextvars==2.4 # via distributed -coverage==5.5 # via coveralls -coveralls==3.1.0 # via -r requirements.in -cycler==0.10.0 # via matplotlib -dask[complete]==2021.3.0 # via -r requirements.in, datashader, distributed -datashader==0.13.0 # via -r requirements.in -datashape==0.5.2 # via -r requirements.in, datashader -distributed==2021.3.0 # via dask -django-computedfields==0.1.5 # via -r requirements.in -django==3.2.7 # via -r requirements.in +asgiref==3.6.0 # via django +bleach==6.0.0 # via panel +bokeh==2.4.3 # via panel +boto3==1.26.72 # via -r workers/data_refinery_workers/processors/requirements.in +botocore==1.29.72 # via boto3, s3transfer +certifi==2022.12.7 # via requests +cffi==1.15.1 # via rpy2 +charset-normalizer==3.0.1 # via requests +click==8.1.3 # via dask +cloudpickle==2.2.1 # via dask +colorcet==3.0.1 # via datashader, holoviews +contourpy==1.0.7 # via matplotlib +coverage==6.5.0 # via coveralls +coveralls==3.3.1 # via -r workers/data_refinery_workers/processors/requirements.in +cycler==0.11.0 # via matplotlib +dask==2023.2.0 # via -r workers/data_refinery_workers/processors/requirements.in, datashader +datashader==0.14.4 # via -r workers/data_refinery_workers/processors/requirements.in +datashape==0.5.2 # via -r workers/data_refinery_workers/processors/requirements.in, datashader +defusedxml==0.7.1 # via untangle +django==3.2.18 # via -r workers/data_refinery_workers/processors/requirements.in, django-computedfields, django-fast-update +django-computedfields==0.2.1 # via -r workers/data_refinery_workers/processors/requirements.in +django-fast-update==0.2.1 # via django-computedfields docopt==0.6.2 # via coveralls -fsspec==2021.6.0 # via dask -heapdict==1.0.1 # via zict -holoviews==1.14.4 # via -r requirements.in -idna==2.10 # via requests, yarl -immutables==0.15 # via contextvars -importlib-metadata==4.5.0 # via click, markdown -jinja2==3.0.1 # via -r requirements.in, bokeh -jmespath==0.10.0 # via boto3, botocore -joblib==1.0.1 # via scikit-learn -kiwisolver==1.3.1 # via matplotlib -llvmlite==0.36.0 # via numba -locket==0.2.1 # via partd -markdown==3.3.4 # via panel -markupsafe==2.0.1 # via jinja2 -matplotlib==3.3.4 # via -r requirements.in +fonttools==4.38.0 # via matplotlib +fsspec==2023.1.0 # via dask +holoviews==1.15.4 # via -r workers/data_refinery_workers/processors/requirements.in +idna==3.4 # via requests, yarl +importlib-metadata==6.0.0 # via markdown +importlib-resources==5.10.2 # via matplotlib +jinja2==3.1.2 # via -r workers/data_refinery_workers/processors/requirements.in, bokeh, rpy2 +jmespath==1.0.1 # via boto3, botocore +joblib==1.2.0 # via scikit-learn +kiwisolver==1.4.4 # via matplotlib +llvmlite==0.39.1 # via numba +locket==1.0.0 # via partd +markdown==3.4.1 # via panel +markupsafe==2.1.2 # via jinja2 +matplotlib==3.7.0 # via -r workers/data_refinery_workers/processors/requirements.in mpmath==1.2.1 # via sympy -msgpack==1.0.2 # via distributed -multidict==5.1.0 # via yarl +multidict==6.0.4 # via yarl multipledispatch==0.6.0 # via datashape -numba==0.53.1 # via datashader -numpy==1.19.5 # via -r requirements.in, bokeh, dask, datashader, datashape, holoviews, matplotlib, numba, pandas, scikit-learn, scipy, xarray -packaging==20.9 # via bokeh -pandas==1.1.5 # via -r requirements.in, dask, datashader, holoviews, xarray -panel==0.11.3 # via holoviews -param==1.10.1 # via colorcet, datashader, holoviews, panel, pyct, pyviz-comms -partd==1.2.0 # via dask -pillow==8.3.2 # via -r requirements.in, bokeh, datashader, matplotlib -psutil==5.8.0 # via -r requirements.in, distributed -psycopg2-binary==2.8.6 # via -r requirements.in -pyct==0.4.8 # via colorcet, datashader, panel -pyparsing==2.4.7 # via matplotlib, packaging -python-dateutil==2.8.1 # via bokeh, botocore, datashape, matplotlib, pandas -pytz==2021.1 # via django, pandas, tzlocal -pyviz-comms==2.0.2 # via holoviews, panel -pyyaml==5.4.1 # via -r requirements.in, bokeh, dask, distributed, vcrpy -requests==2.25.1 # via -r requirements.in, coveralls, panel -retrying==1.3.3 # via -r requirements.in -s3transfer==0.4.2 # via boto3 -scikit-learn==0.24.2 # via -r requirements.in -scipy==1.5.4 # via -r requirements.in, datashader, scikit-learn -selenium==3.141.0 # via -r requirements.in -simplejson==3.17.2 # via -r requirements.in -six==1.16.0 # via cycler, multipledispatch, python-dateutil, retrying, vcrpy -sortedcontainers==2.4.0 # via distributed -sqlparse==0.4.2 # via -r requirements.in, django -sympy==1.8 # via -r requirements.in -tblib==1.7.0 # via distributed -threadpoolctl==2.1.0 # via scikit-learn -toolz==0.11.1 # via dask, distributed, partd -tornado==6.1 # via bokeh, distributed -tqdm==4.61.0 # via panel -typing-extensions==3.10.0.0 # via asgiref, bokeh, importlib-metadata, yarl -tzlocal==2.1 # via -r requirements.in -unicodecsv==0.14.1 # via -r requirements.in -untangle==1.1.1 # via -r requirements.in -urllib3==1.26.5 # via botocore, requests, selenium -vcrpy==4.1.1 # via -r requirements.in -wrapt==1.12.1 # via vcrpy -xarray==0.16.2 # via -r requirements.in, datashader -yarl==1.6.3 # via vcrpy -zict==2.0.0 # via distributed -zipp==3.4.1 # via importlib-metadata +nose==1.3.7 # via -r workers/data_refinery_workers/processors/requirements.in +numba==0.56.4 # via datashader +numpy==1.23.5 # via -r workers/data_refinery_workers/processors/requirements.in, bokeh, contourpy, datashader, datashape, holoviews, matplotlib, numba, pandas, scikit-learn, scipy, xarray +packaging==23.0 # via bokeh, dask, holoviews, matplotlib +pandas==1.5.3 # via -r workers/data_refinery_workers/processors/requirements.in, datashader, holoviews, xarray +panel==0.14.3 # via holoviews +param==1.12.3 # via datashader, holoviews, panel, pyct, pyviz-comms +partd==1.3.0 # via dask +pillow==9.4.0 # via -r workers/data_refinery_workers/processors/requirements.in, bokeh, datashader, matplotlib +psutil==5.9.4 # via -r workers/data_refinery_workers/processors/requirements.in +psycopg2-binary==2.9.5 # via -r workers/data_refinery_workers/processors/requirements.in +pycparser==2.21 # via cffi +pyct==0.5.0 # via colorcet, datashader, panel +pyparsing==3.0.9 # via matplotlib +python-dateutil==2.8.2 # via botocore, datashape, matplotlib, pandas +pytz==2022.7.1 # via django, pandas, rpy2 +pytz-deprecation-shim==0.1.0.post0 # via tzlocal +pyviz-comms==2.2.1 # via holoviews, panel +pyyaml==6.0 # via -r workers/data_refinery_workers/processors/requirements.in, bokeh, dask, vcrpy +requests==2.28.2 # via -r workers/data_refinery_workers/processors/requirements.in, coveralls, datashader, panel +retrying==1.3.4 # via -r workers/data_refinery_workers/processors/requirements.in +rpy2===3.4.5 # via -r workers/data_refinery_workers/processors/requirements.in +s3transfer==0.6.0 # via boto3 +scikit-learn==1.2.1 # via -r workers/data_refinery_workers/processors/requirements.in +scipy==1.10.0 # via -r workers/data_refinery_workers/processors/requirements.in, datashader, scikit-learn +selenium==3.141.0 # via -r workers/data_refinery_workers/processors/requirements.in +simplejson==3.18.3 # via -r workers/data_refinery_workers/processors/requirements.in +six==1.16.0 # via bleach, multipledispatch, python-dateutil, retrying, vcrpy +sqlparse==0.4.3 # via -r workers/data_refinery_workers/processors/requirements.in, django +sympy==1.11.1 # via -r workers/data_refinery_workers/processors/requirements.in +threadpoolctl==3.1.0 # via scikit-learn +toolz==0.12.0 # via dask, datashader, partd +tornado==6.2 # via bokeh +tqdm==4.64.1 # via panel +typing-extensions==4.5.0 # via bokeh, django-computedfields, panel +tzdata==2022.7 # via pytz-deprecation-shim +tzlocal==4.2 # via -r workers/data_refinery_workers/processors/requirements.in, rpy2 +unicodecsv==0.14.1 # via -r workers/data_refinery_workers/processors/requirements.in +untangle==1.2.1 # via -r workers/data_refinery_workers/processors/requirements.in +urllib3==1.26.14 # via botocore, requests, selenium +vcrpy==4.1.1 # via -r workers/data_refinery_workers/processors/requirements.in +webencodings==0.5.1 # via bleach +wrapt==1.14.1 # via vcrpy +xarray==0.16.2 # via -r workers/data_refinery_workers/processors/requirements.in, datashader +yarl==1.8.2 # via vcrpy +zipp==3.13.0 # via importlib-metadata, importlib-resources # The following packages are considered to be unsafe in a requirements file: # setuptools diff --git a/workers/run_tests.sh b/workers/run_tests.sh index a750b502a..66029bb5e 100755 --- a/workers/run_tests.sh +++ b/workers/run_tests.sh @@ -566,8 +566,9 @@ for image in $worker_images; do --env-file workers/environments/test \ --env AWS_ACCESS_KEY_ID \ --env AWS_SECRET_ACCESS_KEY \ - --volume "$volume_directory":/home/user/data_store \ --memory=5G \ + --platform linux/amd64 \ + --volume "$volume_directory":/home/user/data_store \ "$image_name" bash -c "$test_command" fi done diff --git a/workers/tests/processors/test_compendia.py b/workers/tests/processors/test_compendia.py index 85373a6a7..a9abfeda0 100644 --- a/workers/tests/processors/test_compendia.py +++ b/workers/tests/processors/test_compendia.py @@ -146,7 +146,7 @@ def test_create_compendia(self): # Because one of the samples is filtered out, there will be too few # remaining samples to smash together, so we expect this job to fail. - self.assertFailed(job, "k must be between 1 and min(A.shape)") + self.assertFailed(job, "`k` must be an integer satisfying `0 < k < min(A.shape)`") # check that sample with no computed file was skipped self.assertTrue("GSM1487222" in final_context["filtered_samples"]) diff --git a/workers/tests/processors/test_illumina.py b/workers/tests/processors/test_illumina.py index 44e568daa..4b3ee1164 100644 --- a/workers/tests/processors/test_illumina.py +++ b/workers/tests/processors/test_illumina.py @@ -7,7 +7,7 @@ from django.test import TestCase, tag -from tests import utils +from tests import utils as test_utils from data_refinery_common.enums import PipelineEnum from data_refinery_common.models import ( @@ -151,7 +151,7 @@ def _try_sanitizing_file(file: str) -> str: ] -class IlluminaToPCLTestCase(TestCase, testing_utils.ProcessorJobTestCaseMixin): +class IlluminaToPCLTestCase(TestCase, test_utils.ProcessorJobTestCaseMixin): @tag("illumina") def test_illumina_to_pcl(self): """Most basic Illumina to PCL test""" From 93825fb7dcda0a4a70c9a0c05e2a1cfca6e2e970 Mon Sep 17 00:00:00 2001 From: Arkadii Yakovets Date: Thu, 13 Apr 2023 15:47:10 -0700 Subject: [PATCH 101/220] Address review comments. --- .../surveyor/array_express.py | 67 ++++++++++--------- .../test_update_experiment_metadata.py | 2 +- 2 files changed, 37 insertions(+), 32 deletions(-) diff --git a/foreman/data_refinery_foreman/surveyor/array_express.py b/foreman/data_refinery_foreman/surveyor/array_express.py index e99cb5863..ba11d38f4 100644 --- a/foreman/data_refinery_foreman/surveyor/array_express.py +++ b/foreman/data_refinery_foreman/surveyor/array_express.py @@ -1,4 +1,5 @@ from datetime import datetime +from itertools import chain from typing import Dict, List, Tuple from data_refinery_common.enums import Downloaders @@ -52,36 +53,37 @@ def _parse_api_info_response(data: Dict) -> Dict: @classmethod def _parse_api_data_response(cls, data: Dict) -> Dict: parsed_data = {} - for attribute in data["section"]["attributes"]: - attribute_name = attribute["name"] - if attribute_name not in {"Description", "Organism", "Title"}: - continue - parsed_data[attribute_name.lower()] = attribute["value"] - - for subsection in data["section"]["subsections"]: - for subsection_entry in subsection: - # Protocols. - if isinstance(subsection_entry, dict) and subsection_entry["type"] == "Protocols": - if "protocols" not in parsed_data: - parsed_data["protocols"] = [] - - protocol = {} - for attribute in subsection_entry["attributes"]: - if "value" not in attribute: - continue - protocol[attribute["name"].lower()] = attribute["value"] - if protocol: - parsed_data["protocols"].append(protocol) - - # Array Designs. - elif subsection["type"] == "Assays and Data": - array_designs = [] - for assays_data_subsection in subsection["subsections"]: - if assays_data_subsection["type"] == "Array Designs": - for link in assays_data_subsection["links"]: - for link_entry in link: - array_designs.append(link_entry["url"]) - parsed_data["array_designs"] = array_designs + + # Filter for supported section attributes. + attribute_filter = lambda attr: attr["name"] in { + "Description", + "Organism", + "Title", + } + attributes = data["section"]["attributes"] + for attribute in filter(attribute_filter, attributes): + parsed_data[attribute["name"].lower()] = attribute["value"] + + # Protocols. + parsed_data["protocols"] = [] + protocol_filter = lambda entry: isinstance(entry, dict) and entry["type"] == "Protocols" + value_defined_filter = lambda attr: "value" in attr + subsections = data["section"]["subsections"] + for subsection in filter(protocol_filter, chain.from_iterable(subsections)): + # Protocols. + protocol = {} + for attribute in filter(value_defined_filter, subsection["attributes"]): + protocol[attribute["name"].lower()] = attribute["value"] + parsed_data["protocols"].append(protocol) + + # Array Designs. + parsed_data["array_designs"] = [] + assay_filter = lambda entry: isinstance(entry, list) and entry["type"] == "Assays and Data" + is_design = lambda entry: entry["type"] == "Array Designs" + for subsection in filter(assay_filter, chain.from_iterable(subsections)): + for assays_data_subsection in filter(is_design, subsection): + links = chain.from_iterable(assays_data_subsection["links"]) + parsed_data["array_designs"].extend((link["url"] for link in links)) return parsed_data @@ -544,7 +546,10 @@ def create_samples_from_api(self, experiment: Experiment, platform_dict: Dict) - sample_source_name = sample_data["source"].get("name", "") sample_assay_name = sample_data["assay"].get("name", "") sample_accession_code = self.determine_sample_accession( - experiment.accession_code, sample_source_name, sample_assay_name, filename + experiment.accession_code, + sample_source_name, + sample_assay_name, + filename, ) # Figure out the Organism for this sample diff --git a/foreman/tests/foreman/management/commands/test_update_experiment_metadata.py b/foreman/tests/foreman/management/commands/test_update_experiment_metadata.py index 2b2239f95..5d9f5e233 100644 --- a/foreman/tests/foreman/management/commands/test_update_experiment_metadata.py +++ b/foreman/tests/foreman/management/commands/test_update_experiment_metadata.py @@ -120,7 +120,7 @@ def test_array_express_experiment_missing_metadata(self): command.handle() # Test that the title was fixed. - experiment = Experiment.objects.get_or_create(accession_code=experiment.accession_code)[0] + experiment, _ = Experiment.objects.get_or_create(accession_code=experiment.accession_code) self.assertNotEqual( experiment.title, SurveyTestCase.BAD_TITLE, From 60f2e77fa95178cbf0eedefb23f0f00012d1e83f Mon Sep 17 00:00:00 2001 From: Arkadii Yakovets Date: Fri, 14 Apr 2023 07:55:54 -0700 Subject: [PATCH 102/220] Add refine.bio GPG signing key. --- keys/ark.gpg | 13 +++++++++++++ 1 file changed, 13 insertions(+) create mode 100644 keys/ark.gpg diff --git a/keys/ark.gpg b/keys/ark.gpg new file mode 100644 index 000000000..17a03d699 --- /dev/null +++ b/keys/ark.gpg @@ -0,0 +1,13 @@ +-----BEGIN PGP PUBLIC KEY BLOCK----- + +mDMEYqzflxYJKwYBBAHaRw8BAQdAc8iFPchxuORjMwIgB5xxbxf+6u/MYkspzZ1I +XE6elXO0JEFya2FkaWkgWWFrb3ZldHMgPGFya0BjY2RhdGFsYWIub3JnPoiSBBMW +CgA7FiEE/ADSxSy4ejoh6Buz76k1vgallBwFAmKs35cCGwMFCwkIBwICIgIGFQoJ +CAsCBBYCAwECHgcCF4AACgkQ76k1vgallBwuwwEA6OJH2iLUAnCnLrBF7QywzC8Z +MUtCpMx5DT21F7nGeVIA+OIdnzn9P3dbm10DBBCKJtEdCdTpgc/w1E7upfxCTA64 +OARirN+XEgorBgEEAZdVAQUBAQdAl3T9RxncqkjvvhVHwCjGzG8GL88vTN6PUh80 +9O3v8iUDAQgHiHgEGBYKACAWIQT8ANLFLLh6OiHoG7PvqTW+BqWUHAUCYqzflwIb +DAAKCRDvqTW+BqWUHAImAQCyxRNjUG7omTXFfGbwYlaz6nLk7y1f1aK1N7Dw/wKJ +LwEAkFTPSjOZeqGPL7MF940Uh49SgnEv+7EEhHBT9vI6uwA= +=SqPM +-----END PGP PUBLIC KEY BLOCK----- From 0acdec99901f0a71e2877df235724a213bc1df6b Mon Sep 17 00:00:00 2001 From: Arkadii Yakovets Date: Fri, 14 Apr 2023 08:00:05 -0700 Subject: [PATCH 103/220] Clean up unused keys. --- keys/casey.gpg | 52 ------------------------------------------------- keys/dongbo.gpg | 50 ----------------------------------------------- keys/kurt.gpg | 52 ------------------------------------------------- 3 files changed, 154 deletions(-) delete mode 100644 keys/casey.gpg delete mode 100644 keys/dongbo.gpg delete mode 100644 keys/kurt.gpg diff --git a/keys/casey.gpg b/keys/casey.gpg deleted file mode 100644 index 4e4d318f5..000000000 --- a/keys/casey.gpg +++ /dev/null @@ -1,52 +0,0 @@ ------BEGIN PGP PUBLIC KEY BLOCK----- - -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 -1NnO4GKOw57I1H/E+xTt8Q== -=aPwF ------END PGP PUBLIC KEY BLOCK----- diff --git a/keys/dongbo.gpg b/keys/dongbo.gpg deleted file mode 100644 index 26a07e4c2..000000000 --- a/keys/dongbo.gpg +++ /dev/null @@ -1,50 +0,0 @@ ------BEGIN PGP PUBLIC KEY BLOCK----- - -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 -=whbG ------END PGP PUBLIC KEY BLOCK----- diff --git a/keys/kurt.gpg b/keys/kurt.gpg deleted file mode 100644 index c2d8b04a1..000000000 --- a/keys/kurt.gpg +++ /dev/null @@ -1,52 +0,0 @@ ------BEGIN PGP PUBLIC KEY BLOCK----- - -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 -HbUG -=upP7 ------END PGP PUBLIC KEY BLOCK----- From 39ffb3c5068506fb952d732fa7616fe05f9c0c58 Mon Sep 17 00:00:00 2001 From: David Mejia Date: Thu, 16 Mar 2023 16:45:49 -0400 Subject: [PATCH 104/220] pull salmontools test data from s3 --- workers/run_tests.sh | 19 ++++++++++++------- 1 file changed, 12 insertions(+), 7 deletions(-) diff --git a/workers/run_tests.sh b/workers/run_tests.sh index 66029bb5e..3e03e2ada 100755 --- a/workers/run_tests.sh +++ b/workers/run_tests.sh @@ -77,13 +77,18 @@ if [ -z "$tag" ] || [ "$tag" = "salmon" ]; then rm "$volume_directory"/salmon_tests.tar.gz fi - # Download salmontools test data - rm -rf "$volume_directory"/salmontools/ - git clone https://github.com/dongbohu/salmontools_tests.git "$volume_directory"/salmontools - - # Download tximport test data - rm -rf "$volume_directory"/tximport_test/ - git clone https://github.com/dongbohu/tximport_test.git "$volume_directory"/tximport_test + # salmontools test data + salmontools_test_zip="$test_data_repo/salmontools_test_data.tar.gz" + salmontools_test_dir="$volume_directory/salmontools" + + # Clean the test data directory + rm -rf "$salmontools_test_dir" + mkdir -p "$salmontools_test_dir" + + echo "Downloading 'salmontools' test data..." + wget -q -O "$volume_directory"/salmontools.tar.gz "$salmontools_test_zip" + tar xzf "$volume_directory"/salmontools.tar.gz -C "$volume_directory" + rm "$volume_directory"/salmontools.tar.gz # Make sure data for Salmon test is downloaded from S3. rna_seq_test_raw_dir="$volume_directory/raw/TEST/SALMON" From 276c2d4d89ff595afab50d1f20220d26fa24da7b Mon Sep 17 00:00:00 2001 From: Arkadii Yakovets Date: Thu, 16 Feb 2023 10:08:15 -0800 Subject: [PATCH 105/220] Address review comments. Fix git unrelated history issue. --- .../commands/post_downloads_summary.py | 196 ++++++++++++------ .../commands/test_post_downloads_summary.py | 128 ++++++++++-- 2 files changed, 237 insertions(+), 87 deletions(-) diff --git a/api/data_refinery_api/management/commands/post_downloads_summary.py b/api/data_refinery_api/management/commands/post_downloads_summary.py index 30a49cb1f..75db2db9b 100644 --- a/api/data_refinery_api/management/commands/post_downloads_summary.py +++ b/api/data_refinery_api/management/commands/post_downloads_summary.py @@ -1,7 +1,9 @@ import datetime +from collections import Counter from django.conf import settings from django.core.management.base import BaseCommand +from django.template.defaultfilters import pluralize from django.utils import timezone import requests @@ -9,109 +11,173 @@ from data_refinery_common.models import Dataset, DatasetAnnotation -def post_downloads_summary(days, channel): - start_time = timezone.now() - datetime.timedelta(days=days) +class Command(BaseCommand): + help = "Post downloads summary to Slack" + def add_arguments(self, parser): + parser.add_argument( + "--channel", + type=str, + default="ccdl-general", + help=("Optional parameter to choose the channel where the message will be posted."), + ) + parser.add_argument( + "--days", + type=int, + default=7, # Default to a week. + help=("Number of days in the past for which to build the stats."), + ) + parser.add_argument( + "--top-countries", + type=int, + default=5, + help=("Number of countries to show in the per country downloads summary."), + ) + + def handle(self, *args, **options): + post_downloads_summary(options["days"], options["channel"], options["top_countries"]) + + +def format_user_data(header, data): + """ + Formats user email, downloads count, location information sorted + by downloads count. + """ + # Allowed overhead for 2 column sorting: downloads count, email. + lines = sorted(data, key=lambda u: u[0].lower()) + lines = [ + f"{email.lower()} | {downloads} download{pluralize(downloads)} from {location}" + for email, downloads, location in sorted(lines, key=lambda u: u[1], reverse=True) + ] + lines.insert(0, header) + + return "\n".join(lines) + + +def get_user_location(ip_address): + """Gets user location information based on their IP address.""" + try: + data = requests.get(f"https://ipapi.co/{ip_address}/json/", timeout=10).json() + # The list of available fields https://ipapi.co/api/#complete-location + return ", ".join((data["city"], data["country_name"])) + except (requests.exceptions.RequestException, KeyError, ValueError): + return ip_address + + +def post_downloads_summary(days, channel, top_countries=5): + """Posts downloads summary to Slack channel.""" + + start_time = timezone.now() - datetime.timedelta(days=days) datasets = Dataset.processed_filtered_objects.filter( created_at__gt=start_time ).prefetch_related("datasetannotation_set") + annotations = DatasetAnnotation.objects.filter(dataset__in=datasets) + users_emails = set(dataset.email_address for dataset in datasets) - annotation_queryset = DatasetAnnotation.objects.filter(dataset__in=datasets) - - # Save the locations permanently, since IP addresses can cycle over time - location_cache = dict() - for annotation in annotation_queryset: + locations = set() + locations_cache = dict() + for annotation in annotations: if "location" not in annotation.data: - ip = annotation.data["ip"] - if ip not in location_cache: - location_cache[ip] = get_ip_location(ip) - annotation.data["location"] = location_cache[ip] + ip_address = annotation.data["ip"] + if ip_address not in locations_cache: + locations_cache[ip_address] = get_user_location(ip_address) + + # Save the locations permanently, since IP addresses can cycle over time. + annotation.data["location"] = locations_cache[ip_address] annotation.save() + locations.add(annotation.data["location"]) + + downloads_per_country = Counter() + downloads_total = 0 + new_users = [] + returning_users = [] + for user_email in users_emails: + user_annotations = annotations.filter(dataset__email_address=user_email) + user_downloads = user_annotations.count() + downloads_total += user_downloads + + user_locations = set() + for user_annotation in user_annotations: + user_locations.add(annotation.data["location"]) + try: + country = user_annotation.data["location"].split(", ")[1] + downloads_per_country.update({country: 1}) + except (IndexError, TypeError): + pass + + user_locations = "; ".join(sorted(user_locations)) + user_data = (user_email, user_downloads, user_locations) - unique_users = list(set(dataset.email_address for dataset in datasets)) - unique_locations = list(set(annotation.data["location"] for annotation in annotation_queryset)) - - new_users = "" - returning_users = "" - total_downloads = 0 - for email in unique_users: - user_annotations = annotation_queryset.filter(dataset__email_address=email) - downloads = user_annotations.count() - total_downloads += downloads - locations = ", ".join( - list(set(annotation.data["location"] for annotation in user_annotations)) - ) is_returning_user = Dataset.processed_filtered_objects.filter( - created_at__lt=start_time, email_address=email + created_at__lt=start_time, email_address=user_email ) - text = "{0} | {1} downloads from {2}\n".format(email, downloads, locations) if is_returning_user: - returning_users += text + returning_users.append(user_data) else: - new_users += text + new_users.append(user_data) - if total_downloads > 0: + if downloads_total: + locations_count = len(locations) + users_emails_count = len(users_emails) fallback_text = ( - f"In the last {days} days, {len(unique_users)} users downloaded {total_downloads}" - f" datasets from {len(unique_locations)} locations." + f"In the last {days} day{pluralize(days)}, {users_emails_count} " + f"user{pluralize(users_emails_count)} downloaded {downloads_total} " + f"dataset{pluralize(downloads_total)} from {locations_count} " + f"location{pluralize(locations_count)}." ) else: - fallback_text = f"There were no downloads in the last {days} days." + fallback_text = f"There were no downloads in the last {days} day{pluralize(days)}." blocks = [ {"type": "section", "text": {"type": "plain_text", "emoji": True, "text": fallback_text}} ] + if new_users: blocks.append( - {"type": "section", "text": {"type": "mrkdwn", "text": "*New users* \n" + new_users}} + { + "type": "section", + "text": {"type": "mrkdwn", "text": format_user_data("*New users*", new_users)}, + } ) + if returning_users: blocks.append( { "type": "section", - "text": {"type": "mrkdwn", "text": "*Returning users* \n" + returning_users}, + "text": { + "type": "mrkdwn", + "text": format_user_data("*Returning users*", returning_users), + }, + } + ) + + if top_countries and downloads_per_country: + countries_count = downloads_per_country.most_common(top_countries) + top_countries = min(top_countries, len(countries_count)) + lines = [f"*Top {top_countries} countr{pluralize(top_countries, 'y,ies')}*"] + # Allowed overhead for 2 column sorting: downloads count, country. + countries_count = sorted(countries_count, key=lambda cc: cc[0]) + countries_count = sorted(countries_count, key=lambda cc: cc[1], reverse=True) + for country, count in countries_count: + lines.append(f"{country}: {count} download{pluralize(count)}") + + blocks.append( + { + "type": "section", + "text": {"type": "mrkdwn", "text": "\n".join(lines)}, } ) - # Post to slack + # Post to Slack. requests.post( settings.ENGAGEMENTBOT_WEBHOOK, json={ "username": "EngagementBot", "icon_emoji": ":halal:", - "channel": "#" + channel, + "channel": f"#{channel}", "text": fallback_text, "blocks": blocks, }, headers={"Content-Type": "application/json"}, timeout=10, ) - - -class Command(BaseCommand): - help = "Post downloads summary to slack" - - def add_arguments(self, parser): - parser.add_argument( - "--days", - type=int, - default=7, # default to a week - help=("Number of days in the past for which to build the stats"), - ) - parser.add_argument( - "--channel", - type=str, - default="ccdl-general", - help=("Optional parameter to choose the channel where the message will be posted."), - ) - - def handle(self, *args, **options): - post_downloads_summary(options["days"], options["channel"]) - - -def get_ip_location(remote_ip): - try: - data = requests.get("https://ipapi.co/" + remote_ip + "/json/", timeout=10).json() - return "{0}, {1}".format(data["city"], data["country_name"]) - except (requests.exceptions.RequestException, ValueError, KeyError): - return remote_ip diff --git a/api/tests/management/commands/test_post_downloads_summary.py b/api/tests/management/commands/test_post_downloads_summary.py index f7b00b898..967986b42 100644 --- a/api/tests/management/commands/test_post_downloads_summary.py +++ b/api/tests/management/commands/test_post_downloads_summary.py @@ -9,51 +9,135 @@ class DownloadsPostTestCase(TestCase): - @patch("data_refinery_common.models.organism.requests.post") + @patch("data_refinery_api.management.commands.post_downloads_summary.requests.post") def test_post_download_summary_one_download(self, requests_post): dataset = Dataset(email_address="test@gmail.com", is_processed=True) dataset.save() - DatasetAnnotation(dataset=dataset, data={"location": "Testyville"}).save() + DatasetAnnotation(dataset=dataset, data={"location": "Testyville, TSA"}).save() - post_downloads_summary(7, "ccdl-general") + post_downloads_summary(7, "ccdl-general-test") + json = requests_post.mock_calls[0][2]["json"] - text = requests_post.mock_calls[0][2]["json"]["text"] - self.assertIn("1 users downloaded 1 datasets from 1 locations.", text) + self.assertEqual( + "In the last 7 days, 1 user downloaded 1 dataset from 1 location.", json["text"] + ) + self.assertEqual( + "\n".join(("*New users*", "test@gmail.com | 1 download from Testyville, TSA")), + json["blocks"][1]["text"]["text"], + ) + self.assertEqual( + "\n".join(("*Top 1 country*", "TSA: 1 download")), json["blocks"][2]["text"]["text"] + ) - @patch("data_refinery_common.models.organism.requests.post") + @patch("data_refinery_api.management.commands.post_downloads_summary.requests.post") def test_post_download_summary_two_downloads(self, requests_post): dataset = Dataset(email_address="test@gmail.com", is_processed=True) dataset.save() - DatasetAnnotation(dataset=dataset, data={"location": "Testyville"}).save() + DatasetAnnotation(dataset=dataset, data={"location": "Testyville, TSA"}).save() + + dataset = Dataset(email_address="test@gmail.com", is_processed=True) + dataset.save() + DatasetAnnotation(dataset=dataset, data={"location": "Testyville, TSA"}).save() + dataset = Dataset(email_address="test2@gmail.com", is_processed=True) dataset.save() - DatasetAnnotation(dataset=dataset, data={"location": "Not Testyville"}).save() + DatasetAnnotation(dataset=dataset, data={"location": "Not Testyville, Not TSA"}).save() - post_downloads_summary(7, "ccdl-general") + post_downloads_summary(7, "ccdl-general-test") + json = requests_post.mock_calls[0][2]["json"] - text = requests_post.mock_calls[0][2]["json"]["text"] - self.assertIn("2 users downloaded 2 datasets from 2 locations.", text) + self.assertEqual( + "In the last 7 days, 2 users downloaded 3 datasets from 2 locations.", json["text"] + ) + self.assertEqual( + "\n".join( + ( + "*New users*", + "test@gmail.com | 2 downloads from Testyville, TSA", + "test2@gmail.com | 1 download from Not Testyville, Not TSA", + ) + ), + json["blocks"][1]["text"]["text"], + ) + self.assertEqual( + "\n".join(("*Top 2 countries*", "TSA: 2 downloads", "Not TSA: 1 download")), + json["blocks"][2]["text"]["text"], + ) - @patch("data_refinery_common.models.organism.requests.post") + @patch("data_refinery_api.management.commands.post_downloads_summary.requests.post") + def test_post_download_summary_ordering(self, requests_post): + for _ in range(2): + dataset = Dataset(email_address="ATEST2@gmail.com", is_processed=True) + dataset.save() + DatasetAnnotation(dataset=dataset, data={"location": "Not Testyville, Not TSA"}).save() + + for _ in range(2): + dataset = Dataset(email_address="TEST@gmail.com", is_processed=True) + dataset.save() + DatasetAnnotation(dataset=dataset, data={"location": "Testyville, TSA"}).save() + + dataset = Dataset(email_address="TEST3@gmail.com", is_processed=True) + dataset.save() + DatasetAnnotation(dataset=dataset, data={"location": "Testbec City, Tanada"}).save() + + for _ in range(3): + dataset = Dataset(email_address="WEST@gmail.com", is_processed=True) + dataset.save() + DatasetAnnotation(dataset=dataset, data={"location": "Westyville, Texico"}).save() + + post_downloads_summary(7, "ccdl-general-test") + json = requests_post.mock_calls[0][2]["json"] + + self.assertEqual( + "In the last 7 days, 4 users downloaded 8 datasets from 4 locations.", json["text"] + ) + self.assertEqual( + "\n".join( + ( + "*New users*", + "west@gmail.com | 3 downloads from Westyville, Texico", + "atest2@gmail.com | 2 downloads from Not Testyville, Not TSA", + "test@gmail.com | 2 downloads from Testyville, TSA", + "test3@gmail.com | 1 download from Testbec City, Tanada", + ) + ), + json["blocks"][1]["text"]["text"], + ) + self.assertEqual( + "\n".join( + ( + "*Top 4 countries*", + "Texico: 3 downloads", + "Not TSA: 2 downloads", + "TSA: 2 downloads", + "Tanada: 1 download", + ) + ), + json["blocks"][2]["text"]["text"], + ) + + @patch("data_refinery_api.management.commands.post_downloads_summary.requests.post") def test_post_download_summary_filtered(self, requests_post): dataset = Dataset(email_address="test@gmail.com", is_processed=True) dataset.save() - DatasetAnnotation(dataset=dataset, data={"location": "Testyville"}).save() + DatasetAnnotation(dataset=dataset, data={"location": "Testyville, TSA"}).save() + last_week = timezone.now() - timedelta(days=8) dataset = Dataset(created_at=last_week, email_address="test2@gmail.com", is_processed=True) dataset.save() DatasetAnnotation( - created_at=last_week, dataset=dataset, data={"location": "Not Testyville"} + created_at=last_week, dataset=dataset, data={"location": "Testyville, TSA"} ).save() - post_downloads_summary(7, "ccdl-general") - - text = requests_post.mock_calls[0][2]["json"]["text"] - self.assertIn("1 users downloaded 1 datasets from 1 locations.", text) + post_downloads_summary(7, "ccdl-general-test") + json = requests_post.mock_calls[0][2]["json"] + self.assertEqual( + "In the last 7 days, 1 user downloaded 1 dataset from 1 location.", json["text"] + ) - @patch("data_refinery_common.models.organism.requests.post") + @patch("data_refinery_api.management.commands.post_downloads_summary.requests.post") def test_empty_post_download_summary(self, requests_post): - post_downloads_summary(7, "ccdl-general") + post_downloads_summary(7, "ccdl-general-test") - text = requests_post.mock_calls[0][2]["json"]["text"] - self.assertIn("no downloads", text) + json = requests_post.mock_calls[0][2]["json"] + self.assertEqual("There were no downloads in the last 7 days.", json["text"]) From 57b3b525e0f1a7a17734d492e4f2a1edf0e0a4f8 Mon Sep 17 00:00:00 2001 From: Arkadii Yakovets Date: Thu, 16 Feb 2023 10:15:47 -0800 Subject: [PATCH 106/220] Fix tests. --- .../management/commands/post_downloads_summary.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/api/data_refinery_api/management/commands/post_downloads_summary.py b/api/data_refinery_api/management/commands/post_downloads_summary.py index 75db2db9b..f43650cd5 100644 --- a/api/data_refinery_api/management/commands/post_downloads_summary.py +++ b/api/data_refinery_api/management/commands/post_downloads_summary.py @@ -98,7 +98,7 @@ def post_downloads_summary(days, channel, top_countries=5): user_locations = set() for user_annotation in user_annotations: - user_locations.add(annotation.data["location"]) + user_locations.add(user_annotation.data["location"]) try: country = user_annotation.data["location"].split(", ")[1] downloads_per_country.update({country: 1}) From b524001ca9dbbc7c16212340b115d3c1e45d8e14 Mon Sep 17 00:00:00 2001 From: ark Date: Thu, 5 May 2022 12:03:20 -0700 Subject: [PATCH 107/220] Get rid of wildcard imports. --- .../import_external_sample_attributes.py | 2 +- .../import_external_sample_keywords.py | 2 +- .../management/commands/clear_database.py | 21 ++++++++++++++++++- .../commands/correct_affy_samples.py | 2 +- 4 files changed, 23 insertions(+), 4 deletions(-) diff --git a/foreman/data_refinery_foreman/foreman/management/commands/import_external_sample_attributes.py b/foreman/data_refinery_foreman/foreman/management/commands/import_external_sample_attributes.py index c22a3f354..def44fbdd 100644 --- a/foreman/data_refinery_foreman/foreman/management/commands/import_external_sample_attributes.py +++ b/foreman/data_refinery_foreman/foreman/management/commands/import_external_sample_attributes.py @@ -23,7 +23,7 @@ import botocore from data_refinery_common.logging import get_and_configure_logger -from data_refinery_common.models import * +from data_refinery_common.models import Contribution, OntologyTerm, Sample, SampleAttribute from data_refinery_common.utils import parse_s3_url logger = get_and_configure_logger(__name__) diff --git a/foreman/data_refinery_foreman/foreman/management/commands/import_external_sample_keywords.py b/foreman/data_refinery_foreman/foreman/management/commands/import_external_sample_keywords.py index 8b1d0c93a..c3b84375a 100644 --- a/foreman/data_refinery_foreman/foreman/management/commands/import_external_sample_keywords.py +++ b/foreman/data_refinery_foreman/foreman/management/commands/import_external_sample_keywords.py @@ -25,7 +25,7 @@ import botocore from data_refinery_common.logging import get_and_configure_logger -from data_refinery_common.models import * +from data_refinery_common.models import Contribution, OntologyTerm, Sample, SampleKeyword from data_refinery_common.utils import parse_s3_url logger = get_and_configure_logger(__name__) diff --git a/foreman/data_refinery_foreman/surveyor/management/commands/clear_database.py b/foreman/data_refinery_foreman/surveyor/management/commands/clear_database.py index 81ea94c7e..a1518c6ae 100644 --- a/foreman/data_refinery_foreman/surveyor/management/commands/clear_database.py +++ b/foreman/data_refinery_foreman/surveyor/management/commands/clear_database.py @@ -4,7 +4,26 @@ from django.core.management.base import BaseCommand -from data_refinery_common.models import * +from data_refinery_common.models import ( + ComputationalResult, + ComputationalResultAnnotation, + ComputedFile, + DownloaderJob, + DownloaderJobOriginalFileAssociation, + Experiment, + ExperimentAnnotation, + ExperimentSampleAssociation, + Organism, + OrganismIndex, + OriginalFile, + ProcessorJob, + ProcessorJobOriginalFileAssociation, + Sample, + SampleAnnotation, + SampleResultAssociation, + SurveyJob, + SurveyJobKeyValue, +) class Command(BaseCommand): diff --git a/workers/data_refinery_workers/processors/management/commands/correct_affy_samples.py b/workers/data_refinery_workers/processors/management/commands/correct_affy_samples.py index 8f5567b66..7de449438 100644 --- a/workers/data_refinery_workers/processors/management/commands/correct_affy_samples.py +++ b/workers/data_refinery_workers/processors/management/commands/correct_affy_samples.py @@ -22,7 +22,7 @@ from rpy2.rinterface_lib.embedded import RRuntimeError from data_refinery_common.logging import get_and_configure_logger -from data_refinery_common.models import * +from data_refinery_common.models import Sample from data_refinery_common.utils import get_env_variable, get_readable_affymetrix_names logger = get_and_configure_logger(__name__) From 826322842ce7a2989ed6767818e2fc7bd8f61d7b Mon Sep 17 00:00:00 2001 From: David Mejia Date: Mon, 17 Apr 2023 13:43:46 -0400 Subject: [PATCH 108/220] Fix test_tximport.R path --- workers/tests/processors/test_salmon.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/workers/tests/processors/test_salmon.py b/workers/tests/processors/test_salmon.py index e2744668b..c97bdaa6b 100644 --- a/workers/tests/processors/test_salmon.py +++ b/workers/tests/processors/test_salmon.py @@ -473,7 +473,7 @@ def test_salmon_quant_two_samples_single_read(self): cmd_tokens = [ "/usr/bin/Rscript", "--vanilla", - "/home/user/data_refinery_workers/processors/test_tximport.R", + "/home/user/tests/processors/test_tximport.R", "--txi_out", rds_file_path, "--gene2txmap", From 9a693daee245d6c1a34d2d02f26dbfab6a9459cc Mon Sep 17 00:00:00 2001 From: Arkadii Yakovets Date: Mon, 17 Apr 2023 12:20:02 -0700 Subject: [PATCH 109/220] Update refine.bio public key. --- infrastructure/security.tf | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/infrastructure/security.tf b/infrastructure/security.tf index 517ecc2cc..cf2466e9c 100644 --- a/infrastructure/security.tf +++ b/infrastructure/security.tf @@ -5,7 +5,7 @@ # debugging. Long term we may want to remove this entirely. resource "aws_key_pair" "data_refinery" { key_name = "data-refinery-key-${var.user}-${var.stage}" - public_key = "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQDCImXhaIS+uh0rJ6V88V1ZN6pH7pSXA22t7zYTnlRXXoHgKIUpc1iH07dDwrKIAYmwCO36H0dmlxymsEvnDJA2alPxic2GXe04ExGOEuFeemmdvmw9NUk+2vRNUPrKgRIsZZ2QSrXkvEyoFGgJQ1ywx4ZbkHxLaxgAr0wgzyv1bdOo3RiOPA3pSiN2hzATlxGx655fCPhjTTCsM9T7HzkF+UGY6tJ8z93aC3vDtAjBi9vpgrwEL/xv7l8lU0ECjfYKQFlHFncUrcMIs33MlkOk9e4VbD5lKzghCSaNV2+dBjxmWwCAIpmEag5/Y/07m7qg5NDhjJyB/BC9+f/2hu8lMR7IhZNDP7xhOs4X27R01huhJOdAV3dodb2BPWxRu2jlaaXHorfuH5ORV5csW6ubCMwl2HzF18bH3k87wvo37xvvh+YSeLQwrwaC/lPRU5f8j5AJynb3B/QeBR5RU/3b4TFdLvMakVs2dy5miQdwIuDRD49UYtRsJqaOtRbSPtgWLrsO1yT4yhQQCYXgTGwP8o2Jsnpm4+V1bFSzMNSwPpDa5jUVDGLLZ08ldfc6XiRnd2ATtcrs6Y/YqEbzyW6lv49lMQXqzwUx0OfnQ+vcWjaQmQRIfP6VmEYvBUrrBuxECLZD7w1IYB8+Dyi1JOSfm7n4uoW5kO/PsADA6UtAzQ==" + public_key = "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIEAsg062YxUo1ti8tT2gR63JVHpLI5jkxkADwEeVb79O" } From a1deca63126946656350a1d902d1f5f8ce0959f0 Mon Sep 17 00:00:00 2001 From: Arkadii Yakovets Date: Mon, 17 Apr 2023 12:47:04 -0700 Subject: [PATCH 110/220] Fix keys path. --- .github/scripts/verify_tag.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/scripts/verify_tag.sh b/.github/scripts/verify_tag.sh index b0c0387d3..afeea0c2c 100755 --- a/.github/scripts/verify_tag.sh +++ b/.github/scripts/verify_tag.sh @@ -6,7 +6,7 @@ cd ~/refinebio || exit for key in keys/*; do - gpg --import "keys/$key" + gpg --import "$key" done # If it is not a good key then the exit code is 1, which will cause From 6b09596161929c05d71c9449d8daec8f19bcef24 Mon Sep 17 00:00:00 2001 From: Arkadii Yakovets Date: Tue, 18 Apr 2023 11:13:03 -0700 Subject: [PATCH 111/220] Pin setuptools to version 65.7 --- api/dockerfiles/Dockerfile.api_local | 1 + api/dockerfiles/Dockerfile.api_production | 1 + common/dockerfiles/Dockerfile.base | 3 ++- workers/dockerfiles/Dockerfile.compendia | 3 ++- 4 files changed, 6 insertions(+), 2 deletions(-) diff --git a/api/dockerfiles/Dockerfile.api_local b/api/dockerfiles/Dockerfile.api_local index 2018cd59b..a83e98bd8 100644 --- a/api/dockerfiles/Dockerfile.api_local +++ b/api/dockerfiles/Dockerfile.api_local @@ -15,6 +15,7 @@ WORKDIR /home/user COPY api/requirements.txt . RUN pip install --upgrade pip && \ + pip install setuptools==65.7 && \ pip install --ignore-installed -r requirements.txt && \ rm -r /root/.cache diff --git a/api/dockerfiles/Dockerfile.api_production b/api/dockerfiles/Dockerfile.api_production index 37184be03..bebf793c8 100644 --- a/api/dockerfiles/Dockerfile.api_production +++ b/api/dockerfiles/Dockerfile.api_production @@ -15,6 +15,7 @@ WORKDIR /home/user COPY api/requirements.txt . RUN pip install --upgrade pip && \ + pip install setuptools==65.7 && \ pip install --ignore-installed -r requirements.txt && \ pip install --ignore-installed uwsgi && \ rm -r /root/.cache diff --git a/common/dockerfiles/Dockerfile.base b/common/dockerfiles/Dockerfile.base index 13987e894..5119781b7 100644 --- a/common/dockerfiles/Dockerfile.base +++ b/common/dockerfiles/Dockerfile.base @@ -59,7 +59,8 @@ RUN apt-get update && \ ln -s /usr/bin/llvm-config-10 /usr/bin/llvm-config && \ update-alternatives --install \ /usr/bin/python3 python3 /usr/bin/python3.8 1 && \ - pip3 install --upgrade pip setuptools && \ + pip3 install --upgrade pip && \ + pip3 install setuptools==65.7 && \ groupadd user && \ useradd --create-home --home-dir /home/user/ -g user user && \ chown -R user /home/user/ diff --git a/workers/dockerfiles/Dockerfile.compendia b/workers/dockerfiles/Dockerfile.compendia index 7b8240b78..af8d43483 100644 --- a/workers/dockerfiles/Dockerfile.compendia +++ b/workers/dockerfiles/Dockerfile.compendia @@ -59,7 +59,8 @@ RUN echo debconf apt-fast/maxdownloads string 16 | debconf-set-selections && \ ln -s /usr/bin/llvm-config-10 /usr/bin/llvm-config && \ update-alternatives --install /usr/bin/python3 python3 \ /usr/bin/python3.8 1 && \ - pip3 install --upgrade pip setuptools && \ + pip3 install --upgrade pip && \ + pip3 install setuptools==65.7 && \ groupadd user && \ useradd --create-home --home-dir /home/user -g user user From 1a892463d481d8121258aa461fdd630429505a8e Mon Sep 17 00:00:00 2001 From: Arkadii Yakovets Date: Tue, 18 Apr 2023 15:35:07 -0700 Subject: [PATCH 112/220] Revert setuptools version pinning. --- api/dockerfiles/Dockerfile.api_local | 1 - api/dockerfiles/Dockerfile.api_production | 1 - common/dockerfiles/Dockerfile.base | 3 +-- workers/dockerfiles/Dockerfile.compendia | 3 +-- 4 files changed, 2 insertions(+), 6 deletions(-) diff --git a/api/dockerfiles/Dockerfile.api_local b/api/dockerfiles/Dockerfile.api_local index a83e98bd8..2018cd59b 100644 --- a/api/dockerfiles/Dockerfile.api_local +++ b/api/dockerfiles/Dockerfile.api_local @@ -15,7 +15,6 @@ WORKDIR /home/user COPY api/requirements.txt . RUN pip install --upgrade pip && \ - pip install setuptools==65.7 && \ pip install --ignore-installed -r requirements.txt && \ rm -r /root/.cache diff --git a/api/dockerfiles/Dockerfile.api_production b/api/dockerfiles/Dockerfile.api_production index bebf793c8..37184be03 100644 --- a/api/dockerfiles/Dockerfile.api_production +++ b/api/dockerfiles/Dockerfile.api_production @@ -15,7 +15,6 @@ WORKDIR /home/user COPY api/requirements.txt . RUN pip install --upgrade pip && \ - pip install setuptools==65.7 && \ pip install --ignore-installed -r requirements.txt && \ pip install --ignore-installed uwsgi && \ rm -r /root/.cache diff --git a/common/dockerfiles/Dockerfile.base b/common/dockerfiles/Dockerfile.base index 5119781b7..13987e894 100644 --- a/common/dockerfiles/Dockerfile.base +++ b/common/dockerfiles/Dockerfile.base @@ -59,8 +59,7 @@ RUN apt-get update && \ ln -s /usr/bin/llvm-config-10 /usr/bin/llvm-config && \ update-alternatives --install \ /usr/bin/python3 python3 /usr/bin/python3.8 1 && \ - pip3 install --upgrade pip && \ - pip3 install setuptools==65.7 && \ + pip3 install --upgrade pip setuptools && \ groupadd user && \ useradd --create-home --home-dir /home/user/ -g user user && \ chown -R user /home/user/ diff --git a/workers/dockerfiles/Dockerfile.compendia b/workers/dockerfiles/Dockerfile.compendia index af8d43483..7b8240b78 100644 --- a/workers/dockerfiles/Dockerfile.compendia +++ b/workers/dockerfiles/Dockerfile.compendia @@ -59,8 +59,7 @@ RUN echo debconf apt-fast/maxdownloads string 16 | debconf-set-selections && \ ln -s /usr/bin/llvm-config-10 /usr/bin/llvm-config && \ update-alternatives --install /usr/bin/python3 python3 \ /usr/bin/python3.8 1 && \ - pip3 install --upgrade pip && \ - pip3 install setuptools==65.7 && \ + pip3 install --upgrade pip setuptools && \ groupadd user && \ useradd --create-home --home-dir /home/user -g user user From 5c6cf98ebecdfadb5a9cda969f2a2de72eb05e2f Mon Sep 17 00:00:00 2001 From: Arkadii Yakovets Date: Tue, 18 Apr 2023 15:55:45 -0700 Subject: [PATCH 113/220] Change common package version format. --- common/setup.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/common/setup.py b/common/setup.py index 64d62624c..78339b2e1 100644 --- a/common/setup.py +++ b/common/setup.py @@ -8,7 +8,7 @@ VERSION_FILE = "version" try: with open(VERSION_FILE, "rt") as version_file: - version_string = version_file.read().strip() + version_string = version_file.read().strip().split("-")[0] except OSError: print( "Cannot read version to determine System Version." From 568d820a47c0a17d1939f52ac57e8e295c945b94 Mon Sep 17 00:00:00 2001 From: Arkadii Yakovets Date: Wed, 19 Apr 2023 18:34:27 -0700 Subject: [PATCH 114/220] Fix `volume_directory` permissions --- api/run_tests.sh | 2 +- common/run_tests.sh | 2 +- foreman/run_end_to_end_tests.sh | 2 +- foreman/run_management_command.sh | 2 +- foreman/run_tests.sh | 2 +- foreman/test_survey.sh | 2 +- scripts/run_manage.sh | 2 +- scripts/run_shell.sh | 2 +- workers/run_command.sh | 4 +--- workers/run_job.sh | 3 +-- 10 files changed, 10 insertions(+), 13 deletions(-) diff --git a/api/run_tests.sh b/api/run_tests.sh index fedf4cbbe..f81309fbd 100755 --- a/api/run_tests.sh +++ b/api/run_tests.sh @@ -28,8 +28,8 @@ project_root=$(pwd) # "cd .." called above volume_directory="$project_root/test_volume" if [ ! -d "$volume_directory" ]; then mkdir "$volume_directory" - chmod -R a+rwX "$volume_directory" fi +chmod -R a+rwX "$volume_directory" ./scripts/prepare_image.sh -i api_local -s api diff --git a/common/run_tests.sh b/common/run_tests.sh index dfed8defd..51c564270 100755 --- a/common/run_tests.sh +++ b/common/run_tests.sh @@ -22,8 +22,8 @@ project_root=$(pwd) # "cd .." called above volume_directory="$project_root/test_volume" if [ ! -d "$volume_directory" ]; then mkdir "$volume_directory" - chmod -R a+rwX "$volume_directory" fi +chmod -R a+rwX "$volume_directory" ./scripts/prepare_image.sh -i common_tests -s common diff --git a/foreman/run_end_to_end_tests.sh b/foreman/run_end_to_end_tests.sh index 03e3fd4b8..01960aa84 100755 --- a/foreman/run_end_to_end_tests.sh +++ b/foreman/run_end_to_end_tests.sh @@ -15,8 +15,8 @@ project_root=$(cd .. && pwd) volume_directory="$project_root/test_volume" if [ ! -d "$volume_directory" ]; then mkdir "$volume_directory" - chmod -R a+rwX "$volume_directory" fi +chmod -R a+rwX "$volume_directory" test_data_repo="https://s3.amazonaws.com/data-refinery-test-assets" reference_file_dir="$volume_directory/reference/" diff --git a/foreman/run_management_command.sh b/foreman/run_management_command.sh index 08231665a..a9e4ce101 100755 --- a/foreman/run_management_command.sh +++ b/foreman/run_management_command.sh @@ -15,8 +15,8 @@ cd .. volume_directory="$script_directory/volume" if [ ! -d "$volume_directory" ]; then mkdir "$volume_directory" - chmod -R a+rwX "$volume_directory" fi +chmod -R a+rwX "$volume_directory" ./scripts/prepare_image.sh -i foreman -s foreman diff --git a/foreman/run_tests.sh b/foreman/run_tests.sh index e35df351b..8edbdc56f 100755 --- a/foreman/run_tests.sh +++ b/foreman/run_tests.sh @@ -15,8 +15,8 @@ project_root=$(cd .. && pwd) volume_directory="$project_root/test_volume" if [ ! -d "$volume_directory" ]; then mkdir "$volume_directory" - chmod -R a+rwX "$volume_directory" fi +chmod -R a+rwX "$volume_directory" # However in order to give Docker access to all the code we have to # move up a level diff --git a/foreman/test_survey.sh b/foreman/test_survey.sh index 7a4016573..7df91a3ae 100755 --- a/foreman/test_survey.sh +++ b/foreman/test_survey.sh @@ -59,8 +59,8 @@ project_root=$(cd .. && pwd) volume_directory="$project_root/test_volume" if [ ! -d "$volume_directory" ]; then mkdir "$volume_directory" - chmod -R a+rwX "$volume_directory" fi +chmod -R a+rwX "$volume_directory" # However in order to give Docker access to all the code we have to # move up a level diff --git a/scripts/run_manage.sh b/scripts/run_manage.sh index 9ccb4761d..51cc2f550 100755 --- a/scripts/run_manage.sh +++ b/scripts/run_manage.sh @@ -76,8 +76,8 @@ fi volume_directory="$script_directory/../api/volume" if [ ! -d "$volume_directory" ]; then mkdir "$volume_directory" - chmod -R a+rwX "$volume_directory" fi +chmod -R a+rwX "$volume_directory" docker build -t dr_shell -f "$service/dockerfiles/Dockerfile.$image" . diff --git a/scripts/run_shell.sh b/scripts/run_shell.sh index d5be913ad..cfb60d00c 100755 --- a/scripts/run_shell.sh +++ b/scripts/run_shell.sh @@ -25,8 +25,8 @@ cd .. volume_directory="$script_directory/../foreman/volume" if [ ! -d "$volume_directory" ]; then mkdir "$volume_directory" - chmod -R a+rwX "$volume_directory" fi +chmod -R a+rwX "$volume_directory" docker build -t dr_shell -f foreman/dockerfiles/Dockerfile.foreman . diff --git a/workers/run_command.sh b/workers/run_command.sh index 0edfd614f..da50660b1 100755 --- a/workers/run_command.sh +++ b/workers/run_command.sh @@ -43,14 +43,12 @@ fi volume_directory="$script_directory/volume" if [ ! -d "$volume_directory" ]; then mkdir "$volume_directory" - chmod -R a+rwX "$volume_directory" fi +chmod -R a+rwX "$volume_directory" . ./scripts/common.sh DB_HOST_IP=$(get_docker_db_ip_address) -chmod -R a+rwX "$volume_directory" - ./scripts/prepare_image.sh -i "$image" -s workers image_name=ccdlstaging/dr_"$image" diff --git a/workers/run_job.sh b/workers/run_job.sh index 081b94646..7342103bc 100755 --- a/workers/run_job.sh +++ b/workers/run_job.sh @@ -78,11 +78,10 @@ else fi volume_directory="$script_directory/volume" - if [ ! -d "$volume_directory" ]; then mkdir "$volume_directory" - chmod -R a+rwX "$volume_directory" fi +chmod -R a+rwX "$volume_directory" source scripts/common.sh DB_HOST_IP=$(get_docker_db_ip_address) From f4a59f151187ef659a064976457a46e7480460e0 Mon Sep 17 00:00:00 2001 From: Arkadii Yakovets Date: Wed, 19 Apr 2023 18:39:59 -0700 Subject: [PATCH 115/220] Remove default profile Fix `failed to get shared config profile, default` error. --- infrastructure/batch/job_queue.tf | 1 - infrastructure/networking.tf | 1 - 2 files changed, 2 deletions(-) diff --git a/infrastructure/batch/job_queue.tf b/infrastructure/batch/job_queue.tf index e8716b3a3..e67dc49bc 100644 --- a/infrastructure/batch/job_queue.tf +++ b/infrastructure/batch/job_queue.tf @@ -1,6 +1,5 @@ # AWS Batch setup provider "aws" { - profile = "default" region = "us-east-1" } diff --git a/infrastructure/networking.tf b/infrastructure/networking.tf index 77c87189f..865debe73 100644 --- a/infrastructure/networking.tf +++ b/infrastructure/networking.tf @@ -2,7 +2,6 @@ # related to networking. provider "aws" { - profile = "default" region = var.region } From 732cd0225a68d1a7555426b5c91f20dc948b542a Mon Sep 17 00:00:00 2001 From: Arkadii Yakovets Date: Thu, 20 Apr 2023 09:21:44 -0700 Subject: [PATCH 116/220] Migrate deprecated `set-output` command --- .github/workflows/config.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/config.yml b/.github/workflows/config.yml index 74113e557..be3a36d7f 100644 --- a/.github/workflows/config.yml +++ b/.github/workflows/config.yml @@ -478,7 +478,7 @@ jobs: name: Set the $CI_TAG environment variable run: | source scripts/common.sh - echo "::set-output name=branch::$(get_master_or_dev ${GITHUB_REF#refs/tags/})" + echo "branch=$(get_master_or_dev ${GITHUB_REF#refs/tags/})" >> $GITHUB_OUTPUT deploy: if: startsWith(github.ref, 'refs/tags/v') && ! endsWith(github.ref, '-hotfix') From fb5dfa91303e8b3d1554028a0e5290f8fd52bc2e Mon Sep 17 00:00:00 2001 From: Arkadii Yakovets Date: Thu, 20 Apr 2023 09:40:07 -0700 Subject: [PATCH 117/220] Update Foreman end2end test runner location --- foreman/run_end_to_end_tests.sh | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/foreman/run_end_to_end_tests.sh b/foreman/run_end_to_end_tests.sh index 01960aa84..554068980 100755 --- a/foreman/run_end_to_end_tests.sh +++ b/foreman/run_end_to_end_tests.sh @@ -43,12 +43,12 @@ done < ../infrastructure/prod_env # locally, and when running locally `prepare_image.sh` makes the forman # ccdlstaging/dr_foreman. docker run -t \ - --env-file ../infrastructure/prod_env \ - --env RUNNING_IN_CLOUD=False \ - --env DATABASE_HOST="$DATABASE_PUBLIC_HOST" \ - --env JOB_DEFINITION_PREFIX="$USER_$STAGE_" \ - --env REFINEBIO_BASE_URL="http://$API_HOST/v1/" \ - --env DJANGO_SECRET_KEY="TEST_KEY_FOR_DEV" \ - --volume "$volume_directory":/home/user/data_store \ - --volume "$HOME/.aws":/home/user/.aws \ - ccdlstaging/dr_foreman python3 manage.py test --no-input --parallel=2 --testrunner='data_refinery_foreman.test_runner.NoDbTestRunner' data_refinery_foreman.foreman.test_end_to_end + --env-file ../infrastructure/prod_env \ + --env RUNNING_IN_CLOUD=False \ + --env DATABASE_HOST="$DATABASE_PUBLIC_HOST" \ + --env JOB_DEFINITION_PREFIX="$USER_$STAGE_" \ + --env REFINEBIO_BASE_URL="http://$API_HOST/v1/" \ + --env DJANGO_SECRET_KEY="TEST_KEY_FOR_DEV" \ + --volume "$volume_directory":/home/user/data_store \ + --volume "$HOME/.aws":/home/user/.aws \ + ccdlstaging/dr_foreman python3 manage.py test --no-input --parallel=2 --testrunner='tests.test_runner.NoDbTestRunner' tests.foreman.test_end_to_end From a80a5c2512dea34597908822017f92379974e134 Mon Sep 17 00:00:00 2001 From: Arkadii Yakovets Date: Thu, 20 Apr 2023 11:54:35 -0700 Subject: [PATCH 118/220] Add a temporary workaround for failing end2end test --- foreman/tests/foreman/test_end_to_end.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/foreman/tests/foreman/test_end_to_end.py b/foreman/tests/foreman/test_end_to_end.py index d176029c2..918db83d7 100644 --- a/foreman/tests/foreman/test_end_to_end.py +++ b/foreman/tests/foreman/test_end_to_end.py @@ -41,7 +41,8 @@ SMASHER_EXPERIMENTS = ["GSE1487313", "SRP332914"] MICROARRAY_ACCESSION_CODES = [ - "E-TABM-496", # 39 samples of SACCHAROMYCES_CEREVISIAE microarray data + # TODO(ark): enable after ArrayExpress migration is done. + # "E-TABM-496", # 39 samples of SACCHAROMYCES_CEREVISIAE microarray data "GSE94793", # 24 samples of SACCHAROMYCES_CEREVISIAE microarray data "GSE80822", # 12 samples of SACCHAROMYCES_CEREVISIAE microarray data "GSE96849", # 68 samples of SACCHAROMYCES_CEREVISIAE microarray data From 2bb7ffd68b418dddeda36d127240bf1734c258e5 Mon Sep 17 00:00:00 2001 From: Arkadii Yakovets Date: Fri, 21 Apr 2023 08:23:05 -0700 Subject: [PATCH 119/220] Bump setup-terraform action from v1 to v2 --- .github/workflows/config.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/config.yml b/.github/workflows/config.yml index 74113e557..2f7d37042 100644 --- a/.github/workflows/config.yml +++ b/.github/workflows/config.yml @@ -12,7 +12,7 @@ jobs: steps: - uses: actions/checkout@v3 - - uses: hashicorp/setup-terraform@v1 + - uses: hashicorp/setup-terraform@v2 with: terraform_version: 0.13.5 From 007b55e89fe866224bdd46047b103ec64e80f078 Mon Sep 17 00:00:00 2001 From: Arkadii Yakovets Date: Fri, 21 Apr 2023 08:24:52 -0700 Subject: [PATCH 120/220] Bump docker login-action from v1 to v2 --- .github/workflows/config.yml | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/.github/workflows/config.yml b/.github/workflows/config.yml index 74113e557..08445aefe 100644 --- a/.github/workflows/config.yml +++ b/.github/workflows/config.yml @@ -43,7 +43,7 @@ jobs: run: ./.github/scripts/cleanup_instance.sh - name: Login to Packages Container registry - uses: docker/login-action@v1 + uses: docker/login-action@v2 with: registry: ghcr.io username: ${{ github.actor }} @@ -86,7 +86,7 @@ jobs: - uses: actions/checkout@v3 - name: Login to Packages Container registry - uses: docker/login-action@v1 + uses: docker/login-action@v2 with: registry: ghcr.io username: ${{ github.actor }} @@ -131,7 +131,7 @@ jobs: run: ./.github/scripts/cleanup_instance.sh - name: Login to Packages Container registry - uses: docker/login-action@v1 + uses: docker/login-action@v2 with: registry: ghcr.io username: ${{ github.actor }} @@ -180,7 +180,7 @@ jobs: - uses: actions/checkout@v3 - name: Login to Packages Container registry - uses: docker/login-action@v1 + uses: docker/login-action@v2 with: registry: ghcr.io username: ${{ github.actor }} @@ -232,7 +232,7 @@ jobs: run: ./.github/scripts/cleanup_instance.sh - name: Login to Packages Container registry - uses: docker/login-action@v1 + uses: docker/login-action@v2 with: registry: ghcr.io username: ${{ github.actor }} @@ -281,7 +281,7 @@ jobs: - uses: actions/checkout@v3 - name: Login to Packages Container registry - uses: docker/login-action@v1 + uses: docker/login-action@v2 with: registry: ghcr.io username: ${{ github.actor }} @@ -324,7 +324,7 @@ jobs: - uses: actions/checkout@v3 - name: Login to Packages Container registry - uses: docker/login-action@v1 + uses: docker/login-action@v2 with: registry: ghcr.io username: ${{ github.actor }} @@ -368,7 +368,7 @@ jobs: run: ./.github/scripts/cleanup_instance.sh - name: Login to Packages Container registry - uses: docker/login-action@v1 + uses: docker/login-action@v2 with: registry: ghcr.io username: ${{ github.actor }} @@ -429,7 +429,7 @@ jobs: - uses: actions/checkout@v3 - name: Login to Packages Container registry - uses: docker/login-action@v1 + uses: docker/login-action@v2 with: registry: ghcr.io username: ${{ github.actor }} From 93fefb685cb34e461173bb326bab0e611fa418b1 Mon Sep 17 00:00:00 2001 From: Jaclyn Taroni <19534205+jaclyn-taroni@users.noreply.github.com> Date: Mon, 24 Apr 2023 10:23:57 -0400 Subject: [PATCH 121/220] Add newer and additional RNA-seq supported platforms --- config/supported_rnaseq_platforms.txt | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/config/supported_rnaseq_platforms.txt b/config/supported_rnaseq_platforms.txt index f4f43b61a..48754187c 100644 --- a/config/supported_rnaseq_platforms.txt +++ b/config/supported_rnaseq_platforms.txt @@ -8,8 +8,15 @@ Illumina HiSeq 2000 Illumina HiSeq 2500 Illumina HiSeq 3000 Illumina HiSeq 4000 +Illumina HiSeq X +HiSeq X Ten +HiSeq X Five +Illumina NovaSeq 6000 +Illumina NovaSeq X NextSeq 500 NextSeq 550 +NextSeq 1000 +NextSeq 2000 Ion Torrent Proton Ion Torrent S5 Ion Torrent S5 XL From 8bc04bb7193e85b6986186a270b3bf9e2d471d52 Mon Sep 17 00:00:00 2001 From: Jaclyn Taroni <19534205+jaclyn-taroni@users.noreply.github.com> Date: Wed, 26 Apr 2023 15:16:07 -0400 Subject: [PATCH 122/220] Add MiSeq --- config/supported_rnaseq_platforms.txt | 1 + 1 file changed, 1 insertion(+) diff --git a/config/supported_rnaseq_platforms.txt b/config/supported_rnaseq_platforms.txt index 48754187c..3273895c0 100644 --- a/config/supported_rnaseq_platforms.txt +++ b/config/supported_rnaseq_platforms.txt @@ -11,6 +11,7 @@ Illumina HiSeq 4000 Illumina HiSeq X HiSeq X Ten HiSeq X Five +Illumina MiSeq Illumina NovaSeq 6000 Illumina NovaSeq X NextSeq 500 From db70776c5bdf9eb82b84a35880efda140095d580 Mon Sep 17 00:00:00 2001 From: Arkadii Yakovets Date: Wed, 10 May 2023 10:57:44 -0700 Subject: [PATCH 123/220] Rework Docker image build scripts - Isolate local/staging Docker registries - Change `-d`/`-r` deployment flags meaning - Introduce prepare_image.sh `-u` flag - Introduce update_my_docker_images.sh `-b`/`-x` flags - Unify `source` operation syntax - Reformat .sh files - Standardize docker command options format --- .github/scripts/remote_deploy.sh | 6 +- .github/scripts/update_docker_img.sh | 38 ++-- README.md | 95 ++++---- api/run_tests.sh | 39 ++-- api/serve.sh | 23 +- api/serve_production.sh | 27 ++- common/dockerfiles/Dockerfile.common_tests | 3 +- common/dockerfiles/Dockerfile.migrations | 3 +- common/run_tests.sh | 38 ++-- foreman/dockerfiles/Dockerfile.foreman | 3 +- foreman/run_end_to_end_tests.sh | 28 +-- foreman/run_management_command.sh | 27 ++- foreman/run_tests.sh | 32 ++- foreman/test_survey.sh | 29 ++- .../api-server-instance-user-data.tpl.sh | 54 ++--- infrastructure/deploy.sh | 170 ++++++++------- infrastructure/destroy_terraform.sh | 17 +- .../foreman-server-instance-user-data.tpl.sh | 113 +++++----- scripts/common.sh | 26 ++- scripts/format_batch_with_env.sh | 138 ++++++------ scripts/install_all.sh | 165 +++++++------- scripts/install_db_docker.sh | 49 ++++- scripts/kill_all_jobs.sh | 7 +- scripts/make_migrations.sh | 40 ++-- scripts/prepare_image.sh | 152 +++++++------ scripts/rebuild_es_index.sh | 5 +- scripts/reinit_database.sh | 6 +- scripts/run_all_tests.sh | 5 +- scripts/run_es.sh | 18 +- scripts/run_manage.sh | 46 ++-- scripts/run_postgres.sh | 31 ++- scripts/run_psql_shell.sh | 10 +- scripts/run_shell.sh | 29 ++- scripts/update_models.sh | 15 +- scripts/update_my_docker_images.sh | 149 ++++++++----- workers/dockerfiles/Dockerfile.affymetrix | 3 +- .../dockerfiles/Dockerfile.affymetrix_local | 3 +- workers/dockerfiles/Dockerfile.downloaders | 3 +- workers/dockerfiles/Dockerfile.illumina | 3 +- workers/dockerfiles/Dockerfile.no_op | 3 +- workers/dockerfiles/Dockerfile.salmon | 3 +- workers/dockerfiles/Dockerfile.smasher | 3 +- workers/dockerfiles/Dockerfile.transcriptome | 3 +- workers/run_command.sh | 44 ++-- workers/run_janitor.sh | 37 ++-- workers/run_job.sh | 139 ++++++------ workers/run_tests.sh | 206 +++++++++--------- 47 files changed, 1185 insertions(+), 901 deletions(-) diff --git a/.github/scripts/remote_deploy.sh b/.github/scripts/remote_deploy.sh index 318aaac0c..a22618b6b 100755 --- a/.github/scripts/remote_deploy.sh +++ b/.github/scripts/remote_deploy.sh @@ -72,8 +72,8 @@ run_on_deploy_box "source env_vars && echo -e '######\nBuilding new images for $ run_on_deploy_box "source env_vars && ./.github/scripts/update_docker_img.sh 2>&1 | tee -a /var/log/docker_update_$CI_TAG.log" run_on_deploy_box "source env_vars && echo -e '######\nFinished building new images for $CI_TAG\n######' 2>&1 | tee -a /var/log/docker_update_$CI_TAG.log" -# Load docker_img_exists function and $ALL_CCDL_IMAGES -source scripts/common.sh +# Load docker_img_exists function and $ALL_IMAGES. +. scripts/common.sh if [[ "$MASTER_OR_DEV" == "master" ]]; then DOCKERHUB_REPO=ccdl @@ -89,7 +89,7 @@ fi # https://github.com/AlexsLemonade/refinebio/issues/784 # Since it's not clear how that happened, the safest thing is to add # an explicit check that the Docker images were successfully updated. -for IMAGE in $ALL_CCDL_IMAGES; do +for IMAGE in $ALL_IMAGES; do image_name="$DOCKERHUB_REPO/dr_$IMAGE" if ! docker_img_exists "$image_name" "$CI_TAG"; then echo "Docker image $image_name:$CI_TAG doesn't exist after running update_docker_img.sh!" diff --git a/.github/scripts/update_docker_img.sh b/.github/scripts/update_docker_img.sh index 620149463..3360245b3 100755 --- a/.github/scripts/update_docker_img.sh +++ b/.github/scripts/update_docker_img.sh @@ -1,8 +1,8 @@ #!/bin/bash set -e -# Load docker_img_exists function and $CCDL_WORKER_IMAGES -source ~/refinebio/scripts/common.sh +# Load docker_img_exists function and $WORKER_IMAGES +. ~/refinebio/scripts/common.sh # Github won't set the branch name for us, so do it ourselves. branch=$(get_master_or_dev "$CI_TAG") @@ -12,7 +12,7 @@ if [[ "$branch" == "master" ]]; then elif [[ "$branch" == "dev" ]]; then DOCKERHUB_REPO=ccdlstaging else - echo "Why in the world was update_docker_img.sh called from a branch other than dev or master?!?!?" + echo "Why in the world was update_docker_img.sh called from a branch other than dev or master!?" exit 1 fi @@ -20,15 +20,15 @@ echo "$CI_TAG" > ~/refinebio/common/version # Create ~/refinebio/common/dist/data-refinery-common-*.tar.gz, which is # required by the workers and data_refinery_foreman images. -## Remove old common distributions if they exist +## Remove old common distributions if they exist. rm -f ~/refinebio/common/dist/* cd ~/refinebio/common && python3 setup.py sdist -# Log into DockerHub +# Log into DockerHub. docker login -u "$DOCKER_ID" -p "$DOCKER_PASSWD" cd ~/refinebio -for IMAGE in $CCDL_WORKER_IMAGES; do +for IMAGE in $WORKER_IMAGES; do image_name="$DOCKERHUB_REPO/dr_$IMAGE" if docker_img_exists "$image_name" "$CI_TAG"; then echo "Docker image exists, skipping: $image_name:$CI_TAG" @@ -40,43 +40,45 @@ for IMAGE in $CCDL_WORKER_IMAGES; do -f "workers/dockerfiles/Dockerfile.$IMAGE" \ --build-arg SYSTEM_VERSION="$CI_TAG" . docker push "$image_name:$CI_TAG" - # Update latest version + # Update latest version. docker tag "$image_name:$CI_TAG" "$image_name:latest" docker push "$image_name:latest" - # Save some space when we're through + # Save some space when we're through. docker rmi "$image_name:$CI_TAG" fi done -# Build and push foreman image +# Build and push foreman image. FOREMAN_DOCKER_IMAGE="$DOCKERHUB_REPO/dr_foreman" if docker_img_exists "$FOREMAN_DOCKER_IMAGE" "$CI_TAG"; then echo "Docker image exists, skipping: $FOREMAN_DOCKER_IMAGE:$CI_TAG" else # Build and push image. We use the CI_TAG as the system version. docker build \ - -t "$FOREMAN_DOCKER_IMAGE:$CI_TAG" \ - -f foreman/dockerfiles/Dockerfile.foreman \ - --build-arg SYSTEM_VERSION="$CI_TAG" . + --build-arg SYSTEM_VERSION="$CI_TAG" \ + --file foreman/dockerfiles/Dockerfile.foreman \ + --tag "$FOREMAN_DOCKER_IMAGE:$CI_TAG" \ + . docker push "$FOREMAN_DOCKER_IMAGE:$CI_TAG" - # Update latest version + # Update latest version. docker tag "$FOREMAN_DOCKER_IMAGE:$CI_TAG" "$FOREMAN_DOCKER_IMAGE:latest" docker push "$FOREMAN_DOCKER_IMAGE:latest" fi -# Build and push API image +# Build and push API image. API_DOCKER_IMAGE="$DOCKERHUB_REPO/dr_api" if docker_img_exists "$API_DOCKER_IMAGE" "$CI_TAG"; then echo "Docker image exists, skipping: $API_DOCKER_IMAGE:$CI_TAG" else # Build and push image. We use the CI_TAG as the system version. docker build \ - -t "$API_DOCKER_IMAGE:$CI_TAG" \ - -f api/dockerfiles/Dockerfile.api_production \ - --build-arg SYSTEM_VERSION="$CI_TAG" . + --build-arg SYSTEM_VERSION="$CI_TAG" \ + --file api/dockerfiles/Dockerfile.api_production \ + --tag "$API_DOCKER_IMAGE:$CI_TAG" \ + . docker push "$API_DOCKER_IMAGE:$CI_TAG" - # Update latest version + # Update latest version. docker tag "$API_DOCKER_IMAGE:$CI_TAG" "$API_DOCKER_IMAGE:latest" docker push "$API_DOCKER_IMAGE:latest" fi diff --git a/README.md b/README.md index 35505fbfb..794a02db6 100644 --- a/README.md +++ b/README.md @@ -19,46 +19,49 @@ Refine.bio currently has four sub-projects contained within this repo: ## Table of Contents -- [Development](#development) - - [Git Workflow](#git-workflow) - - [Installation](#installation) - - [Automatic](#automatic) - - [Linux (Manual)](#linux-manual) - - [Mac (Manual)](#mac-manual) - - [Virtual Environment](#virtual-environment) - - [Services](#services) - - [Postgres](#postgres) - - [Common Dependecies](#common-dependecies) - - [ElasticSearch](#elasticsearch) - - [Testing](#testing) - - [API](#api) - - [Common](#common) - - [Foreman](#foreman) - - [Workers](#workers) - - [Style](#style) - - [Gotchas](#gotchas) - - [R](#r) -- [Running Locally](#running-locally) - - [API](#api-1) - - [Surveyor Jobs](#surveyor-jobs) - - [Sequence Read Archive](#sequence-read-archive) - - [Ensembl Transcriptome Indices](#ensembl-transcriptome-indices) - - [Downloader Jobs](#downloader-jobs) - - [Processor Jobs](#processor-jobs) - - [Creating Quantile Normalization Reference Targets](#creating-quantile-normalization-reference-targets) - - [Creating Compendia](#creating-compendia) - - [Running Tximport Early](#running-tximport-early) - - [Development Helpers](#development-helpers) -- [Cloud Deployment](#cloud-deployment) - - [Docker Images](#docker-images) - - [Terraform](#terraform) - - [Running Jobs](#running-jobs) - - [Log Consumption](#log-consumption) - - [Dumping and Restoring Database Backups](#dumping-and-restoring-database-backups) - - [Tearing Down](#tearing-down) -- [Support](#support) -- [Meta-README](#meta-readme) -- [License](#license) +- [Refine.bio ](#refinebio--) + - [Table of Contents](#table-of-contents) + - [Development](#development) + - [Git Workflow](#git-workflow) + - [Installation](#installation) + - [Automatic](#automatic) + - [Linux (Manual)](#linux-manual) + - [Mac (Manual)](#mac-manual) + - [Virtual Environment](#virtual-environment) + - [Services](#services) + - [Postgres](#postgres) + - [Common Dependecies](#common-dependecies) + - [ElasticSearch](#elasticsearch) + - [Testing](#testing) + - [API](#api) + - [Common](#common) + - [Foreman](#foreman) + - [Workers](#workers) + - [Style](#style) + - [Gotchas](#gotchas) + - [R](#r) + - [Running Locally](#running-locally) + - [API](#api-1) + - [Surveyor Jobs](#surveyor-jobs) + - [Sequence Read Archive](#sequence-read-archive) + - [Ensembl Transcriptome Indices](#ensembl-transcriptome-indices) + - [Downloader Jobs](#downloader-jobs) + - [Processor Jobs](#processor-jobs) + - [Creating Quantile Normalization Reference Targets](#creating-quantile-normalization-reference-targets) + - [Creating Compendia](#creating-compendia) + - [Running Tximport Early](#running-tximport-early) + - [Development Helpers](#development-helpers) + - [Cloud Deployment](#cloud-deployment) + - [Docker Images](#docker-images) + - [Terraform](#terraform) + - [AWS Batch](#aws-batch) + - [Running Jobs](#running-jobs) + - [Log Consumption](#log-consumption) + - [Dumping and Restoring Database Backups](#dumping-and-restoring-database-backups) + - [Tearing Down](#tearing-down) + - [Support](#support) + - [Meta-README](#meta-readme) + - [License](#license) @@ -630,17 +633,17 @@ Please try to keep the `dev` and `master` versions in sync for major and minor v Refine.bio uses a number of different Docker images to run different pieces of the system. By default, refine.bio will pull images from the Dockerhub repo `ccdlstaging`. -If you would like to use images you have built and pushed to Dockerhub yourself you can pass the `-d` option to the `deploy.sh` script. +If you would like to use images you have built and pushed to Dockerhub yourself you can pass the `-r` option to the `deploy.sh` script. To make building and pushing your own images easier, the `scripts/update_my_docker_images.sh` has been provided. -The `-d` option will allow you to specify which repo you'd like to push to. +The `-r` option will allow you to specify which repo you'd like to push to. If the Dockerhub repo requires you to be logged in, you should do so before running the script using `docker login`. The -v option allows you to specify the version, which will both end up on the Docker images you're building as the SYSTEM_VERSION environment variable and also will be the docker tag for the image. `scripts/update_my_docker_images.sh` will not build the dr_affymetrix image, because this image requires a lot of resources and time to build. -It can instead be built with `./scripts/prepare_image.sh -i affymetrix -d `. +It can instead be built with `./scripts/prepare_image.sh -i affymetrix -r `. WARNING: The affymetrix image installs a lot of data-as-R-packages and needs a lot of disk space to build the image. -It's not recommended to build the image with less than 60GB of free space on the disk that Docker runs on. +It's not recommended to build the image with less than 75GB of free space on the disk that Docker runs on. ### Terraform @@ -667,7 +670,7 @@ The correct way to deploy to the cloud is by running the `deploy.sh` script. Thi configuration steps, such as setting environment variables, setting up Batch job specifications, and performing database migrations. It can be used from the `infrastructure` directory like so: ```bash -./deploy.sh -u myusername -e dev -r us-east-1 -v v1.0.0 -d my-dockerhub-repo +./deploy.sh -u myusername -e dev -d us-east-1 -v v1.0.0 -r my-dockerhub-repo ``` This will spin up the whole system. It will usually take about 15 minutes, most of which is spent waiting for the Postgres instance to start. @@ -811,7 +814,7 @@ This can take a long time (>30 minutes)! ### Tearing Down -A stack that has been spun up via `deploy.sh -u myusername -e dev` can be taken down with `destroy_terraform.sh -u myusername -e dev -r us-east-1`. +A stack that has been spun up via `deploy.sh -u myusername -e dev` can be taken down with `destroy_terraform.sh -u myusername -e dev -d us-east-1`. The same username and environment must be passed into `destroy_terraform.sh` as were used to run `deploy.sh` either via the -e and -u options or by specifying `TF_VAR_stage` or `TF_VAR_user` so that the script knows which to take down. Note that this will prompt you for confirmation before actually destroying all of your cloud resources. diff --git a/api/run_tests.sh b/api/run_tests.sh index f81309fbd..f4353c679 100755 --- a/api/run_tests.sh +++ b/api/run_tests.sh @@ -4,27 +4,31 @@ # This script should always run as if it were being called from # the directory it lives in. -script_directory="$(cd "$(dirname "$0")" || exit; pwd)" +script_directory="$( + cd "$(dirname "$0")" || exit + pwd +)" cd "$script_directory" || exit -# However in order to give Docker access to all the code we have to -# move up a level +# However, in order to give Docker access to all the code we have to +# move up a level. cd .. -# Ensure that postgres is running +# Ensure that Postgres is running. if ! [ "$(docker ps --filter name=drdb -q)" ]; then echo "You must start Postgres first with:" >&2 echo "./scripts/run_postgres.sh" >&2 exit 1 fi -# Ensure that elasticsearch is running + +# Ensure that ElasticSearch is running. if ! [ "$(docker ps --filter name=dres -q)" ]; then echo "You must start elasticsearchfirst with:" >&2 echo "./scripts/run_es.sh" >&2 exit 1 fi -project_root=$(pwd) # "cd .." called above +project_root=$(pwd) # "cd .." called above. volume_directory="$project_root/test_volume" if [ ! -d "$volume_directory" ]; then mkdir "$volume_directory" @@ -34,18 +38,23 @@ chmod -R a+rwX "$volume_directory" ./scripts/prepare_image.sh -i api_local -s api . ./scripts/common.sh + DB_HOST_IP=$(get_docker_db_ip_address) ES_HOST_IP=$(get_docker_es_ip_address) -# Only run interactively if we are on a TTY +# Only run interactively if we are on a TTY. if [ -t 1 ]; then - INTERACTIVE="-i" + INTERACTIVE="--interactive" fi -docker run -t $INTERACTIVE \ - --add-host=database:"$DB_HOST_IP" \ - --add-host=elasticsearch:"$ES_HOST_IP" \ - --env-file api/environments/test \ - --platform linux/amd64 \ - --volume "$volume_directory":/home/user/data_store \ - ccdlstaging/dr_api_local bash -c "$(run_tests_with_coverage "$@")" +# shellcheck disable=SC2086 +docker run \ + --add-host=database:"$DB_HOST_IP" \ + --add-host=elasticsearch:"$ES_HOST_IP" \ + --env-file api/environments/test \ + --platform linux/amd64 \ + --tty \ + --volume "$volume_directory":/home/user/data_store \ + $INTERACTIVE \ + "$DOCKERHUB_REPO/dr_api_local" \ + bash -c "$(run_tests_with_coverage "$@")" diff --git a/api/serve.sh b/api/serve.sh index 4bae59fe9..1cd32a622 100755 --- a/api/serve.sh +++ b/api/serve.sh @@ -4,22 +4,29 @@ # This script should always run as if it were being called from # the directory it lives in. -script_directory="$(cd "$(dirname "$0")" || exit; pwd)" +script_directory="$( + cd "$(dirname "$0")" || exit + pwd +)" cd "$script_directory" || exit -# However in order to give Docker access to all the code we have to -# move up a level +# However, in order to give Docker access to all the code we have to +# move up a level. cd .. ./scripts/prepare_image.sh -i api_local -s api . ./scripts/common.sh + DB_HOST_IP=$(get_docker_db_ip_address) ES_HOST_IP=$(get_docker_es_ip_address) docker run \ - --add-host=database:"$DB_HOST_IP" \ - --add-host=elasticsearch:"$ES_HOST_IP" \ - --env-file api/environments/local \ - -p 8000:8000 \ - -it ccdlstaging/dr_api_local python3 manage.py runserver 0.0.0.0:8000 "$@" + --add-host=database:"$DB_HOST_IP" \ + --add-host=elasticsearch:"$ES_HOST_IP" \ + --env-file api/environments/local \ + --interactive \ + --publish 8000:8000 \ + --tty \ + "$DOCKERHUB_REPO/dr_api_local" \ + python3 manage.py runserver 0.0.0.0:8000 "$@" diff --git a/api/serve_production.sh b/api/serve_production.sh index 530b237ca..c23382778 100755 --- a/api/serve_production.sh +++ b/api/serve_production.sh @@ -4,24 +4,31 @@ # This script should always run as if it were being called from # the directory it lives in. -script_directory="$(cd "$(dirname "$0")" || exit; pwd)" +script_directory="$( + cd "$(dirname "$0")" || exit + pwd +)" cd "$script_directory" || exit -# However in order to give Docker access to all the code we have to -# move up a level +# However, in order to give Docker access to all the code we have to +# move up a level. cd .. ./scripts/prepare_image.sh -i api_production -s api . ./scripts/common.sh -DB_HOST_IP=$(get_docker_db_ip_address) +DB_HOST_IP=$(get_docker_db_ip_address) STATIC_VOLUMES=/tmp/volumes_static docker run \ - --add-host=database:"$DB_HOST_IP" \ - --env-file api/environments/local \ - --link drdb:postgres \ - -v "$STATIC_VOLUMES":/tmp/www/static \ - -p 8081:8081 \ - -it -d ccdlstaging/dr_api_production /bin/sh -c "/home/user/collect_and_run_uwsgi.sh" + --add-host=database:"$DB_HOST_IP" \ + --detach \ + --env-file api/environments/local \ + --interactive \ + --link drdb:postgres \ + --publish 8081:8081 \ + --tty \ + --volume "$STATIC_VOLUMES":/tmp/www/static \ + "$DOCKERHUB_REPO/dr_api_production" \ + /bin/sh -c "/home/user/collect_and_run_uwsgi.sh" diff --git a/common/dockerfiles/Dockerfile.common_tests b/common/dockerfiles/Dockerfile.common_tests index 2a31940f4..c30ec8fdc 100644 --- a/common/dockerfiles/Dockerfile.common_tests +++ b/common/dockerfiles/Dockerfile.common_tests @@ -1,4 +1,5 @@ -FROM ccdlstaging/dr_base:latest +ARG DOCKERHUB_REPO +FROM $DOCKERHUB_REPO/dr_base:latest # Fail in case of an error at any stage in the pipe. SHELL ["/bin/bash", "-o", "pipefail", "-c"] diff --git a/common/dockerfiles/Dockerfile.migrations b/common/dockerfiles/Dockerfile.migrations index 00e704fa2..462989aee 100644 --- a/common/dockerfiles/Dockerfile.migrations +++ b/common/dockerfiles/Dockerfile.migrations @@ -1,4 +1,5 @@ -FROM ccdlstaging/dr_base:latest +ARG DOCKERHUB_REPO +FROM $DOCKERHUB_REPO/dr_base:latest # Fail in case of an error at any stage in the pipe. SHELL ["/bin/bash", "-o", "pipefail", "-c"] diff --git a/common/run_tests.sh b/common/run_tests.sh index 51c564270..41eb8e3d1 100755 --- a/common/run_tests.sh +++ b/common/run_tests.sh @@ -1,24 +1,27 @@ #!/bin/sh -e -# script for executing Django PyUnit Tests within a Docker container. +# Script for executing Django PyUnit tests within a Docker container. # This script should always run as if it were being called from # the directory it lives in. -script_directory="$(cd "$(dirname "$0")" || exit; pwd)" +script_directory="$( + cd "$(dirname "$0")" || exit + pwd +)" cd "$script_directory" || exit -# However in order to give Docker access to all the code we have to -# move up a level +# However, in order to give Docker access to all the code we have to +# move up a level. cd .. -# Ensure that postgres is running +# Ensure that Postgres is running. if ! [ "$(docker ps --filter name=drdb -q)" ]; then echo "You must start Postgres first with:" >&2 echo "./scripts/run_postgres.sh" >&2 exit 1 fi -project_root=$(pwd) # "cd .." called above +project_root=$(pwd) # "cd .." called above. volume_directory="$project_root/test_volume" if [ ! -d "$volume_directory" ]; then mkdir "$volume_directory" @@ -28,18 +31,23 @@ chmod -R a+rwX "$volume_directory" ./scripts/prepare_image.sh -i common_tests -s common . ./scripts/common.sh + DB_HOST_IP=$(get_docker_db_ip_address) ES_HOST_IP=$(get_docker_es_ip_address) -# Only run interactively if we are on a TTY +# Only run interactively if we are on a TTY. if [ -t 1 ]; then - INTERACTIVE="-i" + INTERACTIVE="--interactive" fi -docker run -t $INTERACTIVE \ - --add-host=database:"$DB_HOST_IP" \ - --add-host=elasticsearch:"$ES_HOST_IP" \ - --env-file common/environments/test \ - --platform linux/amd64 \ - --volume "$volume_directory":/home/user/data_store \ - ccdlstaging/dr_common_tests bash -c "$(run_tests_with_coverage "$@")" --parallel +# shellcheck disable=SC2086 +docker run \ + --add-host=database:"$DB_HOST_IP" \ + --add-host=elasticsearch:"$ES_HOST_IP" \ + --env-file common/environments/test \ + --platform linux/amd64 \ + --tty \ + --volume "$volume_directory":/home/user/data_store \ + $INTERACTIVE \ + "$DOCKERHUB_REPO/dr_common_tests" \ + bash -c "$(run_tests_with_coverage "$@")" --parallel diff --git a/foreman/dockerfiles/Dockerfile.foreman b/foreman/dockerfiles/Dockerfile.foreman index 94e5c185a..2f749e4fd 100644 --- a/foreman/dockerfiles/Dockerfile.foreman +++ b/foreman/dockerfiles/Dockerfile.foreman @@ -1,4 +1,5 @@ -FROM ccdlstaging/dr_base:latest +ARG DOCKERHUB_REPO +FROM $DOCKERHUB_REPO/dr_base:latest # Fail in case of an error at any stage in the pipe. SHELL ["/bin/bash", "-o", "pipefail", "-c"] diff --git a/foreman/run_end_to_end_tests.sh b/foreman/run_end_to_end_tests.sh index 554068980..e08112ae2 100755 --- a/foreman/run_end_to_end_tests.sh +++ b/foreman/run_end_to_end_tests.sh @@ -4,7 +4,10 @@ # This script should always run as if it were being called from # the directory it lives in. -script_directory="$(cd "$(dirname "$0")" || exit; pwd)" +script_directory="$( + cd "$(dirname "$0")" || exit + pwd +)" cd "$script_directory" || exit # Set up the data volume directory if it does not already exist. @@ -25,30 +28,27 @@ if [ ! -e "$reference_file_dir/$quant_file" ]; then mkdir -p "$reference_file_dir" echo "Downloading quant file for Transcriptome Index validation tests." wget -q -O "$reference_file_dir/$quant_file" \ - "$test_data_repo/$quant_file" + "$test_data_repo/$quant_file" fi # temp for testing locally. ../scripts/prepare_image.sh -i foreman -s foreman - while read -r row; do # Exporting an expansion rather than a variable, which is exactly what we want to do. # shellcheck disable=SC2163 export "${row}" -done < ../infrastructure/prod_env - +done <../infrastructure/prod_env -# Hardcode ccdlstaging because this should only ever be run in staging or -# locally, and when running locally `prepare_image.sh` makes the forman -# ccdlstaging/dr_foreman. -docker run -t \ - --env-file ../infrastructure/prod_env \ - --env RUNNING_IN_CLOUD=False \ +docker run \ --env DATABASE_HOST="$DATABASE_PUBLIC_HOST" \ + --env DJANGO_SECRET_KEY="TEST_KEY_FOR_DEV" \ --env JOB_DEFINITION_PREFIX="$USER_$STAGE_" \ --env REFINEBIO_BASE_URL="http://$API_HOST/v1/" \ - --env DJANGO_SECRET_KEY="TEST_KEY_FOR_DEV" \ - --volume "$volume_directory":/home/user/data_store \ + --env RUNNING_IN_CLOUD=False \ + --env-file ../infrastructure/prod_env \ --volume "$HOME/.aws":/home/user/.aws \ - ccdlstaging/dr_foreman python3 manage.py test --no-input --parallel=2 --testrunner='tests.test_runner.NoDbTestRunner' tests.foreman.test_end_to_end + --volume "$volume_directory":/home/user/data_store \ + --tty \ + "$DOCKERHUB_REPO/dr_foreman" \ + python3 manage.py test --no-input --parallel=2 --testrunner='tests.test_runner.NoDbTestRunner' tests.foreman.test_end_to_end diff --git a/foreman/run_management_command.sh b/foreman/run_management_command.sh index a9e4ce101..d51768fd8 100755 --- a/foreman/run_management_command.sh +++ b/foreman/run_management_command.sh @@ -1,13 +1,16 @@ #!/bin/sh -# Script for running the Data Refinery Surveyor container +# Script for running the Data Refinery Surveyor container. # This script should always run as if it were being called from # the directory it lives in. -script_directory="$(cd "$(dirname "$0")" || exit; pwd)" +script_directory="$( + cd "$(dirname "$0")" || exit + pwd +)" cd "$script_directory" || exit -# However in order to give Docker access to all the code we have to +# However, in order to give Docker access to all the code we have to # move up a level cd .. @@ -21,12 +24,16 @@ chmod -R a+rwX "$volume_directory" ./scripts/prepare_image.sh -i foreman -s foreman . ./scripts/common.sh + DB_HOST_IP=$(get_docker_db_ip_address) -docker run -it \ - --add-host=database:"$DB_HOST_IP" \ - --env-file foreman/environments/local \ - --env AWS_ACCESS_KEY_ID="$AWS_ACCESS_KEY_ID" \ - --env AWS_SECRET_ACCESS_KEY="$AWS_SECRET_ACCESS_KEY" \ - --volume "$volume_directory":/home/user/data_store \ - ccdlstaging/dr_foreman python3 manage.py "$@" +docker run \ + --add-host=database:"$DB_HOST_IP" \ + --env AWS_ACCESS_KEY_ID="$AWS_ACCESS_KEY_ID" \ + --env AWS_SECRET_ACCESS_KEY="$AWS_SECRET_ACCESS_KEY" \ + --env-file foreman/environments/local \ + --interactive \ + --tty \ + --volume "$volume_directory":/home/user/data_store \ + "$DOCKERHUB_REPO/dr_foreman" \ + python3 manage.py "$@" diff --git a/foreman/run_tests.sh b/foreman/run_tests.sh index 8edbdc56f..f0ae37de4 100755 --- a/foreman/run_tests.sh +++ b/foreman/run_tests.sh @@ -4,7 +4,10 @@ # This script should always run as if it were being called from # the directory it lives in. -script_directory="$(cd "$(dirname "$0")" || exit; pwd)" +script_directory="$( + cd "$(dirname "$0")" || exit + pwd +)" cd "$script_directory" || exit # Set up the data volume directory if it does not already exist. @@ -18,11 +21,11 @@ if [ ! -d "$volume_directory" ]; then fi chmod -R a+rwX "$volume_directory" -# However in order to give Docker access to all the code we have to -# move up a level +# However, in order to give Docker access to all the code we have to +# move up a level. cd .. -# First ensure postgres is running +# First ensure Postgres is running. if ! [ "$(docker ps --filter name=drdb -q)" ]; then echo "You must start Postgres first with:" >&2 echo "./scripts/run_postgres.sh" >&2 @@ -32,16 +35,21 @@ fi ./scripts/prepare_image.sh -i foreman -s foreman . ./scripts/common.sh + DB_HOST_IP=$(get_docker_db_ip_address) -# Only run interactively if we are on a TTY +# Only run interactively if we are on a TTY. if [ -t 1 ]; then - INTERACTIVE="-i" + INTERACTIVE="--interactive" fi -docker run -t $INTERACTIVE \ - --add-host=database:"$DB_HOST_IP" \ - --env-file foreman/environments/test \ - --platform linux/amd64 \ - --volume "$volume_directory":/home/user/data_store \ - ccdlstaging/dr_foreman bash -c "$(run_tests_with_coverage --exclude-tag=manual "$@")" +# shellcheck disable=SC2086 +docker run \ + --add-host=database:"$DB_HOST_IP" \ + --env-file foreman/environments/test \ + --platform linux/amd64 \ + --tty \ + --volume "$volume_directory":/home/user/data_store \ + $INTERACTIVE \ + "$DOCKERHUB_REPO/dr_foreman" \ + bash -c "$(run_tests_with_coverage --exclude-tag=manual "$@")" diff --git a/foreman/test_survey.sh b/foreman/test_survey.sh index 7df91a3ae..1aec44116 100755 --- a/foreman/test_survey.sh +++ b/foreman/test_survey.sh @@ -2,7 +2,7 @@ # Script for testing the surveying of an accession manually (e.g. from a dataset request) print_options() { - cat << EOF + cat <&2 echo "./scripts/run_postgres.sh" >&2 @@ -76,12 +79,16 @@ fi ./scripts/prepare_image.sh -i foreman -s foreman . ./scripts/common.sh + DB_HOST_IP=$(get_docker_db_ip_address) docker run \ - --add-host=database:"$DB_HOST_IP" \ - --env-file foreman/environments/test \ - --volume "$volume_directory":/home/user/data_store \ - -e SURVEYOR="$SURVEYOR" \ - -e ACCESSION="$ACCESSION" \ - -it ccdlstaging/dr_foreman bash -c "python3 manage.py test --tag=manual ." + --add-host=database:"$DB_HOST_IP" \ + --env ACCESSION="$ACCESSION" \ + --env SURVEYOR="$SURVEYOR" \ + --env-file foreman/environments/test \ + --interactive \ + --tty \ + --volume "$volume_directory":/home/user/data_store \ + "$DOCKERHUB_REPO/dr_foreman" \ + bash -c "python3 manage.py test --tag=manual ." diff --git a/infrastructure/api-configuration/api-server-instance-user-data.tpl.sh b/infrastructure/api-configuration/api-server-instance-user-data.tpl.sh index 3f475c98b..0dfb15ddc 100644 --- a/infrastructure/api-configuration/api-server-instance-user-data.tpl.sh +++ b/infrastructure/api-configuration/api-server-instance-user-data.tpl.sh @@ -15,7 +15,7 @@ cd /home/ubuntu || exit # Install and configure Nginx. -cat <<"EOF" > nginx.conf +cat <<"EOF" >nginx.conf ${nginx_config} EOF apt-get update -y @@ -107,7 +107,7 @@ echo " size 20k daily maxage 3 -}" >> /etc/logrotate.conf +}" >>/etc/logrotate.conf echo " /tmp/access.log { missingok @@ -116,10 +116,10 @@ echo " size 20k daily maxage 3 -}" >> /etc/logrotate.conf +}" >>/etc/logrotate.conf # Install our environment variables -cat <<"EOF" > environment +cat <<"EOF" >environment ${api_environment} EOF @@ -135,36 +135,40 @@ docker pull "${dockerhub_repo}/${api_docker_image}" # These database values are created after TF # is run, so we have to pass them in programatically docker run \ - --env-file environment \ - -e DATABASE_HOST="${database_host}" \ - -e DATABASE_NAME="${database_name}" \ - -e DATABASE_USER="${database_user}" \ - -e DATABASE_PASSWORD="${database_password}" \ - -e ELASTICSEARCH_HOST="${elasticsearch_host}" \ - -e ELASTICSEARCH_PORT="${elasticsearch_port}" \ - -v "$STATIC_VOLUMES":/tmp/www/static \ - --log-driver=awslogs \ - --log-opt awslogs-region="${region}" \ - --log-opt awslogs-group="${log_group}" \ - --log-opt awslogs-stream="${log_stream}" \ - -p 8081:8081 \ - --name=dr_api \ - -it -d "${dockerhub_repo}/${api_docker_image}" /bin/sh -c "/home/user/collect_and_run_uwsgi.sh" + --detach \ + --env DATABASE_HOST="${database_host}" \ + --env DATABASE_NAME="${database_name}" \ + --env DATABASE_PASSWORD="${database_password}" \ + --env DATABASE_USER="${database_user}" \ + --env ELASTICSEARCH_HOST="${elasticsearch_host}" \ + --env ELASTICSEARCH_PORT="${elasticsearch_port}" \ + --env-file environment \ + --interactive \ + --log-driver=awslogs \ + --log-opt awslogs-group="${log_group}" \ + --log-opt awslogs-region="${region}" \ + --log-opt awslogs-stream="${log_stream}" \ + --name=dr_api \ + --tty \ + --volume "$STATIC_VOLUMES":/tmp/www/static \ + -publish 8081:8081 \ + "${dockerhub_repo}/${api_docker_image}" \ + /bin/sh -c "/home/user/collect_and_run_uwsgi.sh" # Nuke and rebuild the search index. It shouldn't take too long. sleep 30 -docker exec dr_api python3 manage.py search_index --delete -f; -docker exec dr_api python3 manage.py search_index --rebuild -f; -docker exec dr_api python3 manage.py search_index --populate -f; +docker exec dr_api python3 manage.py search_index --delete -f +docker exec dr_api python3 manage.py search_index --rebuild -f +docker exec dr_api python3 manage.py search_index --populate -f # Let's use this instance to call the populate command every twenty minutes. -crontab -l > tempcron +crontab -l >tempcron # echo new cron into cron file # TODO: stop logging this to api_cron.log once we figure out why it # hasn't been working. -echo -e "SHELL=/bin/bash\nPATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin\n*/20 * * * * docker exec dr_api python3 manage.py update_es_index >> /var/log/api_cron.log 2>&1" >> tempcron +echo -e "SHELL=/bin/bash\nPATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin\n*/20 * * * * docker exec dr_api python3 manage.py update_es_index >> /var/log/api_cron.log 2>&1" >>tempcron # Post a summary of downloads every Monday at 12:00 UTC -echo -e "SHELL=/bin/bash\nPATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin\n0 12 * * MON docker exec dr_api python3 manage.py post_downloads_summary >> /var/log/api_cron.log 2>&1" >> tempcron +echo -e "SHELL=/bin/bash\nPATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin\n0 12 * * MON docker exec dr_api python3 manage.py post_downloads_summary >> /var/log/api_cron.log 2>&1" >>tempcron # install new cron file crontab tempcron rm tempcron diff --git a/infrastructure/deploy.sh b/infrastructure/deploy.sh index d8175b423..2298c2d8a 100755 --- a/infrastructure/deploy.sh +++ b/infrastructure/deploy.sh @@ -2,7 +2,10 @@ # This script should always run as if it were being called from # the directory it lives in. -script_directory="$(cd "$(dirname "$0")" || exit; pwd)" +script_directory="$( + cd "$(dirname "$0")" || exit + pwd +)" cd "$script_directory" || exit print_description() { @@ -21,7 +24,7 @@ print_options() { echo ' "-e prod" will deploy the production stack. This should only be used from a CD machine.' echo ' "-e staging" will deploy the staging stack. This should only be used from a CD machine.' echo ' "-e dev" will deploy a dev stack which is appropriate for a single developer to use to test.' - echo '-d May be used to override the Dockerhub repo where the images will be pulled from.' + echo '-r May be used to override the Dockerhub repo where the images will be pulled from.' echo ' This may also be specified by setting the TF_VAR_dockerhub_repo environment variable.' echo ' If unset, defaults to "ccdlstaging" if the version contains "-dev" and "ccdl" otherwise.' echo ' for dev and staging environments and "ccdl" for prod.' @@ -31,7 +34,7 @@ print_options() { echo '-v specifies the version of the system which is being deployed and is not optional.' echo "-u specifies the username of the deployer. Should be the developer's name in development stacks." echo ' This option may be omitted, in which case the TF_VAR_user variable MUST be set instead.' - echo '-r specifies the AWS region to deploy the stack to. Defaults to us-east-1.' + echo '-d specifies the AWS region to deploy the stack to. Defaults to us-east-1.' } while getopts ":e:d:i:v:u:r:h" opt; do @@ -40,7 +43,7 @@ while getopts ":e:d:i:v:u:r:h" opt; do export env=$OPTARG export TF_VAR_stage=$OPTARG ;; - d) + r) export TF_VAR_dockerhub_repo=$OPTARG ;; i) @@ -53,7 +56,7 @@ while getopts ":e:d:i:v:u:r:h" opt; do u) export TF_VAR_user=$OPTARG ;; - r) + d) export TF_VAR_region=$OPTARG ;; h) @@ -102,31 +105,29 @@ if [[ -z $TF_VAR_region ]]; then TF_VAR_region=us-east-1 fi - # We have terraform output environment variables via a single output # variable, which we then read in as json using the command line tool # `jq`, so that we can use them via bash. -format_environment_variables () { - json_env_vars=$(terraform output -json environment_variables | jq -c '.[]') - for row in $json_env_vars; do - name=$(echo "$row" | jq -r ".name") - value=$(echo "$row" | jq -r ".value") - env_var_assignment="$name=$value" - # Exporting an expansion rather than a variable, which is exactly what we want to do. - # shellcheck disable=SC2163 - export "${env_var_assignment?}" - echo "$env_var_assignment" >> prod_env - done +format_environment_variables() { + json_env_vars=$(terraform output -json environment_variables | jq -c '.[]') + for row in $json_env_vars; do + name=$(echo "$row" | jq -r ".name") + value=$(echo "$row" | jq -r ".value") + env_var_assignment="$name=$value" + # Exporting an expansion rather than a variable, which is exactly what we want to do. + # shellcheck disable=SC2163 + export "${env_var_assignment?}" + echo "$env_var_assignment" >>prod_env + done } - -# Load $ALL_CCDL_IMAGES and helper functions -source ../scripts/common.sh +# Load $ALL_IMAGES and helper functions. +. ../scripts/common.sh # Make our IP address known to terraform. TF_VAR_host_ip="$(dig +short myip.opendns.com @resolver1.opendns.com)" export TF_VAR_host_ip -for IMAGE in $ALL_CCDL_IMAGES; do +for IMAGE in $ALL_IMAGES; do # For each image we need to set the env var that is used by our # scripts and the env var that gets picked up by terraform because # it is preceeded with TF_VAR. @@ -140,27 +141,26 @@ cp deploy/ci_ingress.tf . # Check if a new ccdl-ubuntu ami will be needed for this region if [[ $(aws ec2 describe-images \ - --region $TF_VAR_region --owners 589864003899 \ - --filters 'Name=name,Values=ccdl-ubuntu-18.04-*' \ - --query 'length(Images)') \ - -eq 0 ]]; then + --region "$TF_VAR_region" --owners 589864003899 \ + --filters 'Name=name,Values=ccdl-ubuntu-18.04-*' \ + --query 'length(Images)') -eq 0 ]]; then echo "No ccdl-ubuntu-18.04 AMI found for this region, creating a new one" # Find most recent ccdl-ubuntu ami from us-east-1 template_ami_id=$(aws ec2 describe-images \ - --region us-east-1 --owners 589864003899 \ - --filters 'Name=name,Values=ccdl-ubuntu-18.04-*' \ - --query 'sort_by(Images,&CreationDate)[-1].ImageId' \ - --output text) + --region us-east-1 --owners 589864003899 \ + --filters 'Name=name,Values=ccdl-ubuntu-18.04-*' \ + --query 'sort_by(Images,&CreationDate)[-1].ImageId' \ + --output text) # Make a copy into this region new_ami_name="ccdl-ubuntu-18.04-$(date "+%Y-%m-%dT%H.%M.%S")" new_ami_id=$(aws ec2 copy-image \ - --source-image-id "$template_ami_id" \ - --source-region us-east-1 \ - --region "$TF_VAR_region" \ - --name "$new_ami_name" \ - --output text) + --source-image-id "$template_ami_id" \ + --source-region us-east-1 \ + --region "$TF_VAR_region" \ + --name "$new_ami_name" \ + --output text) echo "Created new AMI for $TF_VAR_region" echo " name: $new_ami_name" echo " id: $new_ami_id" @@ -174,16 +174,16 @@ fi terraform taint module.batch.aws_launch_template.data_refinery_worker || true terraform taint module.batch.aws_launch_template.data_refinery_compendia || true if terraform state list | grep -q module.batch.aws_batch_job_queue.data_refinery_; then - terraform state list \ - | grep module.batch.aws_batch_job_queue.data_refinery_ \ - | xargs -L 1 terraform taint \ - || true + terraform state list | + grep module.batch.aws_batch_job_queue.data_refinery_ | + xargs -L 1 terraform taint || + true fi if terraform state list | grep -q module.batch.aws_batch_compute_environment.data_refinery__; then - terraform state list \ - | grep module.batch.aws_batch_compute_environment.data_refinery_ \ - | xargs -L 1 terraform taint \ - || true + terraform state list | + grep module.batch.aws_batch_compute_environment.data_refinery_ | + xargs -L 1 terraform taint || + true fi if terraform output | grep -q 'No outputs found'; then @@ -232,7 +232,7 @@ format_environment_variables # Make sure to clear out any old batch job templates since we # will register everything in this directory. if [ -e batch-job-templates ]; then - rm -r batch-job-templates + rm -r batch-job-templates fi # Template the environment variables for production into the Batch Job @@ -272,47 +272,49 @@ docker pull "$DOCKERHUB_REPO/$FOREMAN_DOCKER_IMAGE" # Test that the pg_bouncer instance is up. 15 minutes should be more than enough. start_time=$(date +%s) diff=0 -until pg_isready -d "$DATABASE_NAME" -h "$DATABASE_PUBLIC_HOST" -p "$DATABASE_PORT" -U "$DATABASE_USER" &> /dev/null || [ "$diff" -gt "900" ] -do +until pg_isready -d "$DATABASE_NAME" -h "$DATABASE_PUBLIC_HOST" -p "$DATABASE_PORT" -U "$DATABASE_USER" &>/dev/null || [ "$diff" -gt "900" ]; do echo "Waiting for the pg_bouncer instance to come online ..." sleep 10 - (( diff = $(date +%s) - start_time )) + ((diff = $(date +%s) - start_time)) done -if ! pg_isready -d "$DATABASE_NAME" -h "$DATABASE_PUBLIC_HOST" -p "$DATABASE_PORT" -U "$DATABASE_USER" &> /dev/null; then +if ! pg_isready -d "$DATABASE_NAME" -h "$DATABASE_PUBLIC_HOST" -p "$DATABASE_PORT" -U "$DATABASE_USER" &>/dev/null; then echo "pg_bouncer instance failed to come up after 15 minutes." exit 1 fi # Migrate auth. docker run \ - --env-file prod_env \ - --env RUNNING_IN_CLOUD=False \ - --env DATABASE_HOST="$DATABASE_PUBLIC_HOST" \ - "$DOCKERHUB_REPO/$FOREMAN_DOCKER_IMAGE" python3 manage.py migrate auth + --env DATABASE_HOST="$DATABASE_PUBLIC_HOST" \ + --env RUNNING_IN_CLOUD=False \ + --env-file prod_env \ + "$DOCKERHUB_REPO/$FOREMAN_DOCKER_IMAGE" \ + python3 manage.py migrate auth # Apply general migrations. docker run \ - --env-file prod_env \ - --env RUNNING_IN_CLOUD=False \ - --env DATABASE_HOST="$DATABASE_PUBLIC_HOST" \ - "$DOCKERHUB_REPO/$FOREMAN_DOCKER_IMAGE" python3 manage.py migrate + --env DATABASE_HOST="$DATABASE_PUBLIC_HOST" \ + --env RUNNING_IN_CLOUD=False \ + --env-file prod_env \ + "$DOCKERHUB_REPO/$FOREMAN_DOCKER_IMAGE" \ + python3 manage.py migrate # Create the cache table if it does not already exist. docker run \ - --env-file prod_env \ - --env RUNNING_IN_CLOUD=False \ - --env DATABASE_HOST="$DATABASE_PUBLIC_HOST" \ - "$DOCKERHUB_REPO/$FOREMAN_DOCKER_IMAGE" python3 manage.py createcachetable + --env DATABASE_HOST="$DATABASE_PUBLIC_HOST" \ + --env RUNNING_IN_CLOUD=False \ + --env-file prod_env \ + "$DOCKERHUB_REPO/$FOREMAN_DOCKER_IMAGE" \ + python3 manage.py createcachetable # Terraform doesn't manage these well, so they need to be tainted to # ensure they won't require manual intervention. terraform taint module.batch.aws_launch_template.data_refinery_worker terraform taint module.batch.aws_launch_template.data_refinery_compendia -terraform state list \ - | grep module.batch.aws_batch_job_queue.data_refinery_ \ - | xargs -L 1 terraform taint \ - || true +terraform state list | + grep module.batch.aws_batch_job_queue.data_refinery_ | + xargs -L 1 terraform taint || + true # Ensure the latest image version is being used for the Foreman terraform taint aws_instance.foreman_server_1 @@ -339,10 +341,10 @@ API_IP_ADDRESS=$(terraform output -json api_server_1_ip | tr -d '"') # it's not found then grep will return a non-zero exit code so in that # case return an empty string. container_running=$(ssh -o StrictHostKeyChecking=no \ - -o ServerAliveInterval=15 \ - -o ConnectTimeout=5 \ - -i data-refinery-key.pem \ - "ubuntu@$API_IP_ADDRESS" "docker ps -a" 2> /dev/null | grep dr_api || echo "") + -o ServerAliveInterval=15 \ + -o ConnectTimeout=5 \ + -i data-refinery-key.pem \ + "ubuntu@$API_IP_ADDRESS" "docker ps -a" 2>/dev/null | grep dr_api || echo "") # If $container_running is empty, then it's because the container isn't running. # If the container isn't running, then it's because the instance is spinning up. @@ -377,21 +379,25 @@ if [[ -n $container_running ]]; then -o ConnectTimeout=5 \ -i data-refinery-key.pem \ "ubuntu@$API_IP_ADDRESS" "docker run \ - --env-file environment \ - -e DATABASE_HOST=$DATABASE_HOST \ - -e DATABASE_NAME=$DATABASE_NAME \ - -e DATABASE_USER=$DATABASE_USER \ - -e DATABASE_PASSWORD=$DATABASE_PASSWORD \ - -e ELASTICSEARCH_HOST=$ELASTICSEARCH_HOST \ - -e ELASTICSEARCH_PORT=$ELASTICSEARCH_PORT \ - -v /tmp/volumes_static:/tmp/www/static \ - --log-driver=awslogs \ - --log-opt awslogs-region=$AWS_REGION \ - --log-opt awslogs-group=data-refinery-log-group-$USER-$STAGE \ - --log-opt awslogs-stream=log-stream-api-$USER-$STAGE \ - -p 8081:8081 \ - --name=dr_api \ - -it -d $DOCKERHUB_REPO/$API_DOCKER_IMAGE /bin/sh -c /home/user/collect_and_run_uwsgi.sh" + --detach \ + --env DATABASE_HOST=$DATABASE_HOST \ + --env DATABASE_NAME=$DATABASE_NAME \ + --env DATABASE_PASSWORD=$DATABASE_PASSWORD \ + --env DATABASE_USER=$DATABASE_USER \ + --env ELASTICSEARCH_HOST=$ELASTICSEARCH_HOST \ + --env ELASTICSEARCH_PORT=$ELASTICSEARCH_PORT \ + --env-file environment \ + --interactive \ + --log-driver=awslogs \ + --log-opt awslogs-group=data-refinery-log-group-$USER-$STAGE \ + --log-opt awslogs-region=$AWS_REGION \ + --log-opt awslogs-stream=log-stream-api-$USER-$STAGE \ + --name=dr_api \ + --tty \ + --volume /tmp/volumes_static:/tmp/www/static \ + --publish 8081:8081 \ + $DOCKERHUB_REPO/$API_DOCKER_IMAGE \ + /bin/sh -c /home/user/collect_and_run_uwsgi.sh" # Don't leave secrets lying around. ssh -o StrictHostKeyChecking=no \ diff --git a/infrastructure/destroy_terraform.sh b/infrastructure/destroy_terraform.sh index cf91053e4..4329cf885 100755 --- a/infrastructure/destroy_terraform.sh +++ b/infrastructure/destroy_terraform.sh @@ -2,7 +2,10 @@ # This script should always run as if it were being called from # the directory it lives in. -script_directory="$(cd "$(dirname "$0")" || exit; pwd)" +script_directory="$( + cd "$(dirname "$0")" || exit + pwd +)" cd "$script_directory" || exit print_description() { @@ -10,17 +13,17 @@ print_description() { } print_options() { - echo 'This script accepts the following arguments: -e, -u, -r, and -h.' - echo 'Neither -e, -u or -r is optional unless TF_VAR_stage, TF_VAR_user,' + echo 'This script accepts the following arguments: -e, -u, -d, and -h.' + echo 'Neither -e, -u or -d is optional unless TF_VAR_stage, TF_VAR_user,' echo 'or TF_VAR_region is set, respectively.' echo '-h prints this help message and exits.' echo '-e specifies the environment you would like to destroy.' echo '-u specifies the username you used to spin up the stack.' - echo '-r specifies the region of the stack to destroy.' + echo '-d specifies the region of the stack to destroy.' echo 'All arguments are needed to determine which stack to destroy.' } -while getopts ":e:u:r:h" opt; do +while getopts ":e:u:d:h" opt; do case $opt in e) export env=$OPTARG @@ -29,7 +32,7 @@ while getopts ":e:u:r:h" opt; do u) export TF_VAR_user=$OPTARG ;; - r) + d) export TF_VAR_region=$OPTARG ;; h) @@ -62,7 +65,7 @@ if [[ -z $TF_VAR_user ]]; then fi if [[ -z $TF_VAR_region ]]; then - echo 'Error: must specify region by either providing the -r argument or setting TF_VAR_region.' + echo 'Error: must specify region by either providing the -d argument or setting TF_VAR_region.' exit 1 fi diff --git a/infrastructure/foreman-configuration/foreman-server-instance-user-data.tpl.sh b/infrastructure/foreman-configuration/foreman-server-instance-user-data.tpl.sh index c53d368bf..efc292163 100644 --- a/infrastructure/foreman-configuration/foreman-server-instance-user-data.tpl.sh +++ b/infrastructure/foreman-configuration/foreman-server-instance-user-data.tpl.sh @@ -15,30 +15,34 @@ cd /home/ubuntu || exit # Install our environment variables -cat <<"EOF" > environment +cat <<"EOF" >environment ${foreman_environment} EOF # These database values are created after TF # is run, so we have to pass them in programatically -cat >> /home/ubuntu/run_foreman.sh <>/home/ubuntu/run_foreman.sh <> /home/ubuntu/run_management_command.sh + --detach \\ + --env DATABASE_HOST=${database_host} \\ + --env DATABASE_NAME=${database_name} \\ + --env DATABASE_PASSWORD=${database_password} \\ + --env DATABASE_USER=${database_user} \\ + --env-file /home/ubuntu/environment \\ + --interactive \\ + --tty \\ + --volume /tmp:/tmp \\ + ${dockerhub_repo}/${foreman_docker_image} \\ + python3 manage.py \"\$@\" +" >>/home/ubuntu/run_management_command.sh chmod +x /home/ubuntu/run_management_command.sh echo " @@ -70,21 +78,24 @@ echo " # the first argument followed by the management command to run. docker run \\ - --env-file /home/ubuntu/environment \\ - -e DATABASE_HOST=${database_host} \\ - -e DATABASE_NAME=${database_name} \\ - -e DATABASE_USER=${database_user} \\ - -e DATABASE_PASSWORD=${database_password} \\ - -v /tmp:/tmp \\ - -it ${dockerhub_repo}/dr_\"\$1\" python3 manage.py \"\$2\" -" >> /home/ubuntu/run_manage_command.sh + --env DATABASE_HOST=${database_host} \\ + --env DATABASE_NAME=${database_name} \\ + --env DATABASE_PASSWORD=${database_password} \\ + --env DATABASE_USER=${database_user} \\ + --env-file /home/ubuntu/environment \\ + --interactive \\ + --tty \\ + --volume /tmp:/tmp \\ + ${dockerhub_repo}/dr_\"\$1\" \\ + python3 manage.py \"\$2\" +" >>/home/ubuntu/run_manage_command.sh chmod +x /home/ubuntu/run_manage_command.sh # Use Monit to ensure the Foreman is always running apt-get -y update apt-get -y install monit htop -date +%s > /tmp/foreman_last_time +date +%s >/tmp/foreman_last_time chown ubuntu:ubuntu /tmp/foreman_last_time # shellcheck disable=2016 echo ' @@ -96,7 +107,7 @@ if (( $difftime > 1800 )); then exit 1; fi exit 0; -' >> /home/ubuntu/foreman_status.sh +' >>/home/ubuntu/foreman_status.sh chmod +x /home/ubuntu/foreman_status.sh echo ' @@ -105,13 +116,13 @@ check program foreman with path "/bin/bash /home/ubuntu/foreman_status.sh" as ui if status != 0 then restart set daemon 900 -' >> /etc/monit/monitrc +' >>/etc/monit/monitrc service monit restart # Install the cron job tests -crontab -l > tempcron -cat <> tempcron +crontab -l >tempcron +cat <>tempcron 0 12 * * MON /bin/bash /home/ubuntu/run_manage_command.sh affymetrix check_brainarray_gene_agreement >> /var/log/affymetrix_checks.log 2>&1 0 12 * * MON /bin/bash /home/ubuntu/run_manage_command.sh affymetrix check_tx_index_transcript_agreement >> /var/log/affymetrix_checks.log 2>&1 0 12 * * ${accession_gathering_job_run_day} /bin/bash /home/ubuntu/run_manage_command.sh foreman gather_weekly_accessions >> /var/log/weekly_accessions.log 2>&1 @@ -122,18 +133,22 @@ rm tempcron # Make sure every downloader job has a processor job! docker run \ - --env-file /home/ubuntu/environment \ - -e DATABASE_HOST="${database_host}" \ - -e DATABASE_NAME="${database_name}" \ - -e DATABASE_USER="${database_user}" \ - -e DATABASE_PASSWORD="${database_password}" \ - -v /tmp:/tmp \ - --log-driver=awslogs \ - --log-opt awslogs-region="${region}" \ - --log-opt awslogs-group="${log_group}" \ - --log-opt awslogs-stream="log-stream-foreman-${user}-${stage}" \ - --name=job_filler \ - -it -d "${dockerhub_repo}/${foreman_docker_image}" python3 manage.py create_missing_processor_jobs + --detach \ + --env DATABASE_HOST="${database_host}" \ + --env DATABASE_NAME="${database_name}" \ + --env DATABASE_PASSWORD="${database_password}" \ + --env DATABASE_USER="${database_user}" \ + --env-file /home/ubuntu/environment \ + --interactive \ + --log-driver=awslogs \ + --log-opt awslogs-group="${log_group}" \ + --log-opt awslogs-region="${region}" \ + --log-opt awslogs-stream="log-stream-foreman-${user}-${stage}" \ + --name=job_filler \ + --tty \ + --volume /tmp:/tmp \ + "${dockerhub_repo}/${foreman_docker_image}" \ + python3 manage.py create_missing_processor_jobs # Delete the cloudinit and syslog in production. export STAGE=${stage} diff --git a/scripts/common.sh b/scripts/common.sh index 612de1a7b..07191400e 100755 --- a/scripts/common.sh +++ b/scripts/common.sh @@ -2,16 +2,18 @@ # These are lists of docker images that we use. The actual names end # up being /dr_ but this is useful for scripting. -export ALL_CCDL_IMAGES="smasher compendia illumina affymetrix salmon transcriptome no_op downloaders foreman api" +export ALL_IMAGES="smasher compendia illumina affymetrix salmon transcriptome no_op downloaders foreman api" # Sometimes we only want to work with the worker images. -export CCDL_WORKER_IMAGES="smasher compendia illumina affymetrix salmon transcriptome no_op downloaders" +export WORKER_IMAGES="smasher compendia illumina affymetrix salmon transcriptome no_op downloaders" +# Default Docker registry. +export DOCKERHUB_REPO="ccdlstaging" -get_docker_db_ip_address () { - docker inspect -f '{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' drdb 2> /dev/null +get_docker_db_ip_address() { + docker inspect -f '{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' drdb 2>/dev/null } -get_docker_es_ip_address () { - docker inspect -f '{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' dres 2> /dev/null +get_docker_es_ip_address() { + docker inspect -f '{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' dres 2>/dev/null } # `coverage report -m` will always have an exit code of 0 which makes @@ -19,7 +21,7 @@ get_docker_es_ip_address () { # of running the tests as $exit_code, then report the coverage, and # then exit with the appropriate code. # This is done a function so arguments to the tests can be passed through. -run_tests_with_coverage () { +run_tests_with_coverage() { COVERAGE="coverage run --source=\".\" manage.py test --settings=tests.settings --no-input $*; exit_code=\$?;" SAVE_REPORT="coverage xml -o data_store/coverage.xml;" PRINT_REPORT="coverage report -m;" @@ -33,11 +35,11 @@ run_tests_with_coverage () { # https://stackoverflow.com/questions/32113330/check-if-imagetag-combination-already-exists-on-docker-hub docker_img_exists() { TOKEN=$(curl -s -H "Content-Type: application/json" -X POST \ - -d '{"username": "'"${DOCKER_ID}"'", "password": "'"${DOCKER_PASSWD}"'"}' \ - https://hub.docker.com/v2/users/login/ | jq -r .token) + -d '{"username": "'"${DOCKER_ID}"'", "password": "'"${DOCKER_PASSWD}"'"}' \ + https://hub.docker.com/v2/users/login/ | jq -r .token) EXISTS=$(curl -s -H "Authorization: JWT ${TOKEN}" \ - "https://hub.docker.com/v2/repositories/$1/tags/?page_size=10000" \ - | jq -r "[.results | .[] | .name == \"$2\"] | any" 2> /dev/null) + "https://hub.docker.com/v2/repositories/$1/tags/?page_size=10000" | + jq -r "[.results | .[] | .name == \"$2\"] | any" 2>/dev/null) test -n "$EXISTS" -a "$EXISTS" = true } @@ -57,7 +59,7 @@ get_master_or_dev() { # All dev versions should end with '-dev' or '-dev-hotfix' and all master versions should not. if [ -n "$master_check" ] && ! echo "$version" | grep -Eq "\-dev(\-hotfix)?$"; then echo "master" - elif [ -n "$dev_check" ] ; then + elif [ -n "$dev_check" ]; then echo "dev" else echo "unknown" diff --git a/scripts/format_batch_with_env.sh b/scripts/format_batch_with_env.sh index a86ee36b5..21938e1e5 100755 --- a/scripts/format_batch_with_env.sh +++ b/scripts/format_batch_with_env.sh @@ -24,34 +24,34 @@ print_options() { while getopts ":p:e:o:v:h" opt; do case $opt in - p) - export project="$OPTARG" - ;; - e) - export env="$OPTARG" - ;; - o) - export output_dir="$OPTARG" - ;; - v) - export system_version="$OPTARG" - ;; - h) - print_description - echo - print_options - exit 0 - ;; - \?) - echo "Invalid option: -$OPTARG" >&2 - print_options >&2 - exit 1 - ;; - :) - echo "Option -$OPTARG requires an argument." >&2 - print_options >&2 - exit 1 - ;; + p) + export project="$OPTARG" + ;; + e) + export env="$OPTARG" + ;; + o) + export output_dir="$OPTARG" + ;; + v) + export system_version="$OPTARG" + ;; + h) + print_description + echo + print_options + exit 0 + ;; + \?) + echo "Invalid option: -$OPTARG" >&2 + print_options >&2 + exit 1 + ;; + :) + echo "Option -$OPTARG requires an argument." >&2 + print_options >&2 + exit 1 + ;; esac done @@ -102,10 +102,12 @@ if [ -z "$COMPENDIA_DOCKER_IMAGE" ]; then export COMPENDIA_DOCKER_IMAGE="dr_compendia:$system_version" fi - # This script should always run from the context of the directory of # the project it is building. -script_directory="$(cd "$(dirname "$0")" || exit; pwd)" +script_directory="$( + cd "$(dirname "$0")" || exit + pwd +)" project_directory="$script_directory/.." @@ -142,7 +144,7 @@ while read -r line; do # shellcheck disable=SC2163 export "$line" fi -done < "$environment_file" +done <"$environment_file" # If output_dir wasn't specified then assume the same folder we're # getting the templates from. @@ -154,7 +156,6 @@ if [ ! -d "$output_dir" ]; then mkdir "$output_dir" fi - # Not quite sure how to deal with this just yet, so punt. # export INDEX=0 @@ -163,7 +164,7 @@ fi if [ "$project" = "workers" ]; then # Iterate over all the template files in the directory. for template in batch-job-templates/*.tpl.json; do - template="$(basename "$template")" + template="$(basename "$template")" # Strip off the trailing .tpl for once we've formatted it. OUTPUT_BASE="$(basename "$template" .tpl.json)" FILETYPE=".json" @@ -173,66 +174,62 @@ if [ "$project" = "workers" ]; then if [ "$OUTPUT_FILE" = "downloader.json" ]; then rams="1024 4096 16384" - for r in $rams - do + for r in $rams; do export RAM_POSTFIX="_$r" export RAM="$r" FILEPATH="$output_dir/downloader$RAM_POSTFIX$FILETYPE" perl -p -e 's/\$\{\{([^}]+)\}\}/defined $ENV{$1} ? $ENV{$1} : $&/eg' \ - < "batch-job-templates/$template" \ - > "$FILEPATH" \ - 2> /dev/null + <"batch-job-templates/$template" \ + >"$FILEPATH" \ + 2>/dev/null echo "Made $FILEPATH" done echo "Made $output_dir/$OUTPUT_FILE" elif [ "$OUTPUT_FILE" = "create_compendia.json" ]; then rams="30000 950000" - for r in $rams - do + for r in $rams; do export RAM_POSTFIX="_$r" export RAM="$r" FILEPATH="$output_dir/$OUTPUT_BASE$RAM_POSTFIX$FILETYPE" perl -p -e 's/\$\{\{([^}]+)\}\}/defined $ENV{$1} ? $ENV{$1} : $&/eg' \ - < "batch-job-templates/$template" \ - > "$FILEPATH" \ - 2> /dev/null + <"batch-job-templates/$template" \ + >"$FILEPATH" \ + 2>/dev/null echo "Made $FILEPATH" done echo "Made $output_dir/$OUTPUT_FILE" elif [ "$OUTPUT_FILE" = "create_quantpendia.json" ]; then rams="30000 131000" - for r in $rams - do + for r in $rams; do export RAM_POSTFIX="_$r" export RAM="$r" FILEPATH="$output_dir/$OUTPUT_BASE$RAM_POSTFIX$FILETYPE" perl -p -e 's/\$\{\{([^}]+)\}\}/defined $ENV{$1} ? $ENV{$1} : $&/eg' \ - < "batch-job-templates/$template" \ - > "$FILEPATH" \ - 2> /dev/null + <"batch-job-templates/$template" \ + >"$FILEPATH" \ + 2>/dev/null echo "Made $FILEPATH" done echo "Made $output_dir/$OUTPUT_FILE" # From https://unix.stackexchange.com/a/111517 elif (echo "$NO_RAM_JOB_FILES" | grep -Fqw "$OUTPUT_FILE"); then perl -p -e 's/\$\{\{([^}]+)\}\}/defined $ENV{$1} ? $ENV{$1} : $&/eg' \ - < "batch-job-templates/$template" \ - > "$output_dir/$OUTPUT_FILE" \ - 2> /dev/null + <"batch-job-templates/$template" \ + >"$output_dir/$OUTPUT_FILE" \ + 2>/dev/null echo "Made $output_dir/$OUTPUT_FILE" else rams="2048 4096 8192 12288 16384 32768 65536" - for r in $rams - do + for r in $rams; do export RAM_POSTFIX="_$r" export RAM="$r" FILEPATH="$output_dir/$OUTPUT_BASE$RAM_POSTFIX$FILETYPE" perl -p -e 's/\$\{\{([^}]+)\}\}/defined $ENV{$1} ? $ENV{$1} : $&/eg' \ - < "batch-job-templates/$template" \ - > "$FILEPATH" \ - 2> /dev/null + <"batch-job-templates/$template" \ + >"$FILEPATH" \ + 2>/dev/null echo "Made $FILEPATH" done fi @@ -241,7 +238,7 @@ elif [ "$project" = "surveyor" ]; then # Iterate over all the template files in the directory. for template in batch-job-templates/*.tpl.json; do - template="$(basename "$template")" + template="$(basename "$template")" # Strip off the trailing .tpl for once we've formatted it. OUTPUT_BASE="$(basename "$template" .tpl.json)" FILETYPE=".json" @@ -249,21 +246,20 @@ elif [ "$project" = "surveyor" ]; then if [ "$OUTPUT_FILE" = "surveyor_dispatcher.json" ]; then perl -p -e 's/\$\{\{([^}]+)\}\}/defined $ENV{$1} ? $ENV{$1} : $&/eg' \ - < "batch-job-templates/$template" \ - > "$output_dir/$OUTPUT_FILE" \ - 2> /dev/null + <"batch-job-templates/$template" \ + >"$output_dir/$OUTPUT_FILE" \ + 2>/dev/null echo "Made $output_dir/$OUTPUT_FILE" else rams="1024 4096 16384" - for r in $rams - do + for r in $rams; do export RAM_POSTFIX="_$r" export RAM="$r" FILEPATH="$output_dir/$OUTPUT_BASE$RAM_POSTFIX$FILETYPE" perl -p -e 's/\$\{\{([^}]+)\}\}/defined $ENV{$1} ? $ENV{$1} : $&/eg' \ - < "batch-job-templates/$template" \ - > "$FILEPATH" \ - 2> /dev/null + <"batch-job-templates/$template" \ + >"$FILEPATH" \ + 2>/dev/null echo "Made $FILEPATH" done fi @@ -272,12 +268,12 @@ elif [ "$project" = "surveyor" ]; then elif [ "$project" = "foreman" ]; then # foreman sub-project perl -p -e 's/\$\{\{([^}]+)\}\}/defined $ENV{$1} ? $ENV{$1} : $&/eg' \ - < environment.tpl \ - > "$output_dir/environment" \ - 2> /dev/null + "$output_dir/environment" \ + 2>/dev/null elif [ "$project" = "api" ]; then perl -p -e 's/\$\{\{([^}]+)\}\}/defined $ENV{$1} ? $ENV{$1} : $&/eg' \ - < environment.tpl \ - > "$output_dir/environment" \ - 2> /dev/null + "$output_dir/environment" \ + 2>/dev/null fi diff --git a/scripts/install_all.sh b/scripts/install_all.sh index 0d389712e..30a34c080 100755 --- a/scripts/install_all.sh +++ b/scripts/install_all.sh @@ -1,6 +1,6 @@ #!/bin/sh -# Exit on error +# Exit on error. set -e # Config variables @@ -8,7 +8,10 @@ TERRAFORM_VERSION="0.13.5" # This script should always run as if it were being called from # the directory it lives in. -script_directory="$(cd "$(dirname "$0")" || exit; pwd)" +script_directory="$( + cd "$(dirname "$0")" || exit + pwd +)" cd "$script_directory" || exit print_description() { @@ -37,117 +40,117 @@ confirm() { printf "%s [y/N] " "$1" read -r confirmation if ! [ "$confirmation" = "y" ]; then - echo "Confirmation failure" >&2 + echo "Confirmation failure" >&2 exit 1 fi } while getopts "hv" opt; do case $opt in - h) - print_description - echo - print_usage - exit 0 - ;; - v) - OUTPUT="/dev/stdout" - ;; - \?) - echo "Invalid option: -$OPTARG" >&2 - print_usage >&2 - exit 1 - ;; + h) + print_description + echo + print_usage + exit 0 + ;; + v) + OUTPUT="/dev/stdout" + ;; + \?) + echo "Invalid option: -$OPTARG" >&2 + print_usage >&2 + exit 1 + ;; esac done # Unless output was set to stdout by the verbose flag, set it to /dev/null -# to hide the stdout of package management commands +# to hide the stdout of package management commands. if [ -z "$OUTPUT" ]; then OUTPUT="/dev/null" fi if [ -z "$INSTALL_CMD" ]; then case "$(uname)" in - "Darwin") - if ! command -v brew >/dev/null; then - confirm "Would you like to install Homebrew?" - /usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)" - fi - - INSTALL_CMD="brew install" - INSTALL_CASK_CMD="brew cask install" - BREW=true - ;; - "Linux") - if command -v apt >/dev/null; then - sudo apt-get update - INSTALL_CMD="sudo apt-get install --assume-yes" - APT=true - else - echo "Your Linux distribution is not officially supported," >&2 - echo "but it *should* be able to run the required services. You need to manually" >&2 - echo "install dependencies or give the command to install dependencies with \$INSTALL_CMD." >&2 - exit 1 - fi - ;; - *) - echo "$(uname) is an unsupported operating system." >&2 - echo "You can try to provide a package manager command with \$INSTALL_CMD," >&2 - echo "but your mileage may vary." >&2 + "Darwin") + if ! command -v brew >/dev/null; then + confirm "Would you like to install Homebrew?" + /usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)" + fi + + INSTALL_CMD="brew install" + INSTALL_CASK_CMD="brew cask install" + BREW=true + ;; + "Linux") + if command -v apt >/dev/null; then + sudo apt-get update + INSTALL_CMD="sudo apt-get install --assume-yes" + APT=true + else + echo "Your Linux distribution is not officially supported," >&2 + echo "but it *should* be able to run the required services. You need to manually" >&2 + echo "install dependencies or give the command to install dependencies with \$INSTALL_CMD." >&2 exit 1 - ;; + fi + ;; + *) + echo "$(uname) is an unsupported operating system." >&2 + echo "You can try to provide a package manager command with \$INSTALL_CMD," >&2 + echo "but your mileage may vary." >&2 + exit 1 + ;; esac fi -if ! command -v docker > /dev/null; then +if ! command -v docker >/dev/null; then echo "Installing Docker..." - # On macOS, install docker desktop with Homebrew cask - if [ $BREW ]; then - $INSTALL_CASK_CMD docker > $OUTPUT + # On macOS, install docker desktop with Homebrew cask. + if [ "$BREW" ]; then + $INSTALL_CASK_CMD docker >"$OUTPUT" else - $INSTALL_CMD docker.io > $OUTPUT || (echo "You must manually install docker" && exit 1) + $INSTALL_CMD docker.io >"$OUTPUT" || (echo "You must manually install Docker" && exit 1) - echo "Fixing docker permissions..." + echo "Fixing Docker permissions..." sudo groupadd -f docker sudo usermod -aG docker "$USER" - echo - echo "Logout and log back in to apply the permissions changes, then execute this script again." - exit 0 + echo + echo "Logout and log back in to apply the permissions changes, then execute this script again." + exit 0 fi fi -if ! command -v pip3 > /dev/null && ! [ $BREW ]; then # Don't reinstall python on macOS - echo "Installing python and pip..." - $INSTALL_CMD python3-pip > $OUTPUT || (echo "You must manually install python and pip" && exit 1) +if ! command -v pip3 >/dev/null && ! [ "$BREW" ]; then # Don't reinstall python on macOS + echo "Installing Python and pip..." + $INSTALL_CMD python3-pip >"$OUTPUT" || (echo "You must manually install Python and pip" && exit 1) fi -if ! command -v terraform > /dev/null; then - echo "Installing terraform..." - if [ $BREW ]; then - $INSTALL_CMD terraform > $OUTPUT - elif [ $APT ] || confirm "Would you like to automatically install Terraform for amd64 linux?"; then - $INSTALL_CMD unzip > $OUTPUT +if ! command -v terraform >/dev/null; then + echo "Installing Terraform..." + if [ "$BREW" ]; then + $INSTALL_CMD terraform >"$OUTPUT" + elif [ "$APT" ] || confirm "Would you like to automatically install Terraform for amd64 Linux?"; then + $INSTALL_CMD unzip >"$OUTPUT" curl -0s "https://releases.hashicorp.com/terraform/${TERRAFORM_VERSION}/terraform_${TERRAFORM_VERSION}_linux_amd64.zip" \ - > "terraform_${TERRAFORM_VERSION}_linux_amd64.zip" + >"terraform_${TERRAFORM_VERSION}_linux_amd64.zip" sudo unzip -d /usr/bin "terraform_${TERRAFORM_VERSION}_linux_amd64.zip" sudo chmod a+rx /usr/bin/terraform - rm "terraform_${TERRAFORM_VERSION}_linux_amd64.zip" + rm "terraform_${TERRAFORM_VERSION}_linux_amd64.zip" else echo "You need to manually install Terraform before continuing..." >&2 exit 1 fi fi -if ! command -v pre-commit > /dev/null; then +if ! command -v pre-commit >/dev/null; then message="Would you like to automatically install pre-commit? \ Note: This will install all the required dependencies (black, isort, etc) \ using an additional ~185MB of disk space." - if [ $APT ] || confirm "$message"; then + if [ "$APT" ] || confirm "$message"; then echo "Installing pre-commit..." - $INSTALL_CMD shellcheck > $OUTPUT + $INSTALL_CMD shellcheck >"$OUTPUT" pip3 install pre-commit pre-commit install else @@ -155,32 +158,32 @@ using an additional ~185MB of disk space." fi fi -if ! command -v jq > /dev/null; then +if ! command -v jq >/dev/null; then echo "Installing jq..." - $INSTALL_CMD jq > $OUTPUT || (echo "You must manually install jq" && exit 1) + $INSTALL_CMD jq >"$OUTPUT" || (echo "You must manually install jq" && exit 1) fi -if ! command -v ip > /dev/null; then - if [ $BREW ]; then - $INSTALL_CMD iproute2mac > $OUTPUT +if ! command -v ip >/dev/null; then + if [ "$BREW" ]; then + $INSTALL_CMD iproute2mac >"$OUTPUT" else - $INSTALL_CMD iproute2 > $OUTPUT || (echo "You must manually install iproute2" && exit 1) + $INSTALL_CMD iproute2 >"$OUTPUT" || (echo "You must manually install iproute2" && exit 1) fi fi echo "Starting postgres and installing the database..." -./run_postgres.sh > $OUTPUT -./install_db_docker.sh > $OUTPUT +./run_postgres.sh >"$OUTPUT" +./install_db_docker.sh >"$OUTPUT" echo "Starting elasticsearch and building the ES Indexes..." -./run_es.sh > $OUTPUT -./rebuild_es_index.sh > $OUTPUT +./run_es.sh >"$OUTPUT" +./rebuild_es_index.sh >"$OUTPUT" echo "Creating virtual environment..." -./create_virtualenv.sh > $OUTPUT +./create_virtualenv.sh >"$OUTPUT" echo "Run \`source dr_env/bin/activate\` to activate the virtual environment." echo "Updating common dependencies..." -# Source the virtual environment first +# Source the virtual environment first. . ../dr_env/bin/activate -./update_models.sh > $OUTPUT +./update_models.sh >"$OUTPUT" diff --git a/scripts/install_db_docker.sh b/scripts/install_db_docker.sh index 52d2e3138..8dafc2354 100755 --- a/scripts/install_db_docker.sh +++ b/scripts/install_db_docker.sh @@ -1,8 +1,45 @@ #! /bin/sh -docker run -e PGPASSWORD=mysecretpassword --rm --link drdb:postgres postgres:9.6.6 psql -c "create database data_refinery" -h postgres -U postgres -docker run -e PGPASSWORD=mysecretpassword --rm --link drdb:postgres postgres:9.6.6 psql -c "CREATE ROLE data_refinery_user WITH LOGIN PASSWORD 'data_refinery_password';" -h postgres -U postgres -docker run -e PGPASSWORD=mysecretpassword --rm --link drdb:postgres postgres:9.6.6 psql -c 'GRANT ALL PRIVILEGES ON DATABASE data_refinery TO data_refinery_user;' -h postgres -U postgres -docker run -e PGPASSWORD=mysecretpassword --rm --link drdb:postgres postgres:9.6.6 psql -c 'ALTER USER data_refinery_user CREATEDB;' -h postgres -U postgres -docker run -e PGPASSWORD=mysecretpassword --rm --link drdb:postgres postgres:9.6.6 psql -c 'ALTER ROLE data_refinery_user superuser;' -h postgres -U postgres -docker run -e PGPASSWORD=mysecretpassword --rm --link drdb:postgres postgres:9.6.6 psql -c 'CREATE EXTENSION IF NOT EXISTS hstore;' -h postgres -U postgres -d data_refinery +POSTGRES_VERSION="9.6.6" + +docker run \ + --env PGPASSWORD=mysecretpassword \ + --link drdb:postgres \ + --rm \ + "postgres:$POSTGRES_VERSION" \ + psql -c "create database data_refinery" -h postgres -U postgres + +docker run \ + --env PGPASSWORD=mysecretpassword \ + --link drdb:postgres \ + --rm \ + "postgres:$POSTGRES_VERSION" \ + psql -c "CREATE ROLE data_refinery_user WITH LOGIN PASSWORD 'data_refinery_password';" -h postgres -U postgres + +docker run \ + --env PGPASSWORD=mysecretpassword \ + --link drdb:postgres \ + --rm \ + "postgres:$POSTGRES_VERSION" \ + psql -c 'GRANT ALL PRIVILEGES ON DATABASE data_refinery TO data_refinery_user;' -h postgres -U postgres + +docker run \ + --env PGPASSWORD=mysecretpassword \ + --link drdb:postgres \ + --rm \ + "postgres:$POSTGRES_VERSION" \ + psql -c 'ALTER USER data_refinery_user CREATEDB;' -h postgres -U postgres + +docker run \ + --env PGPASSWORD=mysecretpassword \ + --link drdb:postgres \ + --rm \ + "postgres:$POSTGRES_VERSION" \ + psql -c 'ALTER ROLE data_refinery_user superuser;' -h postgres -U postgres + +docker run \ + --env PGPASSWORD=mysecretpassword \ + --link drdb:postgres \ + --rm \ + "postgres:$POSTGRES_VERSION" \ + psql -c 'CREATE EXTENSION IF NOT EXISTS hstore;' -h postgres -U postgres -d data_refinery diff --git a/scripts/kill_all_jobs.sh b/scripts/kill_all_jobs.sh index 6ef70be94..4da0eafa4 100755 --- a/scripts/kill_all_jobs.sh +++ b/scripts/kill_all_jobs.sh @@ -2,13 +2,16 @@ # This script should always run as if it were being called from # the directory it lives in. -script_directory="$(cd "$(dirname "$0")" || exit; pwd)" +script_directory="$( + cd "$(dirname "$0")" || exit + pwd +)" cd "$script_directory" || exit while read -r row; do # Exporting an expansion rather than a variable, which is exactly what we want to do. # shellcheck disable=SC2163 export "${row}" -done < ../infrastructure/prod_env +done <../infrastructure/prod_env python3 kill_all_jobs.py diff --git a/scripts/make_migrations.sh b/scripts/make_migrations.sh index 25ef9e6c8..807531569 100755 --- a/scripts/make_migrations.sh +++ b/scripts/make_migrations.sh @@ -3,34 +3,44 @@ # Script for migrating the database using a Docker container so no # virtual environment is needed on the host machine. -# Exit on error +# Exit on error. set -e # This script should always run as if it were being called from # the directory it lives in. -script_directory="$(cd "$(dirname "$0")" || exit; pwd)" +script_directory="$( + cd "$(dirname "$0")" || exit + pwd +)" cd "$script_directory" || exit ./prepare_image.sh -i migrations -s common . ./common.sh + DB_HOST_IP=$(get_docker_db_ip_address) docker run \ - --volume "$script_directory/../common/data_refinery_common":/home/user/data_refinery_common \ - --add-host=database:"$DB_HOST_IP" \ - --env-file ../common/environments/local \ - --interactive \ - ccdlstaging/dr_migrations python3 manage.py makemigrations data_refinery_common + --add-host=database:"$DB_HOST_IP" \ + --env-file ../common/environments/local \ + --interactive \ + --platform linux/amd64 \ + --volume "$script_directory/../common/data_refinery_common":/home/user/data_refinery_common \ + "$DOCKERHUB_REPO/dr_migrations" \ + python3 manage.py makemigrations data_refinery_common docker run \ - --volume "$script_directory/../common/data_refinery_common":/home/user/data_refinery_common \ - --add-host=database:"$DB_HOST_IP" \ - --env-file ../common/environments/local \ - ccdlstaging/dr_migrations python3 manage.py migrate + --add-host=database:"$DB_HOST_IP" \ + --env-file ../common/environments/local \ + --platform linux/amd64 \ + --volume "$script_directory/../common/data_refinery_common":/home/user/data_refinery_common \ + "$DOCKERHUB_REPO/dr_migrations" \ + python3 manage.py migrate docker run \ - --volume "$script_directory/../common/data_refinery_common":/home/user/data_refinery_common \ - --add-host=database:"$DB_HOST_IP" \ - --env-file ../common/environments/local \ - ccdlstaging/dr_migrations python3 manage.py createcachetable + --add-host=database:"$DB_HOST_IP" \ + --env-file ../common/environments/local \ + --platform linux/amd64 \ + --volume "$script_directory/../common/data_refinery_common":/home/user/data_refinery_common \ + "$DOCKERHUB_REPO/dr_migrations" \ + python3 manage.py createcachetable diff --git a/scripts/prepare_image.sh b/scripts/prepare_image.sh index e791ce589..67f92e4d1 100755 --- a/scripts/prepare_image.sh +++ b/scripts/prepare_image.sh @@ -2,7 +2,10 @@ # This script should always run as if it were being called from # the directory it lives in. -script_directory="$(cd "$(dirname "$0")" || exit; pwd)" +script_directory="$( + cd "$(dirname "$0")" || exit + pwd +)" cd "$script_directory" || exit # Import the functions in common.sh @@ -18,64 +21,71 @@ print_description() { print_options() { echo "Options:" - echo " -h Prints the help message" + echo " -h Prints the help message." echo " -i IMAGE The image to be prepared. This must be specified." echo " -s SERVICE The service to seach for a dockerfile." - echo " The default option is 'workers'" - echo " -p Pull the latest version of the image from Dockerhub" - echo " -d REPO The docker repo to pull images from." - echo " The default option is 'ccdl'" + echo " The default option is 'workers'." + echo " -d Pull the latest version of the image from Dockerhub." + echo " -u Push the built image to the Dockerhub." + echo " -r REPO The docker registry to use for pull/push actions." + echo " The default option is 'ccdlstaging'." echo echo "Examples:" echo " Build the image ccdl/dr_downloaders:" - echo " ./scripts/prepare_image.sh -i downloaders -d ccdl" + echo " ./scripts/prepare_image.sh -i downloaders -r ccdlstaging" } -while getopts "phi:d:s:" opt; do +while getopts "udhi:b:r:s:" opt; do case $opt in - i) - image=$OPTARG - ;; - d) - dockerhub_repo=$OPTARG - ;; - p) - pull="True" - ;; - s) - service=$OPTARG - ;; - h) - print_description - echo - print_options - exit 0 - ;; - \?) - echo "Invalid option: -$OPTARG" >&2 - print_options >&2 - exit 1 - ;; - :) - echo "Option -$OPTARG requires an argument." >&2 - print_options >&2 - exit 1 - ;; + b) + DOCKER_BUILDER="$OPTARG" + ;; + d) + PULL="True" + ;; + i) + IMAGE="$OPTARG" + ;; + r) + DOCKERHUB_REPO="$OPTARG" + ;; + + s) + SERVICE="$OPTARG" + ;; + u) + DOCKER_ACTION="push" + ;; + h) + print_description + echo + print_options + exit 0 + ;; + \?) + echo "Invalid option: -$OPTARG" >&2 + print_options >&2 + exit 1 + ;; + :) + echo "Option -$OPTARG requires an argument." >&2 + print_options >&2 + exit 1 + ;; esac done -if [ -z "$image" ]; then +if [ -z "$IMAGE" ]; then echo "Error: you must specify an image with -i" >&2 exit 1 fi - -if [ -z "$service" ]; then - service="workers" +if [ -z "$SERVICE" ]; then + SERVICE="workers" fi -if [ -z "$dockerhub_repo" ]; then - dockerhub_repo="ccdlstaging" +if [ -z "$DOCKERHUB_REPO" ]; then + DOCKERHUB_REPO="ccdlstaging" fi # Default to "local" for system version if we're not running in the cloud. @@ -83,43 +93,61 @@ if [ -z "$SYSTEM_VERSION" ]; then SYSTEM_VERSION="local$(date +%s)" fi +if [ -z "$DOCKER_ACTION" ]; then + DOCKER_ACTION="load" +fi + # We want to check if a test image has been built for this branch. If # it has we should use that rather than building it slowly. -image_name="$dockerhub_repo/dr_$image" +DOCKER_IMAGE="$DOCKERHUB_REPO/dr_$IMAGE" # shellcheck disable=SC2086 -if [ "$(docker_img_exists $image_name $branch_name)" ] ; then - docker pull "$image_name:$branch_name" -elif [ -n "$pull" ]; then - docker pull "$image_name" +if [ "$(docker_img_exists $IMAGE_NAME $branch_name)" ]; then + docker pull "$IMAGE_NAME:$branch_name" +elif [ -n "$PULL" ]; then + docker pull \ + --platform linux/amd64 \ + "$DOCKER_IMAGE" else echo "" - echo "Rebuilding the $image_name image." - finished=1 + echo "Rebuilding the $DOCKER_IMAGE image." + attempts=0 + finished=1 while [ $finished != 0 ] && [ $attempts -lt 3 ]; do if [ $attempts -gt 0 ]; then - echo "Failed to build $image_name, trying again." + echo "Failed to build $DOCKER_IMAGE, trying again." fi - + CURRENT_IMAGE="$DOCKER_IMAGE:$SYSTEM_VERSION" + LATEST_IMAGE="$DOCKER_IMAGE:latest" if test "$GITHUB_ACTIONS"; then - # docker needs repositories to be lowercase - CACHE_REPO="$(echo "ghrc.io/$GITHUB_REPOSITORY" | tr '[:upper:]' '[:lower:]')" - CACHED_PACKAGE="$CACHE_REPO/dr_$image" - CACHE="--build-arg BUILDKIT_INLINE_CACHE=1 --cache-from $CACHED_PACKAGE" + # Docker needs repositories to be lowercase. + CACHE_REPO="$(echo "ghrc.io/$GITHUB_REPOSITORY" | + tr '[:upper:]' '[:lower:]')" + LATEST_IMAGE="$CACHE_REPO/dr_$IMAGE" + fi + + if test "$DOCKER_BUILDER"; then + docker buildx use "$DOCKER_BUILDER" fi - docker build \ - -t "$image_name" \ - -f "$service/dockerfiles/Dockerfile.$image" \ - --build-arg SYSTEM_VERSION="$SYSTEM_VERSION" \ - $CACHE . + DOCKER_BUILDKIT=1 docker buildx build \ + --"$DOCKER_ACTION" \ + --build-arg BUILDKIT_INLINE_CACHE=1 \ + --build-arg DOCKERHUB_REPO="$DOCKERHUB_REPO" \ + --build-arg SYSTEM_VERSION="$SYSTEM_VERSION" \ + --cache-from "$LATEST_IMAGE" \ + --cache-from="$CURRENT_IMAGE" \ + --file "$SERVICE/dockerfiles/Dockerfile.$IMAGE" \ + --platform linux/amd64 \ + --tag "$DOCKER_IMAGE" \ + . finished=$? - attempts=$((attempts+1)) + attempts=$((attempts + 1)) done if [ $finished != 0 ] && [ $attempts -ge 3 ]; then - echo "Could not build $image_name after three attempts." + echo "Could not build $DOCKER_IMAGE after three attempts." exit 1 fi fi diff --git a/scripts/rebuild_es_index.sh b/scripts/rebuild_es_index.sh index 30fded027..c3ac7745b 100755 --- a/scripts/rebuild_es_index.sh +++ b/scripts/rebuild_es_index.sh @@ -2,7 +2,10 @@ # This script should always run as if it were being called from # the directory it lives in. -script_directory="$(cd "$(dirname "$0")" || exit; pwd)" +script_directory="$( + cd "$(dirname "$0")" || exit + pwd +)" cd "$script_directory" || exit ./run_manage.sh -i api_local -s api search_index --rebuild -f diff --git a/scripts/reinit_database.sh b/scripts/reinit_database.sh index 18107000d..d397c9c14 100755 --- a/scripts/reinit_database.sh +++ b/scripts/reinit_database.sh @@ -2,10 +2,12 @@ # Reintializes the database so there's no data or migrations run against it. - # This script should always run as if it were being called from # the directory it lives in. -script_directory="$(cd "$(dirname "$0")" || exit; pwd)" +script_directory="$( + cd "$(dirname "$0")" || exit + pwd +)" cd "$script_directory" || exit # Clear it out. diff --git a/scripts/run_all_tests.sh b/scripts/run_all_tests.sh index 9372e43f2..20f7b4a14 100755 --- a/scripts/run_all_tests.sh +++ b/scripts/run_all_tests.sh @@ -7,7 +7,10 @@ set -e # This script should always run as if it were being called from # the directory it lives in. -script_directory="$(cd "$(dirname "$0")" || exit; pwd)" +script_directory="$( + cd "$(dirname "$0")" || exit + pwd +)" cd "$script_directory" || exit # Get access to all of the refinebio project diff --git a/scripts/run_es.sh b/scripts/run_es.sh index c300aca2f..9c2a9681a 100755 --- a/scripts/run_es.sh +++ b/scripts/run_es.sh @@ -1,13 +1,21 @@ #! /bin/sh -docker rm -f dres 2> /dev/null +docker rm -f dres 2>/dev/null -# Check if a docker database named "dres" exists, and if so just start it +# Check if a docker database named "dres" exists, and if so just start it. if [ "$(docker ps -a --filter name=dres -q)" ]; then - docker start dres > /dev/null -# Otherwise, run it with `docker run` + docker start dres >/dev/null +# Otherwise, run it with `docker run`. else - docker run --name dres -p 9200:9200 -p 9300:9300 -e "discovery.type=single-node" -e "indices.query.bool.max_clause_count=16384" -d docker.elastic.co/elasticsearch/elasticsearch:6.5.4 + docker run \ + --detach \ + --env "discovery.type=single-node" \ + --env "indices.query.bool.max_clause_count=16384" \ + --name dres \ + --platform linux/amd64 \ + --publish 9200:9200 \ + --publish 9300:9300 \ + docker.elastic.co/elasticsearch/elasticsearch:6.5.4 fi echo "Started ElasticSearch." diff --git a/scripts/run_manage.sh b/scripts/run_manage.sh index 51cc2f550..a1c1bc25d 100755 --- a/scripts/run_manage.sh +++ b/scripts/run_manage.sh @@ -6,13 +6,16 @@ # This script should always run as if it were being called from # the directory it lives in. -script_directory="$(cd "$(dirname "$0")" || exit; pwd)" +script_directory="$( + cd "$(dirname "$0")" || exit + pwd +)" cd "$script_directory" || exit -# Import the functions in common.sh +# Import the functions in common.sh. . ./common.sh -# We need access to all of the projects +# We need access to all of the projects. cd .. print_description() { @@ -44,7 +47,7 @@ if [ "$1" = "-i" ]; then shift if [ -z "$1" ]; then echo "Error: Missing argument for -i" >&2 - echo + echo print_options >&2 exit 1 fi @@ -62,7 +65,7 @@ if [ "$1" = "-s" ]; then shift if [ -z "$1" ]; then echo "Error: Missing argument for -s" >&2 - echo + echo print_options >&2 exit 1 fi @@ -72,29 +75,36 @@ else service="foreman" fi -# Set up the data volume directory if it does not already exist +# Set up the data volume directory if it does not already exist. volume_directory="$script_directory/../api/volume" if [ ! -d "$volume_directory" ]; then mkdir "$volume_directory" fi chmod -R a+rwX "$volume_directory" -docker build -t dr_shell -f "$service/dockerfiles/Dockerfile.$image" . +docker build \ + --file "$service/dockerfiles/Dockerfile.$image" \ + --tag dr_shell \ + . DB_HOST_IP=$(get_docker_db_ip_address) ES_HOST_IP=$(get_docker_es_ip_address) -# Only run interactively if we are on a TTY +# Only run interactively if we are on a TTY. if [ -t 1 ]; then - INTERACTIVE="-i" + INTERACTIVE="--interactive" fi -docker run -t $INTERACTIVE \ - --add-host=database:"$DB_HOST_IP" \ - --add-host=elasticsearch:"$ES_HOST_IP" \ - --env AWS_ACCESS_KEY_ID="$AWS_ACCESS_KEY_ID" \ - --env AWS_SECRET_ACCESS_KEY="$AWS_SECRET_ACCESS_KEY" \ - --env-file "$service/environments/local" \ - --volume /tmp:/tmp \ - --volume "$volume_directory":/home/user/data_store \ - dr_shell python3 manage.py "$@" +# shellcheck disable=SC2086 +docker run \ + --add-host=database:"$DB_HOST_IP" \ + --add-host=elasticsearch:"$ES_HOST_IP" \ + --env AWS_ACCESS_KEY_ID="$AWS_ACCESS_KEY_ID" \ + --env AWS_SECRET_ACCESS_KEY="$AWS_SECRET_ACCESS_KEY" \ + --env-file "$service/environments/local" \ + --tty \ + --volume "$volume_directory":/home/user/data_store \ + --volume /tmp:/tmp \ + $INTERACTIVE \ + dr_shell \ + python3 manage.py "$@" diff --git a/scripts/run_postgres.sh b/scripts/run_postgres.sh index 2798dc04b..6ad077bce 100755 --- a/scripts/run_postgres.sh +++ b/scripts/run_postgres.sh @@ -2,30 +2,39 @@ # This script should always run as if it were being called from # the directory it lives in. -script_directory="$(cd "$(dirname "$0")" || exit; pwd)" +script_directory="$( + cd "$(dirname "$0")" || exit + pwd +)" cd "$script_directory" || exit # Get access to all of refinebio cd .. -# CircleCI Docker won't make this by default for some reason +# CircleCI Docker won't make this by default for some reason. # This doubly nested directory is a hacky workaround to prevent permissions issues. # Suggested here: # https://github.com/docker/for-linux/issues/380#issuecomment-436419102 VOLUMES="$script_directory/../volumes_postgres/volumes_postgres" if [ ! -d "$VOLUMES" ]; then - mkdir -p "$VOLUMES" + mkdir -p "$VOLUMES" fi # Check if a docker database named "drdb" exists, and if so just run it if [ "$(docker ps -a --filter name=drdb -q)" ]; then - docker start drdb > /dev/null - echo "Started database." -# Otherwise, install it from docker hub + docker start drdb >/dev/null + echo "Started database." +# Otherwise, install it from Docker Hub. else - # via https://hub.docker.com/_/postgres/ - # 9.6.6 is the current (as of Jan 23 2018) RDS most recent version. - # Password can be exposed to git/CI because this is only for dev/testing purposes, not real data. - echo "Installing database..." - docker run -p 5432:5432 --name drdb -v "$VOLUMES":/var/lib/postgresql/data -e POSTGRES_PASSWORD=mysecretpassword -d postgres:9.6.6 + # via https://hub.docker.com/_/postgres/ + # 9.6.6 is the current (as of Jan 23 2018) RDS most recent version. + # Password can be exposed to git/CI because this is only for dev/testing purposes, not real data. + echo "Installing database..." + docker run \ + --detach \ + --env POSTGRES_PASSWORD=mysecretpassword \ + --name drdb \ + --publish 5432:5432 \ + --volume "$VOLUMES":/var/lib/postgresql/data \ + postgres:9.6.6 fi diff --git a/scripts/run_psql_shell.sh b/scripts/run_psql_shell.sh index 9d99de96a..98939c0a0 100755 --- a/scripts/run_psql_shell.sh +++ b/scripts/run_psql_shell.sh @@ -1,2 +1,10 @@ #! /bin/sh -docker run -it -e PGPASSWORD=mysecretpassword --rm --link drdb:postgres postgres:9.6.6 psql -h postgres -U postgres -d data_refinery + +docker run \ + --env PGPASSWORD=mysecretpassword \ + --interactive \ + --link drdb:postgres \ + --rm \ + --tty \ + postgres:9.6.6 \ + psql -h postgres -U postgres -d data_refinery diff --git a/scripts/run_shell.sh b/scripts/run_shell.sh index cfb60d00c..7760d9f2e 100755 --- a/scripts/run_shell.sh +++ b/scripts/run_shell.sh @@ -12,7 +12,10 @@ set -e # This script should always run as if it were being called from # the directory it lives in. -script_directory="$(cd "$(dirname "$0")" || exit; pwd)" +script_directory="$( + cd "$(dirname "$0")" || exit + pwd +)" cd "$script_directory" || exit # Import functions in common.sh @@ -28,15 +31,21 @@ if [ ! -d "$volume_directory" ]; then fi chmod -R a+rwX "$volume_directory" -docker build -t dr_shell -f foreman/dockerfiles/Dockerfile.foreman . +docker build \ + --file foreman/dockerfiles/Dockerfile.foreman \ + --tag dr_shell \ + . DB_HOST_IP=$(get_docker_db_ip_address) -docker run -it \ - --add-host="database:$DB_HOST_IP" \ - --env AWS_ACCESS_KEY_ID="$AWS_ACCESS_KEY_ID" \ - --env AWS_SECRET_ACCESS_KEY="$AWS_SECRET_ACCESS_KEY" \ - --env-file foreman/environments/local \ - --volume /tmp:/tmp \ - --volume "$volume_directory":/home/user/data_store \ - --interactive dr_shell python3 manage.py shell +docker run \ + --add-host="database:$DB_HOST_IP" \ + --env AWS_ACCESS_KEY_ID="$AWS_ACCESS_KEY_ID" \ + --env AWS_SECRET_ACCESS_KEY="$AWS_SECRET_ACCESS_KEY" \ + --env-file foreman/environments/local \ + --interactive \ + --tty \ + --volume "$volume_directory":/home/user/data_store \ + --volume /tmp:/tmp \ + dr_shell \ + python3 manage.py shell diff --git a/scripts/update_models.sh b/scripts/update_models.sh index d6648df8f..ada2c7862 100755 --- a/scripts/update_models.sh +++ b/scripts/update_models.sh @@ -1,18 +1,21 @@ #! /bin/sh -# Makes migrations and re-installs so Docker images update locally +# Makes migrations and re-installs so Docker images update locally. -# Exit on fail +# Exit on fail. set -e # This script should always run as if it were being called from # the directory it lives in. -script_directory="$(cd "$(dirname "$0")" || exit; pwd)" +script_directory="$( + cd "$(dirname "$0")" || exit + pwd +)" cd "$script_directory" || exit -# Get access to all of refinebio +# Get access to all of refinebio. cd .. -if ! docker ps | tail -n +2 | awk '{ print $NF }' | grep drdb > /dev/null; then +if ! docker ps | tail -n +2 | awk '{ print $NF }' | grep drdb >/dev/null; then echo "You must start Postgres first with:" >&2 echo "./scripts/run_postgres.sh" >&2 exit 1 @@ -25,7 +28,7 @@ if [ -z "$SYSTEM_VERSION" ]; then fi # Put this in place for common to read from. -echo "$SYSTEM_VERSION" > common/version +echo "$SYSTEM_VERSION" >common/version # Ensure there is only one distribution to copy over. rm -f common/dist/* diff --git a/scripts/update_my_docker_images.sh b/scripts/update_my_docker_images.sh index e49d1d542..d64d48694 100755 --- a/scripts/update_my_docker_images.sh +++ b/scripts/update_my_docker_images.sh @@ -1,41 +1,43 @@ #!/bin/sh -# This script is very similar to .circleci/update_docker_images.sh but it has less -# production/cloud related checks. - -# Exit on failure +# Exit on failure. set -e # This script should always run as if it were being called from # the directory it lives in. -script_directory="$(cd "$(dirname "$0")" || exit; pwd)" +script_directory="$( + cd "$(dirname "$0")" || exit + pwd +)" cd "$script_directory" || exit -# Get access to all of refinebio +# Get access to all of refinebio. cd .. print_description() { - echo 'This script will re-build all refine.bio docker images and push them to' - echo 'the specified Dockerhub repo.' + echo 'This script will re-build all refine.bio docker images and push ' + echo 'them to the specified Dockerhub repository.' } print_options() { - cat << EOF + cat < common/version +echo "$SYSTEM_VERSION" >common/version # Create common/dist/data-refinery-common-*.tar.gz, which is # required by the workers and data_refinery_foreman images. -## Remove old common distributions if they exist +## Remove old common distributions if they exist. rm -f common/dist/* -(cd common && python3 setup.py sdist) - -for IMG in $CCDL_WORKER_IMGS; do - image_name="$DOCKERHUB_REPO/dr_$IMG" - - echo "Building docker image: $image_name:$SYSTEM_VERSION" - # Build and push image. - docker build \ - -t "$image_name:$SYSTEM_VERSION" \ - -f "workers/dockerfiles/Dockerfile.$IMG" \ - --build-arg SYSTEM_VERSION="$SYSTEM_VERSION" . - docker push "$image_name:$SYSTEM_VERSION" - # Update latest version - docker tag "$image_name:$SYSTEM_VERSION" "$image_name:latest" - docker push "$image_name:latest" -done +(cd common && python3 setup.py sdist) # Run in a subshell. + +ARCH="$(uname -m)" + +if [ "$ARCH" != "$SYSTEM_ARCH" ] && [ -z "$DOCKER_BUILDER" ]; then + echo "You're building $SYSTEM_ARCH images on the $ARCH machine without " \ + "specifying a DOCKER_BUILDER. This may take a while..." + sleep 5 +fi + +for DOCKER_IMAGE in $DOCKER_IMAGES; do + case $DOCKER_IMAGE in + api) + DOCKER_FILE_PATH="api/dockerfiles/Dockerfile.api_production" + ;; + foreman) + DOCKER_FILE_PATH="foreman/dockerfiles/Dockerfile.$DOCKER_IMAGE" + ;; + *) + DOCKER_FILE_PATH="workers/dockerfiles/Dockerfile.$DOCKER_IMAGE" + ;; + esac -# Build and push Foreman image. -FOREMAN_DOCKER_IMAGE="$DOCKERHUB_REPO/dr_foreman" -docker build \ - -t "$FOREMAN_DOCKER_IMAGE:$SYSTEM_VERSION" \ - -f foreman/dockerfiles/Dockerfile.foreman \ - --build-arg SYSTEM_VERSION="$SYSTEM_VERSION" . -docker push "$FOREMAN_DOCKER_IMAGE:$SYSTEM_VERSION" -# Update latest version -docker tag "$FOREMAN_DOCKER_IMAGE:$SYSTEM_VERSION" "$FOREMAN_DOCKER_IMAGE:latest" -docker push "$FOREMAN_DOCKER_IMAGE:latest" - -# Build and push API image. -API_DOCKER_IMAGE="$DOCKERHUB_REPO/dr_api" -docker build \ - -t "$API_DOCKER_IMAGE:$SYSTEM_VERSION" \ - -f api/dockerfiles/Dockerfile.api_production \ - --build-arg SYSTEM_VERSION="$SYSTEM_VERSION" . -docker push "$API_DOCKER_IMAGE:$SYSTEM_VERSION" -# Update latest version -docker tag "$API_DOCKER_IMAGE:$SYSTEM_VERSION" "$API_DOCKER_IMAGE:latest" -docker push "$API_DOCKER_IMAGE:latest" + IMAGE_NAME="$DOCKERHUB_REPO/dr_$DOCKER_IMAGE" + + echo "Building $SYSTEM_ARCH $IMAGE_NAME:$SYSTEM_VERSION image from " \ + "$DOCKER_FILE_PATH." + + if test "$DOCKER_BUILDER"; then + echo "Using builder $DOCKER_BUILDER." + docker buildx use "$DOCKER_BUILDER" + fi + + DOCKER_BUILDKIT=1 docker buildx build \ + --build-arg BUILDKIT_INLINE_CACHE=1 \ + --build-arg DOCKERHUB_REPO="$DOCKERHUB_REPO" \ + --build-arg SYSTEM_VERSION="$SYSTEM_VERSION" \ + --cache-from="$IMAGE_NAME:$SYSTEM_VERSION" \ + --cache-from="$IMAGE_NAME:latest" \ + --file "$DOCKER_FILE_PATH" \ + --platform "linux/$SYSTEM_ARCH" \ + --push \ + --tag "$IMAGE_NAME:$SYSTEM_VERSION" \ + --tag "$IMAGE_NAME:latest" \ + . + + docker pull \ + --platform "linux/$SYSTEM_ARCH" \ + "$IMAGE_NAME:latest" +done diff --git a/workers/dockerfiles/Dockerfile.affymetrix b/workers/dockerfiles/Dockerfile.affymetrix index 6ac42f4ef..d4029d980 100644 --- a/workers/dockerfiles/Dockerfile.affymetrix +++ b/workers/dockerfiles/Dockerfile.affymetrix @@ -1,4 +1,5 @@ -FROM ccdlstaging/dr_base:latest +ARG DOCKERHUB_REPO +FROM $DOCKERHUB_REPO/dr_base:latest # Fail in case of an error at any stage in the pipe. SHELL ["/bin/bash", "-o", "pipefail", "-c"] diff --git a/workers/dockerfiles/Dockerfile.affymetrix_local b/workers/dockerfiles/Dockerfile.affymetrix_local index 7fe881ab0..52346c931 100644 --- a/workers/dockerfiles/Dockerfile.affymetrix_local +++ b/workers/dockerfiles/Dockerfile.affymetrix_local @@ -1,4 +1,5 @@ -FROM ccdlstaging/dr_affymetrix:latest +ARG DOCKERHUB_REPO +FROM $DOCKERHUB_REPO/dr_base:latest # Fail in case of an error at any stage in the pipe. SHELL ["/bin/bash", "-o", "pipefail", "-c"] diff --git a/workers/dockerfiles/Dockerfile.downloaders b/workers/dockerfiles/Dockerfile.downloaders index 1b19485e2..de79a3320 100644 --- a/workers/dockerfiles/Dockerfile.downloaders +++ b/workers/dockerfiles/Dockerfile.downloaders @@ -1,4 +1,5 @@ -FROM ccdlstaging/dr_base:latest +ARG DOCKERHUB_REPO +FROM $DOCKERHUB_REPO/dr_base:latest # Fail in case of an error at any stage in the pipe. SHELL ["/bin/bash", "-o", "pipefail", "-c"] diff --git a/workers/dockerfiles/Dockerfile.illumina b/workers/dockerfiles/Dockerfile.illumina index b89630096..7c1ab2eab 100644 --- a/workers/dockerfiles/Dockerfile.illumina +++ b/workers/dockerfiles/Dockerfile.illumina @@ -1,4 +1,5 @@ -FROM ccdlstaging/dr_base:latest +ARG DOCKERHUB_REPO +FROM $DOCKERHUB_REPO/dr_base:latest # Fail in case of an error at any stage in the pipe. SHELL ["/bin/bash", "-o", "pipefail", "-c"] diff --git a/workers/dockerfiles/Dockerfile.no_op b/workers/dockerfiles/Dockerfile.no_op index 11729dba4..9c936179a 100644 --- a/workers/dockerfiles/Dockerfile.no_op +++ b/workers/dockerfiles/Dockerfile.no_op @@ -1,4 +1,5 @@ -FROM ccdlstaging/dr_base:latest +ARG DOCKERHUB_REPO +FROM $DOCKERHUB_REPO/dr_base:latest # Fail in case of an error at any stage in the pipe. SHELL ["/bin/bash", "-o", "pipefail", "-c"] diff --git a/workers/dockerfiles/Dockerfile.salmon b/workers/dockerfiles/Dockerfile.salmon index d9cd8818e..41b4fbb3f 100644 --- a/workers/dockerfiles/Dockerfile.salmon +++ b/workers/dockerfiles/Dockerfile.salmon @@ -1,4 +1,5 @@ -FROM ccdlstaging/dr_base:latest +ARG DOCKERHUB_REPO +FROM $DOCKERHUB_REPO/dr_base:latest # Fail in case of an error at any stage in the pipe. SHELL ["/bin/bash", "-o", "pipefail", "-c"] diff --git a/workers/dockerfiles/Dockerfile.smasher b/workers/dockerfiles/Dockerfile.smasher index 29bba5cd8..799e73be0 100644 --- a/workers/dockerfiles/Dockerfile.smasher +++ b/workers/dockerfiles/Dockerfile.smasher @@ -1,4 +1,5 @@ -FROM ccdlstaging/dr_base:latest +ARG DOCKERHUB_REPO +FROM $DOCKERHUB_REPO/dr_base:latest # Fail in case of an error at any stage in the pipe. SHELL ["/bin/bash", "-o", "pipefail", "-c"] diff --git a/workers/dockerfiles/Dockerfile.transcriptome b/workers/dockerfiles/Dockerfile.transcriptome index 3aec1395b..55da64f13 100644 --- a/workers/dockerfiles/Dockerfile.transcriptome +++ b/workers/dockerfiles/Dockerfile.transcriptome @@ -1,4 +1,5 @@ -FROM ccdlstaging/dr_base:latest +ARG DOCKERHUB_REPO +FROM $DOCKERHUB_REPO/dr_base:latest # Fail in case of an error at any stage in the pipe. SHELL ["/bin/bash", "-o", "pipefail", "-c"] diff --git a/workers/run_command.sh b/workers/run_command.sh index da50660b1..51dc3b6c9 100755 --- a/workers/run_command.sh +++ b/workers/run_command.sh @@ -7,18 +7,18 @@ set -e while getopts "i:" opt; do case $opt in - i) - image=$OPTARG - ;; - \?) - echo "Invalid option: -$OPTARG" >&2 - exit 1 - ;; + i) + IMAGE="$OPTARG" + ;; + \?) + echo "Invalid option: -$OPTARG" >&2 + exit 1 + ;; esac done -if [ -z "$image" ]; then - image="smasher" +if [ -z "$IMAGE" ]; then + IMAGE="smasher" else shift shift @@ -26,7 +26,10 @@ fi # This script should always run as if it were being called from # the directory it lives in. -script_directory="$(cd "$(dirname "$0")" || exit; pwd)" +script_directory="$( + cd "$(dirname "$0")" || exit + pwd +)" cd "$script_directory" || exit # However in order to give Docker access to all the code we have to @@ -47,16 +50,19 @@ fi chmod -R a+rwX "$volume_directory" . ./scripts/common.sh + DB_HOST_IP=$(get_docker_db_ip_address) -./scripts/prepare_image.sh -i "$image" -s workers -image_name=ccdlstaging/dr_"$image" +./scripts/prepare_image.sh -i "$IMAGE" -s workers docker run \ - --add-host=database:"$DB_HOST_IP" \ - --env-file workers/environments/local \ - --env AWS_ACCESS_KEY_ID \ - --env AWS_SECRET_ACCESS_KEY \ - --volume "$volume_directory":/home/user/data_store \ - --link drdb:postgres \ - -it "$image_name" bash -c "$@" + --add-host=database:"$DB_HOST_IP" \ + --env AWS_ACCESS_KEY_ID \ + --env AWS_SECRET_ACCESS_KEY \ + --env-file workers/environments/local \ + --ineractive \ + --link drdb:postgres \ + --tty \ + --volume "$volume_directory":/home/user/data_store \ + "$DOCKERHUB_REPO/dr_$IMAGE" \ + bash -c "$@" diff --git a/workers/run_janitor.sh b/workers/run_janitor.sh index 27c6ed6f5..70d9dcbde 100755 --- a/workers/run_janitor.sh +++ b/workers/run_janitor.sh @@ -1,19 +1,20 @@ #!/bin/sh -# the directory it lives in. -script_directory="$(cd "$(dirname "$0")" || exit; pwd)" +# The directory it lives in. +script_directory="$( + cd "$(dirname "$0")" || exit + pwd +)" cd "$script_directory" || exit -# However in order to give Docker access to all the code we have to -# move up a level +# However, in order to give Docker access to all the code we have to +# move up a level. cd .. ./scripts/prepare_image.sh -i smasher -image_name="ccdlstaging/dr_smasher" - -volume_directory="$script_directory/volume" . ./scripts/common.sh + DB_HOST_IP=$(get_docker_db_ip_address) AWS_ACCESS_KEY_ID="$(~/bin/aws configure get default.aws_access_key_id)" @@ -22,13 +23,15 @@ AWS_SECRET_ACCESS_KEY="$(~/bin/aws configure get default.aws_secret_access_key)" export AWS_SECRET_ACCESS_KEY docker run \ - -it \ - -m 500m \ - --add-host=database:"$DB_HOST_IP" \ - --env-file workers/environments/local \ - --env AWS_ACCESS_KEY_ID \ - --env AWS_SECRET_ACCESS_KEY \ - --entrypoint ./manage.py \ - --volume "$volume_directory":/home/user/data_store \ - --link drdb:postgres \ - "$image_name" run_janitor + --add-host=database:"$DB_HOST_IP" \ + --entrypoint ./manage.py \ + --env AWS_ACCESS_KEY_ID \ + --env AWS_SECRET_ACCESS_KEY \ + --env-file workers/environments/local \ + --interactive \ + --link drdb:postgres \ + --memory 500m \ + --tty \ + --volume "$script_directory/volume":/home/user/data_store \ + "$DOCKERHUB_REPO/dr_smasher" \ + run_janitor diff --git a/workers/run_job.sh b/workers/run_job.sh index 7342103bc..4756908b3 100755 --- a/workers/run_job.sh +++ b/workers/run_job.sh @@ -1,67 +1,70 @@ #!/bin/bash -# Script for running a django management command to test the worker. +# Script for running a Django management command to test the worker. while getopts "hi:" opt; do case $opt in - i) - image=$OPTARG - ;; - h) - echo "Runs a downloader or processor job. The following arguments are supported:" - echo "-h : Print this help message and exit." - echo "-i : The image to use. Options are:" - echo " downloaders (default)" - echo " salmon" - echo " transcriptome" - echo " no_op" - echo " downloaders" - echo " illumina" - echo " affymetrix" - echo " : What kind of job to run." - echo " Must be either 'run_downloader_job' or 'run_processor_job'." - echo "--job-name= : The type of job to run." - echo " For processor jobs, options are:" - echo " AFFY_TO_PCL" - echo " AGILENT_TWOCOLOR_TO_PCL" - echo " SALMON" - echo " ILLUMINA_TO_PCL" - echo " TRANSCRIPTOME_INDEX_LONG" - echo " TRANSCRIPTOME_INDEX_SHORT" - echo " NO_OP" - echo " For downloader jobs, options are:" - echo " ARRAY_EXPRESS" - echo " SRA" - echo " TRANSCRIPTOME_INDEX" - echo " GEO" - echo "--job-id= : The id of the job you want to run. Must already exist in the database." - echo "" - echo "Note that the must correspond to the ." - echo " AGILENT_TWOCOLOR_TO_PCL is a special case because it requires the 'affymetrix' image." - echo "" - echo "Examples:" - echo " ./workers/run_job.sh run_downloader_job --job-name=SRA --job-id=12345" - echo " ./workers/run_job.sh -i affymetrix run_processor_job --job-name=AGILENT_TWOCOLOR_TO_PCL --job-id=54321" - exit 0 - ;; - \?) - echo "Invalid option: -$OPTARG" >&2 - exit 1 - ;; - :) - echo "Option -$OPTARG requires an argument." >&2 - exit 1 - ;; + i) + IMAGE="$OPTARG" + ;; + h) + echo "Runs a downloader or processor job. The following arguments are supported:" + echo "-h : Print this help message and exit." + echo "-i : The image to use. Options are:" + echo " downloaders (default)" + echo " salmon" + echo " transcriptome" + echo " no_op" + echo " downloaders" + echo " illumina" + echo " affymetrix" + echo " : What kind of job to run." + echo " Must be either 'run_downloader_job' or 'run_processor_job'." + echo "--job-name= : The type of job to run." + echo " For processor jobs, options are:" + echo " AFFY_TO_PCL" + echo " AGILENT_TWOCOLOR_TO_PCL" + echo " SALMON" + echo " ILLUMINA_TO_PCL" + echo " TRANSCRIPTOME_INDEX_LONG" + echo " TRANSCRIPTOME_INDEX_SHORT" + echo " NO_OP" + echo " For downloader jobs, options are:" + echo " ARRAY_EXPRESS" + echo " SRA" + echo " TRANSCRIPTOME_INDEX" + echo " GEO" + echo "--job-id= : The id of the job you want to run. Must already exist in the database." + echo "" + echo "Note that the must correspond to the ." + echo " AGILENT_TWOCOLOR_TO_PCL is a special case because it requires the 'affymetrix' image." + echo "" + echo "Examples:" + echo " ./workers/run_job.sh run_downloader_job --job-name=SRA --job-id=12345" + echo " ./workers/run_job.sh -i affymetrix run_processor_job --job-name=AGILENT_TWOCOLOR_TO_PCL --job-id=54321" + exit 0 + ;; + \?) + echo "Invalid option: -$OPTARG" >&2 + exit 1 + ;; + :) + echo "Option -$OPTARG requires an argument." >&2 + exit 1 + ;; esac done -if [[ -z "$image" ]]; then - image="downloaders" +if [[ -z "$IMAGE" ]]; then + IMAGE="downloaders" fi # This script should always run as if it were being called from # the directory it lives in. -script_directory="$(cd "$(dirname "$0")" || exit; pwd)" +script_directory="$( + cd "$(dirname "$0")" || exit + pwd +)" cd "$script_directory" || exit # However in order to give Docker access to all the code we have to @@ -69,12 +72,12 @@ cd "$script_directory" || exit cd .. # Agilent uses the same image as affymetrix -if [[ "$image" == "affymetrix" || "$image" == "agilent" ]]; then - ./scripts/prepare_image.sh -p -i affymetrix - image_name="ccdlstaging/dr_affymetrix" +if [[ "$IMAGE" == "affymetrix" || "$IMAGE" == "agilent" ]]; then + ./scripts/prepare_image.sh -d -i affymetrix + IMAGE_NAME="$DOCKERHUB_REPO/dr_affymetrix" else - ./scripts/prepare_image.sh -i "$image" - image_name="ccdlstaging/dr_$image" + ./scripts/prepare_image.sh -i "$IMAGE" + IMAGE_NAME="$DOCKERHUB_REPO/dr_$IMAGE" fi volume_directory="$script_directory/volume" @@ -83,16 +86,18 @@ if [ ! -d "$volume_directory" ]; then fi chmod -R a+rwX "$volume_directory" -source scripts/common.sh +. scripts/common.sh + DB_HOST_IP=$(get_docker_db_ip_address) docker run \ - -it \ - --add-host=database:"$DB_HOST_IP" \ - --env-file workers/environments/local \ - --env AWS_ACCESS_KEY_ID \ - --env AWS_SECRET_ACCESS_KEY \ - --entrypoint ./manage.py \ - --volume "$volume_directory":/home/user/data_store \ - --link drdb:postgres \ - "$image_name" "${@: -3}" "${@: -2}" "${@: -1}" + --add-host=database:"$DB_HOST_IP" \ + --entrypoint ./manage.py \ + --env AWS_ACCESS_KEY_ID \ + --env AWS_SECRET_ACCESS_KEY \ + --env-file workers/environments/local \ + --interactive \ + --link drdb:postgres \ + --tty \ + --volume "$volume_directory":/home/user/data_store \ + "$IMAGE_NAME" "${@: -3}" "${@: -2}" "${@: -1}" diff --git a/workers/run_tests.sh b/workers/run_tests.sh index 3e03e2ada..45be0fee1 100755 --- a/workers/run_tests.sh +++ b/workers/run_tests.sh @@ -3,7 +3,7 @@ # Script for executing Django PyUnit tests within a Docker container. -# Exit on failure +# Exit on failure. set -e print_description() { @@ -20,47 +20,49 @@ print_options() { while getopts ":t:h" opt; do case $opt in - t) - tag=$OPTARG - ;; - h) - print_description - echo - print_options - exit 0 - ;; - \?) - echo "Invalid option: -$OPTARG" >&2 - print_options >&2 - exit 1 - ;; - :) - echo "Option -$OPTARG requires an argument." >&2 - print_options >&2 - exit 1 - ;; + t) + tag="$OPTARG" + ;; + h) + print_description + echo + print_options + exit 0 + ;; + \?) + echo "Invalid option: -$OPTARG" >&2 + print_options >&2 + exit 1 + ;; + :) + echo "Option -$OPTARG requires an argument." >&2 + print_options >&2 + exit 1 + ;; esac done # This script should always run as if it were being called from # the directory it lives in. -script_directory="$(cd "$(dirname "$0")" || exit; pwd)" +script_directory="$( + cd "$(dirname "$0")" || exit + pwd +)" cd "$script_directory" || exit -# However in order to give Docker access to all the code we have to +# However, in order to give Docker access to all the code we have to # move up a level cd .. -# Ensure that postgres is running +# Ensure that Postgres is running. if ! [ "$(docker ps --filter name=drdb -q)" ]; then echo "You must start Postgres first with:" >&2 echo "./scripts/run_postgres.sh" >&2 exit 1 fi -volume_directory="$script_directory/test_volume" - test_data_repo="https://s3.amazonaws.com/data-refinery-test-assets" +volume_directory="$script_directory/test_volume" if [ -z "$tag" ] || [ "$tag" = "salmon" ]; then # Download "salmon quant" test data The `newer` file was to @@ -77,11 +79,11 @@ if [ -z "$tag" ] || [ "$tag" = "salmon" ]; then rm "$volume_directory"/salmon_tests.tar.gz fi - # salmontools test data + # SalmonTools test data. salmontools_test_zip="$test_data_repo/salmontools_test_data.tar.gz" salmontools_test_dir="$volume_directory/salmontools" - # Clean the test data directory + # Clean the test data directory. rm -rf "$salmontools_test_dir" mkdir -p "$salmontools_test_dir" @@ -102,21 +104,21 @@ if [ -z "$tag" ] || [ "$tag" = "salmon" ]; then mkdir -p "$rna_seq_test_raw_dir" echo "Downloading $read_1_name for Salmon tests." wget -q -O "$rna_seq_test_data_1" \ - "$test_data_repo/$read_1_name" + "$test_data_repo/$read_1_name" echo "Downloading $read_2_name for Salmon tests." wget -q -O "$rna_seq_test_data_2" \ - "$test_data_repo/$read_2_name" + "$test_data_repo/$read_2_name" fi if [ ! -e "$dotsra" ]; then mkdir -p "$rna_seq_test_raw_dir" echo "Downloading $dotsra_name for Salmon tests." wget -q -O "$dotsra" \ - "$test_data_repo/$dotsra_name" + "$test_data_repo/$dotsra_name" fi fi if [ -z "$tag" ] || [ "$tag" = "affymetrix" ]; then - # Make sure CEL for test is downloaded from S3 + # Make sure CEL for test is downloaded from S3. cel_name="GSM1426071_CD_colon_active_1.CEL" cel_name2="GSM45588.CEL" cel_name3="GSM1364667_U_110208_7-02-10_S2.CEL" @@ -135,35 +137,35 @@ if [ -z "$tag" ] || [ "$tag" = "affymetrix" ]; then mkdir -p "$cel_test_raw_dir" echo "Downloading CEL for tests." wget -q -O "$cel_test_data_1" \ - "$test_data_repo/$cel_name" + "$test_data_repo/$cel_name" fi if [ ! -e "$cel_test_data_2" ]; then echo "Downloading Non-Brainarray CEL for tests." wget -q -O "$cel_test_data_2" \ - "$test_data_repo/$cel_name2" + "$test_data_repo/$cel_name2" fi if [ ! -e "$cel_test_data_3" ]; then echo "Downloading Huex Brain Array CEL for tests." wget -q -O "$cel_test_data_3" \ - "$test_data_repo/$cel_name3" + "$test_data_repo/$cel_name3" fi if [ ! -e "$pcl_test_data_1" ]; then mkdir -p "$pcl_test_dir" echo "Downloading pre-computed PCL for tests." wget -q -O "$pcl_test_data_1" \ - "$test_data_repo/$pcl_name" + "$test_data_repo/$pcl_name" fi if [ ! -e "$pcl_test_data_2" ]; then mkdir -p "$pcl_test_dir" echo "Downloading pre-computed Non-Brainarray PCL for tests." wget -q -O "$pcl_test_data_2" \ - "$test_data_repo/$pcl_name2" + "$test_data_repo/$pcl_name2" fi if [ ! -e "$pcl_test_data_3" ]; then mkdir -p "$pcl_test_dir" echo "Downloading pre-computed Huex Brain Array PCL for tests." wget -q -O "$pcl_test_data_3" \ - "$test_data_repo/$pcl_name3" + "$test_data_repo/$pcl_name3" fi fi @@ -176,14 +178,14 @@ if [ -z "$tag" ] || [ "$tag" = "transcriptome" ]; then mkdir -p "$tx_index_test_raw_dir" echo "Downloading fasta file for Transcriptome Index tests." wget -q -O "$tx_index_test_raw_dir/$fasta_file" \ - "$test_data_repo/$fasta_file" + "$test_data_repo/$fasta_file" fi gtf_file="aegilops_tauschii_short.gtf.gz" if [ ! -e "$tx_index_test_raw_dir/$gtf_file" ]; then mkdir -p "$tx_index_test_raw_dir" echo "Downloading gtf file for Transcriptome Index tests." wget -q -O "$tx_index_test_raw_dir/$gtf_file" \ - "$test_data_repo/$gtf_file" + "$test_data_repo/$gtf_file" fi tx_index_test_raw_dir2="$volume_directory/raw/TEST/TRANSCRIPTOME_INDEX/" gtf_file2="Homo_sapiens_testdata.gtf" @@ -191,7 +193,7 @@ if [ -z "$tag" ] || [ "$tag" = "transcriptome" ]; then mkdir -p "$tx_index_test_raw_dir2" echo "Downloading second gtf file for Transcriptome Index tests." wget -q -O "$tx_index_test_raw_dir2/$gtf_file2" \ - "$test_data_repo/$gtf_file2" + "$test_data_repo/$gtf_file2" fi fi @@ -210,18 +212,17 @@ GSE41355_non-normalized.txt GSE100301_non-normalized.txt' "$test_data_repo/$ilu_file" fi - i=$(( i + 1 )) + i=$((i + 1)) done unset i - ilu_test_ref_dir="$volume_directory/raw/TEST/ILLUMINA/reference" ilu_ref_file="Ad-Cre-2.AVG_Signal.tsv" if [ ! -e "$ilu_test_ref_dir/$ilu_ref_file" ]; then mkdir -p "$ilu_test_ref_dir" echo "Downloading Illumin reference file for Illumina tests." wget -q -O "$ilu_test_ref_dir/$ilu_ref_file" \ - "$test_data_repo/$ilu_ref_file" + "$test_data_repo/$ilu_ref_file" fi fi @@ -233,7 +234,7 @@ if [ -z "$tag" ] || [ "$tag" = "agilent" ]; then mkdir -p "$at_test_raw_dir" echo "Downloading Agilent file for A2C tests." wget -q -O "$at_test_raw_dir/$at_file" \ - "$test_data_repo/$at_file" + "$test_data_repo/$at_file" fi fi if [ -z "$tag" ] || [ "$tag" = "no_op" ]; then @@ -243,37 +244,37 @@ if [ -z "$tag" ] || [ "$tag" = "no_op" ]; then mkdir -p "$no_test_raw_dir" echo "Downloading NOOP file1." wget -q -O "$no_test_raw_dir/$no_file1" \ - "$test_data_repo/$no_file1" + "$test_data_repo/$no_file1" fi no_file2="GSM1234847_sample_table.txt" if [ ! -e "$no_test_raw_dir/$no_file2" ]; then mkdir -p "$no_test_raw_dir" echo "Downloading NOOP file2." wget -q -O "$no_test_raw_dir/$no_file2" \ - "$test_data_repo/$no_file2" + "$test_data_repo/$no_file2" fi no_file3="GSM1234847_sample_table_headerless.txt" if [ ! -e "$no_test_raw_dir/$no_file3" ]; then mkdir -p "$no_test_raw_dir" echo "Processing NOOP file3." - tail -n +2 "$no_test_raw_dir/$no_file2" > "$no_test_raw_dir/$no_file3" + tail -n +2 "$no_test_raw_dir/$no_file2" >"$no_test_raw_dir/$no_file3" fi no_file4="GSM1089291-tbl-1.txt" if [ ! -e "$no_test_raw_dir/$no_file4" ]; then mkdir -p "$no_test_raw_dir" echo "Downloading NOOP file4." wget -q -O "$no_test_raw_dir/$no_file4" \ - "$test_data_repo/$no_file4" + "$test_data_repo/$no_file4" fi no_file5="GSM1089291-tbl-1-modified.txt" if [ ! -e "$no_test_raw_dir/$no_file5" ]; then mkdir -p "$no_test_raw_dir" echo "Downloading NOOP file5." wget -q -O "$no_test_raw_dir/$no_file5" \ - "$test_data_repo/$no_file5" + "$test_data_repo/$no_file5" fi - # Reference files + # Reference files. no_test_exp_dir="$volume_directory/TEST/NO_OP/EXPECTED" no_test_exp_files='gene_converted_GSM557500-tbl-1.txt GSM269747.PCL gene_converted_GSM1234847-tbl-1.txt gene_converted_GSM1089291-tbl-1.txt' mkdir -p "$no_test_exp_dir" @@ -283,16 +284,16 @@ if [ -z "$tag" ] || [ "$tag" = "no_op" ]; then if ! [ -e "$no_test_exp_dir/$no_test_exp_file" ]; then echo "Downloading NOOP expected file$i." wget -O "$no_test_exp_dir/$no_test_exp_file" \ - "$test_data_repo/$no_test_exp_file" + "$test_data_repo/$no_test_exp_file" fi - i=$(( i + 1 )) + i=$((i + 1)) done unset i fi if [ -z "$tag" ] || [ "$tag" = "smasher" ] || [ "$tag" = "compendia" ]; then - # Make sure PCL for test is downloaded from S3 + # Make sure PCL for test is downloaded from S3. pcl_name="GSM1237810_T09-1084.PCL" pcl_name2="GSM1237812_S97-PURE.PCL" pcl_name3="GSM1238108-tbl-1.txt" @@ -334,101 +335,101 @@ if [ -z "$tag" ] || [ "$tag" = "smasher" ] || [ "$tag" = "compendia" ]; then mkdir -p "$pcl_test_raw_dir" echo "Downloading PCL for tests." wget -q -O "$pcl_test_data_1" \ - "$test_data_repo/$pcl_name" + "$test_data_repo/$pcl_name" fi if [ ! -e "$pcl_test_data_2" ]; then echo "Downloading PCL2 for tests." wget -q -O "$pcl_test_data_2" \ - "$test_data_repo/$pcl_name2" + "$test_data_repo/$pcl_name2" fi if [ ! -e "$pcl_test_data_3" ]; then echo "Downloading PCL3 for tests." wget -q -O "$pcl_test_data_3" \ - "$test_data_repo/$pcl_name3" + "$test_data_repo/$pcl_name3" fi if [ ! -e "$pcl_test_data_4" ]; then echo "Downloading PCL4 for tests." wget -q -O "$pcl_test_data_4" \ - "$test_data_repo/$pcl_name4" + "$test_data_repo/$pcl_name4" fi if [ ! -e "$pcl_test_data_5" ]; then echo "Downloading PCL5 for tests." wget -q -O "$pcl_test_data_5" \ - "$test_data_repo/$pcl_name5" + "$test_data_repo/$pcl_name5" fi if [ ! -e "$pcl_test_data_6" ]; then echo "Downloading PCL6 for tests." wget -q -O "$pcl_test_data_6" \ - "$test_data_repo/$pcl_name6" + "$test_data_repo/$pcl_name6" fi if [ ! -e "$pcl_test_data_7" ]; then echo "Downloading PCL7 for tests." wget -q -O "$pcl_test_data_7" \ - "$test_data_repo/$pcl_name7" + "$test_data_repo/$pcl_name7" fi if [ ! -e "$pcl_test_data_gs1" ]; then echo "Downloading PCLGS1 for tests." wget -q -O "$pcl_test_data_gs1" \ - "$test_data_repo/$pcl_name_gs1" + "$test_data_repo/$pcl_name_gs1" fi if [ ! -e "$pcl_test_data_gs2" ]; then echo "Downloading PCLGS2 for tests." wget -q -O "$pcl_test_data_gs2" \ - "$test_data_repo/$pcl_name_gs2" + "$test_data_repo/$pcl_name_gs2" fi if [ ! -e "$pcl_test_data_ts1" ]; then echo "Downloading PCLTS1 for tests." wget -q -O "$pcl_test_data_ts1" \ - "$test_data_repo/$pcl_name_ts1" + "$test_data_repo/$pcl_name_ts1" fi if [ ! -e "$pcl_test_data_ts2" ]; then echo "Downloading PCLTS2 for tests." wget -q -O "$pcl_test_data_ts2" \ - "$test_data_repo/$pcl_name_ts2" + "$test_data_repo/$pcl_name_ts2" fi if [ ! -e "$pcl_test_data_ta1" ]; then echo "Downloading PCLTA1 for tests." wget -q -O "$pcl_test_data_ta1" \ - "$test_data_repo/$pcl_name_ta1" + "$test_data_repo/$pcl_name_ta1" fi if [ ! -e "$bad_test_data_1" ]; then mkdir -p "$bad_test_raw_dir" echo "Downloading Bad PCL for tests." wget -q -O "$bad_test_data_1" \ - "$test_data_repo/$bad_name" + "$test_data_repo/$bad_name" fi if [ ! -e "$bad_test_data_2" ]; then mkdir -p "$bad_test_raw_dir" echo "Downloading Bad PCL for tests." wget -q -O "$bad_test_data_2" \ - "$test_data_repo/$bad_name2" + "$test_data_repo/$bad_name2" fi if [ ! -e "$bad_test_data_3" ]; then mkdir -p "$bad_test_raw_dir" echo "Downloading Bad PCL for tests." wget -q -O "$bad_test_data_3" \ - "$test_data_repo/$bad_name3" + "$test_data_repo/$bad_name3" fi if [ ! -e "$quant_test_data_1" ]; then mkdir -p "$quant_test_raw_dir" echo "Downloading Quant files for tests." wget -q -O "$quant_test_data_1" \ - "$test_data_repo/$quant_name" + "$test_data_repo/$quant_name" fi if [ ! -e "$quant_test_data_2" ]; then mkdir -p "$quant_test_raw_dir" echo "Downloading Quant files for tests." wget -q -O "$quant_test_data_2" \ - "$test_data_repo/$quant_name_2" + "$test_data_repo/$quant_name_2" fi # Mock out the AWS keys since we use VCR to mock out the request with these - # as the AWS credentials + # as the AWS credentials. export AWS_ACCESS_KEY_ID=XXX export AWS_SECRET_ACCESS_KEY=XXX fi if [ -z "$tag" ] || [ "$tag" = "qn" ]; then - # Make sure PCL for test is downloaded from S3 + # Make sure PCL for test is downloaded from S3. qn_name="1.tsv" qn_test_raw_dir="$volume_directory/QN" qn_test_data_1="$qn_test_raw_dir/$qn_name" @@ -436,7 +437,7 @@ if [ -z "$tag" ] || [ "$tag" = "qn" ]; then mkdir -p "$qn_test_raw_dir" echo "Downloading QN for tests." wget -q -O "$qn_test_data_1" \ - "$test_data_repo/$qn_name" + "$test_data_repo/$qn_name" fi qn_name="2.tsv" qn_test_raw_dir="$volume_directory/QN" @@ -445,7 +446,7 @@ if [ -z "$tag" ] || [ "$tag" = "qn" ]; then mkdir -p "$qn_test_raw_dir" echo "Downloading QN for tests." wget -q -O "$qn_test_data_2" \ - "$test_data_repo/$qn_name" + "$test_data_repo/$qn_name" fi qn_name="3.tsv" qn_test_raw_dir="$volume_directory/QN" @@ -454,7 +455,7 @@ if [ -z "$tag" ] || [ "$tag" = "qn" ]; then mkdir -p "$qn_test_raw_dir" echo "Downloading QN for tests." wget -q -O "$qn_test_data_3" \ - "$test_data_repo/$qn_name" + "$test_data_repo/$qn_name" fi qn_name="4.tsv" qn_test_raw_dir="$volume_directory/QN" @@ -463,7 +464,7 @@ if [ -z "$tag" ] || [ "$tag" = "qn" ]; then mkdir -p "$qn_test_raw_dir" echo "Downloading QN for tests." wget -q -O "$qn_test_data_4" \ - "$test_data_repo/$qn_name" + "$test_data_repo/$qn_name" fi qn_name="5.tsv" qn_test_raw_dir="$volume_directory/QN" @@ -472,7 +473,7 @@ if [ -z "$tag" ] || [ "$tag" = "qn" ]; then mkdir -p "$qn_test_raw_dir" echo "Downloading QN for tests." wget -q -O "$qn_test_data_5" \ - "$test_data_repo/$qn_name" + "$test_data_repo/$qn_name" fi qn_name="6.tsv" qn_test_raw_dir="$volume_directory/QN" @@ -481,7 +482,7 @@ if [ -z "$tag" ] || [ "$tag" = "qn" ]; then mkdir -p "$qn_test_raw_dir" echo "Downloading QN for tests." wget -q -O "$qn_test_data_6" \ - "$test_data_repo/$qn_name" + "$test_data_repo/$qn_name" fi qn_name="7.tsv" qn_test_raw_dir="$volume_directory/QN" @@ -490,7 +491,7 @@ if [ -z "$tag" ] || [ "$tag" = "qn" ]; then mkdir -p "$qn_test_raw_dir" echo "Downloading QN for tests." wget -q -O "$qn_test_data_7" \ - "$test_data_repo/$qn_name" + "$test_data_repo/$qn_name" fi fi if [ -z "$tag" ] || [ "$tag" = "compendia" ]; then @@ -522,7 +523,7 @@ if [ -z "$tag" ] || [ "$tag" = "compendia" ]; then mkdir -p "$qn_test_raw_dir" echo "Downloading QN for compendia tests." wget -q -O "$qn_test_data_1" \ - "$test_data_repo/$qn_name" + "$test_data_repo/$qn_name" fi fi @@ -533,47 +534,50 @@ DB_HOST_IP=$(get_docker_db_ip_address) chmod -R a+rwX "$volume_directory" worker_images="salmon transcriptome no_op downloaders smasher illumina agilent affymetrix qn affymetrix_local janitor compendia" - for image in $worker_images; do if [ -z "$tag" ] || [ "$tag" = "$image" ]; then if [ "$image" = "agilent" ] || [ "$image" = "affymetrix" ]; then - # Agilent uses the same docker image as Affymetrix - ./scripts/prepare_image.sh -p -i affymetrix -s workers - ./scripts/prepare_image.sh -i affymetrix_local -d ccdlstaging - docker tag ccdlstaging/dr_affymetrix_local:latest ccdlstaging/dr_affymetrix:latest - image_name=ccdlstaging/dr_affymetrix + # Agilent uses the same docker image as Affymetrix. + ./scripts/prepare_image.sh -d -i affymetrix -s workers + ./scripts/prepare_image.sh -i affymetrix_local -r ccdlstaging + docker tag "$DOCKERHUB_REPO/dr_affymetrix_local:latest" "$DOCKERHUB_REPO/dr_affymetrix:latest" + image_name="$DOCKERHUB_REPO/dr_affymetrix" elif [ "$tag" = "qn" ]; then ./scripts/prepare_image.sh -i smasher -s workers - image_name=ccdlstaging/dr_smasher + image_name="$DOCKERHUB_REPO/dr_smasher" elif [ "$tag" = "janitor" ]; then ./scripts/prepare_image.sh -i smasher -s workers - image_name=ccdlstaging/dr_smasher + image_name="$DOCKERHUB_REPO/dr_smasher" else ./scripts/prepare_image.sh -i "$image" -s workers - image_name=ccdlstaging/dr_$image + image_name="$DOCKERHUB_REPO/dr_$image" fi - # Strip out tag argument + # Strip out tag argument. # shellcheck disable=2001 args_without_tag="$(echo "$@" | sed "s/-t $tag//")" # shellcheck disable=2086 test_command="$(run_tests_with_coverage --tag="$image" $args_without_tag)" - # Only run interactively if we are on a TTY + # Only run interactively if we are on a TTY. if [ -t 1 ]; then - INTERACTIVE="-i" + INTERACTIVE="--interactive" fi echo "Running tests with the following command:" echo "$test_command" - docker run -t $INTERACTIVE \ - --add-host=database:"$DB_HOST_IP" \ - --env-file workers/environments/test \ - --env AWS_ACCESS_KEY_ID \ - --env AWS_SECRET_ACCESS_KEY \ - --memory=5G \ - --platform linux/amd64 \ - --volume "$volume_directory":/home/user/data_store \ - "$image_name" bash -c "$test_command" + # shellcheck disable=SC2086 + docker run \ + --add-host=database:"$DB_HOST_IP" \ + --env AWS_ACCESS_KEY_ID \ + --env AWS_SECRET_ACCESS_KEY \ + --env-file workers/environments/test \ + --memory=5G \ + --platform linux/amd64 \ + --tty \ + --volume "$volume_directory":/home/user/data_store \ + $INTERACTIVE \ + "$image_name" \ + bash -c "$test_command" fi done From 8656fd93c1ae811d8fe1623273e8a23eca62cde0 Mon Sep 17 00:00:00 2001 From: Arkadii Yakovets Date: Wed, 10 May 2023 12:49:44 -0700 Subject: [PATCH 124/220] Change default registry setting --- scripts/common.sh | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/scripts/common.sh b/scripts/common.sh index 07191400e..4f5f46bd9 100755 --- a/scripts/common.sh +++ b/scripts/common.sh @@ -5,8 +5,11 @@ export ALL_IMAGES="smasher compendia illumina affymetrix salmon transcriptome no_op downloaders foreman api" # Sometimes we only want to work with the worker images. export WORKER_IMAGES="smasher compendia illumina affymetrix salmon transcriptome no_op downloaders" + # Default Docker registry. -export DOCKERHUB_REPO="ccdlstaging" +if [ -z "$DOCKERHUB_REPO" ]; then + export DOCKERHUB_REPO="ccdlstaging" +fi get_docker_db_ip_address() { docker inspect -f '{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' drdb 2>/dev/null From 245ef73421c747e13df97efeefcddb181fea8021 Mon Sep 17 00:00:00 2001 From: Arkadii Yakovets Date: Wed, 10 May 2023 15:24:49 -0700 Subject: [PATCH 125/220] Update scripts --- .github/scripts/cleanup_instance.sh | 9 ++++++++- .github/scripts/filter_tests.sh | 6 +++--- .github/scripts/post_deploy_cleanup.sh | 3 ++- .github/scripts/pull_docker_images.sh | 2 +- .github/scripts/remote_deploy.sh | 9 ++++----- .github/scripts/run_terraform.sh | 12 +++++------ .github/scripts/slackpost_deploy.sh | 19 ++++++++--------- .github/scripts/slackpost_end_to_end.sh | 19 ++++++++--------- .github/scripts/update_docker_img.sh | 27 +++++++++++++------------ .github/scripts/upload_test_coverage.sh | 11 ++++------ scripts/prepare_image.sh | 23 ++++++++++++--------- scripts/update_my_docker_images.sh | 6 +++--- 12 files changed, 73 insertions(+), 73 deletions(-) diff --git a/.github/scripts/cleanup_instance.sh b/.github/scripts/cleanup_instance.sh index d270e1582..d359f6966 100755 --- a/.github/scripts/cleanup_instance.sh +++ b/.github/scripts/cleanup_instance.sh @@ -13,7 +13,14 @@ sudo apt-get remove -y '^ghc-8.*' sudo apt-get remove -y '^dotnet-.*' sudo apt-get remove -y '^llvm-.*' sudo apt-get remove -y 'php.*' -sudo apt-get remove -y azure-cli google-cloud-sdk hhvm google-chrome-stable firefox powershell mono-devel +sudo apt-get remove -y \ + azure-cli \ + firefox \ + google-chrome-stable \ + google-cloud-sdk \ + hhvm \ + mono-devel \ + powershell sudo apt-get autoremove -y sudo apt-get clean diff --git a/.github/scripts/filter_tests.sh b/.github/scripts/filter_tests.sh index fca0caec3..88a3dfff5 100755 --- a/.github/scripts/filter_tests.sh +++ b/.github/scripts/filter_tests.sh @@ -1,14 +1,14 @@ #!/bin/bash -# Exit on failure +# Exit on failure. set -e git log --format=oneline -n 1 "$GITHUB_SHA" if [[ $(git log --format=oneline -n 1 "$GITHUB_SHA") = *"noslow"* ]]; then - echo "Skipping slow tests.."; + echo "Skipping slow tests..." ./workers/run_tests.sh --exclude-tag=slow "$@" else - echo "Running all tests.."; + echo "Running all tests..." ./workers/run_tests.sh "$@" fi diff --git a/.github/scripts/post_deploy_cleanup.sh b/.github/scripts/post_deploy_cleanup.sh index 467cbc50e..9901a3b26 100755 --- a/.github/scripts/post_deploy_cleanup.sh +++ b/.github/scripts/post_deploy_cleanup.sh @@ -8,4 +8,5 @@ ssh -o StrictHostKeyChecking=no \ -o ServerAliveInterval=15 \ -i infrastructure/data-refinery-key.pem \ - ubuntu@"${DEPLOY_IP_ADDRESS}" "cd refinebio && git clean -f" + "ubuntu@${DEPLOY_IP_ADDRESS}" \ + "cd refinebio && git clean -f" diff --git a/.github/scripts/pull_docker_images.sh b/.github/scripts/pull_docker_images.sh index c691a0b41..4d59d04bd 100755 --- a/.github/scripts/pull_docker_images.sh +++ b/.github/scripts/pull_docker_images.sh @@ -10,6 +10,6 @@ fi for image in $IMAGES; do PACKAGE="$REPO/dr_$image" - # Only pull the package if it already exists + # Only pull the package if it already exists. (docker pull "$PACKAGE" && docker tag "$PACKAGE" "ccdlstaging/dr_$image") || true done diff --git a/.github/scripts/remote_deploy.sh b/.github/scripts/remote_deploy.sh index a22618b6b..c82697a7a 100755 --- a/.github/scripts/remote_deploy.sh +++ b/.github/scripts/remote_deploy.sh @@ -18,11 +18,10 @@ # - AWS_ACCESS_KEY_ID -- The AWS key id to use when interacting with AWS. # - AWS_SECRET_ACCESS_KEY -- The AWS secret key to use when interacting with AWS. - -echo "$INSTANCE_SSH_KEY" > infrastructure/data-refinery-key.pem +echo "$INSTANCE_SSH_KEY" >infrastructure/data-refinery-key.pem chmod 600 infrastructure/data-refinery-key.pem -run_on_deploy_box () { +run_on_deploy_box() { # shellcheck disable=SC2029 ssh -o StrictHostKeyChecking=no \ -o ServerAliveInterval=15 \ @@ -32,7 +31,7 @@ run_on_deploy_box () { # Create file containing local env vars that are needed for deploy. rm -f env_vars -cat >> env_vars <>env_vars < ~/refinebio/common/version +echo "$CI_TAG" >~/refinebio/common/version # Create ~/refinebio/common/dist/data-refinery-common-*.tar.gz, which is # required by the workers and data_refinery_foreman images. @@ -36,9 +36,10 @@ for IMAGE in $WORKER_IMAGES; do echo "Building docker image: $image_name:$CI_TAG" # Build and push image. We use the CI_TAG as the system version. docker build \ - -t "$image_name:$CI_TAG" \ - -f "workers/dockerfiles/Dockerfile.$IMAGE" \ - --build-arg SYSTEM_VERSION="$CI_TAG" . + --build-arg SYSTEM_VERSION="$CI_TAG" \ + --file "workers/dockerfiles/Dockerfile.$IMAGE" \ + --tag "$image_name:$CI_TAG" \ + . docker push "$image_name:$CI_TAG" # Update latest version. docker tag "$image_name:$CI_TAG" "$image_name:latest" @@ -56,10 +57,10 @@ if docker_img_exists "$FOREMAN_DOCKER_IMAGE" "$CI_TAG"; then else # Build and push image. We use the CI_TAG as the system version. docker build \ - --build-arg SYSTEM_VERSION="$CI_TAG" \ - --file foreman/dockerfiles/Dockerfile.foreman \ - --tag "$FOREMAN_DOCKER_IMAGE:$CI_TAG" \ - . + --build-arg SYSTEM_VERSION="$CI_TAG" \ + --file foreman/dockerfiles/Dockerfile.foreman \ + --tag "$FOREMAN_DOCKER_IMAGE:$CI_TAG" \ + . docker push "$FOREMAN_DOCKER_IMAGE:$CI_TAG" # Update latest version. docker tag "$FOREMAN_DOCKER_IMAGE:$CI_TAG" "$FOREMAN_DOCKER_IMAGE:latest" @@ -73,10 +74,10 @@ if docker_img_exists "$API_DOCKER_IMAGE" "$CI_TAG"; then else # Build and push image. We use the CI_TAG as the system version. docker build \ - --build-arg SYSTEM_VERSION="$CI_TAG" \ - --file api/dockerfiles/Dockerfile.api_production \ - --tag "$API_DOCKER_IMAGE:$CI_TAG" \ - . + --build-arg SYSTEM_VERSION="$CI_TAG" \ + --file api/dockerfiles/Dockerfile.api_production \ + --tag "$API_DOCKER_IMAGE:$CI_TAG" \ + . docker push "$API_DOCKER_IMAGE:$CI_TAG" # Update latest version. docker tag "$API_DOCKER_IMAGE:$CI_TAG" "$API_DOCKER_IMAGE:latest" diff --git a/.github/scripts/upload_test_coverage.sh b/.github/scripts/upload_test_coverage.sh index 44a009cee..12068f485 100755 --- a/.github/scripts/upload_test_coverage.sh +++ b/.github/scripts/upload_test_coverage.sh @@ -3,14 +3,12 @@ # Script to upload code coverage project=$1 -if [[ $project == "" ]] -then +if [[ $project == "" ]]; then echo "No project specified" exit 1 fi -if [[ $project == "workers" ]] -then +if [[ $project == "workers" ]]; then # the workers project uses it's own test_volume directory test_volume="workers/test_volume" else @@ -19,8 +17,7 @@ fi coverage_file="${test_volume}/coverage.xml" -if [[ ! -f $coverage_file ]] -then +if [[ ! -f $coverage_file ]]; then echo "Coverage file wasn't found, were the tests run before?" exit 0 # exit this script but don't fail the tests for this. fi @@ -30,7 +27,7 @@ output_file="${test_volume}/${project}_coverage.xml" # In the test coverage report, all file paths are relative to each project # folder. We need to be relative to the repo's root directory. That's why we # append the project folder name to each file path in coverage.xml -sed "s/filename=\"/filename=\"$project\//g" "$coverage_file" > "$output_file" +sed "s/filename=\"/filename=\"$project\//g" "$coverage_file" >"$output_file" # codecov.sh is located at https://codecov.io/bash # we downloaded it for convenience diff --git a/scripts/prepare_image.sh b/scripts/prepare_image.sh index 67f92e4d1..dddf9132d 100755 --- a/scripts/prepare_image.sh +++ b/scripts/prepare_image.sh @@ -100,6 +100,7 @@ fi # We want to check if a test image has been built for this branch. If # it has we should use that rather than building it slowly. DOCKER_IMAGE="$DOCKERHUB_REPO/dr_$IMAGE" + # shellcheck disable=SC2086 if [ "$(docker_img_exists $IMAGE_NAME $branch_name)" ]; then docker pull "$IMAGE_NAME:$branch_name" @@ -111,20 +112,21 @@ else echo "" echo "Rebuilding the $DOCKER_IMAGE image." - attempts=0 + attempt=0 + attempts=3 finished=1 - while [ $finished != 0 ] && [ $attempts -lt 3 ]; do + while [ $finished != 0 ] && [ $attempt -lt $attempts ]; do if [ $attempts -gt 0 ]; then echo "Failed to build $DOCKER_IMAGE, trying again." fi - CURRENT_IMAGE="$DOCKER_IMAGE:$SYSTEM_VERSION" - LATEST_IMAGE="$DOCKER_IMAGE:latest" if test "$GITHUB_ACTIONS"; then # Docker needs repositories to be lowercase. CACHE_REPO="$(echo "ghrc.io/$GITHUB_REPOSITORY" | tr '[:upper:]' '[:lower:]')" - LATEST_IMAGE="$CACHE_REPO/dr_$IMAGE" + CACHE_FROM_IMAGE="$CACHE_REPO/dr_$IMAGE" + else + CACHE_FROM_IMAGE=$DOCKER_IMAGE fi if test "$DOCKER_BUILDER"; then @@ -136,18 +138,19 @@ else --build-arg BUILDKIT_INLINE_CACHE=1 \ --build-arg DOCKERHUB_REPO="$DOCKERHUB_REPO" \ --build-arg SYSTEM_VERSION="$SYSTEM_VERSION" \ - --cache-from "$LATEST_IMAGE" \ - --cache-from="$CURRENT_IMAGE" \ + --cache-from "$CACHE_FROM_IMAGE:$SYSTEM_VERSION" \ + --cache-from "$CACHE_FROM_IMAGE:latest" \ --file "$SERVICE/dockerfiles/Dockerfile.$IMAGE" \ --platform linux/amd64 \ --tag "$DOCKER_IMAGE" \ . + finished=$? - attempts=$((attempts + 1)) + attempt=$((attempt + 1)) done - if [ $finished != 0 ] && [ $attempts -ge 3 ]; then - echo "Could not build $DOCKER_IMAGE after three attempts." + if [ $finished -ne 0 ] && [ $attempt -ge $attempts ]; then + echo "Could not build $DOCKER_IMAGE after $attempt attempts." exit 1 fi fi diff --git a/scripts/update_my_docker_images.sh b/scripts/update_my_docker_images.sh index d64d48694..f3ab3aea6 100755 --- a/scripts/update_my_docker_images.sh +++ b/scripts/update_my_docker_images.sh @@ -109,7 +109,7 @@ echo "$SYSTEM_VERSION" >common/version # required by the workers and data_refinery_foreman images. ## Remove old common distributions if they exist. rm -f common/dist/* -(cd common && python3 setup.py sdist) # Run in a subshell. +(cd common && python3 setup.py sdist 1>/dev/null) # Run quietly in a subshell. ARCH="$(uname -m)" @@ -146,8 +146,8 @@ for DOCKER_IMAGE in $DOCKER_IMAGES; do --build-arg BUILDKIT_INLINE_CACHE=1 \ --build-arg DOCKERHUB_REPO="$DOCKERHUB_REPO" \ --build-arg SYSTEM_VERSION="$SYSTEM_VERSION" \ - --cache-from="$IMAGE_NAME:$SYSTEM_VERSION" \ - --cache-from="$IMAGE_NAME:latest" \ + --cache-from "$IMAGE_NAME:$SYSTEM_VERSION" \ + --cache-from "$IMAGE_NAME:latest" \ --file "$DOCKER_FILE_PATH" \ --platform "linux/$SYSTEM_ARCH" \ --push \ From 1da019836048909cfa294fbc4effcbdb0f4906c3 Mon Sep 17 00:00:00 2001 From: Arkadii Yakovets Date: Fri, 12 May 2023 10:38:47 -0700 Subject: [PATCH 126/220] Update Github workflows config - Add common Dockerfile.base image job - Add dependencies: syntax check -> base image -> test jobs - Migrate to pre-commit actions - Add and title-case job/step names - Group and reorder jobs --- .github/workflows/config.yml | 415 ++++++++++++++++++++--------------- 1 file changed, 233 insertions(+), 182 deletions(-) diff --git a/.github/workflows/config.yml b/.github/workflows/config.yml index 94c906279..9a5b8a628 100644 --- a/.github/workflows/config.yml +++ b/.github/workflows/config.yml @@ -1,48 +1,47 @@ -name: test-and-deploy +name: refine.bio CI/CD on: push jobs: - syntax_test: - # ubuntu-latest is ubuntu 18.04 which has a really outdated version of shellcheck - runs-on: ubuntu-20.04 + # Code quality check jobs. + check_syntax: env: AWS_ACCESS_KEY_ID: ${{ secrets.AWS_ACCESS_KEY_ID }} AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_SECRET_ACCESS_KEY }} + name: Check Syntax + runs-on: ubuntu-latest steps: - uses: actions/checkout@v3 - + - uses: actions/setup-python@v3 - uses: hashicorp/setup-terraform@v2 with: terraform_version: 0.13.5 - - name: Install build & test dependencies - run: | - python -m pip install --upgrade pip - pip install pre-commit - - - name: Init terraform in the infrastructure folder for validation + - name: Init Terraform in the Infrastructure Folder for Validation run: cd infrastructure && TF_VAR_user=ci TF_VAR_stage=dev ./init_terraform.sh - - name: Init terraform in the AMI folder for validation + - name: Init Terraform in the AMI Folder for Validation run: cd ami && terraform init - - name: Run pre-commit hooks on all files - run: PATH="$PATH:$HOME/.local/bin" pre-commit run --all-files --show-diff-on-failure + - uses: pre-commit/action@v3.0.0 + # Test jobs. test_affy_agilent: - runs-on: ubuntu-latest env: - IMAGES: migrations affymetrix - DOCKER_BUILDKIT: 1 CODECOV_TOKEN: ${{ secrets.CODECOV_TOKEN }} + DOCKER_BUILDKIT: 1 + IMAGES: affymetrix migrations + name: Test Affymetrix and Agilent + needs: + - test_base + runs-on: ubuntu-latest steps: - uses: actions/checkout@v3 - - name: Free up space + - name: Free Up Space run: ./.github/scripts/cleanup_instance.sh - - name: Login to Packages Container registry + - name: Login to Packages Container Registry uses: docker/login-action@v2 with: registry: ghcr.io @@ -52,92 +51,128 @@ jobs: - name: Start Postgres run: ./scripts/run_postgres.sh - - name: Pause for initialization + - name: Pause for Initialization run: sleep 30 - - name: Install the database + - name: Install the Database run: ./scripts/install_db_docker.sh - - name: Update the models + - name: Update the Models run: | - sudo chmod -R a+wr common + sudo chmod -R a+rw common ./scripts/update_models.sh - - name: Run affymetrix tests + - name: Run Affymetrix Tests run: | sudo chmod -R a+rw workers/test_volume .github/scripts/filter_tests.sh -t affymetrix - - name: Run agilent tests + - name: Run Agilent Tests run: | sudo -E chown -R $USER:$USER workers/test_volume .github/scripts/filter_tests.sh -t agilent - # This runs downloader and NO_OP tests. - downloader_no_op_tests: - runs-on: ubuntu-latest + test_api: env: - # We have issues when downloading the no_op image, so for now let's just not pull it - # IMAGES: migrations api_local downloaders no_op foreman - IMAGES: migrations api_local downloaders foreman - DOCKER_BUILDKIT: 1 CODECOV_TOKEN: ${{ secrets.CODECOV_TOKEN }} + DOCKER_BUILDKIT: 1 + IMAGES: api_local migrations + name: Test API + runs-on: ubuntu-latest steps: - uses: actions/checkout@v3 - - name: Login to Packages Container registry + - name: Free Up Space + run: ./.github/scripts/cleanup_instance.sh + + - name: Login to Packages Container Registry uses: docker/login-action@v2 with: registry: ghcr.io username: ${{ github.actor }} password: ${{ secrets.GITHUB_TOKEN }} - - name: Pull cached docker images + - name: Pull Cached Docker Images run: ./.github/scripts/pull_docker_images.sh - name: Start Postgres run: ./scripts/run_postgres.sh - - name: Pause for initialization + - name: Start Elasticsearch + run: ./scripts/run_es.sh + + - name: Pause for Initialization run: sleep 30 - - name: Install the database + - name: Install the Database run: ./scripts/install_db_docker.sh - - name: Update the models + - name: Update the Models run: | - sudo chmod -R a+wr common + sudo chmod -R a+rw common ./scripts/update_models.sh - - name: Run downloader tests - run: | - .github/scripts/filter_tests.sh -t downloaders + - name: Rebuild the Elasticsearch Index + run: ./scripts/rebuild_es_index.sh - - name: Run NO_OP tests + - name: Run API Tests run: | - sudo -E chown -R $USER:$USER workers/test_volume - .github/scripts/filter_tests.sh -t no_op + mkdir -p test_volume + sudo chmod -R a+rw test_volume + ./api/run_tests.sh + .github/scripts/upload_test_coverage.sh api - test_api: - runs-on: ubuntu-latest + - name: Push Built Docker Images + run: ./.github/scripts/push_docker_images.sh + + test_base: env: - IMAGES: migrations api_local - DOCKER_BUILDKIT: 1 CODECOV_TOKEN: ${{ secrets.CODECOV_TOKEN }} + DOCKER_BUILDKIT: 1 + IMAGES: base + name: Test Base + needs: + - check_syntax + runs-on: ubuntu-latest steps: - uses: actions/checkout@v3 - - name: Free up space - run: ./.github/scripts/cleanup_instance.sh + - name: Login to Packages Container Registry + uses: docker/login-action@v2 + with: + registry: ghcr.io + username: ${{ github.actor }} + password: ${{ secrets.GITHUB_TOKEN }} + + - name: Pull Cached Docker Images + run: ./.github/scripts/pull_docker_images.sh + + - name: Build the Docker Image + run: ./scripts/prepare_image.sh -i base -s common + + - name: Push Built Docker Images + run: ./.github/scripts/push_docker_images.sh - - name: Login to Packages Container registry + test_common: + env: + CODECOV_TOKEN: ${{ secrets.CODECOV_TOKEN }} + DOCKER_BUILDKIT: 1 + IMAGES: common_tests migrations + name: Test Common + needs: + - test_base + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v3 + + - name: Login to Packages Container Registry uses: docker/login-action@v2 with: registry: ghcr.io username: ${{ github.actor }} password: ${{ secrets.GITHUB_TOKEN }} - - name: Pull cached docker images + - name: Pull Cached Docker Images run: ./.github/scripts/pull_docker_images.sh - name: Start Postgres @@ -146,99 +181,98 @@ jobs: - name: Start Elasticsearch run: ./scripts/run_es.sh - - name: Pause for initialization + - name: Pause for Initialization run: sleep 30 - - name: Install the database + - name: Install the Database run: ./scripts/install_db_docker.sh - - name: Update the models + - name: Update the Models run: | - sudo chmod -R a+wr common + sudo chmod -R a+rw common ./scripts/update_models.sh - - name: Rebuild the Elasticsearch index + - name: Rebuild the Elasticsearch Index run: ./scripts/rebuild_es_index.sh - - name: Run API tests + - name: Run Common Tests run: | - mkdir -p test_volume - sudo chmod -R a+rw test_volume - ./api/run_tests.sh - .github/scripts/upload_test_coverage.sh api + mkdir -p workers/test_volume + sudo chmod -R a+rw workers/test_volume + ./common/run_tests.sh + .github/scripts/upload_test_coverage.sh common - - name: Push built docker images + - name: Push Built Docker Images run: ./.github/scripts/push_docker_images.sh - test_common: - runs-on: ubuntu-latest + test_downloaders_no_op: env: - IMAGES: migrations common_tests - DOCKER_BUILDKIT: 1 CODECOV_TOKEN: ${{ secrets.CODECOV_TOKEN }} + DOCKER_BUILDKIT: 1 + IMAGES: api_local downloaders foreman migrations no_op + name: Test Downloaders and No-Op + needs: + - test_base + runs-on: ubuntu-latest steps: - uses: actions/checkout@v3 - - name: Login to Packages Container registry + - name: Login to Packages Container Registry uses: docker/login-action@v2 with: registry: ghcr.io username: ${{ github.actor }} password: ${{ secrets.GITHUB_TOKEN }} - - name: Pull cached docker images + - name: Pull Cached Docker Images run: ./.github/scripts/pull_docker_images.sh - name: Start Postgres run: ./scripts/run_postgres.sh - - name: Start Elasticsearch - run: ./scripts/run_es.sh - - - name: Pause for initialization + - name: Pause for Initialization run: sleep 30 - - name: Install the database + - name: Install the Database run: ./scripts/install_db_docker.sh - - name: Update the models + - name: Update the Models run: | - sudo chmod -R a+wr common + sudo chmod -R a+rw common ./scripts/update_models.sh - - name: Rebuild the Elasticsearch index - run: ./scripts/rebuild_es_index.sh - - - name: Run Common tests + - name: Run Downloader Tests run: | - mkdir -p workers/test_volume - sudo chmod -R a+rw workers/test_volume - ./common/run_tests.sh - .github/scripts/upload_test_coverage.sh common + .github/scripts/filter_tests.sh -t downloaders - - name: Push built docker images - run: ./.github/scripts/push_docker_images.sh + - name: Run No-Op Tests + run: | + sudo -E chown -R $USER:$USER workers/test_volume + .github/scripts/filter_tests.sh -t no_op test_foreman: - runs-on: ubuntu-latest env: - IMAGES: migrations foreman - DOCKER_BUILDKIT: 1 CODECOV_TOKEN: ${{ secrets.CODECOV_TOKEN }} + DOCKER_BUILDKIT: 1 + IMAGES: migrations foreman + name: Test Foreman + needs: + - test_base + runs-on: ubuntu-latest steps: - uses: actions/checkout@v3 - - name: Free up space + - name: Free Up Space run: ./.github/scripts/cleanup_instance.sh - - name: Login to Packages Container registry + - name: Login to Packages Container Registry uses: docker/login-action@v2 with: registry: ghcr.io username: ${{ github.actor }} password: ${{ secrets.GITHUB_TOKEN }} - - name: Pull cached docker images + - name: Pull Cached Docker Images run: ./.github/scripts/pull_docker_images.sh - name: Start Postgres @@ -247,243 +281,235 @@ jobs: - name: Start Elasticsearch run: ./scripts/run_es.sh - - name: Pause for initialization + - name: Pause for Initialization run: sleep 30 - - name: Install the database + - name: Install the Database run: ./scripts/install_db_docker.sh - - name: Update the models + - name: Update the Models run: | - sudo chmod -R a+wr common + sudo chmod -R a+rw common ./scripts/update_models.sh - - name: Rebuild the Elasticsearch index + - name: Rebuild the Elasticsearch Index run: ./scripts/rebuild_es_index.sh - - name: Run Foreman tests + - name: Run Foreman Tests run: | mkdir -p workers/test_volume sudo chmod -R a+rw workers/test_volume ./foreman/run_tests.sh --exclude-tag=end_to_end .github/scripts/upload_test_coverage.sh foreman - - name: Push built docker images + - name: Push Built Docker Images run: ./.github/scripts/push_docker_images.sh test_illumina: - runs-on: ubuntu-latest env: - IMAGES: migrations illumina - DOCKER_BUILDKIT: 1 CODECOV_TOKEN: ${{ secrets.CODECOV_TOKEN }} + DOCKER_BUILDKIT: 1 + IMAGES: illumina migrations + name: Test Illumina + needs: + - test_base + runs-on: ubuntu-latest steps: - uses: actions/checkout@v3 - - name: Login to Packages Container registry + - name: Login to Packages Container Registry uses: docker/login-action@v2 with: registry: ghcr.io username: ${{ github.actor }} password: ${{ secrets.GITHUB_TOKEN }} - - name: Pull cached docker images + - name: Pull Cached Docker Images run: ./.github/scripts/pull_docker_images.sh - name: Start Postgres run: ./scripts/run_postgres.sh - - name: Pause for initialization + - name: Pause for Initialization run: sleep 30 - - name: Install the database + - name: Install the Database run: ./scripts/install_db_docker.sh - - name: Update the models + - name: Update the Models run: | - sudo chmod -R a+wr common + sudo chmod -R a+rw common ./scripts/update_models.sh - - name: Run Illumina tests + - name: Run Illumina Tests run: | mkdir -p workers/test_volume sudo chmod -R a+rw workers/test_volume .github/scripts/filter_tests.sh -t illumina .github/scripts/upload_test_coverage.sh workers - - name: Push built docker images + - name: Push Built Docker Images run: ./.github/scripts/push_docker_images.sh test_salmon: - runs-on: ubuntu-latest env: - IMAGES: migrations salmon - DOCKER_BUILDKIT: 1 CODECOV_TOKEN: ${{ secrets.CODECOV_TOKEN }} + DOCKER_BUILDKIT: 1 + IMAGES: migrations salmon + name: Test Salmon + needs: + - test_base + runs-on: ubuntu-latest steps: - uses: actions/checkout@v3 - - name: Login to Packages Container registry + - name: Login to Packages Container Registry uses: docker/login-action@v2 with: registry: ghcr.io username: ${{ github.actor }} password: ${{ secrets.GITHUB_TOKEN }} - - name: Pull cached docker images + - name: Pull Cached Docker Images run: ./.github/scripts/pull_docker_images.sh - name: Start Postgres run: ./scripts/run_postgres.sh - - name: Pause for initialization + - name: Pause for Initialization run: sleep 30 - - name: Install the database + - name: Install the Database run: ./scripts/install_db_docker.sh - - name: Update the models + - name: Update the Models run: | - sudo chmod -R a+wr common + sudo chmod -R a+rw common ./scripts/update_models.sh - - name: Run Salmon tests + - name: Run Salmon Tests run: | sudo chmod -R a+rw workers/test_volume .github/scripts/filter_tests.sh -t salmon .github/scripts/upload_test_coverage.sh workers - - name: Push built docker images + - name: Push Built Docker Images run: ./.github/scripts/push_docker_images.sh test_smasher: - runs-on: ubuntu-latest env: - IMAGES: migrations smasher - DOCKER_BUILDKIT: 1 CODECOV_TOKEN: ${{ secrets.CODECOV_TOKEN }} + DOCKER_BUILDKIT: 1 + IMAGES: migrations smasher + name: Test Smasher + needs: + - test_base + runs-on: ubuntu-latest steps: - uses: actions/checkout@v3 - - name: Free up space + - name: Free Up Space run: ./.github/scripts/cleanup_instance.sh - - name: Login to Packages Container registry + - name: Login to Packages Container Registry uses: docker/login-action@v2 with: registry: ghcr.io username: ${{ github.actor }} password: ${{ secrets.GITHUB_TOKEN }} - - name: Pull cached docker images + - name: Pull Cached Docker Images run: ./.github/scripts/pull_docker_images.sh - name: Start Postgres run: ./scripts/run_postgres.sh - - name: Pause for initialization + - name: Pause for Initialization run: sleep 30 - - name: Install the database + - name: Install the Database run: ./scripts/install_db_docker.sh - - name: Update the models + - name: Update the Models run: | - sudo chmod -R a+wr common + sudo chmod -R a+rw common ./scripts/update_models.sh - - name: Run smasher tests + - name: Run Smasher Tests run: | mkdir -p workers/test_volume sudo chmod -R a+rw workers/test_volume .github/scripts/filter_tests.sh -t smasher .github/scripts/upload_test_coverage.sh workers - - name: Run janitor tests + - name: Run Janitor Tests run: | sudo -E chown -R $USER:$USER workers/test_volume .github/scripts/filter_tests.sh -t janitor .github/scripts/upload_test_coverage.sh workers - - name: Run compendia tests + - name: Run Compendia Tests run: | sudo -E chown -R $USER:$USER workers/test_volume .github/scripts/filter_tests.sh -t compendia .github/scripts/upload_test_coverage.sh workers - - name: Run QN tests + - name: Run QN Tests run: | sudo -E chown -R $USER:$USER workers/test_volume .github/scripts/filter_tests.sh -t qn .github/scripts/upload_test_coverage.sh workers - - name: Push built docker images + - name: Push Built Docker Images run: ./.github/scripts/push_docker_images.sh test_transcriptome: - runs-on: ubuntu-latest env: - IMAGES: migrations transcriptome - DOCKER_BUILDKIT: 1 CODECOV_TOKEN: ${{ secrets.CODECOV_TOKEN }} + DOCKER_BUILDKIT: 1 + IMAGES: migrations transcriptome + name: Test Transcriptome + needs: + - test_base + runs-on: ubuntu-latest steps: - uses: actions/checkout@v3 - - name: Login to Packages Container registry + - name: Login to Packages Container Registry uses: docker/login-action@v2 with: registry: ghcr.io username: ${{ github.actor }} password: ${{ secrets.GITHUB_TOKEN }} - - name: Pull cached docker images + - name: Pull Cached Docker Images run: ./.github/scripts/pull_docker_images.sh - name: Start Postgres run: ./scripts/run_postgres.sh - - name: Pause for initialization + - name: Pause for Initialization run: sleep 30 - - name: Install the database + - name: Install the Database run: ./scripts/install_db_docker.sh - - name: Update the models + - name: Update the Models run: | - sudo chmod -R a+wr common + sudo chmod -R a+rw common ./scripts/update_models.sh - - name: Run Transcriptome tests + - name: Run Transcriptome Tests run: | mkdir -p workers/test_volume sudo chmod -R a+rw workers/test_volume .github/scripts/filter_tests.sh -t transcriptome .github/scripts/upload_test_coverage.sh workers - - name: Push built docker images + - name: Push Built Docker Images run: ./.github/scripts/push_docker_images.sh - determine_branch: - # As far as I can tell, this is the only way to use the output of - # a script in a github conditional. - if: startsWith(github.ref, 'refs/tags/v') - runs-on: ubuntu-latest - outputs: - branch: ${{ steps.set_branch.outputs.branch }} - steps: - - uses: actions/checkout@v3 - with: - fetch-depth: 0 - - - id: set_branch - name: Set the $CI_TAG environment variable - run: | - source scripts/common.sh - echo "branch=$(get_master_or_dev ${GITHUB_REF#refs/tags/})" >> $GITHUB_OUTPUT - + # Deploy jobs. deploy: - if: startsWith(github.ref, 'refs/tags/v') && ! endsWith(github.ref, '-hotfix') - runs-on: ubuntu-latest - timeout-minutes: 1440 env: DEPLOY_IP_ADDRESS: ${{ secrets.DEPLOY_IP_ADDRESS }} DOCKER_ID: ${{ secrets.DOCKER_ID }} @@ -502,31 +528,35 @@ jobs: PROD_DJANGO_SECRET_KEY: ${{ secrets.PROD_DJANGO_SECRET_KEY }} PROD_RAVEN_DSN: ${{ secrets.PROD_RAVEN_DSN }} PROD_RAVEN_DSN_API: ${{ secrets.PROD_RAVEN_DSN_API }} + if: startsWith(github.ref, 'refs/tags/v') && ! endsWith(github.ref, '-hotfix') + name: Deploy needs: + - check_syntax - determine_branch - - downloader_no_op_tests - - syntax_test - test_affy_agilent - test_api + - test_base - test_common + - test_downloaders_no_op - test_foreman - test_illumina - test_salmon - test_smasher - test_transcriptome + runs-on: ubuntu-latest steps: - uses: actions/checkout@v3 with: fetch-depth: 0 - - name: Set the $MASTER_OR_DEV and $CI_TAG environment variables + - name: Set the $MASTER_OR_DEV and $CI_TAG Environment Variables run: | source scripts/common.sh echo "MASTER_OR_DEV=$(get_master_or_dev ${GITHUB_REF#refs/tags/})" >> $GITHUB_ENV # Remove /ref/tags/ from the beginning of the tag name echo "CI_TAG=${GITHUB_REF#refs/tags/}" >> $GITHUB_ENV - - name: Set staging specific environment variables + - name: Set Staging Specific Environment Variables if: ${{needs.determine_branch.outputs.branch == 'dev'}} run: | echo "DATABASE_PASSWORD=${STAGING_DATABASE_PASSWORD}" >> $GITHUB_ENV @@ -536,7 +566,7 @@ jobs: # Staging doesn't notify the engagementbot, so overwrite this to be blank. echo "ENGAGEMENTBOT_WEBHOOK=" >> $GITHUB_ENV - - name: Set prod specific environment variables + - name: Set Production Specific Environment Variables if: ${{needs.determine_branch.outputs.branch == 'master'}} run: | echo "DATABASE_PASSWORD=${PROD_DATABASE_PASSWORD}" >> $GITHUB_ENV @@ -548,13 +578,11 @@ jobs: - name: Deploy run: ./.github/scripts/remote_deploy.sh - - name: Cleanup deploy + - name: Cleanup Deploy run: ./.github/scripts/post_deploy_cleanup.sh - - hotfix_deploy: - if: startsWith(github.ref, 'refs/tags/v') && endsWith(github.ref, '-hotfix') - runs-on: ubuntu-latest timeout-minutes: 1440 + + deploy_hotfix: env: DEPLOY_IP_ADDRESS: ${{ secrets.DEPLOY_IP_ADDRESS }} DOCKER_ID: ${{ secrets.DOCKER_ID }} @@ -573,21 +601,24 @@ jobs: PROD_DJANGO_SECRET_KEY: ${{ secrets.PROD_DJANGO_SECRET_KEY }} PROD_RAVEN_DSN: ${{ secrets.PROD_RAVEN_DSN }} PROD_RAVEN_DSN_API: ${{ secrets.PROD_RAVEN_DSN_API }} + if: startsWith(github.ref, 'refs/tags/v') && endsWith(github.ref, '-hotfix') + name: Deploy Hotfix needs: - determine_branch + runs-on: ubuntu-latest steps: - uses: actions/checkout@v3 with: fetch-depth: 0 - - name: Set the $MASTER_OR_DEV and $CI_TAG environment variables + - name: Set the $MASTER_OR_DEV and $CI_TAG Environment Variables run: | source scripts/common.sh echo "MASTER_OR_DEV=$(get_master_or_dev ${GITHUB_REF#refs/tags/})" >> $GITHUB_ENV # Remove /ref/tags/ from the beginning of the tag name echo "CI_TAG=${GITHUB_REF#refs/tags/}" >> $GITHUB_ENV - - name: Set staging specific environment variables + - name: Set Staging Specific Environment Variables if: ${{needs.determine_branch.outputs.branch == 'dev'}} run: | echo "DATABASE_PASSWORD=${STAGING_DATABASE_PASSWORD}" >> $GITHUB_ENV @@ -597,7 +628,7 @@ jobs: # Staging doesn't notify the engagementbot, so overwrite this to be blank. echo "ENGAGEMENTBOT_WEBHOOK=" >> $GITHUB_ENV - - name: Set prod specific environment variables + - name: Set Production Specific Environment Variables if: ${{needs.determine_branch.outputs.branch == 'master'}} run: | echo "DATABASE_PASSWORD=${PROD_DATABASE_PASSWORD}" >> $GITHUB_ENV @@ -609,5 +640,25 @@ jobs: - name: Deploy run: ./.github/scripts/remote_deploy.sh - - name: Cleanup deploy + - name: Cleanup Deploy run: ./.github/scripts/post_deploy_cleanup.sh + timeout-minutes: 1440 + + determine_branch: + # As far as I can tell, this is the only way to use the output of + # a script in a github conditional. + if: startsWith(github.ref, 'refs/tags/v') + name: Determene Branch + runs-on: ubuntu-latest + outputs: + branch: ${{ steps.set_branch.outputs.branch }} + steps: + - uses: actions/checkout@v3 + with: + fetch-depth: 0 + + - id: set_branch + name: Set the $CI_TAG Environment Variable + run: | + source scripts/common.sh + echo "branch=$(get_master_or_dev ${GITHUB_REF#refs/tags/})" >> $GITHUB_OUTPUT From 8c705894c00d2f71f906c686e3d8ae4d8562c392 Mon Sep 17 00:00:00 2001 From: Arkadii Yakovets Date: Fri, 12 May 2023 10:58:48 -0700 Subject: [PATCH 127/220] Fix GHCR URL typo --- scripts/prepare_image.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/scripts/prepare_image.sh b/scripts/prepare_image.sh index e791ce589..81975da90 100755 --- a/scripts/prepare_image.sh +++ b/scripts/prepare_image.sh @@ -104,7 +104,7 @@ else if test "$GITHUB_ACTIONS"; then # docker needs repositories to be lowercase - CACHE_REPO="$(echo "ghrc.io/$GITHUB_REPOSITORY" | tr '[:upper:]' '[:lower:]')" + CACHE_REPO="$(echo "ghcr.io/$GITHUB_REPOSITORY" | tr '[:upper:]' '[:lower:]')" CACHED_PACKAGE="$CACHE_REPO/dr_$image" CACHE="--build-arg BUILDKIT_INLINE_CACHE=1 --cache-from $CACHED_PACKAGE" fi From 05b00c5f76ab1cfce7fbb7048dfd26a2c315516d Mon Sep 17 00:00:00 2001 From: David Mejia Date: Wed, 17 May 2023 14:44:06 -0400 Subject: [PATCH 128/220] response changed, update cassettes --- ....sra.arrayexpress_alternate_accession.yaml | 4364 ++++----------- ...or.sra.metadata_is_gathered_correctly.yaml | 134 +- .../cassettes/surveyor.sra.srp_survey.yaml | 4824 +++++------------ .../surveyor.sra.survey_nonexistant.yaml | 6 +- .../surveyor.sra.survey_unmated_reads.yaml | 1890 ++----- 5 files changed, 3018 insertions(+), 8200 deletions(-) diff --git a/test_volume/cassettes/surveyor.sra.arrayexpress_alternate_accession.yaml b/test_volume/cassettes/surveyor.sra.arrayexpress_alternate_accession.yaml index 7301c90d8..601df41e1 100644 --- a/test_volume/cassettes/surveyor.sra.arrayexpress_alternate_accession.yaml +++ b/test_volume/cassettes/surveyor.sra.arrayexpress_alternate_accession.yaml @@ -9,7 +9,7 @@ interactions: Connection: - keep-alive User-Agent: - - python-requests/2.25.1 + - python-requests/2.30.0 method: GET uri: https://www.ebi.ac.uk/ena/browser/api/xml/ERP108370 response: @@ -69,7 +69,7 @@ interactions: Content-Type: - application/xml Date: - - Wed, 28 Jul 2021 19:40:58 GMT + - Wed, 17 May 2023 18:35:36 GMT Strict-Transport-Security: - max-age=0 Transfer-Encoding: @@ -87,7 +87,7 @@ interactions: Connection: - keep-alive User-Agent: - - python-requests/2.25.1 + - python-requests/2.30.0 method: GET uri: https://www.ebi.ac.uk/ena/browser/api/xml/ERR2534072 response: @@ -128,7 +128,7 @@ interactions: Content-Type: - application/xml Date: - - Wed, 28 Jul 2021 19:40:58 GMT + - Wed, 17 May 2023 18:35:36 GMT Strict-Transport-Security: - max-age=0 Transfer-Encoding: @@ -146,7 +146,7 @@ interactions: Connection: - keep-alive User-Agent: - - python-requests/2.25.1 + - python-requests/2.30.0 method: GET uri: https://www.ebi.ac.uk/ena/browser/api/xml/ERX2552493 response: @@ -210,7 +210,7 @@ interactions: Content-Type: - application/xml Date: - - Wed, 28 Jul 2021 19:40:59 GMT + - Wed, 17 May 2023 18:35:37 GMT Strict-Transport-Security: - max-age=0 Transfer-Encoding: @@ -228,63 +228,51 @@ interactions: Connection: - keep-alive User-Agent: - - python-requests/2.25.1 + - python-requests/2.30.0 method: GET uri: https://www.ebi.ac.uk/ena/browser/api/xml/ERS2428787 response: body: string: "\n\n\n \n ERS2428787\n - \ SAMEA4608091\n + alias=\"E-MTAB-6681:G144_KO8_RNAseq_DMSO1\" center_name=\"BRIC - Biotech Research + and Innovation Centre\" broker_name=\"ArrayExpress\">\n \n + \ ERS2428787\n SAMEA4608091\n \ E-MTAB-6681:G144_KO8_RNAseq_DMSO1\n \n \ G144_KO8_RNAseq_DMSO1\n \n 9606\n \ Homo sapiens\n human\n \ \n Protocols: CRISPR mediated KO of CIC: sgRNAs (Target sequence: mESCs: GCCTTCATGATCTTCAGCAAG; G144: GGGCGAGTGGTGGTATGCCC) - \ were cloned into pSpCas9(BB)-2A-GFP (Addgene 48138) and transfected into - mESCs (Lipofectamine 2000) or G144 cells (Amaxa Nucleofector II, Program A033). + were cloned into pSpCas9(BB)-2A-GFP (Addgene 48138) and transfected into mESCs + (Lipofectamine 2000) or G144 cells (Amaxa Nucleofector II, Program A033). GFP-positive cells were single cell sorted 48h post-transfection, expanded and screened by immunoblotting for CIC deletion. Inhibitor treatment with 1 \u03BCM MEK inhibitor (PD0325901) was performed in 80% confluent cultures for 4 and 24 h respectively. DMSO was used as mock control. Cells were washed - once with PBS, lysed directly in RLT buffer (Qiagen). Total RNA was extracted - using the RNAeasy kit (Qiagen). 500 ng of total RNA was used for library - preparation using TruSeq RNA Library Prep Kit v2 (Illumina) according to manufacturer - recommendations.\n \n \n - \ \n ENA-STUDY\n ERP108370\n - \ \n \n \n - \ \n ENA-EXPERIMENT\n - \ ERX2552493\n \n \n - \ \n \n ENA-RUN\n - \ ERR2534072\n \n \n - \ \n \n ENA-SUBMISSION\n - \ ERA1350207\n \n \n - \ \n \n ENA-FASTQ-FILES\n - \ \n - \ \n \n \n - \ \n ENA-SUBMITTED-FILES\n - \ \n - \ \n \n \n - \ \n \n isolate\n - \ not applicable\n \n - \ \n organism\n Homo - sapiens\n \n \n - \ organism part\n brain\n - \ \n \n cell_type\n - \ glial cell\n \n - \ \n cell_line\n G144\n + once with PBS, lysed directly in RLT buffer (Qiagen). Total RNA was extracted + using the RNAeasy kit (Qiagen). 500 ng of total RNA was used for library preparation + using TruSeq RNA Library Prep Kit v2 (Illumina) according to manufacturer + recommendations.\n \n \n \n + \ ENA-FASTQ-FILES\n \n + \ \n \n \n \n + \ ENA-SUBMITTED-FILES\n \n + \ \n \n\n\n + \ \n ENA-CHECKLIST\n ERC000011\n \ \n \n disease\n \ glioblastoma multiforme\n \n - \ \n genotype\n CRISPR/Cas9 - mediated knockout of CIC\n \n \n - \ individual\n clonal line #8\n - \ \n \n ENA-CHECKLIST\n - \ ERC000011\n \n \n - \ ENA-SPOT-COUNT\n 26844500\n - \ \n \n ENA-BASE-COUNT\n - \ 2027143150\n \n + \ \n individual\n clonal + line #8\n \n \n + \ organism\n Homo sapiens\n + \ \n \n organism\n + \ Homo sapiens\n \n + \ \n cell type\n glial + cell\n \n \n + \ common name\n human\n + \ \n \n organism + part\n brain\n \n + \ \n cell line\n G144\n + \ \n \n genotype\n + \ CRISPR/Cas9 mediated knockout of CIC\n \n \ \n ENA-FIRST-PUBLIC\n \ 2018-05-30\n \n \ \n ENA-LAST-UPDATE\n @@ -294,7 +282,7 @@ interactions: Content-Type: - application/xml Date: - - Wed, 28 Jul 2021 19:40:59 GMT + - Wed, 17 May 2023 18:35:38 GMT Strict-Transport-Security: - max-age=0 Transfer-Encoding: @@ -312,7 +300,7 @@ interactions: Connection: - keep-alive User-Agent: - - python-requests/2.25.1 + - python-requests/2.30.0 method: GET uri: https://www.ebi.ac.uk/ena/browser/api/xml/ERP108370 response: @@ -372,7 +360,7 @@ interactions: Content-Type: - application/xml Date: - - Wed, 28 Jul 2021 19:41:00 GMT + - Wed, 17 May 2023 18:35:38 GMT Strict-Transport-Security: - max-age=0 Transfer-Encoding: @@ -390,7 +378,7 @@ interactions: Connection: - keep-alive User-Agent: - - python-requests/2.25.1 + - python-requests/2.30.0 method: GET uri: https://www.ebi.ac.uk/ena/browser/api/xml/ERA1350207 response: @@ -426,7 +414,7 @@ interactions: Content-Type: - application/xml Date: - - Wed, 28 Jul 2021 19:41:00 GMT + - Wed, 17 May 2023 18:35:39 GMT Strict-Transport-Security: - max-age=0 Transfer-Encoding: @@ -434,68 +422,6 @@ interactions: status: code: 200 message: '' -- request: - body: acc=ERR2534072&accept-proto=fasp&version=2.0 - headers: - Accept: - - '*/*' - Accept-Encoding: - - gzip, deflate - Connection: - - keep-alive - Content-Length: - - '44' - User-Agent: - - python-requests/2.25.1 - method: POST - uri: https://www.ncbi.nlm.nih.gov/Traces/names/names.cgi - response: - body: - string: !!binary | - H4sIAAAAAAAAAwzIsQrCMBAA0L1fEXDoVLm7pk3S3VkoTm7JNaVKMKGNiHAfr298JzpDc+y+vINc - 5pmGXoMhsW4gHIGsEKDtwHTgbojTgJN2d+Ex+oDWWeo1MRheYk/Ijldn/IJBRDSAXF/pq9qt1nK0 - quy5Zs5JPQ7lU8qfuKg176pu/8jhGbk2PwAAAP//AwCDIi4MjgAAAA== - headers: - Cache-Control: - - private - Connection: - - Keep-Alive - Content-Encoding: - - gzip - Content-Security-Policy: - - upgrade-insecure-requests - Content-Type: - - text/plain - Date: - - Wed, 28 Jul 2021 19:41:01 GMT - Keep-Alive: - - timeout=1, max=10 - NCBI-PHID: - - CC95EE27101B2CD10000000000000001.m_1 - NCBI-SID: - - CC95EE27101B2CD1_0000SID - Referrer-Policy: - - origin-when-cross-origin - Server: - - Apache - Set-Cookie: - - ncbi_sid=CC95EE27101B2CD1_0000SID; domain=.nih.gov; path=/; expires=Thu, 28 - Jul 2022 19:41:01 GMT - SraNameServerOutputVersion: - - '2.0' - Strict-Transport-Security: - - max-age=31536000; includeSubDomains; preload - Transfer-Encoding: - - chunked - Vary: - - Accept-Encoding - X-UA-Compatible: - - IE=Edge - X-XSS-Protection: - - 1; mode=block - status: - code: 200 - message: OK - request: body: null headers: @@ -506,29 +432,27 @@ interactions: Connection: - keep-alive User-Agent: - - python-requests/2.25.1 + - python-requests/2.30.0 method: GET uri: https://www.ebi.ac.uk/ena/portal/api/filereport?accession=ERR2534072&result=read_run response: body: - string: "run_accession\tfastq_ftp\tfastq_bytes\tfastq_md5\tsubmitted_ftp\tsubmitted_bytes\tsubmitted_md5\tsra_ftp\tsra_bytes\tsra_md5\nERR2534072\tftp.sra.ebi.ac.uk/vol1/fastq/ERR253/002/ERR2534072/ERR2534072.fastq.gz\t1342496804\t060aa7646a7caa6b7db9e9b5126efd99\tftp.sra.ebi.ac.uk/vol1/run/ERR253/ERR2534072/G144_KO8_RNAseq_DMSO1.fastq.gz\t1397343408\t6f75b7add12efbe0413473419ed2f51b\t\t\t\n" + string: "run_accession\tfastq_ftp\tfastq_bytes\tfastq_md5\tbam_ftp\tbam_bytes\tbam_md5\tsubmitted_ftp\tsubmitted_bytes\tsubmitted_md5\tsra_ftp\tsra_bytes\tsra_md5\nERR2534072\tftp.sra.ebi.ac.uk/vol1/fastq/ERR253/002/ERR2534072/ERR2534072.fastq.gz\t1342496804\t060aa7646a7caa6b7db9e9b5126efd99\t\t\t\tftp.sra.ebi.ac.uk/vol1/run/ERR253/ERR2534072/G144_KO8_RNAseq_DMSO1.fastq.gz\t1397343408\t6f75b7add12efbe0413473419ed2f51b\tftp.sra.ebi.ac.uk/vol1/err/ERR253/002/ERR2534072\t895216008\t2ecc0c89596bcf20c7c1f8e77ab3d9f5\n" headers: Cache-Control: - no-cache, no-store, max-age=0, must-revalidate + Content-Length: + - '483' Content-Type: - text/plain Date: - - Wed, 28 Jul 2021 19:41:02 GMT + - Wed, 17 May 2023 18:35:39 GMT Expires: - '0' Pragma: - no-cache - Server: - - Apache-Coyote/1.1 Strict-Transport-Security: - max-age=0 - Transfer-Encoding: - - chunked X-Content-Type-Options: - nosniff X-Frame-Options: @@ -537,7 +461,7 @@ interactions: - 1; mode=block status: code: 200 - message: OK + message: '' - request: body: null headers: @@ -548,7 +472,7 @@ interactions: Connection: - keep-alive User-Agent: - - python-requests/2.25.1 + - python-requests/2.30.0 method: GET uri: https://www.ebi.ac.uk/ena/browser/api/xml/ERR2534073 response: @@ -589,7 +513,7 @@ interactions: Content-Type: - application/xml Date: - - Wed, 28 Jul 2021 19:41:03 GMT + - Wed, 17 May 2023 18:35:40 GMT Strict-Transport-Security: - max-age=0 Transfer-Encoding: @@ -607,7 +531,7 @@ interactions: Connection: - keep-alive User-Agent: - - python-requests/2.25.1 + - python-requests/2.30.0 method: GET uri: https://www.ebi.ac.uk/ena/browser/api/xml/ERX2552494 response: @@ -671,7 +595,7 @@ interactions: Content-Type: - application/xml Date: - - Wed, 28 Jul 2021 19:41:03 GMT + - Wed, 17 May 2023 18:35:40 GMT Strict-Transport-Security: - max-age=0 Transfer-Encoding: @@ -689,63 +613,51 @@ interactions: Connection: - keep-alive User-Agent: - - python-requests/2.25.1 + - python-requests/2.30.0 method: GET uri: https://www.ebi.ac.uk/ena/browser/api/xml/ERS2428788 response: body: string: "\n\n\n \n ERS2428788\n - \ SAMEA4608092\n + alias=\"E-MTAB-6681:G144_KO8_RNAseq_DMSO2\" center_name=\"BRIC - Biotech Research + and Innovation Centre\" broker_name=\"ArrayExpress\">\n \n + \ ERS2428788\n SAMEA4608092\n \ E-MTAB-6681:G144_KO8_RNAseq_DMSO2\n \n \ G144_KO8_RNAseq_DMSO2\n \n 9606\n \ Homo sapiens\n human\n \ \n Protocols: CRISPR mediated KO of CIC: sgRNAs (Target sequence: mESCs: GCCTTCATGATCTTCAGCAAG; G144: GGGCGAGTGGTGGTATGCCC) - \ were cloned into pSpCas9(BB)-2A-GFP (Addgene 48138) and transfected into - mESCs (Lipofectamine 2000) or G144 cells (Amaxa Nucleofector II, Program A033). + were cloned into pSpCas9(BB)-2A-GFP (Addgene 48138) and transfected into mESCs + (Lipofectamine 2000) or G144 cells (Amaxa Nucleofector II, Program A033). GFP-positive cells were single cell sorted 48h post-transfection, expanded and screened by immunoblotting for CIC deletion. Inhibitor treatment with 1 \u03BCM MEK inhibitor (PD0325901) was performed in 80% confluent cultures for 4 and 24 h respectively. DMSO was used as mock control. Cells were washed - once with PBS, lysed directly in RLT buffer (Qiagen). Total RNA was extracted - using the RNAeasy kit (Qiagen). 500 ng of total RNA was used for library - preparation using TruSeq RNA Library Prep Kit v2 (Illumina) according to manufacturer - recommendations.\n \n \n - \ \n ENA-STUDY\n ERP108370\n - \ \n \n \n - \ \n ENA-EXPERIMENT\n - \ ERX2552494\n \n \n - \ \n \n ENA-RUN\n - \ ERR2534073\n \n \n - \ \n \n ENA-SUBMISSION\n - \ ERA1350207\n \n \n - \ \n \n ENA-FASTQ-FILES\n - \ \n - \ \n \n \n - \ \n ENA-SUBMITTED-FILES\n - \ \n - \ \n \n \n - \ \n \n isolate\n - \ not applicable\n \n - \ \n organism\n Homo - sapiens\n \n \n - \ organism part\n brain\n - \ \n \n cell_type\n - \ glial cell\n \n - \ \n cell_line\n G144\n + once with PBS, lysed directly in RLT buffer (Qiagen). Total RNA was extracted + using the RNAeasy kit (Qiagen). 500 ng of total RNA was used for library preparation + using TruSeq RNA Library Prep Kit v2 (Illumina) according to manufacturer + recommendations.\n \n \n \n + \ ENA-FASTQ-FILES\n \n + \ \n \n \n \n + \ ENA-SUBMITTED-FILES\n \n + \ \n \n\n\n + \ \n ENA-CHECKLIST\n ERC000011\n \ \n \n disease\n \ glioblastoma multiforme\n \n - \ \n genotype\n CRISPR/Cas9 - mediated knockout of CIC\n \n \n - \ individual\n clonal line #8\n - \ \n \n ENA-CHECKLIST\n - \ ERC000011\n \n \n - \ ENA-SPOT-COUNT\n 23128792\n - \ \n \n ENA-BASE-COUNT\n - \ 1746472850\n \n + \ \n individual\n clonal + line #8\n \n \n + \ organism\n Homo sapiens\n + \ \n \n organism\n + \ Homo sapiens\n \n + \ \n cell type\n glial + cell\n \n \n + \ common name\n human\n + \ \n \n organism + part\n brain\n \n + \ \n cell line\n G144\n + \ \n \n genotype\n + \ CRISPR/Cas9 mediated knockout of CIC\n \n \ \n ENA-FIRST-PUBLIC\n \ 2018-05-30\n \n \ \n ENA-LAST-UPDATE\n @@ -755,7 +667,7 @@ interactions: Content-Type: - application/xml Date: - - Wed, 28 Jul 2021 19:41:04 GMT + - Wed, 17 May 2023 18:35:40 GMT Strict-Transport-Security: - max-age=0 Transfer-Encoding: @@ -773,7 +685,7 @@ interactions: Connection: - keep-alive User-Agent: - - python-requests/2.25.1 + - python-requests/2.30.0 method: GET uri: https://www.ebi.ac.uk/ena/browser/api/xml/ERP108370 response: @@ -833,7 +745,7 @@ interactions: Content-Type: - application/xml Date: - - Wed, 28 Jul 2021 19:41:05 GMT + - Wed, 17 May 2023 18:35:41 GMT Strict-Transport-Security: - max-age=0 Transfer-Encoding: @@ -851,7 +763,7 @@ interactions: Connection: - keep-alive User-Agent: - - python-requests/2.25.1 + - python-requests/2.30.0 method: GET uri: https://www.ebi.ac.uk/ena/browser/api/xml/ERA1350207 response: @@ -887,7 +799,7 @@ interactions: Content-Type: - application/xml Date: - - Wed, 28 Jul 2021 19:41:05 GMT + - Wed, 17 May 2023 18:35:41 GMT Strict-Transport-Security: - max-age=0 Transfer-Encoding: @@ -895,68 +807,6 @@ interactions: status: code: 200 message: '' -- request: - body: acc=ERR2534073&accept-proto=fasp&version=2.0 - headers: - Accept: - - '*/*' - Accept-Encoding: - - gzip, deflate - Connection: - - keep-alive - Content-Length: - - '44' - User-Agent: - - python-requests/2.25.1 - method: POST - uri: https://www.ncbi.nlm.nih.gov/Traces/names/names.cgi - response: - body: - string: !!binary | - H4sIAAAAAAAAAwzIuwrCMBQA0L1fEXDoVLl5p92dheLkdtOkVAkmJBER7sfrGc9JnGFoFcvb02Vd - hZYKrCRrwTlpjCQB3E1gJ5hvnC9aLlzdacao0ShUXntQlnMEMLg744N36AIRKQC6vtKXjUfvpY2s - 1NzzlhN7NIYp5U8MbM+V9eMf2T/j1ocfAAAA//8DAIRWqlaOAAAA - headers: - Cache-Control: - - private - Connection: - - Keep-Alive - Content-Encoding: - - gzip - Content-Security-Policy: - - upgrade-insecure-requests - Content-Type: - - text/plain - Date: - - Wed, 28 Jul 2021 19:41:06 GMT - Keep-Alive: - - timeout=1, max=10 - NCBI-PHID: - - CC95EE67101B2D210000000000000001.m_1 - NCBI-SID: - - CC95EE67101B2D21_0000SID - Referrer-Policy: - - origin-when-cross-origin - Server: - - Apache - Set-Cookie: - - ncbi_sid=CC95EE67101B2D21_0000SID; domain=.nih.gov; path=/; expires=Thu, 28 - Jul 2022 19:41:06 GMT - SraNameServerOutputVersion: - - '2.0' - Strict-Transport-Security: - - max-age=31536000; includeSubDomains; preload - Transfer-Encoding: - - chunked - Vary: - - Accept-Encoding - X-UA-Compatible: - - IE=Edge - X-XSS-Protection: - - 1; mode=block - status: - code: 200 - message: OK - request: body: null headers: @@ -967,29 +817,27 @@ interactions: Connection: - keep-alive User-Agent: - - python-requests/2.25.1 + - python-requests/2.30.0 method: GET uri: https://www.ebi.ac.uk/ena/portal/api/filereport?accession=ERR2534073&result=read_run response: body: - string: "run_accession\tfastq_ftp\tfastq_bytes\tfastq_md5\tsubmitted_ftp\tsubmitted_bytes\tsubmitted_md5\tsra_ftp\tsra_bytes\tsra_md5\nERR2534073\tftp.sra.ebi.ac.uk/vol1/fastq/ERR253/003/ERR2534073/ERR2534073.fastq.gz\t1156190981\td46334eb88f03b4c0713c7ed8abc231c\tftp.sra.ebi.ac.uk/vol1/run/ERR253/ERR2534073/G144_KO8_RNAseq_DMSO2.fastq.gz\t1203618482\td2b9ae59efaa7491eac26723ce6022e7\t\t\t\n" + string: "run_accession\tfastq_ftp\tfastq_bytes\tfastq_md5\tbam_ftp\tbam_bytes\tbam_md5\tsubmitted_ftp\tsubmitted_bytes\tsubmitted_md5\tsra_ftp\tsra_bytes\tsra_md5\nERR2534073\tftp.sra.ebi.ac.uk/vol1/fastq/ERR253/003/ERR2534073/ERR2534073.fastq.gz\t1156190981\td46334eb88f03b4c0713c7ed8abc231c\t\t\t\tftp.sra.ebi.ac.uk/vol1/run/ERR253/ERR2534073/G144_KO8_RNAseq_DMSO2.fastq.gz\t1203618482\td2b9ae59efaa7491eac26723ce6022e7\tftp.sra.ebi.ac.uk/vol1/err/ERR253/003/ERR2534073\t770883643\t616f7e4782c7ce9187068202610c359b\n" headers: Cache-Control: - no-cache, no-store, max-age=0, must-revalidate + Content-Length: + - '483' Content-Type: - text/plain Date: - - Wed, 28 Jul 2021 19:41:06 GMT + - Wed, 17 May 2023 18:35:42 GMT Expires: - '0' Pragma: - no-cache - Server: - - Apache-Coyote/1.1 Strict-Transport-Security: - max-age=0 - Transfer-Encoding: - - chunked X-Content-Type-Options: - nosniff X-Frame-Options: @@ -998,7 +846,7 @@ interactions: - 1; mode=block status: code: 200 - message: OK + message: '' - request: body: null headers: @@ -1009,7 +857,7 @@ interactions: Connection: - keep-alive User-Agent: - - python-requests/2.25.1 + - python-requests/2.30.0 method: GET uri: https://www.ebi.ac.uk/ena/browser/api/xml/ERR2534074 response: @@ -1050,7 +898,7 @@ interactions: Content-Type: - application/xml Date: - - Wed, 28 Jul 2021 19:41:07 GMT + - Wed, 17 May 2023 18:35:42 GMT Strict-Transport-Security: - max-age=0 Transfer-Encoding: @@ -1068,7 +916,7 @@ interactions: Connection: - keep-alive User-Agent: - - python-requests/2.25.1 + - python-requests/2.30.0 method: GET uri: https://www.ebi.ac.uk/ena/browser/api/xml/ERX2552495 response: @@ -1132,7 +980,7 @@ interactions: Content-Type: - application/xml Date: - - Wed, 28 Jul 2021 19:41:07 GMT + - Wed, 17 May 2023 18:35:43 GMT Strict-Transport-Security: - max-age=0 Transfer-Encoding: @@ -1150,63 +998,51 @@ interactions: Connection: - keep-alive User-Agent: - - python-requests/2.25.1 + - python-requests/2.30.0 method: GET uri: https://www.ebi.ac.uk/ena/browser/api/xml/ERS2428789 response: body: string: "\n\n\n \n ERS2428789\n - \ SAMEA4608093\n + alias=\"E-MTAB-6681:G144_KO9_RNAseq_DMSO1\" center_name=\"BRIC - Biotech Research + and Innovation Centre\" broker_name=\"ArrayExpress\">\n \n + \ ERS2428789\n SAMEA4608093\n \ E-MTAB-6681:G144_KO9_RNAseq_DMSO1\n \n \ G144_KO9_RNAseq_DMSO1\n \n 9606\n \ Homo sapiens\n human\n \ \n Protocols: CRISPR mediated KO of CIC: sgRNAs (Target sequence: mESCs: GCCTTCATGATCTTCAGCAAG; G144: GGGCGAGTGGTGGTATGCCC) - \ were cloned into pSpCas9(BB)-2A-GFP (Addgene 48138) and transfected into - mESCs (Lipofectamine 2000) or G144 cells (Amaxa Nucleofector II, Program A033). + were cloned into pSpCas9(BB)-2A-GFP (Addgene 48138) and transfected into mESCs + (Lipofectamine 2000) or G144 cells (Amaxa Nucleofector II, Program A033). GFP-positive cells were single cell sorted 48h post-transfection, expanded and screened by immunoblotting for CIC deletion. Inhibitor treatment with 1 \u03BCM MEK inhibitor (PD0325901) was performed in 80% confluent cultures for 4 and 24 h respectively. DMSO was used as mock control. Cells were washed - once with PBS, lysed directly in RLT buffer (Qiagen). Total RNA was extracted - using the RNAeasy kit (Qiagen). 500 ng of total RNA was used for library - preparation using TruSeq RNA Library Prep Kit v2 (Illumina) according to manufacturer - recommendations.\n \n \n - \ \n ENA-STUDY\n ERP108370\n - \ \n \n \n - \ \n ENA-EXPERIMENT\n - \ ERX2552495\n \n \n - \ \n \n ENA-RUN\n - \ ERR2534074\n \n \n - \ \n \n ENA-SUBMISSION\n - \ ERA1350207\n \n \n - \ \n \n ENA-FASTQ-FILES\n - \ \n - \ \n \n \n - \ \n ENA-SUBMITTED-FILES\n - \ \n - \ \n \n \n - \ \n \n isolate\n - \ not applicable\n \n - \ \n organism\n Homo - sapiens\n \n \n - \ organism part\n brain\n - \ \n \n cell_type\n - \ glial cell\n \n - \ \n cell_line\n G144\n + once with PBS, lysed directly in RLT buffer (Qiagen). Total RNA was extracted + using the RNAeasy kit (Qiagen). 500 ng of total RNA was used for library preparation + using TruSeq RNA Library Prep Kit v2 (Illumina) according to manufacturer + recommendations.\n \n \n \n + \ ENA-FASTQ-FILES\n \n + \ \n \n \n \n + \ ENA-SUBMITTED-FILES\n \n + \ \n \n\n\n + \ \n ENA-CHECKLIST\n ERC000011\n \ \n \n disease\n \ glioblastoma multiforme\n \n - \ \n genotype\n CRISPR/Cas9 - mediated knockout of CIC\n \n \n - \ individual\n clonal line #9\n - \ \n \n ENA-CHECKLIST\n - \ ERC000011\n \n \n - \ ENA-SPOT-COUNT\n 22035122\n - \ \n \n ENA-BASE-COUNT\n - \ 1663855259\n \n + \ \n individual\n clonal + line #9\n \n \n + \ organism\n Homo sapiens\n + \ \n \n organism\n + \ Homo sapiens\n \n + \ \n cell type\n glial + cell\n \n \n + \ common name\n human\n + \ \n \n organism + part\n brain\n \n + \ \n cell line\n G144\n + \ \n \n genotype\n + \ CRISPR/Cas9 mediated knockout of CIC\n \n \ \n ENA-FIRST-PUBLIC\n \ 2018-05-30\n \n \ \n ENA-LAST-UPDATE\n @@ -1216,7 +1052,7 @@ interactions: Content-Type: - application/xml Date: - - Wed, 28 Jul 2021 19:41:08 GMT + - Wed, 17 May 2023 18:35:43 GMT Strict-Transport-Security: - max-age=0 Transfer-Encoding: @@ -1234,7 +1070,7 @@ interactions: Connection: - keep-alive User-Agent: - - python-requests/2.25.1 + - python-requests/2.30.0 method: GET uri: https://www.ebi.ac.uk/ena/browser/api/xml/ERP108370 response: @@ -1294,7 +1130,7 @@ interactions: Content-Type: - application/xml Date: - - Wed, 28 Jul 2021 19:41:09 GMT + - Wed, 17 May 2023 18:35:43 GMT Strict-Transport-Security: - max-age=0 Transfer-Encoding: @@ -1312,7 +1148,7 @@ interactions: Connection: - keep-alive User-Agent: - - python-requests/2.25.1 + - python-requests/2.30.0 method: GET uri: https://www.ebi.ac.uk/ena/browser/api/xml/ERA1350207 response: @@ -1348,7 +1184,7 @@ interactions: Content-Type: - application/xml Date: - - Wed, 28 Jul 2021 19:41:10 GMT + - Wed, 17 May 2023 18:35:44 GMT Strict-Transport-Security: - max-age=0 Transfer-Encoding: @@ -1356,68 +1192,6 @@ interactions: status: code: 200 message: '' -- request: - body: acc=ERR2534074&accept-proto=fasp&version=2.0 - headers: - Accept: - - '*/*' - Accept-Encoding: - - gzip, deflate - Connection: - - keep-alive - Content-Length: - - '44' - User-Agent: - - python-requests/2.25.1 - method: POST - uri: https://www.ncbi.nlm.nih.gov/Traces/names/names.cgi - response: - body: - string: !!binary | - H4sIAAAAAAAAAwzIsQrDIBAA0D1fIXTIlHJ6Gmv2zoXQqdtFDWmRGNRSCvfx7RvfSZ2hq4WO98LX - eVYGNVjNFtE6NBpYgbwMYAdwdyknoyd0Dx6DBIdKKiITCONiR3LaO4XkZbQrM2sAvu3pK/qttaP2 - 4ii5ZZ+TeFZBKeVPDGLNRbTtH3l5Rd+6HwAAAP//AwC73zj3jgAAAA== - headers: - Cache-Control: - - private - Connection: - - Keep-Alive - Content-Encoding: - - gzip - Content-Security-Policy: - - upgrade-insecure-requests - Content-Type: - - text/plain - Date: - - Wed, 28 Jul 2021 19:41:10 GMT - Keep-Alive: - - timeout=1, max=10 - NCBI-PHID: - - C7A41D9A101B2D610000000000000001.m_1 - NCBI-SID: - - C7A41D9A101B2D61_0000SID - Referrer-Policy: - - origin-when-cross-origin - Server: - - Apache - Set-Cookie: - - ncbi_sid=C7A41D9A101B2D61_0000SID; domain=.nih.gov; path=/; expires=Thu, 28 - Jul 2022 19:41:10 GMT - SraNameServerOutputVersion: - - '2.0' - Strict-Transport-Security: - - max-age=31536000; includeSubDomains; preload - Transfer-Encoding: - - chunked - Vary: - - Accept-Encoding - X-UA-Compatible: - - IE=Edge - X-XSS-Protection: - - 1; mode=block - status: - code: 200 - message: OK - request: body: null headers: @@ -1428,29 +1202,27 @@ interactions: Connection: - keep-alive User-Agent: - - python-requests/2.25.1 + - python-requests/2.30.0 method: GET uri: https://www.ebi.ac.uk/ena/portal/api/filereport?accession=ERR2534074&result=read_run response: body: - string: "run_accession\tfastq_ftp\tfastq_bytes\tfastq_md5\tsubmitted_ftp\tsubmitted_bytes\tsubmitted_md5\tsra_ftp\tsra_bytes\tsra_md5\nERR2534074\tftp.sra.ebi.ac.uk/vol1/fastq/ERR253/004/ERR2534074/ERR2534074.fastq.gz\t1100830559\t895a107af87e643e80f1aa33dda08a18\tftp.sra.ebi.ac.uk/vol1/run/ERR253/ERR2534074/G144_KO9_RNAseq_DMSO1.fastq.gz\t1145761230\ta75ea41c5c7c576caa5200cf820ee65c\t\t\t\n" + string: "run_accession\tfastq_ftp\tfastq_bytes\tfastq_md5\tbam_ftp\tbam_bytes\tbam_md5\tsubmitted_ftp\tsubmitted_bytes\tsubmitted_md5\tsra_ftp\tsra_bytes\tsra_md5\nERR2534074\tftp.sra.ebi.ac.uk/vol1/fastq/ERR253/004/ERR2534074/ERR2534074.fastq.gz\t1100830559\t895a107af87e643e80f1aa33dda08a18\t\t\t\tftp.sra.ebi.ac.uk/vol1/run/ERR253/ERR2534074/G144_KO9_RNAseq_DMSO1.fastq.gz\t1145761230\ta75ea41c5c7c576caa5200cf820ee65c\tftp.sra.ebi.ac.uk/vol1/err/ERR253/004/ERR2534074\t733793520\t4f79fc0ea6323a394a2adb88fbc571b4\n" headers: Cache-Control: - no-cache, no-store, max-age=0, must-revalidate + Content-Length: + - '483' Content-Type: - text/plain Date: - - Wed, 28 Jul 2021 19:41:10 GMT + - Wed, 17 May 2023 18:35:44 GMT Expires: - '0' Pragma: - no-cache - Server: - - Apache-Coyote/1.1 Strict-Transport-Security: - max-age=0 - Transfer-Encoding: - - chunked X-Content-Type-Options: - nosniff X-Frame-Options: @@ -1459,7 +1231,7 @@ interactions: - 1; mode=block status: code: 200 - message: OK + message: '' - request: body: null headers: @@ -1470,7 +1242,7 @@ interactions: Connection: - keep-alive User-Agent: - - python-requests/2.25.1 + - python-requests/2.30.0 method: GET uri: https://www.ebi.ac.uk/ena/browser/api/xml/ERR2534075 response: @@ -1511,7 +1283,7 @@ interactions: Content-Type: - application/xml Date: - - Wed, 28 Jul 2021 19:41:11 GMT + - Wed, 17 May 2023 18:35:45 GMT Strict-Transport-Security: - max-age=0 Transfer-Encoding: @@ -1529,7 +1301,7 @@ interactions: Connection: - keep-alive User-Agent: - - python-requests/2.25.1 + - python-requests/2.30.0 method: GET uri: https://www.ebi.ac.uk/ena/browser/api/xml/ERX2552496 response: @@ -1593,7 +1365,7 @@ interactions: Content-Type: - application/xml Date: - - Wed, 28 Jul 2021 19:41:11 GMT + - Wed, 17 May 2023 18:35:45 GMT Strict-Transport-Security: - max-age=0 Transfer-Encoding: @@ -1611,63 +1383,51 @@ interactions: Connection: - keep-alive User-Agent: - - python-requests/2.25.1 + - python-requests/2.30.0 method: GET uri: https://www.ebi.ac.uk/ena/browser/api/xml/ERS2428790 response: body: string: "\n\n\n \n ERS2428790\n - \ SAMEA4608094\n + alias=\"E-MTAB-6681:G144_KO9_RNAseq_DMSO2\" center_name=\"BRIC - Biotech Research + and Innovation Centre\" broker_name=\"ArrayExpress\">\n \n + \ ERS2428790\n SAMEA4608094\n \ E-MTAB-6681:G144_KO9_RNAseq_DMSO2\n \n \ G144_KO9_RNAseq_DMSO2\n \n 9606\n \ Homo sapiens\n human\n \ \n Protocols: CRISPR mediated KO of CIC: sgRNAs (Target sequence: mESCs: GCCTTCATGATCTTCAGCAAG; G144: GGGCGAGTGGTGGTATGCCC) - \ were cloned into pSpCas9(BB)-2A-GFP (Addgene 48138) and transfected into - mESCs (Lipofectamine 2000) or G144 cells (Amaxa Nucleofector II, Program A033). + were cloned into pSpCas9(BB)-2A-GFP (Addgene 48138) and transfected into mESCs + (Lipofectamine 2000) or G144 cells (Amaxa Nucleofector II, Program A033). GFP-positive cells were single cell sorted 48h post-transfection, expanded and screened by immunoblotting for CIC deletion. Inhibitor treatment with 1 \u03BCM MEK inhibitor (PD0325901) was performed in 80% confluent cultures for 4 and 24 h respectively. DMSO was used as mock control. Cells were washed - once with PBS, lysed directly in RLT buffer (Qiagen). Total RNA was extracted - using the RNAeasy kit (Qiagen). 500 ng of total RNA was used for library - preparation using TruSeq RNA Library Prep Kit v2 (Illumina) according to manufacturer - recommendations.\n \n \n - \ \n ENA-STUDY\n ERP108370\n - \ \n \n \n - \ \n ENA-EXPERIMENT\n - \ ERX2552496\n \n \n - \ \n \n ENA-RUN\n - \ ERR2534075\n \n \n - \ \n \n ENA-SUBMISSION\n - \ ERA1350207\n \n \n - \ \n \n ENA-FASTQ-FILES\n - \ \n - \ \n \n \n - \ \n ENA-SUBMITTED-FILES\n - \ \n - \ \n \n \n - \ \n \n isolate\n - \ not applicable\n \n - \ \n organism\n Homo - sapiens\n \n \n - \ organism part\n brain\n - \ \n \n cell_type\n - \ glial cell\n \n - \ \n cell_line\n G144\n + once with PBS, lysed directly in RLT buffer (Qiagen). Total RNA was extracted + using the RNAeasy kit (Qiagen). 500 ng of total RNA was used for library preparation + using TruSeq RNA Library Prep Kit v2 (Illumina) according to manufacturer + recommendations.\n \n \n \n + \ ENA-FASTQ-FILES\n \n + \ \n \n \n \n + \ ENA-SUBMITTED-FILES\n \n + \ \n \n\n\n + \ \n ENA-CHECKLIST\n ERC000011\n \ \n \n disease\n \ glioblastoma multiforme\n \n - \ \n genotype\n CRISPR/Cas9 - mediated knockout of CIC\n \n \n - \ individual\n clonal line #9\n - \ \n \n ENA-CHECKLIST\n - \ ERC000011\n \n \n - \ ENA-SPOT-COUNT\n 19495488\n - \ \n \n ENA-BASE-COUNT\n - \ 1471706561\n \n + \ \n individual\n clonal + line #9\n \n \n + \ organism\n Homo sapiens\n + \ \n \n organism\n + \ Homo sapiens\n \n + \ \n cell type\n glial + cell\n \n \n + \ common name\n human\n + \ \n \n organism + part\n brain\n \n + \ \n cell line\n G144\n + \ \n \n genotype\n + \ CRISPR/Cas9 mediated knockout of CIC\n \n \ \n ENA-FIRST-PUBLIC\n \ 2018-05-30\n \n \ \n ENA-LAST-UPDATE\n @@ -1677,7 +1437,7 @@ interactions: Content-Type: - application/xml Date: - - Wed, 28 Jul 2021 19:41:13 GMT + - Wed, 17 May 2023 18:35:45 GMT Strict-Transport-Security: - max-age=0 Transfer-Encoding: @@ -1695,7 +1455,7 @@ interactions: Connection: - keep-alive User-Agent: - - python-requests/2.25.1 + - python-requests/2.30.0 method: GET uri: https://www.ebi.ac.uk/ena/browser/api/xml/ERP108370 response: @@ -1755,7 +1515,7 @@ interactions: Content-Type: - application/xml Date: - - Wed, 28 Jul 2021 19:41:14 GMT + - Wed, 17 May 2023 18:35:46 GMT Strict-Transport-Security: - max-age=0 Transfer-Encoding: @@ -1773,7 +1533,7 @@ interactions: Connection: - keep-alive User-Agent: - - python-requests/2.25.1 + - python-requests/2.30.0 method: GET uri: https://www.ebi.ac.uk/ena/browser/api/xml/ERA1350207 response: @@ -1809,7 +1569,7 @@ interactions: Content-Type: - application/xml Date: - - Wed, 28 Jul 2021 19:41:14 GMT + - Wed, 17 May 2023 18:35:46 GMT Strict-Transport-Security: - max-age=0 Transfer-Encoding: @@ -1817,68 +1577,6 @@ interactions: status: code: 200 message: '' -- request: - body: acc=ERR2534075&accept-proto=fasp&version=2.0 - headers: - Accept: - - '*/*' - Accept-Encoding: - - gzip, deflate - Connection: - - keep-alive - Content-Length: - - '44' - User-Agent: - - python-requests/2.25.1 - method: POST - uri: https://www.ncbi.nlm.nih.gov/Traces/names/names.cgi - response: - body: - string: !!binary | - H4sIAAAAAAAAAwzIsQrDIBAA0D1fIXTIlHKeGk32zoXQqZsaJS1SRS2lcB/fvvGd8AxDq7a8HV22 - DZWQoBXNMwgtOUdC4GYCPcFy43xVahV4p9ma6DAGuWgTHDpvFWi9o1EOoghIRBKArq/0ZePRe2kj - KzX37HNij8ZsSvkTdhZzZf34R3bP4PvwAwAA//8DAOJq3zaOAAAA - headers: - Cache-Control: - - private - Connection: - - Keep-Alive - Content-Encoding: - - gzip - Content-Security-Policy: - - upgrade-insecure-requests - Content-Type: - - text/plain - Date: - - Wed, 28 Jul 2021 19:41:14 GMT - Keep-Alive: - - timeout=1, max=10 - NCBI-PHID: - - C7A41DAB101B2DA10000000000000001.m_1 - NCBI-SID: - - C7A41DAB101B2DA1_0000SID - Referrer-Policy: - - origin-when-cross-origin - Server: - - Apache - Set-Cookie: - - ncbi_sid=C7A41DAB101B2DA1_0000SID; domain=.nih.gov; path=/; expires=Thu, 28 - Jul 2022 19:41:14 GMT - SraNameServerOutputVersion: - - '2.0' - Strict-Transport-Security: - - max-age=31536000; includeSubDomains; preload - Transfer-Encoding: - - chunked - Vary: - - Accept-Encoding - X-UA-Compatible: - - IE=Edge - X-XSS-Protection: - - 1; mode=block - status: - code: 200 - message: OK - request: body: null headers: @@ -1889,29 +1587,27 @@ interactions: Connection: - keep-alive User-Agent: - - python-requests/2.25.1 + - python-requests/2.30.0 method: GET uri: https://www.ebi.ac.uk/ena/portal/api/filereport?accession=ERR2534075&result=read_run response: body: - string: "run_accession\tfastq_ftp\tfastq_bytes\tfastq_md5\tsubmitted_ftp\tsubmitted_bytes\tsubmitted_md5\tsra_ftp\tsra_bytes\tsra_md5\nERR2534075\tftp.sra.ebi.ac.uk/vol1/fastq/ERR253/005/ERR2534075/ERR2534075.fastq.gz\t988527951\td8909dd7d2ebe993b6a0136f1fdbbbdf\tftp.sra.ebi.ac.uk/vol1/run/ERR253/ERR2534075/G144_KO9_RNAseq_DMSO2.fastq.gz\t1028859346\tac67f56d04d171f4848bd680f7bc0948\t\t\t\n" + string: "run_accession\tfastq_ftp\tfastq_bytes\tfastq_md5\tbam_ftp\tbam_bytes\tbam_md5\tsubmitted_ftp\tsubmitted_bytes\tsubmitted_md5\tsra_ftp\tsra_bytes\tsra_md5\nERR2534075\tftp.sra.ebi.ac.uk/vol1/fastq/ERR253/005/ERR2534075/ERR2534075.fastq.gz\t988527951\td8909dd7d2ebe993b6a0136f1fdbbbdf\t\t\t\tftp.sra.ebi.ac.uk/vol1/run/ERR253/ERR2534075/G144_KO9_RNAseq_DMSO2.fastq.gz\t1028859346\tac67f56d04d171f4848bd680f7bc0948\tftp.sra.ebi.ac.uk/vol1/err/ERR253/005/ERR2534075\t660374092\t7a68cba094baf28e6b39d06d23e231e6\n" headers: Cache-Control: - no-cache, no-store, max-age=0, must-revalidate + Content-Length: + - '482' Content-Type: - text/plain Date: - - Wed, 28 Jul 2021 19:41:15 GMT + - Wed, 17 May 2023 18:35:47 GMT Expires: - '0' Pragma: - no-cache - Server: - - Apache-Coyote/1.1 Strict-Transport-Security: - max-age=0 - Transfer-Encoding: - - chunked X-Content-Type-Options: - nosniff X-Frame-Options: @@ -1920,7 +1616,7 @@ interactions: - 1; mode=block status: code: 200 - message: OK + message: '' - request: body: null headers: @@ -1931,7 +1627,7 @@ interactions: Connection: - keep-alive User-Agent: - - python-requests/2.25.1 + - python-requests/2.30.0 method: GET uri: https://www.ebi.ac.uk/ena/browser/api/xml/ERR2534076 response: @@ -1972,7 +1668,7 @@ interactions: Content-Type: - application/xml Date: - - Wed, 28 Jul 2021 19:41:15 GMT + - Wed, 17 May 2023 18:35:47 GMT Strict-Transport-Security: - max-age=0 Transfer-Encoding: @@ -1990,7 +1686,7 @@ interactions: Connection: - keep-alive User-Agent: - - python-requests/2.25.1 + - python-requests/2.30.0 method: GET uri: https://www.ebi.ac.uk/ena/browser/api/xml/ERX2552497 response: @@ -2058,7 +1754,7 @@ interactions: Content-Type: - application/xml Date: - - Wed, 28 Jul 2021 19:41:16 GMT + - Wed, 17 May 2023 18:35:48 GMT Strict-Transport-Security: - max-age=0 Transfer-Encoding: @@ -2076,63 +1772,51 @@ interactions: Connection: - keep-alive User-Agent: - - python-requests/2.25.1 + - python-requests/2.30.0 method: GET uri: https://www.ebi.ac.uk/ena/browser/api/xml/ERS2428791 response: body: string: "\n\n\n \n ERS2428791\n - \ SAMEA4608095\n + alias=\"E-MTAB-6681:G144_KO8_RNAseq_24h_1\" center_name=\"BRIC - Biotech Research + and Innovation Centre\" broker_name=\"ArrayExpress\">\n \n + \ ERS2428791\n SAMEA4608095\n \ E-MTAB-6681:G144_KO8_RNAseq_24h_1\n \n \ G144_KO8_RNAseq_24h_1\n \n 9606\n \ Homo sapiens\n human\n \ \n Protocols: CRISPR mediated KO of CIC: sgRNAs (Target sequence: mESCs: GCCTTCATGATCTTCAGCAAG; G144: GGGCGAGTGGTGGTATGCCC) - \ were cloned into pSpCas9(BB)-2A-GFP (Addgene 48138) and transfected into - mESCs (Lipofectamine 2000) or G144 cells (Amaxa Nucleofector II, Program A033). + were cloned into pSpCas9(BB)-2A-GFP (Addgene 48138) and transfected into mESCs + (Lipofectamine 2000) or G144 cells (Amaxa Nucleofector II, Program A033). GFP-positive cells were single cell sorted 48h post-transfection, expanded and screened by immunoblotting for CIC deletion. Inhibitor treatment with 1 \u03BCM MEK inhibitor (PD0325901) was performed in 80% confluent cultures for 4 and 24 h respectively. DMSO was used as mock control. Cells were washed - once with PBS, lysed directly in RLT buffer (Qiagen). Total RNA was extracted - using the RNAeasy kit (Qiagen). 500 ng of total RNA was used for library - preparation using TruSeq RNA Library Prep Kit v2 (Illumina) according to manufacturer - recommendations.\n \n \n - \ \n ENA-STUDY\n ERP108370\n - \ \n \n \n - \ \n ENA-EXPERIMENT\n - \ ERX2552497\n \n \n - \ \n \n ENA-RUN\n - \ ERR2534076\n \n \n - \ \n \n ENA-SUBMISSION\n - \ ERA1350207\n \n \n - \ \n \n ENA-FASTQ-FILES\n - \ \n - \ \n \n \n - \ \n ENA-SUBMITTED-FILES\n - \ \n - \ \n \n \n - \ \n \n isolate\n - \ not applicable\n \n - \ \n organism\n Homo - sapiens\n \n \n - \ organism part\n brain\n - \ \n \n cell_type\n - \ glial cell\n \n - \ \n cell_line\n G144\n + once with PBS, lysed directly in RLT buffer (Qiagen). Total RNA was extracted + using the RNAeasy kit (Qiagen). 500 ng of total RNA was used for library preparation + using TruSeq RNA Library Prep Kit v2 (Illumina) according to manufacturer + recommendations.\n \n \n \n + \ ENA-FASTQ-FILES\n \n + \ \n \n \n \n + \ ENA-SUBMITTED-FILES\n \n + \ \n \n\n\n + \ \n ENA-CHECKLIST\n ERC000011\n \ \n \n disease\n \ glioblastoma multiforme\n \n - \ \n genotype\n CRISPR/Cas9 - mediated knockout of CIC\n \n \n - \ individual\n clonal line #8\n - \ \n \n ENA-CHECKLIST\n - \ ERC000011\n \n \n - \ ENA-SPOT-COUNT\n 25500197\n - \ \n \n ENA-BASE-COUNT\n - \ 1925621166\n \n + \ \n individual\n clonal + line #8\n \n \n + \ organism\n Homo sapiens\n + \ \n \n organism\n + \ Homo sapiens\n \n + \ \n cell type\n glial + cell\n \n \n + \ common name\n human\n + \ \n \n organism + part\n brain\n \n + \ \n cell line\n G144\n + \ \n \n genotype\n + \ CRISPR/Cas9 mediated knockout of CIC\n \n \ \n ENA-FIRST-PUBLIC\n \ 2018-05-30\n \n \ \n ENA-LAST-UPDATE\n @@ -2142,7 +1826,7 @@ interactions: Content-Type: - application/xml Date: - - Wed, 28 Jul 2021 19:41:16 GMT + - Wed, 17 May 2023 18:35:47 GMT Strict-Transport-Security: - max-age=0 Transfer-Encoding: @@ -2160,7 +1844,7 @@ interactions: Connection: - keep-alive User-Agent: - - python-requests/2.25.1 + - python-requests/2.30.0 method: GET uri: https://www.ebi.ac.uk/ena/browser/api/xml/ERP108370 response: @@ -2220,7 +1904,7 @@ interactions: Content-Type: - application/xml Date: - - Wed, 28 Jul 2021 19:41:17 GMT + - Wed, 17 May 2023 18:35:48 GMT Strict-Transport-Security: - max-age=0 Transfer-Encoding: @@ -2238,7 +1922,7 @@ interactions: Connection: - keep-alive User-Agent: - - python-requests/2.25.1 + - python-requests/2.30.0 method: GET uri: https://www.ebi.ac.uk/ena/browser/api/xml/ERA1350207 response: @@ -2274,7 +1958,7 @@ interactions: Content-Type: - application/xml Date: - - Wed, 28 Jul 2021 19:41:19 GMT + - Wed, 17 May 2023 18:35:48 GMT Strict-Transport-Security: - max-age=0 Transfer-Encoding: @@ -2282,68 +1966,6 @@ interactions: status: code: 200 message: '' -- request: - body: acc=ERR2534076&accept-proto=fasp&version=2.0 - headers: - Accept: - - '*/*' - Accept-Encoding: - - gzip, deflate - Connection: - - keep-alive - Content-Length: - - '44' - User-Agent: - - python-requests/2.25.1 - method: POST - uri: https://www.ncbi.nlm.nih.gov/Traces/names/names.cgi - response: - body: - string: !!binary | - H4sIAAAAAAAAAwzIvQrCMBAA4L1PEXDoVLn8XJJ2dxaKk1uaS6gSTGkjItzD6zd+J3WG7tjD9l74 - Ms8KtQFn2aNFVB5GViD9AG6A8SblhDgZe2cXLfkcfDBZk9PREAVIlnSmMUFGZjYAfH2Vr+jX1raj - F9teW421iMchQin1k0jkuou2/qMuzxRb9wMAAP//AwChs8VGjgAAAA== - headers: - Cache-Control: - - private - Connection: - - Keep-Alive - Content-Encoding: - - gzip - Content-Security-Policy: - - upgrade-insecure-requests - Content-Type: - - text/plain - Date: - - Wed, 28 Jul 2021 19:41:19 GMT - Keep-Alive: - - timeout=1, max=10 - NCBI-PHID: - - C7A41DBE101B2DF10000000000000001.m_1 - NCBI-SID: - - C7A41DBE101B2DF1_0000SID - Referrer-Policy: - - origin-when-cross-origin - Server: - - Apache - Set-Cookie: - - ncbi_sid=C7A41DBE101B2DF1_0000SID; domain=.nih.gov; path=/; expires=Thu, 28 - Jul 2022 19:41:19 GMT - SraNameServerOutputVersion: - - '2.0' - Strict-Transport-Security: - - max-age=31536000; includeSubDomains; preload - Transfer-Encoding: - - chunked - Vary: - - Accept-Encoding - X-UA-Compatible: - - IE=Edge - X-XSS-Protection: - - 1; mode=block - status: - code: 200 - message: OK - request: body: null headers: @@ -2354,29 +1976,27 @@ interactions: Connection: - keep-alive User-Agent: - - python-requests/2.25.1 + - python-requests/2.30.0 method: GET uri: https://www.ebi.ac.uk/ena/portal/api/filereport?accession=ERR2534076&result=read_run response: body: - string: "run_accession\tfastq_ftp\tfastq_bytes\tfastq_md5\tsubmitted_ftp\tsubmitted_bytes\tsubmitted_md5\tsra_ftp\tsra_bytes\tsra_md5\nERR2534076\tftp.sra.ebi.ac.uk/vol1/fastq/ERR253/006/ERR2534076/ERR2534076.fastq.gz\t1282020356\t40598b820ef337261d26b6135301d8ad\tftp.sra.ebi.ac.uk/vol1/run/ERR253/ERR2534076/G144_KO8_RNAseq_24h_1.fastq.gz\t1336023529\t87ef33d7d33e0eb591e1d11482e7f961\t\t\t\n" + string: "run_accession\tfastq_ftp\tfastq_bytes\tfastq_md5\tbam_ftp\tbam_bytes\tbam_md5\tsubmitted_ftp\tsubmitted_bytes\tsubmitted_md5\tsra_ftp\tsra_bytes\tsra_md5\nERR2534076\tftp.sra.ebi.ac.uk/vol1/fastq/ERR253/006/ERR2534076/ERR2534076.fastq.gz\t1282020356\t40598b820ef337261d26b6135301d8ad\t\t\t\tftp.sra.ebi.ac.uk/vol1/run/ERR253/ERR2534076/G144_KO8_RNAseq_24h_1.fastq.gz\t1336023529\t87ef33d7d33e0eb591e1d11482e7f961\tftp.sra.ebi.ac.uk/vol1/err/ERR253/006/ERR2534076\t856552789\t3d7918ae8eda2f5fb3e47f742c3c692b\n" headers: Cache-Control: - no-cache, no-store, max-age=0, must-revalidate + Content-Length: + - '483' Content-Type: - text/plain Date: - - Wed, 28 Jul 2021 19:41:19 GMT + - Wed, 17 May 2023 18:35:49 GMT Expires: - '0' Pragma: - no-cache - Server: - - Apache-Coyote/1.1 Strict-Transport-Security: - max-age=0 - Transfer-Encoding: - - chunked X-Content-Type-Options: - nosniff X-Frame-Options: @@ -2385,7 +2005,7 @@ interactions: - 1; mode=block status: code: 200 - message: OK + message: '' - request: body: null headers: @@ -2396,7 +2016,7 @@ interactions: Connection: - keep-alive User-Agent: - - python-requests/2.25.1 + - python-requests/2.30.0 method: GET uri: https://www.ebi.ac.uk/ena/browser/api/xml/ERR2534077 response: @@ -2437,7 +2057,7 @@ interactions: Content-Type: - application/xml Date: - - Wed, 28 Jul 2021 19:41:20 GMT + - Wed, 17 May 2023 18:35:49 GMT Strict-Transport-Security: - max-age=0 Transfer-Encoding: @@ -2455,7 +2075,7 @@ interactions: Connection: - keep-alive User-Agent: - - python-requests/2.25.1 + - python-requests/2.30.0 method: GET uri: https://www.ebi.ac.uk/ena/browser/api/xml/ERX2552498 response: @@ -2523,7 +2143,7 @@ interactions: Content-Type: - application/xml Date: - - Wed, 28 Jul 2021 19:41:20 GMT + - Wed, 17 May 2023 18:35:50 GMT Strict-Transport-Security: - max-age=0 Transfer-Encoding: @@ -2541,63 +2161,51 @@ interactions: Connection: - keep-alive User-Agent: - - python-requests/2.25.1 + - python-requests/2.30.0 method: GET uri: https://www.ebi.ac.uk/ena/browser/api/xml/ERS2428792 response: body: string: "\n\n\n \n ERS2428792\n - \ SAMEA4608096\n + alias=\"E-MTAB-6681:G144_KO8_RNAseq_24h_2\" center_name=\"BRIC - Biotech Research + and Innovation Centre\" broker_name=\"ArrayExpress\">\n \n + \ ERS2428792\n SAMEA4608096\n \ E-MTAB-6681:G144_KO8_RNAseq_24h_2\n \n \ G144_KO8_RNAseq_24h_2\n \n 9606\n \ Homo sapiens\n human\n \ \n Protocols: CRISPR mediated KO of CIC: sgRNAs (Target sequence: mESCs: GCCTTCATGATCTTCAGCAAG; G144: GGGCGAGTGGTGGTATGCCC) - \ were cloned into pSpCas9(BB)-2A-GFP (Addgene 48138) and transfected into - mESCs (Lipofectamine 2000) or G144 cells (Amaxa Nucleofector II, Program A033). + were cloned into pSpCas9(BB)-2A-GFP (Addgene 48138) and transfected into mESCs + (Lipofectamine 2000) or G144 cells (Amaxa Nucleofector II, Program A033). GFP-positive cells were single cell sorted 48h post-transfection, expanded and screened by immunoblotting for CIC deletion. Inhibitor treatment with 1 \u03BCM MEK inhibitor (PD0325901) was performed in 80% confluent cultures for 4 and 24 h respectively. DMSO was used as mock control. Cells were washed - once with PBS, lysed directly in RLT buffer (Qiagen). Total RNA was extracted - using the RNAeasy kit (Qiagen). 500 ng of total RNA was used for library - preparation using TruSeq RNA Library Prep Kit v2 (Illumina) according to manufacturer - recommendations.\n \n \n - \ \n ENA-STUDY\n ERP108370\n - \ \n \n \n - \ \n ENA-EXPERIMENT\n - \ ERX2552498\n \n \n - \ \n \n ENA-RUN\n - \ ERR2534077\n \n \n - \ \n \n ENA-SUBMISSION\n - \ ERA1350207\n \n \n - \ \n \n ENA-FASTQ-FILES\n - \ \n - \ \n \n \n - \ \n ENA-SUBMITTED-FILES\n - \ \n - \ \n \n \n - \ \n \n isolate\n - \ not applicable\n \n - \ \n organism\n Homo - sapiens\n \n \n - \ organism part\n brain\n - \ \n \n cell_type\n - \ glial cell\n \n - \ \n cell_line\n G144\n + once with PBS, lysed directly in RLT buffer (Qiagen). Total RNA was extracted + using the RNAeasy kit (Qiagen). 500 ng of total RNA was used for library preparation + using TruSeq RNA Library Prep Kit v2 (Illumina) according to manufacturer + recommendations.\n \n \n \n + \ ENA-FASTQ-FILES\n \n + \ \n \n \n \n + \ ENA-SUBMITTED-FILES\n \n + \ \n \n\n\n + \ \n ENA-CHECKLIST\n ERC000011\n \ \n \n disease\n \ glioblastoma multiforme\n \n - \ \n genotype\n CRISPR/Cas9 - mediated knockout of CIC\n \n \n - \ individual\n clonal line #8\n - \ \n \n ENA-CHECKLIST\n - \ ERC000011\n \n \n - \ ENA-SPOT-COUNT\n 22960406\n - \ \n \n ENA-BASE-COUNT\n - \ 1733737669\n \n + \ \n individual\n clonal + line #8\n \n \n + \ organism\n Homo sapiens\n + \ \n \n organism\n + \ Homo sapiens\n \n + \ \n cell type\n glial + cell\n \n \n + \ common name\n human\n + \ \n \n organism + part\n brain\n \n + \ \n cell line\n G144\n + \ \n \n genotype\n + \ CRISPR/Cas9 mediated knockout of CIC\n \n \ \n ENA-FIRST-PUBLIC\n \ 2018-05-30\n \n \ \n ENA-LAST-UPDATE\n @@ -2607,7 +2215,7 @@ interactions: Content-Type: - application/xml Date: - - Wed, 28 Jul 2021 19:41:21 GMT + - Wed, 17 May 2023 18:35:50 GMT Strict-Transport-Security: - max-age=0 Transfer-Encoding: @@ -2625,7 +2233,7 @@ interactions: Connection: - keep-alive User-Agent: - - python-requests/2.25.1 + - python-requests/2.30.0 method: GET uri: https://www.ebi.ac.uk/ena/browser/api/xml/ERP108370 response: @@ -2685,7 +2293,7 @@ interactions: Content-Type: - application/xml Date: - - Wed, 28 Jul 2021 19:41:25 GMT + - Wed, 17 May 2023 18:35:50 GMT Strict-Transport-Security: - max-age=0 Transfer-Encoding: @@ -2703,7 +2311,7 @@ interactions: Connection: - keep-alive User-Agent: - - python-requests/2.25.1 + - python-requests/2.30.0 method: GET uri: https://www.ebi.ac.uk/ena/browser/api/xml/ERA1350207 response: @@ -2739,7 +2347,7 @@ interactions: Content-Type: - application/xml Date: - - Wed, 28 Jul 2021 19:41:26 GMT + - Wed, 17 May 2023 18:35:51 GMT Strict-Transport-Security: - max-age=0 Transfer-Encoding: @@ -2747,68 +2355,6 @@ interactions: status: code: 200 message: '' -- request: - body: acc=ERR2534077&accept-proto=fasp&version=2.0 - headers: - Accept: - - '*/*' - Accept-Encoding: - - gzip, deflate - Connection: - - keep-alive - Content-Length: - - '44' - User-Agent: - - python-requests/2.25.1 - method: POST - uri: https://www.ncbi.nlm.nih.gov/Traces/names/names.cgi - response: - body: - string: !!binary | - H4sIAAAAAAAAAwzIvQrCMBAA4L1PEXDoVLmkl1za3VkoTm7Nj1QJTUgjItzD6zd+J3WG7qhreTu+ - LIvSIwIRkyFtEcmwAmkHoAGmm5Sz1rPSd0YTRgOe0EYNYEkFOYWAiN5ImJxnZgTg656+ot9aK0cv - Ss0t+5zE8xBrSvkTg3jkKtr2j+xe0bfuBwAA//8DAHqUUgGOAAAA - headers: - Cache-Control: - - private - Connection: - - Keep-Alive - Content-Encoding: - - gzip - Content-Security-Policy: - - upgrade-insecure-requests - Content-Type: - - text/plain - Date: - - Wed, 28 Jul 2021 19:41:26 GMT - Keep-Alive: - - timeout=1, max=10 - NCBI-PHID: - - C7A41DDD101B2E610000000000000001.m_1 - NCBI-SID: - - C7A41DDD101B2E61_0000SID - Referrer-Policy: - - origin-when-cross-origin - Server: - - Apache - Set-Cookie: - - ncbi_sid=C7A41DDD101B2E61_0000SID; domain=.nih.gov; path=/; expires=Thu, 28 - Jul 2022 19:41:26 GMT - SraNameServerOutputVersion: - - '2.0' - Strict-Transport-Security: - - max-age=31536000; includeSubDomains; preload - Transfer-Encoding: - - chunked - Vary: - - Accept-Encoding - X-UA-Compatible: - - IE=Edge - X-XSS-Protection: - - 1; mode=block - status: - code: 200 - message: OK - request: body: null headers: @@ -2819,29 +2365,27 @@ interactions: Connection: - keep-alive User-Agent: - - python-requests/2.25.1 + - python-requests/2.30.0 method: GET uri: https://www.ebi.ac.uk/ena/portal/api/filereport?accession=ERR2534077&result=read_run response: body: - string: "run_accession\tfastq_ftp\tfastq_bytes\tfastq_md5\tsubmitted_ftp\tsubmitted_bytes\tsubmitted_md5\tsra_ftp\tsra_bytes\tsra_md5\nERR2534077\tftp.sra.ebi.ac.uk/vol1/fastq/ERR253/007/ERR2534077/ERR2534077.fastq.gz\t1150096005\t5a6030091948ae27ec5bc5a1ccb14001\tftp.sra.ebi.ac.uk/vol1/run/ERR253/ERR2534077/G144_KO8_RNAseq_24h_2.fastq.gz\t1197876304\t4890986fa779d752b6c3fd4f08c6104f\t\t\t\n" + string: "run_accession\tfastq_ftp\tfastq_bytes\tfastq_md5\tbam_ftp\tbam_bytes\tbam_md5\tsubmitted_ftp\tsubmitted_bytes\tsubmitted_md5\tsra_ftp\tsra_bytes\tsra_md5\nERR2534077\tftp.sra.ebi.ac.uk/vol1/fastq/ERR253/007/ERR2534077/ERR2534077.fastq.gz\t1150096005\t5a6030091948ae27ec5bc5a1ccb14001\t\t\t\tftp.sra.ebi.ac.uk/vol1/run/ERR253/ERR2534077/G144_KO8_RNAseq_24h_2.fastq.gz\t1197876304\t4890986fa779d752b6c3fd4f08c6104f\tftp.sra.ebi.ac.uk/vol1/err/ERR253/007/ERR2534077\t767584456\tdbccf1889a4cc651a06959ae3478d038\n" headers: Cache-Control: - no-cache, no-store, max-age=0, must-revalidate + Content-Length: + - '483' Content-Type: - text/plain Date: - - Wed, 28 Jul 2021 19:41:26 GMT + - Wed, 17 May 2023 18:35:52 GMT Expires: - '0' Pragma: - no-cache - Server: - - Apache-Coyote/1.1 Strict-Transport-Security: - max-age=0 - Transfer-Encoding: - - chunked X-Content-Type-Options: - nosniff X-Frame-Options: @@ -2850,7 +2394,7 @@ interactions: - 1; mode=block status: code: 200 - message: OK + message: '' - request: body: null headers: @@ -2861,7 +2405,7 @@ interactions: Connection: - keep-alive User-Agent: - - python-requests/2.25.1 + - python-requests/2.30.0 method: GET uri: https://www.ebi.ac.uk/ena/browser/api/xml/ERR2534078 response: @@ -2902,7 +2446,7 @@ interactions: Content-Type: - application/xml Date: - - Wed, 28 Jul 2021 19:41:27 GMT + - Wed, 17 May 2023 18:35:52 GMT Strict-Transport-Security: - max-age=0 Transfer-Encoding: @@ -2920,7 +2464,7 @@ interactions: Connection: - keep-alive User-Agent: - - python-requests/2.25.1 + - python-requests/2.30.0 method: GET uri: https://www.ebi.ac.uk/ena/browser/api/xml/ERX2552499 response: @@ -2988,7 +2532,7 @@ interactions: Content-Type: - application/xml Date: - - Wed, 28 Jul 2021 19:41:29 GMT + - Wed, 17 May 2023 18:35:52 GMT Strict-Transport-Security: - max-age=0 Transfer-Encoding: @@ -3006,63 +2550,51 @@ interactions: Connection: - keep-alive User-Agent: - - python-requests/2.25.1 + - python-requests/2.30.0 method: GET uri: https://www.ebi.ac.uk/ena/browser/api/xml/ERS2428793 response: body: string: "\n\n\n \n ERS2428793\n - \ SAMEA4608097\n + alias=\"E-MTAB-6681:G144_KO8_RNAseq_4h_1\" center_name=\"BRIC - Biotech Research + and Innovation Centre\" broker_name=\"ArrayExpress\">\n \n + \ ERS2428793\n SAMEA4608097\n \ E-MTAB-6681:G144_KO8_RNAseq_4h_1\n \n \ G144_KO8_RNAseq_4h_1\n \n 9606\n \ Homo sapiens\n human\n \ \n Protocols: CRISPR mediated KO of CIC: sgRNAs (Target sequence: mESCs: GCCTTCATGATCTTCAGCAAG; G144: GGGCGAGTGGTGGTATGCCC) - \ were cloned into pSpCas9(BB)-2A-GFP (Addgene 48138) and transfected into - mESCs (Lipofectamine 2000) or G144 cells (Amaxa Nucleofector II, Program A033). + were cloned into pSpCas9(BB)-2A-GFP (Addgene 48138) and transfected into mESCs + (Lipofectamine 2000) or G144 cells (Amaxa Nucleofector II, Program A033). GFP-positive cells were single cell sorted 48h post-transfection, expanded and screened by immunoblotting for CIC deletion. Inhibitor treatment with 1 \u03BCM MEK inhibitor (PD0325901) was performed in 80% confluent cultures for 4 and 24 h respectively. DMSO was used as mock control. Cells were washed - once with PBS, lysed directly in RLT buffer (Qiagen). Total RNA was extracted - using the RNAeasy kit (Qiagen). 500 ng of total RNA was used for library - preparation using TruSeq RNA Library Prep Kit v2 (Illumina) according to manufacturer - recommendations.\n \n \n - \ \n ENA-STUDY\n ERP108370\n - \ \n \n \n - \ \n ENA-EXPERIMENT\n - \ ERX2552499\n \n \n - \ \n \n ENA-RUN\n - \ ERR2534078\n \n \n - \ \n \n ENA-SUBMISSION\n - \ ERA1350207\n \n \n - \ \n \n ENA-FASTQ-FILES\n - \ \n - \ \n \n \n - \ \n ENA-SUBMITTED-FILES\n - \ \n - \ \n \n \n - \ \n \n isolate\n - \ not applicable\n \n - \ \n organism\n Homo - sapiens\n \n \n - \ organism part\n brain\n - \ \n \n cell_type\n - \ glial cell\n \n - \ \n cell_line\n G144\n + once with PBS, lysed directly in RLT buffer (Qiagen). Total RNA was extracted + using the RNAeasy kit (Qiagen). 500 ng of total RNA was used for library preparation + using TruSeq RNA Library Prep Kit v2 (Illumina) according to manufacturer + recommendations.\n \n \n \n + \ ENA-FASTQ-FILES\n \n + \ \n \n \n \n + \ ENA-SUBMITTED-FILES\n \n + \ \n \n\n\n + \ \n ENA-CHECKLIST\n ERC000011\n \ \n \n disease\n \ glioblastoma multiforme\n \n - \ \n genotype\n CRISPR/Cas9 - mediated knockout of CIC\n \n \n - \ individual\n clonal line #8\n - \ \n \n ENA-CHECKLIST\n - \ ERC000011\n \n \n - \ ENA-SPOT-COUNT\n 30777620\n - \ \n \n ENA-BASE-COUNT\n - \ 2323852146\n \n + \ \n individual\n clonal + line #8\n \n \n + \ organism\n Homo sapiens\n + \ \n \n organism\n + \ Homo sapiens\n \n + \ \n cell type\n glial + cell\n \n \n + \ common name\n human\n + \ \n \n organism + part\n brain\n \n + \ \n cell line\n G144\n + \ \n \n genotype\n + \ CRISPR/Cas9 mediated knockout of CIC\n \n \ \n ENA-FIRST-PUBLIC\n \ 2018-05-30\n \n \ \n ENA-LAST-UPDATE\n @@ -3072,7 +2604,7 @@ interactions: Content-Type: - application/xml Date: - - Wed, 28 Jul 2021 19:41:29 GMT + - Wed, 17 May 2023 18:35:52 GMT Strict-Transport-Security: - max-age=0 Transfer-Encoding: @@ -3090,7 +2622,7 @@ interactions: Connection: - keep-alive User-Agent: - - python-requests/2.25.1 + - python-requests/2.30.0 method: GET uri: https://www.ebi.ac.uk/ena/browser/api/xml/ERP108370 response: @@ -3150,7 +2682,7 @@ interactions: Content-Type: - application/xml Date: - - Wed, 28 Jul 2021 19:41:30 GMT + - Wed, 17 May 2023 18:35:52 GMT Strict-Transport-Security: - max-age=0 Transfer-Encoding: @@ -3168,7 +2700,7 @@ interactions: Connection: - keep-alive User-Agent: - - python-requests/2.25.1 + - python-requests/2.30.0 method: GET uri: https://www.ebi.ac.uk/ena/browser/api/xml/ERA1350207 response: @@ -3204,7 +2736,7 @@ interactions: Content-Type: - application/xml Date: - - Wed, 28 Jul 2021 19:41:30 GMT + - Wed, 17 May 2023 18:35:53 GMT Strict-Transport-Security: - max-age=0 Transfer-Encoding: @@ -3213,7 +2745,7 @@ interactions: code: 200 message: '' - request: - body: acc=ERR2534078&accept-proto=fasp&version=2.0 + body: null headers: Accept: - '*/*' @@ -3221,92 +2753,28 @@ interactions: - gzip, deflate Connection: - keep-alive - Content-Length: - - '44' User-Agent: - - python-requests/2.25.1 - method: POST - uri: https://www.ncbi.nlm.nih.gov/Traces/names/names.cgi + - python-requests/2.30.0 + method: GET + uri: https://www.ebi.ac.uk/ena/portal/api/filereport?accession=ERR2534078&result=read_run response: body: - string: !!binary | - H4sIAAAAAAAAAwzKvQrCMBAA4L1PEXDoVLm7/DXdnYXi5JbUlCrBhCYiwj28XT++E52hq7svn8CX - eSYtFdiREUijliAVE+A4gB3A3RAnbSfSd16jds4btOCCOhqGaIgiGOcCKiRmVgB8faef6LfWSu1F - 2XPLS07iWYVPKX/jQ6x5F207IIdXXFr3BwAA//8DAACvVh+PAAAA + string: "run_accession\tfastq_ftp\tfastq_bytes\tfastq_md5\tbam_ftp\tbam_bytes\tbam_md5\tsubmitted_ftp\tsubmitted_bytes\tsubmitted_md5\tsra_ftp\tsra_bytes\tsra_md5\nERR2534078\tftp.sra.ebi.ac.uk/vol1/fastq/ERR253/008/ERR2534078/ERR2534078.fastq.gz\t1536621662\taec2ace3d7e6c37ea2cc645fec91b508\t\t\t\tftp.sra.ebi.ac.uk/vol1/run/ERR253/ERR2534078/G144_KO8_RNAseq_4h_1.fastq.gz\t1600009820\tf013cfe299039a31f0c60f89c94bddf5\tftp.sra.ebi.ac.uk/vol1/err/ERR253/008/ERR2534078\t1025153014\t6c80784e273565081f863cf58fae1fc9\n" headers: Cache-Control: - - private - Connection: - - Keep-Alive - Content-Encoding: - - gzip - Content-Security-Policy: - - upgrade-insecure-requests + - no-cache, no-store, max-age=0, must-revalidate + Content-Length: + - '483' Content-Type: - text/plain Date: - - Wed, 28 Jul 2021 19:41:31 GMT - Keep-Alive: - - timeout=1, max=10 - NCBI-PHID: - - C7A41DF7101B2EB10000000000000001.m_1 - NCBI-SID: - - C7A41DF7101B2EB1_0000SID - Referrer-Policy: - - origin-when-cross-origin - Server: - - Apache - Set-Cookie: - - ncbi_sid=C7A41DF7101B2EB1_0000SID; domain=.nih.gov; path=/; expires=Thu, 28 - Jul 2022 19:41:31 GMT - SraNameServerOutputVersion: - - '2.0' - Strict-Transport-Security: - - max-age=31536000; includeSubDomains; preload - Transfer-Encoding: - - chunked - Vary: - - Accept-Encoding - X-UA-Compatible: - - IE=Edge - X-XSS-Protection: - - 1; mode=block - status: - code: 200 - message: OK -- request: - body: null - headers: - Accept: - - '*/*' - Accept-Encoding: - - gzip, deflate - Connection: - - keep-alive - User-Agent: - - python-requests/2.25.1 - method: GET - uri: https://www.ebi.ac.uk/ena/portal/api/filereport?accession=ERR2534078&result=read_run - response: - body: - string: "run_accession\tfastq_ftp\tfastq_bytes\tfastq_md5\tsubmitted_ftp\tsubmitted_bytes\tsubmitted_md5\tsra_ftp\tsra_bytes\tsra_md5\nERR2534078\tftp.sra.ebi.ac.uk/vol1/fastq/ERR253/008/ERR2534078/ERR2534078.fastq.gz\t1536621662\taec2ace3d7e6c37ea2cc645fec91b508\tftp.sra.ebi.ac.uk/vol1/run/ERR253/ERR2534078/G144_KO8_RNAseq_4h_1.fastq.gz\t1600009820\tf013cfe299039a31f0c60f89c94bddf5\t\t\t\n" - headers: - Cache-Control: - - no-cache, no-store, max-age=0, must-revalidate - Content-Type: - - text/plain - Date: - - Wed, 28 Jul 2021 19:41:32 GMT + - Wed, 17 May 2023 18:35:54 GMT Expires: - '0' Pragma: - no-cache - Server: - - Apache-Coyote/1.1 Strict-Transport-Security: - max-age=0 - Transfer-Encoding: - - chunked X-Content-Type-Options: - nosniff X-Frame-Options: @@ -3315,7 +2783,7 @@ interactions: - 1; mode=block status: code: 200 - message: OK + message: '' - request: body: null headers: @@ -3326,7 +2794,7 @@ interactions: Connection: - keep-alive User-Agent: - - python-requests/2.25.1 + - python-requests/2.30.0 method: GET uri: https://www.ebi.ac.uk/ena/browser/api/xml/ERR2534079 response: @@ -3367,7 +2835,7 @@ interactions: Content-Type: - application/xml Date: - - Wed, 28 Jul 2021 19:41:32 GMT + - Wed, 17 May 2023 18:35:53 GMT Strict-Transport-Security: - max-age=0 Transfer-Encoding: @@ -3385,7 +2853,7 @@ interactions: Connection: - keep-alive User-Agent: - - python-requests/2.25.1 + - python-requests/2.30.0 method: GET uri: https://www.ebi.ac.uk/ena/browser/api/xml/ERX2552500 response: @@ -3453,7 +2921,7 @@ interactions: Content-Type: - application/xml Date: - - Wed, 28 Jul 2021 19:41:32 GMT + - Wed, 17 May 2023 18:35:54 GMT Strict-Transport-Security: - max-age=0 Transfer-Encoding: @@ -3471,63 +2939,51 @@ interactions: Connection: - keep-alive User-Agent: - - python-requests/2.25.1 + - python-requests/2.30.0 method: GET uri: https://www.ebi.ac.uk/ena/browser/api/xml/ERS2428794 response: body: string: "\n\n\n \n ERS2428794\n - \ SAMEA4608098\n + alias=\"E-MTAB-6681:G144_KO8_RNAseq_4h_2\" center_name=\"BRIC - Biotech Research + and Innovation Centre\" broker_name=\"ArrayExpress\">\n \n + \ ERS2428794\n SAMEA4608098\n \ E-MTAB-6681:G144_KO8_RNAseq_4h_2\n \n \ G144_KO8_RNAseq_4h_2\n \n 9606\n \ Homo sapiens\n human\n \ \n Protocols: CRISPR mediated KO of CIC: sgRNAs (Target sequence: mESCs: GCCTTCATGATCTTCAGCAAG; G144: GGGCGAGTGGTGGTATGCCC) - \ were cloned into pSpCas9(BB)-2A-GFP (Addgene 48138) and transfected into - mESCs (Lipofectamine 2000) or G144 cells (Amaxa Nucleofector II, Program A033). + were cloned into pSpCas9(BB)-2A-GFP (Addgene 48138) and transfected into mESCs + (Lipofectamine 2000) or G144 cells (Amaxa Nucleofector II, Program A033). GFP-positive cells were single cell sorted 48h post-transfection, expanded and screened by immunoblotting for CIC deletion. Inhibitor treatment with 1 \u03BCM MEK inhibitor (PD0325901) was performed in 80% confluent cultures for 4 and 24 h respectively. DMSO was used as mock control. Cells were washed - once with PBS, lysed directly in RLT buffer (Qiagen). Total RNA was extracted - using the RNAeasy kit (Qiagen). 500 ng of total RNA was used for library - preparation using TruSeq RNA Library Prep Kit v2 (Illumina) according to manufacturer - recommendations.\n \n \n - \ \n ENA-STUDY\n ERP108370\n - \ \n \n \n - \ \n ENA-EXPERIMENT\n - \ ERX2552500\n \n \n - \ \n \n ENA-RUN\n - \ ERR2534079\n \n \n - \ \n \n ENA-SUBMISSION\n - \ ERA1350207\n \n \n - \ \n \n ENA-FASTQ-FILES\n - \ \n - \ \n \n \n - \ \n ENA-SUBMITTED-FILES\n - \ \n - \ \n \n \n - \ \n \n isolate\n - \ not applicable\n \n - \ \n organism\n Homo - sapiens\n \n \n - \ organism part\n brain\n - \ \n \n cell_type\n - \ glial cell\n \n - \ \n cell_line\n G144\n + once with PBS, lysed directly in RLT buffer (Qiagen). Total RNA was extracted + using the RNAeasy kit (Qiagen). 500 ng of total RNA was used for library preparation + using TruSeq RNA Library Prep Kit v2 (Illumina) according to manufacturer + recommendations.\n \n \n \n + \ ENA-FASTQ-FILES\n \n + \ \n \n \n \n + \ ENA-SUBMITTED-FILES\n \n + \ \n \n\n\n + \ \n ENA-CHECKLIST\n ERC000011\n \ \n \n disease\n \ glioblastoma multiforme\n \n - \ \n genotype\n CRISPR/Cas9 - mediated knockout of CIC\n \n \n - \ individual\n clonal line #8\n - \ \n \n ENA-CHECKLIST\n - \ ERC000011\n \n \n - \ ENA-SPOT-COUNT\n 22511265\n - \ \n \n ENA-BASE-COUNT\n - \ 1699936076\n \n + \ \n individual\n clonal + line #8\n \n \n + \ organism\n Homo sapiens\n + \ \n \n organism\n + \ Homo sapiens\n \n + \ \n cell type\n glial + cell\n \n \n + \ common name\n human\n + \ \n \n organism + part\n brain\n \n + \ \n cell line\n G144\n + \ \n \n genotype\n + \ CRISPR/Cas9 mediated knockout of CIC\n \n \ \n ENA-FIRST-PUBLIC\n \ 2018-05-30\n \n \ \n ENA-LAST-UPDATE\n @@ -3537,7 +2993,7 @@ interactions: Content-Type: - application/xml Date: - - Wed, 28 Jul 2021 19:41:33 GMT + - Wed, 17 May 2023 18:35:55 GMT Strict-Transport-Security: - max-age=0 Transfer-Encoding: @@ -3555,7 +3011,7 @@ interactions: Connection: - keep-alive User-Agent: - - python-requests/2.25.1 + - python-requests/2.30.0 method: GET uri: https://www.ebi.ac.uk/ena/browser/api/xml/ERP108370 response: @@ -3615,7 +3071,7 @@ interactions: Content-Type: - application/xml Date: - - Wed, 28 Jul 2021 19:41:34 GMT + - Wed, 17 May 2023 18:35:55 GMT Strict-Transport-Security: - max-age=0 Transfer-Encoding: @@ -3633,7 +3089,7 @@ interactions: Connection: - keep-alive User-Agent: - - python-requests/2.25.1 + - python-requests/2.30.0 method: GET uri: https://www.ebi.ac.uk/ena/browser/api/xml/ERA1350207 response: @@ -3669,7 +3125,7 @@ interactions: Content-Type: - application/xml Date: - - Wed, 28 Jul 2021 19:41:34 GMT + - Wed, 17 May 2023 18:35:55 GMT Strict-Transport-Security: - max-age=0 Transfer-Encoding: @@ -3677,68 +3133,6 @@ interactions: status: code: 200 message: '' -- request: - body: acc=ERR2534079&accept-proto=fasp&version=2.0 - headers: - Accept: - - '*/*' - Accept-Encoding: - - gzip, deflate - Connection: - - keep-alive - Content-Length: - - '44' - User-Agent: - - python-requests/2.25.1 - method: POST - uri: https://www.ncbi.nlm.nih.gov/Traces/names/names.cgi - response: - body: - string: !!binary | - H4sIAAAAAAAAAwzIsQrCMBAA0L1fEXDoVLmcvVza3VkoTm5pklIlNKGNiHAfr298JzxDc+yuvGe5 - ThPSpQcehInI9gZBELTtgDsY7lqPxCPwQyxphx6BOBgbvKUFjdHIke3iHLKI9ABy29JXtWut5WhV - 2XPNPif1PJRLKX9iUEveVV3/kedX9LX5AQAA//8DAFfh71COAAAA - headers: - Cache-Control: - - private - Connection: - - Keep-Alive - Content-Encoding: - - gzip - Content-Security-Policy: - - upgrade-insecure-requests - Content-Type: - - text/plain - Date: - - Wed, 28 Jul 2021 19:41:35 GMT - Keep-Alive: - - timeout=1, max=10 - NCBI-PHID: - - CC95EF24101B2EF10000000000000001.m_1 - NCBI-SID: - - CC95EF24101B2EF1_0000SID - Referrer-Policy: - - origin-when-cross-origin - Server: - - Apache - Set-Cookie: - - ncbi_sid=CC95EF24101B2EF1_0000SID; domain=.nih.gov; path=/; expires=Thu, 28 - Jul 2022 19:41:35 GMT - SraNameServerOutputVersion: - - '2.0' - Strict-Transport-Security: - - max-age=31536000; includeSubDomains; preload - Transfer-Encoding: - - chunked - Vary: - - Accept-Encoding - X-UA-Compatible: - - IE=Edge - X-XSS-Protection: - - 1; mode=block - status: - code: 200 - message: OK - request: body: null headers: @@ -3749,29 +3143,27 @@ interactions: Connection: - keep-alive User-Agent: - - python-requests/2.25.1 + - python-requests/2.30.0 method: GET uri: https://www.ebi.ac.uk/ena/portal/api/filereport?accession=ERR2534079&result=read_run response: body: - string: "run_accession\tfastq_ftp\tfastq_bytes\tfastq_md5\tsubmitted_ftp\tsubmitted_bytes\tsubmitted_md5\tsra_ftp\tsra_bytes\tsra_md5\nERR2534079\tftp.sra.ebi.ac.uk/vol1/fastq/ERR253/009/ERR2534079/ERR2534079.fastq.gz\t1132203170\t429470250bf1e5e7ab6fbb7fd7f1087f\tftp.sra.ebi.ac.uk/vol1/run/ERR253/ERR2534079/G144_KO8_RNAseq_4h_2.fastq.gz\t1178873511\t24f54a4b765784df91b47d5ed39eb311\t\t\t\n" + string: "run_accession\tfastq_ftp\tfastq_bytes\tfastq_md5\tbam_ftp\tbam_bytes\tbam_md5\tsubmitted_ftp\tsubmitted_bytes\tsubmitted_md5\tsra_ftp\tsra_bytes\tsra_md5\nERR2534079\tftp.sra.ebi.ac.uk/vol1/fastq/ERR253/009/ERR2534079/ERR2534079.fastq.gz\t1132203170\t429470250bf1e5e7ab6fbb7fd7f1087f\t\t\t\tftp.sra.ebi.ac.uk/vol1/run/ERR253/ERR2534079/G144_KO8_RNAseq_4h_2.fastq.gz\t1178873511\t24f54a4b765784df91b47d5ed39eb311\tftp.sra.ebi.ac.uk/vol1/err/ERR253/009/ERR2534079\t755584600\tdfc6e098febc3d3d5def75a8086fad94\n" headers: Cache-Control: - no-cache, no-store, max-age=0, must-revalidate + Content-Length: + - '482' Content-Type: - text/plain Date: - - Wed, 28 Jul 2021 19:41:35 GMT + - Wed, 17 May 2023 18:35:56 GMT Expires: - '0' Pragma: - no-cache - Server: - - Apache-Coyote/1.1 Strict-Transport-Security: - max-age=0 - Transfer-Encoding: - - chunked X-Content-Type-Options: - nosniff X-Frame-Options: @@ -3780,7 +3172,7 @@ interactions: - 1; mode=block status: code: 200 - message: OK + message: '' - request: body: null headers: @@ -3791,7 +3183,7 @@ interactions: Connection: - keep-alive User-Agent: - - python-requests/2.25.1 + - python-requests/2.30.0 method: GET uri: https://www.ebi.ac.uk/ena/browser/api/xml/ERR2534080 response: @@ -3832,7 +3224,7 @@ interactions: Content-Type: - application/xml Date: - - Wed, 28 Jul 2021 19:41:35 GMT + - Wed, 17 May 2023 18:35:56 GMT Strict-Transport-Security: - max-age=0 Transfer-Encoding: @@ -3850,7 +3242,7 @@ interactions: Connection: - keep-alive User-Agent: - - python-requests/2.25.1 + - python-requests/2.30.0 method: GET uri: https://www.ebi.ac.uk/ena/browser/api/xml/ERX2552501 response: @@ -3918,7 +3310,7 @@ interactions: Content-Type: - application/xml Date: - - Wed, 28 Jul 2021 19:41:36 GMT + - Wed, 17 May 2023 18:35:57 GMT Strict-Transport-Security: - max-age=0 Transfer-Encoding: @@ -3936,63 +3328,51 @@ interactions: Connection: - keep-alive User-Agent: - - python-requests/2.25.1 + - python-requests/2.30.0 method: GET uri: https://www.ebi.ac.uk/ena/browser/api/xml/ERS2428795 response: body: string: "\n\n\n \n ERS2428795\n - \ SAMEA4608099\n + alias=\"E-MTAB-6681:G144_KO9_RNAseq_24h_1\" center_name=\"BRIC - Biotech Research + and Innovation Centre\" broker_name=\"ArrayExpress\">\n \n + \ ERS2428795\n SAMEA4608099\n \ E-MTAB-6681:G144_KO9_RNAseq_24h_1\n \n \ G144_KO9_RNAseq_24h_1\n \n 9606\n \ Homo sapiens\n human\n \ \n Protocols: CRISPR mediated KO of CIC: sgRNAs (Target sequence: mESCs: GCCTTCATGATCTTCAGCAAG; G144: GGGCGAGTGGTGGTATGCCC) - \ were cloned into pSpCas9(BB)-2A-GFP (Addgene 48138) and transfected into - mESCs (Lipofectamine 2000) or G144 cells (Amaxa Nucleofector II, Program A033). + were cloned into pSpCas9(BB)-2A-GFP (Addgene 48138) and transfected into mESCs + (Lipofectamine 2000) or G144 cells (Amaxa Nucleofector II, Program A033). GFP-positive cells were single cell sorted 48h post-transfection, expanded and screened by immunoblotting for CIC deletion. Inhibitor treatment with 1 \u03BCM MEK inhibitor (PD0325901) was performed in 80% confluent cultures for 4 and 24 h respectively. DMSO was used as mock control. Cells were washed - once with PBS, lysed directly in RLT buffer (Qiagen). Total RNA was extracted - using the RNAeasy kit (Qiagen). 500 ng of total RNA was used for library - preparation using TruSeq RNA Library Prep Kit v2 (Illumina) according to manufacturer - recommendations.\n \n \n - \ \n ENA-STUDY\n ERP108370\n - \ \n \n \n - \ \n ENA-EXPERIMENT\n - \ ERX2552501\n \n \n - \ \n \n ENA-RUN\n - \ ERR2534080\n \n \n - \ \n \n ENA-SUBMISSION\n - \ ERA1350207\n \n \n - \ \n \n ENA-FASTQ-FILES\n - \ \n - \ \n \n \n - \ \n ENA-SUBMITTED-FILES\n - \ \n - \ \n \n \n - \ \n \n isolate\n - \ not applicable\n \n - \ \n organism\n Homo - sapiens\n \n \n - \ organism part\n brain\n - \ \n \n cell_type\n - \ glial cell\n \n - \ \n cell_line\n G144\n + once with PBS, lysed directly in RLT buffer (Qiagen). Total RNA was extracted + using the RNAeasy kit (Qiagen). 500 ng of total RNA was used for library preparation + using TruSeq RNA Library Prep Kit v2 (Illumina) according to manufacturer + recommendations.\n \n \n \n + \ ENA-FASTQ-FILES\n \n + \ \n \n \n \n + \ ENA-SUBMITTED-FILES\n \n + \ \n \n\n\n + \ \n ENA-CHECKLIST\n ERC000011\n \ \n \n disease\n \ glioblastoma multiforme\n \n - \ \n genotype\n CRISPR/Cas9 - mediated knockout of CIC\n \n \n - \ individual\n clonal line #9\n - \ \n \n ENA-CHECKLIST\n - \ ERC000011\n \n \n - \ ENA-SPOT-COUNT\n 26709956\n - \ \n \n ENA-BASE-COUNT\n - \ 2016956425\n \n + \ \n individual\n clonal + line #9\n \n \n + \ organism\n Homo sapiens\n + \ \n \n organism\n + \ Homo sapiens\n \n + \ \n cell type\n glial + cell\n \n \n + \ common name\n human\n + \ \n \n organism + part\n brain\n \n + \ \n cell line\n G144\n + \ \n \n genotype\n + \ CRISPR/Cas9 mediated knockout of CIC\n \n \ \n ENA-FIRST-PUBLIC\n \ 2018-05-30\n \n \ \n ENA-LAST-UPDATE\n @@ -4002,7 +3382,7 @@ interactions: Content-Type: - application/xml Date: - - Wed, 28 Jul 2021 19:41:37 GMT + - Wed, 17 May 2023 18:35:57 GMT Strict-Transport-Security: - max-age=0 Transfer-Encoding: @@ -4020,7 +3400,7 @@ interactions: Connection: - keep-alive User-Agent: - - python-requests/2.25.1 + - python-requests/2.30.0 method: GET uri: https://www.ebi.ac.uk/ena/browser/api/xml/ERP108370 response: @@ -4080,7 +3460,7 @@ interactions: Content-Type: - application/xml Date: - - Wed, 28 Jul 2021 19:41:38 GMT + - Wed, 17 May 2023 18:35:58 GMT Strict-Transport-Security: - max-age=0 Transfer-Encoding: @@ -4098,7 +3478,7 @@ interactions: Connection: - keep-alive User-Agent: - - python-requests/2.25.1 + - python-requests/2.30.0 method: GET uri: https://www.ebi.ac.uk/ena/browser/api/xml/ERA1350207 response: @@ -4134,7 +3514,7 @@ interactions: Content-Type: - application/xml Date: - - Wed, 28 Jul 2021 19:41:39 GMT + - Wed, 17 May 2023 18:35:57 GMT Strict-Transport-Security: - max-age=0 Transfer-Encoding: @@ -4142,68 +3522,6 @@ interactions: status: code: 200 message: '' -- request: - body: acc=ERR2534080&accept-proto=fasp&version=2.0 - headers: - Accept: - - '*/*' - Accept-Encoding: - - gzip, deflate - Connection: - - keep-alive - Content-Length: - - '44' - User-Agent: - - python-requests/2.25.1 - method: POST - uri: https://www.ncbi.nlm.nih.gov/Traces/names/names.cgi - response: - body: - string: !!binary | - H4sIAAAAAAAAAwzIvQrCMBAA4L1PEXDoVLlc89vdWShObr2YUiU0IY2IcA+v3/id8AzdUZfyJr7M - M+pRgQN2zqNHoywjSDeAHcDfpJy0nfR458Wq1YG3qzY+hjEESVaSISSnTCBkZgXA1z19Rb+1Vo5e - lJpbDjmJ5yGWlPInPsSaq2jbPzK9YmjdDwAA//8DAD+CjnCOAAAA - headers: - Cache-Control: - - private - Connection: - - Keep-Alive - Content-Encoding: - - gzip - Content-Security-Policy: - - upgrade-insecure-requests - Content-Type: - - text/plain - Date: - - Wed, 28 Jul 2021 19:41:39 GMT - Keep-Alive: - - timeout=1, max=10 - NCBI-PHID: - - CC95EF3E101B2F310000000000000001.m_1 - NCBI-SID: - - CC95EF3E101B2F31_0000SID - Referrer-Policy: - - origin-when-cross-origin - Server: - - Apache - Set-Cookie: - - ncbi_sid=CC95EF3E101B2F31_0000SID; domain=.nih.gov; path=/; expires=Thu, 28 - Jul 2022 19:41:39 GMT - SraNameServerOutputVersion: - - '2.0' - Strict-Transport-Security: - - max-age=31536000; includeSubDomains; preload - Transfer-Encoding: - - chunked - Vary: - - Accept-Encoding - X-UA-Compatible: - - IE=Edge - X-XSS-Protection: - - 1; mode=block - status: - code: 200 - message: OK - request: body: null headers: @@ -4214,29 +3532,27 @@ interactions: Connection: - keep-alive User-Agent: - - python-requests/2.25.1 + - python-requests/2.30.0 method: GET uri: https://www.ebi.ac.uk/ena/portal/api/filereport?accession=ERR2534080&result=read_run response: body: - string: "run_accession\tfastq_ftp\tfastq_bytes\tfastq_md5\tsubmitted_ftp\tsubmitted_bytes\tsubmitted_md5\tsra_ftp\tsra_bytes\tsra_md5\nERR2534080\tftp.sra.ebi.ac.uk/vol1/fastq/ERR253/000/ERR2534080/ERR2534080.fastq.gz\t1333847546\t831e6a1e98dca3e530e1409e73bac1ef\tftp.sra.ebi.ac.uk/vol1/run/ERR253/ERR2534080/G144_KO9_RNAseq_24h_1.fastq.gz\t1388655605\t1cafe0e6f1cb09d106bd723397442c86\t\t\t\n" + string: "run_accession\tfastq_ftp\tfastq_bytes\tfastq_md5\tbam_ftp\tbam_bytes\tbam_md5\tsubmitted_ftp\tsubmitted_bytes\tsubmitted_md5\tsra_ftp\tsra_bytes\tsra_md5\nERR2534080\tftp.sra.ebi.ac.uk/vol1/fastq/ERR253/000/ERR2534080/ERR2534080.fastq.gz\t1333847546\t831e6a1e98dca3e530e1409e73bac1ef\t\t\t\tftp.sra.ebi.ac.uk/vol1/run/ERR253/ERR2534080/G144_KO9_RNAseq_24h_1.fastq.gz\t1388655605\t1cafe0e6f1cb09d106bd723397442c86\tftp.sra.ebi.ac.uk/vol1/err/ERR253/000/ERR2534080\t889292627\tc6d6a22ba70b0c08eb9d64cb2584b472\n" headers: Cache-Control: - no-cache, no-store, max-age=0, must-revalidate + Content-Length: + - '483' Content-Type: - text/plain Date: - - Wed, 28 Jul 2021 19:41:40 GMT + - Wed, 17 May 2023 18:35:59 GMT Expires: - '0' Pragma: - no-cache - Server: - - Apache-Coyote/1.1 Strict-Transport-Security: - max-age=0 - Transfer-Encoding: - - chunked X-Content-Type-Options: - nosniff X-Frame-Options: @@ -4245,7 +3561,7 @@ interactions: - 1; mode=block status: code: 200 - message: OK + message: '' - request: body: null headers: @@ -4256,7 +3572,7 @@ interactions: Connection: - keep-alive User-Agent: - - python-requests/2.25.1 + - python-requests/2.30.0 method: GET uri: https://www.ebi.ac.uk/ena/browser/api/xml/ERR2534081 response: @@ -4297,7 +3613,7 @@ interactions: Content-Type: - application/xml Date: - - Wed, 28 Jul 2021 19:41:40 GMT + - Wed, 17 May 2023 18:35:59 GMT Strict-Transport-Security: - max-age=0 Transfer-Encoding: @@ -4315,7 +3631,7 @@ interactions: Connection: - keep-alive User-Agent: - - python-requests/2.25.1 + - python-requests/2.30.0 method: GET uri: https://www.ebi.ac.uk/ena/browser/api/xml/ERX2552502 response: @@ -4383,7 +3699,7 @@ interactions: Content-Type: - application/xml Date: - - Wed, 28 Jul 2021 19:41:40 GMT + - Wed, 17 May 2023 18:35:58 GMT Strict-Transport-Security: - max-age=0 Transfer-Encoding: @@ -4401,63 +3717,51 @@ interactions: Connection: - keep-alive User-Agent: - - python-requests/2.25.1 + - python-requests/2.30.0 method: GET uri: https://www.ebi.ac.uk/ena/browser/api/xml/ERS2428796 response: body: string: "\n\n\n \n ERS2428796\n - \ SAMEA4608100\n + alias=\"E-MTAB-6681:G144_KO9_RNAseq_24h_2\" center_name=\"BRIC - Biotech Research + and Innovation Centre\" broker_name=\"ArrayExpress\">\n \n + \ ERS2428796\n SAMEA4608100\n \ E-MTAB-6681:G144_KO9_RNAseq_24h_2\n \n \ G144_KO9_RNAseq_24h_2\n \n 9606\n \ Homo sapiens\n human\n \ \n Protocols: CRISPR mediated KO of CIC: sgRNAs (Target sequence: mESCs: GCCTTCATGATCTTCAGCAAG; G144: GGGCGAGTGGTGGTATGCCC) - \ were cloned into pSpCas9(BB)-2A-GFP (Addgene 48138) and transfected into - mESCs (Lipofectamine 2000) or G144 cells (Amaxa Nucleofector II, Program A033). + were cloned into pSpCas9(BB)-2A-GFP (Addgene 48138) and transfected into mESCs + (Lipofectamine 2000) or G144 cells (Amaxa Nucleofector II, Program A033). GFP-positive cells were single cell sorted 48h post-transfection, expanded and screened by immunoblotting for CIC deletion. Inhibitor treatment with 1 \u03BCM MEK inhibitor (PD0325901) was performed in 80% confluent cultures for 4 and 24 h respectively. DMSO was used as mock control. Cells were washed - once with PBS, lysed directly in RLT buffer (Qiagen). Total RNA was extracted - using the RNAeasy kit (Qiagen). 500 ng of total RNA was used for library - preparation using TruSeq RNA Library Prep Kit v2 (Illumina) according to manufacturer - recommendations.\n \n \n - \ \n ENA-STUDY\n ERP108370\n - \ \n \n \n - \ \n ENA-EXPERIMENT\n - \ ERX2552502\n \n \n - \ \n \n ENA-RUN\n - \ ERR2534081\n \n \n - \ \n \n ENA-SUBMISSION\n - \ ERA1350207\n \n \n - \ \n \n ENA-FASTQ-FILES\n - \ \n - \ \n \n \n - \ \n ENA-SUBMITTED-FILES\n - \ \n - \ \n \n \n - \ \n \n isolate\n - \ not applicable\n \n - \ \n organism\n Homo - sapiens\n \n \n - \ organism part\n brain\n - \ \n \n cell_type\n - \ glial cell\n \n - \ \n cell_line\n G144\n + once with PBS, lysed directly in RLT buffer (Qiagen). Total RNA was extracted + using the RNAeasy kit (Qiagen). 500 ng of total RNA was used for library preparation + using TruSeq RNA Library Prep Kit v2 (Illumina) according to manufacturer + recommendations.\n \n \n \n + \ ENA-FASTQ-FILES\n \n + \ \n \n \n \n + \ ENA-SUBMITTED-FILES\n \n + \ \n \n\n\n + \ \n ENA-CHECKLIST\n ERC000011\n \ \n \n disease\n \ glioblastoma multiforme\n \n - \ \n genotype\n CRISPR/Cas9 - mediated knockout of CIC\n \n \n - \ individual\n clonal line #9\n - \ \n \n ENA-CHECKLIST\n - \ ERC000011\n \n \n - \ ENA-SPOT-COUNT\n 28684129\n - \ \n \n ENA-BASE-COUNT\n - \ 2165709760\n \n + \ \n individual\n clonal + line #9\n \n \n + \ organism\n Homo sapiens\n + \ \n \n organism\n + \ Homo sapiens\n \n + \ \n cell type\n glial + cell\n \n \n + \ common name\n human\n + \ \n \n organism + part\n brain\n \n + \ \n cell line\n G144\n + \ \n \n genotype\n + \ CRISPR/Cas9 mediated knockout of CIC\n \n \ \n ENA-FIRST-PUBLIC\n \ 2018-05-30\n \n \ \n ENA-LAST-UPDATE\n @@ -4467,7 +3771,7 @@ interactions: Content-Type: - application/xml Date: - - Wed, 28 Jul 2021 19:41:41 GMT + - Wed, 17 May 2023 18:36:00 GMT Strict-Transport-Security: - max-age=0 Transfer-Encoding: @@ -4485,7 +3789,7 @@ interactions: Connection: - keep-alive User-Agent: - - python-requests/2.25.1 + - python-requests/2.30.0 method: GET uri: https://www.ebi.ac.uk/ena/browser/api/xml/ERP108370 response: @@ -4545,7 +3849,7 @@ interactions: Content-Type: - application/xml Date: - - Wed, 28 Jul 2021 19:41:41 GMT + - Wed, 17 May 2023 18:36:00 GMT Strict-Transport-Security: - max-age=0 Transfer-Encoding: @@ -4563,7 +3867,7 @@ interactions: Connection: - keep-alive User-Agent: - - python-requests/2.25.1 + - python-requests/2.30.0 method: GET uri: https://www.ebi.ac.uk/ena/browser/api/xml/ERA1350207 response: @@ -4599,7 +3903,7 @@ interactions: Content-Type: - application/xml Date: - - Wed, 28 Jul 2021 19:41:42 GMT + - Wed, 17 May 2023 18:36:00 GMT Strict-Transport-Security: - max-age=0 Transfer-Encoding: @@ -4607,68 +3911,6 @@ interactions: status: code: 200 message: '' -- request: - body: acc=ERR2534081&accept-proto=fasp&version=2.0 - headers: - Accept: - - '*/*' - Accept-Encoding: - - gzip, deflate - Connection: - - keep-alive - Content-Length: - - '44' - User-Agent: - - python-requests/2.25.1 - method: POST - uri: https://www.ncbi.nlm.nih.gov/Traces/names/names.cgi - response: - body: - string: !!binary | - H4sIAAAAAAAAAwzLvQrDIBRA4T1PIXTIlHL91+ydC6FTN7VKWqSKWkrhPnyzno9zYmeYenP14/Gy - bUxyAYaiVYpJEJojA2oW0AvYG6WrtCvw+8E+OecNZ1yD9Z6rmICqEI89UsMQUQDg9Z1/ZN7HqH0m - tZVRQsnk2YnLuXzjg6TSyNiPUPwrhjH9AQAA//8DAAkU/ZeOAAAA - headers: - Cache-Control: - - private - Connection: - - Keep-Alive - Content-Encoding: - - gzip - Content-Security-Policy: - - upgrade-insecure-requests - Content-Type: - - text/plain - Date: - - Wed, 28 Jul 2021 19:41:43 GMT - Keep-Alive: - - timeout=1, max=10 - NCBI-PHID: - - C7A41E75101B2F710000000000000001.m_1 - NCBI-SID: - - C7A41E75101B2F71_0000SID - Referrer-Policy: - - origin-when-cross-origin - Server: - - Apache - Set-Cookie: - - ncbi_sid=C7A41E75101B2F71_0000SID; domain=.nih.gov; path=/; expires=Thu, 28 - Jul 2022 19:41:43 GMT - SraNameServerOutputVersion: - - '2.0' - Strict-Transport-Security: - - max-age=31536000; includeSubDomains; preload - Transfer-Encoding: - - chunked - Vary: - - Accept-Encoding - X-UA-Compatible: - - IE=Edge - X-XSS-Protection: - - 1; mode=block - status: - code: 200 - message: OK - request: body: null headers: @@ -4679,29 +3921,27 @@ interactions: Connection: - keep-alive User-Agent: - - python-requests/2.25.1 + - python-requests/2.30.0 method: GET uri: https://www.ebi.ac.uk/ena/portal/api/filereport?accession=ERR2534081&result=read_run response: body: - string: "run_accession\tfastq_ftp\tfastq_bytes\tfastq_md5\tsubmitted_ftp\tsubmitted_bytes\tsubmitted_md5\tsra_ftp\tsra_bytes\tsra_md5\nERR2534081\tftp.sra.ebi.ac.uk/vol1/fastq/ERR253/001/ERR2534081/ERR2534081.fastq.gz\t1446750089\t788fc2528be1fba017c3e3256d283a6b\tftp.sra.ebi.ac.uk/vol1/run/ERR253/ERR2534081/G144_KO9_RNAseq_24h_2.fastq.gz\t1505999963\t7d8548778e311bb0dcc7eee2583dcedd\t\t\t\n" + string: "run_accession\tfastq_ftp\tfastq_bytes\tfastq_md5\tbam_ftp\tbam_bytes\tbam_md5\tsubmitted_ftp\tsubmitted_bytes\tsubmitted_md5\tsra_ftp\tsra_bytes\tsra_md5\nERR2534081\tftp.sra.ebi.ac.uk/vol1/fastq/ERR253/001/ERR2534081/ERR2534081.fastq.gz\t1446750089\t788fc2528be1fba017c3e3256d283a6b\t\t\t\tftp.sra.ebi.ac.uk/vol1/run/ERR253/ERR2534081/G144_KO9_RNAseq_24h_2.fastq.gz\t1505999963\t7d8548778e311bb0dcc7eee2583dcedd\tftp.sra.ebi.ac.uk/vol1/err/ERR253/001/ERR2534081\t966250453\tf1d1b0d4d2bc133dfb5df3d4b11f0ea3\n" headers: Cache-Control: - no-cache, no-store, max-age=0, must-revalidate + Content-Length: + - '483' Content-Type: - text/plain Date: - - Wed, 28 Jul 2021 19:41:44 GMT + - Wed, 17 May 2023 18:36:01 GMT Expires: - '0' Pragma: - no-cache - Server: - - Apache-Coyote/1.1 Strict-Transport-Security: - max-age=0 - Transfer-Encoding: - - chunked X-Content-Type-Options: - nosniff X-Frame-Options: @@ -4710,7 +3950,7 @@ interactions: - 1; mode=block status: code: 200 - message: OK + message: '' - request: body: null headers: @@ -4721,7 +3961,7 @@ interactions: Connection: - keep-alive User-Agent: - - python-requests/2.25.1 + - python-requests/2.30.0 method: GET uri: https://www.ebi.ac.uk/ena/browser/api/xml/ERR2534082 response: @@ -4762,7 +4002,7 @@ interactions: Content-Type: - application/xml Date: - - Wed, 28 Jul 2021 19:41:43 GMT + - Wed, 17 May 2023 18:36:01 GMT Strict-Transport-Security: - max-age=0 Transfer-Encoding: @@ -4780,7 +4020,7 @@ interactions: Connection: - keep-alive User-Agent: - - python-requests/2.25.1 + - python-requests/2.30.0 method: GET uri: https://www.ebi.ac.uk/ena/browser/api/xml/ERX2552503 response: @@ -4848,7 +4088,7 @@ interactions: Content-Type: - application/xml Date: - - Wed, 28 Jul 2021 19:41:44 GMT + - Wed, 17 May 2023 18:36:02 GMT Strict-Transport-Security: - max-age=0 Transfer-Encoding: @@ -4866,63 +4106,51 @@ interactions: Connection: - keep-alive User-Agent: - - python-requests/2.25.1 + - python-requests/2.30.0 method: GET uri: https://www.ebi.ac.uk/ena/browser/api/xml/ERS2428797 response: body: string: "\n\n\n \n ERS2428797\n - \ SAMEA4608101\n + alias=\"E-MTAB-6681:G144_KO9_RNAseq_4h_1\" center_name=\"BRIC - Biotech Research + and Innovation Centre\" broker_name=\"ArrayExpress\">\n \n + \ ERS2428797\n SAMEA4608101\n \ E-MTAB-6681:G144_KO9_RNAseq_4h_1\n \n \ G144_KO9_RNAseq_4h_1\n \n 9606\n \ Homo sapiens\n human\n \ \n Protocols: CRISPR mediated KO of CIC: sgRNAs (Target sequence: mESCs: GCCTTCATGATCTTCAGCAAG; G144: GGGCGAGTGGTGGTATGCCC) - \ were cloned into pSpCas9(BB)-2A-GFP (Addgene 48138) and transfected into - mESCs (Lipofectamine 2000) or G144 cells (Amaxa Nucleofector II, Program A033). + were cloned into pSpCas9(BB)-2A-GFP (Addgene 48138) and transfected into mESCs + (Lipofectamine 2000) or G144 cells (Amaxa Nucleofector II, Program A033). GFP-positive cells were single cell sorted 48h post-transfection, expanded and screened by immunoblotting for CIC deletion. Inhibitor treatment with 1 \u03BCM MEK inhibitor (PD0325901) was performed in 80% confluent cultures for 4 and 24 h respectively. DMSO was used as mock control. Cells were washed - once with PBS, lysed directly in RLT buffer (Qiagen). Total RNA was extracted - using the RNAeasy kit (Qiagen). 500 ng of total RNA was used for library - preparation using TruSeq RNA Library Prep Kit v2 (Illumina) according to manufacturer - recommendations.\n \n \n - \ \n ENA-STUDY\n ERP108370\n - \ \n \n \n - \ \n ENA-EXPERIMENT\n - \ ERX2552503\n \n \n - \ \n \n ENA-RUN\n - \ ERR2534082\n \n \n - \ \n \n ENA-SUBMISSION\n - \ ERA1350207\n \n \n - \ \n \n ENA-FASTQ-FILES\n - \ \n - \ \n \n \n - \ \n ENA-SUBMITTED-FILES\n - \ \n - \ \n \n \n - \ \n \n isolate\n - \ not applicable\n \n - \ \n organism\n Homo - sapiens\n \n \n - \ organism part\n brain\n - \ \n \n cell_type\n - \ glial cell\n \n - \ \n cell_line\n G144\n + once with PBS, lysed directly in RLT buffer (Qiagen). Total RNA was extracted + using the RNAeasy kit (Qiagen). 500 ng of total RNA was used for library preparation + using TruSeq RNA Library Prep Kit v2 (Illumina) according to manufacturer + recommendations.\n \n \n \n + \ ENA-FASTQ-FILES\n \n + \ \n \n \n \n + \ ENA-SUBMITTED-FILES\n \n + \ \n \n\n\n + \ \n ENA-CHECKLIST\n ERC000011\n \ \n \n disease\n \ glioblastoma multiforme\n \n - \ \n genotype\n CRISPR/Cas9 - mediated knockout of CIC\n \n \n - \ individual\n clonal line #9\n - \ \n \n ENA-CHECKLIST\n - \ ERC000011\n \n \n - \ ENA-SPOT-COUNT\n 36759653\n - \ \n \n ENA-BASE-COUNT\n - \ 2776723098\n \n + \ \n individual\n clonal + line #9\n \n \n + \ organism\n Homo sapiens\n + \ \n \n organism\n + \ Homo sapiens\n \n + \ \n cell type\n glial + cell\n \n \n + \ common name\n human\n + \ \n \n organism + part\n brain\n \n + \ \n cell line\n G144\n + \ \n \n genotype\n + \ CRISPR/Cas9 mediated knockout of CIC\n \n \ \n ENA-FIRST-PUBLIC\n \ 2018-05-30\n \n \ \n ENA-LAST-UPDATE\n @@ -4932,7 +4160,7 @@ interactions: Content-Type: - application/xml Date: - - Wed, 28 Jul 2021 19:41:44 GMT + - Wed, 17 May 2023 18:36:01 GMT Strict-Transport-Security: - max-age=0 Transfer-Encoding: @@ -4950,7 +4178,7 @@ interactions: Connection: - keep-alive User-Agent: - - python-requests/2.25.1 + - python-requests/2.30.0 method: GET uri: https://www.ebi.ac.uk/ena/browser/api/xml/ERP108370 response: @@ -5010,7 +4238,7 @@ interactions: Content-Type: - application/xml Date: - - Wed, 28 Jul 2021 19:41:45 GMT + - Wed, 17 May 2023 18:36:02 GMT Strict-Transport-Security: - max-age=0 Transfer-Encoding: @@ -5028,7 +4256,7 @@ interactions: Connection: - keep-alive User-Agent: - - python-requests/2.25.1 + - python-requests/2.30.0 method: GET uri: https://www.ebi.ac.uk/ena/browser/api/xml/ERA1350207 response: @@ -5064,7 +4292,7 @@ interactions: Content-Type: - application/xml Date: - - Wed, 28 Jul 2021 19:41:46 GMT + - Wed, 17 May 2023 18:36:03 GMT Strict-Transport-Security: - max-age=0 Transfer-Encoding: @@ -5072,68 +4300,6 @@ interactions: status: code: 200 message: '' -- request: - body: acc=ERR2534082&accept-proto=fasp&version=2.0 - headers: - Accept: - - '*/*' - Accept-Encoding: - - gzip, deflate - Connection: - - keep-alive - Content-Length: - - '44' - User-Agent: - - python-requests/2.25.1 - method: POST - uri: https://www.ncbi.nlm.nih.gov/Traces/names/names.cgi - response: - body: - string: !!binary | - H4sIAAAAAAAAAwzIsQ6CMBQF0J2vaOLAhLnvtZXC7mxCnNxoKUHTUAI1xuR9vJ7xnPiM6tjH7e3l - OgxstYFjIdYgy9QaYZBr0Dbo7kS9dT3rh0xTB7pQCC54F52BZ+MjQc+sCbAiYgC5remr6qWU7ajV - tueSQ07qeagxpfyJk5rzrsryj+xfMZTqBwAA//8DAEXu4WyPAAAA - headers: - Cache-Control: - - private - Connection: - - Keep-Alive - Content-Encoding: - - gzip - Content-Security-Policy: - - upgrade-insecure-requests - Content-Type: - - text/plain - Date: - - Wed, 28 Jul 2021 19:41:47 GMT - Keep-Alive: - - timeout=1, max=10 - NCBI-PHID: - - C7A41EA2101B2FB10000000000000001.m_1 - NCBI-SID: - - C7A41EA2101B2FB1_0000SID - Referrer-Policy: - - origin-when-cross-origin - Server: - - Apache - Set-Cookie: - - ncbi_sid=C7A41EA2101B2FB1_0000SID; domain=.nih.gov; path=/; expires=Thu, 28 - Jul 2022 19:41:47 GMT - SraNameServerOutputVersion: - - '2.0' - Strict-Transport-Security: - - max-age=31536000; includeSubDomains; preload - Transfer-Encoding: - - chunked - Vary: - - Accept-Encoding - X-UA-Compatible: - - IE=Edge - X-XSS-Protection: - - 1; mode=block - status: - code: 200 - message: OK - request: body: null headers: @@ -5144,29 +4310,27 @@ interactions: Connection: - keep-alive User-Agent: - - python-requests/2.25.1 + - python-requests/2.30.0 method: GET uri: https://www.ebi.ac.uk/ena/portal/api/filereport?accession=ERR2534082&result=read_run response: body: - string: "run_accession\tfastq_ftp\tfastq_bytes\tfastq_md5\tsubmitted_ftp\tsubmitted_bytes\tsubmitted_md5\tsra_ftp\tsra_bytes\tsra_md5\nERR2534082\tftp.sra.ebi.ac.uk/vol1/fastq/ERR253/002/ERR2534082/ERR2534082.fastq.gz\t1810089565\t7b93d8c5e3baaead488b919819d1f8b7\tftp.sra.ebi.ac.uk/vol1/run/ERR253/ERR2534082/G144_KO9_RNAseq_4h_1.fastq.gz\t1914915905\t0050389f2fbb6b230a0adf29580c38df\t\t\t\n" + string: "run_accession\tfastq_ftp\tfastq_bytes\tfastq_md5\tbam_ftp\tbam_bytes\tbam_md5\tsubmitted_ftp\tsubmitted_bytes\tsubmitted_md5\tsra_ftp\tsra_bytes\tsra_md5\nERR2534082\tftp.sra.ebi.ac.uk/vol1/fastq/ERR253/002/ERR2534082/ERR2534082.fastq.gz\t1810089565\t7b93d8c5e3baaead488b919819d1f8b7\t\t\t\tftp.sra.ebi.ac.uk/vol1/run/ERR253/ERR2534082/G144_KO9_RNAseq_4h_1.fastq.gz\t1914915905\t0050389f2fbb6b230a0adf29580c38df\tftp.sra.ebi.ac.uk/vol1/err/ERR253/002/ERR2534082\t1230152154\tdae4a49ebab73aa65c79030b43c2e931\n" headers: Cache-Control: - no-cache, no-store, max-age=0, must-revalidate + Content-Length: + - '483' Content-Type: - text/plain Date: - - Wed, 28 Jul 2021 19:41:48 GMT + - Wed, 17 May 2023 18:36:03 GMT Expires: - '0' Pragma: - no-cache - Server: - - Apache-Coyote/1.1 Strict-Transport-Security: - max-age=0 - Transfer-Encoding: - - chunked X-Content-Type-Options: - nosniff X-Frame-Options: @@ -5175,7 +4339,7 @@ interactions: - 1; mode=block status: code: 200 - message: OK + message: '' - request: body: null headers: @@ -5186,7 +4350,7 @@ interactions: Connection: - keep-alive User-Agent: - - python-requests/2.25.1 + - python-requests/2.30.0 method: GET uri: https://www.ebi.ac.uk/ena/browser/api/xml/ERR2534083 response: @@ -5227,7 +4391,7 @@ interactions: Content-Type: - application/xml Date: - - Wed, 28 Jul 2021 19:41:49 GMT + - Wed, 17 May 2023 18:36:03 GMT Strict-Transport-Security: - max-age=0 Transfer-Encoding: @@ -5245,7 +4409,7 @@ interactions: Connection: - keep-alive User-Agent: - - python-requests/2.25.1 + - python-requests/2.30.0 method: GET uri: https://www.ebi.ac.uk/ena/browser/api/xml/ERX2552504 response: @@ -5313,7 +4477,7 @@ interactions: Content-Type: - application/xml Date: - - Wed, 28 Jul 2021 19:41:49 GMT + - Wed, 17 May 2023 18:36:04 GMT Strict-Transport-Security: - max-age=0 Transfer-Encoding: @@ -5331,63 +4495,51 @@ interactions: Connection: - keep-alive User-Agent: - - python-requests/2.25.1 + - python-requests/2.30.0 method: GET uri: https://www.ebi.ac.uk/ena/browser/api/xml/ERS2428798 response: body: string: "\n\n\n \n ERS2428798\n - \ SAMEA4608102\n + alias=\"E-MTAB-6681:G144_KO9_RNAseq_4h_2\" center_name=\"BRIC - Biotech Research + and Innovation Centre\" broker_name=\"ArrayExpress\">\n \n + \ ERS2428798\n SAMEA4608102\n \ E-MTAB-6681:G144_KO9_RNAseq_4h_2\n \n \ G144_KO9_RNAseq_4h_2\n \n 9606\n \ Homo sapiens\n human\n \ \n Protocols: CRISPR mediated KO of CIC: sgRNAs (Target sequence: mESCs: GCCTTCATGATCTTCAGCAAG; G144: GGGCGAGTGGTGGTATGCCC) - \ were cloned into pSpCas9(BB)-2A-GFP (Addgene 48138) and transfected into - mESCs (Lipofectamine 2000) or G144 cells (Amaxa Nucleofector II, Program A033). + were cloned into pSpCas9(BB)-2A-GFP (Addgene 48138) and transfected into mESCs + (Lipofectamine 2000) or G144 cells (Amaxa Nucleofector II, Program A033). GFP-positive cells were single cell sorted 48h post-transfection, expanded and screened by immunoblotting for CIC deletion. Inhibitor treatment with 1 \u03BCM MEK inhibitor (PD0325901) was performed in 80% confluent cultures for 4 and 24 h respectively. DMSO was used as mock control. Cells were washed - once with PBS, lysed directly in RLT buffer (Qiagen). Total RNA was extracted - using the RNAeasy kit (Qiagen). 500 ng of total RNA was used for library - preparation using TruSeq RNA Library Prep Kit v2 (Illumina) according to manufacturer - recommendations.\n \n \n - \ \n ENA-STUDY\n ERP108370\n - \ \n \n \n - \ \n ENA-EXPERIMENT\n - \ ERX2552504\n \n \n - \ \n \n ENA-RUN\n - \ ERR2534083\n \n \n - \ \n \n ENA-SUBMISSION\n - \ ERA1350207\n \n \n - \ \n \n ENA-FASTQ-FILES\n - \ \n - \ \n \n \n - \ \n ENA-SUBMITTED-FILES\n - \ \n - \ \n \n \n - \ \n \n isolate\n - \ not applicable\n \n - \ \n organism\n Homo - sapiens\n \n \n - \ organism part\n brain\n - \ \n \n cell_type\n - \ glial cell\n \n - \ \n cell_line\n G144\n + once with PBS, lysed directly in RLT buffer (Qiagen). Total RNA was extracted + using the RNAeasy kit (Qiagen). 500 ng of total RNA was used for library preparation + using TruSeq RNA Library Prep Kit v2 (Illumina) according to manufacturer + recommendations.\n \n \n \n + \ ENA-FASTQ-FILES\n \n + \ \n \n \n \n + \ ENA-SUBMITTED-FILES\n \n + \ \n \n\n\n + \ \n ENA-CHECKLIST\n ERC000011\n \ \n \n disease\n \ glioblastoma multiforme\n \n - \ \n genotype\n CRISPR/Cas9 - mediated knockout of CIC\n \n \n - \ individual\n clonal line #9\n - \ \n \n ENA-CHECKLIST\n - \ ERC000011\n \n \n - \ ENA-SPOT-COUNT\n 28325395\n - \ \n \n ENA-BASE-COUNT\n - \ 2139937955\n \n + \ \n individual\n clonal + line #9\n \n \n + \ organism\n Homo sapiens\n + \ \n \n organism\n + \ Homo sapiens\n \n + \ \n cell type\n glial + cell\n \n \n + \ common name\n human\n + \ \n \n organism + part\n brain\n \n + \ \n cell line\n G144\n + \ \n \n genotype\n + \ CRISPR/Cas9 mediated knockout of CIC\n \n \ \n ENA-FIRST-PUBLIC\n \ 2018-05-30\n \n \ \n ENA-LAST-UPDATE\n @@ -5397,7 +4549,7 @@ interactions: Content-Type: - application/xml Date: - - Wed, 28 Jul 2021 19:41:50 GMT + - Wed, 17 May 2023 18:36:04 GMT Strict-Transport-Security: - max-age=0 Transfer-Encoding: @@ -5415,7 +4567,7 @@ interactions: Connection: - keep-alive User-Agent: - - python-requests/2.25.1 + - python-requests/2.30.0 method: GET uri: https://www.ebi.ac.uk/ena/browser/api/xml/ERP108370 response: @@ -5475,7 +4627,7 @@ interactions: Content-Type: - application/xml Date: - - Wed, 28 Jul 2021 19:41:51 GMT + - Wed, 17 May 2023 18:36:04 GMT Strict-Transport-Security: - max-age=0 Transfer-Encoding: @@ -5493,7 +4645,7 @@ interactions: Connection: - keep-alive User-Agent: - - python-requests/2.25.1 + - python-requests/2.30.0 method: GET uri: https://www.ebi.ac.uk/ena/browser/api/xml/ERA1350207 response: @@ -5529,7 +4681,7 @@ interactions: Content-Type: - application/xml Date: - - Wed, 28 Jul 2021 19:41:51 GMT + - Wed, 17 May 2023 18:36:05 GMT Strict-Transport-Security: - max-age=0 Transfer-Encoding: @@ -5537,68 +4689,6 @@ interactions: status: code: 200 message: '' -- request: - body: acc=ERR2534083&accept-proto=fasp&version=2.0 - headers: - Accept: - - '*/*' - Accept-Encoding: - - gzip, deflate - Connection: - - keep-alive - Content-Length: - - '44' - User-Agent: - - python-requests/2.25.1 - method: POST - uri: https://www.ncbi.nlm.nih.gov/Traces/names/names.cgi - response: - body: - string: !!binary | - H4sIAAAAAAAAAwzIsQqDMBAA0N2vCHRwspx3F3O6dy5Ip25GI7aERkxKKdzHt298JzxDlY9pf3u9 - jCNaYhDS3pLjjp0oQisNuAb6W4sDwEDdXTtyKEKIC1MvsthAtEJoCW1gdl5VGUCvr/g19VbKnmuz - H6mkOUXzyGaKMX3CYtZ0mLL9I/lnmEv1AwAA//8DAGfSJeKOAAAA - headers: - Cache-Control: - - private - Connection: - - Keep-Alive - Content-Encoding: - - gzip - Content-Security-Policy: - - upgrade-insecure-requests - Content-Type: - - text/plain - Date: - - Wed, 28 Jul 2021 19:41:52 GMT - Keep-Alive: - - timeout=1, max=10 - NCBI-PHID: - - C7A41EC6101B30010000000000000001.m_1 - NCBI-SID: - - C7A41EC6101B3001_0000SID - Referrer-Policy: - - origin-when-cross-origin - Server: - - Apache - Set-Cookie: - - ncbi_sid=C7A41EC6101B3001_0000SID; domain=.nih.gov; path=/; expires=Thu, 28 - Jul 2022 19:41:52 GMT - SraNameServerOutputVersion: - - '2.0' - Strict-Transport-Security: - - max-age=31536000; includeSubDomains; preload - Transfer-Encoding: - - chunked - Vary: - - Accept-Encoding - X-UA-Compatible: - - IE=Edge - X-XSS-Protection: - - 1; mode=block - status: - code: 200 - message: OK - request: body: null headers: @@ -5609,29 +4699,27 @@ interactions: Connection: - keep-alive User-Agent: - - python-requests/2.25.1 + - python-requests/2.30.0 method: GET uri: https://www.ebi.ac.uk/ena/portal/api/filereport?accession=ERR2534083&result=read_run response: body: - string: "run_accession\tfastq_ftp\tfastq_bytes\tfastq_md5\tsubmitted_ftp\tsubmitted_bytes\tsubmitted_md5\tsra_ftp\tsra_bytes\tsra_md5\nERR2534083\tftp.sra.ebi.ac.uk/vol1/fastq/ERR253/003/ERR2534083/ERR2534083.fastq.gz\t1364338778\t5d9c21fcdbf30929dd54fe64a2858096\tftp.sra.ebi.ac.uk/vol1/run/ERR253/ERR2534083/G144_KO9_RNAseq_4h_2.fastq.gz\t1476580896\tb175da8f8c4548f974ca380386daa3b9\t\t\t\n" + string: "run_accession\tfastq_ftp\tfastq_bytes\tfastq_md5\tbam_ftp\tbam_bytes\tbam_md5\tsubmitted_ftp\tsubmitted_bytes\tsubmitted_md5\tsra_ftp\tsra_bytes\tsra_md5\nERR2534083\tftp.sra.ebi.ac.uk/vol1/fastq/ERR253/003/ERR2534083/ERR2534083.fastq.gz\t1364338778\t5d9c21fcdbf30929dd54fe64a2858096\t\t\t\tftp.sra.ebi.ac.uk/vol1/run/ERR253/ERR2534083/G144_KO9_RNAseq_4h_2.fastq.gz\t1476580896\tb175da8f8c4548f974ca380386daa3b9\tftp.sra.ebi.ac.uk/vol1/err/ERR253/003/ERR2534083\t953746458\ta8d792feb447419a62dc2ad2388904f9\n" headers: Cache-Control: - no-cache, no-store, max-age=0, must-revalidate + Content-Length: + - '482' Content-Type: - text/plain Date: - - Wed, 28 Jul 2021 19:41:52 GMT + - Wed, 17 May 2023 18:36:06 GMT Expires: - '0' Pragma: - no-cache - Server: - - Apache-Coyote/1.1 Strict-Transport-Security: - max-age=0 - Transfer-Encoding: - - chunked X-Content-Type-Options: - nosniff X-Frame-Options: @@ -5640,7 +4728,7 @@ interactions: - 1; mode=block status: code: 200 - message: OK + message: '' - request: body: null headers: @@ -5651,7 +4739,7 @@ interactions: Connection: - keep-alive User-Agent: - - python-requests/2.25.1 + - python-requests/2.30.0 method: GET uri: https://www.ebi.ac.uk/ena/browser/api/xml/ERR2534084 response: @@ -5693,7 +4781,7 @@ interactions: Content-Type: - application/xml Date: - - Wed, 28 Jul 2021 19:41:53 GMT + - Wed, 17 May 2023 18:36:05 GMT Strict-Transport-Security: - max-age=0 Transfer-Encoding: @@ -5711,7 +4799,7 @@ interactions: Connection: - keep-alive User-Agent: - - python-requests/2.25.1 + - python-requests/2.30.0 method: GET uri: https://www.ebi.ac.uk/ena/browser/api/xml/ERX2552505 response: @@ -5775,7 +4863,7 @@ interactions: Content-Type: - application/xml Date: - - Wed, 28 Jul 2021 19:41:53 GMT + - Wed, 17 May 2023 18:36:07 GMT Strict-Transport-Security: - max-age=0 Transfer-Encoding: @@ -5793,14 +4881,14 @@ interactions: Connection: - keep-alive User-Agent: - - python-requests/2.25.1 + - python-requests/2.30.0 method: GET uri: https://www.ebi.ac.uk/ena/browser/api/xml/ERS2428799 response: body: string: "\n\n\n \n + alias=\"E-MTAB-6681:G144_Parental_RNAseq_DMSO1\" center_name=\"BRIC - Biotech + Research and Innovation Centre\" broker_name=\"ArrayExpress\">\n \n \ ERS2428799\n SAMEA4608103\n \ E-MTAB-6681:G144_Parental_RNAseq_DMSO1\n \n @@ -5808,57 +4896,45 @@ interactions: \ Homo sapiens\n human\n \ \n Protocols: CRISPR mediated KO of CIC: sgRNAs (Target sequence: mESCs: GCCTTCATGATCTTCAGCAAG; G144: GGGCGAGTGGTGGTATGCCC) - \ were cloned into pSpCas9(BB)-2A-GFP (Addgene 48138) and transfected into - mESCs (Lipofectamine 2000) or G144 cells (Amaxa Nucleofector II, Program A033). + were cloned into pSpCas9(BB)-2A-GFP (Addgene 48138) and transfected into mESCs + (Lipofectamine 2000) or G144 cells (Amaxa Nucleofector II, Program A033). GFP-positive cells were single cell sorted 48h post-transfection, expanded and screened by immunoblotting for CIC deletion. Inhibitor treatment with 1 \u03BCM MEK inhibitor (PD0325901) was performed in 80% confluent cultures for 4 and 24 h respectively. DMSO was used as mock control. Cells were washed - once with PBS, lysed directly in RLT buffer (Qiagen). Total RNA was extracted - using the RNAeasy kit (Qiagen). 500 ng of total RNA was used for library - preparation using TruSeq RNA Library Prep Kit v2 (Illumina) according to manufacturer - recommendations.\n \n \n - \ \n ENA-STUDY\n ERP108370\n - \ \n \n \n - \ \n ENA-EXPERIMENT\n - \ ERX2552505\n \n \n - \ \n \n ENA-RUN\n - \ ERR2534084\n \n \n - \ \n \n ENA-SUBMISSION\n - \ ERA1350207\n \n \n - \ \n \n ENA-FASTQ-FILES\n - \ \n - \ \n \n \n - \ \n ENA-SUBMITTED-FILES\n - \ \n - \ \n \n \n - \ \n \n isolate\n - \ not applicable\n \n - \ \n organism\n Homo - sapiens\n \n \n - \ organism part\n brain\n - \ \n \n cell_type\n - \ glial cell\n \n - \ \n cell_line\n G144\n + once with PBS, lysed directly in RLT buffer (Qiagen). Total RNA was extracted + using the RNAeasy kit (Qiagen). 500 ng of total RNA was used for library preparation + using TruSeq RNA Library Prep Kit v2 (Illumina) according to manufacturer + recommendations.\n \n \n \n + \ ENA-FASTQ-FILES\n \n + \ \n \n \n \n + \ ENA-SUBMITTED-FILES\n \n + \ \n \n\n\n + \ \n ENA-CHECKLIST\n ERC000011\n \ \n \n disease\n \ glioblastoma multiforme\n \n + \ \n individual\n 1\n + \ \n \n organism\n + \ Homo sapiens\n \n + \ \n organism\n Homo + sapiens\n \n \n + \ cell type\n glial cell\n + \ \n \n common + name\n human\n \n + \ \n organism part\n brain\n + \ \n \n cell + line\n G144\n \n \ \n genotype\n wild type genotype\n \n \n - \ individual\n 1\n \n - \ \n ENA-CHECKLIST\n ERC000011\n - \ \n \n ENA-SPOT-COUNT\n - \ 26499768\n \n \n - \ ENA-BASE-COUNT\n 2000152520\n - \ \n \n ENA-FIRST-PUBLIC\n - \ 2018-05-30\n \n - \ \n ENA-LAST-UPDATE\n + \ ENA-FIRST-PUBLIC\n 2018-05-30\n + \ \n \n ENA-LAST-UPDATE\n \ 2018-04-24\n \n \ \n\n\n" headers: Content-Type: - application/xml Date: - - Wed, 28 Jul 2021 19:41:54 GMT + - Wed, 17 May 2023 18:36:07 GMT Strict-Transport-Security: - max-age=0 Transfer-Encoding: @@ -5876,7 +4952,7 @@ interactions: Connection: - keep-alive User-Agent: - - python-requests/2.25.1 + - python-requests/2.30.0 method: GET uri: https://www.ebi.ac.uk/ena/browser/api/xml/ERP108370 response: @@ -5936,7 +5012,7 @@ interactions: Content-Type: - application/xml Date: - - Wed, 28 Jul 2021 19:41:54 GMT + - Wed, 17 May 2023 18:36:07 GMT Strict-Transport-Security: - max-age=0 Transfer-Encoding: @@ -5954,7 +5030,7 @@ interactions: Connection: - keep-alive User-Agent: - - python-requests/2.25.1 + - python-requests/2.30.0 method: GET uri: https://www.ebi.ac.uk/ena/browser/api/xml/ERA1350207 response: @@ -5990,7 +5066,7 @@ interactions: Content-Type: - application/xml Date: - - Wed, 28 Jul 2021 19:41:55 GMT + - Wed, 17 May 2023 18:36:07 GMT Strict-Transport-Security: - max-age=0 Transfer-Encoding: @@ -5998,68 +5074,6 @@ interactions: status: code: 200 message: '' -- request: - body: acc=ERR2534084&accept-proto=fasp&version=2.0 - headers: - Accept: - - '*/*' - Accept-Encoding: - - gzip, deflate - Connection: - - keep-alive - Content-Length: - - '44' - User-Agent: - - python-requests/2.25.1 - method: POST - uri: https://www.ncbi.nlm.nih.gov/Traces/names/names.cgi - response: - body: - string: !!binary | - H4sIAAAAAAAAAwzIvQrCMBAA4L1PEXDoVLlcc/np7iwUJ7cmbagSTGgiItzD6zd+JzxDV4+lvD1f - 5hlpVGAVW9RKAjrNCNIOYAZwNyknchOZOxOOgdDFqAKsligY2LxxOjqPZIJlZgXA11f6in5vrdRe - lCO3HHISjyqWlPJnW0XMh2j7P7J/bqF1PwAAAP//AwCTsKqLjgAAAA== - headers: - Cache-Control: - - private - Connection: - - Keep-Alive - Content-Encoding: - - gzip - Content-Security-Policy: - - upgrade-insecure-requests - Content-Type: - - text/plain - Date: - - Wed, 28 Jul 2021 19:41:56 GMT - Keep-Alive: - - timeout=1, max=10 - NCBI-PHID: - - CC95EFB4101B30410000000000000001.m_1 - NCBI-SID: - - CC95EFB4101B3041_0000SID - Referrer-Policy: - - origin-when-cross-origin - Server: - - Apache - Set-Cookie: - - ncbi_sid=CC95EFB4101B3041_0000SID; domain=.nih.gov; path=/; expires=Thu, 28 - Jul 2022 19:41:56 GMT - SraNameServerOutputVersion: - - '2.0' - Strict-Transport-Security: - - max-age=31536000; includeSubDomains; preload - Transfer-Encoding: - - chunked - Vary: - - Accept-Encoding - X-UA-Compatible: - - IE=Edge - X-XSS-Protection: - - 1; mode=block - status: - code: 200 - message: OK - request: body: null headers: @@ -6070,29 +5084,27 @@ interactions: Connection: - keep-alive User-Agent: - - python-requests/2.25.1 + - python-requests/2.30.0 method: GET uri: https://www.ebi.ac.uk/ena/portal/api/filereport?accession=ERR2534084&result=read_run response: body: - string: "run_accession\tfastq_ftp\tfastq_bytes\tfastq_md5\tsubmitted_ftp\tsubmitted_bytes\tsubmitted_md5\tsra_ftp\tsra_bytes\tsra_md5\nERR2534084\tftp.sra.ebi.ac.uk/vol1/fastq/ERR253/004/ERR2534084/ERR2534084.fastq.gz\t1246412999\t66ea10048085214a1d6a2164fad08440\tftp.sra.ebi.ac.uk/vol1/run/ERR253/ERR2534084/G144_Parental_RNAseq_DMSO1.fastq.gz\t1298135488\ta174bf37dd39e1848734eebd87555d64\t\t\t\n" + string: "run_accession\tfastq_ftp\tfastq_bytes\tfastq_md5\tbam_ftp\tbam_bytes\tbam_md5\tsubmitted_ftp\tsubmitted_bytes\tsubmitted_md5\tsra_ftp\tsra_bytes\tsra_md5\nERR2534084\tftp.sra.ebi.ac.uk/vol1/fastq/ERR253/004/ERR2534084/ERR2534084.fastq.gz\t1246412999\t66ea10048085214a1d6a2164fad08440\t\t\t\tftp.sra.ebi.ac.uk/vol1/run/ERR253/ERR2534084/G144_Parental_RNAseq_DMSO1.fastq.gz\t1298135488\ta174bf37dd39e1848734eebd87555d64\tftp.sra.ebi.ac.uk/vol1/err/ERR253/004/ERR2534084\t826410276\t07fa8afa15db6810690ce69acd63ec31\n" headers: Cache-Control: - no-cache, no-store, max-age=0, must-revalidate + Content-Length: + - '488' Content-Type: - text/plain Date: - - Wed, 28 Jul 2021 19:41:57 GMT + - Wed, 17 May 2023 18:36:08 GMT Expires: - '0' Pragma: - no-cache - Server: - - Apache-Coyote/1.1 Strict-Transport-Security: - max-age=0 - Transfer-Encoding: - - chunked X-Content-Type-Options: - nosniff X-Frame-Options: @@ -6101,7 +5113,7 @@ interactions: - 1; mode=block status: code: 200 - message: OK + message: '' - request: body: null headers: @@ -6112,7 +5124,7 @@ interactions: Connection: - keep-alive User-Agent: - - python-requests/2.25.1 + - python-requests/2.30.0 method: GET uri: https://www.ebi.ac.uk/ena/browser/api/xml/ERR2534085 response: @@ -6154,7 +5166,7 @@ interactions: Content-Type: - application/xml Date: - - Wed, 28 Jul 2021 19:41:57 GMT + - Wed, 17 May 2023 18:36:08 GMT Strict-Transport-Security: - max-age=0 Transfer-Encoding: @@ -6172,7 +5184,7 @@ interactions: Connection: - keep-alive User-Agent: - - python-requests/2.25.1 + - python-requests/2.30.0 method: GET uri: https://www.ebi.ac.uk/ena/browser/api/xml/ERX2552506 response: @@ -6236,7 +5248,7 @@ interactions: Content-Type: - application/xml Date: - - Wed, 28 Jul 2021 19:41:58 GMT + - Wed, 17 May 2023 18:36:08 GMT Strict-Transport-Security: - max-age=0 Transfer-Encoding: @@ -6254,14 +5266,14 @@ interactions: Connection: - keep-alive User-Agent: - - python-requests/2.25.1 + - python-requests/2.30.0 method: GET uri: https://www.ebi.ac.uk/ena/browser/api/xml/ERS2428800 response: body: string: "\n\n\n \n + alias=\"E-MTAB-6681:G144_Parental_RNAseq_DMSO2\" center_name=\"BRIC - Biotech + Research and Innovation Centre\" broker_name=\"ArrayExpress\">\n \n \ ERS2428800\n SAMEA4608104\n \ E-MTAB-6681:G144_Parental_RNAseq_DMSO2\n \n @@ -6269,57 +5281,45 @@ interactions: \ Homo sapiens\n human\n \ \n Protocols: CRISPR mediated KO of CIC: sgRNAs (Target sequence: mESCs: GCCTTCATGATCTTCAGCAAG; G144: GGGCGAGTGGTGGTATGCCC) - \ were cloned into pSpCas9(BB)-2A-GFP (Addgene 48138) and transfected into - mESCs (Lipofectamine 2000) or G144 cells (Amaxa Nucleofector II, Program A033). + were cloned into pSpCas9(BB)-2A-GFP (Addgene 48138) and transfected into mESCs + (Lipofectamine 2000) or G144 cells (Amaxa Nucleofector II, Program A033). GFP-positive cells were single cell sorted 48h post-transfection, expanded and screened by immunoblotting for CIC deletion. Inhibitor treatment with 1 \u03BCM MEK inhibitor (PD0325901) was performed in 80% confluent cultures for 4 and 24 h respectively. DMSO was used as mock control. Cells were washed - once with PBS, lysed directly in RLT buffer (Qiagen). Total RNA was extracted - using the RNAeasy kit (Qiagen). 500 ng of total RNA was used for library - preparation using TruSeq RNA Library Prep Kit v2 (Illumina) according to manufacturer - recommendations.\n \n \n - \ \n ENA-STUDY\n ERP108370\n - \ \n \n \n - \ \n ENA-EXPERIMENT\n - \ ERX2552506\n \n \n - \ \n \n ENA-RUN\n - \ ERR2534085\n \n \n - \ \n \n ENA-SUBMISSION\n - \ ERA1350207\n \n \n - \ \n \n ENA-FASTQ-FILES\n - \ \n - \ \n \n \n - \ \n ENA-SUBMITTED-FILES\n - \ \n - \ \n \n \n - \ \n \n isolate\n - \ not applicable\n \n - \ \n organism\n Homo - sapiens\n \n \n - \ organism part\n brain\n - \ \n \n cell_type\n - \ glial cell\n \n - \ \n cell_line\n G144\n + once with PBS, lysed directly in RLT buffer (Qiagen). Total RNA was extracted + using the RNAeasy kit (Qiagen). 500 ng of total RNA was used for library preparation + using TruSeq RNA Library Prep Kit v2 (Illumina) according to manufacturer + recommendations.\n \n \n \n + \ ENA-FASTQ-FILES\n \n + \ \n \n \n \n + \ ENA-SUBMITTED-FILES\n \n + \ \n \n\n\n + \ \n ENA-CHECKLIST\n ERC000011\n \ \n \n disease\n \ glioblastoma multiforme\n \n + \ \n individual\n 1\n + \ \n \n organism\n + \ Homo sapiens\n \n + \ \n organism\n Homo + sapiens\n \n \n + \ cell type\n glial cell\n + \ \n \n common + name\n human\n \n + \ \n organism part\n brain\n + \ \n \n cell + line\n G144\n \n \ \n genotype\n wild type genotype\n \n \n - \ individual\n 1\n \n - \ \n ENA-CHECKLIST\n ERC000011\n - \ \n \n ENA-SPOT-COUNT\n - \ 21013213\n \n \n - \ ENA-BASE-COUNT\n 1586164243\n - \ \n \n ENA-FIRST-PUBLIC\n - \ 2018-05-30\n \n - \ \n ENA-LAST-UPDATE\n + \ ENA-FIRST-PUBLIC\n 2018-05-30\n + \ \n \n ENA-LAST-UPDATE\n \ 2018-04-24\n \n \ \n\n\n" headers: Content-Type: - application/xml Date: - - Wed, 28 Jul 2021 19:41:59 GMT + - Wed, 17 May 2023 18:36:09 GMT Strict-Transport-Security: - max-age=0 Transfer-Encoding: @@ -6337,7 +5337,7 @@ interactions: Connection: - keep-alive User-Agent: - - python-requests/2.25.1 + - python-requests/2.30.0 method: GET uri: https://www.ebi.ac.uk/ena/browser/api/xml/ERP108370 response: @@ -6397,7 +5397,7 @@ interactions: Content-Type: - application/xml Date: - - Wed, 28 Jul 2021 19:42:00 GMT + - Wed, 17 May 2023 18:36:10 GMT Strict-Transport-Security: - max-age=0 Transfer-Encoding: @@ -6415,7 +5415,7 @@ interactions: Connection: - keep-alive User-Agent: - - python-requests/2.25.1 + - python-requests/2.30.0 method: GET uri: https://www.ebi.ac.uk/ena/browser/api/xml/ERA1350207 response: @@ -6451,7 +5451,7 @@ interactions: Content-Type: - application/xml Date: - - Wed, 28 Jul 2021 19:42:00 GMT + - Wed, 17 May 2023 18:36:10 GMT Strict-Transport-Security: - max-age=0 Transfer-Encoding: @@ -6459,68 +5459,6 @@ interactions: status: code: 200 message: '' -- request: - body: acc=ERR2534085&accept-proto=fasp&version=2.0 - headers: - Accept: - - '*/*' - Accept-Encoding: - - gzip, deflate - Connection: - - keep-alive - Content-Length: - - '44' - User-Agent: - - python-requests/2.25.1 - method: POST - uri: https://www.ncbi.nlm.nih.gov/Traces/names/names.cgi - response: - body: - string: !!binary | - H4sIAAAAAAAAAwzIsQ6CMBQF0J2vaOLAhLl9bekru7MJcXIDLEHTUAI1xuR9vJ7xnOiM6tiH7T3K - pe/JGQt20jpjGGxICJob+AbhpqmD7uDvElsbbPSYPIeA0bchRBA7PZOfrWYRsYBc1/RV9VLKdtRq - 23PJU07qeaghpfyJDzXnXZXlH3l8xalUPwAAAP//AwCBHJBrjgAAAA== - headers: - Cache-Control: - - private - Connection: - - Keep-Alive - Content-Encoding: - - gzip - Content-Security-Policy: - - upgrade-insecure-requests - Content-Type: - - text/plain - Date: - - Wed, 28 Jul 2021 19:42:00 GMT - Keep-Alive: - - timeout=1, max=10 - NCBI-PHID: - - CC95EFE5101B30810000000000000001.m_1 - NCBI-SID: - - CC95EFE5101B3081_0000SID - Referrer-Policy: - - origin-when-cross-origin - Server: - - Apache - Set-Cookie: - - ncbi_sid=CC95EFE5101B3081_0000SID; domain=.nih.gov; path=/; expires=Thu, 28 - Jul 2022 19:42:00 GMT - SraNameServerOutputVersion: - - '2.0' - Strict-Transport-Security: - - max-age=31536000; includeSubDomains; preload - Transfer-Encoding: - - chunked - Vary: - - Accept-Encoding - X-UA-Compatible: - - IE=Edge - X-XSS-Protection: - - 1; mode=block - status: - code: 200 - message: OK - request: body: null headers: @@ -6531,29 +5469,27 @@ interactions: Connection: - keep-alive User-Agent: - - python-requests/2.25.1 + - python-requests/2.30.0 method: GET uri: https://www.ebi.ac.uk/ena/portal/api/filereport?accession=ERR2534085&result=read_run response: body: - string: "run_accession\tfastq_ftp\tfastq_bytes\tfastq_md5\tsubmitted_ftp\tsubmitted_bytes\tsubmitted_md5\tsra_ftp\tsra_bytes\tsra_md5\nERR2534085\tftp.sra.ebi.ac.uk/vol1/fastq/ERR253/005/ERR2534085/ERR2534085.fastq.gz\t986001790\t4921d2019bec9d2eb3746caca23307b2\tftp.sra.ebi.ac.uk/vol1/run/ERR253/ERR2534085/G144_Parental_RNAseq_DMSO2.fastq.gz\t1027314622\t20fc8816e51bd3da97def0ead2a60b0b\t\t\t\n" + string: "run_accession\tfastq_ftp\tfastq_bytes\tfastq_md5\tbam_ftp\tbam_bytes\tbam_md5\tsubmitted_ftp\tsubmitted_bytes\tsubmitted_md5\tsra_ftp\tsra_bytes\tsra_md5\nERR2534085\tftp.sra.ebi.ac.uk/vol1/fastq/ERR253/005/ERR2534085/ERR2534085.fastq.gz\t986001790\t4921d2019bec9d2eb3746caca23307b2\t\t\t\tftp.sra.ebi.ac.uk/vol1/run/ERR253/ERR2534085/G144_Parental_RNAseq_DMSO2.fastq.gz\t1027314622\t20fc8816e51bd3da97def0ead2a60b0b\tftp.sra.ebi.ac.uk/vol1/err/ERR253/005/ERR2534085\t653380812\t3bd5c5cdab98d0c41477923cb8135c14\n" headers: Cache-Control: - no-cache, no-store, max-age=0, must-revalidate + Content-Length: + - '487' Content-Type: - text/plain Date: - - Wed, 28 Jul 2021 19:42:01 GMT + - Wed, 17 May 2023 18:36:11 GMT Expires: - '0' Pragma: - no-cache - Server: - - Apache-Coyote/1.1 Strict-Transport-Security: - max-age=0 - Transfer-Encoding: - - chunked X-Content-Type-Options: - nosniff X-Frame-Options: @@ -6562,7 +5498,7 @@ interactions: - 1; mode=block status: code: 200 - message: OK + message: '' - request: body: null headers: @@ -6573,7 +5509,7 @@ interactions: Connection: - keep-alive User-Agent: - - python-requests/2.25.1 + - python-requests/2.30.0 method: GET uri: https://www.ebi.ac.uk/ena/browser/api/xml/ERR2534086 response: @@ -6615,7 +5551,7 @@ interactions: Content-Type: - application/xml Date: - - Wed, 28 Jul 2021 19:42:01 GMT + - Wed, 17 May 2023 18:36:11 GMT Strict-Transport-Security: - max-age=0 Transfer-Encoding: @@ -6633,7 +5569,7 @@ interactions: Connection: - keep-alive User-Agent: - - python-requests/2.25.1 + - python-requests/2.30.0 method: GET uri: https://www.ebi.ac.uk/ena/browser/api/xml/ERX2552507 response: @@ -6697,7 +5633,7 @@ interactions: Content-Type: - application/xml Date: - - Wed, 28 Jul 2021 19:42:02 GMT + - Wed, 17 May 2023 18:36:11 GMT Strict-Transport-Security: - max-age=0 Transfer-Encoding: @@ -6715,14 +5651,14 @@ interactions: Connection: - keep-alive User-Agent: - - python-requests/2.25.1 + - python-requests/2.30.0 method: GET uri: https://www.ebi.ac.uk/ena/browser/api/xml/ERS2428801 response: body: string: "\n\n\n \n + alias=\"E-MTAB-6681:G144_Parental_RNAseq_DMSO3\" center_name=\"BRIC - Biotech + Research and Innovation Centre\" broker_name=\"ArrayExpress\">\n \n \ ERS2428801\n SAMEA4608105\n \ E-MTAB-6681:G144_Parental_RNAseq_DMSO3\n \n @@ -6730,57 +5666,45 @@ interactions: \ Homo sapiens\n human\n \ \n Protocols: CRISPR mediated KO of CIC: sgRNAs (Target sequence: mESCs: GCCTTCATGATCTTCAGCAAG; G144: GGGCGAGTGGTGGTATGCCC) - \ were cloned into pSpCas9(BB)-2A-GFP (Addgene 48138) and transfected into - mESCs (Lipofectamine 2000) or G144 cells (Amaxa Nucleofector II, Program A033). + were cloned into pSpCas9(BB)-2A-GFP (Addgene 48138) and transfected into mESCs + (Lipofectamine 2000) or G144 cells (Amaxa Nucleofector II, Program A033). GFP-positive cells were single cell sorted 48h post-transfection, expanded and screened by immunoblotting for CIC deletion. Inhibitor treatment with 1 \u03BCM MEK inhibitor (PD0325901) was performed in 80% confluent cultures for 4 and 24 h respectively. DMSO was used as mock control. Cells were washed - once with PBS, lysed directly in RLT buffer (Qiagen). Total RNA was extracted - using the RNAeasy kit (Qiagen). 500 ng of total RNA was used for library - preparation using TruSeq RNA Library Prep Kit v2 (Illumina) according to manufacturer - recommendations.\n \n \n - \ \n ENA-STUDY\n ERP108370\n - \ \n \n \n - \ \n ENA-EXPERIMENT\n - \ ERX2552507\n \n \n - \ \n \n ENA-RUN\n - \ ERR2534086\n \n \n - \ \n \n ENA-SUBMISSION\n - \ ERA1350207\n \n \n - \ \n \n ENA-FASTQ-FILES\n - \ \n - \ \n \n \n - \ \n ENA-SUBMITTED-FILES\n - \ \n - \ \n \n \n - \ \n \n isolate\n - \ not applicable\n \n - \ \n organism\n Homo - sapiens\n \n \n - \ organism part\n brain\n - \ \n \n cell_type\n - \ glial cell\n \n - \ \n cell_line\n G144\n + once with PBS, lysed directly in RLT buffer (Qiagen). Total RNA was extracted + using the RNAeasy kit (Qiagen). 500 ng of total RNA was used for library preparation + using TruSeq RNA Library Prep Kit v2 (Illumina) according to manufacturer + recommendations.\n \n \n \n + \ ENA-FASTQ-FILES\n \n + \ \n \n \n \n + \ ENA-SUBMITTED-FILES\n \n + \ \n \n\n\n + \ \n ENA-CHECKLIST\n ERC000011\n \ \n \n disease\n \ glioblastoma multiforme\n \n + \ \n individual\n 1\n + \ \n \n organism\n + \ Homo sapiens\n \n + \ \n organism\n Homo + sapiens\n \n \n + \ cell type\n glial cell\n + \ \n \n common + name\n human\n \n + \ \n organism part\n brain\n + \ \n \n cell + line\n G144\n \n \ \n genotype\n wild type genotype\n \n \n - \ individual\n 1\n \n - \ \n ENA-CHECKLIST\n ERC000011\n - \ \n \n ENA-SPOT-COUNT\n - \ 19622120\n \n \n - \ ENA-BASE-COUNT\n 1481141759\n - \ \n \n ENA-FIRST-PUBLIC\n - \ 2018-05-30\n \n - \ \n ENA-LAST-UPDATE\n + \ ENA-FIRST-PUBLIC\n 2018-05-30\n + \ \n \n ENA-LAST-UPDATE\n \ 2018-04-24\n \n \ \n\n\n" headers: Content-Type: - application/xml Date: - - Wed, 28 Jul 2021 19:42:02 GMT + - Wed, 17 May 2023 18:36:12 GMT Strict-Transport-Security: - max-age=0 Transfer-Encoding: @@ -6798,7 +5722,7 @@ interactions: Connection: - keep-alive User-Agent: - - python-requests/2.25.1 + - python-requests/2.30.0 method: GET uri: https://www.ebi.ac.uk/ena/browser/api/xml/ERP108370 response: @@ -6858,7 +5782,7 @@ interactions: Content-Type: - application/xml Date: - - Wed, 28 Jul 2021 19:42:03 GMT + - Wed, 17 May 2023 18:36:12 GMT Strict-Transport-Security: - max-age=0 Transfer-Encoding: @@ -6876,7 +5800,7 @@ interactions: Connection: - keep-alive User-Agent: - - python-requests/2.25.1 + - python-requests/2.30.0 method: GET uri: https://www.ebi.ac.uk/ena/browser/api/xml/ERA1350207 response: @@ -6912,7 +5836,7 @@ interactions: Content-Type: - application/xml Date: - - Wed, 28 Jul 2021 19:42:04 GMT + - Wed, 17 May 2023 18:36:12 GMT Strict-Transport-Security: - max-age=0 Transfer-Encoding: @@ -6920,68 +5844,6 @@ interactions: status: code: 200 message: '' -- request: - body: acc=ERR2534086&accept-proto=fasp&version=2.0 - headers: - Accept: - - '*/*' - Accept-Encoding: - - gzip, deflate - Connection: - - keep-alive - Content-Length: - - '44' - User-Agent: - - python-requests/2.25.1 - method: POST - uri: https://www.ncbi.nlm.nih.gov/Traces/names/names.cgi - response: - body: - string: !!binary | - H4sIAAAAAAAAAwzKuwrCMBQA0L1fEXDoVLk33jza3VkoTm55SZXQhDYiwv14ux7OSZ6h2zdXP56v - 8yzVhcBq1hKBrNLIEtAOYAYY7ygnwIn0g8liNARxBHRJkUrJHNmFGFwIXidmJgC+rfkn+qW1uvei - bqWVULJ47cLlXL4pimfZRFsOKP6dQuv+AAAA//8DAGKPr42OAAAA - headers: - Cache-Control: - - private - Connection: - - Keep-Alive - Content-Encoding: - - gzip - Content-Security-Policy: - - upgrade-insecure-requests - Content-Type: - - text/plain - Date: - - Wed, 28 Jul 2021 19:42:04 GMT - Keep-Alive: - - timeout=1, max=10 - NCBI-PHID: - - C7A41F5B101B30C10000000000000001.m_1 - NCBI-SID: - - C7A41F5B101B30C1_0000SID - Referrer-Policy: - - origin-when-cross-origin - Server: - - Apache - Set-Cookie: - - ncbi_sid=C7A41F5B101B30C1_0000SID; domain=.nih.gov; path=/; expires=Thu, 28 - Jul 2022 19:42:04 GMT - SraNameServerOutputVersion: - - '2.0' - Strict-Transport-Security: - - max-age=31536000; includeSubDomains; preload - Transfer-Encoding: - - chunked - Vary: - - Accept-Encoding - X-UA-Compatible: - - IE=Edge - X-XSS-Protection: - - 1; mode=block - status: - code: 200 - message: OK - request: body: null headers: @@ -6992,29 +5854,27 @@ interactions: Connection: - keep-alive User-Agent: - - python-requests/2.25.1 + - python-requests/2.30.0 method: GET uri: https://www.ebi.ac.uk/ena/portal/api/filereport?accession=ERR2534086&result=read_run response: body: - string: "run_accession\tfastq_ftp\tfastq_bytes\tfastq_md5\tsubmitted_ftp\tsubmitted_bytes\tsubmitted_md5\tsra_ftp\tsra_bytes\tsra_md5\nERR2534086\tftp.sra.ebi.ac.uk/vol1/fastq/ERR253/006/ERR2534086/ERR2534086.fastq.gz\t935756969\tf60033d4f40591a93092b83ad0a487f1\tftp.sra.ebi.ac.uk/vol1/run/ERR253/ERR2534086/G144_Parental_RNAseq_DMSO3.fastq.gz\t974487429\t7d15b05abbea7e4f253dbe1311c983ee\t\t\t\n" + string: "run_accession\tfastq_ftp\tfastq_bytes\tfastq_md5\tbam_ftp\tbam_bytes\tbam_md5\tsubmitted_ftp\tsubmitted_bytes\tsubmitted_md5\tsra_ftp\tsra_bytes\tsra_md5\nERR2534086\tftp.sra.ebi.ac.uk/vol1/fastq/ERR253/006/ERR2534086/ERR2534086.fastq.gz\t935756969\tf60033d4f40591a93092b83ad0a487f1\t\t\t\tftp.sra.ebi.ac.uk/vol1/run/ERR253/ERR2534086/G144_Parental_RNAseq_DMSO3.fastq.gz\t974487429\t7d15b05abbea7e4f253dbe1311c983ee\tftp.sra.ebi.ac.uk/vol1/err/ERR253/006/ERR2534086\t621048541\te8ab1e766393dcc1d82eb263b85dd56b\n" headers: Cache-Control: - no-cache, no-store, max-age=0, must-revalidate + Content-Length: + - '486' Content-Type: - text/plain Date: - - Wed, 28 Jul 2021 19:42:05 GMT + - Wed, 17 May 2023 18:36:13 GMT Expires: - '0' Pragma: - no-cache - Server: - - Apache-Coyote/1.1 Strict-Transport-Security: - max-age=0 - Transfer-Encoding: - - chunked X-Content-Type-Options: - nosniff X-Frame-Options: @@ -7023,7 +5883,7 @@ interactions: - 1; mode=block status: code: 200 - message: OK + message: '' - request: body: null headers: @@ -7034,7 +5894,7 @@ interactions: Connection: - keep-alive User-Agent: - - python-requests/2.25.1 + - python-requests/2.30.0 method: GET uri: https://www.ebi.ac.uk/ena/browser/api/xml/ERR2534087 response: @@ -7076,7 +5936,7 @@ interactions: Content-Type: - application/xml Date: - - Wed, 28 Jul 2021 19:42:06 GMT + - Wed, 17 May 2023 18:36:14 GMT Strict-Transport-Security: - max-age=0 Transfer-Encoding: @@ -7094,7 +5954,7 @@ interactions: Connection: - keep-alive User-Agent: - - python-requests/2.25.1 + - python-requests/2.30.0 method: GET uri: https://www.ebi.ac.uk/ena/browser/api/xml/ERX2552508 response: @@ -7158,7 +6018,7 @@ interactions: Content-Type: - application/xml Date: - - Wed, 28 Jul 2021 19:42:06 GMT + - Wed, 17 May 2023 18:36:13 GMT Strict-Transport-Security: - max-age=0 Transfer-Encoding: @@ -7176,14 +6036,14 @@ interactions: Connection: - keep-alive User-Agent: - - python-requests/2.25.1 + - python-requests/2.30.0 method: GET uri: https://www.ebi.ac.uk/ena/browser/api/xml/ERS2428802 response: body: string: "\n\n\n \n + alias=\"E-MTAB-6681:G144_WTclone_RNAseq_DMSO1\" center_name=\"BRIC - Biotech + Research and Innovation Centre\" broker_name=\"ArrayExpress\">\n \n \ ERS2428802\n SAMEA4608106\n \ E-MTAB-6681:G144_WTclone_RNAseq_DMSO1\n \n @@ -7191,57 +6051,45 @@ interactions: \ Homo sapiens\n human\n \ \n Protocols: CRISPR mediated KO of CIC: sgRNAs (Target sequence: mESCs: GCCTTCATGATCTTCAGCAAG; G144: GGGCGAGTGGTGGTATGCCC) - \ were cloned into pSpCas9(BB)-2A-GFP (Addgene 48138) and transfected into - mESCs (Lipofectamine 2000) or G144 cells (Amaxa Nucleofector II, Program A033). + were cloned into pSpCas9(BB)-2A-GFP (Addgene 48138) and transfected into mESCs + (Lipofectamine 2000) or G144 cells (Amaxa Nucleofector II, Program A033). GFP-positive cells were single cell sorted 48h post-transfection, expanded and screened by immunoblotting for CIC deletion. Inhibitor treatment with 1 \u03BCM MEK inhibitor (PD0325901) was performed in 80% confluent cultures for 4 and 24 h respectively. DMSO was used as mock control. Cells were washed - once with PBS, lysed directly in RLT buffer (Qiagen). Total RNA was extracted - using the RNAeasy kit (Qiagen). 500 ng of total RNA was used for library - preparation using TruSeq RNA Library Prep Kit v2 (Illumina) according to manufacturer - recommendations.\n \n \n - \ \n ENA-STUDY\n ERP108370\n - \ \n \n \n - \ \n ENA-EXPERIMENT\n - \ ERX2552508\n \n \n - \ \n \n ENA-RUN\n - \ ERR2534087\n \n \n - \ \n \n ENA-SUBMISSION\n - \ ERA1350207\n \n \n - \ \n \n ENA-FASTQ-FILES\n - \ \n - \ \n \n \n - \ \n ENA-SUBMITTED-FILES\n - \ \n - \ \n \n \n - \ \n \n isolate\n - \ not applicable\n \n - \ \n organism\n Homo - sapiens\n \n \n - \ organism part\n brain\n - \ \n \n cell_type\n - \ glial cell\n \n - \ \n cell_line\n G144\n + once with PBS, lysed directly in RLT buffer (Qiagen). Total RNA was extracted + using the RNAeasy kit (Qiagen). 500 ng of total RNA was used for library preparation + using TruSeq RNA Library Prep Kit v2 (Illumina) according to manufacturer + recommendations.\n \n \n \n + \ ENA-FASTQ-FILES\n \n + \ \n \n \n \n + \ ENA-SUBMITTED-FILES\n \n + \ \n \n\n\n + \ \n ENA-CHECKLIST\n ERC000011\n \ \n \n disease\n \ glioblastoma multiforme\n \n + \ \n individual\n 2\n + \ \n \n organism\n + \ Homo sapiens\n \n + \ \n organism\n Homo + sapiens\n \n \n + \ cell type\n glial cell\n + \ \n \n common + name\n human\n \n + \ \n organism part\n brain\n + \ \n \n cell + line\n G144\n \n \ \n genotype\n wild type genotype\n \n \n - \ individual\n 2\n \n - \ \n ENA-CHECKLIST\n ERC000011\n - \ \n \n ENA-SPOT-COUNT\n - \ 24489613\n \n \n - \ ENA-BASE-COUNT\n 1849283386\n - \ \n \n ENA-FIRST-PUBLIC\n - \ 2018-05-30\n \n - \ \n ENA-LAST-UPDATE\n + \ ENA-FIRST-PUBLIC\n 2018-05-30\n + \ \n \n ENA-LAST-UPDATE\n \ 2018-04-24\n \n \ \n\n\n" headers: Content-Type: - application/xml Date: - - Wed, 28 Jul 2021 19:42:07 GMT + - Wed, 17 May 2023 18:36:15 GMT Strict-Transport-Security: - max-age=0 Transfer-Encoding: @@ -7259,7 +6107,7 @@ interactions: Connection: - keep-alive User-Agent: - - python-requests/2.25.1 + - python-requests/2.30.0 method: GET uri: https://www.ebi.ac.uk/ena/browser/api/xml/ERP108370 response: @@ -7319,7 +6167,7 @@ interactions: Content-Type: - application/xml Date: - - Wed, 28 Jul 2021 19:42:08 GMT + - Wed, 17 May 2023 18:36:15 GMT Strict-Transport-Security: - max-age=0 Transfer-Encoding: @@ -7337,7 +6185,7 @@ interactions: Connection: - keep-alive User-Agent: - - python-requests/2.25.1 + - python-requests/2.30.0 method: GET uri: https://www.ebi.ac.uk/ena/browser/api/xml/ERA1350207 response: @@ -7373,7 +6221,7 @@ interactions: Content-Type: - application/xml Date: - - Wed, 28 Jul 2021 19:42:08 GMT + - Wed, 17 May 2023 18:36:15 GMT Strict-Transport-Security: - max-age=0 Transfer-Encoding: @@ -7381,68 +6229,6 @@ interactions: status: code: 200 message: '' -- request: - body: acc=ERR2534087&accept-proto=fasp&version=2.0 - headers: - Accept: - - '*/*' - Accept-Encoding: - - gzip, deflate - Connection: - - keep-alive - Content-Length: - - '44' - User-Agent: - - python-requests/2.25.1 - method: POST - uri: https://www.ncbi.nlm.nih.gov/Traces/names/names.cgi - response: - body: - string: !!binary | - H4sIAAAAAAAAAwzIsQrCMBAA0L1fEXDoVLm7pOm1u7NQnNySNKVKMCWNiHAfr298JzpDcxS3v71c - 5pl6bYAHYTRsrR5JCJA7GDoYb0gT4AT2LuDQc1iQHJKPMQJrz9BrWi0OwUcRMQByfaWvarda96NV - e8k1h5zU41AupfyJi1pzUXX7R/bPGGrzAwAA//8DAHWr/8SOAAAA - headers: - Cache-Control: - - private - Connection: - - Keep-Alive - Content-Encoding: - - gzip - Content-Security-Policy: - - upgrade-insecure-requests - Content-Type: - - text/plain - Date: - - Wed, 28 Jul 2021 19:42:08 GMT - Keep-Alive: - - timeout=1, max=10 - NCBI-PHID: - - C7A42023101B31110000000000000001.m_1 - NCBI-SID: - - C7A42023101B3111_0000SID - Referrer-Policy: - - origin-when-cross-origin - Server: - - Apache - Set-Cookie: - - ncbi_sid=C7A42023101B3111_0000SID; domain=.nih.gov; path=/; expires=Thu, 28 - Jul 2022 19:42:09 GMT - SraNameServerOutputVersion: - - '2.0' - Strict-Transport-Security: - - max-age=31536000; includeSubDomains; preload - Transfer-Encoding: - - chunked - Vary: - - Accept-Encoding - X-UA-Compatible: - - IE=Edge - X-XSS-Protection: - - 1; mode=block - status: - code: 200 - message: OK - request: body: null headers: @@ -7453,29 +6239,27 @@ interactions: Connection: - keep-alive User-Agent: - - python-requests/2.25.1 + - python-requests/2.30.0 method: GET uri: https://www.ebi.ac.uk/ena/portal/api/filereport?accession=ERR2534087&result=read_run response: body: - string: "run_accession\tfastq_ftp\tfastq_bytes\tfastq_md5\tsubmitted_ftp\tsubmitted_bytes\tsubmitted_md5\tsra_ftp\tsra_bytes\tsra_md5\nERR2534087\tftp.sra.ebi.ac.uk/vol1/fastq/ERR253/007/ERR2534087/ERR2534087.fastq.gz\t1222071540\t70a8511739490d8e3694c82dabf027d1\tftp.sra.ebi.ac.uk/vol1/run/ERR253/ERR2534087/G144_WTclone_RNAseq_DMSO1.fastq.gz\t1272114070\t836d2e5186e468db4640ac7731e36f59\t\t\t\n" + string: "run_accession\tfastq_ftp\tfastq_bytes\tfastq_md5\tbam_ftp\tbam_bytes\tbam_md5\tsubmitted_ftp\tsubmitted_bytes\tsubmitted_md5\tsra_ftp\tsra_bytes\tsra_md5\nERR2534087\tftp.sra.ebi.ac.uk/vol1/fastq/ERR253/007/ERR2534087/ERR2534087.fastq.gz\t1222071540\t70a8511739490d8e3694c82dabf027d1\t\t\t\tftp.sra.ebi.ac.uk/vol1/run/ERR253/ERR2534087/G144_WTclone_RNAseq_DMSO1.fastq.gz\t1272114070\t836d2e5186e468db4640ac7731e36f59\tftp.sra.ebi.ac.uk/vol1/err/ERR253/007/ERR2534087\t814866372\t5074b01b1cf6f1fc02bcfd476e074d8b\n" headers: Cache-Control: - no-cache, no-store, max-age=0, must-revalidate + Content-Length: + - '487' Content-Type: - text/plain Date: - - Wed, 28 Jul 2021 19:42:09 GMT + - Wed, 17 May 2023 18:36:16 GMT Expires: - '0' Pragma: - no-cache - Server: - - Apache-Coyote/1.1 Strict-Transport-Security: - max-age=0 - Transfer-Encoding: - - chunked X-Content-Type-Options: - nosniff X-Frame-Options: @@ -7484,7 +6268,7 @@ interactions: - 1; mode=block status: code: 200 - message: OK + message: '' - request: body: null headers: @@ -7495,7 +6279,7 @@ interactions: Connection: - keep-alive User-Agent: - - python-requests/2.25.1 + - python-requests/2.30.0 method: GET uri: https://www.ebi.ac.uk/ena/browser/api/xml/ERR2534088 response: @@ -7537,7 +6321,7 @@ interactions: Content-Type: - application/xml Date: - - Wed, 28 Jul 2021 19:42:10 GMT + - Wed, 17 May 2023 18:36:16 GMT Strict-Transport-Security: - max-age=0 Transfer-Encoding: @@ -7555,7 +6339,7 @@ interactions: Connection: - keep-alive User-Agent: - - python-requests/2.25.1 + - python-requests/2.30.0 method: GET uri: https://www.ebi.ac.uk/ena/browser/api/xml/ERX2552509 response: @@ -7619,7 +6403,7 @@ interactions: Content-Type: - application/xml Date: - - Wed, 28 Jul 2021 19:42:10 GMT + - Wed, 17 May 2023 18:36:16 GMT Strict-Transport-Security: - max-age=0 Transfer-Encoding: @@ -7637,14 +6421,14 @@ interactions: Connection: - keep-alive User-Agent: - - python-requests/2.25.1 + - python-requests/2.30.0 method: GET uri: https://www.ebi.ac.uk/ena/browser/api/xml/ERS2428803 response: body: string: "\n\n\n \n + alias=\"E-MTAB-6681:G144_WTclone_RNAseq_DMSO2\" center_name=\"BRIC - Biotech + Research and Innovation Centre\" broker_name=\"ArrayExpress\">\n \n \ ERS2428803\n SAMEA4608107\n \ E-MTAB-6681:G144_WTclone_RNAseq_DMSO2\n \n @@ -7652,57 +6436,45 @@ interactions: \ Homo sapiens\n human\n \ \n Protocols: CRISPR mediated KO of CIC: sgRNAs (Target sequence: mESCs: GCCTTCATGATCTTCAGCAAG; G144: GGGCGAGTGGTGGTATGCCC) - \ were cloned into pSpCas9(BB)-2A-GFP (Addgene 48138) and transfected into - mESCs (Lipofectamine 2000) or G144 cells (Amaxa Nucleofector II, Program A033). + were cloned into pSpCas9(BB)-2A-GFP (Addgene 48138) and transfected into mESCs + (Lipofectamine 2000) or G144 cells (Amaxa Nucleofector II, Program A033). GFP-positive cells were single cell sorted 48h post-transfection, expanded and screened by immunoblotting for CIC deletion. Inhibitor treatment with 1 \u03BCM MEK inhibitor (PD0325901) was performed in 80% confluent cultures for 4 and 24 h respectively. DMSO was used as mock control. Cells were washed - once with PBS, lysed directly in RLT buffer (Qiagen). Total RNA was extracted - using the RNAeasy kit (Qiagen). 500 ng of total RNA was used for library - preparation using TruSeq RNA Library Prep Kit v2 (Illumina) according to manufacturer - recommendations.\n \n \n - \ \n ENA-STUDY\n ERP108370\n - \ \n \n \n - \ \n ENA-EXPERIMENT\n - \ ERX2552509\n \n \n - \ \n \n ENA-RUN\n - \ ERR2534088\n \n \n - \ \n \n ENA-SUBMISSION\n - \ ERA1350207\n \n \n - \ \n \n ENA-FASTQ-FILES\n - \ \n - \ \n \n \n - \ \n ENA-SUBMITTED-FILES\n - \ \n - \ \n \n \n - \ \n \n isolate\n - \ not applicable\n \n - \ \n organism\n Homo - sapiens\n \n \n - \ organism part\n brain\n - \ \n \n cell_type\n - \ glial cell\n \n - \ \n cell_line\n G144\n + once with PBS, lysed directly in RLT buffer (Qiagen). Total RNA was extracted + using the RNAeasy kit (Qiagen). 500 ng of total RNA was used for library preparation + using TruSeq RNA Library Prep Kit v2 (Illumina) according to manufacturer + recommendations.\n \n \n \n + \ ENA-FASTQ-FILES\n \n + \ \n \n \n \n + \ ENA-SUBMITTED-FILES\n \n + \ \n \n\n\n + \ \n ENA-CHECKLIST\n ERC000011\n \ \n \n disease\n \ glioblastoma multiforme\n \n + \ \n individual\n 2\n + \ \n \n organism\n + \ Homo sapiens\n \n + \ \n organism\n Homo + sapiens\n \n \n + \ cell type\n glial cell\n + \ \n \n common + name\n human\n \n + \ \n organism part\n brain\n + \ \n \n cell + line\n G144\n \n \ \n genotype\n wild type genotype\n \n \n - \ individual\n 2\n \n - \ \n ENA-CHECKLIST\n ERC000011\n - \ \n \n ENA-SPOT-COUNT\n - \ 21027363\n \n \n - \ ENA-BASE-COUNT\n 1587910747\n - \ \n \n ENA-FIRST-PUBLIC\n - \ 2018-05-30\n \n - \ \n ENA-LAST-UPDATE\n + \ ENA-FIRST-PUBLIC\n 2018-05-30\n + \ \n \n ENA-LAST-UPDATE\n \ 2018-04-24\n \n \ \n\n\n" headers: Content-Type: - application/xml Date: - - Wed, 28 Jul 2021 19:42:11 GMT + - Wed, 17 May 2023 18:36:17 GMT Strict-Transport-Security: - max-age=0 Transfer-Encoding: @@ -7720,7 +6492,7 @@ interactions: Connection: - keep-alive User-Agent: - - python-requests/2.25.1 + - python-requests/2.30.0 method: GET uri: https://www.ebi.ac.uk/ena/browser/api/xml/ERP108370 response: @@ -7780,7 +6552,7 @@ interactions: Content-Type: - application/xml Date: - - Wed, 28 Jul 2021 19:42:12 GMT + - Wed, 17 May 2023 18:36:17 GMT Strict-Transport-Security: - max-age=0 Transfer-Encoding: @@ -7798,7 +6570,7 @@ interactions: Connection: - keep-alive User-Agent: - - python-requests/2.25.1 + - python-requests/2.30.0 method: GET uri: https://www.ebi.ac.uk/ena/browser/api/xml/ERA1350207 response: @@ -7834,7 +6606,7 @@ interactions: Content-Type: - application/xml Date: - - Wed, 28 Jul 2021 19:42:12 GMT + - Wed, 17 May 2023 18:36:17 GMT Strict-Transport-Security: - max-age=0 Transfer-Encoding: @@ -7842,68 +6614,6 @@ interactions: status: code: 200 message: '' -- request: - body: acc=ERR2534088&accept-proto=fasp&version=2.0 - headers: - Accept: - - '*/*' - Accept-Encoding: - - gzip, deflate - Connection: - - keep-alive - Content-Length: - - '44' - User-Agent: - - python-requests/2.25.1 - method: POST - uri: https://www.ncbi.nlm.nih.gov/Traces/names/names.cgi - response: - body: - string: !!binary | - H4sIAAAAAAAAAwzLsQqDMBAG4L1PEejgZPm9GO/i3rkgnbppVGwJjWhKKdzD1/WD70wXnPatXz+D - XruOnK0hogzyIhAooZISXMLfK2phW1QPZXZTI5ZDTTz6ETw4Dn4Wcg0f36pqDejtHX+mWHJe98Ks - W8oppGieu+ljTN9pNHPaTF4OSMNrCvn0BwAA//8DAGsMO5SOAAAA - headers: - Cache-Control: - - private - Connection: - - Keep-Alive - Content-Encoding: - - gzip - Content-Security-Policy: - - upgrade-insecure-requests - Content-Type: - - text/plain - Date: - - Wed, 28 Jul 2021 19:42:13 GMT - Keep-Alive: - - timeout=1, max=10 - NCBI-PHID: - - CC95F187101B31510000000000000001.m_1 - NCBI-SID: - - CC95F187101B3151_0000SID - Referrer-Policy: - - origin-when-cross-origin - Server: - - Apache - Set-Cookie: - - ncbi_sid=CC95F187101B3151_0000SID; domain=.nih.gov; path=/; expires=Thu, 28 - Jul 2022 19:42:13 GMT - SraNameServerOutputVersion: - - '2.0' - Strict-Transport-Security: - - max-age=31536000; includeSubDomains; preload - Transfer-Encoding: - - chunked - Vary: - - Accept-Encoding - X-UA-Compatible: - - IE=Edge - X-XSS-Protection: - - 1; mode=block - status: - code: 200 - message: OK - request: body: null headers: @@ -7914,29 +6624,27 @@ interactions: Connection: - keep-alive User-Agent: - - python-requests/2.25.1 + - python-requests/2.30.0 method: GET uri: https://www.ebi.ac.uk/ena/portal/api/filereport?accession=ERR2534088&result=read_run response: body: - string: "run_accession\tfastq_ftp\tfastq_bytes\tfastq_md5\tsubmitted_ftp\tsubmitted_bytes\tsubmitted_md5\tsra_ftp\tsra_bytes\tsra_md5\nERR2534088\tftp.sra.ebi.ac.uk/vol1/fastq/ERR253/008/ERR2534088/ERR2534088.fastq.gz\t1054521498\tab57f3177e3796fa02fa9c921ad187d2\tftp.sra.ebi.ac.uk/vol1/run/ERR253/ERR2534088/G144_WTclone_RNAseq_DMSO2.fastq.gz\t1099839401\tc5d2613fe09ae1bbc2ace0892b8ce3ec\t\t\t\n" + string: "run_accession\tfastq_ftp\tfastq_bytes\tfastq_md5\tbam_ftp\tbam_bytes\tbam_md5\tsubmitted_ftp\tsubmitted_bytes\tsubmitted_md5\tsra_ftp\tsra_bytes\tsra_md5\nERR2534088\tftp.sra.ebi.ac.uk/vol1/fastq/ERR253/008/ERR2534088/ERR2534088.fastq.gz\t1054521498\tab57f3177e3796fa02fa9c921ad187d2\t\t\t\tftp.sra.ebi.ac.uk/vol1/run/ERR253/ERR2534088/G144_WTclone_RNAseq_DMSO2.fastq.gz\t1099839401\tc5d2613fe09ae1bbc2ace0892b8ce3ec\tftp.sra.ebi.ac.uk/vol1/err/ERR253/008/ERR2534088\t702988060\t5a27cc3525de29872a1d83a10269e7bd\n" headers: Cache-Control: - no-cache, no-store, max-age=0, must-revalidate + Content-Length: + - '487' Content-Type: - text/plain Date: - - Wed, 28 Jul 2021 19:42:13 GMT + - Wed, 17 May 2023 18:36:18 GMT Expires: - '0' Pragma: - no-cache - Server: - - Apache-Coyote/1.1 Strict-Transport-Security: - max-age=0 - Transfer-Encoding: - - chunked X-Content-Type-Options: - nosniff X-Frame-Options: @@ -7945,7 +6653,7 @@ interactions: - 1; mode=block status: code: 200 - message: OK + message: '' - request: body: null headers: @@ -7956,7 +6664,7 @@ interactions: Connection: - keep-alive User-Agent: - - python-requests/2.25.1 + - python-requests/2.30.0 method: GET uri: https://www.ebi.ac.uk/ena/browser/api/xml/ERR2534089 response: @@ -7998,7 +6706,7 @@ interactions: Content-Type: - application/xml Date: - - Wed, 28 Jul 2021 19:42:14 GMT + - Wed, 17 May 2023 18:36:18 GMT Strict-Transport-Security: - max-age=0 Transfer-Encoding: @@ -8016,7 +6724,7 @@ interactions: Connection: - keep-alive User-Agent: - - python-requests/2.25.1 + - python-requests/2.30.0 method: GET uri: https://www.ebi.ac.uk/ena/browser/api/xml/ERX2552510 response: @@ -8084,7 +6792,7 @@ interactions: Content-Type: - application/xml Date: - - Wed, 28 Jul 2021 19:42:14 GMT + - Wed, 17 May 2023 18:36:19 GMT Strict-Transport-Security: - max-age=0 Transfer-Encoding: @@ -8102,14 +6810,14 @@ interactions: Connection: - keep-alive User-Agent: - - python-requests/2.25.1 + - python-requests/2.30.0 method: GET uri: https://www.ebi.ac.uk/ena/browser/api/xml/ERS2428804 response: body: string: "\n\n\n \n + alias=\"E-MTAB-6681:G144_Parental_RNAseq_24h_1\" center_name=\"BRIC - Biotech + Research and Innovation Centre\" broker_name=\"ArrayExpress\">\n \n \ ERS2428804\n SAMEA4608108\n \ E-MTAB-6681:G144_Parental_RNAseq_24h_1\n \n @@ -8117,57 +6825,45 @@ interactions: \ Homo sapiens\n human\n \ \n Protocols: CRISPR mediated KO of CIC: sgRNAs (Target sequence: mESCs: GCCTTCATGATCTTCAGCAAG; G144: GGGCGAGTGGTGGTATGCCC) - \ were cloned into pSpCas9(BB)-2A-GFP (Addgene 48138) and transfected into - mESCs (Lipofectamine 2000) or G144 cells (Amaxa Nucleofector II, Program A033). + were cloned into pSpCas9(BB)-2A-GFP (Addgene 48138) and transfected into mESCs + (Lipofectamine 2000) or G144 cells (Amaxa Nucleofector II, Program A033). GFP-positive cells were single cell sorted 48h post-transfection, expanded and screened by immunoblotting for CIC deletion. Inhibitor treatment with 1 \u03BCM MEK inhibitor (PD0325901) was performed in 80% confluent cultures for 4 and 24 h respectively. DMSO was used as mock control. Cells were washed - once with PBS, lysed directly in RLT buffer (Qiagen). Total RNA was extracted - using the RNAeasy kit (Qiagen). 500 ng of total RNA was used for library - preparation using TruSeq RNA Library Prep Kit v2 (Illumina) according to manufacturer - recommendations.\n \n \n - \ \n ENA-STUDY\n ERP108370\n - \ \n \n \n - \ \n ENA-EXPERIMENT\n - \ ERX2552510\n \n \n - \ \n \n ENA-RUN\n - \ ERR2534089\n \n \n - \ \n \n ENA-SUBMISSION\n - \ ERA1350207\n \n \n - \ \n \n ENA-FASTQ-FILES\n - \ \n - \ \n \n \n - \ \n ENA-SUBMITTED-FILES\n - \ \n - \ \n \n \n - \ \n \n isolate\n - \ not applicable\n \n - \ \n organism\n Homo - sapiens\n \n \n - \ organism part\n brain\n - \ \n \n cell_type\n - \ glial cell\n \n - \ \n cell_line\n G144\n + once with PBS, lysed directly in RLT buffer (Qiagen). Total RNA was extracted + using the RNAeasy kit (Qiagen). 500 ng of total RNA was used for library preparation + using TruSeq RNA Library Prep Kit v2 (Illumina) according to manufacturer + recommendations.\n \n \n \n + \ ENA-FASTQ-FILES\n \n + \ \n \n \n \n + \ ENA-SUBMITTED-FILES\n \n + \ \n \n\n\n + \ \n ENA-CHECKLIST\n ERC000011\n \ \n \n disease\n \ glioblastoma multiforme\n \n + \ \n individual\n 1\n + \ \n \n organism\n + \ Homo sapiens\n \n + \ \n organism\n Homo + sapiens\n \n \n + \ cell type\n glial cell\n + \ \n \n common + name\n human\n \n + \ \n organism part\n brain\n + \ \n \n cell + line\n G144\n \n \ \n genotype\n wild type genotype\n \n \n - \ individual\n 1\n \n - \ \n ENA-CHECKLIST\n ERC000011\n - \ \n \n ENA-SPOT-COUNT\n - \ 19941600\n \n \n - \ ENA-BASE-COUNT\n 1505399955\n - \ \n \n ENA-FIRST-PUBLIC\n - \ 2018-05-30\n \n - \ \n ENA-LAST-UPDATE\n + \ ENA-FIRST-PUBLIC\n 2018-05-30\n + \ \n \n ENA-LAST-UPDATE\n \ 2018-04-24\n \n \ \n\n\n" headers: Content-Type: - application/xml Date: - - Wed, 28 Jul 2021 19:42:15 GMT + - Wed, 17 May 2023 18:36:20 GMT Strict-Transport-Security: - max-age=0 Transfer-Encoding: @@ -8185,7 +6881,7 @@ interactions: Connection: - keep-alive User-Agent: - - python-requests/2.25.1 + - python-requests/2.30.0 method: GET uri: https://www.ebi.ac.uk/ena/browser/api/xml/ERP108370 response: @@ -8245,7 +6941,7 @@ interactions: Content-Type: - application/xml Date: - - Wed, 28 Jul 2021 19:42:16 GMT + - Wed, 17 May 2023 18:36:19 GMT Strict-Transport-Security: - max-age=0 Transfer-Encoding: @@ -8263,7 +6959,7 @@ interactions: Connection: - keep-alive User-Agent: - - python-requests/2.25.1 + - python-requests/2.30.0 method: GET uri: https://www.ebi.ac.uk/ena/browser/api/xml/ERA1350207 response: @@ -8299,7 +6995,7 @@ interactions: Content-Type: - application/xml Date: - - Wed, 28 Jul 2021 19:42:16 GMT + - Wed, 17 May 2023 18:36:20 GMT Strict-Transport-Security: - max-age=0 Transfer-Encoding: @@ -8307,68 +7003,6 @@ interactions: status: code: 200 message: '' -- request: - body: acc=ERR2534089&accept-proto=fasp&version=2.0 - headers: - Accept: - - '*/*' - Accept-Encoding: - - gzip, deflate - Connection: - - keep-alive - Content-Length: - - '44' - User-Agent: - - python-requests/2.25.1 - method: POST - uri: https://www.ncbi.nlm.nih.gov/Traces/names/names.cgi - response: - body: - string: !!binary | - H4sIAAAAAAAAAwzIsQrCMBAA0L1fEXDoVLleL5e0u7NQnNySNKVKMKWJiHAfr298JzxDUw63v71c - 5hn1QGBHYQTSPRoWhN52YDoYbz1OgBPZuwRjV2D2gZhwHRnJD5H9YjBaHZ0TEQKQ6yt9VbvVupdW - 7UeuOeSkHkW5lPInLmrNh6rbP7J/xlCbHwAAAP//AwB3pIyPjgAAAA== - headers: - Cache-Control: - - private - Connection: - - Keep-Alive - Content-Encoding: - - gzip - Content-Security-Policy: - - upgrade-insecure-requests - Content-Type: - - text/plain - Date: - - Wed, 28 Jul 2021 19:42:17 GMT - Keep-Alive: - - timeout=1, max=10 - NCBI-PHID: - - CC95F218101B31910000000000000001.m_1 - NCBI-SID: - - CC95F218101B3191_0000SID - Referrer-Policy: - - origin-when-cross-origin - Server: - - Apache - Set-Cookie: - - ncbi_sid=CC95F218101B3191_0000SID; domain=.nih.gov; path=/; expires=Thu, 28 - Jul 2022 19:42:17 GMT - SraNameServerOutputVersion: - - '2.0' - Strict-Transport-Security: - - max-age=31536000; includeSubDomains; preload - Transfer-Encoding: - - chunked - Vary: - - Accept-Encoding - X-UA-Compatible: - - IE=Edge - X-XSS-Protection: - - 1; mode=block - status: - code: 200 - message: OK - request: body: null headers: @@ -8379,29 +7013,27 @@ interactions: Connection: - keep-alive User-Agent: - - python-requests/2.25.1 + - python-requests/2.30.0 method: GET uri: https://www.ebi.ac.uk/ena/portal/api/filereport?accession=ERR2534089&result=read_run response: body: - string: "run_accession\tfastq_ftp\tfastq_bytes\tfastq_md5\tsubmitted_ftp\tsubmitted_bytes\tsubmitted_md5\tsra_ftp\tsra_bytes\tsra_md5\nERR2534089\tftp.sra.ebi.ac.uk/vol1/fastq/ERR253/009/ERR2534089/ERR2534089.fastq.gz\t936697735\t61cddd1766f5e4757fefd4a99865d3e0\tftp.sra.ebi.ac.uk/vol1/run/ERR253/ERR2534089/G144_Parental_RNAseq_24h_1.fastq.gz\t975986547\ta1cd512c64c06f21259ee1c41beb2a5a\t\t\t\n" + string: "run_accession\tfastq_ftp\tfastq_bytes\tfastq_md5\tbam_ftp\tbam_bytes\tbam_md5\tsubmitted_ftp\tsubmitted_bytes\tsubmitted_md5\tsra_ftp\tsra_bytes\tsra_md5\nERR2534089\tftp.sra.ebi.ac.uk/vol1/fastq/ERR253/009/ERR2534089/ERR2534089.fastq.gz\t936697735\t61cddd1766f5e4757fefd4a99865d3e0\t\t\t\tftp.sra.ebi.ac.uk/vol1/run/ERR253/ERR2534089/G144_Parental_RNAseq_24h_1.fastq.gz\t975986547\ta1cd512c64c06f21259ee1c41beb2a5a\tftp.sra.ebi.ac.uk/vol1/err/ERR253/009/ERR2534089\t620451256\tf566db3b1af03f9261b549a2f85ca46c\n" headers: Cache-Control: - no-cache, no-store, max-age=0, must-revalidate + Content-Length: + - '486' Content-Type: - text/plain Date: - - Wed, 28 Jul 2021 19:42:18 GMT + - Wed, 17 May 2023 18:36:21 GMT Expires: - '0' Pragma: - no-cache - Server: - - Apache-Coyote/1.1 Strict-Transport-Security: - max-age=0 - Transfer-Encoding: - - chunked X-Content-Type-Options: - nosniff X-Frame-Options: @@ -8410,7 +7042,7 @@ interactions: - 1; mode=block status: code: 200 - message: OK + message: '' - request: body: null headers: @@ -8421,7 +7053,7 @@ interactions: Connection: - keep-alive User-Agent: - - python-requests/2.25.1 + - python-requests/2.30.0 method: GET uri: https://www.ebi.ac.uk/ena/browser/api/xml/ERR2534090 response: @@ -8463,7 +7095,7 @@ interactions: Content-Type: - application/xml Date: - - Wed, 28 Jul 2021 19:42:18 GMT + - Wed, 17 May 2023 18:36:20 GMT Strict-Transport-Security: - max-age=0 Transfer-Encoding: @@ -8481,7 +7113,7 @@ interactions: Connection: - keep-alive User-Agent: - - python-requests/2.25.1 + - python-requests/2.30.0 method: GET uri: https://www.ebi.ac.uk/ena/browser/api/xml/ERX2552511 response: @@ -8549,7 +7181,7 @@ interactions: Content-Type: - application/xml Date: - - Wed, 28 Jul 2021 19:42:18 GMT + - Wed, 17 May 2023 18:36:21 GMT Strict-Transport-Security: - max-age=0 Transfer-Encoding: @@ -8567,14 +7199,14 @@ interactions: Connection: - keep-alive User-Agent: - - python-requests/2.25.1 + - python-requests/2.30.0 method: GET uri: https://www.ebi.ac.uk/ena/browser/api/xml/ERS2428805 response: body: string: "\n\n\n \n + alias=\"E-MTAB-6681:G144_Parental_RNAseq_24h_2\" center_name=\"BRIC - Biotech + Research and Innovation Centre\" broker_name=\"ArrayExpress\">\n \n \ ERS2428805\n SAMEA4608109\n \ E-MTAB-6681:G144_Parental_RNAseq_24h_2\n \n @@ -8582,57 +7214,45 @@ interactions: \ Homo sapiens\n human\n \ \n Protocols: CRISPR mediated KO of CIC: sgRNAs (Target sequence: mESCs: GCCTTCATGATCTTCAGCAAG; G144: GGGCGAGTGGTGGTATGCCC) - \ were cloned into pSpCas9(BB)-2A-GFP (Addgene 48138) and transfected into - mESCs (Lipofectamine 2000) or G144 cells (Amaxa Nucleofector II, Program A033). + were cloned into pSpCas9(BB)-2A-GFP (Addgene 48138) and transfected into mESCs + (Lipofectamine 2000) or G144 cells (Amaxa Nucleofector II, Program A033). GFP-positive cells were single cell sorted 48h post-transfection, expanded and screened by immunoblotting for CIC deletion. Inhibitor treatment with 1 \u03BCM MEK inhibitor (PD0325901) was performed in 80% confluent cultures for 4 and 24 h respectively. DMSO was used as mock control. Cells were washed - once with PBS, lysed directly in RLT buffer (Qiagen). Total RNA was extracted - using the RNAeasy kit (Qiagen). 500 ng of total RNA was used for library - preparation using TruSeq RNA Library Prep Kit v2 (Illumina) according to manufacturer - recommendations.\n \n \n - \ \n ENA-STUDY\n ERP108370\n - \ \n \n \n - \ \n ENA-EXPERIMENT\n - \ ERX2552511\n \n \n - \ \n \n ENA-RUN\n - \ ERR2534090\n \n \n - \ \n \n ENA-SUBMISSION\n - \ ERA1350207\n \n \n - \ \n \n ENA-FASTQ-FILES\n - \ \n - \ \n \n \n - \ \n ENA-SUBMITTED-FILES\n - \ \n - \ \n \n \n - \ \n \n isolate\n - \ not applicable\n \n - \ \n organism\n Homo - sapiens\n \n \n - \ organism part\n brain\n - \ \n \n cell_type\n - \ glial cell\n \n - \ \n cell_line\n G144\n + once with PBS, lysed directly in RLT buffer (Qiagen). Total RNA was extracted + using the RNAeasy kit (Qiagen). 500 ng of total RNA was used for library preparation + using TruSeq RNA Library Prep Kit v2 (Illumina) according to manufacturer + recommendations.\n \n \n \n + \ ENA-FASTQ-FILES\n \n + \ \n \n \n \n + \ ENA-SUBMITTED-FILES\n \n + \ \n \n\n\n + \ \n ENA-CHECKLIST\n ERC000011\n \ \n \n disease\n \ glioblastoma multiforme\n \n + \ \n individual\n 1\n + \ \n \n organism\n + \ Homo sapiens\n \n + \ \n organism\n Homo + sapiens\n \n \n + \ cell type\n glial cell\n + \ \n \n common + name\n human\n \n + \ \n organism part\n brain\n + \ \n \n cell + line\n G144\n \n \ \n genotype\n wild type genotype\n \n \n - \ individual\n 1\n \n - \ \n ENA-CHECKLIST\n ERC000011\n - \ \n \n ENA-SPOT-COUNT\n - \ 22598916\n \n \n - \ ENA-BASE-COUNT\n 1705763883\n - \ \n \n ENA-FIRST-PUBLIC\n - \ 2018-05-30\n \n - \ \n ENA-LAST-UPDATE\n + \ ENA-FIRST-PUBLIC\n 2018-05-30\n + \ \n \n ENA-LAST-UPDATE\n \ 2018-04-24\n \n \ \n\n\n" headers: Content-Type: - application/xml Date: - - Wed, 28 Jul 2021 19:42:19 GMT + - Wed, 17 May 2023 18:36:22 GMT Strict-Transport-Security: - max-age=0 Transfer-Encoding: @@ -8650,7 +7270,7 @@ interactions: Connection: - keep-alive User-Agent: - - python-requests/2.25.1 + - python-requests/2.30.0 method: GET uri: https://www.ebi.ac.uk/ena/browser/api/xml/ERP108370 response: @@ -8710,7 +7330,7 @@ interactions: Content-Type: - application/xml Date: - - Wed, 28 Jul 2021 19:42:21 GMT + - Wed, 17 May 2023 18:36:22 GMT Strict-Transport-Security: - max-age=0 Transfer-Encoding: @@ -8728,7 +7348,7 @@ interactions: Connection: - keep-alive User-Agent: - - python-requests/2.25.1 + - python-requests/2.30.0 method: GET uri: https://www.ebi.ac.uk/ena/browser/api/xml/ERA1350207 response: @@ -8764,7 +7384,7 @@ interactions: Content-Type: - application/xml Date: - - Wed, 28 Jul 2021 19:42:21 GMT + - Wed, 17 May 2023 18:36:23 GMT Strict-Transport-Security: - max-age=0 Transfer-Encoding: @@ -8772,68 +7392,6 @@ interactions: status: code: 200 message: '' -- request: - body: acc=ERR2534090&accept-proto=fasp&version=2.0 - headers: - Accept: - - '*/*' - Accept-Encoding: - - gzip, deflate - Connection: - - keep-alive - Content-Length: - - '44' - User-Agent: - - python-requests/2.25.1 - method: POST - uri: https://www.ncbi.nlm.nih.gov/Traces/names/names.cgi - response: - body: - string: !!binary | - H4sIAAAAAAAAAwzIvQrCMBAA4L1PEXDoVLlc/i7dnYXi5NY2KVWCCWlEhHt4/cbvhGfojjqX98KX - aUKjNHhgB4o8gnaMIGkAN4C/SRwBR2XvbDyRXkluaIx1UgeM3lhScdkCzQ6YWQPw9ZW+ot9bK0cv - Ss0trzmJxyHmlPInBrHlKtr+j7w849q6HwAAAP//AwAtt9b2jgAAAA== - headers: - Cache-Control: - - private - Connection: - - Keep-Alive - Content-Encoding: - - gzip - Content-Security-Policy: - - upgrade-insecure-requests - Content-Type: - - text/plain - Date: - - Wed, 28 Jul 2021 19:42:21 GMT - Keep-Alive: - - timeout=1, max=10 - NCBI-PHID: - - C7A42111101B31D10000000000000001.m_1 - NCBI-SID: - - C7A42111101B31D1_0000SID - Referrer-Policy: - - origin-when-cross-origin - Server: - - Apache - Set-Cookie: - - ncbi_sid=C7A42111101B31D1_0000SID; domain=.nih.gov; path=/; expires=Thu, 28 - Jul 2022 19:42:21 GMT - SraNameServerOutputVersion: - - '2.0' - Strict-Transport-Security: - - max-age=31536000; includeSubDomains; preload - Transfer-Encoding: - - chunked - Vary: - - Accept-Encoding - X-UA-Compatible: - - IE=Edge - X-XSS-Protection: - - 1; mode=block - status: - code: 200 - message: OK - request: body: null headers: @@ -8844,29 +7402,27 @@ interactions: Connection: - keep-alive User-Agent: - - python-requests/2.25.1 + - python-requests/2.30.0 method: GET uri: https://www.ebi.ac.uk/ena/portal/api/filereport?accession=ERR2534090&result=read_run response: body: - string: "run_accession\tfastq_ftp\tfastq_bytes\tfastq_md5\tsubmitted_ftp\tsubmitted_bytes\tsubmitted_md5\tsra_ftp\tsra_bytes\tsra_md5\nERR2534090\tftp.sra.ebi.ac.uk/vol1/fastq/ERR253/000/ERR2534090/ERR2534090.fastq.gz\t1061721210\tb6f84a04edb37b59613dc8d59e9647ce\tftp.sra.ebi.ac.uk/vol1/run/ERR253/ERR2534090/G144_Parental_RNAseq_24h_2.fastq.gz\t1106158490\t50a58f0d2237a1bd2453da5df48228a8\t\t\t\n" + string: "run_accession\tfastq_ftp\tfastq_bytes\tfastq_md5\tbam_ftp\tbam_bytes\tbam_md5\tsubmitted_ftp\tsubmitted_bytes\tsubmitted_md5\tsra_ftp\tsra_bytes\tsra_md5\nERR2534090\tftp.sra.ebi.ac.uk/vol1/fastq/ERR253/000/ERR2534090/ERR2534090.fastq.gz\t1061721210\tb6f84a04edb37b59613dc8d59e9647ce\t\t\t\tftp.sra.ebi.ac.uk/vol1/run/ERR253/ERR2534090/G144_Parental_RNAseq_24h_2.fastq.gz\t1106158490\t50a58f0d2237a1bd2453da5df48228a8\tftp.sra.ebi.ac.uk/vol1/err/ERR253/000/ERR2534090\t703892027\t530679b65da50bc03b2ea62c2e6e91d0\n" headers: Cache-Control: - no-cache, no-store, max-age=0, must-revalidate + Content-Length: + - '488' Content-Type: - text/plain Date: - - Wed, 28 Jul 2021 19:42:27 GMT + - Wed, 17 May 2023 18:36:23 GMT Expires: - '0' Pragma: - no-cache - Server: - - Apache-Coyote/1.1 Strict-Transport-Security: - max-age=0 - Transfer-Encoding: - - chunked X-Content-Type-Options: - nosniff X-Frame-Options: @@ -8875,7 +7431,7 @@ interactions: - 1; mode=block status: code: 200 - message: OK + message: '' - request: body: null headers: @@ -8886,7 +7442,7 @@ interactions: Connection: - keep-alive User-Agent: - - python-requests/2.25.1 + - python-requests/2.30.0 method: GET uri: https://www.ebi.ac.uk/ena/browser/api/xml/ERR2534091 response: @@ -8928,7 +7484,7 @@ interactions: Content-Type: - application/xml Date: - - Wed, 28 Jul 2021 19:42:27 GMT + - Wed, 17 May 2023 18:36:24 GMT Strict-Transport-Security: - max-age=0 Transfer-Encoding: @@ -8946,7 +7502,7 @@ interactions: Connection: - keep-alive User-Agent: - - python-requests/2.25.1 + - python-requests/2.30.0 method: GET uri: https://www.ebi.ac.uk/ena/browser/api/xml/ERX2552512 response: @@ -9014,7 +7570,7 @@ interactions: Content-Type: - application/xml Date: - - Wed, 28 Jul 2021 19:42:28 GMT + - Wed, 17 May 2023 18:36:24 GMT Strict-Transport-Security: - max-age=0 Transfer-Encoding: @@ -9032,14 +7588,14 @@ interactions: Connection: - keep-alive User-Agent: - - python-requests/2.25.1 + - python-requests/2.30.0 method: GET uri: https://www.ebi.ac.uk/ena/browser/api/xml/ERS2428806 response: body: string: "\n\n\n \n + alias=\"E-MTAB-6681:G144_Parental_RNAseq_24h_3\" center_name=\"BRIC - Biotech + Research and Innovation Centre\" broker_name=\"ArrayExpress\">\n \n \ ERS2428806\n SAMEA4608110\n \ E-MTAB-6681:G144_Parental_RNAseq_24h_3\n \n @@ -9047,57 +7603,45 @@ interactions: \ Homo sapiens\n human\n \ \n Protocols: CRISPR mediated KO of CIC: sgRNAs (Target sequence: mESCs: GCCTTCATGATCTTCAGCAAG; G144: GGGCGAGTGGTGGTATGCCC) - \ were cloned into pSpCas9(BB)-2A-GFP (Addgene 48138) and transfected into - mESCs (Lipofectamine 2000) or G144 cells (Amaxa Nucleofector II, Program A033). + were cloned into pSpCas9(BB)-2A-GFP (Addgene 48138) and transfected into mESCs + (Lipofectamine 2000) or G144 cells (Amaxa Nucleofector II, Program A033). GFP-positive cells were single cell sorted 48h post-transfection, expanded and screened by immunoblotting for CIC deletion. Inhibitor treatment with 1 \u03BCM MEK inhibitor (PD0325901) was performed in 80% confluent cultures for 4 and 24 h respectively. DMSO was used as mock control. Cells were washed - once with PBS, lysed directly in RLT buffer (Qiagen). Total RNA was extracted - using the RNAeasy kit (Qiagen). 500 ng of total RNA was used for library - preparation using TruSeq RNA Library Prep Kit v2 (Illumina) according to manufacturer - recommendations.\n \n \n - \ \n ENA-STUDY\n ERP108370\n - \ \n \n \n - \ \n ENA-EXPERIMENT\n - \ ERX2552512\n \n \n - \ \n \n ENA-RUN\n - \ ERR2534091\n \n \n - \ \n \n ENA-SUBMISSION\n - \ ERA1350207\n \n \n - \ \n \n ENA-FASTQ-FILES\n - \ \n - \ \n \n \n - \ \n ENA-SUBMITTED-FILES\n - \ \n - \ \n \n \n - \ \n \n isolate\n - \ not applicable\n \n - \ \n organism\n Homo - sapiens\n \n \n - \ organism part\n brain\n - \ \n \n cell_type\n - \ glial cell\n \n - \ \n cell_line\n G144\n + once with PBS, lysed directly in RLT buffer (Qiagen). Total RNA was extracted + using the RNAeasy kit (Qiagen). 500 ng of total RNA was used for library preparation + using TruSeq RNA Library Prep Kit v2 (Illumina) according to manufacturer + recommendations.\n \n \n \n + \ ENA-FASTQ-FILES\n \n + \ \n \n \n \n + \ ENA-SUBMITTED-FILES\n \n + \ \n \n\n\n + \ \n ENA-CHECKLIST\n ERC000011\n \ \n \n disease\n \ glioblastoma multiforme\n \n + \ \n individual\n 1\n + \ \n \n organism\n + \ Homo sapiens\n \n + \ \n organism\n Homo + sapiens\n \n \n + \ cell type\n glial cell\n + \ \n \n common + name\n human\n \n + \ \n organism part\n brain\n + \ \n \n cell + line\n G144\n \n \ \n genotype\n wild type genotype\n \n \n - \ individual\n 1\n \n - \ \n ENA-CHECKLIST\n ERC000011\n - \ \n \n ENA-SPOT-COUNT\n - \ 20997810\n \n \n - \ ENA-BASE-COUNT\n 1585139118\n - \ \n \n ENA-FIRST-PUBLIC\n - \ 2018-05-30\n \n - \ \n ENA-LAST-UPDATE\n + \ ENA-FIRST-PUBLIC\n 2018-05-30\n + \ \n \n ENA-LAST-UPDATE\n \ 2018-04-24\n \n \ \n\n\n" headers: Content-Type: - application/xml Date: - - Wed, 28 Jul 2021 19:42:29 GMT + - Wed, 17 May 2023 18:36:25 GMT Strict-Transport-Security: - max-age=0 Transfer-Encoding: @@ -9115,7 +7659,7 @@ interactions: Connection: - keep-alive User-Agent: - - python-requests/2.25.1 + - python-requests/2.30.0 method: GET uri: https://www.ebi.ac.uk/ena/browser/api/xml/ERP108370 response: @@ -9175,7 +7719,7 @@ interactions: Content-Type: - application/xml Date: - - Wed, 28 Jul 2021 19:42:29 GMT + - Wed, 17 May 2023 18:36:25 GMT Strict-Transport-Security: - max-age=0 Transfer-Encoding: @@ -9193,7 +7737,7 @@ interactions: Connection: - keep-alive User-Agent: - - python-requests/2.25.1 + - python-requests/2.30.0 method: GET uri: https://www.ebi.ac.uk/ena/browser/api/xml/ERA1350207 response: @@ -9229,7 +7773,7 @@ interactions: Content-Type: - application/xml Date: - - Wed, 28 Jul 2021 19:42:31 GMT + - Wed, 17 May 2023 18:36:25 GMT Strict-Transport-Security: - max-age=0 Transfer-Encoding: @@ -9237,68 +7781,6 @@ interactions: status: code: 200 message: '' -- request: - body: acc=ERR2534091&accept-proto=fasp&version=2.0 - headers: - Accept: - - '*/*' - Accept-Encoding: - - gzip, deflate - Connection: - - keep-alive - Content-Length: - - '44' - User-Agent: - - python-requests/2.25.1 - method: POST - uri: https://www.ncbi.nlm.nih.gov/Traces/names/names.cgi - response: - body: - string: !!binary | - H4sIAAAAAAAAAwzIsQrCMBAA0L1fEXDoVLlcc821u7NQnNyapKVKMCGNiHAfr298JzxDc5Qlv51c - 5hmpNzBqGYgGZmAWBM0d2A7Gm8YJzNQPd7HaUmAH3vWLCW4jo8nyitp4JEAQEQMg11f8qnavNR+t - yiXV5FNUj0MtMabPGtSWiqr7P5J7rr42PwAAAP//AwA2wGMdjgAAAA== - headers: - Cache-Control: - - private - Connection: - - Keep-Alive - Content-Encoding: - - gzip - Content-Security-Policy: - - upgrade-insecure-requests - Content-Type: - - text/plain - Date: - - Wed, 28 Jul 2021 19:42:31 GMT - Keep-Alive: - - timeout=1, max=10 - NCBI-PHID: - - CC95F25B101B32710000000000000001.m_1 - NCBI-SID: - - CC95F25B101B3271_0000SID - Referrer-Policy: - - origin-when-cross-origin - Server: - - Apache - Set-Cookie: - - ncbi_sid=CC95F25B101B3271_0000SID; domain=.nih.gov; path=/; expires=Thu, 28 - Jul 2022 19:42:31 GMT - SraNameServerOutputVersion: - - '2.0' - Strict-Transport-Security: - - max-age=31536000; includeSubDomains; preload - Transfer-Encoding: - - chunked - Vary: - - Accept-Encoding - X-UA-Compatible: - - IE=Edge - X-XSS-Protection: - - 1; mode=block - status: - code: 200 - message: OK - request: body: null headers: @@ -9309,29 +7791,27 @@ interactions: Connection: - keep-alive User-Agent: - - python-requests/2.25.1 + - python-requests/2.30.0 method: GET uri: https://www.ebi.ac.uk/ena/portal/api/filereport?accession=ERR2534091&result=read_run response: body: - string: "run_accession\tfastq_ftp\tfastq_bytes\tfastq_md5\tsubmitted_ftp\tsubmitted_bytes\tsubmitted_md5\tsra_ftp\tsra_bytes\tsra_md5\nERR2534091\tftp.sra.ebi.ac.uk/vol1/fastq/ERR253/001/ERR2534091/ERR2534091.fastq.gz\t989268235\t0802cce838493fc43f1633340c764b14\tftp.sra.ebi.ac.uk/vol1/run/ERR253/ERR2534091/G144_Parental_RNAseq_24h_3.fastq.gz\t1030713695\tde063ac40bec17deefda44342353dd0d\t\t\t\n" + string: "run_accession\tfastq_ftp\tfastq_bytes\tfastq_md5\tbam_ftp\tbam_bytes\tbam_md5\tsubmitted_ftp\tsubmitted_bytes\tsubmitted_md5\tsra_ftp\tsra_bytes\tsra_md5\nERR2534091\tftp.sra.ebi.ac.uk/vol1/fastq/ERR253/001/ERR2534091/ERR2534091.fastq.gz\t989268235\t0802cce838493fc43f1633340c764b14\t\t\t\tftp.sra.ebi.ac.uk/vol1/run/ERR253/ERR2534091/G144_Parental_RNAseq_24h_3.fastq.gz\t1030713695\tde063ac40bec17deefda44342353dd0d\tftp.sra.ebi.ac.uk/vol1/err/ERR253/001/ERR2534091\t655688068\tbde1222054dbb257c4c7c293285f348c\n" headers: Cache-Control: - no-cache, no-store, max-age=0, must-revalidate + Content-Length: + - '487' Content-Type: - text/plain Date: - - Wed, 28 Jul 2021 19:42:31 GMT + - Wed, 17 May 2023 18:36:26 GMT Expires: - '0' Pragma: - no-cache - Server: - - Apache-Coyote/1.1 Strict-Transport-Security: - max-age=0 - Transfer-Encoding: - - chunked X-Content-Type-Options: - nosniff X-Frame-Options: @@ -9340,7 +7820,7 @@ interactions: - 1; mode=block status: code: 200 - message: OK + message: '' - request: body: null headers: @@ -9351,7 +7831,7 @@ interactions: Connection: - keep-alive User-Agent: - - python-requests/2.25.1 + - python-requests/2.30.0 method: GET uri: https://www.ebi.ac.uk/ena/browser/api/xml/ERR2534092 response: @@ -9393,7 +7873,7 @@ interactions: Content-Type: - application/xml Date: - - Wed, 28 Jul 2021 19:42:33 GMT + - Wed, 17 May 2023 18:36:26 GMT Strict-Transport-Security: - max-age=0 Transfer-Encoding: @@ -9411,7 +7891,7 @@ interactions: Connection: - keep-alive User-Agent: - - python-requests/2.25.1 + - python-requests/2.30.0 method: GET uri: https://www.ebi.ac.uk/ena/browser/api/xml/ERX2552513 response: @@ -9479,7 +7959,7 @@ interactions: Content-Type: - application/xml Date: - - Wed, 28 Jul 2021 19:42:33 GMT + - Wed, 17 May 2023 18:36:27 GMT Strict-Transport-Security: - max-age=0 Transfer-Encoding: @@ -9497,14 +7977,14 @@ interactions: Connection: - keep-alive User-Agent: - - python-requests/2.25.1 + - python-requests/2.30.0 method: GET uri: https://www.ebi.ac.uk/ena/browser/api/xml/ERS2428807 response: body: string: "\n\n\n \n + alias=\"E-MTAB-6681:G144_Parental_RNAseq_4h_1\" center_name=\"BRIC - Biotech + Research and Innovation Centre\" broker_name=\"ArrayExpress\">\n \n \ ERS2428807\n SAMEA4608111\n \ E-MTAB-6681:G144_Parental_RNAseq_4h_1\n \n @@ -9512,57 +7992,45 @@ interactions: \ Homo sapiens\n human\n \ \n Protocols: CRISPR mediated KO of CIC: sgRNAs (Target sequence: mESCs: GCCTTCATGATCTTCAGCAAG; G144: GGGCGAGTGGTGGTATGCCC) - \ were cloned into pSpCas9(BB)-2A-GFP (Addgene 48138) and transfected into - mESCs (Lipofectamine 2000) or G144 cells (Amaxa Nucleofector II, Program A033). + were cloned into pSpCas9(BB)-2A-GFP (Addgene 48138) and transfected into mESCs + (Lipofectamine 2000) or G144 cells (Amaxa Nucleofector II, Program A033). GFP-positive cells were single cell sorted 48h post-transfection, expanded and screened by immunoblotting for CIC deletion. Inhibitor treatment with 1 \u03BCM MEK inhibitor (PD0325901) was performed in 80% confluent cultures for 4 and 24 h respectively. DMSO was used as mock control. Cells were washed - once with PBS, lysed directly in RLT buffer (Qiagen). Total RNA was extracted - using the RNAeasy kit (Qiagen). 500 ng of total RNA was used for library - preparation using TruSeq RNA Library Prep Kit v2 (Illumina) according to manufacturer - recommendations.\n \n \n - \ \n ENA-STUDY\n ERP108370\n - \ \n \n \n - \ \n ENA-EXPERIMENT\n - \ ERX2552513\n \n \n - \ \n \n ENA-RUN\n - \ ERR2534092\n \n \n - \ \n \n ENA-SUBMISSION\n - \ ERA1350207\n \n \n - \ \n \n ENA-FASTQ-FILES\n - \ \n - \ \n \n \n - \ \n ENA-SUBMITTED-FILES\n - \ \n - \ \n \n \n - \ \n \n isolate\n - \ not applicable\n \n - \ \n organism\n Homo - sapiens\n \n \n - \ organism part\n brain\n - \ \n \n cell_type\n - \ glial cell\n \n - \ \n cell_line\n G144\n + once with PBS, lysed directly in RLT buffer (Qiagen). Total RNA was extracted + using the RNAeasy kit (Qiagen). 500 ng of total RNA was used for library preparation + using TruSeq RNA Library Prep Kit v2 (Illumina) according to manufacturer + recommendations.\n \n \n \n + \ ENA-FASTQ-FILES\n \n + \ \n \n \n \n + \ ENA-SUBMITTED-FILES\n \n + \ \n \n\n\n + \ \n ENA-CHECKLIST\n ERC000011\n \ \n \n disease\n \ glioblastoma multiforme\n \n + \ \n individual\n 1\n + \ \n \n organism\n + \ Homo sapiens\n \n + \ \n organism\n Homo + sapiens\n \n \n + \ cell type\n glial cell\n + \ \n \n common + name\n human\n \n + \ \n organism part\n brain\n + \ \n \n cell + line\n G144\n \n \ \n genotype\n wild type genotype\n \n \n - \ individual\n 1\n \n - \ \n ENA-CHECKLIST\n ERC000011\n - \ \n \n ENA-SPOT-COUNT\n - \ 21890892\n \n \n - \ ENA-BASE-COUNT\n 1652585468\n - \ \n \n ENA-FIRST-PUBLIC\n - \ 2018-05-30\n \n - \ \n ENA-LAST-UPDATE\n + \ ENA-FIRST-PUBLIC\n 2018-05-30\n + \ \n \n ENA-LAST-UPDATE\n \ 2018-04-24\n \n \ \n\n\n" headers: Content-Type: - application/xml Date: - - Wed, 28 Jul 2021 19:42:34 GMT + - Wed, 17 May 2023 18:36:26 GMT Strict-Transport-Security: - max-age=0 Transfer-Encoding: @@ -9580,7 +8048,7 @@ interactions: Connection: - keep-alive User-Agent: - - python-requests/2.25.1 + - python-requests/2.30.0 method: GET uri: https://www.ebi.ac.uk/ena/browser/api/xml/ERP108370 response: @@ -9640,7 +8108,7 @@ interactions: Content-Type: - application/xml Date: - - Wed, 28 Jul 2021 19:42:35 GMT + - Wed, 17 May 2023 18:36:27 GMT Strict-Transport-Security: - max-age=0 Transfer-Encoding: @@ -9658,7 +8126,7 @@ interactions: Connection: - keep-alive User-Agent: - - python-requests/2.25.1 + - python-requests/2.30.0 method: GET uri: https://www.ebi.ac.uk/ena/browser/api/xml/ERA1350207 response: @@ -9694,7 +8162,7 @@ interactions: Content-Type: - application/xml Date: - - Wed, 28 Jul 2021 19:42:35 GMT + - Wed, 17 May 2023 18:36:28 GMT Strict-Transport-Security: - max-age=0 Transfer-Encoding: @@ -9702,68 +8170,6 @@ interactions: status: code: 200 message: '' -- request: - body: acc=ERR2534092&accept-proto=fasp&version=2.0 - headers: - Accept: - - '*/*' - Accept-Encoding: - - gzip, deflate - Connection: - - keep-alive - Content-Length: - - '44' - User-Agent: - - python-requests/2.25.1 - method: POST - uri: https://www.ncbi.nlm.nih.gov/Traces/names/names.cgi - response: - body: - string: !!binary | - H4sIAAAAAAAAAwzIvQrCMBAA4L1PEXDoVLlL0jTX3VkoTm75K1WCKWlEhHt4/cbvJM/QHdXtb8+X - ZZGj0kCSjdWEdhqRJaAdYBqAbihnMDOoO6cUEnnlkUZwGA1RXFWyRkfydsXAzBqAr6/8Ff3W2n70 - Yq+llVCyeBzC5Vw+KYq1VNG2fxT/TKF1PwAAAP//AwDBPahJjgAAAA== - headers: - Cache-Control: - - private - Connection: - - Keep-Alive - Content-Encoding: - - gzip - Content-Security-Policy: - - upgrade-insecure-requests - Content-Type: - - text/plain - Date: - - Wed, 28 Jul 2021 19:42:36 GMT - Keep-Alive: - - timeout=1, max=10 - NCBI-PHID: - - C7A42164101B32C10000000000000001.m_1 - NCBI-SID: - - C7A42164101B32C1_0000SID - Referrer-Policy: - - origin-when-cross-origin - Server: - - Apache - Set-Cookie: - - ncbi_sid=C7A42164101B32C1_0000SID; domain=.nih.gov; path=/; expires=Thu, 28 - Jul 2022 19:42:36 GMT - SraNameServerOutputVersion: - - '2.0' - Strict-Transport-Security: - - max-age=31536000; includeSubDomains; preload - Transfer-Encoding: - - chunked - Vary: - - Accept-Encoding - X-UA-Compatible: - - IE=Edge - X-XSS-Protection: - - 1; mode=block - status: - code: 200 - message: OK - request: body: null headers: @@ -9774,29 +8180,27 @@ interactions: Connection: - keep-alive User-Agent: - - python-requests/2.25.1 + - python-requests/2.30.0 method: GET uri: https://www.ebi.ac.uk/ena/portal/api/filereport?accession=ERR2534092&result=read_run response: body: - string: "run_accession\tfastq_ftp\tfastq_bytes\tfastq_md5\tsubmitted_ftp\tsubmitted_bytes\tsubmitted_md5\tsra_ftp\tsra_bytes\tsra_md5\nERR2534092\tftp.sra.ebi.ac.uk/vol1/fastq/ERR253/002/ERR2534092/ERR2534092.fastq.gz\t1032472887\t653c55e458a2554089c39a4e18d70927\tftp.sra.ebi.ac.uk/vol1/run/ERR253/ERR2534092/G144_Parental_RNAseq_4h_1.fastq.gz\t1075913209\t6d410b59ed993b1c515ec502cad05534\t\t\t\n" + string: "run_accession\tfastq_ftp\tfastq_bytes\tfastq_md5\tbam_ftp\tbam_bytes\tbam_md5\tsubmitted_ftp\tsubmitted_bytes\tsubmitted_md5\tsra_ftp\tsra_bytes\tsra_md5\nERR2534092\tftp.sra.ebi.ac.uk/vol1/fastq/ERR253/002/ERR2534092/ERR2534092.fastq.gz\t1032472887\t653c55e458a2554089c39a4e18d70927\t\t\t\tftp.sra.ebi.ac.uk/vol1/run/ERR253/ERR2534092/G144_Parental_RNAseq_4h_1.fastq.gz\t1075913209\t6d410b59ed993b1c515ec502cad05534\tftp.sra.ebi.ac.uk/vol1/err/ERR253/002/ERR2534092\t684918731\t8180fa815cec978c15eaaefb49009f50\n" headers: Cache-Control: - no-cache, no-store, max-age=0, must-revalidate + Content-Length: + - '487' Content-Type: - text/plain Date: - - Wed, 28 Jul 2021 19:42:42 GMT + - Wed, 17 May 2023 18:36:28 GMT Expires: - '0' Pragma: - no-cache - Server: - - Apache-Coyote/1.1 Strict-Transport-Security: - max-age=0 - Transfer-Encoding: - - chunked X-Content-Type-Options: - nosniff X-Frame-Options: @@ -9805,7 +8209,7 @@ interactions: - 1; mode=block status: code: 200 - message: OK + message: '' - request: body: null headers: @@ -9816,7 +8220,7 @@ interactions: Connection: - keep-alive User-Agent: - - python-requests/2.25.1 + - python-requests/2.30.0 method: GET uri: https://www.ebi.ac.uk/ena/browser/api/xml/ERR2534093 response: @@ -9858,7 +8262,7 @@ interactions: Content-Type: - application/xml Date: - - Wed, 28 Jul 2021 19:42:42 GMT + - Wed, 17 May 2023 18:36:29 GMT Strict-Transport-Security: - max-age=0 Transfer-Encoding: @@ -9876,7 +8280,7 @@ interactions: Connection: - keep-alive User-Agent: - - python-requests/2.25.1 + - python-requests/2.30.0 method: GET uri: https://www.ebi.ac.uk/ena/browser/api/xml/ERX2552514 response: @@ -9944,7 +8348,7 @@ interactions: Content-Type: - application/xml Date: - - Wed, 28 Jul 2021 19:42:43 GMT + - Wed, 17 May 2023 18:36:29 GMT Strict-Transport-Security: - max-age=0 Transfer-Encoding: @@ -9962,14 +8366,14 @@ interactions: Connection: - keep-alive User-Agent: - - python-requests/2.25.1 + - python-requests/2.30.0 method: GET uri: https://www.ebi.ac.uk/ena/browser/api/xml/ERS2428808 response: body: string: "\n\n\n \n + alias=\"E-MTAB-6681:G144_Parental_RNAseq_4h_2\" center_name=\"BRIC - Biotech + Research and Innovation Centre\" broker_name=\"ArrayExpress\">\n \n \ ERS2428808\n SAMEA4608112\n \ E-MTAB-6681:G144_Parental_RNAseq_4h_2\n \n @@ -9977,57 +8381,45 @@ interactions: \ Homo sapiens\n human\n \ \n Protocols: CRISPR mediated KO of CIC: sgRNAs (Target sequence: mESCs: GCCTTCATGATCTTCAGCAAG; G144: GGGCGAGTGGTGGTATGCCC) - \ were cloned into pSpCas9(BB)-2A-GFP (Addgene 48138) and transfected into - mESCs (Lipofectamine 2000) or G144 cells (Amaxa Nucleofector II, Program A033). - GFP-positive cells were single cell sorted 48h post-transfection, expanded - and screened by immunoblotting for CIC deletion. Inhibitor treatment with - 1 \u03BCM MEK inhibitor (PD0325901) was performed in 80% confluent cultures - for 4 and 24 h respectively. DMSO was used as mock control. Cells were washed - once with PBS, lysed directly in RLT buffer (Qiagen). Total RNA was extracted - using the RNAeasy kit (Qiagen). 500 ng of total RNA was used for library - preparation using TruSeq RNA Library Prep Kit v2 (Illumina) according to manufacturer - recommendations.\n \n \n - \ \n ENA-STUDY\n ERP108370\n - \ \n \n \n - \ \n ENA-EXPERIMENT\n - \ ERX2552514\n \n \n - \ \n \n ENA-RUN\n - \ ERR2534093\n \n \n - \ \n \n ENA-SUBMISSION\n - \ ERA1350207\n \n \n - \ \n \n ENA-FASTQ-FILES\n - \ \n - \ \n \n \n - \ \n ENA-SUBMITTED-FILES\n - \ \n - \ \n \n \n - \ \n \n isolate\n - \ not applicable\n \n - \ \n organism\n Homo - sapiens\n \n \n - \ organism part\n brain\n - \ \n \n cell_type\n - \ glial cell\n \n - \ \n cell_line\n G144\n + were cloned into pSpCas9(BB)-2A-GFP (Addgene 48138) and transfected into mESCs + (Lipofectamine 2000) or G144 cells (Amaxa Nucleofector II, Program A033). + GFP-positive cells were single cell sorted 48h post-transfection, expanded + and screened by immunoblotting for CIC deletion. Inhibitor treatment with + 1 \u03BCM MEK inhibitor (PD0325901) was performed in 80% confluent cultures + for 4 and 24 h respectively. DMSO was used as mock control. Cells were washed + once with PBS, lysed directly in RLT buffer (Qiagen). Total RNA was extracted + using the RNAeasy kit (Qiagen). 500 ng of total RNA was used for library preparation + using TruSeq RNA Library Prep Kit v2 (Illumina) according to manufacturer + recommendations.\n \n \n \n + \ ENA-FASTQ-FILES\n \n + \ \n \n \n \n + \ ENA-SUBMITTED-FILES\n \n + \ \n \n\n\n + \ \n ENA-CHECKLIST\n ERC000011\n \ \n \n disease\n \ glioblastoma multiforme\n \n + \ \n individual\n 1\n + \ \n \n organism\n + \ Homo sapiens\n \n + \ \n organism\n Homo + sapiens\n \n \n + \ cell type\n glial cell\n + \ \n \n common + name\n human\n \n + \ \n organism part\n brain\n + \ \n \n cell + line\n G144\n \n \ \n genotype\n wild type genotype\n \n \n - \ individual\n 1\n \n - \ \n ENA-CHECKLIST\n ERC000011\n - \ \n \n ENA-SPOT-COUNT\n - \ 20416177\n \n \n - \ ENA-BASE-COUNT\n 1541046510\n - \ \n \n ENA-FIRST-PUBLIC\n - \ 2018-05-30\n \n - \ \n ENA-LAST-UPDATE\n + \ ENA-FIRST-PUBLIC\n 2018-05-30\n + \ \n \n ENA-LAST-UPDATE\n \ 2018-04-24\n \n \ \n\n\n" headers: Content-Type: - application/xml Date: - - Wed, 28 Jul 2021 19:42:43 GMT + - Wed, 17 May 2023 18:36:30 GMT Strict-Transport-Security: - max-age=0 Transfer-Encoding: @@ -10045,7 +8437,7 @@ interactions: Connection: - keep-alive User-Agent: - - python-requests/2.25.1 + - python-requests/2.30.0 method: GET uri: https://www.ebi.ac.uk/ena/browser/api/xml/ERP108370 response: @@ -10105,7 +8497,7 @@ interactions: Content-Type: - application/xml Date: - - Wed, 28 Jul 2021 19:42:43 GMT + - Wed, 17 May 2023 18:36:30 GMT Strict-Transport-Security: - max-age=0 Transfer-Encoding: @@ -10123,7 +8515,7 @@ interactions: Connection: - keep-alive User-Agent: - - python-requests/2.25.1 + - python-requests/2.30.0 method: GET uri: https://www.ebi.ac.uk/ena/browser/api/xml/ERA1350207 response: @@ -10159,7 +8551,7 @@ interactions: Content-Type: - application/xml Date: - - Wed, 28 Jul 2021 19:42:44 GMT + - Wed, 17 May 2023 18:36:30 GMT Strict-Transport-Security: - max-age=0 Transfer-Encoding: @@ -10167,68 +8559,6 @@ interactions: status: code: 200 message: '' -- request: - body: acc=ERR2534093&accept-proto=fasp&version=2.0 - headers: - Accept: - - '*/*' - Accept-Encoding: - - gzip, deflate - Connection: - - keep-alive - Content-Length: - - '44' - User-Agent: - - python-requests/2.25.1 - method: POST - uri: https://www.ncbi.nlm.nih.gov/Traces/names/names.cgi - response: - body: - string: !!binary | - H4sIAAAAAAAAAwzLsQrDIBAA0D1fIXTIlHKep9HsnQuhUzdjlLRIDImlFO7jm/XBu+AVmmP322fi - 2ziiVgROsVE9KmOkZQRpO+g7cA+JA5gB6cnKJKKAErWO1iZno0s6kHFz8HRGZiYAvq/5J9ql1u1o - xbaXWkLJ4nUIn3P5xlmksou6nFCmdwy1+QMAAP//AwC4yyTmjgAAAA== - headers: - Cache-Control: - - private - Connection: - - Keep-Alive - Content-Encoding: - - gzip - Content-Security-Policy: - - upgrade-insecure-requests - Content-Type: - - text/plain - Date: - - Wed, 28 Jul 2021 19:42:45 GMT - Keep-Alive: - - timeout=1, max=10 - NCBI-PHID: - - C7A421B2101B33510000000000000001.m_1 - NCBI-SID: - - C7A421B2101B3351_0000SID - Referrer-Policy: - - origin-when-cross-origin - Server: - - Apache - Set-Cookie: - - ncbi_sid=C7A421B2101B3351_0000SID; domain=.nih.gov; path=/; expires=Thu, 28 - Jul 2022 19:42:45 GMT - SraNameServerOutputVersion: - - '2.0' - Strict-Transport-Security: - - max-age=31536000; includeSubDomains; preload - Transfer-Encoding: - - chunked - Vary: - - Accept-Encoding - X-UA-Compatible: - - IE=Edge - X-XSS-Protection: - - 1; mode=block - status: - code: 200 - message: OK - request: body: null headers: @@ -10239,29 +8569,27 @@ interactions: Connection: - keep-alive User-Agent: - - python-requests/2.25.1 + - python-requests/2.30.0 method: GET uri: https://www.ebi.ac.uk/ena/portal/api/filereport?accession=ERR2534093&result=read_run response: body: - string: "run_accession\tfastq_ftp\tfastq_bytes\tfastq_md5\tsubmitted_ftp\tsubmitted_bytes\tsubmitted_md5\tsra_ftp\tsra_bytes\tsra_md5\nERR2534093\tftp.sra.ebi.ac.uk/vol1/fastq/ERR253/003/ERR2534093/ERR2534093.fastq.gz\t961178965\t6e274ff76681397696f3da627dabb387\tftp.sra.ebi.ac.uk/vol1/run/ERR253/ERR2534093/G144_Parental_RNAseq_4h_2.fastq.gz\t1001231193\t1d9adb545303b3a0d7e9f20ca98f45d7\t\t\t\n" + string: "run_accession\tfastq_ftp\tfastq_bytes\tfastq_md5\tbam_ftp\tbam_bytes\tbam_md5\tsubmitted_ftp\tsubmitted_bytes\tsubmitted_md5\tsra_ftp\tsra_bytes\tsra_md5\nERR2534093\tftp.sra.ebi.ac.uk/vol1/fastq/ERR253/003/ERR2534093/ERR2534093.fastq.gz\t961178965\t6e274ff76681397696f3da627dabb387\t\t\t\tftp.sra.ebi.ac.uk/vol1/run/ERR253/ERR2534093/G144_Parental_RNAseq_4h_2.fastq.gz\t1001231193\t1d9adb545303b3a0d7e9f20ca98f45d7\tftp.sra.ebi.ac.uk/vol1/err/ERR253/003/ERR2534093\t637236598\t76040bde5e5f7e6ec50451975626a15a\n" headers: Cache-Control: - no-cache, no-store, max-age=0, must-revalidate + Content-Length: + - '486' Content-Type: - text/plain Date: - - Wed, 28 Jul 2021 19:42:46 GMT + - Wed, 17 May 2023 18:36:30 GMT Expires: - '0' Pragma: - no-cache - Server: - - Apache-Coyote/1.1 Strict-Transport-Security: - max-age=0 - Transfer-Encoding: - - chunked X-Content-Type-Options: - nosniff X-Frame-Options: @@ -10270,7 +8598,7 @@ interactions: - 1; mode=block status: code: 200 - message: OK + message: '' - request: body: null headers: @@ -10281,7 +8609,7 @@ interactions: Connection: - keep-alive User-Agent: - - python-requests/2.25.1 + - python-requests/2.30.0 method: GET uri: https://www.ebi.ac.uk/ena/browser/api/xml/ERR2534094 response: @@ -10323,7 +8651,7 @@ interactions: Content-Type: - application/xml Date: - - Wed, 28 Jul 2021 19:42:46 GMT + - Wed, 17 May 2023 18:36:31 GMT Strict-Transport-Security: - max-age=0 Transfer-Encoding: @@ -10341,7 +8669,7 @@ interactions: Connection: - keep-alive User-Agent: - - python-requests/2.25.1 + - python-requests/2.30.0 method: GET uri: https://www.ebi.ac.uk/ena/browser/api/xml/ERX2552515 response: @@ -10409,7 +8737,7 @@ interactions: Content-Type: - application/xml Date: - - Wed, 28 Jul 2021 19:42:47 GMT + - Wed, 17 May 2023 18:36:32 GMT Strict-Transport-Security: - max-age=0 Transfer-Encoding: @@ -10427,14 +8755,14 @@ interactions: Connection: - keep-alive User-Agent: - - python-requests/2.25.1 + - python-requests/2.30.0 method: GET uri: https://www.ebi.ac.uk/ena/browser/api/xml/ERS2428809 response: body: string: "\n\n\n \n + alias=\"E-MTAB-6681:G144_Parental_RNAseq_4h_3\" center_name=\"BRIC - Biotech + Research and Innovation Centre\" broker_name=\"ArrayExpress\">\n \n \ ERS2428809\n SAMEA4608113\n \ E-MTAB-6681:G144_Parental_RNAseq_4h_3\n \n @@ -10442,57 +8770,45 @@ interactions: \ Homo sapiens\n human\n \ \n Protocols: CRISPR mediated KO of CIC: sgRNAs (Target sequence: mESCs: GCCTTCATGATCTTCAGCAAG; G144: GGGCGAGTGGTGGTATGCCC) - \ were cloned into pSpCas9(BB)-2A-GFP (Addgene 48138) and transfected into - mESCs (Lipofectamine 2000) or G144 cells (Amaxa Nucleofector II, Program A033). + were cloned into pSpCas9(BB)-2A-GFP (Addgene 48138) and transfected into mESCs + (Lipofectamine 2000) or G144 cells (Amaxa Nucleofector II, Program A033). GFP-positive cells were single cell sorted 48h post-transfection, expanded and screened by immunoblotting for CIC deletion. Inhibitor treatment with 1 \u03BCM MEK inhibitor (PD0325901) was performed in 80% confluent cultures for 4 and 24 h respectively. DMSO was used as mock control. Cells were washed - once with PBS, lysed directly in RLT buffer (Qiagen). Total RNA was extracted - using the RNAeasy kit (Qiagen). 500 ng of total RNA was used for library - preparation using TruSeq RNA Library Prep Kit v2 (Illumina) according to manufacturer - recommendations.\n \n \n - \ \n ENA-STUDY\n ERP108370\n - \ \n \n \n - \ \n ENA-EXPERIMENT\n - \ ERX2552515\n \n \n - \ \n \n ENA-RUN\n - \ ERR2534094\n \n \n - \ \n \n ENA-SUBMISSION\n - \ ERA1350207\n \n \n - \ \n \n ENA-FASTQ-FILES\n - \ \n - \ \n \n \n - \ \n ENA-SUBMITTED-FILES\n - \ \n - \ \n \n \n - \ \n \n isolate\n - \ not applicable\n \n - \ \n organism\n Homo - sapiens\n \n \n - \ organism part\n brain\n - \ \n \n cell_type\n - \ glial cell\n \n - \ \n cell_line\n G144\n + once with PBS, lysed directly in RLT buffer (Qiagen). Total RNA was extracted + using the RNAeasy kit (Qiagen). 500 ng of total RNA was used for library preparation + using TruSeq RNA Library Prep Kit v2 (Illumina) according to manufacturer + recommendations.\n \n \n \n + \ ENA-FASTQ-FILES\n \n + \ \n \n \n \n + \ ENA-SUBMITTED-FILES\n \n + \ \n \n\n\n + \ \n ENA-CHECKLIST\n ERC000011\n \ \n \n disease\n \ glioblastoma multiforme\n \n + \ \n individual\n 1\n + \ \n \n organism\n + \ Homo sapiens\n \n + \ \n organism\n Homo + sapiens\n \n \n + \ cell type\n glial cell\n + \ \n \n common + name\n human\n \n + \ \n organism part\n brain\n + \ \n \n cell + line\n G144\n \n \ \n genotype\n wild type genotype\n \n \n - \ individual\n 1\n \n - \ \n ENA-CHECKLIST\n ERC000011\n - \ \n \n ENA-SPOT-COUNT\n - \ 21534233\n \n \n - \ ENA-BASE-COUNT\n 1625567863\n - \ \n \n ENA-FIRST-PUBLIC\n - \ 2018-05-30\n \n - \ \n ENA-LAST-UPDATE\n + \ ENA-FIRST-PUBLIC\n 2018-05-30\n + \ \n \n ENA-LAST-UPDATE\n \ 2018-04-24\n \n \ \n\n\n" headers: Content-Type: - application/xml Date: - - Wed, 28 Jul 2021 19:42:48 GMT + - Wed, 17 May 2023 18:36:32 GMT Strict-Transport-Security: - max-age=0 Transfer-Encoding: @@ -10510,7 +8826,7 @@ interactions: Connection: - keep-alive User-Agent: - - python-requests/2.25.1 + - python-requests/2.30.0 method: GET uri: https://www.ebi.ac.uk/ena/browser/api/xml/ERP108370 response: @@ -10570,7 +8886,7 @@ interactions: Content-Type: - application/xml Date: - - Wed, 28 Jul 2021 19:42:48 GMT + - Wed, 17 May 2023 18:36:32 GMT Strict-Transport-Security: - max-age=0 Transfer-Encoding: @@ -10588,7 +8904,7 @@ interactions: Connection: - keep-alive User-Agent: - - python-requests/2.25.1 + - python-requests/2.30.0 method: GET uri: https://www.ebi.ac.uk/ena/browser/api/xml/ERA1350207 response: @@ -10624,7 +8940,7 @@ interactions: Content-Type: - application/xml Date: - - Wed, 28 Jul 2021 19:42:48 GMT + - Wed, 17 May 2023 18:36:33 GMT Strict-Transport-Security: - max-age=0 Transfer-Encoding: @@ -10632,68 +8948,6 @@ interactions: status: code: 200 message: '' -- request: - body: acc=ERR2534094&accept-proto=fasp&version=2.0 - headers: - Accept: - - '*/*' - Accept-Encoding: - - gzip, deflate - Connection: - - keep-alive - Content-Length: - - '44' - User-Agent: - - python-requests/2.25.1 - method: POST - uri: https://www.ncbi.nlm.nih.gov/Traces/names/names.cgi - response: - body: - string: !!binary | - H4sIAAAAAAAAAwzLsQrDIBCA4T1PIXTIlHJnPDXZOxdCp24aLWmRGtRSCvfwzfbzwX+SZ+hqcfvH - 82VZJI0KJsXaoFUKYGIJaAcwA0w3lDPQTHjnMToywRFpb9FHixS1CTqEeBSCYeZj5us7/US/tbbX - Xuwlt7zmJJ5VuJTyNwbxyEW07YDsX3Ft3R8AAP//AwCBx/lKjgAAAA== - headers: - Cache-Control: - - private - Connection: - - Keep-Alive - Content-Encoding: - - gzip - Content-Security-Policy: - - upgrade-insecure-requests - Content-Type: - - text/plain - Date: - - Wed, 28 Jul 2021 19:42:49 GMT - Keep-Alive: - - timeout=1, max=10 - NCBI-PHID: - - CC95F2CE101B33910000000000000001.m_1 - NCBI-SID: - - CC95F2CE101B3391_0000SID - Referrer-Policy: - - origin-when-cross-origin - Server: - - Apache - Set-Cookie: - - ncbi_sid=CC95F2CE101B3391_0000SID; domain=.nih.gov; path=/; expires=Thu, 28 - Jul 2022 19:42:49 GMT - SraNameServerOutputVersion: - - '2.0' - Strict-Transport-Security: - - max-age=31536000; includeSubDomains; preload - Transfer-Encoding: - - chunked - Vary: - - Accept-Encoding - X-UA-Compatible: - - IE=Edge - X-XSS-Protection: - - 1; mode=block - status: - code: 200 - message: OK - request: body: null headers: @@ -10704,29 +8958,27 @@ interactions: Connection: - keep-alive User-Agent: - - python-requests/2.25.1 + - python-requests/2.30.0 method: GET uri: https://www.ebi.ac.uk/ena/portal/api/filereport?accession=ERR2534094&result=read_run response: body: - string: "run_accession\tfastq_ftp\tfastq_bytes\tfastq_md5\tsubmitted_ftp\tsubmitted_bytes\tsubmitted_md5\tsra_ftp\tsra_bytes\tsra_md5\nERR2534094\tftp.sra.ebi.ac.uk/vol1/fastq/ERR253/004/ERR2534094/ERR2534094.fastq.gz\t1013301291\ta4f593c11cf4db4f5a141897ad94274c\tftp.sra.ebi.ac.uk/vol1/run/ERR253/ERR2534094/G144_Parental_RNAseq_4h_3.fastq.gz\t1055226153\t3dad11032609517b430aab1d1df2835c\t\t\t\n" + string: "run_accession\tfastq_ftp\tfastq_bytes\tfastq_md5\tbam_ftp\tbam_bytes\tbam_md5\tsubmitted_ftp\tsubmitted_bytes\tsubmitted_md5\tsra_ftp\tsra_bytes\tsra_md5\nERR2534094\tftp.sra.ebi.ac.uk/vol1/fastq/ERR253/004/ERR2534094/ERR2534094.fastq.gz\t1013301291\ta4f593c11cf4db4f5a141897ad94274c\t\t\t\tftp.sra.ebi.ac.uk/vol1/run/ERR253/ERR2534094/G144_Parental_RNAseq_4h_3.fastq.gz\t1055226153\t3dad11032609517b430aab1d1df2835c\tftp.sra.ebi.ac.uk/vol1/err/ERR253/004/ERR2534094\t671843989\ta3fc50904843ae9b102922429126c0cf\n" headers: Cache-Control: - no-cache, no-store, max-age=0, must-revalidate + Content-Length: + - '487' Content-Type: - text/plain Date: - - Wed, 28 Jul 2021 19:42:50 GMT + - Wed, 17 May 2023 18:36:33 GMT Expires: - '0' Pragma: - no-cache - Server: - - Apache-Coyote/1.1 Strict-Transport-Security: - max-age=0 - Transfer-Encoding: - - chunked X-Content-Type-Options: - nosniff X-Frame-Options: @@ -10735,7 +8987,7 @@ interactions: - 1; mode=block status: code: 200 - message: OK + message: '' - request: body: null headers: @@ -10746,7 +8998,7 @@ interactions: Connection: - keep-alive User-Agent: - - python-requests/2.25.1 + - python-requests/2.30.0 method: GET uri: https://www.ebi.ac.uk/ena/browser/api/xml/ERR2534095 response: @@ -10788,7 +9040,7 @@ interactions: Content-Type: - application/xml Date: - - Wed, 28 Jul 2021 19:42:51 GMT + - Wed, 17 May 2023 18:36:33 GMT Strict-Transport-Security: - max-age=0 Transfer-Encoding: @@ -10806,7 +9058,7 @@ interactions: Connection: - keep-alive User-Agent: - - python-requests/2.25.1 + - python-requests/2.30.0 method: GET uri: https://www.ebi.ac.uk/ena/browser/api/xml/ERX2552516 response: @@ -10874,7 +9126,7 @@ interactions: Content-Type: - application/xml Date: - - Wed, 28 Jul 2021 19:42:52 GMT + - Wed, 17 May 2023 18:36:34 GMT Strict-Transport-Security: - max-age=0 Transfer-Encoding: @@ -10892,14 +9144,14 @@ interactions: Connection: - keep-alive User-Agent: - - python-requests/2.25.1 + - python-requests/2.30.0 method: GET uri: https://www.ebi.ac.uk/ena/browser/api/xml/ERS2428810 response: body: string: "\n\n\n \n + alias=\"E-MTAB-6681:G144_WTclone_RNAseq_24h_1\" center_name=\"BRIC - Biotech + Research and Innovation Centre\" broker_name=\"ArrayExpress\">\n \n \ ERS2428810\n SAMEA4608114\n \ E-MTAB-6681:G144_WTclone_RNAseq_24h_1\n \n @@ -10907,57 +9159,45 @@ interactions: \ Homo sapiens\n human\n \ \n Protocols: CRISPR mediated KO of CIC: sgRNAs (Target sequence: mESCs: GCCTTCATGATCTTCAGCAAG; G144: GGGCGAGTGGTGGTATGCCC) - \ were cloned into pSpCas9(BB)-2A-GFP (Addgene 48138) and transfected into - mESCs (Lipofectamine 2000) or G144 cells (Amaxa Nucleofector II, Program A033). + were cloned into pSpCas9(BB)-2A-GFP (Addgene 48138) and transfected into mESCs + (Lipofectamine 2000) or G144 cells (Amaxa Nucleofector II, Program A033). GFP-positive cells were single cell sorted 48h post-transfection, expanded and screened by immunoblotting for CIC deletion. Inhibitor treatment with 1 \u03BCM MEK inhibitor (PD0325901) was performed in 80% confluent cultures for 4 and 24 h respectively. DMSO was used as mock control. Cells were washed - once with PBS, lysed directly in RLT buffer (Qiagen). Total RNA was extracted - using the RNAeasy kit (Qiagen). 500 ng of total RNA was used for library - preparation using TruSeq RNA Library Prep Kit v2 (Illumina) according to manufacturer - recommendations.\n \n \n - \ \n ENA-STUDY\n ERP108370\n - \ \n \n \n - \ \n ENA-EXPERIMENT\n - \ ERX2552516\n \n \n - \ \n \n ENA-RUN\n - \ ERR2534095\n \n \n - \ \n \n ENA-SUBMISSION\n - \ ERA1350207\n \n \n - \ \n \n ENA-FASTQ-FILES\n - \ \n - \ \n \n \n - \ \n ENA-SUBMITTED-FILES\n - \ \n - \ \n \n \n - \ \n \n isolate\n - \ not applicable\n \n - \ \n organism\n Homo - sapiens\n \n \n - \ organism part\n brain\n - \ \n \n cell_type\n - \ glial cell\n \n - \ \n cell_line\n G144\n + once with PBS, lysed directly in RLT buffer (Qiagen). Total RNA was extracted + using the RNAeasy kit (Qiagen). 500 ng of total RNA was used for library preparation + using TruSeq RNA Library Prep Kit v2 (Illumina) according to manufacturer + recommendations.\n \n \n \n + \ ENA-FASTQ-FILES\n \n + \ \n \n \n \n + \ ENA-SUBMITTED-FILES\n \n + \ \n \n\n\n + \ \n ENA-CHECKLIST\n ERC000011\n \ \n \n disease\n \ glioblastoma multiforme\n \n + \ \n individual\n 2\n + \ \n \n organism\n + \ Homo sapiens\n \n + \ \n organism\n Homo + sapiens\n \n \n + \ cell type\n glial cell\n + \ \n \n common + name\n human\n \n + \ \n organism part\n brain\n + \ \n \n cell + line\n G144\n \n \ \n genotype\n wild type genotype\n \n \n - \ individual\n 2\n \n - \ \n ENA-CHECKLIST\n ERC000011\n - \ \n \n ENA-SPOT-COUNT\n - \ 21431687\n \n \n - \ ENA-BASE-COUNT\n 1618365016\n - \ \n \n ENA-FIRST-PUBLIC\n - \ 2018-05-30\n \n - \ \n ENA-LAST-UPDATE\n + \ ENA-FIRST-PUBLIC\n 2018-05-30\n + \ \n \n ENA-LAST-UPDATE\n \ 2018-04-24\n \n \ \n\n\n" headers: Content-Type: - application/xml Date: - - Wed, 28 Jul 2021 19:42:53 GMT + - Wed, 17 May 2023 18:36:34 GMT Strict-Transport-Security: - max-age=0 Transfer-Encoding: @@ -10975,7 +9215,7 @@ interactions: Connection: - keep-alive User-Agent: - - python-requests/2.25.1 + - python-requests/2.30.0 method: GET uri: https://www.ebi.ac.uk/ena/browser/api/xml/ERP108370 response: @@ -11035,7 +9275,7 @@ interactions: Content-Type: - application/xml Date: - - Wed, 28 Jul 2021 19:42:53 GMT + - Wed, 17 May 2023 18:36:34 GMT Strict-Transport-Security: - max-age=0 Transfer-Encoding: @@ -11053,7 +9293,7 @@ interactions: Connection: - keep-alive User-Agent: - - python-requests/2.25.1 + - python-requests/2.30.0 method: GET uri: https://www.ebi.ac.uk/ena/browser/api/xml/ERA1350207 response: @@ -11089,7 +9329,7 @@ interactions: Content-Type: - application/xml Date: - - Wed, 28 Jul 2021 19:42:54 GMT + - Wed, 17 May 2023 18:36:35 GMT Strict-Transport-Security: - max-age=0 Transfer-Encoding: @@ -11097,68 +9337,6 @@ interactions: status: code: 200 message: '' -- request: - body: acc=ERR2534095&accept-proto=fasp&version=2.0 - headers: - Accept: - - '*/*' - Accept-Encoding: - - gzip, deflate - Connection: - - keep-alive - Content-Length: - - '44' - User-Agent: - - python-requests/2.25.1 - method: POST - uri: https://www.ncbi.nlm.nih.gov/Traces/names/names.cgi - response: - body: - string: !!binary | - H4sIAAAAAAAAAwzIuwrCMBQA0L1fEXDoVLmPJE26OwvFya1NE6oEU9qICPfj9YznRGdojn3a3rNc - xpEMa/BGetQ9WwYWAnQd9B34G9IAbjB8l5AcTt5iSsyMRGg5RgyowdLiyIiIBpDrK39Vu9a6Ha3a - 9lJLKFk9DjXlXD5xUansqq7/KPMzhtr8AAAA//8DAD7fHNyOAAAA - headers: - Cache-Control: - - private - Connection: - - Keep-Alive - Content-Encoding: - - gzip - Content-Security-Policy: - - upgrade-insecure-requests - Content-Type: - - text/plain - Date: - - Wed, 28 Jul 2021 19:42:54 GMT - Keep-Alive: - - timeout=1, max=10 - NCBI-PHID: - - C7A421F0101B33E10000000000000001.m_1 - NCBI-SID: - - C7A421F0101B33E1_0000SID - Referrer-Policy: - - origin-when-cross-origin - Server: - - Apache - Set-Cookie: - - ncbi_sid=C7A421F0101B33E1_0000SID; domain=.nih.gov; path=/; expires=Thu, 28 - Jul 2022 19:42:54 GMT - SraNameServerOutputVersion: - - '2.0' - Strict-Transport-Security: - - max-age=31536000; includeSubDomains; preload - Transfer-Encoding: - - chunked - Vary: - - Accept-Encoding - X-UA-Compatible: - - IE=Edge - X-XSS-Protection: - - 1; mode=block - status: - code: 200 - message: OK - request: body: null headers: @@ -11169,29 +9347,27 @@ interactions: Connection: - keep-alive User-Agent: - - python-requests/2.25.1 + - python-requests/2.30.0 method: GET uri: https://www.ebi.ac.uk/ena/portal/api/filereport?accession=ERR2534095&result=read_run response: body: - string: "run_accession\tfastq_ftp\tfastq_bytes\tfastq_md5\tsubmitted_ftp\tsubmitted_bytes\tsubmitted_md5\tsra_ftp\tsra_bytes\tsra_md5\nERR2534095\tftp.sra.ebi.ac.uk/vol1/fastq/ERR253/005/ERR2534095/ERR2534095.fastq.gz\t1071271905\tf7df87aa02b5689dae89556042df7223\tftp.sra.ebi.ac.uk/vol1/run/ERR253/ERR2534095/G144_WTclone_RNAseq_24h_1.fastq.gz\t1116056605\tc410683ea6b481add8548e826b53091d\t\t\t\n" + string: "run_accession\tfastq_ftp\tfastq_bytes\tfastq_md5\tbam_ftp\tbam_bytes\tbam_md5\tsubmitted_ftp\tsubmitted_bytes\tsubmitted_md5\tsra_ftp\tsra_bytes\tsra_md5\nERR2534095\tftp.sra.ebi.ac.uk/vol1/fastq/ERR253/005/ERR2534095/ERR2534095.fastq.gz\t1071271905\tf7df87aa02b5689dae89556042df7223\t\t\t\tftp.sra.ebi.ac.uk/vol1/run/ERR253/ERR2534095/G144_WTclone_RNAseq_24h_1.fastq.gz\t1116056605\tc410683ea6b481add8548e826b53091d\tftp.sra.ebi.ac.uk/vol1/err/ERR253/005/ERR2534095\t714736283\tbcef41770242d71d9ffaa3c0b9a9b50d\n" headers: Cache-Control: - no-cache, no-store, max-age=0, must-revalidate + Content-Length: + - '487' Content-Type: - text/plain Date: - - Wed, 28 Jul 2021 19:42:55 GMT + - Wed, 17 May 2023 18:36:35 GMT Expires: - '0' Pragma: - no-cache - Server: - - Apache-Coyote/1.1 Strict-Transport-Security: - max-age=0 - Transfer-Encoding: - - chunked X-Content-Type-Options: - nosniff X-Frame-Options: @@ -11200,7 +9376,7 @@ interactions: - 1; mode=block status: code: 200 - message: OK + message: '' - request: body: null headers: @@ -11211,7 +9387,7 @@ interactions: Connection: - keep-alive User-Agent: - - python-requests/2.25.1 + - python-requests/2.30.0 method: GET uri: https://www.ebi.ac.uk/ena/browser/api/xml/ERR2534096 response: @@ -11253,7 +9429,7 @@ interactions: Content-Type: - application/xml Date: - - Wed, 28 Jul 2021 19:42:56 GMT + - Wed, 17 May 2023 18:36:35 GMT Strict-Transport-Security: - max-age=0 Transfer-Encoding: @@ -11271,7 +9447,7 @@ interactions: Connection: - keep-alive User-Agent: - - python-requests/2.25.1 + - python-requests/2.30.0 method: GET uri: https://www.ebi.ac.uk/ena/browser/api/xml/ERX2552517 response: @@ -11339,7 +9515,7 @@ interactions: Content-Type: - application/xml Date: - - Wed, 28 Jul 2021 19:42:56 GMT + - Wed, 17 May 2023 18:36:36 GMT Strict-Transport-Security: - max-age=0 Transfer-Encoding: @@ -11357,14 +9533,14 @@ interactions: Connection: - keep-alive User-Agent: - - python-requests/2.25.1 + - python-requests/2.30.0 method: GET uri: https://www.ebi.ac.uk/ena/browser/api/xml/ERS2428811 response: body: string: "\n\n\n \n + alias=\"E-MTAB-6681:G144_WTclone_RNAseq_24h_2\" center_name=\"BRIC - Biotech + Research and Innovation Centre\" broker_name=\"ArrayExpress\">\n \n \ ERS2428811\n SAMEA4608115\n \ E-MTAB-6681:G144_WTclone_RNAseq_24h_2\n \n @@ -11372,57 +9548,45 @@ interactions: \ Homo sapiens\n human\n \ \n Protocols: CRISPR mediated KO of CIC: sgRNAs (Target sequence: mESCs: GCCTTCATGATCTTCAGCAAG; G144: GGGCGAGTGGTGGTATGCCC) - \ were cloned into pSpCas9(BB)-2A-GFP (Addgene 48138) and transfected into - mESCs (Lipofectamine 2000) or G144 cells (Amaxa Nucleofector II, Program A033). + were cloned into pSpCas9(BB)-2A-GFP (Addgene 48138) and transfected into mESCs + (Lipofectamine 2000) or G144 cells (Amaxa Nucleofector II, Program A033). GFP-positive cells were single cell sorted 48h post-transfection, expanded and screened by immunoblotting for CIC deletion. Inhibitor treatment with 1 \u03BCM MEK inhibitor (PD0325901) was performed in 80% confluent cultures for 4 and 24 h respectively. DMSO was used as mock control. Cells were washed - once with PBS, lysed directly in RLT buffer (Qiagen). Total RNA was extracted - using the RNAeasy kit (Qiagen). 500 ng of total RNA was used for library - preparation using TruSeq RNA Library Prep Kit v2 (Illumina) according to manufacturer - recommendations.\n \n \n - \ \n ENA-STUDY\n ERP108370\n - \ \n \n \n - \ \n ENA-EXPERIMENT\n - \ ERX2552517\n \n \n - \ \n \n ENA-RUN\n - \ ERR2534096\n \n \n - \ \n \n ENA-SUBMISSION\n - \ ERA1350207\n \n \n - \ \n \n ENA-FASTQ-FILES\n - \ \n - \ \n \n \n - \ \n ENA-SUBMITTED-FILES\n - \ \n - \ \n \n \n - \ \n \n isolate\n - \ not applicable\n \n - \ \n organism\n Homo - sapiens\n \n \n - \ organism part\n brain\n - \ \n \n cell_type\n - \ glial cell\n \n - \ \n cell_line\n G144\n + once with PBS, lysed directly in RLT buffer (Qiagen). Total RNA was extracted + using the RNAeasy kit (Qiagen). 500 ng of total RNA was used for library preparation + using TruSeq RNA Library Prep Kit v2 (Illumina) according to manufacturer + recommendations.\n \n \n \n + \ ENA-FASTQ-FILES\n \n + \ \n \n \n \n + \ ENA-SUBMITTED-FILES\n \n + \ \n \n\n\n + \ \n ENA-CHECKLIST\n ERC000011\n \ \n \n disease\n \ glioblastoma multiforme\n \n + \ \n individual\n 2\n + \ \n \n organism\n + \ Homo sapiens\n \n + \ \n organism\n Homo + sapiens\n \n \n + \ cell type\n glial cell\n + \ \n \n common + name\n human\n \n + \ \n organism part\n brain\n + \ \n \n cell + line\n G144\n \n \ \n genotype\n wild type genotype\n \n \n - \ individual\n 2\n \n - \ \n ENA-CHECKLIST\n ERC000011\n - \ \n \n ENA-SPOT-COUNT\n - \ 20910521\n \n \n - \ ENA-BASE-COUNT\n 1578993339\n - \ \n \n ENA-FIRST-PUBLIC\n - \ 2018-05-30\n \n - \ \n ENA-LAST-UPDATE\n + \ ENA-FIRST-PUBLIC\n 2018-05-30\n + \ \n \n ENA-LAST-UPDATE\n \ 2018-04-24\n \n \ \n\n\n" headers: Content-Type: - application/xml Date: - - Wed, 28 Jul 2021 19:42:57 GMT + - Wed, 17 May 2023 18:36:36 GMT Strict-Transport-Security: - max-age=0 Transfer-Encoding: @@ -11440,7 +9604,7 @@ interactions: Connection: - keep-alive User-Agent: - - python-requests/2.25.1 + - python-requests/2.30.0 method: GET uri: https://www.ebi.ac.uk/ena/browser/api/xml/ERP108370 response: @@ -11500,7 +9664,7 @@ interactions: Content-Type: - application/xml Date: - - Wed, 28 Jul 2021 19:42:58 GMT + - Wed, 17 May 2023 18:36:37 GMT Strict-Transport-Security: - max-age=0 Transfer-Encoding: @@ -11518,7 +9682,7 @@ interactions: Connection: - keep-alive User-Agent: - - python-requests/2.25.1 + - python-requests/2.30.0 method: GET uri: https://www.ebi.ac.uk/ena/browser/api/xml/ERA1350207 response: @@ -11554,7 +9718,7 @@ interactions: Content-Type: - application/xml Date: - - Wed, 28 Jul 2021 19:42:58 GMT + - Wed, 17 May 2023 18:36:37 GMT Strict-Transport-Security: - max-age=0 Transfer-Encoding: @@ -11562,68 +9726,6 @@ interactions: status: code: 200 message: '' -- request: - body: acc=ERR2534096&accept-proto=fasp&version=2.0 - headers: - Accept: - - '*/*' - Accept-Encoding: - - gzip, deflate - Connection: - - keep-alive - Content-Length: - - '44' - User-Agent: - - python-requests/2.25.1 - method: POST - uri: https://www.ncbi.nlm.nih.gov/Traces/names/names.cgi - response: - body: - string: !!binary | - H4sIAAAAAAAAAwzLvQrCMBAA4L1PEXDoVLk789N0dxaKk1uaplQJJiQREe7h7frBd6IzdLW4/Fn4 - Os+kLhKsZm0VISplmADHAcwA9o40gZ3APFihkx7ISjXSiEB61YCbcwGP55CYWQLw7R1/ot9by7UX - uaSWfIriWYWLMX3DKrZURNsPSMsr+Nb9AQAA//8DAJ9eOruOAAAA - headers: - Cache-Control: - - private - Connection: - - Keep-Alive - Content-Encoding: - - gzip - Content-Security-Policy: - - upgrade-insecure-requests - Content-Type: - - text/plain - Date: - - Wed, 28 Jul 2021 19:42:59 GMT - Keep-Alive: - - timeout=1, max=10 - NCBI-PHID: - - C7A42211101B34310000000000000001.m_1 - NCBI-SID: - - C7A42211101B3431_0000SID - Referrer-Policy: - - origin-when-cross-origin - Server: - - Apache - Set-Cookie: - - ncbi_sid=C7A42211101B3431_0000SID; domain=.nih.gov; path=/; expires=Thu, 28 - Jul 2022 19:42:59 GMT - SraNameServerOutputVersion: - - '2.0' - Strict-Transport-Security: - - max-age=31536000; includeSubDomains; preload - Transfer-Encoding: - - chunked - Vary: - - Accept-Encoding - X-UA-Compatible: - - IE=Edge - X-XSS-Protection: - - 1; mode=block - status: - code: 200 - message: OK - request: body: null headers: @@ -11634,29 +9736,27 @@ interactions: Connection: - keep-alive User-Agent: - - python-requests/2.25.1 + - python-requests/2.30.0 method: GET uri: https://www.ebi.ac.uk/ena/portal/api/filereport?accession=ERR2534096&result=read_run response: body: - string: "run_accession\tfastq_ftp\tfastq_bytes\tfastq_md5\tsubmitted_ftp\tsubmitted_bytes\tsubmitted_md5\tsra_ftp\tsra_bytes\tsra_md5\nERR2534096\tftp.sra.ebi.ac.uk/vol1/fastq/ERR253/006/ERR2534096/ERR2534096.fastq.gz\t1042880074\tec7e2a6c4f5a25107d99a50c115d4f7c\tftp.sra.ebi.ac.uk/vol1/run/ERR253/ERR2534096/G144_WTclone_RNAseq_24h_2.fastq.gz\t1086208196\teb01cfdff7dfd39cfd30e5a6be2045ef\t\t\t\n" + string: "run_accession\tfastq_ftp\tfastq_bytes\tfastq_md5\tbam_ftp\tbam_bytes\tbam_md5\tsubmitted_ftp\tsubmitted_bytes\tsubmitted_md5\tsra_ftp\tsra_bytes\tsra_md5\nERR2534096\tftp.sra.ebi.ac.uk/vol1/fastq/ERR253/006/ERR2534096/ERR2534096.fastq.gz\t1042880074\tec7e2a6c4f5a25107d99a50c115d4f7c\t\t\t\tftp.sra.ebi.ac.uk/vol1/run/ERR253/ERR2534096/G144_WTclone_RNAseq_24h_2.fastq.gz\t1086208196\teb01cfdff7dfd39cfd30e5a6be2045ef\tftp.sra.ebi.ac.uk/vol1/err/ERR253/006/ERR2534096\t695211537\t2d925f829c915f6865142e9fa914b7b7\n" headers: Cache-Control: - no-cache, no-store, max-age=0, must-revalidate + Content-Length: + - '487' Content-Type: - text/plain Date: - - Wed, 28 Jul 2021 19:42:59 GMT + - Wed, 17 May 2023 18:36:38 GMT Expires: - '0' Pragma: - no-cache - Server: - - Apache-Coyote/1.1 Strict-Transport-Security: - max-age=0 - Transfer-Encoding: - - chunked X-Content-Type-Options: - nosniff X-Frame-Options: @@ -11665,7 +9765,7 @@ interactions: - 1; mode=block status: code: 200 - message: OK + message: '' - request: body: null headers: @@ -11676,7 +9776,7 @@ interactions: Connection: - keep-alive User-Agent: - - python-requests/2.25.1 + - python-requests/2.30.0 method: GET uri: https://www.ebi.ac.uk/ena/browser/api/xml/ERR2534097 response: @@ -11718,7 +9818,7 @@ interactions: Content-Type: - application/xml Date: - - Wed, 28 Jul 2021 19:43:00 GMT + - Wed, 17 May 2023 18:36:38 GMT Strict-Transport-Security: - max-age=0 Transfer-Encoding: @@ -11736,7 +9836,7 @@ interactions: Connection: - keep-alive User-Agent: - - python-requests/2.25.1 + - python-requests/2.30.0 method: GET uri: https://www.ebi.ac.uk/ena/browser/api/xml/ERX2552518 response: @@ -11804,7 +9904,7 @@ interactions: Content-Type: - application/xml Date: - - Wed, 28 Jul 2021 19:43:01 GMT + - Wed, 17 May 2023 18:36:39 GMT Strict-Transport-Security: - max-age=0 Transfer-Encoding: @@ -11822,14 +9922,14 @@ interactions: Connection: - keep-alive User-Agent: - - python-requests/2.25.1 + - python-requests/2.30.0 method: GET uri: https://www.ebi.ac.uk/ena/browser/api/xml/ERS2428812 response: body: string: "\n\n\n \n + alias=\"E-MTAB-6681:G144_WTclone_RNAseq_4h_1\" center_name=\"BRIC - Biotech + Research and Innovation Centre\" broker_name=\"ArrayExpress\">\n \n \ ERS2428812\n SAMEA4608116\n \ E-MTAB-6681:G144_WTclone_RNAseq_4h_1\n \n @@ -11837,57 +9937,45 @@ interactions: \ Homo sapiens\n human\n \ \n Protocols: CRISPR mediated KO of CIC: sgRNAs (Target sequence: mESCs: GCCTTCATGATCTTCAGCAAG; G144: GGGCGAGTGGTGGTATGCCC) - \ were cloned into pSpCas9(BB)-2A-GFP (Addgene 48138) and transfected into - mESCs (Lipofectamine 2000) or G144 cells (Amaxa Nucleofector II, Program A033). + were cloned into pSpCas9(BB)-2A-GFP (Addgene 48138) and transfected into mESCs + (Lipofectamine 2000) or G144 cells (Amaxa Nucleofector II, Program A033). GFP-positive cells were single cell sorted 48h post-transfection, expanded and screened by immunoblotting for CIC deletion. Inhibitor treatment with 1 \u03BCM MEK inhibitor (PD0325901) was performed in 80% confluent cultures for 4 and 24 h respectively. DMSO was used as mock control. Cells were washed - once with PBS, lysed directly in RLT buffer (Qiagen). Total RNA was extracted - using the RNAeasy kit (Qiagen). 500 ng of total RNA was used for library - preparation using TruSeq RNA Library Prep Kit v2 (Illumina) according to manufacturer - recommendations.\n \n \n - \ \n ENA-STUDY\n ERP108370\n - \ \n \n \n - \ \n ENA-EXPERIMENT\n - \ ERX2552518\n \n \n - \ \n \n ENA-RUN\n - \ ERR2534097\n \n \n - \ \n \n ENA-SUBMISSION\n - \ ERA1350207\n \n \n - \ \n \n ENA-FASTQ-FILES\n - \ \n - \ \n \n \n - \ \n ENA-SUBMITTED-FILES\n - \ \n - \ \n \n \n - \ \n \n isolate\n - \ not applicable\n \n - \ \n organism\n Homo - sapiens\n \n \n - \ organism part\n brain\n - \ \n \n cell_type\n - \ glial cell\n \n - \ \n cell_line\n G144\n + once with PBS, lysed directly in RLT buffer (Qiagen). Total RNA was extracted + using the RNAeasy kit (Qiagen). 500 ng of total RNA was used for library preparation + using TruSeq RNA Library Prep Kit v2 (Illumina) according to manufacturer + recommendations.\n \n \n \n + \ ENA-FASTQ-FILES\n \n + \ \n \n \n \n + \ ENA-SUBMITTED-FILES\n \n + \ \n \n\n\n + \ \n ENA-CHECKLIST\n ERC000011\n \ \n \n disease\n \ glioblastoma multiforme\n \n + \ \n individual\n 2\n + \ \n \n organism\n + \ Homo sapiens\n \n + \ \n organism\n Homo + sapiens\n \n \n + \ cell type\n glial cell\n + \ \n \n common + name\n human\n \n + \ \n organism part\n brain\n + \ \n \n cell + line\n G144\n \n \ \n genotype\n wild type genotype\n \n \n - \ individual\n 2\n \n - \ \n ENA-CHECKLIST\n ERC000011\n - \ \n \n ENA-SPOT-COUNT\n - \ 25292323\n \n \n - \ ENA-BASE-COUNT\n 1909946064\n - \ \n \n ENA-FIRST-PUBLIC\n - \ 2018-05-30\n \n - \ \n ENA-LAST-UPDATE\n + \ ENA-FIRST-PUBLIC\n 2018-05-30\n + \ \n \n ENA-LAST-UPDATE\n \ 2018-04-24\n \n \ \n\n\n" headers: Content-Type: - application/xml Date: - - Wed, 28 Jul 2021 19:43:02 GMT + - Wed, 17 May 2023 18:36:38 GMT Strict-Transport-Security: - max-age=0 Transfer-Encoding: @@ -11905,7 +9993,7 @@ interactions: Connection: - keep-alive User-Agent: - - python-requests/2.25.1 + - python-requests/2.30.0 method: GET uri: https://www.ebi.ac.uk/ena/browser/api/xml/ERP108370 response: @@ -11965,7 +10053,7 @@ interactions: Content-Type: - application/xml Date: - - Wed, 28 Jul 2021 19:43:02 GMT + - Wed, 17 May 2023 18:36:39 GMT Strict-Transport-Security: - max-age=0 Transfer-Encoding: @@ -11983,7 +10071,7 @@ interactions: Connection: - keep-alive User-Agent: - - python-requests/2.25.1 + - python-requests/2.30.0 method: GET uri: https://www.ebi.ac.uk/ena/browser/api/xml/ERA1350207 response: @@ -12019,7 +10107,7 @@ interactions: Content-Type: - application/xml Date: - - Wed, 28 Jul 2021 19:43:03 GMT + - Wed, 17 May 2023 18:36:39 GMT Strict-Transport-Security: - max-age=0 Transfer-Encoding: @@ -12027,68 +10115,6 @@ interactions: status: code: 200 message: '' -- request: - body: acc=ERR2534097&accept-proto=fasp&version=2.0 - headers: - Accept: - - '*/*' - Accept-Encoding: - - gzip, deflate - Connection: - - keep-alive - Content-Length: - - '44' - User-Agent: - - python-requests/2.25.1 - method: POST - uri: https://www.ncbi.nlm.nih.gov/Traces/names/names.cgi - response: - body: - string: !!binary | - H4sIAAAAAAAAAwzIsQrDIBAA0D1fIXTIlHKeZ9TsnQuhUzc1SlqkhsRSCvfx7RvfCc/QHbvf3oEv - 84xaETjDlpAMKiBGkHYAM4C7SZwkTGTvTKPXUS9JG59jyjbIMVqk7DSkrFVmZgLg66t8Rb+2th29 - 2PbaaqxFPA7hS6mftIhcd9HWf9TwTLF1PwAAAP//AwCFY2v6jgAAAA== - headers: - Cache-Control: - - private - Connection: - - Keep-Alive - Content-Encoding: - - gzip - Content-Security-Policy: - - upgrade-insecure-requests - Content-Type: - - text/plain - Date: - - Wed, 28 Jul 2021 19:43:04 GMT - Keep-Alive: - - timeout=1, max=10 - NCBI-PHID: - - CC95F426101B34810000000000000001.m_1 - NCBI-SID: - - CC95F426101B3481_0000SID - Referrer-Policy: - - origin-when-cross-origin - Server: - - Apache - Set-Cookie: - - ncbi_sid=CC95F426101B3481_0000SID; domain=.nih.gov; path=/; expires=Thu, 28 - Jul 2022 19:43:04 GMT - SraNameServerOutputVersion: - - '2.0' - Strict-Transport-Security: - - max-age=31536000; includeSubDomains; preload - Transfer-Encoding: - - chunked - Vary: - - Accept-Encoding - X-UA-Compatible: - - IE=Edge - X-XSS-Protection: - - 1; mode=block - status: - code: 200 - message: OK - request: body: null headers: @@ -12099,29 +10125,27 @@ interactions: Connection: - keep-alive User-Agent: - - python-requests/2.25.1 + - python-requests/2.30.0 method: GET uri: https://www.ebi.ac.uk/ena/portal/api/filereport?accession=ERR2534097&result=read_run response: body: - string: "run_accession\tfastq_ftp\tfastq_bytes\tfastq_md5\tsubmitted_ftp\tsubmitted_bytes\tsubmitted_md5\tsra_ftp\tsra_bytes\tsra_md5\nERR2534097\tftp.sra.ebi.ac.uk/vol1/fastq/ERR253/007/ERR2534097/ERR2534097.fastq.gz\t1263173701\t131910cd72175e2b1218785a96cf6eff\tftp.sra.ebi.ac.uk/vol1/run/ERR253/ERR2534097/G144_WTclone_RNAseq_4h_1.fastq.gz\t1316839373\ta47d39765d40e29c4806c97d6c1b7e8a\t\t\t\n" + string: "run_accession\tfastq_ftp\tfastq_bytes\tfastq_md5\tbam_ftp\tbam_bytes\tbam_md5\tsubmitted_ftp\tsubmitted_bytes\tsubmitted_md5\tsra_ftp\tsra_bytes\tsra_md5\nERR2534097\tftp.sra.ebi.ac.uk/vol1/fastq/ERR253/007/ERR2534097/ERR2534097.fastq.gz\t1263173701\t131910cd72175e2b1218785a96cf6eff\t\t\t\tftp.sra.ebi.ac.uk/vol1/run/ERR253/ERR2534097/G144_WTclone_RNAseq_4h_1.fastq.gz\t1316839373\ta47d39765d40e29c4806c97d6c1b7e8a\tftp.sra.ebi.ac.uk/vol1/err/ERR253/007/ERR2534097\t842472284\taa05d164f498e7b9a8bdacf95cf71358\n" headers: Cache-Control: - no-cache, no-store, max-age=0, must-revalidate + Content-Length: + - '486' Content-Type: - text/plain Date: - - Wed, 28 Jul 2021 19:43:04 GMT + - Wed, 17 May 2023 18:36:41 GMT Expires: - '0' Pragma: - no-cache - Server: - - Apache-Coyote/1.1 Strict-Transport-Security: - max-age=0 - Transfer-Encoding: - - chunked X-Content-Type-Options: - nosniff X-Frame-Options: @@ -12130,7 +10154,7 @@ interactions: - 1; mode=block status: code: 200 - message: OK + message: '' - request: body: null headers: @@ -12141,7 +10165,7 @@ interactions: Connection: - keep-alive User-Agent: - - python-requests/2.25.1 + - python-requests/2.30.0 method: GET uri: https://www.ebi.ac.uk/ena/browser/api/xml/ERR2534098 response: @@ -12183,7 +10207,7 @@ interactions: Content-Type: - application/xml Date: - - Wed, 28 Jul 2021 19:43:06 GMT + - Wed, 17 May 2023 18:36:41 GMT Strict-Transport-Security: - max-age=0 Transfer-Encoding: @@ -12201,7 +10225,7 @@ interactions: Connection: - keep-alive User-Agent: - - python-requests/2.25.1 + - python-requests/2.30.0 method: GET uri: https://www.ebi.ac.uk/ena/browser/api/xml/ERX2552519 response: @@ -12269,7 +10293,7 @@ interactions: Content-Type: - application/xml Date: - - Wed, 28 Jul 2021 19:43:06 GMT + - Wed, 17 May 2023 18:36:41 GMT Strict-Transport-Security: - max-age=0 Transfer-Encoding: @@ -12287,14 +10311,14 @@ interactions: Connection: - keep-alive User-Agent: - - python-requests/2.25.1 + - python-requests/2.30.0 method: GET uri: https://www.ebi.ac.uk/ena/browser/api/xml/ERS2428813 response: body: string: "\n\n\n \n + alias=\"E-MTAB-6681:G144_WTclone_RNAseq_4h_2\" center_name=\"BRIC - Biotech + Research and Innovation Centre\" broker_name=\"ArrayExpress\">\n \n \ ERS2428813\n SAMEA4608117\n \ E-MTAB-6681:G144_WTclone_RNAseq_4h_2\n \n @@ -12302,57 +10326,45 @@ interactions: \ Homo sapiens\n human\n \ \n Protocols: CRISPR mediated KO of CIC: sgRNAs (Target sequence: mESCs: GCCTTCATGATCTTCAGCAAG; G144: GGGCGAGTGGTGGTATGCCC) - \ were cloned into pSpCas9(BB)-2A-GFP (Addgene 48138) and transfected into - mESCs (Lipofectamine 2000) or G144 cells (Amaxa Nucleofector II, Program A033). + were cloned into pSpCas9(BB)-2A-GFP (Addgene 48138) and transfected into mESCs + (Lipofectamine 2000) or G144 cells (Amaxa Nucleofector II, Program A033). GFP-positive cells were single cell sorted 48h post-transfection, expanded and screened by immunoblotting for CIC deletion. Inhibitor treatment with 1 \u03BCM MEK inhibitor (PD0325901) was performed in 80% confluent cultures for 4 and 24 h respectively. DMSO was used as mock control. Cells were washed - once with PBS, lysed directly in RLT buffer (Qiagen). Total RNA was extracted - using the RNAeasy kit (Qiagen). 500 ng of total RNA was used for library - preparation using TruSeq RNA Library Prep Kit v2 (Illumina) according to manufacturer - recommendations.\n \n \n - \ \n ENA-STUDY\n ERP108370\n - \ \n \n \n - \ \n ENA-EXPERIMENT\n - \ ERX2552519\n \n \n - \ \n \n ENA-RUN\n - \ ERR2534098\n \n \n - \ \n \n ENA-SUBMISSION\n - \ ERA1350207\n \n \n - \ \n \n ENA-FASTQ-FILES\n - \ \n - \ \n \n \n - \ \n ENA-SUBMITTED-FILES\n - \ \n - \ \n \n \n - \ \n \n isolate\n - \ not applicable\n \n - \ \n organism\n Homo - sapiens\n \n \n - \ organism part\n brain\n - \ \n \n cell_type\n - \ glial cell\n \n - \ \n cell_line\n G144\n + once with PBS, lysed directly in RLT buffer (Qiagen). Total RNA was extracted + using the RNAeasy kit (Qiagen). 500 ng of total RNA was used for library preparation + using TruSeq RNA Library Prep Kit v2 (Illumina) according to manufacturer + recommendations.\n \n \n \n + \ ENA-FASTQ-FILES\n \n + \ \n \n \n \n + \ ENA-SUBMITTED-FILES\n \n + \ \n \n\n\n + \ \n ENA-CHECKLIST\n ERC000011\n \ \n \n disease\n \ glioblastoma multiforme\n \n + \ \n individual\n 2\n + \ \n \n organism\n + \ Homo sapiens\n \n + \ \n organism\n Homo + sapiens\n \n \n + \ cell type\n glial cell\n + \ \n \n common + name\n human\n \n + \ \n organism part\n brain\n + \ \n \n cell + line\n G144\n \n \ \n genotype\n wild type genotype\n \n \n - \ individual\n 2\n \n - \ \n ENA-CHECKLIST\n ERC000011\n - \ \n \n ENA-SPOT-COUNT\n - \ 22815094\n \n \n - \ ENA-BASE-COUNT\n 1722860231\n - \ \n \n ENA-FIRST-PUBLIC\n - \ 2018-05-30\n \n - \ \n ENA-LAST-UPDATE\n + \ ENA-FIRST-PUBLIC\n 2018-05-30\n + \ \n \n ENA-LAST-UPDATE\n \ 2018-04-24\n \n \ \n\n\n" headers: Content-Type: - application/xml Date: - - Wed, 28 Jul 2021 19:43:07 GMT + - Wed, 17 May 2023 18:36:41 GMT Strict-Transport-Security: - max-age=0 Transfer-Encoding: @@ -12370,7 +10382,7 @@ interactions: Connection: - keep-alive User-Agent: - - python-requests/2.25.1 + - python-requests/2.30.0 method: GET uri: https://www.ebi.ac.uk/ena/browser/api/xml/ERP108370 response: @@ -12430,7 +10442,7 @@ interactions: Content-Type: - application/xml Date: - - Wed, 28 Jul 2021 19:43:07 GMT + - Wed, 17 May 2023 18:36:42 GMT Strict-Transport-Security: - max-age=0 Transfer-Encoding: @@ -12448,7 +10460,7 @@ interactions: Connection: - keep-alive User-Agent: - - python-requests/2.25.1 + - python-requests/2.30.0 method: GET uri: https://www.ebi.ac.uk/ena/browser/api/xml/ERA1350207 response: @@ -12484,7 +10496,7 @@ interactions: Content-Type: - application/xml Date: - - Wed, 28 Jul 2021 19:43:08 GMT + - Wed, 17 May 2023 18:36:43 GMT Strict-Transport-Security: - max-age=0 Transfer-Encoding: @@ -12492,68 +10504,6 @@ interactions: status: code: 200 message: '' -- request: - body: acc=ERR2534098&accept-proto=fasp&version=2.0 - headers: - Accept: - - '*/*' - Accept-Encoding: - - gzip, deflate - Connection: - - keep-alive - Content-Length: - - '44' - User-Agent: - - python-requests/2.25.1 - method: POST - uri: https://www.ncbi.nlm.nih.gov/Traces/names/names.cgi - response: - body: - string: !!binary | - H4sIAAAAAAAAAwzIvQrCMBAA4L1PEXDoVLlLLn/dnYXi5NYmKVWCCW1EhHt4/cbvJM/QHftc3wtf - pklqReAdW0PKGdDAEtANYAfwN5Qj4ij1nUkhrR6NRnIRg1ySS5ZWY9OclFKRmQmAr6/8Ff3WWj16 - UffSSihZPA4x51w+KYq17KJt/yjLM4XW/QAAAP//AwA+9dR2jgAAAA== - headers: - Cache-Control: - - private - Connection: - - Keep-Alive - Content-Encoding: - - gzip - Content-Security-Policy: - - upgrade-insecure-requests - Content-Type: - - text/plain - Date: - - Wed, 28 Jul 2021 19:43:08 GMT - Keep-Alive: - - timeout=1, max=10 - NCBI-PHID: - - CC95F471101B34C10000000000000001.m_1 - NCBI-SID: - - CC95F471101B34C1_0000SID - Referrer-Policy: - - origin-when-cross-origin - Server: - - Apache - Set-Cookie: - - ncbi_sid=CC95F471101B34C1_0000SID; domain=.nih.gov; path=/; expires=Thu, 28 - Jul 2022 19:43:08 GMT - SraNameServerOutputVersion: - - '2.0' - Strict-Transport-Security: - - max-age=31536000; includeSubDomains; preload - Transfer-Encoding: - - chunked - Vary: - - Accept-Encoding - X-UA-Compatible: - - IE=Edge - X-XSS-Protection: - - 1; mode=block - status: - code: 200 - message: OK - request: body: null headers: @@ -12564,29 +10514,27 @@ interactions: Connection: - keep-alive User-Agent: - - python-requests/2.25.1 + - python-requests/2.30.0 method: GET uri: https://www.ebi.ac.uk/ena/portal/api/filereport?accession=ERR2534098&result=read_run response: body: - string: "run_accession\tfastq_ftp\tfastq_bytes\tfastq_md5\tsubmitted_ftp\tsubmitted_bytes\tsubmitted_md5\tsra_ftp\tsra_bytes\tsra_md5\nERR2534098\tftp.sra.ebi.ac.uk/vol1/fastq/ERR253/008/ERR2534098/ERR2534098.fastq.gz\t1145401804\t911c351cdd7ab7c10a10d06f0bc3e3ea\tftp.sra.ebi.ac.uk/vol1/run/ERR253/ERR2534098/G144_WTclone_RNAseq_4h_2.fastq.gz\t1192847608\t01566d01b53ff691ae40cb37416c8335\t\t\t\n" + string: "run_accession\tfastq_ftp\tfastq_bytes\tfastq_md5\tbam_ftp\tbam_bytes\tbam_md5\tsubmitted_ftp\tsubmitted_bytes\tsubmitted_md5\tsra_ftp\tsra_bytes\tsra_md5\nERR2534098\tftp.sra.ebi.ac.uk/vol1/fastq/ERR253/008/ERR2534098/ERR2534098.fastq.gz\t1145401804\t911c351cdd7ab7c10a10d06f0bc3e3ea\t\t\t\tftp.sra.ebi.ac.uk/vol1/run/ERR253/ERR2534098/G144_WTclone_RNAseq_4h_2.fastq.gz\t1192847608\t01566d01b53ff691ae40cb37416c8335\tftp.sra.ebi.ac.uk/vol1/err/ERR253/008/ERR2534098\t764386030\tbcd1929ccf8e70fdbf8ef73684f2bbb1\n" headers: Cache-Control: - no-cache, no-store, max-age=0, must-revalidate + Content-Length: + - '486' Content-Type: - text/plain Date: - - Wed, 28 Jul 2021 19:43:09 GMT + - Wed, 17 May 2023 18:36:43 GMT Expires: - '0' Pragma: - no-cache - Server: - - Apache-Coyote/1.1 Strict-Transport-Security: - max-age=0 - Transfer-Encoding: - - chunked X-Content-Type-Options: - nosniff X-Frame-Options: @@ -12595,5 +10543,5 @@ interactions: - 1; mode=block status: code: 200 - message: OK + message: '' version: 1 diff --git a/test_volume/cassettes/surveyor.sra.metadata_is_gathered_correctly.yaml b/test_volume/cassettes/surveyor.sra.metadata_is_gathered_correctly.yaml index c8e2e86a0..2e31cff57 100644 --- a/test_volume/cassettes/surveyor.sra.metadata_is_gathered_correctly.yaml +++ b/test_volume/cassettes/surveyor.sra.metadata_is_gathered_correctly.yaml @@ -9,7 +9,7 @@ interactions: Connection: - keep-alive User-Agent: - - python-requests/2.25.1 + - python-requests/2.30.0 method: GET uri: https://www.ebi.ac.uk/ena/browser/api/xml/DRR002116 response: @@ -42,7 +42,7 @@ interactions: Content-Type: - application/xml Date: - - Wed, 28 Jul 2021 19:43:10 GMT + - Wed, 17 May 2023 18:36:44 GMT Strict-Transport-Security: - max-age=0 Transfer-Encoding: @@ -60,7 +60,7 @@ interactions: Connection: - keep-alive User-Agent: - - python-requests/2.25.1 + - python-requests/2.30.0 method: GET uri: https://www.ebi.ac.uk/ena/browser/api/xml/DRX001563 response: @@ -116,7 +116,7 @@ interactions: Content-Type: - application/xml Date: - - Wed, 28 Jul 2021 19:43:10 GMT + - Wed, 17 May 2023 18:36:44 GMT Strict-Transport-Security: - max-age=0 Transfer-Encoding: @@ -134,48 +134,42 @@ interactions: Connection: - keep-alive User-Agent: - - python-requests/2.25.1 + - python-requests/2.30.0 method: GET uri: https://www.ebi.ac.uk/ena/browser/api/xml/DRS001521 response: body: string: "\n\n\n \n - \ DRS001521\n SAMD00004104\n - \ \n Gg_HH16_1_embryo_mRNAseq\n \n - \ 9031\n Gallus gallus\n - \ \n \n \n \n - \ ENA-STUDY\n DRP000595\n - \ \n \n \n - \ \n ENA-EXPERIMENT\n - \ DRX001563\n \n \n - \ \n \n ENA-RUN\n - \ DRR002116\n \n \n - \ \n \n ENA-SUBMISSION\n - \ DRA000567\n \n \n - \ \n \n ENA-FASTQ-FILES\n - \ \n - \ \n \n \n - \ \n ENA-SUBMITTED-FILES\n - \ \n - \ \n \n \n - \ \n \n sample_name\n + alias=\"SAMD00004104\" center_name=\"Group for Morphological Evolution, Center + for Developmental Biology, Kobe Institute, RIKEN\" broker_name=\"DDBJ\">\n + \ \n DRS001521\n SAMD00004104\n \n + \ Gg_HH16_1_embryo_mRNAseq\n \n 9031\n + \ Gallus gallus\n chicken\n + \ \n \n \n \n + \ ENA-FASTQ-FILES\n \n + \ \n \n \n \n + \ ENA-SUBMITTED-FILES\n \n + \ \n \n\n\n + \ \n INSDC secondary accession\n \ DRS001521\n \n \n - \ sample comment\n mRNAseq of - chicken at stage HH16 (biological replicate 1)\n \n - \ \n ENA-SPOT-COUNT\n 32568360\n - \ \n \n ENA-BASE-COUNT\n - \ 3256836000\n \n - \ \n ENA-FIRST-PUBLIC\n - \ 2013-07-20\n \n - \ \n ENA-LAST-UPDATE\n - \ 2015-08-24\n \n + \ NCBI submission package\n Generic.1.0\n + \ \n \n organism\n + \ Gallus gallus\n \n + \ \n sample comment\n mRNAseq + of chicken at stage HH16 (biological replicate 1)\n \n + \ \n sample name\n DRS001521\n + \ \n \n BioSampleModel\n + \ Generic\n \n \n + \ ENA-FIRST-PUBLIC\n 2013-02-27\n + \ \n \n ENA-LAST-UPDATE\n + \ 2014-11-12\n \n \ \n\n\n" headers: Content-Type: - application/xml Date: - - Wed, 28 Jul 2021 19:43:10 GMT + - Wed, 17 May 2023 18:36:44 GMT Strict-Transport-Security: - max-age=0 Transfer-Encoding: @@ -193,7 +187,7 @@ interactions: Connection: - keep-alive User-Agent: - - python-requests/2.25.1 + - python-requests/2.30.0 method: GET uri: https://www.ebi.ac.uk/ena/browser/api/xml/DRP000595 response: @@ -236,7 +230,7 @@ interactions: Content-Type: - application/xml Date: - - Wed, 28 Jul 2021 19:43:11 GMT + - Wed, 17 May 2023 18:36:44 GMT Strict-Transport-Security: - max-age=0 Transfer-Encoding: @@ -254,7 +248,7 @@ interactions: Connection: - keep-alive User-Agent: - - python-requests/2.25.1 + - python-requests/2.30.0 method: GET uri: https://www.ebi.ac.uk/ena/browser/api/xml/DRA000567 response: @@ -293,7 +287,7 @@ interactions: Content-Type: - application/xml Date: - - Wed, 28 Jul 2021 19:43:13 GMT + - Wed, 17 May 2023 18:36:45 GMT Strict-Transport-Security: - max-age=0 Transfer-Encoding: @@ -301,66 +295,4 @@ interactions: status: code: 200 message: '' -- request: - body: acc=DRR002116&accept-proto=fasp&version=2.0 - headers: - Accept: - - '*/*' - Accept-Encoding: - - gzip, deflate - Connection: - - keep-alive - Content-Length: - - '43' - User-Agent: - - python-requests/2.25.1 - method: POST - uri: https://www.ncbi.nlm.nih.gov/Traces/names/names.cgi - response: - body: - string: !!binary | - H4sIAAAAAAAAAwzIsQ6CMBQF0J2vaOLAhLkttFBmdxPi5PZ40KBpbAM1xuR9vJ7xnMwZ1bFTfs9y - mSbAaO3EtKbrvRswiIFuG/QN2hvsaPVo7V0svOs4sPPwmpc5eLOSHYgogFiziHSAXF/xq+qtlHzU - Ku+pJE5RPQ5FMabPuqiQdlW2f6T5uXKpfgAAAP//AwDGlZjGjgAAAA== - headers: - Cache-Control: - - private - Connection: - - Keep-Alive - Content-Encoding: - - gzip - Content-Security-Policy: - - upgrade-insecure-requests - Content-Type: - - text/plain - Date: - - Wed, 28 Jul 2021 19:43:13 GMT - Keep-Alive: - - timeout=1, max=10 - NCBI-PHID: - - C7A422B4101B35110000000000000001.m_1 - NCBI-SID: - - C7A422B4101B3511_0000SID - Referrer-Policy: - - origin-when-cross-origin - Server: - - Apache - Set-Cookie: - - ncbi_sid=C7A422B4101B3511_0000SID; domain=.nih.gov; path=/; expires=Thu, 28 - Jul 2022 19:43:13 GMT - SraNameServerOutputVersion: - - '2.0' - Strict-Transport-Security: - - max-age=31536000; includeSubDomains; preload - Transfer-Encoding: - - chunked - Vary: - - Accept-Encoding - X-UA-Compatible: - - IE=Edge - X-XSS-Protection: - - 1; mode=block - status: - code: 200 - message: OK version: 1 diff --git a/test_volume/cassettes/surveyor.sra.srp_survey.yaml b/test_volume/cassettes/surveyor.sra.srp_survey.yaml index 26bcf888d..18c5eb77a 100644 --- a/test_volume/cassettes/surveyor.sra.srp_survey.yaml +++ b/test_volume/cassettes/surveyor.sra.srp_survey.yaml @@ -9,7 +9,7 @@ interactions: Connection: - keep-alive User-Agent: - - python-requests/2.25.1 + - python-requests/2.30.0 method: GET uri: https://www.ebi.ac.uk/ena/browser/api/xml/SRP068364 response: @@ -57,7 +57,7 @@ interactions: Content-Type: - application/xml Date: - - Wed, 28 Jul 2021 19:43:16 GMT + - Wed, 17 May 2023 18:36:48 GMT Strict-Transport-Security: - max-age=0 Transfer-Encoding: @@ -75,7 +75,7 @@ interactions: Connection: - keep-alive User-Agent: - - python-requests/2.25.1 + - python-requests/2.30.0 method: GET uri: https://www.ebi.ac.uk/ena/browser/api/xml/SRR3098579 response: @@ -119,7 +119,7 @@ interactions: Content-Type: - application/xml Date: - - Wed, 28 Jul 2021 19:43:17 GMT + - Wed, 17 May 2023 18:36:49 GMT Strict-Transport-Security: - max-age=0 Transfer-Encoding: @@ -137,7 +137,7 @@ interactions: Connection: - keep-alive User-Agent: - - python-requests/2.25.1 + - python-requests/2.30.0 method: GET uri: https://www.ebi.ac.uk/ena/browser/api/xml/SRX1528546 response: @@ -185,7 +185,7 @@ interactions: Content-Type: - application/xml Date: - - Wed, 28 Jul 2021 19:43:18 GMT + - Wed, 17 May 2023 18:36:49 GMT Strict-Transport-Security: - max-age=0 Transfer-Encoding: @@ -203,52 +203,44 @@ interactions: Connection: - keep-alive User-Agent: - - python-requests/2.25.1 + - python-requests/2.30.0 method: GET uri: https://www.ebi.ac.uk/ena/browser/api/xml/SRS1246178 response: body: string: "\n\n\n \n SRS1246178\n + alias=\"GSM2037738\" center_name=\"Michael Pack, Medicine/DIgestive Diseases, + University of Pennsylvania\" broker_name=\"NCBI\">\n \n SRS1246178\n \ SAMN04397505\n - \ GSM2037738\n GSM2037738\n \n Control - 1\n \n 7955\n Danio - rerio\n zebrafish\n - \ \n \n \n \n - \ ENA-STUDY\n SRP068364\n - \ \n \n \n - \ \n ENA-EXPERIMENT\n - \ SRX1528546\n \n \n - \ \n \n ENA-RUN\n - \ SRR3098579\n \n \n - \ \n \n ENA-SUBMISSION\n - \ SRA333195\n \n \n - \ \n \n ARRAYEXPRESS\n - \ E-GEOD-76780\n \n \n - \ \n \n ENA-FASTQ-FILES\n - \ \n - \ \n \n \n - \ \n ENA-SUBMITTED-FILES\n - \ \n - \ \n \n \n - \ \n \n source_name\n - \ liver\n \n \n - \ tissue\n liver\n \n + \ GSM2037738\n \n + \ Control 1\n \n 7955\n + \ Danio rerio\n zebrafish\n + \ \n \n \n \n + \ ENA-FASTQ-FILES\n \n + \ \n \n \n \n + \ ENA-SUBMITTED-FILES\n \n + \ \n \n\n\n \ \n treatment\n DMSO\n - \ \n \n ENA-SPOT-COUNT\n - \ 56576210\n \n \n - \ ENA-BASE-COUNT\n 11315242000\n - \ \n \n ENA-FIRST-PUBLIC\n - \ 2017-11-07\n \n - \ \n ENA-LAST-UPDATE\n - \ 2017-11-07\n \n + \ \n \n INSDC + secondary accession\n SRS1246178\n \n + \ \n NCBI submission package\n + \ Generic.1.0\n \n + \ \n organism\n Danio + rerio\n \n \n + \ tissue\n liver\n \n + \ \n source_name\n liver\n + \ \n \n BioSampleModel\n + \ Generic\n \n \n + \ ENA-FIRST-PUBLIC\n 2017-08-24\n + \ \n \n ENA-LAST-UPDATE\n + \ 2017-08-24\n \n \ \n\n\n" headers: Content-Type: - application/xml Date: - - Wed, 28 Jul 2021 19:43:18 GMT + - Wed, 17 May 2023 18:36:50 GMT Strict-Transport-Security: - max-age=0 Transfer-Encoding: @@ -266,7 +258,7 @@ interactions: Connection: - keep-alive User-Agent: - - python-requests/2.25.1 + - python-requests/2.30.0 method: GET uri: https://www.ebi.ac.uk/ena/browser/api/xml/SRP068364 response: @@ -314,7 +306,7 @@ interactions: Content-Type: - application/xml Date: - - Wed, 28 Jul 2021 19:43:19 GMT + - Wed, 17 May 2023 18:36:50 GMT Strict-Transport-Security: - max-age=0 Transfer-Encoding: @@ -332,7 +324,7 @@ interactions: Connection: - keep-alive User-Agent: - - python-requests/2.25.1 + - python-requests/2.30.0 method: GET uri: https://www.ebi.ac.uk/ena/browser/api/xml/SRA333195 response: @@ -369,7 +361,7 @@ interactions: Content-Type: - application/xml Date: - - Wed, 28 Jul 2021 19:43:19 GMT + - Wed, 17 May 2023 18:36:50 GMT Strict-Transport-Security: - max-age=0 Transfer-Encoding: @@ -377,68 +369,6 @@ interactions: status: code: 200 message: '' -- request: - body: acc=SRR3098579&accept-proto=fasp&version=2.0 - headers: - Accept: - - '*/*' - Accept-Encoding: - - gzip, deflate - Connection: - - keep-alive - Content-Length: - - '44' - User-Agent: - - python-requests/2.25.1 - method: POST - uri: https://www.ncbi.nlm.nih.gov/Traces/names/names.cgi - response: - body: - string: !!binary | - H4sIAAAAAAAAAwzISwrCMBAA0H1PEXDRVWXyz/QSQnXlrk0iVUITkogIc3h9y3cSZxhaXct7o+uy - SECnLZJBYxUCgiMB3EzAJy5uHGeJs5Z3sk4ZAxY8Omm3oHkwEnX0MirhPAYiUgB0OdKXjXvvpY2s - 1Nyzz4k9G1tTyp8Y2CNX1vd/5O0VfR9+AAAA//8DANXTVuiPAAAA - headers: - Cache-Control: - - private - Connection: - - Keep-Alive - Content-Encoding: - - gzip - Content-Security-Policy: - - upgrade-insecure-requests - Content-Type: - - text/plain - Date: - - Wed, 28 Jul 2021 19:43:21 GMT - Keep-Alive: - - timeout=1, max=10 - NCBI-PHID: - - C7A422DB101B35910000000000000001.m_1 - NCBI-SID: - - C7A422DB101B3591_0000SID - Referrer-Policy: - - origin-when-cross-origin - Server: - - Apache - Set-Cookie: - - ncbi_sid=C7A422DB101B3591_0000SID; domain=.nih.gov; path=/; expires=Thu, 28 - Jul 2022 19:43:21 GMT - SraNameServerOutputVersion: - - '2.0' - Strict-Transport-Security: - - max-age=31536000; includeSubDomains; preload - Transfer-Encoding: - - chunked - Vary: - - Accept-Encoding - X-UA-Compatible: - - IE=Edge - X-XSS-Protection: - - 1; mode=block - status: - code: 200 - message: OK - request: body: null headers: @@ -449,7 +379,7 @@ interactions: Connection: - keep-alive User-Agent: - - python-requests/2.25.1 + - python-requests/2.30.0 method: GET uri: https://eutils.ncbi.nlm.nih.gov/entrez/eutils/esummary.fcgi?db=pubmed&id=27102575&retmode=json&tool=refinebio&email=hello@refine.bio response: @@ -459,21 +389,21 @@ interactions: e3rSkyYYCHuy0EzgT4agAXJhHNGeoIAfsk6yjrB8nMFvATaKyqfmIHsHzR7qRVXW88Ucvoq/+qpH 250UYMKhR58W1GX1JDZkIqR/dBW0qKooOA62S/iNDHpW/J3yYPAD27R3Ao1j0ncDstjetNsFy0tb ZJ0KzpO9RInx76Z3tqS9aDNtn1IdpXbieZVpXKPthvhIEi/rTOurVIqckZSfFqU7xDf2DzupR9Ti - I3PAhkXuoS2zaJdnAAAA///MVsty2yAU3fcrGK+SmdhGkm1ZziqvaZKpM5l02ekCIxTTIOEi5Kbp - 5N97APlVJzPxrisJuId7uI8Dh/qZy4pcHgi61wbT5Pbh0KgIpWry8PlA2Lli0pCbQ0ky/kQ+lnG0 - j2K1DRW+DbXSKl8IqrHMhipilZX6Web4ErTH/Bf7TRi3ciktfqqcoE+FWQqSC3goJSAW9ny1XC8E - l0UY64LYuSAzqSSa3ttVYWSxi/OG8YuYGVbIet7zvWnsitXjf8HKSZVWjY/5aICRrOvGDRInPOxR - QDI642zQzWjacYGuHp12CXwQ90qVTSV/NsKnYpzQOBuMwiZe+uKUdrMoyZxehaloGKfdJBnSoGsh - s986t+i2iilyZqzkCM93J5hcmxx5tY3jcN/MpiInXbDPxTP+Cm3I9Oryy83dVdhrbRoPHQcWtgpi - +6cj87aKYFmK3JH0MyAVIQZM+VOvVdeV4hqSa7ltn2zsI9qLKI37c7HoxeMRTXaBi5JvA8cb4P30 - YhgPo5gOdhGlzN9B3N1cT7+m4whB3oWYdyFvn0YcaI9D7CKGGwTWujKfkM1xTqGXTc2NXFi/skX7 - 1PfqXNZW4450SdnOGvIt5NJnZute69OoH40JpRNKPa1dyFLW+4ikHw3fQTDOxcLuQwb9KH4HguvO - iJd9QJwQOnoLsC6wjwJgrdDSO4i0T8c4yQrh+6EQuHu5CPWM4Rs3fY+sngino8FRcjxJo7Tr2g/m - bTovdFm6K1xWrm1cvU3iNBlkWYw+qLQn4B0ya42cNdY77FyzmpyBs4EuufZE5rEn102FR02UnXSK - RqkfoY1bDd/QIkfnTFlZ4vFwQqZ579gJgtKcQfYqrx1osQnZ7yaERPOWONTN2zsdNZzrytFTqCbQ - A6GZ1k8rbYUJgiqbMvzj14bHWFAKgObCrPz/M92SD17ahPgALiDeVVPO3JPPzbAlk4rNlCiMLhuj - wuxqV6yIdgpH2GOLuc3ejvrGLZ8zlGjrxN0Yuy+9Ps3QFG2xBoNCmq37b/2uW7rD8EY5JWzj8vr6 - +ukvAAAA//8DAF95z3y5CgAA + I3PAhkXuoS2zaJdnAAAA///MVk1z2yAQvfdXMD4lM7WNJNuynFOSdppk6kwmPXZ6wAhFNEi4CLlt + OvnvfYD8VScz8a0nCdi3+1h2Hxwbp5Q1+XAk6E4bTJOb+2OzIpRqyP2nI2EXiklDro8lyfgjeduJ + o30Ua2yo8F2olVb5QlCtZTZUEaut1L9kji9Be5Q/2W/CuJUrafFT5wR9KsxKkFwgQiUBsbDn6+Vm + KbgswlgXxJaCLKSSaHpvV4eRhRcXDeMnsTCskE058L1p7JrVw3/BykmVVq3P+WSEkWya1g0SJzzs + QUAyetNs1M9o2nOJrh+cdgl8kPdaVW0tf7TCH8U0oXE2mgQnXvrilPazKMmcXoWpaByn/SQZ06Br + 4WS/9m7QbTVT5NxYyZGeb04wuTY5ztW2jsNdu5iLnPTBPhe/8FdoQ+YfP3y+vv0YfG1M47HjwIKr + ILZ/ejLvqgiWlcgdST8DUhFywJTf9UZ1XSluIJXcs59u7W+vr+Zf0mmEne9DlhV/BXI3vxzH4yim + owPEfpjxFoO1vsxnZIs9gyy1DTdyaf3KDpGzfb+5lrtek63XiA4iSuNhKZaDeDqhie+lUjZW4w5z + SdvNKs5DyJXP3M69M6TRMJoSSmeU+rj7kJVsDhHJMBq/gmCci6U9hIyGUfwKBNeREU+HgDghdPIS + YFMAbwXAWqHl9hDpkE6xkzXC12shcDdyEeoNwxdu4gFZX+Fnk9FJcjpLo7Tv2gPm3Xld6qpyV6ys + XVm70pvFaTLKshh1WmtPwAdk1hq5aK0P2LtiDTkHZwPdcO2DkoFPrtsaj44Raqlolfoe2qzT2C0t + cnLBlJUVLvf3ZJ4PTl3DKs0ZZKn2vY0qmpHDgkFKNO+IQ328vdM5w7muHT2FagI9EFpo/bjWPpgg + qbKtwj9+bXgshU4GqBRmHf+f6Y58iNIdiE/gEuJat9XCPcncDFsxqdhCicLoqjUqzK69YkV0U9jC + AVvMbX076tuwvGQo0S6IU/T9l9iQZmiKrliDQSHNzv20eXet3GZ4q5xSdXl5fn5+9xcAAP//AwCM + qqIyWQoAAA== headers: Access-Control-Allow-Origin: - '*' @@ -488,18 +418,20 @@ interactions: Content-Type: - application/json; charset=UTF-8 Date: - - Wed, 28 Jul 2021 19:43:20 GMT + - Wed, 17 May 2023 18:36:51 GMT Keep-Alive: - timeout=4, max=40 NCBI-PHID: - - D0BD3D622C4BDF7500004EFC6D94BF07.1.1.m_1 + - 322C36E9C9D0D90500005409C5B33DFE.1.1.m_1 NCBI-SID: - - F6183D46F2126CAE_F0A8SID + - B9B997ADC5BB1F2E_0B63SID + Referrer-Policy: + - origin-when-cross-origin Server: - Finatra Set-Cookie: - - ncbi_sid=F6183D46F2126CAE_F0A8SID; domain=.nih.gov; path=/; expires=Thu, 28 - Jul 2022 19:43:21 GMT + - ncbi_sid=B9B997ADC5BB1F2E_0B63SID; domain=.nih.gov; path=/; expires=Fri, 17 + May 2024 18:36:51 GMT Strict-Transport-Security: - max-age=31536000; includeSubDomains; preload Transfer-Encoding: @@ -527,29 +459,27 @@ interactions: Connection: - keep-alive User-Agent: - - python-requests/2.25.1 + - python-requests/2.30.0 method: GET uri: https://www.ebi.ac.uk/ena/portal/api/filereport?accession=SRR3098579&result=read_run response: body: - string: "run_accession\tfastq_ftp\tfastq_bytes\tfastq_md5\tsubmitted_ftp\tsubmitted_bytes\tsubmitted_md5\tsra_ftp\tsra_bytes\tsra_md5\nSRR3098579\tftp.sra.ebi.ac.uk/vol1/fastq/SRR309/009/SRR3098579/SRR3098579_1.fastq.gz;ftp.sra.ebi.ac.uk/vol1/fastq/SRR309/009/SRR3098579/SRR3098579_2.fastq.gz\t3999026139;3956970849\t9dc519ddc6a0aed81998137fcefa16f2;e7c56cceed78f71188178b7a39204c87\t\t\t\t\t\t\n" + string: "run_accession\tfastq_ftp\tfastq_bytes\tfastq_md5\tbam_ftp\tbam_bytes\tbam_md5\tsubmitted_ftp\tsubmitted_bytes\tsubmitted_md5\tsra_ftp\tsra_bytes\tsra_md5\nSRR3098579\tftp.sra.ebi.ac.uk/vol1/fastq/SRR309/009/SRR3098579/SRR3098579_1.fastq.gz;ftp.sra.ebi.ac.uk/vol1/fastq/SRR309/009/SRR3098579/SRR3098579_2.fastq.gz\t3999026139;3956970849\t9dc519ddc6a0aed81998137fcefa16f2;e7c56cceed78f71188178b7a39204c87\t\t\t\t\t\t\tftp.sra.ebi.ac.uk/vol1/srr/SRR309/009/SRR3098579\t6967490908\t78466070c9837bd51d6395ec3e428c9d\n" headers: Cache-Control: - no-cache, no-store, max-age=0, must-revalidate + Content-Length: + - '486' Content-Type: - text/plain Date: - - Wed, 28 Jul 2021 19:43:21 GMT + - Wed, 17 May 2023 18:36:51 GMT Expires: - '0' Pragma: - no-cache - Server: - - Apache-Coyote/1.1 Strict-Transport-Security: - max-age=0 - Transfer-Encoding: - - chunked X-Content-Type-Options: - nosniff X-Frame-Options: @@ -558,7 +488,7 @@ interactions: - 1; mode=block status: code: 200 - message: OK + message: '' - request: body: null headers: @@ -569,7 +499,7 @@ interactions: Connection: - keep-alive User-Agent: - - python-requests/2.25.1 + - python-requests/2.30.0 method: GET uri: https://www.ebi.ac.uk/ena/browser/api/xml/SRR3098580 response: @@ -613,7 +543,7 @@ interactions: Content-Type: - application/xml Date: - - Wed, 28 Jul 2021 19:43:23 GMT + - Wed, 17 May 2023 18:36:51 GMT Strict-Transport-Security: - max-age=0 Transfer-Encoding: @@ -631,7 +561,7 @@ interactions: Connection: - keep-alive User-Agent: - - python-requests/2.25.1 + - python-requests/2.30.0 method: GET uri: https://www.ebi.ac.uk/ena/browser/api/xml/SRX1528547 response: @@ -679,7 +609,7 @@ interactions: Content-Type: - application/xml Date: - - Wed, 28 Jul 2021 19:43:23 GMT + - Wed, 17 May 2023 18:36:52 GMT Strict-Transport-Security: - max-age=0 Transfer-Encoding: @@ -697,52 +627,44 @@ interactions: Connection: - keep-alive User-Agent: - - python-requests/2.25.1 + - python-requests/2.30.0 method: GET uri: https://www.ebi.ac.uk/ena/browser/api/xml/SRS1246177 response: body: string: "\n\n\n \n SRS1246177\n + alias=\"GSM2037739\" center_name=\"Michael Pack, Medicine/DIgestive Diseases, + University of Pennsylvania\" broker_name=\"NCBI\">\n \n SRS1246177\n \ SAMN04397506\n - \ GSM2037739\n GSM2037739\n \n Control - 2\n \n 7955\n Danio - rerio\n zebrafish\n - \ \n \n \n \n - \ ENA-STUDY\n SRP068364\n - \ \n \n \n - \ \n ENA-EXPERIMENT\n - \ SRX1528547\n \n \n - \ \n \n ENA-RUN\n - \ SRR3098580\n \n \n - \ \n \n ENA-SUBMISSION\n - \ SRA333195\n \n \n - \ \n \n ARRAYEXPRESS\n - \ E-GEOD-76780\n \n \n - \ \n \n ENA-FASTQ-FILES\n - \ \n - \ \n \n \n - \ \n ENA-SUBMITTED-FILES\n - \ \n - \ \n \n \n - \ \n \n source_name\n - \ liver\n \n \n - \ tissue\n liver\n \n + \ GSM2037739\n \n + \ Control 2\n \n 7955\n + \ Danio rerio\n zebrafish\n + \ \n \n \n \n + \ ENA-FASTQ-FILES\n \n + \ \n \n \n \n + \ ENA-SUBMITTED-FILES\n \n + \ \n \n\n\n \ \n treatment\n DMSO\n - \ \n \n ENA-SPOT-COUNT\n - \ 55503963\n \n \n - \ ENA-BASE-COUNT\n 11100792600\n - \ \n \n ENA-FIRST-PUBLIC\n - \ 2017-11-07\n \n - \ \n ENA-LAST-UPDATE\n - \ 2017-11-07\n \n + \ \n \n INSDC + secondary accession\n SRS1246177\n \n + \ \n NCBI submission package\n + \ Generic.1.0\n \n + \ \n organism\n Danio + rerio\n \n \n + \ tissue\n liver\n \n + \ \n source_name\n liver\n + \ \n \n BioSampleModel\n + \ Generic\n \n \n + \ ENA-FIRST-PUBLIC\n 2017-08-24\n + \ \n \n ENA-LAST-UPDATE\n + \ 2017-08-24\n \n \ \n\n\n" headers: Content-Type: - application/xml Date: - - Wed, 28 Jul 2021 19:43:23 GMT + - Wed, 17 May 2023 18:36:52 GMT Strict-Transport-Security: - max-age=0 Transfer-Encoding: @@ -760,7 +682,7 @@ interactions: Connection: - keep-alive User-Agent: - - python-requests/2.25.1 + - python-requests/2.30.0 method: GET uri: https://www.ebi.ac.uk/ena/browser/api/xml/SRP068364 response: @@ -808,7 +730,7 @@ interactions: Content-Type: - application/xml Date: - - Wed, 28 Jul 2021 19:43:24 GMT + - Wed, 17 May 2023 18:36:53 GMT Strict-Transport-Security: - max-age=0 Transfer-Encoding: @@ -826,7 +748,7 @@ interactions: Connection: - keep-alive User-Agent: - - python-requests/2.25.1 + - python-requests/2.30.0 method: GET uri: https://www.ebi.ac.uk/ena/browser/api/xml/SRA333195 response: @@ -863,7 +785,7 @@ interactions: Content-Type: - application/xml Date: - - Wed, 28 Jul 2021 19:43:24 GMT + - Wed, 17 May 2023 18:36:54 GMT Strict-Transport-Security: - max-age=0 Transfer-Encoding: @@ -871,68 +793,6 @@ interactions: status: code: 200 message: '' -- request: - body: acc=SRR3098580&accept-proto=fasp&version=2.0 - headers: - Accept: - - '*/*' - Accept-Encoding: - - gzip, deflate - Connection: - - keep-alive - Content-Length: - - '44' - User-Agent: - - python-requests/2.25.1 - method: POST - uri: https://www.ncbi.nlm.nih.gov/Traces/names/names.cgi - response: - body: - string: !!binary | - H4sIAAAAAAAAAwzIsQ7CIBAA0L1fQeLQqeYOKBz9CZPq5Aa0TTVESMEYk/t4feM7yTN09fDlHfg6 - zwocjQRsiKQhNDiyBDQD4IDyJmFCM2l7Z61Wr8PmXERNTlkvbTBBw0JkXViQmTUAX17pK/q9tVJ7 - UY7ccsxJPKrwKeXPuogtH6Lt/8jhucbW/QAAAP//AwBpZSYsjwAAAA== - headers: - Cache-Control: - - private - Connection: - - Keep-Alive - Content-Encoding: - - gzip - Content-Security-Policy: - - upgrade-insecure-requests - Content-Type: - - text/plain - Date: - - Wed, 28 Jul 2021 19:43:25 GMT - Keep-Alive: - - timeout=1, max=10 - NCBI-PHID: - - CC95F552101B35D10000000000000001.m_1 - NCBI-SID: - - CC95F552101B35D1_0000SID - Referrer-Policy: - - origin-when-cross-origin - Server: - - Apache - Set-Cookie: - - ncbi_sid=CC95F552101B35D1_0000SID; domain=.nih.gov; path=/; expires=Thu, 28 - Jul 2022 19:43:25 GMT - SraNameServerOutputVersion: - - '2.0' - Strict-Transport-Security: - - max-age=31536000; includeSubDomains; preload - Transfer-Encoding: - - chunked - Vary: - - Accept-Encoding - X-UA-Compatible: - - IE=Edge - X-XSS-Protection: - - 1; mode=block - status: - code: 200 - message: OK - request: body: null headers: @@ -943,29 +803,27 @@ interactions: Connection: - keep-alive User-Agent: - - python-requests/2.25.1 + - python-requests/2.30.0 method: GET uri: https://www.ebi.ac.uk/ena/portal/api/filereport?accession=SRR3098580&result=read_run response: body: - string: "run_accession\tfastq_ftp\tfastq_bytes\tfastq_md5\tsubmitted_ftp\tsubmitted_bytes\tsubmitted_md5\tsra_ftp\tsra_bytes\tsra_md5\nSRR3098580\tftp.sra.ebi.ac.uk/vol1/fastq/SRR309/000/SRR3098580/SRR3098580_1.fastq.gz;ftp.sra.ebi.ac.uk/vol1/fastq/SRR309/000/SRR3098580/SRR3098580_2.fastq.gz\t4061413779;4030359471\t6a7008ed2b0ed60d82d6a89e406b6c04;343eb987bbca5ec7001f2303c1570b2b\t\t\t\t\t\t\n" + string: "run_accession\tfastq_ftp\tfastq_bytes\tfastq_md5\tbam_ftp\tbam_bytes\tbam_md5\tsubmitted_ftp\tsubmitted_bytes\tsubmitted_md5\tsra_ftp\tsra_bytes\tsra_md5\nSRR3098580\tftp.sra.ebi.ac.uk/vol1/fastq/SRR309/000/SRR3098580/SRR3098580_1.fastq.gz;ftp.sra.ebi.ac.uk/vol1/fastq/SRR309/000/SRR3098580/SRR3098580_2.fastq.gz\t4061413779;4030359471\t6a7008ed2b0ed60d82d6a89e406b6c04;343eb987bbca5ec7001f2303c1570b2b\t\t\t\t\t\t\tftp.sra.ebi.ac.uk/vol1/srr/SRR309/000/SRR3098580\t6882681615\t43ea4bf99c148937a27b6b40d8879bd1\n" headers: Cache-Control: - no-cache, no-store, max-age=0, must-revalidate + Content-Length: + - '486' Content-Type: - text/plain Date: - - Wed, 28 Jul 2021 19:43:25 GMT + - Wed, 17 May 2023 18:36:54 GMT Expires: - '0' Pragma: - no-cache - Server: - - Apache-Coyote/1.1 Strict-Transport-Security: - max-age=0 - Transfer-Encoding: - - chunked X-Content-Type-Options: - nosniff X-Frame-Options: @@ -974,7 +832,7 @@ interactions: - 1; mode=block status: code: 200 - message: OK + message: '' - request: body: null headers: @@ -985,7 +843,7 @@ interactions: Connection: - keep-alive User-Agent: - - python-requests/2.25.1 + - python-requests/2.30.0 method: GET uri: https://www.ebi.ac.uk/ena/browser/api/xml/SRR3098581 response: @@ -1029,7 +887,7 @@ interactions: Content-Type: - application/xml Date: - - Wed, 28 Jul 2021 19:43:26 GMT + - Wed, 17 May 2023 18:36:54 GMT Strict-Transport-Security: - max-age=0 Transfer-Encoding: @@ -1047,7 +905,7 @@ interactions: Connection: - keep-alive User-Agent: - - python-requests/2.25.1 + - python-requests/2.30.0 method: GET uri: https://www.ebi.ac.uk/ena/browser/api/xml/SRX1528548 response: @@ -1095,7 +953,7 @@ interactions: Content-Type: - application/xml Date: - - Wed, 28 Jul 2021 19:43:27 GMT + - Wed, 17 May 2023 18:36:55 GMT Strict-Transport-Security: - max-age=0 Transfer-Encoding: @@ -1113,52 +971,44 @@ interactions: Connection: - keep-alive User-Agent: - - python-requests/2.25.1 + - python-requests/2.30.0 method: GET uri: https://www.ebi.ac.uk/ena/browser/api/xml/SRS1246176 response: body: string: "\n\n\n \n SRS1246176\n + alias=\"GSM2037740\" center_name=\"Michael Pack, Medicine/DIgestive Diseases, + University of Pennsylvania\" broker_name=\"NCBI\">\n \n SRS1246176\n \ SAMN04397507\n - \ GSM2037740\n GSM2037740\n \n Biliatresone - 1\n \n 7955\n Danio - rerio\n zebrafish\n - \ \n \n \n \n - \ ENA-STUDY\n SRP068364\n - \ \n \n \n - \ \n ENA-EXPERIMENT\n - \ SRX1528548\n \n \n - \ \n \n ENA-RUN\n - \ SRR3098581\n \n \n - \ \n \n ENA-SUBMISSION\n - \ SRA333195\n \n \n - \ \n \n ARRAYEXPRESS\n - \ E-GEOD-76780\n \n \n - \ \n \n ENA-FASTQ-FILES\n - \ \n - \ \n \n \n - \ \n ENA-SUBMITTED-FILES\n - \ \n - \ \n \n \n - \ \n \n source_name\n - \ liver\n \n \n - \ tissue\n liver\n \n + \ GSM2037740\n \n + \ Biliatresone 1\n \n 7955\n + \ Danio rerio\n zebrafish\n + \ \n \n \n \n + \ ENA-FASTQ-FILES\n \n + \ \n \n \n \n + \ ENA-SUBMITTED-FILES\n \n + \ \n \n\n\n \ \n treatment\n Biliatresone\n - \ \n \n ENA-SPOT-COUNT\n - \ 56284823\n \n \n - \ ENA-BASE-COUNT\n 11256964600\n - \ \n \n ENA-FIRST-PUBLIC\n - \ 2017-11-07\n \n - \ \n ENA-LAST-UPDATE\n - \ 2017-11-07\n \n + \ \n \n INSDC + secondary accession\n SRS1246176\n \n + \ \n NCBI submission package\n + \ Generic.1.0\n \n + \ \n organism\n Danio + rerio\n \n \n + \ tissue\n liver\n \n + \ \n source_name\n liver\n + \ \n \n BioSampleModel\n + \ Generic\n \n \n + \ ENA-FIRST-PUBLIC\n 2017-08-24\n + \ \n \n ENA-LAST-UPDATE\n + \ 2017-08-24\n \n \ \n\n\n" headers: Content-Type: - application/xml Date: - - Wed, 28 Jul 2021 19:43:27 GMT + - Wed, 17 May 2023 18:36:55 GMT Strict-Transport-Security: - max-age=0 Transfer-Encoding: @@ -1176,7 +1026,7 @@ interactions: Connection: - keep-alive User-Agent: - - python-requests/2.25.1 + - python-requests/2.30.0 method: GET uri: https://www.ebi.ac.uk/ena/browser/api/xml/SRP068364 response: @@ -1224,7 +1074,7 @@ interactions: Content-Type: - application/xml Date: - - Wed, 28 Jul 2021 19:43:27 GMT + - Wed, 17 May 2023 18:36:55 GMT Strict-Transport-Security: - max-age=0 Transfer-Encoding: @@ -1242,7 +1092,7 @@ interactions: Connection: - keep-alive User-Agent: - - python-requests/2.25.1 + - python-requests/2.30.0 method: GET uri: https://www.ebi.ac.uk/ena/browser/api/xml/SRA333195 response: @@ -1279,7 +1129,7 @@ interactions: Content-Type: - application/xml Date: - - Wed, 28 Jul 2021 19:43:28 GMT + - Wed, 17 May 2023 18:36:55 GMT Strict-Transport-Security: - max-age=0 Transfer-Encoding: @@ -1287,68 +1137,6 @@ interactions: status: code: 200 message: '' -- request: - body: acc=SRR3098581&accept-proto=fasp&version=2.0 - headers: - Accept: - - '*/*' - Accept-Encoding: - - gzip, deflate - Connection: - - keep-alive - Content-Length: - - '44' - User-Agent: - - python-requests/2.25.1 - method: POST - uri: https://www.ncbi.nlm.nih.gov/Traces/names/names.cgi - response: - body: - string: !!binary | - H4sIAAAAAAAAAwzKMQrDIBQA0D2nEDpkSvn6rdFcopB26qZGSYtUUUsp/MM36+OdxBmGVm35OLqt - K4LRF81JGSVnNWtEEsDVBHzi4s7NInEB8SDEaDYPKBC1PZbRPqKzKENEO2tPRBKAru/0Y+Pee2kj - KzX37HNiz8ZsSvkbNhZzZX0/ILtX8H34AwAA//8DANkLet6PAAAA - headers: - Cache-Control: - - private - Connection: - - Keep-Alive - Content-Encoding: - - gzip - Content-Security-Policy: - - upgrade-insecure-requests - Content-Type: - - text/plain - Date: - - Wed, 28 Jul 2021 19:43:29 GMT - Keep-Alive: - - timeout=1, max=10 - NCBI-PHID: - - CC95F57C101B36110000000000000001.m_1 - NCBI-SID: - - CC95F57C101B3611_0000SID - Referrer-Policy: - - origin-when-cross-origin - Server: - - Apache - Set-Cookie: - - ncbi_sid=CC95F57C101B3611_0000SID; domain=.nih.gov; path=/; expires=Thu, 28 - Jul 2022 19:43:29 GMT - SraNameServerOutputVersion: - - '2.0' - Strict-Transport-Security: - - max-age=31536000; includeSubDomains; preload - Transfer-Encoding: - - chunked - Vary: - - Accept-Encoding - X-UA-Compatible: - - IE=Edge - X-XSS-Protection: - - 1; mode=block - status: - code: 200 - message: OK - request: body: null headers: @@ -1359,29 +1147,27 @@ interactions: Connection: - keep-alive User-Agent: - - python-requests/2.25.1 + - python-requests/2.30.0 method: GET uri: https://www.ebi.ac.uk/ena/portal/api/filereport?accession=SRR3098581&result=read_run response: body: - string: "run_accession\tfastq_ftp\tfastq_bytes\tfastq_md5\tsubmitted_ftp\tsubmitted_bytes\tsubmitted_md5\tsra_ftp\tsra_bytes\tsra_md5\nSRR3098581\tftp.sra.ebi.ac.uk/vol1/fastq/SRR309/001/SRR3098581/SRR3098581_1.fastq.gz;ftp.sra.ebi.ac.uk/vol1/fastq/SRR309/001/SRR3098581/SRR3098581_2.fastq.gz\t4144635913;4104985160\t08aeda9f65037f4ad5f509b7292fac64;2a49ff5629ed4f535f53bbec56cacac1\t\t\t\t\t\t\n" + string: "run_accession\tfastq_ftp\tfastq_bytes\tfastq_md5\tbam_ftp\tbam_bytes\tbam_md5\tsubmitted_ftp\tsubmitted_bytes\tsubmitted_md5\tsra_ftp\tsra_bytes\tsra_md5\nSRR3098581\tftp.sra.ebi.ac.uk/vol1/fastq/SRR309/001/SRR3098581/SRR3098581_1.fastq.gz;ftp.sra.ebi.ac.uk/vol1/fastq/SRR309/001/SRR3098581/SRR3098581_2.fastq.gz\t4144635913;4104985160\t08aeda9f65037f4ad5f509b7292fac64;2a49ff5629ed4f535f53bbec56cacac1\t\t\t\t\t\t\tftp.sra.ebi.ac.uk/vol1/srr/SRR309/001/SRR3098581\t6964767833\t33f9dc032338a83398cf3ba34ef3a78c\n" headers: Cache-Control: - no-cache, no-store, max-age=0, must-revalidate + Content-Length: + - '486' Content-Type: - text/plain Date: - - Wed, 28 Jul 2021 19:43:29 GMT + - Wed, 17 May 2023 18:36:56 GMT Expires: - '0' Pragma: - no-cache - Server: - - Apache-Coyote/1.1 Strict-Transport-Security: - max-age=0 - Transfer-Encoding: - - chunked X-Content-Type-Options: - nosniff X-Frame-Options: @@ -1390,7 +1176,7 @@ interactions: - 1; mode=block status: code: 200 - message: OK + message: '' - request: body: null headers: @@ -1401,7 +1187,7 @@ interactions: Connection: - keep-alive User-Agent: - - python-requests/2.25.1 + - python-requests/2.30.0 method: GET uri: https://www.ebi.ac.uk/ena/browser/api/xml/SRR3098582 response: @@ -1445,7 +1231,7 @@ interactions: Content-Type: - application/xml Date: - - Wed, 28 Jul 2021 19:43:30 GMT + - Wed, 17 May 2023 18:36:56 GMT Strict-Transport-Security: - max-age=0 Transfer-Encoding: @@ -1463,7 +1249,7 @@ interactions: Connection: - keep-alive User-Agent: - - python-requests/2.25.1 + - python-requests/2.30.0 method: GET uri: https://www.ebi.ac.uk/ena/browser/api/xml/SRX1528549 response: @@ -1511,7 +1297,7 @@ interactions: Content-Type: - application/xml Date: - - Wed, 28 Jul 2021 19:43:30 GMT + - Wed, 17 May 2023 18:36:57 GMT Strict-Transport-Security: - max-age=0 Transfer-Encoding: @@ -1529,52 +1315,44 @@ interactions: Connection: - keep-alive User-Agent: - - python-requests/2.25.1 + - python-requests/2.30.0 method: GET uri: https://www.ebi.ac.uk/ena/browser/api/xml/SRS1246175 response: body: string: "\n\n\n \n SRS1246175\n + alias=\"GSM2037741\" center_name=\"Michael Pack, Medicine/DIgestive Diseases, + University of Pennsylvania\" broker_name=\"NCBI\">\n \n SRS1246175\n \ SAMN04397508\n - \ GSM2037741\n GSM2037741\n \n Biliatresone - 2\n \n 7955\n Danio - rerio\n zebrafish\n - \ \n \n \n \n - \ ENA-STUDY\n SRP068364\n - \ \n \n \n - \ \n ENA-EXPERIMENT\n - \ SRX1528549\n \n \n - \ \n \n ENA-RUN\n - \ SRR3098582\n \n \n - \ \n \n ENA-SUBMISSION\n - \ SRA333195\n \n \n - \ \n \n ARRAYEXPRESS\n - \ E-GEOD-76780\n \n \n - \ \n \n ENA-FASTQ-FILES\n - \ \n - \ \n \n \n - \ \n ENA-SUBMITTED-FILES\n - \ \n - \ \n \n \n - \ \n \n source_name\n - \ liver\n \n \n - \ tissue\n liver\n \n + \ GSM2037741\n \n + \ Biliatresone 2\n \n 7955\n + \ Danio rerio\n zebrafish\n + \ \n \n \n \n + \ ENA-FASTQ-FILES\n \n + \ \n \n \n \n + \ ENA-SUBMITTED-FILES\n \n + \ \n \n\n\n \ \n treatment\n Biliatresone\n - \ \n \n ENA-SPOT-COUNT\n - \ 59107344\n \n \n - \ ENA-BASE-COUNT\n 11821468800\n - \ \n \n ENA-FIRST-PUBLIC\n - \ 2017-11-07\n \n - \ \n ENA-LAST-UPDATE\n - \ 2017-11-07\n \n + \ \n \n INSDC + secondary accession\n SRS1246175\n \n + \ \n NCBI submission package\n + \ Generic.1.0\n \n + \ \n organism\n Danio + rerio\n \n \n + \ tissue\n liver\n \n + \ \n source_name\n liver\n + \ \n \n BioSampleModel\n + \ Generic\n \n \n + \ ENA-FIRST-PUBLIC\n 2017-08-24\n + \ \n \n ENA-LAST-UPDATE\n + \ 2017-08-24\n \n \ \n\n\n" headers: Content-Type: - application/xml Date: - - Wed, 28 Jul 2021 19:43:31 GMT + - Wed, 17 May 2023 18:36:57 GMT Strict-Transport-Security: - max-age=0 Transfer-Encoding: @@ -1592,7 +1370,7 @@ interactions: Connection: - keep-alive User-Agent: - - python-requests/2.25.1 + - python-requests/2.30.0 method: GET uri: https://www.ebi.ac.uk/ena/browser/api/xml/SRP068364 response: @@ -1640,7 +1418,7 @@ interactions: Content-Type: - application/xml Date: - - Wed, 28 Jul 2021 19:43:31 GMT + - Wed, 17 May 2023 18:36:57 GMT Strict-Transport-Security: - max-age=0 Transfer-Encoding: @@ -1658,7 +1436,7 @@ interactions: Connection: - keep-alive User-Agent: - - python-requests/2.25.1 + - python-requests/2.30.0 method: GET uri: https://www.ebi.ac.uk/ena/browser/api/xml/SRA333195 response: @@ -1695,7 +1473,7 @@ interactions: Content-Type: - application/xml Date: - - Wed, 28 Jul 2021 19:43:32 GMT + - Wed, 17 May 2023 18:36:58 GMT Strict-Transport-Security: - max-age=0 Transfer-Encoding: @@ -1703,68 +1481,6 @@ interactions: status: code: 200 message: '' -- request: - body: acc=SRR3098582&accept-proto=fasp&version=2.0 - headers: - Accept: - - '*/*' - Accept-Encoding: - - gzip, deflate - Connection: - - keep-alive - Content-Length: - - '44' - User-Agent: - - python-requests/2.25.1 - method: POST - uri: https://www.ncbi.nlm.nih.gov/Traces/names/names.cgi - response: - body: - string: !!binary | - H4sIAAAAAAAAAwzISwrCMBAA0H1PEXDRVWVmMk2aXkKortxl+qFKMKWNiDCH17d8JzpDdexxe4te - h8FC6NqO1FtCJm47qwToGsAG6YahZ9sD3nWxjp2bPEVxwi3K7CcMwhJ9YIxWVRlAL6/0NfVaynbU - ZttzyWNO5nGYmFL+zJNZ8m7K+o8sz3ks1Q8AAP//AwAvJGGEjwAAAA== - headers: - Cache-Control: - - private - Connection: - - Keep-Alive - Content-Encoding: - - gzip - Content-Security-Policy: - - upgrade-insecure-requests - Content-Type: - - text/plain - Date: - - Wed, 28 Jul 2021 19:43:33 GMT - Keep-Alive: - - timeout=1, max=10 - NCBI-PHID: - - C7A4234C101B36510000000000000001.m_1 - NCBI-SID: - - C7A4234C101B3651_0000SID - Referrer-Policy: - - origin-when-cross-origin - Server: - - Apache - Set-Cookie: - - ncbi_sid=C7A4234C101B3651_0000SID; domain=.nih.gov; path=/; expires=Thu, 28 - Jul 2022 19:43:33 GMT - SraNameServerOutputVersion: - - '2.0' - Strict-Transport-Security: - - max-age=31536000; includeSubDomains; preload - Transfer-Encoding: - - chunked - Vary: - - Accept-Encoding - X-UA-Compatible: - - IE=Edge - X-XSS-Protection: - - 1; mode=block - status: - code: 200 - message: OK - request: body: null headers: @@ -1775,29 +1491,27 @@ interactions: Connection: - keep-alive User-Agent: - - python-requests/2.25.1 + - python-requests/2.30.0 method: GET uri: https://www.ebi.ac.uk/ena/portal/api/filereport?accession=SRR3098582&result=read_run response: body: - string: "run_accession\tfastq_ftp\tfastq_bytes\tfastq_md5\tsubmitted_ftp\tsubmitted_bytes\tsubmitted_md5\tsra_ftp\tsra_bytes\tsra_md5\nSRR3098582\tftp.sra.ebi.ac.uk/vol1/fastq/SRR309/002/SRR3098582/SRR3098582_1.fastq.gz;ftp.sra.ebi.ac.uk/vol1/fastq/SRR309/002/SRR3098582/SRR3098582_2.fastq.gz\t4316824267;4279937658\tf6c81ae89ce3d6da48175926d4503547;6315f2371bc413220feb23c1ac030c46\t\t\t\t\t\t\n" + string: "run_accession\tfastq_ftp\tfastq_bytes\tfastq_md5\tbam_ftp\tbam_bytes\tbam_md5\tsubmitted_ftp\tsubmitted_bytes\tsubmitted_md5\tsra_ftp\tsra_bytes\tsra_md5\nSRR3098582\tftp.sra.ebi.ac.uk/vol1/fastq/SRR309/002/SRR3098582/SRR3098582_1.fastq.gz;ftp.sra.ebi.ac.uk/vol1/fastq/SRR309/002/SRR3098582/SRR3098582_2.fastq.gz\t4316824267;4279937658\tf6c81ae89ce3d6da48175926d4503547;6315f2371bc413220feb23c1ac030c46\t\t\t\t\t\t\tftp.sra.ebi.ac.uk/vol1/srr/SRR309/002/SRR3098582\t7321424583\tf36466d72ab6b451be7d19b4ba7941a3\n" headers: Cache-Control: - no-cache, no-store, max-age=0, must-revalidate + Content-Length: + - '486' Content-Type: - text/plain Date: - - Wed, 28 Jul 2021 19:43:33 GMT + - Wed, 17 May 2023 18:36:58 GMT Expires: - '0' Pragma: - no-cache - Server: - - Apache-Coyote/1.1 Strict-Transport-Security: - max-age=0 - Transfer-Encoding: - - chunked X-Content-Type-Options: - nosniff X-Frame-Options: @@ -1806,7 +1520,7 @@ interactions: - 1; mode=block status: code: 200 - message: OK + message: '' - request: body: null headers: @@ -1817,7 +1531,7 @@ interactions: Connection: - keep-alive User-Agent: - - python-requests/2.25.1 + - python-requests/2.30.0 method: GET uri: https://www.ebi.ac.uk/ena/browser/api/xml/SRP111553 response: @@ -1865,7 +1579,7 @@ interactions: Content-Type: - application/xml Date: - - Wed, 28 Jul 2021 19:43:35 GMT + - Wed, 17 May 2023 18:36:59 GMT Strict-Transport-Security: - max-age=0 Transfer-Encoding: @@ -1883,7 +1597,7 @@ interactions: Connection: - keep-alive User-Agent: - - python-requests/2.25.1 + - python-requests/2.30.0 method: GET uri: https://www.ebi.ac.uk/ena/browser/api/xml/SRR5818004 response: @@ -1924,7 +1638,7 @@ interactions: Content-Type: - application/xml Date: - - Wed, 28 Jul 2021 19:43:35 GMT + - Wed, 17 May 2023 18:36:59 GMT Strict-Transport-Security: - max-age=0 Transfer-Encoding: @@ -1942,7 +1656,7 @@ interactions: Connection: - keep-alive User-Agent: - - python-requests/2.25.1 + - python-requests/2.30.0 method: GET uri: https://www.ebi.ac.uk/ena/browser/api/xml/SRX2996258 response: @@ -1999,7 +1713,7 @@ interactions: Content-Type: - application/xml Date: - - Wed, 28 Jul 2021 19:43:36 GMT + - Wed, 17 May 2023 18:37:00 GMT Strict-Transport-Security: - max-age=0 Transfer-Encoding: @@ -2017,54 +1731,40 @@ interactions: Connection: - keep-alive User-Agent: - - python-requests/2.25.1 + - python-requests/2.30.0 method: GET uri: https://www.ebi.ac.uk/ena/browser/api/xml/SRS2347490 response: body: string: "\n\n\n \n SRS2347490\n - \ SAMN07343034\n - \ GSM2700326\n GSM2700326\n \n wt1aGFP_1_neg\n - \ \n 7955\n Danio - rerio\n zebrafish\n - \ \n \n \n \n - \ ENA-STUDY\n SRP111553\n - \ \n \n \n - \ \n ENA-EXPERIMENT\n - \ SRX2996258\n \n \n - \ \n \n ENA-RUN\n - \ SRR5818004-SRR5818005\n \n - \ \n \n \n - \ ENA-SUBMISSION\n SRA585736\n - \ \n \n \n - \ \n ARRAYEXPRESS\n E-GEOD-101204\n - \ \n \n \n - \ \n ENA-FASTQ-FILES\n - \ \n - \ \n \n \n - \ \n ENA-SUBMITTED-FILES\n - \ \n - \ \n \n \n - \ \n \n source_name\n + alias=\"GSM2700326\" center_name=\"Bioinformatics Unit, CNIC\" broker_name=\"NCBI\">\n + \ \n SRS2347490\n SAMN07343034\n GSM2700326\n \n + \ wt1aGFP_1_neg\n \n 7955\n + \ Danio rerio\n zebrafish\n + \ \n \n \n \n + \ ENA-FASTQ-FILES\n \n + \ \n \n \n \n + \ ENA-SUBMITTED-FILES\n \n + \ \n \n\n\n + \ \n INSDC secondary accession\n + \ SRS2347490\n \n + \ \n organism\n Danio + rerio\n \n \n + \ pool\n 1\n \n + \ \n cell type\n wt1a-\n + \ \n \n source_name\n \ Heart\n \n \n - \ cell type\n wt1a-\n - \ \n \n pool\n - \ 1\n \n \n - \ ENA-SPOT-COUNT\n 27406051\n - \ \n \n ENA-BASE-COUNT\n - \ 1671769111\n \n - \ \n ENA-FIRST-PUBLIC\n - \ 2018-03-23\n \n - \ \n ENA-LAST-UPDATE\n - \ 2018-04-04\n \n + \ BioSampleModel\n Generic\n + \ \n \n ENA-FIRST-PUBLIC\n + \ 2018-03-22\n \n \ \n\n\n" headers: Content-Type: - application/xml Date: - - Wed, 28 Jul 2021 19:43:36 GMT + - Wed, 17 May 2023 18:37:01 GMT Strict-Transport-Security: - max-age=0 Transfer-Encoding: @@ -2082,7 +1782,7 @@ interactions: Connection: - keep-alive User-Agent: - - python-requests/2.25.1 + - python-requests/2.30.0 method: GET uri: https://www.ebi.ac.uk/ena/browser/api/xml/SRP111553 response: @@ -2130,7 +1830,7 @@ interactions: Content-Type: - application/xml Date: - - Wed, 28 Jul 2021 19:43:37 GMT + - Wed, 17 May 2023 18:37:01 GMT Strict-Transport-Security: - max-age=0 Transfer-Encoding: @@ -2148,7 +1848,7 @@ interactions: Connection: - keep-alive User-Agent: - - python-requests/2.25.1 + - python-requests/2.30.0 method: GET uri: https://www.ebi.ac.uk/ena/browser/api/xml/SRA585736 response: @@ -2185,7 +1885,7 @@ interactions: Content-Type: - application/xml Date: - - Wed, 28 Jul 2021 19:43:37 GMT + - Wed, 17 May 2023 18:37:01 GMT Strict-Transport-Security: - max-age=0 Transfer-Encoding: @@ -2194,7 +1894,7 @@ interactions: code: 200 message: '' - request: - body: acc=SRR5818004&accept-proto=fasp&version=2.0 + body: null headers: Accept: - '*/*' @@ -2202,56 +1902,72 @@ interactions: - gzip, deflate Connection: - keep-alive - Content-Length: - - '44' User-Agent: - - python-requests/2.25.1 - method: POST - uri: https://www.ncbi.nlm.nih.gov/Traces/names/names.cgi + - python-requests/2.30.0 + method: GET + uri: https://eutils.ncbi.nlm.nih.gov/entrez/eutils/esummary.fcgi?db=pubmed&id=29610343&retmode=json&tool=refinebio&email=hello@refine.bio response: body: string: !!binary | - H4sIAAAAAAAAAwzIwQrCMAwA0LtfUfCw0yRpujbbTwjTk7etpkwpdmwVEfLx+o7vaE9w2Ldpfc96 - GceOkQGcOnbk2WNQCxhaCC3i1eJANHTupiQTkRXqepBkk8TeSWASbz3HxKiqDkDPr/w1zVLrujdm - 3UotsWTz2M2Uc/nI3aSymbr8o8xPifXwAwAA//8DAAZ0mZuOAAAA + H4sIAAAAAAAAAJSPy0rEMBSGX+Vw1q20U/HSXRnEC4zIFFfi4pgGmiFNykkqTIsPM8/gI/TFTMeh + unBhd+G/5P/OgLWkSjLmA/p9KzFH6bqmId5jhO+SnbImiMlZhh8RcjC1n8KdqhzmL7i6vkiT7DzD + 1+jn/e2H2qxE2HZvFflpYJWkV1C0DOll0OUfxiroznYsJvWJrYBH8hoKQRWUQsEzlFCEDHW+tjxx + DGiomdLleDCiln18z2R6C3en2Om44tgImtCd85KPlOGyuX9LmrhS8ZqcV1oTbBZ+UIbZeGNZ7sZP + M1P+e96afjzowL+1juBh6fraOk+wXdi6YeP8YtaSlOmhklDsAumv8hcAAAD//7RV32/TMBB+56+w + +t7NbtMmLU8TTAK0VpNgEtLEg+M4rcGxh2NXMLT/nTs7adKNofGANGnx9b77/d29BHzFzY6Tz/+I + 2kgncFzJ9kVAmEkNfUxj8hjuldeI/QSD0ippPKlV6WyrWgJjbvVBtuSgeJKWaIcow4VXB+6BFPAg + fi9BdyeNdCAzO3IvS8dr1e4J0Mr5szjHzveu/P9zhWy1OsQqMbaAp2rbEF9LZB/fSeDJJGNFMc3Y + ChmpoQVIYQn/oFJGN8Go70HG4uULuijyZbITNwCd5dMim2XI2SRidMWmy2xFE71TL24nH4C5hgNd + nVcC8v6Ce0NYV0EnfMAorkO5kRWZQmKV/AFftXVkc/n26v32Mtk6qs4WGANPptLO+TVRVdd30Gxk + hUFGCQTFoA5cx8SPywcHaIA0YqxfDPrXmzeLFaPFLH+CUCc+FgMGfpuqak0G7OtTcGXVGDofoIye + MZrPz+8Mb89YzpY5m2PnTn2rE3g2go8QUOG9ar2FpY3lGdfvWKHRjj2nGfwRulxTGt2NAaCtlZGP + EcX5nD6DgHl28v5vLuIE1NJJI3AKb+HNvXeqDD6+J+94Sy7AooOhx3mBsgJA2GDg2GRQtDpo/TXN + VbcK8CxIWQEVWmLryI9tZAtPh0I2P1EO5yJ67XVujPIwcB8h+CS8aGBdCI5Tra2IFiIBoHFr8lyP + IFcruhYJ5SMKue6EsAYT09COlGhp7bee/6AC5VWhSd/w6dN5TUMPoL10fRSPxF3ayUtX6QnW9Q4W + jAlNiUccJfzAleallrWzTXA6SXur8IvsRJDCk2hBNtjG0Ae3Ys/vfO8Et9rp4caOs5xQih1PCrVy + o+X7p8t8wLxE0MjvrkQPDw+vfgMAAP//AwCCvIZklggAAA== headers: + Access-Control-Allow-Origin: + - '*' + Access-Control-Expose-Headers: + - X-RateLimit-Limit,X-RateLimit-Remaining Cache-Control: - private Connection: - Keep-Alive - Content-Encoding: - - gzip Content-Security-Policy: - upgrade-insecure-requests Content-Type: - - text/plain + - application/json; charset=UTF-8 Date: - - Wed, 28 Jul 2021 19:43:38 GMT + - Wed, 17 May 2023 18:37:01 GMT Keep-Alive: - - timeout=1, max=10 + - timeout=4, max=40 NCBI-PHID: - - CC95F5C2101B36A10000000000000001.m_1 + - 322C36E9C9D0D90500004709F0669592.1.1.m_1 NCBI-SID: - - CC95F5C2101B36A1_0000SID + - 15A7E4A692BBC304_4B15SID Referrer-Policy: - origin-when-cross-origin Server: - - Apache + - Finatra Set-Cookie: - - ncbi_sid=CC95F5C2101B36A1_0000SID; domain=.nih.gov; path=/; expires=Thu, 28 - Jul 2022 19:43:38 GMT - SraNameServerOutputVersion: - - '2.0' + - ncbi_sid=15A7E4A692BBC304_4B15SID; domain=.nih.gov; path=/; expires=Fri, 17 + May 2024 18:37:02 GMT Strict-Transport-Security: - max-age=31536000; includeSubDomains; preload Transfer-Encoding: - chunked - Vary: - - Accept-Encoding + X-RateLimit-Limit: + - '3' + X-RateLimit-Remaining: + - '2' X-UA-Compatible: - IE=Edge X-XSS-Protection: - 1; mode=block + content-encoding: + - gzip status: code: 200 message: OK @@ -2265,105 +1981,27 @@ interactions: Connection: - keep-alive User-Agent: - - python-requests/2.25.1 + - python-requests/2.30.0 method: GET - uri: https://eutils.ncbi.nlm.nih.gov/entrez/eutils/esummary.fcgi?db=pubmed&id=29610343&retmode=json&tool=refinebio&email=hello@refine.bio + uri: https://www.ebi.ac.uk/ena/portal/api/filereport?accession=SRR5818004&result=read_run response: body: - string: !!binary | - H4sIAAAAAAAAAJSPy0rEMBSGX+Vw1q20U/HSXRnEC4zIFFfi4pgGmiFNykkqTIsPM8/gI/TFTMeh - unBhd+G/5P/OgLWkSjLmA/p9KzFH6bqmId5jhO+SnbImiMlZhh8RcjC1n8KdqhzmL7i6vkiT7DzD - 1+jn/e2H2qxE2HZvFflpYJWkV1C0DOll0OUfxiroznYsJvWJrYBH8hoKQRWUQsEzlFCEDHW+tjxx - DGiomdLleDCiln18z2R6C3en2Om44tgImtCd85KPlOGyuX9LmrhS8ZqcV1oTbBZ+UIbZeGNZ7sZP - M1P+e96afjzowL+1juBh6fraOk+wXdi6YeP8YtaSlOmhklDsAumv8hcAAAD//7RW32/TMBB+56+w - +t7VbtMmLU8TTAK0VpMACWniwXGc1uDYxbErGNr/zp2dNunY0PaAVKnx5b77/Z3zHPA1N1tOvrwQ - tZZO4LiSzbOAMJMa+pjG5CHcK68R+wkGpVXSeFKr0tlWtQTG3OqDbMlB8SQt0Q5RhguvDtwDKeBA - /E6C7lYa6UBmtuROlo7Xqt0RoJXzF3GOnT+68v/PFbLV6hCrxNgcjqptQzwtkH18K4Eno4wVxThj - S2SkhhYghSX8QaWMboJRP4KMxcvndF7ki2QnbgA6zcdFNs2Qs0nE6JKNF9mSJnqnXtyOPgBzDQe6 - Oq8E5P0V94awroJO+IBR3IRyLSsyhsQq+ROeauvI+urt9fvNVbJ1Up3OMQaeTKWd83ukqq7voNnI - CoOMEgiKQR24jomflg8OUA9Raqif9fosZ4uczbB6Z4jKniFmAwS9YDSfTfaGtxdPwfeNGMKLHn6z - fjNfMlpM83MEju/jiMdTki/Uh4jOEfMeAe/GqlqRPrbXkUc71XoLlwKWf9ifUwcGO3xCM/gRulhR - Gj0PAaCtlZEPEcVkRp9AAF+cvPuXizhhtXTSCJzyWzhz750qg4/n0Tvekkuw6IBUOI+QJQCEDQYu - swxmpg5af0tz260avHakrIBqLbF15N8mspGni0g2v1AO11H0etT5bJSHgf4IwSfhZQPrSHBkjbYi - WogEg6lakacGCHK1ouuWUD6icJc4IazBxDS0IyVaWvv9uF9ABcqrQpOe4dGn6zuRCkA76Y5RPBB3 - aScvXaVHWNc9LDATmhI/ElDCD1xpXmpZO9sEp5P0aBXeyE4EKfwVLch62xh671bs+N4fneDWPP8w - wI6znFCKHU8KtXKD5f7YzX/AvETQuD+6Et3f37/6AwAA//8DAA15bML2CAAA - headers: - Access-Control-Allow-Origin: - - '*' - Access-Control-Expose-Headers: - - X-RateLimit-Limit,X-RateLimit-Remaining - Cache-Control: - - private - Connection: - - Keep-Alive - Content-Security-Policy: - - upgrade-insecure-requests - Content-Type: - - application/json; charset=UTF-8 - Date: - - Wed, 28 Jul 2021 19:43:37 GMT - Keep-Alive: - - timeout=4, max=40 - NCBI-PHID: - - 322C6078A1DD388500003FF99EA4C4D3.1.1.m_1 - NCBI-SID: - - D07104C48ED79493_9AA1SID - Server: - - Finatra - Set-Cookie: - - ncbi_sid=D07104C48ED79493_9AA1SID; domain=.nih.gov; path=/; expires=Thu, 28 - Jul 2022 19:43:38 GMT - Strict-Transport-Security: - - max-age=31536000; includeSubDomains; preload - Transfer-Encoding: - - chunked - X-RateLimit-Limit: - - '3' - X-RateLimit-Remaining: - - '2' - X-UA-Compatible: - - IE=Edge - X-XSS-Protection: - - 1; mode=block - content-encoding: - - gzip - status: - code: 200 - message: OK -- request: - body: null - headers: - Accept: - - '*/*' - Accept-Encoding: - - gzip, deflate - Connection: - - keep-alive - User-Agent: - - python-requests/2.25.1 - method: GET - uri: https://www.ebi.ac.uk/ena/portal/api/filereport?accession=SRR5818004&result=read_run - response: - body: - string: "run_accession\tfastq_ftp\tfastq_bytes\tfastq_md5\tsubmitted_ftp\tsubmitted_bytes\tsubmitted_md5\tsra_ftp\tsra_bytes\tsra_md5\nSRR5818004\tftp.sra.ebi.ac.uk/vol1/fastq/SRR581/004/SRR5818004/SRR5818004.fastq.gz\t672369314\tff777268831b4ce053e1320f3bd0994a\t\t\t\t\t\t\n" + string: "run_accession\tfastq_ftp\tfastq_bytes\tfastq_md5\tbam_ftp\tbam_bytes\tbam_md5\tsubmitted_ftp\tsubmitted_bytes\tsubmitted_md5\tsra_ftp\tsra_bytes\tsra_md5\nSRR5818004\tftp.sra.ebi.ac.uk/vol1/fastq/SRR581/004/SRR5818004/SRR5818004.fastq.gz\t672369314\tff777268831b4ce053e1320f3bd0994a\t\t\t\t\t\t\tftp.sra.ebi.ac.uk/vol1/srr/SRR581/004/SRR5818004\t484368617\t3ea332e3590ef2fec94e783e6268cf81\n" headers: Cache-Control: - no-cache, no-store, max-age=0, must-revalidate + Content-Length: + - '365' Content-Type: - text/plain Date: - - Wed, 28 Jul 2021 19:43:38 GMT + - Wed, 17 May 2023 18:37:02 GMT Expires: - '0' Pragma: - no-cache - Server: - - Apache-Coyote/1.1 Strict-Transport-Security: - max-age=0 - Transfer-Encoding: - - chunked X-Content-Type-Options: - nosniff X-Frame-Options: @@ -2372,7 +2010,7 @@ interactions: - 1; mode=block status: code: 200 - message: OK + message: '' - request: body: null headers: @@ -2383,7 +2021,7 @@ interactions: Connection: - keep-alive User-Agent: - - python-requests/2.25.1 + - python-requests/2.30.0 method: GET uri: https://www.ebi.ac.uk/ena/browser/api/xml/SRR5818005 response: @@ -2424,7 +2062,7 @@ interactions: Content-Type: - application/xml Date: - - Wed, 28 Jul 2021 19:43:40 GMT + - Wed, 17 May 2023 18:37:02 GMT Strict-Transport-Security: - max-age=0 Transfer-Encoding: @@ -2442,7 +2080,7 @@ interactions: Connection: - keep-alive User-Agent: - - python-requests/2.25.1 + - python-requests/2.30.0 method: GET uri: https://www.ebi.ac.uk/ena/browser/api/xml/SRX2996258 response: @@ -2499,7 +2137,7 @@ interactions: Content-Type: - application/xml Date: - - Wed, 28 Jul 2021 19:43:40 GMT + - Wed, 17 May 2023 18:37:02 GMT Strict-Transport-Security: - max-age=0 Transfer-Encoding: @@ -2517,54 +2155,40 @@ interactions: Connection: - keep-alive User-Agent: - - python-requests/2.25.1 + - python-requests/2.30.0 method: GET uri: https://www.ebi.ac.uk/ena/browser/api/xml/SRS2347490 response: body: string: "\n\n\n \n SRS2347490\n - \ SAMN07343034\n - \ GSM2700326\n GSM2700326\n \n wt1aGFP_1_neg\n - \ \n 7955\n Danio - rerio\n zebrafish\n - \ \n \n \n \n - \ ENA-STUDY\n SRP111553\n - \ \n \n \n - \ \n ENA-EXPERIMENT\n - \ SRX2996258\n \n \n - \ \n \n ENA-RUN\n - \ SRR5818004-SRR5818005\n \n - \ \n \n \n - \ ENA-SUBMISSION\n SRA585736\n - \ \n \n \n - \ \n ARRAYEXPRESS\n E-GEOD-101204\n - \ \n \n \n - \ \n ENA-FASTQ-FILES\n - \ \n - \ \n \n \n - \ \n ENA-SUBMITTED-FILES\n - \ \n - \ \n \n \n - \ \n \n source_name\n + alias=\"GSM2700326\" center_name=\"Bioinformatics Unit, CNIC\" broker_name=\"NCBI\">\n + \ \n SRS2347490\n SAMN07343034\n GSM2700326\n \n + \ wt1aGFP_1_neg\n \n 7955\n + \ Danio rerio\n zebrafish\n + \ \n \n \n \n + \ ENA-FASTQ-FILES\n \n + \ \n \n \n \n + \ ENA-SUBMITTED-FILES\n \n + \ \n \n\n\n + \ \n INSDC secondary accession\n + \ SRS2347490\n \n + \ \n organism\n Danio + rerio\n \n \n + \ pool\n 1\n \n + \ \n cell type\n wt1a-\n + \ \n \n source_name\n \ Heart\n \n \n - \ cell type\n wt1a-\n - \ \n \n pool\n - \ 1\n \n \n - \ ENA-SPOT-COUNT\n 27406051\n - \ \n \n ENA-BASE-COUNT\n - \ 1671769111\n \n - \ \n ENA-FIRST-PUBLIC\n - \ 2018-03-23\n \n - \ \n ENA-LAST-UPDATE\n - \ 2018-04-04\n \n + \ BioSampleModel\n Generic\n + \ \n \n ENA-FIRST-PUBLIC\n + \ 2018-03-22\n \n \ \n\n\n" headers: Content-Type: - application/xml Date: - - Wed, 28 Jul 2021 19:43:41 GMT + - Wed, 17 May 2023 18:37:02 GMT Strict-Transport-Security: - max-age=0 Transfer-Encoding: @@ -2582,7 +2206,7 @@ interactions: Connection: - keep-alive User-Agent: - - python-requests/2.25.1 + - python-requests/2.30.0 method: GET uri: https://www.ebi.ac.uk/ena/browser/api/xml/SRP111553 response: @@ -2630,7 +2254,7 @@ interactions: Content-Type: - application/xml Date: - - Wed, 28 Jul 2021 19:43:41 GMT + - Wed, 17 May 2023 18:37:04 GMT Strict-Transport-Security: - max-age=0 Transfer-Encoding: @@ -2648,7 +2272,7 @@ interactions: Connection: - keep-alive User-Agent: - - python-requests/2.25.1 + - python-requests/2.30.0 method: GET uri: https://www.ebi.ac.uk/ena/browser/api/xml/SRA585736 response: @@ -2685,7 +2309,7 @@ interactions: Content-Type: - application/xml Date: - - Wed, 28 Jul 2021 19:43:42 GMT + - Wed, 17 May 2023 18:37:04 GMT Strict-Transport-Security: - max-age=0 Transfer-Encoding: @@ -2693,68 +2317,6 @@ interactions: status: code: 200 message: '' -- request: - body: acc=SRR5818005&accept-proto=fasp&version=2.0 - headers: - Accept: - - '*/*' - Accept-Encoding: - - gzip, deflate - Connection: - - keep-alive - Content-Length: - - '44' - User-Agent: - - python-requests/2.25.1 - method: POST - uri: https://www.ncbi.nlm.nih.gov/Traces/names/names.cgi - response: - body: - string: !!binary | - H4sIAAAAAAAAAwzIsQ7CIBAA0L1fQeLQqeYOOFr6EybVyY0CTTVECMUYk/t4feM7yTN0R3XlvfJ1 - WWjCCYBYW21IktIsAccBxgHxJnFWaiZ5Zweb8sYaG5RGEzQQxRGtCQYVBArMrAH48kpf0e+tlaMX - peaWfU7icQiXUv7EILZcRdv/kddn9K37AQAA//8DAIZfTJCOAAAA - headers: - Cache-Control: - - private - Connection: - - Keep-Alive - Content-Encoding: - - gzip - Content-Security-Policy: - - upgrade-insecure-requests - Content-Type: - - text/plain - Date: - - Wed, 28 Jul 2021 19:43:42 GMT - Keep-Alive: - - timeout=1, max=10 - NCBI-PHID: - - CC95F5E4101B36E10000000000000001.m_1 - NCBI-SID: - - CC95F5E4101B36E1_0000SID - Referrer-Policy: - - origin-when-cross-origin - Server: - - Apache - Set-Cookie: - - ncbi_sid=CC95F5E4101B36E1_0000SID; domain=.nih.gov; path=/; expires=Thu, 28 - Jul 2022 19:43:42 GMT - SraNameServerOutputVersion: - - '2.0' - Strict-Transport-Security: - - max-age=31536000; includeSubDomains; preload - Transfer-Encoding: - - chunked - Vary: - - Accept-Encoding - X-UA-Compatible: - - IE=Edge - X-XSS-Protection: - - 1; mode=block - status: - code: 200 - message: OK - request: body: null headers: @@ -2765,29 +2327,27 @@ interactions: Connection: - keep-alive User-Agent: - - python-requests/2.25.1 + - python-requests/2.30.0 method: GET uri: https://www.ebi.ac.uk/ena/portal/api/filereport?accession=SRR5818005&result=read_run response: body: - string: "run_accession\tfastq_ftp\tfastq_bytes\tfastq_md5\tsubmitted_ftp\tsubmitted_bytes\tsubmitted_md5\tsra_ftp\tsra_bytes\tsra_md5\nSRR5818005\tftp.sra.ebi.ac.uk/vol1/fastq/SRR581/005/SRR5818005/SRR5818005.fastq.gz\t686245154\t5ce51c7ad9cacdab4fb9f3961373eb99\t\t\t\t\t\t\n" + string: "run_accession\tfastq_ftp\tfastq_bytes\tfastq_md5\tbam_ftp\tbam_bytes\tbam_md5\tsubmitted_ftp\tsubmitted_bytes\tsubmitted_md5\tsra_ftp\tsra_bytes\tsra_md5\nSRR5818005\tftp.sra.ebi.ac.uk/vol1/fastq/SRR581/005/SRR5818005/SRR5818005.fastq.gz\t686245154\t5ce51c7ad9cacdab4fb9f3961373eb99\t\t\t\t\t\t\tftp.sra.ebi.ac.uk/vol1/srr/SRR581/005/SRR5818005\t494652534\ta0f3c6969d3416d4055e7196d6130d5d\n" headers: Cache-Control: - no-cache, no-store, max-age=0, must-revalidate + Content-Length: + - '365' Content-Type: - text/plain Date: - - Wed, 28 Jul 2021 19:43:43 GMT + - Wed, 17 May 2023 18:37:05 GMT Expires: - '0' Pragma: - no-cache - Server: - - Apache-Coyote/1.1 Strict-Transport-Security: - max-age=0 - Transfer-Encoding: - - chunked X-Content-Type-Options: - nosniff X-Frame-Options: @@ -2796,7 +2356,7 @@ interactions: - 1; mode=block status: code: 200 - message: OK + message: '' - request: body: null headers: @@ -2807,7 +2367,7 @@ interactions: Connection: - keep-alive User-Agent: - - python-requests/2.25.1 + - python-requests/2.30.0 method: GET uri: https://www.ebi.ac.uk/ena/browser/api/xml/SRR5818006 response: @@ -2848,7 +2408,7 @@ interactions: Content-Type: - application/xml Date: - - Wed, 28 Jul 2021 19:43:44 GMT + - Wed, 17 May 2023 18:37:05 GMT Strict-Transport-Security: - max-age=0 Transfer-Encoding: @@ -2866,7 +2426,7 @@ interactions: Connection: - keep-alive User-Agent: - - python-requests/2.25.1 + - python-requests/2.30.0 method: GET uri: https://www.ebi.ac.uk/ena/browser/api/xml/SRX2996259 response: @@ -2923,7 +2483,7 @@ interactions: Content-Type: - application/xml Date: - - Wed, 28 Jul 2021 19:43:44 GMT + - Wed, 17 May 2023 18:37:05 GMT Strict-Transport-Security: - max-age=0 Transfer-Encoding: @@ -2941,54 +2501,40 @@ interactions: Connection: - keep-alive User-Agent: - - python-requests/2.25.1 + - python-requests/2.30.0 method: GET uri: https://www.ebi.ac.uk/ena/browser/api/xml/SRS2347492 response: body: string: "\n\n\n \n SRS2347492\n - \ SAMN07343033\n - \ GSM2700327\n GSM2700327\n \n wt1aGFP_1_pos\n - \ \n 7955\n Danio - rerio\n zebrafish\n - \ \n \n \n \n - \ ENA-STUDY\n SRP111553\n - \ \n \n \n - \ \n ENA-EXPERIMENT\n - \ SRX2996259\n \n \n - \ \n \n ENA-RUN\n - \ SRR5818006-SRR5818007\n \n - \ \n \n \n - \ ENA-SUBMISSION\n SRA585736\n - \ \n \n \n - \ \n ARRAYEXPRESS\n E-GEOD-101204\n - \ \n \n \n - \ \n ENA-FASTQ-FILES\n - \ \n - \ \n \n \n - \ \n ENA-SUBMITTED-FILES\n - \ \n - \ \n \n \n - \ \n \n source_name\n + alias=\"GSM2700327\" center_name=\"Bioinformatics Unit, CNIC\" broker_name=\"NCBI\">\n + \ \n SRS2347492\n SAMN07343033\n GSM2700327\n \n + \ wt1aGFP_1_pos\n \n 7955\n + \ Danio rerio\n zebrafish\n + \ \n \n \n \n + \ ENA-FASTQ-FILES\n \n + \ \n \n \n \n + \ ENA-SUBMITTED-FILES\n \n + \ \n \n\n\n + \ \n INSDC secondary accession\n + \ SRS2347492\n \n + \ \n organism\n Danio + rerio\n \n \n + \ pool\n 1\n \n + \ \n cell type\n wt1a+\n + \ \n \n source_name\n \ Heart\n \n \n - \ cell type\n wt1a+\n - \ \n \n pool\n - \ 1\n \n \n - \ ENA-SPOT-COUNT\n 24149372\n - \ \n \n ENA-BASE-COUNT\n - \ 1473111692\n \n - \ \n ENA-FIRST-PUBLIC\n - \ 2018-03-23\n \n - \ \n ENA-LAST-UPDATE\n - \ 2018-04-04\n \n + \ BioSampleModel\n Generic\n + \ \n \n ENA-FIRST-PUBLIC\n + \ 2018-03-22\n \n \ \n\n\n" headers: Content-Type: - application/xml Date: - - Wed, 28 Jul 2021 19:43:45 GMT + - Wed, 17 May 2023 18:37:05 GMT Strict-Transport-Security: - max-age=0 Transfer-Encoding: @@ -3006,7 +2552,7 @@ interactions: Connection: - keep-alive User-Agent: - - python-requests/2.25.1 + - python-requests/2.30.0 method: GET uri: https://www.ebi.ac.uk/ena/browser/api/xml/SRP111553 response: @@ -3054,7 +2600,7 @@ interactions: Content-Type: - application/xml Date: - - Wed, 28 Jul 2021 19:43:45 GMT + - Wed, 17 May 2023 18:37:06 GMT Strict-Transport-Security: - max-age=0 Transfer-Encoding: @@ -3072,7 +2618,7 @@ interactions: Connection: - keep-alive User-Agent: - - python-requests/2.25.1 + - python-requests/2.30.0 method: GET uri: https://www.ebi.ac.uk/ena/browser/api/xml/SRA585736 response: @@ -3109,7 +2655,7 @@ interactions: Content-Type: - application/xml Date: - - Wed, 28 Jul 2021 19:43:46 GMT + - Wed, 17 May 2023 18:37:06 GMT Strict-Transport-Security: - max-age=0 Transfer-Encoding: @@ -3117,68 +2663,6 @@ interactions: status: code: 200 message: '' -- request: - body: acc=SRR5818006&accept-proto=fasp&version=2.0 - headers: - Accept: - - '*/*' - Accept-Encoding: - - gzip, deflate - Connection: - - keep-alive - Content-Length: - - '44' - User-Agent: - - python-requests/2.25.1 - method: POST - uri: https://www.ncbi.nlm.nih.gov/Traces/names/names.cgi - response: - body: - string: !!binary | - H4sIAAAAAAAAAwzIsQ7CIBAA0L1fQeLQqeYOehT6EybVyQ0opBoiTcEYk/t4feM7yTN09XD72/N1 - WcigAdA8SrKWFBBLwGmAaUC8SZyVmknfWRuwoH1Y0aNOFElK5RQYh0kZmhwzjwB8eeWv6LfW9tqL - /SithJLFowqXc/nEVaRyiLb9o/hnDK37AQAA//8DAJv5LpqOAAAA - headers: - Cache-Control: - - private - Connection: - - Keep-Alive - Content-Encoding: - - gzip - Content-Security-Policy: - - upgrade-insecure-requests - Content-Type: - - text/plain - Date: - - Wed, 28 Jul 2021 19:43:47 GMT - Keep-Alive: - - timeout=1, max=10 - NCBI-PHID: - - C7A42429101B37310000000000000001.m_1 - NCBI-SID: - - C7A42429101B3731_0000SID - Referrer-Policy: - - origin-when-cross-origin - Server: - - Apache - Set-Cookie: - - ncbi_sid=C7A42429101B3731_0000SID; domain=.nih.gov; path=/; expires=Thu, 28 - Jul 2022 19:43:47 GMT - SraNameServerOutputVersion: - - '2.0' - Strict-Transport-Security: - - max-age=31536000; includeSubDomains; preload - Transfer-Encoding: - - chunked - Vary: - - Accept-Encoding - X-UA-Compatible: - - IE=Edge - X-XSS-Protection: - - 1; mode=block - status: - code: 200 - message: OK - request: body: null headers: @@ -3189,29 +2673,27 @@ interactions: Connection: - keep-alive User-Agent: - - python-requests/2.25.1 + - python-requests/2.30.0 method: GET uri: https://www.ebi.ac.uk/ena/portal/api/filereport?accession=SRR5818006&result=read_run response: body: - string: "run_accession\tfastq_ftp\tfastq_bytes\tfastq_md5\tsubmitted_ftp\tsubmitted_bytes\tsubmitted_md5\tsra_ftp\tsra_bytes\tsra_md5\nSRR5818006\tftp.sra.ebi.ac.uk/vol1/fastq/SRR581/006/SRR5818006/SRR5818006.fastq.gz\t625431044\te487dc5e2399d2144ad35a0fa0b126bc\t\t\t\t\t\t\n" + string: "run_accession\tfastq_ftp\tfastq_bytes\tfastq_md5\tbam_ftp\tbam_bytes\tbam_md5\tsubmitted_ftp\tsubmitted_bytes\tsubmitted_md5\tsra_ftp\tsra_bytes\tsra_md5\nSRR5818006\tftp.sra.ebi.ac.uk/vol1/fastq/SRR581/006/SRR5818006/SRR5818006.fastq.gz\t625431044\te487dc5e2399d2144ad35a0fa0b126bc\t\t\t\t\t\t\tftp.sra.ebi.ac.uk/vol1/srr/SRR581/006/SRR5818006\t425995305\t680906bcd1b16f5e5223a308a1f3857a\n" headers: Cache-Control: - no-cache, no-store, max-age=0, must-revalidate + Content-Length: + - '365' Content-Type: - text/plain Date: - - Wed, 28 Jul 2021 19:43:47 GMT + - Wed, 17 May 2023 18:37:06 GMT Expires: - '0' Pragma: - no-cache - Server: - - Apache-Coyote/1.1 Strict-Transport-Security: - max-age=0 - Transfer-Encoding: - - chunked X-Content-Type-Options: - nosniff X-Frame-Options: @@ -3220,7 +2702,7 @@ interactions: - 1; mode=block status: code: 200 - message: OK + message: '' - request: body: null headers: @@ -3231,7 +2713,7 @@ interactions: Connection: - keep-alive User-Agent: - - python-requests/2.25.1 + - python-requests/2.30.0 method: GET uri: https://www.ebi.ac.uk/ena/browser/api/xml/SRR5818007 response: @@ -3272,7 +2754,7 @@ interactions: Content-Type: - application/xml Date: - - Wed, 28 Jul 2021 19:43:48 GMT + - Wed, 17 May 2023 18:37:07 GMT Strict-Transport-Security: - max-age=0 Transfer-Encoding: @@ -3290,7 +2772,7 @@ interactions: Connection: - keep-alive User-Agent: - - python-requests/2.25.1 + - python-requests/2.30.0 method: GET uri: https://www.ebi.ac.uk/ena/browser/api/xml/SRX2996259 response: @@ -3347,7 +2829,7 @@ interactions: Content-Type: - application/xml Date: - - Wed, 28 Jul 2021 19:43:49 GMT + - Wed, 17 May 2023 18:37:07 GMT Strict-Transport-Security: - max-age=0 Transfer-Encoding: @@ -3365,54 +2847,40 @@ interactions: Connection: - keep-alive User-Agent: - - python-requests/2.25.1 + - python-requests/2.30.0 method: GET uri: https://www.ebi.ac.uk/ena/browser/api/xml/SRS2347492 response: body: string: "\n\n\n \n SRS2347492\n - \ SAMN07343033\n - \ GSM2700327\n GSM2700327\n \n wt1aGFP_1_pos\n - \ \n 7955\n Danio - rerio\n zebrafish\n - \ \n \n \n \n - \ ENA-STUDY\n SRP111553\n - \ \n \n \n - \ \n ENA-EXPERIMENT\n - \ SRX2996259\n \n \n - \ \n \n ENA-RUN\n - \ SRR5818006-SRR5818007\n \n - \ \n \n \n - \ ENA-SUBMISSION\n SRA585736\n - \ \n \n \n - \ \n ARRAYEXPRESS\n E-GEOD-101204\n - \ \n \n \n - \ \n ENA-FASTQ-FILES\n - \ \n - \ \n \n \n - \ \n ENA-SUBMITTED-FILES\n - \ \n - \ \n \n \n - \ \n \n source_name\n + alias=\"GSM2700327\" center_name=\"Bioinformatics Unit, CNIC\" broker_name=\"NCBI\">\n + \ \n SRS2347492\n SAMN07343033\n GSM2700327\n \n + \ wt1aGFP_1_pos\n \n 7955\n + \ Danio rerio\n zebrafish\n + \ \n \n \n \n + \ ENA-FASTQ-FILES\n \n + \ \n \n \n \n + \ ENA-SUBMITTED-FILES\n \n + \ \n \n\n\n + \ \n INSDC secondary accession\n + \ SRS2347492\n \n + \ \n organism\n Danio + rerio\n \n \n + \ pool\n 1\n \n + \ \n cell type\n wt1a+\n + \ \n \n source_name\n \ Heart\n \n \n - \ cell type\n wt1a+\n - \ \n \n pool\n - \ 1\n \n \n - \ ENA-SPOT-COUNT\n 24149372\n - \ \n \n ENA-BASE-COUNT\n - \ 1473111692\n \n - \ \n ENA-FIRST-PUBLIC\n - \ 2018-03-23\n \n - \ \n ENA-LAST-UPDATE\n - \ 2018-04-04\n \n + \ BioSampleModel\n Generic\n + \ \n \n ENA-FIRST-PUBLIC\n + \ 2018-03-22\n \n \ \n\n\n" headers: Content-Type: - application/xml Date: - - Wed, 28 Jul 2021 19:43:50 GMT + - Wed, 17 May 2023 18:37:07 GMT Strict-Transport-Security: - max-age=0 Transfer-Encoding: @@ -3430,7 +2898,7 @@ interactions: Connection: - keep-alive User-Agent: - - python-requests/2.25.1 + - python-requests/2.30.0 method: GET uri: https://www.ebi.ac.uk/ena/browser/api/xml/SRP111553 response: @@ -3478,7 +2946,7 @@ interactions: Content-Type: - application/xml Date: - - Wed, 28 Jul 2021 19:43:50 GMT + - Wed, 17 May 2023 18:37:09 GMT Strict-Transport-Security: - max-age=0 Transfer-Encoding: @@ -3496,7 +2964,7 @@ interactions: Connection: - keep-alive User-Agent: - - python-requests/2.25.1 + - python-requests/2.30.0 method: GET uri: https://www.ebi.ac.uk/ena/browser/api/xml/SRA585736 response: @@ -3533,7 +3001,7 @@ interactions: Content-Type: - application/xml Date: - - Wed, 28 Jul 2021 19:43:51 GMT + - Wed, 17 May 2023 18:37:08 GMT Strict-Transport-Security: - max-age=0 Transfer-Encoding: @@ -3541,68 +3009,6 @@ interactions: status: code: 200 message: '' -- request: - body: acc=SRR5818007&accept-proto=fasp&version=2.0 - headers: - Accept: - - '*/*' - Accept-Encoding: - - gzip, deflate - Connection: - - keep-alive - Content-Length: - - '44' - User-Agent: - - python-requests/2.25.1 - method: POST - uri: https://www.ncbi.nlm.nih.gov/Traces/names/names.cgi - response: - body: - string: !!binary | - H4sIAAAAAAAAAwzISwrDIBAA0H1OIXSRVcr4mai5RCHtqjs1SlokSmIphTl885bvIq7QHburH0/3 - eUbDDYAmJUd7EkACuB5AD5w/BJ8kn9A+yUtUaJLyUkShk0Qc0+K8dWiTDc4QkQKg25Z/rF9bq0fP - 6l5aCSWz18FczuUbF5bKztp6RvHvGFr3BwAA//8DAAfy9XmOAAAA - headers: - Cache-Control: - - private - Connection: - - Keep-Alive - Content-Encoding: - - gzip - Content-Security-Policy: - - upgrade-insecure-requests - Content-Type: - - text/plain - Date: - - Wed, 28 Jul 2021 19:43:51 GMT - Keep-Alive: - - timeout=1, max=10 - NCBI-PHID: - - CC95F61E101B37710000000000000001.m_1 - NCBI-SID: - - CC95F61E101B3771_0000SID - Referrer-Policy: - - origin-when-cross-origin - Server: - - Apache - Set-Cookie: - - ncbi_sid=CC95F61E101B3771_0000SID; domain=.nih.gov; path=/; expires=Thu, 28 - Jul 2022 19:43:51 GMT - SraNameServerOutputVersion: - - '2.0' - Strict-Transport-Security: - - max-age=31536000; includeSubDomains; preload - Transfer-Encoding: - - chunked - Vary: - - Accept-Encoding - X-UA-Compatible: - - IE=Edge - X-XSS-Protection: - - 1; mode=block - status: - code: 200 - message: OK - request: body: null headers: @@ -3613,29 +3019,27 @@ interactions: Connection: - keep-alive User-Agent: - - python-requests/2.25.1 + - python-requests/2.30.0 method: GET uri: https://www.ebi.ac.uk/ena/portal/api/filereport?accession=SRR5818007&result=read_run response: body: - string: "run_accession\tfastq_ftp\tfastq_bytes\tfastq_md5\tsubmitted_ftp\tsubmitted_bytes\tsubmitted_md5\tsra_ftp\tsra_bytes\tsra_md5\nSRR5818007\tftp.sra.ebi.ac.uk/vol1/fastq/SRR581/007/SRR5818007/SRR5818007.fastq.gz\t640925564\tadff66451ac81a93ba08a067ea78e492\t\t\t\t\t\t\n" + string: "run_accession\tfastq_ftp\tfastq_bytes\tfastq_md5\tbam_ftp\tbam_bytes\tbam_md5\tsubmitted_ftp\tsubmitted_bytes\tsubmitted_md5\tsra_ftp\tsra_bytes\tsra_md5\nSRR5818007\tftp.sra.ebi.ac.uk/vol1/fastq/SRR581/007/SRR5818007/SRR5818007.fastq.gz\t640925564\tadff66451ac81a93ba08a067ea78e492\t\t\t\t\t\t\tftp.sra.ebi.ac.uk/vol1/srr/SRR581/007/SRR5818007\t436999920\tb35458f4b32e27f3556fdab9a59f9ca8\n" headers: Cache-Control: - no-cache, no-store, max-age=0, must-revalidate + Content-Length: + - '365' Content-Type: - text/plain Date: - - Wed, 28 Jul 2021 19:43:52 GMT + - Wed, 17 May 2023 18:37:08 GMT Expires: - '0' Pragma: - no-cache - Server: - - Apache-Coyote/1.1 Strict-Transport-Security: - max-age=0 - Transfer-Encoding: - - chunked X-Content-Type-Options: - nosniff X-Frame-Options: @@ -3644,7 +3048,7 @@ interactions: - 1; mode=block status: code: 200 - message: OK + message: '' - request: body: null headers: @@ -3655,7 +3059,7 @@ interactions: Connection: - keep-alive User-Agent: - - python-requests/2.25.1 + - python-requests/2.30.0 method: GET uri: https://www.ebi.ac.uk/ena/browser/api/xml/SRR5818008 response: @@ -3696,7 +3100,7 @@ interactions: Content-Type: - application/xml Date: - - Wed, 28 Jul 2021 19:43:53 GMT + - Wed, 17 May 2023 18:37:10 GMT Strict-Transport-Security: - max-age=0 Transfer-Encoding: @@ -3714,7 +3118,7 @@ interactions: Connection: - keep-alive User-Agent: - - python-requests/2.25.1 + - python-requests/2.30.0 method: GET uri: https://www.ebi.ac.uk/ena/browser/api/xml/SRX2996260 response: @@ -3771,7 +3175,7 @@ interactions: Content-Type: - application/xml Date: - - Wed, 28 Jul 2021 19:43:53 GMT + - Wed, 17 May 2023 18:37:10 GMT Strict-Transport-Security: - max-age=0 Transfer-Encoding: @@ -3789,54 +3193,40 @@ interactions: Connection: - keep-alive User-Agent: - - python-requests/2.25.1 + - python-requests/2.30.0 method: GET uri: https://www.ebi.ac.uk/ena/browser/api/xml/SRS2347491 response: body: string: "\n\n\n \n SRS2347491\n - \ SAMN07343032\n - \ GSM2700328\n GSM2700328\n \n wt1aGFP_2_neg\n - \ \n 7955\n Danio - rerio\n zebrafish\n - \ \n \n \n \n - \ ENA-STUDY\n SRP111553\n - \ \n \n \n - \ \n ENA-EXPERIMENT\n - \ SRX2996260\n \n \n - \ \n \n ENA-RUN\n - \ SRR5818008-SRR5818009\n \n - \ \n \n \n - \ ENA-SUBMISSION\n SRA585736\n - \ \n \n \n - \ \n ARRAYEXPRESS\n E-GEOD-101204\n - \ \n \n \n - \ \n ENA-FASTQ-FILES\n - \ \n - \ \n \n \n - \ \n ENA-SUBMITTED-FILES\n - \ \n - \ \n \n \n - \ \n \n source_name\n + alias=\"GSM2700328\" center_name=\"Bioinformatics Unit, CNIC\" broker_name=\"NCBI\">\n + \ \n SRS2347491\n SAMN07343032\n GSM2700328\n \n + \ wt1aGFP_2_neg\n \n 7955\n + \ Danio rerio\n zebrafish\n + \ \n \n \n \n + \ ENA-FASTQ-FILES\n \n + \ \n \n \n \n + \ ENA-SUBMITTED-FILES\n \n + \ \n \n\n\n + \ \n INSDC secondary accession\n + \ SRS2347491\n \n + \ \n organism\n Danio + rerio\n \n \n + \ pool\n 2\n \n + \ \n cell type\n wt1a-\n + \ \n \n source_name\n \ Heart\n \n \n - \ cell type\n wt1a-\n - \ \n \n pool\n - \ 2\n \n \n - \ ENA-SPOT-COUNT\n 22896376\n - \ \n \n ENA-BASE-COUNT\n - \ 1396678936\n \n - \ \n ENA-FIRST-PUBLIC\n - \ 2018-03-23\n \n - \ \n ENA-LAST-UPDATE\n - \ 2018-04-04\n \n + \ BioSampleModel\n Generic\n + \ \n \n ENA-FIRST-PUBLIC\n + \ 2018-03-22\n \n \ \n\n\n" headers: Content-Type: - application/xml Date: - - Wed, 28 Jul 2021 19:43:54 GMT + - Wed, 17 May 2023 18:37:10 GMT Strict-Transport-Security: - max-age=0 Transfer-Encoding: @@ -3854,7 +3244,7 @@ interactions: Connection: - keep-alive User-Agent: - - python-requests/2.25.1 + - python-requests/2.30.0 method: GET uri: https://www.ebi.ac.uk/ena/browser/api/xml/SRP111553 response: @@ -3902,7 +3292,7 @@ interactions: Content-Type: - application/xml Date: - - Wed, 28 Jul 2021 19:43:54 GMT + - Wed, 17 May 2023 18:37:11 GMT Strict-Transport-Security: - max-age=0 Transfer-Encoding: @@ -3920,7 +3310,7 @@ interactions: Connection: - keep-alive User-Agent: - - python-requests/2.25.1 + - python-requests/2.30.0 method: GET uri: https://www.ebi.ac.uk/ena/browser/api/xml/SRA585736 response: @@ -3957,7 +3347,7 @@ interactions: Content-Type: - application/xml Date: - - Wed, 28 Jul 2021 19:43:55 GMT + - Wed, 17 May 2023 18:37:11 GMT Strict-Transport-Security: - max-age=0 Transfer-Encoding: @@ -3966,7 +3356,7 @@ interactions: code: 200 message: '' - request: - body: acc=SRR5818008&accept-proto=fasp&version=2.0 + body: null headers: Accept: - '*/*' @@ -3974,92 +3364,28 @@ interactions: - gzip, deflate Connection: - keep-alive - Content-Length: - - '44' User-Agent: - - python-requests/2.25.1 - method: POST - uri: https://www.ncbi.nlm.nih.gov/Traces/names/names.cgi + - python-requests/2.30.0 + method: GET + uri: https://www.ebi.ac.uk/ena/portal/api/filereport?accession=SRR5818008&result=read_run response: body: - string: !!binary | - H4sIAAAAAAAAAwzMOwrCQBAA0D6nWLBIFZmZ7GfMJYRoZbeTD1EWNyQrIszhTfuKd6IzVPsW14/o - re8dIwOwWmg944WdEmBoIDSId8Kuxc76h0JsJYgQkhMmS+LGOXg7I4uLNnjVYwC9vtPP1Esp616b - dcslDzmZ525iSvk7jWbOmynLAVle01CqPwAAAP//AwBuHZzBjgAAAA== + string: "run_accession\tfastq_ftp\tfastq_bytes\tfastq_md5\tbam_ftp\tbam_bytes\tbam_md5\tsubmitted_ftp\tsubmitted_bytes\tsubmitted_md5\tsra_ftp\tsra_bytes\tsra_md5\nSRR5818008\tftp.sra.ebi.ac.uk/vol1/fastq/SRR581/008/SRR5818008/SRR5818008.fastq.gz\t560733863\t3d0e7b490a27a68b25c95af49f959a88\t\t\t\t\t\t\tftp.sra.ebi.ac.uk/vol1/srr/SRR581/008/SRR5818008\t403681985\t0a3b7bb2125b8242b5df764f18b5a476\n" headers: Cache-Control: - - private - Connection: - - Keep-Alive - Content-Encoding: - - gzip - Content-Security-Policy: - - upgrade-insecure-requests + - no-cache, no-store, max-age=0, must-revalidate + Content-Length: + - '365' Content-Type: - text/plain Date: - - Wed, 28 Jul 2021 19:44:01 GMT - Keep-Alive: - - timeout=1, max=10 - NCBI-PHID: - - C7A4248D101B38110000000000000001.m_1 - NCBI-SID: - - C7A4248D101B3811_0000SID - Referrer-Policy: - - origin-when-cross-origin - Server: - - Apache - Set-Cookie: - - ncbi_sid=C7A4248D101B3811_0000SID; domain=.nih.gov; path=/; expires=Thu, 28 - Jul 2022 19:44:01 GMT - SraNameServerOutputVersion: - - '2.0' - Strict-Transport-Security: - - max-age=31536000; includeSubDomains; preload - Transfer-Encoding: - - chunked - Vary: - - Accept-Encoding - X-UA-Compatible: - - IE=Edge - X-XSS-Protection: - - 1; mode=block - status: - code: 200 - message: OK -- request: - body: null - headers: - Accept: - - '*/*' - Accept-Encoding: - - gzip, deflate - Connection: - - keep-alive - User-Agent: - - python-requests/2.25.1 - method: GET - uri: https://www.ebi.ac.uk/ena/portal/api/filereport?accession=SRR5818008&result=read_run - response: - body: - string: "run_accession\tfastq_ftp\tfastq_bytes\tfastq_md5\tsubmitted_ftp\tsubmitted_bytes\tsubmitted_md5\tsra_ftp\tsra_bytes\tsra_md5\nSRR5818008\tftp.sra.ebi.ac.uk/vol1/fastq/SRR581/008/SRR5818008/SRR5818008.fastq.gz\t560733863\t3d0e7b490a27a68b25c95af49f959a88\t\t\t\t\t\t\n" - headers: - Cache-Control: - - no-cache, no-store, max-age=0, must-revalidate - Content-Type: - - text/plain - Date: - - Wed, 28 Jul 2021 19:44:01 GMT - Expires: - - '0' - Pragma: - - no-cache - Server: - - Apache-Coyote/1.1 + - Wed, 17 May 2023 18:37:12 GMT + Expires: + - '0' + Pragma: + - no-cache Strict-Transport-Security: - max-age=0 - Transfer-Encoding: - - chunked X-Content-Type-Options: - nosniff X-Frame-Options: @@ -4068,7 +3394,7 @@ interactions: - 1; mode=block status: code: 200 - message: OK + message: '' - request: body: null headers: @@ -4079,7 +3405,7 @@ interactions: Connection: - keep-alive User-Agent: - - python-requests/2.25.1 + - python-requests/2.30.0 method: GET uri: https://www.ebi.ac.uk/ena/browser/api/xml/SRR5818009 response: @@ -4120,7 +3446,7 @@ interactions: Content-Type: - application/xml Date: - - Wed, 28 Jul 2021 19:44:02 GMT + - Wed, 17 May 2023 18:37:12 GMT Strict-Transport-Security: - max-age=0 Transfer-Encoding: @@ -4138,7 +3464,7 @@ interactions: Connection: - keep-alive User-Agent: - - python-requests/2.25.1 + - python-requests/2.30.0 method: GET uri: https://www.ebi.ac.uk/ena/browser/api/xml/SRX2996260 response: @@ -4195,7 +3521,7 @@ interactions: Content-Type: - application/xml Date: - - Wed, 28 Jul 2021 19:44:02 GMT + - Wed, 17 May 2023 18:37:12 GMT Strict-Transport-Security: - max-age=0 Transfer-Encoding: @@ -4213,54 +3539,40 @@ interactions: Connection: - keep-alive User-Agent: - - python-requests/2.25.1 + - python-requests/2.30.0 method: GET uri: https://www.ebi.ac.uk/ena/browser/api/xml/SRS2347491 response: body: string: "\n\n\n \n SRS2347491\n - \ SAMN07343032\n - \ GSM2700328\n GSM2700328\n \n wt1aGFP_2_neg\n - \ \n 7955\n Danio - rerio\n zebrafish\n - \ \n \n \n \n - \ ENA-STUDY\n SRP111553\n - \ \n \n \n - \ \n ENA-EXPERIMENT\n - \ SRX2996260\n \n \n - \ \n \n ENA-RUN\n - \ SRR5818008-SRR5818009\n \n - \ \n \n \n - \ ENA-SUBMISSION\n SRA585736\n - \ \n \n \n - \ \n ARRAYEXPRESS\n E-GEOD-101204\n - \ \n \n \n - \ \n ENA-FASTQ-FILES\n - \ \n - \ \n \n \n - \ \n ENA-SUBMITTED-FILES\n - \ \n - \ \n \n \n - \ \n \n source_name\n + alias=\"GSM2700328\" center_name=\"Bioinformatics Unit, CNIC\" broker_name=\"NCBI\">\n + \ \n SRS2347491\n SAMN07343032\n GSM2700328\n \n + \ wt1aGFP_2_neg\n \n 7955\n + \ Danio rerio\n zebrafish\n + \ \n \n \n \n + \ ENA-FASTQ-FILES\n \n + \ \n \n \n \n + \ ENA-SUBMITTED-FILES\n \n + \ \n \n\n\n + \ \n INSDC secondary accession\n + \ SRS2347491\n \n + \ \n organism\n Danio + rerio\n \n \n + \ pool\n 2\n \n + \ \n cell type\n wt1a-\n + \ \n \n source_name\n \ Heart\n \n \n - \ cell type\n wt1a-\n - \ \n \n pool\n - \ 2\n \n \n - \ ENA-SPOT-COUNT\n 22896376\n - \ \n \n ENA-BASE-COUNT\n - \ 1396678936\n \n - \ \n ENA-FIRST-PUBLIC\n - \ 2018-03-23\n \n - \ \n ENA-LAST-UPDATE\n - \ 2018-04-04\n \n + \ BioSampleModel\n Generic\n + \ \n \n ENA-FIRST-PUBLIC\n + \ 2018-03-22\n \n \ \n\n\n" headers: Content-Type: - application/xml Date: - - Wed, 28 Jul 2021 19:44:03 GMT + - Wed, 17 May 2023 18:37:12 GMT Strict-Transport-Security: - max-age=0 Transfer-Encoding: @@ -4278,7 +3590,7 @@ interactions: Connection: - keep-alive User-Agent: - - python-requests/2.25.1 + - python-requests/2.30.0 method: GET uri: https://www.ebi.ac.uk/ena/browser/api/xml/SRP111553 response: @@ -4326,7 +3638,7 @@ interactions: Content-Type: - application/xml Date: - - Wed, 28 Jul 2021 19:44:09 GMT + - Wed, 17 May 2023 18:37:13 GMT Strict-Transport-Security: - max-age=0 Transfer-Encoding: @@ -4344,7 +3656,7 @@ interactions: Connection: - keep-alive User-Agent: - - python-requests/2.25.1 + - python-requests/2.30.0 method: GET uri: https://www.ebi.ac.uk/ena/browser/api/xml/SRA585736 response: @@ -4381,7 +3693,7 @@ interactions: Content-Type: - application/xml Date: - - Wed, 28 Jul 2021 19:44:09 GMT + - Wed, 17 May 2023 18:37:13 GMT Strict-Transport-Security: - max-age=0 Transfer-Encoding: @@ -4389,68 +3701,6 @@ interactions: status: code: 200 message: '' -- request: - body: acc=SRR5818009&accept-proto=fasp&version=2.0 - headers: - Accept: - - '*/*' - Accept-Encoding: - - gzip, deflate - Connection: - - keep-alive - Content-Length: - - '44' - User-Agent: - - python-requests/2.25.1 - method: POST - uri: https://www.ncbi.nlm.nih.gov/Traces/names/names.cgi - response: - body: - string: !!binary | - H4sIAAAAAAAAAwzIwQrCMAwA0LtfUfCw0yRJ26zbTwjTk7dmrkwpdmwVEfLx+o7vSCc47Ftc36KX - cfQBA0CvDi16YNcrAXYtdC3ilXCwdnB8U0YvKUZiGyUESj0TBSteeE5OgFXVAej5lb+mWWpd98as - W6llKtk8dhNzLp/5blLZTF3+UeQ5T/XwAwAA//8DAFjevJKOAAAA - headers: - Cache-Control: - - private - Connection: - - Keep-Alive - Content-Encoding: - - gzip - Content-Security-Policy: - - upgrade-insecure-requests - Content-Type: - - text/plain - Date: - - Wed, 28 Jul 2021 19:44:10 GMT - Keep-Alive: - - timeout=1, max=10 - NCBI-PHID: - - C7A42541101B38A10000000000000001.m_1 - NCBI-SID: - - C7A42541101B38A1_0000SID - Referrer-Policy: - - origin-when-cross-origin - Server: - - Apache - Set-Cookie: - - ncbi_sid=C7A42541101B38A1_0000SID; domain=.nih.gov; path=/; expires=Thu, 28 - Jul 2022 19:44:10 GMT - SraNameServerOutputVersion: - - '2.0' - Strict-Transport-Security: - - max-age=31536000; includeSubDomains; preload - Transfer-Encoding: - - chunked - Vary: - - Accept-Encoding - X-UA-Compatible: - - IE=Edge - X-XSS-Protection: - - 1; mode=block - status: - code: 200 - message: OK - request: body: null headers: @@ -4461,29 +3711,27 @@ interactions: Connection: - keep-alive User-Agent: - - python-requests/2.25.1 + - python-requests/2.30.0 method: GET uri: https://www.ebi.ac.uk/ena/portal/api/filereport?accession=SRR5818009&result=read_run response: body: - string: "run_accession\tfastq_ftp\tfastq_bytes\tfastq_md5\tsubmitted_ftp\tsubmitted_bytes\tsubmitted_md5\tsra_ftp\tsra_bytes\tsra_md5\nSRR5818009\tftp.sra.ebi.ac.uk/vol1/fastq/SRR581/009/SRR5818009/SRR5818009.fastq.gz\t573562587\t8a669d361beb0a193e85aec0e2c63792\t\t\t\t\t\t\n" + string: "run_accession\tfastq_ftp\tfastq_bytes\tfastq_md5\tbam_ftp\tbam_bytes\tbam_md5\tsubmitted_ftp\tsubmitted_bytes\tsubmitted_md5\tsra_ftp\tsra_bytes\tsra_md5\nSRR5818009\tftp.sra.ebi.ac.uk/vol1/fastq/SRR581/009/SRR5818009/SRR5818009.fastq.gz\t573562587\t8a669d361beb0a193e85aec0e2c63792\t\t\t\t\t\t\tftp.sra.ebi.ac.uk/vol1/srr/SRR581/009/SRR5818009\t413150649\t615bfaa263ab882f962283b5b6ef4b06\n" headers: Cache-Control: - no-cache, no-store, max-age=0, must-revalidate + Content-Length: + - '365' Content-Type: - text/plain Date: - - Wed, 28 Jul 2021 19:44:11 GMT + - Wed, 17 May 2023 18:37:14 GMT Expires: - '0' Pragma: - no-cache - Server: - - Apache-Coyote/1.1 Strict-Transport-Security: - max-age=0 - Transfer-Encoding: - - chunked X-Content-Type-Options: - nosniff X-Frame-Options: @@ -4492,7 +3740,7 @@ interactions: - 1; mode=block status: code: 200 - message: OK + message: '' - request: body: null headers: @@ -4503,7 +3751,7 @@ interactions: Connection: - keep-alive User-Agent: - - python-requests/2.25.1 + - python-requests/2.30.0 method: GET uri: https://www.ebi.ac.uk/ena/browser/api/xml/SRR5818010 response: @@ -4544,7 +3792,7 @@ interactions: Content-Type: - application/xml Date: - - Wed, 28 Jul 2021 19:44:11 GMT + - Wed, 17 May 2023 18:37:14 GMT Strict-Transport-Security: - max-age=0 Transfer-Encoding: @@ -4562,7 +3810,7 @@ interactions: Connection: - keep-alive User-Agent: - - python-requests/2.25.1 + - python-requests/2.30.0 method: GET uri: https://www.ebi.ac.uk/ena/browser/api/xml/SRX2996261 response: @@ -4619,7 +3867,7 @@ interactions: Content-Type: - application/xml Date: - - Wed, 28 Jul 2021 19:44:11 GMT + - Wed, 17 May 2023 18:37:14 GMT Strict-Transport-Security: - max-age=0 Transfer-Encoding: @@ -4637,54 +3885,40 @@ interactions: Connection: - keep-alive User-Agent: - - python-requests/2.25.1 + - python-requests/2.30.0 method: GET uri: https://www.ebi.ac.uk/ena/browser/api/xml/SRS2347493 response: body: string: "\n\n\n \n SRS2347493\n - \ SAMN07343031\n - \ GSM2700329\n GSM2700329\n \n wt1aGFP_2_pos\n - \ \n 7955\n Danio - rerio\n zebrafish\n - \ \n \n \n \n - \ ENA-STUDY\n SRP111553\n - \ \n \n \n - \ \n ENA-EXPERIMENT\n - \ SRX2996261\n \n \n - \ \n \n ENA-RUN\n - \ SRR5818010-SRR5818011\n \n - \ \n \n \n - \ ENA-SUBMISSION\n SRA585736\n - \ \n \n \n - \ \n ARRAYEXPRESS\n E-GEOD-101204\n - \ \n \n \n - \ \n ENA-FASTQ-FILES\n - \ \n - \ \n \n \n - \ \n ENA-SUBMITTED-FILES\n - \ \n - \ \n \n \n - \ \n \n source_name\n + alias=\"GSM2700329\" center_name=\"Bioinformatics Unit, CNIC\" broker_name=\"NCBI\">\n + \ \n SRS2347493\n SAMN07343031\n GSM2700329\n \n + \ wt1aGFP_2_pos\n \n 7955\n + \ Danio rerio\n zebrafish\n + \ \n \n \n \n + \ ENA-FASTQ-FILES\n \n + \ \n \n \n \n + \ ENA-SUBMITTED-FILES\n \n + \ \n \n\n\n + \ \n INSDC secondary accession\n + \ SRS2347493\n \n + \ \n organism\n Danio + rerio\n \n \n + \ pool\n 2\n \n + \ \n cell type\n wt1a+\n + \ \n \n source_name\n \ Heart\n \n \n - \ cell type\n wt1a+\n - \ \n \n pool\n - \ 2\n \n \n - \ ENA-SPOT-COUNT\n 24971267\n - \ \n \n ENA-BASE-COUNT\n - \ 1523247287\n \n - \ \n ENA-FIRST-PUBLIC\n - \ 2018-03-23\n \n - \ \n ENA-LAST-UPDATE\n - \ 2018-04-04\n \n + \ BioSampleModel\n Generic\n + \ \n \n ENA-FIRST-PUBLIC\n + \ 2018-03-22\n \n \ \n\n\n" headers: Content-Type: - application/xml Date: - - Wed, 28 Jul 2021 19:44:12 GMT + - Wed, 17 May 2023 18:37:14 GMT Strict-Transport-Security: - max-age=0 Transfer-Encoding: @@ -4702,7 +3936,7 @@ interactions: Connection: - keep-alive User-Agent: - - python-requests/2.25.1 + - python-requests/2.30.0 method: GET uri: https://www.ebi.ac.uk/ena/browser/api/xml/SRP111553 response: @@ -4750,7 +3984,7 @@ interactions: Content-Type: - application/xml Date: - - Wed, 28 Jul 2021 19:44:13 GMT + - Wed, 17 May 2023 18:37:15 GMT Strict-Transport-Security: - max-age=0 Transfer-Encoding: @@ -4768,7 +4002,7 @@ interactions: Connection: - keep-alive User-Agent: - - python-requests/2.25.1 + - python-requests/2.30.0 method: GET uri: https://www.ebi.ac.uk/ena/browser/api/xml/SRA585736 response: @@ -4805,7 +4039,7 @@ interactions: Content-Type: - application/xml Date: - - Wed, 28 Jul 2021 19:44:13 GMT + - Wed, 17 May 2023 18:37:15 GMT Strict-Transport-Security: - max-age=0 Transfer-Encoding: @@ -4813,68 +4047,6 @@ interactions: status: code: 200 message: '' -- request: - body: acc=SRR5818010&accept-proto=fasp&version=2.0 - headers: - Accept: - - '*/*' - Accept-Encoding: - - gzip, deflate - Connection: - - keep-alive - Content-Length: - - '44' - User-Agent: - - python-requests/2.25.1 - method: POST - uri: https://www.ncbi.nlm.nih.gov/Traces/names/names.cgi - response: - body: - string: !!binary | - H4sIAAAAAAAAAwzIsQrCMBAA0L1fEXDoVLlLk/TanxCqk1ub5KgSTGgjItzH6xvfSZ+hOfalvFe5 - zrMlJEAQY9ASOWtEAw4dDB3iTePU6wnwLpqC7RlG0wf2wbILMTDxSI6tceRFxADI5ZW+qt1qLUer - yp5r9jmpx6GWlPInBsV5V3X7R16f0dfmBwAA//8DADOotuKOAAAA - headers: - Cache-Control: - - private - Connection: - - Keep-Alive - Content-Encoding: - - gzip - Content-Security-Policy: - - upgrade-insecure-requests - Content-Type: - - text/plain - Date: - - Wed, 28 Jul 2021 19:44:14 GMT - Keep-Alive: - - timeout=1, max=10 - NCBI-PHID: - - CC95F705101B38E10000000000000001.m_1 - NCBI-SID: - - CC95F705101B38E1_0000SID - Referrer-Policy: - - origin-when-cross-origin - Server: - - Apache - Set-Cookie: - - ncbi_sid=CC95F705101B38E1_0000SID; domain=.nih.gov; path=/; expires=Thu, 28 - Jul 2022 19:44:14 GMT - SraNameServerOutputVersion: - - '2.0' - Strict-Transport-Security: - - max-age=31536000; includeSubDomains; preload - Transfer-Encoding: - - chunked - Vary: - - Accept-Encoding - X-UA-Compatible: - - IE=Edge - X-XSS-Protection: - - 1; mode=block - status: - code: 200 - message: OK - request: body: null headers: @@ -4885,29 +4057,27 @@ interactions: Connection: - keep-alive User-Agent: - - python-requests/2.25.1 + - python-requests/2.30.0 method: GET uri: https://www.ebi.ac.uk/ena/portal/api/filereport?accession=SRR5818010&result=read_run response: body: - string: "run_accession\tfastq_ftp\tfastq_bytes\tfastq_md5\tsubmitted_ftp\tsubmitted_bytes\tsubmitted_md5\tsra_ftp\tsra_bytes\tsra_md5\nSRR5818010\tftp.sra.ebi.ac.uk/vol1/fastq/SRR581/000/SRR5818010/SRR5818010.fastq.gz\t648541432\tfc630cc3bad9750ba9269c4c0301b770\t\t\t\t\t\t\n" + string: "run_accession\tfastq_ftp\tfastq_bytes\tfastq_md5\tbam_ftp\tbam_bytes\tbam_md5\tsubmitted_ftp\tsubmitted_bytes\tsubmitted_md5\tsra_ftp\tsra_bytes\tsra_md5\nSRR5818010\tftp.sra.ebi.ac.uk/vol1/fastq/SRR581/000/SRR5818010/SRR5818010.fastq.gz\t648541432\tfc630cc3bad9750ba9269c4c0301b770\t\t\t\t\t\t\tftp.sra.ebi.ac.uk/vol1/srr/SRR581/000/SRR5818010\t441588654\t28d53f0943dfcd5f6dedf8f986f5468c\n" headers: Cache-Control: - no-cache, no-store, max-age=0, must-revalidate + Content-Length: + - '365' Content-Type: - text/plain Date: - - Wed, 28 Jul 2021 19:44:14 GMT + - Wed, 17 May 2023 18:37:16 GMT Expires: - '0' Pragma: - no-cache - Server: - - Apache-Coyote/1.1 Strict-Transport-Security: - max-age=0 - Transfer-Encoding: - - chunked X-Content-Type-Options: - nosniff X-Frame-Options: @@ -4916,7 +4086,7 @@ interactions: - 1; mode=block status: code: 200 - message: OK + message: '' - request: body: null headers: @@ -4927,7 +4097,7 @@ interactions: Connection: - keep-alive User-Agent: - - python-requests/2.25.1 + - python-requests/2.30.0 method: GET uri: https://www.ebi.ac.uk/ena/browser/api/xml/SRR5818011 response: @@ -4968,7 +4138,7 @@ interactions: Content-Type: - application/xml Date: - - Wed, 28 Jul 2021 19:44:14 GMT + - Wed, 17 May 2023 18:37:17 GMT Strict-Transport-Security: - max-age=0 Transfer-Encoding: @@ -4986,7 +4156,7 @@ interactions: Connection: - keep-alive User-Agent: - - python-requests/2.25.1 + - python-requests/2.30.0 method: GET uri: https://www.ebi.ac.uk/ena/browser/api/xml/SRX2996261 response: @@ -5043,7 +4213,7 @@ interactions: Content-Type: - application/xml Date: - - Wed, 28 Jul 2021 19:44:15 GMT + - Wed, 17 May 2023 18:37:17 GMT Strict-Transport-Security: - max-age=0 Transfer-Encoding: @@ -5061,54 +4231,40 @@ interactions: Connection: - keep-alive User-Agent: - - python-requests/2.25.1 + - python-requests/2.30.0 method: GET uri: https://www.ebi.ac.uk/ena/browser/api/xml/SRS2347493 response: body: string: "\n\n\n \n SRS2347493\n - \ SAMN07343031\n - \ GSM2700329\n GSM2700329\n \n wt1aGFP_2_pos\n - \ \n 7955\n Danio - rerio\n zebrafish\n - \ \n \n \n \n - \ ENA-STUDY\n SRP111553\n - \ \n \n \n - \ \n ENA-EXPERIMENT\n - \ SRX2996261\n \n \n - \ \n \n ENA-RUN\n - \ SRR5818010-SRR5818011\n \n - \ \n \n \n - \ ENA-SUBMISSION\n SRA585736\n - \ \n \n \n - \ \n ARRAYEXPRESS\n E-GEOD-101204\n - \ \n \n \n - \ \n ENA-FASTQ-FILES\n - \ \n - \ \n \n \n - \ \n ENA-SUBMITTED-FILES\n - \ \n - \ \n \n \n - \ \n \n source_name\n + alias=\"GSM2700329\" center_name=\"Bioinformatics Unit, CNIC\" broker_name=\"NCBI\">\n + \ \n SRS2347493\n SAMN07343031\n GSM2700329\n \n + \ wt1aGFP_2_pos\n \n 7955\n + \ Danio rerio\n zebrafish\n + \ \n \n \n \n + \ ENA-FASTQ-FILES\n \n + \ \n \n \n \n + \ ENA-SUBMITTED-FILES\n \n + \ \n \n\n\n + \ \n INSDC secondary accession\n + \ SRS2347493\n \n + \ \n organism\n Danio + rerio\n \n \n + \ pool\n 2\n \n + \ \n cell type\n wt1a+\n + \ \n \n source_name\n \ Heart\n \n \n - \ cell type\n wt1a+\n - \ \n \n pool\n - \ 2\n \n \n - \ ENA-SPOT-COUNT\n 24971267\n - \ \n \n ENA-BASE-COUNT\n - \ 1523247287\n \n - \ \n ENA-FIRST-PUBLIC\n - \ 2018-03-23\n \n - \ \n ENA-LAST-UPDATE\n - \ 2018-04-04\n \n + \ BioSampleModel\n Generic\n + \ \n \n ENA-FIRST-PUBLIC\n + \ 2018-03-22\n \n \ \n\n\n" headers: Content-Type: - application/xml Date: - - Wed, 28 Jul 2021 19:44:16 GMT + - Wed, 17 May 2023 18:37:17 GMT Strict-Transport-Security: - max-age=0 Transfer-Encoding: @@ -5126,7 +4282,7 @@ interactions: Connection: - keep-alive User-Agent: - - python-requests/2.25.1 + - python-requests/2.30.0 method: GET uri: https://www.ebi.ac.uk/ena/browser/api/xml/SRP111553 response: @@ -5174,7 +4330,7 @@ interactions: Content-Type: - application/xml Date: - - Wed, 28 Jul 2021 19:44:17 GMT + - Wed, 17 May 2023 18:37:18 GMT Strict-Transport-Security: - max-age=0 Transfer-Encoding: @@ -5192,7 +4348,7 @@ interactions: Connection: - keep-alive User-Agent: - - python-requests/2.25.1 + - python-requests/2.30.0 method: GET uri: https://www.ebi.ac.uk/ena/browser/api/xml/SRA585736 response: @@ -5229,7 +4385,7 @@ interactions: Content-Type: - application/xml Date: - - Wed, 28 Jul 2021 19:44:17 GMT + - Wed, 17 May 2023 18:37:18 GMT Strict-Transport-Security: - max-age=0 Transfer-Encoding: @@ -5237,68 +4393,6 @@ interactions: status: code: 200 message: '' -- request: - body: acc=SRR5818011&accept-proto=fasp&version=2.0 - headers: - Accept: - - '*/*' - Accept-Encoding: - - gzip, deflate - Connection: - - keep-alive - Content-Length: - - '44' - User-Agent: - - python-requests/2.25.1 - method: POST - uri: https://www.ncbi.nlm.nih.gov/Traces/names/names.cgi - response: - body: - string: !!binary | - H4sIAAAAAAAAAwzISwrCMBAA0H1PEXDRVWVmmm8vIVRX7pqaUiU0IYmIMIfXt3wnOkNXy5Lfnq/z - rCxaQGSpRhiVsY4J0AxgBsQb4TTSBPbOWjtPagGQLsgNViQ0TiESSL1ZL5lZAvDliF/R763l2otc - UktriuJZxRJj+oSH2FIRbf9H8q+wtu4HAAD//wMAPDVhvI4AAAA= - headers: - Cache-Control: - - private - Connection: - - Keep-Alive - Content-Encoding: - - gzip - Content-Security-Policy: - - upgrade-insecure-requests - Content-Type: - - text/plain - Date: - - Wed, 28 Jul 2021 19:44:18 GMT - Keep-Alive: - - timeout=1, max=10 - NCBI-PHID: - - CC95F721101B39210000000000000001.m_1 - NCBI-SID: - - CC95F721101B3921_0000SID - Referrer-Policy: - - origin-when-cross-origin - Server: - - Apache - Set-Cookie: - - ncbi_sid=CC95F721101B3921_0000SID; domain=.nih.gov; path=/; expires=Thu, 28 - Jul 2022 19:44:18 GMT - SraNameServerOutputVersion: - - '2.0' - Strict-Transport-Security: - - max-age=31536000; includeSubDomains; preload - Transfer-Encoding: - - chunked - Vary: - - Accept-Encoding - X-UA-Compatible: - - IE=Edge - X-XSS-Protection: - - 1; mode=block - status: - code: 200 - message: OK - request: body: null headers: @@ -5309,29 +4403,27 @@ interactions: Connection: - keep-alive User-Agent: - - python-requests/2.25.1 + - python-requests/2.30.0 method: GET uri: https://www.ebi.ac.uk/ena/portal/api/filereport?accession=SRR5818011&result=read_run response: body: - string: "run_accession\tfastq_ftp\tfastq_bytes\tfastq_md5\tsubmitted_ftp\tsubmitted_bytes\tsubmitted_md5\tsra_ftp\tsra_bytes\tsra_md5\nSRR5818011\tftp.sra.ebi.ac.uk/vol1/fastq/SRR581/001/SRR5818011/SRR5818011.fastq.gz\t664607333\ta10130c4bf552c08705fe4965c086543\t\t\t\t\t\t\n" + string: "run_accession\tfastq_ftp\tfastq_bytes\tfastq_md5\tbam_ftp\tbam_bytes\tbam_md5\tsubmitted_ftp\tsubmitted_bytes\tsubmitted_md5\tsra_ftp\tsra_bytes\tsra_md5\nSRR5818011\tftp.sra.ebi.ac.uk/vol1/fastq/SRR581/001/SRR5818011/SRR5818011.fastq.gz\t664607333\ta10130c4bf552c08705fe4965c086543\t\t\t\t\t\t\tftp.sra.ebi.ac.uk/vol1/srr/SRR581/001/SRR5818011\t453035789\t669b25a0049e4f0c121795112046f8b4\n" headers: Cache-Control: - no-cache, no-store, max-age=0, must-revalidate + Content-Length: + - '365' Content-Type: - text/plain Date: - - Wed, 28 Jul 2021 19:44:18 GMT + - Wed, 17 May 2023 18:37:19 GMT Expires: - '0' Pragma: - no-cache - Server: - - Apache-Coyote/1.1 Strict-Transport-Security: - max-age=0 - Transfer-Encoding: - - chunked X-Content-Type-Options: - nosniff X-Frame-Options: @@ -5340,7 +4432,7 @@ interactions: - 1; mode=block status: code: 200 - message: OK + message: '' - request: body: null headers: @@ -5351,7 +4443,7 @@ interactions: Connection: - keep-alive User-Agent: - - python-requests/2.25.1 + - python-requests/2.30.0 method: GET uri: https://www.ebi.ac.uk/ena/browser/api/xml/SRR5818012 response: @@ -5392,7 +4484,7 @@ interactions: Content-Type: - application/xml Date: - - Wed, 28 Jul 2021 19:44:19 GMT + - Wed, 17 May 2023 18:37:19 GMT Strict-Transport-Security: - max-age=0 Transfer-Encoding: @@ -5410,7 +4502,7 @@ interactions: Connection: - keep-alive User-Agent: - - python-requests/2.25.1 + - python-requests/2.30.0 method: GET uri: https://www.ebi.ac.uk/ena/browser/api/xml/SRX2996262 response: @@ -5467,7 +4559,7 @@ interactions: Content-Type: - application/xml Date: - - Wed, 28 Jul 2021 19:44:20 GMT + - Wed, 17 May 2023 18:37:19 GMT Strict-Transport-Security: - max-age=0 Transfer-Encoding: @@ -5485,54 +4577,40 @@ interactions: Connection: - keep-alive User-Agent: - - python-requests/2.25.1 + - python-requests/2.30.0 method: GET uri: https://www.ebi.ac.uk/ena/browser/api/xml/SRS2347494 response: body: string: "\n\n\n \n SRS2347494\n - \ SAMN07343030\n - \ GSM2700330\n GSM2700330\n \n wt1aGFP_3_neg\n - \ \n 7955\n Danio - rerio\n zebrafish\n - \ \n \n \n \n - \ ENA-STUDY\n SRP111553\n - \ \n \n \n - \ \n ENA-EXPERIMENT\n - \ SRX2996262\n \n \n - \ \n \n ENA-RUN\n - \ SRR5818012-SRR5818013\n \n - \ \n \n \n - \ ENA-SUBMISSION\n SRA585736\n - \ \n \n \n - \ \n ARRAYEXPRESS\n E-GEOD-101204\n - \ \n \n \n - \ \n ENA-FASTQ-FILES\n - \ \n - \ \n \n \n - \ \n ENA-SUBMITTED-FILES\n - \ \n - \ \n \n \n - \ \n \n source_name\n + alias=\"GSM2700330\" center_name=\"Bioinformatics Unit, CNIC\" broker_name=\"NCBI\">\n + \ \n SRS2347494\n SAMN07343030\n GSM2700330\n \n + \ wt1aGFP_3_neg\n \n 7955\n + \ Danio rerio\n zebrafish\n + \ \n \n \n \n + \ ENA-FASTQ-FILES\n \n + \ \n \n \n \n + \ ENA-SUBMITTED-FILES\n \n + \ \n \n\n\n + \ \n INSDC secondary accession\n + \ SRS2347494\n \n + \ \n organism\n Danio + rerio\n \n \n + \ pool\n 3\n \n + \ \n cell type\n wt1a-\n + \ \n \n source_name\n \ Heart\n \n \n - \ cell type\n wt1a-\n - \ \n \n pool\n - \ 3\n \n \n - \ ENA-SPOT-COUNT\n 24020655\n - \ \n \n ENA-BASE-COUNT\n - \ 1465259955\n \n - \ \n ENA-FIRST-PUBLIC\n - \ 2018-03-23\n \n - \ \n ENA-LAST-UPDATE\n - \ 2018-04-04\n \n + \ BioSampleModel\n Generic\n + \ \n \n ENA-FIRST-PUBLIC\n + \ 2018-03-22\n \n \ \n\n\n" headers: Content-Type: - application/xml Date: - - Wed, 28 Jul 2021 19:44:20 GMT + - Wed, 17 May 2023 18:37:19 GMT Strict-Transport-Security: - max-age=0 Transfer-Encoding: @@ -5550,7 +4628,7 @@ interactions: Connection: - keep-alive User-Agent: - - python-requests/2.25.1 + - python-requests/2.30.0 method: GET uri: https://www.ebi.ac.uk/ena/browser/api/xml/SRP111553 response: @@ -5598,7 +4676,7 @@ interactions: Content-Type: - application/xml Date: - - Wed, 28 Jul 2021 19:44:21 GMT + - Wed, 17 May 2023 18:37:20 GMT Strict-Transport-Security: - max-age=0 Transfer-Encoding: @@ -5616,7 +4694,7 @@ interactions: Connection: - keep-alive User-Agent: - - python-requests/2.25.1 + - python-requests/2.30.0 method: GET uri: https://www.ebi.ac.uk/ena/browser/api/xml/SRA585736 response: @@ -5653,7 +4731,7 @@ interactions: Content-Type: - application/xml Date: - - Wed, 28 Jul 2021 19:44:21 GMT + - Wed, 17 May 2023 18:37:20 GMT Strict-Transport-Security: - max-age=0 Transfer-Encoding: @@ -5661,68 +4739,6 @@ interactions: status: code: 200 message: '' -- request: - body: acc=SRR5818012&accept-proto=fasp&version=2.0 - headers: - Accept: - - '*/*' - Accept-Encoding: - - gzip, deflate - Connection: - - keep-alive - Content-Length: - - '44' - User-Agent: - - python-requests/2.25.1 - method: POST - uri: https://www.ncbi.nlm.nih.gov/Traces/names/names.cgi - response: - body: - string: !!binary | - H4sIAAAAAAAAAwzISw7CIBAA0H1PQeKiq5oBhl8vYVJduSsUUg0RQjHGZA6vb/lO4gzD0db69nRd - FmW5BS4IBQI6tIYEcDOBmTi/CT5LMYO9UwQVg5MgN6O9ljpJFb1CF1JSTktLRAhAl1f+snHvvR4j - q630Ekpmj4OtOZdP3FgqjfX9H8U/Y+jDDwAA//8DABfQB9eOAAAA - headers: - Cache-Control: - - private - Connection: - - Keep-Alive - Content-Encoding: - - gzip - Content-Security-Policy: - - upgrade-insecure-requests - Content-Type: - - text/plain - Date: - - Wed, 28 Jul 2021 19:44:22 GMT - Keep-Alive: - - timeout=1, max=10 - NCBI-PHID: - - C7A428B6101B39610000000000000001.m_1 - NCBI-SID: - - C7A428B6101B3961_0000SID - Referrer-Policy: - - origin-when-cross-origin - Server: - - Apache - Set-Cookie: - - ncbi_sid=C7A428B6101B3961_0000SID; domain=.nih.gov; path=/; expires=Thu, 28 - Jul 2022 19:44:22 GMT - SraNameServerOutputVersion: - - '2.0' - Strict-Transport-Security: - - max-age=31536000; includeSubDomains; preload - Transfer-Encoding: - - chunked - Vary: - - Accept-Encoding - X-UA-Compatible: - - IE=Edge - X-XSS-Protection: - - 1; mode=block - status: - code: 200 - message: OK - request: body: null headers: @@ -5733,29 +4749,27 @@ interactions: Connection: - keep-alive User-Agent: - - python-requests/2.25.1 + - python-requests/2.30.0 method: GET uri: https://www.ebi.ac.uk/ena/portal/api/filereport?accession=SRR5818012&result=read_run response: body: - string: "run_accession\tfastq_ftp\tfastq_bytes\tfastq_md5\tsubmitted_ftp\tsubmitted_bytes\tsubmitted_md5\tsra_ftp\tsra_bytes\tsra_md5\nSRR5818012\tftp.sra.ebi.ac.uk/vol1/fastq/SRR581/002/SRR5818012/SRR5818012.fastq.gz\t596873240\t34bb91a39c5c162acd96838f5271558a\t\t\t\t\t\t\n" + string: "run_accession\tfastq_ftp\tfastq_bytes\tfastq_md5\tbam_ftp\tbam_bytes\tbam_md5\tsubmitted_ftp\tsubmitted_bytes\tsubmitted_md5\tsra_ftp\tsra_bytes\tsra_md5\nSRR5818012\tftp.sra.ebi.ac.uk/vol1/fastq/SRR581/002/SRR5818012/SRR5818012.fastq.gz\t596873240\t34bb91a39c5c162acd96838f5271558a\t\t\t\t\t\t\tftp.sra.ebi.ac.uk/vol1/srr/SRR581/002/SRR5818012\t424049487\te05ec9303d76b636f35eb549cff59638\n" headers: Cache-Control: - no-cache, no-store, max-age=0, must-revalidate + Content-Length: + - '365' Content-Type: - text/plain Date: - - Wed, 28 Jul 2021 19:44:22 GMT + - Wed, 17 May 2023 18:37:20 GMT Expires: - '0' Pragma: - no-cache - Server: - - Apache-Coyote/1.1 Strict-Transport-Security: - max-age=0 - Transfer-Encoding: - - chunked X-Content-Type-Options: - nosniff X-Frame-Options: @@ -5764,7 +4778,7 @@ interactions: - 1; mode=block status: code: 200 - message: OK + message: '' - request: body: null headers: @@ -5775,7 +4789,7 @@ interactions: Connection: - keep-alive User-Agent: - - python-requests/2.25.1 + - python-requests/2.30.0 method: GET uri: https://www.ebi.ac.uk/ena/browser/api/xml/SRR5818013 response: @@ -5816,7 +4830,7 @@ interactions: Content-Type: - application/xml Date: - - Wed, 28 Jul 2021 19:44:23 GMT + - Wed, 17 May 2023 18:37:21 GMT Strict-Transport-Security: - max-age=0 Transfer-Encoding: @@ -5834,7 +4848,7 @@ interactions: Connection: - keep-alive User-Agent: - - python-requests/2.25.1 + - python-requests/2.30.0 method: GET uri: https://www.ebi.ac.uk/ena/browser/api/xml/SRX2996262 response: @@ -5891,7 +4905,7 @@ interactions: Content-Type: - application/xml Date: - - Wed, 28 Jul 2021 19:44:24 GMT + - Wed, 17 May 2023 18:37:21 GMT Strict-Transport-Security: - max-age=0 Transfer-Encoding: @@ -5909,54 +4923,40 @@ interactions: Connection: - keep-alive User-Agent: - - python-requests/2.25.1 + - python-requests/2.30.0 method: GET uri: https://www.ebi.ac.uk/ena/browser/api/xml/SRS2347494 response: body: string: "\n\n\n \n SRS2347494\n - \ SAMN07343030\n - \ GSM2700330\n GSM2700330\n \n wt1aGFP_3_neg\n - \ \n 7955\n Danio - rerio\n zebrafish\n - \ \n \n \n \n - \ ENA-STUDY\n SRP111553\n - \ \n \n \n - \ \n ENA-EXPERIMENT\n - \ SRX2996262\n \n \n - \ \n \n ENA-RUN\n - \ SRR5818012-SRR5818013\n \n - \ \n \n \n - \ ENA-SUBMISSION\n SRA585736\n - \ \n \n \n - \ \n ARRAYEXPRESS\n E-GEOD-101204\n - \ \n \n \n - \ \n ENA-FASTQ-FILES\n - \ \n - \ \n \n \n - \ \n ENA-SUBMITTED-FILES\n - \ \n - \ \n \n \n - \ \n \n source_name\n + alias=\"GSM2700330\" center_name=\"Bioinformatics Unit, CNIC\" broker_name=\"NCBI\">\n + \ \n SRS2347494\n SAMN07343030\n GSM2700330\n \n + \ wt1aGFP_3_neg\n \n 7955\n + \ Danio rerio\n zebrafish\n + \ \n \n \n \n + \ ENA-FASTQ-FILES\n \n + \ \n \n \n \n + \ ENA-SUBMITTED-FILES\n \n + \ \n \n\n\n + \ \n INSDC secondary accession\n + \ SRS2347494\n \n + \ \n organism\n Danio + rerio\n \n \n + \ pool\n 3\n \n + \ \n cell type\n wt1a-\n + \ \n \n source_name\n \ Heart\n \n \n - \ cell type\n wt1a-\n - \ \n \n pool\n - \ 3\n \n \n - \ ENA-SPOT-COUNT\n 24020655\n - \ \n \n ENA-BASE-COUNT\n - \ 1465259955\n \n - \ \n ENA-FIRST-PUBLIC\n - \ 2018-03-23\n \n - \ \n ENA-LAST-UPDATE\n - \ 2018-04-04\n \n + \ BioSampleModel\n Generic\n + \ \n \n ENA-FIRST-PUBLIC\n + \ 2018-03-22\n \n \ \n\n\n" headers: Content-Type: - application/xml Date: - - Wed, 28 Jul 2021 19:44:24 GMT + - Wed, 17 May 2023 18:37:22 GMT Strict-Transport-Security: - max-age=0 Transfer-Encoding: @@ -5974,7 +4974,7 @@ interactions: Connection: - keep-alive User-Agent: - - python-requests/2.25.1 + - python-requests/2.30.0 method: GET uri: https://www.ebi.ac.uk/ena/browser/api/xml/SRP111553 response: @@ -6022,7 +5022,7 @@ interactions: Content-Type: - application/xml Date: - - Wed, 28 Jul 2021 19:44:25 GMT + - Wed, 17 May 2023 18:37:22 GMT Strict-Transport-Security: - max-age=0 Transfer-Encoding: @@ -6040,7 +5040,7 @@ interactions: Connection: - keep-alive User-Agent: - - python-requests/2.25.1 + - python-requests/2.30.0 method: GET uri: https://www.ebi.ac.uk/ena/browser/api/xml/SRA585736 response: @@ -6077,7 +5077,7 @@ interactions: Content-Type: - application/xml Date: - - Wed, 28 Jul 2021 19:44:25 GMT + - Wed, 17 May 2023 18:37:22 GMT Strict-Transport-Security: - max-age=0 Transfer-Encoding: @@ -6085,68 +5085,6 @@ interactions: status: code: 200 message: '' -- request: - body: acc=SRR5818013&accept-proto=fasp&version=2.0 - headers: - Accept: - - '*/*' - Accept-Encoding: - - gzip, deflate - Connection: - - keep-alive - Content-Length: - - '44' - User-Agent: - - python-requests/2.25.1 - method: POST - uri: https://www.ncbi.nlm.nih.gov/Traces/names/names.cgi - response: - body: - string: !!binary | - H4sIAAAAAAAAAwzISwrCMBAA0H1PEXDRVWVmMmnaXkKortw1P6oEU9qICHN4fct3ojM0x75sbyfX - eTYDDoBaWBvoexxZCNB2YDvEG+GkcTJ8FzbOYEiEo7eRyFmNPBJjBEMhxSAiDCCXV/6qdq11O1q1 - 7aUWX7J6HGrJuXxiUKnsqq7/KO4ZfW1+AAAA//8DAL7QTpeOAAAA - headers: - Cache-Control: - - private - Connection: - - Keep-Alive - Content-Encoding: - - gzip - Content-Security-Policy: - - upgrade-insecure-requests - Content-Type: - - text/plain - Date: - - Wed, 28 Jul 2021 19:44:26 GMT - Keep-Alive: - - timeout=1, max=10 - NCBI-PHID: - - CC95F75F101B39A10000000000000001.m_1 - NCBI-SID: - - CC95F75F101B39A1_0000SID - Referrer-Policy: - - origin-when-cross-origin - Server: - - Apache - Set-Cookie: - - ncbi_sid=CC95F75F101B39A1_0000SID; domain=.nih.gov; path=/; expires=Thu, 28 - Jul 2022 19:44:26 GMT - SraNameServerOutputVersion: - - '2.0' - Strict-Transport-Security: - - max-age=31536000; includeSubDomains; preload - Transfer-Encoding: - - chunked - Vary: - - Accept-Encoding - X-UA-Compatible: - - IE=Edge - X-XSS-Protection: - - 1; mode=block - status: - code: 200 - message: OK - request: body: null headers: @@ -6157,29 +5095,27 @@ interactions: Connection: - keep-alive User-Agent: - - python-requests/2.25.1 + - python-requests/2.30.0 method: GET uri: https://www.ebi.ac.uk/ena/portal/api/filereport?accession=SRR5818013&result=read_run response: body: - string: "run_accession\tfastq_ftp\tfastq_bytes\tfastq_md5\tsubmitted_ftp\tsubmitted_bytes\tsubmitted_md5\tsra_ftp\tsra_bytes\tsra_md5\nSRR5818013\tftp.sra.ebi.ac.uk/vol1/fastq/SRR581/003/SRR5818013/SRR5818013.fastq.gz\t611906971\tce77ccfd2bc4c23e9ee5501ca3e9243e\t\t\t\t\t\t\n" + string: "run_accession\tfastq_ftp\tfastq_bytes\tfastq_md5\tbam_ftp\tbam_bytes\tbam_md5\tsubmitted_ftp\tsubmitted_bytes\tsubmitted_md5\tsra_ftp\tsra_bytes\tsra_md5\nSRR5818013\tftp.sra.ebi.ac.uk/vol1/fastq/SRR581/003/SRR5818013/SRR5818013.fastq.gz\t611906971\tce77ccfd2bc4c23e9ee5501ca3e9243e\t\t\t\t\t\t\tftp.sra.ebi.ac.uk/vol1/srr/SRR581/003/SRR5818013\t435066194\t45b51df219c7e22b73149241e052dfed\n" headers: Cache-Control: - no-cache, no-store, max-age=0, must-revalidate + Content-Length: + - '365' Content-Type: - text/plain Date: - - Wed, 28 Jul 2021 19:44:26 GMT + - Wed, 17 May 2023 18:37:24 GMT Expires: - '0' Pragma: - no-cache - Server: - - Apache-Coyote/1.1 Strict-Transport-Security: - max-age=0 - Transfer-Encoding: - - chunked X-Content-Type-Options: - nosniff X-Frame-Options: @@ -6188,7 +5124,7 @@ interactions: - 1; mode=block status: code: 200 - message: OK + message: '' - request: body: null headers: @@ -6199,7 +5135,7 @@ interactions: Connection: - keep-alive User-Agent: - - python-requests/2.25.1 + - python-requests/2.30.0 method: GET uri: https://www.ebi.ac.uk/ena/browser/api/xml/SRR5818014 response: @@ -6240,7 +5176,7 @@ interactions: Content-Type: - application/xml Date: - - Wed, 28 Jul 2021 19:44:27 GMT + - Wed, 17 May 2023 18:37:24 GMT Strict-Transport-Security: - max-age=0 Transfer-Encoding: @@ -6258,7 +5194,7 @@ interactions: Connection: - keep-alive User-Agent: - - python-requests/2.25.1 + - python-requests/2.30.0 method: GET uri: https://www.ebi.ac.uk/ena/browser/api/xml/SRX2996263 response: @@ -6315,7 +5251,7 @@ interactions: Content-Type: - application/xml Date: - - Wed, 28 Jul 2021 19:44:28 GMT + - Wed, 17 May 2023 18:37:24 GMT Strict-Transport-Security: - max-age=0 Transfer-Encoding: @@ -6333,54 +5269,40 @@ interactions: Connection: - keep-alive User-Agent: - - python-requests/2.25.1 + - python-requests/2.30.0 method: GET uri: https://www.ebi.ac.uk/ena/browser/api/xml/SRS2347495 response: body: string: "\n\n\n \n SRS2347495\n - \ SAMN07343029\n - \ GSM2700331\n GSM2700331\n \n wt1aGFP_3_pos\n - \ \n 7955\n Danio - rerio\n zebrafish\n - \ \n \n \n \n - \ ENA-STUDY\n SRP111553\n - \ \n \n \n - \ \n ENA-EXPERIMENT\n - \ SRX2996263\n \n \n - \ \n \n ENA-RUN\n - \ SRR5818014-SRR5818015\n \n - \ \n \n \n - \ ENA-SUBMISSION\n SRA585736\n - \ \n \n \n - \ \n ARRAYEXPRESS\n E-GEOD-101204\n - \ \n \n \n - \ \n ENA-FASTQ-FILES\n - \ \n - \ \n \n \n - \ \n ENA-SUBMITTED-FILES\n - \ \n - \ \n \n \n - \ \n \n source_name\n + alias=\"GSM2700331\" center_name=\"Bioinformatics Unit, CNIC\" broker_name=\"NCBI\">\n + \ \n SRS2347495\n SAMN07343029\n GSM2700331\n \n + \ wt1aGFP_3_pos\n \n 7955\n + \ Danio rerio\n zebrafish\n + \ \n \n \n \n + \ ENA-FASTQ-FILES\n \n + \ \n \n \n \n + \ ENA-SUBMITTED-FILES\n \n + \ \n \n\n\n + \ \n INSDC secondary accession\n + \ SRS2347495\n \n + \ \n organism\n Danio + rerio\n \n \n + \ pool\n 3\n \n + \ \n cell type\n wt1a+\n + \ \n \n source_name\n \ Heart\n \n \n - \ cell type\n wt1a+\n - \ \n \n pool\n - \ 3\n \n \n - \ ENA-SPOT-COUNT\n 25570895\n - \ \n \n ENA-BASE-COUNT\n - \ 1559824595\n \n - \ \n ENA-FIRST-PUBLIC\n - \ 2018-03-23\n \n - \ \n ENA-LAST-UPDATE\n - \ 2018-04-04\n \n + \ BioSampleModel\n Generic\n + \ \n \n ENA-FIRST-PUBLIC\n + \ 2018-03-22\n \n \ \n\n\n" headers: Content-Type: - application/xml Date: - - Wed, 28 Jul 2021 19:44:29 GMT + - Wed, 17 May 2023 18:37:25 GMT Strict-Transport-Security: - max-age=0 Transfer-Encoding: @@ -6398,7 +5320,7 @@ interactions: Connection: - keep-alive User-Agent: - - python-requests/2.25.1 + - python-requests/2.30.0 method: GET uri: https://www.ebi.ac.uk/ena/browser/api/xml/SRP111553 response: @@ -6446,7 +5368,7 @@ interactions: Content-Type: - application/xml Date: - - Wed, 28 Jul 2021 19:44:29 GMT + - Wed, 17 May 2023 18:37:25 GMT Strict-Transport-Security: - max-age=0 Transfer-Encoding: @@ -6464,7 +5386,7 @@ interactions: Connection: - keep-alive User-Agent: - - python-requests/2.25.1 + - python-requests/2.30.0 method: GET uri: https://www.ebi.ac.uk/ena/browser/api/xml/SRA585736 response: @@ -6501,7 +5423,7 @@ interactions: Content-Type: - application/xml Date: - - Wed, 28 Jul 2021 19:44:30 GMT + - Wed, 17 May 2023 18:37:25 GMT Strict-Transport-Security: - max-age=0 Transfer-Encoding: @@ -6509,68 +5431,6 @@ interactions: status: code: 200 message: '' -- request: - body: acc=SRR5818014&accept-proto=fasp&version=2.0 - headers: - Accept: - - '*/*' - Accept-Encoding: - - gzip, deflate - Connection: - - keep-alive - Content-Length: - - '44' - User-Agent: - - python-requests/2.25.1 - method: POST - uri: https://www.ncbi.nlm.nih.gov/Traces/names/names.cgi - response: - body: - string: !!binary | - H4sIAAAAAAAAAwzIsQrCMBAA0L1fEXDoVLm73JHYnxCqk1ubVKqEJrQREe7j7fKGd6IzNPs2ls+k - t2EQjx6QlYWtt+JBCdB14DrEO2FvqWd5aLSOHI2RA7IEwDh7LzGAvUxCBKCqfHhd08+0S61lb03Z - cs0hJ/PazZhS/s7RPPNm6nJEnt5zqM0fAAD//wMALJ4MxY4AAAA= - headers: - Cache-Control: - - private - Connection: - - Keep-Alive - Content-Encoding: - - gzip - Content-Security-Policy: - - upgrade-insecure-requests - Content-Type: - - text/plain - Date: - - Wed, 28 Jul 2021 19:44:30 GMT - Keep-Alive: - - timeout=1, max=10 - NCBI-PHID: - - C7A42964101B39E10000000000000001.m_1 - NCBI-SID: - - C7A42964101B39E1_0000SID - Referrer-Policy: - - origin-when-cross-origin - Server: - - Apache - Set-Cookie: - - ncbi_sid=C7A42964101B39E1_0000SID; domain=.nih.gov; path=/; expires=Thu, 28 - Jul 2022 19:44:30 GMT - SraNameServerOutputVersion: - - '2.0' - Strict-Transport-Security: - - max-age=31536000; includeSubDomains; preload - Transfer-Encoding: - - chunked - Vary: - - Accept-Encoding - X-UA-Compatible: - - IE=Edge - X-XSS-Protection: - - 1; mode=block - status: - code: 200 - message: OK - request: body: null headers: @@ -6581,29 +5441,27 @@ interactions: Connection: - keep-alive User-Agent: - - python-requests/2.25.1 + - python-requests/2.30.0 method: GET uri: https://www.ebi.ac.uk/ena/portal/api/filereport?accession=SRR5818014&result=read_run response: body: - string: "run_accession\tfastq_ftp\tfastq_bytes\tfastq_md5\tsubmitted_ftp\tsubmitted_bytes\tsubmitted_md5\tsra_ftp\tsra_bytes\tsra_md5\nSRR5818014\tftp.sra.ebi.ac.uk/vol1/fastq/SRR581/004/SRR5818014/SRR5818014.fastq.gz\t653073940\t8ce9ecf3ee5c145072e81fdf9f4410b3\t\t\t\t\t\t\n" + string: "run_accession\tfastq_ftp\tfastq_bytes\tfastq_md5\tbam_ftp\tbam_bytes\tbam_md5\tsubmitted_ftp\tsubmitted_bytes\tsubmitted_md5\tsra_ftp\tsra_bytes\tsra_md5\nSRR5818014\tftp.sra.ebi.ac.uk/vol1/fastq/SRR581/004/SRR5818014/SRR5818014.fastq.gz\t653073940\t8ce9ecf3ee5c145072e81fdf9f4410b3\t\t\t\t\t\t\tftp.sra.ebi.ac.uk/vol1/srr/SRR581/004/SRR5818014\t454383580\td37272ad4c145c01de885dc039b52200\n" headers: Cache-Control: - no-cache, no-store, max-age=0, must-revalidate + Content-Length: + - '365' Content-Type: - text/plain Date: - - Wed, 28 Jul 2021 19:44:31 GMT + - Wed, 17 May 2023 18:37:25 GMT Expires: - '0' Pragma: - no-cache - Server: - - Apache-Coyote/1.1 Strict-Transport-Security: - max-age=0 - Transfer-Encoding: - - chunked X-Content-Type-Options: - nosniff X-Frame-Options: @@ -6612,7 +5470,7 @@ interactions: - 1; mode=block status: code: 200 - message: OK + message: '' - request: body: null headers: @@ -6623,7 +5481,7 @@ interactions: Connection: - keep-alive User-Agent: - - python-requests/2.25.1 + - python-requests/2.30.0 method: GET uri: https://www.ebi.ac.uk/ena/browser/api/xml/SRR5818015 response: @@ -6664,7 +5522,7 @@ interactions: Content-Type: - application/xml Date: - - Wed, 28 Jul 2021 19:44:32 GMT + - Wed, 17 May 2023 18:37:26 GMT Strict-Transport-Security: - max-age=0 Transfer-Encoding: @@ -6682,7 +5540,7 @@ interactions: Connection: - keep-alive User-Agent: - - python-requests/2.25.1 + - python-requests/2.30.0 method: GET uri: https://www.ebi.ac.uk/ena/browser/api/xml/SRX2996263 response: @@ -6739,7 +5597,7 @@ interactions: Content-Type: - application/xml Date: - - Wed, 28 Jul 2021 19:44:32 GMT + - Wed, 17 May 2023 18:37:26 GMT Strict-Transport-Security: - max-age=0 Transfer-Encoding: @@ -6757,54 +5615,40 @@ interactions: Connection: - keep-alive User-Agent: - - python-requests/2.25.1 + - python-requests/2.30.0 method: GET uri: https://www.ebi.ac.uk/ena/browser/api/xml/SRS2347495 response: body: string: "\n\n\n \n SRS2347495\n - \ SAMN07343029\n - \ GSM2700331\n GSM2700331\n \n wt1aGFP_3_pos\n - \ \n 7955\n Danio - rerio\n zebrafish\n - \ \n \n \n \n - \ ENA-STUDY\n SRP111553\n - \ \n \n \n - \ \n ENA-EXPERIMENT\n - \ SRX2996263\n \n \n - \ \n \n ENA-RUN\n - \ SRR5818014-SRR5818015\n \n - \ \n \n \n - \ ENA-SUBMISSION\n SRA585736\n - \ \n \n \n - \ \n ARRAYEXPRESS\n E-GEOD-101204\n - \ \n \n \n - \ \n ENA-FASTQ-FILES\n - \ \n - \ \n \n \n - \ \n ENA-SUBMITTED-FILES\n - \ \n - \ \n \n \n - \ \n \n source_name\n + alias=\"GSM2700331\" center_name=\"Bioinformatics Unit, CNIC\" broker_name=\"NCBI\">\n + \ \n SRS2347495\n SAMN07343029\n GSM2700331\n \n + \ wt1aGFP_3_pos\n \n 7955\n + \ Danio rerio\n zebrafish\n + \ \n \n \n \n + \ ENA-FASTQ-FILES\n \n + \ \n \n \n \n + \ ENA-SUBMITTED-FILES\n \n + \ \n \n\n\n + \ \n INSDC secondary accession\n + \ SRS2347495\n \n + \ \n organism\n Danio + rerio\n \n \n + \ pool\n 3\n \n + \ \n cell type\n wt1a+\n + \ \n \n source_name\n \ Heart\n \n \n - \ cell type\n wt1a+\n - \ \n \n pool\n - \ 3\n \n \n - \ ENA-SPOT-COUNT\n 25570895\n - \ \n \n ENA-BASE-COUNT\n - \ 1559824595\n \n - \ \n ENA-FIRST-PUBLIC\n - \ 2018-03-23\n \n - \ \n ENA-LAST-UPDATE\n - \ 2018-04-04\n \n + \ BioSampleModel\n Generic\n + \ \n \n ENA-FIRST-PUBLIC\n + \ 2018-03-22\n \n \ \n\n\n" headers: Content-Type: - application/xml Date: - - Wed, 28 Jul 2021 19:44:33 GMT + - Wed, 17 May 2023 18:37:27 GMT Strict-Transport-Security: - max-age=0 Transfer-Encoding: @@ -6822,7 +5666,7 @@ interactions: Connection: - keep-alive User-Agent: - - python-requests/2.25.1 + - python-requests/2.30.0 method: GET uri: https://www.ebi.ac.uk/ena/browser/api/xml/SRP111553 response: @@ -6870,7 +5714,7 @@ interactions: Content-Type: - application/xml Date: - - Wed, 28 Jul 2021 19:44:34 GMT + - Wed, 17 May 2023 18:37:27 GMT Strict-Transport-Security: - max-age=0 Transfer-Encoding: @@ -6888,7 +5732,7 @@ interactions: Connection: - keep-alive User-Agent: - - python-requests/2.25.1 + - python-requests/2.30.0 method: GET uri: https://www.ebi.ac.uk/ena/browser/api/xml/SRA585736 response: @@ -6925,7 +5769,7 @@ interactions: Content-Type: - application/xml Date: - - Wed, 28 Jul 2021 19:44:34 GMT + - Wed, 17 May 2023 18:37:27 GMT Strict-Transport-Security: - max-age=0 Transfer-Encoding: @@ -6933,68 +5777,6 @@ interactions: status: code: 200 message: '' -- request: - body: acc=SRR5818015&accept-proto=fasp&version=2.0 - headers: - Accept: - - '*/*' - Accept-Encoding: - - gzip, deflate - Connection: - - keep-alive - Content-Length: - - '44' - User-Agent: - - python-requests/2.25.1 - method: POST - uri: https://www.ncbi.nlm.nih.gov/Traces/names/names.cgi - response: - body: - string: !!binary | - H4sIAAAAAAAAAwzISwrCMBAA0H1PEXDRVWUm//QSQnXlLl+qBFPaiAhzeH3Ld+JnGI7db+9A12VR - Fi2gIqklOqGcIw5oJjAT4o3jLPiM7k6pZBt9FDIIpSH5Igwa6bBoy8ErT0QSgC6v+mXj2vt2jGzb - W2+xVfY4mK+1fXJipe2sr/9o4ZljH34AAAD//wMAgDyOdI4AAAA= - headers: - Cache-Control: - - private - Connection: - - Keep-Alive - Content-Encoding: - - gzip - Content-Security-Policy: - - upgrade-insecure-requests - Content-Type: - - text/plain - Date: - - Wed, 28 Jul 2021 19:44:35 GMT - Keep-Alive: - - timeout=1, max=10 - NCBI-PHID: - - CC95F7B9101B3A310000000000000001.m_1 - NCBI-SID: - - CC95F7B9101B3A31_0000SID - Referrer-Policy: - - origin-when-cross-origin - Server: - - Apache - Set-Cookie: - - ncbi_sid=CC95F7B9101B3A31_0000SID; domain=.nih.gov; path=/; expires=Thu, 28 - Jul 2022 19:44:35 GMT - SraNameServerOutputVersion: - - '2.0' - Strict-Transport-Security: - - max-age=31536000; includeSubDomains; preload - Transfer-Encoding: - - chunked - Vary: - - Accept-Encoding - X-UA-Compatible: - - IE=Edge - X-XSS-Protection: - - 1; mode=block - status: - code: 200 - message: OK - request: body: null headers: @@ -7005,29 +5787,27 @@ interactions: Connection: - keep-alive User-Agent: - - python-requests/2.25.1 + - python-requests/2.30.0 method: GET uri: https://www.ebi.ac.uk/ena/portal/api/filereport?accession=SRR5818015&result=read_run response: body: - string: "run_accession\tfastq_ftp\tfastq_bytes\tfastq_md5\tsubmitted_ftp\tsubmitted_bytes\tsubmitted_md5\tsra_ftp\tsra_bytes\tsra_md5\nSRR5818015\tftp.sra.ebi.ac.uk/vol1/fastq/SRR581/005/SRR5818015/SRR5818015.fastq.gz\t666679070\tcc72fb436d98e3577b504400bcc72c86\t\t\t\t\t\t\n" + string: "run_accession\tfastq_ftp\tfastq_bytes\tfastq_md5\tbam_ftp\tbam_bytes\tbam_md5\tsubmitted_ftp\tsubmitted_bytes\tsubmitted_md5\tsra_ftp\tsra_bytes\tsra_md5\nSRR5818015\tftp.sra.ebi.ac.uk/vol1/fastq/SRR581/005/SRR5818015/SRR5818015.fastq.gz\t666679070\tcc72fb436d98e3577b504400bcc72c86\t\t\t\t\t\t\tftp.sra.ebi.ac.uk/vol1/srr/SRR581/005/SRR5818015\t464193599\tdfe8cac34b3560daf3717491f6820a5a\n" headers: Cache-Control: - no-cache, no-store, max-age=0, must-revalidate + Content-Length: + - '365' Content-Type: - text/plain Date: - - Wed, 28 Jul 2021 19:44:35 GMT + - Wed, 17 May 2023 18:37:28 GMT Expires: - '0' Pragma: - no-cache - Server: - - Apache-Coyote/1.1 Strict-Transport-Security: - max-age=0 - Transfer-Encoding: - - chunked X-Content-Type-Options: - nosniff X-Frame-Options: @@ -7036,7 +5816,7 @@ interactions: - 1; mode=block status: code: 200 - message: OK + message: '' - request: body: null headers: @@ -7047,7 +5827,7 @@ interactions: Connection: - keep-alive User-Agent: - - python-requests/2.25.1 + - python-requests/2.30.0 method: GET uri: https://www.ebi.ac.uk/ena/browser/api/xml/SRR5818016 response: @@ -7088,7 +5868,7 @@ interactions: Content-Type: - application/xml Date: - - Wed, 28 Jul 2021 19:44:36 GMT + - Wed, 17 May 2023 18:37:28 GMT Strict-Transport-Security: - max-age=0 Transfer-Encoding: @@ -7106,7 +5886,7 @@ interactions: Connection: - keep-alive User-Agent: - - python-requests/2.25.1 + - python-requests/2.30.0 method: GET uri: https://www.ebi.ac.uk/ena/browser/api/xml/SRX2996264 response: @@ -7163,7 +5943,7 @@ interactions: Content-Type: - application/xml Date: - - Wed, 28 Jul 2021 19:44:37 GMT + - Wed, 17 May 2023 18:37:29 GMT Strict-Transport-Security: - max-age=0 Transfer-Encoding: @@ -7181,54 +5961,40 @@ interactions: Connection: - keep-alive User-Agent: - - python-requests/2.25.1 + - python-requests/2.30.0 method: GET uri: https://www.ebi.ac.uk/ena/browser/api/xml/SRS2347496 response: body: string: "\n\n\n \n SRS2347496\n - \ SAMN07343037\n - \ GSM2700332\n GSM2700332\n \n wt1aGFP_4_neg\n - \ \n 7955\n Danio - rerio\n zebrafish\n - \ \n \n \n \n - \ ENA-STUDY\n SRP111553\n - \ \n \n \n - \ \n ENA-EXPERIMENT\n - \ SRX2996264\n \n \n - \ \n \n ENA-RUN\n - \ SRR5818016-SRR5818017\n \n - \ \n \n \n - \ ENA-SUBMISSION\n SRA585736\n - \ \n \n \n - \ \n ARRAYEXPRESS\n E-GEOD-101204\n - \ \n \n \n - \ \n ENA-FASTQ-FILES\n - \ \n - \ \n \n \n - \ \n ENA-SUBMITTED-FILES\n - \ \n - \ \n \n \n - \ \n \n source_name\n + alias=\"GSM2700332\" center_name=\"Bioinformatics Unit, CNIC\" broker_name=\"NCBI\">\n + \ \n SRS2347496\n SAMN07343037\n GSM2700332\n \n + \ wt1aGFP_4_neg\n \n 7955\n + \ Danio rerio\n zebrafish\n + \ \n \n \n \n + \ ENA-FASTQ-FILES\n \n + \ \n \n \n \n + \ ENA-SUBMITTED-FILES\n \n + \ \n \n\n\n + \ \n INSDC secondary accession\n + \ SRS2347496\n \n + \ \n organism\n Danio + rerio\n \n \n + \ pool\n 4\n \n + \ \n cell type\n wt1a-\n + \ \n \n source_name\n \ Heart\n \n \n - \ cell type\n wt1a-\n - \ \n \n pool\n - \ 4\n \n \n - \ ENA-SPOT-COUNT\n 28010081\n - \ \n \n ENA-BASE-COUNT\n - \ 1708614941\n \n - \ \n ENA-FIRST-PUBLIC\n - \ 2018-03-23\n \n - \ \n ENA-LAST-UPDATE\n - \ 2018-04-04\n \n + \ BioSampleModel\n Generic\n + \ \n \n ENA-FIRST-PUBLIC\n + \ 2018-03-22\n \n \ \n\n\n" headers: Content-Type: - application/xml Date: - - Wed, 28 Jul 2021 19:44:37 GMT + - Wed, 17 May 2023 18:37:29 GMT Strict-Transport-Security: - max-age=0 Transfer-Encoding: @@ -7246,7 +6012,7 @@ interactions: Connection: - keep-alive User-Agent: - - python-requests/2.25.1 + - python-requests/2.30.0 method: GET uri: https://www.ebi.ac.uk/ena/browser/api/xml/SRP111553 response: @@ -7294,7 +6060,7 @@ interactions: Content-Type: - application/xml Date: - - Wed, 28 Jul 2021 19:44:38 GMT + - Wed, 17 May 2023 18:37:29 GMT Strict-Transport-Security: - max-age=0 Transfer-Encoding: @@ -7312,7 +6078,7 @@ interactions: Connection: - keep-alive User-Agent: - - python-requests/2.25.1 + - python-requests/2.30.0 method: GET uri: https://www.ebi.ac.uk/ena/browser/api/xml/SRA585736 response: @@ -7349,7 +6115,7 @@ interactions: Content-Type: - application/xml Date: - - Wed, 28 Jul 2021 19:44:38 GMT + - Wed, 17 May 2023 18:37:30 GMT Strict-Transport-Security: - max-age=0 Transfer-Encoding: @@ -7357,68 +6123,6 @@ interactions: status: code: 200 message: '' -- request: - body: acc=SRR5818016&accept-proto=fasp&version=2.0 - headers: - Accept: - - '*/*' - Accept-Encoding: - - gzip, deflate - Connection: - - keep-alive - Content-Length: - - '44' - User-Agent: - - python-requests/2.25.1 - method: POST - uri: https://www.ncbi.nlm.nih.gov/Traces/names/names.cgi - response: - body: - string: !!binary | - H4sIAAAAAAAAAwzISwrCMBAA0H1PEXDRVSUzmebTSwjVlbskbakSTEgjIszh9S3fCc+yO6ov78DX - eR4tWAmayREp1NoySjCDNAPADWFSNI3uzls0ALSOZGFzxpGNAZWOC5oQVfCemUlKvrzSV/R7a+Xo - Ram55ZiTeBzCp5Q/6yK2XEXb/5HDc42t+wEAAP//AwCQxTb0jgAAAA== - headers: - Cache-Control: - - private - Connection: - - Keep-Alive - Content-Encoding: - - gzip - Content-Security-Policy: - - upgrade-insecure-requests - Content-Type: - - text/plain - Date: - - Wed, 28 Jul 2021 19:44:39 GMT - Keep-Alive: - - timeout=1, max=10 - NCBI-PHID: - - C7A429C2101B3A710000000000000001.m_1 - NCBI-SID: - - C7A429C2101B3A71_0000SID - Referrer-Policy: - - origin-when-cross-origin - Server: - - Apache - Set-Cookie: - - ncbi_sid=C7A429C2101B3A71_0000SID; domain=.nih.gov; path=/; expires=Thu, 28 - Jul 2022 19:44:39 GMT - SraNameServerOutputVersion: - - '2.0' - Strict-Transport-Security: - - max-age=31536000; includeSubDomains; preload - Transfer-Encoding: - - chunked - Vary: - - Accept-Encoding - X-UA-Compatible: - - IE=Edge - X-XSS-Protection: - - 1; mode=block - status: - code: 200 - message: OK - request: body: null headers: @@ -7429,29 +6133,27 @@ interactions: Connection: - keep-alive User-Agent: - - python-requests/2.25.1 + - python-requests/2.30.0 method: GET uri: https://www.ebi.ac.uk/ena/portal/api/filereport?accession=SRR5818016&result=read_run response: body: - string: "run_accession\tfastq_ftp\tfastq_bytes\tfastq_md5\tsubmitted_ftp\tsubmitted_bytes\tsubmitted_md5\tsra_ftp\tsra_bytes\tsra_md5\nSRR5818016\tftp.sra.ebi.ac.uk/vol1/fastq/SRR581/006/SRR5818016/SRR5818016.fastq.gz\t692367575\ta4efd28f613dbea313df0ca2f608dd1c\t\t\t\t\t\t\n" + string: "run_accession\tfastq_ftp\tfastq_bytes\tfastq_md5\tbam_ftp\tbam_bytes\tbam_md5\tsubmitted_ftp\tsubmitted_bytes\tsubmitted_md5\tsra_ftp\tsra_bytes\tsra_md5\nSRR5818016\tftp.sra.ebi.ac.uk/vol1/fastq/SRR581/006/SRR5818016/SRR5818016.fastq.gz\t692367575\ta4efd28f613dbea313df0ca2f608dd1c\t\t\t\t\t\t\tftp.sra.ebi.ac.uk/vol1/srr/SRR581/006/SRR5818016\t494432668\tfc7114e5481f97948cb236cd27bc3baa\n" headers: Cache-Control: - no-cache, no-store, max-age=0, must-revalidate + Content-Length: + - '365' Content-Type: - text/plain Date: - - Wed, 28 Jul 2021 19:44:39 GMT + - Wed, 17 May 2023 18:37:31 GMT Expires: - '0' Pragma: - no-cache - Server: - - Apache-Coyote/1.1 Strict-Transport-Security: - max-age=0 - Transfer-Encoding: - - chunked X-Content-Type-Options: - nosniff X-Frame-Options: @@ -7460,7 +6162,7 @@ interactions: - 1; mode=block status: code: 200 - message: OK + message: '' - request: body: null headers: @@ -7471,7 +6173,7 @@ interactions: Connection: - keep-alive User-Agent: - - python-requests/2.25.1 + - python-requests/2.30.0 method: GET uri: https://www.ebi.ac.uk/ena/browser/api/xml/SRR5818017 response: @@ -7512,7 +6214,7 @@ interactions: Content-Type: - application/xml Date: - - Wed, 28 Jul 2021 19:44:40 GMT + - Wed, 17 May 2023 18:37:30 GMT Strict-Transport-Security: - max-age=0 Transfer-Encoding: @@ -7530,7 +6232,7 @@ interactions: Connection: - keep-alive User-Agent: - - python-requests/2.25.1 + - python-requests/2.30.0 method: GET uri: https://www.ebi.ac.uk/ena/browser/api/xml/SRX2996264 response: @@ -7587,7 +6289,7 @@ interactions: Content-Type: - application/xml Date: - - Wed, 28 Jul 2021 19:44:41 GMT + - Wed, 17 May 2023 18:37:31 GMT Strict-Transport-Security: - max-age=0 Transfer-Encoding: @@ -7605,54 +6307,40 @@ interactions: Connection: - keep-alive User-Agent: - - python-requests/2.25.1 + - python-requests/2.30.0 method: GET uri: https://www.ebi.ac.uk/ena/browser/api/xml/SRS2347496 response: body: string: "\n\n\n \n SRS2347496\n - \ SAMN07343037\n - \ GSM2700332\n GSM2700332\n \n wt1aGFP_4_neg\n - \ \n 7955\n Danio - rerio\n zebrafish\n - \ \n \n \n \n - \ ENA-STUDY\n SRP111553\n - \ \n \n \n - \ \n ENA-EXPERIMENT\n - \ SRX2996264\n \n \n - \ \n \n ENA-RUN\n - \ SRR5818016-SRR5818017\n \n - \ \n \n \n - \ ENA-SUBMISSION\n SRA585736\n - \ \n \n \n - \ \n ARRAYEXPRESS\n E-GEOD-101204\n - \ \n \n \n - \ \n ENA-FASTQ-FILES\n - \ \n - \ \n \n \n - \ \n ENA-SUBMITTED-FILES\n - \ \n - \ \n \n \n - \ \n \n source_name\n + alias=\"GSM2700332\" center_name=\"Bioinformatics Unit, CNIC\" broker_name=\"NCBI\">\n + \ \n SRS2347496\n SAMN07343037\n GSM2700332\n \n + \ wt1aGFP_4_neg\n \n 7955\n + \ Danio rerio\n zebrafish\n + \ \n \n \n \n + \ ENA-FASTQ-FILES\n \n + \ \n \n \n \n + \ ENA-SUBMITTED-FILES\n \n + \ \n \n\n\n + \ \n INSDC secondary accession\n + \ SRS2347496\n \n + \ \n organism\n Danio + rerio\n \n \n + \ pool\n 4\n \n + \ \n cell type\n wt1a-\n + \ \n \n source_name\n \ Heart\n \n \n - \ cell type\n wt1a-\n - \ \n \n pool\n - \ 4\n \n \n - \ ENA-SPOT-COUNT\n 28010081\n - \ \n \n ENA-BASE-COUNT\n - \ 1708614941\n \n - \ \n ENA-FIRST-PUBLIC\n - \ 2018-03-23\n \n - \ \n ENA-LAST-UPDATE\n - \ 2018-04-04\n \n + \ BioSampleModel\n Generic\n + \ \n \n ENA-FIRST-PUBLIC\n + \ 2018-03-22\n \n \ \n\n\n" headers: Content-Type: - application/xml Date: - - Wed, 28 Jul 2021 19:44:41 GMT + - Wed, 17 May 2023 18:37:32 GMT Strict-Transport-Security: - max-age=0 Transfer-Encoding: @@ -7670,7 +6358,7 @@ interactions: Connection: - keep-alive User-Agent: - - python-requests/2.25.1 + - python-requests/2.30.0 method: GET uri: https://www.ebi.ac.uk/ena/browser/api/xml/SRP111553 response: @@ -7718,7 +6406,7 @@ interactions: Content-Type: - application/xml Date: - - Wed, 28 Jul 2021 19:44:43 GMT + - Wed, 17 May 2023 18:37:32 GMT Strict-Transport-Security: - max-age=0 Transfer-Encoding: @@ -7736,7 +6424,7 @@ interactions: Connection: - keep-alive User-Agent: - - python-requests/2.25.1 + - python-requests/2.30.0 method: GET uri: https://www.ebi.ac.uk/ena/browser/api/xml/SRA585736 response: @@ -7773,7 +6461,7 @@ interactions: Content-Type: - application/xml Date: - - Wed, 28 Jul 2021 19:44:43 GMT + - Wed, 17 May 2023 18:37:32 GMT Strict-Transport-Security: - max-age=0 Transfer-Encoding: @@ -7782,7 +6470,7 @@ interactions: code: 200 message: '' - request: - body: acc=SRR5818017&accept-proto=fasp&version=2.0 + body: null headers: Accept: - '*/*' @@ -7790,92 +6478,28 @@ interactions: - gzip, deflate Connection: - keep-alive - Content-Length: - - '44' User-Agent: - - python-requests/2.25.1 - method: POST - uri: https://www.ncbi.nlm.nih.gov/Traces/names/names.cgi + - python-requests/2.30.0 + method: GET + uri: https://www.ebi.ac.uk/ena/portal/api/filereport?accession=SRR5818017&result=read_run response: body: - string: !!binary | - H4sIAAAAAAAAAwzIsQ7CIBAA0L1fQeLQqeYOOCj9CZPq5EYLphoihGKMyX28Hd87yTN0e/Xls/B1 - nmnEEdAygbUwKlQsDw5gB8SbxEnRpOWdUbvgSEUNRi5Bq0AUDKE3zhoZV8XMGoAv7/QT/dZa2XtR - am55zUk8d+FTyt8YxCNX0bYj8vKKa+v+AAAA//8DAOFojYaOAAAA + string: "run_accession\tfastq_ftp\tfastq_bytes\tfastq_md5\tbam_ftp\tbam_bytes\tbam_md5\tsubmitted_ftp\tsubmitted_bytes\tsubmitted_md5\tsra_ftp\tsra_bytes\tsra_md5\nSRR5818017\tftp.sra.ebi.ac.uk/vol1/fastq/SRR581/007/SRR5818017/SRR5818017.fastq.gz\t710518408\te4f4e0e59f8d282d8b307e33e2cef0e1\t\t\t\t\t\t\tftp.sra.ebi.ac.uk/vol1/srr/SRR581/007/SRR5818017\t507708313\t149d953e4062bd43d55d651a69762ec3\n" headers: Cache-Control: - - private - Connection: - - Keep-Alive - Content-Encoding: - - gzip - Content-Security-Policy: - - upgrade-insecure-requests + - no-cache, no-store, max-age=0, must-revalidate + Content-Length: + - '365' Content-Type: - text/plain Date: - - Wed, 28 Jul 2021 19:44:44 GMT - Keep-Alive: - - timeout=1, max=10 - NCBI-PHID: - - CC95F819101B3AC10000000000000001.m_1 - NCBI-SID: - - CC95F819101B3AC1_0000SID - Referrer-Policy: - - origin-when-cross-origin - Server: - - Apache - Set-Cookie: - - ncbi_sid=CC95F819101B3AC1_0000SID; domain=.nih.gov; path=/; expires=Thu, 28 - Jul 2022 19:44:44 GMT - SraNameServerOutputVersion: - - '2.0' - Strict-Transport-Security: - - max-age=31536000; includeSubDomains; preload - Transfer-Encoding: - - chunked - Vary: - - Accept-Encoding - X-UA-Compatible: - - IE=Edge - X-XSS-Protection: - - 1; mode=block - status: - code: 200 - message: OK -- request: - body: null - headers: - Accept: - - '*/*' - Accept-Encoding: - - gzip, deflate - Connection: - - keep-alive - User-Agent: - - python-requests/2.25.1 - method: GET - uri: https://www.ebi.ac.uk/ena/portal/api/filereport?accession=SRR5818017&result=read_run - response: - body: - string: "run_accession\tfastq_ftp\tfastq_bytes\tfastq_md5\tsubmitted_ftp\tsubmitted_bytes\tsubmitted_md5\tsra_ftp\tsra_bytes\tsra_md5\nSRR5818017\tftp.sra.ebi.ac.uk/vol1/fastq/SRR581/007/SRR5818017/SRR5818017.fastq.gz\t710518408\te4f4e0e59f8d282d8b307e33e2cef0e1\t\t\t\t\t\t\n" - headers: - Cache-Control: - - no-cache, no-store, max-age=0, must-revalidate - Content-Type: - - text/plain - Date: - - Wed, 28 Jul 2021 19:44:45 GMT - Expires: - - '0' - Pragma: - - no-cache - Server: - - Apache-Coyote/1.1 + - Wed, 17 May 2023 18:37:32 GMT + Expires: + - '0' + Pragma: + - no-cache Strict-Transport-Security: - max-age=0 - Transfer-Encoding: - - chunked X-Content-Type-Options: - nosniff X-Frame-Options: @@ -7884,7 +6508,7 @@ interactions: - 1; mode=block status: code: 200 - message: OK + message: '' - request: body: null headers: @@ -7895,7 +6519,7 @@ interactions: Connection: - keep-alive User-Agent: - - python-requests/2.25.1 + - python-requests/2.30.0 method: GET uri: https://www.ebi.ac.uk/ena/browser/api/xml/SRR5818018 response: @@ -7936,7 +6560,7 @@ interactions: Content-Type: - application/xml Date: - - Wed, 28 Jul 2021 19:44:45 GMT + - Wed, 17 May 2023 18:37:33 GMT Strict-Transport-Security: - max-age=0 Transfer-Encoding: @@ -7954,7 +6578,7 @@ interactions: Connection: - keep-alive User-Agent: - - python-requests/2.25.1 + - python-requests/2.30.0 method: GET uri: https://www.ebi.ac.uk/ena/browser/api/xml/SRX2996265 response: @@ -8011,7 +6635,7 @@ interactions: Content-Type: - application/xml Date: - - Wed, 28 Jul 2021 19:44:45 GMT + - Wed, 17 May 2023 18:37:34 GMT Strict-Transport-Security: - max-age=0 Transfer-Encoding: @@ -8029,54 +6653,40 @@ interactions: Connection: - keep-alive User-Agent: - - python-requests/2.25.1 + - python-requests/2.30.0 method: GET uri: https://www.ebi.ac.uk/ena/browser/api/xml/SRS2347497 response: body: string: "\n\n\n \n SRS2347497\n - \ SAMN07343036\n - \ GSM2700333\n GSM2700333\n \n wt1aGFP_4_pos\n - \ \n 7955\n Danio - rerio\n zebrafish\n - \ \n \n \n \n - \ ENA-STUDY\n SRP111553\n - \ \n \n \n - \ \n ENA-EXPERIMENT\n - \ SRX2996265\n \n \n - \ \n \n ENA-RUN\n - \ SRR5818018-SRR5818019\n \n - \ \n \n \n - \ ENA-SUBMISSION\n SRA585736\n - \ \n \n \n - \ \n ARRAYEXPRESS\n E-GEOD-101204\n - \ \n \n \n - \ \n ENA-FASTQ-FILES\n - \ \n - \ \n \n \n - \ \n ENA-SUBMITTED-FILES\n - \ \n - \ \n \n \n - \ \n \n source_name\n + alias=\"GSM2700333\" center_name=\"Bioinformatics Unit, CNIC\" broker_name=\"NCBI\">\n + \ \n SRS2347497\n SAMN07343036\n GSM2700333\n \n + \ wt1aGFP_4_pos\n \n 7955\n + \ Danio rerio\n zebrafish\n + \ \n \n \n \n + \ ENA-FASTQ-FILES\n \n + \ \n \n \n \n + \ ENA-SUBMITTED-FILES\n \n + \ \n \n\n\n + \ \n INSDC secondary accession\n + \ SRS2347497\n \n + \ \n organism\n Danio + rerio\n \n \n + \ pool\n 4\n \n + \ \n cell type\n wt1a+\n + \ \n \n source_name\n \ Heart\n \n \n - \ cell type\n wt1a+\n - \ \n \n pool\n - \ 4\n \n \n - \ ENA-SPOT-COUNT\n 23930206\n - \ \n \n ENA-BASE-COUNT\n - \ 1459742566\n \n - \ \n ENA-FIRST-PUBLIC\n - \ 2018-03-23\n \n - \ \n ENA-LAST-UPDATE\n - \ 2018-04-04\n \n + \ BioSampleModel\n Generic\n + \ \n \n ENA-FIRST-PUBLIC\n + \ 2018-03-22\n \n \ \n\n\n" headers: Content-Type: - application/xml Date: - - Wed, 28 Jul 2021 19:44:47 GMT + - Wed, 17 May 2023 18:37:33 GMT Strict-Transport-Security: - max-age=0 Transfer-Encoding: @@ -8094,7 +6704,7 @@ interactions: Connection: - keep-alive User-Agent: - - python-requests/2.25.1 + - python-requests/2.30.0 method: GET uri: https://www.ebi.ac.uk/ena/browser/api/xml/SRP111553 response: @@ -8142,7 +6752,7 @@ interactions: Content-Type: - application/xml Date: - - Wed, 28 Jul 2021 19:44:47 GMT + - Wed, 17 May 2023 18:37:34 GMT Strict-Transport-Security: - max-age=0 Transfer-Encoding: @@ -8160,7 +6770,7 @@ interactions: Connection: - keep-alive User-Agent: - - python-requests/2.25.1 + - python-requests/2.30.0 method: GET uri: https://www.ebi.ac.uk/ena/browser/api/xml/SRA585736 response: @@ -8197,7 +6807,7 @@ interactions: Content-Type: - application/xml Date: - - Wed, 28 Jul 2021 19:44:47 GMT + - Wed, 17 May 2023 18:37:35 GMT Strict-Transport-Security: - max-age=0 Transfer-Encoding: @@ -8205,68 +6815,6 @@ interactions: status: code: 200 message: '' -- request: - body: acc=SRR5818018&accept-proto=fasp&version=2.0 - headers: - Accept: - - '*/*' - Accept-Encoding: - - gzip, deflate - Connection: - - keep-alive - Content-Length: - - '44' - User-Agent: - - python-requests/2.25.1 - method: POST - uri: https://www.ncbi.nlm.nih.gov/Traces/names/names.cgi - response: - body: - string: !!binary | - H4sIAAAAAAAAAwzISw6CMBAA0D2naOKCFWY+lI5cwgRduaMtBE1DCdQYkzm8vuU70RmqYx+3t9fb - MFhBARRtiTsRx6IE6BpwDeKdsGfq2T6UHaK4GVuEYIm9D/7SWSaJPMXYiaq2AHpd09fUSynbUZtt - zyWHnMzzMGNK+TNFM+fdlOUf2b+mUKofAAAA//8DAOFuAHyOAAAA - headers: - Cache-Control: - - private - Connection: - - Keep-Alive - Content-Encoding: - - gzip - Content-Security-Policy: - - upgrade-insecure-requests - Content-Type: - - text/plain - Date: - - Wed, 28 Jul 2021 19:44:48 GMT - Keep-Alive: - - timeout=1, max=10 - NCBI-PHID: - - C7A42A14101B3B010000000000000001.m_1 - NCBI-SID: - - C7A42A14101B3B01_0000SID - Referrer-Policy: - - origin-when-cross-origin - Server: - - Apache - Set-Cookie: - - ncbi_sid=C7A42A14101B3B01_0000SID; domain=.nih.gov; path=/; expires=Thu, 28 - Jul 2022 19:44:48 GMT - SraNameServerOutputVersion: - - '2.0' - Strict-Transport-Security: - - max-age=31536000; includeSubDomains; preload - Transfer-Encoding: - - chunked - Vary: - - Accept-Encoding - X-UA-Compatible: - - IE=Edge - X-XSS-Protection: - - 1; mode=block - status: - code: 200 - message: OK - request: body: null headers: @@ -8277,29 +6825,27 @@ interactions: Connection: - keep-alive User-Agent: - - python-requests/2.25.1 + - python-requests/2.30.0 method: GET uri: https://www.ebi.ac.uk/ena/portal/api/filereport?accession=SRR5818018&result=read_run response: body: - string: "run_accession\tfastq_ftp\tfastq_bytes\tfastq_md5\tsubmitted_ftp\tsubmitted_bytes\tsubmitted_md5\tsra_ftp\tsra_bytes\tsra_md5\nSRR5818018\tftp.sra.ebi.ac.uk/vol1/fastq/SRR581/008/SRR5818018/SRR5818018.fastq.gz\t616926968\tad76198d7a162b845f421ab477807d57\t\t\t\t\t\t\n" + string: "run_accession\tfastq_ftp\tfastq_bytes\tfastq_md5\tbam_ftp\tbam_bytes\tbam_md5\tsubmitted_ftp\tsubmitted_bytes\tsubmitted_md5\tsra_ftp\tsra_bytes\tsra_md5\nSRR5818018\tftp.sra.ebi.ac.uk/vol1/fastq/SRR581/008/SRR5818018/SRR5818018.fastq.gz\t616926968\tad76198d7a162b845f421ab477807d57\t\t\t\t\t\t\tftp.sra.ebi.ac.uk/vol1/srr/SRR581/008/SRR5818018\t423688738\t371187f1410c523bbcb965328d3edd68\n" headers: Cache-Control: - no-cache, no-store, max-age=0, must-revalidate + Content-Length: + - '365' Content-Type: - text/plain Date: - - Wed, 28 Jul 2021 19:44:49 GMT + - Wed, 17 May 2023 18:37:35 GMT Expires: - '0' Pragma: - no-cache - Server: - - Apache-Coyote/1.1 Strict-Transport-Security: - max-age=0 - Transfer-Encoding: - - chunked X-Content-Type-Options: - nosniff X-Frame-Options: @@ -8308,7 +6854,7 @@ interactions: - 1; mode=block status: code: 200 - message: OK + message: '' - request: body: null headers: @@ -8319,7 +6865,7 @@ interactions: Connection: - keep-alive User-Agent: - - python-requests/2.25.1 + - python-requests/2.30.0 method: GET uri: https://www.ebi.ac.uk/ena/browser/api/xml/SRR5818019 response: @@ -8360,7 +6906,7 @@ interactions: Content-Type: - application/xml Date: - - Wed, 28 Jul 2021 19:44:49 GMT + - Wed, 17 May 2023 18:37:36 GMT Strict-Transport-Security: - max-age=0 Transfer-Encoding: @@ -8378,7 +6924,7 @@ interactions: Connection: - keep-alive User-Agent: - - python-requests/2.25.1 + - python-requests/2.30.0 method: GET uri: https://www.ebi.ac.uk/ena/browser/api/xml/SRX2996265 response: @@ -8435,7 +6981,7 @@ interactions: Content-Type: - application/xml Date: - - Wed, 28 Jul 2021 19:44:49 GMT + - Wed, 17 May 2023 18:37:35 GMT Strict-Transport-Security: - max-age=0 Transfer-Encoding: @@ -8453,54 +6999,40 @@ interactions: Connection: - keep-alive User-Agent: - - python-requests/2.25.1 + - python-requests/2.30.0 method: GET uri: https://www.ebi.ac.uk/ena/browser/api/xml/SRS2347497 response: body: string: "\n\n\n \n SRS2347497\n - \ SAMN07343036\n - \ GSM2700333\n GSM2700333\n \n wt1aGFP_4_pos\n - \ \n 7955\n Danio - rerio\n zebrafish\n - \ \n \n \n \n - \ ENA-STUDY\n SRP111553\n - \ \n \n \n - \ \n ENA-EXPERIMENT\n - \ SRX2996265\n \n \n - \ \n \n ENA-RUN\n - \ SRR5818018-SRR5818019\n \n - \ \n \n \n - \ ENA-SUBMISSION\n SRA585736\n - \ \n \n \n - \ \n ARRAYEXPRESS\n E-GEOD-101204\n - \ \n \n \n - \ \n ENA-FASTQ-FILES\n - \ \n - \ \n \n \n - \ \n ENA-SUBMITTED-FILES\n - \ \n - \ \n \n \n - \ \n \n source_name\n + alias=\"GSM2700333\" center_name=\"Bioinformatics Unit, CNIC\" broker_name=\"NCBI\">\n + \ \n SRS2347497\n SAMN07343036\n GSM2700333\n \n + \ wt1aGFP_4_pos\n \n 7955\n + \ Danio rerio\n zebrafish\n + \ \n \n \n \n + \ ENA-FASTQ-FILES\n \n + \ \n \n \n \n + \ ENA-SUBMITTED-FILES\n \n + \ \n \n\n\n + \ \n INSDC secondary accession\n + \ SRS2347497\n \n + \ \n organism\n Danio + rerio\n \n \n + \ pool\n 4\n \n + \ \n cell type\n wt1a+\n + \ \n \n source_name\n \ Heart\n \n \n - \ cell type\n wt1a+\n - \ \n \n pool\n - \ 4\n \n \n - \ ENA-SPOT-COUNT\n 23930206\n - \ \n \n ENA-BASE-COUNT\n - \ 1459742566\n \n - \ \n ENA-FIRST-PUBLIC\n - \ 2018-03-23\n \n - \ \n ENA-LAST-UPDATE\n - \ 2018-04-04\n \n + \ BioSampleModel\n Generic\n + \ \n \n ENA-FIRST-PUBLIC\n + \ 2018-03-22\n \n \ \n\n\n" headers: Content-Type: - application/xml Date: - - Wed, 28 Jul 2021 19:44:51 GMT + - Wed, 17 May 2023 18:37:36 GMT Strict-Transport-Security: - max-age=0 Transfer-Encoding: @@ -8518,7 +7050,7 @@ interactions: Connection: - keep-alive User-Agent: - - python-requests/2.25.1 + - python-requests/2.30.0 method: GET uri: https://www.ebi.ac.uk/ena/browser/api/xml/SRP111553 response: @@ -8566,7 +7098,7 @@ interactions: Content-Type: - application/xml Date: - - Wed, 28 Jul 2021 19:44:51 GMT + - Wed, 17 May 2023 18:37:37 GMT Strict-Transport-Security: - max-age=0 Transfer-Encoding: @@ -8584,7 +7116,7 @@ interactions: Connection: - keep-alive User-Agent: - - python-requests/2.25.1 + - python-requests/2.30.0 method: GET uri: https://www.ebi.ac.uk/ena/browser/api/xml/SRA585736 response: @@ -8621,7 +7153,7 @@ interactions: Content-Type: - application/xml Date: - - Wed, 28 Jul 2021 19:44:52 GMT + - Wed, 17 May 2023 18:37:37 GMT Strict-Transport-Security: - max-age=0 Transfer-Encoding: @@ -8629,68 +7161,6 @@ interactions: status: code: 200 message: '' -- request: - body: acc=SRR5818019&accept-proto=fasp&version=2.0 - headers: - Accept: - - '*/*' - Accept-Encoding: - - gzip, deflate - Connection: - - keep-alive - Content-Length: - - '44' - User-Agent: - - python-requests/2.25.1 - method: POST - uri: https://www.ncbi.nlm.nih.gov/Traces/names/names.cgi - response: - body: - string: !!binary | - H4sIAAAAAAAAAwzISwrCMBAA0H1PEXDRVWVmkpimlxCqK3f5lSqhCW1EhDm8vuU70Rm6Y3f17fk2 - z3rEEdCykoq0NUYzAZoBzIB4J5wkTTA+2Cm/BLxE7zxGtRiyQWlNSQar0UZkZgXA1y1/Rb+2Vo9e - 1L20EkoWz0O4nMsnRbGUXbT1H8W/UmjdDwAA//8DALIzE9+OAAAA - headers: - Cache-Control: - - private - Connection: - - Keep-Alive - Content-Encoding: - - gzip - Content-Security-Policy: - - upgrade-insecure-requests - Content-Type: - - text/plain - Date: - - Wed, 28 Jul 2021 19:44:52 GMT - Keep-Alive: - - timeout=1, max=10 - NCBI-PHID: - - C7A42A3F101B3B410000000000000001.m_1 - NCBI-SID: - - C7A42A3F101B3B41_0000SID - Referrer-Policy: - - origin-when-cross-origin - Server: - - Apache - Set-Cookie: - - ncbi_sid=C7A42A3F101B3B41_0000SID; domain=.nih.gov; path=/; expires=Thu, 28 - Jul 2022 19:44:52 GMT - SraNameServerOutputVersion: - - '2.0' - Strict-Transport-Security: - - max-age=31536000; includeSubDomains; preload - Transfer-Encoding: - - chunked - Vary: - - Accept-Encoding - X-UA-Compatible: - - IE=Edge - X-XSS-Protection: - - 1; mode=block - status: - code: 200 - message: OK - request: body: null headers: @@ -8701,29 +7171,27 @@ interactions: Connection: - keep-alive User-Agent: - - python-requests/2.25.1 + - python-requests/2.30.0 method: GET uri: https://www.ebi.ac.uk/ena/portal/api/filereport?accession=SRR5818019&result=read_run response: body: - string: "run_accession\tfastq_ftp\tfastq_bytes\tfastq_md5\tsubmitted_ftp\tsubmitted_bytes\tsubmitted_md5\tsra_ftp\tsra_bytes\tsra_md5\nSRR5818019\tftp.sra.ebi.ac.uk/vol1/fastq/SRR581/009/SRR5818019/SRR5818019.fastq.gz\t631703792\t4b04c53f6f028dc9fad6338662a5f1bc\t\t\t\t\t\t\n" + string: "run_accession\tfastq_ftp\tfastq_bytes\tfastq_md5\tbam_ftp\tbam_bytes\tbam_md5\tsubmitted_ftp\tsubmitted_bytes\tsubmitted_md5\tsra_ftp\tsra_bytes\tsra_md5\nSRR5818019\tftp.sra.ebi.ac.uk/vol1/fastq/SRR581/009/SRR5818019/SRR5818019.fastq.gz\t631703792\t4b04c53f6f028dc9fad6338662a5f1bc\t\t\t\t\t\t\tftp.sra.ebi.ac.uk/vol1/srr/SRR581/009/SRR5818019\t434259775\ta4bfc16dbab1d4f729c4552e3c9519d1\n" headers: Cache-Control: - no-cache, no-store, max-age=0, must-revalidate + Content-Length: + - '365' Content-Type: - text/plain Date: - - Wed, 28 Jul 2021 19:44:52 GMT + - Wed, 17 May 2023 18:37:38 GMT Expires: - '0' Pragma: - no-cache - Server: - - Apache-Coyote/1.1 Strict-Transport-Security: - max-age=0 - Transfer-Encoding: - - chunked X-Content-Type-Options: - nosniff X-Frame-Options: @@ -8732,7 +7200,7 @@ interactions: - 1; mode=block status: code: 200 - message: OK + message: '' - request: body: null headers: @@ -8743,7 +7211,7 @@ interactions: Connection: - keep-alive User-Agent: - - python-requests/2.25.1 + - python-requests/2.30.0 method: GET uri: https://www.ebi.ac.uk/ena/browser/api/xml/DRP003977 response: @@ -8751,14 +7219,16 @@ interactions: string: "\n\n\n \n \ DRP003977\n PRJDB4470\n - \ PRJDB4470\n + \ PRJDB4470\n \ DRP003977\n \n \ \n Gene expression analysis of the - zebrafish brain\n \n Gene expression profiling by RNA-seq - of specific regions and subpopulations of neurons in the zebrafish brain that - control behaviors.\n \n \n - \ \n \n ENA-SAMPLE\n + zebrafish brain\n \n + \ Gene expression profiling by RNA-seq of specific + regions and subpopulations of neurons in the zebrafish brain that control + behaviors.\n Gene expression + profiling by RNA-seq of specific regions and subpopulations of neurons in + the zebrafish brain that control behaviors.\n \n + \ \n \n \n ENA-SAMPLE\n \ DRS057265-DRS057267,DRS057269-DRS057272,DRS057274-DRS057275\n \ \n \n \n \ \n ENA-EXPERIMENT\n @@ -8767,7 +7237,7 @@ interactions: \ ENA-RUN\n DRR051059-DRR051067\n \ \n \n \n \ \n ENA-SUBMISSION\n - \ DRA004276\n \n \n + \ DRA008860\n \n \n \ \n \n ENA-FASTQ-FILES\n \ \n \ \n \n \n @@ -8779,13 +7249,13 @@ interactions: \ ENA-BASE-COUNT\n 182690550386\n \ \n \n ENA-FIRST-PUBLIC\n \ 2018-01-08\n \n \n - \ ENA-LAST-UPDATE\n 2018-01-08\n + \ ENA-LAST-UPDATE\n 2021-08-11\n \ \n \n\n\n" headers: Content-Type: - application/xml Date: - - Wed, 28 Jul 2021 19:44:53 GMT + - Wed, 17 May 2023 18:37:37 GMT Strict-Transport-Security: - max-age=0 Transfer-Encoding: @@ -8803,7 +7273,7 @@ interactions: Connection: - keep-alive User-Agent: - - python-requests/2.25.1 + - python-requests/2.30.0 method: GET uri: https://www.ebi.ac.uk/ena/browser/api/xml/DRR051059 response: @@ -8837,7 +7307,7 @@ interactions: Content-Type: - application/xml Date: - - Wed, 28 Jul 2021 19:44:54 GMT + - Wed, 17 May 2023 18:37:38 GMT Strict-Transport-Security: - max-age=0 Transfer-Encoding: @@ -8855,7 +7325,7 @@ interactions: Connection: - keep-alive User-Agent: - - python-requests/2.25.1 + - python-requests/2.30.0 method: GET uri: https://www.ebi.ac.uk/ena/browser/api/xml/DRX045951 response: @@ -8911,7 +7381,7 @@ interactions: Content-Type: - application/xml Date: - - Wed, 28 Jul 2021 19:44:54 GMT + - Wed, 17 May 2023 18:37:39 GMT Strict-Transport-Security: - max-age=0 Transfer-Encoding: @@ -8929,55 +7399,43 @@ interactions: Connection: - keep-alive User-Agent: - - python-requests/2.25.1 + - python-requests/2.30.0 method: GET uri: https://www.ebi.ac.uk/ena/browser/api/xml/DRS057270 response: body: string: "\n\n\n \n - \ DRS057270\n SAMD00044993\n DRS057270\n \n Danio - rerio\n \n 7955\n Danio - rerio\n zebrafish\n - \ \n \n \n \n - \ ENA-STUDY\n DRP003977\n - \ \n \n \n - \ \n ENA-EXPERIMENT\n - \ DRX045951\n \n \n - \ \n \n ENA-RUN\n - \ DRR051059\n \n \n - \ \n \n ENA-SUBMISSION\n - \ DRA004269\n \n \n - \ \n \n ENA-FASTQ-FILES\n - \ \n - \ \n \n \n - \ \n ENA-SUBMITTED-FILES\n - \ \n - \ \n \n \n - \ \n \n description\n - \ Whole brain of adult zebrafish\n \n - \ \n bioproject_id\n PRJDB4470\n - \ \n \n sample_name\n - \ WB\n \n \n - \ sample_title\n zebrafish whole - brain\n \n \n - \ genotype\n WT\n \n - \ \n tissue_type\n brain\n - \ \n \n ENA-SPOT-COUNT\n - \ 125165088\n \n \n - \ ENA-BASE-COUNT\n 25283347776\n - \ \n \n ENA-FIRST-PUBLIC\n - \ 2018-01-07\n \n - \ \n ENA-LAST-UPDATE\n - \ 2018-01-07\n \n + alias=\"SAMD00044993\" center_name=\"National Institute of Genetics (Japan)\" + broker_name=\"DDBJ\">\n \n DRS057270\n + \ SAMD00044993\n + \ \n zebrafish whole brain\n \n + \ 7955\n Danio rerio\n + \ zebrafish\n \n Whole + brain of adult zebrafish\n \n \n + \ \n ENA-FASTQ-FILES\n \n + \ \n \n \n \n + \ ENA-SUBMITTED-FILES\n \n + \ \n \n\n\n + \ \n INSDC secondary accession\n + \ DRS057270\n \n \n + \ NCBI submission package\n Generic.1.0\n + \ \n \n organism\n + \ Danio rerio\n \n + \ \n tissue type\n brain\n + \ \n \n sample + name\n WB\n \n + \ \n genotype\n WT\n + \ \n \n BioSampleModel\n + \ Generic\n \n \n + \ ENA-FIRST-PUBLIC\n 2018-01-06\n + \ \n \n ENA-LAST-UPDATE\n + \ 2018-01-06\n \n \ \n\n\n" headers: Content-Type: - application/xml Date: - - Wed, 28 Jul 2021 19:44:55 GMT + - Wed, 17 May 2023 18:37:39 GMT Strict-Transport-Security: - max-age=0 Transfer-Encoding: @@ -8995,7 +7453,7 @@ interactions: Connection: - keep-alive User-Agent: - - python-requests/2.25.1 + - python-requests/2.30.0 method: GET uri: https://www.ebi.ac.uk/ena/browser/api/xml/DRP003977 response: @@ -9003,14 +7461,16 @@ interactions: string: "\n\n\n \n \ DRP003977\n PRJDB4470\n - \ PRJDB4470\n + \ PRJDB4470\n \ DRP003977\n \n \ \n Gene expression analysis of the - zebrafish brain\n \n Gene expression profiling by RNA-seq - of specific regions and subpopulations of neurons in the zebrafish brain that - control behaviors.\n \n \n - \ \n \n ENA-SAMPLE\n + zebrafish brain\n \n + \ Gene expression profiling by RNA-seq of specific + regions and subpopulations of neurons in the zebrafish brain that control + behaviors.\n Gene expression + profiling by RNA-seq of specific regions and subpopulations of neurons in + the zebrafish brain that control behaviors.\n \n + \ \n \n \n ENA-SAMPLE\n \ DRS057265-DRS057267,DRS057269-DRS057272,DRS057274-DRS057275\n \ \n \n \n \ \n ENA-EXPERIMENT\n @@ -9019,7 +7479,7 @@ interactions: \ ENA-RUN\n DRR051059-DRR051067\n \ \n \n \n \ \n ENA-SUBMISSION\n - \ DRA004276\n \n \n + \ DRA008860\n \n \n \ \n \n ENA-FASTQ-FILES\n \ \n \ \n \n \n @@ -9031,13 +7491,13 @@ interactions: \ ENA-BASE-COUNT\n 182690550386\n \ \n \n ENA-FIRST-PUBLIC\n \ 2018-01-08\n \n \n - \ ENA-LAST-UPDATE\n 2018-01-08\n + \ ENA-LAST-UPDATE\n 2021-08-11\n \ \n \n\n\n" headers: Content-Type: - application/xml Date: - - Wed, 28 Jul 2021 19:44:55 GMT + - Wed, 17 May 2023 18:37:40 GMT Strict-Transport-Security: - max-age=0 Transfer-Encoding: @@ -9055,7 +7515,7 @@ interactions: Connection: - keep-alive User-Agent: - - python-requests/2.25.1 + - python-requests/2.30.0 method: GET uri: https://www.ebi.ac.uk/ena/browser/api/xml/DRA004269 response: @@ -9089,7 +7549,7 @@ interactions: Content-Type: - application/xml Date: - - Wed, 28 Jul 2021 19:44:56 GMT + - Wed, 17 May 2023 18:37:40 GMT Strict-Transport-Security: - max-age=0 Transfer-Encoding: @@ -9097,68 +7557,6 @@ interactions: status: code: 200 message: '' -- request: - body: acc=DRR051059&accept-proto=fasp&version=2.0 - headers: - Accept: - - '*/*' - Accept-Encoding: - - gzip, deflate - Connection: - - keep-alive - Content-Length: - - '43' - User-Agent: - - python-requests/2.25.1 - method: POST - uri: https://www.ncbi.nlm.nih.gov/Traces/names/names.cgi - response: - body: - string: !!binary | - H4sIAAAAAAAAAwzJuwrCMBQA0L1fEXDoVLk3ryad3YXi5JbElCrBhCQiwv14u55z4mcYWnXl4+my - rqAQlCWcZ2ulAK6ROKCZACfQNzSLFIvid9JmlsGI44OOUYCVm3DaK8M5BiENEUkAur7Tj41776WN - rNTcc8iJPRtzKeVvfLAtV9b3A7J/xdCHPwAAAP//AwD5xduojwAAAA== - headers: - Cache-Control: - - private - Connection: - - Keep-Alive - Content-Encoding: - - gzip - Content-Security-Policy: - - upgrade-insecure-requests - Content-Type: - - text/plain - Date: - - Wed, 28 Jul 2021 19:44:57 GMT - Keep-Alive: - - timeout=1, max=10 - NCBI-PHID: - - CC95F88E101B3B910000000000000001.m_1 - NCBI-SID: - - CC95F88E101B3B91_0000SID - Referrer-Policy: - - origin-when-cross-origin - Server: - - Apache - Set-Cookie: - - ncbi_sid=CC95F88E101B3B91_0000SID; domain=.nih.gov; path=/; expires=Thu, 28 - Jul 2022 19:44:57 GMT - SraNameServerOutputVersion: - - '2.0' - Strict-Transport-Security: - - max-age=31536000; includeSubDomains; preload - Transfer-Encoding: - - chunked - Vary: - - Accept-Encoding - X-UA-Compatible: - - IE=Edge - X-XSS-Protection: - - 1; mode=block - status: - code: 200 - message: OK - request: body: null headers: @@ -9169,29 +7567,27 @@ interactions: Connection: - keep-alive User-Agent: - - python-requests/2.25.1 + - python-requests/2.30.0 method: GET uri: https://www.ebi.ac.uk/ena/portal/api/filereport?accession=DRR051059&result=read_run response: body: - string: "run_accession\tfastq_ftp\tfastq_bytes\tfastq_md5\tsubmitted_ftp\tsubmitted_bytes\tsubmitted_md5\tsra_ftp\tsra_bytes\tsra_md5\nDRR051059\tftp.sra.ebi.ac.uk/vol1/fastq/DRR051/DRR051059/DRR051059_1.fastq.gz;ftp.sra.ebi.ac.uk/vol1/fastq/DRR051/DRR051059/DRR051059_2.fastq.gz\t11191882751;11504627040\t5437a4dd2fe03230513793d9a5e1c999;5bc99fce97935ae4b0950745beeed48c\t\t\t\t\t\t\n" + string: "run_accession\tfastq_ftp\tfastq_bytes\tfastq_md5\tbam_ftp\tbam_bytes\tbam_md5\tsubmitted_ftp\tsubmitted_bytes\tsubmitted_md5\tsra_ftp\tsra_bytes\tsra_md5\nDRR051059\tftp.sra.ebi.ac.uk/vol1/fastq/DRR051/DRR051059/DRR051059_1.fastq.gz;ftp.sra.ebi.ac.uk/vol1/fastq/DRR051/DRR051059/DRR051059_2.fastq.gz\t11191882751;11504627040\t5437a4dd2fe03230513793d9a5e1c999;5bc99fce97935ae4b0950745beeed48c\t\t\t\t\t\t\tftp.sra.ebi.ac.uk/vol1/drr/DRR051/DRR051059\t17799430261\t6874c83261c6ee3094f3a6b58221c348\n" headers: Cache-Control: - no-cache, no-store, max-age=0, must-revalidate + Content-Length: + - '471' Content-Type: - text/plain Date: - - Wed, 28 Jul 2021 19:44:58 GMT + - Wed, 17 May 2023 18:37:41 GMT Expires: - '0' Pragma: - no-cache - Server: - - Apache-Coyote/1.1 Strict-Transport-Security: - max-age=0 - Transfer-Encoding: - - chunked X-Content-Type-Options: - nosniff X-Frame-Options: @@ -9200,7 +7596,7 @@ interactions: - 1; mode=block status: code: 200 - message: OK + message: '' - request: body: null headers: @@ -9211,7 +7607,7 @@ interactions: Connection: - keep-alive User-Agent: - - python-requests/2.25.1 + - python-requests/2.30.0 method: GET uri: https://www.ebi.ac.uk/ena/browser/api/xml/DRR051060 response: @@ -9245,7 +7641,7 @@ interactions: Content-Type: - application/xml Date: - - Wed, 28 Jul 2021 19:44:59 GMT + - Wed, 17 May 2023 18:37:41 GMT Strict-Transport-Security: - max-age=0 Transfer-Encoding: @@ -9263,7 +7659,7 @@ interactions: Connection: - keep-alive User-Agent: - - python-requests/2.25.1 + - python-requests/2.30.0 method: GET uri: https://www.ebi.ac.uk/ena/browser/api/xml/DRX045952 response: @@ -9319,7 +7715,7 @@ interactions: Content-Type: - application/xml Date: - - Wed, 28 Jul 2021 19:44:59 GMT + - Wed, 17 May 2023 18:37:41 GMT Strict-Transport-Security: - max-age=0 Transfer-Encoding: @@ -9337,55 +7733,43 @@ interactions: Connection: - keep-alive User-Agent: - - python-requests/2.25.1 + - python-requests/2.30.0 method: GET uri: https://www.ebi.ac.uk/ena/browser/api/xml/DRS057269 response: body: string: "\n\n\n \n - \ DRS057269\n SAMD00044992\n DRS057269\n \n Danio - rerio\n \n 7955\n Danio - rerio\n zebrafish\n - \ \n \n \n \n - \ ENA-STUDY\n DRP003977\n - \ \n \n \n - \ \n ENA-EXPERIMENT\n - \ DRX045952\n \n \n - \ \n \n ENA-RUN\n - \ DRR051060\n \n \n - \ \n \n ENA-SUBMISSION\n - \ DRA004270\n \n \n - \ \n \n ENA-FASTQ-FILES\n - \ \n - \ \n \n \n - \ \n ENA-SUBMITTED-FILES\n - \ \n - \ \n \n \n - \ \n \n description\n - \ Telencephalon of adult zebrafrish barin\n \n - \ \n bioproject_id\n PRJDB4470\n - \ \n \n sample_name\n - \ Tel\n \n \n - \ sample_title\n zebrafihsh telencephalon\n - \ \n \n genotype\n - \ WT\n \n \n - \ tissue_type\n brain\n - \ \n \n ENA-SPOT-COUNT\n - \ 99040238\n \n \n - \ ENA-BASE-COUNT\n 20006128076\n - \ \n \n ENA-FIRST-PUBLIC\n - \ 2018-01-07\n \n - \ \n ENA-LAST-UPDATE\n - \ 2018-01-07\n \n + alias=\"SAMD00044992\" center_name=\"National Institute of Genetics (Japan)\" + broker_name=\"DDBJ\">\n \n DRS057269\n + \ SAMD00044992\n + \ \n zebrafihsh telencephalon\n \n + \ 7955\n Danio rerio\n + \ zebrafish\n \n Telencephalon + of adult zebrafrish barin\n \n \n + \ \n ENA-FASTQ-FILES\n \n + \ \n \n \n \n + \ ENA-SUBMITTED-FILES\n \n + \ \n \n\n\n + \ \n INSDC secondary accession\n + \ DRS057269\n \n \n + \ NCBI submission package\n Generic.1.0\n + \ \n \n organism\n + \ Danio rerio\n \n + \ \n tissue type\n brain\n + \ \n \n sample + name\n Tel\n \n + \ \n genotype\n WT\n + \ \n \n BioSampleModel\n + \ Generic\n \n \n + \ ENA-FIRST-PUBLIC\n 2018-01-06\n + \ \n \n ENA-LAST-UPDATE\n + \ 2018-01-06\n \n \ \n\n\n" headers: Content-Type: - application/xml Date: - - Wed, 28 Jul 2021 19:44:59 GMT + - Wed, 17 May 2023 18:37:41 GMT Strict-Transport-Security: - max-age=0 Transfer-Encoding: @@ -9403,7 +7787,7 @@ interactions: Connection: - keep-alive User-Agent: - - python-requests/2.25.1 + - python-requests/2.30.0 method: GET uri: https://www.ebi.ac.uk/ena/browser/api/xml/DRP003977 response: @@ -9411,14 +7795,16 @@ interactions: string: "\n\n\n \n \ DRP003977\n PRJDB4470\n - \ PRJDB4470\n + \ PRJDB4470\n \ DRP003977\n \n \ \n Gene expression analysis of the - zebrafish brain\n \n Gene expression profiling by RNA-seq - of specific regions and subpopulations of neurons in the zebrafish brain that - control behaviors.\n \n \n - \ \n \n ENA-SAMPLE\n + zebrafish brain\n \n + \ Gene expression profiling by RNA-seq of specific + regions and subpopulations of neurons in the zebrafish brain that control + behaviors.\n Gene expression + profiling by RNA-seq of specific regions and subpopulations of neurons in + the zebrafish brain that control behaviors.\n \n + \ \n \n \n ENA-SAMPLE\n \ DRS057265-DRS057267,DRS057269-DRS057272,DRS057274-DRS057275\n \ \n \n \n \ \n ENA-EXPERIMENT\n @@ -9427,7 +7813,7 @@ interactions: \ ENA-RUN\n DRR051059-DRR051067\n \ \n \n \n \ \n ENA-SUBMISSION\n - \ DRA004276\n \n \n + \ DRA008860\n \n \n \ \n \n ENA-FASTQ-FILES\n \ \n \ \n \n \n @@ -9439,13 +7825,13 @@ interactions: \ ENA-BASE-COUNT\n 182690550386\n \ \n \n ENA-FIRST-PUBLIC\n \ 2018-01-08\n \n \n - \ ENA-LAST-UPDATE\n 2018-01-08\n + \ ENA-LAST-UPDATE\n 2021-08-11\n \ \n \n\n\n" headers: Content-Type: - application/xml Date: - - Wed, 28 Jul 2021 19:45:00 GMT + - Wed, 17 May 2023 18:37:42 GMT Strict-Transport-Security: - max-age=0 Transfer-Encoding: @@ -9463,7 +7849,7 @@ interactions: Connection: - keep-alive User-Agent: - - python-requests/2.25.1 + - python-requests/2.30.0 method: GET uri: https://www.ebi.ac.uk/ena/browser/api/xml/DRA004270 response: @@ -9497,7 +7883,7 @@ interactions: Content-Type: - application/xml Date: - - Wed, 28 Jul 2021 19:45:01 GMT + - Wed, 17 May 2023 18:37:43 GMT Strict-Transport-Security: - max-age=0 Transfer-Encoding: @@ -9505,68 +7891,6 @@ interactions: status: code: 200 message: '' -- request: - body: acc=DRR051060&accept-proto=fasp&version=2.0 - headers: - Accept: - - '*/*' - Accept-Encoding: - - gzip, deflate - Connection: - - keep-alive - Content-Length: - - '43' - User-Agent: - - python-requests/2.25.1 - method: POST - uri: https://www.ncbi.nlm.nih.gov/Traces/names/names.cgi - response: - body: - string: !!binary | - H4sIAAAAAAAAAwzIsQrDIBAA0D1fIXTIlHKn0Wrm7oXQqZsaJS1SRS2lcB/fjO+d+BmGVm35OLqu - K0gEBYQzaKHxACcOqCfACdQd9SLUgvJBXqsguMQQLXijHDfiYiK33s6blaiIaAag2zv92Lj3XtrI - Ss09+5zYszGbUv6GjcVcWd+PyO4VfB/+AAAA//8DAGeGt82PAAAA - headers: - Cache-Control: - - private - Connection: - - Keep-Alive - Content-Encoding: - - gzip - Content-Security-Policy: - - upgrade-insecure-requests - Content-Type: - - text/plain - Date: - - Wed, 28 Jul 2021 19:45:01 GMT - Keep-Alive: - - timeout=1, max=10 - NCBI-PHID: - - CC95F912101B3BD10000000000000001.m_1 - NCBI-SID: - - CC95F912101B3BD1_0000SID - Referrer-Policy: - - origin-when-cross-origin - Server: - - Apache - Set-Cookie: - - ncbi_sid=CC95F912101B3BD1_0000SID; domain=.nih.gov; path=/; expires=Thu, 28 - Jul 2022 19:45:01 GMT - SraNameServerOutputVersion: - - '2.0' - Strict-Transport-Security: - - max-age=31536000; includeSubDomains; preload - Transfer-Encoding: - - chunked - Vary: - - Accept-Encoding - X-UA-Compatible: - - IE=Edge - X-XSS-Protection: - - 1; mode=block - status: - code: 200 - message: OK - request: body: null headers: @@ -9577,29 +7901,27 @@ interactions: Connection: - keep-alive User-Agent: - - python-requests/2.25.1 + - python-requests/2.30.0 method: GET uri: https://www.ebi.ac.uk/ena/portal/api/filereport?accession=DRR051060&result=read_run response: body: - string: "run_accession\tfastq_ftp\tfastq_bytes\tfastq_md5\tsubmitted_ftp\tsubmitted_bytes\tsubmitted_md5\tsra_ftp\tsra_bytes\tsra_md5\nDRR051060\tftp.sra.ebi.ac.uk/vol1/fastq/DRR051/DRR051060/DRR051060_1.fastq.gz;ftp.sra.ebi.ac.uk/vol1/fastq/DRR051/DRR051060/DRR051060_2.fastq.gz\t8860709458;9122863611\tb02f28ce177a28116323c9d9b85086f3;41a443250ebd3dcf3d9c19e3a6bf4ea9\t\t\t\t\t\t\n" + string: "run_accession\tfastq_ftp\tfastq_bytes\tfastq_md5\tbam_ftp\tbam_bytes\tbam_md5\tsubmitted_ftp\tsubmitted_bytes\tsubmitted_md5\tsra_ftp\tsra_bytes\tsra_md5\nDRR051060\tftp.sra.ebi.ac.uk/vol1/fastq/DRR051/DRR051060/DRR051060_1.fastq.gz;ftp.sra.ebi.ac.uk/vol1/fastq/DRR051/DRR051060/DRR051060_2.fastq.gz\t8860709458;9122863611\tb02f28ce177a28116323c9d9b85086f3;41a443250ebd3dcf3d9c19e3a6bf4ea9\t\t\t\t\t\t\tftp.sra.ebi.ac.uk/vol1/drr/DRR051/DRR051060\t14083815102\tc86e3251efa0c96b29379f2aca4da516\n" headers: Cache-Control: - no-cache, no-store, max-age=0, must-revalidate + Content-Length: + - '469' Content-Type: - text/plain Date: - - Wed, 28 Jul 2021 19:45:02 GMT + - Wed, 17 May 2023 18:37:43 GMT Expires: - '0' Pragma: - no-cache - Server: - - Apache-Coyote/1.1 Strict-Transport-Security: - max-age=0 - Transfer-Encoding: - - chunked X-Content-Type-Options: - nosniff X-Frame-Options: @@ -9608,7 +7930,7 @@ interactions: - 1; mode=block status: code: 200 - message: OK + message: '' - request: body: null headers: @@ -9619,7 +7941,7 @@ interactions: Connection: - keep-alive User-Agent: - - python-requests/2.25.1 + - python-requests/2.30.0 method: GET uri: https://www.ebi.ac.uk/ena/browser/api/xml/DRR051061 response: @@ -9653,7 +7975,7 @@ interactions: Content-Type: - application/xml Date: - - Wed, 28 Jul 2021 19:45:02 GMT + - Wed, 17 May 2023 18:37:44 GMT Strict-Transport-Security: - max-age=0 Transfer-Encoding: @@ -9671,7 +7993,7 @@ interactions: Connection: - keep-alive User-Agent: - - python-requests/2.25.1 + - python-requests/2.30.0 method: GET uri: https://www.ebi.ac.uk/ena/browser/api/xml/DRX045953 response: @@ -9728,7 +8050,7 @@ interactions: Content-Type: - application/xml Date: - - Wed, 28 Jul 2021 19:45:03 GMT + - Wed, 17 May 2023 18:37:44 GMT Strict-Transport-Security: - max-age=0 Transfer-Encoding: @@ -9746,57 +8068,44 @@ interactions: Connection: - keep-alive User-Agent: - - python-requests/2.25.1 + - python-requests/2.30.0 method: GET uri: https://www.ebi.ac.uk/ena/browser/api/xml/DRS057274 response: body: string: "\n\n\n \n - \ DRS057274\n SAMD00044989\n DRS057274\n \n Danio - rerio\n \n 7955\n Danio - rerio\n zebrafish\n - \ \n \n \n \n - \ ENA-STUDY\n DRP003977\n - \ \n \n \n - \ \n ENA-EXPERIMENT\n - \ DRX045953\n \n \n - \ \n \n ENA-RUN\n - \ DRR051061\n \n \n - \ \n \n ENA-SUBMISSION\n - \ DRA004271\n \n \n - \ \n \n ENA-FASTQ-FILES\n - \ \n - \ \n \n \n - \ \n ENA-SUBMITTED-FILES\n - \ \n - \ \n \n \n - \ \n \n description\n - \ Collected from 10 adult fish by using FACS\n - \ \n \n bioproject_id\n - \ PRJDB4470\n \n \n - \ sample_name\n 231A_GFP_plus_WB\n - \ \n \n sample_title\n - \ GFP+ cells from whole brain of SAGFF(LF)231A;UAS:GFP - transgenic zebrafish\n \n \n - \ genotype\n SAGFF(LF)231A;UAS:GFP\n - \ \n \n tissue_type\n - \ brain\n \n \n - \ ENA-SPOT-COUNT\n 136153270\n - \ \n \n ENA-BASE-COUNT\n - \ 27230654000\n \n - \ \n ENA-FIRST-PUBLIC\n - \ 2018-01-07\n \n - \ \n ENA-LAST-UPDATE\n - \ 2018-01-07\n \n + alias=\"SAMD00044989\" center_name=\"National Institute of Genetics (Japan)\" + broker_name=\"DDBJ\">\n \n DRS057274\n + \ SAMD00044989\n + \ \n GFP+ cells from whole brain of SAGFF(LF)231A;UAS:GFP + transgenic zebrafish\n \n 7955\n + \ Danio rerio\n zebrafish\n + \ \n Collected from 10 adult fish by using + FACS\n \n \n \n + \ ENA-FASTQ-FILES\n \n + \ \n \n \n \n + \ ENA-SUBMITTED-FILES\n \n + \ \n \n\n\n + \ \n INSDC secondary accession\n + \ DRS057274\n \n \n + \ NCBI submission package\n Generic.1.0\n + \ \n \n organism\n + \ Danio rerio\n \n + \ \n tissue type\n brain\n + \ \n \n sample + name\n 231A_GFP_plus_WB\n \n + \ \n genotype\n SAGFF(LF)231A;UAS:GFP\n + \ \n \n BioSampleModel\n + \ Generic\n \n \n + \ ENA-FIRST-PUBLIC\n 2018-01-06\n + \ \n \n ENA-LAST-UPDATE\n + \ 2018-01-06\n \n \ \n\n\n" headers: Content-Type: - application/xml Date: - - Wed, 28 Jul 2021 19:45:04 GMT + - Wed, 17 May 2023 18:37:44 GMT Strict-Transport-Security: - max-age=0 Transfer-Encoding: @@ -9814,7 +8123,7 @@ interactions: Connection: - keep-alive User-Agent: - - python-requests/2.25.1 + - python-requests/2.30.0 method: GET uri: https://www.ebi.ac.uk/ena/browser/api/xml/DRP003977 response: @@ -9822,14 +8131,16 @@ interactions: string: "\n\n\n \n \ DRP003977\n PRJDB4470\n - \ PRJDB4470\n + \ PRJDB4470\n \ DRP003977\n \n \ \n Gene expression analysis of the - zebrafish brain\n \n Gene expression profiling by RNA-seq - of specific regions and subpopulations of neurons in the zebrafish brain that - control behaviors.\n \n \n - \ \n \n ENA-SAMPLE\n + zebrafish brain\n \n + \ Gene expression profiling by RNA-seq of specific + regions and subpopulations of neurons in the zebrafish brain that control + behaviors.\n Gene expression + profiling by RNA-seq of specific regions and subpopulations of neurons in + the zebrafish brain that control behaviors.\n \n + \ \n \n \n ENA-SAMPLE\n \ DRS057265-DRS057267,DRS057269-DRS057272,DRS057274-DRS057275\n \ \n \n \n \ \n ENA-EXPERIMENT\n @@ -9838,7 +8149,7 @@ interactions: \ ENA-RUN\n DRR051059-DRR051067\n \ \n \n \n \ \n ENA-SUBMISSION\n - \ DRA004276\n \n \n + \ DRA008860\n \n \n \ \n \n ENA-FASTQ-FILES\n \ \n \ \n \n \n @@ -9850,13 +8161,13 @@ interactions: \ ENA-BASE-COUNT\n 182690550386\n \ \n \n ENA-FIRST-PUBLIC\n \ 2018-01-08\n \n \n - \ ENA-LAST-UPDATE\n 2018-01-08\n + \ ENA-LAST-UPDATE\n 2021-08-11\n \ \n \n\n\n" headers: Content-Type: - application/xml Date: - - Wed, 28 Jul 2021 19:45:04 GMT + - Wed, 17 May 2023 18:37:45 GMT Strict-Transport-Security: - max-age=0 Transfer-Encoding: @@ -9874,7 +8185,7 @@ interactions: Connection: - keep-alive User-Agent: - - python-requests/2.25.1 + - python-requests/2.30.0 method: GET uri: https://www.ebi.ac.uk/ena/browser/api/xml/DRA004271 response: @@ -9908,7 +8219,7 @@ interactions: Content-Type: - application/xml Date: - - Wed, 28 Jul 2021 19:45:05 GMT + - Wed, 17 May 2023 18:37:46 GMT Strict-Transport-Security: - max-age=0 Transfer-Encoding: @@ -9916,68 +8227,6 @@ interactions: status: code: 200 message: '' -- request: - body: acc=DRR051061&accept-proto=fasp&version=2.0 - headers: - Accept: - - '*/*' - Accept-Encoding: - - gzip, deflate - Connection: - - keep-alive - Content-Length: - - '43' - User-Agent: - - python-requests/2.25.1 - method: POST - uri: https://www.ncbi.nlm.nih.gov/Traces/names/names.cgi - response: - body: - string: !!binary | - H4sIAAAAAAAAAwzJvQrCMBAA4L1PEXDoVLm7/Lazu1Cc3NIkUiWYkkZEuIe36/ed6AzdXv32Wfgy - z6ARDDJaqcGZUTpgAnQD4ADmhm5SeiJ5ZyJvZPIKQMdRaTIxJQwq2mBRRtLMfBxf3/kn+rW1be/F - VksroWTx3IXPuXxTFI9SRVsPKMsrhdb9AQAA//8DAB+PMvSPAAAA - headers: - Cache-Control: - - private - Connection: - - Keep-Alive - Content-Encoding: - - gzip - Content-Security-Policy: - - upgrade-insecure-requests - Content-Type: - - text/plain - Date: - - Wed, 28 Jul 2021 19:45:05 GMT - Keep-Alive: - - timeout=1, max=10 - NCBI-PHID: - - C7A42B00101B3C110000000000000001.m_1 - NCBI-SID: - - C7A42B00101B3C11_0000SID - Referrer-Policy: - - origin-when-cross-origin - Server: - - Apache - Set-Cookie: - - ncbi_sid=C7A42B00101B3C11_0000SID; domain=.nih.gov; path=/; expires=Thu, 28 - Jul 2022 19:45:05 GMT - SraNameServerOutputVersion: - - '2.0' - Strict-Transport-Security: - - max-age=31536000; includeSubDomains; preload - Transfer-Encoding: - - chunked - Vary: - - Accept-Encoding - X-UA-Compatible: - - IE=Edge - X-XSS-Protection: - - 1; mode=block - status: - code: 200 - message: OK - request: body: null headers: @@ -9988,29 +8237,27 @@ interactions: Connection: - keep-alive User-Agent: - - python-requests/2.25.1 + - python-requests/2.30.0 method: GET uri: https://www.ebi.ac.uk/ena/portal/api/filereport?accession=DRR051061&result=read_run response: body: - string: "run_accession\tfastq_ftp\tfastq_bytes\tfastq_md5\tsubmitted_ftp\tsubmitted_bytes\tsubmitted_md5\tsra_ftp\tsra_bytes\tsra_md5\nDRR051061\tftp.sra.ebi.ac.uk/vol1/fastq/DRR051/DRR051061/DRR051061_1.fastq.gz;ftp.sra.ebi.ac.uk/vol1/fastq/DRR051/DRR051061/DRR051061_2.fastq.gz\t10995619492;10855326022\t4f996689219b960f252308db99f7be3b;dffc1260802754bb0bb1102f3351bec8\t\t\t\t\t\t\n" + string: "run_accession\tfastq_ftp\tfastq_bytes\tfastq_md5\tbam_ftp\tbam_bytes\tbam_md5\tsubmitted_ftp\tsubmitted_bytes\tsubmitted_md5\tsra_ftp\tsra_bytes\tsra_md5\nDRR051061\tftp.sra.ebi.ac.uk/vol1/fastq/DRR051/DRR051061/DRR051061_1.fastq.gz;ftp.sra.ebi.ac.uk/vol1/fastq/DRR051/DRR051061/DRR051061_2.fastq.gz\t10995619492;10855326022\t4f996689219b960f252308db99f7be3b;dffc1260802754bb0bb1102f3351bec8\t\t\t\t\t\t\tftp.sra.ebi.ac.uk/vol1/drr/DRR051/DRR051061\t17350869380\t22a63ea4005d94526dee1c4d7c713d25\n" headers: Cache-Control: - no-cache, no-store, max-age=0, must-revalidate + Content-Length: + - '471' Content-Type: - text/plain Date: - - Wed, 28 Jul 2021 19:45:05 GMT + - Wed, 17 May 2023 18:37:45 GMT Expires: - '0' Pragma: - no-cache - Server: - - Apache-Coyote/1.1 Strict-Transport-Security: - max-age=0 - Transfer-Encoding: - - chunked X-Content-Type-Options: - nosniff X-Frame-Options: @@ -10019,7 +8266,7 @@ interactions: - 1; mode=block status: code: 200 - message: OK + message: '' - request: body: null headers: @@ -10030,7 +8277,7 @@ interactions: Connection: - keep-alive User-Agent: - - python-requests/2.25.1 + - python-requests/2.30.0 method: GET uri: https://www.ebi.ac.uk/ena/browser/api/xml/DRR051062 response: @@ -10064,7 +8311,7 @@ interactions: Content-Type: - application/xml Date: - - Wed, 28 Jul 2021 19:45:06 GMT + - Wed, 17 May 2023 18:37:46 GMT Strict-Transport-Security: - max-age=0 Transfer-Encoding: @@ -10082,7 +8329,7 @@ interactions: Connection: - keep-alive User-Agent: - - python-requests/2.25.1 + - python-requests/2.30.0 method: GET uri: https://www.ebi.ac.uk/ena/browser/api/xml/DRX045954 response: @@ -10139,7 +8386,7 @@ interactions: Content-Type: - application/xml Date: - - Wed, 28 Jul 2021 19:45:06 GMT + - Wed, 17 May 2023 18:37:47 GMT Strict-Transport-Security: - max-age=0 Transfer-Encoding: @@ -10157,57 +8404,44 @@ interactions: Connection: - keep-alive User-Agent: - - python-requests/2.25.1 + - python-requests/2.30.0 method: GET uri: https://www.ebi.ac.uk/ena/browser/api/xml/DRS057271 response: body: string: "\n\n\n \n - \ DRS057271\n SAMD00044988\n DRS057271\n \n Danio - rerio\n \n 7955\n Danio - rerio\n zebrafish\n - \ \n \n \n \n - \ ENA-STUDY\n DRP003977\n - \ \n \n \n - \ \n ENA-EXPERIMENT\n - \ DRX045954\n \n \n - \ \n \n ENA-RUN\n - \ DRR051062\n \n \n - \ \n \n ENA-SUBMISSION\n - \ DRA004272\n \n \n - \ \n \n ENA-FASTQ-FILES\n - \ \n - \ \n \n \n - \ \n ENA-SUBMITTED-FILES\n - \ \n - \ \n \n \n - \ \n \n description\n - \ Collected from 40 adult fish by using FACS\n - \ \n \n bioproject_id\n - \ PRJDB4470\n \n \n - \ sample_name\n 120A_GFP_plus_Tel\n - \ \n \n sample_title\n - \ GFP+ cells from telencephalon of SAGFF(LF)120A;UAS:GFP - transgenic zebrafish\n \n \n - \ genotype\n SAGFF(LF)120A;UAS:GFP\n - \ \n \n tissue_type\n - \ brain\n \n \n - \ ENA-SPOT-COUNT\n 49090307\n - \ \n \n ENA-BASE-COUNT\n - \ 9916242014\n \n - \ \n ENA-FIRST-PUBLIC\n - \ 2018-01-07\n \n - \ \n ENA-LAST-UPDATE\n - \ 2018-01-07\n \n + alias=\"SAMD00044988\" center_name=\"National Institute of Genetics (Japan)\" + broker_name=\"DDBJ\">\n \n DRS057271\n + \ SAMD00044988\n + \ \n GFP+ cells from telencephalon of SAGFF(LF)120A;UAS:GFP + transgenic zebrafish\n \n 7955\n + \ Danio rerio\n zebrafish\n + \ \n Collected from 40 adult fish by using + FACS\n \n \n \n + \ ENA-FASTQ-FILES\n \n + \ \n \n \n \n + \ ENA-SUBMITTED-FILES\n \n + \ \n \n\n\n + \ \n INSDC secondary accession\n + \ DRS057271\n \n \n + \ NCBI submission package\n Generic.1.0\n + \ \n \n organism\n + \ Danio rerio\n \n + \ \n tissue type\n brain\n + \ \n \n sample + name\n 120A_GFP_plus_Tel\n \n + \ \n genotype\n SAGFF(LF)120A;UAS:GFP\n + \ \n \n BioSampleModel\n + \ Generic\n \n \n + \ ENA-FIRST-PUBLIC\n 2018-01-06\n + \ \n \n ENA-LAST-UPDATE\n + \ 2018-01-06\n \n \ \n\n\n" headers: Content-Type: - application/xml Date: - - Wed, 28 Jul 2021 19:45:08 GMT + - Wed, 17 May 2023 18:37:47 GMT Strict-Transport-Security: - max-age=0 Transfer-Encoding: @@ -10225,7 +8459,7 @@ interactions: Connection: - keep-alive User-Agent: - - python-requests/2.25.1 + - python-requests/2.30.0 method: GET uri: https://www.ebi.ac.uk/ena/browser/api/xml/DRP003977 response: @@ -10233,14 +8467,16 @@ interactions: string: "\n\n\n \n \ DRP003977\n PRJDB4470\n - \ PRJDB4470\n + \ PRJDB4470\n \ DRP003977\n \n \ \n Gene expression analysis of the - zebrafish brain\n \n Gene expression profiling by RNA-seq - of specific regions and subpopulations of neurons in the zebrafish brain that - control behaviors.\n \n \n - \ \n \n ENA-SAMPLE\n + zebrafish brain\n \n + \ Gene expression profiling by RNA-seq of specific + regions and subpopulations of neurons in the zebrafish brain that control + behaviors.\n Gene expression + profiling by RNA-seq of specific regions and subpopulations of neurons in + the zebrafish brain that control behaviors.\n \n + \ \n \n \n ENA-SAMPLE\n \ DRS057265-DRS057267,DRS057269-DRS057272,DRS057274-DRS057275\n \ \n \n \n \ \n ENA-EXPERIMENT\n @@ -10249,7 +8485,7 @@ interactions: \ ENA-RUN\n DRR051059-DRR051067\n \ \n \n \n \ \n ENA-SUBMISSION\n - \ DRA004276\n \n \n + \ DRA008860\n \n \n \ \n \n ENA-FASTQ-FILES\n \ \n \ \n \n \n @@ -10261,13 +8497,13 @@ interactions: \ ENA-BASE-COUNT\n 182690550386\n \ \n \n ENA-FIRST-PUBLIC\n \ 2018-01-08\n \n \n - \ ENA-LAST-UPDATE\n 2018-01-08\n + \ ENA-LAST-UPDATE\n 2021-08-11\n \ \n \n\n\n" headers: Content-Type: - application/xml Date: - - Wed, 28 Jul 2021 19:45:08 GMT + - Wed, 17 May 2023 18:37:48 GMT Strict-Transport-Security: - max-age=0 Transfer-Encoding: @@ -10285,7 +8521,7 @@ interactions: Connection: - keep-alive User-Agent: - - python-requests/2.25.1 + - python-requests/2.30.0 method: GET uri: https://www.ebi.ac.uk/ena/browser/api/xml/DRA004272 response: @@ -10319,7 +8555,7 @@ interactions: Content-Type: - application/xml Date: - - Wed, 28 Jul 2021 19:45:09 GMT + - Wed, 17 May 2023 18:37:48 GMT Strict-Transport-Security: - max-age=0 Transfer-Encoding: @@ -10327,68 +8563,6 @@ interactions: status: code: 200 message: '' -- request: - body: acc=DRR051062&accept-proto=fasp&version=2.0 - headers: - Accept: - - '*/*' - Accept-Encoding: - - gzip, deflate - Connection: - - keep-alive - Content-Length: - - '43' - User-Agent: - - python-requests/2.25.1 - method: POST - uri: https://www.ncbi.nlm.nih.gov/Traces/names/names.cgi - response: - body: - string: !!binary | - H4sIAAAAAAAAAwzIuwrCMBQA0L1fEXDoVLk3iUnT2V0oTm7NiyqhCUlEhPvxesZz4mcYWt3K29J1 - XeGCoDgpqbVRIJUgDjhPgBOoO84LNwuaB0XUoEwIczRSeO2M9oHLaL1F51EgEUkAuh3py8a999JG - Vmru2eXEno1tKeVP8Czmyvr+j2xfwfXhBwAA//8DAKZ6JjGOAAAA - headers: - Cache-Control: - - private - Connection: - - Keep-Alive - Content-Encoding: - - gzip - Content-Security-Policy: - - upgrade-insecure-requests - Content-Type: - - text/plain - Date: - - Wed, 28 Jul 2021 19:45:09 GMT - Keep-Alive: - - timeout=1, max=10 - NCBI-PHID: - - C7A42B19101B3C510000000000000001.m_1 - NCBI-SID: - - C7A42B19101B3C51_0000SID - Referrer-Policy: - - origin-when-cross-origin - Server: - - Apache - Set-Cookie: - - ncbi_sid=C7A42B19101B3C51_0000SID; domain=.nih.gov; path=/; expires=Thu, 28 - Jul 2022 19:45:09 GMT - SraNameServerOutputVersion: - - '2.0' - Strict-Transport-Security: - - max-age=31536000; includeSubDomains; preload - Transfer-Encoding: - - chunked - Vary: - - Accept-Encoding - X-UA-Compatible: - - IE=Edge - X-XSS-Protection: - - 1; mode=block - status: - code: 200 - message: OK - request: body: null headers: @@ -10399,29 +8573,27 @@ interactions: Connection: - keep-alive User-Agent: - - python-requests/2.25.1 + - python-requests/2.30.0 method: GET uri: https://www.ebi.ac.uk/ena/portal/api/filereport?accession=DRR051062&result=read_run response: body: - string: "run_accession\tfastq_ftp\tfastq_bytes\tfastq_md5\tsubmitted_ftp\tsubmitted_bytes\tsubmitted_md5\tsra_ftp\tsra_bytes\tsra_md5\nDRR051062\tftp.sra.ebi.ac.uk/vol1/fastq/DRR051/DRR051062/DRR051062_1.fastq.gz;ftp.sra.ebi.ac.uk/vol1/fastq/DRR051/DRR051062/DRR051062_2.fastq.gz\t4036117683;4092158762\t9460e5da5ad16eb9e9dfb035acf4cfac;8ca9d614ef67f2cf435a3afb136d6b89\t\t\t\t\t\t\n" + string: "run_accession\tfastq_ftp\tfastq_bytes\tfastq_md5\tbam_ftp\tbam_bytes\tbam_md5\tsubmitted_ftp\tsubmitted_bytes\tsubmitted_md5\tsra_ftp\tsra_bytes\tsra_md5\nDRR051062\tftp.sra.ebi.ac.uk/vol1/fastq/DRR051/DRR051062/DRR051062_1.fastq.gz;ftp.sra.ebi.ac.uk/vol1/fastq/DRR051/DRR051062/DRR051062_2.fastq.gz\t4036117683;4092158762\t9460e5da5ad16eb9e9dfb035acf4cfac;8ca9d614ef67f2cf435a3afb136d6b89\t\t\t\t\t\t\tftp.sra.ebi.ac.uk/vol1/drr/DRR051/DRR051062\t6477960463\tf17069ee8f943d7c97de24fbdb1cd131\n" headers: Cache-Control: - no-cache, no-store, max-age=0, must-revalidate + Content-Length: + - '468' Content-Type: - text/plain Date: - - Wed, 28 Jul 2021 19:45:09 GMT + - Wed, 17 May 2023 18:37:49 GMT Expires: - '0' Pragma: - no-cache - Server: - - Apache-Coyote/1.1 Strict-Transport-Security: - max-age=0 - Transfer-Encoding: - - chunked X-Content-Type-Options: - nosniff X-Frame-Options: @@ -10430,7 +8602,7 @@ interactions: - 1; mode=block status: code: 200 - message: OK + message: '' - request: body: null headers: @@ -10441,7 +8613,7 @@ interactions: Connection: - keep-alive User-Agent: - - python-requests/2.25.1 + - python-requests/2.30.0 method: GET uri: https://www.ebi.ac.uk/ena/browser/api/xml/DRR051063 response: @@ -10475,7 +8647,7 @@ interactions: Content-Type: - application/xml Date: - - Wed, 28 Jul 2021 19:45:10 GMT + - Wed, 17 May 2023 18:37:48 GMT Strict-Transport-Security: - max-age=0 Transfer-Encoding: @@ -10493,7 +8665,7 @@ interactions: Connection: - keep-alive User-Agent: - - python-requests/2.25.1 + - python-requests/2.30.0 method: GET uri: https://www.ebi.ac.uk/ena/browser/api/xml/DRX045955 response: @@ -10550,7 +8722,7 @@ interactions: Content-Type: - application/xml Date: - - Wed, 28 Jul 2021 19:45:11 GMT + - Wed, 17 May 2023 18:37:49 GMT Strict-Transport-Security: - max-age=0 Transfer-Encoding: @@ -10568,57 +8740,44 @@ interactions: Connection: - keep-alive User-Agent: - - python-requests/2.25.1 + - python-requests/2.30.0 method: GET uri: https://www.ebi.ac.uk/ena/browser/api/xml/DRS057266 response: body: string: "\n\n\n \n - \ DRS057266\n SAMD00044987\n DRS057266\n \n Danio - rerio\n \n 7955\n Danio - rerio\n zebrafish\n - \ \n \n \n \n - \ ENA-STUDY\n DRP003977\n - \ \n \n \n - \ \n ENA-EXPERIMENT\n - \ DRX045955\n \n \n - \ \n \n ENA-RUN\n - \ DRR051063\n \n \n - \ \n \n ENA-SUBMISSION\n - \ DRA004273\n \n \n - \ \n \n ENA-FASTQ-FILES\n - \ \n - \ \n \n \n - \ \n ENA-SUBMITTED-FILES\n - \ \n - \ \n \n \n - \ \n \n description\n - \ These cells are from the same fish as 120A_GFP_plus_Tel\n - \ \n \n bioproject_id\n - \ PRJDB4470\n \n \n - \ sample_name\n 120A_GFP_minus_Tel\n - \ \n \n sample_title\n - \ GFP- cells from telencephalon of SAGFF(LF)120A;UAS:GFP - transgenic zebrafish\n \n \n - \ genotype\n SAGFF(LF)120A;UAS:GFP\n - \ \n \n tissue_type\n - \ brain\n \n \n - \ ENA-SPOT-COUNT\n 76294060\n - \ \n \n ENA-BASE-COUNT\n - \ 15411400120\n \n - \ \n ENA-FIRST-PUBLIC\n - \ 2018-01-07\n \n - \ \n ENA-LAST-UPDATE\n - \ 2018-01-07\n \n + alias=\"SAMD00044987\" center_name=\"National Institute of Genetics (Japan)\" + broker_name=\"DDBJ\">\n \n DRS057266\n + \ SAMD00044987\n + \ \n GFP- cells from telencephalon of SAGFF(LF)120A;UAS:GFP + transgenic zebrafish\n \n 7955\n + \ Danio rerio\n zebrafish\n + \ \n These cells are from the same fish + as 120A_GFP_plus_Tel\n \n \n + \ \n ENA-FASTQ-FILES\n \n + \ \n \n \n \n + \ ENA-SUBMITTED-FILES\n \n + \ \n \n\n\n + \ \n INSDC secondary accession\n + \ DRS057266\n \n \n + \ NCBI submission package\n Generic.1.0\n + \ \n \n organism\n + \ Danio rerio\n \n + \ \n tissue type\n brain\n + \ \n \n sample + name\n 120A_GFP_minus_Tel\n \n + \ \n genotype\n SAGFF(LF)120A;UAS:GFP\n + \ \n \n BioSampleModel\n + \ Generic\n \n \n + \ ENA-FIRST-PUBLIC\n 2018-01-06\n + \ \n \n ENA-LAST-UPDATE\n + \ 2018-01-06\n \n \ \n\n\n" headers: Content-Type: - application/xml Date: - - Wed, 28 Jul 2021 19:45:11 GMT + - Wed, 17 May 2023 18:37:49 GMT Strict-Transport-Security: - max-age=0 Transfer-Encoding: @@ -10636,7 +8795,7 @@ interactions: Connection: - keep-alive User-Agent: - - python-requests/2.25.1 + - python-requests/2.30.0 method: GET uri: https://www.ebi.ac.uk/ena/browser/api/xml/DRP003977 response: @@ -10644,14 +8803,16 @@ interactions: string: "\n\n\n \n \ DRP003977\n PRJDB4470\n - \ PRJDB4470\n + \ PRJDB4470\n \ DRP003977\n \n \ \n Gene expression analysis of the - zebrafish brain\n \n Gene expression profiling by RNA-seq - of specific regions and subpopulations of neurons in the zebrafish brain that - control behaviors.\n \n \n - \ \n \n ENA-SAMPLE\n + zebrafish brain\n \n + \ Gene expression profiling by RNA-seq of specific + regions and subpopulations of neurons in the zebrafish brain that control + behaviors.\n Gene expression + profiling by RNA-seq of specific regions and subpopulations of neurons in + the zebrafish brain that control behaviors.\n \n + \ \n \n \n ENA-SAMPLE\n \ DRS057265-DRS057267,DRS057269-DRS057272,DRS057274-DRS057275\n \ \n \n \n \ \n ENA-EXPERIMENT\n @@ -10660,7 +8821,7 @@ interactions: \ ENA-RUN\n DRR051059-DRR051067\n \ \n \n \n \ \n ENA-SUBMISSION\n - \ DRA004276\n \n \n + \ DRA008860\n \n \n \ \n \n ENA-FASTQ-FILES\n \ \n \ \n \n \n @@ -10672,13 +8833,13 @@ interactions: \ ENA-BASE-COUNT\n 182690550386\n \ \n \n ENA-FIRST-PUBLIC\n \ 2018-01-08\n \n \n - \ ENA-LAST-UPDATE\n 2018-01-08\n + \ ENA-LAST-UPDATE\n 2021-08-11\n \ \n \n\n\n" headers: Content-Type: - application/xml Date: - - Wed, 28 Jul 2021 19:45:12 GMT + - Wed, 17 May 2023 18:37:50 GMT Strict-Transport-Security: - max-age=0 Transfer-Encoding: @@ -10696,7 +8857,7 @@ interactions: Connection: - keep-alive User-Agent: - - python-requests/2.25.1 + - python-requests/2.30.0 method: GET uri: https://www.ebi.ac.uk/ena/browser/api/xml/DRA004273 response: @@ -10730,7 +8891,7 @@ interactions: Content-Type: - application/xml Date: - - Wed, 28 Jul 2021 19:45:12 GMT + - Wed, 17 May 2023 18:37:50 GMT Strict-Transport-Security: - max-age=0 Transfer-Encoding: @@ -10738,68 +8899,6 @@ interactions: status: code: 200 message: '' -- request: - body: acc=DRR051063&accept-proto=fasp&version=2.0 - headers: - Accept: - - '*/*' - Accept-Encoding: - - gzip, deflate - Connection: - - keep-alive - Content-Length: - - '43' - User-Agent: - - python-requests/2.25.1 - method: POST - uri: https://www.ncbi.nlm.nih.gov/Traces/names/names.cgi - response: - body: - string: !!binary | - H4sIAAAAAAAAAwzIvQ6CMBQG0J2naOLAhPl6L94Cs7sJcXLjpw2ahhKoMSb34fWM50RnFMc+bO9R - r32Pi4WwWhADTqRmJdimgq0gd7JdjQ7uoQ01AgljYBIgzGgde4Z1TEStd6paA3pb49eUS87bUZpt - TzlNKZrnYYYY08fPJqTd5OUfaXz5KRc/AAAA//8DAK2QvEGPAAAA - headers: - Cache-Control: - - private - Connection: - - Keep-Alive - Content-Encoding: - - gzip - Content-Security-Policy: - - upgrade-insecure-requests - Content-Type: - - text/plain - Date: - - Wed, 28 Jul 2021 19:45:13 GMT - Keep-Alive: - - timeout=1, max=10 - NCBI-PHID: - - CC95F9C7101B3C910000000000000001.m_1 - NCBI-SID: - - CC95F9C7101B3C91_0000SID - Referrer-Policy: - - origin-when-cross-origin - Server: - - Apache - Set-Cookie: - - ncbi_sid=CC95F9C7101B3C91_0000SID; domain=.nih.gov; path=/; expires=Thu, 28 - Jul 2022 19:45:13 GMT - SraNameServerOutputVersion: - - '2.0' - Strict-Transport-Security: - - max-age=31536000; includeSubDomains; preload - Transfer-Encoding: - - chunked - Vary: - - Accept-Encoding - X-UA-Compatible: - - IE=Edge - X-XSS-Protection: - - 1; mode=block - status: - code: 200 - message: OK - request: body: null headers: @@ -10810,29 +8909,27 @@ interactions: Connection: - keep-alive User-Agent: - - python-requests/2.25.1 + - python-requests/2.30.0 method: GET uri: https://www.ebi.ac.uk/ena/portal/api/filereport?accession=DRR051063&result=read_run response: body: - string: "run_accession\tfastq_ftp\tfastq_bytes\tfastq_md5\tsubmitted_ftp\tsubmitted_bytes\tsubmitted_md5\tsra_ftp\tsra_bytes\tsra_md5\nDRR051063\tftp.sra.ebi.ac.uk/vol1/fastq/DRR051/DRR051063/DRR051063_1.fastq.gz;ftp.sra.ebi.ac.uk/vol1/fastq/DRR051/DRR051063/DRR051063_2.fastq.gz\t6390520397;6493698053\t9b523f167fd92adc999437039674b9c6;3fb87f88aeaa094df7a854fed0266eb5\t\t\t\t\t\t\n" + string: "run_accession\tfastq_ftp\tfastq_bytes\tfastq_md5\tbam_ftp\tbam_bytes\tbam_md5\tsubmitted_ftp\tsubmitted_bytes\tsubmitted_md5\tsra_ftp\tsra_bytes\tsra_md5\nDRR051063\tftp.sra.ebi.ac.uk/vol1/fastq/DRR051/DRR051063/DRR051063_1.fastq.gz;ftp.sra.ebi.ac.uk/vol1/fastq/DRR051/DRR051063/DRR051063_2.fastq.gz\t6390520397;6493698053\t9b523f167fd92adc999437039674b9c6;3fb87f88aeaa094df7a854fed0266eb5\t\t\t\t\t\t\tftp.sra.ebi.ac.uk/vol1/drr/DRR051/DRR051063\t10230076643\t828606fbf32600fd0973e301732229e7\n" headers: Cache-Control: - no-cache, no-store, max-age=0, must-revalidate + Content-Length: + - '469' Content-Type: - text/plain Date: - - Wed, 28 Jul 2021 19:45:13 GMT + - Wed, 17 May 2023 18:37:51 GMT Expires: - '0' Pragma: - no-cache - Server: - - Apache-Coyote/1.1 Strict-Transport-Security: - max-age=0 - Transfer-Encoding: - - chunked X-Content-Type-Options: - nosniff X-Frame-Options: @@ -10841,7 +8938,7 @@ interactions: - 1; mode=block status: code: 200 - message: OK + message: '' - request: body: null headers: @@ -10852,7 +8949,7 @@ interactions: Connection: - keep-alive User-Agent: - - python-requests/2.25.1 + - python-requests/2.30.0 method: GET uri: https://www.ebi.ac.uk/ena/browser/api/xml/DRR051064 response: @@ -10886,7 +8983,7 @@ interactions: Content-Type: - application/xml Date: - - Wed, 28 Jul 2021 19:45:14 GMT + - Wed, 17 May 2023 18:37:51 GMT Strict-Transport-Security: - max-age=0 Transfer-Encoding: @@ -10904,7 +9001,7 @@ interactions: Connection: - keep-alive User-Agent: - - python-requests/2.25.1 + - python-requests/2.30.0 method: GET uri: https://www.ebi.ac.uk/ena/browser/api/xml/DRX045956 response: @@ -10960,7 +9057,7 @@ interactions: Content-Type: - application/xml Date: - - Wed, 28 Jul 2021 19:45:14 GMT + - Wed, 17 May 2023 18:37:52 GMT Strict-Transport-Security: - max-age=0 Transfer-Encoding: @@ -10978,56 +9075,45 @@ interactions: Connection: - keep-alive User-Agent: - - python-requests/2.25.1 + - python-requests/2.30.0 method: GET uri: https://www.ebi.ac.uk/ena/browser/api/xml/DRS057265 response: body: string: "\n\n\n \n - \ DRS057265\n SAMD00044991\n DRS057265\n \n Danio - rerio\n \n 7955\n Danio + alias=\"SAMD00044991\" center_name=\"National Institute of Genetics (Japan)\" + broker_name=\"DDBJ\">\n \n DRS057265\n + \ SAMD00044991\n + \ \n CS_telencephalon_30 min after TWAA\n + \ \n 7955\n Danio rerio\n zebrafish\n - \ \n \n \n \n - \ ENA-STUDY\n DRP003977\n - \ \n \n \n - \ \n ENA-EXPERIMENT\n - \ DRX045956\n \n \n - \ \n \n ENA-RUN\n - \ DRR051064\n \n \n - \ \n \n ENA-SUBMISSION\n - \ DRA004274\n \n \n - \ \n \n ENA-FASTQ-FILES\n - \ \n - \ \n \n \n - \ \n ENA-SUBMITTED-FILES\n - \ \n - \ \n \n \n - \ \n \n description\n - \ Telencephalon from adult zebrafrish, 30 min after light - stimulation in Two-Way Active Avoidance coditioning\n \n - \ \n bioproject_id\n PRJDB4470\n - \ \n \n sample_name\n - \ CS_Tel_30\n \n \n - \ sample_title\n CS_telencephalon_30 - min after TWAA\n \n \n - \ genotype\n WT\n \n - \ \n tissue_type\n brain\n - \ \n \n ENA-SPOT-COUNT\n - \ 146341598\n \n \n - \ ENA-BASE-COUNT\n 29268319600\n - \ \n \n ENA-FIRST-PUBLIC\n - \ 2018-01-07\n \n - \ \n ENA-LAST-UPDATE\n - \ 2018-01-07\n \n + \ \n Telencephalon from adult zebrafrish, + 30 min after light stimulation in Two-Way Active Avoidance coditioning\n + \ \n \n \n ENA-FASTQ-FILES\n + \ \n + \ \n \n \n \n + \ ENA-SUBMITTED-FILES\n \n + \ \n \n\n\n + \ \n INSDC secondary accession\n + \ DRS057265\n \n \n + \ NCBI submission package\n Generic.1.0\n + \ \n \n organism\n + \ Danio rerio\n \n + \ \n tissue type\n brain\n + \ \n \n sample + name\n CS_Tel_30\n \n + \ \n genotype\n WT\n + \ \n \n BioSampleModel\n + \ Generic\n \n \n + \ ENA-FIRST-PUBLIC\n 2018-01-06\n + \ \n \n ENA-LAST-UPDATE\n + \ 2018-01-06\n \n \ \n\n\n" headers: Content-Type: - application/xml Date: - - Wed, 28 Jul 2021 19:45:15 GMT + - Wed, 17 May 2023 18:37:52 GMT Strict-Transport-Security: - max-age=0 Transfer-Encoding: @@ -11045,7 +9131,7 @@ interactions: Connection: - keep-alive User-Agent: - - python-requests/2.25.1 + - python-requests/2.30.0 method: GET uri: https://www.ebi.ac.uk/ena/browser/api/xml/DRP003977 response: @@ -11053,14 +9139,16 @@ interactions: string: "\n\n\n \n \ DRP003977\n PRJDB4470\n - \ PRJDB4470\n + \ PRJDB4470\n \ DRP003977\n \n \ \n Gene expression analysis of the - zebrafish brain\n \n Gene expression profiling by RNA-seq - of specific regions and subpopulations of neurons in the zebrafish brain that - control behaviors.\n \n \n - \ \n \n ENA-SAMPLE\n + zebrafish brain\n \n + \ Gene expression profiling by RNA-seq of specific + regions and subpopulations of neurons in the zebrafish brain that control + behaviors.\n Gene expression + profiling by RNA-seq of specific regions and subpopulations of neurons in + the zebrafish brain that control behaviors.\n \n + \ \n \n \n ENA-SAMPLE\n \ DRS057265-DRS057267,DRS057269-DRS057272,DRS057274-DRS057275\n \ \n \n \n \ \n ENA-EXPERIMENT\n @@ -11069,7 +9157,7 @@ interactions: \ ENA-RUN\n DRR051059-DRR051067\n \ \n \n \n \ \n ENA-SUBMISSION\n - \ DRA004276\n \n \n + \ DRA008860\n \n \n \ \n \n ENA-FASTQ-FILES\n \ \n \ \n \n \n @@ -11081,13 +9169,13 @@ interactions: \ ENA-BASE-COUNT\n 182690550386\n \ \n \n ENA-FIRST-PUBLIC\n \ 2018-01-08\n \n \n - \ ENA-LAST-UPDATE\n 2018-01-08\n + \ ENA-LAST-UPDATE\n 2021-08-11\n \ \n \n\n\n" headers: Content-Type: - application/xml Date: - - Wed, 28 Jul 2021 19:45:15 GMT + - Wed, 17 May 2023 18:37:52 GMT Strict-Transport-Security: - max-age=0 Transfer-Encoding: @@ -11105,7 +9193,7 @@ interactions: Connection: - keep-alive User-Agent: - - python-requests/2.25.1 + - python-requests/2.30.0 method: GET uri: https://www.ebi.ac.uk/ena/browser/api/xml/DRA004274 response: @@ -11139,7 +9227,7 @@ interactions: Content-Type: - application/xml Date: - - Wed, 28 Jul 2021 19:45:17 GMT + - Wed, 17 May 2023 18:37:53 GMT Strict-Transport-Security: - max-age=0 Transfer-Encoding: @@ -11147,68 +9235,6 @@ interactions: status: code: 200 message: '' -- request: - body: acc=DRR051064&accept-proto=fasp&version=2.0 - headers: - Accept: - - '*/*' - Accept-Encoding: - - gzip, deflate - Connection: - - keep-alive - Content-Length: - - '43' - User-Agent: - - python-requests/2.25.1 - method: POST - uri: https://www.ncbi.nlm.nih.gov/Traces/names/names.cgi - response: - body: - string: !!binary | - H4sIAAAAAAAAAwzIsQqDMBQF0N2vCHRwsty8vJjo3L0gnboZTbElNKIppfA+vm6Hc6Izqn0b10+Q - yzDAarQsBE8EOGJ3WPsGukF7075n6o29i4kdDLMDacvsTQwek7PjTDG0nWERYUCu7/RT9VLKutdq - 3XLJU07quasxpfyNs3rkTZXliBxecSrVHwAA//8DAFGgQi2PAAAA - headers: - Cache-Control: - - private - Connection: - - Keep-Alive - Content-Encoding: - - gzip - Content-Security-Policy: - - upgrade-insecure-requests - Content-Type: - - text/plain - Date: - - Wed, 28 Jul 2021 19:45:17 GMT - Keep-Alive: - - timeout=1, max=10 - NCBI-PHID: - - CC95F9F3101B3CD10000000000000001.m_1 - NCBI-SID: - - CC95F9F3101B3CD1_0000SID - Referrer-Policy: - - origin-when-cross-origin - Server: - - Apache - Set-Cookie: - - ncbi_sid=CC95F9F3101B3CD1_0000SID; domain=.nih.gov; path=/; expires=Thu, 28 - Jul 2022 19:45:17 GMT - SraNameServerOutputVersion: - - '2.0' - Strict-Transport-Security: - - max-age=31536000; includeSubDomains; preload - Transfer-Encoding: - - chunked - Vary: - - Accept-Encoding - X-UA-Compatible: - - IE=Edge - X-XSS-Protection: - - 1; mode=block - status: - code: 200 - message: OK - request: body: null headers: @@ -11219,29 +9245,27 @@ interactions: Connection: - keep-alive User-Agent: - - python-requests/2.25.1 + - python-requests/2.30.0 method: GET uri: https://www.ebi.ac.uk/ena/portal/api/filereport?accession=DRR051064&result=read_run response: body: - string: "run_accession\tfastq_ftp\tfastq_bytes\tfastq_md5\tsubmitted_ftp\tsubmitted_bytes\tsubmitted_md5\tsra_ftp\tsra_bytes\tsra_md5\nDRR051064\tftp.sra.ebi.ac.uk/vol1/fastq/DRR051/DRR051064/DRR051064_1.fastq.gz;ftp.sra.ebi.ac.uk/vol1/fastq/DRR051/DRR051064/DRR051064_2.fastq.gz\t13204439635;13344814940\t6e64a0d4d298ff5b1e3c23e8c50f3a60;8d5a6f4e83fa1afdd2276cf0a7124c51\t\t\t\t\t\t\n" + string: "run_accession\tfastq_ftp\tfastq_bytes\tfastq_md5\tbam_ftp\tbam_bytes\tbam_md5\tsubmitted_ftp\tsubmitted_bytes\tsubmitted_md5\tsra_ftp\tsra_bytes\tsra_md5\nDRR051064\tftp.sra.ebi.ac.uk/vol1/fastq/DRR051/DRR051064/DRR051064_1.fastq.gz;ftp.sra.ebi.ac.uk/vol1/fastq/DRR051/DRR051064/DRR051064_2.fastq.gz\t13204439635;13344814940\t6e64a0d4d298ff5b1e3c23e8c50f3a60;8d5a6f4e83fa1afdd2276cf0a7124c51\t\t\t\t\t\t\tftp.sra.ebi.ac.uk/vol1/drr/DRR051/DRR051064\t20822007247\t3e90344702154483eb80c75ad2eb6934\n" headers: Cache-Control: - no-cache, no-store, max-age=0, must-revalidate + Content-Length: + - '471' Content-Type: - text/plain Date: - - Wed, 28 Jul 2021 19:45:17 GMT + - Wed, 17 May 2023 18:37:54 GMT Expires: - '0' Pragma: - no-cache - Server: - - Apache-Coyote/1.1 Strict-Transport-Security: - max-age=0 - Transfer-Encoding: - - chunked X-Content-Type-Options: - nosniff X-Frame-Options: @@ -11250,7 +9274,7 @@ interactions: - 1; mode=block status: code: 200 - message: OK + message: '' - request: body: null headers: @@ -11261,7 +9285,7 @@ interactions: Connection: - keep-alive User-Agent: - - python-requests/2.25.1 + - python-requests/2.30.0 method: GET uri: https://www.ebi.ac.uk/ena/browser/api/xml/DRR051065 response: @@ -11295,7 +9319,7 @@ interactions: Content-Type: - application/xml Date: - - Wed, 28 Jul 2021 19:45:19 GMT + - Wed, 17 May 2023 18:37:54 GMT Strict-Transport-Security: - max-age=0 Transfer-Encoding: @@ -11313,7 +9337,7 @@ interactions: Connection: - keep-alive User-Agent: - - python-requests/2.25.1 + - python-requests/2.30.0 method: GET uri: https://www.ebi.ac.uk/ena/browser/api/xml/DRX045957 response: @@ -11369,7 +9393,7 @@ interactions: Content-Type: - application/xml Date: - - Wed, 28 Jul 2021 19:45:19 GMT + - Wed, 17 May 2023 18:37:54 GMT Strict-Transport-Security: - max-age=0 Transfer-Encoding: @@ -11387,57 +9411,45 @@ interactions: Connection: - keep-alive User-Agent: - - python-requests/2.25.1 + - python-requests/2.30.0 method: GET uri: https://www.ebi.ac.uk/ena/browser/api/xml/DRS057272 response: body: string: "\n\n\n \n - \ DRS057272\n SAMD00044990\n DRS057272\n \n Danio - rerio\n \n 7955\n Danio + alias=\"SAMD00044990\" center_name=\"National Institute of Genetics (Japan)\" + broker_name=\"DDBJ\">\n \n DRS057272\n + \ SAMD00044990\n + \ \n CS+US_telencephalon_30 min after TWAA\n + \ \n 7955\n Danio rerio\n zebrafish\n - \ \n \n \n \n - \ ENA-STUDY\n DRP003977\n - \ \n \n \n - \ \n ENA-EXPERIMENT\n - \ DRX045957\n \n \n - \ \n \n ENA-RUN\n - \ DRR051065\n \n \n - \ \n \n ENA-SUBMISSION\n - \ DRA004275\n \n \n - \ \n \n ENA-FASTQ-FILES\n - \ \n - \ \n \n \n - \ \n ENA-SUBMITTED-FILES\n - \ \n - \ \n \n \n - \ \n \n description\n - \ Telencephalon from adult zebrafrish, 30 min after light - and electrical shock association in non-trace Two-Way Active Avoidance conditioning\n - \ \n \n bioproject_id\n - \ PRJDB4470\n \n \n - \ sample_name\n CS+US_Tel_30\n - \ \n \n sample_title\n - \ CS+US_telencephalon_30 min after TWAA\n \n + \ \n Telencephalon from adult zebrafrish, + 30 min after light and electrical shock association in non-trace Two-Way Active + Avoidance conditioning\n \n \n + \ \n ENA-FASTQ-FILES\n \n + \ \n \n \n \n + \ ENA-SUBMITTED-FILES\n \n + \ \n \n\n\n + \ \n INSDC secondary accession\n + \ DRS057272\n \n \n + \ NCBI submission package\n Generic.1.0\n + \ \n \n organism\n + \ Danio rerio\n \n + \ \n tissue type\n brain\n + \ \n \n sample + name\n CS+US_Tel_30\n \n \ \n genotype\n WT\n - \ \n \n tissue_type\n - \ brain\n \n \n - \ ENA-SPOT-COUNT\n 101196646\n - \ \n \n ENA-BASE-COUNT\n - \ 20239329200\n \n - \ \n ENA-FIRST-PUBLIC\n - \ 2018-01-07\n \n - \ \n ENA-LAST-UPDATE\n - \ 2018-01-07\n \n + \ \n \n BioSampleModel\n + \ Generic\n \n \n + \ ENA-FIRST-PUBLIC\n 2018-01-06\n + \ \n \n ENA-LAST-UPDATE\n + \ 2018-01-06\n \n \ \n\n\n" headers: Content-Type: - application/xml Date: - - Wed, 28 Jul 2021 19:45:20 GMT + - Wed, 17 May 2023 18:37:54 GMT Strict-Transport-Security: - max-age=0 Transfer-Encoding: @@ -11455,7 +9467,7 @@ interactions: Connection: - keep-alive User-Agent: - - python-requests/2.25.1 + - python-requests/2.30.0 method: GET uri: https://www.ebi.ac.uk/ena/browser/api/xml/DRP003977 response: @@ -11463,14 +9475,16 @@ interactions: string: "\n\n\n \n \ DRP003977\n PRJDB4470\n - \ PRJDB4470\n + \ PRJDB4470\n \ DRP003977\n \n \ \n Gene expression analysis of the - zebrafish brain\n \n Gene expression profiling by RNA-seq - of specific regions and subpopulations of neurons in the zebrafish brain that - control behaviors.\n \n \n - \ \n \n ENA-SAMPLE\n + zebrafish brain\n \n + \ Gene expression profiling by RNA-seq of specific + regions and subpopulations of neurons in the zebrafish brain that control + behaviors.\n Gene expression + profiling by RNA-seq of specific regions and subpopulations of neurons in + the zebrafish brain that control behaviors.\n \n + \ \n \n \n ENA-SAMPLE\n \ DRS057265-DRS057267,DRS057269-DRS057272,DRS057274-DRS057275\n \ \n \n \n \ \n ENA-EXPERIMENT\n @@ -11479,7 +9493,7 @@ interactions: \ ENA-RUN\n DRR051059-DRR051067\n \ \n \n \n \ \n ENA-SUBMISSION\n - \ DRA004276\n \n \n + \ DRA008860\n \n \n \ \n \n ENA-FASTQ-FILES\n \ \n \ \n \n \n @@ -11491,13 +9505,13 @@ interactions: \ ENA-BASE-COUNT\n 182690550386\n \ \n \n ENA-FIRST-PUBLIC\n \ 2018-01-08\n \n \n - \ ENA-LAST-UPDATE\n 2018-01-08\n + \ ENA-LAST-UPDATE\n 2021-08-11\n \ \n \n\n\n" headers: Content-Type: - application/xml Date: - - Wed, 28 Jul 2021 19:45:20 GMT + - Wed, 17 May 2023 18:37:55 GMT Strict-Transport-Security: - max-age=0 Transfer-Encoding: @@ -11515,7 +9529,7 @@ interactions: Connection: - keep-alive User-Agent: - - python-requests/2.25.1 + - python-requests/2.30.0 method: GET uri: https://www.ebi.ac.uk/ena/browser/api/xml/DRA004275 response: @@ -11549,7 +9563,7 @@ interactions: Content-Type: - application/xml Date: - - Wed, 28 Jul 2021 19:45:21 GMT + - Wed, 17 May 2023 18:37:55 GMT Strict-Transport-Security: - max-age=0 Transfer-Encoding: @@ -11557,68 +9571,6 @@ interactions: status: code: 200 message: '' -- request: - body: acc=DRR051065&accept-proto=fasp&version=2.0 - headers: - Accept: - - '*/*' - Accept-Encoding: - - gzip, deflate - Connection: - - keep-alive - Content-Length: - - '43' - User-Agent: - - python-requests/2.25.1 - method: POST - uri: https://www.ncbi.nlm.nih.gov/Traces/names/names.cgi - response: - body: - string: !!binary | - H4sIAAAAAAAAAwzLuwrCMBQA0L1fEXDoVLk3ryad3YXi5JbElCrBhCQiwv14ux44J36GoVVXPp4u - 6woKQStCKayWMEupiAOaCXACfeO4SL4g3MlsYVYxaOe5scGiF8J75XTUKh7PEpEEoOs7/di4917a - yErNPYec2LMxl1L+xgfbcmV9PyD7Vwx9+AMAAP//AwB4C0SvjwAAAA== - headers: - Cache-Control: - - private - Connection: - - Keep-Alive - Content-Encoding: - - gzip - Content-Security-Policy: - - upgrade-insecure-requests - Content-Type: - - text/plain - Date: - - Wed, 28 Jul 2021 19:45:21 GMT - Keep-Alive: - - timeout=1, max=10 - NCBI-PHID: - - CC95FC16101B3D110000000000000001.m_1 - NCBI-SID: - - CC95FC16101B3D11_0000SID - Referrer-Policy: - - origin-when-cross-origin - Server: - - Apache - Set-Cookie: - - ncbi_sid=CC95FC16101B3D11_0000SID; domain=.nih.gov; path=/; expires=Thu, 28 - Jul 2022 19:45:21 GMT - SraNameServerOutputVersion: - - '2.0' - Strict-Transport-Security: - - max-age=31536000; includeSubDomains; preload - Transfer-Encoding: - - chunked - Vary: - - Accept-Encoding - X-UA-Compatible: - - IE=Edge - X-XSS-Protection: - - 1; mode=block - status: - code: 200 - message: OK - request: body: null headers: @@ -11629,29 +9581,27 @@ interactions: Connection: - keep-alive User-Agent: - - python-requests/2.25.1 + - python-requests/2.30.0 method: GET uri: https://www.ebi.ac.uk/ena/portal/api/filereport?accession=DRR051065&result=read_run response: body: - string: "run_accession\tfastq_ftp\tfastq_bytes\tfastq_md5\tsubmitted_ftp\tsubmitted_bytes\tsubmitted_md5\tsra_ftp\tsra_bytes\tsra_md5\nDRR051065\tftp.sra.ebi.ac.uk/vol1/fastq/DRR051/DRR051065/DRR051065_1.fastq.gz;ftp.sra.ebi.ac.uk/vol1/fastq/DRR051/DRR051065/DRR051065_2.fastq.gz\t9138934313;9235518567\t41d11e8c26bcb996af0be3b8eaa6b82b;21fbcb1077cbdcd82e3b5e81deb3495f\t\t\t\t\t\t\n" + string: "run_accession\tfastq_ftp\tfastq_bytes\tfastq_md5\tbam_ftp\tbam_bytes\tbam_md5\tsubmitted_ftp\tsubmitted_bytes\tsubmitted_md5\tsra_ftp\tsra_bytes\tsra_md5\nDRR051065\tftp.sra.ebi.ac.uk/vol1/fastq/DRR051/DRR051065/DRR051065_1.fastq.gz;ftp.sra.ebi.ac.uk/vol1/fastq/DRR051/DRR051065/DRR051065_2.fastq.gz\t9138934313;9235518567\t41d11e8c26bcb996af0be3b8eaa6b82b;21fbcb1077cbdcd82e3b5e81deb3495f\t\t\t\t\t\t\tftp.sra.ebi.ac.uk/vol1/drr/DRR051/DRR051065\t14396407445\t8fc75ec6ab289c91b33bb5a6e65e4079\n" headers: Cache-Control: - no-cache, no-store, max-age=0, must-revalidate + Content-Length: + - '469' Content-Type: - text/plain Date: - - Wed, 28 Jul 2021 19:45:22 GMT + - Wed, 17 May 2023 18:37:56 GMT Expires: - '0' Pragma: - no-cache - Server: - - Apache-Coyote/1.1 Strict-Transport-Security: - max-age=0 - Transfer-Encoding: - - chunked X-Content-Type-Options: - nosniff X-Frame-Options: @@ -11660,7 +9610,7 @@ interactions: - 1; mode=block status: code: 200 - message: OK + message: '' - request: body: null headers: @@ -11671,7 +9621,7 @@ interactions: Connection: - keep-alive User-Agent: - - python-requests/2.25.1 + - python-requests/2.30.0 method: GET uri: https://www.ebi.ac.uk/ena/browser/api/xml/DRR051066 response: @@ -11705,7 +9655,7 @@ interactions: Content-Type: - application/xml Date: - - Wed, 28 Jul 2021 19:45:23 GMT + - Wed, 17 May 2023 18:37:56 GMT Strict-Transport-Security: - max-age=0 Transfer-Encoding: @@ -11723,7 +9673,7 @@ interactions: Connection: - keep-alive User-Agent: - - python-requests/2.25.1 + - python-requests/2.30.0 method: GET uri: https://www.ebi.ac.uk/ena/browser/api/xml/DRX045958 response: @@ -11780,7 +9730,7 @@ interactions: Content-Type: - application/xml Date: - - Wed, 28 Jul 2021 19:45:23 GMT + - Wed, 17 May 2023 18:37:56 GMT Strict-Transport-Security: - max-age=0 Transfer-Encoding: @@ -11798,57 +9748,44 @@ interactions: Connection: - keep-alive User-Agent: - - python-requests/2.25.1 + - python-requests/2.30.0 method: GET uri: https://www.ebi.ac.uk/ena/browser/api/xml/DRS057275 response: body: string: "\n\n\n \n - \ DRS057275\n SAMD00044995\n DRS057275\n \n Danio - rerio\n \n 7955\n Danio - rerio\n zebrafish\n - \ \n \n \n \n - \ ENA-STUDY\n DRP003977\n - \ \n \n \n - \ \n ENA-EXPERIMENT\n - \ DRX045958\n \n \n - \ \n \n ENA-RUN\n - \ DRR051066\n \n \n - \ \n \n ENA-SUBMISSION\n - \ DRA004276\n \n \n - \ \n \n ENA-FASTQ-FILES\n - \ \n - \ \n \n \n - \ \n ENA-SUBMITTED-FILES\n - \ \n - \ \n \n \n - \ \n \n description\n - \ Collected from 40 adult fish by using FACS\n - \ \n \n bioproject_id\n - \ PRJDB4470\n \n \n - \ sample_name\n h62A_GFP_plus_Tel\n - \ \n \n sample_title\n - \ GFP+ cells from telencephalon of hspGFF62A;UAS:GFP transgenic - zebrafish\n \n \n - \ genotype\n hspGFF62A;UAS:GFP\n - \ \n \n tissue_type\n - \ brain\n \n \n - \ ENA-SPOT-COUNT\n 87106280\n - \ \n \n ENA-BASE-COUNT\n - \ 17421256000\n \n - \ \n ENA-FIRST-PUBLIC\n - \ 2018-01-07\n \n - \ \n ENA-LAST-UPDATE\n - \ 2018-01-07\n \n + alias=\"SAMD00044995\" center_name=\"National Institute of Genetics (Japan)\" + broker_name=\"DDBJ\">\n \n DRS057275\n + \ SAMD00044995\n + \ \n GFP+ cells from telencephalon of hspGFF62A;UAS:GFP + transgenic zebrafish\n \n 7955\n + \ Danio rerio\n zebrafish\n + \ \n Collected from 40 adult fish by using + FACS\n \n \n \n + \ ENA-FASTQ-FILES\n \n + \ \n \n \n \n + \ ENA-SUBMITTED-FILES\n \n + \ \n \n\n\n + \ \n INSDC secondary accession\n + \ DRS057275\n \n \n + \ NCBI submission package\n Generic.1.0\n + \ \n \n organism\n + \ Danio rerio\n \n + \ \n tissue type\n brain\n + \ \n \n sample + name\n h62A_GFP_plus_Tel\n \n + \ \n genotype\n hspGFF62A;UAS:GFP\n + \ \n \n BioSampleModel\n + \ Generic\n \n \n + \ ENA-FIRST-PUBLIC\n 2018-01-06\n + \ \n \n ENA-LAST-UPDATE\n + \ 2018-01-06\n \n \ \n\n\n" headers: Content-Type: - application/xml Date: - - Wed, 28 Jul 2021 19:45:24 GMT + - Wed, 17 May 2023 18:37:56 GMT Strict-Transport-Security: - max-age=0 Transfer-Encoding: @@ -11866,7 +9803,7 @@ interactions: Connection: - keep-alive User-Agent: - - python-requests/2.25.1 + - python-requests/2.30.0 method: GET uri: https://www.ebi.ac.uk/ena/browser/api/xml/DRP003977 response: @@ -11874,14 +9811,16 @@ interactions: string: "\n\n\n \n \ DRP003977\n PRJDB4470\n - \ PRJDB4470\n + \ PRJDB4470\n \ DRP003977\n \n \ \n Gene expression analysis of the - zebrafish brain\n \n Gene expression profiling by RNA-seq - of specific regions and subpopulations of neurons in the zebrafish brain that - control behaviors.\n \n \n - \ \n \n ENA-SAMPLE\n + zebrafish brain\n \n + \ Gene expression profiling by RNA-seq of specific + regions and subpopulations of neurons in the zebrafish brain that control + behaviors.\n Gene expression + profiling by RNA-seq of specific regions and subpopulations of neurons in + the zebrafish brain that control behaviors.\n \n + \ \n \n \n ENA-SAMPLE\n \ DRS057265-DRS057267,DRS057269-DRS057272,DRS057274-DRS057275\n \ \n \n \n \ \n ENA-EXPERIMENT\n @@ -11890,7 +9829,7 @@ interactions: \ ENA-RUN\n DRR051059-DRR051067\n \ \n \n \n \ \n ENA-SUBMISSION\n - \ DRA004276\n \n \n + \ DRA008860\n \n \n \ \n \n ENA-FASTQ-FILES\n \ \n \ \n \n \n @@ -11902,13 +9841,13 @@ interactions: \ ENA-BASE-COUNT\n 182690550386\n \ \n \n ENA-FIRST-PUBLIC\n \ 2018-01-08\n \n \n - \ ENA-LAST-UPDATE\n 2018-01-08\n + \ ENA-LAST-UPDATE\n 2021-08-11\n \ \n \n\n\n" headers: Content-Type: - application/xml Date: - - Wed, 28 Jul 2021 19:45:24 GMT + - Wed, 17 May 2023 18:37:58 GMT Strict-Transport-Security: - max-age=0 Transfer-Encoding: @@ -11926,7 +9865,7 @@ interactions: Connection: - keep-alive User-Agent: - - python-requests/2.25.1 + - python-requests/2.30.0 method: GET uri: https://www.ebi.ac.uk/ena/browser/api/xml/DRA004276 response: @@ -11958,7 +9897,7 @@ interactions: Content-Type: - application/xml Date: - - Wed, 28 Jul 2021 19:45:25 GMT + - Wed, 17 May 2023 18:37:58 GMT Strict-Transport-Security: - max-age=0 Transfer-Encoding: @@ -11966,68 +9905,6 @@ interactions: status: code: 200 message: '' -- request: - body: acc=DRR051066&accept-proto=fasp&version=2.0 - headers: - Accept: - - '*/*' - Accept-Encoding: - - gzip, deflate - Connection: - - keep-alive - Content-Length: - - '43' - User-Agent: - - python-requests/2.25.1 - method: POST - uri: https://www.ncbi.nlm.nih.gov/Traces/names/names.cgi - response: - body: - string: !!binary | - H4sIAAAAAAAAAwzIsQrCMBAA0L1fEXDoVLlLz7Tp7C4UJ7c0SakSeqGJiHAfr298J32Gphwuvxe5 - zjNcEIwRRKIexoFAiwYcO8AOzF3jRDjh+BCiEOJKVvslGBs19R4t2rj2GGwYnIgQgNz29FXtVmsu - rcoHV/ac1LMolxJ/YlArH6pu/+DlFX1tfgAAAP//AwDkc5tCjwAAAA== - headers: - Cache-Control: - - private - Connection: - - Keep-Alive - Content-Encoding: - - gzip - Content-Security-Policy: - - upgrade-insecure-requests - Content-Type: - - text/plain - Date: - - Wed, 28 Jul 2021 19:45:25 GMT - Keep-Alive: - - timeout=1, max=10 - NCBI-PHID: - - CC95FD3E101B3D510000000000000001.m_1 - NCBI-SID: - - CC95FD3E101B3D51_0000SID - Referrer-Policy: - - origin-when-cross-origin - Server: - - Apache - Set-Cookie: - - ncbi_sid=CC95FD3E101B3D51_0000SID; domain=.nih.gov; path=/; expires=Thu, 28 - Jul 2022 19:45:25 GMT - SraNameServerOutputVersion: - - '2.0' - Strict-Transport-Security: - - max-age=31536000; includeSubDomains; preload - Transfer-Encoding: - - chunked - Vary: - - Accept-Encoding - X-UA-Compatible: - - IE=Edge - X-XSS-Protection: - - 1; mode=block - status: - code: 200 - message: OK - request: body: null headers: @@ -12038,29 +9915,27 @@ interactions: Connection: - keep-alive User-Agent: - - python-requests/2.25.1 + - python-requests/2.30.0 method: GET uri: https://www.ebi.ac.uk/ena/portal/api/filereport?accession=DRR051066&result=read_run response: body: - string: "run_accession\tfastq_ftp\tfastq_bytes\tfastq_md5\tsubmitted_ftp\tsubmitted_bytes\tsubmitted_md5\tsra_ftp\tsra_bytes\tsra_md5\nDRR051066\tftp.sra.ebi.ac.uk/vol1/fastq/DRR051/DRR051066/DRR051066_1.fastq.gz;ftp.sra.ebi.ac.uk/vol1/fastq/DRR051/DRR051066/DRR051066_2.fastq.gz\t7169805313;7221515111\t2e696bf345b14809a945600e21d58496;9d1ad7f4856a258ebb7c5878a96d336a\t\t\t\t\t\t\n" + string: "run_accession\tfastq_ftp\tfastq_bytes\tfastq_md5\tbam_ftp\tbam_bytes\tbam_md5\tsubmitted_ftp\tsubmitted_bytes\tsubmitted_md5\tsra_ftp\tsra_bytes\tsra_md5\nDRR051066\tftp.sra.ebi.ac.uk/vol1/fastq/DRR051/DRR051066/DRR051066_1.fastq.gz;ftp.sra.ebi.ac.uk/vol1/fastq/DRR051/DRR051066/DRR051066_2.fastq.gz\t7169805313;7221515111\t2e696bf345b14809a945600e21d58496;9d1ad7f4856a258ebb7c5878a96d336a\t\t\t\t\t\t\tftp.sra.ebi.ac.uk/vol1/drr/DRR051/DRR051066\t11443087402\t44ddef492cbd69e243c1919ef31d9d7a\n" headers: Cache-Control: - no-cache, no-store, max-age=0, must-revalidate + Content-Length: + - '469' Content-Type: - text/plain Date: - - Wed, 28 Jul 2021 19:45:26 GMT + - Wed, 17 May 2023 18:37:59 GMT Expires: - '0' Pragma: - no-cache - Server: - - Apache-Coyote/1.1 Strict-Transport-Security: - max-age=0 - Transfer-Encoding: - - chunked X-Content-Type-Options: - nosniff X-Frame-Options: @@ -12069,7 +9944,7 @@ interactions: - 1; mode=block status: code: 200 - message: OK + message: '' - request: body: null headers: @@ -12080,7 +9955,7 @@ interactions: Connection: - keep-alive User-Agent: - - python-requests/2.25.1 + - python-requests/2.30.0 method: GET uri: https://www.ebi.ac.uk/ena/browser/api/xml/DRR051067 response: @@ -12114,7 +9989,7 @@ interactions: Content-Type: - application/xml Date: - - Wed, 28 Jul 2021 19:45:27 GMT + - Wed, 17 May 2023 18:37:59 GMT Strict-Transport-Security: - max-age=0 Transfer-Encoding: @@ -12132,7 +10007,7 @@ interactions: Connection: - keep-alive User-Agent: - - python-requests/2.25.1 + - python-requests/2.30.0 method: GET uri: https://www.ebi.ac.uk/ena/browser/api/xml/DRX045959 response: @@ -12189,7 +10064,7 @@ interactions: Content-Type: - application/xml Date: - - Wed, 28 Jul 2021 19:45:28 GMT + - Wed, 17 May 2023 18:37:59 GMT Strict-Transport-Security: - max-age=0 Transfer-Encoding: @@ -12207,57 +10082,44 @@ interactions: Connection: - keep-alive User-Agent: - - python-requests/2.25.1 + - python-requests/2.30.0 method: GET uri: https://www.ebi.ac.uk/ena/browser/api/xml/DRS057267 response: body: string: "\n\n\n \n - \ DRS057267\n SAMD00044994\n DRS057267\n \n Danio - rerio\n \n 7955\n Danio - rerio\n zebrafish\n - \ \n \n \n \n - \ ENA-STUDY\n DRP003977\n - \ \n \n \n - \ \n ENA-EXPERIMENT\n - \ DRX045959\n \n \n - \ \n \n ENA-RUN\n - \ DRR051067\n \n \n - \ \n \n ENA-SUBMISSION\n - \ DRA004277\n \n \n - \ \n \n ENA-FASTQ-FILES\n - \ \n - \ \n \n \n - \ \n ENA-SUBMITTED-FILES\n - \ \n - \ \n \n \n - \ \n \n description\n - \ These cells are from the same fish as h62A_GFP_plus_Tel\n - \ \n \n bioproject_id\n - \ PRJDB4470\n \n \n - \ sample_name\n h62A_GFP_minus_Tel\n - \ \n \n sample_title\n - \ GFP- cells from telencephalon of hspGFF62A;UAS:GFP transgenic - zebrafish\n \n \n - \ genotype\n hspGFF62A;UAS:GFP\n - \ \n \n tissue_type\n - \ brain\n \n \n - \ ENA-SPOT-COUNT\n 89569368\n - \ \n \n ENA-BASE-COUNT\n - \ 17913873600\n \n - \ \n ENA-FIRST-PUBLIC\n - \ 2018-01-07\n \n - \ \n ENA-LAST-UPDATE\n - \ 2018-01-07\n \n + alias=\"SAMD00044994\" center_name=\"National Institute of Genetics (Japan)\" + broker_name=\"DDBJ\">\n \n DRS057267\n + \ SAMD00044994\n + \ \n GFP- cells from telencephalon of hspGFF62A;UAS:GFP + transgenic zebrafish\n \n 7955\n + \ Danio rerio\n zebrafish\n + \ \n These cells are from the same fish + as h62A_GFP_plus_Tel\n \n \n + \ \n ENA-FASTQ-FILES\n \n + \ \n \n \n \n + \ ENA-SUBMITTED-FILES\n \n + \ \n \n\n\n + \ \n INSDC secondary accession\n + \ DRS057267\n \n \n + \ NCBI submission package\n Generic.1.0\n + \ \n \n organism\n + \ Danio rerio\n \n + \ \n tissue type\n brain\n + \ \n \n sample + name\n h62A_GFP_minus_Tel\n \n + \ \n genotype\n hspGFF62A;UAS:GFP\n + \ \n \n BioSampleModel\n + \ Generic\n \n \n + \ ENA-FIRST-PUBLIC\n 2018-01-06\n + \ \n \n ENA-LAST-UPDATE\n + \ 2018-01-06\n \n \ \n\n\n" headers: Content-Type: - application/xml Date: - - Wed, 28 Jul 2021 19:45:28 GMT + - Wed, 17 May 2023 18:38:00 GMT Strict-Transport-Security: - max-age=0 Transfer-Encoding: @@ -12275,7 +10137,7 @@ interactions: Connection: - keep-alive User-Agent: - - python-requests/2.25.1 + - python-requests/2.30.0 method: GET uri: https://www.ebi.ac.uk/ena/browser/api/xml/DRP003977 response: @@ -12283,14 +10145,16 @@ interactions: string: "\n\n\n \n \ DRP003977\n PRJDB4470\n - \ PRJDB4470\n + \ PRJDB4470\n \ DRP003977\n \n \ \n Gene expression analysis of the - zebrafish brain\n \n Gene expression profiling by RNA-seq - of specific regions and subpopulations of neurons in the zebrafish brain that - control behaviors.\n \n \n - \ \n \n ENA-SAMPLE\n + zebrafish brain\n \n + \ Gene expression profiling by RNA-seq of specific + regions and subpopulations of neurons in the zebrafish brain that control + behaviors.\n Gene expression + profiling by RNA-seq of specific regions and subpopulations of neurons in + the zebrafish brain that control behaviors.\n \n + \ \n \n \n ENA-SAMPLE\n \ DRS057265-DRS057267,DRS057269-DRS057272,DRS057274-DRS057275\n \ \n \n \n \ \n ENA-EXPERIMENT\n @@ -12299,7 +10163,7 @@ interactions: \ ENA-RUN\n DRR051059-DRR051067\n \ \n \n \n \ \n ENA-SUBMISSION\n - \ DRA004276\n \n \n + \ DRA008860\n \n \n \ \n \n ENA-FASTQ-FILES\n \ \n \ \n \n \n @@ -12311,13 +10175,13 @@ interactions: \ ENA-BASE-COUNT\n 182690550386\n \ \n \n ENA-FIRST-PUBLIC\n \ 2018-01-08\n \n \n - \ ENA-LAST-UPDATE\n 2018-01-08\n + \ ENA-LAST-UPDATE\n 2021-08-11\n \ \n \n\n\n" headers: Content-Type: - application/xml Date: - - Wed, 28 Jul 2021 19:45:28 GMT + - Wed, 17 May 2023 18:37:59 GMT Strict-Transport-Security: - max-age=0 Transfer-Encoding: @@ -12335,7 +10199,7 @@ interactions: Connection: - keep-alive User-Agent: - - python-requests/2.25.1 + - python-requests/2.30.0 method: GET uri: https://www.ebi.ac.uk/ena/browser/api/xml/DRA004277 response: @@ -12369,7 +10233,7 @@ interactions: Content-Type: - application/xml Date: - - Wed, 28 Jul 2021 19:45:29 GMT + - Wed, 17 May 2023 18:38:00 GMT Strict-Transport-Security: - max-age=0 Transfer-Encoding: @@ -12377,68 +10241,6 @@ interactions: status: code: 200 message: '' -- request: - body: acc=DRR051067&accept-proto=fasp&version=2.0 - headers: - Accept: - - '*/*' - Accept-Encoding: - - gzip, deflate - Connection: - - keep-alive - Content-Length: - - '43' - User-Agent: - - python-requests/2.25.1 - method: POST - uri: https://www.ncbi.nlm.nih.gov/Traces/names/names.cgi - response: - body: - string: !!binary | - H4sIAAAAAAAAAxTKsQrCMBQF0L1fEXDoVLkvTeJLZ3ehOLk1bUqVYEobEeF9vLoezkEfUe3bsL6C - nPseluBOQmTJcWvBJBrEDaiBuxJ3LXeabhIm43TU3pLBv3KY2fuRCD5iMhARA8jlmT6qXkpZ91qt - Wy55zEnddzWklN9xUnPeVFl+kMMjjqX6AgAA//8DAAVtKA+PAAAA - headers: - Cache-Control: - - private - Connection: - - Keep-Alive - Content-Encoding: - - gzip - Content-Security-Policy: - - upgrade-insecure-requests - Content-Type: - - text/plain - Date: - - Wed, 28 Jul 2021 19:45:30 GMT - Keep-Alive: - - timeout=1, max=10 - NCBI-PHID: - - CC95FD87101B3DA10000000000000001.m_1 - NCBI-SID: - - CC95FD87101B3DA1_0000SID - Referrer-Policy: - - origin-when-cross-origin - Server: - - Apache - Set-Cookie: - - ncbi_sid=CC95FD87101B3DA1_0000SID; domain=.nih.gov; path=/; expires=Thu, 28 - Jul 2022 19:45:30 GMT - SraNameServerOutputVersion: - - '2.0' - Strict-Transport-Security: - - max-age=31536000; includeSubDomains; preload - Transfer-Encoding: - - chunked - Vary: - - Accept-Encoding - X-UA-Compatible: - - IE=Edge - X-XSS-Protection: - - 1; mode=block - status: - code: 200 - message: OK - request: body: null headers: @@ -12449,29 +10251,27 @@ interactions: Connection: - keep-alive User-Agent: - - python-requests/2.25.1 + - python-requests/2.30.0 method: GET uri: https://www.ebi.ac.uk/ena/portal/api/filereport?accession=DRR051067&result=read_run response: body: - string: "run_accession\tfastq_ftp\tfastq_bytes\tfastq_md5\tsubmitted_ftp\tsubmitted_bytes\tsubmitted_md5\tsra_ftp\tsra_bytes\tsra_md5\nDRR051067\tftp.sra.ebi.ac.uk/vol1/fastq/DRR051/DRR051067/DRR051067_1.fastq.gz;ftp.sra.ebi.ac.uk/vol1/fastq/DRR051/DRR051067/DRR051067_2.fastq.gz\t7040712780;7471523344\t83884a210f90531fc75f3e5751f93159;aba57b33a49964ab4b811b71e5827cde\t\t\t\t\t\t\n" + string: "run_accession\tfastq_ftp\tfastq_bytes\tfastq_md5\tbam_ftp\tbam_bytes\tbam_md5\tsubmitted_ftp\tsubmitted_bytes\tsubmitted_md5\tsra_ftp\tsra_bytes\tsra_md5\nDRR051067\tftp.sra.ebi.ac.uk/vol1/fastq/DRR051/DRR051067/DRR051067_1.fastq.gz;ftp.sra.ebi.ac.uk/vol1/fastq/DRR051/DRR051067/DRR051067_2.fastq.gz\t7040712780;7471523344\t83884a210f90531fc75f3e5751f93159;aba57b33a49964ab4b811b71e5827cde\t\t\t\t\t\t\tftp.sra.ebi.ac.uk/vol1/drr/DRR051/DRR051067\t11516835081\tbd462e29514051688bf899c1109e0d40\n" headers: Cache-Control: - no-cache, no-store, max-age=0, must-revalidate + Content-Length: + - '469' Content-Type: - text/plain Date: - - Wed, 28 Jul 2021 19:45:31 GMT + - Wed, 17 May 2023 18:38:01 GMT Expires: - '0' Pragma: - no-cache - Server: - - Apache-Coyote/1.1 Strict-Transport-Security: - max-age=0 - Transfer-Encoding: - - chunked X-Content-Type-Options: - nosniff X-Frame-Options: @@ -12480,5 +10280,5 @@ interactions: - 1; mode=block status: code: 200 - message: OK + message: '' version: 1 diff --git a/test_volume/cassettes/surveyor.sra.survey_nonexistant.yaml b/test_volume/cassettes/surveyor.sra.survey_nonexistant.yaml index c6b549f81..a3e30fdf2 100644 --- a/test_volume/cassettes/surveyor.sra.survey_nonexistant.yaml +++ b/test_volume/cassettes/surveyor.sra.survey_nonexistant.yaml @@ -9,19 +9,19 @@ interactions: Connection: - keep-alive User-Agent: - - python-requests/2.25.1 + - python-requests/2.30.0 method: GET uri: https://www.ebi.ac.uk/ena/browser/api/xml/ERP006216 response: body: - string: "\n\n 1627501393717\n + string: "\n\n 1684348606015\n \ 404\n Not Found\n ERP006216 not found.\n /ena/browser/api/xml/ERP006216\n\n" headers: Content-Type: - application/xml Date: - - Wed, 28 Jul 2021 19:43:13 GMT + - Wed, 17 May 2023 18:36:45 GMT Strict-Transport-Security: - max-age=0 Transfer-Encoding: diff --git a/test_volume/cassettes/surveyor.sra.survey_unmated_reads.yaml b/test_volume/cassettes/surveyor.sra.survey_unmated_reads.yaml index 7590ed1bd..178edaa76 100644 --- a/test_volume/cassettes/surveyor.sra.survey_unmated_reads.yaml +++ b/test_volume/cassettes/surveyor.sra.survey_unmated_reads.yaml @@ -9,7 +9,7 @@ interactions: Connection: - keep-alive User-Agent: - - python-requests/2.25.1 + - python-requests/2.30.0 method: GET uri: https://www.ebi.ac.uk/ena/browser/api/xml/SRP048683 response: @@ -56,7 +56,7 @@ interactions: Content-Type: - application/xml Date: - - Wed, 28 Jul 2021 19:45:36 GMT + - Wed, 17 May 2023 18:38:04 GMT Strict-Transport-Security: - max-age=0 Transfer-Encoding: @@ -74,7 +74,7 @@ interactions: Connection: - keep-alive User-Agent: - - python-requests/2.25.1 + - python-requests/2.30.0 method: GET uri: https://www.ebi.ac.uk/ena/browser/api/xml/SRR1603661 response: @@ -121,7 +121,7 @@ interactions: Content-Type: - application/xml Date: - - Wed, 28 Jul 2021 19:45:36 GMT + - Wed, 17 May 2023 18:38:04 GMT Strict-Transport-Security: - max-age=0 Transfer-Encoding: @@ -139,7 +139,7 @@ interactions: Connection: - keep-alive User-Agent: - - python-requests/2.25.1 + - python-requests/2.30.0 method: GET uri: https://www.ebi.ac.uk/ena/browser/api/xml/SRX725593 response: @@ -198,7 +198,7 @@ interactions: Content-Type: - application/xml Date: - - Wed, 28 Jul 2021 19:45:36 GMT + - Wed, 17 May 2023 18:38:04 GMT Strict-Transport-Security: - max-age=0 Transfer-Encoding: @@ -216,52 +216,45 @@ interactions: Connection: - keep-alive User-Agent: - - python-requests/2.25.1 + - python-requests/2.30.0 method: GET uri: https://www.ebi.ac.uk/ena/browser/api/xml/SRS716925 response: body: string: "\n\n\n \n - \ SRS716925\n SAMN03097499\n - \ GSM1519616\n \n + alias=\"GSM1519616\" center_name=\"Stanford University\" broker_name=\"NCBI\">\n + \ \n SRS716925\n SAMN03097499\n GSM1519616\n \n \ RNA-seq of the corpus callosum #5308\n \n \ 9606\n Homo sapiens\n - \ \n \n \n \n - \ ENA-STUDY\n SRP048683\n - \ \n \n \n - \ \n ENA-EXPERIMENT\n - \ SRX725593\n \n \n - \ \n \n ENA-RUN\n - \ SRR1603661\n \n \n - \ \n \n ENA-SUBMISSION\n - \ SRA188845\n \n \n - \ \n \n ARRAYEXPRESS\n - \ E-GEOD-62098\n \n \n - \ \n \n ENA-FASTQ-FILES\n - \ \n - \ \n \n \n - \ \n ENA-SUBMITTED-FILES\n - \ \n - \ \n \n \n - \ \n \n source_name\n - \ human brain\n \n - \ \n tissue\n frozen - postmortem brain from NICHD\n \n \n - \ disease\n autism spectrum disorder\n - \ \n \n ENA-SPOT-COUNT\n - \ 162048745\n \n \n - \ ENA-BASE-COUNT\n 28185753687\n - \ \n \n ENA-FIRST-PUBLIC\n - \ 2015-03-23\n \n - \ \n ENA-LAST-UPDATE\n - \ 2015-06-23\n \n + \ human\n \n \n + \ \n \n ENA-FASTQ-FILES\n + \ \n + \ \n \n \n \n + \ ENA-SUBMITTED-FILES\n \n + \ \n \n\n\n + \ \n INSDC secondary accession\n + \ SRS716925\n \n \n + \ NCBI submission package\n Generic.1.0\n + \ \n \n disease\n + \ autism spectrum disorder\n \n + \ \n organism\n Homo + sapiens\n \n \n + \ tissue\n frozen postmortem + brain from NICHD\n \n \n + \ source_name\n human brain\n + \ \n \n BioSampleModel\n + \ Generic\n \n \n + \ ENA-FIRST-PUBLIC\n 2015-01-01\n + \ \n \n ENA-LAST-UPDATE\n + \ 2015-01-01\n \n \ \n\n\n" headers: Content-Type: - application/xml Date: - - Wed, 28 Jul 2021 19:45:37 GMT + - Wed, 17 May 2023 18:38:06 GMT Strict-Transport-Security: - max-age=0 Transfer-Encoding: @@ -279,7 +272,7 @@ interactions: Connection: - keep-alive User-Agent: - - python-requests/2.25.1 + - python-requests/2.30.0 method: GET uri: https://www.ebi.ac.uk/ena/browser/api/xml/SRP048683 response: @@ -326,7 +319,7 @@ interactions: Content-Type: - application/xml Date: - - Wed, 28 Jul 2021 19:45:38 GMT + - Wed, 17 May 2023 18:38:05 GMT Strict-Transport-Security: - max-age=0 Transfer-Encoding: @@ -344,7 +337,7 @@ interactions: Connection: - keep-alive User-Agent: - - python-requests/2.25.1 + - python-requests/2.30.0 method: GET uri: https://www.ebi.ac.uk/ena/browser/api/xml/SRA188845 response: @@ -381,7 +374,7 @@ interactions: Content-Type: - application/xml Date: - - Wed, 28 Jul 2021 19:45:38 GMT + - Wed, 17 May 2023 18:38:06 GMT Strict-Transport-Security: - max-age=0 Transfer-Encoding: @@ -389,69 +382,6 @@ interactions: status: code: 200 message: '' -- request: - body: acc=SRR1603661&accept-proto=fasp&version=2.0 - headers: - Accept: - - '*/*' - Accept-Encoding: - - gzip, deflate - Connection: - - keep-alive - Content-Length: - - '44' - User-Agent: - - python-requests/2.25.1 - method: POST - uri: https://www.ncbi.nlm.nih.gov/Traces/names/names.cgi - response: - body: - string: !!binary | - H4sIAAAAAAAAA5zOPW4CMRBA4T6nsJSCCjQztseevUQkoKLzX7SJVni164CQfHiWtOnSvuZ973SA - t3UJ80/sp+MRGTQzdiRgzYJaXCdAs0fYA59JD2AGlEv3kiGzIbEB2LroEbyQ9sgxOGdT790A9I/r - 9FC7sbV53al5qa2mOqmvVYVpqveS1WddVBu3UON3Se0v5XDLMYU0ls2ktx8Q/pLci0T6DDIYGIy5 - dJJkMZBx2z+yzt4iFh9LBm+oFPkv6QkAAP//AwBM6dz2IwEAAA== - headers: - Cache-Control: - - private - Connection: - - Keep-Alive - Content-Encoding: - - gzip - Content-Security-Policy: - - upgrade-insecure-requests - Content-Type: - - text/plain - Date: - - Wed, 28 Jul 2021 19:45:39 GMT - Keep-Alive: - - timeout=1, max=10 - NCBI-PHID: - - C7A42D50101B3E310000000000000001.m_1 - NCBI-SID: - - C7A42D50101B3E31_0000SID - Referrer-Policy: - - origin-when-cross-origin - Server: - - Apache - Set-Cookie: - - ncbi_sid=C7A42D50101B3E31_0000SID; domain=.nih.gov; path=/; expires=Thu, 28 - Jul 2022 19:45:39 GMT - SraNameServerOutputVersion: - - '2.0' - Strict-Transport-Security: - - max-age=31536000; includeSubDomains; preload - Transfer-Encoding: - - chunked - Vary: - - Accept-Encoding - X-UA-Compatible: - - IE=Edge - X-XSS-Protection: - - 1; mode=block - status: - code: 200 - message: OK - request: body: null headers: @@ -462,7 +392,7 @@ interactions: Connection: - keep-alive User-Agent: - - python-requests/2.25.1 + - python-requests/2.30.0 method: GET uri: https://eutils.ncbi.nlm.nih.gov/entrez/eutils/esummary.fcgi?db=pubmed&id=25549968&retmode=json&tool=refinebio&email=hello@refine.bio response: @@ -472,18 +402,18 @@ interactions: vR9vZmZUTAMLNjOG6cTYIPs4jiQTVvjJ4rWzSawXK/yqUJJpQg5HPXhs3nC52ay329s7fK9+5x8/ YVelwlM8DhRywbK+WcMD97Cqk87/Gd5F6bPcOgPd5APca2eSQTEoJ7l9RktjjrxoeL44lyt251DS ehN9YDmvk064Ip3S0BYyLcGhEDkoctAVQo/Rf2jpFVvYl/bphNrib7zKkSzsCqknMmakieVv3zcA - AAD//7RVS2/TQBC+8ytWuTexHbtp0lNVeiiiqHfEwV5v0qX7KPsoFNT/zje7dpxADuWAZCnxeJ7f - fDPzFvTNC1j3xgaAWqr1Iff92DjIoMjy1gSxc6BRzzyoIrRnrWnVi5eeOfEsWgUB01YJHlXrmBHh - u3WPLBp4Ui/S7BjcS6+ZfxI8uKhZL711+OrniYwujLHkf4xFQ2dVTBiVNAXS+0gvNEHtToD1s9Wq - nhEiZkcDKPADgIzS0chvUSTMyqKsls3yYp09mOxA5H/lqq7P6mpd5anM2H+efcC8oQx25YLkKPQL - jTtHWkA+RAp8H7s7FH3GJCr5gX9biy7cvP94++km+9qrLqmx2VFeFL9msh+6DD0tesosSZBSiapb - lercbwwiy2Si+aH+xaR/f3ddL4uiXjfHFr2VhxbLyaIs5mVTNdVC+25OK6epL1bHxkS80+FOpyf+ - UR/lHFs0kwW+ncl+w6bCLtMEPEgfLLYyQXmItDDBiZ9wNi3RZlGUeFhxvimKFPnQYA//Ww2graQR - RxbniwJPNVokrmyFE4aL3G28nl7gc0aYX5bFZrWiuwDFAZVrqzWqAbuITJqIPMC3Br9tCp1CtSE4 - 2cWQQmEJeXaFbF3LA5EWAMInt9HgUDVo/DYq9TWTe9zj+9kcB7hDZnZHN08oy9uAq5cGCTTasNOM - ARyWD6lzGZINbQrHuTWUoELHkCBS6qx9HLcHVACojHqYyV6GfGLzBMHoAVtiyOEP8ZB+jjI0I0H4 - hPVkou7okJOkfW6lajslts7q6FSWjl7xRQwilPBXtpBNvin1KSx/aJ/CGIR24vHxXpTVYlmwoiBS - ZIWtdAebe7jTz1RKasAeldfX13e/AQAA//8DANw4jtyNCAAA + AAD//7RVyW7bMBC99ysI32NLthTHzilIc0jRFLkXPVA07bDhknJJmxb5974hJcuuc8ilgAFLo3mz + vVneU337gq57JwFoLc1DLLwfg6OKmpC3NsqdRxttWECrSBMYt1y/BBWYl8+SawiYcVqKpLlnVsaf + zj+yZGFJvyi7YzCvgmHhSYrok2EbFZzH1zDNzejj4Ev9R180dE6nXKOapkCFkPLLnGaI7yT6frJc + NhOqid3RCEr8oURWm2TVjyRz1eqqni/axcWq2KAZrpdNc9bMV2RJnoowh4WGr5NPGD1kxK58VAI5 + f6PJF4gQJMREEdyn7g75nzGFpH7haetAyM3Hz7dfboqtveqCOC6Gys74M1GbnnDoGbmhELMEIdUo + ANc55f3yoL4ZIUYc6l+M+vd3182iqppVe4JQRz7aEYNvZ2qzZiP28hi8ceoQuhihdTWt23k7n5nQ + TWl1tc3FMjfrgwrRYYFSqoeVkDZ6+Rvmxn3XzqoaP1adr6sqez4E7MvzXgC0tbLyCHE+q/CbD4jM + 5VZ6aYUsbOD17V07ZZTWZV2tl0ta4VDsq3LtjEE2YJ/INtRxPVsrNKLLrrMrHqNXXYrZFfZFYFeI + 1nMRqalQfdgULlnclBZUbpPW30vzDSt3P0bDrHWIzO3oPEntBI84ULnjwdSavU0KyuFEH7pQMWNo + qL0QzlKAGowhQITUOfc4DDpUUFCVTHnGYyzXsHQ4QA8Y6D6Gf8R9+MVLT0Yu4RM2iU2mo5tLEv7M + leadllvvTPK6SAer+CJ7EVI4iRay0TaFProVD/wpDk5ofR3f2Vk9ny0qVlXUFEVhq/zBku1P6jOl + kgnYV+X19fXDXwAAAP//AwBNTBeGOAgAAA== headers: Access-Control-Allow-Origin: - '*' @@ -498,18 +428,20 @@ interactions: Content-Type: - application/json; charset=UTF-8 Date: - - Wed, 28 Jul 2021 19:45:38 GMT + - Wed, 17 May 2023 18:38:07 GMT Keep-Alive: - timeout=4, max=40 NCBI-PHID: - - 322C6078A1DD3885000034FA20798E62.1.1.m_1 + - 322C36E9C9D0D90500005E0AE30E5C73.1.1.m_1 NCBI-SID: - - 9F4B36537CC83871_AAECSID + - 9A764307C0400C6F_B567SID + Referrer-Policy: + - origin-when-cross-origin Server: - Finatra Set-Cookie: - - ncbi_sid=9F4B36537CC83871_AAECSID; domain=.nih.gov; path=/; expires=Thu, 28 - Jul 2022 19:45:39 GMT + - ncbi_sid=9A764307C0400C6F_B567SID; domain=.nih.gov; path=/; expires=Fri, 17 + May 2024 18:38:07 GMT Strict-Transport-Security: - max-age=31536000; includeSubDomains; preload Transfer-Encoding: @@ -537,29 +469,27 @@ interactions: Connection: - keep-alive User-Agent: - - python-requests/2.25.1 + - python-requests/2.30.0 method: GET uri: https://www.ebi.ac.uk/ena/portal/api/filereport?accession=SRR1603661&result=read_run response: body: - string: "run_accession\tfastq_ftp\tfastq_bytes\tfastq_md5\tsubmitted_ftp\tsubmitted_bytes\tsubmitted_md5\tsra_ftp\tsra_bytes\tsra_md5\nSRR1603661\tftp.sra.ebi.ac.uk/vol1/fastq/SRR160/001/SRR1603661/SRR1603661.fastq.gz;ftp.sra.ebi.ac.uk/vol1/fastq/SRR160/001/SRR1603661/SRR1603661_1.fastq.gz;ftp.sra.ebi.ac.uk/vol1/fastq/SRR160/001/SRR1603661/SRR1603661_2.fastq.gz\t852745978;6751980628;6949912932\tbbd8e04db475a6b28fed8c74eeb9d701;502a9a482bfa5aa75865ccc0105ad13c;fffd24457418d255991f54ec82a39d57\t\t\t\t\t\t\n" + string: "run_accession\tfastq_ftp\tfastq_bytes\tfastq_md5\tbam_ftp\tbam_bytes\tbam_md5\tsubmitted_ftp\tsubmitted_bytes\tsubmitted_md5\tsra_ftp\tsra_bytes\tsra_md5\nSRR1603661\tftp.sra.ebi.ac.uk/vol1/fastq/SRR160/001/SRR1603661/SRR1603661.fastq.gz;ftp.sra.ebi.ac.uk/vol1/fastq/SRR160/001/SRR1603661/SRR1603661_1.fastq.gz;ftp.sra.ebi.ac.uk/vol1/fastq/SRR160/001/SRR1603661/SRR1603661_2.fastq.gz\t852745978;6751980628;6949912932\tbbd8e04db475a6b28fed8c74eeb9d701;502a9a482bfa5aa75865ccc0105ad13c;fffd24457418d255991f54ec82a39d57\t\t\t\t\t\t\tftp.sra.ebi.ac.uk/vol1/srr/SRR160/001/SRR1603661\t12063691397\t89d0d64295a0657b8108923816ba775c\n" headers: Cache-Control: - no-cache, no-store, max-age=0, must-revalidate + Content-Length: + - '601' Content-Type: - text/plain Date: - - Wed, 28 Jul 2021 19:45:39 GMT + - Wed, 17 May 2023 18:38:07 GMT Expires: - '0' Pragma: - no-cache - Server: - - Apache-Coyote/1.1 Strict-Transport-Security: - max-age=0 - Transfer-Encoding: - - chunked X-Content-Type-Options: - nosniff X-Frame-Options: @@ -568,7 +498,7 @@ interactions: - 1; mode=block status: code: 200 - message: OK + message: '' - request: body: null headers: @@ -579,7 +509,7 @@ interactions: Connection: - keep-alive User-Agent: - - python-requests/2.25.1 + - python-requests/2.30.0 method: GET uri: https://www.ebi.ac.uk/ena/browser/api/xml/SRR1603662 response: @@ -626,7 +556,7 @@ interactions: Content-Type: - application/xml Date: - - Wed, 28 Jul 2021 19:45:40 GMT + - Wed, 17 May 2023 18:38:07 GMT Strict-Transport-Security: - max-age=0 Transfer-Encoding: @@ -644,7 +574,7 @@ interactions: Connection: - keep-alive User-Agent: - - python-requests/2.25.1 + - python-requests/2.30.0 method: GET uri: https://www.ebi.ac.uk/ena/browser/api/xml/SRX725594 response: @@ -703,7 +633,7 @@ interactions: Content-Type: - application/xml Date: - - Wed, 28 Jul 2021 19:45:41 GMT + - Wed, 17 May 2023 18:38:08 GMT Strict-Transport-Security: - max-age=0 Transfer-Encoding: @@ -721,52 +651,45 @@ interactions: Connection: - keep-alive User-Agent: - - python-requests/2.25.1 + - python-requests/2.30.0 method: GET uri: https://www.ebi.ac.uk/ena/browser/api/xml/SRS716926 response: body: string: "\n\n\n \n - \ SRS716926\n SAMN03097500\n - \ GSM1519617\n \n + alias=\"GSM1519617\" center_name=\"Stanford University\" broker_name=\"NCBI\">\n + \ \n SRS716926\n SAMN03097500\n GSM1519617\n \n \ RNA-seq of the corpus callosum #5144\n \n \ 9606\n Homo sapiens\n - \ \n \n \n \n - \ ENA-STUDY\n SRP048683\n - \ \n \n \n - \ \n ENA-EXPERIMENT\n - \ SRX725594\n \n \n - \ \n \n ENA-RUN\n - \ SRR1603662\n \n \n - \ \n \n ENA-SUBMISSION\n - \ SRA188845\n \n \n - \ \n \n ARRAYEXPRESS\n - \ E-GEOD-62098\n \n \n - \ \n \n ENA-FASTQ-FILES\n - \ \n - \ \n \n \n - \ \n ENA-SUBMITTED-FILES\n - \ \n - \ \n \n \n - \ \n \n source_name\n - \ human brain\n \n - \ \n tissue\n frozen - postmortem brain from NICHD\n \n \n - \ disease\n autism spectrum disorder\n - \ \n \n ENA-SPOT-COUNT\n - \ 172822773\n \n \n - \ ENA-BASE-COUNT\n 29944432518\n - \ \n \n ENA-FIRST-PUBLIC\n - \ 2015-03-23\n \n - \ \n ENA-LAST-UPDATE\n - \ 2015-06-23\n \n + \ human\n \n \n + \ \n \n ENA-FASTQ-FILES\n + \ \n + \ \n \n \n \n + \ ENA-SUBMITTED-FILES\n \n + \ \n \n\n\n + \ \n INSDC secondary accession\n + \ SRS716926\n \n \n + \ NCBI submission package\n Generic.1.0\n + \ \n \n disease\n + \ autism spectrum disorder\n \n + \ \n organism\n Homo + sapiens\n \n \n + \ tissue\n frozen postmortem + brain from NICHD\n \n \n + \ source_name\n human brain\n + \ \n \n BioSampleModel\n + \ Generic\n \n \n + \ ENA-FIRST-PUBLIC\n 2015-01-01\n + \ \n \n ENA-LAST-UPDATE\n + \ 2015-01-01\n \n \ \n\n\n" headers: Content-Type: - application/xml Date: - - Wed, 28 Jul 2021 19:45:41 GMT + - Wed, 17 May 2023 18:38:08 GMT Strict-Transport-Security: - max-age=0 Transfer-Encoding: @@ -784,7 +707,7 @@ interactions: Connection: - keep-alive User-Agent: - - python-requests/2.25.1 + - python-requests/2.30.0 method: GET uri: https://www.ebi.ac.uk/ena/browser/api/xml/SRP048683 response: @@ -831,7 +754,7 @@ interactions: Content-Type: - application/xml Date: - - Wed, 28 Jul 2021 19:45:42 GMT + - Wed, 17 May 2023 18:38:09 GMT Strict-Transport-Security: - max-age=0 Transfer-Encoding: @@ -849,7 +772,7 @@ interactions: Connection: - keep-alive User-Agent: - - python-requests/2.25.1 + - python-requests/2.30.0 method: GET uri: https://www.ebi.ac.uk/ena/browser/api/xml/SRA188845 response: @@ -886,7 +809,7 @@ interactions: Content-Type: - application/xml Date: - - Wed, 28 Jul 2021 19:45:42 GMT + - Wed, 17 May 2023 18:38:08 GMT Strict-Transport-Security: - max-age=0 Transfer-Encoding: @@ -894,69 +817,6 @@ interactions: status: code: 200 message: '' -- request: - body: acc=SRR1603662&accept-proto=fasp&version=2.0 - headers: - Accept: - - '*/*' - Accept-Encoding: - - gzip, deflate - Connection: - - keep-alive - Content-Length: - - '44' - User-Agent: - - python-requests/2.25.1 - method: POST - uri: https://www.ncbi.nlm.nih.gov/Traces/names/names.cgi - response: - body: - string: !!binary | - H4sIAAAAAAAAA5zOPU7EMBBA4Z5TWKLYalfjmfFfLoG0bLWdPbYVUISjxICQfHgCLR163au+R7zA - w77F9T2N5+tVWyBrcWhCDMAcwA4EzWcNZ7A3xIntRP4+hClY7SSXVD06yF6KMzFUD56ygTEGA4yn - t+VLnebe1/2k1q31Jm1RL7uKy9I+S1a1barPx2jptUj/S7l85CRR5nKYmDRa0r8k90NCukGYWE9k - 7sMUdyiYMpakOVZ7ZIpIZUBhQ/8lfQMAAP//AwAfm9DBIwEAAA== - headers: - Cache-Control: - - private - Connection: - - Keep-Alive - Content-Encoding: - - gzip - Content-Security-Policy: - - upgrade-insecure-requests - Content-Type: - - text/plain - Date: - - Wed, 28 Jul 2021 19:45:43 GMT - Keep-Alive: - - timeout=1, max=10 - NCBI-PHID: - - C7A42DCF101B3E710000000000000001.m_1 - NCBI-SID: - - C7A42DCF101B3E71_0000SID - Referrer-Policy: - - origin-when-cross-origin - Server: - - Apache - Set-Cookie: - - ncbi_sid=C7A42DCF101B3E71_0000SID; domain=.nih.gov; path=/; expires=Thu, 28 - Jul 2022 19:45:43 GMT - SraNameServerOutputVersion: - - '2.0' - Strict-Transport-Security: - - max-age=31536000; includeSubDomains; preload - Transfer-Encoding: - - chunked - Vary: - - Accept-Encoding - X-UA-Compatible: - - IE=Edge - X-XSS-Protection: - - 1; mode=block - status: - code: 200 - message: OK - request: body: null headers: @@ -967,29 +827,27 @@ interactions: Connection: - keep-alive User-Agent: - - python-requests/2.25.1 + - python-requests/2.30.0 method: GET uri: https://www.ebi.ac.uk/ena/portal/api/filereport?accession=SRR1603662&result=read_run response: body: - string: "run_accession\tfastq_ftp\tfastq_bytes\tfastq_md5\tsubmitted_ftp\tsubmitted_bytes\tsubmitted_md5\tsra_ftp\tsra_bytes\tsra_md5\nSRR1603662\tftp.sra.ebi.ac.uk/vol1/fastq/SRR160/002/SRR1603662/SRR1603662.fastq.gz;ftp.sra.ebi.ac.uk/vol1/fastq/SRR160/002/SRR1603662/SRR1603662_1.fastq.gz;ftp.sra.ebi.ac.uk/vol1/fastq/SRR160/002/SRR1603662/SRR1603662_2.fastq.gz\t998808350;7340614837;7522532959\t66f002c1cee8243129e9e73aa66a4e49;d9c461cdf14c6077f56b722fca8b6920;95eb1c28105297e66a9d70996ae69634\t\t\t\t\t\t\n" + string: "run_accession\tfastq_ftp\tfastq_bytes\tfastq_md5\tbam_ftp\tbam_bytes\tbam_md5\tsubmitted_ftp\tsubmitted_bytes\tsubmitted_md5\tsra_ftp\tsra_bytes\tsra_md5\nSRR1603662\tftp.sra.ebi.ac.uk/vol1/fastq/SRR160/002/SRR1603662/SRR1603662.fastq.gz;ftp.sra.ebi.ac.uk/vol1/fastq/SRR160/002/SRR1603662/SRR1603662_1.fastq.gz;ftp.sra.ebi.ac.uk/vol1/fastq/SRR160/002/SRR1603662/SRR1603662_2.fastq.gz\t998808350;7340614837;7522532959\t66f002c1cee8243129e9e73aa66a4e49;d9c461cdf14c6077f56b722fca8b6920;95eb1c28105297e66a9d70996ae69634\t\t\t\t\t\t\tftp.sra.ebi.ac.uk/vol1/srr/SRR160/002/SRR1603662\t13229044906\tc439617cdebf8270d8ce75a9f8083d50\n" headers: Cache-Control: - no-cache, no-store, max-age=0, must-revalidate + Content-Length: + - '601' Content-Type: - text/plain Date: - - Wed, 28 Jul 2021 19:45:43 GMT + - Wed, 17 May 2023 18:38:10 GMT Expires: - '0' Pragma: - no-cache - Server: - - Apache-Coyote/1.1 Strict-Transport-Security: - max-age=0 - Transfer-Encoding: - - chunked X-Content-Type-Options: - nosniff X-Frame-Options: @@ -998,7 +856,7 @@ interactions: - 1; mode=block status: code: 200 - message: OK + message: '' - request: body: null headers: @@ -1009,7 +867,7 @@ interactions: Connection: - keep-alive User-Agent: - - python-requests/2.25.1 + - python-requests/2.30.0 method: GET uri: https://www.ebi.ac.uk/ena/browser/api/xml/SRR1603663 response: @@ -1056,7 +914,7 @@ interactions: Content-Type: - application/xml Date: - - Wed, 28 Jul 2021 19:45:44 GMT + - Wed, 17 May 2023 18:38:10 GMT Strict-Transport-Security: - max-age=0 Transfer-Encoding: @@ -1074,7 +932,7 @@ interactions: Connection: - keep-alive User-Agent: - - python-requests/2.25.1 + - python-requests/2.30.0 method: GET uri: https://www.ebi.ac.uk/ena/browser/api/xml/SRX725595 response: @@ -1133,7 +991,7 @@ interactions: Content-Type: - application/xml Date: - - Wed, 28 Jul 2021 19:45:44 GMT + - Wed, 17 May 2023 18:38:10 GMT Strict-Transport-Security: - max-age=0 Transfer-Encoding: @@ -1151,52 +1009,45 @@ interactions: Connection: - keep-alive User-Agent: - - python-requests/2.25.1 + - python-requests/2.30.0 method: GET uri: https://www.ebi.ac.uk/ena/browser/api/xml/SRS716927 response: body: string: "\n\n\n \n - \ SRS716927\n SAMN03097501\n - \ GSM1519618\n \n + alias=\"GSM1519618\" center_name=\"Stanford University\" broker_name=\"NCBI\">\n + \ \n SRS716927\n SAMN03097501\n GSM1519618\n \n \ RNA-seq of the corpus callosum #4727\n \n \ 9606\n Homo sapiens\n - \ \n \n \n \n - \ ENA-STUDY\n SRP048683\n - \ \n \n \n - \ \n ENA-EXPERIMENT\n - \ SRX725595\n \n \n - \ \n \n ENA-RUN\n - \ SRR1603663\n \n \n - \ \n \n ENA-SUBMISSION\n - \ SRA188845\n \n \n - \ \n \n ARRAYEXPRESS\n - \ E-GEOD-62098\n \n \n - \ \n \n ENA-FASTQ-FILES\n - \ \n - \ \n \n \n - \ \n ENA-SUBMITTED-FILES\n - \ \n - \ \n \n \n - \ \n \n source_name\n - \ human brain\n \n - \ \n tissue\n frozen - postmortem brain from NICHD\n \n \n - \ disease\n not available\n - \ \n \n ENA-SPOT-COUNT\n - \ 143636433\n \n \n - \ ENA-BASE-COUNT\n 25287600247\n - \ \n \n ENA-FIRST-PUBLIC\n - \ 2015-03-23\n \n - \ \n ENA-LAST-UPDATE\n - \ 2015-06-23\n \n + \ human\n \n \n + \ \n \n ENA-FASTQ-FILES\n + \ \n + \ \n \n \n \n + \ ENA-SUBMITTED-FILES\n \n + \ \n \n\n\n + \ \n INSDC secondary accession\n + \ SRS716927\n \n \n + \ NCBI submission package\n Generic.1.0\n + \ \n \n disease\n + \ not available\n \n + \ \n organism\n Homo + sapiens\n \n \n + \ tissue\n frozen postmortem + brain from NICHD\n \n \n + \ source_name\n human brain\n + \ \n \n BioSampleModel\n + \ Generic\n \n \n + \ ENA-FIRST-PUBLIC\n 2015-01-01\n + \ \n \n ENA-LAST-UPDATE\n + \ 2015-01-01\n \n \ \n\n\n" headers: Content-Type: - application/xml Date: - - Wed, 28 Jul 2021 19:45:45 GMT + - Wed, 17 May 2023 18:38:11 GMT Strict-Transport-Security: - max-age=0 Transfer-Encoding: @@ -1214,7 +1065,7 @@ interactions: Connection: - keep-alive User-Agent: - - python-requests/2.25.1 + - python-requests/2.30.0 method: GET uri: https://www.ebi.ac.uk/ena/browser/api/xml/SRP048683 response: @@ -1261,7 +1112,7 @@ interactions: Content-Type: - application/xml Date: - - Wed, 28 Jul 2021 19:45:45 GMT + - Wed, 17 May 2023 18:38:11 GMT Strict-Transport-Security: - max-age=0 Transfer-Encoding: @@ -1279,7 +1130,7 @@ interactions: Connection: - keep-alive User-Agent: - - python-requests/2.25.1 + - python-requests/2.30.0 method: GET uri: https://www.ebi.ac.uk/ena/browser/api/xml/SRA188845 response: @@ -1316,7 +1167,7 @@ interactions: Content-Type: - application/xml Date: - - Wed, 28 Jul 2021 19:45:45 GMT + - Wed, 17 May 2023 18:38:11 GMT Strict-Transport-Security: - max-age=0 Transfer-Encoding: @@ -1324,69 +1175,6 @@ interactions: status: code: 200 message: '' -- request: - body: acc=SRR1603663&accept-proto=fasp&version=2.0 - headers: - Accept: - - '*/*' - Accept-Encoding: - - gzip, deflate - Connection: - - keep-alive - Content-Length: - - '44' - User-Agent: - - python-requests/2.25.1 - method: POST - uri: https://www.ncbi.nlm.nih.gov/Traces/names/names.cgi - response: - body: - string: !!binary | - H4sIAAAAAAAAA5zOPU7EMBBA4Z5TWKLYKqv5sx3nEkgL1XaxJ1ZA0TpKAghpDs8iSjrap1d8j3SG - h30b1/dsz5cLBuAQ2JKPfe8xsRgBSofQQXghGigNAleTWEuWHJglBcIU5L6SV+w1VNZiZgJgT7fl - y53m41j3k1u3drTSFve6u3FZ2uekrrbNHfM9tPw2leOv5PyhuYxlngwxEETxyD+k2EHq8JckA/ZX - q1STRi3I1TN7GTXARMqZUWtM/r+kbwAAAP//AwCIsZKKIgEAAA== - headers: - Cache-Control: - - private - Connection: - - Keep-Alive - Content-Encoding: - - gzip - Content-Security-Policy: - - upgrade-insecure-requests - Content-Type: - - text/plain - Date: - - Wed, 28 Jul 2021 19:45:46 GMT - Keep-Alive: - - timeout=1, max=10 - NCBI-PHID: - - CC95FED7101B3EA10000000000000001.m_1 - NCBI-SID: - - CC95FED7101B3EA1_0000SID - Referrer-Policy: - - origin-when-cross-origin - Server: - - Apache - Set-Cookie: - - ncbi_sid=CC95FED7101B3EA1_0000SID; domain=.nih.gov; path=/; expires=Thu, 28 - Jul 2022 19:45:46 GMT - SraNameServerOutputVersion: - - '2.0' - Strict-Transport-Security: - - max-age=31536000; includeSubDomains; preload - Transfer-Encoding: - - chunked - Vary: - - Accept-Encoding - X-UA-Compatible: - - IE=Edge - X-XSS-Protection: - - 1; mode=block - status: - code: 200 - message: OK - request: body: null headers: @@ -1397,29 +1185,27 @@ interactions: Connection: - keep-alive User-Agent: - - python-requests/2.25.1 + - python-requests/2.30.0 method: GET uri: https://www.ebi.ac.uk/ena/portal/api/filereport?accession=SRR1603663&result=read_run response: body: - string: "run_accession\tfastq_ftp\tfastq_bytes\tfastq_md5\tsubmitted_ftp\tsubmitted_bytes\tsubmitted_md5\tsra_ftp\tsra_bytes\tsra_md5\nSRR1603663\tftp.sra.ebi.ac.uk/vol1/fastq/SRR160/003/SRR1603663/SRR1603663.fastq.gz;ftp.sra.ebi.ac.uk/vol1/fastq/SRR160/003/SRR1603663/SRR1603663_1.fastq.gz;ftp.sra.ebi.ac.uk/vol1/fastq/SRR160/003/SRR1603663/SRR1603663_2.fastq.gz\t490810289;5442785670;5470533592\t27f4fe0eb14986a1727f080bc6db4d2b;83becc171cdf03d7c25aaf1d798b66e2;af9417bfd987797f395d201176adf9b3\t\t\t\t\t\t\n" + string: "run_accession\tfastq_ftp\tfastq_bytes\tfastq_md5\tbam_ftp\tbam_bytes\tbam_md5\tsubmitted_ftp\tsubmitted_bytes\tsubmitted_md5\tsra_ftp\tsra_bytes\tsra_md5\nSRR1603663\tftp.sra.ebi.ac.uk/vol1/fastq/SRR160/003/SRR1603663/SRR1603663.fastq.gz;ftp.sra.ebi.ac.uk/vol1/fastq/SRR160/003/SRR1603663/SRR1603663_1.fastq.gz;ftp.sra.ebi.ac.uk/vol1/fastq/SRR160/003/SRR1603663/SRR1603663_2.fastq.gz\t490810289;5442785670;5470533592\t27f4fe0eb14986a1727f080bc6db4d2b;83becc171cdf03d7c25aaf1d798b66e2;af9417bfd987797f395d201176adf9b3\t\t\t\t\t\t\tftp.sra.ebi.ac.uk/vol1/srr/SRR160/003/SRR1603663\t9578851934\t47fcb4b6334962196493425d18d6f3dc\n" headers: Cache-Control: - no-cache, no-store, max-age=0, must-revalidate + Content-Length: + - '600' Content-Type: - text/plain Date: - - Wed, 28 Jul 2021 19:45:47 GMT + - Wed, 17 May 2023 18:38:12 GMT Expires: - '0' Pragma: - no-cache - Server: - - Apache-Coyote/1.1 Strict-Transport-Security: - max-age=0 - Transfer-Encoding: - - chunked X-Content-Type-Options: - nosniff X-Frame-Options: @@ -1428,7 +1214,7 @@ interactions: - 1; mode=block status: code: 200 - message: OK + message: '' - request: body: null headers: @@ -1439,7 +1225,7 @@ interactions: Connection: - keep-alive User-Agent: - - python-requests/2.25.1 + - python-requests/2.30.0 method: GET uri: https://www.ebi.ac.uk/ena/browser/api/xml/SRR1603664 response: @@ -1486,7 +1272,7 @@ interactions: Content-Type: - application/xml Date: - - Wed, 28 Jul 2021 19:45:48 GMT + - Wed, 17 May 2023 18:38:12 GMT Strict-Transport-Security: - max-age=0 Transfer-Encoding: @@ -1504,7 +1290,7 @@ interactions: Connection: - keep-alive User-Agent: - - python-requests/2.25.1 + - python-requests/2.30.0 method: GET uri: https://www.ebi.ac.uk/ena/browser/api/xml/SRX725596 response: @@ -1563,7 +1349,7 @@ interactions: Content-Type: - application/xml Date: - - Wed, 28 Jul 2021 19:45:49 GMT + - Wed, 17 May 2023 18:38:13 GMT Strict-Transport-Security: - max-age=0 Transfer-Encoding: @@ -1581,52 +1367,45 @@ interactions: Connection: - keep-alive User-Agent: - - python-requests/2.25.1 + - python-requests/2.30.0 method: GET uri: https://www.ebi.ac.uk/ena/browser/api/xml/SRS716928 response: body: string: "\n\n\n \n - \ SRS716928\n SAMN03097502\n - \ GSM1519619\n \n + alias=\"GSM1519619\" center_name=\"Stanford University\" broker_name=\"NCBI\">\n + \ \n SRS716928\n SAMN03097502\n GSM1519619\n \n \ RNA-seq of the corpus callosum #5163\n \n \ 9606\n Homo sapiens\n - \ \n \n \n \n - \ ENA-STUDY\n SRP048683\n - \ \n \n \n - \ \n ENA-EXPERIMENT\n - \ SRX725596\n \n \n - \ \n \n ENA-RUN\n - \ SRR1603664\n \n \n - \ \n \n ENA-SUBMISSION\n - \ SRA188845\n \n \n - \ \n \n ARRAYEXPRESS\n - \ E-GEOD-62098\n \n \n - \ \n \n ENA-FASTQ-FILES\n - \ \n - \ \n \n \n - \ \n ENA-SUBMITTED-FILES\n - \ \n - \ \n \n \n - \ \n \n source_name\n - \ human brain\n \n - \ \n tissue\n frozen - postmortem brain from NICHD\n \n \n - \ disease\n not available\n - \ \n \n ENA-SPOT-COUNT\n - \ 163384856\n \n \n - \ ENA-BASE-COUNT\n 28647959886\n - \ \n \n ENA-FIRST-PUBLIC\n - \ 2015-03-23\n \n - \ \n ENA-LAST-UPDATE\n - \ 2015-06-23\n \n + \ human\n \n \n + \ \n \n ENA-FASTQ-FILES\n + \ \n + \ \n \n \n \n + \ ENA-SUBMITTED-FILES\n \n + \ \n \n\n\n + \ \n INSDC secondary accession\n + \ SRS716928\n \n \n + \ NCBI submission package\n Generic.1.0\n + \ \n \n disease\n + \ not available\n \n + \ \n organism\n Homo + sapiens\n \n \n + \ tissue\n frozen postmortem + brain from NICHD\n \n \n + \ source_name\n human brain\n + \ \n \n BioSampleModel\n + \ Generic\n \n \n + \ ENA-FIRST-PUBLIC\n 2015-01-01\n + \ \n \n ENA-LAST-UPDATE\n + \ 2015-01-01\n \n \ \n\n\n" headers: Content-Type: - application/xml Date: - - Wed, 28 Jul 2021 19:45:49 GMT + - Wed, 17 May 2023 18:38:13 GMT Strict-Transport-Security: - max-age=0 Transfer-Encoding: @@ -1644,7 +1423,7 @@ interactions: Connection: - keep-alive User-Agent: - - python-requests/2.25.1 + - python-requests/2.30.0 method: GET uri: https://www.ebi.ac.uk/ena/browser/api/xml/SRP048683 response: @@ -1691,7 +1470,7 @@ interactions: Content-Type: - application/xml Date: - - Wed, 28 Jul 2021 19:45:50 GMT + - Wed, 17 May 2023 18:38:13 GMT Strict-Transport-Security: - max-age=0 Transfer-Encoding: @@ -1709,7 +1488,7 @@ interactions: Connection: - keep-alive User-Agent: - - python-requests/2.25.1 + - python-requests/2.30.0 method: GET uri: https://www.ebi.ac.uk/ena/browser/api/xml/SRA188845 response: @@ -1746,7 +1525,7 @@ interactions: Content-Type: - application/xml Date: - - Wed, 28 Jul 2021 19:45:50 GMT + - Wed, 17 May 2023 18:38:13 GMT Strict-Transport-Security: - max-age=0 Transfer-Encoding: @@ -1754,69 +1533,6 @@ interactions: status: code: 200 message: '' -- request: - body: acc=SRR1603664&accept-proto=fasp&version=2.0 - headers: - Accept: - - '*/*' - Accept-Encoding: - - gzip, deflate - Connection: - - keep-alive - Content-Length: - - '44' - User-Agent: - - python-requests/2.25.1 - method: POST - uri: https://www.ncbi.nlm.nih.gov/Traces/names/names.cgi - response: - body: - string: !!binary | - H4sIAAAAAAAAA5zOvU7DMBSG4Z2rsMTQqdV3fPybm0Aqnbo5tqOAIhwlBoR0Lp50ZkN6p3d6nvUF - T/uW1s9RXq9XcmDnjBCxjWRitF40yJwJZ7ib5oGOcJdpQo3sCudcUTBB52QQTNIUIrETEQPIy8fy - o05z7+t+UuvWesttUW+7SsvSvmtRU9tUn4/Rxvea+1/K5auMOeW5CkFHC8+MB8k/SJpviIMNA9xd - kFCt86FaMkUHNhxGU/zhjNmzKf8l/QIAAP//AwD/hMbsIwEAAA== - headers: - Cache-Control: - - private - Connection: - - Keep-Alive - Content-Encoding: - - gzip - Content-Security-Policy: - - upgrade-insecure-requests - Content-Type: - - text/plain - Date: - - Wed, 28 Jul 2021 19:45:51 GMT - Keep-Alive: - - timeout=1, max=10 - NCBI-PHID: - - CC95FF33101B3EF10000000000000001.m_1 - NCBI-SID: - - CC95FF33101B3EF1_0000SID - Referrer-Policy: - - origin-when-cross-origin - Server: - - Apache - Set-Cookie: - - ncbi_sid=CC95FF33101B3EF1_0000SID; domain=.nih.gov; path=/; expires=Thu, 28 - Jul 2022 19:45:51 GMT - SraNameServerOutputVersion: - - '2.0' - Strict-Transport-Security: - - max-age=31536000; includeSubDomains; preload - Transfer-Encoding: - - chunked - Vary: - - Accept-Encoding - X-UA-Compatible: - - IE=Edge - X-XSS-Protection: - - 1; mode=block - status: - code: 200 - message: OK - request: body: null headers: @@ -1827,29 +1543,27 @@ interactions: Connection: - keep-alive User-Agent: - - python-requests/2.25.1 + - python-requests/2.30.0 method: GET uri: https://www.ebi.ac.uk/ena/portal/api/filereport?accession=SRR1603664&result=read_run response: body: - string: "run_accession\tfastq_ftp\tfastq_bytes\tfastq_md5\tsubmitted_ftp\tsubmitted_bytes\tsubmitted_md5\tsra_ftp\tsra_bytes\tsra_md5\nSRR1603664\tftp.sra.ebi.ac.uk/vol1/fastq/SRR160/004/SRR1603664/SRR1603664.fastq.gz;ftp.sra.ebi.ac.uk/vol1/fastq/SRR160/004/SRR1603664/SRR1603664_1.fastq.gz;ftp.sra.ebi.ac.uk/vol1/fastq/SRR160/004/SRR1603664/SRR1603664_2.fastq.gz\t663856366;6479922904;6586111087\td79a415b33c6fbd2159ea21122539fd8;a7337c4c402bff8aaa6dd474d7743a16;51d4b7a03a427f94df589dfb4060f4cb\t\t\t\t\t\t\n" + string: "run_accession\tfastq_ftp\tfastq_bytes\tfastq_md5\tbam_ftp\tbam_bytes\tbam_md5\tsubmitted_ftp\tsubmitted_bytes\tsubmitted_md5\tsra_ftp\tsra_bytes\tsra_md5\nSRR1603664\tftp.sra.ebi.ac.uk/vol1/fastq/SRR160/004/SRR1603664/SRR1603664.fastq.gz;ftp.sra.ebi.ac.uk/vol1/fastq/SRR160/004/SRR1603664/SRR1603664_1.fastq.gz;ftp.sra.ebi.ac.uk/vol1/fastq/SRR160/004/SRR1603664/SRR1603664_2.fastq.gz\t663856366;6479922904;6586111087\td79a415b33c6fbd2159ea21122539fd8;a7337c4c402bff8aaa6dd474d7743a16;51d4b7a03a427f94df589dfb4060f4cb\t\t\t\t\t\t\tftp.sra.ebi.ac.uk/vol1/srr/SRR160/004/SRR1603664\t11359149957\tff0e936d3cce0d0f02ca4084a2189136\n" headers: Cache-Control: - no-cache, no-store, max-age=0, must-revalidate + Content-Length: + - '601' Content-Type: - text/plain Date: - - Wed, 28 Jul 2021 19:45:52 GMT + - Wed, 17 May 2023 18:38:14 GMT Expires: - '0' Pragma: - no-cache - Server: - - Apache-Coyote/1.1 Strict-Transport-Security: - max-age=0 - Transfer-Encoding: - - chunked X-Content-Type-Options: - nosniff X-Frame-Options: @@ -1858,7 +1572,7 @@ interactions: - 1; mode=block status: code: 200 - message: OK + message: '' - request: body: null headers: @@ -1869,7 +1583,7 @@ interactions: Connection: - keep-alive User-Agent: - - python-requests/2.25.1 + - python-requests/2.30.0 method: GET uri: https://www.ebi.ac.uk/ena/browser/api/xml/SRR1603665 response: @@ -1916,7 +1630,7 @@ interactions: Content-Type: - application/xml Date: - - Wed, 28 Jul 2021 19:45:52 GMT + - Wed, 17 May 2023 18:38:15 GMT Strict-Transport-Security: - max-age=0 Transfer-Encoding: @@ -1934,7 +1648,7 @@ interactions: Connection: - keep-alive User-Agent: - - python-requests/2.25.1 + - python-requests/2.30.0 method: GET uri: https://www.ebi.ac.uk/ena/browser/api/xml/SRX725597 response: @@ -1993,7 +1707,7 @@ interactions: Content-Type: - application/xml Date: - - Wed, 28 Jul 2021 19:45:53 GMT + - Wed, 17 May 2023 18:38:15 GMT Strict-Transport-Security: - max-age=0 Transfer-Encoding: @@ -2011,52 +1725,45 @@ interactions: Connection: - keep-alive User-Agent: - - python-requests/2.25.1 + - python-requests/2.30.0 method: GET uri: https://www.ebi.ac.uk/ena/browser/api/xml/SRS716929 response: body: string: "\n\n\n \n - \ SRS716929\n SAMN03097503\n - \ GSM1519620\n \n + alias=\"GSM1519620\" center_name=\"Stanford University\" broker_name=\"NCBI\">\n + \ \n SRS716929\n SAMN03097503\n GSM1519620\n \n \ RNA-seq of the corpus callosum #5391\n \n \ 9606\n Homo sapiens\n - \ \n \n \n \n - \ ENA-STUDY\n SRP048683\n - \ \n \n \n - \ \n ENA-EXPERIMENT\n - \ SRX725597\n \n \n - \ \n \n ENA-RUN\n - \ SRR1603665\n \n \n - \ \n \n ENA-SUBMISSION\n - \ SRA188845\n \n \n - \ \n \n ARRAYEXPRESS\n - \ E-GEOD-62098\n \n \n - \ \n \n ENA-FASTQ-FILES\n - \ \n - \ \n \n \n - \ \n ENA-SUBMITTED-FILES\n - \ \n - \ \n \n \n - \ \n \n source_name\n - \ human brain\n \n - \ \n tissue\n frozen - postmortem brain from NICHD\n \n \n - \ disease\n not available\n - \ \n \n ENA-SPOT-COUNT\n - \ 155224100\n \n \n - \ ENA-BASE-COUNT\n 27186376672\n - \ \n \n ENA-FIRST-PUBLIC\n - \ 2015-03-23\n \n - \ \n ENA-LAST-UPDATE\n - \ 2015-06-23\n \n + \ human\n \n \n + \ \n \n ENA-FASTQ-FILES\n + \ \n + \ \n \n \n \n + \ ENA-SUBMITTED-FILES\n \n + \ \n \n\n\n + \ \n INSDC secondary accession\n + \ SRS716929\n \n \n + \ NCBI submission package\n Generic.1.0\n + \ \n \n disease\n + \ not available\n \n + \ \n organism\n Homo + sapiens\n \n \n + \ tissue\n frozen postmortem + brain from NICHD\n \n \n + \ source_name\n human brain\n + \ \n \n BioSampleModel\n + \ Generic\n \n \n + \ ENA-FIRST-PUBLIC\n 2015-01-01\n + \ \n \n ENA-LAST-UPDATE\n + \ 2015-01-01\n \n \ \n\n\n" headers: Content-Type: - application/xml Date: - - Wed, 28 Jul 2021 19:45:53 GMT + - Wed, 17 May 2023 18:38:16 GMT Strict-Transport-Security: - max-age=0 Transfer-Encoding: @@ -2074,7 +1781,7 @@ interactions: Connection: - keep-alive User-Agent: - - python-requests/2.25.1 + - python-requests/2.30.0 method: GET uri: https://www.ebi.ac.uk/ena/browser/api/xml/SRP048683 response: @@ -2121,7 +1828,7 @@ interactions: Content-Type: - application/xml Date: - - Wed, 28 Jul 2021 19:45:53 GMT + - Wed, 17 May 2023 18:38:16 GMT Strict-Transport-Security: - max-age=0 Transfer-Encoding: @@ -2139,7 +1846,7 @@ interactions: Connection: - keep-alive User-Agent: - - python-requests/2.25.1 + - python-requests/2.30.0 method: GET uri: https://www.ebi.ac.uk/ena/browser/api/xml/SRA188845 response: @@ -2176,7 +1883,7 @@ interactions: Content-Type: - application/xml Date: - - Wed, 28 Jul 2021 19:45:54 GMT + - Wed, 17 May 2023 18:38:16 GMT Strict-Transport-Security: - max-age=0 Transfer-Encoding: @@ -2184,69 +1891,6 @@ interactions: status: code: 200 message: '' -- request: - body: acc=SRR1603665&accept-proto=fasp&version=2.0 - headers: - Accept: - - '*/*' - Accept-Encoding: - - gzip, deflate - Connection: - - keep-alive - Content-Length: - - '44' - User-Agent: - - python-requests/2.25.1 - method: POST - uri: https://www.ncbi.nlm.nih.gov/Traces/names/names.cgi - response: - body: - string: !!binary | - H4sIAAAAAAAAA5zOO27DMAwA0L2nENAhUwJS1I++RIE0UzZRluAWRmTYboICPHw/a7eub3rP9gRP - 25qXD9HX8xkDUAheEXxCZo7eqQV0R4QjhIulAWAAf9UWEQUSs8NQGUMZsWUQjJQAhUhVHYC+3OZP - c5j2fdkOZln73kufzdtm8jz3Rx1N66vZp2/o8l7L/rdyuo9ScpmqJk6IyabfUfwZWboAD+QHxKuC - K7kJ+SaMLZbKWaoD8X6slBqV/46+AAAA//8DAPEhuy4iAQAA - headers: - Cache-Control: - - private - Connection: - - Keep-Alive - Content-Encoding: - - gzip - Content-Security-Policy: - - upgrade-insecure-requests - Content-Type: - - text/plain - Date: - - Wed, 28 Jul 2021 19:45:55 GMT - Keep-Alive: - - timeout=1, max=10 - NCBI-PHID: - - CC95FF99101B3F310000000000000001.m_1 - NCBI-SID: - - CC95FF99101B3F31_0000SID - Referrer-Policy: - - origin-when-cross-origin - Server: - - Apache - Set-Cookie: - - ncbi_sid=CC95FF99101B3F31_0000SID; domain=.nih.gov; path=/; expires=Thu, 28 - Jul 2022 19:45:55 GMT - SraNameServerOutputVersion: - - '2.0' - Strict-Transport-Security: - - max-age=31536000; includeSubDomains; preload - Transfer-Encoding: - - chunked - Vary: - - Accept-Encoding - X-UA-Compatible: - - IE=Edge - X-XSS-Protection: - - 1; mode=block - status: - code: 200 - message: OK - request: body: null headers: @@ -2257,29 +1901,27 @@ interactions: Connection: - keep-alive User-Agent: - - python-requests/2.25.1 + - python-requests/2.30.0 method: GET uri: https://www.ebi.ac.uk/ena/portal/api/filereport?accession=SRR1603665&result=read_run response: body: - string: "run_accession\tfastq_ftp\tfastq_bytes\tfastq_md5\tsubmitted_ftp\tsubmitted_bytes\tsubmitted_md5\tsra_ftp\tsra_bytes\tsra_md5\nSRR1603665\tftp.sra.ebi.ac.uk/vol1/fastq/SRR160/005/SRR1603665/SRR1603665.fastq.gz;ftp.sra.ebi.ac.uk/vol1/fastq/SRR160/005/SRR1603665/SRR1603665_1.fastq.gz;ftp.sra.ebi.ac.uk/vol1/fastq/SRR160/005/SRR1603665/SRR1603665_2.fastq.gz\t637411585;6019011707;6096423865\tabe09a733a7f7164685e6a55c1c48e2a;0673ce2bd91a7bb8b7058af295715391;553f4ff4018716dc9fdffa9ff8cfdaa6\t\t\t\t\t\t\n" + string: "run_accession\tfastq_ftp\tfastq_bytes\tfastq_md5\tbam_ftp\tbam_bytes\tbam_md5\tsubmitted_ftp\tsubmitted_bytes\tsubmitted_md5\tsra_ftp\tsra_bytes\tsra_md5\nSRR1603665\tftp.sra.ebi.ac.uk/vol1/fastq/SRR160/005/SRR1603665/SRR1603665.fastq.gz;ftp.sra.ebi.ac.uk/vol1/fastq/SRR160/005/SRR1603665/SRR1603665_1.fastq.gz;ftp.sra.ebi.ac.uk/vol1/fastq/SRR160/005/SRR1603665/SRR1603665_2.fastq.gz\t637411585;6019011707;6096423865\tabe09a733a7f7164685e6a55c1c48e2a;0673ce2bd91a7bb8b7058af295715391;553f4ff4018716dc9fdffa9ff8cfdaa6\t\t\t\t\t\t\tftp.sra.ebi.ac.uk/vol1/srr/SRR160/005/SRR1603665\t10581999754\tf711b0899416e916cd1fa0b173801b33\n" headers: Cache-Control: - no-cache, no-store, max-age=0, must-revalidate + Content-Length: + - '601' Content-Type: - text/plain Date: - - Wed, 28 Jul 2021 19:45:56 GMT + - Wed, 17 May 2023 18:38:17 GMT Expires: - '0' Pragma: - no-cache - Server: - - Apache-Coyote/1.1 Strict-Transport-Security: - max-age=0 - Transfer-Encoding: - - chunked X-Content-Type-Options: - nosniff X-Frame-Options: @@ -2288,7 +1930,7 @@ interactions: - 1; mode=block status: code: 200 - message: OK + message: '' - request: body: null headers: @@ -2299,7 +1941,7 @@ interactions: Connection: - keep-alive User-Agent: - - python-requests/2.25.1 + - python-requests/2.30.0 method: GET uri: https://www.ebi.ac.uk/ena/browser/api/xml/SRR1603666 response: @@ -2346,7 +1988,7 @@ interactions: Content-Type: - application/xml Date: - - Wed, 28 Jul 2021 19:45:56 GMT + - Wed, 17 May 2023 18:38:17 GMT Strict-Transport-Security: - max-age=0 Transfer-Encoding: @@ -2364,7 +2006,7 @@ interactions: Connection: - keep-alive User-Agent: - - python-requests/2.25.1 + - python-requests/2.30.0 method: GET uri: https://www.ebi.ac.uk/ena/browser/api/xml/SRX725598 response: @@ -2423,7 +2065,7 @@ interactions: Content-Type: - application/xml Date: - - Wed, 28 Jul 2021 19:45:57 GMT + - Wed, 17 May 2023 18:38:17 GMT Strict-Transport-Security: - max-age=0 Transfer-Encoding: @@ -2441,52 +2083,45 @@ interactions: Connection: - keep-alive User-Agent: - - python-requests/2.25.1 + - python-requests/2.30.0 method: GET uri: https://www.ebi.ac.uk/ena/browser/api/xml/SRS716930 response: body: string: "\n\n\n \n - \ SRS716930\n SAMN03097504\n - \ GSM1519621\n \n + alias=\"GSM1519621\" center_name=\"Stanford University\" broker_name=\"NCBI\">\n + \ \n SRS716930\n SAMN03097504\n GSM1519621\n \n \ RNA-seq of the corpus callosum #5242\n \n \ 9606\n Homo sapiens\n - \ \n \n \n \n - \ ENA-STUDY\n SRP048683\n - \ \n \n \n - \ \n ENA-EXPERIMENT\n - \ SRX725598\n \n \n - \ \n \n ENA-RUN\n - \ SRR1603666\n \n \n - \ \n \n ENA-SUBMISSION\n - \ SRA188845\n \n \n - \ \n \n ARRAYEXPRESS\n - \ E-GEOD-62098\n \n \n - \ \n \n ENA-FASTQ-FILES\n - \ \n - \ \n \n \n - \ \n ENA-SUBMITTED-FILES\n - \ \n - \ \n \n \n - \ \n \n source_name\n - \ human brain\n \n - \ \n tissue\n frozen - postmortem brain from NICHD\n \n \n - \ disease\n not available\n - \ \n \n ENA-SPOT-COUNT\n - \ 163481475\n \n \n - \ ENA-BASE-COUNT\n 28665079898\n - \ \n \n ENA-FIRST-PUBLIC\n - \ 2015-03-23\n \n - \ \n ENA-LAST-UPDATE\n - \ 2015-06-23\n \n + \ human\n \n \n + \ \n \n ENA-FASTQ-FILES\n + \ \n + \ \n \n \n \n + \ ENA-SUBMITTED-FILES\n \n + \ \n \n\n\n + \ \n INSDC secondary accession\n + \ SRS716930\n \n \n + \ NCBI submission package\n Generic.1.0\n + \ \n \n disease\n + \ not available\n \n + \ \n organism\n Homo + sapiens\n \n \n + \ tissue\n frozen postmortem + brain from NICHD\n \n \n + \ source_name\n human brain\n + \ \n \n BioSampleModel\n + \ Generic\n \n \n + \ ENA-FIRST-PUBLIC\n 2015-01-01\n + \ \n \n ENA-LAST-UPDATE\n + \ 2015-01-01\n \n \ \n\n\n" headers: Content-Type: - application/xml Date: - - Wed, 28 Jul 2021 19:45:57 GMT + - Wed, 17 May 2023 18:38:18 GMT Strict-Transport-Security: - max-age=0 Transfer-Encoding: @@ -2504,7 +2139,7 @@ interactions: Connection: - keep-alive User-Agent: - - python-requests/2.25.1 + - python-requests/2.30.0 method: GET uri: https://www.ebi.ac.uk/ena/browser/api/xml/SRP048683 response: @@ -2551,7 +2186,7 @@ interactions: Content-Type: - application/xml Date: - - Wed, 28 Jul 2021 19:45:58 GMT + - Wed, 17 May 2023 18:38:18 GMT Strict-Transport-Security: - max-age=0 Transfer-Encoding: @@ -2569,7 +2204,7 @@ interactions: Connection: - keep-alive User-Agent: - - python-requests/2.25.1 + - python-requests/2.30.0 method: GET uri: https://www.ebi.ac.uk/ena/browser/api/xml/SRA188845 response: @@ -2606,7 +2241,7 @@ interactions: Content-Type: - application/xml Date: - - Wed, 28 Jul 2021 19:45:58 GMT + - Wed, 17 May 2023 18:38:19 GMT Strict-Transport-Security: - max-age=0 Transfer-Encoding: @@ -2614,69 +2249,6 @@ interactions: status: code: 200 message: '' -- request: - body: acc=SRR1603666&accept-proto=fasp&version=2.0 - headers: - Accept: - - '*/*' - Accept-Encoding: - - gzip, deflate - Connection: - - keep-alive - Content-Length: - - '44' - User-Agent: - - python-requests/2.25.1 - method: POST - uri: https://www.ncbi.nlm.nih.gov/Traces/names/names.cgi - response: - body: - string: !!binary | - H4sIAAAAAAAAA5zOu07DMBQA0J2vsMTQqdV92L52fgKpdOpmOzcKKKqjxLRC8sdDZzbWM51XOsHL - vqX1K/f38xk9sPe+IzorjJEIOwHaI8IR5AI4WDcgX3tgTJTGoFbEKaBkP3GIGlEZiLT3bgH62235 - Noe5tXU/mHWrrZa6mI/dpGWpDx3NVDfT5l+o+VNL+1s53cdcUpm1o3MYMQjEZ0meJeILwkB2cOHa - J7JlkiLFUWSIScakQEEhk+XI/r+lHwAAAP//AwDIQTI1IwEAAA== - headers: - Cache-Control: - - private - Connection: - - Keep-Alive - Content-Encoding: - - gzip - Content-Security-Policy: - - upgrade-insecure-requests - Content-Type: - - text/plain - Date: - - Wed, 28 Jul 2021 19:45:59 GMT - Keep-Alive: - - timeout=1, max=10 - NCBI-PHID: - - C7A42EE4101B3F710000000000000001.m_1 - NCBI-SID: - - C7A42EE4101B3F71_0000SID - Referrer-Policy: - - origin-when-cross-origin - Server: - - Apache - Set-Cookie: - - ncbi_sid=C7A42EE4101B3F71_0000SID; domain=.nih.gov; path=/; expires=Thu, 28 - Jul 2022 19:45:59 GMT - SraNameServerOutputVersion: - - '2.0' - Strict-Transport-Security: - - max-age=31536000; includeSubDomains; preload - Transfer-Encoding: - - chunked - Vary: - - Accept-Encoding - X-UA-Compatible: - - IE=Edge - X-XSS-Protection: - - 1; mode=block - status: - code: 200 - message: OK - request: body: null headers: @@ -2687,29 +2259,27 @@ interactions: Connection: - keep-alive User-Agent: - - python-requests/2.25.1 + - python-requests/2.30.0 method: GET uri: https://www.ebi.ac.uk/ena/portal/api/filereport?accession=SRR1603666&result=read_run response: body: - string: "run_accession\tfastq_ftp\tfastq_bytes\tfastq_md5\tsubmitted_ftp\tsubmitted_bytes\tsubmitted_md5\tsra_ftp\tsra_bytes\tsra_md5\nSRR1603666\tftp.sra.ebi.ac.uk/vol1/fastq/SRR160/006/SRR1603666/SRR1603666.fastq.gz;ftp.sra.ebi.ac.uk/vol1/fastq/SRR160/006/SRR1603666/SRR1603666_1.fastq.gz;ftp.sra.ebi.ac.uk/vol1/fastq/SRR160/006/SRR1603666/SRR1603666_2.fastq.gz\t653021683;6452705895;6593977478\td9eb9f296bb1ed25506469e9ba292272;8730290dbb90c069cac0662d3b06a69f;5a32c8ae794dd25e5d1e85c89a751020\t\t\t\t\t\t\n" + string: "run_accession\tfastq_ftp\tfastq_bytes\tfastq_md5\tbam_ftp\tbam_bytes\tbam_md5\tsubmitted_ftp\tsubmitted_bytes\tsubmitted_md5\tsra_ftp\tsra_bytes\tsra_md5\nSRR1603666\tftp.sra.ebi.ac.uk/vol1/fastq/SRR160/006/SRR1603666/SRR1603666.fastq.gz;ftp.sra.ebi.ac.uk/vol1/fastq/SRR160/006/SRR1603666/SRR1603666_1.fastq.gz;ftp.sra.ebi.ac.uk/vol1/fastq/SRR160/006/SRR1603666/SRR1603666_2.fastq.gz\t653021683;6452705895;6593977478\td9eb9f296bb1ed25506469e9ba292272;8730290dbb90c069cac0662d3b06a69f;5a32c8ae794dd25e5d1e85c89a751020\t\t\t\t\t\t\tftp.sra.ebi.ac.uk/vol1/srr/SRR160/006/SRR1603666\t11547319221\t831a2ad8e4775e017b6f389e91e3022e\n" headers: Cache-Control: - no-cache, no-store, max-age=0, must-revalidate + Content-Length: + - '601' Content-Type: - text/plain Date: - - Wed, 28 Jul 2021 19:46:00 GMT + - Wed, 17 May 2023 18:38:19 GMT Expires: - '0' Pragma: - no-cache - Server: - - Apache-Coyote/1.1 Strict-Transport-Security: - max-age=0 - Transfer-Encoding: - - chunked X-Content-Type-Options: - nosniff X-Frame-Options: @@ -2718,7 +2288,7 @@ interactions: - 1; mode=block status: code: 200 - message: OK + message: '' - request: body: null headers: @@ -2729,7 +2299,7 @@ interactions: Connection: - keep-alive User-Agent: - - python-requests/2.25.1 + - python-requests/2.30.0 method: GET uri: https://www.ebi.ac.uk/ena/browser/api/xml/SRR1603667 response: @@ -2776,7 +2346,7 @@ interactions: Content-Type: - application/xml Date: - - Wed, 28 Jul 2021 19:46:00 GMT + - Wed, 17 May 2023 18:38:20 GMT Strict-Transport-Security: - max-age=0 Transfer-Encoding: @@ -2794,7 +2364,7 @@ interactions: Connection: - keep-alive User-Agent: - - python-requests/2.25.1 + - python-requests/2.30.0 method: GET uri: https://www.ebi.ac.uk/ena/browser/api/xml/SRX725599 response: @@ -2853,7 +2423,7 @@ interactions: Content-Type: - application/xml Date: - - Wed, 28 Jul 2021 19:46:01 GMT + - Wed, 17 May 2023 18:38:20 GMT Strict-Transport-Security: - max-age=0 Transfer-Encoding: @@ -2871,52 +2441,45 @@ interactions: Connection: - keep-alive User-Agent: - - python-requests/2.25.1 + - python-requests/2.30.0 method: GET uri: https://www.ebi.ac.uk/ena/browser/api/xml/SRS716931 response: body: string: "\n\n\n \n - \ SRS716931\n SAMN03097505\n - \ GSM1519622\n \n + alias=\"GSM1519622\" center_name=\"Stanford University\" broker_name=\"NCBI\">\n + \ \n SRS716931\n SAMN03097505\n GSM1519622\n \n \ RNA-seq of the corpus callosum #4899\n \n \ 9606\n Homo sapiens\n - \ \n \n \n \n - \ ENA-STUDY\n SRP048683\n - \ \n \n \n - \ \n ENA-EXPERIMENT\n - \ SRX725599\n \n \n - \ \n \n ENA-RUN\n - \ SRR1603667\n \n \n - \ \n \n ENA-SUBMISSION\n - \ SRA188845\n \n \n - \ \n \n ARRAYEXPRESS\n - \ E-GEOD-62098\n \n \n - \ \n \n ENA-FASTQ-FILES\n - \ \n - \ \n \n \n - \ \n ENA-SUBMITTED-FILES\n - \ \n - \ \n \n \n - \ \n \n source_name\n - \ human brain\n \n - \ \n tissue\n frozen - postmortem brain from NICHD\n \n \n - \ disease\n autism spectrum disorder\n - \ \n \n ENA-SPOT-COUNT\n - \ 167246977\n \n \n - \ ENA-BASE-COUNT\n 29215101734\n - \ \n \n ENA-FIRST-PUBLIC\n - \ 2015-03-23\n \n - \ \n ENA-LAST-UPDATE\n - \ 2015-06-23\n \n + \ human\n \n \n + \ \n \n ENA-FASTQ-FILES\n + \ \n + \ \n \n \n \n + \ ENA-SUBMITTED-FILES\n \n + \ \n \n\n\n + \ \n INSDC secondary accession\n + \ SRS716931\n \n \n + \ NCBI submission package\n Generic.1.0\n + \ \n \n disease\n + \ autism spectrum disorder\n \n + \ \n organism\n Homo + sapiens\n \n \n + \ tissue\n frozen postmortem + brain from NICHD\n \n \n + \ source_name\n human brain\n + \ \n \n BioSampleModel\n + \ Generic\n \n \n + \ ENA-FIRST-PUBLIC\n 2015-01-01\n + \ \n \n ENA-LAST-UPDATE\n + \ 2015-01-01\n \n \ \n\n\n" headers: Content-Type: - application/xml Date: - - Wed, 28 Jul 2021 19:46:01 GMT + - Wed, 17 May 2023 18:38:20 GMT Strict-Transport-Security: - max-age=0 Transfer-Encoding: @@ -2934,7 +2497,7 @@ interactions: Connection: - keep-alive User-Agent: - - python-requests/2.25.1 + - python-requests/2.30.0 method: GET uri: https://www.ebi.ac.uk/ena/browser/api/xml/SRP048683 response: @@ -2981,7 +2544,7 @@ interactions: Content-Type: - application/xml Date: - - Wed, 28 Jul 2021 19:46:02 GMT + - Wed, 17 May 2023 18:38:21 GMT Strict-Transport-Security: - max-age=0 Transfer-Encoding: @@ -2999,7 +2562,7 @@ interactions: Connection: - keep-alive User-Agent: - - python-requests/2.25.1 + - python-requests/2.30.0 method: GET uri: https://www.ebi.ac.uk/ena/browser/api/xml/SRA188845 response: @@ -3036,7 +2599,7 @@ interactions: Content-Type: - application/xml Date: - - Wed, 28 Jul 2021 19:46:02 GMT + - Wed, 17 May 2023 18:38:21 GMT Strict-Transport-Security: - max-age=0 Transfer-Encoding: @@ -3044,69 +2607,6 @@ interactions: status: code: 200 message: '' -- request: - body: acc=SRR1603667&accept-proto=fasp&version=2.0 - headers: - Accept: - - '*/*' - Accept-Encoding: - - gzip, deflate - Connection: - - keep-alive - Content-Length: - - '44' - User-Agent: - - python-requests/2.25.1 - method: POST - uri: https://www.ncbi.nlm.nih.gov/Traces/names/names.cgi - response: - body: - string: !!binary | - H4sIAAAAAAAAA5zOsWoDMRAE0D5fIUjhyma1klbS/UTAceVOWum4hCM67pQEw368z7U7VwMDw7x3 - PMHbtqblN8vn+awJDJEXrWPAgEjBCoK2Rw1H8BeAwcAA7irAMXNxbD2jo2qcTdHFTHsUcsmJiAWQ - j5/5pg5T78t2UMvaeuM2q69NpXlu/7Wosa2qT3vR8nfl/kw5/ZXMiacq2lq7f4A2D5J/kNBcNAzO - D4hXGSmSqfuIS8aRjC+1FOMhUQ0pcHqVdAcAAP//AwC3OmTcIwEAAA== - headers: - Cache-Control: - - private - Connection: - - Keep-Alive - Content-Encoding: - - gzip - Content-Security-Policy: - - upgrade-insecure-requests - Content-Type: - - text/plain - Date: - - Wed, 28 Jul 2021 19:46:03 GMT - Keep-Alive: - - timeout=1, max=10 - NCBI-PHID: - - C7A42F75101B3FB10000000000000001.m_1 - NCBI-SID: - - C7A42F75101B3FB1_0000SID - Referrer-Policy: - - origin-when-cross-origin - Server: - - Apache - Set-Cookie: - - ncbi_sid=C7A42F75101B3FB1_0000SID; domain=.nih.gov; path=/; expires=Thu, 28 - Jul 2022 19:46:03 GMT - SraNameServerOutputVersion: - - '2.0' - Strict-Transport-Security: - - max-age=31536000; includeSubDomains; preload - Transfer-Encoding: - - chunked - Vary: - - Accept-Encoding - X-UA-Compatible: - - IE=Edge - X-XSS-Protection: - - 1; mode=block - status: - code: 200 - message: OK - request: body: null headers: @@ -3117,29 +2617,27 @@ interactions: Connection: - keep-alive User-Agent: - - python-requests/2.25.1 + - python-requests/2.30.0 method: GET uri: https://www.ebi.ac.uk/ena/portal/api/filereport?accession=SRR1603667&result=read_run response: body: - string: "run_accession\tfastq_ftp\tfastq_bytes\tfastq_md5\tsubmitted_ftp\tsubmitted_bytes\tsubmitted_md5\tsra_ftp\tsra_bytes\tsra_md5\nSRR1603667\tftp.sra.ebi.ac.uk/vol1/fastq/SRR160/007/SRR1603667/SRR1603667.fastq.gz;ftp.sra.ebi.ac.uk/vol1/fastq/SRR160/007/SRR1603667/SRR1603667_1.fastq.gz;ftp.sra.ebi.ac.uk/vol1/fastq/SRR160/007/SRR1603667/SRR1603667_2.fastq.gz\t760314180;6805213530;6809395591\t658f2f20dcd16b96c7ff7e9d7da63635;333a0f373e628864dc005ab47e5c241c;b4e6c453e6d964c33ec48adfdce22900\t\t\t\t\t\t\n" + string: "run_accession\tfastq_ftp\tfastq_bytes\tfastq_md5\tbam_ftp\tbam_bytes\tbam_md5\tsubmitted_ftp\tsubmitted_bytes\tsubmitted_md5\tsra_ftp\tsra_bytes\tsra_md5\nSRR1603667\tftp.sra.ebi.ac.uk/vol1/fastq/SRR160/007/SRR1603667/SRR1603667.fastq.gz;ftp.sra.ebi.ac.uk/vol1/fastq/SRR160/007/SRR1603667/SRR1603667_1.fastq.gz;ftp.sra.ebi.ac.uk/vol1/fastq/SRR160/007/SRR1603667/SRR1603667_2.fastq.gz\t760314180;6805213530;6809395591\t658f2f20dcd16b96c7ff7e9d7da63635;333a0f373e628864dc005ab47e5c241c;b4e6c453e6d964c33ec48adfdce22900\t\t\t\t\t\t\tftp.sra.ebi.ac.uk/vol1/srr/SRR160/007/SRR1603667\t11982822684\t0c9bcd5c47c256e354a959b64a9d65a5\n" headers: Cache-Control: - no-cache, no-store, max-age=0, must-revalidate + Content-Length: + - '601' Content-Type: - text/plain Date: - - Wed, 28 Jul 2021 19:46:04 GMT + - Wed, 17 May 2023 18:38:21 GMT Expires: - '0' Pragma: - no-cache - Server: - - Apache-Coyote/1.1 Strict-Transport-Security: - max-age=0 - Transfer-Encoding: - - chunked X-Content-Type-Options: - nosniff X-Frame-Options: @@ -3148,7 +2646,7 @@ interactions: - 1; mode=block status: code: 200 - message: OK + message: '' - request: body: null headers: @@ -3159,7 +2657,7 @@ interactions: Connection: - keep-alive User-Agent: - - python-requests/2.25.1 + - python-requests/2.30.0 method: GET uri: https://www.ebi.ac.uk/ena/browser/api/xml/SRR1603668 response: @@ -3206,7 +2704,7 @@ interactions: Content-Type: - application/xml Date: - - Wed, 28 Jul 2021 19:46:04 GMT + - Wed, 17 May 2023 18:38:22 GMT Strict-Transport-Security: - max-age=0 Transfer-Encoding: @@ -3224,7 +2722,7 @@ interactions: Connection: - keep-alive User-Agent: - - python-requests/2.25.1 + - python-requests/2.30.0 method: GET uri: https://www.ebi.ac.uk/ena/browser/api/xml/SRX725600 response: @@ -3283,7 +2781,7 @@ interactions: Content-Type: - application/xml Date: - - Wed, 28 Jul 2021 19:46:05 GMT + - Wed, 17 May 2023 18:38:22 GMT Strict-Transport-Security: - max-age=0 Transfer-Encoding: @@ -3301,52 +2799,45 @@ interactions: Connection: - keep-alive User-Agent: - - python-requests/2.25.1 + - python-requests/2.30.0 method: GET uri: https://www.ebi.ac.uk/ena/browser/api/xml/SRS716934 response: body: string: "\n\n\n \n - \ SRS716934\n SAMN03097506\n - \ GSM1519623\n \n + alias=\"GSM1519623\" center_name=\"Stanford University\" broker_name=\"NCBI\">\n + \ \n SRS716934\n SAMN03097506\n GSM1519623\n \n \ RNA-seq of the corpus callosum #4670\n \n \ 9606\n Homo sapiens\n - \ \n \n \n \n - \ ENA-STUDY\n SRP048683\n - \ \n \n \n - \ \n ENA-EXPERIMENT\n - \ SRX725600\n \n \n - \ \n \n ENA-RUN\n - \ SRR1603668\n \n \n - \ \n \n ENA-SUBMISSION\n - \ SRA188845\n \n \n - \ \n \n ARRAYEXPRESS\n - \ E-GEOD-62098\n \n \n - \ \n \n ENA-FASTQ-FILES\n - \ \n - \ \n \n \n - \ \n ENA-SUBMITTED-FILES\n - \ \n - \ \n \n \n - \ \n \n source_name\n - \ human brain\n \n - \ \n tissue\n frozen - postmortem brain from NICHD\n \n \n - \ disease\n not available\n - \ \n \n ENA-SPOT-COUNT\n - \ 166075695\n \n \n - \ ENA-BASE-COUNT\n 29040785228\n - \ \n \n ENA-FIRST-PUBLIC\n - \ 2015-03-23\n \n - \ \n ENA-LAST-UPDATE\n - \ 2015-06-23\n \n + \ human\n \n \n + \ \n \n ENA-FASTQ-FILES\n + \ \n + \ \n \n \n \n + \ ENA-SUBMITTED-FILES\n \n + \ \n \n\n\n + \ \n INSDC secondary accession\n + \ SRS716934\n \n \n + \ NCBI submission package\n Generic.1.0\n + \ \n \n disease\n + \ not available\n \n + \ \n organism\n Homo + sapiens\n \n \n + \ tissue\n frozen postmortem + brain from NICHD\n \n \n + \ source_name\n human brain\n + \ \n \n BioSampleModel\n + \ Generic\n \n \n + \ ENA-FIRST-PUBLIC\n 2015-01-01\n + \ \n \n ENA-LAST-UPDATE\n + \ 2015-01-01\n \n \ \n\n\n" headers: Content-Type: - application/xml Date: - - Wed, 28 Jul 2021 19:46:06 GMT + - Wed, 17 May 2023 18:38:23 GMT Strict-Transport-Security: - max-age=0 Transfer-Encoding: @@ -3364,7 +2855,7 @@ interactions: Connection: - keep-alive User-Agent: - - python-requests/2.25.1 + - python-requests/2.30.0 method: GET uri: https://www.ebi.ac.uk/ena/browser/api/xml/SRP048683 response: @@ -3411,7 +2902,7 @@ interactions: Content-Type: - application/xml Date: - - Wed, 28 Jul 2021 19:46:07 GMT + - Wed, 17 May 2023 18:38:23 GMT Strict-Transport-Security: - max-age=0 Transfer-Encoding: @@ -3429,7 +2920,7 @@ interactions: Connection: - keep-alive User-Agent: - - python-requests/2.25.1 + - python-requests/2.30.0 method: GET uri: https://www.ebi.ac.uk/ena/browser/api/xml/SRA188845 response: @@ -3466,7 +2957,7 @@ interactions: Content-Type: - application/xml Date: - - Wed, 28 Jul 2021 19:46:07 GMT + - Wed, 17 May 2023 18:38:23 GMT Strict-Transport-Security: - max-age=0 Transfer-Encoding: @@ -3474,69 +2965,6 @@ interactions: status: code: 200 message: '' -- request: - body: acc=SRR1603668&accept-proto=fasp&version=2.0 - headers: - Accept: - - '*/*' - Accept-Encoding: - - gzip, deflate - Connection: - - keep-alive - Content-Length: - - '44' - User-Agent: - - python-requests/2.25.1 - method: POST - uri: https://www.ncbi.nlm.nih.gov/Traces/names/names.cgi - response: - body: - string: !!binary | - H4sIAAAAAAAAA5zOPWrEMBBA4T6nEKTYapeZ0e/4EoHNVulGIxsnmJWxlYSADh9vnS7tgwffM13g - ad9k/cz99XrFADaE1BGZMLH1CToBujPCGcKN7ABhcPzWUbX4PNExFBHK4qx3XEiz2JAT9t4dQH+5 - Lz/mNLe27iezbrVVrYt5340sS/0ei5nqZtp8hJo/Rm1/KZevklV0HjtaCMw+xvggxQeJ7A148GHA - g1S8jEFsUY0eo5uIrePEGVUmSUj/Jf0CAAD//wMAMjlgZiMBAAA= - headers: - Cache-Control: - - private - Connection: - - Keep-Alive - Content-Encoding: - - gzip - Content-Security-Policy: - - upgrade-insecure-requests - Content-Type: - - text/plain - Date: - - Wed, 28 Jul 2021 19:46:08 GMT - Keep-Alive: - - timeout=1, max=10 - NCBI-PHID: - - C7A42FD2101B40010000000000000001.m_1 - NCBI-SID: - - C7A42FD2101B4001_0000SID - Referrer-Policy: - - origin-when-cross-origin - Server: - - Apache - Set-Cookie: - - ncbi_sid=C7A42FD2101B4001_0000SID; domain=.nih.gov; path=/; expires=Thu, 28 - Jul 2022 19:46:08 GMT - SraNameServerOutputVersion: - - '2.0' - Strict-Transport-Security: - - max-age=31536000; includeSubDomains; preload - Transfer-Encoding: - - chunked - Vary: - - Accept-Encoding - X-UA-Compatible: - - IE=Edge - X-XSS-Protection: - - 1; mode=block - status: - code: 200 - message: OK - request: body: null headers: @@ -3547,29 +2975,27 @@ interactions: Connection: - keep-alive User-Agent: - - python-requests/2.25.1 + - python-requests/2.30.0 method: GET uri: https://www.ebi.ac.uk/ena/portal/api/filereport?accession=SRR1603668&result=read_run response: body: - string: "run_accession\tfastq_ftp\tfastq_bytes\tfastq_md5\tsubmitted_ftp\tsubmitted_bytes\tsubmitted_md5\tsra_ftp\tsra_bytes\tsra_md5\nSRR1603668\tftp.sra.ebi.ac.uk/vol1/fastq/SRR160/008/SRR1603668/SRR1603668.fastq.gz;ftp.sra.ebi.ac.uk/vol1/fastq/SRR160/008/SRR1603668/SRR1603668_1.fastq.gz;ftp.sra.ebi.ac.uk/vol1/fastq/SRR160/008/SRR1603668/SRR1603668_2.fastq.gz\t746191256;6748922507;6789323499\t1929c6ddedde0bccd594d572548529fd;7859ec8ac9d10a54e6f9ae1249ac050a;38c8883b06c88930a116c314ea738bb1\t\t\t\t\t\t\n" + string: "run_accession\tfastq_ftp\tfastq_bytes\tfastq_md5\tbam_ftp\tbam_bytes\tbam_md5\tsubmitted_ftp\tsubmitted_bytes\tsubmitted_md5\tsra_ftp\tsra_bytes\tsra_md5\nSRR1603668\tftp.sra.ebi.ac.uk/vol1/fastq/SRR160/008/SRR1603668/SRR1603668.fastq.gz;ftp.sra.ebi.ac.uk/vol1/fastq/SRR160/008/SRR1603668/SRR1603668_1.fastq.gz;ftp.sra.ebi.ac.uk/vol1/fastq/SRR160/008/SRR1603668/SRR1603668_2.fastq.gz\t746191256;6748922507;6789323499\t1929c6ddedde0bccd594d572548529fd;7859ec8ac9d10a54e6f9ae1249ac050a;38c8883b06c88930a116c314ea738bb1\t\t\t\t\t\t\tftp.sra.ebi.ac.uk/vol1/srr/SRR160/008/SRR1603668\t11921893580\t1ccd5bf2160daa2ba43549d2cba36b81\n" headers: Cache-Control: - no-cache, no-store, max-age=0, must-revalidate + Content-Length: + - '601' Content-Type: - text/plain Date: - - Wed, 28 Jul 2021 19:46:08 GMT + - Wed, 17 May 2023 18:38:24 GMT Expires: - '0' Pragma: - no-cache - Server: - - Apache-Coyote/1.1 Strict-Transport-Security: - max-age=0 - Transfer-Encoding: - - chunked X-Content-Type-Options: - nosniff X-Frame-Options: @@ -3578,7 +3004,7 @@ interactions: - 1; mode=block status: code: 200 - message: OK + message: '' - request: body: null headers: @@ -3589,7 +3015,7 @@ interactions: Connection: - keep-alive User-Agent: - - python-requests/2.25.1 + - python-requests/2.30.0 method: GET uri: https://www.ebi.ac.uk/ena/browser/api/xml/SRR1603669 response: @@ -3636,7 +3062,7 @@ interactions: Content-Type: - application/xml Date: - - Wed, 28 Jul 2021 19:46:09 GMT + - Wed, 17 May 2023 18:38:25 GMT Strict-Transport-Security: - max-age=0 Transfer-Encoding: @@ -3654,7 +3080,7 @@ interactions: Connection: - keep-alive User-Agent: - - python-requests/2.25.1 + - python-requests/2.30.0 method: GET uri: https://www.ebi.ac.uk/ena/browser/api/xml/SRX725601 response: @@ -3713,7 +3139,7 @@ interactions: Content-Type: - application/xml Date: - - Wed, 28 Jul 2021 19:46:09 GMT + - Wed, 17 May 2023 18:38:25 GMT Strict-Transport-Security: - max-age=0 Transfer-Encoding: @@ -3731,52 +3157,45 @@ interactions: Connection: - keep-alive User-Agent: - - python-requests/2.25.1 + - python-requests/2.30.0 method: GET uri: https://www.ebi.ac.uk/ena/browser/api/xml/SRS716932 response: body: string: "\n\n\n \n - \ SRS716932\n SAMN03097507\n - \ GSM1519624\n \n + alias=\"GSM1519624\" center_name=\"Stanford University\" broker_name=\"NCBI\">\n + \ \n SRS716932\n SAMN03097507\n GSM1519624\n \n \ RNA-seq of the corpus callosum #5407\n \n \ 9606\n Homo sapiens\n - \ \n \n \n \n - \ ENA-STUDY\n SRP048683\n - \ \n \n \n - \ \n ENA-EXPERIMENT\n - \ SRX725601\n \n \n - \ \n \n ENA-RUN\n - \ SRR1603669\n \n \n - \ \n \n ENA-SUBMISSION\n - \ SRA188845\n \n \n - \ \n \n ARRAYEXPRESS\n - \ E-GEOD-62098\n \n \n - \ \n \n ENA-FASTQ-FILES\n - \ \n - \ \n \n \n - \ \n ENA-SUBMITTED-FILES\n - \ \n - \ \n \n \n - \ \n \n source_name\n - \ human brain\n \n - \ \n tissue\n frozen - postmortem brain from NICHD\n \n \n - \ disease\n not available\n - \ \n \n ENA-SPOT-COUNT\n - \ 165948423\n \n \n - \ ENA-BASE-COUNT\n 28994442750\n - \ \n \n ENA-FIRST-PUBLIC\n - \ 2015-03-23\n \n - \ \n ENA-LAST-UPDATE\n - \ 2015-06-23\n \n + \ human\n \n \n + \ \n \n ENA-FASTQ-FILES\n + \ \n + \ \n \n \n \n + \ ENA-SUBMITTED-FILES\n \n + \ \n \n\n\n + \ \n INSDC secondary accession\n + \ SRS716932\n \n \n + \ NCBI submission package\n Generic.1.0\n + \ \n \n disease\n + \ not available\n \n + \ \n organism\n Homo + sapiens\n \n \n + \ tissue\n frozen postmortem + brain from NICHD\n \n \n + \ source_name\n human brain\n + \ \n \n BioSampleModel\n + \ Generic\n \n \n + \ ENA-FIRST-PUBLIC\n 2015-01-01\n + \ \n \n ENA-LAST-UPDATE\n + \ 2015-01-01\n \n \ \n\n\n" headers: Content-Type: - application/xml Date: - - Wed, 28 Jul 2021 19:46:10 GMT + - Wed, 17 May 2023 18:38:25 GMT Strict-Transport-Security: - max-age=0 Transfer-Encoding: @@ -3794,7 +3213,7 @@ interactions: Connection: - keep-alive User-Agent: - - python-requests/2.25.1 + - python-requests/2.30.0 method: GET uri: https://www.ebi.ac.uk/ena/browser/api/xml/SRP048683 response: @@ -3841,7 +3260,7 @@ interactions: Content-Type: - application/xml Date: - - Wed, 28 Jul 2021 19:46:10 GMT + - Wed, 17 May 2023 18:38:25 GMT Strict-Transport-Security: - max-age=0 Transfer-Encoding: @@ -3859,7 +3278,7 @@ interactions: Connection: - keep-alive User-Agent: - - python-requests/2.25.1 + - python-requests/2.30.0 method: GET uri: https://www.ebi.ac.uk/ena/browser/api/xml/SRA188845 response: @@ -3896,7 +3315,7 @@ interactions: Content-Type: - application/xml Date: - - Wed, 28 Jul 2021 19:46:11 GMT + - Wed, 17 May 2023 18:38:26 GMT Strict-Transport-Security: - max-age=0 Transfer-Encoding: @@ -3904,69 +3323,6 @@ interactions: status: code: 200 message: '' -- request: - body: acc=SRR1603669&accept-proto=fasp&version=2.0 - headers: - Accept: - - '*/*' - Accept-Encoding: - - gzip, deflate - Connection: - - keep-alive - Content-Length: - - '44' - User-Agent: - - python-requests/2.25.1 - method: POST - uri: https://www.ncbi.nlm.nih.gov/Traces/names/names.cgi - response: - body: - string: !!binary | - H4sIAAAAAAAAA5zOu07DQBCF4Z6nWIkiVaKZ2fFe/BJIIVW62YtlkMVa9gJCmofHqelojn6d6num - Czztm6yfSV+vV3RgnYuKGI4EP/ioBMhnhDO4G9FoccThrrUMkSZiF10KkaWwl1wkO8w14kSqygD6 - 8rH8mNPc+7qfzLq13nJbzNtuZFnady1mapvp83G09F5z/0u5fJWUJc9V0QZmT8HCg+QfJLI3CCPT - iHRXyM6zSArABTyRq8JWxOKxrmb5L+kXAAD//wMABzwKSCMBAAA= - headers: - Cache-Control: - - private - Connection: - - Keep-Alive - Content-Encoding: - - gzip - Content-Security-Policy: - - upgrade-insecure-requests - Content-Type: - - text/plain - Date: - - Wed, 28 Jul 2021 19:46:12 GMT - Keep-Alive: - - timeout=1, max=10 - NCBI-PHID: - - CC9501E2101B40410000000000000001.m_1 - NCBI-SID: - - CC9501E2101B4041_0000SID - Referrer-Policy: - - origin-when-cross-origin - Server: - - Apache - Set-Cookie: - - ncbi_sid=CC9501E2101B4041_0000SID; domain=.nih.gov; path=/; expires=Thu, 28 - Jul 2022 19:46:12 GMT - SraNameServerOutputVersion: - - '2.0' - Strict-Transport-Security: - - max-age=31536000; includeSubDomains; preload - Transfer-Encoding: - - chunked - Vary: - - Accept-Encoding - X-UA-Compatible: - - IE=Edge - X-XSS-Protection: - - 1; mode=block - status: - code: 200 - message: OK - request: body: null headers: @@ -3977,29 +3333,27 @@ interactions: Connection: - keep-alive User-Agent: - - python-requests/2.25.1 + - python-requests/2.30.0 method: GET uri: https://www.ebi.ac.uk/ena/portal/api/filereport?accession=SRR1603669&result=read_run response: body: - string: "run_accession\tfastq_ftp\tfastq_bytes\tfastq_md5\tsubmitted_ftp\tsubmitted_bytes\tsubmitted_md5\tsra_ftp\tsra_bytes\tsra_md5\nSRR1603669\tftp.sra.ebi.ac.uk/vol1/fastq/SRR160/009/SRR1603669/SRR1603669.fastq.gz;ftp.sra.ebi.ac.uk/vol1/fastq/SRR160/009/SRR1603669/SRR1603669_1.fastq.gz;ftp.sra.ebi.ac.uk/vol1/fastq/SRR160/009/SRR1603669/SRR1603669_2.fastq.gz\t740881940;6633314923;6798374768\te796f40ceb70b3cd1dc0a9a542859b48;aa894e681310d52d109c9cd827e2bbc8;963d262188a629d68131281893e0f569\t\t\t\t\t\t\n" + string: "run_accession\tfastq_ftp\tfastq_bytes\tfastq_md5\tbam_ftp\tbam_bytes\tbam_md5\tsubmitted_ftp\tsubmitted_bytes\tsubmitted_md5\tsra_ftp\tsra_bytes\tsra_md5\nSRR1603669\tftp.sra.ebi.ac.uk/vol1/fastq/SRR160/009/SRR1603669/SRR1603669.fastq.gz;ftp.sra.ebi.ac.uk/vol1/fastq/SRR160/009/SRR1603669/SRR1603669_1.fastq.gz;ftp.sra.ebi.ac.uk/vol1/fastq/SRR160/009/SRR1603669/SRR1603669_2.fastq.gz\t740881940;6633314923;6798374768\te796f40ceb70b3cd1dc0a9a542859b48;aa894e681310d52d109c9cd827e2bbc8;963d262188a629d68131281893e0f569\t\t\t\t\t\t\tftp.sra.ebi.ac.uk/vol1/srr/SRR160/009/SRR1603669\t11816007579\ted592f24696b894ad47acdac61ce91f2\n" headers: Cache-Control: - no-cache, no-store, max-age=0, must-revalidate + Content-Length: + - '601' Content-Type: - text/plain Date: - - Wed, 28 Jul 2021 19:46:12 GMT + - Wed, 17 May 2023 18:38:27 GMT Expires: - '0' Pragma: - no-cache - Server: - - Apache-Coyote/1.1 Strict-Transport-Security: - max-age=0 - Transfer-Encoding: - - chunked X-Content-Type-Options: - nosniff X-Frame-Options: @@ -4008,7 +3362,7 @@ interactions: - 1; mode=block status: code: 200 - message: OK + message: '' - request: body: null headers: @@ -4019,7 +3373,7 @@ interactions: Connection: - keep-alive User-Agent: - - python-requests/2.25.1 + - python-requests/2.30.0 method: GET uri: https://www.ebi.ac.uk/ena/browser/api/xml/SRR1603670 response: @@ -4066,7 +3420,7 @@ interactions: Content-Type: - application/xml Date: - - Wed, 28 Jul 2021 19:46:13 GMT + - Wed, 17 May 2023 18:38:27 GMT Strict-Transport-Security: - max-age=0 Transfer-Encoding: @@ -4084,7 +3438,7 @@ interactions: Connection: - keep-alive User-Agent: - - python-requests/2.25.1 + - python-requests/2.30.0 method: GET uri: https://www.ebi.ac.uk/ena/browser/api/xml/SRX725602 response: @@ -4143,7 +3497,7 @@ interactions: Content-Type: - application/xml Date: - - Wed, 28 Jul 2021 19:46:14 GMT + - Wed, 17 May 2023 18:38:27 GMT Strict-Transport-Security: - max-age=0 Transfer-Encoding: @@ -4161,52 +3515,45 @@ interactions: Connection: - keep-alive User-Agent: - - python-requests/2.25.1 + - python-requests/2.30.0 method: GET uri: https://www.ebi.ac.uk/ena/browser/api/xml/SRS716933 response: body: string: "\n\n\n \n - \ SRS716933\n SAMN03097508\n - \ GSM1519625\n \n + alias=\"GSM1519625\" center_name=\"Stanford University\" broker_name=\"NCBI\">\n + \ \n SRS716933\n SAMN03097508\n GSM1519625\n \n \ RNA-seq of the corpus callosum #4999\n \n \ 9606\n Homo sapiens\n - \ \n \n \n \n - \ ENA-STUDY\n SRP048683\n - \ \n \n \n - \ \n ENA-EXPERIMENT\n - \ SRX725602\n \n \n - \ \n \n ENA-RUN\n - \ SRR1603670\n \n \n - \ \n \n ENA-SUBMISSION\n - \ SRA188845\n \n \n - \ \n \n ARRAYEXPRESS\n - \ E-GEOD-62098\n \n \n - \ \n \n ENA-FASTQ-FILES\n - \ \n - \ \n \n \n - \ \n ENA-SUBMITTED-FILES\n - \ \n - \ \n \n \n - \ \n \n source_name\n - \ human brain\n \n - \ \n tissue\n frozen - postmortem brain from NICHD\n \n \n - \ disease\n autism spectrum disorder\n - \ \n \n ENA-SPOT-COUNT\n - \ 176741134\n \n \n - \ ENA-BASE-COUNT\n 30790991868\n - \ \n \n ENA-FIRST-PUBLIC\n - \ 2015-03-23\n \n - \ \n ENA-LAST-UPDATE\n - \ 2015-06-23\n \n + \ human\n \n \n + \ \n \n ENA-FASTQ-FILES\n + \ \n + \ \n \n \n \n + \ ENA-SUBMITTED-FILES\n \n + \ \n \n\n\n + \ \n INSDC secondary accession\n + \ SRS716933\n \n \n + \ NCBI submission package\n Generic.1.0\n + \ \n \n disease\n + \ autism spectrum disorder\n \n + \ \n organism\n Homo + sapiens\n \n \n + \ tissue\n frozen postmortem + brain from NICHD\n \n \n + \ source_name\n human brain\n + \ \n \n BioSampleModel\n + \ Generic\n \n \n + \ ENA-FIRST-PUBLIC\n 2015-01-01\n + \ \n \n ENA-LAST-UPDATE\n + \ 2015-01-01\n \n \ \n\n\n" headers: Content-Type: - application/xml Date: - - Wed, 28 Jul 2021 19:46:13 GMT + - Wed, 17 May 2023 18:38:27 GMT Strict-Transport-Security: - max-age=0 Transfer-Encoding: @@ -4224,7 +3571,7 @@ interactions: Connection: - keep-alive User-Agent: - - python-requests/2.25.1 + - python-requests/2.30.0 method: GET uri: https://www.ebi.ac.uk/ena/browser/api/xml/SRP048683 response: @@ -4271,7 +3618,7 @@ interactions: Content-Type: - application/xml Date: - - Wed, 28 Jul 2021 19:46:14 GMT + - Wed, 17 May 2023 18:38:28 GMT Strict-Transport-Security: - max-age=0 Transfer-Encoding: @@ -4289,7 +3636,7 @@ interactions: Connection: - keep-alive User-Agent: - - python-requests/2.25.1 + - python-requests/2.30.0 method: GET uri: https://www.ebi.ac.uk/ena/browser/api/xml/SRA188845 response: @@ -4326,7 +3673,7 @@ interactions: Content-Type: - application/xml Date: - - Wed, 28 Jul 2021 19:46:14 GMT + - Wed, 17 May 2023 18:38:28 GMT Strict-Transport-Security: - max-age=0 Transfer-Encoding: @@ -4334,69 +3681,6 @@ interactions: status: code: 200 message: '' -- request: - body: acc=SRR1603670&accept-proto=fasp&version=2.0 - headers: - Accept: - - '*/*' - Accept-Encoding: - - gzip, deflate - Connection: - - keep-alive - Content-Length: - - '44' - User-Agent: - - python-requests/2.25.1 - method: POST - uri: https://www.ncbi.nlm.nih.gov/Traces/names/names.cgi - response: - body: - string: !!binary | - H4sIAAAAAAAAA5zOvW7CMBRA4b1PYakDE+j+2L5OXqISZWKzHUcBRXWUGCqk+/DA3K3b0Zm+TzrA - x7bG5Zb0+3hED+wFFBmI0TO/mgDtHmEP/kTUM/coZ3URaHAudJGAkhCDjN6KZZd8GaJTVQugXz/z - w+ym1pZtZ5a1tprrbC6bifNcf8tgxrqaNr1GTdeS21/K4T6kHPNUFB1KoK4TfpPkTSI+Qehd6AnP - WgJ6zGUsriSUhBTGAC5TROtTkn+TngAAAP//AwC/Hb8rIwEAAA== - headers: - Cache-Control: - - private - Connection: - - Keep-Alive - Content-Encoding: - - gzip - Content-Security-Policy: - - upgrade-insecure-requests - Content-Type: - - text/plain - Date: - - Wed, 28 Jul 2021 19:46:15 GMT - Keep-Alive: - - timeout=1, max=10 - NCBI-PHID: - - CC95022E101B40810000000000000001.m_1 - NCBI-SID: - - CC95022E101B4081_0000SID - Referrer-Policy: - - origin-when-cross-origin - Server: - - Apache - Set-Cookie: - - ncbi_sid=CC95022E101B4081_0000SID; domain=.nih.gov; path=/; expires=Thu, 28 - Jul 2022 19:46:16 GMT - SraNameServerOutputVersion: - - '2.0' - Strict-Transport-Security: - - max-age=31536000; includeSubDomains; preload - Transfer-Encoding: - - chunked - Vary: - - Accept-Encoding - X-UA-Compatible: - - IE=Edge - X-XSS-Protection: - - 1; mode=block - status: - code: 200 - message: OK - request: body: null headers: @@ -4407,29 +3691,27 @@ interactions: Connection: - keep-alive User-Agent: - - python-requests/2.25.1 + - python-requests/2.30.0 method: GET uri: https://www.ebi.ac.uk/ena/portal/api/filereport?accession=SRR1603670&result=read_run response: body: - string: "run_accession\tfastq_ftp\tfastq_bytes\tfastq_md5\tsubmitted_ftp\tsubmitted_bytes\tsubmitted_md5\tsra_ftp\tsra_bytes\tsra_md5\nSRR1603670\tftp.sra.ebi.ac.uk/vol1/fastq/SRR160/000/SRR1603670/SRR1603670.fastq.gz;ftp.sra.ebi.ac.uk/vol1/fastq/SRR160/000/SRR1603670/SRR1603670_1.fastq.gz;ftp.sra.ebi.ac.uk/vol1/fastq/SRR160/000/SRR1603670/SRR1603670_2.fastq.gz\t867311136;7337073265;7405687750\t2b6346b111fd7b6767b5703771c05312;0cf4bd30cd674d940b5ecb1b816c2e6f;4f1f26d76abae3ef698f4c552456a54d\t\t\t\t\t\t\n" + string: "run_accession\tfastq_ftp\tfastq_bytes\tfastq_md5\tbam_ftp\tbam_bytes\tbam_md5\tsubmitted_ftp\tsubmitted_bytes\tsubmitted_md5\tsra_ftp\tsra_bytes\tsra_md5\nSRR1603670\tftp.sra.ebi.ac.uk/vol1/fastq/SRR160/000/SRR1603670/SRR1603670.fastq.gz;ftp.sra.ebi.ac.uk/vol1/fastq/SRR160/000/SRR1603670/SRR1603670_1.fastq.gz;ftp.sra.ebi.ac.uk/vol1/fastq/SRR160/000/SRR1603670/SRR1603670_2.fastq.gz\t867311136;7337073265;7405687750\t2b6346b111fd7b6767b5703771c05312;0cf4bd30cd674d940b5ecb1b816c2e6f;4f1f26d76abae3ef698f4c552456a54d\t\t\t\t\t\t\tftp.sra.ebi.ac.uk/vol1/srr/SRR160/000/SRR1603670\t13023163370\t5a02d5589a202b72307f647435b6eda5\n" headers: Cache-Control: - no-cache, no-store, max-age=0, must-revalidate + Content-Length: + - '601' Content-Type: - text/plain Date: - - Wed, 28 Jul 2021 19:46:21 GMT + - Wed, 17 May 2023 18:38:29 GMT Expires: - '0' Pragma: - no-cache - Server: - - Apache-Coyote/1.1 Strict-Transport-Security: - max-age=0 - Transfer-Encoding: - - chunked X-Content-Type-Options: - nosniff X-Frame-Options: @@ -4438,7 +3720,7 @@ interactions: - 1; mode=block status: code: 200 - message: OK + message: '' - request: body: null headers: @@ -4449,7 +3731,7 @@ interactions: Connection: - keep-alive User-Agent: - - python-requests/2.25.1 + - python-requests/2.30.0 method: GET uri: https://www.ebi.ac.uk/ena/browser/api/xml/SRR1603671 response: @@ -4496,7 +3778,7 @@ interactions: Content-Type: - application/xml Date: - - Wed, 28 Jul 2021 19:46:21 GMT + - Wed, 17 May 2023 18:38:29 GMT Strict-Transport-Security: - max-age=0 Transfer-Encoding: @@ -4514,7 +3796,7 @@ interactions: Connection: - keep-alive User-Agent: - - python-requests/2.25.1 + - python-requests/2.30.0 method: GET uri: https://www.ebi.ac.uk/ena/browser/api/xml/SRX725603 response: @@ -4573,7 +3855,7 @@ interactions: Content-Type: - application/xml Date: - - Wed, 28 Jul 2021 19:46:22 GMT + - Wed, 17 May 2023 18:38:29 GMT Strict-Transport-Security: - max-age=0 Transfer-Encoding: @@ -4591,52 +3873,45 @@ interactions: Connection: - keep-alive User-Agent: - - python-requests/2.25.1 + - python-requests/2.30.0 method: GET uri: https://www.ebi.ac.uk/ena/browser/api/xml/SRS716935 response: body: string: "\n\n\n \n - \ SRS716935\n SAMN03097509\n - \ GSM1519626\n \n + alias=\"GSM1519626\" center_name=\"Stanford University\" broker_name=\"NCBI\">\n + \ \n SRS716935\n SAMN03097509\n GSM1519626\n \n \ RNA-seq of the corpus callosum #5302\n \n \ 9606\n Homo sapiens\n - \ \n \n \n \n - \ ENA-STUDY\n SRP048683\n - \ \n \n \n - \ \n ENA-EXPERIMENT\n - \ SRX725603\n \n \n - \ \n \n ENA-RUN\n - \ SRR1603671\n \n \n - \ \n \n ENA-SUBMISSION\n - \ SRA188845\n \n \n - \ \n \n ARRAYEXPRESS\n - \ E-GEOD-62098\n \n \n - \ \n \n ENA-FASTQ-FILES\n - \ \n - \ \n \n \n - \ \n ENA-SUBMITTED-FILES\n - \ \n - \ \n \n \n - \ \n \n source_name\n - \ human brain\n \n - \ \n tissue\n frozen - postmortem brain from NICHD\n \n \n - \ disease\n autism spectrum disorder\n - \ \n \n ENA-SPOT-COUNT\n - \ 160334858\n \n \n - \ ENA-BASE-COUNT\n 27850705155\n - \ \n \n ENA-FIRST-PUBLIC\n - \ 2015-03-23\n \n - \ \n ENA-LAST-UPDATE\n - \ 2015-06-23\n \n + \ human\n \n \n + \ \n \n ENA-FASTQ-FILES\n + \ \n + \ \n \n \n \n + \ ENA-SUBMITTED-FILES\n \n + \ \n \n\n\n + \ \n INSDC secondary accession\n + \ SRS716935\n \n \n + \ NCBI submission package\n Generic.1.0\n + \ \n \n disease\n + \ autism spectrum disorder\n \n + \ \n organism\n Homo + sapiens\n \n \n + \ tissue\n frozen postmortem + brain from NICHD\n \n \n + \ source_name\n human brain\n + \ \n \n BioSampleModel\n + \ Generic\n \n \n + \ ENA-FIRST-PUBLIC\n 2015-01-01\n + \ \n \n ENA-LAST-UPDATE\n + \ 2015-01-01\n \n \ \n\n\n" headers: Content-Type: - application/xml Date: - - Wed, 28 Jul 2021 19:46:22 GMT + - Wed, 17 May 2023 18:38:30 GMT Strict-Transport-Security: - max-age=0 Transfer-Encoding: @@ -4654,7 +3929,7 @@ interactions: Connection: - keep-alive User-Agent: - - python-requests/2.25.1 + - python-requests/2.30.0 method: GET uri: https://www.ebi.ac.uk/ena/browser/api/xml/SRP048683 response: @@ -4701,7 +3976,7 @@ interactions: Content-Type: - application/xml Date: - - Wed, 28 Jul 2021 19:46:24 GMT + - Wed, 17 May 2023 18:38:30 GMT Strict-Transport-Security: - max-age=0 Transfer-Encoding: @@ -4719,7 +3994,7 @@ interactions: Connection: - keep-alive User-Agent: - - python-requests/2.25.1 + - python-requests/2.30.0 method: GET uri: https://www.ebi.ac.uk/ena/browser/api/xml/SRA188845 response: @@ -4756,7 +4031,7 @@ interactions: Content-Type: - application/xml Date: - - Wed, 28 Jul 2021 19:46:24 GMT + - Wed, 17 May 2023 18:38:30 GMT Strict-Transport-Security: - max-age=0 Transfer-Encoding: @@ -4764,69 +4039,6 @@ interactions: status: code: 200 message: '' -- request: - body: acc=SRR1603671&accept-proto=fasp&version=2.0 - headers: - Accept: - - '*/*' - Accept-Encoding: - - gzip, deflate - Connection: - - keep-alive - Content-Length: - - '44' - User-Agent: - - python-requests/2.25.1 - method: POST - uri: https://www.ncbi.nlm.nih.gov/Traces/names/names.cgi - response: - body: - string: !!binary | - H4sIAAAAAAAAA5zOu27DMAyF4b1PIaBDpgQkRUuKX6JAmimbLhTcwqgMW0lRgA9fZ+7W7eAfDr5X - OsHLtsblnvT9ckEH1nlURKIhkGVnlQD5iHAEdyUaCUccbpqrELokMRQvHkKwIAgAnFNixqqqDKBv - X/OPOUy9L9vBLGvrLbfZfGwmznP7lmJqW02f9tDSp+T+l3J6lJRjnkSRPQfYX/2T5J8kslcI43Ae - yd40Cbnq/NkVSvu2nKnWGCKAgyJF/kv6BQAA//8DAKotCFkjAQAA - headers: - Cache-Control: - - private - Connection: - - Keep-Alive - Content-Encoding: - - gzip - Content-Security-Policy: - - upgrade-insecure-requests - Content-Type: - - text/plain - Date: - - Wed, 28 Jul 2021 19:46:24 GMT - Keep-Alive: - - timeout=1, max=10 - NCBI-PHID: - - C7A4309F101B41010000000000000001.m_1 - NCBI-SID: - - C7A4309F101B4101_0000SID - Referrer-Policy: - - origin-when-cross-origin - Server: - - Apache - Set-Cookie: - - ncbi_sid=C7A4309F101B4101_0000SID; domain=.nih.gov; path=/; expires=Thu, 28 - Jul 2022 19:46:24 GMT - SraNameServerOutputVersion: - - '2.0' - Strict-Transport-Security: - - max-age=31536000; includeSubDomains; preload - Transfer-Encoding: - - chunked - Vary: - - Accept-Encoding - X-UA-Compatible: - - IE=Edge - X-XSS-Protection: - - 1; mode=block - status: - code: 200 - message: OK - request: body: null headers: @@ -4837,29 +4049,27 @@ interactions: Connection: - keep-alive User-Agent: - - python-requests/2.25.1 + - python-requests/2.30.0 method: GET uri: https://www.ebi.ac.uk/ena/portal/api/filereport?accession=SRR1603671&result=read_run response: body: - string: "run_accession\tfastq_ftp\tfastq_bytes\tfastq_md5\tsubmitted_ftp\tsubmitted_bytes\tsubmitted_md5\tsra_ftp\tsra_bytes\tsra_md5\nSRR1603671\tftp.sra.ebi.ac.uk/vol1/fastq/SRR160/001/SRR1603671/SRR1603671.fastq.gz;ftp.sra.ebi.ac.uk/vol1/fastq/SRR160/001/SRR1603671/SRR1603671_1.fastq.gz;ftp.sra.ebi.ac.uk/vol1/fastq/SRR160/001/SRR1603671/SRR1603671_2.fastq.gz\t819349138;6452549543;6449393711\tba486058bffc91225b827a35e209657c;b1ebed75e329fcf4f428cd91b383a0e7;c83664b7dc22a679de808221216e63ea\t\t\t\t\t\t\n" + string: "run_accession\tfastq_ftp\tfastq_bytes\tfastq_md5\tbam_ftp\tbam_bytes\tbam_md5\tsubmitted_ftp\tsubmitted_bytes\tsubmitted_md5\tsra_ftp\tsra_bytes\tsra_md5\nSRR1603671\tftp.sra.ebi.ac.uk/vol1/fastq/SRR160/001/SRR1603671/SRR1603671.fastq.gz;ftp.sra.ebi.ac.uk/vol1/fastq/SRR160/001/SRR1603671/SRR1603671_1.fastq.gz;ftp.sra.ebi.ac.uk/vol1/fastq/SRR160/001/SRR1603671/SRR1603671_2.fastq.gz\t819349138;6452549543;6449393711\tba486058bffc91225b827a35e209657c;b1ebed75e329fcf4f428cd91b383a0e7;c83664b7dc22a679de808221216e63ea\t\t\t\t\t\t\tftp.sra.ebi.ac.uk/vol1/srr/SRR160/001/SRR1603671\t11225823463\tcfe216bea8d7e708830e10004cbb441f\n" headers: Cache-Control: - no-cache, no-store, max-age=0, must-revalidate + Content-Length: + - '601' Content-Type: - text/plain Date: - - Wed, 28 Jul 2021 19:46:24 GMT + - Wed, 17 May 2023 18:38:31 GMT Expires: - '0' Pragma: - no-cache - Server: - - Apache-Coyote/1.1 Strict-Transport-Security: - max-age=0 - Transfer-Encoding: - - chunked X-Content-Type-Options: - nosniff X-Frame-Options: @@ -4868,7 +4078,7 @@ interactions: - 1; mode=block status: code: 200 - message: OK + message: '' - request: body: null headers: @@ -4879,7 +4089,7 @@ interactions: Connection: - keep-alive User-Agent: - - python-requests/2.25.1 + - python-requests/2.30.0 method: GET uri: https://www.ebi.ac.uk/ena/browser/api/xml/SRR1603672 response: @@ -4926,7 +4136,7 @@ interactions: Content-Type: - application/xml Date: - - Wed, 28 Jul 2021 19:46:26 GMT + - Wed, 17 May 2023 18:38:31 GMT Strict-Transport-Security: - max-age=0 Transfer-Encoding: @@ -4944,7 +4154,7 @@ interactions: Connection: - keep-alive User-Agent: - - python-requests/2.25.1 + - python-requests/2.30.0 method: GET uri: https://www.ebi.ac.uk/ena/browser/api/xml/SRX725604 response: @@ -5003,7 +4213,7 @@ interactions: Content-Type: - application/xml Date: - - Wed, 28 Jul 2021 19:46:26 GMT + - Wed, 17 May 2023 18:38:32 GMT Strict-Transport-Security: - max-age=0 Transfer-Encoding: @@ -5021,52 +4231,45 @@ interactions: Connection: - keep-alive User-Agent: - - python-requests/2.25.1 + - python-requests/2.30.0 method: GET uri: https://www.ebi.ac.uk/ena/browser/api/xml/SRS716936 response: body: string: "\n\n\n \n - \ SRS716936\n SAMN03097510\n - \ GSM1519627\n \n + alias=\"GSM1519627\" center_name=\"Stanford University\" broker_name=\"NCBI\">\n + \ \n SRS716936\n SAMN03097510\n GSM1519627\n \n \ RNA-seq of the corpus callosum #5403\n \n \ 9606\n Homo sapiens\n - \ \n \n \n \n - \ ENA-STUDY\n SRP048683\n - \ \n \n \n - \ \n ENA-EXPERIMENT\n - \ SRX725604\n \n \n - \ \n \n ENA-RUN\n - \ SRR1603672\n \n \n - \ \n \n ENA-SUBMISSION\n - \ SRA188845\n \n \n - \ \n \n ARRAYEXPRESS\n - \ E-GEOD-62098\n \n \n - \ \n \n ENA-FASTQ-FILES\n - \ \n - \ \n \n \n - \ \n ENA-SUBMITTED-FILES\n - \ \n - \ \n \n \n - \ \n \n source_name\n - \ human brain\n \n - \ \n tissue\n frozen - postmortem brain from NICHD\n \n \n - \ disease\n autism spectrum disorder\n - \ \n \n ENA-SPOT-COUNT\n - \ 173441471\n \n \n - \ ENA-BASE-COUNT\n 30240407743\n - \ \n \n ENA-FIRST-PUBLIC\n - \ 2015-03-23\n \n - \ \n ENA-LAST-UPDATE\n - \ 2015-06-23\n \n + \ human\n \n \n + \ \n \n ENA-FASTQ-FILES\n + \ \n + \ \n \n \n \n + \ ENA-SUBMITTED-FILES\n \n + \ \n \n\n\n + \ \n INSDC secondary accession\n + \ SRS716936\n \n \n + \ NCBI submission package\n Generic.1.0\n + \ \n \n disease\n + \ autism spectrum disorder\n \n + \ \n organism\n Homo + sapiens\n \n \n + \ tissue\n frozen postmortem + brain from NICHD\n \n \n + \ source_name\n human brain\n + \ \n \n BioSampleModel\n + \ Generic\n \n \n + \ ENA-FIRST-PUBLIC\n 2015-01-01\n + \ \n \n ENA-LAST-UPDATE\n + \ 2015-01-01\n \n \ \n\n\n" headers: Content-Type: - application/xml Date: - - Wed, 28 Jul 2021 19:46:27 GMT + - Wed, 17 May 2023 18:38:33 GMT Strict-Transport-Security: - max-age=0 Transfer-Encoding: @@ -5084,7 +4287,7 @@ interactions: Connection: - keep-alive User-Agent: - - python-requests/2.25.1 + - python-requests/2.30.0 method: GET uri: https://www.ebi.ac.uk/ena/browser/api/xml/SRP048683 response: @@ -5131,7 +4334,7 @@ interactions: Content-Type: - application/xml Date: - - Wed, 28 Jul 2021 19:46:28 GMT + - Wed, 17 May 2023 18:38:33 GMT Strict-Transport-Security: - max-age=0 Transfer-Encoding: @@ -5149,7 +4352,7 @@ interactions: Connection: - keep-alive User-Agent: - - python-requests/2.25.1 + - python-requests/2.30.0 method: GET uri: https://www.ebi.ac.uk/ena/browser/api/xml/SRA188845 response: @@ -5186,7 +4389,7 @@ interactions: Content-Type: - application/xml Date: - - Wed, 28 Jul 2021 19:46:28 GMT + - Wed, 17 May 2023 18:38:33 GMT Strict-Transport-Security: - max-age=0 Transfer-Encoding: @@ -5194,69 +4397,6 @@ interactions: status: code: 200 message: '' -- request: - body: acc=SRR1603672&accept-proto=fasp&version=2.0 - headers: - Accept: - - '*/*' - Accept-Encoding: - - gzip, deflate - Connection: - - keep-alive - Content-Length: - - '44' - User-Agent: - - python-requests/2.25.1 - method: POST - uri: https://www.ncbi.nlm.nih.gov/Traces/names/names.cgi - response: - body: - string: !!binary | - H4sIAAAAAAAAA5zOPWrEMBBA4T6nEKTYapeZ0Xgk+RKBzVbb6c84wUTGVhICc/h463SBV73qe6YL - PO1bXD+Tvl6vKGDFkSKJJXDgGZUA+YxwBrkRjQwj+7tONASPLgoy2RpqDER1KrYCQkhxUlUG0JeP - 5cec5t7X/WTWrfWW22LedhOXpX3XYqa2mT4fo6X3mvtfyuWrpBzzXBUdHR4ZxD5I7kEie4MwAh/d - FUj8AJLBScks3llOuTAULsUKDv8l/QIAAP//AwDto5TxIwEAAA== - headers: - Cache-Control: - - private - Connection: - - Keep-Alive - Content-Encoding: - - gzip - Content-Security-Policy: - - upgrade-insecure-requests - Content-Type: - - text/plain - Date: - - Wed, 28 Jul 2021 19:46:28 GMT - Keep-Alive: - - timeout=1, max=10 - NCBI-PHID: - - CC95032A101B41410000000000000001.m_1 - NCBI-SID: - - CC95032A101B4141_0000SID - Referrer-Policy: - - origin-when-cross-origin - Server: - - Apache - Set-Cookie: - - ncbi_sid=CC95032A101B4141_0000SID; domain=.nih.gov; path=/; expires=Thu, 28 - Jul 2022 19:46:28 GMT - SraNameServerOutputVersion: - - '2.0' - Strict-Transport-Security: - - max-age=31536000; includeSubDomains; preload - Transfer-Encoding: - - chunked - Vary: - - Accept-Encoding - X-UA-Compatible: - - IE=Edge - X-XSS-Protection: - - 1; mode=block - status: - code: 200 - message: OK - request: body: null headers: @@ -5267,29 +4407,27 @@ interactions: Connection: - keep-alive User-Agent: - - python-requests/2.25.1 + - python-requests/2.30.0 method: GET uri: https://www.ebi.ac.uk/ena/portal/api/filereport?accession=SRR1603672&result=read_run response: body: - string: "run_accession\tfastq_ftp\tfastq_bytes\tfastq_md5\tsubmitted_ftp\tsubmitted_bytes\tsubmitted_md5\tsra_ftp\tsra_bytes\tsra_md5\nSRR1603672\tftp.sra.ebi.ac.uk/vol1/fastq/SRR160/002/SRR1603672/SRR1603672.fastq.gz;ftp.sra.ebi.ac.uk/vol1/fastq/SRR160/002/SRR1603672/SRR1603672_1.fastq.gz;ftp.sra.ebi.ac.uk/vol1/fastq/SRR160/002/SRR1603672/SRR1603672_2.fastq.gz\t829817369;7077631307;7106859277\t48400cd04f90d2d71139d6fa0efa1f6a;48c5e235e622c53dc0dc3e2f278cdc3d;7a09a8762df9b8982e956bf8e5b13663\t\t\t\t\t\t\n" + string: "run_accession\tfastq_ftp\tfastq_bytes\tfastq_md5\tbam_ftp\tbam_bytes\tbam_md5\tsubmitted_ftp\tsubmitted_bytes\tsubmitted_md5\tsra_ftp\tsra_bytes\tsra_md5\nSRR1603672\tftp.sra.ebi.ac.uk/vol1/fastq/SRR160/002/SRR1603672/SRR1603672.fastq.gz;ftp.sra.ebi.ac.uk/vol1/fastq/SRR160/002/SRR1603672/SRR1603672_1.fastq.gz;ftp.sra.ebi.ac.uk/vol1/fastq/SRR160/002/SRR1603672/SRR1603672_2.fastq.gz\t829817369;7077631307;7106859277\t48400cd04f90d2d71139d6fa0efa1f6a;48c5e235e622c53dc0dc3e2f278cdc3d;7a09a8762df9b8982e956bf8e5b13663\t\t\t\t\t\t\tftp.sra.ebi.ac.uk/vol1/srr/SRR160/002/SRR1603672\t12632070841\tf259817a61423e9ea922efd3e0109baf\n" headers: Cache-Control: - no-cache, no-store, max-age=0, must-revalidate + Content-Length: + - '601' Content-Type: - text/plain Date: - - Wed, 28 Jul 2021 19:46:29 GMT + - Wed, 17 May 2023 18:38:33 GMT Expires: - '0' Pragma: - no-cache - Server: - - Apache-Coyote/1.1 Strict-Transport-Security: - max-age=0 - Transfer-Encoding: - - chunked X-Content-Type-Options: - nosniff X-Frame-Options: @@ -5298,5 +4436,5 @@ interactions: - 1; mode=block status: code: 200 - message: OK + message: '' version: 1 From 646d1da6b8509a5046c1472249df6c08a6ddfc19 Mon Sep 17 00:00:00 2001 From: David Mejia Date: Wed, 17 May 2023 14:51:44 -0400 Subject: [PATCH 129/220] remove NCBI ftp support --- foreman/data_refinery_foreman/surveyor/sra.py | 30 ++----------------- 1 file changed, 2 insertions(+), 28 deletions(-) diff --git a/foreman/data_refinery_foreman/surveyor/sra.py b/foreman/data_refinery_foreman/surveyor/sra.py index 777a199ce..aaf685fc8 100644 --- a/foreman/data_refinery_foreman/surveyor/sra.py +++ b/foreman/data_refinery_foreman/surveyor/sra.py @@ -1,4 +1,3 @@ -import random import re import xml.etree.ElementTree as ET from typing import Dict, List @@ -19,7 +18,6 @@ SurveyJob, ) from data_refinery_common.rna_seq import _build_ena_file_url -from data_refinery_common.utils import get_fasp_sra_download from data_refinery_foreman.surveyor import harmony, utils from data_refinery_foreman.surveyor.external_source import ExternalSourceSurveyor @@ -33,14 +31,8 @@ "https://www.ebi.ac.uk/ena/portal/api/filereport?accession={accession}&result=read_run" ) NCBI_DOWNLOAD_URL_TEMPLATE = ( - "anonftp@ftp.ncbi.nlm.nih.gov:/sra/sra-instant/reads/ByRun/sra/" - "{first_three}/{first_six}/{accession}/{accession}.sra" + "https://sra-pub-run-odp.s3.amazonaws.com/sra/{accession}/{accession}" ) -NCBI_PRIVATE_DOWNLOAD_URL_TEMPLATE = ( - "anonftp@ftp-private.ncbi.nlm.nih.gov:/sra/sra-instant/reads/ByRun/sra/" - "{first_three}/{first_six}/{accession}/{accession}.sra" -) - class UnsupportedDataTypeError(Exception): pass @@ -338,25 +330,7 @@ def gather_all_metadata(run_accession): @staticmethod def _build_ncbi_file_url(run_accession: str): """Build the path to the hypothetical .sra file we want""" - accession = run_accession - first_three = accession[:3] - first_six = accession[:6] - - # Prefer the FASP-specific endpoints if possible.. - download_url = get_fasp_sra_download(run_accession) - - if not download_url: - # ..else, load balancing via coin flip. - if random.choice([True, False]): - download_url = NCBI_DOWNLOAD_URL_TEMPLATE.format( - first_three=first_three, first_six=first_six, accession=accession - ) - else: - download_url = NCBI_PRIVATE_DOWNLOAD_URL_TEMPLATE.format( - first_three=first_three, first_six=first_six, accession=accession - ) - - return download_url + return NCBI_DOWNLOAD_URL_TEMPLATE.format(accession=run_accession) @staticmethod def _apply_harmonized_metadata_to_sample(sample: Sample, metadata: dict): From dc133214499b3e3314c138a4ad80354a211aee8b Mon Sep 17 00:00:00 2001 From: David Mejia Date: Wed, 17 May 2023 14:52:13 -0400 Subject: [PATCH 130/220] update test to match new response values --- foreman/tests/surveyor/test_sra.py | 17 ++++------------- 1 file changed, 4 insertions(+), 13 deletions(-) diff --git a/foreman/tests/surveyor/test_sra.py b/foreman/tests/surveyor/test_sra.py index 0ec12f2b2..f0dbb3c9d 100644 --- a/foreman/tests/surveyor/test_sra.py +++ b/foreman/tests/surveyor/test_sra.py @@ -226,11 +226,9 @@ def test_metadata_is_gathered_correctly(self): self.assertEqual(metadata["run_ena_last_update"], "2017-08-11") self.assertEqual(metadata["run_ena_spot_count"], "32568360") self.assertEqual(metadata["sample_accession"], "DRS001521") - self.assertEqual(metadata["sample_center_name"], "BioSample") - self.assertEqual(metadata["sample_ena_base_count"], "3256836000") - self.assertEqual(metadata["sample_ena_first_public"], "2013-07-20") - self.assertEqual(metadata["sample_ena_last_update"], "2015-08-24") - self.assertEqual(metadata["sample_ena_spot_count"], "32568360") + self.assertEqual(metadata["sample_center_name"], "Group for Morphological Evolution, Center for Developmental Biology, Kobe Institute, RIKEN") + self.assertEqual(metadata["sample_ena_first_public"], "2013-02-27") + self.assertEqual(metadata["sample_ena_last_update"], "2014-11-12") self.assertEqual( metadata["sample_sample_comment"], ("mRNAseq of chicken at stage HH16 (biological " "replicate 1)"), @@ -255,14 +253,7 @@ def test_metadata_is_gathered_correctly(self): self.assertEqual(metadata["submission_title"], "Submitted by RIKEN_CDB on 19-JUL-2013") ncbi_url = SraSurveyor._build_ncbi_file_url(metadata["run_accession"]) - self.assertTrue( - ncbi_url - in [ - "anonftp@ftp.ncbi.nlm.nih.gov:/sra/sra-instant/reads/ByRun/sra/DRR/DRR002/DRR002116/DRR002116.sra", - "anonftp@ftp-private.ncbi.nlm.nih.gov:/sra/sra-instant/reads/ByRun/sra/DRR/DRR002/DRR002116/DRR002116.sra", - "dbtest@sra-download.ncbi.nlm.nih.gov:data/sracloud/traces/dra0/DRR/000002/DRR002116", - ] - ) + self.assertEqual(ncbi_url, "https://sra-pub-run-odp.s3.amazonaws.com/sra/DRR002116/DRR002116") def test_sra_metadata_is_harmonized(self): metadata = SraSurveyor.gather_all_metadata("SRR3098582") From 49a60f2b7cad785a43d519fc9ffd05c382849bc2 Mon Sep 17 00:00:00 2001 From: David Mejia Date: Wed, 17 May 2023 14:52:41 -0400 Subject: [PATCH 131/220] remove unused imports --- workers/data_refinery_workers/downloaders/sra.py | 2 +- workers/tests/downloaders/test_sra.py | 1 - 2 files changed, 1 insertion(+), 2 deletions(-) diff --git a/workers/data_refinery_workers/downloaders/sra.py b/workers/data_refinery_workers/downloaders/sra.py index c0268dc5a..9008f0d4d 100644 --- a/workers/data_refinery_workers/downloaders/sra.py +++ b/workers/data_refinery_workers/downloaders/sra.py @@ -17,7 +17,7 @@ Sample, ) from data_refinery_common.rna_seq import _build_ena_file_url -from data_refinery_common.utils import download_file, get_env_variable, get_https_sra_download +from data_refinery_common.utils import download_file, get_env_variable from data_refinery_workers.downloaders import utils logger = get_and_configure_logger(__name__) diff --git a/workers/tests/downloaders/test_sra.py b/workers/tests/downloaders/test_sra.py index 8c969043c..674c2e04d 100644 --- a/workers/tests/downloaders/test_sra.py +++ b/workers/tests/downloaders/test_sra.py @@ -1,5 +1,4 @@ import os -from unittest.mock import patch from django.test import TestCase, tag From ac0fb581753c38ac388cae6a629d0b39889fef88 Mon Sep 17 00:00:00 2001 From: David Mejia Date: Wed, 17 May 2023 15:17:00 -0400 Subject: [PATCH 132/220] formatting --- foreman/data_refinery_foreman/surveyor/sra.py | 10 ++++------ foreman/tests/surveyor/test_sra.py | 9 +++++++-- 2 files changed, 11 insertions(+), 8 deletions(-) diff --git a/foreman/data_refinery_foreman/surveyor/sra.py b/foreman/data_refinery_foreman/surveyor/sra.py index aaf685fc8..d414dbffa 100644 --- a/foreman/data_refinery_foreman/surveyor/sra.py +++ b/foreman/data_refinery_foreman/surveyor/sra.py @@ -30,9 +30,8 @@ ENA_FILE_REPORT_URL_TEMPLATE = ( "https://www.ebi.ac.uk/ena/portal/api/filereport?accession={accession}&result=read_run" ) -NCBI_DOWNLOAD_URL_TEMPLATE = ( - "https://sra-pub-run-odp.s3.amazonaws.com/sra/{accession}/{accession}" -) +NCBI_DOWNLOAD_URL_TEMPLATE = "https://sra-pub-run-odp.s3.amazonaws.com/sra/{accession}/{accession}" + class UnsupportedDataTypeError(Exception): pass @@ -58,7 +57,6 @@ def source_type(self): @staticmethod def gather_submission_metadata(metadata: Dict) -> None: - formatted_metadata_URL = ENA_METADATA_URL_TEMPLATE.format(metadata["submission_accession"]) response = utils.requests_retry_session().get(formatted_metadata_URL) submission_xml = ET.fromstring(response.text)[0] @@ -182,7 +180,8 @@ def gather_file_report(run_accession: str) -> List[Dict]: This endpoint returns a weird format, so some custom parsing is required: run_accession fastq_ftp fastq_bytes fastq_md5 submitted_ftp submitted_bytes submitted_md5 sra_ftp sra_bytes sra_md5 - SRR7353755 ftp.sra.ebi.ac.uk/vol1/fastq/SRR735/005/SRR7353755/SRR7353755.fastq.gz;ftp.sra.ebi.ac.uk/vol1/fastq/SRR735/005/SRR7353755/SRR7353755_1.fastq.gz;ftp.sra.ebi.ac.uk/vol1/fastq/SRR735/005/SRR7353755/SRR7353755_2.fastq.gz 25176;2856704;3140575 7ef1ba010dcb679217112efa380798b2;6bc5651b7103306d4d65018180ab8d0d;3856c14164612d9879d576a046a9879f""" + SRR7353755 ftp.sra.ebi.ac.uk/vol1/fastq/SRR735/005/SRR7353755/SRR7353755.fastq.gz;ftp.sra.ebi.ac.uk/vol1/fastq/SRR735/005/SRR7353755/SRR7353755_1.fastq.gz;ftp.sra.ebi.ac.uk/vol1/fastq/SRR735/005/SRR7353755/SRR7353755_2.fastq.gz 25176;2856704;3140575 7ef1ba010dcb679217112efa380798b2;6bc5651b7103306d4d65018180ab8d0d;3856c14164612d9879d576a046a9879f + """ response = utils.requests_retry_session().get( ENA_FILE_REPORT_URL_TEMPLATE.format(accession=run_accession) ) @@ -603,7 +602,6 @@ def discover_experiment_and_samples(self): accessions_to_run = [] for child in study_links: if child[0][0].text == "ENA-RUN": - all_runs = child[0][1].text # Ranges can be disjoint, separated by commas diff --git a/foreman/tests/surveyor/test_sra.py b/foreman/tests/surveyor/test_sra.py index f0dbb3c9d..35e922d21 100644 --- a/foreman/tests/surveyor/test_sra.py +++ b/foreman/tests/surveyor/test_sra.py @@ -226,7 +226,10 @@ def test_metadata_is_gathered_correctly(self): self.assertEqual(metadata["run_ena_last_update"], "2017-08-11") self.assertEqual(metadata["run_ena_spot_count"], "32568360") self.assertEqual(metadata["sample_accession"], "DRS001521") - self.assertEqual(metadata["sample_center_name"], "Group for Morphological Evolution, Center for Developmental Biology, Kobe Institute, RIKEN") + self.assertEqual( + metadata["sample_center_name"], + "Group for Morphological Evolution, Center for Developmental Biology, Kobe Institute, RIKEN" + ) self.assertEqual(metadata["sample_ena_first_public"], "2013-02-27") self.assertEqual(metadata["sample_ena_last_update"], "2014-11-12") self.assertEqual( @@ -253,7 +256,9 @@ def test_metadata_is_gathered_correctly(self): self.assertEqual(metadata["submission_title"], "Submitted by RIKEN_CDB on 19-JUL-2013") ncbi_url = SraSurveyor._build_ncbi_file_url(metadata["run_accession"]) - self.assertEqual(ncbi_url, "https://sra-pub-run-odp.s3.amazonaws.com/sra/DRR002116/DRR002116") + self.assertEqual( + ncbi_url, "https://sra-pub-run-odp.s3.amazonaws.com/sra/DRR002116/DRR002116" + ) def test_sra_metadata_is_harmonized(self): metadata = SraSurveyor.gather_all_metadata("SRR3098582") From f6c5389cae172cf71fa7587032094fca7c32723a Mon Sep 17 00:00:00 2001 From: David Mejia Date: Wed, 17 May 2023 15:21:09 -0400 Subject: [PATCH 133/220] add trailing comma --- foreman/tests/surveyor/test_sra.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/foreman/tests/surveyor/test_sra.py b/foreman/tests/surveyor/test_sra.py index 35e922d21..1a098409a 100644 --- a/foreman/tests/surveyor/test_sra.py +++ b/foreman/tests/surveyor/test_sra.py @@ -228,7 +228,7 @@ def test_metadata_is_gathered_correctly(self): self.assertEqual(metadata["sample_accession"], "DRS001521") self.assertEqual( metadata["sample_center_name"], - "Group for Morphological Evolution, Center for Developmental Biology, Kobe Institute, RIKEN" + "Group for Morphological Evolution, Center for Developmental Biology, Kobe Institute, RIKEN", ) self.assertEqual(metadata["sample_ena_first_public"], "2013-02-27") self.assertEqual(metadata["sample_ena_last_update"], "2014-11-12") From e867dc1056ba41f2930e911a149ba7d2897ca5ce Mon Sep 17 00:00:00 2001 From: David Mejia Date: Thu, 18 May 2023 13:51:57 -0400 Subject: [PATCH 134/220] remove unused imports --- workers/tests/processors/test_no_op.py | 2 -- 1 file changed, 2 deletions(-) diff --git a/workers/tests/processors/test_no_op.py b/workers/tests/processors/test_no_op.py index 4d2cf47e6..861e3e0e2 100644 --- a/workers/tests/processors/test_no_op.py +++ b/workers/tests/processors/test_no_op.py @@ -1,4 +1,3 @@ -import math import os import shutil from pathlib import Path @@ -6,7 +5,6 @@ from django.test import TestCase, tag import pandas as pd -import scipy.stats from data_refinery_common.models import ( Organism, From 93a5c05a04cc677392392f25c1c4ad64e28f4040 Mon Sep 17 00:00:00 2001 From: David Mejia Date: Thu, 18 May 2023 13:53:07 -0400 Subject: [PATCH 135/220] update tests utils import --- workers/tests/processors/test_no_op.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/workers/tests/processors/test_no_op.py b/workers/tests/processors/test_no_op.py index 861e3e0e2..83eed5953 100644 --- a/workers/tests/processors/test_no_op.py +++ b/workers/tests/processors/test_no_op.py @@ -5,6 +5,7 @@ from django.test import TestCase, tag import pandas as pd +from tests.utils import assertMostlyAgrees from data_refinery_common.models import ( Organism, @@ -15,7 +16,6 @@ Sample, ) from data_refinery_workers.processors import no_op -from data_refinery_workers.processors.testing_utils import assertMostlyAgrees def prepare_job(job_info: dict) -> ProcessorJob: From 25eb2b13bbeda5bae6020e10966a8469a3a9430f Mon Sep 17 00:00:00 2001 From: David Mejia Date: Thu, 18 May 2023 17:25:06 -0400 Subject: [PATCH 136/220] add free-disk-space --- .github/workflows/config.yml | 25 +++++++++++++++++++++---- 1 file changed, 21 insertions(+), 4 deletions(-) diff --git a/.github/workflows/config.yml b/.github/workflows/config.yml index 94c906279..06a02840d 100644 --- a/.github/workflows/config.yml +++ b/.github/workflows/config.yml @@ -40,7 +40,11 @@ jobs: - uses: actions/checkout@v3 - name: Free up space - run: ./.github/scripts/cleanup_instance.sh + uses: jlumbroso/free-disk-space@main + with: + # this might remove tools that are actually needed, + # if set to "true" but frees about 6 GB + tool-cache: false - name: Login to Packages Container registry uses: docker/login-action@v2 @@ -128,7 +132,11 @@ jobs: - uses: actions/checkout@v3 - name: Free up space - run: ./.github/scripts/cleanup_instance.sh + uses: jlumbroso/free-disk-space@main + with: + # this might remove tools that are actually needed, + # if set to "true" but frees about 6 GB + tool-cache: false - name: Login to Packages Container registry uses: docker/login-action@v2 @@ -229,7 +237,11 @@ jobs: - uses: actions/checkout@v3 - name: Free up space - run: ./.github/scripts/cleanup_instance.sh + uses: jlumbroso/free-disk-space@main + with: + # this might remove tools that are actually needed, + # if set to "true" but frees about 6 GB + tool-cache: false - name: Login to Packages Container registry uses: docker/login-action@v2 @@ -364,8 +376,13 @@ jobs: CODECOV_TOKEN: ${{ secrets.CODECOV_TOKEN }} steps: - uses: actions/checkout@v3 + - name: Free up space - run: ./.github/scripts/cleanup_instance.sh + uses: jlumbroso/free-disk-space@main + with: + # this might remove tools that are actually needed, + # if set to "true" but frees about 6 GB + tool-cache: false - name: Login to Packages Container registry uses: docker/login-action@v2 From f597413bb87de2a8c359f9948fc92662fed3beef Mon Sep 17 00:00:00 2001 From: David Mejia Date: Thu, 18 May 2023 17:46:07 -0400 Subject: [PATCH 137/220] free space on downloader_no_op_tests --- .github/workflows/config.yml | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/.github/workflows/config.yml b/.github/workflows/config.yml index 06a02840d..1c2dc860f 100644 --- a/.github/workflows/config.yml +++ b/.github/workflows/config.yml @@ -89,6 +89,13 @@ jobs: steps: - uses: actions/checkout@v3 + - name: Free up space + uses: jlumbroso/free-disk-space@main + with: + # this might remove tools that are actually needed, + # if set to "true" but frees about 6 GB + tool-cache: false + - name: Login to Packages Container registry uses: docker/login-action@v2 with: From 778cfd57f4676ff903797337a016fa72e75d92a7 Mon Sep 17 00:00:00 2001 From: David Mejia Date: Fri, 19 May 2023 16:02:03 -0400 Subject: [PATCH 138/220] codecov informational --- codecov.yml | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/codecov.yml b/codecov.yml index 77707aa1d..59eaf09fe 100644 --- a/codecov.yml +++ b/codecov.yml @@ -1,2 +1,15 @@ github_checks: annotations: false + +ignore: + - "**/tests/**" + - "**/*.sh" + +coverage: + status: + project: + default: + informational: true + patch: + default: + informational: true From 6071787a2e4c0c03973a6af53c5a64bc229675d0 Mon Sep 17 00:00:00 2001 From: Arkadii Yakovets Date: Tue, 13 Jun 2023 09:17:43 -0700 Subject: [PATCH 139/220] Implement Docker image cache cross-environment support - Name Docker images based on the branch hash value (shasum) - Add setup.py PEP-440 workaround for common package - Reorganize GHA jobs - Utilize Docker registry cache for image cache layers sharing - Use separate Docker images (_cache) for caching - Optimize Docker images size (foreman, salmon) - Add remote builder support (used by default in GHA jobs) - Set umask explicitly to avoid cache miss due to permissions diff - Introduce API base image, derive api local/production from it - Reformat affected files for better readability - Use better names for scripts/variables - Consolidate renv related scripts location (use common/ everywhere) - Retire -d option of `prepare_image.sh` - Delete affymetrix_local image as no longer used (affymetrix cache boost satisfies our tests execution time requirements) - Sort .dockerignore entries - Update .pre-commit-config.yaml - Update README --- .dockerignore | 21 +- .github/scripts/cleanup_instance.sh | 9 +- .github/scripts/filter_tests.sh | 6 +- .github/scripts/post_deploy_cleanup.sh | 3 +- .github/scripts/pull_docker_images.sh | 5 +- .github/scripts/push_docker_images.sh | 5 +- .github/scripts/remote_deploy.sh | 21 +- .github/scripts/run_terraform.sh | 12 +- .github/scripts/slackpost_deploy.sh | 19 +- .github/scripts/slackpost_end_to_end.sh | 19 +- ...e_docker_img.sh => update_docker_image.sh} | 53 +- .github/scripts/upload_test_coverage.sh | 11 +- .github/workflows/config.yml | 678 ++++++++++-------- .pre-commit-config.yaml | 19 +- README.md | 99 +-- api/dockerfiles/Dockerfile.api_base | 29 + api/dockerfiles/Dockerfile.api_local | 31 +- api/dockerfiles/Dockerfile.api_production | 31 +- api/run_tests.sh | 39 +- api/serve.sh | 23 +- api/serve_production.sh | 27 +- common/R/renv_load.R | 15 +- {workers => common}/R/renv_save.R | 0 common/dockerfiles/Dockerfile.common_tests | 5 +- common/dockerfiles/Dockerfile.migrations | 5 +- common/run_tests.sh | 38 +- common/setup.py | 16 +- foreman/dockerfiles/Dockerfile.foreman | 16 +- foreman/run_end_to_end_tests.sh | 28 +- foreman/run_management_command.sh | 27 +- foreman/run_tests.sh | 32 +- foreman/test_survey.sh | 29 +- .../api-server-instance-user-data.tpl.sh | 54 +- infrastructure/deploy.sh | 170 ++--- infrastructure/deploy_box_instance_data.sh | 1 + infrastructure/destroy_terraform.sh | 17 +- .../foreman-server-instance-user-data.tpl.sh | 113 +-- scripts/common.sh | 112 ++- scripts/format_batch_with_env.sh | 138 ++-- scripts/install_all.sh | 165 ++--- scripts/install_db_docker.sh | 49 +- scripts/kill_all_jobs.sh | 7 +- scripts/make_migrations.sh | 40 +- scripts/prepare_image.sh | 189 ++--- scripts/rebuild_es_index.sh | 5 +- scripts/reinit_database.sh | 6 +- scripts/run_all_tests.sh | 5 +- scripts/run_es.sh | 18 +- scripts/run_manage.sh | 54 +- scripts/run_postgres.sh | 31 +- scripts/run_psql_shell.sh | 10 +- scripts/run_shell.sh | 29 +- scripts/update_docker_images.sh | 136 ++++ scripts/update_models.sh | 21 +- scripts/update_my_docker_images.sh | 126 ---- workers/R/renv_load.R | 16 - workers/dockerfiles/Dockerfile.affymetrix | 7 +- .../dockerfiles/Dockerfile.affymetrix_local | 29 - workers/dockerfiles/Dockerfile.compendia | 5 +- workers/dockerfiles/Dockerfile.downloaders | 7 +- workers/dockerfiles/Dockerfile.illumina | 7 +- workers/dockerfiles/Dockerfile.no_op | 7 +- workers/dockerfiles/Dockerfile.salmon | 12 +- workers/dockerfiles/Dockerfile.smasher | 7 +- workers/dockerfiles/Dockerfile.transcriptome | 20 +- workers/run_command.sh | 44 +- workers/run_janitor.sh | 37 +- workers/run_job.sh | 141 ++-- workers/run_tests.sh | 208 +++--- 69 files changed, 1869 insertions(+), 1545 deletions(-) rename .github/scripts/{update_docker_img.sh => update_docker_image.sh} (59%) create mode 100644 api/dockerfiles/Dockerfile.api_base rename {workers => common}/R/renv_save.R (100%) create mode 100755 scripts/update_docker_images.sh delete mode 100755 scripts/update_my_docker_images.sh delete mode 100644 workers/R/renv_load.R delete mode 100644 workers/dockerfiles/Dockerfile.affymetrix_local diff --git a/.dockerignore b/.dockerignore index cfd8a7fed..c2205b57e 100644 --- a/.dockerignore +++ b/.dockerignore @@ -1,16 +1,15 @@ -volume -*/volume -test_volume -*/test_volume -volume .git +*/batch-job-specs +*/test_volume +*/volume +config/externally_supplied_metadata/metasra/*.tab +config/externally_supplied_metadata/metasra/metasra_keywords.json +config/externally_supplied_metadata/metasra/metasra_translated.json +config/externally_supplied_metadata/metasra/SRAmetadb.sqlite dr_env -volumes_postgres/ env/ infrastructure/ terraform/ -*/batch-job-specs -config/externally_supplied_metadata/metasra/metasra_translated.json -config/externally_supplied_metadata/metasra/metasra_keywords.json -config/externally_supplied_metadata/metasra/*.tab -config/externally_supplied_metadata/metasra/SRAmetadb.sqlite +test_volume +volume +volumes_postgres/ diff --git a/.github/scripts/cleanup_instance.sh b/.github/scripts/cleanup_instance.sh index d270e1582..d359f6966 100755 --- a/.github/scripts/cleanup_instance.sh +++ b/.github/scripts/cleanup_instance.sh @@ -13,7 +13,14 @@ sudo apt-get remove -y '^ghc-8.*' sudo apt-get remove -y '^dotnet-.*' sudo apt-get remove -y '^llvm-.*' sudo apt-get remove -y 'php.*' -sudo apt-get remove -y azure-cli google-cloud-sdk hhvm google-chrome-stable firefox powershell mono-devel +sudo apt-get remove -y \ + azure-cli \ + firefox \ + google-chrome-stable \ + google-cloud-sdk \ + hhvm \ + mono-devel \ + powershell sudo apt-get autoremove -y sudo apt-get clean diff --git a/.github/scripts/filter_tests.sh b/.github/scripts/filter_tests.sh index fca0caec3..88a3dfff5 100755 --- a/.github/scripts/filter_tests.sh +++ b/.github/scripts/filter_tests.sh @@ -1,14 +1,14 @@ #!/bin/bash -# Exit on failure +# Exit on failure. set -e git log --format=oneline -n 1 "$GITHUB_SHA" if [[ $(git log --format=oneline -n 1 "$GITHUB_SHA") = *"noslow"* ]]; then - echo "Skipping slow tests.."; + echo "Skipping slow tests..." ./workers/run_tests.sh --exclude-tag=slow "$@" else - echo "Running all tests.."; + echo "Running all tests..." ./workers/run_tests.sh "$@" fi diff --git a/.github/scripts/post_deploy_cleanup.sh b/.github/scripts/post_deploy_cleanup.sh index 467cbc50e..9901a3b26 100755 --- a/.github/scripts/post_deploy_cleanup.sh +++ b/.github/scripts/post_deploy_cleanup.sh @@ -8,4 +8,5 @@ ssh -o StrictHostKeyChecking=no \ -o ServerAliveInterval=15 \ -i infrastructure/data-refinery-key.pem \ - ubuntu@"${DEPLOY_IP_ADDRESS}" "cd refinebio && git clean -f" + "ubuntu@${DEPLOY_IP_ADDRESS}" \ + "cd refinebio && git clean -f" diff --git a/.github/scripts/pull_docker_images.sh b/.github/scripts/pull_docker_images.sh index c691a0b41..532d0ccab 100755 --- a/.github/scripts/pull_docker_images.sh +++ b/.github/scripts/pull_docker_images.sh @@ -2,14 +2,15 @@ set -e -REPO=$(echo "ghcr.io/$GITHUB_REPOSITORY" | tr '[:upper:]' '[:lower:]') if [ -z "$IMAGES" ]; then echo "Error: must put images to pull in \$IMAGES" >&2 exit 1 fi +REPO=$(echo "ghcr.io/$GITHUB_REPOSITORY" | tr '[:upper:]' '[:lower:]') + for image in $IMAGES; do PACKAGE="$REPO/dr_$image" - # Only pull the package if it already exists + # Only pull the package if it already exists. (docker pull "$PACKAGE" && docker tag "$PACKAGE" "ccdlstaging/dr_$image") || true done diff --git a/.github/scripts/push_docker_images.sh b/.github/scripts/push_docker_images.sh index 738290c95..ccd79d424 100755 --- a/.github/scripts/push_docker_images.sh +++ b/.github/scripts/push_docker_images.sh @@ -1,11 +1,14 @@ #!/bin/sh -REPO=$(echo "ghcr.io/$GITHUB_REPOSITORY" | tr '[:upper:]' '[:lower:]') +set -e + if [ -z "$IMAGES" ]; then echo "Error: must put images to pull in \$IMAGES" >&2 exit 1 fi +REPO=$(echo "ghcr.io/$GITHUB_REPOSITORY" | tr '[:upper:]' '[:lower:]') + for image in $IMAGES; do PACKAGE="$REPO/dr_$image" docker tag "ccdlstaging/dr_$image" "$PACKAGE" diff --git a/.github/scripts/remote_deploy.sh b/.github/scripts/remote_deploy.sh index 318aaac0c..aabfd0b3b 100755 --- a/.github/scripts/remote_deploy.sh +++ b/.github/scripts/remote_deploy.sh @@ -18,11 +18,10 @@ # - AWS_ACCESS_KEY_ID -- The AWS key id to use when interacting with AWS. # - AWS_SECRET_ACCESS_KEY -- The AWS secret key to use when interacting with AWS. - -echo "$INSTANCE_SSH_KEY" > infrastructure/data-refinery-key.pem +echo "$INSTANCE_SSH_KEY" >infrastructure/data-refinery-key.pem chmod 600 infrastructure/data-refinery-key.pem -run_on_deploy_box () { +run_on_deploy_box() { # shellcheck disable=SC2029 ssh -o StrictHostKeyChecking=no \ -o ServerAliveInterval=15 \ @@ -32,7 +31,7 @@ run_on_deploy_box () { # Create file containing local env vars that are needed for deploy. rm -f env_vars -cat >> env_vars <>env_vars <&1 | tee -a /var/log/docker_update_$CI_TAG.log" -run_on_deploy_box "source env_vars && ./.github/scripts/update_docker_img.sh 2>&1 | tee -a /var/log/docker_update_$CI_TAG.log" +run_on_deploy_box "source env_vars && ./.github/scripts/update_docker_image.sh 2>&1 | tee -a /var/log/docker_update_$CI_TAG.log" run_on_deploy_box "source env_vars && echo -e '######\nFinished building new images for $CI_TAG\n######' 2>&1 | tee -a /var/log/docker_update_$CI_TAG.log" -# Load docker_img_exists function and $ALL_CCDL_IMAGES -source scripts/common.sh +# Load docker_image_exists function and $ALL_IMAGES. +. ./scripts/common.sh if [[ "$MASTER_OR_DEV" == "master" ]]; then DOCKERHUB_REPO=ccdl elif [[ "$MASTER_OR_DEV" == "dev" ]]; then DOCKERHUB_REPO=ccdlstaging else - echo "Why in the world was remote_deploy.sh called from a branch other than dev or master?!?!?" + echo "Why in the world was remote_deploy.sh called from a branch other than dev or master?!" exit 1 fi @@ -89,10 +88,10 @@ fi # https://github.com/AlexsLemonade/refinebio/issues/784 # Since it's not clear how that happened, the safest thing is to add # an explicit check that the Docker images were successfully updated. -for IMAGE in $ALL_CCDL_IMAGES; do +for IMAGE in $ALL_IMAGES; do image_name="$DOCKERHUB_REPO/dr_$IMAGE" - if ! docker_img_exists "$image_name" "$CI_TAG"; then - echo "Docker image $image_name:$CI_TAG doesn't exist after running update_docker_img.sh!" + if ! docker_image_exists "$image_name" "$CI_TAG"; then + echo "Docker image $image_name:$CI_TAG doesn't exist after running update_docker_image.sh!" echo "This is generally caused by a temporary error, please try the 'Rerun workflow' button." exit 1 fi diff --git a/.github/scripts/run_terraform.sh b/.github/scripts/run_terraform.sh index 72402e520..547b8c208 100755 --- a/.github/scripts/run_terraform.sh +++ b/.github/scripts/run_terraform.sh @@ -1,17 +1,15 @@ #!/bin/bash -e -# Import Hashicorps' Key. +# Import Hashicorps' key. curl https://keybase.io/hashicorp/pgp_keys.asc | gpg --import - -# Install terraform and nomad +# Install Terraform. cd TERRAFORM_VERSION=0.13.5 wget -N https://releases.hashicorp.com/terraform/$TERRAFORM_VERSION/terraform_${TERRAFORM_VERSION}_linux_amd64.zip wget -N https://releases.hashicorp.com/terraform/$TERRAFORM_VERSION/terraform_${TERRAFORM_VERSION}_SHA256SUMS wget -N https://releases.hashicorp.com/terraform/$TERRAFORM_VERSION/terraform_${TERRAFORM_VERSION}_SHA256SUMS.sig - # Verify the signature file is untampered. gpg_ok=$(gpg --verify terraform_${TERRAFORM_VERSION}_SHA256SUMS.sig terraform_${TERRAFORM_VERSION}_SHA256SUMS |& grep Good) if [[ "$gpg_ok" == "" ]]; then @@ -32,9 +30,9 @@ sudo mv terraform /usr/local/bin/ cd ~/refinebio/infrastructure # Circle won't set the branch name for us, so do it ourselves. -source ~/refinebio/scripts/common.sh -branch=$(get_master_or_dev "$CI_TAG") +. ~/refinebio/scripts/common.sh +branch=$(get_master_or_dev "$CI_TAG") if [[ $branch == "master" ]]; then ENVIRONMENT=prod BATCH_USE_ON_DEMAND_INSTANCES="false" @@ -42,7 +40,7 @@ elif [[ $branch == "dev" ]]; then ENVIRONMENT=staging BATCH_USE_ON_DEMAND_INSTANCES="true" else - echo "Why in the world was run_terraform.sh called from a branch other than dev or master?!?!?" + echo "Why in the world was run_terraform.sh called from a branch other than dev or master?!" exit 1 fi diff --git a/.github/scripts/slackpost_deploy.sh b/.github/scripts/slackpost_deploy.sh index 9d9b501fb..707de3e17 100755 --- a/.github/scripts/slackpost_deploy.sh +++ b/.github/scripts/slackpost_deploy.sh @@ -1,26 +1,23 @@ #!/bin/bash -if [[ $ENGAGEMENTBOT_WEBHOOK == "" ]] -then +if [[ $ENGAGEMENTBOT_WEBHOOK == "" ]]; then echo "No webhook url. Set ENGAGEMENTBOT_WEBHOOK in the environment variables if you want to be notified of deploys on slack" exit 0 fi # ------------ channel=$1 -if [[ $channel == "" ]] -then - echo "No channel specified" - exit 1 +if [[ $channel == "" ]]; then + echo "No channel specified" + exit 1 fi # ------------ shift username=$1 -if [[ $username == "" ]] -then - echo "No username specified" - exit 1 +if [[ $username == "" ]]; then + echo "No username specified" + exit 1 fi # ------------ @@ -35,7 +32,7 @@ fi text="New deployment! Woo! $CI_USERNAME: $CI_BRANCH $CI_TAG" -escapedText=$(echo "$text" | sed 's/"/\"/g' | sed "s/'/\'/g" ) +escapedText=$(echo "$text" | sed 's/"/\"/g' | sed "s/'/\'/g") json="{\"channel\": \"$channel\", \"username\":\"$username\", \"icon_emoji\":\":tada:\", \"attachments\":[{\"color\":\"danger\" , \"text\": \"$escapedText\"}]}" diff --git a/.github/scripts/slackpost_end_to_end.sh b/.github/scripts/slackpost_end_to_end.sh index 7fa2e71fc..821213b6e 100755 --- a/.github/scripts/slackpost_end_to_end.sh +++ b/.github/scripts/slackpost_end_to_end.sh @@ -1,31 +1,28 @@ #!/bin/bash -if [[ $ENGAGEMENTBOT_WEBHOOK == "" ]] -then +if [[ $ENGAGEMENTBOT_WEBHOOK == "" ]]; then echo "No webhook url. Set ENGAGEMENTBOT_WEBHOOK in the environment variables if you want to be notified of deploys on slack" exit 0 fi # ------------ channel=$1 -if [[ $channel == "" ]] -then - echo "No channel specified" - exit 1 +if [[ $channel == "" ]]; then + echo "No channel specified" + exit 1 fi # ------------ shift username=$1 -if [[ $username == "" ]] -then - echo "No username specified" - exit 1 +if [[ $username == "" ]]; then + echo "No username specified" + exit 1 fi text="The end-to-end tests passed in the staging stack!!!" -escapedText=$(echo "$text" | sed 's/"/\"/g' | sed "s/'/\'/g" ) +escapedText=$(echo "$text" | sed 's/"/\"/g' | sed "s/'/\'/g") json="{\"channel\": \"$channel\", \"username\":\"$username\", \"icon_emoji\":\":tada:\", \"attachments\":[{\"color\":\"danger\" , \"text\": \"$escapedText\"}]}" diff --git a/.github/scripts/update_docker_img.sh b/.github/scripts/update_docker_image.sh similarity index 59% rename from .github/scripts/update_docker_img.sh rename to .github/scripts/update_docker_image.sh index 620149463..a7aa97747 100755 --- a/.github/scripts/update_docker_img.sh +++ b/.github/scripts/update_docker_image.sh @@ -1,8 +1,8 @@ #!/bin/bash set -e -# Load docker_img_exists function and $CCDL_WORKER_IMAGES -source ~/refinebio/scripts/common.sh +# Load docker_image_exists function and $WORKER_IMAGES. +. ~/refinebio/scripts/common.sh # Github won't set the branch name for us, so do it ourselves. branch=$(get_master_or_dev "$CI_TAG") @@ -12,71 +12,74 @@ if [[ "$branch" == "master" ]]; then elif [[ "$branch" == "dev" ]]; then DOCKERHUB_REPO=ccdlstaging else - echo "Why in the world was update_docker_img.sh called from a branch other than dev or master?!?!?" + echo "Why in the world was update_docker_image.sh called from a branch other than dev or master!?" exit 1 fi -echo "$CI_TAG" > ~/refinebio/common/version +echo "$CI_TAG" >~/refinebio/common/version # Create ~/refinebio/common/dist/data-refinery-common-*.tar.gz, which is # required by the workers and data_refinery_foreman images. -## Remove old common distributions if they exist +## Remove old common distributions if they exist. rm -f ~/refinebio/common/dist/* cd ~/refinebio/common && python3 setup.py sdist -# Log into DockerHub +# Log into DockerHub. docker login -u "$DOCKER_ID" -p "$DOCKER_PASSWD" cd ~/refinebio -for IMAGE in $CCDL_WORKER_IMAGES; do +for IMAGE in $WORKER_IMAGES; do image_name="$DOCKERHUB_REPO/dr_$IMAGE" - if docker_img_exists "$image_name" "$CI_TAG"; then + if docker_image_exists "$image_name" "$CI_TAG"; then echo "Docker image exists, skipping: $image_name:$CI_TAG" else echo "Building docker image: $image_name:$CI_TAG" # Build and push image. We use the CI_TAG as the system version. docker build \ - -t "$image_name:$CI_TAG" \ - -f "workers/dockerfiles/Dockerfile.$IMAGE" \ - --build-arg SYSTEM_VERSION="$CI_TAG" . + --build-arg SYSTEM_VERSION="$CI_TAG" \ + --file "workers/dockerfiles/Dockerfile.$IMAGE" \ + --tag "$image_name:$CI_TAG" \ + . docker push "$image_name:$CI_TAG" - # Update latest version + # Update latest version. docker tag "$image_name:$CI_TAG" "$image_name:latest" docker push "$image_name:latest" - # Save some space when we're through + # Save some space when we're through. docker rmi "$image_name:$CI_TAG" fi done -# Build and push foreman image +# Build and push foreman image. FOREMAN_DOCKER_IMAGE="$DOCKERHUB_REPO/dr_foreman" -if docker_img_exists "$FOREMAN_DOCKER_IMAGE" "$CI_TAG"; then +if docker_image_exists "$FOREMAN_DOCKER_IMAGE" "$CI_TAG"; then echo "Docker image exists, skipping: $FOREMAN_DOCKER_IMAGE:$CI_TAG" else # Build and push image. We use the CI_TAG as the system version. docker build \ - -t "$FOREMAN_DOCKER_IMAGE:$CI_TAG" \ - -f foreman/dockerfiles/Dockerfile.foreman \ - --build-arg SYSTEM_VERSION="$CI_TAG" . + --build-arg SYSTEM_VERSION="$CI_TAG" \ + --file foreman/dockerfiles/Dockerfile.foreman \ + --tag "$FOREMAN_DOCKER_IMAGE:$CI_TAG" \ + . docker push "$FOREMAN_DOCKER_IMAGE:$CI_TAG" - # Update latest version + # Update latest version. docker tag "$FOREMAN_DOCKER_IMAGE:$CI_TAG" "$FOREMAN_DOCKER_IMAGE:latest" docker push "$FOREMAN_DOCKER_IMAGE:latest" fi -# Build and push API image +# Build and push API image. API_DOCKER_IMAGE="$DOCKERHUB_REPO/dr_api" -if docker_img_exists "$API_DOCKER_IMAGE" "$CI_TAG"; then +if docker_image_exists "$API_DOCKER_IMAGE" "$CI_TAG"; then echo "Docker image exists, skipping: $API_DOCKER_IMAGE:$CI_TAG" else # Build and push image. We use the CI_TAG as the system version. docker build \ - -t "$API_DOCKER_IMAGE:$CI_TAG" \ - -f api/dockerfiles/Dockerfile.api_production \ - --build-arg SYSTEM_VERSION="$CI_TAG" . + --build-arg SYSTEM_VERSION="$CI_TAG" \ + --file api/dockerfiles/Dockerfile.api_production \ + --tag "$API_DOCKER_IMAGE:$CI_TAG" \ + . docker push "$API_DOCKER_IMAGE:$CI_TAG" - # Update latest version + # Update latest version. docker tag "$API_DOCKER_IMAGE:$CI_TAG" "$API_DOCKER_IMAGE:latest" docker push "$API_DOCKER_IMAGE:latest" fi diff --git a/.github/scripts/upload_test_coverage.sh b/.github/scripts/upload_test_coverage.sh index 44a009cee..12068f485 100755 --- a/.github/scripts/upload_test_coverage.sh +++ b/.github/scripts/upload_test_coverage.sh @@ -3,14 +3,12 @@ # Script to upload code coverage project=$1 -if [[ $project == "" ]] -then +if [[ $project == "" ]]; then echo "No project specified" exit 1 fi -if [[ $project == "workers" ]] -then +if [[ $project == "workers" ]]; then # the workers project uses it's own test_volume directory test_volume="workers/test_volume" else @@ -19,8 +17,7 @@ fi coverage_file="${test_volume}/coverage.xml" -if [[ ! -f $coverage_file ]] -then +if [[ ! -f $coverage_file ]]; then echo "Coverage file wasn't found, were the tests run before?" exit 0 # exit this script but don't fail the tests for this. fi @@ -30,7 +27,7 @@ output_file="${test_volume}/${project}_coverage.xml" # In the test coverage report, all file paths are relative to each project # folder. We need to be relative to the repo's root directory. That's why we # append the project folder name to each file path in coverage.xml -sed "s/filename=\"/filename=\"$project\//g" "$coverage_file" > "$output_file" +sed "s/filename=\"/filename=\"$project\//g" "$coverage_file" >"$output_file" # codecov.sh is located at https://codecov.io/bash # we downloaded it for convenience diff --git a/.github/workflows/config.yml b/.github/workflows/config.yml index 1c2dc860f..9bbddd958 100644 --- a/.github/workflows/config.yml +++ b/.github/workflows/config.yml @@ -1,513 +1,552 @@ -name: test-and-deploy +name: refine.bio CI/CD + +env: + CODECOV_TOKEN: ${{ secrets.CODECOV_TOKEN }} + DEPLOY_IP_ADDRESS: ${{ secrets.DEPLOY_IP_ADDRESS }} + DOCKER_BUILDKIT: 1 + DOCKER_ID: ${{ secrets.DOCKER_ID }} + DOCKER_PASSWD: ${{ secrets.DOCKER_PASSWD }} + DOCKER_IO_USERNAME: ${{ secrets.DOCKER_IO_USERNAME }} + DOCKER_IO_PASSWORD: ${{ secrets.DOCKER_IO_PASSWORD }} + INSTANCE_SSH_KEY: ${{ secrets.INSTANCE_SSH_KEY }} on: push jobs: - syntax_test: - # ubuntu-latest is ubuntu 18.04 which has a really outdated version of shellcheck - runs-on: ubuntu-20.04 + # Code quality check jobs. + check_syntax: + name: Check Syntax env: AWS_ACCESS_KEY_ID: ${{ secrets.AWS_ACCESS_KEY_ID }} AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_SECRET_ACCESS_KEY }} + runs-on: ubuntu-latest steps: - uses: actions/checkout@v3 - + - uses: actions/setup-python@v3 - uses: hashicorp/setup-terraform@v2 with: terraform_version: 0.13.5 - - name: Install build & test dependencies - run: | - python -m pip install --upgrade pip - pip install pre-commit - - - name: Init terraform in the infrastructure folder for validation + - name: Init Terraform in the Infrastructure Folder for Validation run: cd infrastructure && TF_VAR_user=ci TF_VAR_stage=dev ./init_terraform.sh - - name: Init terraform in the AMI folder for validation + - name: Init Terraform in the AMI Folder for Validation run: cd ami && terraform init - - name: Run pre-commit hooks on all files - run: PATH="$PATH:$HOME/.local/bin" pre-commit run --all-files --show-diff-on-failure + - uses: pre-commit/action@v3.0.0 - test_affy_agilent: - runs-on: ubuntu-latest + # Test jobs. + test_affymetrix: + name: Test Affymetrix env: IMAGES: migrations affymetrix - DOCKER_BUILDKIT: 1 - CODECOV_TOKEN: ${{ secrets.CODECOV_TOKEN }} + needs: + - test_base + runs-on: ubuntu-latest-m steps: - uses: actions/checkout@v3 - - name: Free up space - uses: jlumbroso/free-disk-space@main - with: - # this might remove tools that are actually needed, - # if set to "true" but frees about 6 GB - tool-cache: false - - - name: Login to Packages Container registry + - name: Login to Packages Container Registry uses: docker/login-action@v2 with: - registry: ghcr.io - username: ${{ github.actor }} - password: ${{ secrets.GITHUB_TOKEN }} + username: ${{ secrets.DOCKER_IO_USERNAME }} + password: ${{ secrets.DOCKER_IO_PASSWORD }} - name: Start Postgres - run: ./scripts/run_postgres.sh + run: scripts/run_postgres.sh - - name: Pause for initialization - run: sleep 30 + - name: Pause for Initialization + run: sleep 15 - - name: Install the database - run: ./scripts/install_db_docker.sh + - name: Install Database + run: scripts/install_db_docker.sh - - name: Update the models - run: | - sudo chmod -R a+wr common - ./scripts/update_models.sh + - name: Update Models + run: scripts/update_models.sh - - name: Run affymetrix tests + - name: Run Affymetrix Tests run: | sudo chmod -R a+rw workers/test_volume .github/scripts/filter_tests.sh -t affymetrix - - name: Run agilent tests - run: | - sudo -E chown -R $USER:$USER workers/test_volume - .github/scripts/filter_tests.sh -t agilent - - # This runs downloader and NO_OP tests. - downloader_no_op_tests: - runs-on: ubuntu-latest + test_agilent: + name: Test Agilent env: - # We have issues when downloading the no_op image, so for now let's just not pull it - # IMAGES: migrations api_local downloaders no_op foreman - IMAGES: migrations api_local downloaders foreman - DOCKER_BUILDKIT: 1 - CODECOV_TOKEN: ${{ secrets.CODECOV_TOKEN }} + IMAGES: migrations affymetrix + needs: + - test_base + runs-on: ubuntu-latest-m steps: - uses: actions/checkout@v3 - - name: Free up space - uses: jlumbroso/free-disk-space@main - with: - # this might remove tools that are actually needed, - # if set to "true" but frees about 6 GB - tool-cache: false - - - name: Login to Packages Container registry + - name: Login to Packages Container Registry uses: docker/login-action@v2 with: - registry: ghcr.io - username: ${{ github.actor }} - password: ${{ secrets.GITHUB_TOKEN }} - - - name: Pull cached docker images - run: ./.github/scripts/pull_docker_images.sh + username: ${{ secrets.DOCKER_IO_USERNAME }} + password: ${{ secrets.DOCKER_IO_PASSWORD }} - name: Start Postgres - run: ./scripts/run_postgres.sh - - - name: Pause for initialization - run: sleep 30 + run: scripts/run_postgres.sh - - name: Install the database - run: ./scripts/install_db_docker.sh + - name: Pause for Initialization + run: sleep 15 - - name: Update the models - run: | - sudo chmod -R a+wr common - ./scripts/update_models.sh + - name: Install Database + run: scripts/install_db_docker.sh - - name: Run downloader tests - run: | - .github/scripts/filter_tests.sh -t downloaders + - name: Update Models + run: scripts/update_models.sh - - name: Run NO_OP tests + - name: Run Agilent Tests run: | sudo -E chown -R $USER:$USER workers/test_volume - .github/scripts/filter_tests.sh -t no_op + .github/scripts/filter_tests.sh -t agilent test_api: - runs-on: ubuntu-latest + name: Test API env: - IMAGES: migrations api_local - DOCKER_BUILDKIT: 1 - CODECOV_TOKEN: ${{ secrets.CODECOV_TOKEN }} + IMAGES: migrations api_base api_local + needs: + - check_syntax + - test_api_base + runs-on: ubuntu-latest steps: - uses: actions/checkout@v3 - - name: Free up space - uses: jlumbroso/free-disk-space@main - with: - # this might remove tools that are actually needed, - # if set to "true" but frees about 6 GB - tool-cache: false - - - name: Login to Packages Container registry + - name: Login to Packages Container Registry uses: docker/login-action@v2 with: - registry: ghcr.io - username: ${{ github.actor }} - password: ${{ secrets.GITHUB_TOKEN }} - - - name: Pull cached docker images - run: ./.github/scripts/pull_docker_images.sh + username: ${{ secrets.DOCKER_IO_USERNAME }} + password: ${{ secrets.DOCKER_IO_PASSWORD }} - name: Start Postgres - run: ./scripts/run_postgres.sh + run: scripts/run_postgres.sh - name: Start Elasticsearch - run: ./scripts/run_es.sh + run: scripts/run_es.sh - - name: Pause for initialization - run: sleep 30 + - name: Pause for Initialization + run: sleep 15 - - name: Install the database - run: ./scripts/install_db_docker.sh + - name: Install Database + run: scripts/install_db_docker.sh - - name: Update the models - run: | - sudo chmod -R a+wr common - ./scripts/update_models.sh + - name: Update Models + run: scripts/update_models.sh - - name: Rebuild the Elasticsearch index - run: ./scripts/rebuild_es_index.sh + - name: Rebuild the Elasticsearch Index + run: scripts/rebuild_es_index.sh - - name: Run API tests + - name: Run API Tests run: | mkdir -p test_volume sudo chmod -R a+rw test_volume - ./api/run_tests.sh + api/run_tests.sh .github/scripts/upload_test_coverage.sh api - - name: Push built docker images - run: ./.github/scripts/push_docker_images.sh - - test_common: + test_api_base: + name: Test API Base + env: + IMAGES: migrations api_base + needs: + - check_syntax runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v3 + + - name: Login to Packages Container Registry + uses: docker/login-action@v2 + with: + username: ${{ secrets.DOCKER_IO_USERNAME }} + password: ${{ secrets.DOCKER_IO_PASSWORD }} + + - name: Start Postgres + run: scripts/run_postgres.sh + + - name: Start Elasticsearch + run: scripts/run_es.sh + + - name: Pause for Initialization + run: sleep 15 + + - name: Install Database + run: scripts/install_db_docker.sh + + - name: Update Models + run: scripts/update_models.sh + + - name: Build the Docker Image + run: scripts/prepare_image.sh -i api_base -s api + + test_base: + name: Test Base env: - IMAGES: migrations common_tests - DOCKER_BUILDKIT: 1 - CODECOV_TOKEN: ${{ secrets.CODECOV_TOKEN }} + IMAGES: base + needs: + - check_syntax + runs-on: ubuntu-latest steps: - uses: actions/checkout@v3 - - name: Login to Packages Container registry + - name: Login to Packages Container Registry + uses: docker/login-action@v2 + with: + username: ${{ secrets.DOCKER_IO_USERNAME }} + password: ${{ secrets.DOCKER_IO_PASSWORD }} + + - name: Build the Docker Image + run: scripts/prepare_image.sh -i base -s common + + - name: Login to Packages Container Registry uses: docker/login-action@v2 with: registry: ghcr.io username: ${{ github.actor }} password: ${{ secrets.GITHUB_TOKEN }} - - name: Pull cached docker images - run: ./.github/scripts/pull_docker_images.sh + - name: Push Built Docker Images + run: .github/scripts/push_docker_images.sh + + test_common: + name: Test Common + env: + IMAGES: migrations common_tests + needs: + - test_base + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v3 + + - name: Login to Packages Container Registry + uses: docker/login-action@v2 + with: + username: ${{ secrets.DOCKER_IO_USERNAME }} + password: ${{ secrets.DOCKER_IO_PASSWORD }} - name: Start Postgres - run: ./scripts/run_postgres.sh + run: scripts/run_postgres.sh - name: Start Elasticsearch - run: ./scripts/run_es.sh + run: scripts/run_es.sh - - name: Pause for initialization - run: sleep 30 + - name: Pause for Initialization + run: sleep 15 - - name: Install the database - run: ./scripts/install_db_docker.sh + - name: Install Database + run: scripts/install_db_docker.sh - - name: Update the models - run: | - sudo chmod -R a+wr common - ./scripts/update_models.sh + - name: Update Models + run: scripts/update_models.sh - - name: Rebuild the Elasticsearch index - run: ./scripts/rebuild_es_index.sh + - name: Rebuild the Elasticsearch Index + run: scripts/rebuild_es_index.sh - - name: Run Common tests + - name: Run Common Tests run: | mkdir -p workers/test_volume sudo chmod -R a+rw workers/test_volume - ./common/run_tests.sh + common/run_tests.sh .github/scripts/upload_test_coverage.sh common - - name: Push built docker images - run: ./.github/scripts/push_docker_images.sh + - name: Login to Packages Container Registry + uses: docker/login-action@v2 + with: + registry: ghcr.io + username: ${{ github.actor }} + password: ${{ secrets.GITHUB_TOKEN }} + + - name: Push Built Docker Images + run: .github/scripts/push_docker_images.sh - test_foreman: - runs-on: ubuntu-latest + test_downloaders_no_op: + name: Test Downloaders and No-Op env: - IMAGES: migrations foreman - DOCKER_BUILDKIT: 1 - CODECOV_TOKEN: ${{ secrets.CODECOV_TOKEN }} + IMAGES: migrations api_base api_local downloaders foreman + needs: + - test_base + runs-on: ubuntu-latest steps: - uses: actions/checkout@v3 - - name: Free up space - uses: jlumbroso/free-disk-space@main + - name: Login to Packages Container Registry + uses: docker/login-action@v2 with: - # this might remove tools that are actually needed, - # if set to "true" but frees about 6 GB - tool-cache: false + username: ${{ secrets.DOCKER_IO_USERNAME }} + password: ${{ secrets.DOCKER_IO_PASSWORD }} - - name: Login to Packages Container registry + - name: Start Postgres + run: scripts/run_postgres.sh + + - name: Pause for Initialization + run: sleep 15 + + - name: Install Database + run: scripts/install_db_docker.sh + + - name: Update Models + run: scripts/update_models.sh + + - name: Run Downloader Tests + run: | + .github/scripts/filter_tests.sh -t downloaders + + - name: Run No-Op Tests + run: | + sudo -E chown -R $USER:$USER workers/test_volume + .github/scripts/filter_tests.sh -t no_op + + test_foreman: + name: Test Foreman + env: + IMAGES: migrations foreman + needs: + - test_base + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v3 + + - name: Login to Packages Container Registry uses: docker/login-action@v2 with: - registry: ghcr.io - username: ${{ github.actor }} - password: ${{ secrets.GITHUB_TOKEN }} - - - name: Pull cached docker images - run: ./.github/scripts/pull_docker_images.sh + username: ${{ secrets.DOCKER_IO_USERNAME }} + password: ${{ secrets.DOCKER_IO_PASSWORD }} - name: Start Postgres - run: ./scripts/run_postgres.sh + run: scripts/run_postgres.sh - name: Start Elasticsearch - run: ./scripts/run_es.sh + run: scripts/run_es.sh - - name: Pause for initialization - run: sleep 30 + - name: Pause for Initialization + run: sleep 15 - - name: Install the database - run: ./scripts/install_db_docker.sh + - name: Install Database + run: scripts/install_db_docker.sh - - name: Update the models - run: | - sudo chmod -R a+wr common - ./scripts/update_models.sh + - name: Update Models + run: scripts/update_models.sh - - name: Rebuild the Elasticsearch index - run: ./scripts/rebuild_es_index.sh + - name: Rebuild the Elasticsearch Index + run: scripts/rebuild_es_index.sh - - name: Run Foreman tests + - name: Run Foreman Tests run: | mkdir -p workers/test_volume sudo chmod -R a+rw workers/test_volume - ./foreman/run_tests.sh --exclude-tag=end_to_end + foreman/run_tests.sh --exclude-tag=end_to_end .github/scripts/upload_test_coverage.sh foreman - - name: Push built docker images - run: ./.github/scripts/push_docker_images.sh + - name: Login to Packages Container Registry + uses: docker/login-action@v2 + with: + registry: ghcr.io + username: ${{ github.actor }} + password: ${{ secrets.GITHUB_TOKEN }} + + - name: Push Built Docker Images + run: .github/scripts/push_docker_images.sh test_illumina: - runs-on: ubuntu-latest + name: Test Illumina env: IMAGES: migrations illumina - DOCKER_BUILDKIT: 1 - CODECOV_TOKEN: ${{ secrets.CODECOV_TOKEN }} + needs: + - test_base + runs-on: ubuntu-latest steps: - uses: actions/checkout@v3 - - name: Login to Packages Container registry + - name: Login to Packages Container Registry uses: docker/login-action@v2 with: - registry: ghcr.io - username: ${{ github.actor }} - password: ${{ secrets.GITHUB_TOKEN }} - - - name: Pull cached docker images - run: ./.github/scripts/pull_docker_images.sh + username: ${{ secrets.DOCKER_IO_USERNAME }} + password: ${{ secrets.DOCKER_IO_PASSWORD }} - name: Start Postgres - run: ./scripts/run_postgres.sh + run: scripts/run_postgres.sh - - name: Pause for initialization - run: sleep 30 + - name: Pause for Initialization + run: sleep 15 - - name: Install the database - run: ./scripts/install_db_docker.sh + - name: Install Database + run: scripts/install_db_docker.sh - - name: Update the models - run: | - sudo chmod -R a+wr common - ./scripts/update_models.sh + - name: Update Models + run: scripts/update_models.sh - - name: Run Illumina tests + - name: Run Illumina Tests run: | mkdir -p workers/test_volume sudo chmod -R a+rw workers/test_volume .github/scripts/filter_tests.sh -t illumina .github/scripts/upload_test_coverage.sh workers - - name: Push built docker images - run: ./.github/scripts/push_docker_images.sh + - name: Login to Packages Container Registry + uses: docker/login-action@v2 + with: + registry: ghcr.io + username: ${{ github.actor }} + password: ${{ secrets.GITHUB_TOKEN }} + + - name: Push Built Docker Images + run: .github/scripts/push_docker_images.sh test_salmon: - runs-on: ubuntu-latest + name: Test Salmon env: IMAGES: migrations salmon - DOCKER_BUILDKIT: 1 - CODECOV_TOKEN: ${{ secrets.CODECOV_TOKEN }} + needs: + - test_base + runs-on: ubuntu-latest steps: - uses: actions/checkout@v3 - - name: Login to Packages Container registry + - name: Login to Packages Container Registry uses: docker/login-action@v2 with: - registry: ghcr.io - username: ${{ github.actor }} - password: ${{ secrets.GITHUB_TOKEN }} - - - name: Pull cached docker images - run: ./.github/scripts/pull_docker_images.sh + username: ${{ secrets.DOCKER_IO_USERNAME }} + password: ${{ secrets.DOCKER_IO_PASSWORD }} - name: Start Postgres - run: ./scripts/run_postgres.sh + run: scripts/run_postgres.sh - - name: Pause for initialization - run: sleep 30 + - name: Pause for Initialization + run: sleep 15 - - name: Install the database - run: ./scripts/install_db_docker.sh + - name: Install Database + run: scripts/install_db_docker.sh - - name: Update the models - run: | - sudo chmod -R a+wr common - ./scripts/update_models.sh + - name: Update Models + run: scripts/update_models.sh - - name: Run Salmon tests + - name: Run Salmon Tests run: | sudo chmod -R a+rw workers/test_volume .github/scripts/filter_tests.sh -t salmon .github/scripts/upload_test_coverage.sh workers - - name: Push built docker images - run: ./.github/scripts/push_docker_images.sh + - name: Login to Packages Container Registry + uses: docker/login-action@v2 + with: + registry: ghcr.io + username: ${{ github.actor }} + password: ${{ secrets.GITHUB_TOKEN }} + + - name: Push Built Docker Images + run: .github/scripts/push_docker_images.sh test_smasher: - runs-on: ubuntu-latest + name: Test Smasher env: IMAGES: migrations smasher - DOCKER_BUILDKIT: 1 - CODECOV_TOKEN: ${{ secrets.CODECOV_TOKEN }} + needs: + - test_base + runs-on: ubuntu-latest steps: - uses: actions/checkout@v3 - - name: Free up space - uses: jlumbroso/free-disk-space@main - with: - # this might remove tools that are actually needed, - # if set to "true" but frees about 6 GB - tool-cache: false - - - name: Login to Packages Container registry + - name: Login to Packages Container Registry uses: docker/login-action@v2 with: - registry: ghcr.io - username: ${{ github.actor }} - password: ${{ secrets.GITHUB_TOKEN }} - - - name: Pull cached docker images - run: ./.github/scripts/pull_docker_images.sh + username: ${{ secrets.DOCKER_IO_USERNAME }} + password: ${{ secrets.DOCKER_IO_PASSWORD }} - name: Start Postgres - run: ./scripts/run_postgres.sh + run: scripts/run_postgres.sh - - name: Pause for initialization - run: sleep 30 + - name: Pause for Initialization + run: sleep 15 - - name: Install the database - run: ./scripts/install_db_docker.sh + - name: Install Database + run: scripts/install_db_docker.sh - - name: Update the models - run: | - sudo chmod -R a+wr common - ./scripts/update_models.sh + - name: Update Models + run: scripts/update_models.sh - - name: Run smasher tests + - name: Run Smasher Tests run: | mkdir -p workers/test_volume sudo chmod -R a+rw workers/test_volume .github/scripts/filter_tests.sh -t smasher .github/scripts/upload_test_coverage.sh workers - - name: Run janitor tests + - name: Run Janitor Tests run: | sudo -E chown -R $USER:$USER workers/test_volume .github/scripts/filter_tests.sh -t janitor .github/scripts/upload_test_coverage.sh workers - - name: Run compendia tests + - name: Run Compendia Tests run: | sudo -E chown -R $USER:$USER workers/test_volume .github/scripts/filter_tests.sh -t compendia .github/scripts/upload_test_coverage.sh workers - - name: Run QN tests + - name: Run QN Tests run: | sudo -E chown -R $USER:$USER workers/test_volume .github/scripts/filter_tests.sh -t qn .github/scripts/upload_test_coverage.sh workers - - name: Push built docker images - run: ./.github/scripts/push_docker_images.sh + - name: Login to Packages Container Registry + uses: docker/login-action@v2 + with: + registry: ghcr.io + username: ${{ github.actor }} + password: ${{ secrets.GITHUB_TOKEN }} + + - name: Push Built Docker Images + run: .github/scripts/push_docker_images.sh test_transcriptome: - runs-on: ubuntu-latest + name: Test Transcriptome env: - IMAGES: migrations transcriptome DOCKER_BUILDKIT: 1 - CODECOV_TOKEN: ${{ secrets.CODECOV_TOKEN }} + IMAGES: migrations transcriptome + needs: + - test_base + runs-on: ubuntu-latest steps: - uses: actions/checkout@v3 - - name: Login to Packages Container registry + - name: Login to Packages Container Registry uses: docker/login-action@v2 with: - registry: ghcr.io - username: ${{ github.actor }} - password: ${{ secrets.GITHUB_TOKEN }} - - - name: Pull cached docker images - run: ./.github/scripts/pull_docker_images.sh + username: ${{ secrets.DOCKER_IO_USERNAME }} + password: ${{ secrets.DOCKER_IO_PASSWORD }} - name: Start Postgres - run: ./scripts/run_postgres.sh + run: scripts/run_postgres.sh - - name: Pause for initialization - run: sleep 30 + - name: Pause for Initialization + run: sleep 15 - - name: Install the database - run: ./scripts/install_db_docker.sh + - name: Install Database + run: scripts/install_db_docker.sh - - name: Update the models - run: | - sudo chmod -R a+wr common - ./scripts/update_models.sh + - name: Update Models + run: scripts/update_models.sh - - name: Run Transcriptome tests + - name: Run Transcriptome Tests run: | mkdir -p workers/test_volume sudo chmod -R a+rw workers/test_volume .github/scripts/filter_tests.sh -t transcriptome .github/scripts/upload_test_coverage.sh workers - - name: Push built docker images - run: ./.github/scripts/push_docker_images.sh - - determine_branch: - # As far as I can tell, this is the only way to use the output of - # a script in a github conditional. - if: startsWith(github.ref, 'refs/tags/v') - runs-on: ubuntu-latest - outputs: - branch: ${{ steps.set_branch.outputs.branch }} - steps: - - uses: actions/checkout@v3 + - name: Login to Packages Container Registry + uses: docker/login-action@v2 with: - fetch-depth: 0 + registry: ghcr.io + username: ${{ github.actor }} + password: ${{ secrets.GITHUB_TOKEN }} - - id: set_branch - name: Set the $CI_TAG environment variable - run: | - source scripts/common.sh - echo "branch=$(get_master_or_dev ${GITHUB_REF#refs/tags/})" >> $GITHUB_OUTPUT + - name: Push Built Docker Images + run: .github/scripts/push_docker_images.sh + # Deploy jobs. deploy: - if: startsWith(github.ref, 'refs/tags/v') && ! endsWith(github.ref, '-hotfix') - runs-on: ubuntu-latest - timeout-minutes: 1440 + name: Deploy env: DEPLOY_IP_ADDRESS: ${{ secrets.DEPLOY_IP_ADDRESS }} DOCKER_ID: ${{ secrets.DOCKER_ID }} @@ -526,31 +565,33 @@ jobs: PROD_DJANGO_SECRET_KEY: ${{ secrets.PROD_DJANGO_SECRET_KEY }} PROD_RAVEN_DSN: ${{ secrets.PROD_RAVEN_DSN }} PROD_RAVEN_DSN_API: ${{ secrets.PROD_RAVEN_DSN_API }} + if: startsWith(github.ref, 'refs/tags/v') && ! endsWith(github.ref, '-hotfix') needs: - determine_branch - - downloader_no_op_tests - - syntax_test - - test_affy_agilent + - test_affymetrix + - test_agilent - test_api - test_common + - test_downloaders_no_op - test_foreman - test_illumina - test_salmon - test_smasher - test_transcriptome + runs-on: ubuntu-latest steps: - uses: actions/checkout@v3 with: fetch-depth: 0 - - name: Set the $MASTER_OR_DEV and $CI_TAG environment variables + - name: Set the $MASTER_OR_DEV and $CI_TAG Environment Variables run: | source scripts/common.sh echo "MASTER_OR_DEV=$(get_master_or_dev ${GITHUB_REF#refs/tags/})" >> $GITHUB_ENV # Remove /ref/tags/ from the beginning of the tag name echo "CI_TAG=${GITHUB_REF#refs/tags/}" >> $GITHUB_ENV - - name: Set staging specific environment variables + - name: Set Staging Specific Environment Variables if: ${{needs.determine_branch.outputs.branch == 'dev'}} run: | echo "DATABASE_PASSWORD=${STAGING_DATABASE_PASSWORD}" >> $GITHUB_ENV @@ -560,7 +601,7 @@ jobs: # Staging doesn't notify the engagementbot, so overwrite this to be blank. echo "ENGAGEMENTBOT_WEBHOOK=" >> $GITHUB_ENV - - name: Set prod specific environment variables + - name: Set Production Specific Environment Variables if: ${{needs.determine_branch.outputs.branch == 'master'}} run: | echo "DATABASE_PASSWORD=${PROD_DATABASE_PASSWORD}" >> $GITHUB_ENV @@ -570,15 +611,14 @@ jobs: echo "ENGAGEMENTBOT_WEBHOOK=${ENGAGEMENTBOT_WEBHOOK}" >> $GITHUB_ENV - name: Deploy - run: ./.github/scripts/remote_deploy.sh + run: .github/scripts/remote_deploy.sh - - name: Cleanup deploy - run: ./.github/scripts/post_deploy_cleanup.sh - - hotfix_deploy: - if: startsWith(github.ref, 'refs/tags/v') && endsWith(github.ref, '-hotfix') - runs-on: ubuntu-latest + - name: Cleanup Deploy + run: .github/scripts/post_deploy_cleanup.sh timeout-minutes: 1440 + + deploy_hotfix: + name: Deploy Hotfix env: DEPLOY_IP_ADDRESS: ${{ secrets.DEPLOY_IP_ADDRESS }} DOCKER_ID: ${{ secrets.DOCKER_ID }} @@ -597,21 +637,23 @@ jobs: PROD_DJANGO_SECRET_KEY: ${{ secrets.PROD_DJANGO_SECRET_KEY }} PROD_RAVEN_DSN: ${{ secrets.PROD_RAVEN_DSN }} PROD_RAVEN_DSN_API: ${{ secrets.PROD_RAVEN_DSN_API }} + if: startsWith(github.ref, 'refs/tags/v') && endsWith(github.ref, '-hotfix') needs: - determine_branch + runs-on: ubuntu-latest steps: - uses: actions/checkout@v3 with: fetch-depth: 0 - - name: Set the $MASTER_OR_DEV and $CI_TAG environment variables + - name: Set the $MASTER_OR_DEV and $CI_TAG Environment Variables run: | source scripts/common.sh echo "MASTER_OR_DEV=$(get_master_or_dev ${GITHUB_REF#refs/tags/})" >> $GITHUB_ENV # Remove /ref/tags/ from the beginning of the tag name echo "CI_TAG=${GITHUB_REF#refs/tags/}" >> $GITHUB_ENV - - name: Set staging specific environment variables + - name: Set Staging Specific Environment Variables if: ${{needs.determine_branch.outputs.branch == 'dev'}} run: | echo "DATABASE_PASSWORD=${STAGING_DATABASE_PASSWORD}" >> $GITHUB_ENV @@ -621,7 +663,7 @@ jobs: # Staging doesn't notify the engagementbot, so overwrite this to be blank. echo "ENGAGEMENTBOT_WEBHOOK=" >> $GITHUB_ENV - - name: Set prod specific environment variables + - name: Set Production Specific Environment Variables if: ${{needs.determine_branch.outputs.branch == 'master'}} run: | echo "DATABASE_PASSWORD=${PROD_DATABASE_PASSWORD}" >> $GITHUB_ENV @@ -631,7 +673,27 @@ jobs: echo "ENGAGEMENTBOT_WEBHOOK=${ENGAGEMENTBOT_WEBHOOK}" >> $GITHUB_ENV - name: Deploy - run: ./.github/scripts/remote_deploy.sh + run: .github/scripts/remote_deploy.sh + + - name: Cleanup Deploy + run: .github/scripts/post_deploy_cleanup.sh + timeout-minutes: 1440 + + determine_branch: + name: Determene Branch + # As far as I can tell, this is the only way to use the output of + # a script in a github conditional. + if: startsWith(github.ref, 'refs/tags/v') + runs-on: ubuntu-latest + outputs: + branch: ${{ steps.set_branch.outputs.branch }} + steps: + - uses: actions/checkout@v3 + with: + fetch-depth: 0 - - name: Cleanup deploy - run: ./.github/scripts/post_deploy_cleanup.sh + - id: set_branch + name: Set the $CI_TAG Environment Variable + run: | + source scripts/common.sh + echo "branch=$(get_master_or_dev ${GITHUB_REF#refs/tags/})" >> $GITHUB_OUTPUT diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index b651ce24a..381082dd2 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -1,7 +1,6 @@ --- exclude: '^(.*\.pem|.*\.tfvars)$' - repos: - repo: https://github.com/pre-commit/pre-commit-hooks rev: v2.4.0 @@ -33,18 +32,10 @@ repos: - id: shell-lint # We didn't write codecov.sh, we just get it from their servers # The other one is a template. - exclude: "codecov.sh|infrastructure/workers-configuration/workers-instance-user-data.tpl.sh" + exclude: 'codecov.sh|infrastructure/workers-configuration/workers-instance-user-data.tpl.sh' args: - # SC2154: Exclude warnings about variables being used without being - # assigned, because we sometimes use lowercase environment - # variables which shellcheck does not recognize. - # SC1090,SC1091: Don't try to follow sourced files + # SC2154: Exclude warnings about variables being used without being + # assigned, because we sometimes use lowercase environment + # variables which shellcheck does not recognize. + # SC1090,SC1091: Don't try to follow sourced files - --exclude=SC2154,SC1090,SC1091 - - - repo: https://github.com/antonbabenko/pre-commit-terraform - rev: v1.45.0 - hooks: - - id: terraform_validate - # It's a small file that gets copied up temporarily during deploys. - # Because it's not where it gets run it seems to be in a module when it's not. - exclude: "infrastructure/deploy/ci_ingress.tf" diff --git a/README.md b/README.md index 35505fbfb..ec2ac8c4a 100644 --- a/README.md +++ b/README.md @@ -19,46 +19,49 @@ Refine.bio currently has four sub-projects contained within this repo: ## Table of Contents -- [Development](#development) - - [Git Workflow](#git-workflow) - - [Installation](#installation) - - [Automatic](#automatic) - - [Linux (Manual)](#linux-manual) - - [Mac (Manual)](#mac-manual) - - [Virtual Environment](#virtual-environment) - - [Services](#services) - - [Postgres](#postgres) - - [Common Dependecies](#common-dependecies) - - [ElasticSearch](#elasticsearch) - - [Testing](#testing) - - [API](#api) - - [Common](#common) - - [Foreman](#foreman) - - [Workers](#workers) - - [Style](#style) - - [Gotchas](#gotchas) - - [R](#r) -- [Running Locally](#running-locally) - - [API](#api-1) - - [Surveyor Jobs](#surveyor-jobs) - - [Sequence Read Archive](#sequence-read-archive) - - [Ensembl Transcriptome Indices](#ensembl-transcriptome-indices) - - [Downloader Jobs](#downloader-jobs) - - [Processor Jobs](#processor-jobs) - - [Creating Quantile Normalization Reference Targets](#creating-quantile-normalization-reference-targets) - - [Creating Compendia](#creating-compendia) - - [Running Tximport Early](#running-tximport-early) - - [Development Helpers](#development-helpers) -- [Cloud Deployment](#cloud-deployment) - - [Docker Images](#docker-images) - - [Terraform](#terraform) - - [Running Jobs](#running-jobs) - - [Log Consumption](#log-consumption) - - [Dumping and Restoring Database Backups](#dumping-and-restoring-database-backups) - - [Tearing Down](#tearing-down) -- [Support](#support) -- [Meta-README](#meta-readme) -- [License](#license) +- [Refine.bio ](#refinebio--) + - [Table of Contents](#table-of-contents) + - [Development](#development) + - [Git Workflow](#git-workflow) + - [Installation](#installation) + - [Automatic](#automatic) + - [Linux (Manual)](#linux-manual) + - [Mac (Manual)](#mac-manual) + - [Virtual Environment](#virtual-environment) + - [Services](#services) + - [Postgres](#postgres) + - [Common Dependecies](#common-dependecies) + - [ElasticSearch](#elasticsearch) + - [Testing](#testing) + - [API](#api) + - [Common](#common) + - [Foreman](#foreman) + - [Workers](#workers) + - [Style](#style) + - [Gotchas](#gotchas) + - [R](#r) + - [Running Locally](#running-locally) + - [API](#api-1) + - [Surveyor Jobs](#surveyor-jobs) + - [Sequence Read Archive](#sequence-read-archive) + - [Ensembl Transcriptome Indices](#ensembl-transcriptome-indices) + - [Downloader Jobs](#downloader-jobs) + - [Processor Jobs](#processor-jobs) + - [Creating Quantile Normalization Reference Targets](#creating-quantile-normalization-reference-targets) + - [Creating Compendia](#creating-compendia) + - [Running Tximport Early](#running-tximport-early) + - [Development Helpers](#development-helpers) + - [Cloud Deployment](#cloud-deployment) + - [Docker Images](#docker-images) + - [Terraform](#terraform) + - [AWS Batch](#aws-batch) + - [Running Jobs](#running-jobs) + - [Log Consumption](#log-consumption) + - [Dumping and Restoring Database Backups](#dumping-and-restoring-database-backups) + - [Tearing Down](#tearing-down) + - [Support](#support) + - [Meta-README](#meta-readme) + - [License](#license) @@ -630,17 +633,17 @@ Please try to keep the `dev` and `master` versions in sync for major and minor v Refine.bio uses a number of different Docker images to run different pieces of the system. By default, refine.bio will pull images from the Dockerhub repo `ccdlstaging`. -If you would like to use images you have built and pushed to Dockerhub yourself you can pass the `-d` option to the `deploy.sh` script. +If you would like to use images you have built and pushed to Dockerhub yourself you can pass the `-r` option to the `deploy.sh` script. -To make building and pushing your own images easier, the `scripts/update_my_docker_images.sh` has been provided. -The `-d` option will allow you to specify which repo you'd like to push to. +To make building and pushing your own images easier, the `scripts/update_docker_images.sh` has been provided. +The `-r` option will allow you to specify which repo you'd like to push to. If the Dockerhub repo requires you to be logged in, you should do so before running the script using `docker login`. The -v option allows you to specify the version, which will both end up on the Docker images you're building as the SYSTEM_VERSION environment variable and also will be the docker tag for the image. -`scripts/update_my_docker_images.sh` will not build the dr_affymetrix image, because this image requires a lot of resources and time to build. -It can instead be built with `./scripts/prepare_image.sh -i affymetrix -d `. +`scripts/update_docker_images.sh` will not build the dr_affymetrix image, because this image requires a lot of resources and time to build. +It can instead be built with `./scripts/prepare_image.sh -i affymetrix -r `. WARNING: The affymetrix image installs a lot of data-as-R-packages and needs a lot of disk space to build the image. -It's not recommended to build the image with less than 60GB of free space on the disk that Docker runs on. +It's not recommended to build the image with less than 75GB of free space on the disk that Docker runs on. ### Terraform @@ -667,7 +670,7 @@ The correct way to deploy to the cloud is by running the `deploy.sh` script. Thi configuration steps, such as setting environment variables, setting up Batch job specifications, and performing database migrations. It can be used from the `infrastructure` directory like so: ```bash -./deploy.sh -u myusername -e dev -r us-east-1 -v v1.0.0 -d my-dockerhub-repo +./deploy.sh -u myusername -e dev -d us-east-1 -v v1.0.0 -r my-dockerhub-repo ``` This will spin up the whole system. It will usually take about 15 minutes, most of which is spent waiting for the Postgres instance to start. @@ -811,7 +814,7 @@ This can take a long time (>30 minutes)! ### Tearing Down -A stack that has been spun up via `deploy.sh -u myusername -e dev` can be taken down with `destroy_terraform.sh -u myusername -e dev -r us-east-1`. +A stack that has been spun up via `deploy.sh -u myusername -e dev` can be taken down with `destroy_terraform.sh -u myusername -e dev -d us-east-1`. The same username and environment must be passed into `destroy_terraform.sh` as were used to run `deploy.sh` either via the -e and -u options or by specifying `TF_VAR_stage` or `TF_VAR_user` so that the script knows which to take down. Note that this will prompt you for confirmation before actually destroying all of your cloud resources. diff --git a/api/dockerfiles/Dockerfile.api_base b/api/dockerfiles/Dockerfile.api_base new file mode 100644 index 000000000..d1d751104 --- /dev/null +++ b/api/dockerfiles/Dockerfile.api_base @@ -0,0 +1,29 @@ +FROM python:3.8.5-buster + +# Fail in case of an error at any stage in the pipe. +SHELL ["/bin/bash", "-o", "pipefail", "-c"] + +# Install gcc and libpq-dev for psycopg2. +RUN apt-get update -qq && \ + apt-get install -y \ + gcc \ + libpq-dev && \ + groupadd user && \ + useradd --create-home --home-dir /home/user -g user user + +WORKDIR /home/user + +COPY api/requirements.txt . +RUN pip install --upgrade pip && \ + pip install --ignore-installed --no-cache-dir -r requirements.txt + +COPY common/dist/data-refinery-common-* common/ +RUN pip install --ignore-installed \ + common/$(ls common -1 | sort --version-sort | tail -1) + +COPY api/ . +COPY config/ config/ + +ENV SYSTEM_VERSION=$SYSTEM_VERSION + +ENTRYPOINT [] diff --git a/api/dockerfiles/Dockerfile.api_local b/api/dockerfiles/Dockerfile.api_local index 2018cd59b..38cd1e5b7 100644 --- a/api/dockerfiles/Dockerfile.api_local +++ b/api/dockerfiles/Dockerfile.api_local @@ -1,35 +1,10 @@ -FROM python:3.8.5-slim-buster +ARG DOCKERHUB_REPO +ARG SYSTEM_VERSION +FROM $DOCKERHUB_REPO/dr_api_base:$SYSTEM_VERSION # Fail in case of an error at any stage in the pipe. SHELL ["/bin/bash", "-o", "pipefail", "-c"] -# Install gcc and libpq-dev for psycopg2. -RUN apt-get update -qq && \ - apt-get install -y \ - gcc \ - libpq-dev - -RUN groupadd user && \ - useradd --create-home --home-dir /home/user -g user user -WORKDIR /home/user - -COPY api/requirements.txt . -RUN pip install --upgrade pip && \ - pip install --ignore-installed -r requirements.txt && \ - rm -r /root/.cache - -# Get the latest version from the dist directory. -COPY common/dist/data-refinery-common-* common/ -RUN pip install --ignore-installed \ - common/$(ls common -1 | sort --version-sort | tail -1) - -COPY api/ . -COPY config/ config/ -COPY setup.cfg . - -ARG SYSTEM_VERSION -ENV SYSTEM_VERSION=$SYSTEM_VERSION - USER user EXPOSE 8000 diff --git a/api/dockerfiles/Dockerfile.api_production b/api/dockerfiles/Dockerfile.api_production index 37184be03..fccc67d0f 100644 --- a/api/dockerfiles/Dockerfile.api_production +++ b/api/dockerfiles/Dockerfile.api_production @@ -1,39 +1,14 @@ -FROM python:3.8.5-buster +ARG DOCKERHUB_REPO +ARG SYSTEM_VERSION +FROM $DOCKERHUB_REPO/dr_api_base:$SYSTEM_VERSION # Fail in case of an error at any stage in the pipe. SHELL ["/bin/bash", "-o", "pipefail", "-c"] -# Install gcc and libpq-dev for psycopg2. -RUN apt-get update -qq && \ - apt-get install -y \ - gcc \ - libpq-dev - -RUN groupadd user && \ - useradd --create-home --home-dir /home/user -g user user -WORKDIR /home/user - -COPY api/requirements.txt . -RUN pip install --upgrade pip && \ - pip install --ignore-installed -r requirements.txt && \ - pip install --ignore-installed uwsgi && \ - rm -r /root/.cache - -# Get the latest version from the dist directory. -COPY common/dist/data-refinery-common-* common/ -RUN pip install --ignore-installed \ - common/$(ls common -1 | sort --version-sort | tail -1) - -COPY api/ . -COPY config/ config/ - RUN chmod +x /home/user/collect_and_run_uwsgi.sh && \ mkdir -p /tmp/www/static && \ chown user /tmp/www/static -ARG SYSTEM_VERSION -ENV SYSTEM_VERSION=$SYSTEM_VERSION - USER user # We collect Django's static files and expose them as a volume so that Nginx diff --git a/api/run_tests.sh b/api/run_tests.sh index f81309fbd..f4353c679 100755 --- a/api/run_tests.sh +++ b/api/run_tests.sh @@ -4,27 +4,31 @@ # This script should always run as if it were being called from # the directory it lives in. -script_directory="$(cd "$(dirname "$0")" || exit; pwd)" +script_directory="$( + cd "$(dirname "$0")" || exit + pwd +)" cd "$script_directory" || exit -# However in order to give Docker access to all the code we have to -# move up a level +# However, in order to give Docker access to all the code we have to +# move up a level. cd .. -# Ensure that postgres is running +# Ensure that Postgres is running. if ! [ "$(docker ps --filter name=drdb -q)" ]; then echo "You must start Postgres first with:" >&2 echo "./scripts/run_postgres.sh" >&2 exit 1 fi -# Ensure that elasticsearch is running + +# Ensure that ElasticSearch is running. if ! [ "$(docker ps --filter name=dres -q)" ]; then echo "You must start elasticsearchfirst with:" >&2 echo "./scripts/run_es.sh" >&2 exit 1 fi -project_root=$(pwd) # "cd .." called above +project_root=$(pwd) # "cd .." called above. volume_directory="$project_root/test_volume" if [ ! -d "$volume_directory" ]; then mkdir "$volume_directory" @@ -34,18 +38,23 @@ chmod -R a+rwX "$volume_directory" ./scripts/prepare_image.sh -i api_local -s api . ./scripts/common.sh + DB_HOST_IP=$(get_docker_db_ip_address) ES_HOST_IP=$(get_docker_es_ip_address) -# Only run interactively if we are on a TTY +# Only run interactively if we are on a TTY. if [ -t 1 ]; then - INTERACTIVE="-i" + INTERACTIVE="--interactive" fi -docker run -t $INTERACTIVE \ - --add-host=database:"$DB_HOST_IP" \ - --add-host=elasticsearch:"$ES_HOST_IP" \ - --env-file api/environments/test \ - --platform linux/amd64 \ - --volume "$volume_directory":/home/user/data_store \ - ccdlstaging/dr_api_local bash -c "$(run_tests_with_coverage "$@")" +# shellcheck disable=SC2086 +docker run \ + --add-host=database:"$DB_HOST_IP" \ + --add-host=elasticsearch:"$ES_HOST_IP" \ + --env-file api/environments/test \ + --platform linux/amd64 \ + --tty \ + --volume "$volume_directory":/home/user/data_store \ + $INTERACTIVE \ + "$DOCKERHUB_REPO/dr_api_local" \ + bash -c "$(run_tests_with_coverage "$@")" diff --git a/api/serve.sh b/api/serve.sh index 4bae59fe9..1cd32a622 100755 --- a/api/serve.sh +++ b/api/serve.sh @@ -4,22 +4,29 @@ # This script should always run as if it were being called from # the directory it lives in. -script_directory="$(cd "$(dirname "$0")" || exit; pwd)" +script_directory="$( + cd "$(dirname "$0")" || exit + pwd +)" cd "$script_directory" || exit -# However in order to give Docker access to all the code we have to -# move up a level +# However, in order to give Docker access to all the code we have to +# move up a level. cd .. ./scripts/prepare_image.sh -i api_local -s api . ./scripts/common.sh + DB_HOST_IP=$(get_docker_db_ip_address) ES_HOST_IP=$(get_docker_es_ip_address) docker run \ - --add-host=database:"$DB_HOST_IP" \ - --add-host=elasticsearch:"$ES_HOST_IP" \ - --env-file api/environments/local \ - -p 8000:8000 \ - -it ccdlstaging/dr_api_local python3 manage.py runserver 0.0.0.0:8000 "$@" + --add-host=database:"$DB_HOST_IP" \ + --add-host=elasticsearch:"$ES_HOST_IP" \ + --env-file api/environments/local \ + --interactive \ + --publish 8000:8000 \ + --tty \ + "$DOCKERHUB_REPO/dr_api_local" \ + python3 manage.py runserver 0.0.0.0:8000 "$@" diff --git a/api/serve_production.sh b/api/serve_production.sh index 530b237ca..c23382778 100755 --- a/api/serve_production.sh +++ b/api/serve_production.sh @@ -4,24 +4,31 @@ # This script should always run as if it were being called from # the directory it lives in. -script_directory="$(cd "$(dirname "$0")" || exit; pwd)" +script_directory="$( + cd "$(dirname "$0")" || exit + pwd +)" cd "$script_directory" || exit -# However in order to give Docker access to all the code we have to -# move up a level +# However, in order to give Docker access to all the code we have to +# move up a level. cd .. ./scripts/prepare_image.sh -i api_production -s api . ./scripts/common.sh -DB_HOST_IP=$(get_docker_db_ip_address) +DB_HOST_IP=$(get_docker_db_ip_address) STATIC_VOLUMES=/tmp/volumes_static docker run \ - --add-host=database:"$DB_HOST_IP" \ - --env-file api/environments/local \ - --link drdb:postgres \ - -v "$STATIC_VOLUMES":/tmp/www/static \ - -p 8081:8081 \ - -it -d ccdlstaging/dr_api_production /bin/sh -c "/home/user/collect_and_run_uwsgi.sh" + --add-host=database:"$DB_HOST_IP" \ + --detach \ + --env-file api/environments/local \ + --interactive \ + --link drdb:postgres \ + --publish 8081:8081 \ + --tty \ + --volume "$STATIC_VOLUMES":/tmp/www/static \ + "$DOCKERHUB_REPO/dr_api_production" \ + /bin/sh -c "/home/user/collect_and_run_uwsgi.sh" diff --git a/common/R/renv_load.R b/common/R/renv_load.R index abaf13935..dd5caa080 100644 --- a/common/R/renv_load.R +++ b/common/R/renv_load.R @@ -1,13 +1,16 @@ options(warn = 2) options(repos = structure(c( - Bioconductor = "https://bioconductor.org/packages/3.11/bioc/", - BioconductorAnnotation = "https://bioconductor.org/packages/3.11/data/annotation/", - BioconductorExperiment = "https://bioconductor.org/packages/3.11/data/experiment", - CRAN = "https://cloud.r-project.org/" + Bioconductor = "https://bioconductor.org/packages/3.6/bioc", + BioconductorAnnotation = "https://bioconductor.org/packages/3.6/data/annotation", + BioconductorExperiment = "https://bioconductor.org/packages/3.6/data/experiment", + CRAN = "https://cloud.r-project.org" ))) options(Ncpus = parallel::detectCores()) +options(renv.r.version = "3.4.4") +options(renv.settings.use.cache = FALSE) -install.packages("renv") +install.packages("BiocInstaller") +install.packages("https://cran.r-project.org/src/contrib/Archive/renv/renv_0.16.0.tar.gz") renv::consent(provided = TRUE) -renv::restore(prompt = FALSE) +renv::restore(prompt = FALSE, rebuild = TRUE) diff --git a/workers/R/renv_save.R b/common/R/renv_save.R similarity index 100% rename from workers/R/renv_save.R rename to common/R/renv_save.R diff --git a/common/dockerfiles/Dockerfile.common_tests b/common/dockerfiles/Dockerfile.common_tests index 2a31940f4..26b2be946 100644 --- a/common/dockerfiles/Dockerfile.common_tests +++ b/common/dockerfiles/Dockerfile.common_tests @@ -1,4 +1,6 @@ -FROM ccdlstaging/dr_base:latest +ARG DOCKERHUB_REPO +ARG SYSTEM_VERSION +FROM $DOCKERHUB_REPO/dr_base:$SYSTEM_VERSION # Fail in case of an error at any stage in the pipe. SHELL ["/bin/bash", "-o", "pipefail", "-c"] @@ -15,7 +17,6 @@ RUN pip3 install --ignore-installed --no-cache-dir -r requirements.txt COPY common/ . COPY config config -ARG SYSTEM_VERSION ENV SYSTEM_VERSION=$SYSTEM_VERSION USER user diff --git a/common/dockerfiles/Dockerfile.migrations b/common/dockerfiles/Dockerfile.migrations index 00e704fa2..da2405265 100644 --- a/common/dockerfiles/Dockerfile.migrations +++ b/common/dockerfiles/Dockerfile.migrations @@ -1,4 +1,6 @@ -FROM ccdlstaging/dr_base:latest +ARG DOCKERHUB_REPO +ARG SYSTEM_VERSION +FROM $DOCKERHUB_REPO/dr_base:$SYSTEM_VERSION # Fail in case of an error at any stage in the pipe. SHELL ["/bin/bash", "-o", "pipefail", "-c"] @@ -11,7 +13,6 @@ RUN pip install --ignore-installed --no-cache-dir -r requirements.txt COPY common/ . COPY config config -ARG SYSTEM_VERSION ENV SYSTEM_VERSION=$SYSTEM_VERSION USER user diff --git a/common/run_tests.sh b/common/run_tests.sh index 51c564270..41eb8e3d1 100755 --- a/common/run_tests.sh +++ b/common/run_tests.sh @@ -1,24 +1,27 @@ #!/bin/sh -e -# script for executing Django PyUnit Tests within a Docker container. +# Script for executing Django PyUnit tests within a Docker container. # This script should always run as if it were being called from # the directory it lives in. -script_directory="$(cd "$(dirname "$0")" || exit; pwd)" +script_directory="$( + cd "$(dirname "$0")" || exit + pwd +)" cd "$script_directory" || exit -# However in order to give Docker access to all the code we have to -# move up a level +# However, in order to give Docker access to all the code we have to +# move up a level. cd .. -# Ensure that postgres is running +# Ensure that Postgres is running. if ! [ "$(docker ps --filter name=drdb -q)" ]; then echo "You must start Postgres first with:" >&2 echo "./scripts/run_postgres.sh" >&2 exit 1 fi -project_root=$(pwd) # "cd .." called above +project_root=$(pwd) # "cd .." called above. volume_directory="$project_root/test_volume" if [ ! -d "$volume_directory" ]; then mkdir "$volume_directory" @@ -28,18 +31,23 @@ chmod -R a+rwX "$volume_directory" ./scripts/prepare_image.sh -i common_tests -s common . ./scripts/common.sh + DB_HOST_IP=$(get_docker_db_ip_address) ES_HOST_IP=$(get_docker_es_ip_address) -# Only run interactively if we are on a TTY +# Only run interactively if we are on a TTY. if [ -t 1 ]; then - INTERACTIVE="-i" + INTERACTIVE="--interactive" fi -docker run -t $INTERACTIVE \ - --add-host=database:"$DB_HOST_IP" \ - --add-host=elasticsearch:"$ES_HOST_IP" \ - --env-file common/environments/test \ - --platform linux/amd64 \ - --volume "$volume_directory":/home/user/data_store \ - ccdlstaging/dr_common_tests bash -c "$(run_tests_with_coverage "$@")" --parallel +# shellcheck disable=SC2086 +docker run \ + --add-host=database:"$DB_HOST_IP" \ + --add-host=elasticsearch:"$ES_HOST_IP" \ + --env-file common/environments/test \ + --platform linux/amd64 \ + --tty \ + --volume "$volume_directory":/home/user/data_store \ + $INTERACTIVE \ + "$DOCKERHUB_REPO/dr_common_tests" \ + bash -c "$(run_tests_with_coverage "$@")" --parallel diff --git a/common/setup.py b/common/setup.py index 78339b2e1..4234b9ab5 100644 --- a/common/setup.py +++ b/common/setup.py @@ -1,4 +1,6 @@ import os +import re +from datetime import datetime from setuptools import find_packages, setup @@ -11,11 +13,21 @@ version_string = version_file.read().strip().split("-")[0] except OSError: print( - "Cannot read version to determine System Version." - " Please create a file common/version containing an up to date System Version." + "Cannot read version file to determine system version. " + "Please create a file common/version containing an up to date system version." ) raise +version_re = re.compile( + r"^([1-9][0-9]*!)?(0|[1-9][0-9]*)" + "(\.(0|[1-9][0-9]*))*((a|b|rc)(0|[1-9][0-9]*))" + "?(\.post(0|[1-9][0-9]*))?(\.dev(0|[1-9][0-9]*))?$" +) +if not version_re.match(version_string): + # Generate version based on the datetime.now(): e.g., 2023.5.17.dev1684352560. + now = datetime.now() + version_string = f"{now.strftime('%Y.%-m.%-d.dev')}{int(datetime.timestamp(now))}" + setup( name="data-refinery-common", version=version_string, diff --git a/foreman/dockerfiles/Dockerfile.foreman b/foreman/dockerfiles/Dockerfile.foreman index 94e5c185a..89e3611f0 100644 --- a/foreman/dockerfiles/Dockerfile.foreman +++ b/foreman/dockerfiles/Dockerfile.foreman @@ -1,16 +1,19 @@ -FROM ccdlstaging/dr_base:latest +ARG DOCKERHUB_REPO +ARG SYSTEM_VERSION +FROM $DOCKERHUB_REPO/dr_base:$SYSTEM_VERSION # Fail in case of an error at any stage in the pipe. SHELL ["/bin/bash", "-o", "pipefail", "-c"] WORKDIR /home/user -ADD https://gbnci.cancer.gov/geo/GEOmetadb.sqlite.gz data/microarray/GEOmetadb.sqlite.gz -RUN gunzip data/microarray/GEOmetadb.sqlite.gz && \ - chmod 644 data/microarray/GEOmetadb.sqlite - COPY foreman/requirements.txt . -RUN pip3 install --ignore-installed --no-cache-dir -r requirements.txt +RUN mkdir -p data/microarray && \ + wget -q https://gbnci.cancer.gov/geo/GEOmetadb.sqlite.gz \ + -O data/microarray/GEOmetadb.sqlite.gz && \ + gunzip data/microarray/GEOmetadb.sqlite.gz && \ + chmod 644 data/microarray/GEOmetadb.sqlite && \ + pip3 install --ignore-installed --no-cache-dir -r requirements.txt # Get the latest version from the dist directory. COPY common/dist/data-refinery-common-* common/ @@ -21,7 +24,6 @@ COPY .boto .boto COPY config config COPY foreman/ . -ARG SYSTEM_VERSION ENV SYSTEM_VERSION=$SYSTEM_VERSION USER user diff --git a/foreman/run_end_to_end_tests.sh b/foreman/run_end_to_end_tests.sh index 554068980..e08112ae2 100755 --- a/foreman/run_end_to_end_tests.sh +++ b/foreman/run_end_to_end_tests.sh @@ -4,7 +4,10 @@ # This script should always run as if it were being called from # the directory it lives in. -script_directory="$(cd "$(dirname "$0")" || exit; pwd)" +script_directory="$( + cd "$(dirname "$0")" || exit + pwd +)" cd "$script_directory" || exit # Set up the data volume directory if it does not already exist. @@ -25,30 +28,27 @@ if [ ! -e "$reference_file_dir/$quant_file" ]; then mkdir -p "$reference_file_dir" echo "Downloading quant file for Transcriptome Index validation tests." wget -q -O "$reference_file_dir/$quant_file" \ - "$test_data_repo/$quant_file" + "$test_data_repo/$quant_file" fi # temp for testing locally. ../scripts/prepare_image.sh -i foreman -s foreman - while read -r row; do # Exporting an expansion rather than a variable, which is exactly what we want to do. # shellcheck disable=SC2163 export "${row}" -done < ../infrastructure/prod_env - +done <../infrastructure/prod_env -# Hardcode ccdlstaging because this should only ever be run in staging or -# locally, and when running locally `prepare_image.sh` makes the forman -# ccdlstaging/dr_foreman. -docker run -t \ - --env-file ../infrastructure/prod_env \ - --env RUNNING_IN_CLOUD=False \ +docker run \ --env DATABASE_HOST="$DATABASE_PUBLIC_HOST" \ + --env DJANGO_SECRET_KEY="TEST_KEY_FOR_DEV" \ --env JOB_DEFINITION_PREFIX="$USER_$STAGE_" \ --env REFINEBIO_BASE_URL="http://$API_HOST/v1/" \ - --env DJANGO_SECRET_KEY="TEST_KEY_FOR_DEV" \ - --volume "$volume_directory":/home/user/data_store \ + --env RUNNING_IN_CLOUD=False \ + --env-file ../infrastructure/prod_env \ --volume "$HOME/.aws":/home/user/.aws \ - ccdlstaging/dr_foreman python3 manage.py test --no-input --parallel=2 --testrunner='tests.test_runner.NoDbTestRunner' tests.foreman.test_end_to_end + --volume "$volume_directory":/home/user/data_store \ + --tty \ + "$DOCKERHUB_REPO/dr_foreman" \ + python3 manage.py test --no-input --parallel=2 --testrunner='tests.test_runner.NoDbTestRunner' tests.foreman.test_end_to_end diff --git a/foreman/run_management_command.sh b/foreman/run_management_command.sh index a9e4ce101..d51768fd8 100755 --- a/foreman/run_management_command.sh +++ b/foreman/run_management_command.sh @@ -1,13 +1,16 @@ #!/bin/sh -# Script for running the Data Refinery Surveyor container +# Script for running the Data Refinery Surveyor container. # This script should always run as if it were being called from # the directory it lives in. -script_directory="$(cd "$(dirname "$0")" || exit; pwd)" +script_directory="$( + cd "$(dirname "$0")" || exit + pwd +)" cd "$script_directory" || exit -# However in order to give Docker access to all the code we have to +# However, in order to give Docker access to all the code we have to # move up a level cd .. @@ -21,12 +24,16 @@ chmod -R a+rwX "$volume_directory" ./scripts/prepare_image.sh -i foreman -s foreman . ./scripts/common.sh + DB_HOST_IP=$(get_docker_db_ip_address) -docker run -it \ - --add-host=database:"$DB_HOST_IP" \ - --env-file foreman/environments/local \ - --env AWS_ACCESS_KEY_ID="$AWS_ACCESS_KEY_ID" \ - --env AWS_SECRET_ACCESS_KEY="$AWS_SECRET_ACCESS_KEY" \ - --volume "$volume_directory":/home/user/data_store \ - ccdlstaging/dr_foreman python3 manage.py "$@" +docker run \ + --add-host=database:"$DB_HOST_IP" \ + --env AWS_ACCESS_KEY_ID="$AWS_ACCESS_KEY_ID" \ + --env AWS_SECRET_ACCESS_KEY="$AWS_SECRET_ACCESS_KEY" \ + --env-file foreman/environments/local \ + --interactive \ + --tty \ + --volume "$volume_directory":/home/user/data_store \ + "$DOCKERHUB_REPO/dr_foreman" \ + python3 manage.py "$@" diff --git a/foreman/run_tests.sh b/foreman/run_tests.sh index 8edbdc56f..f0ae37de4 100755 --- a/foreman/run_tests.sh +++ b/foreman/run_tests.sh @@ -4,7 +4,10 @@ # This script should always run as if it were being called from # the directory it lives in. -script_directory="$(cd "$(dirname "$0")" || exit; pwd)" +script_directory="$( + cd "$(dirname "$0")" || exit + pwd +)" cd "$script_directory" || exit # Set up the data volume directory if it does not already exist. @@ -18,11 +21,11 @@ if [ ! -d "$volume_directory" ]; then fi chmod -R a+rwX "$volume_directory" -# However in order to give Docker access to all the code we have to -# move up a level +# However, in order to give Docker access to all the code we have to +# move up a level. cd .. -# First ensure postgres is running +# First ensure Postgres is running. if ! [ "$(docker ps --filter name=drdb -q)" ]; then echo "You must start Postgres first with:" >&2 echo "./scripts/run_postgres.sh" >&2 @@ -32,16 +35,21 @@ fi ./scripts/prepare_image.sh -i foreman -s foreman . ./scripts/common.sh + DB_HOST_IP=$(get_docker_db_ip_address) -# Only run interactively if we are on a TTY +# Only run interactively if we are on a TTY. if [ -t 1 ]; then - INTERACTIVE="-i" + INTERACTIVE="--interactive" fi -docker run -t $INTERACTIVE \ - --add-host=database:"$DB_HOST_IP" \ - --env-file foreman/environments/test \ - --platform linux/amd64 \ - --volume "$volume_directory":/home/user/data_store \ - ccdlstaging/dr_foreman bash -c "$(run_tests_with_coverage --exclude-tag=manual "$@")" +# shellcheck disable=SC2086 +docker run \ + --add-host=database:"$DB_HOST_IP" \ + --env-file foreman/environments/test \ + --platform linux/amd64 \ + --tty \ + --volume "$volume_directory":/home/user/data_store \ + $INTERACTIVE \ + "$DOCKERHUB_REPO/dr_foreman" \ + bash -c "$(run_tests_with_coverage --exclude-tag=manual "$@")" diff --git a/foreman/test_survey.sh b/foreman/test_survey.sh index 7df91a3ae..1aec44116 100755 --- a/foreman/test_survey.sh +++ b/foreman/test_survey.sh @@ -2,7 +2,7 @@ # Script for testing the surveying of an accession manually (e.g. from a dataset request) print_options() { - cat << EOF + cat <&2 echo "./scripts/run_postgres.sh" >&2 @@ -76,12 +79,16 @@ fi ./scripts/prepare_image.sh -i foreman -s foreman . ./scripts/common.sh + DB_HOST_IP=$(get_docker_db_ip_address) docker run \ - --add-host=database:"$DB_HOST_IP" \ - --env-file foreman/environments/test \ - --volume "$volume_directory":/home/user/data_store \ - -e SURVEYOR="$SURVEYOR" \ - -e ACCESSION="$ACCESSION" \ - -it ccdlstaging/dr_foreman bash -c "python3 manage.py test --tag=manual ." + --add-host=database:"$DB_HOST_IP" \ + --env ACCESSION="$ACCESSION" \ + --env SURVEYOR="$SURVEYOR" \ + --env-file foreman/environments/test \ + --interactive \ + --tty \ + --volume "$volume_directory":/home/user/data_store \ + "$DOCKERHUB_REPO/dr_foreman" \ + bash -c "python3 manage.py test --tag=manual ." diff --git a/infrastructure/api-configuration/api-server-instance-user-data.tpl.sh b/infrastructure/api-configuration/api-server-instance-user-data.tpl.sh index 3f475c98b..0dfb15ddc 100644 --- a/infrastructure/api-configuration/api-server-instance-user-data.tpl.sh +++ b/infrastructure/api-configuration/api-server-instance-user-data.tpl.sh @@ -15,7 +15,7 @@ cd /home/ubuntu || exit # Install and configure Nginx. -cat <<"EOF" > nginx.conf +cat <<"EOF" >nginx.conf ${nginx_config} EOF apt-get update -y @@ -107,7 +107,7 @@ echo " size 20k daily maxage 3 -}" >> /etc/logrotate.conf +}" >>/etc/logrotate.conf echo " /tmp/access.log { missingok @@ -116,10 +116,10 @@ echo " size 20k daily maxage 3 -}" >> /etc/logrotate.conf +}" >>/etc/logrotate.conf # Install our environment variables -cat <<"EOF" > environment +cat <<"EOF" >environment ${api_environment} EOF @@ -135,36 +135,40 @@ docker pull "${dockerhub_repo}/${api_docker_image}" # These database values are created after TF # is run, so we have to pass them in programatically docker run \ - --env-file environment \ - -e DATABASE_HOST="${database_host}" \ - -e DATABASE_NAME="${database_name}" \ - -e DATABASE_USER="${database_user}" \ - -e DATABASE_PASSWORD="${database_password}" \ - -e ELASTICSEARCH_HOST="${elasticsearch_host}" \ - -e ELASTICSEARCH_PORT="${elasticsearch_port}" \ - -v "$STATIC_VOLUMES":/tmp/www/static \ - --log-driver=awslogs \ - --log-opt awslogs-region="${region}" \ - --log-opt awslogs-group="${log_group}" \ - --log-opt awslogs-stream="${log_stream}" \ - -p 8081:8081 \ - --name=dr_api \ - -it -d "${dockerhub_repo}/${api_docker_image}" /bin/sh -c "/home/user/collect_and_run_uwsgi.sh" + --detach \ + --env DATABASE_HOST="${database_host}" \ + --env DATABASE_NAME="${database_name}" \ + --env DATABASE_PASSWORD="${database_password}" \ + --env DATABASE_USER="${database_user}" \ + --env ELASTICSEARCH_HOST="${elasticsearch_host}" \ + --env ELASTICSEARCH_PORT="${elasticsearch_port}" \ + --env-file environment \ + --interactive \ + --log-driver=awslogs \ + --log-opt awslogs-group="${log_group}" \ + --log-opt awslogs-region="${region}" \ + --log-opt awslogs-stream="${log_stream}" \ + --name=dr_api \ + --tty \ + --volume "$STATIC_VOLUMES":/tmp/www/static \ + -publish 8081:8081 \ + "${dockerhub_repo}/${api_docker_image}" \ + /bin/sh -c "/home/user/collect_and_run_uwsgi.sh" # Nuke and rebuild the search index. It shouldn't take too long. sleep 30 -docker exec dr_api python3 manage.py search_index --delete -f; -docker exec dr_api python3 manage.py search_index --rebuild -f; -docker exec dr_api python3 manage.py search_index --populate -f; +docker exec dr_api python3 manage.py search_index --delete -f +docker exec dr_api python3 manage.py search_index --rebuild -f +docker exec dr_api python3 manage.py search_index --populate -f # Let's use this instance to call the populate command every twenty minutes. -crontab -l > tempcron +crontab -l >tempcron # echo new cron into cron file # TODO: stop logging this to api_cron.log once we figure out why it # hasn't been working. -echo -e "SHELL=/bin/bash\nPATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin\n*/20 * * * * docker exec dr_api python3 manage.py update_es_index >> /var/log/api_cron.log 2>&1" >> tempcron +echo -e "SHELL=/bin/bash\nPATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin\n*/20 * * * * docker exec dr_api python3 manage.py update_es_index >> /var/log/api_cron.log 2>&1" >>tempcron # Post a summary of downloads every Monday at 12:00 UTC -echo -e "SHELL=/bin/bash\nPATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin\n0 12 * * MON docker exec dr_api python3 manage.py post_downloads_summary >> /var/log/api_cron.log 2>&1" >> tempcron +echo -e "SHELL=/bin/bash\nPATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin\n0 12 * * MON docker exec dr_api python3 manage.py post_downloads_summary >> /var/log/api_cron.log 2>&1" >>tempcron # install new cron file crontab tempcron rm tempcron diff --git a/infrastructure/deploy.sh b/infrastructure/deploy.sh index d8175b423..2298c2d8a 100755 --- a/infrastructure/deploy.sh +++ b/infrastructure/deploy.sh @@ -2,7 +2,10 @@ # This script should always run as if it were being called from # the directory it lives in. -script_directory="$(cd "$(dirname "$0")" || exit; pwd)" +script_directory="$( + cd "$(dirname "$0")" || exit + pwd +)" cd "$script_directory" || exit print_description() { @@ -21,7 +24,7 @@ print_options() { echo ' "-e prod" will deploy the production stack. This should only be used from a CD machine.' echo ' "-e staging" will deploy the staging stack. This should only be used from a CD machine.' echo ' "-e dev" will deploy a dev stack which is appropriate for a single developer to use to test.' - echo '-d May be used to override the Dockerhub repo where the images will be pulled from.' + echo '-r May be used to override the Dockerhub repo where the images will be pulled from.' echo ' This may also be specified by setting the TF_VAR_dockerhub_repo environment variable.' echo ' If unset, defaults to "ccdlstaging" if the version contains "-dev" and "ccdl" otherwise.' echo ' for dev and staging environments and "ccdl" for prod.' @@ -31,7 +34,7 @@ print_options() { echo '-v specifies the version of the system which is being deployed and is not optional.' echo "-u specifies the username of the deployer. Should be the developer's name in development stacks." echo ' This option may be omitted, in which case the TF_VAR_user variable MUST be set instead.' - echo '-r specifies the AWS region to deploy the stack to. Defaults to us-east-1.' + echo '-d specifies the AWS region to deploy the stack to. Defaults to us-east-1.' } while getopts ":e:d:i:v:u:r:h" opt; do @@ -40,7 +43,7 @@ while getopts ":e:d:i:v:u:r:h" opt; do export env=$OPTARG export TF_VAR_stage=$OPTARG ;; - d) + r) export TF_VAR_dockerhub_repo=$OPTARG ;; i) @@ -53,7 +56,7 @@ while getopts ":e:d:i:v:u:r:h" opt; do u) export TF_VAR_user=$OPTARG ;; - r) + d) export TF_VAR_region=$OPTARG ;; h) @@ -102,31 +105,29 @@ if [[ -z $TF_VAR_region ]]; then TF_VAR_region=us-east-1 fi - # We have terraform output environment variables via a single output # variable, which we then read in as json using the command line tool # `jq`, so that we can use them via bash. -format_environment_variables () { - json_env_vars=$(terraform output -json environment_variables | jq -c '.[]') - for row in $json_env_vars; do - name=$(echo "$row" | jq -r ".name") - value=$(echo "$row" | jq -r ".value") - env_var_assignment="$name=$value" - # Exporting an expansion rather than a variable, which is exactly what we want to do. - # shellcheck disable=SC2163 - export "${env_var_assignment?}" - echo "$env_var_assignment" >> prod_env - done +format_environment_variables() { + json_env_vars=$(terraform output -json environment_variables | jq -c '.[]') + for row in $json_env_vars; do + name=$(echo "$row" | jq -r ".name") + value=$(echo "$row" | jq -r ".value") + env_var_assignment="$name=$value" + # Exporting an expansion rather than a variable, which is exactly what we want to do. + # shellcheck disable=SC2163 + export "${env_var_assignment?}" + echo "$env_var_assignment" >>prod_env + done } - -# Load $ALL_CCDL_IMAGES and helper functions -source ../scripts/common.sh +# Load $ALL_IMAGES and helper functions. +. ../scripts/common.sh # Make our IP address known to terraform. TF_VAR_host_ip="$(dig +short myip.opendns.com @resolver1.opendns.com)" export TF_VAR_host_ip -for IMAGE in $ALL_CCDL_IMAGES; do +for IMAGE in $ALL_IMAGES; do # For each image we need to set the env var that is used by our # scripts and the env var that gets picked up by terraform because # it is preceeded with TF_VAR. @@ -140,27 +141,26 @@ cp deploy/ci_ingress.tf . # Check if a new ccdl-ubuntu ami will be needed for this region if [[ $(aws ec2 describe-images \ - --region $TF_VAR_region --owners 589864003899 \ - --filters 'Name=name,Values=ccdl-ubuntu-18.04-*' \ - --query 'length(Images)') \ - -eq 0 ]]; then + --region "$TF_VAR_region" --owners 589864003899 \ + --filters 'Name=name,Values=ccdl-ubuntu-18.04-*' \ + --query 'length(Images)') -eq 0 ]]; then echo "No ccdl-ubuntu-18.04 AMI found for this region, creating a new one" # Find most recent ccdl-ubuntu ami from us-east-1 template_ami_id=$(aws ec2 describe-images \ - --region us-east-1 --owners 589864003899 \ - --filters 'Name=name,Values=ccdl-ubuntu-18.04-*' \ - --query 'sort_by(Images,&CreationDate)[-1].ImageId' \ - --output text) + --region us-east-1 --owners 589864003899 \ + --filters 'Name=name,Values=ccdl-ubuntu-18.04-*' \ + --query 'sort_by(Images,&CreationDate)[-1].ImageId' \ + --output text) # Make a copy into this region new_ami_name="ccdl-ubuntu-18.04-$(date "+%Y-%m-%dT%H.%M.%S")" new_ami_id=$(aws ec2 copy-image \ - --source-image-id "$template_ami_id" \ - --source-region us-east-1 \ - --region "$TF_VAR_region" \ - --name "$new_ami_name" \ - --output text) + --source-image-id "$template_ami_id" \ + --source-region us-east-1 \ + --region "$TF_VAR_region" \ + --name "$new_ami_name" \ + --output text) echo "Created new AMI for $TF_VAR_region" echo " name: $new_ami_name" echo " id: $new_ami_id" @@ -174,16 +174,16 @@ fi terraform taint module.batch.aws_launch_template.data_refinery_worker || true terraform taint module.batch.aws_launch_template.data_refinery_compendia || true if terraform state list | grep -q module.batch.aws_batch_job_queue.data_refinery_; then - terraform state list \ - | grep module.batch.aws_batch_job_queue.data_refinery_ \ - | xargs -L 1 terraform taint \ - || true + terraform state list | + grep module.batch.aws_batch_job_queue.data_refinery_ | + xargs -L 1 terraform taint || + true fi if terraform state list | grep -q module.batch.aws_batch_compute_environment.data_refinery__; then - terraform state list \ - | grep module.batch.aws_batch_compute_environment.data_refinery_ \ - | xargs -L 1 terraform taint \ - || true + terraform state list | + grep module.batch.aws_batch_compute_environment.data_refinery_ | + xargs -L 1 terraform taint || + true fi if terraform output | grep -q 'No outputs found'; then @@ -232,7 +232,7 @@ format_environment_variables # Make sure to clear out any old batch job templates since we # will register everything in this directory. if [ -e batch-job-templates ]; then - rm -r batch-job-templates + rm -r batch-job-templates fi # Template the environment variables for production into the Batch Job @@ -272,47 +272,49 @@ docker pull "$DOCKERHUB_REPO/$FOREMAN_DOCKER_IMAGE" # Test that the pg_bouncer instance is up. 15 minutes should be more than enough. start_time=$(date +%s) diff=0 -until pg_isready -d "$DATABASE_NAME" -h "$DATABASE_PUBLIC_HOST" -p "$DATABASE_PORT" -U "$DATABASE_USER" &> /dev/null || [ "$diff" -gt "900" ] -do +until pg_isready -d "$DATABASE_NAME" -h "$DATABASE_PUBLIC_HOST" -p "$DATABASE_PORT" -U "$DATABASE_USER" &>/dev/null || [ "$diff" -gt "900" ]; do echo "Waiting for the pg_bouncer instance to come online ..." sleep 10 - (( diff = $(date +%s) - start_time )) + ((diff = $(date +%s) - start_time)) done -if ! pg_isready -d "$DATABASE_NAME" -h "$DATABASE_PUBLIC_HOST" -p "$DATABASE_PORT" -U "$DATABASE_USER" &> /dev/null; then +if ! pg_isready -d "$DATABASE_NAME" -h "$DATABASE_PUBLIC_HOST" -p "$DATABASE_PORT" -U "$DATABASE_USER" &>/dev/null; then echo "pg_bouncer instance failed to come up after 15 minutes." exit 1 fi # Migrate auth. docker run \ - --env-file prod_env \ - --env RUNNING_IN_CLOUD=False \ - --env DATABASE_HOST="$DATABASE_PUBLIC_HOST" \ - "$DOCKERHUB_REPO/$FOREMAN_DOCKER_IMAGE" python3 manage.py migrate auth + --env DATABASE_HOST="$DATABASE_PUBLIC_HOST" \ + --env RUNNING_IN_CLOUD=False \ + --env-file prod_env \ + "$DOCKERHUB_REPO/$FOREMAN_DOCKER_IMAGE" \ + python3 manage.py migrate auth # Apply general migrations. docker run \ - --env-file prod_env \ - --env RUNNING_IN_CLOUD=False \ - --env DATABASE_HOST="$DATABASE_PUBLIC_HOST" \ - "$DOCKERHUB_REPO/$FOREMAN_DOCKER_IMAGE" python3 manage.py migrate + --env DATABASE_HOST="$DATABASE_PUBLIC_HOST" \ + --env RUNNING_IN_CLOUD=False \ + --env-file prod_env \ + "$DOCKERHUB_REPO/$FOREMAN_DOCKER_IMAGE" \ + python3 manage.py migrate # Create the cache table if it does not already exist. docker run \ - --env-file prod_env \ - --env RUNNING_IN_CLOUD=False \ - --env DATABASE_HOST="$DATABASE_PUBLIC_HOST" \ - "$DOCKERHUB_REPO/$FOREMAN_DOCKER_IMAGE" python3 manage.py createcachetable + --env DATABASE_HOST="$DATABASE_PUBLIC_HOST" \ + --env RUNNING_IN_CLOUD=False \ + --env-file prod_env \ + "$DOCKERHUB_REPO/$FOREMAN_DOCKER_IMAGE" \ + python3 manage.py createcachetable # Terraform doesn't manage these well, so they need to be tainted to # ensure they won't require manual intervention. terraform taint module.batch.aws_launch_template.data_refinery_worker terraform taint module.batch.aws_launch_template.data_refinery_compendia -terraform state list \ - | grep module.batch.aws_batch_job_queue.data_refinery_ \ - | xargs -L 1 terraform taint \ - || true +terraform state list | + grep module.batch.aws_batch_job_queue.data_refinery_ | + xargs -L 1 terraform taint || + true # Ensure the latest image version is being used for the Foreman terraform taint aws_instance.foreman_server_1 @@ -339,10 +341,10 @@ API_IP_ADDRESS=$(terraform output -json api_server_1_ip | tr -d '"') # it's not found then grep will return a non-zero exit code so in that # case return an empty string. container_running=$(ssh -o StrictHostKeyChecking=no \ - -o ServerAliveInterval=15 \ - -o ConnectTimeout=5 \ - -i data-refinery-key.pem \ - "ubuntu@$API_IP_ADDRESS" "docker ps -a" 2> /dev/null | grep dr_api || echo "") + -o ServerAliveInterval=15 \ + -o ConnectTimeout=5 \ + -i data-refinery-key.pem \ + "ubuntu@$API_IP_ADDRESS" "docker ps -a" 2>/dev/null | grep dr_api || echo "") # If $container_running is empty, then it's because the container isn't running. # If the container isn't running, then it's because the instance is spinning up. @@ -377,21 +379,25 @@ if [[ -n $container_running ]]; then -o ConnectTimeout=5 \ -i data-refinery-key.pem \ "ubuntu@$API_IP_ADDRESS" "docker run \ - --env-file environment \ - -e DATABASE_HOST=$DATABASE_HOST \ - -e DATABASE_NAME=$DATABASE_NAME \ - -e DATABASE_USER=$DATABASE_USER \ - -e DATABASE_PASSWORD=$DATABASE_PASSWORD \ - -e ELASTICSEARCH_HOST=$ELASTICSEARCH_HOST \ - -e ELASTICSEARCH_PORT=$ELASTICSEARCH_PORT \ - -v /tmp/volumes_static:/tmp/www/static \ - --log-driver=awslogs \ - --log-opt awslogs-region=$AWS_REGION \ - --log-opt awslogs-group=data-refinery-log-group-$USER-$STAGE \ - --log-opt awslogs-stream=log-stream-api-$USER-$STAGE \ - -p 8081:8081 \ - --name=dr_api \ - -it -d $DOCKERHUB_REPO/$API_DOCKER_IMAGE /bin/sh -c /home/user/collect_and_run_uwsgi.sh" + --detach \ + --env DATABASE_HOST=$DATABASE_HOST \ + --env DATABASE_NAME=$DATABASE_NAME \ + --env DATABASE_PASSWORD=$DATABASE_PASSWORD \ + --env DATABASE_USER=$DATABASE_USER \ + --env ELASTICSEARCH_HOST=$ELASTICSEARCH_HOST \ + --env ELASTICSEARCH_PORT=$ELASTICSEARCH_PORT \ + --env-file environment \ + --interactive \ + --log-driver=awslogs \ + --log-opt awslogs-group=data-refinery-log-group-$USER-$STAGE \ + --log-opt awslogs-region=$AWS_REGION \ + --log-opt awslogs-stream=log-stream-api-$USER-$STAGE \ + --name=dr_api \ + --tty \ + --volume /tmp/volumes_static:/tmp/www/static \ + --publish 8081:8081 \ + $DOCKERHUB_REPO/$API_DOCKER_IMAGE \ + /bin/sh -c /home/user/collect_and_run_uwsgi.sh" # Don't leave secrets lying around. ssh -o StrictHostKeyChecking=no \ diff --git a/infrastructure/deploy_box_instance_data.sh b/infrastructure/deploy_box_instance_data.sh index 25f7bf5c7..dffe93ecf 100644 --- a/infrastructure/deploy_box_instance_data.sh +++ b/infrastructure/deploy_box_instance_data.sh @@ -76,5 +76,6 @@ chown ubuntu:ubuntu /var/log/deploy.log # Checkout the repo onto the box. cd /home/ubuntu +umask 0022 git clone https://github.com/AlexsLemonade/refinebio.git chown -R ubuntu:ubuntu refinebio diff --git a/infrastructure/destroy_terraform.sh b/infrastructure/destroy_terraform.sh index cf91053e4..4329cf885 100755 --- a/infrastructure/destroy_terraform.sh +++ b/infrastructure/destroy_terraform.sh @@ -2,7 +2,10 @@ # This script should always run as if it were being called from # the directory it lives in. -script_directory="$(cd "$(dirname "$0")" || exit; pwd)" +script_directory="$( + cd "$(dirname "$0")" || exit + pwd +)" cd "$script_directory" || exit print_description() { @@ -10,17 +13,17 @@ print_description() { } print_options() { - echo 'This script accepts the following arguments: -e, -u, -r, and -h.' - echo 'Neither -e, -u or -r is optional unless TF_VAR_stage, TF_VAR_user,' + echo 'This script accepts the following arguments: -e, -u, -d, and -h.' + echo 'Neither -e, -u or -d is optional unless TF_VAR_stage, TF_VAR_user,' echo 'or TF_VAR_region is set, respectively.' echo '-h prints this help message and exits.' echo '-e specifies the environment you would like to destroy.' echo '-u specifies the username you used to spin up the stack.' - echo '-r specifies the region of the stack to destroy.' + echo '-d specifies the region of the stack to destroy.' echo 'All arguments are needed to determine which stack to destroy.' } -while getopts ":e:u:r:h" opt; do +while getopts ":e:u:d:h" opt; do case $opt in e) export env=$OPTARG @@ -29,7 +32,7 @@ while getopts ":e:u:r:h" opt; do u) export TF_VAR_user=$OPTARG ;; - r) + d) export TF_VAR_region=$OPTARG ;; h) @@ -62,7 +65,7 @@ if [[ -z $TF_VAR_user ]]; then fi if [[ -z $TF_VAR_region ]]; then - echo 'Error: must specify region by either providing the -r argument or setting TF_VAR_region.' + echo 'Error: must specify region by either providing the -d argument or setting TF_VAR_region.' exit 1 fi diff --git a/infrastructure/foreman-configuration/foreman-server-instance-user-data.tpl.sh b/infrastructure/foreman-configuration/foreman-server-instance-user-data.tpl.sh index c53d368bf..efc292163 100644 --- a/infrastructure/foreman-configuration/foreman-server-instance-user-data.tpl.sh +++ b/infrastructure/foreman-configuration/foreman-server-instance-user-data.tpl.sh @@ -15,30 +15,34 @@ cd /home/ubuntu || exit # Install our environment variables -cat <<"EOF" > environment +cat <<"EOF" >environment ${foreman_environment} EOF # These database values are created after TF # is run, so we have to pass them in programatically -cat >> /home/ubuntu/run_foreman.sh <>/home/ubuntu/run_foreman.sh <> /home/ubuntu/run_management_command.sh + --detach \\ + --env DATABASE_HOST=${database_host} \\ + --env DATABASE_NAME=${database_name} \\ + --env DATABASE_PASSWORD=${database_password} \\ + --env DATABASE_USER=${database_user} \\ + --env-file /home/ubuntu/environment \\ + --interactive \\ + --tty \\ + --volume /tmp:/tmp \\ + ${dockerhub_repo}/${foreman_docker_image} \\ + python3 manage.py \"\$@\" +" >>/home/ubuntu/run_management_command.sh chmod +x /home/ubuntu/run_management_command.sh echo " @@ -70,21 +78,24 @@ echo " # the first argument followed by the management command to run. docker run \\ - --env-file /home/ubuntu/environment \\ - -e DATABASE_HOST=${database_host} \\ - -e DATABASE_NAME=${database_name} \\ - -e DATABASE_USER=${database_user} \\ - -e DATABASE_PASSWORD=${database_password} \\ - -v /tmp:/tmp \\ - -it ${dockerhub_repo}/dr_\"\$1\" python3 manage.py \"\$2\" -" >> /home/ubuntu/run_manage_command.sh + --env DATABASE_HOST=${database_host} \\ + --env DATABASE_NAME=${database_name} \\ + --env DATABASE_PASSWORD=${database_password} \\ + --env DATABASE_USER=${database_user} \\ + --env-file /home/ubuntu/environment \\ + --interactive \\ + --tty \\ + --volume /tmp:/tmp \\ + ${dockerhub_repo}/dr_\"\$1\" \\ + python3 manage.py \"\$2\" +" >>/home/ubuntu/run_manage_command.sh chmod +x /home/ubuntu/run_manage_command.sh # Use Monit to ensure the Foreman is always running apt-get -y update apt-get -y install monit htop -date +%s > /tmp/foreman_last_time +date +%s >/tmp/foreman_last_time chown ubuntu:ubuntu /tmp/foreman_last_time # shellcheck disable=2016 echo ' @@ -96,7 +107,7 @@ if (( $difftime > 1800 )); then exit 1; fi exit 0; -' >> /home/ubuntu/foreman_status.sh +' >>/home/ubuntu/foreman_status.sh chmod +x /home/ubuntu/foreman_status.sh echo ' @@ -105,13 +116,13 @@ check program foreman with path "/bin/bash /home/ubuntu/foreman_status.sh" as ui if status != 0 then restart set daemon 900 -' >> /etc/monit/monitrc +' >>/etc/monit/monitrc service monit restart # Install the cron job tests -crontab -l > tempcron -cat <> tempcron +crontab -l >tempcron +cat <>tempcron 0 12 * * MON /bin/bash /home/ubuntu/run_manage_command.sh affymetrix check_brainarray_gene_agreement >> /var/log/affymetrix_checks.log 2>&1 0 12 * * MON /bin/bash /home/ubuntu/run_manage_command.sh affymetrix check_tx_index_transcript_agreement >> /var/log/affymetrix_checks.log 2>&1 0 12 * * ${accession_gathering_job_run_day} /bin/bash /home/ubuntu/run_manage_command.sh foreman gather_weekly_accessions >> /var/log/weekly_accessions.log 2>&1 @@ -122,18 +133,22 @@ rm tempcron # Make sure every downloader job has a processor job! docker run \ - --env-file /home/ubuntu/environment \ - -e DATABASE_HOST="${database_host}" \ - -e DATABASE_NAME="${database_name}" \ - -e DATABASE_USER="${database_user}" \ - -e DATABASE_PASSWORD="${database_password}" \ - -v /tmp:/tmp \ - --log-driver=awslogs \ - --log-opt awslogs-region="${region}" \ - --log-opt awslogs-group="${log_group}" \ - --log-opt awslogs-stream="log-stream-foreman-${user}-${stage}" \ - --name=job_filler \ - -it -d "${dockerhub_repo}/${foreman_docker_image}" python3 manage.py create_missing_processor_jobs + --detach \ + --env DATABASE_HOST="${database_host}" \ + --env DATABASE_NAME="${database_name}" \ + --env DATABASE_PASSWORD="${database_password}" \ + --env DATABASE_USER="${database_user}" \ + --env-file /home/ubuntu/environment \ + --interactive \ + --log-driver=awslogs \ + --log-opt awslogs-group="${log_group}" \ + --log-opt awslogs-region="${region}" \ + --log-opt awslogs-stream="log-stream-foreman-${user}-${stage}" \ + --name=job_filler \ + --tty \ + --volume /tmp:/tmp \ + "${dockerhub_repo}/${foreman_docker_image}" \ + python3 manage.py create_missing_processor_jobs # Delete the cloudinit and syslog in production. export STAGE=${stage} diff --git a/scripts/common.sh b/scripts/common.sh index 612de1a7b..b30416abc 100755 --- a/scripts/common.sh +++ b/scripts/common.sh @@ -2,45 +2,40 @@ # These are lists of docker images that we use. The actual names end # up being /dr_ but this is useful for scripting. -export ALL_CCDL_IMAGES="smasher compendia illumina affymetrix salmon transcriptome no_op downloaders foreman api" +export ALL_IMAGES="smasher compendia illumina affymetrix salmon transcriptome no_op downloaders foreman api" # Sometimes we only want to work with the worker images. -export CCDL_WORKER_IMAGES="smasher compendia illumina affymetrix salmon transcriptome no_op downloaders" +export WORKER_IMAGES="smasher compendia illumina affymetrix salmon transcriptome no_op downloaders" -get_docker_db_ip_address () { - docker inspect -f '{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' drdb 2> /dev/null -} - -get_docker_es_ip_address () { - docker inspect -f '{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' dres 2> /dev/null -} - -# `coverage report -m` will always have an exit code of 0 which makes -# it seem like the test is passing. Therefore we store the exit code -# of running the tests as $exit_code, then report the coverage, and -# then exit with the appropriate code. -# This is done a function so arguments to the tests can be passed through. -run_tests_with_coverage () { - COVERAGE="coverage run --source=\".\" manage.py test --settings=tests.settings --no-input $*; exit_code=\$?;" - SAVE_REPORT="coverage xml -o data_store/coverage.xml;" - PRINT_REPORT="coverage report -m;" - RETURN="exit \$exit_code" - - echo "$COVERAGE $PRINT_REPORT $SAVE_REPORT $RETURN" -} +# Default Docker registry. +if [ -z "$DOCKERHUB_REPO" ]; then + export DOCKERHUB_REPO="ccdlstaging" +fi # This function checks whether a given docker image name ($1:$2) # exists in Docker Hub or not using Docker Hub API V2. Based on: # https://stackoverflow.com/questions/32113330/check-if-imagetag-combination-already-exists-on-docker-hub -docker_img_exists() { +docker_image_exists() { TOKEN=$(curl -s -H "Content-Type: application/json" -X POST \ - -d '{"username": "'"${DOCKER_ID}"'", "password": "'"${DOCKER_PASSWD}"'"}' \ - https://hub.docker.com/v2/users/login/ | jq -r .token) + -d '{"username": "'"${DOCKER_ID}"'", "password": "'"${DOCKER_PASSWD}"'"}' \ + https://hub.docker.com/v2/users/login/ | jq -r .token) EXISTS=$(curl -s -H "Authorization: JWT ${TOKEN}" \ - "https://hub.docker.com/v2/repositories/$1/tags/?page_size=10000" \ - | jq -r "[.results | .[] | .name == \"$2\"] | any" 2> /dev/null) + "https://hub.docker.com/v2/repositories/$1/tags/?page_size=10000" | + jq -r "[.results | .[] | .name == \"$2\"] | any" 2>/dev/null) test -n "$EXISTS" -a "$EXISTS" = true } +get_branch_hash() { + git rev-parse --abbrev-ref HEAD | shasum | awk '{print $1}' +} + +get_docker_db_ip_address() { + docker inspect -f '{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' drdb 2>/dev/null +} + +get_docker_es_ip_address() { + docker inspect -f '{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' dres 2>/dev/null +} + # A tag is linked to a commit hash, not a branch. A single commit hash # can end up on multiple branches. So we first check to see if we're # on master, then on dev, then error out because we should only deploy master or dev. @@ -57,10 +52,69 @@ get_master_or_dev() { # All dev versions should end with '-dev' or '-dev-hotfix' and all master versions should not. if [ -n "$master_check" ] && ! echo "$version" | grep -Eq "\-dev(\-hotfix)?$"; then echo "master" - elif [ -n "$dev_check" ] ; then + elif [ -n "$dev_check" ]; then echo "dev" else echo "unknown" fi fi } + +# `coverage report -m` will always have an exit code of 0 which makes +# it seem like the test is passing. Therefore we store the exit code +# of running the tests as $exit_code, then report the coverage, and +# then exit with the appropriate code. +# This is done a function so arguments to the tests can be passed through. +run_tests_with_coverage() { + COVERAGE="coverage run --source=\".\" manage.py test --settings=tests.settings --no-input $*; exit_code=\$?;" + SAVE_REPORT="coverage xml -o data_store/coverage.xml;" + PRINT_REPORT="coverage report -m;" + RETURN="exit \$exit_code" + + echo "$COVERAGE $PRINT_REPORT $SAVE_REPORT $RETURN" +} + +# Create docker-container/desktop-linux Docker builder if none provided. +# Set the builder as currently used. +set_up_docker_builder() { + if [ -z "$DOCKER_BUILDER" ]; then + echo "Setting up refine.bio Docker builder." + + if test "$GITHUB_ACTION"; then + echo "$INSTANCE_SSH_KEY" >infrastructure/data-refinery-key.pem + chmod 600 infrastructure/data-refinery-key.pem + + # shellcheck disable=SC2046 + eval $(ssh-agent) + ssh-add infrastructure/data-refinery-key.pem + + if [ ! -d ~/.ssh ]; then + mkdir -m 700 ~/.ssh + fi + cat >~/.ssh/config </dev/null || + true + else + DOCKER_BUILDER="refinebio_local_builder" + echo "Creating Docker builder $DOCKER_BUILDER." + docker buildx create \ + --driver=docker-container \ + --name="$DOCKER_BUILDER" \ + --platform=linux/amd64 2>/dev/null || + true + fi + fi + + echo "Using Docker builder $DOCKER_BUILDER." + docker buildx use "$DOCKER_BUILDER" +} diff --git a/scripts/format_batch_with_env.sh b/scripts/format_batch_with_env.sh index a86ee36b5..21938e1e5 100755 --- a/scripts/format_batch_with_env.sh +++ b/scripts/format_batch_with_env.sh @@ -24,34 +24,34 @@ print_options() { while getopts ":p:e:o:v:h" opt; do case $opt in - p) - export project="$OPTARG" - ;; - e) - export env="$OPTARG" - ;; - o) - export output_dir="$OPTARG" - ;; - v) - export system_version="$OPTARG" - ;; - h) - print_description - echo - print_options - exit 0 - ;; - \?) - echo "Invalid option: -$OPTARG" >&2 - print_options >&2 - exit 1 - ;; - :) - echo "Option -$OPTARG requires an argument." >&2 - print_options >&2 - exit 1 - ;; + p) + export project="$OPTARG" + ;; + e) + export env="$OPTARG" + ;; + o) + export output_dir="$OPTARG" + ;; + v) + export system_version="$OPTARG" + ;; + h) + print_description + echo + print_options + exit 0 + ;; + \?) + echo "Invalid option: -$OPTARG" >&2 + print_options >&2 + exit 1 + ;; + :) + echo "Option -$OPTARG requires an argument." >&2 + print_options >&2 + exit 1 + ;; esac done @@ -102,10 +102,12 @@ if [ -z "$COMPENDIA_DOCKER_IMAGE" ]; then export COMPENDIA_DOCKER_IMAGE="dr_compendia:$system_version" fi - # This script should always run from the context of the directory of # the project it is building. -script_directory="$(cd "$(dirname "$0")" || exit; pwd)" +script_directory="$( + cd "$(dirname "$0")" || exit + pwd +)" project_directory="$script_directory/.." @@ -142,7 +144,7 @@ while read -r line; do # shellcheck disable=SC2163 export "$line" fi -done < "$environment_file" +done <"$environment_file" # If output_dir wasn't specified then assume the same folder we're # getting the templates from. @@ -154,7 +156,6 @@ if [ ! -d "$output_dir" ]; then mkdir "$output_dir" fi - # Not quite sure how to deal with this just yet, so punt. # export INDEX=0 @@ -163,7 +164,7 @@ fi if [ "$project" = "workers" ]; then # Iterate over all the template files in the directory. for template in batch-job-templates/*.tpl.json; do - template="$(basename "$template")" + template="$(basename "$template")" # Strip off the trailing .tpl for once we've formatted it. OUTPUT_BASE="$(basename "$template" .tpl.json)" FILETYPE=".json" @@ -173,66 +174,62 @@ if [ "$project" = "workers" ]; then if [ "$OUTPUT_FILE" = "downloader.json" ]; then rams="1024 4096 16384" - for r in $rams - do + for r in $rams; do export RAM_POSTFIX="_$r" export RAM="$r" FILEPATH="$output_dir/downloader$RAM_POSTFIX$FILETYPE" perl -p -e 's/\$\{\{([^}]+)\}\}/defined $ENV{$1} ? $ENV{$1} : $&/eg' \ - < "batch-job-templates/$template" \ - > "$FILEPATH" \ - 2> /dev/null + <"batch-job-templates/$template" \ + >"$FILEPATH" \ + 2>/dev/null echo "Made $FILEPATH" done echo "Made $output_dir/$OUTPUT_FILE" elif [ "$OUTPUT_FILE" = "create_compendia.json" ]; then rams="30000 950000" - for r in $rams - do + for r in $rams; do export RAM_POSTFIX="_$r" export RAM="$r" FILEPATH="$output_dir/$OUTPUT_BASE$RAM_POSTFIX$FILETYPE" perl -p -e 's/\$\{\{([^}]+)\}\}/defined $ENV{$1} ? $ENV{$1} : $&/eg' \ - < "batch-job-templates/$template" \ - > "$FILEPATH" \ - 2> /dev/null + <"batch-job-templates/$template" \ + >"$FILEPATH" \ + 2>/dev/null echo "Made $FILEPATH" done echo "Made $output_dir/$OUTPUT_FILE" elif [ "$OUTPUT_FILE" = "create_quantpendia.json" ]; then rams="30000 131000" - for r in $rams - do + for r in $rams; do export RAM_POSTFIX="_$r" export RAM="$r" FILEPATH="$output_dir/$OUTPUT_BASE$RAM_POSTFIX$FILETYPE" perl -p -e 's/\$\{\{([^}]+)\}\}/defined $ENV{$1} ? $ENV{$1} : $&/eg' \ - < "batch-job-templates/$template" \ - > "$FILEPATH" \ - 2> /dev/null + <"batch-job-templates/$template" \ + >"$FILEPATH" \ + 2>/dev/null echo "Made $FILEPATH" done echo "Made $output_dir/$OUTPUT_FILE" # From https://unix.stackexchange.com/a/111517 elif (echo "$NO_RAM_JOB_FILES" | grep -Fqw "$OUTPUT_FILE"); then perl -p -e 's/\$\{\{([^}]+)\}\}/defined $ENV{$1} ? $ENV{$1} : $&/eg' \ - < "batch-job-templates/$template" \ - > "$output_dir/$OUTPUT_FILE" \ - 2> /dev/null + <"batch-job-templates/$template" \ + >"$output_dir/$OUTPUT_FILE" \ + 2>/dev/null echo "Made $output_dir/$OUTPUT_FILE" else rams="2048 4096 8192 12288 16384 32768 65536" - for r in $rams - do + for r in $rams; do export RAM_POSTFIX="_$r" export RAM="$r" FILEPATH="$output_dir/$OUTPUT_BASE$RAM_POSTFIX$FILETYPE" perl -p -e 's/\$\{\{([^}]+)\}\}/defined $ENV{$1} ? $ENV{$1} : $&/eg' \ - < "batch-job-templates/$template" \ - > "$FILEPATH" \ - 2> /dev/null + <"batch-job-templates/$template" \ + >"$FILEPATH" \ + 2>/dev/null echo "Made $FILEPATH" done fi @@ -241,7 +238,7 @@ elif [ "$project" = "surveyor" ]; then # Iterate over all the template files in the directory. for template in batch-job-templates/*.tpl.json; do - template="$(basename "$template")" + template="$(basename "$template")" # Strip off the trailing .tpl for once we've formatted it. OUTPUT_BASE="$(basename "$template" .tpl.json)" FILETYPE=".json" @@ -249,21 +246,20 @@ elif [ "$project" = "surveyor" ]; then if [ "$OUTPUT_FILE" = "surveyor_dispatcher.json" ]; then perl -p -e 's/\$\{\{([^}]+)\}\}/defined $ENV{$1} ? $ENV{$1} : $&/eg' \ - < "batch-job-templates/$template" \ - > "$output_dir/$OUTPUT_FILE" \ - 2> /dev/null + <"batch-job-templates/$template" \ + >"$output_dir/$OUTPUT_FILE" \ + 2>/dev/null echo "Made $output_dir/$OUTPUT_FILE" else rams="1024 4096 16384" - for r in $rams - do + for r in $rams; do export RAM_POSTFIX="_$r" export RAM="$r" FILEPATH="$output_dir/$OUTPUT_BASE$RAM_POSTFIX$FILETYPE" perl -p -e 's/\$\{\{([^}]+)\}\}/defined $ENV{$1} ? $ENV{$1} : $&/eg' \ - < "batch-job-templates/$template" \ - > "$FILEPATH" \ - 2> /dev/null + <"batch-job-templates/$template" \ + >"$FILEPATH" \ + 2>/dev/null echo "Made $FILEPATH" done fi @@ -272,12 +268,12 @@ elif [ "$project" = "surveyor" ]; then elif [ "$project" = "foreman" ]; then # foreman sub-project perl -p -e 's/\$\{\{([^}]+)\}\}/defined $ENV{$1} ? $ENV{$1} : $&/eg' \ - < environment.tpl \ - > "$output_dir/environment" \ - 2> /dev/null + "$output_dir/environment" \ + 2>/dev/null elif [ "$project" = "api" ]; then perl -p -e 's/\$\{\{([^}]+)\}\}/defined $ENV{$1} ? $ENV{$1} : $&/eg' \ - < environment.tpl \ - > "$output_dir/environment" \ - 2> /dev/null + "$output_dir/environment" \ + 2>/dev/null fi diff --git a/scripts/install_all.sh b/scripts/install_all.sh index 0d389712e..30a34c080 100755 --- a/scripts/install_all.sh +++ b/scripts/install_all.sh @@ -1,6 +1,6 @@ #!/bin/sh -# Exit on error +# Exit on error. set -e # Config variables @@ -8,7 +8,10 @@ TERRAFORM_VERSION="0.13.5" # This script should always run as if it were being called from # the directory it lives in. -script_directory="$(cd "$(dirname "$0")" || exit; pwd)" +script_directory="$( + cd "$(dirname "$0")" || exit + pwd +)" cd "$script_directory" || exit print_description() { @@ -37,117 +40,117 @@ confirm() { printf "%s [y/N] " "$1" read -r confirmation if ! [ "$confirmation" = "y" ]; then - echo "Confirmation failure" >&2 + echo "Confirmation failure" >&2 exit 1 fi } while getopts "hv" opt; do case $opt in - h) - print_description - echo - print_usage - exit 0 - ;; - v) - OUTPUT="/dev/stdout" - ;; - \?) - echo "Invalid option: -$OPTARG" >&2 - print_usage >&2 - exit 1 - ;; + h) + print_description + echo + print_usage + exit 0 + ;; + v) + OUTPUT="/dev/stdout" + ;; + \?) + echo "Invalid option: -$OPTARG" >&2 + print_usage >&2 + exit 1 + ;; esac done # Unless output was set to stdout by the verbose flag, set it to /dev/null -# to hide the stdout of package management commands +# to hide the stdout of package management commands. if [ -z "$OUTPUT" ]; then OUTPUT="/dev/null" fi if [ -z "$INSTALL_CMD" ]; then case "$(uname)" in - "Darwin") - if ! command -v brew >/dev/null; then - confirm "Would you like to install Homebrew?" - /usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)" - fi - - INSTALL_CMD="brew install" - INSTALL_CASK_CMD="brew cask install" - BREW=true - ;; - "Linux") - if command -v apt >/dev/null; then - sudo apt-get update - INSTALL_CMD="sudo apt-get install --assume-yes" - APT=true - else - echo "Your Linux distribution is not officially supported," >&2 - echo "but it *should* be able to run the required services. You need to manually" >&2 - echo "install dependencies or give the command to install dependencies with \$INSTALL_CMD." >&2 - exit 1 - fi - ;; - *) - echo "$(uname) is an unsupported operating system." >&2 - echo "You can try to provide a package manager command with \$INSTALL_CMD," >&2 - echo "but your mileage may vary." >&2 + "Darwin") + if ! command -v brew >/dev/null; then + confirm "Would you like to install Homebrew?" + /usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)" + fi + + INSTALL_CMD="brew install" + INSTALL_CASK_CMD="brew cask install" + BREW=true + ;; + "Linux") + if command -v apt >/dev/null; then + sudo apt-get update + INSTALL_CMD="sudo apt-get install --assume-yes" + APT=true + else + echo "Your Linux distribution is not officially supported," >&2 + echo "but it *should* be able to run the required services. You need to manually" >&2 + echo "install dependencies or give the command to install dependencies with \$INSTALL_CMD." >&2 exit 1 - ;; + fi + ;; + *) + echo "$(uname) is an unsupported operating system." >&2 + echo "You can try to provide a package manager command with \$INSTALL_CMD," >&2 + echo "but your mileage may vary." >&2 + exit 1 + ;; esac fi -if ! command -v docker > /dev/null; then +if ! command -v docker >/dev/null; then echo "Installing Docker..." - # On macOS, install docker desktop with Homebrew cask - if [ $BREW ]; then - $INSTALL_CASK_CMD docker > $OUTPUT + # On macOS, install docker desktop with Homebrew cask. + if [ "$BREW" ]; then + $INSTALL_CASK_CMD docker >"$OUTPUT" else - $INSTALL_CMD docker.io > $OUTPUT || (echo "You must manually install docker" && exit 1) + $INSTALL_CMD docker.io >"$OUTPUT" || (echo "You must manually install Docker" && exit 1) - echo "Fixing docker permissions..." + echo "Fixing Docker permissions..." sudo groupadd -f docker sudo usermod -aG docker "$USER" - echo - echo "Logout and log back in to apply the permissions changes, then execute this script again." - exit 0 + echo + echo "Logout and log back in to apply the permissions changes, then execute this script again." + exit 0 fi fi -if ! command -v pip3 > /dev/null && ! [ $BREW ]; then # Don't reinstall python on macOS - echo "Installing python and pip..." - $INSTALL_CMD python3-pip > $OUTPUT || (echo "You must manually install python and pip" && exit 1) +if ! command -v pip3 >/dev/null && ! [ "$BREW" ]; then # Don't reinstall python on macOS + echo "Installing Python and pip..." + $INSTALL_CMD python3-pip >"$OUTPUT" || (echo "You must manually install Python and pip" && exit 1) fi -if ! command -v terraform > /dev/null; then - echo "Installing terraform..." - if [ $BREW ]; then - $INSTALL_CMD terraform > $OUTPUT - elif [ $APT ] || confirm "Would you like to automatically install Terraform for amd64 linux?"; then - $INSTALL_CMD unzip > $OUTPUT +if ! command -v terraform >/dev/null; then + echo "Installing Terraform..." + if [ "$BREW" ]; then + $INSTALL_CMD terraform >"$OUTPUT" + elif [ "$APT" ] || confirm "Would you like to automatically install Terraform for amd64 Linux?"; then + $INSTALL_CMD unzip >"$OUTPUT" curl -0s "https://releases.hashicorp.com/terraform/${TERRAFORM_VERSION}/terraform_${TERRAFORM_VERSION}_linux_amd64.zip" \ - > "terraform_${TERRAFORM_VERSION}_linux_amd64.zip" + >"terraform_${TERRAFORM_VERSION}_linux_amd64.zip" sudo unzip -d /usr/bin "terraform_${TERRAFORM_VERSION}_linux_amd64.zip" sudo chmod a+rx /usr/bin/terraform - rm "terraform_${TERRAFORM_VERSION}_linux_amd64.zip" + rm "terraform_${TERRAFORM_VERSION}_linux_amd64.zip" else echo "You need to manually install Terraform before continuing..." >&2 exit 1 fi fi -if ! command -v pre-commit > /dev/null; then +if ! command -v pre-commit >/dev/null; then message="Would you like to automatically install pre-commit? \ Note: This will install all the required dependencies (black, isort, etc) \ using an additional ~185MB of disk space." - if [ $APT ] || confirm "$message"; then + if [ "$APT" ] || confirm "$message"; then echo "Installing pre-commit..." - $INSTALL_CMD shellcheck > $OUTPUT + $INSTALL_CMD shellcheck >"$OUTPUT" pip3 install pre-commit pre-commit install else @@ -155,32 +158,32 @@ using an additional ~185MB of disk space." fi fi -if ! command -v jq > /dev/null; then +if ! command -v jq >/dev/null; then echo "Installing jq..." - $INSTALL_CMD jq > $OUTPUT || (echo "You must manually install jq" && exit 1) + $INSTALL_CMD jq >"$OUTPUT" || (echo "You must manually install jq" && exit 1) fi -if ! command -v ip > /dev/null; then - if [ $BREW ]; then - $INSTALL_CMD iproute2mac > $OUTPUT +if ! command -v ip >/dev/null; then + if [ "$BREW" ]; then + $INSTALL_CMD iproute2mac >"$OUTPUT" else - $INSTALL_CMD iproute2 > $OUTPUT || (echo "You must manually install iproute2" && exit 1) + $INSTALL_CMD iproute2 >"$OUTPUT" || (echo "You must manually install iproute2" && exit 1) fi fi echo "Starting postgres and installing the database..." -./run_postgres.sh > $OUTPUT -./install_db_docker.sh > $OUTPUT +./run_postgres.sh >"$OUTPUT" +./install_db_docker.sh >"$OUTPUT" echo "Starting elasticsearch and building the ES Indexes..." -./run_es.sh > $OUTPUT -./rebuild_es_index.sh > $OUTPUT +./run_es.sh >"$OUTPUT" +./rebuild_es_index.sh >"$OUTPUT" echo "Creating virtual environment..." -./create_virtualenv.sh > $OUTPUT +./create_virtualenv.sh >"$OUTPUT" echo "Run \`source dr_env/bin/activate\` to activate the virtual environment." echo "Updating common dependencies..." -# Source the virtual environment first +# Source the virtual environment first. . ../dr_env/bin/activate -./update_models.sh > $OUTPUT +./update_models.sh >"$OUTPUT" diff --git a/scripts/install_db_docker.sh b/scripts/install_db_docker.sh index 52d2e3138..8dafc2354 100755 --- a/scripts/install_db_docker.sh +++ b/scripts/install_db_docker.sh @@ -1,8 +1,45 @@ #! /bin/sh -docker run -e PGPASSWORD=mysecretpassword --rm --link drdb:postgres postgres:9.6.6 psql -c "create database data_refinery" -h postgres -U postgres -docker run -e PGPASSWORD=mysecretpassword --rm --link drdb:postgres postgres:9.6.6 psql -c "CREATE ROLE data_refinery_user WITH LOGIN PASSWORD 'data_refinery_password';" -h postgres -U postgres -docker run -e PGPASSWORD=mysecretpassword --rm --link drdb:postgres postgres:9.6.6 psql -c 'GRANT ALL PRIVILEGES ON DATABASE data_refinery TO data_refinery_user;' -h postgres -U postgres -docker run -e PGPASSWORD=mysecretpassword --rm --link drdb:postgres postgres:9.6.6 psql -c 'ALTER USER data_refinery_user CREATEDB;' -h postgres -U postgres -docker run -e PGPASSWORD=mysecretpassword --rm --link drdb:postgres postgres:9.6.6 psql -c 'ALTER ROLE data_refinery_user superuser;' -h postgres -U postgres -docker run -e PGPASSWORD=mysecretpassword --rm --link drdb:postgres postgres:9.6.6 psql -c 'CREATE EXTENSION IF NOT EXISTS hstore;' -h postgres -U postgres -d data_refinery +POSTGRES_VERSION="9.6.6" + +docker run \ + --env PGPASSWORD=mysecretpassword \ + --link drdb:postgres \ + --rm \ + "postgres:$POSTGRES_VERSION" \ + psql -c "create database data_refinery" -h postgres -U postgres + +docker run \ + --env PGPASSWORD=mysecretpassword \ + --link drdb:postgres \ + --rm \ + "postgres:$POSTGRES_VERSION" \ + psql -c "CREATE ROLE data_refinery_user WITH LOGIN PASSWORD 'data_refinery_password';" -h postgres -U postgres + +docker run \ + --env PGPASSWORD=mysecretpassword \ + --link drdb:postgres \ + --rm \ + "postgres:$POSTGRES_VERSION" \ + psql -c 'GRANT ALL PRIVILEGES ON DATABASE data_refinery TO data_refinery_user;' -h postgres -U postgres + +docker run \ + --env PGPASSWORD=mysecretpassword \ + --link drdb:postgres \ + --rm \ + "postgres:$POSTGRES_VERSION" \ + psql -c 'ALTER USER data_refinery_user CREATEDB;' -h postgres -U postgres + +docker run \ + --env PGPASSWORD=mysecretpassword \ + --link drdb:postgres \ + --rm \ + "postgres:$POSTGRES_VERSION" \ + psql -c 'ALTER ROLE data_refinery_user superuser;' -h postgres -U postgres + +docker run \ + --env PGPASSWORD=mysecretpassword \ + --link drdb:postgres \ + --rm \ + "postgres:$POSTGRES_VERSION" \ + psql -c 'CREATE EXTENSION IF NOT EXISTS hstore;' -h postgres -U postgres -d data_refinery diff --git a/scripts/kill_all_jobs.sh b/scripts/kill_all_jobs.sh index 6ef70be94..4da0eafa4 100755 --- a/scripts/kill_all_jobs.sh +++ b/scripts/kill_all_jobs.sh @@ -2,13 +2,16 @@ # This script should always run as if it were being called from # the directory it lives in. -script_directory="$(cd "$(dirname "$0")" || exit; pwd)" +script_directory="$( + cd "$(dirname "$0")" || exit + pwd +)" cd "$script_directory" || exit while read -r row; do # Exporting an expansion rather than a variable, which is exactly what we want to do. # shellcheck disable=SC2163 export "${row}" -done < ../infrastructure/prod_env +done <../infrastructure/prod_env python3 kill_all_jobs.py diff --git a/scripts/make_migrations.sh b/scripts/make_migrations.sh index 25ef9e6c8..807531569 100755 --- a/scripts/make_migrations.sh +++ b/scripts/make_migrations.sh @@ -3,34 +3,44 @@ # Script for migrating the database using a Docker container so no # virtual environment is needed on the host machine. -# Exit on error +# Exit on error. set -e # This script should always run as if it were being called from # the directory it lives in. -script_directory="$(cd "$(dirname "$0")" || exit; pwd)" +script_directory="$( + cd "$(dirname "$0")" || exit + pwd +)" cd "$script_directory" || exit ./prepare_image.sh -i migrations -s common . ./common.sh + DB_HOST_IP=$(get_docker_db_ip_address) docker run \ - --volume "$script_directory/../common/data_refinery_common":/home/user/data_refinery_common \ - --add-host=database:"$DB_HOST_IP" \ - --env-file ../common/environments/local \ - --interactive \ - ccdlstaging/dr_migrations python3 manage.py makemigrations data_refinery_common + --add-host=database:"$DB_HOST_IP" \ + --env-file ../common/environments/local \ + --interactive \ + --platform linux/amd64 \ + --volume "$script_directory/../common/data_refinery_common":/home/user/data_refinery_common \ + "$DOCKERHUB_REPO/dr_migrations" \ + python3 manage.py makemigrations data_refinery_common docker run \ - --volume "$script_directory/../common/data_refinery_common":/home/user/data_refinery_common \ - --add-host=database:"$DB_HOST_IP" \ - --env-file ../common/environments/local \ - ccdlstaging/dr_migrations python3 manage.py migrate + --add-host=database:"$DB_HOST_IP" \ + --env-file ../common/environments/local \ + --platform linux/amd64 \ + --volume "$script_directory/../common/data_refinery_common":/home/user/data_refinery_common \ + "$DOCKERHUB_REPO/dr_migrations" \ + python3 manage.py migrate docker run \ - --volume "$script_directory/../common/data_refinery_common":/home/user/data_refinery_common \ - --add-host=database:"$DB_HOST_IP" \ - --env-file ../common/environments/local \ - ccdlstaging/dr_migrations python3 manage.py createcachetable + --add-host=database:"$DB_HOST_IP" \ + --env-file ../common/environments/local \ + --platform linux/amd64 \ + --volume "$script_directory/../common/data_refinery_common":/home/user/data_refinery_common \ + "$DOCKERHUB_REPO/dr_migrations" \ + python3 manage.py createcachetable diff --git a/scripts/prepare_image.sh b/scripts/prepare_image.sh index 81975da90..4bdff97c4 100755 --- a/scripts/prepare_image.sh +++ b/scripts/prepare_image.sh @@ -2,10 +2,12 @@ # This script should always run as if it were being called from # the directory it lives in. -script_directory="$(cd "$(dirname "$0")" || exit; pwd)" +script_directory="$( + cd "$(dirname "$0")" || exit + pwd +)" cd "$script_directory" || exit -# Import the functions in common.sh . ./common.sh # We need access to all of the projects @@ -18,108 +20,129 @@ print_description() { print_options() { echo "Options:" - echo " -h Prints the help message" + echo " -h Prints the help message." echo " -i IMAGE The image to be prepared. This must be specified." echo " -s SERVICE The service to seach for a dockerfile." - echo " The default option is 'workers'" - echo " -p Pull the latest version of the image from Dockerhub" - echo " -d REPO The docker repo to pull images from." - echo " The default option is 'ccdl'" + echo " The default option is 'workers'." + echo " -u Push the built image to the Dockerhub." + echo " -r REPO The docker registry to use for pull/push actions." + echo " The default option is 'ccdlstaging'." echo echo "Examples:" echo " Build the image ccdl/dr_downloaders:" - echo " ./scripts/prepare_image.sh -i downloaders -d ccdl" + echo " ./scripts/prepare_image.sh -i downloaders -r ccdlstaging" } -while getopts "phi:d:s:" opt; do +while getopts "uhi:r:s:" opt; do case $opt in - i) - image=$OPTARG - ;; - d) - dockerhub_repo=$OPTARG - ;; - p) - pull="True" - ;; - s) - service=$OPTARG - ;; - h) - print_description - echo - print_options - exit 0 - ;; - \?) - echo "Invalid option: -$OPTARG" >&2 - print_options >&2 - exit 1 - ;; - :) - echo "Option -$OPTARG requires an argument." >&2 - print_options >&2 - exit 1 - ;; + i) + IMAGE_NAME="$OPTARG" + ;; + r) + DOCKERHUB_REPO="$OPTARG" + ;; + + s) + SERVICE="$OPTARG" + ;; + u) + DOCKER_ACTION="--push" + ;; + h) + print_description + echo + print_options + exit 0 + ;; + \?) + echo "Invalid option: -$OPTARG" >&2 + print_options >&2 + exit 1 + ;; + :) + echo "Option -$OPTARG requires an argument." >&2 + print_options >&2 + exit 1 + ;; esac done -if [ -z "$image" ]; then +if [ -z "$IMAGE_NAME" ]; then echo "Error: you must specify an image with -i" >&2 exit 1 fi - -if [ -z "$service" ]; then - service="workers" +if [ -z "$SERVICE" ]; then + SERVICE="workers" fi -if [ -z "$dockerhub_repo" ]; then - dockerhub_repo="ccdlstaging" +if [ -z "$DOCKERHUB_REPO" ]; then + DOCKERHUB_REPO="ccdlstaging" fi -# Default to "local" for system version if we're not running in the cloud. +# Defaults to commit hash value for if we're not running in the cloud. if [ -z "$SYSTEM_VERSION" ]; then - SYSTEM_VERSION="local$(date +%s)" + SYSTEM_VERSION="$(get_branch_hash)" fi -# We want to check if a test image has been built for this branch. If -# it has we should use that rather than building it slowly. -image_name="$dockerhub_repo/dr_$image" -# shellcheck disable=SC2086 -if [ "$(docker_img_exists $image_name $branch_name)" ] ; then - docker pull "$image_name:$branch_name" -elif [ -n "$pull" ]; then - docker pull "$image_name" -else - echo "" - echo "Rebuilding the $image_name image." - finished=1 - attempts=0 - while [ $finished != 0 ] && [ $attempts -lt 3 ]; do - if [ $attempts -gt 0 ]; then - echo "Failed to build $image_name, trying again." - fi - - - if test "$GITHUB_ACTIONS"; then - # docker needs repositories to be lowercase - CACHE_REPO="$(echo "ghcr.io/$GITHUB_REPOSITORY" | tr '[:upper:]' '[:lower:]')" - CACHED_PACKAGE="$CACHE_REPO/dr_$image" - CACHE="--build-arg BUILDKIT_INLINE_CACHE=1 --cache-from $CACHED_PACKAGE" - fi - - docker build \ - -t "$image_name" \ - -f "$service/dockerfiles/Dockerfile.$image" \ - --build-arg SYSTEM_VERSION="$SYSTEM_VERSION" \ - $CACHE . - finished=$? - attempts=$((attempts+1)) - done - - if [ $finished != 0 ] && [ $attempts -ge 3 ]; then - echo "Could not build $image_name after three attempts." - exit 1 +if [ -z "$DOCKER_ACTION" ]; then + DOCKER_ACTION="--load" +fi + +DOCKERHUB_IMAGE="$DOCKERHUB_REPO/dr_$IMAGE_NAME" + +CACHE_FROM_LATEST="cache-from=type=registry,ref=${DOCKERHUB_IMAGE}_cache:latest" +CACHE_FROM_VERSION="cache-from=type=registry,ref=${DOCKERHUB_IMAGE}_cache:$SYSTEM_VERSION" +CACHE_TO_LATEST="cache-to=type=registry,ref=${DOCKERHUB_IMAGE}_cache:latest,mode=max" +CACHE_TO_VERSION="cache-to=type=registry,ref=${DOCKERHUB_IMAGE}_cache:$SYSTEM_VERSION,mode=max" + +if test "$GITHUB_ACTION"; then + CACHE_TO_LATEST="cache-to=type=gha" + CACHE_TO_VERSION="cache-to=type=gha" + DOCKER_ACTION="--push" +fi + +DOCKER_FILE_PATH="$SERVICE/dockerfiles/Dockerfile.$IMAGE_NAME" + +echo +echo "Building the $IMAGE_NAME:$SYSTEM_VERSION image from $DOCKER_FILE_PATH." +echo + +attempt=0 +attempts=3 +finished=1 +while [ $finished != 0 ] && [ $attempt -lt $attempts ]; do + if [ $attempt -gt 0 ]; then + echo "Failed to build $IMAGE_NAME:$SYSTEM_VERSION image, trying again." fi + + set_up_docker_builder + + docker buildx build \ + --build-arg DOCKERHUB_REPO="$DOCKERHUB_REPO" \ + --build-arg SYSTEM_VERSION="$SYSTEM_VERSION" \ + --"$CACHE_FROM_LATEST" \ + --"$CACHE_FROM_VERSION" \ + --"$CACHE_TO_LATEST" \ + --"$CACHE_TO_VERSION" \ + --file "$DOCKER_FILE_PATH" \ + --platform linux/amd64 \ + --tag "$DOCKERHUB_IMAGE:latest" \ + --tag "$DOCKERHUB_IMAGE:$SYSTEM_VERSION" \ + "$DOCKER_ACTION" \ + . + + finished=$? + attempt=$((attempt + 1)) +done + +if [ $finished -ne 0 ] && [ $attempt -ge $attempts ]; then + echo "Could not build $DOCKERHUB_IMAGE after $attempt attempts." + exit 1 +fi + +if test "$GITHUB_ACTION"; then + docker pull \ + --platform linux/amd64 \ + "$DOCKERHUB_IMAGE" fi diff --git a/scripts/rebuild_es_index.sh b/scripts/rebuild_es_index.sh index 30fded027..c3ac7745b 100755 --- a/scripts/rebuild_es_index.sh +++ b/scripts/rebuild_es_index.sh @@ -2,7 +2,10 @@ # This script should always run as if it were being called from # the directory it lives in. -script_directory="$(cd "$(dirname "$0")" || exit; pwd)" +script_directory="$( + cd "$(dirname "$0")" || exit + pwd +)" cd "$script_directory" || exit ./run_manage.sh -i api_local -s api search_index --rebuild -f diff --git a/scripts/reinit_database.sh b/scripts/reinit_database.sh index 18107000d..d397c9c14 100755 --- a/scripts/reinit_database.sh +++ b/scripts/reinit_database.sh @@ -2,10 +2,12 @@ # Reintializes the database so there's no data or migrations run against it. - # This script should always run as if it were being called from # the directory it lives in. -script_directory="$(cd "$(dirname "$0")" || exit; pwd)" +script_directory="$( + cd "$(dirname "$0")" || exit + pwd +)" cd "$script_directory" || exit # Clear it out. diff --git a/scripts/run_all_tests.sh b/scripts/run_all_tests.sh index 9372e43f2..20f7b4a14 100755 --- a/scripts/run_all_tests.sh +++ b/scripts/run_all_tests.sh @@ -7,7 +7,10 @@ set -e # This script should always run as if it were being called from # the directory it lives in. -script_directory="$(cd "$(dirname "$0")" || exit; pwd)" +script_directory="$( + cd "$(dirname "$0")" || exit + pwd +)" cd "$script_directory" || exit # Get access to all of the refinebio project diff --git a/scripts/run_es.sh b/scripts/run_es.sh index c300aca2f..9c2a9681a 100755 --- a/scripts/run_es.sh +++ b/scripts/run_es.sh @@ -1,13 +1,21 @@ #! /bin/sh -docker rm -f dres 2> /dev/null +docker rm -f dres 2>/dev/null -# Check if a docker database named "dres" exists, and if so just start it +# Check if a docker database named "dres" exists, and if so just start it. if [ "$(docker ps -a --filter name=dres -q)" ]; then - docker start dres > /dev/null -# Otherwise, run it with `docker run` + docker start dres >/dev/null +# Otherwise, run it with `docker run`. else - docker run --name dres -p 9200:9200 -p 9300:9300 -e "discovery.type=single-node" -e "indices.query.bool.max_clause_count=16384" -d docker.elastic.co/elasticsearch/elasticsearch:6.5.4 + docker run \ + --detach \ + --env "discovery.type=single-node" \ + --env "indices.query.bool.max_clause_count=16384" \ + --name dres \ + --platform linux/amd64 \ + --publish 9200:9200 \ + --publish 9300:9300 \ + docker.elastic.co/elasticsearch/elasticsearch:6.5.4 fi echo "Started ElasticSearch." diff --git a/scripts/run_manage.sh b/scripts/run_manage.sh index 51cc2f550..899d05c29 100755 --- a/scripts/run_manage.sh +++ b/scripts/run_manage.sh @@ -6,13 +6,16 @@ # This script should always run as if it were being called from # the directory it lives in. -script_directory="$(cd "$(dirname "$0")" || exit; pwd)" +script_directory="$( + cd "$(dirname "$0")" || exit + pwd +)" cd "$script_directory" || exit -# Import the functions in common.sh +# Import the functions in common.sh. . ./common.sh -# We need access to all of the projects +# We need access to all of the projects. cd .. print_description() { @@ -44,7 +47,7 @@ if [ "$1" = "-i" ]; then shift if [ -z "$1" ]; then echo "Error: Missing argument for -i" >&2 - echo + echo print_options >&2 exit 1 fi @@ -62,7 +65,7 @@ if [ "$1" = "-s" ]; then shift if [ -z "$1" ]; then echo "Error: Missing argument for -s" >&2 - echo + echo print_options >&2 exit 1 fi @@ -72,29 +75,44 @@ else service="foreman" fi -# Set up the data volume directory if it does not already exist +if [ -z "$SYSTEM_VERSION" ]; then + SYSTEM_VERSION="$(get_branch_hash)" +fi + +# Set up the data volume directory if it does not already exist. volume_directory="$script_directory/../api/volume" if [ ! -d "$volume_directory" ]; then mkdir "$volume_directory" fi chmod -R a+rwX "$volume_directory" -docker build -t dr_shell -f "$service/dockerfiles/Dockerfile.$image" . +docker build \ + --build-arg DOCKERHUB_REPO="$DOCKERHUB_REPO" \ + --build-arg SYSTEM_VERSION="$SYSTEM_VERSION" \ + --file "$service/dockerfiles/Dockerfile.$image" \ + --platform linux/amd64 \ + --tag dr_shell \ + . DB_HOST_IP=$(get_docker_db_ip_address) ES_HOST_IP=$(get_docker_es_ip_address) -# Only run interactively if we are on a TTY +# Only run interactively if we are on a TTY. if [ -t 1 ]; then - INTERACTIVE="-i" + INTERACTIVE="--interactive" fi -docker run -t $INTERACTIVE \ - --add-host=database:"$DB_HOST_IP" \ - --add-host=elasticsearch:"$ES_HOST_IP" \ - --env AWS_ACCESS_KEY_ID="$AWS_ACCESS_KEY_ID" \ - --env AWS_SECRET_ACCESS_KEY="$AWS_SECRET_ACCESS_KEY" \ - --env-file "$service/environments/local" \ - --volume /tmp:/tmp \ - --volume "$volume_directory":/home/user/data_store \ - dr_shell python3 manage.py "$@" +# shellcheck disable=SC2086 +docker run \ + --add-host=database:"$DB_HOST_IP" \ + --add-host=elasticsearch:"$ES_HOST_IP" \ + --env AWS_ACCESS_KEY_ID="$AWS_ACCESS_KEY_ID" \ + --env AWS_SECRET_ACCESS_KEY="$AWS_SECRET_ACCESS_KEY" \ + --env-file "$service/environments/local" \ + --platform linux/amd64 \ + --tty \ + --volume "$volume_directory":/home/user/data_store \ + --volume /tmp:/tmp \ + $INTERACTIVE \ + dr_shell \ + python3 manage.py "$@" diff --git a/scripts/run_postgres.sh b/scripts/run_postgres.sh index 2798dc04b..6ad077bce 100755 --- a/scripts/run_postgres.sh +++ b/scripts/run_postgres.sh @@ -2,30 +2,39 @@ # This script should always run as if it were being called from # the directory it lives in. -script_directory="$(cd "$(dirname "$0")" || exit; pwd)" +script_directory="$( + cd "$(dirname "$0")" || exit + pwd +)" cd "$script_directory" || exit # Get access to all of refinebio cd .. -# CircleCI Docker won't make this by default for some reason +# CircleCI Docker won't make this by default for some reason. # This doubly nested directory is a hacky workaround to prevent permissions issues. # Suggested here: # https://github.com/docker/for-linux/issues/380#issuecomment-436419102 VOLUMES="$script_directory/../volumes_postgres/volumes_postgres" if [ ! -d "$VOLUMES" ]; then - mkdir -p "$VOLUMES" + mkdir -p "$VOLUMES" fi # Check if a docker database named "drdb" exists, and if so just run it if [ "$(docker ps -a --filter name=drdb -q)" ]; then - docker start drdb > /dev/null - echo "Started database." -# Otherwise, install it from docker hub + docker start drdb >/dev/null + echo "Started database." +# Otherwise, install it from Docker Hub. else - # via https://hub.docker.com/_/postgres/ - # 9.6.6 is the current (as of Jan 23 2018) RDS most recent version. - # Password can be exposed to git/CI because this is only for dev/testing purposes, not real data. - echo "Installing database..." - docker run -p 5432:5432 --name drdb -v "$VOLUMES":/var/lib/postgresql/data -e POSTGRES_PASSWORD=mysecretpassword -d postgres:9.6.6 + # via https://hub.docker.com/_/postgres/ + # 9.6.6 is the current (as of Jan 23 2018) RDS most recent version. + # Password can be exposed to git/CI because this is only for dev/testing purposes, not real data. + echo "Installing database..." + docker run \ + --detach \ + --env POSTGRES_PASSWORD=mysecretpassword \ + --name drdb \ + --publish 5432:5432 \ + --volume "$VOLUMES":/var/lib/postgresql/data \ + postgres:9.6.6 fi diff --git a/scripts/run_psql_shell.sh b/scripts/run_psql_shell.sh index 9d99de96a..98939c0a0 100755 --- a/scripts/run_psql_shell.sh +++ b/scripts/run_psql_shell.sh @@ -1,2 +1,10 @@ #! /bin/sh -docker run -it -e PGPASSWORD=mysecretpassword --rm --link drdb:postgres postgres:9.6.6 psql -h postgres -U postgres -d data_refinery + +docker run \ + --env PGPASSWORD=mysecretpassword \ + --interactive \ + --link drdb:postgres \ + --rm \ + --tty \ + postgres:9.6.6 \ + psql -h postgres -U postgres -d data_refinery diff --git a/scripts/run_shell.sh b/scripts/run_shell.sh index cfb60d00c..7760d9f2e 100755 --- a/scripts/run_shell.sh +++ b/scripts/run_shell.sh @@ -12,7 +12,10 @@ set -e # This script should always run as if it were being called from # the directory it lives in. -script_directory="$(cd "$(dirname "$0")" || exit; pwd)" +script_directory="$( + cd "$(dirname "$0")" || exit + pwd +)" cd "$script_directory" || exit # Import functions in common.sh @@ -28,15 +31,21 @@ if [ ! -d "$volume_directory" ]; then fi chmod -R a+rwX "$volume_directory" -docker build -t dr_shell -f foreman/dockerfiles/Dockerfile.foreman . +docker build \ + --file foreman/dockerfiles/Dockerfile.foreman \ + --tag dr_shell \ + . DB_HOST_IP=$(get_docker_db_ip_address) -docker run -it \ - --add-host="database:$DB_HOST_IP" \ - --env AWS_ACCESS_KEY_ID="$AWS_ACCESS_KEY_ID" \ - --env AWS_SECRET_ACCESS_KEY="$AWS_SECRET_ACCESS_KEY" \ - --env-file foreman/environments/local \ - --volume /tmp:/tmp \ - --volume "$volume_directory":/home/user/data_store \ - --interactive dr_shell python3 manage.py shell +docker run \ + --add-host="database:$DB_HOST_IP" \ + --env AWS_ACCESS_KEY_ID="$AWS_ACCESS_KEY_ID" \ + --env AWS_SECRET_ACCESS_KEY="$AWS_SECRET_ACCESS_KEY" \ + --env-file foreman/environments/local \ + --interactive \ + --tty \ + --volume "$volume_directory":/home/user/data_store \ + --volume /tmp:/tmp \ + dr_shell \ + python3 manage.py shell diff --git a/scripts/update_docker_images.sh b/scripts/update_docker_images.sh new file mode 100755 index 000000000..f051e8317 --- /dev/null +++ b/scripts/update_docker_images.sh @@ -0,0 +1,136 @@ +#!/bin/sh + +# Exit on failure. +set -e + +# This script should always run as if it were being called from +# the directory it lives in. +script_directory="$( + cd "$(dirname "$0")" || exit + pwd +)" +cd "$script_directory" || exit + +. ./common.sh + +# Get access to all of refinebio. +cd .. + +print_description() { + echo 'This script will re-build all refine.bio docker images and push ' + echo 'them to the specified Dockerhub repository.' +} + +print_options() { + cat <&2 + print_options >&2 + exit 1 + ;; + :) + echo "Option -$OPTARG requires an argument." >&2 + print_options >&2 + exit 1 + ;; + esac +done + +if [ -z "$DOCKERHUB_REPO" ]; then + echo 'Error: must specify the Dockerhub repository with -r' + exit 1 +fi + +if [ -z "$SYSTEM_VERSION" ]; then + SYSTEM_VERSION="$(get_branch_hash)" +fi + +# Intentionally omit affymetrix unless specifically requested since it is so +# intense to build. +image_names="base migrations common_tests foreman api_base api_production api_local \ + transcriptome smasher salmon no_op illumina downloaders compendia" +if [ "$BUILD_AFFYMETRIX" ]; then + image_names="$image_names affymetrix" +fi + +# Set the version for the common project. +echo "$SYSTEM_VERSION" >common/version + +# Create common/dist/data-refinery-common-*.tar.gz, which is +# required by the workers and data_refinery_foreman images. +# Remove old common distributions if they exist. +rm -f common/dist/* +(cd common && python3 setup.py sdist 1>/dev/null) # Run quietly in a subshell. + +# shellcheck disable=SC2086 +for image_name in $image_names; do + case $image_name in + api_base | api_local | api_production) + DOCKER_FILE_PATH="api/dockerfiles/Dockerfile.$image_name" + ;; + base | common_tests | migrations) + DOCKER_FILE_PATH="common/dockerfiles/Dockerfile.$image_name" + ;; + foreman) + DOCKER_FILE_PATH="foreman/dockerfiles/Dockerfile.$image_name" + ;; + *) + DOCKER_FILE_PATH="workers/dockerfiles/Dockerfile.$image_name" + ;; + esac + + echo + echo "Building the $image_name:$SYSTEM_VERSION image from $DOCKER_FILE_PATH." + echo + + DOCKERHUB_IMAGE="$DOCKERHUB_REPO/dr_$image_name" + CACHE_FROM_LATEST="cache-from=type=registry,ref=${DOCKERHUB_IMAGE}_cache:latest" + CACHE_FROM_VERSION="cache-from=type=registry,ref=${DOCKERHUB_IMAGE}_cache:$SYSTEM_VERSION" + CACHE_TO_LATEST="cache-to=type=registry,ref=${DOCKERHUB_IMAGE}_cache:latest,mode=max" + CACHE_TO_VERSION="cache-to=type=registry,ref=${DOCKERHUB_IMAGE}_cache:$SYSTEM_VERSION,mode=max" + + set_up_docker_builder + + docker buildx build \ + --build-arg DOCKERHUB_REPO="$DOCKERHUB_REPO" \ + --build-arg SYSTEM_VERSION="$SYSTEM_VERSION" \ + --"$CACHE_FROM_LATEST" \ + --"$CACHE_FROM_VERSION" \ + --"$CACHE_TO_LATEST" \ + --"$CACHE_TO_VERSION" \ + --file "$DOCKER_FILE_PATH" \ + --platform linux/amd64 \ + --push \ + --tag "$DOCKERHUB_IMAGE:latest" \ + --tag "$DOCKERHUB_IMAGE:$SYSTEM_VERSION" \ + . +done diff --git a/scripts/update_models.sh b/scripts/update_models.sh index d6648df8f..d04fd6810 100755 --- a/scripts/update_models.sh +++ b/scripts/update_models.sh @@ -1,31 +1,36 @@ #! /bin/sh -# Makes migrations and re-installs so Docker images update locally +# Makes migrations and re-installs so Docker images update locally. -# Exit on fail +# Exit on fail. set -e # This script should always run as if it were being called from # the directory it lives in. -script_directory="$(cd "$(dirname "$0")" || exit; pwd)" +script_directory="$( + cd "$(dirname "$0")" || exit + pwd +)" cd "$script_directory" || exit -# Get access to all of refinebio +# Get access to all of refinebio. cd .. -if ! docker ps | tail -n +2 | awk '{ print $NF }' | grep drdb > /dev/null; then +if ! docker ps | tail -n +2 | awk '{ print $NF }' | grep drdb >/dev/null; then echo "You must start Postgres first with:" >&2 echo "./scripts/run_postgres.sh" >&2 exit 1 fi -# Default to "0.0.0.dev" for system version if we're not running in the cloud. +. ./scripts/common.sh + +# Default to the branch name hash for system version if we're not running in the cloud. if [ -z "$SYSTEM_VERSION" ]; then - SYSTEM_VERSION="0.0.0.dev$(date +%s)" + SYSTEM_VERSION="$(get_branch_hash)" export SYSTEM_VERSION fi # Put this in place for common to read from. -echo "$SYSTEM_VERSION" > common/version +echo "$SYSTEM_VERSION" >common/version # Ensure there is only one distribution to copy over. rm -f common/dist/* diff --git a/scripts/update_my_docker_images.sh b/scripts/update_my_docker_images.sh deleted file mode 100755 index e49d1d542..000000000 --- a/scripts/update_my_docker_images.sh +++ /dev/null @@ -1,126 +0,0 @@ -#!/bin/sh - -# This script is very similar to .circleci/update_docker_images.sh but it has less -# production/cloud related checks. - -# Exit on failure -set -e - -# This script should always run as if it were being called from -# the directory it lives in. -script_directory="$(cd "$(dirname "$0")" || exit; pwd)" -cd "$script_directory" || exit - -# Get access to all of refinebio -cd .. - -print_description() { - echo 'This script will re-build all refine.bio docker images and push them to' - echo 'the specified Dockerhub repo.' -} - -print_options() { - cat << EOF -There are two required arguments for this script: --d specifies the Dockerhub repo you would like to deploy to. --v specifies the version you would like to build. This version will passed into - the Docker image as the environment variable SYSTEM_VERSION. - It also will be used as the tag for the Docker images built. - -There is also one optional argument: --a also build the affymetrix image - (we normally don't because it is so intense to build) -EOF -} - -while getopts ":d:v:ah" opt; do - case $opt in - d) - export DOCKERHUB_REPO="$OPTARG" - ;; - v) - export SYSTEM_VERSION="$OPTARG" - ;; - a) - AFFYMETRIX=true - ;; - h) - print_description - echo - print_options - exit 0 - ;; - \?) - echo "Invalid option: -$OPTARG" >&2 - print_options >&2 - exit 1 - ;; - :) - echo "Option -$OPTARG requires an argument." >&2 - print_options >&2 - exit 1 - ;; - esac -done - -if [ -z "$DOCKERHUB_REPO" ]; then - echo 'Error: must specify the Dockerhub repo with -d' - exit 1 -fi - -if [ -z "$SYSTEM_VERSION" ]; then - echo 'Error: must specify the version repo with -v' - exit 1 -fi - -# Intentionally omit affymetrix unless specifically requested since it is so intense to build. -CCDL_WORKER_IMGS="salmon transcriptome no_op downloaders illumina smasher compendia" -if [ "$AFFYMETRIX" ]; then - CCDL_WORKER_IMGS="$CCDL_WORKER_IMGS affymetrix" -fi - -# Set the version for the common project. -echo "$SYSTEM_VERSION" > common/version - -# Create common/dist/data-refinery-common-*.tar.gz, which is -# required by the workers and data_refinery_foreman images. -## Remove old common distributions if they exist -rm -f common/dist/* -(cd common && python3 setup.py sdist) - -for IMG in $CCDL_WORKER_IMGS; do - image_name="$DOCKERHUB_REPO/dr_$IMG" - - echo "Building docker image: $image_name:$SYSTEM_VERSION" - # Build and push image. - docker build \ - -t "$image_name:$SYSTEM_VERSION" \ - -f "workers/dockerfiles/Dockerfile.$IMG" \ - --build-arg SYSTEM_VERSION="$SYSTEM_VERSION" . - docker push "$image_name:$SYSTEM_VERSION" - # Update latest version - docker tag "$image_name:$SYSTEM_VERSION" "$image_name:latest" - docker push "$image_name:latest" -done - -# Build and push Foreman image. -FOREMAN_DOCKER_IMAGE="$DOCKERHUB_REPO/dr_foreman" -docker build \ - -t "$FOREMAN_DOCKER_IMAGE:$SYSTEM_VERSION" \ - -f foreman/dockerfiles/Dockerfile.foreman \ - --build-arg SYSTEM_VERSION="$SYSTEM_VERSION" . -docker push "$FOREMAN_DOCKER_IMAGE:$SYSTEM_VERSION" -# Update latest version -docker tag "$FOREMAN_DOCKER_IMAGE:$SYSTEM_VERSION" "$FOREMAN_DOCKER_IMAGE:latest" -docker push "$FOREMAN_DOCKER_IMAGE:latest" - -# Build and push API image. -API_DOCKER_IMAGE="$DOCKERHUB_REPO/dr_api" -docker build \ - -t "$API_DOCKER_IMAGE:$SYSTEM_VERSION" \ - -f api/dockerfiles/Dockerfile.api_production \ - --build-arg SYSTEM_VERSION="$SYSTEM_VERSION" . -docker push "$API_DOCKER_IMAGE:$SYSTEM_VERSION" -# Update latest version -docker tag "$API_DOCKER_IMAGE:$SYSTEM_VERSION" "$API_DOCKER_IMAGE:latest" -docker push "$API_DOCKER_IMAGE:latest" diff --git a/workers/R/renv_load.R b/workers/R/renv_load.R deleted file mode 100644 index dd5caa080..000000000 --- a/workers/R/renv_load.R +++ /dev/null @@ -1,16 +0,0 @@ -options(warn = 2) -options(repos = structure(c( - Bioconductor = "https://bioconductor.org/packages/3.6/bioc", - BioconductorAnnotation = "https://bioconductor.org/packages/3.6/data/annotation", - BioconductorExperiment = "https://bioconductor.org/packages/3.6/data/experiment", - CRAN = "https://cloud.r-project.org" -))) -options(Ncpus = parallel::detectCores()) -options(renv.r.version = "3.4.4") -options(renv.settings.use.cache = FALSE) - -install.packages("BiocInstaller") -install.packages("https://cran.r-project.org/src/contrib/Archive/renv/renv_0.16.0.tar.gz") - -renv::consent(provided = TRUE) -renv::restore(prompt = FALSE, rebuild = TRUE) diff --git a/workers/dockerfiles/Dockerfile.affymetrix b/workers/dockerfiles/Dockerfile.affymetrix index 6ac42f4ef..8dad322b3 100644 --- a/workers/dockerfiles/Dockerfile.affymetrix +++ b/workers/dockerfiles/Dockerfile.affymetrix @@ -1,4 +1,6 @@ -FROM ccdlstaging/dr_base:latest +ARG DOCKERHUB_REPO +ARG SYSTEM_VERSION +FROM $DOCKERHUB_REPO/dr_base:$SYSTEM_VERSION # Fail in case of an error at any stage in the pipe. SHELL ["/bin/bash", "-o", "pipefail", "-c"] @@ -6,7 +8,7 @@ SHELL ["/bin/bash", "-o", "pipefail", "-c"] WORKDIR /home/user COPY workers/R/dependencies/affymetrix/renv.lock . -COPY workers/R/renv_load.R . +COPY common/R/renv_load.R . RUN Rscript renv_load.R COPY workers/R/dependencies/affymetrix/install_ensg_pkgs.R . @@ -26,7 +28,6 @@ COPY workers/ . RUN rm -rf /root/.cache/* -ARG SYSTEM_VERSION ENV SYSTEM_VERSION=$SYSTEM_VERSION USER user diff --git a/workers/dockerfiles/Dockerfile.affymetrix_local b/workers/dockerfiles/Dockerfile.affymetrix_local deleted file mode 100644 index 7fe881ab0..000000000 --- a/workers/dockerfiles/Dockerfile.affymetrix_local +++ /dev/null @@ -1,29 +0,0 @@ -FROM ccdlstaging/dr_affymetrix:latest - -# Fail in case of an error at any stage in the pipe. -SHELL ["/bin/bash", "-o", "pipefail", "-c"] - -USER root - -WORKDIR /home/user - -# Remove the version of common already installed. -RUN rm -rf common && \ - pip3 uninstall -y data_refinery_common - -# Get the latest version from the dist directory. -COPY common/dist/data-refinery-common-* common/ -RUN pip3 install --ignore-installed --no-cache-dir \ - common/$(ls common -1 | sort --version-sort | tail -1) - -COPY config/ config/ -COPY workers/ . - -RUN rm -rf /root/.cache/* - -ARG SYSTEM_VERSION -ENV SYSTEM_VERSION=$SYSTEM_VERSION - -USER user - -ENTRYPOINT [] diff --git a/workers/dockerfiles/Dockerfile.compendia b/workers/dockerfiles/Dockerfile.compendia index 7b8240b78..371abf2c7 100644 --- a/workers/dockerfiles/Dockerfile.compendia +++ b/workers/dockerfiles/Dockerfile.compendia @@ -68,7 +68,7 @@ WORKDIR /home/user ENV R_LIBS=/usr/local/lib/R/site-library COPY workers/R/dependencies/compendia/renv.lock . -COPY workers/R/renv_load.R . +COPY common/R/renv_load.R . RUN Rscript renv_load.R COPY workers/data_refinery_workers/requirements/compendia.txt requirements.txt @@ -82,7 +82,8 @@ RUN wget -q "https://bitbucket.org/ariya/phantomjs/downloads/\ phantomjs-2.1.1-linux-x86_64.tar.bz2" && \ tar xvjf phantomjs-2.1.1-linux-x86_64.tar.bz2 -C /usr/local/share/ && \ ln -s /usr/local/share/phantomjs-2.1.1-linux-x86_64/bin/phantomjs \ - /usr/local/bin/ + /usr/local/bin/ && \ + rm phantomjs-2.1.1-linux-x86_64.tar.bz2 # Get the latest version from the dist directory. COPY common/dist/data-refinery-common-* common/ diff --git a/workers/dockerfiles/Dockerfile.downloaders b/workers/dockerfiles/Dockerfile.downloaders index 1b19485e2..5361db49f 100644 --- a/workers/dockerfiles/Dockerfile.downloaders +++ b/workers/dockerfiles/Dockerfile.downloaders @@ -1,4 +1,6 @@ -FROM ccdlstaging/dr_base:latest +ARG DOCKERHUB_REPO +ARG SYSTEM_VERSION +FROM $DOCKERHUB_REPO/dr_base:$SYSTEM_VERSION # Fail in case of an error at any stage in the pipe. SHELL ["/bin/bash", "-o", "pipefail", "-c"] @@ -6,7 +8,7 @@ SHELL ["/bin/bash", "-o", "pipefail", "-c"] WORKDIR /home/user COPY workers/R/dependencies/downloaders/renv.lock . -COPY workers/R/renv_load.R . +COPY common/R/renv_load.R . RUN Rscript renv_load.R COPY workers/data_refinery_workers/downloaders/requirements.txt . @@ -34,7 +36,6 @@ COPY workers/ . RUN rm -rf /root/.cache/* -ARG SYSTEM_VERSION ENV PATH="$PATH:/home/user/.aspera/ascli/sdk" ENV SYSTEM_VERSION=$SYSTEM_VERSION diff --git a/workers/dockerfiles/Dockerfile.illumina b/workers/dockerfiles/Dockerfile.illumina index b89630096..1d771b322 100644 --- a/workers/dockerfiles/Dockerfile.illumina +++ b/workers/dockerfiles/Dockerfile.illumina @@ -1,4 +1,6 @@ -FROM ccdlstaging/dr_base:latest +ARG DOCKERHUB_REPO +ARG SYSTEM_VERSION +FROM $DOCKERHUB_REPO/dr_base:$SYSTEM_VERSION # Fail in case of an error at any stage in the pipe. SHELL ["/bin/bash", "-o", "pipefail", "-c"] @@ -6,7 +8,7 @@ SHELL ["/bin/bash", "-o", "pipefail", "-c"] WORKDIR /home/user COPY workers/R/dependencies/illumina/renv.lock . -COPY workers/R/renv_load.R . +COPY common/R/renv_load.R . RUN Rscript renv_load.R COPY workers/data_refinery_workers/processors/requirements.txt . @@ -25,7 +27,6 @@ COPY workers/illumina_probe_maps/ probe_maps/ RUN rm -rf /root/.cache/* -ARG SYSTEM_VERSION ENV SYSTEM_VERSION=$SYSTEM_VERSION USER user diff --git a/workers/dockerfiles/Dockerfile.no_op b/workers/dockerfiles/Dockerfile.no_op index 11729dba4..7e33a14e3 100644 --- a/workers/dockerfiles/Dockerfile.no_op +++ b/workers/dockerfiles/Dockerfile.no_op @@ -1,4 +1,6 @@ -FROM ccdlstaging/dr_base:latest +ARG DOCKERHUB_REPO +ARG SYSTEM_VERSION +FROM $DOCKERHUB_REPO/dr_base:$SYSTEM_VERSION # Fail in case of an error at any stage in the pipe. SHELL ["/bin/bash", "-o", "pipefail", "-c"] @@ -6,7 +8,7 @@ SHELL ["/bin/bash", "-o", "pipefail", "-c"] WORKDIR /home/user COPY workers/R/dependencies/no_op/renv.lock . -COPY workers/R/renv_load.R . +COPY common/R/renv_load.R . RUN Rscript renv_load.R COPY workers/data_refinery_workers/processors/requirements.txt . @@ -35,7 +37,6 @@ COPY workers/ . RUN rm -rf /root/.cache/* -ARG SYSTEM_VERSION ENV SYSTEM_VERSION=$SYSTEM_VERSION USER user diff --git a/workers/dockerfiles/Dockerfile.salmon b/workers/dockerfiles/Dockerfile.salmon index d9cd8818e..08a3d3299 100644 --- a/workers/dockerfiles/Dockerfile.salmon +++ b/workers/dockerfiles/Dockerfile.salmon @@ -1,4 +1,6 @@ -FROM ccdlstaging/dr_base:latest +ARG DOCKERHUB_REPO +ARG SYSTEM_VERSION +FROM $DOCKERHUB_REPO/dr_base:$SYSTEM_VERSION # Fail in case of an error at any stage in the pipe. SHELL ["/bin/bash", "-o", "pipefail", "-c"] @@ -6,7 +8,7 @@ SHELL ["/bin/bash", "-o", "pipefail", "-c"] WORKDIR /home/user COPY workers/R/dependencies/salmon/renv.lock . -COPY workers/R/renv_load.R . +COPY common/R/renv_load.R . RUN Rscript renv_load.R COPY workers/data_refinery_workers/processors/requirements.txt . @@ -29,7 +31,7 @@ v${SALMON_VERSION}/Salmon-${SALMON_VERSION}_linux_x86_64.tar.gz" && \ -C "Salmon-${SALMON_VERSION}_linux_x86_64" --strip-components 1 && \ ln -sf "$(pwd)/Salmon-${SALMON_VERSION}_linux_x86_64/bin/salmon" \ /usr/local/bin/ && \ - rm -f "Salmon-${SALMON_VERSION}_linux_x86_64.tar.gz" + rm "Salmon-${SALMON_VERSION}_linux_x86_64.tar.gz" # End Salmon installation. ENV SRA_VERSION=2.9.1 @@ -45,7 +47,8 @@ RUN git clone https://github.com/COMBINE-lab/SalmonTools.git && \ wget -q "https://ftp.ncbi.nlm.nih.gov/sra/sdk/${SRA_VERSION}/\ sratoolkit.${SRA_VERSION}-ubuntu64.tar.gz" && \ tar zxfv "sratoolkit.${SRA_VERSION}-ubuntu64.tar.gz" && \ - cp -r "sratoolkit.${SRA_VERSION}-ubuntu64/bin/"* /usr/bin + cp -r "sratoolkit.${SRA_VERSION}-ubuntu64/bin/"* /usr/bin && \ + rm "sratoolkit.${SRA_VERSION}-ubuntu64.tar.gz" # Get the latest version from the dist directory. COPY common/dist/data-refinery-common-* common/ @@ -58,7 +61,6 @@ COPY workers/ . RUN rm -rf /root/.cache/* -ARG SYSTEM_VERSION ENV SYSTEM_VERSION=$SYSTEM_VERSION USER user diff --git a/workers/dockerfiles/Dockerfile.smasher b/workers/dockerfiles/Dockerfile.smasher index 29bba5cd8..f95da5016 100644 --- a/workers/dockerfiles/Dockerfile.smasher +++ b/workers/dockerfiles/Dockerfile.smasher @@ -1,4 +1,6 @@ -FROM ccdlstaging/dr_base:latest +ARG DOCKERHUB_REPO +ARG SYSTEM_VERSION +FROM $DOCKERHUB_REPO/dr_base:$SYSTEM_VERSION # Fail in case of an error at any stage in the pipe. SHELL ["/bin/bash", "-o", "pipefail", "-c"] @@ -6,7 +8,7 @@ SHELL ["/bin/bash", "-o", "pipefail", "-c"] WORKDIR /home/user COPY workers/R/dependencies/smasher/renv.lock . -COPY workers/R/renv_load.R . +COPY common/R/renv_load.R . RUN Rscript renv_load.R COPY workers/data_refinery_workers/processors/requirements.txt . @@ -23,7 +25,6 @@ COPY workers/ . RUN rm -rf /root/.cache/* -ARG SYSTEM_VERSION ENV SYSTEM_VERSION=$SYSTEM_VERSION USER user diff --git a/workers/dockerfiles/Dockerfile.transcriptome b/workers/dockerfiles/Dockerfile.transcriptome index 3aec1395b..e3c5328a4 100644 --- a/workers/dockerfiles/Dockerfile.transcriptome +++ b/workers/dockerfiles/Dockerfile.transcriptome @@ -1,17 +1,12 @@ -FROM ccdlstaging/dr_base:latest +ARG DOCKERHUB_REPO +ARG SYSTEM_VERSION +FROM $DOCKERHUB_REPO/dr_base:$SYSTEM_VERSION # Fail in case of an error at any stage in the pipe. SHELL ["/bin/bash", "-o", "pipefail", "-c"] WORKDIR /home/user -COPY workers/data_refinery_workers/processors/requirements.txt . -RUN pip3 install --ignore-installed --no-cache-dir -r requirements.txt && \ - # It's annoying that this can only be installed via git. - git clone https://github.com/deweylab/RSEM.git && \ - cd RSEM && make install && \ - rm -rf RSEM - # Install Salmon. # Tximport requires all experiments to be processed with the same version of # Salmon to work https://github.com/AlexsLemonade/refinebio/issues/1496. @@ -19,6 +14,7 @@ RUN pip3 install --ignore-installed --no-cache-dir -r requirements.txt && \ # all samples from incomplete experiments must have salmon run on them again. ENV SALMON_VERSION=0.13.1 +COPY workers/data_refinery_workers/processors/requirements.txt . # Salmon can extract to a different directory than the name of the tar file. RUN wget -q "https://github.com/COMBINE-lab/salmon/releases/download/\ v${SALMON_VERSION}/Salmon-${SALMON_VERSION}_linux_x86_64.tar.gz" && \ @@ -30,6 +26,13 @@ v${SALMON_VERSION}/Salmon-${SALMON_VERSION}_linux_x86_64.tar.gz" && \ rm -r Salmon* # End Salmon installation. +COPY workers/data_refinery_workers/processors/requirements.txt . +RUN pip3 install --ignore-installed --no-cache-dir -r requirements.txt && \ + # It's annoying that this can only be installed via git. + git clone https://github.com/deweylab/RSEM.git && \ + cd RSEM && make install && \ + rm -rf RSEM + COPY common/dist/data-refinery-common-* common/ RUN pip3 install --ignore-installed --no-cache-dir \ common/$(ls common -1 | sort --version-sort | tail -1) @@ -40,7 +43,6 @@ COPY workers/ . RUN rm -rf /root/.cache/* -ARG SYSTEM_VERSION ENV SYSTEM_VERSION=$SYSTEM_VERSION USER user diff --git a/workers/run_command.sh b/workers/run_command.sh index da50660b1..51dc3b6c9 100755 --- a/workers/run_command.sh +++ b/workers/run_command.sh @@ -7,18 +7,18 @@ set -e while getopts "i:" opt; do case $opt in - i) - image=$OPTARG - ;; - \?) - echo "Invalid option: -$OPTARG" >&2 - exit 1 - ;; + i) + IMAGE="$OPTARG" + ;; + \?) + echo "Invalid option: -$OPTARG" >&2 + exit 1 + ;; esac done -if [ -z "$image" ]; then - image="smasher" +if [ -z "$IMAGE" ]; then + IMAGE="smasher" else shift shift @@ -26,7 +26,10 @@ fi # This script should always run as if it were being called from # the directory it lives in. -script_directory="$(cd "$(dirname "$0")" || exit; pwd)" +script_directory="$( + cd "$(dirname "$0")" || exit + pwd +)" cd "$script_directory" || exit # However in order to give Docker access to all the code we have to @@ -47,16 +50,19 @@ fi chmod -R a+rwX "$volume_directory" . ./scripts/common.sh + DB_HOST_IP=$(get_docker_db_ip_address) -./scripts/prepare_image.sh -i "$image" -s workers -image_name=ccdlstaging/dr_"$image" +./scripts/prepare_image.sh -i "$IMAGE" -s workers docker run \ - --add-host=database:"$DB_HOST_IP" \ - --env-file workers/environments/local \ - --env AWS_ACCESS_KEY_ID \ - --env AWS_SECRET_ACCESS_KEY \ - --volume "$volume_directory":/home/user/data_store \ - --link drdb:postgres \ - -it "$image_name" bash -c "$@" + --add-host=database:"$DB_HOST_IP" \ + --env AWS_ACCESS_KEY_ID \ + --env AWS_SECRET_ACCESS_KEY \ + --env-file workers/environments/local \ + --ineractive \ + --link drdb:postgres \ + --tty \ + --volume "$volume_directory":/home/user/data_store \ + "$DOCKERHUB_REPO/dr_$IMAGE" \ + bash -c "$@" diff --git a/workers/run_janitor.sh b/workers/run_janitor.sh index 27c6ed6f5..70d9dcbde 100755 --- a/workers/run_janitor.sh +++ b/workers/run_janitor.sh @@ -1,19 +1,20 @@ #!/bin/sh -# the directory it lives in. -script_directory="$(cd "$(dirname "$0")" || exit; pwd)" +# The directory it lives in. +script_directory="$( + cd "$(dirname "$0")" || exit + pwd +)" cd "$script_directory" || exit -# However in order to give Docker access to all the code we have to -# move up a level +# However, in order to give Docker access to all the code we have to +# move up a level. cd .. ./scripts/prepare_image.sh -i smasher -image_name="ccdlstaging/dr_smasher" - -volume_directory="$script_directory/volume" . ./scripts/common.sh + DB_HOST_IP=$(get_docker_db_ip_address) AWS_ACCESS_KEY_ID="$(~/bin/aws configure get default.aws_access_key_id)" @@ -22,13 +23,15 @@ AWS_SECRET_ACCESS_KEY="$(~/bin/aws configure get default.aws_secret_access_key)" export AWS_SECRET_ACCESS_KEY docker run \ - -it \ - -m 500m \ - --add-host=database:"$DB_HOST_IP" \ - --env-file workers/environments/local \ - --env AWS_ACCESS_KEY_ID \ - --env AWS_SECRET_ACCESS_KEY \ - --entrypoint ./manage.py \ - --volume "$volume_directory":/home/user/data_store \ - --link drdb:postgres \ - "$image_name" run_janitor + --add-host=database:"$DB_HOST_IP" \ + --entrypoint ./manage.py \ + --env AWS_ACCESS_KEY_ID \ + --env AWS_SECRET_ACCESS_KEY \ + --env-file workers/environments/local \ + --interactive \ + --link drdb:postgres \ + --memory 500m \ + --tty \ + --volume "$script_directory/volume":/home/user/data_store \ + "$DOCKERHUB_REPO/dr_smasher" \ + run_janitor diff --git a/workers/run_job.sh b/workers/run_job.sh index 7342103bc..47d95f192 100755 --- a/workers/run_job.sh +++ b/workers/run_job.sh @@ -1,67 +1,70 @@ #!/bin/bash -# Script for running a django management command to test the worker. +# Script for running a Django management command to test the worker. while getopts "hi:" opt; do case $opt in - i) - image=$OPTARG - ;; - h) - echo "Runs a downloader or processor job. The following arguments are supported:" - echo "-h : Print this help message and exit." - echo "-i : The image to use. Options are:" - echo " downloaders (default)" - echo " salmon" - echo " transcriptome" - echo " no_op" - echo " downloaders" - echo " illumina" - echo " affymetrix" - echo " : What kind of job to run." - echo " Must be either 'run_downloader_job' or 'run_processor_job'." - echo "--job-name= : The type of job to run." - echo " For processor jobs, options are:" - echo " AFFY_TO_PCL" - echo " AGILENT_TWOCOLOR_TO_PCL" - echo " SALMON" - echo " ILLUMINA_TO_PCL" - echo " TRANSCRIPTOME_INDEX_LONG" - echo " TRANSCRIPTOME_INDEX_SHORT" - echo " NO_OP" - echo " For downloader jobs, options are:" - echo " ARRAY_EXPRESS" - echo " SRA" - echo " TRANSCRIPTOME_INDEX" - echo " GEO" - echo "--job-id= : The id of the job you want to run. Must already exist in the database." - echo "" - echo "Note that the must correspond to the ." - echo " AGILENT_TWOCOLOR_TO_PCL is a special case because it requires the 'affymetrix' image." - echo "" - echo "Examples:" - echo " ./workers/run_job.sh run_downloader_job --job-name=SRA --job-id=12345" - echo " ./workers/run_job.sh -i affymetrix run_processor_job --job-name=AGILENT_TWOCOLOR_TO_PCL --job-id=54321" - exit 0 - ;; - \?) - echo "Invalid option: -$OPTARG" >&2 - exit 1 - ;; - :) - echo "Option -$OPTARG requires an argument." >&2 - exit 1 - ;; + i) + IMAGE="$OPTARG" + ;; + h) + echo "Runs a downloader or processor job. The following arguments are supported:" + echo "-h : Print this help message and exit." + echo "-i : The image to use. Options are:" + echo " downloaders (default)" + echo " salmon" + echo " transcriptome" + echo " no_op" + echo " downloaders" + echo " illumina" + echo " affymetrix" + echo " : What kind of job to run." + echo " Must be either 'run_downloader_job' or 'run_processor_job'." + echo "--job-name= : The type of job to run." + echo " For processor jobs, options are:" + echo " AFFY_TO_PCL" + echo " AGILENT_TWOCOLOR_TO_PCL" + echo " SALMON" + echo " ILLUMINA_TO_PCL" + echo " TRANSCRIPTOME_INDEX_LONG" + echo " TRANSCRIPTOME_INDEX_SHORT" + echo " NO_OP" + echo " For downloader jobs, options are:" + echo " ARRAY_EXPRESS" + echo " SRA" + echo " TRANSCRIPTOME_INDEX" + echo " GEO" + echo "--job-id= : The id of the job you want to run. Must already exist in the database." + echo "" + echo "Note that the must correspond to the ." + echo " AGILENT_TWOCOLOR_TO_PCL is a special case because it requires the 'affymetrix' image." + echo "" + echo "Examples:" + echo " ./workers/run_job.sh run_downloader_job --job-name=SRA --job-id=12345" + echo " ./workers/run_job.sh -i affymetrix run_processor_job --job-name=AGILENT_TWOCOLOR_TO_PCL --job-id=54321" + exit 0 + ;; + \?) + echo "Invalid option: -$OPTARG" >&2 + exit 1 + ;; + :) + echo "Option -$OPTARG requires an argument." >&2 + exit 1 + ;; esac done -if [[ -z "$image" ]]; then - image="downloaders" +if [[ -z "$IMAGE" ]]; then + IMAGE="downloaders" fi # This script should always run as if it were being called from # the directory it lives in. -script_directory="$(cd "$(dirname "$0")" || exit; pwd)" +script_directory="$( + cd "$(dirname "$0")" || exit + pwd +)" cd "$script_directory" || exit # However in order to give Docker access to all the code we have to @@ -69,12 +72,12 @@ cd "$script_directory" || exit cd .. # Agilent uses the same image as affymetrix -if [[ "$image" == "affymetrix" || "$image" == "agilent" ]]; then - ./scripts/prepare_image.sh -p -i affymetrix - image_name="ccdlstaging/dr_affymetrix" +if [[ "$IMAGE" == "affymetrix" || "$IMAGE" == "agilent" ]]; then + ./scripts/prepare_image.sh -i affymetrix + IMAGE_NAME="$DOCKERHUB_REPO/dr_affymetrix" else - ./scripts/prepare_image.sh -i "$image" - image_name="ccdlstaging/dr_$image" + ./scripts/prepare_image.sh -i "$IMAGE" + IMAGE_NAME="$DOCKERHUB_REPO/dr_$IMAGE" fi volume_directory="$script_directory/volume" @@ -83,16 +86,20 @@ if [ ! -d "$volume_directory" ]; then fi chmod -R a+rwX "$volume_directory" -source scripts/common.sh +. scripts/common.sh + DB_HOST_IP=$(get_docker_db_ip_address) docker run \ - -it \ - --add-host=database:"$DB_HOST_IP" \ - --env-file workers/environments/local \ - --env AWS_ACCESS_KEY_ID \ - --env AWS_SECRET_ACCESS_KEY \ - --entrypoint ./manage.py \ - --volume "$volume_directory":/home/user/data_store \ - --link drdb:postgres \ - "$image_name" "${@: -3}" "${@: -2}" "${@: -1}" + --add-host=database:"$DB_HOST_IP" \ + --entrypoint ./manage.py \ + --env AWS_ACCESS_KEY_ID \ + --env AWS_SECRET_ACCESS_KEY \ + --env-file workers/environments/local \ + --interactive \ + --link drdb:postgres \ + --platform linux/amd64 \ + --tty \ + --volume "$volume_directory":/home/user/data_store \ + "$IMAGE_NAME" \ + "${@: -3}" "${@: -2}" "${@: -1}" diff --git a/workers/run_tests.sh b/workers/run_tests.sh index 3e03e2ada..a66d0a2f7 100755 --- a/workers/run_tests.sh +++ b/workers/run_tests.sh @@ -3,7 +3,7 @@ # Script for executing Django PyUnit tests within a Docker container. -# Exit on failure +# Exit on failure. set -e print_description() { @@ -20,47 +20,49 @@ print_options() { while getopts ":t:h" opt; do case $opt in - t) - tag=$OPTARG - ;; - h) - print_description - echo - print_options - exit 0 - ;; - \?) - echo "Invalid option: -$OPTARG" >&2 - print_options >&2 - exit 1 - ;; - :) - echo "Option -$OPTARG requires an argument." >&2 - print_options >&2 - exit 1 - ;; + t) + tag="$OPTARG" + ;; + h) + print_description + echo + print_options + exit 0 + ;; + \?) + echo "Invalid option: -$OPTARG" >&2 + print_options >&2 + exit 1 + ;; + :) + echo "Option -$OPTARG requires an argument." >&2 + print_options >&2 + exit 1 + ;; esac done # This script should always run as if it were being called from # the directory it lives in. -script_directory="$(cd "$(dirname "$0")" || exit; pwd)" +script_directory="$( + cd "$(dirname "$0")" || exit + pwd +)" cd "$script_directory" || exit -# However in order to give Docker access to all the code we have to +# However, in order to give Docker access to all the code we have to # move up a level cd .. -# Ensure that postgres is running +# Ensure that Postgres is running. if ! [ "$(docker ps --filter name=drdb -q)" ]; then echo "You must start Postgres first with:" >&2 echo "./scripts/run_postgres.sh" >&2 exit 1 fi -volume_directory="$script_directory/test_volume" - test_data_repo="https://s3.amazonaws.com/data-refinery-test-assets" +volume_directory="$script_directory/test_volume" if [ -z "$tag" ] || [ "$tag" = "salmon" ]; then # Download "salmon quant" test data The `newer` file was to @@ -77,11 +79,11 @@ if [ -z "$tag" ] || [ "$tag" = "salmon" ]; then rm "$volume_directory"/salmon_tests.tar.gz fi - # salmontools test data + # SalmonTools test data. salmontools_test_zip="$test_data_repo/salmontools_test_data.tar.gz" salmontools_test_dir="$volume_directory/salmontools" - # Clean the test data directory + # Clean the test data directory. rm -rf "$salmontools_test_dir" mkdir -p "$salmontools_test_dir" @@ -102,21 +104,21 @@ if [ -z "$tag" ] || [ "$tag" = "salmon" ]; then mkdir -p "$rna_seq_test_raw_dir" echo "Downloading $read_1_name for Salmon tests." wget -q -O "$rna_seq_test_data_1" \ - "$test_data_repo/$read_1_name" + "$test_data_repo/$read_1_name" echo "Downloading $read_2_name for Salmon tests." wget -q -O "$rna_seq_test_data_2" \ - "$test_data_repo/$read_2_name" + "$test_data_repo/$read_2_name" fi if [ ! -e "$dotsra" ]; then mkdir -p "$rna_seq_test_raw_dir" echo "Downloading $dotsra_name for Salmon tests." wget -q -O "$dotsra" \ - "$test_data_repo/$dotsra_name" + "$test_data_repo/$dotsra_name" fi fi if [ -z "$tag" ] || [ "$tag" = "affymetrix" ]; then - # Make sure CEL for test is downloaded from S3 + # Make sure CEL for test is downloaded from S3. cel_name="GSM1426071_CD_colon_active_1.CEL" cel_name2="GSM45588.CEL" cel_name3="GSM1364667_U_110208_7-02-10_S2.CEL" @@ -135,35 +137,35 @@ if [ -z "$tag" ] || [ "$tag" = "affymetrix" ]; then mkdir -p "$cel_test_raw_dir" echo "Downloading CEL for tests." wget -q -O "$cel_test_data_1" \ - "$test_data_repo/$cel_name" + "$test_data_repo/$cel_name" fi if [ ! -e "$cel_test_data_2" ]; then echo "Downloading Non-Brainarray CEL for tests." wget -q -O "$cel_test_data_2" \ - "$test_data_repo/$cel_name2" + "$test_data_repo/$cel_name2" fi if [ ! -e "$cel_test_data_3" ]; then echo "Downloading Huex Brain Array CEL for tests." wget -q -O "$cel_test_data_3" \ - "$test_data_repo/$cel_name3" + "$test_data_repo/$cel_name3" fi if [ ! -e "$pcl_test_data_1" ]; then mkdir -p "$pcl_test_dir" echo "Downloading pre-computed PCL for tests." wget -q -O "$pcl_test_data_1" \ - "$test_data_repo/$pcl_name" + "$test_data_repo/$pcl_name" fi if [ ! -e "$pcl_test_data_2" ]; then mkdir -p "$pcl_test_dir" echo "Downloading pre-computed Non-Brainarray PCL for tests." wget -q -O "$pcl_test_data_2" \ - "$test_data_repo/$pcl_name2" + "$test_data_repo/$pcl_name2" fi if [ ! -e "$pcl_test_data_3" ]; then mkdir -p "$pcl_test_dir" echo "Downloading pre-computed Huex Brain Array PCL for tests." wget -q -O "$pcl_test_data_3" \ - "$test_data_repo/$pcl_name3" + "$test_data_repo/$pcl_name3" fi fi @@ -176,14 +178,14 @@ if [ -z "$tag" ] || [ "$tag" = "transcriptome" ]; then mkdir -p "$tx_index_test_raw_dir" echo "Downloading fasta file for Transcriptome Index tests." wget -q -O "$tx_index_test_raw_dir/$fasta_file" \ - "$test_data_repo/$fasta_file" + "$test_data_repo/$fasta_file" fi gtf_file="aegilops_tauschii_short.gtf.gz" if [ ! -e "$tx_index_test_raw_dir/$gtf_file" ]; then mkdir -p "$tx_index_test_raw_dir" echo "Downloading gtf file for Transcriptome Index tests." wget -q -O "$tx_index_test_raw_dir/$gtf_file" \ - "$test_data_repo/$gtf_file" + "$test_data_repo/$gtf_file" fi tx_index_test_raw_dir2="$volume_directory/raw/TEST/TRANSCRIPTOME_INDEX/" gtf_file2="Homo_sapiens_testdata.gtf" @@ -191,7 +193,7 @@ if [ -z "$tag" ] || [ "$tag" = "transcriptome" ]; then mkdir -p "$tx_index_test_raw_dir2" echo "Downloading second gtf file for Transcriptome Index tests." wget -q -O "$tx_index_test_raw_dir2/$gtf_file2" \ - "$test_data_repo/$gtf_file2" + "$test_data_repo/$gtf_file2" fi fi @@ -210,18 +212,17 @@ GSE41355_non-normalized.txt GSE100301_non-normalized.txt' "$test_data_repo/$ilu_file" fi - i=$(( i + 1 )) + i=$((i + 1)) done unset i - ilu_test_ref_dir="$volume_directory/raw/TEST/ILLUMINA/reference" ilu_ref_file="Ad-Cre-2.AVG_Signal.tsv" if [ ! -e "$ilu_test_ref_dir/$ilu_ref_file" ]; then mkdir -p "$ilu_test_ref_dir" echo "Downloading Illumin reference file for Illumina tests." wget -q -O "$ilu_test_ref_dir/$ilu_ref_file" \ - "$test_data_repo/$ilu_ref_file" + "$test_data_repo/$ilu_ref_file" fi fi @@ -233,7 +234,7 @@ if [ -z "$tag" ] || [ "$tag" = "agilent" ]; then mkdir -p "$at_test_raw_dir" echo "Downloading Agilent file for A2C tests." wget -q -O "$at_test_raw_dir/$at_file" \ - "$test_data_repo/$at_file" + "$test_data_repo/$at_file" fi fi if [ -z "$tag" ] || [ "$tag" = "no_op" ]; then @@ -243,37 +244,37 @@ if [ -z "$tag" ] || [ "$tag" = "no_op" ]; then mkdir -p "$no_test_raw_dir" echo "Downloading NOOP file1." wget -q -O "$no_test_raw_dir/$no_file1" \ - "$test_data_repo/$no_file1" + "$test_data_repo/$no_file1" fi no_file2="GSM1234847_sample_table.txt" if [ ! -e "$no_test_raw_dir/$no_file2" ]; then mkdir -p "$no_test_raw_dir" echo "Downloading NOOP file2." wget -q -O "$no_test_raw_dir/$no_file2" \ - "$test_data_repo/$no_file2" + "$test_data_repo/$no_file2" fi no_file3="GSM1234847_sample_table_headerless.txt" if [ ! -e "$no_test_raw_dir/$no_file3" ]; then mkdir -p "$no_test_raw_dir" echo "Processing NOOP file3." - tail -n +2 "$no_test_raw_dir/$no_file2" > "$no_test_raw_dir/$no_file3" + tail -n +2 "$no_test_raw_dir/$no_file2" >"$no_test_raw_dir/$no_file3" fi no_file4="GSM1089291-tbl-1.txt" if [ ! -e "$no_test_raw_dir/$no_file4" ]; then mkdir -p "$no_test_raw_dir" echo "Downloading NOOP file4." wget -q -O "$no_test_raw_dir/$no_file4" \ - "$test_data_repo/$no_file4" + "$test_data_repo/$no_file4" fi no_file5="GSM1089291-tbl-1-modified.txt" if [ ! -e "$no_test_raw_dir/$no_file5" ]; then mkdir -p "$no_test_raw_dir" echo "Downloading NOOP file5." wget -q -O "$no_test_raw_dir/$no_file5" \ - "$test_data_repo/$no_file5" + "$test_data_repo/$no_file5" fi - # Reference files + # Reference files. no_test_exp_dir="$volume_directory/TEST/NO_OP/EXPECTED" no_test_exp_files='gene_converted_GSM557500-tbl-1.txt GSM269747.PCL gene_converted_GSM1234847-tbl-1.txt gene_converted_GSM1089291-tbl-1.txt' mkdir -p "$no_test_exp_dir" @@ -283,16 +284,16 @@ if [ -z "$tag" ] || [ "$tag" = "no_op" ]; then if ! [ -e "$no_test_exp_dir/$no_test_exp_file" ]; then echo "Downloading NOOP expected file$i." wget -O "$no_test_exp_dir/$no_test_exp_file" \ - "$test_data_repo/$no_test_exp_file" + "$test_data_repo/$no_test_exp_file" fi - i=$(( i + 1 )) + i=$((i + 1)) done unset i fi if [ -z "$tag" ] || [ "$tag" = "smasher" ] || [ "$tag" = "compendia" ]; then - # Make sure PCL for test is downloaded from S3 + # Make sure PCL for test is downloaded from S3. pcl_name="GSM1237810_T09-1084.PCL" pcl_name2="GSM1237812_S97-PURE.PCL" pcl_name3="GSM1238108-tbl-1.txt" @@ -334,101 +335,101 @@ if [ -z "$tag" ] || [ "$tag" = "smasher" ] || [ "$tag" = "compendia" ]; then mkdir -p "$pcl_test_raw_dir" echo "Downloading PCL for tests." wget -q -O "$pcl_test_data_1" \ - "$test_data_repo/$pcl_name" + "$test_data_repo/$pcl_name" fi if [ ! -e "$pcl_test_data_2" ]; then echo "Downloading PCL2 for tests." wget -q -O "$pcl_test_data_2" \ - "$test_data_repo/$pcl_name2" + "$test_data_repo/$pcl_name2" fi if [ ! -e "$pcl_test_data_3" ]; then echo "Downloading PCL3 for tests." wget -q -O "$pcl_test_data_3" \ - "$test_data_repo/$pcl_name3" + "$test_data_repo/$pcl_name3" fi if [ ! -e "$pcl_test_data_4" ]; then echo "Downloading PCL4 for tests." wget -q -O "$pcl_test_data_4" \ - "$test_data_repo/$pcl_name4" + "$test_data_repo/$pcl_name4" fi if [ ! -e "$pcl_test_data_5" ]; then echo "Downloading PCL5 for tests." wget -q -O "$pcl_test_data_5" \ - "$test_data_repo/$pcl_name5" + "$test_data_repo/$pcl_name5" fi if [ ! -e "$pcl_test_data_6" ]; then echo "Downloading PCL6 for tests." wget -q -O "$pcl_test_data_6" \ - "$test_data_repo/$pcl_name6" + "$test_data_repo/$pcl_name6" fi if [ ! -e "$pcl_test_data_7" ]; then echo "Downloading PCL7 for tests." wget -q -O "$pcl_test_data_7" \ - "$test_data_repo/$pcl_name7" + "$test_data_repo/$pcl_name7" fi if [ ! -e "$pcl_test_data_gs1" ]; then echo "Downloading PCLGS1 for tests." wget -q -O "$pcl_test_data_gs1" \ - "$test_data_repo/$pcl_name_gs1" + "$test_data_repo/$pcl_name_gs1" fi if [ ! -e "$pcl_test_data_gs2" ]; then echo "Downloading PCLGS2 for tests." wget -q -O "$pcl_test_data_gs2" \ - "$test_data_repo/$pcl_name_gs2" + "$test_data_repo/$pcl_name_gs2" fi if [ ! -e "$pcl_test_data_ts1" ]; then echo "Downloading PCLTS1 for tests." wget -q -O "$pcl_test_data_ts1" \ - "$test_data_repo/$pcl_name_ts1" + "$test_data_repo/$pcl_name_ts1" fi if [ ! -e "$pcl_test_data_ts2" ]; then echo "Downloading PCLTS2 for tests." wget -q -O "$pcl_test_data_ts2" \ - "$test_data_repo/$pcl_name_ts2" + "$test_data_repo/$pcl_name_ts2" fi if [ ! -e "$pcl_test_data_ta1" ]; then echo "Downloading PCLTA1 for tests." wget -q -O "$pcl_test_data_ta1" \ - "$test_data_repo/$pcl_name_ta1" + "$test_data_repo/$pcl_name_ta1" fi if [ ! -e "$bad_test_data_1" ]; then mkdir -p "$bad_test_raw_dir" echo "Downloading Bad PCL for tests." wget -q -O "$bad_test_data_1" \ - "$test_data_repo/$bad_name" + "$test_data_repo/$bad_name" fi if [ ! -e "$bad_test_data_2" ]; then mkdir -p "$bad_test_raw_dir" echo "Downloading Bad PCL for tests." wget -q -O "$bad_test_data_2" \ - "$test_data_repo/$bad_name2" + "$test_data_repo/$bad_name2" fi if [ ! -e "$bad_test_data_3" ]; then mkdir -p "$bad_test_raw_dir" echo "Downloading Bad PCL for tests." wget -q -O "$bad_test_data_3" \ - "$test_data_repo/$bad_name3" + "$test_data_repo/$bad_name3" fi if [ ! -e "$quant_test_data_1" ]; then mkdir -p "$quant_test_raw_dir" echo "Downloading Quant files for tests." wget -q -O "$quant_test_data_1" \ - "$test_data_repo/$quant_name" + "$test_data_repo/$quant_name" fi if [ ! -e "$quant_test_data_2" ]; then mkdir -p "$quant_test_raw_dir" echo "Downloading Quant files for tests." wget -q -O "$quant_test_data_2" \ - "$test_data_repo/$quant_name_2" + "$test_data_repo/$quant_name_2" fi # Mock out the AWS keys since we use VCR to mock out the request with these - # as the AWS credentials + # as the AWS credentials. export AWS_ACCESS_KEY_ID=XXX export AWS_SECRET_ACCESS_KEY=XXX fi if [ -z "$tag" ] || [ "$tag" = "qn" ]; then - # Make sure PCL for test is downloaded from S3 + # Make sure PCL for test is downloaded from S3. qn_name="1.tsv" qn_test_raw_dir="$volume_directory/QN" qn_test_data_1="$qn_test_raw_dir/$qn_name" @@ -436,7 +437,7 @@ if [ -z "$tag" ] || [ "$tag" = "qn" ]; then mkdir -p "$qn_test_raw_dir" echo "Downloading QN for tests." wget -q -O "$qn_test_data_1" \ - "$test_data_repo/$qn_name" + "$test_data_repo/$qn_name" fi qn_name="2.tsv" qn_test_raw_dir="$volume_directory/QN" @@ -445,7 +446,7 @@ if [ -z "$tag" ] || [ "$tag" = "qn" ]; then mkdir -p "$qn_test_raw_dir" echo "Downloading QN for tests." wget -q -O "$qn_test_data_2" \ - "$test_data_repo/$qn_name" + "$test_data_repo/$qn_name" fi qn_name="3.tsv" qn_test_raw_dir="$volume_directory/QN" @@ -454,7 +455,7 @@ if [ -z "$tag" ] || [ "$tag" = "qn" ]; then mkdir -p "$qn_test_raw_dir" echo "Downloading QN for tests." wget -q -O "$qn_test_data_3" \ - "$test_data_repo/$qn_name" + "$test_data_repo/$qn_name" fi qn_name="4.tsv" qn_test_raw_dir="$volume_directory/QN" @@ -463,7 +464,7 @@ if [ -z "$tag" ] || [ "$tag" = "qn" ]; then mkdir -p "$qn_test_raw_dir" echo "Downloading QN for tests." wget -q -O "$qn_test_data_4" \ - "$test_data_repo/$qn_name" + "$test_data_repo/$qn_name" fi qn_name="5.tsv" qn_test_raw_dir="$volume_directory/QN" @@ -472,7 +473,7 @@ if [ -z "$tag" ] || [ "$tag" = "qn" ]; then mkdir -p "$qn_test_raw_dir" echo "Downloading QN for tests." wget -q -O "$qn_test_data_5" \ - "$test_data_repo/$qn_name" + "$test_data_repo/$qn_name" fi qn_name="6.tsv" qn_test_raw_dir="$volume_directory/QN" @@ -481,7 +482,7 @@ if [ -z "$tag" ] || [ "$tag" = "qn" ]; then mkdir -p "$qn_test_raw_dir" echo "Downloading QN for tests." wget -q -O "$qn_test_data_6" \ - "$test_data_repo/$qn_name" + "$test_data_repo/$qn_name" fi qn_name="7.tsv" qn_test_raw_dir="$volume_directory/QN" @@ -490,7 +491,7 @@ if [ -z "$tag" ] || [ "$tag" = "qn" ]; then mkdir -p "$qn_test_raw_dir" echo "Downloading QN for tests." wget -q -O "$qn_test_data_7" \ - "$test_data_repo/$qn_name" + "$test_data_repo/$qn_name" fi fi if [ -z "$tag" ] || [ "$tag" = "compendia" ]; then @@ -522,58 +523,61 @@ if [ -z "$tag" ] || [ "$tag" = "compendia" ]; then mkdir -p "$qn_test_raw_dir" echo "Downloading QN for compendia tests." wget -q -O "$qn_test_data_1" \ - "$test_data_repo/$qn_name" + "$test_data_repo/$qn_name" fi fi -. scripts/common.sh +. ./scripts/common.sh + DB_HOST_IP=$(get_docker_db_ip_address) # Ensure permissions are set for everything within the test data directory. chmod -R a+rwX "$volume_directory" -worker_images="salmon transcriptome no_op downloaders smasher illumina agilent affymetrix qn affymetrix_local janitor compendia" +worker_images="salmon transcriptome no_op downloaders smasher illumina agilent affymetrix qn janitor compendia" for image in $worker_images; do if [ -z "$tag" ] || [ "$tag" = "$image" ]; then if [ "$image" = "agilent" ] || [ "$image" = "affymetrix" ]; then - # Agilent uses the same docker image as Affymetrix - ./scripts/prepare_image.sh -p -i affymetrix -s workers - ./scripts/prepare_image.sh -i affymetrix_local -d ccdlstaging - docker tag ccdlstaging/dr_affymetrix_local:latest ccdlstaging/dr_affymetrix:latest - image_name=ccdlstaging/dr_affymetrix + # Agilent uses the same docker image as Affymetrix. + ./scripts/prepare_image.sh -i affymetrix -s workers + image_name="$DOCKERHUB_REPO/dr_affymetrix" elif [ "$tag" = "qn" ]; then ./scripts/prepare_image.sh -i smasher -s workers - image_name=ccdlstaging/dr_smasher + image_name="$DOCKERHUB_REPO/dr_smasher" elif [ "$tag" = "janitor" ]; then ./scripts/prepare_image.sh -i smasher -s workers - image_name=ccdlstaging/dr_smasher + image_name="$DOCKERHUB_REPO/dr_smasher" else ./scripts/prepare_image.sh -i "$image" -s workers - image_name=ccdlstaging/dr_$image + image_name="$DOCKERHUB_REPO/dr_$image" fi - # Strip out tag argument + # Strip out tag argument. # shellcheck disable=2001 args_without_tag="$(echo "$@" | sed "s/-t $tag//")" # shellcheck disable=2086 test_command="$(run_tests_with_coverage --tag="$image" $args_without_tag)" - # Only run interactively if we are on a TTY + # Only run interactively if we are on a TTY. if [ -t 1 ]; then - INTERACTIVE="-i" + INTERACTIVE="--interactive" fi echo "Running tests with the following command:" echo "$test_command" - docker run -t $INTERACTIVE \ - --add-host=database:"$DB_HOST_IP" \ - --env-file workers/environments/test \ - --env AWS_ACCESS_KEY_ID \ - --env AWS_SECRET_ACCESS_KEY \ - --memory=5G \ - --platform linux/amd64 \ - --volume "$volume_directory":/home/user/data_store \ - "$image_name" bash -c "$test_command" + # shellcheck disable=SC2086 + docker run \ + --add-host=database:"$DB_HOST_IP" \ + --env AWS_ACCESS_KEY_ID \ + --env AWS_SECRET_ACCESS_KEY \ + --env-file workers/environments/test \ + --memory=5G \ + --platform linux/amd64 \ + --tty \ + --volume "$volume_directory":/home/user/data_store \ + $INTERACTIVE \ + "$image_name" \ + bash -c "$test_command" fi done From ee4f563a0589b6f9761882013f6037ceb7bf877c Mon Sep 17 00:00:00 2001 From: David Mejia Date: Wed, 28 Jun 2023 17:11:11 -0400 Subject: [PATCH 140/220] linting --- .../data_refinery_foreman/surveyor/harmony.py | 94 +++++++++++-------- 1 file changed, 57 insertions(+), 37 deletions(-) diff --git a/foreman/data_refinery_foreman/surveyor/harmony.py b/foreman/data_refinery_foreman/surveyor/harmony.py index 433206de9..ba9725111 100644 --- a/foreman/data_refinery_foreman/surveyor/harmony.py +++ b/foreman/data_refinery_foreman/surveyor/harmony.py @@ -5,7 +5,7 @@ `sex`, `age`, `specimen_part`, - `genetic_information`, + `genotype`, `disease`, `disease_stage`, `cell_line`, @@ -245,6 +245,7 @@ """ import csv +import re from io import StringIO from typing import Dict, List @@ -253,6 +254,9 @@ logger = get_and_configure_logger(__name__) +# re.Pattern / re._pattern_type were not defined in 3.8? +RE_TYPE = re.compile("").__class__ + TITLE_FIELDS = [ "sample name", @@ -292,7 +296,7 @@ def create_variants(fields_list: List): Ex, given 'cell line', add the ability to hit on 'characteristic [cell_line]' as well. """ - variants = [] + variants = set() for field in fields_list: space_variants = [field] @@ -303,24 +307,27 @@ def create_variants(fields_list: List): space_variants.append(field.replace(" ", "")) for space_variant in space_variants: - variants.append(space_variant) - variants.append("characteristic [" + space_variant + "]") - variants.append("characteristic[" + space_variant + "]") - variants.append("characteristics [" + space_variant + "]") - variants.append("characteristics[" + space_variant + "]") - variants.append("comment [" + space_variant + "]") - variants.append("comment[" + space_variant + "]") - variants.append("comments [" + space_variant + "]") - variants.append("comments[" + space_variant + "]") - variants.append("factorvalue[" + space_variant + "]") - variants.append("factor value[" + space_variant + "]") - variants.append("factorvalue [" + space_variant + "]") - variants.append("factor value [" + space_variant + "]") - variants.append("sample_" + space_variant) - variants.append("sample_host" + space_variant) - variants.append("sample_sample_" + space_variant) # Yes, seriously. - - return variants + variants.add(space_variant) + variants.add("characteristic [" + space_variant + "]") + variants.add("characteristic[" + space_variant + "]") + variants.add("characteristics [" + space_variant + "]") + variants.add("characteristics[" + space_variant + "]") + variants.add("comment [" + space_variant + "]") + variants.add("comment[" + space_variant + "]") + variants.add("comments [" + space_variant + "]") + variants.add("comments[" + space_variant + "]") + variants.add("factorvalue[" + space_variant + "]") + variants.add("factor value[" + space_variant + "]") + variants.add("factorvalue [" + space_variant + "]") + variants.add("factor value [" + space_variant + "]") + variants.add("sample_" + space_variant) + variants.add("sample_host" + space_variant) + variants.add("sample_sample_" + space_variant) # Yes, seriously. + + # handle SRA flattened json response + variants.add(re.compile("characteristics_" + space_variant + "(?:_\d+_text)?$")) + + return list(variants) def parse_sdrf(sdrf_url: str) -> List: @@ -443,8 +450,7 @@ def __init__(self): "characteristic [organism part]", "characteristics [organism part]", # SRA - "cell_type", - "organismpart", + "organismpart", # this isnt seen? # GEO "isolation source", "tissue sampled", @@ -452,7 +458,7 @@ def __init__(self): ] self.specimen_part_fields = create_variants(specimen_part_fields) - genetic_information_fields = [ + genotype_fields = [ "strain/background", "strain", "strain or line", @@ -465,7 +471,7 @@ def __init__(self): "cultivar", "strain/genotype", ] - self.genetic_information_fields = create_variants(genetic_information_fields) + self.genotype_fields = create_variants(genotype_fields) disease_fields = [ "disease", @@ -493,8 +499,8 @@ def __init__(self): cell_line_fields = [ "cell line", - "sample strain", ] + self.cell_line_fields = create_variants(cell_line_fields) treatment_fields = [ @@ -531,7 +537,7 @@ def __init__(self): "donor id", "donor", # SRA - "sample_source_name", + # create_variants will find above attributes in characteristics ] self.subject_fields = create_variants(subject_fields) @@ -539,6 +545,8 @@ def __init__(self): "developmental stage", "development stage", "development stages", + # SRA. + "dev stage", ] self.developmental_stage_fields = create_variants(developmental_stage_fields) @@ -585,25 +593,37 @@ def harmonize_value(self, field_name: str, value): else: return value.lower().strip() - def harmonize_field(self, sample_metadata: Dict, harmonized_sample: Dict, field: str): - field_name = field.split("_fields")[0] - + def harmonize_field( + self, sample_metadata: Dict, harmonized_sample: Dict, variants_attribute: str + ): + sample_attribute = variants_attribute.split("_fields")[0] + harmonized_values = set() for key, value in sample_metadata.items(): lower_key = key.lower().strip() - if lower_key in getattr(self, field): - harmonized_value = self.harmonize_value(field_name, value) + key_variants = getattr(self, variants_attribute) + key_regexes = [r for r in key_variants if isinstance(r, RE_TYPE)] + key_strings = [s for s in key_variants if isinstance(s, str)] + if lower_key in key_strings: + harmonized_value = self.harmonize_value(sample_attribute, value) if harmonized_value: - harmonized_sample[field_name] = harmonized_value - break + harmonized_values.add(harmonized_value) + else: + for key_regex in key_regexes: + if key_regex.fullmatch(lower_key): + harmonized_value = self.harmonize_value(sample_attribute, value) + if harmonized_value: + harmonized_values.add(harmonized_value) + + harmonized_sample[sample_attribute] = ";".join([str(v) for v in harmonized_values]) def harmonize_sample(self, sample_metadata: Dict, title_field: str = None) -> Dict: - fields = [ + variants_attributes = [ "sex_fields", "age_fields", "specimen_part_fields", - "genetic_information_fields", + "genotype_fields", "disease_fields", "disease_stage_fields", "cell_line_fields", @@ -617,8 +637,8 @@ def harmonize_sample(self, sample_metadata: Dict, title_field: str = None) -> Di harmonized_sample = {} harmonized_sample["title"] = extract_title(sample_metadata, title_field) - for field in fields: - self.harmonize_field(sample_metadata, harmonized_sample, field) + for variants_attribute in variants_attributes: + self.harmonize_field(sample_metadata, harmonized_sample, variants_attribute) return harmonized_sample From dc16fecd31b0d5ef008708a74038e13ca1bc70de Mon Sep 17 00:00:00 2001 From: David Mejia Date: Wed, 28 Jun 2023 17:11:11 -0400 Subject: [PATCH 141/220] Intial Harmonizer changes for new ENA surveyor --- .../data_refinery_foreman/surveyor/harmony.py | 94 +++++++++++-------- 1 file changed, 57 insertions(+), 37 deletions(-) diff --git a/foreman/data_refinery_foreman/surveyor/harmony.py b/foreman/data_refinery_foreman/surveyor/harmony.py index 433206de9..ba9725111 100644 --- a/foreman/data_refinery_foreman/surveyor/harmony.py +++ b/foreman/data_refinery_foreman/surveyor/harmony.py @@ -5,7 +5,7 @@ `sex`, `age`, `specimen_part`, - `genetic_information`, + `genotype`, `disease`, `disease_stage`, `cell_line`, @@ -245,6 +245,7 @@ """ import csv +import re from io import StringIO from typing import Dict, List @@ -253,6 +254,9 @@ logger = get_and_configure_logger(__name__) +# re.Pattern / re._pattern_type were not defined in 3.8? +RE_TYPE = re.compile("").__class__ + TITLE_FIELDS = [ "sample name", @@ -292,7 +296,7 @@ def create_variants(fields_list: List): Ex, given 'cell line', add the ability to hit on 'characteristic [cell_line]' as well. """ - variants = [] + variants = set() for field in fields_list: space_variants = [field] @@ -303,24 +307,27 @@ def create_variants(fields_list: List): space_variants.append(field.replace(" ", "")) for space_variant in space_variants: - variants.append(space_variant) - variants.append("characteristic [" + space_variant + "]") - variants.append("characteristic[" + space_variant + "]") - variants.append("characteristics [" + space_variant + "]") - variants.append("characteristics[" + space_variant + "]") - variants.append("comment [" + space_variant + "]") - variants.append("comment[" + space_variant + "]") - variants.append("comments [" + space_variant + "]") - variants.append("comments[" + space_variant + "]") - variants.append("factorvalue[" + space_variant + "]") - variants.append("factor value[" + space_variant + "]") - variants.append("factorvalue [" + space_variant + "]") - variants.append("factor value [" + space_variant + "]") - variants.append("sample_" + space_variant) - variants.append("sample_host" + space_variant) - variants.append("sample_sample_" + space_variant) # Yes, seriously. - - return variants + variants.add(space_variant) + variants.add("characteristic [" + space_variant + "]") + variants.add("characteristic[" + space_variant + "]") + variants.add("characteristics [" + space_variant + "]") + variants.add("characteristics[" + space_variant + "]") + variants.add("comment [" + space_variant + "]") + variants.add("comment[" + space_variant + "]") + variants.add("comments [" + space_variant + "]") + variants.add("comments[" + space_variant + "]") + variants.add("factorvalue[" + space_variant + "]") + variants.add("factor value[" + space_variant + "]") + variants.add("factorvalue [" + space_variant + "]") + variants.add("factor value [" + space_variant + "]") + variants.add("sample_" + space_variant) + variants.add("sample_host" + space_variant) + variants.add("sample_sample_" + space_variant) # Yes, seriously. + + # handle SRA flattened json response + variants.add(re.compile("characteristics_" + space_variant + "(?:_\d+_text)?$")) + + return list(variants) def parse_sdrf(sdrf_url: str) -> List: @@ -443,8 +450,7 @@ def __init__(self): "characteristic [organism part]", "characteristics [organism part]", # SRA - "cell_type", - "organismpart", + "organismpart", # this isnt seen? # GEO "isolation source", "tissue sampled", @@ -452,7 +458,7 @@ def __init__(self): ] self.specimen_part_fields = create_variants(specimen_part_fields) - genetic_information_fields = [ + genotype_fields = [ "strain/background", "strain", "strain or line", @@ -465,7 +471,7 @@ def __init__(self): "cultivar", "strain/genotype", ] - self.genetic_information_fields = create_variants(genetic_information_fields) + self.genotype_fields = create_variants(genotype_fields) disease_fields = [ "disease", @@ -493,8 +499,8 @@ def __init__(self): cell_line_fields = [ "cell line", - "sample strain", ] + self.cell_line_fields = create_variants(cell_line_fields) treatment_fields = [ @@ -531,7 +537,7 @@ def __init__(self): "donor id", "donor", # SRA - "sample_source_name", + # create_variants will find above attributes in characteristics ] self.subject_fields = create_variants(subject_fields) @@ -539,6 +545,8 @@ def __init__(self): "developmental stage", "development stage", "development stages", + # SRA. + "dev stage", ] self.developmental_stage_fields = create_variants(developmental_stage_fields) @@ -585,25 +593,37 @@ def harmonize_value(self, field_name: str, value): else: return value.lower().strip() - def harmonize_field(self, sample_metadata: Dict, harmonized_sample: Dict, field: str): - field_name = field.split("_fields")[0] - + def harmonize_field( + self, sample_metadata: Dict, harmonized_sample: Dict, variants_attribute: str + ): + sample_attribute = variants_attribute.split("_fields")[0] + harmonized_values = set() for key, value in sample_metadata.items(): lower_key = key.lower().strip() - if lower_key in getattr(self, field): - harmonized_value = self.harmonize_value(field_name, value) + key_variants = getattr(self, variants_attribute) + key_regexes = [r for r in key_variants if isinstance(r, RE_TYPE)] + key_strings = [s for s in key_variants if isinstance(s, str)] + if lower_key in key_strings: + harmonized_value = self.harmonize_value(sample_attribute, value) if harmonized_value: - harmonized_sample[field_name] = harmonized_value - break + harmonized_values.add(harmonized_value) + else: + for key_regex in key_regexes: + if key_regex.fullmatch(lower_key): + harmonized_value = self.harmonize_value(sample_attribute, value) + if harmonized_value: + harmonized_values.add(harmonized_value) + + harmonized_sample[sample_attribute] = ";".join([str(v) for v in harmonized_values]) def harmonize_sample(self, sample_metadata: Dict, title_field: str = None) -> Dict: - fields = [ + variants_attributes = [ "sex_fields", "age_fields", "specimen_part_fields", - "genetic_information_fields", + "genotype_fields", "disease_fields", "disease_stage_fields", "cell_line_fields", @@ -617,8 +637,8 @@ def harmonize_sample(self, sample_metadata: Dict, title_field: str = None) -> Di harmonized_sample = {} harmonized_sample["title"] = extract_title(sample_metadata, title_field) - for field in fields: - self.harmonize_field(sample_metadata, harmonized_sample, field) + for variants_attribute in variants_attributes: + self.harmonize_field(sample_metadata, harmonized_sample, variants_attribute) return harmonized_sample From c26358aeeb8b8872d47e7a52119f6ea86350b97b Mon Sep 17 00:00:00 2001 From: Arkadii Yakovets Date: Wed, 5 Jul 2023 19:31:05 -0700 Subject: [PATCH 142/220] Address review comments --- scripts/prepare_image.sh | 20 ++++++++++---------- scripts/update_docker_images.sh | 16 ++++++++-------- 2 files changed, 18 insertions(+), 18 deletions(-) diff --git a/scripts/prepare_image.sh b/scripts/prepare_image.sh index 4bdff97c4..d9a49c68d 100755 --- a/scripts/prepare_image.sh +++ b/scripts/prepare_image.sh @@ -91,14 +91,14 @@ fi DOCKERHUB_IMAGE="$DOCKERHUB_REPO/dr_$IMAGE_NAME" -CACHE_FROM_LATEST="cache-from=type=registry,ref=${DOCKERHUB_IMAGE}_cache:latest" -CACHE_FROM_VERSION="cache-from=type=registry,ref=${DOCKERHUB_IMAGE}_cache:$SYSTEM_VERSION" -CACHE_TO_LATEST="cache-to=type=registry,ref=${DOCKERHUB_IMAGE}_cache:latest,mode=max" -CACHE_TO_VERSION="cache-to=type=registry,ref=${DOCKERHUB_IMAGE}_cache:$SYSTEM_VERSION,mode=max" +CACHE_FROM_LATEST="type=registry,ref=${DOCKERHUB_IMAGE}_cache:latest" +CACHE_FROM_VERSION="type=registry,ref=${DOCKERHUB_IMAGE}_cache:$SYSTEM_VERSION" +CACHE_TO_LATEST="type=registry,ref=${DOCKERHUB_IMAGE}_cache:latest,mode=max" +CACHE_TO_VERSION="type=registry,ref=${DOCKERHUB_IMAGE}_cache:$SYSTEM_VERSION,mode=max" if test "$GITHUB_ACTION"; then - CACHE_TO_LATEST="cache-to=type=gha" - CACHE_TO_VERSION="cache-to=type=gha" + CACHE_TO_LATEST="type=gha" + CACHE_TO_VERSION="type=gha" DOCKER_ACTION="--push" fi @@ -121,10 +121,10 @@ while [ $finished != 0 ] && [ $attempt -lt $attempts ]; do docker buildx build \ --build-arg DOCKERHUB_REPO="$DOCKERHUB_REPO" \ --build-arg SYSTEM_VERSION="$SYSTEM_VERSION" \ - --"$CACHE_FROM_LATEST" \ - --"$CACHE_FROM_VERSION" \ - --"$CACHE_TO_LATEST" \ - --"$CACHE_TO_VERSION" \ + --cache-from "$CACHE_FROM_LATEST" \ + --cache-from "$CACHE_FROM_VERSION" \ + --cache-to "$CACHE_TO_LATEST" \ + --cache-to "$CACHE_TO_VERSION" \ --file "$DOCKER_FILE_PATH" \ --platform linux/amd64 \ --tag "$DOCKERHUB_IMAGE:latest" \ diff --git a/scripts/update_docker_images.sh b/scripts/update_docker_images.sh index f051e8317..d3910854a 100755 --- a/scripts/update_docker_images.sh +++ b/scripts/update_docker_images.sh @@ -113,20 +113,20 @@ for image_name in $image_names; do echo DOCKERHUB_IMAGE="$DOCKERHUB_REPO/dr_$image_name" - CACHE_FROM_LATEST="cache-from=type=registry,ref=${DOCKERHUB_IMAGE}_cache:latest" - CACHE_FROM_VERSION="cache-from=type=registry,ref=${DOCKERHUB_IMAGE}_cache:$SYSTEM_VERSION" - CACHE_TO_LATEST="cache-to=type=registry,ref=${DOCKERHUB_IMAGE}_cache:latest,mode=max" - CACHE_TO_VERSION="cache-to=type=registry,ref=${DOCKERHUB_IMAGE}_cache:$SYSTEM_VERSION,mode=max" + CACHE_FROM_LATEST="type=registry,ref=${DOCKERHUB_IMAGE}_cache:latest" + CACHE_FROM_VERSION="type=registry,ref=${DOCKERHUB_IMAGE}_cache:$SYSTEM_VERSION" + CACHE_TO_LATEST="type=registry,ref=${DOCKERHUB_IMAGE}_cache:latest,mode=max" + CACHE_TO_VERSION="type=registry,ref=${DOCKERHUB_IMAGE}_cache:$SYSTEM_VERSION,mode=max" set_up_docker_builder docker buildx build \ --build-arg DOCKERHUB_REPO="$DOCKERHUB_REPO" \ --build-arg SYSTEM_VERSION="$SYSTEM_VERSION" \ - --"$CACHE_FROM_LATEST" \ - --"$CACHE_FROM_VERSION" \ - --"$CACHE_TO_LATEST" \ - --"$CACHE_TO_VERSION" \ + --cache-from "$CACHE_FROM_LATEST" \ + --cache-from "$CACHE_FROM_VERSION" \ + --cache-to "$CACHE_TO_LATEST" \ + --cache-to "$CACHE_TO_VERSION" \ --file "$DOCKER_FILE_PATH" \ --platform linux/amd64 \ --push \ From 169d687a0d076e10b44eea3ca065bb6372f290a4 Mon Sep 17 00:00:00 2001 From: David Mejia Date: Fri, 7 Jul 2023 16:01:33 -0400 Subject: [PATCH 143/220] updating example SRA metadata comment --- .../data_refinery_foreman/surveyor/harmony.py | 382 +++++++++++++----- 1 file changed, 276 insertions(+), 106 deletions(-) diff --git a/foreman/data_refinery_foreman/surveyor/harmony.py b/foreman/data_refinery_foreman/surveyor/harmony.py index ba9725111..2e8e50174 100644 --- a/foreman/data_refinery_foreman/surveyor/harmony.py +++ b/foreman/data_refinery_foreman/surveyor/harmony.py @@ -45,112 +45,282 @@ 'sex': 'male'} SRA Example: - {'alias': 'GSM2997959_r1', - 'broker_name': 'GEO', - 'center_name': 'GEO', - 'center_project_name': 'GSE99065', - 'ena-base-count': '279111754922', - 'ena-spot-count': '1152605026', - 'experiment_accession': 'SRX3691797', - 'experiment_design_description': None, - 'experiment_title': 'NextSeq 500 paired end sequencing; GSM2997959: INOF_FRT; ' - 'Homo sapiens; RNA-Seq', - 'lab_name': '', - 'library_construction_protocol': 'cDNA library produced with TGIRT RNA was ' - 'isolated and DNase treated using RNEasy ' - 'mini kit (Qiagen 74106) according to the ' - 'manufacturer protocol. 5ug DNA-free total ' - 'RNA was then ribodepleted using Ribo-zero ' - 'Gold (Illumina RZG1224 ) according to the ' - 'manufacturer protocol and purified using a ' - 'modified ZYMO RNA Clean and Concentrator ' - '(R1016) protocol where 8 volumes EtOH ' - 'instead of 4. rRNA depleted RNA was ' - 'fragmented with NEBNext Magnesium RNA ' - 'Fragmentation Module (E6150) followed by ' - 'dephosphorylation using T4PNK (mandel ) ' - 'and purified by same modified ZYMO ' - 'protocol. cDNAs were synthesized via TGIRT ' - 'template-switching with 1µM TGIRT-III ' - 'reverse transcriptase (Ingex, LLC) for 15 ' - 'min at 60o C, during which a DNA ' - 'oligonucleotide containing the complement ' - 'of an Illumina Read 2 sequencing ' - 'primer-binding site becomes seamlessly ' - "linked to the 5' cDNA end. After reaction " - 'cleanup (Qiagen MinElute Reaction cleanup ' - "28206), a 5' adenylated DNA oligonucleotide " - 'containing the complement of an Illumina ' - 'Read 1 sequencing primer-binding site is ' - "then ligated to the 3' cDNA end with " - "Thermostable 5' AppDNA / RNA Ligase (New " - 'England Biolabs M0319). Properly ligated ' - 'cDNAs were amplified by PCR (12 cycles) to ' - 'synthesize the second strand and add ' - 'Illumina flowcell capture and index ' - 'sequences. Library was size-selected with ' - 'Ampure XP beads (Beckman-Coulter) and ' - 'quantified with Qubit and evaluated on an ' - 'Agilent 2100 Bioanalyzer.', - 'library_layout': 'PAIRED', - 'library_selection': 'cDNA', - 'library_source': 'TRANSCRIPTOMIC', - 'library_strategy': 'RNA-Seq', - 'organism_id': '9606', - 'organism_name': 'HOMO SAPIENS', - 'platform_instrument_model': 'NextSeq500', - 'run_accession': 'SRR6718414', - 'run_ena_base_count': '1773379870', - 'run_ena_first_public': '2018-02-17', - 'run_ena_last_update': '2018-02-17', - 'run_ena_spot_count': '15046271', - 'sample_accession': 'SRS2951393', - 'sample_cell_type': 'Immortalized normal ovarian fibroblast', - 'sample_ena_base_count': '1773379870', - 'sample_ena_first_public': '2018-02-14', - 'sample_ena_last_update': '2018-02-14', - 'sample_ena_spot_count': '15046271', - 'sample_source_name': 'INOF cell line', - 'sample_title': 'INOF_FRT', - 'sample_treatment': 'none', - 'study_abstract': 'The ability to compare the abundance of one RNA molecule ' - 'to another is a crucial step for understanding how gene ' - 'expression is modulated to shape the transcriptome ' - 'landscape. However, little information is available about ' - 'the relative expression of the different classes of coding ' - 'and non-coding RNA or even between RNA of the same class. ' - 'In this study, we present a complete portrait of the human ' - 'transcriptome that depicts the relationship of all classes ' - 'of non-ribosomal RNA longer than sixty nucleotides. The ' - 'results show that the most abundant RNA in the human ' - 'rRNA-depleted transcriptome is tRNA followed by ' - 'spliceosomal RNA. Surprisingly, the signal recognition ' - 'particle RNA 7SL by itself occupied 8% of the ribodepleted ' - 'transcriptome producing a similar number of transcripts as ' - 'that produced by all snoRNA genes combined. In general, ' - 'the most abundant RNA are non-coding but many more protein ' - 'coding than non-coding genes produce more than 1 ' - 'transcript per million. Examination of gene functions ' - 'suggests that RNA abundance reflects both gene and cell ' - 'function. Together, the data indicate that the human ' - 'transcriptome is shaped by a small number of highly ' - 'expressed non-coding genes and a large number of ' - 'moderately expressed protein coding genes that reflect ' - 'cellular phenotypes. Overall design: RNA was isolated from ' - 'SKOV3ip1 and INOF human cell lines and selected with ' - 'different methods. The resulting libraries were ' - 'multiplexed and paired-end sequenced using Illumina HiSeq.', - 'study_accession': 'SRP107324', - 'study_ena_base_count': '279111754922', - 'study_ena_first_public': '2017-09-25', - 'study_ena_last_update': '2018-02-15', - 'study_ena_spot_count': '1152605026', - 'study_title': 'Simultaneous detection and relative quantification of coding ' - 'and non-coding RNA using a single sequencing reaction', - 'study_type': 'Transcriptome Analysis', - 'submission_accession': 'SRA562540', - 'submission_comment': 'submission brokered by GEO', - 'submission_title': 'Submitted by Gene Expression Omnibus on 25-SEP-2017'} + {"run_accession": "ERR1427135", + "project_name": "Single-cell RNA sequencing of spleen-derived LCK cells from adult Zebrafish", + "submission_accession": "ERA631093", + "library_min_fragment_size": "", + "bam_md5": "", + "assembly_software": "", + "library_prep_longitude": "", + "library_selection": "cDNA", + "pcr_isolation_protocol": "", + "chip_protocol": "", + "sequencing_primer_provider": "", + "serotype": "", + "environment_feature": "", + "last_updated": "2018-11-16", + "submitted_galaxy": "ftp.sra.ebi.ac.uk/vol1/run/ERR142/ERR1427135/LCK_4_90.cram;ftp.sra.ebi.ac.uk/vol1/run/ERR142/ERR1427135/LCK_4_90.cram.crai", + "extraction_protocol": "", + "germline": "", + "secondary_project": "", + "culture_collection": "", + "submission_tool": "", + "sra_bytes": "", + "read_strand": "", + "rna_purity_280_ratio": "", + "hi_c_protocol": "", + "collected_by": "", + "submitted_ftp": "ftp.sra.ebi.ac.uk/vol1/run/ERR142/ERR1427135/LCK_4_90.cram;ftp.sra.ebi.ac.uk/vol1/run/ERR142/ERR1427135/LCK_4_90.cram.crai", + "restriction_enzyme_target_sequence": "", + "isolate": "", + "fastq_bytes": "78258588;82464883", + "instrument_platform": "ILLUMINA", + "variety": "", + "sequencing_date_format": "", + "temperature": "", + "sra_aspera": "", + "ecotype": "", + "submitted_aspera": "fasp.sra.ebi.ac.uk:/vol1/run/ERR142/ERR1427135/LCK_4_90.cram;fasp.sra.ebi.ac.uk:/vol1/run/ERR142/ERR1427135/LCK_4_90.cram.crai", + "sampling_campaign": "", + "bam_ftp": "", + "tissue_lib": "", + "environmental_sample": "", + "control_experiment": "", + "sex": "", + "submitted_md5": "00c61590c4e662488b18a8397df876d6;ceb9b9368ba635b648d51bf15ad3626d", + "checklist": "ERC000011", + "fastq_galaxy": "ftp.sra.ebi.ac.uk/vol1/fastq/ERR142/005/ERR1427135/ERR1427135_1.fastq.gz;ftp.sra.ebi.ac.uk/vol1/fastq/ERR142/005/ERR1427135/ERR1427135_2.fastq.gz", + "library_gen_protocol": "", + "specimen_voucher": "", + "library_prep_latitude": "", + "submitted_bytes": "214700406;15844", + "taxonomic_identity_marker": "", + "run_date": "", + "country": "", + "ncbi_reporting_standard": "", + "sample_description": "Protocols: The spleen from a heterozygote Tg(lck:EGFP) or wild-type fish was dissected and passed through a 40\u03bcm cell strainer using the plunger of a 1-mL syringe and cells were collected in cold 1xPBS/5% FBS. A non-transgenic line was used to set up the gating and exclude autofluorescent cells. Propidium iodide (PI) staining was used to exclude dead cells. Individual cells were sorted, using a Becton Dickinson Influx sorter with 488- and 561 nm lasers (Schulte et al., 2015) and collected in a single well of a 96 well plate containing 2.3 uL of 0.2 % Triton X-100 supplemented with 1 U/uL SUPERase In RNAse inhibitor (Ambion). The size, granularity and level of fluorescence for each cell were simultaneously recorded. The Smart-seq2 protocol (Picelli et al., 2014) was used to amplify the whole transcriptome and prepare libraries. Twenty-five cycles of PCR amplification were performed.", + "experiment_title": "Illumina HiSeq 2500 paired end sequencing; Single-cell RNA sequencing of spleen-derived LCK cells from adult Zebrafish;Single-cell RNA sequencing of spleen-derived LCK cells from adult Zebrafish", + "sra_galaxy": "", + "sample_prep_interval": "", + "fastq_md5": "d2aa4fe6ff43de680096df109a9e33f6;2664741d32d883f615205939ffc872d5", + "sample_accession": "SAMEA4011859", + "secondary_study_accession": "ERP015799", + "experimental_protocol": "", + "read_count": "4001164", + "study_title": "Single-cell RNA sequencing of spleen-derived LCK cells from adult Zebrafish", + "bio_material": "", + "rna_prep_5_protocol": "", + "host_body_site": "", + "local_environmental_context": "", + "assembly_quality": "", + "collection_date_end": "", + "sample_capture_status": "", + "sample_title": "LCK_4#90", + "host_genotype": "", + "host_phenotype": "", + "environmental_medium": "", + "cultivar": "", + "instrument_model": "Illumina HiSeq 2500", + "faang_library_selection": "", + "target_gene": "", + "bam_bytes": "", + "library_max_fragment_size": "", + "experiment_target": "", + "sequencing_date": "", + "nominal_sdev": "20", + "chip_ab_provider": "", + "environment_material": "", + "host_tax_id": "", + "sample_material": "", + "sample_storage_processing": "", + "sra_md5": "", + "cell_type": "", + "fastq_ftp": "ftp.sra.ebi.ac.uk/vol1/fastq/ERR142/005/ERR1427135/ERR1427135_1.fastq.gz;ftp.sra.ebi.ac.uk/vol1/fastq/ERR142/005/ERR1427135/ERR1427135_2.fastq.gz", + "sample_prep_interval_units": "", + "broker_name": "ArrayExpress", + "sub_strain": "", + "base_count": "500145500", + "library_strategy": "RNA-Seq", + "restriction_site": "", + "serovar": "", + "investigation_type": "", + "location": "", + "library_source": "TRANSCRIPTOMIC", + "sra_ftp": "", + "library_layout": "PAIRED", + "experimental_factor": "", + "sequencing_primer_catalog": "", + "environment_biome": "", + "rna_purity_230_ratio": "", + "dnase_protocol": "", + "dev_stage": "", + "library_prep_date_format": "", + "bam_aspera": "", + "binning_software": "", + "rna_integrity_num": "", + "library_prep_date": "", + "location_start": "", + "marine_region": "", + "aligned": "", + "file_location": "", + "sample_collection": "", + "chip_target": "", + "nominal_length": "400", + "broad_scale_environmental_context": "", + "sequencing_location": "", + "status": "public", + "completeness_score": "", + "lon": "", + "fastq_aspera": "fasp.sra.ebi.ac.uk:/vol1/fastq/ERR142/005/ERR1427135/ERR1427135_1.fastq.gz;fasp.sra.ebi.ac.uk:/vol1/fastq/ERR142/005/ERR1427135/ERR1427135_2.fastq.gz", + "host_sex": "", + "library_pcr_isolation_protocol": "", + "sample_alias": "E-MTAB-4617:LCK_4#90", + "mating_type": "", + "collection_date_start": "", + "sub_species": "", + "contamination_score": "", + "run_alias": "E-MTAB-4617:LCK_4#90", + "restriction_enzyme": "", + "depth": "", + "submitted_read_type": "", + "library_construction_protocol": "The spleen from a heterozygote Tg(lck:EGFP) or wild-type fish was dissected and passed through a 40\u03bcm cell strainer using the plunger of a 1-mL syringe and cells were collected in cold 1xPBS/5% FBS. A non-transgenic line was used to set up the gating and exclude autofluorescent cells. Propidium iodide (PI) staining was used to exclude dead cells. Individual cells were sorted, using a Becton Dickinson Influx sorter with 488- and 561 nm lasers (Schulte et al., 2015) and collected in a single well of a 96 well plate containing 2.3 uL of 0.2 % Triton X-100 supplemented with 1 U/uL SUPERase In RNAse inhibitor (Ambion). The size, granularity and level of fluorescence for each cell were simultaneously recorded. The Smart-seq2 protocol (Picelli et al., 2014) was used to amplify the whole transcriptome and prepare libraries. Twenty-five cycles of PCR amplification were performed.", + "host_growth_conditions": "", + "collection_date": "", + "experiment_alias": "E-MTAB-4617:LCK_4#90", + "host_gravidity": "", + "center_name": "Ludwig Center for Cancer Research, University of Lausanne, Lausanne, Switzerland Swiss Institute of Bioinformatics", + "identified_by": "", + "cell_line": "", + "sampling_site": "", + "host": "", + "library_name": "LCK_4#90", + "tag": "ena;datahub", + "first_created": "2016-05-26", + "lat": "", + "strain": "", + "experiment_accession": "ERX1497667", + "scientific_name": "Danio rerio", + "host_status": "", + "tax_id": "7955", + "study_accession": "PRJEB14175", + "submitted_format": "CRAM;CRAI", + "submitted_host_sex": "", + "bisulfite_protocol": "", + "altitude": "", + "rt_prep_protocol": "", + "host_scientific_name": "", + "bam_galaxy": "", + "accession": "ERR1427135", + "secondary_sample_accession": "ERS1182969", + "sample_storage": "", + "cage_protocol": "", + "sampling_platform": "", + "taxonomic_classification": "", + "location_end": "", + "protocol_label": "", + "elevation": "", + "salinity": "", + "sequencing_method": "", + "sequencing_primer_lot": "", + "first_public": "2016-12-01", + "transposase_protocol": "", + "study_alias": "E-MTAB-4617", + "library_prep_location": "", + "rna_prep_3_protocol": "", + "ph": "", + "sequencing_longitude": "", + "tissue_type": "Spleen", + "isolation_source": "", + "name": "E-MTAB-4617:LCK_4#90", + "webinSubmissionAccountId": "Webin-24", + "taxId": 7955, + "release": "2016-12-01T17:01:24Z", + "update": "2021-08-21T15:38:37.980Z", + "submitted": "2016-05-26T17:59:08Z", + "characteristics_ENA_first_public_0_text": "2016-12-01", + "characteristics_ENA_first_public_0_tag": "attribute", + "characteristics_ENA_last_update_0_text": "2016-05-26", + "characteristics_ENA_last_update_0_tag": "attribute", + "characteristics_ENA-CHECKLIST_0_text": "ERC000011", + "characteristics_ENA-CHECKLIST_0_tag": "attribute", + "characteristics_External_Id_0_text": "SAMEA4011859", + "characteristics_External_Id_0_tag": "Namespace:BioSample", + "characteristics_INSDC_center_alias_0_text": "Ludwig Center for Cancer Research, University of Lausanne, Lausanne, Switzerland Swiss Institute of Bioinformatics", + "characteristics_INSDC_center_name_0_text": "Ludwig Center for Cancer Research, University of Lausanne, Lausanne, Switzerland Swiss Institute of Bioinformatics", + "characteristics_INSDC_first_public_0_text": "2016-12-01T17:01:24Z", + "characteristics_INSDC_last_update_0_text": "2016-05-26T17:59:08Z", + "characteristics_INSDC_status_0_text": "public", + "characteristics_SRA_accession_0_text": "ERS1182969", + "characteristics_Submitter_Id_0_text": "E-MTAB-4617:LCK_4#90", + "characteristics_Submitter_Id_0_tag": "Namespace:Ludwig Center for Cancer Research, University of Lausanne, Lausanne, Switzerland Swiss Institute of Bioinformatics", + "characteristics_broker_name_0_text": "ArrayExpress", + "characteristics_broker_name_0_ontologyTerms_0": "http://www.ebi.ac.uk/efo/EFO_0009737", + "characteristics_common_name_0_text": "zebrafish", + "characteristics_description_0_text": "Protocols: The spleen from a heterozygote Tg(lck:EGFP) or wild-type fish was dissected and passed through a 40\u03bcm cell strainer using the plunger of a 1-mL syringe and cells were collected in cold 1xPBS/5% FBS. A non-transgenic line was used to set up the gating and exclude autofluorescent cells. Propidium iodide (PI) staining was used to exclude dead cells. Individual cells were sorted, using a Becton Dickinson Influx sorter with 488- and 561 nm lasers (Schulte et al., 2015) and collected in a single well of a 96 well plate containing 2.3 uL of 0.2 % Triton X-100 supplemented with 1 U/uL SUPERase In RNAse inhibitor (Ambion). The size, granularity and level of fluorescence for each cell were simultaneously recorded. The Smart-seq2 protocol (Picelli et al., 2014) was used to amplify the whole transcriptome and prepare libraries. Twenty-five cycles of PCR amplification were performed.", + "characteristics_fsc_0_text": "23555", + "characteristics_fsc_0_tag": "attribute", + "characteristics_gfp_0_text": "109", + "characteristics_gfp_0_tag": "attribute", + "characteristics_individual_0_text": "2", + "characteristics_individual_0_tag": "attribute", + "characteristics_organism_0_text": "Danio rerio", + "characteristics_organism_0_ontologyTerms_0": "http://purl.obolibrary.org/obo/NCBITaxon_7955", + "characteristics_organism_1_text": "Danio rerio", + "characteristics_organism_1_ontologyTerms_0": "http://purl.obolibrary.org/obo/NCBITaxon_7955", + "characteristics_organism_1_tag": "attribute", + "characteristics_pi_0_text": "9", + "characteristics_pi_0_tag": "attribute", + "characteristics_plate_0_text": "4", + "characteristics_plate_0_tag": "attribute", + "characteristics_ssc_0_text": "10994", + "characteristics_ssc_0_tag": "attribute", + "characteristics_tissue_0_text": "Spleen", + "characteristics_tissue_0_ontologyTerms_0": "http://purl.obolibrary.org/obo/UBERON_0002106", + "characteristics_tissue_0_tag": "attribute", + "characteristics_title_0_text": "LCK_4#90", + "characteristics_well_0_text": "B12", + "characteristics_well_0_tag": "attribute", + "relationships_0_source": "SAMEG321352", + "relationships_0_type": "has member", + "relationships_0_target": "SAMEA4011859", + "externalReferences_0_url": "https://www.ebi.ac.uk/ena/browser/view/SAMEA4011859", + "submittedVia": "JSON_API", + "create": "2018-12-07T06:18:17.244Z", + "_links_self_href": "https://www.ebi.ac.uk/biosamples/samples/SAMEA4011859", + "_links_curationDomain_href": "https://www.ebi.ac.uk/biosamples/samples/SAMEA4011859{?curationdomain}", + "_links_curationDomain_templated": true, + "_links_curationLinks_href": "https://www.ebi.ac.uk/biosamples/samples/SAMEA4011859/curationlinks", + "_links_curationLink_href": "https://www.ebi.ac.uk/biosamples/samples/SAMEA4011859/curationlinks/{hash}", + "_links_curationLink_templated": true, + "_links_structuredData_href": "https://www.ebi.ac.uk/biosamples/structureddata/SAMEA4011859", + "study_ena_accession": "PRJEB14175", + "study_ena_keywords": "", + "study_ena_description": "Transcriptome data from individual lck:GFP expressing cells isolated from adult Zebrafish spleen. LCK is a marker of lymphocytes and here we identified two major subpopulations corresponding to T-cells and NK-like and a minor one of myeloid-like cells. Single cell transcriptomes are matched with FACS index sorting data (GFP, forward and side light scatter and dead cell staining)", + "study_ena_study_name": "Single-cell RNA sequencing of spleen-derived LCK cells from adult Zebrafish", + "study_ena_project_name": "Single-cell RNA sequencing of spleen-derived LCK cells from adult Zebrafish", + "study_ena_geo_accession": "", + "study_ena_isolate": "", + "study_ena_center_name": "Ludwig Center for Cancer Research, University of Lausanne, Lausanne, Switzerland Swiss Institute of Bioinformatics", + "study_ena_secondary_study_accession": "ERP015799", + "study_ena_tag": "ena", + "study_ena_secondary_study_center_name": "", + "study_ena_strain": "", + "study_ena_study_title": "Single-cell RNA sequencing of spleen-derived LCK cells from adult Zebrafish", + "study_ena_last_updated": "2016-05-26", + "study_ena_first_public": "2017-02-03", + "study_ena_broker_name": "ArrayExpress", + "study_ena_study_description": "Transcriptome data from individual lck:GFP expressing cells isolated from adult Zebrafish spleen. LCK is a marker of lymphocytes and here we identified two major subpopulations corresponding to T-cells and NK-like and a minor one of myeloid-like cells. Single cell transcriptomes are matched with FACS index sorting data (GFP, forward and side light scatter and dead cell staining)", + "study_ena_secondary_study_alias": "E-MTAB-4617", + "study_ena_scientific_name": "", + "study_ena_study_alias": "E-MTAB-4617", + "study_ena_breed": "", + "study_ena_tax_id": "", + "study_ena_parent_study_accession": "", + "study_ena_study_accession": "PRJEB14175", + "study_ena_submission_tool": "", + "study_ena_cultivar": "", + "study_ena_tax_division": "", + "study_ena_status": "public"} GEO: ex: From af81393a8b91f83186fcd659da1ea2940006f398 Mon Sep 17 00:00:00 2001 From: David Mejia Date: Fri, 7 Jul 2023 16:13:55 -0400 Subject: [PATCH 144/220] move separating strings and regex out of loop --- foreman/data_refinery_foreman/surveyor/harmony.py | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/foreman/data_refinery_foreman/surveyor/harmony.py b/foreman/data_refinery_foreman/surveyor/harmony.py index 2e8e50174..888302b5b 100644 --- a/foreman/data_refinery_foreman/surveyor/harmony.py +++ b/foreman/data_refinery_foreman/surveyor/harmony.py @@ -768,13 +768,12 @@ def harmonize_field( ): sample_attribute = variants_attribute.split("_fields")[0] harmonized_values = set() + key_variants = getattr(self, variants_attribute) + key_regexes = [r for r in key_variants if isinstance(r, RE_TYPE)] + key_strings = [s for s in key_variants if isinstance(s, str)] + for key, value in sample_metadata.items(): lower_key = key.lower().strip() - - key_variants = getattr(self, variants_attribute) - key_regexes = [r for r in key_variants if isinstance(r, RE_TYPE)] - key_strings = [s for s in key_variants if isinstance(s, str)] - if lower_key in key_strings: harmonized_value = self.harmonize_value(sample_attribute, value) if harmonized_value: From 04db2c7e30d379b08062da82d224a7c7956cb0c1 Mon Sep 17 00:00:00 2001 From: David Mejia Date: Fri, 7 Jul 2023 17:07:00 -0400 Subject: [PATCH 145/220] always do regex checks and limit age to one value --- .../data_refinery_foreman/surveyor/harmony.py | 18 +++++++++++------- 1 file changed, 11 insertions(+), 7 deletions(-) diff --git a/foreman/data_refinery_foreman/surveyor/harmony.py b/foreman/data_refinery_foreman/surveyor/harmony.py index 888302b5b..ffe4b9c84 100644 --- a/foreman/data_refinery_foreman/surveyor/harmony.py +++ b/foreman/data_refinery_foreman/surveyor/harmony.py @@ -778,14 +778,18 @@ def harmonize_field( harmonized_value = self.harmonize_value(sample_attribute, value) if harmonized_value: harmonized_values.add(harmonized_value) - else: - for key_regex in key_regexes: - if key_regex.fullmatch(lower_key): - harmonized_value = self.harmonize_value(sample_attribute, value) - if harmonized_value: - harmonized_values.add(harmonized_value) - harmonized_sample[sample_attribute] = ";".join([str(v) for v in harmonized_values]) + for key_regex in key_regexes: + if key_regex.fullmatch(lower_key): + harmonized_value = self.harmonize_value(sample_attribute, value) + if harmonized_value: + harmonized_values.add(harmonized_value) + + # Age can only be one value in the database. + if sample_attribute == "age" and len(harmonized_values) > 0: + harmonized_sample[sample_attribute] = harmonized_values.pop() + else: + harmonized_sample[sample_attribute] = ";".join([str(v) for v in harmonized_values]) def harmonize_sample(self, sample_metadata: Dict, title_field: str = None) -> Dict: variants_attributes = [ From 8810e9d7046d18bb7ea0eedcaf6ef7287ec38a26 Mon Sep 17 00:00:00 2001 From: David Mejia Date: Fri, 7 Jul 2023 17:15:00 -0400 Subject: [PATCH 146/220] add back source name for subject --- foreman/data_refinery_foreman/surveyor/harmony.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/foreman/data_refinery_foreman/surveyor/harmony.py b/foreman/data_refinery_foreman/surveyor/harmony.py index ffe4b9c84..a668351ca 100644 --- a/foreman/data_refinery_foreman/surveyor/harmony.py +++ b/foreman/data_refinery_foreman/surveyor/harmony.py @@ -707,7 +707,7 @@ def __init__(self): "donor id", "donor", # SRA - # create_variants will find above attributes in characteristics + "source name", ] self.subject_fields = create_variants(subject_fields) From a1361321ff9ac9852e2cf1726f4053a7c20c4afc Mon Sep 17 00:00:00 2001 From: David Mejia Date: Fri, 7 Jul 2023 17:26:00 -0400 Subject: [PATCH 147/220] update harmonizer --- foreman/tests/surveyor/test_sra.py | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/foreman/tests/surveyor/test_sra.py b/foreman/tests/surveyor/test_sra.py index 1a098409a..4a6a89234 100644 --- a/foreman/tests/surveyor/test_sra.py +++ b/foreman/tests/surveyor/test_sra.py @@ -261,19 +261,21 @@ def test_metadata_is_gathered_correctly(self): ) def test_sra_metadata_is_harmonized(self): - metadata = SraSurveyor.gather_all_metadata("SRR3098582") + experiment_metadata, samples_metadata = SraSurveyor.gather_all_metadata("SRR3098582") + sample_metadata = samples_metadata[0] + sample = Sample() - SraSurveyor._apply_harmonized_metadata_to_sample(sample, metadata) + SraSurveyor._apply_harmonized_metadata_to_sample(sample, sample_metadata) self.assertEqual(sample.treatment, "biliatresone") self.assertEqual(sample.subject, "liver") self.assertEqual(sample.specimen_part, "liver") experiment = Experiment() - SraSurveyor._apply_metadata_to_experiment(experiment, metadata) + SraSurveyor._apply_metadata_to_experiment(experiment, experiment_metadata) self.assertEqual( experiment.title, "Transcriptional profiling through RNA-seq of zebrafish larval" " liver after exposure to biliatresone, a biliary toxin.", ) - self.assertEqual(experiment.source_first_published, datetime.date(2017, 9, 25)) - self.assertEqual(experiment.source_last_modified, datetime.date(2017, 9, 25)) + self.assertEqual(experiment.source_first_published, datetime.date(2017, 8, 25)) + self.assertEqual(experiment.source_last_modified, datetime.date(2023, 5, 19)) From 908c67e552bf233ae4683608d07628cf70b93672 Mon Sep 17 00:00:00 2001 From: David Mejia Date: Fri, 7 Jul 2023 17:36:16 -0400 Subject: [PATCH 148/220] remove redundant organismpart field --- foreman/data_refinery_foreman/surveyor/harmony.py | 2 -- 1 file changed, 2 deletions(-) diff --git a/foreman/data_refinery_foreman/surveyor/harmony.py b/foreman/data_refinery_foreman/surveyor/harmony.py index a668351ca..123ef5236 100644 --- a/foreman/data_refinery_foreman/surveyor/harmony.py +++ b/foreman/data_refinery_foreman/surveyor/harmony.py @@ -619,8 +619,6 @@ def __init__(self): "organ", "characteristic [organism part]", "characteristics [organism part]", - # SRA - "organismpart", # this isnt seen? # GEO "isolation source", "tissue sampled", From 53a5663c2b4baf9cae34e011606b1435e241d757 Mon Sep 17 00:00:00 2001 From: David Mejia Date: Wed, 28 Jun 2023 17:11:11 -0400 Subject: [PATCH 149/220] Intial Harmonizer changes for new ENA surveyor --- .../data_refinery_foreman/surveyor/harmony.py | 94 +++++++++++-------- 1 file changed, 57 insertions(+), 37 deletions(-) diff --git a/foreman/data_refinery_foreman/surveyor/harmony.py b/foreman/data_refinery_foreman/surveyor/harmony.py index 433206de9..ba9725111 100644 --- a/foreman/data_refinery_foreman/surveyor/harmony.py +++ b/foreman/data_refinery_foreman/surveyor/harmony.py @@ -5,7 +5,7 @@ `sex`, `age`, `specimen_part`, - `genetic_information`, + `genotype`, `disease`, `disease_stage`, `cell_line`, @@ -245,6 +245,7 @@ """ import csv +import re from io import StringIO from typing import Dict, List @@ -253,6 +254,9 @@ logger = get_and_configure_logger(__name__) +# re.Pattern / re._pattern_type were not defined in 3.8? +RE_TYPE = re.compile("").__class__ + TITLE_FIELDS = [ "sample name", @@ -292,7 +296,7 @@ def create_variants(fields_list: List): Ex, given 'cell line', add the ability to hit on 'characteristic [cell_line]' as well. """ - variants = [] + variants = set() for field in fields_list: space_variants = [field] @@ -303,24 +307,27 @@ def create_variants(fields_list: List): space_variants.append(field.replace(" ", "")) for space_variant in space_variants: - variants.append(space_variant) - variants.append("characteristic [" + space_variant + "]") - variants.append("characteristic[" + space_variant + "]") - variants.append("characteristics [" + space_variant + "]") - variants.append("characteristics[" + space_variant + "]") - variants.append("comment [" + space_variant + "]") - variants.append("comment[" + space_variant + "]") - variants.append("comments [" + space_variant + "]") - variants.append("comments[" + space_variant + "]") - variants.append("factorvalue[" + space_variant + "]") - variants.append("factor value[" + space_variant + "]") - variants.append("factorvalue [" + space_variant + "]") - variants.append("factor value [" + space_variant + "]") - variants.append("sample_" + space_variant) - variants.append("sample_host" + space_variant) - variants.append("sample_sample_" + space_variant) # Yes, seriously. - - return variants + variants.add(space_variant) + variants.add("characteristic [" + space_variant + "]") + variants.add("characteristic[" + space_variant + "]") + variants.add("characteristics [" + space_variant + "]") + variants.add("characteristics[" + space_variant + "]") + variants.add("comment [" + space_variant + "]") + variants.add("comment[" + space_variant + "]") + variants.add("comments [" + space_variant + "]") + variants.add("comments[" + space_variant + "]") + variants.add("factorvalue[" + space_variant + "]") + variants.add("factor value[" + space_variant + "]") + variants.add("factorvalue [" + space_variant + "]") + variants.add("factor value [" + space_variant + "]") + variants.add("sample_" + space_variant) + variants.add("sample_host" + space_variant) + variants.add("sample_sample_" + space_variant) # Yes, seriously. + + # handle SRA flattened json response + variants.add(re.compile("characteristics_" + space_variant + "(?:_\d+_text)?$")) + + return list(variants) def parse_sdrf(sdrf_url: str) -> List: @@ -443,8 +450,7 @@ def __init__(self): "characteristic [organism part]", "characteristics [organism part]", # SRA - "cell_type", - "organismpart", + "organismpart", # this isnt seen? # GEO "isolation source", "tissue sampled", @@ -452,7 +458,7 @@ def __init__(self): ] self.specimen_part_fields = create_variants(specimen_part_fields) - genetic_information_fields = [ + genotype_fields = [ "strain/background", "strain", "strain or line", @@ -465,7 +471,7 @@ def __init__(self): "cultivar", "strain/genotype", ] - self.genetic_information_fields = create_variants(genetic_information_fields) + self.genotype_fields = create_variants(genotype_fields) disease_fields = [ "disease", @@ -493,8 +499,8 @@ def __init__(self): cell_line_fields = [ "cell line", - "sample strain", ] + self.cell_line_fields = create_variants(cell_line_fields) treatment_fields = [ @@ -531,7 +537,7 @@ def __init__(self): "donor id", "donor", # SRA - "sample_source_name", + # create_variants will find above attributes in characteristics ] self.subject_fields = create_variants(subject_fields) @@ -539,6 +545,8 @@ def __init__(self): "developmental stage", "development stage", "development stages", + # SRA. + "dev stage", ] self.developmental_stage_fields = create_variants(developmental_stage_fields) @@ -585,25 +593,37 @@ def harmonize_value(self, field_name: str, value): else: return value.lower().strip() - def harmonize_field(self, sample_metadata: Dict, harmonized_sample: Dict, field: str): - field_name = field.split("_fields")[0] - + def harmonize_field( + self, sample_metadata: Dict, harmonized_sample: Dict, variants_attribute: str + ): + sample_attribute = variants_attribute.split("_fields")[0] + harmonized_values = set() for key, value in sample_metadata.items(): lower_key = key.lower().strip() - if lower_key in getattr(self, field): - harmonized_value = self.harmonize_value(field_name, value) + key_variants = getattr(self, variants_attribute) + key_regexes = [r for r in key_variants if isinstance(r, RE_TYPE)] + key_strings = [s for s in key_variants if isinstance(s, str)] + if lower_key in key_strings: + harmonized_value = self.harmonize_value(sample_attribute, value) if harmonized_value: - harmonized_sample[field_name] = harmonized_value - break + harmonized_values.add(harmonized_value) + else: + for key_regex in key_regexes: + if key_regex.fullmatch(lower_key): + harmonized_value = self.harmonize_value(sample_attribute, value) + if harmonized_value: + harmonized_values.add(harmonized_value) + + harmonized_sample[sample_attribute] = ";".join([str(v) for v in harmonized_values]) def harmonize_sample(self, sample_metadata: Dict, title_field: str = None) -> Dict: - fields = [ + variants_attributes = [ "sex_fields", "age_fields", "specimen_part_fields", - "genetic_information_fields", + "genotype_fields", "disease_fields", "disease_stage_fields", "cell_line_fields", @@ -617,8 +637,8 @@ def harmonize_sample(self, sample_metadata: Dict, title_field: str = None) -> Di harmonized_sample = {} harmonized_sample["title"] = extract_title(sample_metadata, title_field) - for field in fields: - self.harmonize_field(sample_metadata, harmonized_sample, field) + for variants_attribute in variants_attributes: + self.harmonize_field(sample_metadata, harmonized_sample, variants_attribute) return harmonized_sample From 7721edb3af30a1eb15d4f006b9dd0450cf329648 Mon Sep 17 00:00:00 2001 From: David Mejia Date: Fri, 7 Jul 2023 16:01:33 -0400 Subject: [PATCH 150/220] updating example SRA metadata comment --- .../data_refinery_foreman/surveyor/harmony.py | 382 +++++++++++++----- 1 file changed, 276 insertions(+), 106 deletions(-) diff --git a/foreman/data_refinery_foreman/surveyor/harmony.py b/foreman/data_refinery_foreman/surveyor/harmony.py index ba9725111..2e8e50174 100644 --- a/foreman/data_refinery_foreman/surveyor/harmony.py +++ b/foreman/data_refinery_foreman/surveyor/harmony.py @@ -45,112 +45,282 @@ 'sex': 'male'} SRA Example: - {'alias': 'GSM2997959_r1', - 'broker_name': 'GEO', - 'center_name': 'GEO', - 'center_project_name': 'GSE99065', - 'ena-base-count': '279111754922', - 'ena-spot-count': '1152605026', - 'experiment_accession': 'SRX3691797', - 'experiment_design_description': None, - 'experiment_title': 'NextSeq 500 paired end sequencing; GSM2997959: INOF_FRT; ' - 'Homo sapiens; RNA-Seq', - 'lab_name': '', - 'library_construction_protocol': 'cDNA library produced with TGIRT RNA was ' - 'isolated and DNase treated using RNEasy ' - 'mini kit (Qiagen 74106) according to the ' - 'manufacturer protocol. 5ug DNA-free total ' - 'RNA was then ribodepleted using Ribo-zero ' - 'Gold (Illumina RZG1224 ) according to the ' - 'manufacturer protocol and purified using a ' - 'modified ZYMO RNA Clean and Concentrator ' - '(R1016) protocol where 8 volumes EtOH ' - 'instead of 4. rRNA depleted RNA was ' - 'fragmented with NEBNext Magnesium RNA ' - 'Fragmentation Module (E6150) followed by ' - 'dephosphorylation using T4PNK (mandel ) ' - 'and purified by same modified ZYMO ' - 'protocol. cDNAs were synthesized via TGIRT ' - 'template-switching with 1µM TGIRT-III ' - 'reverse transcriptase (Ingex, LLC) for 15 ' - 'min at 60o C, during which a DNA ' - 'oligonucleotide containing the complement ' - 'of an Illumina Read 2 sequencing ' - 'primer-binding site becomes seamlessly ' - "linked to the 5' cDNA end. After reaction " - 'cleanup (Qiagen MinElute Reaction cleanup ' - "28206), a 5' adenylated DNA oligonucleotide " - 'containing the complement of an Illumina ' - 'Read 1 sequencing primer-binding site is ' - "then ligated to the 3' cDNA end with " - "Thermostable 5' AppDNA / RNA Ligase (New " - 'England Biolabs M0319). Properly ligated ' - 'cDNAs were amplified by PCR (12 cycles) to ' - 'synthesize the second strand and add ' - 'Illumina flowcell capture and index ' - 'sequences. Library was size-selected with ' - 'Ampure XP beads (Beckman-Coulter) and ' - 'quantified with Qubit and evaluated on an ' - 'Agilent 2100 Bioanalyzer.', - 'library_layout': 'PAIRED', - 'library_selection': 'cDNA', - 'library_source': 'TRANSCRIPTOMIC', - 'library_strategy': 'RNA-Seq', - 'organism_id': '9606', - 'organism_name': 'HOMO SAPIENS', - 'platform_instrument_model': 'NextSeq500', - 'run_accession': 'SRR6718414', - 'run_ena_base_count': '1773379870', - 'run_ena_first_public': '2018-02-17', - 'run_ena_last_update': '2018-02-17', - 'run_ena_spot_count': '15046271', - 'sample_accession': 'SRS2951393', - 'sample_cell_type': 'Immortalized normal ovarian fibroblast', - 'sample_ena_base_count': '1773379870', - 'sample_ena_first_public': '2018-02-14', - 'sample_ena_last_update': '2018-02-14', - 'sample_ena_spot_count': '15046271', - 'sample_source_name': 'INOF cell line', - 'sample_title': 'INOF_FRT', - 'sample_treatment': 'none', - 'study_abstract': 'The ability to compare the abundance of one RNA molecule ' - 'to another is a crucial step for understanding how gene ' - 'expression is modulated to shape the transcriptome ' - 'landscape. However, little information is available about ' - 'the relative expression of the different classes of coding ' - 'and non-coding RNA or even between RNA of the same class. ' - 'In this study, we present a complete portrait of the human ' - 'transcriptome that depicts the relationship of all classes ' - 'of non-ribosomal RNA longer than sixty nucleotides. The ' - 'results show that the most abundant RNA in the human ' - 'rRNA-depleted transcriptome is tRNA followed by ' - 'spliceosomal RNA. Surprisingly, the signal recognition ' - 'particle RNA 7SL by itself occupied 8% of the ribodepleted ' - 'transcriptome producing a similar number of transcripts as ' - 'that produced by all snoRNA genes combined. In general, ' - 'the most abundant RNA are non-coding but many more protein ' - 'coding than non-coding genes produce more than 1 ' - 'transcript per million. Examination of gene functions ' - 'suggests that RNA abundance reflects both gene and cell ' - 'function. Together, the data indicate that the human ' - 'transcriptome is shaped by a small number of highly ' - 'expressed non-coding genes and a large number of ' - 'moderately expressed protein coding genes that reflect ' - 'cellular phenotypes. Overall design: RNA was isolated from ' - 'SKOV3ip1 and INOF human cell lines and selected with ' - 'different methods. The resulting libraries were ' - 'multiplexed and paired-end sequenced using Illumina HiSeq.', - 'study_accession': 'SRP107324', - 'study_ena_base_count': '279111754922', - 'study_ena_first_public': '2017-09-25', - 'study_ena_last_update': '2018-02-15', - 'study_ena_spot_count': '1152605026', - 'study_title': 'Simultaneous detection and relative quantification of coding ' - 'and non-coding RNA using a single sequencing reaction', - 'study_type': 'Transcriptome Analysis', - 'submission_accession': 'SRA562540', - 'submission_comment': 'submission brokered by GEO', - 'submission_title': 'Submitted by Gene Expression Omnibus on 25-SEP-2017'} + {"run_accession": "ERR1427135", + "project_name": "Single-cell RNA sequencing of spleen-derived LCK cells from adult Zebrafish", + "submission_accession": "ERA631093", + "library_min_fragment_size": "", + "bam_md5": "", + "assembly_software": "", + "library_prep_longitude": "", + "library_selection": "cDNA", + "pcr_isolation_protocol": "", + "chip_protocol": "", + "sequencing_primer_provider": "", + "serotype": "", + "environment_feature": "", + "last_updated": "2018-11-16", + "submitted_galaxy": "ftp.sra.ebi.ac.uk/vol1/run/ERR142/ERR1427135/LCK_4_90.cram;ftp.sra.ebi.ac.uk/vol1/run/ERR142/ERR1427135/LCK_4_90.cram.crai", + "extraction_protocol": "", + "germline": "", + "secondary_project": "", + "culture_collection": "", + "submission_tool": "", + "sra_bytes": "", + "read_strand": "", + "rna_purity_280_ratio": "", + "hi_c_protocol": "", + "collected_by": "", + "submitted_ftp": "ftp.sra.ebi.ac.uk/vol1/run/ERR142/ERR1427135/LCK_4_90.cram;ftp.sra.ebi.ac.uk/vol1/run/ERR142/ERR1427135/LCK_4_90.cram.crai", + "restriction_enzyme_target_sequence": "", + "isolate": "", + "fastq_bytes": "78258588;82464883", + "instrument_platform": "ILLUMINA", + "variety": "", + "sequencing_date_format": "", + "temperature": "", + "sra_aspera": "", + "ecotype": "", + "submitted_aspera": "fasp.sra.ebi.ac.uk:/vol1/run/ERR142/ERR1427135/LCK_4_90.cram;fasp.sra.ebi.ac.uk:/vol1/run/ERR142/ERR1427135/LCK_4_90.cram.crai", + "sampling_campaign": "", + "bam_ftp": "", + "tissue_lib": "", + "environmental_sample": "", + "control_experiment": "", + "sex": "", + "submitted_md5": "00c61590c4e662488b18a8397df876d6;ceb9b9368ba635b648d51bf15ad3626d", + "checklist": "ERC000011", + "fastq_galaxy": "ftp.sra.ebi.ac.uk/vol1/fastq/ERR142/005/ERR1427135/ERR1427135_1.fastq.gz;ftp.sra.ebi.ac.uk/vol1/fastq/ERR142/005/ERR1427135/ERR1427135_2.fastq.gz", + "library_gen_protocol": "", + "specimen_voucher": "", + "library_prep_latitude": "", + "submitted_bytes": "214700406;15844", + "taxonomic_identity_marker": "", + "run_date": "", + "country": "", + "ncbi_reporting_standard": "", + "sample_description": "Protocols: The spleen from a heterozygote Tg(lck:EGFP) or wild-type fish was dissected and passed through a 40\u03bcm cell strainer using the plunger of a 1-mL syringe and cells were collected in cold 1xPBS/5% FBS. A non-transgenic line was used to set up the gating and exclude autofluorescent cells. Propidium iodide (PI) staining was used to exclude dead cells. Individual cells were sorted, using a Becton Dickinson Influx sorter with 488- and 561 nm lasers (Schulte et al., 2015) and collected in a single well of a 96 well plate containing 2.3 uL of 0.2 % Triton X-100 supplemented with 1 U/uL SUPERase In RNAse inhibitor (Ambion). The size, granularity and level of fluorescence for each cell were simultaneously recorded. The Smart-seq2 protocol (Picelli et al., 2014) was used to amplify the whole transcriptome and prepare libraries. Twenty-five cycles of PCR amplification were performed.", + "experiment_title": "Illumina HiSeq 2500 paired end sequencing; Single-cell RNA sequencing of spleen-derived LCK cells from adult Zebrafish;Single-cell RNA sequencing of spleen-derived LCK cells from adult Zebrafish", + "sra_galaxy": "", + "sample_prep_interval": "", + "fastq_md5": "d2aa4fe6ff43de680096df109a9e33f6;2664741d32d883f615205939ffc872d5", + "sample_accession": "SAMEA4011859", + "secondary_study_accession": "ERP015799", + "experimental_protocol": "", + "read_count": "4001164", + "study_title": "Single-cell RNA sequencing of spleen-derived LCK cells from adult Zebrafish", + "bio_material": "", + "rna_prep_5_protocol": "", + "host_body_site": "", + "local_environmental_context": "", + "assembly_quality": "", + "collection_date_end": "", + "sample_capture_status": "", + "sample_title": "LCK_4#90", + "host_genotype": "", + "host_phenotype": "", + "environmental_medium": "", + "cultivar": "", + "instrument_model": "Illumina HiSeq 2500", + "faang_library_selection": "", + "target_gene": "", + "bam_bytes": "", + "library_max_fragment_size": "", + "experiment_target": "", + "sequencing_date": "", + "nominal_sdev": "20", + "chip_ab_provider": "", + "environment_material": "", + "host_tax_id": "", + "sample_material": "", + "sample_storage_processing": "", + "sra_md5": "", + "cell_type": "", + "fastq_ftp": "ftp.sra.ebi.ac.uk/vol1/fastq/ERR142/005/ERR1427135/ERR1427135_1.fastq.gz;ftp.sra.ebi.ac.uk/vol1/fastq/ERR142/005/ERR1427135/ERR1427135_2.fastq.gz", + "sample_prep_interval_units": "", + "broker_name": "ArrayExpress", + "sub_strain": "", + "base_count": "500145500", + "library_strategy": "RNA-Seq", + "restriction_site": "", + "serovar": "", + "investigation_type": "", + "location": "", + "library_source": "TRANSCRIPTOMIC", + "sra_ftp": "", + "library_layout": "PAIRED", + "experimental_factor": "", + "sequencing_primer_catalog": "", + "environment_biome": "", + "rna_purity_230_ratio": "", + "dnase_protocol": "", + "dev_stage": "", + "library_prep_date_format": "", + "bam_aspera": "", + "binning_software": "", + "rna_integrity_num": "", + "library_prep_date": "", + "location_start": "", + "marine_region": "", + "aligned": "", + "file_location": "", + "sample_collection": "", + "chip_target": "", + "nominal_length": "400", + "broad_scale_environmental_context": "", + "sequencing_location": "", + "status": "public", + "completeness_score": "", + "lon": "", + "fastq_aspera": "fasp.sra.ebi.ac.uk:/vol1/fastq/ERR142/005/ERR1427135/ERR1427135_1.fastq.gz;fasp.sra.ebi.ac.uk:/vol1/fastq/ERR142/005/ERR1427135/ERR1427135_2.fastq.gz", + "host_sex": "", + "library_pcr_isolation_protocol": "", + "sample_alias": "E-MTAB-4617:LCK_4#90", + "mating_type": "", + "collection_date_start": "", + "sub_species": "", + "contamination_score": "", + "run_alias": "E-MTAB-4617:LCK_4#90", + "restriction_enzyme": "", + "depth": "", + "submitted_read_type": "", + "library_construction_protocol": "The spleen from a heterozygote Tg(lck:EGFP) or wild-type fish was dissected and passed through a 40\u03bcm cell strainer using the plunger of a 1-mL syringe and cells were collected in cold 1xPBS/5% FBS. A non-transgenic line was used to set up the gating and exclude autofluorescent cells. Propidium iodide (PI) staining was used to exclude dead cells. Individual cells were sorted, using a Becton Dickinson Influx sorter with 488- and 561 nm lasers (Schulte et al., 2015) and collected in a single well of a 96 well plate containing 2.3 uL of 0.2 % Triton X-100 supplemented with 1 U/uL SUPERase In RNAse inhibitor (Ambion). The size, granularity and level of fluorescence for each cell were simultaneously recorded. The Smart-seq2 protocol (Picelli et al., 2014) was used to amplify the whole transcriptome and prepare libraries. Twenty-five cycles of PCR amplification were performed.", + "host_growth_conditions": "", + "collection_date": "", + "experiment_alias": "E-MTAB-4617:LCK_4#90", + "host_gravidity": "", + "center_name": "Ludwig Center for Cancer Research, University of Lausanne, Lausanne, Switzerland Swiss Institute of Bioinformatics", + "identified_by": "", + "cell_line": "", + "sampling_site": "", + "host": "", + "library_name": "LCK_4#90", + "tag": "ena;datahub", + "first_created": "2016-05-26", + "lat": "", + "strain": "", + "experiment_accession": "ERX1497667", + "scientific_name": "Danio rerio", + "host_status": "", + "tax_id": "7955", + "study_accession": "PRJEB14175", + "submitted_format": "CRAM;CRAI", + "submitted_host_sex": "", + "bisulfite_protocol": "", + "altitude": "", + "rt_prep_protocol": "", + "host_scientific_name": "", + "bam_galaxy": "", + "accession": "ERR1427135", + "secondary_sample_accession": "ERS1182969", + "sample_storage": "", + "cage_protocol": "", + "sampling_platform": "", + "taxonomic_classification": "", + "location_end": "", + "protocol_label": "", + "elevation": "", + "salinity": "", + "sequencing_method": "", + "sequencing_primer_lot": "", + "first_public": "2016-12-01", + "transposase_protocol": "", + "study_alias": "E-MTAB-4617", + "library_prep_location": "", + "rna_prep_3_protocol": "", + "ph": "", + "sequencing_longitude": "", + "tissue_type": "Spleen", + "isolation_source": "", + "name": "E-MTAB-4617:LCK_4#90", + "webinSubmissionAccountId": "Webin-24", + "taxId": 7955, + "release": "2016-12-01T17:01:24Z", + "update": "2021-08-21T15:38:37.980Z", + "submitted": "2016-05-26T17:59:08Z", + "characteristics_ENA_first_public_0_text": "2016-12-01", + "characteristics_ENA_first_public_0_tag": "attribute", + "characteristics_ENA_last_update_0_text": "2016-05-26", + "characteristics_ENA_last_update_0_tag": "attribute", + "characteristics_ENA-CHECKLIST_0_text": "ERC000011", + "characteristics_ENA-CHECKLIST_0_tag": "attribute", + "characteristics_External_Id_0_text": "SAMEA4011859", + "characteristics_External_Id_0_tag": "Namespace:BioSample", + "characteristics_INSDC_center_alias_0_text": "Ludwig Center for Cancer Research, University of Lausanne, Lausanne, Switzerland Swiss Institute of Bioinformatics", + "characteristics_INSDC_center_name_0_text": "Ludwig Center for Cancer Research, University of Lausanne, Lausanne, Switzerland Swiss Institute of Bioinformatics", + "characteristics_INSDC_first_public_0_text": "2016-12-01T17:01:24Z", + "characteristics_INSDC_last_update_0_text": "2016-05-26T17:59:08Z", + "characteristics_INSDC_status_0_text": "public", + "characteristics_SRA_accession_0_text": "ERS1182969", + "characteristics_Submitter_Id_0_text": "E-MTAB-4617:LCK_4#90", + "characteristics_Submitter_Id_0_tag": "Namespace:Ludwig Center for Cancer Research, University of Lausanne, Lausanne, Switzerland Swiss Institute of Bioinformatics", + "characteristics_broker_name_0_text": "ArrayExpress", + "characteristics_broker_name_0_ontologyTerms_0": "http://www.ebi.ac.uk/efo/EFO_0009737", + "characteristics_common_name_0_text": "zebrafish", + "characteristics_description_0_text": "Protocols: The spleen from a heterozygote Tg(lck:EGFP) or wild-type fish was dissected and passed through a 40\u03bcm cell strainer using the plunger of a 1-mL syringe and cells were collected in cold 1xPBS/5% FBS. A non-transgenic line was used to set up the gating and exclude autofluorescent cells. Propidium iodide (PI) staining was used to exclude dead cells. Individual cells were sorted, using a Becton Dickinson Influx sorter with 488- and 561 nm lasers (Schulte et al., 2015) and collected in a single well of a 96 well plate containing 2.3 uL of 0.2 % Triton X-100 supplemented with 1 U/uL SUPERase In RNAse inhibitor (Ambion). The size, granularity and level of fluorescence for each cell were simultaneously recorded. The Smart-seq2 protocol (Picelli et al., 2014) was used to amplify the whole transcriptome and prepare libraries. Twenty-five cycles of PCR amplification were performed.", + "characteristics_fsc_0_text": "23555", + "characteristics_fsc_0_tag": "attribute", + "characteristics_gfp_0_text": "109", + "characteristics_gfp_0_tag": "attribute", + "characteristics_individual_0_text": "2", + "characteristics_individual_0_tag": "attribute", + "characteristics_organism_0_text": "Danio rerio", + "characteristics_organism_0_ontologyTerms_0": "http://purl.obolibrary.org/obo/NCBITaxon_7955", + "characteristics_organism_1_text": "Danio rerio", + "characteristics_organism_1_ontologyTerms_0": "http://purl.obolibrary.org/obo/NCBITaxon_7955", + "characteristics_organism_1_tag": "attribute", + "characteristics_pi_0_text": "9", + "characteristics_pi_0_tag": "attribute", + "characteristics_plate_0_text": "4", + "characteristics_plate_0_tag": "attribute", + "characteristics_ssc_0_text": "10994", + "characteristics_ssc_0_tag": "attribute", + "characteristics_tissue_0_text": "Spleen", + "characteristics_tissue_0_ontologyTerms_0": "http://purl.obolibrary.org/obo/UBERON_0002106", + "characteristics_tissue_0_tag": "attribute", + "characteristics_title_0_text": "LCK_4#90", + "characteristics_well_0_text": "B12", + "characteristics_well_0_tag": "attribute", + "relationships_0_source": "SAMEG321352", + "relationships_0_type": "has member", + "relationships_0_target": "SAMEA4011859", + "externalReferences_0_url": "https://www.ebi.ac.uk/ena/browser/view/SAMEA4011859", + "submittedVia": "JSON_API", + "create": "2018-12-07T06:18:17.244Z", + "_links_self_href": "https://www.ebi.ac.uk/biosamples/samples/SAMEA4011859", + "_links_curationDomain_href": "https://www.ebi.ac.uk/biosamples/samples/SAMEA4011859{?curationdomain}", + "_links_curationDomain_templated": true, + "_links_curationLinks_href": "https://www.ebi.ac.uk/biosamples/samples/SAMEA4011859/curationlinks", + "_links_curationLink_href": "https://www.ebi.ac.uk/biosamples/samples/SAMEA4011859/curationlinks/{hash}", + "_links_curationLink_templated": true, + "_links_structuredData_href": "https://www.ebi.ac.uk/biosamples/structureddata/SAMEA4011859", + "study_ena_accession": "PRJEB14175", + "study_ena_keywords": "", + "study_ena_description": "Transcriptome data from individual lck:GFP expressing cells isolated from adult Zebrafish spleen. LCK is a marker of lymphocytes and here we identified two major subpopulations corresponding to T-cells and NK-like and a minor one of myeloid-like cells. Single cell transcriptomes are matched with FACS index sorting data (GFP, forward and side light scatter and dead cell staining)", + "study_ena_study_name": "Single-cell RNA sequencing of spleen-derived LCK cells from adult Zebrafish", + "study_ena_project_name": "Single-cell RNA sequencing of spleen-derived LCK cells from adult Zebrafish", + "study_ena_geo_accession": "", + "study_ena_isolate": "", + "study_ena_center_name": "Ludwig Center for Cancer Research, University of Lausanne, Lausanne, Switzerland Swiss Institute of Bioinformatics", + "study_ena_secondary_study_accession": "ERP015799", + "study_ena_tag": "ena", + "study_ena_secondary_study_center_name": "", + "study_ena_strain": "", + "study_ena_study_title": "Single-cell RNA sequencing of spleen-derived LCK cells from adult Zebrafish", + "study_ena_last_updated": "2016-05-26", + "study_ena_first_public": "2017-02-03", + "study_ena_broker_name": "ArrayExpress", + "study_ena_study_description": "Transcriptome data from individual lck:GFP expressing cells isolated from adult Zebrafish spleen. LCK is a marker of lymphocytes and here we identified two major subpopulations corresponding to T-cells and NK-like and a minor one of myeloid-like cells. Single cell transcriptomes are matched with FACS index sorting data (GFP, forward and side light scatter and dead cell staining)", + "study_ena_secondary_study_alias": "E-MTAB-4617", + "study_ena_scientific_name": "", + "study_ena_study_alias": "E-MTAB-4617", + "study_ena_breed": "", + "study_ena_tax_id": "", + "study_ena_parent_study_accession": "", + "study_ena_study_accession": "PRJEB14175", + "study_ena_submission_tool": "", + "study_ena_cultivar": "", + "study_ena_tax_division": "", + "study_ena_status": "public"} GEO: ex: From 95cdac5c75082f6a798ab557b29cc18d7738f78c Mon Sep 17 00:00:00 2001 From: David Mejia Date: Fri, 7 Jul 2023 16:13:55 -0400 Subject: [PATCH 151/220] move separating strings and regex out of loop --- foreman/data_refinery_foreman/surveyor/harmony.py | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/foreman/data_refinery_foreman/surveyor/harmony.py b/foreman/data_refinery_foreman/surveyor/harmony.py index 2e8e50174..888302b5b 100644 --- a/foreman/data_refinery_foreman/surveyor/harmony.py +++ b/foreman/data_refinery_foreman/surveyor/harmony.py @@ -768,13 +768,12 @@ def harmonize_field( ): sample_attribute = variants_attribute.split("_fields")[0] harmonized_values = set() + key_variants = getattr(self, variants_attribute) + key_regexes = [r for r in key_variants if isinstance(r, RE_TYPE)] + key_strings = [s for s in key_variants if isinstance(s, str)] + for key, value in sample_metadata.items(): lower_key = key.lower().strip() - - key_variants = getattr(self, variants_attribute) - key_regexes = [r for r in key_variants if isinstance(r, RE_TYPE)] - key_strings = [s for s in key_variants if isinstance(s, str)] - if lower_key in key_strings: harmonized_value = self.harmonize_value(sample_attribute, value) if harmonized_value: From a47ae6e3c9020de588d4e3919018f06e8800e773 Mon Sep 17 00:00:00 2001 From: David Mejia Date: Fri, 7 Jul 2023 17:07:00 -0400 Subject: [PATCH 152/220] always do regex checks and limit age to one value --- .../data_refinery_foreman/surveyor/harmony.py | 18 +++++++++++------- 1 file changed, 11 insertions(+), 7 deletions(-) diff --git a/foreman/data_refinery_foreman/surveyor/harmony.py b/foreman/data_refinery_foreman/surveyor/harmony.py index 888302b5b..ffe4b9c84 100644 --- a/foreman/data_refinery_foreman/surveyor/harmony.py +++ b/foreman/data_refinery_foreman/surveyor/harmony.py @@ -778,14 +778,18 @@ def harmonize_field( harmonized_value = self.harmonize_value(sample_attribute, value) if harmonized_value: harmonized_values.add(harmonized_value) - else: - for key_regex in key_regexes: - if key_regex.fullmatch(lower_key): - harmonized_value = self.harmonize_value(sample_attribute, value) - if harmonized_value: - harmonized_values.add(harmonized_value) - harmonized_sample[sample_attribute] = ";".join([str(v) for v in harmonized_values]) + for key_regex in key_regexes: + if key_regex.fullmatch(lower_key): + harmonized_value = self.harmonize_value(sample_attribute, value) + if harmonized_value: + harmonized_values.add(harmonized_value) + + # Age can only be one value in the database. + if sample_attribute == "age" and len(harmonized_values) > 0: + harmonized_sample[sample_attribute] = harmonized_values.pop() + else: + harmonized_sample[sample_attribute] = ";".join([str(v) for v in harmonized_values]) def harmonize_sample(self, sample_metadata: Dict, title_field: str = None) -> Dict: variants_attributes = [ From e174f0c3f4e80f0f33d54bef92565291b86e700d Mon Sep 17 00:00:00 2001 From: David Mejia Date: Fri, 7 Jul 2023 17:15:00 -0400 Subject: [PATCH 153/220] add back source name for subject --- foreman/data_refinery_foreman/surveyor/harmony.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/foreman/data_refinery_foreman/surveyor/harmony.py b/foreman/data_refinery_foreman/surveyor/harmony.py index ffe4b9c84..a668351ca 100644 --- a/foreman/data_refinery_foreman/surveyor/harmony.py +++ b/foreman/data_refinery_foreman/surveyor/harmony.py @@ -707,7 +707,7 @@ def __init__(self): "donor id", "donor", # SRA - # create_variants will find above attributes in characteristics + "source name", ] self.subject_fields = create_variants(subject_fields) From 7e37c5b09d3c65bba4c582f606070a0fa6fe96e8 Mon Sep 17 00:00:00 2001 From: David Mejia Date: Fri, 7 Jul 2023 17:26:00 -0400 Subject: [PATCH 154/220] update harmonizer --- foreman/tests/surveyor/test_sra.py | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/foreman/tests/surveyor/test_sra.py b/foreman/tests/surveyor/test_sra.py index 1a098409a..4a6a89234 100644 --- a/foreman/tests/surveyor/test_sra.py +++ b/foreman/tests/surveyor/test_sra.py @@ -261,19 +261,21 @@ def test_metadata_is_gathered_correctly(self): ) def test_sra_metadata_is_harmonized(self): - metadata = SraSurveyor.gather_all_metadata("SRR3098582") + experiment_metadata, samples_metadata = SraSurveyor.gather_all_metadata("SRR3098582") + sample_metadata = samples_metadata[0] + sample = Sample() - SraSurveyor._apply_harmonized_metadata_to_sample(sample, metadata) + SraSurveyor._apply_harmonized_metadata_to_sample(sample, sample_metadata) self.assertEqual(sample.treatment, "biliatresone") self.assertEqual(sample.subject, "liver") self.assertEqual(sample.specimen_part, "liver") experiment = Experiment() - SraSurveyor._apply_metadata_to_experiment(experiment, metadata) + SraSurveyor._apply_metadata_to_experiment(experiment, experiment_metadata) self.assertEqual( experiment.title, "Transcriptional profiling through RNA-seq of zebrafish larval" " liver after exposure to biliatresone, a biliary toxin.", ) - self.assertEqual(experiment.source_first_published, datetime.date(2017, 9, 25)) - self.assertEqual(experiment.source_last_modified, datetime.date(2017, 9, 25)) + self.assertEqual(experiment.source_first_published, datetime.date(2017, 8, 25)) + self.assertEqual(experiment.source_last_modified, datetime.date(2023, 5, 19)) From ac09e2a022a181a2bff136a343f91d77fe7f0971 Mon Sep 17 00:00:00 2001 From: David Mejia Date: Fri, 7 Jul 2023 17:36:16 -0400 Subject: [PATCH 155/220] remove redundant organismpart field --- foreman/data_refinery_foreman/surveyor/harmony.py | 2 -- 1 file changed, 2 deletions(-) diff --git a/foreman/data_refinery_foreman/surveyor/harmony.py b/foreman/data_refinery_foreman/surveyor/harmony.py index a668351ca..123ef5236 100644 --- a/foreman/data_refinery_foreman/surveyor/harmony.py +++ b/foreman/data_refinery_foreman/surveyor/harmony.py @@ -619,8 +619,6 @@ def __init__(self): "organ", "characteristic [organism part]", "characteristics [organism part]", - # SRA - "organismpart", # this isnt seen? # GEO "isolation source", "tissue sampled", From 9cf58e39b5bc14ec4357811bd758adb0c24c84d5 Mon Sep 17 00:00:00 2001 From: Arkadii Yakovets Date: Mon, 10 Jul 2023 17:28:43 -0700 Subject: [PATCH 156/220] Optimize Github Action scripts - Refactor scripts to use `common::update_docker_image()` - Use GH codecov action instead of `codecov.sh` - Delete no longer needed files (cleanup_instance.sh, codecov.sh, pull_docker_image.sh) - Use `set -e` consistently --- .github/scripts/cleanup_instance.sh | 27 - .github/scripts/codecov.sh | 1660 ----------------- .github/scripts/filter_tests.sh | 4 +- .github/scripts/post_deploy_cleanup.sh | 4 +- ...t_coverage.sh => prepare_test_coverage.sh} | 10 +- .github/scripts/pull_docker_images.sh | 16 - .github/scripts/push_docker_images.sh | 4 +- .github/scripts/remote_deploy.sh | 33 +- .github/scripts/run_terraform.sh | 17 +- ..._ca_certs.sh => update_ca_certificates.sh} | 0 .github/scripts/update_docker_image.sh | 85 - .github/scripts/update_docker_images.sh | 55 + .github/workflows/config.yml | 75 +- scripts/common.sh | 52 +- scripts/prepare_image.sh | 41 +- scripts/update_docker_images.sh | 48 +- 16 files changed, 219 insertions(+), 1912 deletions(-) delete mode 100755 .github/scripts/cleanup_instance.sh delete mode 100755 .github/scripts/codecov.sh rename .github/scripts/{upload_test_coverage.sh => prepare_test_coverage.sh} (72%) delete mode 100755 .github/scripts/pull_docker_images.sh rename .github/scripts/{fix_ca_certs.sh => update_ca_certificates.sh} (100%) delete mode 100755 .github/scripts/update_docker_image.sh create mode 100755 .github/scripts/update_docker_images.sh diff --git a/.github/scripts/cleanup_instance.sh b/.github/scripts/cleanup_instance.sh deleted file mode 100755 index d359f6966..000000000 --- a/.github/scripts/cleanup_instance.sh +++ /dev/null @@ -1,27 +0,0 @@ -#!/bin/bash - -rm -rf /usr/local/android-sdk-linux -rm -rf /usr/local/go -rm -rf /usr/local/android-ndk -rm -rf /home/ubuntu/nvm -rm -rf /home/ubuntu/.android -rm -rf /home/ubuntu/.phpenv -rm -rf /home/ubuntu/.rvm - -# Suggestions from https://github.com/actions/virtual-environments/issues/709#issuecomment-615370473 -sudo apt-get remove -y '^ghc-8.*' -sudo apt-get remove -y '^dotnet-.*' -sudo apt-get remove -y '^llvm-.*' -sudo apt-get remove -y 'php.*' -sudo apt-get remove -y \ - azure-cli \ - firefox \ - google-chrome-stable \ - google-cloud-sdk \ - hhvm \ - mono-devel \ - powershell -sudo apt-get autoremove -y -sudo apt-get clean - -rm -rf /usr/share/dotnet/ diff --git a/.github/scripts/codecov.sh b/.github/scripts/codecov.sh deleted file mode 100755 index 8648ee4d2..000000000 --- a/.github/scripts/codecov.sh +++ /dev/null @@ -1,1660 +0,0 @@ -#!/usr/bin/env bash - -# Apache License Version 2.0, January 2004 -# https://github.com/codecov/codecov-bash/blob/master/LICENSE - - -set -e +o pipefail - -VERSION="20191211-b8db533" - -url="https://codecov.io" -env="$CODECOV_ENV" -service="" -token="" -search_in="" -flags="" -exit_with=0 -curlargs="" -curlawsargs="" -dump="0" -clean="0" -curl_s="-s" -name="$CODECOV_NAME" -include_cov="" -exclude_cov="" -ddp="$(echo ~)/Library/Developer/Xcode/DerivedData" -xp="" -files="" -cacert="$CODECOV_CA_BUNDLE" -gcov_ignore="-not -path './bower_components/**' -not -path './node_modules/**' -not -path './vendor/**'" -gcov_include="" - -ft_gcov="1" -ft_coveragepy="1" -ft_fix="1" -ft_search="1" -ft_s3="1" -ft_network="1" -ft_xcodellvm="1" -ft_xcodeplist="0" -ft_gcovout="1" - -_git_root=$(git rev-parse --show-toplevel 2>/dev/null || hg root 2>/dev/null || echo $PWD) -git_root="$_git_root" -codecov_yml="" -remote_addr="" -if [ "$git_root" = "$PWD" ]; -then - git_root="." -fi - -url_o="" -pr_o="" -build_o="" -commit_o="" -search_in_o="" -tag_o="" -branch_o="" -slug_o="" -prefix_o="" - -commit="$VCS_COMMIT_ID" -branch="$VCS_BRANCH_NAME" -pr="$VCS_PULL_REQUEST" -slug="$VCS_SLUG" -tag="$VCS_TAG" -build_url="$CI_BUILD_URL" -build="$CI_BUILD_ID" -job="$CI_JOB_ID" - -beta_xcode_partials="" - -proj_root="$git_root" -gcov_exe="gcov" -gcov_arg="" - -b="\033[0;36m" -g="\033[0;32m" -r="\033[0;31m" -e="\033[0;90m" -x="\033[0m" - -show_help() { -cat << EOF - - Codecov Bash $VERSION - - Global report uploading tool for Codecov - Documentation at https://docs.codecov.io/docs - Contribute at https://github.com/codecov/codecov-bash - - - -h Display this help and exit - -f FILE Target file(s) to upload - - -f "path/to/file" only upload this file - skips searching unless provided patterns below - - -f '!*.bar' ignore all files at pattern *.bar - -f '*.foo' include all files at pattern *.foo - Must use single quotes. - This is non-exclusive, use -s "*.foo" to match specific paths. - - -s DIR Directory to search for coverage reports. - Already searches project root and artifact folders. - -t TOKEN Set the private repository token - (option) set environment variable CODECOV_TOKEN=:uuid - - -t @/path/to/token_file - -t uuid - - -n NAME Custom defined name of the upload. Visible in Codecov UI - - -e ENV Specify environment variables to be included with this build - Also accepting environment variables: CODECOV_ENV=VAR,VAR2 - - -e VAR,VAR2 - - -X feature Toggle functionalities - - -X gcov Disable gcov - -X coveragepy Disable python coverage - -X fix Disable report fixing - -X search Disable searching for reports - -X xcode Disable xcode processing - -X network Disable uploading the file network - -X gcovout Disable gcov output - - -N The commit SHA of the parent for which you are uploading coverage. If not present, - the parent will be determined using the API of your repository provider. - When using the repository provider's API, the parent is determined via finding - the closest ancestor to the commit. - - -R root dir Used when not in git/hg project to identify project root directory - -y conf file Used to specify the location of the .codecov.yml config file - -F flag Flag the upload to group coverage metrics - - -F unittests This upload is only unittests - -F integration This upload is only integration tests - -F ui,chrome This upload is Chrome - UI tests - - -c Move discovered coverage reports to the trash - -Z Exit with 1 if not successful. Default will Exit with 0 - - -- xcode -- - -D Custom Derived Data Path for Coverage.profdata and gcov processing - Default '~/Library/Developer/Xcode/DerivedData' - -J Specify packages to build coverage. - This can significantly reduces time to build coverage reports. - - -J 'MyAppName' Will match "MyAppName" and "MyAppNameTests" - -J '^ExampleApp$' Will match only "ExampleApp" not "ExampleAppTests" - - -- gcov -- - -g GLOB Paths to ignore during gcov gathering - -G GLOB Paths to include during gcov gathering - -p dir Project root directory - Also used when preparing gcov - -k prefix Prefix filepaths to help resolve path fixing: https://github.com/codecov/support/issues/472 - -x gcovexe gcov executable to run. Defaults to 'gcov' - -a gcovargs extra arguments to pass to gcov - - -- Override CI Environment Variables -- - These variables are automatically detected by popular CI providers - - -B branch Specify the branch name - -C sha Specify the commit sha - -P pr Specify the pull request number - -b build Specify the build number - -T tag Specify the git tag - - -- Enterprise -- - -u URL Set the target url for Enterprise customers - Not required when retrieving the bash uploader from your CCE - (option) Set environment variable CODECOV_URL=https://my-hosted-codecov.com - -r SLUG owner/repo slug used instead of the private repo token in Enterprise - (option) set environment variable CODECOV_SLUG=:owner/:repo - (option) set in your codecov.yml "codecov.slug" - -S PATH File path to your cacert.pem file used to verify ssl with Codecov Enterprise (optional) - (option) Set environment variable: CODECOV_CA_BUNDLE="/path/to/ca.pem" - -U curlargs Extra curl arguments to communicate with Codecov. e.g., -U "--proxy http://http-proxy" - -A curlargs Extra curl arguments to communicate with AWS. - - -- Debugging -- - -d Don't upload, but dump upload file to stdout - -K Remove color from the output - -v Verbose mode - -EOF -} - - -say() { - echo -e "$1" -} - - -urlencode() { - echo "$1" | curl -Gso /dev/null -w %{url_effective} --data-urlencode @- "" | cut -c 3- | sed -e 's/%0A//' -} - - -swiftcov() { - _dir=$(dirname "$1" | sed 's/\(Build\).*/\1/g') - for _type in app framework xctest - do - find "$_dir" -name "*.$_type" | while read f - do - _proj=${f##*/} - _proj=${_proj%."$_type"} - if [ "$2" = "" ] || [ "$(echo "$_proj" | grep -i "$2")" != "" ]; - then - say " $g+$x Building reports for $_proj $_type" - dest=$([ -f "$f/$_proj" ] && echo "$f/$_proj" || echo "$f/Contents/MacOS/$_proj") - _proj_name=$(echo "$_proj" | sed -e 's/[[:space:]]//g') - xcrun llvm-cov show $beta_xcode_partials -instr-profile "$1" "$dest" > "$_proj_name.$_type.coverage.txt" \ - || say " ${r}x>${x} llvm-cov failed to produce results for $dest" - fi - done - done -} - - -# Credits to: https://gist.github.com/pkuczynski/8665367 -parse_yaml() { - local prefix=$2 - local s='[[:space:]]*' w='[a-zA-Z0-9_]*' fs=$(echo @|tr @ '\034') - sed -ne "s|^\($s\)\($w\)$s:$s\"\(.*\)\"$s\$|\1$fs\2$fs\3|p" \ - -e "s|^\($s\)\($w\)$s:$s\(.*\)$s\$|\1$fs\2$fs\3|p" $1 | - awk -F$fs '{ - indent = length($1)/2; - vname[indent] = $2; - for (i in vname) {if (i > indent) {delete vname[i]}} - if (length($3) > 0) { - vn=""; if (indent > 0) {vn=(vn)(vname[0])("_")} - printf("%s%s%s=\"%s\"\n", "'$prefix'",vn, $2, $3); - } - }' -} - - -if [ $# != 0 ]; -then - while getopts "a:A:b:B:cC:dD:e:f:F:g:G:hJ:k:Kn:p:P:r:R:y:s:S:t:T:u:U:vx:X:ZN:" o - do - case "$o" in - "N") - parent=$OPTARG - ;; - "a") - gcov_arg=$OPTARG - ;; - "A") - curlawsargs="$OPTARG" - ;; - "b") - build_o="$OPTARG" - ;; - "B") - branch_o="$OPTARG" - ;; - "c") - clean="1" - ;; - "C") - commit_o="$OPTARG" - ;; - "d") - dump="1" - ;; - "D") - ddp="$OPTARG" - ;; - "e") - env="$env,$OPTARG" - ;; - "f") - if [ "${OPTARG::1}" = "!" ]; - then - exclude_cov="$exclude_cov -not -path '${OPTARG:1}'" - - elif [[ "$OPTARG" = *"*"* ]]; - then - include_cov="$include_cov -or -name '$OPTARG'" - - else - ft_search=0 - if [ "$files" = "" ]; - then - files="$OPTARG" - else - files="$files -$OPTARG" - fi - fi - ;; - "F") - if [ "$flags" = "" ]; - then - flags="$OPTARG" - else - flags="$flags,$OPTARG" - fi - ;; - "g") - gcov_ignore="$gcov_ignore -not -path '$OPTARG'" - ;; - "G") - gcov_include="$gcov_include -path '$OPTARG'" - ;; - "h") - show_help - exit 0; - ;; - "J") - ft_xcodellvm="1" - ft_xcodeplist="0" - if [ "$xp" = "" ]; - then - xp="$OPTARG" - else - xp="$xp\|$OPTARG" - fi - ;; - "k") - prefix_o=$(echo "$OPTARG" | sed -e 's:^/*::' -e 's:/*$::') - ;; - "K") - b="" - g="" - r="" - e="" - x="" - ;; - "n") - name="$OPTARG" - ;; - "p") - proj_root="$OPTARG" - ;; - "P") - pr_o="$OPTARG" - ;; - "r") - slug_o="$OPTARG" - ;; - "R") - git_root="$OPTARG" - ;; - "s") - if [ "$search_in_o" = "" ]; - then - search_in_o="$OPTARG" - else - search_in_o="$search_in_o $OPTARG" - fi - ;; - "S") - cacert="--cacert \"$OPTARG\"" - ;; - "t") - if [ "${OPTARG::1}" = "@" ]; - then - token=$(cat "${OPTARG:1}" | tr -d ' \n') - else - token="$OPTARG" - fi - ;; - "T") - tag_o="$OPTARG" - ;; - "u") - url_o=$(echo "$OPTARG" | sed -e 's/\/$//') - ;; - "U") - curlargs="$OPTARG" - ;; - "v") - set -x - curl_s="" - ;; - "x") - gcov_exe=$OPTARG - ;; - "X") - if [ "$OPTARG" = "gcov" ]; - then - ft_gcov="0" - elif [ "$OPTARG" = "coveragepy" ] || [ "$OPTARG" = "py" ]; - then - ft_coveragepy="0" - elif [ "$OPTARG" = "gcovout" ]; - then - ft_gcovout="0" - elif [ "$OPTARG" = "xcodellvm" ]; - then - ft_xcodellvm="1" - ft_xcodeplist="0" - elif [ "$OPTARG" = "fix" ] || [ "$OPTARG" = "fixes" ]; - then - ft_fix="0" - elif [ "$OPTARG" = "xcode" ]; - then - ft_xcodellvm="0" - ft_xcodeplist="0" - elif [ "$OPTARG" = "search" ]; - then - ft_search="0" - elif [ "$OPTARG" = "xcodepartials" ]; - then - beta_xcode_partials="-use-color" - elif [ "$OPTARG" = "network" ]; - then - ft_network="0" - elif [ "$OPTARG" = "s3" ]; - then - ft_s3="0" - fi - ;; - "y") - codecov_yml="$OPTARG" - ;; - "Z") - exit_with=1 - ;; - esac - done -fi - -say " - _____ _ - / ____| | | -| | ___ __| | ___ ___ _____ __ -| | / _ \\ / _\` |/ _ \\/ __/ _ \\ \\ / / -| |___| (_) | (_| | __/ (_| (_) \\ V / - \\_____\\___/ \\__,_|\\___|\\___\\___/ \\_/ - Bash-$VERSION - -" - -search_in="$proj_root" - -if [ "$JENKINS_URL" != "" ]; -then - say "$e==>$x Jenkins CI detected." - # https://wiki.jenkins-ci.org/display/JENKINS/Building+a+software+project - # https://wiki.jenkins-ci.org/display/JENKINS/GitHub+pull+request+builder+plugin#GitHubpullrequestbuilderplugin-EnvironmentVariables - service="jenkins" - - if [ "$ghprbSourceBranch" != "" ]; - then - branch="$ghprbSourceBranch" - elif [ "$GIT_BRANCH" != "" ]; - then - branch="$GIT_BRANCH" - elif [ "$BRANCH_NAME" != "" ]; - then - branch="$BRANCH_NAME" - fi - - if [ "$ghprbActualCommit" != "" ]; - then - commit="$ghprbActualCommit" - elif [ "$GIT_COMMIT" != "" ]; - then - commit="$GIT_COMMIT" - fi - - if [ "$ghprbPullId" != "" ]; - then - pr="$ghprbPullId" - elif [ "$CHANGE_ID" != "" ]; - then - pr="$CHANGE_ID" - fi - - build="$BUILD_NUMBER" - build_url=$(urlencode "$BUILD_URL") - -elif [ "$CI" = "true" ] && [ "$TRAVIS" = "true" ] && [ "$SHIPPABLE" != "true" ]; -then - say "$e==>$x Travis CI detected." - # https://docs.travis-ci.com/user/environment-variables/ - service="travis" - commit="${TRAVIS_PULL_REQUEST_SHA:-$TRAVIS_COMMIT}" - build="$TRAVIS_JOB_NUMBER" - pr="$TRAVIS_PULL_REQUEST" - job="$TRAVIS_JOB_ID" - slug="$TRAVIS_REPO_SLUG" - env="$env,TRAVIS_OS_NAME" - tag="$TRAVIS_TAG" - if [ "$TRAVIS_BRANCH" != "$TRAVIS_TAG" ]; - then - branch="$TRAVIS_BRANCH" - fi - - language=$(compgen -A variable | grep "^TRAVIS_.*_VERSION$" | head -1) - if [ "$language" != "" ]; - then - env="$env,${!language}" - fi - -elif [ "$CODEBUILD_BUILD_ARN" != "" ]; -then - say "$e==>$x AWS Codebuild detected." - # https://docs.aws.amazon.com/codebuild/latest/userguide/build-env-ref-env-vars.html - service="codebuild" - commit="$CODEBUILD_RESOLVED_SOURCE_VERSION" - build="$CODEBUILD_BUILD_ID" - branch="$(echo $CODEBUILD_WEBHOOK_HEAD_REF | sed 's/^refs\/heads\///')" - if [ "${CODEBUILD_SOURCE_VERSION/pr}" = "$CODEBUILD_SOURCE_VERSION" ] ; then - pr="false" - else - pr="$(echo $CODEBUILD_SOURCE_VERSION | sed 's/^pr\///')" - fi - job="$CODEBUILD_BUILD_ID" - slug="$(echo $CODEBUILD_SOURCE_REPO_URL | sed 's/^.*github.com\///' | sed 's/\.git$//')" - -elif [ "$DOCKER_REPO" != "" ]; -then - say "$e==>$x Docker detected." - # https://docs.docker.com/docker-cloud/builds/advanced/ - service="docker" - branch="$SOURCE_BRANCH" - commit="$SOURCE_COMMIT" - slug="$DOCKER_REPO" - tag="$CACHE_TAG" - env="$env,IMAGE_NAME" - -elif [ "$CI" = "true" ] && [ "$CI_NAME" = "codeship" ]; -then - say "$e==>$x Codeship CI detected." - # https://www.codeship.io/documentation/continuous-integration/set-environment-variables/ - service="codeship" - branch="$CI_BRANCH" - build="$CI_BUILD_NUMBER" - build_url=$(urlencode "$CI_BUILD_URL") - commit="$CI_COMMIT_ID" - -elif [ ! -z "$CF_BUILD_URL" ] && [ ! -z "$CF_BUILD_ID" ]; -then - say "$e==>$x Codefresh CI detected." - # https://docs.codefresh.io/v1.0/docs/variables - service="codefresh" - branch="$CF_BRANCH" - build="$CF_BUILD_ID" - build_url=$(urlencode "$CF_BUILD_URL") - commit="$CF_REVISION" - -elif [ "$TEAMCITY_VERSION" != "" ]; -then - say "$e==>$x TeamCity CI detected." - # https://confluence.jetbrains.com/display/TCD8/Predefined+Build+Parameters - # https://confluence.jetbrains.com/plugins/servlet/mobile#content/view/74847298 - if [ "$TEAMCITY_BUILD_BRANCH" = '' ]; - then - echo " Teamcity does not automatically make build parameters available as environment variables." - echo " Add the following environment parameters to the build configuration" - echo " env.TEAMCITY_BUILD_BRANCH = %teamcity.build.branch%" - echo " env.TEAMCITY_BUILD_ID = %teamcity.build.id%" - echo " env.TEAMCITY_BUILD_URL = %teamcity.serverUrl%/viewLog.html?buildId=%teamcity.build.id%" - echo " env.TEAMCITY_BUILD_COMMIT = %system.build.vcs.number%" - echo " env.TEAMCITY_BUILD_REPOSITORY = %vcsroot..url%" - fi - service="teamcity" - branch="$TEAMCITY_BUILD_BRANCH" - build="$TEAMCITY_BUILD_ID" - build_url=$(urlencode "$TEAMCITY_BUILD_URL") - if [ "$TEAMCITY_BUILD_COMMIT" != "" ]; - then - commit="$TEAMCITY_BUILD_COMMIT" - else - commit="$BUILD_VCS_NUMBER" - fi - remote_addr="$TEAMCITY_BUILD_REPOSITORY" - -elif [ "$CI" = "true" ] && [ "$CIRCLECI" = "true" ]; -then - say "$e==>$x Circle CI detected." - # https://circleci.com/docs/environment-variables - service="circleci" - branch="$CIRCLE_BRANCH" - build="$CIRCLE_BUILD_NUM" - job="$CIRCLE_NODE_INDEX" - if [ "$CIRCLE_PROJECT_REPONAME" != "" ]; - then - slug="$CIRCLE_PROJECT_USERNAME/$CIRCLE_PROJECT_REPONAME" - else - # git@github.com:owner/repo.git - slug="${CIRCLE_REPOSITORY_URL##*:}" - # owner/repo.git - slug="${slug%%.git}" - fi - pr="$CIRCLE_PR_NUMBER" - commit="$CIRCLE_SHA1" - search_in="$search_in $CIRCLE_ARTIFACTS $CIRCLE_TEST_REPORTS" - -elif [ "$BUDDYBUILD_BRANCH" != "" ]; -then - say "$e==>$x buddybuild detected" - # http://docs.buddybuild.com/v6/docs/custom-prebuild-and-postbuild-steps - service="buddybuild" - branch="$BUDDYBUILD_BRANCH" - build="$BUDDYBUILD_BUILD_NUMBER" - build_url="https://dashboard.buddybuild.com/public/apps/$BUDDYBUILD_APP_ID/build/$BUDDYBUILD_BUILD_ID" - # BUDDYBUILD_TRIGGERED_BY - if [ "$ddp" = "$(echo ~)/Library/Developer/Xcode/DerivedData" ]; - then - ddp="/private/tmp/sandbox/${BUDDYBUILD_APP_ID}/bbtest" - fi - -elif [ "${bamboo_planRepository_revision}" != "" ]; -then - say "$e==>$x Bamboo detected" - # https://confluence.atlassian.com/bamboo/bamboo-variables-289277087.html#Bamboovariables-Build-specificvariables - service="bamboo" - commit="${bamboo_planRepository_revision}" - branch="${bamboo_planRepository_branch}" - build="${bamboo_buildNumber}" - build_url="${bamboo_buildResultsUrl}" - remote_addr="${bamboo_planRepository_repositoryUrl}" - -elif [ "$CI" = "true" ] && [ "$BITRISE_IO" = "true" ]; -then - # http://devcenter.bitrise.io/faq/available-environment-variables/ - say "$e==>$x Bitrise CI detected." - service="bitrise" - branch="$BITRISE_GIT_BRANCH" - build="$BITRISE_BUILD_NUMBER" - build_url=$(urlencode "$BITRISE_BUILD_URL") - pr="$BITRISE_PULL_REQUEST" - if [ "$GIT_CLONE_COMMIT_HASH" != "" ]; - then - commit="$GIT_CLONE_COMMIT_HASH" - fi - -elif [ "$CI" = "true" ] && [ "$SEMAPHORE" = "true" ]; -then - say "$e==>$x Semaphore CI detected." - # https://semaphoreapp.com/docs/available-environment-variables.html - service="semaphore" - branch="$BRANCH_NAME" - build="$SEMAPHORE_BUILD_NUMBER" - job="$SEMAPHORE_CURRENT_THREAD" - pr="$PULL_REQUEST_NUMBER" - slug="$SEMAPHORE_REPO_SLUG" - commit="$REVISION" - env="$env,SEMAPHORE_TRIGGER_SOURCE" - -elif [ "$CI" = "true" ] && [ "$BUILDKITE" = "true" ]; -then - say "$e==>$x Buildkite CI detected." - # https://buildkite.com/docs/guides/environment-variables - service="buildkite" - branch="$BUILDKITE_BRANCH" - build="$BUILDKITE_BUILD_NUMBER" - job="$BUILDKITE_JOB_ID" - build_url=$(urlencode "$BUILDKITE_BUILD_URL") - slug="$BUILDKITE_PROJECT_SLUG" - commit="$BUILDKITE_COMMIT" - if [[ "$BUILDKITE_PULL_REQUEST" != "false" ]]; then - pr="$BUILDKITE_PULL_REQUEST" - fi - tag="$BUILDKITE_TAG" - -elif [ "$CI" = "drone" ] || [ "$DRONE" = "true" ]; -then - say "$e==>$x Drone CI detected." - # http://docs.drone.io/env.html - # drone commits are not full shas - service="drone.io" - branch="$DRONE_BRANCH" - build="$DRONE_BUILD_NUMBER" - build_url=$(urlencode "${DRONE_BUILD_LINK}") - pr="$DRONE_PULL_REQUEST" - job="$DRONE_JOB_NUMBER" - tag="$DRONE_TAG" - -elif [ "$HEROKU_TEST_RUN_BRANCH" != "" ]; -then - say "$e==>$x Heroku CI detected." - # https://devcenter.heroku.com/articles/heroku-ci#environment-variables - service="heroku" - branch="$HEROKU_TEST_RUN_BRANCH" - build="$HEROKU_TEST_RUN_ID" - -elif [ "$CI" = "True" ] && [ "$APPVEYOR" = "True" ]; -then - say "$e==>$x Appveyor CI detected." - # http://www.appveyor.com/docs/environment-variables - service="appveyor" - branch="$APPVEYOR_REPO_BRANCH" - build=$(urlencode "$APPVEYOR_JOB_ID") - pr="$APPVEYOR_PULL_REQUEST_NUMBER" - job="$APPVEYOR_ACCOUNT_NAME%2F$APPVEYOR_PROJECT_SLUG%2F$APPVEYOR_BUILD_VERSION" - slug="$APPVEYOR_REPO_NAME" - commit="$APPVEYOR_REPO_COMMIT" - build_url=$(urlencode "${APPVEYOR_URL}/project/${APPVEYOR_REPO_NAME}/builds/$APPVEYOR_BUILD_ID/job/${APPVEYOR_JOB_ID}") -elif [ "$CI" = "true" ] && [ "$WERCKER_GIT_BRANCH" != "" ]; -then - say "$e==>$x Wercker CI detected." - # http://devcenter.wercker.com/articles/steps/variables.html - service="wercker" - branch="$WERCKER_GIT_BRANCH" - build="$WERCKER_MAIN_PIPELINE_STARTED" - slug="$WERCKER_GIT_OWNER/$WERCKER_GIT_REPOSITORY" - commit="$WERCKER_GIT_COMMIT" - -elif [ "$CI" = "true" ] && [ "$MAGNUM" = "true" ]; -then - say "$e==>$x Magnum CI detected." - # https://magnum-ci.com/docs/environment - service="magnum" - branch="$CI_BRANCH" - build="$CI_BUILD_NUMBER" - commit="$CI_COMMIT" - -elif [ "$SHIPPABLE" = "true" ]; -then - say "$e==>$x Shippable CI detected." - # http://docs.shippable.com/ci_configure/ - service="shippable" - branch=$([ "$HEAD_BRANCH" != "" ] && echo "$HEAD_BRANCH" || echo "$BRANCH") - build="$BUILD_NUMBER" - build_url=$(urlencode "$BUILD_URL") - pr="$PULL_REQUEST" - slug="$REPO_FULL_NAME" - commit="$COMMIT" - -elif [ "$TDDIUM" = "true" ]; -then - say "Solano CI detected." - # http://docs.solanolabs.com/Setup/tddium-set-environment-variables/ - service="solano" - commit="$TDDIUM_CURRENT_COMMIT" - branch="$TDDIUM_CURRENT_BRANCH" - build="$TDDIUM_TID" - pr="$TDDIUM_PR_ID" - -elif [ "$GREENHOUSE" = "true" ]; -then - say "$e==>$x Greenhouse CI detected." - # http://docs.greenhouseci.com/docs/environment-variables-files - service="greenhouse" - branch="$GREENHOUSE_BRANCH" - build="$GREENHOUSE_BUILD_NUMBER" - build_url=$(urlencode "$GREENHOUSE_BUILD_URL") - pr="$GREENHOUSE_PULL_REQUEST" - commit="$GREENHOUSE_COMMIT" - search_in="$search_in $GREENHOUSE_EXPORT_DIR" - -elif [ "$GITLAB_CI" != "" ]; -then - say "$e==>$x GitLab CI detected." - # http://doc.gitlab.com/ce/ci/variables/README.html - service="gitlab" - branch="${CI_BUILD_REF_NAME:-$CI_COMMIT_REF_NAME}" - build="${CI_BUILD_ID:-$CI_JOB_ID}" - remote_addr="${CI_BUILD_REPO:-$CI_REPOSITORY_URL}" - commit="${CI_BUILD_REF:-$CI_COMMIT_SHA}" - slug="${CI_PROJECT_PATH}" - -elif [ "$GITHUB_ACTION" != "" ]; -then - say "$e==>$x GitHub Actions detected." - - # https://github.com/features/actions - service="github-actions" - - # https://help.github.com/en/articles/virtual-environments-for-github-actions#environment-variables - branch="${GITHUB_REF#refs/heads/}" - commit="${GITHUB_SHA}" - slug="${GITHUB_REPOSITORY}" - -elif [ "$SYSTEM_TEAMFOUNDATIONSERVERURI" != "" ]; -then - say "$e==>$x Azure Pipelines detected." - # https://docs.microsoft.com/en-us/azure/devops/pipelines/build/variables?view=vsts - service="azure_pipelines" - commit="$BUILD_SOURCEVERSION" - build="$BUILD_BUILDNUMBER" - if [ -z "$PULL_REQUEST_NUMBER" ]; - then - pr="$PULL_REQUEST_ID" - else - pr="$PULL_REQUEST_NUMBER" - fi - project="${SYSTEM_TEAMPROJECT}" - server_uri="${SYSTEM_TEAMFOUNDATIONSERVERURI}" - job="${BUILD_BUILDID}" - branch="$BUILD_SOURCEBRANCHNAME" - build_url=$(urlencode "${SYSTEM_TEAMFOUNDATIONSERVERURI}${SYSTEM_TEAMPROJECT}/_build/results?buildId=${BUILD_BUILDID}") -elif [ "$CI" = "true" ] && [ "$BITBUCKET_BUILD_NUMBER" != "" ]; -then - say "$e==>$x Bitbucket detected." - # https://confluence.atlassian.com/bitbucket/variables-in-pipelines-794502608.html - service="bitbucket" - branch="$BITBUCKET_BRANCH" - build="$BITBUCKET_BUILD_NUMBER" - slug="$BITBUCKET_REPO_OWNER/$BITBUCKET_REPO_SLUG" - job="$BITBUCKET_BUILD_NUMBER" - pr="$BITBUCKET_PR_ID" - commit="$BITBUCKET_COMMIT" - # See https://jira.atlassian.com/browse/BCLOUD-19393 - if [ "${#commit}" = 12 ]; - then - commit=$(git rev-parse "$BITBUCKET_COMMIT") - fi -elif [ "$CIRRUS_CI" != "" ]; -then - say "$e==>$x Cirrus CI detected." - # https://cirrus-ci.org/guide/writing-tasks/#environment-variables - service="cirrus-ci" - slug="$CIRRUS_REPO_FULL_NAME" - branch="$CIRRUS_BRANCH" - pr="$CIRRUS_PR" - commit="$CIRRUS_CHANGE_IN_REPO" - build="$CIRRUS_TASK_ID" - job="$CIRRUS_TASK_NAME" -else - say "${r}x>${x} No CI provider detected." - say " Testing inside Docker? ${b}http://docs.codecov.io/docs/testing-with-docker${x}" - say " Testing with Tox? ${b}https://docs.codecov.io/docs/python#section-testing-with-tox${x}" - -fi - -say " ${e}project root:${x} $git_root" - -# find branch, commit, repo from git command -if [ "$GIT_BRANCH" != "" ]; -then - branch="$GIT_BRANCH" - -elif [ "$branch" = "" ]; -then - branch=$(git rev-parse --abbrev-ref HEAD 2>/dev/null || hg branch 2>/dev/null || echo "") - if [ "$branch" = "HEAD" ]; - then - branch="" - fi -fi - -if [ "$commit_o" = "" ]; -then - # merge commit -> actual commit - mc= - if [ -n "$pr" ] && [ "$pr" != false ]; - then - mc=$(git show --no-patch --format="%P" 2>/dev/null || echo "") - fi - if [[ "$mc" =~ ^[a-z0-9]{40}[[:space:]][a-z0-9]{40}$ ]]; - then - say " Fixing merge commit SHA" - commit=$(echo "$mc" | cut -d' ' -f2) - elif [ "$GIT_COMMIT" != "" ]; - then - commit="$GIT_COMMIT" - elif [ "$commit" = "" ]; - then - commit=$(git log -1 --format="%H" 2>/dev/null || hg id -i --debug 2>/dev/null | tr -d '+' || echo "") - fi -else - commit="$commit_o" -fi - -if [ "$CODECOV_TOKEN" != "" ] && [ "$token" = "" ]; -then - say "${e}-->${x} token set from env" - token="$CODECOV_TOKEN" -fi - -if [ "$CODECOV_URL" != "" ] && [ "$url_o" = "" ]; -then - say "${e}-->${x} url set from env" - url_o=$(echo "$CODECOV_URL" | sed -e 's/\/$//') -fi - -if [ "$CODECOV_SLUG" != "" ]; -then - say "${e}-->${x} slug set from env" - slug_o="$CODECOV_SLUG" - -elif [ "$slug" = "" ]; -then - if [ "$remote_addr" = "" ]; - then - remote_addr=$(git config --get remote.origin.url || hg paths default || echo '') - fi - if [ "$remote_addr" != "" ]; - then - if echo "$remote_addr" | grep -q "//"; then - # https - slug=$(echo "$remote_addr" | cut -d / -f 4,5 | sed -e 's/\.git$//') - else - # ssh - slug=$(echo "$remote_addr" | cut -d : -f 2 | sed -e 's/\.git$//') - fi - fi - if [ "$slug" = "/" ]; - then - slug="" - fi -fi - -yaml=$(test -n "$codecov_yml" && echo "$codecov_yml" \ - || cd "$git_root" && \ - git ls-files "*codecov.yml" "*codecov.yaml" 2>/dev/null \ - || hg locate "*codecov.yml" "*codecov.yaml" 2>/dev/null \ - || cd $proj_root && find . -type f -name '*codecov.y*ml' -depth 1 2>/dev/null \ - || echo '') -yaml=$(echo "$yaml" | head -1) - -if [ "$yaml" != "" ]; -then - say " ${e}Yaml found at:${x} $yaml" - config=$(parse_yaml "$git_root/$yaml" || echo '') - - # TODO validate the yaml here - - if [ "$(echo "$config" | grep 'codecov_token="')" != "" ] && [ "$token" = "" ]; - then - say "${e}-->${x} token set from yaml" - token="$(echo "$config" | grep 'codecov_token="' | sed -e 's/codecov_token="//' | sed -e 's/"\.*//')" - fi - - if [ "$(echo "$config" | grep 'codecov_url="')" != "" ] && [ "$url_o" = "" ]; - then - say "${e}-->${x} url set from yaml" - url_o="$(echo "$config" | grep 'codecov_url="' | sed -e 's/codecov_url="//' | sed -e 's/"\.*//')" - fi - - if [ "$(echo "$config" | grep 'codecov_slug="')" != "" ] && [ "$slug_o" = "" ]; - then - say "${e}-->${x} slug set from yaml" - slug_o="$(echo "$config" | grep 'codecov_slug="' | sed -e 's/codecov_slug="//' | sed -e 's/"\.*//')" - fi -else - say " ${g}Yaml not found, that's ok! Learn more at${x} ${b}http://docs.codecov.io/docs/codecov-yaml${x}" - -fi - -if [ "$branch_o" != "" ]; -then - branch=$(urlencode "$branch_o") -else - branch=$(urlencode "$branch") -fi - -query="branch=$branch\ - &commit=$commit\ - &build=$([ "$build_o" = "" ] && echo "$build" || echo "$build_o")\ - &build_url=$build_url\ - &name=$(urlencode "$name")\ - &tag=$([ "$tag_o" = "" ] && echo "$tag" || echo "$tag_o")\ - &slug=$([ "$slug_o" = "" ] && urlencode "$slug" || urlencode "$slug_o")\ - &service=$service\ - &flags=$flags\ - &pr=$([ "$pr_o" = "" ] && echo "${pr##\#}" || echo "${pr_o##\#}")\ - &job=$job" - -if [ ! -z "$project" ] && [ ! -z "$server_uri" ]; -then - query=$(echo "$query&project=$project&server_uri=$server_uri" | tr -d ' ') -fi - -if [ "$parent" != "" ]; -then - query=$(echo "parent=$parent&$query" | tr -d ' ') -fi - -if [ "$ft_search" = "1" ]; -then - # detect bower comoponents location - bower_components="bower_components" - bower_rc=$(cd "$git_root" && cat .bowerrc 2>/dev/null || echo "") - if [ "$bower_rc" != "" ]; - then - bower_components=$(echo "$bower_rc" | tr -d '\n' | grep '"directory"' | cut -d'"' -f4 | sed -e 's/\/$//') - if [ "$bower_components" = "" ]; - then - bower_components="bower_components" - fi - fi - - # Swift Coverage - if [ "$ft_xcodellvm" = "1" ] && [ -d "$ddp" ]; - then - say "${e}==>${x} Processing Xcode reports via llvm-cov" - say " DerivedData folder: $ddp" - profdata_files=$(find "$ddp" -name '*.profdata' 2>/dev/null || echo '') - if [ "$profdata_files" != "" ]; - then - # xcode via profdata - if [ "$xp" = "" ]; - then - # xp=$(xcodebuild -showBuildSettings 2>/dev/null | grep -i "^\s*PRODUCT_NAME" | sed -e 's/.*= \(.*\)/\1/') - # say " ${e}->${x} Speed up Xcode processing by adding ${e}-J '$xp'${x}" - say " ${g}hint${x} Speed up Swift processing by using use ${g}-J 'AppName'${x} (regexp accepted)" - say " ${g}hint${x} This will remove Pods/ from your report. Also ${b}https://docs.codecov.io/docs/ignoring-paths${x}" - fi - while read -r profdata; - do - if [ "$profdata" != "" ]; - then - swiftcov "$profdata" "$xp" - fi - done <<< "$profdata_files" - else - say " ${e}->${x} No Swift coverage found" - fi - - # Obj-C Gcov Coverage - if [ "$ft_gcov" = "1" ]; - then - say " ${e}->${x} Running $gcov_exe for Obj-C" - if [ "$ft_gcovout" = "1" ]; - then - # suppress gcov output - bash -c "find $ddp -type f -name '*.gcda' $gcov_include $gcov_ignore -exec $gcov_exe -p $gcov_arg {} +" || true 2>/dev/null - else - bash -c "find $ddp -type f -name '*.gcda' $gcov_include $gcov_ignore -exec $gcov_exe -p $gcov_arg {} +" || true - fi - fi - fi - - if [ "$ft_xcodeplist" = "1" ] && [ -d "$ddp" ]; - then - say "${e}==>${x} Processing Xcode plists" - plists_files=$(find "$ddp" -name '*.xccoverage' 2>/dev/null || echo '') - if [ "$plists_files" != "" ]; - then - while read -r plist; - do - if [ "$plist" != "" ]; - then - say " ${g}Found${x} plist file at $plist" - plutil -convert xml1 -o "$(basename "$plist").plist" -- $plist - fi - done <<< "$plists_files" - fi - fi - - # Gcov Coverage - if [ "$ft_gcov" = "1" ]; - then - say "${e}==>${x} Running gcov in $proj_root ${e}(disable via -X gcov)${x}" - bash -c "find $proj_root -type f -name '*.gcno' $gcov_include $gcov_ignore -execdir $gcov_exe -pb $gcov_arg {} +" || true - else - say "${e}==>${x} gcov disabled" - fi - - # Python Coverage - if [ "$ft_coveragepy" = "1" ]; - then - if [ ! -f coverage.xml ]; - then - if which coverage >/dev/null 2>&1; - then - say "${e}==>${x} Python coveragepy exists ${e}disable via -X coveragepy${x}" - - dotcoverage=$(find "$git_root" -name '.coverage' -or -name '.coverage.*' | head -1 || echo '') - if [ "$dotcoverage" != "" ]; - then - cd "$(dirname "$dotcoverage")" - if [ ! -f .coverage ]; - then - say " ${e}->${x} Running coverage combine" - coverage combine -a - fi - say " ${e}->${x} Running coverage xml" - if [ "$(coverage xml -i)" != "No data to report." ]; - then - files="$files -$PWD/coverage.xml" - else - say " ${r}No data to report.${x}" - fi - cd "$proj_root" - else - say " ${r}No .coverage file found.${x}" - fi - else - say "${e}==>${x} Python coveragepy not found" - fi - fi - else - say "${e}==>${x} Python coveragepy disabled" - fi - - if [ "$search_in_o" != "" ]; - then - # location override - search_in="$search_in_o" - fi - - say "$e==>$x Searching for coverage reports in:" - for _path in $search_in - do - say " ${g}+${x} $_path" - done - - patterns="find $search_in \( \ - -name vendor \ - -or -name htmlcov \ - -or -name virtualenv \ - -or -name js/generated/coverage \ - -or -name .virtualenv \ - -or -name virtualenvs \ - -or -name .virtualenvs \ - -or -name .env \ - -or -name .envs \ - -or -name env \ - -or -name .yarn-cache \ - -or -name envs \ - -or -name .venv \ - -or -name .venvs \ - -or -name venv \ - -or -name venvs \ - -or -name .git \ - -or -name .hg \ - -or -name .tox \ - -or -name __pycache__ \ - -or -name '.egg-info*' \ - -or -name '$bower_components' \ - -or -name node_modules \ - -or -name 'conftest_*.c.gcov' \ - \) -prune -or \ - -type f \( -name '*coverage*.*' \ - -or -name 'nosetests.xml' \ - -or -name 'jacoco*.xml' \ - -or -name 'clover.xml' \ - -or -name 'report.xml' \ - -or -name '*.codecov.*' \ - -or -name 'codecov.*' \ - -or -name 'cobertura.xml' \ - -or -name 'excoveralls.json' \ - -or -name 'luacov.report.out' \ - -or -name 'coverage-final.json' \ - -or -name 'naxsi.info' \ - -or -name 'lcov.info' \ - -or -name 'lcov.dat' \ - -or -name '*.lcov' \ - -or -name '*.clover' \ - -or -name 'cover.out' \ - -or -name 'gcov.info' \ - -or -name '*.gcov' \ - -or -name '*.lst' \ - $include_cov \) \ - $exclude_cov \ - -not -name '*.profdata' \ - -not -name 'coverage-summary.json' \ - -not -name 'phpunit-code-coverage.xml' \ - -not -name '*/classycle/report.xml' \ - -not -name 'remapInstanbul.coverage*.json' \ - -not -name 'phpunit-coverage.xml' \ - -not -name '*codecov.yml' \ - -not -name '*.serialized' \ - -not -name '.coverage*' \ - -not -name '.*coveragerc' \ - -not -name '*.sh' \ - -not -name '*.bat' \ - -not -name '*.ps1' \ - -not -name '*.env' \ - -not -name '*.cmake' \ - -not -name '*.dox' \ - -not -name '*.ec' \ - -not -name '*.rst' \ - -not -name '*.h' \ - -not -name '*.scss' \ - -not -name '*.o' \ - -not -name '*.proto' \ - -not -name '*.sbt' \ - -not -name '*.xcoverage.*' \ - -not -name '*.gz' \ - -not -name '*.conf' \ - -not -name '*.p12' \ - -not -name '*.csv' \ - -not -name '*.rsp' \ - -not -name '*.m4' \ - -not -name '*.pem' \ - -not -name '*~' \ - -not -name '*.exe' \ - -not -name '*.am' \ - -not -name '*.template' \ - -not -name '*.cp' \ - -not -name '*.bw' \ - -not -name '*.crt' \ - -not -name '*.log' \ - -not -name '*.cmake' \ - -not -name '*.pth' \ - -not -name '*.in' \ - -not -name '*.jar*' \ - -not -name '*.pom*' \ - -not -name '*.png' \ - -not -name '*.jpg' \ - -not -name '*.sql' \ - -not -name '*.jpeg' \ - -not -name '*.svg' \ - -not -name '*.gif' \ - -not -name '*.csv' \ - -not -name '*.snapshot' \ - -not -name '*.mak*' \ - -not -name '*.bash' \ - -not -name '*.data' \ - -not -name '*.py' \ - -not -name '*.class' \ - -not -name '*.xcconfig' \ - -not -name '*.ec' \ - -not -name '*.coverage' \ - -not -name '*.pyc' \ - -not -name '*.cfg' \ - -not -name '*.egg' \ - -not -name '*.ru' \ - -not -name '*.css' \ - -not -name '*.less' \ - -not -name '*.pyo' \ - -not -name '*.whl' \ - -not -name '*.html' \ - -not -name '*.ftl' \ - -not -name '*.erb' \ - -not -name '*.rb' \ - -not -name '*.js' \ - -not -name '*.jade' \ - -not -name '*.db' \ - -not -name '*.md' \ - -not -name '*.cpp' \ - -not -name '*.gradle' \ - -not -name '*.tar.tz' \ - -not -name '*.scss' \ - -not -name 'include.lst' \ - -not -name 'fullLocaleNames.lst' \ - -not -name 'inputFiles.lst' \ - -not -name 'createdFiles.lst' \ - -not -name 'scoverage.measurements.*' \ - -not -name 'test_*_coverage.txt' \ - -not -name 'testrunner-coverage*' \ - -print 2>/dev/null" - files=$(eval "$patterns" || echo '') - -elif [ "$include_cov" != "" ]; -then - files=$(eval "find $search_in -type f \( ${include_cov:5} \)$exclude_cov 2>/dev/null" || echo '') -fi - -num_of_files=$(echo "$files" | wc -l | tr -d ' ') -if [ "$num_of_files" != '' ] && [ "$files" != '' ]; -then - say " ${e}->${x} Found $num_of_files reports" -fi - -# no files found -if [ "$files" = "" ]; -then - say "${r}-->${x} No coverage report found." - say " Please visit ${b}http://docs.codecov.io/docs/supported-languages${x}" - exit ${exit_with}; -fi - -if [ "$ft_network" == "1" ]; -then - say "${e}==>${x} Detecting git/mercurial file structure" - network=$(cd "$git_root" && git ls-files 2>/dev/null || hg locate 2>/dev/null || echo "") - if [ "$network" = "" ]; - then - network=$(find "$git_root" \( \ - -name virtualenv \ - -name .virtualenv \ - -name virtualenvs \ - -name .virtualenvs \ - -name '*.png' \ - -name '*.gif' \ - -name '*.jpg' \ - -name '*.jpeg' \ - -name '*.md' \ - -name .env \ - -name .envs \ - -name env \ - -name envs \ - -name .venv \ - -name .venvs \ - -name venv \ - -name venvs \ - -name .git \ - -name .egg-info \ - -name shunit2-2.1.6 \ - -name vendor \ - -name __pycache__ \ - -name node_modules \ - -path '*/$bower_components/*' \ - -path '*/target/delombok/*' \ - -path '*/build/lib/*' \ - -path '*/js/generated/coverage/*' \ - \) -prune -or \ - -type f -print 2>/dev/null || echo '') - fi - - if [ "$prefix_o" != "" ]; - then - network=$(echo "$network" | awk "{print \"$prefix_o/\"\$0}") - fi -fi - -upload_file=`mktemp /tmp/codecov.XXXXXX` -adjustments_file=`mktemp /tmp/codecov.adjustments.XXXXXX` - -cleanup() { - rm -f $upload_file $adjustments_file $upload_file.gz -} - -trap cleanup INT ABRT TERM - -if [ "$env" != "" ]; -then - inc_env="" - say "${e}==>${x} Appending build variables" - for varname in $(echo "$env" | tr ',' ' ') - do - if [ "$varname" != "" ]; - then - say " ${g}+${x} $varname" - inc_env="${inc_env}${varname}=$(eval echo "\$${varname}") -" - fi - done - -echo "$inc_env<<<<<< ENV" >> $upload_file -fi - -# Append git file list -# write discovered yaml location -echo "$yaml" >> $upload_file -if [ "$ft_network" == "1" ]; -then - i="woff|eot|otf" # fonts - i="$i|gif|png|jpg|jpeg|psd" # images - i="$i|ptt|pptx|numbers|pages|md|txt|xlsx|docx|doc|pdf|html|csv" # docs - i="$i|yml|yaml|.gitignore" # supporting docs - echo "$network" | grep -vwE "($i)$" >> $upload_file -fi -echo "<<<<<< network" >> $upload_file - -fr=0 -say "${e}==>${x} Reading reports" -while IFS='' read -r file; -do - # read the coverage file - if [ "$(echo "$file" | tr -d ' ')" != '' ]; - then - if [ -f "$file" ]; - then - report_len=$(wc -c < "$file") - if [ "$report_len" -ne 0 ]; - then - say " ${g}+${x} $file ${e}bytes=$(echo "$report_len" | tr -d ' ')${x}" - # append to to upload - _filename=$(basename "$file") - if [ "${_filename##*.}" = 'gcov' ]; - then - echo "# path=$(echo "$file.reduced" | sed "s|^$git_root/||")" >> $upload_file - # get file name - head -1 $file >> $upload_file - # 1. remove source code - # 2. remove ending bracket lines - # 3. remove whitespace - # 4. remove contextual lines - # 5. remove function names - awk -F': *' '{print $1":"$2":"}' $file \ - | sed '\/: *} *$/d' \ - | sed 's/^ *//' \ - | sed '/^-/d' \ - | sed 's/^function.*/func/' >> $upload_file - else - echo "# path=$(echo "$file" | sed "s|^$git_root/||")" >> $upload_file - cat "$file" >> $upload_file - fi - echo "<<<<<< EOF" >> $upload_file - fr=1 - if [ "$clean" = "1" ]; - then - rm "$file" - fi - else - say " ${r}-${x} Skipping empty file $file" - fi - else - say " ${r}-${x} file not found at $file" - fi - fi -done <<< "$(echo -e "$files")" - -if [ "$fr" = "0" ]; -then - say "${r}-->${x} No coverage data found." - say " Please visit ${b}http://docs.codecov.io/docs/supported-languages${x}" - say " search for your projects language to learn how to collect reports." - exit ${exit_with}; -fi - -if [ "$ft_fix" = "1" ]; -then - say "${e}==>${x} Appending adjustments" - say " ${b}http://docs.codecov.io/docs/fixing-reports${x}" - - empty_line='^[[:space:]]*$' - # // - syntax_comment='^[[:space:]]*//.*' - # /* or */ - syntax_comment_block='^[[:space:]]*(\/\*|\*\/)[[:space:]]*$' - # { or } - syntax_bracket='^[[:space:]]*[\{\}][[:space:]]*(//.*)?$' - # [ or ] - syntax_list='^[[:space:]]*[][][[:space:]]*(//.*)?$' - - skip_dirs="-not -path '*/$bower_components/*' \ - -not -path '*/node_modules/*'" - - cut_and_join() { - awk 'BEGIN { FS=":" } - $3 ~ /\/\*/ || $3 ~ /\*\// { print $0 ; next } - $1!=key { if (key!="") print out ; key=$1 ; out=$1":"$2 ; next } - { out=out","$2 } - END { print out }' 2>/dev/null - } - - if echo "$network" | grep -m1 '.kt$' 1>/dev/null; - then - # skip brackets and comments - find "$git_root" -type f \ - -name '*.kt' \ - -exec \ - grep -nIHE -e $syntax_bracket \ - -e $syntax_comment_block {} \; \ - | cut_and_join \ - >> $adjustments_file \ - || echo '' - - # last line in file - find "$git_root" -type f \ - -name '*.kt' -exec \ - wc -l {} \; \ - | while read l; do echo "EOF: $l"; done \ - 2>/dev/null \ - >> $adjustments_file \ - || echo '' - - fi - - if echo "$network" | grep -m1 '.go$' 1>/dev/null; - then - # skip empty lines, comments, and brackets - find "$git_root" -not -path '*/vendor/*' \ - -type f \ - -name '*.go' \ - -exec \ - grep -nIHE \ - -e $empty_line \ - -e $syntax_comment \ - -e $syntax_comment_block \ - -e $syntax_bracket \ - {} \; \ - | cut_and_join \ - >> $adjustments_file \ - || echo '' - fi - - if echo "$network" | grep -m1 '.dart$' 1>/dev/null; - then - # skip brackets - find "$git_root" -type f \ - -name '*.dart' \ - -exec \ - grep -nIHE \ - -e $syntax_bracket \ - {} \; \ - | cut_and_join \ - >> $adjustments_file \ - || echo '' - fi - - if echo "$network" | grep -m1 '.php$' 1>/dev/null; - then - # skip empty lines, comments, and brackets - find "$git_root" -not -path "*/vendor/*" \ - -type f \ - -name '*.php' \ - -exec \ - grep -nIHE \ - -e $syntax_list \ - -e $syntax_bracket \ - -e '^[[:space:]]*\);[[:space:]]*(//.*)?$' \ - {} \; \ - | cut_and_join \ - >> $adjustments_file \ - || echo '' - fi - - if echo "$network" | grep -m1 '\(.cpp\|.h\|.cxx\|.c\|.hpp\|.m\)$' 1>/dev/null; - then - # skip brackets - find "$git_root" -type f \ - $skip_dirs \ - \( \ - -name '*.h' \ - -or -name '*.cpp' \ - -or -name '*.cxx' \ - -or -name '*.m' \ - -or -name '*.c' \ - -or -name '*.hpp' \ - \) -exec \ - grep -nIHE \ - -e $empty_line \ - -e $syntax_bracket \ - -e '// LCOV_EXCL' \ - {} \; \ - | cut_and_join \ - >> $adjustments_file \ - || echo '' - - # skip brackets - find "$git_root" -type f \ - $skip_dirs \ - \( \ - -name '*.h' \ - -or -name '*.cpp' \ - -or -name '*.cxx' \ - -or -name '*.m' \ - -or -name '*.c' \ - -or -name '*.hpp' \ - \) -exec \ - grep -nIH '// LCOV_EXCL' \ - {} \; \ - >> $adjustments_file \ - || echo '' - - fi - - found=$(cat $adjustments_file | tr -d ' ') - - if [ "$found" != "" ]; - then - say " ${g}+${x} Found adjustments" - echo "# path=fixes" >> $upload_file - cat $adjustments_file >> $upload_file - echo "<<<<<< EOF" >> $upload_file - rm -rf $adjustments_file - else - say " ${e}->${x} No adjustments found" - fi -fi - -if [ "$url_o" != "" ]; -then - url="$url_o" -fi - -if [ "$dump" != "0" ]; -then - # trim whitespace from query - say " ${e}->${x} Dumping upload file (no upload)" - echo "$url/upload/v4?$(echo "package=bash-$VERSION&token=$token&$query" | tr -d ' ')" - cat $upload_file -else - - say "${e}==>${x} Gzipping contents" - gzip -nf9 $upload_file - - query=$(echo "${query}" | tr -d ' ') - say "${e}==>${x} Uploading reports" - say " ${e}url:${x} $url" - say " ${e}query:${x} $query" - - # Full query without token (to display on terminal output) - queryNoToken=$(echo "package=bash-$VERSION&token=secret&$query" | tr -d ' ') - # now add token to query - query=$(echo "package=bash-$VERSION&token=$token&$query" | tr -d ' ') - - if [ "$ft_s3" = "1" ]; - then - i="0" - while [ $i -lt 4 ] - do - i=$[$i+1] - say " ${e}->${x} Pinging Codecov" - say "$url/upload/v4?$queryNoToken" - res=$(curl $curl_s -X POST $curlargs $cacert \ - -H 'X-Reduced-Redundancy: false' \ - -H 'X-Content-Type: application/x-gzip' \ - "$url/upload/v4?$query" || true) - # a good replay is "https://codecov.io" + "\n" + "https://codecov.s3.amazonaws.com/..." - status=$(echo "$res" | head -1 | grep 'HTTP ' | cut -d' ' -f2) - if [ "$status" = "" ]; - then - s3target=$(echo "$res" | sed -n 2p) - say " ${e}->${x} Uploading" - - - s3=$(curl $curl_s -fiX PUT $curlawsargs \ - --data-binary @$upload_file.gz \ - -H 'Content-Type: application/x-gzip' \ - -H 'Content-Encoding: gzip' \ - -H 'x-amz-acl: public-read' \ - "$s3target" || true) - - - if [ "$s3" != "" ]; - then - say " ${g}->${x} View reports at ${b}$(echo "$res" | sed -n 1p)${x}" - exit 0 - else - say " ${r}X>${x} Failed to upload" - fi - elif [ "$status" = "400" ]; - then - # 400 Error - say "${g}${res}${x}" - exit ${exit_with} - fi - say " ${e}->${x} Sleeping for 30s and trying again..." - sleep 30 - done - fi - - say " ${e}->${x} Uploading to Codecov" - i="0" - while [ $i -lt 4 ] - do - i=$[$i+1] - - res=$(curl $curl_s -X POST $curlargs $cacert \ - --data-binary @$upload_file.gz \ - -H 'Content-Type: text/plain' \ - -H 'Content-Encoding: gzip' \ - -H 'X-Content-Encoding: gzip' \ - -H 'Accept: text/plain' \ - "$url/upload/v2?$query" || echo 'HTTP 500') - # HTTP 200 - # http://.... - status=$(echo "$res" | head -1 | cut -d' ' -f2) - if [ "$status" = "" ]; - then - say " View reports at ${b}$(echo "$res" | head -2 | tail -1)${x}" - exit 0 - - elif [ "${status:0:1}" = "5" ]; - then - say " ${e}->${x} Sleeping for 30s and trying again..." - sleep 30 - - else - say " ${g}${res}${x}" - exit 0 - exit ${exit_with} - fi - - done - - say " ${r}X> Failed to upload coverage reports${x}" -fi - -exit ${exit_with} diff --git a/.github/scripts/filter_tests.sh b/.github/scripts/filter_tests.sh index 88a3dfff5..a01ea5840 100755 --- a/.github/scripts/filter_tests.sh +++ b/.github/scripts/filter_tests.sh @@ -1,9 +1,9 @@ #!/bin/bash -# Exit on failure. set -e git log --format=oneline -n 1 "$GITHUB_SHA" + if [[ $(git log --format=oneline -n 1 "$GITHUB_SHA") = *"noslow"* ]]; then echo "Skipping slow tests..." ./workers/run_tests.sh --exclude-tag=slow "$@" @@ -11,5 +11,3 @@ else echo "Running all tests..." ./workers/run_tests.sh "$@" fi - -./.github/scripts/upload_test_coverage.sh workers diff --git a/.github/scripts/post_deploy_cleanup.sh b/.github/scripts/post_deploy_cleanup.sh index 9901a3b26..a8c1f2fdd 100755 --- a/.github/scripts/post_deploy_cleanup.sh +++ b/.github/scripts/post_deploy_cleanup.sh @@ -1,4 +1,6 @@ -#!/bin/bash -e +#!/bin/bash + +set -e # TODO: this should also be responsible for running another # deploy to remove ci_ingress after the end to end tests run. diff --git a/.github/scripts/upload_test_coverage.sh b/.github/scripts/prepare_test_coverage.sh similarity index 72% rename from .github/scripts/upload_test_coverage.sh rename to .github/scripts/prepare_test_coverage.sh index 12068f485..2ca2510d3 100755 --- a/.github/scripts/upload_test_coverage.sh +++ b/.github/scripts/prepare_test_coverage.sh @@ -1,6 +1,6 @@ #!/bin/bash -# Script to upload code coverage +# Script to prepare code coverage. project=$1 if [[ $project == "" ]]; then @@ -9,7 +9,7 @@ if [[ $project == "" ]]; then fi if [[ $project == "workers" ]]; then - # the workers project uses it's own test_volume directory + # The workers project uses its own test_volume directory. test_volume="workers/test_volume" else test_volume="test_volume" @@ -28,9 +28,3 @@ output_file="${test_volume}/${project}_coverage.xml" # folder. We need to be relative to the repo's root directory. That's why we # append the project folder name to each file path in coverage.xml sed "s/filename=\"/filename=\"$project\//g" "$coverage_file" >"$output_file" - -# codecov.sh is located at https://codecov.io/bash -# we downloaded it for convenience -./.github/scripts/codecov.sh -f "$output_file" -Z -X s3 -F "$project" - -rm -f "$coverage_file" "$output_file" diff --git a/.github/scripts/pull_docker_images.sh b/.github/scripts/pull_docker_images.sh deleted file mode 100755 index 532d0ccab..000000000 --- a/.github/scripts/pull_docker_images.sh +++ /dev/null @@ -1,16 +0,0 @@ -#!/bin/sh - -set -e - -if [ -z "$IMAGES" ]; then - echo "Error: must put images to pull in \$IMAGES" >&2 - exit 1 -fi - -REPO=$(echo "ghcr.io/$GITHUB_REPOSITORY" | tr '[:upper:]' '[:lower:]') - -for image in $IMAGES; do - PACKAGE="$REPO/dr_$image" - # Only pull the package if it already exists. - (docker pull "$PACKAGE" && docker tag "$PACKAGE" "ccdlstaging/dr_$image") || true -done diff --git a/.github/scripts/push_docker_images.sh b/.github/scripts/push_docker_images.sh index ccd79d424..991b54936 100755 --- a/.github/scripts/push_docker_images.sh +++ b/.github/scripts/push_docker_images.sh @@ -7,10 +7,10 @@ if [ -z "$IMAGES" ]; then exit 1 fi -REPO=$(echo "ghcr.io/$GITHUB_REPOSITORY" | tr '[:upper:]' '[:lower:]') +DOCKERHUB_REPO=$(echo "ghcr.io/$GITHUB_REPOSITORY" | tr '[:upper:]' '[:lower:]') for image in $IMAGES; do - PACKAGE="$REPO/dr_$image" + PACKAGE="$DOCKERHUB_REPO/dr_$image" docker tag "ccdlstaging/dr_$image" "$PACKAGE" docker push "$PACKAGE" done diff --git a/.github/scripts/remote_deploy.sh b/.github/scripts/remote_deploy.sh index aabfd0b3b..f93c337c4 100755 --- a/.github/scripts/remote_deploy.sh +++ b/.github/scripts/remote_deploy.sh @@ -26,7 +26,8 @@ run_on_deploy_box() { ssh -o StrictHostKeyChecking=no \ -o ServerAliveInterval=15 \ -i infrastructure/data-refinery-key.pem \ - ubuntu@"${DEPLOY_IP_ADDRESS}" "cd refinebio && $1" + ubuntu@"${DEPLOY_IP_ADDRESS}" \ + "cd refinebio && $1" } # Create file containing local env vars that are needed for deploy. @@ -62,21 +63,21 @@ scp -o StrictHostKeyChecking=no \ -i infrastructure/data-refinery-key.pem \ -r infrastructure/data-refinery-key.pem ubuntu@"$DEPLOY_IP_ADDRESS":refinebio/infrastructure/data-refinery-key.pem -# Output to CircleCI echo "Building new images" # Output to the docker update log. run_on_deploy_box "sudo touch /var/log/docker_update_$CI_TAG.log" run_on_deploy_box "sudo chown ubuntu:ubuntu /var/log/docker_update_$CI_TAG.log" -run_on_deploy_box "source env_vars && echo -e '######\nBuilding new images for $CI_TAG\n######' 2>&1 | tee -a /var/log/docker_update_$CI_TAG.log" -run_on_deploy_box "source env_vars && ./.github/scripts/update_docker_image.sh 2>&1 | tee -a /var/log/docker_update_$CI_TAG.log" -run_on_deploy_box "source env_vars && echo -e '######\nFinished building new images for $CI_TAG\n######' 2>&1 | tee -a /var/log/docker_update_$CI_TAG.log" +run_on_deploy_box ". env_vars && echo -e '######\nBuilding new images for $CI_TAG\n######' 2>&1 | tee -a /var/log/docker_update_$CI_TAG.log" +run_on_deploy_box ". env_vars && .github/scripts/update_docker_images.sh 2>&1 | tee -a /var/log/docker_update_$CI_TAG.log" +run_on_deploy_box ". env_vars && echo -e '######\nFinished building new images for $CI_TAG\n######' 2>&1 | tee -a /var/log/docker_update_$CI_TAG.log" # Load docker_image_exists function and $ALL_IMAGES. +# shellcheck disable=1091 . ./scripts/common.sh -if [[ "$MASTER_OR_DEV" == "master" ]]; then +if [[ "$BRANCH" == "master" ]]; then DOCKERHUB_REPO=ccdl -elif [[ "$MASTER_OR_DEV" == "dev" ]]; then +elif [[ "$BRANCH" == "dev" ]]; then DOCKERHUB_REPO=ccdlstaging else echo "Why in the world was remote_deploy.sh called from a branch other than dev or master?!" @@ -88,10 +89,10 @@ fi # https://github.com/AlexsLemonade/refinebio/issues/784 # Since it's not clear how that happened, the safest thing is to add # an explicit check that the Docker images were successfully updated. -for IMAGE in $ALL_IMAGES; do - image_name="$DOCKERHUB_REPO/dr_$IMAGE" +for image in $ALL_IMAGES; do + image_name="$DOCKERHUB_REPO/dr_$image" if ! docker_image_exists "$image_name" "$CI_TAG"; then - echo "Docker image $image_name:$CI_TAG doesn't exist after running update_docker_image.sh!" + echo "Docker image $image_name:$CI_TAG doesn't exist after running update_docker_images.sh!" echo "This is generally caused by a temporary error, please try the 'Rerun workflow' button." exit 1 fi @@ -102,18 +103,18 @@ echo "Finished building new images, running run_terraform.sh." run_on_deploy_box "sudo touch /var/log/deploy_$CI_TAG.log" run_on_deploy_box "sudo chown ubuntu:ubuntu /var/log/deploy_$CI_TAG.log" -run_on_deploy_box "source env_vars && echo -e '######\nStarting new deploy for $CI_TAG\n######' >> /var/log/deploy_$CI_TAG.log 2>&1" -run_on_deploy_box "sudo ./.github/scripts/fix_ca_certs.sh >> /var/log/deploy_$CI_TAG.log 2>&1" +run_on_deploy_box ". env_vars && echo -e '######\nStarting new deploy for $CI_TAG\n######' >> /var/log/deploy_$CI_TAG.log 2>&1" +run_on_deploy_box "sudo ./.github/scripts/update_ca_certificates.sh >> /var/log/deploy_$CI_TAG.log 2>&1" # This should never be logged to Github Actions in case it exposes any secrets as terraform output. -run_on_deploy_box "source env_vars && ./.github/scripts/run_terraform.sh >> /var/log/deploy_$CI_TAG.log 2>&1" +run_on_deploy_box ". env_vars && ./.github/scripts/run_terraform.sh >> /var/log/deploy_$CI_TAG.log 2>&1" -run_on_deploy_box "source env_vars && echo -e '######\nDeploying $CI_TAG finished!\n######' >> /var/log/deploy_$CI_TAG.log 2>&1" +run_on_deploy_box ". env_vars && echo -e '######\nDeploying $CI_TAG finished!\n######' >> /var/log/deploy_$CI_TAG.log 2>&1" ./.github/scripts/slackpost_deploy.sh robots deploybot -if [[ "$MASTER_OR_DEV" == "dev" ]]; then - run_on_deploy_box "source env_vars && ./foreman/run_end_to_end_tests.sh" +if [[ "$BRANCH" == "dev" ]]; then + run_on_deploy_box ". env_vars && ./foreman/run_end_to_end_tests.sh" ./.github/scripts/slackpost_end_to_end.sh robots deploybot fi diff --git a/.github/scripts/run_terraform.sh b/.github/scripts/run_terraform.sh index 547b8c208..ed2e0295c 100755 --- a/.github/scripts/run_terraform.sh +++ b/.github/scripts/run_terraform.sh @@ -1,4 +1,6 @@ -#!/bin/bash -e +#!/bin/bash + +set -e # Import Hashicorps' key. curl https://keybase.io/hashicorp/pgp_keys.asc | gpg --import @@ -30,15 +32,16 @@ sudo mv terraform /usr/local/bin/ cd ~/refinebio/infrastructure # Circle won't set the branch name for us, so do it ourselves. +# shellcheck disable=SC1090 . ~/refinebio/scripts/common.sh -branch=$(get_master_or_dev "$CI_TAG") -if [[ $branch == "master" ]]; then - ENVIRONMENT=prod +BRANCH=$(get_deploy_branch "$CI_TAG") +if [[ $BRANCH == "master" ]]; then BATCH_USE_ON_DEMAND_INSTANCES="false" -elif [[ $branch == "dev" ]]; then - ENVIRONMENT=staging + ENVIRONMENT=prod +elif [[ $BRANCH == "dev" ]]; then BATCH_USE_ON_DEMAND_INSTANCES="true" + ENVIRONMENT=staging else echo "Why in the world was run_terraform.sh called from a branch other than dev or master?!" exit 1 @@ -46,4 +49,4 @@ fi # New deployment (use -u circleci since we used to run on CircleCI and we don't # want to recreate all of our resources) -./deploy.sh -e "$ENVIRONMENT" -v "$CI_TAG" -u circleci -i "$BATCH_USE_ON_DEMAND_INSTANCES" +./deploy.sh -e "$ENVIRONMENT" -i "$BATCH_USE_ON_DEMAND_INSTANCES" -u circleci -v "$CI_TAG" diff --git a/.github/scripts/fix_ca_certs.sh b/.github/scripts/update_ca_certificates.sh similarity index 100% rename from .github/scripts/fix_ca_certs.sh rename to .github/scripts/update_ca_certificates.sh diff --git a/.github/scripts/update_docker_image.sh b/.github/scripts/update_docker_image.sh deleted file mode 100755 index a7aa97747..000000000 --- a/.github/scripts/update_docker_image.sh +++ /dev/null @@ -1,85 +0,0 @@ -#!/bin/bash -set -e - -# Load docker_image_exists function and $WORKER_IMAGES. -. ~/refinebio/scripts/common.sh - -# Github won't set the branch name for us, so do it ourselves. -branch=$(get_master_or_dev "$CI_TAG") - -if [[ "$branch" == "master" ]]; then - DOCKERHUB_REPO=ccdl -elif [[ "$branch" == "dev" ]]; then - DOCKERHUB_REPO=ccdlstaging -else - echo "Why in the world was update_docker_image.sh called from a branch other than dev or master!?" - exit 1 -fi - -echo "$CI_TAG" >~/refinebio/common/version - -# Create ~/refinebio/common/dist/data-refinery-common-*.tar.gz, which is -# required by the workers and data_refinery_foreman images. -## Remove old common distributions if they exist. -rm -f ~/refinebio/common/dist/* -cd ~/refinebio/common && python3 setup.py sdist - -# Log into DockerHub. -docker login -u "$DOCKER_ID" -p "$DOCKER_PASSWD" - -cd ~/refinebio -for IMAGE in $WORKER_IMAGES; do - image_name="$DOCKERHUB_REPO/dr_$IMAGE" - if docker_image_exists "$image_name" "$CI_TAG"; then - echo "Docker image exists, skipping: $image_name:$CI_TAG" - else - echo "Building docker image: $image_name:$CI_TAG" - # Build and push image. We use the CI_TAG as the system version. - docker build \ - --build-arg SYSTEM_VERSION="$CI_TAG" \ - --file "workers/dockerfiles/Dockerfile.$IMAGE" \ - --tag "$image_name:$CI_TAG" \ - . - docker push "$image_name:$CI_TAG" - # Update latest version. - docker tag "$image_name:$CI_TAG" "$image_name:latest" - docker push "$image_name:latest" - - # Save some space when we're through. - docker rmi "$image_name:$CI_TAG" - fi -done - -# Build and push foreman image. -FOREMAN_DOCKER_IMAGE="$DOCKERHUB_REPO/dr_foreman" -if docker_image_exists "$FOREMAN_DOCKER_IMAGE" "$CI_TAG"; then - echo "Docker image exists, skipping: $FOREMAN_DOCKER_IMAGE:$CI_TAG" -else - # Build and push image. We use the CI_TAG as the system version. - docker build \ - --build-arg SYSTEM_VERSION="$CI_TAG" \ - --file foreman/dockerfiles/Dockerfile.foreman \ - --tag "$FOREMAN_DOCKER_IMAGE:$CI_TAG" \ - . - docker push "$FOREMAN_DOCKER_IMAGE:$CI_TAG" - # Update latest version. - docker tag "$FOREMAN_DOCKER_IMAGE:$CI_TAG" "$FOREMAN_DOCKER_IMAGE:latest" - docker push "$FOREMAN_DOCKER_IMAGE:latest" -fi - -# Build and push API image. -API_DOCKER_IMAGE="$DOCKERHUB_REPO/dr_api" -if docker_image_exists "$API_DOCKER_IMAGE" "$CI_TAG"; then - echo "Docker image exists, skipping: $API_DOCKER_IMAGE:$CI_TAG" -else - # Build and push image. We use the CI_TAG as the system version. - docker build \ - --build-arg SYSTEM_VERSION="$CI_TAG" \ - --file api/dockerfiles/Dockerfile.api_production \ - --tag "$API_DOCKER_IMAGE:$CI_TAG" \ - . - docker push "$API_DOCKER_IMAGE:$CI_TAG" - # Update latest version. - docker tag "$API_DOCKER_IMAGE:$CI_TAG" "$API_DOCKER_IMAGE:latest" - docker push "$API_DOCKER_IMAGE:latest" -fi diff --git a/.github/scripts/update_docker_images.sh b/.github/scripts/update_docker_images.sh new file mode 100755 index 000000000..06bdabbfd --- /dev/null +++ b/.github/scripts/update_docker_images.sh @@ -0,0 +1,55 @@ +#!/bin/bash + +set -e + +# Load docker_image_exists function and $WORKER_IMAGES. +# shellcheck disable=SC1090 +. ~/refinebio/scripts/common.sh + +# Github won't set the branch name for us, so do it ourselves. +BRANCH=$(get_deploy_branch "$CI_TAG") +DOCKER_ACTION="--push" + +if [[ "$BRANCH" == "master" ]]; then + DOCKERHUB_REPO=ccdl +elif [[ "$BRANCH" == "dev" ]]; then + DOCKERHUB_REPO=ccdlstaging +else + echo "Why in the world was update_docker_images.sh called from a branch other than dev or master!?" + exit 1 +fi + +echo "$CI_TAG" >~/refinebio/common/version + +# Create ~/refinebio/common/dist/data-refinery-common-*.tar.gz, which is +# required by the workers and data_refinery_foreman images. +## Remove old common distributions if they exist. +rm -f ~/refinebio/common/dist/* +cd ~/refinebio/common && python3 setup.py sdist + +cd ~/refinebio + +# Log into DockerHub. +docker login -u "$DOCKER_ID" -p "$DOCKER_PASSWD" + +IMAGE_NAMES="$WORKER_IMAGES foreman api" +for IMAGE_NAME in $IMAGE_NAMES; do + case $IMAGE_NAME in + api) + DOCKER_FILE_PATH="api/dockerfiles/Dockerfile.api_production" + ;; + foreman) + DOCKER_FILE_PATH="foreman/dockerfiles/Dockerfile.$IMAGE_NAME" + ;; + *) + DOCKER_FILE_PATH="workers/dockerfiles/Dockerfile.$IMAGE_NAME" + ;; + esac + + if docker_image_exists "$IMAGE_NAME" "$CI_TAG"; then + echo "Docker image exists, skipping: $IMAGE_NAME:$CI_TAG" + else + echo "Building the $IMAGE_NAME:$CI_TAG image from $DOCKER_FILE_PATH." + update_docker_image "$DOCKERHUB_REPO" "$IMAGE_NAME" "$CI_TAG" "$DOCKER_FILE_PATH" "$DOCKER_ACTION" + fi +done diff --git a/.github/workflows/config.yml b/.github/workflows/config.yml index 902cd0765..fbe8dbec3 100644 --- a/.github/workflows/config.yml +++ b/.github/workflows/config.yml @@ -3,7 +3,6 @@ name: refine.bio CI/CD on: push env: - CODECOV_TOKEN: ${{ secrets.CODECOV_TOKEN }} DEPLOY_IP_ADDRESS: ${{ secrets.DEPLOY_IP_ADDRESS }} DOCKER_BUILDKIT: 1 DOCKER_ID: ${{ secrets.DOCKER_ID }} @@ -142,7 +141,13 @@ jobs: mkdir -p test_volume sudo chmod -R a+rw test_volume api/run_tests.sh - .github/scripts/upload_test_coverage.sh api + .github/scripts/prepare_test_coverage.sh api + + - name: Upload Test Coverage to Codecov + uses: codecov/codecov-action@v3 + with: + files: ./test_volume/api_coverage.xml + name: API Tests test_api_base: name: Test API Base @@ -246,7 +251,13 @@ jobs: mkdir -p workers/test_volume sudo chmod -R a+rw workers/test_volume common/run_tests.sh - .github/scripts/upload_test_coverage.sh common + .github/scripts/prepare_test_coverage.sh common + + - name: Upload Test Coverage to Codecov + uses: codecov/codecov-action@v3 + with: + files: ./test_volume/common_coverage.xml + name: Common Tests - name: Login to Packages Container Registry uses: docker/login-action@v2 @@ -334,7 +345,13 @@ jobs: mkdir -p workers/test_volume sudo chmod -R a+rw workers/test_volume foreman/run_tests.sh --exclude-tag=end_to_end - .github/scripts/upload_test_coverage.sh foreman + .github/scripts/prepare_test_coverage.sh foreman + + - name: Upload Test Coverage to Codecov + uses: codecov/codecov-action@v3 + with: + files: ./test_volume/foreman_coverage.xml + name: Foreman Tests - name: Login to Packages Container Registry uses: docker/login-action@v2 @@ -379,7 +396,13 @@ jobs: mkdir -p workers/test_volume sudo chmod -R a+rw workers/test_volume .github/scripts/filter_tests.sh -t illumina - .github/scripts/upload_test_coverage.sh workers + .github/scripts/prepare_test_coverage.sh workers + + - name: Upload Test Coverage to Codecov + uses: codecov/codecov-action@v3 + with: + files: ./workers/test_volume/workers_coverage.xml + name: Illumina Tests - name: Login to Packages Container Registry uses: docker/login-action@v2 @@ -423,7 +446,13 @@ jobs: run: | sudo chmod -R a+rw workers/test_volume .github/scripts/filter_tests.sh -t salmon - .github/scripts/upload_test_coverage.sh workers + .github/scripts/prepare_test_coverage.sh workers + + - name: Upload Test Coverage to Codecov + uses: codecov/codecov-action@v3 + with: + files: ./workers/test_volume/workers_coverage.xml + name: Salmon Tests - name: Login to Packages Container Registry uses: docker/login-action@v2 @@ -468,25 +497,43 @@ jobs: mkdir -p workers/test_volume sudo chmod -R a+rw workers/test_volume .github/scripts/filter_tests.sh -t smasher - .github/scripts/upload_test_coverage.sh workers + .github/scripts/prepare_test_coverage.sh workers - name: Run Janitor Tests run: | sudo -E chown -R $USER:$USER workers/test_volume .github/scripts/filter_tests.sh -t janitor - .github/scripts/upload_test_coverage.sh workers + .github/scripts/prepare_test_coverage.sh workers + + - name: Upload Test Coverage to Codecov + uses: codecov/codecov-action@v3 + with: + files: ./workers/test_volume/workers_coverage.xml + name: Janitor Tests - name: Run Compendia Tests run: | sudo -E chown -R $USER:$USER workers/test_volume .github/scripts/filter_tests.sh -t compendia - .github/scripts/upload_test_coverage.sh workers + .github/scripts/prepare_test_coverage.sh workers + + - name: Upload Test Coverage to Codecov + uses: codecov/codecov-action@v3 + with: + files: ./workers/test_volume/workers_coverage.xml + name: Compendia Tests - name: Run QN Tests run: | sudo -E chown -R $USER:$USER workers/test_volume .github/scripts/filter_tests.sh -t qn - .github/scripts/upload_test_coverage.sh workers + .github/scripts/prepare_test_coverage.sh workers + + - name: Upload Test Coverage to Codecov + uses: codecov/codecov-action@v3 + with: + files: ./workers/test_volume/workers_coverage.xml + name: QN Tests - name: Login to Packages Container Registry uses: docker/login-action@v2 @@ -532,7 +579,13 @@ jobs: mkdir -p workers/test_volume sudo chmod -R a+rw workers/test_volume .github/scripts/filter_tests.sh -t transcriptome - .github/scripts/upload_test_coverage.sh workers + .github/scripts/prepare_test_coverage.sh workers + + - name: Upload Test Coverage to Codecov + uses: codecov/codecov-action@v3 + with: + files: ./workers/test_volume/workers_coverage.xml + name: Transcriptome Tests - name: Login to Packages Container Registry uses: docker/login-action@v2 diff --git a/scripts/common.sh b/scripts/common.sh index b30416abc..acf22354d 100755 --- a/scripts/common.sh +++ b/scripts/common.sh @@ -39,20 +39,20 @@ get_docker_es_ip_address() { # A tag is linked to a commit hash, not a branch. A single commit hash # can end up on multiple branches. So we first check to see if we're # on master, then on dev, then error out because we should only deploy master or dev. -get_master_or_dev() { +get_deploy_branch() { # Takes the version that is being deployed as its only parameter version="$1" if [ -z "$version" ]; then - echo "You must pass the version to get_master_or_dev." + echo "You must pass the version to get_deploy_branch()." else - master_check=$(git log origin/master --decorate=full | grep "$version" || true) - dev_check=$(git log origin/dev --decorate=full | grep "$version" || true) + is_master=$(git log origin/master --decorate=full | grep "$version" || true) + is_dev=$(git log origin/dev --decorate=full | grep "$version" || true) # All dev versions should end with '-dev' or '-dev-hotfix' and all master versions should not. - if [ -n "$master_check" ] && ! echo "$version" | grep -Eq "\-dev(\-hotfix)?$"; then + if [ -n "$is_master" ] && ! echo "$version" | grep -Eq "\-dev(\-hotfix)?$"; then echo "master" - elif [ -n "$dev_check" ]; then + elif [ -n "$is_dev" ]; then echo "dev" else echo "unknown" @@ -118,3 +118,43 @@ EOF echo "Using Docker builder $DOCKER_BUILDER." docker buildx use "$DOCKER_BUILDER" } + +update_docker_image() { + DOCKERHUB_REPO="$1" + IMAGE_NAME="$2" + SYSTEM_VERSION="$3" + DOCKER_FILE_PATH="$4" + DOCKER_ACTION="$5" + + if [ -z "$DOCKER_ACTION" ]; then + DOCKER_ACTION="--load" + fi + + DOCKERHUB_IMAGE="$DOCKERHUB_REPO/dr_$IMAGE_NAME" + CACHE_FROM_LATEST="type=registry,ref=${DOCKERHUB_IMAGE}_cache:latest" + CACHE_FROM_VERSION="type=registry,ref=${DOCKERHUB_IMAGE}_cache:$SYSTEM_VERSION" + CACHE_TO_LATEST="type=registry,ref=${DOCKERHUB_IMAGE}_cache:latest,mode=max" + CACHE_TO_VERSION="type=registry,ref=${DOCKERHUB_IMAGE}_cache:$SYSTEM_VERSION,mode=max" + + if test "$GITHUB_ACTION"; then + CACHE_TO_LATEST="type=gha" + CACHE_TO_VERSION="type=gha" + DOCKER_ACTION="--push" + fi + + set_up_docker_builder + + docker buildx build \ + --build-arg DOCKERHUB_REPO="$DOCKERHUB_REPO" \ + --build-arg SYSTEM_VERSION="$SYSTEM_VERSION" \ + --cache-from "$CACHE_FROM_LATEST" \ + --cache-from "$CACHE_FROM_VERSION" \ + --cache-to "$CACHE_TO_LATEST" \ + --cache-to "$CACHE_TO_VERSION" \ + --file "$DOCKER_FILE_PATH" \ + --platform linux/amd64 \ + --tag "$DOCKERHUB_IMAGE:latest" \ + --tag "$DOCKERHUB_IMAGE:$SYSTEM_VERSION" \ + "$DOCKER_ACTION" \ + . +} diff --git a/scripts/prepare_image.sh b/scripts/prepare_image.sh index d9a49c68d..f6c4c8af9 100755 --- a/scripts/prepare_image.sh +++ b/scripts/prepare_image.sh @@ -8,6 +8,7 @@ script_directory="$( )" cd "$script_directory" || exit +# shellcheck disable=SC1091 . ./common.sh # We need access to all of the projects @@ -89,54 +90,24 @@ if [ -z "$DOCKER_ACTION" ]; then DOCKER_ACTION="--load" fi -DOCKERHUB_IMAGE="$DOCKERHUB_REPO/dr_$IMAGE_NAME" - -CACHE_FROM_LATEST="type=registry,ref=${DOCKERHUB_IMAGE}_cache:latest" -CACHE_FROM_VERSION="type=registry,ref=${DOCKERHUB_IMAGE}_cache:$SYSTEM_VERSION" -CACHE_TO_LATEST="type=registry,ref=${DOCKERHUB_IMAGE}_cache:latest,mode=max" -CACHE_TO_VERSION="type=registry,ref=${DOCKERHUB_IMAGE}_cache:$SYSTEM_VERSION,mode=max" - -if test "$GITHUB_ACTION"; then - CACHE_TO_LATEST="type=gha" - CACHE_TO_VERSION="type=gha" - DOCKER_ACTION="--push" -fi - DOCKER_FILE_PATH="$SERVICE/dockerfiles/Dockerfile.$IMAGE_NAME" -echo -echo "Building the $IMAGE_NAME:$SYSTEM_VERSION image from $DOCKER_FILE_PATH." -echo - attempt=0 -attempts=3 +max_attempts=3 finished=1 -while [ $finished != 0 ] && [ $attempt -lt $attempts ]; do +while [ $finished != 0 ] && [ $attempt -lt $max_attempts ]; do if [ $attempt -gt 0 ]; then echo "Failed to build $IMAGE_NAME:$SYSTEM_VERSION image, trying again." fi - set_up_docker_builder - - docker buildx build \ - --build-arg DOCKERHUB_REPO="$DOCKERHUB_REPO" \ - --build-arg SYSTEM_VERSION="$SYSTEM_VERSION" \ - --cache-from "$CACHE_FROM_LATEST" \ - --cache-from "$CACHE_FROM_VERSION" \ - --cache-to "$CACHE_TO_LATEST" \ - --cache-to "$CACHE_TO_VERSION" \ - --file "$DOCKER_FILE_PATH" \ - --platform linux/amd64 \ - --tag "$DOCKERHUB_IMAGE:latest" \ - --tag "$DOCKERHUB_IMAGE:$SYSTEM_VERSION" \ - "$DOCKER_ACTION" \ - . + echo "Building the $IMAGE_NAME:$SYSTEM_VERSION image from $DOCKER_FILE_PATH." + update_docker_image "$DOCKERHUB_REPO" "$IMAGE_NAME" "$SYSTEM_VERSION" "$DOCKER_FILE_PATH" "$DOCKER_ACTION" finished=$? attempt=$((attempt + 1)) done -if [ $finished -ne 0 ] && [ $attempt -ge $attempts ]; then +if [ $finished -ne 0 ] && [ $attempt -ge $max_attempts ]; then echo "Could not build $DOCKERHUB_IMAGE after $attempt attempts." exit 1 fi diff --git a/scripts/update_docker_images.sh b/scripts/update_docker_images.sh index d3910854a..299974310 100755 --- a/scripts/update_docker_images.sh +++ b/scripts/update_docker_images.sh @@ -1,6 +1,5 @@ #!/bin/sh -# Exit on failure. set -e # This script should always run as if it were being called from @@ -11,6 +10,7 @@ script_directory="$( )" cd "$script_directory" || exit +# shellcheck disable=SC1091 . ./common.sh # Get access to all of refinebio. @@ -74,12 +74,14 @@ if [ -z "$SYSTEM_VERSION" ]; then SYSTEM_VERSION="$(get_branch_hash)" fi +DOCKER_ACTION="--push" + # Intentionally omit affymetrix unless specifically requested since it is so # intense to build. -image_names="base migrations common_tests foreman api_base api_production api_local \ +IMAGE_NAMES="base migrations common_tests foreman api_base api_production api_local \ transcriptome smasher salmon no_op illumina downloaders compendia" if [ "$BUILD_AFFYMETRIX" ]; then - image_names="$image_names affymetrix" + IMAGE_NAMES="$IMAGE_NAMES affymetrix" fi # Set the version for the common project. @@ -91,46 +93,22 @@ echo "$SYSTEM_VERSION" >common/version rm -f common/dist/* (cd common && python3 setup.py sdist 1>/dev/null) # Run quietly in a subshell. -# shellcheck disable=SC2086 -for image_name in $image_names; do - case $image_name in +for IMAGE_NAME in $IMAGE_NAMES; do + case $IMAGE_NAME in api_base | api_local | api_production) - DOCKER_FILE_PATH="api/dockerfiles/Dockerfile.$image_name" + DOCKER_FILE_PATH="api/dockerfiles/Dockerfile.$IMAGE_NAME" ;; base | common_tests | migrations) - DOCKER_FILE_PATH="common/dockerfiles/Dockerfile.$image_name" + DOCKER_FILE_PATH="common/dockerfiles/Dockerfile.$IMAGE_NAME" ;; foreman) - DOCKER_FILE_PATH="foreman/dockerfiles/Dockerfile.$image_name" + DOCKER_FILE_PATH="foreman/dockerfiles/Dockerfile.$IMAGE_NAME" ;; *) - DOCKER_FILE_PATH="workers/dockerfiles/Dockerfile.$image_name" + DOCKER_FILE_PATH="workers/dockerfiles/Dockerfile.$IMAGE_NAME" ;; esac - echo - echo "Building the $image_name:$SYSTEM_VERSION image from $DOCKER_FILE_PATH." - echo - - DOCKERHUB_IMAGE="$DOCKERHUB_REPO/dr_$image_name" - CACHE_FROM_LATEST="type=registry,ref=${DOCKERHUB_IMAGE}_cache:latest" - CACHE_FROM_VERSION="type=registry,ref=${DOCKERHUB_IMAGE}_cache:$SYSTEM_VERSION" - CACHE_TO_LATEST="type=registry,ref=${DOCKERHUB_IMAGE}_cache:latest,mode=max" - CACHE_TO_VERSION="type=registry,ref=${DOCKERHUB_IMAGE}_cache:$SYSTEM_VERSION,mode=max" - - set_up_docker_builder - - docker buildx build \ - --build-arg DOCKERHUB_REPO="$DOCKERHUB_REPO" \ - --build-arg SYSTEM_VERSION="$SYSTEM_VERSION" \ - --cache-from "$CACHE_FROM_LATEST" \ - --cache-from "$CACHE_FROM_VERSION" \ - --cache-to "$CACHE_TO_LATEST" \ - --cache-to "$CACHE_TO_VERSION" \ - --file "$DOCKER_FILE_PATH" \ - --platform linux/amd64 \ - --push \ - --tag "$DOCKERHUB_IMAGE:latest" \ - --tag "$DOCKERHUB_IMAGE:$SYSTEM_VERSION" \ - . + echo "Building the $IMAGE_NAME:$SYSTEM_VERSION image from $DOCKER_FILE_PATH." + update_docker_image "$DOCKERHUB_REPO" "$IMAGE_NAME" "$SYSTEM_VERSION" "$DOCKER_FILE_PATH" "$DOCKER_ACTION" done From 62039f6945e52ff63d7fb3732efa619972f06339 Mon Sep 17 00:00:00 2001 From: Arkadii Yakovets Date: Wed, 12 Jul 2023 11:20:16 -0700 Subject: [PATCH 157/220] Fix flaky API throttling test Update test_api_general::APITestCases::test_all_endpoints --- api/tests/views/test_api_general.py | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/api/tests/views/test_api_general.py b/api/tests/views/test_api_general.py index 8d0b76358..fd817ccd2 100644 --- a/api/tests/views/test_api_general.py +++ b/api/tests/views/test_api_general.py @@ -347,9 +347,14 @@ def test_all_endpoints(self): # Tenth call since reset_cache() should be throttled, three have happened. # Make more than necessary to ensure we get the throttle. - for i in range(15): + response_codes = [] + for _ in range(15): response = self.client.get(reverse("survey_jobs", kwargs={"version": API_VERSION})) - self.assertEqual(response.status_code, status.HTTP_429_TOO_MANY_REQUESTS) + response_codes.append(response.status_code) + self.assertGreater( + len([rc for rc in response_codes if rc == status.HTTP_429_TOO_MANY_REQUESTS]), + 0, + ) def test_experiment_multiple_accessions(self): response = self.client.get( From 7ff4becc1db277634e8bd47c2d5f8baa91386846 Mon Sep 17 00:00:00 2001 From: David Mejia Date: Fri, 14 Jul 2023 13:46:59 -0400 Subject: [PATCH 158/220] sort multiple values alphanumerical ascending --- foreman/data_refinery_foreman/surveyor/harmony.py | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/foreman/data_refinery_foreman/surveyor/harmony.py b/foreman/data_refinery_foreman/surveyor/harmony.py index 123ef5236..f706df68e 100644 --- a/foreman/data_refinery_foreman/surveyor/harmony.py +++ b/foreman/data_refinery_foreman/surveyor/harmony.py @@ -787,7 +787,9 @@ def harmonize_field( if sample_attribute == "age" and len(harmonized_values) > 0: harmonized_sample[sample_attribute] = harmonized_values.pop() else: - harmonized_sample[sample_attribute] = ";".join([str(v) for v in harmonized_values]) + harmonized_sample[sample_attribute] = ";".join( + sorted([str(v) for v in harmonized_values]) + ) def harmonize_sample(self, sample_metadata: Dict, title_field: str = None) -> Dict: variants_attributes = [ From a5e78e1649c7dbc785e4d87a9b814fffb001f8ef Mon Sep 17 00:00:00 2001 From: David Mejia Date: Fri, 14 Jul 2023 14:42:21 -0400 Subject: [PATCH 159/220] add util functions for SRA --- .../data_refinery_foreman/surveyor/utils.py | 24 ++++++++++++++ foreman/tests/surveyor/test_utils.py | 31 +++++++++++++++++++ 2 files changed, 55 insertions(+) create mode 100644 foreman/tests/surveyor/test_utils.py diff --git a/foreman/data_refinery_foreman/surveyor/utils.py b/foreman/data_refinery_foreman/surveyor/utils.py index d14c7d7df..7992dac33 100644 --- a/foreman/data_refinery_foreman/surveyor/utils.py +++ b/foreman/data_refinery_foreman/surveyor/utils.py @@ -1,4 +1,5 @@ import collections +from typing import Dict, List, Union import requests from requests.adapters import HTTPAdapter @@ -43,6 +44,29 @@ def flatten(d, parent_key="", sep="_"): return dict(items) +# TODO: Merge this with above method after updating array express +# to support recursive flattening. +def flatten_dict(data: Union[Dict, List], prefix: str = "", sep="_") -> dict: + """Flattens a nested dictionary or list""" + flattened = {} + iterator = enumerate(data) if isinstance(data, list) else data.items() + + for k, v in iterator: + key = (k if not prefix else f"{prefix}{sep}{k}").replace(" ", sep) + if isinstance(v, dict) or isinstance(v, list): + flattened.update(flatten_dict(v, key)) + else: + flattened[key] = v + + return flattened + + +def get_nonempty(hash: dict, key: str, fallback): + if key in hash and hash[key]: + return hash[key] + return fallback + + def get_title_and_authors_for_pubmed_id(pmid): """Given a PMID, return that PMID's (title, [authors]).""" diff --git a/foreman/tests/surveyor/test_utils.py b/foreman/tests/surveyor/test_utils.py new file mode 100644 index 000000000..4228173c5 --- /dev/null +++ b/foreman/tests/surveyor/test_utils.py @@ -0,0 +1,31 @@ +from django.test import TestCase + +from data_refinery_foreman.surveyor import utils + + +class UtilsTestCase(TestCase): + def test_flatten_dict(self): + """ + Tests that flattening dictionaries and lists behaves as expected. + """ + source_dict = { + "first foo": "first_value", + "second bar": { + "nested": True, + }, + "third fuzz": ["another_nested", {"nested_object": True}], + } + + flattened_dict = utils.flatten_dict(source_dict) + + self.assertEqual(flattened_dict["first_foo"], "first_value") + self.assertEqual(flattened_dict["second_bar_nested"], True) + self.assertEqual(flattened_dict["third_fuzz_0"], "another_nested") + self.assertEqual(flattened_dict["third_fuzz_1_nested_object"], True) + + prefix_flattened_dict = utils.flatten_dict(source_dict, "test") + + self.assertEqual(prefix_flattened_dict["test_first_foo"], "first_value") + self.assertEqual(prefix_flattened_dict["test_second_bar_nested"], True) + self.assertEqual(prefix_flattened_dict["test_third_fuzz_0"], "another_nested") + self.assertEqual(prefix_flattened_dict["test_third_fuzz_1_nested_object"], True) From 11d90c6adb686e06c3edcd6d8562114cc7d89684 Mon Sep 17 00:00:00 2001 From: David Mejia Date: Fri, 14 Jul 2023 14:42:47 -0400 Subject: [PATCH 160/220] update cassette to new json response --- ...or.sra.metadata_is_gathered_correctly.yaml | 325 +++++------------- 1 file changed, 93 insertions(+), 232 deletions(-) diff --git a/test_volume/cassettes/surveyor.sra.metadata_is_gathered_correctly.yaml b/test_volume/cassettes/surveyor.sra.metadata_is_gathered_correctly.yaml index 2e31cff57..6608b8d63 100644 --- a/test_volume/cassettes/surveyor.sra.metadata_is_gathered_correctly.yaml +++ b/test_volume/cassettes/surveyor.sra.metadata_is_gathered_correctly.yaml @@ -9,44 +9,43 @@ interactions: Connection: - keep-alive User-Agent: - - python-requests/2.30.0 + - python-requests/2.31.0 method: GET - uri: https://www.ebi.ac.uk/ena/browser/api/xml/DRR002116 + uri: https://www.ebi.ac.uk/ena/portal/api/search/?format=json&includeAccessions=DRR002116&result=read_run&fields=all response: body: - string: "\n\n\n \n DRR002116\n - \ DRR002116\n - \ \n Illumina HiSeq 2000 sequencing; Exp_Gg_HH16_1_embryo_mRNAseq\n - \ \n - \ \n \n \n ENA-STUDY\n - \ DRP000595\n \n \n - \ \n \n ENA-SAMPLE\n - \ DRS001521\n \n \n - \ \n \n ENA-SUBMISSION\n - \ DRA000567\n \n \n - \ \n \n ENA-FASTQ-FILES\n - \ \n - \ \n \n \n - \ \n ENA-SUBMITTED-FILES\n - \ \n - \ \n \n \n \n - \ \n ENA-SPOT-COUNT\n 32568360\n - \ \n \n ENA-BASE-COUNT\n - \ 3256836000\n \n \n - \ ENA-FIRST-PUBLIC\n 2013-07-19\n - \ \n \n ENA-LAST-UPDATE\n - \ 2017-08-11\n \n \n\n\n" + string: '[ + + {"run_accession":"DRR002116","submission_accession":"DRA000567","library_min_fragment_size":"","bam_md5":"","assembly_software":"","library_prep_longitude":"","library_selection":"RANDOM","pcr_isolation_protocol":"","chip_protocol":"","sequencing_primer_provider":"","serotype":"","environment_feature":"","last_updated":"2017-08-11","submitted_galaxy":"","extraction_protocol":"","germline":"","secondary_project":"","culture_collection":"","submission_tool":"","sra_bytes":"2324796808","read_strand":"","rna_purity_280_ratio":"","hi_c_protocol":"","collected_by":"","submitted_ftp":"","restriction_enzyme_target_sequence":"","isolate":"","fastq_bytes":"2969261051","instrument_platform":"ILLUMINA","variety":"","sequencing_date_format":"","temperature":"","sra_aspera":"fasp.sra.ebi.ac.uk:/vol1/drr/DRR002/DRR002116","ecotype":"","submitted_aspera":"","sampling_campaign":"","bam_ftp":"","tissue_lib":"","environmental_sample":"","control_experiment":"","sex":"","submitted_md5":"","checklist":"","fastq_galaxy":"ftp.sra.ebi.ac.uk/vol1/fastq/DRR002/DRR002116/DRR002116.fastq.gz","library_gen_protocol":"","specimen_voucher":"","library_prep_latitude":"","submitted_bytes":"","taxonomic_identity_marker":"","run_date":"1314831600000","country":"","ncbi_reporting_standard":"Generic","sample_description":"Gg_HH16_1_embryo_mRNAseq","experiment_title":"Illumina + HiSeq 2000 sequencing; Exp_Gg_HH16_1_embryo_mRNAseq;Exp_Gg_HH16_1_embryo_mRNAseq","sra_galaxy":"ftp.sra.ebi.ac.uk/vol1/drr/DRR002/DRR002116","project":"","sample_prep_interval":"","fastq_md5":"a79d7a79451b28c967892995cf268697","sample_accession":"SAMD00004104","secondary_study_accession":"DRP000595","experimental_protocol":"","read_count":"32568360","study_title":"Whole + transcriptome identification of turtle","bio_material":"","rna_prep_5_protocol":"","host_body_site":"","local_environmental_context":"","assembly_quality":"","collection_date_end":"","sample_capture_status":"","sample_title":"Gg_HH16_1_embryo_mRNAseq","host_genotype":"","host_phenotype":"","environmental_medium":"","cultivar":"","instrument_model":"Illumina + HiSeq 2000","faang_library_selection":"","target_gene":"","bam_bytes":"","library_max_fragment_size":"","experiment_target":"","sequencing_date":"","nominal_sdev":"","chip_ab_provider":"","environment_material":"","host_tax_id":"","sample_material":"","sample_storage_processing":"","sra_md5":"50964cfc69091cdbf92ea58aaaf0ac1c","cell_type":"","fastq_ftp":"ftp.sra.ebi.ac.uk/vol1/fastq/DRR002/DRR002116/DRR002116.fastq.gz","sample_prep_interval_units":"","broker_name":"","sub_strain":"","base_count":"3256836000","library_strategy":"RNA-Seq","restriction_site":"","serovar":"","investigation_type":"","location":"","library_source":"TRANSCRIPTOMIC","sra_ftp":"ftp.sra.ebi.ac.uk/vol1/drr/DRR002/DRR002116","library_layout":"SINGLE","experimental_factor":"","sequencing_primer_catalog":"","environment_biome":"","rna_purity_230_ratio":"","dnase_protocol":"","dev_stage":"","library_prep_date_format":"","bam_aspera":"","binning_software":"","rna_integrity_num":"","library_prep_date":"","location_start":"","marine_region":"","aligned":"","file_location":"","sample_collection":"","chip_target":"","nominal_length":"","broad_scale_environmental_context":"","sequencing_location":"","status":"public","completeness_score":"","lon":"","fastq_aspera":"fasp.sra.ebi.ac.uk:/vol1/fastq/DRR002/DRR002116/DRR002116.fastq.gz","host_sex":"","library_pcr_isolation_protocol":"","sample_alias":"SAMD00004104","mating_type":"","collection_date_start":"","sub_species":"","contamination_score":"","run_alias":"DRR002116","restriction_enzyme":"","depth":"","submitted_read_type":"","library_construction_protocol":"","host_growth_conditions":"","collection_date":"","experiment_alias":"DRX001563","host_gravidity":"","center_name":"RIKEN_CDB","identified_by":"","cell_line":"","sampling_site":"","host":"","library_name":"Gg_HH16_1_embryo_mRNAseq","tag":"ena","first_created":"2013-11-11","lat":"","strain":"","experiment_accession":"DRX001563","scientific_name":"Gallus + gallus","host_status":"","tax_id":"9031","study_accession":"PRJDB90","submitted_format":"","submitted_host_sex":"","bisulfite_protocol":"","altitude":"","rt_prep_protocol":"","host_scientific_name":"","bam_galaxy":"","accession":"DRR002116","secondary_sample_accession":"DRS001521","sample_storage":"","cage_protocol":"","sampling_platform":"","taxonomic_classification":"","location_end":"","protocol_label":"","elevation":"","salinity":"","sequencing_method":"","sequencing_primer_lot":"","first_public":"2013-07-19","transposase_protocol":"","study_alias":"DRP000595","library_prep_location":"","rna_prep_3_protocol":"","ph":"","sequencing_longitude":"","tissue_type":"","isolation_source":""} + + ] + + ' headers: + Cache-Control: + - no-cache, no-store, max-age=0, must-revalidate + Content-Length: + - '4749' Content-Type: - - application/xml + - application/json Date: - - Wed, 17 May 2023 18:36:44 GMT + - Wed, 07 Jun 2023 20:31:08 GMT + Expires: + - '0' + Pragma: + - no-cache Strict-Transport-Security: - max-age=0 - Transfer-Encoding: - - chunked + X-Content-Type-Options: + - nosniff + X-Frame-Options: + - DENY + X-XSS-Protection: + - 1; mode=block status: code: 200 message: '' @@ -60,67 +59,46 @@ interactions: Connection: - keep-alive User-Agent: - - python-requests/2.30.0 + - python-requests/2.31.0 method: GET - uri: https://www.ebi.ac.uk/ena/browser/api/xml/DRX001563 + uri: https://www.ebi.ac.uk/ena/portal/api/search/?format=json&includeAccessions=DRP000595&result=study&fields=all response: body: - string: "\n\n\n \n - \ DRX001563\n DRX001563\n - \ \n Illumina HiSeq 2000 sequencing; Exp_Gg_HH16_1_embryo_mRNAseq\n - \ \n - \ \n DRP000595\n - \ PRJDB90\n - \ DRP000595\n - \ \n \n \n Experiment - for mRNAseq of chicken at stage HH16 (biological replicate 1)\n - \ \n \n DRS001521\n - \ SAMD00004104\n - \ DRS001521\n - \ \n \n \n - \ Gg_HH16_1_embryo_mRNAseq\n RNA-Seq\n - \ TRANSCRIPTOMIC\n RANDOM\n - \ \n \n \n - \ \n \n \n - \ 100\n \n - \ 0\n Application - Read\n Forward\n - \ 1\n \n - \ \n \n \n - \ \n \n Illumina - HiSeq 2000\n \n \n \n - \ \n \n 1\n - \ NIL\n \n - \ \n \n \n - \ \n \n \n - \ \n ENA-SAMPLE\n DRS001521\n - \ \n \n \n - \ \n ENA-RUN\n DRR002116\n - \ \n \n \n - \ \n ENA-SUBMISSION\n - \ DRA000567\n \n \n - \ \n \n ENA-FASTQ-FILES\n - \ \n - \ \n \n \n - \ \n ENA-SUBMITTED-FILES\n - \ \n - \ \n \n \n - \ \n \n ENA-SPOT-COUNT\n - \ 32568360\n \n - \ \n ENA-BASE-COUNT\n - \ 3256836000\n \n - \ \n\n\n" + string: '[ + + {"accession":"PRJDB90","keywords":"","description":"Evolutionary origin of + turtles, and Evo-Devo aspect of turtle shell were investigated in this project.","study_name":"Pelodiscus + sinensis japonicus strain:Eggs bought from local farmer in Japan","geo_accession":"","isolate":"","center_name":"RIKEN + Center for Developmental Biology","secondary_study_accession":"DRP000670;DRP000595","tag":"ena","secondary_study_center_name":"","strain":"Eggs + bought from local farmer in Japan","study_title":"P. sinensis EvoDevo project","last_updated":"2023-05-19","first_public":"2013-12-14","broker_name":"","study_description":"Evolutionary + origin of turtles, and Evo-Devo aspect of turtle shell were investigated in + this project.","secondary_study_alias":"DRP000670;DRP000595","scientific_name":"Pelodiscus + sinensis japonicus","study_alias":"PRJDB90","breed":"","tax_id":"34908","parent_study_accession":"PRJDB1384;PRJNA171777","study_accession":"PRJDB90","submission_tool":"","cultivar":"","tax_division":"VRT","status":"public"} + + ] + + ' headers: + Cache-Control: + - no-cache, no-store, max-age=0, must-revalidate + Content-Length: + - '1025' Content-Type: - - application/xml + - application/json Date: - - Wed, 17 May 2023 18:36:44 GMT + - Wed, 07 Jun 2023 20:31:08 GMT + Expires: + - '0' + Pragma: + - no-cache Strict-Transport-Security: - max-age=0 - Transfer-Encoding: - - chunked + X-Content-Type-Options: + - nosniff + X-Frame-Options: + - DENY + X-XSS-Protection: + - 1; mode=block status: code: 200 message: '' @@ -134,164 +112,47 @@ interactions: Connection: - keep-alive User-Agent: - - python-requests/2.30.0 + - python-requests/2.31.0 method: GET - uri: https://www.ebi.ac.uk/ena/browser/api/xml/DRS001521 + uri: https://www.ebi.ac.uk/biosamples/samples/SAMD00004104?format=json response: body: - string: "\n\n\n - \ \n DRS001521\n SAMD00004104\n \n - \ Gg_HH16_1_embryo_mRNAseq\n \n 9031\n - \ Gallus gallus\n chicken\n - \ \n \n \n \n - \ ENA-FASTQ-FILES\n \n - \ \n \n \n \n - \ ENA-SUBMITTED-FILES\n \n - \ \n \n\n\n - \ \n INSDC secondary accession\n - \ DRS001521\n \n \n - \ NCBI submission package\n Generic.1.0\n - \ \n \n organism\n - \ Gallus gallus\n \n - \ \n sample comment\n mRNAseq - of chicken at stage HH16 (biological replicate 1)\n \n - \ \n sample name\n DRS001521\n - \ \n \n BioSampleModel\n - \ Generic\n \n \n - \ ENA-FIRST-PUBLIC\n 2013-02-27\n - \ \n \n ENA-LAST-UPDATE\n - \ 2014-11-12\n \n - \ \n\n\n" - headers: - Content-Type: - - application/xml - Date: - - Wed, 17 May 2023 18:36:44 GMT - Strict-Transport-Security: - - max-age=0 - Transfer-Encoding: - - chunked - status: - code: 200 - message: '' -- request: - body: null - headers: - Accept: - - '*/*' - Accept-Encoding: - - gzip, deflate - Connection: - - keep-alive - User-Agent: - - python-requests/2.30.0 - method: GET - uri: https://www.ebi.ac.uk/ena/browser/api/xml/DRP000595 - response: - body: - string: "\n\n\n \n - \ DRP000595\n PRJDB90\n - \ PRJDB90\n - \ DRP000595\n - \ \n \n Whole transcriptome - identification of turtle\n \n Whole transcriptome of turtle (Pelodiscus - sinensis) was identified in this study by using stranded sequencing methods.\n - \ RIKEN_CDB\n \n - \ \n \n \n pubmed\n - \ 23624526\n \n \n - \ \n \n ENA-SAMPLE\n - \ DRS001495-DRS001536\n \n - \ \n \n \n - \ ENA-EXPERIMENT\n DRX001537-DRX001578\n - \ \n \n \n - \ \n ENA-RUN\n DRR002090-DRR002131\n - \ \n \n \n - \ \n ENA-SUBMISSION\n - \ DRA000567\n \n \n - \ \n \n ENA-FASTQ-FILES\n - \ \n - \ \n \n \n - \ \n ENA-SUBMITTED-FILES\n - \ \n - \ \n \n \n - \ \n \n ENA-SPOT-COUNT\n - \ 1371813555\n \n \n - \ ENA-BASE-COUNT\n 158881910957\n - \ \n \n ENA-FIRST-PUBLIC\n - \ 2013-07-19\n \n \n - \ ENA-LAST-UPDATE\n 2015-06-22\n - \ \n \n\n\n" - headers: - Content-Type: - - application/xml - Date: - - Wed, 17 May 2023 18:36:44 GMT - Strict-Transport-Security: - - max-age=0 - Transfer-Encoding: - - chunked - status: - code: 200 - message: '' -- request: - body: null - headers: - Accept: - - '*/*' - Accept-Encoding: - - gzip, deflate - Connection: - - keep-alive - User-Agent: - - python-requests/2.30.0 - method: GET - uri: https://www.ebi.ac.uk/ena/browser/api/xml/DRA000567 - response: - body: - string: "\n\n\n \n DRA000567\n - \ DRA000567\n - \ \n Submitted by RIKEN_CDB on 19-JUL-2013\n - \ \n \n \n - \ ENA-STUDY\n DRP000595\n - \ \n \n \n - \ \n ENA-SAMPLE\n DRS001495-DRS001536\n - \ \n \n \n - \ \n ENA-EXPERIMENT\n - \ DRX001537-DRX001578\n \n - \ \n \n \n - \ ENA-RUN\n DRR002090-DRR002131\n - \ \n \n \n - \ \n ENA-FASTQ-FILES\n - \ \n - \ \n \n \n - \ \n ENA-SUBMITTED-FILES\n - \ \n - \ \n \n \n - \ \n \n ENA-SPOT-COUNT\n - \ 1371813555\n \n - \ \n ENA-BASE-COUNT\n - \ 158881910957\n \n - \ \n\n\n" + RIKEN"}],"INSDC first public":[{"text":"2013-02-27T00:00:00Z"}],"INSDC last + update":[{"text":"2014-11-12T03:28:52Z"}],"INSDC secondary accession":[{"text":"DRS001521"}],"INSDC + status":[{"text":"live"}],"NCBI submission model":[{"text":"Generic"}],"NCBI + submission package":[{"text":"Generic.1.0"}],"SRA accession":[{"text":"DRS001521"}],"organism":[{"text":"Gallus + gallus","ontologyTerms":["http://purl.obolibrary.org/obo/NCBITaxon_9031"]}],"sample + comment":[{"text":"mRNAseq of chicken at stage HH16 (biological replicate + 1)","tag":"attribute"}],"sample name":[{"text":"DRS001521","tag":"attribute"}],"title":[{"text":"Gg_HH16_1_embryo_mRNAseq"}]},"externalReferences":[{"url":"https://www.ebi.ac.uk/ena/data/view/SAMD00004104","duo":null}],"submittedVia":"JSON_API","create":"2013-07-03T08:05:45.306Z","_links":{"self":{"href":"https://www.ebi.ac.uk/biosamples/samples/SAMD00004104"},"curationDomain":{"href":"https://www.ebi.ac.uk/biosamples/samples/SAMD00004104{?curationdomain}","templated":true},"curationLinks":{"href":"https://www.ebi.ac.uk/biosamples/samples/SAMD00004104/curationlinks"},"curationLink":{"href":"https://www.ebi.ac.uk/biosamples/samples/SAMD00004104/curationlinks/{hash}","templated":true},"structuredData":{"href":"https://www.ebi.ac.uk/biosamples/structureddata/SAMD00004104"}}}' headers: + Cache-Control: + - max-age=60, public + Content-Length: + - '1732' Content-Type: - - application/xml + - application/json;charset=UTF-8 Date: - - Wed, 17 May 2023 18:36:45 GMT + - Wed, 07 Jun 2023 20:31:08 GMT + ETag: + - '"092374b249b8b19f3dcc3ac478762eae2"' Strict-Transport-Security: - max-age=0 - Transfer-Encoding: - - chunked + Vary: + - Origin + - Access-Control-Request-Method + - Access-Control-Request-Headers + - Origin + - Access-Control-Request-Method + - Access-Control-Request-Headers + X-Content-Type-Options: + - nosniff + X-Frame-Options: + - DENY + X-XSS-Protection: + - 1; mode=block status: code: 200 message: '' From 5fbecefa7d36a61462edeb610e203749fd837b09 Mon Sep 17 00:00:00 2001 From: David Mejia Date: Fri, 14 Jul 2023 14:43:21 -0400 Subject: [PATCH 161/220] add utils to import tests --- foreman/tests/test_imports.py | 1 + 1 file changed, 1 insertion(+) diff --git a/foreman/tests/test_imports.py b/foreman/tests/test_imports.py index 9c2717e0e..1544f77d9 100644 --- a/foreman/tests/test_imports.py +++ b/foreman/tests/test_imports.py @@ -57,4 +57,5 @@ def test_imports(self): import tests.surveyor.test_harmony import tests.surveyor.test_sra import tests.surveyor.test_surveyor + import tests.surveyor.test_utils import tests.surveyor.test_transcriptome_index From 6581d7f1f29ca421aededcc9bab881add6026961 Mon Sep 17 00:00:00 2001 From: David Mejia Date: Fri, 14 Jul 2023 14:50:00 -0400 Subject: [PATCH 162/220] rework to support new ENA endpoint --- foreman/data_refinery_foreman/surveyor/sra.py | 768 ++++++------------ 1 file changed, 269 insertions(+), 499 deletions(-) diff --git a/foreman/data_refinery_foreman/surveyor/sra.py b/foreman/data_refinery_foreman/surveyor/sra.py index d414dbffa..bff26a741 100644 --- a/foreman/data_refinery_foreman/surveyor/sra.py +++ b/foreman/data_refinery_foreman/surveyor/sra.py @@ -1,6 +1,5 @@ import re -import xml.etree.ElementTree as ET -from typing import Dict, List +from typing import List from django.utils.dateparse import parse_date @@ -25,12 +24,11 @@ DOWNLOAD_SOURCE = "NCBI" # or "ENA". Change this to download from NCBI (US) or ENA (UK). -ENA_URL_TEMPLATE = "https://www.ebi.ac.uk/ena/browser/view/{}" -ENA_METADATA_URL_TEMPLATE = "https://www.ebi.ac.uk/ena/browser/api/xml/{}" -ENA_FILE_REPORT_URL_TEMPLATE = ( - "https://www.ebi.ac.uk/ena/portal/api/filereport?accession={accession}&result=read_run" -) NCBI_DOWNLOAD_URL_TEMPLATE = "https://sra-pub-run-odp.s3.amazonaws.com/sra/{accession}/{accession}" +ENA_URL_TEMPLATE = "https://www.ebi.ac.uk/ena/browser/view/{}" +ENA_API = "https://www.ebi.ac.uk/ena/portal/api/" +ENA_BIOSAMPLE_API = "https://www.ebi.ac.uk/biosamples/samples" +ENA_PUBMED_API_TEMPLATE = "https://www.ebi.ac.uk/ena/xref/rest/json/search?accession={accession}&expanded=true&source=PubMed" class UnsupportedDataTypeError(Exception): @@ -56,275 +54,137 @@ def source_type(self): return Downloaders.SRA.value @staticmethod - def gather_submission_metadata(metadata: Dict) -> None: - formatted_metadata_URL = ENA_METADATA_URL_TEMPLATE.format(metadata["submission_accession"]) - response = utils.requests_retry_session().get(formatted_metadata_URL) - submission_xml = ET.fromstring(response.text)[0] - submission_metadata = submission_xml.attrib - - # We already have these - submission_metadata.pop("accession", "") - submission_metadata.pop("alias", "") + def get_ena_json_api(endpoint: str, accession, params: dict = {}): + query_params = "&".join([f"{k}={params[k]}" for k in params]) - metadata.update(submission_metadata) + if query_params: + query_params = f"&{query_params}" - for child in submission_xml: - if child.tag == "TITLE": - metadata["submission_title"] = child.text - elif child.tag == "SUBMISSION_ATTRIBUTES": - for grandchild in child: - metadata[grandchild.find("TAG").text.lower()] = grandchild.find("VALUE").text + return f"{ENA_API}{endpoint}/?format=json&includeAccessions={accession}{query_params}" @staticmethod - def gather_library_metadata(metadata: Dict, library: ET.Element) -> None: - for child in library: - if child.tag == "LIBRARY_LAYOUT": - metadata["library_layout"] = child[0].tag - else: - metadata[child.tag.lower()] = child.text - - # SRA contains several types of data. We only want RNA-Seq for now. - if metadata["library_strategy"] != "RNA-Seq": - raise UnsupportedDataTypeError("library_strategy not RNA-Seq.") - if metadata["library_source"] not in ["TRANSCRIPTOMIC", "OTHER"]: - raise UnsupportedDataTypeError( - "library_source: " + metadata["library_source"] + " not TRANSCRIPTOMIC or OTHER." + def get_ena_json_api_response(endpoint: str, accession, params: dict = {}): + response = utils.requests_retry_session().get( + SraSurveyor.get_ena_json_api(endpoint, accession, params) + ) + # handle logging of errors here consistently + if response.status_code != 200: + logger.error( + "Could not discover {}.".format(endpoint), + accession=accession, + status_code=response.status_code, + url=response.url, ) + return {} + return response.json() @staticmethod - def parse_read_spec(metadata: Dict, read_spec: ET.Element, counter: int) -> None: - for child in read_spec: - key = "read_spec_{}_{}".format(str(counter), child.tag.replace("READ_", "").lower()) - metadata[key] = child.text + def gather_experiment_metadata(experiment_accession: str): + experiments = SraSurveyor.get_ena_json_api_response( + "search", + experiment_accession, + { + "result": "study", + "fields": "all", + }, + ) + if len(experiments) > 0: + return experiments[0] + return {} @staticmethod - def gather_spot_metadata(metadata: Dict, spot: ET.Element) -> None: - """We don't actually know what this metadata is about. - - SPOT_DECODE_SPECs have a variable number of READ_SPECs so we - have to add a counter to the keys in order to make them work - within the flat dictionary we're building. - """ - for child in spot: - if child.tag == "SPOT_DECODE_SPEC": - read_spec_counter = 0 - for grandchild in child: - if grandchild.tag == "SPOT_LENGTH": - metadata["spot_length"] = grandchild.text - elif grandchild.tag == "READ_SPEC": - SraSurveyor.parse_read_spec(metadata, grandchild, read_spec_counter) - read_spec_counter = read_spec_counter + 1 + def gather_experiment_runs_metadata(accession: str): + # if accession is experiment it will return all samples + # if accession is sample it will return just the sample + samples_metadata = SraSurveyor.get_ena_json_api_response( + "search", + accession, + { + "result": "read_run", + "fields": "all", + }, + ) - @staticmethod - def gather_experiment_metadata(metadata: Dict) -> None: - formatted_metadata_URL = ENA_METADATA_URL_TEMPLATE.format(metadata["experiment_accession"]) - response = utils.requests_retry_session().get(formatted_metadata_URL) - experiment_xml = ET.fromstring(response.text) - - experiment = experiment_xml[0] - for child in experiment: - if child.tag == "TITLE": - metadata["experiment_title"] = child.text - elif child.tag == "DESIGN": - for grandchild in child: - if grandchild.tag == "DESIGN_DESCRIPTION": - metadata["experiment_design_description"] = grandchild.text - elif grandchild.tag == "LIBRARY_DESCRIPTOR": - SraSurveyor.gather_library_metadata(metadata, grandchild) - elif grandchild.tag == "SPOT_DESCRIPTOR": - SraSurveyor.gather_spot_metadata(metadata, grandchild) - elif child.tag == "PLATFORM": - # This structure is extraneously nested. - metadata["platform_instrument_model"] = child[0][0].text + samples_metadata = [SraSurveyor.gather_biosample_metadata(s) for s in samples_metadata] - @staticmethod - def parse_run_link(run_link: ET.ElementTree) -> (str, str): - key = "" - value = "" - - # The first level in this element is a XREF_LINK which is - # really just an unnecessary level - for child in run_link[0]: - if child.tag == "DB": - # The key is prefixed with "ena-" which is unnecessary - # since we know this is coming from ENA - key = child.text.lower().replace("ena-", "") + "_accession" - elif child.tag == "ID": - value = child.text - - return (key, value) + return samples_metadata @staticmethod - def parse_attribute(attribute: ET.ElementTree, key_prefix: str = "") -> (str, str): - """Parse an XML attribute. - - Takes an optional key_prefix which is used to differentiate - keys which may be shared between different object types. For - example "title" could be the experiment_title or the - sample_title. - """ - key = "" - value = "" - - for child in attribute: - if child.tag == "TAG": - key = key_prefix + child.text.lower().replace("-", "_").replace(" ", "_") - elif child.tag == "VALUE": - value = child.text - - return (key, value) + def gather_file_report(run_accession: str): + return SraSurveyor.get_ena_json_api_response( + "filereport", + run_accession, + { + "fields": "all", + }, + ) @staticmethod - def gather_file_report(run_accession: str) -> List[Dict]: - """Get stats about files and check for unmated reads. - - This endpoint returns a weird format, so some custom parsing is required: - run_accession fastq_ftp fastq_bytes fastq_md5 submitted_ftp submitted_bytes submitted_md5 sra_ftp sra_bytes sra_md5 - SRR7353755 ftp.sra.ebi.ac.uk/vol1/fastq/SRR735/005/SRR7353755/SRR7353755.fastq.gz;ftp.sra.ebi.ac.uk/vol1/fastq/SRR735/005/SRR7353755/SRR7353755_1.fastq.gz;ftp.sra.ebi.ac.uk/vol1/fastq/SRR735/005/SRR7353755/SRR7353755_2.fastq.gz 25176;2856704;3140575 7ef1ba010dcb679217112efa380798b2;6bc5651b7103306d4d65018180ab8d0d;3856c14164612d9879d576a046a9879f - """ + def gather_experiment_biosample_metadata(biosample_accession: str): response = utils.requests_retry_session().get( - ENA_FILE_REPORT_URL_TEMPLATE.format(accession=run_accession) + f"{ENA_BIOSAMPLE_API}/{biosample_accession}?format=json" ) - lines = response.text.split("\n") - split_lines = [line.split("\t") for line in lines] - header_row = split_lines[0] - sample_row = split_lines[1] - - file_info = [] - for i, key in enumerate(header_row): - if key in ["fastq_ftp", "fastq_bytes", "fastq_md5"]: - for i, value in enumerate(sample_row[i].split(";")): - if i >= len(file_info): - file_info.append({key: value}) - else: - file_info[i][key] = value - - return file_info + if response.status_code != 200: + logger.error( + "Could not discover Biosample.", + accession=biosample_accession, + status_code=response.status_code, + url=response.url, + ) + return {} + return response.json() @staticmethod - def gather_run_metadata(run_accession: str) -> Dict: - """A run refers to a specific read in an experiment.""" - - discoverable_accessions = ["study_accession", "sample_accession", "submission_accession"] - + def gather_experiment_pubmed_metadata(accession: str): response = utils.requests_retry_session().get( - ENA_METADATA_URL_TEMPLATE.format(run_accession) + ENA_PUBMED_API_TEMPLATE.format(accession=accession) ) - try: - run_xml = ET.fromstring(response.text) - except Exception: - logger.exception("Unable to decode response", response=response.text) - return {} - - # Necessary because ERP000263 has only one ROOT element containing this error: - # Entry: ERR15562 display type is either not supported or entry is not found. - if len(run_xml) == 0: - return {} - run_item = run_xml[0] - - useful_attributes = ["center_name", "run_center", "run_date", "broker_name", "alias"] - metadata = {} - for attribute in useful_attributes: - if attribute in run_item.attrib: - metadata[attribute] = run_item.attrib[attribute] - metadata["run_accession"] = run_accession - - for child in run_item: - if child.tag == "EXPERIMENT_REF": - metadata["experiment_accession"] = child.attrib["accession"] - elif child.tag == "RUN_LINKS": - for grandchild in child: - key, value = SraSurveyor.parse_run_link(grandchild) - if value != "" and key in discoverable_accessions: - metadata[key] = value - elif child.tag == "RUN_ATTRIBUTES": - for grandchild in child: - key, value = SraSurveyor.parse_attribute(grandchild, "run_") - metadata[key] = value - - return metadata + if response.status_code != 200: + logger.error( + "Could not discover Pubmed ID.", + accession=accession, + status_code=response.status_code, + url=response.url, + ) + return [] + return response.json() @staticmethod - def gather_sample_metadata(metadata: Dict) -> None: - formatted_metadata_URL = ENA_METADATA_URL_TEMPLATE.format(metadata["sample_accession"]) - response = utils.requests_retry_session().get(formatted_metadata_URL) - sample_xml = ET.fromstring(response.text) - - sample = sample_xml[0] - - if "center_name" in sample.attrib: - metadata["sample_center_name"] = sample.attrib["center_name"] - - for child in sample: - if child.tag == "TITLE": - metadata["sample_title"] = child.text - elif child.tag == "SAMPLE_NAME": - for grandchild in child: - if grandchild.tag == "TAXON_ID": - metadata["organism_id"] = grandchild.text - elif grandchild.tag == "SCIENTIFIC_NAME": - metadata["organism_name"] = grandchild.text.upper() - elif child.tag == "SAMPLE_ATTRIBUTES": - for grandchild in child: - key, value = SraSurveyor.parse_attribute(grandchild, "sample_") - metadata[key] = value + def gather_biosample_metadata(sample_metadata): + biosample_metadata = SraSurveyor.gather_experiment_biosample_metadata( + sample_metadata["sample_accession"] + ) + biosample_metadata.pop( + "accession", None + ) # dont overwrite accession with biosample accession + biosample_metadata.pop("status", None) # these should match but biosample is all uppercase + return {**sample_metadata, **utils.flatten_dict(biosample_metadata)} @staticmethod - def gather_study_metadata(metadata: Dict) -> None: - formatted_metadata_URL = ENA_METADATA_URL_TEMPLATE.format(metadata["study_accession"]) - response = utils.requests_retry_session().get(formatted_metadata_URL) - study_xml = ET.fromstring(response.text) - - study = study_xml[0] - for child in study: - if child.tag == "DESCRIPTOR": - for grandchild in child: - # STUDY_TYPE is the only tag which uses attributes - # instead of the text for whatever reason - if grandchild.tag == "STUDY_TYPE": - metadata[grandchild.tag.lower()] = grandchild.attrib["existing_study_type"] - else: - metadata[grandchild.tag.lower()] = grandchild.text - elif child.tag == "STUDY_ATTRIBUTES": - for grandchild in child: - key, value = SraSurveyor.parse_attribute(grandchild, "study_") - metadata[key] = value - elif child.tag == "STUDY_LINKS": - for grandchild in child: - for ggc in grandchild: - if ggc.getchildren()[0].text == "pubmed": - metadata["pubmed_id"] = ggc.getchildren()[1].text - break - elif child.tag == "IDENTIFIERS": - for grandchild in child: - if ( - # Check for GEO accessions. These live inside an - # EXTERNAL_ID tag with namespace GEO - grandchild.tag == "EXTERNAL_ID" - and grandchild.attrib.get("namespace", "") == "GEO" - and re.match(r"^GSE\d{2,6}", grandchild.text) - ) or ( - # Check for ArrayExpress accessions. These live inside a - # SUBMITTER_ID tag, but the namespace is not standardized - grandchild.tag == "SUBMITTER_ID" - and re.match(r"^E-[A-Z]{4}-\d{2,6}", grandchild.text) - ): - metadata["external_id"] = grandchild.text - break + def gather_all_metadata(accession: str): + # check if experiment, if not fetch the sample, biosample and experiment + samples_metadata = SraSurveyor.gather_experiment_runs_metadata(accession) - @staticmethod - def gather_all_metadata(run_accession): - metadata = SraSurveyor.gather_run_metadata(run_accession) + if not re.match(r"^(S|E|D)RP\d+", accession): + experiment_accession = samples_metadata[0]["secondary_study_accession"] + else: + experiment_accession = accession + + experiment_metadata = SraSurveyor.gather_experiment_metadata(experiment_accession) + + if "accession" in experiment_metadata: + pubmed_metadata = SraSurveyor.gather_experiment_pubmed_metadata( + experiment_metadata["accession"] + ) + if len(pubmed_metadata) > 0: + experiment_metadata["pubmed_id"] = pubmed_metadata["Source Primary Accession"] - if metadata != {}: - SraSurveyor.gather_experiment_metadata(metadata) - SraSurveyor.gather_sample_metadata(metadata) - SraSurveyor.gather_study_metadata(metadata) - SraSurveyor.gather_submission_metadata(metadata) + for sample_metadata in samples_metadata: + sample_metadata.update(utils.flatten_dict(experiment_metadata, "study_ena")) - return metadata + return experiment_metadata, samples_metadata @staticmethod def _build_ncbi_file_url(run_accession: str): @@ -345,220 +205,186 @@ def _apply_metadata_to_experiment(experiment: Experiment, metadata: dict): experiment.source_database = "SRA" experiment.technology = "RNA-SEQ" - # We don't get this value from the API, unfortunately. - # experiment.platform_accession_code = experiment["platform_accession_code"] - - if not experiment.description: - experiment.description = "No description." - - if "study_title" in metadata: - experiment.title = metadata["study_title"] - if "study_abstract" in metadata: - experiment.description = metadata["study_abstract"] - if "lab_name" in metadata: - experiment.submitter_institution = metadata["lab_name"] - if "experiment_design_description" in metadata: - experiment.protocol_description = metadata["experiment_design_description"] - if "pubmed_id" in metadata: - experiment.pubmed_id = metadata["pubmed_id"] - experiment.has_publication = True - if "study_ena_first_public" in metadata: - experiment.source_first_published = parse_date(metadata["study_ena_first_public"]) - if "study_ena_last_update" in metadata: - experiment.source_last_modified = parse_date(metadata["study_ena_last_update"]) - - if metadata.get("external_id", None) is not None: - experiment.alternate_accession_code = metadata["external_id"] - - # Rare, but it happens. - if not experiment.protocol_description: - # metadata.get() doesn't work here because sometimes the - # key is present but its value is None, in which case None - # is returned, causing our database constraint to be - # violated. - if ( - "library_construction_protocol" in metadata - and metadata["library_construction_protocol"] - ): - experiment.protocol_description = metadata["library_construction_protocol"] - else: - experiment.protocol_description = "Protocol was never provided." - + experiment.title = metadata.get("study_title", "") + experiment.description = utils.get_nonempty( + metadata, "study_description", "No description." + ) + experiment.submitter_institution = utils.get_nonempty(metadata, "center_name", "") + experiment.source_first_published = parse_date(metadata["first_public"]) + experiment.source_last_modified = parse_date(metadata["last_updated"]) + experiment.alternate_accession_code = utils.get_nonempty(metadata, "geo_accession", None) + experiment.protocol_description = utils.get_nonempty(metadata, "protocol", []) + + # need pubmed_id + experiment.pubmed_id = metadata.get("pubmed_id", "") + experiment.has_publication = "pubmed_id" in metadata # Scrape publication title and authorship from Pubmed if experiment.pubmed_id: - pubmed_metadata = utils.get_title_and_authors_for_pubmed_id(experiment.pubmed_id) - experiment.publication_title = pubmed_metadata[0] - experiment.publication_authors = pubmed_metadata[1] + title, authors = utils.get_title_and_authors_for_pubmed_id(experiment.pubmed_id) + experiment.publication_title = title + experiment.publication_authors = authors + + @staticmethod + def get_files_urls(run_accession, is_paired): + if DOWNLOAD_SOURCE == "NCBI": + return [SraSurveyor._build_ncbi_file_url(run_accession)] + if is_paired: + return [ + _build_ena_file_url(run_accession, "_1"), + _build_ena_file_url(run_accession, "_2"), + ] + return [_build_ena_file_url(run_accession)] + + @staticmethod + def _generate_original_files(sample, sample_metadata): + is_paired = sample_metadata["library_layout"] == "PAIRED" + files_urls = SraSurveyor.get_files_urls(sample.accession_code, is_paired) + file_reports = SraSurveyor.gather_file_report(sample.accession_code) + + if len(file_reports) <= 2: + for file_url in files_urls: + original_file, _ = OriginalFile.objects.get_or_create( + source_url=file_url, source_filename=file_url.split("/")[-1], has_raw=True + ) + OriginalFileSampleAssociation.objects.get_or_create( + original_file=original_file, sample=sample + ) + else: + # If there's 3 fastq files in ENA's FTP server that's + # because one is the unmated reads and we can't + # reliably convert from the .SRA. Therefore set the + # file_urls to be the ENA FTP URLs. + for file_report in file_reports: + file_url = file_report["fastq_ftp"] + + # Skip the one for unmated reads: the unmated + # reads file lacks a _X postfix. It's be better if + # it was clearly labeled, but it seems to be + # consistent. The unmated reads file also seems to + # be the smallest by far, but I'm unsure how + # reliable that is. + if "_1.fastq.gz" in file_url or "_2.fastq.gz" in file_url: + original_file, _ = OriginalFile.objects.get_or_create( + source_url=file_url, + source_filename=file_url.split("/")[-1], + has_raw=True, + expected_size_in_bytes=file_report["fastq_bytes"], + expected_md5=file_report["fastq_md5"], + ) + OriginalFileSampleAssociation.objects.get_or_create( + original_file=original_file, sample=sample + ) def _generate_experiment_and_samples( - self, run_accession: str, study_accession: str = None + self, experiment_or_sample_accession: str ) -> (Experiment, List[Sample]): """Generates Experiments and Samples for the provided run_accession.""" - metadata = SraSurveyor.gather_all_metadata(run_accession) - - if metadata == {}: - if study_accession: - logger.error( - "Could not discover any metadata for run.", - accession=run_accession, - study_accession=study_accession, - ) - else: - logger.error("Could not discover any metadata for run.", accession=run_accession) - return (None, None) # This will cascade properly + experiment_metadata, samples_metadata = SraSurveyor.gather_all_metadata( + experiment_or_sample_accession + ) - if DOWNLOAD_SOURCE == "ENA": - if metadata["library_layout"] == "PAIRED": - files_urls = [ - _build_ena_file_url(run_accession, "_1"), - _build_ena_file_url(run_accession, "_2"), - ] - else: - files_urls = [_build_ena_file_url(run_accession)] - else: - files_urls = [SraSurveyor._build_ncbi_file_url(run_accession)] + experiment = self._generate_experment(experiment_metadata) + samples = [ + self._generate_sample(experiment, sample_metadata) + for sample_metadata in samples_metadata + ] - # Figure out the Organism for this sample - organism_name = metadata.pop("organism_name", None) - if not organism_name: - logger.error("Could not discover organism type for run.", accession=run_accession) - return (None, None) # This will cascade properly + return experiment, samples - organism_name = organism_name.upper() - organism = Organism.get_object_for_name(organism_name) + def _generate_experiment(self, experiment_metadata: dict) -> Experiment: + """Generates an Experiment for the provided experiment_accession.""" - ## - # Experiment - ## + if not experiment_metadata: + return None - experiment_accession_code = metadata.get("study_accession") - try: - experiment_object = Experiment.objects.get(accession_code=experiment_accession_code) + # secondary_study_accession is DRP, SRP etc + # study_accession is PRJDB etc + experiment_accession = experiment_metadata.get("secondary_study_accession") + + experiment, is_created = Experiment.get_or_create(accession_code=experiment_accession) + + if is_created: + SraSurveyor._apply_metadata_to_experiment(experiment, experiment_metadata) + experiment.save() + experiment_annotation = ExperimentAnnotation() + experiment_annotation.experiment = experiment + experiment_annotation.data = experiment_metadata + experiment_annotation.is_ccdl = False + experiment_annotation.save() + else: logger.debug( "Experiment already exists, skipping object creation.", - experiment_accession_code=experiment_accession_code, + experiment_accession_code=experiment_accession, survey_job=self.survey_job.id, ) - except Experiment.DoesNotExist: - experiment_object = Experiment() - experiment_object.accession_code = experiment_accession_code - SraSurveyor._apply_metadata_to_experiment(experiment_object, metadata) - experiment_object.save() - - ## - # Experiment Metadata - ## - json_xa = ExperimentAnnotation() - json_xa.experiment = experiment_object - json_xa.data = metadata - json_xa.is_ccdl = False - json_xa.save() - - ## - # Samples - ## - - sample_accession_code = metadata.pop("run_accession") - # Create the sample object - try: - sample_object = Sample.objects.get(accession_code=sample_accession_code) - # If current experiment includes new protocol information, - # merge it into the sample's existing protocol_info. - protocol_info, is_updated = self.update_sample_protocol_info( - sample_object.protocol_info, - experiment_object.protocol_description, - experiment_object.source_url, - ) - if is_updated: - sample_object.protocol_info = protocol_info - sample_object.save() - logger.debug( - "Sample %s already exists, skipping object creation.", - sample_accession_code, - experiment_accession_code=experiment_object.accession_code, - survey_job=self.survey_job.id, - ) - except Sample.DoesNotExist: - sample_object = Sample() - sample_object.source_database = "SRA" - sample_object.accession_code = sample_accession_code - sample_object.organism = organism + return experiment + + def _generate_sample(self, experiment: Experiment, sample_metadata: dict) -> Sample: + """Generates or updates a Sample for the provided Experiment and sample metadata.""" + + run_accession = sample_metadata["run_accession"] + + # Figure out the Organism for this sample + organism_name = sample_metadata.pop("scientific_name", None) + if not organism_name: + logger.error("Could not discover organism type for run.", accession=run_accession) + return (None, None) # This will cascade properly - sample_object.platform_name = metadata.get("platform_instrument_model", "UNKNOWN") + organism = Organism.get_object_for_name(organism_name) + + sample_accession = sample_metadata.pop("run_accession") + sample, sample_created = Sample.objects.get_or_create(accession_code=sample_accession) + + if sample_created: + sample.source_database = "SRA" + sample.organism = organism + sample.platform_name = sample_metadata.get("instrument_model", "UNKNOWN") # The platform_name is human readable and contains spaces, # accession codes shouldn't have spaces though: - sample_object.platform_accession_code = sample_object.platform_name.replace(" ", "") - sample_object.technology = "RNA-SEQ" - if ( - "ILLUMINA" in sample_object.platform_name.upper() - or "NEXTSEQ" in sample_object.platform_name.upper() - ): - sample_object.manufacturer = "ILLUMINA" - elif "ION TORRENT" in sample_object.platform_name.upper(): - sample_object.manufacturer = "ION_TORRENT" + sample.platform_accession_code = sample.platform_name.replace(" ", "") + sample.technology = "RNA-SEQ" + + platform_name = sample.platform_name.upper() + if platform_name in ["ILLUMINA", "NEXTSEQ"]: + sample.manufacturer = "ILLUMINA" + elif "ION TORRENT" in platform_name: + sample.manufacturer = "ION_TORRENT" else: - sample_object.manufacturer = "UNKNOWN" + sample.manufacturer = "UNKNOWN" - SraSurveyor._apply_harmonized_metadata_to_sample(sample_object, metadata) + SraSurveyor._apply_harmonized_metadata_to_sample(sample, sample_metadata) - protocol_info, is_updated = self.update_sample_protocol_info( - existing_protocols=[], - experiment_protocol=experiment_object.protocol_description, - experiment_url=experiment_object.source_url, + self._generate_original_files(sample, sample_metadata) + sample.save() + else: + logger.debug( + "Sample %s already exists, skipping object creation.", + sample_accession_code=sample_accession, + experiment_accession_code=experiment.accession_code, + survey_job=self.survey_job.id, ) - # Do not check is_updated the first time because we must - # save a list so we can append to it later. - sample_object.protocol_info = protocol_info - sample_object.save() - - file_reports = SraSurveyor.gather_file_report(sample_accession_code) + # i think we should be collecting the sample protocols + # on the experiment here instead + protocol_info, protocol_updated = self.update_sample_protocol_info( + existing_protocols=sample.protocol_info, + experiment_protocol=experiment.protocol_description, + experiment_url=experiment.source_url, + ) - if len(file_reports) < 3: - for file_url in files_urls: - original_file = OriginalFile.objects.get_or_create( - source_url=file_url, source_filename=file_url.split("/")[-1], has_raw=True - )[0] - OriginalFileSampleAssociation.objects.get_or_create( - original_file=original_file, sample=sample_object - ) - else: - # If there's 3 fastq files in ENA's FTP server that's - # because one is the unmated reads and we can't - # reliably convert from the .SRA. Therefore set the - # file_urls to be the ENA FTP URLs. - for file_report in file_reports: - file_url = file_report["fastq_ftp"] - - # Skip the one for unmated reads: the unmated - # reads file lacks a _X postfix. It's be better if - # it was clearly labeled, but it seems to be - # consistent. The unmated reads file also seems to - # be the smallest by far, but I'm unsure how - # reliable that is. - if "_1.fastq.gz" in file_url or "_2.fastq.gz" in file_url: - original_file = OriginalFile.objects.get_or_create( - source_url=file_url, - source_filename=file_url.split("/")[-1], - has_raw=True, - expected_size_in_bytes=file_report["fastq_bytes"], - expected_md5=file_report["fastq_md5"], - )[0] - OriginalFileSampleAssociation.objects.get_or_create( - original_file=original_file, sample=sample_object - ) + if sample_created or protocol_updated: + sample.protocol_info = protocol_info + sample.save() # Create associations if they don't already exist - ExperimentSampleAssociation.objects.get_or_create( - experiment=experiment_object, sample=sample_object - ) + ExperimentSampleAssociation.objects.get_or_create(experiment=experiment, sample=sample) ExperimentOrganismAssociation.objects.get_or_create( - experiment=experiment_object, organism=organism + experiment=experiment, organism=organism ) - return experiment_object, [sample_object] + return sample @staticmethod def update_sample_protocol_info(existing_protocols, experiment_protocol, experiment_url): @@ -569,16 +395,23 @@ def update_sample_protocol_info(existing_protocols, experiment_protocol, experim may or may not have been updated) and the second is a boolean indicating whether exisiting_protocols has been updated. """ + # ensure we are working with a list + # since the default value for a JSON field is an empty dict + existing_protocols_list = [] + if existing_protocols is not {}: + existing_protocols_list = existing_protocols if experiment_protocol == "Protocol was never provided.": - return (existing_protocols, False) + return (existing_protocols_list, False) - existing_descriptions = [protocol["Description"] for protocol in existing_protocols] + existing_descriptions = [protocol["Description"] for protocol in existing_protocols_list] if experiment_protocol in existing_descriptions: - return (existing_protocols, False) + return (existing_protocols_list, False) - existing_protocols.append({"Description": experiment_protocol, "Reference": experiment_url}) - return (existing_protocols, True) + existing_protocols_list.append( + {"Description": experiment_protocol, "Reference": experiment_url} + ) + return (existing_protocols_list, True) def discover_experiment_and_samples(self): """Returns an experiment and a list of samples for an SRA accession""" @@ -586,68 +419,5 @@ def discover_experiment_and_samples(self): survey_job_properties = survey_job.get_properties() accession = survey_job_properties["experiment_accession_code"] - # SRA Surveyor is mainly designed for SRRs, this handles SRPs - if "SRP" in accession or "ERP" in accession or "DRP" in accession: - response = utils.requests_retry_session().get( - ENA_METADATA_URL_TEMPLATE.format(accession) - ) - - # If the status code is 404, then SRA doesn't know about this accession - if response.status_code == 404: - return None, None - - experiment_xml = ET.fromstring(response.text)[0] - study_links = experiment_xml[2] # STUDY_LINKS - - accessions_to_run = [] - for child in study_links: - if child[0][0].text == "ENA-RUN": - all_runs = child[0][1].text - - # Ranges can be disjoint, separated by commas - run_segments = all_runs.split(",") - for segment in run_segments: - if "-" in segment: - start, end = segment.split("-") - else: - start = segment - end = segment - start_id = start[3::] - end_id = end[3::] - - for run_id in range(int(start_id), int(end_id) + 1): - run_id = str(run_id).zfill(len(start_id)) - accessions_to_run.append(accession[0] + "RR" + run_id) - break - - experiment = None - all_samples = [] - for run_id in accessions_to_run: - logger.debug( - "Surveying SRA Run Accession %s for Experiment %s", - run_id, - accession, - survey_job=self.survey_job.id, - ) - - returned_experiment, samples = self._generate_experiment_and_samples( - run_id, accession - ) - - # Some runs may return (None, None). If this happens - # we don't want to set experiment to None. - if returned_experiment: - experiment = returned_experiment - - if samples: - all_samples += samples - - # So we prevent duplicate downloads, ex for SRP111553 - all_samples = list(set(all_samples)) - - # Experiment will always be the same - return experiment, all_samples - - else: - logger.debug("Surveying SRA Run Accession %s", accession, survey_job=self.survey_job.id) - return self._generate_experiment_and_samples(accession) + logger.debug("Surveying SRA Accession %s", accession, survey_job=self.survey_job.id) + return self._generate_experiment_and_samples(accession) From bd4396455354baad89ee741c305c8766da73acc5 Mon Sep 17 00:00:00 2001 From: David Mejia Date: Fri, 14 Jul 2023 14:52:19 -0400 Subject: [PATCH 163/220] update tests for new ENA response --- foreman/tests/surveyor/test_sra.py | 115 +++++++++++++++-------------- 1 file changed, 58 insertions(+), 57 deletions(-) diff --git a/foreman/tests/surveyor/test_sra.py b/foreman/tests/surveyor/test_sra.py index 4a6a89234..15da5ddbc 100644 --- a/foreman/tests/surveyor/test_sra.py +++ b/foreman/tests/surveyor/test_sra.py @@ -184,78 +184,66 @@ def test_arrayexpress_alternate_accession(self): ) def test_metadata_is_gathered_correctly(self): - metadata = SraSurveyor.gather_all_metadata("DRR002116") + _, samples_metadata = SraSurveyor.gather_all_metadata("DRR002116") - self.assertEqual(metadata["broker_name"], "DDBJ") - self.assertEqual(metadata["center_name"], "RIKEN_CDB") - self.assertEqual(metadata["ena-base-count"], "158881910957") - self.assertEqual(metadata["ena-spot-count"], "1371813555") - self.assertEqual(metadata["experiment_accession"], "DRX001563") - self.assertEqual( - metadata["experiment_design_description"], - ("Experiment for mRNAseq of chicken at stage " "HH16 (biological replicate 1)"), - ) + sample_metadata = samples_metadata[0] + self.assertEqual(sample_metadata["broker_name"], "") # used to be DDBJ + self.assertEqual(sample_metadata["center_name"], "RIKEN_CDB") + self.assertEqual(sample_metadata["experiment_accession"], "DRX001563") self.assertEqual( - metadata["experiment_title"], - ("Illumina HiSeq 2000 sequencing; " "Exp_Gg_HH16_1_embryo_mRNAseq"), + sample_metadata["characteristics_sample_comment_0_text"], + "mRNAseq of chicken at stage HH16 (biological replicate 1)", ) self.assertEqual( - metadata["lab_name"], + sample_metadata["experiment_title"], ( - "Group for Morphological Evolution, Center for Developmental " - "Biology, Kobe Institute, RIKEN" + "Illumina HiSeq 2000 sequencing; " + "Exp_Gg_HH16_1_embryo_mRNAseq;" + "Exp_Gg_HH16_1_embryo_mRNAseq" ), ) - self.assertEqual(metadata["library_layout"], "SINGLE") - self.assertEqual(metadata["library_name"], "Gg_HH16_1_embryo_mRNAseq") - self.assertEqual(metadata["library_selection"], "RANDOM") - self.assertEqual(metadata["library_source"], "TRANSCRIPTOMIC") - self.assertEqual(metadata["library_strategy"], "RNA-Seq") - self.assertEqual(metadata["organism_id"], "9031") - self.assertEqual(metadata["organism_name"], "GALLUS GALLUS") - self.assertEqual(metadata["platform_instrument_model"], "Illumina HiSeq 2000") - self.assertEqual(metadata["read_spec_0_base_coord"], "1") - self.assertEqual(metadata["read_spec_0_class"], "Application Read") - self.assertEqual(metadata["read_spec_0_index"], "0") - self.assertEqual(metadata["read_spec_0_type"], "Forward") - self.assertEqual(metadata["run_accession"], "DRR002116") - self.assertEqual(metadata["run_center"], "RIKEN_CDB") - self.assertEqual(metadata["run_date"], "2011-09-01T00:00:00+09:00") - self.assertEqual(metadata["run_ena_base_count"], "3256836000") - self.assertEqual(metadata["run_ena_first_public"], "2013-07-19") - self.assertEqual(metadata["run_ena_last_update"], "2017-08-11") - self.assertEqual(metadata["run_ena_spot_count"], "32568360") - self.assertEqual(metadata["sample_accession"], "DRS001521") self.assertEqual( - metadata["sample_center_name"], + sample_metadata["study_ena_center_name"], + "RIKEN Center for Developmental Biology", + ) + self.assertEqual(sample_metadata["library_layout"], "SINGLE") + self.assertEqual(sample_metadata["library_name"], "Gg_HH16_1_embryo_mRNAseq") + self.assertEqual(sample_metadata["library_selection"], "RANDOM") + self.assertEqual(sample_metadata["library_source"], "TRANSCRIPTOMIC") + self.assertEqual(sample_metadata["library_strategy"], "RNA-Seq") + self.assertEqual(sample_metadata["tax_id"], "9031") # aka organism_id + self.assertEqual(sample_metadata["scientific_name"], "Gallus gallus") # aka organism_name + self.assertEqual( + sample_metadata["instrument_model"], "Illumina HiSeq 2000" + ) # aka platform_instrument_model + self.assertEqual(sample_metadata["run_accession"], "DRR002116") + self.assertEqual(sample_metadata["run_date"], "1314831600000") + self.assertEqual(sample_metadata["base_count"], "3256836000") + self.assertEqual(sample_metadata["first_public"], "2013-07-19") + self.assertEqual(sample_metadata["last_updated"], "2017-08-11") + self.assertEqual(sample_metadata["read_count"], "32568360") + self.assertEqual(sample_metadata["secondary_sample_accession"], "DRS001521") + self.assertEqual( + sample_metadata["characteristics_INSDC_center_name_0_text"], "Group for Morphological Evolution, Center for Developmental Biology, Kobe Institute, RIKEN", ) - self.assertEqual(metadata["sample_ena_first_public"], "2013-02-27") - self.assertEqual(metadata["sample_ena_last_update"], "2014-11-12") self.assertEqual( - metadata["sample_sample_comment"], - ("mRNAseq of chicken at stage HH16 (biological " "replicate 1)"), + sample_metadata["characteristics_INSDC_first_public_0_text"], "2013-02-27T00:00:00Z" ) - self.assertEqual(metadata["sample_sample_name"], "DRS001521") - self.assertEqual(metadata["sample_title"], "Gg_HH16_1_embryo_mRNAseq") - self.assertEqual(metadata["spot_length"], "100") - self.assertEqual(metadata["study_ena_first_public"], "2013-07-19") - self.assertEqual(metadata["study_ena_last_update"], "2015-06-22") - self.assertEqual(metadata["study_accession"], "DRP000595") - self.assertEqual(metadata["submission_accession"], "DRA000567") self.assertEqual( - metadata["submission_comment"], - ( - "Time course gene expression profiles of turtle " - "(Pelodiscus sinensis) and chicken (Gallus gallus) " - "embryos were examined. Whole transcriptome of turtle " - "was also determined by uding stranded sequencing " - "methods." - ), + sample_metadata["characteristics_sample_comment_0_text"], + "mRNAseq of chicken at stage HH16 (biological replicate 1)", + ) + self.assertEqual(sample_metadata["secondary_sample_accession"], "DRS001521") + self.assertEqual( + sample_metadata["characteristics_title_0_text"], "Gg_HH16_1_embryo_mRNAseq" ) - self.assertEqual(metadata["submission_title"], "Submitted by RIKEN_CDB on 19-JUL-2013") + self.assertEqual(sample_metadata["study_ena_first_public"], "2013-12-14") + self.assertEqual(sample_metadata["study_ena_last_updated"], "2023-05-19") + self.assertEqual(sample_metadata["secondary_study_accession"], "DRP000595") + self.assertEqual(sample_metadata["submission_accession"], "DRA000567") - ncbi_url = SraSurveyor._build_ncbi_file_url(metadata["run_accession"]) + ncbi_url = SraSurveyor._build_ncbi_file_url(sample_metadata["run_accession"]) self.assertEqual( ncbi_url, "https://sra-pub-run-odp.s3.amazonaws.com/sra/DRR002116/DRR002116" ) @@ -279,3 +267,16 @@ def test_sra_metadata_is_harmonized(self): ) self.assertEqual(experiment.source_first_published, datetime.date(2017, 8, 25)) self.assertEqual(experiment.source_last_modified, datetime.date(2023, 5, 19)) + + def test_sra_ena_api_endpoint_construction(self): + expected_filereport_url = "https://www.ebi.ac.uk/ena/portal/api/filereport/?format=json&accession=SRP047410&result=read_run" + filereport_url = SraSurveyor.get_ena_json_api( + "filereport", "SRP047410", {"result": "read_run"} + ) + self.assertEqual(expected_filereport_url, filereport_url) + + expected_metadata_url = ( + "https://www.ebi.ac.uk/ena/portal/api/search/?format=json&accession=SRP047410" + ) + metadata_url = SraSurveyor.get_ena_json_api("search", "SRP047410", {}) + self.assertEquual(expected_metadata_url, metadata_url) From e31aed0fb5463d5634378c514511417bc123d2c0 Mon Sep 17 00:00:00 2001 From: David Mejia Date: Fri, 14 Jul 2023 15:12:23 -0400 Subject: [PATCH 164/220] key_strings as set --- foreman/data_refinery_foreman/surveyor/harmony.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/foreman/data_refinery_foreman/surveyor/harmony.py b/foreman/data_refinery_foreman/surveyor/harmony.py index f706df68e..7cf178fcc 100644 --- a/foreman/data_refinery_foreman/surveyor/harmony.py +++ b/foreman/data_refinery_foreman/surveyor/harmony.py @@ -768,7 +768,7 @@ def harmonize_field( harmonized_values = set() key_variants = getattr(self, variants_attribute) key_regexes = [r for r in key_variants if isinstance(r, RE_TYPE)] - key_strings = [s for s in key_variants if isinstance(s, str)] + key_strings = set([s for s in key_variants if isinstance(s, str)]) for key, value in sample_metadata.items(): lower_key = key.lower().strip() From e9876b2aabd14a2fa1b53955649b839f6245671b Mon Sep 17 00:00:00 2001 From: David Mejia Date: Mon, 17 Jul 2023 10:27:07 -0400 Subject: [PATCH 165/220] add test for pubmed metadata --- foreman/data_refinery_foreman/surveyor/sra.py | 3 +- foreman/tests/surveyor/test_sra.py | 30 +++++++++++++++++++ 2 files changed, 31 insertions(+), 2 deletions(-) diff --git a/foreman/data_refinery_foreman/surveyor/sra.py b/foreman/data_refinery_foreman/surveyor/sra.py index bff26a741..9491a4999 100644 --- a/foreman/data_refinery_foreman/surveyor/sra.py +++ b/foreman/data_refinery_foreman/surveyor/sra.py @@ -179,7 +179,7 @@ def gather_all_metadata(accession: str): experiment_metadata["accession"] ) if len(pubmed_metadata) > 0: - experiment_metadata["pubmed_id"] = pubmed_metadata["Source Primary Accession"] + experiment_metadata["pubmed_id"] = pubmed_metadata[0]["Source Primary Accession"] for sample_metadata in samples_metadata: sample_metadata.update(utils.flatten_dict(experiment_metadata, "study_ena")) @@ -215,7 +215,6 @@ def _apply_metadata_to_experiment(experiment: Experiment, metadata: dict): experiment.alternate_accession_code = utils.get_nonempty(metadata, "geo_accession", None) experiment.protocol_description = utils.get_nonempty(metadata, "protocol", []) - # need pubmed_id experiment.pubmed_id = metadata.get("pubmed_id", "") experiment.has_publication = "pubmed_id" in metadata # Scrape publication title and authorship from Pubmed diff --git a/foreman/tests/surveyor/test_sra.py b/foreman/tests/surveyor/test_sra.py index 15da5ddbc..b177553db 100644 --- a/foreman/tests/surveyor/test_sra.py +++ b/foreman/tests/surveyor/test_sra.py @@ -268,6 +268,36 @@ def test_sra_metadata_is_harmonized(self): self.assertEqual(experiment.source_first_published, datetime.date(2017, 8, 25)) self.assertEqual(experiment.source_last_modified, datetime.date(2023, 5, 19)) + def test_sra_pubmed_metdata_is_applied(self): + experiment_metadata, _ = SraSurveyor.gather_all_metadata("SRR3098582") + + experiment = Experiment() + SraSurveyor._apply_metadata_to_experiment(experiment, experiment_metadata) + self.assertEqual(experiment.pubmed_id, "27102575") + self.assertEqual(experiment.has_publication, True) + self.assertEqual( + experiment.publication_title, + "Glutathione antioxidant pathway activity and reserve determine toxicity and specificity of the biliary toxin biliatresone in zebrafish.", + ) + self.assertEqual( + experiment.publication_authors, + [ + "Zhao X", + "Lorent K", + "Wilkins BJ", + "Marchione DM", + "Gillespie K", + "Waisbourd-Zinman O", + "So J", + "Koo KA", + "Shin D", + "Porter JR", + "Wells RG", + "Blair I", + "Pack M", + ], + ) + def test_sra_ena_api_endpoint_construction(self): expected_filereport_url = "https://www.ebi.ac.uk/ena/portal/api/filereport/?format=json&accession=SRP047410&result=read_run" filereport_url = SraSurveyor.get_ena_json_api( From 6a28c93498251d41e60fab0ac842df7ca361fe79 Mon Sep 17 00:00:00 2001 From: David Mejia Date: Mon, 17 Jul 2023 10:31:07 -0400 Subject: [PATCH 166/220] set comprehension notation --- foreman/data_refinery_foreman/surveyor/harmony.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/foreman/data_refinery_foreman/surveyor/harmony.py b/foreman/data_refinery_foreman/surveyor/harmony.py index 7cf178fcc..d1194f1f3 100644 --- a/foreman/data_refinery_foreman/surveyor/harmony.py +++ b/foreman/data_refinery_foreman/surveyor/harmony.py @@ -768,7 +768,7 @@ def harmonize_field( harmonized_values = set() key_variants = getattr(self, variants_attribute) key_regexes = [r for r in key_variants if isinstance(r, RE_TYPE)] - key_strings = set([s for s in key_variants if isinstance(s, str)]) + key_strings = {s for s in key_variants if isinstance(s, str)} for key, value in sample_metadata.items(): lower_key = key.lower().strip() From b2363f1f5923c9e5cac63238576c212ac5a086e0 Mon Sep 17 00:00:00 2001 From: David Mejia Date: Mon, 17 Jul 2023 10:48:29 -0400 Subject: [PATCH 167/220] fix typo --- foreman/data_refinery_foreman/surveyor/harmony.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/foreman/data_refinery_foreman/surveyor/harmony.py b/foreman/data_refinery_foreman/surveyor/harmony.py index f706df68e..f22496acb 100644 --- a/foreman/data_refinery_foreman/surveyor/harmony.py +++ b/foreman/data_refinery_foreman/surveyor/harmony.py @@ -570,7 +570,7 @@ def __init__(self): "sex", "gender", "subject gender", - "subjext sex", + "subject sex", # This looks reduntant, but there are some samples which use # Characteristic[Characteristic[sex]] "characteristic [sex]", From f6847e681cac2874d17f63182aab393a07e67f63 Mon Sep 17 00:00:00 2001 From: David Date: Mon, 17 Jul 2023 10:52:13 -0400 Subject: [PATCH 168/220] type hint accession Co-authored-by: Joshua Shapiro --- foreman/data_refinery_foreman/surveyor/sra.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/foreman/data_refinery_foreman/surveyor/sra.py b/foreman/data_refinery_foreman/surveyor/sra.py index 9491a4999..c4e20b690 100644 --- a/foreman/data_refinery_foreman/surveyor/sra.py +++ b/foreman/data_refinery_foreman/surveyor/sra.py @@ -54,7 +54,7 @@ def source_type(self): return Downloaders.SRA.value @staticmethod - def get_ena_json_api(endpoint: str, accession, params: dict = {}): + def get_ena_json_api(endpoint: str, accession: str, params: dict = {}): query_params = "&".join([f"{k}={params[k]}" for k in params]) if query_params: From d7abfbddd45a96091844252b98adbc0b7c20aea3 Mon Sep 17 00:00:00 2001 From: David Date: Mon, 17 Jul 2023 10:52:37 -0400 Subject: [PATCH 169/220] type hint separator Co-authored-by: Joshua Shapiro --- foreman/data_refinery_foreman/surveyor/utils.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/foreman/data_refinery_foreman/surveyor/utils.py b/foreman/data_refinery_foreman/surveyor/utils.py index 7992dac33..33b47efcf 100644 --- a/foreman/data_refinery_foreman/surveyor/utils.py +++ b/foreman/data_refinery_foreman/surveyor/utils.py @@ -46,7 +46,7 @@ def flatten(d, parent_key="", sep="_"): # TODO: Merge this with above method after updating array express # to support recursive flattening. -def flatten_dict(data: Union[Dict, List], prefix: str = "", sep="_") -> dict: +def flatten_dict(data: Union[Dict, List], prefix: str = "", sep: str = "_") -> dict: """Flattens a nested dictionary or list""" flattened = {} iterator = enumerate(data) if isinstance(data, list) else data.items() From cf7afca49a8c5fe2d8c53e565f978ca77e22fec6 Mon Sep 17 00:00:00 2001 From: David Date: Mon, 17 Jul 2023 11:08:40 -0400 Subject: [PATCH 170/220] pass multiple types to check Co-authored-by: Arkadii Yakovets --- foreman/data_refinery_foreman/surveyor/utils.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/foreman/data_refinery_foreman/surveyor/utils.py b/foreman/data_refinery_foreman/surveyor/utils.py index 33b47efcf..7fcd8f025 100644 --- a/foreman/data_refinery_foreman/surveyor/utils.py +++ b/foreman/data_refinery_foreman/surveyor/utils.py @@ -53,7 +53,7 @@ def flatten_dict(data: Union[Dict, List], prefix: str = "", sep: str = "_") -> d for k, v in iterator: key = (k if not prefix else f"{prefix}{sep}{k}").replace(" ", sep) - if isinstance(v, dict) or isinstance(v, list): + if isinstance(v, (dict, list)): flattened.update(flatten_dict(v, key)) else: flattened[key] = v From 34f6c27392a329203b3ba0b940c87ee6769b09d3 Mon Sep 17 00:00:00 2001 From: David Date: Mon, 17 Jul 2023 11:09:24 -0400 Subject: [PATCH 171/220] use short circuit Co-authored-by: Arkadii Yakovets --- foreman/data_refinery_foreman/surveyor/utils.py | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/foreman/data_refinery_foreman/surveyor/utils.py b/foreman/data_refinery_foreman/surveyor/utils.py index 7fcd8f025..5d7b1ec2b 100644 --- a/foreman/data_refinery_foreman/surveyor/utils.py +++ b/foreman/data_refinery_foreman/surveyor/utils.py @@ -62,9 +62,7 @@ def flatten_dict(data: Union[Dict, List], prefix: str = "", sep: str = "_") -> d def get_nonempty(hash: dict, key: str, fallback): - if key in hash and hash[key]: - return hash[key] - return fallback + return hash.get(key) or fallback def get_title_and_authors_for_pubmed_id(pmid): From 2ab11ff39a24ad40aa6206f6cf62f7b1b4d822df Mon Sep 17 00:00:00 2001 From: David Date: Mon, 17 Jul 2023 14:50:55 -0400 Subject: [PATCH 172/220] fstring interpolation Co-authored-by: Joshua Shapiro --- foreman/data_refinery_foreman/surveyor/sra.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/foreman/data_refinery_foreman/surveyor/sra.py b/foreman/data_refinery_foreman/surveyor/sra.py index c4e20b690..8a3181e7a 100644 --- a/foreman/data_refinery_foreman/surveyor/sra.py +++ b/foreman/data_refinery_foreman/surveyor/sra.py @@ -70,7 +70,7 @@ def get_ena_json_api_response(endpoint: str, accession, params: dict = {}): # handle logging of errors here consistently if response.status_code != 200: logger.error( - "Could not discover {}.".format(endpoint), + f"Could not discover {endpoint}.", accession=accession, status_code=response.status_code, url=response.url, From bd7be129d4d2eb30203f12c170e25b73818265bb Mon Sep 17 00:00:00 2001 From: David Mejia Date: Mon, 17 Jul 2023 14:52:38 -0400 Subject: [PATCH 173/220] instrument_platform is manufacturer --- foreman/data_refinery_foreman/surveyor/sra.py | 12 ++---------- 1 file changed, 2 insertions(+), 10 deletions(-) diff --git a/foreman/data_refinery_foreman/surveyor/sra.py b/foreman/data_refinery_foreman/surveyor/sra.py index c4e20b690..c6c06058f 100644 --- a/foreman/data_refinery_foreman/surveyor/sra.py +++ b/foreman/data_refinery_foreman/surveyor/sra.py @@ -338,23 +338,15 @@ def _generate_sample(self, experiment: Experiment, sample_metadata: dict) -> Sam if sample_created: sample.source_database = "SRA" sample.organism = organism + sample.manufacturer = sample_metadata.get("instrument_platform", "UNKNOWN") sample.platform_name = sample_metadata.get("instrument_model", "UNKNOWN") - # The platform_name is human readable and contains spaces, - # accession codes shouldn't have spaces though: sample.platform_accession_code = sample.platform_name.replace(" ", "") sample.technology = "RNA-SEQ" - platform_name = sample.platform_name.upper() - if platform_name in ["ILLUMINA", "NEXTSEQ"]: - sample.manufacturer = "ILLUMINA" - elif "ION TORRENT" in platform_name: - sample.manufacturer = "ION_TORRENT" - else: - sample.manufacturer = "UNKNOWN" - SraSurveyor._apply_harmonized_metadata_to_sample(sample, sample_metadata) self._generate_original_files(sample, sample_metadata) + sample.save() else: logger.debug( From 6c4f92a0ec3d6feb608af72bf06949bd2a717df3 Mon Sep 17 00:00:00 2001 From: David Mejia Date: Mon, 17 Jul 2023 15:49:49 -0400 Subject: [PATCH 174/220] add edge case check back --- foreman/data_refinery_foreman/surveyor/sra.py | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/foreman/data_refinery_foreman/surveyor/sra.py b/foreman/data_refinery_foreman/surveyor/sra.py index 2bd22a133..379b1e464 100644 --- a/foreman/data_refinery_foreman/surveyor/sra.py +++ b/foreman/data_refinery_foreman/surveyor/sra.py @@ -343,6 +343,13 @@ def _generate_sample(self, experiment: Experiment, sample_metadata: dict) -> Sam sample.platform_accession_code = sample.platform_name.replace(" ", "") sample.technology = "RNA-SEQ" + # In the rare case that we get something we don't expect + # we don't want to process this sample so we can set it to UNKNOWN. + if sample.manufacturer not in ["ILLUMINA", "ION_TORRENT"]: + sample.manufacturer = "UNKNOWN" + sample.platform_name = "UNKNOWN" + sample.platform_accession_code = "UNKNOWN" + SraSurveyor._apply_harmonized_metadata_to_sample(sample, sample_metadata) self._generate_original_files(sample, sample_metadata) From 36efa6bab21dbffcaf15366517f62169adb954b2 Mon Sep 17 00:00:00 2001 From: Arkadii Yakovets Date: Mon, 17 Jul 2023 14:52:54 -0700 Subject: [PATCH 175/220] Update tests running scripts - Use versioned docker images - Exclude tests from coverage run --- .github/workflows/config.yml | 70 -------------------- api/dockerfiles/Dockerfile.api_base | 1 + api/run_tests.sh | 3 +- common/dockerfiles/Dockerfile.base | 3 + common/dockerfiles/Dockerfile.common_tests | 1 - common/dockerfiles/Dockerfile.migrations | 1 - common/run_tests.sh | 3 +- foreman/dockerfiles/Dockerfile.foreman | 1 - foreman/run_tests.sh | 3 +- scripts/common.sh | 15 +++-- scripts/prepare_image.sh | 10 ++- setup.cfg | 11 +-- workers/dockerfiles/Dockerfile.affymetrix | 1 - workers/dockerfiles/Dockerfile.compendia | 1 + workers/dockerfiles/Dockerfile.downloaders | 1 - workers/dockerfiles/Dockerfile.illumina | 1 - workers/dockerfiles/Dockerfile.no_op | 1 - workers/dockerfiles/Dockerfile.salmon | 1 - workers/dockerfiles/Dockerfile.smasher | 1 - workers/dockerfiles/Dockerfile.transcriptome | 1 - workers/run_tests.sh | 4 +- 21 files changed, 35 insertions(+), 99 deletions(-) diff --git a/.github/workflows/config.yml b/.github/workflows/config.yml index 902cd0765..11197af48 100644 --- a/.github/workflows/config.yml +++ b/.github/workflows/config.yml @@ -197,16 +197,6 @@ jobs: - name: Build the Docker Image run: scripts/prepare_image.sh -i base -s common - - name: Login to Packages Container Registry - uses: docker/login-action@v2 - with: - registry: ghcr.io - username: ${{ github.actor }} - password: ${{ secrets.GITHUB_TOKEN }} - - - name: Push Built Docker Images - run: .github/scripts/push_docker_images.sh - test_common: name: Test Common env: @@ -248,16 +238,6 @@ jobs: common/run_tests.sh .github/scripts/upload_test_coverage.sh common - - name: Login to Packages Container Registry - uses: docker/login-action@v2 - with: - registry: ghcr.io - username: ${{ github.actor }} - password: ${{ secrets.GITHUB_TOKEN }} - - - name: Push Built Docker Images - run: .github/scripts/push_docker_images.sh - test_downloaders_no_op: name: Test Downloaders and No-Op env: @@ -336,16 +316,6 @@ jobs: foreman/run_tests.sh --exclude-tag=end_to_end .github/scripts/upload_test_coverage.sh foreman - - name: Login to Packages Container Registry - uses: docker/login-action@v2 - with: - registry: ghcr.io - username: ${{ github.actor }} - password: ${{ secrets.GITHUB_TOKEN }} - - - name: Push Built Docker Images - run: .github/scripts/push_docker_images.sh - test_illumina: name: Test Illumina env: @@ -381,16 +351,6 @@ jobs: .github/scripts/filter_tests.sh -t illumina .github/scripts/upload_test_coverage.sh workers - - name: Login to Packages Container Registry - uses: docker/login-action@v2 - with: - registry: ghcr.io - username: ${{ github.actor }} - password: ${{ secrets.GITHUB_TOKEN }} - - - name: Push Built Docker Images - run: .github/scripts/push_docker_images.sh - test_salmon: name: Test Salmon env: @@ -425,16 +385,6 @@ jobs: .github/scripts/filter_tests.sh -t salmon .github/scripts/upload_test_coverage.sh workers - - name: Login to Packages Container Registry - uses: docker/login-action@v2 - with: - registry: ghcr.io - username: ${{ github.actor }} - password: ${{ secrets.GITHUB_TOKEN }} - - - name: Push Built Docker Images - run: .github/scripts/push_docker_images.sh - test_smasher: name: Test Smasher env: @@ -488,16 +438,6 @@ jobs: .github/scripts/filter_tests.sh -t qn .github/scripts/upload_test_coverage.sh workers - - name: Login to Packages Container Registry - uses: docker/login-action@v2 - with: - registry: ghcr.io - username: ${{ github.actor }} - password: ${{ secrets.GITHUB_TOKEN }} - - - name: Push Built Docker Images - run: .github/scripts/push_docker_images.sh - test_transcriptome: name: Test Transcriptome env: @@ -534,16 +474,6 @@ jobs: .github/scripts/filter_tests.sh -t transcriptome .github/scripts/upload_test_coverage.sh workers - - name: Login to Packages Container Registry - uses: docker/login-action@v2 - with: - registry: ghcr.io - username: ${{ github.actor }} - password: ${{ secrets.GITHUB_TOKEN }} - - - name: Push Built Docker Images - run: .github/scripts/push_docker_images.sh - # Deploy jobs. deploy: name: Deploy diff --git a/api/dockerfiles/Dockerfile.api_base b/api/dockerfiles/Dockerfile.api_base index d1d751104..44bf4c787 100644 --- a/api/dockerfiles/Dockerfile.api_base +++ b/api/dockerfiles/Dockerfile.api_base @@ -23,6 +23,7 @@ RUN pip install --ignore-installed \ COPY api/ . COPY config/ config/ +COPY setup.cfg . ENV SYSTEM_VERSION=$SYSTEM_VERSION diff --git a/api/run_tests.sh b/api/run_tests.sh index f4353c679..0b4072131 100755 --- a/api/run_tests.sh +++ b/api/run_tests.sh @@ -35,6 +35,7 @@ if [ ! -d "$volume_directory" ]; then fi chmod -R a+rwX "$volume_directory" +./scripts/prepare_image.sh -i api_base -s api ./scripts/prepare_image.sh -i api_local -s api . ./scripts/common.sh @@ -56,5 +57,5 @@ docker run \ --tty \ --volume "$volume_directory":/home/user/data_store \ $INTERACTIVE \ - "$DOCKERHUB_REPO/dr_api_local" \ + "$DOCKERHUB_REPO/dr_api_local:$SYSTEM_VERSION" \ bash -c "$(run_tests_with_coverage "$@")" diff --git a/common/dockerfiles/Dockerfile.base b/common/dockerfiles/Dockerfile.base index 13987e894..ef5d13c3b 100644 --- a/common/dockerfiles/Dockerfile.base +++ b/common/dockerfiles/Dockerfile.base @@ -66,4 +66,7 @@ RUN apt-get update && \ ENV R_LIBS=/usr/local/lib/R/site-library +COPY config/ config/ +COPY setup.cfg . + ENTRYPOINT [] diff --git a/common/dockerfiles/Dockerfile.common_tests b/common/dockerfiles/Dockerfile.common_tests index 26b2be946..d914a52f0 100644 --- a/common/dockerfiles/Dockerfile.common_tests +++ b/common/dockerfiles/Dockerfile.common_tests @@ -15,7 +15,6 @@ COPY common/requirements.txt . RUN pip3 install --ignore-installed --no-cache-dir -r requirements.txt COPY common/ . -COPY config config ENV SYSTEM_VERSION=$SYSTEM_VERSION diff --git a/common/dockerfiles/Dockerfile.migrations b/common/dockerfiles/Dockerfile.migrations index da2405265..516ce642b 100644 --- a/common/dockerfiles/Dockerfile.migrations +++ b/common/dockerfiles/Dockerfile.migrations @@ -11,7 +11,6 @@ COPY common/requirements.txt . RUN pip install --ignore-installed --no-cache-dir -r requirements.txt COPY common/ . -COPY config config ENV SYSTEM_VERSION=$SYSTEM_VERSION diff --git a/common/run_tests.sh b/common/run_tests.sh index 41eb8e3d1..25af0edb3 100755 --- a/common/run_tests.sh +++ b/common/run_tests.sh @@ -28,6 +28,7 @@ if [ ! -d "$volume_directory" ]; then fi chmod -R a+rwX "$volume_directory" +./scripts/prepare_image.sh -i base -s common ./scripts/prepare_image.sh -i common_tests -s common . ./scripts/common.sh @@ -49,5 +50,5 @@ docker run \ --tty \ --volume "$volume_directory":/home/user/data_store \ $INTERACTIVE \ - "$DOCKERHUB_REPO/dr_common_tests" \ + "$DOCKERHUB_REPO/dr_common_tests:$SYSTEM_VERSION" \ bash -c "$(run_tests_with_coverage "$@")" --parallel diff --git a/foreman/dockerfiles/Dockerfile.foreman b/foreman/dockerfiles/Dockerfile.foreman index 89e3611f0..026f5159f 100644 --- a/foreman/dockerfiles/Dockerfile.foreman +++ b/foreman/dockerfiles/Dockerfile.foreman @@ -21,7 +21,6 @@ RUN pip3 install --ignore-installed --no-cache-dir \ common/$(ls common -1 | sort --version-sort | tail -1) COPY .boto .boto -COPY config config COPY foreman/ . ENV SYSTEM_VERSION=$SYSTEM_VERSION diff --git a/foreman/run_tests.sh b/foreman/run_tests.sh index f0ae37de4..7ec565510 100755 --- a/foreman/run_tests.sh +++ b/foreman/run_tests.sh @@ -32,6 +32,7 @@ if ! [ "$(docker ps --filter name=drdb -q)" ]; then exit 1 fi +./scripts/prepare_image.sh -i base -s common ./scripts/prepare_image.sh -i foreman -s foreman . ./scripts/common.sh @@ -51,5 +52,5 @@ docker run \ --tty \ --volume "$volume_directory":/home/user/data_store \ $INTERACTIVE \ - "$DOCKERHUB_REPO/dr_foreman" \ + "$DOCKERHUB_REPO/dr_foreman:$SYSTEM_VERSION" \ bash -c "$(run_tests_with_coverage --exclude-tag=manual "$@")" diff --git a/scripts/common.sh b/scripts/common.sh index b30416abc..f995b801a 100755 --- a/scripts/common.sh +++ b/scripts/common.sh @@ -6,11 +6,6 @@ export ALL_IMAGES="smasher compendia illumina affymetrix salmon transcriptome no # Sometimes we only want to work with the worker images. export WORKER_IMAGES="smasher compendia illumina affymetrix salmon transcriptome no_op downloaders" -# Default Docker registry. -if [ -z "$DOCKERHUB_REPO" ]; then - export DOCKERHUB_REPO="ccdlstaging" -fi - # This function checks whether a given docker image name ($1:$2) # exists in Docker Hub or not using Docker Hub API V2. Based on: # https://stackoverflow.com/questions/32113330/check-if-imagetag-combination-already-exists-on-docker-hub @@ -118,3 +113,13 @@ EOF echo "Using Docker builder $DOCKER_BUILDER." docker buildx use "$DOCKER_BUILDER" } + +# Default Docker registry. +if [ -z "$DOCKERHUB_REPO" ]; then + export DOCKERHUB_REPO="ccdlstaging" +fi + +# Defaults to commit hash value for if we're not running in the cloud. +if [ -z "$SYSTEM_VERSION" ]; then + SYSTEM_VERSION="$(get_branch_hash)" +fi diff --git a/scripts/prepare_image.sh b/scripts/prepare_image.sh index d9a49c68d..4aee4b79e 100755 --- a/scripts/prepare_image.sh +++ b/scripts/prepare_image.sh @@ -86,7 +86,7 @@ if [ -z "$SYSTEM_VERSION" ]; then fi if [ -z "$DOCKER_ACTION" ]; then - DOCKER_ACTION="--load" + DOCKER_ACTION="--push" fi DOCKERHUB_IMAGE="$DOCKERHUB_REPO/dr_$IMAGE_NAME" @@ -141,8 +141,6 @@ if [ $finished -ne 0 ] && [ $attempt -ge $attempts ]; then exit 1 fi -if test "$GITHUB_ACTION"; then - docker pull \ - --platform linux/amd64 \ - "$DOCKERHUB_IMAGE" -fi +docker pull \ + --platform linux/amd64 \ + "$DOCKERHUB_IMAGE:$SYSTEM_VERSION" diff --git a/setup.cfg b/setup.cfg index 8b9a8a747..a4b2eb30b 100644 --- a/setup.cfg +++ b/setup.cfg @@ -1,8 +1,11 @@ -[coverage:report] -include = - data_refinery_api/* +[coverage:run] omit = - data_refinery_api/wsgi.py + tests/* + manage.py + settings.py + setup.py + urls.py + wsgi.py [pep8] max-line-length = 100 diff --git a/workers/dockerfiles/Dockerfile.affymetrix b/workers/dockerfiles/Dockerfile.affymetrix index 8dad322b3..69983d365 100644 --- a/workers/dockerfiles/Dockerfile.affymetrix +++ b/workers/dockerfiles/Dockerfile.affymetrix @@ -23,7 +23,6 @@ RUN pip3 install --ignore-installed --no-cache-dir \ common/$(ls common -1 | sort --version-sort | tail -1) COPY .boto .boto -COPY config/ config/ COPY workers/ . RUN rm -rf /root/.cache/* diff --git a/workers/dockerfiles/Dockerfile.compendia b/workers/dockerfiles/Dockerfile.compendia index 371abf2c7..23957c892 100644 --- a/workers/dockerfiles/Dockerfile.compendia +++ b/workers/dockerfiles/Dockerfile.compendia @@ -92,6 +92,7 @@ RUN pip3 install --ignore-installed --no-cache-dir \ COPY .boto .boto COPY config/ config/ +COPY setup.cfg . COPY workers/ . RUN rm -rf /root/.cache/* diff --git a/workers/dockerfiles/Dockerfile.downloaders b/workers/dockerfiles/Dockerfile.downloaders index 5361db49f..284203b35 100644 --- a/workers/dockerfiles/Dockerfile.downloaders +++ b/workers/dockerfiles/Dockerfile.downloaders @@ -31,7 +31,6 @@ RUN pip3 install --ignore-installed --no-cache-dir \ common/$(ls common -1 | sort --version-sort | tail -1) COPY .boto .boto -COPY config config COPY workers/ . RUN rm -rf /root/.cache/* diff --git a/workers/dockerfiles/Dockerfile.illumina b/workers/dockerfiles/Dockerfile.illumina index 1d771b322..ae00c06ca 100644 --- a/workers/dockerfiles/Dockerfile.illumina +++ b/workers/dockerfiles/Dockerfile.illumina @@ -20,7 +20,6 @@ RUN pip3 install --ignore-installed --no-cache-dir \ common/$(ls common -1 | sort --version-sort | tail -1) COPY .boto .boto -COPY config/ config/ COPY workers/ . COPY workers/data_refinery_workers/processors/detect_database.R . COPY workers/illumina_probe_maps/ probe_maps/ diff --git a/workers/dockerfiles/Dockerfile.no_op b/workers/dockerfiles/Dockerfile.no_op index 7e33a14e3..f37a21ce4 100644 --- a/workers/dockerfiles/Dockerfile.no_op +++ b/workers/dockerfiles/Dockerfile.no_op @@ -32,7 +32,6 @@ RUN pip3 install --ignore-installed --no-cache-dir \ common/$(ls common -1 | sort --version-sort | tail -1) COPY .boto .boto -COPY config/ config/ COPY workers/ . RUN rm -rf /root/.cache/* diff --git a/workers/dockerfiles/Dockerfile.salmon b/workers/dockerfiles/Dockerfile.salmon index 08a3d3299..6fb5885cb 100644 --- a/workers/dockerfiles/Dockerfile.salmon +++ b/workers/dockerfiles/Dockerfile.salmon @@ -56,7 +56,6 @@ RUN pip3 install --ignore-installed --no-cache-dir \ common/$(ls common -1 | sort --version-sort | tail -1) COPY .boto .boto -COPY config/ config/ COPY workers/ . RUN rm -rf /root/.cache/* diff --git a/workers/dockerfiles/Dockerfile.smasher b/workers/dockerfiles/Dockerfile.smasher index f95da5016..e04410251 100644 --- a/workers/dockerfiles/Dockerfile.smasher +++ b/workers/dockerfiles/Dockerfile.smasher @@ -20,7 +20,6 @@ RUN pip3 install --ignore-installed --no-cache-dir \ common/$(ls common -1 | sort --version-sort | tail -1) COPY .boto .boto -COPY config/ config/ COPY workers/ . RUN rm -rf /root/.cache/* diff --git a/workers/dockerfiles/Dockerfile.transcriptome b/workers/dockerfiles/Dockerfile.transcriptome index e3c5328a4..a27cc15aa 100644 --- a/workers/dockerfiles/Dockerfile.transcriptome +++ b/workers/dockerfiles/Dockerfile.transcriptome @@ -38,7 +38,6 @@ RUN pip3 install --ignore-installed --no-cache-dir \ common/$(ls common -1 | sort --version-sort | tail -1) COPY .boto .boto -COPY config/ config/ COPY workers/ . RUN rm -rf /root/.cache/* diff --git a/workers/run_tests.sh b/workers/run_tests.sh index a66d0a2f7..092f189bc 100755 --- a/workers/run_tests.sh +++ b/workers/run_tests.sh @@ -529,6 +529,8 @@ fi . ./scripts/common.sh +./scripts/prepare_image.sh -i base -s common + DB_HOST_IP=$(get_docker_db_ip_address) # Ensure permissions are set for everything within the test data directory. @@ -577,7 +579,7 @@ for image in $worker_images; do --tty \ --volume "$volume_directory":/home/user/data_store \ $INTERACTIVE \ - "$image_name" \ + "$image_name:$SYSTEM_VERSION" \ bash -c "$test_command" fi done From 9574462d82b9938b9345a4ccceff8af3b79101fb Mon Sep 17 00:00:00 2001 From: David Mejia Date: Tue, 18 Jul 2023 09:48:04 -0400 Subject: [PATCH 176/220] log when encountering unknown manufacturer --- foreman/data_refinery_foreman/surveyor/sra.py | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/foreman/data_refinery_foreman/surveyor/sra.py b/foreman/data_refinery_foreman/surveyor/sra.py index 379b1e464..01a1fde78 100644 --- a/foreman/data_refinery_foreman/surveyor/sra.py +++ b/foreman/data_refinery_foreman/surveyor/sra.py @@ -349,6 +349,12 @@ def _generate_sample(self, experiment: Experiment, sample_metadata: dict) -> Sam sample.manufacturer = "UNKNOWN" sample.platform_name = "UNKNOWN" sample.platform_accession_code = "UNKNOWN" + logger.debug( + "Sample %s has unrecognized manufacturer.", + sample_accession_code=sample_accession, + experiment_accession_code=experiment.accession_code, + survey_job=self.survey_job.id, + ) SraSurveyor._apply_harmonized_metadata_to_sample(sample, sample_metadata) From 9409d2d471fcc9b0d2ff36385eedfe99461e6ffc Mon Sep 17 00:00:00 2001 From: David Mejia Date: Tue, 18 Jul 2023 12:30:38 -0400 Subject: [PATCH 177/220] gather metadata returns tuple --- .../management/commands/update_experiment_metadata.py | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/foreman/data_refinery_foreman/foreman/management/commands/update_experiment_metadata.py b/foreman/data_refinery_foreman/foreman/management/commands/update_experiment_metadata.py index 21ef3fe11..9e6696435 100644 --- a/foreman/data_refinery_foreman/foreman/management/commands/update_experiment_metadata.py +++ b/foreman/data_refinery_foreman/foreman/management/commands/update_experiment_metadata.py @@ -8,8 +8,7 @@ from data_refinery_common.logging import get_and_configure_logger from data_refinery_common.models import Experiment from data_refinery_common.performant_pagination.pagination import PerformantPaginator -from data_refinery_foreman.surveyor import utils -from data_refinery_foreman.surveyor.array_express import EXPERIMENTS_URL, ArrayExpressSurveyor +from data_refinery_foreman.surveyor.array_express import ArrayExpressSurveyor from data_refinery_foreman.surveyor.geo import GeoSurveyor from data_refinery_foreman.surveyor.sra import SraSurveyor @@ -56,10 +55,10 @@ def handle(self, *args, **options): ) try: if experiment.source_database == "SRA": - metadata = SraSurveyor.gather_all_metadata( + experiment_metadata, sample_metadata = SraSurveyor.gather_all_metadata( experiment.samples.first().accession_code ) - SraSurveyor._apply_metadata_to_experiment(experiment, metadata) + SraSurveyor._apply_metadata_to_experiment(experiment, experiment_metadata) elif experiment.source_database == "GEO": gse = GEOparse.get_GEO( From cb2f48b781fd2e7b3818647a0529ade87970191b Mon Sep 17 00:00:00 2001 From: David Mejia Date: Tue, 18 Jul 2023 12:31:38 -0400 Subject: [PATCH 178/220] use urlencode --- foreman/data_refinery_foreman/surveyor/sra.py | 9 ++++----- foreman/tests/surveyor/test_sra.py | 7 ++++--- 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/foreman/data_refinery_foreman/surveyor/sra.py b/foreman/data_refinery_foreman/surveyor/sra.py index 01a1fde78..144423133 100644 --- a/foreman/data_refinery_foreman/surveyor/sra.py +++ b/foreman/data_refinery_foreman/surveyor/sra.py @@ -1,5 +1,6 @@ import re from typing import List +from urllib.parse import urlencode from django.utils.dateparse import parse_date @@ -55,15 +56,13 @@ def source_type(self): @staticmethod def get_ena_json_api(endpoint: str, accession: str, params: dict = {}): - query_params = "&".join([f"{k}={params[k]}" for k in params]) - if query_params: - query_params = f"&{query_params}" + params.update({"format": "json", "includeAccessions": accession}) - return f"{ENA_API}{endpoint}/?format=json&includeAccessions={accession}{query_params}" + return f"{ENA_API}{endpoint}/?{urlencode(params, )}" @staticmethod - def get_ena_json_api_response(endpoint: str, accession, params: dict = {}): + def get_ena_json_api_response(endpoint: str, accession: str, params: dict = {}): response = utils.requests_retry_session().get( SraSurveyor.get_ena_json_api(endpoint, accession, params) ) diff --git a/foreman/tests/surveyor/test_sra.py b/foreman/tests/surveyor/test_sra.py index b177553db..65e4eaf74 100644 --- a/foreman/tests/surveyor/test_sra.py +++ b/foreman/tests/surveyor/test_sra.py @@ -299,14 +299,15 @@ def test_sra_pubmed_metdata_is_applied(self): ) def test_sra_ena_api_endpoint_construction(self): - expected_filereport_url = "https://www.ebi.ac.uk/ena/portal/api/filereport/?format=json&accession=SRP047410&result=read_run" + expected_filereport_url = "https://www.ebi.ac.uk/ena/portal/api/filereport/?result=read_run&format=json&includeAccessions=SRP047410" + filereport_url = SraSurveyor.get_ena_json_api( "filereport", "SRP047410", {"result": "read_run"} ) self.assertEqual(expected_filereport_url, filereport_url) expected_metadata_url = ( - "https://www.ebi.ac.uk/ena/portal/api/search/?format=json&accession=SRP047410" + "https://www.ebi.ac.uk/ena/portal/api/search/?format=json&includeAccessions=SRP047410" ) metadata_url = SraSurveyor.get_ena_json_api("search", "SRP047410", {}) - self.assertEquual(expected_metadata_url, metadata_url) + self.assertEqual(expected_metadata_url, metadata_url) From 0d7ff958fed3e9bb6cd7f4a6f169e52c1828a12d Mon Sep 17 00:00:00 2001 From: David Mejia Date: Tue, 18 Jul 2023 13:37:34 -0400 Subject: [PATCH 179/220] remove ignore, setup.cfg instead --- codecov.yml | 4 ---- 1 file changed, 4 deletions(-) diff --git a/codecov.yml b/codecov.yml index 59eaf09fe..7d640b009 100644 --- a/codecov.yml +++ b/codecov.yml @@ -1,10 +1,6 @@ github_checks: annotations: false -ignore: - - "**/tests/**" - - "**/*.sh" - coverage: status: project: From bec7b89bb44a282bce6017883de8da3870187400 Mon Sep 17 00:00:00 2001 From: Arkadii Yakovets Date: Wed, 19 Jul 2023 09:26:21 -0700 Subject: [PATCH 180/220] Update smasher email sender address --- .../processors/smasher.py | 2 +- workers/tests/processors/test_smasher.py | 43 ++++++++++++++----- 2 files changed, 34 insertions(+), 11 deletions(-) diff --git a/workers/data_refinery_workers/processors/smasher.py b/workers/data_refinery_workers/processors/smasher.py index fa832925f..5a5c152a3 100644 --- a/workers/data_refinery_workers/processors/smasher.py +++ b/workers/data_refinery_workers/processors/smasher.py @@ -431,7 +431,7 @@ def _notify_send_email(job_context): """Send email notification to the user if the dataset succeded or failed.""" dataset_url = "https://www.refine.bio/dataset/" + str(job_context["dataset"].id) - SENDER = "Refine.bio Mail Robot " + SENDER = "refine.bio Datasets " RECIPIENT = job_context["dataset"].email_address SLACK_CCDL_EMAIL = "z7m4g8w4o6f5e0e7@alexslemonade.slack.com" CHARSET = "UTF-8" diff --git a/workers/tests/processors/test_smasher.py b/workers/tests/processors/test_smasher.py index 38e7760df..a1e8e2f72 100644 --- a/workers/tests/processors/test_smasher.py +++ b/workers/tests/processors/test_smasher.py @@ -1329,6 +1329,10 @@ def test_notify(self, mock_boto_client): self.assertTrue(final_context.get("success", True)) mock_boto_client.assert_called_once_with("ses", region_name="dummy region") ses_client_mock.send_email.assert_called_once() + self.assertEqual( + ses_client_mock.send_email.call_args.kwargs["Source"], + "refine.bio Datasets ", + ) # Now try explicitly setting notify_me false mock_boto_client.reset_mock() @@ -1383,7 +1387,10 @@ def setUp(self): "experiments": { "E-GEOD-44719": { "accession_code": "E-GEOD-44719", - "sample_accession_codes": ["IFNa DC_LB016_IFNa", "undefined_sample"], + "sample_accession_codes": [ + "IFNa DC_LB016_IFNa", + "undefined_sample", + ], } }, "samples": { @@ -1429,7 +1436,10 @@ def setUp(self): "name": "Sample_source_name", "value": "pineal glands at CT18, after light exposure", }, - {"name": "Sample_title", "value": "Pineal_Light_CT18"}, + { + "name": "Sample_title", + "value": "Pineal_Light_CT18", + }, ], }, # For single-key object whose key is "name", @@ -1466,7 +1476,8 @@ def setUp(self): # Create a sample attribute to check for contribution, _ = Contribution.objects.get_or_create( - source_name="MetaSRA", methods_url="https://pubmed.ncbi.nlm.nih.gov/28535296/" + source_name="MetaSRA", + methods_url="https://pubmed.ncbi.nlm.nih.gov/28535296/", ) s1 = Sample() @@ -1518,7 +1529,10 @@ def test_all_samples(self): "metadata": self.metadata, "dataset": Dataset.objects.create( aggregate_by="ALL", - data={"GSE56409": ["GSM1361050"], "E-GEOD-44719": ["E-GEOD-44719-GSM1089311"]}, + data={ + "GSE56409": ["GSM1361050"], + "E-GEOD-44719": ["E-GEOD-44719-GSM1089311"], + }, ), } smashing_utils.write_tsv_json(job_context) @@ -1562,7 +1576,10 @@ def test_experiment(self): "metadata": self.metadata, "dataset": Dataset.objects.create( aggregate_by="EXPERIMENT", - data={"GSE56409": ["GSM1361050"], "E-GEOD-44719": ["E-GEOD-44719-GSM1089311"]}, + data={ + "GSE56409": ["GSM1361050"], + "E-GEOD-44719": ["E-GEOD-44719-GSM1089311"], + }, ), } smashing_utils.write_tsv_json(job_context) @@ -1600,7 +1617,11 @@ def test_unicode_writer(self): "refinebio_accession_code": "eyy", "refinebio_annotations": [ # annotation #1 - {"😎😎": "😎😎", "detection_percentage": 98.44078, "mapped_percentage": 100.0} + { + "😎😎": "😎😎", + "detection_percentage": 98.44078, + "mapped_percentage": 100.0, + } ], # end of annotations }, # end of sample #1 }, # end of "samples" @@ -1675,7 +1696,10 @@ def test_species(self): "metadata": self.metadata, "dataset": Dataset.objects.create( aggregate_by="SPECIES", - data={"GSE56409": ["GSM1361050"], "E-GEOD-44719": ["E-GEOD-44719-GSM1089311"]}, + data={ + "GSE56409": ["GSM1361050"], + "E-GEOD-44719": ["E-GEOD-44719-GSM1089311"], + }, ), "group_by_keys": ["homo_sapiens", "fake_species"], "input_files": { @@ -1738,14 +1762,14 @@ def test_species(self): self.assertEqual(species_metadada["species"], "fake_species") self.assertEqual(len(species_metadada["samples"]), 1) self.assertEqual( - species_metadada["samples"][0]["refinebio_accession_code"], "E-GEOD-44719-GSM1089311" + species_metadada["samples"][0]["refinebio_accession_code"], + "E-GEOD-44719-GSM1089311", ) self.assertEqual(species_metadada["samples"][0]["MetaSRA_age"]["value"], 3.0) os.remove(json_filename) @tag("smasher") def test_bad_smash(self): - pj = ProcessorJob() pj.pipeline_applied = "SMASHER" pj.save() @@ -1852,7 +1876,6 @@ def test_bad_smash(self): @tag("smasher") def test_bad_overlap(self): - homo_sapiens = Organism(name="HOMO_SAPIENS", taxonomy_id=9606) homo_sapiens.save() From 2043f63a04901fedb2e139e6b093bcd27ac5d6fe Mon Sep 17 00:00:00 2001 From: Arkadii Yakovets Date: Wed, 19 Jul 2023 11:05:24 -0700 Subject: [PATCH 181/220] Update docker credentials --- .github/scripts/update_docker_images.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/scripts/update_docker_images.sh b/.github/scripts/update_docker_images.sh index 06bdabbfd..881dbfceb 100755 --- a/.github/scripts/update_docker_images.sh +++ b/.github/scripts/update_docker_images.sh @@ -30,7 +30,7 @@ cd ~/refinebio/common && python3 setup.py sdist cd ~/refinebio # Log into DockerHub. -docker login -u "$DOCKER_ID" -p "$DOCKER_PASSWD" +docker login -u "$DOCKER_IO_USERNAME" -p "$DOCKER_IO_PASSWORD" IMAGE_NAMES="$WORKER_IMAGES foreman api" for IMAGE_NAME in $IMAGE_NAMES; do From 601a6f59343af4ee28c00eca0ed484984ab54804 Mon Sep 17 00:00:00 2001 From: Arkadii Yakovets Date: Wed, 19 Jul 2023 11:28:29 -0700 Subject: [PATCH 182/220] Update images --- .github/scripts/remote_deploy.sh | 2 +- .github/scripts/update_docker_images.sh | 10 ++++++---- .../{Dockerfile.api_production => Dockerfile.api} | 0 api/serve_production.sh | 4 ++-- scripts/common.sh | 4 +++- scripts/update_docker_images.sh | 4 ++-- 6 files changed, 14 insertions(+), 10 deletions(-) rename api/dockerfiles/{Dockerfile.api_production => Dockerfile.api} (100%) diff --git a/.github/scripts/remote_deploy.sh b/.github/scripts/remote_deploy.sh index f93c337c4..a82818a31 100755 --- a/.github/scripts/remote_deploy.sh +++ b/.github/scripts/remote_deploy.sh @@ -68,7 +68,7 @@ echo "Building new images" run_on_deploy_box "sudo touch /var/log/docker_update_$CI_TAG.log" run_on_deploy_box "sudo chown ubuntu:ubuntu /var/log/docker_update_$CI_TAG.log" run_on_deploy_box ". env_vars && echo -e '######\nBuilding new images for $CI_TAG\n######' 2>&1 | tee -a /var/log/docker_update_$CI_TAG.log" -run_on_deploy_box ". env_vars && .github/scripts/update_docker_images.sh 2>&1 | tee -a /var/log/docker_update_$CI_TAG.log" +run_on_deploy_box ". env_vars && ./.github/scripts/update_docker_images.sh 2>&1 | tee -a /var/log/docker_update_$CI_TAG.log" run_on_deploy_box ". env_vars && echo -e '######\nFinished building new images for $CI_TAG\n######' 2>&1 | tee -a /var/log/docker_update_$CI_TAG.log" # Load docker_image_exists function and $ALL_IMAGES. diff --git a/.github/scripts/update_docker_images.sh b/.github/scripts/update_docker_images.sh index 881dbfceb..093e40885 100755 --- a/.github/scripts/update_docker_images.sh +++ b/.github/scripts/update_docker_images.sh @@ -32,11 +32,13 @@ cd ~/refinebio # Log into DockerHub. docker login -u "$DOCKER_IO_USERNAME" -p "$DOCKER_IO_PASSWORD" -IMAGE_NAMES="$WORKER_IMAGES foreman api" -for IMAGE_NAME in $IMAGE_NAMES; do +for IMAGE_NAME in $ALL_IMAGES; do case $IMAGE_NAME in - api) - DOCKER_FILE_PATH="api/dockerfiles/Dockerfile.api_production" + api_base | api) + DOCKER_FILE_PATH="api/dockerfiles/Dockerfile.$IMAGE_NAME" + ;; + base) + DOCKER_FILE_PATH="common/dockerfiles/Dockerfile.$IMAGE_NAME" ;; foreman) DOCKER_FILE_PATH="foreman/dockerfiles/Dockerfile.$IMAGE_NAME" diff --git a/api/dockerfiles/Dockerfile.api_production b/api/dockerfiles/Dockerfile.api similarity index 100% rename from api/dockerfiles/Dockerfile.api_production rename to api/dockerfiles/Dockerfile.api diff --git a/api/serve_production.sh b/api/serve_production.sh index c23382778..5b04a69d0 100755 --- a/api/serve_production.sh +++ b/api/serve_production.sh @@ -14,7 +14,7 @@ cd "$script_directory" || exit # move up a level. cd .. -./scripts/prepare_image.sh -i api_production -s api +./scripts/prepare_image.sh -i api -s api . ./scripts/common.sh @@ -30,5 +30,5 @@ docker run \ --publish 8081:8081 \ --tty \ --volume "$STATIC_VOLUMES":/tmp/www/static \ - "$DOCKERHUB_REPO/dr_api_production" \ + "$DOCKERHUB_REPO/dr_api" \ /bin/sh -c "/home/user/collect_and_run_uwsgi.sh" diff --git a/scripts/common.sh b/scripts/common.sh index acf22354d..f7d4cd705 100755 --- a/scripts/common.sh +++ b/scripts/common.sh @@ -2,10 +2,12 @@ # These are lists of docker images that we use. The actual names end # up being /dr_ but this is useful for scripting. -export ALL_IMAGES="smasher compendia illumina affymetrix salmon transcriptome no_op downloaders foreman api" + # Sometimes we only want to work with the worker images. export WORKER_IMAGES="smasher compendia illumina affymetrix salmon transcriptome no_op downloaders" +export ALL_IMAGES="base api_base api foreman $WORKER_IMAGES" + # Default Docker registry. if [ -z "$DOCKERHUB_REPO" ]; then export DOCKERHUB_REPO="ccdlstaging" diff --git a/scripts/update_docker_images.sh b/scripts/update_docker_images.sh index 299974310..086301af9 100755 --- a/scripts/update_docker_images.sh +++ b/scripts/update_docker_images.sh @@ -78,7 +78,7 @@ DOCKER_ACTION="--push" # Intentionally omit affymetrix unless specifically requested since it is so # intense to build. -IMAGE_NAMES="base migrations common_tests foreman api_base api_production api_local \ +IMAGE_NAMES="base migrations common_tests foreman api_base api api_local \ transcriptome smasher salmon no_op illumina downloaders compendia" if [ "$BUILD_AFFYMETRIX" ]; then IMAGE_NAMES="$IMAGE_NAMES affymetrix" @@ -95,7 +95,7 @@ rm -f common/dist/* for IMAGE_NAME in $IMAGE_NAMES; do case $IMAGE_NAME in - api_base | api_local | api_production) + api_base | api | api_local) DOCKER_FILE_PATH="api/dockerfiles/Dockerfile.$IMAGE_NAME" ;; base | common_tests | migrations) From 3db25de589027b687209c263eb23e9d06a0a13e1 Mon Sep 17 00:00:00 2001 From: Arkadii Yakovets Date: Wed, 19 Jul 2023 12:13:09 -0700 Subject: [PATCH 183/220] Rename `get_master_or_dev` to `get_deploy_branch` everywhere --- .github/workflows/config.yml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/workflows/config.yml b/.github/workflows/config.yml index 13a43eef1..624562d09 100644 --- a/.github/workflows/config.yml +++ b/.github/workflows/config.yml @@ -570,7 +570,7 @@ jobs: - name: Set the $MASTER_OR_DEV and $CI_TAG Environment Variables run: | source scripts/common.sh - echo "MASTER_OR_DEV=$(get_master_or_dev ${GITHUB_REF#refs/tags/})" >> $GITHUB_ENV + echo "MASTER_OR_DEV=$(get_deploy_branch ${GITHUB_REF#refs/tags/})" >> $GITHUB_ENV # Remove /ref/tags/ from the beginning of the tag name echo "CI_TAG=${GITHUB_REF#refs/tags/}" >> $GITHUB_ENV @@ -632,7 +632,7 @@ jobs: - name: Set the $MASTER_OR_DEV and $CI_TAG Environment Variables run: | source scripts/common.sh - echo "MASTER_OR_DEV=$(get_master_or_dev ${GITHUB_REF#refs/tags/})" >> $GITHUB_ENV + echo "MASTER_OR_DEV=$(get_deploy_branch ${GITHUB_REF#refs/tags/})" >> $GITHUB_ENV # Remove /ref/tags/ from the beginning of the tag name echo "CI_TAG=${GITHUB_REF#refs/tags/}" >> $GITHUB_ENV @@ -679,4 +679,4 @@ jobs: name: Set the $CI_TAG Environment Variable run: | source scripts/common.sh - echo "branch=$(get_master_or_dev ${GITHUB_REF#refs/tags/})" >> $GITHUB_OUTPUT + echo "branch=$(get_deploy_branch ${GITHUB_REF#refs/tags/})" >> $GITHUB_OUTPUT From 5f62765cbc8b079165a434e961fd09683c89a7f5 Mon Sep 17 00:00:00 2001 From: Arkadii Yakovets Date: Wed, 19 Jul 2023 12:15:46 -0700 Subject: [PATCH 184/220] Use . instead of source --- .github/workflows/config.yml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/workflows/config.yml b/.github/workflows/config.yml index 624562d09..175e3a330 100644 --- a/.github/workflows/config.yml +++ b/.github/workflows/config.yml @@ -569,7 +569,7 @@ jobs: - name: Set the $MASTER_OR_DEV and $CI_TAG Environment Variables run: | - source scripts/common.sh + . scripts/common.sh echo "MASTER_OR_DEV=$(get_deploy_branch ${GITHUB_REF#refs/tags/})" >> $GITHUB_ENV # Remove /ref/tags/ from the beginning of the tag name echo "CI_TAG=${GITHUB_REF#refs/tags/}" >> $GITHUB_ENV @@ -631,7 +631,7 @@ jobs: - name: Set the $MASTER_OR_DEV and $CI_TAG Environment Variables run: | - source scripts/common.sh + . scripts/common.sh echo "MASTER_OR_DEV=$(get_deploy_branch ${GITHUB_REF#refs/tags/})" >> $GITHUB_ENV # Remove /ref/tags/ from the beginning of the tag name echo "CI_TAG=${GITHUB_REF#refs/tags/}" >> $GITHUB_ENV @@ -678,5 +678,5 @@ jobs: - id: set_branch name: Set the $CI_TAG Environment Variable run: | - source scripts/common.sh + . scripts/common.sh echo "branch=$(get_deploy_branch ${GITHUB_REF#refs/tags/})" >> $GITHUB_OUTPUT From 8ddba851f1a1e8cafd4073c934df9a3653ad4a2a Mon Sep 17 00:00:00 2001 From: Arkadii Yakovets Date: Wed, 19 Jul 2023 19:32:39 -0700 Subject: [PATCH 185/220] Fix staging deploy --- .github/scripts/remote_deploy.sh | 8 ++++---- .github/workflows/config.yml | 8 ++++---- api/dockerfiles/Dockerfile.api | 3 ++- foreman/run_end_to_end_tests.sh | 5 +---- infrastructure/batch.tf | 2 +- infrastructure/instances.tf | 2 +- scripts/common.sh | 7 +------ 7 files changed, 14 insertions(+), 21 deletions(-) diff --git a/.github/scripts/remote_deploy.sh b/.github/scripts/remote_deploy.sh index a82818a31..ce6f00855 100755 --- a/.github/scripts/remote_deploy.sh +++ b/.github/scripts/remote_deploy.sh @@ -104,18 +104,18 @@ echo "Finished building new images, running run_terraform.sh." run_on_deploy_box "sudo touch /var/log/deploy_$CI_TAG.log" run_on_deploy_box "sudo chown ubuntu:ubuntu /var/log/deploy_$CI_TAG.log" run_on_deploy_box ". env_vars && echo -e '######\nStarting new deploy for $CI_TAG\n######' >> /var/log/deploy_$CI_TAG.log 2>&1" -run_on_deploy_box "sudo ./.github/scripts/update_ca_certificates.sh >> /var/log/deploy_$CI_TAG.log 2>&1" +run_on_deploy_box "sudo .github/scripts/update_ca_certificates.sh >> /var/log/deploy_$CI_TAG.log 2>&1" # This should never be logged to Github Actions in case it exposes any secrets as terraform output. -run_on_deploy_box ". env_vars && ./.github/scripts/run_terraform.sh >> /var/log/deploy_$CI_TAG.log 2>&1" +run_on_deploy_box ". env_vars && .github/scripts/run_terraform.sh >> /var/log/deploy_$CI_TAG.log 2>&1" run_on_deploy_box ". env_vars && echo -e '######\nDeploying $CI_TAG finished!\n######' >> /var/log/deploy_$CI_TAG.log 2>&1" -./.github/scripts/slackpost_deploy.sh robots deploybot +.github/scripts/slackpost_deploy.sh robots deploybot if [[ "$BRANCH" == "dev" ]]; then run_on_deploy_box ". env_vars && ./foreman/run_end_to_end_tests.sh" - ./.github/scripts/slackpost_end_to_end.sh robots deploybot + .github/scripts/slackpost_end_to_end.sh robots deploybot fi # Don't leave secrets lying around. diff --git a/.github/workflows/config.yml b/.github/workflows/config.yml index 175e3a330..69b040603 100644 --- a/.github/workflows/config.yml +++ b/.github/workflows/config.yml @@ -567,10 +567,10 @@ jobs: with: fetch-depth: 0 - - name: Set the $MASTER_OR_DEV and $CI_TAG Environment Variables + - name: Set the $BRANCH and $CI_TAG Environment Variables run: | . scripts/common.sh - echo "MASTER_OR_DEV=$(get_deploy_branch ${GITHUB_REF#refs/tags/})" >> $GITHUB_ENV + echo "BRANCH=$(get_deploy_branch ${GITHUB_REF#refs/tags/})" >> $GITHUB_ENV # Remove /ref/tags/ from the beginning of the tag name echo "CI_TAG=${GITHUB_REF#refs/tags/}" >> $GITHUB_ENV @@ -629,10 +629,10 @@ jobs: with: fetch-depth: 0 - - name: Set the $MASTER_OR_DEV and $CI_TAG Environment Variables + - name: Set the $BRANCH and $CI_TAG Environment Variables run: | . scripts/common.sh - echo "MASTER_OR_DEV=$(get_deploy_branch ${GITHUB_REF#refs/tags/})" >> $GITHUB_ENV + echo "BRANCH=$(get_deploy_branch ${GITHUB_REF#refs/tags/})" >> $GITHUB_ENV # Remove /ref/tags/ from the beginning of the tag name echo "CI_TAG=${GITHUB_REF#refs/tags/}" >> $GITHUB_ENV diff --git a/api/dockerfiles/Dockerfile.api b/api/dockerfiles/Dockerfile.api index fccc67d0f..bbdf1af3e 100644 --- a/api/dockerfiles/Dockerfile.api +++ b/api/dockerfiles/Dockerfile.api @@ -5,7 +5,8 @@ FROM $DOCKERHUB_REPO/dr_api_base:$SYSTEM_VERSION # Fail in case of an error at any stage in the pipe. SHELL ["/bin/bash", "-o", "pipefail", "-c"] -RUN chmod +x /home/user/collect_and_run_uwsgi.sh && \ +RUN pip install --ignore-installed --no-cache-dir uwsgi && \ + chmod +x /home/user/collect_and_run_uwsgi.sh && \ mkdir -p /tmp/www/static && \ chown user /tmp/www/static diff --git a/foreman/run_end_to_end_tests.sh b/foreman/run_end_to_end_tests.sh index e08112ae2..c9879adc3 100755 --- a/foreman/run_end_to_end_tests.sh +++ b/foreman/run_end_to_end_tests.sh @@ -31,9 +31,6 @@ if [ ! -e "$reference_file_dir/$quant_file" ]; then "$test_data_repo/$quant_file" fi -# temp for testing locally. -../scripts/prepare_image.sh -i foreman -s foreman - while read -r row; do # Exporting an expansion rather than a variable, which is exactly what we want to do. # shellcheck disable=SC2163 @@ -50,5 +47,5 @@ docker run \ --volume "$HOME/.aws":/home/user/.aws \ --volume "$volume_directory":/home/user/data_store \ --tty \ - "$DOCKERHUB_REPO/dr_foreman" \ + "$DOCKERHUB_REPO/$FOREMAN_DOCKER_IMAGE" \ python3 manage.py test --no-input --parallel=2 --testrunner='tests.test_runner.NoDbTestRunner' tests.foreman.test_end_to_end diff --git a/infrastructure/batch.tf b/infrastructure/batch.tf index ae1ab8216..66bd1bb91 100644 --- a/infrastructure/batch.tf +++ b/infrastructure/batch.tf @@ -20,7 +20,7 @@ module "batch" { "workers-configuration/workers-instance-user-data.tpl.sh", { database_host = aws_instance.pg_bouncer.private_ip - database_name = aws_db_instance.postgres_db.name + database_name = aws_db_instance.postgres_db.db_name database_password = var.database_password database_port = var.database_port database_user = var.database_user diff --git a/infrastructure/instances.tf b/infrastructure/instances.tf index 0628c31d3..4fce9e5ac 100644 --- a/infrastructure/instances.tf +++ b/infrastructure/instances.tf @@ -195,7 +195,7 @@ resource "aws_instance" "foreman_server_1" { { accession_gathering_job_run_day = var.accession_gathering_job_run_day database_host = aws_instance.pg_bouncer.private_ip - database_name = aws_db_instance.postgres_db.name + database_name = aws_db_instance.postgres_db.db_name database_password = var.database_password database_user = var.database_user dockerhub_repo = var.dockerhub_repo diff --git a/scripts/common.sh b/scripts/common.sh index 29609f6ad..8f9b5e59a 100755 --- a/scripts/common.sh +++ b/scripts/common.sh @@ -133,12 +133,6 @@ update_docker_image() { CACHE_TO_LATEST="type=registry,ref=${DOCKERHUB_IMAGE}_cache:latest,mode=max" CACHE_TO_VERSION="type=registry,ref=${DOCKERHUB_IMAGE}_cache:$SYSTEM_VERSION,mode=max" - if test "$GITHUB_ACTION"; then - CACHE_TO_LATEST="type=gha" - CACHE_TO_VERSION="type=gha" - DOCKER_ACTION="--push" - fi - set_up_docker_builder docker buildx build \ @@ -155,6 +149,7 @@ update_docker_image() { "$DOCKER_ACTION" \ . } + # Default Docker registry. if [ -z "$DOCKERHUB_REPO" ]; then export DOCKERHUB_REPO="ccdlstaging" From 30276efe73eeffbfb68a0b1a136db2015f78bd26 Mon Sep 17 00:00:00 2001 From: Arkadii Yakovets Date: Thu, 20 Jul 2023 07:39:40 -0700 Subject: [PATCH 186/220] Fix common/foreman tests --- .github/workflows/config.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/config.yml b/.github/workflows/config.yml index 69b040603..be68e8709 100644 --- a/.github/workflows/config.yml +++ b/.github/workflows/config.yml @@ -207,7 +207,7 @@ jobs: env: IMAGES: migrations common_tests needs: - - test_base + - test_api runs-on: ubuntu-latest steps: - uses: actions/checkout@v3 @@ -291,7 +291,7 @@ jobs: env: IMAGES: migrations foreman needs: - - test_base + - test_api runs-on: ubuntu-latest steps: - uses: actions/checkout@v3 From 7a71dfbfae022b0248abc7bd06300319e0135c51 Mon Sep 17 00:00:00 2001 From: Arkadii Yakovets Date: Thu, 20 Jul 2023 10:35:24 -0700 Subject: [PATCH 187/220] Move downloaders and no_op tests to larger runners --- .github/workflows/config.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/config.yml b/.github/workflows/config.yml index be68e8709..41e956897 100644 --- a/.github/workflows/config.yml +++ b/.github/workflows/config.yml @@ -255,7 +255,7 @@ jobs: IMAGES: migrations api_base api_local downloaders foreman needs: - test_base - runs-on: ubuntu-latest + runs-on: ubuntu-latest-m steps: - uses: actions/checkout@v3 From a7c99df94fe7e559ac191839b2491efa1b4bbb1a Mon Sep 17 00:00:00 2001 From: David Mejia Date: Mon, 24 Jul 2023 15:14:21 -0400 Subject: [PATCH 188/220] prevent age from being set as string, adds test --- .../data_refinery_foreman/surveyor/harmony.py | 5 +- foreman/tests/surveyor/test_geo.py | 14 + .../surveyor.geo.geo_survey_GSE94793.yaml | 38965 ++++++++++++++++ 3 files changed, 38982 insertions(+), 2 deletions(-) create mode 100644 test_volume/cassettes/surveyor.geo.geo_survey_GSE94793.yaml diff --git a/foreman/data_refinery_foreman/surveyor/harmony.py b/foreman/data_refinery_foreman/surveyor/harmony.py index 2706adb89..b0fb7996d 100644 --- a/foreman/data_refinery_foreman/surveyor/harmony.py +++ b/foreman/data_refinery_foreman/surveyor/harmony.py @@ -784,8 +784,9 @@ def harmonize_field( harmonized_values.add(harmonized_value) # Age can only be one value in the database. - if sample_attribute == "age" and len(harmonized_values) > 0: - harmonized_sample[sample_attribute] = harmonized_values.pop() + if sample_attribute == "age": + if len(harmonized_values) > 0: + harmonized_sample[sample_attribute] = harmonized_values.pop() else: harmonized_sample[sample_attribute] = ";".join( sorted([str(v) for v in harmonized_values]) diff --git a/foreman/tests/surveyor/test_geo.py b/foreman/tests/surveyor/test_geo.py index cd93b282f..85793c685 100644 --- a/foreman/tests/surveyor/test_geo.py +++ b/foreman/tests/surveyor/test_geo.py @@ -84,6 +84,20 @@ def test_geo_survey_GSE6532(self, mock_send_task): self.assertEqual(741, Sample.objects.all().count()) + @vcr.use_cassette("/home/user/data_store/cassettes/surveyor.geo.geo_survey_GSE94793.yaml") + @patch("data_refinery_foreman.surveyor.external_source.send_job") + def test_geo_survey_GSE94793(self, mock_send_task): + """This experiment revealed an issue with age being saved as a string. + + Seemed like a good test to make permanent. + """ + self.prep_test("GSE94793") + + geo_surveyor = GeoSurveyor(self.survey_job) + geo_surveyor.survey() + + self.assertEqual(24, Sample.objects.all().count()) + @vcr.use_cassette("/home/user/data_store/cassettes/surveyor.geo.geo_survey_not_agilent.yaml") @patch("data_refinery_foreman.surveyor.external_source.send_job") def test_geo_survey_not_agilent(self, mock_send_task): diff --git a/test_volume/cassettes/surveyor.geo.geo_survey_GSE94793.yaml b/test_volume/cassettes/surveyor.geo.geo_survey_GSE94793.yaml new file mode 100644 index 000000000..0cca817d9 --- /dev/null +++ b/test_volume/cassettes/surveyor.geo.geo_survey_GSE94793.yaml @@ -0,0 +1,38965 @@ +interactions: +- request: + body: null + headers: + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate + Connection: + - keep-alive + User-Agent: + - python-requests/2.31.0 + method: GET + uri: https://eutils.ncbi.nlm.nih.gov/entrez/eutils/esummary.fcgi?db=pubmed&id=28798664&retmode=json&tool=refinebio&email=hello@refine.bio + response: + body: + string: !!binary | + H4sIAAAAAAAAAJSRTUvDQBCG/8ow5yA1Sltza7WClUipF0E8jJsxWdjshv2IhOB/d7ctFfFibsvz + zrMzsztiw1SxxWJEP3SMBbILbUt2wAx7tk4aHeHs4gq/MrQxVD4VB1k5LF4xXy5ulvP5Nb5lP+dj + HrUzybAL7xX51CCfXS4i4N8EtkFBngJnghUJ31ujPZRGwRMHa5yQMaXgG2NT7xE1tanutmENL6fs + tMXqUBaZUMF5todx4gpnaS2dE43pHJRlOdFd1WQ/KY61nyhuJawnKs8N6TbU1LOCx91Eecfekja9 + FHD3LzX+oiLnj4/89wIvvUr2g45Kp2gA8wEbzbZmL4UD0hVs9t8AAAD//4xVy2obMRTd9yuEN22h + tjXjt7sypVAKgUC7KaELjUaO1WpGqSyZOCU/lQ/JN+VcaewZxzUUBixd6+jcx7lX7JuHULbs872Q + yhWo8ZatzMNG6Uq5t1hXe2N12X9+Yu9Wz0/v2Xd7r6X2e6Zr9kOBfxBl4PyBT3f51Cmfcmyb+FSH + Txz4GNaJjwnmO0R7IiKRWxNisjKOHVQRaEOKFbdqS+oc5T1KS31Lglf4QZZqU4Va/wkqJi7j2Xg2 + W2TjdAN1TDad5v0JXyxI6ucmiD9V4qb3FXqvoaaVQ0wI9yf1mbSuRB18IA+uQ3GlyoQ6GvPJnEqa + QKkb//Z02dQXJ6sISRbQZwhVmBjcsS1JKi2kkt3z8/b89dWnySRfjPn8DKFPOCYtBv/1dblkLfbj + Kbi0ugsdtdAM02Y0XwzXdWXNgIbDgHOqAslzo7feYjpRtN10IGVK72LInaky5GN8jPMl55G+CxFS + qjt/DsE3vQBRNaT28BowH2Y549N/AY51+F8AThtdq4uILGbBqbVyqpYk0BvshfdOF8HHfe+LQJPh + SiekJzmhFgBIG2rM7ozPPvTWwZhfSXfNqIjDVmPgU28g70oGIxyrm8lLXKRkY6XweBOi7FHCJbtY + LURgZVNsNF2EUV87KUEFdw1KmdwvrP196HUcQQ50qNIaS5/eoKR/gDbKHdx4ZW5iSSxN/nqUrTsM + kzpUBb10ZBE7oY0ojFo7WwVnkvVwK/5RjQkhnHkLW3s3ud7Syo2AohoSmmCnjxxpK5812koH1tp1 + 5u3xKdtRMLEEx7w8Pj6+eQEAAP//AwA+B1AjsAcAAA== + headers: + Access-Control-Allow-Origin: + - '*' + Access-Control-Expose-Headers: + - X-RateLimit-Limit,X-RateLimit-Remaining + Cache-Control: + - private + Connection: + - Keep-Alive + Content-Security-Policy: + - upgrade-insecure-requests + Content-Type: + - application/json; charset=UTF-8 + Date: + - Mon, 24 Jul 2023 19:10:55 GMT + Keep-Alive: + - timeout=4, max=40 + NCBI-PHID: + - 322C65F4701B8C4500004BF546C11113.1.1.m_1 + NCBI-SID: + - C10A4B5C8D561CA3_AE63SID + Referrer-Policy: + - origin-when-cross-origin + Server: + - Finatra + Set-Cookie: + - ncbi_sid=C10A4B5C8D561CA3_AE63SID; domain=.nih.gov; path=/; expires=Wed, 24 + Jul 2024 19:10:55 GMT + Strict-Transport-Security: + - max-age=31536000; includeSubDomains; preload + Transfer-Encoding: + - chunked + X-RateLimit-Limit: + - '3' + X-RateLimit-Remaining: + - '2' + X-UA-Compatible: + - IE=Edge + X-XSS-Protection: + - 1; mode=block + content-encoding: + - gzip + status: + code: 200 + message: OK +- request: + body: null + headers: + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate + Connection: + - keep-alive + User-Agent: + - python-requests/2.31.0 + method: GET + uri: https://eutils.ncbi.nlm.nih.gov/entrez/eutils/esearch.fcgi?db=taxonomy&field=scin&term=SACCHAROMYCES_CEREVISIAE&api_key=3a1f8d818b0aa05d1aa3c334fa2cc9a17e09 + response: + body: + string: !!binary | + H4sIAAAAAAAAALKxr8jNUShLLSrOzM+zVTLUM1BSSM1Lzk/JzEu3VQoNcdO1UFKwt+MCAAAA//+y + UXTxdw6JDHBVSA1OTSxKzghKLS7NKVEICHXy8XRWUNLV1/fz8dXXdwlxUUgtBqtQMDIwMDMwM7LQ + 13f1U1JQyigpKSi20tdPLS3JzCnWy0tOytTLy8nVy8vM0EvPL4OK66eUpOjDdUKN0gMKKtlxAQAA + AP//lJHdaoMwFIDv9xS+wVm73QwOByRkm9CqNXYwRhlBUwizOvQUurdfEluw9qo34ct3fpKT4NXZ + hKI7tkwLhBGwMLzWJy/O5I1i3TM9BjcyJvXKDuz6JTU9vzwtERw8+DV4LHvdDo1m9yTKMFwL1tUP + RVGEpekPLux53JCKhXiPi2z9KaT6FrKQH4lKYvmlKmtatntbRak+mB1CyA+Vr9Y0Nc0yEEYdMmZj + BidPv01XG0oRLug1TC6FWU5vRbbNERyF4HwM3BxN/zfR94xwU4vg/ucfAAD//0KKHy4AAAAA//8D + AHhpdlNdAgAA + headers: + Access-Control-Allow-Origin: + - '*' + Access-Control-Expose-Headers: + - X-RateLimit-Limit,X-RateLimit-Remaining + Cache-Control: + - private + Connection: + - Keep-Alive + Content-Security-Policy: + - upgrade-insecure-requests + Content-Type: + - text/xml; charset=UTF-8 + Date: + - Mon, 24 Jul 2023 19:10:56 GMT + Keep-Alive: + - timeout=4, max=40 + NCBI-PHID: + - 939B0C0DCD2944A500004A1F9170C17E.1.1.m_1 + NCBI-SID: + - 347C2FBBC78D386C_90D9SID + Referrer-Policy: + - origin-when-cross-origin + Server: + - Finatra + Set-Cookie: + - ncbi_sid=347C2FBBC78D386C_90D9SID; domain=.nih.gov; path=/; expires=Wed, 24 + Jul 2024 19:10:56 GMT + Strict-Transport-Security: + - max-age=31536000; includeSubDomains; preload + Transfer-Encoding: + - chunked + X-RateLimit-Limit: + - '10' + X-RateLimit-Remaining: + - '9' + X-UA-Compatible: + - IE=Edge + X-XSS-Protection: + - 1; mode=block + content-encoding: + - gzip + status: + code: 200 + message: OK +- request: + body: null + headers: + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate + Connection: + - keep-alive + User-Agent: + - python-requests/2.31.0 + method: GET + uri: http://www.ncbi.nlm.nih.gov/geo/query/acc.cgi?targ=self&acc=GPL2529&form=text&view=full + response: + body: + string: ' + + + + 301 Moved Permanently + + + +

Moved Permanently

+ +

The document has moved here.

+ + + + ' + headers: + Connection: + - Keep-Alive + Content-Length: + - '308' + Content-Type: + - text/html; charset=iso-8859-1 + Date: + - Mon, 24 Jul 2023 19:10:56 GMT + Keep-Alive: + - timeout=1, max=10 + Location: + - https://www.ncbi.nlm.nih.gov/geo/query/acc.cgi?targ=self&acc=GPL2529&form=text&view=full + Referrer-Policy: + - origin-when-cross-origin + Server: + - Apache + status: + code: 301 + message: Moved Permanently +- request: + body: null + headers: + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate + Connection: + - keep-alive + User-Agent: + - python-requests/2.31.0 + method: GET + uri: https://www.ncbi.nlm.nih.gov/geo/query/acc.cgi?targ=self&acc=GPL2529&form=text&view=full + response: + body: + string: !!binary | + H4sIAAAAAAAAA5S93Y4lR5ZeeT+A3iF01wLY5DnH/fiPAEFq1agbGqihglq6GAxmiGAyioxRMjMn + M7KqqIeah9CTyb7Pq1VMD9ZaLUBAi2Ur45itbe5m28zc/f/57X/4m//8t//xP/39w796+Lvf/ofb + /bb/s//tn//27ePL795//Onbl+eXt0+j6P/6P58eP718e/u/H/7md7/7+aenl4/Pf3zo//bwd0/v + 3v/09HD7+vLwNx8/Pv78y3/+w9P7bx/fvHn69On5/btf/4VPL48vnz+Nst9+/u7t85uHwf0fn989 + XKeH2+Vy/4L8/N1Pz/1L337/+JJaBbzsr8C3qernD4H+kfzbp+8ebtdBXtcvmvf05sd379++/+Hn + wTy/e/j0/PL54f3b5x/ev/v85u3T+5fn759+yX///Gm0/LvPL0dz3rz/6aenj2+eH9/+Enr/8YfH + d8+ffhrAP7z58fm/vf80FPz4+PH9Tz8PEw8f3v/03dNf4r8g3zx9fPr986fnxy/wl8c/Pn8/2Hnb + l1/93/fp9sv//afHd59/9/jm5fPHp4+j+M/x+wvQtx8+vn95/+b92wH/5x+fHj49/X+fn969eRp+ + gj627eP/9/Dy4/Onh8eE/OEPj58G9/bpzcvT9w+/G/V/+HBEc+h/fPj0/vPHtGf0lH/7+O6//vf/ + /+Gv/n78oxG2+V88PL77fjT73Q+jcr95evcy/s9fjbA+/an0+J2nh3/4+hc2jn/z9WHy4Yf2v09f + PXx8+vRh1OD5909vf/764bcf33+Xyr98SpfK3ziq+vzuzdvP3z89XK/nQD98eHz++Onh5f3D90+j + Y7w8PD2++fHh5ePju09vPj5/ePn6l8LejIaNfvPtu8+jDvG6j054n77srx8+vP/4Mso+PQ8X7999 + 0ZOejj96dKRfXFR/7uWR+/Tw8vOH5zePb9/+fJS8xPCo4t/9u//48PnT87sf2rTxX48fR1/7/dPD + +DM/vv/+4fj73w348eXhx5eXD//ym2/+8Ic/fP3uzXfPX797+9PX755//PqH97//ZkT7/x2N/fTN + uFa/SYi/6UU7KvT1jy8/vf3Ldf7LJek1I9ZPv/nx+cMI9q/fJsbF8+7l8Xm08sOfI/Vn93/W/uno + UN+9f/nxL14fR4/4SxfbVw9/+PF5hLI6R91e/vD+4af3o065ft+/i9qXz98/D1fpQM/jn73/3cPP + qXW70e+fv4/nAX/4+PTj07tP0fzm/e+fPj7+8BS0VfvTP/3qiMefWv+X2v6nTjgi/GG0/o/P46oa + nfbh/tU6z7/0ke5//2qbr/mZ/OH8xz1dPm0bHX5cMblvvb487l9dxv3u9KdGN0rBdP3Vv/DqxvSH + p+++ffv87r+OkP6iBz3+z7769VDyzZ96+Te9laanfvPdz+Nnv//85iXoH//1n/7jX1XoX98u/8u/ + 8Pju8e3Pn54/jd75/dMf+0e/uBLTj968fPvu8afc6R+++urPV9NXD//+3Zuvf41++unxOXe40dn/ + zfma+OrhT436N1/W5Nf+zocf37/Lz27b9tfTcvvr2zyvv8aNjj7G0s8djP4p9Xv8/vsRnIyLD79W + /Ob55eeOF+M/H37z9vHj469RGVvzg7/5m18r/W/PH775MC6Dx7fjf/o+3H6/3K+/+nPvP797+Zhf + /C//8Kt/658UyF+P38ent4//eBt8O+7/7x5zCx+3gn+Z6cK+rNeHv/plwW/+97/9F//0f3+drvcL + /4FPjz99ePv0bQfPv/uHv18u222S8hnK93m5LFK+SfnO5deLlF+l/Cbl1P6US/uvdykXP19O0n6l + HP1ttzv6224L+hvl6G+Uo79Rjv5GOfob5ehvlKO/UY7+Rrn4W8TfKv5W8beKv1X8reJvFX+r+FvF + 3yr+VvG3ib9N/G3ibxN/m/jbxN9G/q6XZcIOUIBaUICaUIDaUIAaUQBbcV02vI0V0L9AHakA9aQC + 1JUC3KgvFcBYBMBYBMBYBMBYBDCTNzQ5zzduZgBsZgBsZgBsZgBsZgBq5khot5maWYA6TAHqMAWo + wwS4k8kCZLIAmSxAJm+XZcVrswCLGgCLGgCLGgCLWla8SxdgUQNgUQMwUXinLmAm8V5dwExuZnIz + k7uZ3M3kjiavlwveigtgMwNgMwNgMweA96gC2MwA1ky8R92u233nZg6AmzkAbua2XLiZA+BmDoCb + OQBp5nLB6yIAXhcBuMMMQExyFlfATGIeV8BMYiZXwExiLlfATMqlt3E6V8BMyqW3LXLpDcBMyqU3 + ADOJ04MCZhJnQQXM5M1M3szkZCYnMzmZyclMTmZyMpOTmZzM5GQmJzM5m8nZTM5mcjaTs5mczSRP + WQOYSZ6yBjCTPGUNYCZ5yhrATN7N5N1M3tHkNF150hsAVQdA1QFQ9QB40hsATQZAUQPgyV4AjEUA + /QmMRQBWvcpkbwA84gTgZq4y2QvAHgbAHgbAHgZgHnjECcBdbgBmkkecAGaSR5wAZpJHnABmkkec + AGaSR5wAZpJHnABmkkecAGaSR5wAZpJHnABmkkecAGaSR5wAZpJHnABmkkecAGZSRpwBmMm7mcSt + lgC411LATOJuSwEzifstBcwk7rjcpn3mrHna75w1B2APA2APA2APA2AP2f41QDzcOWsOwD1qAGaS + s+YAZpKz5gBmkrPmAGhy3ma+BQ2Ab0EBsJkBsJkBsJkBsJkBrJl8C7rfJr54A2AdAmAdAmgdsNMG + wE57zx3CAGsm7mcV4GausmYegJu5ypp5AOy0A+D0IQB22gDYaQOwyVXWzAOYSV4zD2Amec08AJpc + R5KEfyGA/QXOUAKg6gCoOgCq3uaNL5wA2IoB8JUVAHtUAGxmAGzmtu6csQbAn9gvOw/uAfQvYCUH + wD1qALwLE8Aqqc3kzD0AdpgAeG0GwGszAF6bAbBPBmCT1wvP5QKwyWzkGMAmr1eeYARgUQNgUdcr + p5MBpJlXTif368xpdQCJxczp5AA4fdivd77LBeBOOwCpw51T+wDSzLvF4s5TtQBcyZsk5vuy8Vwu + APeoAbCHAbCHZeN0MgD1yWlkejhdLECtKECVDIADSgH7CZwmFSCTAfBmPgDeIZ0u6w3vDwW4DgNg + USuf6inArVj5VE8BjsXKp3oKmChcRC1gJnERtYCZxEXUAmYSF1ELmElcRC1gJnERtYCZxDttATOJ + d9oCZhJHvQJmEhdRC5hJXEQtYCZxEbWAmcQVjAJmElcwCphJHBYLmEkc9QqYSRz1CphJHPUKmEmc + BRUwk7gOU0BMznYzn+1mPtvNfLab+Ww389lu5rPdzHnhLgAmxQWkP8wyuA8ATV7HhYWtCICVvL56 + jPc1wENSAGxFAGsFD0kBsD8EwP4QAPtDADPJQ1IAM8lDUgAzyUNSADPJQ1IAM8lDUgAzyUPSNBIU + FBUARQVAUQFQVAAUFQBFBUBRAVBUABWFXW4AuOxWAE3O8xXXSAtgJQNgJQeAK1oFrJJ8nwyA4Q6A + 4Q6A4Q6A4Q5gJnFFq4CYvOGKVgExecMVrQJi8oa7kwXE5A13JwuIyRvuThYwk7g7GYDvkwPg+eQA + +A4TwCqJS+IF7Cd4gWIAdund7Lq4Wbe/WbefrEdNFu7JojnhVnIB6fYTL7PkYWIFuBUD4P6wXPhu + P++rVHIA/BP7xlOUAGxyAGxyABzuAXCX2/n5rALoYQztvCYWAEUNgNfEAqDJAGgyAJoMgCYDoMkA + aDKAmeQEJICZ5AQkgJnkBCSAmeQEJICZ5ATkvu68mByATQ6ATa47busXYJMDYJMDYJMDYJMrbx0W + MJM84gQwkzzRum+8dViATW68dTgt4zaJogKgqAAoKgCKCoCiAqCoAXDOGwBFBTBRPKAEMJM8oKzT + xBPOAOhhADwDCYAeAqCHAOhhXVe+DQbQv4Am133B000FsE8GYNUDwD4ZgGOxL3wbDMCxGACbHACa + 3O4zV3IAXMkAWMkAWMkAVkm+VwfAcAfAcAfAcAfAcAcwk7y8EMBM8vJCADPJywsBzCSPegHMJI96 + AcQkH34uICb58PO0rXz8KYBEU055TfssadQAOI0KYD/BiXkA7DABsMMEwA4zpji8vBBA/wJ2uQDY + 5QJglwvAsdj53GABjsXO5wYLcCwGYCY1FjzqBTCTPOoFMJM8oAQwkzygBDCTPKAEIJPz9cILmAWo + kgWokgWokgW0khTuAhTuAhTuAWyY8xYQDxtO9gqIhw0TkALiYcMEpIB6oG4fABOQAmYSE5D5OvOM + tABXcuYZaQGu5Mwz0gIY7tt1Z5MDYJMBsJIBsJIBrJKYyhXAPhkA+2QA7JMBMNwBzCQeLShgJvFE + TQEziSdqCphJPFFTwEziiZoCZhJ3iguYSdwpLmAmcaJVwEziRKuAmcSJVgEziROtAmYSJ1oFzCRO + tAqYSZxoFTCTfDMPwCbv/Gx1AW7mnY9wz9NN5jAB8CcC6E+gyQBoMgCanG4TX3qTPFRYQJrJDxUW + kGbyQ4UFtJnYYSZ56rAAXnoBzCRfepM8t1jATPKlF8BM8qUXwEzyPCqAmeR5VAAziTlOATY5X/CZ + oAKseua35BVg1TO/OCUA7m8WYNUzvzilAKue+cUpBcwk7m8G4Jt5AKuD3MxnflFGAYsmz0jz1lWM + RQCMxWwjzmwjzmwjzmwjzmwjzmwjTgDs1Xn7LPbqAGYSt2kKmEl8KUEBM8n3h3nhV/kVYJMLv8ov + AN8fArDJhV/lV4BNLvwqvwJscuFX+RUwk3j+oYCZxPMPBcwkrwUFMJO8FhTATPJa0H3i5ccC2IoA + 2IoA2IoA2IoA3IqV36tWgCu58ovXCnAlB6CVxE57X2+46VYAO+0AcJumAId7AGLyhptuBcQkn10s + ICb5cGMBM4mbbgOYcNNtACsvcQQQkyvnWQHE5Mp5VgAxuXKeFUBMrpxn5bUnZpLzrABmkvOsAGaS + 8yx7P8xs74eZ7f0w831feekvANdhAFyHAWgdOJr7ykt/y4U/r1IAKxkAKxkAKzkA7nIBsMsFwC4X + ALtcAOxyATDcAcwkd7kAZpJT+0VeoluAPchLdAuwB3mJ7rzsGw8oAfQvsMkBsMkBsMl95wFlvfBr + FQPw/kUA7NUBMJoBMJoBMJoBMBYBMBbj/sIz0gDcigFwKwbArRgAt2IA2grsUQGwRwXg/rBceLIX + wEzyZC+AmeTJXgAzydfmuvP5yQJcyZ3PTxbgSg5AK8nhHgCHewAc7n3ljeAAHO4BmEm+mQcwk3wz + D4AmNznzXwB/YpMz/wUwWAEwWAEwWHnfOQYrAAYrAAYrAAYrgJnkYAUwk7xGGsBM8qi3jfRCgJUH + 1gCsegCsegCsegCk+n658XNJBaiSBaiSBaiSBbSS1B8KUH8oQP2hAPWHAhTuALguV8BM4oBSwEzi + PaqAmcR7VAE2eV9w/lCATd4XnD8UYJMDYJMDYJMDYJMDYJMDYJM7n9krwK3Y+cxeAW7Fzmf2CmAr + rpeJVQfASgbASgbASgbQSmKntS823u2LjXf7YuPdvth4ty823u2LjXf7YuPdvth4ty82FjCTfCMN + wCbXK67DFOCfGID9BK7DFOBgDYCDNQAO1gA4WAPgYK38ZZkCZhLXYQqYSTxiUcBMYtZcwExi1lzA + TGLWXMBM8qgXwEzyqDddrnyvDoCtCICtCICtCICtGADmFwWwPwTA/hAA+0MA7A8BzCTmFwXMJOYX + BcwkrqoVMJO4qlbATOKqWgEziatqBcwkbg0UMJO4NTBmvPxETwFu5sJP9BTgZi78RE8BbubCT/QU + 4A6z8Z5aAa7DxntqBawOPLAG4E678Z5aAY7mxntqBTiaG++pFTCTEs2Nv7lQwEzywBrATPLAGsBM + 8sAawEzywJpHQM0kp5PzSHHwJwbAuX8A+wnO9QJgsAJgsAJgsAJgsAJgsAJgsAKYSZ4/zMvG+WYA + FjUAFrXwtl0BFrXwtl0BFrXwtt0AeNuuAHe5hT9OUUBM7ry6GEBM7njIswCavMueewAeku6y514A + Rd1lz70AirrLG+oKcDPlDXUFuJkzH1UtwM2c+ahqAewPAbA/BOD+MPPr6wuYSV7JCWAmeSUngJnk + lZwAZpJXcgKYSV7JCWAmeVgMYCZ5WAxgJnlYDGAmeVgMYCZ5WFyu/A2OAvgTAfQnMFjLlb/BUQCD + FQCDFQCDtUwb32ECYDQDYDQDsOoBsOpJ1ooDsOpJ1ooDsOpJ1ooDmEm+wywzf8owAC9QBOBWzPwp + wwLcipk/ZViA+8PMnzIswP1hANwfBmAm5dIbgJmUS28AZhLP9BYwk3jAsoCZ5PWHAGaSJ3sBzCRP + 9gKYSZ7sBTCTvP6wyLHhAvwTcmy4AAdLjg0X4GDJZyULcLDks5IFOFjyWckCZpKXOBb5rGQBM8lL + HOPfc38IgK0IgK0IgK0IgK0IYK3g/hAA+0MA7A8BsD8EMJPcH7Y7v1u+AP5EAP0JDFYADFYADNZ+ + 5ffkFMBYBMBYBEBRAVBUABQVAEUFQFEBVBT26gHwNCmAmeRpUgAzydOkAGaSp0n7cuGVvQFIjxoA + exgAe1j46ewC7GHhp7MLmAfpUQs/nV3ATEqPWqw/LNYfFusP8tXIu3018m5fjbzbVyPv9tXIu301 + soD0KMlYA5hJnjYHMJM8bQ5gJnnaPACeNgcwkzxtDmAmeQ6z2ybsLpuwy+V6wSlKARIVAKcoBUhU + ARJVgEQt2e6m/lBAmnnHzYUlG+bSzAU3FwpIMxfcXChA/aEA9YcC0h8W3FwoICYXXJYPgMvyBcwk + LssXMJO4aFbATOKiWQEziYtmBcwkLpqNUPLjNgXYw8pP0xTgZq78NE0BbubKT9OM7sQvhyyAPSoA + 9qgAaDIAmgyAPSoAqg6AqgOg6gCo+nrjiVYAnGgVYNU3frCxAKu+8YONBVj1jR9sLMCqB8CqB2Am + capWwEziVK2AmcSpWgEziVO1cZvlHbEAuCNWgD3IjlgB9iA7YgXYg+yIFeAeJTtiBcyk3Cdn/qBz + ATOJ6WQBM4npZAE0eZN3UBTAVtzkHRQFsBU3WUwuoK3A/nCTxeRlushPBMCfCKA/gV1uADzyBsBg + BcBgBcBgBcBgzbeVbyABsA4BsA4BtA7YYQJgNANgNANgNANgNPMtRIxmADPJN5D5zkscBbiSd17i + KMCVvPMSRwEM9xj22OQA2GQArGQArGQAqyTfigNgnwyAfTIA9skAGO4AZpInnAHMJE84A5hJnnAG + MJM84QxgJvnCCWAm+cIJYCb5wglgJnnCGcBM8oQzgJnEtcECZhLXBguYSZ6iBDCTPEUJYCZ5/hDA + TPL8IYCZ5PlDADPJ84cAZpLnDwHMJGfuAcwkZ+4BzCQe6S9gJvEYeQEzidu4BcwkbuPmTaC8sheA + 6zAArsMAtA4czQFwNAfA0Ryh4GgOgKM5AI7mAMwkHocrYCbxwG0BMymX3gDsJ+TSG4AFSy69G39w + LS+f5ewgADdz4udYC3AzJ36OtQA3c+X9rALco1bezyrAHlbZzwrAHlY+k1PAPMiYtfKZnAJmUsas + lc/kFDCTcuHkcJIBZlIunI3fzVKAW7Hxu1kKcCs2fn9UAWuF5Hobvz+qAPeHjd8fVcBMSq638fuj + CphJyfU2fn9UAMn1BmAmJdcbgJmUXG8AZlJyvQGYScn1BmAmJdcbgJmUXG8AaDIvkEBRAVBUABQV + AEUFQFF5iQWKCoCiAqCoACaKh8UAZpKHRfv69mJf317s69uLfX17sa9vF2APA2APAzAPPHUPwD1q + AGaSp+4BzCRP3QOYSZ66BzCTPHUPYCbxWbkCZpJ3BgOYSV7YD2AmeYoSwEzyFCWAmeQpSgAzyVOU + AGaSpygBzCRPUQKYSZ6iBDCTPEUJYCZ5ihLATPIUZZ3lMFsAbsUsh9nWWQ6zBeBWzHKYbaTlfHUP + gK/uAFiHAFYHvLrX64UHlALU5QpQsApQsAqQqAA4oBQgUQVIVAEThQNKATOJA8p6nfjFawVY1MQv + XivAoiZ+8VoBFjXxi9cKoKjbhb9DGgCnrAWwmbfrFWdiBbAVAbgV1ytODwpguAOwh9EI9jAA84A3 + kPWWT08ZwCYHwCYHwCYHgBdOAFY9AFY9AFY9L9LlBsCq75wUF+BW3DkpLsCtuHNSXMBaIf3hzklx + Ae4PA+D+cOdTwQF4vAggzVzxlHgBCdaKp8QLSCtWTEgLWCswIS0gwVrlNjgACdbK84cAZpLnDwHM + pPWHVfsDzx8CiMkd9/UKiIcdJ70F2MOY87KHAbCHAbCHAbCHAXCPGgD3qAGwyQGwyZXfqV6AW7Hy + uv06Txf+iQD4EwH0J1BUABQVAEXlxWvyEzsmpAX0J7BXB8BePQBMSAtgrw4gwdpxzbyABGvHNfMC + ZpKnBwHMJE8PBsDTgwBmkqcHAcwkTw8CmEmeLgYwkzxdDGAmeboYwEzionoBM4mL6gXMJC6qFzCT + nNIGMJOc0gYwk5zSBjCTnNIGMJO411zATOJecwEziYc0CphJPB9VwEzi+agCZpLnUQHMJM+jArDJ + WeZRAdjkLPOoAGxylnlUADY5yzwqAJscAJscgJnkHCeAmeQcJ4CZ5BwngJnkHCeAmeQcJ4CZ5Bwn + gJnkHCeAmeQ10gBmktdIA5hJXlULYCZ5VS2AmZTJ/2yT/9km/7NN/meb/M82+R+AmcRNtwC46VbA + TOKmWwEziZtuBcyk5Dgzv92lgJmUHGfmh44LmEnJcWZ+6LiAmZQcZ+aHjteRuvPcPoD+BYxFAIxF + AIzFAHhuHwBjEQBjEQBjEQBjEcBM8tw+gJnkuX0AM8lz+wBmkuf26yLZQQD9CxyLRbKDAByLRbKD + AByLRbKDAByLRbKDAGaSs4MAZpKzgwBscpXNpgD6FzgWq91hVrvDrHaHWe0Os9odZlwZUoeVZ0F5 + QFzqwM8UF+D+IO9mKSDR5GeKC0g0+ZniAmaSZ0GbPK5bAE1u8rhuATQZAE0GQJPbuBNzHRZ+TXcB + rsPCr+kugNEMgNHc5JOOBTia8knHAhxN+aRjnnyQHrXxYbYCXIeND7MV4GhufJitAEdz48NsBTia + Gx9mK2AmeV4dwEzyvDqAmeR5dQAzyfPqAGaS9w4CkMntcuOTqAVIVAESVYBEFSBRBUhUARJVgEQV + MFF48RYwk3jxFjCTePEWMJN48RYwk3jxFjCTePEWMJN48RYwk3jxjgFr5VYMgFsRAFsRAFsRAFsR + wFqBt6AC2B8CYH8IgP0hgJnEiVYBM4kTrQJmEidaBcwkJiAFzCQmIAXMJCYgBcwkLnEUMJO4xFHA + TOISRwEziUscBcwkLnEUMJO4QFHATOICRQEziQsUBcwkLlAUMJO4QFHATOICRQEziQsUBcwkbl+O + 7IM/dF6ATe78ofMAcnXv/KHzAmxy5w+dF2CTO3/ovICZlKt75/P2BcwkX9232x1XUQqg6gCoOgCq + DoCqA6DqAKg6AKoOgKoDoOoB8LQ5AJuUJ5sC8EzsJk82FeBgTTKfDMDBmjgZLMDBmjgZLMDBmiQZ + TJplJnkmFkBM8lssCkgl+S0WBaSS/BaLAhzuZZNuv/AnVwpwJRf+5EoBqyRniwG4Ty78yZUC3CcX + /uRKATMpV/fCn1wpYCb56s73WvEvBNC/gLEIgLEIgLEIgLEIgLEIgLHIZ2kxFgEwFgHE5BUPUBUQ + k1c8QJXXhXCXGwB3uQDYzADYzADYzADYzPt+5/4QAPtDAOwPAVjUzk/jFmBROz+NW4BF7fxpiQLc + H3b+tEQBNDl+gMfuAPoXMBYBMBYD4LE7AMYiAMYiAMYiAMYiAMYigJnkPCuAmeQ8awCcZwUwk5xn + BTCTnGcFMJOcZwUwkzxVC2AmeaoWwEzyVC0Am7zzAaoC+hc4Fnc+QFWAY3HnrzYU4Fjc+asNAeT+ + cOevNhQwk3x/WK/8Jq4C2MwA2MwB8NgdAJsZAJsZwJrJHWa7zjziBEBRAVBUABQ1ADzCXQBFBUBR + AVBUABOFRwsKmEk8WlDATOLRggFsvA4TQCq58TpMAKmkJKSbfAO0gIRbEtJNvgEagO9Rm3y2voBV + ku9Rm3y2voD0ST5yU8DCzXOY8e/xOH0B/QvcYRZ+y00AXgINwLFY+C03BTgWA+BYDIBjMQAzKZfe + AMykXHrLIpfeAMykXHoDMJO8FhTATPJaUAAzyYN7ADPJg3sAM8mDewAzKYP7AMwkzwYDmEmeDSaj + xb8QQP8CxiI5McYiAMYiAMYiAMYiAMZiX+W4SwAWtcpxlwAsapXtiQAsapXtiQAsapXtiQDUafcx + 9UdRBUhUARIVAEUVIFEFSFQBElWARO2jT+OEswCLGgCLGgCLWq94lrUAixoAixoAixqAicJnBguY + SZzkFDCTOMkJgJOcAmYSJzkFzCROcgqYSZzkFDCTOMkpYCZxuamA1QGXmwpYHXC5qYBFE5ebClg0 + 8dDOnoQVW5GEFVsRAFsRAFsRAFsRwFqBy48FsD8EwP5wk4XcAmjyJgu5BdDkTRZyC6DJmyzk7rfp + guejCnAlJ96dLMCVnHh3sgCGe77z91AKYDQDYDQHwPfqeeEF7QJYh/uY86LJAGgyAJoMgCYD4IUT + AJsZQJuJqu9jao+qA2CfDCAmV9zXKyAmV9zXKyAm+WWABcQkvwxwv8/8pp0C/BMzv2knAI96AThY + Mz9Lm1wQ880CWMkB4MpeAaxkAKskruwVwB4VAHtUAOxRATDcAcwkD2rb7cpp1AA4jQqAqgOg6gCo + OgCq3u783uYC+hcwWAEwWAEwWAEwWAE4Fnf+EEABjsWdH78qYCY5vxgDM/+FAPoXMBYBMBYBMBYB + MBYBMBYDwGXYAhiLABiLAGYSl2ELmElc0SpgJnmhJoCZ5DtMADPJd5gAZPJ6uVz47NFBUC0Ogqpx + EF4PCulBUEwPgoJ6EBTVg6CwDuI249MgByG/Mgj/Feo9JTDjOQiJ3CAkcoOQyA1CIjcIidwg1ClO + 1w9CneKEPcTdroZBmNO7XQ2DMKd3uxoGYU7vdjUMwpze9Wq449S9BJ6QOAh1imckDkKd4imJg1Cn + uGx9EOoUF64PQp3i0vVBqFNcvD4IdYrTy4MQp3f+FPZBSD3u/DHsg/B6SGzv/D3sg5DY3vmL2CUw + ET0Iie2dP4p9EOoUl2APQp3aWHnnL2MfhDq1sXLM1aS1g5DWDkJau+nMYNOZwaYzg01nBpvODDad + GWw6M9h0ZrDpzGDTmcGmM4NNZwabzgw2nRlsNjPIgUiuaQiuaQiuaQiuac5dak1lbLhdb5jLHgTH + NgTHNgQbC8HGQrCx28Rvnz0I/xtsfRBi/bbwUdISMlMKIZFb+DTpQUhsFz5PehAS24VPlB6ExGXh + M6UHoU49LnY1DEKdykwphDqVmVIIdYprcQehTnE1rgQuxx2EOsUFuesl73zlXwnBvxLCf4Ujd5fH + 4EvIjC0E1zQE1zSE1lTmMCG4j4XgPhaC+9ggZNwPofWQcT+E14P7egiObY5b8N8IoX9D+kcI7h8h + uH+E4P4RguMSguMSguMSguMSQp3KHDeHWNSpzHFDqFOZ44ZQp9zXr3nYH9tSAttSAttSAttynSd+ + MVIJPApyEFzTEFzTEFpTzvdLsPUQ2JNLYE8ugT25hDrlu0MJdnq3tYsS3Ja7rV2U4Lbcbe2ihLaF + 73QluH/cbe2iBPePu61dlFCnfKcroU75TldCnfKdroQ65TtdCXXKo3oJdcqjeglzOvHcsoQ5nXhu + WcKcTrzOX8KcTrzOX8KcTrzOX0KdcvZaQp1y9lpCnXL2WkKdcvZaQp1y9lpCncrMIIQ6lZnBXU6R + XK/5aiUbC8HGQrCxEGwsBBvL5zPZ2H7jFzgcBBsLwcZCcC8MwU5DoNOcQOKxoQS2tgS2tgS2tgS2 + tgS2toS3FntQCexBJbAH5dAWjw0lzKmsW5awmt7wJE4JPIpzEFpTPIwziJ1f6VzC6rHzS50PQuuB + p4IOQnrhzi92PgjphTs/63YQEtudn3a73m75jq8S7DQEOw3BTkOw0xDsNAQ7DcFOQ7DTEOqUs9cS + 6pSz1xLqlLPXEuqUM74S6pQzvhLqlDO+EuqUM74S6pQzvhLqlDO+EuqUM74S6lRG9RDqVEb1EOpU + RvUQ6lRG9RDqVEb1EOZUMr4S5lQyvhLmVDK+EuZUMr4S7HRkDTK+hGAfIdhHCPYRgn2EYB8h2EcI + 88Ffgz4I+xV+SuUguCeH4J48CLnjhrDI8aMqB2GR4w+/HYQ4nW12EcL/hsRlttlFCInLbLOLQcjs + IgTHZbnyt5cHceOPLx+E/MqNP798EBz9EBy5EBy5EBy59c7v+DgIjm0Ijm0Itj4IuVuGYOvbGKTY + egi2HoKth2DrIdhpCHYagp2GYKfbjT+xdxDqlE8RlFCnfJKphDrlk0wl1KmsCIRQp5KJh1CnkomH + UKeSiYdQp5KJh1CnkomHUKe8olhCneKDOgehTvFhwINQp3I/DaFO5X4aQp3y/XRM1u88uyiBrS2B + rS2BrS2BrS2BrZ2u8jGwg+BfucrnwEpwP52u08y9sAT2whIclxAclxAclxBibBBibBBibJqlF+bc + J7clBLdFz59Oev500vOnk54/LYF3qRLcP0Jw/wjB/SOEOuUZSgl1yjOUEuqUZygl1CnPUEqoU56h + lFCnPEMpoU55hlJCnfIMpYQ4lfdAH4S0Rd4EfRDSFnkX9EFoW3gNpYT0j0FI/xiE9I9BqFPOokuo + U86ip5vtaJYwp7KjWcKcyo5mCXMqO5olzKnsaJYwp7KjWcKc3njNoIQ5vfGaQQlzeuM1gxLm9Man + XUqoUz7tUkKd8mmXEuqUT7uUUKc2hxmEOrU5zMqvUzsIae3KL1Q7CGmtvGLvIKS18pK9g5AeJK/Z + OwjpQfKivYMQp/vVxspBSGsHIa3dZb9hmq6yhlKCaxqCaxqCazoImaGE4LiE4LiE4LiE4L4egvt6 + CHUquWkIdSq56SAkN53kG+0HIfWQr7SXsF648af5DkJiOwiJ7SAktoOQ2A5CYjsIdSoztnm5ST8N + wW0JwW0JwW2Z5cXJByFt2eRNNiU4tiHExyZvsikhPjZ5k00J8bHJm2xK8PUyCJnlhFCnMssJoU5l + lhNCncosJ4Q6lVlOCHUqKzUh1Kms1IRQp7JSE4Kd5uMWXNMQXNMQXNNltVWWEPIrq62yhGAfIcTH + aqssIbiPheA+FoL72CBkDhNCncocJoQ6lbEhBDvNkTwn2HoIth6CrYdg6zkayNZDsPUxs5S51CBk + LhVCf0V2AkJwbENwbENI5AYhkZstOwkhkZstOxmEzAtDqFOZF4ZQpzIvDKFOZV4YQp3KvHCV96+X + 4PMwJdSprBms8g72g1CnsmawymvYD0KdyppBCHUqawYh1KmsGYRQp7I7G0Kdyu5sCHUqu7Mh1Kms + OIdQp7LiHEKdyopzCHUqK84h1KmsOIcwp7biHMKc2opzCHNqK84hzKmtOIcwp7biHEKdSi4WQp1K + LhZCnUouFkKd2oxtthXnEOrUZmzzzWZsg1CnkouFUKeSi4VQp7JrHkKdyq55CHUqu+Yh1KnkcyHU + qeRzIdSp5HMh1KnkcyHUqeRzIdSp5HMh1KnkcyHUqaz1hVCnstYXQp1qHsUfSjsIdap5FH8r7SDU + qeZRN82jbppH3TSPkqcWS6hTzaPkqcUS6lTzKHmuoIQ61TxKnisIoXmUPFdQQp1qHiVPLZZQp5pH + yVOLJdSp5lHy1GIJdap5lDy1WEKdah4lTy2WUKeaR8lTiyE0j5KnFkuoU82j5KnFEupU8yh5arGE + OtU8Sp5aLGFObQU+hDmVpxZLmFN5arGEOZX31MzzRa6GEvgrJfxXMHIh+GoogZG7Xy6ynlzC/wZG + vwRGvwRGvwRGvwTGpQTGpQTGpQTGJQRnJyXUKWcnJdQpZycl1ClnJyXUKWcnJdQpZycl1ClnJyXU + KWcnJdQpZycl1ClnJ/fLmBZKPQYh9RiE1GMQXg+J7ZieSmwHIbG98fcgD0Jie+MvQg5ilffzlxCn + q7yfv4Q4XeX9/CHM6Srv5y8hTld5P38JdcozpRLqlGdKJdQpz5QGIW+LLmFO5W3RJcypfLmnhDmV + L/eUMKfy5Z4S6pRXnEuw0+uY6LCPEOzjuu9y3YZgHyHYRwj2kYfz2UcI8TEI7mMhuI+FEKeDUKdy + 3YZQp3LdhmCneZ0BOw3BTkOw0xDsNAQ7DcFOQ7DTEOw0BDsNoU7lug2hTnmnqIQ65Z2iEuqUd4pK + mNNVW7tqa1dt7aqtlZNMJaS1y51Xi0vIrwzCf0WcDkL66SCkny53Xi0uwZG7j6kUtzYEtzYEtzYE + tzYEt3YQclWu141XekuwjxDck0NwTw7BfSwEWw/B1kOw9RBsPQRbHwSv9JZQp7zSW0Kd8kpvCXXK + 86Al+Rz+yqKZ56KZ56KZ56KZ56KZZ5474H2gEmi9BPsIwT5CsI8Q7CME+wihPvjuUAJ7cgl1yneH + EuqU7w4l1CnfHZbbuvP4EoLHlxJibBBsbJ7uvNZXgo3NC3/w/iC4B4VgH4OQHhSCfYRgH8ssK2gl + uLUhuLUhuLWD4P39EtzaMRvj8SUEjy8l9Fd4fCnBfSwE97EQfFWG4MiF4MiF4MiFUKecZy/rpH9j + +if8Dc7VS0hcJlm3LCFx2TdePS8hNR0E13S7yHy9BDsdhNxPQ3BNQ2hNeVRfL6vsA5XAtqz3eeNR + vQT29RJcjxBaD74nl0CnJdBpCXS6TfZcQQk0VgKNlUBjJdBYCDZWAo2VQGMl1BjPg0qoU54HbfMy + cQ5Ugo0NgseoEmxsuckptRLc2hDc2hDcg0KwjxDsYxB8HyuhPvg+VoJ70L7fpa8PQvp6CK5pCK5p + CK0p9/X9skoWXQLrUQLrUYLrcb3JtwVLoPUQPHcowa0Nwa0Nwa0Noa3ldf4SeM3l7R+8/1LC/wZe + tyUkLneZ0YfgGX0Jictd3sRZQuJylzdxllCnfC8swU7vd/maSQn+lRD+Kxy5fJTaCY5tPlvNsQ3B + sQ3BsQ3BsQ3BsQ3B1kOw9RBsPYQ65TluCD7rVEKd8lmnEuqU1z9KqFM+61RCnfJZpxLqlLO1EuqU + s7US6pT31UuoU7k7hFCnfneQ+/piT7SXUKdyX1/sifYS6lTu64s90V5CnfIct4Q65TluCXXKc9wS + 6pRX4EuoU848S6hTzjxLqFOejZdQpzwbL6FOZTa+WOZZQp3yCnwJdcq5aQjOTUuoU8ksFnuivYQ6 + 5fXTEuqU109LqFPJXxZ7or2EOpX8ZbEn2kuoU8lfFnuivYQ65XNKJcypPNFewpzKE+0lzKk80V7C + nMoT7SXMqTzRXkKd8omIEuqUT+6UUKd8cqeEOuWTOyXUqeZR8kR7CM2j5In2EupU8yh5or2EOtU8 + Sp5oL6FONY+SJ9pLqFPNo+SJ9hLqVPMoeaK9hDrVPEqeaA+heZQ80V5CnWoeJU+0l1CnmkfJE+0l + 1KnmUfJEewl1qnmUPNFeQp1qHiV7BSXUqeZRslcQQvMo2SsooU41j5In2kuoU82j5In2EupU8yh5 + or2EOtU8Sp5oL6FONY+SJ9pLqFPNo+SJ9hCaR8kT7SXUqeZR8kR7CXWqeZQ8w1tCnWoeJc/wlmCn + 6zJL9ENwTUNwTQeB0R85QyqrBMXlICguB0GtHVnFZcE5zEFwPUJwPUJ4Pcj6QZD1kXfcN7xrHwS2 + tgS2tgS2tgS2tgS2toS2Fu/aB0FXw0HQHeYg1CnetQ9CneJd+yDUKV63B6FO+botoU7xrn0Q6hTv + 2gehTvGufRDqFO/aB6FO8a59EOoUV78OQtuCq04HYW3ZcdXpdp2WGWefB8FtCcH9IwT3jxDcP0Jw + /wjBTkOw02mbMJ87CKnpxrvmByE13XjX/CA4+vmehUR/EBL9QUj0ByHRH4Q6xXwuH2jnZyMPgp2G + YKch2OkgcM3xINjpep9wzfEg2GkIdhqCne4XXrkqgStXB8GtDcGtDcGtDcGtDaGt5VlfCe5B+2r3 + 5BDidLV7cghxOghxOgh0est2gxNovQRaL4HWS6D1Emi9BFoPgevaB4HWS6D1EuoU17XH9bbcuaYl + sKYlsKYlsKYlvKYY/RIY/RIY/RIY/RIY/RB8HyuhTvk+VkKd8n2shDrl+1gJdcrZawl1iivwB6FO + cQX+INQpz9hKqFOesZVQpzxjK6FOecZWQp3yjK2EOuUZWwl1iivwB6FOcQX+INQprsAfhDrlHKiE + OuUcqIQ65RyohDrlHKiEOuW1nBLqlNdySqhTXsspoU55LaeEOuW1nBLqlNdySqhTXsspoU55LaeE + OuW1nBLqlNdySqhTXsspoU55LaeEOsWTTAehTvEk00GoU85fSpjThfOXEuaUv5N4EOaUv5N4EOaU + v5N4EOaUv5N4EOqUVxVKqFNeVSihTjnjK8FOl9nu/CG4piG4piG4piG8phz9ffw//pUQ/Csh/Fe4 + j4XgPhaC+9h+m/m6nbfbztZLoI8S6KME+iiBPkqgjxLoIwSPtyWwJ5fAnlxCnfJ4W0Kd8nhbQp3y + eFtCnfJ4W0Kd8nhbQp3ydVtCnfJ1O+/ypHAJzj1KsI9dnhS+jWSfz0kfBLa2BLa2BPagEtiDSqCx + QfA56YNAYyXMGJ+TPghzyuekD8Kc8jnpgzCnfE66BM8uSrDTeV45vy3BxkKwsRBsLAQbC8HGQrCx + QXB+W0KN8SynhDrl8baEOuXxtoQ65fF2EDI2hOCxoYQ5lbGhhDmVsaGEOZWxoYQ55bffHoQ4vfPb + bw9CnN757bcHIU7v/PbbgxCnd9nhLSFO77LDW0Kdyt0yhDrlXKyEOuVcrIQ65d23EuqUd99KqFPe + 0yqhTnlPq4Q65T2tEuqU97RKqFPe0yqhTnlPq4Q65T2tEuqU97RKqFPe0yqhTnlPq4Q65T2tEuqU + 97RKqFPe0yqhTnlPq4Q65T2tEuqU97RKqFPe0yqhTnlPq4Q65T2t+7zz1xkOwv+GxGXnrzMchMRl + 568zHITEZRASl0FIXAYhcRmEOrVxbhDq1Ma5QahTG+d2ObtRQp3aOLfL2Y0S6tTGuV3ObpRQpzbO + 7XJ2o4Q6tXFul7MbJdSpjXO7nN0ooU5tnNvl7EYIG+d2ObtRQp3aOLfL2Y0S6tTGuV3ObpRQpzbO + 7XJ2o4Q6tXFul7MbJdSpjXO7nN0ooU757EYJdcrrpyXUqayfhlCntra1y9mNEurU1rZ2ObtRQp3a + 2pa8E/Ig1Kmtbck7IQ9Cndra1i5nN0qoU95LCsF7SSXUKe8llVCnvJdUQp3yXlIJdcp7SSXUqa0X + 7nJ2o4Q6tfXCXc5ulFCntl64y9mNEurU1gt3ObtRwpzK2Y0S5lTObpQwp3J2o4Q5lbMbJdSp5lFy + dqOEOtU8Ss5ulFCnmkctmkctmkctmkctmkctmkctmkctmkctmkctmkctmkctmkctmkctmkctmkct + mkctmkctmkfJE9wl1KnmUfIEdwl1qnnUonnUonnUonnUonnUonnUonnUonnUonnUInnUZme/SnBr + Nzv7VQJbm5PWfEWVwOiH4CuqBEa/BPoogT5KoI81n1rEyJVAHyXQRwi+GkqgjxLoowT6KME+xl/g + eWEJ/pUQ/ivYC0vgNVeCIxeCIxeCIzd88bywBEcuhDmdeV5YwpzOPC8sYU5nnheWMKczzwtD8Lyw + hDrleWEJdcrzwhLqlOeFJdQpzwtLqFOeF5ZAp9uy8VsSDwLrEYLrUULrwfPTEhjbvtkHf6UE/koJ + /xXsQSWwB5WgHjRd9pXfWn0QFJcSuF54EGTsIMjYQZCx6bpuC66fHgRdLweBPkqgjxDsowT6uI5u + iPfkg6DoHwT7CME+QrCPEOxjEHhPPgj1gffkg+D+EUKd4j15mi4bZzgHgcZKoLEQOKc7CDRWAo2V + QGMl0FgJNYYZzkGoU8xwDkKd4k7RQbDTMc7hPtBBsLEQbCwEGwvBxkKwsRBsbBB8Hyuhxvi+XkKd + 4j7QNM0bv23+ILgeIbgeIbweHNsQHNsQHNsQHNsQHNtB4Dr/QahTzOem0Y35CYiDQB8l0EcJ9FEC + fQyCn4A4CPRRwnzwExDT/XaV+UcJbMu9b0NSAttyv+/8Ft6D4HoMQuoRQuvB948S7DQEXrclsJ/e + x7yA5x8luB4huB4hvB54vZTA62XNy6MwciEw0zoIjFwJNFYCjZVAYyXQWAk0lieb+KoswfUIwfUI + 4fXgyIXAq7IEx3YQPBvf7jf+9vVBYGxLoNMS6LQEOi2BTkug0xLotAQ6DcGjaQl1yqNpCXWKq6MH + oU55RC6hTnlELmFOVx6RS5jTlUfkEuZ05Wu/hDld+dovYU5XvvZLqFO99lfOxEuoUx4JS6hTHglL + qFMeCUuoUx4rQ/BYWUKd8lhZQp3yWFmCnM7b7bJhPQ6C6nEQVI+D8HpQbA+CYtuzx7hPeBAUl4NA + HyXQRwn0UQJ9lEAfJdwH9fWDoL5eAtelDkKd4rrUQahTXJc6CHWK61IHoU5xXeog1CmuSx2EOsUT + zAdBTu/rulzxfnoQ5OMgyMdBkI8SeD89CPJxEOTjINQH3seWyzJdcE53EFSPg6B6HITXg/r6QVBs + D4JiexAU24Og2Ia44pzuIMzpFed0yzytfJ7uILC1JbC1JbC1IbAnHwS2dp4nPhFxENg/SmD/KMHG + QrCxEGwsBBubJz4RcRBmjE9EHIQ55RMRB2FO+UTEQZhTPhGxrLb2eRBofbW1z4NA66utfR4EWi+B + 1kug9RJovQRaX/M2cW5tCG5tCGrtqMbKXxIogTODg6CaHgTV9CC0prindRAUl4OguBwExeUgqK8f + hDrFNemDUKe4Jn0QXzp9+vj89OkfiX93O2/Mf1k8Xycsvp1u56fi8yrAl8X38xbVl8XL+btnXxZv + 54nVqXiaqd3befv0VLzuVPP9/CnWU/F0oart841+e99Omc2p+PwyuC+Lx7RmpaqPKcsF//31/BG3 + c/n5SNq5/PzQ+Ln8vLV9Kr+dP+j9qnwneymn2Ixec+O/fz649boc2387J+rn8nnG8ul8xO1cfl6s + flWO1+R1Wu9cfv5A0qn81Sdzz+XnLZ1z+XpKVM/lO/u5nzcezuXn4f91Ofaf+3mYOpefDxqcy3e8 + ZV6X8ytGzuXnjwe9Kl+5fOH6L3xruy7n12KeytfzZ1NflS/4++ttx/iNAQv79yjn3z8vxp7Lzx9m + O5VvV27fNl3Rz3b+MM+r8onLz0duXpVv6G87v97sVL6fXwl1Lj9/7vxczoPb9dVLQ16VL9T/Xm8s + virH+9e4unF8GeUr//3zY9qvynf8+9fzoZlz+fljnOfy88PX5/LzZxTP5efXuJ7KbzxvGqMbx+d2 + /vju63Ks/+384d1z+fmg37n8fMjzVTmOv7fp/Gq2c/n58dZz+Xlb6lQ+n19E9Loc2zefXzH0uhz7 + 16uPvL8q5/49T3j/v706YH8uPx/DPJdv7Hc+f8LxVP7qdYXn8vOLS07ly5X75zLh/CDnDbD/LTvO + 7lOOfkY5/v31guNr9mbx749yjP/KWVl2/7B/rectpHPCeeP2bwuOz7eRmuHv7+fPdp/Lpwnjv58X + IV6XY/3389LAq3LufzvP/6fL+QWFr8px/Es59Z+UU/tTTv6n6xXnp9P1fAjqVTnen1JO18d0PR82 + P5efj1m8Kl+xfbfzY0zn8vMr8k/l0wX79zTdbvj3p/MH48/l5wNz5/IZ87dpPm+tnctXHH+m+fyh + 8FP5qxewnsvPn5k/l59fHXEqf7Xx96qcr4+F85NpOb8m7lU55lfTq4+jnMt3zB+S3ls53h9GOdZ/ + Pb+o91x+3lY/l58/0/u6HPvPKv428bedXx5wLt9w/WHaLwv++33C+d+073e6/ubLeXP7XH7emjqX + rzP5my8bXr/zZcfxe76eN3nP5ecl53P5+VD4uZznz+PuuqC/2/lxklfl/O9fHZR4Vc7xm87HfU7l + sv4yr+fXoZ7Lz4faXpfT+DWvG97/553nD+P2jfXL26Cpfimn/p1y8pc33/Lvrzg+3i/nD/Cey3e8 + fkY51//VRz/O5SuXT1f0n3L8/YnnJ/d5uqC/7ORi+Yr395RT/7vPG+bvo5z71yjn39/w+spbsPDf + jw7C5eeHrs/l51fvnsvPj8ueyzn/uy/nxynP5eeDxK/Lsf7L+SMLr8ux/q9eZfZlec4q0e+nnP5+ + ynFX8Ho+LHcun9DfmP5N1P+W6/nA+Kn8dj4U9qoc9weWVx/qOpefD568Ksf4LGOCif7necH2jQ6I + fl99fPpcfn5U4lS+8vrfss54f89z0ehvm3H+N8px/FlkfX3ZVlw/GOWYPy/7+cD5l+XrZZ7o99fL + +Sj5qfw6T/T765XnB+uNd6dTTn5zZgHrP50/e3IqHxNEbN/M4++aj9Vg+fnBlFP5q2M753Lefx/T + L8xvtsv5kNy5nPdHt1cH40/lV75+R3awUv1TjvV/9SDcqXyS9s+8/7PtN5x/bfuG9R+zOzwfsI/b + J/77hc8n7MuG48con/HoyHL+MNCpfD1/dPBUPqanfL7jesUNrgGsWMNreiAf8bicP8VyBiZehLlm + Fx13Ua/385PDZ2B0U2zFsLDhRuZ140y5ALbidrvyXvttPr+r7BWw82mG253TiettPx+ZfAX84qnC + /wEAAP//7P1rc9tIsi4Kf8aJOP+B77xxdlhhUkbhDjtWnJAl2da0L9qSe9bqvWJiAiIhCWOS4CJI + 2+pffzIrqwp3sEBCtrpn9l7TsiBUVqEuWXl9sukF2+rW2OC+Zd0ud8+qJhxXXgjtao5/+QULceE6 + re6wKbvdEszstjui37T7Bcu0ugcJklXZdD+LNtE/1um3f0zT7XIDb8EgUHj5/1+cwS8nt7cPi3iz + Tr6PLtfpTTy6jjcj+Mv7i4+//OPy6vzlX+43m1X28sWLb9++HUfq7eNpunjxPll+uY7XX+fx5v+N + 1uvo4T8u09U8Wv+vFZLK4s1//AX6+XT1Bjo6X27W8e+jt/EyHs3T6TardCF6WE5vkuPlfHG8TO6P + 79KvL+6gwYv/dxOvF//xF2py/eubl3/5b3w+WkaL+O/Yx/Xlp8//4B/EO3x78vHi+gP8dr2KpzA9 + o2v473KT3CbT0UdoAy+dLJfpJtok6XJ0Fm1iePfzfTya4T8399EG/hOPIvVONoK5hGdJNuLfNuKf + O/oWr+Fromwz2q6w6ex4dLEZfUvm8xGObx3N5w8jeDuO1vMkRgLRklPm/Xy7j5e1fjjJVZoBsVFK + fy6s0bf4ZpQlm/gYvuAqXq1hkpfY8ms8utzezOHz+CTgp0TTaZxl+H3L7eIGOk9vR9FoXW6Uxf+z + jZfT+Hj0MZVfjl86haHEy2ybTW6iDEZCHw0rmo35kFrIjGB+0iV8cwqLA/1l8VecBPX3bPRMvZpt + bybT+RY+dJ0djbbYyyYd3WyT+Yx3oYaQU4+Ws1GywU5gvkazZB1PN9CZbDuDo/A15o3leEW3x3xG + OgY9vU/hD6PZdp0s78TizuIsuVuOogymTb3LZwgawPbewJ+ydJrgusOab+55z5t1tMym6+QGHq7j + O5z/mxiJJkv40nV6x1+/eSgNc3M8uopvcYOk/PlfrmV/1+l2PY3/MrpN4rn4SDwLyTKW+yjCFeJz + gJui0jDf1vTa7TpdwL5LpjRY9Vn5FPJvLmx0GNzoG8zBJvoSL7GHz+IDV8gnnp3wqTrjzY7o+H2O + 1nfQCJ7xt3AG/gPP/eto+QU7UE+bpq+yRiva1MmMTm+8Ph69niMd3KRZuihMYYaD4+zlc7KZ8y/n + P2Eb8qeKctP0y6bXD4ubdI58kR/gUcZ/H9NRxU0N8xJ9jZJ5dAOkn/Hp/HWZYNsjJHL+8fPV+f/5 + x9vzj+fEjopsT63CrzUG28n9/jI6O39/8eHi88u/jF68eDHiDO/tWf2EA797e/ZydA1/uI9gaA94 + 4qBrnKcz2Xmt4zv+wgT6d46zTbSEqZ0dx7Pti+ldMrlJli+A6AvOso9X8/+X/4Pzdf5Nn5abdJ7e + PYxeJ/gzmcJph4sEB0arXnjlFE50ut4k20XT23R6Z7RF32MveL0cj0bnEezWnEVyxpBkmwxXdnO/ + jmEdo/Umezn6y4makI80ITBZxW0Iv55/xb0EJ4pYQnE7TtM1bJBVupxlOW8RB/LtJ9js1CQWFEbT + CI/26C/07l/GI9iSf4m/b+LlLJ795bg2Q6fxfL6F2xHmYQG9xPwybp2hhrf/9DP0IZ3HU/7Rb7bL + ac45mmeo4e0/3wz9/1ZSjtsgy/nHDVwpy//7/7o4M0CsMoTYY0iJx6hINUabjGBU7gmjg6sbdYZu + 5HzWKPBNo8z+jCYmZexiG8auU2Ps2jT/9//FfC+0zeAf0cb47Zcr0wxPDaPMFacgZn1NsiSKjQ/Q + lNnjEagooXz9+JoZZdF4BWL2Jlo/KEaqKF8fF6iNxNPRC5iE/3jz6b+s0Yuz1//4r6vzN//x9uKl + h4ETHhu9uD5/+x8fT/9hgiLs2C8njosu2bEDCmXoQwt4+8N2Dlee+CSYnnj5OwyHNixs13idfk/g + BoS/3EabzQNMNOgANzDGCfxhRntgFW3uv0UPr0b3cIPbk/uHGbR6iKYP88lpegI7lz+BCwAvBpSu + 4CoQf8O/wJficxjB12SDYvSLj58+n//Hm/S7tXo1uktBpRBr8rI0oEXEZ+2/71IY0ttPL03TdP3A + +vvov9XG/3xy/XdOQn7hy93jo3E8lOjagevvoNvxTWVa6JRqpLWinfmyY6aLdDzPdqt0jCe4nAZu + TzgYJv4/5jPf4IO3QmRy82QFA4D9H8HBBp4h5gD/lCxBVF1LNhvD8dus0yW8U2CwKKfQVDBsUvim + AUi6FZKVaarRW2xBrNmMViDEpZuHVSxJBcy18O0Dh+S6cIixST4EaLedNg+mkZLBj4jv4+tqL8Q9 + ZwbPWIlAfhThKSgm05iLrdF2c4/iM7SOF8hQ+Tmy+CdMYZPMHzZIXx6RfoPAA4lNtE9zjTzdhagd + RA+SKh5NfLPzLGtRcp0gwDdBsJ2hWtbr65jnhEyudEqL3D2EbmqBOGsPBxFxbd4Ed8x6D0Lyugzx + ury+fH3KmOkeMzYF1jC9T35Ps9LNuUrhGi9fmsVGOjdnqRO4PjnJUfEpXZ/39rFNlyHooxtUv97Z + Rv7PEf7d4P+x4P4MTMfgHMwK+BqdfTxBpS9K1n05jG3zGZ3ew6vwF66pxosbtGusYVNl6ld4aZku + J+1Hq0CSH6/ldjqPU362i0T6DC70OSUSM2G1QbrEL51Fi+gOFNZNstjOtw0cDFVJPNfcDhFNB6HZ + xlj3Jtj16bbpm1Z5XbJkDjcsN9lsQAgDXRvPQAPfbP/4Q6hWPx93n+kHXmWl+y0wEAgUAThlZUJ6 + 2831CtutaZ4bOeOuRt2Xjxc6ahr7fDe/fTy6+nCPFBiz3se2NO4zdpdxkQJu/00MG6CVyur+IeO6 + SmEfCfbJTGKfp6csODbdPsxTNtFjnaqDAuOUz4hZ/ucZ8r0YNq/4IAM+eHo/B8FmMk++xOpxgRgy + UDswkYE6luXS6U1uaCFvEry1QRts2BTKhMiXZg0X4pZbfJNFAjoZ3ELGT9qPvm3m57CR2ewcuqDl + ICRZcX+g2jOPv+tucLlDGNdHz94z19fXR+l1LX1UUK7oo/SULtTrz+d+VR+F73NK+qjtvZww37Fs + eww/3CCkXfXuYZWCqrLh+x99OqQM/jabA/1pTR9cJJt0ep8uZ+uqegQrExbVo4uzE/h1tYAXGId8 + Dt2qCreQOr56NtouvyzTbxXKrusUKX88q+hvN8raIJ810kGBs0LHMKSiZNnMMwzxHVx7KH2p3tbW + a9q9nSy+nc6vTDf8T+3tRK9rbSdBubKd6Cltp8vT915tO4Vm2bxh+y+fW5hvbY0tHwPbaTtdvvsU + uKPpw3QOB4q20uV07tX2Eb0xmQFDW6IXQB3CLwnXI+5hRYUuLY9laSnhfq/q4nKzMc+0LI9VN9uu + HtfxHWzFDTCNJisC81w70OpR7UpBELdAeju6mz9Mkd3iZs0elnDkkO+Wtnnolw/Q24v9ekBlD/Xe + bFGhH7Bd9I3L+zRwV3IBhRkDH5ordO3dRsBEH16hn2aR8b8ton/ClL2dT4OVnMkNjAL+tCb3Dyy/ + v+JmC6L9Ck7D13SO9txkKV2CcBzmpW8AZWCNMuXNg2oGEsJNMk9+J0fP+Txd3gGBU3mtG7ht5Wk2 + A48ZNKcu6b/rm5R0y/hgUwUQ5ZKJGuwABEOSq7t3zKarhw5FAFe+g77cL/2IG+IY8untf5o7TReD + yQpidBuMX4Dj0MNqc4jsqHR44Bk609PAejqnR14VNr8q3r7vdVXQ61pXhaBcuSroKV0Vv72+LFvC + LT8wA9/0yndF+PK5HWJ2/xjEUR9vki7R424OHXx7XNGjsgLNhmPPLxm3L65zlg8jtJjvDieIfMi/ + DmajMjwenrCM77i7Z/4gNwwssxq4tDg/rLdfkcmVzXLy1AHjXN2nGfxv/YCcAHY0BQysJ8y2UbFP + Zltlvr6cRYyz/e0y2bzCvrIRl5Nh0OsNsXcxwssvK0ZcnuhzG142utxMXcH8N1NvZVz+cqlM07Zp + oWmaAffzFI8GCXCDTL7F5NvO5FgAa0Jm0tUmmT3MJxhCtYzL39vDjOxgJSTOfMS8V9injkm1yZLw + s+RLsaGLTK26+fVstr7DNbCWnfYMmNYGZp8HzCAt2GNHu3tqMzm5LhmwTz5f7mvbtU1++e0cQjcV + 8dXys/Y3yDKH9MUrJ2A99EX+up6+SJSr+iJ/KgR8ENJrAr6HGmFVX3RYAHfYmDkWKEgBsW1yPmcJ + v5nmX6J5fsr4qR+PIpIt5Dabp8AQudwmXOZfo+kWVL9Xio9xiW4eA2/jrvtkma7vIpw9SZb8XvBS + NMoeMrgFpasf9wO0ABnRWY3xR0g/QF6ln6wse8IdXOAHaLqhXzcPaxCy5oJ7KJ8oNqtdRDR8WJ5F + vLiB/RBj+Nsy26Kn+i45qigqVtvVFDrMcnyzejM1TWnL/WSWHZJAe1y4o0r01RUl7ezliajcqCC5 + +J7OsBVZudagHyxTct919mB6SKO7B+NfYqcZeBqVFSIIQkPMTpFTd06rFts+1ClqiM2Mr8NmvYuA + xSOfFjOcnwXNm8znvhjZuq9gT36I+kHsydRNy6Q52bc5oyab+A5NjLDpepIyaNG5mrKI7tAYu12M + eHTpXibvwfy9yFuwSTc30hMY9iP1eKZ9dSQsOmS/J8vp/nMOogGtH5eC5gfJGOSFPnx+HC/w1Wmf + 7/FtUlZxpfPYtt4Fx8zs5TsWbXRdx7KLkudYPCS5ZTr7IqzWuzTqZ5cfLs5GeI2AdmEfGbveP0XK + tUbw0LBcB0SfkFzQtpsLgcXQwV5eaNet22JKFMfo8yqMtW8HXsMgeburjycwtfMHEVBwgbOwgHlo + 8KR3uZVhd7XcTXvdTIfQ65oJzzXJOpVr5cVZ72EL+nFuLn4fMK/gakYZYc/LoLe6t4tayVtG6vUL + DLOFFsDW99MmD6a6Y9ChrWOB6xlspHv7dNlkh7jBtLRjXX+oHrXm+fjTKenePzK6+k5Ofdfs6flX + bfSuvryLwtWnHtKFt4nnGK0CY51tVyC9E7dQ72eYEIdpcO7nhdpS5Kzhk/NzXjRKn4GN4PfQ94/5 + Yr+g0DDbCY55qA7//fK19do6ZiGGLjjwN5v/Af/tek7+b24x5P+2bdc2hOM24GcdTjiZ+2FMazx+ + 2/m2wfTftJExwZmzi3gOB2S7vo2mP0inUO5fn1uHPrxnzNa36dPrWtYhQbliHaKnJGWdnXxmVeuQ + 7Vp2ObrdffnccUzHHTsOF1txk2KULEgvEYg08+QufTY7OToW//p8NJGcQe4RsrDAyFjNwiIvzZKR + Hy7Unkb+k8+l6KFSgLkXtJkfLM+HzpyKgaPFCtwgZV2m89FFQbYqmYOYVXYpfLiU3YLmBv/n/90o + DlnOFXcAwH5N75bJ77ATGuaX+4s22avRyfoOmDtIDbBzoCn+3yYbfZxQgiE6FzBxBEY0f5jAu5P3 + D9kE9srkLXcs8ACjJIN//c824XsWrg2UR8WQXvEkTZgSTN3DsHb489eEe2Y3DwbuHWnLcNyAGeKb + uTyjPYNVObVLUG00sfcR2DoC1foo3rCf6ArsJlLsWR75QIaYBTawSq9XiBk10Q0xEx2UQszomVCr + ovkUhC5Mlx09u5Gen6PRM+WhfCg8XMFXJdNNPANVqdCw/m7p1cI4LNcO/IDCbnzmcXkIc5PQlIK7 + oinY/uZhNAX5BZ2limmTvFzeVvp09hfxd/uX9WUvETOOtDJgIHoDCF0R3ZDPfmsQm15En2uGiuIu + S1QPwbIH1c5jFrihX6DUINDXFIiiNaXZ0d6wJ+TR5MHzv130i+270I/tu2iM7bsoxPa9/nhVu40t + 0y7H9jns5QRUHSccO77rWHSYOVrAdnOPjHo6pqjb6O6O0v75XGECeM1kXnAuRtIjn1AwYMVJnSyX + ccH2KqmWbo48xJ5cyri/eSwx/JMSawre6WfyHxd/O3ql9J2MHM3533KiIJ/hYl7fP7CVzPLHXhCY + 4QHjJe5ibuaXDYzTTyfqfoJZQ1u7bXuM7K+lj8MY92RNbIwu0qYB7LyOpEHO9S3KAkqzpO0SbDNM + NGmAh3mSn4DlW5CymU1u+xKprm2m83225YZWN1U9elIst3gY+G+XV0BbnxHQ61qMQFCuMAJ6Kpy2 + Z+9qjMC10NZXZATBy4nrMScMxy4W67G7I21Wa6BfD/Jt1qAqeZ/2HzjYF4sfcoNuwHKDwSpd97W1 + BhZZ2LLt/JZDzPSkM5Da2pPErmzDsJ3WH9rR5lpkclOrFLfIAVoLz0eUgUq2nOFR5oTi8k5QYzyg + R8mAKMvg45XpO/oMiF7XYkCCcoUB0VNiQO/+6zOrpRk4DtpuihzIeznxfQRSH/t+4KPrDznQaruR + yp/MrhQ8aLmGLuo8iO+9KF/mEo8IAq8tMI85Zsh8p8p9WjI7x/xf6Nlfjj6enL1DURZ+Xr4bY0Ig + rCXq0QgVNJ3GKxQ1SkESXplVtQ6jELCdJ85l0O083sDIHjAItxLd7rRYCRThiizGLVYz0N3vR/Ht + bczFIgK84pIFCHkYgiBEPKnlcGEtH1G0SuEb0V5NmXzJeHQPajdwWxRRFtFiAZJitByd8PeyJJtc + LGFCcfrecEFsPKovs3Fy8UaJXK7t+iJuuJZIWJkPXcnK9EI61ZEcVb+j7NgmKZ4tklkH2ZYRDZU3 + /lOSq35GaGJOw2F1QTzdbjrFv6d/8QybXu6aHjl435yc7efVtyxybvz2/oq5zunknfZ9Ihto3SiK + euVOkc/pVvl8UtFvbduxg6Cq4Dqo4AaBFYzhR+iKMIALCSDGdXcKS5I864FHY119nlyeXsm7Zr6G + rqeT+3o6koCjyZ81CpWBXY4Il8Lpk5RyrQAEcfKryF+d8q9u+VcPWsotQqkFv7w3maXvhqDX9UB2 + iHIVZIc/FfrO1SV686ooO45ZRdl57jA/dO0xqPO+KdLQfmWjbHn18VIZJYo5Rxk60ODUjKsmBrwb + 8WxP71cp/KnmsShYGDABKtfeeQg9SoJoJAD2xXNYlCWOIknXK8es77v666XltZyymnV5MS4mnpmm + b9kgC1XJ0rfDJJQdKIH7eMQKCiAL0PZfE8Gu2lwx0G0LqcDDipBh1RUjUugXSDFfzK9JRL+JtPqy + RBUGO/owntCeMfjmzw1VoWuIj1CX++7v17q3PZsMqpyWmOE9zLI2eT+KAxpS1NkBUbCjdWtuAexh + rsTJDa5lWgI1kpL1kpuUQnT2zB8XW1/OW8+IC83okUcHSLAoneGv75nTw0ROr2vdFIJy5aagp3RT + XF2e4A6o3BQ2q4gQFs9nsG0f0xmcwO02jf1zDh38C+W/215g75v/rqQGV0AhWMzrA4WAr2tCIXDK + NSgEfCr2wtVF1UrKwhAXu5LaAlJkGIx9+G6xEaSvEnjz6afLUDgQiZU+O73+eCR2xtU6qQcsFF9u + usgDFtQw6OTmQAh0hJY7lGZxw1mO4wFfrG04DAfGVNxZSukH7bklVmugAg7Y9my/sgmjWbQS7AW0 + JGC26LLHRBO6AOGm++f2jv5O/hyJAHm7zapnyfTdVgNI6dNq+SfwfjybNSWcmHY5gb+JpnGq4uYL + 2wGv6pYtIdeFm1q4UIDGoiWiduUTjFcDXNhfpRywvUn+Z5tskmUJtmX0EQYe0OG6Pn2TvzWaJ3eY + TPmqefmq2fRt60CDx0R5PCM57IUvZAu7FIRbnkftKxUXjhtjDtwMOzscQGzYMztcyTyMZJ7iptC6 + u7Ua7tN1NxQgnmgyhXTxAH3haZgMDIJk0xnIDns8Lab4uEPpDZbTMVQihuWVUPxMtz+IH/xfHww/ + 6KIO4YeuWrxl4+93IuTvbr5FsGM2ticcrhN/TzOa+wseuAUSzjpL10bnmy9KryJ5Dl0VhkImeQwY + D990iAGg6fwbbJsR5QK25Z5rh7v0JbzjrA8CZmo7nq0GxTltaS71IEY0Q4gonT/+zvmR6E3UTOj3 + 7aFFYXnFfMN8Uvcb3nAZcuLG7NrX7aS1N9Nh3XR/gUsQo3UmNxbPHn5HTvVpwpNsMWmVi6dbhEH/ + OfwUc+SCtjHnrjw13pu091gdm3kiWm2zP7/2c9hAxzw2e6Gu5o30oQNFJxXwQHpKPHuRSp799vNl + IUeOWSFwrODIuILtJf5UNWJ9wLbV95Eg59KgQxmUyMr4yf/w4i0jv2MirV2oTOJZ46cXk3E0YDeV + icozvaKkkSx4hAWIE2m76Kd9vg4NAQFmHypm3/JlOwh4Kvyst/fS9C1u1B9lC2SJYvkW8Yzqr+wK + gt2RpMRck3C+VRj6fpMEB4rSvTGo+9nJ0XMyN8bfOSnevK/xzmWmFSjD5Z7jcplIOyLveYIGhSfv + o+0TKIxjDFybH5+G493/1Ej2loeshyAV2v24m2ijHbQuuihHrdNDYmglFTiPpOQ6B7Agmr9SDPqv + J+6Lh2ny6cXDenaaZyvlnSFfc0Pia6FJDtcItNgbHg5FoaH7SYk/z7c/XLD6gapzvz0s9xzFYn98 + b1umvkuSXteLgCLK1Qgo/pSu0F+uzmshmI5phtUAqOc2DDgc2wEXsLqszMs5UK9Dnf0Z3dGmC1fV + gQirTyGeQ2xH25QauWMFx2bQD1ZftNHVyGUXJY1cPBTQCPO1U8XUR53x/mFeyIY1uv44OgUaBhLi + oAeB5ZJUx4IKbH4JSH2N6U76slwfDP5eoAdO0DFIkT27w0qmZCqXAEtm6RL/zDvuZQUFkbKU1C5y + LPpj2nmuV/msRTrDZNs9LAmI6cQ3v9wDtAH0gRpsNCFySQJWnA8WGuAxH+OHSvGSp15d9dgTQJby + t1rWjv+yGfG/3AkbAO6SzUZfhxiyGoAiGVKgNGwhGEyUzHO/fPpV7iftpXZcJoLf4oRrSmrLimKa + jfJaq3Bsi5jIzSaa3vOx4LqsQO5DqKZkChtze7OdU0jolwRGhZx4rQz0rcpIS20Etzy5PcWBnyEN + WXlrWLI8vf4eC3GmpU/RqldgM4+VojPUnmomqkEwpC8s7nxhRtt3kI7tUDmHq+QLm5zbNSdTewxD + PWU2qJyonxCDkDNc4pP1O60fsMc+dHblCQwDMXUwsIUkFZi088UtMJnDrMJl8HEy1Dcf7PJQdES1 + GXlf6Yz02Tt78kuoMCmOupddinKUW/HuPXAy/bAFel1LsxCUK5oFPVUVHKxasCPzg0qwo/lyEroM + xhD6oBCJGNiC8ps7WlVkPYfkzeLtLL1/WN3Dgtyt02+be1l0TgJdXm9iqx6eCLs2WWGJ7dHNdsYr + VFfQDGzWEoEQYnBTYNaDGu4XaTraJKsKNL3t6xCq4zfvxAuqADq3QUj4HnpaqjEN6qtzIbAcnhm0 + Bkkwx7VMpgGT2Q2S6bWFLTYPuGmliwR9ZjktcSghMAaE2CgTbLIg7hnR0RYAIzs2rst9YR9iNSUe + 9ckvo2cri0346nILJ71wJEw441I0hMZpeAHvRxlmfVSOBXkTvkrE0NPZ1MHimMjJshEcFmeFcmM0 + evv6Nch7m+R2JCqyYsdwF+fupRlcj8mSpyHj+GnAmcFPvCpXEIah0LVIbqO+hTz94eTyl19+6XmV + 4d6Upk2+KA17WVuhwdXjl7Sc0ULi/SE7pIeAbDKHRPiO/m6TeYTSTgryoFhP7U8E8lRvr7IhKjlS + 5HaDyygBEblncMwfBThvCJ9G2ADJEX9PhLVfW71QBBlJLU38TZ+IZfMdlGaLFAGbOUKJjIqSJ5+H + UV/fp6zwWi+dPbRs8e35rsk5UT8RaLjcNENc1/SmvNXrzOGH6F4HWY8d26ZlJL0Id/8/BT9DsWKn + 4vKnhVd8fDXrYJw/M7CJs8CVJj+o8Uevu+7poAdK1d1lZdVFlKLY5+McK6B7L+G5btNCcZB9wvVt + Suy6fG9ZfYAs+Ot6QBZEuQpkwZ+SrvO2wYvimrZdA7JgVuDZbMyskNm+9KPMoNf7RBSnkj4IqRdg + kShEjIcPB9EApuMZMnEOf5PgUo1lTu7XeDy6R6Sz7D6dfuFiIfz69YGU1uyoAhiPwue7T2/VHUE6 + 09t1XI8Ez7laJTmgTcF57OSA4j00w+yeaV3PCC2vnLtwfjkuVbvxQNdwq8pMKXub5r2kvIRlkR+I + 5gQdjFwI/m48jQU1cE8qcBDmOIYYf/UiF6Ppx/R6EfpOJQ9SXhYeTm+Bil+jIiajBzVD7wLeE+6s + 22Pm5DGs8H/Hpte3FLVopR/HKrupRLKKx8JfVnTNyhKqBVc4iJrLCjkemuoHBkePcinivRDpuM8q + HwJCt3fO/j5ueNsVmcHMDvQvEHpdMzOYU65lBuNTukA+XF2+t+ugaD5j1dTgCejTcHuM4YcXCIzD + Mm6GKIZbuFWFrQGWEktaiywQYvgf1qu5XWf5ZbwCapjTlSTK14FXNhxd5qUYLTu0QNCqWc4O76Vo + c3Ec1wb+W7lzClEfWPVkk2y2wnekigaXM3fLBWjaOqiZv1prYHoO2zVkY58FNGjPqIxaz0JoUhvx + gyuHR5oWGhTnCmTkIIgXnlXvv21t+8nqAUmzauH6SbDDZrmSP11jd/USZT0REMQsr09AEL6uGRDE + KdcCgvCpMNtfnoa1SlqOZdr1iKDABw41toPQ9/y64b7gki0nCwhZ5fr1pTTUr6ZhvSQVYeTBrfw/ + VL1PunpXWFznJp2V7eDA+K02c7vF4Bqq2+0JhaVHB22G9lIHOpyH305fYHNtqgm3sKAtTLTUieI+ + xUkmL21NEPZNq5Umc21f8uUCTYGYJOZDxa+0lgSzTcdv8xrIPoxTFfcluFlh7BM5dlD9Pm9vnNXo + 2R1iM034n5OlykqsQWjC3mHM5JZrDj9QW8NnIOcclTcTStKysW+ptvBiaU8Y/CioUC+YSIoItzzi + b/nMl9bzgMQYX4aCNa9qH2bJl0Ty4eJqloaHhn3dKGX+8SGFy5Smud83AglK/iiur4j1Fos8bljG + fhfFgeHIZFdqYGDcAxAvG1G7d4WHCvDOXUxNV8wlOK6dLEyTHNl2il+sfxci0+q+C0vno9d96Ev9 + KrCPWU/liproalaig5JaRc8EjjgqQGu826RClT8RKE3yDwVyWNmBBYGo5vAoQUFDhjg/Krb3oXUk + 7EACOLluHzUNX9cFcELKdQAneErC0acqshdX0kK3pqTZthN63hhUS27qrCtp9iT9nkbTh/nkv/l/ + p9EaBrSeiD309xxtcDxawBQia1wnaGkdcf/PxUVFwr4FpfuBPGVcD+FWWSwoT1fdh+mGrYS89Sla + d2p8VaGkigLyoWRJC+0ANkMNl6HlA0f1D2wJbLCZp9trDtjQkM5QMgqantkmpzQSLMyqzFatmEE9 + rxIw0jxO4wksv4HbV+mLrh0YYvx4EBu+tCNttj1MeJDU3n75KY8MWqmnFDeJSwMm5lIaov622Qf+ + wAm4ZLZnPN8ggJCS1YeiZJBp92D19LpmySBOuVYyCJ8Sqz/5cFYvGcTTNsslgyaW6TlWMLbMIMA9 + i6z+5MMlAtcuuG9sPNrASCKKmo2Xv8PACFuFdgWWvkHtQ7wv/eBIYpNyfDVkKVxnAYkZpit6xTnC + TRkmpexFB0mqkKgeAWdCX13BPbxK07mMkztZzB7R51Oai2ZWbwetlZnhADHgVFWb23Zd+Z425sy8 + Mg7faZWw8QdZKwP3oypD5ITEu5lHOait89HMfxsKzjAqGKFNQoOFi8BjMbjc6sYLOcHspHl9aj2s + hi4W3cf7Y4g9h2+1bE8t0bwvjUePZhgOkyC06NLb+7MEI3dMWXLQck7Dnipc3ki36KDqpFR1UD4V + aWXp90BW3G0o3CIt03+7uLgwNN4AaqjlWZ7jPEJm7U8RZR4RDLvBNbGrFsoOkm4DvnZnoZu9F2Fv + /RU5Nsv1ZdpQk3xDDQGpsh/9HyfROZSQcH5lBv7p5LW2TCcbaEl1inpFrpPPhYfjdb3qjMlzD4p4 + ij4q8ZbrB6DEW4ElPK2vocsqjt51PPVAtz6/KhQmwGlUJaDohcl1luF/b+7ZipeCKkR1F7EoVHuO + BsJLPzXXQCHfCZKrCm+STk2RD9oi5ZkZWsD0w7achMZqH6W8bddr85uWaSshbpqWcQ3yyiLoK9xU + IZU9j9m7OjCezvLUHBX8ze/p9CHLcbG5oDjPUnrjarPEpRRY7xjwDR3AeKyVgVtWwRsySyjupBNe + X10WQters6rGria1kB8+rnyS1k1wILrMUAAstqmCh+CVu3U0i+skx3zZ015mSptZItU5zTaPPJlY + z10W9SooAaXvqFfc6XXjD1pGyVELT9xFK7Vyn/ad3p09yzm1jGnw0lB7E31sQaTQfJDaUyZVlj65 + ejO620bLh/mkoD7G3+F6X97FsqDhI5Wj79KGXIeCFC8nlxNETZsIBDgs8wOC4td4ueukdda26vBb + OZYssumZvYpswuu6RTaRcr3IJjwVtSY+1UteW5z1VotsgrbHxg5zHIG2YU++xBuyMp6mJ3BxJaRK + 8kvqZp1GMyFUz+PlHTwSmakIV8cxgeETKyT4Val+47feNN6IX0WiE0cAzNUbuLxzi7S0VF2mDYW1 + V6BofU8orGgR8TmrCD218KuKkFMYzOkEh9kYLl+yWIVB0Ei0yXFQ+bKK86AmNRl7zv/0UVfAwP2U + V2+wLBJBSOuYJys9t0F3TPFenohHRRqlK5QQO9U+68MjB/MA4I7jZgWtvfrjTU9m4Ah8jkHGNETm + iuTFtjBBXb4OznviDKs2mgYo1UXR/iQfCszK24XArPwwEVejQgkWeJQBC/EsHBkNb3yA5gbSQKOT + bTkCptIX8Ly9s1OHi/JvPT8BiQnV6oe9ZZZ9bS8uEwNQGYt7biRHVBgDyUf/UqfXNauLccq12mL4 + VJYFuTZf17xSph/WKotZjgsTP4YNYvo7ANvma+jgX7BirmNiPaL+StK/y9UehDLnULbFpyvT9vVj + nOl1rWMkKFeOET2lY3T626lVLtDn257lhZXqOv7L5yAcw1YcO6bluU5THE9jhfglVsWaj6Kb7XIW + cYXutmKhLjkWnp0+TNnqiItl2LxSLFIlREU3yRy4VqdPUdTjUBxORN+pvu7jBcLOcLBk6NZGWxew + BczDhL5OZ1MrWKEFDdg8OuaIRcCL1h+jbFDxWyf0rcnyS3RXSvJggVlxC7+9KAyQOZ5fBSGpuixA + /FHbP1uBUFaFci50B1qoUw0RUm5oh9lYEK+rN9VRKXQXNwtwQczar2ac+HBzt2O4YJhCWI1HAuE2 + wfux7o8R3zVG2WLDUT8iXqZzmgrZBFEaBCIIhz/OYlW3pWGeXsE798lNssnQg5V+z3cqtIGf6/TV + CEvIzB9Gq2gN+z5Z8TK/As5LaiZ8aUmlkQsOzINPypSJA8V/O30AlfHIwBOvIrldzzbENNV9R82z + XWNxLUE0fGuVHTHVjVgj1Q688G+336PcZjazaVqxngPsaIQmTHsOrxpPMIgOFQIZPi4x+JEMmvxR + HrzGqN1B3YCU4PTpPSiMPS5//rre5U+Uq5c/fypSLc8+MKuW4OR6Xu3ytxk6A8bwI5Q139tk6HQO + Hfy5QY9PUxEQ9b9HzwhjcQlfdFQtrDBWie6ZvAZm8Tz5Gq+5MPK//9d88wrki/91t3nl4b9fiF/w + COKtAGTgMhopNwoKROo85C4QYbMqRFe8Gl1/Prn6LK8ieRC5Gix8anxEN7Bz4baL+PUQb7/A/oE3 + M+P00/9mCr0K0zINvLoluG8xFVo7EPUPy3ybR/NU2DguTGDS3OQ7Ua/aqORDeTETy3aPTdavlgm1 + 0S5lIrooVzKhh7Lk1MNUZaMWUf3rSfs5OUzZZ244eMr+z0DCdwIZJ8as0Ds23X5xYrKRbpyY6qQU + Jyafyuiw6RyzfPiP0XsBxzcSj0tUMP4rDMiYYHJrTBUnjFoV/PQdCEvdsLdPt9bCoDU+mOdSkahd + MyfmueJh7J5DuenCf2TSFuFb/9kjKkk20LVHEPW6RYI/FxBCv12W/XW27dhBENh1m4TnOL45hh/c + YcLzrjmQ0m1Csb3Fc71ObxOOBYe33QJml7uLOIrzZv2gxJc1DOXb5OZPLcBIw58VuDxy5sVI/Bog + ykbhVxdOsmRMrinBpdx+4FKuPriU2wgu5Upwqb9d/NIALmVaNXApn4HyOfZtrtfitvga38UbjiRU + 0ja4SPRLtLZlQtjfki91vypCqGeF0MlyMrzfhpLLYDf4ltdQ+3fVnV7P2nIAGPOtkDn1yr+FbNVF + WuIAZUQPv5yzUASBKo61Kal+gos0U17DspWF+X+vJn4VQE8kbeNSxhhgIgEmCaAJRc5qYS3aUtjH + GImUJcjIcmYHdwq1UsepDLkwUQWzxNix2G7JSJkliMGvwM5nMCQEL0FB+j7KilEnIEKc4g4xcCfm + kFK+Y4hpILGwbdJ0bSdYNsyREia3eLaNUMuGMkA53YAi7PbPqpYQfqWD9Li2BMm3mBSonDfMPOa4 + vPrylGijK07JLkrSlHhIPOxu/V1cVdE6i5doWs5NCc/u5rAjuDkQoR7kKTaKj0dvgYKBZLjj03XJ + 8XloqTsvlNJaAYFMwq/tgWgWOmZQpccx3PRpMEz3q9JQYPu6h8myQsrKb9CdKXqkn8lsIAVDkHNc + JycnDMGgo8cpiGj6BQP3F4X7FpxzbOJMfEdiQI4MEtsZmaAfwe9RJGixCwo5GSpHYGjromvaJTY1 + S7Lt/BZj/zpMhVo1PfYjrW+FdCk87+y96fQAfKPXtYQ6Qbki1NFTWR3h0qklITC3jCRgey8ntuf5 + djjG2iSM1VGW4IBNNlibKFvNk6kU9OEP29Um+sI9j2hamd7Hswmd+xxSOy+UsHKGTgAd1lFYoCYP + eokOYu3/4QIRpFwoHGt87Ua/rLerVSwKQyPXn9zCH+CQklmzSTaD5WOrMf6w4AcuP/zTXhm4xVTS + gGV6AoPEagg47ykXPUnzw5D4nj0tsEMbb6kYkZ9jevO4QQwl3Q+hepCKPQcXwZHM15aYPtYZSIjM + 6gXqI9roovrILkqwPuIhMeL1/cqy6zVXsQTgOl5FiQzKA93atSzbx6LSM2ghXAqjK2xvcCq8xqAT + MJJMrYBL/wVCPUVTi8KA8pj6Sfx9SuV82wi2lmnYg1b34ByvBO1equG3Z/ivy80wef2uBpsfhtEe + FGIs6i8VhVdcoFm0QNd8tkkW23lv5uTbTkNpiOb64LtlH8+l4tnym9V89ItEsLGqAL59fjUBxpRO + lTVAdyZ1BUvHYhQhvYzvooaSDj26bPkWhD/Jc8YiivXvvU80SskN0c2jKi6HXaIeSdWynF+8/BrP + 05Wu/6+v0gQiKx8sHa4ZP2j7l+mWw+hFtTsKxA1VBfe8aGCBls6Gsc0Sz+rlhHQd5YRkgX1shv1q + jstG2m5I2UnZDyme0hX46+UbFF1k+fBqzDbf+Cmle1wuVjYzVvy/lmsHgQBA8AJGVZposjssM9pr + PgxOvGLXTCB4xklzoZluWJPDLTw2buOSMUXMVZsJpIbX4lg2BeVUrhy1Tiqic6fKLVJc+Hi+RtNt + I6Jns4C7o9EOyZpuYmod7Q8AoZtd8EdKrpT8wZWSsuu9sY7NfpKyaKMrKcsuSpKyeCgk5dWchTJi + wTOvG3DK37PQaP8LJzBhVIrbJ3c5oqMLXtsIUN6TUehQ67iSB9CN9wDGPBDY3LI8yy30Ce9ow63r + zuyTAU/XlxMO6KRTfaUIxrMr2C49bIf8dT3bIVGu2g75U5Hae11P7TUtj9Vsh67nmiwcww/P9roD + GGdroP+oSUBFi6Dkh7fSJV225rUirTOGxluLPUFrnkorwsqf0tTmlC6S2zzcd/iUosfKSlKXkYJi + tthrZh6bQT80ZtVK23Sjuikbb+TjnqVucnJ4/biWcwgm8z4hbm4gajuYgd2ntgO+rlnbgVOu1XbA + p8Q4zj+e2SXG4Vg+iJIo0FZqOzg+s31/7Pi2yZxuzrGcQwf10OfOMNEyA3Hs1viMEC+eWuTHTjQi + 12KuFk118nM1pZSfHzBzFx3j5OzyBZYPLIzqFf/UeC0xiE4j6/lEqoZwGYtYQlUIoZQaJrxysvwv + oQd9S0fnbyb3PIoLa/Nmr0aX8SakJJfraM5Wo/voK9Y2GKVf4/U8Wq14+VjJDqdwN/KVw9CPr4lK + JUPld4HHhAdPwMa9hX2MF2R5G2E6WLLMjOuT9yoCxDUtfxAffFCzlMuKNc3U2nJv3IDKYMKC7Nmc + m7FKa7m7+R82yPup54vihzkUQgNL8hJXFSY+2YnL8ij4xiA7mMTzo/k0gduz0//RDGnTg0CnBErg + yKdXZsD0LxJ6XesiEZQrFwk9Fd7rq9fVGkEsDK1yrKrtvnyOsTqeP7bgbLkCHLlQCJxi1FCS395I + NQJ4IrqzOV+i4IqL0T1IZSL5RHis1zf1gkH8zAKfW1HeCGUnNkYvel7JiV2syOXDUQpq8mV1RBeV + ztSHNN1GzHPc1ppixf7UZdRiSK98IO6TS5A+YDTQEm4FOBUlKZVZrYXHRLfGdRkrr/6d6stUAR7l + TBDAdtN0HRcbCV0zU5DIzYTzNX01wvBEMlfh7VT6TI7mKSehDMsn65avY2lnM3BfqgL0nu8bYhq4 + hKc9qfXBqvnVsQqbnu3mF6Ii3fNStClYp2OwY7R9F7wSfQwdh7kR6J7sPG+dE2WIQ4Fv9T9anaQF + j/QE7vDrS8t65x+bdh9dRbbR1FRUF0U9RT4knldVSBoUFEUFS8bYpi/Uk58S9/AUbn+5kEyEajE3 + 1L/s6HXNUC1OuRaqhU9lqNa5XzO3mI5VNbc8Z77lBNaY+Y6J+iEu/HWl5PmLzcM6zZI8r16msQgG + nGPUiDK+4woeaL3KuNAlZChX7A8QysX8gMExr8fw3y/SlNekL1EKNSnlF2r9M5qLwPhmDWetkXKt + HGce5TYimPl0/TBvAGBzvKBFwbNd22KsejWvsng7S+8f4NjOR3fr9BvcgKWsAFYxXhWwHjzHdv1q + /dAsuVtKdUem9ovk1p1oTqXb3i+Xpi5MVeCZfuiHcNuX+8I+6gtRQr5V21G6u0AfhWfw1qY0r3AY + 32wzW8Sfibzf4ly9ALJRhtevmDS1v+FspNu7+9oyYYYDQvK+KnfEvWGwzRnGvM1iDvzKn+U+WFkB + Gw+ussrZLDDENHF/kfyywgV6yFJoCQbMIb9fdS44fkvuTpSCzTwBha5f1Aff0Pz7dp+Dfrc+bmxO + uOEAaKvYoCKISJn8a/M91kOA2etadGzbpgg2AsqBOfpnTMuMLK3bisclSS8PySOU0/10ScejSLqO + JNB+1EqxWFnlzjmUvE8O7w6WrbX5B0HIcF3ahWij2bNOkW3KrJwnAU/oWVKbt5w+wPiyga5GT9Tr + Oj1/ToLOu+tLDGep5qD6vlvV6yfMs9zQGcMPVfTo0BzU6RrGMv2XyUEN4D4ynpaobasc/Nf2MXP6 + ZeDzJtr599RBOfueP6Od+HURCc3pbxQJD+cd25Z+U17tqYHv8yx8x2fD5IVRTvBoRwTTDhqhL71v + 3FPUFGvUngtJ7msVH4NXeB5iq2/UDgVINzDMvD79NN2Clk7RoPt/IRAPpXl2lGNr96CuHZQDPakb + c/8Bu64ZuGpbHASsb1p07tT60Mgmihbyu9J2HY/+xiQ4zd4T8VSirg72TT8BvidI2bYIX25awc23 + dJLF3LIlmI6qUd30etvy7uo/bOu/uoPMfl0YPJfO5/IbP6B38TLnaT3x7h81OUTRCfMQ7OpkiBWQ + IxyP1qIxh+3DcgMJaQK7zYOOuurMN94xs3rCzYhG2ted7KR84YmnAhc6WghHuxCQJ9koyYBgvHyY + Y9WYGEX5dAJ93ZcRtik/JTRtywqsI0M2v25o/qmh+Qfo2MDeBYyNJeLyKH3ldIIQjkmx+klBpSRq + e6mTtkXB1/GKihwqLRCUs20bwFY7VKIJF35JC0IAsXkrfGM7oQF11CHid/4VComAAlusCDS5nujt + 3P4u4OF72lF+gIwxQxEcUu10Ba4Nc50+uDb4uiauDadcw7XBpyKM8byeAu0y067h2oCq6cMYLA9D + bgSyTVHsikmVP5FVQuKGdGYpLz3L4mW2Hb3ZLu+So7K6Zltt1dEsmHdWD0Pix5Lzr3YDNvPbXL8t + ROUFBIQRNKSFaujpUM1hkZtRG6L117pJPLS8Kq5NN3GO/AIXbbq6j+4qnm/LbqPFLNcKHduqmsPh + st/WDfWYzeb2GlV1h6hkrYobBBStWnX7hvk0/qYUsQyBiR/mMkssRsC+fBMejcswO9wQ3lBJTBZ0 + KFx36W1t1BHH7SFMaeRot2mhOth2vcRYr1F0i4JbDltCqVGvlL73OwwlQtCh3x8WKAGO4YKY305E + IEacGXgSFa6P6btcAHDN3JAsFLueV7yAaGxdiT3qy+Pm5IbfHRtaWz/GHcpZdHkT67bn+xLfLu5b + GNN2ziXWhOOXLtTyRvnAsUHDJdkUXYacCd8EJnEXCWiAgv632/QKBII2AiBJxJrui4Oi3PZRW6ly + akj1dDPCA6fRt7DentezZRdk0P71n/u033GtH1i2WV7qKjfB6lGhhF7XzU2w6hVK6KmAMTz9W0Nu + QjUyzHs5cQLXd6yxE3iOY+7MTbAaCpQMh1Dy58EUKWQhWP4BAe5/JLCOYV1zgUO4wutkdrjv7N8+ + rzZSdB0Il3QTxfEomk/T+5Q7mbcrLsBMp8Bp054peY4ViBqr3EFVyBPZC1jP85XpyH7rHyOsTh/L + EbXRNhyJLsp2I3oojEU0gxF8m4grogeIl1VB2SvASmu3MmCEzOOWocAWtcYYBTHId+EMc7vCgamb + h5bqU3Q8olOwUgE/JVF4szfVUNQ6RU0+Ia+6HtVWQXZfgp3nCouUEQsVxoxBaJJ5umm9x6PCTnqY + P8xH5R3E7cAP1ZcmDZsTZ2EtESB7DXCoIil73ZO7ryx9z05vUEJPWDx7zu4wYIUDdz1sHZMfZUQL + BHy4FfaQt+l1TehwTrkGHI5PRXDqxzf1YiaBV6tkNgngnDjOOPBMy3XreFdoppim6XqWCHDWEoIP + LTPhfuReZBFyurytFwe7/s+LFzC0pvQL5sFAWvMSLC9siDslsY4na6/jRYoFRXhQXlNuhx+2EQfh + LghqoajoCsBdvisQvVrHumzncplOr7lBTmAaL4vfUwpMte22yFdJ0ThVRWWzchqHmv2mXuSslVa/ + I+VC1f3CbANCyOJhmBVv3KtS3ReQmlRc5fyhqYtCGhAPqIRt5IpsxuWttzJwY6tMwwBkED4pJMnN + 0u3NPJ5gUiJWQVvH0Zf+kGhPOUlDsiqU/TmfBSmtIXdFVn7un8SiNUegQha1Kn78FilmjvasiubY + piNVmMJcNG5PnXvXcR2nocjGAUvpuIEEg2qc6X5rWgP0/uE6OGey2KTKiHeOdTBNekAASyDFxay9 + sb5gB5K4fQ+bbPqHV+jNwAwdMSGFfVjhyHrbbE9S7fZ0l4tq+96qL7QgEg+1lypCAQuaCY35v2Bh + 0iXt3GiJL8FxyMaUGUHB9NtsUsTvVS/1FCRDhQRnvmOsdz0q0UgbCU52UkaCE09JsFytVxJv+uz8 + 5Az+9250gzDt4gQZZV6O66wO1yW2NTgFDg0XStOBHQaKJWD0WRG4eoywBPRbfCj4j2dT6CXvQAhd + e5wyO+AiQgle+7E1ygNTMylqZ5hZ7K2RPsW7wzHNBtGjtF2HUIgHu18Ovxosr/69B45rMA+Vbyrr + qX/i9gN/Vm20raeii7L1lB4Sk9tOV74Avnx9IkIrDfjni8+XVy/gRvxrtZrkr9DAwFbcJMpCEW3u + uCXI3tt03mPlRLDYo0Z6QQd0zb9N53fJKFqtonW00WRKjm3Zpdi6/pBvB2Fv2NCc9/8uW/nmbtlL + G9SOmRS0yvE7s/t0+mU38ScEKbvzO+Whoxzqt1eW5+ubqeh1LTOVoFwxU9FTOmhvPr2vmamYb5Zr + 7trhywkzsbZZOMafvnQMvwVehgjaac5+LsY8jGT+8Dt8A9o8bpN1Bou4iVfSnHXLvQgNHgBKDxXm + qzfpvG6+enKuZZiBUXUGWsqdhXZrAjJ8AHRQMUUVpgmtKbN4ze0yXwvOg2qB+dAO2wrMyz6MR1kz + A/eRtArZThhy7uuTmLKBLRrx3qDpCmv8Lgdx/cDHYhONedrHE+R4HpVCyocPPaEN9oCxP6ZDY2jX + vR2QyDNV1sw9ZSfc+fyK6zwrP4RmKwTVEOaDYcp5DKZED1UXxLfynAw7PDaDnikZvI1+RgZ1UUnI + 4A8lZAtmUcOcxJtKukWpPLPGS8X+eIqFLVIsXFvA9nY5a8VNz/s5QCE+vK8f6HV/unFLw2E/4zcG + DrGDaDpIukFoUpiPWMFPk/q+HKSM3AG9/CDHrG8LrFWLeX2wVvF1TaxVTrmGtYpPSeK9OrmsBUI6 + IOPWoFbhqRcEY8txmC8Nbh9PFFqovCqK7ro4gWO1LrrQ0nUBBq3BYUGWAGHPVECkySbm7r34++Z4 + dDLPUv4nkM3iebpAlBe5KTIu8sCZeMAw8jVG8KLARq/h8eZeEyAd397iDn+WJXNoB50c8ZY5QbGz + 4mMhfl9Fq3rpYWkfVM2m0arR22u2g0+HWA1ZFg1upw2DBw4VA3tSzqiyyN+aFMIsM4Btw/YS+Qt0 + /MAMQ8evSvxFX0dJvvf8drAlx3Xtuodb249t2r7ZBiJUGmaDH1uteMWN7VgtmgILAhYyR4MgFkaW + O6FCPGgjDqfKB02kivJLZOAIF2xjijZaejbxMkJa5RQRs02lav6IVqDGFqRGz65s40Jyi8kLSf/d + +Ak84dUo+qE8wUCeqXz+zDMNsYP4pdqwMbTlbtwpbUSKu6sHwacfPQAdkDn+caID+LEgxbXh/KAv + Jz9t2kRtFjh52tE0HzAWsSkg4cF8jP6ZCqfbHgs4YAQBoYqR34XvL+52GRdOAvTRf3eYIn248y7U + FIp/QMnPvq01so08sljnc9pbnLechhlsuPE7xyOKce4OQGia+8MjF/BKbjjEdbe5xkYYwPrggIRr + FU49jLnvpDi261HOnLhJJiqOSZuUlPM5jsNvb96bdi/wLNlAS9ZX1CvSvnxO8v6HT6/LFm7mcGZW + yXwKXk4wG8MdezaHtEFx/1ThWkkY5pMPAoyQh0Qt4823dfplLDENxNWr8jd5m5NpbCkz6iza3t0j + M+fFJ+Wx26RyDkt/n7SEkWGAWfyVR3FgNEdWEjc44SzmbiS+O7g0/yG9qRvTb7azKlxoa8UYi4WY + eFqTqZHGMp5+qRJy+xLqa49vo6OHhFpSF0Lfcj2nKpw3YQC2QonbphXqfbKSRWNgZDfzBMaLGwz2 + zQuedJzf1LDMfDFXqdDzRYp86SgdlUdhslapvnkUh8Ky7vzM8j0ef0824v5PCHirLM+3ui8UdaPj + UMozma6f9Jl8NYLjyFaTefJFwQ0byKakiM0ClztQzLBSjpAXBEl5BzB1AgL1a3wXb8jh0Qb72QHP + cgguadNd5pskv5Wr6/bKTvdE4ncLMtuO1mFDyd/6ttMXpplHaDGl47rrqOqSd5nIAOTNZ8nXJOsn + 4P4RrbGhXd7VeIfojTsUxvJiS3776Ik3u1BmdxTj1JXSHj1Qld82RSLtd5SWsEaQM+cgNvWoW0Kv + awlqgnJFTKOnIlvm8k09Oz0wy9kytv/yeWhabjAO7dB0JZD7kgeG48cCz45gLuZzYNYbTGwaPbv+ + 8Av98wgna7adxhwF9TKZ3oMi/AZO6zLNIpkxs7qt2zx3RP5USu6Frbej6QYmq1kTa9BpEqMRvqWM + BbdIv5IaBswGkznGZf4M3D+HWiumwLieZ2kNKjf1FQrhFCvflgtw+a2mt2aqDRfM3fxhmmbNckbQ + KgkwP2Q+yDnGZRmDjx/kAmCeEA/Or/LFKl7K8FyhAaCEgKXAip/7qgwXIy8UOKrvFncgPRDEeZ6L + A4csG2U7d+Pnxo14KzfiL78wAw+DKpbiu76AffNarunyLOpbyny3ENF4cDSGfnXpHWQICLNQgbl5 + M2p/56H5yweXEdsvgPBpQnMOGkxsWhTosIjuUKDdq/SWssYMFaxyOKgDMlxB4RFYu9ZG+cFD+CHh + LMwLaPf3zAkRkW0cNLb1k7PtDfAV7jzpO6jAb5jpflQGi9TxZKSOZb+1j1mfZBXVRjdSR3ZRitQR + D2Vd8qUAw2DhtURlo1RhfpfC3pIJssbON0ZXQM1AkrwQU2ASio5pEYgucmY89S1qJ9y0U0Rz4xgl + IvCGgMRVOG/Bm9MDD003OsNlvtWgmPbWkn9MaVztRt2xRy6FjTSvK6GGzUFwuxGY8a3OE91JPjQe + Xh4jjiTz2+sryw70w7LpdS19SFCu6EP0VEBwXl26tTqOPqvUe3BeTrzQBdlw7KENM+xG67pZA/3H + ROsqS0cVaq2K0R8As8t0HMvg5jiPIO9iDGWecozDpD8ksmNZJHqrQvcwSGnUq9HBDRJ/g99wprcK + VzuC/yD242HF6P5dHLdoVoEjJB2yuYBcGp2evK4YSSC9YI6rz0jodV0PGFKu+7/gqTCsnJ+6doP7 + y3dq7i/H9qxg7Di2dH8VteU83wBurbdnl5MFTh9KPBhyj3fkfTqfkMwYbWL554oSrbTXLIOJJPyJ + FhhuMsjEU9du5Fh4G5X4ANxULRwGbUWBVQu+EvItHyjqjq1IwR5r8+zYVhB4tVgmiWF9fjWC5bqL + N5XYK8c1nTbwXc/2AtdH20ZtdOPR8Osh8+GwUdmMwP0ZU1gPflXTF2XSYwJfxtFJDb67cq+Fw70W + AwGGsdA2hXpIX3a4kYLPfFE+yNcHTjp81U6jgia3HTYaeTDdFrcy//yOra/F/vci9OhmcVDGXCrj + l8nwpj2jlKmQ99v3lmX1yMvjr+vl5RHlal4ef0p8+/zstGYQZxar5+UFoMn444DB6SOufVWPRxwX + 3J88834WT6PVihdG4asLnBg0JNkKjQNwygkEABXjNYeXAx4RL+8jCs7DF9TkCktrTlUxjLPpihF4 + EPzLWgm2fj6b1u3sB8qhBcnxqi1C16/cEZcXuVEZJtMJwgorn8WEoMY3R0FBzL+0JENaYSlI9+Lt + xbipD+MpL5GBO09l8rHQNARvVxpntJ5I3/cNnCY+hpqmPMbAQLSGw9XDC0XHM955X76Ac4pNdq8E + fGHr8HoI5wdCVPyE2tAGbW3O+a4OCGejW2nRSaIDfzWQlb1PLfMNM4/RQKNf2ls10qztnXdSLO6t + nhIrvC9qwjLQ4i3Gi5TRA8oEQTlDiPxD6nxrKCI7bRpSiQiYmleGhcjdftNKbbRnVXRRnlR6SBdT + djsVRr3GwMdnMA3plJ/3fyB83JHR+NrnNxcXF6fKPiNtfNdA3MAe+CI4lkP5eH+MmG5ikeVBJvBV + SdQR3t0V311HcbH8ehfNM6rHcX5C8Ehv4XeIQN1Q8sbK3B8eu+vYoh5kHrQMlyrZOPMz/pOicANL + sg7mnfT0B6g2uqxDdlFiHeIhsY44S1mDZSHJeHCdmD+0c6FiC+vxTOqqR6Nn13D1QE9HRvvrUnU4 + h24M7AshrkLPI4grzyLbHc7hOkYYpr7+cotSCQSBRkxL/bRfDWLd7MYRQO31eABK+6x/Xd0HMkSs + Hlf12xdFd3pZGFIF0JuHFRYixokpANruO9G2wwKrzvcrsXvSedT5GTuCw35ELsdw7Jg4K91YVJVo + dgiHFU5Qfn/yMQpyBXY7QILzYd08PnzkMPgPeySf62P5D5rXPmDhiaE84AHll19cmVaPUEZ6Xcty + IyhXLDf0VOSbXF3XLDeWhcFRxfxy9vI56JlWyMZ2GNiBsLhfiu1XK1SmUA5RaP1W9UpQIY4LznwQ + 5vnZ6wsbr9bTT6+5Yn9y4d7Ah9Cj/2JHr3jxK8wOVXRV9dwCaOZtul1L0ZzbmT+sM2EqwDEU/4Jj + hE4nsAvTGWrdvHgaGq0399FGZqqm8j0ui4nMFKS5vyexmMiBicXAhqv2oA5zUGu6Swsp9FXM4vT7 + A3ruyNrQ6jZwLbNCfXxx3TJYZXB6W1rJfHnK9RD91oBOSdX4V9pJBh455YVwKD0ZZwl5R9uMal2u + g9iCfq6PtYWGTlE5t9oUHaARZ44DW6YafQwumVB2nDktPYiyEd9dwe7QvxXoda1bQVCu3Ar0VAa4 + f2J2zaDPCyAVrwXz5XNmW6YdjuFHyIRJ/0OcYNJKrghKMQXOiwxmkEyq7Cbkgq44hO3SrUgkWlA3 + CKCVjb6hTgA/yTwhLMYrBDLYbKLpvQyc+5IsY74/1rE6ltkK1hl2Vp3scpb/dqGC7lNW9/H2TweE + 6bNqvoCqPFcOHak5dsfljLMCydy724L43zq5Jc9v4HtdHgLZpdG24n+c1TX4jldcGRYPuYHPLFFd + Kemf3DV4Tc8dhQcI6rj3gte6aXc2uHhhy/nYqYH+CKqNZU59gtuGC32GHp2ZytwvwipMY7xhu4EV + frIRslcWV9M9ohKlzB7oVfS6bqKUWUevoqeyjOfHWm1uM7BZLVGKOY5teWPmuDam23UFBsZzoP+t + Swivx2WVZXKnLEgXxFysDO7Wi2kX83QaxWfXqjDnNpplbB+ecVLOU2LmLjrG5Vbkz5Y/+ePJ2fPi + SMf88/PMovLb02gNC8rF3NsIFG+erx0TUs9vFyceyMr3yHFlX/fbRYRYQCB9zdM7WPsTL0/6sXm8 + IQ5e6df9k2kQspjLwPAhXTQaOMmTEF2fWHjgUPkzuLVLqxp3+Ry65+gQ9G4MSXdq26NzMA07RbJG + lXpgO/ax6U17pR6INrqpB7KLUuqBeChAQqfraHGDSSJG4Z/FtpYLx8PlMPGYTcgXtlxOjdodBmRu + u245na1cFn3dHML2XYGDrUAei9c/8ziK+Qna5udAy6TcPhRyf/betEL9m5Ve1yuQTZSrBbL5U7pZ + T64ua0jo8OlutUD2czsMbdsfO9ypTNvtooj3Bvoq924mmRCJBYcQ4AwcnE3hBPAb+GS9qqOz4MMX + di2VoRz0GrSCjoDi7Tumf0CQftG0BpeJ77Kweo3ztKsW41prub/y0HJihf0Bkma2STZboYbw6fwC + 23NTHbLVCotY7kVJCTTiW9h9AsfhLlrKqmllKJKK/FFQDCVl4zzLsHIxH3AFlESsnjKGfbtPpvcj + 3BKj++TuHqQD/MZ4jZuGxkQyNR8IitLxum67Q1VtjtsG9xDdQiK2i0gAt5iCYP+qpCT22Y8GHgJV + qZwFPPXYFLiy5Z2TLO9B1Oc5c9pOPtOzCDMLkys1kqvaAe6kG6N9MXWJgVJJel6UTVPSE79FXDkW + IerahOA+oczR0tLn4W+1ZdZSvg6ONj7g2ghcT3atjl/P3gPy6rYws85hDFu4yKdiyWWO1fNjngwA + iF6WcjPU3ME163UzXqu7WV71lBTz/soxmX5wNb2uddULypWrnp7SVX/263XNFgvHtwIB7bychJbl + sWAcWo7jiJjCs4TnH2/XyQxRtnmMAndP5LphNPqGqccgxEUwFaQL4i2mGH4hn2I63/I1uF4s2Go8 + Ottm+INH424zZ1Wo8hoRgWW2zUYpspA4FyZhwTgHfPbp6vwImT46U1RgmbTGcFkDyDZn1Dypsiob + HgLdPNXNlX595rYq+havSVIt9cv7WKQztK82IZCYO+kZf9jNYOARkBe9Y4e2IT6ZK6a1idG+mQOT + sJ02h9X3GyaDaNA8S6k0/8yi9o8N2zV4VPqAlWaHyoEaqkjLoJXvkXmpY7OT7fU7BIdG1siNb3oU + QPnm5GzP2JxQRaP6J/ax6faxEeWNtONRZSflgFTxVNVzqFYSRDz3v744+/UNC30fo8v++ppZI4Fw + XSaMMerMNoerNEhAg835sDsk5T9MKT6XmRSRuV3iHOUX4H6bKjT/kZHp6ApENH15kl7XMx0R5arp + iD8VJUUur5n/umY88tya8WjCbNcJmD+Gn67riHDoK7qf8iSVkctGz9Yrlx1Je0K2QKX0mWNmRzJc + 5tVoGUdrTKLGdAWuKWzS0dUqgw1KsTXobyisKPx1DYsIY5U3YqFHUfUDW9+0ZVyjK5GPI28uMzcE + Nu359gtMXnRUMVOV/UMFK03ouiEiOGibgtRVXjY2lfGG2zqoYdG1FtLznDKQLlKs4NrmU8CnRE6E + shtwW0tL4QqEvmqxLtkhc30fZMvBN8XrPTYFnMUnsDkNfsBOaDj8rCkbVcDTel6MhCTrBJ4h/lAQ + /PQXSd+S5RDcHfebtEHv7Yjgb6SA9RR+QKj5wTnsFPmrjmOv5qBVW6r7br6yc0aUGc+lxCIVJZbu + CQIk+Am+rsGG+lqh+hDu/nB5Aar0QGZ6x8zsJ1PxJtoSFXVQlqf4M1GZ/kskLrTpyYfLBjwtAVP7 + LBfixTIfjZ5dfrg4GwXMcUDDOjK6CdTajy6x6wqNu2Tj8RQgP6Bq0CCrURzLPayPRAWi5JforlHy + 6EgTZrawQd8VSxYV3Xug8U+5pz/9/gCERjyWqwlg7sf00s7J9gIAb0BUOwBJvJtThmEZ9rn4/bD6 + 65R/OGzYr/3MFSyUUNS43ZShPgeT7/xgmzFHMGJpACDDzj+3dzSOLYzyoAE6rknWhmV8FzUEoZXz + F2GEd/PtNO1R1seBuW0ot1P8iJ2kfnhN272Q7EIyKe1gLPlV0X0HD+aXcDxSr5qQvPcBePFL+HdU + CvLF5n4dQ4tlfDB5Mnp0T2Kv8JGhSD8Rl4t2JtYAfhhROeCgqRmwtGfIk41/+3TFQut0oq+JywZa + uriiXtHG5XOhj19UUrBs27ED7oosOnj8lxPftMMgGPtoKxbB9hdcYblNiOUXY3HW6W0yl3BZC8xS + xcuWB71u1jKW47d0DUOZThqAFsX1lT9rRCIMKuk9EtHwSUIjWjCpPvwi94BdLhXt9wsDk436FYv2 + p03Von1h4uNSSHF3T+GmySYceeFhnczS71EBJ82wxtYExID5l4c5AqIhz0SImfUNiFfz9gLS/pQq + SFuegg3Z3+veu1gxGQ75R+Ln7s8OgKWQdVxNzUhNzZ72OUeqJ57L+mLCUBNd9UR0UFJP6BlxhWkm + 1ZPTT5chCXmka+WYJbC88To7RkFgcTz6nC4fRqfRen1kYJMXPdtgh9xI7DFXbIufUnhFnU4Rvn5l + Wp4+f6bX9cLXiXI1fJ0/pTU4ffepoc6HV6vzMbFM33PsMfyRAx3gqsmdmMwe5qLGtfKNEO89vU91 + 63dUynbU7JMVlnt6dolsYUpcIV6n84kqs10cV+M1WjJVBsEOw2LDZ7abKT23FmUnoCMb52ms0sQ4 + lmMpnrPYySuJmi7qZZGSCTtRzsP8Qc7D6PnovZyL/xidfrjkD9ik/hnjsroSzecPsg4u3bWLh3SC + VTCAZ875HYsYltDQwF2jYuMDKzDEp3NO1TFdnUCRjfmehxJt9Yt75IlunvH9AS2Bn3AhsL4/f0S9 + i13x+9WwQbhO0u1m7/j9vi6yHbQI6xdorPcw5e2bS2AIHtC8aD2YitZ+fpyedmGBPEKXbQac4RAo + sE6FWTiiTRTHPBI35fW8OepistmiAJDLSDx/XvekyWvZkyKS/cY7RuC5HiISNdEVkUQHJRGJntH1 + vFmvhYi0uU8wrIGXLVLhDUbj09FnaGVMo1vHsG2P2W5AHvGQYhp0Mh501WYWOrYguki/IjvB0h0g + fmEYBlxT0Qy1mZ/RQadUzUyzNhUwX7dx0sQ32koF/szIo92Sp77l48cENOuPp6++5fhkqiocBuB0 + 2XZ+y7eIRiyQ9tgO76pzKkOTQBHlSyqHcV8WOmRQ1OEBR6EvYkPeX1mBfzo56RFtTA00440F9VrE + MT1XMSK2eVKLOrZZUIs69hl6rcY+sxnOQBEYqJZnolzv10d172mrE942u4MBgAd2RIjYZvTvCJGm + CBHjSSwTnJHBx9Eds9E0DkNu+Bc8ZgM+RYUbU8kmGbPh+iYpdP+OqOAywr8jKn52REUgjdiBCaKx + 1c+GLdromrBlFyULtnhIrP8/z9BKgtGX8mRdQp8nMpdApOEk/PqebznQhwpvyvGt857QTs0siyc+ + w77nbkxsPUGxYruuE+kvvvw55Mw93MzOgQXIhvQsPzl/pW7emG7OeKjiyS37rX/Meh3UvJE2NLrs + pIyNLp7KioebQSsebjxjHm/IieAEf6yKhza6qEtnYTftXXAVP7eC4mHOG48uKgmdFC+/xvN0pVf5 + 96cws3+16o9DMl+HA0cIS3W8AkoDWQSeHFcfrrrvUNeDpOgz4ne0mBksJsh+ibTV7h3o4phmjqof + uMem1xNVn7fRR9WnLiqo+vyhcGsnMybDbuGfk3U8R6+0gaDYz06OiuDYp/zVYgQDb0xBsp4lim2E + /AgclMA5AG7qk0yQHLi0xcFFexyPohpxjQs8i0oltftWtPS/fYn/2OCznBThO6iBHjRAedLz0jv2 + OWhPTl8JkxrpS5iik4qESU/piNeV8WdXHy+P1F1XONwiHp5ZphfYZnhk/GqPsmUKr08KwSuSzK+b + FTNLvGGLT7joaQVDFuLxKCf7EAZjmw6VBSN0aCkLXl//Olk31vvSliF6pYzvz712MSIz38vzfdpT + VQ5uARJUMGxe35DTR8s+NFJgMEPTcHLgQbh68D0UbswPWwdr11R04fwRGzo9DSy3JxdSbfSYUN5F + gQeph8SCPk6owkyRvxb5xq6/F3tBycNxhMO4f0mbfnt1qMK0nksDvU+yTbqMDxwd1ztCUg5vJIYo + qAy7kr61hZ69GukzgCcKSvE07YTcf+yYVn37DF3pxaRolqbD+NPID1z25sckNjgm1ZT55T0LXX1s + Snpdy4EsKFfcx/SUdLzffvnslRMasMyH55dhnx375XMfS52Pfd+0BV7V53uS8LlHb0yif3R3V5D8 + vkXZaJ5Oo3nyOzyVlWULUXsys+HLHEb0bVWAPSzUIagDIvMcGhUel61gp4yeXXy4Pnol0YgyjN5D + UiS+LeNv6HxccBjaHBjpFUh5D6NZOspStGqCnnKTwFh5rZF5UrReqnLmGbcvEfxSMV5iDoSyhwz0 + HNzhcmsIHPsN+TvLNDPjw8WJYyoce88PBkBmZq5ps+Jdty/Cs2s6JTo0eTj11couTatR66s9DXHQ + bjrSrDzXNBt8saV5UuT7ztrTQLW2KjTqUbHkwIYjWU5J1BnhPpjZw1Ha8elu0ERSY8PsV2L30cG8 + 5QXhSPncs6xj0+olnlMTXelcdFASzukZcfvZFvTVbWbIn4U2IGoHvsdkftLeYENPcP7dvEKye8z6 + FkjGJvr1kXkHlfLI+ExUR46nzG7z259+ury4mExTbnf5Gmfo/yiE6FxjW4NToBrUjCqXmiHzG5SD + vNaJLhs/9NaC9oG3gzfXqDb4IQNSrs+vcM3fpvO7RM5GnoPfMUT9Iqsit1263Di4bzdIsLZzYaAL + nHmM0hD6TMAOeC2CvuGm9z2JPP4l/DP8r3ShlTbDIWqvDrlDdd8eSuyQmTFB2E5r38t/Pwc08Rs+ + iqija+1je9ilZcsK7JyTF1h4dACbsplDXFntA+haku55EXoCCo85Th8oPHxdEwqPU65B4eFTUf30 + l1O/luBpO0ENCM93HNt0x77jmaGooiAiBeJREb5eMp2Cq4AXgszgy+Cr8nzGb8nmfvRbtLJ5pOov + 8XdLVhj9MvUbk/EJ6F3EJb/ZLu+SclRyaPmt+MemHdihW6trFGUU2DDh1y7lC48aAgBK3ZhO2NqN + 44D41hicnBIsLYfv5x2IB6UgZddsw5nzHT8M4PuMt5cXk2jJa7zNxPgf5iO1Fs8eohXM+tGORXnV + sSArtSIrA/eHAm9zXWaIUaq7NJVou70EEx0Kjbg1uhymO4/Conpr8O130ZzWPt9gP0CatpllkfFM + LuR+pYkcRm618jbWDWJprOJ5EMUdSL4E3nQoocNjWCT79SUSqd2niA1/XReJ1G4oYsOfEvt9f3Vd + Lw/nIXZ9pYgNs+3Q85wxs2HYprAVvk8zXoN3jUXVs2QOPIM7rjgbfb/mEOQNcO+lQoBl6BCrgnNZ + rNjpBaEbWs0I8tzrWcGir5ZT1qPUA4set5Qb1LDoh4JbkeUXl4WphYssj9DHWS/NHgtaC1SXxqq6 + EDDFoPkXVyQDBTsWaF6laqSsUrfvw2W5GqmYV5XWUrwCynvklSqTiZVtYNejgXmawp9nE/yRG5vx + UpiDDERAa8VUksUDkFgauIVzeE+HStAwEm/bpvCsyeffxI58uGs5ob5Ro4rAIQVM+YxzTrNznfRu + r58SJLUrNqGhU6yDRmAA6TJdIaiDfgmYg8C7JGcOVMhecN4/ZI/aaIfsiS7KIXv0UIaJZ5YI2XPM + 64YcrmuLGe1/4c25iSgwPUMnd6oJrPHAbCvHsvxipEwNY7crcKZ5Mw+QhLXXgdhPNT0kXYu5wuHf + kaS1M0APc768wsBRTd9rNH+MTK9B+IBKGfEcryc8mWqjjUcluigDUtFDUaUSxofX8SzmoiccF2wL + ZwIUsLUCXSjSgkPP4BIjuzDooGQ6XD9M5unybgKfgF7QaIMl4jBuRiPSRd+a6nilqKpSgZi9AmlM + z6N9R3A4B4blmIFHdpShwHUwyJDUunxCY5xnzcxSQWYo3IanBptwsAfpSRgt+3zv4FbRp+BDG7yW + jScykVuojakE390IWmDMyOm7yek7ws3By2EGAuK6d0CeR84Yzjkn/40RRBMBZTER7OrvLWgZWkeY + hSIviEtLE2tCHZ2mJwWqzz6enF2+O9rTdsBMhZwZvmXWsen0Q84UjbSRM2UnZeRM8ZRup+06hhVE + 9KYUM0oK5pFSlLjWW6U+MQPZkZeYRTUmQQwCiTAdNgVxP+rdVxajMjurLaHC4YceenEBTbdKc8hZ + 8GQiJtEv5HIchBH36LI2t0gGDhdy2rfZEDA7B3TyQyyLjCei/Pb6ijk9LIv0upZlUVCuWBbpqSyP + fVJF7mShZ1UqHDkvn7t2GDr2GLRTLKBFdkW0ByndBrg8ssrnozz9OFpHN4j8GJdF4XHJ4sRRePGv + uDRy52aLVxW9M0EU4yQHcZYltqM6NKjchWUoGqvNGxOGFojcrGofPJvkw2eT0geM/hu+9Nnl0fO/ + N7p+HNC72qyaLZ1Fc95BI/hT8TMc07babIfMNj2zbucE0unkS8xrSuyiXbYbFkpjlmjnps/mpStP + fOhXi5mPC/4qOR/GsHsHeSLfJlHGrXKzZBGvX42WPK8IEUrT6XS7Fs6saPRxgtFqyRL43QxFrplS + f3DGDDwkCqjUdnlVTfwuzvKahtAPn/SpqBI9mfiwAqZjBSI4RaEUHYLrz88gtuh5jHXWazDanXeD + pSRH95z1x1wXjbQlR9lJWXIUT4VdI794V/fR0kBjOYeqSBFHK7cqNaQhfkgjZixSAs6GlabUoMPN + 9iYB++pa2x/PB2AirBs3tsXTBA9/NB/J+YFHMKPJsmdYX8DMkmVGBPO3UGkvwuG4zLbkh/H12tM3 + IdkVY+QXl/RgsjDOWXpxZmJD9CIpql7wnTBLUFLpu34uiNvkLN9soun9QpglsxVwj3lMgMAbECbm + CH6dYn2NmJtM1nDDbEWuAC38RY9x+5RXunMqxvBpSxg6XEPwms7qcTXKF5eMWrEyHVkCvNdONUMy + GVHUd3EeqEQQ8F9E7i7sEj0d4BAHlG0GoV3aoxWe0uMaHMCgzETBi9eXf3U8zzk2WR+LsmqkaVLO + OynalNVTEtRnq0z4ljBxH3Tw5cN8JEyhXC3nWeEhQ6ze4MjA6hbipVmSAxkrZH0pVp8h2Upb3jnM + Ao4ILdOOKTAkfFKSCWlomXbAp++GIehBrFfwCMUGJ1mKX58eZjE+OLGkZ7JF7s8jR0AhrHtyH38X + C8p/fyr42o4XBqVKVzDP8ZrkbXlXtVPuOoKOlH9s9gYNTH2OYN5IV/5RnZTkH/mUDt7vs0zA8xn5 + P9WH/59ZxvA5PzOgRJtSxPHVxcbjxroj1R9PQrFNh/SDKJumGQ9s7sg1aBcnbOaanME2h8V1f17r + PepSvHwZSns+TbaLkXbcxEHp1o+WsfwI8dMheQhJbMasSr08MhuVLNVQZ3ZkBDJTqTgMPZZ9UqFk + E+0wC+qgHGXBnzUrIdXfCzQQhSAIByjddECCoJpBVQ3AQWD+Pm4A2UR3BkUHpRmkZzJMZW65cjq9 + xnCU95ZrtP8FCdjRxKJYFZdpxaromW417RjDh25g1IVbOInwzpybNxuDOPZMCRgyIGMwTLvD4aoO + iQ3Rr+AQkDC17j9OeQR9xcR8Mzxmdr8wEdlIm5HJTsqsTDyl0yexIjC0fcnNh/ftACtaL5V65gzQ + MiUMS1iU0wowLETxoCP754d1Y55VmsCJWI6Pk/qCHAyC67BA1HRjrEfKD72uWdONU67VdMOndE28 + /nRh1WLOQ6xcUKnpZocwmd7YDm0f0zWKdQ0S4GoYSyTSSzhc1d06/ba5z0uWiYJhs+1yhhIdt8i/ + ThN060jhU9jpb7azCeiQwJVxBuVGfh0v8F3gOJsoWWLmzOj6nT16lq2nMiD3YWQfjWbAxHHfL2ej + aHT5Dk4NbI8vsAiotIj31FvkXYJhWDXvEoyi4uCwW8O5YcJ8EEZqIexIYwm9VwlVPSU7CWXJhptt + +NRyoA+aXpn+VNo4R5Uw9PaQ+VJ3uSupUuaMeHA5WN5pdSGVaCoX0tV9mpc1prwqfpKk+6NI3bc8 + r0T97UUpsB3xKe1aVlWMyCLzJFMWQS790oTBEdWYKKsSr4/dVmLqZdfGH33nG3jsla8rZB5XYpmp + eCXaC0H3HAuRRYK8gDYRrXvrkkCZESLbdsY3E1+baMVtAnhIxG7uRdIiwWjXztKxUtnSBrNjE3XS + GsY35+YxwV/g1U1/iJKQ8qpUDDbOr66+6dZacvalq3Xyb2/lVbuu3mFMujxG+LcPV5bj69+o9LrW + jSooV25Ueko36puTk1oWF1ye5Sqpjvty4nu27Zpj3wt4LDDeqO8eVinZMOHrPl29keBNizXQ/3MX + pf4oktGuLj6+lbyslHeU81PkhbAxKVEVTUgqsagY1kzIU3KLEA2poWSEXD7DOMZpOqE4AhENHX9f + xesEj3T2Sq1sko3gpCHvjRV+FnIn4+qXKxU04AQepcTaFJHUkvC0iefo2NFHcGKe6/nFk6GKALSw + 4sYcVderDKoUA67Dew8IHNultDdEjnE7Q17uQPlHk7v+iawHQYLqM6YdTguqzv17spxya+deZBwv + 8BUO5nwPOoJRWqZglKbfo5w0va7JKDnlGqPEp8QoL8+u3Rqj9DGPqMIoHQRacccwZg6PQqpHPE2n + iJI0OktEIIKQUa4rztlMMNHLWebWOahyhO5KhvXDVjka5EI0LHVUORP8tSUky2Vh0BqSBcoXcJQK + n1XlQ/LBii+pJYpigrD392YYgfLIa9TbPf5l+p6zi74SmNegGSd8g4LsVBa3UHBFrr+JlxHXnW+b + BlD4SF5kOne8pxIGUUjT0reMLF5NE6+cHS2Jq+VhaIsI3XVjfmOoGzACWVvZARR4XkEUzbAMaDqf + GbiT1SXgBWygqBdK2dm9Grr3CJL0Jck9Yl9gIxUH1Lb5dIdzUDiIIc4kb991iB/RSHUw2PRhIq+8 + EQYKqZMXA0Urv72CSdGPVqbXtS4GQblyMdBTUW3z+rQarWwxByNHijap8OVzj2ePjD3TcfCw4cXA + 2yKyCve9w3kBNgLPpOl9PPp2n0zveYXgWTzPqK6iYNQUGqPkI1EyM5vWY49FVRIqi8MpcbVWmPfL + kAV+OSK5aE4weWmox4csKIyxBDBj260AD3Jsxmm1CiWfzSbS4vNfVZj89xWWjRaXM9Ce8Oh8dE2L + QlCTbBVPURLlMmdWMHVsvqUFefsGzzRpBiC/R/T7JJr9M8JgqdwW8uz1yTtp6BiTPWQ5OvkML6Rf + DNwfklXbVkB4sLbJdeZZugXNfsKjLmZAPo6+IApglKxHX5MIs40Kqf9wc4z+mSbLvscVZ93PXTp8 + D82SrL1gXxO/GqaWAwXSlStylSiOEdWiUGisbwekcaArp5B6yRvy+hF5bZuLC4kq3JA0PoQ2sytk + gjxb+Z7EEIXtnKe6cWhiGUHBQYmVhSTrDxwH/JXw58vTPlTXbRjA8I2yVlRhPRuPcZFmOVTpIFcO + LBmhNRW48W490PYoCPVsb7flEFesGZgkaZSPQ1e1q3zm5L3KI71/O3lvMlv/XqXXte5VQblyr9JT + ulfPzi/L9yooVlboeRWAIfvlc2aFlm+PQUBzbYHv9rnIGLhKM6NycKNiqgZeEJWdnWtBnL2XXq+4 + GvJqzcC351kqCs0lq2hDknuZtMrD4Cb27VIUzxL9gPj+jduZs6pawbf83Si+BX6RwM33wC+J4hGk + q/8sXjWkHT01m1tpDlvSczzPadPRAjzWNXdKx6VAp+UynZe4dlmucP0dvRl626l1K7VuHLn4y1n3 + 9hh37A9poMvG9a0yru4VA0+VcqXA+Rmu1tKj38+uv6OD/pd1K3qxJ1Jvm3ZrR8Ruh0l0MAEAa8Lw + qZaBGrO4sypMzXHRcS/WwXt+TkCEqF3iN35mX3sqhjgF9f2tKoT2iFWWt6OdYzx5rHexNtlIH+VJ + dFKBeaKnQpOEoyWFBQkC3vAMOllZTpkqRuR4TFb8pY2vBHwu7cGej0XAGYx0ki2vPl7WJ6tHqrwj + JFhJOD6kBHjOIQ4oJ/lzYaEOhJsmow4ty6/eHlM4bPCe5+eE8I1pITKjJ6lD4wCZb3qhnJxD6qNJ + XsIsMl8hNb5/kdwtcJACHxkTp4nRApoz+UUMnGGZ7IW9LfmOo6oPnITHZtCzRiS10a4/ILooFyCg + h6oCgSVCdq8/nlydj55d8cj7I4N+vca/G/wtHpZrixTLn1EbQIvqD6oVEFCm7hoWIMXE7rijn7EY + CQwJBrZ3p0+viACxHApip0/cu9bLvzi0ExAlfZ+mMVrxqKf+Fo+nABCFHgr+LcBBLjFJOV51S2ja + rNPNQY/Ow37pIqqNPuQRdVFBPOIPiXXeJksmc0cQKWdzv45hNpZ5IN2XhCP00Z9ftP199AYIGUiN + J7Fbtj90HRfHC4p8oxCiLZSjdUHz0Eix7EWvl7/vcA/mE3I3mr7teHV9V5Hv+MrHzt23Zd0X3FXU + OlkmGxHTQGGNjUJWy8CAngD65Vn/X2s2uWG6cSVwvcy+b1c5HssF/FOUA/IWSF9zvPwaz9OVrqc5 + YF5xylYp/OcmnekGMvWF4BpMB3E8v5QBLLjlnvD/QK10cmpMuYG8TtH7/lR/tCvBdS3pidlTAfPE + mTnoYwYssWpR4ZrLK9O09D0b9LqWZ0NQrng26KkMJXtXixhwLbdcuMYJXj533cAOzLHrhiFySCpc + szqTzuNt/Gr0zLP+n0IshSipyt8i2zIw0PNseo/QHPdJhIFHCTcKX0fzRboERhaNgMXdJ4vtOtku + ZMTBCsuXRrmN/2a7Kfi218gGKOJ1hQbxTQ4imC2OVATbfTMMGhkCKxUXWqvfOK5nmaFbyzIpJ75W + qLUWuSlRO9i78fmkGPrmY0ZtvXyOnKFmZwcLXYe1BqQJmsaHElqD0uGwOFHd6QTMmrIeEJdstp2S + XRfUtO13DMy6T243r4plAVC1PKaNcQn7huLKNtGXmCrbCj8ZSDFf47WMjLBEhtk02XCQMaAhHyUY + 38ifGrjRpbMB5h3zNvj3CrZUnZkuKIw8LgO+FNiU4gxAz67QOxB4E7EGw10kx7Up6CNzHpJSfBD2 + B6s0rReE3XlHu65J1pc1SmT7RgYzT8gG84dDgD4ODC+WdHyXEDGqa0rwadEBEHJwCdtquiZYHnq7 + Hk3nWx4duddgkSINltOEjTg6iKy8F31ZWZZZLiiqrI9xMW+kW11WdVKqLyufqtoVLJCgAC01KljQ + Vr0C/sIJTCwDMYRA8xwQEyBXZ/etbfFzHQ57lVb5UcDwT6RyBsaC+4U+8fJsr6Gxpz9h0HoYT8jx + 8kMAGB6tAogmssMPBIqwKPn+0xXzXf0MGHpdS20RlCtqCz0V9TbPz2qpgo6PVrei2uK/nHhuGDB3 + 7HmMa7hdqYLpGujXUwWbzeNlIb+9YNmwQv6QaYPvH7K0FFOC9QMKOu2YxPmmJOzrOY/s5iI57OsP + rz+dfJZwXzy6jOS3yU0KrUafJhXK2avRl/ihUAIc2rwHPTAjuZXSD+8jNL4J5a5YiuQ7ui7vYswH + zJYTS1RgEybJiAejI5R5vC59XWacvD9XCoDrmzzaKPDcemzN4TB7jueQOaVhIJrkO+BKDyfeWIfq + z1HYZJdzikR0xDrtkeOyu9mO5PQ+SZxKKXkSPjA7ID2N8UMsttx8Yk9yzMza+d7XSjhwXx0YCAP3 + 1OrlsOmk9qHVtAH3odM6JodMscOs2ZBImT4jd2tpUQR3myKDWw631wbvrCU6zzaVJhuyfgUYZRNt + LZY6KOuw/JkuMKCiYbl2AFfj3sCAEtTPpoy4s/ewTXoUZuev61UGJsrVysD8KQmKH68ua/ZtOP9O + rTA7MMww9MbMs5nrllGaQLCQQpWU1sYjtGGjaMIrPEd3uF/WcZbMtrFMm/64Xg1udH5SEuTldkM+ + 0qImsWqftFejPNEYbiPQUrA3uJyWHHS8YCC+m2+nVNoCFv0rXUa4kqpArm2hAdexLLdYjDPurL6J + GyT+Fs+44LkldgD3YgT/wcrpgxlB9rKlMtOhwJnyrOw4Z0O6KZ+Uxj5M7tGTwo2wLRUw+dbqXYRT + tNEOmBRdlAMm6SExt7LhvW6zfFYqL3RUAlHc1Vaaot67bHJTGg9PjfX8x7F+2hVqfFeoKI39SR8G + K225TSjnexppfa+B1nCWwEMr2epGwNkiaeH00nJPYGfYfeQi2UZTMFJdFCUj+ZDOwtd4vYlvuJdl + BWLhM1Q0l+kNMO8NTKg87kfwVZt7cnYbn999UlZROd9lnNG8Y0xqsENRsnqg1N4e54JcZAve43ce + FcspdOfc8KvFJk9U8Vv3H0gv54CSIB2SIK8cr4epkV7XkyCJclWC5E8FpsKHz3WcT8+36xIkrLJt + OWP4iTIbba2T9V2ybISlfdWEHg0ckUMwwJbKyO0nsBQWmzrS5nABDHJNyvgL7fiXLTKphHyJ5Ed3 + gr8WIw88y692Ni6B+QSuh6EUlYiGeAUCz8M877AI1VukH1jMq36McejaGLg1lEga+PbjiKRPETp4 + SI8cN8QyYot9sIK77RJWKaBNc0vqGeYGi/+yeSD4b399b5lMP/6LXtfiboJyhbvRU+Ju56cfrBqW + mGVVYIwd6+VzEGP8cOx6zBdIYh/T5SSPw+rU+9Q9lmOxcqECoWUzJU6rqwTRT0Qe08nNLVsJJng+ + XVgNQGRPTaNuqfXBkVFyXlAGAnPa0r7hSnHdwPm78eNm2+B7QkG9wEQOX6ilJ7HWwHTmkazajF/b + Q0o3HRrRLUgtGBiLwWht8KttUCGWEwqAkrxIy2y91QgL/7m2h/05t+RjXl45wHaOmduzcABvo183 + gLqolA3gD4mn3axnIqGlAHyUK7a8mJfvesDKnCOjCKoiBfmrbOoYSIWL7vD/hOhuVxLnd2K/KCH8 + D4BqwDDAml+Z3KFaT32QWFMH4hy0h0/CAPj5acu9ePQBDAKNIPD18pimaF2ERuvcJz9D2NsjmGkP + RCLJKXxVteyde2x6/Yq2ijbaNctEF+WSZfSQOAVsGcEpzsobKJqv7qPRMwy1nT9wDEllB+PswwLd + 2GLWkdHYrtas2gr75WXQPIt4iylStpDcOiZofFyk6X08/bJKk6bD3HYpmsL6qtCSiyAtPajQrkJ5 + pRhwHW0EtAsVNpun0202luNGwLccUEa7L0/k3pIN+4YHnwiQN5CIxkXbNkpRJQu1TsB2J1vlsm59 + 5ntTCRuojAuzgXCKHA0CS//VyXd4qz1hx64Oscu42Sxh/ISUL4mUkw8b5M0GZPyO7wcinC3T4Sqf + uJc4n3jyWtlQW+nYofwmLKACj/mGfQIOmIPB3+wgkBQmtC2gWZXZ7Rd6cQjhR3caDRjQAKT8sLTF + DrJsyBs0UG6k8ISZfYsNykbajiTZSdmTJJ6KyAKY5Bz9E9ex4VAp8bvoRxLFjJvAgZixWN/wSxIk + X+EwCsOgKFWp/NF9lcfD6plbfrF1Q1HsVkFTp3H7qIeuow4U3dJgLsT+31X75QeCf/Yrztqa3G2T + iq2IkAwD00i/KQ2jnmPcrQi0dQjCntnRYR6Q1+NjhrzJl+lysjs5+A9U+9UGiZrP+Ic4sRSjmKUN + 4vOfJpCiR4bCvmEZ8u4JFXAJcI1jM+ynvslG2tAlspMydol4qvS2v1aK3hgNz7iG8tfTUNanLpFH + tJIwFDXcHbdUMAarFPRFbvsZDps+KVQGz/UhcL132QqUi50Skz4mmUnBMvcxxuffp9MvexZ/EVvO + yQMo/dA9ZmbPVEDRSDuIUnZSDqMUT2nLcVP6GnFW4+0XoJCKWHu+967jmTv6GwFSjWQA4fXXFYga + lfCAvC8Mt/RdER/wg5C/HNd07eJGX8cb9C1wtXI3etOjFir+4ZkIPSCz/hzoVkqqYsR2irst31xi + 3x3ADUwB2V4c6i6AtT7EvSrxxwJLs1nolbBrNHPUJRezZBhL2C+MJdQPYwkbw1hCGcbyt8truxbG + 4psNYSygYjLTHjPHgQfC1/s1mm55jc4MNkZRTSPP7N9Wmb2nY7aAW2FZpuXbwaPBfYtQAPUtGyxg + vqnV9vAsu8UZKwdYLu1x+unqb+efR5t4g8gmxXIeagbyC6Jc4oPXUBEzynXnHCoWHR5wlaNcrgYs + aCAEN8iUuT4i6ouo92DPx7KARwE8t/TOu+cTQuE3cGeoKJbQtMkezTiPodcxBw+/bSNNyBrYap5V + ul7yuYZTKqnqq6gmqZpq9OXv19OZDk8Yr7ffrSXbFoVsil3Sy1vi2IJtuH3iQ+h1TbbhNsSH0FOB + D/T+Qz36zTfDKtt4zhwXLhMGbMOFTSRyTi755p+NPhQ9EITIM180BLQNVSGg4iEsQ+KWaGGNuDYY + HcvxHPjc4RIm3qTrLyAYz0YnovAeLL7QU0SoRpG1coYgUywav+iW59dGOTEq3yadja/EqeO1/V6/ + aaTxSqVdCLweGbiAJtlZtMDMFuBNd1jUk49oFudFjYWHiQfMiSsTm37+dO0YuHEKXCX8o4D7205I + mWHKXNU4K1j7KllsG3WtNo+DllN4YBVxmFIwtkc+jnzIrXSKQ5dsTEFFe555zHpmPog2ugZr2UXJ + Xi0e6ibC5VTQ/Ox6ocyE+9OnSD8B3URdfq7U/J239jHrlzpJTXS1ftFBSeenZ7RjZutohTUfFoQb + WFTkTz9cvpjBfwp/ViYmRRijiFyMioJVCy1hv09u0tt59JWfpUMBB2zGGN8LG+5izuLtLN2uQUSC + We/wx+tp8Y9izxoubeDQgLgeyv8PQRzSH09fRFM7IADNPDxlT0frMIl1ZuBT9UB3wpGXJ97kmTuR + yMsYPv8w5384ggmYJnOOQjI9AP/MDAJSI2YJp4t4aun3h4YeVw9rmG5+fPJzvWenYUh3Z8Op7Kaq + jejj+eRS59+zoybNj8h0dAjW9N17k5n61g56XUttEZQrags9FWrLVd3awXy/XK/NMV9OAha64Rg0 + Csnr29CB7udAvY4ONJjKIqXCEhK22gJyHUo0WSu2aOiEvu2Yw2kuhhTlsbypkIaGqe1eDP3a+fla + d8/TSvt1cizDwDGPTaef/4LaaLsvRBdl7wU9FGm/0GqKmAVZPJknXxSGvyEelsigYyL0hWPCNXOw + /JSnJ5UmoiHoeUcLDV0vFFglq3S1BxC+C+KoXR1BsUherV5LN1prz5qef3C56Ke79HnhNRaKDjNc + IBE/wTUenvs3zA16YDc7ZCWb9uAAhJz6GA8le7jwIPkcgQK+u2JuDyxzel3v0ifK1UufP6VL//ry + E6sZK1mItSvKt/5zx2SO7Y4dhGwW9/5H8p0XmEEj7Es1OSLlddLj78lGWJ6pYserUVMxTrR+8zKv + cNVlvGDm6WzKnBU1xT/lHnxoBvfhHJHPo9U9N7EhBnSaof83JVB0aXOTMHkqko2LLNerlNVtrHkP + Fa+M2ZYux3wrZM7hScMlOsO7d/JYulJqHbPaUut802KgOFfJ1KualIQjyy9Xfj+/HF+8zSvT27aN + 6XpdNWFrm6WSCxiWM5ULxFlgWxaM2Dhos8ovxHG07tP99ijhtXftTYMfUiVNwvkzxKxK1XhXSZmO + qEozbChTU59uHYOtovnYQaJtoYM/JLpyfzmmZ8SRvCRCKQwHttmzVqlqoysMyy5KwrB4qA+JJqmg + Dc8MKFtnv01hyFlweUzTb+dXpu3qX5X0utZVKShXrkp6KtK+z07rbr2gCmrhv3yOueB2MLYs2/Td + 1vKuYxIaeN0HDjQyi6fRaoVv0DYAHgHSs2wlKoPwN3OkC/QuxUuY96m8KJUkIpzXOVXpCR+dTVds + xZvCvyyVKT6b/gHgMopxmGWfZDkCoeSThGsw8KqlPWZxBK8K4IuC5yufsPIdFpqtVwyilwTh35sK + 9j6ZVTZw+6rK4QElqJsC0VFYEibSJXgDh5KPoaFuxpKy4guhddh5X8kc55ObFXeuAnxh6/D63Eqe + TfrK4oD6wv8KsCJDQMc3UmiP+5A8ngl1qFdpp3f6pZ3eNZZ2elco7fT+/NcasgfjPsOKNsTMIDC9 + MTPDABOW6uhwU1G6UfGBotBIR3i6XRRkrtP0RP6pTAkkFvikV3nVKHz7fruIlqO36+grzM0sybjg + Kfp6NRrx75il8DdYHOAd05TngVI64OTi8oMypgODykbf4H+3yTrbgErLTblZ8ns8OxY3w/t4W4cQ + KY8xWS6LRWjKl4XTivTOGFo3vCqTn6bx8ndYytFJHlkZNwejgCZrBRVlpYyCVOwixxtp6KFMFpa3 + vawTkayUdaqs+GALvnu5GxY6yVL+fQgTH2+dFV/m+hIbuFFyO7XjDFDfmc8d5z5Nk7xTmN8TP7fA + +nSa7uC6TfCDlT2uOZp9KD31aAOT1/nl2ud+xaPw0DbtEDWQxmO/c+vIe4Qihy/fw0zp+9Lodb0S + gUS5WiKQP6V75Nf3dQhl17L9aonAictASwjHLnOYrLXx68189Gx7k/zPNgG9teRxOMrT7fgT5AIM + 7RGJKDohGBx85/ViY78Cfp9hdV6MQ0NEI5Cq0uU/t3dkrxBzj0G1+Lbg9r/OV3UI5loId0WMd9s4 + PM+99FizOoC2GFS8y8TarwvLAWp+7bq4/vXDp4aJaQbNC62qA3Bc5O2wFRzTqcVT7zQgl5yMVk2t + KV1JpT7UlfTWevGB9n1emmOHXc0MvLY7qrkPeTXN4my7SJtA/2B+qqB/jfNj9NylvNYhLvlXsTdX + uQNJbEmscSIbigoqhbDvwhxAwzthznqVR3JmFMkpijCla47hBdoPWtekOkCvYEFitNzBGYDLdMvj + zzEsk5vjDDy6quZJ6DBDzDSyH7010rVXDeHtcynmPF+IXIXSc9Bp3BghWW6aN89Od9SBFYw9ukBL + /GJ3n8NAYf90L1Szq/5p+rQK24ULYLu4cufHypvclsmzlnXOrH6RAHkj3eRZ1UkpeVY+pZt9Os1Y + HhYwn4NYF61imIxYABYxFy49x/IQqqHywim2rb6FBDFmlgUI6czFb6q4nG2x2XdMqj4YsCcgX4Ey + eE/TFRDnERqgZcQpqOI9rfwMY+PIc5CHeudxHzqUDrGkHxhVuI9U/jhBhtqNtAJPHZ8MeoW9A9oi + 3j+HQMSYNNv5ntmzZKxLYbyCUH4uemLJurbV+o09aHeVCxsmjsl1JPsCpn3MWC/mRU10WZfooMS4 + 6Jlw26zuYfhphhcGK5Rskv8q7Y9isLZOw3KWthoMgrU5hOFum6Dt8EUjcn0qr2nmTe8X2K8fMLqf + 2j1IDLHcTgR9/P7KCjx9vZZe19JrBeWKXktP6fY7/Xxd02ttm1WiRZyXE98MHNcc+8xU+bDnsDSw + /Tc8MnjcIN2DXB5R5fNRdMuLWsvAkFKqEoJ9k08F3xTy+xz35FvylHD3+oeSxoCSfYZQ5MppcfPQ + nB92Mo2VS+x0kzVUI1L4u884OvDozXZ5lxyVNLPQ8tsSdkPfCRzbrinEh5XMZCFzLKkZF6l+LwLj + lmND/Bq6u6QWgiwSmK06e28jQGl0BaVaboZmNdpxvUBnhLlRF67OLwmHih6LpFGppRW2VjnSxQzb + NGjRhfGo2xaNv28Z7U/pyyvsW+0Na+DBlForzrWIEBHgtKBaErPAy/JAfRCUYt8ldra+Sam++gAS + qmmLbDmcae2g0r2aa8SgDArczUwl2e3entrGg4C5SkbZ51sNwQT4rVliE+v4Tt/c3ovCDtxLFpQn + vW/7gwwNhycqItfHN4HD3UVz0stLH9PuAR001cgRmNB1VX4snj38jszn0wRrOGICD9UV3mI54b5d + SfTnGivvaSMxPVY4wHsmRogy3XGRZfeuVDGUHcQn5MWmVcB/YWjDcqRW4CbtPfsOCF6h2DH76yiU + ePTLe1gAfac7va4lVArKFaGSnorC5Ncfa4XJrZrT3X75HOuCMW8MP3xEHOtKPfoyB/rfGguT8woz + ZcGqXdB4upUk8/Qi13FErjUdRvWRj2snlRvIl5nqcBccm3a/THXRRjdTXXZRylQXDwU8ebIQKu/b + s8u3ny/z4udCXnp2FS3fnr8pV+eDd190vWzMpjOy0oH4I0DvetQI67zIQdgI1b3XFsDbLa14vjRn + 7RFva4ZMtsZLB+UJLo++kBHKRY9Hj68K7SLZwtftA9DuWx4ZtnjdvrcchSeXjXfVMqkLjL7tNMQ9 + H+DMsU1L3mDwFp2/aYqemKxFsGu3P9nMojWB3ZcXiNSp19JO02WWJYKjCadVoRx1CiaqtU1GaT4z + swTZuLaAtxPIQxNS9Y+YPMa5rBnwmb/bRsuH+aQAllplN/taaE2SWXC7HNJJw+6RTD5H0AZea/Ws + w8qbaKNnUwdl7Gz+TKCXnly/U5BQRR5e+oMsInGSfWFGhP/hZVTDwDCGYblC+RIMQx6qbjVRv3oq + 3DIVXpLFd+v4bi/987Dr4aBkjoCZxZJy5VTlPhxxGCxrAd0I38FLfQkexA3RsBeXauy7GSIid1ly + XviVoblULWMbgMH6wkvD7xx4vzAiNDtwV1dfDHEkG5TJlji4BvkmrmwKlP+mwY5hCpYwnkW85ip4 + D1vEz6gExLzipZqDn+t1HhAEjWzet/O9/IxU5HGRTOFMApfs261j+dRtid92qxryFgllvqvNeoBc + 8Nd1812Rcj3fFZ6SenByVQ/MY6Fl10AubM+1HWtse37gOTtgLtZAvwHm4qkVWRxE2WS+bRwEVHxY + 2TzPFOU/WdADFZZe1yz/ySnXyn/iU2Gu+Pixofqn71Wrf04CWEx7DIfU37GB/jkH6o+Ik/KUNhAM + lvUEQ+kwPniUMvLhyma+vvWKXtfaDoJyZTvQU9oOZxcndZdoiLdmcTu4L5+HoHR61jhkJg/S6NoQ + izXQr1uv/pQbwgltz1B5nh7Fbl+8Z1aPPE96XWtBBeXKgtJTWtBf3p7VFtQyvcr5Zi+fg0btBeEY + WvoYKYgLSvk1X0AaupuDoMddY7OYm4BBuEWbBa3wL3ezume5KQukcne4YdWt3E2E1EAgUCDjWJ7T + 4aq1PNAXqhsm/d76Qc+y7XSaoM4pCzWhZ/OozacbsjbHOPNdx65GLFuTUtfS2VW5VD1mtmV/NpOF + qeXuy+8P80RUG6nHV3tmWJvuCtUyqnU9lWf3fhAC1Hj07T6Z3gvnz+8xRut/iR9A74hXMkuoYdDP + Pp+eHNHQx/wdjIci9FvMoKSX84z3htFsUq5JjdQqnqYnBh4BdePbAc8V9QRSAPdY7BWrDNNJulXL + 3OvoXXyp8c2WjVHygu6mdqgTVWpvLnAEbCKmn+MO9Cuq/CTSntwqjZwPDUtq98qEttsQo9nBh7Q0 + EaXDAAusU1fcslubEXyM1nt/vthvRgfqcefEM8+RHSWzdH0gfCTzPMvpoFZ0hfIcyTn/JG4hgy/F + cuLbFbKuWbpM19kYIz2381te1TTDjMp4RUb9HmOyzZBiFjb3HNNytHoASUEFNu7lRfVsmXLm9RBb + 6HXdlDOvLrbQU1WsApPqKjlncJ9Xc86egwYfWtbYsQIPscV5eCiVTRDxAav7ZJ5MmxNZVSInLMoK + DsV2ncHC8GiovPYCFRxQnu8sB8LhcXrKQSngDlRtA1kYwwpqwtH59enV59GFOuYl+TJg7eAPIax4 + 2Bxv18sTzFw0H9qPXWkjT4FsqbTBrErE2vji8qJ5lAOU8WgkXpd6+OpM8tV5dr1ZWdZqPLpeL/EH + rSmV1/jw9YZZqyMp8VTwBZsymWS5D77lBLwF6IK0eeRCvhrlRaZOJ6AoIgTtXNYKkKqjyBIT4724 + UI4CHKG5MvgpytO/Ah5Ih5Ne1FRLhTnaA4Jb074GrfNxcLa2SVH5ajT70cFgFD5J/VLRviYRic0I + 0sSLJ/EAMm5CVXVzos39twrCSBlXEhkA/rnKJPSM0bqNu5LFDk9J6RO7od+qI/RvAOsLz2/47e0V + s3skWtPrWreeoFy59eipwC/87U0dvtD1KrVWwpcT34Uf/th37cARsUOy1FwDDhywz3Ucw+/zLUgt + 2bS4iZ+9fXN5NLndEpxa2bEF3y3YUr4RsCzJaIWEed6ExF8jS8/dGr7lX8R2jIVGKcGNwtYoCaQv + v9nD+Myb2Kyp0058gU6Jz83reprWsdmrQkfeSL+up+ikUteTntJZiDYyNfHjBKT8Tbl0dtFV3vT3 + E2xdfAnJ8Rwey6c6nwMpy2ZgMRGJwi9preBxbdc5EPdy4rOhyO+fq9gfvtcpAO7DEWpYqwHgezG5 + AZv3I9+9ro6Anp4OQW6IqvLyrFKM69l70wl7lBLkr+vVBCPK1Zpg/KkwKn98VzMqY+RmrZSgDTqZ + F4zhRyDdRo73/4yQn5KbIIK9gvUWyHI2j7/GHMPll3UcwjWC9xBGxJXi8THIi8zOy/thEpo+FjQs + 0/Mt5jdoWPvkHgUgzZqO9WjXGKzchI290d18O40KZWSqkLKeWcGsfXtRxMGQwzSkDEHAEvkpkyvS + ouXkc44jGsGIJmJEajivRunXeA0jl3bEbLviKK6wZ+/W6TfobxbfxqjScDDTL9AdsCYgSZqCgVtO + VROzTGHEpXAO7JDPRXUeOjMxuzBfB8yYceDS8crEYHzYeQ/gUPNPlt2yM7mkO4hS+dd4tPZvr69M + r4f/nF7XYoWCcoUV0lOBo3paK4/IQteuiOwOssLAdVxghaFnh1JkjycEjrmC+xz1FQpqHOPPZJ5s + OBAMl7/TFCQAcoWUYH9/tV786o3u4zl8Auj/KJ0LCBl8gc4xzJn4G682in3FIjhJ8R/ElblRMNGk + kl7Pt77CU502VGscCAV1KHbYclrRSlM4cWWobacNGzy0bbeO462SRourNuZ6f2Fey0qEHVZ5r+rD + tQIfOLPxR9gIBu50BblqebyeI36cEiJ3z0sfHnwYwum+nLw1P9EmAbO0SD2Y908I5vMCAl7pmv9H + wE2VrJmqQfz1CnSYHqFN/HW90CaiXA1t4k8Faz5549VCH1yH1UKb3IAFVjB2UdsSrPk8i9hqUiis + Kg+ktLAKU/HH7YkzquscyupGzDO69Z468zzAJHLda0o4dhr9mXO1+yTbILTJO4dzamht79PaNnC5 + lXEmcMg4Y9EhwMKn63gVJQ3etaajp9NuV5HaJ1/o1vRCip7tXd92BzCOzKKVSTGLtKtU9w5iPmX/ + inWWS99Iqcm4+3O4r22DRsUNEridy4Nv5BMaI7Jdi1If+AHbg2bb9Dgi+e+d/eJdF+F2c0WnL2EI + 03yokNPsM7tn2Yi8kTZymuykjJwmntLlcreaWXRVYAhRvE7nE7sAKFSJZfh4cvb8yNB48y2QNZA2 + T890TbJVPhJIBQFqNI7qYOIihEgS19TJHwseQuriHiPe1PjNB+JsDBc29Uih6D+szi3oTqx1ljXj + nB4Pf0qO0rGJnWqf3x7YzY/RR7e0fxCC9dBRUkw3Sur03eTTu2pcVP/uPM3uUDxt7HI8gtnHcwE/ + LvcPxnKswCwFQyDo/SzB5C9pjNhrSl2MsuCbXkKM77XOLrMotRY/di+tzjflRWybZ4wd80Je+hex + bKR7EatOShexfEoX8Xo1B91c3MWeec3rqoO2C5xNrsJ7OzDa/8IJTOjC9U1X4CFQjAwXf9rETW1+ + qkWtw3ZgWfR60Wzbkz3sl1xHLisxbT0z6yzLoxR90Se8M8fQoMIqSF1675m1TZe+C2kKrGyFw937 + YvFFvbW8Q4zB2iSbrYgNa58I7a1wSCedB5MpCdl7w47Nfuicoo22fCy6KIvH9JAOZRZPpb/vGv4p + 4taM3en8+LaDnVz+1QuRHtZdcyzTl2jCBF1ePgvdwV4N+GoBscH4e8o3Z5MfRh9KkwelvhjxcK95 + oZBURyiI9v62TOIcZRPAydWbfkAa7XnWIW3HG1HtBcHkdQHCfhZfwlssd6htklV3K4FZwVvgxB0C + KaEvQQ/UYeeRt0S2IOtjYaXXNbMFWYOFlZ7SMb96+6GeLRjYXjVbcOJZjmuzMdwIzBPldi+3G3Jj + VHEl1zF3DMO8cK8FbPQ5wvWu0fHMK7rfgtgSr2WR26u7RUuFj13G1dMcHdOyfbexOh+iTS7I/HFx + 0QxZ2ZgaZvumVbHklqpmFHvMvUscZyGv1tpk8aN9cQlnBcYDLRcpRn2VTLTMqnZd7dY4ePJr/vxk + gVbSjA4lefQN3B4qMdIPHUOMjpvVtL+1vgzqs7X41JM2xQ4m4HVYK+sX4P7oP6DPeqqlTHjbs7Ce + RzEAZweU5jP5xPU9qHrX2zBVN3y+9/jRSXqjGiqz1TAI7r4qQOGcBMdm2M+KKtroComyi5KQKB6K + 4hPfbi0R4lmMJio7wkWBCRYEjhuaR4aQ6+FVzqBOZ1NXLdEpJ1hrgU956KfHOHz7Hl5rjUzOQdzV + f1I3c3O3+/qnFYUD0Td8R6S5WZ7Tp7Iavq6Z5sYp19Lc8KmEW7isoW84YchqldUc2wrssePYzg6w + hdUcqNdD8BsL5JVKZZlWKZe9KKxYroU9P0HXs4rG91jALTdPoaCg3F55TL3/1jtmrGdMvWikHVMv + OynH1IuntGmKQZIqNLMY5aCyQgqR8/g+6MizptoYqlNU0pnPjMPDMnvAyvUL7Xk0wh2unINRuHuS + 2MEv96sq8nQKePapbzJAXVDmimJxxSNwgHVAMgYv92a/tXvb6qiNvi+buqi4svlDaUC/EdZzrsDw + TQifVBGqn+XZpUdG14sXFzXYyivowcBuuI3dcUgKG0Yv87w6jd5qYxd4relUolmyZB5T7XpQrAjB + t7F6e1MpYNMXjvwBAAI7QWgPUf4eQ0j0XKHqdewbrCOx7hcT0z8hyRQusEV0h/HAwPj2Vsv0NNim + UQ+h+mrEZzZ2HRBuTddS7FNl7EDCO2q2PRlVfIg8rpwU4YYqy/AQiWZYVaDiEsvQ5vxzDQ8CVf/0 + 1D13jpnZRxJWbfRuvLyLwo2nHgp8kPyiXt1HS6P6e5GK5dqh7XsC5O8nsE7fzrl82hiN2QRO6gdC + t2VhjyRBel1Tt+WUa7otPhXV1a4/1AphuKZbrxrOfAu27Rh++O5O7Rbo/4skmHvMMn8mOKkfqkPr + mj1jLlUb7UMruigfWnpIW0LGTSGbTJbA1DbpnJf8iZaTKXwebGtjldxNTo27VWLxc2t5FD6JSaj4 + 8W8vL+A7Edl5aF107x7aPbOCoiyp0/j5Mt2Z9BNMpK1kycN4Jm+Xn4/ahaoeQYGHKrNDaWU+Ix9E + 05SMdk3J4c7dx+q/6wINTFWWxjaPmduzLA210S5LI7ool6Whh3QWJS+TBbERUqAAUXALnz1/KMFS + lA1HeR9Yx0AeU9MKC2AHy7hHPMeBoEEBZeiipBp19NxvmwDVIP+cWY8PcmWNDf5+jqG1D7aICJjh + Jzb6iaVjh+UBuFf8+l6pT1UnIoo+7xMYHwcArahd4ZlVRI9HGbpkHEyAGpmBqQ/lR69rghpxyjVQ + I3xKcuDn/3xTB6l3mV8FNXruORjuNPYc22QCye/zN/jsBLjr6ARBB2gDw8RwjIAcIU0wHHw6pYSj + JRpUaJawOgYH3hJga8cjPiIgh5fiOsGCDdF8kWabEaJSrGOitPmWjjbRchYvMCgijjbZeBRH0/vR + ffQVyakVwBhfEPYeyCE5TWm8z04/vWFHx0Jw/fztth6kQmOdIi4YirmraAPUW1ErbAyhaBNnQQCx + LJdVxdnybEjVrRynErShJ4c+j26rSLZEUuj0hRTrF7ARZ3HleQnHm5Vl5iocX+kTcqw/DvB3s53V + Ru6zisOqUO22mVZpN1T3SilWyLHCoG2u5bQYam+OR/fJ3T3smnxDlkhPmrbhqOjyroSV8DxvsSvE + JkHz1hdgLBsMNOF7CLet2KZiz03myZdYmBBhs+YgXpUPBY4LskrMkTbWEQJIQfOIO7NlGS0Dj0iO + dMV4MiXOOHKim4RWRYWqwPJwijDDyPqEBVMLr5hrxo17qmk/6VDla8c5bPdy77QUDhKWcyiQXuB6 + yrwp1r+nPQjZRj7JFW7TOaEUFF1sva+tMnBzGlVu1LkO8hazRK34Xjj69LpmrfgmHH16SrfYb5fX + di3UsQp55Dgvn9uh7QTuGH4EodttzZivgf6/SmEExtzhKmUEeSTTmd8brk600Y5kEl2UI5nooa5B + MaeCgUiu5Yi5GESp/tnyuFwUiqf5+N4KLf1TSq9rnVJBuXJK6Smd0stfr2s2R8e0KzZH7+XzwApM + Zxw4JhNnNC9VUIJVucwS1x09owx2mIXtmsvsRzxQrVwcYTnL2TzMz+bq44mMUb7cZk5XgYyKqITw + 962wNC7cmn4Nnkwr4LmFTM4wVlm8naX4jRxegWJESlaLUvkL3zbbhKQi/bxOBbqDSmAAJZAyx9xF + zrhUA0TFSQ5vXCg0kS7R8nBfQcdZFdtNcEX5wh6NQY2oCW+1YY41V/vViO8/jIyOv/M4aux+Hkcz + AlLN078QyjkWsdZiiG9PPzqjZ2+ns0nuMj4ykKACcLZsDuDMXBJMVvXJ6IEppownDiEV1BdHy8oc + mLatmveOe9Ryquwd+NyZmjtMjQktGk2RAIP4NMMwaNsJvWvF70+s+34JqPJFgsEOh1hA3X9k/Ho5 + uYIdp3+90Ota14ugXLle6Kms7f65VpWAhXYl4cW2Xz5niKloj+FHYPqVhBd11ap7VmyCcUkpFAll + OSN7xf+ZKVs+tzd8yDaWD3dLbhg5+/US7jzuqheGkVd8d2Wj00/cPTHj/7iQHchLCinVKxW8Ted3 + ySharbBGR/WC8cPyBVNQ5+FOdn0nbKxUUJd0ylQDuy/V/uGtBeNJiWjhMqyczLLIzFqLTpXIqbtP + rqYmNB0M2C3fhgjZ2TATxuNtq+DQbQUH/MluegPPss/HyE+1QrYzucL7YiRsHyYLjSFcDMPUJeDb + Aps0bqcaqfZwnb3SVocKdN0VpdqHVvv13otMdzWEAcJ4Qy6lVLlp36nRpNL9NZpEmsPtNN1JLcvy + Y7XVR/JBS8sac4gnFPUAeS57nB1dQbCx8ldAGXA5oPZBVhUVmMze2P2LAFAb7XwF0UU5XYEeNltV + rq5P66HF2dQNjDX/Lw8uBnZNwcV2JWx3HYNyE88b50Q/zuMp55LKLQ5bigR5DEmop9hKp/2hQdMF + FVeVAVED4AyzJcf38QcwCAQhxWv/cWKsD3Y19IdigImm+6B4NDsbKlshIXf/8h6Og358Ir2upcwJ + yhVljp7KytdXtWI7lh9UbIX2y4mN9XLNsW0x5tndFv0vc6Bfj0/spUT9saIUmSvSOfaSK9R2CGR8 + E/PfhsfM7hfgJBvpRjipTkohTvKprk2/QAejDT3Xl0b93oVP1TyomEsGglLvoEvZSDfqUnVSCruU + T1V6kKeTHjTmGRyoaF1opwphm2oTzBbyMFvI47NqBvaA2UIuq9E4EELXJhc2flk8T5d3+o5qTF5q + +KTGa7D5FmyIhDs4H6qJJqk/OjR3Ev1pWeo0L90JSB3V8joSX+C476a9H+X9ruSQ7f7U8egeeL8A + E+wxJtsMcoSCAsU94NYOz4H6A6UyCf4eqjhe5gWo6vS75qiN9i0nuihfcvSQODqVUG9L8K7/9UM0 + L1dVW8ADzqZDX0BrmJSXBn+APXs4jjDQc4v0NDB6G7nHYwAoDwVK7Fh5vjnh2WFFetoQmLrV/c1D + 8NZ90CHDsIDClm3Xt3DddQxsONhe1+W6XX137p2GRxmhqsDz/oQIVqZOqIhBKxM6Rjcpmqf7mZws + h6QgPA69PXxY1DYUa7B3Kl/ISpK66e0hqUOjXpI6dlKX1OGp4GK9q0NWsxFUL5iOwHz/Z2b7/Tgl + nlfBfKpVDkMrR085cY+Z2RM8hbfRx06hLirQKfyhCA/KY815yTJpZzVa/1Cki+gocHRxV2FZKafE + 7YvVN7LNuvn+qJm69ikcK6dWBc+x8DWzjs1e6USFVtrTq7opT7B8TIrm7XQl0MBOP5+p5Cp+XCWi + lx0Gln1kVP/+BltWX0JyNPGWxHT2Si44KbLKmOf65LUWKXcolVxSKlSwBD2SDyxdt1YpaeAanmua + fCVzi0zRZqovVD82lOD+bK/TJbU3HOGQaA6OT54hsYBycYsbrV9AzUEEHx0QYTC5xzZFjd9FBAwQ + liH+iUiHgo5rBpQfNk1vQFTaH7kgdKS4Y3nvgmPT6ifuyEa64o7qpCTuyKcKW1sUKbv+eHJ1XhZm + Pp5cTkBjEjlJ23g82kzotTyY/BoIGEiFizueJaG1D4pw2AuaW4dqyPVJsirDDVn1PA+QqWl6IeXk + qeCTbdbIdvVTP4eJ9rBBZOe7OMpAZVghOE4e1ap7W9nMJjakiFC5VRjbTpJduEj7U20Mh/SsQMwY + tT8gU5XTcwJ+peCBgKtUFPM4PJ8y5KB+v128N1mPfEp6XctvJShX/Fb0VGBGfvpcw4y0GFrlin4r + 9vK5bTuBH45R4rSECf+j8GNu7kHQGK3iNa9VBByb6jpLd1LGS6CAYDP/8jCf8AtCvBuLmkbYZral + hLY020xmSbT9DjtF1HImd9hZunH3rXtYRMu2HDMwWS1ADz8CRgPDWhY/pTFWPbBryZNjnoF4XSz9 + HTDXDSpOsrLvmls7eKfIY2P49KgSuWfD5WM3dFXrxvhBi2HghlHuOsu3BnSnPHp9QoIyKmhIorjW + 17hVV2pnWo7r5LpXwypqGVH60vgBJcNMn6B0i6hym3i+A1PuJygBO7okB3L+FT2mwPFMunEb+EC/ + YSCn4CdjB3fRmRGG7nt+Sy6hC6SAObZ7mlaGrNHlspDi8OjL5HfuaarJw8ZOEA22nzGBN9G2JFAH + ZTMCf0b322wLGvQ2M+TPQhtuCrADjFyQ4/albG+f9cXnVW10JXvZRUmwFw+FXD//HtBXFAotKHMS + fND/bJNNspxIoXKe3OEGOLdH19iyqAYgKRLuWSDcMrmzTVR3nd7H0y+rNGniyq2GD5t0BCqLC5c6 + 6FS9RUfTcxnfyfkn5ReEMs4cVosRI8D8ogSu+tI3yti2JdhZcxibqsCzXaStxp5mWffHl6P1KSDu + +tcPnyYbLMOFLk01KXIv9S8dGzhWeSkru/Mn1FzQJtJ9DWjDRWqrmUMhUAZUtXnnDP8IZMcwkLw/ + eANs3LR7MX/RRpf7yy5K7F88FDz0WyIQBD9sN9ciE8Tg/y6WZJyndyPbWGT3Nk/HtkOBE3dw1W+L + PICLJFtwfIWcikY4UHvjfjLz8DW9TZ+RQQOObIIMmefxJOmGi5ed90DbVeK7xM94xs40XX6N19zo + Em1GPMD2juwJ83TaI6nTsV1f+EeRMSwjfixv5YLGQBw+EyddgybZl61SpZAu2VQfTerH8X+quOTl + JXuoANl+LNF0qLjpbxM07nQH7mhPBhAlbpamq+FI8g+epVs4b5MMNdLZC8xKVr/xnv4pg2cP7/Lw + YCbXpfiIk8+XA4xHi1q36TGkqD/JjeLZ/h9nW8yW+N/QLIvXJEMhws88PnAJ5EWkSsQzOLXHVk9/ + MbXRVkNEF2U9hB6WFZEmJBDZGq8eyw2Mp1W3xDVNARnHWI88a3pdEzKOU65BxuFTYeI8qdQVZI7N + AqeaZx2+fO6zIAjdsc/CUNo4z7YpG53AGf+wylguIC7vjkfvBSTWDKeHOyokY89WsAExaRWZg/gF + 47CAV6azJM6OR7/ED6OL1ZytRiQ/o4VbaQSwc78koPBgvPc6niySKUgb25stXvebTTS953eORIM7 + ixpKFp6dXL9TAngJi8y36qbLQiYw88MQhIdaTjRcqtAAYcIabq/CaMux/r4ftCVfM9/1QG6sdVSk + VfzykoU3sIK2LAfmW07A6nTlMpTpsFBrfLmZOGsttVtC1Sr1YlWgSNp6UVZijPVHaUiOWQUVdOL5 + WZUM71onxjnQWW6SQrFkARCHe0htl2fRl6i0gY4QJG67wg1dWB1CISFslCn31cy2U4rU+/C5jrYG + b65j+FuUcNaMWnm+gTJgM/GdSNHWPRfQS+E4GHjMc5A5x+UgcybB13Pz6vRBP5dSCZamG1bMiIWx + 9iZGZgRc3t7WXb7CsnVxc5SStmFaW2W6Lv8bI1NM2SZRPH56eHo7JU+X2WRa5SsyS5Bf97RO+8IV + L/lRCx/qKY36VGVKm81pidmHUx0+0EW1Bt6HTeQ2Grh158AD0oPaWL2eCiMMF50NO40WeBVyObJ4 + V+ptYotgiuTXA5f9Pd2VM26Iq4A31LtFHsdS1UFk2BRw12QCadHyPP28THpdE2mRU64hLeJTgeF2 + dlXF2LFsDg1eRlqceHBJWmwMqpcvZb/LOVoloGPYPmfr7d3oCoFVNtwOIKDYZus6yI2WT/ryYlwp + ihjadg1yt6gklYB2YZitiDHNpFSe9IGFqMuf0fYJBcjdxrTxflWoHTd0nE78msa+G2JhSxBxYQ0U + p0bQ+NwwN6+EcJLBlp/Ot7MYNeOJXKcpSmubTTx6dvL69KiIwJ2NR4vonzC3QCaZJxueF5dtV/G6 + jnGfUfYj5gWv+c2NneXINih3rQrbc4bbc51vz2ew74/I+gTSEVydeA4Ueqblen8gt71rVk2Q+zjr + Q4dfF/r78cCSbz8AjK4bmGXPei269qfHqkRmNmWx7iq5PZDz5Qf4OFzTErWUTNfsU0sJX9espcQp + 12op4VOJVfAxrNVSssx6LSXHAwnWGTseCz3hE78U4sA6/p9twj8YFkYKTzIbScwbAcEtl2ELhME0 + ySY80ausk5slbLXPJ4WYKhfDId2abr/AWc7KOScNxg9obHstmnjo2KYnqxIXSbfgv5laYyygLDQM + sfGKRU2vI+CrNM4hyOc3OJB2/Jot4uNkniy/wEKXF7eMtRpUpZGmIRvXudGBNkDXukXzDLHol5so + WeIhO1mu2Go8gu3ETPETf8dL8l06RYPBPXp7CHgsK6bPCxtHJQ8S+8YywtH0yw2stUSGi0C/52AT + cRkk7m/RUvaBpSNwcMX7WJIp9GvgMVNoq6HPKHTCtpT6y6sB8znIhezmMk+7/X1myCjnI1oDS8Bi + FavNdrFHhC9fzaIeUchHadkLO9UePHf4FmVZYiXnrpXvdc8BaT5axVHwf5jSFGmq6IzgNcSG3Mte + /uTrKg+FGBcI2w3wbaIEUs+3dP1Fa4sO4JSoNdfqdJAKQaYIvevcwf3iU5AV8w86mNIAIPiuyfP4 + fju7chxfXy6h17XkEkG5IpfQU5JLri6vmf+6KpmYHmoYRU+N93LCbNcJmD+Gn67rCNnkKrlBk1rB + aOGy0bP1ymVH8hKgCsvPHDM7kjbwV7CLozVoX7nNA/bI1Spj/smK3y/3UVb0isJf4fSMYKy8LGq5 + RxJ6eOubxsqSGY9Do3HkzaU9Xhj4z7dfYPKio4pk5NgtUkfouiHiM2k7K0TPcUW7t12dDnLlvnpt + VaLX4S5hVpViRUfPp4BPiZwI5fLABSgGYJSFmYofKBc67JC5vu/93XgCm8KgjS1lAStwXYFuwc2g + vaegx1XOLKVN9Ur/3EFhmS4n3aVenka9G8ofV5u9V3PL8izVffep3TkjI+nDca1KOeVq/nAPLd2n + MAiNQ95XB+9DuPvD5eVCxTw+vDdZqB8FQK9rXS6CcuVyoad0uXy6/uzVDMF8kxaVXvflcwudh/7Y + sh3HFeU8rsveUtgLdzISpFmEFS+eX41AaIuXY5GEkxeWiDIQwe6wfESjRA3tl/E3OPqSrWKUgSw5 + 90ryHWQ6yBuAFDp14XXJ+vkvGNa/5EkCXIP5lG3slbif4N9e7XYqf9ZolzIdWG6rW9u0QVYMavfR + DE/R/cN8MktEGnOxT6CjAn75dOxUZmGdWv33pSHs0ma/JhEtSYRrUtL1A6vSB5qeiwlYjf20wgKU + b0evveicIGs80t6LfsLmM/AMKiM0yG+DAinwleqnuFaWXdesizsfX969Fn1U2acQtCXOFL4+xFnt + d+88as/d2AUD4cy4pqviBu1T99i0+sUNUhvtuEHRRTlukB7SnXd/J0FQ7h9Ab53LhFo5f8wQscxz + CWYs/3K2jh1jhv/BTCcm8Ng8yytk7OSt9AVSXQL71/fZK9x5uGjrYQGVDss+kZvSE+jIrI8Xnl7X + REdmDV54eiqq9l7+Uqt3aHmBVUNHZiB7MQfVel+CJV0UzKzLLQwDhVA0DK9hBmUStdjYeCHlQUVU + LHf1xa4r4icfLhvyxL4kyzZpB9TfmiYr7mo/sDw7rFdRy9WWSjk2X4dQLjV1D7ZZMPLCNieK5YJg + 4dpt9WkyrHAav9jcr2PYTct4Rze+o9NNTSwqXM1VhKOKgBT0o8+rTZWZXaXMb1sRO8b1HlgbY8fm + UJCDylQg/MLZ6Gt8F28ou090zj1lueNa7t+Mix4opl1F2QQ7BF5zB5ITz7qPNvffoodX0Pg+uUk2 + FFMp/NUwUUrtfD19YCsZDRDdZLFIUEF6rwqCWUUWgxPByIYB/7JWBh5OldHvOaGQyoIi4+lYMC0O + fAi97phKy+McEuYx38N8Kuk6b81/39dl31yQpRd0mmoWEuSnHjfS/YLBMnTgdFvFNatygt7UnCK1 + nYymL3lKaNdkllrrcyjNR0fdOjwzh3kiHvegjxlSgvYVZr3l9QNqlE208eqpgzJaPX9GQksS3Qvp + OcnSaPGA5dORvccC5IxfAgL0upgvv/vtC6RcagIPCKDeE8mjJnkUJQ0NVGB9gCqTtjXyj3UhAT2e + btcZNJZ9bUQCC75213d7ex6JuvMES8LvC2q8By7locZjY1gQ30ADxJfXlW9D8NWGCRugr86DmRfV + 8M7DY9armETeSB9uXHRSwRunp6rKMs51fHs7336X6dl1LLd4XabIYXldcyCcOvKPiKHsT4ZOiwpR + 6yDUhYURBCq6hPtbFL1OUKGBC/u1k3NhF7lqunVQ9zrykPXiNg5KoPiDQzI/HcOiIGWzkKR1mQaz + h33StWkLlY9K06nfr1zDIHJZYCt8+n2H2MmLQ8WLLZ/1hFzOG2nzYtlJmReLp+0oQw3PRr/fTk4+ + shGHRCjR5nUfguAxwdJ/lJXvh8OuP6kAZ0YZ33+9Ag6tb26k17XMjYJyxdxIT0lyf/fpQ83Xa7lY + hqVobrReThAQ1jPHXmg6toDBfYd5eVw3Hc1iLksBs+C44e8n9+pvLz+enF1W0NOOxrAyhJIn5Hwe + Lpo73tBMs7lP1jPYfbEy3IB+v0iX0urD46nh8+8T0opRAM915GKgzSvZC0ai5Mq+zEORgykUh85N + V4TiJ2t1wyfXvcF61svW+nL9MTp31am7b1uYZtNkJfKolCJuOyxkQ3eQB1IHLno6qi7hAvnWeKkQ + /n93vFRha0ilqrJEnuu2RXExPwhh61dI5turlaLn7aBo/CsdGwP5i0o1h+83xLQL7lldoJ6h3Djd + /M3auvQkNFBJITPwiE7BaNsWqN6DamiSsoJCEUeEgWsiWQo1bvi+vMriDEM1KC/UIEQJaz6Bqz/e + Toeh6lgOIZ8XnRE8Z7BGpsV1OxC47I8wrw9bIEoEQO6+HH4Y3cYpcmgr7mkEHhQN1vQooofz+v1E + SMob/3gF66gfLkiva4mQgnJFhKSnAjTo9WVNhHR4PcyiCOm9fO5haLQzRqS8QNTzPYuj2eh1yjvn + So8noXpuVnVBi+4gKm8Qy8jK8WiOKcbK1ZdbZ0ugL14t8UpdzC5DZ7LZLI2l81rd4FrWWR76bQW+ + W/NKY8pz7hPBZNn7GOM5WuWlSt3fUs4cCuDMrMgltos4i8kCly7PB5UMsJoS79me2+LaLX1BQ+R5 + eap1I8/9Hb0V0Hak8lvMGFMxtMDdeX43iiarrXAfd8yuhOw5Pzmb3MAmk8SF/RM3rso6sy2RdUaR + zL0/Wfd2wNknoEieNZ2vUE8zqC6VNsRG0PKcwocWJ7fvhdmHErKQ+BuKMHDOtkQIJjmC/zxAgwFS + wX07rxyfNiJuNmEOI38gW5YGY9l5pw7mWLY9PyfEr2Yu5e2XL04VQq/2zjhHvoRNdPiZltTt2CRr + Njbv5SA+0LdrBqbl1T/twHEd7hyTl7wljZieZx6znrWQRBtdE6bsomTBFA/p0l7FK76l41Uiq5AX + HLTdfy32AHyDmQIC+FAF7F+lbuRg0nrgFKqLowr5c2MaFB9mosTfwxoE7O8oEYiybX1ZqDw7tjw7 + gR0eM6/X0aEmuidHdFA6OPRMlFecsMkGaEScH9wCR4CP4upq9ZR0vlnsC4+QxXyqNcBMbla5T7IN + IgcOomN7jOSM1ZYrXqUL7XDi4q4GeXvCK0RTTkO6Xe4fB/GHseg8hpWFMbuwWLgxNclq+3tCy+UM + j5kcjPphXtumQ3doh3ymbvka8vnnocsgpn0lBeDwiRvKYrP7MtD3q/3oi2U4kXUwe5JNn0DAHHGd + Ie4sxKA924d3tcOCRWBPeNrjZcOZQbzVVEdK1P+iwbrc8WVkTMNuHuYYKlDtp+LiQEvX86NhvnDo + rrsP1CFmwyGiT4c0PA4YtndQURQpo1HO81/fM8/t4Qfnr+v5wYly1Q/Onwo/+Mn7enHHGvil9XKC + ZQQDfwyKC69Hx4G+pCmqHO78apR+hd7yCuLJcrqO4Q/ZKEtnWDMZL7J5AhIA/HuTzmN078SYhRrj + e1SiY5Zk6y1hu+Xtp7nLbZ5+G63ejRAMIxFzj4+TBdYwQcEWtgkv0AxEoi9APdve3cUZD3KMRmtE + WueZF0WIv89rkfbwAg4h/GKtSniL0hcezetVJmU8Xf5stF1+WabfyukqgV3G4P541pZlsyOpps2x + zEwLEamrlkwxca0lJM1KCclqBrMgavyrLbmB50P5cX2THZr50q0EmlTwRAVnNixbjWJTjse/bpLH + v3Mmmm8aKiP85r3JLH13Gb2uddMIypWbhp7STXNxft1QY8M1yyFXdvDyOWMIKjNGxHm8rXnI1cMq + JU0HVuzT1RvBin+7nUMH3x6PGy+AaUw5JfmskRAiTDURUvwXdLV5eoejl88a6ZgVDxjQwfqRIvEu + CCxVTNJllLJ79h40av0Vpdf1wLiIchWMiz+lFX3/66lfg+JizK9CcT2Hw+DAGGzT4hUOuxZ0Ngf6 + DQvaO9SMhSC2+F4tUxbNLd8flPB8s93ES1CxOyo5B6bXetm6ocV89xEW27Icxzgst4VrdlgKYnqf + Lmfrxuto72zyztDmgOph6c31zxHgB4axZ75EdQjPw2PT7+OpUG10UR1kFyVUB/GQTubDamPROXv7 + +ZIrgZcfLs5Glm0FvsWODPH0N3yt8idsSpWigqHyX8jkV4b5kpPdTPXmYTQF9XfDfY6SCl/3+HvK + TTtNklCr5zmgyCZKBNmkI36OopFOdklXKk1I21wkvoxut82FSjpI+BZZmQk1TKyKSqDRSlLuPC2u + aZeQc/ZJo9nPu7RHEgo0op1SXZ6eHGK/VJZhbYEhCZBiRft5h0H6dEXjftjqWg07pcTgH9+5VHHx + Hn7Xt0jQ61pShaBckSroac0OASJP2Q7BXk4CP7THIZO4a21yRDIHitM/tWB4Ga055pdlT3Cvc0Tn + dbKKsFoEnPXFdr5JuF4t4mWhYTqLKXoHYSuxkvTNJp6nFFktIpcpExQ0/Bk6U0Bxnk/Te+6DgF2E + 25RvmLFUo4lZR8soXqfokEiAgKxfPX8ovwWywF3Mm3I7AT28h71vXJ78qgpzgVoQ8B0tlW6X4CZ6 + FHloz9r96WluSnwPBeKOGfYQ3+l1TcQdTrmGuINPSUg4/c9LVjtyPhr3yog7zy3E+PfHlsecULh0 + c3BycbWMS5Frn7hh5mMZSw131jRe4aUOu/Y1m3jw9+00Wh6LQ3v6bVUvU5j31FrZzgyt1lo3oW27 + ll/DsmkHrsz7K51jFlZrIipIHh9kE7NmcFNkSsXXcFoKYWIl4BnT6YLIl90Yp4248OORgK9DzL3R + DeyGCRvbE+qQfvMmNN1w5EAQSUXhEgxNT7d399BKGK+w/KTMAH9VWtbmjzJwI6nT6/qhKKvnS1NW + wzxoKCIUABZ/L0qNxKP6moQ8FpSH0re9perR8VHcbEE2mzZh1T6aVMO3ODaBLXwXzalWdccHDZ/j + azOLpAtMxUBHzJ7ggXiSuMircQI7P0swUssUBcRMz9FnpPS6ZgExTrlWQAyfSlDy95Z1UkOONVHr + KJcQA1bqcuRYz7Ow7l+XBDNfQw91S0gz6H/ZKhLYbVaRlsS5JyDNKMuHY7rS8tGrZEKzFeRpV114 + QgKJxVTCuHvmHJthz4Rx0Ug7YVx2Uk4YF0+FkPGAupGME7qLFoto0hg2pv1iqWdMJ/cdiiHzXFqH + givn0AAqzyW9GQcXt6bo7RkE8AeKzmKhFTAdqpxSIdkJ8e8+TbLtdJosH+aTYpIoJV2WVr3/XP4r + oAg83birwcKl7NCz5DlrZQIDxN0c2M8fNpDYsiTcmu/6PYFEVBtdwDXZRQlxTTwsBuHjBAmzxgfL + NBAD7WGerpcYYcDzJOlJnf/nXSD7tyxbsH8z9+inPCNH9/okdA1bBp2B2JrmQ/zZTg4vJPlH2n/L + iet7eZItKgL0+oqFPeRtel1L3haUK/I2PRXFCc/PqgV7Wej5rOx3BGnbM8MwdMceM3laJq/ToK4d + Ap2fz0a/gb6RfhudU86/kL5v1tDft1UulsL5D/ZxyCn5ypEeIvsNM0EA6eUhEm10PUSyi5KHSDyk + eWCTZ+5ERqtg4tfD/GjiTp7VnnIJ44h8eCiux/QA2OMs+h3UholDIezf4fksxpz0RZl/GS1d/XdL + V6NqX3/f2Vfpm9F3BQt+UGqA9qXwKLkHTzOE/zFz85+saOHwnnvu4P4beBj55OcPdkfIrMsvo70J + SU5KsUzn7+Gb9W8gel3rBhKUKzcQPaUb6O3FB6cW+RLYZdO57b98zpzAsvwx/HDDQJbHjW/T+Yzc + LzzB1ipkdaOOM0/v0A6m/oy/3KRfkbusZOPxKEI0lFW8xpKiaB9aJ+hRwXbwYaKtDFl9myycw2Nq + Qsezbb9eAFcNqgkWn3lWJVi1WFF3EIKF+rQexhiFVfPWBmZjXojsKFIDlsZ0vjfHQhLEaIR3FRu+ + VS3XMy6VzyWC1Yo9ZJC/j+GkcVfcNM2Xtj4XVKwHvyUbZat4mtyiwW3OC8zlhcgkhYScDlKzyERh + elWtB1slGwN3tBJ1fEsgvLulMq/yi/sxUV/YqOS89a/e8xMgfhXPsmTsa3UVHo1OU5SRITZqcR77 + hAa4TCApbZfYfTzbHezUyYFF7OGVZbo9Yg/565qFQDnlWiFQfCp0gOtTq8SBbd/2LM+2asGHwHlt + OxwHHnOZQF/5QO5ycfpEkPUsuRURPLcgKs2TDQ8/IiVzPJqnsCQJxxpLeatmMzAeNSEcveL7GEln + o+j2FpeE9ya9SDMQGeEm3spIdA7NiO1lWWtYDVBksWGGzrdFnKSEMAZbB5aNRn0Tb77F8VLeGykI + ZdN7WAr460xy/w/Z1BrYjwBib+CZ9n610IsRlG2E+iIClugUwz35T5VEsEmqqKqlu8AJu9h3uRN1 + ITQiKJdwZ4LA+nszEowiafyr7EkDT66KcvWYPRDGNvlB0kMAtn84TvdghNojH/dC+268gA80Vf/b + l/evh6Hdti2HiTIfBNL4sXG4LV/Gefk9Ujzpdd04L7+e4klPBU7duyurHuflu7XKalZoeSYbW6Ed + unZ3cMKXOdBvCK88DBH4aQYkMNcNjIMAMvcxGx96TOT+4zU5fnt3xcJAf//R61r7T1Cu7D96KsJj + Lv6rFmfIwrBS2c98OXFAfYcxOKGvgmM+31OcNM/RGFMl6ejurqDAfIsyJQjNpCBUyHqJ5Ja9X8OQ + pgWLPrMcns4ZBoQecjuPvqbLdAAr6V65N47rECoMLNB8iqr/wYay8B+Z8N1dWuZpcIxWcX3fnWyj + 6btTXRR9d/Kh8N2lWZZg6DsV4cMoSOPs1zfM923pzZPL6nBfneuFSNGC2yj0TAH838scLKbCNmV0 + i3WGboJ+cEiijW5si+yiFNoiHtKRWMey6mqOWimkfBDwjQ+v34ya/qCMBtI0eAV0DPhaQkQyHVu4 + M203F6cVjZ7ip01g1eV06RLFMRZpLcDG9RNSLFhcbCJNWNUvRgIc5JHiVPEYXFzIQooNsZedjlA3 + IDSdzq/B84onXtOiQvy8m6LQj3QlI6TKHdEyhH5P8oVM/FW0gelaFjrgsw5HMRm0A9IRLEuIsIWg + 3Z6i+Q8Hs7PN0ORLWT92BSNde94Odzl5FJ57tjfIpO2bDWdWnPtG/l9PkgMaTulI1c+PPnkN0XkQ + CZx5sHr1L+djinaMrm2bMwmQ38xcQFISOSj7kR+qDopNINZv3zO7h3BGr2sJZ4JyRTijpwL/5dc6 + /guzcSsWzaghKAdOAILZGIRgd1cO990c6P+5c6+UEGkzlCWUmKEASx0rOGZevxha0UZXzJBdlMQM + 8VCIGfc3rJgGbFzdxzcyKfEK/mjgG1x0CFwSHXxGpoN9C+RK3nBYZmudtT1ypizcASQg8OQDxAgD + Pg9Ns82oWp852XBoLeT/668t2Sxt4NO2qKv5fhKt7xIeQJgstBOPf+4V+++MXmzSkNGrk5g7DCjN + j04LlgsQClyit13VGhpyc2yJQXv5OnjtHZv9CoKqRpoMMe+kyBHVU2KJd+sNay9H1ygdvcUmxShS + pGHYtseYgEgwxbGWCkS0jFY8HPikF898KmqbfpngP4WO+IfNA9BWPPRjyH6CGtNzhPvR3zXmp6k2 + 6acDPanyjjbBWn64spilr9bQ61pqjaBcUWvoKbH58zdXdi0hM/AqcBLuywmCuPDaPLbpCMicj+ly + EtcKswBjk8qB1DpegYZ4n9xgmF1uLp7Hm3to1sDmMwo5v3z3KXBBEVmji/x2vk1Bupwia5Q9PXv7 + 5vJoIvz+8mHN188FVUR6ACETJodUr/Pbtf309S4lti7S9eq+MRneDM1yyMTbizxkgmGoq/l348cs + 1GanCwLGPos3MQoHqC3cJ3f3aMneroGZwKOSM0L8fSKy7lfbDZzsLabcE5ZlVoKQjGcG7mSVGhtY + riFmRykr5UnU1iP28FHI4+2qqhyB2y+RQTbRrslBHZRLcvBndMzT9VQc2nSd3HFNbZregYpWNN49 + U4G0R0bHa/KtT0DTQMK8yABzQzKpW54pb8Z1vML6KPtIZ4JPV6kkOJY6wQYYLC0CfI922ivNgBKe + Ouaj35eZoc1FwRvQmhMORbPaaEd2HBZa4rmkY67jiZqSr3Hjd9QnFFoLM34+mbfp+svOZl4+ZNjj + Yh6B9xQJaU1rLXvBI8Dt6hKLLnqqfo+Hhtq9ySSv8FRWue/bx4z1zCoXjbSzymUn5axy8VRUIzk7 + BTVrliIMklL8Gh+WKPLi45YljGSWyJNOmpHougOihU2Cc+9suwZpEt0wAhpHwLhoWbS05UPfdhrc + X1JdLdi8+ndBlwlxJY4+jzFVvBzaAerQnz9aTN80pjtrPzb+rM+ohoKosH3JTOzX4THrlYms2uiy + EtlFiZOIhyR8ZFPpxP/PM+TUcaRkeAMBlNK5PG8gzOGXcZA/yUElS74GKgaSorJgnss5DLAIcWBz + y/P9wyr9jvEsWhWi9zLNaNAVYEhy+HAOUDDmIsjo/GoEJyLWN4gjOX605slqCMgNj4z48fouFSug + F8rTHj9L1gZCruMS+joW+HjiGTcawK7TGHtrL2FIkOjNPnn9vSRSezjoX9liUUTxEvRg4UEFIjFF + bDLtEQcWKSCc1AALB/QI+P4eVEwxvgNp2hjqoMaoNX0oyn2N7vTnwQFRrSuagnZ12xbcIaEzUtAI + tHbfS+aPepFqoKQ+yqXs00mkSY9Wqwik/r4ayRMKBDeZb1dJ1TfUzsm2rdDmjPX66vz15eT69ORS + W5+xLZHboc6hYDbVU6izG3EgboEYIkJWDLG7VZJAVg53e0Rk0+u6lcPdekQ2PRVBF5/e1yJiHTuw + q5XDJ74VOJYz9mEhg2rRHRWtLuLTheilQmCjf/JUoTxtKENgWBFmKWUBUeakmBfE03poc0yyFewp + XBzSjDI0OILWgLpfxjceV7Rpy1HRFVkjJ53XoTyrom7JaAjicEfqVRC6rmNatcTepvj8ElmLVUt+ + t5LNM3xVok05i4uZGqTyEjnFweHlvHNRnp29O2EiEPaIK2gI4ctDzNdo3NvwgtuHrFuhmI5ErIBT + RCtn4K7My4LbwUCJWZpJVS1XLHMDcooSfOhU4hH3IbWnvfPpsHNK/6XAnNL3D5OPY1lBaNLbcpYP + yIapdiLZLgEef3xvWT0q0NDremyXKFfZLn9KbPf6+le/lgkDOpdf5bvPLSs0Q3sMP3yZMyyZDs+0 + X8cEag1L+fnNxcXrscimzHhU0AZ4MdatJQ5JqtHX5GsqeON1tvXr+bgLdDoqCRRPKHogoxkWMaTF + kO5JnPVKPHiZk1ZwhHO8BQZ3cWiZdcAFrWxbrAlWoMVA/GU2q9UvI/eFlKkl+Fh7LTO/AplQ6cby + PAznbOkG0RIIrbgBK6vQjWOBvNiWg2R5CNYYtFVi2zysQbxHKAaNbynfNoXc4VIn6qqx3WvoJ1ng + Vs41NqklVOElPNur3maFpbV9ywkr9LNlivuqrAyWoLNtszU3uTT15duxoFgqxwM//ZfAmoohGJXh + +9o7qqW/DV5kS/0Ow0M+bldnY35Gn50cwUHcwkGclYvqBY6ndRB/TO/Fbw8dx/EaxZ7+vU9Aflc2 + pMoI9BjRjxtBwxwYn4udvoDTMimcPsFnN3DqUShIpxhvKvzDnPMTEqlg2y+qLFs0v9xEKA0rJ3Qj + I0llLbyJK1EA6nEopxMxK3Mh2r3SunkMfvUp4Y55HqUJkRNrzfvJP1rfcAUHWkmHrSyhT4BWZ3Qc + xYIVtwXM065YnR4fExKI467Z6IbQtYVlrInx6o6FH97+35ofCMkQfn6HHY5FfjwP6bR47Pt86eN1 + 2oLdc7CHe0frjlPjis89SLzU/k4QQbi96aolfrDuSEfxj1tQNcTGfrN2EOX2GR2wAp3rB4UBdoqy + OorqwCXtHJUya9vesWn1c7bxJtq+Nuqg7Grjz0j3IoxCfJsF13RdIZKtfFgggakslsB0Rzwfdb0t + 0hnHSTvQkd6D5o4wbc2rt0cstibFwcE9TdUonQ/YTD9aAGRJfuWuYJc3xTBUI2xM5odqqp4hD0Sp + 66M3/uhNjiZyZx2Oxb2THWo4xhiVmh5sSIHn5N8+FFXmObZdm9GjXvT1AwoO7+sHFV12KL3z8gpY + s76ngV7XMnkJyhWTFz0lk9flr29qFi/XCss1l53g5cRzMTtt7Lk2D4jjXLe4beVNQiasy+1t3YI1 + HPhLseMiLThPYZt9hTHgzXZVpyWxJyJPcrYYIzJ8LvNMGtVG07SC4O+twcfUTQWvDeY5h8kU8GyE + 08mDg29hi3LpB9/FpGLa6bejyy28m6QSKu1BGey5xikA14rTIXfiKw4lCavOg5/nDwIPFL83o0p/ + +LZyCCjdVUUtZwbuDakSepbDVUL8dMWXo/VECsE3GMdcnEvlyW6f0lk8jfREq58A8DlscqDn54Tw + DYLa3i9/5tArAw+Jkvj7RYs6tPh7JX04KvXZYu/8Y9Pph7BCbbQRVkQXZYQVekjM6+z85Az+9250 + k34f3ccYRQttTz5fFjYoTpD80+jsZuXXagXJflCsdFlg9LKa/CDRTUn/lhBNEd0b4y8LdQYfWwg8 + tIzNzxIh/7xcwDFNGbTdtuMHyMZzbApi1aDZvQWaQ8z7yLUmhWSXv/fAcR2u60vmaKsweNvxjxnr + FwVPbbSD4EUX5Rh4ekjMsbC+q/toadR+X6eECsFsj3heKDSmQjhq+j2ZUaBD1lKGt80E57hUArJQ + 1nMAso7rEAPk4ezwNjL+3iin+6dFOY4oRMmcUF/ap9c1C1FyyrVClPhUSPvnl/WsR+YH1TKUE8f2 + 4U9jxw55qYzuMpRA/18EzMVhdpiDuTgqz415e4DGyUbax9Zrgo2TT2mR/s/FJeX4FkMxSGUwGv9m + lUljEovnUoj508BcHgwsmYQBnlsZ3d6iD+pBi6zuXWejpCBMMSI5es/B2rbFdkHH7fScVVBpkjU6 + 3tK9UGlsEB2dVn6s5rCLcitS1gC0W2OvvaCWIjGNZotkuxj1G6Trml55G3beGy3Yd3/UUOs/VGDz + YNDU+tblIXr7ATB6CN5gN/CnAbGsHU9WgmQh61khWLXRrQQpuyhVghQPBZRPJqF87uYYBYslOeG1 + SdFw++zyw8XZiFkmj7A+MtrffAvUDCTJ0Wa9kNeg7i+q7oyl74SR7k4JeazqawfDfRlcFSQjRnGG + 9UzoTd3vT+0H1VlFZ2uptCZacDXLa3bERGDFTqtElpeGOoCwPLsqdxKU0WNm9hJlqYmuICs6KImx + 9EyU9cZdv8ZktHj7BVqnIi+KJ06+Pf9cQ2SoWuVEBxy2MBSIx4FfFjNgFqZSEui8zfWtdCJIGm7R + dQrX1ywefY1huufxROEQKh47Fmk2cLbPrw7o1DepvmRZH6Uo7d8PdGbbjkfXeSNzq1WK2s+69uPF + It3Pd2yXWFxxy+3xkfKABSpcAm3GPaE/RRvtgAnRRTligh7S5bhKb0M6bm8maAKX56v02+gyug0N + fJUfpjD0RTVk0uy2N8n/bJNNUnTqqFzJqh+ohwBnMrdMfzRP7pAV778Kaq/8FPP1jy1vOgSoh216 + xDArRMajm3Uyu9vPnyFPAmV6fLqyfKZvCKPXtQxhgnLFEEZPaff/7fJdPcEucColT/yXk8BmsPzj + wLY4LnqXISxdA/26IazMmSue77Cv5/vnG8NU+prYGeORun3xWrjB4MFRNF/dR5Mkw6i61cN8EXHk + jylh/7yCl+bp8k5BlWVAfp3ewNmASW1wRQuP+SsNbK1GUK1XwD++xFQAE07gwygarWEi8X1uFync + /8ab6zd5kpsPDO/JWMKGqj7GjSLKHtSX0GG5crpNn7iVQTJJFpJrsLjZ5nuZLFyzvCxPslaVa6pa + Qb5+ih69rl0ryK+l6NHTzlpBrFor6Dko0UHojJ3QY2ifQcZ9dSEc3/F/0YbnfPsq+V7PRCZfb0Ow + kue2Vpi0bN/x3T1z54qs3wtNN6zlzQ3F+qX7fyLHFX+vpTJjqEdrQUqbgWLgDUH18mL8+eS6NoHG + ucJszJ1HMuMFVisH7uNrNx5drBLxw14dUWQUXAtrEEcSvq/TdTFqAihdfL62lLiS0canTLt4gkEW + r8r9VBN7PsyWbMVvG3jfM6/l12NAdbTeoMqXGbhTC5WkTMKBtsiwr96fIyKLUmRVyWOMv0enzSZe + 8pzu2jFtS1LBOS70EMt14I1a5ddhqXVhxQ0SynJwYtIAsTB7UUKeFn+D33BnicR8mKcI/vOAwsdP + UlA8N2/9I2vPuRT/evLetB19RYBe17pPBOXKfUJP6T558+tHDA6v1YlmlQInNqgCpg+DCFjoSqSN + dkBZcbe82S5Z+Kd2jfeC2FVuMdgr2ykJ7CUAM0RII1O5wRdGlQGGKyf3u7uWLFvHw1aCY7N3uAy2 + 6REuw7uohsvgQxFL+OubMCyg0CqccPpDtXSdxQ9e69tlpWfk9Hrb5W83/40rMW1/xKk5ObWYBV81 + pS7hd981yWTEfy98tvj98rN1xah4Aj25fG29to4tc8rR6hzm8T/gvz1H/dsyHVP+G4tr8X+7gWkF + diBq+P3YYN+8PbnIvkbTbdqUKXJY66YhhwFllcbf0VHMzSUzHvndgPvYjaj6dNQjdVDzqDZmuses + X4qYaKN9TEUX5WNKD4nX3zvHAqsDsW3QY/TOMfJ/jvDvBv8Px3INmQjntQX03JpXKF/mUlrKC6Kr + X3VXCEkWLlwuNRSJ6FpJ/cCrUOm3X4FAMZa/QkjvU36KuEIYbHxB+nx3RzkMvY89vPqFttTUkAQh + D5UjrKdm4Ogr4fS6pvWUU65ZT/EpHaT/fHdRqwnneG5QtZ4+dwLE7Ro7AfNdVoEnmycrNOkLvW4V + r9PvCelEcMpgdK+qJflQLaKaf5Qq89t6AVpYhJZEUsu42D0qIlk24mMpcy180Lc6BlltIBWbbWC1 + GgCY7YaBU5XSxIc2AcIwzwqDloSl0MLsvir+iBpeXHbyocJY0DyKQ/ZNuwygc35ZG7LxSUWkT7hw + hlV4x02TkZdSpu96rGV6VepcFEHjxl7paUoJMu3y8zVT6Njj0WX83V3x6eB4GfPbSTGP6P1lrpS7 + IOQbYn74mWyZ2n4nvD+1lmgxYjUFMr2FkaBEoL9hMiclQg7qu0GH3R9Qno2fD3y9eoY6+5WM0hXF + M0GT0meU9Lpm8UxOuVY8E58KQLHT3+rWSg68XC6e+dx2bdMNx/AnxxcyyvV2JSuQAo+UBQ3JniFw + wqYPdcvldB5t7tfJcjJN+QkUIQhl2Btme39gx9OXZAlzMUZoxLYZGhfRLm/Sr4jOtb5PZ+kqA35D + BAxcHVWm03R5rXfQUoLiBQ3K0TKlTJ1i3RV9vmCI+eYSS8va7DS2OJ5fCvqhD/jxyTTyZPE4v9/O + rphj6p8sel3rZAnKlZNFT4Uf4NfXtZNl2o5TPlney+e+7TDbGsMPP/QrIsj1BBNT0+xhjsnh8H2Y + 5p9fMPWMcSGsZPHXGGQ3GPUkwz/PpBItRIvZGgZaFy0OzH8+xKXQfKh7f38jqF3gu36bDBP4NjD/ + 4XjA0Cv2Spne4UVp7ifwLhBbmLUib4KAEkEHACcuOMAaDgl2ItBwgGM7IHs8i6/esKORQHTlWj1s + bkkc/ziB/9gTYFivimzq/HiazhM4EYtT48Pn/61Sry24E/AuDITRewWSTjJ7mE947OMCWZscn64b + 1rYsl9ywXQ2fWA7oj87+HjBdc5AyO8NDfVi+VxxVH8JNk42MAN/cn63oiZODxugOCIjk+qqsodev + rKGnX9bQayxr6Al3xvUvdYHT5kUba2UNg4CZY99kph0IgfPq8hc2wUiZ0S8kX8A8/AYMbjN6xv+G + 6lc0ut8uIolEKAURziSlZZqrgEpY4kxTFrOeiGZrBL6QSBa36XY5k+zy+mqUI5BnWNwqR1nMjo+k + 5PulSfLtfb0yy7bhimrDda1KWSUkV89vtQOABhiENdBwnnVajTYu44f7dqvTHd3uYSN4CZ+kuIrr + WEY59cvifhGuBOubudUbuqVchZgY5eMXWnkJRtc2WxE1QQKxwtCvRg5U0xxK5JywfU7cwPVBuDBg + z1SWjO/Xo5KNQX5JDlVTsUEIvCMBBEOwnfTlhQUrXdh0EvjRMPDgFaowhoaYd86w25dJx+6nrMYH + qCZN7HpwVUcRFolGKmx8Z4x9axkZ2+PGlPI2pLpoye/6YRGYm1keUn1ptYnxPc4nrvOUKJvVErZK + 38iLziQgrSz1PtLSoCgXw+qqTiUMmS6QF6BGx1yu2E2+MXvoYKqPi1bBPJtyiQ8ax4BIZS7VRPnr + e9iZ+ho/va4l2gjKFdGGnpJo8+HdZU20sRxWQSqzXj4HnsE8d2wjVJlwOlznTDsaWa45+nI2Olun + Wbq6h+ejRTKFjQCK4LwJCGv07MPJ5dHoGcF1TSMeszDdxiM+ouUWS+zyM3jELw10l0aLRTRP4E1o + 6eT3DQkvH+5XdeGlMIQKWL/fptUHoeO7bs3dUIi8x0SqTbLZivg5nkDwBZZ5Uw1Eh+Vq6SQMQHdh + VRxuzoG/gaDXwwnRirQdmiGcyCowfXFCgEHfJHPZS5ms1QZiLkdufOhe3aIQUIq/K/fKy2EqQiAI + pF/jNdCQtTdhT2znG15lpVAuM4LjBfIzSMdvLWDR3F9SkCAKe1AOB3bMjm1k4L5TdkvXDwwxEZx9 + x3dRw51UnE3QxAgyoNUl0XYd4yLKW7Rh+Ye6mnZkw+wA89zRmmoBl45CXxJ0dxSnVM8WodOw3eZi + maJKltbx1hvREDF8IcV4nJwGp2HPnG/VRi/GI++iEOOhHuohFxWpYCRS4JkHVOxVIWmemYPbucfM + 7olth030oe14BxVkO3wmc90fpgrMupgZW58KRQyT+zwvlLFXB2dkhmFQr2D8ojN9XU4kk9uJWW8x + GK1PzFDeSHdDqU5KO0o+raYjq1mF2/aOx+3OMEwLbn6jGomskqO2y2W0iGfl3jDuDWSVJwkX+HgG + 3uGSNB8JLnDXxaSd6+tZwkHm+D3EZXpd00HGKdccZPiUxOXPV9d23UPmBWbNQ8Yc07aZOYafDpMS + M1WKxV2jki0+X51cXh4VUjKKktP5VUPpSDjutxiqSnLv53Vm1wVfTrXsnQa9v9W05lu+yR7NO138 + irYifxXo36J9SwzO+LTkjidmSu9SJv1QOVFVbkAkjJTmF+dbtJgm2YQGRPqHgBLIlPN4lk6/cOBf + dGptMx5qXVyZZjb+7PzqqH3FDL57lAMqCMxh0iAp3rA4y+0ICdpiKezZkFsc+tDqyG0cEmNpgGqx + /DxgEzopumVVTdek2b6KstHdNlo+zCcF2078HTjS8k75LvvZT4YQHD0VHGy9tfrGBlMTbZGJOiiL + TPxZHg6MpS7jyQavTAE2UJSdGt8o0kYJyvHFje5Qqm7RVdzzpDiMrx3vjNtlo6kqGUXZbFR57oAe + KBONPgz2RlNXB4gge5HvPAYoM5H6VMy17T8DmkqovrBycM6BVkZ0j2oXPeEihrP8ihR1tcyl47Sv + ATigdITmMzoERPGeHRxuAdZf0sPtycL2sN9XSY7tCKnWMn19/za9rinVcso1qRafklT764dzrybU + OsyuCrWTwHNh3saB5/Oriqd/k0WMogVv0s093Osq9DbiLmhpzIMX4mg9f+DmAHTHcZPm8ejXReyt + ZGJxhr86nB/j2d1wQaFCkC49kTaMj1Tbi0XMKE75Klkw+CfSKY1AmCImKuOrUiuOC9V8RHuFh+XF + FgPPQnyTqlB91lZkw/PbPOp+aHm+VyuUWh74Wq1Dk2fdNl2rKv6Pi2Zd5vLw1bLgDp8NO4m72qQF + p+RGNj3WIrUHHgtCq+qUbjGjVkq+yWUvW6S9NgVBzo7xS/xQjZovzErz5huLAh6/Xl2z0XaFWZLR + Im/1oLjJWFT7zJQ3e6q8iBxxZbmFIyh6nW5lTnuhKCM3ayCEmdjK+V4c4y5dZOVIOb6Tx7xVNM9S + enidLO3V5Go1s1cGHlqlS3jMJauHm+sS7fUPd2SBu1wK7Vwj2MWTjoJ8O2L5yUPebzfom9OZLbzb + 0wR3Ho/QTwQjgSm+keUH9TUhlwac56rtX4KMYWCIvBgxQ24WR9N40yvM0HRINoqyaYqKWMz3T7+P + OsAVLim4AcVftzjsW22+LfRcJgLnChloezhCHrfkY2sFRp0ctiad7/DkN9s3G878TgW0Wzx0TL9x + k/aPXhwEZZdfX/WPbLjzdAaFmL1cpM4xe/cK2PcUUr3lvgN9tWftHWqjrW2LLsrqNj3UAPj89ePp + BO6Gcs58iTDXtQOhax9oU9IH2tzPQcT1K1LwKqa2QzTOfyOJ/7gkdo+SXS7em76rr/XQ61paj6Bc + 0XroqUh2ufxYK9JnMVZBK2QvJxbzA88cWxYWZJFpZCq/Ac3JlndNZyrCawtzqG4wIWKjMiU+ToiB + FmOGPkYbUFAEXNZqWa/sl1MsSqS5aTuLl9l2dM4Pe3RUCXCx26z9oRs4zPVq2S8D9laAnwphyhxm + VXUXvqt5xkV7LDDz3RbVysfw2npKsExXbaEXtMcWw9KarJZRowPEWomLRgzXip4ybhi4Mdj+MXAX + K0As2/YHRJJtFR2Z79U1hEMhaiV1hAzlYmW+H9thHFqqGpquaVVotFr4DxMI9wJx784fcSm8sPs8 + guKKewA2Sq9q4VKecoquBuoEJL01FikHxr7Ujb6BxbJLIZ/9ZtkQx1zdc3WOoK327VdFMbcFDgHu + KyYjXv7+UFy1PaXwfcCCuzxDCoqe+b59zPx+UNmykTZwjOykjBwjnuZBNTFnc9zNypVYVDZ43Tc4 + 2jV/ET7//sCD6dvfQrwky8NoJDalcmoiGilgrhL7D+BQNuaT8/PdBOCetZRP6yiDwxgnJ+pacL1G + Giz1z9GAcSLDunEGccNwHTtQMKzR/GHDcwf3cyMcwiqY54RMLldKK3VIMLnHwbzaqI35vxBekxK5 + Tt9NPr0DFp1uV3jnztJlus7Go48nZzh18OMS+DO0EYLQ3gv3o8fVKREEptiQqbBq7LVwLrOoqiQO + aj99n8L1316ZrEeCPr2uB31BlKvQF/wp6SwfP5zUdBbmYPxwBfoCmIrr+GM0qtnCPgDf/ez50SiL + 5l/xngcudP8tktn1HxdRXQHpmxDPgsCxQ7sql8Nkphu0usbFWAmqXq2RCY+ySiXRblwqQV7sVQnv + uMqFxLMiPFDolaP/i2i5kpjxkQYtM5QXsKO7Bz8uxQfBO8v0a0oh72LGs4clnBU0c8ARodUwcEFV + 1LnlWMjoQtMV/CmlJpt9ryozdGw33/OHkmOh7VH1nYc1d+qWvduHkxcCT3HtSrQeo1DTXgZjrmTY + Jr/b5PaG/aO/wXvaY4V4usdJ0lGZhpSCB0wkB1JU/1Z960GTKbl4KMupuYi62cdoK5voFlMTHZRq + qdEz4sh5JZaKXbbtD6Nf1wtWEXZVN1hAzffcR68lI8Vgy6G8FUlvu17sH+L0FOKjh5R7e4YL2UyU + 9FYxaNEBpWB8U4aUOG6fQGl8XTekBCnXQ0rgqcgr/PiRFx6rxJS4rBYoHbqWH1rj0LVDCdJ1VcSY + X8DOQ2gEdXkKXRFLtMJHI2YeyJ3fRCTIzXY2ggthfRfnoIQflktm1nMDcUdnZY4izRclwJwOWC/0 + vvluzbpJdVrY2Js0ddIo5OBdrdVLLuBMUH2OlsVchJIpEvSUNimnmSIX6Ue3sJc4PGfJ+VoOxqgI + ZKU4ErtOOM9s4/ORXy9pvqrlybCtfkMXm6RZ4DM9MzB30SuaZCPpVerYIjwoY5ouNxFicNyNTpYr + jNeAvRbSDybDN96lU6YQj0SYOa/Uk4c8IFRnOn8QVxDe6eKDbqLplxvYsK9yP0sBDRzbNY2RLg2D + n8E8RMS1DTG30njRtSadUlwTI96T8G58WDOkus03VOcIuOBqs13sEfPA9wG+zc3ryWaLXszKzuk5 + NmkMaDqMWgR8YfzhswbMq1neaop0kPB33cxGK7A9vwGftv9ymND/p+AFFRx/9/r9LBAnIEWwU02k + xurpGrcrz42EcZP9p/dq+G6g2dF9/L1/P1ImYip5zO4TZouvayeP2Q1htviUZKLLq0u7IXesJhJN + MGfMsW3MHXMDR6RTXJdhm8b1Kj6/Oi9+9Sa/uqNsefWxkNPChaDL9cquyUC8xej7CNrAl03K7Yqh + np7rtN+gcIHaoVfHe4onOUZPPvAWuEPLCVq8veUO8mBSga9e6mM8+ppEAhWIQshKcoUd7uzE2Hee + DVzeQnIXM0SPSjvZPdg+irbp2VTjYHFQ0Z/ApjuxtFL6XOzQeLuAs9LOOei0DXvCW9q5k3dpX8O4 + /5hFTueuPS8YWpxB6zyCdBFj2liiCb/4OB11eA59S2WPw647Nr1+yePURjt3XHRRTh2nh8RG13e3 + giW+PbtEvM887U5VX4GZuLpPQewu2krgydvzN6MraG8gEQ5VAHont5j0lzK7q0CElGuWg5Ih8h7C + lOHYDhdlfdMJldxIqCj9BuhbjiWkGBRShSczS+6W0ZwnKEfZFItt97Q3WxRZSan8Ez7iXCHoKuLV + YZbcn2gbcJlrWiL4uRjBAvsjx67iE0GHqJ8zdiTdTabbECWTLXDMElVbhlJq9dY+Qy4TwFZ8VmYJ + Ch+9nMdmSG6Cyr7UNMBZDRupr1z/A4s5q0mzAjc/QljB87vCwdskK41bwyR1qbSmh0Z9IFU+rEOy + i3d1wCcLt/shnXQ5EvbuQqM2zkDDf7x4IHlt2qKkDAt61HWl1zVLynDKtZIy+FTAVfz6pl6Q2/dY + raSMFzimbY69wLUdYYT9XMgBLpirxLx+3o4rOcMCjmJ72wTDVirk21T/xS1bP3P3rmfDkOoBpJvO + 0TWqGLbveDqdKA2j0AcMu9BL2czKnIp3Oo+0Be0ONA7jQ2tyddPEvuJy6zrBxDKeUCk4C9oSccNX + /K4tOz7B5LZv98kccYTjXKdOOHBwnOMDA6+PeAxWAcA1L4yHnXJE1szAzZTX8Gb2YEn5ToVCebIf + m1xLCOlA19rPqOg9aPo5nprqCnccuB9LvOMKskOKFpOHZ88B6lLp9KpbrqCxX9yR70rTVdADAZ1e + 1zVdBXUEdHpKF8nfLq+9sjuPCrraYYPxyvIdFo7hZ8BMgYJOxRujHGMjA3kLJ+LZSpQNkSDkf1tl + Xt1ZtwcKeYgDqac5qJEok63IbHgD2kVyVLEXWa1Ouadb0edUzhXfS7OGL24C6cQ6HNxYz40wm1TV + 21RpXq/Ktb+XqLTOc3chXOvbNR2e2Zaba1dZvJ2l9w+r+2gufLSv4LWHvJ4vd3QrSCz4V5rfQtjH + DA3sFBT7alTJ+//bJmIrg2/M3OoWOgNAKjFXVhsrAsL0p2ObIkJCzlG6zaSvWldVHSJP1yYetnuF + d9M0xKmoquOSVLsfZE9wuOZmlI+tvqXvrXxgOVonb108Vf32mCnwp9RH/NiUPpmH53uiugYsq76S + Qq9rVtfglGvVNfAp3S2nZ6e1upe257jV6hrPLd9mLBjDD1/mvL57WKXkUwYW8+nqjawVtVgD/Xqt + qLI0VblK/oCs3lDFETzTlSWe+4qcA1XlkRsqTzMxvWNm9cwyoTbaSSaii3KOCT0UoUQfTybyO2R0 + 3ed3n5RrQBaqqiSQKMo8fyRwyEQM/1CTFK0nMhn9BsMI0Bhfi6gbYwlcFC8KadOzeBodgqyk7fbp + AStm5hU14u/8JuAUDo6ps+H6ajK0Yj8FMR9J8q8hBG2UtC8u8NsWsGD7ZDHQNUWXb3G195+j/WIT + +2GmDqu3DVdny/bJWn7VhVGhPZNa1Do5TCDdUfY7dmw6/bCxRRtdd5TsouSOEg+rsAsCv1iymbLV + K1ku4wYR/MNsYTNjwf+LWHyORblqKM1W+DgK0SCGoagQoSy8pLrLey+EDxu0flXsUaR3z3tnCFNH + TqMJxrAy5wec/r3IP/UgJHmeQlHRl1lM37xAr2tW9OWUaxV98SmJgG8v3zZU9GW1tKaJFZh+wMZW + wBSmMvaZZhgFjIUdipUnMVYDZMMYjto6wcoM09HbXKfDeMyKSokNFIjA2/UKLdlN1a5EwnuTequQ + 6N6ubtgKNxb8Awtepqoz6uvtKrIk+sPb1V1D4TVhc8yfNYqFgV2GNZDiZaF0Sdm5GLfjI7C24BgL + VOKQVSNwmryWpThh5rUhOCiKxqMt32r96Mtn4L7Nax0HvD4ZAn/TCfwaZQiLJTR+PoBch7+bb6fw + 3aM5MJtNC7dthzjzOOc+2Endj1Ib+NUh5UBx1zUMIN4fumoPgl1RVkN4AgNT1HligdenzhO+rlnn + iVOu1XnCpyofo6ZkW5bv1uo8BSZz7XHAQln54kTEp1pN8aljuacTdNmiyS6azZJiXHsWg4A0U1Gu + 1mSeLL+IuGvc/+I1vLim9zAdIqG4Ev+Or4FidZfmIfKgXM0R3S/5nQAY4W0CeKTgYOSa0XpDnmOZ + BuLWuGw1krhsEwjbUl1D3/VCqwbJGXXNVVviR3utpWInius2FBaUAbhN3slgF3Xjj7/AmOngKj7s + W5YhPr14cFvnS8voqR153izhHhK2bohdgq9rbjDdm+QPFTAumSlTBibPdI6Z28/ARG20DUyii7KB + iR6KGMTLiwnubDgZ/BsxDbj46cYquZt8LtmX7lYJ8zBdE45gKNI1yQIDxEaC2ADp1J5FSK7RZhNN + 7xcigrnQxyaPd9vPxvInwczrgxH4ZwTlG0lfk0/SYNuePtiMtn8PrZzRDsmctOsc7jFoyXBUSQ0W + nvrHZk+GQ220GY7oosxw6GHV3vTAq4hLc1NL+cCmmmXFjtDADdo0lWvrWYlQl0c89qHc42qWxo/A + UbHtfmAdm6xfbDu10Y5tF12UY9vpoQaGawXNjkuwSPfyt1/fwlr6hm17zHHJEWRafiBNVkikJVD8 + 5mE0Rbc9B+UhSDfm5c5v7A0mfX8YgRp9l/lWQ1x07zj2vjB/j2zp71seZD8MKrlpKSDo9ZUV9Mjv + p9e19ElBuaJP0lPSJ6+v31Utdiz0PatssXNePvd9OwjM/4+9d+tuG1fWRZ/1L/R0ZjwiOQR4j58c + 57o6SfvY6Z6r1x5z7EFLjK0VSdTRJYn7158qFAASvAmU6MTdc649dyehiAKIS6GuX43CEGvztTtt + b9ZAv+q07c0Q9pgcto4XYWFItaDkhf/1vcMjexMsvW4XKkyUy6HC4ikt6B/nl2ElVNgve+HD52Me + OoHrjnjIXIT2xgWFPmCbwmmZYGzqn7PVKl0Pn9z8z7vLk3pYcrngySo8DHPqoggAFcPCx26l0EbV + odiOkG6GCju8IVTY6C1Xyusx8Es94rm+BO5QdG4Wsyz92PP2dDu4lPFyw66TPsAV1vG7cCgffcGI + ffmFlbvlCDCnR4nD77m+NM/KyyuvWnPwOL0gJoVL3d/TWaFo9WGQSlEog4g47wCMR69bBhEJypUg + InxK7OvV1ZuoEkQUoQu8FEQUMu4yfwTcK1Ds6/Iu26zuQHr4mswzBNcafpkthe0LTU6bDexYdPfJ + ux0mQAK8Ch+EcD/MyKZlAJrAGZht4GPSJRxwQq3BZMxsvkGkuMl8J9YuXd9m9HgkLTX5KIhLvlrf + RrXxsChnmCjcZrQq5miXc7IbvrTBIwR3ei3BvECQHn0zmEsQxEE7lXyamqnAt1U+TvmSIi8IghBY + 4+NcxwHuTR2oFbmUOBGQ0iLaFD/8cKw/nCLRpGY6fwjV/blbUUCBufPZqpfRgapCykR5Ex5B0aUh + yqOy7lZW8Vh3WH9VAwMZwrz3xHc0sR1fNE/mqh41jj4M1+ryivLs9pB1jFjMG9nnt8tOSgnu9JQu + s812Je0B8+xbrrYMv6Wz27utWtPt/RqkzkIsET1PBFDvk8sP714OwzhgoeudDA6lM8ChkF3BdWUZ + 1jCHpzfdKiDfHXRo1N7q0a3tejU2hj2mkPZssMPC/35cVjPZQilXQKxGcTcc6ksPeZGJ1O2zwykb + XvV8D/ZCm3hothxr8+JmBS8WgoD77BGYESFLC0T6PUWyWllRrFgRf+2eOm43TiTb2DIi1YXBh+RD + CbSxShBkgviQcMTSVwtdTmw9+Kiymp1XtpehPCeDru+LftEwjTlcg/7U1KBOP6uLPT429PgHAhEX + eE2XUONCs0CqvRZLdNhs9KBaRySDto2yh5rFx3XTdrBjRx1s7zVzTlk3L4NsY3uwVRfGwZYPpXyx + Wkr5AoE+ZssB/TG8hucD/FGEIvsskMg45J8U16bMFi9k+eHtBLJcJwCW4+FrIuYYtVEMBmVzqw+V + O+JI6JSHkgyO9jLoRjFJynKN17alKV3GHL/QsAuSpHXbh1eE+oD2sieyT3fanwjepXz5cWnlMSEi + nl85Dre32tHrVlY7SblktaOnspzFb5dBGSWaxS5CZxXdSO7zp8znPGAjhoZrp7YGn4LYEwVxtVDx + 8fLiZKQTjmUcmYgS+LhbUWCvqK92eYHGn2Q4vUcg/9x4QHHGG4H0C7LdnMzOuj/t0YbfJ1guWysb + bzYrtkJ0sjMY0Vaani6mEx6tCuXdZPGN3aom5934INMd4rmN9Stcz42duBIDnu8kdDEj+K0MB2rq + hYXQT2MvvuuDZlmHyJhNCunneWaxYRGMmdsQlNhAWZ67sWKyswUSHQ2n2eRLGfcaOV5LCT7dQ7kG + Xz/7R+2bh9kvZjz7Np1nIJYY+UADcaS0lxGk3oGckyL/ovkbisruck7zybS+xI9Msxf7IOfx9fvG + djB95ez7zKFKwyIZ8kAigS+zt0zwGGNoWjPt2kcfqJtePu9qx/dDYq8J+MhoN7gdyEakAVW7Ay/3 + UuUklOh+loy1dWrUfcxVnJnrvERpvVugmWpkG2mmOzFCzdRTumKN7JlSvnExoGyzzBBvVdfplF7P + csyZ7hKDzlxPxr66gdjLZfodeYkXGMdfw/Q3lg61L4XmEOKD+Mhzm+qB9uGQnCoJrmc3BALRBmbZ + swpyJAtxjWOYLr/CZbSyxf0I/LzvPmoM7jN9tKO0+KRV4SLIER1czfSRpUrHrk6VZm/8rtGNso11 + qrTswkyVpofS7pCslEGxDpeh5tnwGpuIIMcX7JwxGbHKPS5tE53xtR9NCbG8NeWpEGT1b/yYk9DV + YfAftIH9RygPEHbjU8ft5hwUTaxdg9SB6RgUz+jMGJZr+NocarZ40dbGH5k3se5K2Nj9oEcb+/Gh + YB2AUB4o7kxdDNwPxHHSQVcWroM238EPvsD7i3je46VkcpbgeFnWDd/f6LhAPXv28LPC/jowsN7D + CpGmZ2zsrrGy3bqLOIUM/DlbTob4/Ph1syfZHgsZhboi+PwAOuqO8PUdwd8wDkJKxxgS1cr6ptDd + mJeFekzi1jb5HNfcHPBhs+2sFmF1sO/FT0BygHSFh4ipmBDXFVLY5A4+NBFehnSRTdN5eSarEbs9 + 3Tq8SqMw+B9/ie3zRIet4+18s9jrsj5hH97NNlvMugZZeHtc0U6HUUDY9fmb8x6yb5xQgvLrrdRZ + Mf3xAjyJCbUs89Prd+9e9pKVdHgnPQcZHXtlYl6ysNWgpQO/9ujbxzaTMw5U6V8WM0yY61L6l5rY + lv6VHRilf+kZ8ebJ/USl/N0jptRaJK8V4JAHzc8nTCSPM08K7seZ4TmPScJQLxUIwax0PYEeD8My + rBisBcaL5jHVk2y3QtdITZeHcaFDvfB9AI8F1a9FzIyZuOfum+awC/bYYT3sGbdf/va8NMMDcxBf + oh3McOUPFt6c2KF7Wm+iiaxec5iYylEuFndjujjQDIJl2v36o5SuSxgY6pUNkb3I/t+3fGyceegS + doVRc3Y5HRqvZN/NtPnj9Y3eRGKVEuR4sX1GI71uiyuMlKu4wvBUpQS9qIDKuQFGyJopQWM3iJzY + HYFW5LNAg8oJ86OBeF5AOJc+Y+5fi0XxT6NrZcSnC21zNrwDaW2e3SLoN0IyILzZfJYshy8yjO6W + uT03VeC33I5dAih2GsCITIDirrmUPw7ouOzhMWIC3MBrjgngPHK5wIo7elVKXroguBaVKvPXEFRo + BvO2ZwUHuL1y+GWf9+jLsqXSiBn/l3UrHRTF6oIIJDg3LKT65NFwjoUFNJ4g/ASa5yarUZ7qYCHi + SNZucoK4S+0mfN2ydpOgXKndhE91yQ0TsQ02WcAZr2RkP/V8F8Y88nw/jCX/+l2h06sjc031Nk6r + 1UzXMEwMI4Ffki3FO+GjWfoVZWFdjQFnyqggsDnNK3ZUcdU0rL3Jw4KogffEIcZwhNUisqVojib0 + ysgPyjXpjRxxFvqY010fVkTIIfDVGHaTLc2cbMdvClaKAi92w3KskphPLFtRCO0YGXUXqLtiJxzW + sQEpU03M4GP6HYbKFFMymaAMf0UuUYYYlmuHoUmpKlrwrLiSInQhB8tDRDYV1iReK+GqnJkxD027 + SQ9DbCspoJyJUpcbGIx+Dw6okl6orMdqw0JR10Mjuvl+7Peg6Dgh8/Na69DpAjjD5AALUV+xRmLZ + ydJkt2Uq1FsiVMTGLQ4y397wj71YOQ0V54WgT40PLuF+ZFLU3uIfD1IypIe68weFb//sOiH6io3J + ZVC4LRqsTU01V1Ffq6MwGmY7ZOubOzyWVlu8UxTXw0eHRxKlofWysp4nzsknr/LSZtP7+WyJ+CKw + ZdyxetyiotaJSIi2nFPNiGB3f78Sj2JVkSzsoN3R67YVycKqdkdPSTy6fPXfeJpM9Y4EwUpBMuaz + OBrBn0EUyNLRl+kalGe6/TRyXvnqHA1b4KMVAZAxZ39SocTlbnGTrs/q0k02cNHd3qYbKWFdpt8x + sBcb4V/jFW6UIfyw2aarzXC3gjs2TRZ0q2bFUsE399jCdVYj8SdbjRQVV+OJE8mySLYqfLL+UlM8 + C5vEM8ZDB2TzSlx5X6phYTYNyDn8tILyYqCLOyY6BYx29O7Nu1FRc1SjHuxZbvFrablJmqldcmE4 + +RN0DFpwMcrpDJZsdrPDl3/iDhiIc5EXRIvCgZwrcfobptnqDu1MpAUhgVwIBUpd72MCt6vd0pYC + QRcKjxy/8+ioZmLrgUM45b9cOW4HGDJ63YqtS8oltk5Pia3/cv7KNNpRnUmMwC1qve7zsc9Y4LER + lvFW6IkaG0sADEtUwLS2VsCL3RROi6iQO7nDBJ9ETDocZpUOkn1NdS0XBVaxmr3kARt+ThYzDCkW + zPaXJK0p3tC5XuUD2/B+HcNcg9qoJwY+SiByYoKeCZRqqNWgRjQgkkFPLHbisk59BDhew/KtVIUI + OBg36VAJWNo9mODiVRTRV79cVILBjZW/uJ0xjszzcjJRPPRNtkREumS+yYY4sO3s8ww6ru/hl1e/ + Xl6X+xjgBlbsl4VeIBQnGYRYl7DTTdR8LEF67R34pLKIqcnm9/ZmR627xh5l91rD6nWJlmiZYOAm + FMgqXCyZxSVXqyh7NAGwB5/V7hK7OwpL3ZhjGaktNEP30G33tXfCODewAhdvCbM4yLr7ENEVpHoX + FqR3g0Of4C2iqAkjF3gDg+02fo/z3CE3z3qh2Y/ay10yMB07GiAUFr6wB3p9BAcej+qidG/m0aHL + D1tr7EzNbuzJKxs4lPJ9ecWcDoVo6HUrAU9SLgl49JQEvHfXVxWvrO8GJa9s9Pxp6OEhHIUecyNZ + Rfzd8m52o4uPbLbJbp2hoQVhfNaoIG7pRhVy2bvN+gGLapUEwwb8xLARRTbkDudlFNljZCcV318a + 2WgIcuw6/b5aoxNRBEnsNrDYWJR0JscMcpUxl4ZUTMnIsMfE1GdCPi59/MUAF1UJPQigR0BhQVTk + MQWgsAOx9XoGyAt5cXjHweJ5QWjAkWxSnMhn27t1Ci2Wx6Pu9QJi8TeD7gPNmXDQ3wOP7YCDLl63 + w0EnymUcdPFU4qC/fVXFQffwA0s46CyAneuNGCizCsDiAv0AX+ADt3nVUDxe6swrbnPWcIZlYbkE + Jmujilxd39Voo4vZBKjvbnbzlJwPolPT0clATLMLMHlUgOofJKafSiRpqw+oZ2SjVLiXyYINn7w8 + v357krsjZvB7+vlzKoJOr+cz5kvtsDCNY7idswnZ41SXL2YLppRHo3CVTk7M2xOOrPSy3uymw2U6 + +TIUCBIYHTbe3CWrdKo9rekA95lGdQAlRZbrOA5EKZSwEAXZepPegmJxSNh86FBUO0YUdtb4jodh + Ohpr8YdlMeWtCULAOJFdSUSGOlc86HZfEFMet8ao0Hux7+btDvWA4n4aGVXraAbqOnBl0A7jXocq + CuJ1y6AdQbkStINP6Tr47cUlr1RRCOKoUkUBWGLEvZHvR4EnXVK/6SIrOi/LNGFiUg0G5ehqLDQV + +p9FbrQZDXFL4OsiqgektCEwQ5DBdoL7FWjs8KhhZFyyEnnRWI0Fm4o07Gx+n7+KPGuVbTaIpb0R + iNA1qpq4hn67WfFDjaIX+bXDY7gsy7fOrmWeGirbmnhJxs1W6KJSYnGaFua2FBiEqTRNiORRDGsb + OP8a/C2WdICbWsfiBD5J9z4T/PrwykAWgiLMcFHqrSxHO1fYeyvk2WgDsrOYXwRTDHJJitDix2gG + ESHlWO1aO6b72Iw3ZJ+73+Bo0rGIZTiWbF+QuoHjUaTCe+Z1COSk1+0iFYhyOVJBPKU74fzTm2qg + guPzcqDCUxZ5MQ9GLApjFiuLR0NoguSz59vbqqO/u/PJCV2QRryK86nWJ2kwQYdXnfAFH5ETBDwM + 3QphTeyz2pemf4s3+rcMiv2rIskO5u4uAWVkSMGSoujtosL+8WSXA07rx1ghfV8Gw2sMfK+no6JW + VTDncIuRzttKRH3AG1H2FOHBJwOKTMPDFcIg8OuR9MXXrbgsihOUbmSgvFA+NsObdPstTSl0At/J + 0MiT5hhMm9kWkenPr08EKSwCti6U41jhymFkk1Z74MqD8wxj2C3FYFTnFIB8NlwAVxQuwXy8+mMw + /RjU5nulZUG3AzyKOjbCdaKBXEjkKa0rX+E5D4iJ5xVH05UdW7R/YAQ9l3NfGP4ufv80XCXbu29J + h+g3L+QUGjJLJ+kiRc6HOkH+OQpZzSZoVSuXPDBqFmAItSg2Xah8tFeWcDxHJRmMi/sQg4HUfrW8 + wAMyxFWZoF1zu7TFumDSnx+qotYZBEgdC6tQHyU/ORga0KOjV0eyGyVPsoTWpe4ao6MEEo0VEb1C + PKuO5UZUI1ukCN2JARShnkqc/2TKvSrgHzqp1ukqma0HzBu7Y1efnytsMBDNBBqXwwnKz3Hy1PBp + skhuQYu/SydfVtmsLoigiYc6jDyeS2GI6tv738i5OXnb88/uzHpDGSINXHO5EXH7hZnYbGeLXWd0 + uh6MfLJE0iKd1dvlGjHa9zX8IQDtLlPXUn0sCCKMJzKtQQNoUAWZWqWorScZx11EtD9g//ow4sh2 + /47E9OKA7Ml3LqBbG6MiTXc3Mmka59G+Zvuh8PVk8MwELO52BmO1hqM/KHsCbn5Sc5WFFqTfP7N9 + MaLCGhAFxvYtVonJfaHNOmnzNusHfzaOzeM1zTCmLEd0Org2pOEUvUuxrpplhci2wNJA5gs4Ie+S + L4CvW+YLCMqVfAF8KuMOLj9V4g4cHlbTBfwoDv1w5MfM9RylhVP6hSqYVXBcMjNo3CgbuMAJ3qTj + Jyp9Y3x5wscwQKxND4rQhyfv4AHii2t/Oyoqi2wDG/EGVB48tNAhrGNGFfPQqAbnHNSixU6uHBwm + GMqmGP8gFZ4Ewxd3y9tkvoFx4UHDCQcSr4T29XJx/uGSiUGj40c6E0WUuYqgWG1rfImHau4xptnz + qKy413mBS1AJKlxgtxkj64B9jk9hwLvVxrRGhKWAi4betSpNK3SPHqc8JkEn2+iVUpC/JYtKEITB + nu4GzVunl43Tvl/ORsNJsqS9IrbFoZtEOit/OR3OcY02wz/vFxm8NcBTpRVqL4wHclqE3NBtclus + xLU538yLiLMXzodd/cfGGm/HqGWPQLcS6EwRfQTa3uf3WwHF+rOiNHJSIW8i1eWoty6DumkId+Ty + Pe+SuE+v20W4EeVyhJt4qlIYrir2Xi+OgkqEmwub2B25XoxZwHjP/AJdZbfJ4r6QtFtI8p5ka/G9 + JAlnYmpkIMOiFAaBBxabZPABy60q06S04mIgwqgQqyDdSpu7RQbcYbYS9rSEmuO1QwZAegl/lp3j + 1YHvoPMXWRnoyfMx/GMK46Z22ztYwds7aJ+AELVJderEusZ6TdnZ62363bxaYrcRPMDzOFzeFStz + /iElQk2GcINQ/8bl3E1/KxFLnmAc3m5obNOTkp25AmxQHu3g32bfDPBs6UBDFjuUXeFRVJqehY6m + KC80alnkq4Mlc2/bgyrqVKtj8XTJjNDabTuFWMJxFk6SzRXmua5LUca0drCZ/jel7Y6rtldn6iUF + jYBX3rxnTmivKdDrVvxbUi7xb3pK/Pvqw8sK/2YuGiGKmkL8fOzijHkj1wl4KO1nHww4tdrTiCZ1 + pbcTG7xaTKts0LTulhx5cWM4w6MO1NszM0VMO1JHzqpGEGQlrdm1yXCNvhsRLyA8QAIUZStKA4hw + PAURtDkTLAwjLLKlgr77nExSxZ9my2URyAR7nmcgl8/vh4XwPxFaiKul6Q5wByku5TohgZd4VOxI + iDu0/OIANIPUtpgQYoccGglo5zciF4hmrourCncv1egrbEggtJuLwy9df9q+lORBXpvuBYM814ui + qtGKyjXA0ZzNrTASBke5P/oCfHRLNMQ6Gluls+h/VEkkl1x+6XfYwUtgrEJ16DS82mg6wnh4c8WY + Yy9J0+t2nJgolzmxeEqc+OL9i6DCiX0vKnPipyFzQ8ZGIfMdT+aKvL1fZaQIwvf/evVa8to/btdA + /9vDJYY8AlY70LzH9fhg0NfVzBwZXunG3sX4vEOAJTWwDLGU1CtBlvRcQTuWkojgS90oip1KnCVz + Ik+Af8CfbiDLWr3LU3tv7gWfHQNbXq1EzRjyN6/Xyf0YhzQdFgLvQQ4V6awjdQ0Bux9/QyuGROW6 + H25AhJzcibmlDZetYeSTcfJvseV4FLII/qG2DNP1h7D+cMfqKbKNdf0h2YVZf4ge0rpjXjkm42yx + 0tB8dost654VqQmc+4gN5B3OS3d4Vx+hx8Q1iL1RRlQyUVlQKAIZsRcH9kBOFvyu+/m4rqMKQfuS + KwcQ31Nipe427f71likABzqzupQiOxLczEpA+QsUhPIiOip6d9BmoQN2eCwtCUryzFqStJ6tw8jv + SdyzyLnrUvL52Aw+aVw47KsUV9eFKll8EXarKqfb2JapVF0YVSrlQ1XDXk/f6i5ZQo+3mZ6eYsgX + XG4GSaxCGcbRgYXkltlyvKeYXKfTpybXVTUKXO6cMt6pRgE1sa1RIDswahTQM5rYZbrb4kYUefSV + 5PxiSbFWbSNvcr5dcbfYNffdKIhDebk+VAXP4wFJWOBFhvzchspsDbXuFr6YNhPFWyJVXS/BgHcv + TIXF9vtp2m6X2gaPRJmWGSCHIG10KFr1H8AMuzCUftAuGOV+fHzPY2ZvS6bXrZRVSbmkqtJTUlQ/ + vHtZiTrxRHhYUU8Nno9BSw3CUeRHTOoqH8cCBWuDcrUIEZBuYSFWJk35IB9m02rIRrmJoRRGUVMM + A3NiPwqCoKxugn44me0WWHYEDuq8PufO50FTKIZJV2ufiqxwN+jQcyPeImJ7xzpomrfKhCmcsCvT + wluarJHOwt8QDBjCMm4nd2Px1aKLi4Q/Ha/S9YJYsUSUVrNjWLjxVdzA8913GQ+qEB1XdylGrC7T + s2Epa/1icodLKoGzYdwycH2Ae0un5XG3F4hsaE9RCNnB8f9imYTYU7ugVjpZRxItKmEkOK5g5dKJ + uUab4G5uH+vYicS+dG2C9i0dSLuB2Db+K4BVclrf4kE5VMPiAS9ulR9Oril82veduLyHfx5INfM5 + YZJV+NdIcqzxRgxi9jUddfj6mhAcpjIcLv8rwIpnnYx+qo2l0U93UTT6qYd0kb787bXvuQP6Q0F3 + yqk0SKAtymWuMJg/hnOiplMXrQvcUyfopA+KFrbqIJE3tEHxiKbxny8xKyJNdHr34G63gOvony+v + olhNa/WlnDDqemEcSH/EX7ri8dFYI90j2T1X5lnvRZJs30wUHvfiivkdwivodTvEJKJcRkwST2Ug + 9sW1CZEBki+PgzAqQyaNfd/14njk+56AxC/W5apFSVru5vM8MHqawSdh9ihFSMNk3A+zm68zrOY0 + TRHeZ4NObgo0GEmn9q3AU0goM+PrTDqmR7ihJsn6JkPVBmNpd9tZnsxCwdKTTQ3ixd/IxfMIp36A + e0mjIrkBK3ieIu154sB+om6OJ9HE2u9EHZhuJ/GsmlO3LZX0evLu+vpkgJEjZHgEnfnD1aU+3Kp6 + VdHWVugSbywnigadSo/ZW81cgt8QplABH4JpbN3pkV+BNPrGL31AXt7g9OlSaEztKi4B0t+zuEMe + C71uB5BOlMsA6eKpRJO4uKxYFHjgBxV89AgBVEaR4yt8ITMCS8Y7oWtGF86sLXuhY+plckI2AXk3 + g5NowkTq+mog6cxnq0xEns+mZ8NcURZqrojvXoHEnALJ2VK5DSle/U9663K11bUszierOkA72+C4 + IiqPH/uBz8us1ZiBWlsGshYbmprLfk62QEJAXRqzZyaPuG6Z6OAvtkQD3Iwa7DyQgW4BWTnrJqE1 + LWOfUeEow0YUUPsueSKtBGNG5YwKE2lJtkFh7KsO8+OIkeuxZPFAHkF8vf6wdhqdy5isPlLe6IdW + /Y1k4eBJJiuVH2St5kwX3/D/2SG8SjWwLsAhqNeU4MDndMe8fPeygmKHpWTKd8xT3wn9iI18J2Kx + jK26AIVoM3xVNrNqsBqFXrORjq4nv682JwonZJQH1mJG49d0vZmhv0sYQnVBQlUKbTS8SzZDUkOB + 2p0oiyhg1SQuTDLfpmvJItcgcmyH290iW2/k1fJyNj0YpK5gemYOnFyvcq/0VhrpeLgfNcLBUYtz + Jvb1Bis0elS4iPgHyPJbvFKmM7V2w1fXF1efxu/evVPyHQZbq9KPajqAJQiDuzJaGVU63m1E7mlp + cfes6wA3rk4P8aRJPOBGHcR8+mDMCunH2qp35D3UH8iOxN8zDkTxi3LCGLuwwKhuAYZCMJ3Z9H6o + FrkrRo/nuxSGYtH3XppHBW79lEqQ5Co1v92m594qOXLf0dUlNIkNwu91NEQd7CtXNxbBb//Xe8cL + uwQEqwZWN5amXrqx1HPpZ/105dUEBPNSWQH+fOx6URw4mHXpxDJp54//nQMtDNGVF8Pf14iTx+lG + jpdbS7irrCXceeudMqeTuUS2sbWXqC4Mg4l8SKu5+zyVOmuOmqlxZChy7ckr78QwizS++coz3wPa + ErTIHfw4JNMgLHL9fTimzXIw80sgpfIru5mDj7WddGHXhKbicXOOS4t0WCAipwCP91c8cu1TVOh1 + K+YjKZdYDz2lrfrH9duKOcZ1mQnu6XnPn4aOz6JoFDoBc3l7isp8DfSrKSp/t4xAnabi8ZCO4s9V + Wx+Bz0+rqHFQo0Afek1rxDm8AU8dvxNzl21smbvqwmDu8iGdGBioVBUn2WoFanyxXPITafE2eXvN + i2UL+QVSNdrAA8HnY4/A6R5HaAwnhDH6oD2kmnWQLlRayy6A5u7rSdH762eF2hwRHvMIDq+YBTes + XZrq1B5sv8JFC0t9/Ly4kgeDDOMEGfbhiscdavvQ61Z3u6RcutvpKXGqt+fX1bs9LqWfev7zpxFG + DcWjyAedI26/2xdroF+TfvrY6sU2lcWyrW8Gp9GPwocQFmLHf5jyYj9QHv53rWL2dytAxkOpgIBa + Zu8PptctFRBBuaKA4FNiUpcX1Qhzl0VOWQEZex4LWTDyUNqWkQnF4ufL3RRGUQrdR6vet2Q9hY/J + 0uWfMNbhuTDaYo2sKeyOrwLgVBnULyd10ed5kXeTt4XN5Qhizt2wUvhldb/OijicdUyJAV9oCTwv + 0O0lJqYygeUxCmO2QuXEsRIgkzGZF9l5cTJHwsyt1TIB24dVYmQpRtAE5ghq/x02JPxnOkOPrCAx + 2+zmn5GX0N2q512gnoiS08mMwPmxLowezQ1sujFS0rAcuet2M8D9pXkv89hA+D4JJ4jY1wa7VBh/ + aBa1QPRrESOlcy7fNZZMeH+7ZqsKp8SVRXKLqL/HBOuK/ScG0rRZ7aTZnlJpGGgtUT2hkfgbQoEt + 6dpMlvgSLOYGowsaoPjylzqqtA4jTPVFsrwFQRhhdA+d477yg3ik6oUFvr2ISa/b1gtDytV6YfBU + lo989Uc1P0iYMkwci6eBB4JaMEKpJ5axkNc61ODV8g4xPTHxjxjOH79ikBAVhEzva8rgHidu9m9G + 0vqRUWwdmSNwZwToKIXPgL7mmSLtm3d6rByuuDiMW0MWR0O5qYE5fsuG2nAwfPPpcqx20wJEs8+b + 4Zv/hv9788s1IaLCX4dLTBFGRvpxrCpwjVSKsXKqnq+Tmxnowjhy/ILh1duX7vDJVZZth28RXf6l + iIQEjn8ywG2QV9iKBZMNYl9IKUU4eQze7258hqkyNOP2gvZN6KgHOel+vrOqZwW/N8m9r5K+gsib + zhK1YoGxytVg3qvo1PE7VaPQjWyzNXQnRrqGeqqsgrDZ1xjZlu4EpKMMphLpBL9dvnaYG9SlcWja + 3PdA/lXAR30jajyqjLLHcCjkTnId7ULk4Slzu5U1kW2sXYiyC9OFSA/pYgVZmFXDr2drzHMCKXkH + Qvh8txFWOJVU/+Tyw7uXQ8ZiFy6P+GTQ+vJmknz+nM3z6r/voMMB9ir2n8+kcxFkZZxIZKprLV/n + kZhKVN7KisD4WveaT1GoS4SI8A4cuRCL4EoC+Rzkzw51P1jACeSn9fsfmNrjjWz0yzTyQN1juEoX + ss2T4zt6rn+EXfhBhXRJB8biNm6ggykKUYYLmsCFhkeRVQyQqTw9/5XXNVGPmthm6skOjFQ9eqYL + OjFp4rn+cCEvy8H1YuKPA+05w1+U9wx+CgaiFabpofGWQHFCMthNs93NPB1v0GA2FSF3X1SJJAwu + k4IvZvfAqYMRFeIamiFKNPeyqLv0cDWbXHIKEoHS2LvQObT2U+OXPUwxqWNKOnmRF0oMV0RC0qB1 + X4hRVEslmPV122zr+ZuaBz1IguieYJiYSifcwasHxAa6cNcLvikOGh6p5qicB3MI9KVWHGeofzCv + oKuhx/h53A0dSzWxBR6THRi4Y/SMmGy2nkhDTLae3Qos60l2u5xRroxceBXPMAxOBi2vqbd+BZoD + JCywyTxXpvbJ8pWSy+mz15FFcRWDlo41la/14FKHZgxKHKHyQBtQrk3+4EQUHtsyTf0wgYfgHH7Q + NrX7WJ0f1rLVfc2CfMjJWs0bqBdFQkdMY2/k+0uGFxVugrzI5GE80g0Ii7y8TeUnNhKtL8Zeyyrb + 0dkUM9NRt96b+JQ73VRm2cZWZVZdGCqzfEhszFQ+VJKVFB7rfyTvVjbfbVP9jAAgNkanmKgcRE5P + cVgVNU5BxtZTs2VfvQZD/Qd67ydiC/nG/mqNtLKfL1nA4CCWw3lEPL63YDDFQigC+u2VE8b2AQj0 + upULS1IuubDoqcTzuHpVcWGxKCwFIDjPxxxYveePeMD8WEZAX4sAk3E1wESYwqZZES7grDR5OoMK + E/6khJFSBcXdEk1zaW6c01oUFYbF21QVooClNHKn3yYTttKFh96eXzATC1bBfazTqlut3qJbj7sX + Rk156sxxPWSS9aFdybqBYOD6VgRz5115hhuivOBAdSRsHT9UiiZrClKLAtjofqV443021uUEm0o0 + AkuyGnw53bItnszoAGh0GnXj3hypNHxpJM5rGJvBXc9w2fSSGWOJo7Dbx7YMRgN+CHv1bIFsIa9c + DHtnkgk++Nvry7GuOlsqzU3Z0KUhRvuGOOiNK4hipvuZwpPfLq9OSjyB2EDOGZoZwtnwl2TNVzI5 + FkZKgVOCQYghr1Mx0g1xc9DydtAt4k6SN3eADFSDKDBOzl95lVb2d3dcAQcYQy5w6cXpaifzfdJR + WipZgzxdyJ3q2kFMITj74Gv2FD84PCi0Foey7yDT3LwXBWXzXmWDdrU+5Ymt1Uuoeffb7iOXSVc+ + lYsdi59EiblvCfync1BBH2QPqr734CifYRQ30/pLy9a9mSl7jLjrreStkHTUwtXLRVZ76bHFZDeM + 8T+R3h1J9RaRGbfvshGuynQnlA3/H2N50SyyZZaid7Kr14ZHjtiOM1H0alIovnhQvg+QM+A0cGSW + dv06WMvevMQOORwq95yVNU9p077MOWKR1yXnCF+3zDkSlCs5R/hUBoRe/1qB3nGjMmC8//wpuj6j + aAR/hJG3L+cI6Peec/SocolbIj2HxQCgV1fjQulOtUemeCdS+DuMaJ2m0Hq+y0BEmhRRAJ68eX15 + Mv68E6XgdAK7roIMV6qIrdfTKhIlUCWAw0zdF8U9fFdIzOjRFaHVt9jZhw/XZ3pLzAhGM1kOYTIo + 9l+IUoPzly/dUIflI6wuFfQUR7P+Iy0wDHoAZ9HhYIFy1IVhcOrEnRx11MTWUSc7MBx19IyOFDBN + VVTh5SuYuFfnb4c32ffhXYqWfyACt1RBb0EFRP00vMa2A0FBxHVxFlBkBI/FxTJNE2gkdYACkWk6 + oXqCuCOl3Was1KUbmDih5xxujexLXWJhg1Z3mFZznGkfVJiYYP9F4er7CbpOoOlmWz47yxnQgIOA + LpX1V0vlQCscjMAoxLlUHz3Jlv+7uyVKQj8/pgu4jXikl+dAB8JftZZdr3qCG4Q5oRxm8SBSIeGA + XR3sN/Tgf1KqbeIXReFnf+iT55IVoLb5jxS3HZARg+qnHTmu42VmdZlI1PL3Dos6oJaL1+1Qy4ly + GbVcPJVplr9eRiW5jMWe71ZAy1nkw4BHLAo8V+aCX8voDmAzNyCgwY6R6McKnlXYWvE6xPgB2E9U + XlaZ++n1yssSSlpGEgvxQ0YZpxg5ulunoD2glqGzM7NVVBECJQAydGPoIjkws+lj8P0G2RCxkSOQ + 78r0GwGfDYmOhU05mwbdXOSskK0H7mUhO4JuA1XP501liAyqWq4tQ3IbBnE38BoM4vXEygjiBgSZ + U8UULhEb/OzNOMCTpDHb4S7uBF6+x4bcSMUiDNUO7bwtbA6nX3R21Fe0UNn7Fa4XB7608xF9FHQv + nr0cbpbZvlFVYxK7YrY/SGSVnwsSLWzK5mtY7dd0r+yDDKBCqo3QPqtjN2qNmRZ93baRLJsHqn6X + snn4umXZPEG5UjYPn9Jte3V5Hb6o5MWKCiilunme58WMjzwviNDU12YGWc6hg0nlBqw1iZuppqYD + vABzEoUhbKvHaBDReCm+48bHhF09rmJIbqzLenhuVygzamJd1oM6MMt6iGe0R78uEplh9js5rUB2 + xrbGv3Rk7/kA3xc2hCDoKxCuD0AysiOgMVpEYHZIFHNCxxXMWcNHo3aGcQDdtGXmS2eornkrPO6T + bAecfSqr4x4OuByTuR2JE2e870bdVmHGnrTf5/ABe4HjamXuUCQNZYfoL6LR4XSGDajwctFiY+uP + hr+z4TRb1AL9P0wFe81wvCDOV8Ic4/ZbNt6kIjBFHtGD4pZdl4VR5z5GBSdl09Ts6TVymnq1n/0f + kd3+uOre+06Yw6CgVU8zzR6R+fr0EdKF2xG1RVZoEVvQ+DaEDxJqAsaV7W5AbVhOuiK49OWqg7NJ + Ck51LWqLn+dfvpaEBBQqlqacdS2952FlsKbzI4/q/v72qmH9dGMvsXtUluryPXM6YCXS61YSu6Rc + ktjpKUlDr95femWB3WeovBUF9uj5UxeFSW/kBswPpd/y1Txb3orUFl3daJWstwpI5e35JW5axabh + qW5g1DfazL6PlbiVQ7VLIkL5hbt/QUEA794NsaIEwXCdmUWa8+EUmBLJrniS0RpyN9vAuuIiptv7 + eX10gVA6Xs1XXh8lRmLm8TCoWNfMkL6UBl4IvawztkVOqVBIsR+UB524rM9cwsULM7avt3o8trgE + 1PPhcvTu8l19l7nJrDnOkI6DHNIKUzWRY5s2NT8sdVnprmgHyxdcX9N6Wxk7AyMdtHgLDb9lN8gF + chg0UdYQDTedttQAD48uWwKSFpnE/hJRm36TA9Fcrurx0yv3CHpsjJz1qCKXMMUZi7+XhFUk4p4w + wodyAbZLmD7lueRbNmeUnSx/B1JqVf89pkFm3DeginvdQGaojTXIjOzCBJmhh3Rx3RUtTQqL6OVv + r1kImnkVokhTRCuAx71jSiF3yppUs0f1Wt5cMd4hvIletxITJOWSmEBPZfXK64+V8CYGM2C60eLn + T0M3jr1wFKK5RMLFn29AKsBQmVRaCbZCz5ltMrGjgA2cb5aYlKMKFVLcv5Hd836c5FTERMknKMEN + JTpm4RWzop8qlESFKTfLPqqHNcRUJaWPFTVPbufAZRaYGyEtGSjqnzR4qZwgqNy7Bctl7LNIWS71 + tVv35ZXClT5vrLApiQ4ey1INcL+pmxUYUjCQH4AHprHtYQUqD6XaHBoPND1Cj1LrfqxByIHV0Trc + UXQColNIiDhiDg+JM5NbvDTl9mfFis3228ODA3eAcEth3UdV1fFcVSM+6JBTSq/b1ogPqjml9FRF + wb4qXxMMBhZUS8SHbhTyEeJn+TLG7+31Zeio2xctICmoiXez2zv4ZwGpaJsNrzeYoiVhUjfpA3Lz + uzTZDjd32eRLnkpUx7TdMHSbXE2wFx3PbchWxKDnSmiBV1KDqsQGH8T8KCW5ZpgwlU/EjJ7IKT1T + RRiLYbWlYZzpqNhpJSr2rH4tGroXSzTA7ZCXeQ/dgfy64nlRM3C4lbEvwFUsLRYUh7ZOGwfXD9hq + v6k5IfEQCmwdF+il39E6dZtW9H07kdVnFNyZzEGV2s0PBZY73hp8QLIAsqn0G/wLucNO2+sS+A+6 + kxTn9FTQs+uGp6wToIduYxv2rLow4p7lQwskVRg6lkzFk1NWVHLaiEIUc3aMovLQOvCDx7Mep3Kp + jBLgLl0ySvB1y4wSQbmSUYJP6S79eP6pYpl1Q+ZVMko8OPlONPKcyFcqV0Moxcdk24dV84FL2DyC + KIyPw2S+ukvGZCceFwzFI+P+pN9zc1YBWZwKp8+mu1RoRdLyvBm+9YQl+i0/H+AK61yQgK7HngR9 + FsACCmeNYfG2SKF+vByjT6uZmGqHfLIfx23ugG7qlUfKAJa77yV3sa80SM+VYsZb7xlsPStHiEXi + naezhXj8wj91vG43p2pkDe2nOjHB/eTT8uVJien6fmz8waCMN6fLRKCPi2kMtJpYsFXcH19gkjFI + pD29fe/dRrIiwVa+yea3s2GyQk11a5/3btm4PW/Ho9hZ+YHo6BQW0WQ7uTvkq9SuoLD/l3CZRfaX + J71udXlKyqXLk57S5fny1+uKvdLhYcleGTx/6kdu6MQjP/ICT4aFtVaf6C/LkK7kl9nmAfXXR3CV + /pjZHOCCq7uUe6E/OCIH0oukIYUHThdDCr5uaUgRlCuGFHwqA2nfVKqDsVh8TcmQErrcj4NR6Hq+ + qi9zlc5FAumb88vhSxlJJPba1W1Nma/as/9kky43u+FrYJSzk+ISC5bRXKbLZTyu4l/d7Kbmdovd + Rk+2QSPfyFd3GRbL0BdU0uS3RiXRaSTu84BF5cyMbLPI8HszWKMCeJN0GhRph9w1I4oLxWvgq0CI + Y/8a0DDHChSqgAP1BL4CFuVEuJbh7y7hDMHfvNUILrTNZoY4rkUBE4vdrEFpgdOz5xYa4JbRxhbg + ZngAGCM0hqJpRBh99/pB1UUTMkpMkABsQlJQ6ZfdZCOcPGzSPt3WlpaAy2RQEdUjCyj0LnO2t5cB + Ubp73Og213fHi7cinjuUbtt8IDp+ByN3efshszUWHW4NV+w3Jt37vcPCDrq3eN1O9ybKZd1bPJVZ + g9eXpvjgsYDHAn62pHxzN/CjaMTdKHSV/JBHL2x2qxUaImEe+dnwWv9LqIS362y3wgAHSvoZa6TC + qSgwdarS/zarv7eEcL5ZDtciKU19VG7uIjw4XfLr6s0bWdyLzNHjSba6L87y/mkVU58IfidRJoYf + rkBYRE4sfoHOpjMV11d46/LX92z45KUZniLMBCdninmnQ2DWwslZqghSBJ4b4O7Sej9wgkNklT4U + 4D4Oq+9IWd8Lgi6yPr5uKesLyhVZH5/Kw/rLW7ci6wucpJKsz9wYWF08gj/DyPFNaV8CFhEycm6E + FBU4Fwu4pBJdWpHA/WAHF+KvZHPYIZcvf2EnYjvdp8lmO7z8cicBBeFvHC56rFsHU7tbTvHG3a02 + 2zRZ5BxXbNDLLxMU1Qj75/MMFiLZiF07h5uiuueT4Qp6eQb/4bLoh7rQJQ/5cudWeYi8tvJntUcW + FCRed/QfuOb0h/PLX375ZThJNpME65Tu1rg1c4C5+vqCsNRx0CyiBaHvF+oL/sw1X/e06MPqog/w + RGhlKAq9gZwYPNkd5tVGFtNOuN7Lev8719t+DLVAHg+Um7pqmDI2sugtc06dqJu1UbeyNTfm3Rj2 + Rv2Yrp/dzUqGFe5uZv/fboYS/UXuBKimggz2vPcbEBwgVWGMjBAvCg+YT1mDunGBEXWAivoJyDWN + XXoyNy2fj+0diJECLe8YIzwntWyVroBjHEeIACqx7KlANkbF+FiyveV7+1wF1cZ+fOqEnWJqqYlt + SK3swIiopWeycNlq4zkyjsdzrkVOPFVX1wEh3qDxB2wtSk14EaF0BR7jmmc03Rr28SE21JrPRR+G + hgOSIaERMU45ZR2TtzkPeFjoE97ZLPB+z1dA5dwcPLOuI2MnNQRCpjlRtzBxpw+YJzektObCkNHn + s51tdzKhqHkqrTfTMZ20coU4oroe6+4ToPiB+383Qhm7eO8EHfCW6HUrZUxSLilj9NRQwZjjwsXl + M1MH85+PGfMdd8SwsEY76sNkDkSrqA+9KS2PwPDx5tPlszcvLyvxWcI8vFmDBvHkxW7KVidmUpKA + /0m+z0QcE8bvrjJpfJxKSyrcn8vNmdQGNkD/bnYDBx2rQMIeUi+ilI54fSj64822Gbz47aWvTcgU + QPBsKP8ZuKRGcArBMmyeoBmlcIRwb0rmuh+3J2SUKksf0gc5IUuo2eiDIMn4m3Q3ze7uV3eI4bnO + vm3vLAlwQjUitivtqrKywbQXe/oB9PcO20ctmVwGxUStvj+ClDtXwotMZqsZDqG6aHY35ePwBfiV + c7FMJ18sP8G+ebOkIkEjbnfJwQGg7d94UAf7TwrQFbaDq2TTP+0+bJxUrOn1e8frEAxIr1tdq5Jy + 6VqlpzL/6v2V6ZBgnssir1StyRV52hFcsG4UqCztpgv28xzIV9Gl/z5BfGaM/PU/3z27/viaqsSi + XxY43CKbpsL7qMRVeCoziEGpnif3G4Rwhl15n6KYUTDMoZn/bHgHP6mHYhdOsh3uHkx2EinFk3kG + 1w4WqCGXPFkHRdmdFC7o5IYMgvBG+l1Y9sjru4AzoO4a7Y6A9zHKB2YDP+njah6sBtf/vIy0KwH2 + g08ZyK44TrVfWtz31dqUf4Xk5f7hsiVhz/e8eM/IG+bv5wRNssBnorXe2x3SfO0b13HGo91H+SgC + t7rjbNzPbQybord/ec+C0F4PotetGLakXGLY9JQY9oerS9xMpleKB5GpEXkuaEQu6CrBiLkeU8Cz + HwznYdVmIlkacNdbjVQ2EojzOdy8wD2oltpU9g9xB3xYr7y4cgOYraiTqtXA9DsHhrZVxC/1PB+u + pPL1YKE+m/lVjUXyjA4q+VXN2bAe2zfkwYMvw0DsEs2/A99psX41yzodKpc2mHB7KHoa8BKNlr1j + J7kdZf/q2TbVxeizt36wHyjDLYvPo1PWDQ1BtrE13aouDNutfFiOmNaBajfrLJkqOQU2DXz47GaH + 03EyEJ49DHAfC3iN3Ir9BCSY6WwCl/GJ0TP3Pc4QNeERWXbVLkGrc3XfHmgp7jfp6YGPs1WMugdC + kTDSNK15DwV6j+jjx7hZKJr91ysedEDfoNethAlJuSRM0FMZzX79qhLh4kWlaGAvfP4USwsF7iji + joDwEqVTkt3tHaLnoGkhr/ipEbswK/guna/gzoIBzWebu+FUNfmMiA0yTn2TViNItJGiFN3bBDb/ + iJXFY6dpgGuksXvDWNzkoUMKRaEuSgd28ggsSn0YTyLptb98wdmrsJufMm9k6bPPOym67PVTOk5J + upGhmunyDhEVhZEAmM5YWzYx0gV41Rz2B37wk8sP714OGXdcL/K8k8Gh7bDngesGjIXk1Y9BzCGz + 9bFAJsyRETim9ioGJI0L8h5YErJhu/jFnIDkp2WKYHFf077oBh59cWmmbPa0C98Y1rQFPby2KlM/ + aY2d0oed/spasiDyhWwyQ8HymLgZiqd+d+W4HXBB6HWrC0xSLl1g9JRO3B+X10FFGeZuqdY8ez72 + XGCZ3shzOcPTKgI0RQwubMA3l+/GcOpgV4nIODSyKQ6NkyPNmqtNUOs0pOi2xsQWJ+ZhY+w0OjNj + 363FeoIxUFyIKBtbjQ0xgiBZ7DQEQTKHxYyHZZyQYxKv7OZtgGujVVAvjCjYyMmj+STydodrIyJc + cCEEJweiz4sFwSb19YXtTFxH4d+7jHOSTNXkHVZ8F1ddkLHZLt3mqK9Qp96E5cDRQH/8Ddy4QZcQ + vbyRNdSf6sTE+pNPZXzeWuH9F0IhB5NkfZMsMtA2KDwVJd0aiKhhESJqNMxxzHT7Ylzjb9DVAPsT + SIG+J3Ve7oi5/cc0hTvya/aP4ep+DWrQVGCNYbvjAcd66qLdsC/D9QqkjbjcPqDYHK0JUuzwsXhn + gU8+5nzh2inWuEQOwXKzt2D0jhQXRLQVdB1EcQ/ulsfP5bHQFD/JRvIwJQv6lPQczwkdc5fWspdm + 6i2s4Wjae0YeSXCoFnZ6OO1oL+3uaH6tc/UgPbZ/JfMFB5jOBLUMUeUPXeseYv59qitj4EMeRKjP + Cu5ko8VVyb7DouBJ7nET94O+GGiIY8bfMH7qRN2s+rKRtVlfdWLa9eVTknwW69VcYgIs9riylGfm + j8V7Fgxs3xbvYifCxh95jyt6W4nxvdr4+wg1O8gM8Rfz7x18Bz8ip99/AtLFXB4ckB7wHPX9rXvq + xB2VQdnIHvdddlICfqenxBJv5/dSGcyT9ZL5tKTyFj2ZNe8Vf0aCQtuLfC7ztB5AifE8UhLuJw+g + gPhF2nZqXAfygZAn8lm0iM+yg8/6SxlzEfDDNSeiuu0On+aDqO+rZCVman5/OBHXYaR7oMVgmn1H + CULL04dxFIK4fvneCZi9KZtet0MbIMpltAHxVJc45XGlxqnDPF7GGxi7nhPwaAR/hHFkog1U6hxR + gP0Tz7k+qV6oZ8NlmqwRGkgEm06oFOfVasPjc0ozx0hUM4N9nWyHMFLx6yv4HDhyw2vmVaU5VWZc + kLupRRppzx+TNvVXAqs2Ma3qcJ83Vrb2/divVvLuMTKs2MFxkWGDx7huA9qKOtGfs9hG/K4xcf38 + BMmjMX5/Vq5kLbrTTws9238DPpS46ESceP2fs+XkmCKDRxYrVBeFp7Xx8E0A8l83ZZzaWOvisgtT + FaeHdGls0gnqT3gDaB2acqf0Fa8+U6MEvLrKQZDEwcxkDatCTT21La8F/aJcKnoUarkbS7U8IMF0 + lW22hZNeUOu3qM5RIdQ2R5e98HdcoWTMFNXVGPU0dKcT+HDEqxzKoHpUjV0/jIT0JVx6Er9qjQL0 + br6zhlHoRGIPM43iZlo9rOuhHbQLnD+9VnlBag3KpPr8VJdJb504tc/wv27zzWClDBHye81J6V4T + VzFQnULhdMDwpddtUyicKoYvPZXFZN6/rGD48tCrZFA85Shh8xF3fZEZVJSzjcRpxG5bp4jCllAW + UhGZiDKvruGZcJfeD6/H9FeM2zPQVggPZzN8cjH9sjkZVfCNQJ404/9L/QrR7nOhyif8fUG/CCSq + l6sbhjhQK/gEInIxnfBoRRWA13lM5vV8WkUGLHYEhEuxmUGptMybd8WinnGIkdrhQ4Vn4jzgB8Dn + F4qQGrI3D8sAq3XjG/y9l3eAO1+H5PgxoyiCQPDHcm8dTUkwwYpKdSkkGNjeLlpcUMeFvB5XQiBQ + JUZLJ6DD+IE3B6xumkG0moGkNaN/NXLr2nKiPUTRBiJl5I/3V7D97Q0f9LoVO5aUS+yYnsoU5MuL + Cjt2mW/W9vK852M3xrJeIzeOXLzSkR1v8qK9qDSfLxM6fDAWhPOEybigGT0TkBTEW6DDYV4Xejxb + LHZLGHqKaAHCkS2OUwr/yFbpeJvc3sJEnq8m/FT8FytSfStr18DG4LRvFLYqvldFxJajG6/06Orq + MftB5DRYHjAWFyW6JqBEtQNM7smaDBlN5HIoMA2QXvJgGsGHkdeU8WZ2oPk1sUZtsS2BzUaOye73 + 00PnER471O3EDD9TU00Cy6xyH4ROzA7rYzPbiGh+mQM9BTnqdp3WXDnYyYFdrGAZgb813GVoV+hG + 2AbarbQIiAq3r5Niyezi6RtXTt+zi3vMWEfl/wmcvmcXJ0ah9sb9ZlzDUxSapzpQXC/xbClQaLL1 + BmvoTOY7cQTUZNJeg5/kHYQDbd0nZ+pk58caL1LfXQ2QU2l8XcbCgVwNoV40L94zm6xER4bTWO0z + K4oPCex39K2cEyA/Dn62fTBw3jpmxUlrZwBWs4bch0x2Bo8yJsgiGUG6p9Q86zVoEHxaMtldxAPH + Fs3XR3lhE7ItHrnwLWPymYTwFOs+neG13tG2e5xARgWWWi5US+PIcaXRmUcyHXGJ8dW7j28KmJOS + h3U3zeKFah7cpmvYakf3hPraSGTvCFwWULx7PjelDzrMFCvzJ98zzu1FV3rdLn+SKJfzJ8VTaUn4 + 8LpcTYV7nu+U8yfHURzEbBQzj0l/3btNRspjshGA88NaHObJdMJyrPj/Z1is4CFaJZ8/o/ZwP/yw + 5E+Hu9U2+ZKeDsWwviGGTKGXpKWf7cZApMc78vLV5fAJ8tXTIdw/OEkqseOE0qT+H5G6CMs1JzMS + NKjhM7MF2TzJrrD4XK0TU07mML18kQm6nefORIHn+m61VuDXZLJDqPzmhBwH1qiBaBxHUVhjp0jg + Kl+mKGtkDTYwY9RuZHbw4bJ21LngV0/fFMgiHu0hOng5+5rMcfZzJ0dxsEKtSYaFHPzPswkOXkhX + s7FsjLo7LPi4SGsjKhFsx4Z9X+APidw98v7N06/pXACO6/4RLNBAS/q4ThYrVWFUv5l/svZB4h7W + aa9exAfH2/3FHApxoWG+rbRu3D74ZjF9SG06u1vHNovpqMaP3CYuhABOd8oRRmU9LXDkGla26oFp + 7aYBw4n5skQwnJNR8XjMllQsaTKUBp1DOq119kqxz/ykn+v8jHLn5znvWM84b2Tv/pSdlPyf9JTu + 0SnIFNluMyh4M0AkXJrt0VvJsfbi461B2jvM8yM441r8i8mJJCYPNkVXVqF2X2zC9HeCt8kbdQPp + NwFu8qcanhwmirXik7OgCaAcfhEExowA+Rl/VGHu/wEp/5Eg5X/FiG55MENHunR5N5cut3fp8lqX + Ltcu3YsXnyqKGA9qXLpeyPxo5IVxKB26BRtmDtaZa1lSRserUkqw7j/QaS/ev8echTXO1w36ccai + GhepOhc326qqYyZKlAqsNVa/fGBsm+JX1JY+YmEJBAAGNyqoH7Hrxq7nlHUanIvC7Bm6jBuXIRHq + CGpvbHFBfJp+c13M7JGLX1+Mhsy//r+YYTAS+szV5QdWgIJEtQR4Deg12fAu+ZqCVqTqq7l19HHd + gape5DOELiMc1zqXn1C0cpPoONeSZMmblzef+WqAmzbH6JPeWJfAt9el6euo6LiUbVdeBCvWa924 + nyE0Cdy46xQLl/tTHVAYLogQcztBGkQ/suhq5tZWiapVjI44IdBS1T3gTrN5Y6nuWoftz8m1UgJU + KDIJ/7i8Yl3qX9LrVnxaUi7xaXoqS+q9u67wad8tldTzoudPwwBucTYKg9CLnXa86dUa6Ffxpv9O + BR0Gik3AdDEUEh+BdK93Fc+Vwov41PG7KoXUyF4plJ2UlEJ6SrtstZjI2/3KrKr57t3wDhYhXf55 + L9mJ2BgDgtkqhNYo6fASKT1ZpesNRswvFqfDTyA9bobvQX1O1yOaHsLicgLuB5F3MsDeCZvSYyTQ + /xXAr2HwgsFohDpztIJAdTbJ8ZKaKoEJXw0HmjhXeY77UbwfQFs/SNv2Y6EoXa9vxnVf2o5h1lc0 + T+jSWby4cN2oW6a4amJ3DnUHhVOonsnInJJBpmqg0TTgBohCh4LJ0SFMu2UmPLoYLkU1KMcyrOxm + nSZfDpEosLKJ2BZ19NbpKpmth19nCXCIBTLqDDYOrDN8XKPXtm7v9d5JS0xc7321zJw4EoesRsMk + HUyvFa0oKsbY4fd35LIxATYUy9qLMSaLBKG4t7PFbt6ZoYSM6z3dWehkcFPz8pjg5xmCgwzXyXTW + QQB1ODlAlCVOyNVa47fCWTy2skA/rgPPZzpTgD6ml3xXj0eOW2TCeHSmM7jvlJx/UNmAkOq8XL6H + q9DeU02v2wneRLkseIunEun3xWVV8GZuVBa8x+jAZs7I5QEPpBC1UoB/55+KLl4BppxiIOsmPRu+ + TBM4vdl3PXUS3vdmVbWD9FZkvjiEel8sSPem7SJHRoyY5zm8nMbZyW6BUeQFqMXID7njFxASmydM + WRVevjp/OS5OG7lG8xprGGwqKjxPYKNJnXN7r5qblmUltW4mcFoo2G2d7W7v0GiyWyoLMNABKRKd + s8J0AqPaDHB7aB3D8drKBXRhpx5zSxTE+dDhzrZa848uINtbeWg3CHNCIsn/UOCjXmBDvPJyFBfj + uBpenkuO6epx7Ch9Hws15UQOXbfm4TtyXL0BWYa+RBpgYYeAe3rdEmlAUK4gDeBTeRfU5D+BaOBV + cAZAgeVwF8AfIeftRpjpHOj/vatqaiMMd11QVrT9I9A6F3uLIFmdDCCFVtaal+7GVL7UY5kZPN1w + plQxrCKfQ3ioq0ZhZiDhSqX5mpeG10hzICij0hazMB5IsZIE3NkEWsElhBXLUHv+Aidhi6YKESLR + ZCp9iKyfnMAR8cUPH+bacHE5+eVTq26U0WS8UCKoUkpZ3dodzI5JH5+t8bI4NADleO6pzFSPMCom + pDjUl1cs9u3N6vS6HUcnymWOLp5K7JhXr6sc3XNYmaM/jbzIj/ko8h0WF0ykr0Dzfq2yCbHugJqI + VY0HDrWtr6QOpyslQg7df4xTyk9cqCzJ9SwTSRRoMkyAj94bNcKu0s/VFClBSneABoFyYyNukSSW + 2iSqyDNF9TzZk/GIxTA9ldDRnipUquE/sxh6nc7igtRYjh8tJquGUcBBjz5Wb7EhatqAgTsvlOmI + DN/ZvGgEHonFenJ+guUqYUWm5ldFXmC1Isf2PkbbvBL7SiMIG0JoGQ9DF2fpB4+gZg4G+84f6n12 + Z7DxCJJTHMFClhk2hNfRYD/D7CdE80WK6CgZX1y+LsKCnF9+UolbukLmhtzd1LdQKYnoWPSB44If + Jpn4HOF2HSC30rJU4LiDH+90bknUxX0qtKTCalM1lpLvo+R8UWuv9r6VgajQaXhMp8UNZ2vVfdhO + 2zOaSF6Uu09u2y4m/Z8VyCln7KhrymqqBmQ8CJU5+6CkHSuTQT2Y06G2BiUT5ZHCzOOdYZKojbVL + WHZheoTpoRklrP4stkIUX8d1jwkO7gT+qGaIiue8unJ8194OQK9bSY2ScklqpKcqGKOaeO9EcckO + ED4fcz8K3WDE/Thwo7pKsjn64iRZw1DgKqTEn00hPj5/CbZqZsRsnQ2V+CSzSqZUv5qulg+zNVsN + b3bb4Rz1dVXcGi7CZCl/3KE7frjEi29uVLYuVJKa4WDIjppsKRlqmy5WcGjg8lPQJ5ezmsT9A+P2 + Qh8OcAWHsG5CLFKKWHPtu2I/ORxhlXgpn4g1W9slxcHfbpUHuOeV7OFEvt9PWhELc+3bnPK9qvtP + x9+uwzCfLZdp5zj9govvZ4cmyRNDrzcct+NTdDAvTRbZO+CKjHRFoyh2Th2vW9iUbGN7RaoujCtS + PiSG/s+X6DJPE52CN6iLl1T6yB/bBavU5VWd4I3qe7GMU5M1FlTuQAHotGQUtHI/d4vmfEDA532N + ulSb2Wfu64ByT/ELRUNst9MH3+W0mnIPHpzncpqyA7Mk1LFhKuvb8TtlfcPrtlnfSLma9Q1PSW76 + 5/VFtWquF1Sq5o6x9KAbjhjzI1V0MC80R/wN5wf1B5g5vPV0kEd+TFwpmfxzM6kWytVM7LMS/U3j + VaPzm2HlUMRQLkknJmuEfZ+umuxUDhCI2tzhsOQI6VgSTK7usrzeB2GVik7hzq58QMiDoNRD/Qf0 + Q704dt/Biscl6jgNyxbXhohgqk2icFGdawTUqe0s3yqWfaC3JGzso3a6ikFFd8j8jcqVnlNe317J + 1Uz34BIrGZbEQ8zkz9ZjtY55MjkdmrHYnCKu4fKXCzb+cPkLk2svTGjJ9u6bQCrITWiLBE/fMhFs + 6/Ow5lCeVUxulW/b3GWTL2I50CO6lqPJ1iCPqoSPzZCN3PENsJjx7Xw3AUFWQ4MPkIvkCe6BL+s6 + h9rfVF36rq6vfcT2B3vhERGGgD3HqotPD/eBuMHLE9rJSgfHCRvsO5GtX/lIAuklK9UqSAv7tZki + dVFyWV4e+HCX8vL4umV5eUG5Ul4enyoDw8eKgQHuyahSXt6HEXt85LNIZ3v8n8vrd0//RbpcwWt0 + OVtW9fO/U5SBynkDtXcrNVlQhlcgma8Vu/o/MK8wNSuh7n27S2HLf03X0JFQe8+GWizHzQiy/iqZ + o3pHaKUDXBTNd0Dae2TpJBFV4rh477AOyaT0utW2lZRL25ae0rZ9/+o3c9uKOs1hWCrE4T9/GjMQ + akcx95gU70AXMKvdCLVE7Nz36a5m50qToem65HH5Fi/tU3c826CXf3U/XyS4rMNpKlzrwA6aQyGj + gP+r7FbM7+CAx2Hox6WdXPtBxq3uxE24NIri4AVegO0jfvLuw8u3JyNZD+dPWGu8c7d3s/WUfFzy + Fq4dj7ziB7hw2rjjc+FYOra4qLq1ooDoGAUMj65MG0tUETwpkztoAptdB4H23lcs7pjKFP5okg3+ + KN9nTCiI2feZhHkUca8dRB8JWUBZ7qBL46X/OZccHjpqlFOQyyK5Rdl8tzg8NkUcVmxifdLt/DpH + U33gQTclAwceAT3i1shoVxwTyxmwoIXaiKTK22FGPOfi7fjXt8PbdbYTrvZpthRYox/PX6LNA/64 + FPhqEymsdRrLYwxoiihd4cUVY479FUyvW13BknLpCqanEhP6/ZtyugKL/cjEhHa95089P4p4NPIC + h4XyDv6AH7QxCriODG1OVCxObrHQLmiIX+AhFqnDJgYCXn1phievrk6GZyWk9q8zGZc/KuDobUx3 + B5m7UO2gFMm7HSw5bKAtBlrcKtzo+W01XaJWqioCNKD41aBZcxbxwA3KAoRQSdnIGy+qk1UrPbCY + RU3+IqAf+W7ZzvOxfnLNilhRU0AO0IxdFv1r8PCr2f9iDnD7akHEZd5AfmzR/Fm43BumypY7AulY + SO8g3twq9wFMKVBdzaakGlJOatoCndBEPAaBlJwcB4sLB9Sy2VeIpgutVlzTv2fJGcqRC6no+B0o + f2L15tOZjBCeoiQMe5UYQSsT6Dj2PstzU9mFOlIj/VSAeqtzQ5d015xEZG1ih1sxxVZBS92gMsnj + yu+ixNLrliHBfo0SS0/pBn31W+UG5WjOq4QEMy+M/DgYMS8CWSQ2y9xMZ5vd/DPmP83Q2bYuZK7V + nxj4/+lypJmlsEzMk5UMEhRGDWh/OZ3hNUcAsnQm6QUQDycCPjabAwtaYebVRnHwV1fykny1q7kk + 64djxmpEbsMNxmAPeDysXJOrlmloSDf0g7KOXbTCM+aHccQbSkd+zuaV8g2BV6msU6E2eJzLNcA9 + qAM9Yx4M5PcUr0H1zR2Mv57vSYx2tGxDg+w7Juqm2QbEeOscj8dZYC1qpiXWqsPH4V4sznTrJrZT + H4+iuCc38RjSzXsFa/359YStdck6vI8eyLYMGuVp0eDQaVX3UKAgM90XiI/TCTCTmtjCZcoODLBM + eiYd3+jqWaPMTsDJOszkLp2vyKX36d2H4ZPLYkyJJov4mF7ko63a8x3PqN4oIcYr4WZzJflKyQn0 + hMkh8ImWOch7TjYJ0Q81vsdVJDUK1bbj0Wt+irimHfadbGO78VQXxs6TDxVK643MhBQASeI0w2eU + 4tyfvHunEuhPhk/mWLK08G+B8cRBZPK5czJoowNkjMYD7F5sYLgCe8SDIsdsHyhN/dF8iGzIIyuF + EPRw+4KNQJ9fG5U6bGBQDqP8UEBUvRugbZIPaoUEm4Z7zMhxvG9qa+/D6pY+mJRNZmwPZVX64dv9 + at1hrM8bQl/0YRbo7WKJpF7Nu1im6XVLvZrXWKbpKV0mH66vvWqqLW6FcqptyJwgHMEfHFMqilo1 + yDoqHEBpXqAQrlMQ7z/Pd8AwpFYlX3/y5vXlyfjzTsS368o5GWypmXCUZpQSiMoQSFKz1V0K36Rw + GdYw9H8TcEwesIiyeH5mkQwdyJDD1cevo1Mn7IZWT22sweplFyZWPT2kfTtZf9kDB0HYxIOGurVD + GWWHZ1Y+uUCSJBlFvh+CDncywG5IWg//OuCXTgAMqsjLC7b5cpXePSLUYYSsgvmOBcKgm2Ypagh+ + Tdsmc5/MN9IF97prK3I8R0FraBoh5ZGan9I2RTU690+TTEOxp9FhNPz0+t27t0eUas/VzB8KlXW4 + oNoXvpYXkFxh8rCDMayC0MhQqIDiHEe+B2gr19d5uYWjqXDfaoZnUfCyM80udyj3xSnHc4dbdk9u + +X4MMtujwALJX44cf3+CdRwTnF7lfq3bu8Y9e0j0b0w1Of7rynE7pBfT61aSsqRckpTpqQSlOf+9 + WpPDQ9iZYvQvfz72Ys5jPvLiwA2ktfCKODrVJ3zy9unJGA4NFfuVxdaMOkIEKJN87QNqkvHIDRiv + oMOoAKaxzhfEJZLDgi+dZphVYEqrvBSXUYD7MLrpX57Wk4SyBwIRVKMvQGDz/1VO3zFRYfQoy6We + YW1f6fvqiZj50RD+4PDH9ZcVW+kCz1Jm2OSRB5LE72pJc0T2M7Pgc55Fe5Nuv6F2JBxZyXpOOVMi + sgx9JWglf3b5+4V4ii2lcqRFgk9vPua7RZ43UdJwK+M+LqYTHq2Q6SEO8TYd4OZVeoUbxl4fecKh + 9Bk0rI3N6VbMxHdcwwZ+4JA8V2VTGhJUOUOvOWikxUl3LOmGeBTPlwW3aR+o5Uct2NgPbVPSJAUe + JD0x7jtiWbHn3Jh/v4Fr9sdonPqGiSgaN/0OfHu5gXdaA0fqaqW4nOIsjfNtZdHqC8I+pvzO91dO + 1AErmV63urgk5dLFRU/p4npzfl65uFzGSmkr3vOxyyLuRiNEz8SAUgMrOZknQmQU2xDVQOFjuJ3D + 7/Atw9X9evd1NjF+PlFGm/kaBjNZ5TjCbcRmDcTOBLdEqQ953GRE+dXJ7W06zV1nm+E03ZJVVJYU + hjO12q2BK8GjordK/T6WmMLwoSCA7aazdDM4f58XMvKcMMa90FvY2E+GR/DLNGDXyoLI9l/hRiT5 + U3YDzsShGooMDavdEAfSjLwohwU+jla/hmgqSGIR/gWCiRDNsMLBQRFggcR1YmNhsEERXcSvA98c + s/EkWd9k30X6FOVvHoVfSWYYOLKzafbdQFU5yCQe6/I73L1grFtVzLyRLZCE7sRAklBPiX/+efdZ + mhovXr6WJv9icVzC2hhon0cRgON/oO0ACYgKOk7gDHpCaKGIyuxgUQlpcHmGjyNDtpLq11uLQJ1o + 7BkMwZPn6BzJdKH8hq0hVc1DC0OTYnaTzLfHEKQMKU1Qf/Qh5HzfifKa01UImC4305ElgcnUVKPM + /oSos4NCoBvG1Xs4NRCNxVy9yea3M8yFTRDMyc5K+whisRXrP7YMsiPKnPvVg99PhfOefNFO5GpZ + 59ARtt53rrrvAic8xaLeHW47amJ718kOjJuOnkmI9VUmMZSL+Sj4eUrhfaLsGSeD4mMlfl8DAfzB + JcgkLi47F7QwSmAstFinm91cGJxEyKzCdwWFOsk5IzbouimhM8Gvk80ko/Y5ddud4zJXSqWKyFj8 + Cp/ZmaTM4FRONGrfkQc9Bu9vLHPo3jtuYK/G0ut2OXREuZxDJ57KHLrL92WYIhaLvWXm0I0ZRlTy + EfNBx5X212vYavN0LG2a6ENYiMSrVbbZzNBcg8qkLhU43aUqCmGeTL5oeJYUMfqkYTS3B8JWXiRI + A1VPRJ6FGSnCpUol+GYOn1KtKGFWIi+hHZn57Rc5trIXx74XlY2tSotS31cf0x+FUSMEeAPhNune + AAUCbcCKdI5AlDuUVUZ7ybYdAB/ZRzOPmXDg7A5kK3GEq/Rb1PYKmOHecvFmbUic2qI6W10ImxN/ + mFJVWyo4cmj8U2EzyaOUDzNlqSwgN3C7RCvh65bRSoJyJVoJn8osoOsaiFcfZ6ucBYT+qZCNGEc0 + ImbGK5nQSXgNEYOfZxMQwzazOWw0eDjScyDzR65na4S8gDm8EQdeHRARswSzv96hR2GtSymn2ELb + 51W2z6YGkbUrVD9zYidglfye3mqoYx09nJh8MhB9VPxja0zZBA3eW9iXTxDVajd8vVvezk5MpuAF + 5RyiynfUlkb/cUszwH2lw67CkP2VIn0MFz+W99MemINAMMR6CYG3+yawFId+fHDKoSgYivPpvBPm + v/S6Jp7INtaxb7ILM/aNHpZzT3TSSbGMlXpYJIbljQJZkzbmhDUmTBl4QTYatS2q/O6f2f0JH2qW + Q4nTAGewg4wpXrfEaRCUKzgN+FQVnrkq3y8gY5bquaOMyT0WhHzEPZhYWUpsMtuMQRpcmgHGRYam + s5TLWEpX6bp6JxyZAep5PHCdagZoeYD1UJiB34QDHkd+5IesdGPkCdgNwEqsApdYGKzDWRgGZZo1 + QYet2AtBifyocNOoUQ8uDlglKiIC0vxKYCDCOy1YGjrYiiIqBriltHTKHZk0GhnZgY1faMUbAwm2 + 9+oKLzuyKn2FcQOnlLW7ofUBZtmeoKaYAkis7pFWH1oVWfyxJbc+GqSFgTyytKcaT7idgbE3l5cH + Yqa4HCRaEq3/PYbH5vqMhQOqBpAgpsSJD1ecd6g6Sa9bXRWScumqoKd0VXw6fx1WvOpRVAoH85+P + Q84Dxkch99xIJk5gfOxLHZL4JAiHX14mJyYOzL7QwmLZWXGJfEo+h8crFkXggAKd2rBG+ozacmVB + UMH8U5yYsYizClDzoRGVBm4Q95lNr/qGecNyo095dnVMeCH+2giGg9VtCIar76xx+cQmL9XeKtU7 + C5pwkFVXg3631AB3tw6BiKiAsiPx7Noi7ac74cF+w+A6kWgNNfNoZXUo6FB/AT3MDcLqIMuLfHTa + aZ/d7Q2l9hnjbqUXoWCkha66h779vOTZuDpptbzMcjSH02t2ifWQhtl/mPpDB8U370V14efZZ05w + iopsFwVcNLHWv6kDU/0Wz2Tm2WQrr3HoeZXirCzHoJJvk5koUv9pLFd9sOd3kIvm20Tz7AugO0Di + It/M8d1BJ3wZ66Qaa4p7gn8phKVDXWTrEYbSSS3qdewLrq0kraHia8ZsaOPYgYrMMaWPj7aOHGvD + 0u27JDXljVyKVtmzk4/4rIiAco4sytJrFpY1Dz4+Pcp+no5NtvKZxGbeLfHEF6Jmjx7cAaRbQiJC + R1aSenHpvWVOR7gV1caS2+suiuxePWyytlaeDJ9IECBRzAQuthTjak+MDoCpMzcIjqnL2Cc3OYAb + WFgnrM5pl+jhvQTVnmE6bJSHpyzsVn1MtrEOGpVdmDGj9JD2TK09vn3bwIoutycGfdwyXhT94FKe + cPvSXF5chF0LuakmdjOpOyhMpHqmcvv18oM+uRyU/12ggR4OOCKWk7VHUXCNyLZ0+TWdZyu7eJ2/ + UYSe2g9UwuK/3jtxaO/3p9ftci+Jcjn3Ujwlmfv6/JJieczsSzfwytmXT7mHQbEj7gUsKPn9jWw8 + YY7Q2MgqSud/59BpFV/kOF+M5wfcif2KUa28v8b13SzT7bds/aXYncdZ2FxANYCDELNKd9XY3Ean + PWwe3lwItpX+HqqNlkeD6qMCZHml4bTdsTBkf79PJvfz8UV2Lk3bybaATPrqSk+waX6DNV7eauPT + V0S1wSdjVSNji7XzJrMpFoCFVjthbVnPBDy3vDlG6uYTXCFZLJL5LFkOLz9dvj8Xtwj+7YVZ7Guz + ugMRLCPwbMM9lyzzqwg08M+fZ5Mv6LK6fHudJ4sGrkulvFwzwLu7QwlrAwhHUP2IOtXYGMjdhG/S + JUqhCGoPWt2OuMmbCHSNEw/dfHa6B4RbB8/3iSP+7+Qhe4Db1WGUbFIk1UPOgWDtddLHntuhXbRD + vuY6Di1HJplXzrq6ON9Cx1Oyth8gIlPcSdaWbWxlbdWFIWvLh3S7A4W7BodnsaLvGs2S1Xev1qvI + fA8eiPh1zmKJ+EQhVoKAZFBHWuBsKTaX5gkjQhvCGC2RHz4abmGXLEDxxM1xe0Bq6M8wyFMiTP4V + nTnM3lrDDYr00SWKqRYXoWO17MDDFVpfHTL3rX/KWKczRk1sj5jswDhh9IwO2Mfzl/C/twq+pXhY + 4Pmzpt8KpPE4BVRBu7+oEgluhGWLLGj9xNLZDxKaeJiGjzJPTN4amLen+xF5rHlaN7Ltd/RjgTpS + R1FHf0buqRN0sYeoJra+J9mB4XuiZ/KuM/L2Zc34Qli/8iW9d4NBl3cLfaPzCW4X6XyiHGExh00h + aR0cTxbUWkUu5COCdxif1p2eXW6H1eH9uWgOVJ/OnA5C687XW63z4QvnR3SUJM3OgrJPLAqb05Vb + Rs2xXzU3lMmE+XhROd7OtjsMXAC9unmQ9rzsiE5aGQkFOH98z1hkH7VGr1sZ0iTlkiGNnpIh7eXF + ZbWEMcebvmhGC56PPYcHPh95ju8HXosZDS0e03SSrFaiwuDn4QKE2s3ITMBI5vPsm3h1Jar66mTP + iYCDeTlZId6W9CxuhglmPmUqRhAZ94fd9tNwkW1nn4XRYpN+FZEGyRxeGN+lc2Fnl1U7x2vMyxMv + q/hq6KC+Vm1HKLWG4DhNCRZ9UZLpb7KpGVrtxC5v6oCDYBo4br2h8NAovtyWRqhkCpGvIYrOiRyv + eQaYG3tRXCYsrGLzxlp7QdhYa49xLwqcGty4qwLculmRqGSYLKK7FUeXh6anyRRDYsVJLAR45bvW + xLiLzXTDQraS44P0Gpbj+o6k3zS7mr6YCvSV1SVHwjFtigyMMEUh/tfgQrvZNibonTh2Y3E2CoOV + m0SyZpXmuk4X2VdZxdj/BwxnpbljKi10eO5FEe+1TJ6drYHs7TqZipk5E2YQqoyCVD7upsDH8p1D + NYIHyKB0OW8n4OTYj3IJO1mPVTjRDfAgY3a0/C/QodAMXYiAx0/siiWEq4VN9q8xfFXj8KwEgsCN + qdjBQUaBXMaijM/6aZHSV3vYn8ucKKx+NJzFYz+71ogbywiTfTy0H13sQL9636WVgYtpkNoDi0qE + JFQtWkm0BgmGtMw1zNvm+zu132NIfTwlgyUd33EknfDNE/8fJ6vV6mMhbaG7yZTyFd69ZwGzd6HS + 61aSn6RckvzoqXSh/lZNneaOa6ZOe+z5U7iDXBcEP4ZCP8p9b4vBDL9evVa+0tkcqNfUYugsVxn+ + 0Ufl+tO4AiBPUTxmR2ahfegifvWPi/eO79lvAHrdagNIyqUNQE/lBrh8Ua1BHcalCpo+bADmefHI + hftICv7XuxXCXGwIvvgyATrEys9AWphkWCQxGV6P8bbA1DU0h84EwHjhpqzYSE0nZeBc16issHIY + VKx8lRV7udiH16ubKk5ybtotbcJG4QsVHZdVhfuusrdBJ9/M9d6HegEcZcz68tcPQb0g4HqIWA2y + unl+ytNeSk3xmsXlwlhzakp1LiyuCePsNcIFKIqD82n2Id22bS9jd5W/ADdT/Y5bJKjvK3kVaYqU + zzc85nwoK4Fukdo0E77y4Wa21Z5/o04adYo9yWbJzYasD5+Hm+UV6NbD34AqO4MGxvE618drg3a5 + vPC27wskUpgfMoLpoWKz99e/jUWPggUBo5jMNvJ2E4/zEPzhk2v57mjon0bXQ/qrInCyX27T0rFE + CjBHomn+yKEc51LTki+jyPGCr9A+D7dD654G0YJWzRVadc1p62Ij/Rn+kC4uvUPdcO2QbwFlnIkV + eLJbz6Z4l/F/jH8dn4y79NJWElWiolEftzsBGHTS6RsazkKPng/mSMQfOGD2Bkt63RLxR1CuIP7g + Uym1/PpLte43R9+/ifgz9vzId+ORFzDuSbkFpx8Y9SYRXFkx2Y1i14jmNZMpbbfr7Nv2DhTbz7i1 + kEVLEyOoxqsU8RnX6RgNCjNhsTxXzinJqJUokn1pEEXsBYgIsaviCgRXb9A+5x8uc5vIZnYLX1+6 + 1Fkcu6aIkNfoVqPTgD3fQCVKRZ3t9LuYYByZmmxpMKpMrpo1RFfDzkslQ871djWFxIaxn+nicVMF + 2ybn/KwYLofPF9kO6MONvp1t8tRf1f3li2vmDnDHaSwgj2H0m5gRIfU3zJ7Nyf/BDFVpHowA6H99 + D1/xz/G59SlWDazOsaZeOsnquUqZ/2SqoK7ruZFA2C3qoOHzpzyKPO6M4A8/lGkY7wSGmcBxv7kX + 84sWJ2GFwvpdk3WWrNfJ/RgHNB0WNmMCa3QP995ICGMIq71Ix98wO+guW6BmeA+HPVlP7nKV4o9s + DuP+Nk7+LQoN8ijEan56w2gEbhafR91yLXUb29gT1YURfCIf7im0vbnD4FMKnpUIE7C4ZcIIu+3G + rM/QE9+XifBYGl3hmSqvVgfh6icVN+sW4WnrNO2QbNB7klD793qRLNxwUCVajwqI4FJntMpHxaRQ + gb8GaiPxN7SqL4cXb3F6Lt5yWQFgJAKd4BH8cQk7Al6dpCvKej0wxIy58mZgAbe3SdHrlreCoFy5 + E/CpxHQ9f8kqaR2eV/ZHw43A4M9oxJxQldQqWyVHJf/Sy2TuiwpI5FhSjxfJ/8K0fE4mmPYhnKDy + d835YXRVo6bezYZf0ylBkxYNNVEQw8VdZvu1gNEGw+fMt6Jp4oqIQHzDMBOxvWPLzZu+z/kxhQkG + jyIyW99gOkAZNMPwlHVKYcsbWd9hqhPzEpNPabe+ej28A/FjIP9Um07eZSN9Z69BLDCJ4gXGmLjA + XNcnrV6HK4GMs8L7EScLjnr9VZaLQqtkCxvvJ6r2PzbU0fcdapDMJ4dVj1cbSgfj8vgF4513lG5l + nWGquzFzTNVjVZxpPSuB0BcDcPf8bPaDuaZoYCQuQHFlhUT6AytyMETdwyZwAwHHbSNjXQnTj6lW + HI3uRuB40983MNJRcdR40sQ/hfgwa0XBa5f4flyZjb/4ucsbWaLW21dA/fn3C+4+7vjm7uuvJITe + 4bICHx2a5xLNd3O/2EvWWvQTIc1/XF4x3sEfTa9biX6Sckn0o6fSGPD2Ha84pH03LJWli54/DUNg + IuEojBweS+EPGsvowxliZ6YF8PjT4adCIIr0veANqJwvGIo4T7+mcxIJJYEnzBlHH04Ey4BJW0Lb + 7PPnuvZYNU4SwEYBNCoQOh3+tpymFBe5yqS5ECMb4WYXpTvhs0Un8Bf3VEH33c14TYBiX7YGWaqd + bMsIKr8QFu1KgL1BNTapGvKjC336ZceenIFGBFgn5txEgH11OSqYFjXZ3LaIyN4FRgAnVubfVj4l + B5Skj9oUw80SYS5SMpegisvgqHVAJxycwXJgq9wZxe8ZiF2rpGbcsAP5YeJ2KM9A9xqBin0eSLJe + 1PMpURHraCYF0bFDkpiWrEPJN0Df78I38HVLviEoV/gGPiW+cXFdgWjmPo+qbCNwmc+cUeDippL1 + 2/RBktrg3WyzhQdwBNKt6XbRoemkFq7WMIJvq3Ld4I+7c9eCyBZ2pvxZuJNVi7fuWR71fPn25fAz + iKawZ2WdEtGsBHSvndLTApXBx0+/apt1wF3/r4JfzwKfEqfNOWzwdzbWaX2UMtUDGO9cl1EOr+W+ + 26sheZ4jWMNb99lbr4Vgs8TRhtzZD45WP3W84DBQhEDNAQKeOcOaP51qqxwbaag4aqSSy7zXwSnz + u2WXyTa26WWqCyO/TD6UNcC+zZgM+0MDMRlzCztKA8wWFEk4/zCFq2S2HhbbDNbJlItSYE4UhaRY + ckpbLrToyI94XIJ4G6ffJ7MN2eCRoGBHQJIejob+P8ZYSjvddIygcII4lGi3uYkFSU+ThfAnb2eL + XW14Qjtsok9cRwgkwPq/pmtyUm1ryp1USNcGUDMycjRPSTM7sM8A6yNZ7idw6a4WIwz0xLc2VC9s + gzwQ8exw4bW7GDf5NAUpVCe09ZVDG1Cx0ZeHR4UHlClBm3R6BCXPZ5Ge+CNiaYCOBgE5klZ/Eedo + QxIXUza/393MQOrftl1Ptew/JshDdbfdYfG3bDpDBAYJgNrt0lT3AQUKv37vuB3qxdPrVhK2pFyS + sOmpdMpcfDJDbpjnssgLSzE30fOx7/LAGfkwGVIvP0f/1ai4y3Vp9mIcB0JvrRDpRk7VSGwPcUqV + nx59O+sCKiiQylMKSSiHzqrRNtf/vGK1kPROxEyFtpA4hthTgRNVYn+FO244EdkybQWuosaMPgyX + QVT6BspYI0RABCbbyV1rF2EjHFd7F5+Bx4jkHsPJFJklADFtrGJ9yASv387mmEwMx0KOztiRJXgv + 5nWeiP1CrNkDb0RZc2LGYhW8nBs/mpN4DchZ0wfnOLXTk5ctXIllu9lNVXCTEcLMmGno+HA5Km43 + Yy7yyCyNj1/QpkqLuE4NiGVjizhupUhATQffEviPQURgljbGYjcVHmCYsIZwbqU+YE6/zKqUYHH2 + TGmBA5QcmfGe70qxqNt8trlbqIXN+QuCAO3ft9zE7qvp4nvD2KI9Y6vTaw0Xsh/abWhNcbbJ4F6D + /dey+0xe8ebdyG4HmlgEsyVw4BkInJO0HErUVGWjYVOoChCbFdywc5SDZrBSNBktPC9wOm4+jWyR + TjCipXSqY6DYvlhthS3Evd1epMNvTHCqX8miZpFtFjRF5MQ1CMfhnqNjlGjeu9tDVq2SYtJTKHbN + O4B13AGyHFXBY5Yg9GHLHeViEl5zJ7R9Bz9G3higRKQzwSLfH8hjIPT/xkPzzCLZVswlvlk3513U + VSx8K+TsMjNsO3x2I4xzpH/F2q10N2go6wyWJAn9ICutU9cemIS0QwCxpYqDpOVObmtF+cb8EQvL + RH3WNvm397KOLqVfGoq8hWTE1zeR1erh9an0r24NYzK7tXApWzpxhQ4FTn5NG4NWWnY6CiVi0evF + GatB4R2Jb8IVKlQ+Qav2ZrUh182KXVvx2SFbvSWftBkU6gzi+Okq9jRZzWV6KsYQWf7nSDtzzqE8 + rtZNmI9wlpfp5EuVQdjxpYjgpK6/rVnHwj1HB0TY1KzYU2SXTkWtHmi5vGSAKOqoVg2ZvHHeLbPI + aZ64FsO+68sKKx93521eg060H2UFj+NrMR1RuENahLijLEJeB/h1et3WIuRV4dfpqSyL++al6XNl + AcizLp5n0yL01EP82pHHfRWmq62mbz5daoudsHTnVRCu7rI355cnqhju7bQaC6F5haGnx24zCHoD + 5npv6AQw6NI3NQEq+cxphvzxY+bGTlmgXyCnltRL6UZ0N6h0A0Ow56Vc7AtD51NdDYjuuG0lMADi + Yjrx+EoIx/DYXw1wF+RSsBcKWHBGUf91Y+t22ELu1bgY8hSrCdxjybQrQizOiRif9YwW6VdqSx1J + b48XuxdAwoPc0jElo1av5r1Cgu+QR675KHT8Aunhbj9ercNSfJPJ5FW3S6wKvW6ZvOrWxKrQU+Kb + by7fRZXkVd+NysmrTxnjsR/GI/gXiDUyfbVQSIDKQpeRO2UQiioZrWKgZtN7ODEYe5bJvZgAA6jG + o0ynm/a2T2D8GBEH6u1a4Pgt028gOKpoKMy3lEPanA3vdgusRPDuzfiXXAlHYBDFMmHHy4Q7yejf + rGZRhdF3QFM3rAWw5C08NuKsUgodPm5M32ZOUi0Pd2NeRs0oM9e8j9xMvN0mE62JQ4dD1WGm56hU + wNYv9VLpYfC33RYDPC468zZ0BdpF4FOESmHyegivA6qRluwykR7a1RfJKTLKZon3WiEOKG/+n8oL + z7rwCptrECEzfbnXajlDZ30GuUYbwc7YDo7HYnnBb3BrpRQuIj4+XW33Uf0R2o4lEeugiIhT6v3R + 3weEvOrUHUu2t6AEj0cE3TgTie6FwnHdVkJJP1zFlfl+eOrwbnFlso1tXJnqwogrkw9bCuJVq7nl + pDBsLMbSj483wLPH0CO1aJSR++aKhV4XrAbVwEps1dRLgqt6LsOsX1x6VayGMC4FgcTPn0ZeEPjR + CP4IFfDKD8VquF3DuP99sBoCkIs0VgP3dFlsFp8iikOXstiiiXVZbOrALIstnqlSjZhtuL1bpwL6 + r4TpMqCfnzX9PrxcfWHxYCX+i6Uc4ziQJQiCqHihYDZERsl8Mq1l3Whp71CZ4PBO2s0PfZlHekz9 + 9Vx5ER6Owt+bnRZ4hhFFd1TJD6RmfFhlz9WQ3+9nOITqj8KneGxFph9d7RaeZ25zUYjZ7VgYmBrZ + VwaWnZRKA9NTuln/vF8wXbkMKyMItFRhfr388O7lkHHHd5gfnAz2/Y6UROJ26LkycTuMDCYxyVar + dC2yEzD/L4PNXavqNrrFo8j02ekkjEPI/Xz8gq7x4Pa5J+VPVvsvkEZI0Iu6GCHxdUsjpKBcMULi + U4mg9/51FUFP4I+XjZBe6MJeGsGfXhjILJDzzSabzETWmsg/08V2YBIUuCQmW8Ika+FIhnKQ2Ixq + fjbF4IiUwMoL5XrOVNyEBIqj7VqEdQX+ukZoNx1aIXf0Zjf/jNeOvLugfSbjfDa79Wdg6SruB2Z5 + N0f0PhFhgpb63ULl3FEsCtFL5jmK3/xzNa64v2ohGAUiIDnNiFyvBVE4qKvm0VIhozmksEgqD9qs + 5xJmpGPYFtIaBTxyWTnqqyYophoCCcKXZxo96+IV5bgHxY/WpWuF2bK0T9Usw96E91YZKhqwFW9K + wMByhECtujeLL/6Q3VnciwM8ttoYGnNX1uNqijbqjhHb321xDJpZ5JFwpQ7FXpZsVTqhrqvjay74 + vkPfmM/TYR798P9u6Fp4zyKvA7CqeN3uWiDK5WtBPJU+/cv3HjuvXAwOCyvQqsx1PCca4R+RdOtf + VcrJvfdCEwf7SeBcn1QhtkcFAxccyKvV3GMvyM18l2xK6f5rONkwzGr1ujNxttYzPNbQa7ac3w+5 + X1Dc4NyvkXRCf9wMp9kOpfzlDk6h3MCwt7EAPAbOUOSBaFDL+jcCLrCptJoMun21+wKrkJyUOXtj + iR7fj9FmYJ2xoNGcTX5vRkE0dVAJk24EasBCfWWKg7/biiMn6PWTzn/yJw3UicYvw7++0NcHF+lu + z4byn66nbpP99RhrY1EPLuRoeVPssaweU42Q84D7BR2g5VTbzMWjKW5Yf+M9TB1DrnPWWejEnZPW + VSNry6PqxLQ9yqd0m00+byVO8MXlaz31UmH2AhZGnJ8MMP30K2ZvgwyG8STbb9nwAlo+Q/GjUOxK + /X5xef16HLpGtjv2RBZK35P1wUmMWqgQ7yKhI2ySbpgXeNIDP4beMfXFfpYXJvLC6iQgmy1PtIoz + xC+Wq9ctJjjyaqZ7HyUbKFsWRDGlZiynWW3K+EiWxcTlcP8xVnBN2TJLNyC1i0lbZstxs61SHcxY + H0weweng3c4ltbE+lrIL81TSQykkfjwfl5S1wW8Mq598vBxrhU1Hiwx/26wYjGVHf6AHkDECjnDc + uJCNvqZV2qyAewuXElyA9K+0ys3yGL4j9jCh/4mBD39jD2Rs6s2q7gZhTkhBHx5cZm6/0tShsO6h + Kpjc4C7FQr+9gn1mb06j1630Jkm5pDfRU7ppXv92ZZrT4JYNeBCUCqk5z5/CY9i/I/gjDKST7DeC + wVROJbx9jZD5USGKajP87cMlTQkBAVYtEgUAtE0yFxxrlWzvviUKzvj1bl1jyurLL7rb8zX1oXRe + 5DVFbXMWxWFUBjiu+UpjnIG/j97gh837ALeHDpIGGWUgRyiMHNVme5nC/qhgk8Hh7OLP9mtjxcx6 + IPvgwUd9uI1yUpTXV0dqpJ+KZCUVKymB2jsyNBWkzAPWpcIOvm7pHxCUK/4BfEoM7dV/v6kA6qHT + s2IGisPQhzHEYcwd6cF69T0bs5E7voFux7fz3SRZitNUyb4VqWeFt3QaGrkOblIZNpnqEi5l4Fi8 + 4xP7wFTJAF99v60H1qQRNWafOzEPmyz7YRT6vl+p0CM/zJgOhCRuZoSuG9l00SOAw7uLcg+Dx7uE + A9yZ2oYRBCIe2I9DUt+T9U2GMXfCr3RcQQ+LlNK2lBD7xhZBikeWKBFTZAu9vAeBlMCoqOoKBUvm + n2hzaRwZMewyTpaa4rbqjtjcXyURPK/YxOqg292qR1Hcg7vlU/JuJSx1JJ/d/4m3169jfX8JDrlb + TjuHwvcUAYvl6qOmMeeVUfR4QZPuOlbPZYEsCbA92H3jclVRKww7VtQSDWwrahH1akUt8VxCdX26 + xET2cv0UhOMq10+JfM8NR/BH4LmqrC/ZOb/o2ig5lAUIWK/Za0dEAgnRWNwJ3+5mkztK3yCjabr8 + Ez5D20cMAGXdFG+ls2FB3xeGboomgF4JM22CbRY4kmKXCulru2Jx5RpHWZGsIpQrjwtpNJbDGsFf + diuRRCjtOa+fZCetThuHh+UitEV/dBz5IQsrjhtVg6plSPmGXstNBTO9SGH7LGdmbIEXlKvwNfSv + xQNjwumbpXEFdnptlRjMKbL5zsFfYKsMxFlQ4kLoyvSh0C9EtB2fN3RgfZxCe7IeGSvSjUvimqlP + sljuCvGmsqF+HOtYzAOGN5DHRlz4xu448pzafgA6luJS77YeLcumezIGPLf68bPlMm0rhvaAKVee + z6lSdN8L0FwcwwnzCxwYYb7PeyyPcTTysqYji3pWR3sI67ayVCgJwlVRqfGr+NSJOsWkUhPbiFTZ + gRGPSs9IgkCQZomOX9T4chwk4KtX7y4FmLOopujyiKoEAZMVh12+CroKze7kLp18WWUzS5wapKNR + byW4cncSxBLf8GcfaAVnKjhKwV/l6Ir7vSmaWx8NV/0wGNIOuarMT+pEIPYVpyrNTXkGGxfFagZd + JoGRhPVyfN1MziLA7MeXznU9itMS9dii4NTpFjxOTayryFEHZg058YxO5/txslkla8Q1wybmP8X3 + lh6Va30pYvDm9eWLyxecvQpPyc/Gqcrls6HrBoyFMpjcp8unkAxzrJ0FSIr7QY/zeNNN4FO9+AJJ + VPT3kLT3mvtUbEyQ3/Zga+o1Bv74wi75QWE6FrTBwrNH+InFV73J5rezYbLCxdjuO6XCX+EQlJSx + dX9WKq469yJp5I//unL8yN4oT69bKfeSckm1p6dSsb+8rhjluYBkL+r1/PnY97zAC0a+5zuY8y/c + 7imVt5BW2M3sdpGUwSEWyWKRzGfJsmIlnEDju/VsWeegf3J+OeYnpdo456tN1cSOLw6TabIqhk+Y + gB28ub4URnsH/KHSMCXIXl7HvV43Dli8d4SDa4EDVJrcuikszwVOUEFLLspeOtFMSqHJts6ajrkT + P2adB7gZlWLtRiw+plJsrglHCsOhwLt0SP+hurFD7PpYOrj22KRlqzwEwWaBqj+7vh9TccFJRkte + F+j4gEqpi15xozkOpION4RFB+0V+4Nfutu66rbp5AhXAxdkLkTPYLbRSt7IN4sq7McK49GO6UQw8 + W5gLmX+SYUHZ3VYguZ4MSqC3ZEAwhdBifxje5Tqy4GwPZcY6BEI+bE0zl/vkY9DQh0fCAbfbeDwv + 3vM1XQ7XgyhZHcoMHaSuOZalc35kIZ7QqSm+Jw9FH6WCDqO/b8yesW+rm7TH7jxXck/1zWPdb/dp + V+wzVOp6EHinzO+krlMTW3VddmCo6/SMWOY/X6LJKIWrTUW+XlxceeOP2bZSS+0i+ew9+zD9yoqE + URP3eSAtbYQMZFqWCR1liJUit+myHjDeej9hfEW1i8+zTX3dtC7Mllf36Qw+e2YTWwHNxZbEnZgi + ErZlo4e/TQaPwuFQrkAAQ8x221aHgz0zPoj8g4qOsjobnaRfPx1f2A5J+iWS6xagt6b7x2fyyyRk + aYF7WQXuu5FiXO5rlI+6APnoNrasS3Vh8C75kJgXZgmla1RHU+Edz6THVPAxnTNUiDnT+XNbycVU + H4hOAZe6ZGMEm17ItDK05/S70IPERB8vSxypoPalSnqcEwurm7YD2c7fHA1Nn80gkqhMqZq8UWnL + wE/A/DdZjdS8fyrV2Ys1REz4MjxlrIvKlTeyhohRnZgQMfIpnb9VBvcu1mjQ7yjZaFB5Mnyx23JV + 21ydUaMjcQZRGOrZ+nwIwp3nyHhnxjokcNDrlvHOgnIl3hmfKtPqhVeJd3Zr8FCCyI/CYIQwCa4E + titZ186XyUr4hi+F8oYc/4KujrMhblMyTkKHasNinMZ4tljslhlu3dlqJnwKIsAlhX9kq3S8TW6x + dOf5auKttIkV/l6p7yc7H69053Ul8/wgaq6j5AW+zrfIDa1lo4hpXWVN2eZN5HSFzbEiPJ/dtqWH + NOXLmx0Uas5N5qIEBjlmShAtkeNXah2201NuUfT0iBl+pqa66Bk1w6zj5oJYrX3ALYDyFBYwwvq/ + U2BbtyC3VlFSsJMDu1hR4aeC/GwS5h3nO1/PXIDWSc/1ixD4LRXDZCc6yKx0uMaVw/XsAlacLtMn + cLieXZwY8WaN+82IOZsidPBUqwd6iWfLu9kNTN16gzHwk/lOHAHtKhd7DX6a7kTyh7Cxt+2TAbIb + HcTuc1k7jGuFrmGJWq3BWmtzCJ7KajdZUcSFwjdt1viIaPtj4xfIZ4if3Rm5WxzW4qS1H3OrWUMe + Q1ehwYmMCbKpIkWfpeZZr0FDIkFbhR7GPBk733RJlBc2IZH8yIVvGZPPJDagWPfp7Ous3rZwuHFy + j4c7ctpnxFpzP0gUlsl53DxdTTei1bZ7aMTuvWqrx7Q0F3eT5mJ7aS6ulebidmnOq5HmIs7ZKIgd + n0s1920RlPrXq9cKUXi6BvrfKgIXlWhMCtaP5vQxGEJjweaGgkKPAGX4Uu4BuA9VEz0WQlVTUGpr + rFWZ4G0LC4X7vICYm64XAt6A0J1Rabi7n6POe382fPP6cvx5R6qE2vrZBDHUUlFKojLHZ/WbV4zm + fHvLwxXI1iAwb7Y4GKk4pTQ+RPLdwSm9S26hazTEwGQgbA9ZT9PB7y/Oi3dzcIxjeyBXHV8v5kyp + wp6dShEAl6HAOdW6q7pOcYfVHfsj7XV9lHwQfJ8ThzrevepxBbvG/U6wa/C6LewaUq7CrsFT4ldv + P36qonGKsOlSti13Y4fFI/gjcGSA7jmcVBB4YPL8f4wRHkSlYct6Emf6iGz0qZnfKyh14nMqneKX + 2ZJHqxGcmYuXv4hXPr1+9+6XHOCqttXF+S/sTKwhrIGU07H+HyW1w8Qk0+GTt+8+nQAd4APSKgEv + 5pgWZUSQjehJmmVwh7wVIaGCE79dbvtA4myqBacECVNddhuBOBsYd024mRFHFEbNGKEgOTLGyhRr + EEAM1s2CoCEyKWaBB/pU6Uoo0FPhi6XpixnbO8jBv8/+G+AxzeHTIoGXFsvIlZrZbJGIq4AOh1hv + u6Fr9pr22hM0g31oZm0qcU85pq4bxOKKRh8z7OJEb+l8P6NF7sBx9lzExXNzoNC4SxE78brtjRXX + FLETTzVQqOvXAYU6NWXswiDwR8AxRKgq3llKpMyxZg7DV3T9dshI16/iK+awnq7/H1jPeljPn7s+ + cBj6G0A7AGfdAAZqbz8TkJnwDQXITF88VpCZvmMNmdke91pPYU/k548pDfpoYDctql8/EtjNPQFV + XQjvt7Z4OmvwDTt1gm5+StnGOm9QdmEmDtJDCbl5/0WmJm3Wk+GT67fuSV6laZphXNIAV/vLzIwR + uIB2A2wsMo9Cz6HggJjU7mKLZ/uiJ6ghTfJNsoYPgR/T1bauYGIDRB8Vcq8pQG+V4OYzTjHZwqa5 + na0svaCUYPLhioUdvKD0utWtLimXbnV6Sqv34UNVD3Uj16zo7fnPnwZY6jkaBSx2Hd5uN1usgX7V + bvboFLZHYGlT9bwcL4zpZgkp5PRDBprV/P5mmq22WGgI9qYMszwCvuCH6R1qfweyjp0TufZ2Fnrd + soadoFypYIdPZenli5eVBComMhrN8nVj0JejgI+wBJgKf3qZzreVTJrihV2IX5SLk757zV+MqO7u + LsGyUOOCmph+xyzxHE/2s2xxlmsX0BtFrGxBYVVVUUR0Y7ECGUZkiXafZ+vNVspAos6esMUuha/v + a1oI0MeitBcfvWIMh6y+PJlW07YK4V7t38tf1AcbgODfcBgjUL1Cp3qma4VfFDaahN/IQ6Cg8plu + H259TWfQr2w60ee90IdQ13QvJSl7H9XB33uDDfDs6Xwxl/m9Sc5di5/soecFrfTMNbbil8fSbKvW + ciTpBtQUz+Ouhq/bka/gGOg5X1j8D+EjlhJbjx00zzYiYAqpEs/a/bztqHUZfh9kawY9kMysfL5a + +GBXReY44i3b+ljSjWBATmQ5090g+/qwhrqOrMApMbFyZnrIFB5CraFanRdq/Pj4gp8ypxt+PLWx + xo+XXZj48fRwn1754vxKZ1TnMa85TUwuDP1oMDhaQ/yhZaC77K9WP6cu0AFC1ynzuiWRyja266i6 + MNZRPrQpDWzkiFqUCeYBlgkmMCLY+kxmkFJs0SrDIOYcjKgJtucHlc3IL+9HW2D48WYUdMhU+gnZ + CYyTJHJ5/vG4+iA9VlP2idFhzuaT85M8obK26sgRE/7zyzYfulOOLXDcoSLsg2LYKUavC77wN/zU + 6ZS6ottYYwXILkykAHpIRpf57E9WQAygWJ3BCkQNtBcu0bFaDOKR5Zl8uKphVk8G2JxwATxOXD0g + hL7PyRbWUJYxsbGCNdczPjIpLCI3dP0nWTEOX0mmDbiIXdj2IaBLOdNrRBOxiDztA4rk7xNeprcH + p/3auOM76RqcR4UiFH0gaEqu4askLO53MM/S67ZFJ/yqeZaeSvfDq09uTdUJP65WnQAJLOKjOPB8 + X9pn/wd47/gzMEuYgZfVGlNm7YJCid+CDVTBI6WiuDpeMgZjEQmao2JU0Id06zKVj4X/qBpPrbwT + BXDlMI6555QNmS+byjoHZkEKI4UGNDeHV2yiBwM5mFZSp8m/EjP4grhcpQKLH+/WdbCBJQ8Q7Kpg + D+VBp6VugKk5Yr0HYp8WalCwgRy4ELobv9QyHixXMvwaNI+OKsZDwdr0FoBwZPrGntatOQ5H5Gz0 + gAVTT2H/Lds/IEvd5ntcEq1PKSW/XsHlZ+8ap9ftCisQ5XJZBfFUhmj/dl65mryodDVhTYXIg8uJ + jyIfAwHaXePZGuhXXeNYElJsSFTSsNVuviu7ySP3L+ze9iNGBpq/JFZK/WgiIePVL10rCZECFhIQ + IN5DeH+ghEj3yN+oipo6y1xqp5feW+Yg1nAH7VS1sdROdRdF7VQ9lFDnm6+sBs+uDqqu9oUrbF98 + CwkKdAWXc4Vj93jvcWW4+qHwdJzlub4VvAkqc4Q46Mn6a0e3pR+TP7nskZbz1bk8WAXiQqnrzKEa + TQ0dlRZmkc6EU9Kigx8mVz1EWWYmtxDlre/len1WpP1x2Hx2VQJ+LGxeT+IaJpsHzVxAKE9iw7YP + tOnU9CYN6pBXl58zdurwbkGvupU1NpbuxkTHUo/p/rgrSnnK/5iDZlH6pwHGk9PF+wI2YK9oPCru + zvc1/uFrxk+Z1w0AkdpYIyDKLkwIRHooI4R3Wy5DhFuy7hHC40TZgh2fB9x1TwYtDVTc1PlqElXb + wUMRWBxFjixj8B9EizKihdUV2wWPogLC6KJrsirGHDjC9jKRPx7qovK5D49t0VCX3gLSwsKafwA0 + RvOXeITa9hNwuRUXpOjjF1cOC+3N2/S6lQlBUi6ZEOgpcb5fzi+ZU8alYLEos1K0b3vPx3Cdx048 + 4qEbBBI79lNeg2pUSJgREW9wSjEqHMuEDrlh/ZymcxBP1yLdFe6mVNS0SjPYTOT6XVeTZTaqdoB8 + iursSMz5Zri+Hat2EqGBFooiDTaI6/AxueGUc/V2vWKrEbqD7jFMVKEv4GkYEz+EHm/NAORfkhXM + UVNaXikcuBFNI4q82POD2gzqytCVm7jOvh4xN26y1MOW9gJWV42ZPq5Uctmk8+FSG2y4zz3XLRPC + 0BJt2H5yt7z6eHmiDsBYMYTZolygwgkCp9wTFm8cFdLBjdnpv8OCwb52iuxo1lWg3P8Rh9Cujnfw + Nz9rA+JEyhzncM4GcmaKbFZOHvDSrNsVdBChRu984JChr2V/HjXUnqg/UHSBlRjZWL3zSLjawRFu + ktws0DXY8ShZATm2lpn28vpOEoTGkWegyJ7yjlqnamRd+k11YhZ/k09lUaeq83NQ82x4ufvsGkbK + FTwQCpHryExLTpMup22sFP8bmBgR5ViRfUfA7xAoQYYoFsTlaTpJjojH+nlwtMJuw4Uh/+oIQxLX + HKWHqhOHnQa1ZUXI7x+X77nbwW9Gr1sJvZJySeilpxIo4vcXFb+ZL2J0in6z6PlThnC7fITIn54M + 6bj67fcX4/nsS5p79j+9u/Tim+FbCv3eqVrgV19vqqEX1/+8YrUJacAkeINUx7wgdgInqmSkKfhM + jB1ZZHjV10PrgoIc+U2+OcbDKOb86BRWFjie71RCO84JZ74ecCgqAQ4VJFBjWFqWcv1rmPfZAlc8 + twMWw50NscoN/Eb6xeHmonLdjJok3ajRyxl4MM9ltIvuJJtWXpNsK6Ejzt8lsJWiK8Tszu846Ztl + hnyjPjgG5jH09k3y4JWGs9PyS1M4TOHrzkysjbbtnm7OTNRc4J7p4kaCOmn3soyueffx18hRTREB + e5NBa8nBgKEnG7QqQ09lCKfK6Zd45gNkKUp2DZhPAH1HV+V1yaNT++F2omQnCm2RKX8Fj6HY23s6 + 6O42bBSi3YDqJRyXcGFLpXEYD1G6WZxq4XUxz373SGY0zpa2IGxAdOR0ySIZyBsSX7/+tmYdczF/ + uONR3LiNB69TJiZzyC3wbpnlPMvu7Paas+EGYaS42V2KeUtHJFK4FJV9LJ2ecIWPTLXoDfNNCERy + KO1Umg5byGiz0GpvEEUQJGWFFnf4yDyXUawNjKzAnd1/jP1/2O6I4uZWuoDICvnj9XsnCO11AXrd + SheQlEu6AD01NAAGXxh5vokq44IKELnBiLmB2x4193kOFGsAZaS2mD+rDUyLQD+rC3B7nJFyLOIh + 6uePIStC7qPAUTAuYQe4XHrdFsYlrMLl0lPSKS+vLlHUKuO4MF7FcXED5sUj+CMKpVL523IGqncV + We4379lvwelvPgKGjjdoABxidXcszDuC87SBc7gRDjOUeDeYTJoSRImSfkfDm93WFIwn2RL+WCgk + Bkox38iyFPM0EQJwCYvTCE0v9kPb/3K9cqPK5heDH34fGsOv0U69wDcxVAoaROxHnIOSWKn7ko6F + LUOMBRl2W2JAxL1GBctxw9CNyyZ7Zagz+hgNv84S4+tNHPV4byeDg9bZfvVABNzNt0KjwuLedmt4 + pjbSrG0jDcT+zrFSnJBgxMkQVGxRO0IBbphSWudv3vAJ9PKbB+ObnAj97DdGjxg76SJ/95HwHLnk + UjZ2UwdL9LGlHlh5/jpR6A1eUN3zeBaxSevhtZFbD6RUXuyBSGAmqNq2Az8iLS/FsjK5crFIcfvN + 9qGBaVH7ITpqsd4HjKz3FxfM8/ip43ex3ueN7Kz3hU4K1vv86WEBYwWq3Adu4IeDLlH01rXvAhWh + feF7bscAbdnENntYdmAkD9MzmiJUtGcipuYeuVvhqGmbkzqDRfeGGdC/GJ+fn6sgH6NfDLtzQllu + XMZLoc92rRl4XktQqeXblMDB8bXbrkpU4BnIDCs0fE3TVo5qD0rhOzmcRDa/P6yWZCdq7d/qsxo1 + ppfRuSDRukVl9MhYPRc0/6h0hES0697dd/AneL7jGZ9QdDKbwxDMTEvrm1UyAUllmS0lq6AA9AOO + uz3reMAEHHEc6IQeXbj3EWhJ+nqL60pnH5CI3h8OCOd58PU8E5lKgv0cZROyMOf8UBwOmWp/7IdF + Ev9OTpYNPevPPID2D4n9/+GGNetj/WCWtp4SEgLXwODuFmBPTTohcHs1ANwyuj77njBHJrQV3X46 + Agjx1TGId1C+Y5bFpEcC3suElfFXQXKAlCmGPgxIYPICI7ho/93YpF1GEqKo+b5993t3snDD0g1l + c8MuW1M+bXeqD1qNYSSf4Q0tdhz1egAQyU+/od3qPVadL4t4cktK3e7rn20UFbs3MNbcDopl75ZS + vMVTqe/c7ZT6Dq/bpr4j5WrqOzwlnvLry4tq6nuIBqFS6nvox2HER2GAYZV7U9+5+29ixIedHz82 + I76vsiEi72J83iUfQjSwzYgg6tWcCPFcVxJicbmSEMNqNpWsCI/B/3NHHvP5sZWElmmyhrukXC+G + xe0Fa1hcrRdzNlxjw0S0E3+9GaIqP8eo7vlcXE8495uCzRju1m/D23X2bXsnqlTDuzjoaba7KTfD + 8tXzdHsHHerKRdDbfyoX9Vq56K+4HwZ0dDQQkQqF+k85ov+UI+oQrtxrOaJApdnxOOiSZoevW14q + gnLlSsGn0jv89tcortwnonRu6T4J4yD0vVEYYzEbuk8+Jk+fXc5gCgpS3IjEOJFQQ2yCTupQ5EWe + FQHC8lqBhfYbnMWP6W6d4YNkOFmjmH5WH4pJiaSzZba+TXDFcoqwLJMUDxcxD+Qul3eZp+Dn4O9R + XLkVyliMJs+PqllWhaqhQcgct1KGdJNNZ7vF87oRbu4XZbm3GL3qwzLY9pdfA9UZNW+BiDWF2CqC + g7/gog7ELtYZWr7jHFOGWjP2iKpl1E3qA1KqcTTag4U2xjr+fGEaP8OlqLi6te0NoVONGe4ToULX + nLOOhFwJ1dLpLO9dGnUHiESpP969Zy63vwPodas7QFIu3QH0lO6Ai+sPFZWVO2W0NvZ8HMdR4IwY + njBmahRmhPtEpPanFGNK1+EG9o2A/4F5ne5EhTgE+hGOLcGRLzaLalLK37bumQI5apihYhCSDwvV + mMbghY4HyrSW5ItWzGR4lUx9thqPxF+8VdGxmGzvviX3YrlkZQhMvV2nMGU3Cp6CUgNGxyzuAPeW + js9zY094aUIuLZiF3ggvpzYVoa2kz9GZDA8RpO6EjKoi6i3eydDuS24L72fr8ed1mrZ+X6NFl7lc + DaJlr9ldQI+yvEGf5UY6VQ5pC52JdOLrC94ZbUm2sU57lV2YWa/0kBi0aUCeUP2Wkjvj805kgqI4 + lcslag5+u83YYIf/QXcGMH7KgHUoIMkkBAcVdxfWl9mmywS51cHegR7Et4pBX5X3qKdm75MEQaZK + Wc7i4e6QPlHtj3CDHILy+dAxB0dnuh8FBG/tfdClJGIv7Fr6iZrYhoLJDoxQMHpGx164tyXot4qJ + y8Ga1Nmez27RZ/nKTHcv0MeQL+4zssfbY1l1i+1xWSB4STcwKQx5FnjkuzlqppuZEMuGN9n0HiT1 + tYBeUlJO97HRKToYpjY/TZ1I7LkPo7iZ1mGKnX39i79QVJHACI680p4q7fleKuEcU2dMXybWASkd + YmYeExx5SCkwH947gWev4NLrdpW6iXK5Urd4Sgrup1cfqpW6fcRTNSt1jxkKzfEI/ojwV+Skb7ar + CkKI9JKs0c2xW6VrSrU2lC8MQlSsEV7/MCaIPtJ1P6ULVtF1FRLsCtGIBBszzY8saPAIwdBdz/Mr + AAdvmgEOHDfmpuqbWxbD2PW9gFczW8xdbqq7zG9MMQmiiMVOSf/9QJbDIqBhAxgYbOcmk6Ux0hwU + oKaOm4EuxkzshY/nlU8fwNT1t+gIFrCE0zHf4FrAxgeVkKTtjUjlH07vl0BrslG6M6ouX2ZL9OEN + cOvqQuc+j5G5/XyszJoyuun32VbqjznV/YEuIacs880igY+RW3YBsoiwAx9ek08J1cejSvbgqIOz + K76xcsJbp6jXgNa+EpIFkTedY07VXcCUcsz5a7dr8J9sY6scqy4M5Vg+JN5+/iH/Dln6tSgI7/m5 + 2IeAJI5F9ulxxh8nYr6+dQ+uIf1XMrzkp6Qr+lREEdCldMLONRZCri02zuvglHUqAZg3srbZqE5M + o418ShuzWK4xKVdWaP3R6AF2JbA/Wd71WHNKzMRsA5fK4FqrS+axN+3sp9XukekDqe8gi+ZfvOTq + EfYXFnMCf6xsv+MNJ6FL1fTew7/swzbpdbtqekS5XE1PPCUV4eX7l9Vieg5ed2YxvafMg3mIRphc + yL32sM3pHOj/m4Rtctf1BxpFP6Q43DfvQTexX1B63Q72gCiXYQ/EU1rQ64+vy+jRnLm4ZCbqwVMe + u17ARjwGjqDiJEX02Ne0hLEFt/FtprIQjSqsv15+OpGAW0KlqbEvKj/nH7dzGGR1V9QFnYjj2qCm + MRZGURxUEAgaB1kfZcJK4ABNHejN0hhYYg70okIm3yuuE/F+AjTIplv/yT/+Tnkcti+xps3TcnDJ + 05CioP/rPdwE9nYcet3qTEvKpTNNT+WZ/vWycqY5D0qBCvz5OERI+FHoekzC44DGrmqxYJ7yImHj + UB7I62xVhVA/rqoc567jhawShFC7sEV+8VkpXAbf5XETZrjZU/83w6srHCoZh5sOfhQ1RSeowQ1e + XY31J+q437olQZjceapMCmK5Mdh3M5zi0JEHp9/FEODXb7P5dCz83ZfQlgKPL2lhxV7Gt19dDZCI + Zjwhj/phPOSKKk6PcEHM07G2XXQI8epTrsXd0shEavfaQ3gy/orOkMfAvhWvpcDgt1fwpfa8ll63 + 4rWSconX0lPitW8uzys2cyYqLxZ5rfN8jNHBsTuCf8RMRoW9K9pE0UeXkDvuLsUIFEzLr7HrSWdd + CVo1b6MjdJRXD96DH3CWb0D8HlIKQTIHhVKI2JtTyeDfrJKqtZ1KDsAMLdI1LMEb7R+qg0D2IzNQ + DI3vR8UOF4pvhH6AZamPsN3r0bSawJVtOVv+705G/nybwbRpm6aMXzBuntBvwr9yYdlDNzZN5TT5 + KuxfSs3lmc65212yhfHsYLo3FDmcL/UExJZsvTnTNQNBsFbhwRtjT8nNcHNP2qZAv4Hnb55gzYmT + 22SxoI1xg7jMs9tb+jlZDpNpspLVCGljnSmdFnr4fbVxPbhTtnTpAJfBuKkBHgodzQZ320BOkmDa + avgF9/UxC2F7a+AAyJqCH0QEjdnsvUP0oAh79rHWeaBEcc3F44f7Yaq3gN4t1FmrV7+VO8fclV6L + PNAvn6NOtFwWRGLG9zKRbhUoPO5RyHJxjNP1zh5z14scijSfLbPNbJvNh/PZajYdlxwqVjC+FAJB + ELnqANhe9Pta7TFsuXazazeYg6k1bX/rYPz64Vg2bt3MaB4yZvjHSjz9wvfGZMYvX3lW02nduGkx + vYiK7JV42cHZAj/b0abZnUN+z9tdsryfH75KSiANZW0M5jpdamPg65a1MQTlSm0MfCqV/8tfWTlT + jfuMh5XiGK6AcR65ju/4Esf0A/nixrpWa8GrrzRjJX2NDJ8+sQelkir8TeVJBgmFsmA/z+D1BKtJ + fUuTL8O72e3deJKt7ktqLkFcZmzMhtuNzlI9G66UxfHN5buC/CAqUn1Dz7gar7RZAIlq+prwcYu3 + ZfLy693ydmamLsc8bMydcNzIjX33IXMeymnJ6Cs1hvOqkNzAHBa54b8Gf5fFG4gtrIsxOD473l28 + v3VTgeH9TZvzLvCEkQi4ytYqCIQStJG1YPUJhbSKE5fksiY26HLN4H7F1wnfkew9+T5/SJ/XQ6j1 + VGHov66coENZTXrdzoRKlMsmVPGUuOgf568qaj33y0yUPx+DWhq77sgPQteXbpFqrZSaA6jcHEla + Vbr/tulcR3jQLtt4WapnHFOvZM7tDtiLCBNaTpP1dPgkAbn2ZjY5QQ1vOqPUWATXht0n302W8p3C + KwPcCdowGvFo8J88HysZTZ1lqhBwceVEkb1ERK9bnWVJuXSW6Smd5fMXl+WzzOLYLRXI9Z8/5YHv + BN6IB4EIixahTxMMim6IcZxg/Dx+Nn7xkiIMvqBhXtyvItUVhenPyvmvGT02Pl+v+DNXq1XCyqMq + bX5J76naJhEu0R5SYq0sP0h85PxmVcNHROAjOrNKdrq4uQYWi30HfRXH8yQWA4MMg1pK+lNM85/f + FLvLPQeYbyV0t1OwrVHqLIhYVAaHkauoFhXEgMldjhBnMCjmNQXbGiPVpFNgQzfz2eZuoUph4dKs + MhnqIuVQ43CclJxbJTdatcfBo9+rAzyJGn4ADtlAzqUwy7XOvq2i6qLWL1T+9hm3M+v8GPSZh4kS + 9APVXq9FPyQsUPliWbSswH9av5rAaMI43wcPHL1bO+U93HaRo1LbWODzU8wC7ZDbJtvYJrepLozs + NvnwMDD4nKbrBswNHMKCd8JyLazez0CPIa9qKRgFy125cQeMQ3rdLliOKJeD5cRTaYp5+6piiQF9 + llWD5bgfR1E8Ak0T/yptMW2YlmqTGpgDS1Qm52V46Gy9ukOx+340XKAHKDVU/88zUnolpze7ORP6 + KXJ5BD8Yi0gZsgtrazDZWe7SqpmlFZPTFCK85hARPwY54sEUEjmqejxtQ8wSvrGZKL5eMc7A/4zx + v3k3MuI7it+Qm3mMpOMOfTVXRI0xTST41+CvsHMGeDh0VGTkkI3HIaTblrmxtljjqtDbtktsY9jp + kDbeCwSuVSb63xACVzFxrmpNs261ppl9rWlWW2uaqVrTFy8u3Wqtaa+m1rQXeswfMcyp5W2wP0qm + RVOGyLtdZnNxt4n7NR1jiA76idFTo/jsk/z34c1El888UahANyt3DwNuYr1Og8oVRYzphMSjOW8T + 4QoyZwXw20TnDNgeqiXmV8vtel2BM80eNhQvAGvhUZidniFg4qIcWDIX8RnT3XKKPEu8LpQpGIho + NsDdlpchdhF70/VAMq2ecGM4T9jJAVDpPx8K/BGwGqU49lJcQxGDK59XxmVJuFaYdWV9RFD0u9RH + xNct6yMKypX6iPhUCrMX/6wmCoQImVwqj8gcL4ocdwR/xrGqu3mdzQXq7AWqhP+s8dRNvlWji490 + 1MUhsGK34qe7ne8mWO+hsao9rJ3pbCvASRZJat7VMVjMK0uLZeqDC/3hapYEWRMrGL8jwRyjzdlw + A9OH/2GOgvels74Zpt/vZjez7XCafk6RRWH5ZhESNsAF1YZtn7GBHJzQtDoHQbWAj/lxSOpjsr7J + sBIIwqIdmreZi3dypHqq2mW5h08mFUAJz2DCi8aidXp7gHAYsMj8tm7tj3AGClAQn3CbqkVbRvLZ + /Z9oGPl1fDu/h6N0P6dYVLjVOlfZ7q0+TEjJHHVjFhal2yG8rMd7k9mPVbFgT6W/BoHXDbVINbFN + fZUdGImv9EynvYJiuBzPZ1+0Pjeoezj8Zb7igy/4H8xxFQYdUrg0KhmeWZVwn86zZRPaXcv5diQW + FiLAZ7fJombtWlqHDpNV0iYw6N3Nbp6OcSamIGp+VWbFLnevE5O4VLIArw28NQGooTs0bZz2RmIt + OzCaUG3ggoEVyR+kwbrMJ3/hYrbcbcYpCJR0UnFqCsQ381m9nbKBrs8cxkszbk+EbglidbjlhEyz + ti3X8rd3m+Ymy9Arz3FnCn6ZAgwxm1CE6tF17Q7uoD09MHCdMtF2H0T59ukvYDKUS5C1Z1/vIxKW + v6dKcP/Ot6PTydXxqKrkWRVou7kfClDcbK3uVMqVPH8PE2Rv3qHXrdQaSbmk1tBTUmtevX5RDQ4Q + +NtFtcYVCe0sxIR2lwUyof1ToZRF4e6UBYfZEFMrziQ2rkiXKOzp9HuxsLasD5sOX70eM8oPGWNQ + K1or0Li6BKmy2IUImD8TRgVlfxUt5aEdyXriMJLZfLYVfatlxTgzuFGyZHIPoiFWSoYRCMQmXZDi + HHbIVoFwvfp8U40sqK3GgoUymqqxRB6KaGVVbNs6gfVZPaHXFCRgdGImYlMf8GmFXkplX5rMVYrq + 4O+92gM8CNo3D/PcW9UXr0TBXIX+ye2pKFNTzcVCcIlIJUpFmSMhNLfvXXbY/dlrR3WiGx6f8oq2 + nLyul2VX4hYzL9F+KUB/XHem9g66KGKomyeQFfBYwC7G9iY11cCyCp6kXqmDR89laZmP1+YN5Lqe + G0WRVy6FNw7cmHE2gj94IAP23+WB2XC7ImMZw5yuQKG7HZGwkazXyb3UqApBzgkcHKyXPRKWakKk + Hn/DeZU495gomKxBxUVRQNXXg3FPxpN/C6gWHoWMP7IKe1Gowkv8MDxlbqfoEmpiG1wiOzBiS+iZ + qgMrM+dAW77PK3wU6ucO9r9SwVOWvSJMnBNHEpArFoIl5nAJTeKoGu+uT0mgBQNdnkMILettfk25 + AV4gwbbVN82m93P92RbWRGvw50AGY1FHGfWBp3Waykfr+6YL2rqTw7Iic6l+0F3fFvZGzzW7xXTW + ugk9vjgz9OX5xb7G5t70x3Z92CJ2RZEC9eVuJ1BfeN0W1BcpV0F94akqhXnNwnIpTO4GJc8Nwvoi + RkzsjTiPAqXi1HqwhS356yy5QXHzXt0Oizl0Wr0bOqcgBLHjxw8G1VKoEGIoADwyPMtFaF41okGe + 2FHK3f+w2HA2vl5MfPxPoESys9Zpw3s3H83g4/UrXyPYepE/cPoo22JBoCmAxqZtW3ImKNJO3r5Y + MKfjN/RaeubnZG+4TkzBpZU9YjenfWVjRLL0wsUF6LT81Im6YHjmjeyEiEInBTEif0r8afs5kdEy + ZpW7GZyvWa3iMDBflL9+ev3u3SuhhOvT+QlID5A+CBQuAhuQQOH6OaqRptJxT4IcQXuyiO1sUBzh + Ji2kOXbtIAirgyzOCZJAfR4vsAUsMxyMd+9wcywyBC+zUq766MX+o3zGY6e4gyXWAGyiBGMDm/wj + ZXnhZ3gRgtCtTpSx87qhLRxBb5+7w8mt57VssRJ4H5BpGnnqoZZ2qnJU3Si13/cTEQNYwMk5SCa4 + +SFD3luuNnYUk4X93g28WzWxZbCyA4O90jNirgkIJsRcpQ4Dc6RwbnJU/CeXH969xDhl4GouOxkU + fsprjb45/3ROoQS1M3QOPQ2wO+K1Hv/r8NpQ1HB8dnDhN0UnYo5X3KDzDDZhl+BiJSxwP6BKmiqR + vzTjfTJl13Oigpi2AnVV/DyG06Xnk7iJmBkdXYigVFhkFsO691hRpc/YNyd5lLcXqHT1gTJ13PNQ + WntY/A+7VXrjujVn6yAjqzWpbsPzjE38sLdDP8V8EP5KhpXl26l1iWp2hef6EvhLWglyRI6DV7uv + KkOxyopiQYd0bHrdMitKUK5kReFTGVD/8gLnuJQW5Ya8khYFN6nL+QgGrfOxcxX87WYVOysQk8bw + BSuQIzHpZJmilo8jQoV7hauCTjfgE7vbO6GqX386v/qUV9URqbGF+jAUTT+duGHfqAy5KUOPt8nD + 6TcZR/Be9aKgZNIwL8bG+kChSbVQHyj03ciPjqwPVHSZ1g6zWtZlutPXjUUKNNZdb0mzip0ATolb + tNI8xBZBD6+w4PyJMpy86SXWP/xnIhBt7pKZrLsuwv4ns5VwyiboC6N4Wjk0Av6crWEsczzMA3E4 + dFqUH/oyJEYIrR/OL3/55ZfhBLpJphqwMNssVMAazmGXULAeSiTBohCXb1tc+EwFKpQuv6bzbFXT + T5tAJJmfudPJXD9WaJRTMT96dmznwIerw0ATVuvbTfo7qoKSphHympJRbYvTkNLxg5FCPB6RBkg4 + UYVs44O0NJ/BmmCL3RLPBbTolNCtrjquiivEHapl0Ou2xRXiarUMekpX3YeX15XcMcY9XimuAJsH + VK8Rc5njO+3VMm7nQP/vXS3j5XiD8LPo3KJ0AeEqTL4kQ/1LgpjGs2Q8v4ffTkTpuK/pervJ30Dc + 0vv1DjkDIR5TizMpkE4E+1dvj2BsInAamf0NbMZUJOnIalYUXoM27Nul4PsCSDkfC1B/r/+BZe9u + gDUhxx+8vH6ZgwexwKN8euBmZFmv/ZpugQwxZQa9vgKNwn6X0+tWu1xSLu1yeqoFOmRbhW2OQXKR + H5QS3aPnT9HD5DsjzkNXVYW5Nl0p58tE3LzjS6HO4mG/IEvYswtggaSEPjm/vHh2caICn2aYZ9xY + wtTwwUzRBT/NEddkbzDPIk0mW28QGW8y3wk2o2suQs9wo4/UlSuAlWGiRNtnmoiQlWbEyJQgyYPK + UVXvj1f6E2vRtIOoKZyOgaQjCiscgYdjQW5/VdhiB5j3atVBnjclplUXLS5J1pHTmELaQE8tV/vS + mOn0cVNC6Z4+NjOE0NaQGFPDZFQSvO2WsdpFNS3DJMw7zrdN5ejSIgQ+2ztBg7/lER4ItqZRzGOX + 26fO7Le44K4w6LRtJztfjs/EpdKtPHhXS+nPrqjKipO2hwXbzBoyGRJ6DVZkTNBeKp1rvrfIvi6G + YmCL5luivLAJxfEeufA1KsFPG0urbnB0pdrjHIFkLW+5w1tntnPRdYsI2X6QtBuJ7Pd36cxIFgWn + jtexLii1sS4LKrswq4LSQxIoNczwapPupgJFZ6Qis1Ar+DiW9afn2o+kwzExoniZzgf0f+r7KEvl + xXsniu1FbHrdSsSWlEsiNj2VEJa/f/LNGOHQDXjASmX6vOdPvdgP2ch3YqVH6iJ9hdJmo0LFvqRQ + kG+Tfk2XQ3McAoUIruvfP7FxeAJXMbkDYSJFKScRRPnm/MW5SAae1RfzO/+69R9OY91Xvc/xeQkK + sli9j4ceqxRHt6zeV0Nn8FPne4AbRWdxMBlFdnQZL3JniEQSmOFZa9GuZsYbUszD12Syy7qnQ8ps + Pmqd/A2wjWJVvIrxDsU/6XXL4lWCcqV4FT4ltvLx5Se8zkoGqhjLsJvVq56iSytwR64feZjjUVsr + AHfu2XCBfj4Q7YqQ5+qVUkBk+h2UBrqaksnd/TaVxhT87fNuPheQ61vh0DXCBwVP+TjdRk59tGmy + LvryTRhV3ox868DXVaHm2p2UpuPGcUrE0UExKsSSxkEAnLnMbawQ/3NPR+Rzj/ODiLyC0bzZMxrz + gw3+55bqXJEHBj9wVHT/SLLVggS1c9nDliiWpIIRoEJW3H6CpVLBtBRfER6Y692CrQRdJeugxVDG + UGzQoLhNZktSISsU4WCjAAR8+sP1q5OBOEdaVWRB0GPsiw2NxhDehw+dOdp/9FirOjSVjvI9+uSW + Oe3q9TlSo0GmpjUak/fZOX7+CkEs+z+jzyAWdUWHGvPlNeOnLOim2qhG1rgvqhMT+UU+pVv35avz + l/D/3w5vsu/DuxRdrND6/NNl4QzjDax+Gn7Yrj0ChTGTrQrdYbpV4MYyYi+gaHsRrkN3wnHYAoHn + 0ElDirIuraDQuN9sSYM0FoqdLxKbLewK1plQroSxWE5U1FICM6syrKQJsfS4sADUrI8BPVy8sz02 + xLH4K/sCkq2T95hHNXs/XZ1/uLS3t/SHKBKEOSF8A1Whw0h5jqMAN5oO7hHZZ7oXl6roWdA8Hmyk + PTzPoevW/N4jx9UjfFjELODDxHonS3wJNpFwM6iEzPVuMy6IjPlLHS+cSMYsdPLm0uuWMQt13lx6 + qtLRL6oFjT2nGrPg8ShwvJHnMteVScEftp/Z8NO3bPj2/ga+fngxxyg3nocuQDc1oQt9BdY9gtCF + gfb2Oxj47xwajfMY7BTH2pbVnqYKQP/1nrkd7Bz0ul01L6JcruYlntKefn/xohKHw91qNa+nzI+Y + E4yYH7tYuK2YAVuEPp8tJ9kaBBkt/qff0c6cwe0mQvxEAOAQRycAN4FBwKRlIptamUTfT26qiM31 + ZdrNUxE1YuU7XhjyMCqfCtk7SHHpmI3r8/Dr7Bked+NGBzODjgKvEjHQW1/FoFfXBwYTlmMHkvlk + tlvUJacXsVzj0HSSG3j5xW8ohKnmi4WcYHO/3N6VcfhBY/OiRr84SEwuj/81eA97YZzvhcYZIXBX + aSTBmRFu7pm4jBpmdFQo8w27PlmgVIOGkrnZp+4H3punX9P5ZtTbTh7gsdL8LgidgZxwwe6a18dW + 1RaTjG/XL8nW1ks7kOcG36o/YXYSdTcSe6TiKG6m9dc1bTuiRh551GFvz++3Qkw+RCYTLKGw+nY8 + xWYlD6a8zxMaOY7MruAus4d7oNctsysE5Up2BT6VwXi//jevmPQdgbBhZleMYx7wyB/BH7HD7UvO + jEyDrXia0UIXzAUIaJ9954SDP9tu8rwx2F5ZEbx+Msy+Exi3jJmDZlW7fi/FZJwgBI7C+8vHMCnm + heRkFUlELJitq5FbmKrQdCnVU6ydr4YSMZHvNpaIqaeupLvC+hXv0MCL9hK0qjnzYFtnIHa9TptA + W5acZjy2dctheweJjy9KwG0msaZ7zA2YjnrK50gNJ4MTTtessmi8+/0vVcThP8VsHliR0o6CHtIi + IocptzPr5nZm9m5nVut2Zkode/E//1M1McROjdfZjYCdjVw3jiPpdT7PEYqF2Pz+/JqFq2cv0pSt + 5A3y4s8/q4ilteUlG8tKuKBLxY01ydyYMT/su0Rq/3YM+ubPs3kiIdALKORmFHQpPqYAfmR87NGU + i2qS5weBU6Fs4LEl860CZTPuz8A3wZrQD52PWeQzcu9fg+u37nCaIey7PimzBWWlkfYjgFANPx59 + mExTll80GgqZT0C3Tta72bb2reEiQbDEFM6CSibEyysfA2hek0xiAigndKkqq9iVKWUOvk82sLFH + w1J1IXGvvBsu7lFs3QzwKOWOZz+wRsxrR+SneJ+WRe7Ct8R6CZ9Sw9raDO5wU5o4y/n3lFjAXu9B + DyawyOEKBo459jyXXreFgUPKVRg4eCrL91yWIggFCJzLyyBwT7kXBmE44r4TBZFpAhOlqlRdPyWs + UDDFaitrXkl9X+ZIFUoJC2mOQvRrfeZ5BP0ZkRvDf/1VXtZqvsl00WFRcFgc63S8KHsqqaDQqibk + sCsWXeQ5gar2UyDTNHDlbK7L5oE94DbyWIznqaJjX2bzKkqCHUw2C2LPq7DIUiyS5zuxW67DJpy0 + hT5wZ8uBaIARMyYoiKy+S/dg1uWAbfGsWpsjrzQrIGi3Kbq40lLHvOlqiSLH5165vHeHIJhS0JNv + OZODv9RBGSBLyBEHhflOzKq4O/YUT2lYoFYjiboOHgsoUMsVCOTDPeT7heER5wib1J2/Lp20IzKS + YFDhmJ00Ijhb5AUX6UlfyxKUDA2mJJwRjj23AVtrzDym2SA6lT6OnaRHhAz5s3V3vJeqh7H5Tuuy + 4dDwKGbm5fW7190BL92QMtoahyY3xc+GlIvpI/fhG3WB2a9hTUqUdP/vRirwjt8BU5het1TgBeWK + Ao9PpZH5t0s2rqrwkeeVVfgxR1i5YAR/iKR3ChzfJvM53HrwVcIqiNOOEberFWZwFO/GNVo3t+LS + AZ3hbnaLKtNSgDOJmdyIuyhvOEmmi9lucYbYa3ASQfH5mqxnicArQ81PAOXDQk9nn2G68VbATH2h + m5F29S1DcjMM7pAfiWTFX/lIqYwCLR+TNlUczjoV1CapJDe85lF0oQzauxXQqY16wGL2ZgUV3mR1 + cF0nioIqlhB9O26q+qRvp8n44MYOj9yyKbioohVoF121QRBFDebgwA2dEJGS/32WGI7uv8vHDtSx + h28mCtry4MS+eKz/GQ7kTinr/YVNZWfahiOhdH48Lhb6uiNLmFZOht2l2qH9D0BsixxPwdg4XofS + v+J1WxgbpFyFsYGnxO5/v7wOqzg2rutVav8CkwqZN3KZw0KJ7/H7ahO6yjT7yDFrpBww1klmMFW3 + 6bbMVYOgpMsXHGIwL54T+Q11yM/EHic17zMV5NV9afwpNFAtb8+Gq5pMwrNCJiEe3c3uFptS8iMl + Fg7EcuVxaKEALsAxF0Wd/Msws7ApJa8xseS4lELmO66BuXUgHV9VBzKzeA/LTvxPHXQKsu6jDrqY + Uc58Y4+kh8rpnEcE/KCRlUopZdWV796XYreU7P3hCuT6DhU7xOt2plqiXDbViqcy2fv9ywq3dQVI + Xalehx/Hrs9GASJKSdn6VZ7wBJfNbkLiQfECvksTkBLussmXEbnPBYtBqQCBBAUWibDKnw4/nr98 + iiLHSogDOHuTjBCxTlVe93xaDWK0dINdF4FkgEkFlWDCZC7wvxQMGAY7NIMPOaXEzibyeZAvLMw4 + mSdLzKFuivNjsRc1s3o/CoK47MASWSELJNoIqRNHNQbFPWRr6hQZRONSauarYoyGh7mt/xpcFMoT + 10+uGRxoTJGen7PhDqMBxe5INuIWqu6Qs+FX9IQVYBdgr3DYK4WMvNlG79Gbe/VRuBHXqcIqx5pm + 890kwxQnOBXaWhmGIsIDp5LMROU5b8m5aTP7xWSZPKoo1NHV5BVTx72HTep36raNbhNIpc+ofqI8 + +MKGosBdLTn7gE4bedTqT+gT2BsnHbP3PIfyhBpI/h8g+eTy5Om/Ds7w8OgKwS/P6KMPyBdRl0Qg + LwnOgy6XBL5ueUkIypVLAp9KaMmry/dobilfE1HFozcO4SKO+Sjk3I1lUDvM5uWTpycF67gx3SKf + eoMpLwoe8f0YVdzx9m6dZkvxRNwYsA/XQ3csmn6/FwkyG10Pag2jrakVeFy2xzGVpeqzRhp2RDHx + B3mc3pgZCN/fs+HtOtutUAyfZkuBOQZzir/h1CJfhD2RrtDKZ7jlYASNYSW+6wcKf0DzfQ0sqbhJ + 5TYJzAvqokIwT0oBhiL4ph2Hygu79czZ+mBDBxvrDwTHrSkb226H6CsOGjgjVc2ZJOubbHk/H+Z7 + FRnt5duurNaXRQsPy+Trx2belRvXpkj1wtI1tYA0sIdmB62fpu4XXefTfRGfwt3Rpc4nNbGt8yk7 + MOp80jO6KUQ9hc/w4am2UAyuXvzPsOb58PfVxg0qNT1lD9yHjRwxlB881yXEglZjhMyy7gYl93WW + UEW+31+gWHb3LbEIoVUWO9/xDRvJOt0inLXQpYZvsvntbJisVgmwxGPSmD3fJc6A2TsiSEswlMKX + t9gv6kykwJYFvVfXF1ef0O/U6GnrkPNNWTyzpXDny1qpHRnFoTDksfiavfNdZrhHVgBRR48ycH99 + 74TMPlSLXrcrCk2UyyWhxVMS7V59eFcJ1YK9ycr1oJ+yOPAxWzHGsp1SsMuW41QXQFAbGdiSsodq + A6kRim94KgXLVtextDOmyXp+r8B39gD6vPvwio0oDMXopAigQzLiq8WsGqRlmtFKQmJjUK7nh0FN + 8mNfluHi2G1KVZQCVCvqPUhlf5GlOgP5CnGXiPGk3ydrgaEEfxHq+iTdSiSEAe5bJWn6HuHlHoXv + 42IpHWH3K8w+KN27ubgrMDg1Wy/y2N28qjM26Gr4dGQZ4mQzyah9Tt3+CpHBAA2BK0dGED2i3I+B + 4peU3f3yvcN4h5Q38bpdyhtRLqe8iafEL9+++u+KvRQrOVUy3jyXMcdHxAKfqfrGeDEllUyl2mMo + 9drpHLqu6rWrEiXTrx8FzWof81g1Ke0xYRlwFjqEZRARnkj5Wy1VKMvGD+EoUduV6QxNpwPABr1u + m6HpVAE26Km83l9cV0JnHI9Vy19FoJF44SgKvNBhZiR2zfYcKcg6DPvUrsMrWXz5dknRpGjh/zwa + TmGSCtyUcrvvUOLcpnNR0W9zVjTevtps2Wo0XMBqgo4giholc7hlUE9aTpEniXAD8RrdUpKMETcq + L/2bTTUaxsqWU7TpB7CbvAc7NXL4mLSfax2132Rmuzh1QdeVQes4YTMTvxLyO88Dgpdojob/5bGU + 03SS3J+V00MmyUrLvYqXYTkzl4KOxTsfkwVWN8tTUWCBL8c32XQGf9/BiiibO4burr9KKUAEjSY3 + YrknxcKgN/f0mxiQFCw2A9zleUIm8wiIKcoNNsl6rG7DG6CyqEXMGjV9uPWNLBZFuCHrVk+oi3qt + u/gKWCjBCdrCYOeW0gMVyKRy68WilnJoswNLWjqxyw0NDDHzS7G/olaXHf8+Ejid1Lo2cMI+1UnN + 8JmC8PPD8/DUCbtB+KlGthB+uhMDwk89JSZ+BxMwud/g2RRm3bv7udgtn2kTFu0nHV41eue+xzEb + jEpWxAE5z+efd+siirOFGdce5c93ZSGFfLQH2YitLLv2hoz9u8YKgy9iFJBeXYND65VG5Lo0Vvh6 + 3IW+9ST00NceGDYvjwY6jJQ6rVwlJ8cdADToddvk5LgKoEFPZWzzp9dRNTkZw4xKkc0eyGc8GsEf + AY8rtaxKeT8X288sWlFi0AY+CT6HCk1TC3l7X+X1l4evSUO/oHygTUk/L5eLmWTom9dKCnQXVWSs + UoVnZQO4aKg+FTTmqzEXNlQV/Kkv4auxJo7+SFPoClqFLjXYwc9fnAHuLR0zy10hFAU8qKu/3ZGd + BDHB4xcjF5DiNFlgedPNdrbY1YJvPlxlUIeAZPevpo3UdXTlFpe55EYTiz28en1BoLjds1KOxjzu + I6OYUdm/X69c3iFMjV63M1MT5bKZWjyVGcUXL6tm6tjxy2bqcQxTxoNR7MauJ80uH9CEN8lW93DG + ViKOJhMhrROQmO/WGNCeIhQaHOh7CjQAgXoj96qIkX93+Z6pTN/JtGpE7hPugUWIcFkJP1iBYA7H + phxtCYPTf/+sdAbD1OJWygToxFVQEH2/ggdR3ihtZf0aR94rdgN3/SCsYDeU0AxEyP4XtDSgSlTs + Bpe0Hr3IdeA6bY6trvueIsyBWa0lDruNX0dgp2jkLs9H7DpBy0Wj1k4r98adsERT8rw8Q5VJKXwL + hopbHxIZsIN+5oIzVd5fOdiSxqslbDPB79kAD7K220cKQ+LYmjG1GBT7k4MtwSf2E8LlKnLZfFG7 + aPk9BaqLbS2uU9sjYmczcAnyvgsrstH1jwxH/1GIG/XpOz1crnlBM+d1cMqcbgXNqI11QTPZhVnQ + jB7KgmZmlfknV+9+lakeJ8Mnlx/evRRZJ6jpngzMd0fD/N3Kq8XO0V4Qc1faC7qVplxmy7FF0r8X + GCEfBTOEgtC+bzKXtcuZrldTM12X/WwRX/sB3/+hpogOtNpF0K5Zdb1h6HsBKSo5W8boxmc6sFTt + 8kOD5UJmpjndrwW+55FkjwbAZ4Es8nLUOPq0tPgqxCxyTxnvFGEmWtgGmBF5I75MPCLeVtjxIJUs + B+V/5xQwfsz3YqqgfljoZ6dNr+YpkPN0+V9eEHinjt9lqnQjy9nKOylOmH5KczZBBX+NbqP7NNno + aLhB/hxUh9s8psQkjMVeXIzD+w8s8o9KrdN7KS8n5LJTh3WsJkRtrIsJyS7MWkL0kPbR67GUz5LV + qugvfIIJJ0p5ODGcDE1Nii2MBslkJY6u68YUQuDEpFjgIQRemHYFp3NEdcJnwtktfoKbfU3ld+WD + zPSrHtoRKEDGRSXdpQ0iSjMhF01GBWHYXuLfo1BQaFSD+7GkPk3TElihzdH2mUNzfZOsb9LpGE5l + ma7aBw9Nrrn2WUzTADThFIDUlK621pzrp4D9/Di5LW/kB7qR2npd+yXPfWm9rLqHIYsT38Q7rOo4 + HU3sgfRVvbc5BTcJfWM7W+2XqN2w2OdBQiWeqDpjSRc4YKbjnVm3eGdmH+/MauOdmYp3vnxfrc7i + wTmrxDu7ju968ch1QAqWHrdL0h3nsxWKwi+kSfhyXldc5Xsxlt20oYaN4XmOF4csqLH+dgn3M5KR + C/RyE+/8fpOtjG+pT3MOKuVMRo3Uc7umtPnNpvdzmU3WlJscBHUlbK3oZ6DQY9DrtClXzXXcqJyc + V0t9UF7VJ5XpOTHu+PynQlTDZnEm63ndY5BTcRJopMA/0eZaMzv4eDrbEIii0LWSyb1ZXwx6hT/X + 2QB3r7aeuiEbyGkUskPzxLeERdTyvX4y7+C6jP18ZHLGLMa0R0T2xOB6oSZ2SWGI1V1lOXUDebKF + QmGc/aZgqnp7YhcKjXKKJ7PLGs54VxsKZee0MI2HJ9hYMOHYmnzqYqLA8sv3jtMhsJxet7qYJOXS + xURPpYfzYzUUxOd+ycMZPR/7vgszOPIx60GWwgO5JE3WIrYSdC/F6GXQLAVOwk/QQ6jcmMuakA2d + HWamwQSNRcw5ogb4D5YG0xbsqNMactAGAzfOd5jX4NkLw8h3KxXND0djGhkoxHJKBhcaZUpmyoiE + uXGeMDcafrubgcQngCny26UuA1GCNCElOUxsAysqMnDkqp0N7XfBmdGlmr9pKrEwkI3gdtQ3DVrr + 8S+e67aogd3yTQoLZ3vc/564Up7LAqq0cVDyqXDcfk03M3HkKMRWbZi6pNQ80b5bOueB+e17NFTy + 02jO020BcPhG8x+c5vEY3IfcUaZ15r32TxnvYufLG9ka2HUnho1dPaWbbHJzJw3uAmuSAuFLeQKD + 5p+GF9B+gEQG3HfjkEfClhcCGxJ7LY/pLvkG9/oFWeCTt/FuttliCa5FNsV0RXsKoA06XI8iQUV4 + M5vDTSDq8G6Hha+yIef5HgW+tTHSDvapMPTNKRrlIzo4rj+MyIaaIUdCnCSZUWHRjZ239sGtXBVr + SH+ltY8O0GNwt9L4CzNYorZ/HwEjMC7G6axgfi2KxO0roniKTGO4uIgDfuq4XViKbmPHUfIuCgxF + P5T8ZLdl0hv1BZpnGHwCHKTw9+EFvjIQLwqm4XGVjkD6wQdgoSiAWDrrm+UPM8xnthDXvZDFOhl2 + DyLUhiV2CL32mKqAkGk/vr8e38BplyFehIjYRN8iMuPoUC8yfZpYEUdKYJ2g2NpqGR0cHdKk3/YW + EcaDUr6X4ucdAsB+hgsjkI4neeWky6/pPFvZJgEHVOBPte6ep/8o4mjE3B8Jo0SFVt6YESV213Pk + B37tHmyFPbXPFzqIfPtuL4X9yE8eDW/Ws+ltZwmbq9swCNxTx+t0GVIT27tQdmBchfSMbsL1au5K + X0TgXCt8sAKgx3s3HjT/IpqL+5GHobgfA5EK/qw9gdQ+Lc+GWkseXg8wQHuR09qhfwM6J9LjCe/M + 0cJQmE4VdnDwJLmOT15VpEkBboe5E8mtJyFL8g4xLmc72+6k5al5IqxX9ZhO2myunLJKXl2xILR3 + BtLrVjZXSblkc6WnsjboxS+8kn4n3JxFdITw+VOfgVDMRj53wkDWBr0SxruamEIsuzDdycKKygon + QA8IvdaIr70Y6lRzbayhuqKTL/zxw1n2Zep9w55dE9uYtYhNJoZIxEsJEkWUk8hl5VJwplTWSDZs + tBtHMeycsJBzYewAsdw1u8BwHZYXfzO7XSbzgqlOWYVFgFE239A4KRwMzuTZMPuaroGMgmFSyRp4 + A32ZMI34vxng3lYGXCcOYqkOCRZrN90dRF+fhbxG9O0i8v4okE0VH8c9bTgL3vinzO9oOJONrA1n + qhPTcCafEkupRc0qBrh9ztZfEFN9Wg+w9frLHVeR934I/8c5tPmiDGmOCrknFeoNf/bhgE3QpBs7 + MdUdLwVHtcBa7au597Pr9lUhafsoBNibIvqQybS6gnxnGDUnZCQuKBC2d++sh94LKprL/UB8fxMY + 3R6/VKev9fworuF7pR2hjlUnhuq4+4pCjhTuXjfCMjdAbI/pDMWijmL6T7AC0IasZXoFqbldn+0n + n9oNnRq+tLfGXgdp+yD6+8bsGSdiX/XAo7rzXKnRq2/OYSG7T7u6rH2dJBcFp07QLUdONLFOkaMO + zAw58UwC6tyvMqqIUEh6uNstkuXww/k/X1wK4JN5dlskhhlvfuyL6zcGJZUsOTa1FR7VMfzReWB9 + oZqzICKs5dlGgW8dFibEA2UKYi5HD0UnW5BsY2sMUl0Y1iD5sJybU8rB+XR1SYATOAcwsOUynRs0 + UR6Em3pgmX1ty736LZH1wwCd9TY5OA6A88gPWz78OFOp2n2hNkQytxtQu2pibYikDkxDpHgmNRWs + tLxB/Bhk5Rh/QTZ2zBiuzeVpaaBMatfp0veMRht8gns1isOY9qpLZnAkN1TkRiIWRtPMiFUg9a8I + R4N6+Xx22yBF2tupHQp+2h5Uz1ooXpxibcRcoJUTxmPMRB9Q6nRqlMdjBid/3bKfO/guPKZ0grxQ + W7bb9kK+cx24SsYwZ27r1PZw+ih34Zf3LO5QGpNetzJXSsolcyU9lWV4rj9VwFx54JfqILvPxyGW + IBuFUeBLKFdzXrWVakzniMQQgUkpbI8fEFn1cKT0AvYJj+OYsUoCQmkAeDobkxDKVYrNJASjgxxR + VdC/nxN5kf0vYuq35aEHIKyWqdcMv1Rf0ySfT98AF0hDboGqYe1iaTcKeCxneqWPKaKtHNMD6eyt + 89aJJCKrlOG+KzO3r4MGBPIjQw5/ZulNoFE3LYtE8IUOV0lvCAkR7U69FPUnsitREvT3HPMfQ7TJ + TNYDykJEbubDvktdKxLS/srznS4Y4fi6JUa4oFzBCMendK1cXV6z6LyCEh6gnlpCCWeujxxxBP9w + wigwccIn5ZD3zSKZz4dPPOf6pOpCPRsuqXgEsl7SprfZ8Gq1YdELwo++SzZFUQGRweEjsvlseA23 + vajdmIDYCMyx4u5WdeEEuaTWj0b+XRpi1b8r0dte7TDKLDkpZdx5bsN9F/ug5vte+b6zcJ0WO0CP + q00HFSyxpsqi4hIqUxw8xnUb0GbUYN6RH1HmgacRvmqFfPiMd5+umbCXp0LpA6Xl+rfxGnmEOIT+ + aXQ9FP/EEbw3foPjM5lt5BEVj3N72PCJojPKaYw0gRN7jhN4FFInOki/C4VYNDgo4q8PsaKOwn4j + 6g+q1/Rg1/jRMSJ65O08ZO9kKu2n15CQHmObQ8q2uTrCWN5z6MhhhK1WgSFwrz6eB1mpXZ2L4fK3 + UedcDNXIupqe6sSspyef0t0OTEOqgJS2r7zD3ItcHxFTCg8d3ws9j4mnTEAgOT5TOCo6LkrCm4yq + oCgtvrq2oFkWEKQPLMjNfLa5kxCMRukEFUuwyrTdwJLpxjwUzIospGPxkyD1DQ9tARfUluJBECsV + V7KL2Utitxn+vRKC5X516DhIEl0YkZytHUvsHO8OqAfXeWYTSP6gOCMWLLsTiIe1/bw7skdvmqB1 + MtoDYdcpHqpzT7w37imLOhm5qYmtkVt2YBi56Vk9XFzF3UJYl0Va6FfxPS7jbEhQyAUDCiZV4gEs + IZy3OWFOG5WLDrbSYpy4IdpYSZn28b0uoayv95nA+wG7PMiD2cVUfoAv9PBYfLW/qejExysn6IA0 + QK9b6fuScknfp6ckE7y+elWp5e4JwPqiGTl4PgZpwPXDUej5rifhYd8Wvd+/Xr1WdeqWa6BfrVNX + i2Nn1Ch3uFm8soAvw4GXeG5FmX5MxepgYoRX/xHh/rkUVv32PYyoQ1UT8bpdVROiXK5qIp7SBvv1 + 8l3FTwFjCytVTTCfPxoFsMFkwvCnUr1RKR0RFHky/JrgcO7xH0JsO6vA+YKgVQqyPZf1KBIsJPrr + aoY149S+gbcasAwMyBojVEN0LLe9IHdQaPVFXjLEgwvDqYBomAE5IGCkCpS91k3ihiW8i2IFlWIP + 3dA1xHa7zOZGhJxxOlgFI0r3G0d+HJS7rZ/Ysr0qCvymMOwGstYlUFu+RhRUbawHEIUs9t1/Df4q + e9QE+airSDfAg6r9VbCUA7mi4l7sA+TD3jb288N993cQBX4RLKpm4g/DyTqCbqOSGufIGlVw293y + czafYs6JLh8h441tO/gZtYf/eumnft53tyCmxwSUjMEZxizYh2X0EW4rY2b2X4cVwi05na4nKxo5 + 3O8ARClet6xoJChXKhrhU1lI+vpTDRBlHFeBKMOIs2jkhrEfSFveWwoxxYN2/e6KS2nk7WZbBaLs + KI1w7nHOKwEbxQU0xA5MiKoX30MvjsIoKFftqcdN0beT4bRyPRN6LE/xqicuigqPYSXRnJNsYU8Y + lSfNtDkvgNluvOwDFrmx96/BB9jr6Vo5xq5na64qXMCjj+cvnzw9qUFrmqZYql6AOBav4WSeweeK + +m6wVt6qcC+jG0FNyKiYugEkbyUm12i4TjBXEE8AppdttniJj/C2z/B8owF1NsejgBaFvZMxwB2o + FRnfJzBJ12vEt+l6G1PJ2n0r3sVW/JeQEgIvNLA4CsVH9L7oPm7ELhLjVthFe2g13du46/HtPduj + g8ix726uplEdeynTpVK3sQ5CZD4KmOH4K86TbuHKwh4U1hJxgrj6c7aciPDvA2NbjgXWVIRCRt4S + 4JWFE9XtW1uzTYIo1GC188O/GE3voRzogZY9P08ofRWfsk7Fn/NG9gmlspNSQik9lXgR6UJKDHiZ + zJYDmZSXZ+TQ8+EVvDjAt4Xbj7FIFWeqQSejJjW3Xk21GctyTZz6AZFOZbS91IGVXUspHJ/+yMgv + pRIYu7YmxB4QhGfIQkUYM30TPIJ1gknqxLGPStjTNDyv5tJTAzOnal/wx19NC+uYdQQXrUuCy559 + ntt9OgOsuXkeUXTqdKmHJFtY5xAJ8mYGET6ShVFfXwvpxEhUGdRlrxSIiXQMWb3tSDSv7ulCdo6l + o9XnjvZ4W59TL2Z+/EDOfGPaD4ZK+iF5S67IW/rjzXsWdigfTK9bKduScknZpqd0EX769bqibDPu + m8q2Gz8fM+BUMAZgAk4sMQcvBaTG1zJ0y6gIqiyCGtPpbjlFFi40vFfzBaN4yMvkCxO6npjKhPCK + UZv8+JrlEqtQ4T9lm6oK3x31hcXM42Fjad/yRW0WfQh5g0YfOxy4abmO7RFutMv2CS0hWDfM7rWY + XcyDEPA6JVt7Iuv+fNWX3vXyM/psDOKw0+/wK7KdQM9+/8sLNhomw0WyWCTzWZLP2GaTTQitR4zi + Mt1t/xz/V3p7l65hK6M6vh5vdptJCnqk1MVBigERepEOcA8qddtlHiWHOITbqJCwLdSv1pjQw8te + 1qJUPlQZzS4wFz1nQHdHi+2zGiUvTueRxSePrm1ZNz8PXDHz71fa0o2U1se9i+DUibtpfaqRrdan + OzG0PvVUlvCls/kl3ZLmXkypbfvNoE8VMAmyIHBi4gNwHQGXGqtKM+lwc7fbC5rTUzUZ1/XJnVKo + i2LBPb6rigYYmwcc8wjW8RPhC6jn+f3hW953WEwQ0aUd0IN8F+fazAu/GzqHbmOv0VAXJZ1GPCRZ + L11/ZgU8rbkymFMisIQ2Sa9es8G+35GSCOlzJVSCw+N83yTrsbIa38CULdC/WSnTMGpMWSkoltN0 + khwy//k9/ThQPAsUmrCLDqu6/bMRrY4wCP0l8ZZahaQae/4PBYaRXMdzNCRQ+CY6ZR0L3KpG1rBA + qhMTGEg+lVn2+Gmb+3lRqihesHW/K/2vrp6t0S9iCPGYQouDgCJQb+f3CJR2B2JUp6iRH2RG+Slo + LD3bWjCWRoyiZu2Oh/vqQxDNSRVMOSVSI/1UZFjQvrmfD2/X2W5lyx7UwWNK4vUu3FOnS4S+amIr + 7coODFmXntGBu03meF2XlkU66KMB+ZZIt0bd1Xit2AGWKXecQEJikx+oRun9OJ7Pll9gjtT8HXvV + HnazHAWPdGza5WOKTDqKv9g37gCSY0mxcVkjN5Q1dlt2bg8iu8f15cnfMH7Kgo63p2plfX3qbsz7 + Uz2m8/zfl+M3KqtGQfeMhsWnJi2s9c6ZPLc8EvwePYfrdJXMasIK7WVgC2KHS2wPUM/o2DC7nlRV + x/MJq6YP4KUDaO4bW6w4z5G0eis86rn6ILpxZ2BL0cT6CFIH5vkTzySwpYzJIN5jyLDCHf3iZPgk + 3x+1KG/NJN4mWza4SyivmPsOtz6z+4LM7MPVOuS5HRi6tsfoTabVotkKP3yaLBDBgjIAurILFvhB + aazlonbdYszE3Wyu45FSTjeqLZBHvIZKnSp1+MI7YezknGZdmNRnvRWze4xZjR3unh9S7cjzqMpi + 81ofegV45G976z576x1E3v77e8mnBm1LCoR9fH+Pfg+PIuhfv3e8wD6Cnl63cupLyiWnPj2VuFVv + XprVW5jnsshDZlP06kfPn3pwz/gjz/VcqTh+uqMTLBCMRnS0k9vbNM+I+ZZshnMM35r9SR5pUWu3 + gNqmMl8/z2FE31aDSphA9lk7wpWz+UxQae8Y1MBpuk3xQsWYgbvZ7R0os6vdGpg6mpmLQ5C/j7fA + p3a3d6vdFvbkbjpLN4PXHy5dXf8DZoUi+n4u+t1jMOmo7eurLFm3Qxo2vW6bJetW07DpKW3fN79V + 0TxZWC747jwfu4EbhiM38pWk9mYOwwSxUwdOTLLl13S93QjDhPgFZkb9fezmDrszHWmQl/oWuCO5 + mwz2ny5JdHM/PJ+uZaDFu2XGV2P4r7c6M2qFlwjA/3Bbw1LgvSguy0myvoHHm2y3xvktdUEJj9jF + 1eYz/I0O1ptdDQjpkQWQ8lCYW3MKG2Jh3NBpwR6NXD+KeDkTVVOuTztxAic0Mt4L4G6K4ODvvcAD + 3Pl52in3BGeKZe1ipIRaFbqXj3QZi7nGJpU1eViCFhHPDoWC1C3hwYM8wC7Yb3yLS6kHjWfrock9 + INTnY4k6yUmFRW9+vc0/mU+yu0xa+WHB4SeMTMtstWx1Vwba4O/4p05HVDPZxtrkL7swbf70sKUA + Rxmrp0hKWPcxYnmgb/9QWV1c9gZeCjuZXWQbW7uL6sIwvMiHe+o4NP5QpItGUDjCFKAQEk4mNPzf + nYS8F5GKOmjm867e/2zpEjzM6yCLNosmSU+B1I9FkNSw8F4H/F563RYW3qvi99JTGdz85n0VFj50 + 4jIs/FMWOWHkjVjEPddRITIz4q/I9uezFXQ5Bul+nm62gueKP3Nk+E+386pQRp7nVYIYaKVyin7E + WJNk5oCCHLsVyYwGUSuQsYDHUUNwMvNDL+blmo80tCZJLKhAy1cGN7iG77+X85Bbe0dDtBuIrOB1 + moqY3KGsyrgZPvkjvWOr0RD+4PCHmLMTZfaboVjwWezvOsL5d6O4VATwkAtyly3SDOSJzWxzZiqo + pWVQ+3kzwP2Ro9IDI5TfjjvdnKCDxaKu1JrqnQcO2XOJUCWaqusxZ1yihNoKf7W5rbCH8zHp+bXk + fHZtWz+D+0RkkS1hj9yLEPM1XOlLRPAgyhu41NGIfJNNO0sSP5KVHp9r02wzDEk0LzOujvHPnan8 + GDdRrAQWHpy7p47bzV2rGtmKLLoTQ2ZRT1vEsKt08v/mqp8AJkBs7hyZQFm5rhYzNljjf9AfFHJZ + 3udQF4m9a+chnDAYXyjYFmIypLnbADhYhgmsPytG5D9ehfJYXOYRupXYqHcpXAYo8XzKVtnw3bt3 + zS6k/lzu8kT7Inzxj8v3jIf2Bkh63UpulJRLciM9lQg0b3+tyI0YrmrKjdHzsetEEQ9HCCqlSs+9 + la6TtyJRSoRFrbU/ZQ2rOROzAMtJZgWBRrpKJl+SW+lFhROIsPvIJzazLeKkFGpZFxzCJANhI1lY + EZO0jFTqsyHMrdlpLaoKzAveLhX4tpXGV8HA78+fZ5MZmmowAVKFL0uAnbusAe4vMb7TyHsLI1Nk + LQLzgcwaqIS6I4qzN6T7WYP2NA1pH1YgrVIxqd0E02NOCb5nZALqcScO26u0t8KymFhBfrmQU+Wb + Bv9em3aA51vJ/SBYR4TvU+Dk9IEah7ijzN8Djk4zuBzllVvvuwrlmixJso9EQenzu301HmdNwDz1 + FUJ1+GPWN+pDwChQdKKQTrp8e08hZjYUWiDbfCYNLZyxLvX38HVLQ4ugXDG04FNpaLm6rGSR88CN + KvX34FsdZ+RGDDPWRPGF5fYOTsZsLpLmMEAfdYELXXgHRA/S96fZPDWcAU9AHt3O8mzlYbr8E77j + RBlk1qs+EsYbvGT1w673lTle3EA9gmnxI14mrj9WO0EKeYXtfXncb+jLjSLQl8MH7AtvsdzsBDvA + 9bzyJbZd369gCe6SlpJMaIpp8AOqjxi8qC78MP1+N7uZCRCBG1DALD8N0+DbFnOWbkaigMdmWN5w + oOMB2XE2n93K66mW0vPKQIY1A5EfoeRsYZuGPcxXWLPYza1UsSddUzIVrTqfh8OtdqBq4cnzPekR + hLtMYKkcbUyTEX2F4R1LsqcUXASqzasFqtJCR69HDxXRc1LkFktIAZ8URyrTQo6tu36gC0QiHtQf + wka1s+4+7DO1WLDt5nF1tJ0dSGtPxB7ZcLtxcLvx9kP6Rwy/GfSjV6fyMXnmSkyj+hYvrkAltfeH + 0etWYpqkXBLT6Kksk3z+i18S01gcsFI1S+/5Ux9U0NAd+S4cTymofUyRH2CPn6slqKYbzPH+MpvP + QW+k3KXp5nT4bjPUMfBoT4TrPJvinTt8+er85fgm+y6wr5W1SRVZTr749caEbF7W/UPXaZLc3CAC + 0bqi+59/uiwoXkb3DeKbCc9TkEaYE8SOB7p8SVEvFYExtfGgK7WuRXJMbCEe7utu8AooLbdYbVdO + cqIrJ4+GKxW8Wb9ihppe2hQfmNwXX2frXQl0v1BeDN6kL3sS1JbV3Axw2yoByHG94NgaQhayi209 + nz2GgEYqe4fgcV6qWNRWka0VB7QTJWQc6bd0Km7eHRGCyU3gP3DhbnrJ4sozCbJaj8KDxWE9qhKQ + yFiwiQ1Dstq0nksmnNrmXVbo2KAwJ3LIM2N+2pHj6s1l6LvyIuZxB4h7et3yIhaUKxcxPqWL+PLi + vOxgYHGIkY+liziMeeT4ozAOPF+i7sHi727vtnifwk0LDG4IsyHq/ObQ5/jjJFut4DbGCdxm32cT + MU/igr2cJFVrfVMRqrY43zD0vZCxmivWDLebZDuQ4ilZwIBTXGRfaQvDJQBNQdM24NO+os4Ii7Ms + BagwPwjKxXUax5Uj7OcTUogVMa/nKIwa78vYw9vnX4OLZLqY7RY5FiQekEsqoEmffgY3DizMfJMN + 7xL4iHyJ5BiESWttDuRMwdT/SbHBF5o1jYbf7maTO5SlvsJkbYa7mxlcu1ttML/mUXQhiKLjeQ1X + 4Q06CxMs941FJBHKPBm+iUPnSliWKfpN0IQzuUA6sPWhwxxgVK3mALeqvny9OBa28tAvcIijddMj + wVKxPcVJ4FY/mAapI8VTczApGbCtIgtzAO7ivqsQbawAFIWxQU/snL3kqgBfPRs94BTGBOAjD8Se + SWtW1Vy849WI5gdNPsUjWUZTPmJQlb5EHUeCti+SW5T05Or87Bx4x4nyQzamGpw4ntKN0VlgccLS + 2T20Rqs9oQcLqXci3y8eqy7T1BQ9iPelHNQD3Mw/WIwrGGWcekIjqj58iwk5QsZPlvgSnCaszi12 + 8Z8Ca7jxk0GNJEmqq7LlwqgKW9yQEQ5dvr4qOSAdt4bNdkS3bpWtKfn15RXnrr1sTa9bydaSckm2 + pqckW19fXmH1btMZCVpwCdI6eP40ZtyJ2SgGSVtZuS6bU1ThBMBvwlCCaaeF06DktQmPVI7eH9M1 + jOhb1QEp7/D8WS0mdOSaWNOqROujqvVaLvdYrD1mFFi8K4cp5EYbFfUo4sTN4kVfZ4lo+unXq+Fm + dgs94IYHUebuW0JmnXKtyFHNqkiIa/jHHwIOW0nSor6eyPvZLQoju1h/JkRy7FkaOAYXCHkpRWAO + mhqFizz+gkss8AhFxKpi5V4zzKPDW2zLyD68bNERdfWKY1EMUdW+uYxehKeMdckQk00sE8RUB8X8 + MPmMGOPy+1bGKF7BnlI3iApQ1jolPSHnm8R8LSLZIBWROOYGXh+lLqA9BQ69ukIphBDCvoLICvtl + rAOmj6l8oU+Dr4rpqFp0ph59OGmfOVx8g4C6PUh1CSj6FtQHtPNJRa/3w2IfTdwV0vnvZaNVhzfQ + yQXOG697coFsZJ1coDoxkwvkUzrEd+uZxHAmAPocf968DQfpu9d8mMxXd4m6H99C0wG2F8c35JFE + dfwblkZoNKUcW15B8RK4JKJ9N+shXwmSauDaERaxD8C86LdiqWL4qGyzEAWsmj6uIQr05x37/5SA + APIUhpruvgBrEMtX3EeFxZbXMjeOd/fqctZATC2VVazMHR2gof42eATqCgllcK4TdXA20euWwbmC + ciU4F5/KqI+Xb2uyoAO/kgXNwygMohEPyRUlgLsLoErzIWhsGJYzTYXJBXZFIWhjelfjUyq1Fp9h + xm+YlYYL/paYhb7nRmW99/24dhB1oRsuBvc3UOdB4EZeOZtDkm7KimZOk3PIGGwh2HUmQFu+38+V + IEMY/SbqTbxvCgYf9q6CNmshxgyeUsLFURg1sonwEH1P5hniuglMnLKeXjPkJ58uzk9o4GclBXuA + W0uHpvqBSKRgMO/iDrlbY1ouGRcI5J+yRaxva6DE6bZezQVsI1yHh9B5IASdWBaoup9kIjaiO4GY + eEzDLnloco1CEiMrfek0/OwQ2xg+EZsk6Tq7mU2EuDNbN8hYTZZUj5MhXKtYfe4JuE/JdpB9n03p + B2i3m3QQA38+FJ0tjcbDZte8NQUo9Msk8uvDch66UGi2BfXl+PK9SAZyH+aWspTTWiaVBR45a3Fv + ZrQtjxGQAhpS+2XcmWbQMsKiUwevqou341/fSgQnDEGFy2a9GYkq1SBmwh+XBwA7KTXMkcxmn7hh + sxsPJ/YwQyyfXCWpEl7P+yuHdyhGSq9bSaqScklSpacSt/TyPfPPy7Kq62D5jqKs6j0fcwcDpkbc + 4X7MTN9N7loRMDRpe3jpCFTtZD2/H6L8RZgNoD9frebMf0HQfHewjQqqCvwKl8UQRlr1Y5yJsylK + Zfqn0fCaQj9JQhYkk9qUtI24c2iYlQEOn2zS5WY3fCXUwuSkBCPkNeVKxb4fo/enJEBfNeU+h9xt + CKUOXDdkbiV1rKDJIRzXdrbdyUnXkaZmB65vM1QtPufsriFRDOtxlSkOHusuGNDmVtKyB/t34FjW + FKu3sx1ajOwH2pvb20ekZOvd0qk5B0nOL9iqWg6QHZP2yfSFzcmatSrspNocpBYfkoXhuW5R8Yzg + mxZH68HptVo1ctQd/trtWNszb2RtGFedmIZx+ZTujsVkUyxuqD13ZCsbfHjxelj3Q6XM2FW64QMk + Jqzkkapv6ERir75hcG/i9YpKNQiXom7hocX3gCgnos+uaXAzZeetp22TuPCwLuUeKg4eUzPQ5X4g + ut+s0gnWciivKRIQ2Ragki/IbvfunXL3d2Rwnh+Rit86mWqlbM6jzxy3qf5jgSLMzF6KP6rOc86s + O3gGNE+NKZ6uevgKPLV5U/cErxA6NZEa8vTXSsnVOo7daViNyzO2cnXf9tndUUqkZPsBQTNdgMju + /HP8wlpJUA2s1ARNvaQoqOcSoulTBdqTwQBLqYz+86fM910WjuAP+IuCaLq9G39KF6sUq5Ct0+H7 + dHsHHyyxjLY1SJ5X1xd6zxoJEn4UNCUgco+FIXd6itwqpiIwP2ShH5TkZYmyM1cVblBqLUCaVE3P + GMjfAg1U04XJtwp3gEk2NAGZEBiigKSk5mVwURbRxSzryjLrdJFNUxH1Jaf+TLyhpm0jjNYV/B89 + Qvz+dJ4tCe13VJwLDbs3orfw3/PZBsuFNkPVlazlqtZRIblwgLtSAwt5bixFB3GLvOHPPljd8ta+ + N9TLNP+nD5vONs2oRbVqhOuWqiQVpr2dKf4VQuAwBzNSoni+GboLCrVzdyhkYpPt9Fjhymchr5FY + Om6vnxPrJ1ipWKkCq90rAulwa7196+61msLMfdyGTFV3594L5pw6URctqNDKtsJ73o1R410/3let + Ts2qXWG6smJ0Pk14qQhzcUhYDZ6FMiTQpZBACziyPYf3b8+cghqxsgNvqvnwnkKckLtVCO0LK2pk + bMcofdDaZTSSyQxFEXTlSB1pz+5qRNPutzZgN2LNg/rpNQbrUL4dRk6w6/M353/nSoLHIfxZf38f + Ci1zq1xjkslUh1YV0XqYEafT/+dsOTku4+iozCV11XJ11YJS4p46XqeLVraxvWZVF8YlKx+S8rnN + 5tLW6D7hJyN/fDPb5KhFOhYSCbr/eML/Aa/8o/mdZ7MlMEWgOWYjz3yNaTAkpIXd4j0bxb68Z326 + oOCL7mYUgmgRwmAPCS6P6mY3/7xbH1G94ABKh2N3H229Ekyvx/RZzyM1TS0zzrta1tn0fq6fF9b6 + cFQtjxX72rOlOgbARpK6xab+KZR/SN5pbzyNYEj+673DO0SG0utWhjRJuWRGo6fS3371MaxEhnpu + KTKUP3/qxm4UuSM3xpIExPmqkYPF2wjkZNeX7m+BNYSSalmmVY7x9TKsGtzK77Y6b0z4UN4U9RnH + Lvf8SkypXV+16GBu6DTVLDQ6K8SEVkT9Szj6BfG+BBe271u0w7uHBTmres0x8U3NwJOL1yd6ygW6 + iXh9A33C27CMDIv7wJ8Bucw/nX+q5pnhnlMmMtcP+F8lmVKshaWyZuhq7f4N3K3KPmW/31vJ9iDx + hhRE3/Fg2I2qD8uLp+ruuS+iU4d1q7sn29jW3VNdGHX35ENihWoeMZgUSOQzMsAotLfjZLoGeWia + fZ+pgNAybVGIz4t7yqc8CC7GVirkPCZfmP7qfKAw97OO59bzuPRHFtFyKsKhlWLYLf62zj/7Nwng + 9dwSDXGKlum6hwqDfcXWei6ZFehlPBtjPC1P8xNyqAwcO3QTNB7LjoKj79CatBzmbtJuv7G4vhPQ + xfT6/GWnaCNsyNSH2bVU/JdqhH+4crzIXnSl161EV0m5JLrSUxJdL64/VCoOuEFsIuh5PoiuAQzY + GbmggrquGShqgJciEoRIAii6CdPbdSo9RtPdGqdHWzCF6HqxWVSLDHQtUtNQYqAvhI+yW3hyl06+ + rLJZqU6M44RByWubjzAMvCgsI9MqG2zDhBkVb5hbxuvLPc1eiADZuSB7xLIMcFvoEMvAZwP5Zcri + 1jARlU3f5nXlBKpRKGrT8YJ+oEprxwZmOYRWq5zSHUq2tczWcZb/iPmUXtxW7iZf0W6SB25KNbSW + fWxr5PIiL4xoXfMRwRb+QqJuZyHixxq5exHLA5lB4DL+z/F5hxwCamCZRSCpV/II6LnMeRXR1pUL + wvW8cibBUxBn3MgfhYHDPXlBmPmWVbQiI6JcRxlTHuwaY8b3ZMI2BSqbqbEliNNiBI37/7P3b91t + 40i/OHytb6G7SVakNEHwGF85TuLkaSftv52eeXq/q9detETbmsiStg5J3J/+rUIBIMGTQIp2nJ7Z + z56OTRMFEIdCHX8Vu77vlsqjHd5L3sDgeT4PSsaSHqP+8x0cFvVfoDjosoAD2jP69uCOR7YJCgI9 + BAmcYyXyssxcF7qfOXWfhDZBGZN2e8tyWAeRbEwdPCin4PGTAPY4+p5ONkDTpHs+ZWLoWaOIhQ8d + IROCUCUXBE7YOrdAtrFNLVBdGJkF8iFdJVfbhXT2XSGM7mK2UAVzlElTPz85+8RLf4TmaN/hgef3 + ZN8JxGzngHW6k4qF7SVdTJfCNdYGljh0uNjfX5PJDtGtl+ubZDH7q53QhFT8jEqyFh/UEDzRJGq2 + JFU3pNhzoqJ8fpsm9lUamR8RcAHsMpx3q4Wytb9wpE5iqzTlrJPrLQZ+wka/2rX6VO56QYXRHLfC + l1lNgYg6UtwnTHBtx7MKQKrDqIZ7nMxDIrMV96dgS0BKbbeGqayMYuHE2UGQuUnmBNauSLUCiu6O + SRgax6XtLUw6o97b3WCqgU7E1YmnOj0YQwUHCjRO6w9pRWLfcOJ6Wt2huH8wkrcWJxhZHvKkWnxq + KbiPu8znWsmfzlD3gd6w4K7V2vnMpRhb0X47WzW3GqgLmTLDP545cYsCo/S6nbmPKBfNfeKpygz/ + 6Ja0Od+Liua+cRSCdjTCandNWeGm5HnxCQWW89EwwQBxKr2I6oHx1vx+TOWrpkKi0+mC5x/Z0fBC + pNyfi/DUrzAp/j+AtYFMgMuzoYndkgKRwopulusNtFnduashsFjhSc17b+8wK0VzY+xhSDVQDY2h + 9BkIPrnRyeZAvEE9XBaMiKAo1NUo5UHAWKmMliHrndeUzvLduuQYg2pmUTQGaAgUOAG5ukX5bkIY + f53lknnoaOCH6pimvbKKpFhe/x9jmJBpuqaNAGuSJ4qA5XumQ9tA1faq36uYj45VRUQWjAqmLLi7 + 9RUluNO0RCqv0Y4q3shtt6NMwkgFXHz+TbOnnJZ8tZyK+qlIOo+ojMdZK9q+Lyp6MRnKXzOTVneT + rbJeG6fGSSC+20egyT5sk5hfLw47flljbxatG8YSSRl9e4j1wvNjj3APMaZsH4z0QZk1QlKLySyb + 31LF9YB9ZRlY1jVH9geaXLgTkCH5rmTFynFc6xQZz2e5wuwHhBb6TMtqh9OSeUo1t4jVVLcmsi+K + vyKq2iamutLD21OtsiBWkS6Mn7KXjtsq0kW2sY10UV0YkS7yoYSDxAFu0jHLFWm92SULM3MonyTU + vkV+JJhUFPoEwdBnMWQ3FqRO35yP5QD3ky1YZZ8kGP4evJWWQdCeF0qQr7o1NFexh7SD/rp8aHzX + jBSFW+kQ5YMGKI996EhPmhvH9gEW9LqlF01QLvnQ8ClpXG9PPvJSGRXOsXhn0YHmBk7IRiFWKpQO + tNPk7i4ZU+V3OR+rdEXx2yNY3H/DPhB/FXkL6XiK6rGwkKeLv2DkR3nL0Gwx3U1SquKKZcrvhyAZ + C5wzjABbf5XLIfSet5M7HpUUHxPlyIzLcOucScz1HPhryQEmlYdxVtf+pvy1xdU3XGIRM4sqZoUL + Y+5FvluEpc3NlIAirMKmBS5Z+x2B6wQs/nNw+KrktdRpimUltXkVBEG5o1e3M4ze+w6i7ZXwrG/a + L+dAbD+tIrixI+sOimObn5A+6g+GVHCrap4NmvujW0PH09GMw2/JfN7NLI4fLG6obBI7GDy9OoPn + T2SwjF1Kl8t/Rja5drLYD7cHEpYoXTkWzKLdDEUeRW4kk6dyNapLjMkoQea2ihLE1y2jBAXlUpQg + PtWXGGKKFi6xEK2yhTBBH6MH/REwXw9lQ7zEsrrob94evxe1zxtqNWeIVEth6vidDzeL5cWn8xFa + /aZLrLK62ALDy4qsIxPNuW1GZuQbi2S6Rmai0nccC6qjDkU97YJhz6mLO3TiyIXNU4oi2dzh0cqG + We8ML/RUH6/iBBF34qq8m3JR6AIoZW3YpDH8vGlPGQngRnKdS5z9sZhHAxreix2r0WbQNxXV000r + pFc0do7M8sE03MGT21YDcUr0XRtyn+JeaovXtzAdtao9X8G82xHobyjITtJv6VRsdVkxGVYsgf8g + 1LuVBrhPmcvS4JeV4Z79WqZ6i23JrFTkS4rpjLUKRcGCjJQQjLxmrKzdcpvtpfL3KziVo+ApCmXW + aGcW47QuFs0fHHW8j2q4Dln5TB554Mf1Zp8LXW2fY3H0EgSYVvY5amNtn5NdmPY5ekjyzu5qIuQd + kF6yen6T5eLfOwxm1orcoOmPw9+RyECQEga4OGASbYDKrOvGufXQrKRKbWoVhE5QL6t0Dcql4ATN + ClQLHJQgzG/nvmr/YcVfIrzcbMdmfS7VV3dwGZ+5XgWilyb85IEUvMhzzU2jxj6f3fRlNOzeRzOT + iEiHPYxKLFkNidX583bYKBUH4v93o+Ilga29dKJW4ZLUxDZaUnZgBEvSM+I/n6/dsXQVrIHUUtos + NsJmAl8hsp5r/yJm7L9/tfrrAKeaiXfET7kfXf1j9hPXP3n6J1//FOifQv1TpH+KBeZM6NP7IEWj + zKR+ZhHn+uc4Zupnl+r50c9hwLOf41D/HDv6OUhh9DPnAXNZpH8GuZ1uHzdUQI65e+egDCDEqct8 + fuTdVigBuvJsS4q+k1W/7FIWivkOMR38Mmlyav9l3GVxUPqyljR6iuisuWssob7aBVsOepbne8Dq + OlgjiANP73vxqdDsjRlf0dULzwiVKdmskvV2NiHrqghQVG6BrpeSAGj44/yC+b59xCC9bmX6k5QL + pj96SlfRp5PjUsQgVq02LX/Rq3EE+9wPRxEPPUdi21yQsIW3JvServO7GqQvqa5uhsHw2fF2Faye + iwCnSPwWwW8yvejdcvyOCdVH2FqyYomfJklP0XkPnTxcVWwtTyAulFjMBcqFsPWdcogfnoTqAosM + 3Yh7iFWi3ZiysRk109fKHeVgp0WAKKwhXw1wl2nAZ+7HA6efQnViLvBtY75aIK89icwxwvQyF2S5 + 2zbiUDxND466E+FaDcrf1NYdpLikr7z8ntPKyw+v23r5kXLZyw9PiUv+8/wSb+aCg8TFIhsFL3+A + CIj+CLgNC6SIXwlix8ey9C6xun+uNtwr8zo1YdfKXlRwytdZ/YEPsLhciqp5JFWuBSwUXFfvKoyj + WEf4lhz/pdLCRsgziL02VEuhyA1l0s3A5CDqQn+s/bBbTLPcFqt/BUFt9a9quhk97ZY2vSEFvIuM + lbuuFzpR0W+jvMyzxW0Kuj2i6RfgKVjd3aAIDs4bd4GUXmcobqIjBPl85lpDo0p1cx2AdITN7jZ6 + 846BRy0npCVsZjcLFTCtAIOUWV1cF3AOmL8SZcOkcJGVEYfJg/U4UsGGFGuGwzv9fD6+Wu4WwnNz + h2M8XSVsNRCnNguO4BQc4QWZ6tG8o6yugAPzFBE2h+XH05EOfBWpIfIjaGXQ3N/lqw6g1jjIyJHG + 8gLZTI+kHWIv//ebtOZ4jrR+wrbdgS51m9yoPGtpWrMOC6FtpnPyemq1R5SIxaqdLuc3s2GyAn0l + 2bb3ucVkJyytveYRnTxhDL0Uxsf9kMQ17rkkMjZfhuoTP1gtHBJ1WxDdQ5WiSt2I3toDh1u8Z1sq + t4EceM2tbbdtn0DdXk5YjAfNhpB2sEkWT5uf6nFZVLKTyw+m+ohRujx39KsoYvrfZHkLG49qCrcv + HqzEeoLB+e2C8xZxT/S6lVgvKRfEenoq7fBvj4vVsVwvZgXwm/DVi9gPQLobxcBgI09Wx7pfLSmc + EjbkbxfvpCD/x3IN9L+V69dK62D2rNLSEHFTMFaWhv5NFlez5Xx5g6NXzyrpIIso0BkMlEzlRwEF + wfRUTIM7EgM82UyWKAQJEfSuZVDow+ZhlSwIWk0VeBx/fDhzfNfemEevW+1nSbmwn+mpLgzNvdcl + qGrGC4Wh2auxiyHd3sj1Qyd4mMLQ3DtuLAkMCnUZcUjXgObe1Q+vAd0jhtPTrdzcZZkGtNEUG2Cc + edZFmpv9QtUUmrGh/9OKNO91B/WMz9RzbWQ1Ze0I13+0Yr+RBrt23jDnpQjVbIF2LRtZw12rTky8 + a/mUGOoExjnb3KERA2+NQgLf6nadLvBv0xTDq5LSC0Y36E/mLJYpfqTmnY3xFgJNfJ6IoiZ2OR61 + eD4HUe05fmb/cbQHYm4dixOQKxGWAmeiuET1onXdzHYmuCfshr5rfn+AA1LnzbrvmNuyNF/WyPbQ + 6E6MQ6OekgwzSW+kPCJ8OhXZjIO6PwxPoO0ACdBxCWRIBKcaTaLZJFmtDqtMZUduT0CFJX7CI8Oe + 2p+pQ4K6OfMJbsGYQRlVeXDltG7U6/HXvcjT1B4sm7dzH48RmmxJ5KfOJI5UJjHoSm18jPi6pY9R + UC75GPGpNEZ8uGQlawQX4fsFH6PHQscJRx6LGPoemqwR8zV08B9ijQDdIRxodTxys4DPOAxfMtYq + 4JOa2AZ8yg6MgE96JovN5pdHKVEo7aZrDM4gx0WmBKO0UvPHQZ40vAcX6Pnr6HXw0glEfRTYMhS6 + iEGBLAIhmEIc/otn9wj5q2rrcSVVeSf8JXPaCVWyja1MpbowRCr5kDYfZffB7kmowL0+8s+ugN6Q + PR/UvkEvGP2gZAXK1oDK/2UIPA0F2iuq7z58joQHrDNzrCakRbfuz66gjk098WZKfcp0D1Xyqj9b + SQuFzLrRni4pTsvY5OuujsxYJu3XUBuJY6Oz9Q6WaBVPH3Y34oDE4GuGaxG0ai+6tiTc7IuUeEPb + 23W6RNtDD5G2inbkklZwKKHeUuKirDjb2/Cl47UszkZtrK1VsgvTWEUPZZDaJt1NlwP6f2qIviy9 + yeLA3qNBr1uW3hSUS6U38alEJjj7rSQTu25QKr05hmXx4lEAN5MUud4iSKnw5oyGGF2yuxtT3TUE + gICVob+OBNuf3/+FX5Ssr5bf78egAmG6uHpJsfPdYkOAo7C6J8wdn7BgeJ1sYd2R4vhkebxBmQEe + w58i/afZVAMSzJesPsTPjPB166BvotBxvagUyJz1pj+tOvIujt0iZOfIRMGJvCgshiOXyFMGSH5K + cq/kPyXmhUi8HESoE/lOHMZ/Dp7QWg1wx+nCmyGnwpsBMY/cN/aApxMFFDk2n616ISjmujBMi9Xa + a8YcPA3hWm7eyg9sZZZV3C0wFUTHb1dBQbZpoyJiFyUdER72rSTaaZCiY1IhTxj3IlQhM53Sfe2+ + ZL4ouUnIOZR/5sQ6p40zLtQA7rlufQbUX7PFRJTVzIOQ7U+HUrJPIOET8iQnyfRO1Rq3J+X7TiCE + QD2ixkKfNRlah8q+hyvicZwDJ9/s1tcg7bc4Q5FL5ms9C52qckcU7PD+gnFuLxrQ61aigaRcEA3o + aQZaVIrJZ7FbkA2cV2MeOqHLRzxkvgItUk50cVeQnUldpiM4n1sJPQM7BO1SIl8GAanms2Qx/LDY + zG6GDG7IdZpCu/kOhP/NJK9LPjt9d/58fL2j7aPyl5dwsGd4e0mQGgVHvUrXM+BO8P3Sane7hs+c + rCyyeLD2HGhD+QiCIw2Gg2jseOyuZtTt+7sbdzUaIm4bhgx8Ww7ffzzFy3A42yzJQg5ju022+qIV + w8QbYzwH0V+Ew0OPKxxHZc/V8/Xp8sOpmoXN4NPlqb5gGagP4nqR5e+KRFs5MvtAmzn0dD6Bi3Ko + /CAxFS1Ru6zDfdtHtbsokmF+LIztOQW9bhnmJyiXwvzwKXGKyz9OymF+oc+LYX6gRLDI80dB6HrK + cnuZIczjWTg+/4yhGEoDRysPTO5XLEiJMTQYRJZMhfecostE6W8Ejbwf3iZf4SUBRo/nh/8Dt1ku + vg1oXcH9b9CA+UWyaDsqPM4VMbi8n1ToFcL71TQ2xSVQZirUTS+ETYW1EGAR8FvHK0GjPbHSrmbE + n1QZsui/c+A4uZC/kZipZ8fPYTp2MB1TExEtKuCX1U3Hob2P4axpG2VhBHsXZPCUt+0Az6MOIQ0d + iaN2iEtc8TxcHWFBys0y1gYpxXcWKkCoOVcrbsXgcp2Gh3SaX2irjn8UsLb8zoNYi/UH7oMEyJwK + 6qKJlTbH30ettTnZxlabU10Y2px82EGbM2gKmA/OpeeuY/hUG9S8XnHiukOZyXWMHYWHytuUURKv + 2+Kh8ooySuKpjKO+eF32xIuwg0IZJZ9zFrgjn3tBrEARZlfLS3QJHG82IHGBBO6qqOb1Vfme7oBH + GkQeiC8PdVm2BvD8eD7KX0EsdCPOeB7AU+s5FeoMBSWjUrExQj6z3o80i8DoZckkNln5qXIQOUY1 + rwa4iDm0zugHoXX2R6kWBPtnRuxUvoaYUJA/nTltoFDodatTLykXTj09pVN/DjpDSU1ww4KaEMCp + B9UihlPPoqi6FPZquUYjAOzyLVyROV9zshAZz7cwben8+aiI8qA2sIFEK0qsJbjxFyLdu4Tdsdzc + USV60vTRMloqUZV1AUJKqt4jvnS+XFfoD01oFCar8lgNqwq9OOa8BBBQnhZ4PN6IXYXpOnJ6qv0X + EYhbNd3FfoxCQ3/QLK7HI8bdAkEhxVdm8wcRq5uK6rH1VMjNqLoWRYETF0t7/yQb8shILxdy+C/D + c8GlvhbqDNp/0jolWtvlUOz04dVuC6rJ1vwom+NSeq30oQPiITjq3y7cLD8mJKO5VHngf/1UOKYg + GnNDWgmIlk33dE+WLprvrlS6VHKrz2A4AFHoSSABWdFojNbtC0yoI6UnHqGnbaOccB4MUp2n7GBT + qZpzvNywhWJqN9KUkmNoLTPzD6PYqKa5FBwCalMLgY1etwsOIcrF4BDxlAS2jycf3RJ4nevHVdEh + fhx6oyAMgpgr8Lo89zevs8ktWuNQlt7IqwumIPeM5KaPkzu3jE8HKj5cQxsgrNSerCWiE6Ril60L + sD1hWCfVgEIVuZ5XV19JbzRTyWO+FTktieTGuIETkd6UBaXQ8eM6u6MiWumxMmcvP9dH5STW3Awd + iW8T3jJ0rgGBdA07kRA/h8nwZHvN4lXu5sdqaOl6ILaFDuGIYlE2FdTWWHtNyyGqNheVTwSqZ6rV + OQ8dAtlGltNaaXRC6Sy7S2ftW/tMAmWYtbHtfUKwVckDrvd5zf5u91F4Akyye47PAxo8W/Hzym57 + 8JvFXJkzveP25kzZxtacqbowzJnyIfHau/uVKm55D7sOJG8heX348Hz47DZNvt4PRcQW/Hb+8cOb + YcyxHrr/fCDf/vBhmHur4iUuzJ5+GFBgeUyiMYZZ4KK3sYdgY7/QeIT7aismeI4WI1gLA1hiT2D2 + AWJhRGe11L1NaxZ4xHPkJHaLVg48koqzlcjRaf7w/oqHyIhpUJcaa8Raxx3bEtw3KjG92Lz6kJYz + F/a3ebS8PAs7u31C58FWe0+xK5cfs5dO2IpdyTa27Ep1YbAr+ZCYlIhuuoavSLXZeVBb9+AtL+Td + Zz0IuPZQpN33XxrDMqCsY4J8fTLAI9Sa6CVrtEWsmvXADgx/G6qwxIhg0xByeN49jC72JWZQq9p/ + 9LolZlBV7T96KpWot59ZqYCt6wS8CBn0gjEeOcGIsSB2JAiWrCuQzNZCT/r87sOH9ypCDQMIDBOb + CBPIXSXp9wkJn5LCs09vLwhouuw6fwaPzoW0YTjRjxDkibBKVYBCotxuoFAkICPMt7NC3syzdPPc + HBl0rPo9LznqlbaXblm5ZK5EVxEn0Ix28euAXYFV8gqr+J5wAeVHr6n/55hB/acfRnU9ZsbnVNRw + RYiPaqBxJ/D9OkNzNclsccfFxTXoulHcim4FZFchbMakz4PAYjoGP3735tXkbTpHDddQkAfidGZ2 + ZFnf142ECpcbfzu+igtgynWl9bKWtgPuZ1bs7My0xMMIgjIN0a4NNBs6S9AcXyEt4VaW/Lq46TtA + 5QQxSZ/5oHRcjGlyhyExm+0M+E5rz2nskVE+T/X3f4p1sslCZViLpNieDOkTDP7aEFr0XnI9uIAD + P2tdJ55U2d+Rj+GbbXlhm53wA7FK1aUfkKh8chJiHn+r9HDdxk5UzrrIicr6YVYMz+2jGJ4riuG5 + ohiex0iRB+XTSF01Srx1S5t6lNzxhyxW58EHBPlJWaTTaS2etq1k+9OXwDu4BmZPheiCiG5XTC8b + 59Dhf3h5O+sajg9VSi9HX7DQT2/fvIkaaZWCNONQZT0HMSjYXqukZ2pim/MsOzBSnumZ1F3eHr/B + 0tJDLC2tCqUOTC9gQ8Xpj5sNHuMiYJ/sFe0GjEse2EdoM0JjhuXj3R1qMwJlTt21G6wMd6BebUWu + uRib7xFwl7EE7b/wSXjy/SINjCpJxI49wKrSimy9C+dvWRPacxx1f9Sd2T4AL3orG/00zLf6/D7p + +tGxBndlwXu/NaSSamRdQVp1YpaQlk9JbF6tVyr4M7/HBg3b7xybDERDAaME55m8XZwKDAq+mZKr + czrbaEtW933Rz9VzOG/fF6P8OMBIrVRYEgLzS9J+GZ4qs/0vq/wbskolRjE3M6Lo01qwmIxIrEox + 3zrTYu9SDAmbdUJbVoxaJ2GBGgXMspUXkJrYOgFlB4YPkJ4Rg16nX3nmpciZk/5CULtnlOK+JdsY + 5ko+H1S9V3pteAF0B0hcRCxwn6DwAsZzJtUrAVdDP2/gyI/yx1+kRuYPcVfdXHN5lzz8B1Z5trAq + 20OW+cRhTEm1hnSmJf4wbu9L3SqbvOvl+kvNKFtqCg+DVK75hkMw+mK3FnZwd+i5p3pz9VBqOooU + hQ6Fou0DVA7qpkEWjh3Kj3x9wdzIPvCWXrfyGUvKBZ8xPSXWevz5tAS9wuLAMQsnce/V2Is5qHYj + L/ZEod5S4K0qsqdykY63N6zHOqhxCIP2Hq7ssx694X6MWa3v13U9OLF/Do5Vy7HKldb3S32JzVJp + umeqZib3fmH+L9xZPT8a0hTKAqab3NsSdUbUNFyJGEqtYUAP6fDZ+fEltDe8nhKzBo9ZMp3OpA0c + 1l/juSiy0NjAf7nd3SWL4etk/QXYutgwyo3pcImqdmj+i6jU9Ut+D7WSuHqqvMkCl1M8bjJZLxsG + U++UsiZR45DEulnCevL2Il9ttYU3pI6wF7rkCJmlE9DH0No0M4YIK11751a5+GCsYtEV5lEhjQNz + yUqH3UoCeIJFQJ9Upcq+klR6qGZY7xuNHUoDPrlwYs8+IIpet7rcJOXC5UZP6XI7eXOCEQ2Fyy0u + 1FDj/qsXbhSEfjRyozDmUtV4S7VNc35CgaelihlvKOx+tSRh4UgJDngG/lisHS/6RsW4ztI7vpJ3 + 4sl04julO7EyC6ry+BiJJm4c12WGuH4UO0FQQvMRVZh10VYz9zeshSkwqGVXr+nI18E2lXFNWMcq + KgTyZCknLHI8vxgpdMrwftvopNQCKrlZSyAqDn5UiBSq6STFfM/5bHN7R/mm018qUojy66zq0hnb + +bn5qQ4r4rJWT2UG1NBQ1TBH2fM9L26IhtLfOGi3d2VI/XK+kY/+guN9s15+297u2dYDccK0NBBQ + UBMuB7KKPStoxcGDiMyeuGmFMlWVPlB/HcNs8HwFZAJoJUfUsk63rifngx4lbneKGZ9gHXMBCpNs + J7dKwrKnOpDHmF62ZQJ2WvSh5acpttZkGHY9R05W+G9M9avhy78VlfAHumr7xd2jTzFnoQP6nuew + 0i4c53YhXNzHn8+7X7WuCkNinu+8dFi7OCTVyDYQSXdiRCKpp3kQctzzBhB57HBZncdlLUqr0uuW + 1XkE5VJ1Hnwqq/P8/roENspdTJE2i/OM/cCLEBIoCNxICgWnCIU53oJ+B2LSyAj6pCQ3sZZCsBYv + wUeJxRMhp6hb6Sh/sUey1DiEft2ozMnNCqQ54JArlHivllOlUn/eXZU16hlmSg6B5v/bCYZRbmxi + ABZAw3Matst8kAhLQgPlT7fooFaFz3dgU5tVMPwvcKq2RTsBbIuaBFajkxw8h14RvVClpFi3libz + eegX0UPUlabmQ6vgUkR4B+rLrCAaeGGdaKD6GPygLTbAY6FBllzHpVRbJrNbdW9jPGbTjubtULH2 + 6uVoo7yIuVQm2/wyGIATatJsdFp9x4OQlletpJmv9mKvD86IXUHoJr+iOpRLFhipOOutcscOxAFU + 9Xb38RDLq58ccvs5hiU5mRmY2y2tvs87vNxKf5bzmObmdN8937xgLtlcLHlmu63kU+Xi046Jg7Ej + Egf/eHPGnBYpUPS61d0uKRfudnpKd/uvHz65pRQo6MbEkeABaPwBOjlHbhAFKIDj5b6BQ46ValTN + miGZP0Z5e25l9Dqmm/w6GiYFYFbKQqGr+9fZwi3nHNVSe18N4BuEtWXJwxAhrop3K2palWHVRctO + vhsviHm7blDOw714QOYTC1yf2fSapSgJwIavaaP6XJVhNNJ3hnn/mxaQfCkVh0cIH1dT9D0XWZwH + vSoKGIFn1k/Z+4Hml8xgB84S67SpsPFbouDPwaXY7r9k293cG+a2B5GhfrMWsp/qhp1sG3KANgNx + dpUE4rpBQBG3feQkUcZQwz4ZkXevHrx3X9JTWB5kccGa85/2l3rD/ZO/zBq2nZ1p5QB6e+KbuxOu + y9M6FPTF82OPRAE0bltxjTb5arWy5IEQLYcGQ1BJt9vlfFm4VvY6GHoTfLyA5PS6m6c1NUOi2xSZ + 2KHkY+ERsb43rU7u46FE7An+9HVgdm5jKza/d+aqUckOo/mgA645lULUEIpZR7HFZtHRuSY6OWgK + +qy2HcdkhLTa22RlaLUllBbgKzQ5vwXoN71uiybnl0G/6SlpAW+OP5UsfG7AWAlMLmQuC51RyPwA + RQQRYZjOk3v4vOOFwp48TdHWK6T4N8mibIATvP0bKvW1hh8ndsOwzr0GAhmP/RKKwBOox32ivwzx + 2JZqn4hQlVyc1BYul9marUb4j0v/cPhHZOLP1jhjsgQXzOsO9hwm6avZRZQwEYwikJ3wctqm83uM + 35MNpjuBsqTeJ7/UAJdYA8PBxhayYkyyYj5rGhTlLmYqKo+QrWwzimkD9BiFy6XfBb/QNdVuOuQh + BSwyx9TW1EMh3MIymHT0iIh9jE3yoRkNI3qASArmkpUiWQjwuGn34t6xE8h6Ro7n2tsr6HXLekaC + cqmeET6VEQq/v/VLQOUB84v1jF54DpYKGHlOHPixWfgMnbcJKBt4SIZAcDhdogebXL6Eu6gTrEfD + b7ezya0oBwO3GiIdo29rhpBmmuEA61ksTUikwyukZfBGAvFxhTwNu9aV/ShAYpf6ZQarmxYKK9Sy + 1AeuQnQAS/1bLdoAt68u/+MHFD//A3CwesByiB2qg3h65votPJP0uhU3kJQL3ICeymIln09LILiM + RQXjZfxq7Pohi0Zu6EWeyQvydhjxieLiAgYtgsvuQGyWQQ9X6fYb7o18VP8IQ/mW32cCGXeU+Y52 + m5fDs9kXcS2jBR8rIm1v3NVwJjYKiNjJDSzKX+nw45cNigFJyTYHAjK2+nwqg1mF6K0lzeXipSqs + gnQPP//ALKNAwf23ppS3ljEH9kZY8lkeFPv00PQNjOAoct246A4VrEPLI5vZzQLOPZyXSbKZJFMz + uCp0vdpwJjXPg0sQfGmNzTSR6f1GfdRRLvxIeCB3V3oEOhaHthajECP4CcVIYy6Sudo1y7V2Zq7h + 2C1v1jjyZ7DHCLvp828XyKduvyX3m6Nsw84Wt7Or2ZayQCiI2qhTgGCiSFds5QGeSC1mui5DZsM4 + BTuTUKcgbWFga0wKmMzWaJwC7rG7U/YlKcLqnJSvUmhKbiqZVK0NzPWkt6559WwJchZz6Y7Nr1lG + UE7ffoLd2b4XBLFg3ZdnH34dPrs8Pj0ez4HXPG9fZqwPK4s4S2VTbsUBtFKFIxXsErQLdgnsg12C + ymCXQF0pf5x/DsrBLnE52CUIIpA8R/BPpHHVk41YC8MjWFX5SRzndALHEI6R2jUvh3+stoE4c0Ye + gpQ54IipiKoxaIQzJPU1hXXBgAZdEUpEXokYMnVDCKJFvk5RZslqlayTbakAV+zVct8AEeTiIvct + +mgNgL64EN9yeTnKe3I8DipKMcDTPLHlLAWz9ExUgrwz/DfoaC0Fo+RYoCY7ymLW4JqmOcqHk7qs + UH7y47nRE0yPE7H4zwHNx2h42IYY9bIPsJQlOr614f5WJQcgwHiyvlp+B4YEx3aKS/jH0fA22RSM + FdiEclqyD7sKBnhUsgAYv5/EFql179sAJaoNsGehS0BcFEgi9+pdOqVMEeLeRHq6q4kYfYxkGrG9 + yBxjtzUtb5mYwigKJ97ODt+HDaSrAeOxokkezx1xYLSIzi9nYcRfOl47WHzVyDbHXHdiZJmrp3RZ + 3m62Up+6REMmKNvANu4H+Iv8eXg722yx6vo0hVne3ovs/vfQbIBtMY3c5YHCiuJksEMJEc3pcBDu + ltN0fhjoQcBJCMzIbmZzaNkBhop7UR2lZJuBmFrLpz+Hr94LDcS+nHNar2mHcbetKVLnmoJzJVxe + NcEtOsX0QH+1tMcL448ywEnu5kufcXGjt/oO7kj8z5rNpavAWGwvKlUSZ6UoVSURQTbfvCKv/0cg + EMiqKhVf3qnsQ9s6nNlKRn4tAzoMT6CH3P2QMn7NfTxZSr9PcyWIus3bEyQ8lgcQPKL6tKGmf8go + e8OHYSGjXONPx2/y8DUVV1Q713U3ui2cOJ207NLpPhi6f6gjvmlB4Hu7yTLM0SUz3NOwLViObGNd + MkN2YZbMoIckvZycv9MHPI9qeVC5dxl1MRq+m62YhgcoVduQg0PUzCjkUhKiglB36obK93iIJET1 + W8yvOoTeIQhrPwrvpgPQDDTywvLMtdwPjT0pFytjGiTWZ+3OhWpiDRJLHZggseIZHYrb+9USNH+Z + sCkLyVzeTfxxoL8J4dQvP57oCKNPm9QfLPA/CPIHXzPoB7RfWpCJAHR+VVt5Zg9sRkfw+kdFw/dg + t0VEtYDJJFZBmyieIHIg2RpyMn1rwa2TS/OQw81VzTSxteE/gX3MZx+GAS+IIyPeE45cul5OZ7kU + qk5Jrkwmub4+j16HL902ValUE0tWojrIsxL5rACuXyy39Owtf95UnCpPHW9ITvWoflJs/cPKV7Yu + wtWQZ0e4aVfJGpYT+Ea62u5sow4Ct8Kn1pZPPDZrQomVihGiG3E7W+0/232pRv/hwPyKGfH/u5HJ + bq7XAt6GXrdMdhOUS8lu+FQmsr//wHgZ3sYPS8luLHAdb8RCF8+rjBdB5wCalEQkhgpfknnmtzPG + K+NcRfBUVum3Kuop4maOs4qe6j8Ma3s7w72D4Vib+wXIdsiDzKjb2sCLOPD92Kkpc5xRU6lP1BOm + SMHI16j4C+X9Oy7h7f18db+GHTLFN569/3j+/Eg4B9I1VS4DaVIaUzF+FadbGpPhKM534hDCUvoj + /C9j9I8rw2dpiWGf/nec/3HjHIjnYrTiT/onrn7SwXcsEhYbkPrEr67n8NyvPBZp/OpX3w1Fbh0e + DyF4F8/RtrNEYEuyQdbvK56PyWzkCycMWjBo8bodgybKRQYtnsp4vuM3fim81xHaY4FB+3HkBXzk + x3GgoEbUBhURoaR5idipDRrNpli07jZZgFJ2dY+TdzWT2I64bdV0YTRVMvXZSkTCw5N5OqbmqUAw + LeRtikiqnDZKhk5Ub4HQdLm70s2HV+s0+YLBVKQeUnzT1/Qm3ZLXgqL0xVaWwuGRiKza5NUBcu/j + CEMFkIa/lAOAlYxk5kJzMw4jV8PeiT0eeV7x3inuJvOyYX4NOdCnYh4XAy4M3X2TQ/8wIoBDXgIm + MyIsPFjxqJhXXDHVaiG+zhJ6MIZv2E1g4fJKtdm1WwzuyLp1eRR7xaDAPd0a+wePfkpBYgZAmePU + xQpGkRdHUds+FUPOKS/7BlCXus4c7oeR75dqZ85EKrjlejr1kaJyLQf/WQd3IJicTtv2Ij6QE6U0 + w8bZtTZNOdIJdjilwCVXLVI6HK/9UFPgQ1jcuOPFYlhyzXbC/IPLaJ8eLs4yvtmRLexdjj7Sm/e0 + bgr05LB22OLiduX7Y/xv+AOSow93pD6V3GKHbKVmaMZeULtGu/GDWRJ9BZcHm+ClE7RDy5NtbMHy + VBcGVp58SIKeARv59kLHlQ1yP6s5GA1ffzhlSo8wnW9ZX1i2k7syDMkh4zsbBeMrGN/4Zr6bJLbC + vrXzrJeUyUyLIL9udZahWW+oQ/SCH4YixkZhSrc16hPH1kGn7SCpWzTfM4xIfATGUSq0tzUuJlwX + 1hlXrUjsG05cT+txIy1zzftCAnVYGBRJtf3U/XtT8SfKSz07c3ynRdqAeN0ubYAoF9MGxFOZl/rb + O1bKoI+RkxTSBngcOXzkOR6Taut9mmy2GTKuAUemVbqj4R1i4s1nCT68niEunoookImgy2tW0gMr + UXcb0RZrEbKdwHcRcOoQFTGfcBpE6NUtFpUQ44XPS0R0DdyLJpSgiRrt1QFzgiorgCMbiRvs1sS1 + qtVszVk4nHIZzbKR8Cb9mq4Ls+wzh9Xhh+pZHpzQnhmpCMdN5VQn6xwMZDJcvc9JJghokK6PZKqt + wM4kEphGC0u0ESqQoke/ifFusodHoHktdze3W+QGVzpUk0KVikhHoAtevr3wjpSba7kjoghysNjO + hKAyTHdf4KTiBw3wBGYAByGXcJyU+96wQNZqkCWxvdFiYudWECrtdps7SSx/BTG9VfaK5o/i0Htg + r78fqPb1SI7NNx8PuP4AlDHa1JXNlEiKr6rkus02XNyzYb71A+s2Fbl3TJen9t4FbSOPqIlt5JHs + wIg8omd0mX5dbWJHlky62SWL+/k4pzhqe1ARZSgv3e9v9k/qJN+I+hWhS1EktYGAavPq3B6RjS3M + T8t6edhOqt4XrGJHxaGg5Rbz1F1p8Z1YnLR8Fs2eLM/GKNBIR4Gyt4y9dNrEqGSNrONAVSdmIKh8 + KiNBTy688afltjIc9GZ+P0HXlY4A/KwiVkz6GKkSS3CHwPfElOm2h4WQsMClEJIZvDDe7ObXuzWM + Z4fVLBtMe5Zq3oF8+G9VeJzKEJCSLiIuyIPZA65YDxBl6gCJlLA/zs8YZ/YuO3rdSvGRlAuKDz2V + Lrvzs5LHzhdhTnnFJ3r1govyrCOOtR14EZBHxUdIN/IcuezwWeBcPldlk3FtZJBpBZzWWxggHKrh + GYuEkLgG6RHGlbVVJduUAOtfDtcYzIsvFxOuoVvdV3akyN22mlfD7WzEkaZxl0csVa63QlpNTKQz + PzL1mHzMhe/HGNNR0LnydeKNTOvQ5bUaUeh5ZQdfPSq2LlZtdsBr4ZTzQy0B/tYGnAQeK318IU9b + TyZNbmlhhOclV4DIBBSq9empGRn8RJtwgIdN6TiBQxnX+I3INVpPlLXig4uk+VVHgNtKCvsCmHtQ + TA5WLYhV6+PQqjlc1ZTzu59D2CmOPkmM2JwEve44/cgs8PWLJkdK1VVt1XBPKhuFn1pwn4ckvD/v + O3IowUWd024RoHHkiQnrQEJe866j/S+u81JUE23hfhFNrL0v1IHpfBHP6MoWuMFjPpZRXclmlawF + wllydweDT8bzexHXnZOaOzTJjcT1eRRyJUtL2HANXmwhTVsrNxHzdXJcFwldDJHLih5Z7fTOEb90 + 1mlyuqYNMophxrC76fI7XkGybmVH/ytHACu9BPsX9fDAYZeqYn68cN0W6Lj0upWIKykXRFx6SiLu + 24vTUokM2JRm1LDnIzouj7lAx/U8eV4+3xJ7QZPlZCTypbbJzU2aVaj9lmw0juBUoa3kdRiF43O3 + hiFNVlgbTGKuRNw7BHOFatLSfq0qHdun5lbj2Xsct+IT95n1FcDpqoSfE8b8l47bxk2v29ja8FQX + hhFPPqStL2MZnh2/0w7454PcLwVFnV43aKMhzon5QKFkPrB1wcok0Fsky74QkgpshkODTjCNJJQU + euLOXG05hIVplWJGLWy3G5E3Npt4RBw6ndxJNPIqHPrB2WzqFtOyh/9z928+wIZim4WR0w6Eprw8 + TwDNpXJQDwoPg/AnhM2gwQ7ITtY1WZ2CIYtAHHsOxs+RRu5FjGI+jP3Y2HLQF7iGrRTss4gyK0vr + mecXz97z8a880EN6fgAH8bQPgL+HE83boVqpRtY+ANWJ6QOQT4mHAHdYY8QUovvepfjhGdCGRLiy + eMXoTaA7eIrF/HA+8fRQGR4z8VuFDblUeOP1hct8e+s5vW6lWkjKBdWCntLF9f78pAhgzeIgds18 + F+/Vi8DnnsNHAcgAoVQt3s9ubkGKwjGDPjEaQp+kswoB0jAmLjCSeS5CAsdUC8rcOOqwi5wrYxcd + SavgBmZwAyuDIfiwCDfDLBZyml7D1ErsSXm7ioSwd8cnnxHbWnE6Ed+fzOfLbxthPZIF2TAybA4k + UXsEtRIDRKR0JXC1pfrzfjUpA11b5bmc5IrJux5XKNcPgE1t0NcW7FP2y+W4Bodstqgq9G6asCNe + Y8JmnhMEsffn4NKsO/f+w0VWLjXJzWVmC1ZLks+KOGBLHLYXVngqbwgmPbctylthgMdFab+Ox+KB + nKA9rBAfiFVY3SKrlqDbhUkvsYx61D4Ce5IpDCqZCBOMNLOtmnMrNvqkL4esA6pXh6slj66QtrFh + G1C9esxWFHoKcrgB8dDCwOFRRebcoTj8QusggtYb4m0yGqpwS5jMWcnttdr2xb2sbsBAqW9hGLS2 + GMg2tiqc6sJQ4uRDug2Bn7jSM3zOBqVKdepqUzZM3F/44tW3jQjaYSwm/CyM1VP6vqh0PRPhEWov + TTshTSJVvVAy22hym06+rJazqhPUAEjsyBiOfJ1mI3itOUCxgXLgSYNvFVhnp6KXh9aRBAJBqBaj + NeaJE3IKnzF5mQ37rp8lz2fkkZER1BhZeiAM6cPXrfwhMndNzfInCaCGrD4kW6zc6FX8ol2xxoMI + 7rH+OTqM6xB0mZ6QMWH3ekJmuEsWWP8GCHUe1MEok+pyCpV65kf2nh963VY9Q8pl9Qye0oV0+f60 + mNXBYuFkNtWzceiC1sZGIcwjk9XGCkL5yW8fz48vLzPBXJaoksYy+CQlcb/nQ5iy+f0G7zyvFBxS + LBgtjCoKL3eBwcsKiFqpTpe3N+XUkMJ4jKTwiEVRXQYEizDklJcqBVmpYvsrjqlJkJ//adwQdSes + UF7OCGXUaoicIpJA9g2h58alGj+q67z90qi37odsH8WiKqZm+dllumUnzx919Qe4ezNtKcBoIZ9J + uTrrDqew0WRbThj46YAFxY7GJmIZfinu/RKtmoo5YlPlZ6/TLm2cL8X7osyVd4JBxa3A/nOt7N15 + qpuCQ08+Jn6YzFcyLF9IrbPsukYzFBZDQ2CfyVJe3G+eDxrey14bPjv/+OHNMPZ8J47Z8wF2I3Jy + g4Dg/h5OYA4dGd+/3GzHamx4yOS4r5fzaWNlpxYJvxQLJnKKi+R/sQlHChklqaSIgjGfbW5l/pER + 1QeMR8iglM5lU+SZJpgipxKEJZgb82x1vA9DFOzCTw42GDMhxW5WIJpYxzp0E30PzU4CEhTq0Lgs + 9aqFR7zvx8EleJFHYqqx92spWbuOKPr93ZnDvZPxsbWIqBpYCYmaekFMVM91FLzrvjZERdAxWSTq + TeZlxejVOPBczx0FXszZIWHwo4pCTRerueseUzFA+FUEILtuOQI5i2Z33asfHs/+JKPQO8aFH7Iq + A9pFOsDb48HAsQy/rrQld47b/k8Mv95vcO03/Lp7DHR1VHbPMdWSx3JHgUiz+Li9IJq1soWSzrox + 0KT1Y+K3d8u1tBTnPVh6l8KfV7ca9OSZ0p6eS0GTuS73Yjd4PjBfVMv5EagPJqsNcwl0moXKrJxV + lDdbmoZgEeW5V5xzYgo8FORAYEpkjT6JMYab9susBralQaKNeOCULabUCcq3rYjFEQnecEgQRmix + IZVTUJPIZ7YmUo73H5mYmqVVmwR6YiuFnPd1aqgBah7bu/hA5GEVPkVEOlhR2cSm76+fTqRbYc2+ + mnWjejCU9+PWHdc2y4MCbjlo4QRaPduK/SNxK6Bt3dRV8XKXUdkw014vaNq097jLDQD6ToWqOqCS + 9xEnzCmk/tcLJ2hhWKXXrWRmSbkgMdNT4t+v334uAnG7buwWquzyV2Mfxhs6Iz/EL5dxL2jrXt3O + 5rloFwonwMgDsRaLfyucbBGIcPnp+OKtzr4bGmn8ArVEV1Z9e5GV18zC6XV5VRKbX6fbMtj354vj + 8/MCQI1TW2UcwUYRDOaBgL6rP6NQNDeqCytRgxv8uJk+KovdNMHPsne1NyZBoI15VgF7gLtLAz2H + hN3cQ2Facfnnxy1HO9a1ZBuI19UvDFgsxOw2tOpl9l4BymoLx9rcEZaNm1k9nCBsQktvX5XFoaW6 + AE3sEFiMyg/riXaDzNWHxYWFjHS/i+Sq7znojXbFHKgbypVQ5K7vtoEix9ctocgF5RIUOT6VN9Tn + zyVAN8fzoxISeRxwz/FG8E/kS1wDNHNp1VKyr0WywRqeY/R3U7ntdAyzupzQaddwI5+OT54f5SMT + gNtQ7e3Xn9/xq6PhJ1XoNL3GWDv0FuUqJ2LJU4R+gl0hdBPtLbqisKVyeJa807bbso8w05u18ths + +SmAd+vIy9iL3CiMy05DmpThnkkxO/FrfYqOy+I4joq3auZyqC5QHxYo5q/CPEV9vVYMe6iGXfAa + OgGCDNShyUnqA5AoEl7cMYTeCpuY6iFYzhU5FglfQK3aRgAPYySmMMDquEy8wefLjYis+j67k+aq + io42R/qQytjOk+SacWel/ZwCNue3z2oYR8oEZm7fAZ4qDX0dBM6Tj4fPrv+DxIe+asT7TEa7/gO2 + 3GL5dfkPmPGcfS9n4s25lqycmz88gt+n3u22uc1Fhfa/zPVi8rF8+1I0J5oqxGCK27rFZPZwieNi + u2R9wcVMp/up1cR5cp2m53tYvr2VL5ma2DqSZQeGF5me0d2IVsl0jQY7hd2YKReD38/foXihEkQz + cC1NF+1xTqhSQrtkfXBPu9a9d/5L1irhKGtk7VhXnZh+dfmU5iSZf0EM+LQ6sCwPjFD5pomckOsS + XeixgrU+KDL00UAUJJ3Ad6gewtUM5SBxQHK83V4jcjhtkar89gOQhzOutyeFvbLO+JPIOHdkDee7 + 5AaNzKAfdo746w31wvEcGYfQeCK6r1dH+s1I/j0VCuyryHkQxrmg1UM+ra9ITu4rfG43tFfn6HVb + fG6kXMbnhqekzn24PC6pc3jNF/G5X0Sh57ijCPiYvLA+VsEJKi6a9z7lYPalVJzHaHz2Lv3l8rmG + asSUKHigTWWj4WyTMGDF81QswCTZbVIEBtlsVMB7Nog3EjMMa6DMhOByj5lXs8kMDsH9ETJ0SQaW + Z4eTLE3j8GSxxGVDf4lwsUyS9RUavpe79UQbOD/AUErKYCWsoqGZhX49eniEAuKD2Tt1FHWdsdMN + jJGdfhh9uLwsjW7wn7TWAzwSGWC2T7pY5Jph6Q16SlP2VieQ0gaz5mOjg1bbNNtQqP8YFgsLYu6e + ksegK5sGVYPXTnc3hh2oUoBBbO8hotdtSwEi5XIpQHhKDPvNb8deuRJg6BXtb2M/8uCCGflRGDIJ + AvK7KoycXaYjMyEaVvd+IjA9dBFlqY7hGU1QRRxfLXdw7nJFlsXR3+KBEiZ6OMfCHpJsZVjQNhWG + d2z8C4jkGpgImWiy3gofNcb/pJPlV1iZQs9mR8U6NhsgPVwvd9tUQURpkVOw7DfLxCux7OxjMvti + g/3O8QvF6PKmKliZqOywEo4GoaUbUkaeqsdCv8R891OuEIOMYHyQlmqCwCIM1HfiIsGsrreORZbz + UzfwyKsrjWd0oW8hnAyhihbDy6K4DoU0Zix2nbqAtWlaKPFdSEeI64bneiFzi4X7TNtYIXvZHLAb + 1tWpUF8+yM7YbJNtgb/tMRsgP8qK9kmfIsxT2epYnFlbV+CjVKDvqY/aT4gIMTN/FGwbix2dN1GU + tv8vFsFBHmdUp67dF6KBXADv7eboXNnMhFg6vFpO70FgWm8bcwAqI+p9J6vFZvLgNjZADMP0DGPB + dfaCXbBOd9Q0ShVSh22PeU2yetWi4lZoIUE6nuua+xQrJMM5RJmmQx5nZ2oPX0owcjlloFhM2B47 + BNnvJ/cbHE1Kxq5DyfZpl2giVH+wlUyq0kGdyGuD1oOvW6aDCsqldFB8SjLpxw+X5XRQv+gT9l69 + 8BiDn0Ye4oFGJJOaWsMJG29hLImYi2txp4nQdJwVEug+zjaNOnjhysZzXqN8c98F+YoX5SGqbprm + x7EUA5nPbuplIu627AYz4zC7u9QNSgbLZinP8bwwbN/d/Rz5SrG/aSp+A54jbOafjt+cv3he121U + F7lldJur05VuCVM3l2EgToTUuTF09Du6ifMSXOzV1ker7mayXIBEo/z88Knj7cWn42sUVa7Vb8aH + sJA1RHlBD35Rhr0Wt6JwC9SlS3hB4Aetxk3RIVdCPpRoJdB0lMfQRBOH+FX1rhwImztTNGWFfb73 + i1YYBgzXpjSElOToOPDrqiaorynYhczDuzRO78gwEwl2n1u1q3T7LQUJczq7hvGI4DbYFRL4YCvy + gNGcVCT+7PP7d8+P8JrBQW7Upp3R63iQ7+djeEcBMYlxqIMn/mAethHVAlBHRbxhHI8BcjqdOuxG + ESGfOuK2w+TX2RTn1K4kauOlhTtUXFo2W9teDGUk9Ryy8bpIv4ywE+WWMyBiD56pQNbzhqtgLLmK + uBl2C6sxN4sO/XjtHNAOqbJd5lzs4ctjh6KkccPOCAqoD6qcalnlOB7uhWm6xppWGGB1eCcgd1JU + g447aKrFi0JH+k0GOey2KqAjgf/cUwNyygR+ceB2I60qHwjqoBhgxoeEGbltrtiPqfzUb2Xx3nyY + yuVsK2DZqTAHU20etEfgVq3FNbvB90Z9z0dQcG5nIdDyY/rupVnJPDB9+2DMcAkzhxxiSczhSWiT + Mie+27ZXOmVEmTBnjLstMmHE63aZMES5mAkjnsrM8Y9lx7QrhKJCJgyLuR/6I9AaokAWKwROfyVU + Zth3IOhhyNzNHC6OOy2RCllQZXvfVXh1Vcpk9qzSAxvx0HANKA9sDkQ1fwju5xVjaVIqTX0i75oN + 49gLizJ9FhWknlWOGmkXRj04Fxcr3O7TWUl+F7N1VJHB/W455zp/W5X5qvtOQeWXevLbvSVB4K6f + AleZkCkcBG4B9ItS5fUMjdb54iDy72MJlwpyA2gSuynoBgPcWjoNJmD+4IGlyNjxJad62sLZ30Vi + wXMjTGftjt6jXyC9cOr4/25UESwWnHgt4zazRraFsHQnRiks9ZR493o1Z64qVIwF+8pAG2fMfcng + P8eDhr//gi+I6dr30kB0OWbiZfrZFWGejghP/2WIPzNZu7i/yoDW8XVWkBP9UntoAAsnO6tz6/S3 + jhiZPwjswnZBHr8A4YPVEbTegw8FrOHpmn4hD146fitmRk1sWZnswGBk9IzY2LfttRQo4ScctKjA + mft5+C94Ax+Egtf4LhPx908hkFnNJpNVRM5fs7fhS4e1qiKiG1lWEck6yVcR0U9pLnM7bHWbLAbF + 3w06ru/xwGEyraEjIFobTqUnjjItfzsDCvYaEL1upQFJygUNiJ4q7KzXrKQCeX4QmypQ+GrMmR/B + IDgIs6EM9SrnM05ASc1YncS5umJl1Uekg4kpgQkq0RkRocoUxCCoBaAKQ49HrKgcNXVVnZMYxXXB + PUYXWiMq1L3C5ZZ1FDT8vuFG4UFQpD8oz6WaxtcggPhHItOeIFsWW2KE69TI9LtYTVhMitIVfFcq + 3CXJHPa7IjUQq620Ep8Hfn8pgCRWV8xEc02CfVWIDwMuDcTt0Wqv7R2TVcmAPcbOON43ro4KQ1vS + +yN6gphyHnVckMiIlSg/3dQJTyTE/fE/Z8DP7NkevW7F9iTlAtujp7Kq6MlHFNgKlh83KKQkuIiB + 4nneyI8ixhUCympJmi8cr98u3qkKof+eA/lJP1EDzPPDwA1LydQJSD8z4exGjbOQXWKwMJjlWquO + H7sYFtq/VccMs5CDRTTzzfIvWLGjgmHneLJkK3SH5l41IhgF8sjJMQFIHeUz7eHc7SbwloSZyqLu + QfeeLNHjeHWfd4TBtl5/pT2LwWank4W3GsnQfkEUaGEuP2jri+V8cHzymy51AzIoxRs6dLRg3wnb + zfd7bR3pUpnh4ILH3ewoA7k58K3G3dTWUNEPon4PdZcPzpsa9h7Yn6MoPs8TNEfwbx/5Ap4u4sei + tnVkdBvbEn6qC6OCn3xI/NHVZakpvdXwxuSSZe3eyvcJcrrrxb4Q03tymvflgn2SBUR6LNrXp4v2 + IJ9a3x6xgDABa6iNCOXwBu8GgbTxfvzbe7xtdgJ8Y7pcLNeb0fDT8Rs0ZaCrEeYL2kzSFQEatOFb + kQRW1NDsHZmMTC3GQXXjJ75CqIvb+OXE67YIdXGFX048laU/Ls7RHFeEqPP8kmMuYC53/FHAuO/6 + qvbHSpVkxWgmChc6PgGCOYyXohogZIEPoJw8Q4fOkMpfPVc1PNYrz6mufyiU/YJUV1f6IgodN3BL + CMxtEXIyUc4gWAj403xhNqlLzIwZ30N48Im+MVmP5JSM14hwo5QBgUaTDNeYCoVgcOtU2+O0fRvl + ONX/0fAO+J9ON8Wzkvt8hE+6S+ZzNbOwv8q2TgU4txk+2yyWF5/ON8+PhrO7u91Cya/Spp7ZDOf3 + Cvn503K1Yp4zEPtLe+cixxn0HC406GAUcvoBmPQCdXy9FvBd9Lrt8fXK8F30lI7v75/fl93qUVw6 + vS98FsUMtCsX8Yjo9P6xBEXUDOREd+waZHmcifs02WyHWPYwJXYvDujv29tq7/rwG+4nmXf3bre4 + mZlZd7FbG+PMWOxHsUqbrs3FxnSldWY5NVmBx2rsSCbx/nOyTY3AQOYV9qFsZ+fJhkB534AL4biF + z0fi2bzPl7BFBTrs5e+fFK4MvpuuTUWvoDjugHXdJjf3R8Y2wAtYimmga8LxRmkPM7MR1GY0nM+u + 4ekq0djDmc43KnSQff4oG/E0Tba3A9y6GXol5WU7MVWxLMD8UjBYe1sZ4wSsqFLOsyqbWTEh+Qk6 + kw0+WAwyubEvWOJQxHDDVrCkQ9XjsmVtrveypx7hYQUNDy/1B2eyMCvlXWw1L8g68M08uE02R3b2 + /1ChIXH0CLVDhqImtkhIsgMDB4meEcueTCeSAb8xJaNpOt8mw2eZ1C+FKA3nHgdO6PLng8p2pWbD + E+yo0BQ7R+3OcX3S7pyQANuQZpYGIQ+FTPFMZnsMyNo2/bDx6M12cZfw4Pempe6hEmbTgcLUNF/5 + 15yWfBcHGtcfopSYT0ERuXECG/1ikCkhwnlcetdpTxU2mrXhvr9g5SDMCGVR4B1JHexMiBSFzOL/ + 5gCLf2uKbYKmfEo4ETN3EB0Krkm/Lw8l1VMaaR8oVE7kkWTA/zH2/7H/40oHhQWhl7nyrg9ZKiAV + 5rgmnJaaCnttqfYTgdwXOJZHMcgfL9yI29s66HUrZUlSLihL9FR64D+UsY55zAsOeP/VOOI+d/1R + xINIKUsfRVn2FMFkZ9uZ2Am5PB2RtgWa7xRzxhY3u9nmdgg3sJwUcX9UNJBe+1kNJDHZGgsWj1od + qqbQaNVOGumn4jpbQY/Lzf2crG2bAv5IUMwaHAlkkywfMYx9L2LF0GVc3Jt0SgltRk17IykxLmSg + VpMeuP8Y/zYW1gIYpgJ8S/MfN5KdIBQ0wlTVrlKCmKubmRhK4LVetAFuIqW2eFEsHFaRQ7ntogM5 + Be3trTgZQuDOT13Os2bMYol0TeGUlsVPBn2zNpJCLHbhzfx+kt+FbTuimpEdtruNMNYr/UYuGas6 + VNHr8KXTDrRVtbGtQaW6MCpQyYc68tdz3MbAX7cu4tfFIF5CsuWeN7Au8fYzhc3+N/7VIv71J45e + 9XX0KnMj1jZ8VbaxDsWXXZiR+PSwXAROI6zrwjN5Z+7F5YleK7UfLjaTcLDG/7g+aB5cAiZzLm8d + ZRtbp3DTpPNuNUv14eSEqoN3WE6DtohT67hnXRFJ+UtWgbl1gFyFtE8WkjhzLiD+lp6oRg3hgZR+ + 2/lggU/Z5PmdYGUq85mMGQNdy96rQa9bxowJyqWYMXwqUWw/nrklrwYP42LI2As4HMxhIxDx3Tgw + q8zCmVf2fCUNj+BKRliK6/luuU4l/r58/dnpu/PnY1m3ST1UVvWNQknLpChtv9ppNNm7udu3HF/0 + gRY9oLBbWuoDfbk9Dgliq1+hR8waxD2mA88CFh0Ukt6xvuCPSM3LaNiZ521G04XSA9ZO7DPjwpcl + ms5YELUo0SRet4OIJcpFiFjxVIZovCunTjtC4yyUaGJ+HDj+CD4/DKTEcAY37xhGjJUQ5pPl7XJe + jAATKZRCxU1zCILC4zYXrxby/HWkxnVVmnVfZov6/o0R1wFbcbeuw8iLQBspw0HluoPNLW7TsrUi + 8OrCiBXZweuZ+gjYdukCg3FRFN0m5FS/WmIYR+VK4I3SdjFyEEkjzURFwaNCm+3ye2Y7EBUKtUsV + 2DDKZ0O5SxZZ8Rk5zs1IIX+SnPN+ecNW48svS7Ya4N7UcKEw6+TEJTdmznRRBqKEE6mmAcOE396u + 5yLcpQ57sgFDMXBI8pMhxbkAw5Y24X4CHUGe9mUtjrVege5oS17gUgyxsaIW2KUPCoPzSBder9GQ + nkMaf83xaweO0pHWgwywDqfrUEiVJ+Ou6TcUFQ4omWtlXDQB3MBpFQd2mJFHRJv3TYA2tUe2r7j4 + 2BEDvRw/M8b6PHdPHLKN++2g0ZDCVeS8d+K/xAzQFoHz1MQ2bl52YITN0zMSiW6T+VKFwsOPVfHy + VW+M57Mvac6bVgydl91ihqsP92AfkfOHaCSdVYtHD1ZXO0TkVvxxesZi317QptetBG1JuSBo01MS + tE9PPpUEbeZ6BUE7BkGbw8rGI/jZ92RK+bnwKX1NlahEIdGozZ5OFu5q+GW2MH0GeJ2LoFxV0BID + fPFdDH+GfbJaYqYUiEmb7exOCF+SkiBBbAIzr1B/lx6jvFcR3q0tdFooNFoLdRu73Audsini0Hqp + NT30b6SoKJOp60fmjJKFOqZFKNl8GQc14MGTWe8B7lptyGABl44WGf1TMwEtZQGclUZ65oTuvSgP + hSbq4HexrZJZHS3eSZJSnI2yPE4vnKiFCYFet+NsRLnI2cRT4mwnFVWemUjjKHC2wPcCh48CH7EJ + iLOd6PkSLB539eeRAA/LpyMs0SKnDe1Z8PA0uUtuUty5SogYYg6CAIkmTnVSV5J5vyEhFzWNGWth + EJQyPtSQq+0ETlyHyMYxZ98pVkRWMdB0TkVYtJnn4ddxOheDIxkwjgebzsFJrugw5y4FVHMqz5Af + +DoVk4Eh3vdIQHhM0jb4vzHBGFTMhtXxDWIKeMq3L4Wbt2NQMSxlkeRkOZ9WkMlSm1fJFhSWDMQ2 + 9DytFhgb9cBqJI+ndrfPY2wO5MQDooW7QzTbgGLJ5Yw+gfTnPhVKtMZSrF161zHSta8oOz9Qce5u + fMycl6yNxzprZBvrrjsxot3VU7p7luuJ1LyW69mN8C9PljcLisDK6nVJJzVT0e5RwKLY9Z4PGlqp + Rr9BFxjazh0R2w4SmgSGo+jhYrz25DadfFktZ1XV0Wt5Xl/h5ZVUZLhakWDZqWxHQHjNmiO0rZza + 3d3UDxLQHpA5Kh0byToVvu0qZ3yXcHjEtfHy0yT3IsaT5AhVbc29ImWfMfKHBrYHJN0WN5X82lqi + lYtsg6NpX3f6UFTOOgrNJ0TfEjI+Hxr3U5iZhYzqkmVZMTCM2QEljBXf1/lN2MVLh7cr9k5trGu9 + yy7MUu/0kDg9Bl+la4xUSoVFYCnRa0WZ+8Y/5ukjCB8oiRIt7jFRGPQGeDp+aBU+z3gLADt63TJ8 + XlAuhc/jU2ke+/AmKoXPh5FXCp/3eQQnZwQ3MRw/i6icUlgbVUzMHKBK/t6idpSzh2BVGDxsy006 + ZqNgfDXb5I7SkXK8boZns8174do8+Xz2fjhdIgrsBhNZv6TDf86m3Fkps9lsGv3nBPEs0pskb8SS + cyqQnRZpVeKy54cuK9jH9GhdTJdgQWOEz9NY7SN4ugFFOterYce7/Hx88XmAG16H+oeeKyxrj1C8 + 8tDUXSAQSQCt5CtWG5Ip2lsxRWtgfiT8yiLcyH6buqrzciE+JUlkchGBwT1MvU2x68S1abdh7eyP + TxJJqGOAWaO/05PCL+xne/m0D4AMP5bBU07UwqdDr1sGTwnKpeApfEqX1qc3b0uhpHBNRaXgKe5w + l7ERx3rIspbhp2nqqouhM9Qg+g8uc6imnIdeWGTo6Giu87OaYIO1CDVxEAeh7xQ4vCCcmZ3MEnOs + rrwdc3Ey/KBY+FkG2Fw31Jgr18CunoACuEX6HS1x8EN5JkbStfiXTO3KvgYRHbQ1FRseDWHJGAGz + 0uIl67R44XydiX2swnmz1irI14xjRIviTCiF9xQiNcAtpWOeXI8cLozQrQrzbSVk4qzhmxJQsTpY + Ss19iWJ9YNTPXfSqJY3aGJiQinWYiyoLb0tJfLNKqqoB1M5IxHioF7sQnEgX4MKMTfyBtknfCchw + 9a4rSFngaNDDd8xtlwOj21iDHsouTNBDelhULQkOpEKtLPwhTxfdRG7gHAJA3kGP5A4jgMsJyCy3 + a5COJksRTSkqcFfJXHsNCkovDJi8Yl0etLli8XXLK1ZQLl2x+JSu2PP3vwnEXrNecBz45TvWdeNg + xLmo4IyLeTz/kswxtTZvAdEZPIhXtBovZrAzV6KeWpb6W4Stoj8Aj86EQqzfieFLHz6MjymsFYij + gVPc5+e3S8afvqbn5T+/0kxkwqkHtbEcfsBAhSnBHFctQI2vlNdV8TVoa2lBzX95cYwEcz+sk0Kq + ySp5NBdd3NiDE3hhbfiJ7GHwA/bhQBybLHY6JoR4j+z7Vl9pxa96imoWC4VN6pd1v0rxCNk1wrQu + cTnvkhvUB3d3BwCF9BZ9jGcTm+w/0VbTcgC5PTHIlEnbzBjsjKe91UAMSSA63EweUDbP2QV3HPvb + kl63ui0l5cJtSU8lHv7/npZBSDgvwOF7r16EiOMYjkJQTJVZ/WPyb2BF6fflGBTV8RV0PkalIRGi + pww/08BoJmvK8NJyzTR0KCK+w7neIE4oCChpmpXunglUT4XOIKSW2WZJmS0q9fHt95veQSHjEBRx + Xip8LwdufD/6URqqLvKoTmXOd5Ehl1Sj7zWCOXphqy7kR9TVfndCXqFFa1AUH/TFCDXop7YbBri3 + tcHUjZlg+nFIeAWI5E/o91bpMM1+dJgipTLnJrKBXEP+UK+wi73EfMurNv2eh6ZYpzcdtOdA1p2v + h0tsjqs6AHqxz9vTkygFVse/JWnf59XX1Eg+u/8L5YbfxhqiRpUSbY9S09+NGNWNOcNR1+O9WrYe + K1r3Y7l0naORAp31EQTeS7hK21gOqImt4UB2YNgN6BldnTfJ3Z3YLtvkTuKrrdLVlnaOBMn0Hd/l + iJLZ+PLpzZaVW8BDyv1QsBohxUjmE2l6KBgLZFmRbLNfpSKGKI59xRMkZ8mCJoU0KaJCszouNtKe + 53uE6S24A7y5/D68Xd6lS6AjXTJ7MDJDqn6ULqYaTX2NM7Wb7+z8JE/BWy94HuH7VGyi631gWtWS + fnd6ezAQycOTTHoCHDwYNkyxDU+h7nDuvGROK9AdamKLuSM7MCB36BlJ66vJnQxevMPcmkmyWiEX + pCy53JcO9vwZ6Yh4Fjei2ETmi0q2ApKGXrcK/+NkHjB6ayPr2BHYU4AuDjWJ1mB3lCBOOmYB5dvO + HPAgXtuGGTvQ49sp6siPFQhxYzW92+Vcit5dDMhOH7VpPS9y9WZ4drNLEChx/CkcPx+XDkEDN2iY + /5562CO0E1hVXwT75IW+9r6EJ/FL5resOSUbWftfVCemA0Y+JU443YEgs9tUVXrN2gtHi+M+lqNF + u0MCVSA3OuYti6frNrblcVUXRnVc+bC6OG5l6CNVazAooiTJ/ICqD7NYHADpK4JdP50JxTurNdPt + 9LdaFT3BItD0j5MLp42/iV63sqBJygULGj2VML6vfzUtaAxkJB7irZT3N/mvXrCYu7E7YrHnxtKE + hjl/MjdTwu9efekdx6Z/P1A+fNkM8XNrq0+CHMUV0k1GKTcB1faysNaYZVDUxqw3BMyb1puz2L4h + ZnUts9ENcJmVMQmEDvcBjUkUJlH6kMfL1/+ZosoGcpPg61WbqeXge0AZYYEsVXLQUPq8tClY+/yC + RZ49k6TXrZikpFxgkvRUBmu/eV1yM/ie55puhujVixiUZh6NYicIVNzbKdqN0AYwTVH5hfsTFqSM + ZUW2uCVOl5qtxZTKYIv4XFRTlxUGOgFWZRQlusk6BMVbxU5RQPb06gFhxrwxDTf3KaWVN5gjK3Hu + YoAbYw5cN1EpxE/Mxjibnf2OC1ZyuDf3lXMvyOlUlqHiRMWR6RHPxXArioMnsQmOhnknM/ku8pFc + A9zm6pIIeBQ92CUBRKUBWo6yB2MeroNBs3uEdF9Fjn9AePKPCjDs1z/B6Aa3YShWX3YQwX1DJbOf + DUOyHesBFB9BPPgpCxr8h7mKYp3A6IbsJWuZwEhtrBMYZRdmAiM9JPHpbr2aS2moEA5eKnSgktD/ + uDuLBrYv46vYBdVic2QtNofAOkwicDEgRg0mMW3TRbKoClXut2bCI1RgkBRQJuXlT/6BFR1+dLB7 + ULEDei/wcGANiv/Wh1BcK3Q03Eb4mrkvmduqYEvWyhpwQ3djIm6ox5JlaRARbSNM1wZi4clyfazL + xBphknUtzN4F24oJND2IWHa9VtsjG28odB6L3WS4oSdfUvqEzqvO/CAm5lL9gd0pc3TgKWl7vo9q + MzSQE/l68rS3uS21Hym9S4yEvNdc0EkM57kl4MJT8OAz36EAiYp9U14hOCaH40Ig/A+v2FAtu2tk + VUyXsolZ3A4YSLexLmUjuzBL2dBDYlECEPgaxET4IJWoU/UsTw395wx9SkLZ51XYPmOQPXXisQTZ + QK6uQhvlUdtXx5Z74hquqhdtrZEHXEHOlDATO1WloRWuQy97jMR0FvhBoVZQc026RiGCeRRHkBHL + L5LVHHPukwNbJSW8d19nE2AfvNSJTs2YQGGlSdK0+PhXrzbGo5LUwzkS7CXEA8GaCLNerG0HCdNR + Cf9YowdeTtfw1m0K+33ZDqkKVpYQrt//fmZbBwktGhExgOww6ZJAs5v2BhJrK0ZzlII1lrr1KvcF + zx6FYrn3Ts5jQOCFlOPx/gIo2iPl0OtWzhdJueB8oaeyftWnj2W41QgvrLzzxXk1Zohv5IxYHIk4 + a7wYPywQWXg5B9a6WOYyXswAfm19xthKuFZmqhVa3zHPnczm9BixxTYpKDxYZR14rLhgN7ObRTLH + Km9HQzHe3NUCu2GNxZBFJRFMI8C/0IYqdDVN1Zs7kN2RxnKzWwsRHjja7GoGFxvM83S9u9nA9tje + ojSFDb8mczgNaJmX1bMWdz+BG159+5g9g6PlPR8XFqnakxPFFV6jnBcHNmDgxKzgxbm7X471XNf6 + 1t263EbmRJ4X+N6fg8fdUT98Qw2wc+UTgllAnxDwFsJY0H1lRYQfLZHxZ3Py95lG6Xk8NOYfU2rl + EmDB89K6HBLNF9NE2x9Wq6nsgeyjWPxBsCaRR52OzqvW243MJQA6nMY2AOj4uiUAuqBcAkDHpxIA + /awcDsF8rwyAHjo84NEodHzH5+pGzrikwsuCadhNcmEKJ/OKMIWeLh2E5apU52S4S4ZcVnX7gNJm + JkAiaLp505y6v3wkxXSm1NQKXDCzrGNkZu2XgX6YB7JlWMQjuktngi52+SHfp3FfIlB6nvrb83wC + ZOT5fuCUKMsRb1awNvOcxl+bfcodL3QbEi2rv8BU52lthrVrUykPIPpucUUGr2VyHREsJWvSGgD1 + G3mnHqnCEHCGTqYTN1oJyxtZDsQdm5tdcURPXXzjI7BYAZcHp3BHhSY2w+lOuCzhDbxKP46wvSot + DIPACm0JfCTpEoIPLL+DOLGdXYvQjUxN0sGp+Uieq3t55yuwvwEexwyq3iOoeocK1trtxhIDak7w + PBRPL6CbEMZRiS/XfB9x0v5q9769lUdsWTWS/G43MlZhz3TIdPCZjKIT0zSdIRtt6X976lJRX7h2 + oZcF5R+7L5nXMiZftLEPyacuChH54mGDu8fOxWP04EeOG7Pwhzh1aqxp7X04dabCv5PL5r8ul041 + +R7aw6JTdaIgblvjjprY8gTZgcES6BlxBDj102KRuqpnOVoi5cTxfgDYNhUaoYAENcgfrEMh8rsM + DFxfwTHSWdEFC+eIynhRUi6i5WAZH/iE5fjTeApqoW34idpBunoH8975L52oXRAUtbEOgpJdmEFQ + 9FAGQaVTaZQsu6hyuYda41FZ8U7g+kHkPR+QNAizUCzY8REo419DwngPufTp+dmdo31k7XYe0JD3 + Tq3XbUSJlVpkb9sB1W1o7cjby4o5zJo4NRp4rLuzsJQ67PkxVWlfFQrXVfolWxiJGKOop+JS9yP9 + 9S4yYnKtkKAv11fjqkHvr53CQ8bLO2CylPrYsvX9oYfm0d4tr7HZlR62nQFLMRfK3Ds/c8LI3i9C + r9slpRDlYlKKeEoM5fjzuVdKSmFYDMxMShl7TgTrPIJ/RFAdsqBLyTquFLQRrgktzfyLUhKzmLl3 + 7J0jsuaEUVtYu7/dYoVxUN8SiqgbDVNQsnc4pckapeRcdmbG2XBbGHkKmihBjQvzz/F25ZXMP6hh + 0GYiwQK1DHNExic0ldB03NArWgwyOz+PHIXV/Djd58w8bhS7cOsWbVYKE7e++9wdupbnIEE/B2zK + RcHN4YEOwK0+PxtAzu0pqyXUGGN8FpfMYw9Fu27etHHJ3FuT5Q6231SuZE7DyJv3/LhgissMWK7v + c1DqH6CP8ncMnub5LCYQDZAFKcuTH8dxD7outicdqLtSKaYYm1iuzuMSr1XOY7pLOw6PnEyEdWbu + jn28S638iD4C/3wNJxBW/92z5fP2RqQfG/NdFQI/WyxApOumlCPoeQVJ20m1+vQD7Qae7wY82zoP + vNIH2/30hnfCLJkG9cFe7Qg55dOu7FgVDhfeldVD7HIL72UFSrikjOfXF07cojwVvW4lXErKBeGS + nmoYct8QLnnIAzdgpnTJPZAuuccDPvK4H6j6VO/vV0vK5YTP/+3inZTr/rhaQweTlb7d5N2WgSCD + orC9F5aGi9WUn6nteoR61maG/qeSK+d6JwzrFFfxNdmgMnazXn7b3g4u/vezLi3huHQ7OYzSWmpq + 3xwYUFoXverIDH+4c/+9k2W9ha1DJ9bIz7CmqNzShW8eitqemZFYVcGYz4B7tQu9/CkMCL0G0SIq + txhtaUM+uUAWYeXznLBytI1crra0Rx+eHKpQdHLmcLcFnI143Q7OhigX4WzEU+Jbl5/f4q4tlE+I + WBnOBubdY6PA8yJp5jUq29ymeMixnImIw6Itq6IUVsn29ltyf6SnYEOn+TRDmgd2dLlNGVMVj+AX + 3zk8JC8OPRfLrBd0qHYxDDHciKUIuvMPmaKGRkTQUU1N5+Px+a+//op4+5Nkmion93Jzt5RRsKjy + FhF1EHCpVMAp68r4nMq68NlCGF/g8tpqS47HMAy0QLNqGeUn7GXKxgeFfhHtIf9BURjzqDR1DZ1f + z+YJmsKWcPQlC893B2zebZw/DmsZZjUC83tYsMMbPZsjfVf8Uu50JHYsLuYWdHBEqEhFQrNArUYw + 62mywv0EYs4WLpPFl0222cfAz5YTClQ4mU48dzWG3e46Ky0Cy1JQ6fV1KoRNeTLQubWciqCJqika + iLOsL3Cfh7LSr1APrbdji0ua7ju95XKX0iHbp82dLmSTdtvFmnwPgRs0QTkCCTTdtNXwQxb4dd/Z + 7sJGPkDiRRXHsNK8WpLoy/vcmxIVS/Vm/xVgMx0c2LGQKy+PP8pan3YVq6UEEGUpvMx/6YQtE3ip + jXX6ruzCTN6lh7JQ7r/+da4+Q+XAVT3LU8Nk3MBXPjRekC7XKbCsdN4tUYRqxVO8Q0PmTX9pRQ+T + 1aTQCyOqlvXrWasqyvS6lbgnKRfEPXoqfSDnZ6WClG7IClWU+asxiwIvCEcsgn+lG/Y1Qt6Li20G + SgjBAmxMzVRXGMtdceqgPTs+H7PnmZmHXBeruVuS8vBFfYOq943QSVYoA3z+wUxp8APPDUrlptTo + qrAMOZoCrWlqSaUBFtOIggW2aUN80OscH4kP3egWR6Y1QNHJbu3T5fxmlqGFkMVmgHtGZzQELCKj + Ndl0TbQL1bK7KTumIEwxDrhYviaTHchXnazDDmd5Pt/Vet0FALV3glUX2oBiscSEVcRftTHYxg6x + WCoLuKoC99gXhnWANRaOMwuN5jiQ1jQoEqySd9jPpxeJ+6tbmkk/iZZ9SDlO5Ad+5e7vbBfmyldS + 4qJtLB6Rqyy1YQsAX3rd1lIblgF86aksgXXyMSoZPHyU1E1D7QtQijl3RzyG61OaPD4tF2ORcbZV + Lo2aQvOqNNXkLqosTYXsMnumm5t5CGZ+wKc3xftMun+Bku62ipDvm2WbFaE+a05lbt+Yc9+PvD8H + 1nM1wBXJ7M6RiMfvtSxSW2KljHgtwXEdIhc68UsWt5PXVSPrIDnViRklJ58WK9J+ml3/Pp7PvqRa + TC8/Mahi9FsUSck9CrWyK+7y2XpJ3ptCHZVuojcLXJcEBiA73uzm1ztgz/PdRjCkWuSFJu2xu9fU + LzZFp1MilqKbjgLcQ39c94Q34Pu8do46pb5Fnt6u0VvQ1tpkCug21ptVdmHuVXpInHe9mjNHBQkH + zmUFQt0Zcwb1fxEEhMIZxgRa91QQ5XpEgHu80Oes0SF4bHCwXT/XJ7zTO2TcfzHf9JH29ZHmp+yl + w1reQLKR9aFWnZinWj6lY71I7mJLsMo7vHvVbsB21pCVl95AvI+H3/GD/g//f8EgS2CQFdNBK/i3 + BYO0KEjUggMcWt7oMRgVAyFBDHPdfpyKJYm8kT/enLkutzdr0utWOp2kXNDp6CmxoPevPxcT7Fks + MNPzOl3wauyHbhCMAsdDgU0GdsP0oEdNmtfe767YKpdTnBefpTtvCbrt7C/4OOmn29zeLeGn2Wr4 + TPoQ4f1/p0K5eX4ktYnNMFljzAG69DD+BINFS2/j07uEojyA8jq9uh/O7iS+HLz5/moLg0NDvPDa + /QXLI3SaO6zwozU10j3Fu0XdMxuqCclfj2mDDh+QSx9S9xTM0fyEjq5mXqOU6q8Y/A3Xe4C7X+nP + Lo9ccpt4ZK3JzWA77uPIMM4DV8jWYOtEPKCLwIQ4wM/d3Carnn2LewyiXGLPFNer8frVVoIwS9CO + eEuvXtbIPkVbdlLI0aanspJkspJ6VyFiT0SzDqoeDk+Saz7AhqKcGvOcH5wmZ4Oc+dDpdzFZSfLO + 7+X32ZRCI4GxtKmawUEZdorUJsn1dTqrMqHXUekxb29/4DTuhOKQdazvKl3jZLSCx/CCICql6ifr + TYr9t6DjMz8u0SHYy5v5/fJ7UqELPx7w5VMC1+pkKhDicUDV2N8cINA6FbxDspu8W2L/Ubcm1W54 + nnGS9qVCHtSdCAAX3UlRfaz77TzDXhBHOrEBBZjpDNFLlUG/E7BARMH1ny6cILQX7+l1K/FeUi6I + 9/SUbq83l29LmZsej038LA/E+9DHfJZR6MdOLAX8N8nu5hYZHUoS2RRvEOkv7zoXwktOPZLB4AlG + B21GElFIfLHyIYiZQ3lwqrrYIPObJDsRR6efAqVNukqE0El8B4P911JMf7NJy8mbWSe1+FFO7IYN + Qjv3XZeVsjLT73l7hCmoh3VJdoyFXhgxp0RNVk42Qa3cqG5QLiJnlQHGaJaHbMTHVxj9sL80Ged1 + eY3mUDMlA1jcl5mQW0fSLqCEA7kyRV0iZI4BkiVAwCr6GTzZ7TXAQ6NzDUFoG8jPUjx//4SU2UQt + /veBhB+qrpgyciAbU7oMzW5XMPKBPCv4unmaQOjsYGULWGFg7drHLt3JcJxukrkEcaunVRXBiEdW + D8GmGPrg5yoQxdGPL5ZrMV2Ogc08855nnCY5oGan58aE6iNZmOqAqL+xrEBWIdOqm1dXpQJVrlXJ + BNnC1spP5A0Tv3hEN+i/3mCNgzTR8IIDbXbMhQcoRvdpk7AcUVAYGAtUdGjgaVOjPHbtRRwXSBoG + 49wgOptB21F9QiB0HnepdUezt9xqcRaHHL1l7kusc9EmEFk2so5EVp2YocjyKW2723xSpNp5sHPG + SjI2gpEVQfQP+WE8oNuOYg4Q+vCpr6ONOmfvU3l01fCJeE7UbmbaAOcfM6ddPb+skbUBTnViGuDk + U9rNG1DDgM/frlMY8iKzMMv0gzwsGr36S+2756svfLDC/6A1JvSYdIaSBLbFWUPg8vWWJurwahyB + RzmjOlnvbrZYwo0GgvBe8PJH6eSBs2fIpEw1RSg0OVkJWdaaM9g2rs9dDUI3PzuHlT0HasadUdpx + e8lbL2uXrvZbfw6N06W6uwhFcDi3sqLWyK0oJvbXCydqERNLr9ulhRDlYlqIeCrRCy7OWVDKC4l5 + XMwLeeHHsRfHo8ChrBEFz3ebos8K1lFWWHjz9vj9GGGaJQRsPvFAuNCofENW+XizTVdCS0TnF0zh + CHjY7exqtt3gxOYM9tjbbvFNTnS2bYQx5Xy9YkHZ6Yk0ZSmuinQSuLgjI50kB8IUe2EQxaVMkvKQ + 9ARUmyzg/7frAe6D8R0SVhNSMjYascKuVwcjZdDXFhHtdxQ+Nr0Kv7ukQuZnDB2XcrkE70wxHjFD + DBALZ7hhuV8ay+Ap7JGB2OU6kwV48oCGS2XQQdhfV0xJ26mw4l8Bp+pjd4doQgIfTMlJepv0KOTu + sVxEjIzl2fw0frtMRg50l0tRyKWjJyEIM0L4BsoJHYuDOI7i33vPtNXiepySciqb931NNW8Qxw3K + n3bguHosFeJS/nYTmxtVnjQDIqh+RdQFy2XSCWtzwdLrlkknrOKCpafygj15b+ZdxqHvczcsJZ0E + 6Mp08H7lTOZdnieT2/stsKfhyft08mW1nOFeo/tucltOn6TDNS+W/gi5U3NFMOa4MSh9DxXjY7rj + lTaeh1h0CpWkqgY3+ETflaxzmL8yiGelp2hyq6ZIQfrBTfo1xXicXDnATXqzTlXUChabAJkdFDdV + bREzX/Jv3y+SFQ7ZiOg5GibzzRJNY2gTh52kKiwIQ94tNJ4vbwqE5c22fvPpeIBbQme98NjpbrFQ + piBHpuFVz/de5nyw/cLJWPt8Z9Fhb7fBwZyShYxAFGXRVhjKGM77AXWVFOvxdPEhz955Sq9bFx/y + Ss5TeioRfi5e+xXFh1ix+NA4iEPPC0foQsa6jMJqkaUeN4Fw/1KGMiYQn/WVX2JPpXdN/BsW1/gP + Y891uMITzZhUe7hiIzHb832b/jQvqwiuOV/OjYgao0QeD+qAdxT9Irpb+YOKM3Y01KnfEkhpsgTO + lGsk101ELKKoX0M4W8GjYZaqh1Ku8ZkYmK9ZiplEvk3nWB81HSI8BDBgBMIZ4I7L6uvw4O+Prr7X + BMQcnzh7E44egaPjR6CZW+eFl+hXxS09MBL6QaDme1yJD4o7Hvuq8DictZeO3yYUU7exLTyuujAK + j8uHxIx360RaTZZrvPHQAuaP8+UgRc2H7wVUOipt4EbcY47zfJBr+4/axr9jV4WG2D2mfUZhEJHV + 2CVMvH/A3btYfl3+Y7i6X8/uiDh+V1aZc9vkK2+of9VXF80n16X0/xxpQ6o4uINDIxG6e5Va+2Ii + VxYPUSaMrlZiPxYsW++2ccNua+Xf7rmHPXC2NH/z+4OIEJiIHM+4EzHFkXSZlTAMXrI2hXpUE1s3 + q+zAcLLSM52Q60Z7EnLhjddDN0zq0nL13wWxMSOPP3f+num5nU5wlWbU88HPGv03lfdnSeWNqSTK + 8VmrwFp63Uo3lJQLuiE9lbrh29/KeXNuEQuFvxqHLg9GsaNNUrstSbGrdH2XivoJCN4DwrBUYpL5 + HERUUWE9Dz0Du0ca++V7d8m/Yfqvk8lsjnjLuBQ7oEkvUSqV2J8w4TCtG4zun222qGWgapNub2fk + RUS0BJl7QJpnuiwnv2l8IUMDLBYxz6I8Y+5FQeAVNc5KLB3DIOYWKsjWkDSVyiJomCgMsYfM4Oku + xAD3lrZvgYB2SK2LwdMoFagOLkXEn11wL7A/uPS61cGVlAsHl57Swb04P3OD46JZh/NCyqvnvRpH + rutG4Qj+EWqaOL71YDxH+SBfqaOmoqLX+ZsLpoDp52sYyqR8wIx884L1uc6uU1d4ui/rMwj/8+UN + RpGpZ5V0nIKLFugMBmr/Ysg57t84KIOfbmG7W8VKH4xb0z2pX+9cHVHKX0cvYVe2kT2pia3sKTsw + ZE96RnuwfP0/u/h0nuFD5iKiVGU/F/gHd+Lng9/5cLNYwutVGIi/b1e8UGZSjwZlU5hKlE2545Hy + cZfgna4MMZeXv49FfGp7eeHhAgf7Azhtb8K32pgEwyywIRbaS9NCwLOZW+5IYDyx9IfEGeJhCPFY + qyhB13nvvXSCdmm6qpFtlKDuxIgSVE+LYF6pqIS2lAaLhtjXHGEMBxS7+xGNDQeFauIiECbumwuf + tbhL6XU78AiiXASPEE8lIODHDyVMXCd0vRJ4BPNCLw7cEfwbeIHXFhLQqBNWNLDD3MmYRCmQpcka + S2eTT3Fcl9xLzvIPH9+ykXJH5jpBEUsZmSUg4d2s7DBuXVXhoa/s/LhlApyxMZ4XcrX8Ys2ELOfM + BzkZBmqPRvjAy3RUu0KG5DXbmMKXrEszlt5mfKWqi83w4+yG/eKuBripNSZE7IpQp8AheF2RTTO/ + b+1g5pizKjhwbn1gOLu5yNOZLcywsiTDgsAGrZF9PApiTzbw5aJ9Rn2vS2So0jo8gmfPC2zT9c6+ + ygFWrqUAVpvKta1dRZUp6I+bD96rJ97jZH8S+/XAIGUeyzCq7wdS6gVR9/AYg4A7QgM96GNYEHqZ + Cn1NW6yDIRqvXle5xhh33ZfMa+cbU41snWO6E8M7pp7SZYrHJrP/S59NMT+CQMGTtWHQmCBEzBpL + UDz75+eTTI1Q9kqDwHYivWARecFCh2SlMuXusjgipuSIphIPZyRKPCc7OKO3yU0VxoWdnhGG5ojr + TRktsoYinScpGAiMbo2um918b0qo2lJcSnMuj9tIc/i6pTQnKJekOXyqTJonbimU3fE8vyTOxaAL + evEoBp7F3OZCfNM1dFC2dzw5wakPW4cbeOHgB9xD9i6MXuvCqJ2bQeWy16xtpECulTWypu7GhNZU + j6WHbqNwm958Ov6fYhkWOPBTccJF0rYKH9HzcAGNB0hBID3HPiWKOTGlnG/EKkgxBlpSePtVsobh + rhXN9iKXE3i+UWDnejnvIEiEjOAn0w3M2Xy2uRUR1gJDTQcaaXyw1VJzMrtBcubQbS42wkrUIgV2 + ByOG62KeKnhwAXCW4isdJgL7ENsS+C8a1AXKdGMf09mmHgq7Tj5FyLeKibrWir+Er7McPO0QSdJ2 + 4FZ8wYlJeSjssH4sZE8TYIkFpC0BP5qL+DwQq5dTu8pS0Jyu+PzUt9OgWM7lYbXJ93Fa7vgk07zf + rELnIHkaBkcZjbcILLC5XU6+dKyboRi4DvQKQKJ0eDthVraxlWVVF4YoKx8Su57u4C7ebQbq33wr + 5MagCwx+4C37VLxpuHBBHuWiXTiMaNEG5YKVUS7k/arVDhmAtASGOF/dr3dfte8UOSnacfK6BHSJ + 9YIzpSWnlOR6JceDjLnr6ATVF2xEya9vL3DWKae4TTEhW4XA9x2C5qspMd7CvtBStbCvKvHjdzFG + zUQk8fRWil2djFAr6G7EWuKIZo2sFXTViamgy6d0Sm7mGAiAzn746zhvg8gfivq3TjdbbnaGzNBx + lR7eX9EXLEPjKWISoCmzAVZAdV7dDyfoCFyuny4CyIOIKT8O2SATdVq6nTyJJJTfaHYGMXvggs5d + PJb5jqJQPpw5LLbPaqTXrWwtknLB1kJPJez6h8syagALzfAxj716wZkPaueIs4BxZsagGO4QzHov + okNhMp5nxJ4qm16mLJGVZjaHoX1bDXokPXh3/E5HMSHPEvqRF1AseHXkgFg5mNfJbCPXTjzOPAXD + Z+rd0dB/GV0O6ccz+fC5vfJ3OGpVJ0q4G9Jv8BvawmRkGExeAv9Br9KP458dwxdaFSJWx0+E0vzx + 8YIx3/740etWx09SLhw/ekrH791vZ7wUAhbi3swfP//VCy+GEfORF8euE9Hx+3xLOZnoEJ2QUXqb + 3Nzk4mi+Jdp2gPIkQd/nq4GoY3e3hiHBsSvksZmFQ57dbZ8PZ+Pj42PqgLLUVulaGupVtq4Gwryb + bdByBF2bhOTwNkfCJLMZJnhmlbVfJMN9vFljsXSE7qf6p3jfK9h/SolTYY4SW4mcoQXXrCwXLm1M + MBfJ5AsyjbstZu9+PL3gOjosdAVfCKQdMhs6kJktJAxmCoyKPBobMaM6KGY/EmWNl7B7JFlVpZvZ + YpE2+RGqsCNZTHDgtLC2KV8+kwgC2UTtVf2LqV0h5tTJuiMs5PYnkF63rDsiKJfqjuBTCUx89qYY + P+1iCcOir+EF8yIWY+RI7ITxHl/DHOh/+w/xNXDu/ggriGLijKKPfjtzghbRR/S61RaSlAtbiJ7K + SN4Pr0vRR56oJ5hn4uGrseu4QeyP0Jel0rM/jUG5vJvh3QuC9xb4FwWMAIsDOeLVapPupsvdmvLh + nq02s+djwYEQc3h4kmuMlZ4puHubAG8l2OEUIdiQT0uvgypMkorM3wsQFK7nyVfE9JJcTVWegT89 + YJDRm4vj89zgKtO6QzhCBtnTD6NcWJCHm5uxEuaSni9EmpP+53pMpwKgRi48PwoZMLlilD9QwEEP + Yb11QmKxsGrs8rpYJp8HAbzx58CcgJFM9BP1aWDZQFVZTzVUkkCbyFbK6HcFas235P4oWxoMXBIi + srFx9DTkE7/NuZIicJEQ3M7bzC0FRx03u8ak9twQjz7zKS+rotP2cqyYQCXHFj+6e/ZnZ6q1viGZ + rl033dVfXnJ8PhjXrJI4eiho1ldqauSGQtT/C6Sr7gVXHaxHXbP1mvXyqlntTOxRwJYES8Qmdexz + 7xZQVyahFZ6cOV6Lam/0utWVKSkXrkx6KsGU3nwoZ61FhSuT+6/GXhT4fOQ7IjkcL8wTg1VmPl00 + BMxQ7dW1MoCbTWeYzCRi4QTquKx4RS3Jpy1g7RHpfwmfoDSTlwqcaTor56BVW8Dhf2kxYSaqQ/Rj + oed4TlhGDFQlP9Sw6YtqLzAe+kHhrhkZwEvMD2FPF26xolvfyFjz/Lqy4Jqats5UjHMEm26+nalv + ygXqYrqZAPSQCEoN0zgqQpkYK12xrgKVVC2igH4SpRx2a1ATNfjuZgTS7WayTu6u5rB9UF9eUOZd + gdwAd6fOe/O9aNAmJqI2CtXLjNnwwdPl9+a63H15YvYYXMgR1bSnLS+kDoQakoL9ID/ZjQfCanyH + UdxTc+gQ0nUxOH1EvDLf4X710DDBcwk0dpM90FhVSDhBRHUFO0+duogo1vDdmeO79uo/vW51EUnK + hYuInkr1//hXU3djHmeRFxRg/aJXL9zI5e7IjQN3j/Z/PQfyFdq/dGJlzyqV7QhktCqlPac95YQ3 + 4zIICtWE8sVuuM+dKHoA/R8my33y6FDdsfEeuWraowvQXhCFGhVn3oGOOsqEkvcWjhazP8r0utVR + lpQLR5me0lH+58fjqJwEFhWSwMJXL3w4Y9HIj5knLek6BPv48zlys38yZTBRzqQ38nD/8y6JSidb + VU8c63gBnL4SLeNIYWmvOrRnz42isFSqqxwnXl9YzOFuXCd6CjXCKVUDbvyIDMp1vdS+ogzBNY8D + GsSB1ZdlNhX1XQgAnOHDGulhcI3toaldF290Wtfs5nY7VgsIy7BKEQ4yXYuhyymUSyOb6KG8fzGW + X/7sn/Kn56Mh1geiI3AjalvirYqxuru7FYiDO4SUvl0vdze3y91Wi7i6q839ZpveHQ1BOrpHn8ca + YwmlLDxZ7lZzqY1IqlmMDsqzmLJC+qPwzuFW1wJqGIb9xCQRfubM6LwdjVDKGzVr+osF9jLz40gh + HucMKWKGpJeh+wCBeKyLMHQgM5BH1/hGomWem38SCDttnVGOCdhMgTi++Ga+JJjKQcl7d/ZS4pyF + Ufa95hi335Zj0JrwCpKbXTvyMutONmzba7YfuTXMSophXVq9KfuIzVJXnxtobG2TyanNhh5To9O7 + 5ddUBWcLfyTGsLf10yOHrFsTO377A/prRuhGAcAnP8wFXLL/Gh/be2JkAztfjKJe9MbI5yQIHP9+ + aRqXOPc4XBJx0SHzAuTNwGcj+EfE/6Es8AHFSmBZFE5GJ3AooaDJtnDxeXx+cqGk/eUaaH0bJw8n + 7z8hb58b+REGPas1D6iu7BkLWhgS6XW7urJEuVhXVjxVvrfjkvvWE6mwhbqy3A1CD5aawy0lCzpd + fJCBMscyVOho+Ha+XEhQ8XcknZ/NvqTaKZaUrYHtnWIwdbHPSijIeUi8NBtGU80QHnp1FV+jIAp4 + VIQ+rgoNMgWtAkF0up1/KNRNZaAQ+X8OTnKuolPiI3n3Uq4LKV7l4AfTo+FtsilUU22eAXf47O31 + lq3EGYSf3NXzAa6+dkYxJ5ShXRQaYYR2nT1+aJeojF4eiab5s0aZkRMiC7gjfEElaDcR/rulyuP5 + 0yL3/qPbknhMnrZT84q2NHfaNt4Hyu9LKl0T5g/1fambhoAWT89AT7E3L9DrdiD8RLkIwi+eSpfV + x5PSTcM87hZB+F94kR+7fORFoJtKhJmPsDJXJnucpqKwMmZuyZBp4A0nifsCZV0VhnF+NynfOIcY + AnL3UAhCthfz4jUE4sFktrtrFBPNq46bbi70QeXuC6MbfRHJXoRcn/eCmOCJoVfjitpPtBaPseQv + qxjr4J9qisWCHJcvt+bVO8oqlsgQxNlCVLkS5rV7mscs5AKHvUjRNansAYgQk8r0WDgWX0XEzmS5 + wCQ/ukk2uuXu7kjdoyL5JbkDpjxLFkPYsMcsGeC+zWBkQoKRCf0cEsbh0N1PwPQANIRmL00NB5AJ + iEzVXnpQWrXZ2DKLVGfB1B0ea4p9IKHb2ihsrnKSKFTrlneUPYzGU8+m7FM0AVWN4nOTGxTG5G75 + wTE/eFXkDkTzHfOYpBsA7g8jXO/dpVK/+aP8owonqRzREpvq0dbG/IASbrrZ2vDCG5lFhL+mXQ1i + /QVkBRHxjDKhkfgJDfoLKmyYLPAlOM8bHe0pbLD9mReVpBxpSEyEZXJbImJSG2tATNmFiYdJD0lq + TrYrCczzjimfyhVQylCdBDBsgBm4vvt8YPcWUhUJ2bFLQDd/P4HmSftBtDEgpBqeZhpK1xHXc2Ev + kPBeSPqg+i0/Brw5o9ElbWcPSd8rk6yx9etY1ryLZ1IJ7Fi/GE9AVNKkvCDOtrGle6tdH4/sQlMb + 3ncbnTZZUHJFh2JB3z1jFfbBhxc8eyh561N0mY5ISL/Xuqv6EgkexeH4NxU8skHR13UVivuv4KkO + E/cp9+P4TcOerDOdHxogpenEnFdvscpz3dYF3HR5PmzPT8LZraTf2KgVyDrUCmTtagWyqlqBTGH/ + 3a7QBCTA/94ev4H/vR9eYeC3rN89uEim8IKqNHyBrw/W+EyAm0aBrMHlUqF2DEBcp6tk1rboFRCI + Te4OTHUykxVCqgk21gO0Ibc/zgXL1eKbeVgX/MZpcpegS2k7u9tVggA08yE/MCL1d1ez/7ebbVUB + 5xIx67JXbeFoaKilIiKKnBd49eR+/6fVitDV7exbjVrJpxEuuSFgNkPasXm7Z7SIfn14QZgREqYt + uDQ7kzowTtgDIvIKzcU4Iz3FMfrBxYkkLPdems2jjQg6QB+wsTpy89lNT2PtCfjbksjhkm2LDztY + TrYOALceVD8x5b3JuX0Fp7uO9B67rEVwOr1u6T0WlEveY3xKksCnkzLOEnPdsOQ9jl3YrKOYi0IP + KDhgnEwWLTxbfE02qOlIxyL5iT9NNsHfvpRXJSYUwnrlUkVu06FK200oBvvb8upKILfKFHZ463S+ + GA3P7jcjEUp0Ot9RpjuFJGVTvVvfqcR4kVyam3z8nZKEb+9BN5nL1ThSfl4s/UFIC7LL12sMurkD + MRT259fZeidyFo39MsAtomuuszDGaw6WQuilIslcfor6wLulGVpt6ftzSBnYFoC02hlFXM8zZaxs + rqwVq+6FPX5kGbb+7qSu/F8xNaYM/Szy2UunVe2HrJGtqV93Ytj61VOp4/z+jnEeD252yeJ+Ps7J + ZiCQgjoHMr2MiTKLu+WoYwEsn0m1JyI5xSz3q2a9pwIPIW1BTOpA1KqM7Eikb4hgOY3R2r4nklVp + vxGNHso82BLsBzSyP9xHLR88FQOyx11SQLrXL1be0/17/gBpWB15V+EsB17wkjnt6hvINrZYy6oL + A21ZPuyx/qOe+k/LlR+Uqj6qUQj05Ug6+ySuZxEL8gA+cHB47H9w5ch9zVpUr3n4KpRKgOmrhHlG + rzT2vutnKiYgC/ScgQjRokCPeN0SM09QLmHm4VMZCntZTrpwRDZtoT4P5teE3ojDf32ZNZ/hJ26G + p2/Ox3c4lyD8iUnAQGOUreXDMRtrVHYNybLpJQmjTs0pdyw5+/28Eu/XgBPzQr/QXx6yLGaxH3O/ + oBDl56ABUyyOWlPOILgF/UxarekExfpa6BdYfB7HNUAyiES0JMuZKEy4UbqAiSwTFWNvi+Mf5Cdj + dQ+7M3PvYS5u/erk1ub5aNh1j6FOls1afqIKwKILBKOZ595VJzYd4NnQ4bYu4wM5s0JI2rMiXXDI + xLzmRZjaxbCmGDperIc7uZ+0jsmMQSzEJr3AtpECXHlMGsk+HtJarUCADEHIuW25itXI+qO+x+zZ + Q0JvD5jpGanQdHcc9JXqUs1qh8Xv/JaOw6yRdeUw1YlZOEw+pUt2tZtIyDM8grPFgP4ZnsNzJHIe + vQ5fcleIxk7ge1QZzKHJMRFUqGXOo6DWsqKO5YK8tHs8dweziFAWsjUHmn6fbSVvmoE+2SKm3Wey + NKcY0XT2lfxfP1p477VmAgt8TrHIe9ZTTmpB52xeWXUQ/KyInuO/ZK0qqmeN7EvoyU4KFfToqUzT + /YTfdF5ZB7T4t4vV2jVeWMMDUaAk9HxxQqztn/ZOk4Msqj9q7wUEtVShZdGMHqxi9VB8rW1JEZ/w + HApf0ofHtC3lR0mKdCn9/vWZw0J7TZBet9IEJeWCJkhPpSb49ryM4ymADvOaoPdqzKIgcuIRi5lf + Ql1S3Gsj44JgVdMVci8UtSfJ+mr5HRj9Cq56nKs/yPtCbfDB8VEeNfsSieA9KdXFdFVWF4smT1Np + jA3PUw5rKGJRCBNf1Bk3sxuMWNKbqQqbzXe8cpLk+YdKykX1apzVNMZM620JsjNweWvaFXWSC4hL + xdzLKpqDz3gDfyhEE1auo4AFBY6S9ay3/+aIRIgNxvx/S1PKgcQVHcuVEgue6pbKMD+eIzgDLmyy + 3uIlthnghtTISIzUL5ygvASbTSPsl9qss3rtyL7SdB12tOPRlfH2Ygzcazmhgm8Hl5PoxaBfT2U/ + dtOPN+z3GhvkyfADvZG7qlCOR/V6azjF3uVVDJ+y4M/PXKdFrQN63YrhS8oFhk9PieF/OD8rmf58 + xy/Ui4qA4Qcu3AUjFnBfRTK8rcSGVbsexH8VCaBDDCTGzmoOA+i9dvdeSOcCmDOvo+r6zGMKZflp + hUxIgwAqycPTOewT4LgqaH4+W+H1eXKk9AWJqb3KNbpRbZ6dnz4XxSXwtH+dJcOkSIZSgKn4D+1+ + HcN7lJWlkARl2+ks3WA8vfmrqHIL5/Ya2PlplrweMKo2EDih4BJ6bF0TgrQFLSBBE74EZvNAatzz + ZL5I1TR2YO1DFQslzT3mDNKYf0QBolYg1D2Q2IdjHdfT+qlTwiOHgr+VLRwziuSxOTS+zokimjbb + U/mD817wbMW1Z6vAjyytqepq1Wmz/Ji5Lx23VTCNbGMbS6O6MEJp5EO6KmcLKps6yblBRArMoP4v + ecoYRhP7KjeWTG2ZdfjADMoDa5U+dNyWXUxOO3wE+9CcHnEXPM8NqYla8qllNpS9YaNzFz9XAHCs + Tnd0Erc0auo2tqdbdWGcbvlQGvQx3HGNUELp7gu0X6Ij6zqBxbkffD57o1NGlWjMDLoi753LQuSx + svdnMZQI7U/ZkHU5KdbbI2Rk97pLZ9XW+ObM2X7yZZ5uLec+GF2PJlC52bmjTPh+8M5tHSamGtma + 8HUnhglfPaUNP8XL5vZ+nvNQIrzD+Ga+Ew7quirkbdodz298o3ECDyhuzOd0WLzICFrOeco/jeez + xZd0r8vc6m75m8jGLQz9f1vh2/NJ+G6zEXvxN/TZ7Z6rukfPPJVIqiI10k9FBS51zDBxYrdqCXHD + mWJwPHgdvnTCVvxNtrFlb6oLg7vJh2QS285vpKP+8tPxxduB+O/w882cDfBPwj8fh5IFHQws0zEk + fg/6AddJ2ofQCRihynwFyReu3PEd8GLyyxweq9+JeKNsGTHKPyFLtyTbrSRA3wH+fhjoaloiHrk1 + xz/8ArJ0JhzUuHE3oX3CmISf+ibxvUjMCXCHcxuHQv8Zso0s1ZWeBSduEVRMr1t6FgTlkmcBn0pX + 8qfTsmeBBW7Js8CDyAmCEQ9ijwfNpbhWc6Bf4Tj4G0HzH09APJgs08VfsADHr9LtbbIATeG3cTIx + 5QOpfM3Qf6eKKt4l/4afROHp5fUQOerubgwrj/UNQfm6J+EYaMJNTTZBI3pYltOEDtAJKPbTEWZa + brB842a4uQU2KsmVTIhH0HkJFNm0wIPKhZ7faboFlVZlOg7evn2duQTgeFI1+liaCaq/oH3E6FCF + lYV0SdRR7mJ5F4KlQ5p1Mp8sb+V6pdteAjZB2qBIOIqcmB9ove0n3THyiEhxVz4FqbUv4zSniyJb + 0uUEVn55QIwv0KSIv/xRarGuFYZuzpXwDPvkJWOtZGdqYis6yw4MyZmeEce/S3dMxgJ9OrusShdj + PAyYz54PcrchqEGLgWhKkrW0cnczVUnbUhYKJ6JLvqbz5coavbhVWLk20lC9vNcXbhDZQxLQ63ax + W0S5GLslntL0f7w4P8OxF6K3Qs8vRm+9CD3m+sEI/vFV8ZSPBt5gVg0i586nKJ58cQi6lj+uV3Me + NuEV6KoSGV1FwnTKB25NrFbseT4ICqVYrUySQiPsdrbdSdgznfpnFlhpKjyXdVDKiKlNsglgJvdQ + HHSZ2gGtpg598kKsyomBRmJvo0aj4qxBEMBYLODgooxxrqxykplqsUFLSRnEtSp0y3xxjDy9DELo + SQBzEjyx3R60G1ZEV5TeWO0ms68ExYHcxmIX7N/9VleIr4pxRJ69skCv2xbjQMrlYhzwlHjX6e+l + uFOX8WLcaYwZiE7AwhH3XTeWGYgfcfcrDW68WcFc4WHQVmEMNtxtyYOinct59EcQsbdDONdmkXKJ + b7u5vxPWA5hU1fhoeLpbuSsN80ZcEJ6VI1O1YpnjGUKBLWX/5SoyOTFn3ImLvK5y7FWJi3DDBk0l + PMwONK8rBbWYgVgshou1VEwql1PohF4Y+UUOWh61OVSQxxuJyqEOzvEuTrIJVcubVzfW6d1ymorC + m6fnH2Dl4eivN0eiEcyV5LMfX/92/Fm650SBTrU59B66EsU/SyqXqAOyBH2IIpMLuk75Qwe4qzUC + DDAAYTGEDSxsKXqAh+YLHmaCFCuATSoWqkSoAUQYd4dBxkKTqgHA68PcJe2qq8KusWlsYWB6miAY + A7JxCLNU2V7QHr8VbiyxDpIFtsfJVfcL5TX8dubEjr1sTK/blZEkysUikuKplI0v37ulsoJe5JYq + SMJ/eMRGzHdcDM8TQPeSA2+G32bb2+H53UYWrYOf3F8+zm/hV7xn9EVO94nc01krvvrl4+Y2WOHK + ShxHzCuaA78R6yMwqTbpGvsaAxtLKehytsFXNyM0HEJ7nm/f8L7Kr4cmbulaUqrR5BaWoSwmO65b + TE/PGHIUuYyVEu3zsEemqcz1akjFPsjHbqlgVUNtKgFJXEctYihwF6kR9OjUwHA0NIIgqhtfFDkg + vweF+4wwW2EurxQAqaEOcOb8WZMUDxqXF7gFcrBcIK9PbtWKGsSKKAEZsQi13NINjtLuVjDLhvHV + YQJEkRdHUbEGF16pXxNRDmuxXEiJZ7nbIHMuwA3U61YMREwQDfwM800cEdRVNkO49uC+mIIEt5Zn + hXY5ngd5XvBlXDyFJ6smDQOcl3AIZlv0HJEFtDCf8kNyEcvJ8F/J/EsqEN7HakuI8GQTE0ASyOyb + 4iSNaUjYTnSOo5SFvBGdAGgOkNfoIpae7wiPUsgcZc3AFSoO0/q2d6To37wuLS7urhRrxZHDsY0J + IWDvFPVDpfY7OK1Y+by3IcHyi46LgPvwK+z0toS0Nls+3/ZkHgKemauqqOIugb+AyjSbAwfAYwXn + VvyyHYq/3FBOwQTkpnS7tStSIUu0R3mLXu7aspMGHz3aDO41Sl//uNteJvPVbdIRh6gFnQZzPZJx + FRlRiKfzaCzJVA2m34JoniPO5/Vytx5/g2X7t/LYNcI1V600kBJy7h9jvJE6tRc7Zb5crjq1FjMy + Xe6uQBbcoMw+/UVKhvSbIKq/rxX1wzGsHw8ds/IUHlwOzbqMRZW/xokjnr9GCpJky9PD6KZFClpy + R7FeC+9tpgbJiQ9DbJjZIv1le3t/J3BkSQNoTUymNOK+G15RgdQ+xngo2ZrcSa4qCMPd0AoD2rV0 + uEjKZQxoVzlcLt+/RRmhCAKN6P0FEGiESwtHWLfDIZ3yPG+QxMC5fAbMbIHgxpikd3r+4fmYrETp + tCmz8mi4BKkiF2s9SXbospeo0glM50a5ay5vU+b8rWMofsjsDsR2yACf43Aw0N5BnY3E2Bv+0mlZ + xU81ssb2VZ2Y2L7yqUzePTs7VkZQ+emD/LNy+EIJ41f1IpKTQgIs6qMUbTdxrS26SAT/h299OjxS + Q62yyEr54+zM8Zm9H4Vet2JJknKBJdFTYknvLt6WYOlhbUxYes97NeYh5+6Ix15Y5EgipBd1jOlu + InKGhE6ei1MDreHdOkWjUu5EAPfeTcgLOF9+G85giobz9Gs6V6XPoUkZ0l6BNTQWPK+zz9RhPtIH + jOGyxhzo3IdUgjw6bsEBkfOTMGDmoec9AGPqe5IHuPCa96iq4D++6iXQoDAOMdbDCNFxNSOlRRwJ + xs2IEmnXWTf2Rm4pIE+Wq1W6Fm1nd229H3DGSBtRn5D7TAryafWxIHIzwQFl6pdw8uNOsXeEy5Le + gkpVSW87nvpYlbxrOv87FQKXvpT9zMnanONLT6Le8930u9gh5DC9dScgz8wOKIroUbgi7t2lzfc9 + aMKoOlFOEIhd8O74TbeIas9Rlzvz7PUNet32ckfK5csdntLl/vr8cylIgjvML17uLxioXS4bwT8B + 1kNoiqiez4H+t9LFfBiAytOtOTPI7khOcYZ/k+S+p84C1SlSqV4C7ZRFrVJZVRvLeFXdRT5gVT2k + U/H57afjz+8/yPzsgUScuBMB8qv7NYhjojIPwXAaNDEPlcsksFiap7e3M0xBtYznsE4I6Ub+4QAf + WitaMbHw5tntI3Xm4J6aj4E0xR9I5fBId3WWdPUQ9iZ86XjtgF1FE2tYV+rABHUVz2Tk93wpw4g/ + X7z936qCIQMEU4VPSBMRniVLqHyEdgNsLEK//cDvI6mSBTGJravl/P7Z8fMXwzvsnKpOU/Nay0JT + lfTuVGsxjh062YJSp0RF7gV6pibr2UoMWI6pB8TX/9YA5SFhTV78UP8J5z4lROEwpE8oO0yHFyLy + qAbJ+wsWtojQotethFtJuSDc0lNZUPHjG16ypceBGQHsOa9eeB6P3HCEwfWRZDo6gvP31TVbjfX8 + 5aKAZV3FuymvhB3Ei8yQQeGSq42AQnXfLYMOSjqwCerizKWZ660AiUmeF3r0XKseM3n6oi6mKXRr + TVo1pIqb05THmW9FLgsa0l9upoug3//uCo3Lol4HrtMCK9MXxHY3rAlR0t3pOKJ8AK7O9/muAraz + rIrSWhwNRWyeKBB5sr6DXZOhryfTZCXw0mQnGA2UEYXLf4JvlUgi2uJ6ubu5Ff2q0Yi8C8mKB7jJ + lQbCdDERgmxqPWnWhgJHavh1PRxyhx0eftwPVkG7kl/IgtJv8BsuzI4IwbQk8B/gwRsrJ8TDgg11 + KMPnuoHr5xo1MKJ9MrvHHbr26raMlRNYXS6UGvfxjLkt0kvodavLRVIuXC70lC6Xz7+/Ll0u3Efr + dv5y8V+NXdfx4pGLUaF0tRxjzM14C58NV+3RUKM7y1BFgd4i/zp89nl35a6eo3osAknUcxHbOBp+ + u51NboX4CL+KWkbqRVDyYffj25hjIA3+MKPJFu38wImEkR/jIBdD6IOt5HUGP1dfZ8pykCNcuGwi + VozVLNIBNScVyVPrtIGOGShcRUcxwoaxOPtorMgAXD+KcB+FzQp2rKgbjGEIy+l9gQILai7f2I9A + 1S9dmPWpV+L0fcGwhkLsrQ8bu3KY+t7MBV3mQtw26c06vSnF8no+83gzPRUvCCwN7zMVoTetI+kg + GnozyWw1b9bUXgo1xrEu+PCcoBQZvI+qhCKAuf33Tg5UHDjt+bnebUqjD8sTMniaB3iAHElJAp4f + S0mAqrVbLdsvFvjtYkb0JdZpfq26CTwmy+7mi//UJYra3MCKcuiQdGEcKoK2/OtgygTsmS2dyMOY + dgSdBnpRNb275Vc1W20EIwVnRJUy7ufjHLxdc6lwuxngjhfWbI5kvsSY+By7tdkGgiHhm/vZmA05 + H65vivoVrb6mhe2lBEaLSBO7CYEOqcydoqxPes0815tY4TrB18uXjp0FJSKNoHzrWZ1GvJSlnbLy + ArckQt7XQsNWImzkmNur9RAok6BOoLHak4cVhNY7W2YTqAshR6V+CP2atGLy5Z/ui2JtXhNG35GT + XqRTrjtJlyIfLAUiu5XvKeTYlzPW0ePrG0F77ZxVWaNWQXsFd1X2lLQR7XXLpYAPYPCwsxbKzllM + ec1ni1eG8El3Focp68X87kcxHXwaF1xbU6z/sFjmDkEPAIK+qtRuFivqYkbvJ+FYAm9nPtK9ycf2 + WIk/3oErjjrzjY3RPUjEDyhbfO8eqdzGPRi8g+xsv4Uj0MZ5ptvYn2zqonCwxcMigDjFaumI3Oza + Qv5lUBNRt7EIYnj6yNx9Fhm0p9UFbdsLpSsElFZ7axW9bukKEZRLrhB8Staqi4tz01rFQx64gR8X + fSFj1w19zkcYfsgl8tZFPocV1MbdOlPIbtMh9y9hc83ucEyZ15Dk6XS8Ji/tFNFQjGRYFOG+Jjcw + BfDDVJZaE9TTIYsuhSuCbFIX61XZJiWrUpZK8/GStUFb+oPY8ZhTkRyeM9Rjr7cpiP71JdwLMUC1 + XWhTRM0E5eqAmvnUZdNGkX6ls2JtFhct1CPvvG75tapZKnz3KK+jwZ/TD+/GXqIsHDN0irx5i5Fy + y+84ybkpl1lUwlZQmvoB7lzt32AOlXfiARnmO5VT1SaGeir7lYBWvoGfy8uQqVjL+b6qfn9fHzse + c2xiwx6sNBCPE35MZfNWzv8D0xedSAKLmp926LgiRt9XebhbpUj2Vv3WiwglBi5C1/7ipdftUGKI + chElRjyli/fk1+MySkyAoMQmSswYy+y4wcjzuM9lhafzpvQxKZsgq/3j1wsn9E8I3+IivWFmiocq + 3SeSPKgsAEHDXNxstd/nj+UaBv2QBRQVPzLoBLxtKs5Tivj1QUUbdJdwu8GCerHc1MxvUdKZXrfc + 1IJyaVPjU4nDXQGt54WclTY1AsoEwSjgLPRZIbBG6CEJ2XEN7M/zKtS73NuTXPjDnvgXHtdKUlEI + Q2Zlt2B1PyPy6qiBWvTO4jCslxN9nCFW3NvCWKCrWFdLnzCTVt+kN/ruagZiIGjEOa5cLCNcON6B + z0q+3GIng7fGYIX0tl3fr0CEoprLevgCa0dIkLBBk2sBEZ5shD1kM5vu0L0lgB9cvQ+A4bnOZW4t + RkMFlfoXusBQmETYPGXLS69xqa5SHZ21nN+LtARKRJ2Q5wwFWR35MlsA4xSdJOstVnUA+XV3lyw0 + AiNIX2o4/2dwnkPd84OISkb7lMpmM7+dy4527aNZYnvigSh7WhOUax1DaGc0imVGWLtj38Zo3L2L + vSIl9/JGbclKt8s1Kmo3oNBVOlgqbqIDPRoDyZa0ubPMwVqK3nuJWUjbyr1yu06XiGVBuYq9jC9y + ec6N+iNx5aVI4DsKDZEHrdAQ4XVbNESkXEZDhKdSJKjIEkes6hIaousHocdHrh+LSPW9cu5quZUI + uifTiRutkCtjuDJiPUnJdQ7DKOeb/Z3QJzKJk8dBhgHhs/+7IaPzybnrnEQtUSCyRnZm51wnObtz + 9pRWk/MoDlT6k35vs0onGF8w/P38HWK4FHAihq44E9avY7nLkxM/iKlfbJofngvzBPqD+AP+7If+ + IDdtrrbUh8fuS4e39MLJRta2etWJaayXT+n4fL1LZJ0anZuM+r2QegRQhrof3jw3PG7/JLYmtWz1 + 0nSA9IQ5n0deT1XFDk/cDx0CK9KfiAYeI+hkL19nfhwp28Uwg8+fLHdwYU0VwHZnN2NMecZIXCIw + WlPPsOpz1Fx1q3YfVJ8+yQ5aKqb7MmPR6HPGegAodJvbsEp8KE0PB50wzKbHpLf9thxvUpHPZdIc + Vb4ua+G2mlfsP67r3/ie0fCfTrsuBhZmuor94oSRlgZu0hy2RUuPZXP2exywus8uGOtGw/VSm5jv + UuCMixlJ+wtqWXNWFZvVZWQYKLwvnbBdkVnVyDqhUHViphTKpzKV8P1vlZmERmaFjufMAJw+367Y + GMQqrlvr/Bsj/CE3Csw+hF02kP6KSFmjUwyEoxURiyWcDxQVhnP/4QN2erfEFS4trLWbMvAcX3do + k4phV7T2B1RYPqzwjnXrPYMwQ16r65706Y/uMVtaHUZPVe8LWlgN6XXb6n1B2WpITyXWxOfLiup9 + GNhTqN7nucA7gxH8E3nu3up9Qdi71fqJyv6xsja3Mxwfuu/0FqKaLh8vuNNCy6TX7ZJuiHIx6UY8 + lVhkv16Wk27iwC8m3byIQFz1o1EUBcJEskfLHA1ByC5AZbERHwvLzBtRSjlZZMI4WtyEgTFL03v3 + RSH4n24mrnKqwNOKZJq+9FI9wuL4Kg3HoAjUZXCGfuCHrFhl5RBMsoroBKoW9S2Zz7URtvdpPxJx + DSiOoMlgMiI5Jbm5yV3lWJMy3aZ4Y+Owbmc3t6hX7tagiGBkfa66k/r7WCZhrnZb4Oy76SzdDHAn + 6mSL2CWLsEN2q+LCHICukalOHp1d2Dw0ic0ZC832K07ARWbwuyC9uU3aXo+PW0AM5oGKYm4my4ot + VaZWKq2JK8YoDaD2BHUyJv/gAmVPJKIT+Uzj3D6Fcp6PU4TeV0Vq4Epq4akVr1uaZQXlklkWn8rw + g88XcblIjRuWww9i3+cj3w0jaYc60beTDBc7T66B12o9PBfXRXm8Rqkao5jF3XIqAhA2xJ7VogHd + svJTFSmYi2UQDAQtwCmVT8M4qREsyWS+Exr25H6CyRTiea5Ax+fzC6zWkCZbhR16sl3Hpav5ZDoJ + +S/4ofprjFIxfgHX8/xDhusZRZ4fBSV/ckuSeU+rG4YcVI+DAymcAMRoLyzRKSC85PRSQtKpGC+G + DtVOget6rhuWasydg4oCC7uvt+riPLHntewOjosYdU11HswoqwXFYJhm5RTBWau0dvlRWlUvBHBG + VoPWPezPzAUBwDfRQ3IQFtXDNifcZtTBvs09+LsyhQHyySyqx/HJauNnN46eyJZmcy5xMspprIri + CLdqzq/ftoOgAq6ptWWpKeupL+tVUx+4vYV8W5vcaQUdwlCRETbU2Wa7xMIFAq/NksgPsnFFEhjD + lh+3mVhxwWCLinuoRzrN4SY9FAzxIrEFO5brgFtEbWBzs1pfSm3mSlwxNCvlq6hxPym5MdT110/4 + S7Qht6m/LppY11+nDsz66+IZSYEYDbVBKGyNdJg3eDf/NUcfjeGRrMIe+MQS8WjORGiGTb61venb + lwxRBX50rhugz2dA9QdyyfI9aPSxE5kBKr1jfHbsYA9gJbmRJRzmupa3HoIVWkT77C3BwPOYRhMw + 920PSKFdiD9soP+Tgxf1I121NWqjEOPr1lVbowqFGJ/KOKVfq6q2hl5JIWbcDV1vxLgf8T2A18s5 + 0P9PcUKAIiBrTmfAFkuFefGATIBHdBoyK3DX6ELXzeDf58ueIgIJZucvUDq6I8ofjEyvjhllCPx6 + 5rLY3lFDr1sdM0m5cMzoqbQ7/XZZsju5AS/4+jgWR/Yif8T80NkfDDjKVV1PctXWdarzCH7bpgvU + BbcgzCHQiggCH8M+Xk4zJ4A2Ai03ZSPQ3ylu0HIyUQN/8/s5jxycukMmdoALr9M1Q8dFke8pWKbl + 0QgcM/SPdYj8Y+0C/1hV3B+jYzJJ1jIt5uO7y2F6fT3ffTfRNc4/fngzBNYXRBEHgRu9Ucn1NdYn + vldFZVRxDbSKIDL5dPkdhI+R+jmZj4QBRf0qCvq93uzY4Ar/w3nAvMDpCaYjMmDlG+g0oGL7Eama + 0/XuputQOItpy+lJaKJUVWYQCLh5AmLa2tPgORrtKfQZ/BdR4GQFgogVbpINFElzWFjuOP9obuD0 + izwi0yeMbd8yZq/pPLhU8NI8D52Hi7vSrzgaLQdcs9/D6jPTD/Go6jAdQFpdCkxdCn54zJx2dQ+y + RrbXgu7EuBfUU7oOclrn6jZZDIq/G3SwcEgga8+EjHK7sUB4aywC7iuMXsNcfXG71OETm9nNQu2Y + 9uXDQL9x5dnNVVxrqRb/gCjERw64wrYOFe3BucdqvPfzcc78kX7HYNybdL+dsklPCFyqd3vBwhbq + OL1uV++WKBfr3YqnUh1/Xc4kZgELi+Vux5GPSbOjyIe/K02BqmaMlY5UhHYzcfrPr1blrOK/bXb7 + nbJ1J/CCMtKZ7r7QdFKefhh9+Hg+yrn94ojFHiLjG14/BSAwTWHBvxJhVURSwkLJ3EPhg8sCwM7H + CFeZc3SpFEUVu2NgGlAyLuwkYPRj90jfixJj9zxByGp4T4EbVH5xqdnHL9tCs/e/5UFlB7gfdT0v + jzkDOVWCpVbNaYuLnHsOIZSZ09QidknZCfxQoXluZhUwpo0ouU/E6fXILDXX/geGaGFFDkq0RYsZ + OjltemaOF3sV+2avyewgzEt1R3BlsnVbFCCm121Ntm65ADE9pTvizYdy0K/no0+mYLJ1QU922ciN + fM+VUUyfCMZIlPBYytxrycxM7lQEgRL4KPBoijrGNCGLCQUwnG7gJvnlAtkTvJQubrF0BoUxnL59 + Z4QyXGIZkBEq6oitI0NOFRY3BiKsl6Cdm8BZSOctzMZyPoMRoFHyQtlo6NcPH5Tti262N7OqKOMc + wq369GfUXvptC4DqsNq1AURe4IdxGSsjq45iRb8ODt+kn92F/B9j/x9jII7IWNRXXXCz04SK8UiY + bBUXcB28hue4daE2ai4GJ9rOPSkG3cj5Njdwxf7N7d2jjnv3qHnvFkHf7PfuAE91ltUcMVnRVpek + ul4nN8JqYIGhUVulxgvEbQETJvHMxIQCN7q7kyh2eF2LZHIJZwebDsQTHLT/UiLbUR/QaDLbSM6+ + 1tXVaNs8u7z8XSDmjbJmo+GZfPjcfsS9INuxQGYSbvObsGH+KjEhAlK3FxMkIqelaUR1wgqXckJB + csoJgtSFxTgrZKuB5C1aEmngR1bXvCPTUm0YqC3BSG5COyKHab8PC93SXnySCyQEkT0c3Wo6e0D2 + 86msgsUA9tBxDe5yEClysVvOy6OAigSehJY48X2nHZyxamIJK6E6yINKyGcSgPbTcVHLH3yd3cxE + gRUj4kjTEggQrkQf5xSPpaqeoBVrDjdv5daxjvdoG7JoX3JWQteYRjIhUMyXIKXXJv3Y9oABakwZ + CcWFSD49YErzHdaH6TYxVprkj0FtPpjttQJzfxg0abV4rmSmxaTmcfXo4Mb8tlx/6bieVqGb1t9r + xbv7pdbI4Sih9fUF6I/2ui29bqXbSsoF3Zaekm774bxk/2Sxh7stb//0QLf1Qyd0R/BPzGVC60lO + QpktKB9wgu6RJUXnwTAwIvMcMR2ej2TgzF9S2l8nK1A3tB0Z5N3l93uQrzYyU2BGBrNvIBqvRypL + MleFCrUH+ImQmdDz/HWWXAFDxgwqcd+k481sm2qMv+HmdvltiArPVmZ6bm/RjCh6UyqDGKrUaj+s + auy1++qqGik0wOpYVIL8zmZrOsvPVTXioufWacaR63os5gXVT1HMIk+L+l8Ym7rwSZHg4G+6tgPc + 70rrc1xGeRYwHUJBKM1btSpQQk5pTeHg4LS2+Ax7ALRdktjukhuE/Qam3TmEzKHkvl/2b3ErYbs7 + tT2RrYcX4zlczlUXak9RdwFVefifC+Y59rcJvW51m0jKhduEntJt8v7DRclS6gZOIerOfTUOYicI + /FEQ+wGTAUif86kQouLSOhUcAXZr3s6EDEakimNWVTrOwKXNXApgOioHR+RdDd9/PmYj+O9r/O/7 + z4yCkuAn4dzJ6JNPw7APIIGcyI7tyJwjhO51mjlQxM3xfrauKRdh75+LsZiyE5aTC/PfmJ+iasyF + kJkdZEl7Rgf66jhlv1yONfad2Vve+qbnvxABGPGa7mCPBEHs/Tm4zCB2cSVhx2TZe0l+WvWkqjQf + w1pu+JvyC20OurelHeDW1o652CFzoRNVRCuU9qGY1JXIPYffKuawhXWOB0oahqWfS+S6MbCLzJhV + MYVWvPZnSTfsJRewzpInq37mtqXd5D2iB9NaLaq2XjGvvMiVjMR2V3LmEWphbufVjqlIQ91dkYyA + OmfxMWMvHb8VJGbWyjIGKtdNPggqe0z32d16JVMv8rAs81wJcR2WJNna/d3ch/+FA9sGZy68C92I + FDVG8cpYfNbVq1TnSG8BxmZBrTEsC0vpFcyuKgarff5VHyFYfbjCw8Atf5N1dfkWNpbMtFrtcm/G + m/FJmNeWWY063x4kGwuSCLFXlt+1S6hqYQ+RODy1ZTPr5+BROmmUnmNlbQaFnb9kbQLzdRtbe7Pq + wjA4y4cyHP9SKAKoQS/S+cD8tYBCrKihydnxmYqkt4HLtZ32vqrxDfsPKz+4zuXjxoPbWbF9hzT4 + ZD45TB2PeCQt7QI9lZJmbsibnttQh1efDJmK5fQ8+5wvet02lhMpl2M54Snd1p/ff/BKsZx+0ZYZ + v3oRRo7nuKMwYjwqlDoqGaPgWZqs4dFGItHCoEiWl+Xmb9bLb9vbIUzmHVoBNqlK7vp8O/NKaqB5 + YxWCPusAVmIU9/xSfEpfsZpSm0hmBUAWN2I2A8oAX2T6gU7zxvjvPMXYdaMaS2kc+H7sRH8OYNaS + v7C2uMLryhsXC0BuW/WukOLv0imC5qp1kaNJjeEUaxIadz/oBFTBQhobSdHM2BzO0zS5S26Epghv + bzcD3HNaLeRhMJCWxbJkIakjivM2XWDYi73ehxMn2GVxhg9I/+9EsjJ4sxdhzIpG3fy0Q6TtyQDo + uRGtMxmeJznhvkugY+hKdFNg2vbmO3rdEt1UUC6hm+JTGQx/9roUDM8D3ymim47hy+G0jtwIEXJV + jVZxUGZoY8ajhcYdmA6VoiHNPdM0majIZfnXjSj4KW26KJXC+s/x3IqcwdzzFNjBAlgsHerddgh7 + wHhhtkD7Di4/BdzPryocOBq/UpbOerdb3MyeF9hUQygij3js8yIrxmhaCUkxn63qXTmg+xRY6iiH + gwqzykDeL7BVhABM1zny8GadYwcWq4ZlK9qDc2OYr4fPSmN/bhjNih2OTBaaX9G+F3KAG1KDnAYy + Gj4gM1XTtHQI1YuYr43wh4C1xLA9BGfJj+vAMlwgYlIAyWHUiPFRqFr6Pa99r9Ob9jwbjwk2ofLe + VLAgO157WTCcBcecqEPil6RRoeEcPjzBWkywngKiQk7VdhCR2m1RT5Ret0XAdsv1ROkp3RGXn34r + Cdk8jrzSHRGDVhp4o5jFThiqhKkNXRATRPldLyVvmNxv8NbUFRllMT8Tl1m5cd9vVpyJZuYgxfPV + SPzrrqRzB35GT0wBaOB/xuwXEDP/55fz69WH4WYHQ6GYYHgTtMLb5CuMa7gmwTKf7pnjunTFXC6W + ZRG/N/yG3CxVO3dMuT53kTAv9HynXN9RzTQd1j2VHiOX29HPAg8qp8qgGbDampSeHwQgCMIN9Ujb + hMttIlfRdpdolEmB7wgHj1LFsIFxcZ4n6y+zxWa5+McGmN9GjBg5wmOfgr/55z3cIR+8vzznVBcM + f+LiJ+R/Ge66CGOEh+JXPxZxvepXuN+ElzCIfYl2bmExa8aBI99NxWAbRIF9FdsHzhMsKBh6MjKO + ea0i4/B1y8g4QbkUGYdPZWTcxXE5Mq6UGey9GvtuEEcMoavj2GsG6rpaA/0yUFdW675gEHLq1JCf + AKgLq4Pa1abeZxlwMufifJ9rVeHshBRa+T9njHN7cyS9bhcMQ5SLwTDiKW2gjxfltEGXo9XFDIZ5 + AeK9z8MRg+MdKfO/YTqarfNW/IzJmQYmDcNDuXnPPp68ez4afk1h2Lm8ZmSZanOI+sQwjbvFFAVX + ylBeb/C2UK/gwk+B6Hz5bSyGMYHuRBDFhhhpZrPHHb8eUkTCBplqMqU3sVvRlk4B9FAOj2lhF80d + g9BBA0VJypETUSnV+DwK6qSaanJi6LPCCtTRrrOYMjd2gMn6FdDeG4zjKCb8RTwyD/+pTtFzEbEs + KlZLKY/StAxEbtBuaHV0mLNn+gZ/y807wOOsLb1BEFNiR0yBk4dkyx1cGhP3CjYxNlOJRD0ugBe5 + JKHclRduj/+wZFf9wentYVWcwmyxgLXt7t17CmBR0o1nrklL5KFa6/kh4Na9JPmHgUbFe81fOl7L + erjUxhoVT3ZhouLRQ7p9TzPA20IczykVqDzdXbNC4ldGF6ve+m48GDzOgbByKPeGYMxjQkE9NSt1 + dhhWa4r7sIp9SaWHzB4rao36S6iiSTzYFawNgrpqYhtLIjswQknomRQlk+1bda3m+MSg7nmOpshh + 1NCMEjUdy2odgozYa+xHKNg9lQZuXVUzDL2sddJ0Q1QfT+vmT/+C6RvjD+iRZAQXzqwbJXWSIh2X + FYRu2wLzupF1ZJbqxAzNkk9JsdskK6mmbUDqnNyOxZcl23x2cO1fhpfQeoAkxPFyI1KSnZDc8SIe + HcRUkHxF3FSyHYqM4Rsy2c6Xk91mRJEIy93VPB1vcLGmw6t1mnzJxUdYX/49FT5pTae52uBBIILM + j1wyuOkIeZyZL0PQMdLNFud0LWNeqCCXxXE/nGjNxPnMJY9cbuKaSytWFhQM48xKAmcgyzT/xQpe + 9WeJXj+4kEskKxIICilRaJWShlEfPC/vIgDNdIaI1HLB8uT2Tr3HGSl/YvNsVvD6urzHrqR23KaI + S0gg7J8unKCFCZVet7KAScoFCxg9ldVyL96WfIUeR1zJvAUseDUOYVbDaATam7+v1sFiDfTLJlQl + AtRHdTjQ909sTvW559FNwUlezrvdawWgGsHlcaSmpy72yIMSCUj2P95cwJGxNxXT61YHRVIuHBR6 + KgOv3n5mmCVpHhXHLbjVefDqRYApAfEI/uHK23CiHW2iyp1K3xMGsutkgrGMWZ07lRKG6Pr3qFiu + BSjdcPldOH5GAuJjm6VaNptSKNAq3cLom0y65ZamhbdQGTpfEdGLI0eVFuzuGq+jqI9oAtSuROj4 + ZjVbl+FKYyeojawKHdeLg2JJxYrJRUYgklELcbGRz/19wx30u8r5c7NvmUsopqLYoUo/gS50Oex/ + fvgwwv8k5JqFnz4Mn50sv4er0RD+iaXLFn6MVs916JegiYO4XWI5lL/gNA3oRCjm53qRiKzFVRBa + RcVq2QpcWG8gLBsJFaklHF3YXbn8mg//bFnd+ac0gv7wxIhmkR6YXonUod+H/tygPFPttWefOaQc + 7BbXy3muHEkrgS3SKPAhb6vo6ja2RlDVhWEElQ/pVgnGMu7tGg1ly7E7riixZ/VSvj+Eio8caVJy + HLG9qO3m8EJ5QJAbBN1RML6abQ6H5cj1IHaMAqHus3DgoRGoVGRjTyD8I1uL+6qZxSOSWWv3W9cw + T85ZfseMSzvGHdvhjdiX6euty/+U4n0ZqX6CiyJXCvye79lrxvS6pcAvKJcEfnxKAv/p77+WMi2c + IHCL4v4Y/hO4vjvCfyMmgbdORT0G3Cq0NiNpMQQJ7PTjOd6Np2/OC6lOMk1NVL7GGUEwih2aZUnY + yWEpoMyow7g/jeezxReggeH2KvVYZbid7r78BCUNbgqzVZOawaNaGZyD7h0VAZZxpqujXD1QzoyP + zUe5Mixywt0/Bz98EQe4CbWEHQWuuJMZlQhY7UQB0dwNcPDVeQhla2RJnHpsnl8dg24zElY3Q+iP + rCjLyZlWv8mtPqEDmb6H1cY5+ze72XrOJIy4UiRc/rZ1jUHZxlaRUF0YioR8SHfddarcZRi9MkYD + rcjPLeB9Scig5XpQ/5oqN/QOSA6QrtAnfFeipvwUAEYRubZsoqtqYaCikKR8lb+lid0u79IlcDTp + NNvrfuCuHwhSNZhfYhhtcJUatXjukuWlCS9rX4+FnGz95fBl668tPGb/OS4vHjoVx2Jv4a5q9KhO + pPYNzzN2YHnx++yuj8zvvsott3Il7vdMcj8gaBx5k2ZAfp03T1/YlBHlc3w4g1vG3sdCr1upXJJy + QeWip9IZeXxcDsdnUaGKD3v1gvOYe2wE//NcqXCdgVwtZezrZAvrgTnP45Pl8VBiJgj5/TbZDBNY + zBRmRUgyKLKfsIBs3izSbWfTDegS6zQFcvPdEvjZBFmy2gbPTt+dPx9f7wg4Rz6UyOupLnMixPsV + 7BVga2sFPfkuSSpK8fSVkIjqxVhMw1h8yhg/RUzDfHbTgF8c1OMXO0HsFRPeP40RzWO2yIlBd/dr + xHisLCTnxXEhUn6U886EMSiFfhHnck8WvWtDcfD0d8UAN72uhu2GlI8GE4and/80l454fQy5mDRs + YJ2I3ywltaXWODJpcNPzfPDwDjbV9o263Juh1ZMVi+yPup1+eTjZZl0soqiEblTUJeUrvcl7F7V2 + wMg2tnqT6sLQm+RDDT45Rw3TBn7yj7szz7HHnMR3BXXUn7jnhf9FnbRLRezu133SYJNCQ/mZ0Rsj + nUDivW+fQCLbWB/d9xUJJPIhHVf8pnSNifLp7gu0X0pQLREa/Pv5O4eB4C/r0OUp4o4PfBHn1Rfi + 4sPpuj+mkk4rpC+1OwgZ//zMDVx77YNet9I+JOWC9kFPpfbx+8eSwwfkMBOb0ItevfBCzoORFwmL + IO6ld7u7ZG36B67xkbjjQZaB3XA2Bu6hfpdxW59Pjgld/EjNlTg30yILyhd0mqYkEaaixgVSycmI + BS6MrEvEteulSxZZ3AMMNReLTqrJ7q5bPRUjGsqP4M+85CoqRHAkYq1M/5NvRzTTdsQso+ka/Y1N + 9Vk45zXenpiFcKKLqbqacJ3+wZygFUEsDZmsr5bf7/UuKIPzB05cV6ZGUR389HvtSMFJre/n+ZKh + itgAz6FSiAIW8YGcGZJUaqaxpe5iQW5/SD5uAqG1FDdLd/+bDcE97rGfvPp16BdpZNzCchRtKLSt + 0rPfxOe7vHlvUfhkB2zw/jRITlgyTezzQSjuPVOgJUqrwv0BSmIkLZksCOyDR+h1S0umoFyyZOJT + kiX++fl9SZZwHbRVmpbMMXdiHo3QxxNUJ1WMiqhJydxfoRoi80IVVEPy7+U6CzJers3633/M5jC4 + ck5GVbC3iCmtA5AAMT4GsbOy6E0j7obLfCuaB4BbKDpZRgbz3EhCrXeCbxg8iQjbgZw/4ws6Z2tG + lHT07gL4ib2kTa9bnQ5JuXA66CmdjovLk8g4HZ4bYs3KAgw4iNquizjWI5ezGJMvm7KOrtfQwbeH + s6zfppjw1RCbVItZg7nmrIQGc0DG0bnACPuaYnwF1YlebJPZgiC1gUW8PX7zy3s94PE6JUFLi2Z3 + oOxeH4HaOJ8rx+t0tgFp4R5xVSZYUglen6df07mA/kWlFt5KsYL7RTL13dXwejmZDT5cnPj6qMXc + Iw8/02aUrYj/h4m/ApGxR79vffWM3qJig1y5cHV9dyZ1oHcY9xY2Ke/AluLM4VE5PYV3xo4GE4lf + M/clc9qhichG1nAiqhMTT0Q+tbAHEb5icre5NRzBcH5N+ogrEjgBmWp9Ku+xu5r9v90MdKNcPIrW + iw4DHQapi1LSFb1MDYNbRiUPSrD9duP4OksEL/n4z9doprr9ltij1Xi+zH8UUWVY9UNYC3NDahFQ + 049OQxXJ9FDwZC8XY4us64qWlrzIc11z/RHHHz4ei2cfcIj7woFEQuTbwrABLA59ML0+Ai6eXMnO + WKb8vD5B5+xL1qrqWdbIjlXlOsmxquwpsaq8ewVu/e0syQfdzK7HrpHb0/z6h3dj92PhA0Wds4jZ + e5yarRoe4wUKImRHj6S7qbk96f8cb1Y/yFR92Hb6lcx6rg/vFTdQxRnppfDaYR39LRG/ylW6D0b1 + ilXikNvG9kOvWyYOuRW2H3qqkAL+l5WBArywInMID0YcjOBf11GZQ3X67XTtVllwDszleZpIGm4Q + eoMeuWib3I8WzfYYj/f5+TtXPPppomf7ksFEtsQfZxdwcOwPNb1udagl5cKhpqd0qN98KjuHueMW + cHI8ONM+41E0Yj6PwxqTrjrR8zU0qsPJycO2NCLm1PpMf4JzzuOYKcQcIV5UIea0xfw7QGb6L+qO + kNfUsfOU6hPErGWwnW5jq/ioLgy9Rz6U5cuSqe+sMm6VA+zLqzsXHz59Zsr7oQw4+R4wH8mJdA3W + g3CdgyiWhSPgFZhuEGu/psBV5+lY1jqcZrRHw9Pl/GYmqmhcdBfOmO9QtKy2+nQbPAtYLLhz/Yhb + 6Tud0jJbVYZtoa20orvnXEdxPa1up7STZ7krZ9DHmeotvL1gUQvRmF63ukUl5cItSk9VgsfvpVuU + ObwAoRW+GvsBgxGP4AYTJciabtF0DfQr5OK+/D5P6b504iiCX9SCBhp31XX5S9YWd1U2ssZdVZ2Y + uKvyqQyITnfKoJ4vRJTluRuFZ/NsO7O/kwygYi8FRaqb7ZFhPQRdSpwdTbQZjNOaaxwGaYrJXdgE + GadKnVynG8RihptqtihWxtXaDDZoXXLeI/9Uspksqb2YiJYgWP0VGoTzGplr0ruOto9JH1hivG2t + ROtdFUcEswyznK4X4hWQErAOJ44zOaQOue4iJgehGO5mt76G1TxAvjj0ntHA6gwIvXT8dlyJ2lgz + JdmFyZPooXTsYYH2RYpOsPF89iVV4YfKETOQvytpKg/sY0JkZb0BO4oiN5IGclKVVXusmbokh/E0 + zYc6HsScOHD7qH6Hl1DNdCR6+x4H/ZynHmWwzjsSL9OQ9KGGVT7cXtqfY5xC1z6eMddvUT1UvG5X + PZQoF6uHiqd0hb+9OGWlLFzus4oS004YuCOXiYxzUTxUb74cII5gSl9nqmC7lNru5tBjWWqr3iym + ZTOqRSJ9uhaPt3AxL7azXKKXWeQ+wY2lZIPTZMNWIn76/HYZrUbYZrXEkBzQHK+wGGImWeV0wOvr + 2eQLyBpHw9N353uzUCtn2ogJ2qgKjHStpKtkreLCr2EHD85Ps8RVz4+9QTvVtA5s3WdUQlHgoEop + SpUob6GOHszAnoIhpi9zbuwQZIrqpVx/reW3eTFTa7Sk5TmA51FA4umZ40X2PI9et+J5knKB59FT + GZB4/jko6aU8Nlkej1+NPQzmc0YeYyIzWOR9GuG5oEFcqvqpwugv2N3FahtUl5RsgZ3meCz2WVhK + rMn1pgF67odwWrdo1VHG47ciqil5Xsjj4VFdwkkQhx5zW/Y2GuKU57GHm7qPfK+2fCYLPRfE2iIv + Py44JI245Siqw3QzviajJrhDc4llj4W+DVF9S9jEWRWziYDn7elj8NtCKA0b2OU0Bxu15Vh8Wbnw + ekcaGzJ/eeCfp8icpvru0aOniNHdFYg9iFl9NLxa7hbCZZt9oL5cREr3Zvj71VpeXL9fT7HKn7p1 + EAtvtpjfq8tHbf3t7Xq5u7ld7rYZMoJIkhjgidReAljaHiPq6kCnHYV+d2Bw3iNDF/WmQu8zSTZH + f/lepgW1YA9WE9Mb8YY7knv5i5Y62QD95CYdwgkBucjOAeWBsOwZ26h1nk9/yIPAu7QQVBnfZxEB + 2Yf88QQijzWhiAgVLxI7kbC+8f7UppAR+6JlRSvQeIsgMJ1xhEl+AolEBVMHEW+NiSHb2IZSqy6M + SGr5kOQhETJwDSsMQpFyv/11PT45eX8yFOy26oU8aYF3gX5hGfrbqra002vs/pMKg2AOkxXXHbeF + oEyvW1ZcF5RLFdfxqTQOfL4oV1z3HbdUcd2NPR6FIzf242BvxXWg/4CBTYpzNUILB6YbKJe+E4Ma + 6EdFdKpevDkuJ0BfLzCi+HMWxL32wwYF+Aci3ga03+tmvjU140LdpIhO/AvIjim0WByKg/tfrNq6 + 21uxHQqpfH/BWAu2Q69bsR1JucB26Cmxnd8uTsr6eVw0STqvxtxD+WsEwlzApVHyUiL2SHVouZ7d + CPPbZHmzoPLhUkIbDb/dzia38lhshrJUoC7zBqqPmj5QY/J/IZobofnM4J/5ZmnqWQUc3c1sDtxA + mOqwxPlVWoREgK5OphM3Wkke+dt6UmM/gDmXX4TAPLkxVXxgwdIQeHU6p4e13kqqd3E+ZL9qTozi + TiAo2RDX7LRIOxcabSjKcB+3opsVWdRzjmUgxS9m2c4J+k6324ZgOw6cqBb0o7L31RqTL+VXfc1S + /jNPMMHE45lbJEjS/Nig1pwhuxs87c1dt6sHeJ514igLnAF9ruB/xZG14+Y4aXRZVE99vYe8SvEM + pPzXsD3tzQtekBURbbcl997cB1oOAj9omjNL40WQDaEVV3ps8o2BFcwNWNWKw9zkFt1q6NaY0nvS + h6OoakAF7ms3iT3o8n0LF1wFC/i+8xIEhzaxAtTENlRAdmBECtAzEhRW6XeQBGXYEdbx+w7fdJ5+ + 524pDkCSEsXX/VBrqt3SDGiHUIctckxzBCKDQPv6aFoE/fEeL7UtNM6nGxzzl5hS3aY+ArWxro8g + uzDrI9BD5ePZ3t7P85J5fkc0/zXfg8gPl+XEe6kl9p+KGijmj7Tm8ux3TWAOffE1l+MEWNtycz9H + 0jOhY+Y8DW36axE/crDyp05OQN7UC5igFt5U8bqdN5UoF72p4ilpa5dn/xuXtDUfAwQL3tTA48x3 + RvBPGLlmCAm6oqQ9RWkgR8MpfLhYMSljIW63xPGeoUlxu8DjQ+EJsgwqSFk3G1ZqSWrV5fx7XK1W + CUtjwe5U66p84OJYfYWvoARRB2fo+kU49fyoAs7jPweV0T1CZhTlIKgbIffDGV1OKJVAF46NnUt6 + WaXDoT7h8cvh5g7jK8sIu/DyZLfeLNel2ra/8+FmsYROe9wRA9y02uHImUAdBJGdWLQRnnN5+Tt9 + sjiLCPM228jTKB5nCtHwmXp3NPRfRpdD+vFMPnxePtlNGOmcJODCbLc1DbkEWauXIVfv+EffO/vc + m20cAVrrCig0Vm4/u2TMXGNpmNUNR3K/lnbpngtLcedQ+2pOmfOSOS2dNbKRtbdGdWK6a+RTa+Cb + 27u7bXLjGpg3mjSmU2VCcJuNoSeFgh5/PXO80B6RjF63urIk5cKVRU+lX+OsnN4Jio6ZmOLxVy/Q + M+VEI+47gb8HkOzLHOhXAJL9HRO2mc+dA7Sgp6R5UDTa+zMga78Z6XU7azdRLlq7xVMVjXbGvNcl + CSpETmbau18w4OghG4G+5ES+KUFleU/SOEhQ9s8C5/J5+bodDRdpsp7f59R6mMOL1Zx5xxTSI67W + THBFK2GyHcJIK6oYqKg3aH1VBygNs18Hrt8csua5dVZR349xsxfOSR4pxDBSh25dJDEIPCHjYZGS + BSS+2QGvDR3LDzVnL1aGlFySlFlIh5U+fvAEFnxAWzZLU4t5b9hBVRT2VQh9FNCIA9Efmpq7bkA4 + KPvPSuNsaEHGJ+Uam5MA1T06yQqAp7oyXc+FJboRrp8teQMwRyN+Re9ByHHCdohfspE14pfqxET8 + kk+Jp5PMqWzf5VV8tllcfDp/nrc7wc/pevMSF/ju5fB/Xh6/HJ7DvG1uv8wWzwf/+tdwukTH01gt + oSLlFYxXuQEiLFigCtHwOFC7oLMy4jMuTWAzIXUK1wgt1Abu8fTG0sXyk6kkfR7Gv2usE2PaAOxi + xaWwnaKkGlmbgFUnpg1YPqVD+PH+SnkH8o4YWRFB/CxhvC6212ywxv+I2reer2rfPnDdWk6FYvMj + gh72FevsbLX0fM+L93xRT0aFCqSwJ1gc1h5erYeKsTk8cD3ZFXux0oqcTac6bgo2zfMce62HXreE + TROUS7Bp+FQiLP32uaSCw3UTFVHTXjDuuV4ESg/3PNeVzrtPFFQrRKNbLJAIit97Pj6734SxNNmL + oinaNCltiYXohfk9TVgqLHGbkTY+IzC2eGZ67bfpHG6rNb4JF9d2iAnGQAPml7Yf/Hy3nIrDIQpR + ate/3B1kBr2c6UhYswIL6VFvlttyWZ62xmXmuDFIpTXBkeP5/QZD6T6NG9wbRq6NG9YCT7lOhCln + dqE4agZNPYd7RvxQrrSn+SGaulpzudTFyCEW+CFrN16TqSlMiBxNzynWSagY5eBvuTEHeFg1WF/k + iSILCHOvmNo0ucPEicltOvmyWs6qrrIGU7cTuvKmzGHHi/rzq2RWock1Wc1dQu/JYlrH6ffJbEPR + Iu3JyVDPFcypGXjSgZRHkBl7zsVe6Tcj6FdU/m4rQjysjALnMCh8NdbTvu4U7MW9kCTp3Ln6NTtV + 1QQrxAKf+XGU10PMmgUtN/FTrVz/CKCRPXvkewyJZpFDUd5yq1jdd+02I2M+y29Gmx6eyR2rqsBX + eASrNEjmxTxjaubdYmWSUVIf4Wp+OnOjFo4Xet1K6pOUC1IfPZWxAm9P3HLVRccr1HwHsS9mceyO + Yi+MpciHCP4TOOa3a6E6J1kSaCk8VSAQXKXbb1i5++2FuNsIi08GAqQTtyxinfx2/kGB41EHRjQw + c4Naj03A3OjBHDbwAdulwhKsqZIU1cpP+bHlhB2NX1gDV2iSj+sEnwiXy/f/HJwmd3eJtlLCJYIT + iDcaiDrD23S1TeDnzNOobR/bW7z8ljdwaNI1iULH62u2EkHTG2HXFuuC5I6Mla6eFsyZFudWRLQm + 65vlQOw5Jb34Lmf9IEGSo9k0Oh8I0SgWEpvkv60NXGOtrNAjbmVNH08TptJhBA9LX9QVvfEB6pHY + RIrGXjb0ZCXwWDoYLUnWEVTGuUgdxehaLs5Bjltgoiw0mgs225YGwfaV2bXVZdqiefP97xED0ZsC + 3mo3p0JyZLQ8OfORvDa6J7h5xEMeWDJstOZ6yrwUtDMvBfbmpaDSvBQo89Lnd69LqFZOEFSZlyIO + MsYI/vVClbuay7P5/O7Dh/dCgsjlSRZ1Sml84+paQz28Nmkml04yMqPr6ns4GoqiTmYatbI0ivAH + vH/ns2QxPDn+VQyXBq79hkLw+Xx9xWsiIK2+y4wQYWXvtAaviZkfBWU4GXMiJHkaaXXWWj0aSxh6 + PGJFoQs1NDxF+6zgRXOpaezya/FZ8r1qcWohXFdf00bLuDg158s5jmWFjq8tCkeqbl7+q0OnNu2N + ObBN3bBYPLPB3GHGfUa1BaerP6yW7ojsPjuxZLvFt4qACydkdQlt5v4wa4BWHJPKuStYEGuT52jK + IjN77u9xqgfI5TK7XEB2uZDu2NZr94tVEewOBraf2YIldlZ5kMW9WWY3eptaTWvokGstg0RqOUzk + GWJdrFlR/ZAzrtQ49oG8A/Zsh9IdYjUhh6Y4EhLO7XK+LFwvez/pb1eWRdxn2KTr3WizYL0FAviy + 9gtnvE3tF3zdsvaLoFyq/YJPpY3qvFDMW5QrdqOoVPwlDBzuh6MwcLknE1ouzxN3/J4Cp48qLVSb + 27vlspATbtwXV7OVKChytZvCXbBNlUED3n12+vrV8TtRzDF4/lJZs1a3ZWMWNl6kky+mOBWbEYo5 + G1bsMkzLKQlsSGc7WxXJ1Pkd68jABp6tZrhd9FeZoiSvc9fVURRzNCsFYQIlXisIBDzmrlciRStS + 8ZW1IdosdrnPS5AJInzvC2aaCO9VBllWYAKm+Y+ZntXzD9UD1lLSxe0yJyvcLFTNQoWaaoiSrolh + sJ+6KLUCIsk8EafbwNo3hdRChfe9lFPgGVfzGcy2DNMTlx2tIxrHKQrYOPGF6kduAQv44/lof7f6 + MJWmPmRunZwPtHwX1YACrU26my5v71e3MOk36+W37W2RovdntaU09kC+jsMsfncfT6hnA0cqMwML + dIOUeLlK3NXIxPzFFgIykuYXMRnleBFxKC9naMFoTD5gJJbPfwQWjSJBISnr4/H5r79uhh+/fGHQ + NfyDIxDtt2m4GiAP1WDB3PFJMPUIEWG5+PeuLtZvj5BDl2rTHrUTtxglEKg51gbcCp5rS5BAiyo2 + iLU8jIcV3953wK1GFPHAKQvGhO18m6xaW+4cMnftOcQWAiOXqRvqQijPvZV5FBm9mPHsHrATLA+O + 9Cb0jIzXt97GeH8qYV9/OV4/dnZh69b7BuGXyAiJwXYUts33DYMswomq8PXv7NztAdsIwzjjBp3F + 9Nhczeabu3GLKRE2kNZPUJbbWD/xdUvrp6Bcsn7iUxJhz05euyXrp4DKKVg//TDwgnjkhxHzle1T + 4K0NV8kctUDTk40YufN7xP4V+L3LO3hFAAdv05W4x1a3MEvLORzt6VDntIzk23ihbDQrIlw3uk10 + Z+OT5TFeX3gVDvn4C5wuoplgWr6SeM8mV25J4tU+hWulRZmWRLceaTtk3AnKSNt3s8m6nObjh7Fb + K/jUUJLfejKuntWy5ZOFTiFFO+fS9f3AKeN1NfdRDYMY+lHdpOQ70fKPsb51aUvcYV4dHBjcu5EP + V9Ofg5N8+tKmfs+NVG2TmThy8yWcQrFnYBOQm1jsruvZerNtsSMJHmu26WtrDvDIaVMcnKk+MD8U + l8LQQhJXllm2eydSYm2Ew6lyJRvpVqdhkNxTPnx2t8jj1oHa5ymlxdKnvo2t5gmktCpSyDrEElsx + Hatl5hEtM/H/rcg86QbuGdJOtmRWj0u8IXrzUNJ1In/kKY3mqUXQBaHMLqkgNdJPhf9iMcOoEvgy + UEdB59mt2jMlWVPrfj2bLr9joqmEyW4LSatEsBzuQvzSiVqiLmATe8wF0UEBcQGfkSi2u1pJVCld + x6BYrTb7w8lYpnTMc8jnvwOFAZIR6UURi2UdssCAyTXiartdM4cXXCjn7fRUxGFPkDEpAoreNM2V + tai8i+yKov2AFMMOdWIPrOSANWH05NWXlWk/hbID7/ACCZ7rmntoiDhdc1XRrwdArgO6aL6RIo+b + u1+F/qr57mX0kSttIZVFH1olhUrbwv0G1yolYNJDyfZVLo8xQo757YKFLaCp6XUrzVpSLmjW9JTY + +enxSTl+OfQL8cvhq3EAHx04oyAEbYDJiubZuVJhOai+nM4n4QrTsMulCj88F2/czO8neMFmCsxR + /pCul0Iz2qDVUKZyy2a7yXKD5xmebzbKsIz/3sI5X6LhAkmtoGOqVidRqHUdIKlvnyaTsoeparxi + u7CaaKGgTgGP3CgGHlYH5F/RQaU2i8jsNYp5+x709Fb3FflxXSQNLD9znbjohtBrWIPJ5sdhaDN6 + TbAiRU2UNK4jEvoeyA5FItLRv1mBmDU3MrhMZ09c59fACmkuj4rpdJ1DogpL6taFmEWRhyesFNgu + 66CC+nSbmiH88A1OMUze9B+5Ig7jz0HjQcUNMmaVe+fZ+Tl7DsKxCGbfqPeXw9PNvbsqnGJh2kDh + djN8v8GAdzHcze1y8qXSHV8IKoKG0huA9gq8td9fvhvLyUZnD6YNDncgaK1zlAfIvnQoPHzsQE6y + EFl6CB2xtMHHlMBUOhMNEmBjvaGYMHE1vcMNJWLLkzmATkjOY6YOiwYXb0oZq3X27Ks+3ljg0XPE + B5e2u5U2j6w4L5E1cPC9RnjbAGYLh5Ufx3tGVcGUbUhz5lBsSu6I7Y3LqcqfipVWydgb/pIF7UAq + VCNbzVJ3YuiW6qlEislERJirxaD4u0EH4YjjWAC3ce77phcpv5Uw2bXywHzXgsQq2WJ98+56Uiv8 + X7kAroDq+eN/zmAH23tW6HUr+U9SLsh/9JTkv4/nl2ZcOQ954BYDyz331QvP8X3HG3lw0qO4GTrw + 33Po4D8EOhA2Hj8MQL2byVjvIabgntx3zH3JvDaHOGtkC/ekOzHgntRT2lM3u0RqCCCRDKepUJPg + GssrSoPyn06xWR69CekI1CbOJASNYvQ7YbU0Cj0dfEEGjC7x04/nluSs9dn2pJu12n7cMH2Vqm6L + fN6b8Z3HZOqp32UHrFkX4s1Gg16KTmsTc0xx4isERdvMdnc/HvPKdaU1ww3jNtYMfN3SmiEol6wZ + +FRCj74r4+B6kc9L1ozI40HsjyLPC9xQWTO0MPCOAoZBWfh4+VahgV7flW0GKmt9moLIthVQKHWp + RVGdj90NQA4Iy1GcVgg5OTpYoNPjJfjQCQZHrXGQlYo/D8078sPph1FRjzRG2AiIUwDBcW0pDzCj + oQjlZ+iHX9ObdKvUOb1QiGwzm06FDrNcKyVP6IpHGpUAP1mGgIvsbFVDCj3l7zdbVFUrlhHFRlRD + JRipUgg3w0wnvbofXu7ErjCyaBTySa4w1gA3ptZTI4ofDESQdTWCSung1fvyeq3MVK1eMcEJmzZ7 + O/X2wFyIPa2rum6VCNEwdp85kVi03eJ6OZ9Ci73UKlZOMUwuxX+XRW3Ef3zdUvwXlEviPz4lhvn+ + fz+Xal24rsdL0r/L4pCPXNfHIuPNsj9Qr5D9pV6WPasUtSNuFjJVInvGz2jv7Qf4Aj2lpiIqc/zY + ZWERQ6IXZQC4qUSS7yVf5ql603uuouVSksybdgfhjf1BeFN5EN7kDsKbz2/KlYHjiJciDAOQ47wR + TKUXNh+Eac1BaK0EsxhOYDk+7ikpwS4Pw58cP//QM6u2cqAKwjHYJy8dv406njWyLQqnOzHKwqmn + OmKDucWQjcrIDK2c74/gYO5A0MUicpE0wnUPjrDI030icRf7oNv7CbGwcDm01bp/3qCD/5RoADdU + pc/CdqXPQvvSZ2Fl6bNQlT67+K2sPzPfqSh9xpkX8RHsXDiZzffgzRroTw4GgP0ZTMHc4R3KCDlP + BwHxSWGou5FMnQalw14qpNctU6cF5VLqND6V6tHxeek8cBdL1ZiZ0y8wepGFo8B3YledB+DXYxXr + /zWlSZXQGJX56dLS8H8Wz9zn45P7zbPgOU6crJowme+Qj8q6B8KDiEEz0+X3ISaa4uxm7kQgJTB1 + cw6uZ4IpCYDekz9O2Aj/G+J/zzn+97UL//38GZ//dgE/X/z2v/Dz24vTWPyXwS+Xv71xRcDNH+9f + syNlhgF6799+ZPy5PO/vk9XBaM8Ri1wndEsZISrW7AAwHFDRnLpuORY3CIp6YZKul1ciDn+zmq3L + icOxE9ShCcJOAaGiiPW8Wm5mB4eSeH7s1YWwqG4H/2ffljPsVreZOcccWXErCdtc5l2dp1/TucjN + vU1lYcTl93todCRoXrpRdJIJEdPZ9TWa0cQHLgVKIsZmIctKJl8w3BpDSKY7QToZfr5n0N8mXUuY + Ehpmsr6CLiRe/G4zwHOq03NdL5D1Cp4+GgtuHqHhV2yyvcY5xW9xK5AvwHZjNQe82KTJ/GQAwXDq + KzZDU40BK5riezqzJbtZ8x0C5lzj/u96Jz+1qz2WyL0Ob5FSSq9bIvcKyiXkXnwqUVE+/Au9nwVf + kRsHJeReP/Qw8MEPfe7JwIdL7cHNS1Eiv+5ftzNXAZnMvjHv4aIgNDDp/XopsJrzEUY1+ZGuX2cU + ZTHoMaWgTNVHAnx2SeV5gNWJfpbrikIFWGDJaddFRaCOQTD2nYIbKWfIxbnx/hx8rpoC4eyBmb7f + wD0iYorxQxqgFvDmwsw7oVNjILFCoJji2MTFo9ZuILaPvnLiMCQQ3ljwqRwRay4uPpTumv2BSw2Z + XZaYElZjYqDmCY2+vOYtrGqPHBdD+5yge2nQVRF4nVPyXEPNaj57j6/CHW6MyAjFuTns9GGS2XNH + mUS9U/7SaRVlqNvYGkRVF4Y9VD4kxn+3Xs0lNADGwk5ul4vpGpMFynVAVbD0H3dn3sD2ZXwVu0DL + KBxpd2BdStI+nujQwpTc9SmRx/yo9vTkAY8LtOzzpQNWHkbHOopAzC0Tayg82XH2O9bGJIiP7jUk + 7SOX+i5Uqc4xU+eYc6f1OZZtbM+x6sI4x/IhnePV3QqdRniOMcDl+0wYQ2aLARqd5c9D+su0SFU4 + LSJGR9Pu3q1IBY3DuNhQhtKBDlZ3ddsuY18RzVpJ9DJy0m6kkqYqxZQWVfTaEX6MkMRO6ul+gcOe + RYSksNL268LLWrt3AlnZSW/4zl4STtu6+hj14CfqNxLSZzH5jg0m0FVUoRDG/7lgjmPvgqHX7SJy + iHIxIkc8Jbb2x+/vSyZn10crkRmRMw5Y4Ab+KGChixAojTE5a6BfdsH0FpPzpJwwUcAGB4slVk0b + 4/I5BXe9vWCshTePXrfaSpJyYSvRU2ni+NeHkoXDif0Calb4aswj14/ZiEe+MO+IyP2cZbgKXLFk + FJYmj2+zssWjrasP9GknYCXzfysbfx3gPGg1IedFk/wp++WS6M+U1bQiT87cg1ExujWLavVZxEup + qTWERIZmm7Ga02BG3Pr7PnuQN6FO8pBVwlT/+p12ATwTSzmG/war51j0qFDRcSj9SSqqViAhQK/r + rQTUBFrPPl6tmCSh42Y3Q/wvTHmGHWB+Eg4GhfYt1oaczHc0Vpi42WIjbDSUC2qEB+NnZeBdBEGM + aN0DPAOKNTgx4wO5dnia7Va9jfGlJ5+DDY0GEPoHdVl4sLMlUGWltwFnp25l90oxThhnJcnR6alD + mu34dge5j4NOIJg9bn5zuFZJoweQqQtUtnJ3VH3/k/WTdKFZt8E7kmsMSO/B8tZXSKw+Zn5AWryU + qrMzZb0tlCRC1Yten8Hdb+9sodetJBFJuSCJ0FOSRF5ffCpH1/LQMyUR79ULj7uhN/I8JwqaRdqr + OVAvR9eaElvBwVJb8fkniC1yWHyoWPsUomzVlvRV0mro+i1NSbqNbcqq6sLIWJUPVdY55pNub9fp + ciGM+fLgfpmJhL98Tiq9+kvtu+erL9zMYl3hEwF1BltMQZ1FeXaTc67tdbO0sBF376QZSGIf0MOe + 1pKtVeOA9+dT6te8Ars/0JKFSjnucsF6ATnQC9umqzsqCA3ki9Lu3EvePri3Q1f7w5gP/4A9eGUh + q9htaWdZxvcpd/n483n9BrA3E9pQa+bJsqD7QdPUR2KQYuyBMqC5vEVKm3jd1oCGlMsGNHgqY5jP + L/2yAS0qp7QFoKazYBTAIsQyqU3Vsihpxpu7BBTCZ55z+bzsSyI8cFBYNtshjBLmRbbCEs/IcTGw + q+gvRJyyHB8mS8vX2dfl0RCjKgm/TGS+zpKr2RxW4mh4m2zyuwgL2sI8LOez4WVISi8o4vD15c5U + EvNq41cGpGxE2gR9ZdlXJkuZvN19gcVIzCImfuTVFaiJfT9G2agYxrnfL2Uac3htzcR8B6WYlTo8 + b+E+LVIc/G2XfoAHIrOORh6JII64QNcYs5Z+F1WIxeGuVZ1r7Q17fNEVfrPO3muJ0O1KKTRXqLol + Fz9YfOjkAVbsVtWaqDturai5rkAw+MXiGFvZMRyfRCNsTtJON6BTTS+gwuKxc4lwjvVTVi6H0d2N + XWkc6dst3ov1QN2blPvz8cyJWpSJo9et7k1JuXBv0lNZYfj31+VcB98vxEP6r8ZxHMbeiDnM8Z1m + Jf1uDuT/Q/xOnu9F8Itaz0hBq3nvmPOS8XbQaqqRLbSa7sSAVlNPaZFO/3gnk0cGuR/vVlPM4fS4 + 50nlNGKZLNi+3D20p3Ldby8EUqQo9i7riI/vQCkW910DcVvh2WeOKzq6wyus7WgfNjCxRZzAwfUi + BLOurhdRb5xpEevUAdaOx4qZhW4rZgav2zIzpFxmZvBUMrOTcrl07hdR7YCZMdcLuTNibizq4uJB + OVkutgnKzKiFYrLJfIL4SihkqfIixODpCFXFCV/tpsBhoPVieD3fLdfpZpJPVH52+u78+fh6R3E6 + 8qFR7k4EG4tKZHBjgsy1BhFQbHSs8CKcY0ZnKCmKnwuHYYOZrncyzQeHfHmbYqWhXFY3viddN5+x + As0I/3FXVJx5csVX+rZSNdcnFTXXcQyFYpO8ztoKEx37quT3k2LmZ7i8RRyiUeXyihnXJnlz2o+E + 9L9Nbm7SaS6ZfJtOpKyfFOV/YRfBv+RjF4+GsE1a7xK1tDOLFR3gMckuMB4eHDgRkbAneFHS0dAs + No9gOvlabD+LhVtsUXIFKs7RPWsH9rqXo5THPKANZDKkdsQjWfp8D42qdbZs+hipRJ7zf79L/xZz + opPxcQsPFzWw9HFJ6iUvFz03LhvG4T5hWKTadG9hgWV/FIa8DkOJfIfXM9KbZVXU+5fD4SVcRO/e + vr4cniFu13oz/P/BNzh/Dr0ofMXZmAcvM8cYDGgyTv4zpG7mCJTGX4YSh4YJSDX9K4X2ql9BBDB+ + 9YUjQ/0a+rHbIh7YQvP1SLhLNpMl3gtpriCurXnl8XM7nwIPVUdbQ9simk0rFyE2sPUPCuKGcxCf + yGSR+VIGxOXT9+VlPKh4NvwILQbYTCDXBg4h46gaZiKghYwMG5ietK5scH9Jt60DiSNCJcyAdrTo + Mbt5jOymnyiN1aNw4bdnsOftvR30ul2MJ1EuxniKp7RBf784Lik6TsS8YoznC8YCFoQj+CcOpdlm + uUZPJgLh+P8YZxXKpqnMrxfpY3St/L5OykJ/bzeK1UCqM1r92KnRMzhnLCpV/MSSbHeiL7TXp7VO + AhZHflDjdmBeHHPP+XPwW/W4n/328fy5OfqRRDv+S5aa3cy+b29Bbf/rHi+EiS7viX+bovfg69Ic + GlY+10PfjNB0+RVBEWDLQm/IbZfD3Zo+7G65WOZG8zuM5kg12Az98bvfjqmBPxba6RKU/8lsLoI8 + l98x+hHXc7eYDnB36QiU0KMkV5dcB/+Q4/xH/ZweAMbdUye1XgsJVZWj2jOauEtuit+tIb+ruHd7 + KrWFGQ/EDJeuF7KgL+c7dOrb1Ubtt96mTwGi7TiG1Vz3RPoxhl+3yP1kEEuJYX5/SERBxBktuPie + cSdi6pblKu8wDMOXIuvePu2QmthmHcoOjKRDeiZzDtcrzyZkbH+YGBAaIDWRJQzqopASHU7FZ1T4 + szArbVZwWmEVR9LkBL+l2k1lAZzICZNA0JJnvr3c1S6azGJUDxWdFvFInLD8zLUjEfgO3T2ZfppX + uizZ5d8saOyHR3L9N/BqD5P0JFge91oEXtHrlmB5gnIJLA+fEnN89+tl2YHMwzJYXsQCJ/ZGEQw8 + YM0e5Pka6P+9KwmxER9fwWyPsbxlsgAhL4/1PRpqjDaRVnWabDyhKZBF6RtGeqi6bVVRQvA+Ww1O + jy9dbefnHMsPcMcLA9M8ZRArb7+KvKdD3Kh9uAoONFbBvUsSbbKY3GImcjeDv+cyYifNS2kpj6oD + 7Us0WNYmIoRet0SDZRURIfSUDvT/d3JRKg7ARPhVAQ02ArE2CEbwjxdKhKzwJR9+eZPo2KNYBcaR + XWmxnIsNI+xh6XBSzAXXsUaCDfx/k3Vc4gEKKg+rWsLU5AKUPnz40ByyGPp1RgPmRCGP/LDIJ/So + x9mox5NhRfK6YflgLqv1gnI3ilh/WJPVBBE1brzZza93GYKoPuFGvQS3UGk1owwiVcwDt6LSaoay + oo5G5gQd5VYaTpWx2EYwZqEkasUnDS5tNpGxHHIrjIbfbmeTW/SaJ+XITvMTZosFTI4+/eUvol12 + ZCaemq9d4/RuC0NUyAmb2VaXk5HjG+AR07GZHqO6MLJ+6SEz3FK6f4gea00vBwYY9QGZKba7eLvp + fNhSc92YUhLr9kwbG8uPQS3IaJBAWtgJi6/pfLlqD8hUBTJVOGetSQZlkuWroC1Vv+Krmy8YmyV5 + Cr40eQ3h6/aXWEud+3D6xZOlhKBAhVG68bH3krVxAuo2tkGUqgsjhlI+zBt9xls0LpA3bFDxKE8L + S9SCrmiPAbfHCkOVuERvwmSClYHoFbyMNCrhAT2QjxE+634+ruqnu9LdgfYhsZuPF4T545IJI9pR + ehrz+7B7zhzF1ZZ3di9phF2oH24Z2mOsJtNVt3EoVkUR/O8vWBDbG2DodSt9TVIu6Gv0VNawen0e + lfS1OChkvjmvXnjAlCJn5MGBDCVre5Mm0/Hrpehc8JBohDOaizi7TeezCc5PHjR+XbQqC33tzdUq + qkYBWs6LOEAhr8OsYU4QOx5zqitj7qVklNByXTcMSplo5gfip+iPrPY2F8w3tYPtr4u8OmR8hVbE + uI+JNbM73C1ZOFB+UUyMoKAum878hJ7oV41/AJMiTFur3ZbAEo15kSrSm7fHb8ZXsCOvgb2hccvQ + 34rpREo0y29OGKJKLYcWLLqk7YpxsFrGhz94QKomZepoSEPN1mqznd1l5T+BzHIyI2YizHNvNyt3 + NcCDqCPUXCbCyhxRMI5C9eUGFo5Q9PR8TW5E9O+Hz5dMhJulq2SNDsHLy9/HYsyC/fgv859wZvwN + GMdktpHMaa3DkWmtnik6o4zGSBN4bq+7If5x40fA4NFMKAZ/l8AlkA79f4xTLAlxXfiaHgdFLp+m + mYVBvP18SRFzjzFRcAzElVLij63ClFyXoDX1Lr+aLQX4lTXsglXc2L5cyQySSTBdG82ne9pfb8IR + D8KMkIg46BwpzUNXKLIXnXGVkK1LIWXvdWC9yTxOc2xB4uFrRx0shjmRQzaZGrHjR1Vny6REIlS8 + ERp3tBIOIxXJ6jqYlOe47RBvdCvbmNasGyOwVT8moQ/zX9M13papsJMvZWiRCG598/s7FnpMXr/6 + sUldxLjG4aB92bNO2tMTsquolaVctw9nzGvhpqHXrcR+Sbkg9tNTCfN5eeaWAC8cr5Drxl6NI0ya + HEUchDwp9Of5j8w2OFI/iIJOu7tkMfxfWHKsAnZywhXM52bu1gj4gmOn3+GOxQknFEaFzsa1mGY4 + RVkZjkGLpDHzI+V7yPVVCf72+d2HD+8ru/CDsBZDIgyBj7Ki3P5mr6QO90vUjiZJRvNDypexwPWZ + Ta9afF+IGPMO1cZGGgzThCsN6/U1HnmuSuzLBqC3xbiwLQQO5XC6E8u1W3yTt4axN0IWWu2NGnjU + GQjxUj6v+sai6lLfF35aFPw5OCk6kW7hrIg4XkrvwMeF9a3fqyPhsDfBOOl6+aW891Dmn2WwpyNS + OC6SKV+NhPUvm0H9eUD6yFCJcMJp8ivOuTjhA2QnWnnxHJ8QU5mEus/vIbU/gD/DDZMrkmsbgxsJ + LpyNqa2xUmah1e+wtgR/hpJxgUhULg6yuNEPyQLSPcVkF8tnQokTm9yhWkWqcFuFgjm+WzdBlOSE + EwTDz9ACbAeMqQ0SmnZ+/+z4+QsKejwE3obzIOLNe4y42GwhH+5XcDxKsMFzNp5g3I15b+USsj+9 + fcdbodAicW5JHBlX4a92AlvnMn5PUrU7GDIXVDteVluq5QerCT6IYPNQe1MYDza5u77g/V1FIjst + oafC3L4jqxUyJ2xTrRBft6xWKCiXqhXiU1kV4vhdKRTLcwuhWFis0MPOoxH8E4ayKsQfAp0sd9sL + sUXc+HCAv6R3aFPKFL8hdHUk1KFUFBJOhveCQIbFfbeczq7vFYJ8Fqb1R3JdDtO6/NcFqxb7I1Ps + /3CeIeh7AUZ5RCWx/8C4z6dbfjyb3DWsxxTOZ8muzqPasQWeH5Vg8NqTPP0wqloEHX4Fm+FqCTIn + 7p9Pu2NveDvbbGE+h+89OFnp1ox2VGuOcqsoLpDbCKBbwDHVU4aVfhfb5AaO318YJzWH8eBoF5gE + sU3nS2AL6eZIm5028rjP70kIvvw28VYkTKuceaTZvMdFDh0BvSTDP94ef75UmEh42JQE7IPOPLAU + VqszuA4VcrnIcK9eTrshtKLQWN3AKxDKlgqj3uRCtRAwfwp5+0Gk4MAPCnMpuCpcy+3nwIN1oXtd + nkeQUG+T/z97797cNq7si/6tb6H/JqlIGQJ8J3XrlmM7jzV5+NjJ2mv2rVWnaImxtSOL2qKUxPPp + bzcaAAk+JFCiHSez9jlr7NBEA8Sj0c9fL64sVmIgGbGQGb+tWM+iYH/yo259v9VElRrgc1K6DLbX + zvNqxNtKPfSBHegzFSTFwiP+lLFOQVKyjW2QlOrCCJKSD0ncmG4uZ9kmH5RCQpawG43WIiyKKbPx + Dw957DlK8QGZp32u9waPg6dO0G1vUBvrvSG7MPcGPaS98f7o5Ox1OW5YxwYOtvypTBt3ThwEuHH6 + KBYo4Zr6qLAeO3QR6SDgSbKCadoXapw5jCSHl+/e76tk9VJnT+0kt8Rl/D24jN+Ny/hNXMYXXAYV + IuAFTCKzXCwzxj5my+AIDsoyE+UWBTeWnqtHZ+/enAwZ91xQifjjgY4TwHfOkc5AUCOu5BNgCyio + sZLb9s2ZVzujK/jLnZZfoLxs+OAZfgwwFyS0vxUXZoykS0VGiEYZ4gOMc7wap8PLVZp82Qv7iBFn + ljI9XCp74+eUSHrl0cIMoklUSWHT7qg8DudGznZphLX29iGpP0CwCmKvskl7l8z6DaO1Mt3ZV00+ + vHZWXyAXDy7XOSpQZqdp9v1WY4OXr5ORjLdD+q5CtcgQiybNBWRd909QV48n8WSZw+3tb/S6JZ6s + oFzDk8WndN0cHx3XfOyu73pVPNkniJ7hjRBjyakX0kQ1dJUiKoGY3zFo4F/gL2QPF0eulMpbMD2J + 9LkMHJ1OKa14r4WF4/jo5fiNtMEdJ5O6Z75QMnXcY4uXvM3GFIuIrrBukNPcYiRASBHmdiUuk6tZ + JXfRCU0fvBGfCxez59WyLvuyrpWML4YBjEdmemYRq2p8b4NJrTB8mBY1ry2XMfbcII6qzuqGla+a + 6NqigdUI6x7pLav9iHzG888SDvZdPmPLx1TAU74MR2qRfoM2CnsKcW+lxpsPM4SNAjYM3cErai/D + GycYKGlkRl5uZnPBbNTawdH+gpgpmci1JgwrGX4k2AGZmZXdLh/gmSvAaUPH1gzXbm0q3Y+VSe9A + hLx3TVvBTl4IQ9+8Z2Ei8NSg1FqcnLu/8V2XkdUI2Yel4edgk4Xq2/FJajItf9KG16kspLojVLq8 + w8Mu6fL4umW6vKBcS5fHp7rwEPePagkYXuDVEubh5mCuN4IfXuAcUnroubCRwwYuqk7CATpf5tx/ + QUe8DgkhKsXwhlIxRZEg7jfgx/6nTNDeZYJ6XaYBbTSdNg6aqk16YVGIp58KeoeUwHmoRWvuoO5M + X3VhFZ8LVJqZF3RKM4PXbdPMkHI9zQyeSln4/KyG88Ni3A6VNDMXZRQ2cmMWxJHJ5YTEgd8vpNsJ + zPRMRM+JOt5y4lNVtex4tWT7FZU/LmqyeyzmftQU5nnZEHeI2mCbsGqQ6gMBqNukDHD+dYAei+Kd + sdfmye9cXVrtPEpwPDl3A2Z/w9LrVjtPUq7sPHoqywgf13eeU63q4QbPxozFvuc4I/hJkSZbMKZe + TBp21y8baHDANj3VtekUAytHlir7l4y2Azb5Ls/RK19CYKFyARIyTex2lSyWDxUK5mx6C2oxBgJm + 8yGISOPLWQGQiTclLMstElvBjGDHyB4XdJF8Aaa+Rgfw6ipZzP6iGwfbiAJEopSERuYY4GZSx4iH + QUxxrtKZrK+hORZb0ZfRYZXyAsbKgvNhxA5DUWG+4xqD2auA0i/v/tVuNJ2/w7zj6Knjd0vfUY1s + s3d0J0byjnoqkenTDZMFixBtLEtuBGrsgKDHxskcTsyYjTyBRQbHCSGIBqKRgBwNIgk5yiW0ZDa/ + ld+CcZlowzzE5eHHUstF/FeMvxMJoQf6UYBo0DDWg90zB3lUDgVW1iJsl2oROy2nEq5ZYawSwXYf + cvOZocjn5tpiliTIp0BV4JKlyGq2ZRRxTOYJUeAo36w+JxMxclFbqRWOtF+0aZfCC+hMDfE00bkq + naleQDEO6+ee8h9DAieuExrRHXw1hJev5rcTxD0cgiI2tT0DisuqXDrYOfa6Db1umUsnKNdy6fAp + cdXTszqGKRd2MjOX7okLcloUj1wvFHtc6DbTGVsOH+mCXzPEFUMGpT3Sj8erlLADmiSo5oMGv6HU + RWFtIP4LNRKrK1ZKO58u87oYu6MuoCnbRnErKKLv+cyJqzLpli9tSZkL/SrI4KicZcVAyagbyWU3 + Y/jmYjIMQ03A2+z4euiDYsYoZhS21jJdiTAuEBAn2bj0QO9rA+pk10IQ/GohmKJD/QrE0FItuVLx + PjSRn56PFYIEPJlisI8MZHl0en508nhUCsMWHqAtE07BDgPcwAX0REAVGwJuyHrFl8ww6WsIeyK1 + 96HjTSUuBnP02uCyW3Jodc57BHcgOD68nX1HL1iaAXPviHiwZ1nMB5pqLE9OeQm3Hrlul9xhpFtT + sSJfbJJDhweHN6J6RIvP2Xxa2mhdCtYhFVIA9CHvYvoIHBX79On9H95T1il7v2hkG/2kOzHCn9RT + umyW6XJNcoGMcnrHgoEoZ4RAjfJvJjUMb/LcgMKbfKfA30dxuul82SO72VC7y6gml/A56MNT3I3o + XFtIDJqDhOh7j2rpTXiVtWPkphC8UG+afZEeuVua6MMIhaXB2dCz3o170L6HmmO9CeJ9FS8LZNj4 + 8Rk7ZayjTaNoZFlapeikXFxFP5X4mms4t/PhhzFiGZbj6kGoTqczLJ/7eGD1ktEj990o8r2BqG7I + ZA0jomKhtVuyiU7Kcgdsyk50d9jO9pOKHnqoO/K6kI5E697og614FPdgT/quS38ogdwLXbKUXIPm + sccU7CJOuHWrq+wOaAu5YZ4seqOtuBtXZYHPXadDcUZ63a4kMFGuFgQWTyUg59H7anFGFofofjPr + Aj+JnNiBMcAPVwFyTtN5cgtfmiwU0Dn6ShTAZrJoLsdINTxkIMbLzeJqZoZhxLzi17woad885lFd + y38Anqdj/WU3uNCGHm8GTXycrUTB89mK0w8ERxGFz2crD2Ys/b7ESr4wr5vFFHMz9OxOMrhD8etE + YBoGDaxTCnGTDaablUh0VKuxyr6trwe4xLpCok9oKX1VEHZChzAji5U1PFsdFGKfLOfpd2E5lWXV + 20LNdsSJEwZ1MSbLYaiD6SpXiuuGT7HwWQdHCjWxdaPIDgwnCj1rL+lLOcP/fey+dlUIbpkW4p3x + mB2Cd7Y3fEaPqBcPq4xu4OnUosjxnzpBN/VaNbJOLlKdmNlF8ilx7uv0hms+vE7GAmF7nn7dzGcL + NfXTlBxbSHeJSY7AF9B1DXyagmfx9nqNhMqSKVIWqrgbSlj4MBRimSBxuypHpB1QflTKjdCbbTlT + e22/O+178aDBvStO1hrWP1neroQd9oDx3d0R7xOa3p7Wj7NEBBRV0XpI+nCh7d/HvSj/PRRV7Y3d + +qqeKgt9FzTkTgVVZRvbiqqqC6OkqnyoimqYeeJlyC5C/TnPb9hghf9BTT6OPFlOg9J27TG+tkFb + HBZO4zOHfO03GlD6l4il6dm0eTCM8gOTW1QsrhN3yDmg1y1jcQXlWiwuPiU55fW/Pvq1WFyRrmfG + 4o55DLp2OOJxFLAdNTevV0B/8p+QSAvFdFDE4bq743B/rZi4gOKBX70FpmxvX6HX7TJuiHI140Y8 + Vbv/j1pWJmNRLd/mCXdj1x9h3Ju8dF6n3zMZhzrLFX4rH0lZ5y8dj1qUoc4+DykaR/j2RZ4d8T3M + e02n2Q1mzqcgFGvC0mBAhgKKjRHtRzojLlek1MKL5DphcFCWCtk1fCkTdoxXb+Uv8CrwrM0krbw5 + W+dD3Lola9Hr718ackIl1zaTdHjckkPDYPnCwPP2OsytdIrDXJq35roobhy0BuQDSwOedzDJImwk + wPwsvwql/BnlT9wASlOp8MIA/tdKEC6vkP970LzxKBh6j833vNh8Ait/5+Z7fm+bb4Cns0hS4qIK + CnMpGUZnQX9NyZKUXFllUGp5zaGKi7Ul6R52grSEIKlm+CBSjLCEkF3akWpEbHNiOaLbSZs7fd92 + 2+UrN5DwIGUwNYrARGg+24lwuef5xvrMbpoF4naZ3IPJ3IXshqktatlsZsgLZKSAPk32w9r/dj8A + 3+qHlZbrMYY2lpizdW5sNQedCPQ3lLYj3gOchuuIQ3bQx/ThP1SCXPR/cyHKfTh3Y8delKPXrUQ5 + SbkiytFTEuVenryuBd56cVAJvA2fPWEgPoSRM4KfYeyE21WZbAU9fGv0lAnFocjibZL4I1BYmzSH + h6mC+DHmg8DK0z9BZXIo4uHHe+jVRou16yd4ET513G6+H2pj7fyRXZjeH3pIm2aO8FfKl5bPrhai + 5q+I2RWPlskKNtTcDCwphRFTonUmETvzzaXKNVbZYhfpJHDN2BV8IpxIccCkFcsXWpgiikGO3bl1 + EJDp++K8DBk+yUq54KW0PYpBxl62rqW9QyCgHbbM8vU99fgzZL/tcKOS9q3SJg+sit1Dqs6PDzTq + EhX1K0YyKeEZdGSxN5B/8N+Ji7TiGNhOmsviwC/vuO5hVq7jE3re63wZOrsDse2H5pA99joFLTi/ + ziZfdhPfJtGEjgSD4X7UBQwGX7cEgxGUa2Aw+FSCwRyd1E1TQRzWoGAY2kPCAOQZlGikafYCPlkD + KKYCXWlYhq0cUXHLFDFD6m9K3X9LPS7Ym+JRKlGsp1QpqIQu9r5ofKoan1Pjl6qY1yOsT/K4sWDY + qyqmTDL9AQXDSmAyDdOUL9MJIm7vwLWrSGCsvQJwYz0q28IxIwTNg3WZp3ktv4nH7TV7ZaeDX2fL + DPDsaMORF1sDf91zsSge+9sJbl1gO4OOS+p8Q7W2LgWetjk+e0W3H8jTuWOia6fbTkTZv/CQjAw5 + hAtYDdHhFOMPc4dVekEY2dtJ2Qcgqbhvmj/7R1uFfFZCzT3ApOMzLQkeSqsPYLveag6FKjvj2HWd + jhlnuo1tkIbqwgjSkA9JnMmn11JrzjeTCbm6KP4No2xE9sXmcva/m9kC7nbQc61eApoCi4I5EnPb + iWPidjOBG/H9dq5i7Sa3qIh3ZNDMoVQPPZjt5vgCJqmgQDK9WRpAA7xrrXFU6gP4Z/GRP07F5Twm + D0l9tJgEOesUPfyrFWhAktVhCeNPvpyJDXAr50jdT3C77r2SD0CxpGuZKpC3Hc29mWYvxRMiRped + DePoI1yw52INfUUUhVzjDMXH/CnrijMkG1njDKlOTJwh+VSiWnw8e3s0kA5pdTUqRK562l2JqKgN + HvnSzEmBW4qAiKdWYdRVb/f+yxoysnFIa65geR0rgvRiTnsAZ17tTM5Cw+yTLr6mmBQ7bv46UBS+ + Zasve6wB5eFJpIn27XLA4VWHxCUgwrdwx9l7q+h1OyBColwFIhRPVcn1F1VvFYvjkFeBCJ94cASC + kedrT9WFyAMaX6Rf0wVMwsXmUubvvzALNZfs6AJZ/TpZ5sLbvZkJtiICN5J8Iuz84q5aX6+yzRVV + 5ysQSmW59ss6NoxA0aqi6PqR12bfiFxQRlV17xKdPJtjtQ9YQykJm5FAfAvouxcEjls11VAB7Jbq + 51HUFm0YRyA++rUgwTqqSxWRxup79yZYSrAzRngYDHFliINjFcMHZ1nOn4goEqiLajOU0Vq047L4 + nnJYmsis+8dYn99ktUZp6783Ge4jrN14mRrbVbmtss+EHj++SRCHAbaYwmQQmzQvFxYVBQwuzuBi + oCNQru8oBlBmG8rOdJ5eseUAz5/GbnSjyAb/2EJhsKHQGvpj03iL5ogE/AoBZPzp6qZ7ZXVPuIKb + ImfaRoZ8Lv2WToXIu1mr7hP4j4wjkpRVamMLZWiD2DHzTjEVfSVMei6PhJALh0naxiwTgOw+H2Fk + hGTwG2zoRfY1+63Vx9rqx63B6QcSkKDKRm31q0NhvMWE6ctg53h7izDqw9zST3GbUFLobO87EJxI + yTMyH+fFmeu/AtHZ7ST060aWQn/RSVno109JSmksFauLiJQE/q0v6jiIbxMzBzKHB6geMNcNST3o + VKLW3obSQ21YezW/x4quLvcDYaDQ1ukDPQDbueaW8rHb0TYVBd8je8q2UM0O+teh6RBOwaAafRfN + oZZMzjgc3SZbY6Oa50d+677d32VvDdO+A9jNaaiuLH0ve4PFSSuS2pf1TdhHd4ozBtocErreUyfs + aA6RjazNIaoT0xwinxJn/Hh+dHZmMDN6UuV5H1c5bI2abUT1gGbvKJRYbIdZeqE9HV+4HkvgDhah + TR1s0ZFgbafnKJkRmq+AVJ+n4xv4QKFS9NJRTI464DMZSP5Xh5j4DoKUYwGLxc3e5TO34ztzKhyF + ytZ3gYpoAH7uxyQO5ZSW8Mz9pYHq2XAIMdA8PHtMguIUoYKQ4N7roDNCo2pkCyGhOzEgJNRTshFt + LhPpMiPb9VrWKviaiEBISv0ZvD89OYkanmNrARPhxLG0oAZeWVw2hIs9QSJ8Kkigx1eSgzrAud4H + uIMHQzVQShfpdFqyF1uIKNsJ9CWa7Kmk3R2Kw8PLCPE9uk1+ZrXRiQJPnB0qW6XdGtVzvHd2R0Rh + OfPZ1SE5IhEFTaGfZVxyuRxGNQ6JagvrMsi2n0vFuCNpzGcs7lBVSLxuacwXlGvGfHxKjPrPl/XU + E1hgv1ZViHsBYr5zLwwUhFRb4sl0DvTrOfRbXdhmWr1ZLq+M0+bEWO+sZpjWgknZi2nQ5My3oqlt + 04WsYxikQV7dRadIS+E8DA+Rcn/JAIQH4B8c7M2J1cmlag3/eMucDkHW9LrVyZWUKyeXntLJPTt/ + h5uqUq7BReTxctYYh6MLuiTnI86iMJRS2ZkCiR5Lq0VhvqOUfqG3iXq0ydd06NPO1bOcp1fIxlT5 + hbPVDXNq571xfQyHllMpXVDGY3RgyCG7q5yzSbb4n42sdE8VEZTq+HlTC0F2Qs90vJ2e1cY56GlG + 0Q+EueUiImu9SpO1kOPEGCNQxOAe+X67zDOY15TKe33659FwtgJdakZbW+wLHUEceN5AfoKQX3Z9 + d/0UFDnuy2QN/LW4Cjkhr5YdFwX4uAWhh5WgFzkaGSoI+VOHdUOGojbWyFCyCxMZih7SCUV7JHq7 + s/m4LeDE4pVyX4gfFcqQFEeGByoSvePk7dvBDrmT9KmSNPdDIO5+HJicR9nTLSvfB5Tcvj3cLfy7 + OqMyMPjo7AU7DZ86USdLh25kaekoOilbOvRTOqea25RE0EHjQ4Mi9z03CJw+bKCu6xelYyS2rYUr + uY2v+74TFb74+pd0El37iCXrRdjjpfiCqp7QabY5jyhpuWV6thK2jfKKuCp07IedCh3D67aFjpFy + vdAxPJU5fKfHImi2WuoYC8pWSh17jMdONMKq7lhNh06FsDuPtasEc8tvLlUwB+bkjLDYzjJd5EJD + xopQqGKsa++ijJN8l7HnJHWiBZA6GMHL/7uZiQnOsMDpTCSur1PEvkyW6NG7ETWshY01zUeiYXMn + VCfw6yxBAM317fPhBLZsDqMH4ljbajGkMub1T1F5fukEpuzAYs2x63our0FE9SX4qs8XaU4ZBl3I + 1JjhJQibX0p1F0tkPc7cqK2+fHm8tW7MuSqPNGRuW92yGM5AHMdFbWijUJxYg3ydXMFRyD439/Tc + 3Bbqnckqy3MRqfU1XT0X34oxYsoCLwRisYic6tJfLDPGlsNFih+FB0hmCmLw1gyBErS31+h9QGen + qETmUBaf6ze4JDtarXtw6m9HXT+sFhFzJYTSZIZ7IZm37IQa2bayaLjz1Hjs9u1WwxvpQuT5QdB7 + YD8wAhUeLDzZFtXttcrgKitA3AEFkF63tQLEdRRAeirr0Z8cBzUjAK9UBff4syewNIE/CrmvTABt + 1rv/mQP1vwlsDAw2PtA+9xA02H4EHLWpPWWU9jsUIqXXbY3Sfr0QKT2Vm/rti2rpEI55JrUIcxYG + YeiNWBg5vowxf1O6K5RAIUwq+p5XAeXwgkyonitXIokBFAMDJx2WAe4aOhfH88uGqiMPDRYWUwUb + XZkSb0veG1mzlZwFfv2eN0/dK/b7BW2ymbp91CwLpDzKVTQPYGRwhDev3ozKRUo9HjqhU+2G//6u + czdB524qUH9i8oatk9cCihDWYEMHL8biDpMEy+JLafRA/UqqYM+VJwmO2PF0wqOlMKZRRJsQNyoT + 0hiHbrObsafJ5kYYKHMlz1zAvSs+EGEu+Qg7XJjFWgsvuY4FKQVwDPDAFiHpjEyODoUjK+LNS1hj + TVvS9XGJsYHd5uhCOXQohG9b8x3FaoJQeUk6i00+k6B4ovvp7OusxRT7c+Gn14K9D3Feq8vJ19VS + XnRE71dNrCulvKhi96tndNEcH5974/fZujE0uPZHFRoHz9zfq7FxujOMeQEBnEy0ZcyOZDVWQv4l + ZrCoyMNHR4/hoM7mCBwEd/7i4JDhPjQUXqdR0pbK5Bqyzl2yZYm6BvNscWXZ6G61IuigLadk/7Bk + +2XxCDdYrPr2mKTa3Dy06OT+YoHus4CDsrQ6EpWXjveHj3C8V+lhsc4YMhDVD0yDoLZ1nfcjs1sZ + KIKQfTd+KowaHWKQqY11CLLswoxApofSKVbWWRVi0gRN3SuUgdLNFyCaSVeQ+GOZLsYdx1wUnurL + Zk6+NIqyoEjSnwbF8Jcpw2ofyts8az3EAd+vEaAL+EZv3vGw8LwdYWnhLvi1RSN7z5vspOJ5o6fE + DF6+e1/S1QzIjMG2vxn00Q/nOQRH21sttp79cYzyArLvMxkvD4264zo8SB1hR3s/UkpVOfQM04J1 + 3MwymRyEpvoDffmBYBlvx3Og0ID6gkMSFul+UF9ADiQVNVtk2ffbw5BveoaQYejaxyZ4bvdMZfVi + pk5JRgdk/+/zYbrE4qil4eODpk0x0UhLU95LH0SSjildspG1PKU6MQUq+ZRMrcurLzLgSMKWYPkM + UF7gm8nqNWh9Di2FSBUGnkIwEydDlJdYpLiP00ZbiL3iY1HSo1di95760LuKsruRVW5Vb4kTnqyY + 3LKL+ql+uW8XO3IttqdJ1M0Qv151jChWRf6c8Hh81KXMn2hgW+iPqNdL/YnnxKhOz18xM1MBAw+i + yPFq5f4YB6nOG8GP0I+lVwjlQArlgHUry1qr7PNMZCyj8fsGjpJI713jtbte3ZbKAjrhZJz8Ldyi + PIrch1Y+IxaRf3+enjOP2wfc0+tWu1BSruxBeko78N3Rq3qqTBw7plcyfDb2QGT32MjzA1FpAfef + K0K3b+fJFG20qXDViIsovxXhkLTN3iVXdaiqbuFDnAd+wGrl4JL5l9s5fqjo+f243HczlBNIeC2+ + Rx5EPHCr6TIiMCMV/dSDfYCvVSPoR8JBV0T8i4Fz598DNVXjtrkqu7yEmWciErDwteQKcZbWQzUM + PNZXKqxeWKBht4hpqKIyX94K9IKv2ERhfOOLojLcBOPwYaLgAWzOfIZUBMRUshLgTHRVrUVsGFJL + pwPcLMojBnKR1xeMNyH8wMAOBfB2HY2wYCybvWJ6B/DZsAO4ZBilbP6O9/YWUa3hzt4bV7s3RRCP + GjaxOqNWMuBhFO82klsS8lxfolVKMa8IFe0O+qHuCK4zOKLI65zBQW2sMzhkF2YGBz2UChUGG2IA + yTJPN1OhDg3X6RwEi5UY/XR4neRDLlBmhA07h/2Hd+PkmnjMgP5PfR0Fm707Z7FjfwPS61Y3oKRc + uQHpqUR+fHVRuwFdAaJVlsD8Z+PAc2LmjQLP5youhwok4HHG9b1OMUqBogIwvOE8nfwfiYQ3Mhj8 + TYLCwyIRisBn9OFjdB4JFCJIF+ewpBNgfpWoqfDi7Tsxx/91/l73lmPJQxEeQcRfzDPYUuItYGvp + CoOGpyj5qcS2i6u85UIW2DqVoB+nLVgHFi/yXKcB7LHkkTSmpblmK5zsNgBIH6Y6Dhvu5M3imzxL + ZlWNIGodrRsEvlMt5VGKjcxWV8lC1Q4TIZgzrew/ytNFvhmeCk9M8tgM+YXt0RLyy0ByihxWjc/R + gbtF5zksfHpVD1H2mctbiIehG/hhdXJUyAiMGt2zCsVo2taD+IAdPQysd3mXTT5Sbjw86KWZwAh3 + nHOhuTSHON/N6RggI1DSjRc5fCCnR1lrd85rja+3oSM6IUkEknGmxlx9nSW74oq3hRMdSHrLkGMt + WjWEKssd2Hi9bRlub9WDOUG1mcxBRoKVw8esRI3ApchZkmm3ztd2eXRfWbKtCC/jhGEkrl24XuE4 + CBkWpHYBVnZFIXrzbLLJRz2vledxaflTIuzhCDCudE1tZYi2s+MzHgr7XhtX30noPqR1Kw/THnB3 + Luj0YuCCHyv2N/6YLbPhmzdvOhXm2ZtWU5Bbv5A1QVgQmk1UuuyPrXzjOK60kO6UfKzYj+dK9Mbd + zX8KYB2Hsm/M+Tnw43rLvo09jTP2MnzqxB1hxqiNNcqY7MIEGaOHUqMoTbNZZ1Y7DpbXycKghrir + UcQHg4Gdf6Yp6ydWkLXH3D0NnjrdIGt1I1svnu7E8OKpp1LVlNv2/VhCZs8xR35aRQPY8tr7dcKM + dxfwgKpY6GK9+2Cw2bvnfGLlSY4ROFdo+LOAX+uA4kj2rsVsLTzsgjFnGyE5P5BetsaUMDcQnLO0 + dI3lRJJGwPR6WKjLgqIIcAICABDcHwqvoP9wQ03uxENrB7B0d9EokSd9nw0nuzhIeMgzG+5vH1nW + kxmQqcy7OqGR+A01WRFdcpktxvpYPbrcrIdAaigLLDwewp+ntptG8fFA5xJEjt/5PlONrPMJVCdm + RoF8qtLm19cwwNv5eI2x3pjUejsvu3HLHHrnyy9v1iZP/wwPRI4Bj2XIRh9lI9wKBSEcNYb7dw17 + p2TiyncKdpdMDq+XFDu+BAA7FJjGxSjCCh9QFZi6o2zuzcp6YUU9x7iFccMS1rdqL/FtB/e1A8w1 + iBT9Pgj2EaZRIsU1F/1+Kx2oI/nxY2HEW6XzAsP5oKiQOFQCsMteMqdzHJtuZSsCF90YMrB+LMt0 + ri5lmkA9C+c6m2cSobMI1Hh09u7NyRAR3Pwg8pChYmoj7LNaDQegPEDyQiDWzPNnwHPYu4iyVe2D + Pks1mDKkw5g8zZU1uXthkgU+mQ5h2cdN/W+fmr5SHeNIezNjFj9lTrcquKqRtT9TdWI6NOVTOmE3 + t5kvsV/h1xw+7JEwKv4Tzg79m/45EC8KwLnIk9mMMcl5eKt9mbUEhrZa1GMq6XQpg4xzkPo2Nybm + hx0lmFc9jPwL7II1nritls8u9RcpTwa2wuV8ll+Lg4LwM6Z7Rxjtl5lubDn0SNYwVXtqjvAq+4+a + FsX1G+b1PlQnFng+HXDaOK3He7tW7MiYdjyl8+FqZ9UhzbeYL9bKzLhGr7tVe59xWftEJIxj6u13 + vbTr2dKaSKCJ7GxFXNEjdJ7ZRMQtJmKLAS+tJPhZMe8eTc0hOW/qA+lGRGwIofXtj49OM5rMb7Lp + Zn4AoX1NuYp7x9pW+oqxp4x1NJbKRtbWUtWJaS6VT2Wo/+qaFfKRNipLKcjz8f89HpimZ+PNMyAw + QCrCjBr6Er3QlWdQ3PNb/GVbHVwYsisEIVW8sxRTsB9z27cU0u5m9xtB36cfJ+SC653vXVbJcxx1 + Ltp2SR+qXG9eHYtTbG+c+1XdO4pQyKgkCm3ZHLbsGAEV94d/JV4ITE1Ern045yG3R5Si160i1yTl + SuQaPZVlDj6+q0WueVEFUcoLnz2JXA6C1ihyPVEDSYi6eNmuQRWcG1VklRwmMwTWN31EijE/cgPm + HQwPBXK7x8PgzuDT7yAY7NWbIgINr6K4GmEurwY4m3OEJtLaealDA7OSh24lXGv05uxNbaoHx9ki + X8/WGyGtfx4GwQXitY+L7gSkKMx/FW0UlA9UWJXSfp3KgRUt5RAHuP1UvJQfxliyt9uNZ1eiVXxz + iea2qbLVOw6iucVb3j0EpSHe5sd5m/arsijF5IKhdNR3nIBYPexPtW1GleWAP002qzxrCMRpcGZz + h6kMLz+0jyqm122zu5ByPbcLnkq0v7NzXsMZjryoltcFT2EzYh0LEXMs6lgI/8/tHKt1z29BFZvl + BJQ0FFXmVjKRejLPlteY5vV4JI3af4kUjrTWQO0+ONCqeDe5lkqeNYJmm6NnbQX7frpJc4q0TED2 + XmOiGeqiwGqHojI9hmhNVimoRreYQXH9LdGYgssVv7uMsqXF3LSVcW+tW4/Vf9wq2u8BOWc/6QIO + cNNqgF8sUyccVn5YttC0lsFu9/34xBPT7+WIulV61c2FhAsoBtJlB1ixsH4o33koFgsisu8cOhq8 + /cLig7vqcIrJcpW86HTACabXbZMXnTpOMD2VqRsXRzUwd0dUnjeTF5+4sIsjf4Q5AMwtShykKzxR + oTP8cpKAxpKsEXFu8qXY6xTVLtMm8qQOg94dKxUkhBhu6sOF4TKdElbqdYL1SBftXNCgWMI8b6PY + MC8tpMO2RA7OOAtdVmGwF+dlhXGSmd72ogiBgOyE7TmSvuds0pCLGbCgJY0hgk+O3KjSeZWdGcSA + 5VlNUglytYaFYxCEPVmZGiNLVE7P4HV9qkVGJkih17Ora5FgQXWUNku07Iqeng9hA94im1fMffvE + Ssrj+gQLTceY4+fD4pjglfH64gxOCx2L58XmL6DJaLyTDL4S46cxuQMrcworjxp0svpKTB2Pb5FO + 6vidrpstSQW4GbCB1TyUPr+UyF3da9YOjSAm/6kNOlJj6kGH9vcO7NGny6RXc+LBViyfOZFwj24W + uONKlpBWcg0bUN2MrgaYCLoUOsHXrcElgoZCJ/hU3owfz+rqhwCFq5Q5YQgzHo0Yiz1X3owfG8q9 + jzSWs/Bpi8nJKIqmZB2fLcx9O7uCg5bTdCH7uDi7GKL1BI2St/k6Fd5OlAvTlQzbXVDMZ17Gjja9 + 78CJSrGhS0TNQklIaOvqpl4v6xqI1f1asqQAJ4rCuFarT8cE1AMA1g3z1nZVmjqDhPUeGXU3y/0X + 11aG8NBf022xFTTfZ9nciEow0gpjz7r/wc+7HQZ4Cgp9xotEcKnjUmzfQZ4dnEFxTVmvRxcQ3Vaj + 0A9PTdrVui0BCHc8vr338ely/x/uEYo4pX3+NVtAD9meDlcviEKNvTjfg466TzwDr1YUwuyIV8uc + Tni10EUdr1YUZoX7oZzk22TnFbWtVJ2JcqRu08s6xjtbgtBmIogXg0FEtih2pWuWUjZWD8g1uxfV + B4Zq+aP8ytoM7FOaAM4d0dNpGp3CaLQRWGQ0/fnm3OGBvRGYXreSwiTlihRGT6WD7p/1OuScY9hX + WQpjz8YeXE6hM/IcPw6kEVinBRQK01hpf2piyl5M6bH7el332B1Y0KVkfFUq0+0K45vSYaMb1UB3 + CHmr1dV1Pd+PG8ARKk4vUb6rTbmP4oBHVYQFrBWkbmPprjOWv+K0Y34bgoMir4u2lT+4zAe/pqBD + Uvr61Sr7tr7GlOx59m0IUs0Sgfs2K/S0lQY2EnxSgNfgKusCJkLrrtYZ0MWTKyQFjYadUtXbp5tk + rrFocI2kZQvtyfUvywe4cbXg5AVCM/djMhrqIVtkf7VqyR7dr43ZXhLycNUO3rQ95/5ABVoR2lk0 + ruXjWOBSxMGBX+I6HmnWST7JqIxj99jQXh2y+6SXEg+grDyajSbmtW8mBnCX8jbazpesbrQDSe5I + tnCjJtq/5+kKf6yvV2m26KezHpPZwri0fAeFzBS5acERJjmEHZPTVCvr7DTdjZmeph7TLb1O/mJ1 + ybYJQGVAODMfPx69evUKYUXQXkuayu8fz18qrqrW9yMQHtzcXorsNJeR+AqMpcCoIxyQyXU6+bLM + Zk15EFvwWEiNbcJ56WQslQgsTUAhbSB8rWzd9cQGV/A4GHw8hztV2JbXxVitCYYOxVMfiAwCdGJx + qhsqalXrbh24Lr0XC+0YIt++0nCfBMGW1RH/MHFkJqjGrSl8fHfaDAt4WNqSMIh5li23XVqN0COR + VzDJSWE/wejva9gE8+wqAz0jhU36P7A0O7fWlglhEYHVFwN2fxMQU9cJUN0y7i00OSew41b8JdCL + Z2NZ3SWRpqNu8EQeArEqyQSHofuagAa2TpsTBpqwbpyQsDuL4zUqTUYnD33Bl6iuiqo+W4wtWZYV + ud2B/D9CCw5kEd0tJXN3qNHca/h6ePc6hYXJiqNnq17v7Vtxg+Ke2Tvv4OCYBY8DVzDP2NYBNW13 + UMDc8jiQC0xnpaiYdmmkPRONOyLf888Xb53YsXfS0OtW5gFJuWIeoKcSe/n8jFftAyx2I7MYves9 + e+JFEecjLxaJlSipvDNysktRnXKOjNBNGUX3fEgdpt+vZ5ezdd7ExnKqF34jhf9cxQodf/gXF8om + /OJSVoT/23izUC5VmHDY8FORbkX2HuWMebda8rpJwswpz2Ho83qEacVcEbTjRHJ08tdcNYW1aWJG + w2plyHTKuG2mCqODWgiBTrWv2i0QiKATxVa8gQrVaghwlerAcnvQvP+Y7TEQvWn3P9zFg/0wB1rk + ptBh3NtKagekQ5sTxg6S4AA0gx03TNAwQW0HyG5YEaXs61PR0UzRl91WnkF83eLobv00xeMjrXDy + V4x3rO+lG1mrm6oTU9uUT3WW2ljdfqqcX8Oz4fFsyQcT/A8eCebG5PuIKZ2wbNySFbS+pq1mrm3a + 314E24xNoP5FRK3sDBXsANOHZ3N5Se/IM/9BsEddYYp+2mQ46+Sw/R2p6gDqUivc6xSID6/bRsIg + 5XokDDxVBS4uGgLxMQq0WmDFR8DjEfNjFkkfjO+KyFDFTeWtabLekgdSwo4VhS/yehhKe2MRi4ut + Fdss17APnajNWcNj4MBBTfqx6KjZY8O9tkQu1wlY5FQjKVs7MuMzedgitCiqg7corK66z/ajd2dn + j0dDeCyD3EsvSXgUikoEEeSrDLAvx83r+L9CdCUuV+4ZYy9hEVelJDkQYWBvFfElQSBYtO8U9otO + Jbk0T5Z2lNqXk9m8+DgJb0zjstP4f7j04ldpoIEsESe8EylxIhpnqf1A7eTo/UFEcV4EfiBIzzRr + OHZW074nqbsHho04BVIdPJpI4krLL+yBXh/BO/0VBekpCoiphGPH87skHOPrlgnHgnIt4Rif0l36 + 8cO7oJZwHCCmUSXhGFTUyGcjDy5WN6j7VvLNElmWiLnGbKcsEw5tmtzLdP0tTTF0cAI7IVtRQBG+ + h3LsSmzGPF2JGRZeUfzzZ5CZQLpMNM0VTKUsUrBcpYpj0yxLhqlvZWWq+JjdBDsu7GyDAXtF6LwK + Em++toHfea31G3wsrsBreSD99lcEtMZh6AVB2BrSgZTF/dYSsxrBeG0+pQ/S5VHDvVqvoNF0faju + 5OqWOnAd5leLXIwapmZwrJMTpfABG374qDzp8Nxcksd6HaQKNUO1BuNY0d1ztSCnEm5RsjXM1fjy + dbrMxYuouldlDboJSrLGcxUumhexdUi10KtKQ5ZDGuB51RnafsiEfCKxSfWqdGSLvuOy8t2xJx2x + JmU6clrgosksxYMHKd9Iz8y2Q9yZJN9Jsokv2GrtPfawNXnxx1ddlKymcfdurfLc6prdi9oWpwST + BSHfOkEHUBF63S6nkihXcyrFU7rj31cT113QikG/bEiq9DwnHMEffYVQSWafTISd6ag0FZOf18La + ch3ZVskUUHnMyOA2qzR5jlbANVZBHK6/ZcOz04uPNT/D+ztNO4dlWCzSubJstSR2sIB7VTW3nFQR + RiBUOlUIkLdj9b0FLy0T9UErabt5GwnilLXS8lrLPUlaOtZRmPoxeTynS02lFyrrHqrXRRnF+1zy + 58PFBi9NOpZAFBPec/EPLGw5y5difILYNPuerTaXs8lsMXhfym93wij6WQBPxRaQjKayUWx5FVNW + /srmsLbtci92q5bi6WpjE2nQE3goZ1xDLvn21kR63Rpyya9ZE+kpccfzN+/wGqthLtVUoHHkxk7E + RpGHhqEG/vjm3SmXrOt8dsOdvqO2D0gtb4n+7gtnCTTBJC9FSu+O0EY1srXGXhBHblTLk6tbyww+ + 7UVVX+9IJsHZEJZmPWQvZK2QDwyLp+9E3cZcjlo3tBfPbdO8NCXNtGt1hLOSIUuzJthxzGHLKhNO + 5l8SwV+Wr58Pz5L50e9Hb87Y70dzODEytpHiyp8bEp64KFD3OL04Pv84xgpRGmR68Tlcwr+urtJ8 + LXLUU/rC/Hq21Kr+8nUxDFH3bzNH/xPwAZHhdplNb4twrIE4g1qtiRyh1uAWIWZibq7KF17NN5MM + fp3PbmaaxdpGN9pYdtsax7JAnXHnvbZn37hjy/xzW+JTU1gdbiJ8s7zJYCw40ZSpWYS7YUplUeSN + Is/tlK9fvkRKbzcZZYj/8ZbxDrY8et3qJpOUKzcZPZU32fl7t5abJMLXyheZ++wJB0kpdkdwI4Sh + vshKgHG1fNyViPC6FV7Ds1KKp7rtVgu3dtlV00Gbs0GbTF4O44ZEWwLriGO4m/2oeo/Z9dWWuM1s + OjMjehoSsxvzsjG1cde3aEa/sl6D8rdWBXL5sbCFtWQKrbExZhlh5M5z40qBo7TazNY38sX6VGai + 6wHuLu0ZC5yfRtIWS1AfZGMGt5HAvT2kATepcqTbb/OtZA/jnzInm9kPqmzPaB+V4m+6qJ732u2M + Ey3b2IbdqC6MqBv5kPjV9e0yo1I4hSN1kC9h18MnLFGtFSKG4uhny0kUD5bivxh9AwKt0GFCx9eG + MlEMWFLoVmRULVxvuQ278tR25CT1lF3AHC4EHITbT2Taog6uI+gH67j0n0om0O0jQh2q76ut3Yvv + ZTHNXRGMI5WtbU7HVntuHwKKLgfJWPzUCbohDogm1oAD1IGJNyCeyQo4k6whPQtXSZycdDihiLXc + yG0sIwlMsuVSFO1W0GgXQHKAdAlYgAeqFqTh2VBsWPtbahPYoYQiZRXKkeCu2WKCuSOy2++9KKTU + LSX3l2hewyxnwOL34C6+6yutZybK4NziMpQm980/+5jfA/vZVrasD59QQ8TubLHY6hOyB3Dfi/wu + X8s+rhpSjqhWaGn39IFRb090Rw0k8l3WGMLh8P69RXmIHNk/z96yuINmSK9baYaSckUzpKfEcI/O + 3vpVzdB3AjMrxYuePWFhwDkfsTAWGwZZ9Ek6Xyfj+exLWo3ju02TfD08Ohu7+kx+u55NrodKMaNk + As2+0AqhzVGl1GPQMJDc12SywQsWU+rw38lcoEatUwVmOxJRJuidIHvrPMtzUc0GiEBHX2YLpMZ0 + 91I7PVrO/Zp2KkadTJNlixLqgnxvGigLn0/sur7rxndlTH2Vza9mOClqQhr9PsDe4zYIDTXAgVg7 + +szZonENJ6ByXa/QsVKvGKCm5RFO1uPnD2VZB7iblSYaMBb0EAMB7amUhwnEdWBEhFgjbLJlSe29 + Pf1EabCAUdU4YYydp7JyXDq9Y4K7EgQoTZMmKlliSeB194J4BwUkwJFnodF8kiVdY2CYVxRuU0Cq + cmK63Lky6+KOszzvIaJ0r3CKrbcpJXmenLMuMZP0utVtKilXblN6KmMmj16yWgKC41Y8hm7w7Eno + BaHLR6EXub7UeC4k/30UsN+DCJMRHiOz+/jyzZsT4Sm5OHp1pFgvAgyVVaRdEHsl/Zzi00rIAJhh + +1kmpY+UtIM86XqWr1Fies2PVNRk8pnVIy/KA6vaa9scj3EQeh6vQ2M32qNoDhqDIIMgbrOiMhZx + 5lYvYxVYegCmJwu432oaLvda3Nxs3FJgFOe/DlRhTiJrAy5t7qx5Zc0P8IOo5QOYE6GazCtEzZqQ + sId+b6gLqTtOVpPrGUI6IG6VafXmreGf5R2h+1V7EO6I9W3dYQpfYiKR7/6SBhyqFuIIXeV2Gm3r + oSu8Ae3ugDYccrXKgwfNIQaC+Snpi/s+l1VwvR02fJXa8orBhSHjbhuORKfbBbcZtthZybR5x3bs + qxdXB6/T2Jax/MM9J+HW8TY6UWy9KLoXLzTAIFpObJfVEpxPW+LrTNJmXILn4JtNvMmGgM+YBHQq + T59wV6SlOdxtk2zEeZGp8MalbGcUPxBPhQppW1zglqPZn972FJ2A8KEu3r75Y/gIp0nov4+7hTo/ + HNgVIY1gi30lG7s9H0cNZdjLJ34XiPN2iN6IkMnw9jNcd/t5NDQWgPsqeOqEnTyS1MTWISk7MPyR + 9Iyk+unmcpZt8kHJtgi33KLcFt2OThCiX8JF/6NhmreCtiwic5fJGo0o+0fodEqMV9NNmd+vQBPq + AK9Dr1tpXpJyRfOip7IE24uX9cxvP6woXjEoXiC3oeIVOgILD5eIgWL+ZVqkiA0fHV9+dkm2ElnJ + GDilrGO/4d9+Q9tTKmzwIC1UrGIjaevEjZsrW9fxyekQY+XgEKh4ClE1ReBlqbB2IN0Q1p7hBZ3D + /CugqZITuTwMQ2cIw3b53olDptKs+u6orOF5DkxyLVNMMMuUznRzhphbqatZilY1xl6K2FdTWYGc + KisKMW8NpjVGaqpRdV+9WQLUj1ssrZEXoYb/78GpTlVv2DOj0q6Tuw12smtuOXUvicT26q7CTSXB + 25ThVu+r50Oxo4bJPM8aGqp2Muifwi7FssAp/wyHXkAE4khoZvX+Bpb2vxtg/AthzENE5NnXbIBH + UIn/rhuS+O/wxiiKdJ4tusY+ODFlBWHQgUCjx5Fai0aKyqGRGASlF/omjZGxBfcE05NOWdtjaMXP + 96F6V3FIRetDkfciJtZQ7SabmXCZz8RMiPPVRRL1mUx+V93B8f4ra7Ih1yAGHoR8KBiqHkaV89rM + gOCdJJU089mtRKSQwB0tkx0hRlLUTSijNtZSmezCFMvoIV36EpUTB7wBVlSEirX+oUxX4DRFwWBw + P3moto7ph5B4qZabshv/gWVy7WVCet1KJpSUKzIhPZUy4clxVIt69qsVGfizJ7CYcRiMfM8LuIx6 + /nh9e4PlQdEbSWlq6l/kdRyZPs9pOlxkXzMTHhDhCG5XsEZTdIBO0+z7bYGbhhBSuUh8+5qu1vlw + +vHdmUiz+nhyRrlsn+SDTx/PnpcAb0TdbnmdivwJCQyL57GELvt8WALQBTL6JHy8WbKlEjink+jw + XKTAiT3fPzgVySBTyHbr0kpIj29L9Ym4TRINnCjyeQ0OobqmzXRjx2sTR40Ra7lRLgSCaRsGXh61 + VZ7g3Iu5Vw0nN+1zleWtkA7aSDMnjsJazYwDSJe+3vUDxqujFvu3HSUTrtJOkzn9+HE7uTYYzxZy + n7aPjlvt8QKbAoRDFYRYWeu2zFvPD2qoWuQOnhrGaZNc2BbQgbZIj0X/HvziDGuAzFxrFxGjJANO + 4FnmqpYK09ldwoGU78ytex9kttvYOcU5mkdgj2EFSvrbcubvklRrjh0nKMSm7d+BSKSF264lDGJG + MQgGqOPe63ZfxVh7haPEW1PofFtuWauP2IvQ3dZ5FVc3Nmm/6K20n0DqTwd9DgtCr3ATfj6spHuv + xnLuauBcjztPnY4JPKqRNXCu6sQEzpVPt+TwnHx6yUKfVwqvmDSx+ErkhQPpCBOztBC2nb7LdlqX + umMxlc2rgDjrJBkZ67hHD5b4ufah1/vY/rlX1Pl56vhdi/xgE/sKP6KDSnkffEa7ptHLVc4NaXzh + 4vOSGW/l8AA3EvPjSBahPNybbp/m0aGkmfUe5H4gDWaNMUidN/+W++8eqtbu5bu2PwV3nY/WIdvj + nkGu3dBpyofd5djtADHdd2Hgn6iwL/eLazYCrsW7XrPUyP6alZ1Urll6Sgzz04uj4TRDsXtQ/Kpl + iU+TJfMGG/Ffca9GnrB3PgQjI+LPM7pXtTPqgOQjtUSUj/PmLfNZhyqy4nW7KrJEuVpFVjxVSA0n + 9SqyTgWQDavIAnNwo1HgCF8KLubrssz04fylKhI7mwP1yd2hpfWV3AKaFyj/OHr1rJEOqhoVOrAr + dflSLLzXq4K0vxaiNlUok7w4C7okeeHrlklegnItyQuf0qZ68e6itqn82qbCJC/PjbgzYl7IeLR9 + Wy3nQP/b32NbBcwNfxZQC4sAx75sGdv9PxGhW56zkNvzUnrdDt2SKFfRLcVTue3Pz+sxQeLuMsEt + xz6Pfe6PfDdwWKBLtwyvU7Rp5elY4FiV0t8MOBbQHMZU9QRNYMAeng8vFpvVcsi9QFSUUK0e0eP/ + Z3ghCvgoP3y9lM4yWa0xLeixPGsvVg1ol5+83z8Fw+/DTz5sntk4X5y/P2vKkPACv7XGAwOJLHTj + ehIGUQPSpusmMs4sxhRVDi0wydK+Lc9hi8+mcurKQe9eGERxA850Zba3QvhE6FWxoK+5xSdOxTAF + 9ZRiEybZQuNlYY0iLBgp1DIFO/7JE3btT8zkKK6ZhYl9i+o/xQTBdGF7Y54enZy+eT28zL4/fm7u + s+ksX2005g8tP56EMdo8Ja7XggwdYvmEEV0iwaVUAaz0UUiRKh/ks7xqeqfKt5/8MRzKLycDPEca + STMOvQHZ4AnFouNEPYJ+P3nQ8eSxmjTxiLHHHWy+bkzpeEJ/2AKOtl09cCON06N3012zx0LLJLN1 + ef46UxBqiT6rNnqy4Ab45lb2cX/m5x6rISEvkYLaTh5kZ9E+hGDb1gUBS3ywBYk7No5HDkEJmZ93 + 4Lh6K6ThMk427m28fkRyUyrq4GoJ5yZFzjNrMpdUV0XJKrFSzf3g1OtaOU62sVXMVReGXi4fkuyR + kOA2oXyXsr+gbKa0e6vcIwYtgQQr9KPY8WUe8cF+ytgh+4g5IDrKGkgUJiCbb+vCztr9g02DP7Vx + r696R5EXFclLuNaHlO8JCWha7Z2x2DtjsXcs6dvjBh3e1z05+IBUKfepQmqknwqpT+Gwo+h2tco2 + y47H18XqWtgEIz+m2Xd0uEmojq6XuuSmriOzQbjjHY+POuSDUAPLjBBJvZYTQs8lus3JqYl76rpw + AUeOU00LGcfAxgJvBD9YKDN33gjv6ucZfPPlrUiuGsPML5cwIaPhzWyyypLVKrkd44Cm5RycZEFi + 9UhIuLg2N+n4GwpJUsy+hU0r8k1xasmccrWCccOW/FsYVHgUeHANKVOByxRALnPsTQX0ui1ALlKu + A+TCU9oof3x8Uwdu4CI410TIHXMe+ZE/4mgykLaCJjhuVaRgIhSgP54O53h+8+GX2XyeYur099ni + eYP/45QSI1DIqcPu0F75Yz1rwGAQJiNVSKhGdwRbD+vJiQKJZvp83IZkwFgMH1lP4JFUtlfHcGFZ + WzHnDcJFvk2yusRNuZ5pTEqjmkVcCYIrcvEZhzMc1JLxRfK4hAZvACwwjg8zAR2aiGs0XpGHA3f2 + rcA4h2M1IlT0Yu10pkzV+gaa+7fsElMrSHXKMagO31rDkpnouwiUP5MTC1voFYOLC3YVVk2iohrA + lGAhYI8sCoR2WbO7sP2t4bfN1XW2WauqasCMnlNGUKXR8XTC4uVAHAVtUPdj92exfGIH4Y4Ouru6 + t9VT9qS7FOltN7K2Ir07Hklxpa1aa9yWfvwjINgPTt25fwz3Ho0VZHEpTpdV/svhKru6JzmpqcfH + jHP3KVyC9mqqbmOnphZdlNRU/ZCuvc1KWixL6mbTszI17rtR7FN8VsA8QiNG+I9U2DJtFMXtLIAF + bolmackPphwRLqWueyTu3o2IZz6Isu9LiBRZij1D4QE4fN/emsOzvVGkizxxlkDFAvVAQfH2oJx1 + JbxdffJipmY0o8ncg5o6dUV4ZBjxp47fLWyD2lhHbcguzKANekinrgS+U4f19Pl/DUh7g1tmleW3 + cwN3UXoDYC2kImL0iTEerhcfgH7eV8Ri3zeAG5LkQfV7bueiBhvMzWSWj4V4MJzhVXaAxu5EgWNg + MBpwl3jh86MmiXnvA8OCyKcaOAeOHGRxRiNv3Ch7nhkdFMrd195TIU/anxnZxvbMqC6MMyMfknaX + zJdM2lZJcDEjnQbH81WgwXymqYTzyYvilyoT/wgJDQQ5ESEKqiBdZRZJCDtEV8odKeFRqcx2cv11 + xLMu0a0EA6xS+Py0Bs8PysRkI8C0S9L031Tk7xCrG0pwsyJWF7fANLlJrlJoO7vZzJvu4lbH5r4E + t05SKIWinWBoqITAJKlvtNVh+gg4KYgRtELtNHbSq1xHZiqV9BSJgNAJ5iHyzQ/rNu9OGDtaJFOI + CzU69ZN3/3qdyznFZJ4vp+7vO9nhmze/7RYVO2hLdweBoO4jXeHCe+qwTvUtsIFtdQtB3KhtgU+k + 3FbBf6rjQcn2cK84oes+mFBbNYUUG/vu3IkieyMtvW5lpJWUK0ItPVXW/Ne1KmZuiEmSZRut/2zs + ea4HY/A8n6npbwtjvFkB/V87OvZMFuhFFg9TbThoyfaosdiToozE4J8vjpgyA3pB7PVST14mrlWH + 0QX1nKKPSG8lhA4K2VIA6u37u1mtIChH1bqrNYvu69rsdT+nP/qY49dw4rQHQHHrhWY0Mc0LbRaa + 39lTA5iMG2qlPHrBWGetXDayVstVJ6ZeLp9WAWXSzRegkMmICqFhLGdX438OrpYzJrBjuB9JxcF3 + qAzA2RuYRURgsozIsJdR9+1hS50c8v+DwK6B7FdIC0RTa2W+E4kdZzCK22k1HoMGkas7kZ/lVKM0 + LEaBj/PbuV14gr0dos+oBz9sI1WJeria306EeWufkAfsKLLs6Dr93r0fxaQoBP7krcM7iEz0ul1B + AqJcLUggnpLI9O6snvnhMIy5NOsRjD3oO/ZGHtyskcz8ONnA1apS9XA1Zf67EZVcL4D3CCTZx8Pp + pgCEwCgI9d7kOp18WWawpzUeyXM0r8AeS9bCFTqZb6ZCeFbMMx9eLCceX47wJ2POkuIq4B9xtBxp + E2X6fbYeLtL1t2z1RSsL77JLJt8v9az/mkw1FNK7Zc7uBnvT8HxHPIwjXg+4r02jIR1GLLCiWI6T + V77qVQq7c5H+LgzC6BTZDqLEeEtPICiF0FsVAadiIC7NsgmUGbcF+jfTrU9IeUftriIfMqetLEDM + fDf0+b8Hf5MNPkAmoHH5EbVO+K6Dor65Ca0uHQirVqPLdmOTQx7iBgR/NUXallkaca2TLX53XFts + sH2PYDqEPLTp4ms6z5b2qDIuMEXKVJ5hbLG2YWBsegZ8eLHuZo/yGed+ecgdId3vBBr0gBqm/cHP + BBQ7rLbhYYgxQM2obwvyuOB8igceSj5kfBv5dhZrtR49kr+TarEFkQNTDx4OoI4S1Ai//MM5bGt7 + QY1etxLUJOWKoEZPSVC7OP2zJqh5YTVFN3w2DnCbBKPAi3yFX95m28pWQP8Xt23JjZx91k2KW7cc + TWe6hMzYSuyxHEInr55kDvwZL1Z1GOCfIlAO7WUfz0//VRToWDSEXAqovHWC13syPHvzfqLwFR6d + zeYfh++H0B1cupv88XNViDvV5jhpxR9c/NdHfXX7Qcx7jMVjNRo7XXHbYuHuytN3z4FuytztURD7 + P95yx7dnCfS6HXwtUa7C14qnxBLeH5+S+doMSuZ+UAWwHfsOc+OR73ieW6+enacTNGXQimiRUwSx + zpPJFyz0mROzpzexnjLBU2krgCpQ8H6SwpAePkcprlD16Qaiq+uY6tQrHewbBUA79LcyFrOsVh+z + O6Cl1vCWocf7qFyK32kKFGqoHU72wdVFdZi/x5TNNgi8p47XDf9GtrG12KouDIOtfEjHawUKf6Cu + UM+5EIn4IEmX0PQuWDBo/4sgIJLqfD+WReVZUcWrTXuyt9zaULtbJK4u4YFFIxLL5KR1tHpyHvCw + 1CeaFgRcQrEGKhhn75l1HZ++qw690K2iFMWWEUprqUP0BKxn640s6tE+ER2As/bvZJvg63HlFw/D + oJsTRTWx9Y3LDgzvOD0rgfdJV1A5erjRV2SGF2viGJLFIkpwPZB5+r4TFc6w+iC6GOAZYfxTBeP9 + nAG/gNPFhqhlqefmr7ufOtE/UykG4Yj1ZNbv6jLDpHwBBrKHE9YWQ80T4dJ/vj13MBjZVnCm160E + Z0m5IjjTU7rZ35xe1ONEHIzQLIvN3rMnoGFzh4/gR+x7ZhFmWUvpzfsPkdMcPamvCiEZv0lzty4X + b2tnZuFFbVVxGY+iMHbq5bo6VldgHkgETlwrr9CXyN34rWaBWzfa9Y2DztM/wMXWYSoOCc5OKMtr + pnNRB2tPZHHb2NmdFjNYlQqlfDaHSRCFeNbFMDsM7QHH5v6Y1DQXFCjBMN8sMtwzXWt59hFm6Omw + 9+C4Y36WamKt3xxXs7PUMx1umG5K4YXn79EqdaaF5ypGiKQnSlEihqKw8VMAp0hv9H8bz9Nkmq7E + IfiaNCgDd4ng4Zdw+udl0DT6qtbVviPsa+Q1PsHnVEbSwwUqYlX/fH/u8A6Fk+h1qwtUUq5coPRU + Aud9OsEqSRVrtIt3ZPkGDZ49CUIv5nyEARWh354Nf7mZjvPZGkvt4REW1tnpbDnH24F4XI5JDphT + jSnVCUiVN9hoKgHSsaQp0MnXsAXV3fBtNp9S5N/lTASt6xclat5mysLDixuZ9+bDvX9htobmFJvG + c26C95VLyMDQuMPg9j3bIEv9mpawQFTxmGT4Jb1Vqf+i4uMaXcbDF4HOf8xvnh++6CCfXiM+AvAs + eKhWtrIVnpcPMMjFt3D41kPctYGwxRN+XfUjho/OTv71x+OB2N3aqA73xkDOjzj/ylLSMJ/W13NY + zupuqV6/I5tMXkb0CSI99mCgJg8+0S1RrSC97CBfxMz9qNTznzhzvAe0tl6wzJ3Io0iC2tnY1wf7 + UDy5ao/3BNbuBUqSi/34qeN2s1XLNraynOrCEObkQ7pT64bKR+fvz4qK9SVpDrjcuzcnoFI5QeQ6 + 8ePBJ3eYLzJ4fdyAKPNpvQyNMaAA6CHQu9AQAspGOwRm0wVeKONPUeBResbFxaexoLu3yOZxTqXS + tekTeJgqxtajprKLKRUpXlljal4LUyLszgIJ2BRrdxuk793Yrabd5a4RZNPZZA4jottNbMstRWSt + JWaKs33/FoRSe18tvW4nMRPlqsQsnsrwjbMP9fANt1pqNHg2DhiLXG8UMJcFOxDWF3No82uHb2iE + dS/2gwIQzKN4nLdv4XkHG6J43c6GSJSrNkTxVNaO/fCy7nqPw7hmQ/ScIPBHHvDbHXUY5nOg/msD + 5m+NxllsgNVJiTm/zr4J8KyUoKySz59nC+RZGHGLyl0yh4sK7u75Jh1Ob0EI31xdpflaFqdHP7YA + 3Vuk66K8F+6Rq1Sph0L2zjerz8kkHbw9ecGK6pFxyGXh5h5sPr4MFDlnnHWpc4yvW9Y5FpRrdY7x + qcyL/HhWx67zq/ZuDtq6F/qorcON7EuQwxfQnTYKyamDnZ+nAmgXHphly16yl46QYoWyIDTDb9ez + yfVwhss5xwUYDVPQATc4RcCkMcq3SIwi9VHdGEactSZK97c4M0frZR3oDhcrW4y11wIXzBxRgXA6 + wWBYGSx+KrKykscVxd88DSW1OIA5DMMGbHz4OARw+6yMvKYBgLcVpGUs9ILAcavnViAlg9zS/kWl + 3JSVvEZhKQqYYwPtP64U2H13NnpzcdH4UfrIm3M/yTawPFM50SWXp4nGF1VL0u7uJ7lKS9ZklNVW + 4kMUfhIc7LmoPLsRuTe6qOhXeZyTq6pTgbm8tfIx5yAicu/fg4e5x58bgfbpdIDHuKhwG1EIUOiX + FMfDS8oeGFEE7ckpmXWPA1LKHu4c9UkWm+5+ibdhXPhxrGOz9x+eB8dfL+e+sGESQ0nI9KWN22Sf + alE9bJru0npsaGwNIg89t0JCvAgsYf/wAd+rk+x8XVjO4t301Y4TeVgwgUd40k0DXH/LxpIVynok + e+mFLmg7Uec+yjMiw6O7nShfAr3smvqmDsUSvHzUVHmkqXTGHXX1U1gffQIb07JK+r305aaIYqSP + fU23lWPYzsod2k+qz+LS6Ri5ci/1KtBZ6jQTGonfYKow8QAT7JIFvoTIv2qL/CUOifFtN9nX9EYG + 94n0wYTisDsOir6uskhW+52FjC77AqkY9vysBhN3/zZaTSd23eYdso8UbcUD7rjLH/m5LVcPdLuV + 7d3BZ/beX0vZF59VQESCfUBEgo4gIkEjiIiEktfG+mFhDiqHamw15r+dLP1aYIfulWBHwm6W/TuM + 6dhtOd8lg965CZ3iu8lp2oul2ucFluwRf8o6+pVUI3s0WdlJBU6Wnso0iGTKZeQG88bu2NWYNeY/ + h+f44kC8LvYSfAxVWnVCcceUcAq35XW3hrQdDKF5N9iJB7vymWO4S2SqX0s6R3sejst8ujVf8d/f + EdufiT8fNu8+C2UckxEGuO1zGzPUY0pQuExWsBPhEKTLtXVc+p0jV+tv5WQdEF+3ni23tyK868Ap + r570c88W17PL2XZ83C3Jkn2kYbM4NjeWVJ90bfV9ZarISEK/TqHjbDq7SVdq07Z/8jYzOYWFn5z7 + bgeXDr1uh4VDlKtYOOIpcbqzo3ppbSfEyFwTC+cJg43iRM4Ifrp+vANAcLqCHhrcOofFmT0ot472 + 0vHYI/mhYyyO8uv5nko34iiSdLn8VBPbdCPZgZFuRM9oM0ymk1BFyiLMQoERYR71QQ1DosIKjoHQ + AKkJ4M4gkNlHB8CrtN6QdwfZctgd5zKHUzFY4PoKfAUuJ/qVkl0bOVE7i4STR4FFYkzTGZ7njumP + e10q/0FEsZmnO8ZZ8b1I1qa8d7zggsivhnHi+0r1cJ0T1Ai7FTlVjWxVD92JoXqopxJg7vToBP4n + ql3rwrODLeV2T1Y5MxTcKTwQIWvM93tWbJVAdE9RZncSL7tnaNquZlZ680MsEd2iyy/IzDRJE/Tr + J5v1tfiwZE0G2O2NuzDjQwpK21fSuc8K0/b5Nb9qvWrFXgMZBtQJHv0f9vDo/2iER/9HCR794uMp + i+pxQF5Yh4vB+pvxyI9CHoXb1Zv/acZHb877NlWdyP2JVR038qLBgWjHWu0JZXyqy9wu8an4umV8 + qqBci0/Fp7Q3To7eRrUYMc9hQS1A1fNdJxx5kUg/L+dzGZEsQiz/OksuZ3NxVFTEKvTYELHaXRcO + YgcLkx6cc1Wm0/9GEzDfV8mNiaHqhF5rLVE1oGKj+VyWw9vXir6XIh6piruRY2+NoddtK+4i5XrF + XXhKO/L87C0Lj2rsKgiiasndJ8yJeeiNGHMEKmd5UxZeEhnXJcKzho8C5+JxHTJmNFykyWp+O5yJ + 0s4TQlU4X85Z+GJJmWNJXsktO4VPyOaz4VvOxRurZD2EkdcxgXIEfMO6g59naV4AxekR5mqI2Qb9 + 1WW4zpOji9cVPAExqHo1aOPNctwfD3lcOQWj8sZjYRw7QR14uPvZZDHcIQ1xkQVgD61BHbBnayBm + 5BnxzWW8Xt+P8SRWDrEFFk65A4TQsemghiGmw+5Q4jcADTxWG/Lg59mYJ8kNKxKIki+JsbkeD+iA + 6kLAQeBaQ1w1caoHgGZ1vwmEhVHpEDwsLMAsroW2Q9WJGqJr+epjth9Wm7l5MEBaTet2V5hZfixR + /ZnTASyWXrdE9ReUa6j++FR6Ml5/qAlz0EtYQ/XnMF7ORzxksS6EBB+cocGlUiQvwei850WNSuAx + uDPWBWK5sHoMyxneRfpwOQcc1TuMuc2W6UqEgCnc1LPrzFsi60L2A9/g6xp8z2sWbFgeeJ0vcWAo + Y0rs9MJQV6JIN6Z4/WCBMXbDuBai3zRVzfj5bug4FWjJEYbGl24bTIjkfk0mPaCPszfl0PswRvnO + rcLzKJ5Zdo8X65fDYn9NqukMLHDcoOXSjGIWsZhXusGqcbOpka9evTYd5rRdxDD9fhxUaZbrQ7dS + jWHDty9qA1Vzvk2gIr+2huVBcsRLiON/D369ozRAzqK9fTzwBnLBhImkvraVTITdRrSegItsaPwI + sGLVAe5G4YNo2rpb0zeaAjHxFIpL2/oM26yF53vk9ttWO/VBWripumQRdbSvMdhp2EZVxnsvNLds + 1T0pbvdt9RB9EvhUU7aCq25RN7q1ZKvPozpFm5rZ29PV/YDEQGmp1gVf9tg6UgIMHOVK84OXUWck + Y9XI1pWmOzFcaeqpDGfI/lciGSPu5VhYs7/fXqaLvzI49eMxItMvV+mipfyXxIxAQ0vku48HHYgc + Q88D7F744bgr/XAhwU5uLmf/u5ktMmsAm7bghwhuXPF2nuEQMirFcmg+XOz40tN8KClg0oQ/qiYp + m+/5xQ8iv2uf5Kzm0fSd5vUAcFUVx2IuCUYGKdsPNfGUvMCXCVqtZ7Sjt0yaW7zqMR5mk3XSpZvW + lLTeQhMCEYf/59lbuFXsNWp63UqjlpQrGjU9VeVXPgZVjdp3MOezbIuOQKMG/dD3R9yNnVDG7F+k + 60Apob8utgPMkAoxVYJDI8zDFFZaDJAiR/+6vYKXMXUajb8zkREGx0RMyAaVG1EpgfSjYbq6yrDe + Vpl3gqI3Gt4AR7lMDYVJURgmX5PZXDqicJSB0l8CJwrsPCut6Mk97nGNtO6+DDqKDLqNbfCj6sKI + fpQPLQGlTBCp5hwUvRHeZ0vm1UDZ1ShEXGT4N4GUKiiFZUrYm0hUUebVbYTvEkj1J40oOsDgbDeb + tjpRh5H2C3IVuMplyzqYnel1W5ctq5ud6ak0O5+f1zGRQkxKNB22Y86dOHZGWKvIC0yHrQyHFCan + BLgTHH+0Uaww0hYLVh6dqVeKuGFZEwskELRxLdLC/rFM1tffEhV/cLZaNdQm6isQHzZ2ukRFtBiY + dfyrWWLVqSKxls23jLluCKJH5eaGifnjjz+GkySfJNNKvVkQY1qhXSWxwcWOMHZxDcu0lrw01bBt + BUITfbT46ilc+LBT0+QGuS4ObKQW8lbAmaO3M/2azpXr82KdMr5sNGEMcE9pH6Mfx3dZmxSregrC + GjKqkvSULf5nc5UUNlFtcPu8aQ4/bzfceEpNaemrMhlIrFZBTtt0UVnQS9LAPhuGsU+WhvTzFrz6 + Fwpj31HY0+FkCd3/iFtbMn690PJAp/Ww8FVXtNSika10qzsxxFv1lK6b+S0WSh0L6Pr57AqbNjwy + qHHfjUMvsC/ktd1J4TGyZmJ3goElE8W0MIBO7atDeiCxCr7rdj5u6mdv4WUf2tuwinZxIfso4ocA + 5txjQLoX0T7Tk1venntzs4gYTH3D9xJevg/1u4WnYUFE18N+41BcTCfIBC8YJsh3q95BbazLd8gu + zPod9FDa8SWDKOOtFGnHZV3b/s1yz2itdx0u2V1oZDmXBK5pulPkst46IZOuGCp/KVgfSJcP19Go + W3cuDhIFhrzSvDSH1woJNEw54y+Y07XkjGpkjSehOjHxJORT2remAXxCeACDizFoLYsMbhPo43pG + IlR7Rb9SVwg1EcR+HzX90JhV9Y2ofbgP1mBE5v/t37b/eemxBOGPcwp1uNp/QU8R4aPEO7ZJ35X4 + 9JTulUerWAslrbw7B2XD3t5Er1vZmyTlir2Jnipc43c1e5Mb+xUMbv/ZOApC3/dGURAHXNqb3m3b + RqV5Hg0Jyi43N978VsOH/pUiwlI62azybCWC+GcwZeN8M/+8Ab71Mv394vFwMt+g4yJXIVnypngu + +kxXyhKCuWtqNSZwW6TrdTp8dPTi+LGx9p/hAp7fahDkm7pVa+spMQ1dXltcXBjxqCE5xnKMzbYt + 2ARbbFtGj9q0hdMpsMyuMZ4uh0uyGmgfhVWqOnTf4yD78X8Ptq633Sfd7VYY4G4u4O5Z0M+FdjAe + L9CgvEq9DPsTCjWMhLCaNS7sTjvJf+IffopbrT9wUsfcfj8I49QeK3MrlTsDzeSBTn82IRAVuDWy + m94RRO+w2xZQxiDSxsQg8p8yp5stkdpYmxJlF6YlkR5KeLxlzmWKtOdc1JOrhhc8HLT/RTQXpsU4 + iO1Nix0MdT88q2oPILYDc6Iwiyks9QnvkHPdIovp3ssmHZraZL0Ves93UoT7KT3XV2W2INblUZ0O + yfTidevyqE49mV48lXrJ+Wk9l96t4ixgsSf0scSjAEQsvgNGbrEC+r92sSddXVTsgDmdJ7xUpHK0 + TUYamfADpcghaHy0XgYwc5gii1VDp1MBjAk0VFQBivw36J1WxT+cUvEPqgZSKfmhy4tjUQ5dX9x3 + HZkEW0AUlzmC7mfnZaf5t+8Uru4Mbeqd4469yIhc2RZUdYCo/dPKy1iqIWoiCTqappgv4fqzGuG+ + 4vdAMFIC8F6mSxCYDwnu5eQGUwfpcHp9cPjesPT7uipCiis+PWdeB5QLet3qqpCUK1cFPaWr4tXJ + mzrmaBxVMEfDZ088n/mBM/J8l6PrddtVka6A/q9dSE6jozixxwc/3iLwAJRuJZeymBRvk53twY36 + KH4X6qhmBvJPN/eTbmOtrMkuTGWNHkrfU7q+NtMaym6l6/S7THyYzqpJEbWWRo8YwQwTdlhm0wOO + 6j0M3+KO/UJ76JcsjmJx56ffYUstYPduP3BWS+O55MfptI36cONEjMIhuxC/p8iv0C3qGbyOn2I4 + QadyBqKNfTUD6qJSzEA87AgomkjQwHfrlTeez74gozDdz7Iv9D6z0L0bbFHQI8j2eYMUyflAFFpP + si1puHHCIv4MiwztKDVnnSLhBjKaf6LiVdGtqYJDZOXGyuPS9FOzPgZ0d+zSnjfddTqFtbWKeZQe + +/H86N3ZgbkQDzJQ7teDTv0ZwU41oYhFzYS2FjvTkVDZapOPJ9lincwWoqazfqnj/ePp+yfAcCHe + sZ6ObGR9A6lOzCtIPm2Kf6p7Bd6ywa5XlPEaXjV6dd2A+VwWGHBjsUEOyaN7ML4IxcUwJrEuSv5A + 38YdFba6O791wOvzZ43w1kEmfziQdj07ag7F+P45XT2KneoQaO688p46YTd2qhrZslPdicFO1VMy + oOXrXHpOjsfce8Sjx0OZIQ5fBB+PtFr/MryA1oN0deWhIM9A7SHeGRBUh3i9HyARICnYcVMG+2FW + Ad1DTDbaMvZTlt9kSB2z8TqBqQQUdjSfLXv5fLihSFzp9Onb4w682K1+7nS1sXBqaEWF+WGVwoT6 + 6Dhfvs+Y2DDZ99mUKNAW65oIEwlG1Ywkfrip5AEYKYX6wD2xF6bpfJ3gwfTGrOFo9iCuH9zTDsda + zNSiZ3tTU5w1UF5rpwsEvHjd1mvtNEDAi6cKcPtYoGdX3NYorFTd1q4H/28UuHCzynDaWm7qG31b + A9Xn2jQs8YU/voQ3XgDDQmDiWT5Mhl/SW1gn9LnNFnjGUBWAVUJCIAutNrO1iBm6vKVU71VaqiBV + RcaeuF4dGBvR+oRYBcvRMNoGzGwQ74JWdEvYWpHn3yFcdldkUoNO4azZ9t3N6KFRHNt8dAtQptjp + Z3LldH6yCZ9pFn4QsNgPYf8MxAkocPcjCsE9HJGyG2wIns70G/wLh7UhQsDeEvgPuv9/lBcgIKOP + 7Tn63Qbtc3/EbRtVqMkv1RM0ZETWNKvDdbek2ydZ3SyUp/H6nDuevZObXre6WSTlys1CT+lmeff+ + bc3JzeK4UsjBefbEh9PGwpHvRKEjgypvcIpyil4Qhnhi8u8W83rSw2FFZxiCkfg1WI9JsrrM0PqE + /hu1XUo0XZQytuN1hKDQVrnm6XlThW5l9zbvDxeEVbcdwYPID47my+tkWJovclyUwLiQ8zXPkRE8 + NUXpbqqRKK7mtxOlMufDy816CHu2IcrqPfS3+AI0YPxXSiFEk90A119jeHAvFLEuzNchHDss/Tug + nihmZvt8doZX3Lumz4GytnAk+qEQLGkpb+fjyoQO2YiPE1ztcfl07G2Ldsh/mswnM/i6Q0Ls+8CN + 7c0EHcYWJmixuWGOh5cZgs113HtSv2hkETs3muLPKp797AVnp2FHG3WplWWYRKmbcqBE8Viml+fp + ZpoRkuxrtC+7A/o/NWwKs31z7rievcJCr1tdK5Jy5Vqhp3StvP3zog43xbF+RflaYc/GHosDxkce + dwQYlSjqK8e7xCTLaSo2CUhkuE3ognl7m/eBFdUm3S9BB/0+qxWh8cOwlZTjhGHAavfTli959P7o + 5Mlo+HYssRiAZ4N0fPW4DXfKjNcqlySIecSDal4eUa0gMRJSxXS2RJ4r0bfKFQPiKIyMaK4ScD4L + fc69KrJVL900fIzesx1mbiRulPntX2kuizctvqarXN6UxlKsM918NPx2PZtco6KCjT7PUJ7P1+ly + KJHLGj5RfdUAd7m+PL3Q7fHydKLAL+BFlPu1B9BkijiuftX+5kNczV0Uv84SY1eIr/ndsnjnQT3s + pN6bffBe6xMJVUmCudCuX4uP3hNBizTgg7jVj+nSQo398fWoY4cqVqieFLDGgzBuRo7Eb+Z+3AW/ + GV+3xG8WlGv4zfhUpuSc1aECvDgOavjNPigo3sjnQchUzOgUxWJljZJq1GQO7Hk1WzQqHYY58mjZ + kJ5/dDZmQ9CxBJhcg+nRBT2pWiPSUCodP8DUy5qyKofVoqiGgTVNff1+hdtoMk/HOA/iM4v0b6MS + ENb6sSA+eLdhpJjuP7GPcPoe6+o3sgUaCUvwz4pOER3zKptfzYogCvgCmKEB7gyNCM0ip5+0e4oT + MmMLDEi3vaiSD5G+A+SLr8lkgxlMWwi2grOzWNz8W1a3I8PYg2Cbgc6PCThnktHyd3X5H+jogsPH + QqM5DqQzDXKWNZ70LqwdKLmCkj7bO6ltzw/waG9rcQDekovWRRaxvbTu/OoTbM2Yn30SFSKZCvTW + cTugJ9PrdqlARLmaCiSeyivq/Vk9FSiM42oq0DhyHd8ZRZ7vy7DmdzCzyWIYPR+e2Rj7JLaySn6E + P2BN0ZKxLzeiyHOlpQi+A6rXPM8MVqujDCSAP8oHouAo6jEiux+ZlZCcgdHD7Fxj4C8u+hIO13SG + Qft0VS6W9auSuN0ENCL4HyzbIqmAG7cq37HnOugwq2HjSLtaOby9yf0HpKv3ZSPpUmZUA+VGXRu3 + rUG6uCljzBQOosotrI2raoHoHJnlZqPqTIwMJBwa8uDCvHDJkMhGwbZ5eT4Ul8ebNwVPlGdWptXu + uZue97yRBniIdG5YGHAC2HLF1SRqkn9DHADxpbX6vd2L1Xlkq2yARWxZr60K20DuOaGRq1UZb9ut + nVSEzqR3TwAevkIiMc6olWoK7eOi/d75u52M9bto7RWCs4MohZPRVyZLLJ617uqAfSjBOw55C7Zv + onY1sbwL1NUrcwSPj13XecriLuZv3cbO+F10UTJ964d0mV6Xs2rlyR6UQo7guxcGKT8CCcQBrjN4 + GKukplWnXnH3xH3q+B1jNWUj61hN1YkZqymf0tQm80l2Dbe9aYQhTwOGQ5gehkjE7v/59pxFvr3j + ml63Eskk5YpIRk9VSNRbNzyqQQxytOaV7Qbesyc+50Hgj3z4a+yYJS26lnqvl3I/X85dVegd/ikq + ubsNldx1BBS8njR6L7bX9H6EN+9meLr5AjOVPDZdE5FXq2avRAvfjzHZu+qZ2B19bJYtdtvq/hod + FHV/qxd4DRfQY7UhD+5/VQa0jTS2Hwv93jDkmyi039u95T380JL33YrU75RifqEEgR4J7xb+egIF + iSPK6VntPWV9wYFERXaD+9rrWKaiaGR/Y8pOKjcmPaULKF19xa0u0hs+nL15M5YmMWWwKZhYGchg + x6ungmi5geiGUiAi3hOS9t1YQMnRcnqODJfk6S4GR+tIed9xDQCn+7SKboHUvH9tqdmh+B+F615E + +ZIF2Ktu+2IDtRpvdydzK8YXaJQWJ+hW2EI1scZooQ5MiBbxjLgc3kjAjeATUiGEZtIoI+SorX8s + UUc4FgXKAJqZNnfnX2Ca12iaWl0li9lfBya0ei4rwbwlJHkQ7MvacDxtjUa0ik/w/JB2U0u1sKv5 + BiYnfZAlI+8PLeGOoiPuvPpQIRbvAWUD8jxZZDCm0dzm++0CNwxLBA+uSxmFSqryXkZPWafCtrqN + rUylujBEKvmQJKrricoXdVXl67E7JugcOEVIcj48zo4KpEcqdRuFvsM9/njQ3mxcbjaAjkQNHeYx + kqicyKNpTdfyXYvwrVZcyAeUotqaRdpXlBqnlIhZniGuUk+f23uOq8M88bmfkxUwYdhFUw3r3RxQ + NoKZ+ZrMswW+oCuV2nvw+0qp3Z/1WwuCRTH7vXhdv6FoHl2l8hhvOcN7FG/shfg9gXNFIvL8zxfn + 3OuAlEyvWxlYJeWKgZWeEjf++PpNFSmZxSEzkZJd79k4xKkNRyDNCY848u+P5YQ8TJDDSUg0aO8M + vXGVgyfEI2kk/Xg943eHkbluHVyTP5gFcP5aEnwiFz3CbjXpkr6v3fYZc94WAB0Hvh870b8H/42W + m89wu6eFai6Nof+9ePTmzWN+fJsHwvU7whcuhYja/mnb532Ai619s57n9ZRdiTSEYWtLAd0R5dNp + ibxbBziXYpDVST8gRnovkm1cx5aahZ4RE3rlMhMe+MOqEu8c/66bp+HauL/M155SRYFz1Tc4Fbf+ + 0XDMMC/1oTVwKtt92JshlnKLzs5ZGNl7/uh1u3hholyNFxZPVSn7sxoWAgjzfjVe+EkUc5cHoygm + yz9eTBdLkHXxo2mVR3VX0yfv90/B+JM/zBfn788qAcNnq2UdvkC0GH4fQhv4rrHZrsT3vcD3nBa+ + z1C1c+MaRAAI1WOBMJmbA28OXQIxLGqJijI70HeVOHawVEYfI5FOIf6V1n2Bjhvv7GSw7zwPcHF1 + yC/IlQPZo+YRuwdb28/bIm8CN6Z40oPA2CI3EqfeWKkeJfztLhafpM6t+3CnDN9LvCfjVIx9244d + EVNLUTmafZ5JWJ+bFPjIYmZpGrqbjrbEoMaOrKjI/bBLRUV83bKioqBcq6iITyXbO/0o6lNVayqi + ebZSUzEM44BHozDijgKkv1imE5yEskPaEBAxaRzP5fGHf3FxGkbDeTYRDhEZFbgdJJr4Y7qGMd5J + xUOg6wRBEDZK83OVuSUEohb26Pks4i2SvOu4XsiqkZ2doxgaKFaqG7ZNf67Wp7YOz7usw4B2iY5n + iELHOp6h1Z7lsbBFht+noPyvUhzQbyhHfJOII249H2JLVhemYRfvXCvFpph2kx97T1lXDEBqY+0k + l12YPnJ6KIPfL4SgiQx3kc4H5j/16eIGNfR0e1zXjLYpkWmNtAzKKNmplNO7jC/XBiyXfl/iH3AM + y2SNEbSSXH81nu/Xn9kFk66PuNT+UCxAzCL0DbrDJ1jgdXxFvLG0sQ6vzR6LuNc/P5zDJNhf9/S6 + 1XUvKVeue3pK1/1pg5bj+XEF8S18NnYDEAGdkRswJ3LN6EaRTWIGxp3eLLlHcXEi1mQ5qpQ5hj+r + Gsbl+P9m/zbd+qdNWlHjpjHsak4ljbKckej6ceDUtKG+qtvk6WSVAoO9bcIn8Hz4/8bAXr0pJ2vo + wQ3ua5oHpyWlCL6N9xQFdFC8DtoN0YTVgBPzICN0HnpkzAOIaVExJ7GrYk74S8a7ot7oRrZxJ7oT + I/JEPSVueLNazkM7kHYVX/rnzVsf/hfaQ7bDq9iNiFEBVvugSr4qEebBwaz/aIH+Z0BN/09BWm1H + ocSR43OnC9wEvW4lWEnKFcGKnhIr+fPN66oVhcWxY6aNuP6zMeeu58Ujzj2uAn2Xs3SS3qSo6c0m + qyzZrLPldXKli5MqA96js3fvH6uaf7PrPtCqPDitTlxHte2KRWvQ6V+0Mo0EpaxLFWlS+eTAr0iB + iNBYtihHDgsjpxC21tcJIshezy5n61wZUGR3ryYLDpJWshimb15ySoTTh1+duC8zTG0aCQcWTGMq + 4ObQ6gKt2VJpJiPoCGZ1drOUgHQo75R1QZFPW9YekxUNhLJu9UlDEVBNqXnUsPo6mnOyTS6+++j4 + o+hlgDtUO2MDX2Wk9GKE0TeRT+LCzvXqCs/4IIvg9Y69ZBeHt5UT+iq1ksE92C2yV7exTa1UXRip + lfKhrNWQJxKx4DqFA5ZfZ5Mv+siEjtRVBg1/vICWA2wOcpMbc2W68Xwj//pzNt8zVlHv2NivFVFo + tdlsRXyW9ZnU0Fbp/oM7ID7rHuNRe60MdnCBLB+YuhDaNguc+HS62+dkbbcpouW9l37HxNqikXXE + vOrEjJmXT+XBSm5kUOvFGMvqYT42hp7BfGAsjowFKYJZmQP3M3zL40HX97EncQZjTxY99Cn4ptTc + gqu3K/ZOIMsjgegxFsCqMlVzs7C6L/qOcOwxOvyHnSYMwhZrlFxhesBB5lHPC6PKeqsdZBeRuGXp + D6Z9OE+xX81DOVQfgZxa9YvpEC7heX7YAh8cw6MYsBNR0MMku0zm6/2DgWLCr3/31old+2Aget3O + K06Uq15x8ZTY66ePZ6xmJ3d9L6g6xZ9EsBTOKCLbHfLj91Tkrch9bIhSyW8Qk0bn4F9cfHqs+Bvq + vsNSHUQR1OIO80WGQQmkpuSGcdfEZMfQHhZdUHItqYqf1ktWt6TTGBZ6tO1GhIouWQX900oVdwKc + jRooAA29EZ/QZ74VtbLvvPSx3LkQHyw+1oTPj51t+p8iXoZG+uSW609eiOm5aFsiNTeVhVAQr0BO + LwKqanBG05vLudDoaeJrZqSB2HPaxe77kbgRgEMqm7BcKxEJjyFLX5MrAcD05uMFE2JrKtIeQVy4 + +ERTIo6a/7Q8krfG3+CQIH4PHUTxuAgNFB8t3h0VNEaawOPdmpu+jTxiMK0fAYPHS0IM/iYBBpwO + /d/G8DrOl/k1PQ6Kgqu2zSwM4vTjBanE9zFR1vWk+6s9czfRY3uWvOzNoqnocYduXHHmxiWbjTrH + VqPqTmVLRvcP15fULRtJiF4nYh1CbsXrlhC9gnINohefKrCdi7iGteOzsIbR+8QDhu75I88JHDfe + gbVD/PWR14jq8ny4SJMVukcxK0CE5Qlclzw+Ir9qHfTlFD4ANJDhhUfQdHADX8R1h0+uoXjyuBmJ + p586AgUESstFsgvTp1aK6yfE9NlmHTZj4T5Dq3k1ojnw/Kp4oAcZum7gRltQg/bcXy8O3V8DcVx0 + FDPoeCQgSFcVXpt6Di7u8Jbfpsn3cX/tdGfWc0QOdoD2dmfeQ4Xph2S1Liwdh5Z/9vUFe2j5ZwSL + 0h+znVP+EJkEVA8hAsSkvLRPWT+iSC2r9ofiVTVtvrvCv7IEmmqCWDgAokqJV7GKmXXZEX/KOoIx + qka2UbO6EyNsVj0liWmVYkpDUk5HOy4Q9kvgUJj7tvVlte9OJhNmtJzCA4GB4IQRGYt5IPZrlWS3 + HReC+CdONOL5Tm7tgcsLAnRL5gKsdji5hhbwAlbcRIHjIEwYn7nSfDYT8DSCOG3XPL1aCfiWDoHx + PvPItJes18nk+kYegXwJu3CeUoTAGuZ/jgWJMvQ7pyJIBXTm6WaF+xQHgvfWm919/rjSom7Trqht + tAOstXsgq7jMjcVuPV5/ZtHw/OUx1a2wQkjuKXk0iFQxUIS3v1kO51kyrVR12VUB1HUor+j9WxBr + OtSWFq/b1ZYmytXa0uIp6XbH798FYS3SmFUCYrC2NOccriQMiPGCSGJCXSfiKOnUvNnVSkZBaGYD + Em+eoy00CL+cJFL5Ol7cBGFN+co2eOhBroG9Uz5LS0Qwv8ymtxUVibeXXIbTCd9RU8p2UWRBC8XY + j3yvocRb61VowP0YncAitmHXlzvRWlOJk8iJFhuxTBPusVaazHdDn/97cFzTj2pzUZ7/52blUfVy + BntsIY8CakEYede4AwZiY+mwZRbEAzlQwYObv6l2BrflbvZw2fg6elCA2+tv3IZB1mYTDCXqi+Lq + HYVNT8pWy2y10ZlA+WYuoo9EBMXqpgjUKXJYsEHHD4eL0GF65qYzZAsdI0cPulTglNGnVvef3Y0m + 0WZ2M4udIjYexe0C7XbQrvaMUZhgja31Kn7qRB2xtaiNNbaW7MLE1qKHxOVXy4mM78Fswrna3LYl + wx9JQVKInFYtlOR5Dh0PsHchbbqxDE3oBVskasBIEO0axlVGvtiO69fDBu9ekN0KanAPZKZ7r6du + 9yF3WKW9LwSO3kIAgBRFC2pXQh8xE5gJULF25Hs7KXpCB3EdLgvaO1HYpaA9vm5Z0F5QrhW0x6fE + 6N4fvYtqBe2jMK4VtOcRbBU24hHIigGxxtfl+hIfzl+qCO7rFdD/9vcJ4r6cZfPsCmdBPWukgzbt + Ch1tjIerUzXRYym74PGsFyHhMma6UU0E1fnixcnFSIis15ubZKE9ESiJycT4i+tvqIMni/HJLLnJ + QDC9uF1MV6jbP8KGt2mSrwUhkO6AJ8H3Df+f4cXJByxWuNhg4aGNPBL5ZimivHHLTifMHbMhMK8l + Or3R312qgDQ4/3js6gLAjMeUyxtqLJD9wu3uMiTOuCDUqXUV2Fzs2Z9aet0WbA4p18Hm4Cmd2otP + b+tJGSHW+TTB5p6EUcxiPgpjFqoqoCAjf8Z4hM1ynXxJUdHUiYKXtwWwgnpNJw+mq3wo+kU1Bn7h + qhY0BpcgbqOsIj1J0UmgJG+MQoA1yzY6+QD6UbTFIsre86eSfVxs5vUEELE8SQsKRhQFtZiYIjs2 + DECXqtcXbfi+ZkA7n1WUXDO/1SBfpMxWqVeAh0zQvRaSg9ezq+th8vnzbIGDUjSXOGewUZ4PD1pK + nGZay80c00B6XcwB7pQCIS+O+sjBxWkT6kdtcu+MzhafYAcqrWB3AdUxK8for7PvswbRHvlA+i2d + CiFYsl5ERIH/3JL2vB/GQqPhVFY8qB466++yJtAFW+FHZ/sK/Zf5xgbeuyo17h4xojyFUzZF/i8I + peZ2qq/g/nWwkY/V9mvHDrZlsfdAvhmmxXU8DdPy0n3qdIVpoTbWMC2yCxOmhR7SBTrdgMC3yRsq + qRWtQdvgju+KSmr7+65/+foWD+Fcq03mq1wY74X31PE6ZcJQE9s8GNmBkQVDz2iDlaM98OqflZ1I + g61/FZmcR4brstQjZurHcYdM/V3hLG6FgjDt6SHtze77xtC691IGh4RqWFY28Kpz37AZ9gLTdp0i + Kyw+5k8dv1tSGLWxzgmTXZgpYfRQmmKThdJc0hU6ha9XKWXUmCnKA/rz721/H54DocEyWQtHPiyr + I86BE3pUcztb/M+mzaW94xwEItenoXYuoeZnK6uiuX3Q2+6/OcTjAq0D8rjMrhYKQ0OlBXQzxYFq + SgClzRVgyishsIK07+bzRjleLOCfI3IQtXTSOgc/0MCwF8fpNfjaC0inqZycfcsTBKFXplY7oDvJ + N83O4VR3xJ8fDuz68BL0pAPzoKnpr16D61Am3Mk5fJu9CY1etzKhScoVExo9lfiwFx9r6LCOCOoq + m9CCZ0/g5PvcHfmBF/lhEaIvDvQ6HxM4Gny0hHTN1w3wJbpcuwxhf7lZXM3MAPaYh612cMeN3Nh3 + H6D9+lh/2bIMOCLzzfJhMiRjBfDfV2dvxqXQr3y2RguWmr3LW2TQlCuF+3tZTPHz4WY5ltyb3jRh + TISpCsdBWgBuRolTNwLOYZjEzuc3uDqbpUGuWJ5pcoMZUgiRPZ3lq81S9fHyD9h1uGWUTYt7gQhT + Z8xhVROOuKrr56ENGBMDM+ia0OPYHlHRdkX5IVU9+l4O0oYv7S4p+AGLzBF1lZktDUDN159l4x1l + KciVC0fjKpmPhXlqy+c0Bcseppy6jFNt32QhohinhyinlNN0eu54HXKa6HUrfikpV/glPZU4UKfv + 6/wyiir8Mnz2hLscATa564XVlKYGL1dTNWqduSik9rXAg1oChQWoN/P5rSEF0wk+nk54tFT+x3RR + Z8FWLsOLUmGZyAVZqOY0ANY0T8c53oCIxHEi8NSlmR2HPU2z77faxWxckCYrZVY998GiX2fz+WwK + u/p/1CUBbCibfxUehOvsRvj2YGXIV/gKl7k5n8fcHPsu0gA3kvYMRJ5L0dSEVCvjZpOZbXKJUOEQ + FlqLv4eEQkRkTZqssjzPvqarYsp2rO1WdqLOsA6c5/w1c546YTczpmxkbcdUnZiGTPlUgq1MpjLK + qexrLutfjwqt6fEgnySfEYKmwDKC9gOQWV0quMwDqlPKCthodFfcbBZ7RscziqZOQbm7nM9yGTO+ + Gt4kePUtEiE8f6aOlpkWmu28FKiGNhiZbLTP3S4URyb+XCYrWJ0VprCvrY22e6mae1ipfMbpphUT + uJ4td2uaPWlHlkS2Xq++ExNsLjGa2ULUedqm+loDn3cnvU3ZYY62pwWn8VMn6IiyJBtZW9RUJ6ZJ + TT6lg7/5OnOlUe1FNj8aTjM8UoPS78NP/4RPnG4m6fSrXqhP2GwgGgvkpMgXyTCuF3jtQPFAyF4W + 7k6qv8yPTlYXtbZMRXC5Heo70eu2EVxuvb4TPZXJ5ucva4IZi3hYi+BiEVo9R/Aj9GWZk3Ntjj5P + MSIc9/ZLsh2z5xi7fjVbiNscvwqep6vZXymifgxfvnnLQL1Sb2PI+5s8m8zWAuvi7S1ej6VVlink + q89bq51UI/9BgGyTkkIvcIMa4nnZHI7RCDD6Rnu4EYzhhFa9HFTmZNRAtVLqROcCrvRSqGpQGF0l + 5CoxzyZ4rzaD6aEICE1ZFqVyU+IjPFAzkWV8W8SaoUW0RHaAm0pHasEU9eYx6l5X5QfWQdGnXNU3 + 4EFgf8rpdcv6BoJyrb4BPpXmqvd1c5UnkpPN+gZPQIYFtXUUcc5jyeLflIS7NWI9rzWmkkR4UNiq + W+q8PB+eYSILbGC0sa5wp63FtlIbUNq/Fg32r14KGiH0kR/XUJj2NIIZxeTKlPUxl8M0C9aoQRsG + GjxwpbR6M9HICf/dDMigu63wAe3LrsyTmueyqK7/CIuYrtRJPh4T74ObD/+VfcfwLiWH5cp8JPg6 + Dl2JavBPIfBCAxbBGk4xjQNJyhOpIjlTtV3g4Wx8tkg3N9nkNl/Dp09AjFrMZsPpanM1XBb7ZYDb + V+c2hTGazlweU5x38WHqG2CsWdvMi9NKUyMCuG2sY0q4uKMeW2tIymwCwzYIc3ZJ+bSWPOjHsb+C + xj5loB543IfWAl3Hr5Hau97VwTqSunEoxvjDWydwO1TUEa/b3ThEuXrjiKd047w7/cirFa25J4oT + VUrqcAc2GRvhxRPIEJZ37y4YyJRk+5FmuWwOxCdLHfNeZmTVSsymTn7+/pwLVgW/uM/LcqWUaQTa + uIAPFBoLWpvQlCTN+djSiFnPUcuHlYD3Jyu05EzLFxpsAFnzfAN/fD58L9kpDQt7RdtYMgTVYkJ3 + 4RJhngUc3vC/TuBOpieD4/OPzNFcz+OqTHRUtzp0qkY8Gl7NEYrSmhM5QUw+0zInKk0Q8O6bTSOW + WV1RG2ihyFNqreuGT1nQSamlJrYqrezAUGjpGW1VOKtS1JEa+3y2JEz2azN3iDCA4xCOaBQ/HtDb + iUgxGr8f0/vwn2SRzan2t3poECkFV2HPMqxKAnlL/bU6kL3AfvXyBX5QEKXxTpB4tTr5PijFUeDX + R3xAXfA9qge1hC7uFW74k4UUO2HoVpfWfiseULpNzbPnqSJxosdFOv4MB/12nExgIMaeEBviEPM6 + C6Kipx5gkCNGqUPdZuaeQhyYT1AV547r2OuM9LodVAVRrkJViKeyJt7xO+GBM29w1w+rUBVPgjAK + 42gURI7ny6J4R1gNZMxGwfgGv60CXC2zosmpiTfw6flzdbvMMCxLGSCS6XRWdtQniuyQyIqraIq8 + EbbZGDjaF6D5LlmEr+aT90cTPhoKnUXWclUv6kJ02M378dX8doIjlEtJVfYmN25c00SbuYmpgkat + KmhLHmGydapaHIBOvMVExBzXDeK4imxRnSf455W6b8k83WqRiqJWNbSxq4bgQ3OWK+S3ZWDpLgY/ + 7aYaHL19xbiW5UA+H8jvLkv6rZNlL6h5VGbQeqW33s+tvfiOGPerszcyOuFhXPj/yVWwjiwJJanV + DM7GREVNHPytg75T+amsTROpkX4qwL3UgRlerbLNsiscjOuThEznBqgsb+HSlDJVWj77mlm4cMI3 + E/uKDC3JSSxQhYm8l4x1i5bXbWwLE6kujMJE8qGZnKR+lluhy85HLlbocBSH+fatwzu4r+h1KyFF + Uq4IKfSUhJSPZx9qhm3XcSqGbe/Zk8iLHHcE2kogJZRKfNj4UhRWAY1VpJmNTPsC8vkUcys/q1gE + zGf9Lthcjhm1ZNcm2eHjMqsbsS83U+EjN4SFuB10wA3C2A/dGnhBp1TmEj0OwkcY1CG6viaTjSh0 + 0GJRD722m5+xkDl1J1ppOnYnR2Nl333IWxB3sGKGFfFCasnmt4lJ3Bxu5O0c7uCsTiRdUVwr3FrZ + 1QJElFx/xggjXEFImYjf0QhUzN/zIey1ZH6L78scbfS6KPr5EM1G8y+JUOSXr0Vr2JMrMrvjH0GU + wPv49fNa6ke6uEZrVV5MnegbBiuqa5AAVdlrAzxsSohBXjCgWZbwUtV1sbu3u7RvFUgOywzHdaXy + aXop9hgFUomKL5l2n4uOFNrHEQtJSHhR9iveTOa+OmuwXpEfH8H7gOQtlxX4byIoBe8Ce4cA8rH6 + CemYG91y9A4n3LoDekt2Zz6nhC9zQx9Cj74bnWkHUgqcEvOa9rg4fZFuEzsjbX3nx1j62+0WVaZb + WdvgdTemGV49tknRNEznu9I1z5ZfuG+0WOITYW3niJTpHJYq2SEZ+c7yMQ/NqLz3/OZfOtvQ3ma+ + R1e7Qf7uPLHxPzmJWw32Ij7/z5fdDPYv7Q32LxsN9i9LBvt3px9RDi4pw8wDTu+jTb6cZRM9e8KZ + C1ryiLPAc2RWoqrpRnW8EfU2p3UToX6IyzJbo7caWYwo6U2IT7O80cY6yRZf05VysqvWIk5G/GOq + lOV36Zo59Sp81e4KbNT3RydnryvJj24NBNCA8Ip5FDdokrU+FO1GddKrWvZbOqiBeOl5rNq9Hea0 + FR1SFAd7rgpN/zpvnPmB2Cg6PjPmwUCORlwnTcO24kAHA3QxX8NiHuLvjgKiU7ppD7BPK6qxE0n4 + A12T9XCqLHZlwPptjly7D5qcx4SzrF4qLQjwpCZ4sO01gDzSJ8vRH0IUt9UFfJ8xwpD+PpsmMoes + J0ll965E5qD29XaWslN0cSUWNpllcIH2FTaks8KCBXXdpFQkQy/9RGYQ7Xs/epTKgiuXFaPc74rk + jgHEFXXH4Yo6wXBFDShckUxd26xlyA/Z88mWj7dSWa2SNb8xkd8LvMeDLu9iDyKvLQ68QS/whQGF + UYpS4BhhdgCGIfNDGUyRzNfC4dlIp1ZRDNpRzES+wSxH63bdgQX7ME41uwlj0fxVNr+aDZOlKA1r + n+MTKceZtgk1GKl28qQHYJsSU+n6BCK4uUpWz0TQ4lWKqSA3h0IFEt3G49KHaYTThbT3QBU/0tlX + jn88PuqSfyUa2GZgEfV6DpZ4LkX38wtWT8MKY7eahjVG/GzmjRiaeaXT7l0iMC3gPssEbvLsa6qC + 8d+tcn8pQv0bs35mYgJRW0MkbsyWo5DbImOo1m5CWM1SeF/lbHe+hgB2laueL+FsVFxMftQiBcde + 7Ltevdbn7g40nEhpkzXU7fZ4yOIWj1kcce7HNdQU2CAwyTCQZi3BDf1Wlx4oXZFTp9g01uZUMz/w + W9xPsecCd6qFFu1PulTRprwIpSo5W2LcK9urPOG+41Yjlxq/of+O6l80ONXbfFlATDRlMtU22EgU + iMEwbrWrxHH7OLuJl8NHH9+8g7te/uUx+f4UtPHQyLURTHd5nV2SsE/pVPA2DsL8VkK6kIALAlBB + nO2SGp7M86zitYanciIHgsNo553vUk5ewI0IpCK9y0xj6J6qd6hHznGZMbD96IhdUKYjN0pDvs4h + +Sg9dtOWDNRfD1tS6wMftEcpWJQwgIxFOFB4+8UykcTt1USyfiXdg2AorjO70Wy7IG3W4666at86 + fUBH9FOtRtyWjdxpL0/pftS2fObB9WWU1sZgwrDJZoG4Lel09+Q3ANdwriu+OiddQ9yKRtYVX1Un + ZsVX+ZSk7WSZqzD1s7E7TKbJEnXVppqvjS8o8N0jpFN+GwkL8G6Q1ZWH0bjHFAWYIDgk867mnUNt + CIGMrNjC3/eiSiE8pFPDhUS6+dYrwjrPpidJgAUsFnv5awrHZp6ONa5fH4Pch3h7Tg+jm46mc997 + aT/AWUvjSO+I14eC5YFyHBrNJ1nScYcADaoA3njk7+CiuoMrZqu1w1UOSqdD3SF63dZB6dTrDtFT + iTVz9r5i5SAHJSohFQcl8103ikYMa2bL6rfv8DabU5V5NEIrLix1NhZfqKxYdI3B3l3jWVR/5sHF + UDZFlJT5bPocFnezFPWiRXjv5nL2v5vZWoG+YDzkFM1rUx3wW2oPnecCrEaZQs6XiwZTSKlFw9hG + OAwkVRR+FPiup5svMLXJ44qK7rHW+ruhx+Oo5uEUMf3pcj2btmYSeSz026wvmPbLqlCCepbG03QJ + HaDwqm+3RJUYM/N7fMZ29DF4oIs7EFu2cJU6pDb7TNxJNnNhOPEOLIO5F+7UDjbjFber/T61Gllf + tLdIuq5XZrZy8YA8ZqXD4i42TUWKm7QZ4I5G8Ex3to8HCV9vOXM22l8v0A9cV7sJXgZPWcdKuLKN + rbCtujBkbflQRfSZVW6aqt4oKig4e14kUSD3KTagM1O4LscSe+FT+LguwY3UxDayUXZghDXSM1m0 + HX3mKzTJEZawWt3Bx+vZPxRcnnpWIoi+Q06wALDNqYBrI6yd9Kpj8ScMX7eEYRDasEvJ443btVMU + FfnFhDVzfoCDOJC47vC99rAl9LolrrugXMN1x6cyn+jDuzpOcRCEVVz3MUgp3HXCEfx0PYWGOJ99 + QdeLuoFFjqhMC32UP8Ya2sIRdp4oqeHP6Qr6njRCvgtUKv2sEZYqcs1KgAqb/UGBvJ8lczQSmYly + wlwOfDBDoAB5J8s983xoP43PhcQPMrGo0v45AcXsVlzmCjZ+2dB5rgDmkbcmi+FRvhy/nuXif8e3 + +VjH4qzQsv7o5PXr4/Hx+cljhXN59vLI10DuEcUSPxCXbl8GLo8uIlychwGLoEjFoVP2WBRrdTGW + Sz1PbcfcJAj0VJqZh+oWZhh10gmzVbexvYVVF8YtLB/KcJdlxvw6VDMqlApF6NEKbmaYEAytLz3W + WM1IYSDoiJsp8KgOWMQcQ3Ay6t3XpmwLuBrIYBTNXuocLq3NXLijgDI63LSwnhRXITbobC7wqNZB + kk8yai9g/dutcq0g0C7nBiGqFACzQf8qiqguYRuB6LdEu9hlNr0Fzjwtskl3dmilH+wwy8gKi7WR + bD0YfUGScZ1xEngByDfd8k1kG1uZTHVhCGXyIZ2I29ki6KVcnpsO4GMDcSicqK/ieKHjk8B3Da8S + rmsO90LaVmGs1bfQ1/HEJOqKorWdVpsj02WBqRXCbumsR9sO+y56a/0w7kWVGerMTzxVBlWNZ5FO + p/unIAlrsu/wyrA6afF7Vx+957SiOylp2KtiXhRwcI/YU8frWIdWNrKOgFWdmDGw8imxPg2aUShu + UoT2Qgp2lYg4Qjsco1iuNdWbxVzGt0ZsII1iYusKoh3Ok30inU82fkV7mu5AybEG7IfDK/bO6fkY + 9lM2Id9Nn9+wB8iNfS7VPfpbqF4K1Z5WGEzjKroQG/ExxX6Wdk/XbLbDO+l0vh2awmQ+mcFi7K05 + uVjZiyiVorT3z5eTvMPVkfMsfsX4U9YpXbfUylql0N2YSoV6bG/cKyiheY97HmnL0vS0TudwI4H8 + PUmWy8YpaqlW5oSEO1gISCNFTByr5qpljVnw8lhSWZ6VMaSOV+Xd143o6S5ymdpP4Yn3lPFuu0m2 + sd1LqgtjJ8mHtI+ub5cZZTyVzKMnn14yDnK0vJEKC2lBUZQNCpgqk34ohtjeTFHNKuH8H587YWBv + vqTXrcyXknLFfElPJWbj+UXVfMnimFfKrPnPxtzDDMMR99FzQavwurwKH85fKhPlZAX0f20T5UBX + FAtCLrdTH8eMXO5n5w7vYM+m1602hKRc2RD0lDbE0dlbr2rP9kXdpnJeQfRsHABrDrxRwIM4kFW9 + XiU3N8lYRELMFqPhHIODq47ZCQhf1yvQpRoEp0dHZ48LDio209Fy7tV20tHZmNUCLkpLhpEZrBLL + bQJE+oHHg1q5PTU2vXYGTR4G1jT1HtsS4FMGisJ4IBvigx6meMz0JD8XX5rrFs+HZWufHPuwPvYB + 7hJ1BPBqHjyoWLFWoKMfGBrWO8EmNtJfNNih2ngfgWEPJMZLbJlGlmO1JgUl2nyayewXMabtax5F + duoVgrfUgbVXzXyJ/7qf16efyLV+ArX7C38rNDOy+dduhU43OsFyvzt3otA+iI5et7rRJeXKjU5P + 5Y1+8tqtIV6GqHmUb3T/2RPPg5s+GHme60bOdhHvZgX0v/09RDwviOl+c+msrM9FFd75bAKbYSSK + d+vitBll+aNi+FWVApnPCiP8lngurRRogFffx/zzLqqWbmML8Kq6MABe5cO6twMU3cWVYR4tx7K/ + +ngmavPOEmY8L/eDkLAcpnOACSGcCkHoQnSlmlZ7G7e6UT0E5Mre3PbTAmbBWtEtTivbA5KVNcVd + 0FK+pNIPtNRuavcSzuQSPPIfb50u4Uz0utVlISlXLgt6KvPKz05r4Uw8REyP8mXhPhu7PAwDd+Ty + 2Ikis+y6CgwQ2E6i1i/wyMvZXMwHpYEv04YscOSrBucUyLXAkZXBXjnHkZBkQA3an4PorC2ZvAi6 + CyNnd3XfmN9gxDS7YTVxfPTmFWh5WLugbYAm3ep0VMhHXciXUpmLeMOSHnl89nL4aOti0AI8HiGg + xS0mNq9QK4Pld3/D+9AMvxDjx5sS9VMd47CVvoiwBlUIWo5U/BV2oyO14A9jdV5F+NIXYHhfUF8F + nvd5gDtZx2H7Hh/IWRIaQdN0WllfcRk1BT1+y6aEIkqd08ruwWv8wHBqVeLU7a84R4JuaAJCUMm3 + eHsPyx/accd5YX1aO/IAaxXZDcLighSgTALxa68rMqQcIBx3E4Uaso3jRR435n2sYy1o/vetTtRL + JF9f8WxupBwG3qvoKWPdHAayja3DQHVhOAzkQ5nAuV4yqdK8ZOOXDuJIirlWARdLaR4rya0tL0q3 + gqAoXFQR1qJD1OaA9Ng6ckq2GGt9FGcSQSx1davdGZ7Wbuk7G8GvlZ/fQXJ/YIVID6seWuNFLvdj + vp3cAbM42Csh3NrDHStZOWL2hhV63VZWRsp1WRmeytD/05c1VwkPg7gqKz/hEei9wYhHHnMkF/q4 + Va0+fTlmV2jpVwVC0s91L4jWcCuyr9OWOgfdB2GtoPV2Bb8Fs8gsa9HWiRZfS33AWpZ6qZSxbyuZ + ragOdk/bUMzbANemkP4Cr7eC8l6Fgvk9/ZPbkQF4sJ1+f/4dUYy+3oZbB1u08snpLjJWRV3q7RuQ + 7ZFah/uzutBbtnZXia8r8fvJ4/McVVvJ71ZbybevreQ31lbyVW2lVx8/1io48zis11birh9gLIEo + 5bLNzjyfA/U7tDNjNkii4XkF6xjX644avC8OTE9t2UsbccaiKvNDzNbNSoMUV3Odw9jZRa+wRbsY + PImtfBIjSojFfwcQ5EGvoLquCFz43XITdDUJ9pXB5Dqy7OzydjWbZt9RoteF5vbSzTwdzOW9dp+y + jnHFso21bia7MHUzemgfFKiogL7l+l4gI27uPnxOzRhXcTm+b89b6XXbuBykXI/LgafEWy9Oj6Na + XI6LAo0Zl/MkCMIgZKMghJMnDbPow/5yQtCDxC1lpMjp9ww3v7piDYj+kg03xdfWmFZNFcfoLQEf + qA1zSA79LHiiEfU5H8IaZlNSO2DwMCvwX1/8NxD/ZQ798Ino6b8+4D4XfP8inUQ1po/HZyGCLCXq + xcvN4mr22AzS8Wpm0IKbAoPjPquBg9oU2ivLogzF+TqZVM6lCdjvtYJlhAKYtkZmtpjMljNcIxxX + jmDfJkW3FRqjPLA6pGdDTJOQO6pW4xJFxoPA912ncqHpUJwqlHFjbBNG8LRVLTAmQdPHvfZltqhV + FXZiZl6V5arC5cXVlFJg7Jdw5V7fyE0vvBHLTKr5ch8Zx9nEUHF41G3sgjYuXW2uw2pM2s7Rq3CO + aTb5gtSmG1G5tDiN5jTHTuuWbRyqIv95k9dUsdhpVfAkrZIDAT4MuUslCi01ecvwERxqdwlHPp34 + 9COgHxH9YI78iX8FxhTivwVj+J5F3vKxYk6Iairo6/61ywYdDSJyCqeJVllUd9YgpVhZJMV6hwgo + Ir8/x50sruZUHLecKnWqOR4g4y1C3fx4IHeiukTUTrUS9HvAYxP6XmkPdCVAUNgWZ9jug2LKF9y9 + VzuOswtdq2EGZXJyz1u1DWUI2OWMDrdRlU8w6Fx8ii3Bg8MQZZSfTP9X10V9WFZfh1eU3lF51/24 + s/W2mK2Gxhaq8sHRFD3UihTygRhFedJRiLCRQQ+Oa/SoHLdYZCrwKjnd1Sr7tr7eIdN2sTc0StB9 + GCvc/5sTuhzGHnRAlxOv26HLEeUqupx4KkXq9//t1sHlvMCpg8sxN3BHDPHdZe2rRZb9lT4T2xOt + dohPheriGOZiM8GVQFFYZqJImXbxl3t3hoxOUl4pHgAkD9+Lo6oUQ6omqsMtZosoMI21htnCcyPf + DQ+nWcLWD2PGuFc1K1/P0FpRWBSqMlHMedQmc3EeMi9giCRXAMLYrOdzYtiT1WyppA7YSRy1JvU2 + bEcsa5bB+Uk23xHN4Xr2eU3ijERdFzJMcpmTpvtZfwsGBg8/Xs/4spRtjhmL6ep5CUNeAqOpkS2T + 2Yogci7ef+DP9YnLJcz89YyxpTjAv9zXugMxHvw2PNDa6B8JeBB4KP7p8zAk+JG+SoaR6b5hV28h + 2Yh6J522JUp92N1g54sLtXpEtpKsgYj0am/r5eLwZDw18zpcG/S6ZTy1oFyLp8an8tr4r7NaiJwb + xlEtntoPnDj2R36AJRXp3ignJd/ODeugmQavDDLTdL4uVCt5k3xb1qPntlBuipGLuO+03gmuHzmR + V71ipri3r2/n4+lM1qGtpFjrQBbxKY2WTwNJ1A/bC244vhe4FXb/fjyfLb4gEzDS+E0fYtQW+qdo + Dk6MKZXaaueFabaUtQxRoYXOCJpMqK9NWacD3Fs67jz0w4H8pvKxKRnoW7qzOlB7pMDucCVGcTut + PeVs3KbYxFyeps3dRfN4INhreADw9T4OVrdpvdOeWwu895Dn02P9XY8yc96fO6xDZg69bnWTSMqV + m4SeymDro4ugepN4or5n+SYJ0KbPY8ZHQYCcmW4S7gqTvlW1Ixl0neTBztJblfapdsaQuzubtF0o + fui1mR+ZA3+Lo3BbWa4KH8e4hFbs6ph5mIvbV+mq1pEW0ddmSFQiFl31Vy8l5aKJZ1cP9rWkzKJO + NR9O5XUaTY4ohzeDj2/ecS0R+64Eo36INSH6ys0Vc1+m0173SK6jjdXpb1DniFVowARlm/UhdY7u + oHQSQcodxLN+TJc/TYXPh5mLa03SwvjuEX84G5+NL2FBx5S0BV+Tj2F1v6aLXcd674IaXqAQLbnz + kjlPnaATpKVqZItpqTsxQC3VU5JAbpKpxO64xnSdKrq4gv6cXKeTL8tsVgI+fActB9gcYzIcXwJZ + ho6ncceHk1v7ZHS10KFD6S144Lp7jUIn1sdV5OEWw1CfooPcS99kK8L6DK4X/XnTGcp0XXmtzzxi + KQuBzflV1ziQeqJVWsj2oFAnpCynSYb2tBxGpaCqSuig6LYUPG1lG7l5WIKPLEatRtKMwdshMn9v + 7Ka+sHq8UIE3OWEn8CZ43Ra8CSnXwZvgKZ3e4ze1eEsWRz6vgTcxHgAPHcGPEF1HIllTpdHpG6Oq + NoxKUOknn844KF51rwaCPTnh3wbsCSToB4LdrnahzrNyjxh7ytxutfKojXWpPNmFWSmPHtKuAlEI + Ez0wk0oZ2ILHg+KpfmjQw6g+5gQSCtk3rF3UsGtaXihneA39za3K6Nkhct55xKHeIjyUKLxq6loF + WPuic/Y02wTEPRJ6tkpEsazfwbwOAHj0umX9DkG5Vr8Dnypr/hu/Vr/D9Z1a/Y7QiwInHIW+E7pB + KYlHe8Zk5L8o3iwua1Hsq+Y9E2AUqsJKKoC2XjHyv5HHjIo5v2K/vxteZpvFFL7ouYmdDewCX1G7 + MJtMNqtchcYAMUFmuYR7VgQ3XWoZg6IxpalvpczF8Oh4OuHREoUCHIZyM8z8Ol/XYRcVc03YYq6J + IhZ4kVuz/ajBG2QCt80BbJCpJC+p2YVNL+e9JXEJk6fdNrOS4zlx4Fd9Dq9YAclvLiWsW4OYacZq + tvqzdW+DXvaQ3DPvftc7Se0csRdKW+x+d9IAT5eufOL77kBOC7IJU+41v7EYAX0ORvbVJ9uK/Qau + X5i7dAcdTV6u7+8Y8mh48v6o5MTuoHMHvMG21FW83udiOkyiv1+c977z9oNQDOOkJW//vvLtBUuq + b88GPmYzu31l7/saPpp7r4OnzOkIPS8bWUPPq05M6Hn5VEqWxGrGHM6YMNmMXfgt+357nS7XwPvX + cHvOp4S+U87i37edMS5M8wfdSsLWUwH3t2M0DwDnmycLy/CP7TzGDyhiY3ULA8PMlx5I0hZd366y + vI8x9hc9cze5Zr4EM+yBVChOJe70RIS8FCOV+q9dL9YWjQN6XBC6ww77TW+ftOUiu4tLqE+ctS60 + bJwqd1Nyod8kx4gsspLrjcOx5IjI/zZz4oAW2Y72EG89dXjX6ZXqqmPaKO+/5h2h7YtG1kZ51Ylp + lJdPSSWdTNbSSAf9L1Mc+GJcqkD4cSz19sGOvw/TUqDTMVAdIGky2CNseRdzi33VlZ4MOEWGTf4F + Xl2jzL26gru2rYCU9Qg7GYdqoCkeiALEZ6pu4H1vxf1558+KUlk0cikDe8c+PoTx+kFtH3Un1yus + Zl+wyXRDHO0LW3kX4Dz7k97Koyn9+h9vnagDtAW9bmUmlJQrZkJ6KkGUz1/VQJQRRdkM1eLPnnBQ + wZg/4kEcqiK/H1bAf69R/sYiP8lNpbLtI/1U5/U/ezvOtjZ6PJKSwV+yYH0++76+hjVJlyrA1EiK + kLFCyepqJpQVUHTQ0gPLWPQjCy6srhrSVOShNpGGeFuIFofN6daqK2z/orYY4aiaoKw6AS4e+7ya + uaK/sDUnBFSPttzW8rg1xWLYbQgeftyWki0JDn6OHTDATa6RRgLu3RHSCK4AaSLVtdpfYbOmaZEr + 6sdCPKgvfEdC/Wq5vcA97XNJxy7VqdxxfrvDNOHhtiDcyQJ2ONEd1jrCcDWWdD/I6N4qXAcy0k5U + kPt+Ox/j7dzHR6vb11WBDnHUKdABXrcNdEDK9UAHeCqBpd58bKhS5bF6lao4hB0w4nEUOPL2Pask + +oKgeZNCvyNV1yYfbpbr5EuqWKTiwbPpLWgHWY4lwjULWFM+CAirUqvVbySYqpZnm9VEU1ps4KuB + IWDSh3oLIW0Vk3+uXDjC5Lsol3sRZQCTVaO/RfxJuHUU0a8JyF8Gwvar2bqeI1TNeTav88gsb4TA + 0UVSZxzEzFFIIOU7HTSyrBhWmmN43K4QbOYHjv/v5rxMo6PSJby1H5N46LUlfSrig06bom3BF9PK + nybXsEMWGGMmN0L+I3fCAE9NEboS+8hzmecIBmYOfDqrTmiNQ7RldewbTT5wOuTitxV0egBxODSn + wY457RhF2ppCw0lzPDwW1feUh8cPj8KnwLG7OHhkG1v/jurCcO/Ih8SkhRPtM1yjqTanDK43N8li + eP7+pTJPX2c3GMNlkETPDItCisrqDxq9lxJaZG9X9cosLTo7Gu3q0itaJwcE2ltW72r+hB9f+uve + w+F/ImR2X9cXChBTr1N1IdHCtrYQkTcqC4lHzah/RRUKkC6uSmVdC1LcdyOYSwJb930TgAUuzyWS + wJXO16tmvaq4Y5fJGpjn/StVKm7TD2Xkm8s6mLTodcvIN0G5FvmGT2X24fE7bkrVbghaf+C61di3 + JwykptBnI/jpxZ7MQHxTKhUJ6tCsFFyOSQTrdJHg+srkw8kNrwukxx/eHTVmEzoRawsoYx6MMA7r + yHnW4e5GR+EWwECXu6DDHwio10yuALsrxpgDq0obgLFDx29LlNdEB6r4zsxqVZ7X8wiNtXh0vP7M + 4uVo+OHLksEPWr7R8OgmZcvHFJ92uZpNr2C3lqdWOptyGcG2EgVhhEkfDoBA7JhAlytZdRuDb4Sw + e11qKSLXCIh+At+EPpo0H4jNqiPJQh70lG3iE4HmRagR25b1dGDmCuMSJ3fWvfVBeSkyY4RYoD5C + 7ZkiHT5qn0SU3QIG8gZ809iwdqLJXgFvDwIwy4/KBdidPQqwO90KsDtNBdidrQXY89Vk+OjitftY + Seq3lXyykU65IIne6AwleSfWtdnvNbjwsKs8VgIVi6KnTic4Zd3GVqhSXRhilXxIS1O+AHalaJcD + 3srnUL15sZxwf5CL/4rSjZT/cq+Mt15B6WfltJqGR9HEIIImEw1NqxIUy9ceXoPldZFh0Wrob3Zs + 0J+Nsx9aQ4yJhVUTuUQF+jKb7ojncGE/CL3q/XQSOZ2Stl0W0FX0/t2F3U3UV/Jh4BRFYjGbt2uR + WNHGvkgsdVEpEisekipxnevyWtcpCH75dTb5UtScL3EZM5G+4eXXSGogCAqW48nM4gcaqLQX3sQ+ + mWc/GiDCr9I45Iv2I7tFOnuAoTDqpOr4Qha/Crvm/Ms2ttGFqgsjuFA+pOP57ugEeOL3SroBpR0N + 4I8X47a/Dt9dfmeDG/wPBhAGnqjiLNzcwtzHf39H7WYqP6Y5Y8cCkrgZXdvSH/GQ030KCeZHwiS4 + 3A9iuikbM9sEAVUh9YZcx2/e4JG4ydDj0M1s6UdxsHMy1VaxXeaDNd5D0Qxo+hvPSRcJYo/AcJvE + Jftg7YPToNzQaThvh5bYIrSl+h7c2cvuGQfinrH59+ilw/Z3JXKNWpIinbT7nKsrhUvw7NfnQN8+ + JINet7IeS8oV6zE9JZHv5MOrWq0vFlVsx57zbMxiHsbhiMWu78qwdk6pAVfzzSTL03EwLrzZ6jfp + iy+wiqUPEH6fZ98KVIjht3R2db0ut8tHaqOj+nSSXaHhUmEVg/iffZ9NCfoCbY9ZfiM4D/kMRKVp + WId8aI4R3Qsz2Ep4pr4BLxpmX2FedP4t2bihK354wjRohwF3Yv/QjGmTTmG+bp389pJnUQUrtpSW + 7ftuEFdxudWktQVMOmZ1kVKYSTO9Bt+OWa2kMr7TUmWVGHqLg38PbPecuXX4cu9d+HyvrYQ7dfh1 + 9jVDgzh8K44PK54ACxjepuvhZQot8DvXwENw5wHn+NWO0wB4CxNfhkxGA3o7URnQG/4pfAC4+CRe + 7OP/U5dCT4mNLvBH4b8/PR/DjZ1NZiJeR4MHJzup1xC4bWSVPU2hd5hzRmtix2qsPudAkneHSz7U + UZiE0kxwcvtHWwauKjXndXAM0+u2pea8umOYnsq6xkevWUOtOaw8Xa0158cw6FEQMMeTtebOqPyb + QqnQFn9ZyDi5ZvXKbr8SWJTywyKUm3J2yLE8H14Dc0XoOR3rkExWGRAXMiGsL3LQErOlCCi1Ld+f + fDhnz4ELgMYj2YQowvB1hvLu82Eyn8PGwmc6xBwe3Q7n6foa9qzwvor41mzujpmr3kd0L1MCFpjz + A7ELSoWv+ECcFMLukEwf5hc29WbSQccm945PEXOzFQKp7BsRgwnfVEBIvoRRz7Dh95XVmcMioVS+ + fPd+37BuT+YOwPxkNDUHsAJPBV4z1inwGl63DbxGyvXAa3gq055OKrUOGHBiN4ycOsScC6eTjZgb + RKE0BV9cZ9/ywhcIG/ro41nJZqKCbnOVejRd1kNEusvPBj50uUBjI1agSTVqhQdqo9oYYWZgDjmV + un+loGqHA1OLqlwMZ0ltvwkmpYKoMnx09OL48W5waw/2gE1vRQ2dlpqNrK0qsSIz0AiCzauq4kpg + 3MawC8lTlUQY4C4rYex5h6BUH+Q93htUck8S915Q4YHEVfaYSnug5Z+piopA4YAcnJAxVnxQjpUT + gO8eIJuqK8DX8I6v4m7RmqqJNbgjdWBiO4pndBXkyReZUXP+8l8ysGNQxV9bpULDylbDC3h9gG0E + uqPHJXjOnVvWXa/B2myDHdZiaXaZ71KSAqZY1PF60++ztSTQZotvo9yjGb7wapPTn3LghC8+warJ + ze8W5uwfC9xy1zhkVh7WFlO4hUH5UBs6Ji4E7RvBOFYHALQolhJolvLaf+pE3SLJZBtrpiK7MLkK + PSRm8l8n+HUYB6DCyGpPhv81XXleOWZMkUXWEnjskHLwB+69H3/dN8HAuZy+qlK1yvaGVjuFYtRf + njuub69/0Ot2JTqJcrVEp3hKl87Z6w9evUSnXy/ROeY8YE48gh+eL8GIX5eDFD+cv1SQ1Z9X0MHf + BLKaxQRb9xAEP7WtIh0REZzGT52wW0QEtbGOiJBdmBER9HBbKGslO6VMCqMfmBdSIORewYQPIqCn + 7/IsD2mHxRq+kvOOEbm6jTV4pezCxK6kh1t2WCGbrdKbbJrOhbYv+bTC7HqT5oERPjeDB7gBWezF + SqB+uOEuVrfyfYmJAaUlluJTe5czm6LDQw2lGrxkvDOUqmpkuxt1J8Z2VE/pUk2mqWuAqq5ml1g8 + Euvt3s4xi3m2AFlriqnsGqivAVPVptkR9lVui52LWP8olCohC0hWwdjm1DQJ9IqweWhH288QI+nt + NyC3yL5mvyHsQP9fsH8nO9BzqP7X1RxU1ZtDkGJ/ZPLGPlnLvVqjenOgeoFHlRrsD1oPyJ299nrn + ZjtKdW8ojmRvXQsL7E927D51WEfsT9nIGvtTdWJif8qnxJu/LnPmJodl8oiMC/irwksQNB0K2/WZ + LLPyA4pA1g1PMAhDTzVqE3TbED3Vj/R8x3fLdEAFx2CbTBR82MlabM8a6Kh0AuYCzQZUfiGRgMir + kB+2jN8yYYDgxDXtAwSvPhAd9sutCwn58e05izq4QOl1KxOEpFwxQdBTOpH//HhUL/fOmWmB8Lxn + YzhaQeSMfBYGoSyq9zqBUWazeTod4w9pNSc/P/nu9QGfwI2XD081docu/5bDHgD++FwwSpER9s9l + DpoW0oDfPPHLDVyjCh+InmrTAxk9/rlO6r5VvTdMJ2jQmhHfElLYl8HD4jCU6IkzVIOsKuXG8xiD + VsJ/D95t5mi5z2cU4yZywh69++eLx0XWTmkl5ABKhXn1EqgpzsUcL4trBxGZhF0ebzLMYhd1tDHL + nZjZcxHElyyG78frdAUSFlAHEoEzFst3Mpvysb4JaZeMhslQVHdHbIsroYOJaizDY4MEjMJsN8AN + q2vIM5Cye2H35KqYz5az6b5Ueqvxy72A6DS7ZHQ9ZXMNrKRQl/vkybPYi19nyfCmYWvJ7YIxhtff + kgaZBAOjUDqsh5EddC80xw4SPW1J+Vx0eC8y+a5bqLnXXa12wSBRNeOGtbHpn6FkYvTfyfrepfld + GNQEJFlAU1D2ancvJ9NLqmroKiE78NlTh3cSsamJrYAtOzDEa3om4fQRIXMxXsxgzuAMUqxmMs9V + TcsB/mXWUApGk0bTGyMIIuCJBKWnyYmbFcFL7h8I/q49qD1Kdn3EyhZaIF1rdUIj8RtsVYoKNJb9 + 0eVmLQLql+kStf3HwBpQtNpbQr7rcWzVYSlI8MM5yKT28cL0upWELClXJGR6Kp107z7WsNG9CIFy + yxJy+OxJjCzNH8Us4lG5hKLIELjBT5OpAdMNDJ62Dh6j69t5AXg5PhmrVzHUX7nM8xSter+vr1dp + JgCgNZ1SpNlQImPn6QT0ugy+U9/RQko+u1nXwc+7xw2WEMAj+FjPr2Ghq88qUjXUR2m5n/5tg5HO + grgmBpdTaiLfZdWwvw9jIVsSgil2U4edCrzYtaCrI54/jBuGPNIIx/uusBbC2xb4OU6LWNpEO1BE + sDOspr9EmHSU7/N1mkz19aRfYAItXdzSiGUhcpeBIpyBq3Q9/AwHf5F+g1O3nhEsXT7A3a7Eaz/y + ooGcqvI9WYKHbpnojuL34fQbhcN+wxe207LIhf2FAx4dl0ax7VB3tBEzUskOZSUPpNdWyNt+knN6 + RFv3wzZSBbMTMD3qRA6vVtlm2fVe95XY7J4EXYMkqImt2Cw7MMRmekZ3tMWnXqffy19qOAtnV+Oj + wdVyJtx+ThxJA7RMAXl19gY+Hk3WvXvL9u1hV87JoUUGBUPwC8xonLkm0Pnx+zGwzDU6XzDbDZl+ + pW4IfNr41eLj48OLg3e9C6xs0BEjw/Gnk7Ox+lC7I2gvef9EJ1t1FDIqY9tYaGDXmpc/zqrwY3/d + dWBeAUUOvnV4h5IR9Lpd5CBRrkYOiqeklBwfvUQ4sGrooMjPqoQOhrHr8VEEN70McD8+PveGpfxd + iQBBOsJx8pkFdSRbaDKGvzeh2boIEd8G4Ar/5zK3nld0YN7TnWcTMcRbc/2qXtEhhsjQNVy/WhBi + 1DRLg7NkpRFr06/ZfCMipFez+e24yKrUi1GPoxajQ8VPrZPhg8kQm3YuQrFuMPJ+Brr6LKHBp/Ns + cSV/R0P8FOXBqbTuL3Uu1ItjaXR7rgWRnLSNi3yBcALww10SCfg1Wg7ETtXxmlEQ9JUocSclG/aK + 7RAnAN+sHRMrMe4/KUNdeG+oBccX8VPWKb5ft7EWHWUXpuxID2VAw00ixUhdlQBnvogrU7GOLx8b + YuM/x2LLyjnWLxnvIG0pVPKeohpoTfDRvjQQERab6M9FNR1NVFox331l+zFFV+iZEhhoE5A15inB + Sew/QCAeK9+ANFjeWlOvhXAgNa70s/0H5fuE7tFWLaWLZO2SNZrsNbSLlPOsXXPvLwq1uc5p97pr + LPDIh6M3Ek3xWE8Kci7zmDRx1TrgqcsIvLWJ3vpbNs5TIe6YNEelqDaJ6txphaHXyGnr1fiK0fCf + rFsXNhiQDTvXoWkQZwDt8frUd6zWs71qR0yIMPVe1Mcb7LBQOFaSEAJipsC4F7OujhnoO2BtU165 + vNr7s1Iy+umqwyUnckj+/OMtizooGPS6lYIhKVcUDHoqvR7/OqoBoPGgkpnkuc/GUcBdZwQyQyzV + i9cUl6fEWEL5SKYrENOApXzJprfAgTIQhMr77zkao2/yYTK8TuGf2XR2A5uSzNjfE7YU1L5lw+tk + /rlZ5i8R044QrLr8fVZxUpMr5HtSBzMrW0F1U7GKTRXlwrCtQGzsxr7LatXkelVVWnrTmsrnZA0k + hA29pY5c7LQFQimKgwsplwhMrdLCoE2oND+71qOouyHWciwm/zEcFLiVZuJAwJmTyMICsmtxNYYN + j6DF+itwTcvLgo6R0vWl4WR2bTShmRy9PRmv0nkZvSof4I7XekrQS2CRmGRxWzetxtZrkrQRSr0t + beOOyoDEMW/czJ1JxdRkxxmxu/wfhtviP0qX5VXLAx40DG+kxWpYAFO2uMm+phr7H7H+EA3PTp68 + w962Xroire7PF+fM6QBNRq9bXbqScuXSpad06b5597YaasBiP/JMm5737Inne3AeR54futzfng58 + uQL63/4e6cBY7QA1Zc9nxCD0Blkln20Ybg8BYZHOiPNexU8dv1M+HDWxzYaTHRi5cPRMIpm8P9L3 + skrMxFReVHLOPunCk+pr2eBm+ZkATWCTWSYAt2JOHpQ7fEcJVnZIGSEXKs35AaDRpA/fbCVhr5N7 + kfTJ7YGmHIkkoD9fvXWi2F6VoNetuJqkXOFq9FRW4nv56Ojt2eujx3VEZReB4su8LX42dj0vjPnI + hUPsy2qKyRzur6HIJ74y3RXvPj8Sf3xcl+bT7+XcHZMXhQZC7/sioCkI0d5WL4p3nWL8+6IlRsln + kRXBRsjfgrasfzPJFv+zkaWCZFE5+RGfN3k1jMkJvXhH17C2FLBdfARO2ZgmcgTzioLPLT0VneU1 + 676ce2HHkO/g2Akotww8lMC2zNcElgvXUVG5Mh/O00TsXxTWEso4SOZ5NoRxZ1OyYeitwkbDb9ez + yTXmkdxghR2JLVmAUq9BsS7e54PSr/I2wOwIwguSNUzU95e8CvnsCvV0IU0opEfbZejGFO5tFG1+ + kTBggo3IpewmWcYx5Y3l6feNROzJOiJjyoOHr5tHk/I/Oovc20m123Rk3ShemouG42115exBZlfd + qa70WgOLmCw+vu+Y1P3BNdjEKTvzO9fm062sASd0NybkhHrcCdakTA6D2z3XPwzY5CFormplNJRy + 0OFmp9dtoZSD+s1OT+lmvzg7rYVG+y5OrYmkPA4iD2TrURCBbCmzFXSEEc6/KBCHaV8i/5qu9otl + Wo9WfnD1BkrDrqeNGxa8MAi2xBvHTug6QbU0wBLONu7zBeZLGTNmmvI8p0K6FFrge/WSA6VRt1F1 + Ih5Xgxaqgx1c1L9+ZMQcbFllke6H93/Da/q7BcjAbPq83BBeMSyHV6vsG1yM0OzbbD4lX4uQUAa4 + PwuM59AdyM8SN1nDFOwfN7c31Rb+LdZU8O/GHdCJ5E8Jso/HpTKhh8Iy7EeybYF6CM1TjNyTxdI9 + 1gGIjl63LJYuKNeKpeNTYuSn5ye1LHA4MbVS6WPG4xCTXOBnxFB522Z6mq6gh78JEh2PuCsDf7X3 + OZWxB5b3Ojb3GJn8RQoEJU4dsONhTJRYcTihUGz2v2aLyf6I9r1lxnlBFOqCJvM9BqROnq+yy3y/ + U3YZvG6bXYaU69ll8JRO3quTi9rJ82KX1bLLmCgL547gZxA6TJejaCvHMGq+JBciuhd0gvkQU/Zl + 1t4wzzariZK8Xk3zPpDq71jy6uv0JzAZlyIcPF/OVvVEsdgJTOnq1ZtRSRaKQK/nbry1NMY+a/Fc + eLBReUWAlsmIIhWSq6vCZ4mS0DRdpxguhlKUtJEgApionlRGP1R/H6+vV9nm6nq5WYNKvJnO0nyA + e7DI+YqwFIb4asGIGmandsYaMv7vS+goNesKOKkVKQ0ZzF8x9hSurG4armxkreCqTkz9Vj7Vlnvk + bdct0erlKMHmVz9e5cx4bQ0PqAg98yW0IvHifIEUJsly2cg+W3HDGdWIXBX9d0nN+yFp4E7hG50f + htW45x6NmEREpxLelo06ltCMGMFLbNk/HS//OHb0Uj+62iSYnzp+z8ePx136uAdBWscGR47z1Am7 + xQbLNraxwaoLIzZYPqRDbILPis+TZ6QItlfejHW+pY749qanL8cf8+HH/DMc+LN3b06GzA9i3w0c + OPT5Z1nOOJYRxB4FqpcoAv0STRvWrvZFd2LbYW/8Jsze8rd3MDQHnEszW8k63JVhdKne3XIFuiEV + bNi+hN3Nu4fS3f7lMloZj/rtfFwKj0m/YzzjVbpfbVrf54Luq51BrOpAR1Iz5l0KwdLrlpoxbygE + S09lHOT5Ga9Vi3O8qt8SVOPYi3zmjGIQB8OguMav0zlolsDTZEziyenRiahCTt5301wmsnLyMqpT + shat/N/g1gBCKdxGax3EuFryerk5ei+TSf+1dC04G5FRsakE5xB7YRDFNTgHswKS8VFtwYpetx6A + 9Y2Ft1wMvuTlbaQfcS+yoa9F/AkIyhiXeHNJpZk+cbISYreFpao8cYbe75oKAHY3uKulHYgNp60K + gc8o6t8ns1rlQ9o/wOpABm5MddZFHRaare7hDpFLoe/G+nXh1YcBX1NRu87fDg25kn/Php/83rST + uw83dIOwICQt5HuSwqOKTWyOuNW0ei75HRub32dIpRM5Ooqw9GkHjqs3E5bLeFEFvo3rybzsNAeZ + osixMpIK2ldE3aG6WgBDmHQn6qTcyja2uq3qwlBt5UMJUnYrMrQrmf5leN9dL5T7ET5dCVjWA3SB + WmQ/lqc8Sxd/wUcPj/pCb9hf+e2qBno+eaTQgQRaWoo6W1E5O4HDUJ3kHjC2ewiElnHmmkn2kbAf + OxoJO3yBtQK6QmGrVtZY2LobEwxbPS4hjxQF0ejsG0abXS+YfQkEbIc9qMoZ9ngmd1w7r896dAcK + NA+ndFyvwId2peKsP/7gwnNYnaThDOzUje1HuB/9XWP2jF1a35J9dmfv2LOelX58hX25+GJWiD/+ + UyfuZtuXbezFH+qiIv6Ih7LM6PUXGf9EgH8F3p/y6XyZLYTEI0x5cRA4EQsfG/+MHg/Ojv7QCWyy + wQVS3t5qmXwhjFeY3IHUSATPfXd09scff2Du3gRjgW2MW5pte0Hh7zax+1ShjVbPgP3dcEAnfZYo + 61WL84KQlz9KruPeNVVCo9ZEDU9yJ/kOhVQO7WqH5nc4JJ6dIHqfYq3rCDPFQVPTo6sk1mG9MQ86 + s0XZxpYtqi4MtigfElv8nOQyoqGUKVsHUbkE4iaOStPr+FYBqQKUB0ieCjXHEtw6oMCYUvO+4fn2 + 7WH7dc18fSnuA8Gt6QSU10wFDw4fGJxZ8gVl32cEGgVy/B75AXsAiUAjQqRp2gqtOEy9EWr9lv4i + IV3G9bDG5rD2Jyk25/+XTG7n40mygmOrS7L8e3ghUfN6Ng702uuu7/O29nSTzDNrKMAuH9hjt7u+ + UChH7lgYIr/fLpM5CjLQb0vv0xTf3JUF3uVb72QAu75alp7Y0g8xHnFvvD86ef24p6/tteMdX0kp + JhnIl+292RigO3xfX13u+jJWZmXQyXF2tIOd1euq7UXGQrryCDkM77CsWMwfJ6sVpHorKEH36/z2 + AMnRVTGzDu8UMwuv28bMIuV6zCw8JWnx/Ohf9ZjZKKxXZIgiHgZsBD8iV/ofjs+O2HCDQeqj4dHq + aiYUFsxcX2zEFpPFKkalYljlGAsJaiSoCK+pDHXPVjC8BpQFKcgY/ndYBCOe9LgAHQVFPaoDB5UH + oDE+G13jns8i3hZHa1BvgTQtlK6WrKDAY60Bv6qDIioevlVWEKDbosG426a317AZtsiGBYs4GMVB + mZ9wIvXxbZ/7rcNWJ4byO47PnbBDFAu9bnViJOXKiaGnMlHv4g9uZt8zTCCMECmiHMbiPxtzj/uR + N+Je4Icyv0PtxGQ+vxW33GKKQUmYjkxIr7IUZ7bBpPDREHtTSXz5F15Pze8tA+Td0ZlSqc0fLSl4 + JohWOW7ERWN7XA0Np8JScrsKK5nKy87ym0zeoXm6EFETRswIC1pDVBq7QnpICMF7KR28XGOtTDrk + blv8ThhwL4xYNYlwt9XMPOE7hz5onXfJH19/eMWEYe0qXYzlLMIJqX3Y82HnvQUbalmDJ5AVJ4ue + gCPAm5jFUP5UOG9nlzlfDsR50KgxQRBLy54Q8ppWXe+n9uX/3Sripm9L5n6Edw8Ud5kQhrbuSxtS + zPEpEGORYnRirZ6hBETLZ+TiQ9Cam3RK0OS1OagFk//SJtkd6YyOuBB380CrBb8/s+vPZSj1VYle + p0NyJr1uW6LXqSdn0lN5eZ++ryHnIEJTrUSvC1vCi0auF7FImlNLCI7Il9dGtBEWwxBnRqRta7wV + cSkjxAo0ukgJ1T1dMJ9+up6Cd08XvgcMVrwiwOVF8V+RtTQR51yEqmLCk+i2EsKK3X5NrigPHMvH + mmiO1JP4I/zraAWznmI4eOsHKIEDR1OVN8wQ7myD/vwWUE+PVaTbUb3uLvfhom1Oa4NdMFssWskH + ZrZc+WoF+ZbHTo0qfvAYw9izhfm5TaG9Dmetgbdl+iXVoo18owAF9NsqwRn0tehhLpdZEiFqlTIk + qcHfZ/MO8IzrqsZO7FPQL4VCiTUS8cpyocojAW0ju1rMKKAY+tMjszJ599xFa0kGlxDMjAkYiQrD + ehYyMpIbMzuf7ZNJ4kQO+V7We4U1D+RB0vOy7fTZzfLe1HaEPh8YHdTV/d2x6Y7uPVahUWfNlqPZ + h9JW8YH7jk/m3mmmSeS3OUhMXQWR/YscI7Pdums6YlXtT247ZtX+dFuTm3qMb/fJcH/oVwKdWO2I + A2kdbs5Vommgolr94CV/yrrVnpZtbCNaVRdGPKt8SGLqbP5V4o6iHy+TbiGxdmRMzyj9BSnufgOp + DVw3YK5PUKS40+rH/Aq2DqK7J6iMLBD19wAvSAA6kDCPp5sJ6mcWXnb7qLjePPdEp6Tf91L2j6yd + yKMm19BEwa8LgNi++6KkI1hrNdE9x15AD+KwfkVjRd/U+wp1uPPrt0s2+97Xeb+RDh6FgH9JsTxk + I1/oxdl5UDfbpZq9oHr1xdCnA9J3gkCcaZ3Esl/8bKhScIMO7j563TYFN6i7++ipBKf616ua/cMR + 5k4zA/dJHLuMByP4EXveLmgqoF/316lKSo/Q5LkZvtwsrmaPK8mg/EcB1fQCUxWEzkDWkRKHtqmO + lCUXCl1isi2NtoJXxpEu48ZfR08dt1sZN2pjXcZNdmGWcaOHtMUu0xtP5myLZDtoOZ8tq5ln6k+/ + N/xNUBAZODwAgWWP+uMPtE6GWjCqjvDhLXPiDm5/8bqd258oV93+4ikt0n+ffqi7/b3ArUNlMYfH + wQh+BK6szneWYh2MdFWuVLIsAJtEsSBcoqT48/o6WVf9TO9mU7QulmIDriX6NU0xcmnlG9FOjMvb + 4dmXCSN70MV8zZeSC/13mtVxthDQeLbIMT8pq42pjPoZR3GrJ57HcJWE3l1xIvHF3xL4T7a6ShY6 + oX0hBETMFqiGDYSOZw7WBNEyB9wIkw5XOnI8w4YY+9uQuTTRwcNa/QqyVxuaV2K6LqfkshnuwPka + 4CnR4RceeTZxovC8N8xnjQtsyfXARRQSRfPy25A6WPTtzWoUSXzsyrrfi3lHNccjLG6IbWd+6+f0 + VLXEcxzp5uJeh+I39Lqlm0tQrrm58KmM6jr+o+7m4tWoLu/Zk8D14J4dBW7gRPLSvqi6ViseXOK3 + 55MvDbEoh+EaljFMLN28RkhKEJriZLkEdRhGoef2G82xuwPTO68Q0stBZiBGbuW7iq6GRJQzUIZD + QRZYZkdSm/5Khn+MOhCIJoJJPR9iR2tiduhs2SxFFQhQ9NDLo6S6UhWKyXU6+bLMYJ8LIyN+TD7A + DaZ9LNyVgWn7x2M0sZU7i++wjsew5eZiFelSaFrvDsz8jor13D2OykML92iaqJ8j2Y4FZACa32TT + zXwbnbuuo/ewwkc8hyk9NwyDp4jN0EHNpSa2Wq7swFBy6Rndr6vlnMuAzsC5GK5mlxmVblRr/5bH + g/a/iOYie5iFGkywFiK7v1XOitodA/7tRAjtq/o1NKIdJue6o+DIeUBIerJPeAc+9yotLZ3Kf9x7 + QVzHp+9CmjQlajvskQwXUmpdqcMJXMnr2Xojqza2T0QHOIb9O9l6hrk0gfqu0wWFEF+3NIEKyjUT + KD6ls3t0Vq/G7Ag1qorP78WIoDOCn2HoS+n4ZIZwP3CtLxBtbuT/9tv4jI3OvPEaRpUUoEAlCYWQ + Jh4dnXlH5uPHJqod2vzRnQUXOMzv5Sx/5P821uVHb+ePh2YfIMvVw2WOlljhmWR0+L13Gb1/7HHz + Q+EzzakUxsEkv70Ryw7X4uMW6d+J6uFmpjDNWehFgbvHAJqhE8M4aAm7CgOPByysaAMlIUu5LivL + EDO2zbSjPmDwU+zCAZ40bSyPSUnAL6wInBZu3B8Iit6rV86NQlWauCNs2A7kQQJuPOAo2U3d4UCC + cGYsR9op5LrfFME+YdMKqj2BHboBeeRPRCjluGAEN9kiK46+TT/1BCvPcTWAP3/pPmVdS9TJRtYA + /qoTE8BfPpXC9pUCtCiSxoA1vRprPU7p7oNdLwzPEbp/JfH7WRhQPEwXm+4Oy4LXIDoX3beiAm03 + bXI3qA6vqEXYbffASpFgd5dlMn9cWYL7tJ/spbQIOMkoZA1rkHZGHlNn1pPV1rkXdKm2jq9bVlsX + lGvV1vGprLZ+8V9VfyKLw2rRK+/ZkxCL6EWjkHH4bVe1daD/d6m27vmO9HT3kXHLIwrwI1tvqa7n + fg4Nn+6E42PMeu94JxSN7O6EUielO6F4Svttc7lkUiPbXM7+dzNbw7cdgxCxupnhmarffoMd731C + igNBF+4GN4o9CW/kM3FYdfMSaKZW4pP9AhEPkWG7mFcE0+Hc/I7h+ho2rorDeABl0WgeJhgajgC7 + hCp/INm+AoQ9Rxc2cl+zp6yL8VE1sZWJZAeGRETPaMMLMMjPcIjhwlDlehtxLF/nKza4xv8gXhf3 + BZrt/WC3KkbkBhTrvQWJdmePs0WLd6tNRGsSR5wwLk4MrM/kGt5M8BjgQywHZoFy34Nd9E6kojsG + wZV4tH3lEfwi0Lbt5WQeKOrsPUDEeg6FuP5xDlvNXhSl161EUUm5IorSUxINPp6/M+27Hg/9OMIA + 3nLwg/vsie/FTuyMQOJyHOnNWTeXgCOJ9OPq5g7xN1q6bjY9stBvM7M6UQAaQTUSgahn06L0gRnZ + 4Di76A2aBzga+mNVs06GcYEaKSoCA3eeTTcICTRUmARD3xMXAJDKRXTCDbA5Ubn6OsF4heEK419R + OBHpjbDqs7mKiYIzAhx7Q4UTn4tQ0HH6vUghIvQKTQEZwipdJrPVALeEkrSF0o+fzMlmVrxmZXZU + xy5wScKeZhu4M8Y5zggwxFWafNmPHNnFDioeg6soGFltra2umcNSPbXqwam8jvYPlaIYa5TwBKff + MEcGDo8MLgH2k8B/sNqvTFaiHBEci55paHIi8l8lj8XNME2z77faw9Y9PKD/Yn+Mwrp3HOxuRGMZ + hyxW6RGchslsPvY71g+8J7Q11wloW9Ngb/xPvve401Q0rJPPYioLbRy96obwfxu7vw2BPey7K9SF + poPrYXe4XRMDZRvbsAPVhRF3IB/KOog6ppaQXlbASQYw9xlIskoqq4XfFq/WCl6oHkHjjWNG6QxB + xIr1x3Yd948fSVGbhpXcCCdPtshKPp8ttO2Tx2RpPUGr/rVddPCDswswBjaUyoFOD9gZfWr7qb0k + H+AgOfONle1uctSLHASu1SI3bsMDMs/UuaQcitNz5ob2gQT0upWgKSlXBE16qsqNv6nlUDhxZGLJ + uOGzsecxN4hH8CNi/nabZ7qCFpO/ic0zdmOyefaoXB6oDsndxSiE+9U5Zx3CVOh1q90lKVd2Fz1V + asy/amEqmNVo7q742Thmru8Eo5h5IqB/2+66WgH9ht3VV9j2Q9pdrudRaF1P4WxdYwZ6i6ztC0xs + a7nY3SdCB18C633KOhU50G1s5SDVhSEHyYe0w+cZfKhSDLdmsBiloKGv77OF0QemGcY+1XAJHZIs + JQmzWLEiuD1Px6pqHfOchtSbHO5GXBdUJHVh0psEZnmRwgy1Rgr2Z/3rIVymkIe6llr3A2Ob9ysu + MIo7fPcWFvl4fGTN0lUDK6auqVfYunouU7DPXwUmfKzLeCwgcsv2KYSP9V0W8BH84CFv4eylbI7L + WwXweft0OLxI0+HL0xcXw7fpGuYwH/5/8EXOv4deFD5z2dgNnqpb4WYOw5uMk21QbxV7Eaad/cR3 + QxhwNrgf5IhticAgFpKY8dZxWQcxQ7xuJ2YQ5aqYIZ7KTLGzt9w7qgkanhPWBA3PDb3QGcGPWKUC + n9fD211HpYFSGPWjwLl4XA+mHg0XabICBle4qEGnOV/Oufdi2QIFt0rWQxhtPaj++RBmdghbAUnB + YwE1V4p9v9yshaHxEm2S/7uZidWBdxbZ6kYFYChc6kSXBBeDqZ+K3XHiEvHgdPMFViMxMQ/8yOMt + QaOx78e4+ysH57zk2ChTAlnfbTmDgeuGoEdUKVkEc5sduL7NUGvpdNsAz2sfP/g199CADlYR/hrH + 1nkeO4y8jRTa3Zf3KAPvCJO6vzSNnc7cnjMyuLbztgrXTXdI71kW+xHeVffaYxRg9o+3oNPYe/Xo + dat7SlKu3FP0lO6p/3N8HlVvKc5jE3Pf48+eMDghPBzBDx1g9kmEvCyyudg8wvOfjielGjNq50TD + R9Dmy0mimMJjeRX8n8kqql0EGJQwE5USbiXGl9o6bzDSftslEPpb3G2hG/k13r1R3zBu+YYWPyGv + JkWojiI39uoVLJJ0lV0K6yd9W1Xwi53AHHmRnNBM0FRx1KYtpPtR8WXInouPG07Mq4NxvqNjjXEb + 4Qbf7Fp0uVglvNtkWJjX5P1jDr8CR1z/GtoHz0EbmQERPKqJwKdFUkIrLxAwl3Dmng/T7yL7GqcZ + BqDQMIQsf3T5WSJdHC/htwGeAG3cCB0+kLNSVyS7zXKNs7Qizx7mFxB7B5s07THbQSCYsSDSNved + rP4/GrXVra9dZYt1JhnUSdb5VFeqFB2/i2qZ+9nM4iGArsjY8HV7ttjRjHw4/eoOVnepr7OYmfsU + 7slOWcyiiXUWM3VgZjGLZ3QvXpeNCSqSsGRRWV4nizIhNJWFvq8Que4zal5NXlBEInOnY63VopF9 + JLLspBKJTE9lxJARyzVDbO+kKayrOUTz48s3b17qk5PMYcq1NPLx8xUbrPE/6J3lscxVcf2GaLWO + OoRLqI1bojJH6E4vhTp37SAI64MsT07XKFP73Pfeu+45dPuwFBcJYWGxmQ6wE3e13TqcnN83yRUG + +mxu9g9E7Ceekyt17O7iLvtDar2/auM9YIJwgnXGiC7s4+A5tjbgU2Dp+7cuj+1NpfS6lQoqKVdU + UHpKKujZ6b+CGmaig+JoWQVF4IDY99iIc1G2WphJywajJYi/3wU6buHlIS3zLP0e1LTM0uumChma + 3tmLcs2PiDtxVYOERW/TE1kQRW3UYJszHlZLrJVGZQ9bWK+1Njg6OhoTrQXBBII4Av+czmBDzf5K + JVhg+S2YJKkWLZMVHLvZUsSdahgsBK0SVcU+F4MUG0rk2sHf0yXuSCDjL2kLCsjC0qtFxEpGqIS3 + ueCDA9wAGg6Qh65w5ck40FWKpTgoL0GAZyVXjadrKyQgwVK1zW3Hk+oHBiDT7EYoSdBvVu7hJsEz + MSomppjBnWwfevAM+f1z8UVWNyFZ9GBqMZCva+tD5c+Q7pnSXFj2u7vdro4jg0B5y92hDN2D1vXg + YhoOvc1k0F6VNdpaI1jIKDlQ42Ok4zXCozajGHRJx4gj4/QabFGy2q6jPYzolvxQFuncOPbKf8q8 + bslx1MY6O052YabH0UO6p68mX6XhVyAG1sONyyEhV/NbUTZhmk6S1WX2nZBSPiolbIDERPocXOoy + H5RsLKrhvrmfagvFXuCV6ZUGIl7Dwk66L1XQqa1+jlX0yeGc85cot6BpxGSWrE3y/oqUyLeVAL8t + e7CP2gv79rDd8uVRLLQghaR7Gm1HuveEKchUGDEIcvaeLXrdMoxYUK6FEeNTqVacn/E6IFnkO9U4 + 4icsjCLPGbGICyhfoVkYRhq6x36HH6WHqKJdpyic5qkSk09Oj16PgcnIqjQjPKXZZCYkaSFxS9/7 + TAF3Swju4WUKKkwq/pynkwwr2Gn9F1jSEsVuXZVPajWrZUPZaiqKRy7IpvKLfhC1VWaOvTCIYt6g + 37R9dQtgmNNa4LG5B7g2xjdG3cGqemv43rjXWpWxTF/rVJ845byXp2Y6UyqiWTgjrqtSek077on6 + 4jcsfN5p5Z8PdTOzXzF7q5TycLTyVf5gVOw2i28gzuVilNMNbo00H4hjokPHIybLOpIxlMwRypBZ + GliJMurecuSCbwjkgyJFTnyD1SUGsy86raxTocxbFa92Ca785qCMPyw7r0xdxbHrz4C5wxZJGZTl + edj67b2qEI5LoPNySYtBqGCcyvp2ywXsM93dJjpkB7yboxSdnRzOavN5cu4am/90apwTOVQU3Zyf + Az+uP8A2xgt7dNvNMWrcszcpSCOLmWXMdV8d7dw/PcMLcUfXL3JeeE8dt1tugWpkXcFIdWKWMJJP + SazCYKl0hYiY6sMe6beF6XEOCnb+eNDwHhWBKt56bHaKPlTXRR+q8mlyprXnV3G36k2qibXuTB2Y + qrN4VsBaC9DvbcDWbiuwtSuArd0xKcye7/6a0NZ7ZlHsrTP/B976p4G35rzIFj+Nn7KgGytTjezz + xWUnlYRxekrHeJmnm6lwyDSGdmgSWB+WUwY48CfCcNAnxAoYswhlWyaYcrIoWBzlOXw4d2KvQ8Ez + 8bpdwTOiXC14Jp5K1O/zl27NeRdUCh9iwTPf4WHsj3yYBVXG7hXIFepiOzo5G4u9oexz8n6ViNur + z+7dJe++avfggU7C24rfRFi6rRaYabLAWtaVGXwZRcEO4oNX880ky9PxKqVtgPJDy2SN1JfIIMtz + qkOTrmSN3DIc9TT9ms6z5Y08lstMWthwPbUvLuCODEPgxra93IBiMFujxoqHtkug4cHRjoEsirVr + nvdnYiEny3F+g+XD5JTqWmlNAK/dBGBf+SN3j3lHYS+CllpJHJRd5vIdoDCaLIsF2a8pCJbzdKy/ + fM9x9opco2j6DjmI8MwiTqTwc2LGSPN6tHuHfdCbgxIlzBUVgneynlwPjXTYe6LaDPrbR55JLJbh + VTa/mg2T5TJZJevuxonYNa8w5AXrmaWJB1r7tdaLdPJle/NeDRzI0cU87HJOdgj/eQiZ5NxTSY/M + 7ZT0CK/bJj0i5XrSIzyVJveT8xpyB/O4X095DGIHhAEvLNQiFflEiGZf06GBOb5Ei6kALYNpF8xD + WcGnq3p9UqsKGmdv9F0bxpEX1xIET9oSBAMzRKhkgMZUGcajWpKuLandgzLCwJAx4vZN2ozlGK3i + Wo21pbReA6LoWTY34joNgcb17aamsXzqdLUxpge2dLxz9IP/RkSSyXyDlpfiThWlUTH15CYRfyh2 + U1kKAhazEqC9V0OM2F4RvEmFWE6YQ+ksg6O3hKMnxqkHDmcSpah8+Ai2/2n+GN/+jA7P9WaRyuAp + o3rdZg7cS5KY5cDs4cvElh7g+SkyGyNGfI9Y/yK9Ssrnon2BusTgtkppP0E0tNge1EFlD9l+pueL + Iuy/15hOP5PbcAPecY8/uGCAxBz6Mbixu2j2DB7biHTYC2asYNr1CWjg9DaDOoBaW3QWUGwIlpcK + 6j4U+0LJ5ToHiEUBe+p0NRPJRtZmItWJaSaST0kkehEFXjiWMs4ZKOLjF/8XHw2n2U2CkDmqqd6Z + n85eOi6cAKm0qxvNM7vE1JXQkfA6jPw0rXVRt6TqWeoEzbbXQxQKbcPSAPAx5/Bpncz01MTWTC87 + MMz09IyWBxHQsyIFrRzOll8XmZDTVLiu4MquEEbrvO8T2GPEfL2j77eEQdckk94SLnwvEgG4ezI9 + L6biweYi7Bd+xENVuSXsgDNHr9tWbgnrOHP0lA7+u/OztwLOpVK7xQurtVvGIYyXRaPQ84TEtKN2 + S9iENPcL4RiqbHOQhj5+OD/mo2EB9TnWITVT7QIRor7K8M6VxQV3/xfYInifTG8RR3OSq0JMZOz8 + C2hcrbJvCG6NUTeYXPANLX4EBgp77rnW02UAz8X8RuZIwG98OVK4UBkczrPXkqWPJ9liDT+xJ/EB + 6AhCMF1R009aD1BUfTFbB2w5ePHmYxF/44VeD+Vq1CmgILwPbxnjHdwD4nU79wBRrroHxFN5Ci5e + eDX3gBc4NfcA4ko48YgB44xC7R6AXsZSUhELJyejxb4tdoJYLRjrDSwxPIMNfJFOPFgraXVLc5V/ + oq3YIrmGzFijBmibd/klOh9u4Af+x5MAybpqO3DOTQ5kp+nnFDsXuWYTxLmViTu0Jc2cE3GcgbJX + O8vKoGact7i9/CdMXAwCQ62MKMigsyXCJRQfahw95rZBWJgkS4hJyaVhNWs1Ozi+E7diXDqxG0Zh + tYYnzdFnmHZySZQny8x2Ym3gSXrYg1945wzwRGkHjRfygZyUwtrcPIm/26D3cJe5dZW9uu721/FA + bjR6Xe3Huh/JUid9AGBLMWH5G5/wQC3o7XKlQ+jx7We54xc5FHO5nT/Yfd5+pLbJgi5hDr8+h51o + fwvS61a3oKRcuQXpKd2CHy5eVyVBzkQYXPkWdMQt6Hh4C4ZuIJEp34HokwobeAKH8TsmqKyyufab + K8YmGZkQU/L0a7oQMhPiU8IfjaE9V++qF0SFkOxrupqDDgc0RwKGYzFFTV0xf+JNoutyjWUhOGVz + 4QT+mqK2Ciw1W8EfdMsK9NvXmbLi0xX4Ib8O706c1fPVaH2PmIkZWHK/gwTjRm5cTc8VxETEahsS + XxCbF7VZaFqTHfyqyzrAva5rwsDp66HyAbSn0mpzuED29kM7Kisx/Z4J9aDJUrKtlExErAmLGezT + PpJRpGoP7WsZUAqzH7NI05tvm5X2QbGAyVxhcw90KxmupAdHOuVRC1qnC+HYwLQB1KxUgEkXgp7v + kmkCNTsx7yJ8AASrr8lkg+WItnx0ixv9bjOja5ncXlxeo0mygutj20XWMBnqGmOqAljQQZmj120r + gAV1ZY6eSuj8l0e1hCoeM79eAAykFCca+YHD0USI1xhiqJzKkBoNM1p2xe0yyJeQZmTVsM9JPf2p + Fb/ltCUbKmxzMMZh6LkRq94o+wJ0GE5Z7rfmYJV7LYqMbcXc2e6QDVodso4beTwK/j3ocW0GuEeK + kmCh8zeGVrrz7nZh0x4IiNTgNWo8UHdJePsn/iSYRn2g++zEknW58qMwduo+dToVky4a2fpSdCeG + N0U9JZ5/zJWXS/+m4fAMGtz3eBxEZPl0pIZ7KS/LPF2u7atFdQfu8BmniFIhp+xUxJXfynUVZB6I + BR2nW7exBcxTXRh4efIh3c3/O1mF5brdW6AV1fFS+QnBYI8m2J9wQnpYbMi5I8hU+/SVu+h9hzZx + WDW30AkkwNE2vM9y8ut+U/O3R3btAHrxdwKO7VIj7weiydrjYNwRcq1i954MLTnjwXHcNZlSN7IM + LSk6KYeW6KeqZiU6NykythKuMMNzPsvMaj+VGpVFH3D9ItyaLFJJsSR1CodwZ3kt67iofspUBibR + a1jpDMSijoaZHutdHiS6HBSKc5dVMrsKSDgelyAMzF3Ud8lK/fUuLaC5vXb2tlukFuFkfx69dVgH + zwG9bmVykZQrJhd6SmLdxX8dm+l1LnoGArSzlYNI3GdPmMu5442Y6zmRCjcrnJ7KfK4MGaM6JP/F + txVbmlEVMJ/ZCmZOBFa8Xv8Ffxc4h4KromP1uVmzpcjAAZpUF3hVDtmAYwF7FgFNbrJsfd1SF5ZG + muTDLwmwtvk8UYWDLr5N6lmAF/91zhptO3gjtMTWM8w/CJyo5jO3Shy4v5pcp+cdUEC5WTms5HSA + 4xs5ftXjrhcRpv4mm6bzqnskcN2o9cMDz49qhYq6k0T3SMO6DDpu3dIeUHUn0u8IvXAFG/d6lq/h + 9eFXhN+BRq/50X8PH4nt/FhsWz3s8WW2wepGsgG8eE8bfIDnXAcBIRuRkyXYbtOsWl0L3Shs8338 + DBY8PAJC0Wmc9O2Qr1tCnSszCPNX4Ht0GmAP+QquJwFm5A5Vm7xOoSksbCC5Ir6N3L7dgrdXSsAd + oLJ31ze1eSZQhSmDDnWs6XXbopRBvY41PVUFKf/p1dLhXB/Nn5WClMwFtueOmOdw5pl3t4o9muJm + Of5w9ubNeJIJXiPzc/OR4Eqqyg4up/AWn66+eoh6Xbbji8o7GlR4IzAFQOi5SvVJJIFX3LZIoJ5a + 1zSEMot3HdZ+azAGUm5Yv3bLYivJv3qUJumwrTKfFelmxtDWVWDV1Z1c+noaWmEDojbJRg1u8AM3 + 0HMRCqdqpmK/15ubZAFf9urNMR8+Ovv4L/ZYW4LFMVF3H7p8+4kYoFj08mR2SWjfkqnbX/5+X4n2 + MsouLtTHvc1VhCXafFA609pyG+89wB5y2Pe1aJWas6qyvR8pZJZedZsWq6/Yq81NK5hjdVS7NkML + naBKp+saNtF1GQvoU8c0LAP/FDlPslqLWNSuhkZ141POx9k5nFD7G59et7rxJeXKjU9PVdHfI4YW + IPPK90WV6fKVHz0b+7HDw2jkx0zspm05H8sV9PBr53zoCtIBZ+ROOiTYV7qG+wKa7Cers68cR1eD + wnP3tdet0JluY+vlVV0YTl75kLb8ZHopJdbJRgD2oQZXiWL8f//fQfsfh8dAYYBkhB06YqGEg3ci + fclmCvuly7LFMdlEyxhB95KAd5jK0zl97+AYiIiT1VpszHmWfs+WKajj0wOcJbHOw/Ve+h3LyRWN + rPNwVSdmHq58Svs0maaRLF4AbOd2nuWbyWS2wLtnfouEmh8Pj6Ad/i0Szu44ksUKGGVALzGhLDUx + aWRk8HpbEGUHv/ZhHW0XkhmJaL8BuUX2NfsNrYZ9f0EsE2HlFxRQhod+xU+YIes5FLLbstd6qV2w + Zw876rnQjO1FRPIEj9Iw3rx1Ys9ePKPXrcQzSbkintFT4gFv/7xg9QBWkXFSls7YszGLAp95IxaF + AX65KOoJ6ux4hpZekcppZoGPMIr//dHJeD5bfIHZqIShLP6CoZuWZNSkP2ebFcb1I0K6VK6NxALQ + qfHiW6QYjSnN2tVh4GvfgVfLQP1ylRNS+UXty/GXdJ0lU1HT66mUK9/e5qweQFsEN5tV0dz2fD4n + DAPm1ywvptGuQi1uNa7EzONhUJVR8bPbJr8xyNZD+KTWyNeQebFTRW6kuW7P7YidqJZ6OHj9q2yL + gTgdOnTX9YM+YAy0jBEQHVFTRQnjB19gsfTcV1dub4q+z5hg9XLyBKxJN5THHxgn1XPJ0J4gGTS1 + gAwALdRGlL16hXm3uOWPX48/vMYE/Y0ogTHNFtkqH+FpwksQfpyhBw1uESqv19Xu4pHImyyuEpin + 9AfqdYoO3JHk27FidTab6VCSW69zpkV8HsVPmd9Nwqc21gK+7MKU7+mhRA9ElFyNFV+pQ9b4hzJd + BI+HHUHhxzJkb5It/mdz1cXNR7ANZHZIv5fNFqv0qkrm8nYIOnFCW3ef9KKSmlsE5+Sb1WfoVojE + 2WK8u2JFW+sOdjePS8GO+bF9lAy9binYCco1wQ6fSpCl93XcSe64vCrXPfFYxP2R58e+zK59ma3g + RhpJXz6GudANXHLzw92dJqtKbn1uJshQihvdOClCC8CVDNzpcjMVjADjNpChU+kc4A5zlOQxF556 + oTtcCgL1ERR4JSW4W3TbSPEItPbbUnKn8N68eP+GSUHvxaIBIhNBSoRfY446GYzxUZ4u8s3QWL7H + FcSISrqsgRjhc8xqqohtBgxLFcrEsFI6MW+T1rgHQmEU3QFgRAvl7yidqbUzaDHutAXZGDPQCG+Z + 5Te0Awjo3fDoxaFTiYupER780nt1gGdYS58eF9iXOC3IjbbM4u82dXn6wscQG0AQEltkBx76TnIs + cDwTTaIU2bR3hWIXbYLF1xZHMKti0HSiyqNIrkU5fGdpepkto2sGcpGNb9dAFjXWtHUuqbZFGBdf + /ANL5yIb06alNr5ntTXgYhWGnPPrTAFh7OUu8KhExD/egqpkfzvT61a3s6RcuZ3pqYyD+dcHPMaV + 69kNK3nD/NkTHvLQc0fwn0DFwRxXY/1E9n6+rob7gcJrKNJFkn8NxQum1F2qIJfvWejULkfFupbq + Vny5WVzNHpsRIl7YGudi3AUlumrslVu17X4C7geMq6FcYvs9iru4dVQcGGEtt1g6nevx4m2xJ62Q + zMZwi5hQWIUvs3rAqhOzjndpCofkcj7Lr1XRChNYwEKA4VG3sQvabZIA6zZ65cyfZpMvSE1i0ZXA + KEyBoL2IZuNQFXkZlFOhFeygVQbdazhkw0cX6cRdjhAQy6cfAf2I6Adz5E/8K52pkZAk4PfIWz5W + p5QUmFyiXGGmkgpCEjYpATciblJh5Sqf4RIIHw4FBZlip2LhJbIdmMPHGs9nbx55I//xGVfnZSD4 + kRI13IBEDdyOinOr7WolEvQQqbQTleSOYU2EDGLBB+zmIyak5d373ZZcUCYn97ettCbsV5czOsgH + y2uHRn5JucfXy5V33S07W28tMdELeNnh8GP9lMsgM83yOsuX10B7egvKD4KqZ/MxHPjx5SxXf9si + OpUtKkpiUpl+x8EL9pR1SuzWbWwtW6oLw7IlH5IAdHH06kjHe8MGXd/OyxnZhkkLX62mal9sclYz + fKlusTiZ60if9s8Q4x94xA5Eed/0uzh7olWrB9g+z9WnALrKXNdmoWa5u2NM/50fIKtEiCEYW2Dv + udgX/l+dIA3D7mF1zo4nSLaxPUGqC+MEyYekfywmibT2GWYQ1DKzuajIYbjlDEfb0XoZEOIv/BYt + jYNkNlPc7D32Vn4NuxcW5iAU0OBYt4vpPWzhWLPaAAe5nDxWaQrks836sLR6vRs0wLv3Kn7KWDdc + EtnGNmBNdWEErMmHMmDt5lLFW757NbzMvg9IHlmk45sZCD5YoKsaosYG2Irw3WPJLTlluJ6IwuvL + ZLYDkee+OGRvNSb35gIlf0bn5B2nF0yfIBLDniY3yRUFHXYTAML/mwujyelbJwzsY1XodSujiaRc + MZrQ06qlxAl9s5qmGz4bw6kCIYcpK0lb6HA6B4q/dujwa1WOHJ5kU7qfUQf88zdVmUnkY24u1+k8 + g/tWhLCjOy4fwVV/dT2/Vbu/lOIi7JX5cJ6Q7oLPZHMle9GsfXx7zJ4Dp1kTFCYiZQqZEzRbirSA + wRxPJzxais35k4wVLWbTzUSOb5UmFJcvtO9oDBv7Ovt+u8wz4PcpJSV/+ufRcLZaJdNZcRJ/ko/9 + z1j/M9afaayDP89fMiwoBEMWv/LiV7f41St+9Ytfg+JXDdLrRA6RkP+M4/I/eey7pX+6Po9K/wRR + v/LPuPRPeLfcNuCORxEWlNohJyI18GLRZAc3MshuGLfaKDE0GLN2SSuN0Rb7SCf9VSHtLz8FSEVK + YrpWm7gb7Lrnyrzy3c13ONFIDT3qXMRUUYDNGEgKJRH4wHGxICQbqYh7mh8Q9RSpguthhyBmet22 + 4HpYD2Kmp6S/HJ8c81qwC0iDtYrrYy8IYJONvCD0Y0ei8F7f3qClDG1iQs8VQaqG40zmAtRCTpe3 + K1DtphhnOU3h/jcD+fPnZR1ilmsJIlkPX7HfL6RAiixsz3KthSMrYi73FZxJqTJqw7c1Vyfxwrgt + /hjUupC71YgQUx+TKt9cgUAYvhYe1KB9TVrTj+Uci5rfh7u19oMftmoDsdmKcvAOwflysoKbX3JA + FC8L/BpPvb+0kIHcEeJK2rqH7FjpfqTuITaBEZQJyu+3c2Fx+ExiyN5M1SsMxvuRUmw1lhr3C9CA + eYeCbeJ1u4JtRLlasE08Vcm7F9FRrV6bi6tZqdcWRT5noyhm3DXBOmrARISp/chzLh6LzKc8u0k0 + xjaoWchPxHqts+H5Mo+OyNZYryQEssvwIirRUFuB+Cq2TRpzOXJhW6Rx1EagfOanmy8wW4npLfcj + r9Vb7vux79dqU5fMgBMQi9ez9UbOhezZrEDlhm5r5EO5g8Idr7d/G/f0WC2KcNDb4rzovjhwCn7c + 3hjIHQ2DwN9eaIGfGEEh8Eux3CNA2psEl1BZJi8uPo1XaKgWhxgO2GSWy2MsHheWy+Ej9e5o6D+N + Lob061v58LGVIF/4eQimSJC3ccLsbLHrxngAtaUi4qf6sHRqznnAdffbT73NPeaC9har0dDNvCzt + 5M647y4WccEmsXMBGzRt/8iaQTh0ZYmSndzF6oI+hN62S8ynBMeX547b4Qqj162uMEm5coXRU3WF + veXmFcY8l0W+H5h3WPRszDl3wmgEP2Iv3G5E/ryCHn5tI7LGn2AxVzD0D1HTD7lwUZ939o2oPUpF + ZE7PWeR2cGyI1+0cG0S56tgQT2mPvjz6VFNfmYirqbg4fN91eTyCH3Eg3Rz+iDnC/ozJzWsYRyIU + +s9ZIWWna6EclT29nwUzNHMORfyR2N4vk01DdkRfe9sfY3R8w2Ant5N5Np7Prtq0VNfhYWu6BWxT + 13Wq8lHpQ1FSmAKT/SoyQLfktMLk7upk0Ou0D3ADaFEEARXkMHAnW3zBVo2wMUGqJ9p9ZnsO+rCV + gRgXUnmsyi7qeDFzyl/suFXthIieaG/laZR/9sdbJ+iQf0av2xXGIsrVwljiqURp/vgiqAW4hxGr + FcYCKSh2nZHrhF7It9+6X+bw7rce8vMNjOKHi3Xcy+0NZ2qwPy7IHvXdeqjS7buqsJvbAamUXrct + 7ObWkUrpqdy/Z8durUw3j2KnuoHHPkO+JSIPXAmMcSGTxM6wIJ+RrqG3xvBbOru6Xg+hky8niULz + Xk7cevXrk6OL101w3h5wkqrR1oCOZmEcOwGvbXOQ7aEB+uQkXjNh+ZKAj5HegmmvKsWxw/bkDhb6 + gRfUkUZVspxpQ2HtSBc76CxxPi+z6W2VYtuFHSMiN6sd0HY9x0gNMzqBPdYCMGp0og/vzWwCJwDU + y3mq0hPreZi8lSbz3bCW0VBNQtSlcLbm5LRCvqvpHpzqwqW5mfRwktwUkMiPki+JsRkfI+745v9n + 782648aRddHn/Bf5dNtazlQR4Gw/yfKkLtulI9ndu+5dvc6iMmkp2zntHGyrf/2NQAAgwSlBJmXL + tffZp8s2kwiAGAIxfrHGVIXcrtElweF+gw5h8Dpw4v1HkDFkkKfKjIM3Nyn8lswEm0BlOtuM2/R2 + k1LG+fNhMt+uTOxWtX23qIqgJ7q4TwbiGGfF9zx/IOedpJPKJWplQgZuRchJmHiDV3db/M7Q8YlA + 5Ve3JkYl9HCjtE6bEHtFtTZzXXMpkrBAtVdIw0S5jLGKZMn8EhQ2hnDhFJ7ZXFo+cx2ml2Q6Q+7e + Di8kpHC7jE3WsMd2a4MM1CR7gPva3dBHQusRAEmZwdp1Drw837yfRgdGTAJ+fuO0pmB8cyOlKggR + vHbxTeNePiwXcao5Znn3tGJCfTjDPE5BLzkr+1EinKcxOV+7p47XLsRZtrHG5JRdmJic9JDEuc1s + IUOct/Al83S8RaP4tBAKq7wEhej3wy2GV0B/gJ0IxM7Ydclg5jgVJfhu0yUe9XyIT2lm7dEQeSC2 + VdED3+5MABWvPNCDNB8+DP/oCnkefJlf/jQyYc4qcr2svqmPiGwqnd60uexs910INRoPfGkQbWU8 + oNctDaJVxgN6Sqf17OqNPyqZD5yYuUWT6FMe+54TjXgMuo7Uvl7MMmQNhSgnAnU/jCmBaXybLBbJ + +Ha+3yUL+GeWFJfD4FpOZboTvYa/wuWcs8nMEMOD8C//I4FHtile7qLt7m62mQrAuq2KfCwGouCz + ZHM7W2IoyhpWdr/ZwqZbbUAAv4Nnz6uLEJxtbrnK1Ye/w0SVNEZzr8PYcTFM44hfq4RFPou9UihR + q7mrijBy43qonOoum6e/SD1mNtQzRBs18fWec5/X5YgzYLqu6xZVPr1yTUTrQX3kOLV3nuqNbTUw + TRZCa7BD0IPuZ+m8frvCbmyxeiovXe1s0SOXu9rN7+nKKXwuT9xWbN7KvTug450F24aEbONLIJkM + D/FYiEVcQkGyNNIjEIJtaVokPvkEjVKxb1rTetSolCANkpbclAVaolhT8ak/QMrjQhN+duFfv0gj + Y/UHlZHe4JuRq2OTTteDnXzTaw8HPobAPQ9dPJbj7kisedk9KuLT0TsmLSNHjaF3DFRi+5YYqMlc + QHUK8Xz1ffVAaKh9BHIq3hfEVEFIqYrTWc6g1Y0mlp8VzAs/tpuQT7XgXl7Bt9p7WOh1KyFfUi4I + +fSUhPwPH9+Woh4cjkgpeRE/eDb2fIezcOT5XHsIP6T7nSjEs0nvkrmQWqZYmmeKgrh4ttqmhUKV + aGherHarOawmil4C1Q/Oq6q3s0HxZSd+Qkw9fD3LGKYsYYwOxyY3aUPelBDMP+zuKkIoenNUKpx+ + 0w1ieoPysaOuE4HKWhKwEfB6RLDXeiZr8gN8vzYwNU+8EuWxEt3Rd1rR06sq7iyUcIrTGNejcEmK + g8e7bQZ4GpREzEGjHdAnMWJC6tuPle5wkkyKajYfmKINqpFfArZsA2h5rABsKRN29JK3LXBzANyx + t+obPkEvHOAED0X08Kr6vkNTk8wnRyK3H5vvlhGKo2pCeVlFgGxv7+fDG5DNbfegupxDZTv3o7ht + OStqYms5lx0YhnN6JrEmr87efby6+APEK7RXD7bpBJSvLJ76M3wxFoEGdXF+n6fIfY9zFg3I3+rp + slPDbxiA3Qy6ao1P5MekCUquOp+tZ42lIm3t1YdOsz1o0M+rehD53M/mhtDAJjhHCr+ujGaXbvqo + txNJA0kVDFlffamDonNP28SX/2EfX/5HZXz5H7n48rfvrytST52glHrqRjEMeeTGzAkVkCt/y0UJ + vfFn4BrpRqsIwlZmZrTAN43plBXBs8QJBAlj9RWGmKUuTlY4pVtgU+t0o/CdV/stakzfgDzKMdv9 + mrLzyXy93qb76QoaAKvWkNB0RqfpZ9yhoGclsFvX85Wwzq0Z/oeLYgr/ub9F6ss9HG9puSFR+O1i + +4DRxFWTUWMiDgsRPNeZgMhCxkrFb4zpkLNWADw1IwMzhHJQ+bjP+b8GL5ItnEzM1f4+nq9W67H4 + 6/DJzdt3b0/+Yus9wLOgM2N9P/plIPRCCRVXteIlSvUpWt3MnN1TdpsqfR7nnsRUp6i8bPK7Vk28 + u1GwEUUQ//xw5YQtkLfpdSt+LSkX+DU9lVgBf1yzEvK25zmFCvTBs6dhCOqXOwoj5rihmdQKi6q4 + leJEI4ELBzxcHBl5cjGoA3UZLPQ5gn/t0qWBloKoJmOFrSKZgUrCOF9tWRmGu70Jwagelgferixg + bFKNamvLN0ZQJ5vKCvK4oWuRuGuKnPUVSo1fWwkqDbdyHWg1c8ModtzMIXdg2UXA5KdLN3JwkY/Z + AgOxSzUrdSUrjcjTn/+Wg04TyUgyNAFYnHT5Fbpf28ZrdVWKWxVOryDxCIqSK8DGgBIZL985cWjP + uOh1u0LaRLlYSFs8Jcb1/vrPkqDps8ApltF+6gZe7IUjNwg8LktBfbzfoC463mGWXJacJDnN++19 + WUCzL1WYM7S5LgOpJyrJaNg9okmK/hsSvBwvKmN9VNHOzIL5LxM+y2SiEGrNNHiTQ1YQHrw3XGm7 + 6jkb4Dro0twOo5PZOdFaizgeFSmt+g60Qhrw2h17oGPcNGMPQrHZlPXLu2FraFiYtlp5cBvA03tK + yvUilnn+cQWrj2tbogSM08wCHoimjXnxUSQc9hx7G2SFCP1z79RphS+cNbIuRag6MWsRyqd0e60m + iQSG0dLQMBUQKysZVSICbz9eXmHEaZrs9AT8AS0H2FxUG49CrkyKR6Vd+MzzKnTKRToT42kiW1m5 + SdYAuEk2MEWw0dL1zlLK6ZiYdywOcd8Oi8Nh8y6nIXfDzBh0Dn5Qh4LToTg/Z+wVc06dqMWhyBrZ + HYpcJ7lDkT1VQelfWAUKO2aDJFhtaTubg7CC9Vn033IB518w4PwLE8fC8R1ZqZPQECpxJA/u5Mze + QoW2KkaCMGiauBWL/TUMQD6dXxFEYpZAsZuyiDnG5m4u/lZvQnJhowYNcy/+sRuKX27HYgQTzALc + 7ezX18UEuIY+JimWAVArbEkyjgRHgC0Ag0lm88wSsPqq9kMLQxqT+PuSH+stN5nvt/B25emvixdk + PqW1LUVOXakWhSpu8dYd/+5JKLiadWvooanaRb6HuF0PdKhjJ6++Z8tmJ+P88PvFc0EDxSbIpMav + 3OH+Zvbf+xmOWIpJ1llT/WLCHjaK2nv2ekhzDyjN/e0ViPD27it63cqqICkXrAr0NINOdUvYM3HR + rOA8G4Oyx0Jn5InLRqa5m8nCyTJZI6TjmAq34GzIdf5NYFqIBMcnZ5fnv52f5GoUJtn2GGv2Sduk + gOeJkTr6UKneYF7vZjeznQj+my2BQYh1UDms2PMM8ahlsS0RPw/zJNr+pomIu2RG20XDsrrlKoi1 + n1gwdEZ10U1wTwTCsHpEBUMLcrVTWmN28WqzEowOciUMcVrrYrEix68r1VdDTy1X89KYyfNxnano + QB8Yr5VmbHRq5FubwBqh3TLWJujDtbWsJMxbzne2npmIowXp6kUIfHZwgopFDs/U/r7U+/tcHuHz + X+cIC4xeV2f9c+CactKVvaVmjazuU9wVBp2m7WQnIsNK4Zs2i9w1Tq8HnIIjoAXEac1P2gEWbBXw + 58iqPiYrahd2yAKfPkvNs16D9lgQriOrWBUhDiw/uYV7lsmah/X3UXELJYR3eeQWqwK0+lljaViJ + xwoBcaTVJqBy4w1CiKVs355O7Uyh6GDyrjqBw05ZOSa/pa8ymrVE6sevJHpPGZm49wItPX4rI5Nq + ZGtk0p0YRib1lCT83WwhYzk/XryHG3C2XOaL2KmvnC1EyKTcAIOP0GoM/2FOqXom/jRAqsLyxLgs + /hbIqD/lqNIFiNHreoSH5chiwkcXqNUmCYc8PYUJgw20KrhwCjPcWcfsscumLwt8iVJhAj0b81Vd + +bivOKaHc855boHGkXOFTruoiiRwEU1xu06OgvToYl0/MlbC4yGrcEZWfVfpHKHse2x11Yfqvz46 + mpMQj9G33ZMKnMgPjLui31BqL4hCndMy7zBMdSvp4rMMpPhTx23nDqQ21t5A2YXpDKSHdA+9+Xhp + CAZPLq6vi6VjZU1z+apyD37+z4r8HZEfSzegUwR3QaG7l+wCVDAq2EdWbb1bbkEfXO0hatMeR/5Q + INbPjuMShoC+0MtjChoo7uMj5lzmarzpHobQUzWvgPKC37xjXgs0dHrdyiQtKRdM0vRUBrpdvS6j + ofPYN/OC42dj7nohd0bc9eNA+lHNEC4ED1yna7HU8BkzDGCepzg5Mk9Axr9tPh8T/5YPGfVCxHAp + RcW2IJar6cUD3/V4ZcLDXOFeGJ9Tk/bgFSNcR7nUB2PI3cvKWFHNDR1PMVztysxSIO1bkC6G69VO + iwnBvt2t1iAvTMVrk9XtkswvooyMODv3OXQm2jwqEgoz+ZQNclHX+XNR2BIJiH08SfaYbVEJADdb + gvp4M5vj3YAvK4MlQmX2FlV4mEJtFIBHenD9qrUeTFt6lcHMf9GAwcNfjie5uJp1HKDljXYM5br9 + 04cxhgWMzNYWIxvJY71dp5PZZ/jOdhdfpCw3HgtPWauQOd3G1m6jujDMNvIhXWQiCDMPPvJkDZ8x + m+zS6clAg8mM2XibLmYaE4WP2Fi0xDXZpo1E8uMQhhxgOoLrhCEZHVYbWJhN/hJoxH96KCxIoa15 + kat3AX7VMbUdGGl+WAZyuvqOYoJGEOoke3mcUxkn22XpIfE1iJVGx1+irc9rpdHJNrYanerC0Ojk + Q7lb4Qu2GN4h88D1v8/m9wzPK4JdGLS47zkeo6C1OCbB3HSbbGe3S3W11qJ7WW26o4IzHwwRok0O + +Q8P1kSAIQpDQwfKbrY+fEZbITXY7vPQoSqYCCwQh+GpE7fDEZZtbNEQVBcGHIJ8SDsdxMNVhjZA + PHW/E2FlJ4PiD5rZilmt/XVg9AJvCouJ60WnzJkIPOHIpSrlfuTw0KUI6L4A/2I3zuEESAyFI73N + oLKTV6gXal4AIj8xWFjrzarFSLOaiLRFKZgs/Z43dFPF+ppmmTBj2bQHJ+DDZNN14gNOzMkRCvrn + bTKXAacaxqM7U4tVLuN3EPmW4hUq4SA+Lqm275ir6UngOPNc9WCNaUu4OVlFVtEsM46fXLc9ZIqx + svBNcOqE7TiramTLWnUnBm9VT2U84Yezq1cmZxRPruc7VmKYmiAizbhxSMLrcc5CaE/XXoMrrBPV + WEJbwSsCbmz4NQWVZ56OJYpYDrVmNHyzmt/O0Mj56qr7Lu7L7wkaGIHU1o/YkuCgJzbWjsQBZZyi + 1qtp9WJM79bBL2BO971IXGNwRC/RlEYom8erNiHXzir3DWuHfqXbWDurZBems4oeEk+6uUdFRkGx + KEdU9dM8ReGligRXAgWRItV0EV3QqDH5oTKMzk6P7uhSz/IIVvOqZoc7V6vkagX0DRdyaisFlNpY + K6CyC1MBpYe0Snf5ioFqOXIfA+r90iCF+qfrk8UjZBS6gskm9pGNR2qWj+AUd9T11A7w9DmN3oJS + z3jLLFPVyvqs6m7M06oey5y69VxkN+GuCJzrigr078JB7Q+itajh4kSetIfZ2NDty7X8/JLsD8Q6 + qlWOY8q3Mz+moc4xlsymaHsTNSwG7+f0H3jHmq7t8vZWIf7YIu/W+7H3yu+5mXgAAKnQzykt0Slz + WystolELpYU6KSot4ikxnMV2J9lNFU7bQOX+EQx83hj/HhoOsLXQYFjYJYO3PoUSA9sLSbyL1RT9 + Ih18d0AsFKMyv8Y+xcFlMRn+a3IwLTKNbT+8967qUl59h8zWB5I+C1NlRbtHIDl9yfeLd8B4xX7I + 7+6jQwKb0157yGD9xWEVhAnMo8jd+mXIs9nlajk+HIHfjmabWMleQi57rMyApMI6UiP9VMR7IB4O + 1ZrYSoz3HagUhJUzzv/YagR9BXiGgZLFPdB920riso2tHK66MKRw+VCWWCwoXpXaWZ4U+jgcqlPO + Au6aF+AkWa+t8v3p+oyYvvWE3DIaaqy9Wnt9FSvoRqnxBDjSdKU4Wv4T26bw/HjmFlBOfy4Rqi13 + JBniazLZrw7VWv0Zuf8PnlrkuRIIvVirMdtXjQMsbnh1+jVcPPPOvZbGmKyRtVCsOjGFYvlU1mfZ + T4GENI9pT8Wg5rFBFXkBiMMUGcByO3YlXETTWRauYeFXtIxK6cEqTaeDbPfAsZJNsrM8mI/AFDRo + 6Viy9kL05q2KZFyyE/tt4pLxdcu4ZEG5FJeMT0nR+8flNYrQhcBk13NLgckuj6LQH7muEyDUUwE5 + GANLr9MJW6uDgIDcy53ILYDpJPaY8zptVxvMoyuXpdEgtEj1Bm7Y4WW6Znw9pPqj6RDuGCQPuxrZ + 9W8YhSM3KPnVPs6xkuipDIP+x3rr+aU4aHq/Es7XYbWxy2HIQZEtgw7b1C3KkYkD7rGIl7GLv8NK + LhFZPb/Vc0RZHMWRzdiyuGrYT+t0QxJvZRi1CWlhAAV7sOKKoo521m48deFlDrMCAnFQQ9gYaVZl + dLtY5bS4/FfDR9ehnDJUAf2gSKxonkIsqcXN/L4QkR2wdt+uPtnIxMFtmfN8mGAerlvTQxz4IDdx + A4VZH6Hf3sP6jVkkj9Kon7PU5Rg9L3Qt04SAmnh1PIXrHUPQpRt1S5j/Isgc2I0aJy5DstkJcFTB + b3RMuBO4A7kUeTGktG62JoYeXOVxkN14ldvcfiwxoafJyRlOV5MvKAHJYPv0ez3e9QHUCdcQOZsT + w2pG9zg96ch8s+mvv+4fpF7VIUn+UGsva510T8X98Wmy4loRkmLlBXRIo/GZExFYwvLzap4DfG8v + 8sdK5OfhK37qtLSDq0a2Ir/uxBD51VOd1ak/Ix+rk3+uPrcYy6PpC+Hf9QaDn+vtemgr4OOM/e01 + SdIqpfEHJEjKAxMRgP/vV44b2wP40+tW+oOkXNAf6CnpD2/OLkt5jTzCKyGPtOc+ewqCWuj4I58F + PlMp0yAz4czkqnKvMTM+wXKVBtYo8CMhVBTCKOHqlDIjxVEuZxiKhrUoVvvNRFUCeJOsy5mQebWy + SNaU46O6IiQxi2MWeEWR+7b+q6qFcJ9HdYJoEPog/BZh03KU66TvoJhsWKQ4eOjJH+DO0GhloRf2 + E8lIyASVM/CQpGqlqMiT7rL5PVLqIiiyWJoEk8UCBpsg3xK8Qgy3DtUsq5G1TnYYbiwYnUv+6Xxg + s5Jn5nsQwG1FKfKyKu3AthUBhS32c/QcbmeixA3o8NM2+XUyVrUpYrohMoPsMk2H+xexXQ1VxIE0 + Fr66QiJSLdFbTKkWh25A5jNam+Jub1kusTmwpZ8+ao8ao5q87xCLq3PBx4bYAp87bsVZPnL46qpm + VCTsneuE9qY+et2uSBhRLhYJE08lBMH57+WijgI+0qwRNvYDzwtGfijCI/Cifjnbrk+FAUDiJI5M + U8PkbnOaB4gcDW8wGfx+LutIn8KDZAvn4OL9K5Zz+J8OMYBDkRQ/ghgk0+LwJxm7+P/ARp6AyLpI + RBMC1jtFMwS2EWWob1JFS3j+CwPK0mfhEJ2/fHVxcaFgEiZfysIBCJV79CZ/VjvEhMHltfW+QofB + PipJBFg1V9yMmHCKcsAXSvZ0a4Brg4LxLIcTwH0ee16pC63F321SOJ7L9DdVR0T1Vd1TWAA8yAE1 + eE4Y+7wgekxXODHSxzO82aTJFyxtkcw2w69wcy1XS6yiOF+JKoqwSON/r2bLIvJv4Dp1djHG3Th2 + o2LRSrURCoUq60yMHJbB6R8p9+LNxajUSx3IRF6uypVHL/YReEGdSbd6BVqWoC+M2dw/miiyNWV6 + fbJNl9v90OBQJ4WZ9+sEVjXz2q65RVh72I3lfflkugcRRR1M2JknaqsadSNWCNs/1zFOJI/kVww3 + 4kwH4QnLGjS5HxKgHG2c5ypdV9zEIGeBdJssaw+mhsp4c/372FX5v8g/dfU67rOB3CJCULCEzbW9 + jMQZwQZtD9xQHTh7M6VHwp7FxrUSwo6h1yyxx75MOCqdgDYzezAwvrYahKwMBnfRCg9Minffog3I + h4zVLV0vP86A4QUUmqMWp3g5tKZm1AcpHvZjyYeMN5Gvv+PstIXjy2RJQN6jPrOP2C8lZHJtQPVe + sJZpRlkjawOq6sQ0oMqnFoWxGn80ehAm1NCXJtTO8AU2MB3W2UIRFbp4f8Ujx16kp9etRHpJuSDS + 01NZ6OLsY1QU6d3YLdRp95+NMUyRh6PIZcJCIOq0Y1t5vVLl7C8pOgT/A4MSF+DtfA8/p9q1CSfQ + GIpysZ8nu6gkQisrc6FSrultPs9MaYy5LC5KtVpqR6AqVMsWdDpAem9VId2rteDlutXCUPG7DfHK + iesc5mEUsyAqSlY1cdSF4eO+uwQpBz6MYKtBhsh16/kgsx34hsH/ixGospKQSR+tfDgzIkVhmeLA + cKNR7QIQJpQhSRR5/prgRhQlfsUEDPegb21EmO1ntA8uCRdCFRJHLHEBNgYKnOgEeNdnHMF0luy/ + o0R0N/u8GwkGC6ci2dystHlWXuTYBrgakt4OcFcqIcuLYuEe9mNCShCtMeYGfdXHIkT8ChW8PD8k + Z1HNLiruVFtRRuynBroVu7N8AvVGPSi9NHmeKkApfl6BeOQVFZviWBgyCgPozMwshZkeQOL7CWbv + K/470rmYHIWAqGU2LrWxzsaVXZjZuPSQ7kud/YaLdvl2PJ99SQeVD/P0CBKKwG0CN6CMabEDiGu1 + 36OBSyEqnYiQMhFKd7+sfHP1IZfbctJyOI/TF923/5guIPdvY/9vY5g3Y9nbZ6PY02vFZyh76aoz + 9/N8Ktd97Eg8n0sYnGM/qrdI20ikWP7593fMi+w95fS6lawuKRdkdXpKsvrV5Rlu+oKr3GVmpK3H + nz1lmMXvjximjwTEfIp3hs7qBZqnvhTEr9aJ65UkcSF/iA0NE1WiU1noLXQNy2ou4DLiwN2V+bAo + 7osU6gIhp85UzjmCMpajYK0Uhzo6merQ9NXVakIUxzYfbeL+VojwlRI88v5S1bVB86oOxI7RsZIw + hEE/cms76A7czek3+Bcu0p4IoUYB/0FU4e7AHcfeAZ1y90MBOmd5KH5rSgIeyE1ziFxXdt6S9MEq + PlGgE2ocv2X5dN3GOp1GdmFm09BD4mhr+F6QXAhTEaVWYcrfzcjBOjB+/q38e74TzDSPY78nrCyq + WicCX7rTkI7k3Dccg95VoWSu37a8SX1p+V2slquviai3PFtS6PBkKNPnG4ZoDxbhOCScaZwxYxbu + gN2sYGt2QwmSnfi+E2Wo28eV8bGNN7FPDvrpsSMi4IMTFGF2ZDqHdXBiROi12KXPhCSGPrMeKLty + 7tUOaUncfk/GZKcxt2I3pVSkJf757oqzyN7oS69bCZKSckGQpKfS6Ht5FZSMvhxzMPNypPdsDJcd + CC4jtHtzWdz4bT5p+Y+r11Jy/HO+AfqTkuyYaVgFsa4uJhKzcThM99FinUEnE+sWK1gbZCv62XC/ + /LJcfSvEaPhmXtOHlwXhDQSe+eoWZ0E9q6SDykyBzmCgzZPciQY/T/x5IATnao6idn+kanv7LXY/ + vW5b29sv7356Srv/91fvyoVUYp+XS3szEJmDkcdCFjlmvqIRvATrv0aXPYKFyPwmdLWLfy8w1x93 + yv1znUslHCGJlhFFxtPv6ZyvkVMreJb5vQ6O1bEB6ffZbqTNbjJX6mO6YJSU9W6XYiSSDL2F+QRy + lJAvvDFrzCqB51NpeX+O3EymZmFZ72iN2gPGCexU4DOMqhzbdLOfog/gi3leYrcupikOoyD24tKB + RjoIq1YgU+umqCHTnsOwGJTksJyFub1brFZVQ6qN384PqX8WowUg2kRV3iQndmorZjMM/gmKgVA4 + XbfJwlRdndA3V49ifkYXlxeV35o5pwpCj9z+hufJ4XW2gJohFoCJ8BhtMQvVrKVeUIfzqZFyqIP/ + Kad1gCwtV9ebAotCX+O6iQUvMeqGEBfcV0oGL2y/Rk1RtYeVJeW6GmwKp0b6l+rKZtcFG+G6l5WZ + 3CaxpSQ2ZpXgnlWya1bdu96gEr1Pn27FB21b+6XWghvbNPdc1yUdjuLc4Cz8O6WFtyxmcISPSEkA + Ikfvz1dXjufYG1LpdSsJQFIuSAD0VKYcvfvgFiUAJ8L6LnnEgvDZUw46UOyNuMviSNlRpctZhF+h + N1wlrSjUjR1udu0Rf/Lh/OpkjAGR5CY1jG7PVSZvlvkC3/JVRkC/mS9dzJGRsDjPpR89/S6ETdUk + e0/vw9nk+TCZb1eaJW1lDZbZMh2rseH48UjjWmLA9FblOgG1Sim+BT4B4yA/8SjsJMPn7wfuBDyM + w8pab7ahG3X24yjAC9htpG3EPVR1gHCCbu3o87Ogbze91ir+oCC5BJFjyhvZHWwM+ccFiFR3a/am + v2q/m+m8r8JnRRUiRjZZwBjgP/8afKxdAB1QUp011nAAR2Y+Gl6/ejUNYv+9T7DunPFFKhsNmIa6 + Y53I4z2Z0h88BERsKHEX64nCAwnMxCYCpsnZj0taHnnlTmghe3icUQoaEkJ5ykhma+emgE1NEAU2 + R8TqAn08cS8PZRdo69r+aTEzVd/+EOE3fQE0wrqUh1ZxvdgJcrLCtrJg6jSI7uvQV9RN7KioGz94 + zdsWYZNtbKNuVBdG1I18KFEXl6tcQMPgkzsUTy61EPtpt+aOQYxwzluG3NhjnfcRxNPOA9uAnP4L + +V2PrtKgrfk9wpH7XiRuq05HDkZCCpW5STt8mjp7LKs+8Mo/ZV7b4gPUyL72gOykUHqAnrasQaGJ + 4fELY3ZMqP5j8KGpJeEGCK3bHoPWbQVB61Yg0Mos3GAUjqczoHJ3Px9HY9j+sHPm8/0i+Q/mwOgc + tjwOTZc2ubFg2gXj5FmPOQFG4bH7PE++9ldDVTGJzj38YAbZJ9DNQ9fZjF0vLsypXvT27NKJHWF0 + s91WfdStCwlho+oDfnrCVawLBrlvw7ayEjWx5Q6yA4M70DMpKO0R6PE7ocluZU3e/LE2q7WXC8Wo + 2LNrHuQ7RHYeSxbQc9WYiLLnciM/MqnDhcEKKb22kH1LeqDcm9Zem9zTnrnRgya7HZD1gorZ3C6w + SGaP9WW61fA8rgrPr1fTxgupMl3lOe/GCHtTGT0dWfgaeEYroH7dxjqyUHZhRhbSQ4lW8ursJfzv + 7fBm9X14lwI3wbZnHy9zNjgU19VPw7fJtqISp+wHRaAgiP5Xm3wE2mSvqfB9AvHbpF60qF51dCKH + 46jM9ro934dkJsP3LGgeAlU8Lg/fiaQv2PzeI8fVW+5JLHNPrkA+aZF7Il63yz0hysXcE/FUhwyG + pdQTr4jSyJ899WInjv0R/MRC6TK9TNdwykDOR9ite7jaZtuxkKiGM+Q1Qnp+gih1q/XdbD5bnoyE + L2d+L6Ii7tJSA+VVwDAJQRtO8Aqzgz+Md+lmMVtK4DaJ8oUQUtN9un0uc4jhp7fbdSShrEUC++xm + v6MQjAq8c5mkvt6E3RyjmQOPOTFGHpUcmm1B1nOu1hqKa4s5r+urFpzK6KsnPKE4QP9U8K/BL75L + BnhCdKpNGEtYcl8wACUZIrxxh3zN42BrBjYCcpWfbyC3g/iCNvvJ6t7vh3LzvXCMbbaXhGjEcxBX + 8bHf0gEjOz/p6iKRGTzn5wy0u5aCdtbITtLOdZITtbOndDkcMip0MUC843yw2KznHGtIulH8yErW + 9m1r6A0U/KcaCnh5KnovRPuoKu/+ehaE3qviKrYUZjgNaDMM2wI1UCN7pAbZSQGqgZ6SvHs32/rE + oGAWpsl/VvMUsf7gzoeLSlfamqYEJiNkk8v3Fy+HEewRkPtPBqVmw8pmWAjXFybSICQTqcMcMclY + aHI2RcmkzoVhAxNgS6uNrhT44qzmYPl+ipOlfVVQ0hJtF7QLBHCPnTRrlvLj5/dHaJWRMrq57Iyf + IsRIC6ObbGNrdFNdGEY3+ZDOWQKj3mIZWwmWqf792+Wf+oJnBi2RtetRfeg4JqOOGY61nd0u1ZWq + UIE7s7+OtvxKmPWfUaSln7xQTJ2loSfzycFESOu4haxwS/CanTqt4hayRta4g6oTE3dQPqX9KMK9 + 1IfRkUWTaNEpli5XoLv8f1jrdjyBPTtLdVmtf8EGwV2HvcKAGBU0d2jDBgHVYPoMm+K+DRe1F1C7 + 9tDM/ZmvLf7HoKdFAaXZz2frfgYWO5QYkgC3vZlNxOGcbY6U8vs680qL8xkT5ND9QkOjLdJS2P+5 + 8JX9Cv5+kQb0tUjE+W0h/kZ07ZJFaCeM8d2QhxwiBMxtdQeM2Tz4WRVs5A5NEdn2k3iUjcI+NtV6 + QH2Fu3oxUzt9pflgZ3knoMCeCm47LnPbPiq0xtJLJGSHMR9Tz+ers1w3Tz6cvbx8e9JN/vIdqr30 + 4p3DQ3urPr1uZdWXlAtWfXqqEKXesfhFwa7PYg9j3POpUN6zpyByulE0YgGowMxMhtb2cAV6Turx + k8C5PikryaPhkipHoj2YogKBlV6t5zASsrXeJdv8gmBeZLIbwkjLJp/nww02TEQ78dcbWUUalAlM + XZRwQ5gzst3PEbFkuJ2vvsmkytHw290MazPepRIn3WyGaVXzdHcHHSqALOyizg0Aq1xnGZCY+K8E + SnFyUnAYeHVJvLHvx5gmXIS1PayAmzZ9Mzm7roNSCQJ9LZdQbD1WGvKg9/1w9nj3w4COjk4IYty1 + NjE2G/urKRxIRf0x1r8DiSPHmNY4l9D2h4+SjeXj0djWDnj92xA+hM/lO0xm1jKnhZuYXrfMrBWU + S5m1+FRdKNdR8T7hTuyVU2vdwHXiYAR/BHF04D6hgLEnXiX/eF5kHNuo8R65jio8B4q7b6Mm5l4X + uHaAudcliP41mHvbxWlk6lWLMxCbSnPa2BEoho4XqEz2/UYbfK6vP41FJJQ4fLCVJ7OtPH7icZZ8 + NXyi3h0N/dPoekh/fScfVoDYNtVaOcD2yxjV3S+Kvw6/D01+bx0WWqHb9sbvNb2AQpNi5xorkdd/ + ZCkd8ojLotpN/iA+F9/h//e7uC7evGNRbA/FRK9bXReScuG6oKf6uuDBWQmMiRfvi/jZmHkRd90R + /OHH/Lj7olre3PKg+d7gQdPFwYPkf2+OXm+OHpdpQBtNh+cwn4rJepQZL66G9LsAfhQHp9YRdcQd + 0Fn0b0YE/594HVhhpP8VVQA7cPgeUHp8h0oTnb9z2uD00etWl4OkXLgc6CldDq///IdfMk2FhZBT + 13825q7P3RF346hgmILZU8BrikkW6o5u95uvs68wA3tgTYIFwBNh2/+dDb/M5nOshLP6joaFfE1B + XEADh1bcAq/vv/rlO0Aex+xZJRhc5IYG51RgcA+DKlf6ABOpJawtrulw1wujHLTaj5riAe4GrQP4 + gbC2hI6nkYKH35BdEBxxHehI40lEL6QmVlczu94pSqkA6fc8ByY4t7aMNKAaCtlHtWXElnjEh5zF + P9vXrDiRp2MWOXdPWZsUSd3GOmJRdmEGLNJDWY4OWO4MJnZXk/t86Pd8LxicGLGQ/MG+L5b93RiB + 6u7nyTwRBRCPrlLlUzHN3eZ+DTf7XbLsgSR5iHTxxON9wX1GFCmqsRMK/zdukUS4BDPyFGPSe/p5 + Xz3+8ATQh8m0FFFXTKK5V5yLPlKIOpF/6Ngq3/E10wq4c+r47ZgWtbFmWrILk2nRQwlamNyA6gLM + 934u/8hnrj9J5sAXlIB9YrCr7i3zIwNGF7uei4yORS6l41dV990IztfSGOZISMwbGX2zTde7vW1I + xI+JPAwoyIG+7wjQAL3rA8qrhtVR7u+GVeqKe+UyowxzX6PvDz3Bd0Q+w58X72Cj2Xs86HUrLUVS + Lmgp9JS0lOtP57yUGOdw04DlsWdPQdOL/JEbxZFEY7neT/haqg5HQlrDLmYgSJTwNk1x1FQTwsCG + WKZ/3MDcjD8jK159Bma8hKt/WptF5vlBXZVTDgzAiVmxfvx+AsJEqkEci98eR2HJsHSx/JpuMBBj + pJtTpuX9f6iIOxaifT4E/pRONikwpRHVa9/eE94jFt9Gj66BACkqYm7zEJIjwotcmuaVESrjBjnq + DwkSpGo61ao8QUQPcK9omGaPew9WmhSnS1gVCrPaQK8abLg1mVrY5iPDBtsrWT8eCqPE9n3K/Sqn + /46MjfrHWO0jDc3ZdsHxvIk78NAhtfre7tQeaJA1u+r4BOuMUBzVLRX+DVYJXtbLRHmk7a6qUNUP + 5L69QY1et60fiJTL9QPhqYS9Pn/JKuoHFot982djFvmeF44YKGbKOX8tza9ou0dz+RM2JvSmBDiy + UANPhvQgd62PCPT+zWTKnHXBLoQegMVqipiV2n2Lz5AeKpXJToKswk+gGoMAgv1uR8NUQF0mc9Cm + 8Mls/D7dPR9+nm22O+ks+DyDPpItcP4i/jyhCL85/+Dlg3Ql8jWMslz8sGXZmTjyWVwuJiimrDQ9 + 1Xcn3L31GdhhGPt+VCwkmFGnqcyRc7HmyiFyg7/w6g7Ets+KIAaiOkLkUHD87hjYFDG3mkp+AWzY + bIvWjwhxxWXSu0D7ZMHOKnZGvYel14oCmXBBNq6GA9byOvBIw6NvlHt2/IGNT8Zt+qhM4umH9I9S + sKhc04d3jAX2Cha9bnVrScqFW4ue0q31/t11qVyTx4tFb4NnTz3QWD02AuUixgwlUaxstcBqLvtU + xAYp88jL92dMlS1bzqGnb2vtz8i7IPY3M+BomJI2n92KWXmOVvV7ZD0gJaRDUVqG8s1gy27XsHfh + qeZrqDas4JOXO9lY3QeCu2EY+XKKYo3goi8XCZaDWW12ogDNai9wJu72C1A8rj68jtQJGVFpB+H8 + VkYy0wtObc7vPm9OB/CpWuMAbdmhBFOqAZJuYRFA07pbSE+jKlyjPiQ39vKuaSweQ8Z/NMTgFOHk + wBlIFzfzdsmUoRN7Su7GV3KuGTVGTXdyl06+rFezqmSM+i58FHEMa9R+t9LrbsHLO6TjCNUg8gjN + QXWlzTi41VoL7NZc9MEBL3pKH+kJWM53Yo2HHDpBS8CLrJE1HrLqxMRDlk+Jn33bfZbxS/A3HLyI + 4sj9ffjP3WdfzEPhIXOEUTWMvVNRnUm8AA/RuuoE1ET8PXQUdnIkhJx0OVWVYYDtwEnYzy0NpH06 + 8pijCl+6bqvCl/C6beFLpFwufAlPae5fXX8s3SUuD3ip8GXghB4PR4ET+1yiWH18d84QAW0M87MC + CVVYkKiwQP7S2KVzRHpJh/N0eQt8PZeQnBBOEUzyBs68WNVtTu6Gn2RjZAB4C5BFaSSYfYL3CpXt + UXePrB2Ah+LVdsfXYxziWIC+ifIesFQ5oqqmH7xarunXofo6c5gTR8dXX6+hUzkV1cXmg7hoFx0Z + mFtRDP9XLvfXvQejhF0UeQEr1QDMQ++ZMXfcDK7IDZR7zAvdUkUiyl8Zb1GaQ+Cfl3Wk248yNwU1 + YGC8uAHqpzZTRzXVXIak3oWLBHnJMkF6+b7CQqXUquEPfvlDOEAWlNV/pawhR+I1Vs6RtYk1lJiN + lVS+zpL8h1lJFUcRLI6SvjMSl8nkDt4QQW0jRUPcTJ2iZX485GhAUmn2Fe0JhLl5rWFAtpbptvCn + PdTrkeNvYkxWo7fCKW0SNt2YLMrIEagDOYxcwaXOmKJ9oL8dr4hnpMI4W2mBmHc8VdCjKYsmO4XW + i6ikOqYiHcLYOXXalLdQTWzjHGQHRpgDPSMJbXMHj1dZrI1YOmxc+0OOKgrOXhAPJAYTOXzerOa3 + s44xcHA2iU8QkWS9TjbJzj5mx7JxC7QGS4qPPC5QW08Zad3nf1xejCcrIQp8TeEoVgVuHpwloZRz + 8lFu4SAs07G4W4XqJBAqewpYwiwWwVcsiB6AfnCD4miPJdoXYrHPRNGbP3+/AhXc3m5Ir1vpepJy + Qdejp6Trfbz6vRyYETsFu6H77KnPQ88PRz7sKKXr6S2p08oxRzz5/Hm2xKlYw8eCGLhfEGMXeSOk + XH3cfOEl5aoYiWsm+UR11bE5iIVxWWbPOsd10wNIawqU+k5YLNM6uriu7iRXUjTfR02guIsCXY1a + p8gOzotJPzBDDIRknKfKedzeb3fpYoCrp0MlQj8SIbIRy25TmvR2casRI+aTn7f2NKgwNj09ggxx + gerFbMsKHUfHwYuYiPr1O2zMrA8fP5h58ghuB+HbczUYkJ5VTabywLQbJh6pmsVr2U2Vxa0/6s17 + Jpbwy0Y3nYysjHKFLt85bQx79LoVs5eUC8yenhKzv3x/VmL2PucmjI0XPRt7Uej60ciLIq7Exrf5 + AnV/XL1WrqH1HOhPHn9Cz0vyHlfWkua+yfzf5Gw3sHBBifMv0tmqmBAUwr1oUHl1WaLSlBBkJvaY + CI3TDx8vVQly8arGWxGGmbXw4kuAd0JekeWZ55MpI5SXZOq7GbDL83xgB3wIbGgRindzP/w92Xjr + wfXVOx0N4Me+CMLrC9Qu5lR+dpquvt9neYdbxJ6H/Z1BgFp0VDKg9IpzdhTsWE/gXop9iASfP1++ + Y6xFEC+9bsU+JOUC+6CnSlZ875ZQSxz8xnyqYfDsKfejmPkjjrKkjK3/uFkmlKSZqiCObarFwYVb + mRXeKrqXeX7AgV9XBhU9ud0ntRE6NTXrPV4bvhSjs6pY4aFrfJGiNuB/G/8xNubICCMy6ziYc5kP + HtKfmq/dk48kYpGKYNoOcE3VOec8dKj8Uhwog1PXoJ+fGjp0HPpjpwTvga2h7gBsaL8hOhglp4fU + G9FYyq+FkzUW+7fPAB2Pu2Y/h86vlejYX9wP8yU6yLsrL2D2XJlet/TWCsolby0+lULd2adSuKrr + xV7RW/uUgaATs2AEf7o8VGhSyUYondwdo9wsEoPgCk6w+h2IIYv9fDfDwBBlFATmtUIrNjo5EHZC + lJMoeie2FA78NR1O9xTXQjih8AJM7UKFy4zMnIJkSaC0KFmNdNSiiAHKvQUiA4xnpDIP6OFdulCX + yWWyL4enPjppFL5yvrpFWVo9q6TjFLx9QGfw11mxAW5d7eXzRBrAb0Mpc/pcRKC2qepTx5gfg8Kt + OEagEbz5m/DUiVsieMtG1gjeqhMTwVs+Jf6x3K89KaRJ/I8V7IBB7u/DD/jKQLwo6jRGsUTnPtbU + FJN9h/rSVy68a1A8bFHxHQK+VW6ojgPymcPp/tUoaF2IuFRvV8ThTWfIs6sElhoHdeA7TgVMjfFl + ZQtHCynlp/iCvWydheFtY2cqq23ZysH0QwVBJbmymEIm1cjrGYYhuSo+EWpjkWcvV9Dr1sYiryRX + 0NNGYxEvGoueelEQOmgsCrnKpG4yFnnf/tLX8yBnNfHhH2pBI6W+Oy2sf/S6rfrulK1/9JQW9P9c + XZTC+hyGphhTfR/z0IeFHfEw8BVW0KeXl+MPYzitu/s55X5iQno6XN/DYIS9ZrXJq/T/ZzMrh88d + qdIfET5XYxqo+6rpzPym6qivOKwbdxzAr75T2FR1vdXjxIH2e6CHgfXCFO0HmNarzQZ1VJ7gD2/m + kw9nkxOB+jy5E9bCBd45eHshTJhG4Ml/yEjfWB/GWf7vTOUJv7m8gD8RjsJoNcA9mpkjKAkJpwG5 + 5sH5awQLqeLxvaTb/thi892NEzEFNLXe81Yj64/6Q6fsZKT6jBRSXF4E0v/59p3DIvtrm1634vKS + coHL01Pi8meX70vXNguDAtKC8+xpEIeONwqxAk7zpX03B+rlS9tM8y5w9KIz/RAnfkwXN4ZaC74T + yhw0WJBEhHoA9fVOaNnHAhR1S5XvKQ2QnCPeWMDSjMWXfb+v+srHUYLN545Smln4JjiF1WmjM8s2 + tiqz6sLQmOVDOifv729U9bXrf178dv3htbjSrq7PdVSqipW+3m7YYLuVRa08VdTKdQm7DkNjE5H8 + lS5W03R+XEmawPUz5ijQu9sHCgMNn8wtefejQXGErtSmoj6N+wENO2ILC2dElpQsexJpzZ+VAUB/ + hKB7ZUasXlzgOVis0Lv/myXoJ3ZP+mQhJ/oHda9g5rKVN7K/7RmIE8ZZRDPs+IxgnkYZUP1nKP9H + Q+Z2KQLoUwUxdUDbhItDYwruyZ/og7zZKmDcvoZs5/BzxTOZNjSGWK/PbWlolI2sDY2qE9PQKJ+S + ZLKf3EltMksZPs+KzJeDKQcH3vsEBAdIVRglQ9eVEJEUv5YljWa8SkMbH4boab7VfBl9JOlN00PZ + sFahtb0gVP9S2IfWjRrj89HhlV+O9sjVHufmpgEdGUTJdLs7pA7YYzB27qIZLigiC2m23fUlpgL4 + H1tANsXmYATr4wvJ5lynQjsg8rWssS3bWCdCyy7MPGh6SJzyDnOnROj68A+pVhvIkjkkyRav5vvG + jI7YoaLasUMXH3rYYUr6qYTNYtczVtySZlVqXK986li5pCPcmUeSyYHl6nq6PNIQsfRjLxEY5KA7 + NEILydeS0o81BqlD72oFM3L8U6cNeLZuY61gyi5MBZMeao+sAB8puGSHTy7fX7wcMuYHXuj7J0UX + LbQZUFOhbbphNOhWvqMudfaxuHttCbUYWl8YKrUQfHEoMxnm90/OTp6Sh/mY1XCZQ2nChmt0ioW8 + Zjf7aiG0hpQPMrNQS3+C19vKhH5I4DUcrenyazpfrS2zt+1bd/Jw2wzg5/nGcQ+JE43cwwnHLHBa + acpdndzHmjIV2/a0rMZfMn7qtJXWVCtreU13Y0ps6jGxbJSdYPhYrGP45OL6+mRglu3O//5x850P + dvgflMOiOOoprubIoClJCDMBBSH1Um5EML2zltZF1wuIb5eiWuYrWOHagiQVO8/zvazi/FDMZnMC + V5+m+IMSoMXZPaIo/IACnozjA3x/P/+Mgd7WyQYHBWV1ygJ1ynzXOXV4qyNGTWzPl+zAOFz0TJ6s + LKFrUJXllScCIpATxaHtebK3sh93Nn3fiXzd/rhALtsSNtbV3HvKLPQ5840p6px/x3nkhw2z1UjY + eoNTrNXrK8dr4bSl162ctpJywWlLT2WFx/cvI8Npy+E64DGiCudjc6JnTznyUHfEvYhxaU0918Xg + FDcwK0vBRCkXh6zDuJhGPQTnsJh5PAweoSvXfkYGOPPa8Rt7Is8tFBnuv+ksv3aXnOPJWnW5eacy + 6ijfwFiMyJskuwy37QU4j3uxW7zpp5t9hRzV0ZxSg3b3SMKpeaTupjAM2hW9Uk1s7ybZgXE30TM6 + wuu58m7ISJf5bD2bjqczNMVgBFS6Wc1Ldhmp0vM4cEMenAzatL2EHgfYrXB/sEjedYF0uCOJY1M1 + 4US4stimOZbOMVcsjulyENx5K+IMbkWmqhhvnkTJe+kFLklNhYlp/siMTD9gj21JtDBItqJ7wDgZ + xfW0ft1qd8jtA7JnqTRhjNya4JFZIsiW2BBoZHyU5tTewtdgEnhuFohhPDvAMFqF9PXcQ6P5laLm + /njnuC1Sm+l1KwFMUi4IYPRUwmdfvyrDZwNXNaPmQpC/At/j8YgHAQvi5ri51RzoVwS7P7Yo6Ecg + sClYBIHxXQEfmd+DhTBjXOEplh2ZYRbqbjUfp9+xjhFeK5mhU6ZG52ETMGZrtttq+AT8brgr0u+r + W2gF0yqZyuCPywsRciaG7rsxp6Bk4oWq1y5YBZrLBGTLqP7KH1kC8aEDfXoNapbcw9XRge6buJ19 + QjWxdd3IDgzPDT0jTuCOV99XyBPHT/C/WK1K1NqTWsjJsMIuk/fLZu3/P/Ff2V6hnv8r1/6PZMON + tit4gIKg6zMuBUHy2H9OdtBNi3Kh9jEB/eCB+D4jlyiarpS+JJFOfrIhr9vEuMyl6K2C3ReP/MVF + fkF0Ec6c1f1wIfve4E08lwlFt8W+6yMQps9efxX4FpdlpU7PGDt1/Da+ilwr+3KnqptCwVP5mOSe + 6WyhMry8T8Hw+/CTj7reeLu8+nCpduXgk/db7Y861vklkBogPapjiiCheGG6VDJMe4jQx7hdA7OA + BRkJfGTxr7QGIrhF9DPB7S6OQi3pXN48IxDoo9/aduRELvnj8pPU1vzkhIwsQvnAZuXXRla9Ro7z + W7Kkv5AyMqtmtk0lQez8vd0FlAP+VnJ+N+6dZgXKJ12scW+3344DZP+cMriNVZT461nBPDHvZAHR + AeCLFDjBctYprkkxGi4RSVzHbYNIgq9bIpIIyiVEEnwqlalXH1lYgiRxXbcESRK6ILF4o9B1IwVI + ogKEcgFSY/1MBkyhrwsD/WRio2nchd/2m3y95Cy5khSz9+mOhQ9n/1aDzQV4icGI0qXf74E1rS3K + 27lxwGoQT9ExABP4Y/rNfXCI+cC8pD7qsL5yRXGj1i2rhdMyCGt1shwuWMiPFYGFdbUQfMQpjosp + uLnAxjosQFBza0ryMkwMc/m/Bu8zKqhElifgSetNfGK/iwfieGXFEWKPot5JH821OBamD6dCivfF + Seum5PLCAI+PLX2YiFUnDgg0Ou9V2Yl4jTKdDEZxDXJ9ujk27LWfUNqDEQg/xXN0XAJzX1oPsjhs + 0p1hWn3rA3Tz8J91OHLFk+mjDWzfanq60PlxueGBX0dqpJ9KnKwvwNJRsANGPnyChmAs65osJUzd + yfB2s9qvWzuRGdWHW99vQPn8DoJehoraKR/MdZWnNAicUydq5SmlJraeUtmB4SmlZyTh5SRZ+KDl + oPjvHA10bDoRJScc9srXseLDTWuLBXWKBPgx1qhmo6in6mg7LSoL0Ou2dbSdcmUBekpawLvrF0G5 + jHbAimW0n3I3ZJEz4i5ItRJs+t3ZFjSIF3KjqyAOEt/fbW+CvqX3PKyB8kh+Vgqv6V6plWIZfpxG + felY2MCg58OUuF6J3tdksl/N89G25jeH9SPMU8wkeDbO+1K1R8Mbf5kt6+V5r1D1LicoGzPRdz91 + 36OFfFGJfvgZ1GIq2bq5BZVaxpaapdSYKernS7b5jEeR96/BR2m0bR45MPyd4Mvb4bsEtu46B5aT + CCVgvhJRDlR19p+z7ZfVbjc+m8PZhreu7+GQowljXVFflz4HOBq8qHMQUO+QP1BKuvzAAZ66rIq3 + GwxElVDDv0TDx1jRHCbL4chbsuZRcAms6W0yp9Q92o6pZex3C0mwuhnlUahOW1qN4GxkrRvj1Q+k + pFtGXlanulo2fohYDLGInFIlF8ntMu1Y00BLcR5VVrM+2nay4dFUm+dOmi6PpNIrFpGbO6DVYqdE + ZCV5Egs0wp2erik6qp1o6ZFan8AZhg2Q/vz6w64vpJXzK1BL7cHx6HUraUVSLkgr9FRi25+9LsIm + sTiKC+B4/rMxhz+DeMRFJIDEtn99cfFS+0GeMN8ZfnmZnIwMNl6GDzExRrBm0iwfpfsx+VwuklTA + JSGbMvVfXZI1iGssZDFjEWelMqpo8Ue78qHhFszZJnI+9+tsl0av+sZ+w8Y1yCuIkFJOyTPCSUCI + rJFDYrjCQ48VYfrrpl1s00s4YXloF8M26AZ1pWPVdw163gsD3JfqPocBRAP5yWUXj0lCwji/YUPy + 8uR8QE2+rdrUz18AW0isT3mQxRVuxvFp9rwf67QK4vL4Kg/xQUmsn8KbcFCxRddD3zhfireL9KE/ + 37yD/ux5O71uxdsl5QJvp6eynvnVG15SRZmHAmieucfPxl7se74/8uLAx2RskV0xdocyrJTg0DA8 + rAJPc5tOQFWnQLNNmmKb9TYz6u9WAuTrK+gK31bD87En7UPKPCTWKlnSKi3SKRZtRlaRbm5XsnvD + DyKrlG9ueVkZrg76NZXEyK1VjHkYO1452vBAKHGBfC0AIAfN241KXrO6aR4+wbnSv0gjpnCZVOuL + DiiFdaCpEZbILvqE6mbY4PxBXKemK6KDx7lRBmLza0jVOIgpNozS3UWDfjwxOEXYpGocPxyYVdMJ + KFnv6JBKzTGlQbDVF/6Q4LcfndbwIOkHNeN6NKkMA8lg8PWjOJbVl/fn8ZIGIHd8AwdKIX6CnDXf + Jf5YMQHzK35GyF1PUk0vcXtKxQ0dKmVKCzpWqKl6WYH7uuPCBsitOsahN617o1ocqsjm4E18ylir + yGZqYhvZLDswIpvpGYlQ2/sbGScI/C5Z71Y3KGppSBruYwRHeDI49OuNwupjFB0YE39GK+CX2TJt + 5ZwJpCGtoVBGp5qzFEeI7Eag0R0qB6saxhFdDaD4TWcgAKMjCjao0Lbg7v62u7P+NKwVKTadrNQ9 + lvf8tOmr+qTV5NbqZrbt4XrqXif+EWSuaetb4MfGBMJbqh57q3vRZY4MeMX1nA83lXyyoiF6NgST + JTsAZtF/R2lU/HM3W1vonl5E4Kofzi5hGaUV8vhEfJdqZFxeARNrUSFXvG5X9IQoF4ueiKcSPf3q + qlz0xPOjUoXc2I156I7gjyCQRU/ONlvg/7s0F7duxHQl2e/AVOCwTtLnMP/Lr+lmt81+hb0l/j6D + v5MTaZIgVmQK12EqIaPUzOKabTFr6WyzcddSKYS/lw2HvZVYScpfWaWHwUZnxUDCUd5H6EQOi+Ki + JTAfjaR7ypH1giDya2xwmuTgp6/EAPeRUroCz/EGcuhk/yp8I7CAlmb3ZkoNNqy+TEdiebFF03Zo + ZCTqzMcqXDkK7c88vW4broyUy+HK8FSCb7x6W8r9dD0WF6OVxxFm6XsjEBCCUJr+G+o5jxSDw9W5 + SmdsPbzZ74awloYt+GY/leKB2IK7ZLbcIpzPOt1gYuM5f8uH/5ktJ8PPsEbpZjhdLcQrEsojveu9 + zs5jygwt0NFzVai8zcwvy9Xv9pkT+ry58vbDrtQA95cO13XDeCCHLNSk/VScPXH55j6vdHQqMjF6 + Q4z+8bGcoA0IeUxM1093P3qODJYC4d+eB9HrlsFSgnIpWAqfEg/69PGSReVoqdgtRkuNXcZjl49c + 5kYua05A//ccOphUsgfE2DbjkHitxdbxYLXcksVWqbhlAGsjfAdUPCvC+pALeJy50KhTDdRu8jIv + 4HFt5L+imhV0cQN5AXNSISp76B+J+AGqGjhUEDmvPCilYXyz2i+xzqvSJuxPo+eQwaR+RX+GFedY + QG9FKAqp2sr1GNddlKWCFzBbILUiXrUQx9Js5EaMHGZXPGwRDEGv2znMiHLRYSaeEje6fleWiFjI + WMlfxhw3crxwhH/6h4o/3m6gh2p29JfEw8gloWK5ZucanqRjAcNsKEpeXB9IifqYFwteltWS9LgK + 7vVb3Vf4um1wr191X+FT2iHnF9du+bpyytcV45xFfAR/REpPnsy+MI26geFLYnucz7ZuaW+gRIQm + CWPe4/oVBfkqwuJjVdov1Sh8AurKdj98vV/ezk4MuqDP1+64OrpHelprQpDT73lhztxzYX24cAi3 + Q4/hxzXpjTkDDgjB291stxdRtp9zk2x0wWJTsri+rp7WLPFP0zFCdzHkFRQJFISL7tkQeFDdEYLb + LeQB+xecBuC023QsRXc8lqIwZVY0xPgadNXqkTwfylLr8ofLiysE3xANt4RaI64wNPhu0nWa7LYn + qkYYHpVMEqFsPRywNsGVP7XddduWWKU4AxtLGGiNrUe14S3VgVYUDsTJsMj8oLYKzfHW5qMifGNX + YxOLWVBszM6PwAk8JB9j3TATVdWjPVfFU/IWxYbpddt4Sl4uNkxP6YJ4e32JMby5GwJlBFcIdYWI + SrhVfNcdgXTrBlGzCDHZQA8VIsRfsX60E7DwGDDwXuP1H4EHpSdkYXVEPF0fDbHb26FGURPr2mjU + gVkZTTyTNX7ym11eKhVJcZoQFvdwfGcweLw4X/2pvpql+Qo/x3uNADZeO/gc1cgWPUd3YoDnqKe0 + bgshUNRXWar6vQiaY1ZlyvXLfRCNuELyopgKqqO9vgPRpRVInF3tuZ/nX3WZTwkZTTOWp2hCuqIO + Vdf6eLiqfvM8cmjmzXnFqmZ6u/RhdVgCHTjyAnlGq8OSNbIOHlGdmOEj8ikdFpGCXndSSj9OgK1s + hxdC5r+4MDtBjDvQJmXBMl9GG/0EsMRfrxbZw9Rw7BWcIfJIdhe7AfdFX/UL29H9gUgDsSVHgOti + o6BJu2AKsCAiPZGNCQ/ifjJH5XeNxmNmBLQdCcXQP3qBpyPhvNdRyzo/uo0tO1NdGNxMPiTl5u77 + FyW7pd9XMo2Qy3C3yPfiyD0ZNP0E7QUfCxwJ2u4QYthn3MEraBGMsxmzCIKu4k+BQ8V26Fo8ggzF + dYsLaX7fGtPOx3p1RGA/OfLTuvPqtvwMTkuge1mJZOmOCbIu8Qrx9d2SYV1agNx+6uyXISZ99vGy + 49dEEQGj0D7t8jmPL/k2ZiRDiHPS6pMUc6KwtfdXPIztrS30upW1RVIuWFvoKTGk1+eX5RCWGOuQ + 5M3x/rMxXNMhj0YRp4S+JlvLYgP0/4fYWrxIonp3t7X89SwkFJn18h1Il/YQMvS61baWlAvbmp7K + qIjrP0rb2mFeYJoQg2dPXZ8Box25wOD4gW09nQP9ClT+v+K25rAZMreh7/zf77pgoutFp8xtVy6R + 2lgXS5RdmKUS6aFMJciirj5vktuF8iOtvjMR0IRATtIcZvg/faZSSt0W/k963Tal1C37P+kp7cw/ + zis85J7jlDNKue8GwcjjQaTwr95X2CmUw2m2HRcMMJg5LhKYZfqgyM+VIt1qj8ebKjGm89XyVmdV + fxjPZ8svcMxBuLpVywtbZIs/5t1eKpDwj0lFICENBQaF/xPurULqfb2PPuBRwErOQ8qdYaNg3Gis + KWzwuMa3F8Hchn5Y7KSDdcVAL0CS1Q7LOPAR3LdwUvVcG+7ERYKqaAl0KPBik4HkMASiMIrgYweP + a4MMcK9rByZ8ARWVpugc9bU5VE9zOra12EJVbkjcUZkR0th4VrIytI+z9l3RfR5BIuQBopam2l+g + mhMeb3zdkjPY7YIjadZmUv16lmCf/9+tMp3EYdjadCLb2JpOVBeG6UQ+pMvP4JF5G3DdD2LGalsZ + 9OFFLWM4kbAUM/Lj/zZEa4vjkbXFCT2hUU9Wy3/vb9uEXDzCVOs4pkgFESKw3W8+J5O2VRR9jQ3K + grf+KWMty2jLRtaCoerElAzlU5lv+kXlmxL6QUXNRMZDUGPDk0GyuZ0J5OcP4/LL10BosFnsfFEQ + GGZLYokGtABbGNd8tr2TSIFDjNjfpctEmJRlSNN6pU3Jh4Py1bKErichpKvKMDRB8DQQBe3Uy9+6 + zWWzGwh1yVWtJ4dqF0XLpGuB1DYuLUl5iOXqjqFMKzSnLJ/jtNouxPRta2qZV0Y2/YIO8tjN4p9k + gqbNsDGzM+MFdqmcPYRqw7YMyIJWOn1db0ce5vd5eTs9PhevYqWEu/v+HWMtjCb0up0tkCgXbYHi + KbHOD2dl3F3XZ1HRFvjU9bjnjtwwQLdQg8nkQ9IL4G5NtDWGQ6tdZxSiCLkROJtP8QBSgaMUv17q + D2L4/uxriqMZ35iww7kSg/j9e1pvmKEE/iP8IVi9FrZoOt5C3xrEVdWxMk7MFBZygCukLY9+5JP1 + MNSVfyy8Irj06Tf4V/WQOqTqCy9uEGZeD+HDFTEmXTwFuHzqezq5/HwZ8PPi0vXf8FM4Ji1kEtXG + UiTRXeQlEvVQlsdiw6w0ENkH83Ko+nkMc7maEL6CWv9P2zVzXOP1vXgkBFQe/aBCWYRd41EC0WoB + oogQerqXOrK+LB/ghpUJ0LQkn5hln62jGno9DxSh0Xgg7MMZjkugVGeMsPnetTOkvrM3pL6rNKS+ + yxlSX3346JUSSeIC7iomXwcI3jwKAp+FFqnXOj83WYLQgEhpM+SP6XoLjHk++5LK7FyFo7fceaUr + jvC1Uf6iyEyBwF2bP4LapWmozMOJBz5HUNRiCiWIuXebnNhl0OOFXA8jccKLPaca+LwwYA0Zblpu + vTobZyPtDqDqBynngXYMS2kUHxxjc1a37SYY4CbUFs44ENhEYj2FFalqVn9rRFlQx0tHrTDuO6dO + OwAn2cbW9KK6MEwv8qHUqZefuVSqJ3fQOWJTCazBaToXOejyJshfVGcfL3NwrC+Bd93ByxOhWSO5 + gSAqQpIRnFaYhl2pvVT10Z3jBS5FZBQQSZFGM6KrRUiCHxRGDOPNivK1MGaGEllHE2rUeH/CzQnf + Siri1fW5Pdhsb9EwfV6oAaXJvKy5T8uzfaiFRTCPKFAiAmjqTkUv9XEjGfBzkOZR4T4V+/HYAKE+ + EIU76/BH5osrph3JsAfm+G3CHvB1y7AHQbkU9oBPiVH/n6uLEggV2uxKYQ8clKwoHvHQ9eNMKkIc + HuHFgzXQtyLJOf9nMytDQz2ytOkj1PgPUnfSGIBYlgV033uswrLBpCfxMNUygnKrXi8m/np8dTdh + 0VpXPf5w/crLIikCV1xunOrO4pnfpOtk1hZsxYZAPQg7RSdRWxgmnNEuCaNBHEpDa2ZaRZrTZJHc + IiDxbLGfW98sP8fI6joxWS5x6cbwn6D+OquyXWoZjaKcXlzxNgY7et3quEvKheNOTyXm3Mc3rFx7 + QiA058+79+wp6kBw3uEOd73Y1IKoAhFuChy3dGylAk76bHfrr5Hb405/xUDg/g8MGR9jnaJEAFBT + e5DA4bgBU0BAQQGUtt+t1nfJ7b2CltvdsjID6V4yy+Guy7zooVhJNnxDsYjrK0aEwEjdYsUIZdDT + ZYN2aO3bFS2WQWBaLCvoDs7xvG0QUGp/M/vv/WynNBGSOEFiNUo/6fFjIgwu3/nXHWogd9+S++eV + y4yxVKvNApZVHYc8QXgHGJzIHROH6fmQVnRMjZP5lppvc+1Fdju+FmS7xETTk6Mkw5QA1xEnTOxr + nc3qgZogLZ5Cq5KNEP5SJqTqlm3ZmU9QdNmMZrKZTu4/jPJzABW2W2BoxnIJ5Tt3oFrJVb7jsryf + puM4QD6jyraLZLJZNQym5gpyOadg6fN/fFT70L6xF3IKGpqlE1CUgccsZsYw4DauvQyqfXskr5YZ + kN0FdJyfzvWkm0qcIXGExuKc/OAqHnFIShUebjjbt60DZhBLLDB2V2I5BHmJBo5Opo7PvFMnaBdk + ohpZJ1SrTsyUavlUWjg0o033X4DCSmYGimhSqsJ3fv7y3PdVdT6TMho0WBAfk2PdJcs5YNpiFPrs + 1GkViZE1srYZqU5Mo5F8StLJ7W7GVOjOHmZVAKNWBJcPqn+GDb0HwWf4BsgMkJaYWtfzBsfE22u2 + GHJxfir6tmZLvu9EWci8ZiWd0LF/3EbhEiTM4V4bkDB83RIkTFAugYThU1kx7e2bihDooAwS5rss + ivyR73I/liHQu6sPZ29BjrjdJ8v7ueHPB4l0OkX5A39bbdHrjyi90z1VYQcZyP8b2oyF6ibJJJ9x + q5mWBZSYrj4gL7wcolb4FVSb5znxVkrBGZ9IFivgvIpbpCow+uPdbe8Iq/0r3zgTVbNZHVMdsbgW + lMoLXBf0w2LRNOGXzltFzaBmp7ZGq6I3+GlrPlnt4Tbeas/qdIbbWb6+mN3KKG3oSaGwijsYf83V + JWi1dwZ4OLRHgfsyZtohZleaSys+ETmuq5vnsOUemj21DyPoKagozj63cWfbfEbP1Tpjwxp+VMyT + Yug6BhOutLb12amJbfyl7MCIvqRnkjlXWWjzTqGDL+R6wRAH5rnCo8Ycr+Bn2c7mwDBwb9zcD7cL + BLjC5W5vBe4NC/nHGbIeHw5y4CmMnTD2TpnTCmGHmtji68gODHQdeibDbT5ejmXC+JjlEsb3Gzxu + NQfOCMhpQaAIwiMHx303xugsStAnG8Onl5qsTZiWvXfTMzWwXD7NgTQa+5CRI2uqPQ6glNYhPDGF + 2sN+eNZ6Q3UfZ7/d/sA61A9ws1Fx55dXjLfJIxav2znUiHLRoSaeqqouFXnErstLDrXQ8bwwGoVO + zD1Z//MSZL5ECdoYYikEFxUampV2pDKOHIs6rva3d8NA+ZqMopKYU3C32szgrtuB2EtVRVCaRWzg + yX6DeLiimIe4ICc5PrDV1V1WD1jxQZcy++/9TOjT9M+kts4LAj/7NZ1gwd+Il6z7pT7KcDOFDuow + ams7kIXUt3ezLzOc6aHGt/k6W1ooSG4UtOwz68of1xTSM2Dxw6BOxTvYQRGjokDXajUyF0l5p0ng + 2vpqqLETlkKzB4/mnAzwtGu/re8KwN3+CooSndxs9VA7FSdUULVYjJ9fafSHVwvpL/yox4KaQsO1 + Y5dWE3QkyUPDDSppWwB91Yy1M70DAw0k4S4c3HLsvXbRHC8GXB6bWFwOVmM/ht6hgfom4W5QVe3J + PGgx2aOj2frBquqzHm3P4IN+HalCEnoy/3KPuPJwRcGfTzBNbIPRAEuZ9HfSFZKQ1Ln5/RH6BSUx + /HHl8BZJDPS6lX4hKRf0C3qqqmF88Iv6hRc4pn7hhc/GbuT6WLwp8kR9OdQvXiRb+CrQpido9v7P + bL0umrUxFodsbDJa7f7scsyUYCBCMmRN1+1wPU9nK5ipNdCcbva3uQqHwqC9TeY7EJzmsNii6KHM + IKaYIVH+ANPgkCzZ3bWiL2t0LP2jwwcZC2P4/Ko8wDaRomauoGOAquRTBYzucnUm8znGFTHll6u5 + EUhuuDvcWoSY2u6ySDuxLPliVtwreGNy5esOkxMrKhOiDSE98M3CW7loJN+PAxDhB5V778nN/3tx + efLotuAAD5kS6zHyi3IN/IwZ6gVsd02gXoRNGrbECMMjc1FFLaX7gGKi61atRK3GUS02SpGQmOES + hdpqgb9MLrxMvzscsF8p4x0d6Q8cpWJjHYxWf/CyaJ7rSxFLWiLH23U6QU9i94/1AmmsVANDSIiN + LrvT7VIOZVlXHvhtyrri65ZlXQXlUllXfCrz4F/9vYyJyWO/nFkYeh6PR0Hoe76Mov+wWsqwIERb + frWcjv++opJBkkvALmDPh1epqGFFuRTvzz4OQT1PN6v/3N+utjBlz4cXcgFljaB3s89sLQI7h/dp + sgU2+G01vru/2QBTlhuYMu7Tf5dtfK3vWcSW5u5DxdbmAtiNu5FHtfUejRFpQtPV/mYO+xiPGkzk + Jk2+VBJ2C3d8BWGdDpiPeTX5+tJYWYwp+Det7HN92uRi4QfKaLqLf2Rp39vhy+XcW4urTKzncxxt + 8zaQQxBbX7olp3AlbmY3ezUuQWqAe1YjA3Dft005qARuPjpVwSVQ6oYFshvIXyDd4NhY0UeAtjZU + wZ4x3SAaaKAbGR45+o41j4l9Dsaxl6K6bCLlt3a50xK+Srex9VyrLgzXtXxIl4fBfGY3FBafq1yH + p0hnZed9zxXgI0aX6JBGpoC1bDn36VBVdFCaO1u3ZTuqjTIFUPINSvqLH/sxd3TrVSVXeoBI8g5u + 7c7wKq2l0UYxj7Knfr9qhRFNr1uJeZJyQcyjpyTmXV1ec3ZWhpBgBQgJ99lT+GQexyP4I4o8M30q + Q3WRCi4FIz3xnOsTtYfxxFDZpufDJXBO2MsoixAsAFaOX285e0GSwV2yzR8v+HUDOjKMNEdMzTzJ + fKJ1UlesG0HPxIhKY1GIFK9E8GFi1jT1I68ORAmNACjjWZf31CfZtLy4vk0HxVyqeudi4DFedi7+ + /GUa0EZT0hkLAyGdYcAAnhlEsZBMQziWVPgpXgIXH6+ZUPpTgdQKV8b1J6oDLA6YfxpdD8U/hUxp + /AZHAxFw6fiJx5lGOnyi6IwyGiNN4MTasIAqIGv8CBg8ZXRjzQ4ENk6H7t/GMiLX/JreBoUbQavg + NgCCB1scum16CB88+h4g474+a62acx7wMHeNNDANm1vNdXy6lbA5bYt17hxWinn1tpzQJbvFYf5i + Z+I5gl7TjRbqVCbmRUFrvFzVyDoDR3ViZuDIp3TDLTbrufIW5Ap8JfOKu0St75+Ldywe2L4t3hW9 + iHhd3yNIMqvz1CLEsevp1CqHT+hl5mc96tP+IMKiXbG3AzQCXp5KgWJowy1axGsew9AeDQeyj/t8 + KLZEJS8+XDmeay9o0+tWgrakXBC06Smxoff/eFmyp3puaOZ7eSKIkkWxNwph+ZSYnVeJVY2C2RbG + gRAlhiiok4qFUPz+67Q62BGVJFPQ5XFRaixIttOZDPhYpF+T+UrG1uiyd7URdSwoidAFALPN7QqL + FMCQ6qXaIA6aqcjpWOUjyopU4CNLX6mkbe553Hf+NXiffd36HpZahxwb3zoqZzMV16gYj5cNkEwY + 9Mmi/MRkvhe6YzYTz4fCkJpgxB7aW4VLYYBbSLvwXE5ZUQEVMxDt+gmnw8kW4mzFwhSo1oO4KWI4 + 56L/ivXpPsQWVC2GGFAWbZuawM3WRkbw4Acmr1UkDQ1RHsFNbTpDo1HJdWiv6Ps6C+cU/GFP7mWh + spQo20Dmls0wDSh/kjngWy14S7t90q2Dw1umlxS9RxNgdUwUkTZYRuTtyGwFx5ikQ65qArptcMDF + 67Y1Ad0KHHDxVOZnn72OS/7PCCMICjjgIdziXjQKPT/m3DSLGXeCTohPduKCEA9kNaKsZqAbflvD + JQSqjA4WOb87u9yqYJEn53dbfz0+23xm66K1G67BF1iHaoR/cPxjP0WMImgSrE9GFGhC+DRIN/0O + x2FjAtUI6uQdEfEo8JIYMwxFe8rh2NyudJ/S0AL06FNk2ImQzBPtHXk+XIBUohaa+lKi3HbwIlci + yYt8h1LGcij+31ANBzVylzd9NbLThuoNR4PRRBRHor+38K1NhOuHdTRGTasq9EeaUR6giL3DCFpH + gfqOJysBzfQVBKjKQh9VJhfP8cT3F7Z2Y1uFCRHq9E0e+adO3M4NJtvYusFUF4YbTD4k/jO53Upu + 4o78MRY7mU3GuRB+eaFNZymKGVlhl8iNeeQFJ4PJ2fvLLLyl/Po5dDDAXsgx5ujiPqRd54r7iNOq + hYbP+22l6FFriGSEzI7jsQGSsreItCTcuOdDRidnmeJHf00LcQ8JXGtU3BtXorXAwOKY0AfEokje + CsLW7BbEp8rLsb9aLG19Y57Mc3H/NvL/ZrXxOgtnJEQZHeFatumhgc/3Qv9ABHg/oKmhyvH0HKdN + jie+bpnjKSiXcjzxqawVe1WoyOmGboBljktJnoyHzPHZCP7kIvEKeRQm5GIQLO2T7WwqGJJ6iheJ + nqOT58NX50P3lMP/uVLy+bSpKJ/56FBiyss8InjzW6xuogvN3ayW02JNzDiqDb6KQg4yT9HPd78B + ficmT2lkhiUjKGSNZtHJNQTVUig+WZjVgLPaEXLGGGiO/xp8alpkOGA7+vnD2FzvETnCYCt/GNMk + wXsTOU0g6Ghy6fZ5yYxSMRFoPYFjBNxoCTLxVFpc8S/qDWkF2w5wV+tcxsiJes5lJB2wPELbu5HF + LuEBqs/ZpfksvVpyDbXEQMsXF82rq6paKha3ZF30dMDc4udmC2dDuARz8yij0HpOvjz+isjuGpJ2 + WjGhdjq879F3VjLzbsP2HU4WGHFG7+dVu8c+UU5dl5SydPnOcQP765Jet7ouJeXCdUlP6bq8fH9W + whj3OS9Y86NnT72Ig0Q+AoYcRFKeL6qLZx8vcQroJrxcJGWE4GIL03Qf1eXaR1iMwysVeFYJj2PS + 7XHnyCFkO8owNH5FsBaY4mXx1oh8vw4IzejbCF9Z5VXb/C3px3FdiHI1NVNEX78t1D+JzCvyVVb4 + OuYxD8N/DS4L8/r26ZhmYoSWZQEEDIRhSdCmkr+Z1vvFWhleVsstForWJaZBT3qei3PHVHzFN5A9 + vhX3V3FF18CfhTthgDtLG/ljPxS2kNDPWQqPN/AfbQAhNJ/ZqjOSLtIQt7CEcOtOJqrIPoJJLpP5 + LqLM8Q0QD7Aotr7I+xEIxP5VBpzmT6oyn9i3bsIWsPFsV2uJEkCpsC/7bfzIQ7x7BUsAeVNcpovk + FgOA94vuAGX9AS8c7XIQLF+LIZ0vEatt9UBdHQAKD6N8nxmPK1t3066pbMwPKHyk9BmEtSnw6M1O + F6uvZE9CTzLcOP19cX8CakTnt1lAFaAsyRJfQoVPQ9vgz/WfvN3fUAps+wx5+rrCTLcUjHsCCAxD + hToctcjqo9dtUYejclYfPVXh3u8Ye1HCHfY5L+EOB17kRv4I/ohVFc/aOGKKfHoSVMYRj2riiOeM + na1NjT9rq/Idng+nKRwJsRqTZL+FmZoif59ml71yRBF87ZkaEwwmi2QuRyq/gkmCy374zhcNMXD5 + HYo1MpocBnfTEE1eF+p1IJq8FJr9C0aTF2RwPQU0JWoidL6KQAnOlYU3ixDxsMaMxUFAdwKnIXb9 + L7PnBnQoNd6xy8KBnBytObeZYVuTzvEhpXUUmqM+/hqR4r7qvpkhNM6GNtr1Gqd5bGpT70GY3Qhb + ONUiCmjedK6SHVK1utdXju/Y38j0utWNLCkXbmR6Ki1JV6/MCr7Mc1nkhwXHS/RszL3Y8d0R/BH5 + 0u3Cgd+IrZJQuiF0PxYnXG8/Mipt0nJ93ly7yWqTZvVLG68wty6CkjnodwhZyflS08+IRqsGatE7 + Vmrxanv3cZpKsDiYkrNO17uCldGMUA3rbk3zmzJfikWlpKJ/xWfsUCeDFzAhw1CvnbxTzDUe4H7R + WVSxR0GgP6KEU9c+Dp5jz+UEbJ7bKfXprl2xWR74OjngZD/Qmuw2dSeyncqDp6SBWs25K/VxoGRS + ty4OX4VePrKSSG93qw26wUACW+4tI4FgT7nZEDtdpMgX8PUaFmLzNY7HyWmzu9uk0MUyJe5cT7JV + DDR5+o4l1F8UQ6xzv1567WowqCbWeV/UgZn1JZ7RvXj+8nI8nSWT+zk6xDAKezyeYWmUHRxOVwOJ + FxG682gCHUlczrbMoLOGB6JokxdRhFUQULZonoImbGfdtwetD8hxII1FR0e4k5XZE+M3c59We7SH + 1Rtc7VOeQkJTEmdEOk02ONT9fH8U9H0YxfV08wNfrpbjw8Ln4zBXuxGh1FTsVovN2gNSv5VFuUUV + 6h7ROaN8ykQ1SCfW3yQwTmFhRPA8jJbQST+tUDklG4xECuyf51cOa6FT0OtWOoWkXNAp6KkE7H/5 + Z7kirgBIzqsU/rMxczkPnRFzXcZlmbqzyWS/yPnSXv6ZTLfPxd7MQtI/ng/j0xencAH9mSRvVWw6 + GkZEZshXw0quofen9w3Fb414KThbdQiRHO9Ut2Qqg+O6q6utZ3qZWW2ZWebFQeTxoFQd7ABNUN+Z + bzVeA/5L+RtLoVi+oWPl8SyhKxawuAhCX/z2giPcC6w+WNNbpHBDFCyBIeNBjTu9ZlQg+pELZb+b + zRUcnqnOeU7dwKpnre4D2UE6g7OK/WGU4V1i+VzgSfCb3P3PDR8LGQvzl94Aj5ku0Bs4VOEcZhv5 + RXlNbM1yzJf5d8liARxmv2j0Bdd5tcXsitusahkOjuUnupMfyc0a+Swur0JbL2Dt8iAbKu2TltSL + i6YuIKZqoblucMqcNokMuo1tNTTVhVEOTT6ky2g3++wznquNJu+WGezMGf2VgEEHB34VdFCUdrjL + 7REWDhmw3QIFofLqzrtLRu1J94zk1SbwP2t0yC5uVUvODb3it5dXtJdCUUd21CjIcXWOAi84dfx2 + 50i2sT1HqgvjHMmHdI7Sza10w27/e5/MMfVf14uQqT9e6HlucDIov/AKGg+QAlUUxOJ0zkMlj5Nn + BLTNtLcE6DY56db5IQ+Umt5zNrkTO76s4vD4EtN7K4rTSuevjtFuRaJhW7SkdMCubGt0sPrCTrQe + edCdJOVxaW5VuKrp8ms6X63TcfX3wvJ9W22+NE+dcKM/xjg8T+I5fE42MKj7+VgBFKAoqB7aGUGa + EuD66+XBkdkfX5kXJQW4MjfP9VtAB9Hrlrl5gnIpNw+fSiiCq6ty/UU/cMqpeSxyeRSN4E+PexKM + /ePdDOcT5lUx5yzb4ONm0zXvzvBgghwW8lKiwS7rGbbedj//LLK1ymtrluCLaz2ljAUxc5qLkQi8 + ANErIuekIC0kBVuG6/hOHayn6MKJixaRo7u4eHk2MkqIhIx77F+D81xqwK5qoUbDL+l9lk5wr+CG + BJbDFIHSF1hgXVjlaEjCUq0MdXma23u49xeqGmAGMFS1NPQupSrgqcaX8bPh/dtkttzuhjer3Z26 + 9r9SUp68+r+msjTHADeuTr8LAyZkzpiKpObhzDMy25qaHg24CbFHmMObdLH6ip4IDBddg4DzXXxS + MkWO0z4VytdQORVLbXNhW9A46GX4cUUH+8VXxkMsPtCWA1hJQMdTffBrzIkkKAG+jyUSZpsmaaPq + K0HeJ7+zHCvircCt0TnYvNeL1QdNTJy212cvu4VcRZ6sN8Z4iyBoet2y3pigXKo3hk9lvbGzj35F + rjtqmIWCY74fAy8fwR+hK/0jiGMDLH0FOy7RWyUfTwq3KJotFhgQsVgtV9/vZXFBeChc7BJxiiq5 + AreiiJrlqojlJ4uGJbty0TDT9zpbLvO+V/PWrkew9nzu+Q9W4CT3VXWOjsNj09G/hqk+R/rJ+Upe + iP/nxJi9fGEsCUm0SMSu+ZxM9PXYOI+i0AzFdRoYSVXrhXcTDWT73BysKF++TNEED+/gPUZHj5gz + bkWd7Rf44oaEzUYmFIQno+Kl6bHJaU4A/x+byGrqPdAj01Hu89qXOcAtIKjUTWnHsXWlWpum77tR + /mboOnnHelV6Qa6tAgEu7HzL0XSh9BDWCCqEQvtb3LedNfx+L8uj84Y0nZikQKHNzsQvR6YiRb4C + u8IQgHbBWrqNLdiV6sIAu5IP6Ubebr7I6/X92eXvY8kg0wy4ghAOB42/Dq+BymDxZc0EohVoHIRo + 5Uh2imI4ogABO79LJ1/Wq1lVLcIm4DhY0DwbyJUZPwjMWVnZ6Qh6zQww9p2ijlWnWdXnRYcOlQ82 + lV887pWMvkkqDqXhWUUWtPoclzkkU9Mn1K9/BqelYZDtV9d1/UxdExkpR82e50heVpi9ugnoD+/r + F0NI6S/j2gtCnUGf2xVdTbRBaAQQb9PNbJn+piN5O5b4PprqgUGT7wKO4WI13c8ro/QPdtEi+O9H + weD2G4/4I0B1+zNAB8oNzd034SnzWrmhZRtbN7TqwnBDy4fS+ZytxPouWQ6K/85TwVgN3w0G8P/U + x6jCpq4Tno/PWpQ2pQaWxU0l9VJ5U3ourQAvzwqId67nRiKlrFDhNIRj5Tuj0AsZk4lXFyKt9PMs + FYV0ZElMkeN5tr27uU9AFd5u79czDe0730Dfk3FFhSp53WTPKvXtyA15lb7dv+IOqhJ8C55W9ayS + DnKbAh1c52tyufnczy26LjAYMPeU8XbIqrKNrbCpujCETfmQ1u6fL7H+Zppojji4mn1hebg0GTZy + lXxmg8l8E6E8CTsjUvKko/QeFCWwOjdizd7Bd2CINfCq2016axlop0U2l3KgFBm4GmZzmFjkXwgY + nc4R0bZFcm/EHOOmkeaQmmE1IsrR/VwzMvGP3VD8ckvpLRPM3gJhyHqwcDQIPbymjwn0sGn3/SA0 + 1k8oHFmq7ISJo/YUvdirkOjEhw8p6/LbbAcb2wbPVYmJPuhBSjIWNcNwuBR61WUfAT2ZnSHp6Y0z + me9xn7YZHNzuJFHVgOLewc5H48pbd/y7hxrpXa260tAD7VLMVWjuIe7Yg8TOUhNSOq6TFRoMsUq9 + 3mbw2i8soPfnytE7P2CRHjLw5/xEUbHm7JTlCZZqzLkspo/PswtYchxgBSGL1FF5JgUHf+Vm2amq + qK4dBPixsqy66GLp2+A+t48VoNctfRuCcsm3gU+lVPPuslxmKOIl18bTCH324ShyPO7I6Ny39+sV + mUjh6/64eq1kl9UG6H87uqJ6DaruI5BblJcBnTGyiR6LcLRr2WBbLF3w8f0ZC7QFPwxJRvgZjKEV + aL8SzWJKVnrzjjlRC0gi8bodJBFRLkISiadyx3565ZYAiVzXKQESuY4bgBgOAokTFgptVCwcbI5N + msK/5/vVJt1O8hrwkzevL0/GEsi+ICBl/iJhMFwDkwOev1Eltf68ncPQJ/8jxHiUy4JMjI91XgEL + 38SnjtcuIFo1slVFdSeGLqqe0t5Z7teI/4hbQeKmrEDCGeT+PvyArwzEi8IsDPcfxT4fC4IZU3g/ + 9ZWH+DQoHoLC+fF8InAr4yyt+7ZsfWAQnpsns15VifbVA6huaVGz6adITg5locIuZE44ZoFjJ5Fk + 8lJgzLedi64veSamMkx/f+dEsb08Q69b3Q6ScuF2oKd0wq8vLr3i7cDd0ISr8/izpzxAfLURDyJX + hWpcrrbbGYKI5MMzrpef2VqpGfAoKwhNCTqZc15y/OvZugye01L2QaQi3ykllurqLKiHYlHHBRkK + Ly7MYZXyWEzUN6fYrRFqmO86Q36r1reK3vxcPx7ogryQZjm6uLxo7sckX/go3H2XcJLgc9eo9aJe + ZgSIuH4RHq6qx8F5MPzPbDlRKm7dksIECmEOT0J2yWOQxXK4Xe03k3QsXT44McALBPd4cn599eqk + MDkykqOqXoHVxD7PbUBQkmhPmvb5LIBlqsYqN90Az4S+ogMuCqkzz3HpbH9NxPhvN6tvIKmK2JnM + j6XCP+azxWzX2kTlZzemXsWWt6brV+A1GxRHmBydc1u07iA80AFRKR85vQftjS0hIdlZnqbHZlMQ + mXpBKObr5RFwcU7FtuiWeZejSYlpXRmk1axFnCy5gnkcEZ3RDzps7Kqah0GLwEh63bbmYVAOjKSn + WhUrGQ/cuFjVwH82DkEsceNRGIcx95qNB4sN0P8foi95Eer/Wl/ydFUnz35B6XXrqk5eaUHpqYL7 + fRGWMkcCxouZI2PGwyAA8Qn+DJkvM0fKh06gfJnYglfrm7C0uoKDixOXTstnd2TCm5kyVFALYRuG + nhuVEP6auqqWl6L6KtD5LkzUiTZSS1CqVT0oT6WaxRcseK6Kcn5b6cfTGZmcUKMxok9hvr31ABc2 + K2zEOGW6Ueya1BXGatw3MDELHEAJnm+EhRJJgaV0thZ+oZ7EAfIttb6fD6p7mJnoNtzNtZOEfT45 + Oxnuktl8uL1DDIaldYU+JyZvTt4cQFRpwoXzaTW1vJ9+inWA9M1WB7gv9bvvyKIeoHAjShG3YjIP + S7p+htV1I0M6zy6jM/fUCdtY53QbSwA+3UUegU89lFWOKIJxzEGUF2kPYxf+tvp+f5eud1SBO5lP + CW/QwMvr2C4/KoTb82MJt+dT+vy7MZ7U+3kyT0Sg1dEB8D4Fb+429zAuDH3pgSTJo7v7DTCtPsbY + Jg60EdSgv5p5gk4u0vVRISQAqZBgecgLOcmPVKKc9QzR2FuPPaPHHGpkH5H30P7uFhCQR1qA7fIv + 7MfTNq2yN/wBN/JEz5K1jkMJEblCJrufE5vV4DF94PT01OEPirmMA50eEXDn1GHtQtZUI+sECdWJ + mSEhn5IqN98upNPzUzDcLkFSqCzwiXKZCmuTL14efBFpU4yb41GMmxsbAR9Cht2ugfGDDDUafp0l + 9K+0K0hUTgGgmKqCkHwMxZjwPg5RPIALRgFp1XrTEcOLXHII5Sf0p/PyAyoBpYGIrTT8FBzHgB09 + kNX8uGslJFWLAvkkRczasK+h8TCMeqhiGnsq6jFUZkafuNsn7zdYhO/DTz4wutmYlqX7N1orSi0w + 2bqqXYr7UpD47+8cHtq7Hel1K8OZpFwwnNFTCbny+qxkCeURNxF0PffZUzcKueOPgHX6XtRsCf0y + B/rlMCpTmihArsS/XjCVtoYynzl9FNw+Omu2C175g4lesE2kstLFINGLVz/K4ngYO2W8ZRiPaGMf + xUNdFIJ4xEM6LtMZVTC4n+dKGeQ1e8qRqvkx3weG9wSBhAb1nSy3cjW/b5912FM+IMVihIRe+D1f + 8UrGvba9jf/aIccCPYYTw6CFf4QlM5BQUBzho6nDEcfq+gxb+J3oddvrMyz7negpXZ/vP70slUfn + YRgUr88xj2Gx/RGP/ciV1+dFLqKCavjBkRovTIFZ3Kjv99MyoDz8FTi9sDxXOZgcboKO5ONJmI9h + FKUrNS/HmIE3vO56DmMehCEvkip/SFNgD9w4US0+ShhEMS9c2p847URDa8P7bXIHYtoOXSCT1e2S + AASMSXFDp64nOSk6Rnp2eHmel4s1qnfGn9jQkFhHFIVTWrTn+uKSIdfvt3N//duLF5flyVtOh9f7 + G9wKUhglGMpd8p9Vsiy9/omfvQ78AW7RTFKhOuuOTMKymsDfbLwe/WijRyqNuOcFAy4fDSu5odcs + bTcIM0JCjBJG4G6RJ8eXOqSradFIovJK7SH12WWcrAxNLGFE5iyBpYyhMImE/8hVez7kGgocR0l8 + 3uvglEXtArdlG1uJT3VhSHzyId0OyeazKjby8nIsEhZUWpf8eIlnzRmP4vhkUPfaGRAaIDWRaQyv + 9hPZLYsXmPVJ1UJXUy1lOiEVwUteXSE3erOa386GX1PYCnPghCC+ZsGn1UO0VrdDTiY0MoS8oULX + ugfCxKCO2gEHKrHEd1yW3+kdpxUrhIjN3mYSGkAjSB+kee2j7FQvRWkpGY0GlazXCewIaxndtvHD + A2m4Mem6bw4VTW+DyuBLiv1gPBym1iAhBw7L0I9it50GrNvYox9RFwX0I/HQFlIhoyKs9DFDRter + hvqDozPUQnBVMpC/Ypf+qeO2KhqoGtmWDdSdGIUD1VNajJcfzv4+nK6woLb2j1Q8G77a/Ns3iWJl + BZ/LygoehSGrtz+v5i226c/BxH8QJPtHjj4/EIZ6ggt8u12HzmGBzpZNucyhuOA7hJrY3q0mXw4T + b8ReZaASYpP9ErdTzpnXjQlSvPHlO9YmuYdetzITSMoFMwE9JUHwzafLkpnAd4LQNBNEz55CE+a7 + IxY7cSSZ5vv9fDdTqz3eruH7BPKXwlJD5GpVjE7VRDTqKolckNl2CMwQsVxgCRGuE9tjPsj9Qkgk + IoqfGj8fvtmv2VqBvUgbBDzroaidE7vMdeJHaM2Hpb0RqoX+JjXDQitPML4Sk6xAN4bBDiWDrJtB + s4rg+xd/nH2sKh6ol/VmtYd1/GOMhS1zXv1tYS0GuJGUMh8wcjscqQYwEMgE9yxvnjKh6qLUj4O/ + wZ1EHyJXpD2StGIYFM/+4ooxbm9XpNetGIakXGAY9FQmKPx5HpUKW/p4M+Xj2b1nYy/gEQ9GXuCH + iH2ADOMNrNFGqUK57LDJarxJhUy02owIFn+3uk1FVVCxxz/iVns+TObblUbNB+lcbO2kilyWb6bM + LILXwAW92c92hNV//c+L364/vCbj1dmbM/UqpZ+rUGcNAn0/ibrlIGbmTRa6cRyWchBva6ZFz0l1 + Gc3ANwP1Zdbh6HCHZqz3ZJXNVk16IytXUnhzUewsjgKQdoqh+zXANeYQjM/yImb5WYNfckMN8Ajp + opUuCwSrdN0CVhIWU5im8zZoQb9EfqBYYKEk2+wMGymbYd5xpnaLeCjKOVhV5w2UErWPTedvbt1U + cyd0fLe0YsbZt4bPwWNaXvzK022nu/w8N3m2sJQL0YJDNn6aukZVnP65+zZqq/FSE1t9V3ZgaLv0 + TNYyMEIiJHIM/E3jpGSOdmmSZZgP6Pv8ZHCorUpkuljc8vxgQEt24ZRLKD0ZZWfQgvnGQ4Ta9i5d + JsiGu9uKrEqE9kutMaoAP7/8ye3pDXqzWR4RWBNUrB4VTMj2g84WPCL67hCyUUMGEMGV5OhPVktR + 6F06J48odKrNpUd00ihv6yBk33faGimpia2NUnZgmCjpmfLYrKUUjaxuOZ7PvmTRw+VHwzN4f4CN + REyOH1BUce8Yl7+GxCEThbKvBtEq8+S1sO+HOUEj2eSgIkdq7oRRrjqq6LEkGP4EFB4sdxDoRl+A + /q4dn7WVJhpPs0Y+dgN77Zlet0U9RsplzGN4KrF03rwsp/e7uDuLgMdxHMSIDQi3vTz31/u1knbg + eLxRNpGX6WecbYmUczstVxO0RMoZ5c1hzPE49x/MHLbaYnEmfdzz+l8URybkDGmaemTcCV3Hdf81 + eKWthhqJ6oBdDJW0XM9Yy0+blpTjphT1IrNk5rM1euLOQQqbT9j65HlmK1PmSERL3S+S5fDDH++Z + rPE32w5nC4wrEH5WtIpO9lhL6B64BXwNrMuXdDFLBrgxNIaByyNZp4+s1/dYSw/GvRPMRTqYbCxg + mRkr1NErR8UA/xRudShhoaTO/RjF5aGjhAMnUmpK/IadMrdVOrFqY6uoqC4MTUU+lOb++xtpKR4o + UGAQeXdm/VqlrSqZ8/rbxCsmCeu+MEnYYzJamJNVAFFwQK1LZm3F6HYWlBbJTI9fwEFOIXGxM+8z + TuQ0WSS3WOdutthXHp2HF5syYpRka26drtogBVvwCopVm7H76oPA55tTkKdVDjn68QwSjV9+7b4/ + MinJBpnKXknrjHMl+SFzpPfD4S2wnel1S++HoFzyfuBTkt9ef7oqYiGy2CuUrXS9Z095hKBcIx55 + IuC9KSnpZgP0y0lJvcEzVQSzG/b2sCBv5VKcsKab4xeDnI/xZcri5zga5f29m93eze8zoDH0Aetw + w3TI/va3sa6ZPkLrvBGrqcSZHUhuWBj0LsFSyFrkK7DcfNPB5R9nWuaCJZB2eJIdduV0W4y7yCP1 + oMz5Fdkr2vsR6/xwTPKAKvOST1EKlkpCWOem5melL2SE4twQD42p0iTfikLjqWfy1HOftTn1+Lrl + qReUS6cen8pciqvLa7907EMelY49LK3rhaOQcwFsJ8SmA1Za6Ymn2FET2Ov9Zr09VHmW2pWNfWYW + Y1B04GWKHodNE5QUPQtLmukidIu+yOoeMvhTLRjn6u0aIF4gGR4iOegyuQOxnPrge74/+Al25Ux2 + eBR25D7KmgYVn1+3Pa30oCPNz2ph+koD7wnQqm9bdR+EG7RQRgjUb66Y16Y+gXjdrj4BUS7WJxBP + FYbiO+69KFUo8KOwVKEA+ILL/BH8EaowtasSV3jnOoozkK/kSeBcn5R36Wi4pPyqmag1NqH4n6v1 + nHtna3Ht3yXbvKQLv8KRHsJoy7zo+RAWrBDqlmcON/udEGBuUrN69XK1WRT4iChHrbAfYTA3ZeGR + bLOwT+qcQU9gHNv98NX+C6xGcmLeFyC11iWj+X6Mxr3CddGQoFd384C+HjI37PniqRtq93uHwCP/ + kntoQAdLA1m7kdPLVVhH4VAlhl7uwCN9G8fcNKBDUFrE4ePXOBs/7eKqkg0eyX11MMOOucpaytgr + 95T5raylso2ttVR1YVhL5UO6szZwwuUFBIyhQjR9x/mg/heNpSgS61yHs4H10fwBsRQ9ntc21v3s + mHZyQf64s90xX6HfA/8LB14wT2cl8TPGW1Y6yrWyzkvS3ZiJSeqxOtRbzh2ZOetVHt5r5ieD+p/E + xDW0hB7gjzET78l/cJHXJNAZ4CH+PQ7DvyY76GQ+/znMIDSZgbWi+7/MoDUz8JUFMGZtsh7wdVsL + IFIuWwDhqcx6+Fiq6QiHMCgZAEH/dOEn0D893600AM6Wyzzq1WS2E9pcLi1qVMjRMQ0qk2QDH7BR + OTsyOWG3Lod9LJr6Nc2DBUCWLA4EzWwsKCH+w1yKqj3f0YOX6jFVZg/4oObVYbTkqWsNrfC9xQky + lbXIK6cmlIc/eMg1GODmyMyJsd8PAkKVMbE8GY3M7mjYtj6sglXfUViAViQfR0qX2Na0wMZR2KbA + 8qbIXsRhkEul6eezH39ENL7ioIHWjcI3wSlrKU2pRtbakerEVI/kU+Ko+2Tty8C2l6/OXsL/3g5h + Fod3KQZLAaGzj5e5eAhUW9VPw0/YdiAoUAyJ6w66gAd1DgnpCd820FTS7+I0i1bH430fy3yOADuS + JHzm8Eh/XSd4EderqEsi56mXwA5xfNtF8D46XMCAvqIfJGgragfGQwgq2ay2WfG/JL6V51AdtQZ2 + Vn8RNNT+8VyCSLKg8uB5WggHoz6y4zRFDg/K03Tkx/UWENEXTFjLg6lu71Df3mfBqRO0vLypjfXd + Lbswr256SDf3It2r8q6LdCaCknOINvu1rqtZQtERLcWNzSMCaQkZLTsSsseHPQoupwNAlMLKYRls + b+B4LcWorJE1cK/qxETulU9pMbZ3X5iCMEIg1N3dJl2J6jpmLdPB5dnv401K9U7p0fAa2g5WmxuC + 7Y1ltR40bpDEPgEK+5s9lj/LZ22sNrewof9TYx9qYFlOTGIJUoMh2BXkzMSlIMrzqVyNFhlItakN + J23kPCGjuAU4t8nNfLa9Ex4YOJL57EdQA6kW/Upfmfbf3QM8XAN1kPW8/MTImrWtl8d1ZKmiQxMh + ks3MLZGfloNuLbhwmNArc3WegezNTFCheZalcw/uDlnxTdxgN1Ir32I9kwdGz9Ltu9keST7ZruGq + RFyX3EmzIYChD4QmilM1naHBCuFeUMOxae8zTrKDaL+brQ9wvz5lMy+gnBaTO3UVXoCasfeJB/6W + McEK8ocRY7tQ/eUkLuB6jpD2j/qY/gr+BJzpy5VH8anjt7xcZSPry1V1Yl6u8ildrl8XCZNG3K/J + ZC/YE064rpL0RFn535wYSS7/IBToM2L1+qWBICiQUlnIe0JKZWTNWnWGBXVChxio/ka8VY08j4Nn + hvkxxfvi9JC0LfD+J6s9KOpThUhlidyK1DSX6P5hvu9QakSNDa6NtPmjHFMs8MiuqBeD5mCsR40n + 3dxfVdaQ8pz2RPhQnm4zW6pYaieMtIoG0km2k1saTZvZVEQ247IiOCJ55na4WpI0mSzxJbjhtiNZ + auQ/+LM5pMXqK21/EFzgeMNxWCJvajUoL4gDlu1ycyHOTODX0XAjG8N10INKySmo8+zKYS0KFNDr + Vi41SbngUqOnxFxffHrJzFwajwU8DoIClJj7bAzCR+j5I4aw0LJEQRUW/s1+OhZC0FZMO0zWczhi + a5FoS4LjFos6g5x3jxkiyXIKMwaNxC6VSKxAB/T3ZKocP99m8ymdCSWfqhfJ8/ZiP2VeyfUGRIfL + dPLFdITFDTHyns8dJgsfFAihgFagU0zdPkhntpzM1jPcsEhRTJKRqsPcOh+dSbL/THAdKbBAIwFy + AKEXTvcbXJWv6W2qECRJJTCGHTtuIVU8SxP3wjCM4uqqCeWdMhrSSo7fzCfhWnM+9W0CICzBkn0U + wqkzyHGfTO+XIjbzwfbaQJwV7WJ0gnggv15J8W1msI1y2UfmatXVGDqZKeB4w0LoUGlLoc9M7idV + elSzt0LKwqZCZX/t4fmh19Ux04uiz5udyBC7Jp60YgC2rf1Sa8GHDip4vSglkU8FtatS2sS+ZrmD + 0wqxi2ukXLfFfUWv2yLluuX7ip7SffXHy/MSdIcvUpBNpNwxjyM/dEY8jn2HW4SAGGEH5ODaDvl4 + 9X2VAEcR1baXU3pwOwfWIiIAxESVIxMWifjG3YpqukjBE0PA91uRD4li+ZIoCmILJGbEwuNP2Yuq + 8CYKG+LC+2M66TPUJH/RwCnirle6uzpV54tZGIH4X7y1zOC0SsHS6MALI6vhZj0QE5NOp8MduF59 + klu+g5romLqomPqqhYpqc0jMj9mTdpuxtBOfg8hNUDgooyMsAQJRT1ZrFOaXw8+LCQNFDTj5Yi9Z + NJ5dDU7s+D1F6JSiY5JGhOK/RGROTXnHv2iMD2e+sUU6K6Bw0Gm3TXW0kMEjfnaAEPdkkh9o422S + /PB1yyQ/QbmU5IdP6X5FN6NTzvFjfinHD+NvQm8UeBhxKtXB1fyeqv+lQ5dAfP9Mk+1u+AEU6yWJ + v2fCb/FCTs+5Kn6WQ29KylXTblZfkfl8OHtxnplDxEV4mUyYU5l4R46EwkVVh7EQe5gIV771gL9R + xYqqGnqgKJuoD3kY5n4IZkGUceA6nJcyxIXDIicp5qn5Qa0+aQxP32qKmCrSkZ+8EA5zAyBYHDDG + 4hAUPYnfjMt2l8IBksE8k9UYNjNCaMFCvpktzn8rTcVIonVJjObtMP38eTYRgnyhfMhAbNMsY04C + 3R9VayRTY4hrqclQ6wTHHNjD3M7p2N03LvYAfUVxp7TkvvZ0amrdiQ2Un4o2GWs9F+ng/v/9Lpjj + B2BWLXBn6HUr5igpF5gjPSXm+Pa/PrKwyBw9z3FM7SN49jQMeeB7I2CQrlewlcHZUCYabbMREHdm + 9uld+h1xV/I3kQw2p5jo7Sgf7wFCmkRhJvMuorkM5+nXdL6lwhP7CVIjnvn2+46FJZ4ptmhSozBE + UVDDl6KYxzx0i3zpM1o9ix9QI3z7teYjDPbw4pLVS32ODW2/Je0Fbj0L2lgqM7KirdlrcUlNBCHg + XofIDd6WNsVouF+PdayPEMMxpAFTPnbJTACvbxJgo+KbhIifzBNamQTY6ttheBoOv8J22m/xX95p + OLLZSQNxFBQDxmnuQ5iHOSBbGgpnaP8/EGV/iJgQG0uz3sKm1Z/v6q8oS/sUp7q/TTbPtOOoc3GV + HF2xCUwO0lI0bzBT+tKYajCR3sgLtiDWOc9HeiPPeRTLWb/ZiiyUsUbs6s1dp67cQGkjcYsLl163 + 1Ubi8oVLT+nCffnidakuFhMJeaYy8jQA1hOzURDEsRPTffs7RVQYCAwiOUTlJSgL8+nwfDqBY6HF + ThRd0+8zmQiA+jQaQYAXkpiDKGlwYU/upL8SXy+GbwCnfHnzmZ/KGxf/3s09lUPSwELhnqfQgHOE + VATTGtHWblbTwh0YscCKYr48d3VYUJ4shhDVk3U8L3KLNWgK814oRx6ZRcEy1YKziPGwmJ9mEYFo + 4okE9TZEOdzBdbr57ePdRn133ldlJkDgRbqlupIZYrHhpcrK2MBR/rbafBGXJzqFkFppdz03AwYx + ZiPzoujr/bkK1qOrWWzbtXIxVe7aAZ6gTE/i3kDONbKC0oKU2MNDhIFWWU0eLKz0GMJ1H384UMeW + Tkd/2UCeanEPlM7+Q/uo/kJBiIfn6X+DEH9KEGKogxBZfOpE7UIQRRPrAETqwAw/FM9IAlkvLCP7 + 359dqvm7xDaycnvsua7rnAyQDgX4y8K4CBmMswLtfv/9d1B5tpNkamnq/2kh/C1ALB6KoUeRGW6x + XU1n+4WIV7tbLdLVdpdUTof90GUAvk0N6eZoiFBz92+YctAcWNH7LaH1YDeQ35MPHhHktmiQtR9K + e0r1oRrHZAt0igLtmKjUJnj0L307NpMPnVAys8OUrE9iK6qP5J61T/P9693akSzs47AW3kt63bKw + j6BcKuyDT6X38o/3bhEZnruOF5Qq+7AwgiGPWBgHjk8XvK5fs9qkmZ2tVO5Z+h1XC7cccWqQMAv9 + 1EfcIMoI98KSWm9NzFC9Xc+NH66ANrE1zUSV1akc+xIXitVeXpS+d3BRO8fSf5ifgecCoTNZYiEf + 6A0vKIUuLzLjpLEbmyUbkBZ3KR69VJESkygdYAOxTXSdH7jYeolEianwZ9MU2QtpXYg11fD0HZfl + OWDXZI6jECUkkcCX5S7NODBjaA+bJ3IAPsHL5l6dP0vJxKZlp84P5/78fAeDJOWqON48KSH8wkqn + 7aKaXBaTmqTBZFr6PNTdFBs54w7vkDMOjVrljGMn5ZxxeCr9wZdXw+kKedd2+ATdden33VAHcJ8M + 8PcN/DPR0Q8maVQmowCUyZ8Yxaam13X09Iahe+q0KpKVNbKeXtWJOb3yqazPiRpnXqjJZwaWfpwA + d92OLy4uClWycn0J5R0LeA666AWRF2VlobH7fmRkF2tXC75+v5lNV98RyFJVaTlCSFXLyhTkBajd + LQ+NbmMLeaG6MCAv5ENaUsNEXjZ85lcOrSJiO28yoeL9bMs8Vb7Zd4M4CBmWb4anAt3XiygZ9GiN + O3R8IpDh72yBEaa3rVX/IFQn0x6WQ7fuBOqhroOYu0HRCgIDxA+qYr41n+Bi7SI9FUmhLFaCCRog + ArQrdnt8mkgY+ubyjLJxdIWdAqJkX1gh+8bYidzq53ejFU/uTu3QIOM6snZzUDnYiBl4b+8vrhn/ + 7f3Fh5eUbpILO1tSguWBzH8nphuJYpfzn4vmpqopsRGQekMGs/uIY2XQjhBemkCHrGeXBUxsuw/v + r+uDBXvNWVIXjUyEfed4bRJhxet2ibBEuZgIK56S6eDN+T9cw3Lghm7AA6ecB+uHse+O/MgLpOHg + rcYWqMQpxeK2aGKbphqiMsvqHpkBCiI3I0v2EQFX1Br4rz9izhg+8+5+ni7T8ce3r5+XYgBVINjN + fS5oK/tbmcRQVuTNGUaFgePN5KvblGF0IAkIbRKlqD01DypYSIhluWnBnOuTmnADN/QL8QF5iNkY + lB8WRMX6xvCJgjjFvq72y6muVFeIDQ9C1/lXfXgzc6KQBZz9a/DXWuwBbvsspdXjwhLiE+ijGo0a + Y9taxdqY0Z5erV1EVipoWtkGsvWR2j81Bygmv4qeH1XSsD3yAx6TPCnrs2Yv0XmO6GE+W6+OQnX0 + eCStQLokz1FXiJupoC/ZqRO2VUGpkb0KKjspqKD0lO4FGOgEfZPqc5QaL7HHsiTcss4piRNGTURq + yfH4ZVblZluJSSQAOCRqyM/Fro/2j7joh8Xmpck6QmlWW4XSrP5+5YSefWAjvW4lbUjKBWmDnspa + ln+8KaUxcx8nPu+n4M+eYmkWJx7BH4ESN66MmlIkdI/V0SHruKpcubotZwmrdTU9CrVgFmhjisNS + Cu/V2YfScTXC2UHBrnMAMNgwfliMjpfUxmp88kuMSzpwgpogQTXMwTlqqxuM2tMmVGVXFpVuJePY + Us4F7K7xm+2arVXuEWa7Dq+SZT4hDW/Mq2SrtiKlYYxkECDW9E4wajTn8d0A34M3R0YEYXE49H2j + inY4iNnybnYzk5f7n5sbth7gntGhfJFLEfcBwVcXlh++clV/gGsv1+M8II/Dx9AdJ6qTwtYjagMZ + XHDvyY3W6RqkKh3nV3Bv2GtS9LoVb5OUC7yNnsoqHf9865mqFMP9Kmq451Up/9mYeR4MesS8MFBg + tpd7iZOClRFXm9/ycex6l+eOVRZfczNTqCvPVfrLdsi8MQsKLqVteouaOuW1b0FcxltirfpF0Wm1 + VdFJ+EoxYgmBRKAPI7kdzywlzAtRZo4SOTCcObGZ9ZcJA1kMHokVp2oh3+68sobVAbOIh3Hg94BZ + VE0n78Q5kCJWW8DcoP0w4EUVIVa4dNmeKCSzeuG/apKtjMHqPqrkK4MiC2rTtxTFwV9/bw/E4dcK + ZSATc326pd5cXgyxDATILRpfYneEWtmRakOoXauQvVptklw9WKleee03+OJ+XhXidgAeIorraXXz + z4psTnFfFY5zayohNalnEHYX789AW1Iyy8/3mmsfqky3esc9p0W6lXjdLt2KKBfTrcRTmW71RwFc + iWygvlPKt/KiAMbgxa5SSi5lARahmUlI/pKxa38zgye72VLyn1y2lIjbWSZrAehKmVgo+igLyJOz + y/OTkVJ3KUWr2BxeEciWwB43s5u9aI+xuypTLl935rnJZ+8nmN4uWLCETJV5W6sKmCU1zHF5mKZO + ZWY05aO0HC9ALlG8ENPlf2AJq3TdHGHX4fW3OKwld7zi5SW/L2drNFQ1x7xfawdqoB8h40OLm5iK + 3/TSidtoVr4enZh16wMWA69H5UCcGq5UI4MMOunYhXQlp/PVspIwr810qyas93kOkE9XDaxehMBn + Bydo8Bc7ZAPkN1qj5Q7hKTpUwLJhcay8fbgdDDpN+8iKIi4Rvmmzul1lmh5iD46KGXAou9jugFvN + GnIXckQaPMiYIIsa3A7BJpupB9bDbBO8xgg2oJ7LF5c9oVKjR26LSn/sTxpLg53i6OiLo0ttOc0z + YmvsaU/ngKB+ZAmL9i6oVqanxj2PEgVpGXXyR+NAlAArsvb+/P3K8VqY1el1KwFWUi4IsPSUBNhP + F5d+yaweYZ3AvFndffbU56CvhyOf8ziS+Dyf5ms2vFAbHuZQAfb4Uhj8NFv7tRH/1TaRoGC3yRvB + 8deIP5RNBDTh+eoWD7F6VkkHXYYFOhqquQqoqMqGjhO3Hg2T4aeb+fBJxnrmsy86+O4kg6mQfCoV + Asv1YueuM9a0Wv57f4uyxwBXUokGLPQpMu9Y3uEaocTp8isIFVVpa49TUdS3Qj8h0a4uo8XZS+ac + OmErh6lqZOsw1Z0YDlP1VB7By9cOj8KB/FMBXuXDnzUZdI2CFor7wnVl3JIZioGhizNR5QDk1bsk + B4B28Y8GNDcbJ6nLXEYc8zt8NQgaE7GerZA37ZyxviMDAddroHaca1UtvIiF//M18E3fnk/T61Z8 + WlIu8Gl6Snz61dXfTT7t8dDjLDT9n2707CmHxzwewR9xJAvVvr1fr5QtcvjH1WvJnv/8vIEOvj1I + AW7mxFgIvqSwHwYg48y3oplhMNZgCTPnEJ3BQDPM2GPHpDS1iIl5AHDbXwGS9hiUV8/RLroWwY7n + 9lU/ziurfpznqn5c/vHOq/LQ8bKHzo1ZxEfMw12mTX03QlnLucgXyQL0jlmyxDIEGJMPIxSJFTcw + uOfw830mQwAjnq72QGCMJoMlQkO+FBWi0+QLZrwks41OspzX5FgeiF/IWU/i0PMdLyieXBxXcayV + J9iN4jqzkkE6k7xQnUi/T0gxou8ZDW+T9fjzbD4vxkkE3HSbHSRvTJ05aQZdEOprjYTc9ZkX/2tQ + +P6Lf4xA4pumm9sV3vtAcvxttk3zWqAU+V4uYWHG72af2Vp4ka6SKQ/XdJiE8UgNCXGwoJOKQQtA + LQyllrtoBUsKmurw3ytK5Hzy4e2rv588H+Z+RvJN+2yA2zrzPYGQICaYguvwfRjUvBamp9nXxKko + s6QitmhbAuIiP7w77GxRLsXONewGKz0Y6LgH6HydJbhONctk10tM6AP5ZBKxLZIFhjlSEE27kItj + NYFi6/opl4hZJGAmt+iEPRTkdqgudqi2UkcKEUEHUF2snYjC7ASL4EoXnigdI9ZN8uIqpviwpC0S + KnqIsukD7SAjRck0On7rfn48VS+ICPYDTZrzDrtMyRiclLvzcwYC06nAyrbV7XQbO9Uu6yKn2emH + JG+sJgm3QVEyImFLGCWFd/9AovkG2ItI0+RuTGUdf2moo+N9ARJiyio2uNHk4Pq+6aK3AUfKZSuo + ClrISn+xOsH/s8v0dkXu+TUrAv8vvk/jneKqO8V74Z6KSnj2Vwo1sb1RZAfGhULP6D6ZfPvMpTaa + dzGLgOEtyvhCg8hdDdLyB68J/eV8OvH1NjoXxGReOIsiz48daIFPxW3iOy4h9rmxkedq9DYScrL4 + V9oiJxWLqIjrHmlJHa89n4hc8mYZn9+jMN1fuHTWmvQp6wlTVmvPU1Zr1+OnuDItbNbUxNZiLTsw + 7NX0jHbem7NraaEesJE7Rg10jKDiyRJDLOugJ3KU0YSt4CD9WCal56HvLTLampVOh4gWhmcZJlnp + kXbJfpZsJyu0KKZUKRNoiH+hT2fRDuXA9TzGDZIy4vWo8dK25kowI7pt62m1CuPsgcQPCNqM45ww + s91vPsN5a3uhHGWBdRnnMqZBpPRPO1pg+9KBe9QI0VPhVRy3IjdohUDsuSyQ2XW77togJYVcXrGw + hceHXrer20mUi3U7xVMZWnr5gpdDS0OE2TULdz6NoigOolEUM8eVfsHrFFEfhiBg3abbXT4Bu2jB + vBg+KTxK19vZfLU8KeReL5FRzYf3ojyZRlkQXkNtIzQSrtfCZpnsRBTcG/bb9ZACjW4w9xhm4zl0 + usNEVqAB4gWP1rmgOBlNur4pVwGQ4yt+SVVEaRTwOpsu99DQGZWyN/IWz8+IQm9azX0r23MuQLV6 + sHWG8zqUwmrL9jy5vcWtLY2QNdGYARYbakU2TaZWZOuCPKvJLmbAhneTu0rjO4+j2mBOJ+SuX6y8 + lqmKReNw0VtQQlkojHLwqx+WAbIKXSbUDeM+rfikT9dvCTuhnYfiWq/fsJZkItOAWF57SzqklxR3 + pFXj44oQ/AzFgWr8lRib1dd2RYE+0u6EjFvIgc28/qBE24fr4Nex+D9eY70SqwIdQRWfYVRSS9hD + 3co6hkp3YwZRqccSdqIKa03H+OeNIk0vqnvjav7ZtLJv4IFQXX3fIyu76wr+U0muvQGtK2NhgR/V + Y83VnrHD41GrHSowROZ5p6xNUQrVxBYKUXZgICHSsxxSNRmWRfU1Iw4pv1bWL+Z6haXlkU9WicdU + 0I+BNu0YZzgdFz6qw+oeQ7wRxKC3yoEwOIrEerOa3846Z2s++qTUkBDv6CuT9Rqr2bcVDx5BeJiy + cziBr31NapK+ptvZpBECudl04mVlX4okWwhtkl1X7/SW9QPt3SF99nqofmSvdSkV+481+4ej1M7y + rNtYXwCyC/MGoIfKj64nHlSr5eB6tvBEKNb7ZM7xXlxNCBjqCT3OPzvRrg+u3B6BE8Yx804Gn3fC + h+5xkDXJ6xExsY8P5c8dTI0/WuPICLSD133AfDm4Hg2PpIFQ3GZSosARxyPZ7ZLJnRCCQWFXuY9w + 0KEDLMKdiii4RgTYB4TNFabjxwJm+zOUz4gc0Ln1aMvCZQ7p+9k2GIsz2z/OasU2kzzMp8jjl1cg + vdtHHtPrVnZgSblgB6anMvL47GUJ+MwJvQLKavBsDDMVMhaM8M/A95tD/6cb6GFSsq1m+noBqrQW + qcbzA+7EZRSclqBpJp3Hld2lsGDW9WleOfwX4CTT2RYm8R4xySYbzNya5jBGMQwI3koxLvQqmfp8 + PfwM1wwMd5PCrft5voeTvZ3kE1CfvHl9eTL+vCdLock5ib+ZeLR4fcn5H1xcnesIXx57VLjFZUbG + OGagL25U/vtB/vizDFk/1hSltFhfQPr/+eKKx8H5+MyaCagGVmxAUy8wAvVcsoK3f6AekfcJuZ4b + hWhczTMD79k4wlskHkWY2iJ14AuBGvp5lgqEPOR5CMq9XotYDMGgk80muR/fiA2bs00ny0SgDxCA + HzSEa2j8DVVkGeJ8D+KEKCGEzJX4y80GBj4ZJ2UOIwPismeVBzFyTe+COtCPijOo9CEOwogP/1A7 + RoaSvrjkrrAz8TZGLt3I0saVdZI3cemntPZ3+WtAZQdONPAjzOBt7geDKoi2jIehqprSh4u/ky5s + bXbyXVmFnbMWWdX0umUVdkG5VIUdn9JBvbq8ds5KZdhhZCVYoJjjhIxizsKY6WwhmdurDohEEiEc + 2yeec30y3MxupEdJmh1HwyWcwfl9DhwY7oWr9dZ5AWfQcE6BNgJTpyAhWHQ93GAcVILeGIr2Us00 + AB+8l8IPoM7gpwnmATSne5zS283qG7RBS9XIaHEDW05V8N4qBDTiD9hBBW+gKFPEHhGfWvrI4RPE + gdsPX+2/wJIkJwU8vdoib7Hvx75yIWYsJLeN8CzsZru9nG7Zs5nu6Ia1leaNDooArVk0ThFVL4Cj + VYkBr0nkpkBMiZoInY2LLFmUc0uXCZIo4PCYJdwz9Nco4EEQu1nu+l9ytw3EQdSAOZ4XSMAcoTq2 + nltbzRGuCsLFQx5H9huKuNE45TDhFx+vmQgGT4XhDrj29aexmBpB2j/VMwWjeGf8BrxpMttKiWWj + MV8nm9kajoiiM8pojDSBkzYfEbDGj4DB43xT4F0iage6fxtjrhMsh/k1vQ0q8Ci9W5AGGQUNw6JB + rUzZYEMIZCCdmL1uxZVtKFTLz7yioF/vAvEB5Zy8hZrZtfQuyLyEOl7dihrnAdcf03wH2EgZmN8d + q2+jzbvOMbrWaDWuE1AYYOxcA1tP66fsATzQoZznw7eVlQB2DL0me6+vA435a8ZPmd/StysbWbt2 + VSemZ1c+JVHqP6CADz/DlGdwsYN1Mke913BnmwQFUEYgQthZ5LLaXCVF6Mh8KA/kRqEWf00me6zN + Ror+SOT6Jns423cJ6CddJGJx69FBIBGfgo9VR0cI2zlp/niFwNKP9ThBZkStQk7QeWK/dU50ZXFo + YNOPJ/db/BN29lhutnlqG4Zhvft6yp/0fZXr4gbeqcNa5bpQE9tcF9mBketCzxqU3ZL7JyMkUlZc + f9AHYpKstiPlpYPFQNTkBdLG5PiuvZmZXre0LwnKJesSPpUq66s3vKCxstjnYcmy5Lpx4PojFwQx + xpqNzDcboF9hZP4LmoBAgvGVjaSH8m5+qLORoxf+KXPa3KVZI+t8ZNWJmZAsn9Ii//Nlsbjux6tX + /1WKfvqYfmeFQJkcfTxqbsBlrjFxu4W1KG954VHtrEwlwn0h6R8f1ORrEDD3ZdAuTVw1sU6nog7M + dCrxjI5ssl5K8x5GED5J1vvNDNkSwhBidVvQ88W/EaH+ZDi/Ny6M/BKdXY61kocvnQHhAVIXolAQ + xjKbjxA08pnMm1QQhGn7fi9iBhCzLm1TQaUHmBDBr6tgQgxSiMG7F+BmuukDgGz0oNX92FIsPegn + MZ3jDpuwXUeeny+behQdbYE+npZMmSPggils/p1MFugjCAjUD3E8quCfND6k+7ex/zfgcKtpCsdQ + a7zNX1VzIFkgM/47rZTikYSXd/muVUkdet0ue+pdVUkdeipL6nx8zeKiBd7nnlPMnhrDpgKhbeRz + h+OXGxV1rscJXPWYjoZFIWciZz4HEEyVIvPyuLKdpl+BGYqMNpnqIIEZpWC0nsNIe/e+Z4JR63FX + 5iNFoZntlIfQ46A1AAf9IRiqhdwa2E17mew7E+7r6rCmY1zywiOPrnOmIVX92O3Dd660Ll/q/Oob + 2gWL1VL1MtQRtJivvqOLNl1td4l9qNbgJ/jacUfAaRSsbiYiELFa5v28UI6zay6DRyDtq++z6Uo4 + EnbdqflYQg6bvD572U1VDlRQkRu3YI/0umVQkaBcCirCp8QeP5y/KGp73AkcvxxUxAPQ9rwR/hkp + PNEPYmMCfzxfyZoKQG1G5Q8ETGAuhS4ZLtXbGUo2PL8qpdbdAe8gPO3T4cUO6ZlIdkj95YaVqglr + gLsP53z4RPc2kWPjJ5LrfphUJJNahSnlQKhB6cX84kpYU61sTGCTieiJmoIkjhsys4di7eR8L1nK + Y2EipePL7FvsvsvVHGeUINpTMyPSYYWc2Jq+B9f5RQTtPt2AeEPF7nGmzW6ztVUqlnDtvdhvgvVz + /QyPi1jLjy8uhV8LsQrkXBUI3iCKMV6jOyoEC3fDbDdL5PwSOe2oE2KUrCtJMy4ieQ2KRWDEu/2C + 9owAQsQDocOkIscfyJkS8qb1vJc3tV6CEodo8Es9bMe1qpjrZ6krmnxLbcz1fVKpagc8onw3LYy0 + NdiStVL4/yzQPpD9pd8wghb2jKzOBpK2CmnSJnhOF6f2fOTK4HWl6cd0xa9XWFaj71WswO54eNXz + uNZV9q6+XGTMLW/dyUqyAuu6DDl6XhW9Crbe5lwfQ7bu1PYB8ui5vsS9k3ppVnug/ZooIYdl2R8v + vZaZnlkj+/wP2UkhAYSekthCHo66hL7KjJpSxp/qBhM+eE85f9BeHF2ZnN2dDGnu2gnVQKi+oHHE + lQIhGIgm1qhH1BoTWCzIyZyrsS6+3n5oPyE98GEwjh6Jy9J3aTrN3dIyrewhmZITuRqwqOv4GhkU + VzXt24SJ0uu2Ne0rwkTpKWlh15fn5Zr2XqGmA9a09wIWeu7IC7jrxs0+t39vgH65pkNvpqWr3IVg + qjS8vhaEE7ucRT/EWPQ8S9uT0OtKptsKjeMugT+z+r75z5muMNjv+bBQrefjIuEOTKi0zma6w5ur + M9Ji6J8vry7ZaPjtbja5K5KgF4iQLgLw/vzjmA0+vj/jWvNww5CK1Hs5eWauBMycBvRoLTm6/cHY + sspej4pI6y3oSwilshJHPrIvtwDS7tGR9bjKh+ixqGV6gGxi60OUHRg+RHomTTljUBZ2pjE4Q76Q + p+Rk8CHZnQ2b3tUB2gXgRtk/+hEjJ5J+XwIDqgipIvpd46m65yUd3uz2AVEdEJMxT13cl2Kaj/BR + C4dUTDFE6VqgWCTz9V0yrlq6PnLUO1V10ZJMb0C7gafCJfxXIJ+3ijzUbWyDJVQXRqyEfEiHKrkh + E7ao2UZ4p4S8PMyeF0MkFFUOglkYSzT2wBWi3udkBzMiTkilyQMDBZvLMTzcLdAiUvDYeo+errSa + lUZa7XfH1QzLzi15WueztYjt3OyqUSJsDiHsbEJ2ypa7o+ciZFTFtbR9jji86sz4SkHn8Zl3yng7 + BV01slXQdSeGgq6etgrcyxETuAu+qGnnhIxTPFE6awFM8HiTWfsD5lexSwGFGb69crCsva3KQ69b + qTySckHloaek8rw4L2ezs8gtuOWdZ08ZcEFMZo9iOE60PV6svg/Pf3s53C5XIi9mMtkvlEGVtJ8X + k2m5+vxPzGkPYsePWVGFEmQE/i68VKlLBWFgqDxnecc7aFpe0TUkp0TdDua3otHcq8kD0/QGr7Zb + iS+pBLNSoXRjxkXKVX5BBri2uqCeE/GB7FowMHOADRb7/rLN29150hKd1aEortDBi1YbLnqJBu8r + MDsIlbLB/HOQMbx2aRmqka3CoTsxVA71VMpHuSSKdLNIc3JSxU8jreNjMGS+C4wmjWWtgeONsGQC + zw3gEQCZHVX6pXtaxV8NW6x9SRoBplK1H/q0QEbKAhnGrSyQ8LqtBRIply2Q8FRexx/OSnEgeKpK + Fkg/gr/EI5SSffegBTKMKyyQf8WofzfynAz4IYizqH3Paa2Hqkb2Ufuyk0LUPj2lRZJxqQvcfHiz + FjTPAz8bvaBm+sDFNyiQGIsArLZH0/M8HpjOrBajzaLFH05BsNdNH1rV+HFKfCu1BU9Yj3UkvYDc + 73LTi20mN33nAmHSz1U+Rsdb11gQ+cJQOkNT+FFYzhEV3BOxIZp9VtrdRupbcj+2PXc9Ca6howwU + weugZQqUbmNrnlBdGNYJ+VBm22wm0mZ+dnXJXTFjy/Fqc5ssZ//JASYP8Off6n/XpvKzzcT1BkiW + ogkiCR/JCDtCtMfgEGkOEUD1OuKt865yMdI2o/8ZfhW6i4w7qoJiLGXOuHBLi51pRjTZU3xAqfeB + NMXeqyRCIz/Qjb4gkEnraDs/IkXjbLPGHXfQ2WW/RzwCf6/cg53JdigM6Yb5gXRjI4Tf9vd3jue2 + kLLF63ZSNlEuStniKbGON39eBmU/P4tKUrYbIPscwR8CQ7ZRyp4D/T78/CyGrsOgZOzK2dlXyyK1 + uGXUwKOS2X2Z0NjdKSL2pDlBVgbYkGJOXl0x3mIv0utWe1FSLuxFekp78c/z311jL4aw+NwtIJOF + z556jhc58chzAjeSGl+hktpYFKcBqXqbK7V6oeMb5EadfHG7Rd1nuyqKWOApm2eOTLGym4kGFgU2 + 5LI9WvyOysh9EG5YTZiLQbaEAdZQ5NhEBAuiA/QHlxnwSDodSTSPJPOCjRU0aHltQJTEgoPPdWg5 + iBLyEocdaAKQDKeYynk7vLtfp5udYK5bKlyMhTuLHwH3/z/WWw/N71vY00At1QZlNccyGubtZsN9 + AROmO5aY7LJjGPHZ5djF++buG5we3LM6zz7m/rGVquslDxlyVgWWYsUbuqGt9CfIHKkoUmBG7Rcf + ap1DsUmanLL9lG2sFqp6qPl4dMHGmEzJuuxt++jMv2xB7Oal/8tVgA6NCtBO0M4gKNu0qQGNXZSK + QMNDGe119vLybS735vX7D8MsHzJv+bN/M9+zCF5hIszL9xlZWzDpMpE5Yti+Zfji/1refpLlLQp9 + wTnMle8D06Al4R+Q2qtOq0eJuaC6eS0Sc8Xrdom5RLmYmCueknj+/uPrcmIuC5xSYq4LWkjgjVyY + zCwtF0VO7FE57LfQ8WyO85Asp7+tNvmC6Zj3jiG2ouxlIaoqS1DaSjH+/e5zOXm2k4oYcYToKUnf + 1nHlOQxbj8Fdy4tlRguF4Q3p2o3DVsRaI/gaoRUBrE7g/Gvw3pjcRSJ2iCK9u0t2xXhxTEwdwxOQ + aUXN0FspYZurVEgXfHK1XoH8fUKJtav9GmufFCYDf8pHNGNadT4ZbYD7T+fBcocP5KwJcahArB0D + sqZSD/3aFWu1vcLeUtc/cAv4RRrZLrC/CfEg4OtXR2RJWlB4kJQexV91yCF76Z2ylgWhRBPrfEDq + wMwGFM+Iz97cb5iqC4UybCbCmpLy4P3ZpZIm5R8voOkA2wuzPXOV2Z6Efnj/999/R8V7kkzb6j5O + SNhlk9Xy3/tO1Zmc0M9qFlGtqASabpHFGEBXsMBAbEVaiUXJ3CPUbWvJoHedXhOOY1/NinB95Wdi + OdvJgmewjb7WkK/P6nUxfRYbYDCI8oYA/f1cIBfMRLXdReYkyQaBDdrqlnAcqLPZ7VJd1Eqqlvaa + /OYRt4nuUJpXbD7uIaPuevYQ/49Ulb2Qyp+V2VOrisH9ZGr+BfX2QN1UrnPqsHauZ2pie1PJDoyb + ip7RTbVNJ6F0PF/DX2WW4iD/d/EK3UZO2FM0JNnRTDQJLbIeXz4WexAb+NUV8mCKM2yTJm5fp9ah + JBqLwR/gvEzCX+Z93mdXr7MjXsGT21g6fkhFgJpoT7EWYhXGuVKYtbVS7XLxHNpEOEe3+2R5Px/n + mHT6HU7S8jY9nEppbyPpqcPmOe6U86b4igjG/vP8CtQhewcgvW5lYZCUCxYGeipDPj+9dIspGCyO + HdMb7frPnnIeuTAIjExRJgaVeD1bfl3NsXIUXhn76RjRPWGd8MtFDvZ0tp6jkkzaxFbB74H0g2iI + MEnQSMzeOtnBdYIEt7s0mSpQr2+z+ZS8JzeztfAmqBdlosd+6pYzPR5bzcH9dGhOjOmk5lGt6QCG + BvzG+dfgvFiW5/q1e4MhRCrIQz7+xIfb5dWHywec+oHYOdoPF/ixDNAzgywrvtpayXTcOIfwuiFb + AQx/NhFF6tDvKP6V1mSHNwkpR1fRjVwqeJ4fU7sh2FE4AC/1sxLWZAEUsctwux0UzPsBAekll8Zl + nLCrjZkv3AMjurkFgC9iHxGBRYq3xqzqKm1CVOorBjLSSZqv2KXbrq5C1sg6SVN1YiZpyqe5mioa + MiMPzzlo+MmgjiUFw8gjSTUm1Lm8Ri7DDMozldWk1NeB3CbM19N9RMi46/oZgGrJUNB6WH35wH6O + /VIYHSONwZNQ9a8fKjVly0uZAcl8srpbFVFhn6Cz8ulJL74pa3bzACR/oKNLJ6qEsXfqBK280tTE + 1iktOzB80vSM2MnHlx+HiN86KeTcpZtBw085ypiu5GH1Fju11zpYtbcsvkeQBjdAZ07khw3f05jF + ZospEBGy8Zt3LGiR0Uav25VeJcrF0qviqcTU+nTmlxLMeRCXKq+yKAClaITo755rajdG4jPeADMR + /X4vi0/mkMXFOm33a3EBpISAfH4/YWvDSzVNPyNnniT7LYXT42vYhOb0M/r7khuYbxSKzz6+Aclv + ikrHGm+cZKEk88lqIzg82ql3UhG63if+w4F99aUJCZlbVu6Unui6mqVwk7M6rcjF+BIvg//6FdZp + gBtShx6jtwj+jB2CEE/SzepGIAjS2Nu4NFvltqvzqUE5Yc+3K16jmlibNakD06wpntE5hfaqfBSV + I0AfBNBMxM3+eSWgnHMRR5fvL14OGWeMuxGCdR5u8h57GIh+UOJ0mSMvCZ8wirPSCDZiY5V01Y1S + c+54XxLj0YFHAkzKo1rdViskQsaapLCqKey3hx8nQUVcYfh7fisMf3jdFsMfKZcx/OEpnaC3//XR + LYUK+agHFTH8WcBjLxzBn16A2hYeunerb8Pk82eEtLvXGbd5aUDD6/8bdgioyhhHJHLAgI2mG4Jr + GOV1nxkW18AizcIqOAf68PLd7PZOk5+AAjKjQHC6vd5+35WTA1pF9efC42Me89AtXmGfcWsXv60y + tN93/br64aB+sMiLnSLxqnmro11XOrx32vl7HXQPDv8r3eu4ny1oM98PI6tx66v+Lv1uUDYv98A7 + OA2Dn7szB3isdARU6Lt9uNPgu11So3MJ6EcQE7dOaaZ/s3D49ghOAiKjZ6g1nzMb2GHO/zi0Isfn + zDdWtj2ahzZxuBR6s93fJptnykAx3N4vjqYrNo/JyQ5qcBa+f1mswThjLTXDSqNTJ7oHxyuYkdgx + ee51PF3QjGO5cDcgCcGPGfx935AvkSvFBhB77BVket1SbBCUS2IDPpUK8ruXJQUZSyEWxYanDEVm + xxnhnxEWWRQhCCIKFg2B70BiS0RssQgyerm+YWzMlFo6n5bV0jcXH651crLhCYuYqfPlCu7Ale4w + 1yveYC/rwoWDMLQipS8ssxqJrEM5V+Z/I9aXB7WqqaKdr5qDl5TxzU/EtIyGl9vPjP7g9Ie7PtHI + 0dthlr4nC1LmB7TazG5nS8Kyni3oOd1rWTUc6rrYcpGArrdMN/cD3AJZsZtYqKTwcYIdF1u141U4 + RZJKw6RaqbiOBOQ0ZrCV7+goh5fLsk8xBl9diqhEuy6mrocw2ojSFN5dOTyw1z3odSsmIikXmAg9 + lUzkVZmJuI5fQK73QPeIfc9nIxYT6jNFMcEhwH2eDHfj6w9nV6+GT7arORa4HH64fj1MdjvYqQQh + oQ09k3QNEt5JZvKBp/nQoZwAQwworWJA4tXJbDsGqbGoWDisRogOQbHwoxKKoxp7tUzumXqKIeg6 + Xuh5xUyD6o8x2E8U1cvilTRFKNG4mWbM2tHcpBgtu8HYZk1ypMa9ws8o0Hfa0S+kAhvEYufgpA5w + deVo5AJh4kbyvWguFP1kMDhiZm7S3bc0XQruCR8ikiWQh9O2oZM+kkXMkt0QS6zuhvGQupF7dTvA + s6G4qweC6k+NxztEtWUMnkWgOKw4vpnbJ/UkzY1jS5/pmRj3NGZZwbiw9+yE0n7CCzuVyjm6ws2B + YMIeMCAFYxWqrz6XcC9+W22+/FJaokdFxuGkX+rL6AhX+AFiPYZtH8i37kEY8cnld8XiqIXLT7xu + 5/IjykWXn3gqhZEPb8qY0oEbllx+UewFcTACiZd5El6njHpcWVPmdoP3wuf5frVJt5O8aPLkzevL + k7HkGOqhkuB13dLMEI+C+nCNhNEGZEY1/nm7ga/qvXjP8YgpdUjWh0pIi4j8uqpABk19/xfyp8zK + pYFfp9spYoPzZHO7GmdMc10RsYrFu0R+yWxbqvZDiUZwTKb389kSSzeu5mNvLBMTrnc77/kQltx+ + xZ/rzYoi7zIHi4IqwuDPy0sdU+l6rkN1H7hRIWWHKboimwiIt8IjgdtSOIJyX9xaRqCQTMWosoup + kWYVL4+5GxCpmjS0A/GEXYPbKakMh9umElEnSLduRY9+dcCTdnBxvcaJqluIKhtcvHM8bq8S0+tW + t5CkXLiF6CndQucvrsrF3ASWY14lZs/GPPSZE44QditmzSBvsznQnxyTd5+vwhaHcC2UYjyKKVcG + +3adOrQrk1wfAG1mlnwhCy/PvmvKIq/vN3us+1yIDtTFotUHYmXpfDYpslXESkg3Y+a6yJ1m032q + rGiX04StFWbn86G4KMQmh2HD9SLuDDnGyy9rvhZao7pEBHjq5W7i02P4W7AeXP6ecXwGZ+dXwVM+ + Kj23LuI/lGnT3XOntCIWU+0GMYXL4X43m9dCj9Zn88KWJ039qIRjBuo+8TRRhet+PpYFfLrOE1MR + sJrg3WwLf7Gi2eDBIw1vcod3cPuCe38RZAX0LAm169tqnIHTg5TWXJG532TiyuCYwKyUl635scnD + JKfUcMwnVCturKR7zCo/eZRd1oNV/GUSkjNSIa8jNRrm500zhP0WtvNyl8yW+PR2s9qvbVm+EqtC + 6WlwgxY1cul1S0+DoFzyNOBTEqs+vH/plTwNLtY4ND0NTyPfcwI2gj/c2GkWq+YboP+ANXIfAdrt + pSpwKxUYWN3pDKMU5ygOwCqk09X3WZ+WjeeiOpKp3Upwoy1GGK6Wt/N7HYcDQliygVdnk8Gbq/+K + tL0ci7kdby/nPHZEe/VSjhDs4FnLi8bzvSwtaCimrrke+jGBmX2CalCsMd1ueiomEla9IyPyHddQ + 16az7X7+GROs+wmszDLe3JdtIROzRtYZb6oTM+NNPiUWtNyvmSfTVWRZ4RUw2kHu78MP4p0BvSoS + 3Py+oBhiqgVNvekdoIJT7CO/mLzSxCaezpDZWoeb/4x8U9cAUU2XX9P5am2Nnuu5+dYKacfCsv4T + agG0QIx9EONJrI8c56esVYE43cb6wMkuzPNGD+mIvcmEtkHu7/oTr9N7VkAgzcjiyYu5KAjKAscz + AxRlMY4jYao6uer6KV79MOAffYKURuLYoa1VcakNyl/7eVUBjwOfQ5kB1bQ6g0u3P52PwAfZnk88 + PLI06FhiLG+adCz7nWNDrUluiB2F3eq6rbBb4XVb7FakXMZuhaeyzMdl2QLssLCckOECh/KDkRuD + piL9kNXGTwIDBUa5k0L1Bj0/s0wc16Ckz4UwfgN8PRUUVBEGkE6lu2WGt54ChuVjoQto2+liufC3 + /BOwH3Q3XX04e3e/HYm/vJnvRxQJI/6hXZXTOXz4ZD3Ax1m8LNHdb9BEJUp3FjsvdiwQR1Y3+DNO + cxnkFOnD193tFwkGP8KlLT/LDH5c3K8m89USmGa6ns3T9fZ+mMMxEvO4SW5v4e9iN81u0s12+OT9 + q6ur13CBvHufhfyzmFF9AdIgdqJs7WqaIUJYWyE6AZaqxpFDJZZ2nUBXLXWNx2jcG5AiGOuP78ae + euNzx+OuehFh9YmveeKPKddNWM/pr2Pj2OzSE/nK8Wajh+77QdBic3fCsVa83uxvHo8IQQZtLEaB + +k4id8wyLfeN2w6BQbex13Gpi4KKKx7S7YMOa6nNKuPP1YfLkyxwPZO2dSYuJjM48cngk0vFvS/1 + hHxYrf2oLKHLUaCEHjEJ/uIGYoU3h5icPaygLcXmxeZk79GO/JsZWqrTSmOP7djaUf3BFREO3QRO + xkvnLaBgDzVrU/5AHL/tIpnPFUXE5ynt3B6q3/mkJLSgXbdaQIsYoTgiDReILcJGTHnH798x3kLM + pdetxFxJuSDm0lMScy/f/hGVTfI+M+Vcz3825p7jRiNOIaDCID+7vRvr3E64g4RCPtH+cszzn52Y + eVYges5X37JWIAdCo9TMCc2KSQnT8uXdyiOX+/V6F66fZxgQkxVOuxCKZ9udQJ8AdUyYoqHx82H6 + fbajFZFB4BJUeZHggsiEfBFGvsVeomAtBWL8h1dyKeR1vgOxd0UnwygXbMFhHl0eFf0MVRNokS7M + zCi695c/rKtcUkXkM88tVYHIFneWN9rXdxB5/6rLyIq5y8JitldNB4WkBR61o1oxJwWKrFh3onbO + uxMtz+7gr3jgBoIBaY+RH1ORipAiHbEgRvZ1FiEvtdrb0SkbjAZUsYxW12crAv0NpX4+uMq+rTxB + BwkNJJ8r2sK6xD0+Aptc79njRKqW0faSmN1vHz/0g2pVTZfSKSr25ZE9KJHLzeqQM37q+G0LkVMj + +0rkspNCKXJ6SiLYbrmRyZSgu6Myn2JgzUoGfsiYlSf6N3qgVLfQi2PX5ycD/ft0Zrb8iOSLL8Mz + AaPkuJx0NxWQQlSOji6MOUndip4aFO4XXX5p14WTH0/5wMBJzVHkESuzy0Q8bHyAvab18wpwhJSO + WFyn1cEgrPp4ziOIHvJ+/PUizOhuFnF58+4RHLGnbVv+i+jUaetPlo2srVuqE9O8JZ/KGk+0y/GW + L4WagfB9PjB9DhohWiEGwpkpmbNUtyLWI3YH/VVKs4MJby5W4VP8Q0VZvy7xzJ4fcildb2cVofeN + hO1c33Yegzb2oh7Ci6smcbZcpt2LG7dzkPco+SoIyNhXFSiidhUoIvsKFFFlBYpIVaD4ePVfReA6 + Fsfo/y0WoPBjWIMR/BEjdq3AijQ39N1sJSMZpRnm4+Z7GVGuU51Khq4f2PalnEf0X46zqDddVkRc + PjIWpNJc4WKBEqvecmgLWaqchIT8miogchMbIYzrbBaKdCHDJjd5I4GGNr9HbX2bbjDPphDMp7ET + UFFC6NZkRjgJ5WhIhYKazucjUfuM4FbrV257v92lC3LSftxsEBOHqIrgLPT1qh7J2HCzUi8Ki8Ob + +YatB7ipstoUYdxP6B3ltTWugq0Y+phjUn+SnxdjSYXo2CGGND8cxdooCfDtFbAPe9ZGr1uxNkm5 + wNroKbG2lxdnJdM4C2MTfdpznj1lPAxDd8R4zFiGPn0jQhMLwki6wcQIIQyQpiICK+Quk9VdMCdt + skmTrYiG+Ao7ADaoyETbpvvp6u4etB2NwEyc8uUsKdur+8s0b8Fz31yMjNo3oRe6TskCTRlUNBHz + 2W1dzqLjFa23uZxFhv7BMpRPZ9JNI9c8vArkOU8VwaANqq8uDaqgYMYhK1LVqywX9QnmK+2HxqY/ + MfqBfecWRl89MZkFumLz5CmGjNea36sp5jaziEFIJiprzSyqXKjZlB+pnOPBjzouAzzTOl/TIUBQ + nEviSeYqFIqsqszLOcinuxrxuEF3tQogOpCyybLwj8KMf14VEIQ69kCe5fqVfXB6DTOIO1ToLVVs + 0Np+1AatvVwM5ifkffSrBVnRaFiE3tI0+7IzRXSs9L6q5vxtiZJ7pOku+QEUm5bheJNVRDVtu32X + ktIop/CPKzhX9hEM9LqVlCYpF6Q0eiojGD6el9ALvSAooBeGz8YeSGfcG3kxjzxZg/UyS+0fCibx + 8dtqeK6CADDVvyRTSbi27FllFl/khkY5QJUNmIkpilmvi0Pg5zXo3cD/GqIKGIJzgWLyUBAOamxV + 487jOVjBOOThG6bpgwA4bBHBgUmohiosBwXgANtHCQR+IAH+PKryVIGNUBitrW51HMVG1dGVGOA1 + 1jybYl81dyXsOAX/dyzFn6iaakMsJ4t4bQ3v/N5oFxt2pDUv17zH3JKg4pbukGEiZ22R3GJs437R + vepZf/XnvJAmSh6cKpbUnTK33iQt8R/6If1wGIB6Gx7rOlKbEBQrqqhjOPM77Z2+SnDGWUJy8NY/ + dcKW7izZyNqdpTox3VnyacmdhTecGesAnFcl9QicfCOUfzvYpl/TYniExnabz76kaieYo8Hi8kHM + hJcrlIK4sDxu9xsBpqyBLOez5Zd0agfoY+sa6qQ7dQk1ss8B/el8W9RnklvcApLUOsA4lhUKWNwC + SY1et6xQICiXKhTgUwn58elSSNtmIp1bsKJiIl2EeBF8FHle5KsCBSb+vpEArtMZPlyenxA2RYZn + kX6fzPdoy5nfl7AtYOJBpkyfG2Ir6mOg7QsY48VqC7Tg9EBjoJoM0RU0wwOw3aXrEsjkm3nKVODw + h/3a49WlzNW4zXrmnltji409D9H8S9bNbLUlMEmNedNncR3AuEFaawof3l2Pb2CU5CpXxTNUjsFs + UQ5ZDZywVQ/oSB8rtv3kbimyUiSDOtBR3L4jRZBWtWCSrMUeryZoLKCReI5KRS7zw/Tixe2GXZyK + qpEHrA7ivZrm5vBUtFtEme+SpUw1rxyrQ4yvpo4FyQ+Nt922phLndrusHeXd4aEeWv9igZFHzOAG + gpHrxNrAcWRiLekZGXm6oXK5SRaQ7bAJxc13LBUysS2PJZOlq3anEtAnVXJVtf1gnletyepvzHL0 + jiEXq+Wr48zHUGd5BN1cluUxJA2A/u7rc3Q0QRxr+3XlzWAzjL4KDvjMkfH8uGk7Egl8R2bF1tel + OLLG3HEYQtUoQDb5kjYtHxJTuQeoD5TnxMlvEgCttn4fRoJ+M6hDh/A+Lt9xP7LXU+h1Kz1FUi7o + KfRUxrG9veAlwA8vLpRS86JnY9/14miEsyhjPaCpxOKQIfgqen67OB1+xIMyARZI13CxCDXWr5yD + Fj8nEUASeMKccfT+hKA69hsMlVp9/lzVXhS+JALYKIBGOUKnw0/LaUooIdo+jDCSm5XoED9adAJ/ + cU9V1N3djLMHdHyQ0Y6ACdb3G9BZK1FQDaqxSdXwe7jQpx8UhTMZIa5TAorSecwL4R8YqJELTVBk + B2/RDPb9vjTeLO2ARj4yxC2c8TlWFEKJaktP5OLmh/RcsAIqg5oQyiKVPJUBdLA+jlogzp/rIhbJ + HF7ByKrlFO3s9DKsm7MeiI2s5LSAUfAcfq3gDsVpOSZTohPJskf9aOQzbeGPiSfd1axYJ9he3Ho5 + W3N7or9G3oBixALK4s+/v2OeYx91R69bMWJJucCI6Skx4qvLF6WoO+4ib87zYf7sKQhPURiPGGwd + T9qLRKT+ag5DEHNwcYH1C1LlL5T87Wp9U46VEzUOxfLDNJXIjIhOVblLPwjqqiDHYei55QC1pq4q + uZ8b1RsS8l1kzE/eOWsKDcJFvwSGD9MBryxWmDhnKKpuUDKHDMpTqWbxhYuMiEKBv6304+mMIJpQ + 9FATJfgSzHe4zimj8OWb/WwnRBJge+7fxil6ZrMEi88wC6sNgdKq2xOfV62uLAewpFIwpA2gtVzI + waucmXkvLkIZ5purEI3bTZdsCcJAOr2inLg23uXucEG5lBU2Gk7TBGZPunBz5TKn6SRpkQAZ8Chf + qDKZbdoqJq6f8QK9B9rSIJ9AxT4qr4HeUnZ6Vy9JNTZmB8v5jikKJh/oh3M/TRbJLYaFzxb7SrCT + Rnnf8xxlyrfe6uWZRXS0dPkfeFLvj675Ls/j0s+i1LiuGZ3iPMSE15K3MBUX8GY1tU1c/hn4s6R/ + teLydsrUj8eA7g8MrS9/PF5Qh6b3B5GuXzEl4XDpAb6MztxTh7dyAKs2lv5f3UXe/aseksSS5ego + Ty0f/vFm/Dp9cnEBqtz3exkxtd2v0w2pBgZlTFj0Yh+FaJChmVhPmdUiwDbalV/5eZBUPw6mmdQN + uj9mmLnTOSiBBR6VLz0OK10biWR497txsgVGdCPO42zaKdAhdNwMk+6csVPWFpSOGtmj0slOCrB0 + 9JQE+/V8JZGjKPQlF/li1FUZgKy60mWYoNEAWxIYtE8w7E5M6iIuOLyImvSI7Bo493D4hb0dZdTW + KJ/dqyI1btFQgmCKMIvJ/aSq5t8BAgEJTrMuhf9Ch/CXYYK+phtxYQNjxGQ1aQxar2YkoyB9vArM + gR6+CENZJMlYku1sh6GcOLJWyxBLV05eKrtLE3uAG5cpw3p1VOQ2XcsJypV/pyiXyqNW143rZ3l7 + QszKj7gup7DZks8JO3m7hmOP873dpoubeYuoTcvSAA9lpu8a4MOC/GevERu5hUz583Au2taGOkTN + y1MrBQkeJG+dVH98Vw8eithbZeS/GrwHul8ke8uuym6DU/KCLyPFPBbYG/7odctIMUG5FCmGT2Xl + 5z9flxHXA+4VA8WeMh5HHndGwOgc4YYVoWJ/KtvzHCQL2E7C9jSZTl6vNjgZwvR3ff+57NkQqBwp + gbhWW/iiYuJFhiDoRBHz+UPVjMpdwkaqJggTNQZBxpjDXd+tCWBa5GFIRsOvs8T4fCMlxK0NIHu4 + TvJVoNXcDs61x0mGyVStWN75st6kY2MQZihMIZ0hm2P4klvpnXg+zMXlvtxAX+s7+OdwslmtMCJ2 + mU6+ZMG1sHN1ZAwo1QP5ZfqCOTwprdhie9pWhjlxIR5nl+vFuteDrFxF4PAcHIHVQ4ITr4ifaHlX + HWnnIutx486q1t8tGtZ/eA93vQvnnZcmn+yjxdqI6RYLY+gaDosUQVtmh0RNddMRsMQZVnu2v+no + daubTlIu3HT0lG66V1f/ECXITNAcHhauOvfZ04DBD6OA+0GgcSWM0n0Cw+X8j8uLi/FkJQBcZSGj + rYJrSUxvzKvNV4+tTYYoEF1USIqsEQiH4zbVcFAU6SPuUCQQlC7RqiGYcDnMrYXLYcwP4zAqwU7k + A+rfrOa3s0q8ZSAd1kVRW5E+UJSo0FVg1VX/ssCrq2wa6jCEo9rLVA1u8BM30EDse43r43hOL7g+ + ETnr8vPTpphXUypUT+F5nYqMNdj/KRmycCLaqumPvbhXSOWs6SuT9TrZJLu2F+IjyOxR1xusmlfc + ptnqK45pc1kLflcc1aHNUEMnKNJpu4aGXUXdsAQK8OaKO779DUuvW92wknLhhqWndMOevXxVRKXj + LPAKF2z87GnsxPDDKGYg/UXNhYZvN0C/90LDxTSh/bagfBbQc36JgsUDHVHhuWSx7+ZVamdL7Lki + 3o8qelT55X8dk5ViCpEM8WVhZM8U6HXLEF9BuRTii0+JKZy/OC9lIiLGQTHC9ylnHMSlEfwhbknh + p03WeiF0gIDgC+c3k3LGH/x1IeM+qkxKDq/N+4uCiPM4LjEHymqpGoZZesSrk0+jiDEnCso4JAVb + SVHnMgNxuVespjHKiZnG4Hu1C2VgZKqPwbWoHrQ1M6iAb6eb1XS2AAVxUjldIpEqmW9XwveVzJbb + 4fVuxdaj4aTezgTHu7ykpUSpD+u5C3TWqy3WSBSJWetk8gXlYPHtGCSej1bSKV/77fNsNIlI1tLp + OAvgYp8HuHd1UK8Tx32YmGqdoH2U3QIqBHkiA+bW659lTjpWwTgewbmHYmFD5dw7JtFnIFmPuFPL + HMrSUnSUgSrygvyWrWSrP+yOd1zSpIqc1WoirBtbe+Qw/FR/V7foD03q6DqXPdQiDx2CH3h15Tjh + +fjM+tZXDazufU29cPOr5xIl7Kx89ztRUSEIn41hb3E3GMEfUeQ1KwTpBnqYjJO+VYLscs4vnxER + Dstbmw+D0ZolhNEjhHllMYJLUTXRigVdpqo2r7wGFZfbirjsuwRNSGtRQupranzSdIVY0KVr9OMi + 4ShSLfdwv8tLKv1+N7uZwRt5cMtp+hl2MBYUhj5kkWRx68oCw8uJ4LLD9+cfx2zw8f0Zd7SbBkOJ + nB5QOdvx9hpcrJ8CJxl5jjHug3y3O1OR/IBRmt87LLNtrwPQ61a8QFIuloUQT2V2ycV/haXskjg2 + 4eo979nT0PWcaBR6DHG+kQv8Occi2d8U0scDZcf1pbyjWKCcnIfRhEPmsxpxm4G8wJnDgA+oI7yu + ZwjP9WzD7ofVR2EWxiMLnovDeLPfqWMA79ARRqoYgiIyc3XYnskBKtB+Rd6jwKjHoCt4K12BRHKV + TH2+BjKT2eDi6pzF2hgR+wTv59KZV6FusMtXC9jQ7WIFXcdzZaRWNtWbdLufCxDD2TIXfyiy+7RH + cNs+ARk7E6cdQ0ML02TBZZRljhnBz4y1D36GNm2Cn7GLUvAzPKQj9ebjJfvjxRuZ8lio2wI/orXh + /e6WG+SwGgrjwcCae1uXiu2rzkpvvuAHB0z8BSqwWIN4xRFpw+l32JZLEEmbjfXWu4K5FFVv0rX9 + hpv74QRLX642/aZuxGQflIekh3BA36e40zdNFsd+qR2ANaUDlBOrjqu2HDIREv/n7+9Y3CK3lV63 + kj4k5YL0QU+lBfLDi1KIGw/8yJQ+3GdPI5BP+Shy4Z6XGAMCfvdFFfyurt66gtG8yBvEQNqfzJYp + 1mBVxsrlTUVqf+61SqNi7Pt1fmUnikB48ErmSksVKKe3gJThuiW8MzG2/SKXUNkOP9Oo+FDUmi4v + RnUjyAo+TBMVKo7mvLsUdswKyyxSZdvJavnv/S39ThGHitdLN7ihXYV+bYmFys5FABNSyReDMV3+ + hdCHnJ00jCMvLuIiCIrf0HBqC2MWwrw11MkIfTyp4b8G57ld9OK5LCek92X1rhyBWHSePH36Gzxb + rKb7+Ww5zkoR7+r3/PDb3Wxyp8sWb4fnm/+w9fBJIoPux1kcvpnDKmzbJyMxPFTqN8buV6OEKYBv + XU2JgZ9/OGM4Q78Bgzl/f8kGeIx1EYkgFEUkcG2FgHbkfrG30kbkBdYEivvEmhKusKJUsTdKdJpK + NLQkVakPxz5lklSwJTvhpw2BKvPVQDILTeQIBmQ14gfrrMWFTUhgcgRHoDy3otRifMebI5msZfni + nMeoTLSqZZk1stN/cp3kFKDsqaz9u9nJnLhdOl/JfNYsH1fxIyrfi2APPHJOBrl3Qc5INwabw6dM + z9NH7KDYHJ6hGuUEDmEABzyMpGEnt/UkBMFchVlWi7WaHbWmYRPH6wieKr83pdJx6VIUnkf3Vm4i + rFiLIzFrtPvhDrlzyfpV/jrHdd3cSMxVKmaNW/gOQgq3zfofKdLCHnF7eL5bk+gh9vghEvMpyqtm + IZp1bDcIxWXzsrOTw5VA8tnE7VJYRgR1uhI7t+pwta9q3nM3x3t+mmJWjncduTH5j6/yOfsve4ED + 6Angvscyy2EGA4kKvQHQ3jFUhvnqnvJeeKdOm8xt1cT2jpIdGDcUPaNb6eWn15HPB6+uz68+5gF3 + 1MX0j/WW+4Ov4r94o0Q8whvFc11u5FFDz7cpFXdZDb8mkz2md0qReH8z++/9DH6sEHvK5dcF2wfh + /f0/XiCC2N23Fug6nu+S2UQcPQx1FBwnN6QGj3rlfRKRbag0P0cIOp2YcKv0V7XNKBHixRWLQ3vQ + RXrdyh4iKRfsIfRUemXfXBTtISwOinkQ3rNxwHwWOCP4I1IVNuu8sjcboD/53zDNNmGajiclwR8S + pqn2H4UJv79yPM/eHkevW+0/Sbmw/+gp7b+LP85LWHNuEBUwP/1nT13fdyN35PoUTIT7730OuFFD + dV9sv7GbE9Ls8e9UdepiNeFr8pVrPzbdGMh/xgQyJUweZwV7LrbWjnGhxorrjsQ7ARs1Wa02U/Rd + FU0dIGss84YGifGtzT1ZPNUoF3s2vPznPy8p5kweKBh8GS7P6gzkczk94FCBW1cErSrGAa/62rTb + PLnMtoVCJHwguuEWq2k6L5IMXLc+21SSHPzl13WAu16dfC/wKA4CpkYL4sU5bCU/9gNARxYcM1PX + oDgiSCgtMdirDUdpLCzwqRLNxfU/WXurkrX8WpG4yCJVazEMWtVahNdtay0i5XKtRXgqU/R/vyhF + T3gBrnex1mIQu2E08kDI4NLAcbbEvb/JkKJPh9dfZuF6+CZD21mvQSsX21/fiSJ6iJBZxpPVfj3P + hSjfpLtvaUrpZwhFuUDf+1guCkzKap1iZVfyxuNL7t/Gu9XY/xsB3hM0oxQiFfqxGNPxwgMPXSdw + 3JLwkH4nmfPJ1YdcnTkzGsNhYX2qZMxgip0iI4UPg68C4mTZqMVRbqieEfkRCCoVlVS0EF74/MBz + +KFhZkEj0lMpmKVMf9vmTwdJ9shBP4yJpcHRzC+wmjnkcbBIGW+Gf/D1CJ+59Ee0PpH+AdoAqcXy + PzfADdWG3IDUPhNnEnbbFJOkxGldwnDhZUFmO8BDkVWQdDg5eqOMx1giiCLVFP5/lh1Ygx16CBqT + glsqe7ET6HopVR3WMPAu9FzP42Hb+VSnYSWsdCN5Rmy8GQN5CPHlugP7EJJxi2Y/AB3SNsSgH4NN + dRZUPzlYHUMR1L0bZzUD0XbfEkmP2thXDKQuCgUDxUO6g6frO3mjasOJwoxXeCSfXpzJ2Fo9dS+h + 1QCbUvG/IJTxU4GBAQUSXwar0A0WPvCpQks7q047boD2JWF2uRrr2ONpG+rWwT+ORyBZZViy6b7B + q2FNv3f8OI8zMoov09ukAviuxSTVGdFcFmRJ8QklR7Ve7XowlofDILW3wbVEk3OZH4sNiQbu7FS2 + Ee65DI2+cniLQur0ul1oNFEuhkaLp9IYd31VSpGAAxAVQ6PHLIK7MRqxyPWcAykS8w3QrzDGPbZw + 6SxeQdRZzS6cmuohGC1aF8njgYbIQPQfXMNddD8fCrSarJruSHoOsYrbtvzGPXYFMrIo2WJWODUx + N7DNap6rNTP489VbnSPoOUyga+BAFYNp+sDGoh21ISgBnZP5bA0f3hVhXGvWjsczakfeEcCjJI6m + OU0tvlIwoigS0tTBWrM1RWvtGj8eCIuKz+itvG0YstyCiD3fJVKmLZUD/rsja10r9k11Uy6vnKAF + qBS9bpfdTpSL2e3iKbHv1+d/lmJLfZeVs9sDmEL0pYRh4Eo33zledBhVNE0R8bhUzWibzL9iFrNU + lkXKRa4GTsaDJN9/PbmvCDN9bB6YSemra+JGmVsHABkLh7lXvE0U4dzE5AgytLXU3B6K4KBqSf4z + W06oArouDCHsKdmFIlLg6R5Bji7bKuFPjwtOMIg+k9n8OT6GSwBNDlp/gkM1vEknyR4mZKZy5Y0u + CnT98ef5fgVfr+g/8V9jydKVSFKB04JyAXzoZjjd7G/16zQEfPnTyQC3r05wBwUFWUYUkBk4t9XU + TrS9o8Rca1kuvyYdJN/AiZRebm78trfKDwJD6a3AA54AYxIrTowd++5CqDk7nxPMgDgbnaMWj78I + 9B6RVdzFMe0wIHWhqEyt89iPT51WoYq6ja3RQXVhGB3kQ7oghNC4NYNbnqw3yDVA9T4ZVP1ejBXJ + v5/vFdOuvJBLg4QUmcr4+7fz+wl2caTKfUQXv1jJjIdJGm6hGR8pwQqh0SVIBLEyUs2o2Gp9wKG7 + ZDfJ9cTHyXx9l4zb9fiDIMCBlB/WkRrppyLCSu3r4S1cumvbraY4kawkcn4OcpRz6vAWnEi3seNE + WRc5TqQfEie6wUBR07g5qHqWpwZycBT7/qC9o/vg9qHUj9jRJ1lFFQvSR5igfo4FTMXmcM8sH+NE + HcrHOFG78jHQSUX5GKwEIsrH3K1l5FdVSs/g/Pzs7KMGTZIO4uIVdIk0KBo+4hxuHe9kgHSFUdzh + 0ijOKIGhABOebG5WKB2gP9FC7rO/jx5zvESugzp/Xpv6gB2nKPSjUpG+5R62VOWHtMj3DsRCb9fp + BN0ex35PvU8ujHyT57S8dX8EsHh/rKn52grIP914Xrvx4T7yAZyKs1gExOs+dUDfM3ZceXu17Lo5 + h9qnsodqfGPdb/spUhcD1Ql59Q7YpL2fgl63g3MiykUwJ/FUJlFffIgMQ5cbugEPPFbCcnID3/VH + buyj0Is3x++iMBX6OXFWlQaQt3QpTJBS+SUMO8llqWzT200qw/BkavVsGZVsXl9kh9VYjSGrC8Zh + MGRVVsQoVUKjWswmMHa41AqFQYBkqZJvFcmcAyVHiWalugRxGIY2hLPAITmPyTIBERq29ouC/ySu + 85/EEXOd2Kmht50JX4nipFNjIcweQqfTiEsrL+FzXu+XtzMjUAu9w/xAH4MH2XIDPAM6eDuMwoH8 + YqFm2UxV6dA3JPUCYZe4VtEJvk0FLHd7grEBwJPbJLa2OCxVTkCI2QYe3whUoMXqq6rq0Yb3/9wK + fWIvGasnJ9vIn4bdkrt1DxY0OboUnBNSEBTWy8bQtGlV5iTyOIGGUgVqdAQ4zRFND9gwWJzfzm1b + hwpX2eDsNuuBjb3Cpm3fvV+kkIuBqRWgDhE1iu81Du/B0DjhjqHJWXUXecRFVZyfH0DQYuk7I3or + ySuUESI8aAFfQ69bRogIyqUIEXxKkte78xd+KUKER3EJPC8IEOh1FARh7Mj6bIY7cX0Hny+tbEaM + BYlS7yY3fkmUyuqLqNvEdP/xOvdfDGqBG5RDsber+R5XrI5eXfaJQS+TpF6O0839DtjiWH7etqqI + Yt4NGDq+Y9NH5leU8BA6QDirWGq4F0NeG5yCkOaBVyRcqrOan4q4EDRuxnkHYcSLYKPG+lb7QJ0A + 9siBjx+8ny3xKBE1+AEzX8aw6zFwJat4OBqiEDJf3aJJAraOt1bfMxPLCyQ+p9+G63QzyWF7wy0L + KlpmMNWg3cZG1RsTWhV7VwgcWCmHws3zSQvZ0sgYpXQ7wPOjA3S4T+Vv+oyhEbNKnLxiBdpGgXek + 1SwkcSoTLCa+FJUoT8t5V2ZtXze4yk+B50ZIO/XH7KB42l+BnoDuizLbszQFy/CnIpOzFLN+YvGd + fsvzMgIdhJWc3M/RESLiho6tbXtkdQ4n8lS9PTxbyfH1dh9PvQ9FCm83YY2zuhcbt6WSgCLtlPDO + 41OHt3OKq0bWTgnViemUkE9lWZB71EM2ohApA1YDf87vi87xupfMXrC+vRcINziLnIDwoHItx9Rw + tvxSGf9iZSHtGnjyk7A/D5D0oyqSmDymKG7XIJZ3mKtMMfrB7m55f92t5qts7ccTEkT68nQf0ckh + 5C+qJ7ZBU0X3UBw56XSQfnIYTqyd30HIT52wnfOb2lg7v2UXpvObHhK7+edLRNNCgUan+rjD7XJ1 + 9eGyKhPm027NWSHuJuuG+27M41h6xS1LvrRwax5TREbIADHha98kG5iuDRobd1W1CTt5wmsYndgz + W1FYSOYOYk7O7EZmEuqUluNhXg4ZoY6GeRkqL6dDV7r4qrHyhMsVsQfcUgcLNH4jZaydxUnFF7iO + zGXnTtwmlx1ft8xlF5RLuez4lIwZHy4/luKlPVHvq5DLDrqo54aj0A1DLuOlP8wmIJQKcAbSAlcC + ptgIERoRwINMPS5EUKPS8+Hs5VPD+vHczDfezuawlfDMwHnfoMcOHQIKCy9fXGODBnlUV/MthKP5 + dixs5sDoZ8/Nkq+52lPS6vJhvSsHbbcNtWZR5LlxyTiytJiwmuBrn9VVNIt9zkBerUUBMSeQcKTh + MOJMmun2UR2GLmMxprEX7Rs1XWiYQhNzpFQx7QD13Fzl1B+1gQxDj+vXW2bkQgz+Wnt1gMdWZ9uH + ri+z7Ulcrll6HM9BzV0xWeZSgIKGrfyakv8kubWyAGQXoBc1DEpvFluCuNqU2Vm5P+wyuRoFL9xO + 9R3URt5XmlJcUmAwcl9Eyvcz0scbbFsv0vssKEyqBQe0+qieSP9igIs/JurVZRorGGMQWTukYNHE + GieYOjBRgsUzElQ224XCHDN13exK0yjRUrrbMmdg++41vCu6EACOoBP0X1nleECR/4G1WQ50H1RM + Byku2VKrJT5GTTlUJKzxtPpShbMeWHOIhE/qTwt9rB47OJQjy75+gqg+s91eOonqP7lFuF/3ThqZ + k6sNofy1e+oELQ2hspG1IVR1YhpC5VPiTO9WSwUIkapSfIOqh0N4yAZz/A9aPKNQhuX7TgYYK7Pg + 2x2JwKcyr2cfL4sgFHX07PlXe9o9+anszLo/mxn5RRoJ4gyIXXUE72lF9ke4kihKprAJ0jXQ7Ms0 + 27mL5pFznwxboogEqVmIfnw0YStHWJuiUce61TgBAx39YUAoKM7YsUR7yzFlISOMJYk1Clt6DIfC + riJI473iKWu36wSnTtzmWtFtbK3dqgvD2i0fkuA7SdYS6Qo/B2/5DQHMrJPd5C5Xrj1v4U7gyNzP + 7ymEE/qqsoufA+EBUBeJYREnidcJZema3ir0hA7dGsJc+wUmfofRDo31cOxTYtrTbr6ReKAL91QA + USWbrzVUG6pjdi9YKYl4IOYyuifzaUe0xKjuyjVu2O416H7d0mcxSFdcSZX7sdvd7YZ5kjm2t1wt + x4fDCmubt+HiXiSkkY48VwZzZzsxp2QefylETH5gadG7lAByfSU5M5eHoGK3k5xVI1vJWXdiSM7q + aUU2I2rqqmiawdYq04KKGfW6O9SWYVmka+9x5Be2SYh80GTGH5f397Nh7H4lhAHrBD577ftXSAfs + Qv/QmH9gimEL+BV7jt8LoktfESBuIMPu3bgF6jq9bhl2LyiXwu7xKcnB/7i8RrWmEHfv8TIyY8wc + 7vqjmHFXmYypsg1WHUdpBb5eXc1ZWXZ04OnXFqsNKBKqECj67XRUM7mJ/7Heum4luBeGJJjZiDyu + DfHmHovKCY7ZMFTwVG32HTJyK/KZFzqvWJrwkLxYl9UoDOvEnsdZMWGQgmNBPM4KCenqQWaN1tiM + dH+TVZ1gHuexxwqU0VQGYjBsR1WXiFQPgRE+BlFwBXreLfyc6wYG6NXWy6j+AIsqSPkOsHjSoe8Y + oOVCTbEu/oQYZTOB459VgUWf7ts/Lq+17VY4jOHh+R9X/3j1cbhLsTorlUwVLzwv7Fi9Q6aryRfh + VBV7Vaho0N/NCmtjAD2xTIj7rr8UX1T/wB/UZ4NwfZtu8/HoeiIG4gzq2H3QGoVoFbGMf1dXjWoW + q2BnYJOmnWSj0Wh6MfH+r3B2MX9RzYwstJV+lwhtbR3DvuNmiL/5aWlrAGGkKsjxZQH2HQkibJS4 + 4tezdAJqEZoHMU1LnRARulAr/dQpnXCQaBabz56NNHRUwbE6YHpJEtjabTIn05SiZiWhId+sI9AS + 4DSkxODa7nvHknKdKBYrbrAOKw1QUXA5uc4kn7Gq2zmwtU7WmYL6MZQqkUQVzgKW26ZwFr5uWThL + UC4VzsKnJJL8/cP7UvCcG/usVDgrAl0r8EeRHzmRAhvVdjt5DdynyXY3nN4vlVlFrIioXoQ57DhX + GII0WzPHWY+Gf18uGPyBXPxss8aQNSMUCZjUGrQ0lai8mN3KDHVsoFPYExCG8GmOPVZlowuJR3RY + lFSKwy1IPkG9aOJHLIiKokm9i9Cw8BmdwLrWVLMyOumMyWAWelc0B7/O+g1wm+pLO3bEpR06cb6U + SK6Dg6fZ0nJ4gOv5Qclw25YE2S9KW9COaR+bg+46nBAUof+uzvceMr1x+wtF1+7ktLkjeqk27ups + Jea8butNyRpZmxpVJ6apUT6VEGrbhZsFElHp6jsDxeCJlNBPBnVvaCg1oDVAgmRsZM6ADtfxIBpy + d9aAmNB42rlhjsDlYIFPrdVW0OUdjvTg+IyTrzeHpNHdf9MD0ocNhmFVGXJZwLsJIaSZxCMtO17d + a8dy5cfIvGgQkygsd0XIESuB2cCVqSDSXIult/iJnqo5WRJ52AReEITIl18s7NmZH3hBHPH8l92l + WOJgOsOC8ZIl1PfSdA/F0oAJ69jGgImvWxowBeWSAROfyrKRr86FOdJUFxgaPwoGTC+Gy4SNvDiC + CaGrCoTG4ZeXOW+/lDpfoTUD5E5tHjKkyMzWcTr8WH47q4yKpFDTxnmf7jELAlZrNSVOBQOHGYH/ + +uK/gfhvJP7LHPrDF3Lpq//6I3ROVQnJdMKcksIgRbVk3QwoVpvQ4QQ+5z6rqigpvsxMaTFtgXlg + shANOiXTaMdKvKQUhHWW0WLlk1oDqWszWqO+AuEvFaryxMypy7Uxpk9TSoHV3cxn27uFkhnx/lyv + 5NGUK2WcmYIRmkftxi5oD2/209I0h4yzdqM/bOczpjk2K4AfHKoiL42qBVq1QIOS1uCVNtfCEf7y + smT9TQtH8gmcG1HBM5349EdAf0T0B3Pkn/grnOfQkVok/D3y1icKhQXzjAT9zFysPBjQM9kchXla + rLJIMUo2t6nSU7fpZAMaA7A4+f2iHq1gvSmw7R1ZiLM5HghmoLVM5gcDuRXVRa+2auNVq224R9uU + 6WLqauwVpxGbWBxiuw9qY5S2IhfkyWVBWYfb4gnDN29mdAp1sBMcR7G0sPg4NbYE+zKMu46M5jrA + jmzG5ClpsTjfLXQBuD30FtpWfEuTgFbR2AIc7YiggR9TYbTB69KHscCjfOiLd47n2Qtp9LqVkCYp + F4Q0ekpC2tmbV6Xyf1wsZl5GY8/GPOSxF4946Eb4q6jt/fJyLHPOEiNA6ezq9YlRQTYxfNBP3pxd + ngzTz59T8TqJT2e3KS/7l4HwHTCM8WQlPEZqdxvSE3PrUoXrSkDB+ArDq0PAjZygDqyN8QAmIy7Z + dI8gjqbXzAGNgGgeK97+r66QO0s2XSNYRVFrsiIratxMNmYWZAf97AqzEtlHHBGNbvwh3X1bbb4M + n3x88+EkG+vzTLg/5+f8LR8iIwLC6W93aI6myk2gyX4e4J5XNzdznWAgJw3Pbn562zgsm/yzMHHU + IJvifkijOiWzlvNBc8UdaG9l7cXU3QeKmDjVYhQ1HKCRz4vPcGJBoP4otvssPKxC9W883naWnW6k + HmJ4Ddv2cQVkeUzZ1T99+N1rW5lEtrG1qqsuDKO6fEhX33RGeSH3c6oklWWJ5KNz7d7K94gVSUCZ + 6Cc5jgVeZMgoR0H8EG84yvUvHUDlcK+Wn/Uja6PWp/jLktuFlX1syVp/8eQoxR64RBaCq8M+OIJe + t0QWEpRLyEL4lCTpP68vS+GamMpSRBZ66rogl/ojFzGUZabTdn+zm4EGCPfcfPYlzdJnLy4uVFHt + 7boi/rKvitoVC2kQgE1kyH6Z3BdFMcjBQdHeVagCb8IAuwhceYDe4HK/IxgWYJWT/WYLfEmCwjTN + 1gCXQSPF+DzuhZN6rkPO76WopACDKpaJ6lhqUzD6/z37xxXf5BFh9+BmkqlZnfxEipeIPPs/P7yD + 2bPnJfS6FS+RlAu8hJ4SL3nx4cIr8RIh0OZ5SfDsKWcs5myEGnssIdc/arOmsryiZ+TNfBKuM0Eg + SxodlUGX0C62TCdfRqZzRb6Xbfq72U6hZSteVaAw/DpLDNlSpFbiG1WNdQ7UfQZT8mXnryUHfLGc + eWUOuBJwHsAP4EziR1sY75nH63R6w+J+tJ+EwcGOQaDr0ZEx+Ost7wB3u2bZcASlJV0whwIMZEM2 + aZMGLg22clR2UFRNqhGTcObb+4U46RM99cYsHlRSHVkYGVSs2VrUtSsbp+0smhJyxWgulsiyuUSL + RJ6+pIN0WMPuYoJVPFbknP/5+zvH9e15LL1uxWMl5QKPpafEYz+9uSwFs/KIFSyfLshrQey73sgN + mePKQKpX58/4aQj/F396eTm+ne8nKywNcA9DkVBc9+JCg2P16aN+YczGunrAcL9BvdBE6yI+9+l2 + XQ48zawxBu8J3bCl7bPNeKqLgsUl4MS8HTD0oyiMi77h/DTVlYaA6a7hftU0D5ZyNqh7UZ3rMox5 + 4AYgcTav5RPYMPDnyUhKe9uUHI6wu9KNLjqx0PwTqQFblsxEks3PODoxYTVMS2cCPHSKkfm4pe/J + dalrLxAy43Y0TL+DULwVLrDFaopclSIXLu9WEdyXiLu+v73Df3rrAW50be78/9n70+62cWwNFP7M + f6FvnaxIKQLgmKz3g2NncHec8rFTfbrOXb3uoiXGVkcSdUUpifvXv9jYAEhwEijRjqu6e0gcmtwA + QQx7fB6fiHRYP8ZwkRgwvtMdvydy/UOCfaV3ySLLbRH/OrdtBLxomjyPKrEV7NHFUSTjYHLDxQiZ + ie1gtkrtQVW+P8jGdzTtfzuEwuMA3ARH7hJipD9fvuq93fQzToZtqr2W46lBIiJCgk7QG2IsDzGl + uuKbWEX7/iOfQfbxTbzd6pSXkiunPF7FU/7q5CyonvKERRXW0PjVhMVeHLpAGxqpU/7D/TrDRczf + 7terd8oTc7vg8qd1qioDTKtyTLcVhrQd05I+KNnoa42eHd/3vSbPjj4k+Va0yG7hDdS1RjnghajI + cRx1aDCXokf6AMQxBf3tYfXSr8Do2sNBJ263c9Ch5KqDTlzFqXB5dV3jMfN8QmoOOkoo9Rg3qlmo + poIv95NMhTYn5Fmy4PvL80mhKcBmI/d9YXmVz/Uij3Y80vFITGTabu7Xor6wdHAIrGU+rwTwzegL + epzwmE9X/+Yjodmnkk2q0pSSXKaPLneLrcggnao0q1TBfV9u8jrJ2mDKpRictLT3ziQ+VdbBiOZ6 + oRe36GbEhY9Rs6D/wlWkVfYt+wtoiSaXnKH0kehgwYBhvMSo8U1S1mZqjVC3jSS3pZEiHt0q1OUW + Zj+ha0isSksomXkLfjgflaBNFW6R3TJDKz0O2lhxtVTnoGWk2vs3n8SXV5eXaubzDhgOjCOW2BAL + zIH9RbsxPEodVDiF1qBfHFcItwNm8+Jth9CUB2umTQGKCSlVBIjZdSwtXEywKq4yaZfZKuvb6z3t + IKfdoMDpjPjoBSpXVIvMve8Ae9td1dOhJHoeLaqp0JdzJHT640P6uBRd+8vkFtycu+XhCQTidFCT + JC/xL7afLY8u/6HSBLWu/8RY3gZL6oiUF9Bnp5OTPn5A8YCtJxCl132B4joqhxdnF6ymHdIQioZN + d+CEAXhkOGYsdiNJ0HRhYNWe8bOHT6adLl++EOA6XA2/l0rYxWzJBtfCjqBveWAbxDQXjI0Rhodv + bwp4yCiMcE0VqEKhElJw2Zkj30QDp7IAMfdPrcPX4pjDLoiMw7wCODyrfsSl/oiOmCvqpA+5qeDI + 7tZto+5ToLHS/EkSXQx5QBTPH0zl12hhYsXb2ytCeyRT4+1WG4mUXNlG8CpuImfXb2shBTcOK86G + 8NXEAzT3aOy5sevLsO1Zsru9E0XPKRB2KRw3OV/H/Ci9R/yD6XwNpxOE+aQ/WCcjAGySVkAKN/vr + 0QzK4cuTXdyWpyI3E69D07qCWIAupKt8Lk+HbTaabXa3uayZ4Z8huYVU2y0G+3SbuL2d5Wk9gKED + UsbWEbPW2OkDb0otmlrnhuSFrRsS40omWDh/hs/owDxW+xtgBMsafw0VbKPh7qn3PxYwgLi6olqG + 0sfSFFPxl9Kw2No4R9fTHx2GtX68k2fPx7qSNx/dILJ3tuHtVluhlFzZCvGqdraZGSwsZAENKuFV + 5r16EVOP0HHM9Sn/z+dra0hY+a+v7b++tv/62o73temUIchz/6+v7b++tkN8bZT6nnb+ALBLSfer + CYKTLv2ezsQ8lOYjF5usEpVS/F//3X/9d/9B/jtfFGX9fvmRhtTe5MbbrfRMKbmiZ+JVCTJzclHP + lI6rfM7RqwkNAkLGNCKANNYV3V8vuPR6dH+wUounFNkPSMzw6ES0J71lJYtpdpctDs8aEnUNLhVS + lbBfJ8k03R6Vp6ImHtVUeMEJ60fUqZ+xJsKTTZg8eHgRJ2H+I1GURTka90VNyrPLi/OzEfG9mNDo + uVO/4Zo/7IAEh7GA8KX5QLxEhxfB4CGESVaiLgVOE37HBhbPbrGzPZAimddWQRaxejiOIz1DR/lu + 80X6BbtRzDyC+HZq1PfV1uxPp+sr8SdU6wxWVOdjIczZFR99ezcC3m61vUvJle0dr8pCmIsPNXgK + AMwyvQjBqxeBz7hiPg58rn5RCSHmTdiElVxv8xX/ovM8gzTd1+LEy9VvkfPg7NOJ6Ukwq7yWyepe + 7YMp8KZPF7tZBc0GxKgadV3TPx5dJfkvFyeXfxvl81uuLpaQcNZ5uptld/dcZ1mMZum3dJGtYcKN + R5tknfCxnq8mAtFIIhHJx9HWggNso9wNb5Z3dQSNvqEgymdPwILqoVVmUzGSwYOw1W/RIqpPLU3Z + sCWeF/px1Vy+OrkuuI3F4OCwA6hbNQ0vpEEbJUNMuXlEq9DJOju6JWXdjytvv0+g8bFvN9l3vqFX + wMDayBaaBTa9spxYX+aLBCZSxr9+Q1OEn879muIzWS2G/UVWIfGraCFV8c6eBSpKu7KFXKOCwoEf + a1m+nVTJsxawbMYPs6LHdssZ16OxZPPKknVgM1OaF/URd4SPlKYrmiVL8B9N79Lp13U2b2K4ajvc + 4WvC3f3mQy9DKMaO1tbEoV4UFpnhhKGKs2ANiWO0Ya31kkPRkcG/decO00NmP3rEdjk+8VhXObJG + K57osrT5raEHVMDTu+IwTYbt0w1Ud7CMIcAPLLRNuubzVg7XZn77YPhhB2La7oegiyW8nnp4li0T + mJ8q3niYOe9JhglGIntzHm+3ZJgQkmsME3BVwpGdfail67M4cqsME5OYEL4lAecV8aTt9enk7PJD + iR5QmZ2zVCjCfDkVNXYns7ugpivl2WInyrjUlzKVJtoaqiahB6zmVU2nuQPPoJ8vnrcALRC3FczM + aEUfy1VLvVZVF/QWKPrbUacXkX0Sneq3AJwrbify+QQFTY3jIqzbm02WzKA8OOdrAGITckLzcXot + LMZ0o4BE+Sm74oftYvQlWc4XolSuUXD+WgTdb1JDD+DWc7rQDxRhFlBAVsUYbLMFX7f8NR2YmQWp + BAuPdZs07SswtBV5lW/RU+CxxV/q3GKRL8mDNn261BZm9/kahruzH9zOFe3wR9qO0w6eTSo20Nqy + 7RwacRZEqCIcDNuh9/DjOHSJa/jH9uwTll/8OJkD0T7ugaVCQDz4/Bl++cO9HXxuottEvOcPOIDu + 7hd8ooq5OirEw7t/6Hr1Nk5rBLy0a+DykBYGc8cXNMdhxF66QU/uEfmQNfeIasTkHpFXJbARwodB + 5lE1WeSKkvB/nYK0rYGx/WR7S6iTrOFPQEZjyjnq4hcp8bJp2rZ2fdqaivQw8d3wyj4WHheaeXE2 + VrGSDo28BgFlZZ2wwLcuMc8dPipHQ1THuOkXX/yIvuyX9aDUhofbP/stGHui56M5qXqwkujUskBH + Xtip99Kl/SIv+Ix15EU2YUZe8CLaC9PNSmr//3sGZl2a6PXkIPVChZYUsgRhQFajU/6oA8/D1kLi + gMDWwsBQFDMLeRvKXFLdWQa2n41BDKFoQXllFFlzST4wT+61BH3iIlBORdzNTjCmGftVd6yETwdU + ZquISjYTGzgs4tK4AeuwqB5PttMGt0sTaSaQG5fX5EEEY6U+DEAlbiev80gOcbm8OSXxO/+l6/c5 + kouH7BZMqZHSiimuSjqw9VouGQOrCPN1FnwjK2OTrtN8mszmi0U2QTPLgcdhxfAjLRaHcUQxMoig + 9Rt+gEFot/8Z2S8Xxw6uNKCIZiBmtDKqeu6SP8XNVbByiU9ie7bse6zP2bJPVncGciSRH4jfA0MP + b7dEfhCSa8gPcFVmIL/9B6mlhhAa+VXohxeUAOLkmOujIk8HlsZlylX9OZ+FsIfxXZmr7DBQOmat + QcvX4sbVc8O5MF8KXQIopUty+EYM76PjEzJJOP1B6lnCxnOqUTNhuMYZNDbSQF1uUwTuUME3Q1wV + gWmie5uWlE7DZ1R1ngFm1OV5Y4+dy6Z3l+NcYhWfprCqF3WKqPLYqfeVX2SZ8L13lW7uX2uPbC4d + T0Acfvn5moye8S/ir5+LeA6/QMWFEIhm2j+mCgzwRZndrgRFqYS9xzCUfg1+Q7oGSG747GztiEmq + cTYIJQMQjA9H3O0jpnhlEPnIZaPSJ8ehGLdTjrSYvYPJ7/CyB77rNhwBxsg0U9xY58VgWKzU376b + PWJINa54y32/j4SHQNbuhQbYxdLtBqHXIGQ8utnMZ7d94Yd8rAj825Ub9Yhn4O12pcUouVpYLK7i + IfTrxUkdZDD2SK2qOHA91wvGgevrisBzhU9eO3UMSE/NV5UsMj5AGoLz2+T608nV29Hnxa1IC9mk + Kd+UFrtsw3W6st/h2ft3l88nMp2s2kSuMD8LK1Og1K3hSAEPPdfw+bivVPbk1w1/+enasew8VAGY + bBs/+T2cz3+/ZJGGywtjiNKTgCC43ZG0HRLyUxgV+NKHrdPDU8IHoOZ4AvD7ersgSEdQFrVvXA9G + Me3YaAKst3t/RYIeGw3ebqftouSqtiuu4kZz+vG0ttHwoQ5rOGcRY8z3xxHzBDlEJ87Zhsv/D8mE + Zp4ruKyfwOxWNlSgKU+o9yF46dJ+7nz1kLWzTTVietvkVZwpQLWebsDKSXdfuYRMZzLP+c55fkEZ + 7oiw6+ZpjT3883xJfLMxcOsHHkXfG9dc2/RBEyRAat8HegX6o9gVG6jnVR4VGwI3KcoHXar70TQa + tq49AEiodvTYdx8mgsdcH8fhQ77m8vZunfZsyEcGwgqnKLIq71ZfssWsFFEqiev+BmoNUuW/Y/RD + 9JKwfv479ZCt/043Yvjv1FXc6ZfZVyIznEU554SMmQKeVXjrTutvRhfwuCOECDcewJdIRGCsPU82 + NxmEOkEpOrbocFDQgNj1ZbD96HJC3i308us8PNE5vtb5Il70iA27sXQRi/E+Cv4XlRHsV/qjbK1u + 0tv+o+VznbXhFS3dl1SViuCj5RPMdu+yVDUfLDfD8/2g+DSQKTQMZfuwIL5+2CZqrK+KKIyCfoZU + 1t26N38NCWI5qgfvqnzNYG/bN5f+qQ/HyOwKvASYy3j2kcSxvUqOt9vVrqDkau2KuCohxd5/rqMB + CXeUWbsyIS6hMRkDvYC/pzhxtuDy/0NUcsr8aAB3qO+7yIJ3tLPvKdgGMPiU+MZ4pAezRg7htKNU + 8pvqrM0C9qhlyPt3WK1qXwEGev1oQzx72hCvkTbEU7Qhl1fndcLkyA3qtCE+Iywa8yUdUrmqr6Ud + lH0Raei8/aVA3WjG2IBbisRUCCPMMkh0nMAoA0zVJk2+QtJDMt9oxJl5vQRMbK3YIOYY8DZfyba1 + UWKmOvtRSyAoDj2fq+n1TOd6Ey3sIVErTIwhW+8k1Xz9OYRXGvg9uGFzjNxxOQf4y+hKfh4+U81W + gv69LwTLqgvZNHw2YzMMWRsBCoGCIc+tMqAsklvhFJcTIgXHaePQsD2ddh5uZjqwYAr6ERo58lVh + 5e8bHls1Aj6MqwSWZ0u/7dBaSkc34gYB7ZPLSh0/Xuqetw4b37q00soCb+5HU64ZC+Z2LUC4Ydun + 457nmV8c8Kqsr8+BeGCKRoFTw4+LdCVKb21jbgHaolZ76yNI7Ch7KuoLD8tSZxESaZf2hZ456f0k + DNiZjuo+LkitqQn2mT901XKA9VWqMAV/voFFdHiW/FPnihnMWeczPV6TfAep9aPpYpeDmniwRPG+ + npA55n8fJVYpn8hmc/6RK5V90KrVA1YKqJZeUUHVdVRC315/rnENU1JhtfEIgFX7QcDGjAGEICqh + p9V8mS3f9+SMB4BjhGQzq6blLal5KgqV822+rfMS90cdcIkbRzUg68auteiscRWIADKMCgUqivl/ + gwFbMLAJosgLSFxVi0vCm5XhkLrWnS4QArXUUhGB/kJQB7pNV1CzVoXT9vZ13xlqbjgwQTXIkMeo + RMgWx3RjV4FJtNSYlbfUDWW53B2/Q6SMjpUMgU5zgNf0MJGtnGE/IXc0QL9r8QL9BYSlr9SyMPa5 + cfmGE4nT6+TzZWmW8tP2Fzhk71KYKX0VCQ8SNUt94/3vVGsaeEcDpKF699Flrr0DAW+32r+l5Mru + jVdlifP7f5huQeIxEnlRbPoFo1cvwiCi8Zif3QB9BFv3ySJZAfCoQCbJftyL7BlBD1g6zhU/5b8l + P6VhJIAXGSSgeqSFlAw9idK5vdukaQFNDVafetaAJeUbwH2a5NvXo7skl87y+QaxppfJcpks5gkC + Ua8XiSjKtngFlRt7cvujgQl1KF+n7Mqk1BHRB+hN65YdeX4X+ynxuEUdRqwBSKYTgzbwvSo0zbhs + /yuxjpwCrzpGb/Ts5P3n5z9/Gmzme6dB12vkDqwU7TmIEOR1oIpmEkt0j9rblGJ2Y7BViymh0DVK + fd63DR7EmDdkEAymK1qVlnPd6og6XuoDd7rtQObbLNM21XG9HNA+gzw2THy538xn2Q/IWy9B8h5i + qkSKC4P1iH7h7bZcGKwe/cKreMy9Pztv4MKIwjoXhs8t5mjs+YQCJFBX9CvdcPkN0a+hINWfQPTr + UkZiRPprMtpAza5KVFeusVrxwtU6o3BQwt6baMabyQb2cqS9Mdy3+uVgPy5SungzKqsLQDPyu912 + C/m4N+n2O+TcwimilFLxpBr216Orz1eEP5B9z5t8LqqXl2+88cgfj0IEy4odeKzgmfCw+IEhpobp + DBQzvuKeOT+HjZq/X5PHsyX79qGKdgcFYFaLONb5f/4H8pKv0F7pf/iMdfafbMJM/sOLMu9olvrl + tCOZUeGY+RV3/IPwuT+64Hc78AiimsbxwyUZDaUSBC7KMTp3ZFE+gIHrDCgsPQHoVfyAgI3eLb/m + K+fyQpMipEdvC2mPjejandfVAu3aPgpHBuIZoYgck6y4TrbBSoQDAvFPPlWpt+B9fm2ZQ7SYNkDC + W+aFdQvppX8diXJbCIqjZkFjLP2+5dZQkX91kwHKZL9dYJD0q4FQYkJXHyvhW/rS9fsdK/iM9bEi + mzCPFbwoERxmU1lzW0kfmKWLbTJ6xjcWsS2I+PRzp/Em457RKZfogFiRXO5GTAJqIzpKo/fR2oDo + EbjevxaGClqHRZdqkVeza+Um9vfveJYuNwiV9WsPN14sGhY2DM+Y/2OZfeNLoBb0tkDLOJbg62d4 + dDFDsvz5uBZvcoLVg+q90F30kEtINVxWlbVW8v12I4kMEXOOlIQiOtuWXmQ1l/tKfOQkOjfyEJ2f + /WXi/wXghzEvoa1XDSrRUw0Xq2NHVzMxMCpYr1MHH7E9dGQDxpmD1yyqmKrY0hJZN9uMRx9OP72/ + nCzmX1MDI6XUJD9wmOeHDhqyvo/rtgzNa4gf43TU4ZGeuytBwJ5lOu+xu1rtYvY4IQdtbcrCDRWN + xyXx3kY9waTUM5azQjdRnhbqIs6Lu7LbqXE+SFCH6ufXsoXCQYn6/gdnNemz/bg51Jhq9cCT0kZn + +AElclimrarH0TCjPurJZgLx4V6gRz7HH3rZwDkWug2zSk7LASxGLt8zvkB9uHs23XkoMJXPTfrl + cxP7fG7SmM9NdD73bw2pNBGr8b6/4Ac0icKxR4jYdwVKUCYx/vUhAauJS4QNIltAXGm3nSuIrefC + Kalxf3aH5s2cajd2HAXUC6te7IM/nZma4rZm65SbLbCAKmPRtLXghLjk2mh51Zaa9fzY69msHGfl + +aqCVfsmU2Yppgo5L1EU/dP5XDnxxXioj9nwHfEzjoXnfDvf7uCtF/eSfYJ/fILQQb99psU7qvWH + nvMd31k3t1kqvPXZSoP0AZrRXbK6BdxpAd0nfO6SEFOotMrH/3+rZ/T55PQ+fxY8h5ZlEqvKb0M4 + eAfmtg6genH0RI4liwYKZCAx+se6iGEalOVZeHXbCtZghgpR1vO9z4FVix93HBQNNt/hx8rxJtth + B9M+mQMfRo3R7IFQrfno1weg2Ez6pToN5ezzUMM+vXxDghOvJwBl6Sk7LbvcTEnPLl3Gg3O3kaYt + rL1sc69t59+u3r4fPTu/vn7u7LnH0MDL7VKf2/quAIomcUDFtAZZNpuIJarkIbpjL7Bd4VXA4MLJ + 58tDJyTxha+L//Zreswc0rDiAXNfumE/GBL5jK3trpowjHd5UUKKF98ISKad6r/LUsAe55uI4/zB + CGsOmzXqewUy+YPP/z556uoBywQQKb2WAoLXJTvrmwb6vsivJ4GQ2KMhHfO/fJUEcp3fkfXkOs/h + z5s7utYOSK0wm4nIBqgfYK7IKiYJ/NUS5xTKuJBfVcabHzBTTKK2yrooZnEcefV8c9m5So0el9Sa + ne3GlMS0llxeQ3dMW1T5yA/acT3LsrVSPcU8vIVSSosK3hZ0T9I2DLoB51E+52uVfwAkZ8A5cMMb + dWAW6qJyQpG6hfdZrKzKqzaC57fHhlsLAZ8GhOcjwF/2SiLYs1nukWWDOhJ5ethxlVlFLUrPx+1d + eFxQzdLjg6AGuJhlcXL1bnS7S1b3i4n27/PV9EManr00aHXgYFL95RWJQnsvDt5uRwOOkqs04OIq + HjRXl7/SGnGY73l+lQf8RUwI9cmY/yUQaoRGIQPHfKos+bjz8TXtjHx0Pua2BmatnXOjAw8NyLqr + k4h1FRSeNxcWhSxo2T5jrsCziNROkc5GzgXHQVsRU+tZcFhbLa8UBFavZBDM7q/DNIEE4vZS/FIT + RdlUiyeq0REFaYg1PAE7ee0Ca0NiKbBVYl37cCpDp6b2yZtTysbWM/z1CNitwZ9RoGxv0tejEp3P + Df8qqQCky5bpbaJacsRK1KVfLCYDOp1ITcaRbqZDc033MGkcGe/HyoRea9zudAuCYL/k875HJtsv + tLfIY6wm5kZYe3bVmr/wmMXzD1Vm3lf0XqzDEIsGTj+6rAfdO95udYxLyZVjHK/KooHzs7ByipNY + qNJle9F/9cKngeePgX5Pxm5V3jyw38pUe3W4NJgVCRRGlrYN5Q/eQrK9dNlJh+4X8AJleToh42By + M89VZQZ/I6SoToDLIecv/b9nnis5iPLXYrbttsqsSPgf9xCkz3e3t2m+zZHI4P18Fq7FpnuRcUtl + dJcIwmjcZFX/VcRI3Dxw7cMRNdsPXEPRQm0M6HC8w5oYxggehbQVQIcGETf5gqLA4s84URxYP7qg + gqu/4ux9eOo5yG8tzNUEKQiObK81/hKiOWQ5P/bKfbqewSFrStTR6MlkQj5RrGu5B4FID3UxCznz + XgrOkx7MlOIRa15KbMBkpRTX8Kj4/OFX/e7lMEL5ukasvsuos4U/RBmL78nUniBSCkYp17Z3tM+e + 79BDSJmlaPGHcNIICYenooicaIbFKeU3P7yTvVaRVK8C/YConuA79eEg0nKmRa5WY0L72ke83VqN + CWu1j3hVur2vfo0NNYZxJZmK3FpTj5nAevbGfhSE0ut9olhQZdGc9k7yIVHEaJLRWp+v81WF2QI8 + RNlsJypmxZQp+Tgb2bANVGYg0jbIBJUCcr3J4jpTFdQzAcyEcbpH7WkcfJ54NKxBCF6VdOwKRgqz + ElVlpeootveImRRShlyRIp1TNZoYdp5UeCTxWE7svlZ5qO+4yl05sz4ka36kY+1mFYDlw8WpWprc + Ol/kmSEM7tjz7Uq6RzL6mGA9qAMztKQoCHwWGJbCedpSitCRw9yPwA9WTvo9nbXoP84g0TOVqiGn + 6P4dSRaJXHUZfI0QZzYPdgVZI2IEWaMDgqxRvyBr1BRkjWSQ9XTijZDoegQJRdkCudr588VvKr9I + N7fUlxFXLLkJAmTm/pJs+Skhd/djsdu5VES4Ec0PJhJh1ze3mXwrO6nWZ2MUYDxoMV8P0mWub2Py + d6/udsMkE+RUFt9T/GIjqM17FsgMUFU6bEzpoIBOD6LMP23EyJXbeduKHyLd+Ig2HgWD0UNoa+hN + hsvh8AqYSFY7nJ6SKHrphn0SseQjlllYqoFyCpa81pxDUy2KFL9TFRDT6f8HpZQsZj4dsJSSWwvC + iBJIZaAy8emx4A3DV0pKgHbWAkMX6XJK0Gc5n/9pAwatDaiAazARGlzJNVEdQKNxHFUAANp253Yh + JKDMHPFpsl43Tud2IZ5PmEwpnIuKJ9txavXEECQyV/KKzmEWshUX6OE4fk1Hx8MgAjJtpELoq/QJ + +iL8/oza0eLpXn6mo2EEI4L6CZ+mQES/BiCbm2xml/7KSGxMeN4EV234wVBsFo/itYqwPuVjPxyl + j/Y4Sh8bcZQ+lnCUrj9e13CUGAH/UzmxwXs18SjhuvfYo8wLPTMoUjYZTTIx2C5K9VhjdCxwVX0x + 32q8LWkL3txDXfD8G65s8CvkZc1icpPtVrORmU5VcpHLtaILYK4XeR3cr1FlKdnuQrdpcQdEMQkZ + YbXARidZmxk18dpcDXaycZnx28tRCYhUteLeBiz06yzdQ8VQEr5ibsTGx5fhBj9DWUDsmkkO5eqY + 8gsf4VoxQjD4ss6FyWdXJYgVnpVplm1mALrH50upXjD7Yg754n7C28mA4k14Gl5XJ7CcsffiSeEK + 65qxBUG4A+tOeUj4S8XWHpI9HGZY2NL0ZWwPXkhsEpujOfk6O9UY9TiGB9Hq0T2mWdNbVJanZW8O + kfR0LLBGqNvA8+vvpDeYxzn9PE1+eBb0A4pRj1gTH2IDJu2huIan4Hq7lmea4f6EBZ0DLAa8WimW + M3p2eXF+NiIk9rkCRZ87KhgLrg3hKQdQAxPW4BKaKMeDoE1BkchVeGH3RFKbQmHZ0b6cYfwlx4Jh + uQSjMOW5Ori7BF7VC1y/GL7Ob/HUWPpC2iaqwtInp8Zml0+k211w9x1A2fcwKByRr1J1Y2av0OLt + tqm6ILmeqsuv4lL+cHlSqwnxPZ9UM3UnMaWxy8YxBYeyDN3yphNpD8zzLYAUJ9N0a46MiMSYEMTv + pyt/PR59SLaE//V2sWZrzHX8sE6gChuFCGVDys1HHxje4cFOw0d6k4l/pz/u5jfzbQ5ZVJl6Tlf6 + iQ8i1FsuuV5S0j9bh8SkKVrW/vaNybKe51YjXoBaPf5UrtQIIKesWl9tNlRTIUngm+RSTRKdP8Jn + c2BelvJWwyHRpgM/qPi6ltkMKloP0CHFkMMjTZ/ml304fJZxtao6AROo3ubxe+tRgrvwlIYBZXIx + kfTTZLD3jTzsVzIdQtyAp5xHI1kqBJlaZQicw3THQOf7kPdhT2gf9Yx1xo9swkz5wYtSf9zdSJTB + Ii1Nu3bntwI1/y177rT+9i1zQAbogyQiqA8GXmD4iI01fShQwYMn67khwQTzfH67UnZjKdBnheMJ + O1pYfnfd4fqOVoGdDWhDRVpf0/FnJM8dxml9pJYuNt/Io+akqEzOflB41ltj984ThWIwGrrQSwo6 + 7CE5YCIYIDBP4DCpau/BRPZfrxjpkciOt1spuVJyRcnFq1LJvf7gxVUt14viSj1aCPVoNCLhOCbM + 8xX8/W6ZrEbXJ5ejDxJN24tfjk6QYUMjbEOqz+hO3CpM4BTd9DolaaY/8DMu6jkg7i74RRAL4qSW + mt959ZyufHX16XL0G63kgkdBq5Yaubz33gA5XbHHAq71V5PBZfBlWTb4x4I0qvzuBrg+i6OKJ7LM + raXacX6jE3zd0sBpl4KshmxQTSHzqiA2qT7AB9mLX8MHWGd5KvClC9B9SMQqt8o3hMW9LryEdFJs + kH8b4vuY9a2zz5LNFtxapzvhPNepXdvvWNLF953sFng7wZcJmV756NnV1cVzR0xIpd7yTxU4coy0 + ibl/eG0dlEfL7dLJQDUX+yhCv4oJYr97DVGehXW0eo3s1Z35LlekuWK57YHFRL3yZfcg6zx6opvy + NxGKeqbhu6uUHUuvSirCyFqlWqZQpDxvOre7NNEi8zw+iV6Sfsij8hlrTVQ2YWqieBE399/IqLbf + lL2O6veTho38t3xNXGLcnq/WiHPtBQg7eezas89JP2ohanuIFbV6ejbYr2WXehLGYbmcb4WW88iJ + 7NYP7dtVhB7U+Wn2SfBL+xKx7PUBKNHM9fEhyPOVmQXKNOldYvmH3Rz3SYj12ji8okEPeECEOLk3 + HCNSbooxFkl8uCJej8QGvN1KRZaSKyoyXkUVmStkNeBNEsNyLmvI7qsJiz3PD8YsDgIInu6p9hx9 + EUFdmRx/s+PK11zqUPznVTr9OuZb8xZ8HHxgTmdTGq2h3Aeg84HRDZmm7ja8o9O1c66CIs1RapkV + BscHkFFv5guhHN5usu+CCH0Orsl8N70Dra/cH/55RMkGoOSu+RnHVajN/euOjr0eXX+9Ddb6fJMF + B/83ywm+Hf+Jrp3rv73XxfeExDJfjzC5HUzn67nYI5XdDf2BXlruFjHuccbj8Dq2T/u1p+GDWD8e + qceh+H1rmXf102O5g+TjqnUrygR+//SRBj3iN3i71bqVkivrFq/iuv39/F0tIclzYRcvr9vg1YT/ + wQ3eMbdyIya5p3+fr8nkXKlofIW8E3rfWHKHmSbWp5OzD6NZKmhZbtNViRf09/mXeurQ6a+X5+eT + aSY0pm8pVwcXhkXI+DKIWg1Y4odxGD1UIs7bKxHOEH6jAmbJSJwBKNqWmiTVuY7dyOB3g53ly07l + y7y9msz4DgMhczFEpQ7IUVLFS/wx0cUavxx8Ntxlfs+E3Vnse9IUFs+NxY9vrzBGg42pJhyYNtr+ + pC6CcB2HkiUGDR4pD69scLLkKrKYCh3CO+zMoRC4CD+6hbnTp18d2hLm3eCrHsi39RTqKx5EaGc8 + yNZ3+3TSgvZkbeBR3LyzqO3PTp0nGE8s92rfBGvM2fVwNU9LlZOtHWn3zgyQuBRTmbZLWQ9AMrzd + Mm1XSK6l7cJVPCU/fzivIplQRqunpPfqRUAoC+JxwEcvkPyKn+/m4ApPRxepBjXHg4//pg4BUmXf + MwtxK05bk646psyP3Vp2wRY7sBdakviUtcFWxoHPRUdVjKuqZFNc5RBsEOdcVt623EfIpsxW+Ryi + H+og3K23yVfJZY3DOhYPpxtVYrtM/gWkqCpnFCynHdfJv/CbF/ca0xubgARTWawKv0H3O//NnXDJ + T5NdLui2saGJ6s83QDC/TRbZDe+84Alcpct54sAk0TmmlA5xJooxFM/XRromp6PgpIeUFicw4fo6 + KSz7G8FMjz/n/POOyxY/qAuG3X4QFKUtGeVPtxHaXoEvJ8yQK4asDaIzPRRTXSzZ2pft2UDXxBlA + fHVGqV1dFWN4vtdnV4fbLXd1Ibm2q8NVCTN5/q6Wu8a8Cqk17OrE9VgMxo/rExHixH0dg7Iiv2KM + gfbk9rbk4P2e5Fq3nukwUykFWBlAiw3v1Pe1cyk2o2+FIdDgEXmNLBKdDQOJYbpFDDEAKZjf3vG9 + b70D7zu/ZHRB/n6yvdtku9u79W47yre72Zwr+e8uLmmxo3le4PzERPPBtAmdBk2Ct/FLl/WpzS8e + sk2F1o0YydDqagdT1dlv7wio9vLgUpcNmVDGGQNB1eN8l/15wWqMfUkERAJq79fA2y2JgITkGhEQ + XJVEQOdXdSKgoLq2Gfg1woCBXyOKPNZNWP91weXXCevNUaukgsZtPoqnS1rvaJdj4Pk/dcmr6aSz + zyh9F710g34ct/iMNcetbMLkuMWLMvssWcojgLrXJWC5EtzLsxsueRQ8d1rvwBsckIU8c4H07tIw + UuMlynqbmdcauOD+mMBwtlETn4QIkWGC7fQmsx0SIM4Go/UPwzdh/dCeJnG5G3N+0xetVamfAP3c + IW0sVtGkBPh9XKjYY1LdPTwA6pHQ186udL0dDFrDo7E04TYpb5ebo8I6s22nO2ov8QiOFXQ8ibva + 8BGC/uyKuK69bYC3W+kPUnJFf8CruMm/uWjgOmFuBfMtePUi8H3XDcf8L09xnXxe3NLJ36WvrBTc + 5Mrr1zOt9M82vLXvXUFJw3YQ8G+GUzwvp5eBUfBtcv3p5OrtCNpfO5//fkl8TZThCx/9Qf7rBvtw + QO/1n86RK1YAhEuq0atHcd8OZibFcglytbkP7ZB6wHIZSum1hYjXpfP1/ILUYpSYtWKuxQnh/4nj + YAyknjQKzOyCUgaWWDFmLS4Qc4nKTwHwy1UVGbkHx+NsjtVO4niHhVy+WeXefp4vST2MCZ8AM/Bx + dcFnKD9dHGXTbLdelJLn3j3Lno+e8W7ku9FbQWydPDdVdygkKxsXZUdwSKhbpyt6zN5UEnQjPyRh + LaW4dORJw6el5M0n3fm/ZfHaBtKvJoANxCtJJ0nW6rOOI6tBHbSN5ndxrqVek9ZwEkbvyDt3wpsW + btjvd/PpHfh8En5IbG75lfRbttgJzA6Rw1JiSF/9+35ZaGNGnNl4k+oSgONFLQPw73Kl/jbrWBWO + WLTq9Amp7wtveOiXWPCOB/o7OuCMJtM8OzwgDB9TvZLFPHhc4e3O/OPkdkba41iRsx7y6tIGDio+ + A+kYO2Lz6jc1HqcLrRn3j9J6d4D9D4gm8oA6oudT5IN9lFnoyBMPbu88Iu1XvItuJZV+Vex5A0aj + BqK5jVxXI5X4Xk/0XP2MNVaJbMIEK8GLqECe/faOUuLgX03+eCVCoItEEbrjXZkfeZNseLvAGb7e + WmOm2gY//xhWkU8ovo/w1u3NMHXUNCBqGtD4hLgvCek3EfRTtlOhaMaYDPoymiPf1nnsSp6aHtR7 + 5TKP/Y/9HRspP4TtiknGIslcEFC9KdVoLr8l013WZHba0SI/Sd+jXdddrJ04hhfRvrrERbDp90IZ + tyII79z6MNfp/Uc39uwjZ3i7lcktJVcMbrwqI2cnn2qeL8IAe71sbcevJoyBuT1m/HeBtLXfaqNB + OWVlVs5lsqLrCf+TrQWA+7OT5xNdcGIcm2jNiGxVPomhJBIAhOUzfIbPF6NFurrlBjzYITIakIpG + 8m3Gn51nMAD34tf6I/BurDP+IVOoyFF42OtkvqkBGYqeDszLVKL5le+er9MplMKNjEFoRnvxWSvh + L4l95rHwAVopoyVGJPCiau5XtVDM5DKMww4LN/J9l5sJVTTC5u9jynVNuMj352MjtVoOh/NHnocO + LEBlOTOIC8o3Fzt988M2Pltt9Q5S6WctpRUw+uHjlXx/op7uJPvLhIvv1dc/NsIFA2pceIRPKHt6 + qAEr7zxKzU8MeWRcJYE64GNAhnxSqok9Rg4Vw5v+aNgb+4pCZd9y431c4V1I5MME7CKX6QyNd+FL + tx8fGD5inZ+BDZjpGeKazM5YTqVyXufugrzekgtU5moguCTfaP0g8p5XOXfNxzBeluntWp8vVSnQ + DZHY4ZPAGZA0V8wEMwdiOApdxjsvFHA9xXpz6TZkqGCwEGtea+NntxH+hBLuA+wXEvjo+7ze3Eya + 3nQvmBtkXIkvXB9k80to6Y3rtRh7tT510mMQ+S/dqJcdjY/YGtGyAcOCxmsdyY5VBouSIIDocmOV + 43jQROjzKbXzwdc7mncav3TDfhRO6iHrXU01Yu5r8irubDe3udzZyJhNROoL8GMCYI1yPj6T25GG + zHVjSr0weu60PqI2sDdcugNNiBH3I7lruZjPUn18YEKl45rZg4+GeWPAa9FIXdYdz/fw7AXHqNpy + N2m+WwgvCzCzZZul3omTohoaHuidPOCh6pXk0wyf/54sFgWokJW+6hIkYmn94E07bz2d8CAxFttq + QCPpscI37IkN/idxjApFO8IYR+sID+CdOqKNRwKq5KKQw9YCjvl2cc8Xxv2iHwKz2tADxEr+SD3f + PqcMb7fDSkbJVaxkcVXWm7w5q2Mlu6SGlfwi8vn+O46C2He7M9LXCy79+38OjfgQWe0BCYIjlIk/ + Ek/0kJA8JCSkVAEIVX9cl52XeNEPtR1DRaTmR14/QC/1iC2RmmzAIFLDa7jMSpCV63SzFHY1xvuc + hl+N9dwDfupCPFTl8DXgDIOJgOiupeYPFOWrsEhL1LfHlPJDzFFsjTA94ZpMPo2bxnOIKLiaz5EE + Y3JZYH/Q4O2WYExCcg2MCa7Kg+bqog7GFFUIqz331QsSuYyFYxKR0KdmuqSRGyYCt9/myQ0UVd8X + sEq8yfrp0wz0YJ5EUSsL9NM9QYqggkLjS1ff0kW2TotZWcvhRvxtUXYpoELz3VrQH2UbaTBkfC8W + qXqLohZdwl1hKTskW2aAKDVfjUenVxfktQKNzXYiNpEIgCwD4uXNZhMAuH69p7pfJeIVfZOgonfe + XH3UmXvEDSMEx+5LWd/q9w+IgcRynLBjt9fYhFfUw2TQcNt2ZyiUGZ+4aCUVbO99d+gj4QuZ3zgq + lsrKT+bAGTKfn8SBMRSHAX1FbqyIWsIeYX283ZaoJayH9fEqngl/v7z26kQtwCFaIWqJIn4ohGP+ + V+jSvQB9fHfdpCn/92LHzfl8Wg7fPXv/7vL5RGJXVYtaNNiUGlor4Dxt+Gz4m9VLcZX7pbjWuLtH + LKRNp8STOm4Kg4WFkZ3B8pCr+igG0GNZrQZahsTVnM1cyehra8hnrFmbZRMmbTNexGUl6aXArZGK + yQ3nSmFy7Pl1uQ3B5xzLpDAXWa4h7LfRrkmudEx3G1A7FPsNgFkKLh1+223fmGQg056ES2Zxb+9Y + fWTDG5nKMPbUNp4Hkx34WKkFdamHk3hFhKhIgx+8i14St1egQT5jG2dQTRhhBnkRzwkuQcI7IoM7 + BI+B8EmEiL9kIsllo7nTn306Obv88LyU5ohxB0ooZdFzx0bGBW8RbvRFvDSOGU5jHyNhIGEuKl6P + 5W1yYzcKKiLtAgwN89H3+WkJdwpqexkXKPGuPOhSGAiuo9jb+wTIYEV5UawGsvcMsXrFYVvoXsce + 7pfwIbNC6oGLGfM3//qRf1l7RQ9vt1L0pOSKoodXcQH/38llrVqSepXKZY9C/qbLvHDMGI0jueT/ + b76aTlQu26wa/ZforuA+FNrbv/FujYqm8wD4CEFAW9zEb95N04oogdywAbILJPpVFi+Yxjhlvwjp + r3ViHb+FywO9yZBUIs3I029cDxV9+jJf3fJuzLKl+A3qjP+XrOv1mX39224Ux4TW6hjP2qhRgrDV + 5c43uzimNbQ+nXqxLwWgmsNsUrKY+mQNKDAkLKIVXbUjqwQn/iXfG8rpHmZqpl9N+exuDT6UKBG5 + 48dnlvM1VyWfjqI28mkl0flTzlcHVrBOAPVj+kdJHxKTYE8DvXKI9vh+IpFso0PujTNqr7jBcjwf + V6kdkiCBb1LwyFlv9hibB/cwK7geWpUHbnrWs2UYBkkaikWoZ9pBbz1UmRyRSZdvLqM34UtCe1VH + qWcs07p0E+W8LnURdYdaDtd86QkD8yJZUIMfBy+Xrz3X34UpCyIADAriPXe+bBMmcpKYhxBZfM7E + auH3wn5SnzF0fRQA/K3IzpKnt3zTanH37hGG1ImgjPfOL/KJzOsX7zKbgz7Xy35wQ9wGvnJjRhgD + TUlHTWuXP4gh5Qw2emA1K41Gp7SnsgseZL0UDyGy1HI+5RNvd7PrO4kYkfULF/M8mIi53poR1bSl + aJeUp/MM35JL9tLttYxLT1lnGupmzFRDdVlFwpf8vXdLIx5arkZsvOFkuWX8N1tcr+FAMfDQjzzU + KoTmloKWttrxt2xUUFpjMwF6rOodr8voQsTtIWYPsrMscRcWro24ljf7yYF9yMkLpfKkoy0N+XkW + JLQ/PeojSMJ99BaaX2QwSOVh5O/BhHbdtpk1CHZzRHztR3dp38Ls4iFrT7pqxHSly6u4YZUwbgQ8 + USYdegpLN4yCeul+STT1WRSHkYLSPTaE+eRpOZ7CalOzCTMzLz66QY/MTLzdymcmJVd8ZngVfWa/ + Xp3WfGbclq34zPxXLwjUtLlj4nkxQBnBzPsIRff5tlppmm3mtyKNpqBwrdSW4rTJhflUrum8udf2 + AB/U8m9QJoZtAO9pkWdGIodhKwlX74Jr5FzQ69GST02+cGQMZHOPDhPelIywoo/s1820xUfGx16+ + EX8/swK19oIVb1rQSirheTQKax6wk1IpfZWighv9YT9p1dGVb9HsrWsnrCgL1z6squw5jAP+aHiy + uNnYS65QxRMomNRfcJRs8R/bkfjNLeJ/TqE4YLtNFTbbu93qdm4gszFubwa9Wuda3kS/1bci078o + dYD5B66qbbpKQKT5ssG+L+T8MZZM+uNufgNevMqEdGC30LD4PnMdfG1X+ULK7fd0oFE0Jts+QXsp + SNMZdLi0Vp+bdIB0THxbWWJeaiu832TvfPufldod+EHXYFt2ISi60GvLtRHPCEX87urn430ufUHr + UvEh2V6PdSQG0hmsJ1NPTyYS5Ow5LOy+oU9LIIdDP9g9B20ktBnIgbTjqsevtYCHKhAgiAZ9cUWj + HmwSeLudfoiSq/qhuIr64cnbyzpTjGAwNfXDScQY8/1xxHwX8DFAP7yogfilkMm7mH9N+dZbO4tK + cZMKW8xi9OvHcyKSQkuHU5OpqRGh9QMj/y+T3Uo1wJvj28sMoi1C7TtJ13XMG3tai9IRH0WACeQO + lE7XJrikqihvflbgWBraiEfoHonOU/5ADsw8rWtEMcCohq6CNTHaLnVOuBrbT+QWQO+fy/IREayb + OPnIdxJ7MxBvt1rmUnJlmeNVCX11/beqGUhi5po5soxxM5C6lEZj/h0ELL90QKi47ma+Sn/RQP16 + kn6dA+utjPIKhRR5cmU2/30xK64/vSN75Ui4qvxr3WIbDq5KNlnri+xDM5RUEHYlHxDKQkrjsLKU + 79IfWV7keJl951+BmPjPgPxUJAS0yFTdLxdvlQzgmp3mBXWQ6YaOO7+ukILwewZ2V4pWBZ889Pno + 8uRafWE5I+AQvv7lc+Xz5ZAJkG34Ec1XO99mirwBPeZ6Q4OpMk02NxnkP4nExWKQxDTaZpvkFqpQ + DB95ovfYIuUTic436ZeFsKOEG11ZPltA3ndgDagNB5yJEgVAFoMHB5Tnd2FR8RFHpXnvh+ppSB0h + uM34CQkmIefz25Xab/tl/ClNCWYzPFKZ8/3G0BKl8cGUdr7MaXmIq1tCb2kG9creHeexxbfNCi/C + isLKrDjYfT9MpsLRtgRRiHNHjfuAQAEejVxM0hEVdSX0mEP4LSIS67ir+x6yn3uGXeVD1lFX1YgZ + dJVXUYMoa5rJji/ou+TWxI29SacLwBypxjFK8hkLiO9FEh5W0nVJE2w+u+ePc8tsmy0GR3CJMR26 + 6PiDytoH2iJiL2+vJqW0kwcgJWOU+mIjP/07P9+T7d335Ij3BstRvLfOQCuf5oD72Jjx/kPUkwo3 + TrLl07xYMMST2Xh8pG433Jwoon5jEUwSyR6aYObgjns+w91GJGaXBatAckcweig04iZ/l0fD9gXA + JnJrU/6u80M6J7cTKiqLfv/1Izf77X0UeLuV8SIlV4wXvIrGy/9eXddiWJ5XjWGFryaEBT4NxoSF + EZUxrP8d/f9G57/xfQTJPjb3a7HyuBV8dc1/xTXZb7DpZgLvCJWpZHq/mGzBcpXbCCi10ij5301+ + qFFSRrflBglfzLTGZ667h+0v5rfttkjE3BabJ+ZKgRv5VUpzLVy9nn7bJoOBtYVWdOedU/XeAk6v + Kr0YvHG5JSiPrN7rwBdWqrnv+Ugw7hGqD9gDVWVURpteFr62Ucx8YAsswD7uGduHE9uJunc82HnT + 891NDqeGRzgBKouyuij6CmWuObSWUhtreQ4Vdryve08BH9oEh/VDbfwEqY6v3KjHxo+321Edo+Qq + 1bG4KpMXLk7qBT8x6N0VquPApRELx4HLd37JYHsBKciAblqmkWx0bZrkK2PTL7rbrLJvqYC0UHdM + +N/pbFYoXvlr8btUAl9IJRZLU1HBLZ69yXYQYsbO6Y6JsgsuDfN7ZPkqkJdDCcdOX5WpDMukfgZ1 + 8smYx5LXilBC44CFLKphZQ3LA930YZqPOEqrdTKm16rc3QK+fZ5/yRbwefjONF+hDiQ8Ucrv9O8G + nblyeAfcVG0p0dHNOn/CKebAktMQKWGMTjLfLVxOvWqi9YEmLf/Dvk2HPdNY8/JHZHhq7s0T44oa + KhMVFjb2omsr6HmwHyazzfk1FHMwCApL/RpA3hCVOsfjoysLeaCSH0qV14q5L13Wz2eFj9h6rGQD + hr8Kr6HmgObAfDWBOKn2RamrzjZfEawCIAhLcRgO75DJPN3o2x0PHmsJPFQxi6wDPLoGD0mkrnqX + /9k8+OCubg9gk+EJoPRYpBPACVrB2ckPTMlQ2rew0WO+jPRI909BudB/mNXKLRgS4rdBPwh2/Yy1 + t1k2YTqb8SLaDNubtbQAPp98PpmoV9LITZ/fXD53On7Fn5c44fQPw27AGwgaOtlYkNxRj2zvxmZB + WG+ulJjR2PITbXrPwGKFVs/mjnpVdKKgnlb7eo1Fw615jdbD6sozrFH853f8jd4M0MpPSV5F3o/W + Fzsb5L0Ob6SrDv74GnRiP4mGAGUPMZB5dK37vteKG1t5uBfzPcyiPVDXlmxViFu2OH549vZbHc0e + xm6umEfsE8/wdrvYDUquxm7EVQnYe3lCYrcWvYlJWI3evIgDN47oOA78OAyaiY50XUWyWN8lr5EV + 3iy3qD2CTrOrdcL7UXObiUNXbDp8bGuPNlb9hK2RET7eQeTVHF5dbTRj3ERxaxZquYlSaKcZ0aYN + 0CaoFe3UuKHUkFqNsYNfWUdwoiA6VnUaABUyROc8xiEWPSDIArntWsyMX/ZGQyja2cvkdpXmUK16 + sM0+xInAZ9a+lzt0V+4per+9OpinY0BGjzAuppQIug+Q/jOUB8VXAG0Rs9/s8XZbgDaQXAdo41dx + s3/7j1/D2l5PWRhVEdpe0DAK/XBMI77eSDcTyL8WvIEGJpA/ESDu2w8ys3ZSyqxtwjNXBiT8uinz + wxv73KzN1e/S0SL9li7Q169zjl6Pzje5txYXPyc/+E8w30aazVWRvV5uZ+erfFQuczlfrX2IPVUF + JJvU6KeEQoZ+nmxvSbhWkMiXJ9fc+P6Hp0HAAhLLoDEu0u/ZpPigTfmo+X3Ot4nRM5Xsmi6S++d9 + rboAfVGL+Xo+Oxp80yKpqyNROJROHoGTI1ixuhHaO0TFsiqyJcsq2XzrLdMuD6z9eS9yicTQkFNU + jLnkEOTP4ydu3OxaMoNdz9W1n2rIIS1LJHqjLmxTR+mjEcHn6fS4U/koV5/auwMFeEWCd34/mlH9 + jC3glWrCALySF3Ef391MJZBzQXDLd6Z/7W5x70HKUKfrl6PfuAwHBAlvGvWlN+3huZFJ4KviYJSn + 22qZ/dZZjEPW9bbEnTxGgoJoIcFpfeRgWSc7sgB1VaDinphFV6q5ZTYDb/EBSU0+4aZL3QmqBR+4 + CePh4VfYmGXiy8/yWPVGHY48aq4KzSmwL4PH+k2OaOMBc42UlFiGI/MlnIDl7eS4Xqr9NVQssdFb + 76Xr9wIUVM/Y8sSqJgyiWHlRYpDxJXy/yPLddCqqpEaLewH3XEqI/7JbJpviV/lunW40PH7Rhthb + mUiKHyrJ+ukSyA0cX4wwzQ520MX9ViCNHjS3sLrzbx+5rW9vd+HtdnlyKLmaJyeu4nl9dn5mMqDE + oe8z8GOYeXIvPBZ6lIw9FpFIFnGf8rHOR29Hf18XBXoyh+nt9enV5wn4VTVYicGdlWcbsUT57a00 + UZB2xKffYscte/7rbylXgRZ8YCDZCbhmxQUxW2/40ZLmY2FVgPRZuuC/3Ygsp1X6vZIjhPn3guwD + 1A3NuSLz8s0UK0gGEfNirnLozuYzb4DiUkpiL/LDWsKcrhQwBVWKMNsE1atUmzB9/EqKWjlF2xCn + LVSLIoZSA6L2wejv5fmeBmR3J1h1sUm3MrXekOr6rCWzLgq8mIXhP53/sDnpwPrVSXd8XAfAlhyK + sQsU0oreYKOEfpsnmAZZG897/YmazMkaXbOYL+X3KGYV/wdOtGS9hrOyB73aUXU9jaCn8OkiNATF + FB2Vpqi14/kxGVSL57GeWA9Cv2kGr208/riJic6xBriFFd/uqVYaAHKgnV65of+/kxNrHUA9YKUF + aOkVPUBdlx7YaqkUY/ywF1DKZaAH/9UL6kVxSMYQilNAD+cFoyNfhxq8ga+Kk/zu5j7he32e36/n + c+WanW54298nyZ/aOavYyijgm/J/yI/ONOMWjd2XLu2FE4qP2KKEygYMjFC8hh99s54yWe4mHa+4 + tDpDWKXt6ZkM7T13bJ9QscAraNkR7SPOaDxk0hTijNqQLBydb/NzMlP2Bxq7DpGHY0H62YFG+4ST + 4eOZanlr7rIoiF+6Yb+EZPmMbVajasLIapQXpccA8h0mt8kCUkNyTCA3QMubfo90A74fuX7MgLFs + IRKXueqDRGR+HPpoATcgsBwaDfHjWLKbLeZQiZ/ucVHWND5Qo3Q89FCXoO8je0D6o8x7sklvq/tQ + vfkBIJLjKA5l6+kGsTdnojKoF3r4IE4K7f7zUY2u5/uP5bV7Ea77dSKID/P7hdh4oJSo7wzgTYm3 + b5qTPesrD5L0KHUPXBASLDcNKPwENuhqpAfzJrMfSLUFIePa2RULelDr4u1WKqWUXFEo8SpqFqdn + p14toM9XSAU3LHg1AdwwvmmO+d+eVigvN+lEQMDlADwJQ6KYq+ZLsK3ANBMk7Hp259t0DQlxWNlW + eRiscL6C7vNRMtqAkQamZ0GVsgYsCPRlvjadAme6HB08QLPdBqQpWhMB+YulG69Hd0k++t8zQMpM + k61yFp3Opl49dazG2FphWvNbfD1xFFAvrPuMNFswcJOYslorNttkiSFL0SBrhq6OSAV0rCjvD2gU + B3FVE2+kY6owwgUt7qI4DGLi1rjl6l+4i/mN74RtGNaE+IEf+lUMxSrmaQXMuQ252hwBLe2a24+y + wBOmDszW0uQzrYiojWbP+GClklWUpyiINXxxF/Z12Ab/2NJ/PV/LIz4WnprydDFehMVV2LhaI84f + fZE7YpNT7jcahoKVDuYbbNfvyS/XaILMVciy4evb+p0AuSXSJoP6GLB9TO+4kiDIPwsE5JrUjtwP + UIVrgtlfJvhpj5MdMFRnhEw5n/qbBEeTW0Us0jURerr0EnE0KdWxFl+EgGql5WZpaFo82NZpBkdz + bdwqO+0Y53jKl+amCPAvU65xrOZNPsWG6aLUFkXedkpC5r0kXr9gq3rINtqqGzHCreoqqjH5biqT + DGHeNbqwJWLSM5mdkPFmtFdk30P1Z0bXvEUHmgWDC3YVBzcVzB81UyD2iT+IjMelyGp/8ct7csD+ + 9bAr2RZvsm6c8c/akERi80ZdxEWuDJyLD3Fs/tHxzHfMDYvutM+LuwzK3EWyVZOPqMGyfZRkliHc + 8Xx+sMhmDPTSG8CbNGijnYadpzIGorhXxgC/3TZjACTXMwb4VdwRL87f1WDfaQipZ5WMARoyrgWO + aegJIgGxh/Ih2UABcloKypUUsRWwqSzaOCgFrK/UczFCK8ZPGFoX8y91tPaCx1HpNi18jobmGoat + xoJLopgFfrMBtocxu1VOYdXo4akUVRugz7QdG47w/dWtkUoPYCKUI+0eIC6Qfzp/K42f+pgCrLsc + /bnbLZPV6PTtp8vJaTXcXqyn4mPKUL3qqlTFk1WCBpS6ni6yFU6Ksd4Cctn6PN9mwEb9gZ6M+R9v + MAT/wRs38Dydrxdk7cCM1jF0H5X4R+dTbQVYPoZKVXxI9XR5DhiJ4vzDte7rbfyKA3C0+ubwjI3p + 3+Bv3T/msHSFUNt13+lEtT77+pK/7vHbHhtBEVsEfpvm7aSzC+qgkSVBV/xHew8i3m5XEoSSqyVB + 4qrkFzl959UOGt+j1YqgCdczfErHPj8dfaLchzr1RwVr1TY7FirPbqvyk/nmgrhU/F5RsDjJuWah + 9zSd61pWNWb8NbjCfgvVjeBtWGfcrIXRVG4H4cZFxecr/1ZbUDZLS+41f0LkovD2JdccV/8BpWOr + OAxOpl8a0syeWnB8z3uKrfdmnoEGXWEhYTDT2w4yzw8C1w/BQ/SH/Y4OzF9drBR5zJEvLcISe8at + tuBhiaTf+b+aX9o5Wn1W6x55Jz9eeazHusfbrda9lFxZ93hVRg4+1aEbue1Wwez1Xk0I5Jh5bEyA + jMGVaQz8tZbZbLcovb8aD6mYZDuRXrdMllzXnCcrLORZpaBrKLf9qgEnsXxbo2c89v0WLzZxoygk + vldTHHvLLGEYAjKey+oi+0IKx4SyOKglkMrypgZbpk7C0kRnZcAxhpTZvEaxr8yStTzUgDn5LoXj + e6UVQp3ln0mdU8dpv+zyqr/eDf0q9Up340KnASl8wqQZPxlrBEpR2JqIGsaRF9e4K5sr9Np3R1Hb + 18HtEvrM5VbXP53T0gQ6eT2CMZrnGbBSjp4J+sgtoDRy4acXl/S50q9LDvWiNL80F7nOPDpNXrz4 + pVhNE0XGUoAslj87UlEWhC2nm3+T9ehZIqsHJkVBQQNexfPxqOhreUmo3kH/P70hDmwNmvjJo74j + P6/YUo+cMtYaOXx9pfoKAdWp0kO3P7qAsxWp2UKvjX2Zw1Hfg+z8O30EtKW+8q2hBEefNc2tQ/MW + JBTbsRuZ3Vj4rjjY5xswqH5ORWhJSCBfvHoU9gyb/DkBIxlyJ76/okFg70TD2610HCm5ouPgVelE + e1vnJSCha+o4LH71gvBtPggI13GoFwYS24bPjpsEPDiaXy2RSH8VQvt8nSiV5vfbDRdUB0Oo5hUZ + SkMUmXH5ctmJF8TMG4rU8CGybl3mxZFzNKyvRyqP8qmX7bb9IXn5YIqlXU/k6vCKqykbqZThEKr3 + emUMiydsE4ZRvJEvLC6pdOEFFUBdMAsD93q0md/IAnq1Y32kodP+GyFgQiHjN2YscKzZGuxR/g7m + fsAoLUIBz1fl5L+ee3ifsEfxEELNyGHr6W3kewT1S23ye4QJXPoKSpU6eGSZ6+N7gUyEsdFFPP0R + 6kKGYbyiQb6X5dv5dgcHNHA7tw5ED0y5wxvpPD9iiY1GQq8PNhrcbomNJiTXsNHgqjo/zmq+MS/0 + ohoyWuBHoReOAz8OXE1voNDgIax/2Y4mx8erFCxF3I1M0eNepA1lkPqeJluW96gN8D/2qMtY7TDZ + h3anm2syOkng+a2JdOX29mKhtYOhtZ2OSr5zXZhXYOHUX6g6Yq9Hmp1LBjSmIsBSPCQXsvBhCDuv + WXAR4n094m8nnVTIZNT2jR2YVhqKLXTdPxKKbRMIaWPFR0fBR50XkqDiUJ3Xdnv6QYGD4QLhHg56 + /1XU+XZyE/R0EROJSfzSjfrk6hQP2eoluhFDNVFXcVNccu2CSfQZU1+rKyPqOPx9+ZExp+fdoh2h + w3Ad/UnpMOqshlqNutp6oE70s0kxAlp/lcHVmyM1sP9qR0o78pD86cMVobF9BAFvt9KOpOSKdoRX + ZeTw6rJuXce0kqLivpqwgPEfx4wvONgrRbkURGYmgA1XdnXK83t2v5KRG/VNMVa3WdfDBbV7Tcs6 + aNWFuMpGgqiqC7V/JiOKZDTCh7Ytrb7cSC1TROdbvKkY2zHt8Ekrmc5JnyGspGIXCQpz/nqFm1wn + J89vNyr0JsJg3+DeLWg7ArmhFNVJhQ3Hm3JgPugEDxISPNqZ2FbSnM+rxTy/W8rhrKdKFD3p4dnF + vOdat/eLGIR7L/IDbQ6qqdFXBAKT16e8nTmL0E7L+ZR/fr43982fOZJuiLkUvS28+4fuwfINsiPw + xmEFdu+x3V/oQNiBx3I4qx1fE/AQQAIMetW74iO25a6yAaPaFa/h7n2XApreXTb9qt8odCXnmdPw + y493OTGqYUuNCCoPFh4BkNU1Qb0A53ejxN1Kcp2pfvY/5nEbOboetaeIPZpcFLXLEpg6x+hvh0jv + AAYciIr0cEpOtbqYYlEmfg9vk7jdlkUZJNdZlPlVmZFx8bdayi83LuveJhqHbhiNaRxFLOrGZs4W + XP6fG5v5Uiko6/Ysptd8hi0WSgmYzXMsYJuvpps0gQxGCcPMH4Xtgd+VQv7KVTLz6ZprTNO5c351 + SgoAfRb6BdKI5+uCmvhd1A9qRD9jXU4jmzCrafAizoUyiFVdMzLTkcubsrqXDw/vws1O3K4G9dNv + Z6eVLbzoC5TQhDLOMEBK7xGpuA9fQPYHB1YcVHc9VPvUCyfQKk0Qhf0ibvoZa6VGNmFqNXgRN+D1 + Yi6d9zmQQJaSGOvpbc71bxe/jt4yBXt6yZ91QIDkJnOxnkwmR0hCuHQEGPLbdJXA5mVt5jwCJvNQ + ifQkiKmh6ea7ZdbKsd5olD3eApR54IUGUq2e7zeEQ+VxDIXXK76nmKZ7RbWh8A2UCuIpBFYS96A5 + wtst66mE5Fo9FVyVCKyXH+r1VIEf1uqpIuJ67jiigedZJLmXz9rZfH0HuXWArJj9mE9hpMGpgte5 + cSS020yXwI9HfJgqUaNv8+RmvigKrs7Wdw0FV71hUNuYvgfS3pAz934xaXtVadyq26B6aD6bm3kw + JCRRa76n5wYuMHqrj6G8WeNRAkVKGMPjg0XW49HftnMCf//1X/9ia6xL4r/x+Y/C9aX7xD9oqb9j + mVwJWAQSRT2djYqecsNxPtulOqIm97SiRkpVbNPRs7dftmQNphT/ga6fv+bb/j2sPpHrrr0kRZ9F + H7HbDkxU7UULQs+RIyM21c5x3pY2/7bxtl75UANi+OlLGbQ1IfvS5u2UnCHBM4dK1PdipaEE7wh9 + Sfqo9voZWw1FNWFoKPKi1FCSDdXJabUMzoYydwkx5oZ+GPrkuWP52CVvx4HGQJuhUUww/BZjjNrG + K9PqsrWsLN/v2iEubajVB81N1dtpDtAODpMmFYSbzHF54pQHS7wLPbHjF1Mv3VNgn1q8GMNLN8mG + T6mNeH1rp9PPtFp8Il3HwlDbztfdfYbPEgUu2TeKB1d+a70pQv9W50Kx5EmTe4jvylAdJd7p5KxH + sA4fsAzXSem1gB1ex/3j3cdf/Tr6bERoLWYHmdZeMAYWHggu19Fn4TAADpL1WqAUCSOQT8LkfnIj + PCol3gJ1DuBZzB/k58nkO5xduog5T5MN31dhhaLj6m7D+z2dzP7UriudQwsxPzEDJZBt4AsAyCPD + M/A4wUck0DoUZPXEb1aTGOPNf7sibh8VXtxup8Kj5KoKL67i5L0+v6rFm2kMakpFhQ88lyvx48Dj + U8jFubtJxWzMREKewQMEVGgKL/l6vmkoSGsgE2qGbAvb9O8ooJQPYgPvaBtQWzv4gMe/RRjUysh0 + J5sFRrQlRA1EAREJqmgGBzAodeEcVFL4CjA7FocxqVaG1YLFTb0xcwS9NsuBBpHnEa+wHEy2Pr1H + VRPl4G0FRkL9jcWE+XDxEREPLq4gtj7d7OZb0V3QifCZotfSWsnLCqbMO/x1M5X6v/gnn4HeGuq0 + Ntnu9g6NhSXvjZiZkoPwtfjGIjOxXHuum3NgoWgTInJjRw6RiNvYjK29Z+oPkLU4KCtYgx41qPy2 + 2jOJVtC1F+3Vn2AXMIUckvDoMV9q8DJkOMnX6RQgybqxFBqSG33ET317xXUM+xwmvN3qTJGSK2cK + XsUz5fP1KakdKqjylEuEwlcTvn4YCcbMCwNXBt3eyHcteYg+/3olz5LP+ZQ0HCZDaS99iGeM7T5g + JGRVfmqu4nIhGdJtGo4bYx8nJsBnaR+PI+AvY0YqNh+LUzp69jnb0PXkY76N1pOTbxmBP+gEh2fy + Zr4NyPo5VMIqxWSiU7Nnem5vuQZeKnut1vXziQoJNFwH1biSa+B5EaQvt5vsO99ZYYstKkA1Fs5r + 40AwxkHBW+fL1+USsKskf//23Se5GTtiBmk9LopFtSzxkZSzgiMHzcvu9FlyA1KQim8oVm/jF992 + xQ+6pErPQOV02RjxDj4CDYAM+KF6OKUfprGO4WckRk8DLO7ClWDFjuMT12/Aw0MWvfefL8GsrFCt + HuITGayoKsA0Cm0kfCmGwspbhzXbiqOnr0cBAx+apekwq8e+BPAhM+NIjImPuAn2rtf2+ekId9/u + ktX9YlLKj0l/AOTnbVqDYu45SB76OX5ePpuvYUgDL+ibNIGP2OZMyAaMlAm8hlrA9PsXovBH8Uul + Uh8/nU39tfKikijy/Nh97jTcpIfiVMiqPQFXRWiYUA9DwyyuAw23oz537jIDAQAfgd/7E7B3h3Lx + +wj2ePKRL3p7LRRvt9JCpeSKFopXpRb67pRVlFC+fxAzOMnYqwnxQj+OxsQnJJSejSakj9E22XHF + 6935+fnpc+3UJ5AshrrplymrqaaNglBGS6EhbfVSCCQmhfjSUWlYLZLqgpdnoRtbtddSaViKB5SK + DlurDqN2WEnZmPMRqmPyLbqUfhQlg21liNW3LfcIX1wTPslv95prGRtd1/g52b2RaqfQr/HbCN0Y + PQJggEm/xZvsx5vi1QBdHPsFnRIIn5jZKZS6HPTbbJ1uinJIPkOCNWjEJZvOgWlaeCxd8geqW4y8 + eierE2IPaVU3niCshnoTzavIKmZ0dHTmZ1STDcRNxVe6Ood6bRdW0RiEXLy4In5gv93j7VbbvZRc + 2e7xqtzuL+uFU/zorbAB+68mfujSOB77IXGJLJw6Q9YAI/YFG4DaZMHHKDaATbpO5sLdDanaEHTZ + 4QYxS5bJbfpaP8EtkXt+92y3moG5JZb/yXolvZL8J7pWx8Z6/ZAeDf6lS3pu5SWbjgQv8Nwq8crY + YNkNuUoTVGHCJOsIjI5JOFKhXOHCyiBmSphj9Qkahx+HXiSeZDs+RyeAYbiCCgQuc1y84zwfaaca + 5Kxs0mX2DQBRvvCGdUgSHCHbEYoY3WzS5Kukzihl7UuC28WETu6SRSay22Yp/Mi7VOUth3mpcb/C + AFluKaplpUGz2kVsnuves2O0BsvJBsX05a89X+4W/cq9D00SHBBaiU9Yoa/azXWbkT5aZlfinh9I + his3dvswXMHtlgxXQnKN4Qquyqjfx9/CmoOWxn6N4Cqgvhu4Y/5XHNPuqojZhsuf1rayxjCpgXXh + UnOLKAEsUp96HqtRKD2lKDP1YqS5eAoekkGD06FyJTDGrXrSy5WAj9i6EmQDhisBr+F0/TK7I8VJ + fZcCtxV/tPyP0bnz5eYOiUf4nJHEI6TBYYybJ5+hXI/q7eqF5HOx3xlnDR4UaksGL0MJr/Xwto7f + 7hmyqR/3yo+RKT/swVS4+AfJv2eEoieoTKvGVYivnV6hliQ4cyhVFvkAdLcDpfivstXkEQypxyvO + GbQk0qWotPBZCWm7u+URgJnH23Sei1rKyefL0po0tsVDAUgZHmbHyhkIFPTQOlR9LA7FfxoSxCdF + yErD1Ch9gYO+R2MWBLdYcbqtbvkJzp8/eLoxN8AttvIpxvzwms9uG+Xt3XyUqoClKO+u3D7I63i7 + lUYrJVc0WryKKsL/nF4FhkZLPEaiaqEvi15NKOW/8cb8rxAqVUCrwO14lS0msKOI04JvyaPsx3yW + gRE/3ZbQy0bB6BkJR1/PkudS9f2f6Sao48kZnp5KTUkbgAohMfGoykQrSYNzcb7BfHI+tiVYCHDg + yCyxt7uvfNiS55XWfLetNTcKGdfzqup103BMpqNiJJqZSklFjy9VmtCIz5EqNWeSbrIbUemO71Yd + p9g1yUr3CjRhltRiQPcWcHKOizcTeV7lb204LQhtpRCSDeuUjED5kQvRLYMmP5hRElO4d6QU8xXm + q1UZq7X+RjgXXo/u5rd3i3tRZ4cqGKzwCjzNMoHVq9MmSi9PHFg9OrktppjcRmgDeFW/Ue2pBD5E + i+1Q6KTwsYux7NdZmJ3wSNMstu0EpTGCrLR92T6OmJ8NddaE2laZwL1FBnWR9Z2wr1SMreyTWt5f + bUbxUMvdkVtnYRbYbLz93nkA+dUZrE7+WOGRR6H9yY+32+KRg+Q6Hjm/iif/m/Nfa0WoJKRBFY98 + QrgGRGk45n9HcRx0e7NuN7yFujfrcMe8PnN9P6YhrZ65dc10LK/d/xt0s18nt4v7aZbfL/DQ2EFo + 0uAp8f1WnhJuBvMhqeYnDoJT7pMYXS1Yk79MFtwkS3Wa36H+AD+WHGvJ5iaDcQB2qWOFRsTXhdeH + yDl2m92L0lhLLo7Q8Ck4Tw4152TqZLJY3yV8Ju34TJrPfrJdN5xVFoSY9tO0iCTSBL9ZL6CbDBZP + rya4yYCYctL7c1DFfuBqSJvghPXEnS0esga1UY2YqDbyKm5/KlFKY2lMk3WRMNGAY9N4oy6MrULZ + qB4A3ixXEA6A77CGeLfPJ7WTOwyWYT8/lUcJAsbKsdmX/m9rnwdYZ/bXj8TtgWuKt9sxIqLkKiOi + uIqn9G+fL0HfrhSaMb9OiUjBCA7HcIZTeUh/Em47yKyR+824bjlh9q+eidfXvz1X2zvstSrZHMYR + bv+NjfJVBskQIsw8z42U9ZJfl4vns3pCouvRBm5H/eC37Zq4Ne0A+7DSvW0H1K34A9oLybiuwty4 + hqiKXW+oU2BuV51CWVoBNGG8LHWvxQuLlzULzuKqOT5uEu4M8LUG+liOmHVaVwk8ZN3yMPEfcgjk + txJnK2xw3yDawGWef74mouosXSdC9+A9xCERC89/qaYDRH8+Gr/jy2QKYF9iTxCXi/wa8abi3nEh + Y6wFPLc3X11PQksbVv31T+kJwtm0DicfRoguoQoH3U1H/l8m/PZ6jwfsFGbddn1j3om3n68xK+4x + BmqYrL4A42TH5CT3wyEZTtIeRBMl0489mXuRzwUGYUcKY3OSYQdNwkHoWPuCWa5+OmsMUh7hdHkg + f81gmO9FdAEDRjEeH3Y2jnqYumgZiVNhok6F0nlgJYVxC1i8EgZc+OfPiqpMKwmepJ3YTvjBYV8D + elTZhziwxcubZ7qVJaX0O6z5vPzIB9IeRwBvt9LvpOSKfodXUb/7cHVF/ap+57tV/S569YIEHg39 + MQn80JcgGNcyb5qfFL+f/o2IQ5X/QMej7fdMc2vmMDu/zle4xCVVaP569AWcIXy2zJdc513cjwpO + eMSIukkNdUGE6jCtQCVVCJXuw2ZD/ZpKp/YEE5SAteaxe24c+HUkAaPzzTyzQeS2+W+ahaoF2y3V + dES1Se2dx1nCzncJjWjYRBtbVIn+UqkkNANHPrEZThNHoZ7OYXLQ+q11DY0yl+k8qxHZEtpO890o + RKKrmj0JWis6GoUUiLESZ9VwxlFzljRI06AMcl6Y2Ax4kvL9hYtPN/zX6Tc+zwVq72InNp5v/PAW + yXVw0n75Mp9+FVHiYmIg4kzzR9AwClxrP/18ppi61qIs5LVKi6qwHRiLg8zSxTYZPeP7gPjpuSO2 + FqXEB4Rap9B2a1IWAlo1Ob5Yy96vZDlfZYhyKblgN63wnN2dOkJwe6ALT6e3V7C/vs8Wt3P8xot0 + oqtkO6JgrXIfKGVrD1BxO7ZeWNZEwQ1i2JhdimmLTJ9IfSDZbpOpBvdQ7BoliF6BG8IncCoUso1m + bla7SkMIqTE9LJReb722xgYaCV9l9kriHxFz+QCaUf1wzEyag5vdbD8EWulpv/b0Kp1+tVY9kWo1 + W2V8r7OlHBk0NQ2O+vLeUVULekszsoVqfNN7xTcN8/FSH7jTbZvdU8ljk0DsRw0TAKAWjogvaDMf + VsoQMFnKQFhob3jg7ZalDEJyrZQBrqLhcfW+XvfFLTm3WsrwIuRaqs/G3FqnCoX4aj4l68nV7Zqs + RT7OqgoEgKrOmk8jPiPAta73pKq1zE9B8CKJsxTLg8RJ+1IaF6KNqm2BZ3GyFi7Gqo0Rxq02Bgmi + 2GM1p3APWAOjJTcyHcZAjVXy67px7Hp+FcvMBMRQo1GoEYbxUOXibmmhjHOTyNEpkp8q7/Ks9PGe + o18Yw6T/5lOvaQz4/P99vQ3WDswYXb3he97PJ1gATD2ZYM5vud0ks7Sc7QROTKFoa/3NXis6VnDH + fnY0LYRL0I9V+dL99lS+TgoZxVqydKRZPtzpwKGuZwkr0oeHjG9hqBiUN6mfAnnSOHIPBaWiDhZP + erSI3yOjGG+39GgJyTWPFlyVB8vJmV8FkKA+cb2qR2tCA8g3GtPAIzEx8e3xoB6bmZiwXia4ySQb + ODjQNG8yo17j+Akb7eYe1y4UZWRVc/A7X/nFx1fg7Xd8K9iUb+VirpJZrIqPgYunDlph4/MqA3Fy + 7TckNRx8fSYo7euX7f2G740NapjhsQoJtWnoCI9Vsxycwzfic+HPuUCwL81tzeaoOC0KNLNKAnEl + w7uE6RZ6XhSSqpfm6c0QLneRZ/oBCWFxcnWN7lnkekpGG4Ckmhu4D7rGThdLOWItaReOKwD4xSgV + ls9hA38QshqfG2GpLq6o6Sq9hL0b5En6kR7IN3OkkhSJ3bN430XGj6xWwL22UYupKwzdWZr9uC/i + VzBpIJKrK/ktEfieAF/OYD4AFqCvrzqxs838tstqbbHVn5Q/oVt8SGiX+Pazx24sQsLK4u2l/SGq + 456aV8GXELbE65GuhrdbQtgKyTUIW7iKyt/l25NaUjk3U8Magq0XBNRlY5jegUSTuUwTKvwJcntL + FQz1Gq4LKGsJHNWIpzrPTV0ghRjMvIStLgrO5+JZcFPCB389mm9rD4LLIltynW7CZ8Vuyq/md8ss + g98t5ZcTSqDob1UHlDifyboTgjyMWlQ14gY+5dpyrZANX1kYnSbuGWNt7g4A4mO0BgJhINWW6Fb2 + gPiailnZC1FuRmuFV3dZsak0QIkaoT5agWTfKx1H+ct8kUi41RIArRlEbE/qa5ZchySHQ1tDtcqP + aiyt59VIYxX+fby/WWNWVoOprVFeNVmc02y+SGeTKf+rPFPUBzCnt148yww0WBndGeObftmBMwL9 + d4vs+wgimSt489OEvoC9aLH78VoshbzckkEj9WY1B8qrN7tZICmvxBJ+rRd23rmaHdhENLRb7BNH + fknYDbu+/C82UGahrOlRO4ERuYA+8TMQ9tg+AvGEztPdLON2wV3SDqzcykREpdNiz7Kx6RHju0IT + JnF1LtvJkkmfasQBmaPnyzEiEe/MfDTT8pF7NH/3f8nBP6CVJuC+dLNU4B1HNSMdbwrdSE18y0EM + o2LywuHQ+ZgEEy1S4C12606BSj8IMerwkfaKOojb7aIOKLkadRBXUT84Ofu9Di4aB14t6sD43haO + GRGVAJ3wSQsu/c9NKl1gJrE4cJyhsGYDRB/4eEXDHizjeLvVdJCSK9MBr0o8rYuzmrrImGviaXne + qxdB7LHIHfO/IsUs/RsZ5aurT5dlqm2IH10vR9NFAhYr0ugsZ3UtrVRwYFtuwHvF2hxsxGVhyL9N + 3ZWXTgwo5c6AUkQrjAZlraHcQC3laQ9cszG/WLy3Ea5ObMQ4quHgP57RAv4Vc0TvgNxOsr2owifU + 15c3cPzzgZd/MfFXiv/6oWgw+Y9URaC4Cl7Gli06zyfub2Q8+o3y/3v43G8+fvfcSIu62y0T2VEH + ZpWGDqQIHXgEwvVeS/LPAXgt/AC4on7zbT03kV96itgFaAZOoeb2IxrQv3m//BaMfkDv+aY0wU7Z + E9LI8rrOXOIH90owIp10XbvGGHVCrt7x1fdF+aqWKQSQ5pZkpg/TUNdpE2tYPPKOuC8J6VfFqZ+y + BsfTzZj4eOqyRtuXSQ3lfE9jd9iHsO81Aex7AlGP0ehB8PUD9eUO3m2G2bOO92wfu+kNQTPy+Al/ + fekFej3YPlo/nWYjdBWDMWHvw5eu12cPKB6y5TDWjRgkxuoqbgDLZCpjzzqRIlmJZNSZflW5vil1 + g8Cnz532Oy9AWu12fhG5iwNZyh0j5IlYNrJUEkZaZr+CzQdJsX1ybrm55BYxsUwVhj3qYo5pIHFD + i+jZ+kM/IT5xY7fBjN8Htd6nhWPTbw6nOX4CMLX6/PexJ9WkYeUmsk0B7sudrHYCLK1/c0VYD+MT + b7cyPqXkivGJV3Hln/7tupoBSeIAMFvLvghufPquFxF3DFVZgTQ+8yLjTpRszKY0qkb80P48/Zo3 + 4NTrTO9KQXsbaSvx+FHnxn4tLtAz58SU010TlbRZqgwgr1tN4ZgA5kfFUm3gnsMdxvR9hLXcTeeU + 39YInSu72kAYD1ZiMkvW/OLr0TKbSaK+8s7IO3ExWd8JuHwgTtnmmua0TosKX1g8nMCB+1rnbhib + UuGeE/5zycIqnY34aLIoaFkg2VU0LPItdOFt7sCs1M5vxuIevCatzuUjN/bjd0zmygKH7m95x635 + dPXv+2UHsO9wNRv7qy4GZXjSe7jPIpvBOJY9niEwfXMiwh65TdD+jGC9doHB3IdeNaSo+Z2ehmH4 + kvg99D71iJ3Wpxso6XzqGu7ds7nAO+K61gxSEUSqCwxMGYVHUBO13Xi2y70KZo9ulfKvG4OXFpat + hyiFQhjfhwoTujZi1nDVkYshiO1xvqYjEb3UxuATIhYeIL7iLzbpAWSRP5EfaCCkMBJ4MVEjUcK+ + PRgu2S9mTts0bJdtO5uObadzbnDjR8h+d3J2GOxXqDkZQ+r35WTER2x9RbIBw1GE16SRuN5IIzFf + p+ns3tEmTrFLy8zDchqPNAS5WhPHFAxBLgZ5F0PpF3JRd35Pf7nA032uI5V8RgvklY5DuxXFheDQ + b79nkyL+1RRPzu/zbbrkm5lMm0wXyX0DNMu+pMm4avbJDeEb5ExurNIHtbJCvQaXToFMNk3yKZRj + lAXWfGRQWGhWNZY719al9McafgGvtk62/OC2c6w3Yxb2RtqXEBrmJ0tXeedBbX1uQPK08ByZkyA9 + nLN1CHeQZ6xwv59HWD7Ta43704ZF7pdB/TCNdH2/ycqMRTVIv/23ldvENY98N0GI7tsi39biFLbX + D47H6nwCToqhQTyJXsD43WZzOzoq64N0MFKu0KOl5H7IzZ4YudmD9VwtQV95ZH/79DfvpRv288iq + h2w9sroRwyOrrsqQzDaRIZnLiTgZTpCaXLlVQzcMSfjcMX475vNkMQViEV2nB7vRKciqPsibvPz9 + t7+FBMiTwC/LIoLHsUBO/KWMUGBStncz3bcexzHmYx3m1w39UpqyTWJ+92EdYcK3NEQORXHnYtDp + Jwe9XVZD/CoKzbO5LOQuW/Jpzyd3ZYzqYkISCEuokuVm4uU0Jb3ZjftgJpKs+BOjo7fBvuOOZlKE + L7yaocNCIFtsAXTG0v3cV8Qe1IoobpfVvuHbMzMd2MBT54lDBf0J8ioNdeD6DOOMcl1PjB1ZbuYD + qLTHF3D4AYKBVvoEuKu79SJFSAJj3S6zb6nKpgUH8dgsOPuWdmVHPA7VUhDhDO8G9RbFcskKbuKz + D7K/EQRAQMe2vnK+u+G77QoUgr6dwrfb+/W7M32iUO/JiwNmutJ5JJHoR+JFPYhExe2WebBCci0P + Fq6ijvPp10vwnFUKZVwonK4wiZKIn0T+mMTcpgxbYZ0xIT8x8/A/ZVNvjQl2ErAqL+Pe6uJQLoib + vhnm33nudRkLSsYrZFUr2McwFSSts4kUZeAQVzl7zBKEfTDRn7I18ZrrqwVSaCVq1k7UFEQe9cKj + o2Ztcv4LXN0CXP1nmY+OWKhF/rUb/hcJ+79I2D8PCXsAFGt7Ke2QgU8ZBntIQMM/IMr100KodoNY + LG2x9U/wWO+HxqMkHYd1PVT0fgjU6TBULjfvLHxJaD+Pm3zG1uGmmjD8bfKiJAlPtzIwXjKknMaE + u3f8VgfuB68ZY5LA/Rh8/kcGjSgtrz8okfLhRq+afVj19esV8Tx74wdvtzJ+pOSK8YNXcca9/fi+ + Bj3ohcSknPXCV5PApSEJx4HruzE1AaIM/Y1vTCJSvQasNhnBA7VKUyWVvIpaN+W3LCDGl0iuhBJF + Oc72U71RzZegjcLJAK1VQUKgJX6iwB6EbiFu2L6WRwlvZ5OKMB5SMph4MmjsvF3c1jMEq43U+mSa + LkErCgCN+f9o3XR5cimIQxVaVkfOBLcKWmHAjYEqSuwEQHeNTAMb4YNwo4qLS814fkyMZj6VQSjD + MA6jyL4Z6T2TmQFmLR/z/9kM1dXSTCN3mCEypK0ziQUhcvj+YdZguaRH1gpC/brx4Qos7wKJyoEd + Shl9fhC6Nvxr+5ECILcB7pxluxtNgj662aTJVwWBBZVAbT3tYSfQoBGny6qXx2aLEkiTFmdd85w2 + 5vMYKn+KT2BtgvgypGa9POFe/rG7i+7dEMtryjjiBaVcG4r406suQnTOEtPA4NrRwDYLYZg9B0fh + 6Ord6WQx/9qRA9yK2jlETkosoZlZRE4nJz3AmfEBS3hmKb0G0IzXUU/6/erE1JM8EtA4iP26k5iy + iLnuGP6OIL24ETEB9vTt/Mscw6lym7l/ObpO09G7t2+uRx9TyHriJzl/JfefXhS+YmTCgpcaa2HD + uzedJP8ZaAth4LvO06AIJxUZ/INmu20nRXhzbw6R9NTjqXLhRrq2kJ56L92ol1WNj9ga1bIBw6bG + a7jyppBpuAHF4z5Ncp3Z7xTX+ey+5W+rflESCvkogRdJmI8HOT3sI6xP2PVlRUTLVdbC7FYYqAeZ + zRFRqYqR6/ZOVZTP2KYqqiaMVEV5EY+G7e5GJiSLNCWoURUc1SP63FFX5AWH/01FNXrMgiPTnBqy + cFwSVmRN4D1mB+YncXlRszwdh+4p8EHThLyIkeqWCoW8EAuY3+x6qe0+ob4BayupGVvzzQb2qPXx + aRUPobO9PJWsrIyWB3vEDhhlBjJqP+/2sPCxMRp274/JbuDfH0EiSruZVIcOF0mxAqkkEs6g7Xy7 + U5Bw5XXfvdR9n/ryLRvHqf8TFhkfcWTg0yL00GxeWhbtQ9Oh5UfI/HhxRTxq7wXF2600fCm5ot/j + VYmTf/mRsDc19KswNguQPf/VxPe5luWPuXlD3cD0g9YYohdQVTp6FrjXz+tx8zE3mJMNcD0KU2CK + CtfVekHYCVfq+ejzfRIi6qAXgp/l2zy5mS+EM+UuycsqAn+Of+sRf4dSM+ozSZR8kHvTWPyci4xK + 7Gutlwpl8+3uKx/UxMTX9COPtnioYt+PwTCo5k60Tn4dyyo3wELTq9bWQDmdQlqbMju3SmUYeKTW + ZedJf0AHJ6cG0Qp915EvIrf3VX4gUV+jhD1YiEOgvBwd8cHwY3v4s+txrnDhTrh/7tucnoPFeB05 + 37vPiMPeuafgveiVEZOBK0p7ZO3h7ZaBKyG5FriCq7hln1//VoMrREDCSuAqDIIoiMdhEPL/dONX + Zhsuf1rbJE19shKiiX9SaGUIr4of+t5/vSp/HK+K9//mCjWWxr1QY/nttqixILmOGsuvSpjQ6zd1 + pJY4pDXUWA/In8YAwiZX3bUo9ZxcC7be+9H17uZLsgSy6zdmdKh0Ho2Bt+4uWeeg0N7u5kJrhYN5 + leRAKjrir4/0PAIuBH5T7GMIOZrf1AO6YMzVdA1+qrSx1UWMBUHI6imn2QKiR/zTJXUkdb78W4FZ + SOgFgcuqe0M1I7skTmRtt4iLo4BvNLWdho8NH71s1UJSxELf6n0PFlji6TZ6eJyyVumic6qUCL5k + 5PgpGNNET4YJ3ySyKca19AZcvM94pF5Sosz8daLt/mSzXfHN4/92GcyjBi72L9liJrNVV+n3xf1k + CSXRMMXW6VoYsmKSApE7X/ZclNQtP1xfhu4Il8BrbRbJDpQLC5U2cpXekrXYVn76O0P/a++tviGg + x/d9/RJ6LGwwDu4y/FX5D7RI+RW1LPwinl7EZw+qCVsGeG0e7oSs9YhfEQDHRAksvU9fJFViLcrb + 1jO7TE4u2W+DgtNd/sK/9qJXYV8QK6kWiADdDiiEtedbifTUWRZo2r2+T1ws1vsLn8+r7Fv2F36/ + +fJq8ahl0amuSEsKVfLqIWKrdh1nQx0YV448dPSpE3Tvaw6Ybfc0iIZsq6ca8flcdKHtVjBN0tn+ + l2mAb4p8HRUPe5RMidutI+JhvWRKXEUl8OK366jOWOw3RsO9iHh0zP+OI3cff8CGN1G3vwaLaPOT + b5m2alh+4AVt+VZuQCIowXkAHoEwFqDoQUSKzN0DqsCjwBM71DTZ3GRQSggFGgcKG65Q+ilYT8L3 + Xjpi4Q2OwFphiGCR726TzStR2HmbAnjP8ii5lEaxlHsDyWjbdJKv0ynAlLV9hf5tqQ0kkGQTLnP7 + kE3A7ZZkE0JyjWwCrhYOd/+k5nB3/ahGN0FdRmMyhpqDiHbvH4sNb+E/hH/E4wtrOP6RCOlo/vaR + 9DlT8HarKSElV6YEXpV0df+o09XRIKhEYNirSRTztTKOie+R7unwdUEe9Dh5StOBQGbsga487V+K + 5CRwWQ/vEt5uOQmE5NokgKtyEny+qOkVVMCkmJPgBQtgcoxZwKJA8VUL9V2U/cut0gyBXW6XDei/ + f6LJoMJY3DBTj6i+AIzCegfEEak09wGHV5LGf+NGO1fOcwgJbLmtrpxs3ybXn06u3o4+L27p2oFP + o2ebT6kjWbjEbENBhx3yfMoiVjmUdx6UIos5ttiHZC1qfPtmSD0BRUUFlEiMCL8YXNSDcqjTGHNo + P37kJ4b9zo632x32KLl62IuruKj/fnlNaiz0NI5qZ/3E9yhxx1AUK1GnSvn3fECRWOj01w9ELum/ + r3NS535Pf/DurnLQnEofoazqx1HcxvoZM+L5tEYfNdTyFstOf1Pev2/JdAcY1oVybVSvAD2lycI+ + LpWWxDTgVgtt9qtOcEFs0i3EoKtlMVyRbalXUSPQtZ+8ltkf2WJ+K1Pys43w4pWuyPjna7C75sDk + miz4hC65JcVGpD5QwSFV+9pmfABGSWN74/AVcAejXGLbCIL35oFwxIRUexmLAzaEARa6uBXWegRo + LntQq9qBr/qQjXfj6/CNpSzqwNdkroeOoySfZvB8WubitS4ZEegqRWeKOcr/sXcfb5XK0LljscZq + MqEMHRyF1SqGYwKj+0615qeGOMxgfxNtN+6E+12TA1gUsYtZXR/5LO6R1SVut8vqQsnVrC5xVda2 + Xr0PaiZmwPxaThf1ScTiMfVpDIQncPCcpYtt8ox6zydAuJUtRqcT3pu7+0UJUxiUqtW3dLPNR/++ + X2byRj7SX9Kp+pcMlqSbW3XF9Esn27vvEF+5H6H4BGkKVInh6QSmNJambm6D+lHXiMdmpihEtSrC + qpTFfM3vh7DPvMoD4UeEtEUxIQITs1rcUb4n9SYNY9YSOoxY1NhJfaY1DWAtXBjENQee84Q+5OsS + mzoXfpOBGm4MfS6Ora7kBQcmtfYBeIHAwAlklZnomMiqPxqbciDIRZdbZ+JUxfc8vmMkIJgw3/gR + +sLrHre/D5a0EmHeemUZ7t2mWcSi0lDsW3BWfTlW5sOHcCKC5+pQvSJB6BWK32Gi1JlHpGOVBH4P + W0vcbulYFZJrjlW4Kh0ov137tTOPxF7N1PJiz4uDsRf7okAZHSi5v5anzcEZcKW6dzf0A9LAbyTI + 2YHa4F5oanVyg3IDXhVSDpDPrq+bGylMIN2Gpk+oHRfgxLDqesGcVCMPMVwypJL/0iDPuax3TCIm + C8hHPk+yFTeSMMFC6dUAhGY89+wynz+f0IjEcC6ZOxAliGrVmYHswDzRxwjxfYl7X4BRdXOktBks + MKZihbeMf7/9ore0hwHr6nFQ7Iu528hoAr46nhHXkxWA+1ef9ajGqiCkcU4fjpmKtuEcjKZjNmOq + We16GCB4uzWrXd0AwasyTP72tInVzquy2k18wkISjfnxSBW4TjnHa93l2F1nW1zhfNsoA+BiFZBg + w1Ob+u83G965hojIcfgzT8oJriMiLvOoioj0IhdT80dT3jAW9KthVo9Y0yNjAyY3sriGc8Fw++Rr + vv4XIsMw5TbE7N5guqj/Vk2e6/WUevz38CdUoFKGvDdHU42Gro8CCoyLPL3dCDQQi5rVIFR74gE0 + qdIYWKbz/k8fRaWnZXjIFZNst8n0TmMzy69QqqgULk1gHBB7/yZVBLOq6+f79X1XFDD8AsYqn+9Q + h1sa8rLofoPIxUamWIX8aiv+AXBTDiiAZYQiiuqn2TRyy9U3+4t4uFkphvbTxbU9Tf0Q5oxHI9dw + hYIP/Piayliz+fTlEZFP2G5dNQYReQkPwM16K48zEl+XeDubmEKRGSQC9DlGnjv7H7jiwp3lNlcF + 9bEsqA8jtaF0cHbVaapcWZzew23fnZJKgsLhLilHNV9jA9Xk4WECn4S4DbYyu/bQc//kAJDWD3V7 + tXx0GTRPUOXBGY9uZP5+65bSEHbQ8+fp1NQ/SuptY8n6scm6wxE5WGb99qB7JCUmrCq51BFmjyaR + Imf9OaTkM7bgO6oJA31HXpQEr3zLy3a5o/4uPwXwOn4Ug8quOo+ZiZcfCenhQMPbrWw2Kblis+FV + PLLevL2o5SpwLa+SgRS9mjDGLaB4zJjvRRK09/12zVuZSFZfzTc9Lx3i2+x7splhKEG7Zm52s0k+ + 58Y436LS5Q035CR6BbfeoGVhvL1Jl/VUB7MMu1J+1lqbH8UEwjoV4+3qLjNQM1o5xyGPvY3moUV2 + B9Wh4eyLQjPaVFAcGIK1oZisxXbDB3B0u8m+b+8McXyNRS3iCERNIlaVV0GmqULRSDAEY16akAgu + NcNte99gvvqW5JC1Jvu/vwniuW1NtLzVPM/4dsGHqmOg4n4i0edzd883q0WzxEriyl6JiAwvJ6BG + oWwiSjXaoUFbO2q8nfrELi/NZ/zX708unxs5JpAJB/EPWazWisj0ukRZX17RXOakvIbXiu5CCs4r + M02E/TpAkMa8U9PFThyBtd3CgT1LuT0ClwWOnCV4cpjzS2RbFNVWt4vdNOM/LvgBtW1x9nad6rDE + 4AneKdE50ev6quwrM67JbJzDPcWiOtE0dXsKKghtQS1bcnOkzVG+Dw8LS8AaJnlPSRQd3PaLyMos + BgRZuHPPttgpazDUkDYZFgBXB1oYousuUsS2n4w9X4MgDFT3aWtnwxwmqt3msFf0O1PEIDNbSJHK + LIQa5ivIhOA7KpsUBKpWVW9KKv8QpJCaocD+No3SNMP/94fQNd99dGmPxFi83UrXlJIruiZelcHa + k9/MYC3xGNSZxWaAgCubwFnuj+PYj5mM1SZIyUTZRNZV55Bkmewg13I1Wu4W2zl8aFlhPeKHYwYF + h3DIAGTRCszSKp5yjqx037RzMllMszvhk/gCpXOrrcy6lMYuWm3JKkk32Y1wY441CjRvxLgr+3HP + +wOPCmJvvHiXaqCGy2Tn/7mz8/80X8yBeatLAaLQEzlIx5Zyo/MujuUeX8+i52Onf+5ZLH1MqfUT + qAzQ5jEW6Jx85Mey/ZaFt1ttWVJyZcvCqzKkeXYBKkElpsncypbFXk0I80gUjQnzg0DW/V50pUqp + M6eshpuZDctswzd+wMkW+vJ8dcdXwhYx/8UecjFbErcLvqneqhnw9EiHyRxGDxbvNLsoyRNaeSH4 + MrHpZpN0kWFdDFtFrNXbt4g1cGoFl0LB7WUYbHw49jTjXEsPP1/xIkkSbCvxbSfwJ51cLJdE+0MF + scVdWhnDchmA9qosk+ndfJXyKf/s+uRCSXj+ugSFAkqPahJ57hZCxuds6bnroiZX5nvmIq0G+TDM + tnjfK1Pthq+2yU3C17pGi8gdsZ50yJofZY78FCqG0fzhrNRemCgVMc2zy0pa4AVGAYEef/XGtuEK + MQXqr1cFOt7bI893S1542DnwM/D3ynpmZTal3HADuiG/c8+8OoRO7b8Qao9XW0cjtLjFbvKL2E1+ + MXYTqw+nz2Osrfv0kQQ9qqbxdqvzWEqunMd4VcKx/e3XOn8XCSru6uDVBJJASTBmlB/I8jh+k0Bl + yCLdTSFv69/zNddER89u/u/88rlJIAfZg8gBJP1hJ5/f/XJ69faN1FXHxqEt9k9MfOd6qWCSVcww + ValmwFIcF6MqzlSWL0UgFwRlP+YzlCRVS6Vt5gru7WvWUOMrY3xmXQNtRW4kvrCtjybXMuSU/OyQ + g4ggRWCyn59X2PrkULdgrLnVnFXgATYyYj0AYgvsSK0qLcOEv+Qjxfu0htQPWPNmimt7yqxs1rGe + VfvmVCNv8efdmqzFXLjOV8Fa11FIxwfON2mxmM29LgG+lumNm/ROuznnwOLTWJqEEEcOkYjrWQ94 + fT7osbc+Uo/hfSzJ8NGCa+3wGNicSrkLPdxoPyGvoC8xJAswv+rs4CRbvjwbPkN1QfeWKSZU323D + eu4MksbErTw0sWX8u9CUDx5NAJw3MnIs06I63H6xi1WJp1duTOwhLvB2qxNbSq6c2HgVT+y/nX+K + TKATIqpuwKwum9D+qxc09DzXHdMw8ANaAbkA59Eq/WV7t0n5q5bs56/zlXD+Z/lWpR3ALgmJQHxE + ilyQhhQk+WiukVmVbVW54bR0C567f5uvIvqAwF1m+82x48CUUj4S/cglCm61Bj/K32OVIR1NOX+6 + Gmnk9k/US37ZEwbV73xPr8IQUGYULJ6/L4KkhPHz1AWGR8svPn6sT+6IGaxt1iDCGkQvMAhTOka1 + n/YPg1R1LBbDaRPdcAZNhoJ5Vn7R6pzsLc3I8qp95OPEPxXQRJlpfdTLDFGop44WGuGhWlA3HFHr + HruakIqGL12/V7ateMI22xbFG9m24hKeDaXcs/VdsirlXKknIVHWI0ho9gSsckeNH9XAU2E/4KnQ + HngqbASeChUg3fvPTcBTXgPwFFciojH/S9SUdeOPcfn/IXB0xKfuU5tVuoAneENeunG/LHj5jO3K + VE0Ya1NexBm2usklUNm7DyejWQYO2NEzeTYqrGy5+zx3LjYpKbxSKuX9E5fhgCCHsYAwV3LIuYXd + ItnMp3fp9Os6mzfZaE2W1j5CZSsJwxIqd6QpBBS5gQuW6L6mroWAdsxqPLHL+khp5PPtfLlrJFjs + Bv3yQ5muxQducm37LVs6yRihDUDgd/N8C0rTXoWsIy2dEibL7+fCRSI62vDNDVSgPz7Vc0N2+k8l + hmZuFIp91two9vo4BoD2iV1Ps7vSE0J7bq2lp6w5XnUzJs2ruowbbJ6sCZFHshFEBs9JDszr8KJm + saS8KH0n10KCg4JAWQKnJm6xDAGVlNPQkDkWO5v4V9ryKa1pXgOG6WYHFaqXhGBR5VFSIha5qit6 + pJ62xy/AjaTtUzQt4u4nrNpEPJrV1afL0W/0gG9vXeBvPYsOhwtQS1xWkZyexoHfs4pEP2O3vIsm + SotbX8SlfZurOsLbBbhD7uZwjF1PypYg1g8SICMixH3utN/5nktzQCRf4ny5ucTBBKYwrp7rNd9/ + 51mmD1+/yA8WSapWOVE/RMwCZtY6Aer34sT1Ylbt2GyzO2R+HL4uD6WL6OmC9yRQR/njHQ5mdLi0 + R/RDDFn9q8Q+EFVr7Aa6uIx4/OhlPavL5EPW5WWqEbO+TF6Vp/73udwaTj7z4cu+FoUd5mtB5UX6 + Y/vcuf4+92uWFb9IHZAlLCvPDwbCRvCZ+L5LrDkRKjpvZQv5Ig0LuCkPxQ3jgrpdFeWDOHExW00s + 8t8PXPJ9KOMHUy5DZbUTwv/X152mHrK123UjhuGurtaVSTETvkORhQFDWNYq/3b1NlZJvC236yla + eszoDRxMUYC6Z+BiRTsZBxORQwY1O8nKEvrOVmfwuLob6Lmuuqwy+HqofX4oxAD0aFI6AZuNOGuN + pp/YPalSGFZsxs60XBuWKK1ND8cU3TVfdqvbZDERe0Ix6AcP0VPyvEUK+7VPGS/ebov92lDGi1fx + WPh88o7UHLosAJyEKvirB3C5Y+oxl8rEqM/vzrkqqYEp+Gn/9Sx5bmY57QvHz/mjc5l8X4rJKRfM + B4b5LAn//GInVL8AYqgRZJ98EWR46y2bLOZf08Zgv8p6+px8IfW0p8b0AHw1dfqZmUxB3JaYS0hE + SY0PUuXHHpHQRALqt2Ydl1vVzur3pEKMUxrxJtAPM32JtBaLNjbW9kn3Z0oFLAj3vJfzh5lmjlhN + BepsGDpyNOs+RlOArEp5T/iRD/2HGo5uYJa90cgnnepUNICwVt0TqE/m14M3t1eN9AmRQYJKFidX + YkpN9c8Lt7JK9zhhgrj+/o1b3l4ldpAssGEyth48tC+2X2EhH7iVd84bqQ0Qt3AXhy9JHyA99Yi9 + o1g0UPESwzXUChb3uayfVI2vIcdilioeN+FI+nRy9mI8+jgBBtAV4rBCTE56mBg3P7lq/tzpEPH/ + NIv4Z1UE9Ef4mX0X2ZuGg91GOaUsnAFAwWNJCyjfagA07zhC26ZLIjjXxXsksznU/4u32bupqE3L + l6eUdOVlAH/Qr8b+AAzJHm4zO+9whMFVRAkWmckHphuF6Jq0n/4TPf2PBz16oOa7t0kvQoCKg7by + 2EVFQd0E9Jp85zl00yaBh0XsMBsznIgHQz1xPVKYWedXXBOzN7PwdiszS0qumFl4VZaffL6up81Q + t0LaR15NWBjSyBuzkM9kuQVvUq6KbtLCG1LQs3znq3iUfeON/lC1xyKvX4SithLDGvTchM+9KddK + ljs1zlgGss3r9lDf8g0+wIxE0UNl3bTApZq1kn4buHrkBj4LqlUeNviCFZTfwK8QfADDVBmsR46C + ZoNCpnmTrh4SRr/yuZNBYiZgzW7Wijn+LoEioNEG8GjFveJ3YNoUndVAJTrTGzwQuF07MMV0lpHn + u47sNKyVI/EUO1JMeoDaHq7TNsAOx4SqyBu3EsPeoTf1kG3sTTdiBN/UVVyob/9xLf2Z/JF//AL/ + lOlLcqxB0iV5C65LMhUOdOJ76EDvg3BjfYzEcdCAdzlMG84T8BD6EcaURdtJhxfO3n1qK/GJ13Hq + VSJy+35/f0U993RyYn34qQesjj8tvXIAqusSxOXd38wjkDGPRVHlDGTxq0kcen5ExvwvkfAES+tc + 5B9/mWNyAnqEVY4c5uJffZ5cnl6plNLbDW96Okn+I5JKacS1dw0OGROddkTcd8FL0jf4KB+yDj6q + Rszgo7yKny/JAetVlB2CgWKkI5RCO5a3Ga1yq5C5mFPLjztcdyVr7lgDkWsPaCDqrg0bToIGmNmA + xYFsfwIIpvBfjqZ/eqBcCPt9+TGxj4e1JF10uRXfV0xrmKLDIOQe3kK3Z8SLCifmcbIGTAThokoe + zIqosb4qnOmr+VZYy5BDfbvJduu+ucYuwdTR9f2GW6E/wIO7H5Kt0xCV2WJvLpn/nr4ktE/IXj1j + GbHXTZQD9uoi7soFpDKf/vrVJvnuljddQEGXt94DHin3BVx4DHJG/hMg1J0hgLXVzEHA5zcfXd+1 + r/zB2+1IelBylaRHXJUujLenwP1QQbTyKKmy9Lwg1OcHz5jQgO8iONUKZuM6kNWGb3RzMQrAvAUc + 6yJnofBy3KTb72m6Gr29EpqeMBVKMbxkwSchULBfCkR5Abs5zyUnuwpnGI38hQ8AOMv+AvR9wsYG + VVKE/jQH7pddXvKTpFMS1nTJ0kvtxV8zdDnWCgvNdX8ShTVfigJk+3T9rsygUkPNNjRPr4Kw3NKK + 1kT58PLXQEOskWXbDaKoRj8qRVKXLw0WHy2yQtwdunwSecAHN/QEEj/BA+CTsZ8QYz3HBN5xdZ69 + Ht0lefmMNuanI9aQrggmXjAEoXYgbVYT8LXuLOwtVWiO5U8oxnaRFn6ofkTRh4veG3MdirabBCQW + +n6fV+1UIrwQK4zW83TKewzzF8iO+HtkfFrcCgC01sOsjcGbEk+cgtW5CWmOSjLvjZX3DXYj0cEe + u5ml/t/LO7Tn4B6C7vtAv4wjd1PhoLPcie1GaIA8UCLyQH//8JF/R3vNAG+30gyk5IpmgFclf/jp + hcgIM6IbJPRDM7rhvnrhcbuCjj0/iCRj20XyL76aC1+M3FcLvpjXo23Kr2zyynX+zCYtOID5jIXf + N5LLwEafru6gRBOlFJGRWnOKQ3y6pPHQ9H9HhFja5BjjgYqO5EV4u4M4Q1IhXfArqFilJqjnRhGJ + 2xBF1NQ0fVvEr4grn91A+FHVMbqDLIJbypB4agpzntp8ccTc12EXl1KnN0VWUW3lyG+knzU/7TAG + 0k+xqg70Dx1njHXTjh1NG3VcxNx67y8PndrzIx37CvqWlepnrCNfQa2kVF/E/f9ueSvd9GwiDN0f + 9xMm2dBFSdHmfjE5zU5GRSC/7CCwfciBdiDjP4pj5LALZHGwIGEfJnWHixSfZXrH9SpJ7j6MWEzL + 39xmvaRaewEjBQme8+/I1bthhiMK0DZZzNeDCCSuoIj6ZfQl2azS/H5RdiM1yh9zbe1bsshWcINE + Ez58mIgfI0rSNEtX/+Zzf3RybIiAmwzIKjjYbBksF8uvwuWC9ZGI5X74RBsk6DukZRDF7bKGCAkf + 2MATjxAr+5TEmHmgK/YPHzFRmOrhi8ktvfsQ+HRydvlhmIS5QZt9hNQ0LS0gQYc0pK3gakGGIL+n + Hya/fsBoBiijs2yVbfgWyd8IhghejK80/sw0XWP1fp9th59S4s2EmIO0GhBBje31sDhJrOIkJHrv + v3T7xUnkM7ZxEtWEESeRF1GrmSab2TyDI3BVKU+Ux9EzAoCC23T93Dk9u5zM5skUZh/vJD8QJvqH + EqVP8eMIWH9K0SyjTxAvoR6Tyg6mWJbZgpTowZWJAPNPJQDOUKe/xye7UJmbhmSQuPcxwWobbPk+ + Aevjser7Bq0HJLI9EsnQjTz0UFquhxLdVWU9DHE6PEZnHi8Ajmgzcmk2x8EhrgFQexuomsu38+1O + ZI3qF+wVDpebMnUV52wU90klUw/Y8s6i9DrzrLiOBuenkzesIZUsJjXyWRJFzA3G/C9fRb3NVDKd + Q8Y1qJP87uY+GXELLb9fz+cql2y94G3/2XPJTu9hn9qAu0lYHXmJZBeLmV7zbWWxKDLIN2m+W2wF + Ewwgrsw36EebpV/m0zmXe49pzLoIdcGHVcRmG1qSE7dMMDPjvQYMmGQJD1X6ko8u8tyXAPenWSJ/ + qmRbVx4aXd/dk7Vz+usJLRLnKJRoQiZuWDeVyq/FZ3rJSXT+975le71ssSfNrhVTjeJKaIipzL2Q + J+RD1sgTqhETeUJexQ1hnX0hslri3eQm+6ETro1/jS7hNkfcLCBeSSSRI4ZJk+/+AD6Wnip5uq2W + RHkrVcclvtnx0WJ+Cyuq1Zv5dDPuhqjT5Hu9CRMthYxHN5v57PYwsDA17RF89+KKxpF9oA1vtwNr + QMlVsAZxVaZQX53WsRpiv4bV8CIKWESicRR4FFLYBCB+U7KEqC3/NlfhDXngLTe8yToeb7MDxAyF + taeceEHs+jFpDoUlbUxzAatGmJoFPq2zlM/KJSjfwlySsPGAXfB6BPCCgAC6TkQ2Si2Vha+GbIoJ + B+II+5jcyrPtYzKVP1W+YLWtQgvU5zXfxoC/OReoMOkSGCzzRfZdothzQ5Yf2inSYwronrJIMHSd + j+eXBaxBzHdPYY/iAkfj8PhC3GEdzR7f04WPUb+NncyW+iTDRZauvqWLbG3NE/an8Je29OvP6Bod + 6jTyXRpL1EyAMctE6fanCdifdoZgdTKqkwiLen79yHtpX8+Kt1udRFJy5STCqxI26MM5rdKbUs8n + lZSP8NWEUs/jRxGlgRtKFY0/LDPv5pBYnurNI1++HH2WOAo3qWY2g9JWPKG/cCvi+2iR8vWHsXgp + 4BlxJ9HFcyTl2G1W/Nnsy5em5+/mt3dSADwU8IdKgl6OfuNaH+YEamY2AMQDHxu/D15bNMJ/YC8V + qtDdnNbZVIfjdEFDH13akIrOd7MmwgtDatzO8QIkOqFfrYiVI2D6N8siuf5jJmq+vRyXeViUWOcC + CJpV90uEEeI8ExxkhpO+4Y0Es8q8UnMwT/PXI5PzTn58o8uCb3KRZ8YdpTLZ1yNJKg1G5ajMI420 + afwDE/WFKS0M0mQhaJ9nu9UMliTezD88NyjFWtD0Zh4RSZ0wXMLjUx3XI1AlDhPZhpcK+4hblmdh + 4dR09r5KfhRjdsu+KdArjQ5me8kl1l/oH4qTxXcZ+rfra2TPeKnjw5OGDGG0B+qcuN3SkBGSa4YM + XMXj468fL2nNkBGOzQronM+82GNjn/m+IsduYRH562LdQKx1XMbek7IqlAHHNy71iOrLWJxRyXyV + F9asgB+YLrIc+eqFsyoFmsi/ak4NyG9XflA48d7yD8bX/+hslfxVbdvPHfhWWvcPGWbe9Ez50q4j + H5NVr7gV0SNZVdxul6yKkqvJquIqTr131x9qNjSJWFzLVaVu4PnemLohiSTA6bUgnSoV84hBXmT8 + c87/DcmCWUGKraJPcJboUXo5ulbfR/oXhOP5XX5H0bbjP7G1nNH852aO1ieQg1oqTamOSSN8Ycj/ + 227Ie75fY4U7ZqWYTHBHfK/XxXqa52XcQHOCVb+f4oa72y0TOFe56TATdZm7JTiZdmtxJPMff/37 + 6Ql1YEoWKaQxecLVcUPmcYp0ERctpGmyueH6AKbcHRcdO67eTgmCCStMt9bpXZMH0yH9zv8Fi0xG + SfgRlfA/uImYqy0wUN5zPwx7pjbIR2w957IBw2+O13Ar3KwXTOAvwN4WuNcjbnUBhEtJaf/IIqf9 + N0LAhAhfekxkDb5HqFZ02nhz7KvjbaR1lK1TyTNRrox6QD928RBqe3LYevowuK1M/VKbEDxLNrdp + 6SsoMNSDR5a5Pr4XyMR8gcMzoVmIDrJSg1whEXFnmaTfPhA9uDoOb6Qzro0FNH/tV0DzV/sCmr82 + FtD8tVRAc3FyVlOHAWfZ1EnoqxcsCvluO2ZRJCoMBEDjer6aLQz2qypmP6oTF8msQUHOIMoFuGEG + bD4OI7d4UhGu3FTggcMwajvMKVcRgyhudfOvq8L8wGuNGRjChlfGFcJuwxCa6GKxqRSZJaoE2A88 + Fv/TOa2WpUjBEx0rrn+k8ej73Xx6N5qli+Qey02Au0SI4CcHogFLPH0Z1kZnvQi8V99ANfS6mRSe + TwGydmC2KXWD+UE4DIGDG+gIuj0QfvE0JvI3YB5XX62T5q296NQn0owXomdzWIZ9E7K4DDyNSmtk + lsol1APvDNaPEGO7+B5D9ws8Vo5xrG3bZcyPQ+Pb1TeiB5PT5HwfimCDIjj/2RWjvv25gLdbnQtS + cuVcwKt4Lvx++t60VWnoAZ9qBXIhePWCEK6vknBMCOXqgwRd+D1N8u3oFGcZH4X3KsA7vW1BfYQp + qG9vAr93wziu7YVl53LoxTF7sKBsMTf0OjGWn7lth62k4UY3B5FegkIgbgTI9eyfzqdsNbm+ONUH + sUINqA7xazOmm0LB4WKeY2kxGJNlllFIoWru4LgNhVHYtJoORy0Gy95MFzswytQTAC0q2E5G3JTW + hjPw3jgwXdXBQkPGJOeqW17V/GwAHHXVm1k/tMjivPjJxxWSrOybMI8ktROe80CZ7SNvLXA/aAPf + 9SWK93yQ3g1xyIeuhEzTM728AizPdyzFa99S+3zCn4N49IgFrl1ncKygDOP35KUb9UMylM/YAhmq + JgwcQ3kRD9TFfZ4VJRHVOtb235SlU9+jIeYdeh7FYkjtmsDslz7l4oe5CXvTDQa0nHQuX/H4zPzB + 8LGYW2BeQmJoLzTg4iF7zEvZSAXzEq8q71pOfFVC5DX60K6J77T/RggQ8yUGpDgMLwcltxKM6BK4 + sJR+kf4QADVitFonxLC+tz+SJ+8R2P2GcQBClTL6usTntXD77XMnhqXlDlqYrdz/uhP7uhMZKbAZ + Tr2XbtAXnAEfskdnkI1U4BnwKm4+QpNZ5+lulu02UNEEsSidL/psLcNlz519N5ZPtFLTQMLIrXex + RREfF2ohBcInRX5OvyUbeIhNJToGjK9fuKJw5EYUuQi4uz2I9NvqzLVPsv+jxetcaXht+zNmq+Zj + xblbnyFHwNUeLNVeVZFK0+L+mPhk5IvJN4eN5ZBAp9plqNJ3/LOg5yajn7HVdlQThrIjLyqKkgWC + 5GWjG/5CqahugtLKDCA+GnOeJMLSxvnt7HLyfjH9dDI1bywy4dVJcrK4JZ7RI6iP9hQYjLRWZnDC + cR11spivvkIi6GJ+q4bFPg/88fgPfn5q9xNPx9YqBgmDqqjBUT+EteMjsx2kaqdbgSPBJzLk2t0v + FFxNpqZZ410D1S+rxc5U5VHYhyZW3G5beRQ20MSKq2jMvPntY0PlESO1hL2I+IHvjiMS+ZGsPIJn + 15A/oxSNxb2RyIsVovdwklSK4kTxMjd1+Wtyq1cdN7Vit6vrS3892onMbV1uCk6XOZaSotf7zW5R + 93pXeT4Mb3QUmQ7kgu0nCoKIeO4xYHllhzGF+FcNPNeEDpivgDJoK1zAlQSoKi9RKSc7CLgp0YLB + t8xWWWXAK4RHZmD24nLcNgQ12cCN2CGb7ylVwqYm2c5vuiBTDWkN+u8qX/OP/5ZN2mogx6UcblXu + DQ/z+UDXY74p55sdkjZOk10OWWHpcp0CvOgmnQCYIlYBQAHV9m5cZtsqPbOcQz7XVjrJS/wTXNIy + 5b3JHVgGOo8yiiJHfjzlTW3+1H08hTCqZY9bw0ew9aQ+Rkmsq0q0Oiaknb+1dxVs00lsI2WvS3uA + sllLAqKjQ5+DA9JaCNk7fh4j6G8pvoLV4+qk9AoK1XfRSzfuyaEqnrEnUcUmKiyq4qIEDoJUjg0c + c6mAY82kyilK0zcV+1MN19VmTQKTdCFb+0h/GkSucgT6piMQE8QeyBHIAiSwPshiVl+WUsQU0m4V + roiLQGKTV8BS/d7rm9svR80cX2aBUTe017HwdsssMCG5lgUGVyWqyW/16m4cNDMLbOIRFsVjL/QY + 6yyJ+P1fCy59Wk/64sba3YZv6dNM2FcS67yCxMuCnpngT6BG4uRyQgT6GZzG92pJvYayBp30LTKh + 1BAoIGAwXycVcHGz3Ozz+08TsDbE1NVg8K/1TiiUWgN+BDrzupw0Dg0tkyVfrvOEn858CiH1o3oO + H1Prg7evpgfUtQlsd6D4XG2Fcc1XjvPx5ESrFIxPB2RGdg0EBPni/Y5/AJgXxxi3qTYZFM+V3nk8 + KsZBwffbqCmOlV+8KTXIJWhE4uedJQLbrldSUCFJwn+2LIHO7hweE1WbTKBSigL2vz0glNQDtmlF + KL2eWCSuKzaXi9pmwzfUhswiyi14Eozhb6YLYYoSBq7uvv2RTe/z7ehCJr3zmfuh0LPPrq/NZXBX + 3q3UNBVjp09SxbqybC6AgZilaanRuGWzimMaBkFYy0cVJAxiBpp1NHEbQLohaPhNL4UxxFyUCj1K + WMu3Kgwlo1Na1hc+0qAUSeIrbraYW7vnhRXjq1ueSR9ayrkxt+PQa5FKRLCF0IYM2QVkAO1u1FqW + V0uw7JXUKRpcG2DvfDu6UxMNq21gujkwu9XGGFLmI8iPG+mNMRMlGfXVu6eGY2DrqNX4ijAqXpoU + fexAm8c7N0kPN/+GeWR9gDASFHwsCeqoR45Ww8nwEM205haFtIFMtysD7SCu407LKkRymmLzsrPq + DithOQJd3424sWJ8lxauhcr6t9IGvLJ9ibKBID25BSdNstrtO8b13DmeAWCAFCcWqnhxHLov3ahX + tBgfsY0VywaMSDFew1N9vgLIC/6twXFUgEXKwveyRWp/Z6ldgdzv+hisCTHZ23y+EUQI9N69fgNG + Y8zaK3rWiSp/uDXs6RCeagmya2fpZv4Ni05lfGBzXyS5WL2CF7kkaH6FgoUKubvlHOsWa1mmPTAC + bYSpJvodyJiNvbE/DiZ8K94mX+d5bboMAPDqyn7qZu/S9YM1Fnlow+jG+KrLy+CxfxK8CbVBqToI + l0X2nhG83dJgEZJr5gpclQRTn078mrFCoWDFNFYmPg09Eo595gYxNXHvEIzUIOa7nIjz/eTzpcBo + y2bzHd+qd8u1Chm9XSX+cSGjojSC69VeSGvMjrLxArRtmu34KSRC6eLb6XaW2TfcLrjWAUbW2Nxp + vsH2yb/MqsKpRPwgaMMCMvqk1X05EDCZ2jgbibdHonPQsI9L4Dyg7X9KXozSL18Wux/qbsTqcWBC + 6EoDz0P9PvRLmNXHM7YczcqIJoI5jL1lYH4wXj1CDNLkNH3Ynnod8WXG/mGhH5nLicV+B9IK2kZI + nnhaw6CA7S5Fk2+Z3IJHXX7lw2QNRn0+AIq875dm7gTDGiCmtm2274X9PqwvCSweZl/ue4YPBGYR + RCV2lIX5XgW/iIhXJyu4iU9E/h44Af4Nv25/ZZGjgVx5vTrFiIdQYKVd6TCnqq4RCYOwJxq1fsY2 + 5qeaMGJ+8iLqKt/WuUTUmN2vBK6aPLPMf2qb8e/8fgcewsoQ6kmyD2qExrcQ3hMfis8/xfp6uAob + xF5lC96pSqn9Ie5QUe2mm+yHSGTk7d3yCd4WZGh3VTH+P7EBilmIZsZX/rG34FzplGltrvmub4zk + Jt1CCEWkWeynk7WNQz5QHm4PtG5LftwHowxhISJvLzMIzhx4YrAYT4z35u57xMBYS9x3kvlSymGb + lKfrk4L3xO2bmCCfsd2kVBPGJiUv4ta0hA7m94tJNTkWkxiRlaHsxilfPx+9X/A9rlrgplqFbcxn + nsrJNUDvS4lRn1R+rkoTri/0otKt2HrQMy28rt+hhmWYXeJovVbJiRlq/dVxPUpf/nNkGf+nE+45 + Q6rWnh8y1PctFvIQ/HrDtPdI6m4YR/vVXV2ecJOtZj25kDxR5PX73z66Xg+fGN5u5ROTkis+Mbwq + fWIf6wF8GrmmT8xjryYMPNbxmPGtOCJlHMtftneblL9fiX5A+hwFTKKM14gXkvWWy2zD7RqZtDXm + s2ctEvTSu+TbPNuMNXYiYNfwOypAEqXIrgyeIUUVNporzCIIDikH0M1uNlql068jLL5Hp9yiKSsg + E4Wh2/kixXslDbrxZSpk6MRrJUN3A59SvwZjooYpr45fFxa3F4RtmJoxiVwaVvO+kx+Q4MNfvZZD + HhLqtsbYy10ucqn4ANZTAFzAimkVRJkXRlV88OY5YA5obLLLlzLcYw8cs9Vk8dJUqQgiPV+zQb+o + hmEMByZfEi09jVjs8/GpyhdVZXf36ztIvWoaT9qW/BBHMSCE1VIq8jUkh8I5kuVLhEbZQkqN2dE4 + 7DkSck22QJm5hLUWIbgh5QKDfzp/zN3BgQ1Ro6j6jDjyfYWPoTYqVpauK9HKhbppTvzacdGWywGT + WVl5arJbNR7w/8GdeLJaqZBdOSFeUGS/dK8UK43yGHndzuoYAYM6Voill+JYiCCCnHBqIxaCSvup + 9QyAXVv4OMS+rpcLiMrnUGAtumHvfiGoQzbtSbZ9YiSWBK+K5MJceg1flXcnO2SmeNSLWfWDzjY7 + CywdJSEIwzYrsnevHHnyq6mhP4XYSGpqROcXebIefD5itDxgR4WShQJTlrZX+7HaQI6X+rCxh6cT + h9fLIAq1j2JxuL/co5LHlRt19riGeLslh6uQXGNwhatou/z98hpSXUzjxacQ7DT5W1/ATPb9sRfE + gS+NF/R+886pgjs1g9A8AH96ULMP5qs8W+xgEetgowlCS9uqHWIWAAVALYFYd6M5ESBsV/qtBUob + 5t1udTuv2C6sNeGZ8C/s8aF8qERl9DDL0muzGKKSJBCb1H2lulS+/1JuQ1ckQ20mUFJMdYADoxJj + keiEO31yy39dagYKFVoZAo2R0M0IUJNyBYNqrfE9PJ/RKvrvnveQ83GiP2gRvDEGKKDV+trGKaLl + qn4aLk9QqkuFVCZEJdvXgHNtplebAy+E6/1ZrrYPv15e61RJRXRw+uvV399+Hm1TUNlVma6Akizr + 66cLfgKMTiHkpSUUFS1gBOipP8umX0EONKA6s8W5N9lmRSEO/F79A36hXkDHzfQ35af2bZo7YuvR + ZE1xEBwebWvP3j42cyRSOAclrKv6G/WVGmMIo2P99jEoQgmj0zgrbceK+CqWeNzbwTbglXvTsnNY + Kayw4uFOi43CZsAcuV/DzXzrvU0WmP+kpPWlXDwyozMMjc/W++nSMJfPKpvOM2DqgjuNPaT2ZFdp + AqOB6L7ccKzyxlWJp6dhNFjcC0aD324LowGS6zAa/CoqPlefPtdhNMTCrMBohF5EAzIOvTgA0BPQ + e64+nYjo2/n56xHgin4TbE45N0Umiyxba/99qoB52V9g9sLm+xsd5Sso3hXLPod7wJuizT2EAd6I + IeP3ygdRn7pabVvAokXFbYWFyG31LgWxqz2AhVai4eLkq7W4UH3a7rYqC9ZnJfOhTmi+FARLklFy + vS0XLxtHMQv2ynfK418uDN2cwcDqNtS5WSmWfo2shI/x4RyYZQXShE/FEccwgm1iS8OR2wAtLWCi + k830br5NsWf2h59trXi7gFicfsfUmgMeKNO9ML+NtYvE83Cn/I3Ib8D+AnrHIS8FssTo/+YNIksM + 0G/+0bL61eTvqY0bDqbTLyqkeubT9IHqRKRJVPwOR7PjEsSXnWVgXU4Armg1408eLtHzSaRf4xi3 + jU90GP14WVTjTTRv13Y+n/5iHg5iuvDQDANB7HmK2IvQsC9YdfGQLbmXbsSg91JXUWVoqrR2SjF/ + rhWvTGEA5Rlxo8gRhBy4EPU6LntwC1d8ZYRqdLPDpLA8hQQO9aERKuQj1NPb65F4u5UeKSVX9Ei8 + KqFCLs68mh7Jqnqk92rCT38v9saRz7iphZNCobCNflt/IeuJXhE1T9qn5cx7+oyqS9hpVVlvvhQm + H/jNSkVzZgQ0Mt05RTF9GEWMBKXalfLQiDqWT8kyXI8FZsdNOjLJqNOGhkXfZuk0gZLX7d13fujA + l9O6GV9hjuxTseNvJkphuVEialXLTW+J7fTbQB+05VaEqkeGrVXLNlCFtqIctR8sMz5iW2grGzAK + bfGazL85uRgVtenIV10KEDi1K7WSWtkCbNd+JLbroVIYB932nySH6bAVrxHBQHj9mw1RanqA8Ecq + C/WQNvHyipts9qcg3m4XRkLJ1TCSuIqn4Pnpxxptoi8cRGYUaeIHIQ28sR9EcSyjSHSCYzoHlGGB + MSqBnaVVXUJk5F+GW8S8owWSZK72fBSiJGCaAV8msnImVQRL39JNLk32hoZhXe2mU8A8RI/2+n6z + +8b/8XokXtE0YLlptknFasMUaZUfAg9y/Xc3xcu8kWQFE1ic5efTRZ38sekdK8e63xpmIsCQFtTD + TM2j2uTW8QKPtpJCG+LLoZU1WJ0lrIBKtWvsew8v822RhUVIGHukmi1XRLELzaQCrhqErSJlN53/ + lDnqgASlFAWUuI4cIbFT1Yay62CrHUPFTjrI6SjmgjQ5q7OmH3TNgZJa35DEoS+LhZFKWySX8/l0 + XOkBE6ehiU9rq67ZPLrnMPerMoqNyrIXfSQ8Qt6+hyCz7Rtkz/N8AFICsQ8XWkaPrjVFzw4W1qls + RNLkdsMeOSt4u6XJLSTXTG64KkM3lx8hrFuxuQXYomlzv6D8m9BoTCPmx8wEoaihVyNs67PAvX5e + p+MZK9V7LhJXuLL4r2y+EmFp/igQR8F+CvTs8gGRU6vycstES/yp7Vz8+Hp0l+QVQAb+eUbwcnUa + KhHfzyQqQ646/T8XyIsnK1llnGi9IG4bWt+8ncFcJrm8FQC5iZnm4kdea0a578fgGqioHxZsPuUG + AJfOpoFaorkGmKgB9nmk1uVK6ncLZq8mOK4Sfpooe7QVu8+P3CAuuS/+jJPNEctQO1C4luDIUSmF + MeyH1jZQcgR72R4Je/CbhoinHG0RH0NlBuRjfsmg7tgJOkdDeSeeCs/YnqBQH8EWoPID4Mx5scx+ + cD1mf4Ti7ZbZD0JyLfsBruIRenFaL1ljASQ7mdkPL5jPotAdM98TIT04Qc9LzlZYCCKHZqLZPurx + d76E+dvx/a/wX+FBdTFtqB8zCNhF+LvCeu22GZWU9zEI6wCzyn1lppmyqvN5XDpywtDzuB5fPdPO + SqFE4/CCZtsYRQgDCpYmUdwwWygWtWwzv23hK+EfJrJ650K6CNlni3vJbHV+XvksX/iELGMDmCdx + a/GYMSz6GK2+SnHqmOcxDVtzUozXaEG7rbwBLLLLbAHvtobpBVzWZiaJ3/ZN1Gs4n5sGZX78/H4N + kEj3kFsyTeG8WIw2kOElvQBG3shNBkDjqcJwBnniqyQlYO00d2DB6rM28DBXkmJ9Tsf4W+1pfKQK + T2R7dkb3mcokDUL7JxtDR0tAsL0bCPc0gFLqU19PDys79eBqJck3XSQ+GJvYYzjcDwG0deT2pSZS + L5ISqwe7z+cAQdz3bId2vQndhnlc3eoeUlQ3gpasYhGDleJ79TPomR/IGkoMWhSbUv8PIHUR39Wp + Euxt+NL1+mVK4DPWiRKyCTNPAi+iXpJs10QmWb4jE4n8NUsX20Trpjr85rTdUY7QCYEAhOLyM9j5 + c4ITEj/GNHV4pcIWVjBpoKoeJTzWFWyHi/FoiLlypvvv0B7bgkH9XJepx+pvPF+t0q5k7X1e2IZB + xOGa6OGSqHyacnWstRB+9C++HjCa2sd5VOaP59MCIr6rwwVfXOHlnWabdPTuGXlufxoT3w0L9JHb + dFUsMv0Cug/pofv60cWAWk6MZRz13jaOUQGkssl0BmgHvqE9qvbD9mPPGHTOkAd+78Hb7jx5iTp5 + 6RlxX4pSKPuTVz5je/KqJoyTV17E47aai9iUm6ikwHHqeczh/1Evg5Wsnz5yNcc+BQFvt3JpSMkV + lwZeRdXh5PqcVV0aHoP9quzSCF5NAgJZcOOARJRIuP1LlYincxL1BvGW1WgIXzfVFuVc/bi9TXN+ + kGhjb5XeJg0l/aWi+R1goyt3yEk+ZzV3yB7oLTNHIDJzBIChpgCEBoeOF3o13OuCpEM5tSTbYnMB + SCUQ0NmItuRtiEBqcXnSyqaqGnH6frgSJVg+J2thbvOf6LpU1iFMdN7oAl6df67ry2tBPgr7h8D8 + F6D/N/fovk4Kz/wM7PrVthRvF6Y2yBB+81LAWHoCkps8ldUeIhYPkrCN3IH5rC3+2GeOOxjZTRsj + 2LHWZ1g2ffcpOi3geAfhzbUXRz6BZGXlLycxWm9qgA4ArYPFZ37/tiVrM0Rq72YKEJOdENKP90Q/ + YwuIqZowADHlRdzH19OdJzk7d7DUVLhJ/stzTneLiQdnECME8y35vBV6XuFtyecLvrCEhb0dbdNF + tkx7lU49BuVujAWc5ZxOMONnyRL4c/LtfLlrrJxpBbdxMcFCjAKGNHI+Z8UZ1KPayg19JutoVrDl + 9YPE6cd52FHUDOzlYrU0n6FVf5Ht2xGVzKQ6uI/luLF41kOkmZb5Jv6xHYnf3GKF8RTintut/RRk + /HPSjjaERddvVkOGROsy4cdZvgQUV3Cf9pAYSISo8re5m+db8IZj3km/7wPFEVgDlPIpkRVdLZzm + 1qJoFO6bQnDQcDm7/hOJS48a3v3Yee/RMOqan7OdAHUYXgHQNnqEMOAtcFTLdN6XBM8nftgxSz6w + yd/ifnPlPyGhvdgHcZqhWtiDqZXbOuIMw3NzcnX+6X0PWvZuTSYo10Vuis2I311dtzanhsc8xEy/ + mn8lkwbF3RJd4DgN6aFY2PlwYd5F8VaVPh3mufeK2rc+DLYf+zDYfmxhsP1oMNjWauAIIzQmEakl + 5EU+8wIXiuBCgPRrZMwGe287/zLHxOQ7pK+9fzkaXafp6N3bN9ejj3CUbvLR/8PfyP3nyIvCV4xM + WPBSsW0vNrx73ydJc3LBvlSAPwS/tqNJVXkPnUfeEbXbxzex9Gk/xg/1UD80fTptgtOnkvRjmyYy + 0/NrupiK0Hqa6MPREVHdVOSebb5y+/Qzv92BZwRYfkBiMZRuLAEnkw3vyEaAlnIDtEMH6a7ti3G/ + LHRpYGsBwElI7rNvpF3zPxpgE7Fc9kJSQAPrTPtN7frn0Qh30Zu5eBbF9MTJ9IkMn4qHZ3PYiaw/ + xOG1jowSJC0xmxUfz+Z5n9DIL74NBBp+6JHcztf7T7QhMs78QEd53aAf5YV6xDrGiw2YIV5xDdfn + dLeV5n2yStYQQZhgfkYJq2z07OTy9LnTcYMK9Z6sp8RJ4A+ovwwYLt/HMN+PX3MuGqIQy2vUqPc8 + HRP1NKjdEHwSg/WLGjUM2cxrO0mdyiNyZZkpf4u9I1N7vI9FXXuYgSsXbmn/1tVvdzS1dK0Tx28t + h528qNh3zHI7OX3LZA9TkYtRU3sKVp3+esXCyD6LFW+30j2l5IrmiVdlyOfzu1oWqyfglMtqZ/jq + BQEPuhuOCf/WYrI3Kp5Secw2vIXv9foJmfNdXGvU1SIW0iad72kqjz6wQLuHZ7GI2f8nYoH0KR62 + R6QFqOWBdVJvrmjYA5oEb7daHlJyZXngVVweH64vqhFRKE00I6LMExB3LokA4o7RqHtx3Gy4/Ona + +e3NP0bPCoO2xCj/j+ejWQZ64wQgvGV4TINKAmGB0k9kJO50NvUiITFU09L1wvCxDvKB2mj143qy + AIHPJuX92qT5biF2esOxCaHhAusBHrBw7srzx4gspatv6SJb2wfdngKp1WC6riahJPQ9ob1pKPVT + tlZp0YxhlurLuKD+96xqiraev29ZRS5jARQRgG7bO37xh6FNPMA56jHKjGhT/8KjI/yF9tAhMk// + 3/PVtDs/bK9IOccDVwHoEBq8JH4/BB35jC2EjmrCwNCRF/GgydMphLYFpJXCqBbu6uKF1Cvr4Swn + 6cqb+ffNbldosQBY9RyMKmXpXYs2jKfgirD73IBIqlZk176+uixt4tOsVOhXKnI0oKUPTMjkLYZH + tjiujVV5HA5czwcZJEfjGaMe2PE1xy0nRDEwR2wgD9L84AGdwcom1R4Y+a6757177IfHw3BGDKtr + w+sDhKj9TedGsjfRS5f18lfhI7b+KtmA4a/CazIvUja5BtyTWaqSYgUS2KeTs8sX49FicrvgWtky + QYfukr/uc3On6pBhoInp7kCGZQyZOO5whKhRgHJK6YcD1D/wXgqVDYBnV+kAEkkcYdZ2l8Rv8wTf + I5nN1wpe5eC9g6udeHBkP+YzpaLPdtPmHfgYD3OP3eyRwdOGw1UJsRLQYuF8LBbORC+cIShSH6wL + 3WPuYS3bgSRHHnp0YQ5mOP0OR2kJMB/75CP/rvbOObzdyvsgJVe8D3gVlcLTs1NAPa64H2gYm+4H + 9upFSMIoHoeMKkS4SwloJQmfykBaCRTVCnoa3rtkmUKeKfLHCuRrgaYlALS2ivyO28kLhZAFv1Y/ + j0UG7ny13m1FGC5JN9kNH8tnn09P0KH/fCQKcvUvFHQW/wgQHxPj/Vzk78038lMKJ8npbEriNvyV + CqqKSR6kIUpKRKfmWLQkZYcea60QB8B5LxhGboFxwk0vyqpY/6UPYaRy8wnZjcSie9OM+wYSarXj + zh91mjhiaWhfl8uwmtvF0uHaUPR3OokBh7tLb9zTrrEQUPNEicj5gNx5Ax5JWInXOuet7KP+Ugbu + VGtK6xOjx2OQGCJejV/Pj5sEQ1HtBcg48+HKDV37AxFvtzoQpeTKgYhX8UD8fHXhV6NVJAoqSVLu + qxeUcUWCjikLmKIJ34IptcxmUOyNw5Ou/n2/VJVDnzdLf2h88OGzpsRLPLvdJYAh+bwLSbcM+Rl4 + FXI2KDi6uDSLjigNSMiq0J9i0EqJpSWxjBvOka1YByQ9Wz4jz9+z8Hmt32PdiKCTEc3eiPeZ/SuB + 3Eg4T0S5z4pvYtksk3GQO3FKqWIxbgh+g8Q3DAR8gVMrv5t/2QrGmrv57d3iXkAXpRvAJkmmm4yf + CCcbPo3TZDx6w8cu3cwT5HaWEG4OTDlNxMxfR5iTki1sewytixg+LaUzebcr13lwzpOHcXs9jLfs + UEDNQ6Gu95jxSFFirNHJJzJ5PhkO8dqjrNZG5z7QYzINSe9KI6y9wEzUEmPHQQGpwFPw3EGP2li8 + 3RaeO6jXxuJVGQn+9bqWKOELGqoKPDeAmLJgHESeKKkyamOngjPyXCfuz1K+uW3vBU/Lsw9nJ6fP + MZ6rzXQTbfDDLCHr8ehqPWP8rw9ZTte4WfEfoex1xj9JKToqMJPnq+kGmGlmulHZpLiRb6EbWQeU + JgCCWAksw5b7ebcm68l1vgrWAkJA4SxpX6s4P3kX6kBkTe+pHjN5LEhUtU00ZRnjI+nWsDGbRDcb + YJ5rntbXDye73G8C+T1e9UA100P5t/vFmrXMROYyOeRaX6qG9VlyXerXq57sbuCFQT/xPUCrKghj + e9/D+VMvHwc2lgIuPJT8dk8fTgzC6JVaOEO7tnf6wuqH27t2i1+skCUPy8SXC7mtC+UT8IHRLYuD + eBgWr8BXQaDYC1+6vYLc+hnbMJBqwogDyYt4DkK359PJ9C4VbLQNHtpyLKf17mrARzXMVWFuboTO + Mdl4evUcjynFZVCkPt5kq32CrB3zfYTu6V2os69FtpSWeMftiIxP7KoNUc9b9iV43TRbr8FBCAKW + x70g8SMEy8r5kcCnGl9k6UR0bYDRozTGSK8amZJQvh6aMAa7xtD3ZeSuBRBJ7EWIg9O9awwWPXsS + aWglWQdBUeyJylmmyj4SItdQabMujcXA798jD987+Hw1947DnMqxi5qFXkRTWX51sFE7RNhOLSU3 + wIL6dydnB/o5RaXP73+9IrSHnxNvtzI2peSKsYlXJRfUxzq2NPWjChATffWCK+quR8b8L6Yif21p + x//acPl/gJx8g6lNRQXLREs+Y20RNcI16CjySZVV0YAgzDa3yUrhCoD6X3KZlXsa8s7ua6coA2BR + RBz5VMUpVW2zNhvbohK+KnqEevBF1wHYVjYIY2Uc8kaodX84Si0JLFQ5/8h/tPe/4O1WS0JKriwJ + vIpL4t3vf68zloCL3FwT5NUEQMmINyaQRbWnTmW+4A1MDySEf0S3/1OqdyHMj5wn5HnuxZKt5rNm + 4GE9/Il4uy0DD6v7E/GqzO349R+kxvfHREFjhfWWUi+mdMzHm4Qyo+5aZvT+/fxGOIzutwgXwe1l + VCEhovL9bj69A/Iy8ELwHWQ5X0lwN35UN5KuVfDG2pRkoEr5/3ZzMcIQt1d8JBBz2S2AmGSK7pqG + bo1udluuE28rItRRn3wR5UJKokwGyX6QOt+f2smgYAZ1d+UrOP97Nw9P6JuoeAVpLmGMcA2zuvyK + F5kUL9LsECS0lWOwLLs47RrHqPlAinzWeiBJ4c6TnRlHT4bXKs1kI8KEM0esoII8h0aC5ltmk5vd + 75wrxWyzraMfLNfxJ9PRkZ4jZeXDcuQyUJG99oVj9aoHiurOGzlMZqfHbtDUw6L+ip36Pf12xUPW + 1VeqEbP4Sl7FE+fTBB2imJkFQYR0gutR5FntpGNOeuqfO5b3lx15pY4AkAhTmCxxiOgPwAQJDlFb + bsnu5CysmW/opmX+9U8tInmYkrChk8+8AH2wct+uj7ScBkOkKx/d1B5iSkQwmYOie1T8PsKYiaBA + 01p9Y8B9rF6m9Mue03yozK9QM1xEUfjSpb2iCPiIbRBBNmDEEPAa7kOni1N+Li2yDdeB4IDiesnC + abxYkgaBAcLoUwoMIFiG6vNAgQFrocc6te00nMf1rPbx9w6EcxCoiSDn3MFVD9QTx8S3bLFNbtPJ + Lei3AwkO64KrS2UQ1/KxLe15DwmvM4w8RjzXlHf41ijK7H4/u3IDz95ZjLdbeRKk5IonAa8qLt9r + UoPtd2lQqRIJXr3ww9jzvbEfuZ5OTWqjV0Uo22deI71qExXqW95DrpGNrokvvKpAjQodq1Gj5ppj + Nyd1sP6CWRN70Jtjl7Uk5PyROHbbWW8f8LM4YiIpg5qvZ+HP5koEqhAJDJJKI7m+/m2ygRxEsUD4 + 9J3Oc7lExOUizWT0TN07Hvkvo+sR/vhRXmzgojmUtbaOynU4z+2fh65WN9+9qGwsk6HrrpkbYCw3 + dq8hd7v9JWuVlkdw3TZz1T0Mdy6JI6xQ2XTWcZe7pM4VqlwANHhHuFHcywMgn7F1AKgmDPtfXrSl + timkgPHuxlzbfnQVsBNoNWQF4Icfv3TDnoAf4hl7wA9sogL4IS42j6iRmCcccRoOSi2yqx9bVvGZ + FC0BiAcLPUXm0Ap8f4Te7KMjppYj17yvDuMg6YNdcWjui54hmGX+6Yofeva6HN5ux8CEkqsMTOKq + 0uVOmVfD42OMVCmYXgTMjz06DqDCiXZHOVcb3kA98n9klPNpRid9GmEC4IGRwVDDMfvBW++lG/Rz + vaqHbHde3Yix9aqr+Flvk+UykTX2sshjnfJtYlZ1oXbe+P52S51b+ANpX1zF5ClGSTy0vZtng+BP + gFhSFWsBAGfv64gxd7FM/CKDMd+A92Ujxbcn3uEUCcWW8S2Z7rImiJcGVeEpHGgi20T6O/FokB8d + HJ0Nk6Chkmd/HjOTmqedvD4YKh4mSCfTYSqijq9ZUks/0CROp+FL4vVb+fIZaxIn2YRJ4oQX8SjI + bjYyo+vLIvmWzfj8LgHeCfeKPIkni/nXVGsJv92tAc95S8RC5xo26mFeJOZdC5HLEYUGg1L5tBen + MeJiiXZ5zd9s0i/pgivVox6MO8yXzqRyTpSSWOwdlREoiOfWCVAnSK5yiUzezlG+j/BtEL4BqyTj + /sGgQWoZXIIz793Fp58K6yKleZRhoq1SYw+pRwxDFRAJ3Lgv4zc+YhsQkQ0YARG8JsHgky/SRrt4 + d83n/IKf95vd7Sj98mWx+1FG4XW4NrARZwTSwXXQ+J5yoQ5IxtCJ4og7LnRC/MiTvEiLezysBoh7 + wL7gVvcF3vUv6bzpRG1N6Rgq6OGCkxVuf58tbuejZL1ONsnWem3/ebPbhSNKT8FDKKR7BCOGgqAO + I+2GYR+8l8TtpxSoh6wdMaoR0xMjr0p2lru5zGq9mSt7K1lIMAuH/7aabDGbr+9FIY1KnsrTX0Rh + 2Y97LBvnj/wb9F8JfvLs8uL8bBTGAeGa2nOQKKgiSRTSQcH0YkoR/wC73Gp37D/YbCXZJ2b9oaB8 + sYYSlTA0d7cQ0zosaeNpog95pKiHbJm2/cybvhL7dFaWPcnZaK7E8irs2+WD5PbRRn38XMBNf6Cm + 9sRglAZLgIll/QNhPTyDeLtl/YOQXKt/gKuy/uHjP+olQXzPqZY/vIhDFvvjOGLg/yqHeI0k20Kz + gaxtbmACNMAsXQmYx3lpF3n27uTsudSdSpmikEQMzKnzLeQRq8jmv3W+//wmQ6ljhdyjtzLhlHy3 + +FGHizDTWSteybgFJyAKGAkDVnVKYuuTxndq1AvKgEk+rThBS5nWnu/7QT2OPGx7La+nXaVWrZlN + RFFr1ZR6JWeAqTIeJaMi0M07DOaaiqCpKSGhl+p55kojdGC6FxUncTCM/YEhAqgM7FFL9SRytTGM + 2JmU31uxfwJ2wXF4r7BsjA/a06Cofmm520c63ZHGJ8R9SXoFAUpP2dr4RTOGma8vSy73ooLixoTx + b/+NKR0gsX3GBjHmA4I4BLI2caCk6ZFKXBimTv9PVBTfJxD6AFX3IYIycGGbQ/Ignshu89Pq360n + PuSiCLskXR5owR2t82o5MVY5lUgQj1SjI6LUaEp6qdH8dls1GiTX1Wh+FdXoy1/fN6jRoVtTowm/ + 7pExYSyCTErYgP9nN1/NZ6D2bEC52Qq8LlrUEvNWvq+dC+2CLR9Cqqou+RefAV+S6Xwx34pUtXy3 + TjfokB2belepET7d/z/V+BjYbm8SrkVN5/kaQjgrRLHitiMMJVThLfnedZd8S8vYmBpIdrfeJl9T + 53/OrmihYUVsmOR4XBnL+hjsP33VYuf/RXomA/q2DVemIWIkGfXC6o6x16n6dOO9A3g0tdLkS9TM + aqhgvVuuD1CWqK4Ncd2XbtCvNkQ8Yl0bgg2YtSHimlSQNLRrKnKDM6mLCKqwpjJ1Fdd6s/lBnBv4 + AzQkGkQyiyrAAvd9KK+2m3u/kvmHkdruoY8xBbJCpW2nHz0ebXrJquqT3tPjsYfz0VoRA9nyl0VM + 88ZH0UvguenDGi8eseaMxwZMxnhxTXKXbW5kNYFYKdniXhbJnZ+P7rJFJnG2i1x2jDAQGrIoitzn + zpLbK+IwrHJTX4PkhrsJZjF5gQR7+wPAJTLqB2K65Ot0CiiJld4KAfXxQ0bj1Mw7LzLdrXIo96A4 + ombPh3pS+w77pjQJPBy1esfNt9OSj1CR1cT39MR/Q+hLQvrNfHzGeurLJsy5jxdxys9X37IFnDn8 + HJFQoAsFgVm2xKu/U2fP2WZKnNlmiuk6TObluW4oLJXqU9O7dPp1nc2bZl9r3QRFQKyqrOEFdC8w + GhIlJYfZwY/pRba6xZtmuw1sh3ubsN6djyWXZ8QPkQlxctFr2I9gMz/qQAz8EPevYvS4FfH1KE/C + IxNoDcFdG/kqzZ9G/kvSL8sfH7FN8pcNGDn+eE2ei+s1ldn+lb2e95jv3dVNk1tmkH6WLHGXTEr3 + 1k9GkO2IFjD1XyX0/gGOQtCsGzrZeAIaB2B3Oq8rWRz3DyufUpVh7RT+c9XcR+awCzGCWxvEphn8 + mNDIankH2tw844dw1M8zL5+xNjhlE6bFiRdxXUMcLMvvF8CTNb3P4bWqWfkWt5TbEiDGRFqgvnSn + pCKHXuBY7E+6sc+il8YQpBALdBVZb7rjR/PRTJnDJAmRgKK3Iud3rdT4DTMMzkHrY7CUFpcIY7Bl + egyBiXJoC907ynEMjQMBm0ehBPCjQQ9yRrzdEsBPSK4B+MFVPN2v357SOoAfjaMqgN+LIHKpS8f8 + L5EAC/vGuaBF+TJHuyEZ8Z01TYXCNuK/Adx7rrbmyHHE32233C0QE0IQ7olx2wqHMmR+i5zKPIes + fr7h8n9BqXY6HmEP+VzJZoJV6dvk+tPJ1Vsotc1FWetq9PYKHJKYqvotzYHpOBfO5DmwHxSWTQIb + cXa74XMJq8j52Ml/Fh7em3T7Hd4C+sUFw30oGT3k1+mU1mH8qmmyZtZH3IaUGfsRP0/iGuBmc9TL + FBq1ET22CW103hoEWy4lbUVzMd8zWFxNF1HfohFFkK+xNpABIljvPFrJByl/x8b8DzeIonaKlUaZ + ou590i0zJv1kNs2bsep3Bq9RkV+jrOyWL+fw6Msur6YQBbFbY9CsCnOu9BIRKsprBQ6YwnLgHcTf + Kq1RcHy8SbfAKvIG+G/EnL9OZ8AkJ2zOvH1RSCGvh1tnryHxJllvsxvYsQSOPxRUOmIf0ECJVMC3 + DhDqwXOgYQeRfiQuxhC+X0GE742Gh37rdpHmtLGVr4IxemYf3ecYY8qVmWfzLPFdRsoK8eG5GOjD + 634X20AAwXwlHJ6D8wX+FEkX+3Iijij0sH346aRVtERHB0oDQ1/bp5NL/mGm6fonWZeIC31xxZeU + vVqJt1uplVJyRa3Eq5Jn7uNfawkKLAJNvqxV+gDmFIYkHMMyUdD/n5P5YpKspsCZMoNdUX8KNSjZ + F11Sr3SRsTIdVKKuQgw6WyV/1Q9KkrfFv+pZu0epXK3I6XuWakV8K+gy9YlHIvoEIQtOswmfXFxb + hyJEUPw/5GvPFYxk8gPO9RGvXvs1qhzzba4O99GHGf8kykuW85snfIFmU9z/1debweKcyaDE2yvI + 6OYzQS9aPar57gZc81zQ6/KsKM8IByaoViZCBIkKPHQ+q/a+ZIva2muCZ9r/lE35MVIcNL+5BepA + R83x0bKbc4mHOBsPOs+q3gxuj4vt++TzpbbF94TpmnChiIsZZ3cp1HvfZdOv+3fhTghK4kZC4G4F + c6I05IelncUqJOD77KUb9vEZ6mdsgwKqCSMqIC+WYgHcNID3lfGuZL4pe1uNuOF89Wa09xGjaYgH + +J4MjQ8Uu4tISQq0fYTb0UJYd29ijMyVK35B2CxZJrcA/zFf7mRqh43+bi2sRxdDmR29TOdZzzyc + /ZACj5eCYx8qfKTY5dMKlgxaKymp9M66koP2SEAlGmfu7BhJMnlSxPjEO0txpT1qAAf1cc3sKWUc + hIVzqDpELgoBi3S11BDYN0NVN8ai3uX3t4Apa8+Gg7dbWT1ScsXqwato9Xz+8GvN6nFj16xuZOGr + CY1o6LIxjTxKZX3jUvIJjRZpMsth/95oNg6u5b69eh+PR6e/n5LJx2T6f5gr/f70kyf+WQZ2kYnc + 6Yb3q4UU6s9F5eRGARTWeb7nSTitHphAR+e9KMi1mGi2i9inLwUEbQ+yC3zGmutCNmFSXeBFnIqr + dCbNafEWvL1SmhLMnVnKz6alkcXlLOZr/ic8KuAvqQJijDEEh8ten0sq+a9XXjwXhhgaanAP4pQD + KZGWAi+3+sbfb53uEdcj74p2mCaH9TkKMMNZVrnDYM8GrjgDU0+MbpJPM/gwwiZf9uvoUNBS2gyi + YYGshbnd/QbQEs3iydCJ9GAyPf58dyMS+8W0SgAocZvqfx2p5KjNTZVHXFKGZZh9Elb0Q5YZK0Uj + 5ZQVfVUCyMyXROZra08B+pxUdpnz+fyC0lGlvliNtazEUUEw89HRZ5Du5LM7BI2hsaTd4EOButRc + pJr8uF+I3Am+kA9IznQDQhvIq+rVomPer+lUwOXBEkT4vFV2VIHlkZGzgTmoPd/FeE3l84hwZb96 + cbuMmZ9eCe82fHh1iPUWNnBZPYisvmM3q9r54TPxz8uvouY2DZuWedu+BNVfmCXfVr5gN8MHqRK2 + rOR9zMJg5sXGoSl37l8s8SMHMzd15RJ9x/rWb+Aj1nhq2ICJpiauFZAKyIuQ/sjA61A+/Mte2D2/ + LrUlkNJ8ibEQoq5dfnQYIOSnQS53rL8t9Bv2Sq5zwzd9JCXV+qEezQ8F4SiYNJmL5lR9Ag6RInqI + 9D1YrUgXU0AOHifu2HxRbd4RJHxcJtyU56bIIZRPQ++DnkplJ/Fp2DMuVTxkm8yuGzGy2dVVGZq6 + +nQyycEJD28DJjy6CWC7kwr+c2Pj63hAV6qkK+Y5ufhTANDEBEvcGLpEhQhhRENaFh9MIY4/P98C + 0MI0u13Nte8FZH+DuExPc4Fhshq0NVLdHY++zZOizxmmc+sWoLnF/PZYf8jwTXfn3bsYsd7uK1rv + gGqVsB/wXeQnMT7s4dqV6uThTexD0y4cZHy5HG3vlJT6BjU0222PN6f4ULDOoRhglz+ijX0hqwJz + VFnzB1LF+qTklTwCe9Mn2vt4pKzBahViUZH4+5srNwztwyt4u1V4RUquhFfwKrp83p5eRJXwCol9 + 32SVYd6rCYtJGNAxiyn13W5WmZsNl18PkxTKYAW/MWwLlJCYcEMvqGWAIS1HUlpikvnv3W51Ozd5 + /1xGW1PAnm4g5rTK7vf2/a9q7wOAzfn0rlqIAXeZYRoBycVNNq5uJbf3GN6S4t5fv20QZ4AM8S6v + Ae0j24iySP4gYMtmuJahsESsoPfJWuT9pfwjpD/u5jeQgVZ435syqESi2sX1tedcf7zwdMSJRmSQ + 7HOJTaXfu+fzIQmQ8G1+C+DZohsqZliT1AZUNFj6NsVzy/yS1v3wqIeMBuVggwD22SvBkUsH7uSr + 4DZZoCamGHF6JQMfjpu9h4ZnjxGJ+Tv13cK2cdvHn04mdjduQewK6wQKxsQ5KOJGvUaFeYIf9pfy + flR/sCO0AgKwiKDYgbpbHopuxGOMVoI69wu+oXFrIltM2Nib3MzzwhdTaqLd/6XOcVF6/Pvplev3 + SJPA263OcSm5co7jVTzHTz9fgXOhcpCLD14+yP1XE0oiFpIxpZBvhwf52xyq/uYF42tTNrg83U+3 + mygY4Gx/umev1Wi8LrAD+KGLruXVNgEO42T0frry1mrTFbxjYLHmu9vbNBeHacLtbG59wZRSKHyl + w7VMCOyID6sPycB3BdFCgDXUTQ8dzs0Wu9IgvdukWFP+ZOkSBoYNVutYk/fQUCD59Ek4KR6yBvdV + jZjYvvKqDMlmS09lMxk25udfL/T+qRei036PjsKCQEeIRaeLOwiFDzyP51R2sLrDZeBRmayOk4Ju + VpOd+VhVbCCVjoGkspz2oOyx7u7HjP/KJgclS/rZ0eQDHDv7RNK9IjGfP5sO4k57ArqnOK2YK/Zk + bqtuk9t0citqZXCR812Vz73FwZClHq6my8nl5IYP6QRdMlwJzCd8fL+lK3PBPhCv1EP3o/PQihQ3 + cRDYK594uy03MUiucxPzq5KB5OptAzUxlLGa1MST0GchpeOQ7xNsPzVxENSdSHrgvijt3sy6pa1Z + tyRmPqXkCSqcBUUx82KkKA4QS6b+tjYb4FNY9mpyxiqi7536/egQ1SO2EX3ZgBHRx2s4STfJjMng + vuZKLeN+SSxSxBSN3ZgG1H/uXP928evoLUEi1aIKTt58BTIdIRk5VZUydWjpUHtu7kPUIg0GxRRT + wzzPd8uslf29DZb7J5cpHZAawIiPOrOYJPWpZAUhNyh01HEQTHGMvp2W1zk25RXoOCXKP5/QfVD+ + 4XZLlH8huYbyD1dxF/h0cl2DZqIElNYKyj/zICA9ZhB/UnRZ3za7byJftAG+v0OfHouf2u5VFBGI + 9P96dJfwDVEUrnzjt2a7HKO+d7tlsuIDvAXc5Nu84Bbg7/a9iy+rrt6bLhrPLMC/LmHfxMz1aY0/ + a30vh6FGbmEiFYWm76fEKkWjKGTMrQreR4YlsO6tOqtPZXMcdM/bQIv8Vm4vo8tafJsc0sbZpbvp + XBg9+3Ry9qL8/uNaaMfg2hK3CzuuOp8gEsYnzCLPRr+/PQmev7aae/nuRk2/2Tzns4+3KxxTCbiz + 6sOWbmznKV+TJ9p9RQBAfxBfg9+Q6tvwda0OkcOltYVdGGHiXP3UTSdW83L/dJP3T0olNhhFhtjV + hKajZkeeTvlIwSkkJB5GX9z4RR+kpTb98ijFwSch6i/GfLd+Y6Uc6GI/6n0I+vGF6Ges039lE2b+ + L16UEM2LGcNjf73hOi23FhIjg7zOWcB3ksDjJgO/f9LwgM56A8HVZ6A1UR8Y0GhQdIawUUqpezb6 + uRJ3LHL6geAHhbniemUzA9xki9aKt0e1M44HMaiB4DA+VqTp4zXPx/2ny9EoWHyNUgmuyj9lH3BV + uN0SXFVIroGrwlWpwF+/raNgucyvYauSwGMxGZPA91xSjXOqREA1GEbmSwE/8lqUeoIOZAA7Xi+n + PiI6Xt1NSbSWyvinPK1jYPUtDicxDf24RiI7lJuqBK1iqKw0aoUpNXqkBYk9gP9rMf8CsLJVT1xE + 24G9lMBSpFVtjlJLvVjmlExgmOGPoEDEtPxu4tvcbrLv2ztUVBMoZCmZpirqisxrMNFXgk6Nt1+U + 1OYOTDalvLI4Dh3XDqSmUc08GtzGQkCr/0jSb68zCFoXe0mbnI5DIGCkdKbwL3MDRZQHnE0P49Ki + CKHVMD3375CPfjQwN8ZNuTbV7bbloXJj3EgqCv+er6Y/u/6BHzNFHZj73nvp9iwEw2esVUHZhKkK + 4kU8Nk5Pr7zJp0wXNjvVC3r7Ok2+QIV1Saoo+vICxcBBtR2i4TNadLEGUDyGEAKQv18Cntj70NGM + HfYVDR4mmC2hi93FbA09PdAp8LOUuseElNLbhYvJrTgBf/18fIgYRPoVkZu+ZRYIDhwUKf/I+n5Y + wr/vozF58vlyEDgIC2ndTgiJRVVGQjwuWGwtsbNfIcGEGxzwnA/4hG90R1TWqc1XFJ/9fnZFQt8+ + noy3W+n4UnJFx8erqONfXV/QWkDZZZHJxcuCV5OIMBKF44h4RBEomI5VSX1pJvOB1pfza4XeiQr8 + Vb6k3h5fOj5XiFUSTKd60K780jAKgxrqf2nCAFnpdr7dyex/Td5ZboGFzLdqQevrSbrJbgTiDgIO + VBX22A1Mp/Xby3HZAe7GNA5JVJFaKB1FyqJpWHiE7uuoc8gnc8QkUco55dupI98CpnvT29ZXQRu8 + DoNYrjjIjI5hbk7XqfskvLhBQ9fbZm0vJdGPEGFDz8ieuq6PJx48jpuWhsvtfdrA/IfbLZZNL/+G + L1G++YTqg/INt1uifAvJNZRvuCoTua/P6/6NIAhrKN+CUiYeM8oVTLn1XZtW9Gm2jmUdixiKtkof + vjLT2UwG7McjQTC+zL5BchoK0vkSmAahPtvV7oascUxPZ1OfrUfPprvFYr56XqGumCVrORWAa/su + BQMbMKVF18SJjKnl+bzuPyn1X88Tw9FAolYmEMpHhivAtfqxvjIN2HDPC7jm+FD+mbaxkiyYfJL/ + aycVf+GK0vmtDbwmbmg2ZsQzy69R286NGVEpp2PRPpnOH3UeOrD4NIJ5QENHvnHZvjbHxtoDAx9D + nExHfuC9DR5N/Hu0aROJjIlfjGVmdf5ZPXhI093pN4N4xgOpNbN+WjOz15pZo9bMtNb85vS6jpTq + R6ymNBNK+Rt7Y/53IMyjutpc0bxOz0696JfLk2vCZZ2SSJkumDQwNpdxSa3ij6vtkAu9mqc5X7aA + njTJd4svu8KPiwfAm2lePwAOT2Updu3Ij+OY1XI/qwaYQdzFjbS2JA5Gw9Cv5oL0VrBLO6cU6Fya + w9756oIBTr1LLjI1VvBGJU+OZpGofCGQPV9xQ3+dbQqfEL94NV9Lqqr/mW6Iu1Z6Yl4km8CmIFzk + 3L6fPiPPC9+8mWjSPWUcmKxaeQ8j5ojwouvX1d/DgEF7GQItQny+XISJrcex4E+qqq6SDcwi5P4k + bIRDMj2ae/MnzRl5XHfWz3H0hBLcm4Q9sjHxdktwbyG5Bu4NVzX6BKulYxKXelV07xe+x3dkfwx1 + Fgp+QgSL9F6H28svcPEuhfgWH5cb4SaHEZeb19kqoeuJ2OA+JctwjXokbkmwcaknJb9mBWFhmc2E + Dx3klVwBWyDZxBDYa60Z5Ki96cy9+r2SKTkfqzwG3ghohFA1AsFHeSa+nS5ZnRtT3WUegJHXGlZ2 + IxaE9bCyMVyNOZf8sahFaOwxj/m1U/Vqv8ywUqZRTpAsd7TEDlkLX+A/YYGXxtR0PXlx24GrWnH+ + 5JPIEStMlw/HIeZftqO6N46q7Zl2ZEDEw+weNbU7D6BB9+ghGDbCSEmoz32ro5QvCnGUXh3cCY9h + 4atFBx6cImOIwMsgKEv8nIs0i4DnvSS9wPT0M9YsArIJk0UAL+KxFUwkWP0XcF1mEzr5Kmi3ndZf + lOVCjmAUSw4BF+Gi8f7civu8OyWDz0JDIB0HJipGdwsNQd0jJR6NL/B4kKW9AfAH272Gqh5iEcLt + tE3Eg6HXGJpRahJMapOATgaHLx2qyQdW7lVi1lEjPCwf0UC7rqj8/P3DFdff7a0LvN3KupCSK9YF + XkXr4rc3J7UoMondSqqo++oFYwFj8ZixMFL4z21lyXcbLr9eb3Uk/k0N224Pol2b9hy5MaG0FlwW + MDHrdA08Fm06uUfCNn+XIXXQgmdCfF+cZL5b+NixbH7YY2BImJni+aPQyfYGU6sHBnwh4dJq+ZpW + L91byMNrihFFYNqjexMptDzIPlwc/3bDJEUOhlTNFT9Mr4OVhBvTUXhoAyVrElcna/pvopfE76df + q4es0zVVI2a+prwqwfshn3gDBvfJ6ZVm4vp+f7PjuoCBawUbjRrEz/ffmdkEKNshc4WyfRx8shxz + RvxYHPdNfalgbHUzLxye9dhXT41IEMlpcjcEN+EQyoqaekTR9wYBe+kG/eh75TO29L2qCYO+V17E + aZffFUw9s1Qs99t0VWWEsLur3CKw9hKGdWEDQTYMxUf2eNPwiWAkBB4u4OzHfAZU7Ny8OGL+YjnV + 2UduJ9vryHi7XdAYJVeDxuKqpNe8vqoHjYlXCxq/YB4JCOAhsBjQEmC+f/7ON6L70fVoA3si7/xu + qdyJqC1/zjctBVHZoloSxffZ1jxBKKDzalrtUCk3m8qObviQWdCeQuNGsU9pVZrS5/i+DlU0cMKA + q1gHCEviPUrbM3TUW+ugcBWdWfU3+8InxjWUBU7Eq8iyJq3WjkeaoV46lOFWjz9SyrRMNnxJLdLc + gQmhA7OUoL+Yj4LQVfedfa04xBR3m6bB6akD9ZE0SHdg3aTf+b9gDktCWT5iCf8D7JRB0m3cwhHU + WPI0KKbyUVYPcwN0Msc45ezNl2EwfGV0t55D2iquodScMFnGSkPSp4wVbrcsYxWSa2WscBX33bOG + ZB0mfEGVMtaAWyEsHgcR8wPW7ZtYbLj8h/RN/AmJjj0aEAW5hsaVgRracyU/yTKkoSF2ByD3UOtQ + 8xxR/wN96faE28VnrNF2ZRMm2C5elOvq7clnqIhNeac06nvBIVjEcKV7HMHDwXGvtPF8aTQF+Lpe + hJB+sJ7L3qL56o5vnltRdVwbNPuKu8Cr8x9b2Ab25WEsKjdQf+UeNqvaxCNZclaVWWRXlTLDbQzh + w4gKhgwNPcBJ6/EDwYC76F8lcQQYNl+cWAtxeUXC2D6jFW+3OiSl5MohiVfxkPxwdsKqh6Qv2LjL + h2T0ahLFLIzJmOvjoR/VaiE02vr9aMs7lCz5wpsKvmE+AeGdV6OTCbjb5wJXZ8q/VQ70q3fzfCtS + s1M++bb3izImr0jtKCDfV6MPs4SsR3fZMpvNlykiEOBlup7wPxn/Zcr1Gfz163pCpjYhZQKlzqsE + /ILSpOT2uRAqT30hunpQd/XcOBoJMZN7Ls9L1VlRGATRQykBTV1sDkx4biuQnNHHIWSXUoaDgG9+ + 1aBHTXI164hwo62jMq/U3a7cprbSbNM09fc25PzpV4EDe4RS5gKGicR8aAoPoy6076dYDVE43wgD + MoDcbg+Vj/5akaQtPit8jC8HAUiJ2SxiF43z3uaFGXE9cQwKiqh8vuCTFc6im3uR6bTXZnfkNtXY + iy6Q9M7kpMdT1B25zbT1v2f47iBJrahvAxS+kECFf+K38Us37hf9kc/YBn9UE0bsR17EYz9ZCJ96 + 2uFab77FkA+BnziUqB0urqeUb3arbDEISbPeDAh+ACXbjm/FWvwTCxZIcXzWIYoF+NAVDFErxdrA + mB+HqvIPw0cdxuIV3meL2/koWa+TTbJ9sAiK5+IDbUvk08nZ80HgLfqGSB5Ocqd9E6rgISMfCLfX + ab/woX7KNoBYNGOEEPVl3MBgEShSjPKu1Qj0WY0YFk1QH7L5XEXtczQ1z1HIjf1pYWwYch+3UqgP + 58pAoLWB+mj7SVLst5xeYjvXT5FW/Ya9JGG/rGrxiHVSNTZg5lSLazLwXrz9mr+TU6i+hb6pdJzT + xYY6U/gDDnk/xkPeJej9XaVQe/2tyqRqGhJiaEQoLFvwvosEBm4o8RaWGaxKa/2LjyEzVfWiv9yw + 2pzZKMiFYYH0Qk3Cegh5GpbTk7VwWgaOuR5mc7d8SvGP7Uj85hYdlFOICHO9qEcbodv6hcEOT4HA + m89HC5FDRC1xm9Ot8rvQtC+6Z6PH8A+AsJafdldndmi22rKMZUpWujiiAyAGyXZKH0dyOh4kj09/ + JN3FYqAeEhy1tWLu9K9XhPXgBcfbrVyvUnLF9YpX0fV6fX5Si096IanEJ8NXE/71It4HP2JBRJTr + dS1U/0wUg6fn7/wT6ay8nif1hBBlVRTXGsN4EQtpUzhw+LgiHBWGqlT27/lxTFvckTEUp3rEKOPf + cd0aohnwuVWnDEwSSbNS1OBfLsGFJoyTpFAcPryYyAL6m/vR7WI3zeBs5B9Jc0cFAfi+RP+UTd+t + 79X2BGfA9H+KVC9//ciPA/spjLdbTWEpuTKF8SpO4Yury49VbntKWRyZc5i+mjDiB6E/ZiRgMemF + IscnG2DVGihyF5v1ItoDY4HP7UWRo23Oef4a1PdpzTl/fCsl/KTY83xW964fCVXX1kALZwu3TgVL + dQmkuRLcb1uOQHRM4vBYxLqG/toC1hmzwxHzUaNJ83XqyP7XPQsNL22vwvH+axWuTY3pdPcchX43 + RBrFz0bHCBo+SdtasvKVFj6bPwWCXncV4cNA81FNDxK8A35k0s/RrB6yNTl1I4bRqa5KipAvU3la + VOxDUZPvNF0cfX53fn5+qr/Xyegm+1HkZ84KlhAu24EGsOLX1wjST948gyicV+9kCea62X7uMqDr + tbM0rDfRPMR2+8ZPScLqnQN/PE5B6IomG0a/cSx7Rac85OEoG6jzVQ6TDLxSykfTJ1GTYoL8myv+ + gewTNfF2Ky1SSq5okXgVF/nl1WVQUSJJ7LMKFLEHCfJhBEWkHjcnve5EzZsNlz94oubTTLB0aeAK + xSBGP8s02dxkYF0cU/yvpvOxAa4DqkeHrUUZICd6sPpCLiiOmgWNxU9Qa7Dixuc9Nz7vFyPgue6d + vj9sCSO32GL5IQ6uX6RM4Z3HPZLB8XZbvPO4ngyOV2We2/XnBrjzOKwV4UQeJImPI49vMYo/m5+Z + fJHCGX59fkVVVli+rQOZP7lE8PI5VsGcaqtFD704CqOgSkbU7BGVjsG0kjflmTlv78+7hYuCvQkW + 7H1Jttt7zHgucn6Nkp7A81tRp2jATVJAnbowoBKv5xtawo/6dHL27MXzkvpVIM/qZI+8hGybAD4V + Fvbwz87Wo7ZhyMdl5jYu9VYG6MejTTKbq1A8N4hFWvIYzVC+Zvi/b+YL2FAgn2vveDgwnwtkdjR0 + e4Un9uiXXtQmqfzRa1I7SY3+CIq1h4n3aj6IGn4c/D1Ri0eIgIiJL+y+7unRcUQfFKR4CLo+1LKb + 5lc/O/tA+2AYVX/YVLEnhoVAQn4ewiN8syytp37v+qBUVlKOD6m4sqMH6ie6SIb4Z15Px0fxkG2Z + jG7EqJNRV5vj7dV/G3KgCIZ4zHGeBPBtnzyuZpNBfRZfpQ+FXj+yWvmEbdoQijdShsQlVB2XyVdZ + vQRzfz4DRAmJJSU5ZknoRzGLnzu1Gy7g2epdIBARByClQ/haEEl5+z2bFBE6rNDB003l7uX3+TZd + jp7Jup5Nukjun9tvMQM0tLf2aPi3+dkqQWCQE5RUAtXv0kG+f3j6yevT0TiUkKNF5qjM//yWtuaQ + dnERc71FqBsNn65f10LmBfWPBFsENN3FddzePRIRF3U1AUJ0v5gUq++ogWTERSMdh2wi48dpgUgu + F3dRQrdOtnffk4bzr737DECX62MyEDnFI3hLtb7xRMDEcRuobDrpKq+4WK3qJ+3F9VgEXGZQl6lX + q5wHh8v3glCnJZRm6eHSWFla7Wgry90/oL3E9elmFJKGPSo9eBT/RHiTSo0KjLCe6/WP6rler6Ae + b6Ie03O9KnIY1hJr8LDTXy/P+cIQO+23NAeslHLYTs0cMyG7aBGRxBim2BDM0JFiiqrn5lwdM77u + EtSCsWTgsG3tyLoD24efOMuDOupcedQ1feGapP156Wpeh6p6uk/+E95uWz3dkP+EVyW00/m7hupp + SurV00EUsHgcBXEMuPD1FL5y6gee6Iqd4PP8S736uDENCFIf2tJqIg9iD1XvcLnVcvS4Epk0c41M + CqC2RrRv18S8L7VSyQjaJ9X53NnZ9PzdxHszFkWsAitrtUpROVOv8dooo72S3Oq3IAkGnauiX4Tz + FXb9XJRd8af55pHDG8z49OSPOPDFi1rYAOnqj00HspPQkY3EKg+bA2215/SX0qDbOm5zAs4ebIkB + SQaOhU3RomyoAh6GY4BJwh/LxdlvK2Y+nozQPZzYDSul+03V9quLU5h7RkjP4q7SU7aqRdGMoVzo + y7itznY382yXNzjMyhJgl/ZirN06rO7qP4ETXZ+0sfKPMo/rWj3do/IZW++oasJwjsqL+Il1eLys + G8vg3snH95GDydsmkurJ4jZwEvgDvKVxzDDbS8K3zCBscpctJnwdfOVDwf95q94O96NBq4YDPvfg + 8UozEwQXEhuqVFk7WM9sCvgAQVvMNg221Jd8DMun0tUMp9sceN74IOwWu+OoIHrJ3bMkorhd1k/Q + 35+A5u0MzVjgh22ixvqqYFfVi/N2k+3WvW0WAS5k1dBd+qOzHftq0uHa3IOriXMe9xouZX3P90DN + lvF+MSUXySrmf386mdJRsuDXJ2TMJk3b2RF1qnJTZxpUnLjvgt7Ht3rIusBUNWKWmMqraE6tN2sq + c24Mlk3H5Nw02M8u4RlHPCkxJRDF2WW4xeZrfmOKmuhsnh+xnerNW6QN8dV9DEy5GzGk0RWKGPTR + XsRPC9pjFWF5RA87lP6wCn+3K9J1leewbbIOQrszFAPZkX5ON3JRbzbf98h+DZa+wAh1C0tHLbCK + 8SS39zTnCldR3bxMoWx/fhDXldpcRSnF7+8/kjCyz3jE2618U1JyxTeFV2Vt3uVnv0bNQ4NKVnX8 + 6gUfcuYHYxK6IksJdl/eJgT6wDElMKVUSrKsvltv/QfMrL5qS1kMadwmixCu6AakmrMIgcXvCf/D + YDhGJ4+Goy63EbpeOxJe5Prwa7ONRcYtAQjcNaQyScL5TQrTD8OwokvJbfXdCHPNjMm3l+Pz9+fj + cukr8flttUo+GC2FlwRA5LM04SJk4LMF147b7m35mXwkXeKzKuS6cr5voURrW4NwD1y/ZdSae71J + J1DTfj8SnNcNceDkCxSprO9SqFfhEzDhSzCvvASfzu2NepFHq0mgl7svpRxQPnATNc3k6+WvC+cf + DOz/n70/bW4bSdaA0c/8F4y4EXesaFKNKuz2J1lep223XsmemX4jJm5AJCzxmCJ4uNjW/PqbWVlV + qMJCFkjIVvecjhnLhoAsoNZcn2cNNsWkEHdUgRDyFWHOr5fwAKZ6IhDqdTG9H+o1YSaQwnOYQprT + pmMWHeLU0dOUNH7KBkfhEipQovHhJXRZfs2h52Titt1BA1z0uv6RBdFAjrY+JLPVWOVGXMN7WdNH + W7bts2iaT7qFucUwCXfggUPu7AaFJcSpocbV1kWO6K7DF3b9nGrD6RL7jXDHNO9Uzi+dMM8CspVU + tY5SfgLD16AnVyl5s+46u2mPwu31uTKdglfMO2VBN9NJPeRqOulGLNNJXaXT/nrzWSapLbL1RKS0 + F/N7So3Jx0YYVaXXGmFUmaCWIAmdF50MHCWoOsodkvCt0CrzQxaSvy2iKMOksOMM9fOlF6SoEFmo + 8fG/gYmxKL4Wf2tt+XMxb54Ibm62P49Tt3yIEAcdR/vgMQh4TEtNsk6X1fz7GS1w/MSmvl3g+BhZ + AK3r1llD93XOrxedeqxbxq94xDnflxqws33FNZlgurxVkBjLNbO4zmk9pZHHvDQ4GUy3+CnLfILG + CnZxJdfnPUqqPIPShc/biyRW3UMlIMJhlurDrCWfb4+AiDwrs013BDx4mly2DbqF0tK092dym0++ + LItZUzZo2xm7Jx3SLbGs20HdrleFTGYZia+cztACdB4woRXGRKc+KVCzW8P9Uj8khYfWJ0yrXKRx + N9X6uDv7D2MvIxS9uoJ9xIv8NALp3nPzrEm0zkEdzX/d3K5yeOKIFL3OUv+rE+t8XTbi+3G3vDr1 + iHNQlBqwY6LimioXwbEqh6oyzyxyxOqwVu69WH7hsfXEEq+II8Rn/tFHSIcg6UOdU0fntTsaTD1G + 4v9am9Ghvu+/7L7nfoT99XbRUO2iMQ9PmddpF6VHXHdR2YC1i9I1uYtSd6PtuYRJgL4oxXV0nS/+ + U0xn2X/yJU4JWJlgKiEC0Xr5uyDjmBc3ZhuwW4L6LSCFeiWC/dnFfQGryIBZWmzRc3d4ssPPzpVQ + EzHS5YYhnKx+N6xy+YxzyaFswi46pIt78uQ/3s7+PpwW6ETW10yRWFkYRBLN6qCasFZ/5c/nNP7z + +FkElTQn+Fzyq/zMqKia47GuBYmCjpl8+hnnWhDZhF0LQhclvNu3WSRLaysgvuowZsMnby7YCeGN + F/asH17B4wOUIbbbyJfKqe9XIL+12Q+n684ckIcBxfgzI4GjT4aTsoxBcv3x6BhEYM9uXgsvDmls + CAh6KHoDBnADc7BLjAbEiK+eFguBe4Yf8IDxkh1VnH9CUHIvTioQch13wZ+xcTshoe/X9UFQ+Rqo + 6T0OXHOCI0kqo3yYddcH45Sf6txA/zzsfE6oh5xzA1Ujdm6gvEoHBPGvwydlwjNZFtA+EYmSQ/9k + 0HqLvMNuy/cjFjKZLMjJGbqnIr2sE9Tbb0i8L9vr2f9uZzBoDZhSDmxWO/NGfRYxPaAZRVCObM89 + fhbzhsL9zg7+ffpevWP/6tqh80N7miSbzpr1qx2MfTuVzDQ2arTr0kYyJVnFfY+PDB5PvxswAtYS + uf8OSra7q6mj4N0uMk6AEtqlRCdFL7IfnYkREC3Bu0uWdCA1ptudUh+l5ErqI10ls+Ls42teRZTl + PmcVWoLg6TgE5SpNR6Ef+KnMffw0XY5VEYPp3aLcx7PNDY8eLvkRdWzYBfzxNXz17sR/ixE39aK2 + ljzOA9gZq4iL1FAzwiIcOLwtoU/LG3x6cSHfMH8qxTW88GhYOjLyxX9gaK2suJIgAM4VSwoxoEtP + jiiMEgl1oogXBG/Q40ADLabkBagOcLVYzdajoT036C5oAmaq1ThoiQXsaDf3A3GLSpyDtZ8+GJ5u + FFGUWnyryFZ3qSzbLTJhpR15APFclBJZpO6OrltQRO1T9drxH8RC0KzNc+HADxPTWPf1/BB8RENS + ZEg6/ht9RO0sO01tOF3CWT8ha093x2FO28Gx5kl5Vv1Xl7btbif1zKnqcpS4zJle5O7UG5hi5Ap5 + J0YuuN2VkQsl1xm54CrpDZcXz3mdkQtXfoWRKwLtkCWjiCUit3oXEH2xAvmTOleRWjmf1dS2gZ55 + K9AzS/2Qc/aYAenDSBbh4XdY+8TnciG7TLlHExsKiCXh/TsQ6T456XanySklVyYnXaXJ+enD6xpd + nB9xu54nCJ+OOU9jPxhx30uYzAkGI2cymwukW33SaJX20+KmzhhnRwkrWm17GU7CeMLrnFldwcwt + OeUcNz7jw9j8kEakmiAJ2hrgURDwqKoTvxCQMMtstrKrW3jSVmgCazFJkhh0YfFm40oHj0Dc/25n + YooVKyUbKevoQ+D4wyfgd3fkBMFYGiggeQF9JTwCM0LavZstMnLlowprCSUQj7FKCoWBW99lm8mt + bI3wyMfkrJFenHw6UjE50oPnov6YjZQbPKcKGCPIK2pP5CgOcCZqXTlI/IHsJFxTRh92VEIdBLQG + UjjR4eBSGuffJ5QLedhrpJQMYsY18ZWm2V2GRGOb2d123tm11AuJxk/xiP2MbIOBXLx4+/4l7/Q6 + R4j7MWDbD0gMoo4wX/n0ORcU5h2d+vopV69+2Yzl1teXZeDX1JtUOkMTeE8pDoO9MfePAO9RRli/ + mTk/HpgnCFTKCgsQISftlLIin3FNWVFNWCkr8iKpKJvVUiocsE3fwrk0EyeLMJVFGmoZknl7Mmi+ + x7hlgPIwnSVJAq6AsiVO2v1S+CoWffhPkoh2ZyPBtAepqRfKCrMeRJFjPqPI4MR8U1kockQrhx8u + XdNhAlkg0jzyh+6c8i3m90cJIS968b0YY7eOD5KmVqXIaPzj1Tsv9NyNBbrdyViQkivGAl2VHvB3 + l7YlywKfJQFSOZnV/8nTse/zmI/8MAkSXft/LWLo72+e8F9OSudbvno2xNpjY/+bFNgpa+ibySrP + UJvcgBm6EoXN6J6dP/FBAuqOrzPxV3hI4VqezVe8ZnZUOZlteMskaiv4Dnw4CWrwltPZGD0rs/HX + TKRhwKIR1bUTxWZlfFuzYz30kir37cigSrLa1XaEe7N2W1EcdG4LtFJEMdjeDXcJTv02S4ujXyrw + BaH2ww77Mxzc+/UwG66wlGe20EFl0G0+3jPV4lrgcQ5wBisjA2ZuMDje0c28kJSFRX5DCZANWVPq + BUYCIEADBzt7ikOZTd5hEnSQncrsqeZBd9m1fexPZYvM9wloPzASgqGpLlh3j/rP9+2IxA/S3+0e + PSyxPpS1qm4jr1+2cQ9y7Ubk0PEbRrOj9J2nmUiL/uPDO56G7lA2dLvTaSYlV04zuiqhbH7/UPfL + eqixmK6v6OkvcZQGwShOQrbHK7uYg/QGelBpB5TXGp2fiR/zJifqI/XGch/sAm0yxKrcIuDJKeY/ + dSi3oEdcyy1kA1a5BV2jYZ1MN7Lu2QzKSgfQXKExPSmxb0+GT5Tv62Rg3oOAZIu1AfB0DqIHKF+U + rSWB5NnxCC6s2oRdDexA4cKpThkOxLGFASLzV8wEYxdpxPtVfauuCM4/t/za95jynJlnapePatnj + ji51DqMw2jVcNUkdYEw7O8j0OtTwydG535mUQTzinIdPDdhp+OKaXIcztQ7hbyvbYjfKQKu/xAti + ffk8kZn3XprSnJ+JnInv93MFytcyH92LQTuL3u3mZXJKyW9ycMy644l65E6w0kZ6TMrE0AW3vFa9 + JKg8ivKyLtxxHVbp8ZR0eMIyAoZSc+bJ1exk7OC96JBzeFgDD12oqXXN1GAp2J3BkE10+sLI/Aea + jmBLbsRRj5Bm8y/wO6W1wtMddVMNTM7Sc6yG70jcKB9yBnJRjdhQLvJqtWzvPscsNeXSbi3nswSj + thImjJgcvZSqXK4z6NQc61yWmyZ07IMCP8c79OQYhJ7yQfMkPGVdgHTUI64eaNmA5YCmazJ18/m/ + ZGHk4NPzs18/nV1V6iSHnyZL5g224k+sk+QKE+fh8/j7Cjao1fgzygLojOgE3f5nQ5XX05pJznru + B1046/F2R856IbnGWY9XSS9798dVnbM+CLwaZ33qM8bZKPV9gXkrwmrFXZHBnjPblIke7+7XdcZ6 + 90QP5OSp+WvzVfF9VmciiuPWzGdEHopYLfPZeGE4+kiZaU/tCLzmVythWe9F7oQOi6wxLViETbLp + bImLQFI2mo5SpKa3zOiShQjZWzkP0n8P3pg9OxLLan4vUiZuc3m8raXxg9+kDnNY4/jP2VpdGQ2/ + 3c4mt5iXnGFSnSCVRxkNr67edoBTQtO+RwEf9JBcoFbPQ4XBqNqw+lWHZwfjKO2T+BVTVozRFl/z + 6z6Qrp+oAg/krMbb9y6Fjlp1SImbsxXa34e6N3tK3O0hWNcfb3jo644Zr7fzz1swpeZbUed8sETx + eYGQOYKfR4lVRxElH754x3mHzFi63e0oIsnVo0hcpaPozfOP1eRDlgpsCfsoGkdeEvuYGKsOoo+3 + tM5gec0mI1qA2c1NXkI5fsvWOvEMI0liEzRttWfSpYVe7O/6MenJnc7hLSfLwVsVCNCu70ptN8m2 + ktqebBf2u5w8qyTXLYuVcmZhOEsAN8P/cQjXS6xZLyh/H4tS4AufCfo5ra8YGgo0ffXpMhZS/vjw + jqXB+eDV+4tAozVzH9R+rzdEYB8URCEnW08K/IxcpBm6F7gfuxemflI6I2nkXB58DHEhtexKhNAY + bBTWhYBeP+NsWsombMuSLtJC+ucLdKTmWWlS1q4ML74tWYUgtRSN9k6cpBIjIyJn7T4Ok37Qbx8k + NdHTTxeNGZkPUPhyUI3vsWWuajqWuV4RP/WSbvBE8hnnXC/ZhJ3rRRfpRFhsl1zZ3ZNiNs+nY/xh + zT6FsrA0a5LrlL4DkiUzvRTCICktAtkbjGCMTos+ap0u7q7kSPLGy+GY3Qnpwh/1k6Q/dHmfXy4V + PfPhXkvi3kCVaxymEV3+Z9AVBeVnq0no8p2tT3bbnn5CXR7oZIRsqd7cjexvgHuUPDcRmpsmSm9I + 22EoEwhg+rirr3S7YwKBkFxLIMCrqrDrHUue11MIeFJNIRhHfhiloygII6bz4fSuTSkBkk5kjlj1 + wyeRd3WiEM3x8wkdYTREHwLlHcDKv1zOWXK2FOqfUBEtzRDsuyG8oCHFVnLF09eNVedrYfDTq9Re + YvgEGUS2w5fbL9Bj2UmVLZpXfSgq1SwMU8xMqBWn60FGb/ZmttnK7miko/ZjP3RpoEYyY3k+KizR + tVce/MzxGdDEKjMtQJ/3HpAQeo/rIuJc6r54n/Qy975x7VGQ6uzP7o9zHlHF9v6p7bKT+zAiafOu + 1h1qBKcz3u6wCrp1WTfB7R+ttttIJxb48SnzOkL80TPOqQWyCTu3gC5KTsftWm6kLLXgmWSeSAEi + 5ZgO9t4B63TBvAHKFIkHUcIfBX6Tu3b4A/CiOEwDoQQ0Z7l2aKY1IefHoEI9lGL443GakpB2xebJ + vcxWMGnn+UgUMOJcfwTQSoHPyMLWU7UHTTCmKupLHgcdqqjF7W5V1CS5WkUtrkpN8PxlvYo69etV + 1AmD7cUfJSz0FTz0BY2eDWCzAm0BtYZsLFMPkbt7ppmFkPNmpkoeLid5vdLa9FTtobA2dCFMt2uD + /EljP4q9WjUEGOaL+7mx4Zyfnf1LTcmWQFsSJO2BvDiIE8+rKnFEIWQQud1lOB1qGAcxdHxbOQfs + k4EXtqiHhrvKwiwKkrD1VRMeco/9e/ARd7G3b9WnY4eUPWAOKyqQ5gCS91d/CPIHyoHHO/XgS1xT + /fEDnG+6VjpJ4oH8crE2d3WV62Ysvttc6bu8eU0O15T7cjMvsxHKN+qwkz9ySvdH4FnWaimjPOQO + S3+fAY/04mVQbF64Yss1uuB7QoILdYqrz16HXXNc5TOumqhqwtJE5cUyJaIMvw+nufi+m7zGkLLr + Rqst5BuPvFTlvorpgaGUlaFs5aBxrnFnkNH5TU7bBt7WHWnrrxfqd1ade08kCEEXFzqSBMQXkBEP + wgNzoKuvSxr6cUa7W5zPjdu9x4qqKKA1hQNU0NgckwkbEaNYizQTZwHP9PM349/fUNoqrmQBNb4e + DT+cvcDvhx8XQ9QAJkQE0vkECELqpcUNbO+ofBzaS32lQwQxiBLb/q598vg052Pb2XnilLjV8Zv0 + lPGOuNXyIWfcatWIjVstr9KpAxPlzRgXpsD1zoflxDOPnNa77HbwwOGBpPaIUtGNcIwUnWAJ3Z0V + B5GHOGNL97b9/vkYcTrs7H0T7mA1RFIXKTI/tMT1Mpsc8dqPQNWmgg2eqGOR1tX4Ohy6nCMdlBKi + 31DvgKU4Ilf/0DOqlxNP7oaRpxJYoiDqyk9Ij7imr8gGrOwVuia9wPNMeoGRBfjJ2YlgA74TNSSD + +qXhBdw/wIckkZbKWumDMEW6ikXmC7RoEN3XRe2gMon8NC4F7TC69wR6HirPAXPCNb26/7cxWIQH + vya6wpiStbfTHpezNyhHCYPiXxHGDQ2w6meYtMrSm9PqNG3Jlzue0D6Qhhm+nMHzSO/pirK6Y9L2 + Iv8H1ZuBKNI/9Iv2ATMbMZmN4MV+FzgDvN0xG0FIrmUj4FUJZ3D1W80HHfAwqsEZBEniJ+EoSOHf + Ep3ePrXJFh5vcMJJza8s93i//nIUrqcNP8PF0EZVp7L5BvPZzQ4wzgqibYtks4Djfk5yKZF/ohaq + nRHgew4vPXjv0G0VtE6ZuAWm33WxuTVfAm7ADWSa639iaq1AsEeRT97dr08o4cscrQEOu84U8Fjc + W6YAwUo39BR+hoWhfmALFAhqH5FO8mKPhZqn3RoTV+mNCWY/xgXyOCqf2+Fs+qII9qO4FKTqZw48 + 0hJW+hpxVJs3i65CCVh61/bzAyS2AdL2wNKbEJrGYR+lzjquUoaD5363BHb1iGvCsGzAyhema9Wy + 6FwkoxXSRUGMpm8vAjaez77kxAjIM8nwTXVPOlQ+/DhbBmywEX+KbOGUcMbTlKjCW1IeDif6VsPh + +Yl0hZhyX/Nf35PUmbrUnIGyP1OJpZRf8PH3S/m6Io4oixRdRAR+WIGFMP02i9lG+NaG8/xrPnfI + 9Xg4fd3d+fHQdF4/zsHemTg28iwGFHM50BI5M5ZFJ1NA7Q2+ZjtGQtZuXMf4hDPTsRBv8xzjJckA + O7+XjoF1PmESzXRw9eHs8qXeOVUnXMG9A3xAlLJIdm0vSonK82u+xiSa4bSYfMGnpluBRJF/LwhJ + /ThP6MFt7CGoSbkht4QbPAiS70dPUo8R4JQ9Wt17Wc1IUeDyx/NLHofu2UF0u5NlJiVXLDO6KrOD + 3r6qlznGaDKbZY7B03EcMh/eIQ5jWEg0fy/PLthYrzMNRTay0kpy2LWv57P17Z1K7cwVDr9BFUrJ + QrPPdfOtwluKuEJL7aawEOHipA3zMxV97T8UZN0+emTLfPODpCUHiIVxzONqiriUgjj/ZR6TFi3K + M/OFwCG1Uo0q8HgNzeg08g3ssmIur1Up6mW2ZMvh+ZgSu7Yy3WuyWaPtmK9uZmuRRj6/H36bgaEI + 48aXotw/ny+JrQwWk35H6JIbNCcxBUBNBoOGVvfZM7Av57kMi6y3881apCUpMfBzcUNLHyetsiu9 + gKjLeueqxi4UakhTX2O1fTkyXYQeiFgnaYyZ/kSRHj0y+lGy8HbbAT2ZwrRzlf0Ip6XkiCs/rcsx + 4Fqn3+4mDLjCWdf9+WKXS7Op6LGjiB1kxBHVD7289FL/fHzmfDKoB5zOBi29cjqo63Q+fLw6ZzXX + nZdWIVnip2MfFqKXjGAZ+mm0G4s0X0ETk3H234FGylOCXHoMMUI1waKysvaMsW6RsvIh99pa2Uil + uJauylRjDWS1BiUQV8wi/44q8OI741bmwBqvCGM4DiSZtQJ4tvxRs8UtrMKN2K+PUISPrEWNWYmB + hTvq3XahkEG7DX9/FJHdNXBHmKzezM/HsFSEhywWYirelIOD3V4IS0gIbC18EqbIF9SDDspHK91x + jkfizpytUGZ4ki1ezBYCKX6Xi9U5VNtd9E63H5VZ/PaOMe4e4qLbnQ5LKblyVNJVyT/xvGZIcS5W + hBni8p/+ghV/LBpxngQKTcDUEzRGDGrWy2K9nqEHTGu141Uu0VEIdFJOQyuR38wVgM4XN4neGgkN + qFSMR0IprwIW4zXFJEa8Fdc77LJS37aNsdRrqYRFXLEorMfVzE6wimojG1nNEOUjQqcfVyWVr9Qs + L2mrAm57NTv7QobKG4N+PlgNrcLhVUOvhYJP977Nwxe59eI+U1T8YyNrNYiKfYKQ3RvEXKWK6Vfb + xc3sxC64CaKoW/NEJdFMM6H7z2giCNOA7Wti8FiXxwDXvGbsCNOQXERUlbCLcaOcSrixqQwTaUu+ + fYsfeVdsmqBh2+xKVDO09SXCYFVWwJFJ6gfGS3GzmDVrIU3WXZ/y2zkNo0ZUeKcXdH54T6qUX3Ei + rPK7YprPD0hz6iSqtU96yf+ijL0dE1EMnuFf6qYm4D6xw/Wya/Nx7QjcKKi602WHOXpZ0UI2QWSa + prw6CYJ2T8kOZEBxRpq+F8Md6obZ8sNSywbyGFYLrItbxO3BPaF5opmpn+uOL+D8eNsyBBFJ0+5S + rGY3XV8nkeQXcEJNjgCnTCQ0kejWnCR0LHoLI7++t8jjcGeMrV9prWWeISG22RJl+OAQiUfXjShr + I5FF3cyPuxR14+2ORd1Ccq2oG6+StXFx9XuNH8iPk6hW1B0GPI3jURgEacRLa2OyAtVpDGfRF7WX + 2fg7F+uiTlXnxGl9rvW32McKwRpDndAQpjvU/aQtchGD2Zjy+HgOa/PNSg67Ygvb7Xgt2KWH16s8 + +9Io1/dazQcOVi2P+b8Hl2ZaXYaH1mYMy50ODxP5uCTIxs/ANOU55eo2vM2aIjUUG6FZKk4VeY8Y + UhzRNY4luikE/Ec2/JrhDLsXuRrFohgL+dezsRoTLNyH9YTUXcNpvhLK8Nd8/Qykaymf/jGerVbZ + lIhsBjj9dI13LCGAfioftu8RE1n7IDodqv2SYe/LKKmjsxx+PvdYhSjWoOjNhrXqPCRBSGmapN4c + kaYWcvFh+ffiWFF9Hb0StTr829j/m+N7PUjVed/nmqgl/OPdJSwndy8a3e50rknJlXONrmrYOs7P + aiebl9oJCUHw9BceBSxMRjwKeRjujjfNV9BCA/eddlRXssJbAUCCMOJeWkPyf0zRpsALCU/0BwMy + qtBSLEqw/nh7CfaN+ySi250mkZRcmUR0VSpHZx/qrliWVlyx7Okvfoy52SM/5mm6ZwrNViD/v2QK + wfKKxAxKY4Km64NsS2+eRwI6HDC1hfkqk52JvEIwih96HIV+86Y9ktfuhe/x9/HN/H5SrO/nhNO4 + xfyaTk31dj6AoDRpe+cSAkC/73XR+V2RmyeV/Xvw+RMzDT+evAxPWdgNfpyecYYfl03Y8ON0UdZt + rvPtFDOI8wH9p16TK/MvTDuZf3C7q/mHkuvmH1yVwaaPr0WauX1KJhhPqtp/cRDE4Qh+pKhGmfCu + wppQfqk1edTRJjnb3DC+HMOPUGRz/c/2RqAVUOZniakvQUeRYxLU6WJ5m90oxEoZ+cufDTHTb7HB + 0g5hCsn77lVkCZqK6hVbKlL7WXnMbIuzUldlol4FHsz1GoxrX5tr+fqWRZiy1lw79UKDc10NsNzR + /c1dL/LysN+t34+p80D/noNVkiNSB9HrKPYHlc23a4Aos2+V24Vg+jsHYqKVll6U9kBKLjoMHzFm + Q9/Pt/KJ95VEISHE7jIwu3e8RxMdeRCTQbOc5RMwPrHqaWZJgYXVav81eqoDT5Pztg60o3uYTsn6 + CnTUHYma+2s22RZdGUp9UMk861SHu1T6eTdJAScrXiwXsVposXTKaDxASpO3v1OC4i4ioTSmAjV4 + h+TgOi0ftqOg4VVGw+vVbHrTxcAPeEI+lxJW+qDvU6eqr+wG33M/Vel2V7sBJdftBrhKp+qL89d1 + u4FzVrUbxgHjnu+P4EccVQ5VWLvqaFFnzcikNJwhWc5CxrDMKiUFTrvJlYu7DDaLSBf5i15k88SD + ExOzrLPZYk07mF6vkvyRTtcXk5t63sajS7HUPaAsgooxFSWebUy9LI/XFDbiOC5T2R9F7w9wHpW2 + lDozaY8uW5RGgZMhVKPELJXRQOvMcLCcemFHPlj5kLPWrBqx1WZ5VccX/l5hIR00XBteTf6H2UKR + C9bjTNKhhLG5UX0u5selnLlLfEhukr40EGS7Emfty8txnV+mTwRvP4goF7OxynK7wG40Wu7ezgNA + qSbtsuD/+aFv2Y//2PdCymV4s16CvONZR7QC5ZEb+BYJsta3xeTLcfmf/dEOehSBr02Ww9wEVB3x + 26WXdKiao9vdkj1JcjXZU1yVeCbop/ZquoJggLPTPcdhmsR+NArTVGAg4wZpQ3PUKVAsNg/N/kAI + J6vlnHu7ME4QWKKFQMJ2UUbW+f724m0ZxvRTHoa8Rn17fCsmIUoQhH6UPCDjitmA1jbsb4CDGCW2 + VdFhVK3FsucswULJPvhcKu87OGR6DGhGaq0jTn3YsHxkjBAL2BLZBoxShiMfBcwgVVO5TboultSR + jC2PhmJllzEl6nv+eP0O1BX3IAzd7rRFSsmVLZKuqkje87S6QTI/qvCnphiECb0kGcGPKOa2MWU5 + pUQBzddZdj2bizOP4jI3c2iyHpfpAPr0p4jNqB4xVD3tr7VXCM3I2fTZcLndUAby3Z4NRUiy+Z9e + wsCC+jh8F//6jvH6MxXW2AU6hedCMZytiOLjZlV829wO3n+40LaQ7/lRPxBQqUfZvlm+Kq6FekcN + O+Ub90gc9VM3yL/GLrZT04sVuDF/jaWCnRhAy4dcwY11Ixa4sboq0TvuFrJo5+r9BwneMXxy8f7t + C0EPkqaxfzIwfqWNXXhugA8LRGPQK6hw0acI3xpTSnN1pi0uPyCIkgg9SYQNh8ylXsA5Ez8Rk0rg + xOFLuYv4aaSXlDVWdmGXCr/D8SvVFKVc0PN3Ho+6lGqrB5xOWy29ct6q6zQ1X12+t3NCEcPJj5Ef + 0zxyw6fjGBHJR3HIk9DBe1kliZFFlSoGSHTgNQQnGdHSe+stDEwBs7bkBnq1uqvnmB6ZUNE1W/XH + Hf4t9UCfsw2cuAJsrtn/GYQpbzNCkhhLXcM9/s/ex++ZUhZQU7gGxTMnzQNdmyuF4Lwe4HzUKB1h + Qm7QiE4davTYXJJIYvQ2dOLBjB5RnRtoU3xvcmzVvbLKb4JDJnY05zHvQEn38+jHf2g6Wd/Q4DEl + N/6OJoq714hud9qkpeTKFk1XaYN+c/WxjoIbIgCC6TOKn465qJoZcY8lCN0t8tKKOzQecPpcvb3k + cgt9s97UIzy3s/UGiawQrTXf3It8n0bAJMaSymY4Mt1ALEYPVnDQxmrVcXIesdirbqwfzl4YFWdN + L91UYQsv5bexwNlvbLcEZ3vntoKQ8VZb0WprZ/1tBf7J3sxfvx2Z+SKIsRVgRAve+ckvJ7s7yMyu + UY4Q6Ry62t6x5a+Xn/FPMUn0DLDstt8vz40mjKo9jEtJXMcyHvYM7LzFuL3NfOOfN826Z/YR1ICn + NMCloZGCA64QnSp1W+ULdjwnukjaCYD/+KsxwbqmPAFleRiMV3psur83VmNV6lnviimixx8gDINX + ZDAui5XqBaprwSERsTkjyywrtZB1d2b6AGuf9vR4V4kpzYOW871cObAAwKro5Jc4zhaqPe1SR0r1 + mU2Lo5srQI1ukEZCIm4Ibik3zgWmuz+/hzSbnmJ8PebuJsSfvDt3V6RoL8Y6u+DJ9XYDu/VGMW6e + UFIvGgOgey+w3Bj2hWneNSUZT198pMPh7aIm9iJ395JlZHh00gVcXr2/IKks4EK6tYNcEYmnqcDS + 54yfelFHLjD1lDMZmG7GZgNTl0lzXYHleI0akOkRQxGtv7Blo78s8OIBOcwYOU5fF/Ob2eF8UAQ2 + SEKy5TIDa9jZinJ9uAPUsqPEfZBXj4brlUy+898v3o4nhQhWtOZxOuVdBJxqRtb5SiDVYxKiK92r + 8zAk3Dc4io+qMqS9zHzbY4X2xlCbMAktCRaZe2SQbneElRSSa6CSeFUWL7z4rVa7zjyWVBElfwl5 + mEbpKORRFEhEyTNJX5QPv8yIxdYObr3+ePH07P2FghUzyHNOVMnB9Evd61hlhluYZHO2IzJoAxlO + Qj/241q9e1Z942ayGDgCXeT2EUu08wuq7zeSJVL/wbIDUaH+NV8RylKZ0oBMAB8vhJmIvS1m3esX + 8sKLi2dg290PRb2DYAxFJ+GX8XYpbE4lRVRJoRS4htSidCZLfab0i03gRQWQ0PrZ0P+bsZw/D8VE + EtXt0lmJZd+o90FryGK6mA7wFu2DTGMu7Ep5hlDU61p8M/19Db00MqlE8HssQpCj3YuMxWXbog0H + kVVV+WdHHuOmrJLKqtn7Eb0xt+DawUfaV5pTzxwgZo81cjQjioR4Oeo9eqYnI9dCbXc1jBJF3JBL + JuGDKYNZyun7jRlyXFeAQAPFbOfKP6ohsAlSY4tB4dD9s7JnDpyq6gznOiwev2KnqBt3iYrTM85B + cdmEHROni3QmT3Hzur2fj6fyC4sxXLlRb4PAWcoiVyWmjXPRxPg9UqYpyvwIpNaMfMmiESRtfjIl + 8pDUFBAbt4j9IAB38r3yHyJjuvks6DXpOm2XdaChlnDys5lDbw90q3fJnc82SSW8CEbwxC1ToV2I + r8isV9/rTHsEVpiwl0Kikayvop2L6HFwYapNzpcpjGAEdElhxNsdUxiF5FoKI14lQ+WPi6uwZqiw + OKmlMCZB7I2StFoL1pBX9xpM4mwBShP2QbYGU1+zgmHMfLjeTm7xxPxDMHCg+gl/85cq23G5Dh+u + oEu9zk772jJamA3ya9BQgj2XMh77/WdA9tepAxxfnZvIeSJOhdBL9PZdIDWeMzDFQHaJUCJd+rLb + eiCuoLfvWNilPlLc7lYfSZKr9ZHiqqx6OH/P6kUPXlAvkIxg/P1RxGOe7MjovRqDNoSn9QvNSgrd + jUSiYPApgEW5xdMmQzUQkztWL4HomO6TsjCA4+U46GgLegAOUxZV48FVwEjj02ywurhO6lqG4q2X + tWRLoLOSG6cqtg0DT4kcvNTh3BJEuaGgrJ5EVI7R5+pnVrKD8X4lUkXf4BJMJz6O9REuFnYdXHM9 + ENOurKdknCgfCKLsakhzqJWI0KmWuS/4YBk72jHqNYG7ws0HiGv/wFiD69UnjcT22Pv1u1+2hwba + 8f16Z3c6kIhJe7kfEPT4p6XSUoGsOUKwfr+4vfDxKL29Qez2QAj1mILJfeH7JaFMgWO8gwpBtzum + wAnJtRQ4vKrx/VhSw/cLggrhICbBpb6fBqM0CDxm6xClnmtVwj2JvKuTemnYyMCnAF3xcjlnyXPS + AuHgqGiSK1i58IJN9S5YKUJnl/wGRFsRyfZEhb4GQ3A8L4plibkiAVsRXicbbvAlN+I8vFyIhKx5 + nn1FUFH4KcYS2p+i1TfNDGVHvG8DURYxVsIot1XESVqHl4J7ODux9aIkaK1CDMMUU5kfrizTbOC4 + wsnBf9eMGFAzZZpc4vVTTdUiod3b0WMF1ZH8rceUQCERT6ia372YXHw/j7uiSh+znQS3f7Q6UiKd + c/IqPmV+x4wTesY530Q2YWeb0EU6XlbLeaKOC1j8DbWO7/jZoOU3yWC1/BJmgzDxeBrygfPi6oBA + cuhS7W3FHaRVdqFJ/hlr80C8jH4X7KGFZIetzANn4EPtKyxNKCa82tkBzvx/buJ2KrtUmPf3Sy/t + 4D+m252UXSm5ouzSVek//vSmjicG6o+t6vKnv0QsDFJvFLFI8APi7rW9nv3vdoZWVJnxI53A29sG + VC+3srmSnCHgaZTUajJ0q+P1Mp9gdrd2o7a4gBM7H8as+zCbqCl601y3VfNbMbBD0xapSZrwIPL+ + PfikO0jxVMNEKvtK6FlCoYLhLj9LYz9tsaBBAGuiDUjIxsVC8vbq+59pSF+ZDSPTaUU2rXA8wDWD + Jxvr78pns/maEDjvsv8pVmZRbr74D0wu7Rwr328++5LrPrrcXrPlAGeR9lInEel8ISUFlw+WGa0d + IKAe9qjZqdzZWCMB5/b3QLfMinm+3hwTjeo1pY/Qo+/X2LePLqkvlSBwF8/5c37qsS4YcOoZRwg4 + 3YSJAKcu0t5lhLyXsDLE7kE5voOGX410CIhxqwEM1gcegdkfDTmbROLcM9o/UFQYekmoX0UHZ7tK + e3wh/McRu2YhIz9ydaTqPd2dhlcul9STbLG8ix+Mbndki+UNfjC6qmr1X9ZyYLmoja7Ah6VeykdY + Qiljy6/gG8UY62pYpP7ZLq2LI/orhj7hsIJXxNDo+FrATc7QZ4EPFd+ns/9Ad02KJSxFOCRmhSjo + 3i43GRxCsEEbPb1+ZsFolsRA8+IbiZznX/P5eqjqTuSvpHD5S1X3n9czcKvZFra7Kmkr+UxYFEQR + r+oxn0UvjSe3uUiyaqgdtsLNPG1N6jXll1We9FWiK+7Eoje1l7BCWGtHHX1eKxoV/YfCyk3EBkDl + +z5/0Oe0mP3oeTHA1VBCl3l+Pzs+qUh2v3aVIY3QcryPECXCRQ1j7bTRd3l+N/6oKverzWGX9+A8 + JQZz1YbxHrCJNsIk7DxMGUG546xTZaA4Wzt6RhKZyldP2XJxVDg+/PgPT7GT4e379z+3rgk9e9Id + WpfpVafcYYJSj2qn9eSbZPCd3fUA3eu9AEwMe4rSqTXhRZSL8OrQQsCUSddHp1Qhut3R9dGUKkRX + JZR6EwVThDu67foYxx70WjSKvVSYnAI/GibtPXzn2ULBu0k482zRDGc+/JbBH6085sjJ2IoehIlf + YN89FOoPGrDFvPlgZ2FaAeAwgCC4ByMZhP8enOsPvMOB3oHZ93G2YssR/uD0w18Sgzn8NVjqgxp6 + Fg58XDS6f8sam5FKt8rn9wr5AR6Q6Rvqfonth4OsPRMpY+LYlqXxJn7OerPqXikTewFtGvr7JbH7 + AREu0dPk9qwMR01MYypGSGUP+XfTG7LKbw4onYnoRcqv6vh8H4eVWBDimIC1ks1ldkr7GzVyFx51 + 3vlg0JA9rtI2Dzjv1G4nqyHOz0Gof4rIes7OD/2Mm/OjbMJwfuiLtPMt7jbSDVIuH9SZb2do0eaD + BX4o9ORNTql0dHn4AR4b4LMDHsJa8hLh9kg5F9NF3laGxze73HptOU+HSesZ7K9LLEkPsa9JDuLY + P2VBN44DesaZ4kA2YTMc0EUa4mx1I61x+NtsMVsU6+1kgo7sfDi/FxmtBAiZREkYhycD99tiMfxp + 4pHXKySlXz6fO46YezzyMPm7XaUR1Wob/pvjpQaIk7X/Tb/OMvjmBRyNs05q84EBzj0POZXx9MdL + COvR6KHaXOuhQv7wJvYgnEhMwEOEqB0isHYIL+1IgyIf6rRHYCP1TQKuttOg3OWzQiQegXa1XZbU + MhiDGr7f3rAkGNzRD8GFwqJuXCiPBnQJG6Nq2vWkoOdL6W5K19G5QQetaZrh4qEvIH/TXcNLiGBL + cLptttfbrpnFDM5Vryph9wtVSqsfP8GIWrWhIpyOmbuhSre7Ek6j5DrhNFyVCamvL2uGKnynV6Wb + HvM49ON0xOMkUr747PPnHKkbjRRwleg3svHFBDa6CRE2nX3NV7DbCYhnYaQZq3Jkl0/czLewhkxi + qtHwze/WPy/fv2RV4ipzmctc0ptV3YC+y6czwUDfAhHZBoCYBsiBVssgEOjTxRyGRQRu376tAK3p + 5hrBHWGjC13a0/a1LVxMuAtY7NAs3HJXYIzIhl+M2lzpSv7gykY1rH9Qtceelaj8CjQX9zvjIZmq + VPJ4Ngu+LeYFZQY863sGDHCelxThEdnqfwo4Q5/qLBpGut6DetD3bZFiZpP9Wpn+bufEQXUWvVFB + 4jLBJ7ovtp1fp3blSOtS0cv0lPGOupR8yFmXUo3YupS8Srv0MruWzkH83CdnJ6rfBpV/6369gCcG + +JgwqGKf0gg8npS4DNlqrLrrGrrjTvUmittkszmecKtNvnAixfzBJTu9Aqj4UVwKUkg3hyYxHpsG + 2U/dDaP0werscJr+mnTCD/xuJOTqEdeEZtmAlc9M12iyb7AbZ+sCds4NAoa0QVzsuM9sB9mgwOaX + JgXF8cSju5Fc3RHUPEq32hxEQeG0gtxB9R4a7Hzf8y4oSx0gAvvgi+nDX9EfapOMz++a4334LI5q + 5niAJ/chPh4uqjfsjTQpvSkvkP0m6OpOkU+5+1NUMxWHirxM26GoovwMHSPSUsijovBbCb21CRpG + 1Ql82BSsAgxkNiz8LXE8GFD+sdjIbOH17dFOYvUYb3iqX7QaL6bkw9Lk7Dhn69siYro7oET/cPoH + d01gT+quawluB6TQx1TVm6Yq/hX5MJM7Rb/EE66xLxJvRb7EJVLR74ovGB8RfpExG/ljNFqzBeF6 + oIhsvrxt/M3wPT46EAKEth565PbsMwSMuSMi+HV8MML3JMJ+6dsUL4fl/XfX84a9tiUg54OuKY5k + 6hrZLYfF+PqPU6cNn+ho0XAFoUOPmoHd3bvNoG+8QvKbNwMVqqsitUFBshFoYdcZ4UukQjXHg9oc + b/+ClskBc4xevn3dHHS4M8/TwFpBN2CtwB1YK2gE1gpkYdSr//dVzenKGGayV4C1OIfFNuLQvZI6 + +aPtBYIegOljYtOst/PPM5HytoZjGLlFnmF6C9jzizXoDl9zsWuPSYtYP6M+FJ67q6tPrOoKo3zl + /3yuu02d4IbKciuP+wEc3VVv6abpcxpzlP3Y81pzmEzhZaVVsZ41kFN085gGYRq0MqY1t6tGoDmZ + 2fNZ1FYwpuQNnEe5pEwbDcGmyWVl/+cZ3CY/G7lIZaX9jAZ5NCy+wsQs05bX2yVlaqyV4DHmks3k + MCC0ULa4H24Xq5zCdbRk18PpVuQ33cKqXcmJJHuZ2qlPPKm+rge4BAzsMX8g+wbXcr0Hf3VjgHz8 + 7lwxn8gz4zo7j/HyPnTJdGkAHOd36If/BPeI+gSo7ipuZ/hfDv2GeUxW/bAuBHB0u2PVD2sggKOr + dO799tv/k9SzYhOvVvXDfMZTf8R8P0hlsPFKsAn8urld5YXIgFFDIxGEG6gf5fn125f/Tfrm2SyP + sMprNFcJRzb2pAEUmXocQ+Y94kQq1uv1ng4TkToltdSW4RQZ4DjpepQopGBZECXmijArGQlbddUN + MNgxyaFvq7o/B15Ey7JtAnSWFpjSaqN3LBh7D/vZXwjRXe2JOnfWZ2+Qb6cTgIvxlKsPoWzG8iPo + y7TXISQFkkdMh7mAryo0nutsMWhJrChWlQZ46Cepz8mhl8ZmPOgXCvaBCojKleilwyMODxf5c0sg + PD54pyYDIS6/ufRC5m4Y0u1OB6SUXDkg6SodkOe//yuqGYZJUAGH88Aw9NIoTUbIGxNIr5PK2/jH + WzwLcWsUTtJ8OKHqMqx//HY7m9yiHYAJGBo1Av0ToE3KhI+drBZtZW92GeR6WKb2gYpYfL9HTjar + CPa8+B7VDmUsmpityGahajrlMX77j92AbnFoA70aNK6+z+CErQHd6v4Z6/5pQ3luJ0E1ZevDW1WJ + qK/BLrHKcbzIazUB/ST0eFxm4Tzy0RzgjNWqgpdS6aoMBNht1xsb2d8FlqSU7bJ99FU6+Wekktkj + MmR1kTuXVhct4NDKl4FcSkpva198HRWnw2Tu1nP6KPt8ZNWV6pBTMOpe7HeBUcfbHWHUheQajDpe + pUPu6uJ3boM/+LEf8SjiNRx1zsEMDEach2koq4re57NiPVtXAJqaKwKlYTKfLbHjz/jIcqIZwOqw + WcqUKMxMnRE2kiz6u6MGEe+Sqvvhrvk9CpC/kSfa1bLgdVyH3tgJ+qrIVC9tPhSzCsLCS4ORG6np + wCoetHZ8SYiNuZpiDRKC2vp+kS3hkYfp9oGYR/rs8f1wID+Flokcm25Fl3ufLs/FZbZBxhTjUbEP + qY92DnTAk5TvLp7EyPmdQKWj3fmAoNqPKHMQlrTk7cTqWVDN8qkeTGMO7HZRqk0p1CWMQQDWS9LN + ClMPORcxqkbsKkZ5lTapSfGdyZTLJuVLZ1X84+31YP8NKEwYZIlP6WdJ6Es/845juX3sXUP1fSlJ + B5l3vahHx+sy7hlInUozD1c93HO3+leXelJK1LoVmdJ/PL9kEXdXJuh2J2VCSq4oE3RVWsxXNYxJ + lkZ+haMoeDqGOQyq6yiMglDVr3yksBiGq56/UuiS1ysQPlkOzouvGVIYzO8lQlCZhaEOvgaX8zMz + AieoPw2ChdKMwvZkUA4rYJ4Np7k8ElVoDSGyb2c3twKGgEK5G1RpNqs824iol9B3rqHHjNg4dNoz + AvFWc8xWiP74+zuGBUEff7/S0TfPj6KBKDEl7BQTuWC62jrmfns++QbNkvqv2WRbNJV/NUdcekve + OKK8X59Isc4AZK9ZR47B8iHn/D/ViJ3+J6/SbBWOQOhz0I4G5t+t50X1tKyahD5NTZ+vhDkCg6dQ + O/loOC0mX7r7viMJw2DHFVVDB2NEpcwvXfPauQ/37pD4E/2T+8KmJdcmdE6++JrPi6XraogC33y6 + ewXqjy0gFZ0cJDLD7LC6B0LEeG0HF9yyM5MwssIbbRiJ/UrrcFAm0rXMuN/FtYy3O7qWheSaaxmv + 0kH58uJjPecoxahQxbXswziyeOSHkZfIrKP1As4YPp7Ossn9HDPFBIpMvrnNFsVc4HeMCXAPbe1F + btDjUnTmmYC+s+3Er7PsejYXPSkO3pfLTT3LqBnW0/b8JjUA5orlbL7nDuZe2+nre3Gj2DK9SJLZ + zqb3c7OFHRQeUVBL/Rk8aNcOcNC1hcwiYSEnUUiRRu0cOQ6i4gAk1z371gMwqYZxSt4zrCk/AN79 + ccDb9QeWwQLRHZVpV59kR5aI4DISY+m4BDv2ap+ZsolnLIrmhFlcWwWskRUa94IzQDAE2nzfrstG + nQwpnQzvPJ50OBnE7W4nA0mungziKp0M/7w6D2onQ1yF6YeTIUjiiI1CXKHSM6KVaprY2O+i8JoA + z7QlUfo+A7nb/3M9CRx3+2ZIXNgkWtMywQCEo+3f9Up/Keiz8vfbyas8aMnRYZ4Pqk3gN2avaqmg + DBHJewtRQGJj3b1+O7KagKUCH1U5ZC5vizIjZHaD4T3RqHLhWE5cXqntb/uAMlA5wQIaC1rDKjDA + oYSDQWA02GeZj1Zjawwz9MA8qDbWUsTQ3oYof2iPkzZ9kGm6CowOK+waeMm+/hm8vCynSRv1J7HX + FBPtQwXteIv65DqfwLRFr5R8lJAtZpjMoe6tSl+TPYZyjbafDe/AFhD8CbfZVyTLWonsXnqB6vJC + bGE0+ovFHJpG3l1UBOQ0hb9iuu88W5LHAFY7G/sDXPRl3JZ7XbELdzAH9lu2EhAfcW1oO7xREMo3 + 0gq9cL1IhjHodicPx6F6Sf/ogb3RpCdksO3bx7oM/lGJZvJMZJ4m1Qq8boCG6hFnSi1qwGbUEtfo + bLzJVjIK8PrsUpE4GH/F32PpJE+ilOrK/UioaKt9NeDtTK+OAvagh1IqNLlS5kjNsnMNthXhcE7G + gmZFMvbqhxFyeBBinzek0iFufpjYF4ry+g73Mfkw+iXdKbN+bFn5w2NZ7PefHA6CoTYApjcAL+yY + lKmfcd4CZBP2HkAXaelbCkArrNWgsezALrguW8M9I00kFsWfoHAFG4j3NNC9XsUZeY2HEUXXVfLB + kQ3/CRA4KGO3Wwxl30PHFd+4s+z9rFKeDjyAXmDNp31QUv01/VcvyGdMJNX/8eEdj0L3qDDd7uTS + kJIrLg26Smrb26u6szvwULEyXRrR0zEmfcTpiAUhTyTzoC6gMVlKZ4sZWFXGTBhhdHe9vblBjjYq + hAMFYEsdAb2XwR/3qODAJimYO8drUHa12TcujctShZ7CF0r/yNt1ize8RjUdxlHS5glpKVna+WFt + 5bc7eA7DKILX6IPRuipSM1wL0zUzqiYNc/gOU5u+gnyRHje8Lqb3YJKvhH23zDa337L7Z9ocJpOc + CKozrbQJ8S9mU8zfg211tZ1RjB3sKtXpa0yEJkC5XCKa58N/LNd8OcY/gyU6BZU8GPSXV+eXH8dv + 376VPIhqoCVEIjwTLAc4TzWfNQzVQBx1hNgjmEv0kMObqF29DIYi3rPD1zsZcEeVY1FpmH7ZnU+p + EDvzlZLH/TfBKWPdtDz1kKuapxux9Dx1Vca5yg13eZstBpMcKc7hSMiH6O+ZC14oNbHPF3M+mOAf + SNQXJ4nC7Ei184PSPrpabhS1N/MowcjPbw7wnoRM1luJt1Eplh3UAi9WZEkqxc94rS8zmESF4C/o + +I0gNm0TOxrqXhcOlub8j4Pi9Q8Q5P+hMXa1cILSOvLTU2SI7GQdiWfcrSNqomIdiYu0aBRJqcyy + Ng0e9atfG35nChfAfJwgKhMWaiXkcPrWB2dm6I+9lLFQjWfkxade3G0flM+4jqdqwhpPeZHG8/Z+ + WVAguCSHH1R3RlMUjh4LYfsjRwZlfb4u5jezI6K1QSkkWy6zVbZxd9k4PvzYA75qekR6ucevo1PW + JRNNP+O83GUT9nKnixKKtvgso3+vxtfFdz1DrH8NL+CuAd4qHB0sDXBy+Khz49dfnb+qEjZnRGp/ + OKFzFYsurBAqz2c3/UDQ/eWPmWO9+Mpn41VK2qWQ0fB6NZveHGbxqjURE4bTJUtjdxOTbnfDcCLJ + VQwncVVWMX14Xc+nivyoiuE0TlIeet4oSQMByosr563hUAT7CzNSbrbZYjadLUzkJlVYtLhpgq2v + R8XFptUS4ozjEJZfLYTdV1VRLWnYxFDCzOIWnjf1WtrQm+3qmifvP3x4fWJhW+0oVG1y4KytBoTt + JF63FDnAgdXIRAFPj86NfkxnSVJG1s7B8Ik6htbEM+6xNWqiElwTF5vtrRdnV29quKUvsqk/mOIf + vh+xMOzPzpIZYRsBr7BewvY0z/fEyZxPiT7NOBAWxepdOxe14foiX+cM1XENnSryLmDgFvru/aGd + PgzK0O4WN3tvnzn5EFbqkWd2wmTEguZV16ePZNEJeExnvrWm3OzLVAJFebxDVQ/d7ggUJSTXgKLw + qqzqeXHOakAYPPHrSFF+GvhROvLTKEmZDYQhERCyRbZEuMgxRYNQ75Dd8SvuGzRLnpxdnP96fmJg + KmSGLqo0GKlDWtwkU9yTp2U9pWwN+vl2dj3DIwfLXyfzrVCg1G6DLc+QblRWuwo/JvSTePZXLUQc + YTMqLLJarZPbnE8nrI6o0f7xleS3pB2SIohEknUL7pVSDW11gYUdxbV2dks2XdDqO7YaKNPPRIdr + G6KC+5V4tn6zX54ayJ2DVklnS9lhbdQ2bvMksfHAYrdhrDchd6l8XiwaBfOO/e1iyFUGIQrZ3g6q + shP91Rf3QOyEOlEv9MKBHI4m3cUYPZfTXMwXS86uieYmkceJKXGXetaaASUDIIf7Alw0qqPVxyNU + MrEXmN20exdx6nncwsjGtzY6q4P2SmFRGFmZknoMWtTWXfY/HNCS47htjfbuBGrzv/y0d9nVP5yn + oq8XYoXVoGAxeWKVL+eKl8aI1LoupaPV9WNLIKmoYocSstcTFSRUqbJfP3BaJcfWKPaCotgqpP39 + pWrOCbv84pIlHQgj6XYn1VxKrqjmdFX6vV6eY3afrZqHgV8pF0nQ8RX7YThK0jSKWAmloXKnX3+8 + wDmhcKMN7jLp9son3K8ptOe/X7x9OxTxbqQFLewkf5juvLVmgPGQJ2lQqwvpDAXLI7Du65By9EEK + Ub0tkyL00jYKxiQIWRQEFU3q5SU6fCia0YwpHlVqS1o/+giZhs/O+nxD5FjTQE73qHqIUdPmEWQI + kxL5NVC9LQzSbXZjd2aUsqBNDovSIEzTfw9aJ9ozozBJ6pM06cb4I1gOb3NYvcV0Rr4JI7kDb63P + RBvnqLmPMftEf8szWOCzO+GxJBC/1y8uJNqEoMlEZIpsxZYDseiUFgidI7TAKGFljtwh5fYPU8Qv + iwrMz5edNNbpMz9LeKvK2VmuAxx9StA75cx1fR1Q831mHhEHdheLGFW99tX/Yt1SP+1a7B1pW3oK + Gf9QJOny+cdf+PzTo+HiVMZHGg7vPgXtXZM+C2jLNPUQJaWDVgxHuOjT1gPfbe71wu/1F2Qq4GX5 + B3vhd4SDKx9yjlOpRuxAlbwqKb0MtPt8dZfjuMsSsIZfjXQQldktiKoPxgb9HN+EUmK0f6CoMPSI + Vc8uBOwq7fAM0scQIRUpIzFr6tF6jxwMBMO5TnoN3kQwJ7rlvNIzzimvsgk745UuNgdgm9K8lBSc + uxGPKM3rB2TYqR6TacLPL/zwNT9lXhcgLvWMIw6XbsKE4VIX2zk4r95cvjyvxa3fzzZscId/YH6w + 70tQLkau2xanz5FlTW36rcdITSlpM9ezOQw0bs1wdq7Q1+SuLPt+Ygtb5XfFNJ8fV8QCM4q3vaOz + 5hyFSTkvyftPNQOFG415qehSPWZLh4l/bIbiNzcSYA7ROjcbdz+378Ve6wdDG0byuZMa3TNP00Nk + sXHpjCzj/WRh72BzbTwtwkQI+rC9fOHmSTSeDFun7tGpgT5LJQF4Pj/i+1AMBf+N6SUTIw6S54ch + ZS/hMu8k4dGWJh9dYBh4nuiTs48XhmefOghd7j0huPrkYnGQ2Y+Svw9ibz9/T7Ol8qiYvr3EI6PW + rmc+M8yxH1WiuQ9U6rgCAS0oIUF7v7Bh8HozygKNiOp7UTdUDv2MMx6qbMKGQ6WLpIf98wUGxxAI + RmlhtSuj4e32LlsM//niMlLGmimcsFKTYxTaP09Wt5oNPvetpOzWQ29nHikXJSt/vLgM/Q6oZXS7 + UxxKSq7EoegqxaEuzl7U8q+9OKjkX0dPfwGzzkuSZAQ/WaQyTy9Ac7qfZ5PV/VydRNN8kq2ui+/3 + YqVSDOoimzakXluA5pWYUSsqWUstrmxzPL9vS3aC1e+zNqksSv2UVSloMzrcKWRB4NWNcRiWBu0v + rEQP9vWV4HmFqbM2U9fBAgdFdpHdyUdG5jMY7ijfUV6VN66HEg5rUqwo3VrsVV9n8A4gYyViOF/z + 9bPhLVhB8+JGFNvCPIGvG366nv1rgDNDxUp4GiC4tfhQYdq39oxjQoGjk2Pfwu/KOdQn+iNMKNo4 + KnOuqxCKUbRMYDd1vKOMnedTJLekII3cQ+N0u+OWJCTXtiS8KrekT69qSaueAJqwtyREHWABZyP4 + 6fsqbdXm7QJZeo+ms0ttSdvP9TTPEtWosh21cmZb21FXXu/921pfdSVHEaFCr82Ksdwm7odTWPrQ + mzqodguqAqpC6+EZkggISkS4hD0vCBgX620JpI+FI2Jg/L8NP328FHFcUDckbfZsszZRFUY24Qq0 + uESP4fr+Tsywiaom124f/QIDnEPl5uUFotYhJBCqndg+prGoUU2cVIJO8Fw48/NvmGLfCHdxDFtI + F3wusR8eDDOlzUiZI3+3U0Tj6x6TR4RZdkR03ohmJFClxMxyDimpPTDW3uX0LDiFDa6Td5mecfYu + yyZs7zJddKAxreLbqWV5uVpi/anRADqeeci6wet1cDv2gLf3oyDuHsQIORAXb58K5O4PSGXmajaf + zLZ3Eu88m98V0+28MfFS0gcbtkt76FebLLr0jUdvwlPmdYQbkQ85rw7ViL085FXSFzazz4rVbick + z2A3YE/+9lV4NhDCKEhD1dYCYEf2jX662+QACX5Fgogftyeiui+7zqJ7Z6c6aN4fYHPDQ4RTrjeH + 7t1G511Q7bKG2dALONpxDe1S032N7RpFsLvzjmAX9Iwz2IVswga7oIsyro8Q2OP57ItG5hrULw3P + VsukBl6ihGPyK0xBeTz1Ghr7WWfCAZP8oUIrndAIdk48pjgGkzQ89cJODIP0iCu/oGzAYheka7Tv + fy5WEggAszxhytGP4Su4jn/3hWsySGKKGHPJSWmUgrZjttf6ZDdQ95FFMCyi7Dc4ba/ns/WtyLWC + oURDa5MvhCcI6auxgWWhdxnHQHPiR17d7hHC1rdZE5XSniwR2tZ0qquR/XswQLlAwheepT1g+h31 + yYSm/PVMdBt99M2q+La53a3uKAGhR0VU8rXEvSXxp+sQHFVAomWEVAmtErBpGFu+zCHOfWCmp8x2 + Fo9kR2QaHZGoFIIWGpYrDhOJvuspvZktXWzeOC2HtQekVjd5D5eBqHbnMi8qfJ50BsFSDzlr56oR + WzuXV2VuFHUWuqMrPr/372DZ/3OAQFnfZ9lQERRLN53OCjLbEXp5xGWs6cE55/cfq6rfffKawhex + DoEccbub15QkV72m4iqdhi+eX4jkKtttyhDJuBLJgTORs2DkpzH3pN30Is+mQxN4CkUJP+mL6yXz + enCUekkMjdfq1e28gcvGvAGrYr3iobSKm6PUC5hXcX364RV81ewO+7P0D5kuCqsSxo/aS+4b5Utr + BKaFwKfVeWuadRjNcPMgrxSEx22FN6rHBhpJd0dnSXf3i5dnLywAMVpMIrQkmJZkjU4UYafk4/Ll + Bd8JDOr6mcGC1kTd0uCaGYi5p92tLElldXVsmGvuHeSs2PTD8bBDyn794HiH1UGS+nAf9+nPerQJ + Tkf7tnHDwUdcNiqXGdNjLtPx6T9kEdmfduR79Zmtw5JmQSPSs26GcLOYHNkCb4IZJ3AkFPvcarse + w763ga1F5ILqmzpavIGyeFnEvVMv6qJTlQ+5Wr26EcvuVVfpuBZ7RD4uKfOW9yCOvlo6dU03S8fb + rbfAMtKUBzLp2hMa6u0MzpKpRdK5k+/SWY2GQZeu1vulqPZb9N1CJDepJUKK5Ab/zBr3q3U2/5rd + HOJYLOVT8dnfQNqi+Fr8DY/03j+CEx1k2QgMKNxFQ4LD2XODKWPG1i666lBc4VJkGKnjzhRbLIpy + nh5Bp1q2E5X80epUOlZqgEiGlg/kaOLXHuNAPxrl1OO0499lN6iubO8Oz/X0gpg6lrYsgxR0OrM3 + rD6yio9va/cBJp0+R0rpjZ21rxRWX2UtsqRT1iLe7pgiJCTXUoTwqgS2O/9YTxHy07qtm4ByD7Zu + 4hOuTwOunZzmmMuGzlD85sXwHOb3yvC4YyYKAaJuiuHHyZItRzbWlADRUgYNQlwJRxBaNsLVTASV + w6+zr4XCmZts6vlH5RuYisvHcSPWXOK3YYklMEqxFx+I0OEoSLtn7ZcK2/hMLVlG4qb85BZ7349b + EeUsgQZAXXcaVi8GzaZTK9q8LuY11L4oCPf1ZxV+7eA5WDfVRTqWgPA9aHYiloeYeEjwIiwDtUUg + 4tDnAS48beiHaTSQH2w6LlWndDTD26XsN6pwAPWZ1RY32G/NBzzSlKsWisdRLArHp7nWn3eAaEp8 + WRa3e09xci8fINTlDUkFtAZt55O9uhkeEW7A0bY85uYTvtcC100+Pe6rnMTtRdnyS8aFNOQdDefy + IWf8AdWIjT8grzqk0r349IrFLGoKQGjZGIAIw/CAYhfxwEHpjqo7Caz/3aUfee5qF93upHZJyRW1 + i66S2vWPiytMzLD1Lt9HdBwTtCwAvSuImMdHCejYnNXpP4mDy4RJ0lTSpB79Y7n2k3a0fjfqeQMS + DNSIxK9BjfWVXu3AMWYC+Yd+5UWRxL70/Kc8CqOA/3twka2EipAhzZkfLLWJMpvew6GNBdlgn/nj + Sh6fUAFKojYRtxaFAct8CY/irX8Mn5xf/HGiGM6eyQRubMZbCsVAtgjfIsvk8ed0O1Fx55ZXKY2o + Jxeb6dvF2r84kXixBkZXxSIaiHml1IrAD3kPwB59oT/1D9aktA2cBni3w+ypydzF0n6E2OZEgX20 + dD8AOQnd1dZL/JTEAx/h4MWcclqIb9/uORLUzi5yav94fslZ6l5zQ7c77exScmVnp6uy5uaPc17Z + 2FkapZUywODpOIJNNoxGEWz8kcTyeGMyXf1++Upu4X9cr0D+pG7kSuW6vNa46SZ+zJs23UdVHDNQ + m5YXEO/aY4DgUbOK+AfevoOXc59VdLvTrJKSK7OKrtKsev6yzh/LGXoLTXWBPR37AewS/sgPklBV + Jn/EnRJWkP56teNalm3J2Fnuatf55lueU5lRMwgcHnC0H8ml+mz4dXz14ezyJbGKGr5C6P/1/SJb + bopr/EY4T2l2P88bmGUFntoYcdTg9RQgmo2r6reyzDIGW2Wc1Jwte3DsbFdO0lqH6qegVbDqGlKf + 3YyxCsPRkp3g+4xzvwc81Iu3zR3QD8Zq82tCL64KRKQ3zsKRaqLAFm3xaVtWS5owHyylfw8e62Qd + 4ArUsPc8inoCPH0k6KHuFjYOovD1l0PfLtqeCzuP8J6Vzf6gRntEBP350JzNKXx/UZjPPnQAbbtI + zqrmTbQVsrPBbyHEwK5zgcTeYEfurFxpW+F9pLgGnow++X7cJfqEtztGn4TkWvQJr5Ja8/7y4orX + /CDQS7US9V+QqtP30hH8jFkkCzrfl1mnWKRa5uDJbpFRgTVcm+t0OVI73q+Wa97gGLEk0oOlXCWi + wnfvt2oiPE7iKK1pIse3YsRC0gAs1ajmkjEztexAELff92qfJCP2W8l+1Cl2dgN+6NQhvbXQ1hm1 + KJNOLqjGrbA00emdDxe59yWNCWDNV9f812TPqA4OWS0DWqI6UhUHYS+lnIKiQWzt1ku1ybPJdMOI + MCttoPjOwaAHznnf03zU8PltO0HH0NK+6s7dJ13IdTIHhYYOhGby+kFE8MVB57BD/DjBO3qfpQnN + 61X3b1bnMlOcKjx0P5fpdldOFZRc51SBqzIr5ONlzd0Q+gmvUqr8AjtjGoYj0CB9lu52Yi1XIP/b + w4JXPQJHlr3JzhaLfFU3ZvPvy2JN+QeCi8165i7DsRsNtY98TebpXdP2jYm60L+2eYwwVTOxW97L + SjYLnIpQ6N7lmzsGrZS1CXfE7USBpX8W88/jN7PVenJ7W6wWaA5PYRJidOtNEJfUH4KPOGTcs1Dc + ZhgdlHXaqHTbH9iqgreU1/3cjbrpnKqMq+PbHCLpkdtHykcaqHq5i+c8QHB51iVErR9yDFGXjZgh + an3VgLCwMGxE1S6sDzNHu4mUWzZxniAqI5I8BwmX5fRh6fDRD3V0+vhhSA6UHeBJNpBorYEOYDLH + N7ZHjYskq3ATchAJ6AIY/oOhaNxzgY8pAnoM69RzBCl2r9Q9GvLYj72G1dQnbMhB8ve9c2DN9/rk + 7rM5d+DfH4wl3FcKdED1vu/feWGH2Brd7qTsSsn1iulQxdbO/3hejdhyP6zG1sKnYxaFoe+PWBT7 + iq/i5XeBiyYUnbXG3xP26s18O8FseEGwtsjyVXEtYD6hk0Q6yQifUKXacP+78RwmCaYa4BNCmtiz + 6bevLy9BWbv8/V/QB2/OLuDvb/71Gxe3nv9xnqhc6PtrvselJUwWvXmsl9mkGvkK2wJrPgx7GtTc + Q+WLT3NRYnaTUyUUpiMK9JX8pKUGOYjaAkJWW1ovVzOpLX7FWDvvYAibaJT+e3Cu32p4zYdPyrcv + X3c8GRbfZ9MCZjCsI/iWk1GdmW9vt1YS21Uz281MIS0+Q0Pg0PkzwHmrU31ClggFxSNfvmrMId22 + PYh0XHArYaHeII6ob+I8pV28Yexhq2giDNhNLcSIBQ8HmH5Bo+yuyD0OoySqmxKm2XdA14il32Sg + 1DcMxw89WFy7CtMT5LDYevCRbpuX03f3JHpPsrRHVJm4IA4vEks9Mg/02ppkKzhCD1VXWBQQjbi9 + ex4ojaO2hY/c5ncHpqYfraVoOZI70yBBP1bxKekL2HPmdcR/NJ5ypjDQzdgkBuoyKUPL2400n7E2 + GauJ3vCz4VfQIOGQGDRdwycEPlgUJQpzrkp5pEMYXU3lhyB2ChmPSy4lesHdyFiNJKFxElW+suMS + /gk4ehEF5Y0P73pCHHrsPSQc3+GWqFqLoUrw85NOCX5wu2uCH0quJ/jBVVp3oL7XSMw5QzTWSoIf + Tzz4OeIJjxRWa6UG7vz8MhijT1iXu1HaOCiYGWiVxbWKszX6xoSreVXMJcC4ZcsamJuolebzYnFT + /hOru9AanqKPQupWZJZ8KDYNxOnla67KTF8rx89jYVuKG1gHoOz6x3Ong8mQpF7dqvH/Ng7/Ns6/ + FzoO1gql5LG4PeBtSi+Dx8X8/snZyXCTzRA6EHHXFtU4vcfbUxCbpe5l7rso5pb3zcZrsostmzq7 + Wm35iGbaABeQzs+DqSPr6VO9W2arsWrjGjaFO+W4aRoHp734sTiD9zUQ72mgu5N2V/wzCiOr+nR7 + PQMjGPb7bkCPQRhITIEdL97BXntoYqQH4PIW+x8+0rxTOo0KfnuQEI+lHomxGpv57Ga3et7KFBny + pD71y6V9GBRzECmVOEo6IuKqR1yVYdmApQnTNTpSG8tSPozBWN3cz8kzg6S893MTTEJla7yxAkzL + 2c3YvnKznLEQCyC90JdxJWnOvb54C90ywRrQvpFuDm1hhwukUzprS+bpz8yIbSAhfYBU2McR/OkR + /QRE0ZnSJGqkrwrEhZv5PSyVewGou112DZvFjAy1g1bj8QGkh2p/5x5Itcl/v2R+h3gI3e5kikjJ + FVOErpIpcvX6fb3WKEztlNyAPx1HsR8FwQinA575gsauTCVUCTNKpa64w7/N5lMiB5JYyyv0lMHY + 32ToNlOe7zvsoXX+TDEU5YKODcuDhnZ10JpQOEArraWcCxvk6uauucxoT5VRq93QRlhVbd62Q9I/ + I3HV4xvUAU5Spe77SRpKHGPHooPmw6iHigUxY4TO1jCzdr5GJ16BXVn9ic7qj7pl9UfuWf1RY1Z/ + pLL6rz6EDTn9dUwp9Lx4Ccec/khAaO7KH5yuoIV6/uBfsgiWx0EwODbTuWeMFy6m5uvOwCpqXqYK + w8QPMEerG4SJfMYVwUQ1YQGYyIumgl/c5V+zebHAXaoKLmfp8G13mzflq5tEkK+wRPIdSXfrGgnO + BfLu0SCMkagkBwV1dVMIsfO+DYWEp0IFnq2hb8Hs6+e9k4iCyfPZsheBLGIEudupE/aADNIrKszb + +05lDX9WyuafHMc+jL1qz0NOQYPedsYgkgWre3eUwxflEW08LPT144HmlMdMSEWNF++Y16GokW53 + K54gydXiCXFV5pOdNRRPMPQVV4on/CBlSB8RpMk+BJDlHOT/9YsntAIE6mDyg6hJdqa1h6oWx0uY + uzlOtzvW4gjJtVocvErT6fXlVS09MRSBcXs6jWOPM+aNYg9D8bY5TvAGarexcQ5er9YIgGlFbu4n + 9/PxBkMC8lTN0FqbiP5BN6cok9oIAid6/hnoWev1DDHslut8OxXgoBpCU2a5QY9nWCsNHTAvvg3n + +dd8rsxzkFLPXOwezGuZ2vhFs0VOn1T1elsZiQm3MxKvDNaSBHYpv0ptb3YWOoGKbKI0B7salEf7 + BA/+BMM1wOmoVylP+qkGRQkUUGjoRnxrCw3iwBZIYdwxXl183z80INSvvpLQYOmPb14VXYWSj3vn + QvvhugmsKzI6DnkPdQJQgvpvcMD77icA3e50AkjJlROArtIJ8O7sIqg5ZEUGqHkC+E/HPAjjJBjx + IPa5TFDX+JBiuEvcwvv1hMmt9122DGpbr4K4eyJo54evtoub2Yl9flexF81tWKSoVnfhyiu8bdmC + edjKfWXK1TtwDQJTIQlWzg08GFu2YB4lKYfPGfyjubtGw+LzJgd9SGyKuOneZasv+cqodwQFfjud + wZxAmMmt4Ny4oZJ9ZaeYwIEapPPJ+T8+ngyX2eb2W3Y/wJHWSQxhEsnYYKKdgoVgJeqybUgMQxiF + m2xOvln1Fo57VixidK0PtTYdMErLqgz7wdtBD/DACScEyqPfBgQRUwMmgc6P/7p+inJ6owwKeOKR + 3xFTTkRvHtPvfaXhxrgcjG53nlnmxFb7ekA5f5ce990NRbrdLeePJFdz/sRVSTR49i6pR9o4C6pJ + f7/4aRrHwSjwYKNSqj2GIZHLrsy6gJ1HYPKL/KjtfDNbwnpdzDYi89xKy5P7zdoAqTeTJ6cFwowM + r7cb+CvIQzUyWy5zIp/Eu0RMZlpMc1AyS4VEq6yoP6InfkZwbDqTCN5VJvLcZYt7/bYlnDGMarbY + FPYmLvkTs3lSj+Apt5kNX+zbJ9O52ufjJE29+sF0cDGfDUpj27Nv31+MjCPGalqfXXp0jKogUypL + wTRogeRrlthvEmDzNwz+eybfQCxSfSYHEX9MdeA/PvWvJSNMzFNhnjRN6L1S9nnPGzJ1DnKbH5ct + rtr+c9QVt5KYP6r63zBUOX88PWPeqZd0yvpTD7nm/elGrMw/dZVO1jJFLi/Ryc1AHxv542sQPsbU + n2yB+U2m49pmADTaxIw/nsTCrwnDrQlSht8Q9Wl3CYpzqKCr4HYfR0jJT/l3M/QsN9GOuvujSxVM + 2mXB//PucSxHLnd3okBOu5Rpt5VDeoTcJI3lqOarhbhlKkiPG159USzGOylk+qRU44wM1T2L64hg + mtpxNJlK8Do99YJuiQjyGddEBNWElYggL9bJPHC/z+CkVw5JcyfBCgZBqYkuheqN6tTAjpEHg70L + lW+CCQpw2shKPQJvwYpclaAPU2Hf0XP47Iv8mEqCVRPmRxwlNtVidUd1l3d4ED8JGl5AjsQRxW1q + ysYypyvkwfn4eYesLnrAMa9LSq9ldtF1slnPXr+0TVbfD/wkxto+O7lrzIIkDZNohD9jZbX+MV2B + tMn4eimtur9+Mhec+H5KsUzXU+IhiTcYp0QureEcjvkVJopHKeD/HJ91YVISD7hyKZH0OpuSuE7T + 8tVvVw3TMgnCOp8SvDbzRvAjRY0CJ+Vb4eT6PCNDg05chZdHLtzLj+OL80sVjJ+voOlv4+y/IheR + J2HMHhkhR0iEHK/fMcbcfXd0u9Okk5IrU46uynrdq7Oa64753AYN8tOnv/A0TeN0JBKDZZLHuY0z + GkVX6LMYG4C82Woj0p9Hln8i8q4asGENJk5ZbbvOWvxkxbyWj+63x1pa8tudPG4/Ltuk7JA5BlWa + usVkDOM89mseLpM6I0wQ7+/fg4capAHOHJ257sWpVMSE0iFAY+WndTfJYWcnKQq41pwaDycJF0j+ + Df6Fk2RLguDTM/hDBqukTAokOQzY0f6ih8u29PTTYjG5NOp7USJLYnPVoaPKx8OvJtvVumjwuDXx + XEWeQk0LOvBc0e2uqGlBneeKrtIGeHn1srYB+mGVwBBR02IYem/EwIBX1ZUiUwXBZnGO4/nazKpA + 29nlOq9vZ+vF5YeL4Sde2YUSO8fGLGEHUydK6ruZmyCr9N4LQN2vbmcgAUU1Qu7DBKhkFbW9WBkX + oIp1MihUV42GX2cZ/Suvg+J7fmoDt1W4EBOWBp5XaccUpkFabBSCoBXbQL26zluybFnYLK23f1aH + UMN7jDd4VoM8Vr36zBLdOFsGOCENODR/IN+evKoNn+m0YWCv6iW/f0BqMtvpBY8WvZOlxyc3z90x + Bwr6ElPtS5zcN9Yw7Q5r+4nYMK0F38EFeSTaTcKqg99ZAhUZqE3C8YzZ91Rbpb4fxWWOl8A2E8US + P4tNWexb+ERtc+skhXHKJbAmQSV8IcuGcyznQEcWfctdDsfaYtaUJ7ejAi5iutKIJ90rjegZ50oj + 2YRdaUQXpYPvbim4YYVXU1IiDwRlMqgzK0mLrMQIVuRUggJEzGLCQtB4OBXF5x8OaPw4sJRDc+PL + F19zzKFxfQ+CUVdPLxEUo6u7vkPZCcVCGqvfdjvI9SYYRtZS1EdWBWdvtzQ1uTnVh7+Dv3WoDxe3 + u9WHk+Rqfbi4Sprf3//+91pCOhdVY5X6cMxdiaMRutzRt28mpItU47vsXhcSU1bdpICvWeYwbjny + H4B6fHODe4JwzEiNYU1zDMmcXyyyv4/nsy+5ShogjfHv//M/veeSP14D+KEKu3VyRjb8+5j610o7 + l5FAoadpZ5kktHgJs6eYz8QAafp3nDfa8I1SwqsNQgst6HMx73DYPd6iu56zv33mUbT9Nod1s74t + Jl/2n+w7YXCZlxAo0AK73Ah0HxTFj3wNZhm9CU+9qBuUJT3jDGQpm7BhLOki7VCr2VJC4xHm0aKY + jy1055WGJlXBGWWIh4MDHsH2RHTfiwmIIGJUtm1D39YRjEdD3RounbLB4aSTKXEkVvP/YSw3Yywf + QNeyY5D65395OBxoz0Vqyc7eQM/e3hGPIZDg9QahnDB6m73bRnvmwo4504P0Py8AdF9p42AK+3qo + x+vt/PN2NZzMt2hsHi5RnOVcyISzbHiUWHWMBjo1JQR70O+WmSIecU5MoQbsvBRxjQ5OUItEIdcK + 9b1VvkS9QylyyvLagNV2lyMkYbasnYq1/BNqENNPIhkPh+NSDAtmYkITc2X2T27zyZdlMWvKeN2x + VlhKSt2ykpwss1qUgiOKBsi1shfqYUdrsUcJm7oTTGZO9N3JX+D0P9xUPtoDl0a0l3/6B3VAyyHc + /qE+S8lY/vj7JbzgzSITiM0yiVsqHbstYN/nkdgV7AG5gv5v7J32lwl8xqSkcrp8LlZfhrBtgaHo + JMuxgLN34AroSUJxgJ48Z+1pQS2PcvUod3u0L0CpKPz/fRc+h5fvvKhDtIlud/I5SMkVnwNdJY3+ + zb8+sho+Nmwfdg2kHz8dc9yaR9znPtsLSScLra366tv8O8KUmU4a8tkJHSNfrUcV0haDwseoasdy + CIPAxWJ2uZ3d3DbcR86LN983rA6WXU0ZsjwESdJWWp7A2sWAd8X18Bl3nOpXNha1hH7oV4JKZfgn + YkmQevVae/ocF9lhR9kSOG6vbBaGcTUY1ixbu1Gq425n7ETB3lcdvKnNnJGeHLoWpXRfobvvM1Kh + LDZi8wTN6xpTOYvtakJJBbvn1chlUg3EwlFeFy9OqV7/WGof6YIVr4y1hohEc4SwkFwblQHocC6A + Lk/sAuJpvUq6vtIjyXLCtcFZaI3QwSo5LjMKg21vstVTRUQzXN/fHS1XTAJ7M6n3/c4WdpnLsj7K + 2k96Ey92CDHO5pbSm3jOk1T2+jUoeLA+xjZDZseWdloNGjY7eBWdsqCT740ecXW9yQYszxtd04kd + Y6VjKGuh6ZohC91mCWUYuqdB9RPleoBcH5fHfiw8WY8x5cPZ3NVMjWXeppd2QFOi2x3zNoXkWt4m + XpV5m88v/Bo4KfODWuLm2A84jObID3wvkEYxPQxjV0wFNO0QT9/FRvh2v8Jgi8w3dI8VSH/91fCq + 16Ik17DWc+FXE3mE+CR259nHC/gQncl5vfTDw0qey/gT6IAsSWv8JtRSs/YUJcmuMmBLYh9xqJe6 + G3d5aDRrgQQN1lqVNuKeoS14R4FEspBEv59/nrKlRjcyM4nM5rR/QOUHGdLBxHumFiiO3sV4XhTL + 4QcarYGYF2VOZ5gKRYLzVqdTpxykAyU150xSHBu+Z4s65+fy1OojavanD7UZz3cNPfSMtuvqm26r + 8u0DPYmyVqsbhesroI9UdGIgfaSBs4+0Aa4jSrRr9Dzs7BoVjzi7RqkB2zUqrtEpUO7uslREaTXn + Hz9cqUwEXTd89f7s8uOJKRhdoGHqDR5ZUUWUymoeHqTuRRV0u2Mlj5Bcq+PBq3Q4//HyVc3J4/M4 + qRXxgKIYJ3wU+WnKZGXZejO7E3TJa7Frq7mFeSI20NmTszPxlxPsK5WPvUYTepUjyRc+9fLVmA2z + +fI2o45DiWXeujxcDPyKzbdiePb8HAxi2I43GzTf0euDL0EQ9gTIc49HO65IWUiUf657enTKve3i + CdrqNNIw9L04qh7vJlCewZ61G8AksPxIBntymgSgvKWVE99oQ0S3dSs28CEL9kgdfGwTJF8XZtvj + Gt5nrUM7wDms05C5n/aGjxhUJNg95eKH77Wsox8vOpWP6/f5cSfs4bZMKYFi744r7aGF789DDAOC + Pfh5CcU/UivZQyxEYSRJ3grTaAwHl6L5OUIwbGm+9mAcZCPHniqqZZG7jUy3uxbUouR6OS1cpWP4 + 49kL+xhOYzhk/LR6DI/jKORRNIqjyA8leApuvaWrC8v7oXsXOVjTw2mOW7VJlPYxm/qqEFz8/dEn + bRLIbu3zjG9rPFoTHrLWKhpQ9r2wGo4QDd0V0zIZ3j5Uvda6TSXPIut0GJWRNp5vcyRVmM7ucknS + CWPDpQENZ+LXfLVZG98O5+xM/hVuwLP0W3EtoIULSZUNb7DO4THUT+FN1gOcYfqQ9D2ZCipRlWpf + 7mTyJR5BO24Oqng5PJO0m4HaK4c9zir1yQ2j2zQp3brykYBRqh2RMNjfXHoxdzdM6HanHVFKruyI + dJV2xJeXr+Oa0zCJbEajwHv6Cyh8XpqOOCh8qfSJv8sWiqpFoHOLpWb7Dhf/gReU60tMiv9INRcz + PhRyEy6i/91mc0Tq5iN/nC8xyQplIQnKEt1VTawwZV34y9VNXNthmzGQ7N028asKfFUK0bqoiuiK + 6cJ2bH0sTP36Zt0l2m3YE7a8ctOe10eghci5Aj2sP1Vvy209bG3OUVp7w8HPnwUDnMQayBCm6wNR + FPVG9XMAyeg+2K/eyT3F9C6/Vq8At7PD8dlDocf2mgQMDhDxBnfFAnbo+3w1Xm9Xq2K7wIoAeq01 + GBoIZnRdTDsngx7m2xrIlSi6ZtfS7WhS9XTsgglCge/ZWuX3HSyIjFlB7qbLgXogwYm5siF40sWV + h7e72hAouW5DwFUZZ3tfx0fx/cirufLiJEjhHWLYNpi0IT6cvXjyy8lwnc0FjJZONaSY2F0Dusmj + sxNgWArkPL9D09JwVhDeWQuknV3N77Xy9yA8dxDxytEEvSYSpevI9yyN4jYfHHQ6mKyp/+/BB3pl + FSLGLWH3i9u4JwrVF08ofBXz6ME7J/Ot0CEFdm8+XBRfi9HQHmlymppdR54hge5rT4b1ACdYaUJw + D3eN1Aulh+PoUywNqEbV+pTDyeVSPyLg+fvVbIq6ueXAOl58REwX5hywZO2Ecfxhlg9OatHOIavD + 6aX6beHBHWL9snITCKL+2j6+si8iAHUw+SoBJPY6JYDA7a4JICi5ngACVyVuzcXztJ7/ESX1/I84 + CCJvBD8SRaZSB8acYPG5cmdJvJrldVo7oASOt5iv0Es1MSOSo5IW7LMnCtvCJ3Ec+AmrHj27mmqO + +yRp6tKEHffpAiof1e2heleqXnzO+Gkkgy+TjcCGfyZizNjaeph9/oyr3n4H2M1Wm+F6tsltpJim + 4owBzoAyWcMn5xMnrBBZipLNXEl21W4AAny9kNV7jSfFFkZ0auz24/z7ZCZSx9ua2VXm2QvsfBTV + ZYjnduPA7w8wRCmdQlgpiDFy9Axih06zOzy6KYTXOQXkYKkteQkBD1K/KnC62ronVwRhQFU5u5D1 + e/Q77sGoIXSJTjvMXo2gz6zB4/H2E6IkdtrZHla0Q5StH56iPjywvhfypL7WS86On1SWqZSBwMLp + CbvD9ISdUHrCBpCesFPesnW2SDgepBMRMQ2jHYHiE8WU4JMS7CFOqCdnJ78QJNdfCcvnYdP73N/k + Z5T0eSGle1PIDI/uAjpBFcii9UpHv6amOxwLXLht/6RJ4c6DeHSKeSz5RM7P0yg89ZIu4F/6Gbdt + pWzC2Ff0RdpYsnm2QHMfj427KjlI7Zdn8xWDqysEE/GTOJA4YCGBiajbGw38/Wv+ADG79bLEi8nU + low/wtzZLqZdX/AI1P2OMF79RV7jJDD7Uo9gx0BrdzE/xDONBBFCcVgjQF3nz1NLUdQl/fEcGe/c + jX263cnYl5Irxj5dlVTsb66qCaUsDdJKsUfwdMzRCeqNOIwIBq2FTgB71kx8H3I43M42yPGpPJqn + w5cUrpNGhKBSxhvRvXkLpgJ02WR7Z1gHUsJsYdkdJaULbIuwUk6lE+H8dt2QDVNgoACGYI6OUSQP + JXJWq2crJK0s4K1uZNwRwpr/wPzUdp5s5tUipdpnEHks8Ss+g/JDpfz28Cks026iYfl/mdWgvmE2 + sTbqPPvbDe68cmSKNVi+sDhoXOw3TOO9ggfnlW58K4wwK66r3HPCZT6GNba5n1O1I+ZtwFnxej75 + cDYRmazUa8/gFY1ZWXagBNS9y/6nEMcpTrhKj48olkyvJabPdCt+XG+nQzBhVjf4MeSDXwtQRf0w + vNBigGtJFxJzHg9kF6sdWA2Bm6vA88UG0z4tNq4ObCWyF+IrvQEGpCBlaxiNsjO6Vdt4zJfJ+ZPZ + coavqmm0sM/RXeWqrnNFAUwv0x5R7cFTrx9LKQRivfQin3xxevwRVDZod41HQQGayk55xri/qUca + N8Nu+kJ3cW08i70GDAh7sUnUSF8VWwTSuiMT1/BmVWyXXaNT0FDi2JAAATiwHY7mAxljdwcaRkGU + Gnn2lLx4rJcjVmU1POhUVgO3u5bVoOR6WQ1cJS3o7as39Vg8D/1aLD5MoiCKRmECM0N6Rt7cLwva + jaETfr98VXLggPxvNRWFcMpwjs9nNyZYoq2UVLJhy9LSNPLDwIurOknVmWYDpLLQRZo+5fU7Gsyq + e6jjo5Dte2NNmINUdpRbJZNrXNo72Ajrp402QHIcKUt8dVidJfWBRBTrGsDI9zoz98lnXF2GqgnL + Zygv0tKYQq8U2/XAcG4sb7OF9TTW+gU+GxD/V0yuwK/ZZFs4J4nte2iPg42CJ/R0dijQ5CM4zFWZ + YpwqMCq/Q24T3e4KRuXXc5voKu2nnz5eBnUsqqpVGT/9JYG9AKnGWBBqLCqERFRk2bpAnjbVT5tV + 8PhTmx43brWE9FJL0sb2woTZ6exLvinG4Rgmwe39fHM7K2DDBMtrzMaqACgf5guRsT42SoLWWCCB + 7i3cveBMtKEHKHWJeniAE6TEXIrEaZCwUAdNjtnxk4jkGDCGfaQ7eZRFip0yK4Qzqo+0pJAUb0Oq + yuN6OEGPhyvqB4OEC6pJ0UvZDZri27sjYG37c5WmESG8E9amsCSwjnfYQ7Xd0RUmSu1HZ7tYVBP0 + rcAOXeAMO87o6ytMmnhK62GvGD/1om5qj3rIVe/RjViKj7paRUDQMAfXqyKbUmUcvMt0toZWrgUg + zskAE+4pJLausqMb7WHQFJSlgWs6jjs78NG5Pb3mtfy4cEcQMoNg6gjvRch04YSDLOeB6Sj3hxSb + JZI86P3bj6de2mGl0QNuq0wKN1YYXSH1MtssZb6hLHJ+olLjkpMB/adelmvahfgF65ZCoZ9xpl2Q + Tdi0C3SRXvfW9BWoNIq6dVSK4qGPGBDSOuo0vVUPUELp+0vudagNpNvdiBBJcpUIUVzVtYE1Ohw/ + CZMqEeIvURSHfjSKooR7sjbwfJwMZXmLjtlVowT0C6P+izLo55sMHp4WAsfpulhMFfcK/Souq2+z + DRaaCXP6DrZePHudCwbrPDpHFAyWNkTTd7eV5AVxo7DjS/IeaedjnZ7myQnAbHigOj3sE7H7NrzG + T5DaBmTVWzmhPikYoakd/81/hgLFx+C5kcsYb9+98Lt114EyWyMrxyZPqCNJpDX+8QKOiA41DnS7 + 05EkJVeOJLpKR9I/Lq6iuocq8Cpo6dHTcQJKd8xHSRgJBwCeSf9YrqNAoXI8lC9qzxSvHCetlXA8 + ZAFoQQ/lojJYFyS/QCV9Axkci7ui8sZeXIlvVDjGeZgkaVpNY5AK01i7ajfIEL2phjuiiFcJzEvB + zA88JOQ9VwNFe5ow0azMgXIk4SuUa7lssKTLWLdgar7KVv5yhD9i+sG8JeUO4N9b4DZ1d40VuHmt + h58Ns/m6MDA+5cG6e8IMxIxXhyaPCFEEx0FolO7D6Hws4TCY8Yyy74wOdZd2JCD7sTQhLPR8i2v0 + AOT0wz1eP/8EbXmvv+pp3EcwLtGJtmEcnXpxpzxbesQ1zVY2YGXZ0jVJ95dvNDRntsHTe/jkP0i2 + K+3mE8vppO8xb7HuQHnCNg25zMANImt1qJ2wPR1oT+bscas9kpAPAjdAZ+fsXrrX98PJVrC3HSPF + 5d1SgvTLMSt4lU3z4VewamBHGkv7Z2rSH0oS9wI53Q92JB29e5WmQSo8tu1v3EXlZQR/S594KLzI + A1Vm79lFydikN8+WywwmTvcAyAH1FEfujz5otbH1OC72zjLIPjz//eKtmgktclwnqA9aqmeNCLSs + RD/Atr3TPKGs7FeXXhd8QbrdyTyRkivmCV2l/fr11R92PhILfDhP/EoNdvJ0DG/s+cGIJV7s70lI + +ryCBiY1dxXmLFo6f+r7XY2VI82eRxU611lKLGV8IGpZCRNWqI4wg4rvyFOQF+tN1ggL27v6lxJu + n5Vlutv36/XPWwkniLW0pjPEKscCq+OYLNWik8QXl7ARuLup6XY33AOSXMU9EFdLn0DNT83CxKsC + H/wCay6M+QjeO1VZgOgT4C0+ATlu5bXGuZj4MW+a0/0vjj7t6H8oGWperEEHEJUX0J0nx5rWwmot + KdH92B88NsuyD8PwMRg9ah2KDMI/PrzjLHZfh3S70zqUkivrkK7SOnz/+qqWjBswxAc3w0XR0194 + AFPCQyhJH4dw19m3mIP8ejKumiyyTOjVdnEzq5QHQdsdzzDFmQr9ixBRuWByaIi6WnwycdqWPkv0 + eV70ACdcCPo88cz6lMtCdA1jsTx+QA7moM+wNGU9/vYO9ib3iUu3O01cKbkycekqTdyrywtem7k8 + 5pVApw8zl/lxkow4A+Ml2j1zv8yhgfrMfXSHysMkKz4Duw60Lrl3g7a1wgCg+AdmK46nefH9fvxi + rMgcX7y+1McFbItBmQmQekrBiOMOwEridlcFAyXXFQy4SvPj7OOrun4RsagGrJQESeJjzMEL0EIW + iQ7zSXELNiLVwFkYc3ewDOE4vR9mwxWuPTyEZRB0mm9AO1Mw0cpR/RXTy7BEUmxNa1Xl9llSbeKt + o+G3W+S1Rve0YEEU3Q8G1Sr/JgwqMTnPNp/r4e/utgAo2gFXBB1HBdIddudMduTv41pXthRyejxq + aSNN/ChgVdIP1fnNUINewj3eplZ5DKzrCNSqxzXcA5y5WgsLPKLs8AhqQZslqmePzt/lBKhW7ccD + QuNpRLT2ZigDu6ih2LExKfaH+OsfxMsTR1WF8BiP/0CuA7zLaQE59dNxEnfPoYAcQch600sh4NE1 + heoYIqj283ewjtzVFLrd6RiSkivHEF2lY+jd1XOb3xE2HdATKsizPuZjsShMRhGoMFwitZ+tWTx8 + XsH8ocPg3fq6zsRI4Tbkbv1edTIlbRs395MkjmqU3H0pKjhuoGDM5pmojbZKoE1BsVepmjPi06A5 + 8yQJqnlWsMKEL7eaW5WkVbLI2sfuVoKIS+ldBr2/NPbqTBFm4lO327tsMfznbP2l2GzGZ/PpCu+6 + ul+AXn2XNwI0UVcssw3cqCM1GKGWvyCEL9k5A5w3umYjlLxNSRqrrU59eudwyH4Jbfs7jhEt8/Yx + dQrZ9cPVFEbanf8Fbt10hh7EZaFdjXLZ7N2Y+4hVpoSHffbOi+J/js+cNyb1gNPWpKVXNid13dqU + fB9rDtDzam5KaDsFCdj8sSdBSN4K2NXPM4rgYc3YGHbp5RJ6AHSl2WRVZKtVdj/GV5giqhiCVYi8 + Q0nTRTkZ8CCskvE3dGhqFtp1nq0mt6W++0c2hzf9Ns7+0uaYcg/wBKajYUBRIvHv70A1cT+56Han + 6SElVyYHXVW0Sx9rBlQQVsu0Y5gjScRijmA1aSg9Qx9X90tY17ewRy5R8xW69O3s5hbxUmcLcZBL + mqVN3ajpwrdh+25C4Sc9Sp55NiYMNr1aOheOQyZKkMqat0badNPnFLK41Xiy3rs8Onc1Y8tOvHZO + Eyl78Mbq/U05QLggN/cr4ugpR6v4CvOiXMCTAne39fDVb8gFKxKrPv4Rg96sfASTfIAzRnu7/MQb + 9JJcQHiijZ3Q0XcM3SRE7exYJ4shTLjEqtDduENCo7XTzpPxZ8Ay6RW+LPQJjgQ3iHHTFBV9q9+w + ca05azG94KTDamZNs7LjO+6eroy8vK3TtWNjDZBoaaALdpI3zDtlXSqMyoecS3ZUI3bNjrxareXL + t19AQrEpc0YHpHV/+sfl2evhk0//GK4yTIiZCRBZtQudKI3CbpLjNuhHzuV8Oy1+PyyD1MIbY7o8 + JEJXh0j1IZVGaUim7SWY9e4eVrrdzbQlyVXTVlwlBeHi/QVrMG2TtGrajlkUwEE0YlHk+8FuD/xk + BQ3U8yb+SirfhxIudQnnrlF4/KuMZk1nwnuIjo/PsOrBTsS1nq+eDWUK2Bp0azNNzkBgLUEDFBMw + 2q7I1UqZ0h+WS74UB/jFbYE+BL1j4DXjxM8Xt7iepsqFCStzKoqIBLxb2QyC3X+lyfzh4kKToMAq + Y2KxxVSBUz5whIuxJ9QCOAH9qHUBN31ag/yyp8Cmh9F6LLHlPk/mQCJ21+fl28NFhgbXrZiy0z6o + bvsqvj+KjLedLCGIA562i3XvhKZjXCGbMj9yNxbpdkdkUyG5hmyKV2UawcvzajAWXquSRuAjphei + BwajkPHYl8bieY4pv3MDCF4WNr7PJ2z568d8zpbD9exmkc1xH4Ie/lasvlSwJ+9mG6Eq3KyKb5vb + kXm2476mfg19B4rHbCEDMbJJVHFkHsF9CZF6mU1DLCqx2pneTZgq2xCC81ldsDzMxPsfBHtzXtqg + AQwxr6c9SO31yw6W3yCKW8FWmZeKIKF9qBkoAmpDHMmeJyUT086kurWdiyQgTD+v1bPYJ2Bcq5jV + WGXMC7xqRI9GzuxNm71lB4pqyFgYVAuZ5EyYK/reyW0++bIsYIlW3zPaLbjKcNY89JZXm/nVyqs9 + L0u7w7WwwMudYmTulhrZZyaB0ltCnxHz7UK119qlnsZBkMTs34PXwhEnjxucP0bnqCkmVIW3aqat + t8t8VVFKKjMkX1Uy0GrzQ7gcTBIIsfppwq0Fy8tyQy5Gmo1TzGjeLtQowr+JhQd2cNgu1kIe8VXO + lmI1zxbNozPAfUprKH4gXBQ48oY50DRRnBUUnO1KllxJtpj9wLFeTMDoTWRBw6+zrLrVuJ9BKNpv + Fe0URYxkFcEx83SH0raLbOho2BSfPFH1/cV5dB+MUSiszBlVj6jWYPV0co/ZyOoBXA3dw0WxRAyG + 7prhmGXztvPOuao5jCjmcktejcUeavXdKl9IiEa3YPpjteTeXmqYXvvgb+qFSkfjcBF0GOxck1sw + qVaNb1rLB4joU9vOfafFG0haRp09LOD0f93crnICMdsrdfenBYmkuzwE4asf/kKfXLxHfUjPLIi+ + YUA1Qw6rlAyBMgxDBr+a5Euacl2yHSir//dLFobuLiG63S1mRJKrMSNxVUL7Xn2oZxPHPK3GjMYR + j2BDx2yHNJFmwNsFhSDCv40xk7e0jJ6A2nQyFlhesFHg7/Up0wCRcr3Ksy9T9MOACg9P4h49I9Gj + 4bSAu6Dbhuvb4lsFjZGcNxXpa+p2dFWtZKR7facAad6uFw3cv315qvDdK2/TqOeHXtCelwdWVghd + XNEyZX9o0EJbbUxbFWwlbfAnGqsBzkkdlYoSckoxKgutdoTzuZrKyj5D3znUJzXoGyuxJybYntwp + mGxv+v9+PvmrFCfWDT6xc6E5+V80EDTnr/xTj3dCRJTPuAIiqiYsPER5UQG2fUa1DffUCqsmfFWx + GjRdHJ7hQwPxKMZKWBJ5FCvpheOTquN28FOOiPJQg4V3biDe0wBJ2U0pul+DalCn9xp0Pg8jofLp + XfHIF3uA0FTNl63WCPNIXSUAsa/57jFUxoFDAz8YBleSiB7L/Bl7DYtBrqBuvJzOorq9XmBNtPqs + 6rE5tOXqHMMkbB+dZ9t8C/yQ0j1UKXupShw8akGUJlYF43RmYOgdmFicSuJwxnkX4nC83ZE4XEiu + EYfjVdrlP5w9r9e3+A31LTxO0hC5xLyQyzQ+RQiJc4Mo6DNFNFulGCVN90N2fWjtieHvRfaRNImC + Q6HgR62yDMc48Zo2UnMkLKghQTaKK128agWpXqq7o+PW1GqW8jisibSIV8fqyyUBq1WlmMatFcHq + bSmW3DiSNbJYyyerZoDJ/iq8qLL7NtlsPpzni5vNLfG8FXOVGF1OnlWZ6Px+vkRTCHa7ooypCOHz + /Gs+X2O0hl4NjiFK47hdXH64WD/T8iTGFvWxhrKgNn/LlswLlgOc9CVXekoZZpIcsHGsXI6UYzhx + 2yi5fekLsY9LIReOguvZ3Cln6TFhxe8h6D6YKLVPq0WscGMk24U00l/2wnLdE846nBjSm8PDDsQi + dLujN0dIrnlz8CodMW8+fKzSVXKwmXgtAzhhLIrSUcK4r4pX3ovYkIrkbm5nq+kQ0xgmt+oaem1n + 05nIX5tl0+GTN28/nljxJbixtK+r+9n6mfIJ4JZytlzBh31HWsFs+AZjLWq/0UgBEgAQ19iGKjJQ + IOyu22y+ptwYISKjvxeT7Rw1cFRkQDhep7PwzWLTwIX5f7QotTynv+AUGOCS0M6kOAn6SCd8NID+ + fzaCkR4Mup4SpXpzl/l+lKbqm8K/jVGXIRel7Wd1aafuqeIe0wm/XnTq+d3SfcUjzsm+1ICd6iuu + 7UDnf/HpFbxnpLIe1WVDHubxekGKvqm+fB1HFR87RfOckQMPTB8UmYcB+Vn7AIjiHpf4Hp0KZ39z + L5z9rbFw9jejcPbjp3d1eI+ExTV4Dz8GHYSPfBjBIFHlR2Z6/CfNFviO2AJl6dF2Xo/e2OiT9hnM + q9lUIys2EqSpn0TVc1gSFDbj0CRx0GaPWuKqYFJtdUCeX60DanzFgUBSHJegxpdvP7wef4btE47r + Grfik5f+yWhoVrLqWzKRAiYYmiUQle50dUTToYsmZEZFrnhYW8MzLTALZS1SXTGpTAAREvSaSDil + tLt8Dr9Y3Sv8ZQV9g7/7Xzi9Re4S2anD5Xa1LNb5eoBTSOOThCz+QSyY6BiLTVPG7K8OyRKBzyLe + /V0xRUiQb9c6814PE+x8t98yd97oHpBDXUE8m7fZHhBAH0ludpAElUFVQ1ndKjpZvseBcfZrAouN + DR/Z+0U/xJD2pc5zwfmb+NTjXQjLyocc9Z6yEVPz0VfpfGpwzw2aXHbvV1NWYSgzGsAwnY86nHCC + RWRCCCcY7QSNPeVOU+Yq8ZEZIZ5+umi0mVrUuH2POWPreiHl+a9m18QiVlRhut17EFZSVL6XyDI4 + 0M6J4lKQysc8NAbm4OlznmWH+w3V6iZ6kzeXXuh1wVJQDzhpq1p6RV9V1yUi3fsK4phAVUgqNCeB + 9/QX7qWwu404QiYlTcgKppGyKj7P5krPuoN5K+J70B/4yqqO/o/bFbzKfw9YQuJzDZbAvVBbtfyc + nzKv0w6vH3K2bFUjtm0rr9JcWK43MgXj6u0HX9mzk2K8ysXIFqvB+XwV6dTVaU5oTCaZueICuABZ + AxRIxi9L5I7vVzJpV/ldgXrykdv+nyDf42h+kSiklOta93dNqfc9TlwMYhgK5GoShZL5Yt1N2fcR + acIez/VsDkMmVj5YUFgkRUn7riJDJrNhRTehn3PtPpY/7QDn8pXl58Jdtzli05X94vIaPuck6HI5 + 9X/du9Tevv2bm1g/SpMOYn/dJ5diZyyoL7lJobeKPshNe8At4l6kUF+jDgnGdLsr6mtUTzCmq7LO + 8PxFjUmMR4lf9QqNmR+nfjyC41YwAAqt2wyAv754O8RQBPZbhWfy/WTawHuPa+hbBn+0wxenPG4N + 93CP+17CauGe40CRYY0HYVRzOvV1VJ99vGiFnInaPzXx4iSqlvUZHd7Oixl67WA8sgM1dpvpkRI0 + 3uv7uXKQz6b3c5HbuylgwKDpk9pgPyMHibLgx+sl7Eam8SUcV8pHtt5J/PVMQJeIA16hV2R3WHGv + MCzy9QBnbgmWGyQD+b3Cr9HQNzv5HxtLsw4VtvssP1RqO4oc0SSWC2o3gNxuf0VPeAA4nfERe8Lv + 3bl78Yz9JDhw4+mgfBpTgg518B2Lw/ooqNd+ABMRHhPVAS9Xg0tPPRJXZo/R074KrkDnjWUhBfxq + nY9z2MYXMK/vZmWBoFsz1Q1MKUGxTvb33/inXtjF2Cwfck73V43Y+f7yKilF629TZWy+/Mi09vnk + 49nFyfDJxfu3LzD2kyRBEJ8Mzn9/f3F2dVWzMq9AyAAlCb9iHEfdrMxanSTaWMy0seBLb7vWr4LS + SvWiSsgbf/xb0E0UUW8mof0ZO9/9p1g+klLbMCQ7CjiA4CxIGOUpXuUbdv5rdW7sPgDVgkiU94WH + Lxjv6mAvn3L1v5TNWA4YfXlHfoFhLiGw3GC6kF6VIE2pDovREdRiha8wLcNZ1fFSKhK7lmRQ63y5 + gcMHgeIPUXaO9XqAANJyMFuhczG4j2j5YnrnN1lDKQh+HP0D4fskLFuJ2tLBp/LwfosHiiH8yPyn + ctUzWVwEBv0+jbEnAGPulfQvHcoffnMvf/itsfzhN6P8oY3+pZYfMuaMs4CN4EcUSPA5xApROYgS + vATxDG4WAt9MQomgUQ6tnDREcp5cfoDrapcUhqIytAX2SCNXVjtt9JOXlyeG/iWcEFerJT8QPMiB + 7GPXR1coP9oM8jjlIa9znUvJVv5+tQ4DKy9bwN4tqTUOtZeXzexpAUiM90gcXElFx3XcFfT7MSOr + BvWZKGT+XGwXwl1xl93dwbaYLYbQUMlovlzlY7igHXmCbgSFl1uRSmEVKiw6J2RJBd6lt5CBWBwG + M09IRG50GsEvDcf7hLRh2seNilrrA9VnjGrDa3bfTpVKDJG571gNNNHttiLHP8rc1n3GqHCi7Jhz + o5YZVHaTqwn9AC3tpj/pMeDdQxmJFyRGB9T2oS7HHPOUqZdE6akXdbP05DOuhp5qwrLz5MUdGq0E + zqlmjthJI6V00HV95oeDgUx67YpFY6wIl0fbBhpT21LpOtiZ2LM3vqGGiphe3l3CFHLXSOh2J41E + Sq5oJHSVNJIXZx9qBZm+oG0yFZIAFBKMWEQjjr+V2Ccv8nl2j17jRZavimvEMcy1KvAiWzQUXx4S + jzCw8hlPeaKw9x5VkP9cf5nw4agZLSoybBSQj7MVW47wB6cfiNaIWRLwV4zgyCwK6Fc4dxEbW/du + iWU7krvUJp/fD2XELdeYt3o0BKrkAIdYHauBxymhNA0lw/yBENCGeXe8Y5w0fEr2sSGCwVrrbnKG + EUvsd3J8DbUsuVyWMNXd88jpdsdlKSTXliVepWX5CVMzauvS9+PquvwlDgIW+iPERgxlkcLLxX+g + fdK6NPSy0LWKxf9sb7Txe7m9xpmYGVmd89kXnQU9wklBuDRl6ZJREPuSGw9q0Rg/Eu2rwOSn6wlr + 3gl6SfApM7/rr9CCMJoEXksCe5ImPIi8lvx1LGapZEXbcUDWVqi9W+4in04byrSDkLFWWsEwCLlf + q9JWwHvF/H7Hi3pgCu950cEjmUMDsRD07sVT2r2CyIKEs9D4Do0YPniGfeBHVG61LNabcbMBcziu + oJgtZqeYs8pFOwoZDyQToukh0292DFBUL2XSYUiBGwx3/sQMb5BClZOYjjo26C2Ok5rKWrz1XSaI + vcql4Jxpv0++OBQ/vHzxItkvq6EMj6mU9POYh6esC16UesTVWS4bsDzldI1OuKpHvPpvQwbGhVhM + +eaH4Yr+aNAf1d2BLKX3gw7GAd3uWEovJNdK6fGq5Mr447c6mVbKa2Ra4zQJMG8J0T1CidZycb/a + fsWiT0K1HA0l//K4VFdn6wKdSFJPuLj/0ozWgmEhm/yK146vKp6K3XiLHhAHbVAlKfPTlFUBCEW+ + DlFTWOe+l0aN71Oey+p12kCvvbSmkQwqHUhHcbZc5tlK5PVcY3XtdEtH6fV9FUf22VCMnp2eJ9ix + VfcjFx6NCdkfYgAEd/C17LFcmiDz4pv6eAx+fJ5vvw9Quq4ph311IL9DbPPV7z0g4wZ7Fe82Or3D + cj0Mr7ZPPMP+2CxiiQ7SNqcfWlwrKvIjg631vZQyuJdwfX3c8PVVxsVCxYgYBR02cXG7KyMiSq4z + IsJVRXLxkTdQInpJbRfnXsQ8PuJwTmKiOe7iz2drXb4/9qu4qGYy4zqbb2BbmucrgctOLBOb2xlh + NF/PCvQNiQxGUKyNrQr6AeTKKxo4YByqazhFUdjOm4r1dv4Z7hyR3qgNFhU1od/iQheuGOlZltWk + kvViw/sgqvcQK9xj1QPJ/9sT/reTEbzwtdGjQ7M7mw+pBMz7FlstTmCL5FU2jFtYoatifScgDdcY + xkaR2s9j2pc8tBmWLTuQobusxh1hDmhzNmzqJbXTUAn1QUmohckaB8cyV5nXblfTaw7++vN0INax + PnFh8Aayb4TV0PTkry6QjlFMZzZK2K6OzUntz7GI80huwLU5V0nh3fuRAWitfvWtpqttw2beVtWO + awXv3rO8dr7NAZAdfWslQUDN6zRzeL/G9PPjgY/F1oWPdNr7fkwTe2dMf9A4LKAVOp/BPH4UKklk + 4T4z1jEVVD7UCfkZG6lDP8PVHTHCT8Gvn6Lh9+GnEHG2xmsEXqznfy623B+sxZ8iAzQiS9/zqeLJ + QoxcI0uOIP1GtAnxr7wlZ3FvBO9wp8AhCY9Ih4x37uyTgz7CxxIVfNTsoCrE7oi0c0GjV7on73KY + LYhWf0DLai4S+cOLyyDk7pEWut1JPZaSK+oxXZU+jos6+YMXYYjTRKSNnv4Cf/AkikbwM0hSGQL9 + h6o/ENkJYKea+6bEZhuusL5B8+HYfoBnRqYOcmgIHliB9avcIssGuoZ62YOtn8Y1EFoLhzWM0IdZ + 1VGbPqFRJ/V4WoWPteUHQczrKECG6HZPSJxWVetG0YOdHX9Uvw9wRig9iyOivHwvMi2bPqJrzVNM + m5MtzCG6UMuK3LcBtdJJ/6jim5bKnz5qdx5JOQkuBrx95+px6pfDJO1W93yP6om+H/luBwnq/9Va + XVE9aWu96ViJPNf8IHV3+9DtjueakFw71/AqnWt/XFzFtXMtDKPquTZmLOZ+DOcaiwOB3CK89wg2 + ig7g1xdvx1RBiYk+a0rHIx1NmNYqm1PmfJZmjeBlbi6JI+yP5Tp+QEDa5qYrWcKtBEQt8LTq+6n6 + TTSRL3d5b4IqLZGRy+SxFKmJ+ktBesAxG+Bs0mdiHEpQOo+OMRR8iIv+p1Qe/PULPh/JwRhItiqn + RdPR7Oc+xTCOFHT8uaH2eyoteXUJi9rdjqHbnfZ7Kbmy39NV2u9fnT237RgW+CwJ0T9ibvgJGDJJ + EKTeCLYfn8vtno2bnEBj3/BthmOK8zxr0NvMCCW6T1cGOXUV1sAfhScXXJUpzNaWc1aLVpCPuCOB + Zg5mOmgGGuviVXZ9rE1kEToLuurqZt+hT9rMpCRsS99C7Hmvlr5FPuL5bLmDHzkKbNvu9VvTQEr9 + mKesano1OGMtmWnYlhCHJjoYGVVYDGU3WLmeOFal/9ymlPb81lC77IrBn2UODnCl6TKVlKEfPgh4 + pNNgReLqsWlTWiGVlByNH3K08ISgqOXEI7mI17eXk7bRSXWwtMbiZ5/8ZE0AE13tzSMKBiJtkh1S + 3PwYMC4YHpjWR3Tqvi6PP4RWIiMgIrB/0JbsaHv32cJu5JRem2r18PSCrHt0ymVv2Lz95Jr4Xty6 + mZbd/mgSWjgnJNXG9zUnShfGoL58HNzTaPt+N7R93x1t329E2/d3o+2nDWj7oZemI8w+YDKz5eMt + Bf8EKetouCgW4012c5OXxCvfsvWwRJuX5arGIaKodf74ModX+rYsDXAlofisjXelVz7ToSsZ8z+7 + +nh5pmM4WiMxi70bYUzussntDNSce4tORgfZPm5mqCJP800+kba+RPtableE2Gp9ivz9eANtbW9u + l9sNaIpbRLIffPz41gSkjwY/1Xw/KLHvMJJ3NdEl/cj5eYj1iJ2AQvQzbuHSsgkjWqov0sT1/SSN + JP9AeZtmnPx08Qo2DlYhIxlySzoP/TQIo0GJRsu55Ib00g41T3S7IzekkFzjhsSrcjX/fpXUuSED + XuWG/MWH1/f5CKxXQTUgVrMoA8YFc/X8laLKKNbJw9Ud7eYkNWUhaWo7YUYUwGf25wR8g4YKTY6x + 5K8wawgEW6Lapho/gcr9YeUUk5nwEopgmt6CnsmKa9XVTTKeweKabidlQaLKt8fWKaMYh2EsmKLw + 92Vho7WZnW+X6bKxhQHOlZJSMQok6fODAvgGYUBQNrsImzsotTLxSqUodIOK/bmMwlFSQf3tRFn4 + ACzCWM+f1GXKkTpYbK/Mvmqn9UsotvPglHkdkdjEM+5AbNREBYdNXJQwbPlE7qE322xxPx8bsP35 + d8zwuMlrY2MW6u9/7AqbMB/BNkW6TupLvvaElTOiGcVyd9ZhQsmCNhFSnXfIlFrHTwMpYmHk3wuR + ndMUz3AmxUJaI9MA6/ppYotIfTH7KlBcLossZJy6RBRBb2ZLByXJI8O0wzw4uHt6aWznKgvkKrt4 + zp8Hp17cZZWpZxxXmW7CXGXqIq2tEmJXgeuqiBwocWUJs620jSTn8KfnH18wkaACWoHVIAJjwIZi + 6nGhUlbjNOiY3KefcVVWVROWsiov0nfj4AlUcJnbl20mt8NS9TI3hZcfPr6Raq1eNC8XG99qSSiu + iBIkjBGCHmhsA2Z1fnc9P2aKRkkqpijhpoI+oj1gO9ZyF+mxcqsdvdt4sUfuHuqLz/Bbkcy6G4vB + LcnxCAos32OcECzhEL5doXMdmb3mWEWeHdF5vhfEaevQH/idYdDqaxkHo9DOLD4a+oVHap2CSeN3 + tirVQ64rVTdiLVV1dUcWLvpFGnUetUSvlhteAe4xmsO0+ST15HrlQmtsgWKsaIPYmYob/Y68aG/f + Yqt30G4DV20HrpDd4LDCE7S/bOIxM448XMWy+/l+LKGGZRvtJdNwf68DcTK7AlY6GVnuhFPHmmyd + 7KPdK0BtYJS6ff7OY8w9xY1ud3IYSckVhxFdJdPl9fOLamEjSxNUmU2HUfh0zDzuxcGIIfmuKk+H + beXJ2S8nwwYGO7tgTOAkfhenPaxOLCRYU39rjMPtugZmaPkx3qyu2VI4Pz4s58jCns3XhRjH9RDZ + 6eZgVuK4TNHNnM8lgcwKFj0cknqO4Ok5g/GV3q3X18t6vWJXpE0Ov0uCOtKmkxwDrRL+C4NaBoWJ + h2c7xHhr5p31Roa3TXfLi2ahoBRGvJJiMGp7RSsn/cnZyS9iWMfqq+VoW6S3aezX0i5K6fZra/Hy + rfMhKrWbfCEqDi0PXr0nRpWMDtCgELsj+vfgzztlB7hSlbvOk5y2nkRNbOwkl01ZDIpQ2cxRVB8u + nmo9fRpwnCXieoUXa2R93kFgZD8BlH3P0ztRdo5EdGdeQAJkotENzJKty4n5KGkjj3eVumCDNjtJ + jwQVFTuiscD2+SxbmCN4YrgrGesMKKqf6uCylM1UnZZ0eYexUqZxPrG/DSMh+ffNSaUBHgYctiO0 + TkAzoOwlA3rQoYLZYLzMNrCWjkhtfgxpu2rMUzXmUdDVdyYfcR1t2YA11HRN0p/N8vUXTJy/KF06 + mnx4x+8M2egki2RdaBRElldWxd2PdxfBYiNwqdkKTWaqpp+AgYHW6hHifyLkbSmDIGPMhAE8Oxb5 + rpy0DibZIeL/BBnwvZ1oPaRhMW7AGy6K+Rg3J3HG52PUbKYwPrszlZwXQswISpE+ew2fDdbk7PiS + sYBHdCRCN5hSEAx3C6t4erg3zvdkvRZPki51yHi7Y72WkFyr18KrZMz+v28v6nXIQpWq1iEj9WYS + ozWbeKkkYlb0giuTLVKEfr7OsuvZXHQ2ZStNV9Dot+XgJexJiw0utUpG0vu7NWfjq7tJiH9Eao98 + tjutyWoZFQ0wBrLZStgQEoj4w9VLXxcRRWkkNmROGrfxREcnmoOAVowxh2d36cqRT2FLeh766VrB + rXb8hpQyfU2VA2WKBIkcZu7sbtvoqnoMeIXGSfMTMsJ8L6XIR22+ug2lUnl8gmK/eMcSz30HoNud + dgApubID0FWZ/3T+OxaD2VtA6MUVzOcEmdjhQIgRqCsKZAXPR1h15/LDf0fOCxD15UWm17ZMiZoU + SepQObOT1zXtWDXZFzo7IgHmK6PsoYaiGLOKj6Ystkx9BlPF4lP5+PvlORs+gZ5jSzwg4C98Of6t + uGHL8bv1JlmOqbtOEN7Yos2RbtN8LXe2odh5y7W72MJEQHd99jWDg4b232cgo1jKuhSRVHW1nkLL + 0l9jej/g5bQZQjqIeH4KC0F0H7peZghcsMoJkAiHa0Y5XcVwlS0zmLegBIsZpXbciHkMtwYWhglt + NmbUQZwV8mu67YEeEebVRmdHUUo7i5aXRiGrboUCsqvNBGtjJmehJ/aFZr7K3YHRVpkp1aTAzDFI + wjSQXGNyCdWyeBrbHsYNvhy+6kD0hD7rYh5BdYoXytQdsfdnP0fh92H/D2oDJGanoGNBzR2hsPe9 + YlMInKWUB0S7zWFnE9dchdGb5NTzuzEV0jPOPIWyCZulkC7SOQU2mswYM2PlFmXphzGRXZo1EETp + mcZhyJL0ZNDp2XNocoDtCtrD0E/ImI/CWsh+gvWTx2DFeUlklbFRNeYRnNRkwB9W5t1Sfn6QLCdP + QxB5tXLDvaPTbs7t2Oh7bmmP9UtlfH0J7KPGR61tnyzPd8zrABBLt7tZniS5anmKq7Se/5/Lt3Wk + EC9Na0ghPPaj0B/xOEhiqXaaIaNT+Oo5TLH/ZMhTl80LAd2sYCekBvr/rGZ12A/bOVWB/vhZ6mYf + SByixGqu+2Bkhth+H1c6SVYL4/0a10DMn4vT4W2W3xH6dvZMqIu7S5dm614qf3BmaIOdR7wX1I9D + 6ncCAUj8az/oEQHnZf3bvHhUiBQoKDZergd5/dRfPjKAJZ/IEV5fctbBYUe3u5UrkeRquZK4Stvm + +eX7msMO6cNr5Uqpj3GmUeqHcSq3zffZ/8ApLBKBwchYVeP3ZexekeaMMA64Jpx+pCxcF3el464h + uE+b7fnq7mg21hQxlpOkxrCgOXEoNb0ZvBoOkjaxPgeLvFr4tCcNw4sCL2rDkWgUqDhYd8mMGOsk + s+z/OZZCqVHY1QYeNy1twBxhfhBF/x489KR4JkXMFgOcu7p8KggFxCG+o7C8mz/PLa+ilVTcC1N9 + auABdSeEgV5YKGGj4bSYfOke2sA5IXYU5+SPVndwxKzg4HHCfkJJy/59vI+qlJ+S0UIhQpUPCm/c + 3V9xNGU5cdTKDNAlukyui+kegInDq491w31wZ+FOXBt3bSvqWZDvKrdpGtZE1sfV5tNOSTtP9lDl + HjD/dXzqdYSnVg+55h/oRqwMBHWVTvp8dSOzEeZgnmJAv4BtFt0BliJkJsE33fgSxZg3oVyRg5Ik + XDo0VOoUPHmc16Hc04hGB9pSL+Qm1Tl8n0S00fXlKOmCreeeY9AFdZsgZyi/f+eIH/4+h4n/IYRD + LJJ9Nb8/iiQvFAM5wwzCo1wtSVSeg9q278PzEkkTwvMjd88L3e5oQgjJNRMCr0oT4uxfQc2ECGK/ + akKMQzh9QjaCH0kskcfx2eVQlvivh/5wfYvHOIZJNpNb4hQpyQnXkj5shWgiGR4OoGCuBZkXJv8P + v6GL+2uGH3EvVMwyW2ONauhkvhWHDi1y87dC+8xK6tHyV6fKCsm+BzUrxEyt2ePJNBRp32NxGyUq + A+UGwcEbuOCKfZDmLAoq2eNtcrUV8GE8ny2+wEQTDpx1A38raKZJ3Kb1ww4ASn/VtKjsoVUYPdxq + d4D/6TcdvMD42+393Pr4fPgEro8vxhcnFr2HREuHPp8tsvkcxl8EL+HTJAncerbJVZjy5eVoiDrY + V0kHmy3QJYCzB7sDsxXgRtnMqJIUQldVv8Er3qgzHZ83GXGG5fcLxAo5uT6Mrc4e4BrQZgyPkoHs + dFMjMQg6W4bMWaU/5KRrSTT/PwxZ9wQPFkdVUcfEUQa9npV9+cViSU07lSt36pgw1wTwdaisnadl + rOpVeQqqcdipWpUeca1VlQ1Ylap0TcYcBEPuayMXUq11U7mGfWRyP9dZCbtuNRrF+nLOPckWK7E/ + RKSfNA5MkzyilvpRZmXtMXu7Kc4sTVPh4G3p/+4dpyZgooLgLHodnnpBpyC4fMY1CK6asILg8iKp + bner5RyzUXFC2onLpf9MzTXlQfvj7h33B653v2Nwr2hFBL29RAa9A8a1X6ntBHMvhnaRthujMGzK + 3u4uj9YHRWZsn1fnCf9zc+Wp6MbuDvKk1ny0Rxm0FIGWMjsfqiEta3yc8rSrFRHuo+bHhFJjvC/C + nWxmm63AoPi84yXdK6CPaGTnuZaqbcV/npx6cRdvk37GdVtRTVjbirxI28p0PWW0qUxnQqeAYxu2 + TUEjifl/m2wYwM91hl2ASTWY/HeKg3Z3Ovx7scgwg2L4IVvO8hWegUIG7MCgBU+lgLEpYIANCigm + 2LmlD0pa/xYK+eHuJ4qLfs42MJayEu9op1ZvLielMUUhbYNmb7uJbbEVwpAxcWoX32fTTNbatyoP + fbnDfnpVmXuxVC8VNmC2p0z1cuFSxLJHmaeU0RZpI4KbuRmKaj9h1k6LRbFaj8iEni0mxWpZrGRO + 7coYcazC1q6r4vs9WIWd343FR7xbOQ3RLSRuwb/RPZhsu52Lx6WVv/vNsXL8W6Guk6vpW9aIyrK7 + nocngbHqaDXX9yhH60du6IEq5WFeJ+olvN2xlEdIrpXy4FWJS3H1ul7K47NaKc84gkONBaMoDqNI + bvtvzLrW3y9flVU7IH/ycHCmO4gsBPh2K4tRmHIWV4mij8idGuiEI4QaFoFjyv2ZZKvrAs8zR+a9 + 5k1j8AiJ60GUBDKglNMmibDA55PithBJ+tul4CycTPIlwRd2UHgCpuJr/hmWQXcr7pXPuEbXVBNW + cE1epPn+4ezFG1jrQk+BvYV0mtI0r//akovGB1OKi0dngST/kJsXyJpsV+uiZLbeSJ813nbTNcgS + MYoCi/cqN9WDD8Le9IS/YoGwMC5SysZumCc9hOESRt6RplmoSmUX+cnB67pP9SQkVtpfh6/OXhyW + NBdwDeXwhnmnHusG5EDPOMM4yCZsEAe6SEvfQqwxYanQLaKLkwaN+M9mC2i9RFEwkBjQjwKWrQMa + 3cOCVvs8jCRymQTxOxJn768KOPdj3aSPDR/uUEzuDv6b3jG/UWZgTe36PO6zOfdUavfzp5fs7L6S + qgONTM7iN+kp6+QMKx9yTr1SjdipV/KqdLNP75hMeHiPf13in3z5/u6OLZWrciB+86v4za/4G+3D + VG5WcYOlVwq5IvfKTwgZBv5jdT1otsBM3E0zJpl7tg9YM3X9CBQNQae1C/asAwAw+S7s1z8S/1fN + r9ALrOxBM3vX/qZiuzle52NBbSjwHoOOT+PpaBacdr91F2jQw5XooOGNj+4MfYYnFIlsneiH9fNR + maVqzwj0nhGegT7GOgEZG0857xq6GXvbUJcd8NbX+XReA1uvCMetIY6ivtgJRP7vy0t0nRGQtgTC + HsuEl+mBmdg9xMsOUts6qTtqqoQ6gstfMH7qJd2CLfop5yiubsaO46rLdMRsr+fSIGnD4S8B+sfz + 2ZeS3uuumGI93Wr4IZ8mgwX+gZFaxlOFNRaYy4tun1DvHxhOCZkB44QvVJoFZUXOcaSgoXRxKHnw + XdPWVKn2At+QBYFE55TQFLaJU36Camg+u6lax7uRiA+3OrpMX2XMp/KEvTp/Vb68eunWjbhWC9BD + Nr/P/MQaok22B1RSrUBKeX1+yUPuXjVHtzv5xqXkim+crtJqe/HpY9U3ztKYV4qNg6e/xBws12QU + c99jKiT6SQB/jWTa1n9kCiLlXolCVAxpwE24zU4/vb8QusLFxUz8hFtX+TUu6vwrTB56thKzgWkJ + XT2bk2ojIJiIwWqVL+dq6ZJH/sV2U6+tK83HShFz7FTEfASSc0sxtOiNlvwvU3TAYq8lVTXh3A/C + WmHd/Qp0iSmFpYvv92UigUDLMADfcr0jVbol5ayNFFq1OWgY8v3DPaqONUW2Oo/0syFYjhSJwfzV + BpQetf3BlkQgPwOc3xrpGCn28EMZxe4MHMBj4+rYd2IHOGAYukezEatBaECitw+OvRy8XXdDFpMF + 4+ULH5X/qF7iIIlHs/PuOAWOzz1Vp4JO7WQ86lhwpZ9xJiKRTdg8JHSRdvl/vlA44kr9KpV5Aj0y + VPZSIDKNRCmsvR+qFQS+RA46MH1KDYFObox5eMr8boqxfMZVLVZNWEqxvEhD8PrthyvtXTH/oT0q + F+vPfHC9vhW5iYylgfSh0BpBM1hsizOBfqt4O6Zglt6sBPtLN13Si3hkAC0aR7HrgnMWsAdrMm6U + MoMumdUF1hnmYlkGbYCr7+ySPag2njX1JFexe++KIUvIorBG+VcXnKSfkcx8kNmZSoQd+NYO2K7i + dkeEHSG5hrCDV0npPbs4Z/WMEIaVmRVw18D3gzQYwY80lVpvlS96kS1FmeCFCNHgqXGuAFoxL56y + LKDFEghgUoxnd3fbRYHB8NlyhiNJaUE5/KNY5go+5mw5YWwpFVz6R1UvzWTz46VuXs0aW1VNWjlv + Md0uTvw2RIkmxhA8LzuK229fWvpvErTWf3lgggRejd3kuAZav0Br2JP7ydww5yvKc+LZ8EX75alN + GdU3MYS/qrEk39OsVr8Wg+Z6WBs7N347Ayh2myf1JpZUh5/Pi0WjYN6xv118KlXE0ZDt7aDBua4x + miBqQctyHteW86/nMAHojHgCy/nX85NRSQ+ftU8/q+ZuitmVRuafGvHZ4nZ2DT25sqo7Vd/S1ENE + DrKJhOWza9oMxA6nM7dYFA3kGFjqQH3InE6armqFA3vbw/vR4J2JLVqAjmKPdkWsiL0oVp/tjrJV + Pp0ys9N2L3unXsM9h45fa2fqhq/IojCyCjT1GLQoLjsdYSwg2svWU6k6sBkVYBw58DveKWQyu1CM + +3SG+kDHIhiytXectPvNXzht7Pm9w8m6X2vrJM5Bc3S1fg/FRXGYyj3BoslKy729+iPC96HO7OSU + GtWlRK58yDnBSzViZ3jJq1J3RRirfHO7yuGVF2XkxPSemGH5pt8LM46f2W2i1RkEMucriK3otFHx + DYubUmpXrREM9wh7l3LQwx1gXcLV+7xibpCvMZViyJ5qGoJDXWYxnf+6slHMhl+N6eDUhnuPhJ5m + 4HkEWIdwDtDpdJeBurPIUe362Sk+IVdws36X6ghxuyvcrN9QHSGukjF8efE7t41hP/YjHlVjQAg4 + Cz/iaMQZ9wKZL361XQrKrULUrxh+lLvZ2lIDZdnEHBqeLAcfClB41xswYg32cQF7v4CuIna0kl5W + YKVIssNNASr3rBAfPRHwGJtieJ4v3vjjN8FQCl1XoC6+4K6HmSCg8KtclWclWIuCMZMAc3JHefLh + 5dVJhUjlNf/1Pa6fG0UzhiEOy9EDH3G+zoPl4Or8fcmuwtOENHAKFAoxhrqHVT1K19+hnrZ507q6 + sVoBNTp5sKpSJGGj2Puha0GHW8Otqm9NCkdzlNtIHBux9nuTvptx8TGiAvQauFa7D4Fd/34JE9R9 + 96HbnXYfKbmy+9BV2n3eXF2IhELLFReEFVdcED8dw64ENtTIj8MkjHYXZxUraKBenNUrrHUJR9/u + Y4oqcKtlnVYaJEkUpQ9QphWGQSKKqjyyEaiK71Dj+ScWszxOXJi+zv1A516lnHUM8pUPOWdeqUbs + xCt5lVbiajmHBSad3JF31QCF8c6PB+2/EQIGvh8xnoaPChujRyyLw8jquwcyjwSUQHT40GgT7ukd + 8+L/QCsesBSBpQml6612Eg67ovWECsX14jkPXvjdOGvKhxx9EWUjpi9CX6UtBqYj1ftScucguxHK + ftUFYYnD+tIwkumcIRdbupCD1qvDGefe+xEJ367ybE+CjUEtJcx3j4A29ecdWt0ioSaMbvnJZx+L + Ekpyqgsy4Q5EXfhivECieUQneHK93QxBlORiyE+G8OupiHMgRiFq7xmlTHXUmh+lPR8pn19ynp56 + SSePHz3i6u+TDVjePrqmzvO1BGgLGo/sq3DQ+gt8VqTcp376fyf5Tz3JWZjKQ0vA7Dmc3/v0gtj4 + Aozeucr9P72gK5hVGJda/quwK1GcfMZdx6cmKiq+uCjp4Yr5vTRbZwtRBTDNW13/dAfM8fIpTFNp + u918Ayy68FOfsD0YwQ92qa9xroOLEpNwzvio3XGGWh7YoYLcnfoeI0OYio36IWl/wAq3HoCuHgWk + bpfv/Ytj9vpVUX1NxV4Agd0iYwF5SfXWBDebdIXlltVrHKu3xO4wkZzWXhR14bTG2x05rYXkGqc1 + XiWl8PnHq1riY8gwM6VCaR2AosCTkSi6jHd7W5dzkP+t5m293k6Hi3zyxXa0gjLTtfTmyCKeR8VE + WLpp0yQeDLq7/vWGJbVCrf/q7t75uErCDSXM5vu3H0+Z10EtoQfcdBIp3FBI6ApNxWyzTGlinYma + ouETpXmmJwP6T75sRBByF5fw2e5hCrrdbd2Q5Oq6EVdlmOLsXX3dcISWtdfNOMQsQz4KI/xPMkOo + kS1Lnocm1s5tNi9g18pXWMWErOKTVS6YHGwD50P2y/DJ11k2fLnI2PJERB5ni+Z7f/sFlRwpCY3Y + /PPn+fa7YBxTkctVLv5K+tDVehEtxx+3S7YUgq++FPJvYAVvJ3TTh+x8Phr+hn/gb9bF6lpst5Kp + cvh6sghUtvKbbN5HOV6Ica5aLnFfC7mlFLYBkecCPtOE4TGaCcI0sMsADQYI8/11s21c6lYxXhTa + GH8VagkpePDfNbkGuA7VFop7vPBNpIQxZXVrCzv97iK+rlz37RUyYlIIi8J5inUBfWoKvR96kByI + tKQ3Z5Hl9sebSxaG7koN3e60OUvJlc2ZrsoMlo8fmVejTGZpYGewBB6oNV7MvGAUwP2pt1utuV1B + C3W15q/GjfzeMiDVFiI5aKBnsFwXAeCQXm+2GJbJr7bl+XmV3WBCJ81wmacuEmWyO7D5ZfZtnglc + XmuFIdnxcJ5/zefEkTQHzX0skaGE6/sG5zk2uxCqOia/T1fbG/QaF1OYaguYJFcXeltgLE0GB8at + 9aRWaVle4HdJy8LbXWuUUHK9Rgmu0qS+uLxoqlGKWC0ry4/DKI5HfhwFsc7Ksooarl752XCN9XHY + m7JvpS+ukikl7srJ16VRfWhFXKyWDQVI68Xlh4vhJ14tN2qnhUpgd0yC6lIww1ymKD/mfouoxItC + P6pi3TZ+gbUKeNBmgyRplLIk/Peg3w4ciMEsk8E8NpDvIbyOjV3usndHfkoVCeLsoA7onrid+JRV + hUL0N/5gd/yRbKQJq3ZkZwlEJqom8+5dwhMIf5F+Y5GXIpDvD4P6477q/1YJjWSfjwqtLvJLQhgv + OOVdU1rkQ+6UMLKRCicMXaU9dLlZ+VUoIeG6oWMlX/znHqu5XrKTwd4bUJbwbMc6zb03nuM/JTCR + l7BQz5sfiz/xI3Mtj9WT9fOdGU9ZVO4whFJy4P7SUxLd0bzJ9BpnBlFYxwkXUcyDIpa6vKS2Xg9O + bzimeEjtgkFZ9HPG+CmLOhb90EPuRT+ykUrRD13V7rXxZLZZaR5Hy9nGT+Dv5PJGbbzx5g9jpIJE + NsrhtEDInRMr9tf4jJZfzeYp3xmLhhLUi3DD8hKqHJzkm/v5+Lw465sXOfJSsQBF3cDquvh+P1fn + dj3dvg4VETFZRig/1DUpSD9/KPPOTyJ+fpQbc5/FWH/13dpP4kTtt7XV2QeC9GHyH/qMCJjcR+7n + vTCBHE0qog4GkYH5x2+XXtCh0otud3IpSMkVlwJdJXX4w9lFzaPAU68SxPCfjkM4xmI+gh9JLBXo + j7dUvIvuoMmIgCAJpES7jLK1KhjC9I6CUAoMJ5FyrH1ZwStNloOLLXaQcI1Oi+8GYpOoyhLQwiBj + VohfIwhoMZ8+I5LjnS8yWw+n+SbHA0d4wGc3t4gdul0hOOjUfiX5+7H0Mi+36OzdTmf5evDq/UUQ + aadSHMaDPzs9SF94lz3xaKiFQSCYL7vxvr90531/2cj7/tLgfX/54pzXXG1CGzRdbfHTMee+H0Uj + jjHzZLf7OF+B/AaCqL6C2ah0qcGboNtog4TiZ8/PT8rUqnzVUpgEXdhWmORxdAj151+WwV0Fr9L+ + 1hLj1wxeYX4qBoOMmhPBA4hxl/VsPRrCWWOeTJjVMllwD3p9fbvdbJALzTLJ4QY9ACM9xUWrNMnX + 5Pn+OPscLUfDd+sbthycXT4vISShb6iQkxLGjLRJYZQorfc4f8Bx+NYBTM/AeDmzy/a/xONV/h7G + Kt+Xm/tgit7Rug4YrJSXJJfYgSpOzMhVVMKUjg2Y0iNK5XikP9CuFYA9rNgu5yBk72xUZ0QJiZkk + p17UERKTnnGGxJRN2JCYdJHOi/VqGUpEjavLC1ABJPGb+sSBrCCHXxQ3CyrxXmarDWbA6i3iCoUM + hCiiOU89SfhKKgZINpx2k8JIljcCdRus6hLOj53Zga1bzUM0tkvvOW619pKVSp7+9hEatcgvv/4n + ttSf1ap3kaOyVHtL9le7RhISMdGuJeQ+4/ozy12CNLslpLQdvt63W7eDFFNJ5+vDjWOf6m7iq93f + 0YoP4fj8jz1v1BlBuKLvLpnXIWZPtzvZEVJyxY6gq3QunL84x5CubUj4zK9Y2MHTsR/4aeqNfMwT + 4nSS7ACxpYAzQpFMVtvZhszr9+eIRJKPL8/VSkMizc2wWM1uENQEq1ZM7HSZTQTG8WydL26yGwLg + gttQkuheBCfNFgiTMhq+nyC9EyVjyXbXJlJgyfRDBs/5dBKENXMHX1C/xde8BZs0bEsWSH0/hP/V + UoLNfvpcrL5U5bUZU5a80pZ60ZZ7EMWWJANPMg0CnsRRxU7aMYYWTiVvRdlMUxawpIruj3LXeCZP + 2/A1QWQr9CWPfY/5QTX5sWVooD/vSD42ZwLs2+1FdidfvK128qCvGW3KkLPbmM4r2BSkhaknspq8 + OyfuM7nPrYUXaHuXwZ8gEwxduOcezNMtSP2ao09rNZ0V8MqY6ISd8mL2Oi+wmn59v5hCe/l6IJa+ + shIDL/Ul3A9pV0MCeHSE+ekDeHsPbraCfGyeAu1ZKLtwczqicbu8ZneBO/ruWABQn6W+8HjbqZwl + TNV6Noe1IByXm+EGJs4dnBOP1+KOZM1byyRwfIUwpi6pbMguT/uYPdo0wPBKxhg7o2z6USLUk3JE + OqXTwONJ09vQltNNVh/oTLFXUrnxuCs9sHzGncaNmqiQuImLkvqx+KKIf7IxG/njm/l2AnumivkM + KHOz4TfD9/joQAgQ+DABI1O3Vyp5Y5nHepl/Q6fcbtbF3dZNGos9g75Nftfe0Got+utjvj7eQoQZ + Y6FUO7yggS0hJhXlnOXfzUy7NoizPYufJXYn/WhLHBa/r2oSV3CigwCsG/wOq2Ah4o1TcV4K4Zll + nO4nIesRNuro8F8pinbKJlEjfVWkTd/M7ycww+bDm1WxXXbli/MZEUzL3euwnMBY7uvta/r4CPJR + jeyyBGOmQ60dLEG63TnUWrcE6Sptlp8+vqmHWpMqqp0ItXqhn45CznzlUmyLKGHc1O89otQ/x9kj + KGoYGHFbdgQDUUdYRjX/uKxXBEOuQ52vuN2xXlFIrtUr4lWaf1fv/+XX6hUD3Mwqdb4p/CVJRilW + V8uI5tUdrtyrOyLXpJRopcfQVLy6++7XCwFEAEwBcra7A42x82Hut9N8+HHsp1GdliQf31mp6lUW + cYuWgwdJi5lqN6BnnfoAq43REGvjzPxyawb66d5GBueIPQtdq1F27oavngmXJh5zsNzzVXGbLzeZ + BL+VvfVExCOv7q4ZmLNXd1P5g9MPX/zImfTTwLjw5QnB5c7WWjgGXst3h03lExsNP3H4f0DPfQpp + mMGsVhYwvpMwifE9BziddNmdnxCbhJ8mekXt77BupuTjKGw4sihBGCOypCB0tacoDVI+xdxUqb59 + 8FFIas+n4NdP0fA7vj3sRmN6KXdz7GiXeT/krJzI3nftGVIBy5HHpEy9v8th317MHGPRD9PQLvtQ + F1wk/ilLu5Vb0COuxRayAavUgq5JJtgtHNbb9cBQ/UClW5jPEi9ddAwf4LEJBj8l50oNViChlv2Q + dYFaxtsdoZaF5BrUMl4lneD9y99qOmmQIhxYBWk5TUMP3iFNIwHgL4ITs/XyVNS3TW5XMAuymbBU + /r/0T4nHTf29zvMFGq7CIbbZDm/vr1ez6enw0qyS+7zFctBiixacdGxfr/Lsyxoz+lZ4Rs3zxQ2c + fGAKZEuEdL8ToFzSKzyCJTMTflSMD95dn8KbYKZMjscOMb+ewi1fGB6Dq3w92ZIxDfcwH+6Fd4Mj + a36vH9eaKik47+HRmoLTUT2OUx7FSdpGq1YjX/hSAXm0kaTjVogBL06ixG/Qk/poxwidJKBBKta1 + kv0LhgHTiiyaMsajtpeNQx741YrNBqKQKuqWFXoIomTPSw7e03uN18t8gvtsA9eFbJS6Y6RngIgG + qNk1uc0nX5YF7L0jM+CAc0bxI13nm28446XiBLugAUa/FpNOUiTggmmY8uhrhOWkBVXZtNYDXLga + NyaJE0lmn5hH446+c9rjjpG32x0Hs0FsnnKm9Px0S6gaFAfSTu19Qg1aOa4P4J7vNe8AVqTF2VJd + vZ2lWZWGezcHp7lzvNQHfumHpH3uI49PMpQd1U09lirEoa7kjV8wdup15D/WTznX8upm7GJedZl0 + kFvTL7bcz0VtysUEu8gPf6b2eWTmm5MK6l4fdQhzbxwp/Low7oDDJW53xa9DyXX8Orgq/VqfLhtw + uLyaX2schCxFoJcQjWOaP9DmtQgZlGEBg/wzQxjpBbrdKzCCePDB6yBGdT588v7txfmJdlCPRLbE + Gh5WVrFw1yxVSzJSDCJ0U+frGw6qpVY4cUNb3sKmUVTq9vC4g/8VX/PVPFsucVsRwoV3R7AM3Wpu + 4Kvtqq6v2oAMttZqk7G+PS+1yVSEuWs+Xdk3jZuL7Y31bc6TCm4VT8MgCryq/AOiIkarIrjSVtAQ + hWiZV/VW8T2IaGOPtR5oFYWsMsxCSy26bepjcUi1ofaxtfygzHZTWsS1PjQaV7N3DpPbNBKDv+K6 + GOBGUWItSp05ihVevNvg7whBtydUUxIBzdbGD9hZkNsiV4ykcAz+JJG7A677MWBqIfFHgI47kPtV + OSdca0bbs4z+VCFjda7HOtEkPk9PWTeeUvmMc6KJbMJONKGLdE6bFWDLfFV8n4kAgpUkIaznsqrJ + hBi4yL+zVKv0klzEbBl5DVgSyWILblkAVoWD0fjhmlbs+UTn2fIl3SVTJUUcV6R2VCgPYzLY85A7 + pPJhi19roon0prK4kzcVb3f0pgrJNW8qXiVN9N3586DmTY0x/bviTY1AP2XeCNSQJGmY4e2HHKl2 + 7ybXQU21I+xuOP0y2FKrLsk4bY3YI7NeEHu1yH9zGo8tNWmDYQOpqR/HvCZVD+5ntUdWlNBWXyMo + PH7k1wTCnBPuszZ5bbBuljwj7Xucr+6x8nssB2G9xz/KYi/0XNrQahqYqpPZ9q6kPaCylkqiOUvj + ikJu6Gk426OgKtiaNq3KarSvRwZXJGeGLKaLmzEsI/SDYAcox6jEapyJjsd1rScoKFvVhzRRxHo0 + /HY7m9yWCp0o1VUfL3NEiKhV6IKwcC3JWhmj3eA77vXoXK20CAIU6MBagQ7I1YHMrJhQiJNbOGMH + uGa1UhilsTwBxJ5m9+ShyYfY5TWdykFoo0v2QFm7Harck/gYhJpEOcwV7+L5oRpLKhmmd0x7J3+r + K13Gngg8Oebq25Cjw4dUg9qm4xgzJH+6mnyd/T1/Cf6NPULToBzk8jBz/DrHh/doQVSj2ZBl6qIN + OT78gCQhPksp6cDa6Q4VhjF6sXyLFXlZD5h+/UY/GJEgwi4yuZ+jkQP67vzIeMLj8Pp7SaBQS3F7 + z44PlDyeOIISheoSPuKmaO2cVkrxpyLP55esS2ov3e6k+EvJFcWfrioX9EWtyJOlEbPBxv3g6Tj0 + vYSHo9DnzJe5lZe5SGX7ChbS3WJG8No6QFysToeIs/RtNp9SiQDat3ZkWgLxqYPbqNM/1b7gZUMh + pjLZLI0ZzLm2vEUwZZKUN7pp5wr4iOruahlOk2KKaSAq8m75aVmQVvTckemrZfBGadWFamMRmB1g + ZwWwqme2SfTgAunMiImy+glP8stX7ET0svGdRoOqYlB4N4cCLiZDJ+dq96g+Q63tFsPn5Ah7v/lf + vhx/XN2Bbr+Ug7rAaaicpfgeY/jDH7/+eEGNqgFXkkSmzWyD5Vq4ZkSWy2y9EXWaoAb/5/6umGAU + DCerBq/xA6Hyeinhy+Cc+DJrwYXZVYR4MH2jISGsSKgM7YPLO5BC4Tinyi5QrSQgxogda8w59bIf + lC8WpHteqHXRdzxy+mypBUImKavpWMBPPd4lpl0+5OzmVI3Yfk55lQ6DMnatgtYfLy4xHSjPNkYc + 2xCGrssACwEPD2Mf4PcLfO5bGRjdaTwPgw5WQ8f00CXRKQxIp4ETjzgPGzVgD5q4Jik071fbr6hq + T3MFIltlwnS4xWgJRxRMAImBm4p9WUtwMPa7wN8K5RD39ZVh+OeT7WqNVBuyLXTECJwBuO1GKGW7 + 6+2U/NSLiK+6TBzrg5D7x0x0omMgNK277AaPRLBzDi6f6w/ENZAnUsuk6gHG9eAWfljhpBzI+f1R + QigKIz9tfIwwLAoW5u3mdoazHbuuKBlyfyoJQyKJay5hOruXntHtbsQ1JLlKXCOukn30x+XzOm+N + 8DravDW/YG5OwDFFJwokb80fcORvhpfZYvgcvj5fDf8/7JmhSOOO9erTFbPKlO4KxOl48/FVmomN + i8qWQMZzRLul0snVdR9kdGjNsbQeluhaN2nJMRhwzj7UFDarlg06qi3XPIE+5FXUmNfs1ytagTNt + PtThR+zsnaQ1DuGlKUtDVmnj8sPZWH2/BL20rTKvLV8GDcyYV8vvZAdombO7uszIa8svb5bpQoJR + DZ2EjO3riAHOU4nmpcZLin02NEN8qkJOAxTTN+FkLblDRsZrare5emKKKQ4ScFhya2GgoxxFA/BU + 5ZHjDaoXsSk9359h+gyS8wlmr4aSP1o7gz8M3FPQOlOJaCO2KbeptVc3L+03ikocT6XSD+9Je3aP + F5mKsBxJMJ6KHw7zykKVWaByFw6Ei41ST9Iqm8k7XaU93sTaXlkP8VkvFZPABPLLrArkjo5g2NfF + 5K9vJy4u0cTX2KhB6HUHR5UPOaOjqkZseFR5lVSAm9V3CRufrWCbQa1opVHCn9zMYUGsCNT9pMRM + vSugY25noKqbNwxfg6wBChQ53NBdZCodt3a6cYaWtKbLbIO+ulIKocOYUiQy/NfckOdkQSEUv3gn + 9eLGx1G8u5uW6oeEAm0AxRzHjxqEQSlRgvbD2ZEX8CXulT09VFb3Eht1jGe6Gb/HhDIxeBDq3sBC + +i5RyICz2Ho6XyBk3TIfN3/bArSDvfhcOEaJ/CT3FSzX414/QRhasxxMMthoDt098RS0XJ3T2Xo7 + /yzQg9rZCZxG9TDRHWy1QJXZxHF06iXdimzkM64lNqoJq8BGXqSt+sMqWw7EH+b9omw7lsmSPvHU + rY5BZQCbL5UZt+iSUNrj1dWnsZB7sCejG+z9w0h9ZJqRp58u5h0wb/Y91oWFiTAwSmiYYr4THObg + tnrDwOgFucL3ZABmvSh2Ctn7eWqv0CV53HvFQNXyO20W6iHX3UI3Ym0X6mo1epFvv4CEQlYMVMry + Gn5ptSAoNcMYN5gDVZaaevZDQnkPECdRYx1JHx5svR3Ip8Xtjj48Ibnmw8Orknz67EXdhxeHXo17 + moWgvQTBiIXci+I9lDjTFbTQAGAmR7u81ojzlcCqbMILKx1o0xliSBZfsvxu+VkkCgXjhkPaEBqE + YWg7vK6MwqvU84OgWnjVByoZTwPhTTmWQVXNu4D7sbVujhTYB81VnziMRzOPPhrOK9XBmHYseqaQ + nKWHeftF4c4fr995rIO3n2532imk5MpOQVclddbl61oZBAu4DXTop09/CWI4xJJREAc8lsHU8zEP + nvDkZIiAF8W8tDBGcsaInO7bfPhZUI/CXSJbJl/dFPIJs16ihPPOJA4MEmxcbzfDeTb5Yj5F29HL + 1U29sOK4Qggv5vCRteLWaT7fZPipwZjVP7aljpYHlpPbqgg1m9EbU0u3VFzn6V6pg580LAOcSuUO + mXiUnU9WqLjlOFZT7bSJyH3X9L7ORY/ad9cX56reZiTgyZ43+7F7eS9Ol8dS8AkLC293XZTdJtcB + 0vf7IXqlW0yodO71pRd2yKCl293ODJJcPTPEVZlBe/6+4cxIveqZMQ5BT0qSUZiGiZ/u1i1vViD/ + AXXLxwRq68M+Df9QA5oqc8FnXUL+eLuruYCS6+YCXKUBPbs4q/NnxkHNXPgFRjnh3BvBT4RLkLgc + cDrgmAovo0wKf3L28eLpi/HS/FXwt7Es1DeySkbDl+dDfhqfslPfP6kdUKs1spnd3c02ogpJHlX4 + u+1i9jVfrbPqHpttbr/BnjXPs6ksAz4vzk4NE8Zn3/rAYI5SL0zZ8RjMphwD/a2hT5sR38JKtaiR + Mp2kXhqm1YpGpbGetaoZLEz9VjgOKdQ0hnw0hsRDlkrsygD/yJxuPzoc2V+xTUi61s658+Mtr78g + wFbqqZBt8No/ZWG3iK18xjVgq5qw4rXyorTDzi+D8YdiU4JOG7mqtV8qwBa4xitZrWVjPPSTOE4G + MrEy1RM0W41F/01Ws2voKgJ4Lub3T85OhptsBubELRIXLw7zlmod3w/LoYKmlofUFPghr8to4R6q + wZvg44HyIRvsU3sfEuvFZhiy3mCE/DRGVkvnj4r3NEBS1Ljc0Tx/+1bhX64OH5YgDIJ0X+t/9u29 + d6+yj2cj3kkr8fePWJ65g6bJKaXak1Fj/2/j8G/j/Huhwyb9pBVjOCaprx6N+3ToxknMHmfvPD8+ + H585a7vqASd9V0uvaLzquuZ6xJI/Q+n1/QA2vbDi+vKfjmM/4Okohv1E8ie9xZU7+zyjPeDq7PVL + pV9mc2hjMs7+KwwZnsQ+Lw2ZVOUucx50iXvg7Y6GjJBcM2TwKg3qm48NucuBX497pAyupiP4EXuK + tmW2Rpzq4Rv+fPhECMKsS/gLx5Ilws5YEOr0TIy/AWO5PpET4M2mIVNZpXZIxtQa/USctIHHcR7D + ltOSsewu0QQO4WEEn94Dg6b1bt0lGe+UIKmsV81+LlngFJ3hr9PZWlMbWm5R3/dd3rIP2Q19OTCm + zoh291t5RSnOKxM8vd46Jfhq2GldMvysPuPAoMU5+Wx4mU2j5fj5KmfL8bsb+HOo04519mxm7tpo + VJu7OZJhahSREpH9xdXzCofoG98sWx3g2tDGHywwSi0hDX1ZYJi35N6T2Ni1Q2JXdapPvGINvQR9 + Zw6Tk8IA4kqFgXq3XcDu9LmEkaGW31CC4BFK2Gh4My+uswYNohFORVKRG9/Q0a0ZJxbXyy5BD8FU + SYapMcHdtUTcN/D2F7vSMJrpIB0efDjrVx2KIrv3j5eXLErcD0W63elQlJIrhyJdlZrO+VntUGQe + q+g5MXKZwS4cjELOo0geihucwtozYcMrPhG/BOnjsoBKoMyvc3Ucnk+yQwt3PhihLZh9oI7W8clK + MGXoe9grsJdsmWHa5nhrkeniv2t7NQNnAXsmg7vv5w6Yu0HC2lDJLPklogKKvyumJQNNpWZnn7gB + +mKenH+8OHmKskqahR3j/QxW2Wf4ay7xE9YSbDGfKtwu2XcjZR4ROZUNeY1BRFnCCg8iyZRw5q6J + XHk738zAKqqfUyDHxgZYb5AcCxEU1gOc4BojIY0p8OhTlPAoAirsSWEE1fp75w7UB/lU7WnXROaj + ccrrzzs3/TMIekoZYVVGuSnsHa7enLDHk2YFqjRi7x7i1LdHiPtx1KpxanX+US+oDt5AgQ5w/03Q + FRRXPuMKO6CasHAH5EU6hL8u1yoEev7hzXAKqu1sMbjZZjAeY2PW5d+RSuxG42b84y6LBl+zu0hk + cidhii7ZgDPCGvmaTbYFYttt10KHx5UK6xMO4+ymCVvD2dOX8FgojF9zUGyggWkx+XKYS5eoBikC + YLInq1c/3El8ICVobPTczmqNhyFj0A62hCgS3/x+cXWcMxCMZ8Lzucyuh/tn1BHOQbW0QhX+iDg/ + ZXGn6Ac94hr8kA1YsQ+6RssqWy6kT+7sQuS2KB/ooPLv4RncOcDbKbaRBlQSwROTwb7RVt2tIvBE + zCd84zF09Wy9y+x1D4CkNE3NBGp8x2l2l91gadoMdCVntcIN4v0gteQReOyP0CgeiG+lF+vTT6lW + GcNFT7IlVo3DfbiAwdyCF5yKf6MGfLIXW8P5O/tsdE+wmukKPoe4xe4CXB4LVeQ/s8XkCNCXxKfa + c+J4G68Fxxs8+ULwgUoDSQRcEM54mhff7x2jLi0V5L1Ao/SFPJJS1cK7Sy/tkIZEtzs5KqTkiqOC + rtJm/q8Xf685KpD7xYZkD57+4nPO02SEv1W5yG15ZfMVyK8n/Nj7QsUP0eoz+BMQpgdeIgnTfy5f + alpyUrA3SOLVkZRCPuQO1yYbqcC10VWaXnfZnWSSgoWInkj0z4+lVoQQkEsBInnx/u2LIYvQnvRP + Bh1uRflCS488qrekiptfh1qGEfYnQG2ynlQ2r0QGmRSL/9nKdAPBjKNPa1LznfcXL2YSgbyhsW57 + Y8zIA/16XNZGbUFlnZa9oen9NFS4ysXrZg2mnOAUTNWnHAV3hcdLqfr3WtYnr+E13evLY9+0r1we + egT50VJUiDVoQlvBQv/NbLlfXQmSmDXMlIPLulEgp1GU0+NQOSmVs+6YeIdLpnMTY0w3ZJTKFV5O + N4dG2hZfX/J3HtqJKiuNnnfcY9UjriWlsgGroJSuyd11msuYwaIgBAXc5orV5hYPtTq1ON5P1elh + SLulR1qcwiGq8ujCAr5Z5Q1pWHu2wH30tW3oIKChBoF6tLcXCplPQSVoK5vcCgdq8Rn0S9DZYKO5 + m01gmm+vkVoDNwCE9xWH8CpXxwP2Tzcq3SCMjmtR9t3bt/sbpXOPkpPKeN8ItiKwO+FvK1F3cuOu + ixzm5DmsdD4hm0R1jZMfxw9DsXMi/M2ymO+qGm7i5ExV9r8fxF2y//F2x6QZIbmWNINXJa/85UU9 + aUZUclez/1mUgs0yYiz2mC+z/99b/naJslBmxojI+G0uIQRk7umzoWgz/347u55t1k3ZAGtSfS5e + fmScj8BMnBTCpsmG57//yzcCVlZUSGM5UeipFOFbIqyXqUQM6l8gKeVXy3oo036UxJYCVAO2eRG1 + lh8iU1AcpXvinIe0YiTEpAECNtYiloZXAGv/N7PNVm4UGjjDyuaJ/TZqIvszemuh7RNqLPTtxZMB + 407vfLjIhpcc/OUXyADfVScExXCcY88klBC03hLFnRsr5z52E79ilipVtQHEvkzO/onWcCkjanj1 + tpVck72zuiKhOJxeRN06tV/YFbK4HFZ6p08MYvKxG3NpOluj5vGzvWa+p1HpQbHrhuqiHnF1ccgG + LAcHXZMK+Gfl3nivPBUlOji5KkC/iSKfnQwa7ngPjw9QBirlfpCSUt4JZ2/n4vW8VldEB7/H7lSE + H4qq/3P5o8SnSqdMaU52xkjbI6PDQtAY/z57HZ5y1mklyGdcl4JqwloL8qIDuBGh5BKz7NDnZwpB + 15KNq4AhsP/hk6oHJK6B6l4uCVN5EHUhTMXbHQlTheQaYSpepf3lxet6GmGQVL3z8dNxnIZw+I/i + NIpTf7d3vliB/HrVN6ExLDNkMasgXIONxjq659vK7i1ioyC1xZYVr4hIDR/0AL76MI55jzBCfSFF + JBQGqwyCqwXt9OzOHZFLDGi0qOfZfb4ar7erVbEVwTiSvIazC+Pg18W0c7LRT/fSPh5kpV6RKXzP + V0dAwv1TxjudAPSI6wEgG7D2f7pG+42IBH+G/sh1XGLQcG14kS/DX/+xXMOEq/K7yCbwGPAp6wps + mlToMIQSCwOv+Rp3wBh3SPnwKDOpknIltaP8eyG0k2PAMFkURkQWIr+/UihysOCHT0gLZQqZzZMJ + Y6BaPGYIZI6aUAGbctT+/DliXpAE4owpgfXVHJjPbnpKHvlBKG895YI4f9aR6SVqdwxkfgXn3F2D + o9sd8yuE5Fp+BV4lDe7Txwvm1xIsOPqv7QSLcQiaG/dGcJyLQKiAF9bor3KARsOylLXJhzV8cnX1 + 6USpMrha0cLbZLOFor/45Ct81c1ttkFWC5N1w8jaJ6KrMUuuCLuYtMdPmyXza7qjO1ZtJevD9g0a + VJocNn7fq/szbWhYQ5pAj3WSZnoajY/l3pX4YPGxluAgtUs7kCSzQfigh9HqabAGYtbp9BTOhMrr + BYHY2XT6V0FaEKZSfUXNDmS+/XjFhL8hF3DseYkxLRZbeKqmA3oy31m/g2Uyma3lUhSXy4oS8aXi + 3lEpY6QFnNSXdVts0QsiFeFtQsL+oW9C3qzW7oRuVFU39Lr5EHEDoONqb9zjSyXevjGGl3j58YrK + J39ER/UCgf6jMMUfAB68N3+vlheR/yilLavdwdv0Mtwj37XYicZqJzL2oAeSsvOLAp+0mItvS74c + G7sgSFZ9BPO10wf3xenqjEveXpEKIiSAIE86KCJ0uyOAoJBcAxDEq6SIPH/9roY3x2LOagCCDH0k + STKCn0nMVf0MZjV9w7MLd5bxNbQ/ZiN/fDPfTjIBEEX6wfObOW/E4aCHn6zzxXo7fAX6/uzEUgZS + 3gp6kARhkoQ1Xm1qeohvIV4H/w2m2rS95NP32zAfrCZKxAL93sUKyeb/U5bnG5uP2UQMh8KeJgYv + mztwBGfE/xgpfVJh0O8wss7+8tWwpmmTL5DEeoBjrAEPQxaIJZDKxBBkcUSsb0eS1N2piV6gwbMb + eqhvYQ6Yske682izIIrK/LtZrdGWOLOnaIMl9id1ex5XQ9Uw3iGrVgjRG5UqLBl8xGmtdRQdhiI8 + K+DnLdrUkbx2/x/cZn+Hxu6hsfs5adPbxbTrbE28iIhMb9EIP9RtFxPVbf19OwtKk7YPx7+hOr8Y + 6o8GlaHrB6PCL8bfGq9sgfLcijxbVLmAp5SjK+eDOAt0Iy8cp0UjCwSLUjljD7f2I5WYmT6PTpnX + KTGTHnFNzJQNWImZdI0O28l04kt6VmgaI+hGkG/wZr1MPZjN4/J35/jAQDwmEjR56pP7Mwgt5+Hn + Yt7cMTvAXWB/TfVm1EIyuXuD9gOZHW5irxzBXekzj9YAhbXHMkMmL8k7JepkY1773tMgZBIZR7za + dPZ11pzC/ydDyesTBFU/37XGrheNGnHzxRaYZxsEr5x8OUpewBPPN18KY8vTGSa+KpXNCTtc7SO6 + jCaN464xFXrENaYiG7BiKnSNNo9342yNjpgbifC83G4EDNLJoPYbO5IiBYtICpNltyEF4Qyy+WPV + wEgCFupXOV6zjEIysQ2RDtyz7gGfkPhfhfjNMarwI9MYD2JTFEEKj8JT1nQ6WLU5UkdSK1CXWPgv + olOvS16LesT1JJcNWCc5XZNla+t8Oy0G9J96vVTDXMBS9+IuUMT6GWeYC9mEDXNBF81XHMvJjm5H + fa/OSNX6g0jAsT+HiXy6P95f8qBDFSrd7uSckJIrzgm6SvrSH2/e15wTvgjEmUGS8OkvMXJneaM4 + 5KnCkPwjz9Ybk/AeVSFUUN68V/rHk+z6M1f4WH/c3tVdFHaS6GyxyA2UCjtoEfgtSStpGKZJWEuF + QScr2t7f70UctUbdaUn347ZMG0t6iUpVChdW3mxqBGWtrOkkaEvEVpIrWdNYjl6haG8IaNgdR95N + kSxCm3Buuy3uNhL0QYMVojPFrOmRimUpEkazuMuREgeGA/qtsV3VqZVpjtNKR0GSMKCSJ488BQ2t + mM6UTir20dTKMlK8czj362Y/O+G6KVe8spY6Hig/PXFIq5hgidU/Ts/3/S6Znwip6FOdaWUjWucT + +AzcqcVWJLM5dPfoebezHrVxLh2UkqAOI6ZxbqKOyd3qEWecm6ia3K2u0aG0vJsqnJvn51Z/yO1l + jmWk8EJI5PX583z73brpAh4foAwCv/FUPtOxOwWh3QvYvulqe7NLUpsbJ5Jzyswwhxtn11R02emN + wtBLQv1F9enTRZ12Te5+nJXgvWLahZyF1jzZuQzbQq/7aEDqbAo9EIckZASAhCNMiZhRQqpEzYWO + HMNqJsDT7JgiFB5RcXLl9Ua6xh2BNa2pfFd8zXUF7/Z6vUH1wL0W+AFb3LmRcpn7BH/tkvuEtzvm + PgnJtdwnvCoprs5f1rV6WGm11KcAC7/ZCEzRRBFcfbSRnalyRmTBKGfh2iwjh44i0O7XrCzDExG6 + 0XBeTLL57D9Uaj3Ntje3oqQ8VylLYC5/FlfuNwVWYmNQD9XSaT7P7tcgEdXKG9USctpLGaVsmmHw + nIL9FkvLgOfF3z+Dc2aDkOKwu5xPJzxZ0uCKiBzZJmeTvCF8Kn1zdko+T1sCjQxM+jQKWwDs98Ds + tsox7ZlGPPOi2aTB9Nd27k+zBW3TmENYJZJp8jpbuf8wofa1Nvgvm1sDXIfaDGKcDWRHkQrQjqcu + s6DxJW8ziRbs4PRvRoTvhVzoYYh+/sxQfQdg5JUKirIxDwTLO9oy6QdETmwx9cnVsC+5K8j9VKoy + AqJ//86LQ/czmG5386yR5KpnTVyV7CzvX9fx3UKEqLI9a2PGwtgPRowlSSo56X8nP9rmWwHbT4H8 + gmvyq70enxdnBjWr2DttGkmwLb/CLiYXqXpEKNVfs3mBPHmj4bfb2eQWt7ZsiBvVeD67m4kAuCKd + bORGtvZcjYEOXZhDk/NimT8bgv60go1VFWLB2G0nit9S02zAe33JVnew1jN1/r65u6kDTjTT97Z4 + B5M2ILskDoJUEVAfA6iPR3QbN03zS0WtuBHWS5VHvPDff78nApKb+RZn3bwy5k8+nL24eHPSkmoV + cK/xnY9m3h78F03KAS5efXCHwQOye0vsoGKe90aiDbt7Ks4mGCbQpRY9vWzv7OFhSth3BofqkUHM + x0tIHhFYRHVuuvqIO9GZ7/EVJ2m7rE6en4NlPXLP80Duo3j7QRtyxxHpIbGjp9pWLS0i8qcWaWa6 + HG6i52/Gv78Z3qyK7RK30WmxKNCMgm7BtADsHZg38IxE/+u2AGGTFF8mxBykpqIIbm00h+mUmmMh + ehWden634LN8xjX4rJqwgs/yIumIrw0/oZo6sDqLiWBFG+hUfbCn0Rn8WvjALNk8DHgcxxKPUJp4 + Gp9njnw3umBKShGd1GowuRfQ9lRS8lgtx/5YHY6tiulQstsBDrBfEpmUHN+v97mt3b8l5KGU2ENF + rJO0nRsH1aBcvPPSqAsPrHrAySDV0ismqbpORunLy7e2Ucp9HnuC+Mm0SpOnYz+KQh6M4IeYZLjj + vNx9zKtNSKj/2FFrim5h/oFEdoMuHF9jIvnwMlvz5RBuxPPj5eWzen7D64u349eLj7pSi6wD26z4 + PFthBoo0D/CJbIFgnrZlQxbmy9XM1cKsGJatXlSeIChMzU8rJ7L86hb3LJxKaVipbm0WrC03KmGV + 0jX9ZRPGlFUZw6NgXzuDP+nQPsM3uxYppRLVSLhKszvoqVm2GF68fT3+Q2Ni4OTXZL4B9yk3kygg + oIFhtYEj7LpDpbYC+3LCNoe+rUCP78E5b0SslW+nKh1UbA+pqGaLYg1zdj7+MIYjdSN0XrgJU1cr + fIhyEE/aSyl3Avn9n0nzo00a3HCMc7Zhe+o2gsfzhfpMF45w7xXzTr2wU8Kpesg15VQ3YiWdqqt0 + yFWRu19sXzEkf5MAamovscSBNutFKTsGPe0gPVDnkcYyj9SLO0Sc6XbHPFIhuZZHilclrPLvH+tg + G3GFdhW93QHz4oiNAsa4ol39OL/h439IIKCLsgqTJcMvLzKVPHq3gtYmy8FbtQpqp5PyBIq4vsi0 + opxsiTEEFui8gAkq0BbxiPk6vvpwdvlyiO2DZnAHw6GmKN2kzBOwZbEfpmjvTooxEgVpbkwwjPLV + DHMG1oOP/7hgiXYbRjFiw7KIpcJKkW8x1gf3jkSdhoRHUrkpV5A+67DdxD1f/ZFvaVKUD51CXkQY + 8dvVbDGeFMS2KieUy/oDIVReZ77Pvl5uADj3WZk/772AzYF1SlE3nnLOotfN2In06jKtMFk1KBQQ + 3PtlIBehUsvyFQmbGqd+HKfRyeCgh+x3wo3R9yWLYxiUNB2izuIgo/8QohM9OgQ/f3EJQtz3Sbrd + zQgjyVUTTFylffLq8gJdH8ZG6cd+BDZYVLPAYpaGYTCKuSd8kbuQJZcraKGOLKl8IuW1RtjGxI+t + DHVF1fSoOJ8+KSgvBeElbBGiKc4ptUOlaawFH+1FMR++ffvMyoLPhqqOC86CSXELeq7MxMRLtZrH + Z+iz3N5JobOFyfs8RITGlRIj6ymfKRwhjGFdgqRfL968UDB8xII6NKpFRDq9NlZWZ6lWL86uLnX8 + KeJpPBBhKMomNnNHc+iFRVP2QZPe/9cvruxUJ/kDEiT6SmfgVCj08hJmg3uhEN3utHFJyZWNi67S + xvXhUz2dwRPFEyaKSfz0Fwa7GecjFgWCLFS6qvWK1S5qCemvImKRQgErda4VqOIz0T9w5kgHNKiF + eKcNI4/+B9GH5vqkrfHDtiGvoPSXVlDRWpnkRZ1IEB+U2dcqp+YxavQToXu0LVGQhYkfsWppUhXu + yYrs+zu8QV6Shpz/e/DQ47VoGrABzjBNbJ94ycDrgGDVCoF1XNY/Cz0qW9UesMPk9BDxOEgSruX8 + G/wL5+yWBGHmKPwBRvn6cUdR+kQE+1ERCwcM+mPDCVwU6vxxfumF3P0woNudDgMpuXIY0FU6DC6v + zqPKYcDStBJF8MOnv3AWpEk64nAaBFKHzXRMEfYGEDQCVenz7PMmz0uUVsU6hskWoOLlc2JMID8j + qXqUjyuVqPW32a/rxWd1y6nc/C/Xk6hl8xcrp0G4vZHHdk6ZgT3peWjbBA+lKDd2gL2P25Ba1iFj + vtsRIk1U+MTjPvv34LzqyocB3Dlaz4bQuEyPxmNBpTHfrIpvm9tnptv+6p9vf7368EpPj6tvy9hf + DnCu6WMhChKKVkuCTv7re9qSZz2Ao2APxOUGIabIdLaG/SO/u5471uA96nzrsoFIFAriqZqjU4x+ + Kx4UJ20xhy1C+PnfvsWz767AXHqXDsCcYMJT0LOCjLTJAQhlge8FqijK+NjGCbd3+z/qvIHPoikn + JrwT510XW6TxfOwhLwj0KPL22bNlb4WY+T7q2OGqPpQFodeNflM/41ohqpqwSkTlRTqCNvln6bE3 + ObHMyUzVJWz4BDGy1K6iHFapl8LB5J0Mdj/98tWYDc3na4/Da2CZacpjySEUMK7XfwNTl8PiDCjj + 0OYyM96tJs4dhKWz6B0loweRCBH0nEFTs2/0DgeCf4hGd7CBkXdzt+QecluObWinZklVE6/eedxz + 94/S7U6apZRc0SzpKi3ri7NPoaVZssBnSYD5zKZqmTwdpylYQqM0DRXtzkVG9ib3xxKxYp3DaZkh + jxqeQli3LRBKZChPMABCt6BXbn4v8su31xvoS5O3dT1SRfqyJks6/OAG6FXU6zM6jq0aMbCv8lVx + LYhkR8OFgNj4mkMj1l3F93t4H3xUVLzRxdv8TtVEXGTb8C/t0/3rjNgA563SUlkSB73QyQlVV+Xy + N0XKUN9Vf/9cnvxOxjdZobB1b9Fa7fT0I4j+qZAOJ6KJ83demLpvWXS7mzFMkqvGsLhKW9Zvl5dV + zyhL45RVjeEx5wEHWxiMDInt/LaKK6wREwU4zxJZqW9gzmrGGrEt/LZa9eHSZB6PeVRzRfa1LRzq + hGRpGjHOqtIanF0V+OeoVaL80MFLbYmWhBlKubZ8l8KloNMHRSaCQb6g7tB2IdwQNPk4BzgztOka + RsFfhgvCxS1bR7johY7gaJdwr67Y2JSkSW6VrbBL8EEBuv/jSNhrcoPe4yvXxgNTM+1IbOOhqhVh + sReeet2gTOUzrrUiqgmrVkRedCYIDV6FVxY1qJKKVSJ+EP7w5LbjpvUPxudVwx5J4lKWeu6uebrd + kbhUSK4Rl+JVmWByUdNGeBDjlmkTl/4SpaigjqKUw7KjaXIFGodyOJZ6r9jCpO5xtWzQPQ5hmTAO + 6CRgKU9qjFNHs0wYyk6cxKCwJNV8euNz5ZtbI2Z/QcxCtucLBkYHloAl+XcDql2zTlCqCOyO2w2V + Lmdr+Dyh8oFysbqDv8C5IfCHBjimJY0qi/4c7BI9Eb36MLBkqlizc43GIezKAprdqOHOSiJt6s3O + jUlQXjUapXS3M7w/ZOKOXBRNb/NI+CiaNui/BMPFn4qcog+qBx6rBFfmRae8G9UDPeKa2iobsPJa + 6RqddLCvxjKmbAE2Ce7Y9cZCZlfXlEqrNMuXQkblztgTiauMy9LYlJwdYulJk2xWgjSZAFO/uiQA + HA9ESQq2nbCxO0GlwRiTYIEtTLudH3j4VBpK4SAwWDWeTjvN3oceILcl4RLaQgzSZgbzYeUe+Tsg + thIyTmigFPhG3ErB3Cb+uZkt91tOvdg9Iv/9jzeXsObdFWC63UkBlpIrCjBdlbkpFx9wfVX41tK0 + ogF7T38J0tSL4xH8SBIZQzDSEezk3Kswa8Hi5tEV/SYjA5UyT5YL5tUUZeM2nUx/XxLHSx30pTDR + Mlv7DJNWCrU0SuOA1VjaRAVbvtzs0phZHLoI1RpzyadcxpK1t0CSRazt+tkoZGxPG4MPoC7LkPS1 + IJ8pE4RwFFh61dxflxcn6h57FJ4NP4w3wnEKC3YpAP+y4QrJrTGsgFDjBterEW4jhzR2k0pvuXgm + 613XYpOgmABo65ghoXtjCJN8tlhb2Syt02cgJqiOFfBA1qES6qpLD1uKdPt5I0s9uV7TmWS6bfHq + tELZ7tuNdlsBIXl0ds/9kR74Q6pJA5/THn2Y52ogl4I4I5pXjdPB3ssGmkoPAg/jLh4EvN3RgyAk + 1zwIeJU20PMX537dhZD4rOZCSBiDmTuCHwJ9RtBV1niXl4QnscTVd11M74dPQJE7Gd5m88/j69Vs + epNXMofh16BblUQFEntUAXje5SJIJ2o7Gou+Jzna1Ytnundl5vJv2Yot5f6MrF91Rwa+05DeSQAA + 1169AgTbunmy0I8VqWUDWJywK+1MQ5vbwsrx9gM/bSDkLnct9O5tZput7HWxTr/ATN9UkABCmCwt + +YzWG+vt/m42gakMm/FcoarV0QU83k1mvVPNsXZxw3h+ixtGNTg4z+aT2fZOk2jUycB/3qSk00SE + tvVebxKwkbw64ThtnjDaaneZYuiUIMkGYsmWHqLE7wPwPlZB3uZZ0GWD7oEJT5IlqU7v+DQjmrLd + kw86dT8+W8sp2VuhABjpzDovoUM7KwVOrxwyj0jE7nSYsPv7HsX4J2VEoWSG2WHRHkVv4FmQ9pj4 + P86/T+hNV2DQz1Yqb4ofiGZxXIQjIvoW63joR4SD0pJQIsjes2+//cg9it25nUzdOjj0pOtK7OyH + V9L5VEn34pL7obt+Rbc76VdSckW/oqsyxe3yIqih83tBUEkYiZ7+kvp+kEaj1MdVRvrVJzZcLy4/ + XOjVYR4Ta9zLoEsqZ5d+poxHG4Wq4iiCKT/c4GchCu5EasCoqS9ht1fBn4vVMmgAyS/uYFMWU6qp + iMLjFdqui7cjC+vei7mfRDVdid4YXt3Wk5Lw4YSZyTGJF4RJrbzDDCpbNXrQbBvHV8CSJKlqQRo2 + GCWWw/Z1ltG/ZPWB1ZF+mrQpPrKNwU+ZHQMxoZX2wSMyaPF1zR1pz5c6W6ORn8b60Do4iSTxE7FX + mS/V4UA5dr9PGGkjO75/nwQKial57eIh7C3TwznNopFV6+D8DLWDU/nb63ew0t13cLrdaQeXkis7 + OF2VFvLVy5qBzBjOd3MDT9HDGIZ8FMIWKCuhP1T1SwtZTULDrG0Ya11IO7vDvyGMwXx5m4HJslqy + 5cnIMjjgY/5TgL1xfnZV+iut9Y6QBiJYLKpoaPaZPIDSQF7nLUmGB4Cdp0kYe3Wwc/U9Y/oe+aEw + ZQgmttFlmfDIZlN8/XaEp4DJBmm2pndc2RljtWRlazbque2qlLKrcgePfxAHOEPVjgzKRSwhXlPT + QqE3QW2rUBvZaDgtJl8OyMmLmGX8OKHFPiirY/cQmVN2xP+fvX/rbhtH9sbha30LXT2TrJbSBHju + XDnOcXcOfu307N17rVn/JUu0rYksaotSOp5P/1ahAJDgSSBFO05mnmd226GJAohDoY6/+p5KbMQJ + Mk90D9+yWkLTHoEZQ6mq91/s/ZBf7hhI9QF0rmNASnpVasx3AuFZ2zLQB6becrAjP/Brt15rkb1W + cUCnJfpB3LVsJTWxTUqUHRg5ifSMLvcXcOf7kcT5Gb384zUM0C0BB469IimsTxkHjoyt7BNx6Loq + HiNynzm8G9oYNbGNx5AdGPEY9Iykou1m5bkq4tQE/VAf/94NZ6OWPwEJ+DHlhKgYdMio7JIC2TM/ + czCwjH6Zk+RGaw6nbuuTc5nuI/uEdwjevZKz0H9mB1YvZMxfoy2peSI6pFL27+QHAo9yKUXqzTkL + OoBH0et2ChNRLitM4qlKkXrFqhpT4PgVjSmCbcSiSeRyYU0sZ0mZKMqE0iYE4gKqYB5mm+mMqYRV + tZnP5ydnZ0UFwMWlawTVCGFRWaXG/FDpUq/Oc8jJpjryUZP9Rw9udFZj9zGw0FVEUGWqnpejLmh6 + nuSDUadZ+ew18nOhclOxXyRC9a53yUb0XA+qXP3ukdgvWn9x42iYAs4kcxWnugsoayM29xBB06Mj + BMpcIB0A2RVuGie/IKdEC+S5v9LtF0szE5wifJM2kB1WhmJVedqME7JnTtQtbYbaWKfNyC7MtBl6 + qCSaDVfCHUotWLIRt25FeHlyxk81wsSo9dXCm6PtahagqIM8798LPGIIMeohE3z+I4b9QGKYYiZB + zkwc/sxhHZmJaGPPTKiLEjMRD8s5eJTPkeffFUF9c3z5nKaLGI8sllpiSBjgheqVP17WvkuA9S/f + g5DbwQsrXrfzwhLlshdWPJV5cu8+exUnLPPDihPWDRl3wwn8CH1ZnvVMgQgXjLaURfnx7JT/+jZh + RjHLQnVHHZKkzuRfN2mWjBfJ1XK+hNNyN57P9hlMwsdlAvTW07Pl/MtYSBunHMHIEirdgFIWkgEp + ClPaKfWpWEUScZLvMkLmVCjRixV8/l+b0WspqcIS/hgfMMJRaQcjd7xhxEHKhqFylr3xQWMWEfMS + o+6B6e9ShlYxyevrbL5PbQt8A4GoiQCI14ktIEhICPiNfbcfaI17H73kz1jYzQwlmliboagD0wwl + nkms+9kKY3kyo1zNSNgwp2zCp/V/L1AGgYxx3xHcNuakgten4LXl99vXwmPcMIliqZ2UqoPnQ+0r + u3WpGmEPqNWtds9jrWj6yOtb4NJFbkg5knV7dgA0MRaEXs5ED5I9kMDoh02kJvqpSILSWYyiZGj3 + lEs/suzoJvnWux+XcZr8A6zjmGVQ3DOW3POMBa/9jqVF80aWHDTvpMhD9VPionU1wcZflmtR+quQ + Lmn7ntGv4LDKuv9j4KXS3m7pgKh0AU+1P6QDIqoCMbrnb5bZLl3j7sUqb0faBrzIYSE1l1tASFXT + UpHCZogguqd4zciKJ+14LEjMt8LmFydvToaAluxXtutoB/AwJaOlxEdHOK1np6q+CRV37l7FWXI4 + j8Ju35/zoENaE71upfBJyiWFj57KsNuX51GlQhmPTYXP8377JQgjzrxJEMYxJvEKhS8vSqas+8rc + PxmnX5MtLIQqwZjtNwQOiJrTZnbLxtnqqztepAJnb70HufF2r5aTFLPVFoYJillLN6MXn860CuRx + P5TWgAFSzjwKqPv0nvleh5Qz8bpdyhlRLqeciae0Nv97dlHNOPNYXMk4cz3gXxMXvcMlVTyvEJrn + 0jwvsWjhoIB1gjeoes8q/WsqnHTzFOYN30H0yCwvrgocCt0Y/zvbsE2Z34uMgYlI18E6GasvyOCS + 8eatXNb/3WQDYeUUA5Nj1+cKHq9AV6ltzVRR0Wyi6vkBx3K0jxAi9BGu7wi3q8628pk3GkSR7wj3 + Uuc/8bguUe+Ez5ygY4l6amNdol52YZaop4d0OIXjepXn044qD4p00BHCgngky/JGmq+lolZJh8u1 + T4046yv9aMAGodhxl+7e2lTjTqEG5AUpz2x/ekOELgwGizNUDITn5nh8b4JnjtftZKhG9oh8spMS + JB89pTtvvtlIz4C6vK9m23VSUi5rweuZE7AQdBJQv1qaGrD1p9DbCLskPL+IzFtBHGvMEIlTlUMV + Q7Mt2rcwZ2z7tUFDaI71Y5FLfvEaw5YabgPROudFf2rNQ/RcJxa7vUBMRkXbmm/vn13oRrEZOlm3 + 5HUajalkDQcIFqho8mRtaw85QDBwDn1fR4Sxoyj2ZpPrdD09nHc5GKMdyoA3GKv1ZIal73r2iNz0 + umWGpaBcybDEp8RaX7/7XK1VGGLAt+nbm2IovOuwCfz0BLwVsuMP+ElGSoeQK+fpFjiDkBpFygTK + jbl4hvlsM23YrLWKPQER9umYZNhJJVLKcIRlIAHDt6OwO11uKTXd7I9UjNfL3fAqBvAIN/bd+1IG + 6NuELSupD3VjfhSzptFxFgcsiP4x+hGWaYQ7UTsuY48P47ikZBt81J8G4ZPRqPsTEkuFTQpT0Uar + ijk2GFqmH5AntkVlGhJtc/gAC5dx8gRqNbef02iwMoe+75ibpC8Zrmp49bxRfJXiEXj+MyfqIrvr + NrZJHqoLI8tDPqT74fzjSTkKYlTzbHyxXrBRhv/B+lBwv6DIzQJO9XvQUyBkSZgFweQ62I6/Q+Qb + FnDkctxTZWTJlisYerF8ov1HuEGY71IhhgJ371mO82jId89nhWT1/mLhILWnUXm2gIIVgTKdcGDV + cQqkgOZ2sffS65YCmltj76WnJKB9Pj+rBl/5QRUBg7HIC91gAj/9KJThV7P17gZ44lIEl0vvhQgR + vFsZcjDJSJ+3G68qI+mjUyqX0igVGSbSIypAN5haW76pVrQ3YBxBeG0o3Mk9HjkVGMfd9m4D338z + KyUHGMZYVkq0NtINEDveHYBqAbxDDXV0Yrm8Mk+hrttCdshEqrr/khnZJkHtyy3O/wStJv9EDijl + R9T9ZVjqDqO8sjs4e7eiWW44KH7zCDe4lvvCgMt7WQZ3Nwy4F2R7b6pN6QwdCFpoucNgwDtRQHTq + 5rv/3MUOeUBn5Fefm0YlkbZ5RC/9zUOH7/eyHI0sgETHbmzkexkb7j9aSF12oa5ayrn7zAm6VS2l + NtZVS2UXZtVSeqiqls6k0beAqjeFZUznyyIK4EhoHgkiC862X+Ce/wwNMYgxEsKk4yloclIlSxjk + 1unYIQsoDA8O7uVqmd2Is4tlmhEjN1nPRBCETBnbpDr4wZKVgKJrwLIaMO0dxgk3A8lVl0sxCBoP + lZC2Ho2PMfTijOA204y/F8mjnUwRFY4qQita8dOGhl0U9sCtoDq247LV5Xgxn7DecFuKqZviXrXK + 9dLLcQxeeYFIoIncP8p5vh8lYCHGkhXzNvoFYEQyOAbYuL3FlF63DI4RlCvBMfhUgqa/O61YTF0H + LdRmcMyU8yh24gnnsa8w098W81c+nb/Oo1qA/vxHM08eEasw0vE5juuM/mPeugfzljoxhJL94Rx0 + f/sTQ69bnRhJuXRi6CmdmA8XHysgjm4QlU6M/9vU9TzP4ROMXGIyaOlzTaDJs/EHhNqbp5s7HUIG + NwBamddXTIeMPRv/ntzlCOri76Kk7FS6bjFWRtTMTb4JGqINncgP2boGvlEagUrQ1nGj/R3uvUjB + UffXg2Mv5A4Pyqf4ZRPAYmAyhCLoIwd2wOIKqbponnr92Q1NXGwDfRvLh8eVcqT2gcZm3VO/CTIc + 59XhXrlEWU3pYINg7DslJd3Aw8Tapz5n/xgZOw7YtJSBUmRGVOUNOoD9gZYS+TfyechOi/FTlBhG + FbiysQLxQdkuj4MWXhCtvkg1Wm4RhYGNaz3bqR70l8LBR4lHAAaU9nQ2ofguoRWYe3yE51Hz38Bz + kP0yl67pbSJBnr9Knje77lIx1GEytGt2nRRWtrg26bflgujLz1HFgW6AhakLpVffP0Z8fIdK140f + GocVGml2K0pVNtFqg5CLw7hCrrxKHQgiWLa4y28SjAacz1dL27JwWmpkOX5cJdqGyp4lrcE2TYRd + KRsck54gaiD3Xj3fkQ7FIo2rbZL8q3azN08zSOdxZd2EIRx1IWGDgXHt68DaGiN0BsAa+C5lTx+w + funADpmAZM2XvR0yeCVXuV75ErdbhgEUvkeG6OQ70qh19l+h2xHZQLexNGrpLopGLfWQROGvm8wn + wXYLtFJgLtoSUEwBq/xRxSb+HdqPkIiwbfk+Hw0E99MPA7QR54dR3XBpsLi9hcH3SsEaCH/zERdG + bebvxxVYLdykMh8PQ1S3s0Uh6GQiEoEFXIiGebIy6MFFoWLOaWDNyukAVvvB+HxIyYH6o6338+GW + HTLCh0Ge6h6XgBG8nt4KRe5iOw8dKFhj8DAZq1sBzD54Cw8SQQAXBEVlSQ8Qxba1BgJZf1p30q03 + GcvdM64oN9/NPSPa2LtnqIuSe0Y8pJvscplK/FL4DRNthe+v6Jsalf6A/+YCxzVk5JMBMUrcO/A2 + uhPrXZ+WMcIDeU9jRnqwHPtBn2a1+GtXCgcDmHpiGNk2tQLGGC4W3iHRuWnTHMFZu5N+gJC+xxR1 + nuuNrv6yKchAV3tg5Ks9BUn1pShuZi5oAtsZD0VW7GBPkvWOI6sYqc7846/DjjGSuo1tepPqwshu + kg8l2JmGKtgmt+kiWRWDBItKQeuLSkG4WF/5RqsMHggUiciRwImymHwtuf6nrxvZQza4H8CO911x + LjBSWIgWQqT4mpSGkW2SOaJeHDue3GiMMWLwyrowACoKIMpofIcBDIL0IYITODeqLxXKhHS8MO7b + iFV/yVuqE7VeSp9gSi/++92vFx9fWwLQirA3X0i2KtqvuqQdrVG28D++SE7988U548zem0mvW3kz + JeWSN5OekuD75rwCwMBivwSO4Xq/Tb2IudyZeJHrcun/P1WLK7bAoiiawddi9NbdaroTlbaU9CLS + dVbLa1EnB9/AxHqVrJNeY0FUDGVbztMFCgSwg0WxbqBRTvmnKt+z4oJQFR7YEMr6QOV/kbb7NxGn + AmcZTuCU6l6m6qSqvxbsEcJt+mZbh+NgF0BcDJqNQGhyqwHEpiRbohZbUcudnnIuabpxghtjhiNe + 8RwW4oZN+todWVxMESs5m6sYWsMt6fGgO/HmhS35UJvq/4KOwj30oY5+2i05woOq3JyOy30JoeVW + RYviMKxtQoMAUBM6W80eQaB+w+jZswdyNbVsxvsnWGtAPNqUd7B9sy3vvjXqQyO3oVEbRjlUthrc + THmI+EwvZJkJdiVKIU+tfPUhSDYufO/kOi0vyZDSfl+lRBhPqZ/eSdRZ/ZRtbNVP1YWhfsqHJJJ8 + FVA9xtQW1ceaP/99ljF4ngl8DDfAOlI/DDskHRU+ypZ5dYD870y71S6Nc1viE7NV31JMh7llB//F + 0Zz7exs0h2DnPwI/drnckPa8097Y2of68bnP9mv7SJi9L+PVPb9D9C29bhmvLihX4tXxKemrH1+c + VePVvZhV4tXRphM58QR+BsLfKarwCri3F3IGFeoiaXsfLzcNhW87JHk6YRD6AX+EMeoXG/jqVYKG + DTjY6eJu/OTi7AWVchIfWyo0iyrKEgtXaGMgPFjsZTwlWrBWM9i9Y421UXF5ykhI6KXY7vkYITJB + n4KNjv2oNJxMjk9rPM/zoanuP2wyvpm+wIVS1p0Rbggd/ul5MbKykDnitskq31z8AFj5wyVEh0V/ + YkH9sCybc1kGFgNbVmoBhH2yE0EVTO/ndVL4C+Y8Y11qaOaNrLHRVCcmNpp8Wq6Vkuy/AIVU+hlF + atzp5/dvVZFNg6CopOQImAXgFATA3mDKFdGW6+QI+P7+y3+o0ZBSiz2tPsVH/VDvnOBV1HnjUBvr + fSO7MLcNPaRdI4LzroDZJFquHu0vl8DNsIqtTkKkq++VW8Inz3sQCHmuS3AdfmDAzml6fUXr7pVe + hWBC4BuNXzOA8DNI5EmHQEnrgT2y2EtK1nt7zsLIHj2DXrcSfiTlkvBDT2Xpos8v/EoxzRi/rij8 + OL/94vkxj8OJFzCfRyquBVMvLpZrd4M33+6vdHpzd7kFmUEyKSEEXewu/X5C0Nm7AlSx54bRgHk5 + 7968mwhT8tk7w5xsdFSbOvMtWaciggJTCZa3+1XpM2KPla3hFeqjE50zAxfILUZZLrZ7rGAEF8hO + ZErLHBWUXRD8+ybBokCLJcaUCXvv2WKLsiXCSMDlha/87/rJu3dP+eldFoyL7IuuNwlrJmWOjIjM + xmcvz18B80L1DHYQfFN5HDKF5imu8FdE8VQpN3rdZ5WVH+GuUhIU45x1KM5Qd839EP5uXHfqoH2v + 2JrjPO7FbpmgWB1rCm7A4gPf3DWX43DaS3047FGe30Ot66LtZRrC48kd6EnqARCWB7vOYnmdOZHf + 5TrD1y2vM0G5cp3hU3WdvWKVVFoWhWHlPuOgVgf+hIdhiLXbDlZmMFXMr8vZ5XIl8EXQFXepytAl + ItFxK84TXR5iFimJ/WYLA/1rM3qlSVXU0fPlN5bHNgkejY82wvP4brN0N081PqWhWxd6A1LvPl9w + LRRltHKufyHcglvhZjQ60pgh8lr4sFgzwdrxfaxAWyg9Kws2ZyO4ObWWzBgPhcHP4RTzo9+nmqQq + +Ao6AlV+dUeO1AIuiC1LAzYeUIB1eYo7XgaWVBp5M6f8DV1NtK1828CIPkfyUj9vbYUIJA934Ki6 + UtGL8Bnv5JXRbWyrSqkujKJS8iGd1YLEj7BSo/K/i1QwuM8NKRModPK8SdCZ5l0xT5yQkYP3Nlmm + 9avdFJF1uGlzttChPh/TDgsJFIZ2WK3EU7u/8qDT+MR75nQp+6jbWAedyi7MoFN6SBdJtr0MNERn + STa6SVdpsv4XPCkwcI2mz/0g8p6OqCxIWs1Qu0DKNW9zLowFHnN/pFpm5ODpHMR4MF/BhYmJybJ5 + dKBkuTQYCcWVBRrmbNzDgeoFsQrqOr4Ju21a96XtSSPCWuXR5jkUuqipF2XYZtLquFOc4ptzzlx7 + vw+9biUrSsolWZGeSpyizycVvw8T2IDFOMX4t2nMIp/5kxi0d+X1KUp74VS4JYsFhwv6M8l+57tZ + 1RNUW9CziF2OlT8bwDgZ97nnud4jdAspMdp6jp6Pb2YZiKtfE7gy052UjdWMTLMNnAmq74xYR9nz + 4hVbKdN0mYIAi7WabmC7CTkT/5F+u8PqIzn0yAhXX4mvrudR8FsH6Il2W0DgVhAMdqA61zHwirgw + ehwlY9VB9ZSN0nM62SjhdVsbJVKu2ijhqVTqzi4Y6s5lK6XrVrQ6N0L5Y+JGjMe8HVLsZgst/vp3 + OZSjXFWLSBL+T9lk+zPgK9k0es1Y55A01chWOtWdGOKpekq7WnBRaLBabrCZ+uev8t8GGfRleiwi + /ecB1Zceu6wWH1LWN0PwheU6Q1EwRRQ8GJrw8SyEw1oQnxkrfEDGUYsbKAAMl6Hz1/E7IWCoRrYQ + GLoTAwNDPaXF3d1tEaR2inZLmRu9WKolNlyN9m8afQtsjFCWx+MRU0bSbbKZLY9Iu7IidgD9KfTK + NycSW8xuZ2hIarSiP7AK/ABlfYcqJOD5ZJRLvqXHkoqcqJiwv0V/EW23o6vzDVbmj4WOIxSX9rNx + fKpVECpzd8DtVRh63dbcjZSr5m54KlWYs2roGigrFbloyjmPwmjCuRv60tp9Ie0RiFuMMvP5R5yW + D+dnCpUPt8pXZHzSaEzlS1V8E71eeXlHFlUQd7ZZus0EGpnIgdsl49vZDsG2/L/hbZApzWizaYiR + EzFcaGDVu/ZMa7Cm37gZCZGhPcWrJkoZZOGbawnDVmoqMGASziW9Ct1aZzQQZscQbiALBz2wIpv7 + tUv2bzM5KvC6Udu1UIsc1z1EbfS9t+QIz1MuKDveqIuvoN5z/RjcFUCAAAxFSpiYF7xMK81bUcsc + ksLKi2w1DdaND9w+llSa0Hk8CaWDkqTo4zL9Nj799eU4W6ddPmskmYNYkyZOYjUx3am0rdHRrqEc + aKiN+VpKUH2pNXnzkWvWzlU3P3wPMk3HajjQF18iXjZweasP60xk2CE1TZLnE76LQeh7yYhKdIt1 + sKnnPWNdkKJUE+tQU+rAjDQVzyTMIXqQ4QaaqgKSyXiJHuWKAmf9YqFXdChFnGBNYkciYoAABIQK + ZLKbPcbqo7qch/egFj03y1fUQDkdTfOYvKzqePrmXgl1K/Q1X4BPqZ/nIRKDjuvnQEoOZW/3JiTP + R+jo8/Ha717hnNpYnxDZhXlE6KEsb76Yq+OC8ZDL9Yh+jE/xDyPxZ+HlV7mWTkzxx4VaNhOquIXz + sUrGIo2kO1gkEqYaIWVa+kFqOj5aq+k0+vuPDFKAefBcRUCgdBYCjbbXs3Vj3Zx22E6HvBqibqBZ + 6OUYqpErwxyLTmrq4wrOjnAKSwdkYw9NcTq+Q0GZRI6uH0XhoA8aW7PCB4t3jU1jBb3nM4c2zeVs + e5ksBAhD6fPms83GVpj2mbTDNqSj9PpUn7kO01tusURjQ7dUz2MqGH0XXCAJMl45ya3TJaJKwzDO + d8XxOQmW9IYpFtpSOihkeQbOafzMYR25vmxkn4MjOykl4dBT4vabqy8vVPW8OZyeFAU/vCmBpSKd + mmc1mTiyH5GKw3y8IFzXz/GXK/D5jS7fqqtWORFCEb3056f3zOP2XlJ63coWKCmXbIH0VNoCz8+8 + ipPU89xSFZnwt198+H/BxA+4KoJ6rsM1UQs+Kweunm83ntOMWgQbMvlGUZBPyAQjVbunZaNXcx0m + L/BDVRmlbAfEZEo7+oEV/dyo5v5t6v9tCsTrdZMS9UYjoxPEDiZ9mNYwirdd3uI65hEzLda2jvTJ + ljMjNNcSdlTgOWbB1UIqjTEXuSVQBbLqEN0CPQx3bRwd3EeBx+P6uI+SxaomAVctrTv9f9e7577h + pVAJuWJrK7uc7ztUApXHqog0HM/ZtbxID6LbNop2XmC4SVLS6OFM3t4KeKaq2TDHW/KfRRf0saIP + aDRfZpJbi8eFHfDk4uIPab3UzSbj9/Lh0y5WvWOMi9KkkgM0tJwzW8OKeRG3MAZbgpFcETsi3xd9 + sHGWrWqK16eMPJZi5MP5EAfz84HA6gmZ53a2BuUjAUKtmSvFCVa3tqtim9y4iwcPX7eNbULK1dgm + eHogtolVfHhuGHHuTNww5qJFKQyR6gwsEgE7QKI95V9uMuihcn3T6wdqJ/oBixtinVweOXFYuVKH + CnUqDE/fSHKcxjKZ4w2Z31RoXI1XX1NG+kyhO8HbFa4ESXzwkkSeKJTHeK4yf2bVSy0nN6IFLkRf + UTKkT7FNhSLRxwKz90sS0IfpYet/0LWT1+0wF/rgDZjL3RIr7MUp6HPPHL9TVopqY5mVorsoZqWo + hxLzfzuXJZlfnJ9+VsAShd+1gvYC3hzh68JuBYtHdiunrvgWBdPAJrssQAXYof4PGtxzfO6MQyIW + 4kl13qI+47RrCvjD7WantspgR5o7Hm8hsMOgEeroEPLSi/ewqvYqK71uhxRMlMtIweKprHv66W0V + KdjjvIwU/AuwtjB2J7ADuBO3hvV+SG9qAHblAuXPai+lyDXjPdSl9KgCeVuTVDGO/gYOBxC/Q4VF + mkQu1lchTApsQPPWkyXK4SuAm8AmQs4h2Imwq4BIke63MLgyvpJOfhViB21qXPqNKGKCi6pRZUFE + G+XMOpBYX9ztgE1Nr1tifQnKFawvfEo77sXHkwrchcuDKtZXgCWNnEmA16pk6b/frUHpW4spLSFb + 6RomyNVgZeDAY4mNpax8J3XCuw3oDjczxFGYjb8oagkak27+0ngZL9azKl6GJUR0weThAYty4mrk + U1f4MYNOfhK+FCaj1mICl3xb4d+AeywsnYqPJy/NmTRhNVy/RG5ShNZQJEctyyTwxhLY7F/TypJh + 5+3rZOSdyBuavJBvsx3bjHBvadgwBXohs9gKRC1MFAdwJkhSM2are+0cpY7FbiB0zM3ddrnA3WiA + NR5L3oXBivtKTXvjqMtzb3Obf78M14eszjZoeaEhKlgOqcITfoXYfOk3xBfQzvB+1cqQ62CTev50 + r7TKSoq69UKVOM+FJ4J3y5xXjWxT53UnRu68eir96bOtvNNm22vpNREJyWEcgTYSPx3p56f4aumP + 2JyS6mWuMtbsxfmAWZr1UgxAHRa7UnSLTOhIZZjFPhV11ASrXBfBbLbr5e5mWZcPNCxIY/cE3sON + GkboORQColewecO2VLzuQOVhgvqDiLn1hCbkOL1GMZbk1ukacaow3/PJ5X4nxN5NssEb7ekY/rwQ + pd/HCMsLh212K669zvaSbsbHh4DfCQlN7tO543WA0qXX7XyQRLnsgxRPFfzOy0o+ghdwVnZBTj0G + BymcgMAWREzZMg1oMpTVLj6+ZvqmkroMBnx/fnE2LgHOrYUNVGGU6QnMdnvM+dBQdIsB8Hjd0PWd + qmBdTkAz6EVRs2+ySC8XsMufrQHj6oVtHpvSMcLbFZx+oOJEblx2Iao68Yrblr2I8L/G8ijFURdw + 8g4AjZ0BJyvCNJSqsZQL3hS/IQyCEITfFmS+bLbaKee9oToEPmv4jjjkwGijsvF5eb1WWPKLPTFG + 08xsOmvrJqbWHSqCTWAKFGpslkxzRQLZcUHFeD4unYjSjgClnm0meg3RNo7ZDfDYJbio8+sd31CG + xOeTzydTdSYUnYvNjqGmKXqYIYKgHAuhEuIBrMUqA7qg7eBRz12yoTuSGwZ5Vnlf9fDG/iDwJ/dQ + 4q4ZBIiSF+o2pzURPAo04vpjc9jy3l8IohLqNXm67YkWQ2gsgj8WiTRzVRspSV24eRT56+iZE3aN + khVt7KNkqYtSlKx4KIOl7rb7r6g5LRIhB327W5XjoSxeKfYlqmKGHqUJO7FS1YiExeG2TxuWhaBl + gIU8SDpnS/eFCHXIz/C16zt7N0jskJGj4G6zMMMcNqVTHAqJuLezawzz3d/2lwQHTCiRtoaGBR8k + jL1nDw9UDBg0BlKgVndHEXHJT0SfNj2GmOvE5MAClVNU84apS4+0dwylO0SOrp0ePWOdOJlqYl05 + nTowC6eLZ7bIfpoGwhiwwBmNHq8hcDhkL/GNXiT8w/3WOI/v9U8QB6JrWodqZX1l6W7MS0s9Jp3x + XxtljKrD3K95Nv5faDHCZiKkNwyjtvpaVheEy4JAu7Yr8cDrPXwnvrzC4Joj7jmfhTKpzhAY2/zp + P0TtiPs+RA9Xe6vzgXzgQgcPchdQLPvLczd07O1I9LqVHUlSLtmR6CnxhP85v6igOCOUkBkYEPw2 + ZRyGHDoT+Bk7cdSO+LXYQg/zoX2rjyo6QMN8abb40M4qtYkotPLsnDkdjJH0utUmkpRLm4ie0ib6 + 83MlugQEBgyZLhojo9+mocc815uEHgdFhLZQDtENqru2nBhxfhpGARUSVO5nsAy6HKMwlUzy8gxX + mKhVuMyy52X8blmwV8aUF8K56+jLHb2rCXYxMR7qGitIVWSc0qZTi6sSecYJMCA7XM/jflQtQH1f + nRvGzIjF3Kmg7BWjpM3SH9xtOMkx517I4jIl9QG/Wgy+3hzbhp1SnLpSNoeaONMsGrZU7o5j5pZz + OTrQenkysRxbeSpKZKMeQ+xEsmGko0d+UkfIhRRTDlwmS6FQYkPtLFix524UjoSFaRiATdPmnuMw + H3+f1JVjMZW9sDr8jvyqiwVysB4P5KYGhYQeFX7Wt/TJd8taGcLk+9iEal3Umgevu0OIqkbWAPeq + ExPhXj4lGeemKCYrfVtN+TzFbzRpCW0bBtQHPrYWo/x+AV6tNP8hYWKjwDSwsC5IonmjbuYV5tdZ + V/D8iDIG16kEzshu9tdpdgNLrH8bX8BfR/gKLW0UyWgeOjgYpS8qVy0FwKMIu4fvXYA6fr0V2ANd + 7poBkgd8IpCH/7cO5P4yEY5LtfF85nLVGud3iA8CooT4IaO/U7gRbek2rJjPZD6nGmdlH8xTjJ7t + hIRxLMpEGPrmHphQ7VqEuxEM6Lr7XgCiYjURpkXUOa/LZ6rNTw0jcVAQVT5ZY5aYyqPtOr566pTf + TJX/1KxbNn6cxvC6ui8Roaj+fg6Cg30aCr1uZSiQlEuGAnpKTPLTxdugbCjgEcYOFA0F7m+/eJ7v + cG/ieSD9SkPBB7gqEhEvMVuP0293VNygEmshMSxEHEf6NdmuCPAF49MX+/UCz59SPzPKqhA1EgqB + OSgpSlzLdIXrAGoKUNwkW8zMG890+6ZkjefjN6/Ppld7wq9QJV9TuPyX/0pEOCRGfIiTCUSXwA62 + KiXhU3YT3F9SjZ61Wu09Yp6Z0lks1sndyI3jcvQOEhNib0MqQRDEZnQX1QKtkB393Is7wn2vE1ND + qZpGLHfAbtJt55CYiBwpq+UGprI/lUilmwtTfN0d2xK9GkSkXaJs2qd9xB3BetVOOjYa2Y8prVMu + fMusNA+KBYxipEu7p2VMzcRcRyJbFWvwKU/UJtVOFbuQYyQn1DW5s0pCNFa4Vb9f5eOwupDkJ6er + vcDe6ta644Uk/KtxcaHmEsyqVwj1EJBMUSQz5jy3gxWdXrfMmBOUKxlz+JQux1enH9wKPoHr4Skv + pcwx+BmwaAI/ucPa0zT/XG2hiyF8MSyGCyKsVIZ+BL4YFQAq6nWqMM9MMGIlJ0oOrT3BGoeI8q/w + /pjvMOLkfL3lMqpzvfU2qphc9lxD8d/pbLSXe1m9s6GGAlJZoK67SBbPxx+nsOlulxhSeDNbXVEp + ptyxCk1z9XKz0OHYo5fvXmu7pufxuI+zScuAsYxcd/0OxcDodcvIdUG5ErmOT2Xk+qc3FY+jF/O4 + Erkex5Hn4SbHa8I1C8cadmLBS/NUWRmBnl7zyqa/3C/MTRm7TQ4LxjFiOfAqjpfhEkSX6znc3SjO + 4biy5c50IThozO84uOzmNgUJZLkpf2bj4AxKj+pU/57c1ZTtPfkg43KRw8OV8Fe6/TIp+w3STSK3 + xS3GMumCsXggxeMs2cxk+OPsCnVtaZ4Y4e7UwdZR5BDiomNifJpEJWDJ1+Q62RFMpMz27nKHOTFZ + 6Mqjk8S/C7jpIIHQx1simCvNhuq06HXQx+Y+pJQOzdq19dg1dw+O2qZnz3Wl+Wq2k0rQPxOafDzg + h0WsQSJmhhCuYkfBEYSeveWBXreFI0DKVTgCeEq3zunLU69ienBdxysLV78EMfP9cBLEIBN6dOuc + lrnQTfJtRnamD6cflM9IVcPAQom3qHQIdVTwo6XAtUu3y2v0e2qgmQ0oFTTZMLFvmGBPlwg/I4Kv + SRhOxiefzwp5EzcJNkJRA4UdmdyQCYK3CWEIibjtVbqWZsi/4ESq+HuSW04X83AzfXl55Qnp5WIq + 8CTkxQl/9GpsEFa3XsFvHIOoEilpsZi8hQVF1Jd/TepDEgK/KYkLDpMP/6uWmSlMJsz5lzK9pvvP + oJdff+ac4+Tqea8vCAOqWdNEgNjMIl6JfNBmxtpIiiBqKohjTKy+Z6sbarlb1jj7eeh0prtf/1Uz + xIAHkc0na1JJhpAnSxBRVLSAnoJsuQIaVaROz5TOiiAUoQ+TVO6iaXPlkFp4NoqqeOmLmiJh1DYZ + /XuwghF8SwFhI/DIWxUJo/UFwc8Ia4N0XLVJGG3WIx4Ioac8BR1NWJw8TE2L3wx2Vhtu0Ztam4s8 + kC7ylmPa9aO7E2wOESGPltUB7UI10h6kEhHYrjvYlnBuOkWy/ACJisfK3AjU4VVHeMwyf6+UDbjE + 2w7SPcrsLhNAU9XTAWMpzFyf6CKP+7SDCtz+sCjusCAPFlKIP71ChQLyFL/sHfGDkoV5LLuFHAWU + F1OeWbrQutIi5wHGo62SaYbHcAENWj+uiTsMEsnk+5QVCPdsv+lF5w7LVxpL5k53aKun3LP+dWJi + JlMFvLhTqgC+bpkqIChXUgXwKalQZ79Xo7ydIK5JFfBcFvvBBGO9OTIBYbn7cjmVkgfO6u+UFvyW + gij2Svk4+1IHKihzRMyo5RbMM85hFSoSd11GckWOD0wfqgEf4YQgIpeh1D6cnP3+++9jkMPmMzjW + yl6D7F9ArV4utaHINO7FpopT8owC+wx9v+xwLbrZDMk1isuADrnZPoJLKSpTUpNRyNMt2rcreoMX + lIOEK/MyugAxeJ38urvZJinB7ZkzbmIo38A8pcJ5Ob1NFkshkOaWPYXUJ0RbCeaQFb//uZZjs/Gf + my+MbPZ/ftkiEoPePELCzqmqVTLMhXWeObF0FKgmfL65f1n4nmGb8s0ID4TOAoniaCTXVVwP9tui + k8QM61Dkci3LZyftHkHvgF/ZwjFcK6l0TQwb7G7Fs1+cizKfsJrQzkQODckrUsvKJ+w48o/kzgyk + hfiojxkioV3dtVyZK1k3cyWzN1eyWnMlU+bK1+evKnetyz23Yq30g8gP4okfgkYoHcGv4TNFBJxy + aQqvx35jPKSQGfwglFFEdjzI6ZfpHuGdttJQkn5bLP+VYPjhZiOygpcI7ZmO95vd7EuC5gMdYCGy + NwqonbARgLowMazSvxSFmaKu8nvFpf96m1Qv/Z4gTxEDlhZU7v4rMSfT+U2Cztvi3NSWoOFxk1vQ + oK9vU/l54sOFvadIjsFV3mR+DCMQkgK3RE5MkbDz6/gV87bnhz5/NOQmWN7vLhjhZs+NTbIW9NHR + USSHm7PYlQYFxRRW9whS4pKqWVm7e7pD+/YAKalAVneszTg4jykASfVRGAfwyLqY2VageR+YGDaR + hUvTtdyb3TyEfkA3UN/Ypz54SZ0bH0qwuM/8DFtPK7A9fP0ws7SbGt8x92xfB6RT3rH9CMUOWW70 + 3j0cdNY+6x5BKeHmTW0m6V6zn9SRcgKyqb8W8M898qdiyid/fe50KdVDr1tJP5JySfqhp7LA3sVp + ZEg/aFEAOcd01rrRb1PusjiOJxzdM6w9Du5qCx3UxMH9RBULNCYBi11fJo8N4b7XGXXua8ST6VT7 + JW9km22lOzGyrdTTeuiil3+8ZiHogTJAXIXOGeS4D7vII4y1fnlFR5df/S4RKD7jdEcJ68Ph0BG1 + 6rJqyTnzWYeqJeJ1u6olRLlctUQ8JT5wclYBuWVxgPXRSlVLfM+LI2/ie37semakYG31DsP+s0bn + 8KoSIUpFYjezHdyDFDlWeHkHh32rLEZZupBgdPSeQE5GUGS4r/BySJ6bCQKXwJ8Ki4lNtItF8KqT + TQ167qMrTPEIGN4Pucgj3Na6bovr+48YVG3g6goejyjfA9fQSIfudzEFshawE3bB4RavW9YCFpQr + tYDxqSxzc/4/VRxuD23ApWhmkF8iL5ywKAg5L0PfyDKosxx5rVz0RhmLZdRJ4FyoQrIIz0Ux6qqs + zfZbA/Z2uiqf+tB1GiJeGIzUC5ywfOp9WX21NoPMiRuhZIhcJXtAVlStFO+tIe9xVuJRTeTLtXbx + 4M+214meKB3E0RYOhNBOhyZn9LG8cgLfJNstd3sZRBEEF+QD12PZzLaw91dY7mmRbFaJOJOrZLYQ + jGORXCWIE12t6StGOxtfAp/5MhbpDoUiwtATfWNlW2DqQgqv4f+geba8vp09CZ2n09XyS2Jgudym + u+XVCLe0DoH23HAk5wKPZucJ7WJKxuLHXqGXpNVL0qpNdaKEJzv5S1i4bjd7WWVrBVRnqzuMCR+C + 0Tq5i2JV174VUjmIVEiS+p5Jaf5zAN+D/hI8pPhW+SB3WynmFgsiNx7fTtw8VC5uP+rk4obXbV3c + SLnq4oanxM0/f/pQ4+IOgqqL240wQHuCGH6OhcgJbGmbgLBwtdqn2yTDTHXN6p+8eX329GBGqUpk + KmcM/7nYwvh/br323XoNmpaaAW3ZevLu44enasae57hSGBf5bZp8Ax6EczoV/x4/efvq7VNicZP6 + tDCZ5qB0y+fjHZ6xnSxJjosAHaqbmdLLLrYbtpn+PtvE/mb8BbZbimuzlDKiSFjBQmQYBzaC/nnu + Lg4CJfb5mjVgXfC1qCpsZ318DHZDdXgjBWsMYs4zh3eCNaYmtrDGsgMD1pieyZpL+yteLdoszYc3 + wDzTbDdDvn66J2vbKtXlGO7qCzGcAskR0hVAyF5ExZgeS0CiPfj7PUc/ulwW4VPAWsdWaGi3dEaO + dvEUlrXH/Pz4yL5dgyas4gitBz9AVGLo1BylMvDjESPsR//QmD1js1d39pDddfGD2G+7oZwrjwsD + LqY057P3Duvgw6DX7TBxiXIZE1c8pVvo759P3QomLnejCiauzzxYhInPQocpQVKXKsiRS56XNhMw + OqMy6tnbT+MMcVNupWD4993crUiFX2fzvdBW6+MqwrDRCMgi7npVANehpEMaWDImMXgiUK5me1Gh + FGTGkhnAM0dpBDvSKEd/r3yokqyLQoGeDjy2eYEI2C77W3lDPi8gylRLN2kCb3+Znnw+M/x/KAHq + vxdCJNBTjkbDNRoAiqMpfbNuS3Mywh2l9fLYE6nJoUPXRrUfSwGSuxKdbb5NVd92/l2xDnnfjUtX + oVUb9ReGbpFWV/06NGehow/fvvmBYTx2oMYOopwrLSjtO7hbDoVUFjzHUYVaoxdhN2VBNbEt0io7 + MEq00jPbGiiaBtZo4ij6P4AbcEBpT805UzDxnmPvzqPXbWHikXIVJh6eSuvKyf/WwMTHlSvxFwyK + i/xJxHzflehvZ3uJrTCb360KIZ71bh4Zu0zQWGgXkLZYzFec36TrxRat7upkABu+hdXZJrfpIlmR + WRV6QRiH/UaY3Oez7WIpyK2V4XUpbBKKxHMlW+GJu9nfgtK/m13N/vUvNAgXc0FFwgyx+xez7e4G + 7mwYDVoo6db+PPtXDdB8PuxSXD5spcY0iAa3XWkC6yMgI4+ZdRdzLLiY+7EflmHG5XTUzi+cpevZ + WllZRGZrfVIECOmNaQxe4CPmUTmNobjQjTB0UeA3SgyD0q3O0uj9XZZOlWixXNyt5kh2/RAbufsm + pp0LPP4GbXV6Cx/auyM82Tn0ukcRnB7l4OU4x4cSaJtxTEhJsd9j1qSBxWh94wjcObETxMfW7ptd + G92GobnckfmzhWXrX+YTqzdRGWVj+jBoP9/bc9gqq2RRF91pKcW5cakP6yBMu6YH5C+PVT8x3e+S + viLdI5LHmKsOQYFUpw+tOII8Cg1rvBA6futgBQW9kBHSAJvi2K5XIKOo+n2pYp+fpsOMe/DOygdD + yV+q1pPv8C7eLXzd0rslKFe8W/hUIq+dfKjWegoxzr6SwOm7PI4m8NPzfCkpQ+c3S8o6Mi7EgjFZ + Iq/NbqvIa8O5o/JhYCkHGMhhacbzwiaoEhY7LsxQuWhK3klTxW7f9w+QHF1M1QgL9OSNIG58Kj4q + nHzyE1R8h2pI1zc+RU4tvVDZfnW1345nO9htAvJTEX8+TgkFdPdXCsf9CghSgMnqrmAsWmbpv+4Q + V+QJrJTMmxRr9nSEO0S7qGImTAyBTHivmRPjGjpcGxYoiTjE2nk56rJ0Aulhh++figqiJG+ITJa+ + d/to0OzCIYvX4n4uLUnrWbC6gY8m+kOkGg52SbmgWtEXwfPsuAUdLvhfZt3O00ssNd7Xfu45roSK + Z06HDEh63RIqXlCuQMXjU7qsPr7+XDEW8NgPK1DxgR94IZ8EKEHKq+rT+euMqLn/TWnhkvJsi8xr + e01KjOaQ6CPB5KXL2fwLMtz1QkXi/vllCw3/qmrkNeZzISw2qYPwp8iN6mDGdCEtVIx2u2T85OTF + 6VPD3NYEORY39MZ4GAeuqtumb7WmbEJ2aNSFxIKI8WPS80aPQqYelLEPwJQkBnvZgdCNyuDII1pz + DChXojS8iVYXUSzBfaBX4Tb9migMqWx/CYLAGhlHNxbkkbz83uF+B3lZvG4nLxPlsrwsnhIL+nB2 + UY0GY2FckZc9x3c9NvGckDuuRfoBXBlaLquiSp8u5jza6PCuFQzoHsO7eqGimCzCj8qgKIPUVWWR + K+1Iw0JUDCvX/WCADz8ZVgOcPMEm3p47QQdAc3rdik1IyiU2QU8lLtLJR7/MJljkl5Blnd+mnINg + xSaco6+f2MSXZJduQKNJzURbCYY0W/v3mAZUqfVg5gNxv4kgZhdyzsqchE8XiciK0R/EpzVpsaYB + vYSMUCw5w3wPy8eUDPNIG7TENdJvMswzdI8fojtqHe9EROkrdVz3upSFHiU80aQQXQO8vFASDO7E + V8+wxswSG78a4SbRQhRz/NFwxmfxtYJp1M5Nqz79MNn5D1dapEOzxgG7ETFJss7sxJL347YeYeV9 + z9KcMjLP8mx25OJDJsBj4rqg9vHkZc/LCUkQtmGarNHE1VP51cUlo1eMPXO8bunOqpFturPuxEh3 + Vk/pmljdZWnuWsJJfrKBb1nOQWR8Omr+i0EfK09GEZUPCQJeKB51rPcrCAii/2q2w7in+fEkPY97 + tJQKNV+6QGdtZEF4ngMr3qXbx5tROWwcr+fQERQ2z293qwTrKR0lf5Jubm6p4wNwQeIjHVcwodUR + 8p6s0/Qerr0O2FzidTtsLqJcxuYST2XK51nVMuWK2M0SNhcDDgnyHkM0Sinvnbw4HQu7takwF409 + IHJ8OD/79fT153MJZzAZXxEk07oaojYxIghRVslNMkL3nKfrf+6vSbdcrpbb/eWSYjDgx00y+3on + jY4LkES/YRgz7Yevy9n4eoVBN2gMxjgvSSabjGcIKE5AiH/Or5hSVV9sdtXQlWpM3ZMsWWf78ev9 + +nr51FQH3RZMT8/346iSjZp/0iF7GfNZKZ2zjLgZxo6WNws4/bPFrTLuHu7DaQQmM7+goClXPsCk + GHLXetQ5HlndoEuYZHFzcSE50tFPuVtHeH6VKO7GbjQA3JiYTuLDdRNvc/OIlSZpsbojKgQa6wPS + /QHb93q2moq1UyG1nWNiHyYg95GHXzwyUzEymNp9Vns4OzkABYOs2YAdKbfV1fyPnbtGoImVtsHd + t+4zJ+ymbahGttqG7sTQNtRTEnButxsV82EEGBUQDJR5UqafZ8wb2b57ge9CDyKeOgo46SMe45r/ + Nllz7fMcbagdSGSkkhjmR3WnJw0gXHIhDJGQ+kxnxeL7RtYFNdOR3SKSdQ0MSf90tIgsWRq2oduq + OT5df3lxz3LwaQcrUOjKIsB6vCVgj+ZBdkhL7N9JG1Nhjir1HneAUqDXbUu9x1UoBXpKTOSPF2es + zoHPyg78KTwPAj7BejFo8UK+88fl8v/2y91yPdXJlWIldbEjTJb/Ct+yVy/SnOh/CglSLr7y5f9x + uWE1sFpDOdL2LWOu96pFXmPxUdjJoads9kO41Yad0ZFY3TwowAkoUoxu5nwm8jxyfRBbDTgHnHYe + 52YHY5T3jzd6RMTsrVbQiudGnGo+bpINiItHDA3TGckglOH0JSTSH0t2MGsMYzKR65QFr+JnTtQl + k0u1sUzl0l0Uc7nUQ2IbN0XoT4UBWc7oup1vPJQ9cOEJC9JRcdBi1wOLJpmuV0JBf2BJEBOUnxul + 7O4K28M6StQO4Ep8ZfDtnY3lqpGt+Ko7McRX9VQay2swXfIToySBopm88pKSZMq2dN09yq5B7EnZ + 1aiSS1SSIm5XbwHB8x1PQj/JCudFRJpX5z0oU57GsYmqSCKsfHRxfnuMTG0pV6L6Md//7+lJB1w/ + amCJ7CepV7D96DkJMW//53NJiHFdzwU11ivj+/3CQ5ARJjzkLKRt+E5AHF4tyS9RAMWHtQQmo/Dc + bmFaBYTEDjOpdjmuU7qCkfw1nf3UyE4q2odHEeJg6i1QQhyO+iAORx0Rh6NaxOFIchWUy5MtWi7J + uKbvlzJInzqqr2dXzKQuAIjjQGIHBUUAtSNYRX9X12FUup7N7PW9w7ePPdvwZYKNE3TAK6bXLRNs + BOVKgg0+lQGDJ7/zasQgr+LH/YKpaj6WbfHDUAovHwzdWqNJohSQ54VYBgyTJb4EGSJCVIzir39u + Rf5HbiAXSbmGjf52vwLGvt1fwwUB8syOQB0V8hx8ek1s9JDZyvcVIe34EXP9ctrvIHGLXnCUS+E7 + JlIObOx+HBkfj9PorJiWRDA+d6PYnmnR63ZyDlEuSzniqSw19bJa1tGLUaQtSTgg/HpwRCfwM3Ai + t73aQrqFHqq84WeUXRw/ZhLM0Q/F2Um+FS292+S6o8H4+JoNHiMw1VfncN3Ybyx63WpjScqljUVP + aWO9efmuehnGkVnDzIWN5blxwPjE85w4kMLzucxWzMZf4drBKsowo1dXwq8EIsEctBUEa1RVIi91 + fiPO02KZZel8qQEO37w8o/m6SOber39udr9uZ5eqVAT+vXDHlGyGbxbLGjiOSp2hUuRsI4gW+meD + MB4uFNcgmJ+O85MX+NVTYyaW65vl5dJAoDO6cVqKnvmhw5wyZBetTF69sz7SIGCxmTyQRy8ouiNc + ofqxTnTiqt1WyEp7AYWmxv0gEFwb98S4vCdGuKM1cP9QkQOOa8Bk9KWD04xNWlbF1ojluQ7dmSZO + 6JteN+gQBbruO4K4eeAOVcQ6h71hc57sBnQs0Xaxy6ECtMXVmh0FOznAZaTBgRn342fM7YQOLNvY + wgOrLgx8YPlQAgTffGEK/QvTa5oKFo9O8cXSM2wsUIDhjFAmkZODny5mt7PrZDy/SeZfNumyDj/3 + pyjuG1N4D6iEGzSLoDGy8PnZbglqY+fg2dDxKPgVyxQJyOyuBFwvqLItVIRwwk2yCFLYjFgwZPhw + e08tDYeNO64vXvjD1Fq+56y5hlLOP0fx5Q5owD9beiDTQMA86AQEDK/bAgEj5SoQMDyVqDu/V7OI + fe6yKhAwwpiwie9wkWMs4q/Q+jZPN3fjbL8RDgSCnc3WV67wHlxvt0yKcUplufiSDV48rJoufPAw + lPKHm3DyotiLQGIpqRbXq/08zZLGmGg/KsVEt5PbpNlSgEe2AN/TXjoDLlhEpC/iDvtxCXf4YLeH + 710DiAGu6wOzNNIwmJX5NzmpCSxMiEKzjTxlcFtTNeY11iHZiocCIVBNOxx9HbghDc8XH1+7BQwh + qW2NcHMXMInDe0nYVuwJpI64LHaoITfLHC0BqbiRsEF1u3WgIvaF+F7rXdalBEJDpHdfj08XMeGn + vvEfyd38Q92mXOM2e2/Rp+l1Am6WbWyRm1UXBnSzfEg362ZzeUCPKxron+T5vDK84+kIVm4O7++3 + MjLN+PP4DOiPsBMKF+IU7uGEnsRYohwTnGnhPNMGX1nKydbcAvNDJiQ8lrDU9UXKWvRGq/aNyGke + FW6o4dZwCbTw6zzZUutfjKKEE9BuLlfL7EbGURkF4RCIFjWxTaplT+vQKiPORmznxnR0a5k3cqle + tsm0xRAzRDnvdthcmE9PKbFiM8xvVukW2Sa+VCpTc1AtdJnviG8uJvSIsf2FodftIWpNOULHIJd3 + zk8NKWJTbqS6c1lkRYf15I4EO/H8gcrVM5mhs7pNF/tV2+3xABVVjg/11DsbVAJscjuDrQhMJvnu + ZV48zlSYkPcmfsacTkFC1MQ2REh2YAQI0TO6i2bba+kRTbdwd9zgLYRJ2bPb1MRPfHL24d1LGAlz + 3SB4Ojrw9gmQHSFtETzkx7LwmE9pcQVefXQKv09xq9DXcgg8zn7kDgxRwk3oKWv/6OoFFQUEuFKY + tyPGNTrC8Pa903n8Mg2EUp+JI9BRJ3MJpfzAPu6ef+P5kW9B2B6HWd8gxxJuZ7c+IXAaW+z7IpUi + KZeuJAKJmKJQNMRHKzbMFVSfF3aIvBOv20L1IeUqVB88lUa2d5+9KlSfXw28c4M4DOKJGzqiehsy + bNFW2dfEtiGDCNzcL1+85sqsttx59wjGpfR40/HvNkYSdDXP1QpIho0u5IabvgBoHTPuxkEZueAN + +/WCdueyxdViBtFEvMGAxiIvCkK31AVlZAhh8wtswB32YldKxMWihE0lP7gToZxWxkyoF6tby5V4 + jeVK6vs40iJYBBlv70BaDOazbD5bmKsQ8lLaWc2oR5+RYfKT6TYhex/tp2n9fhL5Y3mVNGlwrNkf + +FjvEdwez/MTJBjLIi9zrMIhkLYQpEUISN6Ljm/A2ndf5mwD/c5XewoU1UspKqa376IRnn8dvMkJ + mg23KjJBu03eRVlnrsNJ36R6KmgwFKRm17WXRKOExSMhDaHfFWjNljW2w8a2cVgxpEqQNzQt77ad + ZL1Q5qjY6qUtdI70/zpBqMSaziXjxbkoGkJKR8j2M1jgUqhou/WkjYRgXkKIOMD/rAmymPT2z5/O + pflExDXJ6DlbMj6T9kixQoslXsQdM+Hv32jdoVmz7HlvRga8ZYubzO6etrKMDGe/ONr0/XMbHVwV + zBSG4TMn6JKapNvYBjOpLoxgJvlQ5byqKS4mK9Y/LVLkvshjG42GjHUZNmRlUKi8TnvywWHtuKcS + qXnwNupmytJtbBOpVRdGIrV8SOrUYplJa5Y79cfJt1QjaogtpfwnxuZy/zb1/1Z5V/lSXiLF4uvY + hfCruHGk4ugcdXsLL8wyo1Kj8PEwVSiDXm+T645CBfPJxVtj3r/epn/tbroaoTwS327Rh2sBZmDt + h/je0k+H2LmHERYcFuaeZ9jxsLMEEMqT848Fi9LTI6YcejBZEIxh+F5+RN5qZ2O0Sk2FSRY3uGAP + 0zJ7OJ4FO67EzcMD2TM0wc9RhyxG9gCozT7J/+eztYrj7hN2zX19qbyE24HFXUSVvJH1taI6Me8V + +bQDQodBDK8Ij7PvKad0yZJW2cicEvs+vge2bh94SK9b2UQl5ZJNlJ5Km+jrF5Vyfx4vlS/xgt+m + vuvD44nvhrET6/Ill0LbyPP04Do4/XT27h08EnYXmWiSkYkG96dAvb9I5tzdGPWQ0QijDDeyFt1i + v17grSECJ7CJt5mML/c7hZMA9IEoRqmtkq/JKjPj2V6dI9k36ep6WYjZkjChhSr2ZLi9uqyWI6Qv + UQlF+EWm9bCMFXuWWyqd0IujwLmvhMT6bzMLNkVN4Y96cKOfYQFHuIOVZc6LY2+AfCucPVKTDTS+ + I7OvxJpgk+KHdcnEulfibRGQ3zH7rEXyI/GDvrQf9usAMlAnjJxDtOJmWr0/MPbyWZptNrPtbNf1 + ejsSYVcwSmxSw0/vj1CdyNMpb/oBJLjjgneUEBFqcK3wxH+GWeZdsLWojTW0luzCRNaih2UInGT/ + BdqnO4WQB0IclY5fwH03LZSalQAiG1xLDP/bZlOmyuSMXaNfLE/BgkgKekefXsvDUW86HuBkdTRQ + qRWPNKBeeOI+c9xuIrtqZA2ppzoxMfXkU1p1GyN4TTWS2hBcwxZZ6B6FfOYqOLWeAakd7S1dokkP + RGlbO3wG9oz8UAbY+/WqGCx7d7dNszZvSs89c2Q/DxKnCYTiwjQfA07DKXnu/Tl3og61VsTrdrVW + iHK51op4KnXYV6eYtV0qtsLdsFJsxfdj33cnfuB4nrqvCnY9tWRFLWSbkKlHJekIMVVrRWJ6MGIB + YRZJk0zmzD1WlSzGcDDu80gV7+gcVlSgFHkuD3lYIYRANMs1jAwVB0FxVl+6OI7irrR1pAZilZph + S2aAifHFrufGTgWv5Pspz43LUaA5nUmAhkQjIGvTv7lGruO5zcE1vhsFbhlyTG2cy/1CCIjGYGPH + aaCmVmV0WtTvL1PQxnHPftxvIs9comx/OVVhmKhpy3gcZRKQqKgXsy0DTZ62Ov0M6CeX/xaaPvx0 + xXtoXJkIevCru3k6/utmOb8ZL7Px8hYnH20EV8BXsSv4eatdC/VLpU7fSBx8rfvD/hxI9z9Kka4F + WehM87ArH9fdUMrU5rAbURzHWixQq98YN1KNkrZqf/AjHp9pQauaHoFztx/s7kHvPnMIwVn4BnuO + LvAdp6ZahDGJ1YosQ0qa7UJfQEFSxt64DxItEXRNBCxCZPqGEj1uU9CxZZLg8hf71pAWOqGPdzLf + dG9vkSfn5SmQaloVlQ5ng9FEFJQAKZl0xQ7pR6lt0w8Aw+Q62pwU+/yZ43czJ1Eba3OS7MI0J9FD + ku2v52tZ7uNmme2wbBus8q42W8qLoyh0+dNR85tvgNoISQpDks9kppTrinVQUSQo9N+mi2Ql587i + Lnb9XObQafwd5Q7XF4vXAgwwwUDeQr2Mzh3UALYdiTzQwZRCNz0cgyVemrjZk6WwDsIjWHysHtIp + ameoytiBH5SWHxY/LxvYlRiVxDP3YAOlKo4CgQFcnLw5OQIjX02QE1ISU/5hXS/hB7M3CdOPjJpq + Pr4doZmOoPcAxn/4/9ji43SwcUWeqlEyTJbaYJAQrk7BDV4z4O3dXBSyje2dorow7hT5UOLG3qTj + ZjDRUfufx+eLJavU/FCdYgIuZ0eUjLHnp5xqA1B9NRkApNWeYeAP/h2MztaN7GbLIa+Q3EPdYTvt + IwaP7elBAEIVA6DkzzfnIKTZG4npdSsjsaRcMhLTUxIkz8/ec+9F2UrMfDTMFNM/499+Ae3Lcb1J + CP91eTuC+fUWeqgimNfWkjXwjh1uVlYuVB3gPvc8t1Jj+jGBmYPAzEajx1F7V20xV4L4MZ91AfHD + 1y1B/ATlCogfPqUtdnZ+JrwKJoofc4IKih8PAhbGEx6EvqsSjDHTD6WIKzhiwhYKau0yy+tkCzts + gpXUs/2lEg6lfTbDxomsASl25tl24wWVfVl8T5EwrfJRc8FvJ0KJ+762pTLUCLtYJidjIop2F0dt + loKPo6YAPDXa0VDzOhKrqw5AAPfvSA6haGY6MHpr3eZYum2SZ+AS+sDtoapC9wvEG7kkABe/rIsZ + 5kgTJSXGtk5ivWRj0fBepJuhij64OouIvQyfOaxb7IhoYh05Qh2YcSPimYwa2SZX6Qq+QGcLjZmZ + L5S/oV+oBohQLxgeEga+DA/xjYp4RKP7FqfbaQddrwr1gbHC0O3lqo/01l+i7iHTsoArOEU1i0cb + FbrQbNrGcCVS4vx+jSQKfpVeAXCurunlufY3P71uW9MLKVdresFTuvk/nr+pKenlRWVkkanvwZ3v + TEBLdANp1/xslt/CPH2J4SuuKljV7X65y+ieuptHm+nn/QZuKzXt6LSX5rnsudIAMw1XKsktJUrF + WiTHfU1WugAGvDsbf53hZ4uiFvJGECW+FFaCUl5T2K4yI06AJqy+YJJ4Mt68zWECSP74uL2uAgx3 + xS9hHkwxr4gcLwtJPEVSbhA2QqogakMUszKpXePk1+GfoKmwuWxLsYcKSLEyUpbCNQL4X1MoQD3B + 5frrLEMEBrkOT7Jkne3Hxq5/avQBs9hYQhp3qcPKkCrHICALM3O3TyoiTMBOKhKLeQnuuDh2VIED + xCH5uU7QCLlJXijOd0ZyEYktmssvnBVVpOMV8O1dg4mprbiEQ/AA5V3bB9zt39Yl0lL1meCIs2S/ + SG/uNjez5vzilkXCM0GDNo6NjUTg8ZBcoJdLLC97W4i2sRmBLNNTE3rwqB0LcC/kScL4196Aa+KK + wSYv2/JI60Zv1fBBoD59shubm7zm3rPaTwPBZbiBchBwDsJ83Mk/QE1s3QOyA8M7QM9IHAOJ9G6F + Rx144G4GhyMZC+zHcmh6y3vFfrAGuEfGsvtB5HQVw5aDOJqiTGUFkW0qsABJwBfWkmNpxw7hLAyA + 8xm7ZKC+EsMRc4n36SLZoqEaL0i7Tqzt7UN1eAxKaJeSyfcMHWo/lO9XPsgleNkdcISZiJhvO9tD + RP4P1OEB5/PxxW6pLMJqeX2ESzfPOgMh9Znjdyu+rhpZBwqpTsxIIfmUlPB/3v5TemtKAhwZfg3k + IxkSsEig45s7kUnxX9i8+BLSI4du6FvFCVmJgQyNeFWZM9skc4w5OVb4lJnV2HYz28Er60K/FBEp + 9Zd7GkAj4p1PAlBl6g+Hxihhw/dUaZdmab2fSc4J4xy/YbZti5jpAOnyIwrKh4VUe8yVY0VeF5Rf + XrtnusYC9aTUhJQI1NyD1J68dae/e/pcHYEO5HqBV392yv0BE6W/HOi5booG76QxAj4iDeTw7IFs + e8z0qasqkuXTOeuAPE2vW5ZPF5Qr5dPxqQw+eH1aLZ8uUvBK5dNDL3YdNglhkiIVrfT6FP2VM+Mc + 6bxXEEFl0Xph64L5g1fxbeXYE7Mpr0DMsXlp8PIMZn+1mwk6ySZbrqSRa5XOFhnSWC0x8munAXMV + h4SVXV4n6/GTs9OPJ09BWxCEyfZ7fjWv2n4lBO1KhVXKIZ02+KGDJpNlGPjMjdwKpjWW50nqhMai + /TZ0wqAh7MKgq02TBeBcw8bJS37yQs5VGILMW4ZchjkTg8nwtoKphnmWIHUmWbOifdHaCecT/l4i + e7vM4Jqa39SPMW5MYsPwMdf3/jG6kF41uEdBb0lge8NizWBvAD8+r1utJ+evp6dPJ3kGV9d9OV/N + bjdifyVb5Wa332e9d/UIj6AuQhd6rrj2eRgpXacngh1MM5UGKu/vjlq39Ko17xOrq/8ovGcey8kw + 99SvNgHwx0YDDIAa/ADS1oHWVNjqIKOzFOL6UmtBzBlIsT7elukGlOCEFAyG0C3CuweZ+w/sPl5B + DxlhRdBCZbBQKHMdn6rvxgWkGFCco446u2zUASuGOimDxYinqiafiepXRfkr0MGcHR64/yZoxHLR + PIdCZ9/DtugQOitetwudJcrl0FnxVEqvn36vSK+MB2ElcJZF3I29CYs8B8NqcYHhFBS8c2hIuEmQ + mUlEBbj8X746eTm+TL8BawPB/e45sLv/2y/FnACjY9HFeCtCxIRpVWDWkpCZfmkIMBD4iyVMBKdR + Egpix2MVoL6WYdcXRilFy9p10USOBVHUHMnghljjqyQJuv4FsK3lLa5tbhEphveZPvrAPzTc0fBL + N8KdpGOIYcuQVY3Uwe1R4YgtVA5KL8BVfGq8vKSIvkItl07D8CJJKVunOJAV5rlZF2IYIKyxDof0 + cGKsExDcYezgJkr0NLQzqIFFisFctMdD/TqOusEPMgEr6dhzaX5rm/9w8okTOeTnMOfn2I+LGE3S + uRHPUeaSNtf8YDBJHo8kzgKOpQhH3Cvy1tNpcFHsPHPCbuKXbGMrfakuDOFLPqSrWZdd/DglA1xd + ot9IqIjvFGsszEBr8/PbHRtttvhf9KB4MZdxuRRfJELPk28ClULMWiO7sy/RO1A2cBwzIaRtkg3w + s7vVVH9nwV8xEYC32d2tWAVY7elC2kTzaWnlDA8TB3x0yHg+uRRy1LxPOs5ywI3S7FOrvWhtyxgw + ddXjEt7MDQP74GJ63RLeTFCuwJvhU5lWdPFnFd0MJOwyutk0CjnIH5MI5EPf1RDdYtVBYFNZOUoC + fY5GskRG/2T71U4UZcNo0qWcKAHqjGwPMTnHi+3+Ohun30Cg2ayEbwwtVPNlJv8l846yuyr62aOr + gPgIcunOarDmZuPz2cJnm+lE/OJtChehqsOFkrXERsVYUhM7gUx29Ss7o6qV0Fwfl8KLy/V8mwjT + af8dgMjeQFiYU+GAwJPTEW5ejdDlBhF5W7kM6yyMneJ2ay2WbQGrFgbPdr0hJkZUDKZEYovZ7ewa + y9wtb/e1eP6tcoMvM0fg/XQ7vdomSSeT7OO1bwx6uygWS5mbH947cYcqCPS6FYuVlEsslp4Siz05 + fxNVTByu75bKIPi/TUPPjaNJGDp4wQj3HAUjpMKZoa6xqdxOIlAbFUmCwMduHPKNwG+qaOzJ9jo6 + OlfCdRmLokrSsBkcMU+l+bjWhuGGrNH7JBDxK4VEi6JRbXaDz5vMDC6PoziOy0mg9bEpsG/my/0t + xpcWOGLyLRVSkFlw1UOIz0OfMfpf4HfTK9ipwNZqo4WkheN/10/40+npXfYkeIqbW8WHAEvA6JcF + SMQC4nWTTAxOjm3Nb2jcGs/JOUYbBLaCs6EdAr/yzUjsTM1A/cAnk8mPEFvvE5evbJIjqs9bEDxs + 7cENIphkz812mCk+StZ9XNTPAZOLU7Mfy7ymK03GqzSrHMxqcoeJnR8q2t0TGbh/vjh3wg4XHr1u + deFJyqULj54qNIxKwiKLhdZQNOmDTuHGPugaE7j0uEYqyGMGkM3NEVmxmDePC7ZSOCQgSRqOS/dJ + 8u61+3QyxgQpEC1hHgXya97oOYi6W0F9VszIf3K23YFkfL65hv9+XG7Y5imFFpCIJrKw1GpgUTq0 + MCAf3cEvT5ZPPyQ7FO2UaVN7ETY1aYrd1RUWYx2GoAqtnJdAODAt9WEwkV++kScFkIM4CJnvsEqv + sMmXmyVyrcs9QgHtSrAJzG0EecDC06HvVEhqk7A5PK/JrxJHHmKM14ojjZPQIJV4TaFAxvcP2knT + l2hBpdCHkGl1L2ZldmY19OOo1ox19FMc0REyKSX6ODxyyYJYuBY6VVDQYoTH3BIFc7KtbhQbKu3m + P0cCIuanVYet6GNrJzn0BKyN8oKGyttjgY4bkZm1B2ezHNVw9JtKAOFpL++hFkZhNe5jaR6QhboS + t6kEPoDm7uu0veDEfcY6ejRUI+vUPdWJmbwnn5JwUmc/LiZ1HPq70Q8GnARRIJCuIs6Cg36B/v6L + bj7o74jcN1xJ22MVmi7ZcA9bxOaxuks6VCwfzH9CJU5fvne6+E/odTtwFqJcBmcRT6Wu8z+fK/4T + ghIvgbPA4yCIJogK6Lfj/p1/21W9HAP5JvK0CIkd3Bhz5DmNRWOAdgD7viRf5mlN2XIFbaphQR4/ + RLEsW56fvXTfqzvYLOBZ+RJxAeNyaHQLUCpHsmNxwmoGWNluuMrJX/Av7HS/U7LXDP5zR9zyhwGg + GBx7Woy2dt4fldlKBzeG0vTPHL+L6R9ftzT9C8oV0z8+1cWjBBJT2fTPKqZ/P4yCYOJHAQaXiOBV + AtlFN9Y1SmMi53K7E/UEJFzZRPnq9iJo7nZ2eztbLWfr8cX5GcYZqJJRgV/FamyhbtoloqCJxWCM + nVetytSb9IezSRGpVJCP7su5ClNUOFfz1FS18vomcBkmOwGLKL9LX3PFDzT4XMAaIYqKU6aHou5d + rN+jujOdDo7XTjGqMM62RXgC3/7U9Cjo4i66f9CVqfLYcy2aSzfCxXbje7ChVA3N6s4biW2f+xVC + Uq4DRvjzrTNfO5Ke9WlxJY7ssX3ZK8NpCBkRK1jUh4y+sLqbldP2+HrCQslo2RuThqow+XgtjQb3 + 0dN3+LimHF3HJ6Ed9SkKT9XFmzplzqj9Efnk42g7tvY+l8glM1Z40R6nWuvMsGzbKparErJn3lvm + dNTc80aWQKB5J0UoUP2ULuLNJpGwoAJ25tvdSupP4wR9rUiq8Q9GHwi544YScscLioqTKV0dDwoT + eBEvkjfK0B5nF3i4CEHPoVqganbVrA4CidKddntodmSuZzEpakh4/cFCiH0WcmOLnE5hBmCbzNQu + HmK61ammWqxn58z17XOF6HU7DHSiXMZAF0/pFJ9+fu1VINDd2C1DoP8SxjHn0SRyQBeX5/5UKUE1 + JfcmZm4J6HkYf6HUJtQFMcMEXRMlWcjMDB7PVrBdxk/O0hV6J9D7cAtHZ7VcfxFv5llGcOs3diLl + 9tPdlVdvBVAQIjWY5fDRjc43HoUBi/sFPRawz4G7s6pbzBo1tSjge4zF5agf25z4N+8mhhjcQKsg + 95WTXU3yQTnlftL00YX8eErsbl7JYhehU0J3LYzeWJsCcqkc7NeEMpdn1+XpRY9qY7FXRF8V9Vl/ + lJ0/wvOtQfBdyuDCTyQrSe1s2Ipsg6XSByoktGVrdRjU4QjTlgBV3FPCFHxwJz4Q1Tq1BZmSljNM + 3nWPRiDr1i2ZCZ7rx0Fx6EaufLr9YmH2GsAR5jvKyh11qG9Dr9tauaNqfRt6Kq3cJx+qEOQM9XnT + yv0Lj4OIOxMeR8KpcDBLoMRVVNE+jdGgBZvsVoTSbJMEmq/26TbJ5iJyXb7w5M3rs6fTq73RSmZI + JpkyZ+iCrQmmvCfbuwkwsZ2MQzhdzHkkCnUgQMZOgY3/uVjBRFTL8CiHev6s1hIVuSbsirJEPcp8 + AZs1EksxGb/fZiifGNfHVvKxRIRlzC6XKxAfn8OsA7uWrGE+20vsapERgMan/RpoCIkT+cw05zPJ + N9jo6+vk+RgWt9/aZtkS/dTlpR19/OM8R8HmXjjC0w6sT/C9GX7xeiZk4iv6KBtO9wjqFSn7hOeW + CmirOXkgjsUkKJYTOV1AsfB1S1AsQbkCioVPiWO9fHfCK6BYge9VQLG80PN9d+KFQRgfzmsyzaYa + Lx0FnlrkbcFBXi5n/PGzjwGw/9/kEjPDpHmQ2UeftksQ1KZqG72eYkq/toNiABfChGdjNB6fvh7v + L5fAUNBXJRFElUGNbM9fNowi2OFE++gl3axmd4j8BHq0YCYlUazbeo1w12gcp8AJHhAc31Y8bRQl + fcJ10RNYTO+yryx/r2WZ0CNp2MH1YB8KxIDFjiPYW+tes5FLe1JqDBsLoqhu/VNxfHom43uRRMTu + E3c/yEXAyRJ8esrgbuyGva7b2NmB8y4KZmD9kBj7f79U0on8qFHlyWR8s78FXvTfL8/DWEKPGNSF + wcmh2t5OSFEAeLWCTrNOCmeurkjqAnEEr2FzrP+5l8hrgq3p2Ewp41gf+lDCGryZ5v6HPWy8BboQ + ko3Ix5R/oPEIGD2Z7PmrVVl75tYUsTj+CwZxaPUrxUrsgxAJBdwo4hEWZ7Dj0fWikBWcN2rFk+8R + NOl7ea2DE8afsY7Q2bqVfcUD1U2p6IF8TNLY5XIjzbAvlmfjJ2cf3r2EfkPXDeOno5pH8L7wtERM + gmPHdNCKFy5I8p1vMBekfHGZvzqvMYbZ3I/WsLquTyGX+mQcPXYvIPWilmKl2lnvkWMBNTHyvy1A + qUq/pn9DPWpX7zRvrH1XUSvCSEx8vQvW7uR2I3HIXRw104L/S6wrGvQgdGBoVHv5Tbq6Xo5nm80M + NFZL/5zL4sAvKn7N+uO9oS09CI7Q5d14DtsXLzjLFhbCaUReuYOoQLYeM99XxTB58DYC4aGTH1w3 + si2IqTsxSmKqp/WQiBf//e7Xi4+v9aWnCmFerK98cxSiBCYoyz2KFVj7Re+tekG+XewB+Wu2WA+P + Oag8MuypNNPtB1LtIF26yD1h7BmKnR0uc9nG9ipXXRgXuXxIu6c9u+Fw7oPqQdS9YI7E2hwgGP8+ + 4uKdKKT6bRfTGUj0aXa3QtLwwtIQ9B95jLwfKibku6DAuN14kGxjy4JUFwYHkg+lJDi7Zo6Mf8+1 + ZtKztFb24uSNeqStW3BKZxuQ2Nc6pR4OM1KbXgrW5AeSNcV0/cw26aYhpb6lSlJvIaWT6bR1vaig + wJtz7kQdIFnF63aQrES5DMkqnqqo5fOK7ZSJAg4lSNYYYUGCScx4xGTBWYqZSbNEIOYXI2hUOPK2 + xhb62CCcmr+iPlkiaAnQ5SKn1rS1SsJyjxcCu3SZrxLwiBM7oXOgi9FZ46gVFD69cL2CzSQ8XNIU + YFpJZXu0keKb+HtxWJNiGaBlpuuUihsTe5l9nQE3Q00XJIkt5pmNs3S/nQOLgI2lEVo9z6G6deRt + fj+V/Q5Qv20guD4nCohO3QIdUV3OIbyIw5ugtY/hcJ26IzO5EQnbqDCv7nYCU7VfyJ2sC2Nx4B6O + cDPw3zBhe5hGz/LBHYO67scS7YO5HQC86XVLtA9BuYL2gU9lUN7p/1bRPgInLKN9/OLFIWPxxItj + 7kqB8lTC4ZzOrq4SXCCETjJA4mQw3PxfVSQNZDriqq5iR4RhIyY3QlCHoVe5ObSmbEBlO7wzoa+z + +T6t5LqEjVWymR9jpFb5Crrez9Z3q2lBHVfu8FawCd+JTICqQhSb0VOOs7WHY38zu4btpYYujbhm + 1IDXmAjEQXTwnXJai6Jrjg/Es8bLuJ6OSo+hwcE+rk2ScYKAu42hcG4ACkc5vi4niEK2gIs1A/ZK + YkMp5FDNZi3YoqYNLBM21uquDHiRz44AqUAcDcV+p7t0qlZCXtAjPGQarcJ1BVAXLom4nRoX0Ir9 + 48QVpVYjN0URtOWRThCxXHERc9qNb+P+KH6UJUKCRbMDnk26OGv2RIVQsxeX+Q7Bbui57DcLXiRr + B30FgQu9rIt0/sUq2pG0mECbJOvD7A7YH0k8Mdnrr1YeDGBz+Sz26Nhcg/5xNEeG4VSaW/jJYgpT + NWet4xBGkoHj6x34f0fL6vFepsBR8T1eB4wxet02vserYozRUxmRePGiWvROcDIzvmeKVV2CaOJx + N3S5QtXEUDMR3wUs7mJzA9+PfB/rYU3hS2BWXsAwno3PRAL41yQ/x1hWbDu+Wi03G11+jDwj6VxA + EL0/fZHR/Bk8XYTRLrC/v2Zb4vfJN9xV5RekpqY2zjOFCZBdVgWgejNFKce2Ue7gwPJCN6oB+KoJ + PysJRY0QX01ExTBntfQcP2rOMTboVfRzWIblYprPP+7jlsonjudUQEiNlGOjNy0nXM12QEdoZrWS + AgoCjWkXiuToYr8RWjPBf2bGphvTprsUNlPYQU8NERiRsNa4saarO3zjVsISPB9v1P7Ua5YnLrft + WIzNzz9l4C07wqOpg6j8kEBFjxULokC4+sWKHyFcDONGduLADcqEdum3Ordrc81k3Db4fu3+spF6 + PN91eUHJLUwOHQf7QIzjnbMRRaKUD/qwje/53u8Qflvr6jk+gHckuVR5VQ8wudbhqUubgnLfv4dz + YG8qoNftig0Q5XKxAfGULu0PH6ppBK5TvrS9335hbuBH/oS5YRRIw/K7gnZ1m6AkhIDQl3eyWCgm + q8xv0vViixpWhr4CNE4mGIa+WmY30BDYoAjthv+Df9G9+uH2tnqvmrTSPfLQ+psr9JrBLkHs8Px7 + Kw5gjhFUEiFuFiLXSyH/jWlixjjryIsgxGuYbllpCvXVAnyYqTI7fkM/kRPFLOT/GH1om1wdhJcH + Rcvb5cPiljlT/C+f4qJpP6oR33sreCeOUOnd2L7UySVs3OnlDA6LjmPJRrg1tWk65vFITptgKIfm + 2lo7DmXMaMv02tJCTAmnKMjLj4dRpe072PJKcOPqSG3tyTZND+iCHqtO/aEPqR9NH0qP56Jpr2Ef + UbiPOB2/itPxq3E6rLQ6FW0QqHI03PU63BDidctyNIJypRwNPqUb4vOns2o5Gh5Ub4jAiUO4IQLG + Ql/eEBg6/TndpEtUvWU4yDvJ5+F5T0y104KbzYt5haFjrzujV1nUqh4LOGaNPs0i/ZwRy4w4sxSL + wXTLiMvl1GgO0lU1t7gYYUNB500dID5ls+uxhvguWcm5KIRJyIfNl1RYyksrdBOGThTCFTaqXWK8 + LUAG334tRD9SYolcJFmhxswkuc5kJsn57RJ+Q2zgZDX7NsbCjqtkSjWygaIC8l/dTbP9JtnO0yXG + V4v8520CR4uMuquSE1V/rs6DE52Z864ybI25H+EZ0OBJnHsjuQakcLSvm72dlvu6uvHRtRM4cSF1 + FGQW4liaqzoT04kQ+/Vf0jolI+f7J26Hsuxi7Tb8upwVNm2H61yiLMMaLHHqhAJed15tbMiH/Ld1 + 8WgUKdqWUd16fTCP4EPOk/n/T5dYnOIBE6yzSzpMb1rNCTHDFe08vgZFTPi8VWbfF3Q5ZmE9wfLt + YSXkHEHu3mN5WRD5lEDXd9KUeOJKABqHOfZWZ3rdEoBGUK4A0OBTVdnihLkVQEe/XK7aixDQMfQj + Z+JHWL9B2p1Lwao62paIypoRM/hHRVQReBNi4WGmKnRqyzuErmFVLbiuI+4FkVcnyTT2US/MRHFs + 04VZgsAM4D1LV+NC0G6pjnTF+T5qncMRrY+GEOHMG6iiUTcE7QMgsoOUYlb8yGJb/HqoWsAADDKK + 40MD6ssqO5I+7KYcpmDPEDG6Oakwz9dPBQT88VSBMXkllMKsd1rHUOWJAipPdPLe6YIiRq9bMXFJ + ucTE6Skx8dd/fGTl+FYWcwTbK0Ysub/9Egae60zC2MNsB+Tgb4TdtQSahGxgqxL/qgUULu8ke8O5 + +pDspliRZIn1SNQEGqWDhJag6yEr7vbPFCHZrw3U1UvYFomwZrx7rcr9vd6vWX18bSYE/AyIrmro + y2T/V6IwxuxpyT/XUiSHe45fKQz4psUH58a8rOaZPjgvZKxKcujiPoVxD1h3h6iOHu82GYnNryOJ + HPdR1L05zuDIecB1AGv7Nj84isGy4H68MjAxhfSWz+49UWlSqYfKHvTlKHreUr7CLQg4f8aiTrAF + 1MQWtUB2YIAW0DO6rbabVUCXT+BcFLa0mqD3wajxD9iWAAtCPrI+6B0AavuyDZKAyWAA64cSm8xp + 7igH94x3z9P/0tr6y0dD3+aNqnWw7L8POZtvcrYVRmfacDbrRPWhsKyp+JUrxlvoEG2zu+VuL315 + zRNhve2O6aT10Afq0MdhZ6wSamJ76GUHxqGnZ3Tos2QuJU4Jc0a7QtSJzXYj+bOatQvNRthWHHrP + CQmlRBqH0OW5BB07Sza7/a2AXepz1TtxDkOAtDA9fVkAN4Gt+mXZoBjfW9SwDCAxeUl7FG7VnqoS + wBvK8XZucOCTD7c98M0xEVgvevQekzm8HGAsF7FtUPbXQ/8+7heFaqAobZ+5DtMD0ZCV9tzSYZ6v + t0BmF/N1uNGBw0u8s8QLbO/NXqUgj0f5EWcbePxOyHkrvP+sS1H0uLV9xikGm3YYBlGKyqbin7vl + xkKZGSLIOlTXEQgRz4TSZn8dURPb60h2YFxH9KweNaKCIpHTEBcPo4snZLRy6BPrkIitwxEoE/rD + OeOuvamIXrer30SUy/WbxFO6h89+P68GrIVhpXzTL8AL/JhP4EeMOH4CRXIJyzUDrQw2Kyza+Pfl + agUnjsJECyHoZLg5+7IdOsC7Ibf5EcDN/n2qAhhVlBbprpOCy1546bE83nbc9Lrw61OVIjSOJFdX + yznWusVsWnozEX/W7XWUDchIeI0/+fv/W+2eg/T0/653zx38/Vf5j6fPx+nXZAsfprDbgP3A1sV0 + 52LyQHmRvxQWeYS7RzvyQemQNUOMu0eJcPrTKoekyVU8LBpS3Eyra7xVP1qPPOJKMyVKuH15zmPe + oeSkeN0OjJsol8G4xVMJz3B+xpwqHLcXR5Wik8zxXOZGE4bhggrFpa3IkIYNnEpIf61fEnrDdgNd + W/KphpDZKG40n4YxsNEyv2obbl3JiZpqaWZdOR7yuByydFwNNqI4ujhUdK1xep8L6QZzQKThbJFi + fEpmlrw065hV8jXrKrUxh29GtGE03HXoOPdRj61GPfoeFd+G6PGwC/FIhXWognCDXgFkVLFhDlaO + 5QLl71AM7me+zx55+bnBfCiedDnrfdc3ikkeNpubxNqC8p0dFZ0otA3hqIJ/aj+HjMDH8yiD6Q4r + DhwLbxI6UgV0WIdCAvS6pQooKFdUQHwqVcD31URjV+AClVRADqcojic8ClwWWJQ+ObaWSW5PEdHN + GyQsMZ0oy5Cql9xu4VtqqpccB7l1DwlNMgi5NCKEcmqsGh74QRx4/xiNtJYVMG4LKtiQwfdI9IyQ + aWdE4HcDflRNrJ0R1IHpjBDP6AR8vZ1JZ4RGZkCQVQFRJTKWlY7w8qmB+Pj3qeCXUvfWLxnvIG1h + M/IjWVPzaE8AcSJ81JdG6JCRNAdxmS/NuukHpR7mxyT16JkSDhGFzo6Huv8AgTjhRyFxAqO6s6Ze + EdORmi4i2X9QvgKuEO2reehdBIijjNTWICJDmYsRGpEZfdJMTvW344VqnoY6Oa2yMq7LCAamjt7u + r3QqzVgmzUkBlY3UyA5T3xl3mfkOjVHsQ8T60yevFougnwjn8YCr41SUJiZ6z+OlaHR6m36lA4lo + C1j3CU12HV1NHlwvrGkBKkPZpjrSN09QrvRn6z67j75bRS1K/vv9vcM6VJmj161ELUm5JGrRU11l + roI7yiO3lPzn/vaL53DO2MRzQNJS5V1PTv4HzbDrJCvFztaYsc5nt9UgSQ1pX0OkNsAe7sgmWSkM + QEerQLq19dCAK2pGwNt3cQ1U13cr+cOmo6ZEdgQwCSJetpcBS0bFTlc+Gd/OcCNXwiVDlzc6KIqf + ULbEFfEw1XxVqLPI9Zrk1dAP/JAFh6mbU1XbRxO6i5qb0YmxyTDoMt3dCCm9dq0R8Y3ycprXSWQw + Eif/FybGJ3pwQF6lrSuzIfKE2VicAZELuc722RhjSa+eF3Dn1McbYamaYRqRJtDH+SzL+xEp9VNy + u4zwnCqJG/g/H8l1FtyqbWNY3aYw30FRsS4sVXEWuklMuFEaiJq7y3aIUQO1ut3USlPcujFlSOEC + Tg8f4S55eYJNFcfaxt4ODhQ0rpiIJU1spaOJJwicQ6PrFiR7HMVDgzV8dxZM1nbIvMPyfyfi91/0 + I3KZcayG2mUDZup4PCJMELwMduJDjonxCF0JpMfdDmDv9LolkJ6gXAHSw6ckdL19dWHat9zQBWE7 + DiuVMsMI88QmYeT5kTQIvL3bpIRTDZ/36fy1MjqlW+jgBzA6HRHDoG1OfigrDzxwfJS2FOUlv+IX + jD/DqM8uFb9kI+uCX6oTs96XfKrDV5UJtOi/pDANqmuk1ZnR7X4FEgMpqipUcJ7OdgUMoAukNxJU + sdYDD8JoIGNR97BRC6rHYdEOFZ4IqhHZdeSkTm+TBZU7ayFoX6CkB/GWuhs9T873D4GxjoZ9lH5E + RolTp5/O3r0zD1/3D9X8yJcRMm7cIU2fXreMkBGUKxEy+JT4zx8vqsWfQRCuiY/BFFnuT+BnELkS + R+ijKppdxJIRURUzrDRMhSMXWDeSwixO0owAZIRIgS6Yi9uduxk/ufjjw6en48sE1KxkvNxlRtlM + eF9rV0+y/W0qtYWnE4VoBxsdqxsXihvXhHyYqOJflwpshi7iPy5rKk93rJESBjxmnJWvYPw49cUi + nHv9L1i2WvMCi+OKCj0RYTk5OH3sMu6wJmNAYX5MKFoETKoSLhMd/QxLOsJdnQfxxJEMJ/SKd8Vt + WnBU9ETzeYBC0gMVaBHrX/z84j45rHX3Sh47BrfBZT4JLA2HpzNIznDpqkMVdDm25vSRRRydKCC4 + P8oA1gaaZj7VccNF5F6SZb57UkF+2LINOin4Q2ukuuKg95o5z5yO9YNVI1ttQndiaBPqqUyBW25A + Ikm08ULO/QvDkdzwUrkCoe4PSxAGnjO6JyYaMyekfSKGZVnSyVqY7Ee+fcTci4uTgKQbWalVQcb+ + +rANEIDVEAZja5EnqwrOH5lByp4j2VeujpjCWocd8CSd72Zr+OXpAMUow1BxF1Ag4SB6nZiLbGPL + W1QXBmuRD4mz3BTNV3LjjySCH0I6jvebvLod5mGMP+yv43h0K/6LlogwJttP6JBhvADFlyXX2+S6 + T4Ztv7wprdR5Mj0alHCFFblNMrSywF0ganarxF+sLJCXE8cGnTVIj874LJun1L4lrbgRyZi5XH0v + nlHbSXycuMVuiYa4Ztc/Mtqw1uwjVUqWvYrgFu1USZaa2BaSlR0YdWTpGZ1cLEypg56Ll3wOBQuq + 6nXhWBeoinKxPtflh/tumFjGeFEm/H57NavDAj8EBqcmlxKLPr7nfoeaOvS6ldlEUi6ZTegpmU1O + Pv9PtaaOKFZZ9ASg2QRt3u6EYWi/ZKWnGqEC1mUjdjtcuas0r9qb18pB62Cm3pPRrFky3ya7FEac + m6Ho74XgodP5nG+EVpx8BWF3L44WLLfY7wL4/HUCarpSt5eo2wvzsqSVflsu8PIyHOA3y+ub6ezq + CpF07sbLLfoSNrvZF5WZebL7Vs14UvFhJk4Wb0xtciK3BidLDiufo1rrSeC7TcEZsQuiayU4Q5I1 + QyANDKuIN+H0GyPVFHGOxuYctVIPG0J2iXoZFrJYRUUskahpk1FhFrN4YBg3jDsMXRZH7j9GP+FG + HOHB1O4m7riPJVAW95FggHUb7j5JNYNqhBoaQsg0eqvegDSRZrtZR5QMIte6QW2puWiuUUavVa/J + stSqDsEp2Ee4Ukgo6ZqFlemJl+mTX6uZ61nZOwYCoowcrYqwN+EzJ+hm6FCNrJUR1YmpjcindP++ + gNs0nErMhbOr2e30xf+Hj2QYb9402yRztFCM/zh7jftK1ZBWApFrdom2DodFx2AyfD/JWslHEdPC + Z+i43fAwdBtr8VN2Ycqf9JDWan+5iWmhtJ18fDqFu+F2idJdtUT06MB7fwDBEVIV4inj0jR1j8b4 + o0Pte9nPu7Ifj3NzBuCWXqarJNsdFbAUiRrUKl7xOEJkYrrLcDUSCvM/luzxtcbVseH5sXkTw/bt + wubyRvYHR3ZSOjn0tMXq0q63KaqYKRS5odTcHtx/88CXr1pCN19C1+tmNNNt7BeQuiitn3hIy3eL + n9UQQFrUxNvek5HSk/HJeqMuL9NUn48E1zyIfGmpj5rCeD9OV8v1F7TToWmgOZ7Xym7sMMJXF8kD + UzYJpm1f09vUOkjhxZCKgFBY1Wwj8PjsoTAtG9vHBX1/a5VQk5z48PodYStXR9NTR5O/8Z85YTfm + KtvYHk3VhXE05UOFFTvnfg1uZGuZgEJxFpXJ+XRk20KlPJxjzyPRP5nXmJRfji+9ADQir0qjCHyM + JGoGqatK2FmO+10nweFCDB1L6XSXkY6rvtCk/d5fTYfHWzpBnWuJ/3xy9oKdMAbXUCftMG9lqR4W + uinqh/ljOtTGCRBIFsI5hUhmhcuzVGWFUMFLjvBCh8IT7vABj6vvk9GkWKrMoDihPaU1mf4X6BCd + HaihQYWntcpdU8Omct5bOE8LHPYB9mMvVBwj4j6CC1xNPZOZS2sZvNdDDrAqbGMPPH18mZzQqTlf + B4H7O0Bj96J/aMyecQKq233I7uyL81jPyjD1fgYzPOoIKwb865nTxZCl21ibHWUXptWRHtKd8t8v + sapiMtP2pFHlyWR8swf5efzm4wv2XqprBnW8Qrjv/3uo5Wo7uNLw0xMtX+0GhfJ7xl51FjTyRpZY + L3knRbQX/bQ1KkYyX5iDdE6pHurLz2YrNn5y9uHdyzHz49CPGXs62sBDQnZxFQy9I3Rd7Zu5RfRg + XURNooJ/Ta6THflXrrfpX7sba3nVZT4V1yYDEtnhhGv+LwwF7VZku/9GftDiEhR/ILb87HvlkHhc + gqvtEpGajggoy3+hIaZh/WqrhzoEZi/SiFb2+N4uZ77eVTkGuxiMTXuE+s5jOB4M2zuKFLoT83yn + K7yTbGOL76S6MACe5EM68VUcwSfnH8+e1pr1urxb7F2UoWGBVDMo4HYrRAlyWtjfo/3PZo9DNmx5 + lONr2qoNRNFCn94zl3dIHBav2yUOE+Vy4rB4SsamNycXXiVayPOcat4w43E8CXnIvIOweJManDvN + wike580s86rxOPolWcnuNVwCS7OOXczDxjxjx43wpnqEecZs4k4vYXWm16v9fFa2YRaKjovEJZgc + vsEgTwrGFDOioMWfj29mWVE8xmTcWYbBTc2TPsJl1rEnXswJryKkYI3Z9jJFDxXGoB+ZywMXCR2O + PJTUGH2VWhMw+hC3otgszcKEDec49mJlnCJiZuv5TYpN+pnChwqB9zgjQu0bsmMwB9wIsRxdb4Uq + JpDQV+eMB/aRk/S6FS+UlEu8kJ4SL/x4UZNwGocmcpUb/jb1mOvGzsRjHgulpf7UrF0VBBcIfDEt + FHSTGLVZ4bDDCTervilDfLEssWCXH7PjU0CZE0Qe98L7Yo/5Z1B5s5qPKWKxcx66/ygjvOeppIz5 + kRsw7x+jM31T20+xKDOzvNzviBkWpBM0LAJr5KFsDcLLCBdeV9OMucjJdLyAYsBz4CNo+v7iD9GE + 9jN0MV9mckeLx7kNZfzkQr47GfvPoosx/aoIPLXWiAT4S3UkmuZDDuU4kU/zoC5VuIejdCCEO6cZ + ugWabdvZUgH9XhUSj0pyxShMUpASNbuT0kzAn+b7bZbWfE1dBETMdFKiHz1zOsWw6DbWKYmyCzMj + kR5WMU0wpA0X1Ih8AIWoQR/KyQu3iytAb0FSIADRWzwcFnKUXfrdA2k71oCWnIWGPT9Zf01W6SaZ + 1kc/gHD3V7r90ufr1bYhSMs371nUIaWCXrcSDCTlkmBATyWk5dkFD07KogETuZZF0SD+bYqxWq47 + QedjzE1FKUfCkXcQZTc/8ZyLp1UZ4DlM3WwLEnOeEQwX2fkm48GLjUDyq+oBcDuMYaQ1ZWQlYia2 + nt1zYfFiooDvx341YSI7XPLTrADu+jYdVPAmdD5tSfQQJW/LFEePYJlGtNGUKOIyP6R4KYrdFrdu + 8k2Emosz1MjZa5QqfYUPUSW8jsKa4G0bELUHuwmPdhIcW8rXvkh5+4zci2lq6KK6atq6Ebb68EFM + sDFB7717D+qC/eVAr1tdDpJy6XKgp1Jr/OOMYdpwCfHYQTtI0YbG8HLwXO7h5RA6ElntIkebRV6j + blVhOVHrL1KdgIVdpXvgJ8m3+WqfLeHWvRuna7OIBO5HYEQTkb+L6UqwGxUVYVn6uN9EnPjSx2zD + NpMSjGyBw0jFc7+Br6tXPdU4Tf2z8TaAC9IDtTluuQ6kKtqAb+yzOLKinZejgO+ZKi4pv8u8CJyg + KYXO9eMoCksEje82nFE4pfWarhPEcVPCW30v28PDbixjxkKsGV1JzpOns40qWgYPUSUMphTaokM5 + e6ybd0SHUsMbu2E4kl9oMH+ry7RRGfacQMv7x1LqeMHfWwnuOM7j8Gr3ue1QhqvP7PBIT3NPIoHv + ODWihzG0o4pdHBn5EBDegDHrw5A4XOPkWAP38fFdyNdLwkX1IrD5lmFECo3EGrxGNFS3m51CNbI1 + VOhODEuFekoixlX2VRZIuPh4cv5KRWl4fugHcfh0RE9fw1sjfFVgmsRe8JjRVaNYUJUwsqmsutJ6 + +O6L0chUkagwHqQwRntqsl3P7KxtQCHOKfT0Vz1kJsl9hpOwmNgtYu6IjxG3bR/W4FHWAOzws/oK + gs1MQZ1nhWTq8w7o3PS6JZKpoFxBMsWnEp37fbUAuSMUWRPJ9BfkPn6IGkIMiqpv2o+KBkszUjp3 + aQoRPVtqiZQCeHGq8F9GBnx2K2B6KP+9Uig72282+IcEBTGyj6MNaClius5+PxWnEd98rowbSPT9 + NmEaLyGvAg7HdnYNq5spRKYcY3P8ZblGh+OJ1DfermoqqD86xPGGgLQWHSAsVx5+U/R0uRy4R26C + +rlXeoTHQUOgxm4wkvMjDCuWoX4HSr91I9ZYnP27QMHHOrSYgxjwzAm6IcFTG2sgeNmFiQNPD4l5 + XW9upfBBlUBTTM1MKFhkL6qCkjgSMZDUHefp6DZdA7ffwrdxDDJYZpV2T16cvXlazIFvJPzm5MPT + Mn0ckBBxHJVP6tCVh6EMwDGa3XP2CSkOiSciC1V5B++T2L3i7D5oqN3hRg+L+egFhIPYtMe6KRhd + qHURtyKKf12inHQcjmQQaWld33a1GXoT9RGFP9ruKMWpQml9dYIOrjl63dL6KihXrK/4NHfNeS8q + 1lfGnYr1lbvM950Jx8q/wXGuuYqzxztpd/Z4rT457/I/PrlBfXJDrM+ItlZuQ3SZjAsiZmxE41zc + Y1zQf5x5Le17gxn91H7A4RDlfwSHorqNIhUo4gf2ij69bhsogpSrgSLwVGJvfrioKPqMR7wcJvIL + Z47H4gmofQFmNRpluanWKUFdEPqQhLC8zaqqcbVCsqkih03RoLCFA+Bp5XuAsDaKndeXGgUmbxC+ + 0PyfB6EfuRU0y7og87JCH4f+AaKjvzfOkhlXe7VNQMBcLa+V1oRn4MnVJ7gvFpjSvJAq7SJZgZ4r + A7PxZlGGSMSlgX33NcG40t3NX8A6skQY0xLJ5A2YSfnOCHdAHr/BvfsKtAetgsn4VJyB4+kNVMzD + iV0aV3nuLfDN6pGgKRpTLUvXC6JXHfFhFRDfL6DY1J6sjh81SJXGQbKpmR/zwi78vlhpOaE4qic0 + Eb9hEPhaA0yN4bZddK4oPkwSeazQohljXdCi8XVLtGhBuYIWjU/pxjr984Vfyf/iLKqgRXssiD3M + eQhdlXSOwo9AeQfpwpeX1OndpV+5pA5USzNvrKgJfplxH/Q4hZNcIA9kt1UVxQ9j3kTJAeE1ZLx8 + +am1qq91bxD3zGEWQ1EM4voCRF9SumrUf1jAeFAa7qSOqoBG1rNuXnriSqJ+UNlZLTciM7HQo7ym + sud53ax1/tmLdJ0K6y7ahNGBJomd+tMAbspMqzwj3DY6nww40gCeRjEDJBKaM9VaDaVGtuc8JvyM + 6nIiXO3SGrO0u0PukHOvV+3AhqKJvWgdGCBVg8zPk+VYDjZ75Fg1EiCZ/NwKa7qfwhQ7BGWk995c + YrJ2yqjjqCCJOyy57am6HX1HaTqyEKo4RORvOu7a8x1K9ftw7oSR/bVHr1tde5Jy6dqjp/La+/wa + 7zjz3nNDFPmK954P9x7nvsMnmDiHKn8pZnM2NiLUTndX0YZC3jL4JPgcqn9CDTJ66TzZrFRdqteE + snNKLrzMDGjLRAACFVKB1zFxCbk4qi1Yg/Bm9jURzrzVbLPBRcjdcNTPbMG9jboXEO5oMbudXSNe + fT6A+U0y/7JJl2sV8AmfwKLKDY6ti82u1LjV55sxoIGZ2VfM6nOjGI2T9+SYRUuQ8HU2TV3JKRs0 + RzzKgY5+ztUeiROgrnBgFqIcgROS0rNI95erZJrhmQcJYpvMviCd2VJUskQYfsyET/f4CTAlwAW6 + BQeCMBMInl/eV92Ybeh4ulDAeH4376wf4gZQBsT2bdPFKnsE1V4INvdkIwVFPhaLJFjC+Pz16XS1 + /NKxvqW6RVw/zi2SwNcNZlKbIFZWyIezaR4NADeIBn50lUwWMoKVpxnB2OkpXIrk1Zv1cUeq+1kk + av55dg5d2N/P9LrV/Swpl+5nekr388uLKiyJz8PS9Rz9NvVj14vYBH7EjBcqP9MG2cJn4jzI60qx + TFlCDRnlJs12U4qVqxjzSvHlr86nu3RaKnw/EWuXCTvKRAa5X6bAj4WYRFJoJgN0dLh7lq7g2trP + YCBJcT8vlhKWS8Tl7Ja3EheUbuaXWQ1kipZ0r9T2Mm9i3mT/jUHJ94KwokzD2JD3N9IrV2qupZdf + 7PiVd6tp4SOTb7Cb1tdJBWHQ6MiJOnZUMWQVyaG1y4Zcrq2X94IBXeDD/0rBXEYVbEly9MZ+iXGD + XSRzbzMpXOwWe/R5z/03whOmrv+AczZMrDBpgoUBy/JLUwEJhnBzLbTbrlROVyp52d58PpsJk7ek + mS2vMZNfkFZhbR3tmAPEEONhM/TYq/wjbNTogJBiKgfw4M2IhwXf6nDW7EY0AN2BUEKLw1O3FFe3 + lOfau/voddtbCilXbyl4qoJP3ntuJS/cx1o+pXvql8D3WMAmAQY0H8oLJ5SFJ0FtcMOkHNyw8tzW + TOP3bjirRjc8B6YEJ0nFdqLzFeYbQ0AXKRa1gdGsElBtVkXZXQasQI9tSeQ0/M4BK5Xoj58qYOWR + rumItnB+EXgy4/ye4kp+gJiSowNDfNV9+3FonQ2lgv2EyeGHgywfFdIzSAbinjk5d1z/dHpifdOo + BlZ3jaZeum3Uc7pv/jz5bIaXuK7nRqFveutc97cpi7mLMCQx95iEB30nWMzVEr758k7IWhhSI2xJ + E7Ldz7bb2d0UB4SJuiIpgLILCCBpIhgSNMQ84r9QDJB2IIyMmG3nN2JqxR3x52wL455Pa64Jearz + Z7WGvsgNeZ2h71GBOo4k2+QRXCDwD7VhdAIh907jzjUJVSPrCH7ViRnCL5/S2s/gPC7xmI0p/EQE + 1xcgjWr+btLmIL6A2qPC7WM6yEsR0fLtbrWUKKgNNrguofIdSbdfQoxqdc6XO9uYG/uh+q6M6ofr + 9nZo6gNF47AY1k3qNRt4PNQwH0WNdr9MA/OGZ+Kw9J/4gbIXYspIqTt3QxSI6EX+gElzCPcnC+T0 + re76j2Uoz6XP5BHFb5pm+9XVfjtG+Ak0xvemKD7PEzQn8PMosurCoAzV03MnduztrfS6lXQhKZdk + C3pKksXrd2/K0Kcsjt0S9Kn/25SH3GVsAj8iX5ZOfVusNPDp/LWSAeZboD8fOpnzCPzTe04KHUCS + QBNacET9jW4Ji1pg0QmH3lu3a74hNbGGZaQOTFRG8Yz2UoEFbm5m61H53wUaCL0I3PqYciU96nj6 + Tqhi9vwOmO30um3Mnl/FbKenErP93Qe3ErPHwrAcs/eL68ExdieuF/plo5Ph2RD+06/L2eVyJbg1 + nd/1Crr86/6SsWX6mYpSq1rt4cCZcQR5PDh8Xuz4MRvuCL7KMtSPCvlZwrGvC6VIN7swoafCPrFb + Ej4JrH2a4ZQKTcqYWHiitChpByrjmS/XMu78cr8Yr5P5F1VCBaf5y1Iksj4fn3JZPRx0sLztDi0L + Ip71Nl3sVxgBX4opUJM9evfxI8vj9WKRcg16C1PbX/Y0nl3hLabgUCsHosGd7zNOqO/CxU2afvdK + LQ7zxLWvDT96SooTbl1UpDM3PNaxqxiETkMJOuBN0Ou2aShBFW+Cnkq8iT+qeBNMGFVKaSgsCkHa + msCPyHFaGIQIpf52t98mM4QWWGawevPkuemqqsRyEKDDvg7Q4bFZAcpjNwy9PDCdh4UoIR4wH4Tx + 3PBbUw3jOVLGWOJFbp81DhG0KU6wQl9AVoyRP3BNLvYCySG5ukowbBfZSSES6OwDLDcadEa48Hn2 + CSErWIfa1JzJxxCbqY5VLI8VLGaXY4WvWx4rQblyrPApHatP719Vj5UbuZVj5cZRwOOJJ4Ka6Vi9 + nu0QmgMtGSqQGlOWTAC7dJ3u1zLKGp/lbXIXBNrg8OV1ukVr8gLzTBHoXt4xRXVYnsBPq6R6Ao8I + yS+4TiLfddwgqvpmEliau9X0ND0Zx9P8gxuSycIgKh2wSfGuj0NQCJ3Sib2qTmj15AZuGd7xMGHT + KLFc3ySgeiO7K4sQrMmfFMUsjPx/jF4mq93sSfy0bqz3vvgj3K2aFzjclRW1WdXwUvxGKwN9EEgt + X4huR2eyBa6IsS98sV3s/yGqQiRpmFO7Hu4LZjEKqH0pQ6P31w6V8qDkOZ9RzHf6bUmJkrBXuwVW + PJbkiYGI3jeM4lBZDMhKyRV3kAN3m6pjCDedooFSLoaIxmSBFzO141Pa7P1n6+dO32CUvvHmnIVO + B0lMvG4niRHlsiQmnpIkdnbxslKpCY5QpRzDL6BBMM+fRJ7jK0nsTMbHYo35DO49OF+LRHmbcM2l + pi4BFOHGrWQPU4EhkMBBFt9UySHmWeEphlysof0t/o1EsrNsUS3nVEKONKQNhIdrkDbc0HHdqGIc + raY8N9fUc1xuRb5su2mZxHpBD5aoEcAbOGDglOMwi/3M0Va0TloicgK/nEKpyAceDzljoKd9z9Uf + 4b7VMpnniDJ8OGrBvto+tWsOJEgYBHVdMrL1FjQkSGoDxOlhkRG3mBDyCpX4VE5/N0rHIgIcA486 + kpu4vF7tR6DjTduHvoV8MoBnDohQmKwcxrQXMXWNMF09Nzj1njlxt+q51Ma6eq7swqyeSw/pSsl2 + mcRbPf/4ghJdNBBU+UG6vfREKVwWOQ9SFRsR4sXEI5aUBZKGtSf56AwqUISM+umyBmmDiaklwjuO + uNTXlovlLZrARHU2MTDb2aKloGC0S5l3myWbnT128oMCfur2nfxQyEtDQt04b8tgso8msKF2AOKE + CeWAkruOYH0+oWol39LjSeVhnBa0rCerI937RTxRnJTLfGrOOxTBodct86kF5Uo+NT4l7vkB44gr + GVtuhB6mUkJ1iL5ArCTNPAUk8sGI4akiJRox1Dp+VkjSH7ablVeTFmVQbArBNa2cQWMEuuf5tVbO + wSLQix0cF4FeojjqM7UjWk2dHBy5WBHVRYe70EgNkk0h4pd34zma3dLtowgWk6CNVtvCblhHxYk/ + msDumsQa5spKzE6Xgov0umUlZqem4CI9lfr959OaSsyuV6nE7Lp+7PGJC1PgljBdi3mwQpTip0r7 + 3s2r2vejC0vatHxHnXaNoSmsqQ/YrjCKGqenBgkgvPhJbS4d/HW/2sms2YKoCCJWkpWLSIWNOPdO + 6IWOXx7FG/brRdE6Jf0YKCYWujL7iHhTHxxEEZeV64At12LGZqqDDydnvyupHOHx5R0vPK+lIBSH + lcpUF4H7YROCCtDAt1HlT5XXR+rh27tVjZvKa8xOrV+4Uk0AmCDorgCnbgLu15piYJ3KNcmM6tsN + /eZVBfbrq3S1ADaiejMrnkVVx1shQdbnEfr8Rp/lfq7Z689Lkwa85216zTbY9wrEst34dvZtiWwb + FzATtQ1gnWHLwphKX15D6x3WL0Bai/SvtZzPRFyFlQ9TX11D5XQx5wiWspWIkXiiCogqxW03Qp6m + w/yimMCEnRyKQJ7EIiBLB/UJ11PcJzVbY3p4a1gronj2hP3E6tR2+gJGdp3as6oH2nxorW7twTtp + BWemNCYrfmA1+uMotssjMfl36l1hjWfCTid/iGBWbZDgqm45jZRMZ7/ubrZJKpLxi/dpD2RlSR7O + Ktp2YG76O66GgxgNyXkot0Cd5NCfMreezW7Z5QORfgDX4EDApK7DPJ/2zvoa/QjJ909uZCJX7c9P + 564X2/vy6HUrWV9SLsn69FRCsb37WImq8mLMoi0aDsLffomjOIy8SRzzCCtCoqz/GTQ2lH2QOwlM + LIIjeDkuomJewpimO/nmE2jCN09Vi+dYcmMlgkNmmeJdItB3uZ5vE5EKWQhqXaUZBeEUY/RAiLjE + pMi7lYJQW66rAVciw1KMohRdFZUguk/zOKLI517F7DBPp7BGmwRWtEG2c8MgbLILFGnmYdPFGVJz + aQKl8UbbRS1FgQCihomx1CXiNagq2Elj0QrZyeiRLfgIN6+OqwaZdiS/QzAdyzmwlr16ED7sTsOl + Ffbyuj3QSgE9H17kEXM0mhdYkQ1yPzBpMmC+B3XKngvR63YGTKJcNmCKp5ILfbqo5FS4vlPBg/yF + OSyOJ4zxOGhPf7pdAfV7TJ94TGlLXuA4wpcdk4DaXH6u5nrKM81h42LFzdy3NBAkvQwFLI5ql36r + jYprGsxgIXF9hNpHElw2mLzqe5FQNr4j+t5A+PfDhI0pNijz8F6gZzp4xjpVHs4b2fnEC50UnOL5 + U+kVT+YK9XaeznZYnWz8BHm9MpY/NXAE9Dv4yt+0P0FQwYQ9TD76blWJc4/EMVSsxiZ296tzPGfd + YdDsIQiiWHJbGAvWNEla+pnktZZhYL07HaqsOwsYYcV1mZlW7Yr7hIZp1hyuLS2NGLa3aNEWnVOu + Wbq4G2fwx1bJzCr5f5hK0PdkMrnH4ChNpUfVyGMLToNwFhrNkRN1pkERKKefzt6pbdlAx/a0uMwj + PqdXBHpWpDtIDSyWwde6Kyn93b9lpPXCCtWF5b0Onjl+t/tKtrG9rlQXxm0lH9INtUqu97cJhWrh + qFGRmcGK3I3kv4pXVZEk3kxRGMqbaaCb5X7vgC6Mxh78ZIjy80PmfFiyo4aqFMfzskcgeOfciS6E + 4o4q3GhNPMUOykcGI2T761kLhslBWootUAb0p/fM8zoYFcXrdkZFolw2KoqnJLd+/HRWKe/geTyq + GBV99HxMfM/3nSJ6dPHMG2l6gXNREzFSKPpO2v/HdFMtokBxHqtyaEDoOg1mLwYKtQM3yH2p/qI0 + qfxX2eQHOrNnNaycmp4WM1ALjiVs+RUVpkcQg12yrsmn5E02S93d6Mi1GeGu0NY638HifFjeQ5wr + HSJTXMtOJnnOybfYNA9thO8F99/RrcWma2WbQyPs54QUgFvfAqR9g1MVM4oVfCMP7ZkRvW4L3YiU + q8CN8JSY0R/vzsq2RRa7LiujNv7CIjcMggmLPC+UqI1nexkxrq8QfX8UQviqkAPK5CFhS/5Ybdhm + DKIsRjioGgybBKsFJNu754IoqO1A6uUfZ9xzhF9bSk+Spf2x3Lj1LK2x+mhgRjwadWDwr1GlAtsj + MGo+ghkf4Y7RsSJO6NthHB1SKH3dGoaSrL8mq3RjW+NLSsVl+JofVZpicWDMRk9QCu4oMCivQ6gk + vW4LBuVVQyXpqcIgP3Wr/lMWOZUKjq4XA2OewI/QD/qgQXlxFc2tXs4vwUe4ja6NIopTb7bSRPBR + sZUqvpQJ/2CUk38zyxjhf5/dpChIFt2bBV306mo5/yK8mm9en02v9uS4MFNxYCdKiClQHZDkn9VX + 5Qtl3jCFFutk91e6/fK8iF2TUTWqGW0VWRYZ6S0SBKgZnb054QW0KYSe6GI3bBCGjmFfj02xHR7M + 4BEwV80VmQwqceJOQSX4umVQiaBcCSrBp8QVf/9cRcDygtCt6n+MRdyf+Mx1FAYh1TK+W4kdCh+N + Dp3i+fs0Fcfo43S1XH+BR6qScBH16vddDepV2RRRqlbbFCAeobjIKzyN6kmzCZ/WDbgh6LdSY1ZH + WMDuifxKVZ0hOsnhsmKc66gcK/JxijM4Wzdqol7MOhH8VL8yJZpuJ5qC0/2FxWfERBzMzUGHREMH + aj1HJ62T27blVPfGBz6n9IB37yoCa1HaRD7/+/kr/uuHj5/ZuK5jKYPiEdJMPOD+SH6VMGcfmI1+ + oDqelDGr0a2lI9bNHSddtHXbrMPYYrdhbA27zepWG8ZV9B8zqYzNdciBY8m0rObnWJpNG8pzKfJf + bBpCZ+BT6qRbBwcyTL3czX4sKT9sIjXRT0XcvDoImLe933TcS4NEySpBhBJj359zt4N6Rq9bCSKS + ckkQoackiLx/d1bJZHN5UDJEe79NAxa4rjcJWOhyaYqGtinM4mp5jZPNpWjxfrmpZq+ZyZEl83Lc + qC3VR5bJDmuTzIJyuGoJUo+5fuA3pUQBp9ykdddxzL1qNlIN1dF7QUCOcGLckXix3aaL5ZUCuCwB + 4q1A3P4XLGeG7jp8ebbbzeY3tzJFEoemTJW0b0e4djrCjfOYKiMFBt6B0WPP8DTmiJOFI8DYhQHA + 73A+i6MszruduvV98nUHjTKLPHJxz+aPjpdGoUcrft3r9nDdiCkARljXJ+kcXoNfnh4zOMUzKfv3 + 5Xu4lbuUO1INrPimpl7inOo58c5XH2vLHYWlckfBb1MWCNMW/BDgOdVyR7pSEUgWJ9nN5d0M+FOW + 3W2WS2XgWqyg73+jkkXcyUsWcU8FcnD2gjnPGOsUyaEa2YZy6E6MWA71lBZ/sbmV6BALDP29SVdT + lRCU1KotT2TqIxZHrQ1OtKSj3HXcbAzDEXEioRNRnIhn5pkVNIImy0D/QL/jtY8OdY0IlPHN2Ttg + DnMM17e7kKx7QAstCXhzzLOQcUxHYpP1hu75KQyDXSJ8fkbLY647hEGZ1CCfKoDffEp9Jj5yV+Qj + IvvlZUfNzTachvvKyRR0yI6h122dTEE1O4aeyuyYF7/X+JjKWgxWHHG5H4cTuKijQMaNn2pbkWEs + owz056YXJEGHxhJv2NlGRO4T8tdE1C9LhJdExOdu038mdIES0Bpe7ViJfZOquhHZEpYlE2uJryE+ + wnKzwssRr3NZy7Dkvnim8vcuv1SNt0jUuKVjt9GtxdG96FQxOXVBixKhRndWE6HuSUQsZh4Pg6PB + SppGlN3cpul4t9yUv60xqofHIfeDSl1fG/AKLzBFraKq6Hj4rUGN+bYZmG+erv+5vyZOIpz3+nXp + JzPEqtBvXPj6zpMMTtpqmZGuCRvvV+HwywOhEKkBt+JGwQ1IqFbjqBuQrS4cuCb7srlGDaAhyTcQ + cUjHkMVezFTMuMmG30g9z63CCAe42BGwstf8eo0GCzW/o4tKsri5bUTtHgXrkdHsmksvY/wz07c6 + r2VWk+/CjkbIdbUFnjlkgQ89ifNxzHzbmT5hoytj/xFnx66voQA0W/E4COKiRoruicbRn16rFIin + j9a4/cRaG5tDFpCIajCiQ0zI2hrh+S0YoPDvxoCl740V4seuuevwqNq29CstxdVu09xzXfKjVRkI + 3qC/HqqTPligJl6kxZU7CAt0iJqxDyqIHgfJ1+KEHE31/rNJfZ9sliefz/omkroE8HvUxwxho1RK + h8hF/fPsPXM7lDmk162UDkm5pHTQU5WS/z+sonX4rIwMEoHWAXof8yeuwwMW1kGKViI4Da1DB6gD + CxSzlQhGImAg4FdK+UZ3A7S+nOGLRZFhCbfwVjHp0/2TF09loLsCCJJKRfqN1aGCFIe5XK+TpqC3 + 0GuWOn2Hxa5Xkclv6+egRLYJeo4j8I07VISuAebhYVGGkgA5AxnmUqjo2WZZU8spdpqrsDmw7IFf + Bv0rA2rqZTYDQYKm4BI1ASUM1dIi1e6oRbKCXbQVO2qeblBWlCF2uA022sYoINqqO+25Ljupparb + OhxXOIrZ/voarvWMJF7Zl+4ey8el8/l+qySoIlorblcczUgcNCVoBo7vSkeXEa9XmUVr6QNXTvhh + alb4MTujchrEVMvOxG4BiHXYuaWtdI+UDqHjlquCFfaY1bAegQ2QEtnIlSrPQWvgQO3kdmjfenuG + GkI36gahG9lD6Ea1ELqRDDx4+elzUAOh69ZA6LosRAhdn0WeGRZek+dQ8rnDEbgFeWxO2QvZcgVM + FGdLFKpbrmYosRbjIl+mu+DxQ+8O5agTfB1F/OLM7AoJYoj7aYLNRk1gs3EIkmrs2fUg18W862Ee + ok7E1QKmMKNS3zZMUJ7XBPUbw73pc95qgRJX0Xy73IgH4kidpSsMX9ygNQPrEJuj97v11lJIwpAr + ouZwVUm3vbhr4S7HC/787KX7fnyzzHbCIJOAHrejei3yBn2uLPzI4z6nCzwPWOAYVPGsuJ6bZI6R + JeOLk4+fZfXn5z0P3wiZQQF71hnJvSZ4XcMmxb3ZybwC26uFnt6S3Wj6uT6j90q32w1o+FVrikFx + ggexgJLbuYPwQAdERWTbpivg7EIxK+70LpMyRKUU7TCDM4xv1xx1myH1N9gcm9vatbK3G+RIy/2u + 9EiDM/kvve7gTLKRNTiT6sQEZ5JP6ZouOBA3N7P1qPxvgw6WKwKZXoD2+Z4yIjfv2A5C16PfAB2a + DVioR20cSkB+ee5GHcol0ut2wVREuRxKJZ6SLHhy/glhaErCoB9VAql+Ydz1uBNM4GcAT1TFxGR9 + t9rcbfdf0dltVCGbyDg9TDMr/EHtqY3ZlJwV8ARvxdlqkdzcLYDEXzfL+c14mYkL9Gq5zXb59Zft + ko0K73x1s0XXe47PJGTKk23KnPvDWWyodWYGxbplI4IRvoqelCh2q0UUm+e1tiPfYWHj8HnscO7G + lU7syTteeXbyb4himJywHNcLR3eOJlhVkqw024HvNzopjTnJbTa0O1azdTvZRg+hmoXRY920I3EY + lTDGwyiiqmXEkWckO82LziSZhV8t+wYDm63m6U0q0nWrp6ODTAH7XghaqHDPb5KFrBotuy4M5r5H + QYaIZHezTI0tYPTnTvGNuxW+ha7Y2bqOGTfm8vgEK1revC1hZ20iandqLQMTm+D9tP4YdCwBegS5 + dnm3P93WeQxiEvXvNsC5QX4ZYKB9SLaOkdxlu7ttmg0xlbFDOliPY9dBPntYYemxVkl4RBVQ+xJr + 1OJiCnsEfoh7Bu/8tBCc+D3rjwuRBZvYCTutO1MK1C6BbpyeO7FrL1DT61YCtaRcEqjpqXRNvjxF + v0JBoGawT92IlTB9/N9+4RH+MuFR4LkyNeFU5xFIm9Hp6bk3BVlWmYiUcHEjIOpXuyU8FDWGsMKR + 1tpgKW7RpLBKviYr/Mt8tRcL1KbWoW1oIeJAlqvlvxQNkRO1SGYLwc/JrgVzoeqA5WYMgtuXHs3F + 3I0rcnfhW7Z5gZVS6FojLJDjobfIHSLgMYpix6sGKnY0EYcxD8JqEQb3b1P/b9PkW1pfB7RUQKwx + vtMYpBaCb4tVfrPbibkyBTuV0Q2PolI3k3dv3k2KMnd9d+vkmmKqjrLPOow3FaM05rBQImJ19+Tk + 6Xg3W67G2U263SXrSvE1HjVK+vUfU6p/1VRArpLEqJ2+QQSaSTmCc1jLddN+f4hgysKXOnHMYucf + ox+dHY0EN9bm7SCKR3I/CgOT9e5uN89alLjnUaEK8naquriEu+y2tnB388nG69E2Q51TSkdjt00H + zY76/cSbNqpA/7YG/7bwssClSFOkl6zStZzqIZ0KISMpe5Ml+0V6cweiY2dvgs9CXhO42lYPcLgI + 0B/QniwkIWxSLzNZbZGRlDDw7QNCiZVsTdBN//WedUFMoNetZGtJuSRb01OSrf/8owrdxF1k5sWo + P/7bFAtmuGyCFnYd9VeTgKUwbxARihRrM4ZBBTgRPkwBTQfDmHeJxhaoIKRQ2vD+3oGeOiAvuU3B + fAbpAvKSBVBSFDYIEPU07wMo6QGXdYTbT8kSbhD+wLBHR+cn/wex6P4Riwik+Xicov/gCTX47V2u + /PaxFz5zOrrtZRtbr73qwnDay4cSzGAP3ALYTJ2vXrXmvsd4yEeE+vtzZKg/9sOodour0MK7VCKk + 123RwmsqEdJTkn/Ozj/ENWjhXg1aeBC5fMKiMFT1UM+UZjZVuY85VqBQzNyxxrSgM6bnKUuuUZml + apez9fj1a52gPhnPxljD78q4YLFMzjtlFH6OYe+3GULCSulVdHe23cS5I/Rcykxn29uq3bAHkHDB + jsJj7qOpo0y1dksYrnvYO02pxMwJOA+r6MRlEGyznGvUBLHJOHNgoBUP/WDRph0NQ6Zc9+qs8t2j + 77idWuHR8YgU4NGjASrKwUYgy4OqpJJur2drlcTYRVsfvLIZkKvWr8xtMFValRqWPe6R1my3IcDg + 7ak0CM6P6dbwVLJcF48UvW6bLFfjkaKnEgb+4qSaK+cEbiVXjkXMc/DWAClDas3ny8v0AjM9TnRu + j+DT59msqttSzmmNLybwG8Ps4Y+hH1XAhQcrYzNk4RkjRkmOWweAl/EGi5mDtdVnsuc6UhzUxjt9 + mmSRiJeXGwz/Vq8Ie/qMKhgW5lkFFEmVV3U6wjXXaVuwuhIDlWyTXefE9tgNUDBniGIWft7aNgT4 + qExfddJ90iZOTt237BlMub0yoZrY6RK6g4IqoZ7Rqb0p1p2W3zSqqzMo/zYZ/3254J66QwtdwIK6 + nscJ1izgBtTYDnePcO4UKmlWZswafyp0yHxAlAqFnCwCXKxLlPa5gG2Jey4r5EXO6IiBTvd/+yXM + UsGlcA8f5mN5i6KMIuU6wUr6r80IrRCBryOby/vnCNgxfUEGMh8OJOAu+XD4umU+nKBcyYfDpzIG + +uJzBYjXib2omg8XOF4cTdyAhbFj5sOJHFvMqZXlL9AHOjYOCUaPlrWDt7/84+TzmYAoPLuFG/Wp + ygUuvQlysc7nTQRq5QwujTvkq0C2xnejbNAn2a6KCPwz1Zl/rPM/wk2lFZHYEYnTx1at7xGy94iK + sz/GuupumNdVf+M/c7qBm8o29lXVqYtSUXXxkDjRdrNmEtqUxRf5RaJDFAoIpqODb4zPkdzodpe5 + VGGdU7UwDC0X23C5S3E3NHhha0rX+k4Oa5TS/u/oepCVuB/sWuzsdh44l6lHwevDjQ4oz26+SJWt + sZltdx1KTOuz65N1v53oBENxhELR6Ki2F6a4a2D7NFJsBuWUvm9h1kg2O4GfcQzopp7hIbQFnTPo + 8egZdzrWx6Y21vWxZRdmfWx6SIxnttrIEkfXs1u4+HbAQVaFWS/iHde/oXjOCVAaITnBcoLYkSyH + iXP44dc3jGTtpTqMB7hQq4PU4XS8QSaFtcARET5P9gV2xQ7pt5rqDkCtSRtSgTZFTihi63Q9PRz7 + FToUJtWZ6eQEglCx6+4cN3RijeCB04yyx+YGdsavIMKIX4rr0c7/gZbXcHFkGzgEq4LZY36TzL9s + 0mVdCNV3AqNzPKrCq0sILq8l1swMI6eMlbZdXpfJYMKielQk1L4DG8OlOBcspjKt9hQkapiYq8US + 9Z5OqbtOTN+lRrCp1SBbtx6QoOX8vz3uIoE0VZ0ZESWYrGuj0urxIMkxLtjQtMyGfrUKx5QQfZez + LfDLLQJr7qw9pt8hBC2i+6bj5B2iGVSW9zJdWMYU9JRrQq/8HZYbUt2ascS75l4H6Dl63RLvWlCu + 4F3jU2ks+PymYizwHAyoKeFds5iBDDNhccDwJOLd+lLUwKQCwrg5MfHs+q4EdI1WKCWrSiV+d11V + 4pNv8BnAtueN/ss4isth/4WqOaCNBfdWPV5/mxkwFrOm2HpzQHkiQLIFNU+Imwv0xCwqUWiuA0tT + SW54dTaxIC4rD2mDY24rMEYdcLfkDq0lPjqTFZwPggpqG126vaUPksHSetom8OXf1K9ojkebhL5h + prsUBr2f45HNx/zk9OvuqcqtNeFgYAPFG3FR44uXye6vJCEvBXaB+WDbwhUjAImFD6AA+jXCfZ8j + DkcBeRSoHpcaN1oGpa0x/zbr2/9IN63YXsXRdLVuWLRv8jd2qGDbHvULm1nQqd/3NlzWBclB6H+n + f//cnGndiNcbko9os0zmcGWqGzufEpC+OmH2Op4jYw2TqaKi/GBSx7JGt+sTiC24oBBCavllK4mh + PEOeLgXOO5i46XXbKg28auKmp3Rrff70IazAfHjcqZRpmLpxFETexINPd6UT+LNAhkznMrb20x7F + jQYUVbqxPqe3YRV3wwQRTAUZ3XBX6KQmNRDBDZuSyOIw9IKg4kOuHEborjY4OvKDpqzDmPvcjRsr + EXQm3TTqPMHPBlB0eSt4S6EjDzhQ3NAR4yjs8TIGagkCdib2V3MPLnK5Qz0UEsaewH778nL2VLmm + YQeOn+zMnWRugad63WU0y/KSLhL49zy9Xi91WtgSf8fpoVGiBzwjuF6Mvy5+F1xndKLz8KTs+Vh4 + 2WcYkgZ/AtkfWmLr5RoGQKDbIAVts1T7ILOROEB54fLAp8CiSNWUQZ1DhlQdfQkw3ymyHPmV0Ela + v2g2Oo/YIHZUq4Ch7ZDj3x+DtQaitMRdLEfTh9KhwfGDJOtYn82aPoIwJ20FcemaN0j1XpDR8b4m + 4Lu1AlmRUVvd4V0pHl4136PzfTY9m17C9Exv7hZb8qZMYa6+JmuzE3OfHPyINneXx1SMCndPGXvm + uJ2iVFQj2zgV3YkRqaKeknDxhzvO1un5x7NxXkOxaG3Wf58q4OtCpOmHzYYZbxu9ch8kHFfW5HOp + OOtWJEW2lPm2r4ZnS7Gd2XuxTPPAfpRN/OLij6mg23t4DxWLdS8Jl45una461Pkge+UtCgGyMWxg + nfCYHvQk2TuAeli/XMenRh0G1L5z/MoHD/y5yurmcaW/sA4xrPS6rf7CqjGs9FTGsJ6dsnLqA+gv + zK+Y3TA/JmQTj7kslqAqpTxo6ama4MzcwnzCVWW+kY3fCTHz3bt3Ktx1M2fVvASRKK6ky3KydYMS + 4wYNMnTEPdC7qrjVrZ28a+gmCKy6yRWatl5qFRs3ipv0DaMLrW40IWM0AWMEFWXDjl4z1IaZIoIU + R0fsjJHYkrlG4Id0zRwNUtCNc+NxSf6Cf+E+2BMhOMQqPGmIeFoqKGS7D21EIHEODhK1I3kcgq8a + EG7nQwPqGTTVlbTF7A1Ql8gL4siI5kW86K3yU/aULl0dAe08c3iXkAbVxDoCmjowI6DFM2L5OLeF + EliydFJRUqyCY0j4DJjxUkxDsUeUKT1fyZQ/AiKJ59Ag8YNv0wWCkDZYk23Cge9JIrQXvY5kZhTA + IIDoG0qYHIsG0qHg8kNCTuMtNVRtODegcsc5nn8jnQ5BVRZ10oaldgCAkUASZHzw8bWaPU+Bfcd+ + J7BveN0W7BspV8G+4SlJ0Rf/86GSCYYYYzVY34HrMj6BnwFI1cRTL/YbkT2YitxLgR+VfBNGRHL8 + PB+/EzbF5XqKRa/Hq+WXhHIzSYi++HbbkDNmj7kXczdyqjgoeegoBXTU2+LhY0tlQopQ3AZpA3Bv + qgYpP9cEQXGCEtF2gnT4itFCuZ245CxvrPciCY8+SqUvpyBRGJ98ga2RojN6uX46rsM+yZsU3cE5 + K0Ipt5BCZVQm+Xi78DeT8WmWMPjxfnPDN7mX+mZ/O1vn+cWzTbqhsLVsn6GtfYlwbrAyOvXo9AQ2 + N+5MDXwdUbQ8ltIsSihFi7Vckcl4kc6/dGdguGrC6lLYxKJV47XSBv17rN/6PrwIYv/kzL5+v3X4 + yqFc3D5zeKSnvieRwIddcmDKqlbTR272CjwjOHGT1jnGjxVOmr/4KHP7IJVSkT9XdlhH43fLMe3n + EmjVd3TGJwu6pY7IFrbaDpE3lB3xSCaN3KQyZ+SNkFVG5zepwgmnJ2N4wkf4ntBfwtAV+sv9hts6 + IScDORko5Uh0wmW2vF4r1E7M4emnkQzYV7uxVRZBODRVuJHWZgh6jzjlOKSKDwKj6Xq1n89skcQa + CzHxGn7ZlUE9XP7LACASRzpHXcejSCgRDYe5g2IZ/wVtm6Av64z+DNaSBrGgwpmW4Ko+4zQH4uzJ + yt8Ppd3FpDu9qWo+D2ObQu3NlyMYRhc8TK2Vz1OK8odzx/HsNTd63Upzk5RLmhs9JR7/4e9nFc3N + DVAzK7o/EFM+9BwWTnjoi+IjxRRlM8pYKGrXOsBFJb7qXHGhsn34uqmqbJ3Th8Mo4MyvAKUPFWzc + N443j+FVAxz1marn4/RrsoU/qpsFmIWYN9B4SGHGWszJVxEYvMAAI2T6fz+7YOICENnCz2ULVKL+ + vsnwtzlqOgjcBFtiJ2B9yKthhI1cXVE8Y2E4I9wqSpXyAifoD91wX4G6eKQ0b0NXy37daJNsZfHH + 6iTfqQSKNY+8d5nb5ZwuDVUSZLm4Wy3XoK/v4LJ2pxaVQupuPV/mnFHzlAh2v5AU+9U52pydus+c + uFuupGpkmyypOzGyJdVTYqlX+1toJ6p+paL0F8zQk9cnJ0/HFMtTdjZYvG/2LXInHUrX7lNayPpy + fCBIgkN6q00UoJV7YriSQCHZf/MFPT5zuBPRey3Bo46WzkJ2fa/zyZJtbA+W6sI4V/Kh9NpRdrl5 + dj5vEwXjrHmdGfKVk8ZjE/uDwaM+ggBLARvCXbq9LZLYDyBwuKHeNSurpPgD8QVHUH4QrJDHdt5k + /iJiunbIBBGv20VSEeVyJJV4Kn1AF79X8xddv5oIEkROELuTIPI9l9d5gC6SNf72u/StX7z/yJ4q + V0/2pR52CG0AJiYqb67XySLm+rysNnw4OVP+fPNHQ91SpylOKQy4F0Zl/0yNBcdI4UYRvRCQY1av + clsAXgsfY3T2VXv94ct+/13lAqbZrTIcZVjIu1z+iAVRp+9CeplYsTtpDxM6jUwQK5IOuVmy9iDp + Ghx5Kflt6+sGHBz6qHGRZTbJ209vmJAXYB2mcha1oa/wYc/HJVhF2JnotFols4VUfygrzRyuQKY1 + 1kbsaFnsqPg2nNuzyww3+2yVpcrkmNVtI8xiAS3wjtgErsdOwDfiiRrhsdTBZK4EbGRU26Vul+jN + 3rxdrOw1uBhFLaJlDbtx8G6ELQYa041QRLo159DKGqp1UE6qY/uxsBkZc3wCIWkrJ7VJCWBjgpFf + OeqgrcotWIvaCm3c6aCVsJ9BNna1wi4sx5f7xWGjZKG1X2m9TuZfHtCm6QV0f6vdWL4yOlMzsIky + 9LMnv+5utgmVJj6SPNxZ2OTwTXePdG1MvUfH2EiMkqM+a4jKE1I88ylR9+Q9cK//nr6wB/mXDexg + /hX1MtC/fC7FtFefygZfFnPfrUL9c1jXCePCXYFC2tsi+Oun89eqGtFsBfT/ml5W5TJ5LvNntXbY + yA15nR32UcFBjnQQCfMYaoGPQYVTu4vJADCfO/bCP71uGQAmKFcCwPAp7arXZ+dVpNMQbwQzAGzK + vIg5oTuBn64bs/adtdhCD/OhYUb7B4k9ZrhSoUJ/TeqL587T9W62FBUYZ+Mn/7t+8u7dU356lwVU + FOH5+M3rs6lE9lV3D+aNrpb/SrRboiaGa589h18wN5rEC9Bbvi6Jt8MrQl6kQaXj+ezqCsgmRsAX + 7Kgvq/0dCK/L8R/bOd8YIWV7uCmWq0JV2tEf56damOUxjx59sPS/R23BgVIlQqdmIeUO7gssO0j8 + 0CA2o6FMPT6X3J6zsAu3x9ctub2gXOH2+FQmzZ28rOTMOR6vhPtOozj2PXcSC/wXCVUF+2Mxu51d + J4XDVMD00+GbhqsURYkpAQLOYJoy4cN8w369mFDoyfSCAkXf8F8/PJcBXktQzQuEZawOQixLtRdm + /ny28F1yj57efEGX9A0oR1tDEReAhR+SuXSjfk5W+B7cWDByjL04Xcx5hE7ZS1AX0QEjU/tmi2pm + n9WFc5oXhg48L2gMSlbbx7xjWGPlb1ijOPTKRpZ8QbQKPKkNbIK/YiFm6HC5LiI0ygUpFbtuKnAR + +4Hn+GXILBzENtnMlqXcOh6ZlZLM4uLG/JQCoVGnmybf5gRPWE+7qUw1YzwII9erVA+X19kxpbk9 + P/aawMqiIHSiuL0QuG158fqZGv38x2+E3EkLCQGX1TTz20lu9j44orgfFRm5pbrYhoJi2ez6HWo/ + lJhMBUWzVeHrst3ydl+b434A1PVITNmI+W02Kzlxq15hGS7zQzH9b9iRC4mUXKl94e49kpw400LM + sOYQXUpoD1f6uiGK0wkjMqTptCtLGfV+gz+rOMH9pGISTwkOY5HuQT2ZIqsA3rdoF1drP9pWojyq + cVuCLXdjsXdvltkOi7FZjUAJjzKT9vSUBRF/xlgXx3zeyM4zX+ik4JrPn5JAOEfutUWVDySc60Jd + oZd/vPYjp+ShN8ly341iV0az9Awe+0/B0we3V1HC4qf3zPHsNRh63UqDkZRLGgw9JQ3m48v/qoS9 + esKxVHRWh79NGQvc2J8wFnq+BBb6kCwx72yabZL5UsRJJqsU+HgOo/dx8U+QVpaZKURdpvv/2ye7 + HMF0Mk6uFG7vDTD/VXq9ByIgBsBxnozT7SLBtvNtmmVT9PDBxgPGtbzci4V5IngDzDoKfE9RZs/w + +lBMHCMrsPQ5eh13sFRL4dFSY82kheZ6m1zrq4OSHPIc5uyZ1GXEB9XqMrNt4f2JIi/263XZPwvX + TGP6JVzIUeSWNZ2cXJFPF6VpzoIm9EbGQ9fzHLckTmd369mmXBE+ZJVwgaL4bAwvRwpR6z4HQWuX + bMtj85nHykTrxjc6uKMm3XeS9T7qunEm+YJjKFphB4lMTfnadAU9bmdYExy+gcoB3ELfAlkDT5/2 + SXuBRzlDsuICzUVXuZWR91EvrhXPPtyqzdHLyNELZJe4JQRYKc0VOuRvYbc2yLiNUiSTMIGlKS/u + L5vv6keoFmQ3JH2n9Yh3WylkAlqEO8Q9HsJU2he54WgQXy3PAQsTgksts/u1zWOqLlRf15t/ETxz + wm7l5kUT62rz1IFZbF48o8uxaL8vA9gVgytzHDV9aaYbnytprxyHKbsVVerj8FEC7/34GCa98fEO + NbP9ABdT1uk8JQqkaiKlElUGKIfQ7Sh0BjqnNvZ5V4BK2cY6r1Z2YWbW0kM6J58+/zEVOBbzuwy3 + f6IqYCWj6pMiScyzBQlaBvBblE2zA9/5keFnIlnRS03cVFyqg1TmUptHZIr8+a5beO07+/Dad7Xh + te8K4bUvT96HZY0F/5+psbDfph4W6OETj3lBKAFWPsxEeWeR5jtD874qYgkHC+78FFG6CtUApM/5 + ebGqu+HLhXO4xQBJ7ZrdocVLv0tI2ov9nGw4Im77ZgbSEJa7XNMVKCPVmgdBisfL2SocwP+P5t+A + Vf325rw0BPp6pmW9ihiYf0DuqjYVH+5XYBNHP+CijHATKsEd1GNHMCGZiXy9uku/CYt9L8MxkIlJ + 2AE5aXuJpESODaojfcgxaZHFKNaEygcek4oU+1TDg76yo5g4WJ1U3ItCsG/auB1tOsMFuEXKrhgH + cE35nayK1MTWpig7MCyK9IyYXYGn4wYflf9doMF9N/YiX2X19Eeb73pjgYYW5UrQMFcUZYC8PWe8 + QwUret3qipKUS1cUPZW55BdvK0Y1JmrfFK8o57dfXN8NeDhxMQGkLZdcuDIwoIiQnWRU2M0Wuvxr + iKiwIHb8mB0fFVakM3xUmOk9MqFnzcoZhfoielB55CJjwtLiUlGxCuRIXjCz2R5kZTTopwR1rz49 + RAWdwFFaQXQad1UKqImtTiA7MFQCekanZ36dyXDI+cmHs5ryxQprtFqP+emovUlNBedT6G2EXaJC + 4bq+iGl1WEzQ36ZH8TuncHQyAxIU0/G4PK7vm5kJRT97U1pIQTTbzHaw13JwMri5xZmod4srQ10P + 3+0DoufElNHdvte6l1MeLBcjEoiThwaoD0PLpdsUdDFcDwcQ+POZ7hckGFBI+Nl7UAntFVZ63Uoa + kJRL0gA9Vcj67133pCwP+IyVsGWi36Y8cr3AnXCY3sBpDwnfrKCHwUPCq7F1ramfgZmwUMT6dDhW + I72HvAOYGj66D975nbBK/j0zsH6+1KZAhSM7QadwZHzdMhxZUK6EI+NTxWkuEJK0FI/MQ16JR4Z7 + L4zCiY/85mDuCXRwj4zmEeSMnBawWzd1+lcxUg+klBdbNHvcgnAMDb4utyBtQAtjYSYyk3mJNfBu + 00UCmipaZW8J8Gq3X9zhli8RVmFzMixLBMcJ+onoAZZnuR2vZ6T5ApPbZaNPpyeBDvL0Qm/0ndiY + F/IiIpGaRoVvdFRSJTdhRRVKz/G0j4evUIdfh5PFodNNfVJNrM0+1IFp9hHPpNJ0h2YbsUMvfdhg + KPaXEV9s3in0heYhnwejoyoy2kP4sFjcY7KIc57LXU+8EhwJ6jCZKNNvS2kzpi/sLAp8p8qJh0Li + fvAIvZpo1p80zA+ZFyMw7vzETY0Tdzzk1RFdtK5s7FAqoHqpCv3fcUI9gqzDU5keOzrfCQKxuq9P + Xh4PYIpYsOIa+HgUNXUXeOouCN3gmcM73QXUxPYukB0YdwE9o7vgpijTqcDhOj+AJCT8AJ6Lypb6 + GF9KtSzqEKJKr1tKtYJyRarFpyTVnnw+rdbUcDGKvZxk54JqyCeRy3xHOnxV/QYdPggSFlY9vhsb + 8Tlm3gD9Jm1bytwl4kR/FTWMRRJwxWh8uRQAxoi9sZAIJ2T4EmL0yW5+dGkO5jCHu+G9SdDm+EtR + oeX0szxFzAnQi1HJ1apYCc3aG365UkjlK0fff/FGuPe0dO3HZHiQSOU2htDWsEm6YFTXBniLwMTO + BAeslTqa6T58cbvvkrXdGuIUEJz0yTks2un0xB5lRDawQxlR1MsoI/I5Ma9X5xVYaRa7LC6jjEwZ + 4pHGEwRjxeu86ArcgY4jQpxRlwRunsDz7ZIiJJWVWUBvvdpusFDMq9sN92TBmFfbr9wHxoOiS7KF + Z1iCTb4tXiu8NVHYX/BcxR8WT9qrc9zqb9LV9bIgi2N7BZGwwBdOP529ezedp0Jml0J8JtkgjLDK + BusamLBvzI2aeCJjfhiH9wZ9Xf/NBiuLoqjJ96gGN/qZlnKEezpHgeHxMUlH6sjjLGKT4sAsFcBD + ccVDFdbpqpgOol4+Qv3tR1C9xsqBxOgeqt/vite0zrq+VEINLtRJEsbXrcGF6iRhfCol4TevqpKw + qMpdBRcKfddBcKEI+A9dJycvz6ZCKFBuEVXK7OT89VOjFsWsiMY/fvLm5OypzKtBnZ3k2etkgLoF + TTZhGFFpQGlTyTnHLGNswDwEHA5Z5Wo4gnipnl0Qhh4roy70uDFsyFKCdjvZuIoRUSU7GmYfTIz7 + BK+aLJkD58DYCrxHkKHMRYifhHrMniv0pWx8yk/5W67jlH/FDN7lAm26AoZphBs9hzdy+WO4YVrr + 08WKYek1Gob0UHeXy11WE9BSPgr2dpjvVdjBiYX1ufn8dtsUkUNmpHaeYPVZPUndx/DaarQ9Kgin + QETL/vnifSefKb1udadKyqU7lZ7SnfrHi7OKz5TFnmMGa7reb9PYjVg4if0okp4WDTW3v1z+336J + ZVl14qoG2qfr8o/LDXPvDxeybQD1kRuRZ5TqKWTjRnHEvaCMSzQEIp8e5VgFtk8x1n6JFgftgJu0 + fozQn9AqBOy18KLijoTcl43EoqoLBEMFKEmICVaaN6sGLlkU/qjnTcLWz7nZAQwXpi3BINJj/J8R + 1a20WuRfbXBlhyx30DPh6GG8srEU2T0edRHZ8XVLkV1Qrojs+FSFZHysIsQFblAV2eGK9jw+gZ+w + jw4gzS620ENNTMZPhDP7Ot3e3q2+3K3320TEG4kc/1uxr6qy5yIZr9OvaV7DEa2dIOCgQ0dsk932 + brMTiT4YRz/O6Y5efDzRqTw8ckU1r9gjQG3yB9mUhTQ0RsEMnEAwA6xKVBh6N6FisJMQOrrCU/iC + 8WfM6VjiSbWyrvGkuzGLPKnHdDp26a3c6aaH/POnD9ocpvfyqPkdFcz9GeiNkKioU+Oj720YzWH4 + 8tGDSfZIqUinWMTbnLHbmViz3m5SD4bcWC/c7Gq5XreGOHTo0rP8ukNRFdbOYN8hELABilw/1hAS + jx8kKb4XjcFtoewdUqF/kkpRPouFFaHwtfKyHKR8me/RYT6bnk0vYWWmxPjRFzeFZfqarE1+0bF4 + 92MZR+tVxXT4RBh2rJim21gHUMguzAgKekhX1Gx7LQNksazg3SrdwkVzgwKJCDgvxA2PDr8AtARU + W6iC6WThXPjDUgg5fTNz9VUlK6VognbSywGartjy1ytQ5G5FWvOA5REDn5wq+bTZDdm+/mJAOSSF + /IDjJ8Xj8oC0TzSKmvmHFXvIg+COyRTs70Ea4mLyyzQGkDE6kr3/THM3pv1ZPtziXOOeGiiK78h+ + 2tV0j27fAWgNkTCRS65ki9zcbZeL9BuGqB2uhtt6dXCVxOpH8TPWJfJONbFNYpUdGEms9Kwl8k5k + Nf6FID5GSSl9eWpPixGGrTtDxBvmc4V4Q4bws3cwD3M08wzMN3v3cAhXmYz/9VPRfbj/Jqilji+V + UEFwdgSVsCwFH6RoH7n/3UV0xVrgnLh6my2WXwlaXETV4TWbrqcHraQYFBxoGrIWW3tLFSoQusra + 4vHoGQu72VpkG1tLi+rCsLPIhwoIBFP3pltRWVGxoiaw4SJJNKJEgTMSYAmMDkhT4vYMV209E9vk + OyMo9MPGVmvn6aoirj18CL1uXVXErcCH0FPpkjo7rdaQ8soxg8Fvv2Bwh+dNoph7kV+FHcSpT1fj + /WY3+6IdUZt5fd3YbnEbiGbCw6AfYkgxQM53Xc7jsv25CgrfXgun2J0bOrxx2A/QXTHiIg7CoJwD + LVYF/qpUvdKsR7xErwC+20xvZVq+CwRZwHjQQFDPx+iCiBTwMeCQCGaoBDEdhE3YWVlpihA0uTQQ + PP8i8FjEg2DNg5OPv35+dy4eIj1MAcmej1/NbznfKLje5zAINDthiVdxWk2rq7oPRDGuDTI2GSR+ + lc6X41Rv+kWyWSXiXONpKlTBYI++VJaW2rnDydRkbpgW0asBrkHsAU1qZSnH9WLIvWscHIri7Blt + YiGT1AEHRx4V2CjuMAnFi0kG9tg8j7MaGDItbNKV8Vndv48rxCSkBKY3504U29/n9LrVfS4pl+5z + eiox9j++rtznTBjqivd5/NsvgQ8cnk8CPw5DXpMDkHy7WV5iOSF9TpCz1kT7yFLc55vLaGNkoitH + GWxic+2z8bsJrD9Fmr979+55Q0YItgQ+fJ1MM+hfq6w6AqN4cBcwR9Dj9XWS7bBzhetYQJguoqZL + hP31VVVA0Yf3StE2BQzemDLFPBBgvUqJ+6Ec3A2fYuROOX7cEGqD4a8BMLZSfsBPvcwjPA3qPgbp + Q9zHOEeCtzfsjF5pS2QArG6dn8Ie8Ah0ba0xlQClvS7qbt6oG6S0N6/DlPakxrvYg4izz0bqp9HO + dQPgtryQ5BpSaP+Lc4f5HcIQxet2YYhEuRyGKJ5KyMiPH8t3BIu9KK5EIXJUAfiEB7EXSJ3vZLW5 + mU3ZhE9vcXWyu1XBODtReYpLtFgg+MhssVhqcfUGni23Gex+TWS1XH+BhSdaIrsR41fEq7g95qBi + oKCN/8Z3ZnAxz+ZfLrECE1AEAfVaLTxwvGxi1s+Ft0GWWt3JAGw8v7Ptjswugv9/WK+r/J9enm3g + 3dmurF6GcWMxlRAuVF5JAJi1zVe9loeqQxMTd2IeM9e5h16Kul/xU/KM3Sr21fXqbp6H9hv5AXAV + HqA++jm20ghPkw7/5Iwy1DxpQD00Z3aKUEjVMso7cyCd5CFCGXC3CY+T3Ua1VTZ70D1Y1yOMFLaW + G3TC1oLXbbG1kHIVWwueykTety9roLUwNqcMrcUxwnPicy90Som8sKeBPaRrOCa3ZHmdk5kApIK7 + jNDH5X5RQlSeRlMMsbi6Ws6/iJpGlAyKlGcqzxN+hxW5W01P0xMROCgQkn5dolhFMqDMxb1ZVEPS + TY9wyRxYrgx1KI3LpbCRb3fQ9+V+d7ctDKoUzWiY1KK2nK44dCule+UspeVqVkEUN5XfhcUCsaxS + FOtqttvdySgB2CTTHEPIoBu4foPRT49wdPDr+63ec3JCzEDeXuRhcdl4kewSdBnirrlZXt9gqcD9 + dnm1RAZccKarv093IGzvr29AfhZ4ZEskbRacfS7OuPj6mUj7ysZXq/1yMaUyVoVZH+HxyGHIPAq4 + DyiKtnlOrXlKxHxtDDgmPiZ2SKyXtw8oEDczzBuguS9cCb0TAb5fYMawYQ8RZR51OMJWHzgE3QfJ + HQhjVZuRh/Z2I3rdtjYjUq7WZoSnGjgWw8PKxRk9v1yc8ZcI68pPIsZQYSjeOIKzS4wTlLKETj9+ + EjgXTxVAyEyXFJqM4VgX3bogV7yC4cExGL/nrrAZADvC32eF1pIHAfdAA50QzXhwQcWjMABqNs6d + jad5xo/I9FQl4jcrAW1QdUtl4gzSsCsDHj/Bwh/78av9F5jb2VPzvoq8poKIse/HaNmpcQPVlZJ3 + Q+423EeRwyPHCcuUCl5y/PbdcreXi6BRWcwOzOukaagVub/J6QPCLqt8fAmgR08mTa6aUjitcCmt + KIm36NUtKSpN96qakdHZdnmLOx73wVRNa2XX5OH9j3WLjsQxzKs0RqEUngWb6TyN1lceLqG2++eq + SUv0gZ2T5EB8CEV36W3aqTnHKvOq+/aT2/olKorD8QmdHZsTPHJx13wncHXkBsp30qnmtVXDA12T + QGXBXmzml8Uys3DbfUjyloxEXtGfv79nQQd4dXrd6paUlEu3JD2lW/Ls3XlFMeOifF7xkkSEJS92 + YzZBcLhYelc+bL4wqj5ngmY/x5VL50vhhSYb++qWbVT63ZcVdH+P6XePFnudBZ53P9jr/0FC/3mQ + 0COmwt+Y78bdimDpNrbhb6oLI/xNPqRDXsZMUXdHMcq26R1dJSa9do3uECkz9KPvm19oH8t7HxmM + R8Oe2GcjHZkqScyFNGsaZs/wWSemC/hSQuFmyWZnH2HcEy3F0tB8QK4jFjFfZnKh1snur3T75WG9 + jiFjhUWoHrfuW0S58CJuVH7ulDWm23Sq/RzPa4o/x9IBmX9aka2rGFszt4XgEpKpboOvngi0l9Ht + YsWo2DNW5xuE11QMTKo+1NE8xhf7W3ht5DcNQfjh83HrjyGJyveT5vxYPEJDCWCHZJoaCPijpSDf + k5nizcdpiMzYQGZQHKR4iBGyfKYzGu/y+IIWHmjgQc3wJsBi98BiBaqneZBu06+JgkEGcQeUxDVy + ym4Sn6tDQIARPHNYtwgQamMdACK7MOM/6CGphJts4xZTH3KcnKLMV/7bGbYqvoBkRFVA7gf2ZcYP + pD8RB/o6m+/Togw2YEqt5zok7TWkavT2DQgW4VKxAcoaIbwf+phkvNrDPupzh6OSxcnBI3NVBF0R + LzVE8XKtyR3RySEcpMEAlYLyCL8/nJJmLhGFDaNpwMhs7Gk88nTNUe4+Y263uDHZxrrqqOzCLDtK + D4lXyOASmZPZds8XmUTri3lSVT4AwVBckVQF7MCR6XiimZnyrIgMkiD5nVPF71N46kn+B4mujCh+ + /dM5MAd7Cyu9bueHJMplP6R4Stfpxfs3Fdhhz49Y2Q05dUFPCaOJ63EPKzCJalQ6z5fmApcNXSKZ + WaCh4AZi0sp6sbquIgwj48LLcqNcf6/hHloajj/X8cJGtHgEyOB+tdJ1/wBzx/UiBFMsmXBNGQuO + FTDxphQyrx0PmOGN7ofl2L/zmzQ3SdaU+TVi0HkQVHooxMIYH6F7kJONvpwvsEd3KD4UeRGuY6G4 + hLEGjtuYdOaAFBUF5c4aEsKb+xCp5I191H5QpeyH6FSU38A1kVvKOGKmTxkB4rp9VrFIyE0yMxGb + Y8+Jun1BkVya3VKObV15ldBpJCyPwOgCvjbdTtWmoTgkAeQsCE4l0ixwqbPfT9n0w9nvTJmYJaTz + uJhtWsoArjn4z433jWWWPVd33PMCrLTq9b+zOdtgyJNRo1G0B6aakSYjWiFpNWUjZGPajeu75MiI + YioBXwggq/DnRg9th0Iw7UaZOKwQKq1uhWAbHLUVucMwoV2xGgYFfmiadKATazoNFcLbB8LJyHGI + f3aZ8d40m74SOUN5CQX7sKUAHJgMhQd4Xgd6pJkcuhQOEhwiOccWC+Ooxu0irfQEGFWb1sm8xqD+ + OCPA9bp6YVRY19mmnTeMpLwi32qVcWxOkJJyVQ7R2QsWvmK8m9Ow0MpSHSx0U1QI88ck+W43KzdU + hVUD56Imfum9G46a/yIIiIwjzwnJhlQf1tPX6G5DrdkeHnAut1HBLdjxIEQUoyNDfmzP4MOFGfWb + 2UFjjx468qfnZjqmkwNWLduMcHtUv0GSzC0joKydA0cEVCkb20Bp71GoLfLRC8aeOV43k7xsZG2T + V52YRnn5lJjpep5JJM1tsqLYgBSuzP1W5O7OZ6v5co9zjVrJmI0sXvoIFEdIVkCj+dyVLlKK19EM + TbXCybyB3ZvCbSYFfYsYuZhMu/OTD2d5VAMJd3JVLAIZJZ44+qOUJR5Eu/1KOKcwAQERwpUmNMuH + jg263uiY2UKyo2H1T9f/3Mt8ahHRpvugogm2gls/oMpekQ/9bpb+omFfqUxMjO/QYAt7rVN0aCcC + rSefcuU+nLOwA+AFvW5lMJSUSwZDeioNhmefecVi6EZ4kIoWQ/+3XwJgmX44ATmEua6ZumAo92s8 + H6sSOgmoQ1nyNUFWvEL0H7gKVnsxYW8/n/Dp288vuLAfvX37Gv719jOfgJS+A1q7nDjQQMMBYjVu + x1iGCnNPkdpznZ4HuurduMCNLjY75qhYUPgHP76wb0P+3FAoFS0QRbSfzuB4vXuHkuttinhthi3J + 9Ztj/V0MLMrhKx75mpkGqF2ywpy6pGi5Gomtq6xEXhgruKgajlozj1U8HT2ltoo2cySEc4P3VoY1 + ZEvKHMXkCn0rDc/CtRciVuFVEcY/Bp2iq6iJbXCV7MCIraJnxFzmu5nkFKcz/uSXp1MZ6vDk7MO7 + l2MOZ4lH7OnojJyn9MeJZqtGVMgpkBohPQqxQhkJVzv0C6Eox8NnHx2xRaEi+OgIGpwul92RZILy + HdVCq9Fu2o3MgSENKOwNlWbKfAnmjCpj/48bLvLtEdibBo0vczhFNNzOrtEv1Etc0lrvUCmzvktm + MbkDDwagHd6OXSl2itA7VtzMKR0duRcEXFLoEbMGhLKJmXbyFQspwL20XnZNgBssVoYFEZ24KqEJ + 2VqvEflEpMzM1vgSIZzQLvwX/nn4ML3YUaU1uPeCOc9EjTz72hqqkW1xDd2JUV1DPaXbPPtyqZFr + ySicw56BCCc01YubL2wj73eGlnfQ8Z6O8KnyR5YCrMf+COmKJA3uhqPRkSDhI2EHcIwchFLPlfZt + Bcm70iqORS0lUzDFcYf0dHrdFqY4rqan01Op5f1xXoUp9h23AlMMaxb4njthoriDAjZMM8QRuhtL + HICVyLWDvrBQWjJlKOWfTj08+9d4oPVf+LPxp+3EbPby7UX5/bO3F0VIvPmd1gUq5D6CcnGXUF3J + LbRJhGKBNIEpF0YEdFDv2GwTuTjiHG6B7jOlDe63VfCq+g1nQqtETdU4Yx/mLq6ASwGvg50CWgBw + Bj0TjbBSrBINYBSGLnaRwwpTD6vlplgwpRLnwbyoYeTMcQMsOd1GtwEDOQgC32LAowtBayaS8E69 + aWEiFCNFtBtcs3m6BqUzkzpUVmiHMMI3aGEqzCh6b2s/f5mNcNdroJPQ8SXQiWAtRaCTARSHIJBG + w5oZ6w4C7EQBKSKlb+o9QLH4lQE20T2Mt+8zJgSJHB4GhtHkOG/J8RgUuLGdloUI95NiP0q2Ulj+ + Zl5kvUN9WXJkCd0d4dQJPMpLxI2U0h7qn8wa68Qy+Kf7zOHdMstUI+t0VtWJmc8qn8rkspslfhZ8 + 3hoBqsV5geYNjw2qKBEFTKaSxSF5OIthQnT2viaNcUf2lRs9X2vmYzGusj7+QITbVexhmM691Kmw + D4A+DpX9aMyQDn4aET8SOApcXW7S3ukSLm3h+q0/SLoXJz0Z+NVSkAW+1VcjHIQtqY3LYu7kk6g+ + vieP0+lbf3z8HcNfOjG5Qitbd3HejeEv1o+lpff2CyumceWIC6biNJJGjF/h52262K9qS7tLJesU + iI6QsvAZe54sp9UJ0OLwtT84QIYiHLpeQEzbqL4jy+20BUU2+RvikPOikanex12Tunmf/uBhGc6/ + J7AIbEFXLuzBU9HNLtmXcierovYRyC7u0zxpf9P+dGAtsU7Cc3n0zIm6cX7Zxpbvqy4Mri8fynyh + mxneaOv8c0a7/aVY/2yTzJdXyOX0O/NUVig5rdRMVF1huh2LIplux8htsJzDJkWyyRTHtuhdzJAU + KTVCFRmowd9+taw1h5QogRSk2Kn6PvRRS8pX6YoMnDIF4iBhSzC4Djl2x/JsP9A8WwWOdyVB7LKw + el1EdI98Kb1iamI/D09+FT5zgk6nRDeyD06WnZRik+kpCUewylI4QtPCIgGtW4eqIjc4/+Mi5wjS + ds5Cj/le8HT0Nl2tQJa9G/9TxZWAspeuvmJDFTr7CjoYYS/iCAUhZazCTqV00GQpJI5/pkvYxboE + eh7HZicmcar7gdWRji59zSOmaG2TzWy5tR1DXbsuHbtkVyMCwANgi/UR7UAf98r6ONJczG5niCy5 + W97uV521u1CW/sIF64FXwAh5Cb5ricsi8pJp5Q98ao3g5zIeyziaDawzNbxCECK54rXnsmsMSw22 + yDHqMZYCExPYdmYKIeHtLHlQx/XRpcU8n0V6Yo6RNH2mjZzH0gLBzy8Kxf2+LIroZoabIsvSr8k2 + X7V6dtkJxXo4RIWBor3jQCaJ8zg6nZ50SBOnBpaJ4pJ6JVWcnstCNi9em6GfHg89LlhkKVs8CkHz + DCfwI4ikU/Byu1xcS5fNyyJssC699+b0oycCBD+/OHuu5BRhwMZgar1pkA42lOIhw6YvgF3dfYO7 + artUtWYur3rGbp7mlVMYgqvVpn/r2MB5KnNpm4uIsiaEaaODHABaBADWBwdah3Z6IPw3l86hbkef + iyRFRkj+LaJamcWazdfehhbt5HP+glosjM1E8O9sv9mgzTkVichX29ltkt0sr3a6CEE2ws2lnG8h + 990fpZanmGkp31uuW5dQ0rK94wGvx+MVg+7QJEPV1WRudd/UHlWbO8FzfemulSrVVOur3ceo2HqY + qx3RK8Qd7ap3yFb2iofqpqR5yMeN1dUKLUWyI/eODrrRd+33d3aq5YgUFEvAOpSEEK/bQrEg5SoU + Czyl2/X095NKzI0nyqyUKkJ4oOm5/sTzuO9LKJZbmNObGfCevERjgQsBe/4V9nzyDRQ5zZaApSei + tkLFuizuz9Mvs2q4S9ne/jvX4rFxpcZ+0HT3gMgQqRo/jajYSLgBGTtqKgBuUNaX6Rv26wWxAV3M + rMagboJkR41Fuuu74L9+6NxFY7W22i4EnXLUs1kMKTSFjLwOez3F4eFSDvV4tUrnc7UjLej7Dus0 + RxbuGLOKRtCEJFRP304aa8yzaToQjKFW5Pj90nqa+2us59XUX7thooRA01yTV1KnaoN/K0ReF+rW + zuGM54edT4BrXSTbXz/fbMuMQMSIIkfLkKWJPXq9Tf+ChyhywsurJVrIcVqeC5Z2k67SZP0v4MXj + 2SpLMThsN1uuM2ApJ2wC/33BRFP4BfqVxQnv8mi/TGYtJbXVsjPRFgFOSqV3R8i8cwAaVUckEgqg + HQ86aBxRwo0jISDt+I49WZ+cF8Y5xQIqOaqLqhQ8n20vU6pflpRiYG3TRFy/xtVpISpbSsqFfuJe + /VjL5LqnI7zCQ9M7lFVDDj6VVVO+VyrkWsKd+xs262yIfXFt6gY4knJIcQ5rxBarcXke0fnj89n0 + 1K7pT+2artuv915Jw9J02LZZf0IPL1Wye/eeMW6vttDrVmqLpFxSW+gpqS1vP114lRo9DsZuFdUW + 9tsvzMeIywnzPYGkgWrLRS4T4FV8kexcdbyMmvfSL5Gr3dukYE4qIi/oNwSqIFmxtAywSGbzZGdG + sD4HvrJDyFvYMqeLOY82uTAgVaG3aeZVVCGVm1ykWacLwcdHDXIyQ6hwz63Uqvt48rJgjKrrqE43 + AmJuWcicWPYGZ6Fzf57PeFnIbO5PC5oV8mXJnAV+6Hen25BSrVxjxsCjUoXXGuKjR741R3jsdOkm + N/RGcuaE66J2jq0sXTg34s5qn07bK9j14kDY8orzZ2HkHIDbi/OALTocJ7spYhSi1ungtFImZh44 + jg5H56e8G6yPbmMdjC67MGPR6aE0BSbCBQa7tYyuD1+ul8R8SxbbzbGx844wPD1iAmzfdf08zFvI + oFYwm9/EwcIV3sx2sNxHhGd3jDIcNO0gcPIaWqHjdozLyhvZpx3ITkppB/SU1tqfYnTH3WoHtGZi + Qa9STKoTSmQ6XS2vjc8tbgarpuZARKYCp7oLMfwq1E4RHiJzZhewrbZoqUcOZJfNZB3tNFSH91OJ + xqqpHS788cKuDMoqr34nKq7DSXnpuMV6L/BgHbYeYZE59Oeb9yzsIHfT61Zyt6RckrvpKcndH/84 + Q7RcU/BmAqy2mKMbg+AdIbLuhEXwZ14reH/MNmwz/bjf+KH44cXwYzmPAyFxqGtbvkxxFduxgC/T + Bfc+np0+nZRAguSLwLgR0aKAMZhJyZq6qvXSzwr4/iV3fVk6zIW3mHk8DCoI8MaITWJeo2/e83gU + t1V/1oFxtZ4Kn8VN2bMGaS3Afnx/Mb2EUeI51WLeVF1ry1sxh2YmrRN26uG2WK35yc36/OPZU23T + a+8o7t6RIihX37S9O83+jzqCxgLaYsgHcdxt2OWpqBt5wNhRNOunt9tsbA9Pb7eN0VDouq0PvF+a + Bh2HDIueN/VhNSXM6fQF2frwnHQ7jkjxzHL5ulHeoa05wyjJcjH6wI2aagZEcJu7TrlOxO7wVx86 + AmVF98GvgpG4yJQq6zLPGcn9JezKDTXYJSFxUTeK/s3eBwlyXVyJiXB26DDHlLxWOOyvaMlGRoMi + Q0c/h0dZz8gRjxyzR+WEti2UbHLXCHtenJejyMR6AvtTCRzDPC8PF6jyaY/5CWh+aq/RJtJWY9QT + dnZopFbkYrUfmq7iY6gzxzw0Q5A04Gz6L/axUHlwm2s9v1YUsBnG0eWGJR2fOVQrTxzsnkQC33Fq + MNqNoR1XE/W46L9AmgIV715/TVbpxrYUQ0Bw2cZ6DdjyHkE0XBYHxpf3wQwG8V/wjTZ9wergHGUL + Veqq+/9lCh4sjL1nDu8EDkZNbKHBZAcGMBg9I8X1r92VhAWD33AGRQJF4ffxf8MbRVJoL3IwSeln + CzsMHE+bAqOAdVsX3cbaECi7MO2A9JCWZna5kQaCk/OLCvIaZZrFWLsq8p6O6l45AQIjpELmXi7r + YkhAf5mGpfODliDJLasS1RBp6EdyPr8+l8n+/A8QwxyQkFqetHS7vG5jA/UA5APwEJUneRq4zjPm + dMolpia2qcSyAyOTmJ7JRGJ0FWwR6plK1Wp/Q+MfClQx49FjKob5O2yu0HV069Q2Nsam2WGzsFrK + vIBE+DZ+5nSszqoaWReQUJ2YBSTkU4UCose+uZmtR+cnL332crpafskRQdhou1gRtgePfZmyymVy + RyFhcbZqTPZs0B48X7J0eDXdTq+2SdKaM2pngP8ue6tXNYaHBu0YhB9FGtzgTfCMdStLTk2soQ2o + AxPZQDyjzfvy1clL+L+340vEq0qQVZc8piefzwo+aNxa+rXTG9jThV4EqAEjUIOAubnSk14K8MO8 + rLz6XUSWoX1C/FM5tY7OuW5LfbZDPoC9TPAzN9DbbCcK563g3MiltoVPOLYooEMxoGIUVOIoA7kt + abLlWB1uJyT47vzT6iUY63P9HxSx+4icBDEsJ6ROxndLyXYcobm0MIPj3Z/H9dI+fpcCz4+lc7Rn + 2okcAj4wv/HIcQ2JD0659x3xwRHgToZ277OpDA3Dl/OXLAeirkiKDn197nDfvr44vW7lpZaUS15q + eiqjQ99dmEltDCF7fASXLXqpo9+mHGvUsQl3vNCN6F59u8zg7C/X6YrmZbYrwP/+S+YlJ8vrm90N + nIlkgzN4I9sUwjiyZfY8TzSG5ntYkfy92f5bCjMIooa4RDEzaSmXHRT70/1kfJpOxJ8+LsfZbLUD + amYGgShXLMLkiPejNxIPZyFmH1dzi6yPIkqXWTW5TlxwpdLkTdDRUeTzqFpU6EZP2LQwYw2pdJ7T + 5Mo0qBuRm9WZLQW7Ov4BmqOfb1FHuMl1LGbM2UhOheAB1aH3h422J2pRDyWgeiiF7zk28Kmp5Gg7 + bspgRTpwRxdnp+kU3BvVw+6Ho68YydmZDhUNPNAaOuWO6za2dkPVhWE3lA+JUd/cbVLaNgWby1ny + jQV1EaGKHhZmAh0BNR1QwL1GXyDBoArBvdnMaqeSh1QQWVMUmEf9SarVoIIN787hQzpkYYjX7bIw + iHI5C0M8pXv25X+dVarycRZ7lSwMF6PEookbeAKFUdTa0qV2/2u6SLFiWlH4kCtScugXZ7C0ZshU + i7XYCsunwPMmmHCWrtLrFHQRWOFX8GEwgPHL9ey/5BX58p+bKn6LUiCMWzKqpCHoGIcgjFk12Xye + TqtQhCXMlqCpLp5BMw/zKWzRmVjI0qSYCQ5+U5iHoj56XGsywu2lbzjPI3AWj6zkqiuFY9hRVobJ + sDn4NKsHDXqjBzdHjZXT0KGw05sE6yDepPMvx+Fc+UymD+/XOLPJoic5xaMoYvXsPQjb9roAvW7F + oyTlEo+ip6p0aJVH+YyVMsVQFYiZG/gTHnOPB7UBq6efPpydXFyUM3JggDeybIzKxnjroq61uhMl + DAheSkh28twoP3sBBSm3Ua3R+atKSWYGJJXh3fTRTenPBXH4283+drYen75BFCud4HP29uX4Cogm + 2zGdZ11ktIbPlT7PyF4C3bI5oSxyfCdyGwNgc2uVIbWHcbmGTE4xiMLArbJQTUhtRoN9llE6DhPU + pT5poT5OaSlrMySfvHWnv3s6n8rAjfB45DgN1wFiZPK4WnCnvAHaAb2AYwWu1dfl8B019k8sdKqK + lJoxgF7T5dBAXU2d2vw1+XTMakZswCfKUFkl1ImmmFA99GK4odrlTy6SHcOQwZne8MccZ5pV4IGN + B/u55t8ZIUx82s5RH6+eUZ3NnJ/8/HSj/gjcWY9yMT7dvCm7xEfI9dTVGTh+PJKL3GQYL24MW//V + ICBnDbThbiQkgnwJ8PQVd9vhC/ZId3zslQz4nQgIlolNxD77tcxcrW75kWRr5qrdjxP+/hPhIxmQ + 8a/let4fpdT1QQbEJoUToDYJ3JfLxd6y7p1aJ+TdxZ3W6zL4jj01eZeHQQINmKtiuFjQtZCHbmMb + xaW6MAQd+VCGCH04m9ZngRqeT6u3ij1y341iHgsH6LFFex8sQ3RAK5ZD4Y/vp8IyN1ssN5gIBEra + crYSM5iUJrKvG6YXanru4zgmOVDtaE9WunSdwF4podctK10KypVKl/hUOig+fq6pdIkltc1Kl1PQ + 79yQhxP46bNAAli8LRq+Pp2/lkL9n4st9DCvyPX7yyUIKnhzyGmrR4zwTXmtUB0R7nlM7mlAz6uT + xfG+sKGmhT89xpq6H7i562o6+uzQiEejvLAi80aykVBvLfrrfOy1ZU4Erf35+3sWuV3Ak1UDq02m + qZe2mXqutN9Xpvbrun4YCbNnUf11f5vGkec4kzgKmAzGfIeTAncOOSJkaJu01pB/4/zz9Oz0XO2+ + LyvoeD6d1bqY0CifPwP59cs6/ctUCCPY6MX1/PiyvONkLDNQUs9qCfm+79UR0pvtconfgKdHPaul + g2yxREdvKB75voiWeURhvSxQsUnceRM9c7oFJ8k2ttFJqgsjPEk+lMW2FnMsjiJClT6eSN5TE5Mk + mdIpvj4SjYSNPvJiFWxHqLpKPUEVaQd3EC6JvarCg9pg4G6XV8AJxWw1uxZg4JjnA+cARrbO43oe + okAEj8Q1iKsxTb7NlwKfonfcYIFsIfALA2CGJG5f1OI+aH6PQhlHxpB5LnPDmk2LBvjb9CvMCGjb + AkJwu7xN7IqT+ExiiYlBLZZfaXXvW669/8D4muC3fjjgQ0aBHRuMH+fbW3LJJ8A/n7bIvRgvgGpA + jfrdg9oPAY43iEqgY9N5cOI+Yx3LVapG1pen6sS8PeVTuj4XNxumYHLccfItNaqLqPpLHLTWOH46 + 8v82df9Weesl0ii/ioRFOHsQeo8g3neQWgs1uPuw1W573gb3XLsBOiAL1paYd3Olog4XoSXFA+Mi + kKIqEZuoa6rEdHvUCLpGTTeIe64TUWBHcROoy9IogVFaVfzjk5On03m6Bw150WNFWkOSuuXB3sM9 + 23I9fO+wb5m/NlTg9HCVqLjY18BajydF81LPq3vd6X1J3m9EsrpUIxUuFrnPHL9TsJhoYRsqRuSN + QDHxiK7PIuiBco/VPcspcTQeeYzUT5ktX5AiYdPDklB8SIsq2oF5H8M6LetyHgH8diBLgwzH5vws + 1+ukLYO9Q5XQPuTvMU1/EIMNsjpp1jjvWconYLEEg3O8sAsYHL5uCQYnKFfA4PApiajnZ5+DChac + i5iVJSw4Dys0uBOPcRg3ncozqTUYsWRCKf26nF0uV2IPkGHxegVd/lUblkeb3TD+wVFoijvwghjk + C1YJVKlP6jepRk2QbcyD695Rcetdy741ja4UJ1LyCk70U4E4cwOMP7sTRSr2m8wMwwhLUX+5kdzs + cAjj6Kn2QuWWXpC6/nh5Nn2zmn88mRc/phRGiPFVWTJPMWwe4++h3QL1ipu71XS1XH+B1+Cf1+r2 + QGWkEJIPHPgGEVLxMCKlV+f5mUSApeLVKWIvTlbXDOG1CyEWl/D3RLAX1HIo4OJ6dTfHqS2MOxud + vH/DXA0d5TCfUP8JBdmoUnG0diSdZTQTaeNM2IXQ1xd8GLKHRnFcVuVdLTewgdSkdtHNpFjtGYz7 + qrECSC/huGeScn2zY+FCupIYLhVyrKIVJIpY8g0uiXWGoU1pw2ia77/6unaeuEGRL3ycEmz19WoP + ewJ9z4nB8TqHy3g+Wd2qhO9Wi6XMdFO7vfYtu/oItdUoHqjvA1rGwwyiydMyCIr6ALUqclJkPba4 + RxVjUhdp544iy45KF3anfoCZkm3DuGl6iZDcoejsc/i1Q3S2eN0uOpsol6OzxVMSIT+dn1bqePge + dyrR2VEQhE48iQJgZVFtdLaEqEE/0PWailOVArXpzGYVJ+DlnZ4/YHFV2JtMRXyK4l7FjIbmKG6S + XT9t59UiHiouWg4YYSkLXdaMvyRCBobgVUbXVEjEuQR5AMunFEPdCiuqiGtpsQVcyYjV4GErtGqF + bkOMqvjHbiz+cj0VbGeOqSQ7OAKyut/r/fp6aURnu44XBJ1632yTqf6qr/kthNDe9HG4IYrav/mx + QSsSLnRXxj99VHt3hIdSBw+7QUBoWsM40AOZvVM/wSotyFJ47Ybw1S6ieuT267HxWsc6RCCyqidW + P2eWwm+QD6ET77Eh7zIesLqVgDEXFsO6EsvPh2PGmQa/euE+Y0FH7CtqYw19Jbswka/oIV27X292 + 0g4D0glKfeO3OdZnslU+Q+77IQ/9p6P6t/6+u2EjJCXcib6CDzoOc5X5USgjRNNdO1Zqs2Hc9x1C + yhkAzjSkPIA36ep6OZ5tNjMQuOwDegm8RKhMM0NPskjbfiBDZSV0YiAbJ/M54aSVVzJpq4TevKhA + LxYqcXZ3e5BM29RwHhV0guruaCV80HStTjwveD9Y2NX7wcIO3g8gX/Z+qNC7uoKyo/LVX6hRP4Eb + crVbal63XS5EqBu1HH+4vGKlGHo1AgzaYzEnHjCMW/9e3fCgaATCKqJLpNlUaDUKtFphiXk+SH2C + CaQCDaRc3axzr7080t8XCKwn+mTndAgbucF61ANIISGriUwpnLYBoLc81yfcaNUgLwrYfeCKd7la + WnnpPXPijtIKtbGWVmQXprRCD8vIq8n+C7RPpRFauG1f/vEarqsq4kdOGIUTL4h6YK+qyGquMkY8 + 3+2SMYKvW2aMCMqVjBF8ShLb54uTasZIELBqxogb+E7gTPBn4Evs2t3NEt0j6TeNwrBAxkJGis/Z + rIoLZem9mhQdSij6IcpE2YNV33ktBkbkhtXynh/OmrtpSB8WnkTRqVFl2rAK+E7ZpzcpJg+rbkYX + VBoQDtJ+vkRGr50BeGfUfhym4KebhGq7C4cTTDITqFKo7hfid7eJmAc45t/uQPSZjEFdEjlWhCC1 + X13tt3RDAaW9iAsodjnLxiopa7xI1+n2+XgBJ1tMQ7K+QdsEYVsJ0CqE69CKL149MCipEWcj3GE6 + XSYKBJ5UEIeyknkeGC0+UQz5/8/en3W3jSR54/A1vwXvxjomXUjssK9keZ32okdydb/1f06f50Ak + JLFNERwuttWf/o3IyExkYmMChGxV9fTMKVkQELlHxvqLbUPNxJaAlX4EGwF0/aKiY81q21wynWm0 + omcEjHFiYkhcpcayjR0dXT8XUJe7TUIKC687nx3NFYOkCnu0TQ6xDpt5QTs3JwZbaMEpwFbq60wY + pCKn3C0gLTvFpKsj3WVwnWm0XvuBUlleuc+Y3w3fS3xjrbaIJkzFhR7SlbfN5iKE6/LT6cVrU+3g + Ty7xDf0xfsIVEZcQvo4vACMU+JZiKX1MHMPUg8EgIB6c9i2Dk7TMpncwETwhvoWgrVzZi3gjf3FE + jDlZUfpZNOxNMQec4SIDZrGdEiW4rb7XFlqwn6tHEVOGNe7xdTgc52jLzdbDqBhHgkhI7hJSVuyF + EzN7IZpet8uIJcrlfFj+VAasvakI0W7i+ZVk2CBBr+MkSFwWi3TYi/W1uxYSc42ozLXaUiBaMyRQ + HPpYf7FW6D5MycBeQkqV3OzgklIB6nx8sZNE7eQqHsToctxIzWNuR2pNPWNJXCqM2kRLL3Qpo2VB + nHWhn9xLgg2YDsDY1Cp0jKBawk0VAJWDqs0BiOnmv7K5mv0xeg2UQP7RQfp0X+BtVppLNY8cXuy2 + QOyTLsvQudS6LTpcwTiqFoX7wNiL8TIHwW+BuLt4eeeYo7HaLe9l+J46BxzKbLtb7PYiljAMxRIX + dNPNDu+n7QhPt4ILjOJkJOaG6xtdJ9hWBxmwhTaBGAR0ioNOkUdLLffD5e+0SPx7YI1wpwn2u1El + 4rjdafzkUrw7GQfPYmIPE0XAHlbGkY5SsyeK5k/siu+6pLrJqp56Td4KEbwRsu/ZnHshBYIzj/VM + EYZnO4Cf9sFK7LQBQIKEKj3qchompR0If5rtN9u8xnhcNqDi3YBvle+Pjsob44Jj6dboQoNfBXxp + O1OQ0kZE4fEXbtIBhZ5etwuPJ8rl8Hj+lKSNs8+X1fD4qCRteAmCvMQsiJMJYm/yv+sB8nC4ZPy1 + vEInXDjMNvi3VFo+0egl7aQT+A3YDO4ABUyXLpf3U7gfcg3UU1ZEP8u3YcUC+C2d7fNlS1wNulCa + o9n1qPhHBeFhObF4D736/dyLHZzGYyZ5hBtBxYsHojwdTh7uaAJWoZASOeV2Zo1fr3PIsxYbZR69 + 7mUevU5lHr2aMo8CGknDlV9nmzueBkdrN6r500TtAObp5LGMoB+5A1kQyD2jNd+3/GvnoAYb3+DP + 3UddNOpBQhBYxOpmf2inv7LsDNNeqx5NiV+fL1zWwRlFr1vdbIJy6WajpwJV6vQyKN9sPs8a1fXo + 6Pk08v3ACyaRH3DIGw4rpakdtfij28n43ccPXFx+91GiS12m26AxkNYSYNhAoPWgf0k7ZLEQpgpo + 1012Uw5sdaLYvALP6tsobsB33m/vfAUBSdH3tWHupbIpYdNY3NANA1bBF7ajzLDCu9UsDYMrXEO9 + HAsLm0tFCj6BdXfXkzH88OlHsD6RIbFiiNzHxosnikndFjAVfAnpd1lWZduG0EtIP/wt3vL43ekX + NW8j3PbyHsfc2aNAdWsDWv8EYTOIRF0a8V0+x3iDrvlceHaU5nPo0Olkq1g/eNYrpNJygbz+kS7N + fjORJGV9qu36M0gODZxsfhX17Iy4bjxHxD64kWufZ0yvW8Y+cMqV2Ad8StfN2w+fq7EPfhSXYx+e + MmjbcdwJ/oxdrdCI9NbfLO/zH/eIaTB9/15cLW+XeU1ZrK7JxYkbAkercGHunP9xn854ihXsm9sF + bpAaaAWT3bOwwYBotFPw5Lqs03Lnk6gJKF0SHVXmKl1SAFq5VBYNAA0nyF0up6+mSwwQNEfJy2no + D5AP05vQzxEuqwo4CGPnmDTaBhMRS1yBH8ARlsWQahA+EfBNduywmeRXOOh9RmUQrTdUt2tjAPpN + FsNhcL8HK5SIMNwEz8MBTrXiUb347FA42x6TSnTsBt3AO+Untkq0aMBQoumZwNj+co6v1plV6U+T + 8enmShqeyojagjrq0IEjMDwdSmHR/AXwH+U1GGc/uP7K50i7gy3r/R6noB+yIrd3opEb2PX9z1vj + tgG4z3LYA6D+ETOg/WhwAqsutBHo0I2IEZx0AZcHTS+OqP8nmYGrhC6vm9Dl2QtdXq3Q5cnabp8/ + VeomgdCV1AhdDKcThC4GuqiI2PmYLWA6tkUssoEIwsE+1rDwsEBrNHhe5fP7CXflyT+DGM+3RTa/ + yRR/fvLh9fkJxk/vJjwXEzS7MSZUT5eLr5kyzGRc8SrTEHSBFDIJrajffM9zsu+ox2MlF77KV9Ua + SdXPS7VTm9XdJPLcpGpykPNgVpdjTdXlTDrDG9blNOgfRbCuRndea1GycZIwtyyP0hx9Rx6v/J/C + j2Ds5ZNSO0FzLIEY9ujPvLNGeKg0kZfH2B5fap5RXWrZztBf/1hjVC5P50x3IP4Uvkffo8wDGLa0 + NcCrmD8Ew+bF+WS+NPdUqfg5mqdO/YTGCBsw3c7yuu3VRWYbAAXZlfUDS2tupwjETGQe0U49rHAM + kILqeRLtIWH2dwq9bov2gJSraA/wlO6U/3N2UVHkA9+v1OJ7mrDEi4JJ4mIZJbpRfGf89VUqCjes + 8iWXebidJ5vOxkUs7gyXQ86TK3j5/5ltqjq+CXtX0vNb+C/z3agau4UR7QtulLofw8QuinTn93Cl + COb3muevpCel1oJGQ7UTR14cVOK71CxMG2ahPrmCuU012TzHjaOkXJUjzTb5FbfB0djK85Q4YVMN + v3qCJoyfPF6F6D7R1hdU8mJw45lpV2aue2AkyqzsSgZtsXUMyAUETajeLq1IhNUR0V54MRbAOxuq + WHWo7Pe7dM3WE/zhrn+D/3prKht+CzLsCE9RAc+QBCMxIZyLHzHBdibqwCkqpwoLUEcD9ZEOVdx0 + /CKo2Zy2NgnXTagUV9OCdbkLuuPMa+rfLwLgPEQyrJKsMriuVMm5cYiqzjZtZrGvA3vY+lmuWxiB + ljmHScvgbP/6TBrmagWPbG6Mn2zXG8x+Rjma/30BFO3FG3rdSrwRlEviDT0VOZqn71i1HnrglIot + uc+fBi5LQncSuF4UCTdFJUD3mUzPTG9ZfVHybuinLPbCwD0ep9SgM7wCWkZsgX+A6FQKFQfxPWru + YBKCJgmqYjMpQjMoVzLXAXY0uBqpYoz4+qpArtiJBDDScJBGfFzcGGl4b7sAHHUGH6p3iA6COdSR + SCOkYDd3i6iaOiD+j4W1ss5zGhSVM08Z64j6o31lXz1TNlOqnykeW2TTn158ZDJgziSJ9nwWuz2y + 6Iv9cGR49U80lcslpJylTx9c1sH5Ta9bXSqCculSoad0qfz9/StMMCgFWzFWCrYKnz91fZDbnInr + J7EjIBL/LgJKFxwwh6sQcwynE8nJdMH8fTF3oyHgtR9tyK/u1l43h/++QIiW7QKZtZ4cQ1G5Wtqn + NoUvxrDPxpm6u+kegddSdCVpMTb6tEPT12hQzLfZlE3C6dViq7sMnrx5iT6JE6C9Xy5lfv44+3G7 + uAJ9doVGNY4d+n13O+LbQwUlsSB88CqXv8D/LU9jJPOTWfg2eMZYtwRl+ZFthrJqxEhRlk/pdF6l + N0y6TV+evp0K1gn/lO5Rtf1RvcEs7ZUCAMo3I/yes9bYFwnLPgH1yWUyYqt6oognpEek63y962Ah + FivdM6ml6409SI6pF0u/mdehKAK9bus386pFEegp7YiPF+cfKvza8VFJLznOEi8MnWiSeJEfS7eZ + qRtXkuekC8PI7yEu/nGzXla5uKls03eVrL0Shw8N05qJXhqAYFVm8FpAdClbT7nUDYzZyAtsGtCT + PMWOyBXkv2kN9NmhLo/6zOyIr2Xhr/HJ1OZTehO3GHUCsZdCvhvUmWya6BXRjoPVlvrVFquwxlbZ + tDctHSqEF642XLcFcQKSDVX1pFzdkk26SkthF+EUO3wqrIZ2DL1WVklpBB8ufObYs0p63YpVCsol + VklPpWh7XjGXeL5vVkH3feSUUeDFk8R3kkhItu+oEHW+57F76oZOt2v2VMm16yHsJg8s1qLdbUVa + yVdEbuJK6k26WvybtijK7FpEkmEEATXX6PXbwl/ueHEcM+efo/crhB0Ehec2+5F+LSRNkDPfn4cn + BA9dvLPeVV6KTsZfFyuOaoW9KJJ+4U/Infg8owuDtAxU4bkYrGhsFzerdMkD7NGdXhKvZ/mGovBq + ZqJIzLu656m6WHqcJ5arFYevb3En8KUf4ZaSDNv3HXeE7DYhYH41yqJn3Qun/ALxt2ByZE8xZsie + MTlCAW5ZbFrmjsHqXkKorJRZ1z/0SZnzhW/+YGcORIsOVUHC8xiFii0aT5I/FZ2FbR9O+8yi5wlI + WlWiQ7Y2BcWt6zK18X3fUdiO7lvmPmNuN3BH8ZE1uqNsxIR3FE+Jl3+6/MKLwdykPIh8a2TJjdr/ + arSBSI+JgKGOQxKyjEjy3oBNEWVeNvSjSs02YXBAoGpbiCVr1J8hMJseQ5Yysk4v4GS2+5t081wh + Jh4LJM0CRsm96/sNTN8cqxdpkbW8tQcFmfYLWPnwlDnPnLgjVKv8yvo4q2bM8ywf04HWug8cazUq + /25SwlPruVRus18s2y+0SfkK5ttlL3FAnYz82le2VqmiGcMspR7TCtzer3MSawodt2YZdHJY9TRI + hIHfSUjruEo30AvYhCArWFYuewRHXjJX5hJ6Hw/z2y3WdkZ/35PQIW6HBGt63RY6xK0mWNNT0oze + Xf69EijHwtCtQIeAShRHDmhGrsuEI/lcyAmL+f1SiSzeJNDNzFm5+u1krLI4cL6v8+UcsWVTWPhv + 2Wp6tUwR0eIKRjKFL9YwnxlCzQLFZXoPmxvldLxgdWhcAfKkuxrebb8NkGsHbBcEpqoL2pCc9NQG + XWkKnKQpCM6kOwjWyGNcixHuLuXG9gO0anl+RDBW60U2y+4yOHbw2SZP90DjNr3h0CeNjruy45bw + TRwJTAoibVY+yECuZx3HY4FT+t8UlPeMsT325psgirgY2tjDVtWD+RQrpy+lwOPscjUOEEjEzw0n + 0nTIWqdDslYK0vn8gXkd8lrodTvsCqJcxq7gTwVrvfhSMTr5vheXsSueRrjRJpETxokwOS1ubsdL + OINLPSb+AiOooPdf7r3xFxLutgud5W12g0TvODGImw3ROzBbytU3Xi5u9MqZBosqJVhohnLm+CGv + cnx0eJDeUY03l/aeaSNjZmaylvfhuJ7jVwEuu5BrHGU5nhodpZKwmMX69OzYb4o+burvcQ00jkDd + UW/Zb5ekWyykdQ7N67wWc5FXYl5Xcdc23N8+dm6jqfBeQxs2HuvSqUFn96FGRhfvP70dX8NOAVl2 + lq926WKF22ZbQI9cfl2z6dl+Cff09M30Kv+hHSlzzbbjJ5dnb05emNFjbxczRCp5k24wcvtyMWNr + bls9W67ctRkycAfXwy4D8XwzPpvPPH89fpJqrUH//gWaI0+iyVb/BoaHauBrl2y18EXg8S9mvLMn + chCUiX/2ZoQcTkUE+Ik3EqvNdXmrfVJh5S2I/rjGnLLV7vjNovDVg4YvqJuVUYwzTFiZekoOqCNb + ry2pHEmwRiKjmqCuiXyxARt+vLFaD2AgZwmQEGvafB8enC9kvubua2LZdoM6Kq6hM5XWWPBHFbDt + BzIfLeiAB06v2+ajBVU8cHpKsuCns9fMqclIcyoZadPYg8skmcCPMBTy4B/rDZCaSVDwT7MMiA0h + 6jVkmNXXXjepxuWSNgep1ppZDIQwp5Q1VpTiicMgCKIHc43Kzb7NZpusmnzmOWXvp16/R/atFPkh + aRp3dyk4b7+CKwkvKMoERtBPLU9qdPn7a1bkX5H6jG4r/Xxa8Ok6pXmghKCaPJtsBXpLvrbWWrvR + eBjVUzKKUMZRuz43VnYpplh8ZBtFrRoxgqjlU2IcN+k8lqZuuLNBlttkMPpVkXkqfHSykGrsBK7L + sEAJvv5b4/tvkXD5I2yNBwm6TiiDBGN9VnVoUy3PsDmSSEla/QhZZJW7fk2YkgoEwOLJs3RuJw+i + rCaIyVpKhMNLUjJyF2BmReEs+H7zraHTzYKsxxLyj3/5fKF1dJ3ubr/zg9HS0dGg0Cp+SPdraWv0 + zUwLIyOgtLIDa8gfFtH7UP3Z4s6hvI3qcRgAl+axBC9I3ilDps9ZgpkcnXClio8snVNFI7pvSj0l + jnmzvJ/hDkG71bcUoy3vt7C5xrcFGIeGKCXfnmfckU/gfUqYl/r7O7N1XgEq8YlXBqToqWYP38zW + HvIetNsVGBH8XTNo/tq3RTpumr7uo/g5yctdisQeL/sklBtemaRG7c++e51JN2P5OT4hc+JtS8iE + difdurO+RzCKxUaSMQ9cKDH21ermZIgmYz8uat3iyIYZisd8UuqXi3XO87MX8576JuUGfPzgeK69 + vkmvW+mbgnJJ36Snov7U6avAVDfdKHZiXiVY1zeD51OXuXAHTlzmJZ5jVoTY3aY7Hal4i1M+H2c/ + YDwr2JBwr13DNC0XO7IhXqTzgK3VpIGehzmwy2xKH8Lcvfp0+gInLEuXW7Gf8bLH4dW+Wi4dtMnW + 6YJXTZjn+yv1+vhqk6VfsXIqz8MU5q1v2U22o0xQymGiyjgy4IPr0tjlhpq0BlCwaW12m9G3QPMN + oyg63rvhB0kS+mWNF4cnxkzTyOGf60z7TjO0TBJiUngZMoUyWKHLV+JIyXziEtUyhMxEt4PzbleM + 7TWLJZcSbxr+YMqF7mxuZNGaTZvVpyrNhqxbs8aO06ZTa9QPYLGbIp9ZCPeyW0YtP9SoTCzRbK6H + euA1eh08jBcshxHgDkfVw3JBnfZZrSymQMxGaGNYMjUIBUDeWD0sKkHp6MXKXC9OWFzUTPkrs54R + 585F8DjIj2IhyNh5YPWs1CaglujU/pXDokh7WabhpXVQXPkK8ubrlho3t+pvJ4wcfrLx7d5swnJK + KMOwbWItYIl4fQmV74996yY5SsVtncM4tTE0EWuatNBj1eH0MKCEiQSCKApl852c3nGhn5/Bro4Z + zjctlrSJBXfYlZxB2jRlw3jbjS/i6le2F1NCsNNlfp6PjExFBIVk7PdOXiVHKEvtgofdMIYw0VIy + 2dsPrt9BtqbX7UImiXI5ZJI/leA7rypxPYwlQSVk0vdBPJj4AcNSdzyuR4+V/XzxRsigf9wsgfqs + 6tAR1sziWa13I/Yit8678aiAEUYqDNBFZBsZARtQzYeXF27YIY2aXrdaTkG5tJz0VKhKr9+XlxMW + rJxF7T9/CgchSuJJhLmBycHSeYb8cLWfSzlASBMyYqGw/4ra0C/weMDdAB+ushsSIVQWPw+8+J6J + gI+3i5W/fiGjTLY8MDPb4Jdn7juXnK8iEmWe36VFFb6LbDFEpFjAnEjJvw+w24pJM7F7WdQkkRs9 + MrAg22KHQDU+RLAE7JFNsSgtYTuVonNwcWf5hnM/+A+0Jurcbm/3u92ywITajk+XVwwB7n8wvpxf + FtehhP2F+0kmijeVey1SNV/03Wsj3PvyYDp+xEZiOqR17IhonTBhXuGk0MNKW1KOmmSdiKPQ/IZj + 4zcG75M20C7iQqdarsfg+ZuUDlSFLWhSFO/hVe846P5ka93Hw4AD/ILYHdcN3UB+v+Um9F6AAEOF + Oz+yWJmA53n98fqCOR2S9el1qwtZUC5dyPSULuTfX55Vqtk6iW/CUHnR86dekARBPPFCh6tCeCH/ + rkKpamIbdS75+mIKy5jPFhwItxZvCTMZ8I+CJRf7BasvSO78+kLFsrwYwzW8lGXE1K2clvLyttkN + 10oF2bMp7Ii7xQpLkMPGQxF7l5lAwioyjEM9FY5ifpf/fjWrVtStD+CpryQQmRXrNftPnMSuHzqN + keANlQkaQVcMejURy3XxqE1Ry45NG5X4nrt8lZdCIUsBvk2mtna663x530LXgf17gO7oP2jnjvCE + K7Ej4dgJfI50XlozpVZWnp8Q0sv3id7Xmm1l01csa8Dp1C+pRS9bbnxPlmvPt7uphvijRab1qKY4 + VvmO5I820UMV4cNl1Fqya8m7V8/CukoYcdJMq2MlhZ60/gQ56wPHIR9B7sFDdRicCi6zH9UVlojw + eioupjPs44YqhTBXOpCTDgjT9LqtAzmpIkzTU4GYdH6ZVBCTgjJiUvD8aZQkTjKJmR+H7UauuyVQ + //74YZKGMHJhFykkiCL90u063aQ3GCBhBwR04Prx+bHnZRPvkGhfhqt0kDDgR1aLyjyin7+qcKUT + hqXJ5iPggShqrqaioOi/D4Sj/IzCjvK4ewrZIXjpdoyck99YozqIJkxMB3pIB/itFpOoB8hly3wl + wmDJgjVm43S5vkW331KXXIx2MMnB95yRNaChfUzcsfCISCGqSjH94Ra9gAxCyiCi+9TQ21d7hCpV + ryzPT5d4tz9p7UdP1AfRl6S6DXvKE15CMbhvjynMiJG8gaDSPEj7pbKh1io6+CWcnqAXTk/QFacn + qMfpCQRKzKvTy3cqflFnKsYfpOHtVTpnozn+hyP2MIHYc3T5OidQcKDcHr6momgGCmL/tQPy1L/C + JQwa8ya76ZXW4FCxB+xr98pHMXOMoHkTIKVLqgIjzzN0AXGkZLV7Lh7AdlipZg9ru0eXwnOiiNhY + jto8urm0mf6KuTEYzdu13B+STZrITqCzqx1mY224undjH7P8C3JhYyqsXalKadl4l1KB1h8Nd7EU + H5EGx1FjdsAxejQbGRPVSqkOQpEJG9PHxTacXi7u/E7lSjwWktjx6eNlpw99N6L5Mphm+20sr4VA + wpW73eDKXXu4crcWrtyVfvbL9xd+Fa3cq0ErZxEchEniInQwXR+XiyUyEhinilsrfOIYKjgBCeuG + gA4ItPX9hcudqvAPGA5CxmomVBXxhW5ZIi0520q5ytMipHHLSfGKr/Q2f/OGEIGAty6wnsOOCjMA + VbMCH4Yqns1nbgyqL2dV8A5sTwJRwDkBJo0izXi5uAZxMZVwLpeLjV/VllU3eU9m3Blag78ShFGT + /pwwRPCqlgeWVn0V3DdL1/XYLs25v0nEQKhugHYpaMOpBL0y2+TFcEzl320Ki06w/cAt6/63cD3l + q1oYLpAfksb4WdeJHUTpssaZr+0wono3x9CGcRImZaT5unU0PBFeCy5L5PtJ0jHseJWvbgsg62w1 + n2JEaLVZpzGt20mcGDScUrPLfLs1J6YYkIiFNSoy4d2PurnZLogGTQH1CQvgz/E/R/9RPGCET4t6 + AB6vB4CzxG2Xvefc6oLFTYBvdt1RY7mjLFshK3HdIGzESUyIL1IXVX3TjgYA0NgbDACS4gQjHzUf + Uhd5NS4iYJoY68+QC0MhN7fcHZbGOdevGVANNz9oIfBEnzCq9NfhlHDGzSVBC4Zvsyn5ZYNvli+k + 1o+ljBYq1T16l4Du3E1xp2+s1XbRhKm000OS17KrtUDNPvcdXp1+tLmA5RKsX3d2vIZXR/g+19eZ + QNgNPcoxLX/VW8MeIHTr18EU9SxudOgze8uSvXZYd2KGgtgIIqGIBG7wj+lpB1WEPrBURgT1ijpC + z4VC8um0gsjjRLjMJYWE+QnWfZngz9j1Dob+Tsa36VZfgl0+Pr/jpbVVvW+jLgXtFRUXCRLWJsuA + 3nKfg+Ax00MXnrx9c34yvd6Tvdg072S8QomM+CBLL0o6BVCrMDBLDWOVDoEiZPjjBsL7YW6AWJmV + 9MdH4OT7My/8CPe8FCsj1yOQl76+upisIMvFGlFcUiyu0tUWg7nHnAiG0CzT+2wz3e43m3zP8/CI + MtykG8xEqmdWjz2+QvI9kRN+4TlJh5xw/rqdS58ol136/KnAIKsrgpSESSUjPE7cJI4mcQKXeWBy + OyPUXcqBouYnV7rI7G2cgE9bDlSZrnKum8m9qx8EJVEWoeGEdDZMYaVGnLOiLK3uYdKKHgsPk1dv + ZImDMjrrREOU5cWhnYpxob2l2nhHL/IbLS56I0WKrhHvpbVSKmb3M6iaYGlJBEJcHII6XwCi8oQH + +6V4kr1/451MxuUEXV2jX28y7VNVIXs155hNoOrn8xyxhPDI4in9pFdzStxwkPJ7fC5KFMyJs9OU + O1MZuFNtWR4xK5TwPuVuHI/pImVPOoOmYvzawlt8y/VgTJZX9nD0W9fDCxk5afbL3WIKB9YeFdWL + /PL+bOOTVuM+lmarxz2RarvrRs8cr5u/XXxjq7bLJgy1XTykm9oEUpxRVZWR+fTT6aunldpWkjRC + WiUulbY68njD9xWkJVl/VFJb5avp4UjpgSJr1PZkHj8HMBGPrLbWQLicNVVfF6tVthmiWlc/8ocC + tbsEfT/OWkB8+fyYm+h72TRdV5Tm61PIqz1cX1hujf0+SF2w0Pl/W2W29F0HWEg3syV9Y222FE2Y + Zkt6SFrOZr0KZCQjSy4LoHUtjfpeRRpJAFTYf3HsnowOf3Eh6MOMWb7sjrBP/Av8B9UO5Fgvv42x + QLPnR6MOibcVMElELS2ifagvfQN+fAxOMGgdj0/f1prrx6WeN6OxNNPB/V2TjtI5UIyvQuC4pS4N + AOn3C0zOIdVVk6p1R1jmfpE5Bz5qr5OQhEaHO6Xn+FjPWVckumMlDmHdDpkEkA4C7xlzu8iC6htb + +GjZhIEeLR4S/1vm38u2mNNX70oYjZJXuchZuLy+RkFsubhZcdAbdIhlG9SzqQ6WFuVd9AExo30/ + 5CX9HsNVLNdD1kw89991xfNW39hC0somDERa8ZDWQ0fkkLPYmCX12jMCZfUWUET3HJ8mOwjbKn10 + 51lHrOCRyWQdoqSHqHRhn3hvD036qHL5Q5VXwsK3wTPWaffLb2zzSmQTRl6JeEi73wirSJda9I6+ + z81wDqGZlw6CagzZTiKh6h9JPIh9/spDBZ/IG9UNQhGcm80w0bc0NZwA983ny3sCdBy/f4+H6i5H + 5aDD1fkg4s1w0tUj9xF1l4AaV8IqrsZ6Yo+P0vEip+ZQHrS32fewH/1DffaNY1M9I0M299e/hnzp + +mRBh2xm/rqt6xMpV12f8JSMAucXr4Oq6zMKKtnMCSjhSTJJHC/24wP5zBugP3g+8xGI0X+GvOjE + 43nRMQvUzuoNFNHr0unm1+EsNSbbGVo6lvdogOibKXiMbXAYrKnEIZFDtiT9A73Lh/hUqjf/sZjn + G6xPu+uPehAGUnmGe/AZ62JHlJ/Yqs6iAUNzpmeaqCp8I3V2WJ0IyKBxErpD+EuwMhCVsr7fwIT+ + KPtK+l0HSNXVqXLIgIEIexrhgcgO6E1xEjKCXYltvs3WO0uHwgA+CSCRUIZxvrxZjNM14hLsrFlV + TOVOedvpII6bmFBLdFF1MOqPR44OmEszx+2/u8X6MI8PXFbsuKNcLXgmgpoj3NGb0+UIRvVn+wFb + jOsO/dDtyVtB1eQLYv8ZGr26WFT5J9YGVWrAtKfyZyRFbvdrL9AuiKXMQgJtDW49oQZkF2+88ZMZ + nKstqAonwsWURA5sy0jYN3p9mW2uPTK0Rok9nMahWKCgRAE3LId16xEM1J3aMfgxD5FafOAja2YY + ++SSa1ntRg9FU/j9kKga0YHONZ/blvU/iu5/EFSH0q+T2Ci/SFlU8wXmVAnXbfNI27xQkfTIx67X + 1SFPn9j640UDhjuentkVLdXsuocKlp6vvwJ70b9Y4xPuTndlvNIRVUY74A49VClTRvY/wummYyTr + kA6oFx8Lyjw43+0hsP2FSqD23IV/0mqrFmVPu3Dgv1gR1TBWsVSxB4Jn3C2Wir6xjqUSTZixVPSQ + BN679KuIpMJ81sVc2wAicIpFQZx4ycmo8sJH+HaEBCgnlCWydDFN1fd8WlQ1qWN4otjoE8lSs2V6 + f1KdzcaSUkM39GvyyPvdOYfP+fFXjaLk1SEB18ewHewXk0WtjrpIWcwcMp1kMPXz++W02J1HEYbO + JXwZKOJ4yg+5gdksNn9tVW9bORpBt2pgCfUy5DzVSsVCi6TAg2fjeIvYz5cNjjQr9RIt6CyXOEe2 + 2pb0F6vIdXtyHSYSaIZVmiokvgis6C/GGPjmFebeWaiwJ9elm3HEaphYb9vdX0mgKEhFbhOpiXrK + MWMka9xvp6IEAD692eT7ta0WIcWYRAYeeegj6QJkIT+xDTsSDRhRR/SMRJh0ufZFNfj07i4dc5i3 + Ij50VPtUxUSewtcjJMFhbL2EvDyIl8w1f/e3jzSFi/Z7z1JkcQmh4eNvb9mgZCk2Wke54xz4Kyzh + Dum3wl+2M6KErmukhwiMVvWDtI+jmquopTTpAcRMcVFo46RIGknMjmEPADN6DHRn5JBLVS45usjX + iGH9W7qif+h7Q6ddSQxAWr5OSxuShAFR4faz22z2dc2rxFqvIBx1cpHBJF4tF9tbPo/Qvl4XVgbi + r3OlvdmR9xw/MgCU7hY3G2EW42BZrbiNTUQZI2eoXpFMJ9R+GpqoegHZIzg7mZbZSXs2RhNNP/RY + eUPDjMKm5aU3dzZQLg20QSwi42VlG9hTOBbNVTiljUF05T7kfs7+Z4+7HrPQalaS6sWtaiMaawue + JgS6U7+UVgLPUUL2L0EnOlKup4xywsqtr4V7iEBQ3ukWq/ewaLg/FZp2qASUyJHwSk5oDzNCr9tC + KyHlKrASPBWxdpdVmBG4KSqwSlOsLg9dnjA/ZLyySFu03XwDLfyHlMh1E+YPk31N2Dr4qD8Nkh4X + GC12BCHY3IQIgKFi0jXY0blBh8Qx+9M3ms4RWOLrNbCW3oQGioAbS4/gMBG3ERVxfPWBBUknkDXx + gR0nkNTLvEA8J27w6t07kxswj8H+Dt0qylrkstibwA+P+Q3MgOqtXC9I2hXwo/fPxuPLLBu/ef3y + cvwhw0T/7fj/woicf479OHrusakXPlOMZAnd+z5N/zNYSRQkSVFtO3JVoZm3wTPgp90KzdA31oVm + RBNmoRl6SHvj9m4nuP52v7yG7k//Z79YIWymeZpGB/48E5UiHM8VqUAC4F1ZSOGNuwVIYLgWsGuy + HES2Lroqokfxg2maZLFf+41NFHMT3TCMhfW8gLPQO2stjg/AXh1r9IkG43Bv4IrR0IwUYyDcFmoT + /i+sy72Si8jtXLio83yVb7aTsdpsG+l65EoAQtPByIHADKR6rmtb4MLCjiRDiba2/Vi7J8PhWPwS + zlLULcVYfmQbEqcaMYLi5FM6xqv9OhRuQnLHr1FDHWn/Hn/CV0b8RR7B5vkD4cvYFRm3Mfo8qKVk + MJyrkIAjxmbd7b4yGXMolPMOM5x6EgkDx6kpBW4M9DhEnF+BneAbhqe1qCpzeB81fdkpgLgPDoK6 + 4lX9J/9N/AxTYzsEENAntvEDogEjfICe1SFRFeXVVWyJMLJvmTuyffcS3tXaRviUkPmPsbich30r + XYjSSdWJHp0Bt+aMdbby/Iq7vaAR1kwHFVAt1luuc/+FC2LynSkkwG6CQyBMd9Yda90Djqj/iXTE + fdgbn8SLRM8aseqbh9whn7Z/I61iC9UfenMBl4V9Dii9bqWNCsolXZSeSvjbsyQ0VVHfYzF3+eqq + aAyqaID/mrAAZBVHAOAiaiiPwhBQojuTx2seUwzPmc/JP/Pp8hyxbz/9fu4nHAN3Pl4jkp1At50l + YUUPNciauZ/NKLC+78ZJ1FLHRiilmkBtkGaJUX9FKzdjkFa66acPl9Mr6CWOV9V+n8rbVgACG7Cw + odNUIqe+BZRJpqoM6e3q4tP5ibwODjSUdG9IEsx+VAn6TtiJoLGAhjuJ11EpgEmNVrCij764GmRu + bSvlqajrechYp57bTW/YqZ+bw9PbbWNUhIP27jKnE/Xt6nB/ux0VpHhuObXdKO8Od/XQURidKWOX + AGIucTXO7Sb1uN/8FeWuf8H/CYoxMgTJJnmg2qftmjPB/TqIBBOEfwNDHHGeLG1VLE7ikThwSisR + w+IXjCbMW5QH8klT2hxLhQL+VseS4XLA7jgqoQhrlAjqtIdAKMybFZ0m3z0yZHy7lpM3kbbqo5qw + 80M9tSKXyL3QdBscQ53psqKmbxxD0lD0+y/20aaRJKloor2CG4YyXvxFzA29LAc2FotjLQdHhsoO + AT+EcmRJfagKnnaGlCGc4WGBf/aKI+d1c3ior+wx0GQzJRQ08VikES827gFEtNElvnOdgnp2r2qJ + zTOYtN39Eg3Z+PcREhp5Xsg8X8BPuDE/qIjXJCr1dWQansfXr6h6tsnu8nm2PC5R50Ctv04d7ECp + 8erz/LiJiFbxsQvBXwU9Z1Um8aFTUyJDKtFSU9SO7TMfCcXS6J4x3Nfz9A6LAW13i7t9bUW0A9GV + 3Wq0N634UAXWGTA6Yvu8C9+ysodxKOi+Jih8xA8tHQY48Nhkn8SbMKCIfMmygGHeNi5/c9gnxVI2 + HM+a8qsz9M3AqLrM/KDNNA4lchrZFbShisvbk/QDn8KTW85zhwvbiaLAPA/9S947Ed0+Oq2iRGg3 + SklR9xD9rrWFRavxzr/EVdSjuOqBMxQHJkXtDj4aihykPBquvrHF2vyCKq6+0NLrZJxuJV6GwTwE + oZEwkjhC9oFutBMSwXdVQnrwwSzdXOWr6Wqx43jc4ydX+90YSInUxexkDH+eb7HY1Rg2AB4GuF/n + WVeQ04h5nNl9On2lXfRHz/ogdA95UOKqaHUgw61aIsFl5Ihp7dmTd970b4m6c0+sBKyjY/YUnYQ2 + cIepfPLOn/6NhR17jDmRkWipZxAKFXF9d+GEjr03h1638uYIyiVvDj0lJervH0/dSvVWFgfMhPR0 + nj91XSdyw4kLWyASYSoXujXz79NTE1Xm2dj4OxpFNaM9XLapKvgJC/4tne0xs2UsqDyR9E4mY3WY + hfMISV0v8Kts9e/7orKEDE78+13qViuy1gPQ1VVURcy6RosvWubCSjVCWLg1MP1Vg2PIi8wgRV7N + ryhxGIURzHp4LNHChxAHsRt6TsnQfbO8n3H2KCPtyuiqSdSIruo6Schcr97TUbjzZHCPaT8PWUM/ + jYErqmovoPZTyNA6zcjxggaaDNT32An+OToHgQnkPm49kausDFy3IDfCNjQM8qrdd0+nlW2oVadN + l8AQ9je3fFOmHF1ozz28JR+AOhJiel4oGli/tlJsUf/khapJO5c1ae+zdLtr2MVPXl+cjPhZVl4A + 5nCIWFxT5EqVtW+JsqyvnhgaxsvKilvrfLh0+HbDKh+kM8I4UuHbyH4A91ttUbHLDx3wg2LYENCw + AXMIjGq/us6XWHz3ILW2ejydiZUnS940sYxk9zz7m4Zet41iR8rVGHZ4SjfNxfkHn72sZLQ4pcK5 + GMLuuq7vRnDVeDyBuzWfZQkt1KBH/xWD0F03YY+sMEzEM9T/eP/BSTpIMPS61b4SlEv7ip6KfXX5 + 0a2AkrvMKUkw7PlTUNmCxJ2wJOCZxW3barGEBqrbqp7DlCSHpuCSRwws/l7uhNcX1auS+56Rl0zf + S8h+9c48xxTl7QvOd+him6X7LcrZ17Bt+DU3yzc0v0g836xvebIJ/uUqR8pwtd1RSWv0aM9TuFjR + 9oZHeDt6f/a6uNK8AK80P/bImVm/GosVkFrseM60zV0yDEBxJxIHAvziltH1P/KPA1TYA103LJM6 + 6uIWnCh2FFbGu+gZ64JvKz+xxsqgBkysDP5MgHzpTEXWp3p5cfZFHBet8pcihmk3iXA/RUwgTWSL + DsAHg8W3DldP5lcVf+6Qcqy2Dyuqb8bhM6cL1or6xr76JjVRqr7JH6pcEIZs4EAyCLwzold5LbNA + VMB8NOkgYZJE+l7688dN2OI1NIzlTxp28XMSNpyYDHewoZ1oisCDXYqy9034GEjxA03NI3QubnE+ + Ep1UciWeaPrH5wvP9+1hCOh1K/FaUC6J1/SUONGXP15HZena5+U1dOk6ej5NoMNxMkmi2AnFRXgH + iwPcbbH6li+x8CVMLTdDUPkX1Ht1hyqJ3l/us6g+lvtQCZ8zJWg7IQj4vlcWtNurTZmWNcepMddN + 3l9e1jdSGMRyRBSq+J/FsEvRyj5cVazSjmbJqm/DHIdhafOCun5X6I0uOR7tdLOY3ZomMRF/j+Gn + sEMWs+lttlz8mC7zfE3/HD+5evfh3YnhqwLxfXH9gv+6Hb+eXuU/sq02arnYWy7gYwubxdV+B7+T + ZWshVkGEv+KuUZoQZoiOy/E94m1YPej2l3s2vcvmC44fWdpTI9y9Un0I4oh1KHBYawR7JLURWx0g + w3m2FcWYxP/Dm9vGuDWy9kz38jX3cGc35wr9qsJ9dfdbLxfeQR9UXBQ3Td6CKtIl01F9Yx3YJ5ow + w/roYU0oH3Q8X4mQolK1h+ZSp83fyNyz99+3zCCwgAdcA4tc9qhqoB5ogCKOeCy8NuiuMU02lYx/ + EZxWwSPy2hi1evAoJqq1Ur651UexQxBotlup1ySyMKFqJocKYVbbHUCU9BVmCQu66bfyE2vEEmrA + BCzhz0ikvFnPhQMZb45sky+n3pRQUzFnwiirPjr8yvgt0BshUX6G/SAYCccXxf9gaAi+jh/2LZSo + zpxDQQq1vTqauIhc0EM18+0dB1IgpOwagk0BiUfXhpTXDrAxXyq8XFnVu9e5W37IiGvVziDWhjyi + r0OhtzxQRcwhDWeDA4Q7iUdWFosD1yPpeqjin74XRpa9fPLp9NXTk19SZXRwFJ5iWx9A4Tl7N/38 + rgzC07250LI5dN7UNjnhUVGw0eHHeRnnp4Pq4caOiXme39lWdmrlFE5IQFSzXIQQ9Vrn40PAYkro + /3DhRJG9A5Vet7LwCMolCw89VY55NBeXqjrz0g+6icd//tSNvTjyJm4chK4w8Xy5JZsg4snNJgQN + nd7caKEK32HxK7EsOnqF9LkuN9Cn7+vROXclfisckLCppCNT2gVeUPBMa8Ogjs6zXYYi/pij5d/c + Lu/H6/2GgO+MLoi/T3egh+5vbtf7HXDo/XyRbUdvPp67gSq87IRkYv+1KCCPyJ/HkjAsjUaPt7K8 + IuRpCCmc4MLpArtKr9uFExDlcjgBfypgV08/VWBXXZaE5WiCqRcGfuhNvDBJnMAEt+D80QCHnyo1 + /V7dnufpiq2nl8sU/vt6NfcwpXu7zWdoydqS150IgQQ1u0WLGvFbwtTCuqA/Xki1bqsS49XuLwwu + 2zFIUnhOYGEwzA3drbxziy0SgGnI91s4GhTUtsPNAFJ7qvRlGBFqK09OTwoAFrwQ6NzyYZQNtmIG + pOefj2D8BKt17Mdv9qubxYlut0SE8qQpasIJA9cNWKWse7nirmEbjuOwiR5LGMIQlo3DJdv/ZHy1 + WcxvkJ8bHQ0j0+isGVdZlID+EZeMtbUzURsm6TC/CcHBnISC9g9c0qv9fF7qJ7qQnabwyHpaeukB + o1cJ60hJ216mcRqBEjpR4lD3TeNrCilVtEb/WcdxhJxLhcr4fjASewp5cPsurDDpllIT/etU4Prj + 2/r+6Kgg21BoLrJAVyYdGqXNwu4CDWyH+YvYdBdnLt+FpCPQTj2K6ENqng8SZhGRIo+L0Qurnmov + GSVUupKwrOx+VFn4VkEK7SzGJPyS+Cx+fzYe89bpIEQ0/eveQOBkckiXs37ArAWl453x/J6uIaLd + 6lbkpFhKeTpvL1zHt1fS6HUrsVRQLoml9JTE0tNXr71Kmg6PudBjp5PnT0EYTbxokjhxFIkg1zMj + gGehJd0I3feMTXfQvZRbT66BlSHnul/tsErOxHDfb2HqsO4RT7fT00jQs2vkUlwtck5CJvug3gUX + xgSutfs7LCYIjUx4YjN0Bf5CeEZFSTMSLk/nmVcN7lYcy4y89RqTV4zI265xBYcjeAm7KatO4nJx + Y5h99HZ8z21CKov90I/D5EGa0aTKOA5Ao6+g3eGaZKv7ZaUZxPHNaxI6jeb8qEnIaxgV5bajm7jc + XtWcd67b88xm49imWSVaXnMrM0dX4FHH2YbHH3zLmnKjwiisIKCVpFW+wzFsIjN3v04mgVN6oKOj + P+N5HSGDktKn53shSZ8OZ+XFqVat7Pp7SVhIrJ2m26hcfTxx4XME/jAVk6bAyo917wzkkHHikOho + ACEDjDwRxfiKFR6EKqNI0tqz0Uq2SeZOvIT3s/kAH9/tX+pHeugSVEPqAoOWkB/QR0TuL+v78meT + b9rbfShblI31KYip873ecVoGa6ZxeoRLrrfE0HVAQzfXNLCjfI1DVNsd1ls5HPQHKXH9jqvU3WKV + F/QyecaSbnlB/BPrvCBqwMwL4s9ID6tJ59ej0N5u1q9lhlDxqswVurvJeHwLc7xE4PQHka7iYoZw + 56X3MLtCp6IDdpZcOikffYW8VfgY8x2h1GfqfYLwz2cwfVNlaZ3LHtzltc7iLjEUA2DtB2UaLRPR + Bg7F93E6R7441S7K7Acs9OomOxzmNYzJ5Je42rsnsdsuMpIWqFHyuPRzwos626fnL9nr6BljXfAt + i48s07+KRvT8L/VUVPIqpmANW2RU/t2ggyUygtgf/UrPtHThJo5MpHODd+yZE3VKpBPf2CbSySaM + RDrxUPBcjFTboDac7b/C97lQCjhPffX7Gxa6jgQILdIyC8owtW6EQdG/JlO4A7v73wxk2x1KVR3f + fXD8+KxDVUf5gR3ykqRexl4Szw1bruf5Xhw7bhlzaRqEoTsJokQEx783yjbqMZYgki44sB3qwnew + 4ziWFYcf3EG/RITN7RIan/2H1Gx049jVajYmrrDhw5VhH1pCr1va8Dnlig0fn4rQkldnYcWGX6mb + kjyfhgFzE3cSBm6Cp5rirBab+WSMJp/NeLHNuR0QzXT3m/030kW4veoHQZuJ0Iz5rFoX5UjruRYx + Ud90vX22RN6IbXA95sWVKIIdXHP5stEc64SNwQSRD9Km98/RRzlZqE83T9ZE/5X77uVrOzSvIRwd + V/RKplXN/CbDlrd3L0qR/Ivt+Ga5n+Ug4vKjKUZV5HyQGRVe2yK/ulkiLgboX9DEfC9qCfCyikvg + +IKN4TZSllYPFA78R0I5XymlUc303onbrRpbjcNbzvJbmOVvi3T8+naz5PmA6e72e1oj5TUDFfHl + 4FdGadV6GPjCgITuD9M1tyOky5RbI4+MDT+GbtvAg5AqUmzu13CuYPQDdLQPyZY+Jg7JBnhZzm7h + A+B8qDDSvqjZx117PvpFlkcRfHuX3mAoylFe5+GMj2JAh7jjT6LahKkQRn6R4XZNeUi9zTRktVze + H0WEsg/EqKbHEPOchDBmdrcL3N04a3mRJdATVnSYkuKJJ4XPLhGu9Lqt4FkT4UpPSQy5fPe7GeHq + gxKUhLFfET9B+vDiSRLzZF2qL73mMidcq3Cdvvt9jBGdC7FG+uUIBx30scVKTCGXRi5v99VA0b+S + 5HmuYv00KWF8kc4Dtp5O+D/8tZbuKS9adL+KGuz5fluaO6o/MRFmMTzLPGZws8k30+tNlskCFRzk + HpP3VxkS4VKFkCQwe3mZbXnoIdz5XM0FPozBi3BrYNSSYhUUW1+Oe4SVc9eT8fn23hN1p862d+56 + hDtJSiJOQlWnnMgVaa/aKHhNjvo6Gm13q0fRhlSGw9hQ3dLXhe6oTVpbZY+jA/OOhhSRvELVoGXR + 2/gZczqZpdRH1qhEshETlkg8Jd4xv0tF6ibHB7+GIWWbwkYtqj7L1FutwrOch1dAYIRUuGXFd8iW + HTkkvmrlorvdjw9ddxpkMsPYvr9a/M8eGF/TfrSHkXdEknND3YpsLQa6WEFz9M/t4gZOlNhNzf4/ + 0gsIa/Uq3cCabzg9a1NVTGlgcgLXwGHHV/ncEki+GwwX8tOYatKouVXB0wcdQPZmsiEs5UPhBdkC + 7VuPbhjs/sFEHUptO7+A82MfNUmvW4k6gnJJ1KGnxK7O3n+pRE0GLvrNdEknfv40AAYfuZMAzaii + qNRHw+mjWRFmC6rtJyOuhHhztthVQxVrPUem3SUwwvM+ybAyDQVctPfkcnEyVY3Wm1lYc+lLFgW+ + V85OkbSbrCzMaax8WksP/rHG+76RJEsC38zceF0YbjCFxq+ggcOcSV1HRvwQZzftQUkjYrvo6egV + gnRLjH+cOnN15FykFOt1e78sr/QLoR7+G6GLbnmxYmhtq7g1lRaYnuWnnEj+I13m3IBEtiS+gfRW + OOIS2qVo1g596k6Nbo1wd0vxK3QdnvCB80DXQsOkdbRFWJCzgAFkAjOvtNsMO8NBMnzrCLZb3mRt + FovGkk1JSDeURq9iAZmUZ71pGpvlWN93Ra6xTA8ZBJKip69vJNiEvh4NnMXqmu9L60AIyVDWCT9M + mNtEaqKeclNrOrtfUh77dqL/guf8W7ahPGJuNP0Kf8tX6utuXQqwWg9+Ut5ZHVdAXrOUM/v5A1xk + HTAC+et2GIFEuYwRyJ8Ki8L5F7eSQQ7b3q+ABPpw38UTPwoiccteFkltyFEvT9+eVuDeqsl6piUe + I2Zk0XgkQj5CnD9BVeFVkB1ivXOdyk3NW5YvmmmZblM+QAL7FA53O87gLG9HGmSGYUMgAOqofXHo + J36llkdDnTn9qsWSdI1Ol9hLYtctEZVVcvRygybFyDtEcfQzl3TEt55C+Auc+M8C32VRMPDwjYjr + gW/WrZsNAc9JyNfw+5vzaVONRNq9HDRXbBRcFeGeqgT1KHQgK7sKHi580zh9durlMXHSfgjaCW/3 + w/u/wZUFrU+Xi6/ZSXMf6lS5kTjA1b1WPfQ2AoPk6FEB1fUueuZ43crtyo/s4bpEIyXALnpKbJpL + fNKEbtbO0iIYK2/pfzSa4kBdeHDJVhapYi6pBjNVX+iwg67fhewBXGQWK/vU93RZY81oT4NwKTYa + 7oibdCmqYDbTsh5iIhOif6Bcy1+ZU1hANauVI6QcZgjCp6Z6N73C5Bc84FhNSUQDbddpXXUFq1BQ + L0k4z2reUv3nowfthw1llic6VkFx/rvwGfO6BcXRN9ZBcaIJMyiOHtJpfvX7G9dlI/pRG/0mSGC8 + cRg5AlSe5vZtvrxZcD9CaY+1wJXbQUz29SCT6Zf6la7XKQjTltk2jykqLSmKrJ+Fz5yOOKz0jX2B + dWqiVF6dPySRfp2tNYzGXN7uOkPfYpo5iAAwq4TshY6ps/M/RvgtbB0QB0MBpxq6RmQxdOgm49/C + fFEZsD7cRO6AyCFRQBUUO34nWm6pDuGZlhQfewwll9kGSvjyhZ1ZbaBezDVyeMTxH58uHL8DhBq9 + bqUAC8olBZieisi+1198XOCSBuwhAqmuAYfPn0ZOHLjuJGLMdQQ7rgCefV3whCI0D07G30FeHuff + oGUyZGXzCcmMMD/SQYtVDvM7TFqVPt+bTf4dEWtgCre7opighFwvmOwL4AA7gUZzNp+58RqBZrZk + kRBxo6sNDLWmyNpgkYTmuOtN26EZAaBB8SdwLII4KumyOkypmh/TFO16YVMMIfNg8ZykcOqLvqGt + MIc1QKpCNcz4hK7VInKxI18u1kBHy3HZjj9kd956+mp1zda/wX+xQqm2ruTkG2xdJ+Ms3cC1LpFJ + fvvy9hPXbtLNDgW+LTnyS5f46M3535RLP/A8hzKNSFOVy6RFjInBbhqL07cyJFwAYgB1S3VQgZTK + HPST85H6ma/vVwMufUcZZFh2GBI7bDoNdubYrkQOdcmAUdnyshG/7W43GaWIH0d+ED/qAOmPoqTP + UYMZwmYtLzRViyqJsDhYt7AP8Y2ttiCbMLQF8VDo/st5/jXj/E5kho7w0W/ms4kKkyoiqMagNJmt + YKaS53KA7r90kv2ABcoGy8+Vu4sSIf77ggWuvbhEr1uJS4JySVyipyQuvTr9UK3YGbJS/osLwhJL + gphNIpe5TDgMTpdLuARyjOrMNncZ98ruNxlMzHY/my24F6/4i363cj/OdrfY7QkmAjFeRfgiv3lW + ix3P5VZOwB0PrjPLE71Kl0FFEOoERYnG/UJ28dwoCJlflohSGiUXLqQyk9W7EFhQdlC0tFBAR9Y0 + YFKFuW8QjiTF0a9aixFuIJUCkTBvgKJ3fMDcdlQ3M9ayiJt4XFaaL6gOWCuRJiHEFpquMVrtUeiJ + gUu3e+0G7rg2wk1QXpuq7am1jZZFCxsWrZVeowk/cjxZbzvuwGTpddt623GVydJTYrIf/risOmVR + 6K6U22Y8/3DCPD+SsN4Yjlx2S08khLYWqww7gxf5xoArzh8/3G9rnKtdcdYaMHrretWEB1ZCrX0N + PNEsrhaD9hF5Q7aha6RJEnllzDEskbUyscEmpEylsPMwAEQEhBtKahw1O3EZh3785+hdXadFluCk + W9BSulzfplOU7W6WcFw2egCSNjdol8BksQURvV5stgiZnq3HC4LFrRmsHN8LuZGEnUzqrlQEWnUb + txJbj/g+ViXQPZ/XcHv0WFqc85XnoDdFlkTUz3IQ1pHj57vrUE8xN1Dfpbzh3w5FHj8UlO0hybxP + PNRwyV8+ySDtTOTn0GwMe/trBlfJi1eVuWIRY13rgItvrN0oognTjUIP6RKGfcZEcQAjvCVb8DQF + M6vliQRkPBk/Of/4/tU4DoLECb2TUf370mxygY2MeFPc7RK5jsiqoIxXHmFC8MRbEOiymx62up5F + yYuvKb0POrlAvsJLRNSNyd7ox6jgsCaM2I5zOOTt6kdWXva+FSnlHqfA+tegUTv2wiW9biVcCsol + 4ZKeyoi/95UqGZgBZsqW0fOnfhh7YTCBHzETDkWV6a4cGirXncaJnVmTxMmjpDFtWUuoLwKu4PeP + l5/c3+A//jMV3beozzKkWIvGGhQ8RqMkj+pqdBIyL4jcR5h2+Pb8/RQTu9EypI10XZON+D1Lv9L9 + vUGBDI7BDBRzWHTEli0uDMGHtuOP25W7/g3+66/L+rt0SGBwyIYLlYsdzzDErCWqCsdxOWllUbyb + L9L9DwweuV1c717owt9lNgdBD/dUkU0YuBw3TESO6x4CKX8cPtQdw24MsUCeNYqufQl7v0MFbnrd + 6qwJyqWzRk9lfaaXZWsZS0LPrMDt+c+ngR97LJ7AD14JHc9aqdKkKCExAXF+zxNEy6UoRfgbjO39 + ZPz+PR3A9+/fi8N1sb6qWr94ECSfOpjIcmnL2pDaIDIdb3qyRhT5CgzEthHo5wzrzde2FYbBoG01 + DCkMrYZUcI62VupDhePmFBe9CS1xxojjxC1+ni/HWi1Ys3b4IYDrJnrNBCtTYkmwkWJcCT8e1W/x + 8enLMzfCfXF3h8JkXpri8gZ/QZXPZ7stzw3mmvD1dYa/814WBcpHeB4Vn/KCASOOyZFYMyvt5XyP + VMQORD6GXJXtdP5a+6RRDg9Tft+RaOQdJmpHcqD63zElUFmd9oclbTF7xyetR05Mls8LJ2b2Fya9 + bmf5JMplyyd/qnC23Ipw6sZh2fA5xWq+STIJGSgoAmLtQsR0bEvHEKQaIMs4Y4B/BNL+BXwon2cH + YbjcfibRM2WsdEM/8J32TJOaUvBG7bLAbayRoJOvQHBdowtntaumg4CYEXSiKAFZmssjuG5jAisC + ODnlhNMj76SaHo++1KU/GLUSUJo1iiVwKA2MkyTrkSjT0AQ3ZtBCU+h4mX3LDAkcaF7lu1tO+Mu7 + 9yJbNMOtx70OW0QBc5VV1I/FLdTzBrFD5sLF4eTLq1iya1pkcoaUXCOw0eqxyeT2szcJ+IQi0ZKy + 08V91XJvXt2PZ/tNSgjFx2j0dMcU8UPSvNrzsjn2uuI8orqDahjLwUWR10GiMEwcL+kW1qy+sUYw + EU2YACb0kNg7QRoIYQ6TGu43izkmW8sza6SzCIQ43M531XSWoj2EMkmSEI1uHgsI6bpe58w3N0Dz + 331RQ/5DAl6cOIqFv7e0AkfkiIgNyRwln3gdPLP8dWv5xKt6ZvlTodBfnMcm/itIrW6IFtKSZzZk + rhPGIKB4rgSRv9is47UQLGokinxZlikiz/lng5vViUNMw6qvyFTrHjAwuVhYlid0g5lJvQjLLeUR + lm5nU/4xPbaK4ugTDTXd1Fq5Sk1MEHV+yh9ipcxv6Q0MaEf1GU/dF7DJtrnx/S5b5nBPZpSFmq3I + SibhsThYp7z24Ezfw+0NN9VSlAgd36Qbpl4e4VoX13TiiGua7+7yVHRWF+2otCATuMC5OI3FFdnN + 4Urn4kWdgR83c/YdbYyw58T4kJnCf0Ab2BL4V8xMj8NEzia39PdKvTtOfaW8C8010Jn1Oap5frgO + My8WanVD7LxsDbcnI6jq0wugas+s6HUrZiUol5gVPRWW/tefvHJmA0s81wzW87znT1kQJ2EyYUGi + AKtLqeA73KrbNch5uFExMl0Wr9XCCThHQ6cAfHSZrRB4Dn6wgH56vkCgg38HaJWmZ2S9WawoGoHP + c0YnnMvr2K73X9S0eF6wAixjlm71pB1ukoaWSezOx6cbmPYMA6EaByC9D7w37ShA+R6l7vpgwagE + joM+CBMNAJGhgyh062sZwj5YrFaN5MNGFOYE7mg3cSpUccRT4BxwPszx1kIluMy3oa8psE3ka28c + oN8EP2DQL7RDY71KpsRGRVOQKgMZ/IV374ifcmXUdEIq3+dRXVi+SFyQFSul9wTdtzcr7vvhDaqe + WcmlAzdx4MKkKkvGNEx4eIuaC6HAG9OL6HM9zLmx43mquc63/EgcJzU5bWfQbqp7U3vI+/nXFCsp + aBCiVCuDtuxNH0qtsVmu0CRxkRSJ7f12l3XUv/rGA4s96LXumm7pSUeQO2T5GMqI4geE9XBsl4CO + qqJyJK2hcAgi5orIEeDwXSJH8HXLyBFOuRI5gk9Jnnx/9qEmcsRJKpEjcAW7vjOBH1Eiivm8u1/n + Uu8af754I/NTsw3Qr8lP/QthS4/U5RyHsapqEjFPhCeATGi/oPS6ZXgCp1wJT8Cnwtvy+byqH0Se + Xw5PeBq5cey7kwixxllFP+Dm7otPuLc/XpxLiYpfxGgfFBo8SU9S1KXXKy+LGxeWbLPNN9yWjEot + oe2luz1o9sF/4bncvuA8QiXPXpxfMG4pl05kDJDgOYHn0pWTr6vi/UpZI1CPVmf9vCFQoOQz0eHE + XCcO/IoMblCFyWmAKSvlRzfQLXZ1hWy9zA2b7Ai6DVT9wA1tqPYyGxlOozpiZZHM4AYgth0gNvoz + bFtqY4SnU7EOP2S/wP7UWOilmYAFpKhQHO4Ms17XEVjRaAVxPkrI70ylaSpbCByGfPITCvEgcQw6 + eJX/GJ/99mq8XeWHOlRNhheQHk0sy05K7EzlQU2I5Ks8yOUtHTF9qbX77YTn7yhiYgFZ7dR3lPO7 + k2na2yCd8b190TsGBy+bmsnpCKzQlUhjFeuA0i8MQj3FeZ9q2n1gidOhph1/3a6mHVEu17TjTwXC + +quzoJLLzVw/rhS1Y34QQyeYD3q7AL75lK+mGABO6DMaJqi8yF4KdGzu4tHx3NzTF9zsdbdf7haw + xTnSwJanVoACju4LDm6i4piKcJMXRewr3p2SJ0A7d/l2x3WGLc9H5m6hlMqkXO3h9s5mX8dPlghd + NYXf5yLYentCwYLFi9Ch8ZPtHcfOM94TOPHzWVANolUtGLJi4jXJisz14jgKqsGrsgclOo2plk10 + uqZsNtGpWz1+HNwmuN2gKcqVOR7oDm5F4GxrokGmDZpzKvU2inT5GQK0Xi+WKb85DTe+TjkC0k3S + I5p0WFBWCfcK08egw1ijpb6WTkvpFbN/SRkroJ1uDebPPCuj/hjCuB9VwoitWmiMCQv9EkSy7hGu + Xa31NtvP89v7Nbpla2e3gphQ9DEInCj65+gY3iQl+74cyqykpQczyWXOfix2NpxsUs/GqhxrxBm5 + wlRgFNbMmNNWnQZ7IS47MSZ74d/XMgebwKOaP46MovWtm9NKncBzi2+2nXNLQo+kklFLXS1kLvgB + 3k4oTfEmNEZkN1AByVB31qwXMmKkelBFI9oM3SGA8MrQt0PbVdNtMTpSHiDxr1ZnSOgjhWEs73jb + r4PK15wLHNTm/Mg1wMQq8F9NELsPHGqu1N7QYYeWxyZ2sVXGDgow7jOvIxpX8ZE9GLdopATGTU9F + AiVfhumGF+sVqL1a+BtWjDVpIdp2wJI+aNutiags/H9bgXPi+l6HaH/+uiXOCadcwTnBp6SBnJ6+ + qtqfkyCuRPuzKIiiCYuDMCzhbkKTy6kshcxrPXPwIdxGPKjLdK6fP8NwovttjgAxWHW2+XOzqAHH + uCCwM/TvU5JkgZfPtYPTdF41MA/myGgZaC20VOwHpplWD+8LgDuEVVwpqpXdXLc7Zocojh5+YYpw + Pi2CjctrsMfH99kOo92ydAkLlxILMjDtOAN6VNtnBMeAl+v7bYwHQgpyLOaRu7+NZQSiw9Nqw4TS + 1fS0WkGw2wWZhFUEzx10so6TNAFSDAEEODhKHhM1GM7OAj9+5rhduL76xo7pF01oPF89JCb3fXct + bCbwL+w4z1Cj/8kex7LHcGydZ07crcvyI9s+q0aMTsun1Fd5L88XWMUecbUWGILJYyFLq0Qg9KO2 + L8zoe60HiHnhBYGEGjdEgk3GwY05tu749cV4uYeZq24F63qdjk+W9tcXU1Ult1DjLAqoW8X4O4xi + WwguvF/8iIO1DPlFv5rnsnDDBnWC/dK6BGg3Eoe6kzTTah5jB4z1fg0c6HX/6gJ/KdR3LwpC/WDV + ndABsjN4utAfHy9Y3MGiTa9byZOCckmepKfCov2lGqDixaV4Bj94Pg1d1w2cSeh6CpwUfRTBf02h + fU0VmZgo3SqvT+qAPKSxyKwhI/FuWYNi0hlvHZY+cZLjjbsGHc3wmi/vNdhrGHmtQmjCuAdN4QRm + K0qibHX8J83iqSA2On5NRrglpETlRwmJUB7ZoMh5DGe7jwedqveUS2vZH8rHmQv2AMhuHgvo3jWm + W+Tsdfdy4i7kzMxuA9s5CI+kOQxS+k8JI3QdKWp6HgqpnQRN+sRWzBQNGEImPZO2ENPuUbWDKBog + JsYxE9BovdDMOtWGGV4gkJK+y6RJKorCZyzqZJCiT2zNUaIBwxhFz6qgduU4Hl1eL/9NQddt1lGl + SpxoFItPscgfDRay1C3d7QGTcbvllKnPOmXRyr3iSgOd1wErjl63NdB5Vaw4eioCRL+clwUqliRR + NdvVdyOHTXy4WGOhP5IrZ3e/yRGetKhQWWfwFQGau/UQgtOBQjWyR/UGcEPeidyyC99IkkWjRVTO + kT3a6SryxmQrURAkIQYunneZUF6d3GwX9kw6vtrk6XwM6sMNLzWoqgVx5+a3xbcczVaz5Z5fUG/W + G29d1KmZV+rUKGgLPXNihHumwPyNk1EPr9/hE3UcxQM1RRiXBvrSOaog3i8B0YWdTvIPjbduR/XN + pIAzpC9T++mzE9aOI/ngVW2OF9UKQom2LL0GJq8ST3nC4tfMfeaEHV1h8itrX5hqxnSGycd0SSzR + lJ7fkfv4GpjZVypKKN1+unRxlS1uijJrAjp2tPy2ZeQji5gAzh2woKAylbuUFm4Uu3rXV+44fMY7 + 2M2oiPTxhRg7SShSKPNcz6gx1V2bi11i4/+Ga2eMW78f9k3g6Cclh6sA65G0lfOytWq5FKd5+sEJ + OmCO0Ot2afxEuZzGz58KL+nZZVUIc8OgksXvB4njTPzYDUSOzrlYF7jqpdNRCkQgtWyyDH5f7nPY + 1jN0TMplfPL2zfnJ9HpPDh/xsLlcHcoO6XiNhHnVGOkhogSvdAkjecAChI8gwUt5E9+cvtLLj7ww + 4cL26136lctd+B5HTK+1d5tBZAUAkQZpMnrzoYAQgx4JISuI9NOI1d27ZXUcV4YHMXt5zEk9flKb + wtZUDSeIyYlhTOzhz4+SwP4SnpfH75VggUuqtFrbIysCSYZNCOsfLly/A8Om160YtqBcYtj0VDDs + i79X3RD8bOhuCP/509D1XSeYhG7guJ7Jsg3OwQ/Rt0V6tVjyqSDOutxAkw+YOisi+9RNKe9Sg606 + ftxkxvfDxAkqPoEhEml91/OOhe4dDVoAtH8lS7ltQ1Haz2HO2fS0Q3E/+sCyvJ+gXinwR89lgYCz + yvZ1ubptlvibwn2TJGzig+wYCdDydySXS9wVJOWqsGsMb07vQNxfpCu5u6hql4Zh8WwsjwAi1d8h + G8BjjscgQxVhgRu68rFkE0UpgVnVltTUZEkEiRtFkNgPfb+Sw9BTAjEyFxIXRLpy0Smjv1mjJ803 + UdJ1wCG9w8eSJUA33QIWh6HnJUkFbadxnp/Afjip5M4WXyhWQzo27YOtqDlfGKDqL8Mnry+A9u3R + GxD9DsqA5UWRrKOsRzvXzF03ftGDXktUeA9qLQYMH5i6IUjS/PNaEDkG4th0bTS8IBRVhtgZSKc7 + lZ8unaGjieqjLWabHrB3j0O6A8WenL5VFt3xXowKEFrH7RgaV3xkD0MrGinh0NLT+sIcwhCPQxOI + 07rd6uDbo7vdNbdhgYjIhFQSFB6zu3yO7/eBsQrdkO8ExBTeZIia1YvKIPURKHW6Bd55QmD4qkBQ + 1waSmk6q/KYC1qkZOtvWePdrQa+CMg0sx5XyTd1vRA4jJAW+2Z6kMPfoXfoUTj6F05PpfNEFCvNh + Ea4RQrbo6mD9iiMym1xOcfD59n6JpBc8S0bbj13aszYuxpK5eW/DZ07SjbeJb2xZm2zC4GziITE2 + DoMP4zdqAlJ0L7Q62m2y23SZbzMVFaNVM/yy3roG39vBA87VQLil5JUkEWmDgoxlcU17E3bPBtp3 + x5HVSh9vqNdwsN/FAvhcm+Z1aCdUjbZ10yi94PdX51MsUws84aQvH3NJtLtLb9DICPJXb3fCgEVF + YycwtqRlQJn1nu/bwMPGmklFIowjdXiWPdZDsslE4L6zOOxSlwZft8R955QruO/4VJj0vlRtIo6X + uJVMtdhz48CdxF7gx0E79N18A/Rnf2nPiLLYucAbRr8yMCIukFvqdaq6CCxPBEuenr9kEXquWadk + Iv0zy1tab0i/qLXnohqGIQHO0g1QA1XCeKrZ0cu0PS9kXuJRgN6Rbp8wrgi2euP9uVsQiGLcDe6B + Llfwr5bbqeKtOUUluO8jJJ9e5P8EVoTAZYGxNVs9Qvbz5ROcdC/pwAUGH7XsytYutl1zHhOeK9/r + cM3R65aeK0654rnCp3TNvT77iE65kuvKD+Oy62qKddd8Fk0Y/O76rA4Uat0cfSCuwNezO895/Bdg + Qw0gjH7UnNomVo9vdlZDqfG8AG6jMkpNy2SN+Koo35fvxiPRBL8RLQsUHUAu6UZsUId7v5td3dGu + TGhwvZdh53Rf+ZFtUoNqxEhrkE9VWJsFyINGC9MbEhaMKBf613NeObWEUPz2wok7FFCm1+0w6ohy + GaOOPyWG9PHiHFHHSxh1gcsqGHWhHzE3mIR+DPyJ1uGjcR0K0c88a9z5hHhvykdEnOnjZs28A8VA + 6LuCrKRgcq3Qa+JaLugPQVCtBnJ8Kzpwl+8HXhhXfPvF9TjLV9vdYrfnoEnXhYRs1C+OvEZsNL2B + /shgNRRHfdZvxHeMct95DMtheGiHahBRa0K7ixKBj0J0DGu63rQr7Lp1UBk6VGgwkZ9T4ET/+E/c + WPi6xX60Gtox9Foq43oUBfq3D8Bs7DkhvW7FCQXlEiekpyK3+ex1NSoj9k1G6HvPpz5LoiSe+Ah4 + LQrPzWAyFmhfg3292zXUPzqbZdWQiVaNolT+qInRQSc9Vs1Axi7Ms/zHfT2aaglyvKkQnkFcsR/y + eME4QMKvSbnxWBPOIXM50IpbZj7tMzhRwQzv8uVyMYf9+C8xzi1GrtzBFpvvNxTcrvdKwAIW7UDH + R7jSCgTGT/yR6LJ0npgkfjtYRPyX6a8VhOkhTbR/6aohfMdLWi2HxI7dP6aklqFswh6FeZ5dwHnt + Ei8nP7Diyop6iS/L5yJJ8mMpSTKKvYShQqWLqAHozKGb+M6EhZ4Tihzoj7BMwimejbn6kxYH6t2T + pyfT0y/nWork3bqGR9fwY65FNAmeAchDcVXuLDdvsPc4bir6YJDT2TtP8D9U2Nz1muBcY8RpCMpl + 4UQIQ2EDNBh7XIKbffu+TG10SdIibLhlNi1qM61TkeqQLxfrxZwyKK8VE08xe7IGSVaIoG0rd36X + svWEXwNoOF+AHji+zZaw6TiKLM9U+ZZxSFCMs9LAK2Dfz3OM+qfeIO4sMnkE/BJRJLyG6Rb0PAR5 + LTLgFvP7JSENbke4O1WmQMgSYfF1hX/LnMyuhl9bMk0BYrCrOGcqTZ+lFGv58ZF2zpq2H4OOLg4P + XRJNR+2g4UZy01CkmjtJ0CXVHF+3TDXnlCup5vhUctEvVQ8bc6JKqjkIEU6QTNw4CSR2zxcRr7AF + 0QJmaItzsV3M99B5WkJ03N/eL9UByaavpvJV7ThVUVIVnQIwmudKc70zm20yzg3W6e72e3r/Aiee + /1kqQhxD8Pxu564VA99VGfiB8MFSdHITxHoMIpEfVTR9OfbC/y5HPpUCAf1uUTbaZ2Hyz+ZcdaMH + imN/ni4Xq6+wAWV4SV0OfFJWHurojmRk+OdpTZcnKmyl7zZoxMqVZIoFTmuWGLSAFLHqtrssnStW + p17w1vghVz1BJZ3zmphAkYJreXz7KvsOJ3y3oPwpZN1fikx6N6CUBz/xdGFOy3tvmGgrZjoA2Rbf + 2+POh+pA9CA48uO4GVA/ol60neyOGgmcffzkWH5itR0frLGfkf3vF970o/oDpDRHY4lUwe24WUGF + 7t1s8v3aNlpM3v48xvqPTx9AlLe3btHrVre/oFy6/ekp3f5v33+smPl9hiq+bt0Kn089PwjDZOL5 + oRPEMmUuo1RXJZX7L8ZrmZOrJYSoP1P1t28cNEJ+PEGefpuuM5gkikzbLEQx6C0MTHy7Fff428Vd + 1T3Q2XGZ+KHnRdWqgapTdRlKoEWWygUWCT8DEbzU6uaBlCkTk7Ta3zAbS+2E6NSC0GusOqh3TwkI + kpjMVzYdqS4r6Yd6BpIkWM5Aus3gXOa32Y/0Du7yGYy6WNrqXFA+EtXlMzQrYL4iABJpCAoL8vwW + woa4wYt0pXy82I1wR8vLO3CSqFOG9gFnLd0Rct7kMFRtiQd01/K9QkMoz2JH3mZPp47bjsRG0+eh + kV3XjCNgTszb36+w+Wx+mOm3ctBYcFA36oB9Sq9bclBOucJB8amIUPxQgepyfSdIKhyUeUHiJRPm + RSGmhyAHfZlucVSFzKcFs5hA5gWGASn9xmeSOZ4ua6xUnaxLOhhoGPhOXIntuGrpcj0gfsCiZpBU + vZEi8LGxDZNw7DSVb1WER6ebmwXXJQx8CA1YfYH49Zs7zne+ZbD4y/w7ZzQLbvmBgfMCpN/RElTo + D+Pv+X6JKzPfzyiNkjMvOOwF6RFuDcWKXOYPE/RHKYe1s9ONFeD84Sct033ItfA4xG7cYqxuUoYI + ElOzBdu4ebY6tqRPo2RliYSKYuHboHPRFPmRLVCUasTAiZJPibVt1luBjuA7lzVxAJfeqPEP+C1H + mY/gCh45ltWrrCMJrai1JIZQkR4s31rUc+motPTK1DgqAoDJukTWUQjt8ZQgC2gjQDOcLV177P9B + YxaOrWp6TJSC9dY8ppE2Wcd3JIMIwjfuMyfqxiDkR7YMQjViMAj5lNjC6empzFMjp8uo8mSiwiqv + zHowZiMcSs7jnOIQ5OwqX00Pet5/XhLWz4czsQ+37g2Oou7nmLzPwqV2fAg4XNQE8klTtYWpKsHM + 9wzi9pnKVw+9pGM4avGRdb66bMTMVxdP6frcbb4KP8ka+rpVgRe1IsKT84/vX6Hc6iYsDk5GzZ98 + AbIjpE3JJHEwUDIJrcvP8UseIkM28fopqFJrQ+joSqs9As9xVLg2FxlMsrfArHLgRIJRHTRa+65H + 8ImlgqVSlgTqIkr9oGVBURT+BB0xc77Z24PR+R4jW4lOQSzoVpW7aufBUtcfLI3ocagZTuyp9FS1 + iwZVMRyCBKjZrAebOewhOYZ6lzOSEOSE2Uwv647vSp4evGPOM4d1YuniG1uOLpswGLp4KKI58Ths + vmk2qyeE681tl9CR+QJOyOJqj0M4Gb36/Q3z/UCKQzIhQW8L4fpjTDE5BhffJsgQTVfZd4xxAam7 + popfL8FHrhJlK/z3B9eJ7W1w9LodehpRLmOn8ad00376vQY5DZTPKnKawxJ/4jMWezIO7F9wVszw + yiK6FIsbgraBQslqzmNA0VU55b9lP4RCYySqL9BZfUtRSwgMLGpXa9H0ZhApt9t92teApg0RAey5 + CBVW8SIMEwHcRPxHB9rlqIYDtG1o+lb9NSKWZQm6ct1Nz4k707KPfjZC7uIojr2aKk5NXYONfKBr + owfb2kZV9oadPRmn63xdFG3XMHR5SA+QXi9hPPcjPLsF6psvoq4dHhmsL04LAEhtYEVb4LaVJMQn + Wdob+vYiETXS1WTYS3JdCq8c4O8Pfb08rvTt+t48lkzt/w3I/2UB+b4wRrZfUZakCkNuPxKDRfZ7 + DvMD2k2rG9iHQKj3bhoqS8AXeVsXTuB2yNvir9vlbRHlct4WfyozWC/LNc5dN3GCSt5W4CEG7CTw + 4MYI6xJYF5uSBUYEO9RCgUhx/8nHszcnE/IoCisYap14F0p5hrscYTr3qzneADxe8eNmi/EtRQA8 + /BGILvPvU94NPYLxDvZSoUwj1M1GqKYUKjmnN3lcxEYJm9BCtVq6yaRLUTRNQhqLHM/1wrKQJiei + Vj4LvGaPcz053vVGs1mJdjlmpUgvSxzX88qOZrzZt4jPWA5/ib3YlNW0hAY3cKuiX7WXpQQJN+zW + tcZEC+fA9I3+kpt3hMdZJedFIYEDH1UMVDMRHmU5xb0ixUS1mTrYKLFuiFMjm1R3VLs6/mcV1/4M + cDjAWfjrxpocWTdBzVovUBx50VI63psPsI/sE0jodauLVlAuXbT0lC7av385c42LFm5VFnNRUs8g + iZ8/ZfDcCSbM891EVspR4IQS6HF796KEJgsKj0zV4xgB5+8+j7f3210mKz//fTdzK1eaKkTVYDRp + Dkpisev5rGJ8GArVplTYp2ooAH7UlJvHEHgwTqISSVmGikoHTbh5Pt3vcpjZG9g1GnHfZX6Z+ERH + rpeDH/29Mn+y43pcmpplrtGrxYRtuL8TLo0Xjel8eBcpAu+eTsteRrxvqvXE8KKQQaVbs2ZP7dQi + ldKEKKI0YSPcwupyiROna0GzOoaKq8jt4HV9smUOLHTJlc1ByeUI7BQMvtTFCBp3x8G+0M1yoODZ + gYshMueyq/Ju/fmhfJMjaww9gvtIan2esA+1H5CO0b3yVgllqEnsOB3BF9U3toEmsgkjzkQ8pEti + f7X4nz2Ig6uyL6XpDyroxGgAY0xiR0ajhcbpNNDe/xdpuNHXEylgTtd/5XWsZ6l9ZQ3LqZoxUTnl + Y9ogtzrSq9wc6H+L/KTG/6ZRRYAi+P9jPHB/wlVUUfN+t6h53z5q3q+Nmvdl1Pyn04uaqPm4Jmo+ + iQOHTViSJJGwzpyp+lpCly0CGFFAn273y+v9ZvzkTXZ5UiRWyiSNuxS2K2gk9xOz1tddiiFLMgaj + IMnFhz0FgQNFlW7yQmY45XueenK7v0tX40/p5nr85JN4f73JlhgpPD4dX2Sz/GZFOu0bXn/iRHr/ + 0k1N+e2hiolxlYWbGEEDbXKbsTBpLifmBCBHVGP0+4MTy9lJN7ASuwxDxTDVl+R7Mb0vxrNHvsoj + 3MIqup/FPo9Tcd1QKoqyh7Plfss1w25pQn8etmIvG1XsFYGjpusXGq0FnYAFXuPq9abI59HnNCfw + 8yiygn8HMhL4/CVzXsXdAmOKjywFtKIRXUJTTwUsdo0tZDRDJb2Ue2PUqjCoYzCMlyRDRDP6rqhf + Wu1BldAvQcX+CygiI66ESD6hz3NHw5ht1ZaAcJpfXsA/7W1d9LqV2CIol8QWeipKNP7jVTldmiVh + UEJF9Z8/BQbqhcEkiD1PgqWUUmXPPn88P728lAqarM5H5W7gKtyObxfbHapw77wxLByB2wIH4blp + 2+JaW6xMexmfuiVMKPKVFV5ou2yZ38GIZJ7g5fd5NYm61B/DaBSz2BQPDIORAwfDq6Q+y9t0dgtL + lKKOZsgFUdIUDMMY8HPMZS77lRShuoKoXhi7HQnK+RUz+2naUmroyTtv+jdfZSmfmDY10DAbjYmR + 7yZJBU1LjaVYqnSnFqoUN1SSzZpGpqjLgcm9VDIwsjCImqKHVH9HrxVE9rZ+4z65zHbs7OSnbuAX + 43+88p3xFZxcFNHWICUDa9nu19lGqHnIe5DbQBvAd24lBEFRfvIfry6CEZ5jBc7lRRycyxHpRWoR + 9Jgla2s+rhbniAdW2JYgiBAhJ1hMJm5EfWkPillORO4L3iceTDSRHeEXz00PV89x4inoG2aHOt7v + yJDwE74FfyuzLjtblzMM8Ag//foC9WIndgbdB2mpAZoscAno8YPjRva3Lb1uB/JIlMsQj/wp3bZv + fr80jQTM8UDjDb0ywuPTCG4hbxJ5nqyI8LHstBDm90wVs93e3uXwr8W6pCFyKH4ylRt54oYLip/s + G5wz3MCr7AXnRvmWyM/yfDPHcENZYBfenSjzO6EPomQjnAHZN2C0W7MXsgNFCsjZfObGa2TGICMh + abrL3+y3R+b8F8zfDRPkFZWrXE2VSShpLgzhepEfV9HPBysMka/+tb+h2eORByohh+atJGo01oQA + 4cxzHAQd/stvlxEeJnXlBZ47ElPD+fCh+bS9rTzMR8O3SwVHMywxVyQ4ienY5P/KaBfcbPLv0Kyd + ZeQI8MpHoDZJZu6B8sR7UpkMPGgWppMjri7J4r0iZ/IUM1LcjjmT9JF9zqRopJQzSU8FouTF6/9f + UZ5QL2tphATMcn7BcScy6FWsZFXQ2nID3/VEJcw/Q0Vd2GEh32ISoLatJaAL79DfOOVS0eP371vq + 7lZ21M/zfvBs/qPL0noh1R6e5/urZTZFPrdCRKFWirXFC8JEVCfn4MRHEIoo27R5s3aLMj6GXrsA + fkzMUeArpJIo6uoDLD6yRiqRjZhIJeIpsY10OctB1xvPM93VoTOFw28YbaGvmHmCbTiU3a8uRUmr + vTZtUc1E8Q6H0n0xFrBwQkAX4L0tOicEPdSdeR4OvFYX7PGghXPlTQ58zjdGrScEF5nAJYqFALRO + d8B2lCU8YIyTy38s5tQOBo/OOnDgX4LsMFxFWocgZ+r34a+urefEbsR56b8Xq1l/DwoLfdrhuMo5 + LXB/SIcglBXGWMKSZxi50aHAmPjGtr6YbMIoLyYeEo8pVxKrqywmqSDwkcfi/6ywgoDgTF9jkQZ7 + iwG9bmUxEJRLFgN6ShaDP06/uBUw8zgslQuOnj91QZBP2MR1/ESWhPgCWt4fKUKGKzzq2/z71gB3 + E87ge9KSUC8k7XWWblASW+FWz3YlU8x2m88WXBVUX+V74I1TM05a6hET7AVWLsArIF1u83L8ZEtj + z2SNYxzHg9V3LDrweVoz3tq8XCdpNs97boIA56aOX75kyxmwcCmXMjQmh4kWPW8gm/hek7FAkRyd + NS8AZchq3BkuS7GcZB5fHFjB2u1ibhS+edR2GeGeV4p97IZHiCyH0FRwdug2LE9jC70ha1Z2vb5x + 25kdbt2xtmYOJ/ZFXu9sCADsIbCrJQ+OZXmeJLAP7aLXbUvzIOVqYR54KgqmvToLyrVsWZJ4caUu + jxvHLAyxogSPZW2r2T7bQAN/7ZrtZ1r5GXkDGUa+TYbZRUpveLlBv8kdSEMY0b7Y7HnilLEwBtO5 + y+fZUiZOXHNxcj+/p9poBmFpeRCKMDcqcPqZLMGx2IxXKQmit/l2tx19PjtV2VmY9N6n5PxgVi0F + pOkGL91nTtBJOxXf2CqnsglDNxUP6TjcLSSIJszjVA5IRqNuSqlrcuAf4asRfkrIeL4vDFgUtVz+ + 6jcrsKl2QIEDkHq/RIZ11Nf5sgNkwaHPHi96ZQeQyb5YmOKUhI60/YZvk2fM6waXJ76xtfzKJgzD + r3hYr1xd5Xt4sOPVu1RQPp/5l/+zY6Mr/A8GjCWRNxJVuRMp8ADDmXVOUYk4ZLfhkpb1vbobiSNG + YaB32aIe9OPA155AhZst8JBz3WCR77ivvheSSbdcpGYB0HOEAJhuZzkGdmXaAtn2xnMZOVHS3S6d + 3d7JEF8VpMQLQ8GeXiICHvznKp9bZjwFTPhUxHTZLmYTBkvAfKbTU9EbInyz9tQ1BnJ4BCfDt+h8 + gTd0J9tXvyiOOhb5K+JBHuB+ODKIBLQJxk9pv83WXRkZItrEc8LIryEyGV9tFvObrrJSqFBTvbOo + I6Sw+sb2FpBNGLeAeCjM+AKsf7oTAg4foq4VGSb9Tm/rPUCnYOIzIVMlfBk5kVp11grs0gkDAlBV + OWmaB1BJDYdRpNr1xCCJ9cXnM9AYBmaNyduN7J8sCc7egP6zfQsg19NlStNtp/xbD6cX9XYfwWM1 + eoQUqvbxgsWRvdGDXrcyegjKJaMHPSUt793lWVyxPHuVMvHB8yns9zCOJ6EHh85rN3rcbaCBGqPH + ULlhj8DoMZJWAz+i1I9HEKEj/RmhJ/wZLOxQno1et/RncMoVfwY+pW11cfqqAmLFHMbK/oxpAJJB + lEzgRxRF7bsq2wD9wU1p5ch/YOUGndBrxNt4vCY5tTudJAyOAuntZAiT+49A1D5fwIrb+9Podav9 + JyiX9h89lfvvspqmG0YlELXo+VMQbV3fnwQsZJHgasDQuUSRT/PVjFuaVE1A2okX6XChqx6oV9By + eQ+9LSGKGBkjidsEswKjjEDQLm2kt6r2pRammcLHPN2BWx1UYyKoj+oTm5X1WNyIehsnzKmAu8Aa + jM2G6cqU0RMGcTcMGsoU1xPnyij8tlxcy5AU4w5xY+/AHI3EHOs4LDUzJSzHVvM1wV1wr2MoV7v5 + ohqiW9o6L/QSlEX+h5zOYltuR7jNVSpv6PKagaCuu2SFEcbxbxl1I63XsppsL7je+Hb/3WPFY2Dl + OWOiEj5iTe5A++GexLp909Eo5VLdsQtxqpt2428Wpmi+rZQpxNx9B+d1uPpN/cOI7T9+MATZoSrO + IBfk2/NQhZdG+LIBrBpYqSYQvehpzg5UKLP7lrmdDdrqK+tgZtWMGc0sH9P9OVvMmfBsvjJDc+Hs + 3KUjfPDk9ET/wxl+MuIfigIv0vczBNhh5Dgl70i+uUlXXXGpfr69vbkjoQDIasDXPtALsiHi19xg + XAxHWgUVbMPsNpt9XeeLuojuZpM5HPKIAsYtYcTbSVGc8iq3JGZvAnKiWFnBBiTsMeYWw/f+a5qt + 5q27twUn0xHsslwtp8HH0kLJC4WPcCYD5uVFjC/N99ywX3qsmfPoswFnCTukoObL3bG5UdFTQRtZ + eCpgRggHbMOzUOe9DtdRLgtFIwrC1p7NYBgbcqtss3XaTQ74k3ilPeaTlfnLxenH82bvcZ1Ty3M9 + w+Jv9fEw9RL9kGLJcUtqkgbtzmNjqAYh/tAWxoIUFU9SHT2qg1Jo4QHOf3y4ANXZ3sBEr1sp+IJy + ScGnpwIl/bRavRoUu1LlHP/5NHThJDuT0A09z5OYL7vbRc6LK/NyuOtsDROD0yGQxtN1DbCVglxS + cShPttlqux+/3n+F3qcnJZXfa4ZWSMIYdImK3Yi6db8s96o+MNVtxjdnMbQRuHX4rTnVTeLJmbwB + 8cAIUQ0a68co0qOPTZM4ETkH/0aPOMJf5VqtW15u5S7/htGg1+NPU5FguRxra8K33yrdzrgHCuFZ + OWkEUVAGNegxcFxMGK2iee+w4jVQh2V01yPcKMpWCxxpJAaoOFMuK0lZsGCrDw/kK7BC/pxnaV3y + qGXRqySJS0X9usI/YiXdUBr4Spv7IJf2GQl1TZu167x4VO9wAEJUVAIxtZZ59mOIvg2TYzJQ3YzB + YMMQkJmvfn6VLnf9CaFuFmpzbr0jaqqJh5HKnXGD5JkTdFGHi4+ss2dkI2b6jHgqdOH8RyIK6d1j + ODsPX51RQhgqxAJl5u/v36cjizeAGk+zceKQ68eJE/LdlWab/IqHsYAG1yRM2grmWDGEgiYFtRxG + LtdQg/6CGV10FYyHgRNT1IbKr/trFRBAkmGVpL6cPdYOqAbMhqqU1d///Sjd/Jd7RPk9VYQ30NGc + FkdziHiFfvRblylxKFlfndhKbZqOUzlkemMYK5NlwMEK4m4WS/GRtcFSNmLaK8VTYtGwZZlMqF7f + plMcGMiSo9Jv8BYPoYodcoo6osodLt3XBY8onyCmyI6bXZbZmNtTekSKYmo+5+nYMklXX2FKd2j5 + 6WO2DJjDooLgNWxBbkSBewVNfUYPD8TDx0LiK4/SQisnTZK6oAkKh90mjZ924VyBQ8csXc6OKjxn + F4nYPCh5CpICgySOnrGka912+sgeg0Q0UsIgoae094Fh7TmWJSZscEHeUPZHh/5utIPnhHmeAJ0n + 4zuFGuqI8x0FaYeE/N1RroA4pPBXHE7OgcSuFjCUFcWMHG/U7N3AwAGGXcPyhlFTnNinw3pgtwxx + dR7f1M8zo1FQYh2piXrKGenN8n6GA0BsqP26o31gqDqGkcqSYdHbsPMVTd9Y8ybRhMma6CHdz6AM + iuAuvjmvYTzZRuWSrTeZKM/yGwILb/M7GPqbP/7+erzLsL4ajr4IGTxHWnqANBLn7Mp3BbuKE35+ + 3+bLmwVKjbL4ywBgyk4oFKtvIC2gu22ez75iB4XzJfuR8wNbZxjq0kaot9EEZnaQ4GAxBz3TniPy + UtJCpGvuJDnE/4ZjZZ7rUrCBrO+E1u/FCrNEgZ9606Ls09F5bYOdWyZzQL3A74iPLj6xzQAVDRgJ + oPSMzuzNbi1kai24YaQHOkgB6i28OcLXec6n56iqJEdvvIC5scIDsMOXGyzA5OjQjoiiu99+YCyx + D4Ok1628JIJyyUtCT2kNT1+eVbwkzGNmtRIvef7UjX3fx4z2IAlkhbu6VG5KElkhiOuTWZ6t/g09 + HP+fk0JA4iqUSN5ejeG0rAzIZEoHL6wNhJ9YBz4BmwvdKvmuyCrfGrF6WbpZ3sOhzOCOza/1numd + ES6d06tZ1aXTr3gscyNQG6tgox2oaUVKQh+EoAfDG22aFMPbE1UK61XGOuq9GbinqWnVsx+3i6vF + blsb8sB9OWef/08yGW/3NzfZlscWpigJ3MGf5cS80Au9DrRpRnhupNPIc2IeV4nzhAyg7ptWtaDJ + j9zJ8NsARvJrjZ5BmQY68lLOsQ7y6SEQEyJKdPh04Xgd8mfodbt6UES5XA+KPxWB5pcfkZ2WIs29 + MKgUhAqTAO6zCfzw3Npy3cL1VlQCk8D1FBorvAiTGl75GvqXLxfjS+hKlYoIWt/esaSNBaJYwxsq + KEjHhcnMQq+FNcZRWClAqglOs3wF53i3F7nTyttoxLdHXmDVgunZ5nuoicf5zD1EcvRTVmPEN4yK + 2fZcKgjtM1epl53yF5WoG9R5IJroFRCPA2oIv5YXhTXDb9rPVjymsMOQFaHZM95qOQgS8kdb96Xd + djkosIfo2eHj2W0xjiHcxu19adOIXe8Z6wKPIz+xtWiIBgyDBj0T9ox1yiT+B6j92e52k1HwilwO + qVvybG70h29OQEhSYJxi9U9G/E9jovJbO5lzaHSELXNjB+wEYZslVVnlQCPFcToD1jbP6HMQuZp4 + ygOGSR8V3swoaWOA9A+P3Kil2Ntq2LTt1BwNh9HJGMwdmBH5QcVi1m0N3ap52B3TkWA3J80AdfEG + i5SBlfIpGChd3aSrDLO9+nZqMAsPFb7//AGWwV5mpdftkiOJcjk5kj8l7vX28p2Z8p1EQeAFSTk5 + cur6LGTuxPXdCOdRtwqg8iQ00kITu9lkGfy+3Oegy8x0AIknb9+cn0yFHbNcq2IrE+EK8yIysvEa + CaN5TkEyUyJwvoSx/LUx9VQCb+CLws+9TbBHgUM8hhgOeXAo6Pj8wnE7IETS61YHR1AuHRx6KhAi + zz5UzGmBG5sovX4Muh7zvMidhLDDAhF0nKmyZKr6SimBkG/us9myaqgyYfSveRXe8Zc379+/q6t6 + BzdM1JRMm4AU5cXVEnVwBdYCv3xdcJhvcXvquP1mXTYv7tYgIckva+o+1I61vlU3YDatqvO44nkk + BypT8I14ni/1GhQTJTAYOcvwfw3tY70nYJpeqQPtNTBKjZZq6YVRa1txiECcuIoVIN7SWv5tsXJj + HdYXOS/fTFPty1m6ucp/3BcB2vMcy8qNn5x9eXUiSemWtcaxpbuW6h7bEZ4pyexAD03+LPVO+JJU + O9mtsMlhWW0AQZz0A/vN39zl4hy09n0keBAX4eAKLLEqq3H3sCcMBVXGGQt+0ZdJ2QyQ80y6mDuz + 3lb68raMFEzmS0zsDbvBZNI31jCZogkTJpMeCjDZbC+NnmgKyDbINeA6uNEsY41/4B+j0uu5CeUU + H8apbKrncfjTZjyEPtiY3TU+uYAEiP3fF8zvAOJDr1uJO4JySdyhp7Ro5x+/VEB83NAp5Vi5aNqO + QVWYRA6Zp3hRAhESs0Xda5XzjbxdzPfQeRoyZpvc3i+V1plNX03lqxxIk+o+Vk0jig4vQaN8PGSb + zWabjLuYFAYFl6rO73Z+RaqqL2Jt6g4mioh268YJi32ZYlXINXJYRWyBHJRC0aDfbUoPIGa/6Zib + aK7DOIgDj8UlEePzFLjJV9hYMgypio0S+kkZG6WOrvL5fZ7WdLkIeuq7wgqMo2mBX2DESJZuuHqI + Ia4cF2W+uMM24cNvi285dy/Oc2gTDpy6YbjYgxhSmzGsvNolL8ZwBG4InBfuw+/w8W5BvGY7ws2u + XH6JQ3liMFMNtrWGee4oQhxPv94v2KlK+wHD+gFaNlc5AcnUk/i5ECRD6qXCOyzsS81nutuE46nH + T47lJI+k1Ybb9E8Zm+nGhKyEfJPQ6Y5yXqsActd9DaJSp2Cv4iNbGU01Yghp8ild2kABmXMRF6cC + JoGTmkUtLV80Wkbc85iFIkaTFevfPW3MiUPyd3I9Fe3ERi+6ERsoo41Yb4+Ix8fF0wKPtJ/t/ibd + PJfF3sbb+zuxvv2OqevG2jGtTnIr4YNhmOJMxY4Mn/RfYiRjtwKP4hvbAErZhBFBKR7SeVoD60Mx + hJdIFvrcExC1TkbX+zu8Mq/hxl+isFrzXqnCo2wNQyxjxvOX0LcsEnhF8NXpwKkQ/Vv4yWDL9mDJ + /7mwzYNFxvoBMbm6bTtEQmUv8odieTnJ086xvIq5Cq/vUf0YEDo6ZgKChUVuFwgWfN0SgoVTrkCw + 4FMyD7w6fxdUIVgcVoFgCRzmhu4kgPspFKByiB5iipBGZOl8sb7d3QJznGel0GJU80xXyrdFerVY + wgQO6X8ks8Gr9W3wcG5GGiRqvHx8bXaAJghiD4TSKCpjoxL0AgjxTdMoZFP52u1iC/9YmKC1LGJx + U6CfbHZ0YBmLBvNrfU3L5b0W1wv4ouiGsAAo+7RQfrNlvhJIYMLk6o6fvL7esTXyFPiHuz550b5D + YBtM+aqOrffCCPe5QpBhocsTVIYpVswnmfO61iXTb9qmpbOSMB+wuV81zCGrNPa8kUfikHIFuuVQ + W3WiF6FDun13is0VmcJYbPzbx5KkKa9Eyrd59YF5zj+mp9aXovzA6lpU1EsXo3xOV+PllzeVQAGE + IjbzbsLnT103gcMxgR++J5TwUwK03e440/o3RyAgbkeX0uXuugZ9HIGhebUX0qbwKxR21EpL02gr + ZlkUNJm7mRN7MQjPA4XKNFJWd5jqPL8+Zvkeej8Xw9Q0c/3CChITZb2uEWXU1l3XJY9opW7tG/bG + meqz+WLMF4Ebn+Ff7np8Bwc45Ue5ZuG2BEmWrW5T7NdixbNe0Esh/I6i1ferW6aKOI9wD8lrJwLB + aoRR3qDhchG+3pl7eggLubb2WNJKU9MW+l52jyNXpSY+3PrU/HbI3e0L44bQktUS92VlnioFysJn + jtutEij/xLoQKDVg1gHlz6S7dgEnb4o/xk+oxNqJYZyY4cTNOD4dzOxG41dckr9f8bKgs3Xw26f9 + HRvdwb+4ESNirqiA+IgKGJJKDeufrsXndkW0hitUmJCzBFrZwmrBpPMDCGt8l3+TTdrd1XDlUBS1 + WiHlZ1IrZUtr6AqFCGhD9BYz6NT+ao/I1ctFvWbeU8Zr5wiJiL/ggTVogLSDtcUVYsas6kMwoH4O + 7p4RouT6iRGxQmtzeA4kp/ALTvEKEZE6AeZpX9nzC9lMiWWIxyQA7WdrTyWPl8tDSJ1cYyLNb/2O + lPRXt/nMJQbiJBLuQfDe+QDYC/0TBlpOtesxt0r09OLN4fIFzb5HkVh0JaDBtqAs1bl3j8aWURvf + 11GcCqaS7mY1IKa2E94jxT8WibPl+atESfWFpelH/ydgiHpokOfcIl/eq4KNncC4QM8gn3Xt5z3d + LoFCrWBvgA2wjkxIfWWNXaGaMeEr5GOBCrdbM5G2QAI8rmQGF/sSJlRkYI2a/8I/55wGw1IpBTzQ + zMi93SByTxzrA4XvyeFnqETd1G9UmuSQLPStrsQTV95t/cmgrbEGCrNvj61AcxyXwlf76QsSApvf + GFhs+s0TdtJZY/nrIZoGNct4aE4nVGcBVwim9Gt/tv5z3evWwEGBG7LijDzs3uI+Y1EwRTn2Fffo + 6JP/GRDVfpgQYmC1t7VzVIT9bAQhDi0PN9BqcYyz9qH7cWAOWnfIA4978LZb7R6hilo/855h5luX + oHX+iXXMOjVghqzzZzKxW03RGoYyKv+u0eBVuQPbyPTagymjvmMetv/HywsWBvaYUfS6lf1aUC5Z + r+kpSU2/v6yUzmRJ6Jds1/7zp0EYx04yCUL6K07a76qG+Cxf/Wt/Q6qcMIpt92selA97jttDpcV4 + i1bTVGVbrBGfTbNDwuugK53NZ56/VpvthTKLSD2Rk0Qz7CbDVlDgTccYQzu+ynbf0S9MlkxlL4AF + KKQEtOQWAvFycWMqZdzw/vtVTdnPrjVjnSRhSVDJhxsq5VTOhhpLJfwbFtpMJXv/9n1978pEp3Ks + 2Y+y7d0JQ8YOER39NXfHCA+MqrfrhZTBFjLFN7F9MWWcAzSGHrVVUAso2axhfW1I9c5EiSkT5fQD + cDf7UBN63YonCcolnkRPiSe9vjgvFylnCbep6DzJez5lXhQ57oR5secnZsY67ap8c4fbCdS2DJ5v + MJmAC1Ja4sDrzZqtJ+PXd2vXh5+4+K8331yMBEERCdPgUoxEEG/z17S3JtKdA89lgJ/ubXp9gZKj + wCY1tphRGPbs8/n793BQeDamAAKVaHbQQ7fCieo+0M+o5zCvuawPC6Lk4XDo6sdsMJA4Njt3/r7S + udFfaSlHuKcV24A5HCIqGmcRP9E7Jhqcqpq6LcTbsiIDxzNYWl+jQMjIKNClXy1uxUFTXf6KeSrK + fMuI99dvWskw7G6EhJBNL1zWocA7vW6HbEqUy8im/CndCP/f+UUV2TTEtPESsmlCBd4TFkaOCD58 + raLD5F6mumHf87EGT72djKWoILIL5a0JTAERLDksdbZcbsdX+x3sFDzzuwYwky0MEJkGvf9tkSK8 + iTAaqgNwdT8+W29QxkRlmQi1hr9lr99M2fjJl+yarU/E3fD/EYUjYxaTOHCZH1RATjuKuwaZ4lop + p82YdwlrQv8zqKm7xfSpaA4aE2MlagI5lVRHf81tMcKTohIbfd/jNafc0Cwdh9ijmH7NU2+xU13d + uZFb4zXrAq/168qi/uxQQWuMgtqGbT8+EA8/QO3zYVxaQ2XVDWV5FFdcogoouNEb9ow53ZLz6Bvr + 3DzRhJmaRw/pypqDwpfvt7VWKPk1mqGC0JXg64/xKA2X0PL45CuWULSNitfpB3OVsP+3JRvgB+aw + LnGs8gM7O6CkXrYEiudC7z776FaNgR6GAJeMgW6SeO4EVHI/FgAQ96fjt6mK43hBcZUpv/SaYEG/ + LTb77XS5+JpRdVeu8j75+4fzrZRu/rhaQv++T9OKiAOS+iYX8uw2V/YcjOOam6JA4pt5DQX0QRJg + edaKcU6vQ20CFbsdKXUSfBqoKcHnC6/oyF37ctyLKtgDrNcBqgXYnENpUr+N1a+B9itISbH5a6L/ + moSu9mvk+b75a2D8ysMxtV/Nl4PSy6Hxa5gYv/JbSPvV/Gts/jUxO5mY3UjMhnhckfrVF6AQHuno + r2BXAD8Cft1ohWt3jjtUhgzpCPbTnQooPVTrxtwBHR1MEQVQwfGj21ecmrsUT2kHglYXz4PcIYPm + NzouwY/epTdYE/CYYnOOF0ZFp/ANBPfoTSqSG6YnBWBY+MlFfwoxJVIWPuie8VBeHMvBTOleh89e + mUBbfUknlO9yMTxpnyVUsmFL99OU60DcYHRskWk/YHEhPhxFR1mxjqdF+0WhjSOtd/2TcAdQOo7O + 5B2y0vhAZcEHREKhCE3FAQfK0Bqobvkj1fRcmUntOp0yqeF120xqpFzNpIanJGb/cV5xubseF69K + mdReHAYMxOw4dl2ZLiZYEc0lD5hKd7t0dku+B+69wIs0LRQSsjNJLJza4mhP3p6/P1Gx6CR6r2vc + 39zC8x0rG4jEsjf71c3CTCtL3KgxNRruAS8JvLKcbMVfzRzpxGloI/Zi1FgaHOXrogqp4ST34yYr + ZBy6YYQ1kR5+5ke4MYrUY0a1QgInVmwUbrTOaS58cDojXrdUYq0AbD5yhwvfbfgJ4brRBip26U+w + KYAOTIXjaA1pM/SqW36MrFGfWvxg0stQl+rxl43k6p6OBMSc7khA8E0XJCBsooIEBA+JS+te43QP + us1tenNvpLUUTzUUZnlCT3c3gfk2PBBQQBR3FoauASVISId4pLX6p5UZtK9IeqxjOmFcbCtGeURf + DtN6uBzBodzgnuOTpptu4S5YYyBvhzrz/0EW3sMfPXQAuLLM8lS7P15/gMWz93rT61aCoqBcEhTp + qbLHco+ACSwQO2a1OS96/jTxQ/R6h0Ek7LHvsnQ33t7ms6/lgmbvtmtQZCi8ZaJFriDWoxGqT2rF + Yo4u0GV6j8E3G2Qri5V5GrjHc4H46lJq35Ir9eNNxtacBa5QgdNArxFUMtu8GOffYOQFdjPI83uc + 3ezHDqRLDPsze4RafXqj0k9VfNTsjjkHat3Jwehin++GfmPpOYRoCOOqS7xnFVFgJIHnlAXf2+oq + 1cq7XhSZpue373UMX5N8JZCzVCROXRVmRKcb/rMholNSH/1HbKoRP3XKRh4FIWEDB0ZE5nW+7GGM + wFluvLYP5O80h4v6rmOS3WSN3WuKFP2l6Uf8IJZo6Gf2oJoyYBXox2C0CpgTc1vHfoULqUmG/Uwe + gUTK8TuU0qHXbVFy/GopHXoqSul8Pq9ByEFHj4mQM2UJHDR3wpKYRSI14xQ051QVUMTw78/n71UE + G8ZZ5nfZpkiYIrCx7X6zyfc8gKYc9abw40V54AYU+bN8XbWAVNouxdyWuGgJax1HGTxYAaoeYbda + XBQWsInLdhPuZr3ZpHMtTWwim8ixRZN8ySxTkJdDH/301Rzh3pPs3PWEV+/4yFuqfGfUUD1SSTg6 + nrcJxQvXBd/WVrOZrLm8tm08znhhh9HdRCPqnch6pBpkCxL9gJHFwJlYZHzOeVdXGiRmVHngg9Fp + wrphPp1fPYGnMaa52XkN1wy+rqmRghcfAT37ywP25K0fSpMYi5zkmRN3MomJb2xNYrIJwyQmHpIE + MLveCRfG2fmbAp/u/OP7V2Pmh4jn556M0On4Lb3JZGwr3LrjM/zSgKCCByM38JJQ1AcKPUpyvpOl + m4DDrRpraNhbnii4hMiqnh1DjwIvqJstVvifjKb9GI1AflSdecy0Ka+uLByE0yz2TGNp7IaWatb4 + ECUrUIkhY0F6R3JIZhAVzMDzn7Gwm4FcfmTPDkQjJX5AT0VR7e1OYEZdvv/kyXyrWT6lnM1tvhk1 + /gG/5RwgSjzBAXwuNXCcMkw0hbVYwgr1w7kpDuxRRQWvoNcYUcXxvYYgaCElBKIO32K7Q945z0A6 + 3dWxwqJzJChROErlOxMVsec8OhHJnzJWtlil9un6FeyuE8y+PF2xjB5n7B1jz5xu5ffkR7bx46oR + I4BcPhVgSJu1SNI/vTgH5sFRvKb55iZdEVapWNUR/vm35r8rTe0UCI6Q6iiIMfozEGiOJKgQSNg1 + rDsPUBV0umWVgFzoONXT0Yrz9iBQgZHPqsaofL9rxcKxLwQREy5OGTuw0yYljz6uCaydlBK7VNzs + CO/2YAY3L9K78cDS8gMVjZBcgNIkX12wILF3GNHrdmY2olw2s/GnAoj69MyrmNm80KsAUUN/44hN + oijgYFucT4yVmUta9RWsAvoreRb2Aq0tWhVg7SWBeQCfXuW7WxKouMQmVkXAWaczrx5VQ7Zj5hr6 + TUUJQIf0QMGIjoq517LOXR/dHG7J/mXytSmuw1yl7BmWP+CJDf6ThAVeFJQp4/y0Qmz4TtkhM+Hm + RL3P+hQUlBfELM3i1SUUEM0yBxs39v1BQEAmGl3mRJiEG/9z9Elb3mk13GGicvuNZP4vt2u2rt91 + Rjle3GPoZsL9puNuaLmaIzwXygQYhOTRcSm0yaA2lcByBWObZj9mC+5JAvkzXVhgtWrS3p+grrXv + hEoBOhK3ZGgclKPNtLjt5VXepfovP85VuaZ0/juMxGOMbhc+zd5/TbPVvNUE0Ayk7Bamjl4QCseJ + x6FnZL1lq2/ZMl93NqmKcn4G4z8odAxgFYsdnuj5x/kHN+wQ1UGvW13SgnLpkqandEm/+f1jxRfm + J2gj1sN/4+dP/cRzvEngJIEM6rhf5wRBCmP7fPFGheougfr3oUsXHQF71VACaShH19UiX+Y3OAvy + WS0d+F+ZTpH8FrKYPeLU2V+Whd52dmQRMi8I7c8OvW4ZOs8pV0Ln8Smdnfcf/l4tQubFcTl0/mns + IyD+BH4kzGs/PcsN0K+enn6BPn+Cne97fjz69UEfjyuXuwaqtl/cYOxQgsnrCyfw7aMt6HW7uEGi + XI4b5E/plLx9X8FPc504qYQNTl3YrAGbgB4RJiLa4u1yFk3V2V9pGd1bGAYMAauywx68Jyn9/P1b + 9wUmdu/SxWrLM7wzjnHiBqqu2x3I0dcIZLtEyRrl8rd///Q3+ThdbrHe+57E+LenZ2yCVOm/LqF4 + XYBqITLK7+7S5SIFJQCFIqZqEqOhsoimEkarZ+KIv13UAKipdAidAhGVeohxpMpl+Qo9LI4CP2ZJ + kyaqN1DAGNbF+bGkGRbtARvRcsQdP3TiBkBIvV49aBu8wXwjbcum7ho5B4YxOt/jsdGRHe/1qBCe + TlMzNtye64mhDvL8GgTplQWLtnfajky1Pcl33PhJsftOlH5Z2oXpDIHkzhc3TODIwT/d9QgPlooM + jCkyMEgoA6XSjRac+EaN0accQ6sZt7q6hbHOqFbTsuOtaQ4RKMd3YlPHajZxJ1mFJ4T88fHCcT17 + LkyvW3FhQbnEhekpceGPlzVpfmFocmE/eD6F+8f3wonnMlgpUTAVrlqMj0WAqHSzq8bR6pBQxOQ+ + bmsS9lrx3E2ZptnSBletr0xjBet5qxlKTSHGbUK2iL3EDeKkgb8YNUtNfsLcJuuVoDj6WIGZN0xL + BBs5X2ixZSKeeJdLM9M629DryHyCKa81/+OeSh/yk0j/FCVMZ4U1Bl7/nl+htX2/obqVuEdqFg2U + 9u0L6RNAgeV2fwd3Gczky3NvhBtGCWmhSxCRPvlE8FOz4c5mHls6zcyJqtoYW8/248glHrS9w7w8 + UWZFxXZtFzcruann+1mP8cGB99T4esZWuK6QJ7WQvs6K3Z+visPD+XYSsnn1K3qk+WUCQaWXXyZ2 + KJHn8wfH7VA7m163ugoE5dJVQE+F2vqmxuQDV6h5FaBADupD5E7cmPlJbAIaG6WWeYqrKnQsNdl8 + CU3OHq6E9WPSYgMvdkeW7t5BjSlyV1FQ/d8+sKiDmkevW+0qQbm0q+ipAEW9+FLx9rlhVDIkIky2 + 63hxMGGu6/qs3RjydQn0a7aQ4IfFs9oVi73IrVv5R7WF5IHSdYjsB0aNi/t8vd9hQXm8x1H034Jc + cMev9Rf4J9JaeBza3aJUPkW4RCnSN0e79nY3NeK4t6Mv559VfXGM1xkmHJ3A6DR9oXcRp5gK4tUM + 8PBtP2DMtWXMdP3R/vUB10OYp3j9HhaxupUdsHoPC4A91Cx5xybqK1bGTiiiIrwufJJet4yK8Gr4 + JD0VDpeL/1NNPgriSnlu4JOuB4I3Mkrfi912TjnfeH91TqkuWzfCy1ZdfUUwaXLmdqvbo76xDiUV + TZiRpPSQlvf6KhWX2jWGXeXbbHq12EpbAvDw5ZygJSjYPHZjUIb8k9GBt98A2RHSpuqjYUSBpg4B + 8HFrTwMai318qQWxdq0Hzi7xqCNKdffyfx2WnjoExHUJuXQGRKXzPapyfGAnDFBj9OiWfgo0mVgI + uAX6o34NA9MVO7EqdMwrDccd6xyLj6zLHMtGzCrH4ilxF1OrRpC8bX6noZpJ6/X93TIc2b78B75s + 9AC5je+LCqQ2Jhd7dmNDrR1+NKgzMHSn95ext4RudTqW6IbSllwu9TEckjADBc3OuX8BnWuF65jX + RAxbrpoXUQBQM6pzcyetx3tMI61MhSJ0//sDzMhZB6ht+YGVPKqolyRS+ZyElvPX57EhkzKPuQmL + zFBd330+9bwodpwJ/EhY0iCSEsTi9YKyKKSH9tl4fJmBIPP65eX4Q7YD8X07/r8wIuefYz+Onnts + 6oXSRfrHv5bQvVkN0vZfUqCNQoT4kAItc0Rgi+MnXTAh8XXLwBZOuRLYgk9pP1ycXzovK94iXry1 + BAqJqkkcTVw/4LulPbIFGvgPUVF8x0tELYQBQp0Ykxk9sArPHNZF+lDf2ObzyCaMdB7xkBb40+kr + +P9346+LFVdktGRY8+5pektvBi9x2DqixDnlusB3tjXOOwC3UWqHXmwm/7GYkwFtiza2Y8gPovv8 + avkhKNPAuKOUb5fuM8Pv5ySQC/pUboQB9JduZNu1DM/hpI6kMhiMMuKehGJs7waYMslBXBGA4Iae + fbAkvW4ZgMApVwIQ8KnMBjr3KvBxHpcizAiEp1HiJyyeREnAIcB5Um669py1uEnM+6MtSdQMmWKN + RR4RER7mqAKIVkO6HgHYdyIr2uqSqUsNTneanI5AYGb3Y68h6qBbE/wXxCfD2DQBUQu8BCWyZhxl + D1TpMpZQv+Z32RIhdcx4j9Dzm5CAFPXRZRGPlbatulFW82I996iq5uVi5a0ntSk8tR3cTsYbWAQK + uKqZtGU+W7wwM4Hk0LDSzC5bpTCUEd/2SiyIo3AkFpPbjBp2AS7+QZO2utk8Xhrl4IR3IPj4M4Ww + KHFp1P3jUTokqjfdwPyAtKxC26k7uDC9c+JbceF6JQ2MBLdr6kqv8DhG4XGfPjh+h8Lz9LrV7SQo + l24nekq30+mHt6waFMGT8vTbKXz+NPDdJGSTwPcTmax6WQ6h+vDl1NdQpLEWI2yIb4tvOdpf4KLm + RRlhTsf32Q7m73qxyuZK+V0toV9/ggQa7gU8iI3fgr8fRH7i+WWy2Rrl8qwOhdugDJJbR8ow6K9Y + rDlbZVNjgRou9bCpwhZcSj7zXa905S0Xa6xcpAJ/y5imSfMddzy5puFXAhvRUVEl6KEsfIigpuAm + yTAFAfhAuJ3fGG2L/lSn/3Qm0gQcl1BFL32rWGqiB0DGQgMhXa6B5TD/czLDhvOmMQqEb2JSViPx + hXbYwpLs6Pi0/IcZUMcF8ilk/ZcWYh2sopEXSQvKcjlEVYiBKiQNVIBoIFcko/jRdxdOGNnLSvS6 + lawkKJdkJXoqrMMfX7FKRheLg5J12Hn+1PWcJGIT10MZT+QS1EXGm+GkGN2zN7IJLu7mrJoz9VfL + iTSnxpvyLffjPp3dL6e720WebTHmaZ7hc0pL0bXP63QHe1LAuhWpCxNzbtH8udhQghMWDAcVGfVb + /NMKS0Asy+Y/rPXL/Tejd19eqXQjxmBX8XuXTn9d4623ZTM4AXAlKrEhrLMc6qJbGP4vNKYOlo0U + +gmTs5DTBBxjoBwgmIIlIvrP3Jn/l/93lm6AlWymYsz/NLap3WUpGVwgYi3OXe+UOc+Y1yXWQn1k + GWtRNKLHWqinxPDyzcwn7pVvFjecXc3ymxWVO1XgodKz7p+MWl6Tb30GmiMkjB4Q5iaUBB26oVbf + db3smV4jrr4ylQX2pQ18rxuBVb6aNkN7/SqZNQxE9YFsqrr+rd5GUofxR4UV9EEDb/x68LOw6DLs + SLH+GBqgEarbDgfF/uHyX46v4BqStFneFWK0jURrF7ke36x9Sx34uBM/JKnu9FAykHV9n4gR2BCt + 0xahmoDx6DmkvWqJxYwils8vGIs7QMTw1+0gYohyGSKGPxXRIe+rqaMIIlaBiIlgi/nxJArjJD4Q + DLDeAP0/gY3rEYiFwX9NKdUTZUDuIMqmbFrEay4w9Ahdji+E1vzvjJJG6Q8S+BKYUdBOaJeX39gv + K41RTgm+BUQxOn+bLjlKsSxw8PHivcobxRQgZGJxSN5xLW/geKOKkzixqKWmOnM8VZYETlKiKodo + a0XyfaHLqkDCvmEBBUEChlYEjxjoQ4ZZDwqSVTDrgCsZaqP3VsFFSelLscunwfTQmepm6Bm4hdZ7 + IRI+ExZ2iBKj1y19JpxyxWeCT8W9cPmq6jJhKMCaLpOpx0L4auIxuCBEcsS5Vn52C0yKu5FEjju3 + sohM9rbk4QnGYX7LNrvteF0lB9xMfwrLka7yJWUU0SV0vp0PiFHw5bRwDyAIgOM7R5Rr06lh9lZY + gy16aArrvRqhY9dQ4TfQ2oHOLw0+WwFHAPG74YoNfTdyGfvn6Jeu/Qh3rUrbZaD4iV5zNtU21FZO + W8cv4dbzC6o5+SaOZdy/OkasgYaF0N4LDmAQhIGDnetdnVMcqPLeaT+O3QbZi77FiIewCIUxlVkS + 3Zj2IiYvNAVb750y9xmLOka5io+sw1xlI2acq3gqqsTcb5nIu4R/ogADsiAeXiRSeTI+w9dH/CM0 + 6sAlIMJaA0ogUF/U8gChbvKFtRU0hyD9oCl9GiscXgFgief7h0f/mJirXdTscD5Q15wftVXtE6eP + ofWTYmY9hwmgsvvNYp7/QL+SkrP7OdkoNefsAtbVXrim162Ea0G5JFzTUyFc/6OCmsiSxCmB5wfP + p67r+IE7cV3QtYXRhYN0gRBF8EZPVFDpibI+P7m8/P1EnhDKXXqiQOp+98bbVX7x6fTkxfj14uZ2 + N/7HK7SlZqkse2uiLr4t1DsYp2wD2M4yXX0le+kqX4lvctA2P013CGKBIEvofDorfhVlcYtqyuff + a8ASO1uJ4hiD1pKKPE4TRCY71Kqbc9JKDZkAYDoIvgN3olMBRqT5rAMo85y2MgA6tSKyFob/FY5g + WfZ2EtZY8FKfAEUoA6ngarnY3t6JRDYO5LPOhWVTRAMbu//EbNFtDEqub1HDwoLmXOeS7PQXZrCz + 5/iV0p2TunkZnSk0xUTSUhHURT4RtIgZafAM/ZzQh3W24ZVcxMpzHqvKbQntAy7Wy/GGALyy2X6z + RfC/3fjUmYxPGUUFn7rAuXfZVgN4zErn5cWYH+Q5VlZBjgWNYNnQHIP+MiwjjXsMZ312j9UCkerV + fi7crugkhUUeIQkF9AhXPvcL+FSUrHEYQPj9l0uGbW0zDjoCIs7l7zTZnAMGz2IxQmz2g/E34F2z + xVbwx42Cd+exu5x78HcnBY2JInBif6kgsBy/NVO8B6WZ8vKX9ISiMxqnE6YRl4NPI+9uNg4IOL/S + 4wE7FTuH1hg68frLJQVX/5SJSopal5IJ2YurHvnJNr1w8dR171AXDrAva2ut65KertJ4QYwUR29I + k+ohxbooSpYvH8gkq2ZwoBxsRS8kS7xgws350HWdAfmFD51fxlMpoUjZxJaK75FzkgsMU8GPBfqy + HBRskU49HMqCze94PkRTDLCiIURS1xFxX8z3/tEhW1x+YBn7JahXor/oucwOPmOVTC6MnK3Ef3lx + 5Hr+BH74voiVl0VRhfH7/Xus9pUVsAQU77WeMaci9vF0Eb48MF9lOk2SWthg7EyiCLYMq4iErY28 + n1Bva9sKw2DQthqGFIZWQypkz7ZWak3EXpw0mYiNJpRUZyYK8Z18ni9hTeCNuxyD1sxkr9Apk7ej + 10ywMiWWBBspxhXb/qg0dWLHTgqc7tILYvXgcMK2wa2DUhY0OeLnp4ikiwlad5CkK4oVqRlu9dip + gbeaC4co0kNogJ0Olp1FOaTh2h4jSzO1d5ioHUlRdvfYqBs4jYc61NM+1JX04dkbJuh6qFhpV+Am + nJ0FUfiMJV0syuobO4Ny0YRmT1YP6eqb70Gw3G9H8qf+FZYPdtyAY0Y8BrBHOYMib/wD9K0DcD1/ + 3S5vnCiX88b5U5I24JewClyP0PQl4HrX9X0nnIA07yHHqQabV3GvhKpPGEmKod+mWz3AC2bvNXQv + Xy7GH/waIsjWKe0Pjb/F3z9enE/hA1WxxLRCKLjkyXi/Wi6+YmGSLWgx0J9NiZCgIE1iCNJ1wG3d + BPpkykah23TL+z7MYVwxYh0GQDLEiMhrFIj0Bvoj7x+kWMyAscQo3cN5WN7ztdOytUuxWK5pT7ys + tDb6a20wPI6hyvDz48ga9W1AnDazFPj/4rLVduuvAcFWN7SHQltzPSkLMFjTZ1wAt5cFxDe2soBs + wpAFxEMB3yjvY2A7t5jfoU67DpRUFAsCLnxTnFSjERQdPFE+8Ph03Ii5IqhyUV+ktD0k0yVUBh1l + af2uG5GAOUlN5fWSUgNyaWs1nsYN6yS0wa4oYwWN47v9cJmtQybEFsedzGv823SAsu9HSpgBc6lD + 3OC6W6wPmNHkEfRltdPAsRcm6XXbaqdIuVrtFJ6K0hdnf1QyFwMYUDmUfRr5npNMIj+SKIcSp5/w + Y4R5TrhD8YrneMFf0c2TiyrQJsZMgQuSb27SlYzKxjdl1ohCNp9oDYhEuXS5FN7WL2fnjEwJZ3+w + F8BfduLSP5vP3HhdAEwIcfH97L7Gg/oXAt07L2Qt+YnsywvoHwpB/+ZrgLwIeSLcHUB9jbM/3t4u + rne0ZdMxbGBUZrmGCy+v8pX+hAc5rcbbfL+ZZW0TP8JdVlR2jViB7egGKsjpXfDM6aSRqm+sQ5xE + E2aEEz0UUU3qfsn2X+H7XMTN8Dum5fIpaKNs5zuPT28NZZUdv0PBNXrdtsqOXy24Rk+J1Xz68rbC + akBrcKpVdvwYdP+J6yeBJ6LN0Fr0acqB2LciuA8OfLrebxYw3t9SDHThRUBg8E9Oz09EFJ/Ob3jN + r1Kx+AmCVqV4HLgLWqtJL3jFp91NlVd0zaRxgGm6USUEAo1MT+QQ8IIyRoF+9JNyMKKhTSZOU2Ax + aP8YqVbRVxX9bLpdZzMEh+LptJwd8PlZZnx2aqa7rgtO5JQRUiZGuUrXicJyxAO2My2tg6nUunFL + UpI2sFaSk/HpOZ9EXmOOjlWplaChlSTGMj2gzP70XfcCeOZdjjBb2XyE50XFZfsOxWW7MZPWUzF1 + HS3iMLkk7NWsgpXs1o3Coc4ETaTq1s+uf0nklyVunK55eocRAqA43e1r3cmPtJRDb1QyPJ34ujrh + xfG3Pex2CupQ0ZnI0aT1vSNjtOqoHzCu5avokaPK3lFfFxvMAv/lYCpAKInrCU3GolJ0LmrxwiKP + QW6bd025O9YHoXSlwFNTN93ul9f7zXgGJxJdb70p8oX1Oc0J/DyKrBSZIlFCznXCLiXk8HXLEnKc + cqWEHD4lkens5ZdKQpkb+l6lhJyfwHGf+EkszSnNBeSA+l+7BmFdATkKrITnKTeUSXP3i9oCtFQ5 + /SqVhWdx9/CbWqOgQiDrCsaCOuCWjXR4y8NzNhV/JLOi3sea/o1OX70KlQGahTFizHhYrga38uuL + KbyYz6hIawcktaa4L5DHC2OZ2ZMqkWbAmm506rA9f5lZqWOpoyGw7F2e5vPHyw+wwPZshl63YjOC + conN0FNiM6/PPuI4SrH1PABUj63H6gZexFg0gR++JxJXPwEXLxwt62bbA4i9i68ZbIHsx2K7g0MH + Zwr6ncKRm4zvYBWvVFlx8nrgkZEzKoP3p4LBgPSyuEnxXD5Z59vtArcWMn2eSQwn74RI3qbfYO+N + 4UrksaH3sBt33NYz/Y6B7npcI+ePr2d3LPjPAWHg5ko+ExUbnDY1OskIlNmGAPfE84IAVLfRX2NH + jPipUFHmTsKdfzh+Zeitzpwdd/vrA1dK3kZpQ28v3KCD1Ylet+JtgnKJt9FTkTb0eyVtyGVhUmJt + yfNpksRe6E6SJGG+r5m46f4ywzHP9zVJONptZ4RuiayR19ygmJr5IkHcnOXugLztR9UgyYZ2EOV9 + fZuqeGGL5lkSRY0p+06AM1MJnkTl6TDEcVOcgzmoIixB09VF5RHDVpMElQBJmVWTgPYZOiV6OmDi + 4aSdiAWsE/n91eJ/9gtQqjSw9nYwYScMWFMbak5Gp7iA40BtNiE2loRXXWas60nRgxdCHhWZZuiB + kaT/DSdphGdDMjjPF2GXAcE22Yyxb/Jr7zYOx9vhVilbf4paNge/R9maUHK3oCiv8XgZ5qcHjQt9 + aOn1wNekQzdxsW7mCGQsLdSaeJWV3Hx8G4e3ga8L9uIG2OUbNCDebNIVShs2FyhoQrQj+oeTIDOV + RqujIYAPEzt8wnyXLE27203G0aCoeMMg/RsKO/l4u5oQYDxZes5NOihn9Lpl6TlOuVJ6Dp+SAPP2 + 7FVUCff0XLdSeQ67y5JJBJpbKASYl1r6sbxN9DAzDb5SxI9k79+4Lyf8xZt9ypdXA1rMfsDwV3AI + xNvX4osXxfSi05cHXexA/jaEd4H6siH3hvjuerEB+VsrkJiiNWaV3RBIpSAAzUDv35598qELa+Tm + fK25LPZ2No8qspjmvW0fr/uyPqkkDppqKcSeF0ZOVbWrDfnEuLSmAM3YR6ttWb5q7269J7AZeMlo + xMz+oDY4a1WtlGJLD1Ed/aX31whPngr+dGN3kOBPpCAQVSvBXD3p+WErPXOJ7XxoR9Jstg0eTfrB + EQaPxT2JqRRfHw708xtomE1MQeWCAp7R+2XbEe3S9yHI1kmEI8EEywezhX92O2PHEm85D4ETW05J + N2fnEHRbq2UNkgYsxONs9W8QkzRu3Gcq+1Ar738p9jEh9vmeY48xTK9bin2cckXsw6eiOuTrTxXX + n8fRIUyx72mSePDVhKGDyBVpPp9EAKVYnMl4vd/RhXebIUr1NjOLIJgoJLuLT6dYJoF+8Gp/BSwM + UMXnFnGWl9mqiibZ0QAeB74fu5U6lKdfzjWTASboqXHVW6RKbkLD+hImoBeVTTxegDaXxR0um4Ya + oU1UKeE2aLSKh4EbhOiWzLb7O5jw+iWo5qOa8d0CEUjZ580loyWRdh4E4Mjg3fQHHMzvt4vZ7XiW + 7rewd0/xWTr9PNsvMdkV2j1db/DR2KXYpvE8x2ZgVtHuwUtL3sElA5sYyIxRsuLx07CIG4yGH+E2 + LRJkCNzYGtSiBRWDX7/6mGmQrVNkTT92SM3cHYO6YU+lqbRWyAjNZLvqScH3GOG9CRiFLiR+RUDS + YMj9EYnQXc7MwcuuEefNo9D+KofpaHsJqF7l8ZFHR2P9D2UcoVzY1x+cwLc3jtDrVrekoFy6Jemp + RN74wNzT8j3pRBglqft3oufTAMF2JwEWZjITGIqIfyM58UnoXJ5U89EmoDymG9A9SaecUVT2xXrJ + 3Jdw223wHyn9uAJmukdTmtha2Y/bxRXiwG2X+Xe92BD/XZMtX7QlRDJKdoCLFv7tVrMjtwoyBHtS + 68vecrWoKeGu3V/lNyacBkGC/uaHy5HVGzguR/Yhk2K1qx8kFwQnGf1Vd9qIjp/ykUcxL4GJU8Lv + /67zai8gDGGFqaNwyL8zSO7tkV6eYzJdYUO6gWy+nQ3YOAMGTpylUgGtgFAH5IKBU2X7EW6eNnlx + ejIZx4vPOkBXyQ9sE3KIejUlhz+XF+h56f70OHJYFFbTcgI/cf2JGwSOzAF8X9hVr+7Hl6dvX8s4 + 03wJrcymNffPXyjRThb/deOYuUVOm+fLzGr/pfeMOd1QVsQ3tpnVsgkjs1o8pCVerL+KUL3FCnS2 + Xb4cs4k38SfBJJyuMZnv62Jb4AM/eX8enIy/gtwMguGT84/vX4GOnISOH5+MjiQQAAXoDCZox1Hi + YIqc5yZBTKdRkNaRirsWGrBSamxzgo9153cNJh1MPQI93JxStPBoYPnquVijjobF4/UPUUT4YPM/ + Cy4bLrHE3IOVTe1O+/VWsgSe5vrH+w9OFz8yvW7F7QXlEq+np4LTX350y0G+rsucUv4lez5lCQMJ + bsISjyWuqSsZJiseA6lQVSTnXyyhzWqGQYHjWYqhdRpMf8wPEydIqvFvnWNodTrF/XHYaghXkElU + q3dvEB3yLnGYF1CVhL4lqbrApqori9KDX1/AwOwN3vS6nSpPlMuqPH9K+/PD5cfK9nSSxC8r8k99 + EGFjZwI/4lBcbB8QzefybvpaqYO0GT9s76rR3KYx2wrhHOTcEsK5nt7rRZGXhJVk2002vcNNtsXC + kMgl23z4sevHTaDnRgNqr8kBGG1M8DzSb1lVuXa8pGMjZRNuyejtN2i+zAUZ0mPOP0ewAuMnYnlO + CmQmCchPaTe32XqHQd+I5KwwIp/Ap+56Gq25mpgtOEwTPGNrvM/i9YkWlw8f0l/q8mr4BGFlmPsX + atLg7bh4W/bm95DbYs/JwC6DyEs5OnIqdhwwmiyv5CXByRrhNlYKceLHIzHvhenv4JJ18sMNgiAN + VBKqNX8cFd9xFZWeAZwD2eY9Mq0b589eFT0W4JOQl2kv/R7a2tWrX1mhc/aEyeYrZV/vocumHBpO + 2w8DkvV+93+Difkx/j1AcPcpTZV15WArA0M9BNfxlgkLCm0zylw6Wm0XyoRk4QxTXhHbgXpwl6G7 + f2GLhP4gDbWkv3kyy5bFnbJs8XXLLFtOuZJli09J8vj45aKSIuKGZVe793yauJGfTBLPc0RdmTtV + VABRirSIAxI/Pu42Degh6JvHWGVThvXLaBo6ynRYJ2KYsRem3YM14VuANo4aT/muR0/ak9OTp5x9 + TyXry37woelZI2ESlYuc6MVIZGdHTbMz0YAZV2akwovxx+xHKO58Pn3kh07pThGdkSeeXNsqPRev + X1zLIl82TMgeHQRt9mhBle/URo7fFtIWs0IT5aQ6arKJCGTXF8CuV728ugcuLwp1MrapDefwXZfw + AbQwETWInkFd1kFG9YaK45NzvVia8jz2jrnPnKiTLU9+ZGvMU40Y1jz5lLjVNpu5Mvf2rVatPeUg + Dwo0EZTVk1Hz3y+RSjoiYtwgFyYJISYet5vh+1hIPLqTRLZbT7WAOD2GilXfuIz1+gL5xdt8ebMY + f8tg8Zegq2VzSqRvIW5tOjy2oVZ+EThUZPLI2WAhN+/8NljHjgcmsKoG6DAKzqVZ7V0p9Ug3XBTz + ofK0F6GCbvCC2C/rsDMP0UqaafUeYOIXs5SuecGrrrfBkQB2nsPIE3z2+fz9e7nP4BpIjzhbnYi2 + 9o75ReUmOe+SXAdd0Uk4pzJ5bWuokb0HwvYKO5BVZVuDwLpjj6usgZfQLf3yjEVvk2eIvmh9Satv + 7O7oogntilYPZZXcdSiL5M6WGDm5RPTI4t8gD8GE3os0t/vlFNZ3eb8czxbbKee94wUagjZUQ3cd + jpAihzVOfHdEmL2kpXETvFEb77CMqO4oj6CJuZy2zFc3IlAOv2mvjmIbpBFE+ua9zpdyaS3yeJs/ + 7sK+XMo3uIVubfT8oMaIUisJ24mSwugC26mAsrUTTP+sYZdhVBDiMG+8avGD2UOsudEQ9hlSEW1O + 5AB8fZjmDlQiD/ic9CYkeKvvyCBPv0PlX3rdNsjTr1b+pacCwuP094p9xolQwC6FeIagxgSTMIzQ + mI38983+bs8zEi6yV7AaOAuX+ZJHyglvZbaEdgbAQ4sTP4RzVrbQXO/vqNAozLXowJNPp6/endR6 + gUAiD5owXY0GlM1GJrmVOopolY2IFkSncDg6UcSxRVshLg9ybBBVGGdQCDdJO5HGbB+bZ4n89ahL + W3QJ+ig+OhTSVw0VcSjufz+bYYB7Np5nPJobhICjQsuPz+kCyYR4m2wJYcJ5XYG+jAzOBH5icZRs + Zvsoeu0d9RMmD0BeEO3JdikD7b8/OG6H2Hp63YrtCsoltktPie2enl96FbO475UCA93nUy+BHRxN + vISKbSDj3S5u7lJvyqvslPLDCXHr9Hzqley4kmvyEtCFCQJTkJZf0yXC1sp4nJSAXZDct3S2Rywv + dKLi7+kSdiQ/Eut0d/s9vZ9AB9Y8p5uyvJc5cDSsjQtEoCER1sNU8+JmOF1vvcq1wHudztO1bs00 + 4gSY6zWEjCA8mudV8v2HCmMkPR8mRU5IMYOG0z5Owganvezg6JI7BUvLNgOp+XazWOmWnfJM4PRM + xGqWqj1QrzQTHqwGGiRfwPGjfH2xnnznlBu/S++gT4t0pbphbKAXHZd4hFtbAR8FIftVdk8bqsK6 + 0Ly8tgrZo7UbWhI8EJv/OOxdlJimPu9hlXLCQIkQZatUz24NZOgaxhgVhEHtJuwuIcirUpVkDCL7 + 2DV63bYkI1KulmSEpwKn+WMVZNALYq9ckvEpbDAWOxPc8YnA6AEx6i6f75fajMq5Efm8+Z67NzUm + mC5B7MsQIF3cVmd3NYCE+mu1IDdJEDSGg8VxxGSy1TE0tZjJMEAWVCVppWvpiWBwySZhVL5Jedf2 + dzVYctsMupv9phCrDDmiPmE8arzHjWGo65dfhbTRESj6NkNzGbQ0x5m6wWyRf+2FgY3DS6sL4nrP + sYzMshpBY2BdbePcCohUYMNkObDFSg5cXPHYK30wSmIfvfVn2sqevhhj5xfbnHvfn+AdTHUSgfDZ + p1N2osQCBfqvXdnaJpmM0/FZ+vTpb8U2nxaoPXKB9PUg8UG+A81t/s3W4yepgPGbFsh+NfXPTgha + iPqq71XZO97/l2yEJ1blrQcuG4l5R9Zz7FraW0hjcvwrAuU1tLJG1qrMFpFjCelpdSfaTm3tQqDJ + ww8HjWQSMs7WbYi++dbCKHgsW7Cbi0HKQQyjgAORUAy8fLF0vKoHcfIMVuNiKG+RT9l3nz7AHWyv + WtPrVvKCoFySF+ipxPSrRpz5rFwKK3w+dUM/cYOJG4Y8ohLlhS8624N5KByOwHm5E8hQvHjJD173 + cqJp2Lwen1mz7+1sA3xWYuo1Ba4dyLvQgVUCrNRUuaV3jd2vt4hCC01hbHoDWhTbdqFDuwlPTzEN + Onk/iF3WcDG6rh85oWtHvnQX4RY8z5eG38xoNvEbb3j4a+C6oIb3XugX2tLiQhfLroozYomdsrTJ + N8AIt6aqOsV8qjrlBYVq3Ay3ciDCXAThNc/bhHer4NPduAMuJeedBzeA7f3Ml6mFZM2iH+M3PRS7 + Vw2S6u8THOKi4Wezui1sAiD0K1RyZV8VgmRvg2fM61YIkr6xLgQpmjALQdJD4tCb9YqJIDuWGPDb + Koz1XgqVo4NvjC+Q3OjqeuPyApGO75Ab341i6XJAGZoL8hgokB1Y+YFQum0dlr7HwsJ0lFIQbf+2 + K+PxwzASoJgFbDccjsXVgs9LVzkhqdRc5tEXt9kPLCPWubhv5NZAVjas1QFffEBxGwZmdfcEi8FC + CKwSTHpVjujnCDsGwTwWSSL1JxFzvNDgNaHad3AwGyfe/lT8dHTv4SPHWoKf/UCGVbnOG+Y8c+Iu + SAbaV7ahVUUzRnCVekz8+FYvbbau1OatKdxr0gYG7ESRMzoiybbH5h5gswQ+BRX303pCdb++DeGa + 61homb6xvl9FE+b9Sg/l/br0mSNu2NC5rKILjT/4bNT8F05giqHrvusyypi2ggWyj+HuDTL0UzfW + T0UE6huyOyhMUH+Qnw4BWgMjCclTGCmWyl4hP+pU8Fz7ypqlqmZMliof0wHkFp5r4CmZ8liOCvFO + rhXW14Lb6bU3frKG0S5mu2x+UmoFmWvoikwSz6cgVRUeuV0sYfoF71rlq+lB+QOVDCMQVHWr7/Ee + JMqoK7aLH9NUNE7qEFd+r+uhs8Dwnx1q7sfqGnXjZ47f7Rbln1hfotSAeYfyZ3RoT09PZSD5Kc89 + GFWeTFQsSYFMMsbSd3oDqJC6TszRmLyAXCDKI1FfR6k0X0VJjnW6w/CbHjU8B41UtsIo6iBLH414 + FJMJ/FTLETnqsLOIkQGApmoLUwW8dHGE20Tub6rYd37huB2Qz+l1K+O4oFwyjtNTEXf25RyDMEzr + eOCigUC3jsfPnwZJEofBJAQphgmgokshq9yo0KEimhMm8g174/B15MBi/ISocKVUCD4CPl5KJgbk + kfo043ZWLRYqX8GpU/ZVXkgY5leCaOtNygCz3dp1aosI0r1IURG414yPVXWrWb5fL7Xk/DdP8pNW + 7FbHjcqhX5i2PdF928ABwpB5LSCuqtpmrd88YCWEmVJqeBxELCpDuBqTSuMSvuF8VR/GxgJY+Cb/ + vDGGQRupH8yo657DmLdv2YbQZUpVa7Az33Nku4v5PoMttl+V3uBbCoZg7Evab/8uTNPQi7ptM+KH + S9r3Q9f1SW8KjcAwufXtizYrnUm40IlV2sD3HYh+OzYmj7jkIu8f7Ya7QA7JYgP9XOKNoX5JouyM + PbonbNO8a+ZmPpI/dVu+n9OFpr38a1MJjg1FZElYM3f9iPmBG3rFdnrg1R+Je6Skf1cvHvvT4JCb + RaZIFPxAzccRYYgDaxiBIzUMNzz1OloIio9stQzViKFnyKfCWHeTugcAJ1qgJi7g6xGS4La6MKYM + 1ohRHOh2cYPObT7/3dKF5E53PUbGJcM9c3GbGynZ/cRtyrUlW9CVyGPZZutdXY5/vctlAMTwY/Bc + AubSDcPdVbvF+rAW1iOhvb3/HGP0t8qKHJskL88LZcq8u2Axs9dY6HUrjUVQLmks9JTOx+c/Xldr + jCfo2dEVFgehKyPXDSfwI1EKSzYPpn8XwdgSZhX2rxuOv75KZZri7QZa+74evV/tspuNzsjXxSco + 9FHFgHIQPEdQrEOXmBghJGefz8capILiiS/Gd7Cl0+U2L7JkMDKSQhuQGqI50blTVSgwtrvUIbwd + 0s2Oh+xf/v3cDRVSkxJEaevJQaV3i1VOecailsty/GnKQzm2900m+eZoy+MwWWrR0gKH8waYlpt0 + SZVw+Un7jik0OXC9lZTKK/SaEaV8oOrp81DMMMbpHMpwqA8S7YRXUi/U/PoMC/ycCYZKBwED4/sm + axBf1fdDsfyN+RF128BhFMir9+oQPE0DnbBMpysqTIWd98HQkrzVVcAa7pn7jLndvBXyI2toDdmI + ia0hnhKvvVnmwmsIbCD/kfKA0vcSZz5AGLLYORkd+GPOMa+SyAvJUxH5XIS4WWKdvNsFRntb1A+t + LZ2aRJUC9Pn2jvujt/aF6FniEg4bdOP2fimGUxNXA+RfTZfAPnjhPUteOKid90HQLOyNs4fNzPa0 + Ort1eEHG38Y4/zmuUrF9lvfdo8iPINcCT3gE1YF8PXVjHSq4nFE1XPjr16yP1qUIibU/ZkqAfxPe + zF0K4sAqA0K/zmElFQAnJmjnWX6VLndH6KUUNv/2g+Ozs+lLa0lbfmAlayvqJWlbPqc74NXlF1at + WRMlJmKrlzyf+iyOnGgCP+K4tmYNCW4y045KUl18mZ6fXUjR+2YJTc+mV/8hlWwCn3sCH4GcJmsT + BCoymMVvw2dOJyGk+MjWIKIaMQwi8qlA+LpdCyGExzbk8xzLmBXBaDUPx2fwzQg/pJAlT8ZIEGRi + ESOhjO7crL9ttsEfCLf3Y5NuEXuR7kCbWiIsUIeSa5FDIlLnsNeCgMhr5pPDQ2e2sDWym87qUWdS + zWPqRqf9OhSYLCqwI4eD2EP58zAaumXp+C+7Mf/LjdA4cZPsush/MPTG0BxoYwYtbNQGOVwGDobO + 7xgclUYJ+CsmRHS7Q4FW484FgoRYX0u2ZU77E22aQeaEQs7XrY63i+1OKA+31gYKyj2lQOBiK06K + VeCa342198GJ4sAcbLed/BPx6Qopnq4LfchUG6Qrtl7kFt2Aq0Awup7kPEdUJ7t4/+WyU3asxxKa + D/2cikXs1BMe8iiyI171x7cD8dbcEg+I2/dwKa5SIghEBqcbuF0yOPF1ywxOTrmSwYlPRc0ALH0a + VXI4nXKUSvh8yiLm+86ERa6L5xKlho+GU64a4GyUh1Xht1RTAAu+RhVh1HTzNUXwmgALoduE/gDS + iRsEbgWq4fhWdBgH3w9gXz5gwWC9gSKDs0/B4BLFUZ8FHNGeKZIrk5AXQAyEoccg2RR0XqROjX65 + i5ovbrXr1uHj9d06imRrztRRcfKPJoa9vkBNf3ptfFbljLguL0HQLSlTfmTtipaNmK5o8ZQ4J685 + Ax8sF2uO2KcFoptbRqENmKThtLHID0j3CgkP6zrd7e7Jy2Rh9LUNMH/gg9nFQNr7oHNYUD8ivSZd + Ion75fSJ2PgnVpAO1iGtR+NEyF1LFYVeXTC3A74DvW4lHQjKJemAnpJ0cHl6FlYQaz2vVMsQZIOI + gf7vTyIWeJHY4deLu6tNAf40foKzsJpew2xxlQs433ypxVecCMEAxhlWxAL+LeiHqLyJ2NA3+9XN + 4sRELfTj5uqGYeC6QbUKp6CMQUA8Dy/dzW5bm4gSqyYKQYBaKMZdLXIUMKexyJEbYtKye6Bk0mQM + cz2/KdH10CHU1FsQ4kC/Klf+LHXW8PzqwkVU7rEZUxrDTIROUCKOLkDuk6jAOiVRI4yEPql6jSfY + 9Vf7eaVeVMQakTAaaLV4uIxOJpFziPDoDW36Cc3jtLzHX8BGy9fZhgNC8SDry9kaUaFg660Ru+c3 + Li/dwLUA50FEHhhrgHZdNMftslXKmREJaGIX49x+BZ4CuvsIz66U0VyQ9kZiopEJ6QthYxgZyhvI + tw2+2bbN7M1ejJTtqwVtB+UEhH0BfHmHVjDkr4JoK+4iP9hFz0r8wMp4hNxHo8DfPdQsVivVmu2r + ijpk/iOEqF+M28SZTg0RjUXZyA+cJ9ZslU5u/7iwuDvBMyfqanGnj+wt7qKRksWdntKNeptvRcDU + q9PLd0rk1uU/4w9SQ3iVzt3RHP+DVnefxST5WR3Ln2cYVyoP78AalmqZHTjc1vLfoEbuyKFsTOxr + LZROu2lXRNzAlxhnK41RWEQih52xUm9bwM0zUUSeT/t8gVJYJ7HWiSLhFkXkki28r03Q18Uq49Jy + nYekPWQ9olDjgqxRJMSCfL1Fl7hdXWf724l/hZ03Jmw6ucfXCGV8lc9tYfZiCvWVn3dtvFd2PXHl + u8UM+DJwla7N+m5EzRr8qbVt5flMVGhrh9qo9Lp1aGu1Nio9Jb77t89vWTW0NXbKoa1TPwqSJJr4 + MXAIx8zFA1nry+eLM4ZYoJt0nUL/QcZDVYFQteqKdt9s8u8IrZnj1l6CrIZeKfglxdDSL/mGqoDD + P9z1ZPxhu4upZOiXWR4n6xfFq9f5fjN+9/r0C5yMdZYKRLRt9i1bjf/xauo78rmIceVLAP3cztJr + rDlU4BTnIi0Hx0L4eUAsu77OML9hK5Swv+U3rKKEKexz5QBv1JPQHtioJ/lB6DpJ8AjDB/6TVnqE + R0ILXOYlZlkQCMipCkSUGF8nU2Xi0jXbEJ6Xbr51E/k9lhAPwhFRxgXXrqhCQouBGbcjN5Fp8c0S + gb5TaCtmQhAflV9dF2MezipW/ykF58p+d7w0IuL/1UPc9fKhPAweo5h2nTzbjx82o4zMpfyE96jl + +3PgKVrM2SGVsjr9AOTsr1N63eo6FZRL1yk9FYbBy9PydYrTWjIMes+nzEsCJ5own/mecBpeEv41 + 52g7Di0osR6kBXCbVi+fIhuh+dJJ3KixrlUUBIkT9QRt128vljAfM9D7wMra0BnqlnUiH2beL9+y + ZegGA6Q2jpuGDbwnSqrUYOOtsw1GitSm0XtlBHi9FHycOE5FCLjNMDToNp99LZJn6ilHTXi6sRcE + oN+VpILLi3MN33GWa45JPQ1phx66HTdX0Bv5rGr8DEPWWN4MRhx7Tb5aWf3RdNMGLcXYgFwFGZiI + qcr2iztM9GjrLzTiNG4TD6HLvX+OxMbQRZpyt1GGkGqgERYmkh+ffPpweTIlxq9pjHr+FcxzxoF/ + axYa5O0n7y7PI+dEoL+84CABKNwU+0zVWkLr6R/zfyGnEH3JVPEdMTWT4nhPeOcVExkhA1OF40AS + HIlp0nkzTSwy4LygaM6y1a1nBcDWo/qoRcshqantm18JjHLv60Gu/UYcukb+m0m5XfRpnIgkqNi6 + GjM8WkNKOxBqQlR2HXOAm8xqXQYWRQPKssp+6Em5TZaTA6FyLFZWKH7Ldv2+jwmmJyTr0aBnnogh + I54CrFQoX7h+X6a9gGwTl8xw9QmUhzfFcIhRg1Re+GlAUfWWf3Kk7Fd4qLJ5r5S/kEnbvx8gPFg3 + 07/4xtbyL5swDP/iYQvYq2b7Xt+mK4MUhlMFcTg4mlmn1DA5l65MmUlc+9R0et02XQYpV5Nl4Ckp + HJ9+P+c5SSULnueH5VyZpx5IqqByeD5qSjT7r7dbTJaBqRcRTzl30lLRn39jAYLddowGIhRYvqU3 + KAaNvy2+5TjBGI7NC2ym47OpSt8Gtf+G2/G5oUdkN/BSBkIG+bRfx/5aB2gWvlopFq3RbK6ARlA8 + SVfjTzUtwHfSgFWkrWOri22ptBa0yRxHVr/A3/ygvv6FbN/UVvwmmTrxfRed9EPhaZmxiAVpJeSC + JDm9gl7icYcphIZgBUoib0kmdxrrbNW2cHeh1Y54cru6+HR+0iBblxtKujckCcKprBD0ncZSlrUE + jQWsRAdcLXJeVKMcY5EkSadWylNR1/OQsU5TYTe93WZjc3h6u22MShRse3eZ04n6dnW4v92OClI8 + t5zabpR3GB6/XS8Xs4rS6sVlfDwt9Mf3nLIGvDs86kOnavQfxsVHdOep+q6gnY7E1HNtUl+cCa8b + jGE9NDVUyk7NA3YLAXq7qp5UDAwZmFwz/kGjlN9CicpitFCyCELyHQLTWh1LJlET2J9K6BgaYI2x + oMP8hDQ/tbdeE2mrPqoJOz/UUytyidwPTTfnMdSZHtau2SWOIWngQfZf7GPxG+HyVepd7c1tu1WG + Kn4cIEshLViFc7RnejZ0CLQ1N1ZcomdvQuhODb6YMcYqxJ1lG1bgHgesG5TaYiyfna3C6ssHxk8M + 9B50TV53LJPl6tM5js6ys8RPtKj/M0ilsIFC+0PCoHjzwWGRvQePXrdSqAXlkkJNT0Xpxk8lDx7z + PQRtNGs9e/HzKXO8JIomzPH9ICR9WncS/P7qfPppCtO/45gss3yLaGeZmZcmyjGu6hx7nT1wRvzI + ER64hjgUfRDhVEKRgygoBsn5zzUVxqsvuuw169ExbKHQKQnHVlNoSMuOH5damOiKkmhl9BqWac+t + /Bt0sBbFhbRWpvoYqyM04Jnv9svdAiNKtCBR7sZFiXm23FMdRuQBIHTu4GbZ39yOL7+cXnzhNREL + aGCSlEX05YuxzX7SviWv0Nvl7NPpLDyn43Y6O8tPR7irVUxLHEUjMVl4PA/Ociu+cy32DwsUtM2B + bKuB6+t0r0mAmxLf6rW7rTo1bAvtGBVOzO/EIUn6Mtx8CHJwU/iFxNiPlLwrCtiY4DV7hgUuusSw + 0zfWIeyiCTOCnR4S66+b8roo9k/p7rR2fcqR7aebOSsV4in6gcHuUSjSHEUCn6Zc1+BrUoPHBpv/ + upN9JPzEgCByP7O2kJJWxSnku6d/YUPO8AKBwcrLEcLpWwIbmnbjGNaTNURj/8vxJMcLVLq2d+Z3 + ztamb6yTtUUTZq42PRSuuxTD9EEQoroVX4HzwLf1T3WKmKKdBAIeyw9jXfvQGJZeFqMZJUFZEvoR + ssmIOS79B1V4zi/0Ck1FFPGAbPNxcrBBvfiIr62vMu2uvgfdLyXkgQ4AstlvIJ9nGP2QHSZvzweP + burPVQ9LJG8dNaohOWf4/34oaTF5iVAR3Sq7yY+s5UXZiCkwiqeyROrWc2SJVL+2EOql54wa/8Kn + qfk7Tp6/w/9FpVQdMlX/NualGpzHWFb1JxRUeESlWSOtTcwN5UB1/1uatWcjrTwgUhwgir3uMKPi + I2sOIBsxOYB4Sodety+Zsqau97X97dt6G4ZcG/RCV4DeuEZpASPEtDFF5qcqgA6jXJ9DCPo/UaUb + oHhCJxIHhhYnzbR6z5dldYe/cmmIUS/1zv5wPFrNkQM+/PH5wosD+0BFet3KryIol/wq9JSknTcX + rythin6CdQn1ROPo+VMEjXG8ZII/EybEo3d6mOjnizcSvDvfQAvfh/adPKrc25ECFEwYsfifHB/e + qchIW3peoi5g9gpuQa/jBSw+sr6AZSPmBSyeCnRv5fjJeEXVXLg6eBTyXbbgvzcAa8jXjLbwJk78 + CJfJD5gnrspWOpUprMAHy3DjyJHhxl1OMb1uG25cc4rpqYBFPX1VhQvwAq8abIxnO5p4geP7B87w + zdKpO8NmOkzpHP8Jc+hHRcBa4Mlz/AvRPR/JdeyFUWEbwr/OOF5ML+tQQMk6FNJxhF0oYEr+OpbW + 48KgOj5QQyMU1xMSGG83WOqYo3mOQfGcd5QVhyq2GTGZEt4FK5Jet00Jr8GKpKeCZf7x2a+khLuJ + U0kJj6M4iCeJ60qkyAsjxAB552a6XWezxTUM9d1nLZOFu/55+C1CvGEVSCNmDQuUX75jPLbg/eUX + l8ekvcDSrYvlYsdB9wSKBb6hQzXBl1g+jcPibMfpMocFIHy+28yT+RQf73O/EZly3Q4aWQ7XOAQa + yWF6FOgZTIpeY9JgwcwPmwKnEY1Tol8bIIxVbWuxglmHOUISGnk/9pymtAFoOEH0z5p0B2NZJiUj + l1FUxm3MCylAFT+vCOfwez7mgYd/H9/d51uYdT4t2/ETbb1gF7onRjyJQGJMEW2qCB1EVJN0c5Nv + X5QiXIwoxokW1sJ3Fv6ZYlfUpuImB9iR2s66y79lMuZb21YqqBxf5RUbYBOX99oIz1GRmezyEJYo + oOoqd6I5nIUtfANSZR2naAozxtmuGh0rC/YTCLbwbr7lms0C+kY9LFIeKX0koqiNDiw54JftN49P + eHdir3ezYkqrKEt8goYWnAQzDIhjtQ5jJBgLzVsLJ7KajMHcYp7AsDnUiUNEBkDctJRRDlEJhcx0 + l8/3yyMIHenIOgpssy+NVnlGK9gZJ89Y2LVgJ31kX7BTNFIq2ElPpQ69XmNRdR7Xlv9YzMs26oMv + GC1h2c7Q9bmClHiOyr7n3IJo9LU9y22ReJS1QNSqJTd7GwBh4zK+4fgoeZNAY9+l6Hn3XGRSMgTW + JZ/pVmm5gxfYnuiBwlmUmWFugCHMrR0JH7hWEiaXLqdV609tqOKOfux4/ASAJLbKV13vB8k0vCJu + 6J33jHU0vMmP7COHRCOl0CF6Kqr8rlMB90vFkoAi4Zu+VXfHE4oVc6UP9ESW+fV8mF/3ZNT4ZenD + 8VtsrPTxzWIXU7EI1+G8JmKUDyIge7io2+3oym2Jpk785O208LQi3OAcmMEsW+MVrcJAWqH6rJqK + zaYUxYlqFfEOTz+e62LGNkOkWdidmDl6k9U42Juxxck3VdtiCsoKRlllPFBKHR8SzhtH2Ia4EQUx + Z6g6sMNqv+MaqnWnQc8ky3e6neVbnmqEkfLdZHo/cIi3r7jh9ltWwoLkG2a2Waz5g6t7Ee5tAXUO + 9xHfeVfpBsYFf4Q9Yu12/ImhDtRS+dRNa8IJDox3MLE3IfHu7SEwFfswrThiNUwgaxOqm05KH1o/ + BcImEHPWTKBpSFYft96yiUOBYTf7FDhF/y0gbzZficPJm65oNsVH1uKwbMQUh8VTus+UwViXcOVD + kwrGYwVBOPpJzoCfUlFIiVP/wc6FDtHxf2GHxX+eryEoqmqEPYpqhN1qaoR1JTVCqqiBjMid8vn6 + cc83/Tzjv91kqzJvsntLb5NiR0lsPjYebGDN+VGmFg0bTO/FJPUQvMuOc7V+J/0YwOZh9WUmATkb + qOnnHB0FZ++mn9+hu2C/RtkbuF6+2U7Gn05fIc+FH+cc+30m1K3OOrcwfFyniAjf13ToEvvDTvXj + J6EUbjw4dx0tffSJrWAjGjDEGnomatalm1W2BYFtfQ8kVNSqSA9GKoff0NpBwSfxRPB5SBliGTqd + ULVYWiYe2wekHwlSAgeUn9DFFmYPJGKqZ2PRw9YdPxBeCQsZo92aIqGhegfKnpFogwO3rnc+iNr9 + v+y8qxDIQr6h5gtRnH65FFGoA+RE+h4TpVTpmA9Hl6b7BqisBiQbmojVRrcPkm5WfweJwBkqqDeK + lPLLkmesS0KT/MRa8aUGTLWXPxOpTLuFCPLTStiPLtK566o6pxfwzghf5OyfuWxEZbpoY8kgSfx+ + k63TxWasoaTYrpAT0WGa5/urZTblWwn44SZLv0qqiAenwcrBYYQRLVYNXAnR8bBbNZYUJ+LpVaLH + ggouJoHlHaMXhm7MCtK82932f+gRbFTLPBzRO+E+Mwbew04eJlHFtos05+kdwqRsd4u7/bIrAwex + yzz6uNagl9zw+mlNYRcVH7/raoq5Udut/7x1us3IUCoB2bXddbzVwRHmHQ48QzsDpjEjP8QA9L2Q + iqlugZ7afEDlVVeYrCH4re/GjlfeD/OFthmaR9wSyx4VFTTDOHrG4o7KvvjIWtuXjZjqvnhKnLcM + mj3LkXmuxss85bMmlJnL7dIbbfE/PGvMITY8RJFLIjBQFUpRk09UzCzXk6SxdYnIOqqwpQMahJG+ + 3R7E1XxpeL5DSmG2hdVdLra3Mhyux1DbmmHkNlvnojCb6asqFUoebpoHqNpJiWat5TWHUQMeovhl + D2QXl4lgp9JxbYxrq1WUBkjPiUR6ztkZiwLvmcO6sLTiIzuWpjWisbTiKYmV2+2VW4iVILgsF6La + imBmBRbOE+nsd2WcQBw5bux7J6O2e0glzENLI2wO44+Auwvh1CH3Qbn12W02+7rOF+SDtoBJFTJJ + mU5HeckNkxoqE01QhsOMMaZr7p19YAH0IeRFKwCjX3Gyw9CtW8DKNrTrS2cbwXBurKOFM8EtYspF + +9sH5ndIrKDXrRIrBOVSYgU9Je7w6uVFJRfNjZxS6VqstQfTx6IJFl/BTcBTKzASG3ZUuhvPM/Qq + UsR4tvr3PV4wPK3h1dWmispphaV5pmL1ETjU9cpJDO2t16YzxD4r57zpyJZGQyrlANuR4Y2lXNgQ + VPDO9L7cM9xdBAxP9kqUL0rpebAMTlNqBM9dcMupF1/uPTu6bje621WOUyB9U+YUsBCrADZUVIjQ + QhH/c9S6UpgFUeRTYKw/uif2m1X+LduU8iey6+vFjEct4SQagxzhRlbgnDBKQrOnc3pH/JwPqPtp + x1XGT/SN0BHLM2JkUllvs/08v70H3aK55m0TODdONec65oK0dKXJpuwymhdjBic4wOldNl9wzDE7 + kanlQqjCi/0ao7KAK0jkElrwDJs1ffyeeXnJUPbemwtoyj7hmV63g4MmymU4aP6ULpkPn8/q4KDd + Chz0U7iYmBNM4EeEK4a3zIdSEh4/zHS5wJ96Xi56qVTPSXzmVnLkdFxxszhopSzq5P35+3p6NXVf + loglo8Jq6wvq+Ji/WGKrZiNB7IXM/+fok8R+l+UM9OS07f0dX7lZfSYjJTDiGLemkRM+x9HzAiew + rV6UsYPC8BKdWVMNMyvdgPK7zLYjXOsCJDkhkOTjnYeDppbB9FLNMwWCpC1Dp675lGj6m8362uv/ + xxQ9+DXCvQdrLCqJZnJSJ6WpgD/BhbCtCyWoyOoRCfd3nasCDKHEx0V+UBh7z5jTMSBSfGTtF5KN + mJ4h8VSo7r+/YW4wwgGgw2XBhSS5M+BeOJ8t2WiN/8HUnzgRoMbHVhaJxUZMVzcpbOKMx3W1UOsQ + ThCZRQf1SLlb2Dw56P+1h6ZLE4nRBJ+0weizICTzYP2a9CfsOaL8a8HojOkfpPdB4MSB2hpHVT9p + BiJb5avpYbvOQEBmxIYbsdkOfe0XX3evY1LQeWQQaJaAYx2Cmv8yEGYscBKv/vxWj0NrvsHB2ZPX + ipZBdsZY57Kx6qsO6NOimTL+ND0m4Xy9+qqFHRDYrIw94wGslPPF4EpmiX8yKt76TX/tHMiMkBZ3 + iYGOKSMTCh8wz1GYZj9m5NAgm+hEd1dvsrv8W2qZTHO8g39Q3/mvi7Vyihmu7e6DIUkPF0X71wFL + Hto84Ie+8L3ny3ttxbz/murHr5Pt4miahzosF3M6z9YZOiF3vKl5lv+4LzB0eZvBf8kQ++X04OI1 + jOWhmms1q/gSRy70OuHIweu2OHJIuYojB0+Jc5//fulWceSioIojF3thEEy82I/Qgc9Rc7klcr9Z + zFX5I5wLV1hWzvdbtwoIKQTS4lktblsM2lsd/lthWykap0RX1Xx9xSvgcIYt5FKD8fEChMCsKy2L + ESrX0sdUstofpDf6WKRtoYQBBJ/XT9kL7PR2nO7G0pC6HbsRR+px48n4ar8DOXin/30cuS8KU/by + nr+7SdeLOfybkIYznnCspY6lk7EErcKQ1PEcc0rSmveW1cGPcJ8UuHkewzuABQQRXjOo7lYQJ3YI + kWZ3jKHdY4ystETFtmM1ERwDFGXsnkjIsTaSuGlWjwjE7U21ObiFhXHAV2yBlpoj4mfjQNpKEqdj + QQD5ia2dRDRgWEnoGbG0zeaOmy3RPX6zoqN2B1z/eqSXlC0QRxVFRDBwMVrhJ4tww8piA7q3e1fW + lJuCJ9388fICRmd/N9LrVnejoFy6G+mpAAz89Kl8N4L2UgYM9J8/dSPQRpOJi7F3AW2kc9S700Kn + lLbEmiLbL8ZwBHVFGdgxly/Wt4vlYrWdjL/fLma343STac9nk/HN8n6G9RE3+FfRwNaw3mOKVjpP + 1yL0rFBRbu/X2Sbf3hEeLvAmcesIJNirDcxCFQl2XRqU4R6BFWtyj7gB81lcdY8MhAWrD2yOt0bN + hZ24oelxeX0+MS7tMGZB4GjosI7rUjnzJHLKGp6cOVDV61N6FCAkom0A4xRwQoRHUp7G9itBngee + ZPDHxwuYTfvzQK9bnQdBuXQe6Cmdh8svn0txHkGE+rwZ5xE8fxpg9Fg8CVysyCo8cIYZv1Sifpau + y7y1COThO/Jyl9cUZs3v4G7ldkD5tgE86ZaqnGq+L0xQ8OKwUqGVKrcjWKbsTx3lIPab9nocM+ZI + wn08gU2dVLtd1UlGklsMgeKQL5hOwX/LyBtlzIRngljWNTJqXaE7MS1NyzRR8sGWoCI/rZfemiPe + pBvYZkV56eX9k9OTp8IvlReeeJCBl9vc4F5G43O004mMZBR2d9kSpY5Mj6F9Mc43u1uZUYJSbXp3 + ly4X6Wp89vI8dka4g+X5BpXApdszLu7ddDOV+DFX0Im72niNCVqlEUs1K0Id5tmsDlKnHm3wARts + vZRxH2gtH9pCFeJteCahR6Him+PiZDxitnK/rfuQGCRg51h3s0flEPUZ7myjjhSJI7P6h3NWH+9Y + RrbMDX5V7t1pwx0bIu6H+lGoY/kHVbXjy8fbOalbp+EY8IDhcEKPd5jLRJ7zl+x19Iw5Xfwa8htL + r4ZqQvdpyIeyJtyMRcqlMaWVFzEteIkJhff9+/e1xYVtv5HX7QVvTqfAO4BqpReKKgWhFxQsSQGc + dWWOdPeYNBao6YpAaiRR0+E1Jn3s6mLZmw0Evu+KcDvlhf6TVSsOQ5l2YLWaHebmT1z7czCPjRcn + yaHp7WOYOpJwq1UiUWE9TldoIfWNdVCPU4EWUg+FBd6+mrNR+lx8UH39U7pzq5DAjoIbwn2HzIhF + jNBC9FrnvDP3yynCHsCUoYHxuGLnjwSOTargiaMSsxKckk6FC4uPrBOzZCNmYpZ4Shvg7PfX43mO + KpAySlYfjc/2mVdaVY08T7QKCeg5DAgFYH+1+J/9AusSaO4wqfLVxa/bxen0Jv+I74ifzMd9j5Gz + Xs3hERDTcmMzydXciBfG7QRMrH1ly9mKZgzeph7T5ga+cSuhiBRc+fvLy5NR819M6p4XMjcMBb4R + +Zeu0x2wQ2HaPhafB1GTKKECOzMYyQcGYopDUm6Xi/UwKEU4y2oWbLv7M2DoHlswXb96ol3qp/Zq + YJgQwNoMl8cQp4ehqnx/qvDdRwC1F2DcCT+FNczs+EjBhAeg//HqImCJvb+AXrfyFwjKJX8BPRWV + Rs8vKrElToSVtnX/WYgZO7HjQyfwZ4z7Bbn/R7HM06t8v5oX0iXwk+X9cjxbbMlyqrmfn5yfv4ef + JxORkCKqGc03+5vt+M3fcBOIOIn0Dl1nL2ocNaCS39xk2x1edvAHlGaETZoLMnDdvr7QseIwBuMr + 30rcUfFmvakGvRw4jmZJxbjNTxWFcZA4fiUYxmJyauNivCgIGuJYjKaGqLv4J1vQEW5f6SxwE6pz + FfpBpFu6rvNlBz7S40p6kPvkYYhWZ/64O2Ak9ief7y4bvKvxkgzatJ26JAoNFgCT8KjuPz59cANm + n8NPr1vxakG5xKvpKfHqTxfVerK+E8Wmbzd8PmWRG8TRhEWgiBQ5/BW/4O423ZV9ghwwtrAXCCVV + eBorZrVS5teTi3XusjWwAiOd2zRkCtrKSej9F25jrEqHWcQibxFUVWxI1cjgpiEZ+vBpM++ZDqr7 + VEPYVKxSMrHFB+w1uJOTkMV+FJRjExsHzbfaOQgSmsl2Ir2uU2hbqdtG+Udow+jA2/eTcraoHFNd + INRDrjYwFThG0OMFD1rEGEgeXpxvxOJdZpvgxQNtihEeC1X2myXBSMwWt6FrdCXeizEkoxv1q9DB + qvmw7dZl5jssMnxk2Q/yHT65+IQtCav3SZXYA7rtDn1d1/SfOkauTic9OrguocDz//7AvA4XDr1u + deEIyqULh56K4LqLS68CGuN5JdAYF0FjfJaEExYGLi5hWwHzfy2B/uw/qIB5GEZ9a5Yoo7YKvnW9 + t1FneHP5kbXlTzZiGv7EU1nIcLXNNhgElO2/AoVcmJG4ebv1j0YLVNWF+049LwjMXGE9mq9jFN9h + g+8AdqQBSHSxGj1qleQxGJHkaaGo5PMPTuLaW1XodSvGKSiXGCc9FVGYl79XJPWA18zTGWf8/KkH + GzWOJ6BCsVBI6us9DucbylnL68UuG6/3d7J4+OV2X5V8e0b8Jm7i+2EFbku2WpsTawYsVkC2CkE0 + jjCdoYwwVSZdptcYnCzpjcoh28Yc6XGJ8g8anBW3QtTDTMm34cly/+MFyJ3/gr+r6tx4OPfrbHOd + wrG8LzgZrLJk86HDvJEYBbeyV8ZqxT76hrT1Dl0uXFyWHz92JiB2ZmUNOiZ716D4JRTdfX4BB7kD + X+Gv2/EVolzmK/wp8ZWLd+Xobo8DE1f4ShwFXuhO4EeSiKzvt7tqZLDQ9Da3OWp1YnvDQ9BSpsvF + V5USITXvi9uaEG828aZXMJYpFnFMV0XCUm3AN3SvKSwblj9gQSXeG6uer7LZV5OxJV7QxNjihMVS + sy/R2S3WZTJNgFFNZLa3d3leRyhq4l4gEzuuXzEIlysxGuaGxDX69eX0srZfGt9urpxoJFnGkQll + aJoQDOKKcZeKceebm3QlsZh04pHDApteFwI2LImAxzPoMBaVOtlOhyMof0/hP0bfOI5/LfAWYnhH + Daah+iYqINS8zXUuxLQnGPq9HxtM4aSU6hCXob7aWwQ+DC2IXaJiyutK7hoDc8NGoEbRzAhoWrOC + izIrMIEc26flhcTSRuVENCSysc/GT86/ztj6hDIFoOliEWUW6L810L5GLvPkzdctW3Mqb7czd30y + Qi6p7mUvTAgiiSLOUeblYRxdKmVE9UXpjb32mw22Me46qeLU7Fc7GqKGEZwdioRGWtpBsiPiUiaA + /R7rpmL0on+42wiGh2+aCO18BmC31MgIjdWWHJKzDpzq1k6NxHWGbx28A+2EsJCStU38u67WN4r8 + VPLOdWHcGy4er/5Tn5U+hUXO9yhodRRGozCWh7U+y+UQzBM5ALNN/mPRAQXf4rtDDccGARh/Xw/f + EPI4F28Mk4qUgaxOWyBqbRtfc0nM5nOG59VYxV+iVPie51HRzXQn7rt/ZXQgxET8rJDs5gLch5fC + rj62xZL2LkotlaBYmiLDOHjmeJ0MkfSJrRlSNGAYIemZrOGyKWdWj8p1XTQ6mP3vJI4sIP0ogs6U + ySpRFXJATuxWnkx9Y10fRzRhlsehh6RmLnY7oTSCBDYDgWd1kyno2VERGKwqvCxucEu/NgOYkQpP + jnFl4LJPdXPM25vvZfoVd7bmOOttLQWFOTRCQFSXj4py7xW43DUFxI+pmGTjLA9QdGqYjLLYpdxH + vkdaA/bsg16tSbbfGAJ19OCMtXC6xKGiDW8+QLc64Gnz1+3wtIlyGU+bPxVm5I+1eNrMr+Jps8R3 + /QlzPeYw6aFZLLP5FH/UokbrxafEmtAC6ZWoyOp81wS/jUmZohRPrbEnSpqMPUmSOHFQycE//WIU + 1zBMImHsNBGLEN0jrhJrNLBgeQtT/9eC6hI3AUmuTI1XgMsQhwOXsZiyur46LmuyBjX0tYzL3TwL + idUsKCvC4XpVplmk2XrgeQHIUrbk9W1kOkujpoIXcPpD9FeMLk2Ag7v9EkQ1BWZg7LcJqHBbijw5 + uMu1HqG1AP5qlnzkc66VfXwxhgNYUIAWxI4S1hEUSDF0h+Ie8WseVJOqeJgZL+Jb/KVm+4zwjBc4 + 6nEoSik5UpM6OLnWVow+dS6bLSJHl8B7XFXrAuZSzIi2Ycq2mS7Uji/tZtbULHFZS3PCcWE8orpc + Sy25h4e7Qk6KnxzivlYTglcIvlm6ZSy/TZzK6ckeslDnw6Xza9pgTzhWKSMxUdjKdTq4xOh1y8JW + nHKlsBU+lTVHLquFrUDTKBe2ehrAeN0JXGGBcLSrkhpYbL3u7sDSFzsTHESUI9k2y0PAvXA4hqzh + hU2xo7EXhk5SjUI9/VRZWQN6M/Aa3fpR5IdBxa2/awpsBY0jafDZgFAZgJxWBjcyp8QsOhXHTXe7 + PlCD1FSyp+xHJSYg9J2k0ZkBsk4SaJVRmpaxCI3k9EGokAs7ws1TFJOK45EYBDemVIF3UNUX+Ms8 + px7pfkMIabxIUdnoeCHD6FRLonf8g0aG3UjpWCSco3A9B4Hh7BevdWReb29jNz/T+gUtjv1hc6IQ + nHb98WiaSBy2/h2PhXMckg2yLd5+upJm0A5lFBPHVVDMHeAm6XVrKOYq3CQ9FRr52zdRJSSWwbxW + sZijKGTOxIuSIBYGy8v0bYoDymfkBntDBTEj7+urVKraN9eRV7lbLk/fnjZEU7iN9a7ginRjUJkf + KDb2FgT2vIQeYVx6QdSI7Ce7pit6fIwmUR30Qoz+hcHZQbm6K+yIt8j+Mw0nR84YTDloaiIxQSRc + bF/A0QXZXHDU+QI4fXq/Hc9Bc8P0CLr+77IF10649CmhiUd8E2hAy/5wyD+USVVjIC1SBThgSnOS + QLthLCDHmlSzViZ6tu19wxcX367bBA9DpDlngERY44hYXR52Xz5YmoQfhglf7MsP7/82foK94HEW + J936wk3GPin2zaen2QLaJFEEjBRQzVwrOEdHvB/Juz0FyhN5/jPGuoHy0DfWoDyiCROUhx4K4+ht + ik7alSr2nm/qYXjgtP13GarlY7oNqgA8ok2syxVGbHR8JqriCiEBN6hELg4dj3RMTPhjPCbHSpAs + cDxmdLIfHQ/9tfjJ64updlN2wJ2xHbEfiFic2ml9fdGD8n8Cuo31R1azNYy/x0PDKV1rLae6907x + QOrly/Nuu4buHrS4WNNlTkR8OwPBZHubz74eZxTyw5gIYtD7sv98BsyhQgT7FXIs7fz1MxLJCiqu + 18FIRK9biu2cckVsx6cika2Cig1Su4sm2pLUHgRuFE+CIJZ50+fNmPCYtbkTroez+cyN1xg5iYbB + nayK/sfNEjpRBWkfrMLKo8p0c7EsxEiuuspZ816Fz5jb6b6nT2yve9GAcdvTM1rDf7xC/0aWKvyy + 0e+erK5Nl4x+x7xarKvweqIJTFdL5OU+BJgy3HdkVjYznS8vf59yuj/zEoooTopCNoWZC7PwVGGl + Cux7/wCEHlcObi9HdXBaVJvlM985WM/3XJqkg6NqsnnBvUA2eLGVjoV4SxxKXPv4wXFD+4xfet2u + fABRLpcP4E9Fgsn5JYtfllmlF7KgXEBg6rpuEkcT1/V49VidWRZcTejltKee+M7liVZBWSwhaOJZ + ugH1HJkK5QuDBHax3rL4lOK6q7U3XsMQQA4cXzJPoMvs4N+xRrycuYLkrqqMmDYgOiB5Fyudk4H9 + r3kia3pSyq4zqxfo+Q5BkCDTLWdpFMtfqrWtUL9N1AmvMaFCb0Dx8eKizotSSqZFnblliqPHuG4j + 2oqqEoBP1nn4x/+fvX9rbhtJ1oXha/4L3nwxVphUo3CGdSVLtqzVkq0luWemvx0TOyASkrhMElw8 + 2Nb8+jezsqqAwoEsgNDBPXvFmpYFobIKdczKw/OoOP5KUzx8xvnXG8ZzhhMOg5Zk2ylfjt5heEO7 + NrbgQvsbkqjDLZpW+1LBp3PrC1zSxbuDTMZACajAWNhi+A/U0WFk+N8CpIsjqm5udeaT7RfMagnb + 4ULpnOkgXv3FbPi4fIk1Ri69RjXbtm+rlm/fQ3Z2ZnbToHOxwZlbD8v0GoiiMgkUSm6w/z2lYKNR + YFFI7AfLttgdkRVkFMCfnEPGmjIAUyFzAmBRSYH/l57S2YyJKemqgFyYV3PzL+jqb64CDKIOJVir + FYjcF1/LfekYCHV3ztQzCf6rI5i+nsxu8zjvjijCI7KwVq6R9up8KBDjoJnmdg963RAxjksuIcbh + U1Ln/zy7KiPGMT8qIsa9dRzfc72B4wQ+xiTghjGD2XmrcBgpmFIe8Zyvjncf5nVOEM4r5fsoBvFD + Gxc8903aQBYVtGBqzQn9+uNmfj/RtevIDoLayBQGt2+/TOH1BGx18w0MATS6kD8MykMBA1SFujAn + QudnvUgBZqPp5ZFn7ZDXO5GdNlwmhH+2SkawslPoceQZlMoCOkkxOQiO+0fV/P44gZH6zocob1oX + WaMxzO/VmmvEG2gnbB5rkArrqjyuCI9RmhrZjNgyIbjQKirFG7g0WNaih/M1g3KzyLHq0c4Tzybz + lLSYPZmWeGfzA74VwJA6P7ywRCuvettADoEek5KW/Mxr0MvkvrkWj8sFi8DMv4+nQ37fyJbZb1sz + WeWOpZgzHOu925g6QxYyttvJSnTLnXhKO9j67lZYYuvpcCiMQm7YPf1F8devH8/PP5Uofb6i9DdX + l+eniCXmIFzmQQ+r5JY++J0UHTvkp8wpJ52tDpTePt9sOpGzaNhh8nNEMcF1As09d79A4AEaS4Ny + I3dyGm2hNDLvnygoLVMcyXE8Q3sBXBVmoBg14vJ16co5wohDfWI11NRegi4p4CONDIy72v405tzu + /H7Mtz2+MNE6gi3bAbNZ3Cn2UTy7rvlJ/Xpie2eWgJu3PNvcvkyvG8LNc8kluHl8Stv56fuPbglu + 3vbCItz80PNCzwoGng+bp4jZuM5jd52MR4GEEsl6lSucp7d3bnV4tjAw6RDBXi3QTlTJiCwtMpR+ + /Nv6YZkQj1KxNRrsjh/UVuO6dhgUg6zFWTOVoVm5rVJTG209m2qnXNn6nDaVx+otyYe510i+foIU + v6LQ9FrbthDdu5Zu/Mc86S2O/WLIh1l2usoGWxYnyaI0LpT7pbqz3MwjHb54xU3hl6OZPQz6GTCO + NFQf5ZOgJNzNuIczXSHTux6B0Ihtb8vglhb0tgC0fbOwXC/0eYMWcOsV/OP54StA9jSK+0IHGaar + 8u+FoapgkdLHzlRqp4ZNnwJHigOSLif328Id9srr2Tai3RyMruORhmK0V+0Ik9nCHdnVucQEbbrt + NjiX6HVD2nQuuUSbjk+l3/PCto61k8kJHN/2wxJz+jDwHNt2B4Hncn69rY5PQkx/41c60AY1DrSp + bb2vc6Chw+yChXHZY6YcnVA83uLopCY1dnSWvIZ/KUfnM45Tj+aacmyGntd7SjfeTn9HM+JpXD/J + j2TM+3CzlrgdMfznEYPjX4tbcG/fnpe70WxZNiY93K1f73W40uo/Wu7qtmLiDMND1oiuUJUx5uEU + Veg0nPSQdvjxaCnuEeMJnAI98V94ysk1I8cSUV1E7LcrqKsSvNew7I7E+L0z6z0SUI18UBJWn07f + TM72zC9macFW0xR20VpP2zaCDZf2Fuxj/uc7AlpAEpJUYgnCVF1NRPicweIMKH0iS4pZTaYgE8cO + dvERWq2RO6gBvCATrkX8kJy028d+ZVDf1ghBkBXWNQ8EUsyB8cd6ghO43LLZhIez6N3IH5oZpkD9 + DayyEVEmpXxyhr9HqCk+GCcKdZFXSr4DmaX5kCCFX9aTeWnQBSMMwUyXDc6gJ8lKfTnW8C5vVoHC + bXjCoBNjE+X+ISyuQ4iMDwleE9tzmbkey0F77CVHufn3l0XqjtJPyIh53l5epn0ZtK36Or0dm6Ji + ubZGs1CnlEVxACAhZ64wGHBzu3EQ8mXx8DheptP24GRMpdOFp/ah5TVz1Ikypn46WYXmphMPSaXS + mBcW0Pd4Asms2zcC4+dACyuSry1S+M9tOla0Cv2buwnrrfA/GG0Ed3SumHWBONQeHgj0DvIilZs9 + 3mR2o9YTY2/AoF8y70xQZZS61KzxoWB5EMWf8pCVq84VcDdW0IBZhl43hLvhkktwN/hUABB8fe+X + 4G6CIgek8+6tHUXwhwFMKw/DVHGVEk7ZzWTuIFdKf/0jHT483i7hjBcdSxAE61v/L52wJI1AnBCx + 0CdxqVd62OMKIwbalaU4MU/hUTSYDvS6MR5FeTrQU5oOV3+elBPbHNTiinAUIagLMB3CMHAcReH1 + PVki5+7jcvMd4+TXaT/9GU9TTCDPktiuHivgH+W60a2Edh0jkG05kWeV4rVUzaN4eZv+fJzWO9CC + EuLRIIcGpMlXk+Tz8enVJ7yPcC9t2QMVuCXnmS6ABwTOk0oGCd+KSi693lXVB01WKSJVDLKdErYk + QWvAJ+HOkTiCa9T9A5yl4uDAvwupfRgee9G/3SCIxd1djoZT+aKO+M2KovX4vE/6D5tZPO8/wMUe + VlE/XiZ5XBKOVTjFYaArAB6XPZxpOcwLqye6gF8mC93UbCs2llJnqQhhi+Mne8uwMEPGuNd6aQtJ + 7cXceMqFaau0B4TOs31RGp3NLUW9ZsQ7Ndk68dBZkUP65C0CzLwMznG/Yy8eZS++v7Yjx/w0pNeN + TkMhuXAa0lM6DU++lsKd4dALdL5Sx333Ngj9yHcGQRg6YbCdr/R2CfKfMoMbwW3Hy839TsY92OUK + TKgZZnEUMNhHi9i/+yhJyXLGb+3pXR+6HwdcRYyoU+R7PNrwHGEZc9/7+/tjW54ScGELiHpnT2iR + kOyzxWZsE1hJlezQFp0PkKUv2EZNUUMUwo1JsnTTexOt2lLvNV39r4Jsz7NpWzaj1ds+0EzsiZUD + vTeBX8RUVpbDzrxD1ii8OStkmpWlKtGysuRT2rGWPPBdOKZc66bCrX/DrF79X7iAITeV2J4vYYcM + XMlmQALtoGGeL62ynbXl1fhjTVOJWKh8qbDoD61G+YRZIWNvqqxEd6eKpzRzF7NYwGtc0VaKPQij + KCDSRVA9KEvQ/uCgV/nSFcoovomCOYqWxcjy5wdeTmczyS3cft3YEysVytO+mbZGuUIZttDZ9xMT + VoTtLz61Xxl736XUXh5FttTWt3+hse3cXORWcCPPCrMDq3yoNFj5luDHuo2XsIyQOWOxNk74NOX3 + ahCE/9dg8JXjxGz6Hm4Rf16qLssmL80svkdTBIxp+4teZ9dzo6trAwqgvS/CnkfwnejKuk/mQwKy + QEEF4pWBHmL+HdVtOLTmkyori/lO9TT170A5pJR3WWd2CDTUTrfX4vu2GBv9M0bpBpSTMS4qvdJZ + +j2RDJZo5uvui/d2WGa2CtpYyoIGxKt634eXubofz/ElWL7wHbRsOBFs/Sdz2LV4jhpQ00bR1xWZ + gl7GgKKyL6FVh6DbN3Lp8iLGHl2qQHfo8mek3M1GK5F1KflZcBwQF2eBqECbBc9lTZc99JZkFhCV + YpfBL+ZdviiVfLrQaLFhkyqmSalih109rtbJDKSJaZ1M48cKwJ0XTnI0SysuRy4EjuuXW6a6fovH + uz4ATcH3QvVDEeefjIu5F9TXnBczXj/8iJvF/+Ols/jBamskEtSxeaNd35fqbCYuXq4S7O2dQvZW + yJ432Iumv+eXp3/FImoXI2JbIq2CsSZwcvx1w7QKLrmUVoFPaR85vim7J50AmRMKORVuFLmeN/Dw + ThPUoDb235xxnJl+no78gDxocnKuyHmFxkmdV3IWw146T5bSy328qnFqVqQIwhDXgexjTIAdPBkO + xR4G3DPFG8n7TNpMMFvhfhPzJKCcnjyeCPcfpaM9TG4nOPEwie5sEdvQU6DRPHBnIXLCH5/8zmTH + 83dX+e4+oszopmhyMNq4WcHkPBvN3YU0Mse3K9IH7/ImQTjvlwRm0cNJprIpAtvGpcVcy6HV8j1e + of4jYC4mc213IcCXBGYUbLZN46MZ3U+yjpbqGewSsPGkyyz9avcuWweSb9l0aMmWFjjUK5WMWlke + hbfNeQx3KdtPaK6YCYgnIVLzqNqM6wgEIfq2OhrF/75IDO4+RsjirZRFvqfPk3i6eIgVgGkrP6YZ + H7TZRPYssqucnV4Na/aBRmZ2m4k0c+ayJmnm+LphmjmXXEozx6cizfxLGffIclyvlGYOmlcYeYPA + iaKIGSA+Z2STuDV+n8S3kym/wuQjIBPYnG6nk9UDDqvKf1qk4v6KW/AM+allpAPs+csENKa76Qb2 + zdUonyP75uzj1cHwbkPAMXr2BGYmp3yPzKY5j2FaYHvR7a4QaygxPl10cea5ng8KvPdUZ57qMK2P + 9PMusjSv6vnl1SDnDAXl12EIHtV7ibHkZ9YG/oupggOCHIzv73O69wRpZtYJXoqwChHas9gsJ3cT + eJRDsozl34frh2W6uX9YbOB+tN6MJ8mqh5NcZZh7LsGjRiKXBe8Megca7wf7G8iJ2OQsnd5PcIZi + hDr3fzRw2KpT1rK3gNltB+yrO6P25aog3Z0yrOkjm7mPTcs+EWVaa7jUgOK0qNnxgoPrNo0abmtg + JrCsPSKA5OFk52Hpreaw9FYjWHqrApYeVygeUrebtfCgzZPxWGZFSQ1RolL5tuPYwUGv6h3ZEe9R + UrEAiifAel+kNnrkuMqY5cuQDAYEK9XD09n4OAo59YyxZgOkyhjjpooqdNhUekgj85CPCpIJ3FV5 + 0vKb/1je6uwBG3jAjV4e87vjDWiWs23MidNIavtchF0bW5azl1Yic5l7OZ41qlNOYVdM4av37JhZ + h5bfKM4kK2U4jXPV5Cdy9pim8umH41P436f+bfpT5TT19FQnnJIq3en0YcmKSMC5umCqOA5xYbwm + FounnnsvRZ3xahM9O8AGJ1ekNvn2z7WzXMuSLs66Kd5FLR2lhb46927bXMindSfKPZZSb/7rgvmu + uY2BXjeyMQjJBRsDPSX17evV72XicTsKdNu2/W4I19HIiwYM/s8TagUBp3xPclEBOXyz0fHlVT1c + Ft3lvy6+VdzltxasIpD1Iq8O2CcIbd+Jgn+1MxjUCcrsBdsbW4OiF7GaSuzQdphVYrvtGqxPq0aZ + LK6Pbwq2Xt17qQFH275XsF1sF94dYl+N/FWyGaeg6D5As4WZXGtwkWM4azDjwY8w8L0dM684y48k + sOuq/z25T8RiqLbRZ/jbSMGO1pXreDXECst29SNpsyQ367IMH/h+9MiqXAsoD1oVL1Xy1HgzH6P5 + gDuUYLnZBPUE/3IWPVz8KhsqsCgbyiVyXYMBM9Iq9pH3xBAzNpm0YSC2zvuS1C00Nq1l1lh5Xiij + uqVVJqKoS7MN/DlE1mAvdqaBwh5r5yf3TojJXdI0eKGd231T8RHb3ZcNU+T2lPkL5MoxXyzBvT6G + YZouFjEjtN6qNfqCkcPyQ3OtkV43ZOTgkkuMHPiUtMaPv3+yS4wcts+KjBxDN/LgXBm4UWiHgl7v + axWktPCt36XLbw9JPJYAtdw5LzOACcE2t93jQVZx7h/14+kq1fwfNaBYny4vuJBPl9dHu2lQP357 + sKsRmTerAhqz49a5nawwipgdFjW87TjbOsakpVNsnJ0Pzq/O8xW4nlvMoTuzh6tFMprcwYQqotdX + hWhpfirG/JKfSq8x+6T2CtnZrm/QffB1jbWCotiBpusJ0b2PxalWNQJca4r7s/h/4JclJskJnSvH + gwFtObN/uxTkINzOeKSgiHMJ7Cu9CuiVZJrO70WsSRZpIGoxmbLZDBXrh2bubyfTW08iRvdwrSo2 + EsxGoSEl6r76IML+eLPEOvHbhvRthtF8W9SjJ623zvkG38wP6W3BHNnAo6QmDA7bOA2fgY8ilDan + bDI1/4b64CA6O6vWcoOOcD1hL6kB6G43mfaR2gqjrztDrcD/3g0tV1VlB5h0JhK26VR4Bildpht2 + CJQpoKnEMbU3GUVl53Vey5YJ6nh0GZT2zuwIbj52UvdTyb/MxTTGRn5FKmLqVhQVaF5FekY64Gr8 + IOyAq80Ijic8hsaJDJzm2ZPko52DqnTQM3mpP4HPHq4207tNLuyQbB49rI8nCIcCS823oohm4UQC + c0gnQM2yN2fbaSx6+z7NLJoIqg8MEhPNG8soWy0fcTNVDcriQga5+tdpP+v3fereL8rGtiPaScqt + BQUonjS0CcGFkfHljSH79Ae0gNWYXPZB0dkjKGWH645IW/WxnMznSVuABRRZbBaIRNvkZElWRepp + aUSBLbD1fNgvLsbiRhncA/bIVAwZHW5G+00HnrOO6tsOs2ORIqlWyUikhrS1RbhktcFlktIKecHE + Mbl4meeoCSAPgdF0s0KVtbVEPjY2lwknYb8rsVztdoRYtzOxfKG63YiVGkMGuuAHdsMwjqyQMeiC + rEQHXRBPSXOIVwsRpZxzA8T6FMxHbMDiAQ0/nfYfkp/xt8lKFlAG0fzLKJwDL9iuS1EdIRl7R5hW + iwotz9OkYJhv0HOYhd8qAtOxRKaciq6lTE7YqWPUBuexTPgoV6hCb40rsyMvpLdFZ2S90BFV9esF + YH2dkVJZIUqA0wbY/NyzQlsf2LpZ3sFh5UQRVy/q113Dg+S1mMblKnEY2QTqO9MdisZCX/nDzrrW + cUKP1zyeCLembMJwAbtCwwHduqFHBN97DdqzufmfXjeD7yXJRfhe/pQ28L9f3XjlqBEO46fj9w7d + kIXMHbihHYS2npmicdxxY41KXpCodd+WUOeo62SPnKTqeHxdaug0ldrUJ+D6oOBF7KlSUSRtxAxt + HSuE+QYlYsDjEPhvSZnICjYKLfwib+6Xre19UJknKgUB3TUI57rqx7AQZomwoH9eLzHMh7tl5J9h + AsLfB+oFEZiAVuzTDz9Pf/s0xAhPLc7tarlwncVApGyu+jpee/Yl48lKwrb3Pn+9VtZvFhDgK3yd + RUagyjJmuz52kTr0dvduI/saBhpxjXovDp7QCfln5hvW5D72ErS+RFG9teOqqzUo+ESJKPspHLC9 + cBWyciPa2oSuchUcSrC/uLYt1xzxlF43Ok+E5MJ5Qk/pPPnv63OvlGBvO4UEe/fdW8+z7cAewA/f + CtRxgvdX1LM5G5DcIukI+e/lxCudH7qBpnCG1GF/P3XC4B5J8pfbjEViahQ4ZWGQN7Ocs4QWzrh/ + 8uWfjG87R3CJeew/xN/Rzd6Px+OJcFoqL2guBxrZbGXBHg6mSmRnkdvrbEMzllKTgt0+Zew1Gvb2 + BDlzmENGaQ3krFHrqtJGHEqbvmqWNn1lnjZ9VZk2fZVLm/79+Nop7iaegwb9/G4SvhuGzAvscBCy + IGJiN7mczDerIezGQ/q4BBNZR7CENrcbBNhN0RlEao5Y7SsZQYHZRTyRNpngvwfl/OYyRQi+r5HI + 8aRa6QxOszxfjEqZfGOLwjKWyofIrBaucx42cG8Q0fJ7vHQqdsfse3VehHry79CLogpFuPzBukBW + JEPIEEkCO4ILRGmzLY1FTYxMUBfGrTU1v4tvE1anuYewwQVBMRQZmWfT+3j2KMdjlM7/ZyN881zd + VRnYYty0DT5wi1nhKvKZIf+FXahOzLdicM02ngm9ezNJYhZrkiw/qAnTiWwEynDw/PmPWDQ93Fjk + yQZ6Lie8RZAN2tezD25gWtzBQ6suG4FLdhY1tZqdPjip9PKmU9PUPgkThTyB3X88SA4KXTzEs2Bc + b+s0lxxWS1a4fM36uQt6L1eqCTzTYMIt/zIYDD8ISaKbRqW3l1o/3Dt4yLY1h4k1I3YuIyVsZ6EX + i6Df9165wyK9J71Y4Ba3p6YNqJSwk6MVC3rFgjl6nmYQ5fsKNeD77i4tVTAjFHQKo/EyLburAcUN + 8zkEGkyJlw3ol1cUW8ZQecExooU2I1CQhUzjqFQlWiSVfCpiqZKRLV2i43gBmkhvlMZr5Gvuw3E9 + y5DvbvibGgUlPuGBUbYbCOYEX0OGkaui3sD5xFDzlFsMY4kzRIIPbYWtKaOLtpFi1DauAXy4Rn2T + MGG+w1EIW0AGG9cB7DvCCQlUVWgLXLdhd6mvZ5ChDkHDWle6N0SQsjQwwlZr0jN7Yw497bHaBQoQ + SgmVlGHuHBId1fhwa+593tcKJCPyVXHcdxrLINXs5MvVufr0ajnm3CbmMrdbudzsWiIN7M1Gh+uA + TAERyyYLu2/75DaXdp52OobxSboD/N7XpOyB+i7PVkdGGzlOeGi5jWKNqIhppJGoQIszomd0po4m + Y+FxHsV3dwnmT0InbdDKPU5iuOpKIKTtf+6fgJweCsOoojAIo1dA5Lz/paa5NVxZeIk++Mu143vm + Fl563cjCKyQXLLz0VPDFnl+V0w8jNHHkLbwBglbYjusFAw5A64fbOfLSJdRQEW3wFyIN7qlEsDDi + QfSvgClFzStPAa4G5n5Iet0YcDUo+SHpKc2rD7+fVwCueqwIuPo28Jhve4PAc2w8snFWfVg/xPN0 + ivAGMsBnAHvIZAbHGs8C5FgQE7weoRFSBgNNxo/TJF+UIvlwR5BAESenV0PtFQUTwQMqkp8CuxrW + 8bQyS5xP7w/fJk8Im1pXtwZIwqzaUBqMb/TDktik3Kk1sh3LM5Kd5afWDYCKpixRJcO9qh5ChOro + vcQ0UDOAxz3UDAWGzYCCO0rh/jS53XCqElis+QbIktV1y7+Kanu4WDLgVo/8vD5RQOzu3K2hqtty + Kn2vVINsWWvhLZI+emJC8yJ1C8/E4uMKN+zWqf6Ekn6N+E55RvgK99QJDi2vieVGlTFGPhVV6NCn + 9FComKO10CmgcmQKmU/mQ1xh8WSO6+vrUJheejv+jossR29wgnLzNh6siKOgwhALEw9Fm0ol9S6d + 7om1Zixxh1bb2Atk3MJA6BrcALnLrFUyILmuTQp3yXb0xITrrz14nUAfd03QPT7LKDz+eZEju7k+ + 7w0t4zEr5L2/meNyS8a7G2Ta7S1Eb914AxEk6NiO+aWPXjcMEuSSS0GC+FTQov/jBLu7ECXIIRb0 + KMFhEIQscAbwI5JQhaVY5YFO7BKr3SQ3+0+SO1SZH+JVvn9BaVInwsmPO9tdCA375McIfinHwGQh + qZXYhX7I6kKtWRi6XlSCA3wFF8kn7c8eH2oVQ+gwr7sYwj2CoqVJ0bVdyvicp9ulvDDKRFZ67+Bo + EwlVPjsBdNEZSu/e0Bcd2U3tgE+if0/mo/YJr10xLjqhApt3TtxD1gyoWxUyhpuXleh48+IpbbfT + yaKYlwlC49Hj9H4KbVmCdiJeOV7fw4hoCZz4hGPNR7ZLyq5P5+z3eLRJ85rbtl3AXPH1SW2CBk3G + +zJGW35ECATxBpS4h/h+n2w9A1k7jHMU9UVf1pYUQUqLXMehW5w+kNvllvRwx5L7uDQTbk29MdQL + O3EpEpiS4nlpWpwiU9QknW5myT7XnT1SQ1qK2JWpsoXCpnWfvyAZS654R2zfDhPERYj3lk2kFmAY + nfFtuyGhatRsv20tOjb5Q3dKMQcO6QhS3YkU3EHEouZwB6KQMdyBrESHOxBP6eLyY31ne3Quwj+x + 9RgT1cv9e9D/B7wzEDhr+JeIQxg4GNDT69bN4lK619m17UTmNzl63egmJyQXbnL0VLjvPvzTLvlZ + cAbofpbo3TCCIzBigyjArULke3FC3vlR/yr5yUJKGoV/2gz+uUxy2NdZFHgeCPtQXNaoSJU/BE0n + epqCXZcTFoW+6/hWKe+BSINLWbVeIS2hTlLO/zH/N3R2XxAf12UohJZb66+xbbhABVEdorxUOPV7 + I6vzpWjNLGK7D3OfDXPiPlkXJYOqVUSNzyOJSuk9McZ62H4mEu6XqipOistno2jFKn/jvPp6Yx+p + C4mg1YWhDxZbUNJpYvX4LFXo6G7A+EL0PA3NfDLj0U9QQ5ofddGk0sqsd2w4tuCvrEEz3HlhKaWG + 7h0hRXet3FcZ6hy7y+2qONQE4BC3VC+eMaCqUTpuZcd1kMvrMnUVdE+iQ9YMH1CUMb4Iiir0eyA9 + FNl05x/ds/44RTycHv/lt8tjVzxQ8Td5WXjt85klDr1AmWr2stHvsp6Yq+QvRMu0N5MY74YXDDiT + 09POLBWfnEPWJDxMlTG3U1AVBTMFfyicdkjOsUQAiWTDM6OE35jPyovj6fdIgkNrU1XIxakK1xey + UIRq814PnyCK+Gk5pJ/cQ6V0Tx4d+OeHaytwzEN86HUj3VNILuie9JR0z+OL0xLUgMXTf/OqZ/Du + rWO5lh0MHJj5oQjx+WM9odTEz8enV2+hm3lsxGKZiA4YpaSvHfaPSWEj+8fvb6XSeTwdd4RGELmw + KzileJl4ysEHixiE1SEzlh2aSFdqnkIfzGayptwxFtaGx3ih53lWEaqgurk6dXFeDVrqwTnpXT1u + qOpgyi+NR0jPw2NuZlzYkVSq5Rgd9TeGw3uEGuZqPVlvBMK7AINPxj2cXVJltMKA+y1C5ikr7372 + Nyawu+hTzKJd6rLiOkNKfVlQBa8C2rRO+a79ClewM9esnjcwH1pDd2LIxhbZ/wdkv7k6ePuvhrE+ + XWRSdQsD6jgB2Si29OLV28b9KE8OCjo+v7BYA/8zvW50cgjJhZODngqrxek1K4OecfTXvP+ZvRs6 + dmhb3sBxbBcDn/Do0PkH4WozS/hOh5eMhNOf4BtyFEdoD1/DGn9z/P7kQAvLFwqJMGKMl6xsxFAX + l9zuzG812u6cI5pnjs1gKRUPE8MW1RwuVmRUnTpdMCM5nVafLcyL6s8W24IJ4nr/6pm1F/p8M11P + xsvNvfYZ+TOHv7GYwhTGt5Z42KwRzPOoL7S5lWzuZrGOvyX9H7C9ykfaETVZ8ZMIZuoEzgdJBcKP + HBw8GDsdlmceg4xbWAHEstDjk07hl9l0ouyZkMd7E4uUunzn6fFKIsZ5Z3QWCrQ3P1RIpmuQsIdJ + PWDEa04ftIIPGsJ2tT9Gp2v7igJVjwcepRuY42MOtIFTQI2CAj9AYChEv8C5b6quyA3bE3b4K4e9 + R67lRqlAqpChHT6rJG+HV0+3sKBnd0DY+O5zf9CkojHe9azeK0uZcH15n/bPmvo6VBnT+7SsQrtP + i4d0Qi5GEteZcpaLgZpvchmSaGk96L+5ujw/7f89mX8DnS2GrwU1B1WVPleoD3pwUE5GCUasz/tX + IL2HVfCbt+t5Ig9LDEYuNZ0AXkqqbDmnOLBIf+RAGOSrW8GYJPc1oar1YBiRYmBAbRxVfU5d9Bts + 6MRhxFfYRIrdnSoPIjXIjlyemYSCUE7z0UMy+rZIJ1VwJVUxSFZEOikfpWFxlMz0z7IlbJ7OhwYQ + APuZ0NqhYewNlZhTuymWNZ7O0jHvtpwcIwCELeUb7K6BioP3YAF6zcLgeRHjKHiqQA+C589oqVep + gj1QujTl6vh25PRi/A8GsUeOwCnYT4/xPCv0VHm1hbbJSfcE7IYK3jADvctt6S99InSqEtnM08Zl + azpw3ab4/xSr1oqVqUH2pXS7UGYAWw0ISOl10wxgq0xASk9J1bj5/AdO9kIKcBi6pRTgELQkFg3C + yHckArnvfzvt/+H+9od/+IfXX82vP1/lQYTkCUF37Jv5xvfLUd2zGM5jiSS3nNymNL2KkCu5S6xj + eY5dn6MYBE7kl930yVADlt5KDRpCD9SFkmsVPBU0uKykd5KPBUcraqG3ZffkL93lby00gyLHH0BT + m6b3PG78YTOL5/2b4+uvQ0bo4Smi1aqzSozGEdQKgwhfC2M2E+hPaMSFCY/38+l4uEq4dsa79HbD + 0cVh0vd58uIUeTfnaDhW5IdwqoNqGsOyTFY9PhezxGrHExjje8GD15JZ/sfDjj9trDusUjIG16/p + ZqeE71HyI18B/Z99WAOw8w31dfAs2qvDbIpO3LahDOi8SNA2hFSF9C2zBHb4+cTQ5/g0FW0LeyBK + jMtrFvnmfkV63ehAEpILBxI9pQPp/OTPknHYCb0CJIX37q0PamvgDXzYKFy2HZBitgT5P54uaf8V + 5BEpQAo3tAhYpUUedmfBsl2E4HiWYui0z5h9iJ/VhKNTFDJm6ZSV6Dyd4qng58zUSVB5573i75oc + BJKLvLDXZjCya3qDuCtpzPIIOfy/LpjbgIeAXjdaxEJyYRHTU6FVfvxUCg6wnUJwgGu/e8tc3w6C + Afzwoh2L+H+mIP8XWMQCmYJTg47x4Bc7cl5IZPu6V+fD1SDv2cEbPXfzq2Xt+CGnXPGjQMDfZbWk + qxmh0a6X1d7wjGN9Ea9hnbXCaZCzy5azq0kCK71uOrsqEljpKc2ui5vLsv/QccLi7BqyMIhsd8DC + yPGtnbPLdsqYRYiaNkS0tCTDotOuIqw5V1IxR0Oft1E9u1GNvFe3AvY4xiSnFdx2ZBHVFg58jmQa + 8qygKGPUL1E9XUEjlkkCBaabFOb7iDuIhbw3Zx+vDoYCils+LEGkZz0p7kAVw7/qv4HrwvSRhvHg + qD9bjxhec1QMCQ+FFhceggIfj5gzZL3LrydZHDRseHudDKYJP9XHCqnSsuvMlFGc6/hm1Zow2zoc + aWxl4XFwaNnNUEdkIVODq6pEM7nKp+JEJ0uQnAC6iWeZ3Iug8RmqOKvHaQ54ZQWn//dkXioyShag + nQ+nk29JzgWWaw0abkPPIqeLsDRyp8RqswTVPpPRn07m36A/V5N7hFjmFdVGFhlGPv4HZMKFkrgw + swFz4fEWiU9Ny9yxgdoV+c5qpnTAaNlA5jaTpkfxRe8vmNUA1JBeN1IPhOSCekBPRXzR7ydF9QAB + j3QSLMcF9cC1XTZggR/5OqPi74TSdCKjg76NysFBq8mac9ISAe2/oW+ESesNmsA2fe3LD/SDj9VT + GFqgq7DQrUsz+iZbVh0sBNphHcOKbWHuV+GkJkLdO5gKgnE3hy+kk5cUMpky8hJmh6CuRlFBMt/R + fqBtVxOK5yqoB5i+UyZIKSRfZaFJQRi4MFGqs6X6iM+V5plY0+XjtPwNvuvXhelWd06hz0fxaoRo + 01qbbddp1OaqvVznm/GLiV1FgUpHWiXLyTz5bf2wTBBuSEGUJQpSRBGC8oFYJrN0nEzxHi5IS2jG + HilFiOs8OLFXlTNb0krOUINeDsfx5v6B02lvxv15Mvp2JG3K0lgdT+FaPOjfwhoe8NIUzjBZpURe + yU9WeDKdxPPyFH8DC/mgh6tZRQLbFhO47Fry2JYZYHSo7SNvF4oXt4NsW2cliVv5R1wFvVWxuoyN + 3/uD7jICPDbSTbqTVPs9NgE06Jj2JFJEMfK127BpNlHN1WwEO1tHVni7omVNbfFtoG7aWpxMQMYq + rweuTWg+dQfjTvNjZ3531yddpjBwbSPPfYppWOzYd1uLj4KKxp40DGRvIWaHCdeiLSKejiagjrdG + 53lpshIpoRusodeD5ClFRRGlzI11XIoXRVLyCIL6/TVjDcgr6XWzWwBJLt4C+FO6Bfx5c1y+BXhh + ULoFuD7+HMCPUEJQSw2LW29+JPE3zVl+egjdM43n6X3M2b9gP4Ab7GSBQ6c0CFB2/nnYn8bYtj60 + Gf57N7ldprewFa/ljig8ecIEuYo7x5Xeh0u92kYo9SG0HD1Oh7gcx9UxQPrFxKllqLSQcCcokjHu + YUP8vBnDvMnwT0Smh8gQ4WN6fHo15J+Q9BePMMEq2n/UXz1gbfyGTgln/076X4aYNYYfnkmAN44v + r1R23CMlJog/en8bSukwbWFOKl2W0PhY5EeOssUlCo45MUlzKzm3n1NRaEF8wFV4Ms/M4nu8Au5z + sOwPdZNZNl0iQ4vnoE0nIKh1o9zAJ6qg3ASpWSAm3byPuK0btE+O/gvLths4+vnrZo5+klx09POn + IoH46mvZ0e+zqOTot+0wcoKBbUeeJbPAYLVzCHVtN8odpgPhw+bG/YdcuirPEIPVynsoFmJw6XpD + XVh+X0iOtAArzqYaT7/H9wrEnSu8eKlOdO01l8EkMpcX619gl4939W8Nwy/oItsAb7yiOQRHop4m + gPm15MOOF8Ac/lfvF5wIPZz4KlrDDQnvX1x9RNEsZgrDbFUdzRRe7D++deQ7uZDjvDvSHqRw24js + otZtMZNSd8OPGMvdDXmvPCmUyROgxz4Z7ER9IHt3hy1f2/kRNNgajL6vC7nPddXyA4L2rxI1UE/J + tAr3MPwAVPU3i4ZzpbNrWCAg6kDZND/l6XVDiDouuQRRh0+FM+bLVSm8nHFzq45Q99Zzfdd1Bp4b + uMGOSKD7JcgvRwK1wv94xbEQWeyP7TsyVuAlUCJ6HcJKepTy8PsFsxsEp9HrRlNSSC5MSXoqgtNu + PpXg7+ECWoC/d0DxRNazaGAzFgWCnuRms+CxVCmHGrj5dO0cqfj3aXI33czTGZ5NWao7pbSn36Ex + Et1EJkSsHsoo938lkrSbRTLCiGScJMLUoSXpX68W3iKH5rC5ncBf15N55iuEjpZIhaN4eZ9m4ITx + mnxRiDDAo1C4YR1TGEFHQ3FQM9QTw5v9h8n9w3CULh77K238Yj6C/TGauaFGxMsZLZOYx+qv1kk8 + fhxyfQiG9nsy5f6qvGtIgE+sejijFLaAbwWdYAu8IOVsvQfKdRxbc5VlYJLrVGT9JdK9qMYzj9gh + cwBKYNeSIuvy7++VMm3SMkoSIeswpZ4PueIoG2O4Pe6LWc2NOLV17iptmjS5dahxX9A+on2UyisI + cukkhjwSwaqW20ABotcNg1W55FKwKj6l0+bzzVU5WNXFDi6EQju+F1jWwPFDW+KkZeQgo2IemExb + ggWs6FAGcNZMRg8Ztop8SYCr4oYKhxBf8vwE+rxalI0RmmTdjuDW0Q5GrguNDopn0Goby68mmum5 + cPmrfl60OpU+X9wMb6GVfKfG7MslfPBQXszE9+qIuVatMaGyhuvPx0qe6DQ9msQqRsRoCLyVMjEf + TCHrvHnAzKUDBfq7vfFRo8bPdrfebyRQmxSmET1+0RyEfVRAKq6srdglVV/gM9boC8y6uY6Xslrm + cnc3N5t0IiAX1ssUz1XJY7etDtwo6xodBSwooQ9mdRh1CbMafQGm4+3qk2ZLnRL8zIavmeT17qbu + Wna9J9uie3hwqBsgqAg9MdjKWVSeJ/Ij+LFYa6WqM7HhloZvY7KhkaBt7KIusSXMtggzsD3C+uGf + u68UQuma7yuG36DX+0nxqWOqcM+bj5hP/VN5GtaJNmqj6rCrXS01EhfJuVB3+u0jnVn6kuhCpHb1 + aj/Y+90B+QGqDM6Vp2+TNblv0F9XV1KPWXSH5JtDSyG+Z1kVgXVa0/ZDstkzfZ5CB7WRM3QymJR8 + wvubwyKKyFTICC3ubiwSwIhbLgBGS6gTfNbAoqDGXHMk8rA4r1v0trhi+kQDc3rBrAY0MPS60RVT + SC5cMekpXTGvr68w/LWAxc1xz/JGdv/d0PY92wsHth/Y1g4j+3gKFZQTIjuzTxYZjzSMVVu/Dn4+ + zqXGOi5cl52CKqdzzhUc6UhMV8BQHeic8yQys7jb0EOCMK9LSrum0mrO/Y746Hpdpvx35iDwKXv9 + CkP5zE029LrRehKSC+uJntJ6On3/ETdQfT15TsFp5Ybv3gaI724PAjeMZA6RiAvVDN2cxUxuMeMJ + 1plKWKTT2zvberqsduOgZT1cL6iLGAmZwwLXrcr2IZWikNJTTnPPUoeqZXWY1iPk926S5W9fH5by + m/MhHJVDM+jDMMhrnASOTH7CBQuUqx/p8lv/zeWHz0p5XR1h+gs0HicaZ1iCYslPOO5koAkOJ1TO + wz/47JIbjS85eX+djBYDJbITvAFypvw1EwKqA/ifNM2gAxTB1xL5Lk8KW5wUlm+Za170uuFJwSWX + Tgp8KmIYr78E5YOiiHMSvhvCV4eeP/ADjwMN4kFxgkEuqxkP9d2sK0LVQEX9nixXcgvJXseM5mWC + WoH4bTKfrCf835jD/rhMVzhz8AVY5NMYZ89wJZyxfdTlRw/clwmdFfMjP9sdqkIWl2nw+kMWR8Xu + rDnamFUXiQ4neeBZYTFFtqKTRER5beRiZAVO0XDYe/3j3cPprE4m2+eRiaFPrCtVZbYSpmzdjbCH + uFSD3m1ey3PFwndLMMvIMrhlIpudIy3k7ECP9fhYcQ7CffZrIq36dA3L11yzp9eN9mshubBf01Pa + r98fl2POoRodGsC13r31kGPLG3i25TARc37F8S6/J/2bIcYqYnAftOZhwg/nXIQDPtQDF4UiSXgh + mAw9RAvtfKxzkPz5sISGVgBcdXXjbtzuamzUwAsKl+ksxhtvQ8UY733QgNp2eY5fZAQ3aJhmkzGn + wJJRWb2T67McHYhnd0Ew1SMhpHlv6c5mq8ZVMHiRZx+yRqA5WSFjGDxZiQ6DJ57SKhqt5jJE8+TL + VURp1hRxohgKpEcqiA96+NJvVW9lL/VQJofMY3Yg+Aj2tFbDzswHYrSZIjw8TJRkPM5deoxg9h3b + pWOkgkQ2JndDsyinnRW3P7tacLTCbCWM2fzomPZNXWGTlSIntycnt4v8F1GzuS3KmE5tWYU2s8VD + mtjx8l4yrn6WiX7E7XA/ha1oBr9m+XlLxfNF5BvMYY7j+we9BkV/ozfpFfwL3a16vCG4HBwnYgTx + 75FNP6cn7W2O9AjzHCqb8Aummca1zevbTuKOVlL8YrqEneLBXKgx8FFHtIJPoyh3Ry+4J4f1L0RP + +GQauhOR2b3J3lBf1ZZ11G1Fu9J6iGywciNq2/yWMrdPgn1ol7syXnVJ9Mh8n/b0GmkDgg2676dz + gaYk+CAxeP1nSplFqI2M03m6XA2QbhX/hvyQPO59JJDcnt1AJ0S5fhRqADrjCVwgVeBgK5keEzlt + +LGtkqJ8Sn0+vgCNyfwaSq8bXUOF5MI1lJ6SnnHy+UMZm8L29Zhgx3n31glc3xs4YYTWElRLPorb + 3Ap9F9W4ibKz/3cTT7F7R+l8jYAgdMs8mSflkN98pPYOMEYd/Daos6UFIXOdkD1VUsqH62EFz4jU + tnWjpINJC7WYatTM3kk8nSc/keFC9YX65A/XSIW8SJboFMr7ju7SKZ9+eJUv9jYsS54CmLmIMhlq + 5iOv5fxhcjsRTJaXizFbDATsCI8T5MOl9liQYrv/P5HeMhKR9QpAbaS+4SR+q9YGsm88JmuBZgGt + foSLy7qHU1BBUcDeSk4oT4MQkt/XUGEzlVLj3ebjhW9vH+QGbvMW0KfPjlv6CpIuVP/Dsi6Kavqp + ZdqN7tCk6Jq72txjvlcbGR6zQq5fbeY4OXOT67nEFWeoPJoCQb9hu/Y/hscNCDiogCEFh5BeIuGg + 5yKm6OrCto61Q8pxYK8MvTJAR4BMB/4AfjihILM7zzLwYF9DXRHtCYsF59bhFJPxchk/DrFJ47zD + OJ6Djr6arAReJPTPLBn+QM+vgmBaJfFy9MD7VdJ7QMt/DOO/dDKljE2yQz9y4Rc5ZUJlHvSDxsyl + ooyxcVBUodsG6eEWathKmgwhCk1+gW8LNGwyH8wSuDdPGt6UHQc6XxoMeSxoniKhMTXCi+RZyzGN + MpPvqdd8UEUhc5OvqKRg8qWntB3ANiYMYzJWJvlJCCV4PZD7nELbh04dT0ZwbB/0Th8WbDFUt8Tc + W6cgs4eC+STwXIJE9x0vu36MlpNFiyAVkOGUZUALZjK3uLE8r2wE1qQP+qefj3MW4KYV+GRl3kUY + ZmzVMpa4o10dEJk5VujydZ0fAOg/LjOdPgqn4vl5sUfxj2+OD4aSg7F5bzwd1IvxQOzL09uCAChQ + zEnhSdSMMFwWMd07RAXazkHPzBmThAy0dtuOb3gSlPZt2WM7i9ZiCLc6fdRBHNjCu83CRt5tfN3Q + u80ll7zb+FRgrXz9VPJuM26CKXi33dC1bH8AP7xIAFssElh048fpkKc3ZUG8AgF//VC2GnSKt8Kt + 5ghgWmxAdRSP5Xo1Tmhmu4EX2VHHFeS+wA4i5LCvCVuthzNzmc5aelLd5D0kZr0QengAWP/qfRGB + rD9SJCZAI+Iq7cNEsQ90a/r0cZihwNdMhtURbDcrOOFW3C2o0OVz8PD4TLfSoxY2WdJawQmaOd0d + uyc+Qp3VFSGpZbL5XSV2ukJeCEOHTypuF985FY2as4e4Z4nkDyje5/waxtp8R6TXjXZEIbmwI9JT + AfXz3xXxPpxTM78jMjS0hm7oDJwgCiTUz3nO0hdTnPhqnXCDu2/d5PINZRQDDE4yu50+okowS8eK + i5MjBK1jBK3haDWgy/T/cQoLY5HEaNJT1j0y/P33askWEiLofztBi2QRw1tWJXMYahWanNCuxXC0 + A+ZEdp0YNA1JQilBgvJh8w2GLD4o1OBYJjU8ATVfTdq0GjncwmYxDsicYzfpl3Jb72BCMyg2PZcR + rhJRX3Qm8Uph/x8+PN4uJ2OhKuLKUFux67Ge+EJ+Z2jaTQ2cg65t0zVdTZUceERJDq7q5Af8hrNN + 8E0jjbQwEj0Xs6YoZEuW+IoJb6aYq1guz/8YHjK32cVeFjJVzlUlmnoun5or6EoOD0ixTFX014W9 + +ZIGncATdl3YoswzFeh1Q5sul1yy6OJTEfn6x/tSiqgTWFbRmDt0Qp8hDFEYcIdEHg5fy2nLxeXF + 0A0rTLTXTG7TdEUMP2jtXcMWgiqj3L7peHu/ubXLxFqLyXwM7y4QSAvx3AqHB6tHkoejHYFtCqfH + 2dcrpcTEGrOZJtiK6iBxQD93bCssJqrJxDDZ4NFDMvq2SGHPKyTBFSg99XODYaSjC/el3mVVopkw + OaXLQZ84k+hrhuJr0Bjz/i5miyHvSxVZybky0Sy36n9NZnAKcDC9Qs9OktWgfwtq/7dVfjjhA+/l + 5fo2ucOMaNhwYTfgqXO6WVVIROmY38aXCLw/jmfxfdLDSaeQjpHw0uqCesgiWGPs/sZWYhwNv2zK + 411O1oFM6u7gUOYFoWwKjlzum2TPpLBY56IJuQnS4MSEdcqccpOv41ttZreIpBAhMbzVWVZqg328 + A2qjkGCdy4ve8BRnUb54g8aLeVC/OZjMABTDJ2NxNEqiGnk49we+CyjI5fOF0yTXgl43OnGE5MKJ + Q0/F3evre/3u5QQO6E+hrx85/ru3nu37bOCB9uxU8K/E/SVOCr7z5BfA5fuPWZKTbumHve8G2rse + aMmuZEw4mc6HJ+ORHS5ELBgPpYFhWqZHcKsoFMA9V+yjNz8m/kLAndGAwDahHYk361vYaeXBc5Q3 + Uk5ohx3S5iA+JFFIsFiweA7eTOaO2s81dAQv1O9POTg1J3Jcp3OK6O6z9bTxQo1+6+EMn+zXQQ8y + O3RsNyqa487YbzdUy0ROmIpdWr/fhbo1TU9WZ6BaRAELM/7Fv/zs7OESlue3Z3tOT3QT3ziNOtjU + 4fqXh+NXxjWPcia01W20s/fEOlCmz2xCGZw4+W+RZ0QgSLqs0DtpEG0iCxgSdQnpJaouei7yqI9P + HO2sgCuT59h+mayLhaHvDlwWMXsHgM3tEmoYVUWFvLbN8BVFl1iBZ1Mwxl9/SarbeShYEmyvgZ2a + XjdkSeCSSywJ+JTm/9nJZ6/kufMx1rzAkhBFfhg4gygKOaw3n/+T1ZqiSjHaXqO+UXRkqz7ay+Al + 5mI0+YMo8gnR61VWhDTziXTV49Njfp7cHJ8dqxKlSuQehs6hu3RDR4+gWhOCzkZzbzFcJnRmyZyG + vIzVZpEstWRYXqa43I7Hsf0b/uU3+JdTuwlW6EwwMQNWozPBwR5ZvsVKq5t/eJUwi9l1SzzyA9e1 + SyaI+u6r9j66ll1ni7BcjKcogrqOHiiRfq7Zi4s6VB08KrNCJwrtIgef3uoqiWWYg6LEntn0/DwU + wSFTMVNXuXm66n+y3/O5+AonbA/XrsJplXRO3QQxPW3QUUeJb3xi8f23eg52LWznpZzPS+7ArJi/ + DQwvzeRUBZ3jRsGVvfxOYnSmWUHgqW7gHoYBHB6YWoAZNBiDfW9uwd4TyTIgAsJmm6+RSit9Qr4f + 8a+9uTj/vf8Ge2s4nXxLDhoryJYTsAoFeZS2te/gTlyeAu3ZrvaR9/Qky6FFl5OqLa9lu0KX2oXx + CR0wcFmwwWKRT05XQ9IhIFWg4nZt+wOzD1nQzL+nSpk6+LJqNA+fekwK4tnJDTu7+OLcXN2wUGCO + 9I7hoqQbLHOhub37aeqgt4+FtkdRuSElX364RrP/WTq9nzRilDGPWw0jgnOGT0/vl/E42VLPQLQE + mgQNa10pWtjt8lFb7KLm+Y+hTYjqJ1+uznETklRGWv+1aDf5vSOZJUXi+HoWfcQ3zni5nlVqBeax + q0HEVxtVEC9AZLw2vAs6lnAQ84+X34qdsMdAWYyueihziLJAwp7daOIHaLLfWT6fv+X1tVWmOVpB + O/nb22wHXOa/J/PRHszHHZEWhpZgiIOzowlDHL5uyBDHJZcY4vApXccvT8uBtHbg+2WGuNBinjuA + H56MeK4zR32bgvwnRHd6BUakSy3wU+xHIkNwtYBzWp4vg/7dZLla65QZsWL9ok2MZ9aqQKi7/moW + T6f9r+eX/TdfeeRnOsqBa53P53CBuxTVHWS3PJFIm6xGeDDxmMbFQ3rLNX4solqomOWSeX+Zbghp + D0VDlbYtBfY+ffnKHBU55fmviezNhVmoyclTIMx2js7OO42o5umx97vBDAkLMkw/u9rI2FrcE2P1 + ++VmtUDsf2VnAIGAn10w1gDalV43M8mS5KJJlj8VGA1/fHBKJllOfqibZIeglHhOOHAQRd7W/dew + N8m9M/O7PXBKShDfH6cYRJmP1VFYYoonKObUmZPpZM0pXXDBqZ0e9vx5WiDNFCgPm8R5OkzxV3DU + vFwP93BiKHufFYS9FlGo0vUQ2iIwkAUN5jm9bhgYyCWXAgPxqXC9XZyWAwND2y4FBvp42rGBj/l8 + wvX2IedCno83IwpxzgeIIfNqP13NKFCOJ+EeInTLW/Q5Q2HRQaM0mf8bvuRQQg5Px+XAwG7j3g0k + 5dJpQM9zJbJlLqdIIvLwH0uMY96SUWSHJtIz4GEpvI7VAoahLgcKagtsv0iSwaFHBT5wbVYRi9yw + Di6F2V7o+2VqvXT6iEkoSQ0CC2K46d9eCIGUYnsncmDwUKjs3IEWTZ/Ayp4j2opCR+MREHXfedTf + YEQFn38xgS6X52AxMkKkjssJzmEJpptRusJICcHofAS3UFh34rqGEx9msLPo4eJSAZBBaPVEZ3Ad + rdRr7UD3ujLj47hjkere24pgV6MnPh94XaduYVqsXAGtWeBvYAYdbLlt16WYurB3bhH7f0Dsm6uD + t/96WXgyeTY5ZM18f+K5zqHVCHdWlTGzZGZV5OyY6iGdNaefj/9LnufSTInPfvt6dV14jl6x/zoJ + pKkzLx9tmpZPGQz7wR3xmdkiiQSTnDWeh1ofR321+yDhOVCcTOirBaj8O/0FxrY5ZpHq/5DEHG1q + 9O3ZYXW2TmeZe3NlB2eMNU2+yUoZGudz1eSN89lj4/ybnCQEyvAdUD9fMJO1m5trl4BV3VyC5TxR + kMSg7nqHFmuGvUJljKFXRBU68go93AKog+R1yRJ1ICK8V3/Iy8Stzou855orDZwKf4W5p6aLL4PH + LNbAUsFfNw0eQ8nl4DF4Sje4DxdXdkWgveeXTBWRZXu2M4gspAfcbq6+X0IFT0j/9wpsCL0saodv + qXJEA+XFdU6dQ+Y0dOKKQsY+XFmJ7sIVT2mQsvWuHLSbeP44HeaIsZKf0Lb5fYLGjHW61GXjXuCG + Qu3xbQ2UdY05vtzaDqvgezzapK2caXJ57815G4YSfbDOtry/i5nrfYhpyDW3qiQyU2l7m+4pToi2 + RPKzttvUYF+lyCn8rOqU5Gfx+5oX7g74qJtjoQvN3Aq5w3/n8uzCFdzuGiB3uVBa2IMGKcn0uqmF + PSinJNNTkSB2/KFkeWS275SOLRY4dhgNWOA6kjwtD86BGehrHhMHA3YrDeFop8mi5/JGNJFzFSdd + mBh/kdQA2UdwM4bL8uZ2mkgOottlEn/LY7tpx2Zg1SVFRwgHarv/6n2A/UYhAXJLuxAGE+khniwX + dCFXczkR6BRofbu8/qdcZUeaYU+2lyNNiLSiqnYvkwVUcVTMpCpYoflX85RkLlBLi5qnyxnBFAlq + IFFgyAtwJ/Q9jOiqh9NVaQzMpWSowFIgCIbda2wsgus03wHbyNxiLrSEWQzFlgyPA3560LZFMdZG + W/5+wJ3MJoYPbHSeBA9mEo8Avh/ybpmmo81q0EkXPyc/HMKr4FvYMtVmeJkvCZkgiL0+TtKfj4gn + ohZTs9BSx6fIOa1zREW1R0TlR3aQfxyKUMiTE7hqHFqNAiFVGTMVOqsip0Grh3TUzMZJQAfHNazs + Alxpr+JZ/xJK9LAY6M6IheEKcNIO8DD3QTcMHYrQveazB1ZuQ4PlC3LwOn6QCcI3iCGnlaiArjDX + 26a2sR5lJG2bLhVRxNrptRNETRIpZQEjfUpJL2hU8rmA7T471nUqhtsrK4SuOT4oVbYD2pQ/wJ+e + 5dVYAyYajreE4D7s92+SpP/xw/ub/kWCExQUHfgm6199NwzeOWzo+NKV++d4CQ2sysPsFD/yNdkT + At/yXtJCKy0ZEZObsB3BZtjIkKHKmG7CsgptExYPaW7ONwsW+jkU6RSuybD95v7d/8zf6dGrtPV6 + Yuvd164QUWYI1TbKOZo1iTtTQkxhU7rTOfZM33E8VRphu0G9mqYL06g333XypRcI7mPSS/szjrW4 + /6MjQPtYQ34KuVwEn/iF5Trmgcf0uhmfOEku8onzp7REPn+5ckt84jZzinzib10/ihx34PJVLhgL + SWvPjGWgzCsoQrzp5PQVAvDDA1EmO9jBDcZCDDleOP6ZoP/K2IQZXF8OjfAu3Sz5+Yl38Ps5IUJg + 0M/dqv/m+vpydSBOg8/pwi0dBOK+UbwtBzpMpJZdCrquy0rxOPkTPC8KT/g6zlo4H5lXhPYqoqZr + wSyO7+5qV+9lBmO1nqw3Ipza94UMVQgTQjBTotnA9XBOKhCQyBf5rd2gy9dK2bnBNMOR3Gr26xyR + cl8QBCs7p6abHVBkv7SK/uQwWBFBEL+/gGPb3MpJr5vBm5DkIrgJfypA2c8/F7d0Frm2VYI2YbYd + sHCAYOC2yCX5P1c352//RaFnuejeq8m8vIn+FaN78xbBM/u3yz6BEOYBCsmeV2XqG/QLcLjX8djD + qGi1+cXz6q1v0I+VCiFA0WlmEtExURMhmzveJ2/++7ev/90fwUKFykQgEuywD6DyLU2tkj2cJIqN + jbkBGY4CZagTxst2AIJoNqAcN+zC5pBN1XRqzx6T9/92udpdzpWRenZ07Bwyv1GknihjGqknq9Ai + 9cRD2rXyq7bqTMXVoxK73mQ5twcab1BVSdlJ18sV017ONwyZhBxb2us65tVppiw8jdRnBlZ+Lqab + Kr3H4NKmwrVs/5N3yJqFa4kyxrEaogo9VIMeluf+it+Wf2DWYjbdc5O26u9VDFr5mnkAYNQFXZrl + 0i4Yr0ZpVUuazwOaggTIWpD6hJPqRWDIuudsinxpq2MWei7sRrY6UcbUVier0Gx14iFpravFSDhM + dAVoUYDp7eVRn+XkvYHCPZSABryIeWQM7QD4mVjgc179VQKK4L0hIk8mZy8A6X1WnRUySwsx0Xq3 + iU4X+hYP/ojX63j0MBOXfjk+Ocz1Faqa+VF6oVpqRoNFtiMAuTPNGF7CIa4y3NWlmuwLZg3KNi36 + FKG0kJQ0N822ftjW8QaxUZ3Y9ohOVkRG3dt4CesbdtBksa5iMa4u64rYV8x+z38ZjGzWTHn/yfVC + N1vvE+zXrUzFPiMa+csbM2Su3r7KupqpFjky8rwIC9B3hslcu4bU23zkkRHIEK6wWQhXaB7CFVaG + cIUyhOvr1ecy45ztVYRweQ4L2IB5rsMkqwS3nn1PCJPh5yO/hukJUTIWeQo1VsQid2XxqEmXGvQF + YWk658FKJ5+GXz4h2dmGU/eM03m6XA0wmxC1GPhxhUmFMAqwGuGBhpToF1gr8nx1Hih1UYlcojrp + E5P9dgnKBTYzwmzuKEXwZfL5OKxbSEB6GfZjW5i0fVKnOsqvU9J84j54munXqC1uaIkxSUV8artA + CElGffXefu8eWk6jDCtRxjS/SlahZVeJh7Q7jSb3ApAB1U3Mm+E/+ifwvId/5IRGbsh6wt4WkSKS + BwGjIjmMTbn3Ezx7QzjBPcHT60MFiWAXju//2dSpwzv0FDcoSuBGUxWBf7cx83NnWvYL87yEkRgT + Hk8IU3mFoPvc+rsELYHMqIYdv0VFDhy3glBmj9HsgJfl2VSwrpQi5nsOwb7uWG6KDklbePN0Ptzt + MQzcUGuoxByGr21ldeUhjn9+ubC8BuEC9LqR+iUkF9QveirUr0/nnKNL079cD00w+XiB4N1b28HY + wQECHQY7Mr/SKVTw1wYqUwoSpkX1eq8ooRCD6KRB07FO7EMrbGTQFGVMDZqyCs2gKR62zT+VMvFs + tXyr94rZBLo248EwEHDVl2vH8RtsCvx1s02BJBc3Bf6UNoXfrz+UuARAb7VLe0LkRoEfDiLYen0R + /xkvFnDp58YctTjhwfQR7dlv2MA/GHJ4kNMhQqDE834GISPB+2gX+X2ZlPH7McpdBt0tcUptppvi + 5S2sR5T3od1RCVr/j9OrocBjeXc/fRylcnunhwZo+04U1vLR+iyrU8fRgc7oi06oJ+i2gjrI/dDz + LNePMl+3lpSyrYYjrjjgxyPBz2oz5cyL8S3MTFQnZggcwKN0Mzd1Iim6x8kdTNlVD+eI2gNDn18S + sbE4yaFaGuRi3QUImN3aru+S31mOCCeqJncrH6lVLZj6DtVO6KqoH3H3Qrq8j+e1VtQtF1FCvKme + l013mx2yTEImw7BeBPwvafJxOKvx9Xbrw2h/7riK+psl7JK2QmUIQjhegmaoDFTGGJVBVKGjMtBD + 2mP/d7QU5yOBw81TJM9CQyqac4ejfnadl8ZFGbIX9FoUwfq478/xAnJsM+Je1CEvZA/mEbJVbbip + ZxX2K1K7ttxy9o2+jgRscZwsOfYqWvsny5oFa+octO3I4lLL392HSTFpaJR6QTAVkEGB1kV4UQ2h + trHIClQU2fEpTPomfZRJ9SwTqXIOn5+fazXcwgsb/mZOd26jepNdk9TunSuqftPZCqy2t/RdNrco + L3++JaBp55KQ+yQFPH6+trwGgJL0uhnvJ0ku8n7yp7Q3Xvx5E5X0TycIi7Sfw4C5cJIPAoRPFc7m + G9BWQNWAT0w4cb1grdIULF3RvHhcRU/nGZCnywJbUcaAu3o76F/g0beOZ3CYD5GPEYbvoAYBMvC8 + Gm0QruVIQlDQMyu+fkBKVDyeLFAbE12hwTeGtTqnE9mh7bN/qWnR8LMk99K/E8JOxOfK4qV1FZ+z + 8XTxEA9VexFd1R+uktlEwt8NuJSV+ZgjNOPD5HayXql1izpulZFGxHx+vb5kzO7hnFT6ruN06RSx + 4PLE5eS0WzPUxB0HJhmrir3RWiKfGLskfp/E2gTjX2OivP4FXEO4PLHI3mv+5ao1uGO8Hv+Xa4cC + RZ7nmObsSy3MsXCOeSLUnzUB4qLXDUP9WQUQFz0VQFwnl3bRHc4iB90YhVh/241cfwC7cRSJ5K10 + PswShGQ/VKJbLzAgA2PNVRy7DEU/G83dheo86Hsc+ZU4KD+MZnaZZPrVZQ3UXOqJ2FjFxOZFojmg + Bq84chzPC93qhALpsEHgKziG8mhQ0O+8U+IyO8RRPiWa44zDLQ2xFtb8POwX4NhB3b1eLTxiZh4n + 5b/+cbtAGJqmg9rjcy1LGYiCXleWkbZmlhp3ViCzD9S357w7WyG4XkfegcN829PanwXvTe5x+2vj + 8Op68/MlAkHomG9+9Lop+gBKLmMPwFORuvr7FatAIUQLfhl5IIpcnulk+b5Idfr8bcEWYqvSt6h8 + iJqOTRT4dZsUSA5Dn71C15O+0VdEzw6KtKYn6zsWUahgoYS8Y7/hryyGl3yLH37BruS/2PwH8xdD + eMOB/z5MXXoEb/Mex//CW8ezBIusf7DFQQ9HUu4sdhCxjoJ3XyzotovYUF771jDQGhbPpwgqfSFf + vdxrKOzw/MKyI/O9hl432muE5MJeQ08FctzNZSlN3ma+nlPpMuRmQWKbAXLReXUQJ8LtPZmC/P8Q + wFOEhOnhIeQSh2A+9nq83JghaL0mn3mYQbZ+sJslT6gy5oCtVEUBr5U/LMK1JptvUD4VV2zuIpe0 + pWNQ5NYPj1PUIG7+cX59aWtJP9PV2CYGTscWqWxOgRh5mczScTLdD/wocinCXyNtSapIGmtBqRxQ + kfjhkNHKD3+Psg9spC66lphVhXiquo2/TowXEqjcnKeHfE/6LWm0S/ZqlEz4uSkG77WXXKvjWkGU + ZcLJEHw+4lsb1lmMhYEV4fnj9fEijW9erMbsN9s8ZB9u3yqLum2OL1m2ipTSgvylGyzXyCIrkPJk + jURqx4sygcjOZ0Ia5WaKBFVzREGMSdNYr/N73x6dJ3d/CsS7uLYDyzzmhl43UkiE5IJCQk9JITk9 + uSnlQTjcuJNXSNx3b/2QsTAc+KFtu1aV6Yfb/XjHaHComL88TkbxYgGdPiDSMqlGYGRF/y5Jxrfx + 6BvslAg0jHkDsJOLrQl7PIYNSGzGg8zKsHjkdJirxUOsTxCepN3/dP61/wZHbTKecC7HSTw+IJCE + o34BXmGebPgNZb1MHmL+BZ/XD+pOdzpadW596h5uN+v9qih8bg2P5/gSiFwhwIQCnt2shqJTCdJH + vqSngYQsLLQIebAGWhYHsh+CMqlrfdr45Q4UNSd05c+OihFNtfX0/uLzr4drU3Fw2b5FWBJhdoDF + y6Hc22/hc/m3ViDjzlE9gv/PeMixQ5qa+3FosMjuAQVdorZ5ZrfPp6nqJT6vNvHhaaozSnW3IsfW + bIrQIUVcWEyRbq2HdWLW7NIamivfNFam2yQuUyvG0yGvKD0rCHlXlg+OpgobHA3VgvY+gUzmxLPW + X5cK/pxtMNXMPUvQms2Cszfe3w4Wi8Vn6MDKM2trRwtllRFW8Mm1xWxzZZVeN1JWheSCskpPBSLZ + 2e+6sspgaToBkrrmLfXeu7fMCQLXGTAnjPD2hdqqMxR9jYGeCXd7idQcgU12/60LPW8bcyveGTU5 + cJ8sRrwU9Lq6NlfH6fglLU22y8cM26ionPEw13lS6Z30raiEFlks/ThKOXhgsWCJeqFX2/uDfGiO + iLbFMw/5d4fQrOX9Y44jgbJIVzRJ0ccQj+ChnNMcCYANnOHtZFWqDqlNT684SMMyRUbU/vHXq6P+ + t+SxT/SpfR73qz5J0aVm/dPDCahcl4iVLPoJF1CxL41VAewvEqDqbnYemAh4BS7JPQ/hzlDUcJXw + 43PX0jLqjfbSdpzxpHLAHG0b8iJ8R3u1A9QENwuf3isQnrH/uxJob1fvmXUaNiRXyJUyRHzLVZPH + fMse08Ewi/lFb5EsZ5y8Im/MVmZ9FZ8Nu1PuBd5Nz/dS/quQhxOK5J54pSd+6UlAlGpO4PK/0L+D + 7N/c9kz/di1mil/+XBxrnqSp4uXLvWUorUUKTeVGKAjfihE37bvHWOJr55jEb7GZpw31VpuweeZE + SNzHNTOgueFZbk9Zno7lRIdW1CxPh8oY5+mIKvQ8HXpIqi4oMF4FMF/ycxNjJMAdfBa3e/GBe3N1 + eX7aDyLPDSPnoJeL51Wb2jnI66FQym61Q0KOaA2eUE/0sj+NIkHh577ir7BbvI5VyTwWsKre7XIl + Ocqn/THAM6iZT5vKGPu0RRW6T5seKvp1RP0DSVx5+ackV697Ds9cfkb6Di0S36YMsFOOuIzURW2C + En07ZDkp8aQh0A0K4GsVP32Y/BxRLBCJGvTv48XwbjKVPnWDFFfH4jO6npuOx9TP07ngzkk3K5z+ + /f9JyUZhVEvgOZQdJsJV8dqzgh0G5oM53RklDOq0qg216RfGl22UkL/zrmOA1iPmyiy+x8sobFE8 + aLct6PS+fuiuzKdOGMqmDKnLEmKJy63jhonAe0nc0dgoKom+3qexoYh4cf429P4GJ3BLvr0u7nSZ + KIKeUhN1r5RpIdX1w0AlOE3bT12PeQE//72/DRVHIWye3jAzGE0fmxtCM9Dy4D2zDy3W6BqblTIG + LlfV6NDl8rFgCpzNBJTz5XjGrAX+115cwtNFFm+bu0ryt37jb/2Gb5WSt/lD7TIMDwikPIgE8BiZ + GHRLzmT+kMDuxxlJ2++ZuIkVZMN793AwICdujGrQfM8qAsvyys3fnitgDIzuWbTIpJNmMuMqJ7Q7 + LXxTullvzZU2g69ua8tziyPYRYsy8fuqzY4trgO107VFf8mF7MncA9dvlHsAr5vmHqDkcu4BPBXx + wH//WAq/gXuLU049gK3WttwB/Ax9NypzSaMxfDyJNz+hi0nDOsoCHXimz2S9WVP43cNmFs/770fT + 4T8vdPZiHmi+2iy/T75Dlwm+6e93v0AAzCuIUpa5WvwGHcNOvRahKUsEHS/1rkgNXg10BJ38QArw + m9XD5G59lL9zY2RLPJvF00lMYlfwaLREZWCV1bCZjykxazyhzGLOx8MdjIt0wdMZejgDs5wJj0iy + IgkomYXWivTY7wmuqeZZwe1EvhYqwufnjOki34H5Mt8haACpQK+b5jsEZUgFekr72+XxJV4AiwkP + RZw/9m5oO5btR4jzZ/lie3Oc4bfTuHA2ockC41Vi3i7ZPbRTXcYzx9nG1grlRUF91/LqSFsjBy5v + EuK4+82mClQmLwDBZ2ozRKllvWPqkFzmLe4glR+d3+mzxZfneuJ5usuEWJ9giaIoOi3ouOWXTJjp + hNR7f8L+d3jd44OsMjQcx+5ZDXFz6mLh90rzeHlkHK8oIxsKw1Y0kfC0e0kgdCXb9f/RiCmaChjq + S0J6SWOi5wI79PrG1vcUx3GdkKuautb0NoJPt70B/HBsYU4/13ihBQqkpIfmTv/rr8Ork+uMBBrq + /lFBAv1XzK+yQ8+14Rc56KGidoFd+xCp5JtQu1AZY2oXUYVO7UIPaej++KrQ2oYsd4ffLNHuUGN5 + yF9gmwjQva5Z85DZOQwElpnF+O0pByNnAspi7i1tDUNoXEVHWDIIV0A2PmmgzW/ZtRpjyYnUXsHb + rWs9nbnWieiaC/PrXeMJ2r6d3Vb71GEgT2MylDsVZdL817VlN2AUodeNjiYhuXAw0VM6lt5/Pi5d + 5W0O3J3XdO13QzdglmcjA7YXejI2UVKJzNcP0BmTqYQwGk/gKaHpFO6JGswUBolPRtCbc1mQIuSW + j6CowWyYc2fOt8f5ZpnMMSFBxyJ7P4+7iX2ET7TC4gFX/jqcnc7AHea+rjqiETaWWspq2/JtlwVP + WFv+IoB8YI5XOHKRwqIWQzdyHa9GeVc91Wsz8txCkPTn6fe0NAuwRduHXrMjyDQXrgx9Wq3Zoofz + WNGwBKHfIeIYqGl0SsjWa/2Xh/MqfkKpmnr0w64AvX41iwFOXu4dajb/m31XV5XUxcJ6nsU1nglm + krZ2/HRNdxOQK8KA7gZzZ6aJoLghQ+BkPkqXi3SZZYRLfb9PPTUov7L+AWreOp3xJU1vPbMLTZyr + NgX9/35tsQYmJHrd6FwVkgvnKj0V170vH+3SuRr6BVR4B85VOE79YOD6VhgKPANYRekEs365anGe + 7RbQD4IuyBZH4Nf0zq684xUM03Y9zDtcn1jodHS9q5WsDh90U+MHiksfwtfO73WkId/29SPo6rwk + tBrHfYnSV5MpFKOElLHkt42XGnnlGLRMeEGg4xyBxjqZ8SNl1T8Zj5i76FdlnJTByIpD9eZrumCL + AzVtxR3oCPbNFWyNj6t+dmpUHAYSRfPLFeON/3R1zXo4lZSdKmChSKjkSnSGVZD76jX1g/H2hf2N + b9cMjZHBJeedLNAKb/dM1p+IjutRrE8ldyfcz7KRXYrwpCRed2WO75I7uaF5rnBPY5FN9/XSjCzx + 8uwMArCZDHKLmlpGZBHTELeoZBeRz7YQneQukahA5QVhAKjnM0Fv0lJRaUMxYtsC7oB5jeAO8HVD + uAMuuQR3gE+Fv/XrZRnugAVluAPXxTN04LrMDoU74nIzhT5OF4/91WYhETTwsE5ntMcs0oWdUVwc + 9s9oRcZTzkKipXyfnJ4wh4dwYiQDwo6vkylufom68ieH0v+6nj1lYpoEa1ENGMVZwIgOW6dTnJyf + ZYeJbVsBnMrFs0/IhKWfjx7LCXVt5tu1F7y80MxnAsfGUPkv9eMuYrXAesxjLmzPBWHqo/MRJfpH + 6wd+/hIn21d9gkIDJzOe1R/PV8JORw7Z+QbmMNqLyS6me+C/frmGE+h+HvNQTgUfjX236p+5/f/d + xOPlhg8On3N4/CYELIAoA/wPfEjFPfKon5t1cCA7ix3TrodrRMEOMJdgBwKbnyCV/dXgKOJDxN1C + +iiabDoO7N9806nsInOnEiKrklOphH5Ev/LzeCKD6/m47rZlPsnZ+CLpeaFLRN+YSmjKnmzbPuEc + igMBHX4YbLezvDHSUWX05t6hqV2k0vM9LLc4CrudyZe4sDmRCLGCjQXIo5XYE36/sKIGGNL0utk9 + jSQX72n8qbB//nFavqdxB2bhnmb7keM7Axtu1ZEn2RP4TUG44aTr7dsUpJeBDZsGDMFlMWJh6Wx6 + RW43i3mB25xtTulVKiDV+dA04UKVMQ1GlVVooajiobh0ZxkklfmTmhhMtLCYb5pouNW6aEdBMXMo + H3X5PR5tUhM6073iKQN+TtbWVVPIzQrF2yIvaxKL9s0MUiesyDvIi9reqgzMr3nO31ajm8eIcPhi + GK8W8TK+n8hZ1DBVqQ6zAyoIqYIJHFgJxsV1XkFEFQjiii6EyyXvCbZGqMV8v6fXDdkaueQSWyM+ + pf3++up9ab93A9srsjUOfWZHUTDwYW4FIkK9kAZxfs5RCVXkOe3/14vbskVuWzbF+fmA5FTdXjzf + r+OwiRArJCxhbhslbmh0jGFUgvOoqiK7fWjAjHy8r+AyDd2hUPW1643jl4E1yl25SjDisw9L9j5Z + rVWnvodb8AC05SXH55ao3NhfR9K3jMv9Fj4t4XFGSKUoS/dwtBUPDahdBOzqZfu1+oxmChh+U1kG + L1f+MtUrv21LgupA8/aVGc98sm1t036Gq1eXz7VPZlOnonf3eMhpo3/r/3syH+3jUXqtARBK+fEI + 5x6vXQLttDVESmfeI18qpiz0WeNEKVnIVDVVlWi6qXxKJ8/xV7hlpN/Uhe+N/jWIwZX8XB/0Tj58 + vhqe9EbzhYMhX5FvWz2iE6CQzBwcft4bYqRbWgHxWWXg+hpgsgHIfg1kf6RLzaQNaL8Xt1NorXkg + 7ItE2zfxCXSClcwiW+j7uX5qfAkPlLO0AYU2vW7sLC1TaNNTUsr+vPrqVXlLw+It/K2Lt3Br4AZW + JL2lXx9oG+W8Lhw2dLiO7+/hi+Vq+RGvpPMoiw/PRyerq/sS2vRjkbvhBrbbaxmUre65odpO/DOv + GUSHKmO8mYgq9L2EHlJ3rRJueh3Fy9v0JyxtUF3GxchRk3fytWF2pW0J3HyP0n1557cBBnMQBCpv + 3Sphw5blGSYbtrvlbi+0Y1MwviPvsG5atjrHh2fp9H7Sh432R7r81qIzclfwl8f2sFxGrNal2daW + 4I8RfApN4iG/23YlO7QJGGJfQfvjmMrNhSJIL6+twDPfvOl1o81bSC5s3vSUNu/j9+VIFyewC+Qw + HuzdzIlCNnBh4jg7yGFmS5APG/EHhZNdIGnKkO1Bk14Tsv31YuzcyItNCa76Q3znLHrXJ18yL5Ef + Wt1dCIlPYB9uiu0TxvMLdCSzdDy5a4XqAsLI5FjqxQbaIBPYsRUDYUQW8QKqGt9tXCuoa3czXItu + UJG7ueh1dfVxRODcBeyhDXRB/rqhQ4ZLLjlk8KnYTm4+lQPSfd8pqYIRghUM4IoTCGKH/z904fAO + vjlZwidz3mIKdfj0RV+JR4QbPslrheiVls7UJJeavsL+XE8WKCeex4sHPsExdRnDm1cYXAGdjFku + o9Fmllv7xyskY4A/jOPN/QOnmsSwPHJy8+pEG8X70Mgswvkol4Z9Mh7Z4SJHe0l7JJe/p5Mp8nw/ + skqx6KtFMsKtRe81TjtfomDR6BY83dJXoEAIEc3XigrWxMUq2YzTh0fo2anMHNfoRpnt1oQyaM1X + ArduwYToREqB+kytOs+xa6qT7e/9h0y0Hi5FdRPyfRF4aBvzPJkYRHfvs7/C8cxnKT8MKmZzSdKW + QJNGcmpx3TvUFZB+yzUd8Jr1ZaRQvITJJiJtXmX/3W7Gz2C1sZzAqpjRIrK7rQk6sHhPqE4vL7uG + 1VXCRnemPXVl4PbIEdPkyDJpXzeC62O5fHFFpZv6UNXSelJ1pgEymZLoNktJdM1TEt3KlERXpiTe + 3JyUNUDPKqckeizyPHuA7nsMz+PkXoJzBno1HcP36hgEKhofzRQE2M8vk8i/uHpIR5mBHSbnm083 + V4F1IAA2oUyKbsnM5fgBviCdTvqn8/j3TDK/cPLUAOi3RbLEVYJxlQVArXi0TFcrXvtkPs/BVh3l + b7of5uP08GaUnHMoKoWbJwJsV6OyAqh/ry66EHPrOjVaYRA5XugEpZBb3fZZCOCtgyKpDeDF1SMN + VaQPgYq0SoawCtMR8T2JvgJdIdVdysy1ahNEXN8JQ68EtHT89arOA878MKyLP45C34rK0gT1gjgK + a/Rhx7Lrw7tgwbqOVSZEK0/Faqd9ENQNn2OBshOU4gKkuMoADg36wfNrE0DRW+N4RY27EuijMOG1 + fmFekS4t07E91/Hd4h1ByLpLp8VQbMt3vbrBk8J6l1UNpBlRov82mJeFT6P5+ebq+PKAq9sgqLRm + 9Wjp4vdkd4J0JMN3pZuCN/ZIg7tJxvkdjG9TEgYY906VBhtaPA0WeyhvqJC1mmnfpoV34Gh5gmTW + AF5hu2/AM8QnbIBY04HUmpPesS1yb9aQ1+IUURif7XBRXXRY5xu/TJoMcJPiVWo7bsVUvNl2XhK+ + Lalsb8/sywIquU5BRvloNmzN3sBKatRhXZdFke96YnAJ6ozWpotQ9i5oZwSiclFNMNs+bJqe9VqB + iRiPWRQ7upnjCsydM+0UeUpbO8ecZHNTLr1uBqNHkoswevypYOm9+VxW5G3LKqLovXUCz7XDASg1 + DJNcUJHPPD8ZUJU4oS/PP59qgSYKJ/hy/YMt+ufz0XTDO+zz/I4thp9XU/jv6WqOibk/HiajB44G + v9JkCC1gRVSplGtN+bBQZ8qdGur5bALa+xoKTBNMg+LbGm6MqOfXRdgQKS+2oagI88+pzFwrs9fm + tVwnkqy1OWH5T9ITwoLaHDPX9wKYxCVZqwXMu2mCVoSCsMi264TZrudFXsmk3FXaQk33ahZcqxYX + UbWu99eaXj1cacpS67oRxXxRaB23Bo8eR42DF5oGjVUdWYHlB/KcaRwJ4jFBBsY/YTz5PqlhdakF + F4FZj6+3iUqTDDOlqLTt0rbjkAjCTRk4d3l+g7jQOOEoTKGJ4xRXIVmocsv0Ca2mXWEyOo5MArDD + RkkA8LppEgBKLicBwFPhYzz9UJEEYNmlJADPd93AH3i+zyKRBHAlLmKYJwiXMUzamcDeEv8bu1/E + mUwLDJExXHaShfT1/E3gCP1NpsFqSlQeVkim0WK3Lib3PEBYuX8SBEaWOjmBKY8T6A68Y6IPaUyQ + WcJbOE4qcEL2Q8Mu0X3u7JM6/k9HO+fKlJ2in3B4FZhTodU+bHtF32MukyGMnCgs+x7r+7+UpM38 + EtBJ7xebCz2c91k6hEDNZiJxtqKPt0Tc1WKJQD/lxNV+ThsgLhBOuUlZr8Ew7yN4j5y5yKHgOeO5 + X7u51x9fXV2yOqOywaXa6KOfmnH8qW+FlLq/i25lhxCHlBjqlmErYfLsVDmzge0dMq9RKDEVMY0k + FhVogcT0jM7QzTIWQXzpEhuZFCZFHSrt7rf/QMn5IlgVT7mF9SC4zcgNmds9H5c4AdUOZrYnmEPa + 2hTqmqum250tYiy31HkOTFvUwqdzpjcgUHlBWFvXowzZ3ROtAzDbLip7vgyuHAdpQdRAPeW4aBKn + WRKXN9ukPIVqa5tbnuh1Y1Rbu2R5oqe0OV3cXIY61nrg+LYfWEUfMiaU+FGICSWWHdB+djH5Btvd + bPi+wNNwsZqF+8M6BI7lW07Z2DKLZdAWApqpdDiVBFE2EDlWMVYt719ED2Hkl72AyZDHpK2QETIH + KFjtCrRd3QKVB+LLV6A0avkBWh0DjuXKf0voCq3D10YNK1ny2Bb6reQOdPy6cEFmuw6cxda/ejCS + /TdimA8y3/1dupyt+rCNJ8v0IVmsY0qoUvYfHkcOZe3FAH849MOlHx798OEHuvPgn8HiAHT8eI3x + fzKBOesE2E7+8Pur+fXnKwrSg6vBdJWivYdzdSpPofxKKI2jt4aPH/B/reYp/zcHVILfsVt6OPNz + OLhOT/Rw3uywY3AaKVnY31iiOCYNFXsnIjPRXlJCi+K51q2kvFQQmk8nCM2EP3zTOsuljPK4W+IW + 7oPNBPuUXUjyLe5qjeS5cHPln/GH+xt8+c/+Hx4iEA2pL4xsaDyOT4CDXTfGbzIpuGXNOMymbK5t + +7A4kJMVwhqo0M1ZgpicE8M76tNUtM20pzKnHf+QsWaAPljCGM6Hi9fBfPBRI2hJKYa4IQWypMXI + 40s5di3T9azI4dfX2xjUqQSRZxdrQ+ZAWGwUb0sNiBeIIrM2X6mGhXcl9r1wXmBfOgBsohLhDgAM + jt++quU0DFTGrR2wQ9YE5lSVMc64FVXoGbf0kKbj/XQDqgTeDj4PKVy27m5s/ma+Zkz0DyKZfUvR + HPHyfsLNv11fhNvJ3374ew6XmX39noD9IDEi6PPlHFS2J+iG0CdmgRxm1/5WyJcNUmkSWtLAENAJ + FVh39kvLzcZtyMetaqV1YRjYt6bt3+EQGOj2DaOLz9izou36uktW3nj0Wkwl8gAJJUx2aDtNYbKp + iClMtqhAg8mmZ3R4jDBccol+nGTzDUqnYnvhOk3x0iWeD/qnf3yM3CBfAcJng5pDh0QXdzbHciPS + EmKcPDKi8ebmD34RbT/nXNsmuhUFxQpbK6ZMmccPvBzhaiMIGDnbIsVX55+4h6wJQIgqY8xXJ6rQ + +erooUK5GxboCzTV4/ozLqzL6ytNHiohcI6L+UVBr/w2jyaH73EVjYARaAdCsGh3R1H5HkTaxoPd + GYS8a0mF1HbOgqY3I1HGVCGVVWgKqXhII4yJjs4Q5Dw8TmWYAFl8OaZFb8ff+5fxvV3SRmW1eJvy + XemnCflNQNAzxJOKuN/tipwdunSRWiXD5OdoIuif2ohyLJW2N07i6bf9WQj9iNBd8lHtXDyclPeJ + 4BRpuou8PCfh3m6gTlU2J6IAcz5i3LeHXfx5qKgku1F09qvmWbBeXCbIbF2ngV+FXjcksuWSSzS2 + +JT8Kp+vLkq82LDarRKFLXPsMAjYgDkOYsrWnyzcQD7idpIVz1d9c3zwlk4O3iEYJCNnokqKUYZI + PS+GJz0+9m++PTIVYJPZLGcwxUXmOXJF84MEea2gqpXw8HxeTMtE3IZRUnmcgMCzWDmetqmraCv1 + xS45Nc3JReTmzZd6apldFz8bBIHrsxJXlBi2Smkh25Jn6NtWiR8K2zWUnwjbWiF5DGebHsl8dp4P + 9EKooSi0Aw4x2/lsKxEaKquq8M7w2cTZnijtRaEg0DRDTxBNQY5BfbleMmtRTO6qn8M9XH/SuwNH + o9WZNs+7Velsott5qdpj4IlRDH7ha8Cu0rU0grv9LHV5Zl25WATAQRaLMhlJ81Y7pAMDV8kuCdld + opGbppMYMty+uJDCFre1BfK8tqUVgTlRQxhZVcbUjiCr0AwJ4iGdvv+8Gp7JNFF5kxr080/zcjDc + KvDt/dT4X5MX2/XyUfpdxQkZy9xu+PMY/xgND+Cl9VIK6D+9sJ0GkBH0upleSpKLeil/KgFkT4uZ + ZiyKMHpW10uHjuMyb+A4EQv1cP5kGgu6sxlca3kolzSmlU9nnieO0zLOHFurZI5gIDfTOR3c+Vtb + uppxu524vfF0b9jB+fm+Wc71GggVQhVX2YSr/s3qm64U4HRGYTff5oH6g1poBKW4GLelYcuHz4dW + 6Nt2iShtdySZ/LTNashTnNBrdC/DyjQQBphKdXn8+dqVooidSp3+WMGrhUEt6x/pMEvvWj2u1on+ + xUEZoGGQ15wr690ysDqrW2Dt6M3eX3by9XBBKkXViVwRzk72eX1Y+NDRpJF812Ko3ixy/XPQVKGN + ghLkQKErfjOJmQlEcm/L6bbztHlytrXm5beTVLhhwLWBwsC15szpRFHj24do+15bkpFip6Lw2bF7 + yKyG/ABUxji+QFShxxfQQzr8FrNRLUHNQzpNRVp6NjXfXF2enyK3JOjWTnTQo00Hs0vFXUFColyh + 5OLbUP+V7RwzS+qJFigSvV8FSLc9dYuqIyOPkrcv2/O5VlYNFtZSuEDZpdtPcYRww0Cg+90hfy9w + /22icKv1K0I2bpa3w+ZfqxwtFHp+dm07jrkqSq8bqaJCckEVpae0Gq8+fQlLqAewPenJpU70bhh5 + rh94gwj6S3pmTh5HcKzk5va3yZyH/pyc/n7QV1ijA7k84KtAhwitxRB/eAt+IF+NpoF6MCKJUF72 + JuUK5o9FSSyd9KfJ92S6Kti5xonAuhOLEb7QOyri4U0fVZv4JIbqXdGch9ReCG0UG9UFK7CWh7qH + ibUmn3VUHAZ5NInhyEBfqxNaQ5/VsQMzZtme7RUTUdUI1KW3BlGJRKsosvdaZo+q6THrH5xIemVi + jq36s8d0eDqczBEiCbYLHnn/bbLK5L45vwoOuL1xKafX3ycLtujxtaai3V3f64mu4upEqU+1uKw9 + mbieJHrgOYlze2KiUtnG831rD8rdOCNS8k9BX2BWQ+oTKmTOfSIqKZCf0FPB8kmh0OKYRud2ykkO + xwkGahWjLHe/LTWlr/G47BJXDeJUTA4xyfiuAH9F2dtxec3DEZ8+8eFZc/86dSAbpQGbd7XtMdnV + w61TowOrYWcscHsa+voy8WJPjFklJyKkK7nNUMrVeIL5Vv+mN/foPbn7EK/V5wtmMXN3Ob1upAsK + yQVdkJ4KnJG/f3VLOCO2XaC18t+9dR03iqKB6wTMFTvV3yVlUA6wcyA8cyuiyezPkw2nw8zCkFeZ + H1MwFuWhImNh6eeZaHBYz/t647l7rf8Gms2GcOKi3QXPW6TTTeDmzaNRzo7fH/OoCMUNS22TBsfj + 72u3pOFJ9iRdvytAmOYy9ZgduMwv2RvL37sTzpR5LPCK/uICMYFeXZbLuKU2vYpQJ8kWVZTE9365 + Me3hDFaIIXC96oDwGsr7RcLrPbiz3YKovO+6lrSrwndNiZJ0VMCMu4+nhGLfiC0MW1QnoD4Fpt4f + /Aq4x15BNhBXUBxLEGuvH5dpa2Lq+qAFJL72qQYKdn+aKroh766oQ556PHT9z4trxwnMLSD0utGp + JyQXTj16Sqfe36+vSgYQ+Gsh9959Nwwt2/ecQYjQlwK//TyHksztR99gRqCykS7v47lSDuCeqsIj + ZVwJP33+vlyU7QscVw9pj0VGYLwePfTfoDF/0/8IK3VyoKfVu0EtgCAmQIEGWDyYqIbqaKpaYZHL + bDcomgJI1B3oMtyMp323DnPI6jDQqwWjy5h3aRHZKozqItn0z82sFakgyyh9bcBs1kxWS29aleAe + TNgpUv4tEYOR92Mlarf5FIO/Itgf9NhR/uCcxbNZPJ3E8/4/Jqtv6Xo9PJ6OeaWrxzmo2LMkC5z/ + x/HN1cFQrdN8TP0/zq8OerhYFCEdnB49MSK45vMjZnxoBJZMqqmfR008K3xMscTthMZdY0tZTdbo + fcRdu1JwbbySRTl/YmmqYUAL49aW1p3czBGnzGiymCQCBU1v5pOaUzLjt+cr47f8pIYiRPaw9gXz + ZFRB9VmJRuxS9kXlrrdVQk/sV1nplrhb+4NEutH/XYloZ9tnJ8PTBvHOVMAw4llIL8U803M60D78 + 80yHiwxCJ+LO7EJ0SRQGnu0Posh2XGHR//r4vn8W3w+v0hz9iOTG5SMzfZQmG7m7fEu4sg/FBv3r + r4P+1TWBfJx/liJWFMkaLxPdVL+Ej02FCrEixi8RBjJewheNhuPS4agVgfcpenAUL1awt+qov4VI + 3uwCxV0YUelU5G46Pr+geae6/6ua1aJIxLGzii1BzA0be924sVEBaWZnFRWssTrajtOwzcUVpkMp + F/SDndKqOQg0x4bnWiYy1en+9RG3On4A6bNSh+xh0Q6pGSO3zdyAbzQS4oYnIcpfXd8Nc78GThho + v0Ze/leXowvnfiW6DIeutxTtCCsFercFcdr+RNjMs+gGhy0R16fm7XCgAzOHd7YtNDPYBaSRfJ8s + CVJD7A+53M8Obc1PEvHSKaCmZZNFdRbfo3q4mbU3hnYabt0BNd3eAdudJX4JSgajU6Sh6IhSJoz2 + /GaiXUZZ0fEKIb8mI7IBoSa/P7H564shBlk0X7Sz49OTump20Cl3Q9DeneulQ/hG0szV5tURaMIr + 8Q0Jxd+zZNJEZPuHltssaUKUMU2akFVoSRPiIan+qx+pUOQzOj/ZQb0KsrZPq0Vk9R74fxFywXOi + XiMOrlpc7Wfn4TL1UrZMWN4DjruJL9oEGefpUkk6pEnac2d0bZ926gLD0aA/SjeLaVLB+WTaLR0T + F3mU5vzhAi7V5n5bet3o0i8kF6789JRW/dnFSTnNObQL6SQBpjkjxt6AOR6PEsd94gwTxu8T+HjY + nGHngs+nANyBZnm8l6/l6bzh8rRM4NnddJPCshnlQ3HenH28OhjebSjHXzyUtOKrfjFXFeuI+wu8 + 3PF8AgIFENaAs+modZ7z7ug5NnCH8XTxEKMjZRSXe6Lu8u9u9aIGduRbVuGCqbqxJm7Oi4Ja47YQ + 2HvVI9bDuSgvv3CDDXr0VWQhREh5PLm7AE0DoQLqSXbH/tBuLWVW8oM3C4/rFoMiJI6MBjP7+SvY + ko/tep5TreQNxLPHf2MdXxTcBWULbObjxtiRvxBeuTwaHUbh+yIOr92pZUu/q80a+V3hdVO/K0ou + +13hqeDN/vipwu+KulnB7xoEvhe6gyAIQt+t8Lsi1VWM5v9ZOk6mHCM6RyIGq/ZeRoMLJuq7h7LT + VTAZpJwQUQqq5Lnz/IKLNA8AbmGCibuX4fP0WAOIsH3YlOziQZJ9dK61upXSqWXj01q5h8ibHF9R + aNkO+1fvpEhPd31zUi1ZdO1RP1Hcdrgl6A6CmnFE78Isxp1jHnOND9EsUrjv9BdTaO9jCaJCpPud + MfiDAFLhh5kSf9S/md95CwQ+j6fpfQ8nZ+bnZIRLblHExZn92yWt54lM+EGNHTezbeR1tVclESoy + Tje302S4Qslj2EmT+Ftt+nq9LDp1crN5PFnBCZPMbqdmvJ58mPn2UjVqDe9vv0iGVShtiMk0nd/n + YFAMs6Bq+/LZSQ23RPP4nl8Y1+3h3Fut9MyiUamcJAhaA+OAkQVVnIN1TnYH7nzlkRYoDlPZzvGG + H6E3YiU36AHXsVx5K83NFrN5Xroq87jYjKQgN0ANdc593AswqLQn8W3WFEre2OP9dDglViRdRbmR + aMRmLBUZhwxwl+dfD60mBFNUwMz0JoTn7G70hBSZUXorbG6PaLfhATW3Pfo/2UpXcswEYSOOGXjd + lGMGJZc5ZuAptfL95+MSiaTtOWGJYsYLwiBwB15oMUcgoX1dPi7gGvMAGr49cIbjSfrzEdYZR2TR + zmuNjxAWL0xaOBfn0k1EgcGZMExD//Y43ywJtFFmp5Oa9n4ed8EBqcGS5bEg6j6pLklO93ZrKprl + 2y4LCvrU5+PTen7GyHW8uou+FNe72uBi/55sayx0OizAdJpQBOj24UGdR3CQlYYKm7t9fI4kbCPX + waDUZpHlUG5ghPprOD/5ng/dHC8WsC0c6WmWn1ZrRnl7x3dre9HDSakS4kIHw8mYL3wiSpgQVbEz + llAk5VHiOmTjlR+rjUX+Ll/84gbHCWyEjKAWfk7GtClDqU1NZFlXfI49MRdJrdo9h38zzrz2CFFt + ssTBbe9BciMmOyWl/tjrTk26cY20QV8EKSIIB/yEzxunc4T/4NxHk/koXS7SDO1Z0Xr3qacG5VfW + P1LQX9IZXxP0VrM22+iV5taLZNbSfO4gwTwVqV3ZzUe4M5eXJyPd3KAJrie+bhrlhpLLMW7wVIRs + f7opmQ4sF41GBVzPyPNhZg8i9KyIRKUzvGT+4CTm6XeQn+0hq82C/1ugymSbxTRZP8RT7Gtxb4Tf + HAzSdMWljau0ufC1vz+sOk8bL1sTvk22HFd+AZ4oF6QEU9QLS5T3UuoqQSbc39YPyyTlp/KOauqC + ypjtsRBDpfRT8Yz9drP78qwF8lmhXTC076hDfkouzaaIu6pDdPp1dg1VQe9Ejh4GfBe7SB+Roz4K + WsPVCpZTvOrH/YfJ/cNwlC4e1RxLl3Iu1UyzGObXyi5Nsvl6ADLu75MV3/fi/hIzbaBq3q90JcpZ + So76D3ArmaYc8PPmG8zKHq4dFZ3me56wbPCdwWxwmphysW/zt4UtQ9L0YtzyZr0Hh/KriOVy/UBL + Ri0uz8bS3Ly0nau/4eV2f05jh0c97teODrk2PF8GfLjH4aEVNAv4EGVMAz5kFVrAh3hIp9l4gmwk + 6E9IYCcQvdSDdQU9jTsc2rP60C68qHO4gIuT9wfytXwVGP3h2AIYyRc80pMFBk3uy27kU/6kaFQ3 + QnEksAgfRKW8FdbESRdJ7XvXtHViRoFtky9nOppsZgJLKBnnMNtaN931ReRcNh0Mut2Q5qID2jkv + oLMBA/vaGM6C0JHF5cm8xHNoM60ir2sQhdNI7q42RvWyWvebIWteg0/ugIcPlEqyRRbRHhtu1Xvl + 74KuRjdGNDlkM6tFBm93B7bAZK7cqjsB621ZwX/KyS1FBRZ5o06HyfIRNJx0KDbGlZGiYwrk4QUy + F+zCdhtYe+l1U4Rht2ztpad0Qz75chOUEYYrbsgstOyBzf/C8YXFuQZH3Gb+bZ7+mPflFXFQg+Kg + KL8G8Ns6wXv0rbDdUb7YEHotzcXZSeiNk3QVlG/JIioze6YaoiUfOfr99vNpKT0oGSWLLZhnhftx + Zn9Fm4ETFXkebid4jcIPks8q24WiC+3qmfQp3gRP/7hyQgu7b7/OhZlrOIzd1XrEZaHlCW++owGZ + pGK4qOYymVf9cbKm7AVE0YFLMSYTbpZ0U86TLsq/D3GZbu4fFps1rLnNeJKsejC1KS0K57i6ybqW + lmcV2YQFvzdERnuiy1eCROEKq195PZRkFB2zckMLM5pkrzlPsteIKNmrYEr2FBXY2fX5VX+cYuxH + L/dvxTCYk4GMADB6Pe5SYITWySFkpkmmZW8BcjHSg/dPv25Bz+bznIM/P17AkfaP4bHxASMLGB0x + SnrhkJHPRQzX5T91pyKoIiz0rAJ6aAjnjOX4kTNguDQFeAYRoJ9lAajctEr2qo2K0XnYzOJ5/2Y2 + PDuQ8Vuzn2XHIGic06nyxtfzimjIGZ5Th+HOMLPciUpuQ0maU8tPXkiRdcPaULF8BRmIk/gArY4B + d8Tx30RQj3bkONHOSnon6RJW00z1Nfzz7AijnXigFgGacSRLvsWr3nrD/Sg3s1u2GMCPsfhh0w+H + /0jwIUdWn/10FgeU6o3MQUK44h3ibYcl9Acb9P+w4X8ulfvD6/OpsNKslXLc+2c9nGVqo48INhO/ + WqnnuzustLC2RSf4DqWPzvaiKArxWP2twGbfwEa5J6kPWXRpjf3hGR52fujlSjGjUp2R+WRmC1L5 + /3B/+8Pv/8TWw0Y1pEYZB7nsnRqKqRJ2aQALy10E9iYrmERZLNUsgf14PjG0Kz9NRVvQKnwmbZi2 + bTe2YYoypjZMWYVmwxQP6RB5WE5scSJw63OdX6WXnH+0+zzeXN7WPkHRHpbnx33kCsLgPZwOlRGR + e8h7Cd9Ik7S52kjSBjK237qZSxs1j1n8nlQFcrb5Sgdv2maC+SKYrAW/XQEP2rRjeo3Vtb+y16dq + mTyxL8n1yUiZIxbPT57cCIut09a2imbf0kmUY7dQvn8hi5w8h2xhKYNLhd8geZJeN73G+OXkSXqq + LGVu+QrjemHpChN5rgcXGNsWp9Wnx0VKrnsYry/XHyV20d0UpP94OsuWimJSzyoFeZ5XNEU9h0nr + KB+WN0H4fWTbGfNgG0w9GWLSLcYCZtTTR/QShXcnoyWiMnAT0TIe+/yKAP9godiSd1q4nr4FvdPT + c5s3A/6h0h0ZheVJG5RnB1Gv12ViH/PF+TN93GPROdKa4zbEKxAlTG05bhGrQDyiZTcbzcQyujy5 + LDH5EIkPfG3IwuCgV/XKJQoovDcaj1hEHD+21RORLbzrb7LEnx0RLSW6HJDl5xCWskyEhkqZQOgo + SsmdW2bKaAs5v36Szn7hPi9Bqku4imgvUqP0Pam8vpZnXLv4JNf2aBTyy+X5VNT90ZyeT+l6Biyd + rsJtfVdm6voNnIn0ummmrl92JtJT2qsvTy8dq5Sqy4lB9FTdt6EXeE40CL3IkbkjH4e36c+MIHKa + rlZyF5benqk6ug/7l9rz0wmoxJPbDe9XPIYv0+UCSeLuZZbI5XjmWK9f19LdRyXo3hxXuA6abNVm + ibDICmzf/1dP6+AjtTamj32FJizi4TUPG1YL1Wn5IfN0iQba4tis5LUZMYPRd7KZDWQeHnpPxJZP + 1lzMK4x5cCoOwupIZkyCcnk7gboQ5lj5X8bo2RqrA+Msnrqcm5MSHeH8mMxXPT79smRcn9PIM4d4 + aTDfai71WDoe4vtmUEUe47eirHllYiHU3PYKV7MoiGzLNDBub2gROkLlKJlKcZDIgytGJx+L3xuT + mX7P/qip2LUFgpcUparR0jufpnKP+ZajKhcglxrAtsSEalBXKbtyf47Tlh5n06JdVL+N3DQSsx3m + VjaQ/enkHjXwWsWkSiI5sF1bX58KnIYkmju0O1E05Lks02Bc1iTIh79umAbDJZfSYPApncvXVxfM + fl9KhPFtrxzm42BAgTuAnzazmB7sMyqCNhC1yxvfujngXh3aEMTNa9CfJ/ESjhfKchhRZML1Ysrs + YziIl/iPmH7c6qkLcC/nxGyr/mqa/pBMCHho8N9z1ryjPtzW8jYwqOEDdASsxP4FbNd0I1/Dv+1c + AwvxRbxJt5V5OCu+pOkzSx8ouRY+cENjfKCf9DAba/JAI8+LUA8oqBA5ox7G1awn643oalGz7s51 + Aj0ztK6CUrZLba6p77JSkwusBqoLqEtkRyjgiCLghm4fsuswq6LQBhXFz+xFf7WZ1qMlqJzToe33 + RJfw63DTfjVXWmBM1aW9nZOoWsIunkkKV4cW43visGx8wOwZM0P2Z7V6GhWHCWl7svrt28DW3pB6 + VFfO705c1nzzwCIGe85TCt5JtenzLJo/P12APmh+eNLrRoenkFw4POmpYEk4uXRKbHcscPWz07Xg + 7PR83xswn7Fgu+H/YQri/9qGfwVszywkCG2EJrJNmQqyEMP3waHlNbNLy0LmYYaikkKgIT2lQZZ8 + vAhcrMh+5bflqVOrXnzjHAwzQl9ZSgW6FYhXVXPQch2FAQUxPP21FCGBtt3FSsLMcoNakcqZu0Ff + JdXx0yY6kT1ST2nZowdfA09fs1gKOWFxm9R68nmTjPa8jjZw9Rtuqc+CCR/SgO/8vO3ROrav0Zxr + 26pTsVm27r3ODO+hwGxiTiPMJnzdELOJSy5hNuFT0lHOLy9KOBe2F5Uxm/zQdUN74IeR7fgGmTz7 + ogBXLH6uAp3PpmXgi/LLtWSG/PBoCIfxCrSi5+3rHk6LDDUp4iR8ge1W3MyyLOJRvBrF40YJkK3O + 8Wqz5Cs4cFrv+XI7iEhFPTnBMIxD5jbQUFUZMwU1qyKnn6qHtDWg1YOnuuJa962bsnGif8Gi970t + f+Iihhg660QsEKn/JnYF43OsvZXi9Rgbmmspz2qhaDcyHZst2hsdjKdS55YNsawDSqY6ubB8x/yU + p9eNTnkhuXDK01OBZnV8wsrJuhw5IG/F9969RQ4Aa8BCzxcWfLmjTuYPCfQW2RAJgioesXJ2bXkP + LVDcu3WHL6gdrutbe2bZ5lKTbN+1fVY0Zld9kH76slrGXtlEdRznPXsVgo+w0StCaBJ/Hq4WyQjT + K7IPQ7/47BFzxPuXj6m96PHhUhQHnh/2RLvyR5w2IKX5WMIt7DU751oDum7x2rmOG2lCEMk/rdhv + t5hxgiyxxDlh7BCWSqPMElHIOLVEVqLnlointELiaYyx58M1GlXFFSZvf9n1d60e23Nty2HmJ+Uu + Czxx10ITHqfUAp4DgjAOHRy9jYVvv8B5bkXYQeuvdx2L/MztW/YE9EvP4bj/BeibOuR4dENaJmqE + tZXWNhUkZI6c3MXF2wWgSivxTw2n0oUZBqX4FVIGeMzNOKKgPk7c/Smo5JtyrMhDwZaHgnMSHFp+ + s2xDUcb0SJBVaCeCeEja1mKyZkbZhjtQHvtXIKiH0jh2Gpx9e+cebg8hY7ZP19dJ2pibF0oLEDZu + EKBtuxlWsbo5uEIRzwL/MJ9uM+Uxf5zqbzlTEX1xFlKFBZqiOUFlfEuOV6OUymfSS5KqMvYsQU5/ + Gy9hvkAjQKmrQvGqvsb9v2y/59naXlleWsBTZP68umCRb34npNeN7oRCcuFOSE9pl/ryz+uS5dez + /ELENeJqBJ7l2gP4Efq7MZwqw32nyfdkyoOylxg7RJeWdSpxzb8nIklqABN7OlVZWPESuUg4VOx3 + /j6n5kK8bCQehbJwwcojRilQoRx2lIrYusODBXcPmd0JPX27WUMT133Cd1GP6X775eeyAmL5tXna + 84nGWXeKlGMtRisqkErlI71hpFnkbDUz/wUGtodzXt6rMdiiJ/qF26m2daTRSfBCYbXSfBy4KsLB + OmVW8xAHWco4xkFVowc5yMdCB3pA8CMCiB0ncqCLl2A4NSfxApEnJMdB+Zqcr5HTi1mEwAVHGd3z + oL0xr+B2kgpZZvSKxnp7yDzl+NsjLKIrYodWgQpNdY7OSCNdQV9YPdZdOLXdkGvGL8krIRejJ+l4 + PK8RHQ+8bkrHg5LLdDzwlA74T+dfK1y7zCvT8TihH/oD9NGEloFrVzsIZODrmqPpwRqcwRYewwhJ + M/EnuL90zVRQZFXc6Ecdrou/mIvXsM97OOiZ45b5vfb7RHPWmG6Iu15VbmRAYaRnF1Zkma9jet1o + HQvJhXVMT2kdX5x/LK1j5rgF9Ijo3VsH8dWtgeO6XihSIy/ICHMuuxk+/yNBlzAtj0+Og0jjO82s + UW4WSwDC3IWEyLuY3NVQnO5YjPlsAz9AKpot6QxiWdZwg3hMx6XTGLOcKHLCIqnpFgZMxHObp3OB + D5fCVyTz8fB/0sm8zFJqOTU+J/lFZZbSXJee/125QDmSnchVXJWr78vqofs5lERt87eO5hxzHrHE + 5+R/cNBylSDiZzwDVX4Sz/v/vD45UePdw3mnthJQG7iqZYf8jBTQAJXMoTvS+Ck9rulAqJ4w2ru6 + r2UrmF9E1o/8DSID/oDpPJltpsYhodzME0SW2rAl9SOmvBpu3b9cAKtjh5ZK7S8vE6Ph4LqqACXM + Ouz5mCfliRFIY3T0ITq0mgTxyCKmpmhRgWaJpmeCLVJdm3OIVnJ5347ihbxOi1WQF4oWZzsSFmcB + u6+HychO2oJwu30rCElb/3CNC4aIATqFz83WJ41qvIBbYXPLtuN4xJWmvtwIsa7GA9+SFujlCSNM + u/s1gFLLpRjKgDo79A4tp1E8HRUxDacTFWjRdPSMluLph+NT+N+nPiIpPCSI1gIldZpg9IbJP/VP + bxd+XjISqYYY7cCPN58OnF3oseZLxFTiVp0brpckRcZJ5UAnntqqse/plZ23aeVZ/Z/lU98/T9C1 + rAombG2Kd+FHd+hkMpD5tB4mK7TIeap/757tYr6AsuBWzeke5qhIQPyAyJMGED/4uiHED5dcgvjB + p4Id+vpDiR2a6NJ1hJ8hC/zQYgNot8u87emQ0yXIH/0/65KBdelGBPSK6+j1hxupXQ/6Px4QdqcE + 1SOR7pM15sanwjJFmOdjhVO/EkGOqAkiDns8y2i241X/ajZ1Irp9Xk4XbNG7yqUWwCbhdwG1Xn0H + 7AJi3XeJs5hLAZ0ONVFeqvag2QrH3FRYLULPEyO/v8gFsVNCTLHxhZZUAT3POWSsiUtMlTFVAmUV + mhYoHtJGpiMglgGF5e7e018Uf/368fz8OIOp5HwUClFEc5VlbeF6oyf1xl8AhxFU0aDcyHxXoQi+ + qNMpDAmPwjg/lyBgFQapJlpwx1W/qhUoQn4MptYe2u8elXTIY8NV2IzyQB+uyra1VdBsj99WcdfH + Htm7NlMOuJBJbz/zTt1DZjdz9stCpr5+VYnm6pdPZbSjavriIZ73ir9rcjAlzGeUEtYu8PAVhFyE + thwEOzp24JrebBBkIdNBUJVogyCf0iBwt9kdqAOJstD1ahPJPzilEAtVB4+w8D1it+oaxaFj05o0 + QHgB2Y5qCBvup5sRKPb1NgkzRq4nj7owLmTU3r8inIB5wM5rQCiQu4XART+++i8/8g+tRspoVsjQ + O5BVkvcPqKd0Kf++WEnIIbjmLZF+MWPmyu0MpT9KtfPvKKDHxQiCb1e4DFimarZzDrRzOdTdmAKW + 7TT4FTNofhuUdeZZDstP9ZZf2CzwvP5SuV8Au9w4beYSnByOMwLmJtl3DTIsFOWneT7BhluyLVMi + qAsaoge8yutw51njjhVZrhqM/Go2Hc4GEoxVABZR3oiy/XSfk7p1HXoWhf2J3BlCjNlqhDf+tOai + tx4fBNP+/gKOI/NQJHrdyIYrJBdsuPSUjouPf9w4pTRy1yuAwbrv3rLIdpk/YJHjBuJ8Qdh12MaG + /Ozkvt1C7smby+Or3w/6+ZRqAfMN0xBv2PNEqYdH/UzM7SN1cJb2BE9u1gnmpoO6B905XcHcuYN+ + RmtEjAnY65U0hIoqlN4ppcksKvibdoODgUZbplq3MFJrxE5Yy7SBj5uV04FF2rIdB26Xe1uk6+Ss + HmZp2l9PFrqkqL5FLAgRp7Bo24ZRK6XVaBn6gRXUBGmFTgh/tQtG7hwBRwwrY7UuANZ7Vl3MF1QW + RSyoQa/dkienY9n6dUFl1e2tSngTGOMw/f5nc0918FAspckISB7Nah/oX5bre1lxr7yIduUQlpfT + kfx8bQmJBQN6HUZLYTQaaMzTDWxW8BeGdKwf4yXysL6fTzhH62qNFLmTuUDBhXriFV65RHCq6AGx + vCpW1ddkhHLIdsZj3NarPFp/DzcbBYLAmE2BUYQpn+/YZgcn9jLtyWJPyRkq9xlJI52BuRSXVuys + AmEgv6fCP6dwoqybaXKvipnyafh2MgE0kuX9wvxSYJFdA21AjeOCXMe1oi3WBjzOfv+9HhZrS0ih + x0S+Iv+28QTP4mfIDPmVHDwNzXjVZEbkIVzAFirP8tUirsRT2ToP4NbLmyC0lWX6PwmNJh6vO9XY + /8ycXlQLsEiV+mA0cRoJ+AVIoV5djnLoKTg6WGNNw+dEGWM4OlGFDkdHD7dE0GlGqk/y4XU+jOH6 + 8/EkiyclHvosPFjh5H9aLlnvAf+DngnbFZ6JDg4pEoA1kq1jBTpO0kZ3cSzh0sqav5pMQVfkqBrr + PiI/8lu5Ocq/wyyyz6CBKScN9DX0ZDVrHsgK65oHAslfXSm2Mpv2VR5h3QMO+zxZJ99ry2SWjhPC + 1GzjK3WYQynN1+iG51VCsYJn0oi9LxMYavkIewvuNu5x/2DFbWGEOxkaOoxCfB0HUUdBh6GvYHnY + sd3sAFFljGF5RBU6LA89FHywiEYqgHl0iLEyeql0b/w5u2CsZ/o2f5fXwnHcVH56l4innaGkvaD7 + PJPh2+VP6RyKdE+01F8HyVSuu4AMxdd2k9xzet3MUEySi4Zi/pTW2tfrG7vI58miAO9JBUtxYLsu + NCKwfTcKmiafCxQSYUVBsxXqQbCJoh0pga89OdobHDtTBlBd7C+wJViRCj2gUOTbJXx9BTPLfqHI + ryqE+Jcal6P+bD1yMahZ4X/w3Fg4N78JC954xJwh611+PXGVndEVoZLtrBmvIfdpXz1CbiKhDFYI + j51DZjUKVaAipoEKogItTIGeGaQx6mcH/w7VY2TMUad0upT2GV4yVzWe1pEvTmvfDsqHkhSSCyQX + luHJrGV64j7IDC97alcpIJP5PGnP1BJ4YZXI8mDuoQS0r+MJLn177RNwHyP4oOQnrKz5Cn2QacPx + 2D095UZAqUPHF5bVgEiNXjfSJoTkgjZBTwV8+dVNqCkTLvNhvfoFCAzn3VvmOgFjA+YGnmQHL0N0 + 5wKJxJ5wpB9f4qyhLkdvL2jXd3dwcOB6F37jk6s/1Y6ikLwFMPpiFZYUATUSd/K+pntw7ToPbhj5 + kW1HT6UP6JRPMI0kvngW15ST53pOoaFn54M8Hafte76LjkrxuUPFEJ75+znoRQGjAvrMZgus/y4e + TaYTfpTDcuKMm6Vhyw/QUZny8+TL9d8/fJXaeUeDS8EESBfevz7/fCZjbNF5edfDGap0CJi4HYTA + dRVoxocMixiMdElwRdyZiLdyte3rLjNCGJ1CES9OIV/xYhEjelHjtHzb5+eQPtq77U6vifqqK5ii + yJKmFs//GB4yr5GpRZQxNbXIKjRTi3hIe+54A9eMzaonf+ZLEbCEJ5gdmwEbvFKVWw4CE3zdnuWZ + J9nS64Z83Vxyia8bn9JJeXVzVcKKsgLEGtfZuod4zfRDB05KL7KR8Q6HDdHEhqN0AbekzYLH2Kcc + gBNvSgGHZsnZeePp4iHmlnvsAxn9dLVadI729qouwccrOjXup/P+EtNmF/W34qN+XY9efblg/TdV + PXrApcOOuJ5w21e+1Mnpid1/kysxTqZrUQL+5nNv2PD6BM64mO8hlG10kI3SUT/9DlMnS6AgXG2e + vatiUXhED85rnE2KeDpizh434zaXlq6uspEtkt9BLWyS/I6vGya/c8ml5Hd8Suvy5vK0GDhpOwzh + GgrJ767jMi8awA/Xd8sK7Gp+/fkqD6vBJ4vIxM5lAvO1eDMbV0QipjMYAu69kCemNuVttw7bjCEF + nBP65VBC7thT6eK1VtJcPY4FWkltyKITwGQpBRrO8v4dnc++wOhX1+ZMVrnLiol5Gpqz7Ya1FeQb + qzYYw0R2nZcwqq9EfEXvBIPbb2ZqOcA/T50jvl3gBkHe7QfQV2PYIeCQUrkcXMm+md3y0L3ZWPyw + +Y+EfvvpwA+cT/BPe3Eg1PSVEs6z+1XjYaX9wQb9P2z4n0vl/vBofq4Uwhxv02YWi4b2cBmo3H/m + BF3k/m9FZusEA2DPZHtcUnzDLK+8Zo69PbN/CRmNdpA/PMNd2yfntCjFjPf6vcDgunK4KCXbI//P + H+5vf/j9n/j1sJsP6aOM7w37u5kdAVQ92ypiyxxwmJ0lNddtXQO60CUrRFi+k0lOswQOvfnE8Lh+ + moq2ndGOAi93/EPWMJFWlDEGLhdV6LDl9LDKP1ywpS1gf52Mc7EOJSP09tdzSNrSt2lr7cLUW9vx + BEm7lcXfgubXLm9VbYgm0rYn5j2refyvZul+BbdVuSnagWhJs7nbbiBD2+E9mclrGSITcvbp30Q0 + KlEGmwhtkDDcroJniaiJFMUDCz94h1bQDPOByhhDPogqdMQHeki7JKz2KXYS9ZV2Ha4GfxAScX/z + fF+YgBoBe8iOIHj98wvGGsBy0+tGVzohuXClo6d0pTv58k/vfQlf30J85Pydjr17yzyfE+h4AQuE + geyKX8i/Q58OY1D309XjFJrzMOGR1bmMFHz4OM3H8kpFPPmewG0Ymi3RjQWUqwhHmEyhpZ2HI3SP + jNb4+6svaIGnf8BNDgg8hPliFS9o+4RBPNXYHaE9JyEligJik58iuyru/0Ds6jr/FRS8gzWCCdUP + SMEzLtDxjOLVIkWW9cmcrmqlsAio9wH2Q35NvPzwWTL19C4/nysTEFzY0LHh2m7EN/N8ytJ4ualQ + ZX+duN5Oscewj0LSn3HeEGzhXhYsX+77rhUdWk2s+7KI6a4vKtA2fXpG297q20LEUN6cfMwwRSQy + hjI4XF2en/ajKLI8KzjobX1XKsE3KLpQcLF64MGUVoSMyDgLI8YHpUC31xzzACTZWf4YiEEnVD7j + D0b926QGKGZL9p3ms5OfqNIM9lHdif85g3HJthpVXbwXLVHHSPaZVN3Ck8y/J9N0gZ98DzfFfzcc + t8CiEEq1GWIyYnb/bN/DHSR77JFOCKWJHRtL490w14wz+7dLumxzw3x+TEYPyejbIp1U4ezVojgw + 8pw2mDa1+B7GZ0E9hAlcRcJt8FJiQbaf+LeP/RGMOY/QoBq90N0GFCWHAL2yoL2ukt/iOf0jPwqm + nbRXNqeSERBGmt7QbVO11nf/Gs/f7kOsIsviy2nr0WMiCd3VfPiuj//+oTklRUdJHfvELEgtIlBo + df6nsCEYalbIGK1OVqKj1YmnwuOcB3aWV8cc2yOorLk/aFJRKXACeYn8BSf1S3O5e8LKvtrcw1C3 + m1E8SPjPy2uQZn4Np9eNruFCcuEaTk9FpsHxR7fkWfUxqTF/C/fevbUDuIV7AxvaLbOAEI/0NEPQ + dcP+t9P4YNDPe1x3AXpm6LBH8B5HyobhORmP7HCRoWmIa/nX+M4t3clroVJPKz20nu9HtZ7TIAw9 + 5hYv2U1BSXXnqlXvqA2gMssrXK0LsnEOXcF8zOPk6mxavr+rgt7zjVQPJ5TyUfpW0CFwcgUybg5c + uLG4Xw2HeSvgBSPnWhFrabFMclXuvk61sjjscJz6UbkfKpep4anTXl6duYH5EWWgmuKLN+uDDsRv + GfuubSWRDIV0T7xDqxEusipjGgopq9BCIcVDOp+Wjw/itKEwmbOvV1iYfvSv4a+9h3TFbRywQUQv + C57ZgFKLol810uzVjF+a6mB7a+/zNnEP5funrwAbqjCZtt7t9pT3fHHZzwONaTFSM0lG2/ycdmlK + hBylvqSpfmwYJN4gA6iDsPO2SM60IvlFIW7r/UVPh9ajz+uE7ha0IaIUArE+O8Ggtj0hMd+m3fAN + NQWNr0EwLkQSfG0HrnmAKb1uRhJMkoskwfypugaVSYJLgd/RuyGDno8sa8As14GGV16E4L60l349 + 6D/Eq/7DZLVGzE7o/nW1D0+XrxRHOQboqDpjv93gX+5lwLK6SJXDzPe8SOWJiRkLbVYiJm5L8pCr + lRNGNKt1dz/qeJtu7YUtjEDTcuxyMKwhwpdWjR+4NS5X7TvUtfCMDRF5FQ31pYlTZfPW3LBwhd+a + dRaGgcu6xf3c+UHbL0Y7rrx1kKiyquKN9xUvSbwxZ0TRnmD0YszdcT2Vdv0z1ifTes7w3tCunbsU + /2cQHO081JCyowDGNUu3ecm2Ox/+8rdzIo/ujD8TN2EsYrB3G+mP+8h7esipbnIhrdAVPM2jLj6t + C2omg2XWFdwisyh78PLC8huEtNHrZrZ0kly0pfOnpER+OTsrKZGOh8kPBVs681gYsAHzHMtiGbx7 + FkZ6P30cYWAUuk6nj9xvitkkUgHgIUfJz9FkBd8WDMLheMJDI4fhMP2Z3m9irn5gDNN4A29gyjbe + 3dPFAhH0Cftlha/AkKwfHmfa2xPuH0dEmkU8Wa766c/JmJy8wmVewkpAdzrplV/u78t6pe6hKQTO + 1driYctEF2RJ2drwuFKlCmHrJv9GQwb20jRZSf/+52GuE2vC3rzaeLvQd+EcK0KVo1zqFl0fsUNN + J82pVvpnZOFz0KYhH8AJTyJEkYP+8VWfD08WjFOoxdvR2t4vPot6uIKU8wCulT3Ru7gV5Dq/ocJg + IKA2IMkO+elaNWDNm+HViaoae6ODDYRGuj1h31Y+SQhTyDyVpt8mwKoDRadd/izoNIGcO21ZxWkG + UQeO95EUksknS39pqbTAjuSLjxq+ifmOijspnN2Lx+UENhT+O07Hgz7tG22zDTwaMrVJ0+5tulcb + rYCu63jaRIRMEMX0lQUN+L8QS2WuNvD+LUzYhjOe+cLQ2moEpVKVETSyU2YdMrtZyIsoZBzyIivR + Q17EU1KyHtJboTLFs8XDhOvVc5kw23t/fN2PxzFHE5I6+Sco0cNiPObFdygP3xLpiOtkSpjPsxhV + 8zmP+W5yaW4mqPagcerBn+HMVsLNBUZeycXU1LXU+jDY0l2BCJ5M4C5wO52sHvh1AIYr320yNG+R + Kht1gxoctyLUz8Q0Uhvw2R1wuCEExA6gcJGWjU45BNQ1tNR7TKgggsRvuYZrvexqwbVQL+RVBeMx + yxEZTFbomPsM6HXDDCYuuZTBhE8FKMVpic3LhoaFxQSmoW2Bdu4MbMykFh6DTyLBHxYUJfhfXZ3c + ZMlHUMmoi+QjP7K8iO2ffJSXk7uLkTl4ARMcoxDnMFGGo8cVDmpSovrUjd8F9IpcvhGLkHGrRGqV + JvN/w4D1UXlKKfcGQ8TzroES+VaF1F4vy8ZxvT1iH5ulxHQExcIs4rD7r+tGeXv0utGsF5ILs56e + 0qz/8/K6ZOSwvaBg5LDfvYWD1nOsAdqDI18YOR7T9eYWoykm8+F08k2Biwo+uoTuQFkgi1oes1zJ + I26Lp8kHW8L4cUrMgOm07wzl46T/f67O3zgHcBOXj/LT8QhTuGBLgWNoJSLZxOKbLZ8QgEk6UDA2 + Pp2nPPW/SpnUPF5BxOocKwHeT4prZZ/cvF2d+ubq3Lk6yHfpUV9HiFwiYlkZNDZeP/yIH1foH0Fa + NHx28vevgvtPuka2ouvRsOf81hLIWIU75ydJf7xBL7cwdeDr+WlACYMYH5t5XsKA8VAwh/KExsle + /FyuH3oUslAkrzQQXJd68Ox5eJbrOmH2FfrEGGYTY/sNo069dAXduDxHJAiCkdAd7Ei2tteuH5dk + qupAdhc6UKcXSZYfoD3uepQT/vmC+b65RkWvG50tQnLhbKGndLa8/3zuFc8Wl98X8meL/24IR47N + ogGa131PR73P70ZaghwoupjsiACkeKFC7lLUWpbD2824P09G3wZwBXlUgyWW0vSRkno5rOl4xNhC + SBnokOpSSJ+jqdMr+WTmmAND0Bnzfj7xSmeMElDgE62z+TLoAc9zgzKcGK+bbgVv4HBbbfraWB4U + QgPcoto3yENnabV0jySYzxLVmhUxnczzrKZJGY1o7rOVB1UXabN/lYMgKr+29yvMph4uF3l8eaCh + ifxeS272tem326wZEe3Jld3Z6BbeNhu0J2alLMyDb1WH5Nv1pKefKh8R9IrWlMYivOqv2X5pkBuz + yl5nPuLth81QS6iMMWqJqEJHLaGHW3LOkNFKHoTyYDyZLFhvhP9BSrjQJrubHxG5lhb6rJxDdRaq + LdmvjhuGFeYejrwFH4Zg2Duc0S+gW6nyTbPOugsg7S5awwjZzTgOtT1OnFwvgcxgYFbkHFpNbNaq + jGkGg6xCy2AQDwXKz+NyMk5/xtw/6uXuUnzWr3QORv3lv+14O98AzsEREe1i6AsVlaRxd4i0mqzb + ohu4dsjCnFRq43aPXim7AJRnptw1JB3ea5RHwL/QDQQgVq4tFZ3VQVj03jVtD0ln5Jv+ePm5Lduc + SxcAbEhKfbnHHUCy1pzY0bF7aIXNsn9kIdPFoyrRVo98SneCxXLBIlpJGYKBIjIgI+ObD+5BfmEI + FBRm+3YAN4WDXm3JD27p3dGPu5CvJtvze+0QVnfHzHeDrNoRpsmrwlDZAy1WLQnP34aHYTJABjKM + VVlP77MKDIXd88VEypMnJO0ZaUpKcAnFxrBu2icbL7Sn0+ueDlnADV1bX2aFXashvWoTcc9sCHsa + oFxDpkdQnVSu68em0Q2qjHGu68dSbIN6KDJci5iPk5nL7eKX8dTu55iA3tDj/LMDNQwSA4z5VhBF + zD3o3a1jSpD1Pev10XLvB/u0FzgQxYHQPQiNJTw0rMqLX7VFQEHaIlI8AFfwaq43tkrbb2vecZ+k + iI3ZZLQkZ0hjbjRxxl9OVv6Qz0CzBACxpBiTrPeObR1afiPSeypiynkvKtAo7+lZ9XIqQ6oqGbbn + hJEi1Wl1OLaAYWXMFomPlh2au3PpdcPERy65lPiIT0m9vqxgvGEuGtX1xMe3qBBb3oCzDznUwa6F + OVX9hQT0lPmww9UC5hVu5MeUnUpm78sqbhs9BjjdrPPwybq31WV14c+27UdBKfHvuJAaqzlVw7Au + VkCTVsyGGxZoo5X7UovU9m2/xngthRcitRcV5mbpOk3v5J95VDU3NecKH+3u/95ljojGsX1L8HT6 + +dM7+xQ9MruZf/KF4cZZQUZ5Shm2po2kVw5c3qn10PMoFvm4cc63/KKA0TlDTVlh5DpsZPu7MZmj + TBj+R9aQCiErZGzCkJXoJgzxlPZJOEVGHAwdlVxpssiZ8Xb9XasHLRN+QHqc77IME6lNlAJK4LYN + XjXP9MXsMZFHmRZAT1rWIMKQ4SMfp8OqivYwSLQQXp9g0OWd75f1C7ghzSnVjdq0bBuPEZJNv2qm + d2GjbSX+iTc4X6ji7dohdzMK+Ht/zQLbPCiDXjfSEIXkgoZITyX32p+2piE6gQO6g60D9Tvuu6EX + RMwKBl7IHFuYbKuJ+GaPqT3E+Sp41h7t1895yFfiNwSYTwuhAHgVz1HK5aUGlh7GkEMqYFZkuy5U + qmINKhgQNYXw5MvV+Xn/O1SCF3aVKHak1LBVFlxwk4xsZ/Eb/nA5Op8i8y0QGMqBwbgDKLdOZosE + YX2WeKPnSL180kLbYj5sIpirKhhPnYCXi7Hdw2mjKH0RaNTiwFr8tPlwncEyie8ZKoSpFnS6L+S7 + DSj3rpp8tZHGyaKQfAw6I7mRiK7i8rvFkWPMU17Y4CQ6tJpELagyxl5YUYXuhaWHwo0034i0IRwu + MkLnduUePh0n6c9HRZqGf76CUj34jZFDKGKkdjmEI4WpMJ26VxyK3aFEVVixt7XuhgYaEpnHrs3a + Wp8JFOkhLPnwjfkEEdiSOZqel99rWlyTCPPr8VM10AFfC/0V0ShSxOksvsdzCnaoSWukiS6RPjyW + c662CyM2F7GrKWo/318WDVT1ttKFyivQp5OfTyK/swBlx0LoJT7v5qAzJSCo9bzriO2dMV8QGsPt + 0dzsSq8bEhpzySVCY3wq2K+uP5ehQlzfKhIav40iKwicQRTZgS0C8E5S/K75gGfw8dOXZwznNNR4 + 2leqNGE+KEdRTkc8Xi7sxW/wX2ehbPywm4s4OhgnJE5Sg85V9ZPlvGzCFbXLxizi9ehBRh5/RNIk + LeLYsdygHoDb92wEeCvo8FTDHUxR7tesIDH2mMXqIqWjMITLXJkPOeciqaJFDi1Wd9eokVhQlwb9 + 2+VkfF+Q61hF5LcauermUfh67e5RuGzoXaAHN1cLz/XCECfvWOkGBdF6X5TF9l5iWh4hIugj8nst + MVcIA4O1KFBqAc1IGcXcw7WnQEZcm/VE33Grx5a+Nj6QsLfo4K/r2yZ6ueM6jE7barIV7K/fHNlV + 2T2KPoXOBGNAEY/5ZEeqXNQiRr2JhhdSxrFo5E4e4iouXdwwapu082rkBPnSba3dXaB8lWdFvaDK + fvDJoFS/zZiNcPVUN2qKPEAVEwpcGg8Za8anxosY86lRBTqfGn8motHTWapyjnmEK7eeUwQECzzX + Da2DntlbufoQKSJ0BZy40OVyQJhtcWzUdcojkMSM+NBEpDkJq+/ZhRbvH//LIkckZciONJNprHK2 + lN8eMOjVBX51iPBDPHpfhoR0iPNfsMzyOTGKl7dwaYA+XdRjBe6OLOukmia3KmbrM0Qt5U5uPHtD + EWaifK9O1EA9pdyq6bfHKcdeWsLPNzyHDHWjueA/PejfL9PNouFahVsXQUrKqPVpPwtZb3dnChXB + vP2R2YewmTdimBeFjCnmZSU6x7x4KqghNjNxCJyc/g6fwrle02VP+61/DW/18FWeheS75Dm1bNKp + Ln87Y3lOOkOgmOp4MC8LRKNyMZRYrUktzcxloCBhnFiV9aZeo9w3YI/RjKyhb9i91EPLE0tvNN0/ + yhvnZwW+sUDom8oQz23sPvUZYY4VRb7RSLQyXEpjBJwU29Ry6qiKAPkiKvjW7n9mcjaKPqZNfdcH + ZEus2aHRBQ4KU4G70aEVNIvw4CVMHQskXnMr8Ee07+QYDxQjze09KwVvkBQegevbFIHbEWkLzQ+b + /DYaXU3DG84vpyv9ekwaTylt29FtW5JlMHQasQzC66Ysgyi5zDIIT+moPj79VILKcgIc8QIysuu4 + QRgMXMeLME+Qh/E+pD/QwvMwuX/ox3d3eCg88uCkeDpKH9KpsB3F/XG6wY0HwRIxKvt/NvfkUCac + GPG28q0fCpvm8fjB2RGWOov51+uRCF6dFdPxPNBUozIwQzrl7buTx5UOv2XXIj3AWen7Vim+VX7Q + OOFGejjH6gG3LLuO1EJrrTILwtzCPbtsZPQZc2oCZ6WkQmxrdTMnq5TjeZ2fn+sIQjhUq4fNej0V + wa/6UHyGqaSQf8ResYHzCWbDPAa96hY1N3iZq3MrQhVCdTrl3myxmfZwPmYkhWFIyAnEJ5W7NJe1 + HKhZfg/m/X14WMJfHyS8URMtBXuSb2D8i7J0WKOdd188XWkL6iAbV8xdfpgVJ7jpKfKyTmCvKCNb + 8YataCKhthc7u/zjYucTefv+YPRtbWVt73KB2NCS5qATtoSO8qblZaAjz6RNJAYfrpnbICGEXjc6 + qoXkwlFNT0W439VXVgJhohtVPtwvgLPa9+woHODZZEsirOOvJRyQgWKQqOSL4H6gQgQbWUHoBb7n + YrAb3/JrGFPWit1lNchB+qGSANu0xAChaMPFmpXRl4rkFtVtraLBskC/qiMjihzb9cJ94TejENki + yvrEE/F1mdRw/r6uL/y6KrwQ1AOrqMPk0dA12mQ/KDocBzlpsFZgu4x2ETU342mu5RXLD+MWVuiG + 1dUORnVPPSd52k4u6lpeLqOl8DwUYM2rqq0rdHeMVe81b3w9vqWrWNzIszrk5H5yrq+KRvJypbVe + T5xdj7neTroJvIdfQfhcKbllwzvmFn95xjVcZmWStBrR7TqNiDgafoXpZ/SELoBvNdMmjHoHj9aK + 3qk8ko00+4YCDey6L4Ep8vq55TuhkDGQsC30BJUb83nZPAK3vXwDH3OQAYQ0pJ9r0sWBFVXW0mUf + ta7BYPHtdaXuJr5JAHHwWZoIvtMmxoYuGAeNxuJZqA0xncbJdyoGR4wnUIXKGzNut7QO2P93xe0D + Hy8svwFTNr1uZB8Qkgv2AXqqGQWY67DQ9Qo4EeG7oePY9gCOWgHC8SmPFvrl+qOE2b+bgsgKjgvh + vsqeVWbrhU6g2bNltl73aX97gOl/StCRDfMJnqRjctuhKv/n33A1UnzpHebmCXIfnj52j2brAXd2 + cHY+Ss5TlnGaGav+NB5941gNPGePF5doYNRrXy9O2BFM6jXdCKYS/55Q56kxJ+ORHS74fP1F2oqu + gvFmJNq3TOI1bxq/O4VDjJjBcKNVCos6ocTMP/5+3J8sl/F4ku14v8jH/r+2/r+29v68/siGjDeZ + /9PO/ulk//Syf/rZP4Pszh9ROUF9Y7ks/6vta7+63KmifoVzPferTUCE6tfIc3K/Oh4mqWS/Bn6+ + LKY767/mK3J9K99IkJSX7NtWvqzvCp70gPwTleRr6KHbkUdZl1G85VpSwrRtyy35KqGc/UCltj7I + JdLQZeSEvDUGxZ8WgcEKLbrigoScBWrPdu2fGSe1OUdFVLr2oeU3iWJSZYzjKUUVejglPSRFLe+D + zzHl5kOZrr9+ZXCJIfIcxaU+feTMKmVK9ev1Gl/PS1jyRzy6PhL0W/vT+/4ShswnYFJsLbNzuscd + aLwBvwfJ+UITpVmw5T4MjNsCRTvmdXwSC5h5oFj7kE+X+kEfok4C4buKqUfUQZZvo9h2Pg+3NPbN + J2f4u+crGrCD7UMiN2ZXBZd+iJplN8kixuGlVIEeX8qfCdSK6ZLpLALTfharIPKX8MR1wygjD9j6 + znRJVAEswO3XgY1PZ1ox4YvN4ccs4jUsqxyGiKD0Uk0xS+KpWfedBSi97ML8VYHF1DKugJ2Yp/Ph + dm+IaxFzQjwdp8NvCc/h3R1mU1l/01idToRsjZyzbIr+z1FsuEPT6Ki62b6X0K26ZgbG45z5DZXN + rJAxHI+sRMfjEU9pQ0Nuc/xA/fPejBORNIYawvxeo3XoyTKY0vwdVRLpjYF7+mY+Wfev9Opxowvt + UGRxUnahlLFn6CSLXF+TpzUcXsPLZ6m9K0xc22P5d7UfPnnIZZP9bP8Qzoj8+LXT46nF7fzabuM7 + ncDTZ972FdQF2kxnVT5fTGb3OZC2L8AY4Wgzj86k1w3BGLnkEhgjPiWF8OP5WRE3hkUe7gk6FuNb + h/mRYw0cFoS2cMWcS+xgdYxL19QS5sGEdwFMhOQOCXOJZhBH84gTGXIgx9FkwRE4EAAxA+RAM+c0 + /ZHlZpzE9lvs1unmp9jxBv0fDxgnD68kGOykpypRupMkAcbHQ566d7fhKuZ4wzNlqTXCf/Rxcl9B + 04yFfmBCVS36jBXZQS2qi+shAls5b+Nhlqb99WRRpOashaK0ncAN/VLEYGdQlLLjZohkr4AnRT/J + zBcUzx0j6nXRn5rfKvD0dI7Lq8ru0GAw7+PZY1FKEXmmKKX3l5h9PVx/yqpuu25P9KF2hWo3LMZm + GuxtqcLzoTAyTuDExzdh6t3H0yEXmC2Y1teAJrv7/hjm8prpOA6F29OeADPpfxJaULhMt36M5F6w + FUuggxwsTVViWchUJVaVaCqxfCpNsDwWDWNDeUSCJIu/hRv0VLOh5JXirFQOTYQLsP82/DKUxbOz + r06Q1kxMVmWkOrMoouAS7JX7ZJyD2RZoKOk4o+Vppxz9cvmniPGQhStux3hYwHbGx6ANlAPM9YiC + 0rDXj313mB/W6lHdQ+OTq0MRATLP85vxuKgyxtdFUYV+W6SHpPbMEoneOksmHJ0hZ4LaLORhMFaQ + Pk7gM48dlDhfUFDPCy0btkNKxBZhkCjXnHyo13jGyH6NpNPHPkXmJ7eZ10cWMnX7qEo0v498Kvr2 + MfVk5z5CH8z7b/jh8PeDnvidfu3xF7nvxvMFikbE1EkkyKYR/o0fr+vJNCGaZoVUbWhF39/CRegP + xXaY7Smt7GOuyACk/mp/T2wqcAvRh0vTGsHGFMbXLN0eL2e8W3bnug4EX9WOlu0S0gXEG82aeArH + 2Wa6hyADt3WT5P+WTnCx4TiU/H96DfupecQgvW50ZxWSC3dWeiqwTq+uS1inluPpyf+O/24Y+KFn + +QP4EUUi+f9EbgJop0Pq9/HjFOkLp3CajiarIT/1MJlcxNi8QdSSdPEwgQE8GAhby78FuH2xgAzE + RIYlLpuwA1b9z8N1sgT9hnRUrA51KjhvJuNNsjriI0Eix8vNPUdKSRGyHibNsURKXSzLF1Tpuxon + wgm6Smry6FhYA7fJkDjHddwS9qhB59Rkonl1wAO2H0JlXjUTljKg6hQNLPKcsOYuyGzbte0QLoO/ + 3rD2cBbLm5/t+TblUBHvCDrJF/HoW1yNwojLIvmRjPlYb2h5IjAC/OeRdA4RhEBp9AnS1kO/PggI + Ui2mCZGFlLc6XoLqsE5GnK6hdbWupzHd3qXTFtueH7LM01vN3rCDBJLswN/j0SbFW3EDPmGzD2We + RR5kjdOoeVORGlhch+Q4bL8AGTYPF06+eQYOitpoCZdUqHg14hM4aaqD4QaEb27bsEqCtiUHPNX9 + bge0Q1s3h+NGlPJ2k6wdsxyinthL+RA22YyNuqIbydvdCq4V1I15vUjDTaaLDBPmWzQr9fO2VlRt + 9kdI9rp9e4xFoF5hkS57Cg5IstOpo6uV1sdEpsjnC8tpAPpErxvpfUJyQe+jp6T3fT75wKwS7JNr + R3rSiOu/e+sFdhQFA1iwobyL1iWOzKdQw4+/dOJIT0ETRb4WMB0FZJB7eUOstGc4trQT+R/9Q55l + bm4moiKmViJRgWYkomc03R4Xa0/B8mEhAej2Jzzv4R+Jw8cV4QB76it+SFHOui9hu2pRjhyHmw5f + 7EgTwi0OVRYo48tiV6CC3cjbPQ87Usgc5pDmpEfvKqK0GvfKlrjQdgK7CwkNyHHN/Vs4NTil+B5G + hBY2LUTup1gkVLzilyAs+sUBHis7dV8sR8cR5hzbdc2PdXrd0JzDJZfMOfiU9tmrD/8s40O5nlU0 + 57yNPDwlB5FnO5Ix/IOGUDKZ8cWeJ7jmntGb3y+G08m3RL4gdhpYqHBrT5bpT9TcchBrXDG4Sn6W + YZ3kjNdObgQOqiESD70QZl0pAkBVWqQkr40l0CTlrTRKUMa3raZdFRCSZfthTR1BFEITbLM6qAth + RoJaWQdKBONVggcyFz5ku8XbNVYt7VMyS1NWmTnhplP9CSUi98ovKbC4ezua27vKz0a5xRX7+o6D + /ST9k5z5aTmR+r14W02CN1dfb9gBGa9KU12uk4EeNFH/plhCR/14uuImr0WKCYuwkB7i70kf6xqq + hsL0U+ktcshXPVzvyvDle3YH2lOXphgrL0dsGPpOkYg+GfRByfrW7KrYkfyqW20nvq5AXhZVW0w1 + jJ3ldlUcagLyC8C0CQ0kdNiYrWaqrqLjTX3IFuG4luZS1e7aTNPoRHJdCNLLw420YUPaAijvEM/2 + 7xcsCM3dZPS6kV4lJBf0KnoqgDe/figZS2w/0Gm2XefdELQr27YGaDnBKCiOu4n41hKmRO3nhdR2 + XgEemnAYTBFT+zGJV2tuOVnxdEckX5suHmIZVsVHnKdtjNJ7OH0T/V39PYGuuU7KYNp5O0PxOqFr + ZmFRnxrk8aXh3LHK5IDUCApoi4eiDzKOje06iRs5xfjH2iqVClF1820ZfGkZVN67zmsSpWEeqDzV + 24Rn78Z8DGmoUFXSVAUxZDAlcq9h0MZmMU045ODl8ZWkeBjFq1E8Tsg+xK/9WsdSotgRZ7hHlSzd + 8NqoWVD3MskMG1A9tYXzcShQ9sJ0OOqfXZ1c93CmSpUDtGgmoizpKJYNyOXi7jMgxnve7rDLqn14 + B/FKEw8Zowv52TBj0cNBy7pc7YVZSGstMPkOwzblIRmy1mwJkaJU+W0bwFMesV0aPHGzCANWMZZJ + 68AVV6BGl/eohnIijtGxbWq0l5wLtKVN1mCLbVyJU6zEaCffuXbl6e4pvsKPflPqKipizFdIFeh8 + hfwZnfKr9VJFMooJqC4/ybK3gqMARD+ky2Q4Wabz/B/7N1hWRDjaYRi6kX3QQ4E8KM+mjN4OLNuM + Fkva+l4GMigGj3/CfoIotEvt2kriA6i06WodF03mJTM280KOftOv71vjQ8BxbMq/4+Vhi+KmQd5g + rPchmWYWCk36Trg4z7PCjDOuPDea7LoBAani2SuDbJZo6t5MNxUXTNP9ducnvJJd2rOZp83/9vsz + DIo+jdtRDXiO69RPwKp9oMUW5+vpDG6LbAa3WTKDW5XL4NI2d7+KmczzRV835iUIusaEcAmmeA2V + ibsHYlsLI+Z6to+ZvpWltEL9M6ikhzVRom/k0/4nFMW8iJ0gBBWuuTZiDDa0iMRWwyzsRpX0/bCk + moGOPpvA0m6izrp+JMKNHh4xOobvXPOWaA3Nw+E79e90l1hLKR2lydcqm7+tuKcFxWJwonIJeGlr + jSfg8OSpP8+u4UQ0N5fQ60bmEiG5YC6hp7TDnN2c2EVzCXODghsqejf0YG/wrAH8iBDdWZlLYIGh + L2o0ICiL+P4+Gasb1I94JdnOs8tqnuBHhqPcL6FJo0XvBBbjerLeCODA4utoc5ony3zyY6JM/nzj + x9pwX/x6fmmrkLMDSn9UyY4FOzTsWnISQBNvU7jecszBnDzRlnSzztf+5uuXywOupeTaMYSlmY7I + uU/x+G+ujuE10ZZk1cO2qSBYx/a9V+QLcFBSXk7eVm9GzbTF3Oh7llVBsqi1eU+l7YVZsEhF2Tpn + G4t0d4qsWwZtgkxfi/7ZAb+pE4r4vfcXzGL/GL43RxsQBczwBqT0IuKAeE477YeTS7sMOuD4UQl0 + wEaal4EDZ5SIxPr6+L5/Ft8Pr4h+D/vjiP6R8pOasE9JzaB9dhZ/o5xuKDboX38d9K+uB3ynOv+c + hQlw7hS0L2q2TbjkwAu0+ASfs9ilb6fwQT+GtyXTtFYE3idlZBQvQFfXbbWRW8d7GIHqw6KSXZrD + BfLlCs071RHGqzMxiubvnVVc17EnBXbDxl43bmzku82qIId3rcDQdhq2ubjA9PBM5jWThgm1fPTr + STQ91zKRqfwEXx8VlrA+K3V2IRbtkJoFhFqk/mVgvG4eQdeO/DyCrhOEeTDewHE97VcNjBd+9bVf + NeTewAkKv+ovh/pfQ72iiOm/5nF9A9di+q9am10myIpIxyCQ0K2IvttvX56V5VikMu66mbZC6jO2 + RBwUzdsBmmqUka9km1UTGa4fUOzo9wmeVTjpaNcC7WbTqFFGcYq7Ei1ahTF0eg20bHI2zOJ7jAsS + 9+HXgKi8L/1LQFlm1+0ldHVDdoRDx+hsayiaYt3NTqKG93oW8d0jXhGODHkYuHm0fCY1FO1RSkr5 + 5Ggsh+vw2Kj9ZdF80U60T+0tDh1ww3SA5W2Tj2jvEeuKPrYzZFsQRT4OtQN2BL27J0y5Ome6obZ1 + OPLFn5+u4aZubjKi140uM0Jy4SpDT0WEzcXXsskoZPo9xrXeDZkfhqE9YIHlOAI87Waz4IAjcM1I + 7/qwidoy4mW6tkvXitvNuAowrI7hldmOz7zAKwUeZweqHndcDz0G+qJrB+UQZiPO2bMszRw0Tcf3 + ypSwDblr9S/LtO1ckEm1rh1YdXeh0Am5zlzGRCMoK/NQYbeOQhS+PnIVv2wp8z0HfZTn7Shp9m4h + dHvXN1TFiGgtZn4dzJoU2LtJlpN58tv6YZkQElSup/MQ/zK1RdCUFFPMVW+SjovDQ9bC9F7C7kAV + 6eaeLI78fR7Zc9TPwHhE3NnV7ydsWEgbysWm9HBZqmgfK+ABxowRmVjezcE7vLTn1ILZu76WTr1l + 0JodIDhvuDJVPeN+M6FraxQVVPeFoeOLPspnKfFmrTBYz1SQY0XUVdUO480cEQFytnE1JqUKqjKp + rYg4Ff/4eDWUOOzV9GozDnpGiwHnh4jgalD/84Hyb6FlMLgMVVYZOToQuzxDtpbu9AYFV0o7v2SK + G3RjaVqA7qq4M+0pPqB09aqT5FfUcJkv+BP3+pgu9FKhsLmWjCiw7eCQsWb4iKKMaUSBrEKLKBAP + M7zwVA5RDrZQBURZQcBsDvk2X4lY2dlkJfaOD9f9vIBV/890FZXQD2UrbM9lrhdxggQE4MOO+3Cd + 9481QCcxwz9sFrPTAF67kdwdVp4wqpf1/AmiDHQ0fF2bGV1AbhluB7sc9byzVpt73Mtbt0ouRkaL + 8eTE85xDK2qyGFUZs8WYVZFbjOohLcaiXYaHkr/Jgnly66ry1fdD8W4P/sRsWHBOxBxJCOXnbL2L + aS2uznZLr01qR0HKQEQT4WUAlCXSOJCUVRNfEQ0krAbFRuXow38z4cSwAjJFkV1mmcMQ2l7/i5Br + e3x50Yjpw/gOO63gpzUgKW4aItSB7fTpDJZd+HldW8bR2L55Oje9bhpHg5LLcTTwlIwiXz+VEOVt + zCwqxtG89Rw7CoOB5zihLdK5r8Snw0qS2Cbyig8322WSwO/TTQoKO1JpqZ56c/bx6mAo8i/kQxlt + s5LRNvwiswClESPAH3PxNrb/HwL/4tgegZW8KBZDrnhXqDGuo1RL5xSOFaehbikKGSuXshJduxRP + 85gxtBfEElS8qGv2zN7S6uS6ZGgTbg+jSHSBJJIZRdrGPNkOIVDpJoDr+HY32MUWV6BdEenUVFWM + CHIjnd5P+vFiEcNptuvYooRYcozqHd0NaC3I5mdBsXt2yN96R3IVh6d/aDW6IskixgyeVIFO4Mmf + 0QSWu4u0seDFAv69nE3GeNkWpJ35GHN9yqoaODmn4xLAs03DQYJqQ9uqgI32DAoMCb8Yj+l4S82N + ZgBKDbPPGTf4oC7TM0w3c3O06Jff2GmuBOW50jC7wXwxd5blwTzf8qtmRddNl3sGT0b78+LaCZi5 + zkevG+l8QnJB56OnpPNdf7ksOcIc19J1Ptd99zaEew+0IfR9bkfgB+Xp1W8IX5T8hGbP75OcVvfh + 6oCbXa4fUrbg/gL4FzrHZgLukHKCVYIBj/6bJusH6Caem5u9h2bedMYUcwuil1A6O8joQ01CH7xO + Z3t736IwYiErh8Q9pP37TTx/nA5zllX12cJoXYN0E9ZBDNVUtiWlVHOLhYEGb5PDpNEEKzWUINEV + ALzmqdCdYXq8XM4ZVi0Y+/h+mf6AUdNdVCxo1MD9/XY7qyjgKQsXySIVG4rgitLWoc4ZZdmh06hG + c8A87cPsQkhluZreK1l9PdxBFEql4zuUCGAAZljPPb0tL8pMBk5ibrHYMumNDBXduPgYlwELhZsF + uKzcqjETYrsVunjmQpUADc2081a4jjsb66D3lo//9vVmJAupUCsuNg9pAeOgDaBCZ5ecLR677VZA + OB+c0gCIT22fRi9V1AaHVuMKuP2u4cloZqvsSPYOk524VQjWJAy1mswx/DadDt2BN7ydrAw4Iis4 + w11f4DI6nt0ElxFfN8Rl5JJLuIz4VEQ3vf9QUurgi0s0G28ZHCVBhABCoc3TfrbBLY+XUEPZ3qZg + +rOUslrKReRurwsPcmEhWlEpPOg1WeHsQLIdOWS+zjPoUT8kzbHP+PqXpZsaV8ixXh6DX9YeSOmk + pxcsaEJSw183Wz0kubh6+FNaPcfn1+XVYyGKRYGkBu5FbugNYObykF1cO/HyfjIXnNIPWvDmUJn8 + YR+5Pv98BloJbGNZ4iCtsuPJsnyLMYq0yxHDwAbq+/6TLSWMzhnKNiU/udFDj3az/DreF9m0XlUX + 8Fwu2U8CAZbDi9X2av/TbI3kOlpqLL2lVIXPi6mzkAosZ3SCl1b0WDkpUNEtRh2h4kyfd9R/iFd5 + 0wNMcBgptujhZFHbg+O4wvzBNQoUd7eM77k2YxAesCWSCLuUL1CUKbqcl6l16NXiWFrE37xESXs1 + CkWRtWTeiSwyGc3TToRx497aUFTFxow3GXLPjq6FjxC067mcViIgrfA4h0NGxV553RVd+HRxcjs8 + zDtKbw24CpzMk55ODVvsMJfYNL9eH19emTG7NCxah/XaYU6R6wtwT5gNOS2ZJoZp9kA1PnkHoXDd + ZFh0lXfghoTseQ0D2ADZk79uhuxJkovInvyp0MyvviBqVAHaMwydErSnB5WH/sCzfAuDSLmPnYKV + p5MFDudpkfyM0jseRTwLXl7EvWb0wOnNBjiWcD/m1gJ6RJHc6gokpuKRFh5+k4yYuxjmEaFXyQij + vdC1ryNKCuZUlFogmzqCSXYHAwXFp4+5wHAeDSqk8XKKfZVSKhYpVF7UhxQRgp4KUQuPDlqHG/q2 + W0ZzXwpSrGoQUt+ukxj5keP4Zeo9fYRqLLewu9fmbHigVDpB0Wz5U1nRND2rmCWeS9qoFpS1D7ND + K1n7LN93i+bxQT69APqZhaV8BehFaZ2pvf5xMrK6PAtmh44duv/qNZ7li194mvf4hqBSHgInekoa + +S0K5nMz1+Msy+wvhRnZTF3i64BbG3/WG5u3fHo73uestKdMf6gJzDbzdmGKIfPUIbejE3ZcxslQ + TF1qoAVuh9JxHUpPyS3wZbLaTPk9lnNESjpBWI5xNiFoYTSrjDlkR1BkhWRZUbt0U/po2L+FClPY + 5Q1NM1kuzG48fa7XdQY/Ji4AteeJ0Qc0l9JNlOOzJKMiInqtBbfvDBsab6VUz4pYrs9IYGvyPTeS + sdrMPWuKxZgVMo3WVpVo4dryKSmRC+K6HS7RGiKGspcLWIA+m+vCMCLbZn6v91J3w5ZZVPuTxzcI + URYD7lkyCsz+yOxDy2sWByYLmUaCqUq0WDD5lAY8r+Qky/t0BQcgfI6Cd8QjLx//pf5O8z2ef3tc + 8lS7RRKrwF29dowTczyBOexTvB8Xw6+1JjCSxsE++0MaUzIAnY5tpYQ2QcDJj9zzzHYcz9P9hya+ + 7+TnQibgLuI1tMSUR6Z6tTxR1lELGhUXQ5DyJ02tgWUL8prr1R4O+ycGhYx0rPTnY2G5NJcpdw4m + A6E95hxaQaMwaCpiGgQtKtBCoOkZ7RhwdZrHs/RxOjxJMccFfeockDK3S9xN4+/pPJ1mf/6trhjF + m+Zrhv3CcQPG94uO1N6ulpCcgq7tBJq4PdsHyhPBhac/J2OpRrcJVniNx2+H52iXWvRe1ETMd0kT + xAFLs9ncri0ecsjxj0qT+b9hhbbTJz3FscuCY++Qhc2yJWQh041CVaJtFfIpbRZF1RFv0Wt+eOSx + 2eROfp2MbK8329yziCN1OyFPrbUCy6NJgklwdNtaJffL5L4VLMOeF3pHYCmMJhxKbdqv/qadd1C5 + l8CuZ8v2oBjTj3w+DINXtAHImZ7LCzpxD1kTog5VxjwriKooJAXxh4KrQzFK59VpDbuC8zzKELWe + DmuRTNO5GGURtnSDLNQrQUXNIiYA6x0v025V6YYaLmjiNH/z8XIFmA2Ucq3nPp6f4yqdpeukafSb + 75ChhPumc1+6u5LdYY++Q2knBdd80wZSOGrRwd/Q4CCwUQik8XtSjEhs/PUveuaba/CtNg9+kAdE + H1O7FvaPc+wg8dZz1U7jvQ8PLb9hBqIoZLzXyEr0zUY8lWcq4qMMefiCAOfXbuilP+uScUfxfHEd + d5mtxqAVyBFIyIIpOHRSPJKhCHdpAfi8ZQ00w+C74PJQVc8e9oLmsrdvAl4VOnrzb++G8vWpgeIb + gIt0ATzvFWVsQeh/ehRZN6Slo+aLtiBb87yRT6JiiXeQCtdK+v4sIw0AVV4FZ4nnqWsUO3UOmdPs + FkVljC9Rogr9DkUPJQfJ5L/64xSB93q5f+dsrZkUvDRFNt/bX4PVsOndvivs1v3dSHIq+IJe4eya + sbAJ8Aa+bgi8wSWXgDfwqUjCvLqxneMS9Ibn+SXojcD2o8AfBHYQOGL6XE9uU2K6lkcxbAJvlgs7 + PJCcL5Rd8sa1bg44FjC9LoB3CgzyubMM3oHegLU8ejzqz5N4OX3sY+gGpQbAJLterGznPaWYidWO + jz/Ap6bTSf8GNlBO9Rqv+/CFuaol+NZRfwyjI1VoTlsjOoNnreE/3/fhCi+S00SmJ9Yal4E/aBLC + KNPnlj5URqZ82HyDEYr11AQv1Fkd8mmPnhdhTHQxUTPb6UY65Y+oWY8mcgKnNq8yX0EJY1Tz1Ohx + 1swuStRFVNwB1cjeQalpMTbJd0s8xCrwJ/IsFln/6v0nzTe8eb7w5x4/2+f25D6EX83/puBnyC4h + uRh8x/G5quX6khJW8gxANTc3fwyXFPsOmy9sjKPJSmy//HF2Hey/ke8O+t5heNOnf16IhwflrXxr + iPz+Nx2ZeGqwakya1h2Gyr4WOEKCVPtSs7PWi0QMUM222kiabft2kNMZtmzXJiqIYwl0PQVxn7b3 + GuIWzT90985upB7tI+/p7R6BVIJDm4Fq2czsIcqYKsGyCk0JFg9FcDPFeh1TBqxE8gwQyjM46Gl/ + 1SQ6iCrOPMn3mbte7EvQCfOelWMUW4YMuJ5DToCyMIQ728/K0R0kzfNmAjaBtdk3wVDtFyyHijsk + VCrYuH+ky2+5DhOwXC2a/GqJbFyLlSbgMDcBQeDxLqQwc0NEB5Xtb5fYgfVDykuhHQPYojdwbhDV + p7aeZun3RAIZgKDVQIeP/44BppicPml6QHcWFMn8kJZvWdCgL3JPMQAd843iOb4Ec3OlQuw5BUDt + J8OxvFojLUDDfbSr9B0vlLF1zHOihlCBWSHT2DpViRZbJ5/SxT1e3v/UEn/T1WY0Qgdx0p8+kt2e + Q6l8Tw56Na/olWGwJVy06DjzyI+t0l+7jqVrJ397ZJzIR8txLOwv1bWFZr69pd8nMXwzaI4Pk2Y0 + nS1i1HYXMjopuosYt7z8WJbmYSd7etsqdm1ZFJHZRojcGrI4axY6hxZrFmZNZYyjrEUVepA1PRTR + AsmIiXABgWVLX8wTVFZrzZknn8nbirz83HAZutsPnuAGEUaOcO7tHQxL+INbmIzbSd2ZjrNdQGQR + qoVQwsbp6FuOBWSbXPO9r30d27WKPSmsSX2k4FU5Ndp/5U5JW7E4fEX7AEN6aLnNboiijOkNUVah + 3RDFQ1pV96u1Iwkg8FB9gKbCa8N8jrO8N8KVEP7voNfgTZAuAlMpJM2PiIst71QRwZug6WXuld0I + Vh2Hptpu5BQbNl5u2vjl9goY39d53SjgvOhIch0CLssPcPtk9/bSdqRxUZpAXuwiWfJZ1LSNHdIM + unZoOflN6iGdpWOkPlCYi7VytxiUfBXB7pz5h5bdaLegIqabhahA2yvoGW0V49WKiVh2XCFLjNdL + uNcnFQojd6zm0VRkX5xC0R6W55uBJWDX9z5pI3Jb59cscg+MY7ja424ymW0qgSvMTSQRAUlhuNmb + 44O3DaBitiGptJdaRzGGcLJq8sXc+KkpSaaCXIf5TBME/bK5nfzvZgL33BwcSgOCnvqe8JhFoRUz + 5cJoCvb8EqgqFKwkKUaqU3Jb7u4vnnOnrpyeywoTSgUWPvaJ53eaDPpTuIuCdm0E9NLryMjuK1YP + 1gDOjF43ZfVgZTgzekp74eXN+zLVqYu3dD20YOjZzIrsgWfbHD5pGxTg/RLkj0oeeD36q8BT+isD + /zm2Szeupw+5q7fMdxTx4uci6z/YLRg3qJB5bL2opBBcT0/FfXmdBOXo+jzYxBvpQz9QCSarjIZX + rtAbkIP5qwGFwDI6u62AoD7z8pptSyAhKErYE/6iAcbxE+a6RBE5KnSPtxGerpkjRHiOb+MlTA54 + MVmsd2n3xkdfl+dW0zi2Ts4GHnj+5/sLuKWbnw30utHZICQXzgZ6KgLPrj/7hbOBRS7mj+TPBvfd + kEWRZUcD22KBjFrUEmEekkKUP0wjx6OADq5VrZBIo5gOIeO5lnO/dJaU3q0kipWHubaTM9uqC7SK + YCf3whK+v1FdlWBOTmAxk8rUcVSRiHMFMy6XGaLFYzn+rm/pSeqtDgbkqJ+RZonYphEHXqEeeHPy + 8UB1OYeC56+voE5MgFnOGVsM8GdAMUtfj78eD+XSkJcunHPyXEVy5w7znrzyXqZJHBD5m7oZNK3A + r2hkZZ6PYZJTT8xWfKvZfDexO71Q2l9PrArzj8rrMQZf1cXWS8QrX66twDGP+aXXjbZeIbmw9dJT + gQR49qVEtuf6rr71usG7t/gwsAeu73uuq5Ptcbxc3g8Il4vEevANyRKG4zoZhbAG10ovOC9gmFHg + 4TrJklHx8M5lo+bLnvPVTDS661IKK3zzBEPijvoJbEAbHii3RIYpZXsZkLak4+dm+uB9yngFp0uQ + uHiAd/qXH86HNzxihmAA4ZVyvK9qw4CTA/Lv51bE++L1wwoCr/b6ETgWnHolbEAj0OW6a0xOzmoB + ExTm8wLhvW/TcYEfJmT+C12MlCI9QQwLxT861qZBTqKLkIJ1uM5aL2ZViOliWgWOVF38saqid1I8 + o2QXjx6S0bdFCut9oJ2GGPaNW8Q0Hn3jZfB3PB/mFRN6dfR6llQPdwl5WHpeROiAFoGqGnVuAxPX + noLrqVhc0q05QN5jZVTV9itOp9gAlh/Ib2yBDWARuJEas+yb5ByEK0Iyu8XdT03GRoOw14XOQW0d + i5SG7naSwik1XzcbvNbQBdtDIYUF2GgDatB3ewqu6QPoAlJm+GCPJ3iYN0rzxMNHn78DbWMR55XR + RbWtrB3mDYKj/jaBnkXblKmVGApKuwhs13gNyM2PrdL2AwN/Aks5HMN83ZQO6+2mAKlPKs4X22nA + WsFfN+V8Qcllzhd4Svrk1YeroMz5ggCQRdYKxmw4Sgfw0+XBvqhRKgKR/AqRGrZ2ykmiksn8AWYc + jwfkR5l8rkiZ0iUPNyQF7ipZBJUJW3SzKJiKgxqNKGJ+6AZ2ScVKfqJ/nFufxgke8AqyswrXmaFd + yqSG7lUuCjcG5Vf2VuZI0oGdI10pPDsfaPwels2csAjuvDuURasjsuqUOa0TSuKFqbMgq47wQ8rq + XSJk7Pd4impbPI4X67TA+wGXQdR5ODdHiRVZzc/i9Lp97GNOH//Sh8n9w1Al6BS7g+tbvO2KzA52 + Jvg0TLjCzB5MzoqX9wlFyd5JAYqFXE6qo50LooeLMSMNcpjgxCM+4/o50ERP2COAqd4oTSQjhZHe + Wf4Z05xeL4USbipYxGAvMvmqtokYlGTdBevC0wDsdhUM7hNP1O8XFgtPhsfmbA6igBmfg5ReZHQQ + z4UR/bhAocscZkcsCEqcDi52qjNAsFRcLZUeVkoAvZsknHoaI3Om6f3jYb9/kyT9jx/e3/QvEgwH + g90cvgguy24YvHPY0PEPpXf22xSaNxpWZ0g3OnB/Bd9s4Ivsr2eOWVC6X6iAOz8hYHIzMAlRxhi6 + U1ShY3fSQ4HvTCkp91OolVsjcLfOUDh3/DlfB/pQAy/aB/e5DfKbL2K531+x6JixQ8tvkuahChmm + eWSV5NM81FNa4dPJWCzXKvt17wL/XIzf5g9lkKkbhq4bHPAKXd69PLwMtgkRa+o4obrWYXoUqBiz + FBWZwr5YYqN/Da6TykY9qS+G+R7dPB/gho9RleMkT/pWkmXmrA5CTx+E5nKy22gH6tCzX4PdkBH1 + qjajt69ai9NZ8cHAgMb9MYKMpD09UUFnWpRLCVGlmdpJUk5X6lRgiTg1+GcTEBx83TBOjUsuxanh + U9pkT04+lRxisM7LEDiR7fpRMIgcixtteJRvPB1hdixmX84TiRNzMnooe434ER/XED6FYa0zBrSg + 0Pf9oiZUrLkySMCzfdtIrlKMpFgc0DobQb3jSMrs/T2druP7ZHjPL9H8fhzf3U3m2MBiy7XQK1n9 + /G66+dnn51EuUAlvM8n8+wQmE3pmcWLy2CXkhF/1f6CdNCZmULiZ8yIzyvmFKyPaB+foZMl4PvFm + PkqHIgo4EcSfl5MxRhOsNvf3yYqX5uPJ3+Z/y7g71ync2kF0D+eQitlz3aibJClCsdSHorEMCkGr + HFajjb2hiC6b82RBbD2x5vhmXViXhgqmYeFdoAUvzX7MNwkaFJRc2k0aHoA2+UG+a8u/E8ECxbxu + 1zMbtcZSOm5U3YT2PLLh5NfFE6sgW4JUAp5P8+fFNfNsc6cCvW50JgvJhTOZngqnwslp6Ux2WMh0 + y4b7bui6duRFA9cFhSTaHjs+XYL8cuy4VJKzZ5WmgNAJ7CqTwuu0TbjMtfc5g54dkWULoUoHE5qS + If7r2rJscyWTXjea0EJyYULTU5EMcXWFI1HgX3X9woy23711nTAIcEbDlUo4yUpxJzc3f8hcIu6J + JbfCZKU7CBbLZMgEuFkOfXyQ04C4wkNqEPpyp0R1qcJAsL7z2cIh5Qf+5YJipHsuvk/ku7TMLhcL + ZlUTyXOG5IIBsJ6QNILeCPy9o6Pq5BD2l0xQqgfx0mhEPaeEe6hUX/SLMGtbPdzKb1QT9swL1ZR3 + 99mwfzhW9FQbHYYFw2Ka4VrKYfPlcPILEcl1MJZ6l+RxLKUgmMe2dcNXBF8NOjlsZBn1QIZuiSIw + c/VOMm7qYeD6d1c1tBxKpi9pvt4iarGEahu85Oo+yuNAPmxm8bxPK73HdzZ19wl8mwAaKXEFfVBi + RnKQEVxt3zHxFGbj+dcbxjX3ZBFzi7CO36hwGXnrLp4Q27FOK7NcMnHUfgQ0Hh2lZM5GKMqk7/1t + CK+X0Sg7bFRo7epZaMSHrzdk+XyOjvJFFnthKja0Ado2oRUoaEJQhCQNcAN94UV4aixVOq3Mpn5K + AEklz6c7aWHbMGuMbVGSPz9EhtKXkNuQnkhKXbK26xKZDN9kzC3CnWiLKk8xsv3GtByijKlfTVah + +dXEQwMgAZitI0WqqjNlDuShrNWD2AKew14zp+quqInnibmoCfjoImSjVbb5ntcxtwtqy328G3Jx + uTJ8ImxgW6DXTUMnwrJtgZ6Kq9hp2d5vc8rtQtSEHVp+YA3skHEQDQ55n9fA5sgKPs2UyqvcyacC + IkJ7tOh9UEqVWpwFPF7fF9ppBqUt8AM0izXX6CTItmY5zwrmjk2u+6FVfJGS9+aIT59kqbTOP64/ + Dn3phL++vmKuVOWY53u9V3S4Z5JoB8g+eIrBc8r/vU1wXbT5PjKrTpKcXFeXS5e0Nm012rCfQE9B + 3Gwvt1uBaOqchrjZMswi8CRknudHzYIsZBFTwDxRgYaXR88E3VV2pdHe8dmh5fHFwyED/E/eoRWc + ZHJWi2SEdz8Yoyms0XTxmO3KcnekJdVn+YYghJ4fCUJzixEsA4Vltj1J2oNZtRSxqzlRvazW30i5 + L9RR8YLfFs3z8g0Lv3ZHjVw9gcKiDXGaNgn6UmWMkWhFFToQLT2kFfR5GI+S9eM0jw0mNYs8hOTn + eH3S3/ay3EIu42+g7+eLzvAJh6f1BWer79Ku+nkIG+5sMs8xZOTQX6mufeJyfkX1uIVm6TCX8Ur5 + INXqhUZd5noUa040S0k/ni4e4mHVwO8RgiKXQiH+0Wt2UZOFmkVAeqOqEEhP3NU+H59+Gj/8X7tI + pPXx+FSpyxqt81gnWNTqQcYt397rqtYUXSSyKHxOzrH+SOCntIXY7ZrKmu/C+d5sPnty0jogxg4y + AGDXsw5ZI2tBVsgYAlhWomMAi6daIO50sijyd4JspBOkGFyYD/SKLhg3WscRtBa+QEjmnBF7EtFb + IfNUxNgecuA0de2sVQbgelulRS4RwxX7ZrvcLPL09XhK3ZCyaKpHuQsgbs+jm8BZexbFjrDEQoUQ + DB/dGCFYlDHmkBFV6Bwy9LBoo5OKyJvbZRqP6aYADRmjEX5yyzEqDnqnf3wEPVncEPJki7ImjgAa + BM8dAR8yYZxhToNsUnrd0DjDJZeMM/iUjDNfTr5WGGeYXzLOIHV5aA1YBB3Ftgd+fJuC/P+QwA/m + M3W/7IgLpj3jiZxWtlisV+/Zh+AQ5kyDxSrLGC5WVUV+scqHEsT7cZSuHqcaoLFYjE7Ukyv4y3CG + X7LS1dYv9zO7l+J/cI36niS7jjRc49w15MtwOpl/g26S1bYALnA82492yZetVfK3wz/te0/5S9gd + atrVuQ2D2Z7lSaFKxOpxBeNh1KpXoGKo26JH2OJjVI4eHqdZPqZYMMlQTtOqBWTkylN1Rb6nJmlT + d02D0vUQGhaZTKu+pC02O6O13LL/uuBTeaoW7FD9uoKRB1HkHK4SNVBPeTq62uzvl+lm0ZhAKgrt + /L4LygWo1Psj1ofcxfzn5QVML/OARHrdSNESkguKFj0lRevz6Uk5wtZnhXhE791bxAt1vAHmRzJ3 + u6I1m4L8H/856MyuG9kvic78Cg8Hgeub+xqQ19LWHbrykueehY3xokUZ00uerEK75ImHwvf7uQJT + tOJZXhpXEkOXFHI7DHPH0VBGYt2i8obO1ZLJYdAfJzHMO6HU5ZJWx8kobnMEPG26urkhoY1Lh/A9 + ba40XrfO0QQJtN62ijD/EpcGtd3FiNBAP19YHjM/Buh1o2NASC4cA/RUJD9+OfNKaKB2EULCf/fW + c2y47Qw8xwn9UIalS6vHl+nkXgCB0ZBKLc/rn9C/4CUeu3CS3ocLmSaZ3nulw0Kg1Kh8hYqYZRYw + FtVF7LLAciLXeapjg+dVD4uNLGAoacDMRQwl2cByCHBmRUrr+vMN9BlbwNugzdyL3jwY9OOcc37N + MxJxLspChHIkPhujRvIkYXd3E8Lv4Zs+Rz2S+Dsycz5PTMtBibI2xcs1XihXPZxH6liMIr+bBMhI + nkuqz0sATa1AjDpiS+vEgf8K/NO4nrJGlNeekWrbVfhlSJB2H66Z1YC5hF432hSF5MKmSE+FbvzH + FfPKoHZRkbskeDd0/CB03AGcKpa0Lx3fbuZjDN2RPm2xvDUyHLWgP1+dwAJGQgm+E0CfpRyxeAxf + KwrCK4P+Q7wq4Bh/3ixgL5GbKf7mlaHutEr1nBnYg2qw6FzXDqOguIXmzkGxmyY1WecsCuuw4/Oi + 1ab6+eJmeAutxKnCyX4xon4oLVOTWXmP9a2gUQ2zvKL25mF+/fnqQM7SHRVFzSuSAgVdlSbQLSHW + DXYK1QYxXd7Hc3X7nI/zQWQ6Nl7UrOnF7qhqPVwQG8lc7u6OZgOZi480GT1WS2JQKX01393eZlMb + JV4ZzrRmkte7m7pr/HvPvFX1aGNVJAyRFfTEmlAq+T4Ub3w64dvLLZJ2A/3jIOObfDbsJYafquv9 + pPj0SZV7pJxIcIqmjcWqb1Tzcy9x6lZVt8/uI50UydLi30ukpgC2H5+9CRpZRpWXqss1KvKtJUZR + 3uxdPjVMPmxvFVnI2Y+/UAjxPcuqgLXSmqZ03yfhSHwqukOjkk+o+3fhJEF9j+8l2xREozkXCKb3 + nKRCnkSLjpL3ikBGavmu19CaqMqYxmnJKvSwcnpId4zJKhZhC4hmNFxtpnebbEYL/D4WIZucddCr + euccJPRQDI/Zci0RHBtElIJHLxsEW9UepmGg+BP4csNGcGiSh3SWpDB4TXIsmG8Tv0D+U0bTDQfK + V9wFTyytfgq/qAEfZHhFGbiIYj7JjI6hXRI6XspN9n/PqR2pdlbTUHIoeZG5gYBeN+VQQsllDiV4 + Sov3+OZDBYcSBhLqHEpD1wlByUUwD9vbAU+TLkF+OUqJohxlMliRwofVXOEZ9nvkvGrvmeeFXudR + ph1Fh/ZE92aS1AiYbQqGZXcEjZCQWTpPp/FjsoTls1ymcGWD4iR5tU6XmPRfzRjxyp2G3KETUnAZ + DhQBGbQF49rH9Kg+qqvw1Eh6LlmI7PCsmetSFjL1XapKNOelfErbzkN+25GuyszjANvBfe4PmlRM + RGAhhYRHIV1X7qbxd5iWRPCzepyT6DarrCXb6hMf1+YOwIY5Fi6G9vICD/F0hMCsE8yHbRMOIyZb + JCBUL5gdNqD65q+bQaiS5CKEKn8qvIj/OEG/bO5AdALHt32Plci+bT+yo2BgBxZzwwp4q1jZmxC0 + Jp7MOQBncoeQnIsNfvj3BFS7fOoz5k3z2+VqATs9vH9UYYL6cDiCc6B/Oo//i1tNcTEs+a/D6eSb + ytuknOl8QujJjzvbUS7LHyP4pcy0B/UmlNdcibHkh/pBnXcHhqHrRdYrPKifaVj6e41Lj089BT9k + Cc+jEwXK5tA2Z93yBQaJSulNp23gnJ1Q8azKnnhGy0TIT+n8DH0CCVvO1H3oXB1mEQLTA+KarB7S + 0bf9sLXhLk0BfZs5DmYuX6PVTSRiKgvlA2OHHAarQRYKlTHOQhFV6Fko9FCw2acbYVKArkL37QPm + II4Trs3cJ3OUtOUvUJrHK7k20dd7kaB8i5e3Kb7JYa5eSRJY5JBuvEqhcSujdhlnBoLazZccZi1S + pZS6aH6vb2lS6FYhbhWZpDThLjM3HZuRci5Hy0Sg6XC1Er51VRNa6O/XVsAaZEHx182yoEhyMQuK + P6WVfHr9wS5lQUU4MQpZUF4AZ5Q/8ALifchzNMOhLU96qUIccXMaH5jxBDb0+BGOY6W7T5P1Q2EL + 5yFb6NdbpFNnCJp/PJ1C16Hsk9MTSZJ8ukzsvzTlz5Yu1TEZt1ojUYEpEYOO0odk9QRD08MppJLC + goAj0geWr7HI1rbmua26L8CilDOchmXDKe/pLFFnEY+MDT8t8i4j5/9j782220aStdFrvgXv2lom + VUjMsK5keVK37OKRXL13/Wf1OgsiIYltkuBPkLbVT38iMjITSExMkJCtqq5ee5clCIgEcozx+wTg + NlhG5nmgdLsh4DaXXAHcxqvCo/l5wrP79XoAxw7LiNsvA9u1XH8E/7iOtw9xGxqo1gNI7LYXSI+9 + G77bre7nJ/oidGwzuvNntU3kdQF2SCoUfgf3lnDvypgvnEbkuudLMfgMXIVypbgS/sZ2L/yOFF3y + GVP4G9mEBn8jLtKquV/LIF6xJP4FoZ4wmVVzIsN5EfqFw5PBe1Vfxe9U2Tel21A6auSI5k7TKXAl + 7fG/d4Irl58DKkRnypwpZ0jAKPqbze8RRoeHzrupurkkQh/Nv22a7tYLeBZmdaKxrlJjvGQi3j58 + qytkaNf9bYooFek/FMFLR83U4psYmrfpRjKGgVzE9YL340b/ZkmXyQsiezrrHqrHxvj4xdk0pedz + 6aZD5sBsbhwywcFqMj9WcF7vqRA+AEsIHiJ3BVXKwfoSWeyFWaFyive/Qm817E5EGzEs076KKMOA + 1QzDwVg5PYBrRBbxxd/v4tXj4vBOk3stVadMrpkfmWsldLuRViIkl7QSuioTsT9X7CDPtUvVKeGr + l2EQ+iwchSFqpAKLSQHhr5vV99Ew+f4wv50jGVS9F4uvn9ebhEkX8O/rDbzgtxpQz3qT626xg5We + TdGRqtI73r+b4Az7/d3kZLyN7+8LnqicjaqQ04a2g4JtHPz9cqKKLXwncH4imG8XQMmjKwREu6Be + iWwwTllbCGgdVHAQ+VL77pJPQLebat81+QR0leb5h5uJX2EHcXi9YInvxoc/hP7Ix4w4UY0LT355 + E9f5SGnCfsjWfpWR46Ci3NCKAjsIy7p3TdO1hQEOaLMNKcmh4/h+4JSz6euyWUq5nxqVA/OaEr7r + Gyi79vUEaq8pN10KG3yGcY+xGJOOOf19YRqtE1w7JS8B2FqFUk7ZNGwea1gru02GqlK6eBQYegLF + Vxyb0qY+w5u/YunVELaPTXKf1wOI0qhMfdwmkW3Ed2iX58N1NtwQg/xwuX0j0zOX84w8EgJIbIPl + p8lswCdpbuIIkjuXzOe/wSmzSr+mf9sfLXkyVje1PVjkk6h+v8me2OXxJjxh1/ZJUS9nqh7p9nY9 + sAWK71bMfz7Ag9Hw/p4V2lozgjLkP91UVY8xSiGWC6FQtldWBztnAHqY6VN8R07AYfiCf4CUvy7z + HRZhVRQdyrBZ7T2T+9OyfQo54FaySTBgKCynzfy+7XCu62PHpxAuxm0XyRjrHXjeUys7b+1g9ULK + 24fecgSSlnKlhJSgdL7PjqnpiQOCn41rz6LXUAv7MMUrxzL2z52OKdn5Q8ZoxrIRHc5YXBWB09z8 + Wz/Eq0H598XjitKtI8cdHAr9oZxZlMh6cc2sDlwIdLuR4ikklxRPukqK5/vLCtweiyLcToppO96r + MXeUBCPH8lzfaff6Tjcg/78Ebg+LbQb9hbVdX+ygRR1omq5hkQ07nbw9hLCfTzC6J0b0nmLacvFG + hN1xbXlhB+wOfrsZdgdJLmN38Ku0eF9f/upUstCd0K9gdwSY0xGOAocMdly8MPm3fOcXyZu8lIOv + 39fztJrhZhjNvSkw3TmO49mVvDaEs0E8LuSin6NplIzDMYczHAfj9Hu6SlfxKsVME26L4F+0MSo2 + 74K5VzJUR42vUFz2lS8vSo1g96pI/TipSB0Eo3AM2ix/93WCnBg0Uzj4PF4twpO9eHM+OT8ZiZXE + vTtIxZdMU4wKb5M1GmF4qe71hJv8bMhHfM4hPGIVZgXD0eFYF9nwBd4wwtvcEbcF4SfvhABAJLiH + aEBJH+AzKiffcdlAdAKtV/1tWnN867SvgwT9gA0J5w4+cux8NOqEJ2vs6VXW0A0FPPbRL9QjAqCD + pYL82x43sJd/Rw+gxDA8yNkNu7PK2LdfIwB/R9o39ZRxzr5qRk/al5cbgKURO9pxasGjc4ncR255 + ByuoHe3c/ahjspOZrNyKOmSq0+2mlVtRNVOdrubQLtXKrcCuVG55VhC54QgUKRaEhYhCLSqCjOCO + SgnQRSfNL6LEHLflvOAcNu/rT+fZCIRm2RzjYJzjb80hnEBpgwY5OvEUA6h8H4dOg6sb7uGTfwcp + hcfGUzyL5BuiA5G7/fK66Hi6gdYQrOEM2t2KKMbFbGqH6wK4QA4s0wusDFYq+JFb1gjK25Ouw5dO + +CI1r8sQivbPhFKzH9FD741cK/mDod4YI94oB2YH1JuwUx/9cbF1zAayjDb0F17PHxiv57/sBOJ4 + Qco08W1XoAVxtbYPsKC/YIdaAH20IFgD0I5h//yFYfQnxzCKisjGw2T1NVmk6yrqkGkg+C8Ao78A + jP6IAEZ9AKDali1ZmNwOVjLdbsrC5FatZLpKVvJNLUW2xaosTH5kM3uECLKOSEf6HfQBBBScTucr + 3N61KsPhCxB9gi7MGIGKN5g3w2Gd0tUYU2S+xoskhyPMxuOb2QOWGMM/Nv3j0D/uejzmyghlGZM7 + NY92gMj8DWBfxb9KtxP+UU4FnmS3u51D0/AKyamweXmrZZsXYzJzzvn2KAoopQZ2eSlrGd7uUAuK + T0pucrdRs4vsyKoxYpt6L3/Vk3qrNoQpZNJWQ4qV7Jd8DxrpHZm/gK68MrvReKltFqYnryv9/riQ + PvPpYxngBg7kxo5jgec64b8G7xCIQuWp5DCWzROwcUadjIbfHubTh37n1AAXU07P5XD/On4Z7SgN + 3VDcMHKyQXVCdnnc4PxmlO5z+FwwOiuOVDNsnEf4SPXFxHrsJM71HGJ+VKexXOC1ykozmPjPqxfu + 6Kfdk49EB3k5i2yVHFo2xPe9qsjWbdTkc3tQGDpxlDxFCjPfp7nK0WmnN5oNPYneU8bfSxvNi6qv + FppsjGfNdMx83w5apI34T5gzTDHjiw/jiw/EcIUH0SxdpZuOJoAZuXJdVpnRg8c3XR5IqSxT6ey7 + K8t2zNMw6HYjZVlILinLdFWkYfz2xtbJAmzbc+wo0stUnPDVy8iKQncUOU7g6sX6Rafd7W42zuZb + zA7AXuNVKqsdvCLXjGXtHMX3cQGh3Y9Z0tijCM6zSRcL0hpwbnz+9Xr4hYdtz2D41gvUrqgvM1lp + Dro4JldCJ0PTM1GXBwsSXyvbJvFMont/my9mVMR6O19TaY24UaSO7GZ2lYLg+SEB7LAQv9jBesKX + HdoNTnNkRLMtZuWQAE8zcG2Dlj2k35pHDA5WxE8C02jVPmRnQwIZiFUJwCa55xWQIO3zI5PKFXwQ + Kih8kistNgyYYLSyNQ2qpmfNvT59oC0xy6Pk/RWviPiaqK9Ki3w29FEjHnBTKel73/TnoRQwOA8E + EaEoRmjmZmlWMHvQW/oFULItV3K9BB2S6Oh2U66XoJpER1dp9568OWc1yHWuW6Z6eem5YMDYI88N + Lbl96+XbWMHzuNl9rVFW3jIq9T4RO+VkFlcdDAeVZAVeGLmu/6+ysIY3UUGjNn9F5Df6EJjtRH5l + Z2767HiabB8X4yIjZ4Pfwi1/oc6Lwhh8ph/55RCobFfm3ZYOGbCTtYDip6LEwLNtN/rXQI5NmQSj + 6aMm6MES/VhO6BNrX1iCXxNO1EcGutqDlNwtUjjzDrpIz8vlVmdy56IT4X6xm6Ywo3G65vwZoSWc + CTIZSu8NLcWuvdq64Fng+yfnTV081iJ8/wiArz+LUd1XkQ9flFVRe1a5ic/6qPIhKcOxnZyqTakD + 0qYe3wrQYh7Egb92cc67YhwO22O6dXLPbTWCJvVtLLot0srGYrzgH8Wz9dLvadlsHKFVsFvcYRVY + nPFY/5o8j13OdU+UVDusU0k13m5YUs0lV0qq8aqyyvwqnlEJkBYrqgM/clg4CgLmh+JYP8cOG3M9 + HQE64GelCeU8r3qmBf8bHAa40CgSpXKIuNo9/w/chwsD+/vb9uEMYX9pd4delrq51OZp4hgk54HF + 5Vf0CPku62aEJQemethkflk+nIweq6oU/EM4AqhmLzGnqaqbIRIrYjmV9AUOKfIFZtCWOwT5OYf+ + wD25gI2kn1ozeTrdQ1rCnNHRUorSA9v3u0mnXr6bL2K+mWrxaU1yuUphr+Tu9ulov1DscjApK6ls + mKHfPHqFiaAkJVgNDKrWw1JgA/NpTZMDNi8x57Q1f1L+AKf7B+grROvh5uBTwycUy6vSbElgeFRq + rqf5BXv7ZvAH2CzQevdV5b7Duhjv+1VGnEHStpUzzOhB7F68s2U0jOQEsryiZUWaCRJxMNnDR3cN + 7ip4576dyESYg94N7rJuX39GslyftPTkO96L+I8iKWk633AXG6+zFlA0sYYthY3F90Y+WsGSy+NK + hcPDqOu8kBEV1BrOggWHuWyiuahRSPn5ls8JPAtbW+0troOnlFwMJieckXCpVfF66d9fX1lOB5hI + ut1IqxKSS1oVXRUwkZOrcskhi1yn5CxxX71kbsACd4QZ+p6AyJtCFzxgTul5lqVT8rlJN6o0WK7i + zX2iDHHScc7Xi2pB4vlkbA/jWcx10xrMfcditn5KFgsDPR+snkrWRV/+5RaO6iKLuc+ivW84OOdQ + gvxD8RRZaP0jecNlx8Z5x5bxNV5gh52caceQeM9h9T0HOM7KzQArmOi8CeGvJYWte1C/ryw93pv4 + SBeC8B4E7oPQoy7jLt/44Dh6RBnP05SGdt75U44LmMOSDrTH8UU6yxBQMGqultZuB5/OUbXk/cCB + hJ7v1c7a7hFkubkTGMTra8vt4Aqn2802d5Jc3tz5Vdrcryc3jL2ubO+ebVe2d8exg4iNHMcJghLu + eA7vILYnmPmgMrxwrZuTQvaz2MPOCiBuoP5drzPGztdcFW4mC7mB+Yh3gG4LP7NqTrWsZefibmsj + khn3TdK7Vd6q3T0euk32buR5EZ4OzTVpJTpL0bJuUDuB45k0UEExa6xp911mlyWWLaJKmIx+hXdG + X9Ci7LD3XR1qjRtx+QkWIth41e7KO5p3vOxuDSN9GaPqs4pRqg7EYZdLu+paHDyriTigRaXOUtuz + B+JbuOnTtUNMfYyIJUJ++BwWC7rh5ua3Ma9S4c9i+uA8EzvSRqW3TzfzNSwBee9o6J2GN0P68Upc + PKm+SUsyD84/cVrKeaU9X5PhuOeJfdnwdk22fVff/ZHA8qFbLPjoeOjatkgB2r9XmdlDHoH54uPk + 2q8B5O1ynvuk2UTWDQalmz+ywm8S2NwevG7D8WpHGQsEZPP+XdUo0HOMvHY83pBSKjfdv1UqBQQy + c3nFLNfcj063GykFQnJJKaCrohTgw/9TLQXg8F9FPzrjpQBREGEpgGcJlSBHyFXlIdIdpgFiwmft + loXj5zb9Pvzwy/nF+TBbpVicKL1r1JVrReh1pjabjIB6P8V3Cqj35uH/NhSu16Uj+V4j44Bt26Hy + IfZvLtI3NoSwQXcP3DZnqXw5dexpPcsDPvIsqfbsRNCqPewyfjtStpW6eMS9mlmBAK7Q0VRJqo1A + UXp+BGfDTw9rmx64uL3z1gOcVyqfyPE5bZvlRnzBlN+yK5PIkbVQXv60SY7P0b4jsdiZgiBx2Ll9 + yjqShsqHTAFIVCMa/oi8Sot/ursTzpuLHZ+gi0VacGbl2gL2nygRFiQGYLU6EXNOBuZPXmBr5cfx + FTgtGWynRHDueHkVgRLRbYxBhkee54rWKyWO0ANagOnt2ECv3OmO7fkROUOT6fwOWiz1Hz7Ll226 + eBRcopeXOBmXKVqknd7d9SKXgFV5mlx9Ct3hTe8HizFZwQdhmbcoqEfjoB9KcWg5PuW5t+KaGrMS + GEnbo11ZNctLrNBuxZDGorq9nquthOrc67M5z7ME44rCYPyZEIYu7Csqu2pxgBx51DBFo+O89U8R + KqoLjQ49Y0yjI5rQaXToIh0u4nwgwHN8LDdyRE271D3ON9/hiAA1ZTafbpPZySCGC8SR4wV0PHgE + CsBP4oMy2KIorIB3HwDladtE3ZR/i+68L0DLPKdNco9u5Gi11qrQ36ztoy3qblTbsOhE7FFOrIPL + nWz6bjFRk+9pHyKDgshj5R1PXd/3FqOq2LukgNHtplXsNSlgdJW0139OPlRZNAOnWsVus9Bm/gj+ + CSW48XXZiiosV04EJW0+6CNFryZQuV/8c0w/nYyGt7vtEHpmuI43yg95N8enktV/HnO+cFl5/s/1 + Q5VLE1RQWjDopkMVZrfYLfNwjJ4pHjZlikcOliX5T2XGNiL6615jn/2rvrZGe708lir7Foub8cCv + S7BymmDRmG+HoeX9a3ApqedUp63rzGXV2oeX48pgFkiD4gVoPLv7Bz60MU/o2XG3UcnjLJ+VnXKm + ZHAM17J1XnzkTBEBzWSxef00ePH2+mSAUz2vMbfsgejrok16MNUC72G8u2EwzIzygIBE6z+iq74d + Rs2yzCp5j5X13AkT+3JKOAoXFcFF7W6gqPwRY0RUakCHQ+XXaDtfzzJPoqJiiGs1rsl3EO4D5kUh + jMHJoOXWCcgboFDUH3GnIP0xIs7MYlIaWlOzeBmj9radL3e1TFfNi8dVroCD0BkCi4oIVJoWpqHl + lD8dXoQiQh1Yf1ssZpCm6hE669gec4iqjnfKbI6nd1cnjsdccuLE2208VclwMl8M1jGMM+jaC2JS + w8xEXt+wSWQq2zKZ81evgR2ozWQLAk8fh9EQWd3gN07+BCPS3ROFKLNkYKKbKUtmSrcuDHdRZDVU + dpRK71ghpblITmixYJrDQjVz4gdmZbRtVVRM+P7KYp65xkm3G2mcQnJJ46SrtEX943zC7IrOyVwM + eRUzKKJXYxcMVdcfwT+uE7YTatwvoIX/EkINOwodgVvdx5Tw6PS6mLC3jHU7vtQzZudX3kThAFMX + RV3J5gubwP+X0LtFqfcA//xL89+Hk/UXJxys+X+RgwYWL9ECM6IFFrmu6UZwIsbb6UOLtmfsVARF + MiyOBEesJ7ShYs1i7eb3QxrZc3waZYcf+NqmBMr5tn14FTkmNUeNA32YE6k37i8CUf+lPGcPLcTz + A43cLUNU2eSX7cMm4bwJ+8WbE/ke0NR+3/fxH7DnvDRgEjPugsN5yeQ+6ysrIXrN7FMr7GYniIeM + LQXZiG4riKu01+YONbGZXnjuoPaiJhGpE1hoS1cyV1IvxkilyJ02cjgX87UsSz5iy/MpFUYlkaJ/ + mFcNgb5KtnaNrWAu/mhUV6rAhimerh/i+6OOkP2yfkSWuON4FNzXMN/2ko3mMC0CPOVw9/uPdIHn + DwWiwFuZRMVSgUZN3+gAcVkkvijDkUkIbIZ7Uwxc2sYTKLREDnrhG47f+PoMELjVXvj5Tn25Pwum + xY+Xn7vtzfSA2b4shBf2ZLpCptFmnQnXekPO64D+J9+Y0uE/Xlt+B1wvut3ImBOSS8YcXRXp8Jcf + o0oFeWCVOLm9Vy+dKLACfwT/BJEnwwci1QVdEpcf39rDFyDuRPc2w3VW3FxEzvp8GT1/Ww83X5kU + sr/iN2Bek9s/dFkQRQVELegw+Ua5w71YtsSxWUR0VzGAqfQU6D5mMU6nVtzb48UXRN+CJz+c1SR0 + n58OV/MZfNAqG07ixeXZcL3bEoJLOWIwwHmhiml9P+gp6mz7FebH9YeuzhyXjpc4m6YZh+LG5L1u + fkKPCTiZ1rSfg7IqeiuJeg4OdrlRRVL1heV/yjrSholnTBVf2YSm94qLtGnN4i/C2TCb81Pj+yOC + lqS5xUEe8ii0XFh2J4Om296goPK9cI07y0GzJA0ZVjb2F6IFJXBCHYv6g/BDJDBZJXnVAuyQYDxn + 6UbJR+oRzCXF20iZNII3YpHnO9oLI3zTnhc2S8Y4EBeua0oDLPBij/drCXeXfbyR2r5ORZjgqPfo + g3dQLHabp+j+/qYbXt0bc7y6N7V4dW8KeHU3bz64Za3EcsKSg9l/9TKEc9V1RyELXYxw/omg+d0/ + BzR/CeLuzwnP/1GeqvFqynfkZ4rQ76oAhBd6nRH6jQ62veIMEFP6AOp/cj6gnwvU34Da+pOx9a2a + YWtMnvxjAPXv17aegZbO1RCiMlMlGAdmcD8pIL2Nqe3c1QM9+JOSw6Wc0HK4KSr3jINCAjaTodfX + zD93OxIqF54yDb/mzWgBWHVZWEUwSukuGxSU4vVDvCpJwOiqG9kiEH2Qo7eTYi/7zBZOL9vqoF7S + 7YZOLy654vTCq6Revr1+zyoJDE7ouxWvlx+6ru+P/NAL0AOMnfsxASUx5WuDNHaOPalSHTV4AjiO + 5xm8IyyD+YyMOUxLShcZenumix2fcmDdpXR5JJZP3gTpg28396yaMSu7XcdtsCvqStk7Vv6ABrBi + N6rQ2ZYw8tR7t4Ay+FUpgx/ahQM+2sqXFdrETeRTShJ/aD7L29webNb3BApswQjyVZV/di9vJ6gZ + eVCvB4EM1DRf9eCiF4kOveJhqRCGDorGZ/tLEnAJXbplnRntrofI+W9xVeSiqP5ITJk6iZjIPk0f + 0oUAAT4Y79cmFpY3V7B5dPCL8NvN/CIkuewX4Vfp4Lp8M6ngFFjMCSp+EcdxQ8cbOQ4ZU/zc0vTe + T+dvJmNVXzjHOClB7mr6Xhn5XbNCCw/x2ANiuH1Jtun9ArQ/vHzGKwe0aFC98o0CCQPmUYVDUOZs + /jVBHuWqaPxr3Y6TSFCky9n6GO6BGiu/dIo2ddnwBXbtyyYGgBKgUFM76ozlX7zEVpqPWM9pZjKo + k1l49SZKAWZVoJQqTo//jvk0wDWn/Ca2oOe2KB/gfvFIrAfJk/lLuohjgn63Or4HhyoMRRq4WzxH + dFllQrdqDK3saX+xMOSVuEcQHAikZMo9ie+xAHC3PMKLgLtcadbs2SN/gPwn5jVWGknPtAcEEGzO + kfdrhSNvhJszxsWwUw5Qf4Yy7s7EDItXSHABr3G496Wn+lvbFaEq27LNqyHodsNQFZdcCVXhVZFA + c/7PiivBcq2orJKNQ88PIzZCT4Lr1yTQvPjw8kRWUsLk+6csQ8ydgZQ5E3+tegLk3B8rHzR2pRD2 + TwYTAeH1Svj0erSkCLfE7BAVxyeDDj6g3PX95agMCiXfcnCTh1tgNN4OX0AfYWyFd9VoePMFVMGT + UQHciQfuVHKgwHTidamqq0Sh6tfKKBSHqVA2y2HtNxwPJtOBDTdJufoVbJGUCqMHOHuUcgGH7eD4 + wETnQtbmE7avjFTXsT1Rb1jMtjGv2W0qxzo20TSgdCRM5DwA+u5oil4yppN4A9+s3uEwadDFdO7w + FdCY7Vp3cvVVh2QTH87kymYdNmO63WgzFpJLmzFdFTx3v91U7GPPKtHcueGrMYPvZYjc7sCvtBlf + FrPvCMwwxy4hPrtd1oC1t8tKOHuO27C3hoj5GVW21nWW7GbpbjOfkTXBFeNm12zg6LC0RV4bB1qv + 8IrwD1qmDbut71p75Q1QxKv8PTHNUL4lemJhYoJ2gqGO4i2wF26HkooyG9r+2A5HQ8cdO/5o6HtE + E+oHfGcE+WdlDEWxVa/XcI0HtG8TPU0Sv4vgc87ArstSciTD9/1mD7MV/HWAc0Jusb5AeWceQafW + fE49Vk27a9Wi0O1WBxXsuh0wIlUgKaYvVldBBScj35f495uLagjaubbcvCVAaBuoD67L5JtIuN/R + F8JuEcN/MF+0D+TCPU8/yRanhroXhCtEX2qaf939xAcLaz/cQs8RNtbyqGwyXjX1+/kV6DfmpwLd + bnQqCMmlU4Gu0qnw5vqmrKKzyI5K2WTOqzEmTjqjKOKQbnQmlBFVLuIXtlIARwU6Il7KKdzQFGMh + VOd0in2nnFawhWG2Miijylk2Bc2Fx7myZLpJeCaCoGPIxPYnkWOT4W6dKmYlRb4Cl2bzbLPjWctn + fB2TC+zuLsHdUEfHRg2UCahrcbC92WRVm+J9urif1+PvWKyRqZVZPlJp1FC1llKh9aBlWAkSSndj + 6NkgsyKOd+6Y3hF0w2/p5ktBO5WkHzpXitt4yGEkn9lO+VQWan7dGQzrI2zyuup9UDjkC7NjrGZH + 0VSrP+2tKq690iYcOJu9sn93D3eJdvSXuh4MrfpeKVCUZVvR8U0iS5QvZLvV904RWUmemzBJbULc + JpxendIvamQrY55vRQ6ylbWuxRd3cG3NrTa+vDjyfIx8Cmpy0kNx9rjErecRNY3CZ1fX6RlRm89v + d1sC4pAMIGNBZyInZF6pQInds5Qv43mWL1seBn/YLWMOo4pgAzg7wtcM3du7xXbIKzO/Jhtc9Alu + gbi/Kex9izzUT4+97wdeIZp4dHz6YOKdNkR+AftRGLsuzDntkgNpOYoR7GZYi1LR6iQ9wLr2YBOo + F0b7i3kCIeVEUE+B0o2hke4KWmjlpAalHdpEn3kmCXW9pQP06li3WGWk95wkP76BlmXTh/im/agn + ZrtjUyQ8nwCoSt8xEtnchHOHX6zm5DL9mkhgJ9z/R3oCDK/OA515Ne/q3+oNLhOUHVqSVUHFCAQP + XMYrvAmWS6aCvbzYv/GTOYEnHj2mG400LIgo8O9XzAnMDQu63ciwEJJLhgVdJcPi/dX7KvamY5fc + TTa6m0BtcUaooLiieDZLFndjIrznwwx9NIeDeS7DAZybHpZSbrGfyWomvqPFSzjP56AkyBvnsrb2 + /eK+PlewhhAi0FMHijqx6/m2FXllJbbQnHz72jwerSjE9ctKpkZqBIvOtquZD6IDGhMfvKhE75zr + rlLk4KZzN4/Ij5Q/A9NpNZ6ls2T6uBjfwiwZvxlD3+OhP0v2DsoAJ4nUzhw/4P4nfHOc7dVvPFyB + OlDm4a71PqEf+nPQuHRsm07Tjp6+Y6W3qIS9ZsV5QZOokbrK4QH5l8DrU9C46xZM+AV/v7acyDwj + jm4324JJcnkL5ldpC/7w21WlUtB2o7C8Bb/0LCf0rJFnBTbz2qHo/r0B+d+ePzxBH1B0TmhRlfMB + 6Ssqoz+SKNhdYCzodlMU7BoYC7oqAj+X12XKXtv2Q6+Mgv2Sua5r+SM43Xg5qc7pyN0AXFsBqzhZ + 0ipd8cSydRJvVRxovqly9XKQz2+ce49KMd/tVvdzvRAzsoNmn5GLRNoV/qWska8rb1CbNEwvV9Qo + 54tNqFmUy9HQ4tAvUHD068F5t1zjWWlj8OtYbi0Cf4dKaxeP49t0t5oVmq0Fqc7/jETgc2RmPCvC + iMyzItasiCsnM9Cdk/gLnfLDj7+8Z/w7+IEOeua/cerCOV0IQ98+ErswyiKLEbfbdbx9+AYTHKdV + jjjtcv4m/Hp+xNX3W7cDpauwWrPdC/ihRDTnefngAUCtns9C/XU6xjVsKh+D+XsfLwgfqEVWbTRj + n4g9ZMSMUipN1o2RYiH2OMeSZCIeIlF0wdiUj5hSiYgGNCYRukb7FfqcFMMhd2gWqEJa/1iQjmwi + ASM2kUBUckio4A4q209g59ivYZpDAv5oro7+akw8cnJVhrsHhIyjgRIdXhX5+4dr22LmljndbqQP + CMklfYCuCn1g8r+VRBDYGUr6gPVq7EZR5IagFiK/oyB0/J4i1xI5YeItj/OR44Pnrc9XtEVPh8W7 + cKHBr8PJCW4e6XAyR3f9fLbD4AB3biUK10lMl1E5JkbZEHoC7zLm/SAUj/X3agJKZ8s+CH0wFisF + DUnlsxvCUY5VDv4Vwzua9ELQqNhVTVUHQdT0ziGDQ872/jV4hoMzwMmmtATbpQqBICKsLO01DIB4 + 6nbMg4U1wAT8SMs+f96rKb+X09soPbu625o81IjE1a5I4DQnrap5WRh13EGC2s17wXq9ftykfYjr + yUv8HBPEHSo2v7pmQQeCJrrd6CgSkktHEV2lo+jzu2pOomOXERbdV2MPTiBmjeCfQHooWuECdbA6 + hDQijMCEA3Fj8G6R3qegYNWh2mXD3zdLQW77+2aDPy1S6F2eCs2NPi3PbrlbgLay2d3zjZP89dJd + stjAx9Yg9x/nce6aYrnfc/2c3C4u86MjcBe6beEDTOITUVl8GQGofkSqr+MIFgrmdEjqotsNWSi4 + 5AoLBV6lZfXx+mOVg8LBjyxxUNgeIvWMbM8JfbuuFJbnmHxMtg+aE/cMt54H4f9HxcBmN8MX2ul1 + Qo8WMlyHv9kBpmHzhfFxs6zGYcxLUIszmoWYbVHJGubNvxAZf2P7b+NfxyfjZflLGmIyvldOh9Ky + dLQm1dzftOYRW8wr03hX5JXqRu2/DX8d8ySVZFh58xKDuhwQkcj22wvsbFTp+NhseP4wnxYzzIrD + u8D0B0l8/DbLFP1ykuxXLxRdpJSBpysnb1BgFUb1Zn0rNs7Pm2WwJsUQrr+FyQrq2PDdNvv7L9eb + 5d8H+DLK0cosUgwdn7Jpj0wWJmKijSBVf2jESqhPEDZ9uqeXeEZwVZwyk1HdR8tS6RgXYgRDkHdE + H0J9qnLsusqNurA34Q3pGD3iUTqC8uga1Cbz8ALdbnbYkOTyYcOv0mHz6fzGrxw2fsDKh83LyHMi + n40iz/XdIM8hlqE+VWjGopthgSkeiTN5fqDIz7X9GzqfY55wP0u2yVToddN0vlzuVggNM52v59RT + EjfyU5z5lSOnIKiuyVbkyNAJG88kC85V92mZNgXINC+u4zDz4oIOf2CFpYhHMblAvedAVVs+jjje + p8jQKYA1Vrv+TOVgyto9npiZrqap1J/A1PnyuJmvJGqj1JYKZYVItbhKb0FT26ZghG53Sw4SuebR + DPjxxfUtVRBiNGO+Gs+SdYJMaVsJtOL+4g9wDqrDBKaXMSJ3Y0HEPu/lHt+nkzfdPLtMNiPXEcQC + 5YLADo7oHurXHE+CXNvOB+cU0Z87gFyLZ0xBrmUTGsi1uEj7Bi8xuYOPSFQa7ODmfy5/ufn0js+V + 65sL1VFyDt9kG3uQ4X84gLXHCMDaoaGSZIgYagMdLlmIHjJClQYpXg3RfbdJAzL4MLWgro9Q7Sqs + gG6+DJwI1QZUqUXJEkZxXA2DpSOKXC4vZRmvXh5fYSRkvueXelXTi83nrhUQFL3GicgFtr7A08dR + nsANCL1Gic9yJjcu9drMYI+cecWpvzfm4vgUUHzDSzqPJVMxkrYH3q2PErLeHGS+jGvaAWeHirog + WBaeMo1u5s1oAU51mTY/lQqfbAbvzt8Mi7/rUjCQ6QQCqf9YMqiwYldIujspzQyB3wuJB1p79cNn + nQfHvKc+TPmwu37mj7G6ukRf+wAd7hkn+BmUH0j72vaofEUTpYdPGgWb8TkcQ2fLPNuxtElenZhJ + G3vK3leUW1SgUi+84NRyu6Ve8EeMUy+oAT31gl/ri9vUjpDbFP6LCpoV/sVtapIj9YTcpmBBWQGt + AenVLyqPnTbWH0569xdX6l9cqV2Sdn5ACpA6Bp8LUqw8RChV/e0VCDWPWNHtRk5EIbnkRKSrolro + 8+dKjjJYAyUnYvBqzGwXNpMRs32b7WFNTxYg/8/Nmv4p34hKCQ+/iHNlNk8QhLrAeIuaSLLBEN6M + EL703NjC3pan04gsIu5vzEPhn9ZrEeyZPKQedLSafryAO09ITlYPGBSfDWc7XlgxBR1NoN4g1JVq + BjaGDRH5DT5NJnndduDaIm+I8lUqyVId0nyUqXkkQObgWajD3IgPaUOiikJFiHjAOeJRXXx16lwe + LpJ8ToVZNZs/o7wcFjBWeEGsWgMT1vANmwuWXJixUbNY804oKjZyt6aKkk9XVhdcR7rdaLcWkku7 + NV0VuI5Xk6C8W7sOJkoX03b8V2Pf9lngjHw7UBmkN/P7FfcEIpWYPHP1IPL15Cp4PRre7rbDVTLH + +DTM7Ty7J17ALrZJQJGEJzlSMt5yOnyTYjViirRjGyLR5KHnePVYQHrIN33K9ribQ1dnKWyOG2gR + vn+G1brzbYbb8vQhWfJT5S5BmBgFoH29WAf1YGfpopyL0wJHBjZOEHpBbeaC1CyKsCpR6DqaLC2S + U5DVBBwSNAKHhFFjbkKt4LxDF8hZrpzs9VUxrm0Hzr4GxGFWRLbgp4w+N6i5AnKHaPgqkE8R4Eix + qsH3xXerp2QIBu6FafSIUbQhIloTXNEGadcR1kTrPcVBmUlmsaZ3ge7NBrhGVEZT5HKSWFB0ySOj + gQ5d3fxGQ8JXPOJdzzOxX/HLuWN++OJG3DsaeqcCp2ikBJyYn37wJtxuTL6nYt7ygwMaXy4F/7xg + 4EzobZOh97dxAisKXlg1/SPfGLEBlbp7iK3cDautP0l7UN9ymZQmYbCy9vYZJc/Z0kFW0O46Gk7H + RlHy2A3fGM1cqSHZNapzuzkGLZ80A1iuUsKo1JU5m2zrC3HdKrBV8sphpr4TEOJsc9FVxw8VaoBr + iexdmDnmmR90u2H2Lpdcyd7Fq0INmHxiFavNcT23nL77MvK9MHJGUcD8iLVbbYsNNFBTYNwXRsMz + sNryTFeXuYOfUHfQV1aAS8VMl2DIu+ZzkG43moNCcmkO0lWR6vqp6jiwWVBSRdmrlw5CSLORYwdR + JIqbP8afVliE+7mY2VrM7I5nvEvwrHdBE0Gr1oN/l9iTHLiQ6mRwEf86XsxXX+AxrOxFEnmR57ra + 1pdD9+KBILIO+KgxvZJBaitsSE7TirE8m3luuQZa+zKBFJKWMXKjvUIH520vO8K+plziu3S3EZ19 + N7/Dn9SD4kUq/Q/aSqX/hatBTu9iyTWuAJw3eV1SwKuX8TMavPQNnbD3/EA0SLyrBBjZ9SDtAXvs + mTgrLIEHbDh1TbbBPyI6iGvLfCoWvPdPmdclsyB/yDSjSjWipVTJq2I3/HxRJNvhxD+FzII9f9Za + AfUYK0p7yjsgBw1eOkKGLTxke8SYR/SMRe55M1unpv3Z6Rl/pVM83/1TmjgsojCkab5D8wg5AaOx + 1tZ1lqCDHjcRvvUlT5PBoMamJ3ZmR3nB1Trq+MqtGzZVdb27ghc2V3XpdiNVV0guqbp0lVTdm7cX + OpwTcx3MYy0xHIavXjLHcuxoBP9EgaDTuSnj8uYcL7PhdXw7fE8Z3xz1F0eAa1XwFPMoxDPPCh4y + rDhKvuforlzXhZvdiq4rou/xuhn6ByP1jZn0lu/ZtsfqMa5b8Kx1LbcIJmT7vuc5VlmXft+CMu1E + ttskTntBpTQLDOi0UlvdCAvd+L71DWDXf5lX8YesiFlNntZ6SYVxLIFfN+IxaV1YxDGAyX+7m5Ud + 1wiiwrq9FAEyizFReMTZ/H4lTzVJQqe1Y/sdx0lhT++yilETWU3A60rYoLKsxvXLqmnpnNVSLfG/ + Z9tCsKKwEJG4UWI6UZ/P/4Oh1YQDXz+qpPHi4lAuaykZFjn+WpqdA9xilFUUhtFAzCjpZJAz7hcj + VsOjNT/y5BU3GhPlweS5PQ2THWiwiM3d1xGdcqUJZ/x8wCgVS70D+iaoRnML62LLy6NKQ1T65Dwe + v463CN6WyybV5HZOS1h5i2Etk+yM95d44f0jj+uQ+zyNV3G3ATpIvkFmcj+MXg5zqD/jDAxEeD4h + pC4Qy38rAN0befLhMBOaIxa14ftWB+hJ3YUdtej6pl1WVVnT3bY1F7k+PNAIWvLDlHmuX+hbm1zX + JhONKzx8gijlyOgx5uY7Mf98eLdCu50sCKLFaXz6ycC5UJXie+s+KPPase8JxtwTb9AsoL51gwdb + bQhXFdFZH9xTqwtQnnrGuIhONKEX0dFFMgmK31FEwsPwVLJBFzjhDOYVdgWxmKIdRdZAhC+opAMR + 1+TExLrO6W6xMw5ldBKxZ58Ko2ZZf9jSBwkp66paTPdNAGPRzXUonjGdRrIJbRqJizSN0A+ayNxD + zGMfisSxmjyy4jQ79LniW8EsdLyQkBp9i5wZQu5iT2ZftWawowADPdKnJDAiHTlSmuN4lHRQQDHF + HKeM87Nn2029xIrSZxhuNMtaeAJHXadtwChrP7RCUuvETAORcqYdmz5ohSFtNfpkbp7IPfjL+muy + 9axStY/O66hbvbd8xLSwSDSgFRbRNfJ7fd3OZe7gp/PrtwP+3+E/4eoA/8SrHKPeqhwPZFraZ1Ay + JfUAsqUOUQnKkFaWK/Ect1qspsJ7Izz2hKeWOzAUtW+/L+uGNqnYUsOdpdMvZYUtPwKOysGgvC35 + 8oYPGUZ0nycHVG4G0bcXRe2LdJsWX1Il/KfzCez/02SN5/Tx5ZIu8eJMrlmXpCm63YyGmSSXaZj5 + VdrNzv/3qkrD7GCpmk7D/DIIbbCWRkHo+b4kZYjXC3RQKswGfkwSyIhw3a+TDboXkOaXEHO+pcNP + YzgKlnM8vxFF4Wt8n6j8CD0VNR4TAuKQYyzcox8CegdEneloY/F3NN+lq1e6k0DAg3hD3DplXOD8 + +6KKzIuei1Uy/VIirSkx2xdpKFngO36V7LJ2GmtklJbufC4SaAa2Fzp2RWb2sEzT4Xa+Lr9dY7KZ + 9naFZDMEIEBCexgmjtHTjBxs23bJRV5E6gk8P4oqyMH6MJQ87k1UkBEcRiErO8JrXH1aWMEOm3g2 + 6+WBEfnv3T1NLO7XVodpjavdCnTShE8F6czx4MvLoQbemUk+P4vzWOsHxy4nntd16+APtrIGuIso + 4m7H5ulLOEaagXCo+xaHgwvaN4a/GOPjmGAxtbt8BW839c/xHmqH8npbJ1LlDWvzrCPK79Veie9s + pod562m891NcRzBcyom1Sf8tegI3sL2evf6qx2w7B11p3PN+iMwnpUEMbacwdY6xHW0nKHxcD/L6 + AM/prbSuLxQeNxR4urbdIfOCbjfE0+WSK3i6eJV0tn9ev68QacGR71QgDgNk1R0FQWR5MsW4EKwl + 1VilnWMwV08nhSlJ95Di9M/NfTWhomwy6OnwURPwc+REnudEZQUl9+ePM9jqN/WZMlobTgn2UD9R + tXbUef3JJIc4bCJOqpdJXrVGgY5le01FbfUCm/tC0ye9IGwDB5ayBzRQ799MxjJfudC3Z2pWZObT + YoDzMMfMjZyB6LfinlZIWm7odePt8lhnSugTABHPLcPtREsa7bgtYbdzhaN5lIwO3EPktBvBtlfw + 8nbs6h5zxI+IzT7v0MtR3pI/TfK8mm6+p7BwykHgQ/NJj44rD8TB0Lyw+kjFVEPaZ0uNuqJDyAVc + 8iuuDBEV7vLIl++j7ioS3KKMhR3onfnthtyiXHKFWxSvkkp0efWx4sayvaDCLTqGM8C1vJHvurAM + 9jJ3CM3ncrGsuozq9xRd/wkb65CebzlgS3ec8Wy/20SrSqsA8cNNOEdWiLFScidkixSDeHiTInEe + w4zbIRqLhAtDHpT7Tfpt+zDAYc3pTwNKALSIHkNvFxYDuu0LTRvay3/lCvzAXAGPqoQ/Xlmsg8Ob + bjfaKYTk0k5BV2mneHv9T8ybKVUJ+1gbXtwqvFcvbddnzB/BP4HH9K2Ce+DI/RYPHxLYEFPEKkgw + mAtbxIrD3XIf1dvNmo3wv7Zgn3i7XNvuSMAeSahyuCTxkIpLq34WqKhGQUXk29TbzVfbq+xTF79O + Li/H05RH9Rqy05uR40FBRer2J9qm3l7XfU0p77sMGV95uYHhsPzgURnwqZYXVxOffA8hYa5tFLuu + S/C2xZfUV0iV+Swq5vMZvVdziWY/9sjz3qP/fHYBI6yO+hVulugpDw0q6//7FQu7UNfz283US5Jc + Vi/5VQktcYWTsKRf2oFd4a4PvMixR4HvBhXKclk8IXYXAgF54Vs3J1XQnlENmRFMiCG+RgE3iGSX + lKwaGBjk436Y3yKOVA1KmCj1uLm8IQ7uyflrSYx1vV44US36RcZzx5owh9qZStzG4J3nRXhmGDOr + q2/V6qMCPW7b1IBOYMKNn1SppSVvIKu88uCZjKwkxLpNYQxxvAQIIg2d4tVaJHA6Ejc751jvOiEG + fA0oZTyAk83qAQapScIe6vA+0ISORgE+BhjItn1K396/llp7Q+23HiV3KoZpRXrTnaGld4wg2WXd + BDd/tDwYiDH012uLdTgY6Hajg0FILh0MdFUcDL++qfgdXC/SQzFu8OqlgxX6/sgJQMXaAxSbbkB+ + DeTQnwgoVkEOQRt8Hwksl9yI8JGcWqmTq2/vSqxVKxwxe8AqNfda0e2Gs4dLrswevEqz5+JqUp09 + PACuz55xaGFK6Si0bMcSXGUyweMXZMSJoWulk18kdlyeyw3kbFjiuZpM7xgcEoJF2x4/PN5uMNnk + MYPlJWbhxWJddXktEXdMNiwbkvtL6YiPGq02x3Vtr2JSNn6PzIHBs1I0WRcJdCzHb6SZ1dpUE1j/ + HO28d4Jmgs9mWeVXL4lstrKFyMFNTnBW7ubL4YuLd5cnI80U5Wc+L6QFW0QiJ8630/xpzsdW7tFt + siYOTXxph4AU80STAU5LtUADAUbkUAJr7Xcaucl8hwDw9V43fDQK8sYPJ+Kk1JLiV7cJK6emHAk/ + GLo1n19aQ0bWujEQYA1ar+fKPHrmvGenVtiNQkg+ZJpLrxrRsunlVdoE4+xBVIDdvP3MVFe8+Hw+ + ORm+mHy8fDOEgQtD1w1OBudwM0IXoz4Qfy9xdwxQ1MBGXkc/MKJTay6/Yb5H5TcP82zLE7G6kKYK + IR4TxGNSyAdn/A+3O/+qFRAITm90Y7Vu7OOmt0/+C/6KB+iGbsjIr3WTbNnFLxe/fpyc39x04hxD + EXyJXc1ntjnpmHEE7A9EFebxmrzf/3Fl+YG5Zky3G+k2QnJJt6GrtKx///SPakSOe+GKuo0DmjFz + XS8YwT+R1Iwp+e8/gs27TEkDB1eOY16ALofbYZckYIkcc5sjJm6KN6ElzQXw5EI4f4tm/6nUwldf + qvqPJHzRVR27UVWw3cB2a5LEyxRYmLUr3WzZGnHE9TCi16g5aC2U86g4znuhfyoMH1rGt1ciGS+k + JbtRVNV43hCBMi8iLOGg+uVcp8Ib++ggK6dnXzfKYj7YBp1kFWrCG14vYqwZS6bYobmDCHOoE73c + vMlVxJpBX5jleJZjS2zx8vwV4zMa6vNfwvzhxL+Pl8t4WJzMuBUUloM21UfDXbbj+PTnnycj9DQ1 + LRw4QxC8AHaJFfYWD6QIRTMrAERg5vgKzfG0uChhR0pW/4ENQ05l7u0f4A6g0Ftgdg2odzx1yFQ7 + YC/7VK12yMi3TwXkYli2h5fJ2kQ78Vtf4ghq4qIncRFxExWrbXElzuIl6pPZdr7c1WJbNyWW4GLI + R0RbNoe+Y8RcuzTIGtuEWTdUzumfCRfSB/2hF5ZkNOz9hq90sLj+uM16heKwbMochXmMnu3d8gj0 + PTzMWraZvUxXdT1+rMynS8PKhfxpqMD61odz6lz/Q3hqBR2Zc8VDxsS5shGdN1dcJf14NYtFhHC7 + u92BQTp8cQuipMnrW5FrMftkIP+Kfyz/LV6sGcc+wWVL9JS2LbA4pzCT8NGElvIX6J4tnuCtVIyN + cF8WHRIFsWNipznshAB5Yb28ZfpVxjU6CWREZZJkMAyg8D0I3kktIQy9auhfJpS6DtmXoBASlXTx + 1IUb53CS4RnW6V09Znsa+6agNG8clBa/d3ceSniIFIjiDOnvwdbFjGwMxQ/vHpn68bhP7bs2i/hI + FuJZIrhyuEjYdEoiSyEybTnv8QPtgYjq/sT+nVYxANvhO/vU8jvutOIh451WNqLvtOIq7bTL2ZIJ + D+NH+NFa43/t9cflkq3lHBzwv/zC//IL/kVNThmF5X8acFm04/pix7WsMpQcr5F5gBW9NctDVRpQ + b5mt+T5redWXO+gMcD2LTnW5euc885xcLt1w9MwwFw7yYfbDU34ANmAHSKFDxPensysl7dmkitkh + +QQal+ABE0juRlSs+fHadt2L8bl5xrF4wCznWEovZx2L67QL/Z/ri4o/1Iksu5x2PAbDzmP+CP4J + MSm5LVNguYEWpuO4b3qiMo1gua4TluYfr64hpzkKPYoO/YwwyY9lVupjX8Seclm+w/AITzKeDtPv + B9WHy6VJRUOX15bTIURBt5uRNZHkMlkTv0pL8sPv19UQBff+lciaXNsBpX0E//iyaOjzA8xEBOGQ + vUC552JyZzB8mIKOZVriniQHDkKAvAStCD19Tb97kXxNFhmP30voYOhqEDJLvytMYQp2/B6vQZPJ + WQ4LWSC0UXx43FSDGXrj+vougb8Usjds1wki6XPP1/f9AkH5oE9g9y90Sn2kAc6OlpJtBgvUipjT + axPv937BtjygtYIjy2lC72F24MI0ccrUpAWTkYvmFBYCIFEHeA+aWU9d14Pz4F+DP8a0G+DKUq5/ + V2SQRJT/0doh3ba1w0Q2Bes96Ga8W0hIMVmgGyB4h9TUVj/eETx6MPOphKNmInfrXFxD+Mi+dfeD + pDazWx8us5GMXaQqoSw+89FLUy9wP4y77xLaIj6d0ow6wiEaWH6BdD7lVf5jfQl37oYajcNjEZkH + JEB2wmFHvU9Vf2+urLBDfTDdbnTUC8mlo56uCpi7m48VyBQ43D0dMsV/Nbaj0GXByMGdS/hnebAW + YTcRLL/kFhhx7mYeF8VL8q88w36arrZgtKML5dNu7TnrEf7LAkvUnE2yBPZPAUqXLavYKqtiw/oB + 7TYVFkeua4dRhcS71UOliWZR2HDAaaJzLJWrm/EtvCV+JvQANATzfyy1Y+Ek0M4532qKvte3gBlz + Y4UM/rC6/jQ5kV6IPQ1F3RuSApPvVYGuTsFShFmpFagNoOZ1wfGvJye3EAKu02uXu6LuzX3WCDpo + JJO6d6RwS3Vjy2tK9o0Qc6XK1r6/n7vNkErdTPu0YI1YhLXSs9X+9+22ZlDixHAK75M8eNLtaYAb + p9TkEIZ5IAa8yRMoPmZUi3C7V/PBFcbtVEwIEj2dZ7h0SWvAOcRVwxZJBkCBLgEF8ilwhBifXqZ2 + r6zrPmOx6u0mbaNhLE5lKDftt8dIZ8UijXytHiVSK1c+fHyOrcmGLVv5hGr3e6PXOLgIJhfgB9LN + 0xnTsq/qb49Zdl4qcLAQkYnA+2I2R52uqyff90Q8pQU9/ThG0SMzpgmOTJs0hi5IkyefknCIRYU0 + vrhz4GJgmcdO9y+bPiCMfKoxf3tlOR2o4+l2IxNFSC6ZKHRVeiMndsVECXEVFE2U4NXL0PMDfxT6 + DHcL7osslM7Cgb6da4VgyeW7sXc+wu5ZpttyOienOJ9vsq3Cnr1NV7MzGUuhRIeZ8jDxZFI0Ylcz + PHZ5Odn56ha9i3Ap2dynCTqPCgSDD4/rXTZfUYPLdIalXPyXM8kGAsPDnx3GYGvecqiOFZHJZcp/ + ubZ7iHEwTEwMqunYtUXkWFTYCDHtMj+ogFeW558e2GBeg47MEF8m8Com27Z1VOuJQQO3ibdTe2el + iBba4MtCtVIqft8ndfA8puA6zbI5bhUbpD6Qe7x4rWSRru7FzOs6Vwe4OKUabAW+1Vvtu1OSoA9D + /+JMdF4mcp04IqgcpLaP3MPOcxSdxeFJuzVVwe2oArh8ygPasvK6DU534T/o5LMlfRcLPHZqOZ3o + u8QzpvRdsgmNvktcpFNwmq0Ckaxz8eskoogDjZ+qDJQpOcHtyaC9O2HjcZZay7bn2o4rqgN/wgKu + xaA7MNXlp0SSD8s59HhHJxwOhqdMto+bY16+d8Siraa/PckOIBca4Q28v7aZb+4Fp9vNgMNJchk4 + nF+lxfV+clkJeDPf88rA4eMIX9cfRbbrSrKXj1LFV2Z7oQ4dj/C8HAqOi09j2Lu2j4v7xW4KO8ly + vnpcqLKl+exxMV+BhbqFCfTi/WL66Xw6nmBte64KFCuJaluQyMYNQkEcDAEcGZvsbPiwW8bkc12m + uywZYj+shzFy3yqlYvgAuskivZc65/v1vAYAoYHRpVw5NyroSGHELCesxJv7yoiBbxEf2lKT5pUc + 1zpGuHzDwX/NGA/wrwrLyHXDgeglXNJ1PWpcqaROhkOFNec+C4ltnTKuG5NiGQZ22vj96vNJcYM1 + iGEenSxYedyo0aNxRzGYy6gy/bc3k7Hsu72VKTV4AL0VtTC095pEjdRV7iWWL4yAuLt1V49ewIJC + sLi0fvZNlQNPOQ4w8fvVNZxe5o4Uut3olBOSS6ccXRWYTFcTuxLsdSzUe4p5Xe6rl8z3PTjmYECY + I465a+Wevpp/SYYS4w0FEiDeYm03RGrTRYX/wmlyITAWWIHLngxYNfeyE6qYVJnrY46ubQdVXqoi + Zo8XOj5z/zV4q2xleURw+1uHs7teL2z3XKHQ2e5rDCllWTolFFD+yHqTjH3rpop3RslHdbh3LV8z + 4IOudvQoinpR8F1ETNGMyEIHPqEkM7pbPmwFmW2jbWiI9ACrd2x+bKHIcmEawPm5WH6O5UvSk0RK + GJWGAv4EB0qW1nRn1aLpGX5Pbs2eKs1hb5jVGfxHPWVcnKOa0atz5GXacR+Kye0SyaeQ4Q8H16ok + DutvfOTZfr5Z3D0WWcvh86Wjxn7nnFpeN5518Yypo0Y2oTlqxEUatngxS78kCF4qU9oG3x8XyCuE + 23e8iW/nnGUoz3grs6bLNmA0WeSFOJjwLwEm5c8jFsYeMALT2pu+OMvV9huSt+DNWHx5j+/aWzbq + n3xxwAOuRYyDMCOTh8dZccr1wG8O0h0hPR3rE74H8f1mh2IpFVf4xXzs801RdqAvzV7Ey91N1I1e + XPh+191NPWO2u+VNFHY3dVG4oeexoHyAxjEHdpV/5ECiueV/uoDbB/gMR5+DPUyizxHhmIJtgzkL + BuziEXtjNs/Urx29zg4pCIj7sknWCxGkGs+SdbKaoY4gMCpQRWhuw5zG3XH8uvbmqydssQBKw6W2 + dlcHwQRNkw9JNl/Ak7VRkw5Svdw3oGohug6qxwe1JuwmJY5wBAqj3NHrII7W/NOLEc7OwsjykEuB + XAkNkkz70XXc0C9KTb4jIFUdSqhRCXE7bGIPpsxTwCgGpUFSk75/QMOWTEzEEw+rU1pMztYYiPFo + 206kzaHG9zQ+Q6jad3JtRcw8wkK3G/mehOSS74mu0rlxcz3xKr4nz8FMnaLvKXw1DpjPPHsUsND1 + 3fYy3/UGGpj+1xCQqUJd3468wX8JSVdHEHO1D//0Kv6jdxy5eCNh3k5es+AtQ/yOLgZu/pShiVto + pmjk5pdpTaqUonWW7GbcnTag/4n3DiypuAaOf2pF3RRX8Yyp4iqb0BRXcZHet5A0RV7P+WpccL3K + Efo++Hx9/r8SXtmHoxeOrROtDdRkXc/r18myArXRwJ33xzJA+zhwXcejlFp52I0l7j1Xuw/C4gmY + 9BgFDsxo1slhRI+Y+otEA5q7iK7Rufh1GTNhUCE6HY+Dcp+Q8I+eDP455uUb5wTIxLuSqhulC3XA + ZXBvURBag3641KiAAC8dKiOwyBj7Gk93iCvGIYU1tXp/pNOLSO9VXcNd9tN0BwofrdnDXxCEk4cB + hfNCUQohGEmvhkFBmi3n+uEv5XkWqeY9JOEHZIlQ/3enXSNQMzV6P4Zf7nke5UqUS9D3qlNosMdq + eHAn0tdrnXFSmTyOw4Ignzy6vO23dJwlPL9KlzmqvX2WIiBWtw/D9qOm9rXvGQ3/aXVrgs6BdvzN + mtVkkbmn+JzVTtQjQfXRIJpKTuSzpu4714H0RsNNqsKWOa70waZdYEsty33tnFphJyWLHjHVsUQD + mopF14SGVQpNXYwxi2mOHypmjEBPRcaWz2/+Mb48EbDdihxPC4SoFrnr0POE67AXj1JTIneO14FS + JKXLkhI/Li9lon5NsLKDT6wHzhbLd30NKxPTVFJC7d+LFW7s2e5KDPOE+HX7HjKHmfvjqNByGOyQ + Etym8eY2/f5YWVZyDojldTw6XODIgLh7ASsw6BQNp0dMQ+GiAS0OTtcMc939E23b2J/2fldsFwPm + oYxK/JX1/lfW+w/Leg9ceXAz2/FOWRcjVD1jenTLJrSzW1wU0TyM9m8wo7kwKjLppPWPRfl4UjM/ + Eq6RJ+cV6IAtejT86TMwQ9T2TCRGf7+2og4IgXS7Ge8zSS7zPvOr5Lb4+9//7lQQAj0vqNA++zA1 + HGsE/4RuqBM/c4S2JQy6cqhzkLZpqsLHmBwJyuH9fZJtaYFy2qNNkiUCtjwevlnFfx8vMCVVmiU8 + NvD3f//b+Qv90yCoIEcDOlM+It9lJKFQcFj+Pqb+HQ2/PcynD8N5xtHv7vGded6qKCF4lCh4b2H2 + pIs5HyC1WeC8UcmooYflBSwQNDVU5Pq44MxMMDmWGp1QsTaAfIbydgyTzWfzumXU3/H6RwI37cv1 + 2hN3m8MsMrMfEljw2UM6/XIcp1xf5BeBJL+YuB+Ydcq6QbKrhwxV3byRorKrrrbkfMoqBeVH4DqK + biwXxKMj2PGEThuRuWySz/dk2YK5YnX4+usYemCRLSBwavvu+LSsIJAhBMc6tdxuOaf0iGkIQTSg + hRDomqBJqXGEDYpYhzdj2Mf/vbtH/DmCAio4ps5vp+4gxv/AvHEsL+olgBBYju4+bhHUSMDlU3ZV + cXZtOdpip3f5I7rU60+DXjzyz0GPxdO/L8KSzr7l49mgYD4Rztt3mLHEdNPq8+3Yw7AMeQ8bL+HO + OK7MD6gug8Jex1TshSTouC8OGG3WBXbOAi/eEaCwtm/7Na83UkE+mQ2gZrCiWQJ9mCPRIa+Iqb4n + zwZKt3pzbYeeuX1Gt5vBupLkMqwrvypIFS4nlYJ2i2dU67CuL5nl2K4djjgDpydq/W4eV/EaU8+W + vMRGeNxuLnK0O267wZRcQS9kUvVP4TTPaY4zDrE456g0sx0v2vzP4z08vqJKCCyX2yT5H9fx9OER + /4pwNVtRTHcxm9rhuoAJSNbd/5mvqzXoWd1ba+ZPEHlNBprl+6APVqCL8nTDOvAixw/tpjpGO3Bc + 1yqDni+TeVouQg+Y3Yie6sPKiNwySiZ+aI2UJpR0KYXAiL4mmwwLzRcxn+fr3P4TZeaVTjzTiw5X + iFG0kIDo8Bx+1JbHdeGBWwkThGO8jud8bG+T7bckWdVPFDkBRN+0Df8A57VC3fQjZyD6jw60eXdw + P95v+Ijq1MrjLQDb+x+uZS0PrdzRXBqOJ7RGB2LGcj26Mq9/eXJcHWk+2Czkb3/z28dfZXjtoMy4 + IJIkNh77n24kNvwBUxIbkl4lseHXBUbdr9dBDYlNUCaxeQlKXOCxEfwTSRKbFg/MWSkqOUcmb2Qe + 4MATRcUYDMdkk2ZLvhCFDUblwhJKDpmMF3Celhgw0k1Q9ZMhtuQ32LmHL5AYYTd8t1vdz090wgcw + gRpruOFoqaP37jExtw575E5OtBJnR5NXLrIdeMvKnt9bqXnVKtbhrL0m/u7Ag/51nFbn3NkQNJVN + oQYv261pqLPhRWy/5JQWc6E14SbNN6JsuIgJfljBHeThYpje5HRb4qaho0GA0OyeUen6RfaAp2/j + 1CTQws4zcoCLKOci8t2uDoxauJEOz7dRV7iayXSXb2n9p1jX+z8oEY4/Hne0HHGp4p0wde7jBaXz + 5Eu8deOXIYfQUmBo5/6pxbr5O8QzxmBoogkdDI0u0pbJHZJ3MI0TBVs7IJyb7cPjBteYIndRxwaq + mGI5CTVEawzxz8DwQu+H67muoE9pThDpMnue2HdsHgbrmsDbkwP48JqZNjMrJGjaD1cwzcyrWuh2 + o6NfSC4d/HSVjv3fzyeVMBi8W4koy3o1Dl3Ld0ZhbmLdgiYr52N5K9UO6N/jdTWQZRR+KrANOIEN + 6kYtkGq51Qb8VKvprNJkF86+PalVE5h+xXwq7WREZoT21gavY9AKwQbZTTHw85/5Gg6b4Qvs1ZN6 + 5iUcKsW8BP/XYzLZk5YnPk22WiVT/8jivD1PPxWpkyPop7tXAsjWcWZXp8DezI66Y/ZAUe3M0D0W + P0iZfiTireI0nM0LJNsHbsU2oYRfw28dUML57WYo4SS5jBLOr9JW/PrjhyqEo2V7FZRwD+wIyx95 + ru9aAiecuWNn7MgOGYH++2/UHLIU4ZjPeDdn8q+kxELvj4ZFEEB9dYIm8iij1QkqxtPFjo9U8j3l + h++cxHxNYFksCsGI0fA6zn75eD75h+CU4yndwkHGC61ArX7A1D/0vqRr1NFGw028jqGv56sxB6Ei + kjf5OJGWYFRxIyEcXy8fqu6zrikNNvMD3/HLh0pxXuq+sqAxy6JBVBfccM38dMHGrnjNrs9vlETJ + 1yeI/CpGY2D7uqcwp0mMbAbmQFgSzuHoME8dQ9KIdFLOMYlKX79PoDbY95v02/ah7O5zOwms+2Qx + saTzCd1yNU2BAtPEGdnQFMxkuRiEA0HbEU5KX+KxPeIHexYopqls0oVYoxxqYYuY59uxthdLp+Xo + aVb0yGw503rUlmxWWrID3MwUqnoUREQulJ91s3gZ3yPORjL9sk7ndTpFU1QVR5OfKJ3mQxenKM51 + il+V1kQL+k+LON9yqPJfWaxgeJLn0gQ2tN17y9WWurXWSY5NhzSMdesO00GmA0c/gcpk0zTjPCY5 + NUAHOR5zKYi+ShDi/2tSmta72/n/3WFvjuWLL+b3WsBNOufnW+7IaaPgqdPyOmd8CC91KKd6AVcF + 7Nv5fZvXudZz0uyy3l9/GEWWq6lKlGKolLCD0o5CRyhLlt8BjYFuN1SWuOSKsoRXSVm6ePuxGh7k + 36orS2M7CO3IH9lBxF1gPEVJ5vnxrL9baJyjP43j6eNC1a9KTeMiWdaARWtZuKVUzCaKvyAKQ8+r + 2LDOOP2eYtPj/5f/dxpvoEOUV+hfeUVtPR+yU6If0SmXQ5fZgcVK59tD8j2eJVMEnWyBli6rTvWS + Bx/zzkBx9d0pkEHLLB538Ra+hxf9qJcoBeuWmnj0gs43ZD7hHFBnTOjzUBq8NDcNCoKPAGeWSzBk + nkrX23MOtMsRTGlU/dzDi0WWx/eZIwGonz7R/TAO+z2kHiGdfojNt3jELz+UudihHbZhKY5blmKn + hvpAmpZbsARjtm3PfAum2w3BmLnkChgzXqUt+PJd1V51OBSujsU89sLAj4KRF4acebgND2exAflV + PJwj096fVbq6wsBxwTbomT39ODqew5xYckIqCNrA9k6Z26nijh4xrbgTDWgVd3RN4JdK8PMtGBnb + pABJUUg4brzpfHPv63fCBZ6SzEKHUks9SteAPyDJakOK/+FBjgPlt/tgPbJB8g9uRzStJh36HsFD + pJsVHOU9fvbRB5BXfhQL02M+hw57G0fgapTniChP7QF69OAW2s8xiyAQeSn1mCs/kgrA7MTpAJ16 + ZEvtapJL5zEewr2QMvR26iqgZuZfRKeW1y2ITM8YB5FFE3oQmS42B5EnH97ISwUa6LzUMZfL+bKY + wjMtgRNukmU6Sxb7gS58WIB4i8T6myXHIUY+hwr7g2rcbUorv17PnF8uFhu/2iOF0vbLy7/t9yIY + J6u1r6ZeQuB9lSyFAcW8ry0Wdoh589vNYt4kuRzz5ldJcT2/fl8BcmQcoaAU84b/wMCOmMucSOgW + 53Qmp9luOsU80WS4eOSoMmSE/Ac+gliQ0LTOtsl6KNiPqoc52tvrePvwDecQV39BeJWARE5CncG0 + lCqba742zBrHLuu9cf1rN7gUYCk1SPed0Pctv6QN13+bTlOlZwgX3CJS5OBpunaAo52HzQW/55No + WIYy9yephr6Xn659OTFc26VcgfYX/DqPCypeB7Oja2ZOf9Y7TNfCdzXPcaNT5HBpe8pMqHsOEiK3 + TqrK+PUa+s5866TbjbZOIbm0ddJVkSV8eV1hsnZ9RB0pbp3Bq7Fr2YFvjaA3nVAAoXxKV+OckLcc + 15qmIq2SZ7zp3HS5y34snP9Y+KIlKaR36rj9YJ+P4D+v4T8Ohao+uDzAwD2L080OiYhuvs3HN6s7 + eR7j3pIqCXizSj3BdP6NIDeGpZLAOhFK0pRuzGHGibA4u2NrmZs831TZrTuGqUEZDhynQjKof36x + 9xryn1hjEjGMmW0FPyr/SbQ2uBHwN6JsA2ZWDgsX14LOS92pOcapDaD2zj9u6Ae4RuSB43kiCbgv + nP3aDOG/ksC03iBcMZSTE4N3l90W0I2os+bL5W6V5I67jkdCn6j9UUhlMTHsrhixLoCc8TImjjiy + PUByz6nElqAgLyz3nqy73kEvDq0zNk7rq0/BI24gg+3drAd+LmNAO6qGIMgpbHyNr1dOBpEqUSSs + SThSuliTeLuhNcklV6xJvCp4Ad5+9ipAQpbFKtakB98L1qTHfBfTF3mZarL1pK7wF9DPvsjJ/5mv + pmPd3bUH9IdT+cQrnH+cY3GGWLTwwC7bwe8kClOh1KV4s0FWEjTG4PCfwfTlX5qsHqiKWsvluMN4 + Nk98GmNxJ1JiwnL/Ot/ssgHOCmV12p71jPns+gbuCRmda7CuHp6Z/zayJF6O471HJoBueDnyIVO8 + HNWIhpcjr9L2sdqtmSMg7GgjXKcbmJECv5+BAhl43smg+LdP/JkBPUpoOU5PsOkR4T9Sa2r0Jb5h + vUTzwNYh0tthn3ul/fMs31O64yHwKlZEiPG3IocnS9Zb4wK5YwsYPPU09EOy4tnVpsgsvusUn+bp + ej0+2T+iLLNCPtFxKVjBGHS1H8SiJHcSlnOanCN3aadQkHrInNFENFIiNKGr9ejVVaLVghyESvIt + 64fzrMp0gYjqLd5dWZ5rrrjR7UaKm5BcUtzoqggDvC+VvjHXQcqmUsFF+GpsW6EbjBAWJWhPX7lb + gPhq+kot0lBB2+GQRJo+dlOA4QgdaD8o62OYm5xs0kU9inxROCicYaNw14PzulJAvk8mGASVrMN9 + L/wtRmkIF79KFg1vapcKygtvarmYSF32UpHQfKvWnFCh4+yTlmfjwMhbx5ygg2cDTIVjo33BwfQC + HUU12GiRI3GCvbduNyxu+YgpSrBoQAMJpmu05Dfrhc2hS3AR6xT18jC4soP41L6yw/NB2w2/8Du4 + vLFN+P5uBxBuc5XpYEjv3ljfj0jNOYp73bZ92ysoBlgty4nX8zGREOoH9y+6NiL5ikLFFuPcqE40 + O32OYHc3zxx6Igr5SCaUOmFoXgBJtxsmlHLJlYRSvEqr83pyY0fnlZRSFzdVPaX0ZRiFvsdGIbo9 + mQ5Co85dBQi15DgwrnVzUp06Z8MVqK2LxyEeEnSew657vc7s6DVhhTwggnM+DMgSHW+H8Kb8rxIj + +Ia51b1C1hBwcXFTZB/BRfgrVue1qD17yzHL45NSDoDrNITUI8+L0A9TOoENpoweMnKaChS1BvKK + P6VPN2UBwGZWljh4juM2oKmoMnWd0DLZ2muSJp/D9n0kP8Kxe3ig7+FNc93I7Hsu23W9677nnVkK + fl4JXJGnqAffuKesI5COeMaYfFA0obMP0sUWvOksmW4SWIaPKsFKTpObZArqTDG9O8Mr3InmRnZP + 3IMEdaQvWwU8ebDUSOBAwS1gHswSWa07XsLH5DkRVLb7Pl3cz3HXe3t9uLbBPMtRvGBHvDzzGSWP + N7/xES95iPDDsY56wMfqwPrx86mNu7zsU3And3cOHmmHOyzyNV/qEX2j3F1+zpXjRV1Z7sQz5lw5 + 1ESJK4dfrHcV5vQ4hLBWosYhcWjkWrhF/iyXYQ5Y7zrdEevpGWPIetGEjllPF6kP/+cNRgOREELh + t/EUIZCLaDTT4ftcIYYGlJ7zfrVhg3v8D4erD6Kn7NDnQyrXhenohxN6uWhmFs+5jtqknKGUoPn+ + CnYgcxuabjeyoYXkkg1NVwWe2+Wkko3A7BKemxO9emnjmHsj27I5tmKbV/t+AfK/VYvgGzzZzS5c + B3Qsu1IAj7WOKXQwTImmlHTmu1Gjg1wT22uFpsNs8untN4KeJ+0vRbuIe3G+SVeHWw9Yac4PRXnT + UOIUHBrUF8k/TaPfSRp8os+7+t35mwOtmkge0IHjn7Iu0Tz5iOnxLBrQTme61sagozNkzlcP89t5 + lURHSafDmter9hUkH4htzrEs2Vd26J0yq8tBrJ4x7S3ZhNZd4mJLf91Mrn8vsYtq4rB/bNZv//z4 + dJtntNPIuSHj4hd28NbuFu1Rz5gqabIJTUkTF+k4XH+9F9EejuWkI0Jrawe0XsQ5zHg673y2K1cT + ifU3AYEDlMo9BpFFHoPAcgM5gwjhKd3cxysJSdhtpz2ODSCyyctTD5UM38QrIUpiK45LTzKeuSN/ + vH7c7L4+UtVFSze1VibVsggwiiyRq+JQA9ELeG8l34vOFkHr11GUz0o4XV2ff3rXwZOY+HuERm4+ + SvF6HcNE6W4h/Hg7vo9tTS0Hm1x6fGps5+v291eboS03Q/81g00p6rQZimdMN0PZhLYZiouCZg3T + 2pYv2Mn7am7moO2Pw8+bJbNKLNVwhVuwDiPCtdAi5KXtMazwjuUScBq9Dn+RP3Ih+bFWtaWeThc9 + Emk/uTH+FHnAYIKwSM2NF/e7GKtYx5/Y+GTcpQ3jj++pvR+T2+xYivLeARPA8jqlNstnTCF4ZBMa + Bo+4aEDHfTOOwdxGdQw7Er4BO1ZVllU3p2KTSHhve5zmwGFC7yoV44E6g0N24JbxI/1PtE6IkzHf + 8Xqex2FApXftvd5v23JSujLh/rXN3gbdHN/5Q6YJ96oRLeFeXqWJSVipOGMG9D/5qgrAikXv4fZu + CFbiGdP1I5vQ1o+4WOBELdRH59VWxWP4w8f3w9v0uzJPSpS6qh1cNL6Er3qqUs+fVeIS0jadreer + WR2qa31q2p6HjivtM0/nOhj/X07bPLLkX7inoJR1iizRM8aRJdGEHlmiiyKpcizYmO4XOzgCUm4t + rsrGttldxRZtzwkjm6xtLyLEoWm8uU2RABTRGY6F5vStiGsra4SNzpKx5O6Ec+Vh17naOQKToUXa + qADwh+bIVIdr7oNuuvUUq6GU7UpP3RsBa2DR6dQ8J44/Ao9qpHX1EZrRxyvoEPMyBrrdjLyPJJep + +/hVcnFNJv+nCsPpl2gjXO/V2HYi1wtHtss8BCOg+tMN6AC/bB82CdcG1DlSZK79PyOJU4/nxGT9 + H4S0aMZgWEMPgeW3WxazUb49zGGOx3d3CbKt5pxq8e18QXS2OSr3GtNbyLU6Epl8i3SbLhJcKJI/ + FV6jCsvcvWiWRcy1gyrPX9eiWU1Olf8hq/RzHTOwhsEU2HZDY4HPkBC8TFmQzrDPcRAe0mWSQt9W + 0i/DEjXh+8tRoXAjCOCGCJE5/nizYoCrQKVrukE4EN8rnTbcK9jQR5UV3wL9EDo+qypP/D2z+X86 + xeX639YbHWkRjKt0ks5XyDu1Tbsx8Q1oTtKhRlto3aw4FMIpoETXbuvFqMdANDEfxvfo994tC2rt + kc3t8Uv3EnbtA7+ht7PaseAgoc5c3cOUwUDkT0tHlXJCSyyJVBBVHaZGU+rGOT9Yx6+Nj3L5gNFh + rqSXjnN5XRzoN//QD3THcR2y4Ys5HM6rMUO+R2sE/7iRCB5f8nT4uzkpeSKbSxEecIyCz+PJxbXi + 5ltA09PxbS2DLod7yPPy6/InQiew6/AenhVwhEzosEMPEzqUxR9Ji9/GivxOrgnxiKm9LxrQzH26 + RmMezxLhpL8Ys/EWpMV8sd6li0YE67o75Y2/kDMHz7H8jiG/ZZbw3+CMa7qP34anbqo2jF84ecvj + ora9BPfJAX4C9zM4FmERWMxSwLDzWV8oi8ynRC0kdUmEa3yLlL99CBcOd5juY25ciqqUHSybo6kf + eqOQeAJsSLBXQ1/66skx2ItURngPYrBwNfSNlR7ZZNgxa1w/Q3tv0Il4T93xMeT9j7vqDFSIr8Kg + Px6q0/e9ciP9fgaoFYQzJfwQHM6pkeXp+fKG9A79Dqehr7RyubEcRMvZHzkJeWaIPSupHg5lvqvD + 5/bxTbV/iUu+TtxkklXNUtXPnF6+qLcm93xZWAh11pymQ+3UHb74dP5m8vKkny/su+n2JSeaO9Sa + oUVx/nnSg+/cSNqPS0LtzyUKphH/sMOWm9BumSUZgqwOjLZ0uylDkFVltKWrAi34+k2FXBydk5Vy + bs/zg8gaeV5kR6Kc+8PH9+OL9Hx4rUblDSbx0GE1HnPI2Os3OSZsJrM2Ob8YEofhLfWZUC/eXp+M + 4TRKp1QnNssl49/O35ygU2e1WyYbZJB8ez3myW4Fl0F2KhF+N7MquXl9q7pPMmwq3mYI2AJzqWxH + 7Sc61PyHodvkP8T8fwsUjJJ9BV9Z6BJVCBHXscEiuaPTJN4GvZ/B5w2uS50mC7vfXudOJ7BWtuiJ + esyGMcwjrJhcKHa4+leqjtaIn1iZNiE4IC+MDqNqcLwPntwmG9Cb49U2o5YTsI/vORvqEIYoWaFf + TIZAQNJyt5JofyhkmqabGYKBC7cfF5p8RbDAAc515YBkUTAQvYSLtr1rW9S5sgcOzG2++9J3qRkh + ZwK+z/hjN1xVEBntE3nVEar1+ac0Hia01cf2XHIVHdeKCGp+tySqhN3mazJfLHj0xBgkDTcQvGv/ + tmM2J47UG45GbHMYk4Fy9x1jp5i53SFQLp4xDZTLJrRAubgoMtO3UyaLMdE6bo22DOp87fbFcAJC + BiiJ1zO4kSccL5RQBKOPY6S2K87iXKbFxaiLUKs4j7MJ+K7yl7gETCDfruCTmCUiSrBpTOCsBe8+ + SuIeaEtP1M8bFHe0ejVcKywLesA6UNN+67Xg5KAo0gHJ2FZok3ZrFDTpjsZhCfEqTnNE0KQ/2/sP + GvHqQ/QPMXWeVURJHhS2MJxc1olaFW83NJy45IrhhFcFu/Xn66rh5LpBhVo18lzb80bwjxc5+6hV + QX4NteqfMM5juS4Wnh3pZZRhIuYIjHlmOeaGNN1uiDHPJVcw5vGqwJh//dau8O6wMPLKIPMvHRus + D3/kIFyCyCSVwxEvFo/cy7ua4amEBo3wqaD5Iz0t/AzC9sS8ublN7CqHzbMj5G2ovMOPLNS8FUVi + zV5LNgyz0CVheTlAWZmVKEeXkRkgvH3VSxnNLbxVgfEoNiNQyu/iaXJWPwT42g3Dxu1aHJRSus3t + bja836Tftg8DPlsUrin0fB+gRv2WOHYU1pyQczRC0c+r2j2ysk5tTwqPi73rDosinjHmJH1XA4si + LpbrPmSxx5vf3jl+MLwDXX6hgLg0achEylxTZJk+i5dMAXwcpphfbUxItrv1snjGuK5ZNKHXNdPF + QimfLZNZm2qa6a6/1d32eb1lpWTrvF0sbfYCAYbmFAryMmS/AIVqxGkC0X0iatO4ko1oSV/je9q+ + 0EtwYOGesth6b7o9sn5UAWM/U5csIQG63Dx6PcSNjmrlqUvaclGB3SRqpK5yP4Z0DuyycYH3GE7E + 3dp0R5VLnXK631/bfgdoerrdDMWHJJdRfPhV0vc+vr2p5HSzAEuDdBSfMbNY5CNFLQxn6IkKp4+U + xPG4GNPKUTk60k8e615yoh+v3j588fv9wna9b+sTvq7ON1O2llm789V0k8BNRMqaW9rJ3R2sU5iC + j6gW3YIpMiyJzc6G8SJLOUBrrHz9irjiu1Sp8DGJoPsxyXpI93YiPHOr2d5L2WGqK8rvrDqsCEoU + QK83xlgsP4pYVd3NC+94C+0hHNtr+hAwUlkUlXTgpT7u3HeGFOq0pHQgXoftET3obxa938Hg/bwp + NMDVpCCd3Mg3Rmlv9ye6LD+dSn2N4UdNIT2wBVJt28fV0K96kKhnpjHzFad9xv4FuzfQ0VvGjxuy + PDMPO7V+iXcVShj4+zYOM8/gocKePEW9j1yOXpImQmVMha8xWhN2NKfkU8YGlWpGN6nk5bJR9Qgb + Zo442YLbWRSN9pUXsmOAJp8K4PaPCQujrMJITpfQj7qVjMtHTCeKaECbJXRNePkwZw8OcLh/vJh/ + UWHEQeMfClIRx4U5gUC/tvgevZpvedLY80mBfr4Uiv0CQrgO0a0WRu5nx2lgd2WsXtCI/4SR5BVV + ZK/Gauq8uN1thyBquE7WeLKegDa3mmUjnm8zRwYHPC1nSUcLzabUtskVnGjmHnm63chCE5JLFhpd + FRGa848VC82zEWmp6JAPX710QfWK/JHrE1MeL/GIF1MMcHJiZjJbF/M1z/Gmg0+epKJuB3PQ0Hdc + UCSLxNZU9cTG9/FyGQ9fvH03ZvzHE2E7XcTLetuJ+BgUpmk72YhjVZzlOQZriEEHp0I40v7GDTz1 + rt8A9Ko1ooyeGhQL+hU29kKbuvXjhgYfM/gkOQ3FcGzgVJvzCZpuSlzImF3xv9fsjA8h2TP4e04v + LmIGxMONB+PdEKN0G2W0UKdkUsK0YY7ADVViE/2rVSEczoQhnwoDnK6Kkz7yo95MILckQe/1TuJc + 26a0CDUjG9AK94QEXC9yqUZIsPP2yzlfh2T4hzyVPNLocnSmPRvMQRQrVABUZjMXeUmt1OFNSUe4 + Q5Snbcvm0tWWseisFsuvNYmgnm+d+FBr9/VWCfJs42lqv/96ZbHQ3PtItxudbUJy6Wyjq3S2fb56 + Xwk2u55XCjYHr8Z2ZIUhG9mRbclgMyrSsGokhRPY4/H3+UoGf/Dy+ObT+fVb6dj7vLivRpdFuBQH + eDidZ5jrFOvBf+aETenTmADjunbFyVcUiqHX0vlmVZip9gkk/im0iCrUWV7gR0biCmcl9UsD3aYb + +h3lfd0jr4naS5enjlnBrQJ2ZlY5TiNr78sNbsRMIBNEfizPwa71JsK8EJnb/9zOxU+C1yWTLwGz + Sfb+mNffwbIS75mRFJyDvAaGD748W/+5zlxPeSHhSOYZ3EM+FbXscmyU+xlhviAiBW9cvrt8XSqW + wg0P1406ZB2JQfEsuYQiAicojSq95zSJsYQi3m0fuPkOX70kELBeAu7KouiTtQc3BLy9ducw+Sxc + sqH0cBzA0YUrnj+ubwqGTfeDsGvl6tyYZIGK9C3dfDEbWLTQtR443L/ys90ztMXxToXFOgEFcAoG + 6BFqwV5hBqNs6iZ98kx421ZIoZ57anXKZVDPGCOFiiZ0pFC6SOpGlkx9VgA9XKRTrOyJF+sHxZpz + UsxVGL6YfLx8M4xcO3DCCLGI1VPaQ0j25rMBl89zGizp4vIZ3/5uricFNJhpqtsxaoND0lnu4SjM + RBF9hlaPznLwabmAtbLt8ALHtHjkmRQ5dHrkCcbIttfZ3uvrJPEQDUt9T15Zdpg037OsGtJN7R0P + bmPQ3ZX+AwqsCjY8X0SNdt5PpoIzPSafacwAz1fP92pnfCuPjjlbo0slLpPxZIyO1jF5a+EgyMYz + 1I9X++bxwXw+rmNR1UHBeaNOplW6GjcfkPJUUvjV7BxOB6fbqSSeMcbfFU3o+Lt0kU6lbboWzCEI + zQq/pXP8LOEfGtReXG83jJ80oDAwKsUKyMe2SbJ0sZMeKGT2QIfLv9M54i5TCjR8W4xFzLD6bkWJ + qrFPxLcJCOMNQUgfB4Rq0xyVXyiS8YcwBqt7Q3TdrjJaAPe6imruom5y2vvIoUB6gliFi3n2wBU9 + mNTIN7RNVrFw8U4fQFSM5bTxBubyNqH07k7f79Jhu0Qfpchs4c80ug2beiCwiCkFayF4ziS+HK1V + 2PVBBcoaVJkGgaB+RbkeUXSFS5/2hicXoPZS8bAWHjLqDkqMpLiYFF/4gL2bjDpEfoKn1qdzS39d + Y8O2Lzyag4GmlYSItObq1negVQUCw3qBL84/T+Th9R940za4kloq7l4kt6zKfhpodHH3Iv0oJJYa + hOgeMnQo5HDwxJGagqty8e3g1PK7peLzR4wz8akBPRGfXyPd4Dq+VdOj6BGoWquMRa5jW+xkgM+8 + /zwhMDTqx0oiPjXLScltfzB4KgbtfuwRA+XanMv7OejpLGAUXKsZqu6fJmetp4D6Q9fqNm3VM8ZA + /aIJHaifLgrEye1aQIa+s8bn9I2zZJETFQ+aruOTxJ8olFw/8Ao7w/EojEe7zClVBS8d6pz2InK7 + 4yflJIDTdAeGMVU2HSU8UgXah4sB9SvX53L0u0Pf2LA0hXIs9SZJ+FgJx2WiXoMnjKMaRtrY4stR + boVDs457gBqkuK7+5fPVKmnjh39CP7nr2T7LZ1Fz70t3zqiQYT9NwQp594KddNBEPUYEGYURkpZr + L74LK+DiJVZdvnz79FL0BTrtR1QrVn3b2iHIc+U2QhD2XoK25/wYfranfo89fdA6AZ/4u3tvu1Xj + 5NWfv7++Bh3WPOGQbjdKyhCSS0kZdFWggr/9X6eclcEi39WzMhwE08MXDkew63m+AJWeJJv0O6rd + Ih7EVSO1roRPELMy83ryVYIJNZXkqbWUlHC+g7PhOoZe5zXqbQXrk+S7w5MQqyZVBorF/X2SbYfC + xIrhJxj9ZD2cpd9WCIcTc44JvJQNld4LFgpItUPKDcAfo7UkB4HWqlklRZ1wXeiQOh572O+DqBHK + wIdJIauv+ocyKHSxOZZBqZ6rgGMg33bw3zIJBnypyEQMywnsgegivmM09O5e45xsJXKiFIR0VSOC + UBNQHILOoqKyqWMm9pnGR+ReS+W3f7+2vMh8r6XbjfZaIbm019JVsdd+/kclAc72WCm524at1vUC + i408N2QIQ8632t2WlkwVdkmEXr7MORCvwJ98QF8xTP81R6ZMhrv1Nv6iWI62X/rAXrFtCyupj2Y5 + 0uRUWY7Eh9UXs/o6flAx3zqyraiS1/2e/XJDmsxchU2k4zpnBdIRgUK7lNadvzkikrJywSwXhMKb + GZOCNsYkxtCv6rPyBp4uHmM+mLm9Vawb9sJSjrsuVfbHwHgqNdMu6TZwPN2kYI6XiH/OGmfhABeC + qpwNbWsguhmXtNkAdXGq+i6lYNWA/x0J/RcGOhFUecy7vGVnBqgGLy+fBvxza6aLyQs938TzJwHL + EYmQnVmr+qvv9QMNV6+83Rl1Q2ch+17JLUqrbBTHie/B5e9YfLEc9R49kmTbRPP0+spyov8Zn5ub + cuIBM2NOSi+bc+I6KRlvr9/YNTRPvlMx6JjrOF44gn88J6ijeVL8TqB1nWcPt48xnEdZ9riezyX6 + 3+0C2v42jv8r8P/s0GNBzvNkRzlF7jljp/i3Thy59JA5Sa5opMSSS1dp8KezqS1yHj9e5Ijd0sVe + c214gY8M+IPc+858dyDOY8pNhRMGF8b+c7ga2/Ntny8wDDhuEkRaOuiYtYNaKXN4/XkXsIoD5DSn + fXSXtSf1w6tJeugs4ycycO9JVvBEbmcyVv31tR5OozKPEIuUf1hx/v64A/r4FIfDDzyx1ThUmfzm + 2mUdsKPodqOzRUgunSx0VZ0rlcpkWAa2fqz4yB4YeV7oj+Bf35f1WxMZiK54hkrlrw/oFNriKUSz + l9MnYPVnbRhZ0maciYWaiaThRLF0gIJLXBu5J+r1fDJ88Y94Y69lKfNbJCmoojdV/Xfcn9Fgxtos + ABOLPZn7jl5/DF+Sd5BmVPp2k7NOvtrgmQ7DACeXNAjt0LapjjjU0sELZtv94nGaZo1GW+Om7dta + Ynj+hZwURFB1mIs7LqDcE8To8+bEMHAAPm+3oUN1s2+vQaq525BuN9p5heTSzktXaed9fVnFhLB4 + zlNx5w1AoQ9DO4CNN4wcnJm4776eL0WVI6y0aA0dcZ9wfIAlegN3a4JIwwgXJq3CiMNcBMVwgUSV + a55Ums23ySmmaiCXDl/O3+ciVRT1QXRzfHtICIYgW8PhhqBp2TCFL13hRhPfrrCScbF4PBW7LX+n + Ru8jjELhNUrVtGETvByzHM+2WFDxRcpXWiOY2206KxWshsxvkBh5IcKVlrfzQvgQUZK28+2O5+je + EfTFF5hM29LGDC+mnxmTy9pGcsC9wveDqkbprTKgoMdnWNQUn9E6pFY05bvWCLUbX5eBpeiVa3iL + MgXJeu272n7XdyVzQw7h9CGZflnz3HZdcKSdnFqdcOR4fkWwTPRdzmFz4C8qMEq01X1Ssgt9b9/r + Dz4W1k8ZdIX75dXy44ErWpK4ErO2pTgsLsUhsYIevxoHuK2oaFbIwoGYUHzfbZuBxgdkIHfx+klX + kdMG5IbTh2vz9aHDvl7YjaRDt8nRvAeA3FeJTHzq8lphla+PVF+YQFX3Ti2uYZAaSKm1buU97xRp + 71T4ODlD4OyF03HxWFxivxgUnzqWSx7w6oqKETpDGxbTUfCYcO7xF53N8Ug0NoWpOIYS2L4g/RFm + VW1MC6ZDykSvnhlmruhQZrG1fPQ+ZzTTnNmlw3CvzYtHDf8Cs1Oq0wrsBY8xtFhQ7qPDUqVsUZfO + qQB5c8fULju2Ami03vkdy8Tyh4zhGWUjOjqjuCrgvIoZVhpBe9MfNMkIzhjJwmSbsPf+NoMNOP2a + /m24ftzMl4I9/Qnos31bWFp5Mz1Tqtsub+DCODfY/N09Ek0QsPjqRwELHhjW2gfuZ5RX2xthlROS + mXlRl/V3RF93lPv0QK2OIyAAbd8xd7TR7YYQgFxyBQIQr5K594+3VxWSJpendusQgGPXhS0ZEQBl + 1cg/ksX0Ad2ryBqn/CySCQZsYLiBkTGYLCQRD/xYZZp9djw8R0RvLgqHaYExVj4u32uA/S71YZ+F + 7uCA5au8Bq4qOmZReMpYx6pj8ZBx2bFsRK87FldpWm2SW5YXHoszctBSP8lzPIjXlv8sENCuQc4A + hfFoUeRYgs7jGYcv8gZ8go0rfBW0sKcPjK2HkHltJsreIFgTrSPzQlHsnT98h/A7MTyLqY3b4UYI + h4VvXrnrOoyxNsHGgjyX7KY2QMQOR2Z/TD3HZqRY6ul0Yc6g1EvMyAnIGOm+QjvhB+EkIP7SN5wN + B27fVCfELcyIOfyh8Cl7gRccT+6BdnTOrFNmddsE1VOmu2DejLYNqss5xdFYsv7khD/YtwrYM7m7 + S3hXllmPDnpQfzcO42A7Ytckd8FmHzWQ8Yw3Jhsyr5xkIZmUq75EwpQjINVslR4t8+my1Z54l+k3 + h8yyZIC5cDpi5z4kuJL70dZdhyJyBjLb39ZjKtCk1tDPyyU7Fstc7ne+4HeFCWEeKaLbDfldueQK + vytelTH691V+V45ipfO7vgTVLfTtEexFkSdqeS7GHlZBQBcMZ0kW4xzAEksyHf8jyHQQvCqd7aby + iI+H8NgL/2Q4S3e33Fm2wmxhMDWS9ZykjeAm2Aynu02WcrzqZHOfioaU5Z7NC7HjeJMgGRvIGw0R + 6H3Ku5qzUCIYPAJywJjgScOPHwKHH2bpboM9LSP691Wrpj6wqVs4oVOOJZQsmtp+qk9Ot2y3Aier + mzUNfVGK60cVHNTBn2S0BjhjFbuu5RKHkk9n2F28hQ7lAf8+PEYCLoV/TE8iwyiQ+xh31HRN+fZJ + 9ZJozse+EJzVFCQpD9jBEj2PERR7+n0+oz9g8dW0q0b/x89S+CHYoh5hMs036erwImLmuxGTY5bS + cB1xqgUqydX2T+HE6pTiyh8xTnClBvT0Vn6NTigExVSh5a/xdJeiW0v1c1Hlrv71P/PVVKv01jV0 + 1To6NRxLcJT+fMQIkEGOYP7+ewR1QOo0F7oPRpq7JlQFjJLYWgZj+qIOqsi0LmVd/c8F8xTFmnxL + rM6xI0yIZwfe+afdYx2aB/rU74gFYW6OizRx1dqBsBCi0Ky0DPpAsJDbPBWwfLyyAsvceKHbjYwX + IblkvNBVMl7enP+jkubmeNh/RePFe/WSOY4beCPmeLYtjoa1LGmczbkZ9/0xnmKEW1UqkVXwJv7S + A91rU6wDs1JB76opj9IqVp2gMYnNdi1WgwBwoOC8FDaynJBV6kmF2AW3GjC+qXcBizzf6SRwk8Ak + XGENcorLArVNndDBs5pSqOSXD97UD+BIz0+ewd++z++kjxJsm8rAv3jz4fzkbFisYRXvFM/itdgQ + cM4p88NzPH7qW4GI/4ruORr5NKLYSE33VATVowN0i0GJuVD4BpOKvdqqwu5i/ssK/xzF1Oh8YKdW + lwow+YhpzohoQMsYoWsCeW2zEwG+eHPPu2cgf6hkiQhZyM/oBIGo96JZutsk8UG5b75H4LW80WPS + JgoCA02g3KeOyfI43F/cmW7RIlhKNQjPgGvRqRfUA9ci/NRxfGElu0QbHK/uQYtBwIFjNKSjALjE + cnYtBQHqnLNT1onDIn/IGAZUNqIDgYqrQrWBo+BxES/iCq/yi9tkW89kMWh+qPhMFR9Uvg8ihEYB + pUD0wefnUHG6eitTonBzi/bgJg4PQx8IR9AnLOGebNLuJMhWJEhim2dQe8lmr2Ety6atbxnfIzjV + PuK8PfF0m+9+1wdH5J+KiN1v7+8+AndHNPLUCl0fWXsuk+WxgdWpPBZuNy2PRcnV8li4StrXb+9/ + 1a3XIMRaeq9aHutEkR+5IwYWj20JLoh0ty0CftbWZOL/6zChkl6N27a/3ac1Naza/aVWdHPXbbRK + me0FYHnXsvCWnQ563RPzGuxHLMzBLIiaip/K52lwEaBTNWExaa95hMiPk1Gh5InZISZVlMXWIjBx + h/G+Lx5MmnMQz8pDlINnCObL2s9ZxqCirJLN49mQzwK+FMXuvuDoHe/+k4oywI/3siAQ65AS2LhB + ifuCv6Bh+i0VuNTZcLbbzHkFR7XBAU72vFyXGAktwW+kP4B1v0j5VuCv2GvzqjP9SPd7KBTw+kXT + JU7XSVBTGp/luvwwu4PNGcOhWA+NUdLtg7EbwARu+AmRilm1E0rz1fBtDpH0R/AtuyHXnX4eBZ9r + 00F4BSdch4OQ3252EJLk8kHIr9JB+PH952q1Mg/jlA9C9DjYIwa/2uIY9Me/jqH5h8fF/Y50FME8 + BFdyL+7H+231pDPCHLxQuzEYNY7tV7LVqSWwh7Dh8f8rhuJf4+ljhj+AfSber9ZzpBHOR1bYcKDa + ruV4XrnoF790lsSLL9JS0Q4WxwqaXKfiUwYiBTieb4bVd3yxp2tPNEcp/24BmHoPW3e25a9XeLlZ + DDo5zCMYbHUQOB7xv9tUxFZ4n47momOp3FmtR8xPjoiUyqLHlUvjbw268ny565bP22YM1nCaHJwR + 2EPecG81PxHxth65KIyOhKdqq10/YH6h0eMF9uhWdqkM6f2VbUfm+zjdbrSPC8mlfZyu0j5+cz5x + y/s4GCyhvo9Hr8a+i9u470deKLF+6qwXWf4jFNmb+dZdq7OOcDjjLY/05FzvcYHgXZYxSayZnORb + eiQkOzcXjf7J6WLHF9BNvGYeMnPjDyH+gPov/hJZEtsbfnMPDQ0WMGd9N4IF2IRkWwVczb+7IagX + 2I34tsW2+sW31WBjRTODP9awDnD+KoxZFoVPizF7MHLAgZq9LDRzXZF0bLudko7xdsOkYy65knSM + V2XS8bsKqrVjB9WkY98OYAMZoX4Qibj9jXBE80mxjhfYA9pWPCITOIM+gHvebu5sMl5vHjY44Hyy + xLNZVnxc5FMuU/gYbv1ex5mN8BqbdHf/AHduH+ZpwoEZ0PYFjSDPZs0R55fzTCScJVJAyqc45f0k + KtH4rp0SYE8OTWElOhYLmtBoGMwvy2cVjbWuz2p3ElATrUbmAZtFoLyF9YhjGl6ybK6ioiIOdpPC + 2y5/nKexKEJqPf+Z2U26r+yVwY+ZSA8JT6zFq5wmINvdZtDGFiGud9MHJFqFqSL8K08y6wa42lTG + gu2IhGmmgf8aEns3AUjjSBbFNY+/iW53jLh6N8hfeW7GAVYCQumwHZmMqAPrmdAd6jafRnzOOrcF + J6/uJUfOCl1yn2Bg5nno8lJUFGi89kVbRvTgIjnCeOpVflOFb1/x9bwmlF04p5bbsSRUPGRcESob + 0QtCxVVSQXQvpKAZL6DJyFj5leMOutyrtY9Fn77NzOPpHQLfR0bnHUwCqrpju8sjNwmxtWPlUayS + wrtuyj/Zz+3XxDGIbTofcTnShw+cF9IGo4jtO+7tHgX38XGKs8tJ2LgBNzudAodvnc2oUc0vaQ71 + ckQjrVuK5FCz7Q6ILXS7IYcal1zhUMOrZAF9fjMpu7xxU2ZlxP2x74c+WkCBZXsCGPnz4ybNpDt2 + QnQksznXE3OP9+fZ+kCPd1FX9mzmeO5TsfVs8UMeF/w70O5P9Q+ptUkCaKnR4Cm+ruYlF05lzUaw + w0aiMilo8LnwhtWevhwNJQE2TBznb2PBDSO+i7LeUINCLwDq/Pk9+Av3j2NUVYynTnhGeMr8tQUS + yILDAMIM3SSScUyn5L4c4LRSAI2uHfTjXDcQ8Dzc6odX7u9Bot/zdJ3R4Xpkwxxbre6KlNbkew+F + 773A8dFskDxI0JJYEj2km/aVt4q7BFdxSjtMwwbTOofkoRGIhCG7S7kL3W6YMGTXlLvQVTo0Li4u + Km4zyw0qCUMvMU7q+8GIYcFwKFK8p+l6nWx0gtLJmC9WwVPKfaaFYxjdF7tlvBp+TFYIOIub1f/M + FxluQpz7UZw1F9Np1aH1Pl3cz0knRJSZMiyzZTfs4hFolxi6LJ0V4u2T7w3cqroL3CpFUjFBJ3eD + BwF0S+SXKdh4C6WKQT1Vx9aOniJqsI2550E5OUnXafc1wDw/bKp2ka88uNi9eGmftIxiqeyFOozD + eFLzfH5z3GCR48mr+WGQk+/4snQRvdowlPFmi2knZ8OHOKudGMoFXzy5ambLbJ7hxpUNcAqr6K9P + aUB/PtJ2PlW4b79uyLuKClSYgBjjZKl3a71sC+KYssqPqLTgc7Vqtpl9b2O609Glu+TtI9QG2oDi + NczieNv1zEeaxnwWjUnWKtl+Q2ir/K2+gkqGgZs/HFUBrr9nmXLdVyoCHgH5Cmw5N7qqUJRoUpjo + jR9aq4h2eP6J06hBQ7CFBL2wZ5ru1gsQgWEErWZ4mX4lHDii88xGOhnm1+RQAvc+C5ZoabUXLPFI + QrzCm2DaZwoEh8c/Gj+Zh26InbTbS0WyqoJfbaWIN9tAjhL4VP7agpwnrjx3Q+m/cTxzVZxuN/Xf + oOSq/waukip+fn2BvriyA4fZFcpEHzRwLxz5kWXbgmHlw+M6JRUHOujX63eKGXEDDXx7Ol5E7URt + SMFnsEE1peCHng2fUVZye2BJxLLh6Bj4lMHzOFXl/OQVvr9/umKhbe5fpNuN5qeQXJqfdJXm5+Xk + sooIzTCbvJhh4b8a25EX+dbIjgLfDlqSsXiWCoJ2zRcwY864ebCjz4a+iuE/j6iHIu8X+r3HGcwH + VZUylh6Hoj9hFvOywvt7sMd5DD3NsjnifW0wVQKjvpJiQiQK5a50cq0rhzpfPZfreRW+rauj0oX5 + 7UVPRsjW9AXqS9FmKhY+6AvIDprMTxcOc1B8/zV4C5JWmBhQrQO5nn9nytP/An9bj4bQa+IfZ31C + KQ0witrIF7A2QdLl5xtbefAzWgyOd0MsjdefzsFWnN8/IC8Iuvs2aBLiR8FvW8wKHv7PG9g3l6Bu + 3mVn+itBJ6TTOc+M4I6Ij7MVW1NqcTL2rZti8AyTH2BkswHOc7mJeMz2B6KjCmES894292qagrDu + w5Y2k9J0Yts2Gc4qCgJbMffLdCV86SYJd5zkWzJr2AN+mpPWy582Bb3oo4DCI6LN99cs8Dok3vLb + zRJvSXI58ZZfVSCelQIK5iMMXynxNoQNzvFHoRu6tmAAuPm/O9ip4YxL1hyxr4oJKf4g0x4z+QAc + kPbIGXPMOHnxDFnRHzPuT1JbkdzQuTAFDjnW4CvX8fbhW0xrcp4JMqpkioAtIjlJ7mMx0k3vVvcg + eLbZ3SOcNQxbfIfpCwrJsxr7OgLJsyCF0rvk/lMmhmuqh4xcz4r8SvxL9eQyXaXp90dYcc0uTc+q + QHr2BAz6Z5oBiA6qImCOa/EIWE8+r/8SZEt0oIl0hunmgDwDvhDwkdJa+QO5xlyBqrlvgXbrl1Bg + mPM523jSNKVY9gPRKacy7AS8n9+dvzksLctjCsWIvfdOLb8bjBE9Y4xjJJrQgYzoIp1ihZyS9UO8 + GpR/L0rB7CUWeoPBDwL2kT1GhZb/uLZs31xPoNuN9AQhuaQn0FXSE95ffKpYhViMrVuFzquxG4ZO + yEZuGNmRKNE5X0BHKh1a7MTFlK8Cj71glUgu39mvR/xGWUFYcDYn39FXCHq5uPtOPHGWz2n0uPGB + xJp0wRRCiQ9FxyNcoefu5ptsK9jd7uZoeQi7cl7kVkl5QgV0hYvBMcRUmytEhPfTVQ0G+O4LdDQv + 9Wj/Xvu1MmZ0xcBrUgxCx/EDqwIL2N5MffFo4DomjehwBAupvBda0fQFl+2TOvhzT4wBrhmpULDA + cfvCNyJSwxr6mwPluX6rPH2MjXa5Y2W21D4dK7rJInZtgX8kA5JH8fDBuuXK1QHr3/AY6bGBpqCq + bRFkGi60x0XbOjN694HYa8rTv2WbMuqLY2XuAXI6TniTH0giRO/v226d0UeilmPZpNkkq/+A3lDY + 5JrfpXnFHiKt0W3VKw2r5yga1uhtdGp14s3LHzKmYZWN6DSs4iqpWavd2hWhHuGNSjfz1aDw8/AT + 3jLgN3LaVdf3+8GPj1jOrpwWSYE1ifuJjQ+ngDYzZzzLYcUpfihIO7MIfG6JTtQDhfieACLSk1m0 + VzsO//3Y9FNPPQ3vlay+Jot0bQqd47sa3/banNu64cluroBmeuwVha7b3+JIj4DDIl/rvI5la8ZP + tzB09OBiduUeB4rTqeV12+LEM6Y7nGxC2+DERdrUZkn6/XG3IZJmD8Zwnie1qzMwzVMwipih+rN/ + 6/Zw8fXQivf9iO+aESNtunAAH4skHNm0kRboqPmr58UzGTajvX4fYMPykPQtyq+b/fZ5cpwW+5OZ + 7vpEN+2Mp8yCvBNn81rojMNf5yDpT5sGJfcLT2ESe++Z1XnHUE8ZoxKrZnRYYnmZ9KKHeSZy0TFr + TRUQ3GKKvoY8Nfl4+WYYBI4d2N7JoNPN2AbXqAKbaIYtRqUA8IetYK/fl2NcRWc6QIiBP9j3cnDY + o0nLDGH/+4P/5Z3ba+onJTq3D3cvDPLHNfSjisD9wAuaRI3UVQ65iWwLvOTsfpPu1qZTRu4WVA55 + fmX57sX43Ng1LR8wck4r6SX3tLwuEKTe1kHioq+oGMh2EBLX8d0RA8Pebc+pixcgfzqOny6r7hnw + 1as8OpuBPTlQEYdAHgPum+CUOZ3OAHrE9AAQDWi7P12jgV1vlElcLBXhVpskSB78xjhl8GSsUoFm + Sm3+LVszyx1wOVz3cy3S/SwnKtTZbXSRI0xZo9+SY6uRfYeoG5dHJf2EDul1xbfssMNbNtlkMGnB + Mud2UqPbrj824qfI1iHPGR/v4W/MzBzrt4LdANzdvAtNrbzWjZjymv/RjVHrH+aMWv+oZdT6R4FR + 6+bza78SIQxCqxwhfOmg99ofOZjF5rVvwV8WIP8J05qf0wbMPM/hFil0C5+phbpn5J+qi+vkQch1 + vAXT/1iANy+S/JtwRp5aXbZ9+Ygp/6ZoQOPfpGs0nTbrBRhJEqpXz+EUK+WKBYPmv3ABnGHTwvPL + NPb2A7BQesMuOYRy4zgkEOZFtHcbQ5S0SbNtXxQ7qtrR3qFP/sIukWeEr+iGfAfUK9bNE8gfMXYE + UgO6H5Bfo/WMJ+dDAuNddtOBYTWeJetkhQGeoXbbze6rM8jwP9x/F4Skwwk3qw6ggw86fxuDmEOy + o2FpUzUpijHwzD1L/HyvLAO6ZRnzYTvGJddF7NPXj8I0yAXxik/uCflJjD3wf8I50DSH+3AdOiH/ + ZAOZx1eBdlBij6bm6cmB6RM7z4dr1iVXjm430oSF5JImTFdJdfn05nNYrvCzWcRKyXLWqzEoXIHl + jmBrZpjZ26YKP2yggel/iSrM/DD3RfiU/fj3ayvoULNJtxuNqJBcGlG6SiP64deLSpUEaJYl1GH7 + 1UvYu8PIG8E+yfM7VPbjmI388RIna8lXWHRp8ED5t3iBO+pqFa+0ZPyzYp5cTBAFY4neOlO6DEHL + LrI0r5s6X62xUOvjahXRP4wJ9Gr82YIpVU5vy3ZrblikAkCbvxhV6WXJSqS+rb9M2RgpW+GFE4VQ + /CGd1hBD1Xx4XbojKOrNkMSwQweeXSmrOFh2zroUuWiLViin4taBq02lRH3E6ANKCZvdXLQa0HLg + NcHDg2bkMNsqrc9PYxRHACxSMdLzNiPWVCuofUKOfqNN2zT3YzRUkmBmWbcWxHKQscwSQj7GO/fJ + G/yXrMIB7lSqiCV0RFUj0VXuG6hS5Gh/moeMNHN4AzBP0OtaGitDiQOxQnlQq3WoOqVJHimyDcys + H6yY51G0gtvW/m7qBjTxB4xm+Y70frEg8k4xStDB/SWeMfV/ySY0B5i4SErH41rGvOOMSqHIv8W5 + tstXhr/D3QN8BF1eYWQTz7bvWTkcekqbRwcnlUfmFeF7SSfVJrk/wCD1CdMw34OMdpjax7pVuXWp + mKs3x5950V0UkUXI+yjbbThk3h9xG3JZxN9CTm7CpuN9xdnAjymgsx3KyTpSUH9mqsrLsy/cU+Z3 + zLKhZ4xzbEQTeoYNXZTe9iy0xG7j1rrUX9yEJ4P6P92EA3x+zLNnGOiPf3nb84eO8bajfzwotAn3 + ZEvcBP/yjz+Ff9wT7EbMCs09R3S7IbsRl1xhN8KrtAyv3/5vpcrSYU5QZjcaOz78Lxw5fsjsPTHU + xQbkVx1HnfFtYA1ZUaXe8Dm5jVwrCo+ozD2YRvG4CL5ov+faFp8ysz5eWb5j7jSj240ms5Bcmsx0 + VUzmyQ17XZnNXlCazd6rl8z13dAeMTewXcHVdV05ZZg1fLFZM+tEForSVvgCzqQTuQ2eDVdJvFk8 + FjoRGblAKz4nmqQqGi1YbcMbJ6451mj94MO3tVx97RvyC7TRd8O3vEAvPimV9boVuBDptPG8yPMq + viiDvU4v6XWa8Ia1BirsW83wHy6rOG0GP3+QBnySqQ3As4l5zxWsGjF2mawRvbn5jeNM0dqBqT2d + Z2I1blQJ0HQzX8PgyXtHQ+80vBnSj1fi4kl1JbYWrPZQ8Vsnob0IpkeClCMTg3+cBmRUFtSbwqPk + +WR/RRbHMmv+0GoxbM+KzGEaUnuvyfOEMOw/XlsRM1eO6Haz84Qkl88TflWE1SZXlQQz+NKwfJyM + XQ+n7cj1GIdJw+PkkyxEk4V56KBdwuH/EH+Fb1YoQ6vSffMl1evxo+DTeuE/dz1KwibK1xIfoCM5 + 6XhQBax42/N8FzSswUUFAvDmYjh9gAGHiYbgRct0lixQKRFr5kxtfQKD7zqbOusR/8eCf69mt4Hw + d3/YLhhnGuS8qzF8+myHvc/fFBMpELUhHt5u0ngGOz+WQsNL4AvIrsnONI99w6CVMfpACNyB2Mnb + ZIHEJ8lwkazutw8DnFnqDPEj4j5xnEJhGF8rs3mmCleNVEqQQd6ruo7r5G32HS/3pvIz6oBjxPH4 + rlCDnCAljpBhpZC80LUBorjGwxR6eHUvauTxQZ75nC4eJd/MJY7FMkUsWbOu9DXaOTnGnIHAmFxF + CTuUWqYRYcnzSwMNw4zwYwcc965juTV5JGZzqIJS+MPzs6Ev6DjkO0aHYI3Zg028jj0R1FBMR18E + nXC25XEZKupB98I/tdxuzIP0jDHxoGhC5x2ki7LsdrGNx2y8ftwgo+wqGXvjaby5Tb9zsJvhLOH+ + TAFSphfddnhSextkIXRCGYagzfR+AQtoic+ZlauZuwc9AiVb00seXcML8lhRXv+ve4D4PRBxzwup + 0CiH8UcmHh7kx+VqeujynjVdPr3UGfbVZPtW3QswoNzyCLr871csCjqkafHbzdK0SHI5TYtfJQvh + t9cTVqG5AhPSreRp+U5ouSM/4Oc27pC/3c7/724Ox+tYIYeq0CpmYeBBIFBI5bHIwamVVcwtCtRD + v8Ln7qQ06jb1a7EuTVJg/Xa7ZlUOrFywjjPrBEaGRf8Gyq6lg+phZ5udXGEU2q5fzkw6wgWsRm8o + 18gYDvflHMHAVKRu1PoNTzTIAz4nVUZO4Dh0HhLOaf5CubqhnBH7E897Rm7Y7+mpoCTYtv4dnHd+ + YUCT155JHVKpotGc+8Ukj6Cv+C8KIpYhQXtNMepnE1YO8hqPd/4p64hoJZ4xrvIQTehlHnSRdlWE + QJml32EVfplXVMvWPxblIyaDExEmQ+gLPZ8ePlJ5eg4oJ8cVw/aJkfLDISD6KgM5uvoAljUBsvxn + vpoeAUQRukFYmJ351O5BJzxAdvuW41CR05FSekvzO5pFSm6BTOihcIyYe6rpdkM9lEuu6KF4lfTQ + j5+v3Yoa6iKgga6Gjh03cHxn5Lih5zk6hU56p7QfqYSBurRJEvh9sQNtPZsWtYUX799NTsZ3OyoG + FhdlYjJnklZaDXpKEwSfSuCzRJLAvxfw9tM1aCv/O3yRn+YKq/Fx+L8nw1mK7tSxSGnGgdHc6SUH + 8MVs6obrUcllySlieFozjOW3h4TyrUHP2iSYs/kN0TVhBszm8bDQznyFgLvpgtSxB24Q4bsqr63j + he5TK1a58d5LG41Ulq4I3qzTjfTTQn/tFlvqCe42V+7bOAeszepR9mqrE7uceX1B0QW24LaCXcPc + QKTbDbmtuOQKtxVepYU5+e11pY7HdUrUa64P9qFlR5Y38kHD9QVOfHy7W82wJ5eIM5KXW8kueaD8 + m4wXAsB6wy7iUNEwbWGgVpJtb4Hvi8Sf15/Os1O4vsUVgbRq/DEFYEKrCH3mMlgHd9Nynexuq0U2 + nS3GEHYkm1UrakCRSrhnIUlhasgtozlaWmjOsTzH6thcR/tUE5Obp7UVoFpKhB9U+EvqROZFJ8Xq + 32w5whHEnI5kzLcnHC69vihsNKktzMd2vX8NJjCawxfnJy8xHjKWryk6dDTcN8X4NotPZfR2gu9E + 49wC04eI1nDSLePVI020M53V636xm6YZupFgHX2VsMaz3RSkgBaCG9Y9TNbdAikui7G2yRgxOAs7 + nrhNQboOcI2pYFrks4HoHLXfxIJJHM6EWywYqa2yruvuWTKNzSJvjmv53N7Tv2XYHL5rQhyGo5lr + XXrQjJCCVE/3v+f+MOvgQEdAq04Iw+7WdL7RwOEGwg3hjpvQjzM2+qw53yNqv1/j+Kp1kECe9VYR + vUONS53AoZzbK8uJOuTc8tvNcm5Jcjnnll+VTuPLqrIeYZ1GKefWh02FjXzPlswxyus4Gt4mUzyg + UWf99+4+Fme5dAKOYCPefOEUwQ/JkrZpPihYwTfDkgkRakHIMdTTc9XS9m+kzwtTEDJ0Oy3PCvxY + KAwfydVAWnUqti29zHP3UJXhotZvm5+9eqC6PB0Kol0HzNhOPmEpbJYU3KvYU1oNrBdEB0lFbqZm + uajod/NgS7motLXItWyr2/sW8xTE8GrvGXlNBbD18oqmhchT1Vaenq0aMK+pIliKH/whlgLcu5qm + M1lfq40S+v+nu00myCw2c7RP4aT34CSKZ+NtOgZbdIGaehJv0at/6SrbM/JtbnvaIbcLMZME7ovn + XVMtG/I8DepwXaIDzed1IfnkQCP30BSZPbkhflB80dIiMdbKOpGOds6Jedp82IOBgbqhZbVnBnfL + EDWo0+xDF3AlzofndsL5gNtNcT5QchXnA66SLvD63XkNzgerxo89jtwy8uClfeG4+2c83aVF8oda + D94a/ka71cVsaodrqp3foL0vXXEbeJ8q5uFXLj6R+/W73ep+ru/TlmP/kat3nJB5ApaVvPnE00kB + Nvn1hvZLwJXixof2LFDa+b7K8Ty8KPZn19TKhUWFbb9eMbcDOCjdbrSwhOTSwqKrtLDOr9+HFceb + 65QcbwEsrDDwwpEPu50oBDqfJtvHRbqBbe0Bo30c8rwQbSgTzt6lu832AXaoZC1j+VpRiySC3dyj + azkpnPt5G7QSzzf3YRXKpi4BSdeePU25+5RrSzYsJKfiuYpLH8i/Db+yMbPCiSK7YaHbLIocp6zv + qY9tLu/x7CbvGLN9y3GcMglg/sItQqMmoBfRFYOfMLoDnIuK+N2zLIob0NGqHjw+gdD2NYE9pPgZ + yzTQGD0i6q0Zxc6ynoSM4I8Dnlj/Fr3gJDohnYS0BrbcQ3QYi11Ew2221xh94pEi94TRw5x07zhZ + PQaoHUuwtuQR+JzA57BQNRXpTq4sj5kfzHS70cEsJJcOZroqD+arSsU5ebiKB3P46qXrRRGczGDt + e57IKr+hHAXUTM7fTMaCCUMUfXDywtPhJN6oGiKRm5cnS/0umdtP1ZG7qJLolsnLxvXoKatk+y3d + fNH8TTYLvIaTEqavFTl+JRwFhtUOd7s7WRugx6VsI3n56f6+VDygn+MVhX1UxG8rSlTnbgvRXLXS + KwybKr2k8IF4QVnmhaW3u3WyuYNlxwlyRWgJi3CT6QaM9SEMEtVv4QMc/upMpqu0TIUBzjR17EaB + 3QtnYUglI/s6xdSxYAU2eVKoyFT0jQpAZfN7zCjlcrvlxMvdqCfuQnSkcjmEPob+NVwPcW4hHNAH + vVUMCzdFZSUZHp2GuGpHPdyOxAC7hnIQmW88ex1P/YWgItILypvL04dtciE0xu87Z9zJoy8QRx+z + O9QT0+2GRx+XXDn68KrI0np76VWOPg4YqB99Ywe2Sp+NHJv50ir9mMxTBb/GE6WKIfjHVbxGa4RX + oIo7N+gWv1WeTn7cgRTvT43oi93E8Sq19G0s3yykFLz5eMEK8aPaDhvxrKdMhIVn82WyofyYmzhB + jQELe9NMJN7Ailjlof4CFfyb5ZStBzju8iDCBB++NAOLGHpE4+TDFy+QHZA40EM04Ck88FbAyIZc + ipHp+jQdX9A1c5wLaNTUz++fle3WjHEpjoZpitMMp4rc3nllrQFkQ36+HQQUJDc+VRnKgjesa2Wo + eMa0MlQ2oVWGiou0kT0UUaMkqEohJxmsm5UmCglVQoeS8X3Hr6lKr633bin3Ns+AZpYW5hLprQ0z + roWR3PUsp1GQLCjnvt+NWL4Y9DPToCzPUixdWgfs1hiOjJd0XMd8fou9qROmrRdQhox4SWPVqFN2 + vpisoaXKmINTK+xSTSIfMS5ipgb0GmZ+jU5reF4EWmBzuEOTO4Z1/LgoUXoWSkha7zv/PDkRBKAI + O+XYtoNPxBzDEAOMkgGU0sikqIxmZac9rqOUH0j8KaVGVigOBSzf6uCubPrigwW2Gk+R42q1V8e9 + 5KHi2ryWz6cWp+/6659W2+MGpEftX83NZlALOlcf4ptWQR+yn7buqV+UbuLGVSN+FCmuPICYrGd0 + PoD60bGeUTxjWs8om9DqGcVFOoRAHxKHULqZ33O7b5rer+a8H+Qp/kJmYTjqhLEwX8AOTwYtj8mn + foU28HUmzH0bnlo+8dXbLkFb+japXEIvWRwEMQNSglopc3ynqsAqq7WZABOEuuOoQD0BCpSM1Vt8 + rQf0r34DPB2QMZO//13ZkVP3mF/MZR+KIcWUmYKguhHeu2k6fhDIXj00o5jS1cvjIl6yY35v7e5i + BBcX2srKcd4Gp8zqpjrKh4ztHNmIbuiIq7R2bzd3AuC6ZK6QDv753eXl5et8EdPCtf0QKaVOBibP + yBX8GlsqC8DmuW4JRrQwnnqB9LKrMhpWsZG4p0YIozqQxvettR1LYGEm+ZAsjx/Sh3A35mHd4nqu + G+3plq4SI5fCAKmgcTleNCld5Nwxmaz9uDqegt7ZDxq/4RBEcrc8FbT5RnIP1r96AH7uqfYcc2ud + ascJZ8PB34hoqWFVrCoM/snF3iHljL69AgvFPIJOtxuFEYTkUhiBroqa0ouPlZxRKyihXDvBq5cu + RtZHsJdIxPYJzx5IKYOCKvLQrk+GH3cch0kUe06XPRR7PjU80LrpW5a7bWMA3PWZVYpPFwPgIQtc + z3MqBGbVRppT0GCvbQLCDv0gxNqFt6qAoEb0OE/xoC/BQsrV12SzzYbvF9NP59OxP56g01D8xsaT + 0fDbw3z6gKWZcSEDTZYnlBPWQC3CAgQMFslbNKc3MbZRPD2ZadxdFGKSf5aviqZXoWIe7P9NNsBp + KqMeVkDV8l5EgU6emIHQM/wzj818s5wSZY/4wMO8NT8SzsiyCYVnGd9jLcFueQQUCM5tfjaYLowf + Lb7Ja9FHfJj5occPozmGVY7yKoSErMoTElREs4EKTHRG4Y9dQ/99HUuedFtE79mp5XRzW4hnTN0W + sgnNbSEuSnafBSWM4Knj13L4XDnWoPkvXADHYQqlH+Ivdp8+sO3N63kO69m/2H3UkqRcy/Mri3nm + CSd0u5GmKCSXNEW6KgDsP78va4osciy9ushxXo3BjIssf8TskFlCV0SHTkERwG0P4UXWuw1YM9Nf + YsxJBa0Gfxm+OJ+cDBePZWJTfM1h8n06z0iDx5yEUQNGkEA+LIUPCAV/e1/D8KvdWNJJmylxQVFm + FjtaJ9Xk5DopeipeyC7Ciaf1EqhHieymhvRMq5GNGCkGQhZWtGBsK8nRChFYlePB8L5fJLzna4ay + rnk4QRsxUEL0zUWV1uXX9fQGVmA5bfmp2O1+VFLPC/kumiIOc9nka/KsI3itcWm2liW2GCmF4WkV + ORqeT/hUKOjcpVYaM35D2w/c8F+DJ1qbZ0g4ABvO7Y6/1W2y/YboX83r8ytspLCOYWdLN1xngRVN + lgiurXiz5T6yOaZvzZKNRHj+msg6aQEnw3mLs90yFQm8ubdvgDuYMiIs5piWPdci+h+dIGWTM7F2 + ppi+QgcJ+17GaxJVN8fM3u9JUsCORQrvL0/4MKvuZ5QGiRxBbtOoLTXfb013V6P37CEK1F/dELFu + HHCSGn2q6zHFh0vxtCOKhjzH1YeHH8Z9Ds3xML25oCisFzTiP8GQw82KzRp091lHMuswkGTWgdXR + ApWPmFJZiwY0Jmu6JlCABctBM8tE7R1F2Zh16Hr2jyKTOKyBfYwSfTNU2EV5BoiTXegpusp+PpwS + PZZ27u0wjoEu0gjqZ3kPwL+HNvDjqB/CUJFZv2cMWe07kVnTM8Zk1qIJncyaLgpb+bd3ts0G9M9Q + VLLJ3OaiCKSrjkJrQKSx5rgPtUfDs4F7CCMxGpPXtvvGObWCTu7H/CnDESk0UxyT/HKnTPOiOEx8 + giGS40NFwfVFWIYaYCcRrb0cydToSfg6OHVYl/wW8YhhdotsoJjbIq4JZFpMA5bBn9LRqjLQwjCy + XHYy6HRzoXVcK07gDZ6QYPkvzPz2jjQKURlxoPYb6Qpo6xLRFwWCV5hjhwa5AlsLRW0fN2nGYT2O + lt2rKl/4/H3vZDqz+opERYSGf3kFU9Xc7U23G7m9heSS25uuktv75tOkCqrFytg/7NXYdoMwika2 + GzqR005qP1+A/Cqp/ZFpEc+qdlIBYzGHRQPDAoO6Ip6IcNffXNusA8oE3W40BYTk0hSgqzQF3l+8 + qVD3wgFTypHxX70MQ1jz1igM/dATzFwXyomRrLP5AkZCRsUEZkF7aldy+c5+PeI33u9iLEUZF2oS + ku/QF8gwW6gSxSfO8iWMAG180W45HgLPe6LEYLHhbURiBj13N99kW0FtfjdPBNbkKrmPi4l+CEh0 + N3x/8cmFV+B0CHmA5f10VqUZTjiPPK+0bP9e+3UdMDscNF6j/91x/MCqZgbVMstjyLMxocbFzbC8 + lAwz73T6+kbqMK0RtcwaEz1LFPb7pA7+eybbANek3GJsH7aYo+LwynXAV3VtruyB8ly/Vd6exN5a + t/qRMmvKiQZiiXHr4oClaqZA99lAU0E27Mtc58L5+7hom75d3r0PsU3Uv0+a4nus8JbSM88KDbuk + I8BHD3Ibk8MEHcJPqzaTOo3Ajb9mnvs/47fmyPHiATPseCm9jB4vrpNu8/n8WldvHcd1whCNcx1A + /qUL2qLjjuAfHxU5VG4u860b9nicLGi8rdfQt6Phcj7dpPFmEz+O8YVmRVUhhk0KlkM2ogxQGKZl + Mv6Gg/yQLlHnhLMkiTfTBz5KpDQvNvDe38bJnxpyRKrNdugHcL4pJZgSxT9eMdYhUZxuN5osQnJp + qtBVkf7zvgq15nglJdj1Xr2EyzBNHIdv95T8A038cv2J3DW7LT/dT86GFxfX7vCiQHVKQ88TB8BA + eMzyybBNh2DnZun6AezM4TlsAgs+3c7kLRz34H7B+HyCH2yZ7nNfA8nW24SpD/xpOeIe0/OHbgrI + pEj7ZVfSPA6fPBPRt9p7jYYPXK0i+rMi1Fmc+08KJVHaNy1h573DDA/OrzFLqAYY/3Ix3SAjQ0Ec + dDVb8/6Hn+z1ACeMYtLxkEp9QB0SKufXMc4Vz+aaWvL96NBrPynDPVGgRl4OsPI+OrXsjqWH4iFz + iBXRSAljha7S+i1m+uA0SMCwuC8UvE3SxbBY5PYCJvnJoFIGh5k9MJuRjY8O8BGCiAeOCHHor4MR + U5/5fZYaPnVtIGV613VQtSuOgJN5vmRMvWcoM9+LuPrK58kvk/iONevXJh3H/IhAM6ojok+u4gju + Uzb3NixXNqXwvr62ujDM0+1GZ7iQXDrD6Sqd4f+c3LAyaByLvECn9nRQ2XP8yApHLljU6MjFbWD5 + uJln21RY8HKzFPyrxT3ia5lKANb8Nlfk/rnOWBU3jjAPVcxQ56ZzGgln/DBSNVaFVFLZcII5NL9s + HzYJwbiU2WL1cq6gKSMziMII1JoGvpwCmk3RzVF14PjhIfLH1DWbhFMv6EJdz/L0JNccIzX03cgJ + ggahapC2mLS/LfMN+r7dSB5U7HMlN5dXi+UaWHo6cI28wUdtglXG7oAZd6aoKzLyLcn5NVY8lTO1 + o3BAPpicDuo1MVH6YMajRI7NxB817Fgl8UwpBYJAlt/yBgkHd1Qat+RurHXM1gO+DlUmqmOxgZgf + RTWkZVoZ+okOl9d+1Pm2hj+WzyDomUbWikakweNAdPvCpGXwUQT6FKPZuoNT7iG+70C1iCux+B75 + eoVf9iK6NkoVbCK4Jrhqzl3ahX7ujhLshhY5OVWR5WK+ns/GJZzgWg24FjKOUWJTaQf/xYh455h8 + WJreqlO66jM9YO0ytBK1l/gpbCuOawdaEFcroXXGYseUG92lmc/TtSmEayh0j9R+UbX8QGb4FY+E + g4tRAw2Yca/WYDQ/j5faPn+PcWX2hqJ8LH6XQzjgR3VFn37ZQMuK6gb7I5/plBdVAv2RF2uQfuJF + ISBWzD6uh0t5mHuDLf6HZz6F4bOypM1TeZ/ebPeaAn7tiLBtNnwLditYV+T+KgU5RcOSdRJ/5Vqk + Kk6522W1Y9UYCPN8frKqUrojv2kf5LxT7cW+QJGbApZ/xCw+Y5w084rj4+ttAqsOB/lov8eR8ve9 + s6tN730eneOaMwc5MoeD7gU3qbdEO54D//s/rizfMk+0o9uNnFNCcsk5RVfJOfXudQ17ZRBZeoDJ + QUIDH2ytkQNKryN8U++wo1MYdzbyx7fzLIe9iWfcGz/SOQ54aRKPQAoImh3svElOwsodVe9u4z6g + i1jEQJWuUvVIT6ien2RXXF0l39ad+NTSZy5maXMptOs4Zcq9UcFTZPtu4Eas5NEpd4oOTBRV3Dnl + p1UPlx6sMPUNWkZvccDwnRVY9wjtKBNnzV2hoaHWEFjUKBQ2jwUvUEnGznjChc/mPKTz/RFBaqCV + 8eSMow5sCXNAL8VJd3h4ZrsNbDfJcLfGZkt1ygOc5yo50nOpCtkia7QyEY29KNCvJED1TEdFyEBA + U+O9lOR2yw7tw4HQNXm9t7pUXI74iOlSNrM3jxX6Q1D+RJ/vq7b9IUdeJHllWTdeWWbOK8tqeWWZ + 5JW9+XBd4fBxXb/KK8usiAXeCP4JQ5FYfJNndsbDdbzAFaBhVo+4byYVTPA3DxuPovNvN3f2ejQc + bmFiwPE4y4rPky9wuEzha3jaxXWc2Wu4d5Pu7h+GSGo/T5MMd7nFfPUlvk/O8odFflmmb9YkoUxS + ge7xMusXHbv8TSsJxN+ho1cZ2jFpQwFUXezItd1mFBTbCSLfreCu1PVl7bHKfNdqBIexWeR4UTm5 + 4/r8JncI1dCxaSET2/caQjuBx1Ujg3iUPjTFlw8d1hSOanj5Wr4RLWGG6TkpNW88OHbams1aIlri + V8mlLWnKkR9w+oDBIJiWIl2lrymuJmCxgwa4xhVxoBsQX6/PNP+lFkFp9gE3UUHgUBbFNU8Ak5Pk + GHG18Ic9lC3mx30YNcv6Oc53WC3kfK/bNzqlAyt3iku4FV02vX3aC4sCyy+M6ljxhtyMxZsvElPO + g6JsOk1dy6IMxWsriDpkKPLbzTIUSXI5Q5FfFafp2wss1C+lKPIivFKKIvQwHKQjFw1JcZxeF9fz + V1C+p4tkeLubcb2Cf3Qe8xXnVDJlbq19uM+qKzKeu74fukE9Hm0p5qJCfUlD4UlYokEvtmMzD5Sv + 0o7eyL/ZRMgaNSUboAHjMbd8YlCcmXbnWpnMA+t4zzsPJjW98Uuxi6YPhC0gZ28tUd805bhSqA3r + fsrJdnYpsGjhx4uHVBky2XKEovB05li3BEcVbwq1KVke3m3rxzwTIV4sHmXWarojGzJeLuHAiFfD + yeXnSTbgE1mlTvqEdns82SzlUhmMufHB01fsHScBl1M/X0xOLaTi4wZknE1TciS3wFU1e+hd3w0K + 0LT6/DIwcGterbvIvYFzEEnhv9qNoqPM9iB+l9O5D1itQ/0AP5t398AMx8N0D65X2RTDrT0WOlr3 + HjEvmB87RioBE5W7btgBs5RuN6zc5ZIrlbt4VSU88vTFQnlL4Pi2j0E4vXZ3zEApCK1whM5aFkmM + e7Gxwd4vk/DlPi7slJWAdUXt4ObbBkwKqfJxS2W+mqYb6DxuenzY/gf+DqsjJdZO6OjVmW5J7M+d + DOyKznHzP9estmwWLDLd7zu5zEvHEaTVCmvd0v04uHvC5u+rKkd1OfT4Mp0li0rOo+M0WsSw4Xqh + V9Zvuot8fzlqHIRjczQL6hjYJI4Ly/pfAz7nxtJBVp2yhakjgf9lnV02fMB8TNiUEJoTFYAP9vn/ + Gb7gIk/4dFUdINIc5QNwo+HEHvAlqip5QUkZiH7je2ldBxvt6d0kNOsDSExSEgRiMOR4QOqk67jE + LCn7SZU0mqpcPbL5DMQGgbfjzvX8uXW6UyL8tOB4e7qEQ6q4nAWdsq/k4WpL0DLmvO/Kbps/ZApb + phrRcMvkVTpsp5tbgXvyP28E67BCyqpcGV7A3QN8RADzu5KTmTBjeTyfNsTj4uzGEtuHDF6SS5Go + Erfz5iBd83KLHAGzu4FehhdP1ltj9K8/YrrLMbqx69iOlkHZEfJfLhRHkVnY/qlld+Oy4I8YU1lQ + AzqTBb/WgiGH9ADJBn0UoN7cF/5QkEhIcsFTopc9n+IvNXCuqoT0Q++UeR0rIcVDxpWQshG9ElJc + pR3uy2Lt01B+mePaX40X8y+qMmVQd3H4D3hmgA/ymkY4TYia2yKXAPpdtxyEmAccpJKB5S/3m+Te + 0M0u+9mKmKLkoJfJ0Ezh5vh2vkBuDvRmNvtFmgQHFoUEeE3/dne7WySiqH+ZfpWOiUO3lkOEt043 + EBiVBA5nicgOk4GrDt9OGhdnhJo+TuuKW/a8DqG28sGl06N1dPcII4JBnDjdszwCQbG4TOb1Tzem + ePhU6BBvt/H0YSksiGwNmgv0R6GjuUMT5x7Px6hL56z1kAUE+lEcsQPHy2MiqZyP12z+dV6fONsC + lB7wPur6ERbR5v2CCw4MMpy/hRFvlfY0HrFj92zGu0GO8RqrjW7TmSmMS8ii4uP9PPQUJEhEwswf + +gLyt52XpBdSpUdx8naWUJn+NRWKnYQyOPKtstD2r6zpH4/ZjlMckuV89p/UIN7YX7GPI5CNl+lR + +cJBUO6MfQI7JDh3F/4HKM9x/SjU0hQoq2I2L+zKzR/YZrt6BH90ZdkdYsV0uxn0EUkuAx/xqwLS + cXLJKnA2dhRFFdijkLm+NQqdQOJzN4F6LhYg/tufGtRzUhNWbahk0f0lcGG+SQXxbro64zoohlzp + MsxOVb+jlWO/28SY9PN+891ZE1YU/IhBd0U6dyb1gLt4vuDKxybhMFPtbyDZgmbJXUKl3uiS1MOG + g3fXeaauE3k20TdYeXLMQZm2UURIMSpAdhArgeM6lLBr1P/7yn24ezRn6eE9VXmdpjqcn6WfdEzf + dRnt0jydaZ1Ax8yOSoilc7EPQXT2YzbrIk2+9/JuQUHksfJ6A5sGxZxgFJfx6j4G8zT56YUvruVL + L4Pj+KeW383JIJ4x9THIJjQXg7gouE5XDwI1TVFeYn9/UD0+KF2/hgcG+BQ6iSxbksy4ZAPhku+D + WmWf3+n2cTiFR1DlOcpdGZDKSjpjLTfYU5IeO36Qq6w8vR9OwwMr1HuDOeuPYsr1CLejYWYdoQB3 + lvxDtpvetgheFf77pyvLdc3VVbrdSF0VkkvqKl2lbeH3y0lJW/VDFnql2jj/1UsPhsL3R55LJiUH + 6dRxaX6ffJYKfabw6NdVkMSLXyeXl+Npyi1QmRBZUBBhM28OlzPmBVFQIRjtS4V9e80p6ymTrSFV + MQybMh/kyyl1VpLIzlAq/275wRnP/6NsdPjbrQ47VPsaFSAgTO1JNpmMuF/Ht8P3nyc4rQW3D6qi + MARYa8jJK0vPX29XbD3AGaBSAqOQ8K5DSgIrvod48RzNpSWNrgmSuJ9ksD4Ib352Utcz4EXKdSc6 + UOvnvlyge8/LPlwLrh1alOjH8X8L0azDQtlUezy5tgLHPE+MbjfaX4Xk0v5KV2l/vfpcJfnwHKe0 + v4avxn7EIjsc+ZHtMkny0ZDLK5JZa1lfaN+92q77KDDW/AX951+Z0ddo5caBXWYdLpYbB74dsSZg + umK1ySxpx9MLrIZPkS2oHb5tLAq5fcokB70jESBwksEAoW/h0QFOFbkR+3YQDMSrFBdV6zcY7V7H + SWzOGT1QK/+RBj7P24koQ6ZC93U4FdPzJHmqreR9Ot6oY2U3Aus/Iwhl14oUn6PzwT213G58jvSM + MZ+jaELnc6SLAsUJjXAQ86BXV2kQTnDLC29MN/GlTj+O7TEWI+42mJANG9GJuGU7zAVpb4FgT6FP + YE+hRR6qbW+pVMYSj6ny3xcLPRwv0OjRLtx5JvKaw8wirYB35mFOhh5DbGS/H/4qmDqvvqbTVDYq + ODT3RDzte+yJ2h2Nh9cXkp3LqBzz/MpymLlOTbcb6dRCckmnpqsCz+e3T3ZZqUbluVR64bwah27g + 2aMQMYIFaZrcHshp2VyCsU45yCpMhYvZ1A7XeaG3xPDZrezedexnFZMr9tX7xTQYq5MVpp/svG8P + iHqTfoWhyklYNol0fGT8yTVNK3RSSP0QXRNw/1fotawhf+msZRAG7y8nqpDRsmzuteiaDtWUCe/4 + fg0P1kEaXn3Z+g/XensJ+4dM8W1XeoA1i6z7ltCLoiZRfCRYAZLSvHflFsVypgvLOWWdOIjlM+Y8 + F9REieaCX6Q9J8/DLRCUyczOdM3hfmDUoOuHTpWVO28BszwjLxocwXnpMlvu3nYHjwjdbrp721WP + CF2l3Xvy8bNeOGcHrh85XnX3ZmgGIzZN6Hli//4szq8MI32rNHtE7NJsPtvB69NHYzwKTl01pZLx + mzHdywPQMBLwR9x9CC+3KAAnovBfcxOdX9GyBibLLVuLAwB+rhbM1fsk9bMgbMS/j1joenb5KJCf + NM4/SXzQWK4f2Rn7gGUsl/lRqbJrVGAOCkLPdtxy1divY4QrSWYE4ZXVu0wqBfx1cpXb5NdxzSuP + lHoihzfpOLqNkMhSTD6ucc3IjoZTTBxZZdsknqktUN3grXkuB54rmIk5x14AiVRDx2vRVsk3mFvb + OSXcZwOc64VTSqDxRxqce8EB09DR3ZTFHuT/ALCVdlkm+O7PDq+lD5882W8ivbJtUXc0ohhh9h67 + lTyTVp/YWXS0qZSLIo2pTlS+2fHSCbkih/ebdLfuGEzqOWzCnEJ9jNOtskk906E6xinVNqmLdOYL + /ziSxC0Jzr3o4Wr/a7EFTGNhvsfVp4gJCpPdhh8PMr0gzdDXsUxXaY5wCCZU9riixMxD8Cf/7FVV + tGXx160OxqFbh0XFsSiQ3MjHiuwt+YNFNvnnDn4jucxcwdVqR6G5Lk63G/K0cskVlla8KrI/PlxU + opOOY1dylcfwuoHtjALuBqZl+RsbZqvrT5MCL02hKh/W4JhTO2Zr2PwLZKsP0xqvSbpczrfLYpKu + 5pywddrzYsoFohk6YRUigl4N3lGPUYbl8GGeuxEil6Rb8cMUPZc6F3sJeqvppZQaTflLm6HWLaPh + 13lMvyVVVnnLiRqTTWQjg4sy9IIaGdmZ7SNzNpTUqcN0A9oWkp6CpIcdHMog60IOsERxmGdarkoZ + c1+0eZtsvyXJKn8ZsrmSvH3vb+K7h9l8C9MV5qLKQ7EpDwW/X22D+7vO6JAbiBnFN7jqxOvkEjly + m/apNk3NVZOjwbE82pzzM+vAMmar17zE4z39uKK43tsqotVD9ZyQ710mCFfPJ+E5KCBuJxwF+Yxh + tFA1UYwWyou01z9ka1Fn8oBoCdlDOv2i9u4Xk4+Xb4ahH0R+5JwMau74gI+Xb4NrHGTBckitOrpM + uIUW3o+IYqZYTkDA592G13E8QlzIczIOlXi4endI2Tojms/3V7YXmOsLdLuRviAkl/QFukpz6OOn + ku8O9AU8OXXXXfRqzGw3ZCPmcpcxzrmP8Sdu4H3OTaEz7RiJCRATTwh3+8BPCw9zHMt+IDhkNDdG + rJJNP65qHHK9MXLHC7AGxmzk1Hmu6p1tONea1A0OsuaWmREO8bTVCIUpUH3Fnjp7gHNA1S7Ztt+T + T6ta5dlLquifI1VT2FiUuWQ2EU32oT+Ur0PugoEqq3Htbik48hHjohpqQK+p4dcMAjvx7CERwVCK + IsKHi6BuDuEh0FqLraGXIgqt/y5EFkaJupdXluOaH210u9HRJiSXjja6SkfbxfmkcrTBblqCeGav + xmCa2LY3siM4NYQpPIWdBcd3zDdWZQthpBxD1ghLLw+pi3hdPaTejeleKaes0GsnFTTcsP+D8uUE + Mn5UEC+EIywedw3GW7DiXmTJKtsN3+1W9/MTvfzCDRrJByzfg4+vMhuUvI16igJrNLod0A/CMvYh + ve7dfBETGsjmPl7VkQIEFmuiMdB6IgdVRNyObzH8R5OJp18BdEtvwg0a7e9iV6g2MB7Bp36ZniiM + OkoqaqVptiQwH9JONcFRKVm5gNUoBQ9ew3qQM1F6CcqT7cXF5KRYiA8X4rUgMuCz9kTY/zjImWTa + uI03t7gB4iU15+XYZTLFg2v9uw08sCmhr5wVamTQb5uiS221XXCyBTVlSSyfuEk2wKWqeI7sCDUQ + B21ZfjrSXC+iUWiD3c1UsFyXb4bygzAVHw6tb6ArmQYlPGYR3An11Bh6qjzD5UiY7O7HiHu65Mk+ + oE5CNx8/9S3dvDERaUjKsLvdzbq+RuS4FRHb+bqjGNyk8ZF9G7vReX6wsD1TO4gKC0Y/HPZq505Q + fPrnUQXjcvBq5k2jrBoHg9RB8uRu+51zyjpx9OYPGad3y0b0/G5xlXSS+2kmcojuF7C7LDFymtNr + LOb3PNwlfDIsgtP0ZJDfWb7xPUor3R2vZ4xyu0NG9d0BeVm4GMxnXZkGwBoJ5A6W2O6k80O/7A6a + xrOlLNTe+34/xnkjzaOAWZHqhdrhaVzGRjX0rqAbbpbfPZx+jMx2W1HgWh0lxfUjoschNy1oBsLK + KoprTiQRq96mdObX17Ydmpdg0+1GloeQXLI86Kpgl7n632o2c2DplofjvnoJK8kOrJEf+Cx0a7ja + crRtTFi6WXx3Ja0VxTw5b6X3tyF6HlCRErN1x6cdAhmXwFoyBPmAoUA4bs52eY/du0kw4kIjcZdu + vmQ5AwnPA17Ea1FfzJtGqq37jK3Hn9O1I3Pn4N2qUUCjqsKLHIg8dGynmjjt/W18B6/QgGtQJIiB + JdnMU1YUrlRy7CP4/Hi+0VVwO2QlLPZCSbgTuXWCCsTiQqzqVV223yhbvuTgjzYLBjjlVV6c6xD+ + EXwpLtn2vukUMYBxERLlsHXTUGAhWrkA6NhbZPk5ICUvov2u2K0ocwa76j3St86Xu1pMkqeR2kh7 + 3gPJSr9QLvviOPx4ws1kjPO8WwyXn5rPEEzleVQ8FvQW3kPt22qrCiRPWiJtubiynA6kLXS70Ukr + JJdOWroqsPmua07aEBmiiiet92rsW6HLRj5jgSzFx35cJxvkXE64SyTbyV/Hm3jGx0EsREykwADq + GHZO1DwKim9hY5vNs93iDqWhkBR6DhQ77FS+acYEHYeJEUOldOEOdkbzApOYcYmK3TunghaLn47Z + 95uaY/bZwQAUDQPRp835675V5hvPj0M/hHVY8U0Wxe/Pj3f8xtdvkI+iF+N8OBXzBl+WAi2ltjXH + 8koaSJ4xH3kBsyvxQb0iifsz0Wf2HQMJSQrzreR2xBaaqg1ANfEjJE3vuYkSJkPThxScmyUe87J7 + s1ywUJY8+IMtzgFuQ0r78VyrFxK+KIjKykClY00tPxuDG/w8E00WXgsm97yj/uN6bp5xUTObTAzo + zjKOfKF2Urs/CtqFKyhK9u6BRm+Cm29ZWt2GbSQssjxPm2JTQV1yoKICu5CmNjUu4cOSdW07h364 + YOzUsju6B+VT5vAPspkSAIS4LFAd15ktVBTXupEkMoX8/xvbGTT/hT9OGVxM4jsSbxOfJU25GuYU + OSbSWlKrntYgaVtyXdAic8cgZVMoKp+OM1hw+GRLDFHmAybjdp2k2bZvq22D4xmbyzUd3n5TUQPx + 9XmDmF+xnW93IrW5uVs74Kkf3kjr7qCogJj/Nuya66keMubMko3onFniqshJgENrnqHXlp/ypbqY + 9r9qbeDu4DhEogWGpVjPj2s4jUDPNXTlm+8YoNTxFiR8UM/yQ9/jX1DIUDs+GAGHWUC5WRtOsjMt + ihcV3b20QtlsV2NU2B4X8SJe9dhFT5dw1AX6Zp+uYy6raxGTExLKCsIaLx75KB5a92hROLyyyPrA + oTlA+J5gjMfn7hy3vSMyALEIUUsCxeQ2Q0qHvV8v91nF3GWH7+yOMdr8IdMEQNWIlgIorwrmrnjN + dOauAr+Kyq15+/H11fD8neMx2/Jx+91UuUPlmSnP5U/390zblrEpnh8Iav2gO5lpB2JDr4aZsqM9 + 6pB638IdMCq5+jtO2x7ZU0FYoPFmgra5bcxUNu3HzoyquYOczlrajm7O358fERw+ThE+xkEPvUr1 + Ta2z3VBDlBuApxSt6D2zT2Fhd1K0xEPGipZsRFe0xFVa9iXzsrhgP52/+fAL/GfyYZhP8/lqli6S + sTPGSRYvZsnD4wxT7qWA839cOxe23jzqYG7o4KI/sHwlB2dax9ttslEJNB5jXJxwFvGEZXyVrqba + H5lDtE+t4weXXjPfjZgcv8O9HGrJCvW4QdpoKOC/4Amc3NgdfH6P8B/5G7wc3DdN1hTqM3DuSaLG + fWvjBTZ60s3T1J/wVu1HUkOatDI55Bt6kt72ER7GOLgdw2tMviSwo4D1orVwvAqLrUSlVhJOUtpL + K/KkoGq5t1eWbZmHG+l2o3CjkFwKN9JVUg0/X36MyiUFFic/LIYbg1djxkKfBSPQDe0oaucCSxYg + f/qnxh0cqNhI4PqHgJ0duxf3zv7Sk2HZa7mWOGcWj0cJcYgQNd7cpt8fx8cIc6yIatG3D3P0ngzX + jxsNhOWACmxb1Yox5z3rbC7Kh4yhbGQjOpaNuErr+s3b8zfw/x+GtxhzSjCvCZ4+/zwpGEJY/y7/ + NLxZPDBdOuIA+oEj3fVBg4lxtPN+L6XvMfUEz1ah6hH7uEfSJ8uSAMBN86QP15JDKdUGMp8WrtgK + LZp6+vce+V59JkVR5nEOGTWGneEIEH25X4U5cGnQtQQhf8gcujSolCDkVwX4VoY10/fzFXwizjdZ + dFBE4Kq/5U0yC1kVjEu2iX4sS5zvh4cJlbvJZTk6N3e+x1PpwCHQG8FKcEQLVMWtvvZxMa5rrd6h + c4wUo3ezldTtUSL/2r6fYvsOWR50whHRFsqhUYZQVD7xQcfqjH6E+tr8NJXaAUf/wBaeGiH/qJoU + uYGrGjL/fXTKuvGD0COmrknRgOaYpGu0cRME7niDFbsSkwD6eSx7J0eYVrJ4HohHW7Jlh0XkrbH0 + Wt9CNyxryT9HCIg343FJ7JFiNl0yjQ+ZMr3vRZ0jgj8I08r8C1walYOsIcfKkxTC4NTuAouunjFP + UaAmShkK/CJNUIGnj2AgyaYQxhTx8qLi0OHWYts8c8EShpJFblKsfdgoQwkehAM6g27HIjKcztuE + uAnwtvuuuxA0wvc2DnByCIM3bOkKeWwPs+5/Nd5of6F6n/yqTTPsZ8XU5ZLNmQyid+GpFXazB+gZ + Y3NANKFbA3RRZRty+ueWdEP3/MY9ZU0phy5mHBLGje9Gf86EwwOqg4/MHPwD5vodf67+EbMF5fYQ + hQQ/uuneAXJjEOnIFxfue+fU8ro4CtQzZhtD3kRhY1AXaWNY7rJQ7AtYIDZL0u+PGmX39W83+RZI + GASMBS7zXP9k8CFdLOYzWA3/liGHTQLT+Cs+KCfuR2xhwNvhDlDLEhmJFllp5TrR6UMy/bJO53V5 + JU317lZANfro8MQz5d/8cQXapcFW7mcosAJZnk7SClWolK1Xqx40oijYxG30hij/DtIOcllH18Va + RHqZYr5B3um5sP3d87xraw/zfedPU1wEvmuOQwQbh5wFez61YfgdZkfCz6+XXZfIEp+iaqX6kAE7 + x7HqJK3DzlyMbujSdtC2pRiB7/QeA/SDQE73nxtF/GMXPddO0T7YzYyFtBtwIfl3p5s0yxAHIZ+A + 9QdjV7zOfiIYfUFcO87/912QGDhhB/wUut2QxIBLrpAY4FVSPq4nN3Z0XqExcG2rTGPwMoxC32Mj + +CeUbohJQYvVUPRJhX4BlsxJVZE+G66SeLN4LDCuwLlzvc7s6DVB5j3EWVGlhL+CXTmEN+V/fQuf + Ayf48Ia5VTtJYkVycXFtrke7li+wHd9yVNL4RM/cCN2miuDI8yLM6yilhBiovzoxguOZNFDhZ1dl + DBXsRDDqyhIHz3HcBjQVFYuBE1omJm5dmOinm7FHu3R+lkX75JwJR1iFdafXU1mZz4wNwXHzXJy3 + wanldM3FoYfMc3FEI6VcHLoqwLPOPw5nMJmwQAPzD5GggOckDhFt9e5kwBMswKJZF/QBVdJRDmzL + BolmiskoSpSrWjVRFARDfXF+MtzG8wUSLmy2SKB0VPHGcUACWEfNinpQVzn94Ike5EPb85BRvOnH + Mp93cEUd6jGTy8+TDiOfdaxPlY+YuotEA5q3iK7RsruOb5UCXqD3HeD1958nqNWKTyyK406fQOSL + HAuWEVIY7e01nu9EDvAV1A4Y8rEAbJm1CTcdtqMXk9L7WcT34C4v2bqph3ZoFQQO73a8NoTDm+wl + SzBcSGb8DcZLoCdCiF5ZTKNmWT188VNwnP6ZKDFYwOicqe4ch/e6x8SnHS1Q7ry+UnxC3Mu8bnoP + PWOs9ogmdK2HLoqw+92X1zJwzvO20ZeAEc8vnMtwUHetKBn34cB3DmMhx6EXvuMvx1AnOkGO1XzO + 7FPWFY1FPmWO1iybKcE1i8si9vGd9PQX158KjsYTTVeU90j75XqzBkupnMKQt8fBmZ1A1PsSnA+P + G+me30O1RVOJzYUSrJAmB/3c1AfHbPyBPsngHZ6kFa4TGEs+DnbmSYxvMR7cnHT+Nvb+NoavMXQ3 + /gBVVErozwFNTgL4yCNFHe9YlRsTEdn8egVLy7zqjG43cocKySV3KF0VVWe/Tiqcri4vli86Q4NX + Y4c5VhCOHOY5oWBpg+mW5jkrl8IP+TldH4jWnNeb+VYYepZV9i1iOERvlEe9LuvRGZ2INdWzafI1 + wOYMdeQZjFq6uqcx1/GVA9aALwg7b2RXvJXyjUV121CAPZYwm5sYb+pfE5dS4f34LJuACXt5iXvy + MsXaSK0Bxw8bXhrMVySMKDPfqAp8OIdBz1o8/jKbZ/LnkuwSaV2RVSeK7DAoycYoHUajeBu0d05T + TPzMqr0dgAVXQrMuYkWGYeT5XtjEmzu/39SJLBHrmIjUy6XkF+ixWb1MkTWhUNqRZcM0aW1Ah3ww + GF4v2DO8g8/6Sh3l5+/qP7CDEOr2JlnMEzDxYMJu0L7D/RzeBaYB/B+PRIIOCE995bD5sEg2yThL + 4oXkBhRZcbM5lefextMvcJYkZyg4/g5yb1OwF9dpNkeUSZhIKGOV4DTmv3IYzmk6R/hwaC6HCEcG + 4WIse1RGBqGXKQzHALc16Vj3HN8fiGHh2ovBcFa28cYsEEYmYr5mMviAFeewxj7FfjMWhlsB3t2w + axg5trrK2JP70U1Yy4eFUs5u9U3oAbPdpgwO3/X1ApWaUt24hfi9mPCNL+04paFVWyBoPcUdsYNI + r6kAU1/w0tsrV2xh7XdojDq97rzoQ34gkqn2bekVgS0g/Lg/F+2DfBc3kfKzEpp9cpIUOqCzBr8P + QbIJk76HTJGIqZw4Xbk6UNFGvateYFlbMxqbI8Q91Ws2rQgQGdaLfIG1qZJRA8boUMyNnvD++0o4 + j2SYgEXslHUpEZGPmIYJRANamICukR0zX30VKRpzZB3Z5lxXked4IQtOBrcgdnyHtmp6B9bqCktx + UTw+yh1Vtk2OEy8io1hzbh2bRulFZDNmO8z2SaoVUebT7Ni6DyHHcV1i0dvEd3fz1f6X0hHHPI+2 + /+R7MW8ATrbjcvK9gMDVvsbTXbrYo/QQKwdN5qoxPhoWVtzw17FiEuaG6Q5JKLu6EMj/1TCTDiHN + Oljij6ld94MobOrcHNxJdSzo+8adKvYQ11J7iGPbp1bQLdgoHzLeR2Qj+k4irspiSDVXEbR2UP5d + k8M3DtfjG8cxGBidIk31+DU/P1j13KNAcs7lhVLuRXjKrG5BFnrGOMgimtCDLHRR1ENs1gtbFOIW + spjjRU1RlAwE/L68Yi78x3YHpo9c2eGAmuKTNvSeF4a7PJVsj8pd9M961rltfcJJFZ43SWvfI4MA + uPWuhC4A273Haq8j0/eeTb7dTweGd22RHs0Cr0t6NN5umB7NJVfSo/GqILZ//c6rJEfblltJjvYs + nzn+yLMCT8YDlvG/oecW6bchVyixwzxv+OVNPLyAbtmgrZH8AkcJDC5MuUVSyZITpPe3d14lgEAJ + ncJARj2zca6UIO10AqicRz1yAxtOlAo3fZbsZuluM58hMkFCxVfNBFBguDcRJll+hPDbJVev493A + 586XOC6536cYTC257puyoxvk89Cshm2seaaZDsRXJ28wUV2AcPGqA/JKkgI1POKSffjl/OLcYIAQ + eATTh7Lhi2yVXn+aZCdcicxQheS+YdqZOCUT5e/Cx1CBPdyRrfDTfrMHOEVV0jTzvYH4ML6FVD7f + WBW33Igv6sIn4VueY2wUedPb4t1NMsFQ4xvwutql9QV9ewrpjgm/d5bS7PcjoGpOhzR9nNYZae0F + b5YfyGOpcy84jJGThd7ftGMbS+UYKaU0u4zF1VWT2baYg3Lvv52n6KTsTjjVSRLu48k3+A03wB0J + ggMphv8ITAlKVBKZNHzUZnPc+zupUlYQ5PDc/K1GIEts69w8qDf8nzbxocVtWkMgKkB7ikfQz9FU + lDxBSx5ZeCoknUoBHObSy5Q2rEl3YtMenMjHp3mIwdx/ABtvVL1U+kVR2LSFH0BjdqiwH4If4jqU + jnINE8Jc/aTbzdJRSHI5HYVfJfVz8naC9mMpH8VnVjkf5aWLDsxg5FrMZo70/ArPgHILiJE/G07H + yK45x43x88c3Z6CkTnlG9JwqLWnRce1zkqyZXVE/y/mvupIZuQ0B+BAmNbNYhQtVtanLaczT0OQU + yETHN5/Or9/W66aeG/olcaMCZagmUqmP9J3bVLlf85RxTS8No7LsstzBZ1TmtvlYwGogjPcX4rVP + ONYizynnZnmRATXDhr8S98Ntsv2WJCueY1AeB9QN8bp43TO0w2B6L7IhHk2PXEUt8B2NeM9PH/mP + lDUAd8OcmfEvBauFxxNTymeAKcrFxhu+pYL6ilXrZ3y9xt/nqwGfrSrNwPOJmTykPV33ORyZ0897 + HB9pGSDTfbG/+oCBmLXSVVh/djVuz6a55Y3f8fMdirTOiHnl0/kkn+TdzoWuMtrVoo7Cjj4+ny5g + KQ8mV2HRuW5HoFv1jDEWnWhCx6Kji3RI3X/b5rHGdPGVzpH3k0v4fCTa0muTBX6NHTDXC6OTwXp+ + P/6fAcrgkHOhTbED3yOmrjoxrUxtLdkUB8t8ArSTA6Icf756mmeyZYWuAIOdPi76YAfokWggcP0m + USN1led14csP7zfpbt3Vg2DbTAAv7qawhSw5rrLIXtyi3YHB8Pk2XQx/HZt3UfM6fKIGTUuK3JwF + Kzj3Tq2OSJ70jPHuKZrQd0+6KEqKOAf0auzroJ0NV7/7RGclaloCWSLJb+f6Rrq5j1eSNPDw5d5Z + cs+QmgGZ4IXmj9i6fhoM9j5k5RqnTA9YzJTscE4leMcXrTwZYr9LLENvrlgYmRvYdLuRgS0klwxs + uirgb17f6PUeUeB5jq3Xezj+q5fMhl0LWYYcL7JEKfan8/FrMUQ3uzXniIOuBBtrcn4jS/QEGM1t + Vi0C+TPRDklAGfh4+Yh8l5GAi7mbw5xAcrPhw/z+AUzINc9xL3TbOvvC8D8218Ep1Z2n4oMVC3Nq + uE2WawSY3fFM+xVPnMdJh3bzfbzAinjo8d12vhC71BmqdGu4OEPNAJfTEH37YONRejRcLwLUZ8Ov + 83g432bDa+eDALcY4AyRNq3tuCHhIVNUP2/UIPesKUH3x9Mz9QjOfzS0ghuIGK/tsS4xXrzdMMbL + JVdivHiV9oCbmwmPepSjvGEVAst3mev7Ix+h3iORHcVJI8fw7bspfPBjEmfb4cfJP1nAOXxhQUn2 + scUG2vy2VmtlA/vvnHcSzN8EJvoqXaiJlC3PhlImnBIPCSyD7CGdfuF+GvTXwSSneY3OmflqlWxK + iQ1SEz6TL5LuMq4hx8slPB2v8tO1xkk4/Lj+yoLBze8f1fQHvYPR9KeAVfmdO+Ruipl/IFJhT9kg + dYk1oiMbjYj6tzlE0nM3jOQCpaLMyRWcf+YLlG43WqBCcmmB0lVaoO+v31aKMj0Lc06KyzOEQ9px + YJKOmIPY9TpCXe3BhBiDMGUlY6s8jRDFfriOl2yYLb46cBDsEK5ztVss1MEk1/R6Aa+Ja5pf/5oM + 352/yf2GyeZMX+W79Tb+kuDL4H3ctVprT+Paz10pPEb5DTMA8ETaJqsYjt3Bu6sLtTJ95pKz1aWC + GrmG79JF/ZbcWCRzJDhMZBPeFfQxHI5jLjp//ba4bZNX0wvJSaJ1rNkGA5amW34Zozzqgs/jz56G + CucYJW8p1/ztDssQ4aAx+b7nsFHxvBKKlqpJomQU1mIHn6/c+/KCjtAOTi2/YzK2eMg4GVs2oidj + i6sFSrEtjwQny7kiseX/bHB1oTCjm7QWedq2L4AyPBpSTrhEyuHRoNkeEdqDnAe4jFFeA5HGBn5P + FSBWKAicC1/eg4M4skK/9PH9SCXStodN0kWocace2kDbW/9UwvSflLj88+hZLCodyjnOmneDXsjJ + +mlvXzDvAA4nddr0TPdO+6QB3TuaaKoj0NnxPSVfPaqCs3SVbrIOJPDtiKMRKRxSBZzNMSFNeG0P + ZDa3fJ/3G3+1g7reYwIOHj/yIEeBZ8kiFZt5HY9i9YxpkYpsQitSERcF2ItepE5ojEVf/cNuCRb2 + 1e8frj9L+1sTjUinYDcKKLADN7R9ZdJGYING6W6m0RWP5eBi9inrNEzqGXNgMWqiBCvGL5LpOM1W + whC8+HUSZfP7VbyQNfmUFfhCpm87OtQY3v9L3QPy/gsUXXwC2+KIYxGzRXTmuMxgBmcB3+1AwV/g + UgbbaTYrUJKu0tV4L5+Eg/DBeLeOssD3h5h8P7vbORipsFkVeAdVJmddDWx7w6LUKBTbEKrfSVeX + ypPAFphHjJ4agex5UsDm+jQBnBan/zHauYG0Vh+UZ8tMTM/tAAzGbzfNxETJ1UxMuEobyT8/3DjV + REzs2xIwmGuDxe+OXDsKvZC2nvewboffHjBOgB6n5Dv3MpU8Thx9X2nXC/StLrATBTA//OZAD25d + 6Y4qeaL++ZA51QiTsOnza7UBndAJ7LrAUKEMiILzazCS0y0ayY+L6WOG+0PCCUo3t+n3x0VzXZBf + gsW6KdTZeJHNgjIE1Hv2yw3Z7nO5YSlclXw31aNSoV2CslJt2B4LHVbB9UoF3NN5I3sC86JSNK7m + zQfvRD/Fi8Ujt2dWM/QmvMgS1PqydHhzeWOfwIR/mN/CR2weiyVDk/V/2Bp0xeFkwqZjxIbC1MMs + 2fwChpfahYvB1v+Dmc3Ip3WWTxjeNE0awiGGD7HPhmvpljQfQM3xWN9DA1wMeZ4n8TRg/+OyNhu5 + yvpvBcE57hh1cAZqLq4laNxf4wWuBzD0eVrDdCgKpEBXS1I4ymqdlHUxvH5ttpCqkerGXc2fjtmU + x8p88nxGz5FuNi/wT1lHyAPxjKmTTTah+djExYJqTy7DQZ0fURODjjPPc/tAVocdigzK9eMGLMrv + ssz7OBh1lGoXpS7nq9Y06S6CnYLgvsQ6nqev1iI5HUVba/o1P1PX8RYGKfc4WaGnBqU6nF28Tgc6 + kEQCPH8k7iUVU2T4FJ3mvUl/Hh59y7OZp62lVv/9vmXl1SyrjiGCLssiqF9vT9hiWLcQ+25Pbtcq + /TzqhhVCD5ga91EJJYSuiChI7qBfY5FMzmc+qPnTSGm9di4ZcTW8IOyJEoNwIQttH8wgE0qv+xyl + tcmpC8d1eLxZ4+p1zzw+gmq6fz7j8CQjYM7y/Oi4QNsnjk0uC23kOzZQO6N6kFsz1eRekidjg5p6 + CttEt1IW/ox5KQs1USpl4RdpX7H9m9wxlif9Fr18dUXoUvn9lN6yChuBbBU9g67LNxzXtoNiRTvu + shzhQdqFbYkSpseC69iudMHJD2qGaDXyFP9sr9wBviysKRfWT0s9uZmfvFdSKjhGFUhQHwwDckFR + TvUlFhGbu8rodiNXmZBccpXRVXKVXf1+U0nXgv8FuquMoavMtgI2gn9CBGbCBfjhcZ1Kj8bw1+t3 + Ms9qvgH50z93CrX01dwmq//MF0MVUTx78f7d5GQsWKbkXiNTQDOZApr3BWaIzrNi+ij+/c2n8zHn + 9ebVQvfo/Pj48eYsn1mFOUouJGTUG8P04aGHQvD2F/Vq2VmeFgfykP5zvppucC7Phmi1weUE006v + 45lnr4d36XQ+uLy+sF3pPmJuwBFrekrh6CvBoDM1T38uoOcQ4pabCSVnf+pWoPHJvEDjU22BxqdC + gcbNdQ0hB3NLqdn+q5d26NpeNLJDso5xM0EC33T9APv+SlBTyozs9G7oWxyKi/aXm826j/oMK7A9 + W/JHHE73wVjEXDvwK154FZLbQFdu6n3toWM3YXBFrmuHUZmCgsLHRX6gBpCDiDVyHwvBg3809fgI + 01+XmFfL8xFogymODyK+Dv8RryNvTUo2r8Efzpf8PWC8JAS6pAse8QVCcRP5N7En0oKgcJMiNt7d + Ys0HiBQ4+CT5bLgEVYE76eHr4afhBrNDeXZ+JVrK90FER6B9Aqem8oIzx+GWpE8lxvJ+8f480/ew + YKLvU62JQkzgOBKcZKLNFnmqBN8ngnOImKN0xIa5SC/dHuvuh4D1Z0Dmu/n3Y39ixLyjiB9fR3TU + SdUPHBHudpXx3mud7p1HVuj5Xu086m6gy7M01BJjuhAZykc6pcV4NVkxngDYTXYSI0iCFmTrZIog + gUUQRoHUAEZrwOzwZPA53lYgKtmLz68nY3YyVmNTZHmGv11OTtSpW7SM+TsMHMdnHuycxM9HOxMR + lLSyzzwBHkPhaW5jZo+reN2lUAGepK0H3n2OhyuvqZofQqZD+HJhji8XI9vKL4b5Pj9l/wqJSyhb + w/wwrq7omhnbS6wxUjXHHcqZ6HbjmuNqORNdpeV3+elDRaW1uJ+yXHPseCy0eDmTE+jlTLwsVgRv + M14sLrD9ccoKg+8de2eN8U8SUG1UTEFQdu4cwaEesKSIm4ownW6xgLawkLPhzfaOrbldCT8hHBha + egV7EVSR/BaOXXq5esifgJ+S77xlQpICqavtnNypqBcOieZqjP8o7waMBynnXFRZpcZXo9VA+zK+ + bvFbC/l9ySrbDd/uUNuMT0q6vNek0jI4WkJYFWUdXCRE1MTNtYSX0Gs0EmzmB77rl7Rw9e7c6TdN + d2vk/aKvrFfImRfpiGZ1bz84asKcPfmEoT/EYNIslulst5ivxnJVL2HrvKMJxRX9/BZUz6HLN+kA + l1KhOBsTURw7oHQzSaVW0uT3wiLUYZlCV7fJLOBEHOq/eBYFsV5NGavxQmvVqwZiUeBdzUvI6FMP + ENOml/k8r/z3v18zxswdpnS70YEgJJcOBLpKB8LvH6+rDlMPQ0ZFH4f9aox8aYE18h3ft1m7w/Tf + G5BfdZjq86Pk14j+eE7TgVz9ThjYgwMXUV+6hS9z3yevWfAWKag7YQvlTxkq+oVmirp+fpmmyKcx + 7Ef38hV0OKUX9wgGIONOegZ823PaY+WQV+G9UMF3Il8wa4RacXIhGvppDNv6F+hiSZ1zKHxRTzHn + 0PaotKexAxpBhY1e0fUCPklneFI8PC7GMwGnkxZbRKAd2Vm8Y54bOBltxAbgZIoRqRNAmVxWtkwP + 9NGIdTtlB9IjpsmBogEtN5CuiUzugvIQ67ZuYQmY3VVoD5MIwT7AVXIQGqlxppDtkDOxpBLBsfF+ + n1rUe1rcMY4nS6C/ah3dqgKYB5m7y26vKbZ8vuDKnXyUTDvgMkHnng7x+kEeONcPAxVzWxwgR65P + wsl+fWUFHaJEdLuRBiUklzQoukoa1KffJiwoQ/iwyMGlVDSq3VcvA8/2/FEQBb5Y0+e3Il+/kJRf + DCpwX6yyJj9NLk5GOqgHYkwlpeADyFAuNYGMn27QMMLAx5wKQkHUSEu3z1movyYLkCkS2NC62hI9 + NAZ/clbVLLnfJERjO6oxsD7t1swL1kIjxN8Cq56JXn6lHp9ynQZ9UIsj5epgYVkJzbChHMRjUdgp + RPXp6mZ8C2+JU1MFcsbSVSViLFqsyreCTi3U92qJK91rojFnzI6sgJXRw5eIEKdyiB5W158mJ/Io + 2PP2Uae35w1Jgcn3qkDXavIUtMQE5azQcB/JHlfZSXqAMOr22uWuqHtzH3r1GJnUvSPQtKZfynRC + VnlEC3RIoY/poTVsQnv6udu0q7DTtU8L1i2yy0lc9rxvt4WIEieGU7ib5O3+V903uQZ/9p18QMec + NHktRqkzFseia4055/O/U3QN9w2uIHDOdBoU/lAhSrA/HoGrgiudx0rhwUZiJjpGDO+s7XFSfPqk + 2oOpKehvJFZ942RfDoGRuEgOX9M5dIx0VmQ5LDBsHiNSi94fMT7PK2nCLL2hk8QoUhJrD2qjfgrE + 1tGg/ph20NFpF0KOxyyqZOEbzoFCfM+yalhO92QIdLE+f0CqR32I9tgkkWdQDiE9ESyiBAv5MYeU + iDEi4261O4yWQR+pKHAwe37pdUosqAcMnDSxXUVF5XUCQIDbjamovDoABLgqEjE/vHWrAAhWFQDB + iYIAARA4foketUY2oni+4gnIw98uboYvfvt0MXa9Xy6uf2W/YAsnAnZZZffBBHtMM3h2maLDhP7K + rwsfViJvkIaojp0pCI4wE2QEHY86Va7YcVgmzFmhHIQvMARb1MBQQYuzxyXvsintRppSKLJGHxL3 + +KzR0OdQQJXgCn2VnIrFwG9g2XaDMGYHthfYYUm7rn6kqVXnID5QY5Q5iGzLsWusUa27RqWtWEtX + taMmli/GPM+Bgy4PYv9Z5s8AX7VAlMVRlQPPofAruYz58ZqBkTF96ITgih1aPf1qprChQD4B8O59 + c6h1p/1ZjuKfnqHIFysfVn09t3663PU9kX5v2x1gb+h2w/R7LrmSfo9XBf/1p4+I9V3Ov7e8cv79 + GJ4JIm9k24EVhe2x6dUCbu69mOeIfPvnG99uga8+K4MJweqN72Eq/0eiCQlwIeXFWMynOPVmyV2C + NNOYu7NeO6Etln4Gb71BZsG7xQ40lGxahAHbX4PE076qhUjKAbPLBjf/z00hY94PCaSZ9iulCOJO + Jd91xBkZ+G9JQ+leG98XqCLKmlgfShCNmVT4SPG9OlkLdo010tVm+PEZnX9IWgq5cfoy19q5CE4t + uxsIoXjGNNtaNqGlW4uLtA8+FPdBsXYGcg0Jnpg8jalcPyzlY/1wgAXS0FWRcIYVoVE4RUSlm8zh + fiPiPNJDw6KIhpvJdWV0OYGR4QnfBfjOJI/HLN0i9LUqgUqfH1936wf/X8ZP6w/dQOo+mIPUfagF + qftQAKm7+G3CxpVUMha6pePaguOaOSz0RzZzeapL23H9sIEWao7rvsDlnsExe6E+QWj11zcXhdT7 + TbJMZ8S+K8IHZzwXH5H7KJEZTyE9lqCvo6qTlNta6oRUHAm/CIQjubLPOFvS4lHOOFzp19kUsf4K + lbcgCP1/2TKVvEjJAD7BUbECRlkNvwzVr0Rk5Fjc5iBMQcGKNLzdJPEXeIN1PN/wAxi+tUAhAybR + 8N8pmWFGh4Lv0LYg+MPwGJ/Ns2YsgnoZXu6CVbi7HZ2mDqHQ60OjSRxRmbRCQf3xDTT6oB0iFuZx + i0W6Ei5a/gzXb9LFo6A7v7zEWQYGb1KjaNSipHgkO5/xMN8x4tWl/uZo1yi8BtUW8sXXlF9Xqbs2 + QS9u57Cql2BWbOMEVs28FHjQPwNTT6mtFtFJ69PtkOz3ntKNWsUYdXZvCUtEafSPa+gi85Oabjc6 + qYXk0klNVwXv4OTKtV5Xkr4jt4SS4bwa+yyAtT/yWehI5sF3mhkmCfam5JC/Xi9c63w9EiUf8EVg + V6E3C/72OE8WsxzumRxVNYeTOAUXGDYbvvCtm5MiVI2Irguc0WKgGjTBIXzYWaEJrK+G5YCRb3S2 + qV1fNFETPcSwoYRqkTVA/KNua10GGa+2oFetvmRr+U/o2k05BZ6HsI5lVSWXDzMG2dNWDSlOKL3B + 22B7Toh1R83ZU6WwgYKtKTbgBI5n8u7lxJhGqFvLd1mlN3QRJjDhJe+N7+n5O5/y1wTVI/RsB+Fz + /2tm84DWvdLKQotou+yQyRNIqF0dFQ+X4t38FGpKnj9EgklChY4uq2kOB2G4WH4k0LEK1i12DUev + SeAV5stdLd3BHu3C18oP1KB284e7tu0Vsbs0ILC92soP8QYd69jZ9/zBRWqha2k916ll2/YJx3P/ + pm8ycR3Lo/JjBcCVqr2sSfdsdl0FRKJmsIl31E07CX7iSLdUnyLJxOL57+xTy+nExCKeMWVikU1o + TCziosACxbjUeDH/oqhLB9VLw/PNmlkl31ouHSOwoS/IWCzBiHcrYHayZL01Bqt8lp7a/hkivJCS + HbRwYJf1Qjs8BWUPK9wMqHDz/RUoGeZaPN1upMULySUtnq6SFn9+9d6ueNscZMEqFh1Er8YO1huw + kRMyzo+J0/YjflCmFZWNQL2gi7BqsyHcYb9fTD+dT+3xZDJ+k+b18vAnR//TaPjtYT59QA0pRqzD + 6W6TcS9UwSXFibkQ/y2R5XZadVledsdV7vPFvV1RuOtr6vR4XdhYUw9fHwZBWFZ9eeuL+RqJBqu9 + 0lBh7wSNKe0htOJbJeW1XFhH7fHdTYJNKW1OV4ujpqxrMMsih4X/GtSMpSAu52BwPED2LeU7NwwM + LyDPtskawfIof7i+/HEdbx++xY9nwxiGQnn6FJJCDRt6ggV230CR5arw7QrmCmzh8NG7ZdEhhcow + fr5sttQ3NTNvgFNd1dpaAuzKjSpVkvu61mh3iSxPhO0PJhzsVgiahzHyXbVX3tZ2WQbn9hNQvz6D + bMABrWQ+2IVdwBlz8Lhx625g5tn8A5W7SsXUYWRRFTrEP7pD5KHJcrzlC/eUddHd1DPmeMvURAlv + mV+kA3QTz5hAtikmXRWMvelDMv2yTucriUcVWiyC0TgZXL+7GEq6nMJd8ki7RtED3gAPnfouwUxZ + FkWZha29kKZqQYSpKYiylOe4+r7GYo43/5/CYD6ed4d5RAjKjd3xzaHdRHBYUc51CNNSg8Vq28aP + Ua0d5tCuy+fSECYc2RTGiCfIEapaJ3yYQ0MU9CLYg9NFvFwPF2k864xq53mEUYv4LccjWBtJa91S + A0b1HiIwiLoD7ChFfqIDTQNbAnEw9pZZp1Y3HA75kCkMh2pEQ+GQV2l7SzcrXi+W8JWUzhJEv+AI + HAWTtPEm4rao4GyohmmDIxainpCUXdcWdqXKIa0TaBa4AVkCin6+xO47QNRPyiD9ybDOckJTif3k + mlkdSuzpdiNbV0gu2bp0VUasPlUSQT0H97divCp89TJwXT/0RoHreX7Unlmy3oD8b3/qzBIFUOTD + aXIUKezgeWjscka6io7Z/xCeWmFHPmbxkDEhs2xEZ2QWV6vgLLg+ayBZ3m9WTOKa+rbHHDc8GdzD + Re4BdP1IqIglD39DHaJx4gZJ25eFerSAPcDNx9UwBowKthoyAo3Ogb7qBHltEZeTCreHnnEjnCC8 + GNe0m7vFddqrGP9/9v60u21cyR/HH+td6NF3khMpTYB78sixs01n8d9O952e/5kzh5ZoWzeSqBGl + dNyv/leFAkCCiwRKtOP0vbO0Y5gsgFgKtX7KdZg+4tMZclNb2NefN1p4XynyqiesP9m4uSyLTeiO + RT2X3V3HJBzsBU/qIlP7kmK3j2l5sYOI4UtgXCd2uwDj4uOWwLiCcg0YF1tJxDj/+MWvAeOySoqh + K2o9xLETj3jMRSUIZP5fpEUklyZkZAmgUGxh8LT9JNKarn6ajs/G6lEsLKkwHnIsR5Bi8d0UJmpZ + olOUAdCG2zydrFOBjipttVKyOV9s/H5t51GMYby8KuFoALnis+RHaeQ4e5M6C9ogNozetVj0udls + XbGe7/sinePyucm8VVjWDl1ZNQ+tC/sSp0MsaaJVexENAqvorkYg+mMYR75Jk6n2huoH+ApfFPfF + JINjhzMAFAlwQHhdlumfmJozg0W7Seb5AHe5xqwFGURa0t3yvViCRmyZ5I6X/yH09+li/zaQP4yB + HB0uYhSdjL+7y0yzwMSfPJB9/LBeHyin/2dyH6h7PFCKGQtO3OdO3E0xUy/ZKma6E0MxU610r2+v + p9IKdjqdeNH4N/h9/Gk19zS7LRT9J6pk/dPB/ofxb4aahz0JNM2Ay6ISPlkYbUIXdxjKrOW3nvrb + aZV2PEoUf30xBmk6mxA86D18TV+luA8vqtPtjrmfQpLa4hEqoPAu2dj0uC1QeEM2NrUqG9xlTUDm + Pta3rAKF+zxywlHge8x39wKFNyZj/x1tcG4U+cfUe34kJrg+tef+6qwf4Q9SJyzSNkX2Ch0bYTeb + onzJ2qaoOjFtirKVTo2+iqlaRskXw4LBzj8aPaB10ZV1jvw4pDDWZH2V4ZsCg+Q4Z02PTh85OMXx + jVE23i373TYxJzc5aUBjYXTTCY+Hs/FHchQ9n8pmFJugEOtkjRVRG+XzWO8XwVO3iE/TVYYkBP16 + V50JEehC05hlEa+siAocXmX2Y1VnWQcJ85O4a4wwvWJ9jqkD8xSLNjrD/zjDqArMjlfxwSIQb/2t + JDU9ob0p4uZA0lhunpZJ4/HlYTAYWDohe4+39VxZhf3AEHW5KJGjo3+CKOxahE6+Yx39I7swo3+o + kcSZm/yrXCKyzRSmGTNRf1Az3VQS+d8CoQFSw5XiIPzIehNBVJ6zktFDFltYH2ZNOTYwBghQKgrm + UBxSom6nJ6aDJoEQQ/iK6T3BjQkT2+z4aIdb8fyIojZbnDJaENQINqNhupopgjbHwNaz8qhKez4k + u+hVNPSC0ABRlYetY7WmrkT2DclggzXGcOgYj6S6e9ChCUZbJf/L5m6N2GAHjv74MKxAnqqjPrMP + W5m6pphOMArDbkWU1CvW6UXUgZldJNrUxaRl0dVtshxUfy/RwBgsJ+JKSDi6BlG/BnYCA3ibzW9m + w2SFeSAbeyuM5cu7ZQ8Vk3fqnUTPmdsNk0m+Yyt7qC4M2UM2kuyx2uRyiblzSUczkV4cbYoUNcn9 + p4PWJ+iBAdLC5XeV1RGExUjd73i3tQgK9XDVBzAfei4LihiMhBInO/dnFe7hs5A3YEodEvnU283d + Q/ncfcEXBq6xrgBgedR+SC7fnpf2dOnGxnbCA7LeUSBt5yUSh6WruE5tJI7cWOX5Hl6ErSe9Sji1 + yGIi2HS6Anmrp1CQroR3yyASFVYLHWSF6YV2xMkfcSyh480b6qpxZSgL536XUBZ83DKURVCuhbJg + q0LLvqzisLE4DoNaKAsIb14wQtFBuciqUGSYfowYZMIoQ00LtOSvx1fb6XCZTr5qbAwj27Okxr2U + RPCJyRoYfRHIsskIoRPJoPEDgx0SwSGGic6Ahoems2sJ/plQEWdlKRspDLM7cXjWM5H7mA6Zs1wM + r2FPI2/NYQDpkoImXn/U8Nl5va5z+WsN/0DsOS2AKswBiZGFtVLN7TnzRtay0QtshUpFoNH7y8vm + nrRrooiQR6mwsTaSEzsmZPfH85El8ZI2blI0qwHZU0yxYvN8lt8u1HTghUzY1hg2S4g5xqkxcXMc + boYp7ep68Bn0GujjmgwClK6lduOT0+kEI2zgB3PkTyZ/cvgpdshT2t4i7xkDdNbkwlJbCxHpJtkc + p1/tzMrp0InR8BtMAB5lEZdDybHmmokjUMz4AM9xUWA68gZyLbURwnzdSsDAlVP3baudpS0Y+Oik + LBU6u2cX2HzJ8eYYibSgD5BeMzvBxf713SJMTJprmffYfP+RDgiXCRxt3W932aNHLyCh2FmyTDs5 + 2jYA5/6x8I4Ojo2o/saHC+5xe98/PW4lUUjKFYmCWiXWxMXvNWRXl1eLhHsvxgHnMXdGoItGkS9L + XF685sOLsnDw+0wVI2PPy9CiWGmMOyvBB0+fw5TcJMCnLxz/nf/cV4vwXCFErL/VL/CqlcCMb41b + Mdg583yXOTUs9+5RszZUG31+5Rob6Bw0iJbuNuYELqLS31OkQw77F9Qw5co1EdVAeed+68Dgf5zI + b6ZXBDuUyfkxa6+/Ib9TR+iq78LzY2RvYM6FdBaqmL7Z9G4+W6IrIJNnUmJBYKStlDpfXwxhMdPl + S1NylTezmQMhv2I6Ax41u9qK6cVdii9AhzAkBSGi5+1l+84etmztAR4zdeF7cMCEIykgBdmkf6ir + Pgik+6Zp0A9N9N4qnkVBacoOpCI2J11LlR289zvodiTLBHGkw+7ox2fI7T/M+Udah/uRpPpMbIx8 + WWqLxR2MB/S4ZaktQblWagtbpfHgw68srhVdCYNara1nIeNREIxC5ruutB/8io50ROZbp03hoU2M + tlzyD0U9XQxQJEUs0lmmVCPpsH5ZsoFLk8Sb1ycXys6L+TAwiD+z9VcFSyXxqHOh2nkr1ARTES+F + 66FLhIjMselWCODJMoFrBAHQV/AioazDyzxalSptSkPC/CuL6xGMGdqxc/hUAzSCcvu+FrNkqrYI + T9VqZsDaNl5NlshXIFLOK9WzIxa30cHFCvx7qzaj1suoXc140HbLO5Hru1GtiJd0XaiP0wBO0jzw + Zru8mRlmAdfxzFjQ92/fj8xyXvTdg3+lLToQh1kXvQk5OyoJvDADdCvcea/hKOTkUYvQ89utZck8 + iQVe2ahGTTJVirnpPmqPZDnargFcxDdXZzTEakrwW7oWN/ZN91UComKmyqzL6oaGF8mppBliCyPs + PJ7IJLuHz9qJE0d630gYKY2gI4GIxSRH026yG3Mk0SxnE2Bh26tt1+PsM+lCUd0Cv/wraxJdmhIT + oiLj58R7jhWCuuT7iFess32oAzPXR7SR8FELrBys8nQ7zYBfTjHARaD5VYhhcGUQROQ493zp8/oL + xjKmrwVqBH1QJ9VsO7V2sTGfsu2tKe/2gzm0iJtjcBpcUOGLAuW9f/KB5PeMmGR3qsze35DvL2DP + quvj4QHiOGrbXke4Ww+mah9XH1FE+wwZ6FE5jxHZp4Ulp4j/7CFCLJT2WOZF9koaPW5pjxWUa/ZY + bJVgBa/P3Zo9loVh1R77zHO9wOMjzw1dVRjzWzLZZvNy1Wsl+0r4gHTl1uEDvsN4lzlMByi3dQqG + FuM6QZv2EXseD+pKTJ1gq6CPgcOtyo2D9FkNp6Bqvjc1GuY3uBNLJMOIh3FFQSF7A0wFmkLETd9o + 4HSCKPYrWkmhkXhYcoVVKGOpK5A0YaJpUkAFEJ7vkYh6SrabDKT+G/hzqRsPDc1Wc6K7EbWHi8Fn + urfG7/B8l3vdvuMb8F3ULKbZ5Kuo+0laS/pdFTQ25yk2E+cMFVGugFkn7fTzxe+vvww3Kbpbjdpo + ejOtUoTzS0Vp9upWF15drXSJwQruIIf7iww3WKckmwtFD+SLfyrlWAQTXH46uXitoxlGpu6oh1Eg + +Qzw2Gr7LnOjY9IBC2NnVLA5bbA+EuNIbNzCsNa80TsoNWKB8YX928JWB+sLzokFLOaloY2lp+Bg + wzGeRvrW3QfYRprwuMTOKOc+T9dbewAvcXTxaYsTb7OgA8nhhaC8+1Kw0w9dcm+U0/PUyLpR8kMC + fFVvdzVDh6VF2/kZ92hLdp2Iqga/+3x+2e6T3+Fudl0eiGmQDNK6lN0De8zbK8j3Ue6tr2JtUaRz + 1ngcPHc6Bo6rl6yz1lQnZtqabCXRL/+e8HLeGiXJfr/TAZCDlvbhJbw5wNdlNV9GWm/oKQPNP7fS + giduN32XyLvQegkD3ylS37L5nb1SR/sw1MwlKWE/HGC0Okx/65ry5DEq0V2b74OBaiIZmLPWobI7 + ae+PhulM8qcOwJXJv6enoQvnJupwYtUrdudVd1A6raqNTmi5qGcZKaaxXqeJr6yJI6CMHziUVHrP + NWRd7gfSAikB6SojRQJd6r3u5NG+R36IHV/TlWJMkldLEuiRH/OgNiO7ArBHGqy7sjqrcrfWBtAe + iud2rn9bz3q6jxq6QNMzjlF9m/2Qkr27+a9PgqM5MjGkpJ8y9bGjfQUsjp4zryM6mHzJ2l+gOjE9 + BrKVpKnrq5UMXbjGcSMKHBsF46tZXi4EQKDNnIFowoOng12PvkGC1eehTXgaQGO9NxSWvvCyFC/1 + eMANcvsHa4Gh/xASWW9IJaDJu2IO1IIPKwsODeMjCkbobnxyZipgCHgoxaizo0WhmEnUMMfvAKtL + j1uihgnKNdQwbKUD9urNSS1yGLHPq6hhz3zXjT028l1fRBPikXx1B8pHtgXWIyqfkHn61XXSkLgj + XZcrVPyvsuldNR6m1SLtcO54Ti19pwyqbHI/g7ATt9WBY9xzuRNVCyHv1bLMeCAvbLGKxq4DQ69S + r4YjlArdGAE5Tly15hqxMmpOBrV0MJqWsZwWvGPEcoxfba/4StsaytWUFtv5Zraap+Vok3LBJEIu + zmXFugzDFObAlWYbqWNSVMgAt1EBpMa8nuJYjgo9gcWvi6+1oVtpaFitqC1pu4gtmcEL1NGuCkb3 + GFqCB4nkmupxs2Tke+Ib2juWc91+LK304D4K0MZcqZeu63QLeFCv2KqXsgNDvaS2NmypapUG9aGv + lyteUzAleSwJH8ehVDAtqz3YY5L2UT+ih/IIPw6AZ19tgvsBDlUz1w92V+wWuL6O95w5HWF9xTv2 + qL7URQXUVzRKG+j6SkIk1hWr22yeUQRPGU2Dqq44AfeDyHs6IB8P5inL6VBJ/ZdIueFpTgI8d2Jl + iGlQGrttjfs25uDRCxo0297NHvdgPCrUdMqloHujtmr9HOB7OPUHnFTQv8kPCVtw3PSle7UrFsgA + tn3WBk29B5Xe08bWGM4n76LR63esza2yC9PeSo3EGBZJKp0jiwSVU2IEg8ovKSeraiyh+hwq77i6 + W2+/WWrirb4PRr4P6PHBKT0ERitIUEwcjOz7bEp/gPe2XfD/JIxlrMTdyW22nK4b378nTG2nx8p6 + nhfK+gjFFnvYKn2af4C6r1Ymo0U5xhsTkKjfQq2M1IqK4em78ed3VDIAb7FptszW+Wj46eQM1w5+ + nAtQj8kkXZHtteNY4tJRmKbCLgLyn7DNZd+TeQZsETkh3JXSrzUX6unTHZ/fFldyP73dq7da63ec + DF847Qf5u2Nf46S9EeDRHYHS5EvWSGmqExMqTbYSI59noIeplIpCjH7y9s3504EKp7kbNqTynGxu + mGtoPckKWgRYmsf9gcyuNWrTUOkcnLdShMwR2k9M3LIY5+G0jkp1wboNMkc3Wytxc53maJ2hfGqE + ONFSaFLYpfCFzlEsHiGJJfkko/cL6rbn8EHrPxwLovrD4dS0ohaoWq08sseKoMdta7Ui5XqtVmiV + WBGfvtQsvr6LAQhmrdZxGDPO+CiMOVOxyQmoORi7UsIUKdcGkMgPy03dAlzMsonO4IatmZBwNrnC + J2pBZ1ila7gACaawMdjZD8MdqZYBMHanalre842NhmaHx9Uo5aIbNwY2dj/dtH2Ntjgj7msLtkMU + tE99I61rOLB3BJEtgPYKEdMIFQa9eXeiZxNtvZCVHD1M2izZkkwrucv2zfngvLRBds/4S8MsXvlA + RKiGW2q7GMNxRWasp6KCTlH6Dvi2+QwTGYRQjaeuqParoCOI57dPbI2n7ArhPTpQmeBFsengOrAq + 5rdlOa2FPNyd+LS5f630dD+ONaLyAZ9yVClxCpgofX3Xm0w6GpvYWmdSMb2yh1va2T5+PAKDZH9C + bGk5yJqkXb2axnDnfrtoMx4cp0n6TlgU6ACOUBzZjsPbqWpQFtWrC+Z0QLWix60kFUm5IqlQK0kq + r//rM5avqgBlCk9cGSjTezH2PN9h8QiUfR45LVCZIoch3xRosRr6z+DgRarDy2EyzzPjWgDhdbxA + 812+ms8msHIWABSvv2eRV5OHhHo+nCSr3ZgJ7XgTgY9++joilvxKQ2yoph+V86c8EP3cmn+9L7wJ + nZ8i2GgyrG/Qaj5WE3hk82gPQcFsnr/7Q78sRRzEocgprvSo0uKNXTUafpsl9FtK/jQzwy6uonIZ + kwRisx/VPm2VSRDEWoodKK6tglTzNB2dPGaxqKqPhrgLIFgFLGkkOHid5/JsKvuBiOmYbqEFpDPC + BylPswYyQbmzzAkaGMjwyWUqAErhh08/AvoR0Q+BWoo/8a/ABUL8HQkTR3g61JhntMH+wpwmbd+A + zVcUkJaTIRB5BTtPh/lsQ2Wni2EOBMNUUiZmAdGt6UnLQsN3PqyASdavXclkRxNoH//RCWkSNkxK + MpPZCuM9THxRXBRLQYPRqqhNVXtpJ2RlTDH9Rt8d5cPY9WokNrOVpaT7KLBZXeYVYLkK8EzxjQ7S + fh9RJ0UikvvG756IJF+yTkRSnZiJSLK1qE5IqIimhfz8dj5brdIl8KZN+i3FxNh/ZPPr0fC/Z4tF + usbiylhheUv+SCn1COA2+Nyng3sia3wVFuqKIia9f6E4cbrfxxWH+7AOtxY7Zr++Ojt6rZ9inyFo + PaR+kg6dKCKtq2UL91CW4eAeHs5z2FfqZRzLOgpOGNrrh/S4ZR0FQblWRwFbST/8/eRjULVkO8IL + Y9ZRGLssiEM2En+V6qEBeIzSXZFYbIC2A5+6SxO8oIUy93uyCGq63G68DcxcbtHiYoTk9epKnHJs + 7UTZsCJaaHQXydXwZpss7+bjklEj/Q6rtrxJaxkuZVNxyBhvNRU7ASgI4T2hZJhhz41IGaqDDmbj + qopZnbnB7xqiwoCjmGMgdDKEC4yqDKAKMZyRg70Ausg36UoI5vVtIXWZqzucbkTYphhtXJaKsUmv + CzwOejMoofgQFYLbIGxGkdTwx2oTrgZ4FnQtAu4eVcm6ZM01MvYPNOX2gwPheiEn6+osnaSLFG2Y + CKlWuG5hylsdiG3oC31gQQzkecSnmmASbG3HD4OO0NL5zw2uMJBcCp/uyOh2ThDddb7j0F13wcOg + w10nHre764hy9a4TrRJR6mMdUcrxEOyrctcxUFHhjh/hT+Ffwtuuan1TZ7Fs28yT+QZE4DnMKfJF + CTa1aACbqlIzc3mi9lweBJP1a57QvmyNE9pMbZZFVq2xUxvX4FJw2rbJUgVq0AajarkDzxEVoUU8 + J6XYpzJZJlkDx/wGy0mqA7y4XU4xaWx2c0uTPcmWAvhT+hjXw3n2J1wkixU6DbfrFNnQZphqI5aA + LVK1GUYgW85TyjZJtjn0egsDWEtTUhGvDHdT7YOUyXqAu0rfGgFVsMGZEvpRdTrtmapL8mqlxG+t + +/0UB3JHCb5f+Qo7zmb78s8BQO47uvopi9+Gz1m30unyHetAf9mFGehPjcRXPt5dyZMw2KRzCWBb + zheX3PbL+poNNvgfjNIPXS6hTSi4S76aDhcJTtGS+I91IO7PEetPV9vimDSb4zPqIpewUMrOho7q + Y3+oED8q5QcYHL5Stof/bOxAG0DjwCgoeoBTvQeUh4DY/TTbXs3TMTo/4YhMh80cwUre0jl8ged3 + zeGjV2xzFmQHRsoCtcmMhfVq7spkppJFDLU/ynUrOZdUktIfiw9uOLB9WjwreqGsh0imMHl0DYuT + NW/RuTrk/nhuxaiXzHfT/oG2yj26TsDrnzJHx1lpltXsHmEHjajwm85p7KjM+BQeiq+THnJ4GVk3 + lMHBrRXY2gdpmSkEWrqSLLj7OnjOnG7gH+olW9lCd2IIF6qVzlt5e85gMWf0T5IpBtDD7d18czvL + xMen4wLrIS2hE5fiy1XioM/h/zz/qTkQlEzg//Dwsdh3ZEYb0hfGGZDYvyU3RwSbeyAXh+r2poqg + x3kyPESfNAhezTLC1N50pvkD8bR7utb3x+x1cYE8YGg42uR9koQvx7Srx/5478Y+OjnQd2Ry4Mk5 + 815Hz50uyoR+x9JlqbsoeyxVI1218K0S60cA9w4IvvcVtA7wTwIVEeSdwQ9F5bVPLbkn3F9yML2+ + QKmRoqu6AONaw7w/OvTeHou2HRjc++MLtXVgYP+uBHd/cci+F4lvAQZ1jkXTKWeyB35M1eXefmAO + s4eDosetzMyScsXMTK3Egy/OP/CoamdmrmtWLnDjF89cxlnsjeBH5Em2/e5ulZHwAV/3+eKNtCH/ + cTOHDv7sISXI8wPuxH7NX6okBoMOSBNWdPo3RIMYNs9ucBZUWyMd+J8qncFAgyg5AemBhwll3Xhc + rxnXPYRT+Y6uWuTyN4w/d6Ju2oh+y1YdKbox9BHdLPFiTy7fFeGfpcRV4w9K9TzbZsx4agoNBFPi + 0dr2Ueltf52zw6+RR1RIDuQ9AyfHSDuukWqPAnUxYUDo0jMB4Sc+DaiIeIESgtcvD1Hi/r5Kwd1H + RbdjEVcOgRYr3j6yhprHQ9LIjIO6mycqVhSqyE73BHlBJ1DU4iXbyE7diRHZqVoVqBLqf+ea0ZR5 + jPobRsDQvz9eFE+uXKcCM1bqEW2ETsDvCWjMugBa/xR36BMUCqdtdGq+WnfIQxkzAr+w64uIDGOI + xwxQfjdr/O4eQiD7Q27xCU+h8uU9DLEz5T3jLOzEmtqPxdj3nYg0iQvmdACWpcftNAmiXNUkRCtp + Ep8+n4c1RUJMVUWRCGK064yCOORuQAzuk972TYEqVZ6ErC5wLhuM/0UI4MuqwTxPv4nKU9PZNUwq + NmJuX8lLk6w3lHJDSsynbBXWNJgC7qSiwTitITBB5HEvPFqDMej0r8GUZhfmisPkitnBiTcTFOPW + BDseuRglXCFcTDA5bOorZYaE8tBtjTyNMeCJ/8/gMe2Wl9VkUoU2+/b/zTcvoaf/d7N56eC/f5G/ + iAFhlE7Jw6ETDw0IATxRWj10KcTT8aQzDAOG9MuXl7/RYomu4RhPQNglViGaC2/98Il6djT0n0eX + Q/rnB9n4tM522sIwbHSZ9qJCkc5nMj+6q5bQgVBr9NLRWKYHUUIumv6J0jpwhS0RQtAK+I+s0CNp + UpyoxUHaq/L7AVW4NU3UPasFPwSztcUmsu+13Q7dgO5mOPlqQUeVyYc/TbbrvAlArVG1oBSK1x/g + 9Njf0vS41S0tKVduaWqlW/rt6adqhj13IrdyS4cvnjGPRTEbMc+N4j3mvnQO9P9t7utk7nNC1304 + c5/cf0yGNX9gkW+//+hxyxQeQbmWwoOttP++vDmvgVGhHFwNa37GOMjG0Yi5ePnR/nu9nGQYbZuY + 2d2b23WaStNJPnxy8ur0KQXkAkukmC8Rwns3S+dTmddNcHSnw/8nL2Lx+6uX2DRD+kH8axEb/+Td + s6fjEwI6/3/DV/SE7/wqkn/HGlwXXS9aHVgmC+j197PXwyfn78eXk/R9MSbMlYH9k21Fdve7z/IY + fble1VG0VDLZWHvPUKSRg/mdDacZhlBWEAnM7P4yIoGHaZZ1YbSncr9hGPoer8moODHTNPt+16ww + lYmDoua0jJ35rse8qEp85wQV4JjrTF+wixQTA2YmW/KCOLCaNc0E8A4FBgKLWYVXCFzm2XxEWfgW + G1CFh5hDY7HvtqGCRKD4hVEVW0svJyJM4d6sg3aFjgna1fC5RVJUbbup6+9EFIiAFoHPeJuWbACl + TAzlDxAABi/11xZ3pwiTv8ngZOfp/HpMRBAcQUesNh1fcV5KwrRo/H2aFieuhPiS7DisA+RJOije + 9Sgo3qUsX3OZu8ktrTT2F0Z4JNhewibVsp1s5WvmxxQYgdBeFK2Ewuok267m6fRQ1K6C+FHgX9oO + 47saPWu2LIIWdOzmQbHT4uiWnRgWAWAN173rxI5B5sBI7sAhUQMX4tBQtIG8YYyNQZNvsuDfKSeO + eMeoxDys9v/frQox+vrxFeQ7mkR+l8NXd92pR0ZEeFQToGnJNn9m4zwV+RuS5XeLXFXb1WVh1LmP + UenyKHaKtV2fKis03Drd1vv44HjPZ5EeyjFVZ32mI3qOp0V7Zo8kZnUyj/L2F0S45kSPERKvN/O8 + JhTRCtQJlYHbBSJossSHMK1QHYm/xMExvm2RfUsVZJnAn8MUqq7mqkCiCtXnsCRH05VtIU137TvQ + 4YZVHmEnvf+A/tpPh1Kwqb7fxwsnDuwVbHrcSsGWlCsKNrWSgn356b9rCrYbepX6fv6LZx7mO4Qj + z49dR2JkXC6z7K/0hfgs/HzoeoVLP4YjukU1Gi2NMv/PhM9txNZZbjciwGI4ny1mmwKo4Wad/Ql6 + ewJLp3E2Lpd/NWBIS6pFW6OhBR0PTQabQkusMivT3MNawRI5D5kX1JD1gH9Os++YJNCssjlRYKqA + 7y8LFZDA6qrq5AE0SwggYcxYrfjg5nYGK7UskgSqyBgx51VcwdqXD84bXCxwSgTlV4FB/KUQSoDb + CsB6u000yWReIfxBWHMuP31mL/WdkcvGZSZ1PfHrH7drFiPo3ipd3yarXJSykJUNKzk3JQUVbZdr + IPWXIAQk1bbIB3holAbohY4Aa+6pQItYN8F56ivcTQ1ASn6F0hEJIIoq7gLB3KrbZSfJWuL2owsp + ZFy5xN1uLnHX3iXuNrrEXeUSP3/9XzVjO/NDXnOJh34QxfEo9EPPl7z4fRmFtsCXLrt7CLAh/V4H + my29UEEmCtssUy4PnIhXGef2avZ/25lArlWFUhH3s1JVxzDhwa3S0kcUw/4I7gEJHvtoMally0x/ + Q90MFvisDb21ZbDKeJXN73bQxbp0e+gaSPU7p7kZbx5lk0TsTu0EXwjDB85b44YZ4HYs/MkB+ZO5 + E5dPWsOH2RmsfDI46XdLmfOaJyfHcdJAlCn+ZdfiWvHRzqD1DwOBH/gBL3+eXE/gbFmZOK36qMhD + gH/cTeaN7LHN5e0q12aWb8alrMtStvIi22Xr21P1yGsoxNvBBrabehQYdwOiNnXZBQPHDri/V8D/ + AXFGbh4RHds8u9mtWzaN5Qhye1RVMnkdRyWWmjNhmZW52nGjVJe7q+FX47eMd8xeLr1lDcCquzER + WFUzXfiT1Z30leeIDYcOEVGOjICCRHYyiO0qLzkG3gvM4+lAWxdrj/8xQJICH9VTmZB+yRicqViR + jhwrrtlvLRm0Xbjp8eBofeb27jEA92c1FqecEeJKbSkPtd2xiKAAxIaiuexAuy0C60iye4KyyK50 + LKHezG9eEEfG1QrKDXDw6QyzLpS42QUfjolE6j/+84MTOfb4cPS4lW4hKVd0C2qVdp7TcxY4Ve2C + u4h1U7b08BdjHvle6I14hAW2JI4TbPWrkmgpAf3NvBaUN68TULivtzLiEWdKxoii0/X1xVgB0aTL + b+k8WxXemXxkGogydILOBS6YzF0SWSriDiXb5ozglqU9aLKCz6spNnvyW01lJ2qvBMbDyHd4c6BR + 6WvGzf0t082f2fprBcw0bCvVFfkuIvTVekNZu66jRV5rXJMx7BLSa8lZUSblhrw9mLZMqkDUa877 + MnUvP24xGhnfqWkKBKxy9taoEn9oGLl4pdRFucyFHHKpygOQHqsvf6tPd3p9TR4m3GwkdGiz5CrZ + 3P6Z3I0E9NjcKFMpTEu1/SzqN1yMShYplGEvDGgwxDpP1zIaSUnT2KsMG8xFeQ+yT8Fl8us76eGC + MyLvK1HdMl1v0itRSObb7GY2F4Ypccq10hYwqvAQEgIacHVcr2VaGks+u1kqpB8FS65Ot5LCMhk5 + pZdA4tTWWN+u4hCuJ8QQlU+3hJ7nsGYi5HpTQLx1odk1/bA9vDiO6OnyPqttxE4+KxdukWDHB4tf + NnK/qfsUNuqmqUBEayiyF1Owb8mKPl1vO2h2cDUxslrOBJPV6zCZbzH/0UpN7KNE548HT2gBdbgH + nISIMIU1P7cZyrHYuUciwekdx0KDjOXNt1fDVsN7q7XSZL66TcZF2PoBbmNX4kde2MLLdXpxp76p + 6zAHbvjcCTspm/SKraYpOzDUTGqTAHVZymzgsnb+dZi+f+NOhx+B1gAJUg1mxu2R6HZb6jyy1Jmm + pdIofrGyKVpQ6WSW4rIuEqUkt9dEOogf3kPeQxdUqeIlclul26+wtegO2LkT3HKUT/uiECydV12Q + BoKNmtTV3XCCCUsiVUKeyYOJPZADKZAg4J2c+Wf2zvyzRmf+WcmZ//b9ZT1aXmAQVKLlgUEw1x0F + bhwxCV5JOUXfUiqicg1fn2pLD2atCZBqEpLP312wKqKr0MLezvK6V76nbAyzvx3lKGCnONWsw5Hh + UQ94FHlVL70p/JFYLKTgJJ8kU1PpCrlngoW/fV+jPvjPxT9PpeA+LrmVb2f5BmZmOE0Jyg2W9mXz + x5X1YQpk1jWGYBGEl0aJ6g2hEw3VKZHIUkjH39KKtf3s/JwJ3QXXdoD7SEc4+45LEc4/A4xyIEUr + gYeXzWcrWBILD0K7j4UM+LVF66RgYKFOoQvAVsowjCgd/olm7q43ys+ajdcVDdYadrhRdjs6JLOf + alLonysuLH1gBMdK7CtMHE9th/8wIPlGJjkYpBGSWPP8zkM9nvCOOo290G9TiI+tfqWlx4gAUhrY + fTGqJ+/c8a9uoL/EIp1aCRtUffnXD3Dd2Asb9LiVsCEpV4QNaiVh4+NlPTWUh5FZfNlzXzyD5ih0 + Ry4HLijrjXxpuO+eDz+ixWuSre6G+XZVkjfy5TUTE4FPPx/+mt6pG0T+XRTlG0srCF5uImasuC+f + S/nkY76sB7/Y5Z2WY1+AxwRYtOtISSf2Qu7wWmnlszbzbNAejcPd2AcVuj+ZqUycoZIQV+WlDne4 + me3mt2WSMfRv8lq6W0P5RbPYr986ckVw8KXCIQq+WSraAruDw+6QfyORSXaIWFnCm5GrJDFoht0q + rLukkWQy9oEgFTC5Te8roC1EL9oeL8Xq5mKd0RBIPeivBK6C+pOoEFbZ0cJHMt0KE2Jlhw/wNCqR + jfmeCNZhrkPwRSkmAJHYJ1w2yU2X8A+gQ/7Z5KZsOS6viyxuiWWH6XOUCfkW+KPKfj6o759D7Ixp + kDaVQls/NA5rNLJ8QbB9LbR22dvjMK6Rq65Sl1vX4ZSWd5ti7aLJBDSNrsAZrAJHXh7bzXwLsjGO + LFl/60jYDSiHZlfJEUFAQL1k8zuJkP3+PWoEMMUpKlvHrJ4PQmNQne7rdZr+1bjZ26fZxwzFKiHh + zxbx0ajCwLi2lo6Sn1ttOAyF+TBkdqlyFFlhIhhZoD7+mLwwvJDrfK9Tcbp+9Zme6sKCYKxDsd6E + z52gWxyWeMU6CIs6MCOwRBtJoQjilK7ROEKRR8rcNfhyO/tPlVWo2koEEWgeZmNwBCBHpwIAauZi + PXNn3nOHdwxho3es5052YU4eNcqQNWkXn9ymk6+rbFaK3C1DSN5uF8ly+Pbi5PK8iKchSIsa1KTq + VMSv+Vxi4BIsDwGD9wZcG3vKKCFiSwpQqpq5v/R9R3TIyL/V5G6351BOTCn2V8kaFg26TFebJv/o + Qez4/gPrLBHeO1Tg6e7w8JmUY8SSb2Yru7PHnf/N1enjiIfaqRaGfMX27MkOjKNHbXTybsvASoo/ + FZlMkidjHFzDc2Vi8AyiWJ9/4RcMe8Rz5whB5pehHzkI0XcMk7tvAaDHGitqmSkh88OF63Uwq9Dj + VmYVSbliVqFWMqu8+bXuw3FdjLEum1W8F88iJ47jcBQxkPCkD+dUJ1IpvznIwWzkjq9gHOOzMQrZ + wIxViu5oqEwFyXyONpXpdjlF8VZE+yRzkCOXGF40qZF9m09QVSZFFiRUbY65049c3GboC6pmfZLl + u0gwRJ9DqazjSxVxkwq6AgNGwx2KV9fpIpumlL8gjDpvvjY4nfRHVz5ZOy+N9BvE2GlJvwkc9ObX + TD0iCRsmZtUOfYRW/zYgHuYEPgfCVYNN67CbjTaR1xawFwZezCK/ikSGpKGPoSTfmuoZOGGblcaY + kSISUK+PfVKW12bOUl0M/rX28wCPvk4rdV0CFnIo4Ka6M+zSLpvY8nEU98AIURVTDAYSfLcp12AH + QKguf9awlbqNJHIDp24SEKTz22TVvS5q0FCxmMjB2u7/yIFkM00TX+NNVst4OLU9qj7Z+nR82HVh + oLATGH9o7ce/STnnYeE4FotcXDe/WERC4Wtx6TXErRAiYLKZ3O4RhOS1snNndTM/HEFuT7aHV1hI + rvfVvNtDyg/bSI10q7Bo38zvJsAn54hKsV3ZMkglXhY1NJ03zOlWubZ4ybqGpurErKEpW0ncnOcL + 6ZP7LRjmSwxUL8W4K6VB/u284W/DD0BhgGSodjcnnFLHjUu4RjKaWgGRjUSA+84Cy/Z19HqvRGFN + cY/ToY+K3oFHLhxBpY98O32jHVUco7gXD64X/uOqe4t9Kbbz8LfgKIPGXsDoLrTEOlP+a0NZj/3V + ga1rPfdVeXioDMOywMVv3i8wn9+Hv/kIKT+mGT6uEIlVILZ96ZFjw7o55fF9/MCcqANek3jcDq+J + KFfxmkQr8ev/PrvkNfOAz6MaXpMPMoA78n3GJELINL2eLQUc8jL9E9UawtRRyXl4fDekIVLoPf5z + mIM+8+dsArqNiqH4YzGH0fwbvrsTfLfnh8GDw3dznYTgshP+nHndClPRO9Z1qWQXZlkqaqT9948z + DERA77GSKmotoyF5C/5xcXYB2g1tUIM85h2IDLejzeEH2I49OGpGkbmD+CVaoH2t6KJwDhSUNrnX + IF0icogZOygVK2NdvW/ynQ6lyljN/yYbZW7Kt5XMTZEBu7Nlls8MPM6yiyiXAHzL9DtM/kd4eYAU + aFNwj5JRAm6AvmywAMNGgkK3pud3qNp8HNByyKjkh1z7xWK7PAg0pa/6y67rFwOqBWW0RUGUItFB + p0Sz2qAPi709eO5RFYRr6C62yR87J5JzikpVpdhn07s5bWfgLm6pQvvRcozrOzErumo4NA9Jeqe8 + JGsjnp7C/fecdfJY63fs2E3RRYnd6MYdfrMiCKCUAlU4ywq63Hdjz4ke2uvPqVTbyQfQBe1lTnrc + SuaUlCsyJ7VK7IjXn6suKRaL2kXltCL3xTPO4IYZcSZyynaVgEnmQL1BhuwLwPMxyX5ocYdf1HJS + TZ/TD9C7/XLS41bLKSlXlpNaaTl//3gSG8vJHBemNKzU8AYdAgR9hzsj+BHGzu4Vncyhg/qKUgaO + Kn9WQa5g7OcT6RW+KQhs6hU1lpfADeBWJ9N/PrxNvmHY/2SNqNlTTIUukq/Ic7BdXycTDKBBGeXl + 8O2b87FEVtDQFMVFO8uHChG1EquI2puIXk0WFFyb3ODJ+fjxEkZE/WmMuBxGtEknMrp5tV3Prmfw + 75LNPRl8OHvFAr17QYEcDI607MvqEpXN0Ou7e+D0iQgiAM6Tu3Q9hrlfZ1hIZCop55tsDfM2vMqm + na3HP9xdoJiL6yjx3juJOkeIyXdsxXvVhSHey8ZqfJ0ODLtaZ8mU8l0wexHLDs6utvgNTwcdHy+P + ATUAN45wo3o+c2Wc4qzADToAHeRhr3mX6fAi/1XUUVYqXrIOMVKdmEFGsrV1+SQKzlUyQWyQZN64 + aDKYUj8k/pL8lSVy0XTfIo7SJ/ZyLHzyv0SUktMfZnKPtQrCssoAw9pJaq8mos4DV+fB56xruB29 + YnsWZAfGSaA2Geh6i2o19Aqbe5qq6gcCnbFsnLB6qtSfgNAIetz9P2orOb5HPpUD82Q92j+YnZJh + zM5kzxbapXG6wsP6x/kHxiN7pD163Eq8lpQr4jW1ypKFr97UAvh8hmtTttBHL8auE8A2H7lOxLmU + rr98OXn79q2yiqr5lFH/su7f1XULxgICghZ3XaXGXytMGsj2zHNYK7ZdQXKk0KEExA+WTzQ7CaPW + OnY7O+lg6mcISRgenDLZ+t19p0zCgjoeqxZtmGc5BX81QIKZOZJeGzYgA1k2CkEtGXyBtbjKvpeh + JTDMbi3yn3X0Gn1AKbLN2GFULoEq9BVrC1LQbFyMTFfKvPxycpE/JcBw+JIZBsdv4FO2N7fZdiPU + EBgB7j0RBEc10XJsn2F+Vb6VMHeTZJVMcDav4P/m2eQrVfsTeGjF1MCsrRKS1QZ4pJRCEjhePJCT + JBSDHZNqJQD8FBmGNtWzdzppfc+L94yww13jyCIQDXynRmQXQhfwDMH7dzKZbjOFbKh5aM2kLUpY + /YgoBbJl75rXXXlsxyaf2VDYjbxmmb32MAXEPFfWpiyYhORH2KOSSK1gRpSc4VE+yB8nF07QAe6J + HrezyxLlql1WtMpUgQ8NdlnXC+t2Wc4cj4/gB0gceyyza6D/L2KZhbs0FDtEIh0xj3yIvk+JoOn3 + cspsJ26k1Xq/yHZ0u8PO0zv2+Y5uA+Q8NdKqi9xNxGuUSNuDsuFPnhx5cZfguD9PNszQYjJoIO3d + c+xB5u2drEdD1gciJcYwVpZqVZTC3SROgaydccSQo9DMbZ9hCV8c0S0wb0zePmxKjrW89hFTHfpV + GkUxmcNnrBvZdvx8zous5HkmYEgfCyA9EgpLg7OhZx/A2Z32g6Be9YbB30+6uUuojO8+gBBgf03T + 41bXtKRcuaapla7p16cf3Xpdr9CrpPQ5L54xD8t6MWCsMizmU7Ycpxq+fNXue5LX9+vJwm1AOHps + l/fx2WIlGPkYY1gi0IjPFYLljnkq1xwUfrPfzjGE2YiG1CbtEfy2SU3tGDPLxjCEbFqYvPOBWGIt + VoCwOXB6TmjqSqzBm/GYHFWhSoRgJ12hDPQ7tmkQqgsjC0I2yiSIdCsPnDue5RgOvbqbLxJEhqra + ckUlHhetD47zdLDv8Q9AeIDURW4Ejyg3IpBBNmSvUbo4yFeT7Rohz5QVGK0neCbwsZvO/Ly3epRE + B4s9ZgoT5fgqkg5VWMHNM7mFV8hwLg9h331RKgqsw8S+CKb1RXwY+Z0Roj6jGqASsClbDsku3s1I + 86C+KeuX7CpCcZIiFskN3gXbxeESieNGVCdv31k9BIuyB+IP4BvR1AIW7KBWLi2Od+Ppu/Hnd5Tn + hvxpmi2zdT4afjo5w7WDH+eikO5E1hXsNBbXYWS+XSTLGyz/k/54ZCJX4+vEPHju+N10dfmOra6u + ujB0ddlIV1EDDvdgOlvdbm6BPU5LfAZlJSXynK1uvZrDUfWFHkfflXHSHqU8qhevs/kB0n7IopKm + dDcfNw6wzAjJVKceR3TU2XTWJD/Yqcb3Ypq112HvO3agS/7Yw8Yh9KMuuo5PgN3v8hXQ22vjtY5j + Zg6xBIFWmN9mk6/HhXf3hwssBZ/tEk9cKWzmIJbliYCvP15fOF3c3fS4lXYrKVe0W2qVMMDv37q1 + mgMRxsKXjdDhizFnThCzEWcsCmXKMfR5JYz/7QjOZbwNI+gRLrEJRTrmoKBNbvEuEjfu97vtOk3g + BkuwGO7t7Gq2KaU6imB2ffe9VIHua4XpfnU3vFxesxXuMLwEP6YT+EWWAQN6Ch02H36c3bgruDPn + 8+xPYUNcKhENL0uMxUyLERNav0QhxheP9YRz7sa8XoDb2hO+n1QXeO1SVwKeu1IcwSi/4MWxy+P7 + 667w8ccRRl6E9+XiL82atmy0lFdowCI9By5bBiA1AYl4a30JY/oaQZJxD8j9B7frYjvfVhGTQ68b + dXP4paorFWRnvm+yBv9iJ36A3FGHUkeuM5CrK6QG672yA7e2i7LSU6QDr9PoXKrp/hGZKZds37mw + mb6/N4ruo4HDfezFPH7KYhmg8EngUSk5j3VHXRejLzXbI4zF1x8cv0MxZHrcTmYlylWZVbSSzHrx + 8UMNRMEJMSu7IrP6cRA6o8CJfGkf/mh4K2XBVtM1g3fIHDN6FHTcaHgLN1VJRwFe9BoGl81nQxhH + jchLkEk2nCkTPlw3KcLsJts8xRyg5Go2l1S2mxlCyw2zeYomJ8Keu6NtcI1VPAn4Tu0bObiT6Rou + uEYpiATUi8Wc1wRU009LH1gMXaHkmdgPQZtAEHue76rSvyUZsFDp0AmzmW22yPqxEoIsjVsRz9w2 + lEKjAy3HwLzCNAhGpsziFbyKIHBZi5+JOajYOFXkw0J/a8NS9Ni+aRj8vbfVAM+bloLCMOitamQT + BQvpI6Dc+Ybt0KFGWG9iQS8xGmSGtjukVpPkR4Tqo09etwvTj0lu2TGGTmaifiCLrDGF9mDzUzSh + Bbu6T8J717APiDx1aet0HO6esOcs6pieJl+yTk9TnZjpabJVgoesV+pWXuxhn4SqpbaeeHGw9x35 + 9Aefja8Mkzq9L7CyER/blpfZx5J1rmNrbRZFD0CdT3RnwUeHpQUNw6BVsmAVltBhhx9S2yQ1T+E5 + nuPWdJ4zp0scg37JMpCh6KQcyaBbZbIa1mxPN7frFJZsWcTCfJ3VM9bEo7+0Pnu++upy440VtojA + T5ernR8UoZpYtbvw3FftLMcciMM72YPG00dVhh9QqsYLSBWrrNiBoX9AzYC1qm2MveStl/KQrixk + lWMSEB3fpzzIky/nPYAMWlHbedV6OmQ8CJ873VDb6BXrgHHqwIwXF217CuSgSUJNiC5/l6dleNhF + JpIrJA8/TxYsNHkJtohbNIwpCfZIbK3eILGQUpmODA4HGT/rOQg68B2nQX8wPkBH2HX9HFEB0HNk + 8sze9ZJfSct2xPb/0cHqTQLObLlMd8GJ/STwHp6vKsyH8en4pEuNefGCbZV5ol6vMy/aSfg+f/2F + YYpXGUXIZTxmgVctNj8OHNePohH8iFTlrXeyAJQ0HZzezpPF3RQagfkP17D34aumm9lsePH6v9j4 + Up8Iqr0poHAKJxEaMtfpKpmtR1TzHO0issSUKNCJiU5rGS+bL7BpMt8KxnyyTq5m02yVz/LR8GwN + 4uDqFjb0CI7BFutJoOmDIClletR0DbMwGSerwamOpZYfUXfSqHzcSs1moFkMWVnevrx5//6dWV6i + 1cWCFODvhXtrnH6fzHKKE0SiL3WFLRib9eQ2z+ngy5tXvjLehIEsBs8pb7P0HR1tNzyql7MeT7It + KPPTHV/WxfaNnQiG0oXcvlF3Jtjz+H7uOqluENYHWdrZnb2djQndh/r+HhWwTEBVWm7hGBNzsCsP + 0ksCMAu4X4pQnzcsyRF1KdVtprFoWSxgnLoJuvSOtaQruzBFXWqUCLQwH18RX0qXJ7yTJSAHVZfc + JCvqR9dKGMqOULDlCKNmtX/uE2PoEQgwSrJmMenbuijEgXJQKOUgj3Wo0kaPW8pAgnJNAsJWkn/O + 3nysgbwAP3eqws8zkIk8UGxG8NN3UUuVcW/ixl2DVD0T3ww7SWT2fJspP4wWOKDTPtDWQb3yuFcL + huorpataLMOMDAq8Nqca1hjkXvw/dXkKDhaIjpfiZ8k8KxEAX+6cPET2E3aC5RRkneGTJF1nV7PJ + 01Ih9+HVdjOEnSWfTZbymdIjg4uLc9BRpezDI+4MnP7Kg1hSaa2mzQm4WVsxS5lznYbSjRIeh/RP + TNiB9dpulHUapk/kaT8It2vCz/MiFQkb+Z0iYeFx20hYpFyPhIVWFVVwFtZ4QlwBfsKoApeHAfNH + LgjRbrAbjiFdA/3J48/o7AUoNxI1ldWCxhr3uAOTp8etcY/rTJ5aaUHfnr2rhjYj7nFQw9dwmR9E + sJ6xp/J2T87Onzx7WhKUb+ZwWBa1xKCRLh2IFQKLh8Q+Txags80Soe9RTY6v6SYTD63hIWCB+Ciw + y4Y/Sic+Ha3p7BrOj0y+eDu9RQCxErSslPfheF3dDUEYF4MTvU6S9RU8kGfb9UTHLwOBo+OX4VIL + amhgeTbfoplXl5wzifF2UCz4oxu61c3dMufNsb5eJXwVLqly2HLMo9BhcWXbFz20h3/4lTsZw6FL + 2cuS7uDvuWUGeIYKJGw/IrQQEkhLfpxjs1RxloXCUl+QnWmYO7TznhJoQealOEq9NDlZTcUzbVBe + tQILklpfqaFwmPDx2onrR7PtqTJkryCVcL49c4dUMrvxAD572rG44fFU73nQbfaiY11mx4Ny9Qv8 + 6Tv/+52Kc11w1+lQnEs8bleciyhXi3OJVikBnl8y51WtPJcoSlopzxW63INRhK7LPMfUCidVTYgC + I554zuXTenjEy+ESVOn53RDvF5IfQUG/WOXMOVmRAbsWJgjcviHi5RLdbxQAim9fNSqdueCEbaEa + shj2a1FJI3lqXuCVatXlOEjfj1HCvL9w0HIHx4VuDh7BMg1oo+nqYjCzFIzhhFqnhCsE/Xni4LQy + 6l3G6eaYpmW2HLc75PuBHTgm8JBzCf21f7Pu/Rpltuo3+rBLWNLu8SnWx3RV2ZO4YwySfMW6oix1 + YNaTFW3Ewl7Nlq4q21b+d+ldTFoFptcP7DURoeggIHJ7N++lGnBfUZM+J0Nlt9o9Z/a1e84aa/ec + lWr3/PbqNK4ZJZgb1wyVrht6UThy3cgJ5Wpe/vbxM+IL/3OLiWpwvafLv2A8ppMSGN/lYuOuhvpB + Eloxe+6ltvSumiyel2PB+D6OV1SwHGRhAZ5+s06mhacTBcYN2eVgnuemj7QMESiBC4VKgsNKlokg + PCb3kYAelucVu6JD9uTk/PT0qbz3fruaxAdptqWrJoyE3Fa9y7ZXM/hyGMR4PvuaDhtmtVErjYCn + t2i9sesx5gSVO+0t/+Uj7dyZcuDpCSywg02bTBS0fEsUg/QdOJUuFL18BVIfEEvn2fKmng+KvLjF + 6mvMUe06XmRTTFBqyDD1gjZ7gpqMwb/Onh3g0dbGafifgfyX0rJa1shaRcCNgU/bbalfrDIvZCGe + 4jQU5g59p+6vcn2vUNlAINDgoZ2t6SyIuaEa5dtF1hqd2lhkNCDso1WWb8ZmDHjjCek0PJ/BgRay + jOHj14SPs3X4zHWYnvvp7BvFMnSxSzyYo10A4kUUKTCf3RwhL8QS8pLkzDLvUdN6NH2xoZG17SfV + tKV4JMMMte5xkOKupBpX54LErxjvGqKqXrLOBVGdmLkgspWknHz5l7S8G4z2bj2bZt8xrLiU7mcE + oRZPNMEpDZCucOUHUdyLxKqNi4E0oDQM4GCD5aE02y6AgwnuhuNjFOYL2xcNwK0kLTTNB694o04A + 1YF/dQGH097ZSI9byfWSckWup1bpmzr5wJyac8qLXVOw916MeRhw5o94GLmqFPdvZ+fjm/l2koGg + 4Y3T1YziekZyYv6iqh20x4CffUvXubwoxJvJHMN9csoMxZYzRQ1PXfHn4tC9pMBMk7xJmRwSBSUM + J1JNmiJVO5ytZZ16LDay1m6pZM6c+/OUluZsWJqzFuAY4NmttS1DkOljVvUkNcyaKfw6pi3qUyGm + YwWhyAfh9++1rgOxx7XziHNh5PJjCowTfia0haNV/Gj3kUPGrvo3Hszg+7koXNeLY3Nkdfn42yyp + LKCNVNAX6bYAFU8ClOu0huNK+x3isOrVgYRnGl/ZywishNbDqd3TINuEAM8h6TqZT5EYO/iLDyJ0 + n3XnIl+EoM9Qpz5iGK4jVSqDIx2GDoiFKwSpTJotDsog831lEPY997njdkPXlu/YmoRVF4ZNWDaS + qLL6uo2kRfHXrYyp1RJ2rWV4jo8PxEsi1dTx/AGZNqiw0+WQTC+tZghL64aEAZDI7sDxE7wXlwle + rtZUjk+EcB0xjGmGfG2co8I/HV6t0+SrIog8GIRhGZWcgYabwiP/zKjom/1Qe+/pfhC42ouOHVQs + rIkV3UPZsZ+pSJgm0Fl/OhqOy3NoE558OS+Z/pDebQqSQV9Zxsf0cn9XjscZsfdir3UH4YojI/Mb + 1OZ0nU3xJtVlNI4uvutT0ZRfP7DAs9dv6XEr/VZSrui31CoTDN9f1ALseRBVaqa4L8bMYyEWTfG4 + EPTMQApdGhMjwdMFaT4SVU3UvyTV8Xy2rtdULSptyKiGN9vlzcyMaYi5Catq1Dz14IoJagVG2x2/ + RYeGq4nFcRu+qeswh1c1yV6Lq5hfofvYka8sog4MxTUy/UsisLJUiJVxN4od9j+DzyCx3oHEekeB + hY3ul+Lj8o0M9gcddLNJRBEJUiNLD+GFJlRKNnKFPJyICjCyMmkTCko20Ubxk9VyV9Sj7okSY/DA + KdBQMdd3w8s/Z/5KlRjTjws5ZYD7WxeMCbxwIGeKDu3u2bW+8h9bBZo+KusVtx+LzOF0NENyussI + 2WAspm0Hrabrey+JPeZLRvq3DUeojWeXfV4X1/FO3Y51DPQ7tuK/6sIQ/2UjcXIQbqRtHg+XDjAW + eaRiUuGTqvmF2un5xIC8eyrr72ABIZc5Twd2RAwaw084ngodHKOITIlCWaKnl3TaoKkIalOK644M + 1w4oOY44Wwvr6K92tkHVWynWCYX0biddKcaeT2KYdoOV1x94taSPHEDqT3QnW3GSY5OMAinIWuyf + w9eks4Tda+Gb4+sAR8Shdk1TD+L6cd08TFXDo0PCClKhmfTfR8xaX9i8fqQcW0HYybEFj9s6tpBy + 3bEFrXRdfHl/Xi9q7GNiVcWv5YYcWOwIfgSxr/CK5lOKz8G6H2Oq+yFQ2kvypIzWvVyv2OqXLzP4 + 77Co/Ud4VONkniAa1XiNcCPyRaUsiFf6UBaM7FxUDV2nqizMZ6s2HxM8H5s+plKyUsSisF744GjV + o23AfeoeDX3AdvunIfsvcONqTBgEo11lIKGjoFWZsZdVrIlc7wcQ0MUuoawl3Dliv1QrRHbfJwPc + woXbKmRCoIhJoCibw2A9Dgpv6iSGV28YXyoZIjQ7OTCTvwfp+UhYApdx8ghh/UDMHjkEV+lYIbzx + s44tgCtZcUClff4TWGNkHztMj1uxYkm5woqpVaazvDmtwaRzn0emDYa/eIZgJX448oNIKGXIiuFd + PGyJIX1oAEc4cSdfznFyRNEOmKFc1JLTmfBiviSqCOr9Z4Y0kA+n6XxDWY7pKp/NJY+ZZ8lUBO/M + Z9eisiaGT+LyqZBOECNnmKj45Pz008nTIakhKunlelJHPZdy6VwF28khnWrZ0IwKDtwWXhZxh4NK + 0VSuZzJPFisx9LStDE0QtfJhHgA/iGusfoVGh7SELNRUFYiFThi0XCFh4DM3qobolhwtk9t08nWV + gfpZifoN/RZbUhyEWF+mQhLWRYxL+iNagokDbsZnlKfA9QL4ey1IGbjbBriydG2YxMyb07DaoV+o + likEtxYqZ8LSDoPD+wIDxSqDDB0T8N6wcoGQiwlQg0uphgJnIdvtCjZaQtbgi6ad9uTizfj06ajA + Put6powNpsE1bM/IwSdygOxDXYMuKEIDuT307VXbSNYaasBJta4ez44KOiehuX0LWpmBcDuJi6yy + 5XYagErX+dHRyuIj2reole2oB506IFDnvSzTalIPp7ZbanAplvYimbJwCDtUpWPYDw1oxGLznW6u + 4bbbT2NHDizSEp7I1/MbdiApKikVFLV6TH7/4DaDIFLKfMvVZrX+B5C594zlI7B9lXQYMkqAoIXK + EfIPRDRCsU6OSH8OZA7g6anHwueO28Hkq16xs/jqDkoGX9WmEMi12Qe+aTmo/l6igTV3Pc4HBepL + wBWMj887wfjA47YwPki5DuMDrST1vvv8saGgZTWwFgtaAr8MvRH3wxhr6eK3n+SIT4XxPwpv/cM4 + 0W3e+HxcsvU8fVnkyMKayogfcXmbAZXXs3W+gasjXansJWAQiyJlSdzHmP44IwxtvMQKRO1yYHu7 + N+vtZOmt5Jupxv2T+UsijrMA6yji5Elyfpct6oAw3RHKPFh9J/aromxSndNm+BYnbK2yg/A8frVu + Dwa5kBbfnv8dw/9WiVbEzGLW2+J2fb81K71xYMXKtVIM2hL2FMXBv9hGHOChLXCkfG8gZ17aRKtr + ZISg7hfS+sv6IDqlT+gjocKhmJSGmd5JtNGleSCt3WEvIi3BtH1N11uL2LUDyisMJDMQ89zKOqwm + 4wAyD4CaIlPsjhoKC/w4rO3EH+QZUVe/SCv749MHx+vge6DHra5+Sbly9VMrXf0nH96yWtSRJ0I8 + yxav4MUYBBe4HEa+xyJ05+yC8FvOoYPJanBOpUpgvjGPFiT08/feyD9/wp9WdfkR8tGFUN2lIiBs + 3JfzBToehGI/zf5covk4WSBL/JjnnmDJiebEKr8TqOJyLMkF+RUWYIPRLWWTcaXOLlmlzTq5RcTL + l88Xp1yNa3D54aNW8b04FinIzPcjOu3lDFOh396ssz/hQ2rboj2pzUVNQGzUPR/Riaa0xacYQwTX + 663g9Xh1lUKA8aap97nKtOuyi5YXkxsYJk/WmhGrLZeqCynPd0iBkGMT1xbuFvtZ6OQEaFTN+/Ag + HGr+H/TER13fIc17VT2WJWp7oVcCqsjw4YLFHRIB6XErniUpV3gWtRLPunz/q8my3NANeBCaCB+e + BzzLCyPfB54VhSHbzbPma+igAXa0L5n+EcCOqiDRcsIwd2Q1hEREU8Ouh805v3up+XEp2pZ48sl0 + GgQrkpVx4+TIQUskQMadbNd5tgaGKgMf8AmqKYFw4VVvE/JYbB9jjrPm/zX4CHOAg/NXJ9rjCFcS + mlo9uLmKqlnm8/Z84oFLW6ljFSjfV9wh/pget/V9xfX4Y2qlY/X+4+t6/LHvu1Xf1zhwPC8KRgFs + 1kD6vj4mwhQrL8BMGN0X6UyASVCR+pxkJLhllrAaMkIUH8E1SL9hifvRsCg8b/qwgRpBiakXhF8d + RfZse3Nr8DqxR39bpMFqJDFKipucB8Zmv85UWftqTTV4/v0i5SvJHODf9fiHjvCvkRfwyKvFRpvf + Wcxfk8aPqFxtXpwIdhELq0HLagkMlw3i0O4mMvibLucAt3jhn5E6889QRgQXjUSHWXeAlqa3LSDg + PAnbtsrW6qNATN7OhYQNXLmQwVBwLJJe8YVOss2DIqD0I0o5Iiagumkajq+VSEXFHd5eMNZBDaTH + rXi/pFzh/dQqRarzL0GV9zNhTCpbgOMXYxiu47NRyAMv2iNR3ayB/t9botJA7phZPjjEdKO2QFQU + G37nPYd561hsmF6yLzYsO6kUG6ZWCTCzvjqgwiqhgzVgXMlnLwVVoyYrtoi019hxeoxEv+/CTj9z + GVgXdhzFgK3SCeJq2UTst4Tsw+UK8j5yvaMd6mijE+ZH2CVjylnCIMjCNbwfIKc3t3CfYemPrXbt + HvJkut53knspjXtsVz9FlVtFIXIJfqFysFSWzpHm7X6M5L1F/fcVnx/EquC467/lXaEd9Eu2Bcd1 + J0bBcdUqb8abTIo++e32JstvETZN/Wt4CX8d4COyanggoRwoK0OjVFZjl3JQbtKueJU9hFL5RKBI + qN85kPtTUljMXQnTWBjm4YNxXE2m0jYMHh+mXA1CAGX08GVAlGrslmAibOm2j9PzyuPsZUP4IHGH + O6m2h8i1kjwC4FLTCP3dH6uGNYJu0O1NwaG2NjsnlCGWJXCLMp2Dsm2BaCAZaiqSpteWiK/3o8/a + 31NHhjS6Rr3CdPktnWerPX6So/VqyexDygD49QLuyg4oDOJxOxQGolxFYRCtsszhyVk9AyB2gxoK + gx8HmIwFP7xAojC8znNEGy3ARkf1kglnJ5e6rqkJkqyAi4vkegwJKW8/pee+1FOXk4HsbJsxiiA5 + S4THVOadpsI4L5Lr1YLKXnJFfJPKrS2U9rNk2pARUBpyWSX2eMirUfomzkEYxzpOvWwCyFDMy9Op + 3mYlblr+YEP/DtsBBoG/oKpUL68lp9QsysFaUwsMOlZZZGVPqdELbE2rXloxxrXnojW9znW8sA1v + XHcyKDZlXsThi50IW6XIOk++JsZCP8W9i7Wp8/KK5Apw4jpbT4QhQGeWffwyBAGexFqd8Qz3dwp/ + S2ZTaTRsvjZfokFZyZwyswl7Ke8FOM2Z8CRJkOoBnlSNJxHGIufskQlEx8Bqi9U1REa5MaqRDF2T + 3V0m4WhN28hiNgGmBVsEuqgsI8x7bWltbrWjwbHhzJM1TTOMFkbR+WqPTLJ7+FA/V/geZComLTK0 + ynZd7ntpT5dkSCivfDe5GC8AfMW4IfZLCpzAFizZqt1M9CF96Ihyxl3/OfM7hZTLd2xjylUXRlC5 + bCRJZHqTSDVzOksmd3OECkoxIvTzGH8tq+iE7cF4HGBu+NPBvhcGSHvgRw4PsQg5al+eK2sfma8e + HFfJ4phWRAiuKO7jcsDazmcruJ/KJAoLorYduFQ5r/Idu4NRK4bIQ/34kdD00uVURwev8eO3860t + iYjilehDVfXmjtowl2UjQPnN5slduh7n2/U6w8rNU0k5hy9FXMGrbNrZzPPD66OLmFWpAu/d3h1j + WI8nu9uM59HG7odcv0AblCjfRGpUyFcUIXknghO3q3yI3rs1+vWlg2Fc/qPdCBQHpVyWzxeu26GC + MT1upb9JyhX9jVqJa/7+8cSrxbPGWCWurL+FL54Bxwt8Noo9LINLfPZbMtkKcB6ZVfo7U0itSnR+ + PXzCw+HXs0TVT/p9kXg1hUnVqxxrADOc8hpRQ7vhnLVlOHgej6Kwptzo0eqj1w7E4bimplbO/2Uh + C11VValQenZ+RLGr1nIHJMieYbWXldwNL4gDqy/TipD+LvRzNZdFCp32uoeSps46fq30nXR2c7sZ + q5WEZVilmIcmki30FMqlka/oobx7NpZf/uR3+S9QkODAyNMA80S3koiY3S5WoCBtKRUEQ1qy7YaG + ALeK7iq/g1tx8dJE+8Onih0CfFWqgRhoI5Wi2roPcM8rTciP/JiQ9VjBVpox9Hb7N+UtJtS4A2ng + MuErLStqY01jfkyht+h2KVKWSDWdqhk/cIBAPNaOuQPIDOTBNb6RaJmn5neCC6GNMyotsJVBEQ8v + PllGHqHuUuPatTBNhqFbDLazvhCSvlBnPA8pfbguC6Ni0cyJ3vyZjfNU5EvL8yq1klEJDb+Y+wcM + GWK+Q8NWfLU4WXoe9KccnPQruG3b5Njx7h/Q394IqdBVIF1xYC9X0OO2IF1IuQ7SBa0SnffdZ78O + 0oUWGhOk6xmIE3EYjUC6CFRVybYIqas10P+zJj406x5mtFTUBrvyM0RLYY6LjJY6WNtSkVMhFSY6 + u/CdDoHT9LhdwVGiXC04Klppa3w4r+G3cXSGVguOjsXaCORmPwgibkI3G2IAKHvfZt9gtySb4S3I + LUM4DivELtmuUxVtm8vDBKOl8gByV03XMDTMvuqL8MshnHqTjExrgk20zHCJ8KyKAywqQoC8nG3X + sACDy/O3OkmVx4xsDY9D++zFYuSrsD3mnzCnY3RC6S3bwL2iGyNyTzfThlzfrnzpkjp7fXIG//9u + eJV911Dwg4tkCg9Ib/bwAh8frLFNVH4LZSyjE1LEy57yCSWnOBxPGNNseXTcm0WNifurT9FrGQct + CzOXEdXJDBmnuAPJG16btb2CnMcZZbrINZktvyX53pfvL9j6oZzTXWzkfYPEFITwiYPTh+3wZuyB + ZI+vT+GSgnV0nYiHgJupmYp7AKg5Gr6wpJgoiK5xAQBNQFsVWdhO6g3+97sQbk4u4Ma0F27ocSvh + RlKuCDfUKuXek9/CmtwrFNKycINVKcIg8oMRjNzhChenSP87T7YwvgJnFH5nClxUVqRItuH91TJ8 + BOLvebIWzi3ujuU8YOTuKtmiHWoJ99lcoNClclpGKsNKSmXJfJLdCueHkrcoiN2AEkmWSbrOrkT8 + 3Qj27u3saib/lH2/A+r4vEAhSSUc7CId4BJr0dwJ3V7AWx+JoKeOki4QwJzgucO7FQiQ79gWCFBd + GAUCZKOU+ZP1qwkBn5HnOdeWxyeXH08uvjwd5Nv56hblbaxCqxx8fsQ9xjgmTXwn9H5YKMqZiAlj + u7xe8OY0EVuobeV2ldZljhFlbiDZdyDkuj7F/pVqX1hsqQIqZ5VssIKNJAe3DBPk5MeJrKvptqUy + 4gPnnD2UGLTftWk/kgPzlguR7MELavWDKcMdMW6E/hRbabk52OvmEawCksloMx4hRKACJmTc7fxa + H/92WjsOXkdKO/16kWafwWnQrfy5fseafcouTPZJjbZ4ewUVBNwLQbEdPHSqqZo6kb/wx7sLxpm9 + 6ZIetxLhJOWKCEetJMJ9vHxXs0+xmFUS+50Xz1yfh340cn3X5TL05HJB15Q6bNLGdLsG8n8WNiYQ + a5QYpOUrkSi+QIg01QIPitwXia+7vKkFsp5frWQgK/xLgqLBYmQTKl8lnlnPrkSEVv5SlTvDYFak + PFas4MPlR3WfCgrL4cmZbHg5fPvmfHy9pbtFIWIYGPkiOBJTA1HhF6LXDQqeHz9eDoAwK4IOWeCS + mENyP36bBV7awVi09xB09rBgF8WlQSEPaiX33xp9GOsiR1qKPd7JUoyPW1qKBeWapRhbZXD5H59q + weVO4DZYilHJCv0R/hQ3LJ7F0xJi4Ryd2UP4AJiM6d1SxJqX4/gWGerI5qk9u1vWg7tFaKaJYcEN + 30Kp6noUYMXBumuh1m8zpntYKQZy2UxY61oE+HQNEguqO2Oc5Kk+VkYctFOJQ3+rY9Bh8oD/V8HN + SyNuJwunmoVtZOWAByfnY0YcEujguqTbCeZg/jVbgVo3fHL13+/Pn5rZtWh8J2AMmCkjAYCEYSUf + owIHJ6iEiTkS3Gw1R7sh7EB0ZSKm4Bpd4huE8HqpUCMRuSdPhbpJ2BpmP6KO4F8l/DXgpYTlg4GY + GESSFyLkly8np19OTsThPXgLvsR/rLKcYruvUmNAyHB1uLsMvVARuQJMQoGvnZ6cMTEOPEjarxC5 + 1Kh/5T9NFjluMaEht27Ie6e3E4mOhPudB7EDQc+PKTRvJZDHQDHdMbGdktDbriovCKJaVuEkmS5U + Qnen6e1OrTWpjlPgSdMu74ZZdSTFngd4iGzTYNP9EZWlKcPT+N6HEYYOlcFIj4ZbBhS7/VJUIXsR + pEQZ/pi4dy/F/47MKEAKfpWCVgCmh5VAQPhGVv3myhAt8JA4nf19k9Vqc+qh0EDoNJXXpPoQB7pt + gCZXyovJaDv20ljSQEaMVaTCriMMq3facQT7MCB5rh8U6Q1wNsYaSuXg9cVK50b1UMsa57ssNxGT + 2FKgWXTBlsLHLbGlBOUathS2ktLz+uItN8Gl4tD3XdergUt5cchcf+TFkYDA3Q0uBS/9q4BLcRft + DIjGKMQxRHfvBvvzI4AtnV695hGja4u+/VGlXXg8IhaKa0cb9SgzBde1rHnU1dRKr1hXsqYOzELW + os3ezippINYJDuLYsL5i23UisUfCosI6zbR+SBBzn77NyP3fXIXHRvHp+KRLgKx4wTZElqjXg2RF + OzH7T+/Og1f1ONnArxWz9XjAvHAEPzxPMfsikgynI1kskvksWVKg4iJDowUcTpGYVJSoZcIowl9q + M3MuPIJLdOmAiiJMxmhQQCLweylaDbWp0RBHfPJS/Hlc6QPhxm5n+QYBaBRWybJiVPt0uwqumsFh + k3XpLRPKwCyyUrKEMYdz4HVx9T4qCDVUNcTSUdyKoL6XTCB4mMFf6mDwRZ/JGljQJp2IKFGjMIvL + /W4d79X4z7O5oeab3fltJsQ4CnnsVXOJLHtr765qVxwZGAvcjb2gWhG45z7LwBE8CuHQ/M/gXdfN + OtKnI5nP74oDQscD9/AJ7OHbo86f8OLAe8DM19vZpll/uJjkbCXMJukaXTd6EvKBYB1FEeHYKxv1 + mB8Ko15PVRCPDRF1S7aGbA/QeGMBRdclLVwv1DpdZNN03igttIa6/gwmTtzQezpoMfV1tPXdU087 + YmTuJVL4no2kjfWGjoWMOsRaF3v6ALQ4Ae/BbPYYxLZ+TEEif+SXBrlg5zQokdFTeQsgfD13ok5J + C/SKbcaC7MBIV6A2kvnSpYi5HZcLQr5mBkLwbTLPhOo4TfGfcCDxBeF00zG75b5AF3GDgAlV5NHX + MQuUVjvrq/gYiNtOXKGaJ/NvyJI6mAv+HSF3nAFEv981Qq5P5GE3ouj4Ivn1UNCLmKCsJOw0ompk + GHU8PKKQa2GK6ScA33Ol+wGOJ8XhZSLNHk7Tj8exjYpUsTfRc6cLtpB6xTpJjDowM8REG+nos3wl + A/SNqID0+zZBlK5r+CSBGCdYQdXmgy8La08UUuTxftTXtlje/a+2I5hRaKMI2lKC0SRb/nMrcdq2 + K0xNnBEyA/py1t/aFIXa6HRl3iiQAUOO2yH7gh63DBgSlGsBQ9hKS3VxcoaFJioRQ9x1axFDvsNC + Lx75jsuD2MwsNUItytLjWMEoSCWolCaVfp9NZrJUqfgbTPBvv49VlBwKLnOB2JprtREfoSpPp5cn + FSvJRTLl0WEldE51zE3kYlrCfVnqS8qgoY+DrtiCsagG1FhYqyCHKReUoCEBPOqTpGrqHLZSxkIN + xJbRsTGeK/XmYzVeCwIPpindQ0TBbgtrkT3Czxh/7ngd80fUW9Yh0LobMwhaNRNzWE2+cpsCHYMK + nP7p8Mn5r6dPSYI+ByIDpCQipQOZ+ntg4Yn6xN9XBQu4OwJyEOypaCniG9trWLYiqzPp3hW1K+kw + dksz0ZS4uqtEjIEqkqRrYk6SfJJM0z3zeAgVC6nODRqQQMWU5bdJE+rzbnWGk6hUBqoRxP5M5gJK + UMQidrnoHZnWlMxB+BjfzLeTZGmpIrWR5LHXYCXqtQPfrXfARu74Co76cX0I/SAmVKWrZA3MA7MI + Vxtrt1rAG7ZRp1V20eEpdAqxTew795mMoBEvbmYrC1Wor/ztn60CS9gw2FPL7OFOZB44bKaPKiqc + si3+mi0nh2vGj65eCoslFtm0CsB6UCRRT0prrKKHgqhT9BA8bhs9hJTr0UPQKvEc332pJy/5TlAL + HgpAfuHBKIDtEe0PHgqihuChv1OyuTyk5ah7lSmuoQiFSQquY7ieqpWttXvv6k459AS+Gry5vZr9 + n/gVMwBww1/kK1/49GboAEzWN+lmKKP6K2QHJxdf/KJmHqJA9VaSkcEGwDeK4enUZRrmIcE4MeUM + vb6Ai8g+e48etzoAknLlAFCrzBn69KZ+ABxWiZ4LXzyD+zV045HPQk+h/3wCzTHV+P/nZRTCoo4r + SMcb+YSQzqVcTiDDgrFh7jfiFhpVJRqWV3iCxQ5Lv+PmApYCFxOVepX7DSNv5dM5EAQNBP5Wq/U8 + M7AYKXlpeV2vwVvt36zzEAVtjnTOOTrvq+e2/OVj/eVNWHZGT57DWqMvjJ70wTbFr/onGwaI6ncU + WUia+uBk18INn1xD2woxS2nVi3WEHbkAzQjWoHlFZULR7Gq7oVUvsY1Rw8BxAxga18uh2HOeufkG + uKm1qz8OIqFzyiJBJBoc7VvBeauLug3bq4sZIyKRqsw8u7zfk9La3gPzY4JHqO+F7vCoHuYBNxOj + c9GkC7eXVSef1EzUVFhO141vN2cs0EJWD7vNy4/E3/s4q1I6rLa6e7jew3ew4zA9Dn2E+UHAJQUT + 7VSZbJGzGjCvi+wbKWpw0tGCPjJNYd/SQ9FYe/OksSCiY1MnRLBEWMphSWa8ZIkPwZbOFcauSCxt + /+R8e0XZqh3B5WOmrLAue4Nwh2EnI6x6ydYGqzsxTLCqtQZwVZHgTj84rvePwQShcCeiwIlSKT7k + V74R3mB0hpg+Lg/JCHvoDbbnXrS4w+yRGm2o7UtZleUUykmmZpWj7uOzzHjY47n3A/V+ezWa3SRi + t7CV4WbYVx+n04v7Z0EdHa4r23gef86cLv6L4iXr2jaqE7O4jWyVGKWrK+mEFsGFYgrguyqhbE/e + v1e1F54OnyjsfvepBMSK3CDkMXs62EWjIDF0q+/hKNDxEUUs6LH2ON32D1ZT+z7SYcn9sXte8Y4r + pQXXumhzrtwPaFRjAuLxgXZRHO+biY5JkUdRvP/MxnvIQoxdHfzCXrvPBYROh+gXesc6/EV2Yca/ + UKM0i5ycvZN2oiWGCE1TBcpfrsf92rilBTDGGo0U6fYr9JlJzRSnyOgWYbdi3x/0UISD85gSftVD + JUKEu9GJXF/YeUeocnavdonNs6G3J1aQMv9LNMS5WKaHFrhAkkGdJMY+zARTvztk9Q5VZQX/jMm0 + Ija+udsP5jQOyaa4Kw/XQSNGIlrDwJ4UB/TpoaOMHUpu0OdnIn2mjwHq72gnjTrWTBoFYBIPpeC7 + ejXHiBe4XQ8n860o0n0wRTEmLmgCMx8eRVbdI1Ts4dMHJwrtzfH0uJU5XlKuKHPUSnLrl9NXNQgv + TwRnlMH0ghfPvACxWkdeAKOW6uKpgqtDTzHWSphP0IQjrObCtqYmhaDq8pcCPq8ClqSOP1pSrq9n + k68CR0+ZdHWQ2dV22gh1t5jdrAWWnphsfJL8+Nv1NeiYuly0Vje/pTmWL8yHS8xnlIWDYGAosMyU + u8foVhQFwH+LZ4obi+pdyW/Br7y8TRGP7HQM+2ExwzAbUTkGMziz6+GXyRVbjfAHJxxA+Je70gKL + dAuIP1fdAjgIwxUQu63lUkBCjOEaeYQuvFfbaQEqoZZP5OuVXTbrTJQMH5aLCBXb4v42gIZedK32 + cft2GeCJ0tXLHJfyNqyNvvvUb1dp0eJjcGfYSCqPxG4cccpcN2e1G8v0tdXsVfScsW42M/GKtcWM + OjDtZaLNHk5A0kAzWOwzqZIHTag3Ter0jrw3K4uRw7hG8jToNuay9oCX9CghP3sGfA4p0MZuTttF + qb2TqjZ8oDe8c9a5Jk/pLettr7sxd75qps3vj7XzxxAZn7z/eD5UbP6poXLiX/z/MN+rGY5158Jy + 7Hl0ZFjs0Axm+c70L+udGjMCFix5sA5NqTvcpPUDM6l6dK2EpEMcnzjlOx5Zapo2Sg8HSUS9/3F6 + wbpAR9HjVsK2pFz1nIhWErbfvq8Ff7FYpEeXY1/8F2PX4V4YjVyEadsT/DVZsybkKH07XytzWAUU + 12tFZYhdH6v3Pj4Jsii4F8SRBEAnd2f9a/cepj4gmGOFI3/+n14QeMC3urBm/ZIlZy46KTNm3Upb + bHG9kH6Ij2N5BwGLnWzXOfxLegtYHMDGezpoeOIjvD5AGiInDjbCoJfqKfKEu/DprWkIsi5MOe1N + aAda2JWCP7JZKs25qy5YH/L2MSYqn8kB3KYowy1NDrb7A/QFsZNGB5k5LvJ9TnlXoVm+Y5/rQ11U + Mn1EI21MzBiArkFFTsfja2TYWZ6OA50yn1LcXjkGuSwmwOsbernxXfEa/r1JvFCDE7lBnDY3XAxi + T4pSj3gdIpVj8+sDh8rjIc7QzDY7wt5LDWcTX9dTcTweQD+4AnBifFabzOOj3zy4kQjz7DumtMKk + wDwlq1wkpIgSnzRb6ePws3eU6zypEXba2QIjdy1Qz3fZk6331H0OYo/pnaYrB65/oHnWiaTkaIzu + x+VAEN8NHEe7CZ2QPQcxrZufUL5k7ShUnZieQtkqcyw3ieTCp+dvtMYvy3F5AQsjzp8OhHkLEd+E + liVA+kHTTUASU8mNSsPDOamYD5S/8Ry6GmB/AsDEdyNp/aCy4QulP5epHsERXUqsM0d+DD2KA1qY + BV66bkuH7HWbfVTs+NIPsK5EXlif1o4bYjf/U2dFRcOdR6/C57yLR129YitGyw4MIZra6Iyk66l0 + rL87e/2hWBvFmspChXgCviZdYXALvikMF5xJw0XAdTl5ql0t7NyZqB30+mI434K8d8w2PYz+noC6 + o5z8B4X5NSRaR5HgE/ARoGy8zeY3M2W6Hy9g+gmAoH2ItlPIfCmpHRmHyAJG+W5dBrkjJuFvjzgL + RAkyjdY2Wa0SLNtux9YegT9DqbQOC4Mqqa7zZMX+PeleV9zmUDe9LwNUm5nbwQfJC2LuyhNbsKH9 + 9HcKUFwJUNx/i3bhLppr8ZKtAKU7MQQo1UpXQrksmwqXamoz6LluwDyMEnvoon3CB/QIa4aHtFUu + Oocxqo0hAvD++HjhBKG9LZcet7LlSsoVWy61kpTw68mFXw2ccENWCZzwX4w9UK04H3mg6IR8ty13 + sQb6k9Xgt1f/peKFCEtVJLpioNV/PZVO6LF0WJf2nEyBNCsQnk4nXiQoesp66gUhE8KJzwQT1B2V + MFEVScyAOMoO0k8frXgaHmFH4P2qwCnWaY6lp2FeMP4+Wy8KUIzClpg3F8Q5CE30p69j2JM5PHAU + DOc5D98y1jEuVr9kya6LTsrsWrfSSdsZ5krAVdPsz+W4qDquSpeD6gI7E66udT5mGhOMmT2jkdx3 + 4wdn7Meu+GGmKrXMPuHIfXCCuAOOnHjcDkeOKFdx5EQrMd/TV5emI80N3YAHrlPDkXNdl3E2gh9C + rcE9QSl7Yh6M2oWYqHqHEa5rhO+9kkz59CqvJ2rvDK41S7V4RqjWl6L6ZMxAeXOiqp+tNLpqEMGo + +e41wByY61cce6MKzHsYCZj3iluuOPfSVouZT0betmdmhTd8yeCjMS075hljpU4/vxJ2hZc1lIbG + i0xTgy/WJXNHhNKeLQ2K6DzeLtULsJXnaTJN1wPcNRpJjnNCkvMoqbM87b/YwNHAiyGJ4zU060Nq + 2dxzCPoPCBm3ImnhBAsDVqfUXmp3Z5X0w/15eLCq+8TueO5cRsVSCZrz84UbdoDmpMetWKqkXGGp + 1Cqral9cBrVA4NgzgWm88MWYOTxmYTxiCGcWS556kVwN0xwT+0olGkD2QjwOZQfUpUsukpzA+vIF + Aqm9pUzjP1YbLKUgYTzWoDjOxJTBDAskh3VhbISDRk9f3WmecQOLDQ/IH2XjvRAY378fPnmVbvhq + DP/1Vk8ld/+4zoPjq27F3MEV+Z/WIIwSHbEJbegUV0J9cpuBO3wn8tpYdJlyL7gdDcQHP90uGOCu + 18G6URzeZ56yNdW9TNFznajh8nl7ELzB4cXULPhpLerGicUslIea/ODahyyUWTu4feXASnTaV0Mx + 71BZqTzMeu+WjVy8ZGul0p0YVirVSux4gTOVmwdAO/tK7otdz0k/3mh4slzBVbdAVB0znqI0FnTx + cRUt5EUGUF8JI/UTnPjlV1gTAbieH+73I8sWZfkQ1iUbBeNdn3OwYRP7CQtD9QTYEvy/CEM4jmhc + ED1Yyvq3m2DP11m+fB9hYKXXe0ieYEHoh1oCrcQljHSriKFTp4tqW3XDJQkcEdT4x/kHFnN7WZQe + t5JFJeWKLEqtJIueX3x0q7KoD3zFlEUjkEUjHvjeiEWuyIwUKPEqWK5k0yncoyVxQpiDbpLF3cs6 + EFxFUZEaq6qCly6/pfMMrZBChjxfL9zWinnNVoGgQUsvFWLjPvPg0+4rBFd/eaWKn8dsBjV4wBke + 4E5Q8lnAmDuggQqVvfiMDqGjVnZl2Il0tZQDXosozPpxqhddON60F5DCWd90lmbFsPz2Mcr8Y+B/ + ijcRgOuvF47H7BNm6XEr3iQpV3gTtcoY/pPzGn4lj2KzgoXnIn5lGHnOyGeRH+/x+3xdA/0/+67+ + 3LUyxc9VRRrLgxxhdu+m8Kj9xxxVmTb27PcfPW5blRYp12vSQqu8G999rvodWeyHTrUg7TMPc0vc + ked6XOGntu2/qzXQ733/Pap9c77dEBbdBtSaOWrcd2tKJpNwurDO2YQidsTdcT6+yqazNB+cv/qj + wPbkMWF7elQim+LiDvZfYjkJA3l9AV1eqyKg3dPQnJgALvXCITxtJfYQvsoS2KfrGcFpj6SVlCZ5 + XJvkH6jl91aWq9f66CDUCJby4cJzOrAUetyKpUjKFZZCrcRSLt/UrzTXcyumX2ApMY9ASBzFPPbj + aDdLma+Bfp2lNMoAFeuoKYWWwYd97gE7e4Tc5TKdrUpgz2V8C8p1hy23mqcbGOsaoUOzG+EtWFyl + 65EIp81BNn5poJtXYDKIjErPyBcvm6swvbo8/cCHf97OJrcCDLvC1IAKHP8ctjbsyMGbD2eas3lu + HMAJhmUvp+iDvrzBaMY9aRWNYRNH2yYegdwpSblcJtxo/MsDvqqvKAvGZREDFnUqYoCPWxYxEJRr + RQywlRjGq99e1THcAx7WihhEIXe8cBSFPtMRGbfp5Osqg+8SYLjGJl8hcMpGuHiBW6wRSR3XbEY4 + nBQ5hH8U5fBw0+sq1cImi1okLAjMLV4/iMcqeNGr7VXdgw+6IhxfPGtGbXtyKn7F6lPobayUh3fC + MNqJwc7cmui9g1Y7nnsYxJF3tBgfxkHMghq/rG4+k0ky0zJx/r55VHVy1cojBqR8YNaYaBuk5sW4 + 5hiqkwNbnWIkTrFrynRDkFvbnFKeB4NtC3PYUbfLDHoI2hZcjVuXppDfL1xXjU6vj8mUEfQP7Ei3 + cHJN1tsJeccJvqb41AI3WdtV0BABhxJ9QYSleofsGT7rRlkgxJlJlslKVAlVhSvgr6lEY1dzSsXq + RsUlkSurCZw9zOtKBc4kwh9dfl2x1QCPva524XFHiJyOzJ4sBlP6gI4usiOKqzUWUL+3Ym0O1dwq + fXRXAmSXVtu8REitjmZt5nTu9Q26qP3hk7lwUuiK2qLAMzD75abDJY5MSpjaSkzMauqRU9KFaclm + LalGzj6qo2L/irv5xj6U5icNzO5cDKzpO36qimKPBCr/0dTcUpKhK1VJ7rtdVEl83FKVFJRrqiS2 + SlXy8lxgTlWUSR7xmjIZeDzg8SgAlc7dq0xCD3Vl0ox5q9io4p/PRqVtmx733MGBgYHaVOnp5GP+ + CtNQOpboli9ZJx+rTszkY9kqoxIQGBR9GKsG9KfqH02qhEIs4wt8p7jWs/ldd4z+OCZTUDkMpyvi + 049HDRYGN0aA4FTpSk/sgXw14mS+k2uRfu+FZFgiaUPPOnWzL4sesHGPvjtZ3mAlr/RwYK2eShUG + jILszy9gaPa8nB6388IT5aoXXrQSLz+5/FTT8hGUreqFfxZxZDejCLiWK7X8kxxDLW4EWBtBf4iK + a7M8+wuGhVrISb5EpFNZYgUdw7fqWVnD78M4KaiICZMtQtefKQuAfsSEGUk2t3/imRM3CHTWYALo + y72RVD5WsLYCR4O2510FJMOsuBaYtoCP56OS4TOKfRYxv3LRNH15LWjf53GLfqyIDh7LUg1wv2lf + v+vFA/kBgr+1vXtgVtqBVHfVUnusmDxOFBCdkvp7xBweEC46kFu8MuX2Z8VOg+m1hwfwR0WkIx3m + GlPXRKAr4bix+9wJO1bCkS9ZV8JRnZiVcGSrLSxuiY6oVRORIz9knMoMpLMOdZcGj8JRoKVuApl8 + 1804/87eOP+u0Tj/rmScf3v+ntUyOVhc1cCcF2Mvgu7dkRe5wm2Li/fFKHOm1XcJ6SOjtFR4oUKF + mk3v5gKadZPNNQTTtBx8K0ydyXSaD2F0IgZsmf6JZnt5ifxVhJDlL6Ur6/z92/GXlc68pIv87WrG + 6gkbHbAXSrejgG5oRcH0YcaYU73qYfjjZIkmK/NDG691N+Zu7VovGdSNPop7fbNJJrequhx0OFQd + ZnpBDI8p9/1KL7UeBo92XQdiu+qgHu7K1HQqx1H6+uOvfTFT4oawmGEr8+hjD55+BIxRqUU8pApc + bQeoNUz/fqg2XcwDeWR3EWy/pav7Q10IkbTJuX4H1GF63NImJyjXbHLYShfCp/dfatHUrhu5VYvc + OOKxF0WjyHXcQILIfpqVUrkyGaj7pz4mOcr2ZtfChVTS1WV4AhIi5AokAb+9uYUWMXPXwDDQK/Zn + tqaiC/KVRbbNCWyMGEdpLCrCoZIiDC8JspvtAm0H25UIy83WL4fA5dazOZXDWqVrmc6CexnB9cXV + AuTrYdz9hWD2aqzcXcdUgG8ux/jNWH1o+ORquxnCrhyS9SV9OoQ/T3PzFomYmZVYirthbuTEUdif + ofNfYVcN8NgV0TWeS6mFDoVlq6URG2S7nB6s5B2evXeQcbnforzMoiiv7WbupjbF2jgeOX7HmgrF + S9bGcdWJaRyXrRZIJQJAkv/H+PMYuro1E9y+rBfMNUzpG2wRJnNX4qRbA1HuNpN6hMknqNBAjsLZ + /SF4KY5+O5v3GC3eLyJwxChyob7ah5rhGYVplJbOjmoHY3xfbkzuyAQ0J+oQEUuPWyagCcq1BDRs + lQFuF5/rpm8W1k3fbuzB0Rq5ceAHsiraq9NfGSW2r9E8KkqD4+WT5QsKabrNJl9VaNo6O9QuXTLl + Mh6g1yGoyRyoS4hIC5NQa0yTSagQN8ycdZ2rXi48aPTg1cLkzEyyci9anmiqCWDEerGgTc+NAi92 + gypBG8yxyiQjXFmbLs0drIAXVTqhAmLlWakEqFWi8z6ej5pWbnBaCtmfwM98+LqgrfV1DD9FBNrf + zy+fKvgRoYNPsmw9nS1FENc01V9OPEDa3wWslYAnpdphmAjw5OPvr55qZ8nVHaJLrsWrN8OzLPFW + yqQi4HYGeC60iR4WukcYudYUiSPhaHEF8JWGhbIeQ+hHgkY5HXC53YhoKmsq/SHN+oR1rejU1ruD + 2wI9dkaMHFW0w+WHb5TV8VR+ZbcVVmUTYYcV3jgrq8phRV06XNb3cseHdGVrnmvZ6763WqV+LyKI + pWJVzOqK3WPA+ohO55TOcnbhOR381vS4HTgcUa6Cw4lWhWR0Xg9BcgLmVsHhnjEehiBPjuBn5HFp + Av/YBDRVSvKRxtI5HhRtQVVoQivu7AGLo/cKsopC5YpuxVrzPN8NaqhxJdEMFYnNbLOV5k2NlGVY + pkMzAb2tg37g4STFwSEzOxCrqVHbIpECjnEIDfBibeBrBbr4owBbC3h96G27wm5YEYne7aBou9U6 + 6Q3H10kx0ky9k1F2IDcWPm6xH3d+muImlOvy+gNIGfbchB634iaScoWbUKuMaKzXbONOWM23DV88 + Q1t0OOKx2JrISN4gGkf2nYIBXpXF5pGyPModf3LxSSHsKAxBejAn6U4x9mQ+FxJadrOc/QVHBM4a + ZnJl63QsCpdPbkVOWP6yUoxyhhY1kKlhpuVVLh6HW3yN8Ev4CBrEprNk+11oKLPrzcuiKC90Wo6X + pxN1Op3waCUZ3+Vss0OPAZISFb+a6tdaxtgJvcjhdSuqlUZjCNgsDlgDvxRTR1CfNHdPrkvL9XS4 + XW2Sr+leXYf5rlcT8Eu20ziCi8WtclNdZf4Wus9ARaxx0yismoTLGlQ71XH5w5p1EuZHMW9RchTh + wb/C3h3g0daZ3WFMnsejq1+QNoRNh9Pgunz9kYRCnacidL7GjWdzx4hNIxh7dd06qFODwwXeXfLy + 3pQYhgYw462f3Z0qeKehrWCmvyQ1vkKPApBRTHevudGX7na9PQ7Lh0Be2LhHdvDWcp33Oqfdu6WU + nOCqCof8rd+tTIR6xba+oezAKG9IbXTr35ZzGJT9/uy3N3AJccUoiyIRmp6IrA0ciST+4Lhu9iW+ + /x3yYBsLxkUGxh+fPsCX2rv+6XEr4VVSrgiv1KpV4bAG6uvyih07eDEGvd1lfAQCt8fDPvTg8B7U + YCMZ2Y2579cg0sgp2OLcMN3SnmmjvvyXVrFD7amOfWcHLno3zITDdfSAc3kKS46HrtzlZ9bzd2Yu + /j30/T0lgg4nvMs86SuDghfY82R63NaggJTrBgVolfG5H/5oMCjgTWgaFMZBKPIjQYaXSTUfxkUC + bTKfUswEuX90aoYu0khZGfN5Vn4JFKUyEbjbMOYT/ynDa+d3zXo8eq0N1hzx1pglDgMPonphi/rY + m5NhwrjNLBCzwI2dqp9PfcKOLBivCrepKLpOFCCGhEmxGGqrnzBoCwBTFAdfat87qqTQHLhWL4dl + zJSmrx/gHis025DLVBrBNUppIEdXufYpb642hp0xuo1QDcJ9/kvDzFsSGhwSZuFG5GmiZdmIyg2H + 5buHsWsOv77HrebhIEK7Iz9CwoSrb7CDRohqDAFE3R2VcBmKvbi6W8+moBfOh0WF6YPSJTkV0PjP + C+bF9oZietyKr0vKFb5OrTJm5OQLrwGDAiswZW3+4lnowP/6o9CJOHL9XYnv/1wD/b83MKNOendj + 5lDs03FpbwcmqPXGC3rxooYKyYE5nZAc4HFbJAekXEdygFZZYuvDK6+O4+DGNRwH3FnMGfmB6ypB + 5X3pflIQN8KIS/NEdbXmV14zavahOLUlOgpEZ4XRCyLQxRReWGveT8tBQWyexrgHif2hSzQ2ewkC + 3615KMwT9Jb9cknK0UxMkoAyq4EDmYcpMrVjs8wXsBpkNNVu+C8fO3cTdO7GrEtCkzdsnbwWBT2s + pS4PXo1FQI0kWBaDmsGwXqoKI3BspMOKcnwWMAAhg1Um5OVwgXFQJiwdomCt09VcAbMKwMaVCdOE + PU22CwGHnitPxeWQQLjwhbd8hB2qCBtkArBbiuANXS96inanKbEyPIQFKIgjEbcoGEkRb17CGrfZ + kbqMS4wv2G2OLpR7AMoiuVBhAHZ622cSoEd0P50hm7PW4x9vRcfmEAAmlrDO+HZffOq+iZT93D0L + njtel3B4/Y6tBV11YZjQZSPdPYtkylRU/GyeTsf4w0SLaccHVMwF4fYGSIls6xhE8sN35H0Cvx29 + 2+8Hs+2BUdV6kb5idRpC7j934m6nQb5jexpUF8ZpkI10Gm6zKxlRkixWtzMx8OXg1cnFEK4JUQle + few7eHKAj4vCtCygLe/ENCXIUnD5YNeOcJE34qvnaI6ECSoqJdemqi0sFgiLo3CVrOHTYEemq812 + sYvSHm91HCp3kFDhm05Xa4iurGovEoeG17N5Qvm9O3GLd95cB9BrH9yxTIcTTrxRKk9LDE2R8x2+ + 9fhr8uj0GD/Qdpuv8Oims7MBDSfFcmmY5lWymdzWSdl6O13mxBK9akr+lH31PPWU8qgEi4pe7e9C + EsZfN7OVhS2re6G8Hbu5J8BESyK77VFOzM3FtgHQ37tiknW7jmLdkQvyRCfGLd6wZdtE3mDaoolY + drKaMBlOrJB4x6R1UJ0iWYnv5Pz06fDJ+cf3Z0PGvTB0Y//pYMcLylt0IsjXXsRWIewEvj/oMTXj + vrFwjxComDIcq8+pp0LsR8zF3CJ80tRalYiGdiixIL9oUOWSjlQebeHD7JvyfgbIJIRd++6prn1C + HsjOe8MGgfihxvL4dUECLN5xpu+NTr8Zqf0w/z6kc1cVTHFCtwuiBj5uaRsVlGu2UWwl9n7x9qJe + MIU5NYzbMY+g1RnBDxHQsBvjFuhPahbRzimcP4GlHy4oBW/7kDlTav9wlaHEY/v9Q4/bZigh5XqG + ErTS/vny/o1bLeLFHVGyz8xQGjOXe17gjxhW11XeoksTtmmCurhiAyoGe65SP4Gd0j9luqj7JIXe + n46KIjGwhhQrTVW2ywE6Ymt+mV27fn1jFigFezrUYzNt8H61IkQZGysOQuY7rBZDsLOnZhCu0GsN + Jyh3Ujj/iz4E/9G9VGKx9lEdPNQyDcR2KlKk3LCXAC7xjRUK5oTsvzQicuUdsFf20u4NPt8NwoKQ + cPsJgMyDSIUUlY0gC4dS8KpzvmujW/HLY2ne/43uKjQWHpx0VNv0O7ZYLKoLA4pFNhJ3Xq/mQFxe + 14Fz2RBG+YE7g9a/JGJu2l8E+ixKxlw8JjoTWC2OiPz4ZYj/DrlU4GwOsXXs9uEsoceYzIPwV7pI + q8VLx0RJcowVLPUJz1jHblqblx5LJKb1Duo93FNxAFms4PTcZQLxP+gCY6tfsoSxLTopw9jqVjr4 + p1wiiw30v/Qp/jK5MhGXDKLcd2MvDI/AtFX7w/V9T+ms4rSVAShgDZq14MOKUf8QV+a+9JAHzoJ5 + 8GyVgzhbY4rLMluO9yfC/fjkGG0jigOjvHnXHBu0JPNyqcrjTce+TNdxWQfYKXrcMl1HUK6l62Ar + SR5nJx+iWgyhJzxRZr7OMw/+Jxh5PmfSNXiOML1Y37iIRAJuLEpu3CZLQuGfbicz3B3oKMhfihnD + InXTbJpOkpIcrWdsu0ImkywkKXpRgv6uJUWye5Y7Iq3xLJlH/OgALyd0sLp6ox6oUoRhMRvcI2b4 + VbAj07zUQwHCPJ8ny03WjhTlcL9askGTjOIo5rxJrSyymkvyN27Sczj779+ryKS1qWu6rcHmevSD + x7P+L4VvOUEYz2Q5/O395cmHDxhCNZYndARdtqwf/ELlcLFyYhH4Ie9hcTqUmutzX1TixnUQltHa + gh2CNeX6RfK3XquOWrNLINOmyd+gOBLTUZi4u3YgQ+V3bigB9JjNgSOJHLjy3tqvtneRFQbyfNWH + ZOOzbMD8cAMdi+R7zx2/YywSvWMdiyS7MGORqJF4cr5OpSp4Vmj1A51rvUk3tyl+jvntUqkuyYjK + XcfCGPas+3SAhEWchuN5pOz9+N1X82Dd+3Z24fyKW1yDV1Umsutm3okX7nvkrNzxNZ004to5sRLD + flCI4HHi+COQHQdkrRNfcbbLxNZBn3UajlyDRWz/mgIpz9jH9U27t5duSZxRfeQNYejd9HDKO3j/ + wfGYvQxMj1vJwJJyRQamVpl38KruW+PMi0wRmBHeEvdGPAx9nHnk0G+z+c1srGAvSjnPykWlJEgQ + zdZpCr/Ptxkoy5Oyo/nJ2zfnT8fXW9KgZeM8myTzmUjcIxjx0iki/91sDt/w50rE5ZHAMpZyEG5R + Da+IspNB7Crb3A5BA5Jw5Rg/PhTfoeA7QFLT1Z/R8i+C/mgvCIjG9R12oOEooVNRAFc8kY/wE2fT + MUUXlCLrRrg34Sz8VXDB21SFT5XisEgeU0CQV7NMyICYYvj7uVvU7XAdiW9+VAgfgVSrzg6KtXOd + mG7RFE7oFYjtss4HaJgJsp5lIqtg1z9VzogN7Ag5IChJnBbrUP3/UF5OYcTUd7LCilebrhfJkRwd + k/jcKkffNxkHhxXsch/oEhteB8WdHrctseHVFXdqlQEB5x94cFIvsoGepUq6VMRiRNqIuMM8KVie + l4y+Qk82YRqeBM7l07rdeTRcEttAtZDCCWABLlZzHryiMvNw5is1E17DJ4BqNPzAPfHEELYN/BLU + PRVaP4S3/OfR5XCN9xnxOtFH0pYnvsNS/iRPl/l2+Fq4A5OnFYew14pu4fsxxiVUjABlL5vp8W3F + lQtgSZgb3iO0R3mox0F7DH7ctui2Kwa0+4taF3Av2HqbGnPBH4Ob6siA5mNcT8yPST2wdjjdlyOr + YXV69llZ+MubXdr9wIz2QW+nPK3rjLhv4+esY5kR+Y6tZ1t1YXi2ZSNdNJv13Woj7HRjUQhClp6s + JlaV0XoaX/iY/8nMt6ABbRku92J7x/W+6JOi2IjArEgmqt7IdSnn5Zge3IDGqD7ybj5u6u5w/fLw + LnqEVrrn5I0fXwi9I709n+NXaUBfi0QcPftZ7S06yYtYUbwX94txEA+FK4lcx9yWllStl+LgHvYE + GxFGw8mX8x6MP1bU9lSwOqaEr6Ti8chxyzoQVsaczhapVs7LdHcbGOW14zkKDYXxf4xPuuChiBds + EVGIeh0TRbTL4oOf3pjmHNf13Cjifg0WJXDD0PFHoM45kXRqvhci7PUMLdMJJqRmS1U3VMitJ/nt + 1V0Conae361msxJqCuN/jhs0FCkOFm2NwcsRyCVNQdCPMpqaRz4T0dSPwUCr9h9TLhzG3jLWFZBV + vWTrxNGdGF4c1SoLG59fIIZDmmhDX0XUuZ7lhsXvzSw3ZRx4gInYntglGcfhxOOb6RzOl0LYOPVr + bLc1zK7g2r3WCdxzrXqsPlfZFl047Zusw81/CPlH7u5Q94PLSR08XM/yZeG+g6C1PK7Ma4x3qmAL + j9ua15By3bwGrdIncHbKa/kSeJHUEm5CPwSlaxT6kS5p3p5wAx3UE27+jncE7CHn0d0RIuj7j3cX + jhufdpBR1AtWW0tTr2wu1U7b6/ePJ6xWMIiJyLzy9nJejFmEVehG8CMI5cWi64q9G59QrjZzh1/P + knJx9d8/F7OUp8LtR5vw90XC6gWDREHUm1QIeoSJjodWUv+dqWhUMxyJszaTpAcSZlSzee7spCjE + upbLhkpQCuuzrARCeUEcWPVswHWKSq4K4K0KYxeHreFO3IHeuNtWgw9TN0StiVq+TujsQmMWoxz8 + rlfymZoHtYZvdRKPRod78jt7KhdzNCyjRTWPZiA2mU7SYYTlhN+K56Y2J13hM92gyY/dFDuxI3QC + z0f6J/yGe3Gr1z2B/9yRJ8/ePmtL6xGU2+jmd7T8MNxwBdHa3vzFpmyFHxNUAl78h3+f70SOnqOd + dT/2fNpA8hnjs2hsJhP5nVDa6AyNShzL5qvRvEWVRuBkITiuWpZDV8JxychMx7YHakIYA0Z6k8zp + Q3ugGbfRbL9d7YizwAs7rlh3AZP5DkFHqUulOI8d63vslj76qzzOLSqPi0TAZIkPwa2Ra/RmURzT + +LZF9o22MNwScGVQzd+O3nhxkRan/ZBreefxUmKXp1XziHUulSLfsVbMZRemXk6NJHqly4wpFR3+ + jWsxKP0khTvEsF9k9hITR9yWapMfbJq3INZu3pXoULK01OpuvUWQSbGhYAI6nyGtxx6UpfPQ1ckd + TudwkdxgLNB2cXjNINj2Urltnck+rNFHdLKPkRwNhu1hBWjSyRAKqftUqpPtyxy6UxZw57kTdUmh + U+9YZtDpLsoJdKqRTnO+nUxEQerxaVZ4Gq+AlpKqnxrmNYvnjZ6RMcD8K8YQE/cD+Wp9lX2/m6tE + 7hZEoi5soiPp3fIqk1Gi4mvv5uJjLYR+6/H2hJ79N3LpIUBxXMx5ZYc18WmzFk2PRQJCr3UcfXC5 + kIAMmk/S27PzMSIzAl95eq/+t3v0mClOF6giLizsVBUWHrct4oKU60VcoFUWcfnyxa0BuAipslIV + lnEXy8Iy7gVY8qAc7tcQlzz8c7a5HSbAU/NcpGqtUQcQVT5Qwr+FR9KS3QSk1RyW++YmzWVlyxZd + ALoSQT/jfJIUkdFjZVEug/1NYRZeDt++Od8bAq1SN1fpera6TWEGZRGZzcZ9/GbV5hk1o/JCrwZB + XoJZCoA7FVF6f7vVHOAeL4rIeBTgHVICTdMX7LhqLCwLR+XEPAK7tiTVQ2IzBgRQCKOO4DwmPNoL + Jd6Vw6IueFf4uCXelaBcw7vCVuKWv55e1kteCUtSBe7Ki3gQBCMvcgUk7C73zXQN9O/RfYOxNnur + CEYeMytLlaoIcj/2wyq4lNRAVMp6SzhwFJjMq4Fs4dvhHvf7qJuiJcjALytLlaHurOzUah/68cdz + IFcLH29d2q7mKK+wXR9GSh3RSKddBd3SrgL7tKugMe0qkALNx9df3JoPjLOqixXzrgLYIc4IpGo/ + lAkMb8agGJX80zrt6Roz0ifZapbmyoPyjzOYNcSuvJYg5Nk8L4PHqhM4gqtwfr1dmxfkUhQtw3un + VvENLs9VstZB8hpLtCLpv9QsMpf3Mwa8U94cjPJjuvFWo9L1iM+IxK20uJqoyGm6ceu+u8vTN61d + G5gEMVx5LcVN45AFHnNqVW3UlWJDHy1UbfkUoIM6cejV0PWqt4wpT7E2B5pJTrO6lnoyiBfcjVAL + tG8F4KEdIiEOQW+pErWBmq0V/WNtnk498sG/1lEYCLZRygKMZIUacRPZ1TSqccrWcgMOmR0/dit8 + 00oO2Bk+vSsXXNbxecv66fIRZPhbdPAzgIbDFVSERSvIxoNFFEU1loWQms7VwVQtIMpNYu04/ix2 + PbJF3eVIqo/hYRpnwzmo1rzaBfvZloqLUEX4NNyJ9wP43WCB9IIgkuejgEpL1nmKH29LIKgSmCTT + hfJz7HWP/HxQa0IYkSvVLl1YKZ1qFkF4LL4HZJZulHtNEy6sl61E9kYl9K2T67yw4G383PE7pYXR + K7ZZYbIDIymM2kh2/7SdwuvXwEjnd4VDfLBK19n3GZ3SSZYu/4KOhiewMKpQazVxrNQXgtr4jkwE + k+VnNY1G9dQONiVmRIuSanJMqinGY2WHuh+XB8Vw6Rk7xN3Us1sV9AeqPr+6g31RWrHj3Qx9RmGw + qJnQzigMxOEk08R6m5cxNoqHOt+AVK9ikSxvEpj69PCJ78uZ6zvKmeu9dZ+zuJMvl16xdeXKDgxP + LrXJWjbzFZO2uJtksUiGm+3Vdl6KQ1d1aJjrOeHTQfNDqnKNIGa8gZVrsFV4dF1H5VZI3NTZBNgs + 0kpNrI7DCnEdSfYRF8I5qr6JpiENZOLCIo2nPFN0l4sXru7aHpIzKEqTpMvGONMGAZfq1MnAv1Wp + hmW3KQQShPf6f1t034rUzW5ja+LwTkzJjGJnj6s7+yHEu4j51W1r8S37aFpUDK0DwvnSg1sei+U9 + q3gbkw4Jzrm9tZMet3RICMo1hwS2Ek+7PL9A+KyKR8LjUdUj8SxmyNRHMWM8dvf6b/vElYK/JsMV + EkbhRkI5F94P+Jh/kcLwWNVNiJJxGFcVM5C4ponAPW2Fwz4i8b3PaDu9+7kOwAzPMEGRdwO41G9Z + B2HqbswwTNVMmxoYyWR4Ddwk1dAKg/xumX2DBZzprNsKQZEN6TgPVWuusyXFHojfoxSA1xdjWOxs + QnU1OwzbMv/yx6ORd4i8ug+489iNChmJymLanLpH4kD0Io+be1zz8d6iuHqqsslDMV/iWO/UQuwj + C61JPgBmQl9qlq48w8K3wXNMpO9giJHv2FpiVBeGKUY2Sqzh+UbGwpcTysr33XS9vRmUlgyRNQzi + WD3G81y74hNthts+6050Ci5XyyKSFP549QE2nX3ICj1uJSFKyhUJkVolot+7X6shKwyYl5kS6nov + xiCVeNEoBPlQgpBeoAtOZIDgbL1LYNqWMInDX2fzOVyubDS8LYe0vBl7fqRPuwTYu/3KGisB1hmx + KedFJvDdx/NRKXQkijAUNqoFusxhE43ZyB0v8HzkFmEvuEVqxdtKAPjoCIRLtSILTvEKvc3mYxAo + vsLyw6836qARQE4rOl4UtTpeXTeIlfxacxmX3EMizyNXeEsV8m1Q/mrKBmdq7Ofjj8lyWIg2Yvae + sLH7dNgwfWZmKMr3xReC+rBvRqbZErgyol19Uo+YnwE0FDLf4OTD2yJcj4l8rF+G+td4IL+0fLe0 + To+1QSXwYnEpVEY+pqghoeDLMuV4wuHGnVsWLeuFcBNsa89CWBdabZN4H6LWI5GYHJlba8lkrLYG + 8EtxO9HpuZuPtQtAEk/HlNQltgr13K3X+w77Kkj5YRupkW4VIQjqfA5v1tl21VlxCv3IsqPb9Hv3 + ftS9LUs3nJy/4uwNBx2xizylX7IUqIpOyhKVbpVpSCTHCrSo58PlbApX8TKHvbM6kaU1J8k2hzFN + 03lyl05FDEwCXHpyCx+ZbfPhAqUsBXutIkJgCN+3cCrWKfDS6ZZsmGfZKr1TrjSlRBsDFRCJnBRm + JyaPotCFzE4OF9KPz6ePhfZBOM4wabrI7g6KHZCN+A5GdyTCkdrrvuPqPFoNENlhKh4S27uDNv4D + Ab+1WE5hqp8vgIy9WE6PW4nlknJFLKdWEsvfXZ7XoVo8HyenHKYavhi7oeNzdwQ/Ik8abt+REQul + JoV4/Hadvb5UW+VlKfjtXb4KnJEQ2e7SJN9UoKXgw9Hfu5xJgPwZlkWCMQu/SCHxqT14nc2n5KKc + DnOZ0w3NZZpS9Id+GxBhGtEoTdHfj1tMvGGMgKG8KvarL2gR8d3QbyvKJQrYhEGLyK0+1ZSw/TYD + tCI2+Nj0iZNsXMw0FU+YLW9nV7ONmO9qXjyurFi4FRaZaluxl12WCHspE3oJKsfw6xlckzCW/Dab + fNUURAhlM7D2DW6zgdi8uoCV70mYbN+waapxWErJli/vTpB0uKEWrFOrQTxMqmiPaK3No+gF77Wn + AKUj0yv7ilIaKn+wDOTdLnFDlCziXcC6kQrdg5rjHBIy5cfabxJEfrf0dv2Otc9EdmF6TKix3V9y + O8s3+HnTNJmkm7t5OcRNIUmdbmaB0YUAuAhiVQHs6Nhe+zgePyBbPAi6sN/xOspMhKJOnplQjLw2 + BUc6Zo6vDrY7tIyEPRmHtGP5jpDcHmU0aK+ezf68Fow+u7FQ1mPxYPTlewgcXeeQvcHK0XHHSofq + Letah7obs9qhaiYJe7ndSNW5fq5uQXyWYZxFeqWqa+iHPHbjpwMyy8FaVFnfx3QK4s9C/BcUYYeH + /LHUPbTpIAgatuZ+/rM3rLXPCogmcgUwNpJtqivSDw+6B8YVuEbudLr8ls6zlWURj8NqafuEsXe5 + vho3zdPe64OBDC4Gva/en6ZuV1dQcQmmPJThmdc1UpxesfVPyg4M9yS1ET8o4nTLcd/NrSV6GA3u + +XTUe0GneZQXar8IW71hzkSxjJihiGmyi4t4Mqug8PuF41NbXEdEuYH/nHkdr0F6x/oSlF2YVyA1 + 0jb/7ex8fDPfTjL4IG+crmbyQJe3t80z5d7wuotdBVZF8Kk3yRwFm9wqcaEDXtUB1PcIZb3gCnge + l4dIBRUczAR6PSEIL4ivtC1pDyE9h3exm6schOqutHInCMzEnMOEWFedXf4W1NmOZ1e+Y3t2VRfG + 2ZWNdHZPP5+/fz+eZCJ8T9WBLYmqpeO559HX628eq51nNQI8zy5jdJ6PdrmQU94sWLfbe9FQpzui + zfD6oijDKb9KyjXptA8fztHuFX17MBK8ugzyh/trmtXmTkEAPZC4l8DQPUQt3U+PtVhtnwhPjrRS + lI9asWkVKzn4hB1UV7cL8aBK/L5iiF1gkQHN1Jg+wIjbQWabrDdCFT7QIxl4GvOUBx2vH/2ONeap + 7MLEPKVGpSGVAvt0AMDJ25OaLeTy5hoW2bxeih6470Ylm/Cjt450tiV3MFLTWVC22eOsynRVkOBo + LMvhst0DaqN60wug3z/OPzDu2+dP0eNWbnhJueKGp1YJ6HZyznjND++L/OyyHz568cxlLmzmkcsC + L5KGBKz+nCHGoA54/TVZAb0e0plADvK4F7ZCJwGLNuGI/MBrKxZtErOpFt3WCwuhnxawJ7OXqjt9 + rLbIbCFuF8OrHjh7iQ5+Lc21hKNUKJTo2taxk7DP0++iC/iOwLmslwfOB7TqyoEdOOTAxqyOskAo + RwqsPlMbfDScZpOv3f0B+IV7SNcp7vKw/ghZfT/37CNi6VjDKxWUNTawJSuzefPRuauOUZ37cfZH + fuA3Lvrh9TGQy+ArlgzKarjqzgmUoBV6HVMW1Su2YpbswJCyqE3q+OdvqtADXsDCiPOngwUa4fET + v2HlGAzlQYt8AvxRCQ3KyYKzKx2Lilg98688HvTTe8yTMhlloprd7VHQ3TjU70g2b7/1/hUM38VL + Xlif3Y6LubMn69rzO01foTZbu+Fz3BldrNbiFWujNXVg2qxFG4lj69WVTD4SQrz4UviEikfqyfv3 + RSmFXQ/Cc1V95QJ6GGA3wp3jSNOXE5NOLkKY81Qo9rguMkgaVx1u/eaQ5vvFyDvQWbsvo63nDtrn + 4L6czT1a4X8IR0J/rZCVdu/fUTlUYee89FqsvT+nRERVR3Z9ZbekmeMo9iMONeC+KF4a6Txcx42f + M9ZFwChess7EVZ2YqbiylTgp5Q2Ru2Y2xTfrLQYtP3J4HPkDWdfRp42wvsqoytCjccS5XlBhAcYo + 7RAlbe0jHmqhRme430opjj8IW6HpiMQRSWjpd2T1ooepgHwV9JJmG2VN0POCgHKtkuUEOA06NLKd + FMR4LAokeL5PprAGuDRqo9J0n8c6V0wYQLbLadedBl3RJ1R3/OPCjwtjC/w4PRlXmf1ESLYUOgqX + nYX2CS/0uC0uO1Ku47JDq6xN/P6sjlTEWciruOxjl0UsjkYu1siVCS+/yyKS0m6CIvQUrf5TOY9U + g3g25VHfSEJV09s2r1jd3LbskvtGJFqmNwQYZBrDxSZfpjoFr1zi2A/N4srlVHdEww9YUNSBqeWW + INRtWrKsK463SY3FgDFc46nB9FU2CsZXs9yA2nzzClNdnr7UkFFTo3ILTDAurwEhNRCbR6Nzc5kE + /iD4zuSPNYqOWhJuA6VwPLq2khzOszBgYDmrbvnqcBvFgolWMTXsKbisKNPZE4xxW1e474Rcardl + 7enGhCK9yhCYvUa3Z6Xm8Zou7qGYJghXlJH19v1ZB3jjg8yR6pIiOL3zC9Bi7C8petzOHUSUq+4g + 0SqLh1yc85ozyONe1Rk0jsKAh8EIfgRc3lFm3l/hdVDnR9YwAPFprl0RqgLHesX3pErSazVfRuVS + C1pdQMA00RNbu9SO78WsQO+7QQ2Ypd2MK3tKKxmbZon71s/orYe2T6jlhO5AdmHcasyHk2wY5OCQ + PTfATa59X25IkIQeRVsKltnmlt7JLxARQCh1xpDa6Jnx/SAoUbaf4Y3qzCZ/bAJn0PD5beepRntn + NmVEOB16K3dbGMcn0zW+ToahoqhLx/Lo4uDg4xbnraOd6AjCO7w9ISf8rQvmdKhHRY/b4W8R5Sr+ + lmilK+X83eeoqvew2I94FYDrmefzgPkjONqgAGmE1ith7dMKt1w7E4+pgI7XzreX2Agd43+D4TTb + XgncY0ToILEm/S7Tz9PlLWJ8TU1EJ8QDSWW1R4GrZMTZb4a3s5tb6JqgLialEcCyIVosGdBVialz + HEv9hlMfZVRAcrjTwkmj0InjoKZQNXx92fVYJg4ag6muvX0/qoKLlTspuHW9D5NZRyy0JDz46Rd1 + IPa0huhymdNP+DArZXiYU32PlFowvP2AYj1FINghHO3H3kcWUaaPFJ1UcW4dj8+8N/5z5nQEF5Yv + WefJq07MRHnZ2p4p3wqg+roaFFnqQ2TK+xptWMz4yZfzqs6dUZHcjktwX8jCfUFpCguwjN2tfHQK + ivoe4+xua++/UW0fS054SMCnbz50qtVLj1sJXpJyRfCiVhK8PpyfmcCnzAPByncqxXpBmWdwbDgf + MbjJuBS8kuXwzcnZ8HqefNPiskRZozotOWLaJ7M1XavT7PtYbK5UVzTLh1XETIVOJ1/ZTnBWYXln + 35I57P+cZhWfxK4nmQwEkcZRUB3yjXBskUj1YTWtQ6t2hlf6VFIqIy9k7j4LAWkQ8HjZrswDr11j + j3ngBPVA1tXdevstEbZj4feAe7iMU/EkT5f5dvh6izG2yVPzI2KzSCZqxhWZcDojZ8psld3NK100 + wkR5zItaPoFHnLGaSeDDOMdY1F1or37gtVjbQy+OQvirSZJiwsen2YlJlLQcNV9GF46J+KpnQtNE + rxGOsrUUqNcGGds8xlmezdPtbpK+00KSeWHs1sqi7qfHO9GD47STXNi2Korc4KzYPclC4NeWNxCB + qbX8sZyk99p9qiwwLbsdPR18nH3PRBn6df2BxXa+mY1LUBVwNtJ8gLxNu0NglSgdl4BmdVcW7vXW + uB3ghfh0ZWzHUPSphGJ1Px5EigKrGrbiYdTEhdcLqUCISHXWsDMEoZ0cAcxX9vMB/hceeoXHHXaW + LPE2tVrR9iqex9Ftdep4haBJVysW7UizHLTUzsWkfFkbV5ZXyZZ083awb1pWWHnEumAf0HCaVBw4 + xjFWUa2ttsS23R27foPBdAcr7IL5IiSSOnUtvOykMZDiAD5lJUdYLeRxFHfrPS4FaalFMYk+maYi + Luq7CDZe3jzd0U3bYnkyWHHH8jzJtxPoHeSXMgrzQZ2FVFul7c7sTLCXNIfYodRDtRIYbAZqycE5 + DoGnpnQ2zYgpHb4FEARBnEvUHA5T2HxpKeee36FShXjc0lIuKNcs5dhKCtv7y3/UK1WEvGYoH4dO + xJwQS1V4sSzoeJvkqB5niPtN4LgCtvRsneXZ6hZU5SFQfy9Vp/f5n3XVySq6p5SYxrgbuRGrKh5V + IFfDtB1FppH48nJULgFhkNTibJGKuk4X2TSd10BpXTdqtD03jHbwMV1ckQqKYukM+KPYBeP8z9kG + tNsnOE1Pga0D78KHTAtN41C0VPpSfbyAt8WYFlSSFdsWOXvvswlfCakX/uWtcIkUUnElWiOdw1om + lNArkMxrhFz5urAwVd4uinwPcFdpU7XnUeSQ61ayfEvf09HW3IlUuyzVV3q0kHYwyqWYQLv76dGl + Vu80U7mOpxBm9+3PDmLekQH9VK991yHpTlLInYIzdqpe3m82QBAWhEQuALCUg0mJLzrrnKxUCDuU + uXoLEzt5iGD/ewU6/vsVoRa3nJyT6ufsh5BkUiqSldGzQ+GcQpHm+ce7CyeK7cUZetxKnJGUK+IM + tZI48/bkoirOcBZFpvnZc16MecSDiI945HJMbSlXZi2MSfLCfvfLyenJMF9mF5/Oh6s83U6zLSyS + gfFbr9VkMFq8TbXaJsmyCGsHpOM13hwkJL1N1i1CUjavikmh2+ayZ77L4Ltr1l8KjJHk0JnUGpxS + 6Yi3yWPljgpxrJwUaUaA8bZQudj34aqqSmGujzM0W+AuKC7Fcv6rKZIFbQFmzAliUAarNcXEzBvr + ZNQpY2YweBO9wY/cNAPc7doiyVxGYhbZw9YHZQoXgkkrFQt+wsihnS/F2/rbUU0uDOx2JgVOwpUO + RLqatUcs7wa370LJIqHm6Phip2C5c3swLJeKnFuf5M7DOpb+jpu7t6i44uIielfZd/O8dRbbDs/n + VjdwHJFZdn0wCdfzmdvwOTvI7YrCC5VtIeoUhYeP29oWoqYoPGyly/jk/LVbty1gyGYlCC8MPT9y + RiHGd7Ny8hGMTVQZLKIU/hgpdkQpLCD0b2UyB8a3nq+v2Epepier1K1dpt9kUpN0db7ZLm9mpqPT + cXlbdlHEQj+Ma4HQlSG2uDrDttynPqmWik8C1cip3nitKTUVhx2m4OwZ7uCYJRrg3igsBDEFs/lO + pLWDQwJxjsocqlqjcR/gU7AiN8l8LGybavdYMmtCH2t9qVUnxmXFx9u2gFX3nYns1gC7UrtXu3DE + qTDk0Z8VSUADEXkzP36a+ipz3RM4dqgz4+MwfM664b/TK7ZZ8bIDIyee2oihT2cgbAlUaZACi++i + eoeD3X8t0ceMB4Gd+3gTw3oEc1fLGGuAgzf+c8ftiG9A71jDG8guTHQDaqSlrHhPyiGXb07OSqbB + HQ+WexIY/+FRa3pQ8YYfH3fbm0tKbpTI0YimAYe57QZoKl6xxjOlDkw4U9EmS6feYuQ39DpbVp2W + pW1g91SpPwzjdaMe60H8sOIKR6HI9bxt2P/msjinG3v22gI9blmcU1CuFefEVtIWXl/UTXdejNep + WZvzGdaVC5k3gp8uVxXV3pXBcz9fvJE6wB/ZGnr4sw5QIAOqi7ZGPIAI9MImPID+gQWuZug/xdGr + tkY6KIlV6AzOhYHim85oQVORelcPCreNzYOD85PfBF+Dx+FfOmfRj2WrTGHkcBbxZ0wONKu49OZy + DGoPchW87MT2O5Aetw1eRsr14GVopR14enbqNQQvM7cavPyMsYC58YixyAvlBnwzRrXdDFvWmIC5 + RE9FCA3BT/Lh5embwos7fNIWPp8/FVOq4pBVbtfpdOId5k0vRwk7kcP8OuaGHosK4W8yC2NeV1um + rOsF3K156asSv3k+mN9iZI5dxoFZVqntzzcwFOXIa83rLY9Wn8e37JdLsjnPlFsWw5qQ34sYuckd + wrSbRzNqDZl1PCcOazGzb/kvHzv3YUYOU9TBnn5sACZqAbts3+oOzB2/xqB6cdazNc0e7vbKJ45q + R+Ly64pRcAJsaZ/CC4SlICmM5HBUcL+P1KnC45Pk7TuAjhhusUoijooLlr43jM2CAZ+e/TqUdYFh + 6JezCVsNkBUUsb6RP5ALjFzNbmtYK8S4poKs1W6okd0V3fAgWC0eyU87hriHAOVO4bceYPBhVHx4 + kc6a396BB0O5z6tsrUIv4NrCyG8q3VzAw8BCJEUGVt4doxj0VYrDho1cXYJ+MGAaXSfShtCSlCZR + NvvvGO5Lh+ktMZ3hTdst8PcH4EK6gYFD3aEGNIsdx5eL235zWq2Yy7lXHsXhFAfOUYl5jRN8jN1O + yXiutmP4fvDciToaMuRL1pYM1YlpypCtJLapz/k6K+JczTqLZUW09enL5bVn9ikAHbmswsEc8nsZ + YV774R13l48seCBhgeezm6VC/yiF21sRuZ8yompj+3Hs1L/f7AHfwglZliDOLCbhYUxGfRVpd2FP + GETat12N7N6kVHXIKAv0Pz8w37OPwqHHrRQpSbmiSFGrhB08v8TbtQI76DqhqcvzF2PmMuCgI6zy + 4btmGE45NEL7c/JsLS5oCT64yl2/pgYhiGcNfcgPg6hNwQhRmakV6uhLs5dLLWsYrdMNDLISauL5 + ju+2+fECL3bDaoEPILPOEP6vBLMwKr5c13wyEkaZF+6ZgsFrolBCzUExVFo1xyWMezEAYAT6PjLk + /6bhvYTWSboS2bUYqwy/ZTfL2V+wK/HxWfpN7GbkYfmQQv1vMjV7+UjGNsOwjJhk2AI8IAUC/xmv + iHgurvu8QkSPTXQ2ENtUSfluEPeBqNFXhTuxWsQz7Va6CxsS+608yGJXwi97K601YvSFFGisB9Zl + PEea4l0ndjw9V+VNaa8OxFQrpkoBI7SW8Gt+i8Ks1Td1uit2aG8/sE5IdZbUzeIreJDAC56zoBM4 + CL1iCw0iOzCAQaiNLgnuXJbwUcv5vwJ1eMieDlofkU+U+0EPFHNJWHM41Vvdo3w31Oi4f3X7PvBD + bcEufBbyoEGK7ar496ni2QnIP5HH1/qlPV26sbFLcPuvd+iOuyPbZBxLC7WRBPpWAsPRVfFAD6b1 + Ohwyz2OUnCnw3C1iOqwBX7oS3h1TwwmCfHO7TuERELDEldQL7b4iZHoLRYkoOeDzB8bCDh5G8bid + h5EoVz2MopXUkouL9zWgWc/DDKyKhzEOfd8ZxbGHny6c2YUwfPr5PB5eCjGVBJ0np5efng7ns69p + bcMKUVREcMM3ouW5YNXG8xfbK0YzKIzgUru5WM/qALV5qecmt0zEIqfFcM84i4LArft7utIs+5Bg + AgPgr/elPCXTZCX3IxZCuE3R4IDZ1rJGULb851Ym3Al1QJtpr7d5LZ4/9Ks4hM2fUYOLhefT6VTV + jTKDRStpoGVwd0lzcFnsHtwEYgfltR3UddN8giFFtGuaDIX5S6wbcZdXSjaKJLmb0kwqz+0AT4f2 + 9nphOJCfV+bE5kTYStdi5vHpY1fTRnzuJTb/qAsfj0thj2vRhpoufasXD+l6j/msD8tuKGtdMKdD + Jjs9blnrQlCu1brAVgkj/vlVLX6EC99apdQFXGl+GI1YEAfunuiR2RzoT1aDc/IYzpYC8x5U8fP3 + 3sg/f8Kf6tnScKKNOdiX8wXycuG6nAIXxBiJZIEc4WOeeys8nQhttrn9E7aDErAxIRD9mCQFfoWV + 36DMLYBC/0qUul4PvXhZ9XCCroJn/8vni1OuxjW4/PCxSB5yA3HemSzd0iDi36yzP+FDOmiwLhpV + xLHf8xGdaMqAkxS28NV8lt8KQT9Dlw0+vUyEFHfd1Ocq07JcB4sti0kSh8mTx0qstlyqjlYXUhDl + 2MSB3FGFoo25HVya4GA4HFm3dm8doqNePhJZtV3X7MNu7zsUbreqMoJWam2WJhtK7fxasdui4pn/ + mnUL9NTv2LvRqIuKF000qgqSczdIiJWa1Z/VpH9wgw8eH7T+8Rf8K5FBYwwPI+k5s4HIt9beDgfc + 7w0w/8CSpkdg0XMecL/UJzwD475JbRDyrYFqHwvevfVW6B1UX51MEar/x6cPcJfaq7n0uJUgJClX + BCFqleD3rxrUXLcSxegFL54Fju9GfAQ/AkfmwJ/qPVJERMFcVPOp0AzwamT6fNJrrKWLk6cSnoBE + CnOOV/JLEoM2tzMMVs6+ywCbvKYyf/h4wkZF+OQs3yCmq8gCR+Z4+enk4rXSLlOqWiWd0LnuV2kL + hIJ/1aBF29UnK+nOHKY3YvWU+gPSCUtet8APYSGqurNp/ynWoSWwMQhadHNjzCXPYVm0K6faibkU + /cqGUj8uovW2KLrN/ZiLMRKmWrjNstVtcgPbq+KYbItRjZkfM+b/z+BvtDEHeECV5O3FwWNyO4p1 + rmsAOzMyWwEwmSehNHfuhJ1XYOdEzJ3AMT/WD9D0/m7NHA933drcwBGsxIjDqe0BgKcAToJfbTJh + H9yFvFNjKqT59oPDXXvjAj1udadKypU7lVrlnfr+Ve1OZR4zTcdu/GIMSh50P/J8zhxpPD6XFTEQ + /IPEfRD83HFRKENL/nRhza7qF5YAa2sJbAnbDL5xCMKfU7PNrprG0xyUX0EYv2wmXfD8FM7ePB0v + 0ilFiTTWbWEB6NR76GpcFW1e2TOJFSiVdI5e/BRDHr/PUMRVVViIn6FqXaqT8FIJiGhDeZNcMR1P + Eg5w5RWz5nFMpeuPwpalDGFzRXeygtKrBySUl94usWNRu/2hVfHHVS4hZrraiX/qdVOi9TvWtU5k + F2apE2okNnFx8gr2Jczo3Vz+0KCuyETTfILnSN3v5ajUi+Sq8qbli+WBYWJlwCixMpA2G1PTPVK0 + cGDKxQYkcJm3hFSmWUVL9OqhLmQnCutizNs6OtqjjUl/4ExzfMGJKb/l7Hw8nclQPzIy77+/7Wu5 + ODGlu5TWYk/k6052FDKaJjwEkuZh3ICrsNmgg5BBj9uGzQZ1IYNaScj4cv5r3YMhYgSqUbOMBQEb + gcTh8j0ejH/Ogf7kb53/OiiFcAqr4WPI7Fe7yqXyuh+Aqr05iB63K69LlKvldUUr7arLf7yv7Sqf + e6xaXvcZiqxOPIK/xSoW++08u1JMWUfqF0dWuKqFT6ukKJO/a3nNVyP84dOPYEWQwpd/zijJj3Ro + IYmNddKBJp2/HFah8UxWXipyhRHKcOkJUgJcczLfivN/cvYOVHb4Lx8N3558gH+/+zwavv/0meS7 + y99OuTwmMKo67iJM3C+Xn940hUSwwGdt2IAxLnsQNFeyJ2mvAaPWzNkN4zbioG7B5Vw9hfjpuFHr + GRqVNA6qbtQMlM3bE3rLvR6Okd1AsRoboed8B56vssIoEOsqDvXVnfGSriWYvzTtQuZbx+yil8NJ + Av2mE1zcldAF/v/wJc/g8+DwFSn0bkgIjb2ATt8rcDR20CBA9VzcvZDWDgeWbkqk86OYgt8sStTv + naaamNSHG+hI0Guqr1JlUHuHfjwQdF/4VsBr8JVD+ZaNutybmkj5VL9eOEGHwEV63OoKl5QrVzi1 + SlTj8y816xOPeQUaxYUrPAj9wBn5QRzGTF3hMNB1Nh+XLU7JxNQR59lEKGFocAExEutsYaHaZL1B + ew5Zs5E9v76o38v5Jl39OcuJqD5jN43dCvwLEUn6/Q4Lr8HVqG3q65RstlIjFHSFYEGDMYqzSbTk + 1eZQ145ZLA+E6rB+YQsjJlKCXbFGyXo731apRm2AxswDPuHEtbrJjfPyeVxdkGZfj1vz9YyqCBDM + 9zzuV69qGWzQMJOGtB/4VT9MK/1B0776pbq4pWrA0y05mgnHpBD58uWY7dqPD7gVmzfbAE+fDpQK + Q78P6CnNTwOKjGxeoJ0VzBojCA8nd0wdrmY7Z+Rqb0PtFNmQeAxqnDx14q7qeHLtfDJ9Ed+9yzwK + geqHHNzeZFyTgwYFrrcJ6Y32npwGr5DADyOlhANfB2IFJ8x57njdIrHkS9ahWKoTMxZLtspgrNvM + k1e/MIcNLm4zCaSpDGTQ4g3wuYHrBswLA5n4JrFUZpN1tgG9bJ52CdpsDf6OHcEqRRTpIlvDerbi + rrfToOLyV7L8V56uNsBFdgRPtlEKHUqrFaP5Ew3R1a+yAFw4GvPmeEv4njBwx0igwut0flC07aER + vO15trEcGVV1EFMoV3M6y4EVAIOe2wn4RwPNYDnEhl1ladvvQQuMZRkrsY8wKdcScuYIF1x/9Yli + ispo8KlYeDJ9Ckl821LCp55cu++N/Zya8s/OLkBIsrfv0+NWapykXFHjqFVaYi8va5ZYh8eV2ujB + i3HAgpjzUcBCFkheXrWTpZOArUAIlrGsmSwZoit50wPjyzzH/17dstXTiou8VBg9TycgmmXwOSvY + bNt1nq0x9WidbW9uRXfNQlyx/ciIin1VlSg1vEreFEiH7bVVYo5B923wgY0p7IYa4++oA1OmXVgy + s1JEMFZpVR+2wUDZTc2uGTB3Xwc1wyYtmP1qVQr63cKGTufCbrlCXkAVYcoLJyEu7JeNDPJqfDl0 + WhoQ/ooj4XJUT1/q+0Ei933ONx4Bb/zjasVWA9zdOlDCiwkeNHBM+AE9nx2tkQEjALULw0BYWbZ6 + LyWJf1SZ+9oAdkWOHRmddz8O9f5i/uJQwjNpqJEayZHgNVmnwHUE7vSkHXbT51I9ZF8tkkzgO06D + AGDMW8FGOi7MoLv+vCeUIPL09iVm3AWYrtP7uxBNwihu/6SOaUUH0rqP0KaeDQ59JCwx3yMn0/n4 + fHyVLadjyt/HCN7xdD37hnXjd+/Vw6ss33PfLeg0MaWg/vqBxR0COOhxOzs9Ua7a6UWrFPDOLnnd + UB9UEQbcF+MwikI2CuNIIQy8Ny9XvFYXsNtBw09qbiwKfX/74TSUtnOQQjKsGYmzwfTcKsMJiudS + QpvmvA+LuWHbPgKAusVGni7/uluUv7ZJzHMd7raKkJzx0AlbEajLMyN4OtvTGciUcZtLHpOK4Su8 + Ju84uftz4AbpTR08IAQNcBeaM4schqvQDErQJps6fgNNsy61pDs4xbzhNSoECnJUT8NdGQDu7XwS + rtRMqf5VvLcCLzFm9cn5OQOFQ019rvcw6PZig0uSmfIWD0GsKyUtS9O9GlYJ/9xw4ZcmmTjJjEJC + JKCAxBQeiHOpTfhBGAx6seLA8gkCzSvd5WY8CgT5KDuIpuGRv7+SRl22IKmE81an9aFoDD8kdvJg + eM/7L3CMzKZMxI5d2RheBNMksamNxe4ko67aSEVO87f8OVZj6hA4Ta/Yxk3LDoywaWqjexP9BHdz + yjVJh5/GG6AHCswkWWamq6Ac9/xpvLhbz/JN5RFW7pH7nuM5ocxCpgVB8uvFrKxUaELH5yYf3Mcx + rrsfAF22d0rI6xYKKtbr2we4V399Pqg7rj9vVqwwunzeCaMLHrfF6ELKdYwuaCUR+s3F67CO0VUN + dQlfPIOz6YUjjweuhITU1W3wa4U2qIoiCYGjtNyY5LNOURAuRZECo95OyPQ8z/4E/Xa1Ai1knoLI + kg+vtpshzJX64wzmT/2JJGugF95fkDV90Xhym4qsoXW93JMRI81jMyrlsiSrgqgaelVZtY/iQ/3P + +gD3gg6e9BnvIU8W3ycdPTs8kSWIJKACjfZIUmQYxB31UITaBVHmywjB0qfNFl2pcB47BNIjR1wa + DJV66yab+oziHbHWGf2BdlnHy/CnRbHp2b6E/AEf389VOhn3fMfcgIcK0E51Ax5GKHYoQlrvwYn0 + 8h56y/ZScG/YU2yqOhqo7+Mrb07ODnKLhg7lVp9+AFr2VjN63OrKl5QrVz61qjLhJ6ZblDku3Im+ + WS3A9V+M3TByg5EbRY6U/s9mIJdhNjAcAP8/Rv5//Mf4nI3OPRLZisihkmkBw4uHT07OvROzteIe + LdXFAjX4apY/8f9jLFM4MAf56dDsIn85vE3yyn13skp4UY08qXtHH53pzfxQ+ExzJltljiiMgxb7 + WBiAkMaqVqxS/IGKoazMQsxYGxqLIjn4GdZ/gPtblzr3fRE/ih+nzRvmNBgxmvdR+KS7baS3mqdu + ROLFyZfzIa7c3bwXhcoLJezldn4tgnsbSD85OTt/enCtVp+rBJVDEydCSnvtcsBsLDp9aH8FKdJ/ + 9absST09EkBa2a4wvRNfwewVmMLi5C+yZVacdZt+yhtcXYRMgoywLvFB9LglyAhriA+iVpX/+6kW + H8Q4BppXQEaYzxyPjUBrFhsfb8JCwkar7d16JrCMlOPny2pZv3yqsqxxdURRG6wU4yAK8bBWkBNm + OlnMlr9MMpmtsy9QB4bPW9MnjE4KgJHWPkzCUejvIzw4r3x+adKeyH6Gr4Kn5c94KZ6mmClRSHIr + XCDC0iU8IJi9gjsv317JiFvUgjX08j9hxDDw2RzI4+jzLbxBD74U1j7Y7PndQs5ZkwI9ueNsNRI/ + ZUIt/hMuGdw7Og+a+V4vmFIxxZcQP8BdPBrqK1D/W1xeOBLxq7gbZtND+/SZRDBWK7CDTs2Cf4SC + 9zhUMzgRFC9VzHjv3nmcYbdxhneSbOKYXMW+B67znLndivnJd2wj31UXRuC7bCTuucknXPLC7RX6 + Jgf6J/wF7fmuK0u8BDKYNFnfzITr8tg0noPju9rC1OGqIxOTolVGeV7OME4rXaIwsP7WMQC+t9jw + vcDI+zM0u6O01GsLYukmsZawlzPiPW0Wq/b0Y1LtP4z1huhu9OpCpWUgcKv7DRV2+s4SeLAk5h60 + j8L+1t0T5bo+ydxfLk/ZGP7D26PWWgt5dUer+VFIOH3g+IcO4ZV8/ODEkb0HiB63koIl5YoUTK1S + Cj55g1i1phjs+l7FBeS/eIYuq3AUhgJRDRn/lzfv35/pwJUnLB5+PUsqiv2+VHM4uRvCPRqVUeFu + 0QMLR/qdJwO04NyKOVR/uM7mU9BENrNrPLOXq41L5TqaEtmV1+hLcs3cmlze1ZTTlr/cmEJPU9SM + OhK0oo6AzMBZDUjwvlFHyr1qFeAtG7fUqEVPeb1mm+HAYqwVi7exs7atQefoHBhRGe/CxD4J2qxX + qqvBT7NdB+JMashaP/AGcjbrt5VJQAZivWXAdHD8lkXtd8bi/xzwKZRmdSRgyr4+wnof1U26uzuL + JDvG3VovIjglLXWlGEo5gW+3zPOjIsOCpkmTHOqg+niCcbaSNPntfkvr0Qgtbkh5CQdAqjxwnNv9 + osAogcbTCdpwSz53om752fSOdXq27MLMzqbGkpmu+kHl0LTrbP11eJsm0+Zvf3M7Z8Mn5x9hTzEf + JR/O4R1oFCVMfZ/wO7unS+/jlj+I4+7PJL13Tt5DmPARsb0u94m5tMg8vd4oRydUPyA/741ZNuzs + Q9Cm7El1G55nLP69MnXPlcWilQZbCNrdZ1ix30CVQ+kC3f7JHrr9UyN0+6cSdPubk/OaV8VzHb9a + DmXsRxEP2EgUnJDsWqGQi1xcnIBcWOFXa7YaPnnz66tzxkFen2RiPnBy1skqgY+jsmwgaos4ejRa + gQBAyRpCHC8ewywGoifnt8mPvFJBdo3SeRms8Oz5cJHOk2V2k+QbUbd8u9kgjsc6ud4IK/3tdpEs + h5/e/BdToYvJqiEwoa/QRWtNUBygtrBFJ44jFkY9hi22L2zv6wl7fruQSJXSFaR43XYlguPSZLOQ + VYdw4vMK0aYt0WWhB3gESgVHokePQvkgRTwPNE/uuo4KaA3lB7vne+k+RPYHSHB5THUAQics6gCc + ec+Z37EOgHjHvg4AdVGpAyAa6b5a3WbSj7UaC08Pqsx3czO7TigAgQeqp/N04Fk+h5QFzj/WHKK8 + FloHtZglH0o9He9wQ3dPYHmYck9qjeb7Zc5z32JqVzj9HoOmSAVoXeZukHNHkHuQOB8gVK6QedCY + 1MnWeWosfhM9d4IuLuriJeuzrToxD7dspdO9SLdcHu9FOhOG0FI6xHalQK2ng9JhVHElIy3fMDYQ + lESaWhhKt/bRuREk/5d63kHKPrOtE9ndujSTEHUwdd3zZH0n8vX8HAPO8bDRIrYT3VsQCgtZ03p1 + DEKxHnZP/e1kBLHChnCj0/FJF3QI8YItPgRRryNEiHZiAKdfKkU+uItu12qVD/fFmEVe5EQjFvkO + kygR79L5isLPTvKvSoH74+scOpiMk9XgdZ6DkD0rlXSVkWpnyYIV6E7J12R4dnL5TrUIHXa7Qnjd + r7NlKmparVOhEuHLoNNMBCSQztX6+AUFBDJEqNgReHKdwt+SmRDBMIa6MTH+5XCW62hVXD3ZS6ln + gaEv/Fgqg//d5a/K/8Qjj7MfksB/j2Y+x5OirHSO5SuQZOdprdh7q8jSBrjIGHPqKloZ4rOyjDDv + taW1kSuOR2MMSX0q74NOWgUQkKlDqGrm8EppYXdSvT+sfhAbmbTf0oJaypp7XtrTJRV6Ky9yN8WK + hyTrlnmE1cgt32yNtrFVLhuiERklMr27YF1g+ulxK/YuKVeYO7XKyJV35/UikXFQqbTjvHjmubHr + 8ZHnOYxLzp5cX6eI/mNq/Ok8WypuRBEjt6s6gM+Xd58bIzoc1zPziKo4ME6AUVJVk12j/cKw1AVh + e3C4E7uhX42jQPvxGsujALk6Dk7gMqcyzuYxanpoBy/NjU00RtTWQ/OIF9DFWB15kNArIeagOjtB + 65jjMOZhWMOALK2TqnoAvGq5e90FEpS8FYwpNOAbv1y8/q8q7RmC5UzW29mGLlkZYAa/CPxl8bq6 + 9s3u8eIVUyy+u4KzL0trlpFiBrjzNb4OZ1TR2KWbp772tpfX47ZRFh0EAsW3aU/2UBxH7DTBzosV + oResZQFxu3qemIYyr8CiCvWQHdlFK/Nuxej2vBKysMLkK/dnTeool2AHG2zTNaKLgnL/VXdsG3rH + GtxGdmGi21CjNAZm19Ja8GZ8lX1XN+PA+A1Y3zUf4KPCHAAbXka5E9TB9mr2f8AEZsvSFtfVzZPD + THIU/+Wb9Ifz2Q1u89b1tg+NPaa+rtWr94q+6IIu4DUQGQ2v1rPpTSO5vXOjNijVqXz/ASQJezmH + HreScyTlipxDrTJh+78+1FEOHb8i57AXzyLfDYJRFEZuCeVQWCaqOTpqogx0t+Q7arJX26lSKG+T + 1RyvYOEkG6nUhUJRnS0ns9UM9ze8BFMn67zgL3DLfn0pkH0w61LcgqCrni82HohTK+ic1ObT6YRH + qwJvTiVvf5/XxS4kawTQxm4bLHQcxSxirBaiq0ZWpdOGX91Gp2zx2ZPW1xqV2kIaY4dwYWrFwWOv + te54mdTRpULbCGtRzdwmBsAiCHedSOltkwv+UBVUHR7xPfQGP90WH+Bx1sKb5/CB/FKlzIvUkIaZ + +cWqVgYjSyl96MHkOuX37dGOyU2x68hYfZkvq0cY3yQOs909FVPedvl82fT7ODIV0ZhOtrNkPplt + F0chvvxwv7S6Wl1T9nMOkP2cbrKf0yT7yWyW3/LV8Anoj9/SdY6SwAa9ROoDnw6nGWpggz1PyTRk + JTeWe0ZZEZQ0khVjX5oJizRDSaqbIROET884FQdTPLJCi884sQthj9zMVrvfGqg9UIoXfhs+d7rI + //od+3hh6qISLywaC3jLTO3pcpxwSVxc3SZLgxymujo8HoiVjePSNOTb9TXwF6EhZcvxT8Fs1MLo + Slv+O6x2xbulG6uXbJdGd2KsjWqlxZlo+GQQaG4KwM7Bl9vZf8rzWTp5JaIYrB3G0msbE+pG+aBI + pLNvafuRKZzGq2QDnOzIE1gj93CBEhF3qVqvANz8kREIaqupoFXmRF2CVvFxy6BVQbkWtIqtpGJ9 + +nyO91klapVzVota9VgMUtsIfggEQOElvANpT5R7hD35+eKN8hMu59DB5PGDUB2oKKjg08KG2wws + heFIu2DXYUN6jIMoP9Dgk47PO1b97BULuyNik9rGocZneBs/Z7wbPIN4xRqdgTowwRlEG+3IVxen + X5TAcnqbD6+pmgEpKep6O71es8EE/4PsMQ4jymUJPeXV++dW2lZFeKzmb9fbZk+jtbXJCclEjPN7 + kywskte0bVZW4IF53Qih06bSaisxWbX8bTa/mTWpJX0E48ScBL2b+VbUrD9mxC7wo8IDL4op1u2J + MgO0fW53QEz0Qr858bAH+IOQShnSciWrVQLatP2Rtny5P3xuzRYiGQvjRB0MiPS4ZRyMoFyLgsFW + ut1+/3hSu9y4yOKv1DPnkReE/ohHfuS7xEo8jlnS5fiW3xnWQROQIOKe+32R+LVLTsgEsNXG+hDh + rjkh6AWgIKU109rDW1PTPY+jKa3ay7dkss1wK+kz+yRPl/l2+AYExNnTineWt5cUAebtOkH1Ytz5 + EUrWGQ3XcpuISnZYOa5yA3pBHFh9WYG7pb4L/SmYEVR34oZOu9VS0tT+0FPltkxnN7ebsVpLWIZV + up7BSV2Xi/DJpYFX9DDePRvLr37yu/zXU/SHquMCc0QsAhG1VtvFanidbUXhcFEcL9tudH083U1+ + l4Pu89K0z+FTxe5AJyolOAOjXUqLXG3NB7i9tUENbvzHgluNS4SvtKymlfXJl+okIiEWVeTJjTxV + M3444FjMlRHnADKyiDEzvpFomSfm97G4xWjjjEoLbGX4w4OLT5LSR6Sou7SrCTEM3WKwnS2ZITmZ + 6kyns5J+hI7vuhKxretEW3sZeypYezSGJ/OdMNL6JeJv6cPYZ/W0IKLlqGuxI6rDfDPEsBB0bCdL + fAimJB/JNIO/RHlDY0iL7FuqssuE0R8jNjpKGuLGaFtku/tn54FQogmF6X64cOPQXvGmx61EE0m5 + IppQq/Rtvnlb8226Hh74smjivRjHjPu+M4qZF8VSy5ETIe+207NTL/rl/OSSwaunLBo+OTk5UQbZ + ka7sept+TzDUcqLc5i9V4bdy1M0UzWdTHb6SXMHCoVSLQSEKTejk+qbupDQlXFMx57xNMecYPRDU + FPPKSptAPhXXYis5LVSU7VLT9dZw3XlYQbYlvip2PViC+H8GP2q+B7hJdD6lG8UDOeCqGU98VZ8K + SdV09oiYYyD9atU9YqMOgbjLSkijiC4KLGZ2fAIQd2RBG4e7XQra4OOWBW0E5VpBG2wlhvL+zcd6 + +rnv1wvaIJavH4Cu4ziRNOR9LGJYFNTfXIWCFyg/lBXKJRd4f72op3ObwTAVM1/cdmzbgMU6UCuZ + 1WKE43OqLKUK9mjEmca81XSIgcYBr8WuXpSACszk8h1Qw82kdk93Swq7V2Vao3Iae3kKTIwxXay4 + 1JMZbspsKA867ZgB7k1t43QjUlQ8xrWi0im1UqsqHnMrFMwP6yZfojdLiKetn2Zrrwodxr2dpNrH + WQCP9mc/+iExbh1pNMaSysSbzcUuWJCmgfd2X+FJq+7SHYfUanDH0tw94Ji23i5w2/aR2b687473 + JZXDEuU5V/ERLnvDnOcs7JZPq9+yjZEoujGiJHQz3ZJVV3jdNV6mhFEPcAGTc/xAB2eHlB5ldeWu + AsIJeCcgHHjcFggHKdeBcKCVJJG3p2citKTiUwzCOhKOE4WhN/KZw1UwSjmVAY/9EzaG4dzezXUZ + hqdDaiiXjKBSv5Mp81ajumFtkZWsT1KKR3IInZxsZMlg+JMficQDFL1Hw1SAEiXz+Z1omY0/ppuX + w+vZOt8M8XLcAEnoI0FZfylS+WqFs08/eWWHN8lNOErnWCzWOPJZHPKaKIEzVp+d5ko6rL12AWZ6 + +34VBqdEvSY4uI4XRR3JHSKPGJGQHqbwm9kvf68tMxBHqfAOO8Ggd7nHipwFPp7MymhIfzl+iJFD + kRtieeUG6nyXiy2qqZT38V719+HxQ10m4wxpRy/YSdMetob7PFySQoUGn9z54r2KUA+AD+rxYnae + yGM+/sTGT8c7mOnO6VO3sYzyOz1lPHjuRF3kGP2OnRRTdFGSYXQjXa4iBNqM72toKtPioK5Fridh + P+j8vL5AmxN5lL+lMKvzdKzLBRi+lN2xf4OH9Ew0qzdUoQTdcyqPbI0xAtu5ZfBnVxKP3NH/iMIw + uQ7DZJ73HC6+TuGx4hXr6FjqwAyOFW0kzyaruS8N7+djF8SAZFUGcS4fncYHlNv5BOmUn0bCqCfw + yFf13wvvh8ia24t2vc+Xe6QvuHu1mVrhlMNr1uwZmyxqoYKYFAfpIXiJ+TLc6shBsoCRn3k3l7TN + hDgspO/HswXXkUUo9euTLOk4lUCD5JDGE7b3qtFSlUcnQkc4Ql9ycbqshBQkf2QeSiQxdGtb9GDs + Ik7RyO8+OK5vbzmgx+2ALYhyFdhCtBKn/fjbea0iC6ipvApsMeZhHAYjl4cYgl4G0AWdQ4XwKrV4 + VCmmd/LlfKzmfIKcdbPBqp2vTgsf3t48zT9u5zDqyWqwo1/CfEWfnxI5Jdzq7EpAxYDCiPMyRS/7 + JBtjjT+tcYIKmK5nuHPzai3AvcPflYP3cjhNNynePqi2Upfp1LBT4x9uZze3YxnDtNpu4Bxtp7M0 + H/z+8ULb8ZnDw2MCjgZHmqYjSmtTs2n11mOQb35Sb+pOKr27VSVhjwc8aBjeSAeCYWxcf1EoihMW + QK3eafTc6Wh+Vi9ZwzmqTkw4R9lKnHEynTCJFV4OHyDMk9Vc8Y0nhWL9dPDx9ONwnoE6ux6I14VJ + 2sH6OuIAE4BFlcLkNp18XWWzJniSVkQOWV7vY7fiO7vlOx44TePrTCWkWzIdayrfUgvB2h51UmIM + Vwe6y9jVNpE/tgZED2UZqKxg22wfPslAWRZwLCZYVDBpVj16ZbIuqBpqgSfzZLGSh6qX0nx9oFxb + 3QIdhnTsnXJvQTaRMglw7xVjHfly6S1bw0DRjWEb0M3Ej7+moEvAcc5QPIQPgakVAeMlRd/iEbM/ + UWQnECnTTCXwCwIgAS6RiF0+zX3kOz804r1mTt3SrIVZl/CdMck1K2b9wM1HIaPnF47L7SO86HEr + 7UhSrmhH1EoywOXF57CqHfk8qoSMRi+eBRi4GI0CNxR5TeRWXQmnErmZ1reZKzWZy3UWNmZqYp6P + CenCWwO4HHR1B/U8zUMrvxv0+s/XtEh8M3yQUSVEFPM4S/CGxmh1J+n3jOq15xVilfDVt3VCg9cC + pJHW6iK5UvEYl+kEnZUqwlRdq0KrFH8TEC2b8eWnk4vX2BKvTEy90pjwyWk2+YrsHf8tkxuhw1WW + b8aGdV/WCanM1svhbbZAgHxR2BG2UUj9n61h76xu4VoZzm/gqG4XVIFe7r8BbmOlRAbcDaRrQTCH + 0gBrp7M9f++ojMYdZEMeUFmkwwsj7wTvckhzTkFJuZrP8ttybRaE81P3sgXNgXNY7eLDitmTfEWy + Km22g/xuIaMrobTFu0DouY6M4uesQ80netwyil9QrkXxY6sE2b64qAXdYqxLLYrfDwIQjkd+EIoQ + q7LJSpwts+jO6foW6wNpeM2kqMxEsEsEXyAtQkXWKrH00/X6Hgst9cWEjymqVJ2MtJTEIicFT3tK + s5Iuv6XzbJVWUu6WWKVwXn5QaYNoAMzzGeqF+OAEGFo+ns+WgllepZs/05TKK8nkZgFweosqF/wy + T+7Sdf5SRXFAZzJzGDuSoRED3Dc6sJ87IiDWj0PKDk/WVxl+D8p5R5YyQY0y1FKT+EgD6bujzbmf + +iouVoATfLWYEUxn2M43EpysKCCJORFFBj6tVdfOyNCR5LBV6mu9XzknFCoikn4v+7DW6c0B8bAB + i8wV6fx+3PA9NszeZYyMKrvea9UZPN8Xl2xTvhi1UVbY57GChhMSCubDdvY39VjiJWobc5Hjpsd7 + ldmPVV1CjArZX3Du2V9C9LhdIXuiXC1kL1ql1+TiNavfQlFUK2Q/Dlnkh94o5E7g81q8ZUWivEim + vkMi3X+tc74aPrn4qLGfn5J3Q10BouDcOl0lMyGzoqlkmm2v5ukY/Q6IG7hOk68kdZaxnVHymc3F + cqTfb2dXs01OZgNjzUVXyWqVJmuBT3iVmpwcx6VG8hIGP03nWDlPgSbRrfhxnbL6tdg57tLz3Xrc + pfsfY/8/UHitj924XD2nNUYS1seLwhqWJcaV7Cbq+axNL4sRziCMqzSrxibz2mZmVGipcn352yuI + 62LhDTWHR+x/mhN0wjCCm66a+d+wXRTdb7OEGsYwYFEZpGwGNIQFOJCtUAeeHyMcQadul9lSKjkZ + wrMvp+N/ZrNlddIC12nLIWTcjWM3qubiqJJMLQeldAEauYrMjdqCYV3XA8GzYzelUEpzGk3M+YZ+ + Bl34xseLx8k3cFztfGMg+KqW0kAyHsi5IRnIemp/sUr2D7m48g4+B530Ze5rk/axEiae9JL/Awfa + P4F24H4qQr9j1joOBo6yxTLU+MJQ8QX7occUu1jO4xWbKVkkN7jDZ4vtvDNSz1GFy1AwD03Zckcp + 95YPE1zK5oQYpPceEJ85rnQB7aivoPq0E+ofPKr7iIAH14nIzyjkmO4lb9yAjOHGSqADnVjqbE/t + 7aap8BwK68KAaYEDjcWPuiedgQAT6Rk9Iu0MBSGhozWKTLZD6UJiz3Ao1ARpTdPs+x1Gqhw8Lq7M + o8cOq5+6uiDI4hs75F6b7+pNz3MdRlVHFsnyJlmmQAj/eFi1X84CSkw++GR4rrS64PXfz2GDM0Lo + N2/H/7dNpuutOP3WVJSyylU6Qhw63ZAa1Su2yQiyAyMXgdqakynNqny0Nz/OchYNFuK/mIgQBhS7 + 8uAF+drjNY4It3Ai5hjFOyQGf2dxjgU+WQ5vZ/kmQyCzFC7TTWt2U2sJP0fCU+KsJAIsPl0A75oL + H9EGpnsJ3yLk7w40g4a0sOaBHtqFTyJbNWi+Op37o4OBqzWF8qC4rQvayKAG3DLahFgbuIU0c0So + TUGDaieUj07ZrLk788YJQ988A6PiK0QWywHGzcNLIzZm8T9YoUWr6PFjZb+AQvFL39BZePwBgReY + iSi2KnDjYHw5W3hl4XNPdlcPxRJcVxpYWdDJwIqPWxpYBeWagRVbpYH18rLJwMqCmoHVj3DEIz+K + fU9GXnxEt8YkW90NzRiMyy8nzBmOh0yV1/2Y54caKE8Lc5MXI4hp1eQnEpOvYXnrheLMomy7UWec + dpiccr/a/kRp0kWSc5PSRhtgR1FFz4+9rv3m6Xaa3d6BZDEf3qyzPze31Xo9XksQRhxhUE3Vygm7 + eo1VFJNGoG8fXmrHEOOe4//P4EvTNJdjM8wpgr8kuXBx0uhRbZaDKEGGvUTWCAd3nlOCOhVelCQ+ + /nbKxHuw0zj1UFgalls4EfikiAHEQIZ8ILa5tneFoTeQ3yZEWXMGDoGd/hmKLIYSuadpB3UQycSe + FXSsT0CXEo5d8tPrCXlHmzAOuk4GkoOIzXQoO7JScjyNgNKhQC89bo2AUi/QS610YVycf4hfNSCg + 8CoCyjMvjoPIGfmOw33fjAspAjVkSMM8Wd+kwyeBc/lUpb0UBdhHw2WarEHwI6CJCSWnXKzm8QnZ + 4m+TvBJl8ho+AI7y8EMgHoA9MvwQlyjLW1vBPiKtq7ZQQVhLGl5tYAqZ+vX2K0xj8rQSBOi1Fjrz + /RhjSKo3WRG7jJb6zWyzlVOkM4HMO6sdLbrcQXF1aFElK2CHK4gktSEPHt2aDcQWLJBDGLPGXGuS + IQ8Ha+sRxewYKdYiX2zX6xzOri7dsHu728yn6/gUqqdtgllVe+3CVGU0zf6TYbXWx9DbGSnha1Sv + 1+Fz5nWD9BKvWON5UQcmmJdoI/6cL65l3SsK7STz5bphOZ7ky4tP50/hp1zeN08Hl4uhaIVpKRmr + LoHmAAlTbVzXoTQrNy4Zt9dUXDlH04Io04q+JPFb2jKh9mlIbkymqGMgcpzIJQtIeZSdDvrDe1QC + 8h62zWKT+BPR/hZr+BuzHOUBwbW9HXMlVQY+MbHfvF9+C4bfh7/5wJFnY7UbD82yIi5yJM6Pyzj5 + Yo29UxHgRnSDpDmItUW2swHe3XHsirkEKhbY65C8To/bxgJ79eR1apWxwGdnDbHA6OStxAIHPPAd + bwQ/YperesWFIgg7bDYVOGMYoo+eI91SKjQlQ32n04ZQ38dWZ0uPf5omi4qL0AhlYrw9JQRkGKxX + bEprmnKLZh5w1pGiOeHtZFvnUpEdnNa++qUCz0/zRpA53S0Iets1/RM2BMzTOhtebTfDJYU9ixOm + UvpzkBKhDU7j8ArjkguguUpV36sMdFjsVq2qCFtWe2WA27cISXb9gZw+yfTM+dih/jeKj5w8xc2T + 25FYFJANYHW3Bi4gKOXJ/BsGTdi87wUyW7l2qg5JpHuQOmvIniOyS9AGQqPDoW5pGSCy60xafcRB + hB7ANS3Tsf+aLSeHO4F780x7PKJbsVDxjvk8L4hCHYI/P+D71HUZ/m8uLsxXHxhj9hcmPW51YUrK + lQuTWivXJPJLExzWhWuSx06IhpF4d7HJqzlQbCg2+TfKd3mXoisyxzpSk2xKQi0y8j/+Axe5hHZR + xBeQ9y4fCSiX+V0pG2VGqStkpc1BjaUcQGyTrytkSZq1Lx9OWQlSBms8i0zubF3UfpcwM7hHf5Kx + Yl4kxVDi+NZpshFDEwGskUB9hJtqlWcgbKaU4PPb7yfD2XqdTGfF+f5JPvbfY/33WH+6sX5eily+ + PP0mqvQVIyoGO1afgQEbt/LbYKjEVZMcHh3DJ6/Y8An+6/UH+nhlrGVPB39cvGFjJvoT/+TFP93i + n17xT7/4Z1D8Myz+GSkZ2qEac78MFVyWZ/zKA1b+1RNxofrXiEelXznzyw/z2HdLv7q+8bAbihwv + /WscxcavcfmvnudH5q/lh0FULo8Z+in3C6qeV/6VYgJLv5ZJhT4PKOqEl4PrYPskKOUsEaVJWMNA + 0MwWINPYR0Ed4AA7OAr37wYg5gZhQUgoFSCIHExKWDrLZ7GrSuFSLrrF6/cLi+aA0K5wx0qu5CPH + 1VvdeJcq6767YGFg7+Gkx+2QGolyFalRtJKx683Hz6axy2MBj4MoqEI1PvN8j/Nw5PlUFgRF+Tfz + 5NtsOcbYhYSyJhbZMgOBC063qN+o7BaE74Yp7iW8zutkorO8X1+U4CgK4woivmirSiF4wyszESuR + EdtJ5BUGVGDes+/Dq+01rAF61WYZpX5na7FNr7O52EVAbjrLt/NrBDXCbNF0WnWTvllkdZNcMzx0 + My5KGLXjrGDQXj390Ji9FtOaF7dmxhlUa45Q9emmD9Rvt39JaoO/5yoPcOdrDEzO4oGcj7LlQhGy + s2f1k1Xv+4wJrldMyzptxSXZAckZ6RSIHTv2AQ1WnnRsNW/yvontjwIFGlSWd/f+PvjyOgZcuCfM + K7WlnIDwAt6cnB02HqQgxvPp5OzAYlCeo4HgwxP+3OHdQN/US9Zg8KoTEw5ettL9VaSWpyKoJZMg + bHj2B2e/vUEwI8Li1a0GaYR8BzFdloZ68CIE9lCAvRY3OIyv/CTlCjyCgTi78LzIXiSjx61EMkm5 + IpJRq6wofHZSqyjsCETOsmE1ePGMuX7g+O4IfobC8Ip7uinuroycDdQpmPTk7clouPkzMyP1YPIk + KPsv706+DJ+oDA/K7yjVT3kq3dSpriY8TerVhLHxl7eTpf8L/MutBAXKMNcS/rvpnwxN5AEDqS12 + AofV/Jz4UY3EnGqgcAlcIQg9jweN1Tz1UCdZMdiWmOrW+lYMwTqcqBqgVmTnGO5Do0SyH7ThBDAn + cuOoFt9sLlcTxbB1mIpiJcS59OmjelxceTsdupOGeisNcO8roYxHPmHK/QTxxmKphJjUvKo2AolY + HKFWNiziTgIDucPxKeMI2N06R8bthIL3djzptU52OsuCWKze5Yf3vw6f4BeO57Ovxcaxo0bZ05SJ + tDPhck8VrFKVtd38wUoKfUTO0r6ckh6XMTxOlzuUHreM4XEa7lBqVYHbl04tcNt1wrAaxPOMe5y7 + 7oh7rmAzOwO3KcjwidcpCDh3TlYVxDpgENu15kIsuhyuMRQkmWcw1YS9Il+bwjyr51L4A9zh+GnC + fEpqIUypTGvAIJKR8YaIFMFHcwQfhHZMglBB4LmzKwicPrVzEHhrjcefKAjcJFGaAjElaiKKpFG4 + /crGb9MJzE2gqCKhKAo4sDV3R8j532G3DcRB1OFIjhsN5LSI27jr3NbYUGslA48S9zUAREa2Cwze + FRFGMOHvv1wynLQ8FcWUQEG8/G0spkaQ9p/rmYJRfDD+BrxpApc08T/RXFwHcEHJZ0cFjZEm8LTL + R5DO3foRMHicbwKYxFVOEckBUWwwL9EYcW+DCjyH4FuQdPpdYPGKF1rFh134RX3Ujt9PoRk05mfP + ZWC+BH9v49WdqGFmhP6Y3XeAjVTZb2ZED1Lbz5Fb4bnS/OAGsX00Fz1uaX4QlGvmB2wl0em/Li7r + 5ge/Ijm5wYsx48wHHjViWNorkEVtJnAM8qI88nJIt5TpDS4qehkXVQk4DINkp7McdLFcSM/iHpOl + aExaT76vc44Xzi0c7PX4Ip0onN5vCANCgbZ0Zz2t9EcQSkMDoa6AnjK7EXm7Aknr20xC1klJSmDj + 3Q8cZXm/G3IQnIf20G3O46hmzugVK/LfGI+9YDxq0a/lFLysy4QGaFgJWLycgN5hW48a4zdGEghb + F5CixHKYyQEyB22fCUOJpEgZJ42hIPbCTg+4iRbVzY8GOfxXxxXsFfC7V+hBG5mve5D/8Xh9FrJL + o4jRP9BfH7amvzOsmkeIA6cfnC7JZ/S4lfQlKVekL2qVzp/zk2ryGYsjx0w+c/0XY88LuDvygtjx + d8fVT+ZAvR5X3+y/qwSwuO1SRmOC2COIsR/ouE3fd36QY/Zf2oGq67374Un43PG6ufnVS7Zuft2J + 4eZXrXSmVsmVzBJHiJInJ08VUxgsSkaM/Ha72QiIPJ0zfv7x/RlIhYyhifjpAOisqKKb41OZ915y + tQNPIlFbW1TabTOsDVr3MOPKcXXnfSbtfAttIXuQUun3DYtzD+Bs3dLSH23o8LG55z15w5hHQJLm + ad+tISj2FShkVRa98p8z1oV9FS/ZoqvqTgx8VdWqSgbnCuQCZKNlurldpzB9ywKyguCaBy3lfyWY + 8ymQGSAtAcEa+3GH8sEWipVH/m81JEwhzWgvlbNDGnmQPTbGEZ3sq650FBCty6TrXliTx5dlRa1L + IeajS3oexC9/GOvxAvI3m/v44JjQIDRgeOm0/FIclwbyFlGiB1B9aIb32AoHBxIU96ipYTDxhfRB + oUIH5ll4oWbqwanXFS9bvmPN0mUXJkenRmLjn8a1GChtVyiXEv6UbF4Ndz1cxGQr1wy84lbKERcj + Ar4f85D4fhDF2kFaqtRph58bOg6htBt5V9WCdLa0SMYUg/iK7uQGUgfu5J4i8lnIYsHwPo3h6CE2 + wny4Aq48m97NRYrxjDjBTrBuK/CexynvdogzfkAhWF+9HmGbiNNSMs/t3n5UCI+WldYSnpmvbpNx + 04HroUJ8JDHJu5Hfndzm0d2RTPog1ye/jRSIU8BPxyddYJzEC7ZATkS9DuUk2kl4/uP8S1AHc4rr + hV2DIPZCZwQ/gkAWdr2kRRSFXJ/jBwNTyvVNLc1r8zV0Nxknjx+96REY55TDK7vWr1BtrzzPJjMB + giQCkpTzPH8JHw8iuZSTdYmwskljmmKN7XwExxe4M2Z4gdqnve8wwuvZHJPJBcwmBoBthGNKpqqV + Kc2WgjyGcC5n8PbkbrYcfPl4oqtch9wLrOE37yts5THeEH1aRLQhMRZM5PwC+Jx9FCk9bsVAJOUK + +6BWiRd/9tGtcQ/f9ZjJPaIXz0IH+EY0Cp3IdaPd9vjVGjr482+Nc6Nt8AGPIvhFrqjv6BXtkO5M + j1uvaD3dmVppRS9/OwkbFtStLyiDzsNRyBDDqD2zZvjlzfv3r4bS1yuX+HKbhM0RIU0XQmCug5nm + 4kZeXAsLoZi/+TE1AFjAfVa5P0bQ9ej95WVz93pfmH3MQOuQQDriSO/A/3cCN6jefa19NuPsi9kG + Vq6noPGDjXCK1uEqJH4Mb9hg3SBkRiLm/a4+swPcOMWujp0eE1N4nUZpmJ3J3S+uPq7hzvEKEodi + 4JeuR7dyPQrLx2Gz4vkemfd2YfdbXk7H36Zw3gvjWcvFuNPYEzStgNz6h6BOe9WpNpZzH3B/P9at + nwdPkAsIn4N5sJVK6xASUIWU3L0Hr0Zf6T0+k4iDMKn/6KDdqRcsUQcl9RruILXL6/z0ixktgZF1 + URh4VRDCZ6AQwU4fwY8AWYvA6tUAq8jy4Xq9gVmRNzmlHlx8GZ+fXhQAhdD1n02a3t9QdOORz8lS + 6PvkIUq/lwPlO1UV0wIgl3g3ju90wbvBxy3xbgTlGt4Ntsod8/FNLbqZRVWJ3sENA9soxA3D0Uok + 7AH47p8JprdkhHSGIc4CUG0oCkPlRmGoZLhJFyvMzsDEDMybogoyqNZJNitU0PPX58MnZVsqbMNF + Ir5ScDyRIitScCgd5g6nfE5WJ3i3dJUrBjlbkJ+dpNHFdT0+uYzQ8g2UYvR4GeKhw1tjf/CPgVOL + MDZLdmpvf9qSMO2DnFcp3VQWBGM3gKNaq4Pe3IcpZUaVnKtmwoOz2TfEhNyU2GF50OWI2qJbYA9p + BlJjPstfiqoeV+ssmeo6OPiRIrJ8NpbEcckQ2r3cV47oeflmbEg3IkheMHjiR/P0WzrPcR/p8cF7 + RR4/7pxP62SxUggV+sliWjTWDe5cjXUDO5o8AEcFd4h5FrdJy5rUqLVBvh0M4oZZCUJ2+ZZMtlnn + 4qHwtle8jTUdftbYqxIp1zC5wFOK1Pgq24ogS3Xcd86wWBhOYlfjUe441XDYW/aK/lS7bnZUT/Ud + KqMJh29UPnOzJbmTJkMZ23BIv41iWo/FivuSzSh/6PMFSBv2Nyw9bnXDSsqVG5Za6Yb9x7v3fq1k + VhW+xAtfPPPC2He9kRdhTLGZeS2MwoodEsb+BMvcoWwvYjTy2V+pqeevcGkwJ/J2nW3hQr4Uqr1I + ZMgWwFuEzxGOllGo9aW4TmHVh9tVjujBC5E5efpKz76U359cvnrzVFD72PDHj/BH4OkpcK4pjrEK + r/pWlYb8x+3M/9dxFJjqdrFuplAcVO1QRTqOE8Wguf/P4CItiVUwmaZeJDYLLomAimtfvI342wbL + PW20PQJTZ2SO2ltEta2EEUF/Ys0UwO7p2a+j4el86a5+kRC363Q+g6s6x+gpHKQyLWmDhxoMUEBS + u/fJAE+PrvYFkgrFaBFje8t+uaRvn6nBqZy4XYFLP3cdx2NLhOMGq4+w2Iz/9rooUxBi2AhNT1d1 + rOL5rPU5bL8oq9OnLiZPo7+Bcvmcxd3A3+gda+w32YUJ/UaNdNG8/XIudlNWQLiWo2b2/Hm7vhHV + wVyOUZSPd4M80ohjApAFfnZ4gFlfVT36Ert8Stv+4PgdalvT43Zp20S5mrYtWqWv8vRdrWoVCKhx + LW3b9eOI+yNgizySqUMfs2U2SdZX2XeB4D48T9cLNDsM35E1bJuq0taT2zombhP6rVCKjHu95ONh + vhu4boPYUYxCxaHvNSNEVYQV1PZLKb0tfe03T/BKTnTb+E2/WIM1gu2dBx0WIWIfzDqhi2SxSOaz + ZGlMDy7SSi5SrtKAk3VqWC2KAaGgUJ/cHP67znISrwUHSUrwvJKPz3JRkWqaonWDtKnaSHRHA9yE + Oj2Ys6PsDIN/K/jGXEQqmabtmByvSStuRjX43l4wL7DnZvS4FTeTlCvcjFqJm315996rmWl95Fdl + bha/GIeRx3kwgh9RwHYHXtysgf7fu8CQDrxw3TCSkskxzjO1IUJd8dVD5NtuFV/FK9YVX6kDs+Kr + aKPFvZkDX1rMlnfz8UaUzxOwXpuqhGb5WKlHLPYa46Q5PcV3kQdP4EdhmgoGaUqXKlorlKHjiB4o + Sp++VH1npavOJP2CZDF5O4jWa3IcQGTfHfCTBij3myoT0ZbU00izOp/dHJMxE7G4vFapJVHr+T60 + g/utCsJA6hcUDhuHYoqRYoo8PnGfs6gTV5Tv2LJF1YXBF2WjzBK828j7DzengKFNhxM2qP1Gda09 + PyBWxwgGzXQ/qu8uRInRcHs1+78tbD4hv5SpHrE/jvRBcR474v36eIewBLOObOZwN5TVq3tkVQrD + Mddhtlymh4qtSDKok0Q4mZng2Hed5qigSlbDfVRVJNL79+8P3yCPRPT2fcrQn+EWO9jH48QOGUv1 + bp3IFM/DGCHH4C1hBUkXB14rHgiHbvMBStcjnQki4NTUIxSiDyt8mv3/3vGxwQnWulCFWv7jL5He + bDSxTgL0fOe543fM7JYvWacBqk7MPEDZSjx7nX2XsUj1MLJbUALS5V93i3LpPYlIwfyQx278dLDz + tUWKJS5LQYEqSfBjOoVruUprga2UI+jJHMGfwUEQuH4b5kURhNchJrUm0brcDwR7bzaLH0ichEOS + jmoLZXfrdCuV9wMM1Adk87HAF9UWh5frq3HTvOzN6mOBRztuX2Smpt7IoooZlOwjcBT78GPvuRN0 + 4x7yHVvmoboweIdslLFon04uXpu6rGj5PVmEtQRgRQ6BHyIvVAnA4k57m81vZngvKhvbDlnMXq6L + 6cJUsSbX27yRdVgT3A9b9117X1fJBs6dPeJdm380ZBSpTa7HbLEA5jnpqr0C+6AiUyK8dCzoq5lu + l0Q6KLR7DKT9hU0JQcijOB7Ya+eIJJmudocjd8Ac6CFQHK4rgsyTXnxQVtBTvkvnth3gAaT/P/b+ + rbttHVkXhq/5L3Tz7RWPSJkEz4yvHDsH97QTL9uze831jh570BJtqyOL2jok8fz1XxUKAAkeJJCi + EyfdPdaajmmyAIJAoVCH59lmiwRMOdTsE2bDIa6NOik8ZexWU83onjV5WdgjixmTjrbAvipAP8vv + csZsq/EviYUCRuRLc6UvzSU9sydEloFDrgWMTFf3Xm/A4R22xj3RwhHf2y+0CffMMBXGBN/beJX0 + Cvq9N5jUPiDdxpPpqZDAA+f/rnLUksiBDbwlagl/xhy1hJoooZbwixJ8So3I4j6ZW6Xf+XiU70Ed + w6IPUsfgzlFoC88aTHBeo8qIXE9S6f0IDLbn4GyQH5/SON+fOW0KJeh2swgcSS5H4PhV2gs+vDsv + ldaEbuAEXlQOwb10WczsoesE7g4k0rsZiK+pfP5V8x97AErQiVwakel5dQionS/pktJai6gJiKM/ + Sx5XgsFlMrg4vWJFg5lLIFYXAaYwgKt40rrFHIP5mp+1eMx5PlhlmyXOQl6LMp1PcePgR6nDwft3 + FyNh6Uu1L6mBeWomJ4jJvzZKEF/Mujy/VIkDriTjdRmThju+dukl2xjyrkgBHE/xQ/Ae1w3lTonP + N9Wr51zAXsLGgac2MNdxXjHWbgOjZ4w3MNGEvoHRRWXdOu4O89Zxm8xb+AsXMBI4WlFgHir+mSzT + TrN7j9jJv5tR+zObpAra2XHQpmvnBCs8ZZrHmzejZfKqy7SUJxvYaGEPkT/1JxGvOYpsK4chCSi9 + 6W9nzA3a1C/LB4wMLCW9ZGLJ66SS3p+9d6r1yzxoXiyWcV6/ZH5gR+EQfrDQrqtfvjp6/1YaWv+a + QSP/PpXKER6N1NcN80n6loH2d9tOUvGU+SSVzZQmqbicbz6e7W7ffLyRO3hx5toHjZtQfgcXOHJp + fvv+s9qMhATPcciDqtQNfG5OEGhMPPJjt7V9jTZbPZ3VMrX8ZBviz7+BRaoIJX4Dq9MO2+kG9ZRx + IYpqRi9FkZdJHXBIkluwrlOVGGjdbx6S+eB/P75zwvBColKUZMLqcjy0qn/mVdI2o+55UR0HsZpR + 4XEMX6XdfKJnjGeTaEKfS3RRZsc+jrPV40zD8BT4AEdn76Nyjiy/uXjv0ewushL8D04u5rliX4n5 + mIM+uZNvBjvxaDZdTCd08KNoappTt3ZTL78IV0uL+N2vSQbTD5ys6lHoh02iSllKagXcLbPNoi3Q + MzQUGTZ0n37r3A4YRpFgkYMd+h6kLB5h0fPQIi6i97MxO0/mMfz8eDR2BDAxG7qjujW7R/hVaLHQ + Vjaz/d5rzdkjHzK2mGUjusEsrpK9fL+RpBcXx5yagoBR5PZYIFUYzxAERR7Fpan8AZ63UAg3kEMv + 6JXtwrZzUrdamofvwUT4NPyA+9ZbhzbB06EvqD3BYE88GgVxlK8wOu/yvM8EkYEGGtHq6PLTHDt+ + BHS7LXKQGlfzTmuwDzd1qJIxHPYhbOnVyh8yTuWXjei5/OKqSOHHBb3EOs508xkk8FiF1H2Ue5LN + FK0BfCz5/p8WU2ZXSpxUkxhl9W2R3SmshIq4LSwJxj5T189zpwReXK6lEGmlloOhksP1dGvI3ELb + E+2TTrL8aRiGdP4lnWUL00Qt46d/TYoH6dMLCTfw9zPmtQCOptuNvLVCcslXS1cFL+ffr91yQSqc + REs8Au7rlyxkYRQNWehGgcic+LusP9aS64npbyX8M/N0s8YRzymtVjQeWJwtEvWK8G9JAfZtlX5J + 5wO989zNNngB3Waj8EDZT5jniTmZfE2+P3pzNEKDeaoXDa+EH/noy9qtuJBl0qAeqw8bObWZE3os + qGBYV993Z00+81no19T6a/jRWnPKzbytNb2JyK6iEta8jfXTfVMLZ7DCAAycuB8MwIAYSOrGtZ3l + 5whztiCqyIXZmKvagCrYLe+2KYPgPzgEBZuWx9B/G5zBoC7BdJDzrEcgPxYF1IKqG32CJiJqArFc + 0824xzbkpuUqszLCUBByxrYxK8VDxmalbEQ3K8VV2oiWS6pUwayXuzmBiD2AbXk7eKG/Fdif6/Tb + +sD6wx2s5tnlx4uRomhRh/DB29Wto9maKVwQNqZwHLoBnVF3Zf+aB6VMJX6XwNRPdLrb9ZhZ9Oc7 + c8W2iBh1TRaWq5Wo3z+dwZG/BXAmv90MOJMkl4Ez+VVhYp5dVhCcPM9zKsCZoefG8TAM4lBQzVzo + 4D2D87sXzsuDimlSzPeDgZxnX1C1LVMdeFg8DCpgnKIXZs0TCvHeggj46y2BJ46XCEKEVsgMFKBg + VjqavXBfEl7m+4T/c4qFo8KsnC2rIFIl/CHdvIyioMG8jD3XDllcti7NIGC32pp25JTa1FCki+0q + M9O8Wb2tIPRat/WQ3KG+2jw0Q2GD4LgRxdtBZ7fn/tP6SSaPhctDIWN6goFlP/uVjzw+0uLDmdqM + fPC5tdbwocw8ZLYtcmArGOVtNqqIDKryIjN+l+dhedoOof7pI9oNAuRJwaIbhhGDzm7N12wpfes2 + JlL03lxEb8JXrJ0rUz5jaHKqJooWp7xIW9rkZiHybU/eHp3A/38Y3GTfBvcpRl5AytF1kb4AN2/5 + p8EJPGrh8zyA40ZkUNosyq2nZDmSJb03MDgP+DxS4mpOzCEmsiP5QirqieHOSTpO9qlWfNJe7Kh2 + /49B/VxdvU8WeHmmzllyJPUDb/W9DxbbYbHg//CRLdqpD2wslzZlA5n7w2F9P/J3xKkMqqO351vu + j/grN8hAemU8O37l2O1ifeIZU5+MbEJzyYiLtEEuVvciJ7iI3LpKwTDmWEqLZH3/FZRF0cvy9hIh + lhYpvCFI/HDpyvTATTq4AHkWCuVumMi2rX7cvOQtg5bBciPECAHtkG9nPeBGgFVGlVoaPGIHuz5g + hCLSppMNRlvg23ZNYqXWw6oB12bT+zVS3p6/59pnwubfzG+z2aTgyOyuNqVWiSQlXhiZI+bS7aZ0 + eCi5SoYHV4X36Pp9VPIesdiN3TIT3iiCHdIfRnboCO/Ru2z5sBokajRk8gVHoz7arJ0FjbdI8Fyv + k/H9g8jDTjZgadwnd8TWze+bjkHO5mYzS1evBie8nhRZzziNFg6fgmhSQbB8OQ0p/LNIF2BLcNQe + 6TNa30VV4PG8qUHBPS37r7uQSqFDnXY2Djz0slSqXAoNyDmig4+zsCS1VqJy2sjh0rHGg5iVg47b + xYjRGqnhI1KTcveCwGkKy0q51rEqBKp+TfTAHH9ZSy26Ohwgg9TyLsNJnc3/tbkTR+RsIHMXp5PH + Wbq+T+bQLR63eXHx9uBwwD/f6OItwokn8/F9tqS4pVzEcD6aoj8o3wJ5N5CJJUXnE1KeIFCYJMCT + k1EpAVF2PNnw3EztPbB0+oF0AK4R6UKCT+dRSiCROMlnQGvIKJ960HizgN2CapYJLBO+SA07X+Vw + 2Ho3/rG7eXNYjc/k4mC2Pt7ufr5x5GPP07aYJsypOtSxnuwOF47BfGiP/36tTDfTN3A92Eh4J6bp + OH1IsUod9U8+FrBCG4+mdZXqcJAhgct0VFwSuIOJzcwYMapjAfp3Cps3NN5H1B3lBA0KwqwfnWDw + 9jOY4ijm8xA5W6egO8fbLaY6zzPzSMvUMYW2MG77yM/kNTZ/nl06TovsL7rdyLgSkkvGFV0l4+rN + H5cV1ljX8XU6As97/dKPYtcPhn5s+5442N08IjXd4I+jq8EloXlQGji3a95sllVy1p5gTDB7u3YD + +jydo21VwyetMbj4blRqcVgym5gdR07kVFhaBSnZarpCTzZHh0XTAMzpO2iUZqpe3hvaDQYQQ/Z2 + P3bryFYUlKNm9Li+Xek2BtQuTivdto75EHFwFTRHr+6+sMXgBXwUtjgoDdeh+CuaIPyrcTtzOUVP + BNLCjWi4lfVZYWLReLQUVqmkK5yuV3Xkc5z5kMg+RlhlNcXHJzCcU/Vnnmu2Wqu6Trhcgb60cAJL + y8dzWCCKIRSS887P1coKMMONrVOWPwfkbNfKi0aAmq5FF985C2Vvja62N9AttLm0VlFbX0/sGBGv + Z/rz45lrt9gx6HajHUNILu0YdFXQcV1eXLHygdzxOEFvcc8IcM9gvj/0o8gWB/JzHVq9AgMgFv4K + rqly7sMBskjO1/gEqrMv0+RmOuNla5v5bPoZzkoZKAnE5VryFV8RK9MzzpeLFas7bBc7RW1Xi8r1 + rODAbTodM5/FYVTesQzqvYsNYJn4tkN9sZHy2RkDVEQKgyEqbQPxmLOj29YP+kIWzSqVBeH4di90 + Na7j17EPNMnTUax7KTz/0eQLQc3rN81xQ6t/HxiHZ4M5VPdqT4XOEDHJXe23oB2j2025q/0q7Rhd + Ja398dObagpegHFdPQVv5Lm240VDz2WBI2rv36rVLct1lDcBCYrlLkj0CcS5h39PcKByHuoEPbF5 + eAcsi9tkjGoC3V1yrxXqxbGvCjLwXrzK4qt838QI0nLND23CN1Z4oOCPJdX/MbupZua1PY2AUnIQ + u7GS4Zc3LOfwC8yI2Aze8hq35EA/E4CYBjXM7CD0A8YqBx41bLWUjm7olzut1XZoHa/sF4rQQgIc + 6HtGicW6dOCoF23iJCyhYqJ/sanSRjZiNc9EzcNaOxHweJPvizDRPA2JSOjA1aGOTImtfEHbV5uZ + 6YgnlcC8xMPCklNF3ovWYJ5GVzzpxMJFp7Y0P3LIdRUQPIcWMri6+oNEUhXNcjqGIwtpE2pJ2fiD + F/Le4cB/JVoaDs7ExYMazdQIIP/9+9LkIbQFDkdDT0y0dw+ZOp0kob5Nv4rozIYEYWkU/OeRHhAy + w6JMtQvLvXdbE/Vv213elgOMB9tCpE5BtIiakU+eD4roEyUoPUlBeX8xbTiVUb4erHAzU8cYf7zu + zT2fuB9J+e6T2GN40q4d/h6O6T1hLT07tu7IUTlATtQSIFA9Y5wDJJrQc4DoIhmdD2B1CVKX6cRZ + jM7RCpMeEGF2WI2OEbzbQhGU8eMREqAdMz7kN4JhbJUu1rBstkQ0nzEqiB0x2ytOZoEq3doz6TIZ + 5+PsHV/Sko8QR4l+mWJ1HP1zNb2DTap2kj0VbIgd0wmr9PX62SOeAsON8QjZagGrEabGAmNjN9lk + h7Muf7wDdAizY5pQGLDGU/ouxdiX77IfqhoWR1FYlNLC4dlcchq5MlIW+a0iZXC7aaQMJVcjZXBV + nKA/XldO0K7LqpGy0EY+gWEIi9sTJ+gLbhfCqoQhy+BYlDxgQvHHEXTpXoO8Gg7u+Tl5iRMNUfLR + +76azuBIxNM/5vyAM5vepqtFMh9MUhE6KR515+vqUXdPJoICusGOF6g/oEas5HksRNrgZBfA9lc6 + QcpYzbz49uuCtYsDo52qWdSI1FDfhPYqBcQZ7VQaBvGujlvf5etaOP/yQFfoi6IRbsk1jdZJ3dmp + Mc8kJDbA2nHZktLTgFPwA6D9cZpV3mDrJG27WweRsNJ6EdgHkqBUkJ60/IiVxmHtbD/1lKn1lzej + 2X/qchOCefFJ1w0YUmLkGNcRr/L68+0lHFLM9TzdbqTnheSSnqerpOcvPpxXolt2FOp63g1fv8SU + qCgaOk4Q+SIj4iKPkkiwb6k6tVJTnhJIlCU3j2D0fR3kEImz9Es6oxRF+BvMYpwPypC7uM8ifyFU + /cX9QzWc9R/SmWbSmaf+LhZOHpWHGbkxaSVfne26ZEd2d6q008DcNRBRkQw6aWePa16v9LRH/C3p + URHRGby5dAKnRe45v90s95wkl3PP+VVSBpfvT8pGH4u50i7lnoeuH4ThEH7EsTD6ru8JIxM91uMh + 8bsmd3eF7PyvYA1IHqGJjHIUQ3WS9uBmCV0aLxQzAHoMAkko1ja+qHRtqEhsouiV3YqoUT1jTGIj + mtBJbOgiDfXmZuGIkloVPhgc57lBVR+LteO+P1CixeVyZhs3EmQCT5jK3H2xtq1Q9BxHfwuYPaAh + U0x12sfGgUMNX7iqUqG7IFIljysc0ZSQqvYV21u5XBTlpOkeUim1JU2nh8xJ00UjJdJ0ukrT/r7I + LicxMavEgwVhOKvtILK6qoLCTtE51UCpk1gxv/pey/FUzxizvoomdM5XumhE6qhJQf9iHLh8GJ9D + RZcY0ZiSvS7OWNgCuYduN9r/hOTS/kdXSSmfHF1UnB6+jSuw6PSI0BiOXOgD/AhD4fMVSYMql1Cq + 1gK6nxoY+Nsd11wY41b0y7T7nSSLqkOjDk6Hf7rG03oQeW5ULYTqyTjlfZ81uBEYHHP8RueE6Jj1 + IX1IR9JOqotr6y5d3Cj4uT8dXHi+nWOXLe8YjlfD8A+18U8eHsD6SOY7vsTqkHsNsGmwWNKEPywZ + FXHnSWfQjyVWOxXNFyprEkOjYu8WTippyAR2zCzM0/IoT0t/RyzJEo+rrLZ1S1+E9Kv21EJtyDMk + vwBG9IxCcA4G4fgulj5sARaoUdWGT24PNolaJO51EFh5+8WdYkpw+v3SDlokONHtZjC2JLkMY8uv + kqY6Pq5qKicu8425r0d+4IeYlRoEPJENNdWxWkoj+PIwGb6RiUL653hcp3+0hDpBFCKW0GqRjMsw + sr5WcXB9VFBMHgvhTFE5fet7ceksHzedwRl8WycMqhUT9W9Y6631mGs3aSuwU+OoUrZZzBfnork7 + VKBh6wWhYbxLdCkHtaHroOBwf52kyP6aUCVu9u0RFACMfzqeplwx6dpIq1y4T7d228IJpVBlQyqp + xO6TDtnyvu3M5G4im3CYnJBqBbl1jGMhBizdtzYTzvOkNETfsjmR7rYIuf5AGzWXQVWMu1evYZf8 + cpewtjHhisx8UHC9yaPf1kVq1Knu0rZDx3QW2xRv8AKKJe/fN9+3eZh2ukQfXvdsDi9mcopnNLu7 + d6qXjbqfrJCYQOZPLr2whVOdbjfanYXk0u5MV2l3vvr4rrI7w8G15FQPXr9kHnPcgA3hp+cEwh90 + WczIBPOV5x6RvcdZg1CTSx8u1/Lpkn+53LM7HGDRs7D7yCxFWQXXL1rUQkWu05GQl04ENPlXmLyq + sSnYwNMHdLncvRpcCpDI1eBosmQFT5Je6AWj9pAsEQI9WVNxG7qTeasqdic+7ithd1zNbzsHcgsZ + usx14WAUdPPuG8iRJcMi5fndZn43LSU8g+1tJDW3V3C+HP12dH4xEm72gtdUJBTUmy5B2GwaeVEA + r1gONGMmSzLBk0nJzAqZ33xo833QFuXazVpOkPl0TVvxClbNl2qJaBDHflOXHdvxbFZu5nY6S7DS + NoOvJ9jtCwJd2/PCdv2WE7spCA7/12S9IjIAC5pSywuQ9+US0FKSebkgd8dXKx2FsY4UTR5Czqh/ + CWbrMwP5Dy5Oh5opDm8Cw1M+2vM0KVrP0uLR50ng7xoeS5/Kq3Q5nae/re+XKajseVqe27fZhnIB + EpWdj8DlyXSOyh8Ug0flusSwsJLJ6VdTOKn8Bv91Fr+9T2aRuxC8C6Wkdl01wcNiApTV3hClLh8y + BWJbo0Zp9y5lSVu4fqXx7EQRT1ZgAl5f0ZOBfUur7652S9tSh8s44TA+8CVZoRyxDLiTJF96cl5z + bd0S78SPQ6KbrZtbnQFOYBJWfRBtm9hWoOwFefb29gVoZEzuI2/HsSem4TVVmUbdDRmFLxerdDOB + IV3cJzM5N4y/POp92bV8Z2jxODGH1KmN3wz481jIKAN/zivUK6mcW2shm6cGHA0J9gJWKWwgWzNm + m06XfkgFkQ1Jpny5zdPmuoNaKBeXPlkdnUlFwNbsxR+QHrrr6e399Zh6uEiBNdvAbDA+Ez9RjtXW + nnc+xO8ZXHGZTwBPWw1DI4q9fiRuGSWXxYFGcdYFFrwvEFowi52iGi+b0K2laUnrFWtmb/Hxzk/S + zifSU3r0ngCyLBDZ83uNT49JgzFlVR9f2kGLrGq63cgxICSXHAN0lRwDH47PdccAmMyRG+E4FT0D + PkYYY9f2h45rx3Gs8B0/3/NolGbQ3sJowMZa9PYWyju4d/gWgaPKVvDVxTFj9hA08TjjXzepSfx/ + cXXx5gBMttlDNtnMCnNJzK3DwSRbJXdpwROw2iy4WZ0tydpTj9J+KOqmVb8KcTVoq1B9x70CH8YP + HSuZC2gPsWN7zKuAVMgeVFB26ge4oRbZbkoQ1JrNj1diiGvLj0PbZ6VT23ZpekcLxS58MVxkM3wb + uBsONemyBK8UNGVIyqas7ROOV8PDZvgFVs/VCGzPVWG26a4m8ippMxTdQBQ9LKATDdXwTB4xn3m8 + olPXzWaCk+6w7dzSJpSYaIcqfDtA9KV1Oud8JZikbuHyVDlnQcBoV2K7UIhkSb4cBfi7xGLaVmjV + mJn+U2AnuUTlvm1YuJTq6lLz0WQzwxosPhpV3UQEHy2qx/jnDOO8eDZZFvyRz96C3qNUABa74jnv + isZv10zKsmpsLdOjT9tRExt9sv5baTowur44C4vkq5Fqcuu419W7dxS11fyhYoO/XYJ98Y/RkbEB + JB8wMoGU9JIRJK+TGXR9Wio6CCM35sU9xewF5/XLIAyiKBjC7GWesIKuuUMgGwtFi47A6Xye5ieO + Q4N4p7SMCSYXh3L6wGFiqSgJTHyp0XCiwHrjiqTYShlt63paU5xg3pEiY1AN7jW6Mxo9/Y7jMDus + MPPWia4vV/ODsudfR1n0AjjcVXjLSu9WNzhyVItv4ttu2TOdtwTqPrDLSF+9tdTwXqUMjCeeL4eS + 5QHvvt88JPPByckFG7yYpMntHD2gk8fVGpZwIrKH0wE7GHy9n47vMRTHE9PynI7/GYH18xl+P8/u + lyNcG+nNv5J0eYcJaBOMW1u42KRRE7pexDM7AuL2UHNE4Y5z5PfuKQd7E7n1A+DMv31Rjvhc8G2z + 7fPpRzWzxZXZXyM/jhrjB+fB1KHi7fPh9/TscXVe16N2G4SRJfFETTVXpfaCNcI3pVpF0IWwr6O0 + bcBBfSWrBCLp3Y5c81RSut0w6Z1LriS941WRrPL2I+I/lbLeGTo99az3kRsHQRwO3RiUvMglvcrB + inE7WqNtvcKAJ44EJghL8JxhvoVxAwmjruiESufOYog/mE8/XW9Bh374t+/J2k/6Zbt9lW3WxQWt + Z4x4rGQ+VcCkndjxw8CpzxxJlmV9UXI+hQ0x8diPHCe2K1JxpEaob2HmFMeplvXEdnRikSb5ufHX + KL7WAgT5ron83O+kfWfdrxQ15f5KUdaTTxqLz+k86d4mhhCXPO18bLh2EAPE2wYtOF2nGqU6ClSI + eEa7VWRTOdm6EwmjJT616uS2+fE93BU/fNtm1Z2rtMoNe9NF0lYDwPFtvqPgt8n3USz+awlq1tWU + EJPF3TpZWqFtx6FA23bsFmUNdLsh2jaXXEHbxquiAPn6mmFyawm5lVXRtkeOj7WRQwdRtz2ZOClB + d0BJXD+ywTVt86LqYzRYJQ9pwThIVgPeIIM/8X/4QxiX1XJDfqBxslmlObs1HrlQ6Loo9NXgdJVR + gREfVo4Wja2s4KF0jk3gJQKDnsMfJtgSOcRl5uPleg0v/VTsEX2VfDXkZ5xIiEw1zHoupNuYVAhz + Lg5hs1BwBdx3X4CL0dqpjLxFc0UBjjKBoe0WNF62A9CxnrmA8lEaQGZU8KDFCe6n8OjD7CefwLZE + HDn4Q3Si5iRTpna4i4X8WwaX/7Ie8L/c0RY9xq+3Xrcab9dhcVDwQoiJ2eK8+iOSa2JPjUwb0G0L + z3guUdTfT9FztCVtYgv8RCwqxI+O2Rv2ym4FpqieMStozpsoFDSri7QTfE4WmDKHah1BpTOYSkuY + LkX+1OL13/F2iz+E9c2OFxNgBGY2NvlOxIcCnZ+NP7c/ofZA3xbscLp0kRqTSUD6r0j6pEncnZfX + kyfOFEOxE7burmCblpGkMs5MV7Ph0zs64blFMYuMto6d49/4ZDv7fR/o3hY5XRWARo/yzLr5fvrK + X+JC3uv5SxyXZufgm/qL+pPUwmWkkCdYyEBjxi2hz8RDxshnshEd+Exc3QLlcfXx6PJtkc+VGCrl + QBQ1udYOonxEISN0ig78zzu5fimrg86n1KfOjIId81Fpq6e2k8UiWSbrturtGQB3KKOOhW5Z1K5x + 3f2RaLZHti3NEid4BxMkbGWWiGdMzRLZhGaWiIs005PZJPucwguqgknLEYiLN5v1I7zDJL1/nKT5 + 30sTPW8EzRQ7ivg8j30qPICZALoKizgMCphN2djhDEYA/7XVB41l3E08Cp4T0c50Mvr2OOu5r30V + Xj+JAW/6EiaKwVxWS6Ssfut6XccmEPzCLE+I+nC3YEPW9cimit2zM5hcLeCO+e1mcMckuQx3zK/S + cePT5bFbgTu2nSrcMdKphs6QeU4s8dtK7uxsOb3j7ovckSx8ttKdTV9sxX0nqjwMI0iPylLhGib/ + C8kkOEak3p6tssE2Ysr8VE0upk/LsVvvYIIhFR1GvqdCkzX9L7migsaYhAc6oorKUX5d0W4dIbsb + NEcRisKVd6osu5AKq0UnHJ2gdKfcDo6Kxspg7v1o1Tqn3inWD4rvkBczEZF6nsaqv2zQGJUSzZVD + Mc9q7lq4KKV/z42d0KKX4mZPuf2Wp2QnUIzadQPc0mUoQt5bJuEP8ZBVTmV7nqf9YNuYGe6xQd6F + VrrHRLzLnIDVfQnoc+FjGInsKW02iBz9c7Zif0E9WPc+JdVpNvT7Y9RGtqtQD513zHllO+1gD8VD + xriHshEd+FBcpZ0bXpSJ+M8/TnCQ0kThmlo4kR5uJGOAfPNLfMTiD3IwRMdhhJTqURrUA0ZvezRq + sVA3oLPatANrSsjIEwcdnmJfEHQHBKHvW3+/fpxqfVF7eK6ARC0z77V6e5/wF38bXH2eNkswP05y + 4Pg/z8+YzcxjnHS7kakpJJdMTboqoNv+eFtJt3F9N9BNTf/1KIhD1x+Gth1FO/HWDwXXAgiXtOK8 + PgcX+SoHzZW7OLJUFvgouQtaBQoHD9k8U4+Ij0HYcJu0moTTHoFdQ20rSKqnCNOl6rQXH09+bjj2 + J/5sFs41xaLhB5FEzu3mtmpF5NYrZ49cvVTC8P7SjltAxNLtRqtXSC6tXrpKq/eP6wt+7tOWL/Md + HSPWjV+/DALHDexhEAR2KAkTstVqit7iP9zBap5dfryoRT7VaSHR3mKKbRL7ORkII6aGfxEemGEy + 92gFQ6hyOkd5M7mjfAKvLRb2H+uF49QfEDnBYGll20Y5CP3nMvAxO6o7MbqYANAESwPSAuh2FbVH + pmfBoGlMp/qhLW6Eh3QiN3QqCDodBdf12Hp+M8biK0Ady1zn+/O85rzl6gTm0rFi2SnvrrWURjzK + vTlZfypK0d7YzZW8gELiMa2ZVnTmrmMTUAAnhh1JYljxGc2l+B7fpo7/uDxtd/b0PDofw/oYHbc4 + Y5rQkz41+UhkUx76pzPmRi042/ntZpztJLnM2c6vCrv45Nit+GA9z/UqpO0Bgz8MA9+VNYEfivHH + T5fvJJFINgPx48q+1gHD72fn/SFievndKdVOLq+VtkeMFpslFprSFEu/LWAZYkB7dQjaYTZTyOiq + Fh8nyGTM3BEbrNOHBfKDIy04ju1UMJdcXh/nzOBeTGZoKyikeoOU4o6ND+0guyR1YU4k3AthZE/1 + MT3Vn0Q25fx+unQj1qYoWD5gtval9PLqF9dp/b+7fKsvf9f13CiK4vL6f4nY2R6Lh/jTxx0DdcAp + pjzCxCX7gCaVLLV85M7ny+vRxfGl0g1LaPzrKKmeZ0WUNL9WuwDR9KtbyM9KI0gGJQfGKVS8c5Gd + 5/oFR8x+ZbN2yX7iIeNsP9mInu4nrtLnG2M8eonmrEoQwePwTH1KjgMCuivF3P0D6+SPd8xhjkB8 + zJNOis1hhN1lIWqbvmLge7L6Pp+sDR8OL4EckMF6utih/+TM4clHf56egbFmbifQ7Ua6QkguaQq6 + KurVrs4r/jM4gZfUBHs9cuIAzlhDFz9ZyYOmnZ34SWSznGdfUknCcrV6qDq6KmlwpdNs0/kzilno + SljbXD3kfFxyxs+md81Qv5HnNPrTAg/pWctl8xLnIoEnanFo3VDHoc0r8SPf8ZzA/6f1R1MnRcDw + 7eVv5QzJoY6+SrwF6kh4NFvcJw7huVJVhAJSKGC+JoOT9I5pzxLA5OFgBZ+m1gjh7wtyYCahg+yR + 6jf4bpDMB8t5wvLnLJxEiu7AiZ2nJkrLw3tUIPb2clTIjGshvRZUMiKH3kmWMHtRoEgT3+p7lozt + m3QbFp/eVaLdh4wd5+JWPs9dsuJmWT+kDr3nLMCgLKrtq1ZI/0Dp6SuySVWaTY0+8or7sd8Z2O98 + me18ke9xCmC2JDRq41f/3dyv/nutX/33gl/94n/OagiNPLdMaPQysNGWHQbMDmVS5tnpuYiejAp7 + iMq4xoCK5B1dcXNvigQGBNaSLDkbKaEml7auFR8zkWbzG1woZtrUPE6Ch/yozYHpMEhD+xZ2CDYi + 3DLfX18kuF8dT8ae2Agv7zNEOcRYUCF4zNfiOvkrS9D8/DadIdCdoEL+NqvCIt5sJrpJErtuW0c9 + ypin489lQY2Y/V4YhLbv1gpCq7Ikp9mr0iCnP35nWK/TxRQ3c+wbL/bWjk/MLUME7Ozc6v4hy+pe + s7lzRUlVrKa6XDi/FNko0vxp4nLLT5+m3MKnuQqzamt6WiNblWzI+jdaaxbqpJwTK0bkJBfVEAU6 + toyxmdUm0jryeanOpmqCGvrBusVzYzJFtVZNn/QqT+48Qhae9itPc51j8jjYz66MNImZ9y8xcXYf + Yp+d+40xVcvD/Fd2SxZZ8YxxJY9oQi/koYu0kabfyBX64vJj4dxwYMnrMqhyuVx4gVbYsMQrvHQn + CGxKpjINphlnUfUV5KPa4P2E9J0pRgohzPHP8exU/zX2GEFk9tM0BUfqfYJWiB/UVPJ+mKlPEg3d + p26yPbk5jBhXie5/jfz/GsG4qYDqngUWhU/SqYEd8K0GkUvjLu4fB/V8KlXZ9708ns3D5++eovqi + b4+YI2HC7KANNzbebgoThpKrMGFwlQ5oH48vq9zYjs8q3Ni+5wVOMPS9iLnC7XpUwhC8mz2OM81m + nK5krAZpvsAaI2TMj9MUfsxHF1MwD64xQng8ePHx4viAoz8can7c1eIe5gzo4cV0UqTFohPTx/Gy + emKiyGHRpbs1JNyIwNqUrlTs0S4YVi8ISjHnovkdhzaLnQqWfP0ba07eoALuWpFq/b0yDtrHEczJ + CGWzzDZ399y01vij1UAqkgx4UW6eJev7r8nj0ORLHerzgrMWirFEtKbl+h7nxybNgVPF9Bjw6XHM + +NRgByoYhFNWhZ1l/UhAullvvDPDVSBgmuve6HsLbcST3xuoIigMWRf8T1w7eHtdqL8tktdeMf+Q + nG7Vdf+zeV33zqhV7kxGHMH36eQuvc/usKQgXXQHdedqrDJ7u6F3ys3PlblJvt8qNwluN81NQsnV + 3CS4Knhb/ueaVXY/z0N7o5Sb5ESh7QyR5VOg1+jpSL5fTUfivoOvCfynefcB7dWcTh96cBqtSaf/ + VgSW0V1KYdAoDY7njsPKexmRCzbTqDNQsEGTm0rrYV5bqd5bY3Lggf48b1LnRylxfRaww2Ub1ofk + r5TiBESTjjuEbmzw2uWUkNkWCWxUnChn+hffWZI7oiPJw3Kcm+brPfpjvk6hU9aHi5zuERehJbom + vRo1L9VOT7UV1sB1gZ+ZDNniRIC3qxVSHzFpI2HHOY6s8/yd2j2PK6C8h2yR9RR0bA4hyiTz8T0W + 1ndR21KlecrvEx+Hr2y3nd+HnjH2+4gmdL8PXST1Nn5cijQcmSuQctKa4mK3Kn+y8DFeQAcGBvl8 + WMB3Z0whhDEpELntTyUaEorU0fmFbnq2N4fai9pRnreVAbOVJKr2fK/CnMqhPRyMs81iRpOO97ww + uKt0nHF63BXsH3dErGOGcxQ6Xg3we+5GHyerMXz3tkuVEccOzhO4QePz23e4WSzd1kiYp/CA8i7/ + ZoDK5DLm1rAXwSj+a0NMVJQhq0bkdiNRy4zG1fNtQjHZhqWocCBvHhV179bOG9Zu7XBNUdYXfzbR + 1Nf2NyO4WfJmPCR3uDdvHvbAd3cjMhPReTp7xOnQ1VsDep1r5UbNZa4ausj6HkhmPeQds0A4JWeP + +/izIo/gFAUb8mY1yr49InfxPmJ7i6b4tKseH/uR1xLCUj1jtqvmTRR2VXVRwBEn8/fXF6MSY6IW + NjG4pdgWxlfgyMb3WrB16ZyF5S4i0Dko6cPmzSgvoTKqODJHK/qR2WM9oC6R2VyLHNhtRFw7iKU0 + /EJLhVG9P24So6Kdk0svjs29wnS70cFYSC4djOkqWY5nxyeVczEl5hSrYQPETfLCiEVDBnujHQhr + U8sAwNPYCU/hRK8IT+C8T8efF9kUVTX5EVeHA7XeLpOJExQ9hJJX6QVVOX5JD4ZVrqWj68vTC3Eg + PxtPGshFJTEgBbB0qgQnaj46Ry6r4h5NEtgw4SVP6ktXEeSjMS2mQWSrfJEmcRp4EnVSZcUPazUI + /HUzI/orjWQ2gbm7WpeqEUoOixLbBkNaBpeVepJi9u5surrnxhQvZRX5fpRTUklixphPefCGGsp4 + 7RsLFG+Y5IUc31peUN39YDd66B0WMdf1/mm9RSN8Pc2BMAddZrk0A1bKMpg9kk16no5x0so5Xpzh + paWBjpTCpLdwrUq3hRPboSU+EyqgwhQo9Mf8TAXKSIpZpotkWkPuuQO2mDyzxaqMQp9W6+nDprYs + dYcfhagfa7/sl2lSmAfG7wqnvaAEEP+QTfKKuXaWD05f7mAxmvhbt0FLaKfiBroNTfz5xM0toQTx + 9jplaeiqMrSSnwobiYUCnIL5sbmbmm43BKfgkivgFHhVxGivqjFa+GtcxqYYRXbgMX8Y2WHgixra + j1T6XYQgz5FI5HzSZqM0U1alVD6FdlBIr0FdVFsVT8HZVU1w1gx9ooiaAFrE9liVa6kt+oSGT5Nv + ug3QEzxzocnzHdpB6FSpx0HELB2tcHOdbLUM4iavfxiB9gjL0BPlYS8xfjcBNuojl0ujD4amJz9k + yPQvhY63DX0QvQW7mrN+yKSzcJnkABYx0XzbpDlbv7OJv+np8SkMuhATB4lR3eNzh6YwgM9vz11F + mVhBnoMnfZbdgP8KyXzcuzWddBe1NwphzCVs0ztGn7J7kpbcJFXl8R8ff/desXZw3uIZ07pj2YRW + diwu0qbHwbqXqBjKSN0fj07UG+p31VQcy4Z4wTFB12NgXfm09qkY7LFw+emh/6w+Pbt7kUj0BIMt + py2VPb8/Y24L2EC63cy2I8ll245fFWXPH6+ruGNu2dMCtp0TwBGFDZ3AjwKBUO04/7/cqTTlQAlr + cZzM18Z87cjqZ/hnDzB/TwwG9gzgFYr6UxowfFT1yhI88+vjLG4+bMLkWm3u7uBIuGqkQysscPiN + GzYD6FbGuwIKqkjUnC5XFs4eZfLYcWx11wftqk36gtE1kPDkMZTnVEDaV8zEodLPd2c2a0FATLcb + aTYhuaTZ6CppttO3V/qplXkui3xbT65yo9cjZoeRFwwZTGDHqwXfP/34KbILrpll+pBNUoplyyp4 + ruNO01X1yLn1uWKyE+hW3cda5BGOojC29z+FPrHaq31X/bzoRrvesYwfv3v4LfzaqqguipggbSy5 + 1AoPtlpcz5pp8cecoFwmShZP5xl+nCYwiLphlflKDq9T+/PNme165lqCbjfSEkJySUvQVWH/XP9R + 9m2x2HNL9o8HSsJ3I+gD8yPXV0qCUEKIGXaczSYjCU8G++TmxlHAIK8GV+sNWwgPBOzdfDAWlCw8 + HYPehwk/o4pWnPB4vEQTd7WAB/A4Op9gbsUj0h0MUhUKkJs4PDJdDiRACYiH5YjrC+/ONuuvyZJ7 + MzD0NycuWSEXepATxvIuVmqRC3cObrKJDh/jR6wp4zMGXeaxavFCHnhEbCawGDfCNc1PAp9hyq1L + gDI+fPYGjaE1khcq5yMqvD0VkJrQdhplwpcOfeef1rEC6mr4KgWn0pZPigEBrHKQwCwqDegGZuuI + 34Wx+WuYL4uDQ9391CSz7Se2cJpL9QhbpG2JMSBfRu1wtVKQoU0ZHIXoXduYClFn4Bi3xrI3ZYNs + riQIRQVjhooX4X0KIY7PYPZyb097psQfXC9IaUfVJWx4Qmdx8fG2jRNsqbaq24qg4F1xfrbYEUFr + 8O6bKZx2Zn8nF4Lc9BxFPeccccaJdpy46ilj+jnVjE5AJy/TZlbIDlncJ3Or/LsuyUG1K9Jzu9FQ + 9MAc0w5dWBkdbp4k7bBXtt8ySZo/Y54kTU2UkqT5RTJAkkUqk6ThfJ0tUrAEsRzC0n8dHMF9Ft7M + U6MDj9K1An6eEUfHjE75lVEwL4U3kbb1+Og5nkrH527F2ir23Tmhrd2DnqhBL41aD0XOrSXvwGml + POM+BIXqoD7ro2P9AFDtW5rctyPCE8lsLGgRPqfbDZPZuORKMhtelUeMNxUAatsN3XIy2yiMHddz + hmHsRpGgdiDr8mo6dxfc0P+aje4fb5Zgpoq9WljuN1Uevj09q8/KI3qpwqelGCV8eh6ee3F5efH2 + oJLxqhHC3eNZSeacwf6PWiiPy8pHBA4Q+T7zHPrDQelTJJWPYeGHVplQfhgQgwHhyiwycS7clrLP + Z7PE1xQJRKen2LWHDGsc9ZT+7XlFe1GydE648VxBTC3V62i1SMeYxmQeFZQrV6ZdX7C3yOEctUm7 + ls8Ypl2rJopp1/KiSCqtzJQXV9FbGcg/0GFralJS5FMfV4lTzsRWzWMmtsfcdkg3W9Xo/twRuSSq + kc4HgvN7qFSGbYLNEqQDp6ZqqOcT1xMz9O7lUeuL90JZuoHEXwxaOOHpdlP8xaDqhKerIpH76KoG + f5EFZfzFkR+A7mBDP2CxK1LHzuELCW2Z1kamitod0b5K/KV4cCllhJ0lNe55Ew96EXcZbFN4iyfb + JTcKi05zWDFWTnyu7VBzznMtXp82J0rIJI5OilbTYiErWWZVyRm7IIahxzYf6VBsYivpBKMQ59UJ + G30ZgJELk517xb5MhavTwumVQ+mFzBIjxQ/nmwnfa/h7F0Z1586plqNNABc7RtJsJ963gKX89JOk + KrV8dLvyobzVkzPHZi2qSPjtZoY3SS4b3vwqKZ/ry/OoYnjb6BYqVZHEMew9Q8Y3OdI912iXwbty + a4woytfiEs/q5trkevkQddImBkZ3q1KMYgjNs10vqKSGrvE9Xtxtkvl0no4+hqODUfWtahHiI1YC + dShWJxQby6sg8jGrON5d29MpuOvEFcN/SVFcsbNyS+RDz2lmbgf8g3C9gv9yFuShp4whBA4NxUvj + OIA9Pk/1HHu0x6ExC+eNsuPdwBYkrhQB5L3pnJlvRzad/9f7WHV8FPPeFIbaZHm3eLoXRjJcnOlX + 9KnXZqW0Dl/2CFJDJRdbVkLLjyugFtutNiOV3JPo79H9xgqX0MuD6N16KveWiOh2L23mme8tdLsZ + 3S5JLtPt8qu0t7z546RK2OlyLnOdb/elE0dRECJfiOcEzXwhYKGMODivgiw+hImwmKHqlGbRZLrC + KDCmb4GSg0GSNo7IxhwgT0WaTGTA8ut0NiFIk5spRRHljbSBvdlMmvg529Q1eD7sufZTGsT6wJTN + VKdpQ5E9s374gFt8vijO3IAFAvnA0bzlNe/6c+jk/Q7AymaMZWgm8NkrO2gVmaFHTAMzogEtLkPX + aIneF7n/ZFJ2NSamBGFAjNnuHgEx+R19JpCoBRl7IRK9SglEymhe7Mkp9csj5A5k7kAnxirXlmV5 + bYrk6XbTsryaInm6Krgtzq+DSup24EYVyugoDn3bH0ZxHEaefr5ZEY4ZRxBYTScb6Dy9MobsYMcX + kBxwtBydjOStWCEgvbqrFDGZflvfL9MMzYVcTl5tupLu91U6XqbrDN5TlCRL3omHdVDZhtrTtuvk + WBEo/0rNvHitUf5a4qUUNhL9bnAw8pjOa9DUutrIPo1m0/lnmFQcj3RVy53lxbveSO1ln0Y1XR0q + 6yr/skYfVEFDbfuehe8nvizmKwmjGhRdnpmGbpocRm05vZtOYPwOOTJQuqSDnah4gX/XvMjKwumt + css9lzI6YXyKZj+PyVIRVMPotlMgneTvglbqletpuywTr9AvSRdFtZaUD7J1BbcbcFzj+Mi+euOH + tbpzQvRxKstF+WGTqFwxLdF+losInbKbhamdIPdeSht+d2k7jvneS7ebFReQ5HJxAb9Ke+/R9XsW + 1VQXeF65uuAli4PIYUPYt23pXWwilr5dwi1ff2nqWLl7FXNnwTKokAterhb+QuXOOoOLP6H36+nt + qo5j5zLjiDt19I0ovIE/mu9CsITGnxnsUA+MwYLb4FIhS/oQdwFyLUITKhCFAlF5chtzSmZOCfVO + bo7W5af3KiGAwf5tWX35rlwWEJpUPnAlDrsuWBOuIxeW3cKopdtNF5ZdNWrpKi2s98cfcS+pLCyX + VRdW4HiRM2SBx1UYd6yUsiwoM59TNo3nzgJTeXWlhNEoLIeT3mSemA33ciycwucnpBj8/iSIS6DJ + RkSgsJ7uMRw+Ie8ZLWi8165NzMHTiZ5IX6IBKOSjO64X2tV6RyEG92954hdBvbebzzDsyUGpBR3h + opiqX2yhf21Rk/Eykw6HdJbN7+rsYK8cJRjWDIn1XL63xadtvtRt3xJvwT0yZgNgFkjcdcTdojQc + J3CCwsPFqbPT494bhIHvUyH30TYcvB1wkZRjeETYdx2tlZBR/RK9EBxy0hFoLmlqdXdOu4Qrf3pp + u665EqXbzbisSXKZy5pfJSV6/v6o4puG/3llLuuXYGkysE08FnuyqBsdX99g20VVkkni6vO7pOon + 3nGEKJ3UG1lOmO+HYVhxH2uZceiapBWY1dOcIHxWU7aC3oJSS7fJGmTws10jyUmJu3GnTPMsvwtY + u8XUPg18LvYaAeHq2y2CN2Admg7y79n64L+90LHsIt+PQN9aby+rTC1Fj7n+Up/O3rJy+SKHluM6 + VeLHXS3WDuamgiIm3HxoBJUw6JeHdMnpHDln9zxPJJtyq20uv3jKYUWVnfMb71mCSksn0paR1Nts + Nsu+0lMyK2WNqhoRBi1cGkpPeyExdAdEmVgzIzoAgeNwk9YvfZOqFqnAaSgfcOxxHdlL1qjZvtLR + L9A/IH5P7gCuEdRpVA1WjRrZOT5SsXuycMc9YuwVs9vV7ciHTMt2VCNa1Y68Ssqal0ZRMuZkmpcA + FNNL5XU4a5cqGPQk1EKDju+5dmSbF5h8N6SZMOai3mezu+kgWSwSPNUZpAs83xoOnxYKr+FIv/XS + t57LQigVLJ9Go1+t1ATsSdsvvuOPr1pxfalq/OCt165GTT1jqmhkE5qeERe3BENP/ngXRlEdbpUU + iHrEYdG+RYLtHOj1+Yy9+uB/hAPdNAX9OWy+chIHEjefgZ57xVrVueYPmSLnq0Y06Hx5tb7IVcTY + OQzyZiF9fBOeXz4439x5gfWwuWOCg5j5HIPNxSoXHAuEQZJWmYZhnec480BXzoCyaF1Djo3R1rUa + Z/R8Lt3MsnuWcfw+647U862KRuUspTzlN5csbFEkQbebYZCQ5DIGCb9Kx/U/zi+qGCSBb1cwSLCi + P3KH8J7MEUUSp4XzmToj5QQ2mtnGj/J/PCyqJRD5mQqOKss8uXaHQ1E/Vr4/1Xx0XsyiuHKsh8Fd + pEs87tUG1d1QdybuFljo+nYXgR35bhljv3gO1uTnJ3pZgZPUuQhcUJhNbgcpz7q6z5br0WyKXyl/ + fQ3nAwadz8wHDFLkx7z7FKbbVeEVD+EOLKm4n95M8dCbPlBUQxym1ZOFQblPZrcwH5arw8EENfqE + TsaFOzYwC8QXl88LvBIOTWvh9FTYIW5IfKc+Oc/yKaedxbUh60Km1RW3vUatgA3i5UcYMVMk7G5F + QA3nXSc5/Wnijrp0ly7casa6DvV0v/ozl9J0P10yxzb3hNLtZgybJLnMsMmvynDSn1WCzSD2ygSb + L32Y0Mwb+r5j+8ITeiG5ED4enVy8eHmguNIweA2LeKYjuA61AMJNqrnOEvi/GR5jSaJMf8K1r6QV + VIwMHz3WgMk9N8DMZDbJRp9THiOtwKFqCVO26zbJtiMGh56oP9lFmlDXDkD5l9lJRt8eZ5j8VO/8 + 9ZzQdZp66zghjEYZJT1ZJnDYaxbJYj9o5EetF6m5SmACSX+J5t4FXVxy76otyHbBYmD/tH7cVC6m + fOF+VvdFXxz9fnkgDpIWrljFghp4PE8atoOKSxUBeKkHTT6kZlXOx6wssDi+5q5a/Kh8V8i/vsG+ + V7dNOZHHD6lqYnaTg4qM624xQPxs0o448rvvVXsQfMDC5w4XmFc4g9M6RWHUCU8UZm1VOWbu77YQ + 0b0I2epOigUIistaUF3T7YYgKFxyBQQFrwo01ovfq4xevsMqICgMKXldD9FYXT9UpxwMhIBiYUN3 + CLv0MBiBtblOPk9XKjdu4Iwo3D+sFCNrtjYxhYrUHTZ0lMT79Jsu8MXi/hHT5Q6GyNM8vsfIVNEv + whNc5WZFeUmOyFLiWGPpUqhMdJ4tOcXw9HAwXXxmoCnTUroRCcfS5pmsLz2FO/euzrFd2AXCCvH2 + VIzob/J10bUrL5bzJvSt1qtQlWnhRK3BHJPxMRsp8U3x1jIoI0rGU2WNdOvfbEpYuIBUUWrouBji + ggVEORlb+GAphIjB2cuPR7ljwPQo5jqxH9HdYrzzwTCj3a2rQN1b6A92dD23hBgBf1letm3jKX1l + Aru+E8f6921cmu32xZ4kb9ssPVvGXrwP7ivYCNuEXugR08iLaEALvNA1gQg4fkRbmmq3FOxQIWxb + AGhA/YPL9vS0mMfAl5Isl+c7SLFhDNDAoc4SSRDc/ik8bLYUzdEFu7awvWQjYvmsRV6Cls9HAT0/ + my566ZDjxIQUIG8q9Azmz7SVEf5jIDxyGV5QkoGg03BmmnKO38dWL5RL9cs9A6kPCV8q7WeXqPwg + gu3ieumouphIFRBc1AvYZlLE1553VO9eZIvTTXYLXYLX2Jv8t4XIrYqOqfhczFrC0KpnjKNzogk9 + OEcXpbJL14+z0XF2JFPYi5pu+1+LLWCkzvcCUmo20T8WnjbI7DLWaD2RMWGwR3UTdzB4EEt0GoJ8 + hmBq3c7vJkrDHA6tQz3u7oeM3r83uig3piwT8W2KM7AHcNlO0rdbcQ4lbB2d90AzbiZtR3INhXK6 + vZVUVTlmtvvBa4cMoJ4xxssWTeho2XSRnBl3s7nAbL6bwUHkAb9c8vAAfU+UdqK/4LYhDAq4ejB4 + cXF+ejIIw9BltndgNT7+HlqwsBkOLBD6wkbzaZ9Tj+2reUCi5+QSaZPr1+jr2MAOm8/mq2Y+XXOX + NVm3m7lR3u52TSzOQEryZj1t5kn+nkE+c6X7XbMo+lS1eBjRpnd5VbTGHNpH5HfQagqJ3mHHblu8 + E/GMKeCJbEJDPBEXTRkAcimIQe8hzeYPgBlW3+DZZLp5eWb4+/gVYy0Tw+kZ47xw0YSeFk4X6UMu + HpcbLJwYTFI4DN1k3x5nZYPZ4JZiW+go8GyREW7HfNiViL33IJtCHRivy5NfoCfjzRJLkKT8tagV + wdvu+FLbziMg5cc2FQIUwBwMQmtPaGX/PBg5AqSKMsqTOwST2jx0T9nucasQo9AwjztrdRqb2eNe + QqiaSPRntI8w144FJN/9FKcvvm9W9JX/QIpHz5e7l+dEr+xWSk89Y7p7ySa03UtcJJt8vlkwW/Av + C/DsbInuUm5xYxJI7LH4wCr+7SN/xqJHLdcNmOP7loD75POLg6+n37j3jo9I46JtTGXb0z8ZxMxV + 2iJTqx7u1STuBvrwbZqX0o/csUMsiAkHHqvNXhwdvBw87DtGPgMdw2ckSurYr8AHTSX28wJ8vPa2 + antv28aP0vWBl397fJna9PH6duufNAAIMmrz+WxRUlMyO+LrjNb0CMy75qzF2udjIq6Q721W8rg3 + nodUpgKq/8yx20D189vNoPpJchmqn18VaNmfLvWicc8J/TgK7CpWvx+7wTAAfSlgNxYyvUwMwdak + gmIu2Wp6N084HWsBYEHHSIDbpmuiTRwiHie8482mmCGNT841MrchQcvLSiPC6s6W1Qr2MnCLnt4e + NSbrwa7sxpFTyaj8kow3RNZYXwQfNmVpRDABwqgCV1c7jG4lvKnVwbt2I4IciwIvqE+g74I0Hrgs + dMtple8Z9Bp7h7Bugi+zQAqpwwNFtklXlezL+wJOHZ85NFFkdpvGl+AETbDlmBXpemXU8ryThVR2 + mlu3YPFzFblMs+VdMpf+IK0QwNYTcAsv09BekX1QE4uTt4DdqtOWMrvprbzQD51yK3pCSOOHCJvI + Lhqk1kDM6t30GjHjbRZHdgUbcefnZIG/Y65YF6e/j5bpLK97gU8nlwoM6TJZJKBP0RbgaACHCnAA + keM/XR6zYQEYhuNTyYKwleSO4IlDecrofAPaKEWgYI45DzKcLTJw9Ec0+oViCU4jkVdu1Gu0Q01r + Cs1mocZWWAZBRJDCYhvcsQ6NTAHm+zX4NVxKzqWxW0wQxdwcKKJmGZvPoSDhaF4uLUTty1HLBLdV + zWQ1GglUSnjnLkVm+kpc63DXxlY9NdksFRGK+eeHA5Nfx38Cu1uCBsw84d6R25rp2oIcJTe/yOaD + OV2wChRMbEHMzeNgvOH5B+2f3daFdgDajUeZkFLyGhXv1qEXNFhEeyttiNs8eb2/GG79o3SyIzOm + vdVPLvGqEWTauOnjOw4PBOdctu3MOmH68BM6pl0miq/Sb7C7zFd40s/oyDDnDshJWgc6aHjIIR8A + 3+6az0dbgQdjSrjnu107Eb1mTXoeob2yUa2V7HVMAlTig1CrgKvgInfJXuxB6va534mXWj3dB6fK + r5fMCqLIX2oAayuSxpab1WiczdewT3Kw2zYYt4VWyc1GIusbT2bj7D4TKLow1eBP43RBW2MbV24o + vA+we5kXatLtht4HLrnifcCr5H14++aiClkXhBWiwJcMmVW9IXPAnBPu3pyFrja7H01qvbDa8a/I + s4tme2BfFTgt5ZlAVvYOB7MMpjoHKgM1jLIKfOPctfD2ZtFAosJvKpVpNoFwMjvyYs95MhqVMo2o + VnjhBo2Ac7Jb1o8a5UNeOLGerjeCfi8IsCQ+LXL3Jks438zSlYXTKD8S+b4IYOU88TCDJ1OcgG1O + DsZUrL2Ylv3xufbB8rLL05sPbWZake/CkZCid8tUvsewxCabh3+3+1+lBqNS86Mz+NjmGoxuN9Jg + QnJJg9FVAbr55yevguLhxKUKN9BgcNF2h7HnRSLN/+03juewyjdWXDE15asCW/Hd5TXbccv18QXj + Cwf3IAS8PR7BLQ9TddRUduMkw+McF7e6z76u5Eqk7ywWY8nYHPKLby/J0VqMSX2Bici1FZ4T7+De + zSwdzaafUxVDT6Xa/DOZweB9XVjXyXQ2gsPkPdY57sJVErpnqN65hDf5brlmi8HNhhdPwXSFV4cp + BY1jvBRPYrBlgqG14aHBzZx3jT9zMJSIiUVvD4zgZErjCg/fT+/uBx+Tl7jxfsZTJvTnw3CgcV1Q + BfEhHIHXQl0eT8ZOtMi7YcH3U0oKtJMocabDtgk4XgN+439Qsr4LzUQv4Z44z/zyX9lxu9i5eMY8 + 84uaKGV+8YuV1PvjEf1Sazc3JOTXPfN2ecds7YEUr/DEMWQ/o5KjmJ8F4S/Zas2BA3rOPt03Qd8w + u633aOYzTILnc950onT/Ynu3tL3Yy2NCeh/i+qyYtGOftApcX+2XZdVXgo9PFGd/u4RxM7ep6HYj + m0pILtlUdJVsqqs/TqunQi8I9VOh8/ql5zuu5w09Pw9KN5Gs/GsJ8mtIVp4brs4zIGuxFP9WGBCM + 5/eABelrk/VFfdvRxd/CwG5Z4JY/ZJiXmzdSTMxVV2k+J4sFk1sugqbJ15LoqUf4d/kL3oz7pROH + MeFOqjLHSsClMSKWR0v254N0avKrWmo5j4B8xBtkSwEpm6zH90a9aMvWyOdusc29S6JM5W3VrI7A + nGxFEfHGnCLiTS1FxJsCRcTlxZl3VDmu+nZYBp186SKfSTCEbxcEAg/4YzYfpRV3EByQpGJRGkvo + 3JsltAxHPYVDxaGfx7MNmn1SwKHqoTy6zQuMgnjWtd6eXOVQhI5LUISun2/CCue9nV0AMnw6fTXC + 7A8RgLCQGtLCgOwMMeEGVIuM0IcdE65Du2ZwRNXwD4Xv7s1KcQUXOExf88w5ut2QC5xLrnCB41Va + S+/eXpc9Pw7YsaxMBT6KQXuF0TCGX1xRdHOWfR0lt7eY5PY4eJe+OD09yLNTc9i0SrSPr6t36dqr + GDLF4+2OBLcm0yZmcG5yK+loU0QzmBYRDdIGqFXfjZqYU8LYiV2nnNqlbyrjbLEA0VpTWpabH0RN + eVC865FdTlmaZV8HapyrL1Iyhbwm6bL3VrfvZuFUUSzgsRtZojmc87OiyJoumrur9005jwjcdUfz + O2RQHoTJe+wSFGvaZougZsQ/mDGhgExQU2v60GpY+aSrGkC1c9XMZbdnpkJYdmZ1EfRcnGpu6Jc+ + T0PG/lZkj9qRciNWnYktBTctNd+39WnebQ/zCCj3zGZhC6BcfrsZUC5JLgPl8qsi/np1HFWAcn0/ + qADlOrHjO/HQieEY7gqg3BquqHU6yxCTeky52AlC44/4yM2y8QYJPGegW+FixZN/NV0i4R48lcxW + WfmvnNsvmTG2KCCwJTm8kVS8gg8J4ZAI84yjbItkFQrbrsZRN3S9YhK0G8dwIHiqs/v4HmYBjl0+ + XqXArec07YOya9ZP9nksnIoKAVbijbsEI1A3IOb74q95UsgP6Due3pq30xWDVaowXg3458czx2th + htPtRipMSC6pMLoqArAXR1i6VNJhPB+6qMMQYzSM3dgdMrCTHOGP+fQFpOYgv7M0mawo7268TBNE + Qp6lX9LZSk5gquq8ODlmkiJxkXjur03dXKryqTvwH1IC+wYJ/MASG1KJdnJ3V8jJB40wSdcpRoVQ + FWFQFQmENsvp7RQuFXHB5N9Ha1j3m7v7xQYhmjeTabqy+OdWeoLFLl9BsbAjsPgWEa33KVDvCMFm + fefsLT+vHfPaZG/h7ca1Y15N9hZeFdbDUYXBxHECz69kb4E+t/0h2BW2sB3S03fe2xGMWzaeFis3 + hoIcnP+dbzeC9QJeKVkUtGuhVGxIW5Kciwiequ6bcbpvkoYmKqawY96DPDJgjvt0Bp/lEM3oR9y0 + lpgDjW7KvOBhiIcGmEiJmLs42fWs83GyGicTeUB/myyqCL68yhVeQtkj+qnca6y4siMv8qMnMza2 + ocjOKhVPSLu9HQdY9Nb6RT+xhZO+UH7D7RSjkpk25obHwgZzY9ZQ/rL1uBYy4jAx+NYmhysPdl+X + +penrUyWGwOjrJ/Qukf8iXJFydNXl8x2ZnvELinSbkT20u4AQ49AwM8hAduOGAG8pJz1KSOHiqzB + lb5jWGOdYnKCbevMDp0WbFv8drPIB0kuRz74VRn5uIqqkQ8XYYVLdFtR5DtsGMVwlNIPupXjzOoB + U79eePbVQTXL9XCAGpIiXbA8Lher6IhOUAgPXggwIedAsh5cRQUZci7QfoLPJrWha6Jzp35U82y3 + 83h5TRXDse/HuGuUNpxCeKyUmquyUnVOL7epdlNroMK5pZKByvWloBWdskSrt4/zpu3HsfiUUnEp + 2Au4WuCU6r+VkqKvrv4Y8TRivlJgIo+xpJ2vxKVCv+AnycELee9w4L+KKJd6ODgTFw/auD/5iKmj + b42CrxTV7Xxi10l272BxH7sDpVTKSdnqcbBfHdX89tVlslO6tk9+bHxcYNB0ItdS8gLyHsecIC5t + fslqPFywV+5exUb+1X3kbT3WRDoHrtcOVU0+1I4F1xvX0eB6In1jvFkHlYzJAu6U1XAZn+MYaq7n + Wf2UJNgxue25ablKORP2tFDrC5P287Rd7eoTAbT3BJLcO1A7hzfhArP53YiQzPsHv/9x+Ih7F+T+ + mLxVKSl2CYfoBhl658Xl1KwwzcDi+zLX+8yuFRlFddqjp6zabi1sr5G1ydlW84l66HMn6fsTrZjj + 7O590IpdWqDiDffvkqnAJ4S2VeYJE0fzZH4HKgdxn354ppAqumDBB/8Va2VQ5A+Zll2oRrS6C3lV + QO7e57QgGgOjVjnRfNfJh8srQZxYwm4ttI+ECLEgROhpM+6LZLBvvoH/FEF9p3yN3va+vSAL2rMk + mhMf9Mm/GChKKcd5y5yWqqfwlDGFgWpGJzGQlyXgN6JP5OATJdAsTQWVgSpK916NPzvWCv+DfAVR + EHJtw1zKPsWo/VzGHenIktzVfu0tLgzmitqduyJCW9HxvEz554GP++0RsftXi3Q8Tdsxw/bYSuMx + ywtyHnEsvc1xqSV+xGOTw8Wcd2GPRrYzJMR0SBwfnV/kdIJ5dMR0GFzG3JrQxjib/2tzR7/yjBLl + PLrd1J+Qaz6myKXQ8DzT+Zd0li2e4vDTL65NQMZOGcHuR8HYmNvrHZraDZn21Ig5z+tI8HzAb+TO + JWuojtm78JXtt9q26BHTPUs0oG1YdE043yZj9CnjxpX7UDkaltqeraY/lMAlsCLfsbhAvl8FMaF+ + 24Iu7GoXdqKhoncIunvxuISpMsHZWujcdhO8xiHvBPyjYjHIMqUQdYf8NSesyV/bKbPpFWOHogSF + V5yksDGWPgR8+RYMr9V3h2YoVRq9m0/ShOc4YVRoovuH6u9s1JvT0AD1u5OzLw65stK/xGhS+BD5 + Ciw47Qy601Gy4dg+PxegF1JehtELd6BB6kf898heMBTyc+3qvR4mnf+7kpty6NutA2PiGdNtWTah + 7cviIu3GbzzPizxrsgGty9OOYQOVN/PD0S28hn/9oD6qcFjhjcWHxL8trQEUBr/HIRgCjvj1zTFz + vegVphDS7xdvnDdwrg05URHzeJzotwGWTlMMl/4de678t+t6sbVHQft+Z4uOmr2Lio4l9vK33fCh + RmxKXf1PMk88kOWatt+C6IBuNyzX5JIr5Zp4VYBKXL+pgEq4QRxVyjXdyHY9fwhKno8iznXKWLya + zt0FTw78mo3uH2+WcKqmYedZjCsOSIejTGZnOdAv6ihQBt5/tb5hC5HgA/+uYgnirXXJoizwS2WQ + ebIoJrh7bkdwigYxeQaQVu/AOaF55nxWXw4K/QyMGlAZQPfT1Trjhh5FrGqyT/2wKU9WilQZQRyH + vVLGIj5hsvMjJi0+o4WTSxV4Qict0VdcJvVvZbQ/GqmqbcmNOFX40aY4l0yb5h9QHShV5UzNVzeS + KFUBVb39fslsuwXnCb/dLG+dJJfz1vlVUgVvjq5YHeeJW+E8CdzId8Nh4MaB7enZgLVlEHfLNIXf + ZxvY71djjvQvbn/x/t3FwUh4s+TFCvwlP28uUjzUpEuakjebicRT+LyEdxgvrGutlFEK4xOzlNzM + semQsukhpUorxEnmPc2bzijbeTqfIzTIZnmbEMB7XQE6rCi8jH2izG3+6yTZ3N1jJSW2aV39/j5P + kI5snhVHqK2/FTq1Hcx/OyB/S2F1Ocjo8aU7x9MFkjnkHkd8ORil74kdDicf4V4tdsLwNEbqQXty + J0LKntt64fF9w0pClOsycoFp7/GDcPoCXxTmMicyV1F0u2FhLpdcKczFq6Si/nz/e7WoDf5XLswd + hZHrs2EYe+jHQP30Z5qs1hIYc0PerOThARZ7Mh+8nz2OOcHxFfpJ8DTyO7kcXalj7j4/YTnbnWx+ + JZv/LJuvBZTwglhnlHl/Ojy9usqLTWI/CoK4IZF4S/BDTysOoo6NZBxQl6vCRQq740Rc0MT7dln8 + DtE1YKCawNi3K/0tVgD7cObxCoaQGGNJksOLZOSEaPoiquLx/dXvI1ec3Q7Fb2JyrQYvzsefseb3 + cvrAa3/Pl/xXPokOBslSp/1CXFpEewTJ56u5U6n1URYG3CDeWwwFxt043LHcdeQnnqDaIXebhUtG + FQZ6UWQ9YTxsL8HbErZhsiixYjK1er4FnmxdBO2XjmntEB8LyvDdKqrNF/kFg0MB+aGOj1034u4X + cz+UesbMD5U3UfBDqYu0U8L6l9XcKmqTYfFIfmR7ISJAB4oWFhZKFDsH1udZCpvv3OJCeMqU51ES + gx3Sd5tkm5tZOkIMZzTGl2nyGU9AyXQ5+DJNpCpEZxZYV9BD+EjtV71DWCUiHoOyW2ojl0hQt3TW + 2GkcxLTOiioEOzZJHhIMpq2nD5tayPddNvueLFw2pW1zKAiqK1iB8k/vup0g6GArJwyoWX58ETAT + EzGD2oTEQGQoRbbG97ejgPR+sl4nY8G4BZvgAhQGjNTDdAxKD+bwjE6KmOLPU+fqOFobKarc3MDe + UnnQHD1xiK1Xej8LH6Ldu9ohFVwiyHo6R4yFHSKrgcHvT8rr2qAvilOmrGO2dqG3g0koVW/g+a9s + v53qFc+Yql7ZhKZ6xUVSvQ+PmQjNw79wMF7wCYegaC/u0+TLI2WvHljiz6eng8JlvOpwnQtzk3Ru + TENUKGMZktWIowALgRe53GbLhxYn/W5zReCYVRo3O1V7pKvEa3eq9GLIblkQAmNnPNVs5gU0V0Fv + KHrAh2w7+mPdOHSTtGWr6y8GK8pcdvVll5B6UNfdsep98GBz27Cf2ClN1WT2kE02s18lfIoaNxYv + Np5uHgqnRZBpTsImVSdRxVyc2V6LEnS63cinIySXfDp0VUSgrj5WfDq+w0pwKdHrkRe6tusPvdAL + baFgj4vlzQJGC526OA6oVsEITed/PSKjTvHIXQDcEpU0OSGMoIApHVdfDY7ksAoPgMwLxu4f/Ia2 + G2p6+C06GHDTUhJCIUpHBp+ZIiRXH4PB/xlc/3HBhsQUVR88Euf9ZKRixnTQF4Gx1bzqjqpFta1F + VQmCRnZmUB+IVlpyUNHbFaZa09m15KVqLKWvbwZfEZdN9UNuR+zVQmGOz0xaVW4lyYyuEyw7QYMQ + hkCAcVimbN4GIZL3GxfhBc07Qa+z1IGmmFMp5d/a+T19ejvlb3ubgmDP97y4BL03LIL1wPoNbBb9 + 0zrePpOGOmDBthWts0CX31pH1isIOC6vdF3O3WwzzrhXUC5DCxe4cqDFgWuJD8X3a+PPXu2JmgFG + G+uzhuvrw/3Xo2AD7mlGhqxc/C3PydWndzbJl8iOwe/Jct+Bi0gH8q27xdYX6tUZajuE3PuQ3OHB + Zh+ml5/OsUqhTdOt9enFG2Si7g+n5Pq8XyV1KHPR93Tmwt6Pj3S1I0zG4Pn4naVi6akgOIhlHqXL + jpxXdtQqj1I8Y5pHKZvQ8ijFReFEWS4cO/dfSwzMWQ0alJw8jw8zj1mmd585rsUb4VgktkuUPkZA + P6anPRclS+9Y3qeOIEL7UNkHTrUblMdlAODznYEk9kDQ2dlTMddDIvP6eAl2nDlIKN1uhs9Lksv4 + vPwqze8/Ln+vgIR6rhuX4XlfBnDeddkw8KJY0mTAeHxJl+sV18MY0tgsqdpknQ2OTujSH+cX4rD4 + B0afnz3Bl3yFrSfKqHLKyHMGfJvFldTJQiXOKpl9wUiNlpoR+P62nAEGqtWL/H9af1Dv4Ji/LnZz + WMVXK7SY1xfw5SA7sEjW919hcfJETPUp5ftP5/AR8eMJMtnC1ePzC/2wUmqvVAhU1+hQNojrkt+v + NzGBNiycmurA48R+j1AJfMS5VVX9MC38pd+f+Ln3yMn3xkHqN4UhorNM06J9YmnN/BPPATL02VmI + 3wd/Wy3NiILuOZLkPqG9kJfc/nly6cTMfKem2412aiG5tFPTVQGRen3N7IqH2vbiEjsc7NVwXxw6 + 9pDBMMS+u516c7KENqrUmz3tp/cp1q827qRupGcQFhP77DBkUfQEUPmX6fi/VccOBzcp+sVVkvdX + eGT2yI29dIk7HL9dlEdhkQ5No5Wg0iin0UmEa5xhsBVkD2LnuFtykGthA8rG7jcPyZy34C1KGNeX + 8LUeNvPJ6Po+e1hlPOVpAlMufXF5fXVgfbj8b7U7OkEct+Ur78530d8e1K/BHoS5IF70yQEDO+0r + LmWNVydvy711fz+FTS4+kFBwnuzZL1DE5O3iqFVdwNukVnRkwgMLjr1XNmuV8CCeMU14kE1oCQ/i + ImnI1fRWxONO/njHfB/U9ITlyhyTE8jT4lh4K09uYCGhDOxLzxYyAqaVvtjT7sd15ttU/SA3rI59 + 8plNOUEPCsO4vZDAt+0a0GCta1Xarj7VzQ43Mnk2ZI7SojbpagciMUXoZTrXAit0brIJXwtPWn5Z + eLyvOg0WB1oRbOtS0q0SWpSUhlRS+v7SiVrwlNPtRgaTkFwymOiqoB46OmMVe4mFTsleitFeCm0n + jsBeClnIYlFJJioNZTCCOLhQ6CEOpTRxuLk4uIJmj4eD1X32dSWzTjk8+Q3s4oPCvf+n9CzIG3Hl + yxPolG2BFWxgHywHV0iRsUzw2v9BeXR1mwypZlb0lXjPBi+mr9JXeKMLY/3nxSV85X8MQeKf787g + bP2PA8mXlMxYNaJvZAoWLTfPC/0o3lqfui14zglyjYTnnGx11EJlr1Iclr0sUqprO37AQvOoczk+ + qfO/lbw5Nb23ar/7UJW3Gk06aV4uU1iWvCmaKvTNLT7/FVm879iEpuOQKziZrTHAvK8jpSu307Z8 + 6+ccYv4Pd/RTB4BCwbt5abMWFch0u1l5H0kul/fxq7RzXJ9eVsAIPD+qlve5XsBibwg/Yi+WTvHZ + ZAT7wPgzvPNkM05zjjXhmr1aLtjit+sp/LdwrKS47iiZJRjVHS3xbKm2A9LO18jyWFf9R2W2gk/k + 3WZ+N9XZRGInDBs0UhjCK/iVY3tf9FVti+Vyh4LsWH5sz9/0ASfN3qN6WFpE05X6YpjTDt9xQN+R + 82rOk3SZ3XDj3sL5oTzTvhu0PXvXnaD7Obv7dAZOvxWNdVCCLWJ8chn6wuPVKjZ1Yh6bOqmNTZ0U + YlOXF2fem4rDq5ySiQ4vL2SRbw+90IndaActEMUbXwS1zDPDwRyMXpg7JQKamdfIDvT2Fc6V6eDM + 4zcgHw38sxLwXSm2oJl300McjMXMc8KgEgfLmVGaAqs7eIcaM/9+Cd6hH/X1LT6ZlcPOY7FxmH9H + RlqthO1pU9+JCOhJ+DP25g9SNSzbV8nWQZSH5b74g4gCyFEpSd8/ZaFHwc3DJrcW4kZ9fwbfo4Vv + gN9u5hsgyWXfAL8q4aauq64BjwUV14DnO54dDj3f8wMRSLkUCfU8b15+b16YvFLJnwI3al09TMOk + u5P+0ceZFlarS5KPHL8JTYrBoS6yo4pGnuC8vn+cKSTBrNgmQgxqna4N7GlBGj+MG7oQe7bvBW5J + ZX8czabzzzBA+qDoSjsKd8i0rsRKFJpbH7i6cRM3vr0czDYw3STZOeFAIpZOskJKpju0BGt7CALm + 6VfQ/3Kn+Su33sFcxNI2EIIqQoOb+rRaC7gp+Je3kFBVpP5wNymiLPDOoBGJU1DtB3Fs034g4Gqq + +cWlCdZykyB/f43Yhm9lFBu1xPzEu3d/HSORz8ejatHMD6ov10MonK8pfKSPtfqMWu4FRXTrvOgv + X7XnBIFQ8ti4H8JXttuOxkY8Y8piI5vQSGzERdqjnFH2LbubwdGZO+RKNDaz6SIDHTBJDwYvUqYb + yVueEyv5QCOheNKWtLd1fM+OY0bhOruAB9IAxLJdJdpUvohkn4LESsaMG/APzFkeeJrGb4PSyBg4 + RY2b+CkZgxqOAyaP7jiJ+GUZCfqI+BpqJyoWZQG6qN0Ttfun9JxAcHJpTdJhYlqDMmeUBe35Etu4 + eWmuNuPxdA4bgNSlWEF/0AvpxFO0/h2wnJW0wPG2SBsORDZBRqmvyYy/Gx8XeGWRuQYKbpLNs+Vq + CBN/tZndYmZL53Q2147JFFnfT9F6w8TVrAit38XRrrhcmf0uaIlXkT9kTCUhG9HJJMRVOpaBYS1y + yzc3UzhlrQmXjMhn4P2o5NLa9sfBHyDDQkHEIuE5tGGAqsPhUY/W1CKhbb6HNkVAVs3MVm3tW79h + e4Q/+fZyBNozGxO9T4tuG2sjNxAnhWy1HhV8SgXr6CGbYCF4h3OIzxzCq9Cjckpwx82MtqAfzxDX + hhHvV6Wg8yLP0ZeZAtPdxVxpvr10b2P7EPTBsclikVtHvORF/bRfL6XSjmXKXRz4r0AVt8m4o0dM + E+5EA1q+HV0jFa2yB635FCTNyvR0BRmYaec6orQtsvkA4UMcyo8fCjbzyX4K4FlWTuxwZbejM9s/ + bTOf6ZTsWBVUtG34uWg+Ut/pxc1mPQBRAkwVjnTw58keu81T92PbOopsSXkQ+60oD+B2U8oDlFyl + PICrwgf98VOl9M4NUbeVKA88HzrsDdFz40c1MOegZG6nywd8beEE1mFmsMhpAsbsvJgadThIvymI + l0LoW3DVr0R9ErwTp93KvZ8LGY/ntv0DSsUTflbn8yOsmflfCDsr/p2xBUblv2AjYA6jAS0F4ZPC + c4639Vwr2H9yQ+24lgr72JYsOY5ev7/MIriwEzIvKKOnyDNDYwg1dpxol0jrV51yFq5DxQ4R2oyO + Cx6V8KsG902UC2JKM07m6+koWWSLBiDKpqIy/OzcMq+O7JYubZHml6TtpGczcJ8IEMrKhNsqshZc + pF10eW8Exx79y3KDYXltxBFjLV3ChafM6yNkM6UKCXFZ1WyLsiZFfYEVSzxKxS8lf2XJgVVzGyz0 + O16uOlH3zQ9KLaOd57jufixOP41JJr+0o6r4A3NTgm43ruIPKqYEXSVT4gg+QrWK33PLVfwj0GtB + 6AyDgLmhCGcfcdqb0XF2JEHoZrykHBav8LDIcjbhYKGCcRVU5cQo8kF5pk9yoXCQRD2OGcfZnK4d + KlA6HkOfpGDOfcn0/QmJmrL53YiDkQ5ukzUsQHTPyzyqo/G43kTA76anNDlxOT+o/NyOk7hub0Rx + g70RI3KZ3NFzcyOpHeCGzPc4qgKY5UZDZMdRaAflFuSn2iXds8PGzHTXR/d3b5JzCyJgduSwch1n + /kG3ZHYFbgW5rwR3Vy5S0ahmOMp2XpCvJ57GjQh0nofUYvVpaCOpl6YPvM5J764dNFpRoWs7jv1P + 62dbbRaqlgIKA6WtwZsWt1oxGBy6oVFxNyKaB+TcrJsR3U0R/MBqHymyAZbJiHajTfWHOUGn3dl0 + sd87GhpIu3bK7jG7bu7LJ2Nn743wFbUvt9F3aOzvJLWRONammpttyrldFztJbIa/2LfqOXbJEyu6 + 0xH+og93rmszEZ5NwPqFfST98QUyEZVWvjmzmWuePkm3G9mbQnLJ3qSrZG++O78uUfSxwIk5UmEx + f9J7/dKxMWN/6Niu44jQ3nkK50O+Oa0x1xW3Ky1jbFja7ugGtdnB7rie8qo5EEQiMHhUCJ8fwvFn + jUk9MMrIKh8tMGUPa+PW0sH07mFdtR51XVhyMlVsSOXHCWGD8CvVjg873rLBjvLCJutSb6iAG6y1 + w1P7knF9zqXL2snWA4Bi4KtimbtLrPVDv7mF01XaMDaz+0u9d0sS9FEy2k3xqwilsOU7GomKbT8S + anNP0+JHpPNYYvrXDMaWxWPUrR7EPj1TQMQIWxg72Uev+kVuopArD9R8e6QujoZiBEdU+iIJ7PZ3 + nVEF6MUlbDgtyAD47WZkACS5TAbAr8rSsyOGNQ9lOgAslC3RAfiRFzjh0I98zua7DWppsYQWxk9H + 4NhXYGMPkCVL6tnAYaG1b7GRqJnuC9fneRU6R75MGQ7etPUPq2dMU4ZlE1rKsLgow/mFSSs0mXWR + zJgsp5XXiuIwxYrZHn5ol/k214LkKB7xI4EpCbAZtmtMZUg3yRLeEZEuFuu67J5OfuVOD5mn/Dy1 + W7tF8tF3dJEPVOIX1bXw6bCT/lg51gM9QTHokJ8YtEtPDOqyEwPaE75MF4LJcLkkIgXkFLybc8pu + ZDqa3lpwdSSVgbQG/g7PWfgwITxjzg4yKvu+zgxtVPidx08XyRpMiL4zuVumpDxL9DajQkrj9bJ3 + WWZPyclyTYSidpLFbXCV+O2GtZNccqV2Eq8K8uvTC6/m8B87VVwlx/Vjb8gcj0ORFhNXuFtbWsEr + itRfJjeD95w8anXYAJLLHdVYsTtawTaVKre88kQX7GpYB1ird3eXrtY8iyCDlYOO3iUifMHNX1Iw + xmfp6CGdTHPTlfDLyGCbLryql6AmKsSzL5siKyz2XMeusAzh28ruNrEIhcxtKpPUxSrTbcs7af1l + cVOdP2bNBLBN5BkfO77VEFGKkhkvlgTdhaeAwftsdjeVnfnRX9PCGauAkEBjWWIEcOltmwTlhWmA + 4AwGPtegNADdknFh8ImDk4QkC6xaXRsbLaYP/wTpxL3kdOAi4hpcTdlOFX4RUdSdndleZH4qpduN + NK+QXNK8dFVo3jfXlTC/E0elM6n3euQxJ4yHcC5FIl1Uu3+myWoNrz0rgDSmy2ERjjZnnS/fJrXh + TY3P9Esy3uACbAYfsl2nCTQ4ZpHjB5X8PAQ7lV9oDHM7BUtn8OLozfGB1quGQLQdNyjihtb423Jz + Y5dwBnZsU5RbE144SFdk6wJDh+0QaF0XeiUq3LcMkDirFXPxajpxaPbhVxbOOKU545D1AJXKX5rc + lLJfFKifcQz+9Ta5daliOL/Kx045K00U5jNRdb1Z0vsDx+M01z9QA8xrug1yriE8yIKIsth30oRu + 7WPIqJ6LhmuF9eqgWmVF3D5l4YFCXNYT0sfZZjEjE0cfjofsS6o4wTHmkHD0zXZmfSx9QfCr+wo9 + Ki18QeIZU1+QbELzBYmLIktwOp8nD5mIVudnlmJ5x+0s+ZLNs1n+59+aHiOlpLWNmYKhS9jLPSVY + eJ4jXBvySP0MyqOtPvMTfC8SAZ4fdw6VY2MHROY0FjyY3XygsWBAguOl3YIBid9uljtJksu5k/wq + GVXHH66quZOshgHJiRwXTrNO5Np2tN3RP5+B/CqnQiesxmI41Y3c2K8k6T0FWOME3UzjarQ3dgLd + vnqrJSgytA583y4EAnzmegSQGFYADrMVus3GLfxdlhiiZkezkWsxZqL8BzaSNuU/eLth+Q+XXCn/ + wasiZ/fspAIyCprCrZT/BPDZg3AYoD4SpXdv55MSnRyvyqBvnldkcOB3OGav8Yy9FnsX2I83m8ng + yzTh/y6Bw68eV+v0QdiPuJyv7lNnIef1wxL6Xw1gpdSdcqKsTvL7HQtz9ohfXQmea1SIAlVXy568 + XC38RaF2vFTjjZbsKiNeKzQHJGv2GL5AlkNBJmsa+80My1pWU/7SHHT+sL+PZr09uiwUtkT9GO/9 + cBN4rutoTLr0tth3eF1pvovCoHY1+3KMzv/+RnGcVfpWAz9tiTmLN6sJbehx2fXUDm8P0SI1Hlp2 + Pe3lT7cH7Jcf1uabWuElft46dKnjHZkn53it8uTgdtM8OZRczZODq6TjPx6flW0LFnteWEmTY6Hj + xfGQhZ4v+Zo+SkoLMdOZ5q35+OnCIUhSziAEN82mmHRBWigHiaDzUZGyY8HwA3F9/nE8q3p0WhI/ + xWEQMq/i3eYJNi94HAnh9vzRwWhLYovmmvacxn0DbHw/isoQsbwtkl4xWFwbbOZd4qyrUQJ/Rfi7 + 0dlIZAlht3N9g23ABuUfV19jqNrGeSXemM9b/xg1/Sr9wmmAF/AH7B5nd0B5K0IKnOMMHhUy/8Hm + 4QlKK81N8zFbOIvun9zCuZgnwREbQGRT7j0fQTGerQ8WfIiVlOJ3MNGePzOHIhEqEGvgeh/c1n2R + X/vPHfOc/JMaL2Mzd1s/op869U1uIpRs/bczm8XmmwjdbrSJCMmlTYSuCh6biysdq9YJIzsK7dIJ + 1Xn90rOdCDrhwYIMRLz17WolsmLVjqq2U6keNAO3SoM02RAtnbRv8S5ZVnO7WfGThowAKha9qpj7 + ZHY7uFlOJ3fpsBxNPJknfxvNpp/hHHefLFL4Fungb+kDI33HbxnDa4A1KMl1MMnXZfJgcr5YVZF2 + Cw2SLV7uUalKsAmXnDk4nKxKOVxro5Siwo0Z17Dfu2C6VYTu6iYLjLrZ/6FK1dpN78SeI8xzhXED + l8SnEv43mh36mSv03IaIhz4kqt3tE1I4UrR1qTtUQmZvaZGGzPpYLhOrXRtXF28qq0FfCYfVlYAP + FaciZ5MAgwLaeYAVv5LDKJjjCtV6fDA/Tv4llsHx6sFb8H7grXh6uck2/2+Trnkabt4jKXmE3upl + gsVmCwSLQyUofdUWKpWcG8jnFBb4bdQm2OlLmwYB7FDsmtxt0wC4uZ1vzw74ho2Z5tyDNF1hOGJ8 + D0/CjWggYGVjqz4J3M7tEw7mRKWmsEUTlF+1epwni1oDp5kXyfVcKmmU3xf+gWRgHNVinTPgpRgG + SZfmERnPZ54oQaBppRoYzzY4qrX2SMMJ2g4jrziH+Afhdt1QyuXlgvWMJE+ACBC4Gp1d8zerbTui + SNjOrcTM8vmeR+OGDnwPosEWYmBOx0UxW2bvk6Ue/mC6bmloetJbEYetvBVwu6m3AiVXvRVwlQzN + N5cfa6v6nIq7wrMjJxp6rh0LwtU3yeUy/TgcJFwv0OagUix1xpSTJaiDxT1c4YncKW1a/wM6aQGr + +3+Ojy5GH4a0SxaJE6XdB8uPzr9vLnl3uf33ZjlvcGSgCsrwCL8qkHLoBkncXNoXMRY5bsVG6yb5 + 9OK0GCoJgzgKvKheeAvibdi149itOGD6MvvkBpsrcvna1eBQaIc6AsL70/pu9iM9N+S0sawIr9gG + K9B+6V21BWyjyVSU/bfyE1Wtjdj0JvLkVNhTMZsHD8Hc2yFjAsJ7swFDEA9EM75m1CdEAGGeFwkC + VjhuZX4jrc2HZHwPZ+slRhUSTAq6ndGK5IGHBWZ3YIRizRMxCx2n/IYpD7xZqBVyv1HsWmKgtlpf + xRE2to5sONgWpe5hHO5vXYayJ+2x5XGiau/RMCW+k9QtVJudZTZ8Qp/xRG8x8pMp7jJtXzS0RRmr + Whtb7dDalLBQtyqqerrV3m4kbjeOyE+Eh7V37q00anxVweO+D9qlNalnjCt4RBN6BQ9dJANnPX0Q + iRvXp+eOAx0G5Vj1hwk4G/FxrRb3Kvawa2jJwuaw5seJWEzQtyK3rDbouQ8FwnOJ6oKcuCinCAyk + ExyUhrPSjDFieX9NbnuzwLftmipWbbyq+ZFtVlsvRBheDXvFPq+N3BpRnUhY6EriagED0v0Ldqoo + 3PMs7Tmc5t3kvSpLAu2c/Vk/nqb9xunVT+WzHfmBtieYZQIbj0pPhdVxIGM2vt8qZgO3m8ZsUHI1 + ZgNXaaf536OLaqWGZweVkI3ruk7oDl3Xs9kO9IB/zUB+TVLhfrDIe5w8n28Wl5W7tmNMe2KeTVky + xeTDBTq1zZ23nuOQ96woY3yfPvDvtILNfjMzwb3rHqNuj4n7DIoK5JoMJRxuwNxXNmuFhUuPmALh + igY0FFy6RuuroLSsupqGohBMU/cd3zJMnTPVdL4PqlTJ2tdw6MDD+3190eaEAL05qHeKmmfz0VaW + ZMeJ/HDLN9pvy5PLIpJ1H1EUtqRgUs+Y1n3IJrS6D3GRtq3x11tHpBjXIBnUohsc4yMWf5CjgTiM + CJdsh4DzVhg6S8mngKVqDzezfchfAjcmz8w+GUt25EZ89qMQ3kFzET8K2Rq0T3k4W0vge8Fqfvnx + YvCH0+Ej/NSID9vDWQ4d77QJcatX5g9p7afcFaUYsB5SWKfzaSdMFqkEFKcPqJxXrCVQvHjGdHeU + TWjbo7i4BQhIsJtnmILzcbMI7ArVjxQMW2YU2UTTCbOu8XAu1sFwMMnGn/fD6NjT/YHcDHniQ6Z2 + UgyF77/X9+Vc8ZlNiXOl5P9n5sfYU8vpGSjQ+F6eBSNxT5jOvm+YHI8uIbwG19v5myI7w3q63oi4 + z56jRVootm3pq/XDI2a35oNUT5n6a/NmNI+tukwmySK7FXb7u9FN9k0pJO23wQXcZeGt3N8aM0/Y + IEYBpZvHwRjGhEg5SSE8PVuk54Q6KXupkqhT7UulB1vCGl4gDALtPJtMHqabh0G987EJfaq9qKbs + IVEJLGd0TvQpUJz39rz9ANuNwdLiSuDq+F2LN3oKfhvXDsgPUhIypOSmbruw1B9UUvnhEpoxL6mk + 2428bkJyyetGV0lXnL39o4LZycK4hI9ivx4xhue7IWPMZWy71+1+CfKrJY/mWNE/mceM2Z7fR1H+ + 3kjCIidRZ+LerLfGMspr5gdX3suV4UjkIDv4x+ioDXYQf8AUPYikV/GD+HVaISeXpWJ31/XAXEfD + UocQeslc0HneEH74jnBMn+LuAycf2jIFH5TIy3rkCS6X16OL40u5dGYzaPrrKPm3ALyF409gW9Zz + qoCMbSpe+XRpu565SqbbjSadkFyacnRVVLn/flmpcvcCuzTfwtcjN/YiNxi6cchdo0WswCKYkTR9 + OR0g1qpSARHPYLpap66sCDn6vHR+6Xl3NP/8uOTJZ4s0WevlgzRshdpBGA3Mj8RpRChSiQSKQv5t + ya64SGaobrUKrFWRkiiZD45Wi9GH6Yr///HjajTG0nMMoyyn4/vBi5MPH45Hx5cnB3CqR165Q4nT + 99juK1o4bxSCxDNaWT0ZYr0FZD3qCzIFPI+6OXUk6CWWG9ueolH0Yu+VHbdkURQPGZMoykZ0DkVx + dYt/rGAlL+6TuS4Mo0gs8vahRexATBjbefbVu6glwLh6xjj7SjShZ1/RRdoK4PAgSttro26I4YVl + StkyHU1hNmiRlit89sXF+enJgCEUoxc7BxYK5DGHKGamEbpdaVSkILLOXjqQQTle/BX2ExSqJFbu + pFMSweRKs9U6KWemVvwYzI8I5LR5bMVwbU9ddOEY5amXgjnGdxbeWWzzPp0Vqs9aSf43C4Ru2VNs + fdZ0RO5zyeFZ/713xjCbP5fUKAqR3T9pnc5Jjxh7B0+qyZx0jXRIsvnGmQo5spz2S+FpVA6xbxy+ + 3w4G13amGoXT/DDiX6yeTO/5zeDvGcr/TkH42A4lga/bAiiGbjcl8HWrQDF0lfbGq08VoBjHcwOn + AkIXwKHOsYdBDNugOCadYzHHOFs8Dq42C+6hhff9hISeK1kfdZXVAL08u8SxYET4ndndbDNGaEmM + v84bgWJCBClvwFy3fRbZsnJLB4opJA1ohz5bJ5s9fX86LNT/gDXrcwJXeSjlJW41MOS8jfSbQNm9 + z76uSvVvzW+JKSm5p4oOUKvBzWYN/4aZCMsCBN9Pb6ZYKQR7PwdeTIperUPpjsk2vP4cvruzGOIP + d0E1dfBPb2HhdFOnK5eFXBPFxAHJyR+R6Alx3PdmvbepZnkB8yRbpSMJ0JrC0GzmrU0iz86xVmiM + 6alGW7oJ5+s75d/1xElPgSJOvrUHyydfMPiIwToz2nj2kbf1zBdJK8PxPsA+ztodXORDppaGakSz + NeRV0rGfRnjC1s7FxfwHtTHdZBtYZHS3BhF1/ubT0XUpZ+Lo4o3D3jmUZwgHeTsiQ0XYgu8vTmFs + xmiHmTH6mWckhDE3Ou5mMI4wp/qwYjpRAj9pjQA8RFFJ3qOkJ6PmGRwWIkGPW5lmPeTgP0OPktQK + sdQK0VvGWmsF+ZCpVlCNaFpBXiWtgOsHQeMKqlm4VV3HugGho1sc6ewWxnqOIOUV4ZitENqUMfkk + G7Af0+ax2oyXGYabt+YMVDMhesLmdj2PcEGWye3tdN6hJx4MlK/5Q7RxqpW2M8f3ezjj0HnPQR3r + dvChuPb4F5oFn0ZqRnHrGvaStt8bTGuizq6ffW2JUztL26EUerJogpDMy7qBxX9hkf18oAb1JjMf + UKF1mC1jt77TivUFbjeN26LkatQWrooQ2n//WQmhOXEYVFhfsNiFDd3ADUTA9h8JVeXDW6UzonES + NEfEspxv+9nt4GtCp2lQEyvKlJJbE+FUIoLATaqFcW6XafoXJvvMQLHD5nIIk2i13CzWtIATWGvZ + AqbyhHCTHpI5nFG1F4WtiB9yRNDu/z1Wg3Y7bAr97Bo1pl4wFkRuUIXbKBsHOtpaFBjJy8+wX7Uh + r2eRcfxGrjDE9WMVUi8SWkshY0Mv3F3SrL4mwhCWE+xuIhGMJkEBhxQhwuD+1ZAHDeH6jCaCgnmf + 3s0T/PNTziUL10uBs8bfx/nXwUW3o562m6G8g5LT0M597sDN+C4O87UPtdXDt1VzMxU5DCKnfeRQ + PGQcOZSN6JFDcVXEvbRkpjHR2Fp3mwTBhosVFeVqNCUck+tD5orkekrl1qXepXOO3p3gh5jjStrj + MMA8AgXf1sU9xO8fr2sbIvuBVXrdM+F+FDJAC07hvoEHnok2YsLh2DT/+w5IqAHdJ92QOfKg7L7D + TPqw3UFZPmR6UFaNaAdleZUU32RzM802K0v+1J5DVmQmdFrIKHouwFCfbpeuX2nPe6PvuihkPghz + xY548YYdowPCbbMjqocMd8S8keKOqK5uyQRROWXFVVUqN8ulY3KN5/Pp4zkRfcGqhGeyC/yoYC9n + HHek26I4OE8UU2Weyj3y37LWyE/0jHHukWhCzz2ii6Lm//4RTkSco2HAPellD/7OG4rtcEwnUeIY + OFTdN7k+v+jZT99F9lalFLNCNZqs3e0s1TDpZsfRpaUrrbeMfk+AutV++B628I7yvzPNQ2/eecZz + Df88OgPbxdxPRrcb+cmE5JKfjK4KP9lxhciPxZwBuYhe674e4TbhDD3fdsQuhHQD2e3AgXdP14+z + 0Tg7GohVwVOgp/PBIydQFm6q8ao+mwJncIlUoMkfFYeMRW4lBQI7ADOF82eKArFammM3jpqyNKKY + wZiUmYiF4MEtAkzN1xXsUyxU1fM1CtinWAriOzUSBdOnUiJosmnOKdg6d3TTOqob88F0lSGq/eDr + /XR8PxwkswzMYJ5zAaOPOQ3TVQ6XCnNqlW2WY/4VC98Q8Vbvp6s1fl+8PHvk731YcGCJMsu7ZfYV + ZMOYzLO5HCMMGvAgw1yIJ0foZj7BLTJdZjdYUwrHHaL1sXACKqRU2+cMO4EwHupGa6vKrTNQewrG + wC5AjGPFsWnk7GmGD+VzRr5cZXJVBNUCIe1zLu7TWo+FKwW9nh2wNX7YNuaK+N42xWE0nJ0EPTmu + Ogsc8kAdnXdlsw4iipZ3exm5vQUyRdAPzbc3ut00RRAlV1ME4apAZz/95FVTBFG76CmCo9B1Xd8d + hq5nI1QLbnAnnNLsBukd5gUtO9Q88JxksqjJQZnSI4cD3viU74SJhOPFv7sCvPoF3ACvjbdRnhn8 + yz/QIg0DrXnOdFIoKBfw1RzuN1ksQKXzBDaw5Zep1NVfQXOQi2+WfklnoI2X6WCWfZUg8NPM65rk + WAya4PA5dnlnnlSGsHFz9pAPT9/1ho0tFGvB1nyVNOylsF86FalFgHIh1Wr82KRs/pIxn/vpcgI2 + bLoofPxKDwSD5neYAU1fHZ7Hb1z47hY2kqcvenyjxeEhl5n+Eq032U6C6g9IveIl2Q4p6IfkDsnx + BLJCN1meYHzZMamNxqurrCfCG+xX7QvUwqOLN4yjkkRt3BjqIUM/Rt5I0ZGhrpIqLxeaVQvPCnLQ + teqGnqFrtQneY/ejtSDsMTHv3FCYC07Oi7WxJ7ZLuRtTWHos+OC/Yk47MD35kCmanmpEg9OTV+lj + gVEzns5TPGMQvZ1IlOUYYtzDdHGbPBxYWA+bLnEfFlX1sqxQawi+JpwBAiw5l68cC8wN5gdtMDfw + dkPMDS65grmBVwXmxunHSuUCi/0q5oYHh+/IH3rM8eyQhgeexeX3IHCMElis88+YbPQ1TefNlF7D + wcnHI9whkJRrKQvPchw/bg2cTWsoYaSsMidd4ykVO+s4nrN3yYMmJ7cqyraxXj3O9G5dnNaL66Oc + /GM2H6WK2USjFfnDJ8zAwxxoinp9qCx3Xt6tMTqeLpdswWlF+EdTVAnERMK/8zq74wRmOS26ViKe + U1EUyEQEp7361vjhC5OB77o4IxWaCYsJeh+/MdcoagaYKaIfgvRINZuE0+gbtenBSZx78v7wfvsj + GHzD52BZj0hIK9aLnrgfYocy504uHbeFbqLbjXSTkFzSTXSVdNO786puwkRS3SMIRybYqhwnGsKP + KBIRg8vpTXY7S77A23+ezrn9LJT3UlA9L/M7kKIHvVWFSw/ZPMurXV5AVw6G5M1CKzoZzFNcn/hG + 40wATXJqR8xr4oU96apEJqmcE+SGEvSS22PuXBW+e6hRhbmrQz8YxeVDRiGbLApZHFZU4dYe6MJL + 3J9NwnP9CMM2QGrux9lu5nDbhf2wpfxl+SvXS458t3qiK569itKVOsbONx/n3LjMS14r0voVJqKF + K1HqZCfwPH5iE9GtQl/7iHEJlkxt8I0PgT+WiqMBCKt/Uo/v6jmtf6u9HK57hMF7PUejxpGTbaua + MnPv90XSUVlXZd1m1p0OcrZ/NEEOtqeUZ4dR4xDy4dklWBHm9eN0u1mNAEku1wjwq2TpfDy9dsuW + jutGXgXWLXIZY/4wQhdxtB35cLYE+TV8I78QiJZCPfRc2pOeEvjV6s2ydlRms/sGk6BaeToKTxnn + Nqtm9ORmeVlP8quFQlISKIO56MRwXHFQYKxFbIVuNzwocMmVgwJepeVzfnlRxV+wXad6UggiN/bs + YRDBIS/cvn4mS2igihza2/opot1rZnDoNFeEgH3ksDJR6h4rSMIhwElfPqJWM/f9w5aSjanShDsG + cDfhtuPh4B7ZTHP4ueL7EPiBdX1+FChPv+M7tEY9QmvnGwBFrfkygeXaEHl+KrTyiHYi+UoGYd99 + iQpAgld++eKrlygLWu5jnnSguh/ak5GIZ0zdp7IJzXsqLpp6unMpWD9vu4FAWPsZk+2feza8nCO+ + DIQz1ioQDrebBsJRcjUQDldJWV9cXlQhRV03qgTC4ZzpsngYeEHsFVht8h396PqC5xpR+PPk7dEH + DipPNdxDndeZLykaVRGrLlKx3KS3CL6Pl2+ny9W6lipExlp11hm+WVwsF9XKRxMfc4GuPPbCIIqr + rupiP+t4ypFaxkRkvvPAuBVGEV/nPkX3a2NAvLRx7G5hsUxHD9vIWPS90vEiE/lqw/vDGXFmtzz9 + pjhI6EER6hSdIdu/p7ZBun5Q7of17KachQtIhc+dmG+qtkuU2RjMX6o2G8dnV5O/mRAi/xxcTjuc + 9ZWnTYiga7mctiMVPEfeJVzX+IiJPjAaGc+lStbax79z6tn+OQh2ZFPcXB+fPV+uN/SEvkivdqJG + Ogo10nGPvVesTdmResYYzUk0oYM50UWyH27SteB8uPp4dPlWr/LgV97AHYjfQmwydhD1hC5Lk3sL + 9VI3qdzf/fYSrbr32exuOviSwqSewQ5KeVeTPsqg+qKxYgEj12+bTjY7cxnZ6/Tenf3hlCr0JRlv + stlWlqYeEpF/xspD9Nd7+Tgni0UCRoI5cJ7hw8/9DGTzylz+LqAoLmBYx+li+3nbtF7OUfy4jL1t + XbVbeMrYp6ea0X168nKBK7fJzWBtd0Kkp++cN4NkBof1wWpzs4EbSi1zXHSf0tMCjzllx0ZLTdja + L2RMTO45osxNau29WHGeHHMqf8jncz7dfIbvzyFYtn8y+F7dGbasHtxTxuV1T+oHi0Q8x46jFphP + /HbDeA6XXInn4FWyUY4/HFWS/cFeC6uYT27oO9HQdeGgKzJX/nc6H49uwZbLU6vI9fq/8//P+Sey + dvx/cEqlREM6BoN1KzK7ZGI3+V+Fc+L4Pqkm1hslwOUZa2ClxD5zy+d8/vnGy+mi9qvpXm3bruRL + XJwWE+u1NvI6tYfpPKNTjozclKoBYjiJboP+rRW7TO82s/xwXnwPnp9YMPi1ijjX15P6qu1YJwXv + sCY4mUmfQLYc5ghOqxSJ7H9b3y/TjMNUVB0HeczqbES3D16cjdQTB4NJiuPEU1Jh7rGDw0F/08jC + 2awibXYUWTQQuTWtZkBLjQ+DiY+0+Bbfv4FybrSUjbMO766Zn1t2la6Axm29GGZ5gm4Q8n3xZI94 + hl0zDXaq79oKtm6itp/ge0nJ6C3RIFYZ7u579soOWma4i4eMM9xlI3qGu7gqMtxV5nrByJDZ67xm + Z7WZ3W5ylaA44KVOOV1NGLOm/L9oEIIaJLInJydSGTUJ6Wal/Iis3n2BEnoJTPllGTA0DwmfBd1N + sU7FGq7MDnbDFriadLth0J9LrgT98SrZWH+/uAorRha8jV0J+jPHQcbQIfx0mAz7/32xCj1JN/fM + mRX6SrURa3akPCUw6HfpupyBEASlDIRCXisMoIeoACpzQAt5kItAZJuqDVcCuBZ56Q65CqVSRjHz + pjlpAjxEouoflaOwGvAUhPsUlAr0Bm56SJcWnxgq6yCM7H68fzElC0Ar2d0ymaRbPGBD0ft1hn49 + U5OiLxeda8eEM1LvQtrMb7PZBAQt1BcUrM+mHcXKZI37Wvvg8PtOT1EtlsB3IHXoxx/W4SzP4ojy + mtNvoPTmKzzKb3NgdWaiaIZ76CV3zWUKFyp4G7Us0ssfMkaGko3o0FDiqnFFZS4HAwKu6xfS11xH + GmWeHbeEGVXPmJpksgnNIhMXywZZqZTwM5zz+L6/TNUXPJ+umGuN5zNioLC9kEpFbU/hasIsheXU + UtmFNlka9UVc5mekUOgJtFjM4QDV053ABNWCc9wKpz10EF+obsE1qjrf1nSypupAZPGztFiMPhPJ + 1PwbTaZo4LRKfbNDgZ2a4bkVC+3zjzUEqYjfDJsh1/x3xvlTdsQipYNhrp+fXjHnt/PTjycDSrjI + vYvbwfmVwJjsXkqfKg4Wry2s9n1/Y75KgvD9zwsuCxif+R/Pr5pdsr3SDUl1JjmjmReaJ7PT7Yac + 0VxyhTMar4ps3JNzt5rhFWL8RieNfhlgwrY3DOzICyUbmna4OZnC0WV6s+FDi8VK56jUibCcLPfz + yYNbTb3Sj1klK76xyOyJrW+9U9nyLplLRYKvdjPNOBRHqdAsBMlNxjiL7dAJgn9a59tyFTXvn05m + hqPHFqW8pTnmT83Kx8x84LGz0zmo0umakN7z2mGh8HhFMW/u/PycDQcwI5hNPxxCF8E54ll8pqhU + piB0BS42qx6VCw2a7z9BREBZOcB0tgNbunkns/1qp7Rv2HaLbS+wdwSuX7tQ7jmEnKVW5qnZf765 + dILY3F1CtxtpZSG5pJXpal4jwX0fuVr2WODAUbHkMPFej0LPYSwcwg/fFRiL1/e0ySPCwHhIu39y + d1c4Rn6Fs7isM62tKpWFFTdL6NV4YV0o4vrmIoRDLmV7w7COJ+k6xQwgPHzeT+/u0T+5wYQnuKR1 + QfwdQyfZ5u5+sVmDzbKZTNOV9e78wsnx/7zQ/ZHJ6Gri+BIhJI6PR0dtMEL4A6YoISS9ihPCr9ME + ujz9H73GBhmdYs7vWoYKgatBPIQf/K84ff68X4Ks8Shp8Lj9gkVpThwibLL6knmGiOPH7RCV1TPG + 2SGiCT03hC6anppzKejWt8NIVGd8P2NaDZ1CBorsliBO8hHTA7poQDuf07VeEmpG7uAueXhQCTWD + 9+MJs607/l/EBwoE3snTJcP0VX+Vi/PEObsSY91fOLL68r7uk2Lu2oKOgUsh8OWug/h0K8A8XrPf + wVScMflYvHhgRwc1cNT7JRHZwv203lom1yJV6FkW3Skr0XPyt32BKALTeTr6yEYHozY436aJhm4s + z/dB1Op8D7ebnu9RcvV8D1fJEHh/9rGKZBqWYHn48d6LXdsdwhk/5A4BTrkJRt/DdP44G/EBK0BG + k13wfjbvjAJ6LA/GThwzx65kK8nGU2p7G0C3FzVi0WjClcFQfjGeFoIkrDRZtPAamNWlE30xDUrK + t97L7g5KQzXkoDDk3RvDsKwGp+VbqHhXRwxdLdIx1gAU+prra3j8BTR4cDj4OILTPCYTzWQaGbzk + IluRUV+ifSOEGXrlgjNqZeEkyU/2sddbjmiuyUtDjK4LLXLWsQWqGqExaviarUX6ucjGKfJ9hDb4 + ELYE0Wr8qR2TIXqtg4IVyieTeuH6Rd1aaFwc1QZNYbTjd5X1rIFVhRTkT+GjjyqMkBP2cVp7lE3y + 8Qz6Z76p0e1mVckkuVyVzK/Spnby6dytwecup+wGsKs5oef7w8CJAiac1tDoDQ+DYLGoHAAxIMNC + tgLp0oqGwsgUxj/W6eA9w3/eKVDl+QTm1i0MI0d2pIRFzVmLwTEMMZXiSHwvPcke3M6b6Xf0i4v4 + nub1Zk6lFFcxT6DQMgZGPv2auCxg82nwo8eIBIE5LW/nkwzRICj8tUoP9W83z0Z3GZW7TtJx8jj8 + Pl/zUFqB0qlWSNW7SGewMi0+e1WKbuwFhJQV5weFZDmSiZU36BTDl6jkqw55ygipZqobxie/JHdp + IUOWv7qZCuxlw98todH971EQrvFo2tpnv3dcfc94OP+ei1W6mWT3j4t75Asl5hPzQMY+QfX2SNL5 + EZxMhmQ1zjClqVilbypk75j5k6eAdsxQauyw51MEIi3pJUNLRO6uikk39F7ZbrvCNHrE1O8oGtDc + jnSNdtnVauFI/yNWMeQ1D1KTCnC5YlFvpT6idO8VCLVQMhWk2dKDRklw8uZCnn4Rf3NfX1r3RnYs + NKJ6I8pt0lmTzbgiqWKce4HNdtU84FNglcJK7MIa+91z9dqS8/R3xAgo7b8037qeLQIyvKW0yrTe + Kd6cvK5DUwboDnu/wDMBfTB3te5/2npmmJku82PuC12AgadQEosvtxMOwuMJk3++u4TxMY9l0+1G + hzUhuXRYo6u0jVwdneihSOa5LPJLhzU3ej1iPuyhzpD5fhSIEM6xyrD8q1Ail7u6KKZc8HFVwIzK + OD+ymgXB9j0O/M6dYWSsE6L7Ilmup9xg5Cezq2RShfRuWywABr4TRVG/2EsahnWxAXXSkrmBpSH5 + Mk00RBwdWKkCll1pxPqh38XCKaVYB2KbWaLbhQPUrjc2OxL1Apr0lDinso2nBmZ6EuqFOmCmNpFC + n2wNZWxnajSbQmLNxrvj6N8IKbuymeKO+aEljX2BBxkd3Pqqn/Q8EftyWdAmGUY+YBj/EtIrETC6 + Lgr8P13rO5Drei6osbAcBBvFNnSdDeFH7Nq0A51ypylPTgJLXOT532cPeXrl5fXo4vhSJkxlS2ga + c2f+HbCcnciPCmkzni8z51z7Hy2+uXzANHuOpFfz5/h1kQD16VpPa/YCjzFW+uau9/plENkcuTKy + fSaQKzHrzbW/5glQdKGKL/wsU5f7SYdynMJ3JUbOt2d2G9B1ut3omwrJpS9KVwXh9Lv3VdBojuRU + /Jzh65d+4Ids6EfMFgtYZS4KOEiB0nB8cuxFv10cXTGQcMyiwYujo6MDBQ6pJUfWJEYe3d7V8bz0 + OB1Ed+sMQRZEUSOnpuex0C9TUu8xJ3JTTznQOc8kGAIJNwmQo/I+WaRLrNURYJsTTMKdKI/Gw3Ql + 6hhhx9rMhbGHtSSPOGJLDpc6yL5NJ/jKIt+qQIVCX4GKp2HfUx9xW/7xIf8XEWfivfB5xdcd3GzW + g1ky/swhsfGlsFWBn4ETTSWWhmEkkOpF/nfhNWBL52bGOgWJMozxV2GYDGy6Rmd4TAVDxXooPjp8 + IsMx2Eja3imx+6aL9+rg6X6+l1osVBZJizJ4ut3YGqmWwdNVsStdnDn2m0rkksMKVkwR2/F8MEUY + CwMVuVTmrWKMw6k9w8rwwYvAvjqQAOnoIqFlNBzM4TyErHEq/Auz6XIxc+yjBTdgEBteLzVZwgI/ + Y1FSkCZnNak//vhNbbiSisOpS5XODF6s0vlqM3jLo2LJga4kI89piCPGvh/jvlfSkQWHENZirqfr + jRgWhROv4xq5vkkD3QOVHIX4OXwni6aayuqJ3Li3rJ46CTs9knDCIgJ79WUKNVSVLuDySb/iBgFj + uFnL3NQE/vMID9CZ1aGsBg3is/cw0Z6sBNsed5yA8oJ2LxuTEe71QIxLhR/Pd6+wdkPWTvBuB2ek + TNMWDk663dg0rTo46arAyP905teYpnbZNB15kYemKfNdcc5AKCf07T6Qk+HvZFnhMn+AnfJ2hXW8 + XBHAqJTuJUvm1eBocT+dTMcweeYjVK1TtBAOYZimDxhRolPrIxg43Nc0m95yxHHYOnlcVjrLwGyY + wlocvLg4/nh08EoC5Wczv97xmc3Krs/QLSPG5SgkWFfMWFl3cygvbiykk/Lb1aPSlYzeovYOPd/2 + gpL21sHCStSluhp3Ag2W/2MuOgyCMIoZIcVd5F2EcSdWFRWg0FUz6vv7zUMyH5w/3ry5YEdchX9N + k89NT7whZDd9KFZYRbXWfaWqABuLbvW3OtTv5JmkauPCtXX58cjCCZubuBF3nwYC3Jc+7w1PXKV/ + r2BMhkXzDd9DAzTvCtCpthQn4Fq0/IXMzeUe8O0w+5krT3Sy7RDUYGjb+QDOdjlRnyvMfA8oc1Ek + Jexe30YHkf0kfqdgHYgKY+1rmlYTbD2zUAXB6RlotzYeNfmA0RanpJc2OXldxPH+fF/nRcWTcfHo + wl6/dILItaMh/PBCp86Lmn5byDQ70Bi305mkl37A/HhMfeeAGOulBA74czqDrnz9t/GqRkiv9KyK + on2BIXfmMLcFhhy/3QxDjiSXMeT4VcG7+OkiKNlZLI5LR2eEkMP+2kNYjkGoH5xrQBU4sQPs5TAF + V5KqN1nqdRO8qnmSLLjzpeiSuX9Er9fqgdJAM9CWPP30sOHUghswN/BHK5geKjVqlMdL8xSJCQwM + WP93d+lqzd1UGawXtIPBiONetmU5JskXysdsEfRgsj2xh7rcdx20N2jiL8JuBdDvCjpw/kUmKLHG + wIudIG5ymCLcnO/b/8xr3GsywwfTBzJMaErUHGLxq8/XHBEvIRIg2Kmyu/mUAnFo0A9eXF6eHzSc + 5Ysz8XDAJzv6WG9g7knk37woKEXk4RWYhjIUtQKJX5CoCKz4x3QtnAhc4Yoy+nSpcpHTlYXyFewe + KEdLDL0ygbqHu02l7Djjd/IbbK+DcMKiJDxew3/yQ/Y2wU+DBdzeZuzT1Otcqyn3hBxfLoycdlXy + 6hljdDnRhA4uRxdJy98XuUGlG6wEjFOak3JxH2ffHE/LYx3jFUKg823KUTVNBjFPSN0rveT7AF6Y + p9/9UmyOyuyh/Lm/XdrMNY980u1GZo+QXDJ76Kqwuy+OK1AeqBRL2QvO65cevGwcDL2A+XbJ8tH9 + B+j6+TJNbmCvWSsT+19LaPPrwnovUFwpJzrhB5npPFvBN5mNiGGEDT3Ym2CwdLDXwelQs5veX5zC + kCKCnOZAV5lfq8HFzZwtiONOYciIDY2HDRF+YTaF7fTi9P3o3AKBTFXOuGEoaKRtrhHrWlt390l0 + ldoMSuUpWpPBV9x2ugNSufCBuRO1yAhgKrjeefG8OZGew0Gob2+BHzaJGqqrS9wOJKwylg9tFq2p + nEI/MmzoPv3Wvh2pKF3FOxe+Y+1wX9Qzxrxzogmdd44ukt77uEweFsJJbhV/Qb0FqyNFXtCsgNqc + Lq3FRJDQOZHbEwmdw4e+oUlj3eHagtswp0TSJG4FydsCa+rbka/eTy2HLtRw/wa0bM9DBdm+w3xt + Tqad+TZ8l+jVaqZndTKUmjEIRsJpvSr9h1J6+Ipz3Q/ewbkhagcfLR8yhadSjWgAVfJqzpFd8jRY + ddc0eYg9FTPSUegsVOdBw7rhSYrIN6LWbXexsFmR2fcvuHyW4ZMe8I8oiP/QDyCTL+C0ui0Ymc9r + By0ypuh2w1xeLrmSyYtX6fRzfXkeVpy+PqKFl2Aw3cCP3WDoBoETCRjMD0WHwKfLd3kyL8ivJvP+ + iqEEtBwCgQVoWrL3E5E0+YLt+Pz0+pXNWmhzesBMkwvhBS1OV2iCjrNvguG4Npf1hXQusgOL/ie7 + Hip+Kf/Ee8XaOM/UM8bsUqIJnVyKLtJrrJPb0C3AJpY5va7fnZ6eqDyiFzAEJwPGnDAGhXVgXR9d + Vz3moOizMZGtCCHlx3ijgojKsX4iprogrHayCFKHIi71APXpqUQaWRoZUHYIe7x0hqEBj0tlcQ+i + fkvm9A/qwLR+iJrtfs/3vHjHALWxSPcsAwvi6ljWTjqjUWtdgN5HJTMLYqIbb54RW2ALK7AAmMgX + VcWJz9WZatWnVLn3l62qOOh2o91cSC7t5nRV+DKPzyu4TczDw1pxN49fv4S93I+joR97oXRl9ghq + fbeELn19bqDWiM0/2YxpRqyXabLmE5sHrSOOT5l9e1ysMjD0UsIn+uPvR4PpcplMaJYhKrYXKf+o + E3n7Ymv0GXj4pdEenhoH7rkgE0hVEstCvzZhEbrdtMivJixCVwVE/tvrqHIwCOIKPv7LwIel4COw + KfNE3u2bqVzdiJuZ8sg77Jd8PGBZ4SjArE5hVfA8yHIuiFYNACpjNV1m97ALHQ6S2Sqr3F7IdoKb + L44urkCVIz6MbA8JN6frtHBV0KWk6+jpTin6WzYgq7ol9NNCjgiLI7BRKritfDBwQMf3swyWUXl8 + a5rxXMYam0EoKc9zSkcjOeSNlRkMNhAdjKEAIYen7LgMlYBfAYwJVFb8FF3JIbGZ3ci0KHtpPdHU + GlKl2kpEn7iHfrBZ0V5RmT+lLODaN+PpdilWuXMNV2zYwrWVkyuw0BJvj0qiVpipJ9uWSZILRK5/ + XBZLa7rH6iLmq8PkXiAKgZ+jlEov0N69i+1IwLBVB7uzVD69+eeoLIQu0UnP8QhpRsulWm5q9qkm + vDdUr3i3KFPk9modCNYWu4Lnt0S0VxIa8pp747rt6S7V1jSpOTP3ZCfvmdpvPTrB4ZBkBZXfcfcW + J5vZ4x5QsKhpydJJxxlG/UZOk4I2GaC95G3rqM8cshQr24nx99xmvwS24veAYX3F7Hb8HvSMMb+H + aELn96CLZMssF3MRt2TxlaxIRj+SOvI9yiQ1a+cdg0uQZqFI9KxEMXNEoCCMiu6EBlzMKoB0T/A1 + ph5rD+n4lDGeUJ5e67aNCA99Fjo1dBitEUP7RNAx8HAEVEAna7fS+Zd0li1Mmbs68OHufmj7tup7 + +gfVZq0EdRoOZlM0hW+681moGeS42nGuZfWj1BFMOWi94+iV7bRz0NIzxg5a0YTuoKWLwkE7ffBE + ouP16bnjigLcbFzgALEa/6KUwzWKsbgw7ngNqNKgh1wHsnL0alwNcrm91P5Ithm5lQvJ3CiE44uV + MkQJZKLz5OspqUJIg7OrXVPkrA3HXokbzLPl/q3esDB9RgUfvhizh4z2hl8rTxRFejtFNoxSSwWT + N+mXR6KHCdg547VP99z+Hi/foxV7MboY3cDYjLgRyAsDRjBQX9L5rlWwNTHGeDSfuB9bjdQcu7MF + exDdbozdWWUPoqu06bw7ugxrsDtdu4zd+RKmne/EQ7DdWOzpucdaSjArmlcJDMQK1XA98Te6R9Dv + kazvv4IxotD4aejQXfIuWbJF0SakW4sst9x9Dve5iyH+iOhHTD+YvSCKW/w3k2hf8Ev4/LMDzMdR + 92KFPit5sYanF6d5tb4fRXHs5igmP8/ns3C6FnBBPUu8L7ddzYfL2JvVmWOgXULGFjKWQDGIhy1i + enS7KcNYWI3p0VXSEX9enleQ2bzQC6oMY77nMHsYIEKbwGb737kzOn5cBRqKbG0omCNjcD0Kxghx + V6+0qfmwmcGGhS6rJfowBds1nC4SUUzw53KJ7NkoAwaZe0AH2Zd0OUsWC7yySgmnBws016IBES9c + PlSx3vZkZtkDSrihOFMVB1YTD2pHtB5jI7S3tMscj5VBNvJxz+1PrZ4z8hsp0eslLjJCMdman8AX + xgWcRYt5FcWYgh97O9/Eeubzz8K1VSBmi36eFJmIGqibHcZOafyEXEEaT4jtOTc7EkF+AAby90+a + 7QHfI7Rr5t9evJxc7XBvb1cdZjRuzyt3MfBUxYx3HL9CJpQ2FTP0jHHFjGhCr5ihiyLrTyY7aMx3 + xZLY2js06Y7vMTBbJSnyT8AfSa5UejNTVsYWhDNdxG91ZMEI13g+2o+AYcr+Lu31axUft3HHPL0P + 5Yk4MwUBcu1q74PNpmMD+7uTvidRzF60nFL/U3HF75d2GJof3eh2o6ObkFw6utFVOrq9rUnHdOKS + d8dzX7/0I9eJ/aEfeW4UbC+u+LwE+V+f/3HpGRRpqPRTzbZBCBQ6Z2TLIZ07Su6Q9yxHgqkzi4aD + 8zfvuF+keKe0hFeHsELW97LG/nyVONyLoh66wp+yB9QBYXjDxGxuGx8tOELy5Gfr/OrIUW6ZMPJJ + TVK6yDaTfrLhZclIzHkvkNt3RK8b3SXfiwdNBQ8DmWDgh0G72KF8xDS9QDSgZRfQNQmLMoHTVYbe + rmScPpStupo/i0rp4l2FhjBq6LtMFBV95xOMHF6C8j65dP3AXHfS7WZoZCS5jEbGr+awHBgyLeG+ + grIp45G9ZCwK7DgYws9I8YoIbKeiC2GczecpuQcUi9F0DFbu5mYzQ174TFDDw6aF8GGIBHaTTSSC + x9ViDD2qcVxj7HA2gHGGDZInFVYE6CjcjtugS2OHwSKyKyqZwmQtGnBMGjCB+eYZCZ9hrqxLyZo+ + fHKtkdzFrTWS+7HykRajX0kADW2nUSbz3dB3/mmdFoeiOg4vri7eHOTA4ENNFRNc7OcUTc/5Ydup + AZIrjvPrzY23GMnwJNfQyewhm2xm2EAx/Z9Sf84XK7bg7Sn9WnABIeRLurRo5ivwsDAQfnaPm6sc + YewueXiU6hu6/q/NHY0m75QKY99u6jlhm0uX+CcgI732a/W3F+yA/ZbQ47vmvZk2jKho2GSl7nZj + OeSeMVwzRiMmPR/9EskHVI/0tzMWhebVxXS7GbYSSS5jK/GrQon/420ldkEocTq00igM4NWHYewE + TA9uioqMkpWEavq989t5sUIPltd0fj+9mUpj53gydqJFuaYjJz1RCl9OUly/4tIk2dzdo1sT0ZkV + Gwoa5MvRzWYyAGXxWYNSUubBP9IUgxlgvHNe85nsxmpzA1MGM7vFbvI1rQY9pGhd1cZuc/Z+hJkV + 4d5GvCanSJ9YX/6j1TAEYdN2E4EtYwdxaScof7h6s1M37qOg1MSQx1VzlMn6pri8B8yFV8iD43sY + 3wXYY+tSE2ETKyPaFFFc3s9KOY3QZ16LUc6e3DZy0GYTaVH96+htSt7xYlTGLm+hb2GU3p8OtVqK + gMWwreQR6F9vjVmoeHIgM8e1xCdW0eTGSWG0o3QUVcRlTtbw6vOCwJqSYZpVNTm5O+vU6jtNKYRm + 689MpEvmwjId4d76mGf87ZK2xQZ5Oh7xrukEuQAqTMcXbA2PaofMEYUq0w5PRy6lbdfkUiMtVlVa + E9gVGOdx3TTgUhBid5nNus1irn2qfWx+3yZBPhP1mPz1JlM0LfqtmX+CWGNMwQhlfau93Kxx88e/ + g2u8bfVv3Rv9VCXEXsjcovj14xLm7E9E4/5TlTcHVN58ccaCFpmXdLvRyURILp1M6Kosb/6foAx8 + 5Ph2CSrBi16/dFzmsGDo8D9v980vZtBA1Tf/q7KY2gGMl9URrqDgqtw3tPgMoAPV5hqTCi4FObuB + I4fECXFxaXstuLfodrNlQpLLy4RfVYSKnntUWSeu7ZTXySgAZef6PP3QC3eskyW0UAUI+3UiT/kK + cTyxQr6fRaKmjyqw8uy4HWKsfMS0vEo0oFVX0TXhjK/J2rdWi3T5gHusiIcUM/r12IhqABNgbOab + VlSZZ5LsV53F/Mjjyx5TqhL+Tj30qk/8WFE9xmNByRZ99NRVMD2qXCq6JYR/NZWeslalR2xYx4kK + 8NR991euf6pvOb90WGxuZdHtRtuHkFzaPuiqSIC4Oq74f90oLFFa+a9fhnA6dp0hHJGZ1BnSO6Vc + SRPNl4RlenAGwKqCxxLORzrLHuBPYxiSGQwU2MuVwM3F0Yk3IkZq7lmaLj1ZnfJ2Na46ZttuTY4H + n8CtcDL2VpuCMIgwoeb5Kw6StXxz3XkKvdQ9mwVXoOymVR7spx5rC2eG3CS9yBX8OB551Xa8namr + 43mncv8oq8AVUSHHDtpEhfB2w6gQl1yJCuFVQTT2R1UrOI7vV6JCXhj48dCLuW9km0H5rxlI/zdB + nHVDjz37OoXuMeDnm0T/vNLbQ0+sYzhBt1nHeLvhOuaSK+sYr9I6fnN6HVQXsmdXw7uuE9muN3Rd + /DK0lGH+33AcjiZPnlra0OCvvbRVnmLDUBwWPeVTLIsiGEuRAAJm32RwnyYIdIl3HQ4mmHyAN9PG + uOKMi5xMUVFY4/4+zhaLlMOXIQ8RAajJ4qo13rDKljfwh8qOnswHH0drbnLDFL5dJncPIvfharV2 + Ftbp71d59M2P3aeByfx3Brz8j1u5TiVSxvfHMxa2cCvT7UYqUUguqUS6Kv1lV26lWJdhhXRRIwav + X7q2E0T20AW1KBNJpQ2eazQREycWxReefXVQ5FYkxJkhp7pMEAwXBuW3ZPG4hIPgBH8ZvDi6OOAk + LWTFaxF6UBQieI61Poqt7LCGOfMtvG82mw7g1biKAE0D/8x7IqahLOe9XKzc2vz0FUeRorepvMfg + BeqmzeAt59BMDkopjZ6WM1mkpvf9GHWzcUqj4rnU63L1HJumBvIiWrX06vExeX1WWWIzrypaOpPk + IbmDr72ePmzKZLIB7PeNQKF+wEI4ilo//QSycPmoelzm0KnQs7kxyPlOYSNEzxdXBY12ZeNxcEfJ + XA02W+ciOzKAnRpwoZaqft8isoi0q5r1LR2bIizdtGhber0CR73MdmVgchBGGPdYvhsZAN0QyZS8 + gLyksY0QgGnzkNV2JoiEfaMeHJb4bxHEcbNc1cE7VWhoe+C5EV9utyI08jrsI297R2NigsRj5gup + htC3qWkisFrTg53YnLXukh5gQMJA4HGzwGtD1IO3G+Jxc8kVPG68SpbF0eVZ+azF4sBjFaIePwgj + 1xn6QeRKop6383E2gZ4mBY4DnpiT+51vb6fjV4MPBL6EeXvvry8OBw/wBVZryl/HUwCcCGYbPLTd + ivF5NbhIlmqfGSfLG8TQT+G4zdlZ/pSQM6+EbXC0nFWdq2WhJS9rI0R27EaR40XlrR963phy6cZO + eR8tZpFqEst7/ehLMt5kqMIJQ6LCrB44jfjVDvq143I+5xewGrAE4CGdEAZcLcQHC1isZ9iWEjoZ + 6Hg4B/3TuhIDKUaAzmoDxWhfysrSP/5hIfVzAUsUTpubB1whs823w8H7IoUDfupL3OQ3cHyk4N1Q + 7vi43R+dXIy4MlDV5NzvYuEUVrDXbkBoG4GjJ96ooQVBNOBtHL57oiyGDnGrk94Ww6i+zmp6N5fV + 4O2gl9V22g/eIp8R+MiWCfT0AptTODuJa0IpcW06Zb7PZndTDiRVCmIaDGYtJ28f1llAINgVDWa2 + M4Wxl79ZskAwm7V54aThw0+fLohKlXelpHjN7ArTh1vUn/fjHfFFtzr6efst5gmpIvP9GUg2t0Do + djNyIZJcJhfiV6Vv4yOrYRdyvTK70MiL7dD2h17MYn97ytzlYs68Jyxm346JvMPn4EYNLgFsLoD+ + lC0PzoerjJ/6ahkWNjkadKm69UGImPz0TA2IC5r94ds7O5z7mhHB+4jWnDyfiK0dEdDrBkv82QmK + AOmHoD6wBkI6msfjzQO3InJMca7434/n3oL3fzJdwbd9RDbUJboUJiWJiMgtXQklv/PlYu0vaopL + 1Hyx+BxVpZNx6AgG+9z1LAausvZwzqdf4TecPRtayggVAP8RD5CF0Q9ae6MB04/4HS/TobJchY8j + URkO+7K5HqLbDSvDueRKZTheJT10/GcVENEO3LhcFz5iCOcTxUOGVF1SER0r3wMPwM0yMfNgJjd8 + eZj3M7RKRyuYdsrcGCms68LmMYHXgOV0d5eucDEgstpqioaBtMHhSLtBhDvFpYLjzjXh8WMNCOKz + zByuewdND9mxvVMPnT1ien2OdVH6GKocrAQXjUEnafetFmC2DbkdmC7lA4spzC38bnORVojRsLtl + gsdf5afmarSANU0qFSfwLE2+yOlPgNypoqFblWh/5tkSXValVF9eDDbL7h4tnKdKFcFmYqyK6swk + owe3x/pNJNQayj80uRtxo6KSjPqpYNqlzuKa8xV6I9VxnDw3YJY12BNG79lR1FN0r2mzixyXzv77 + 9gsEhYV+9SCvj0wPFoQR7xZBmu/BKtRXykgsE8LBzHhlt2NEpkdME8JFA1pCOF2ToDmF44DQr1bh + hLe4T+ZFQZj4zWy7wO8c2fJlHHbsvmLBuNXryIdMX0g1or2SvEqGyWqx9moonuENlTlt6QlJ6Syb + 3xV9ZBU+kSuQaaFgHAI4VdmCxtktZUou04dsks72Q27rJ6WM8jx4tK7wevigIXxsTRzOpTzvBy6B + DJH2J3I/FkQ5Jni3LfwoYeirjyECPxxqRGTGQivth9EOY1s5Z2Dy5l96+0j9iMrXH0EJjaSEsfYx + d62sH7wXCKzlXcC7bfptWggQ8UKgPz9cMt8zz4uh243ObEJy6cxGV4Xv6Pqa2ZV6SxZjwncxM8Z+ + /dKzEX9s6NkBCwV27mUxanX9yAbX5OqlyvXDwVt0GcA55B7e5wpTxteD43y9kKNpvYYOPPeSs3l6 + l9RoJswOWRdfWU8pdN1GBHj4/nBkjwpsE7C9wJISTNrnDyvHKbgYsKFlukimS5lceEXYgMNihgrl + H64qeXsIcJWO2QKT9ZHnAb4XHIdgp/zv367/G5E9prerik+Hd4E8Q1ezb+gLxPyR22yzHLy5PL4e + UOHAii43BbNwTmgDZNGEU6iILOYkq4ET8MUs3pOPRJctjjy7kwyd/iOEHIHe3yzT5LMcPVMbmNk+ + gUI0fHntpYaoPfJYitnhrZcox/erUugpYB85Avz74o3zxntlszbWYf6QIfx33kgR/1tdJSX2cQTj + v36c3c02Y+jFw3T+OKMVBG8+eQTTDT9zhqzGdKN2YCgWRC6md6Mz624xZYgW6bleLKxCnzIp3l+c + wpCOkd3QjLXW3EDs2sIWkOyInwH5WRLdkNxgAlmb2cYY7DKKm0XsUetIFYYUB9rv63Uf8Sdq/2nP + rXIRUqnR8aUdx+a+YrrdyO4Qkkt2B10lu+P96XU1ayb2Shii/uuRi5ZeNHRt5sQ7io3GS5D/a1ck + qGIjO4iDwplbUSow9tZ9ZfutKBXEM6aUCrIJjVJBXKQP9I8T3G6x8EF6EPKwidw8BIT4W1eTie6E + KAxRa7LAJ1An+UQhblVrGpipDZfORPAF75LZiO/4Mptl/+prb08GVvzkEcGJNo5YD7rL/Oj0BCK/ + h0Mt8kVaoOO2UHB0u2FaIJdcSQvEq6TgLi4v/IqCC1lQSQsMQB0zNgziOLbt7QruZgnyaxTcfyDm + tyhKz3OffVWmbADmB6UtdU5o+zkInZ5vLakXhazmC3QGlOjJp/a8tGsgUg0c1kK70u2GqQZcciXV + AK9KEPpLJ6rkGniOX8k1iG3f88JhbAeRpBFvUq+TJTRQVa9qJ5Y7sNzUNR3ESuyihdxlUBue3Qjh + Kz+BrhmZbyJNaUqTtJRyNoDPdvXYOi/EYouU2O9GN9m3nFS8yAaY4PSdJ9xmuN0Viq84na4+L9gC + OXSyzd09UaXypriP6hBzA245lSqImT1W840IpFagU5Kf7GYzweG1zt+9yYP+gcO9TqA/iKxPi4Jn + y7tkPv2rwcrcIxC/HaDMJT2RfoOFMV8hy0iZoj3brLfyfNelBUWhOhlEAVjYrdwt8hnjk4FoQj8Z + 0MUt4UWC/78+f3uO25/AFdYEwrHA8UNPUm/04ZloI2LH1tfNy/HMgfPUBIokoYv33m1L6EKPmBK6 + iAY0Qhe6Rko/WdwLEPqb6eqFP6L86BV6WQ5GaxCeSMcL53q5OD89GURgY4IuO7D4I/+1/RkLW+A8 + L07skOeO+dwqSkBHEu5ohxzCp7PJ2vDE7bLP+uacM5fXNkzZX1aPHfFlos+N+tmUrB4f+AQGzXXQ + IafmKdr6Ps7CWCoAFsZ+yy0kf8hUCahGNDUgr9Lyh519wmvfBMKBVbmgSYIFHcWeXNA0eWn8b3gE + TekE9W9ec4GxI/4rn2BgFsm0yrbudHV8dKhg+r8mmOX9JfuvgSqkTAfYld6jAg5tA4VmtJqS/QIE + v5BGa6uBeqvQ2Rvrw45typ0pL4Ee/ITPB0ckFxUSXCYFuOskDgdSlaaDOzhGLAYJr35IF+u6+u6t + zcUOvX/hM+83FCDQN9Q+3RoSOju2pdUfBN4rO2hl9NMjpja/aEAz+ekaGW3LxSy0RblzYF9VwSUG + Z6HV+Ad8modSfS8yZ1duQVT8DGAk8nSybGasR/dGjyAeVyyf6AM9wi+oT7jHWK7pl+oNUoIwHLoj + JhhPraeCZcCRiNScVV7PHD+go8ZgKi+DvQ1f2W67tAx6xjgrQzShJ2XQRdIUwrNDL8496nwRwJtU + 8vRO1Qx4IabZgZaUYfq0nKOXi3HklHCu8y7ztA4WWv2FFMgTUfJh1yblNmTlmgc/f0RgIAgUiIjJ + V+j2Yj3EEqI43tXPHiKv+zXzlPmwUg84/3clOECcMGpBbsBvN+QA4ZIrHCB4lWyGD1cXrlNBa4vx + G5e4DZhv++6Q+Twwt50BBMT/m+SG+DGGmeGzC6oDFguqA5+sZ3Qx5/ZKqyz4vtIAY1c6FRzvDbNf + sVZ5gIWnTN0KeTOaX0FdptlTLnS5/vCpsj+EFX7oXDa6Dm00t+1e6i3aGrOUA/hgjMdmmDHjcd1a + HIs9jtqdtqBW53M5xTxZh8Qc5r+yWasyJPGMaRWSbEIrQhIXRQ3S/aNwXl/9cfluJKg1ZAik5trg + Cp6w8DFeYcSERzryXZGDsFpMl4QEAK9TMIRP/44DkT7czPbZqWKbMrKTdJnd8JAGtdc99eqHl6t6 + bkkGV03zrTG1Fv6oLuJ/kiBQTPlUny5Z1IKxgm43sgmE5JJNQFdp/Zy+vapgnHhh4OomQfj6ZRDF + geMN4UccejqAKydSVWFsEXLGuPHpx0+RXV+0J1fVZj6BLznLvo5WyWyNZ7kJz/2X4Kqn6aqKl/Lr + 5FMdl6FL9SGrHzPOKctxw+RTvAzlt+t0xhYatCrPtsFHBSwdhvqzRYYgJDBr4S+f678O/LFYLlJg + x5QgrisLZ44yjULm8805JhzoXVCvlWVSg631Y05WLrMJkeR0nuGHaNqZa7fGQB72nfA9Y23TAvKn + TA/8eTPakV9dpiX+ZbHyWFMGscL4U9DdYN/AFCimpcg//R0FWVwcTx0AA8LqjmnXgqyKYEp1f+Ce + kHIgNSbAKwmzhokG3G/UB8FWaFOpv3z77ckv5pGDnnHwPIdRmabs5+1mxbMtES0p2awzMNdBsXXv + see7jnCJrtPCEOfzoofR9uCMHhWGZTDJxp+75V13QApSDsSIarY/fLq42tPv4nuErds1+GV4kNzq + sCD8tU9nzGctTBN+u5lpQpLLpgm/KmpZLt9WvRWewyqmiecGsTP0vNARid4fj04uPhRS9qAj91hK + 9Jh94+AEmPvLMwJORjPYbJLZJL1/nMC8SXlUHzYj+OvBoeCXGEj+iRfZChPmxkP0A+GP7Nt0wqsY + h4KP4h4mHt+e4dcvj5QQujrIoUZ5BTtu2B8+vZd7sjB03i9Tp4cUdMexA/h+e6ega3Jyk2nbgNUC + wLGYhXZjI6HjsKhil+GwZvlXqhUbeDFrEov2Xug7W+DnxYfVEed9vZ9v86pi20Ok1OifljuiqXSD + 2SjaVMKP/lNNOwuXl7LffEYcS7Fvl+030Zuq9mhiM0eoApUPvU9iR+TYfO9Il3fZChrIZiYim2Fa + Xdsjn8st6FpkcMlgQdwts69wXKmIaYJn9QT2jjJE9nxLHHr+luKr8qDTr1ic0OKxpwee2muH5cpH + frI6RdXOBnOjWC6XenVR0ivbUtdqBrxX+dvrIHxyzW7Rkm3z+3w8XPAvnqXzv8Ci6GjNEIrj2aXr + tbBm6HYja0ZILlkzdFWWVnwKK4AgrhuWPC3e65eRHbqRP4zsKGICxPE8nWar6SqHDyygk0tXg9w/ + hzpqH9rW6eAr4nvfYtUA/2AiiR//JiquDjlOKbJlcVxnLHTPQC1KOJ7JFN8J3TKShIt6JIyXq0UW + VsFGnl0UqPC+EgpXmwo6IG5Yrj0p4ox4IRgF3j+t7/hlklZfxuITTlGOui6W68EOKNInCiMBu/hm + xo/rCCKpegIvkOS7HHW2nSsFGuOaPlmNM3o+l26qAEAIRddyIXzEml3xe6CC1Dp1YskqbLcgpafb + TVmF7SopPV0VNa/vfq8chNwoYGVW4VEQsigKhkGIRKKCdpBS+m7xpJmJ5LeblKO2itwhvoAvbj9X + Tx/BqO7pujItP/aaIHlchPZy48qBpP3RBo4SnhMGZeVQ38t6NoxI1zRN3VQKAzbLcR3ytB0HZcRX + 601xVGHx3Kdosmaw8REsWl0viyVeeVtIOVxe87CRiogRGaxDekNp3JPUVTpyhsHoZrrKkzXxWHB0 + fjHk64Ivven8fnozXYPpy7E1BL6RXPO8yGv8iN6lZUqHB7SoVxbOwpzBmBG8KwwELqPCOBnZgCbP + bffeGQhoKCn7njZr4fnOMTpYWnjn9sXYsjvdZNYNaG8p27ZDdRUPyR3MNs7F0rUgt79jgisqe3fo + mO8jtKkE5j/smDU2P+hzW+bChHa7XG3xhGkODInX8l/4JZGWcHTsvj/6uBDw3Ja022QmCVEF5XIw + 18UPRCZk/6knSoEGTGPm6S+x5YdkQ1KSgBzbelu1TQ1Mp+TxvakLW6fjIFcQN09Pz+zYMT/Z0u1G + 5qmQXDJP6arAurw6d8qYLI5jxzpBgcdev2RRbAfukMWwe+8ADZjOoIGv/8FkaZOgyFzfs7ovwU6m + 0XPIptl3D5RLyZEnPTcwX0p0u+lJDyVXT3pwlZbS9dG7uHrSi53ySe9l6DlxaA9Dz/U8kdt/JXmF + WTj4fJIccJzQd6enJ4Q1evT+SFp2KT9h5CePXRi9UxA7pa+GojAnTiWNPGQTdHsk5N8okOLdT1dr + BEX94IolfZ3cxpX1XOxWCfijQlyYw2iEnucElRVdi1dDI1B7Zg2CuHyIky0wFjnMLa91PAfhFN01 + XmWoHC1u5ehOpaZWlWJ4z3LfUvmz8PMEmrf5oa00iEwfxIvT7Y3Vf1f9BfygkXXJjtw4csqBt1Si + FWPIBWfQbwiUqwOa5A0nSzDT1iluzvrLwFLwm16mOCNUu3IGCnzImjcJm0i2G95EaheEo8yoeLlB + OJhuuvCdvW1cclxtXYA9UExn1gcmCHdMKevZKgcLVV7uVvBiS8xbVN3b8OqFt/M9I8BmTvFZXQ2t + zkA4w/AJfcIaT9aWbfWCm+ZUZRQ+SGtxTwvDhhN1a38Nkvi5/5Z7xZLN+p5b8sk6faDOiHz9UMtG + a1isbb4Wk5GtBv1o0i+ubvDOOrVkIsBnzKnWtPG63rQwhipJtJWDHLdbvFPbj7/LyS2Iq1Oidu82 + 7E13edtjmwGlC16dnf4+eIHDNJpNP6cHzeLq5lM/RXV9OHy4IcI9qB2NGpMp2ysnKBjohK98dgYn + HfNQDN1uFsUlyeUoLr8qQjF/vHMrBrpdgh/1vNcjTKAKvSEsq5AJA10nbgNJajAkp/TX++n4fjBd + DebJgwgS4q232YYGiyTABn3xBzwwzfiO++7mVgZxNrduHylkMNSBXbF+uROqDlXPDZ1Gaj7GbOa7 + ZTuKi8rx84YI4g3PCm1Y2F80Y9aJNMNTC8eKZhTtQy2dHgG9rTbLW06kh+nvK37b0XLh/Oaqpazq + F8TjsLcLayPBOZlxer0K+N4XPvMPB8lslfFx4vB5RL3H96+VYOZTWysOw4pCwXy9S//VKOX89ZNS + E5KWz8JJKE0mN3YDS4xOwQU2kov3BsUUh1ulKTWP+iQdJy38z3bsB+2aNtPlfcAISlmRE0fCzVAI + APPeaTXxxgJb1XE1JbewwAuqb9iuQ3tkLDvCUkq/YfYed4VOlCHdER+R9AEXe7kHAi15Qh+2iqjd + /zvldcn9RZU2OvERlp62QWvIHzKmWJON6BRr4qrA5lsvQto93tll+uITq+4aPsErGz1PFMx6gebp + 320gmgcRQr8QNOoMe6XERSw/E3Uq6aCYBl7qKIP5MRWb4CvR+2BseZxtYMyoEmYv4ZSJt58YzxFw + Tfoy7dpjQ1oQKuyq7kiwcyjhuOJUNzgKE1qEZBjOPu8x0aD5mjfe1byc6kMaDfyzsGLfvcgO2hrd + P2OZ7fOpgzUvGHICN18jT/xx+ebJyDQo9EoEdXoBe/Ntqk2SKf65dlKDpd6xMxz63hDkSk5MdWvV + 3tZ+gxwdbikE4eilsFfOp/tAB0I/8k2rZhY8SdvSCvAVtHN4HLel0lIPGYM7y0Z0dGdxlawAsKwd + sgKSecLdnSM6UxSrgl8cXRwfCHhePHaC0vEPrC0PSJvhaDF2rQT/g0WdniuKOn3aTE0g0Ltu+KHt + UcR7i8N2hwDyohYEJPDoqmabazLkQ5uckqhY2+ehhTZVAkjXM64/Pt6/yYGn1TOtGPNVKtPIJmsK + 32Pn4FYeb8PrU3nYtWPKp6sOJC8Mz6uBYMKQYoAtffmlZS4vxi75oalxUpYnWUJAd90nYeVVfSby + lAjNXmRPt9gv7JhSqG9ggKboT0gXa2OA9B+RGxPZ28d894muG3lSDVnv96lr3eZCFCX6xxfsLdbI + tznhqWcME8NUE8XUMHlRqHO+xpQH0JK/a49jRlggiLBDRvSZqvyi1QjCIudP6xEeI1Ycs1PCT7Y0 + fkgysM+cKNe16+li9/rzfZv2yWQ23pkZa2znhMrbEb1zXtlRS0J58ZCxt0M2ons7xFWRwvL2jJUB + Kj5cnjRTxUgTRocOKzSGjhDQgJ2I73bVtnBD+e1lHVKGgWFktqCYrxth5QFoO+F/CYqPFomcvyaH + yN6OzkhhuMHh9xVrwz6injHGcBNN6BhudJGONw+3y0Z8mtvpX389qkoUub7O4QkLH+MLHNai4ebY + WLK+374aMjeST/NqA2n7n56aG8c/XWmezzwq2RCVSLJnzYZmoUJxV57OswGE8vbnHu3FcI3/7zdZ + z+AH8SvbaYfsKZ4xrWmQTWhVDeIiLVXXjeDISGz1+W0qVfGPi3e2C5quBL7oaNLRsvV8JNyV6ezM + Fii5MGrmObh0uyFKLpdcQcnFq6SNjt5eVEL8vuM7ZZDcl6CCvYgNwTjjJ0qOiJcup7BMlhVutpKj + VgzHkMf6ULGhlw0DzgnvOsanVQhbPIOwIMnNVPCy3WOZ1Xi6EvPt6OiCYSgoEKUiGD/mZcRkH60G + AQ9ER1JonSNVJBEcpYs+kgi0Ys2CJJ2HTY6HBhgTxVFjEn7oOZ5TTebfOth6lz13D+GlJE907P+g + egH+nSX0iP5dwMQIGwvX5UtaP/NUtXCN5rDMTmCJt+abcHFk2tKJdT4R/nyxofrePLcoE2oDbsLX + 6o3tJ2e5pzDl0D/xXtleO3c+f8TYmU8N6K58fo32lvF4LRz51yOpduXWyAYvioX5BxZ0bpHiuMzh + 3vka9llcJ/mDWhn/MUi2UDx34jtM0HJ5vnbkvc1mexKSG0vc4TanSD8vdfsMt653Zva0gF6kA9Ya + Rma2K9+h4qPEzHwd30m+aVecp6csyOqT1qu/2sT8IZewe3ZM5D1eK6LUM20edXW19MY9tg/8Yi7F + oB7bfJz2re72mR1RCGCOK75wFN+7cx1Eb/NtMEdqe+ctu/Bbx2/VU6Y6P29GU/vqMul7DlSxepwV + eCPF0cgLrQd8C/jjCNTLnewmzkA2dEbJDI7TI7plOtG4fpjLPZwsZLFQ95GmnAulDx9HmO4KAyg7 + sq+a3Rfkby9zqw83ZlvPYE3E9Vl4AmFDJru31STqQrXad0M7FGCfMY9OUp+WBzYXFEf1ggjjB3qW + zdWyHdxkmFneTiW6irbw2H1lu+0UonjGmLhQNKEzF9JFUoWTzc0026ysMitM8WnkA3OiSDKTtz5e + Kdvfk06zIHBbxrjUM6ZOM9mE5jQTFwURzj2mYBKviI6dW4xgmd1VbBGpeEOXvOA9oa+6ri/SUXJG + oy6gsN3N3x/GX/0cwEHl/CWGkLeXzI7NS57odiN/qJBc8ofSVTqzvjv7FJX9oXaMpaIFf6gbvh65 + oe8wNnTDMGACiPu6roRMA0G8nWXjsQh3DOGTLmbox6oC9A4J3zihv0/nX5LV9Esq/niI4QLElV+m + MLBcp8AExeVzBUrkmD/6kK3WgxmsCEHuQzesQCSISYroaIP1/XTFAxDCJfpulkVP6BI1QSLRatPx + EB7vD/HdgKenXPh7wBzYbmib9V85NIsTwQCc0/btRh8nMrXFgV9qoDRnDNpgnt0MEFD7EotVuplk + 94+wn81kOzqkqLNzWKyffNFYqDCkc9aOCVgcPxdqPu0rf5lSFJMQPcWhZTROljcZbnqIXqgXrhoa + qvjd6G79i5dSGSX84QysRKXCTQrM+yndf9pa+1AUdNfNSJO3ZOgz4AIyTF79kpaTxuoxSXjH2tDw + 1UEKfaemmxDenZCck2ClwpJ6aBMZ/zmQ2C2hoPGuztre6LX6b6U84tJOktRLx9Fx/Iq1Co6rZ0yP + OLIJ7YgjLopSby1+MqZ0SGu6zEoFFTAtS4zISji68f1AlPDtXRhH2S3VDuxxlA6iyqlMZpHuKTly + KWUZJ8sKWcj28y/6duSr0asW3bTzV/2HL/FHJby5EavO4ZY1VObDuM8R0HEiP9wy4/brotR4ofRs + MMdxX9lhO9eGfMjUt6Ea0Zwb8qrIZl8tkiXaEaM1L6ynVNWigtt9h9YW5gc5oahH8lgOdtTkvd6u + BT3GvylvmrvGk7H0g6NVrTHKdWyBYObpNR9no7qmtvqU24vY3avv5Kl/nrHIXkN7bhDmgrh/CY5V + 3UR5EU1n9WW1FdHRcQVC/XzylJdZD2qxawN7hTpr6oj2B6vuk8GHBRFVx3cbB6nQI5WmAvJesaBl + 3al4yDhVRTaiJ6uIq6TQQd3cS+YtTk+Fyvr06urAOh75A/GHSbpKcL7A394u71xNm6dwgVuyzBYR + yoDKJm6TNYyPWD/7A0cEMR0zsEe9ieRLvcA9ZibV3MoNyKifTRe9dJkFIoe9VXe/BzXZr1F1skMo + zUBik00WoB5hUZgd/p+BgS1EoVUZlEX1Xp1DeCIet8Xq9UgfBrxv60fe5xDMISqhN5c2s82T2+l2 + o2COkFwK5tBVCuZ8+HDNSsEcFnuRntzueq9fOn7gxGwIP0KZ3P5pTpm+X7MCnl8B5lnik6FnPSUY + NGjOOTgcjLHARN6pebILUKoiPU9HnyUSHXVXgfA4nWXEq4N+6g/nMAVmMDHgC5doLwswm0NBgSd+ + 4Q5uUbcvmDiWysLmgZ8P92tWTz4PX4isSU5nrAUmwqgJH9lxQrBd3acK3Jw04fMFYRM+sNajGhRo + +VF+m0xXKn9Sxx52m0IkUrb1QU2RoT4T5IFr54xAYzOnVGo5G7JW01bM2BZTqDR1LFxiKvzhMI+b + PQ45L/ATLdNFMq1xR++IF5DdVB0d1ITFr/ObWQij4G6mOdwMB7a9Y3EooJrzwAq+5SR5SO4wojR9 + 2NQyaGxVu7ZPpsw8vUtqIgDCk0KoGkP0E+ZTodJQLdxtGAWl92/32rjKlQBdGRh9gH0xHTqFGMhE + 4VOozTv3A1rbIMFgqHqonnNswZLC7KgNSwrebsiSwiVXWFLwquD/fHuMh9YyS0rkVllSAjuKvCGD + DTjcyZICDfTOkvJc2U1Cm4CJ7EjNh1bkcR1STvcu31SnPYcU+CJdrPfKi4wE/zRH+pplPcgL+eHj + r+l8/AzSIfdGMpMrnqkSd/i1NbqFfMi4yF02ole5i6siKCjyZovUZkVnSd3fdwFdqHaxDp6FKg08 + KE7YQhr4juzvHd7t75ddHtqeqsKh9JB+qoNcMCyihpeQ47/NTf98A/z9uCdaVN60Lwja09HhMpFE + tG2hNH82dG80Pd2Ha9wl+4YYSblPT8+GN23xqekRc1GFIGVJ1FBd5YANKvn8bpltFi2zzx1HcK97 + LGqB2s9vN+Re55Ir3Ot4lWyv45PjsArb72EaVwm2PwYrmdnD2I84sJ/g1YJTzHrDuWAEdn9yy9SM + W2d3cCRMlwQbX0lwGfK7F8PBh8USfxyvl/FwcJZmDA4ua5CDZ8jj8dJbYCYfgn/BquGDerW8KdbL + CQogRdNzqJ+bsV+F7GvO5LvEZ4m+V6TzFUhLMJMKDwHiKCyp3I8n47AKAMCv/qa9t06lFDdmSjow + CfzA20HXBQf4+V1SzAGq4+yKbKeJVYk5juc4YVw2YcWw7Wqtnqwr9pr4s/TmlKHLS9oLwvE77uBu + ina1YB3DwbowA7Wv8GMn3ZYJN9w+28h3Ivw2aZFhyeKrVVFCeYysfpeiJeRBgf7cNOJ2NaWF/hR5 + mzgh8JG6idQmuXEb9ctTelfU7iKKxaSjreA2M3PR/AArC7VLdYI0a6ZWg44qEp+o0aQ9yml2p1hC + n8nJtS0Lc4t6bOV1Ib6ek0ufOeY7P91utPMLyaWdn67Szv/2/LQc73DsEONlxXhH8HrEPDhyRNEQ + fsL6EFv/x2w+AvWGTuMCdREsEem8UF4RfSsuEXTB+VUETYX9kCbL2aOEwWqidxQjf3r+FpQ2j6Zo + jRRhwmjnfvswrUYrZPVWfq3W8xK5oVPnwenfFVTs9+4SjJD5jWUejh8hK9c/rZ/kM1k4GeW+5sSO + vTeg68+HGef5QgU15Pb3nNKvcMUcT6ECEKxu1A4UQDxkjAkgG9EhAcRVUk2z8Y3AglmlcMpKB4tk + huHIkoOI47lHscOi0D3Qy0SbH7NQuOW6AfOY32dVqB3DyR8f2T+7BItziXhhcQ+zNWuTB2NGRL+3 + 0+Q55a08nywRFto+9/2ICXg8qp253dFdei3m9UKasNs724cDaM+Gtpumnki8HD8/N1KBcXO7G0ly + B4gCRXNPUq4xKFaxeFxOJ9k33Ox58B0rBbtFCXwVJYjfRS2hEfKHjKMEshE9SiCu0mbw9uP1BwGr + qUBwx5iIuSyEnuQfNKEYAghtAfwVRTKRq8B3p2W4d6ojikOpzrjjt85gMeZ4iYQrXr3dOEvWbfMQ + elH0HXzZCCtX0/u2FlUY06pecwFLwZGarMf3XTc9n+p/RFaK3FS7QVARW4dcY9PJ42yKsC5rnl3a + UWTQJHLkDf3RzXRlsKSNoz2SN6yygL6HyK2KR9UrOsfeK7tlrrd4xtgaFU3oxihdFAfdT2fs46cL + Z7VRVBRLAaN53xywLMrGJO/A5SQVLmMEoVcQYVD64jkOAY4spzeUngK2IHcldtIyPy5SZ6uns9rM + p3J+QcQCgR5eHuyuxkJAtEoNn7AHUrMe7Ae5EGQZ24VjH0dtCVnEM6aELLIJjZBFXKSFAMfS1RTd + Z1Q3z/EMTv54h10tQ1l7OZQ152iJ4sAWeEWtCpTkQPDyjz//dsnakFvT7UbOMiG55Cyjq3Qivbw6 + DysZSj7mIBWjZM7rUeBGzAuH8COKBdLLuVZvKpaw7o1Bl8rqAWP5IpthOLhPVsXZBUeSt9A92LUG + V2GNEPJzXa4ewoqfS693pWZyATJ9Qk+HChqhoJkTRmDXVqBR8jUx1mMySmfpICiub9RCjh+iUoyy + nMpTixd5zNkl0voe38LCyaJIqKPQ66VG03X8uvLlJnnlvAwqndRt3tbq+8ciOQc1r980m4188bmR + SypbzdSWpqpPOg0fp72tOx8Crgt+Ut69nNoN3z6Ct45dHymosQLhc+12+5x8xBiCjxrQEfj4NUEq + vVyI7e7o8sJx6fgxEglWBb4Oi/4wm37Oc/WP4Fm87hBEn8Ccs5mnmEAqB5nmE10zozyNN26gn6fc + AsTSAb6u11PYnbk7ob332Q4Zra8UAepn09U9TzQGa6cQf6ZINgISZcroMRPv2hEleeo+bRoUic4k + fdmNqWz9o6X+EOhnE2DmHe0SbAfMOOc3Vaaxh1ux26n76YrJw2I3fgAlYmsh+wNWbzsJuJSj//7S + 9ph5jj7dbmQAC8klA5iukmJ888dJXDaAQbNFerQ4fv3SD0Mviod+GDNXBHEuxOgVq9duNpPRaroG + U4u/OLzroUJrIx2ywvQbWJWPg2QAezpXOfgYefkER9UUtrA0mUi77et0NhlxtXMjHhA3Uk4NPD1I + 1vxOTO1JuCKTUIZvNpO4YjvjE/N0/Fk3j+MtxqvPvMBlT1YtAP3Rh02vEnAipyEmHGHaSeD803rm + X8PCmaasZyd0LfFeXGdK07VmHMx3uq7UynSAFQnkuF0knWuiBRuo9j58nplsIc8g3iWP5m5OIIKu + 9nahY3rEGJWBGtAxGfg1GSrWMZPrMJSFDA4M74UWcV8+n8F0VMjFb+36zB8yDrn4VednfpUGlZe+ + 3MIaT1WIxGqkOn7rVoswfOUEdWM4g3diG316gl30YcE/vyTjTVanDjo9tOM4S8Wh9HTSFYGsH330 + DNaAENWBAbgbA3fLko5e7EDzejJzpJSeStT2QukRUvqqT3MVJj/zvFeMtdtT+CPGewo1oO8p/BpZ + vcvFijFbmLGefVXjMbyC55v/wgXwCFCM7FqmjsAWnFNd3Yq9uQWfHMA+f2gfN53jBE5YaBPuMXYe + mp+fe3UFUsr1Zfe68j18fsYz8Kk8liyOyN+9bD8AUpHwzMY/j+EY26K0nW43OjYLyaVjM10VjKmX + b6ugMsgOqx2b/dcvHcZixxs6zA3RPcQ9kAh9d5wdvRYoQKUEp+Fgusr+gg7iGB8tUwcOr/XJdOmc + 37a+h9MWdxVObzZrwT/5kPyLf2HeQoo/88IUtQ1MidcyuVmlwguYfXu8S2XUCRqvZlfXd0WPMkWN + USY7CB3YlqpRJt7PT6PGZK9iA14YNkaEtAbyDGyS30Qeyhy/KeNayrOe/1ezcFIqGJbA8yzxbrSM + tRFoTRL6nPJCf2WS+2eb9eh6oUsW/D2cinYv2NbCKc0uxx58LrJraNkLknkayyyZP0Wv95Fd02u5 + exK/zt/OYLK1yLrgt5tlXZDkctYFvyqKk4+vK/w6jlfmG3dejzzYVENn6DnMDyNVm8yNOeGLzK2+ + nHITmWEpXiassyFoB4K2gkV5PV5gfWilkjhHl5LxK16uSZSqK9S6X6ZfMlkyPF7X8OPsIP3UNsnI + dRrKh6MwZKEdVqqH+6PfMZNk2CUV69Jfzw9MZOUmgBy8hj0fzKcmGhlNYI7o1sizy33UeZ6dVntl + M7tVK2VOYD1xxd81ntYPns0WrkTllPc9vxWD8g7olEYpuwGwjMiSd4p5ImLjHxSTrnveAEqsKyHx + 9sQaY6EmPayPm2+t6/0puYu3O0j7oQRuI655hKWpEEjCBTfwXtlhK7oFesSUbEE0oFEt0DXa9k9G + rkzwR2iWlFNlNTNFtry90AMMaHixTT49P+Bf9WwkKpx6xsPuKP9JqQ+UnMDP0fr7gi3vC177h/Fk + egGjXW373Oqjtm7flrbrq2fA96mkBSzYIq1ICYyWzfGH0acPVEyHxs0km2fL1XDw8egExxR+XMB3 + h2fG6YIqLdqEOiJb7LKZKHLvqH0dwo3DTnVzcYoagTcX3gdmv2J2m4ixfMYwYKyaKMaL5UXSvst7 + uM4JFwsFAfh44x+KcjEs7zq8KLtXit0fnbj8i9JOeQ5pftqTKNGHe9oMcDdbBDj7AwcNyr3dV+j+ + 0J5yGUc5JKcdv7LbxDzVM+aAnNRECY+TXyS/y/h+JWKe0Ak8E/LtHF9PVMCVL8PqRhTbwTE8aOHT + AnSTOPr2zlludq2hbDoVlMWpC5me6lboRNuG+Kcu5Zd0yLRuL2n7Adp2GR2yputifUx307Atwugu + Yd2y7XJDlYgyVVZHBqfNxr40f0GfuYSRyXsymaLDsZU1uVeGUUSKoqhya1J2dnPPPhPVz2y7MOeU + HmhHgdpeypb12V7Y06WPS60e57RVLQEU5CPmlFVl8AR5jTQ67K5Co0+mfLPK4L3Kp9vSn/7AZ4p/ + RyE8lyX0CDkncGg2IejEw3SCJ1PNz9LvIbiHxnYkHJCDqdAAju8+oi1aLD7veGl4+zj7tZX8M8Gd + s0DwAFYFFY96nBN9PpIAKoMXN5v1AEQJ4y49GMCfJ6sh7f1jdHSADTNJW86OvpLbPFu6yoKgPTWp + eMbUWSab0Lxl4qJImr5HqBNoGEZHdxgUqrzpf/IFmCJXjd74r2y/JbmqeMiYXFU2opOriquiMj1f + sGDZlbWacIxQsf/2W7UG0cFnM0raix2H+FHvp+jn6lu1dRO/Ja3v50Nhb+upi2Jajju+bh8n0H1b + 2q7khFG6p5TeQCc8J7dZwnYHUfmIuc0Slo6h8loR+299v0wxcpTX2dYsXLr1t8Z7LxafPV0pwAUy + ZcQZNXAJv+mBYyrSkusSzGykUKjQqO2R89u9ke2F7DEJrk+XqkSIlEeu/av8QrliLbidf9lktN6C + rJ5P/cExUjnUvQVKhB7XVUPnAE+oeSUqGqi/DahLU7vD6fu/wP6B7hb1N3uzWj+XfTY/3cTbp/oQ + P81kg0yNA/+/RtL8yOYZz6psSTXiEeD4xaUdtighp9uNsvmE5FI2H10lH8T525MK4LjvOnoJuRe9 + fhlEEYz0EH5EsvamieVtsQT5VZa3Wn2mpXKD4tOy4a4KrBww2TzXe86Eb4ETkgfmOeyAz3+D8hw+ + kX4rsJzu49fzPEHbAx+7DW0P3m5I28MlV2h78KqgTLyoZsa6duRVWHscnzmhO4SFZkesNjP26uj9 + UQXwXcC0gCWpKpeUXwXsPtxHsMINHiUMHHnT1dnp779dHZ1dHZVyDfmtiitjOr+f3kwpy3JN7CcS + uVyS7VwtajJneV/r0mRt5jRxAsegtD2nmtzaE7WwDsuu8gEaklNZGZ5hWKC1iSM/8qXiqaEc1lhj + dI6hoIlYmdmRG0eOUxIquUcK/L0liWEja5GUWE5KfW4TycJFoshybEpahYnCNcE2gpfuIPt1h5Sf + gVvne3MPiBWLd2pLuh9PVX/uLUss2ur3qy70nW+dG7P7IxOx0KZ6reuj66NRCfu6WWIdmEg3SeWX + k1ujr8B73SP2yo7bgffSM8bgvaIJHbyXLop8pCVNVKTFupuTnoA5Or21kLqpChmey8RcpDiOKH8B + 9J2aOwjVgCJXi9kUbfPh4Ms0od9ylut5Nh9tz0v+d/DR9ocHFoS5IJ6U2Rm526iqukXxc9cabble + eOb0nx/PWByYm5J0u5EpKSSXTEm6SqbkPz6cVgggPeaWyLcDMCVBU4Te0AkZ5xrgpmROrpOTAEnd + wfn3kgHM1DH6E/6aLhaY8obLTx7f5jPox/j5MzPtcWbrOkTW1dn/qipdn3l2IQTHkz7/PL9kfnQ8 + OjKeNvIBo4mjpJemjrwuzvSXF1fVg0iE+rc4e/zXI9A+LHaH8MN15eyh9cRzYZbZDdeV6nAnh+jP + k0vXs/9BZUnZ4DFNVuvB8Z/H7LfjPy/c0q7MN2MCTqcJ9rCE3o5HyS89xZRbIHS8uDBNVFJhFIXt + qjLkI6YphaIBLaOQrtE0eVguZq4ozNTzYKuwKRKF48+HM9fD/0SW6SP8Xt4U378d13lWkCsyztIO + yXlXrPdXQHZ2qsMBr3GX9gnOsid+DPNjMr6MO/ZTgEb/OJwXqaXyJLnI9ttVMKhnjEPOogk95kwX + W6AICikYP3bjWDAbPDkOktTrvkCDPXOY3wINlt9uhgZLkstosPyqKMw/e19x5TPHcStosFEYh/Ew + il1X1OfxFKwScDaHOJFn3BUZRRf3WeQv0DeU3N5O5zgRhSMsu1smcDKWBfazuxpmT2okd4aUYn73 + sNUKeJVaZ6JrNxVkM/RIO0EF33VXi8oN1sCm7buNDjytxdwrmKdT64XpXrxLkHXc6hscEv2BXAc6 + DwJMA3r11eDi+IzIs+EfjoUzRBWMs8gV+3DY4MVq2vdw+qVf4Tf8ThtSHKB5EvjPI2Xwb0ky31EZ + 7NriONx6suyU3YuLByeFSQdr5tbWDko1ohL5fN99heRoLdL46BHTJD7RgJbCR9dIKdzN4NM+YFlO + /pIfj05evDwYiDy4csJP+ycK/eCluyKAFkQ0C1T+KFcjG5jG2wtjKxxNnSXtNpBiQWVLVYL9Zh62 + Ft0967BFpsxOR1ULo++HOa1iKo+DoX2ZlyO8yGcu5TU/Iq3EQR95In01+HPldUSEANJLknj3N3nq + fjwheqvcDnji559vz2wnNvdE0u1GVqWQXLIq6ariGMBivhIlfWSX0BLD16M4iPxoGIdhHPRFMQBW + yASGqCuk/WENSVTOxUo79SpnGmBBjdHaFrYJ7J4wYP7z4xpAj5+DEEnWBbfZvqSVsYBVMficPkqU + w+J3y29VaU+IZ6BYv4YEXDTmcrFqEj8OTHieOv8mONTjxUiqyxvABBL4MIc754j+EcnhiFMz5Nbt + /eYhmVdeZ/Di4uR/fj+w+BRW2Iqh7z8f9gIpIAqEbUqv0A+ciAev6BaklviHTcTX1PYZmRX7xrz6 + BGHqGXFoz82xp4ouO+I8L79VJ/3PXvMgJ29PtV0+5Vi+vWS+Z+6YodvNtlCSXN5C+VXaQj/9z1HV + MWPbTnkHfQnnH5v5Qy8MuNsG99BrfhDPxjiQYrvbhlkxHIgsHIKkhY0yXcoz/U22vtcfHnHlKSLo + I9gwskIpwYrGlpBt+fuDEsiEWL3NkouiNjKQrg6hJVCP0xUvUpguKQFpkt5Ox1OeHMP34U/fkqrv + aCtMh74ze03wxTELmetWoAuVr0VyjKcNeWKRH5SBhrU8MS9yorDsEdracdn09IFzmxca83w4OBg0 + VqLOLMmnr8/39ec8K9BjnS6/yMV8A4+kcA/u88l8+pDMVhauILWBx36AYDROTHxkahTVW/Ee6c2p + MeFNUE9XuAuYbvGuK3ZoXS42TmklNHlQPeHWoE560jvVmlTQZ47tb3u/9hUhPzyk1AVzp743vyZ6 + D87pUOuFWsLtU9o816YoZIGf3CADTW6bXg5+c9TSE6meMQe/OSr7ItVF2gbvi6UGMjWsoDg287vC + H4oyOeZNFIl40JOvgDb+tH1X1DOYtFI7spjs6wata7gC5NwjkOuTMzsIzb0edLuRySYkl0w2uipi + aZ/+p8KsaDO35PQIXo9c13NYOIQfrnR7yAzsv5+eJpyc9RHHZIkrcEzYibgjf72fju/RGMKtEzY8 + OCeLEQMlZmDpqSHMLRcBGSBicNm3KnNi0fCim+X+dPr3wYtVOl9tBm83n2G0koOSXeXrpTm5LQJG + FbP9qBp8k289Um/dwAjBnLjJm1KUrYyqJF1mN7wOht6m7ASJ7aAJCJrZbuTbTgG8+Qd9JQtnmDRp + HMch8Gbm1OxrVRFDvbewbCX1h4Emc5D1iO8LhcnQPJnaqIG+EEJ/Rjtll8ga9VhdjW2lEtLMLqmF + NV5pYGus84dvL5ZQD9Lt06xQ2o1cR5nbYLVjm6pB1EoaC0Syrp6UXmBa5Y5KGc2fzmwWmztB6Haj + HVVILu2odJV21Ouja6eS0czxRIs5qeHrl04URXE0dHBAXT2QAApXOs3lRgM7wzIFzXc728AorcbF + UPyL9+8uDka3G8Ie1ZHq8ChMx1biTocTJxjQ8E549lXskZSvms3gNar1rPIusW++Axt0elDKWWks + gGOeHzhwlH3Omau+G8aEpG3n2BaZzPFoFSx3CMSiiBe7+NByc2GwxkjIliqoXfU/zR5ilxy7dJSg + cNKvTD3aAIj4S/CWqoNEKGqC3cg1V3t0u2FNMJdcqQnGq6T2Lj8cs2ouPueJ0ouCX0aRD6pvCNov + 2MbRjlVTDzeSlneZLpLpciixXrMNV2vqHL1MJix6NbjKD6IPCY7rPBHkY3zzI0fc4MXV+fGB1JOv + hPK7vB+zaslv+zJdJ/TjJ6veP+HVZDgSOoeLEzGjHukJfPDbbIqxi8rBInKayfGkwFoq95XJBzgc + QB+wFL6Qvwx3nD+sHDa6ehj7+J9AWnPliOoy+7q+HxaGQjhgVQM8Qw9DnAhUoQqYJ/qEOtw6kyyY + ISqQ6rkhHVqciK/XwkcwUjYmz22vvzUQ0BSwDVzKDDkRdYj5imrZhzhUZym5saHMSfKQ3KXw3acP + m1nrACnOM26eVqfj1qH9UTWMQUyw8Gout978uh74XAljXVkfZtb7j2Gj2UrP0znALDc9XmH05++X + thOab3p0u9GmJySXNj26Spve++OPlepFJwpL9Wfu65dwxrHtcOjFros+CR7wvKfkWI4JMqSi3eTu + Lo9ADb4mK2XFT6QVXzwDS7v98xK69HVhnWvumuP7o4uVpDyAayqw9eL4fuUvRkfLW7YolyHD3vBm + fI9kXfDDwR+bSQg/4JFgcTCkTG1MeyFPUfoNFsFSTUUe/+LSyZjhsTgkRkA/C3RBlSDCmfEuU22i + Bh/PNrwf8LQL7ang2/tsdjeVL1+y16w3xx8cqaZZ6JKatkXissIPb4VNvm3KyjS73HfUUolGMVd3 + 6p3K9ucWwc3g08wXGOyVCO/3ckWRVqS3ShaLBFR4W926pzHtks8avjocmO6XnOqLQ3R8SeFrGp5s + QEghqWNE7wOj/jVbfi4MaiuRnk3QFqWFsnt36wEB3I9FqQ5zPPPwAt1uWKrDJVdKdfCqqND99LGa + EeIyr1yqM3JCL4ywvDsIWaQfCjTzTzg50KD8sh6JT7HiBh8o02xxn9wJK5/rIlQa4px6iIObjXl2 + wJCT75TU1vgvVHuiKBr9JOqIivclyzWWLxyCmbgWtuvxZOxECzRhwexFRUfq+Dyb1xUFUQa4Tj/Z + HA9w3CiEE1IFN6h6bN7qldkiP/Dwz090UJHfQg+ABDHzmpI2tRdWcsT0H6nXXmP947pCYhk4bqNg + Bosw8vPzyk8znyxcPaqMyY4dS7yqpuzVgMB+0uiSaTwe7LujxRQHyb937883dH3vXU/I8SKH8gul + Wp9k489GoDPCmRY3OdPapnrk8LedThbPwynXot6lp52fxYSuN+Omphy9LllDPWy5gS2SMG0vaJOE + ibcbJmFyyZUkTLwqwfk+hZVDic0dnqUsTMdzWRgP4UcgC5DPUzCSp6sqVkhNRKIEjYZrLyWDOycT + mmw4HdIqhyE55FUPsGVNsToQH+SJeRLdSDLjrOSjD9QjhcuXhe7zh9MovK/cn7WpoO/TISvlHGi1 + DCGix/3TerZfxuITTiUtRl6ECV62KO0rjsQyXW1mfKviTMuyJ8j9nFcnUGdbGv8eJcwnq3FGz7cn + xkJgm0AXwkfMPJ/RkHb5SRRoX4GEgP3fFddgp2csaFGJRbcbaTAhuaTB6CppsL9ff6gcGhye41f0 + qjA4NLiMgf4C7RVsB+qdzkD6r4309CH5Kx1xnUClSQ/4cbX6eh5bF5nRaH5ya2c1/Yu755O7uyWC + UhYToNEFdY+FQl+Rsc76cPFOWaPM48bXbwMRQIWtkxungqRsfJ8+wMz61jp+2jf5WythW/i9QhaQ + OpvezSVaTod8H59UTPqtCJcD427ua2klYYczm5X8ZO2ejx1K4S2avltkPYXl5xB2ZDIf32PmSNe8 + myhkNd+2fUaL1KFUy/rmErpobgPS7UYaVEguaVC6KrM6/7usQRmCDugmoIcmIHxFF0xAj8XCL/0h + /ZYslun8cYYlV1m5BJLKLIii+i+hTW6ny9V6sFqnHDJlczMF42OOAL8vxhK84r8Pcv9rbs4dZ/9v + aw1MKSyJTsomQ8kOA1julaoXcuXdq3fiv9cWbekKltkNDcWhHcWsXP5SeGeJt1AqpQ3KBTtVkdZ3 + GXoLJ4cy1xw7tKh3/ABYEGDmLm9yLIAdww2Z6er/z96bdretI+vCn/Uv9K2TFSkhODP55DiJ47Mz + +NpJn7PPXb3eRUuMzY4k6mpI4v71bxUKIAFOAik6cXb3GbZjmiyQGApVharnyfCLsuOI2R9EsqSR + jEbY3QdTyTES87sIdJusDvMPHQR8ZjBGKd8RaJVg35srY7rdEKmSS67gVOJVUsafX15gl5QyYyLf + LqNUPgkDNwr9SRiEfiCC4J/5ggSnqeT4YY9wq24J01yCCGDgJ9cCeOQFozrbb7bgyqmkUlz1fr5e + M68vDMCpVF1hFNqub5W17r7lretT40O3CfFda6IcGB7Pk7ytShoL4sg34VFJqaPhO3jEBzzPHols + i3ILGSs07K4WUglV+xFQPfx71bVX6ZxnB6GjWv3XAnaIGNht/YuQQRB6CNNujklZDklTGs2h1g8a + UiUNSgVPSSR3W3ybh0YG7+f1cA57w6ynlt+FYlN5yrQmrmhGq4rLL5MS3cYbQSByVuSLjE5eXUx5 + 1Z9kkRBpsVdw9wgf4VVxrhMJtK1jj+8pa1RHOzU4f2g+fekp8NBrcsfu9SXHyOOn2OJwo6Cu6PO2 + kQ5En6y+JYtsnRzwqhuhRGyfr4PtEv1FGFWcs/n7GTnaxvhIA50VMZ9F/KyhS3e2QHWQRUkj1PfE + ZRgE3n4wJb8phaLBjnEPZFQPJU/G5mN9+vHi/Dw/88Rkmf7Ly2EuKdZ8AkHTjVky9w9d40SUWSh0 + ygDgdp5HkaazoXDnDkv7OZu9KEC+dFiHYD/dblaATJLLBcj8qsgQOn1vV6L9Fu+hUgUyY2BMR/6E + YaWsbbVH/OcbaOKvHfHPy5fswA7QwHlABSm+LyrbGeuQm0u3G1a2c8mVyna8KmKgf/5RPQa3ysfg + PsZAQy9kE+SqkywBV2+d6TzDCgatnI44vygNF2fdZopYaqtk9pUIIrDIDlTg15TOETjy4hjPSl9U + rSB8oObAYTve7m9uwIdS3E0pU4mb3n2tnoLn76JNwMjxmnLAtMq8o7AA77nGT+0AbVVEpTDtWVGs + D68Tha7/j9GDHcsRztCiMp6KTPCT5Faaj3mXg6ojAfo8JuDRuAB55t8tTPszMe/y5+XJo4pyyEfT + rHnzx9v1XpB7z2/8pxbr6DvTM8aes2hC95vpYjuJvTxZMGayb3pAfQ0kPYFtSpCeEPaffF5hiZ8n + Q5LRH9NM++HxMCe+w8FS3zcS5ZAA2a0Jl44IgPWnHHEDMlTECNdN0r7Bx8DWaNqrC8KoDXN29WHa + ax97l+JBfWu9LIpRIdQDXv9FHoucPQOhZfphTvzivw6f8nh9B+IXesaY+EU0oRO/0EUyVnfpF9cj + na0yUiD1SKpGNketfx0n52/c15Ox+yZfVLK+9tHF+/NX4zBC5Jro8Qja47FRFlg+sUyysFAv8WYq + 0QauoTM542TlbIKXrGFuoxIGmyez+JjlcDS7FUpwShJ4PD/vKaP4j4mUbi/VlXqk/45yL9ZVr7RE + UbaccJytDA3W9tmrTNvWUaLEewqe0tRcq0rg8PD2J84sJLjlCVLzQUPQKhzZUKsOjHLoQ9fvStFH + jxgDH1IDOu4hv0b6b71ZCyiIz/bJG8FylusuvDb1QG21/nGZbhnj9Cq+6wnqXLdKnYvhjNktIaCr + zLz9xwia4XMR3bJNvrwpTwdnvUrPy2uOeM4OH1F+WFrQqvM8HqMV3Z0V2PCQx4kImJMzbCtJA93O + OJ3QkgtMvlQHHWfZNOlBGyxTXib1YDm6i6fpKG+7uvxwMf4sd7E2Dfa78hMfkhDl82eIUPnxR/dI + NkWu3CorvdXBrcJhNlUXaTO5pHUntWt5mYASXaW9XC2hoANLGqm+7z61wi7RhPwZUyNVNqEZqeIi + qWYV6OXAkTXaqftrgVmlQ1YJQIIcu0yLJhSvgTSlHvIO80QTj8BHCoBfJLCpD44d7NxfR4BuFeu9 + FivF6NWdgFAt86wYrqmzBQwwT7s5Px8EKkxOQc7T9ufFJfM6UITT7UaBfCG5FMinqwJQ7+JjJZAP + nksJUC98Pg2dILKcSQhbWCCSRS6gXzj9lHJCL2cehdI/rbNqKL2My6BXbYd+Y1W159uBbxtUbeuR + 9aCxLJqxgFm+X46sw+Bv9M9qQvO37CgwEl6k1tX0mZpV52FY/YDEUVvH5zOXitPoS15UAQtLo/Ci + DEcb/5Ork1m6SHecC2+7B2GkX0Y4a2Rw3Xd8i+yKyBdLp9R7HQyknklEgi7ZpdhFDtIfN0QUG4D3 + TKt0G7Nz/4OaJ01MsnP1qVAFYmmtAmnsZZsMDjMprZ/rifeEdtJ+kqQit4UtcfGSvQ6eWnYnYyJ/ + yNCaKBpRzYn8quBlny2Emv7vVwhslsS5jhi90je1eLG+jeHLUUMh3q/Y096DhBGK4eaCEwbk9lnE + eHXGnl3RGKTSKcP0e3TJ2o7HmkbVEsbxLlkglkuiIdyZ6w/bVwDZ0KLsFVGyA68aUaqRaRDrOhqe + zvEKjZhbHZ1l1HyPJpFD/ilJ0x0b6Itf13LWej+YeIHlUaytAJnbJlSc2S2/0iJi+woO4izDOiDD + 6eE6jEKHpbmFJebL7BvoXxgnihWkCHBk0n+kf20tftEGqTfcGdl9+P0e/w5SULrWeo59onLjGL5P + N4kG2Yx9YQu5u+EL+kAxf1p88PqC1eNBNQKq4fl46VgdfBC63QzUmySXQb35VZml9rZSwuOGoV0G + 9Z4ipLcPPkjEXFskEy2zVcapV3/ccYwStDgS4vbmCKT7HDhqdlutyKnzGLgNpZngVwrRuuf4jlOT + i1O8hQwSHaYCs+ywlGAz0cz9+rYOykUDyej9c6ek1hXhxvghOaOLkrmKUYQvi/ibzoX2ovAkRGnl + fr2LvyYavaddAqN9c/JKL+PBl0WA2wbC+mW8XIKPE6/GTZNiixDH35NvWBYoWGJjMDVgRSoEcmn1 + +SLyglM1BzYPHWeAygfHtqlWvK7rjFX+f3wP2RGDuQd8gfIPalrdHT2aZmsH50DQNAe6ypSKXdQa + nZ46jvXUcru4JPkzZh5J0YTikOQXSVG/ZE4Eey8lC45efX6DL1mOVzqaMNtzwsgntyNgNnGfSMSi + 4c50W3POAkriPrsEQ94815ZuN4N5JMllmEd+lbZH2CurMI8BrjUd5vEJg8kf2tEEfga2L9Hfm1BQ + i1jPyaeLHKl2hpA8O9B5j05enj4W46MwPxZws8t4dQfa5At0JapNqlPCLuTJmQXmbLZIb7C/8qDg + n9mmikvQMygYeYFn2055j/wB5vp1is5ohVSxsUo29LymelawPmxmh+VtU3VN5pu9hpro2m7UVHTb + IM5sF66TU9mFW0ZUGX8YVoSM4q+uTotBBhsNvwJf0WNDbJX1zx92s3Asyr4k/+rWp4cIKh6xKz+Q + /fQhcV575Lybrm6TucH8kHLnah7u0NkBowJ06iXkhIVXS4/PL3RBj/s1rzcBJ3UPTiohl2u2yDL7 + Rh+IkOCIdoohNNNtT+56fp7AF4T+U8vplsBHzxgn8Ikm9AQ+ukg74Gy/YyKYKc4xqI/y/AwJWZ7P + 9bw3aEBghiDTJ4rBYKbNfDZI0fJA4aShSmg9Ji1WDBr1FiKQn7ZrWKW4crqSDvueZdXUzWofZ4LK + PrBJV0RsKAFGzp7umIiDVOeGzFd7eY01LNfZvKabH+bmIF0XFlEuf3kxGn1Hh6ebZoPruJEWBSPE + MuPZ2vJ88+4h9WQgfSzmniGigtPNy8qfMvWzimY0Tyu/TEpSQHlwqN4Y47lqqoKaE9J64+flmml3 + 7+ECTwEEDcFTRzBMl/cciWlWFr8wdWTI6gtzWT3Seg8/dJ/FH3JSh9Ll9e0OzAb8dlOXFyVXXV64 + Shv+y8+vnArPIwuweK5EbcBAl0UB+rzw7r7bzHh2vZ9PeVrqln98SpC86wV6WjIYiBC9AowoBs2+ + xIeIvyUGB2qDArcw0efScf6eLuaEMHOdrnnSgLyRPN2X+7lj94WBMqgl7Uqg1lBJ2lgf8zVdNYNK + +UFTOxFy5nlOuRh7Px/rA1BKpQntxsQX17MRNLAepUqpSytXpWmOtOuHB144ZzEQHw4trLMtGdnX + yYHpNCnOrqFn4/UaJw4Wr8LV1Y041+PVr+rB64txUSwvZtXrP06f/fH648VVZR1zuoM/4gSpD05v + UmbjPy5mM/yBks+yVbAe8cWTe95u5I5E93LFotZglobDdMfseFjfdsj7W5xuu36oatWW+Wak44+R + 16r+vYhwJmHOphymuJXjFMVVsxvX6Mjs6s6aG4nPXOJ1bZ62Rr0C2w7TXal8QXHjuhcI729JYvcz + K7wHjfDAlqDVW5a3j87SNGPm4O5k1FHHSz1Q4sp0Apm7DSzGo8X+Yk7A3GsU8AVHfcyA+KNBlIep + 3FP3KWPdwlT0jHGYSjShh6noonC7QJPWwQrrLpfJTWp7PB3bDileFVDCoi5EgiJryJac8vBwftph + iiBjhyewHD2DtiW0YyrUtZmrCE0EpRQxOsqXhg/v6W3+LF6fDg7oIFxBDyA8JL3JMC+zCW2nc5mN + eMZ0jcomtDUqLtIaRYvnNsFEu9KSwyOzwkLUbrvcrJ3K8pRN8VKaQISTHUJd3Byq7zOv2TaV2H6I + 0KXEZ+Di6F9e1tMrHvPXrSF0LUtaAU3zfQjoDYcOPg1k3vehoZUfoCnfe+R7DYYRGDKpHe3oBLZ7 + v5N2FM+YakfZhKYdxcV2SCNh8Kk68DZeZDvYNDd8PsgbXbzu8jO2MEcr6u/udsC2uB+f2sE1x7WG + jJuI7P9bUKMZmFMdIcT6yWs6ubCdiG/Tup+fb9QF+aW5xJZMCcPTFOYFZQl5Af6mFna9ubvMpLWb + uj+dOewv5lMfdiLu2af+ec5vF5DZv5grHdr5RmSfMPsps7rtROIh461INqLvReIqbUZch8eLWXab + LYQSV79T3YzmaTy7W9ws4BVhOx7P4AmYd8pD9MyzcelG2OriFezfWKSo31qx9/M3Rn8c1AHtbbDv + 8KkpfPF0frdQZRrS8hjPu9AnQ1582SJdD0H90ymXoYMr2xnmu6DAeEB+LCo45nIlfHCaHV6DHSxo + i29Z6nS6l5aGUCKKWWwp87NO4oTXdnBQWEpPS3d7ToyYh7NuNtl+3TFhLXTySOAbp3O+Gn/EOA5I + DehhQH6tqdz23c2ilOiuCkJbGdw6kY9GbkXyI+OmRi8IjtwmDsmWI0h8mPnlLNQB4nM/k2jCkcRa + CVgg14t0eyvTHHnBMT+A77cSCBuYQGqv4w0MO9yYrHfmuVwHzMMOQQrDhGHz1f3LNWhuyx+VnSKk + eMymHuJjvksPIHqRLU4IYlcfTi5fq+aaUYicBaJG9zK+lvO7vwEp1ZUnii4t1zKvKqHbDYsuueRK + 0SVepRSbs3cf3UrRpV8GfgmeP3Gx2NmZwI9I8gK813j2YD/khXLbZHp+LjJfzhaZ28Y9iSm6MX9/ + PQdGL8FQUzRsn7HAqqTAdOCzbBBW5MHwYM6PO9rjwb1Fxi2Y5TUxHi0RxmXl6hS1jFNrqwBdx3Iy + FKye35QzgqLAa8iIkUJHNSMRL+gov0xmSZ9xh3sKqMyr6avpAvP89G+FZZ6N1QuYVkJ3wpuOcNLk + 5Y+e74/Ea/IFWfdJ3cktWSTw6UDELTe28JNq2NsQD0C+2GEl8MsJLr2yjGIJGL5FFwnNpqxLacfm + c93o7QYQ2x7FtQmL/F/pavYXAkoOBZPHJfO9Dkwe/HZDihguuUIRg1cFANjl+7CSamk5flSh8ghC + F/zPSRD6DOlncSP4JAx8fn5AC1a1+QUI2GYZVrMgB85dlN2vU1+UCuEvCgYL27Uc13crxfX4IY9u + 9jHGraYfgunjafWz6ssHWdAI3KU1VtT7FZ1WyVZ0LDcMD4kbXQmYVqSYV8WpLyutLN71mMsIN+OI + rLlqp7EhLs5iuwjER2M/UPrKMpsX4IuYSwaNjfjUyTk2PPBh+HkLUTnujjmx5J+fS1H7yEQbdXi6 + MQ7e5cQUF1byPZnzPt7Th4BWiOE/uN12PjsdDRX0xDmZ94PxrDZS+AOJLve/1Is504cdvGT2U8vu + BJ8sHzIFUM4b0SCU5VVSdfM9TIH9dqSY+OvbeKU/j4SYoDpHo54mR540EQpiZdvuQB1GtxsSK3PJ + FWJlvEr7wuXlRZVXOQy9Mq/yNLC9yHEmgcOYLWvOY6oapqCAWEPoB0lY6aurz4+lcqD19WiWrXZx + utqOPzsCS/bxU8y88NbjlAzYbLW4U4SV9AuxbXMmoRxDlqs1eFqDFUFROV87vuV1trsds/CKK0Tv + KfwDsy22T8X2xd+hdvfiCQkll6OxVtvyI8tlVQeG+kjIg+HEDxRFiyU/udSS3bi1WX7oWFF5a1NT + BlRRmFJg9NIKQKaO9avtW217rvpiahq/HEMYDNvC/OFkyhNe9A0xsroJLufMaMUAju8e+uiR+o1y + MHgKPrzgF3HwzVE24YYFQpJh1UjCE/xnOz61Pv9tq1UNmMy7UkUAvwvnrLKM+JRpWUySYyuizpSb + 2AjXdE6dHbo2pW+7gQzTi1nIcdWxHO8bIq3Ba59/umLob20TTqsJ6vHqM40Q12D5u/OG32l/Ax00 + S7din9/kZak8DZ2/Or93UsiY5AIeG2/XaJC7Rh+xX+OxcbzEni1e+6e+KTkOjW+K/jdB3YuavGTs + /W0Kt3OvXevbAV+KwvZt3Qcv8frTFdUR/IyOGiTzrU2KQXKsQ4i2DyL3bgAm4vtOxas1xT0KjTdv + ax0dA0EFUFJtZi9jW3TSxRXoVCpQqToPSRlZQ+TfHUsYNYRbYFNyCmaRP4K9wwhzUFqmkbBMLS80 + j1jQ7YaWKZdcsUzxKlmmb15/qkCWOwEev+mW6RMwV0ObTZzIChyRov8Gvi6bfrSn2Y90nsGH7mc8 + +V6zEG/Tm9tp/OULUsHcETeXgKvD/U3dz+mgC/tugwuaQ23wFKVsvU42PC60g5Zm/NzzmhcC8sDl + bAF9irq0CljBIXnE8/iSCFsnLNE3yW4wNPWI+UgEXLbscPRFqw3Rbse2m0QGoOu8shWGnTnWO5N3 + SwPYkd2Epx7akeMG5aJSLS+s6HQViMn3w1aYRTvyXN+O/jH6PefGCJdDbtT5vj0QzhKd+mW9sUhw + LHVuuyMEUdC22vUHxDbYFo4jMAK5DOhtfjzHm7wGDzORJ9V5sW4n6XzC8S2vfm5W5DSnPyKfHN+y + +WDzPxRv18F4+A82ZGFAOB7V/NTopRw7tkvh6nECG9A8UcvizbXq2GzYHCqn1ZdJR8DKeszhISgr + UQxl5BYL49dZRMx3KZG6pPl/7eFQlFdO2cGr4Cmm03fJyKRnjBMyRRN6PiZdJLMrW+5EeG+NVEyr + qTvlKNpTPPhN84zHeUJnwOUcSnm3OCHcwfvE/N/gD5HAxkexZZ526bNAlEGSU1En5IhsyOL4gDI+ + 4u0s23J0KNj5l91OEEAIBcgLId8xamMOpkVuH4tqhJgt1F7lWj1AaxzGiHWh7Q0bN6eQUSp1x/kx + QIbl4C23b2GiZxd3/ZO0I+KLOn9nsQ7OF91u5HwJySXni66KY4GLd/bLsvdls0BH5nEZeF/MD3x/ + 4rAgciwdl6cCeUKsk4986+px9bhgMkbLfcd1N+z7l+uFfUKnl7fxtoQB/hrePFuk43c2vwGGbPwu + VESKXWL7ArFNsX4ERyjdgg0vamhgGOCZRfYdlMtyjWG4/SZ3wLDp61o8ny1PTaHPqDnvQCbf/fg1 + 52qNH5d8NNduiERH4E15XuWMWpnUM7AvMYFWdGUeDdHj+45n0kAFVyfXpBiq0pF0WOWVR7/t2I74 + lJYeFLNDa2QZkiXXo7scybJ8RA3WYJHCo8ulKM7WHJ1re9y2fQKgPLywfmoIcpj4Hy5HvlkeXsVG + 8+0Yea0bVhRSHt6m+7fK7comesN3zPI60Bvy283oDUlymd6QX6Xt6urqdQU7HRwGu0Jv6Hh26IUT + B9QhOia4W729W2dkR0Kffrx8I+HL1wuQPxsa1k0lE4E+xVWbXxvvV19X2fdSfitqbkXyh1dlwLUU + CVDw7eW1Wjnobpbk5MocZo98JH8Xfqi+hAko/Sg6E5WzbDsZ4+DMxxmur+l6r7C2gl5OkMlotQMl + jacuXPUTmMcuvrnBMhAJ3bcFo2uXoAOAwTR0rrF8gkuDS2oWpPz7dHe7yfY3t+v9DlbDfp6Cbr/6 + 820OQu5btj8yrAa9F573I1JQDyrUQfOH5Pp1xPq1rQ7mJt1uuH655Mr6xau0fs9hMVfWr4Woo/r6 + fcK8IHTZhIFBE9mH1i/I//7wYRkfgB64ev1pSowdY0xlwwyvanpXOdG8cJZBfcxTup8e56Hw+R5u + 5IokKTZ2fV+Xs/ad7cTjR2igOZRcwP/58vHo8o/3xbpmdgRTnoUWxYnXyZoXYk5Fm/IVzI24o02w + XwGU8rNh40JGkAtd0v3aPWQ7iBSVJYevZsZ1C1kOWCUdcU6dP19ewtebWzR0u5FGFJJLGpGuCovm + 4lNQ0ogMnDg9L89xn09d8GWYNXHB/LUEWZqSL4yL7+rk7ERHhYQlKHwl5AEV5vFEO9ZCTFQMGss4 + lpAl7oVtfbHN8GR+i9Yn+HDx+HS64zSwMSgBaA7BUXd0mrZEgfxN3p3/8ezq5N2VyfsIPX613gUV + Jc4/qS5hDjqjEa4W5odrV1mgC4NaaOKGI1EPTOVGzmoGDTuVY9b+spUaILBXPafsvBdMglrKtsZv + 5+lAuFruW+hEoW2XhWarf+4FpwE39nK/kuDY9J4O3KYz3CCAmcnKvDe36XbHS41mya4mFR7eN2hO + UKx937J/l0/WEh4wa8ywF8M2+musmBEqDbldWuDojMQ40QnMgcE1DXn/Nmi+GtVGZY6Yfi5fR7wD + 65fcMyP2mfzwsLoGWgWMhE7DuzSl93OMjZ6OjOv7xLWA03f8CF98uki/Jo+bX78Jdhg1YynuUVWl + Zp3RS1IjPfkQjpeXYya+YazryZ94xhgzUTShYybSRTIbblVHSiIYyDT9iyl0Zjajen/50afpjD37 + vFs7lgQ+qMAnilYRPtF1wm7wiQc0yPFZm8dHcXm+Ol8kBa+GmsDb+9jqd0ooHY5b+h5SUwcGl+wV + 8f71IeVWb4eqU9+h92Ee/6HbjbwdIbnk7dBVgVJw8q5SnOowpnNfuu7zJ3Zk2fAOdsQiR8Rvz2Je + 4L4t+H8nei7ffpfmVGLQSTfyfmGS8X1X0qvxFLCbxX6W5XWtIL9a1tolHfNDYcgiAFfoVXyQ/JUM + WJ8dr6miJfAtsLsrToj8GhPRXqODE1i2XYE3SH6oWkVDBmhK/Gwk39TePm+h6JkG9AR4qulcVUoc + 3dsMGeG8zZMyrYCNxBvhAqy+eneUhKMzPENBgtYwNt0iN15AKI0109X4izzPCgvi5uPo4X5/1s0B + Waxh9fI32oKTt3nOE1vAXBhv75ZHy3VrBr1jimGjGS38QE1JHZ++aNthJHrjGuv1dsl0u05m6LX1 + aqJ1+wxEsJCFjvn2SbcbBgu55EqwEK8K6uiL0/LxCYt83yoHC594kW8F9sSLUJ3T9nmy+BojvB0K + Bxue56Dysz+u+jA9A9pMNpird5qdTMFykR75Y/mIKLQtEZfmhwW8tPF6k8Rf53gYgfF9rUASPCRw + MIWoF+MMWlMyO8DEgZHYjr/sl9D/YOOPXzI11V6e9syqZNP1kIT6sU/oNG15VgTzyKpsp0o31e2i + LICNwEhkEXaTvdi0xflBI2WWlDj6zYdxhFM4D105YTASH843r3IH9cz47CWw7uQH7AoeGSHIvX5b + yCDkot1EHHqdrjieJkKJJ4k6Kl7zuuKujt/D2KsHAxVisuqmKmgyFsAGuGDQYltNV+mONvJH1/vd + GESJc8/kMSzI1XyLMegxLnzYXfic7tq5gSiWrNNrrZNQbn9hnr5+hrEerxvzh3zIOIFdNqJnsIur + tKW9vPzIeLxxTIfaI7wg/q1Bc+bCMOs8cinrPLL9Sl3P+m3/oEG3PPP7B7HsdWo9JGFqQP2LikYG + K8xYjLrBs8v5SZWsH94xxzY3z+h2I/NMSC6ZZ3SVzLM/Ll87lVJWmHCBHt7wnz9xAs/BUtYg5JUq + OJn/SBcLGGKsIVyNL1/ThrkTZs8fm8Sp1oqaoZb8Hqkpr7dbQW6wbk5WezG+TcCAz/51d5PBV4st + e3ubfd+C6YPkr6vt/gsY/ynIxYy28R9s/FXtWMUS4aOVox9aAaIfurYdqNHYCjpHW3C2V+7IvRTp + 9ymqH5TmoD+gPq1mZuXFUs5Z9JT53TYb8YzpXiOb0LYacZFW9nWy8wRE3uXJxYV2/EFX5IGXnCgv + 8Qn1NhTBj0ccxxsNU9RLo6yH/HOmwv5Sif7zEvdDsue+wXyHCTHNcaCHQJo+tqF204tF3AE4WmD/ + /K9BTfYBrGvYVYmiYpZupyRpley+Z5uvneX0qCnDECXeqS+WHlaR1A9M5rIyt0suOt5umsuKkqu5 + rHBVIG2+PfdrclmruejwH88PJ8yzWCQqp16mckuDr0tW/4J3oWSN3W3K6y6nBX7++g5esCA92hI0 + gSvS6KbeFDRLXu1GqXUg5F9IgKizkaSYzF3CTktLvBawsb0Yn725mIpkEalOFhls6ilPCc0o3SW3 + EJGeabzGz+FvqzGmf7pN/fvLrDf45gq2c9BwiBD5nhdZYQVAlHpIGY55WhqM2obAyTZpqAAPpXaa + i7Qi227K8pISR3/5WTXCNVfkCTseJa56eXn2MUEj7GG+H5eHonflsbHIo9mujq79HdT6s2yKoCzj + GzSVYb/rjwfghGRJUnwS+60vVxas/Twac0hp3K9oAwouEaTroH46vnKvBgxc978Ok9ZY5rgNAv/A + LKqe++Mdcyxzi4VuN7JYhOSSxUJXRa7529eV7As7YDo0uOuAxRJ5dhhNWORbdpQT7U7L4Jn83AEv + bsf5qdsSMS8FeBLlwW1pD7q6TTCCsRZYsqjt8V65B1CXL2Nw8lYJfBeXDd46ohOCCOit/VLJIIVP + 3ClRvnwDud7PZT75bVJN5+hseoQ+YgAHlYBJC/pqE0sFY2C1eg4r7fyVTpiUPDoNldxuzk1nlmOH + LOQ4p7/JUI1wRual2rCh4zYUeIQ4viS0LX6KvIX3wubMiSt5V1Xd4+p3HNwW+26/EXmNedM4NY0I + bhwBh7JsTSGrB/M5OlkVZhFFXk5PQ9t7ajldIi/5M2aRl6IJJfKSXySdtd7eiQAp5/sZEevPBVwd + 4Z9GtudEThBIuq3hIyJdYwk1pHdDBSNyZ7rLQUMLeS1z6MAslzPlCwg6rI9UkYYqeXtJREdwMtNA + x1HIZn9lWDQ+CG5IdQQfTi5AL8+SNU7GjnbcQRmdosGGaqnVfnL/vy0l4LwDif89PTFPwREPmCXh + SOnlNBxxnbTSxavL8kEPi1w/qCTi2DYCUk5s2/aZyGP9dHcyPovzrfkF7a+4QzYn/H5LN/stHXXi + roxqZDt+9Pd3F9vHMjHmegEv+H0aV2yeDXxuJlTNFgaF3LtZvN6C1aAdy0SuniRzpSDLhDaLWF8M + +sOSOvG+NEjLTapPdziT+HSW352Wy9AsHLEDUkejnA2FcWJYWA/y10D51fWxgl39NVJ+DWxbvTlw + Ql//lXJgHDoNeAVdCusNNkPwf/oUXHlWwZwu+MG6aSHPoiMwfBOhiXrUS0AH+rkDlg9AR88riPg+ + B7OfzgXFpFVqMDpoxfsuyG5s+WHGVfygeCkeVeHUwz1FBXLC9K14OLpmYqgwkSMoW3lNIjcU4DH8 + MkTXXh4TSLCciOqhLocX7TKqToq3tD2QIcfPnngW0TGiPRbmE+U4OXne2fGyaL7kEFAo621/8+TI + mBX4muSyHt3Zg/HiDUgBTSgOufIaBhviYRH3MYsIXD9cWk4HaCu63Sx5iCSXk4f4VTIpTy5PnQpD + k+v4Tjl5aOpHjsXCiR+5FlolPLl7s65kIJBdeLKZOVW+I7jffuZUiqZL1U1NVUKRzUBlD4iwoCY6 + gzOfB9yU1OnFAonEv+9uMWD1DHwRtJh3yYrnhuvEfR5rCpFJ4WUcgJPLC+yOvNz/+206u61lmlpm + WEIE3yPDZjc8pwHDXNmGKmp5aieeWM1uk+0LXUR+kxaCwqfjxTKb7xfpasQnQp6X5LCQ2xAWRcX1 + Gu10dZtA+5Qfb+LWIRgfiZnB0EMnLOjMbfsVVscOX2VzE68aQ2PNsQRkJxfZlOQrFlEOVPiN7OeN + cLtgVfANjXfmIK+IrPICBUjFIqAWvqSLmHeU2Isb5Tfbl0eDLB44rmujAPFCz88flh3VtX2q12pQ + Da1RFIpa0kZB/dkzbWyQ0n2p031JbRIEXUj38HZTahOUXKU2gauk0/9+ccU5tkvcJnaF22TqgksZ + OhPXxp+k07/F8N2ZGsHcovaATn1ErJTfEun8/329ta0B8izAaXNDL6ggoOUpvLogvwUnRxE0fJ4p + gr8WL7XLxthXeNhaW43qek4JLOj9xUTjm4s8Bz7nH6P3dxsE7rgjcNltsUm8vjq9/HSOJNy4CYiW + MTFJjIhcJfp+kb+MhDzJg3n5WQgn6OYbC3KB8AgxHRZk8zvcQ26/x3fywASceWr2GX0u3LbYg9J6 + UYw0pRXwyQKrc7NPeZg5U95YvsJ2xCdnwTQSDsE0wjzL0eBYespxHeZzu25/nUKPQh8rADG5aqpw + iH9L48bOlEMlO1V9n0rMnk8ZvMVgppnuaUfJbIJNQXMH7+YTdAwztCNwTF+cuWpqf6dgCqHkyO/u + /LRbPI1nev2i7ZZIScw/4ucG/Tuhet7bYV8g0yidbmmUjnkapVObRunkaZRvLio1Ex6vWi2nUVpu + 5PoT8NVc1yq2SD4FwHVHJ/Lvlqz+kbp79rfxIxaMv76K5V756cu6Wkkhy6in+RLEnqxI1aLltt1E + Dhu5rh2Gld2vtZGiNGwjJghX1jAcq1KdqOtHOtJZU8v5dpl3Ewb5akHkrMBqRpUXMkd/N+jtClQa + GqKFXpNf+YI6Y32bXQtbXWfGknP6kQhjp+t0jqBSnFOYMwJn+01pT90mNwKK+AP3zk7HhLqWjuMN + p7zEnUHfOUc4+Yp8Qs97KGRbOByajtNHzsTXY15ER5oY1ipySmfZHraHeXVoOu7zEZ1p9xQzEgtI + +0aSpa+Ov1Mkk2bcRJlyZu6u2HFhDd7ECxLVuOnUb3QPYaf6qcfKDSAag/F1MTosqBvs3fdsuk04 + 1bdQMXlEpu72YiZ0az9qar9tshkWD3tWEOaBTSznzbXAEEgUedQzKkAPyx9htp+0Lh9pHIiK35en + vseeWqxLJlD+jFkmUNGEkgmUXxT4T/qHacVVZ0roXu4dH7IbNlrhf7DqlwmweExt4EEgWRSX/OB6 + i3f60chng6G5/fb4aXTYs13DoBxStkNXHvKd86ztMMf8O0yktR4sUFXyH5eW45pXJdPtZlm/JLmc + 9cuvkoH96uRdWAlC2Tzap6f9PvEs33OtCegwxxVpvx+SGx5pKlBoOXAWzmg0qbijDRp6nMMXzHGD + mNOQCFe7wuBT8PeA450/uUi+JQvKR4XLZ4sVmumoNZONjNOfnXwqUlsJiXLCs9S249sM0VqXCD3C + 6YZ4nbC4wJNaXyW3bC18gFfxIqzGy7ri/DPXxbLzSsmQBpf7JZ5pmVN6mozV5ELowhV+XDV0nXed + imumw7BZ7Vy5bhghkHapFkn7AD1nxjv4wqO/2JQZ8fWTJykHLsXJzLCRaxmlhoFVrpdx2Ca+f0Tm + 0AqrDdTO1Yrg5tMb12aUWoqCMICm8fwOuLUOh6/MT0UGyI2xaoa6rFaMPqOnqGFez6R26Hjq14Ey + KFzH8wmDVVgKBaxc75EcKleBWeJcy/Y7mBR0u+G5FpdcOdfCq2RSnH6u0nA5kW2Vj7WeBJEXWu4k + iHyXCQCF1+24U1rBijjDIB6a4iggh7iHrhNlrp+vZ8FaHpS8vhx/v00w6LPLoUO246IERd1xXsio + 0haB+j+/li6fUjCTN4zyYWZjAgBqIF5mkB9pjZfZKstvFQPPrY3TfVLFrFNd6QNQXMoO7MAG5Ddl + ZThhyMJKkXSnzNoGablp8PqyDh5cHsTocUosU3Aa0jzqpSegEq5BzO1SpD2X6oQrBg7mppVP9spN + jP6NJtwIF2Z+pBcGlFnsUTyy21Fat6gKDjU+0j4/uuPi8gHGu82mxkGxdGRGZ16vsphZa6WzF+lN + V7b4o0jgHjio3wOoZsmnFwv8sqiun9qbUe++zt4YkxBH3ltmPWWsE8SReMYU4kg2oUEciYu0p98s + b0WhnUQA1jI9R0SqzSb2tPbv4zN4foRCMNxmWywUIHtk86gReJ7Mx2nF9eDYQQsRfQCt27F0PaPU + 9eKlDI5IumB7GseKHg5Y6DFFdH8dIE/U89xjrJ+vxzPOD5tmTZDrdaIm+dUN6pibxd0MPwbzYffr + zkMTeKFhQ7fJj97tOMymzj+kNo4YBqlHJS2x5dhdchjwdsMcBi65ksOAVwWwwt/fVXMYbNur5DC4 + IfyPM3Ej5vgih6GFm3dSNYu2+5sbsIXQdlzDc4SYuMGjSRCRnzMWeIk3myQBgYt9tkm2M9Xke3T2 + 5uLxYUAe1NXI8guvsEGYaJkoNMF69gmF3vbz8SqZfZXAC98W1QQLvEfzPCKnEZC7iYc1b6ckqJHM + oknQg6N2VlOk9fht1MS9FwUeC5DS7q8zf0a4jPLE98hzRqIL5IZonEX+K1mhI/KENNgHs5aNnjzU + uFcRQUvT8A1MH29Gz3aJkCH7kc5hzsxBbffmZ2XMkSfQLEAEZ7/TCbR4xvQEWjahnUCLi6TmN+uF + awkj2beuFJDYguB41PgHfJrDVQR4nGAZkpKZ42n2pjgbjD+sBzBkX6Yt8bht++QRiDbhnpyCWqZo + y3Kovj3rWB59V15tmB0sjmg+DziC28t4KtwTgRiYMPly9E7dp5bdbTnSM8bLUTShL0e6KIre4Hdx + pDfi/xaQYYKisACAL4Th8vMtcE1H5rEbE6R2c9QyY6s254wMXsGrh52CA/SIaWxANKCFBuga9fN8 + D376fjtSXh1s+pX6LLr80Jud+vWIcFr98pI958tZGjDnqeV0mqT0iOkcFQ1oU5SuUc+9mqLLw1H1 + EpkRhtPjEaorzjObPNbymEweUFvmmU0eo+3EohiglNCOh1kpeYDnaefGiEzBcAkvB/dtseBSyNsl + dF6Ot93wGW6E6u95oD+kZUDiyTzoXGb3KyZXIcMry8C8upjPk/4au5vY5t1lOLBMihIYTeDjIylD + tdce+RjEMpWz2eK0W8/Gb05e9TzGpdKLt5ewXZsf49LtRmELIbkUtqCrAsXo86cKHiQLsUJYDVtY + z5+wkEV+NGGh40ei4nyeLHbxlE3XdxtwHxFb2JtyKpsfvHquNH4UGbjY76qQjPpqLDnkTSDKDMxd + cFcquVem71OfjhW6TRSTensFa+UCHM8lim/EbfY9pwlyukHomt6/4VQVBPoH33L0qsvoTAS2x2YK + ArM5TF5dDUlrV63sKDFpyneOt+NtpuZ2bbP9Zpa8gAZzVg6RmHW7X8YrnoO1yG7gY/dbmPdvL7DG + Eq7DJiLsdywo324xnyxdXWeb1RjWF6WUFTRqI5zJeYqWFUQj0fN8P6sOkjH8cr43erTa5XceTVDm + 5QncCw0puz/WNM4LVWTtoevhLx0ITZtZTECiNL7OLlOG5mBI5y9mRTTIMEiSCojoVV+i6QqMsf5n + TkcbH/ke278WErUv3t5ZhXf72OGaaQKePaaFn5MkN6wp5NqhRbEjTCnhTR51LB5Sets7K7Q6pLfx + 283S20hyOb2NXxUZ85+vqultnl9Nb2NWGFr+hDHLCgS646uUj+1+k85R7UmmzYmSlhyPvyN/H3hW + 8VwGKziAzGqbbL4VeTOYQTRb7HkPXi2XbD0Zv9pvnTVFzeGfLmY7Z1gXiA4twrdefjh5dHGLNvJu + /BkBJyndfb+tJqB1zXZvOALBJkFP1n50A3Eq8xr5yWAwHTfyywnp2AZ9aE3pKtg8B+WNHtSwjHCC + 5Wlanktlp65IpK18rNG21OHxRsRsi7ZsLkJ0fg8stGEMiKE2+i7p3oO60A9PUfOVlw/wwTVrMu2O + FXnPLnYkY6jgxXaLBMpHTGOoogEthkrXaFu4vVtnZN4X2+Mo3txkK9jok0rtIoO/XVMmVejbGN5z + rIB2WR4FwVTU8TZdgMLDx0Ct4Nkshkc25rY0YioHMuKnSLu+40Cc9yXmQHkuIYtcCvDZDTyJWn2C + evhbstkKhxN5DFK8CbyIrfy3sRPBPCoS0EtUbhH7Bz7hrTP9IxoTEVKHvNKfWFmi+BG/5Iy7DwMc + jCxv9OTy1BxUDExpqiVSgT7T1W16nZqXvwhtYFPdxOtLsGLMDUu63ciwFJJLhiVdJcPy8uSVV7Es + rajEGecEz5+A1RIF/sSBXTAQxzBXeLI7Hyc/sIb7Jk9cl9Vs8fg2WXD1kmPZUREbLhLMLd8m8QYh + CTk2lYi73L3QojoYl9HAp3n8ZR2n3ECaZ3vwTKZbeo9rZIjnSe7YwnzPU8a+JTcJQZMpaI2wlNKM + U4DJaA8Ie7WcsTWlf8AoJtzlvExmJ7kKJNP1Mp57VdsVdAHYelt4aRG5Iq1YxSizgqjJoIVeD+zQ + qSQHHZJY4mEDiRO9DNKLIim2MJPzXm0KPlrNVjG4GL7rl6s0a0ZDjhXCYPELU9hW9jPoJvjDos52 + tgK7KcGIMdsJI9fq1iwajMWfQXUk8aJUdeJ60IkNjYahG4FL1bFNGXhVChsOvYDTGEJ1vCD0ypUp + ojZ0z7VWQYuhV7tEzbijYMvYFc4/XBZoYP4zg52uADqsFY+QMFHTSGG1vV8GwRc9AMs73pbLZhBk + sJFMEBEKywhCu2SREUI1Tqm8l8XlpBGMFcHvW+cX8hX9eym2Ed8EpPdnhREv0sHhJa/pwJww9uaw + 67llXjdGuGwOsAw0yfVtihZi5xwdBrdDJmWJ4egoYCjWhEjQfoP/j/4+mpV89ONlDDNyu0uX+1pE + jHYUJ0ZgiPBmKWcvWOTj26/zuZLBuxv0kYkh5hLC6LOKgjB6GHU33tlzGzAypC3BmlmzExuZt5ao + YWi1Egyt8wGy4nrXjlvCt661Hcx6YihUlQHK2H0q5KMVNT9C0nFsQkOGZ4ZgDrAiSbaiWC8lDCez + we4p6kDEiGpHaQJtYQJNd5tUkoX++jMDKW7Icn3pLjLJg8d8+ynrkusoHzFlwRMNaCR4dI08vy1Y + EatkukFQemlFVJPxcjm2B4ZV5PCoEYvIVf/08RKU8s2K1LCCgXugSE5khF/HG3hz+GOy3pnXof0+ + wQkW0U4N3XTKDMMTcp5Q+dG7dzALzcMKdLtRWEFILoUV6CqFFd5cVM+r7KgM8OQ+f+LCtAgmHlKV + ieKjEt0d1paBYbEYoym+ShaTEprOMv4nTBHcDtPVVgGbfvT+/OKxemhCj+dHJro1nnz5stj/4KhA + sj2yRMb79S7+msjWoJVv8QK1GIfMWIBfAe7AZpus0h3xlYPtkC4z/ivFC96sa466utf7sIi5tmS4 + UCSV6QFLhBlN0AyN8iSu5CP4pu1+/Ga/ukkf6x5UGbv88JFc3qm1SIPqUZzHWiDc3dBndvW874BM + y7MrmBIq5hT41tjw8WIVujY/CH2rfGiYYzaAauD+Ym6/iZol3U91GwutwEfxgrL0ah/rHRtEjeVt + WsfqoFtlORyL9sBXj8pruGbpmizb7ksUNg46H0vn/I9dl+yLscI0LqC93mY34D2/P7n4Y7wHA2bD + G8GcCXAloJ9GqOqk7+xEvj8Sgyfs/fYRN/dxwXXjJxry2492dI/GFHYFHQr1Rnf0eT4ltW9qkVHr + NrqRU3aR55u9OSOz6/uhV5ZAU2NWFdJAMDsAom8/q+QIctkHUg6PGlSbg634s7Wd0ElCO360OOfT + Z2NHjNy6Qx6HOGIvbdcxLwan2834YUlymR2WXxVEXu/Oggo3bFACx3Lc59PA8lwEx7L8wBPF4J9f + XUw/THGV3y2mN4v9DNyNJdr+bHqhluwXlfrb8dliNv0Qz+AG3ikoAi7BFR7EyhbwBxEBfX0p//Ul + 3WwxSJ6spa01R+12CwMhfQMFY4ezCsY3+B7gPnyF7pcYBALRSJzIkQrf7WHIY+jx/BDnZHETVIyy + eoQL3UAL9U30NN/7wiAMfKtsRKi9p3YefRv0qHRck3HNbWIzqgUn0NLEo6AJKt8BT8L3y7bCh9pe + K+UwhU1Z4vJbR3+xuTHCdZKHwV2XsKrcMEcHLwG8NPSi8Z4eWZRNEoO6ueZzbrtOm1hk6wvKTaFZ + qrVV/8F6MssBhqWFt9/fQu4YtPwZ72OQkx/5lEtPgvJXWe4RDg6bh5tjIh9NpoOg0fw+wDZy4+e1 + yX++umRB1IUcXj5gtPnn0kvbv7wu0DGvPkSVJA+nFI5x/OdPQhv/NYEfoSSHf6vmiX28fCPZ3ecb + aKGO3V36OMW1WgiS0Am0g1gJQTI8lsl1iieh+P7yWq0c1PklOQrduhfC1pBH2Iic9ezSDjvYdHS7 + 0bAKyaVBpas0pC/P3lUr5YISSZETIUmRF4EqnTDYbSzXax/Umw20MKvPzOYA/KVwVWOa8z3D0wwx + pI7HMM25G0ECDkbyHX7D3tnv5Ml9DP9BYntRydOL7OAg7ERtrJcoJT+8Y65/2kHJyAfMqIKl9DJZ + sLhOM/Ld1Xvdy3Ac1wEn1a3QBUPPOyFPJfNC4Wac81OXLynZKgrSOgzvl5QfEfD0hhhTK9dc6eIr + 38mJu1qA5Nm/iTZCqgSmaCNJmcY82zzeT7cbwo1xyRW4Mbwq0ggvX1W0kQeapww39sT2PcsOJrbv + M5mIfIkrjRu3YKJdxmvhqL1CzljsZVsm3m3m1Vpdjub0RZ696WlxflMwPQjB2w1ZLQoXHtDoMXS7 + qeQ3Cpwg9CsVv9JTUM8kudlvnygEBLWOXOhbesYWsiNcqdW0PmaGlLO20h3P4JDUJrBGwNBd3DXH + 8B3LDVqyoHwkS63wPBQhsmy7pAZ5BFR3G6PAqnyBSqYtvmB0gt8vqRjQpZM26d2GW1y1J7pw68WF + fTIhwxLNzE22gJtn6fYZN9ym6VZkhb3ICRrA52QgDgXB7TdCsRBvKn6J/LKJxkE9v1uBqTzbvlBJ + V/GRT/HatdfTi/WtzdZTPinl8dwIl0FO3mYFBBcWyczuxg40CTXKc0EcOe4WlQZd46CG2deY3FGb + 38K8nIKqaep2AiHGxcdjmtry/FWnre0nyk5A9BM1k4o8l3E+qTqzGwwhuT1bw7fYoZGrUTodZtxg + TTQdA/ihx33JY/uCRTalhlRUx4EXa3XiQmFf2XZkbunT7Ya2FZdcsazwKu2tny9fV/ZWl1lWxawC + rQ1O3MS2wdwXZtUHiXogi913mHWaG1fFsPG0VeiiLZpfIkAmilDO3n1wUKPcZNm8DKPwdHyygAmD + PZltlnj3502CCnGTcM37f+HlnX/A1AFZT8U+zu8ob72wUjF9r34rB1+iEVHTsqEznAOUR7NMfHQz + 7xFzK9tWwccdwkKOWDkJ/FjqI+UIGh3MYGj59d8wOjAntJ7jScmmc0Tv84YZ82IMOzHBLOxuUyxu + WicbXlGpLny09WfxiuuMHR3LzTiP+fjs6pPC2Rqrs69u0o1w9eQInkxsyUfwAf0CoqGjxDZpXQxw + V44+F/tlutovx50ygG3X1SLk+82yayh8CCqlXFQkcm0VBnqemrbF1PfVTYVbSlIDmYXcBbpjRV8Z + +vgdMsFGQi/lscp2ddZlQrk+5ToeWoYmH+Uxm5gVhQHfib1A7rKRzFizOniwdLtpxppV9WDpqvBg + P31iViVI6oCzWslZg83WjqwJcwNf7rOXKrHcpzs2/kTHxduUjpwutZWrw5rAKH3PNl9fjP9IFwvK + dXkPwwLDNxmjA5fyGg/MbUiTdfbj7hqnJc9ceYYYeCCLHOZT6SfvdvAl94WuMFQYZFXi5BNdw0to + 1L4rpZ6VoLVVtzUIoiAM/zF6K4pm6URCjfLDAqKIJ5blcNdku998w/QgedKIq4pyWL+o1Rai5OaK + 3MgXQjTfbLA01/P5hsWrdPWkJcQhFJU4GfR9AndhHY0MZ6Wr0ufj1NnpU0cu322ebgyePU8m+vt6 + G3jrEc3cIgXJJvCG4wtZLG6WH6irgC9s+EDjc9CB6AfvmUPwXupxektt3NY9m+or6peXNrcmWNM+ + XSZz4kYyd9g8oiC/1Raaeb1PNwHN21g3Ob+4QH7EUwpo271t1FA9PV/LpVKWt04v2XVjdKTIllE7 + UnLjrDz+hFhYI44lQTps5637lHmdUDrEM6YwHbIJDadDXCTbQt1PSjg4KlBv3fGVtMU+bTdMu1lt + GRF7Ye8kxF7HJ310CHDnfujHHxqp+b3gYwxHaX44UjqkrKZudB2RalNFo+9Pdy6XIpPI2TZ7idRg + VifsbPmQKXp23oiGny2vSsqFrSvx3t1aZoUrd9T4B3x6igVRLjjO3l+TdKHv+fcv4WoIlDYxUrBE + FriHy9Vgc4Pn8gju5t+R7UHu8VFIUKOb7h0gFQrVxn28ZLZvHs+n240iDUJyKdJAV0mBnJ+8rdTG + uUE5nh88n3peFPls4vmWL7Ecz7dZvLxbyKqLKUc3W9z9i9PAYoCLZ9tuEh4r5RbDdbzg+ArcY4wX + swyzZqv2FmZHIhoD8r5m4C7h3I+X2X4FfieMV6q3Oxl/v8XSTzQx4g1P9Iw34JamS8yQR/MMwcCw + KAf8xe98kHho4jy+ramFGypDgzpDT+fDf2HMb0XdM4Y1ONdiIGA3ho0VZ1boeYFdxjGRJS8F2rMe + h7fCxkorKXD0uw7kCGdvHk/3PVvwPPBlWe6YltqkWsBInzTlIl2n86Phnn2LQG9JWl864dGIpgjf + JqoTrOs7wVyrF9Q0U8386ePFtupMJ/eHglfBUyuadXOIxEPGHpFsRHeJxFXSg7krM/4wha9apiu+ + Ed3wH2KbKp7PS+9f7nd2lYxHaRLhDX1RqO545GPkZpAapGnK3FAz1+IdvNoRjkanwwI5VpR0/P7S + CjucV9PtZljFJLmMVcyv0v7256cTVjmwBpPAL4MVT10X9rZw4rqhFQpn91TuARNSdCdfbhDHVhZ7 + t0GML6cnJwLTiCtCPK0Uwa2tSndOEfjtl2yBxAJgy+xXImMqURB1eXgWfiy2WaGGedw428hupyyr + SkBf8LEL8w4aFzmKu5jVJLANVglO3y+NSl2a23R+Hvohc0K7Kqytp0uym3a7ILIjxw7aZJcP+kv8 + Go2fXWz6ZTQRbWsP9RomJZVOezfldINKhClhp7HeKrSdptpsrT+1DD21N1Flyc7crmHbLBgtluWK + a9ezXC0pUMWGs10WsKiMjVZ2MPKpqhd4+azTR3CpGU9z5quDOklc0PlAmhMdhOTRX3Gdj7jmy1G0 + /UigaPta+lRlUMzPSVwBKUP7nKiuaQ3TNYryKKNAHdOOJxcmEhpBw5jvaH3S0zqT4UBcIqo8sYpg + oWUGa+/ZoQzB/rgxv5bSow8vR/3buHzi6TuMmWn6y6v45JxjESGPlThFupcEDgZh5tp2jksPmw6v + nqxuPB0H/YGAiNmCa+fY78GtVumjXyGvkZzApsRu8NlnPGOqV1cN51zeGzKaHwbFPO3xpdI18USZ + iuW5XcpU8HbDMhUuuVKmgldFidLr15XQm2djnkOpTMX1vMBzJ+Cf+JgZz4GpEN1yxqOXHFZexqjI + uH+XJPcY2XoAtUf/C7N8+gUGHXYPqVxqCN5H2MUFY3rgEQGr4weFzpQIPX1VyxDLbrBJ7Yt4sh0x + 80lNtxvGk7nkSjwZr9KkvvrwppofHvpeOZ78JPQZC+wJ/MmLrPY60GwD8r9XmRFrPEC+xTchQjHP + CbzwAU7nvArUCxnhPASesucdz30X0jGcQDjvi7J0LHXN6EGYYINaTZZN++UyvsHzfpGt3PM0bDhq + nSMtJgY7jS0k6AHcWYaYynPsdh2RaJl9I0wGDOtnq+1EAy/D3K9lgshradcSqgHj3SFNvfbAtIBr + w5uQ7moihoOfhTR/8nZ/jVWjqGe7vhR93VE4tIPtH4HEdLWdl/5Ty+kSWy8eMsV1zRvRkF3lVdpP + dsmCiSi7KMnE2rV0hVmD2ULwyY9OPr0fz26T2dc1x4UXV/FZTmlvW5RQZIkT61rMd/NwxdHJrPeR + vcl8jyDDCgKkdpqzA8ICLTlQW8yGiZHU49RXBbL4RPY+h+W56RFJOC7lyRcFGS1Q58Ph5/I8Sz+Q + xLPcTv1aRSo/DHEDQlxVCEEeP9vdbhJ4TxigGqk/2VFnvkOlmUe9yrDYOoGKC1QPsSMPrzmoDhI0 + g6YDP7yuBKdVdVJp5sUliyzzoy663cyfJMllf5JfFUUjF6dhFffARTYD3aGcRiywAjaJ4FlHHHXx + FMtscSeKXs/Pz/NsIy6VijnWs7B6aMQT2fmkh46qkVN7CIQwcPXHCGAF+aFbKfVoa6WBrjxqwkrQ + mtAhZos6LBzxC5gY+AlrVBZ4YK2dLDhhhSZn1N6PIz5GeVG+E7mU53p0ycHwuDFHalmyr02nhpEO + PCIrdAiCBphOhz6pN+dyN9EGiGjHhSWkTqNCuNN30PXm4QS63UinCcklnUZXSaddXL4qx8hYxJF6 + VWAp7/kT2w38cGL7kSWg2zFEVBvMRt6k/SqnPSpmE9VAVU9kSkdtQhdebOZHIKmrnGgh565sPZlu + OCvSG/GaMse0BirHyw2RflU2ng3UYJaraDANbUi/AfXKqkm425RdoAkd4Oi3BLUupI/ubaq8oOPk + 0zvOgqyWTlROhtWh1o6DOZZokme7inNWWH+LJP4mVzEdMSonySNcODl6qOdTZpzJKWltLlzvA9rj + DiyPg1455sDTC0uPNp/WHrD++x2r1b3VfZzQPeCjsQd1njVUhMW1/r+tAOKEbd/cUaDbDUE4ueQK + BCdepU319YcTrwLAabtOGYBz6tmBy4KJ51h+ZOcHT9xD5IpNSbbfZeMLgpsXkaxtNsdw6Hq/XMuc + s9er2KtsmZ0oQ5SUKd93A7sSzL+fgKVGXeH7tsk7FUST1BF64L1EYuEekDhq7Ft9W/kQP+Gbxrv0 + iaSo4Egai+w7bMULBLVbgD1J4a5nzSNWldou7cV4kX5NFndjmO7ao8qL8Ab7zJ4yyY7yOuJuSqId + wbxmvBn4hy3/4eWgqS7PG3k2zn/19V/v6eTlSGILOkY/5thmoNMfTJbjWwVc326rU9o8fhoSjEjt + wuj8Th1EtYHaRCLeeYfIIwIQL4/PdpF07CGZlBPZvoDZKYLE67edXiXyPVYWwddtU754ndXRWciQ + L9SM0ONSELYuG56gxTGOHm++daq/p2OzfIvoDBXY2948gj3F/OHfAOD+P+eyB6xiUQVC+m6a/EBF + h2Iqdk+H09dassz7aOjnf1qbnvY8X9vOpvnOUdOqsWp6UEfnP/ld2sBR/sqH+OjW2SUzpJ93yET+ + VifkMbrdMH+rDnmMrubsTH4lf8sLqvlbjh2hb+g4zPLECf0Z33i1ClDdkZB/wM4G0+hGphXwgBbp + IsEYMl7fwQfkrCHoduREOrjZp/N9slV4drYSFSunwZFHmSW6naU47uAE9rf7Zbwaw4q/5ez08YZj + /WUzgiDiTso83fLCjpypyR+CqUkJQoYw8FXYbgM6kNvkh8oGolcRe401L2p7uY8qGYxk55UGp/CE + KiFWV69XVsuBLAcaisqnbDXURa28T/6BDxmdLGCOjNnEEYbfX3L+IRuUn2cJenYo2KBoCzvUpeau + mRtx7VrqnCmVLYsAKC9u6lEx9BMZpkyiw51kNX3TX5ds6rciOVIaCg0bKqnPX9ZOo4srsswaNNL7 + eBUhVd3JzB7HqAGnoAGnNRqwgwkrrRC7gDliTy2/I8gRPmIOccQbKAEc4TWyRm6+3LpkW9zES3Bu + OR2CUrb4aJ1stk/x1+XT8dUmHf89WX2N4euXj0f1T8hkjLMvt2x0g/9B9CPfDyhB0CKNemY/e0/D + mINKS4oDjtQ5u5vVEao2aQnE9qHQQEHpwPPHviKtCMpX+RK6KbJAVC8mYLpeL9LtLVmzGy23ESnH + 8b3XWY6NY/bqjhURHn5B57FDlaJ+SfvLNwj2wNj1pJbaECGGKpRHAEgkx/euvUm0jMtsluAtRj4J + H+iIztLkZ61rCXLbQwwRJZMm/2+PWLtpfa+0vVstV0VEeFV89k7Ls9csINQP34GGo+MnHEiVZH6l + k6+zuSmdbh/ICZcIbv/rXafjNbrdyIUSkksuFF0lpfXh8wWLKol4tluiQ3Pt51Mn8MB7nMAP/1AR + zD8X0EKVDO2vVNV10VzJRcYwCFxnWxj+Dc4kzHDWdRwsdkx9I8OHQ/LPJW+TUENgToOZdrfFifuN + W9kbXqkPD7/7+Bbxjef7GVwV1jyGg/bSdBcw58VfvyU3CDGEURHY3b/DC4Kqutov2ZoQmLc7zBDK + UzfEeReaY+eXp2wEDRZc7eBijzh8OZWmKenJ3dTrA6mxkavRFWA9F3ZwBvs661RRoDxlCNejNKPi + 9RSXaY1V0e8eXX64eKyYFZscnJQw+AR8IJ40VJ79kK2ZNVrx/3LIHsfnxgTzaI9Zb5P9PIMpM0fn + sfCjK11pDqs4NDCqucThklD7A6HeC+Bj4JBBcHC4G/finw/CKFeZJ5JKzi6Z1YndVT5gSAMqpFeI + QOm6YHd991IPIIKjHbHALVOBPgmswGf2JLBCDsGM6/LT3cn4LL6RAY0XBL+C4HHN4I3f0s1+O8X0 + AwEat4APfvT3dxfbxwWPKLxgHTkseOqbTKKQZ4KmLJvF6y3sU9puFZVwhZSqUjBTWMTK26mKCalz + +9gdJZVrMvTdmHkm0vLd+dMdTiXuIjQTG2CO7QGpRckqc1zKtch/dZVfHY+nhclfA0dLuoBfKenC + Drg7falB4ov6qkWvCib8CK4HSAoMOvRfLznHgtMwz6LaHXwTsad2fw8Hut3PQw75sHXTz34Q8TgM + rBlKMxVTfRnj0uogcBA13TuZ/2GeEg8HKjBAscLx0LxDHXo7osBVK254NUzdRERGy+Xwol1GgXAe + 9Yevp+S0QVJuXY+F+UQ5Tk4eej5eFs2X3CJBWW9/YZ7DcGnJA6URD1mUGGnKaxDOjQeX5+yLGPJF + +LIrSGv+jGEUOW9CDSPLi2RYymyS8W70FR7PwF3ecLTV4mEknnAYEyD4Fh+jHepPepY+uXGvM3e0 + fEurtIWvuUl23VfI0YmlEWVzCpNXoafTJCJllEG5mUXLddfLe/xV5Bc+4cKTvtuAHv2WYOGCaduu + oz4NHda5knx4buGD783A0dfeG0w/XFvdJzQdl7jFOulPr5GbY0bi7tnw8VyCr+75tEeMjGf61me4 + jDyHm5CX8QoFoBY/mrPEDYjM8BJWvHk8nG43IzMkyWUyQ36VIgLvX7+p4Jw5VhSWqQynNp5lsYkd + OBETVZwljNNFtrqh/hY0mWfC8xfalBz+98mXamlmB5xfhccvcrzIt2qzc0RuRfWdGjh93XImi1o+ + qTWkV6QvZHm20pKeI1MqH6mXPHp/oCsriTI1DY9wLHNMWcuLjClj2jcjVyEWrfvejq6yV4c12vp6 + DfngQ9DP/FrUVSMZdV8/mJONM788PVoWTVcXkFyNs2PgkwbDKa1T/R1sZsHufmkxyzz7k243Y3cn + yWV2d35VBG+vatjdHScos7s/AesncJ2J77pMVgbmINqyTut9Mo+egZW6zOb7hUruEWMWhgx148Ge + qK+uAESgiJQT2Yq7X+io2DqdZPXxYjrwfeF0W8P1viw1ocd9GWuCgI9CZkdBBaak+hI6qkfeXD1G + vOvp8dyCMV1rT8Nyx+DMNuV8GhL7aQ72wc0mqdktLCuwmjIqHccPrHJqaCMqShMoig7sUvMFoyuR + gyPmSbXLymPyokiL3NJJMJJOqw+JtJ4tnlVy+vV6wZhnSUDpL8az9vnac6qNcAnliZp25IxEp0s1 + fHC0DmrnfNf8LZhqHd+vviR/rtqJ+YzqonjvlWV2JJQAhURKmuIendSRUAbSl+mmUoy6T+46Uc6n + 477kh+Td+HTEQ8Z8OrIRnU9HXBVIf9lmfZtdpwjzd5MgWAZmNuO3PyK0om/J4xGPdP3A9m7vFnBv + LM/WsaXbZOmMQJ0xJ3QooiOiblz03Ybv8ccX94ocYmgtMZRnHifqLrvVJnYsYWLD+MTruw3PoDlC + rlHQZkjCz54QIUZxDLBiCsqqhjnVsrqMP/PIdu47RC00gmeRHfoOlHcHO5TfbmaHkuSyHcqvCtam + V/9VZSW0fb9ih3pWEHj+xLNCzlmI2uPP1QIEfV8Lo28Ith8XXEErqth6V9MY7sV8axzJlAMxKhsl + DW/teGipeYHXxAvELNu2wsgZLsWu6yu/EJe45aW755uEjomEA/d+w4MuSpLb66ezbJHCHFievkCz + H7EhYmR+20JT6JFjatDo/af/U0C0g6FEEQWqEy83GM93YDLtb26rE7qttt8Vur9aJiM/ruPJ969x + 6kdDeaohI2iBlgnabSMMRdaifKvhBIvCkf4rzSwoPpzuZCLcakdel3Ar3m4YbuWSK+FWvCoqOD9d + 4FZfirc6tl+JtwagXSw2gR9OIGBApWt2K52iNxZsb3yBV2DK3jD4I57xyq1Lc/EXeLA1GSffssWe + L+AN8hxi8laywSijzlelO1u5UMocpNLL3Zq5VfQgmHEUW9dKt4vdVMgXJc/4Z6Gv3jzKHo8fgSra + 7sev93gqGD/W1Sfyu5XjqoU3GyJ2nF/J1uJbOyijllcqCoU2WY69WQs25PqRUy4cbXyHfHvQe0+W + elNP1UMQMS+q1FnWtTN6gNNjxOd7HpO2Q/+vCePDx0h+ksHwmoYRQG6U41P3eL2RWCrVgPuRa9M4 + DvLLY+x9mM3usQDU9eyC0G7IAbhXqwTTJAvnCN3+fLHk3ZB/SdL3wMCcb6FmuhydHJPLiShfovqp + fTaMgwtF2ia2jPSwk67kDvkzpnEe2YQW5hEXydRY3G1FPSt4CWuK7hRlF81/UaVjuQUYMTzEMxjw + lhPRZM7f4AjG7mJFD8H/nc8fN+CviMXSySbr8KbXsMdiqm+2oXVLejv5oZ5w1rAyFI/lWs/00UHy + YGqByWzKkgXb6yZeUIImL3L9jhUc/YM0UUhJ0vBlyYaYvOe8uqwNYEvvV9cn/a1P4iECSB0Ftyd9 + ivPt6kL8VUmIUlE5OUSq2w0i1TWHSHVrIVJd4US9+/Oq6kRZdukklGOkWlHg2BOP2cySZSxqeB5x + 9bEXYmEkcyRsrFXZ3X6HyczLo+hMy57yyEQ8h0HYJTAplmBIzBPoTSy7hj16StWJmxc5rPaa4EiQ + CpCfgpV8pnd32xqfSYZrdT4Gx22KfsEHerZX4breNX5l/dEmNFF2MRS0mCByPMcvQ32LzlLhZybj + vJdQx4luVFuKwqAJk8aJ7NBGR6Z5iNQ0GP0giYZKOD41byZfJj853JoP6YhPOAWqlA1EDHH/J3yh + T/uuElYbwOOKrNATyknr594S+bQ4JPFbGmvTi3/Ns4OMzD8veXUgLgseLK8cyh6ViTNMZHKgdH2P + HCD9+2oUlKmPOVRavOcSwNu7Tik+dLsZwNu7uhQfuipYgk7fVY9WPN+tArxZoJPDiQNL0WUFSRBC + QKWc8T3HokE0FGhdT8XU9GgpLzzegW2DJwon1mR8wia8XP7EfjGeZwmdE6yz7RYX5DzZQW/ylYcy + REvlxJ7L2aKa8FkUAJeOeazGjS6IYGlUOCwwY8D527TyvQ2JnlFpn0PSCfVIp76RoeAXyl1dys0p + Z4pWXktNzvnsTGfZahenK5QUWVfIRJHXdotGMiVKp475mhiKxX7Dwit6NRzpHDoMMRd5vbUQijYv + Na8dJHWYdtvx9X5XP1VwWtF0SuYjXAX5qROoQx7Fcl0y/GVBVUaFb5xpA4n54KvOP10xjlqcIBoc + vMTV1ecp/zC+9r2n6ne+0/4Gq3aWboVm4JcL9TR+JOVMChmTXECHYJjlkqJq/AgESAZDhr88r/tM + xt7fpgkxjehfM+BLhdahnoWXeP3pimyTn9FRxogHdYGg3xfowLF8CiOXl3Prw9zsGKwiNPJljcYB + vdr6TnJL9QRn6QV7jTlErAtlqXzGkLE0b0IlLJUX8y1yKk0DoZNGF/svgqJgXPdnVbDtOWHo8Jyl + bpPMKM+ln6HaG1Dj0GNG72xU0WMcQPlV9UFysvoyBOuehV3RcOQzpiFY2YQWghUXyRZcb/4lpm2t + J/Do4v35qzGzfSfwbPfxqPamC5RRvhMF84rK0CIsnN/CkwUjnzScDGeClzKTqAC3sAIzcPtMSbNY + FNiCdoMLKZJOt+kNGDKmew0obLf0VreLjKPy9nktx/Z8fuS1XSczZAc+NjO3ZXcboHzmF5SF/iK2 + sq60wg8Mb8IwoHC4CBJEudr8PJT+fFzYYpiIw2DxAarWfPPOsn3z+ADdbhQfEJJL8QG6SnvC1adS + CRBzHRa6ZcrN8PmT0PaCcBI6YSDytgmHVowHltiDzuDxaSJURii8bzIzJj9FmWcc4Emv4Lza1VTq + qHh0B1jDmggl7dCJPKvqfMd46EpHSAc+ooHDMnKaKLwcnslfruwkNNZN9s+EXGTFtFPkOsgt0OSx + 204Qek65IEijC8rfXgAWgjf/z70oM6EyGqmWv+y3lUqhwG3iT5bfNLqUvYJpOfU9J0ZdP8mfilE/ + uzi9HO/A+M+DgeIs5DpDuMf8/XnUYHwL3jvidaXEHn9WgChk8Hy647jkGJwvdtiiO7ARcDfnvESI + Bnx8ney+J/But/F6gR8eU0McUB67ZjvC1ZAjXYV+SJz2njiEE6+nGBzUMn2sDH+Ydr65Ox2QIYR7 + xU28NIRTDZjPn6p7xW46M2ACJXla4NZRFlK+SnKe+nwk5ElNt0huZFNJfP207iSLLyZpSKlrrzOS + vQeGrqXGusEIyzhkPk7MJqTOurj3ELRTIqGlTTsa2asPADWUR4oCVjNLeyf8oECbZlBZgXeUI4CZ + WyZ9f8lkOyi7kMH+07kRt9yI8VZnNBGHbaEln/+okyZpaIWCacfxoi5MO3i7IdMOl1xh2sGrZGj9 + HUPJ5YOYyKky7TD4yUJvAj/twBPAGH/fbVl9iYv0IHSTyG4sbmGu64EO6g1gqYiyQ4T8dsuidA+w + NolPe1lXP78/Pzuvf9kyp8z0Wzzbc9TWAlVJO//wS69eI3h0Ad70tJzbgLNRxh2yzaQujDdWjkri + 8dXJe2HZgv1zm33f1k1oYev8fZciPbiSHP1tevXh5PK1dp4yS7fTs2xxk47VdMgv4CGNcCblhxkh + JUBbdljAjMWb/IuuQdpSulSPTh5DV6ULfEUYj1XtKmq0QiLPb23BIMuthSL0mHxr5omtPjcQ+yQ1 + C7WsYmMtS4cFHcDsf3Z8YED8DoOQad0nDxBrHULTRznjtu2z/56+7JBQRg8YppQJ6ZWkMroumLf/ + 58yugiN7YTmr7EkUMtdzJ1HoB34gwZFfIjjyFNEXcoBkiUrL6QLAhBVzM5mTl/OV/CF4DHTWp8n4 + 4pLO2s8/FAem3DNC6qkS3oECjSywZglNeb6BL/o+vf6ZaMpG4KHaLlWOAfxEwGYjONJSykBT9KAJ + E7qKi6mVlNrOLwCZLqRpMKL1ARPPtUxk3iNwtRX5KnC1zdxA+9VT2cKdgOPByl9d3w21XzlJTg5r + bdvqs4Hj2dqvfqj9GuoI2ZH2q2tRPdN/0KyrMdf/oFlrL/EfNOv/oFn/B83aGh7NehhwuP9AYv97 + Q2L7ElbF9rrA+/HbDWFVuOQKrApeFbm/J6/w6KIUc7Kw90u4KiwAAy2asCBy3ECHBsi+jN9f/k9R + O8pjGO83CRO0V/+z2dprnXdX8Zjn2f56kUy3OMCk3q43SfyV0+EqfFr89GUiT3VEqscySTl82qur + l/C3XbLAeHuikoCRd7PKVhiRX2Q3GezkmNr4z4wCMyJdOJ571rFlMVHoekiqVjJ9y3WlWglMs1Ni + M9/GxOGSNK23xHZQ66T4UTmrWavfhz3YsSrv2snoV3H8lC9XKKTVgeWDiuwtcbrhVRX8wlTSq6m0 + LvqZo631kEonDQ5xFFXADg40W5kKUzkVdL/BauLnZrYTRU5YPr/NpyIMSN0rIAZh5fNcmzlNlUmR + 47iwFjs205DobQWW36kdsZYwmxqGKD/NrFti5fGymzoOei6MWKhllP+uimPENWceY2WROxLdTBuD + 8Sg9M0mBsUTmWG3346w+4AE2nxuTXVQrt4sUvq/2XvBGfeAL+mNBAoVSO3q6sKYNXrNlrzAOVkfk + Eatn1HwqxEvMbd/u0uW+Nv/1wCG7nU+uzl764aeb+H5tgcLQAKaJ5vk8yX7c1Yd4TOLCXAuaLJtC + h7bOmCMq8CJyCguuzc5ef0/gEQfx6vBOrv460v51lNGUdzDcAYFP3mWbsWI0ICCI1QkS+kpMlU4i + XYtxZYXwYRzFbvyVkEQ7nm0P5OU+GF9yIBdwGA/rOFAWNJ2VXa3HLHEdiyq/cIseZuINBRUD8y4U + aSf/bx/PN3u+xo3fRrqeTJJiRx3SSul2U1LsqJpWSlcFCcjlxTtkd1F8TydwfNsvg3raz5/Yrg9O + 6QR+hBJcXievKMoF5UKSVfl47i9rCCUbyGa9cKM2PhCQQw9WyhBLpaO+3eASoZdgw7r8x/CtqLa7 + C46XH5bduG0jN2peOaQfaDmeSQPl7Aod66DEQHLolUd9BnBEkybnyPYdexi+kYGggjoSjZSwd/4K + 7CKkec0mueFrHSWyddsMKWDZXPHYbm0NRdo8zIFGQORlBmvfzPQ6Qt69vWhLVodvyx0t6EBrRbeb + 7mhBldaKrtKOdnH5ZyV/z3ZCu7ydTe0wCiI2sSOLG8q4nV0UWk9W+Ut9Phnfxlu1chG8yYvNnU0x + EviXQ/+Cy6gw1wt04y4up+ABgAnG8Wkw1ZrDym2SBa84y3M9aEcEIVW4BH4aJNKcNpipBj7rsrQz + hY2ZfyyCTw38yv6nw4PpAcYSvKomzfFsm1Wk5aR1tWUfvr6vmbweJQwmEgf2zX51k5ZQYDFY1g0W + fCgohyNgvlvm1wjnbbGlMo/XZ+Jn4gJUwdRk55gp7k54cMdLOFQ2eAy1o6BeqF8RrSJGUj05gv70 + lNkBe2oFnfhP84cMCVCLRlQG1PwqqZwPU+jUnX6ypsIqHvq71o7tOVHILEGWGuRooyV4dZLYYKEZ + 12wPZa05nqcX0qoBO3iDeok/1vgHFANqFREBfxVd6c9OIA0t8jzrJsYAUIb9xLeb9S5FV+LZQAfI + Q6HC+57IQHX8wNz/ptsNs0+55EruKV4VmadXVRJOmFNeJfOU2cwOHX8CPx3fsg/aK7BnbbCG7sti + n8FKmaFVJ1XBo7M3F4+norxNXlxksKOl/0q20oQpZjRqj/EaBWOkTqy3Iu8UvuZ7xW6hnPh4zfF4 + KmBPUfPmDcaYF1VtjOJtSrBRTTWlD9gMyHMd7SAQ+zwjt69USTC4KqrfVyneXh6xYR++R2DtQWrc + pErwpUqwuqkEy1wlWLUqwZIq4e2HTxWyR8tjTlUlWIEXesEEfgahK5gi3t6tM0JPhH74ePlGWaZW + zTI9zr34LZaYMKWPMB97WqAHFmsYNcv6JQD1g9WKMoIymaNReHu3KKCkpku8c5vktZr0+0MxCwpR + RG9TJ2qSX+XV4wj1jR8Au222X5vqPalsAoGRdQrq3+lG8Zc/Y4iRlTehYmTJi6Q6FJYPTrySCQhW + job16vMbmLACLkuByMrlEkQW+B79DfFOprDsQ6oYPXvHfNtcYdPtRgpbSC4pbLoqoDk+f6rYcIxT + b6gKOwKFjeVD9oRFBXTnuZJVg+Sj8Nn79Q4LhATixn7XAKHZASma2S4WLFUOKPpCuejHFlYrzbnW + tgKH0YgVRUPdzmVbYmYzalL0bhPRDgv/0ZgwReJ0cGrZKeKA5H9X//f8/B/26d3Wl4skbRraF9qf + eCqO7Ilb2L1/wIjwwtbCxx3hFMuDQ8yxfh/sLodU6cEB74Jt1UyZQ+kAlaE2leB6rhsdet2DHvpv + FIWgU49eqNP1xxXDA1gPDzzVlDB2ZPqF2JACS2xIlmuZH4HQ7YYbEpdc2ZDwqvAgXr+veBCwAYXl + DWnqsshz2MQF/8KLaEN6lSx2McHjL5Jv+wVmMyZjjo0Pnh2nC4s5sMo0m+1iysIgUrCJKOPhIQSM + H2Srb8lmK9bQvCJXli8hMIrOLDwhtKAEJMxxMa/Hgom+hnVXYvtr4QsOU6THMHgeqVxbfGt9myyr + YFZHhhmO2KQbfKky6XKVj1ar3/RLRPXFPubYTs4WkW+KeodWEgjKrl9F2ujfYLqMcDnlmy+oiYdE + XD20vEbdOFSw/1fwXfcEfrg3pGVcpfnkaV3bP01uI4nfQ6KPEP7h4u6IqjE7tCi/B41Z/sLHfNpQ + RWgBZQJevGNBB25vut3IaBCSS0YDXVUyAStVaJ4VligowudPbNtBP9a2XcvxhkkErNZ9/ScR8DdJ + BMzrb3yL6m+OTgT8TwLffxL4eibw/Xun3wUy/Y7ZHRj66HbD9DsuuZJ+h1cFQ9/V+5r0uxJBH6bf + sRAce38CPzjLEW4i75Ax5mpZwCihxvki9lOOh/Ruu2QS0Y3cBridx61XW7D8ltku/bLlxvsy2+7G + s0W2TRZ3mFGCUKLQCVfL6UueyXeNh+MoaZNxtwP689EbjDitdtNLcDQw/gazYTEZsygKxh+IkuWM + 0OK2Y+Y/t4Ngaoc2lSi+TDZUI3UFQ7K+TcEpWYNYjlIH83gJy4rK7B4/lSSA8CnN7mcTqJmO1+TY + JW9yopXIBg7oZKe65xEK3DpfYDokoVsuMJ5o5b6Byzy3FpYQRdbVLIPVr8P/nJ1PBJN5s+iikjiR + RULQkBKHnCfQ3rrSll2quC7aUjiVfBbZ5XY0bLztctLYsN5cWMZEnOj0TW4Anz8QGZTtOqHDrH+M + YO6MH4nV8rhYLliZtxVwzLfJWvrbcpgf8cpeeBbLeeGHQz9c+uHRD39NExr+Gawfa5HqOR4KzvOo + aHmubke49osURt8SgIdKiZYJHGFzz+OQd8MkxenAjyIPTiL4oMZX7NKiT0BRldXb0XN3yUtpBmxs + L7wcGCTx92RucD2lCwvV1Kki8z6sFNSHeHv5xbpMs4ZShcMF3ENgNwZEBPzm0vKYuZlBt5vRIZDk + Mh0CvyogU16XkmQ4HYJXPnQNn0/BhWWeNbE9Fsg0/1kGzgLoxvGj048X54/zIeRBx5J3epnsqlFi + fGz8DfwsmAhjlKazAzDb/0fz+WTog51mV9B4O6F+FJtCFDLmVeA3Xl9iXJOSsmpPPC0/DJtOPLUX + VI5sYTLjBpAUEieyiQxb1MWX9uGqeIod590tHMx8bPJdi4+RxOHFP2+pVVDjmxS3puIDxZBs9RPW + ujfPOQZE4hrseK8vRzirclqByA24N3sc5i12tF/1R/si4CpS+baqDrT4+oLRqPsBKB83rueKPmsW + qw+/aRtHowDn8UAW8U2uy3e3xgbBuOJKlb4qXd3CBNvVo3A0q2aP+bTxkBRx0NAQBakR8zPTQQ88 + /+tTO0GXElBA/jjXtl1lEOhGVWubTlkQITgqwIK8xdMesIM5Un4/iAjmkk5RzTP5YuZ2hPFWPgz2 + QblvpDHgSu485p0w6ynzO5HnyYdM2fPyRjT6PHmVjIMv8U6kV+GSWlUg4dX6GX5Hsf6Uu5yxQKAZ + v9zP/VGcrjHJzUWsf57jFjDiy0y2SIScbm+5mQVzQoXvQT+J85pkeZlFXeAyn2cW8arQW/FEuK8w + ejv0uDY38apRkZjWd7h2SMN9nfJXore72WTfwTU8OOSjX2nOE6y91iddIoN0Xksdezxh5SBmtCer + 0dw3fudiNPGMaS2abEIrRRMXRebH65NX8P9vwTH8Mb5NEBcKnj35dKH4y+huyD+N38dfvUotmmwH + VooVBq5gmTTk9G0/uRuUd7WX1IGPoH8Bz/Bg/K8DwhQNB2l8dP2+a1kSw6dp1g9QY+c65BIYyDyw + dR+NOGSRaaR/75HvdTwAkVSQVIxzdmnbHYpx6HazVDqSXE6l41fJlHh1/rqaSlcGx8HcbvAWXdua + RG6IxwWkUPX6h+xmsZ9h8UPR0XRFL38QfvDry0ley7eVCU1UUYFEE4K1jR+KyENfmUkl75ou0tVX + 6GdOgSb2FFynoLHB7NgKesAP8ja5lcmShriAPYjHPE+H+9JqYuz5p0smiCs+MhEweZXWcEQeqHIp + 1RtFTbEOLwo8twaNtVJnIruaf8siXaeCPnBa1+MNTAiNZU/aa+Txkbwftf4rncOH5cT1dpmHRrLl + xD9sQjRlluP4UeT9Y3R4flKfsYndeaY+xAk6wsWcn0+4XjQSY6IackqZfMOImsdSBCW58SiW0t8O + YCs+8GK03kKbwkYPpLjNC51iUAdQOiZW229V3KY0FBo2dJv86F1EFxA38/k7aNHcSKDbjYwEIblk + JNBVUQD24V0154EFesWuy54/AdvB9ewJ0qw4TMK3r3mVD5USrfZrxvzp6Rj829t48XR8tVqwNbLP + USrEZrsbv4xvyuzMlMz4JaV4t/amMt2ACxpyW1b2Q9ezcgRwNc+gRg5fxU1cQA1y+sILafKGr06W + r7XONokeneFYubXM0RbsvOVciPLrtqEE4YivM8Ejdp1oxxza+8i4pPIaPCtGCU3Btvkdgz/wU86j + L9kCnYgXNVhXOP+W8XIZL9J4NX55cjZlRRkozP/82MQOKEHe9bR9VYg2C5DkO2gkkEPW2XrXA24Z + ezv3LWuHqiKvISJ/pK9+JPDREdmIv95IaHivv2L1uwzjssjXxruHnXFccF/ujaGMzdvWWfjU6haa + F8+YRuZlE1pgXlykve709NKdfsh2xdmuEjys/FEeDMM1VgozFo1hQB7GbvSTUo2MQzzD8bwaNzlQ + PbBdlaGwNqjiKscX+LjkyoJ2stWN4UP3XIN8MJmqMZX8PqK65mcM9512Zf4mPxPkTCpRzBTAO0kx + fPwEikExbLp/jESMCCLuMLy8BB1rnr1Etxs5DEJyyWGgqxKj9MIvOQws4hlmalTRfT51XCwLnThu + YPvSYUDGDtQUVOc8GeeWsgzIfHafffann73xdnX54aLoMQEyuvYrfgB/YvxjDM/Ad03151SmHL/E + D6rHlaB3owrKBCjuKV95W/3FmyhSXT0tSc3bVRuomOFaGxNOIsJ/S6oVNpYTHWxk1LefRzi4OZmp + TVEmi1dfPzN92W6r61jhrRa4Q4Sgx2WzDpITGzqETKjNpQ4G1RB1QcdoZL548JHW1daqGvl3iKji + L6Duzs1bmzbUtlUtIjwJYnEgbAO9xTIBXbtKDZMG7qehlhP5kLAbXr5jVtBha+C3m20NJLm8NfCr + lQ3BQZVf2hCQam3CcBjb4d6uFyByNjS8wcOEeAO3zxn1SE2RBkFIxbfv31lBaB5BpNuNRl1ILo06 + XSWD4PTi0ilHEB3PL4GWe8+fMMbgeyfww/OsutJb4iHFuPQGPIzFeJZuyfkYp1vBJTd+NLubLbL1 + LRaIP67gMJQekJESBDDnspPxNTS2HX+YwvJZpivylLE5LJraJNt0vi+n4Ep1s0lkHCj+gtA+6ZKn + acJKzLTSRDGNT9cbp60wuHS+hoGShnkc+LBLRlY9YXt7bzXAXnlNYUetqUqRrvx+/bTOa1p/Utjo + rzjKI5z2chW7nut0ChzWOV/GDx8IGx4MOzZkxv3aqmGvLAMGbRlzxWRuJ+HM5l3YZWkYfeQwkg9A + RHg83nmsINe2iR09Xwx9wm8hleN+fMfsDqgOdLvRxiIklzYWuiqgoC4vKkdTLgc5UzeW4PmTMAhd + ZxJGbg2vMLoV35AzUZhe5wjq8yX9lkxljE5arxtwwlPeN3Ab1zPyUTx9wJiXEm7jykZ6h87fMBgM + CuXy8v1UVPjS0SBWM0rXRs3syk/sQfIt2tAnz15K7D0MuCYbyj7A+7cEGwR/wZjbNr1BfSYjBjkg + 1GbdUpFrajFxJlcWNVTdlnqyoQI3avJOwQZ0bS88GmxKI97Qq3hreYwDuzEZRv3cQpL80GflMZcw + brgkWwIBjlWug1XfXu2FUgGv7GC9pjZosgvaZJVfvSQyvG+RSnaQ6OTRv9GiHKHqyql93dChrNOw + cMANQ/wrggdQ6oMagvsHYhhEwFo7jGa2SScJjUlFDiWy67Pd8AWOCcM8XGTLe6oerunmktbuEjRh + lkvlVILR5AZm7v4Qi89vnWhdbwIez7BmFwPTqe0hSjZCqnw+v7RYB34zut0s2Ygkl5ON+FWB0/X5 + tJpsZFtROdlo6oSR50cTJ4KBF3whZxfn03gFzgF+K6/82e43MKkTSvUq/Ddlw5in6wVuUuttsp9n + t3frW+iZggOaK/qYbgFfMN4iOTXVE030Q7x4wZFY+CEfHbXhXvT+5OKPPFv0Ecaqr3YJE7Rqn5IZ + Wz8mXjXct07eX+j3vllkIdwggMT2s6r9xhd/3JA7FIbNXGeWjeN9X3Ev7PwpH4F4jqmxui3AfEe3 + LzWYlMgPwEUtCfySLmJMDUW6dFHOpZlTYNc3faptBbbrlQMWpcGUXGzalNc52ZhrNcGFhgGzsLNL + MRF1SlVfGtnSm7BQpMCR4ZR+9GWRzWaII/pYn97103pSnctCgPizSPGCXl+CefST5vkI136eaOV6 + PNEKe510mD5efB0XRFoiOXW8SJfprqPNgePANWfNeJkK4VOa78jVmf/MALiCz2C8s2aim6h/cHeo + 5laMmk5jbxDcEWX8ZX1itvWYPnyfpdTMtimqJVdLf5acsKj5Dd5GT1nUpXSxeMi45lc2otf8iqu0 + Lc7mO7HJ/fcrmPjrJM75rkaVK+NTuHuEj/AEIkfUKcJM58OEPN7wwEIeJs1uk9nXdZbWZZ60gQ9Z + FENCcfN4iQZkT0m+7Vt1L3YvMho9jyigSklFqyiftt2ly31tPWGjWrHIxubKAIPVXQ++YRsMZMSz + e3JoIGABlkna4+mQUaVgiT6t87iAXiO9GG9BP/ME1Q6aqVBuehXL/jqFPW6HaNwoZ77nafb5VSWV + Kocxas2LamvcY47F8nGcp2i0dg1ee8wlxM81DMUOdzE9G6x487y/05tuiMa/yn8NBRIXGMkYM4FP + UAIpn6ZG5/7FpKMUCIqVdE/ncJhLldin+4V7Mr08/3BWdK3sUvNMhCFyCWAJuzVCJuPrTTq/6eyf + iZL6k4vwxHnK3E77knzGcFvKm1B3JXmRtiJNKejnMulqlSiJwWp+a+uNdRgW6ssgdC5zI76fRRap + /Bgm3jXPsN6u082RCBIdwXnNK8qPOj6re6VSz/X+YtcWiD66eArIgC/S43PldPVzO8p54z217I52 + lHjI2I6Sjeh2lLhKdtR6txHZ2o05wKWw/aiWfuXTm/PzV5Vc7k/xl2CETXC7K7Tt0W/EZOQH1ZdU + uwVFdKEx6pDZPXTTB7DFjkI8Y2Aoir2cp7g/oVhd8oOL4o83bqWNJoZlF7Hzru/1q3Z+n2gQDZaH + iQPcUd59ZWePcIBtjxt8aNXijD2akcl0JQzfcuvxPVWWvr9klm8e7KXbzfLCSHI5L4xfJW385x+f + wwongxN4TjkxbOoGoWNZEze0WCionN4ocMDzFDEVOQDwn1/3gbUeU9Ay3o7/2E/EcdzsFhUGtyrx + 2I/Ho9KtluLDCwiF8bpCPwV2/mSByRbJeJGsbkB+zFl4aBATDKSN4/k85cOB533xBhyhdB1zrC2B + FlB4PKCzt+kCZz1/GbxrDH67bAPN/x8ptsqrGmW249d9WCWQkMeThSAtozCIWjLZ/SCs4aCWEsXb + wJyhzq1vwQv06KXagm2FMFkqpak9zt+ZHcF0sKugGNwrn3MPvVakHza+nfb9Rci6GJAth1O/ezZP + t/LfpaNsp/F9mec5ASufjhfC+fDPqrDYbhvWeeTBMrCq8Bl7UKjTLSGzX2+S+CuGPuJ0w5PiBbwb + BhJBv4E9JN1lfZ40xqChReaHFXTvA62uspXSMKyz6T8zWk/691qNPQh2PbTqlZrNl6Fa41v6kqbw + POOeZaQnGODCLGb6H/uiao80yJSW3eOJpiDK2kB5m0mhFijULW8lpx86PvnyBdTxC+gu9Jx2xM4F + f4N/ICeY1rH5oSylJaKhU+3bsexbEQF5dfVSjMWIq9Y8+TBg9kj0Ed9j6zrTOLCFcwbv7jv/zENy + dsiUmB4K7mrUWo7Bmzb3q5EdNXwrBz7KcSjkUlZYY36eWegsw7d3bV1coaLMBPQNnLaHLz2qKZ9n + K7Sa+L3GDrPxwy2BS9ej4ozaCCh8omJNmIil5UfzuXh0oqggcO26+4VWEBV4d5o1YGh0H+cCUM5H + W1ccyH6x1XynFsvD5Gtcx6Pw3x+gv5//AdrbPNgHJkF+mNEt5cPkwQOJK5T0VWfSGA1i73QV1yLF + pcPjvTKDA2wf2F9exeXajCihijllPLbSQQolf7175jxlrBN9PT1iyl4vGtDI6+lambseTOCbgrds + 1PgHRartORE4VQLVt8+pUA9ArocK1/HAITby0GmUQ1ucuk8trxuyBX/EGNiCGtBxLfg1Ofc2KwR4 + W4lE11H5gjLncmkY//QditP3oQiowVE4khLAOBwJe1JNJS2dSXGClXg7Q+KAn710ek1389DTL5/6 + 0vCyGNkk9SQfjTjyxqcSkSVwqS/ct8x6arNOwNT5Q4bI1EUjKjR1flUkLp5/uKpFjdH+IE8ZrhZz + b7TF/8AqY2A+0CozTYBody4El21ZijFGSmBRmZZiE25hRiQ1WCkHsie6yRkwm8EMIDpkfMJrI9Rf + 6fySo/sucXG5eKiY+NU7FljmNV90u1HQWEguBY3pKgWNP5+dVIqJLc65ohaT+8+fMA/LzCfMAx9J + 7GWf9ExGMm/59F0lGGfCd8G0yRuEgiN+9uv97m6DrO+Pzk5enjxWDGUwJfczGdbFP4qo7aPtfnaL + oWd4UzbB/9r8v67M5P18E1frfo1qnE7ziKDvsTxIpnDxivKjzicHejhWr0ZXKrS0ZguMkhTZdJLV + eL9L82Wl5vtGgdtElwT7WmQFVTamxmNOmpsXMGHVI0A9uOg14RDL1ka/eCK84GTh0y9gT2DJUN3Q + iBDl/64e2Y+np3fbR/5j9F6kn7/YIyKERMpEzflCqjXKfcSHxZwa4ZKRsUDbsaPf6FSaCp4Pzocu + p8NNWw4iVOLd5TGXxST9c8j4AuCaum6lmEpxvTBqyyLr1u+VdKeWzaS6zffbeowjLQdqZKyamXvw + LLS+YKeXqEOvR5VQfXVxlzCHFQqDDfXJGK/36lPXDwMCkYP9eNFDjjQPbMn5EtjeU9aR80U8Y8r5 + IpvQOF/ERdruyz2vgFypVnblttrxkeb35WbFdMTGDV7hxjgL3d8q5adu8tep0xZtWi3os3Mcq8Od + 2ik/1IoorH8db2BCYGB/vTN2oH+Fgc0iUgSwlA7VQvazykndMPP+7qYeh6gpjBwZRbXdl+D0dssC + VJ4yjaUWzWjh1PwyqYYPJ7B0Xr0df01X+CD8+5n6uy4II6i2RzCsIfNyTXnAGmiNmEQiMxhaNZFl + nL8KWoMOZWTkSj2XE9W51Tf9wVHa8fXW8Q6G8AHXQw+a7GU5EaVcwTA8EYM/BAdSN7HtoTVRf3Ck + lOMpFuSCdgn25dKOOqDI0e1msC8kuQz7wq9SCODT+XsWVnBfwoCVcV+mYeDCh0/CwHP4E3B3axY1 + 5Xln/OyLnPVP6ZKFbShdzUnsKZ7N8EGoAxu1A5s15sD4WAjeSKKch0OTJpxRz/caXHhddhnAa1r0 + RLy5SXaVxB2f6YlKZ+eTDsL1nPqGFkr00g0tjE7LgKW6dBg3z11P4Ydtr/MBUHN5iuFBUBDYOkHl + kArGl8XEQOFG68P7YrwEbZfXR3OtGl+jO5cIimcCSuWTNEf4CG2O8IFJVWTUFUqZO5fGXqpvRSJP + FjbczXX2426RO6g9isxwQNUtvhiU1gh+WyWeT0eM9RLbqx/axB5LVN0d9ax4NLDKg5ZtwR6Ghpp2 + 1BZZUUXWj3Qec4e+o7ShuKZd3w+9yrTcbBO82/RlfM+yag7OtFfT9WzXJPdfDUBHO6iuZpq5Lg4J + 61HS88APr+Vswp3t4Mc1b5IHbTbPs+hAeYMnU31jHnyTrF08Sc9gDB5DEDNksuyJqRd5AqIX9Lz5 + +QrdbgjRyyVXIHrxqqB7+uOTVwHrdVkFrPcJs4Iw8icMNiQvOoTXC/K/V6yo6/0c4+1f9UOPqJHy + SIfr/YsC/57t4xWCkCqISMkPhHsuEJry0CIeUZxsvuBpUiX4n3cuT0ZO1y90ZBDtDBQMIC6m6dnR + n68LDiTYdvxR51PVJu552yIDRA9zncDckXIFdBpfnvKgpdNK94jSNOcdzzY0QcHVnd12fO3BsNZ7 + An9Fju7d40jBABk/7VWe5uN8WOdalMSDA3MDM/RuMW2ZoB3DTAPJblWsRLb77hI0prlipduNFKuQ + XFKsdFVWO1XJdh27RIvhgmL13Mhi7gR+OJ5wWv9M4u0uz5NFMxksj1lGKMTFSrnNvnMAQ8oz58xm + y2wP9hw2zcsKiuJ8eGy/I7NzkexnoHKm/0rXa9yjoeO/5MVHNXy33VFDXcTHcSt6ey2xlOs8ZOaD + IdF0ED2MQIWdz3csGIvyfrDbXyOqUl2NEU8vMPnefiDZ7y8mGnlgnUD5dnUCA6sUXqgXWC6JocTr + 2+RHTEmzZ+nyWdGpOZxGjTtNlW70IiCMuEHFG07G17Beit9wKnJlPMJFkZepsMjqhJF9gBfJUEpz + ChKZsbKX5Uc311f0AuW4h22CT3T69vJy6OgUmMups4uHgtHgS00dii5p7h6zQv4R+xV+QzI//Cqt + GwmVzb66tBz3dHpingMlHjDLgpLSy3lQ4jptKO/+vGJuJRXKdsJyKtTUs6Eb2AR++KEEwKaYtagv + u+YVBhXnDPYvBxrk6xXNeQTftpAXlvaG+QZeZzaNqxuEMDCKa7Xmb+jo+lia0Q/KHs+JOALb4UQc + D8DTztPxQlnDbdv/3WEyygdM67hJerWSm1+nyXh58Y55L7XZGAWe52DQpMTyAVPRQfuGwboO2x3H + 5Qba+F43w47z+A6yBJfIgRurVR+uH1nMW892+xDIFHvQfyo/fuKSjmQKje29tZ8yq1sOjXzINIkm + b0TLopFXaXHO09u7OQhAyxATILd3q90t52ApkmDGj8C4fDzaYRoC+MQ7nQ5eh3NSWnUcn2FCIpl9 + IhkLZSzBt/nSmMNueg7rMSdiuUx6r6NAnIZjvxyAv3JEH2jnH/hhWu36Iw6zaUbC1JIZHFFgPbW6 + 1cHRI6a5G6IBLXGDrtEms4nnTOA3gSbEFELUAuQWgwilUFy9Pv6fizcjfNTCTI4w8C1RMUElBvjU + kdkcA5Sqq4y6PPAxTX7MCGuwSWArHGbkt4vjuWPwKF2cjL2/TUFpLcwhay2wySnMn6T8KIxHJWbZ + 6luyqYdIHBx681AFOZdafq14N+Y1xTdT/g6LbGYC1USpbdahMbrfSpAeebjDpegQhCyj3Fbovhzq + IKGa5TwojUtvnmQ/7jbpdbEGh0iqGRDi3yQLucuLHZnT7HpMITntX3gNcnLj6FhZx3G056aRwG7l + JsTiCM4qPwq1TAUF+UlG77ud2sntjclSW+c0eGo53UAKxTOmxbayCa3aVlwUW9zt2hPVSpfJ7EQW + 3Sr/xnp97MdLvHPE7+e4mH5INd5WQGpK6uV/ckBm4ZGU8HcPa/nB0V7aIKUDW6QhKBJg0Jo2wGaE + GkepYhSycOYpkbtVtpoa7HEPykb45Rvuz93B/YgYfeQ+lW1u4lXXA0YrYI5IuZqlOHDIGig6sB8u + kWszlytrsRaImsBwPXksoPQo/byzDST8PqGe7x0ipks+7limMFu+slCK5Utl/nrVQPsyHpph6Mhd + fohYOAghhQy7wACmi5G09jQai1CA9FIUsUcNYPX1lN+KMeCwvMy9gFzPYv71NZIPQw/dm3GSF1SF + YfCURZ1iQfSIaSRINKDFgegaWSPqWd+H6SJdfYV/cxaarQyqqGGe2/0yXo0v33xiMMLQaWAc6EVT + X3ZUM2XbTIR/dJB/XoBJNn5Dc/3n1NHJpCGB1S7SddqKOtK+cnxKAuR5vGgfY3CtpzDHtQnMiXeR + 8l4cavC4IJpnUXboECmcf4lQcoco318zVo2f5rC6JdCaO9k+GA6VzGz3N/HmOXcXsVJ6e7c8Si4u + DFtfGFNlYWAizPERUkeWxARhByZkfrtpSQxKrpbEwFXBhPz6feUo2A2xVK3MhOyCG+JOQvAXXYEu + 9hnazDawC21A42Kfn5+f50H+CrV64W+A3cqH6Qe+/O3d4hp6ZcVt/32NxInIENnDbgC9maxl0ojI + ls14i9w1lORggrg4Wbr3d8JcftWp+vH11TXYry2pNYEXBaFbBsnQvxLrD7T0n/IRY4FZgUlinv+P + 0UMdpRFOvaLOxXL5Zh5QmUMuv/RoPwdaqP6aV/lZ8pqyWB0RGN3BKo7Xd5tNtjjqFblFROv3mekU + 7fbxxwpvJMITHt/irneJoW1RieHJO8sOzPUp3W6kT4Xkkj6lq4KH9M+PZX3KIjvS9anjPH8Sge1v + TSLPDbz2VIZ4AdKrOfBduc0fbsLBaa6BnL9NdbTjXZxiFG+ZfYM+AYV0Gc/Z+hn+11orTp12rIDT + IiHIPT1Ow70kAfm3hbffJKC6viz22SbZzlTSr0dnby4eT7/sqa5Zz1In8G0FJOdFPv6gmjla8xQ+ + HsSlAo5/dHXy30UOvGVTsLVTIObofDi5PrycWOeV2+1EVj5iTKpDDeiUOvyaOIYtTKT1bbwalX9X + ZMDeYIc+vGz/AFYPyDLboszvl5e2F3UoqeG3m5XUkORySQ2/Kkpq3p6VSY1ZFDh+paQmcMBedSfw + 1i46qK0lNRuQX1Unf8nMO8v1HfhFDihlYH54Z7uueQE63W40oEJyaUDpqhjQz+cVlmqXe8mqte0/ + n7IwYH40gR9u5CnEU4sKrKKobkjO3zAxxFf7tEr4jGeqHA1RZ3p2m9g+otBlflDNa299iQZYONcx + aaTITi/a4Fosb0XPe2eHpBJYW2uPvVCQfTD3vDZBHXeRm1WaI+nwym4ujYeU59nqBaYdcWLjrdZD + MMPA8Zvdca6W4jG+rdxyTQnzITeBWRhSPIsKm1qp4w5ksDOnJEHvyOHFGZyIuawJkq3TR44QsN0n + q3m5X+zSKQxkB8B2UUBrOJE7Rvo7C2/uN6m0KFP37aUVdEDNoNuNlJaQXFJadJWU1of3r0r1R14Q + sahEtmQ9n9oekjBNbM8LPJEtXgFbWOExH/xfgb3MycvmyQxJvaGpxyUv/sNy3reQSKOHt50wDKNq + 4U+2uKvTi012dGT7IUy/JoSNOk4htNyMXivXgLxLJGxg6SN917I7qdOSsEnNEGgbKmthQLKwCfaP + 0UVehK3X8ZiP7ovcPN0S/9aHeBkQ7fvnNS9MraXPUYhnRjgvc9p3xqKRePvcPIw3UwlmdS1fpQLG + WNcf9L6Gao2ihPXCTWV4ZY0PCvbLJl4m29v0y65L9RHzrSDHUeubeWCY9N29Asng2BiWHgWAxLo8 + 7Bj9HM6IvlIOa/hImqU+M/cz6HZTsxQlV81SuEoa/uPlabl0H8xSPyybpU+Y51kRQiP7niMqMEp1 + gNkmvSnZTGJvnoy/36azWzF+2wpU+PVd3m3gYat/IZk58V682Ga6diiB8ipERHwL+biZeY08eOKF + 4fXVJmvevxRp8Zu0ZOS6dhj45R2ifDys1ZeGYdPG1SCt3HniKxoo7UIT4fmG0YLhrm1EdtDoPNTK + rWOKineS2FDNrZ1hwtUOIZNRMe/Hb/arm/Sx2rqD2DOdWl9vkmn+Vd8KPu8irQ2nVxNLnG/7h0ao + XBH7oFbCCJd47mnYljck9L8vzt/rO7gjrVg3IoHD+ezdxTXF6nHK8R2t+zw2+XSEvAyrHlJDa7lF + dPD1Bygm9j2/bYTNYnC+r3F2metds86z1dyvQiC8szLWxm7igMlfZJ0cUNhmXfjT0sAOGDsGEhpz + IEMB9oWBe0JTOSKgzSyynS5Bp3UI6fHbzWwnkly2nfhVsp0uPl5U0DlcJ7QqIb0A1rfrTQIb7H1f + 4kyjSSD2i1evX70ab/frZEPp2pMcOVrccDrbuNMP2S6fxbtbrEkRBxpj52+4W3h/ky5XDD2cZzxx + O+giW1dd6dPTS5D68RPC2yR1to6DdfSNoJBuZPmSYfaoMlsGbrDlhmVDx/nb1PvbNPmR1ReF6J5r + 0AgAxVyGQHNlm4Co2OmYaXuL6SIVylnLBve8mWK3QfKwRBQ1HT76WXNnhBM8txwch1sOllp1Vudm + N/WsmQ3we6Cg3wPFRJvi9h0/lI49bP4rwWjUuY3aCrXIsTVnHT6ZxpEmNA7ddTY3xWX6BdAlx8Yr + uJbDR+r1odFIjYQSwrsP6C2jT+orq61SxqZk2WV8s0q26X55BA7ikGV1JlSkP6kQzuYdBL19vChC + TRO6cJoXOhoO472XBAxYYzcIDYjN2P+3FTXjF7Z1Gj61OpHsFQ8Z1o0XjaiV4/lVMtJeMifyQsGY + NHr1+Q2+aonCcuzxntBvxSJ0z49IEvxVaxCpATzONPtszP8dOaPjwDb6qT95OM5ske0Ak8Lckqbb + DbMduORKtgNezS3poJLt4GM4WM92mHoBc21vAj9CN6hEIa+z3e2YrKP3lxcy1oKr7RtOHPRhQc0Q + lph0Run2ys072gKT2X6zzTY88wd1K8+3B598DxsE2ExgPmwLCzuojzRmnFJBXfgXDYFFr8mIjXzb + Cr0qdp0mFT65Vi7sJbaJ3MLyrohtMrobwewM5DZIBS3sm0gt7O2SsaKb082x2lphuxZhoeU05h0I + YaNfPRnRZA/yHBgnYCPRC9xeLX1cV6u3UYoJ8AMl99JZGX4WFnl2MoKx+3ljR31Fi5SDX+G4EcE/ + I4orl3+d/RifPgP/a5UdeqtqmIn2zcYl/DPsbZ88pYNqyuRrWO3XdM4G5gqgIqpN0CGjrpu0xsPV + Yw0muds6eSImUgW53bADxDPGqZiiCT0Xky7SzrvebkVa5m2CkezbbPY1N20CS2IJ1PzxAp7ERi6Y + +5oMG0Rm8pigM4u8CgFCI5VQa91lL3KixqPtXjmkAwAvDeSrdmcrGiyc3T96LGc+peifXYIsczuT + bjeyM4Xkkp1JVwUL0JuzSsSWuW4pRT8COxMcGy+aeNDfPlOSMPP4TjW369Ob8/M3Y7AGkLhNxuAE + IdCXm2r0tZZsjYTUW4dBoykTBK4TVhKTyERYHEPsy3zbYyat6hmctb10OPTZeM7KLAdr0Px/jKh/ + HmlcvOM39AHn549L3a9nEnGDrPH90AxTYmtYcVDutxcqZAloH1GvfHLhWCOcWdLucmwn+J0oHYPq + S5YHrkuU8d6bawdvONYkIlgSg9V5n4J/G3wKJ6BDvaMZa9tbCWnvoYrFHY849jMHHeINuE3wOPaY + GNyRR6lcs+IjfbW0icMynNHqSUwJFlhRR6u1eMgUVyJvREOWkFdpK5/drR3amBEDJ1vfpojy/eji + /fmrMbN9j8FgPx6pf5NxuwQ6dH63QBSPxd1iPEu3dIg1TjHrkPf+KQqvylo7CD9hsSgk1CwnUgLP + G3Jut3jQD9NhwjGu+G9JVp/OaI49cRS6/a/i5exOS0tbnckAdVoGvSV3Wc6hx+MKvQXJlebn7qFl + 2R35sIuHjB1E2YjuIYqrtL6wjiVdgEecbeH/eTVRA16sCtZy8Ckd4Fd5FQSmswXgaigiFOu7DayK + OZIcbeNFffDIeDlFjCnb5xa3z6PSpf8NOG/d0OXjYD4X+g/PAG3dN69tIcoLmkRN8qsb1NUSh2h8 + s8n2a9MBl1ohKPZfFj61/I7bL3/GfPelJkqbL79Ie+9yuxZO8RlPbR7ptH10cfwe7hrhrfzEK3Qp + MGQJykf9EbCCcItUc3ArHdR2tt1baDOTi+WVJPLUvT5wgqHl1TA3iiLzLp/ZTVBtNugwrJYDE1GC + SC+sE8mr9oXE7TquG8D6gB35Wt/i2Z6HtZtfq5YK50GgJQ3n5EXkq5z1QKlre/gnpyygz+WJVxkG + xfCwtPuFKZbKneo8/+udFXVAG6DbjeKiQnIpLkpXSaGfvr3yy3FR2/FLUFD28ye2EzkOm9gu8wKx + BZwrITbYk3YqcA9iFsWr+TMYjHS3VYNYFBg9vd361QpPuOUW9szpLOMled9ADKKcaompzGk6Jb5v + uJOzbHGTcg4kNLzicQ26nRbWDKMmmCbGwiBC3JZSsQwCu36PEd21pjs12ZYTNsiOfOYy5Dx/D68H + ilkmg96eXGylJ4wc5pK5/BEMhbeenmy+sPVUrgf51+fjl7Nbtp7gDxt/7OcB/OCj93hCCaVYTENA + UskPdIHyaBYv8eTSSRHyvFO4ifcUvEKeGzWLNzdZ3uYE5tNssefvAU870B5fSdhCPgT4S2kYRjiX + 80isT0mr2FHc3m3s2j4QTgNgQkZ8JzWYUl3MhGPE3hdtOBkfBMtK7xWv1/Em3nX1fY7cnbnm4FOh + QcuYWAgI3VUM/JS+B4bje7b5qvRMJ5GuRdWvpdVz0DPrVwMrtx4qQD17x/wOuCh0u9mRHEkuH8nx + q4Li9PIlIq+XzuTswK2cybGIRaE9YbADIYuwxBhIMIudK5k7znh6Ga9eXrDxoz8312z9mBMXKyV1 + XH18upheZ/vVnCst1EH5k+NHZ+CwrB+/GHOrCB7gt8AXErelGBbZIjyB9gOeHfEQn9CyX6ETMlhC + ML22eAZ1m17j9od3n1ywR5erGJooas5RBBkRd6jhYa7CnU8las/m2rEG4DKzvSAMHbuSQmYEJqaj + Feqyih02Wf0LZoPc5RuOFB3L7iW8C8xC43cPATFEY17eIyeVYR4fHOcvcv7kk24Lqw/mlmKt7ood + EQ0sxHXagMe3AoVzvd+NYT3j5dv0Bq8nez7zYEGM+LLKt0Hm2KPj96thNoEjj+cOPN20Vf/s3Fp8 + 1iJCJdV1io84BDN2ou6rgNDBrB7li2oWeuu7iE3HtmSI2z/DVKSO9CnyIdMQd96IFuKWV2kfia8L + J05kPFUvFUtdqopCi4wRvVNvzvZc2w45UHnPJKYfa/wDL2WNdzAYpuAc98bIaGi+1UHq2UwywnmB + 35GiMH/GlBNONqGRwomLgjJnvROnhyy6ooGN+Q6ez+k7mUQyOnjH+BKkjVAk5fY7gpzQI+6V/XX6 + //bobSg5Gjkrdh1sTL+IBhilvqMucQPZ96Wlf0kdVy/mkMMPtacTe+QI1M8PWCE79AAmY5yaOF2O + JntzHZtGpsyr/gsCi64oUuM6hR+tDnQCdCi7oobU7vh8jIEKojiii3iVYbqDBYwUSXFeOQX9R+di + sMZ7Bx5tOz9rdt2nVtjtpJk/YnzOTA3op8z8msjhuI3XCbxmw2Hyqw8n/yVqq/KJ/1/xjFUPkakd + 3HsjS3B2HpU8kY+qTXnkKdww3e4XX/bgoy/2W84y0AhzYsYQa3Ym06AxTR41e40h4LAcy6Mwxtvt + OrAOyzLe3JhF5RI1iei9XtRjFi3TYub1iqDYeTp/9DrqaNfkz5iuItmEtozERZEVdX0rwvIIa70h + nJiSqzp+9JUwajZgjsS7x6Mut17fUn5GRIsrsIjsjkPVUJrTNrmBLbAzXg/zPcLruU23OxyOdjrn + RqQekY/YgJ2jfKqpSBdmNP/GtnL/DrtvQJtm0WOT4q24UX7T/UjWCkLed7MMzcttUlSUdW2mthg9 + CD29T5+ZkiH+krwzYpnZrmEuH4q+8ryzn8wR27rPRLawgZWxapVW04FILaZ5Ao2kYu2DKFWcJ6lq + og5IO3S7KVVNVEXaoasCPPvDmyrSTuj7Zaqaaeh7vmdN4E9eELWjoWcbkD+rRFYpZ6AFfw7z+39D + qoUcGR3Wh0xfJZsZo4nxgvS8/HpD6yPg06zxoQNOonGSxkPntpILxZdZWg57g1Egu1OalnzINE8r + b0RL1JJXRdHSbZolaKSS/5mjBEnVMDp4g9YSZj87gfuz+Rhsgu9/dek6Hchd6HYjDSQklzQQXRUI + BRf/W9FA6Frop1SIk+o4geNaE/wZ+GIYJGjyBszdlH8q4sfjYfS3NL5OF1wdk1qab6DRKklDfdxO + P/wp8UGpasmPwFBj9Yc/6tIrnQI1nqpoAh+UnlMq8M8uzqdni9mHk5mWoKnWhBV5FXD/hynshLu7 + xc1iP4Mlu0xXdzL9NOZ54+kKvO8dzNpHJHZ6cf5Y1uqnlPzwJd1sd2OVbwabkcmfDcJADKiTGd98 + 5QtNag6D+JnjMl4u40Uar8YX52fTixE8zUk+eXfYoUsJD55FZw8X51LywVSHalSljxSDrIe+Uptz + NV1hM8nsjvY8zWbbXLxZ23BN62aJltfOp93q0+NuCFKK8VvU5MPSTFbfkkW2Nt6S/xJsmQ98w8+d + TUaegyqq66cOSvYk+x1cIL41f351MZWT+WC6e3X99xLTmkY0YO59IDq/VqceWqQ9A6aUqXlxCQrH + 3A6h243sECG5ZIfQVUEyd/VGpxECawORjkuUHOHzJ+ABebY78b0wcsRZVwwaLVbxISnvRc+6xjG7 + W8SLGP475TApQjVjv5GR8n77pUozpMcgS2kpUUOaomPZEbOtSrJH/g7pKqGXWKQ3LeyaJcwgPaVE + a0RBBZcLrCm70mVlzs6yxNF7466b0KvDFyBX3DLD0oQNHiUv0q8JEXAqCIxyjHLbQn2Yu/N5KtIc + tU48voZW8sf4HS+k6SDznirD/xrmWbZIW997hDNOmhdYtDoYURFPW+Otcd7ueCYha9E41lJMerZA + wJbVjys1Z7Qr9pfWF47IXEpgMULpPrSQD71qQ8XIsWQg93y6MUTzzWlDXvlx6NllzHV4B8PSohDy + rj/K5WCntkPigLoh6YF8YtXr6q5CbV9fao2bgNE0Okbevb1o44Q7/iA7pLhav2+Tlg4lBr+/ZIFt + bunQ7UaWjpBcsnToqqAn//ipQphIOBCqoeOBoWN5UWhNfDBXHRHz1fFhBHSCFnzB/ZDvLSmeVkBH + 72fyZAct3WQDRqTmleLJ1RZ81leMp/ueXVzYYx7RKRK5MAtznG2XGbnrL8bwzTfJbjt+m90wXv2A + fxTpXuJB3NQltsn2xfg2Lmd/vt+uGJFjnc028C9BcJ7tqhZY9cynBGduh03xHMu1IkweLtlheW3G + ERhCCBHSTCsW2DZYqGXi8zs8koW+2nEnSvSwZptFJUzLs3MNml37nvuBZq/7jNFfd+KNcD1KO9AN + Quc3QjgaBK7dAOQyEjkKtdO38tI1Z+EjsUzVAJCyms2spl6npyOxUPH23qveqJeGYLN2iPzj4zur + C0Ez3W52JEmSy0eS/CptT7Agq0eSHnPKR5JPbBYw25vYLHQlZLFaMpkveugPqQsQOWaWrb7ByixU + A940daYy3JHwpfnh5NUTDgebSyn/+a3YMc7WDWSaeAqjM2DaUbOeCxmMXwVpTrSuvd484al0MMt5 + VBTf9HGD+15CflPLGKHzHMcp6fH8ayVsR5ko0yohE1cFjuB9FI2SS2z8gokEf+MnC+s5lkMqGdrg + osOIwbJaLCiUFsO4/biDZ6cwvxW6+psVEdRLqtN8c+B8X1xDJep37eFBWGKr7AcvP4K1gn0OGhtZ + 6Xei7FYMI6cxUzyVEU7S/NzXtS3u0EUiASXeXGf4gWqDvWP6FuG/VkamT1WlSPWqnVVHv6jAfuEr + A/p03hXLgXk53P0R7+H6jCg9aj+yb+a2EA4rlEiSi++D5/azDpvzX8Hzr540H96csLq9cVh0jdY9 + 8XpAFDsCUeyhd39dQ40e788hcW0lw3AjJtdLRkvlmARwv1h9NdIoEAyvCE+cvp1+fEuIQLitzLMV + wrt3bs43bI4jANQ1OUF9iDm48OOCB5lns2RNJ0FdtJodWlriGW6ZjclnHRSa5fuU1ZmJGtOeOb8i + 9IUf2yvb12ESqsNxOkF1wO2mUB0ouQrVAVdFWOT0xK1AdbjIXFOC6nBCJ/CciRP6FqLW8zSUPX4N + OH4F4Pur19gX2Q9u60tUzBfco5zOsvUd3MrxI7b7dW7rwLSJx59hkldh78Ui3+5vbpLtDsE/ZLrF + ktzdMQuviEKgOHQRIY1Z7DYRaJTrkwOniX+WgRdmuaxyonTy6UIx99SPbbBJrZaghdpEbpQ6HpaJ + pUsc0MJNamGmaGSGl/JHD3O8RjgF89JiL7B+CseEWa62bVOhJUeLy7iiyHgAJe1qoHWShEs1+Q6/ + 4dTdk6AY7fGYl3oPUlFnFdH/xb4pc2dodOAHxPJlWTIwfnAhG9seDwYO2AotOkvQP+/Y9woZfd+l + Fj47WJlWC4o2ENqVUxSdhWf+U8vrCHAqHjIuPJON6KVn4qrIEH998klUuIzU82YFDr4odT+brWrK + zmQrvOjb8UThGWuKO/Y80HZrSKIVeaBxlFeuCDeutcICn5L3hblNnV+8Q3GbeWlojxpf2/ZpcYmH + 0lmh1Xu/yQCFuEdB9ziOgO6xWYcTOrrdELqHS65A9+BVMkX/fvK+zNoGf7T9MnLPk4i5jjeJbCcU + huhlvpxgBhcFANkGvMt8k+VW4d/jZZVWrVoy0FqtUSbxVQh8HfhrJZz5bXr14eTydb1hCIPWbLhZ + buC6ZayZHIZL1kk0AsX53QRLfCkBAKqfj1kHhY1OZY9K3CL5gvT5ckKr+dL1Y/UCn7iY2p6Mkb4Y + y94UQEkxNx/jH8InxDAqjKyz1mQqOT9fvqSzr7AmRjjHChibkGzNUACrNHesUbAHOwnvLPWj0bMB + KxA9sKeW+1VjrWJrDqkbEOvoOk1m0AJml6SzTQbtZuvb+Iaj9HVFu3GR1IZ/megY+rIJr/eSktNZ + u/IUJUJc29aVCHXCVO1ZKyS0JP8WnGKw94m4xD2dOd17rAmrhJrTVtXwWpeKP8ezKIIlwLJJYHfL + X+4txNT0+tIKOhyv0e1Ge4uQXNpb6Kqot/l04VTqbSJbP15zgudPQClEzJ84LPLcsL3iL9mA/Gpp + TXcsNa3KryuW2u9VLWiFBGF0b8xpdfVeDlWcvrt0fcu84pRuN5p/QnJp/tFVgYj76jSqph+5Uel8 + 130+ZfxEzZ0wy4fOctun4GIDTVSLTiUuVHGtdqRCR896kSP+MKeO63ocdW6gI7MhTrUGPYX59QcX + VmgTZsK/0tWsfxrnQOcfcvHmDCYOO/M6O/jyIVMHP29Ec/DlVVqN4O3tFxl8UbG7OtNknS6rTCQd + btVaR5+ZBURxcC8n7AOtIiuySM4alAx8p2JwbG/3qx3ZiGKJfQP7YYMlej3c5J9TIWz8kNH7DndA + Gwj2UzGbpvWzaQiylGNb+imsRk7BX3KCAE0d6cPoGWP+EtGEzl9CFwVKzkyi/0n0H44DDQ5qukLt + +WkqfN/Rgb+Pb7AYNy+pOQW5IxTOC+U9P+gGQPWT+MByF9YiNFi+Zr7CrbvsEMOJ8RsGoshyBz2z + UIJjtVBZlcJD17X9vKJ3r4YGfj5P0+/K/Vs85AhApPaZfExI1vMr86ifAh6QrHgYh//IYx1EGeO9 + v1/hGoVHBkNE6yG6VUOH0mqzrbOws9UmHzK12vJGNKtNXhVaej5jIl4swhoSk4QH3eYp+m3ZSuZd + 5t9/is+N+NOohxlYY4R3E9GcwHn6NV0RyAJ/GDe1RTLmPF2I994xJzAQ1V0UC7yrhfw/oIlJ3eEh + SeeTagcPavERnufTRZs3YqiFtApn2YYc2KEkgwdn1+T6k3jKd6+X1wwb5zHHYnnn53PCfFewIsJb + uI43MFNhzSXrnTlUwq/CuRXjU5q7hhuCibpunXE2I7NQ7/NtujPkurBZQHRfiJCyKCLJ15jAbCIB + M7n8/A126br9qaFwFVzHjTQhAr7kWVsMWirYKD/3jl6Bz+h2O/amZ4xPvUUT+qE3XSTlut5tmDz9 + Pv0ksFVH6r/xDn6e7TnSjqXjEk5zK/h7eI91BuP3XV87OtWgHvuCygwCtn2Aruc4+gTf8zWzPX/X + HudGsP1TmRAfjX5EDLZNt/O5Kwztjpro96E+FSymtj5J5FAcVQh8ZMltISVktI+n8ymvqKaMq6MK + eV2qlHr7zrI7gDfS7UahdCG5FEqnqwK88eIjq4TSWeDr2Gmu9Xzq25EXTnyXn62ibnqfpGgQTfOK + tPyIGCnHwIXZIcLWFnaQVBTbgTtzLRcU+pU8kvMvTv6D6Fy5ccdTn/egr6dbXDzghG6S+CvnWEG4 + TazAimlZcXS89MtMhpxpR3ihV3WKQ+0MprNSr7eOU74vc36gu1W8RmDbZbzI3WHF2OTnA1frjB1f + 13txnlc7IX+j71aJeubZPMl+3GEaDEnXMsapFA3f3PmbCChliFjCu0I73sJJ24TtwlhoRaFVQxN0 + f62rxD+uFYZ+OWdCzhQc5JoJoIyI0o5rM51oT0mniBzHRUDQ0QOaq+n9TtYRX9HymIdZzOXmgU1Q + GfhKxwapA0YW7pL6tKtD5JJJjzuidDM2yXa/4HUQPF6mdG1cRJnwgY6+G58a8lXNJlYH76af9GZb + tGt98QGguqOInAharK315kKqY2GWBzwEfFDEEznY3hH69aAVLy0LJpJEQM2bWxZ0u2GSCJdcSRLB + q2RZnF+dsip3IDeM9SyRqedGAYsmnmd5dhsmq6IyJmoVR4raFnoNbgueYprbHnoq/oLQABqEQ66w + +HZ+vp2xGu6+h3bYr+pJjanPdZpSHUMXpCLgxX32Ii+wTvCwVZCY3vH6ab6/Qach5dY4XVU3y00i + a+m/Jby3tyM+U/Kclii0R4PE7X6bbWrwxipQYUfHWKRasfVAtNsnEO12DES7tYFoV6QPyI7NUSvH + XxbxNxmNnpI3uULOilIChZot0FeI/pY8nh2K+gLDUnbzY8Xj4hs2Uu7wDUj7VC4IBi7tGuEYrIp9 + 2AKEQUDpCAVVL7BoRvo9JKymWiNdrZK+kPoDoAj3BenlURpG0RR5w1SuGHRPpuqqKZWgD5FOMXzb + B8xHK6eV+uUJXNLp8MMgTzVa9H8r2AycRs6s3hL54nO5zAn8NBVrfqzau4nWMJwjE2Aiy35qOZ3y + X+gR0/QX0YCW/ULXaDdTyzmk4aKlta2zQIYIVIG49dhgOPGtJ4oC1fcbKmvkkD1lzoXpUpQ43s4y + smBa/O9hctnuWaP+B5fd3Nhlka9h6PcT49qC37IMxT+t77ZVsvuebb72mV9SS1DdxfklGFPmLjXd + buRSC8kll5quCnzxi7eVWL3NIluP1bPnUwfsDmZPHN9yIkdG6zn0gCgme/X65K1kToZLspQZvLqi + NowfoY6hq7LN9MsmSSi+FS/jm2R8fbeG+Z/jZIkoKtddWzWEqcVRJ9wxIeGzDEcBwbbxEmJKF+eQ + BGO+vm0Itneo4bDC0HKDCt7EYYQJcO/dfzSDluuCc18dOwj82zgtgVPaYRPiWS5o9NuMzwhnYR5f + dl3CHLfpeEzpgW5Kz0RA44l1RHahirqp9MV2ly73ZVSG+8hG7I3t+CBBIY4P4wYUff2rwEAMFgx2 + HXFw4Pxt6v2N97DBx6lTTm5JvuRtZ/6p+5R1St0uHjJlbs8b0ajb5VXaonbxF8x55/RmGhypOGPD + f5aQSUeSVPStO+V8C59O3owfXbw/fzVmLApsx7Efj7hczuDOHIfMXIc6sSC+3CTLbJ4sDhNS+45X + MCTUvWFH3SWA2Jo/GEW0A9j2zjONqMKgDT63CgRrrJdoyVydnJ00QygYs5I+8NwV34+qoyg679Ob + c5iOnbqgG5neQBqX+HV7QAPfR/p2K6pfRFrdVEl09Ojzkhb7DPxjv1tJi3jG1KeXTWhOvbhISjFe + L0Q+XzyP17gaVJ8ewRnG/A9ZThyTV62c4KPq3ShLUD1KJBufqcPRWs1hkkcXStosJfNMY3ypRJ9r + NGwPKYc3YM9ytE/tnevHfaYcW2IqyADnbQJNVXIv4QMbov1KUWjEuOsc9w5ORxbp/Yx/8jrtPDRH + xSkc8H8D7XF8kc4yKPeydl32iB9YP60aub1G1fM1Kfl0THprWVmWcvGSvQ66ngbmDxmeBhaNqKeB + +VXSr5IIT7HRhRfNwhG8GubzViuFC9FYKeyHjihJoanIT6C34JNuqD/ne56KpVSq9NcWD7oc2XFt + Kk8rArWcwJP68UDGtg576HnkmCY/1P2gief+QHj0AFhNnXaLbLKtVKycgpG0//BFkVLqsN1vwGpJ + WrphuBpmj4o8qq7oRFyjXMWPOTUk12DZfjXvOplczxd+llw9xx/lDZhXFURhU0cU2Mp5J1xnnTsA + vHVyDETeZr8jprzAxLdA03id0iboEdOkCdGAljJB18gY3axXgoiJRVe0G8Q8xS+HUbyT1ufo4B3j + S5A2QpEEssAIZMGyRQ1RuuOZkQ1JPHWkxoNUipgfajmuX/Wfu742TpHCMMW+gsY6f8KKTrRbskNr + rEEDeK1D1uABq8HVv0ybBbAn7tDInYwX6RznxNEFy+4AyI0DJDp5VJnx8pLZkflhD91udNgjJJcO + e+gqrdOPF3+WD3tY5FslUnv3+dSNXMeKJm7k2ZGnp0/CXJZJh/LcYDLOviUbhc/mepHNvm7VuR5D + F3GedH4UgUjVNHJfxjyUc4MxWgxdreRZzcf1XfWs5kjkruEzKWfZ6p97gb/KcQ9zO6QGo9EKXP09 + z4q6DSd0LM8p0ivvu5dfEEEsrG/o2HRGKDC7+OYmKerKwQidJzvKx0Qcx/TmFoze9R4LDhKdeEb+ + fbq73WT7m9v1fgdLcj9Pk+0IJ12eiek4nEcMu4J8ugP9V1lgDSRa/Stzu1KWyLNbj4l40MVLu7ur + ojxlGBNSmlGjQsVlWqZX0xhmFxomIO82zThFZbFb4MUGZmzNgekqRfd+1Jd1HB8c6HBECaN9DO3+ + UJJDUp+GgsCnpQe7CiQKpY/ToUQy0HW+MCsTmM6LQWUPxuR+dL6ZXIF55nDkRR0jsvkzpiawbEKz + gcVFWnm3KgSgRK5QbJT1bbzSRKF16/ourQyLkSYijNveeZzHMjhRkQ69RLzm8Ymupx4PIC8o19GE + mf3qkjkdSlbodiOTS0gumVx0lUyuN+cfKvk1sAuWTC7/+TRgmGAzCQS/D86ol/FWKSvk++NaMoTM + snSRzKf4Q8Q8tpSSgebSJt3CB8bjL2AIc7v9Otl9T5LVeLuGhQYqdI169DrD/fkF2NGLL1MR2k8w + BwQ6XD6ZwznPU/h9R9kkMDE22Y8UbIoEo2DWeLV8ASJ3aErAeJ3OZ3a4RtMdS9Z20qJ7k66Oz75h + kR1FgVtBYi1/WAnDG5S3kcTCQixb+rpZyLyGAlxmwx+jCnL3EfCaV+Uvm26ShSAChPEQRwHFUIsX + n/AESNU6LApVi8FtmRc8XRQV2oZXiM5jMOtw/Hl9zWTM/UOYKNrk0RkSReWPiG1ePTuzJ5zEcCET + R1HUlCzX3LYY4YKR5iKHouD/CvL8eTT+tinPzJUnweAmgqZImngQmkCzHeZqEQXZCeDuXqeLrlg3 + rseIC6t2WKaoL+bN0YUKELdN5TsxLiEBEc6x1YYihX04QA1FUIHKW6pL2ezlQxapjw/z0IE3PhZZ + B4/I7MZJc3iaeDZV4CjhD3Cptrt0txcw/+3vVtcnoSXOu5Q5Z4RNLjddSmr94x043uabLt1utOkK + yaVNl64KBIpPr/1KUquP9qua1Oo8n7o2/O/E9e1IbLknL0/VU6wJhXlznTpTGRTiqUgo2CazTSKC + V5QcKdAddolf2fFUs6Z8MKrvWWET/XhoRV5oV+HIt7fLLOPoSJqgqDk8YjuBG/phHXmaHPIZKvcd + zMpH0DeP64/4SkRqzfwbThiBnXufzTV1U74Vr5M1z4YsAk4C2kgP1QRNhHNS6uiiNHiGX1EhhxfN + KxNqIqEhYMFgaqE4fdlyzuH9GgmHYfLk0y+X/mIskB63MLJ0OX87Anna8r189z3TUhbF317I3Rvk + Zyuw7MACeH/yKRYltbio8hxdP7JHop94XLSpU43CycfiLEW2IyLuRbKuEk80j/KGFC5oW6ImH/QA + PKDcxnHouFXG/zbZPxOKHhqBqP18fM5WBIrj023FCB9kRGuVEjA6UaJe2UKvTGG7kkDMRwRGJG9V + 6fUm6rLXl/UyE8yNoD64wxWvcJs12ejvsbWf9pEHUfg8YpY4uwS7xtwYodvNWLNIcpk1i1+Vxsgb + u4JZ4bpemTVr6lkhY/YEfji+NEeoj6RHwvFKSelLC+OLXbEwcI3JSlbUpvgULhlO6KkyWQsSrdf7 + r/BN8ePSoYrnNBJKhU4IzsJAhyqNkvMtO3/5RN0C6TPrybWYF4XNfFi1jaibxxxd2FkFIMOKbF+3 + bV6XSnhgJ/M8qzjGUWsvS/nUsPPrFdxv2Btrqo7TizEML1vzLZsPNGjxO1wvSNhcnRIi/pOsbnF5 + QIu36XXKrdJ4prZ6vroFoTJAibMz59uyXeLbigKrvJ9m2yU5ybtNfdJP4fiDEQyqW8HQJC5n/fs7 + cVJ2qOs/4KJ6NaXzxuulVeHkMUdeQPHn+0tY4+ZcSnS7kcYRkksah66Sxrm8uGL+SYXMJiiT2XjP + n3gens9MYEk6YdROZbPcQAtVNqW/IAeSG3h2dw6kfAIEhMAIWwD77+mJOQajeMAMhVFKL+Mwius0 + Ef7P6WUNXlIQhmUkxifMCkLbmjDcgsTeEz71xl9fFWQHQn3wHJRVhoE7XEQbTN+YlYEI8hXDp87/ + mW1qYJH0hVw60G90IZuouFBXpRtKISHwEfkO5+fnh3Y6q6G1kAVewCqAhhK7Re2D6Wy8qeIwaPhO + zGYm7eRTOQYP5ppXHNOnVXYjy9dfvMgnqBdYgh+poLZMii9Dla8NsFZ8ymwNqUopPpUNj66OmDXf + b9PZLay02WIPO/H4NLteT8aX6ZrBj9O7Hf+RbfAHzCybfvj0I6AfIf2I4AfunjQB+T+L4xFMNKrf + iStzacQXUkGBbkcj0Q3V3aRbt5pGl4/1kflk4QHlmklVkdQMUDgU5k+HHf2IvI2fj6NDqX8HplN3 + q6UGPahd4Zn04gMIU4yEXsTbzbXqwUUjd+JQHP/C3Dc3xeh2w+NfLrly/ItXBbzCyR929fzX9ivn + v0+8AAm/J3iKYovKLgzF0ZEqxgp9a1vQWIOZk3Pxqk5GDl2RBxXBLJ/KxyRO4fv4q91wFpstyrZc + 4DRtjwi1yMC878WLqXpktuv6flDhZR7KJhSfD/0IsrB6X+xNeTkbbgwYAt0lK+476ZaiHTRsdlEQ + +mHkIrGydubi+1dqt6OLIZJatxM9/kvv88i3rh4rbynfr+cgl9B/1Q9DZOHtJccQ3uzhRsnNjHgQ + +2W8Gp+enHz6lIexpZPIZ3F+KOv64lCWiIw7967xiaptE+dyzazvGnPqIglXcvI9IVtBoFcgKQr8 + B2PwR4MDOUhEjY98yGZsPYX/gmvfmJNcFxAdLCU5ksX+7kvnqeV0q/UXz5iW+ssmtEp/cbEGqUrb + 7GCscNTUWaRmHL76/AZ0Jh1jFJENpU3bc8IQaS2OyhU1TI56oFutGHPfyvE2g1dBR26+4iFjvE3Z + iI63Ka7SuLenk8LghrBeRM1dMbqKbGQtsW1ndARx8S9OfehY198nGdW4gGXoTNchUkfl5CUM6vN3 + VtAht4BuNwPMIsllwCx+lSy6k/PLGsAsPBAqAWbZDKs9JzaDlxAQ1LA/Ig1fUu3aaa6cQYVfnn84 + G3+BfyVFfTsZbifpZhC7zQ2jiPWz29RkNyuMfN+/t1geUt1M5TvVnNIjQVEzCBa92qiuMwV2FfW4 + SHHk9RCN4zN+u9yxNapdEcaW9+QB7Q/rhbOeiNjFMpvzm7Z0Oa/h4Dsbh9Kgb5T8C/RxYI9hZL9Y + kNAcjLi9HuGky8/eHcLHsuwoR+b4solv+AmZQSFbs3M/HOMTbFhUg7xBSUe9FIqivLDVILICkpUN + IozryZ2hqLozWMd3uGpczSTAChZeyGklUidLl5VCDHrsgbfdVLJzJLTOgadbEwkC8eW55jSNOh2z + zTvMjfg2/+ny5P1FJ+Qf00ebnIUBQdxcX/CJw8RQ0kJojpiaC7V5h4Nw2w9VXOLb+TFeh9gR3W58 + jFeNHdFVkThwfuFVD/HwmK58iOcGAbyD50YsFJbGVbr28Fw4XaQ7vg/h9qauBJn5jdcvkxt2tpgF + Yy2FBRPF4I9Xqy9s/JVX6T+VWQcgvG9tpmo9+HYYBZXTlcFqMwtIiOIY+2axn2WUUbH5VjlScW1Y + ZxWMzppXbqvTfFG2LK4zYV5gP6+fYU+vG7t6Lfp6hKNfHEi64Ui8HldAhp92cLs2dIePdX5q1ZJc + aE4OY/CG2U9Z0A3HgJ4xBjIQTehIBnRRnH6ffEKw0CQuKusfXb0/ufz0eMStIoy8fUMIUBy08p4p + KyxQ54k8nTL41uUqZq72Loiz7VuWACAMCpLHsvT+Hh2IjXKx+RccIy/ypempWLLd5g0ICYpv7Srl + YTNammP1/Nq4w9BcGaEbVOdZx5VyVPM10/xo8bmmcqWmcs78p8zqFjgTz5hqKtmEpqnERdJU5dLS + ulJTKYUDqdiC1te3HTVwvMOoPY87wCbSWGNtDLYBexQdC8AHZjcbGHT1JByR1HkAHtqiQGqP8cAt + MSKk1rOTyxZzeLhl+LvHDOUU9nJS6jfeU8a6TWHxjDEptWhCJ6WmizSFpRGUzu8W6SrbghpaCPtH + CwGb3qe2yrdVL8IpDz4BHf8I8jsSQfUK/MKmboutQvLIyqj8FRbpOp0XaIxIVha3YAWPBsGicV3i + c8zfgiOpN3fQABHhn4Q12Aru6lj8BOTgR/0kEAMQRagUYgrVSZyM48UsQxyGm022X2PaLiyzZE1T + qosz6ufLFvT3U1iOnZYtPWO8bEUT+rKli+SYfk9XTO5Bm3SV7G43CYcIyYdY+DDvTy7kgOk//hsk + cJTE/woc66lFvPNRGAooBALA492Yx1dB1h9/tAxWa1iTDjTk2ylc250UQF9Bh5dIL8ywtgCswywC + saN87anoy2ReGiJFZ+W1iybxu0GLg1yfQjalV+uLY+gHmoalOfqsmKRHig8svu82zu1eU/QIqcPo + 3pZ3+3m1W+Yb0vGVYA9lP5EqnrLGP76z/Mg83ki3G8UbheRSvJGuklr/8LlaqOR6VqloIHj+hEVh + 5LIJnmvKuukKSkWBQ6ElIyn0zypmgzhsQIXHs51kbi7WnoJzD7dvUA9KGPJFBjfz2NqndI6nblfr + me2JZF/8t7sWocoP+5oCqVmGJxhY5lrDiY34u9wb3iTlkuCwdJ46KYcHGQsi27Yr56ptDU7Ga/w4 + /EyelntTTvO2grB8kDs5PzvXGwYTwfUqCXSGsABaWBVGtSFgG3mI3Fiup24YUVVmYHlRQ6K6/uZK + pnqBPUBdViPUbnxR5jmBZ2NenlKuz2utv2WLPc/n2mAyCXZKssGMI2XUEc0km5FF/2E+C62iXo7/ + up7ySTWleTalqfdYz9Cr75RJjjMxu01mX9fgiOwKdYFzV518gn8Q1sUIV6aMBYMnb43E91Psprar + Oinn44mRYYS5gPrJ0GW3CSw/kDGpzol+HhNqnX/JPEU1Z2yMiYJ2T/+QiaaCesFLg1CJdijUQIO+ + 6Sw21MUeUGdGUQ1UN4ekmvXJPcRMjoWICbTHu6LqOKCsuKGqq4UhH23M9jwS6KXdNDs+k9SnVPuL + d4yF5uYL3W5kvgjJJfOFropU+8sLr5KZ5XFYPdV+CZ8/QYfaDiaOHfi+cGTf67UVReJ2cc6H+4eW + 4fxiTE0mP3il7bZOq4kjwIIET2Cznn78H5trfPiHQwFr72/T/YobkgTvBWtunmxymzjP3d+svWoO + mJ4uu10iBH01oVw/mfWdxvwwO4ClUsFpaZ58eV61TnjoeEYtFNgs+QzMinpvPeOL2d1Eyg6lHG6F + DKgk1mnK8ffsMPDcf4wMZwh1/a+ZISPemjQUkKhzhEXdXl2dk9Iv7UGPjs+3BSUCSf7VKEofIqNI + hPkx1v0Vkvk1HdS0Bg1f6yiRrdo+JJc1X7KdPtaBnSiSj1Pgp38kGxVE+6bW/JJ1vXaMvLa9LSda + sN3T6CnrVCZRPGScMS8b0TPmxVXa65abNROUiMsDeklTSGP+4OjgM+Lu93Q3/y9GaMFTE/xgrCA7 + PDY7oY+CGZjc6hj9cdRC7XC03ZX574i1cPCtxMIIZCnJxZ+fz4Knlt+Jq0k8Y0rVJJvQmJrERVoJ + WCji26OLi4tXrwUimULWVOZnkvL4yYPg/zzIR9+qGh2PThlrs7MacVNaqqN//vlwQPUVHy+dsAN4 + Cd1uFoUkyeUoJL8qAJMvX1eyHt3It6pRSMtnno+YFb7ju65gqZD4yPilqVo9zK0sPbf+zSbB4GAN + Zi1YQYvs+zjFAvdF8i1ZSOsbHqlJfRQDXlyrzVgMncCuy1gsDGx66ensliP8HgKUsGDealargkQE + 1rAVuO5w4Cj31rE/kYkCp1YeRosYsYwfiasAz1NlXtabO3IoTAUZA/NgfeAjiK5Bf6DB6riTHrEp + DsH7+BBKJnlwhEpi+IztnZVuRSBIG+JZDMuoO01i/nVuxOQYZzV6opO0o3Pm5cyzfAIZeXPyql/W + fWALxAbHZV0A+/F2Q8QGLrmC2IBX8zDSFSbYlCAbPDesQPYz5rEgcibw08lB+0/lfo3fh/Vkd4sp + rxCiiAYfJoGoNd9As7O+mfSneYjCt21wrMubiSxmo9YX6U3jRuKGrAmuS5M9SJxGSizgtuzAjUy8 + irp8DAM/pF19u6yo4eLpHPFMpnDgeaXGbNqzBVJj2lwotWSkVXsJuj/zsu75drq5I9ytYdNNQpo1 + ed/Vr5DOQt18dBpXndFA9xR1IA/keOhcSqvp9x5SvxMhy8t3FvPM/Qu63YwDjySXOfD4VVG/ffq2 + yoHnIpC/zoH3BK5aYTBhkef7ojjkZJbsYLrMspOCHHQCOiJd0nmyYLdIOIatapWWIFlgheCiGO93 + Bc8Ehnrxb/N0vUBFut4m+3l2e7e+jXn+4HewskUR+Oy2nhoP3TwdQt5uhmIPXNisnUqqQj9UPtu3 + fM+rFILH1F+nan/Vb0FODV7rYMIa37SA2hMDItmNS3uvD75bE+Bd6DInDGrkiXdtFlmBQxodMb/U + /MNkPsx8G+Fayan7mHCYoC+4dip1WUsBcCOmHfSBFFXqra700gNtaf09nq7huaFYm51IJsu2rQ6z + 8Hk/UQcS5I4kZZYbhyvZFm3nhFndUqCLh0y5FvNGNKpFeZU2g7PzD1dFapASXdT+IEO/F9svrMKS + mDeDxQqOTUTHvk1O1CvY9DfJeiGBqDuanaKauiyl4XhN5xS3RFBD+5Ijgtf/JtU1gQSbZ8w3t27o + dkOweS65AjaPV0XN+MWnCvMN87BiXwebfxLYlsvYJLDdQILNv87hBttwUm7T7Q5sBWISSbfjCjAd + HSrM060GALdJ8l9Fsid3qWabdM37PcGcTjEEVGS+3lXJczoC1IS+49hOWDFyGpsu1Qpq0VvLdhqa + Ybbt2nZQyZe4gIlzfn6wtTobhvmR6zalJLieFTlWyeTgkC2KbJyk4gXWmLeF3DOaAeL4odH35C0k + iDkPhswtd+ZgUJ9V0QUlJRvYFxtQzxiz3ZcSaTErp4lbJ7TATylHG5RZlc8hXWAj2rg2ARSofw2J + Xx2eCSpMBeREb8fzDgzJ6NOBsa6w/zT2n9SoSf16wYyTDWZ/gCUooP5Ld9Cxthh6WrwitWSWcf+P + 8vZGqDJyaGOHAw1YvmAjpa6/5mZowXYyUX1wXNwarEhfEy7fuRxF8ZeG3SxQ4nhFSD/vjq4vQfHa + DlPl5zfQaFc7XnBANgmQKANLqlxQVUXXr6HCqDol1KWRlsQVx3UptVdXQ8YqqHYVHezSXw9U1Ncl + wf2qugqa9zqj96LMAjIOGwWLaZf1PdwwT0j9CWWnAVW+Vv2XyVig9eHHczrSaxifzlzJkevKhaMv + EmOr4eAcltYpEZO8vGRRByokut0s9kaSy7E3fpWs008nb8pn+yzyA68ce5v6DGMDE5+FbijynCSh + wKPIQlqKx7jUP705P39FRT8nZydyKiPKsmqVHupbxSXiNu1KUSFL2Cq/5B4YN0w/xV+qKQBq+/pZ + Op51NJ2EBK5rV1EYS4qahps+ta4Fz/ebGBAjxkKbOWW7FNMo0VM71DGt9qntMZNWc6PrjBUExBVT + pqbSVe9E1mgM22EYuOX6oYYB1D7A0+3fEkNUFNpl+ox7sn/VwiV1RuTtCo9LxGXqviRoo+qq+ZKa + +uUG4ZbvBk1uT/3bNq4tE4+kifFUTqnRr9cCI1RieVDUtYgHU6RctFlcwgA5Y6CZ8Q2OK/Dm0+gI + c6iTGfKbWNRUONY+AdutUQOuUjfQ0HMallA3I8Mj67lp2zGiHPXoveqUhYkA13OpBrBtCpvH4mWm + v7Yv/oy4H2yG1UlQu4eavI0L4visvXp3/sf4EX7NdJF+TR7/ZLz+fJRtj9vefXdwk5mAKf5htQ+P + tepdO7QIrW3OE/2UMGOfgrMgyGEDffcps7vl5ItnjGEDRRM6bCBdJOu0qCROOMcYV+sSq/7dn5d1 + 8PVSKua/O76dkxPccy2LMd5ZQDV9b9/BLmfuMNDtZiR2JLlMYcevisP6yw+Vkj4WIMCYzl83ZZEV + ehPbilCT4oB8UkncMe8PFLwo0QKhcjikhqMbBYOmNFPjBdwB3ZzdrNJ/IVLKPIHP4CXiPBtQpOly + vhWe6J3iqsLA3n69i7/y3ZffeJ3tV/zIlufObvbXCItA/77FUNxERMgXAkUqb0dmHZ9sVvUn/jLR + 7FuyTUtGMyZANhb4WQH4VTUM8jk8W6lSsNFStsF/Y1UCefoGweGUaimtDUTuzHPcpjN2hsEMFpQP + 7VHuVG2piQs2jJro6nLJo7/GfBnhgsmB4i3HfiApziDD1tNo+3K942DiI5XebRFYj3pLNlc+47ue + L1YfN8h8GyQxGoN7Wtu/bYK1Ioobr6pKk6KmfDWAGKnjWvfC4VK2uUJqnmn5l9YqNuOYHC8t/POP + dzazzU+M6XajLVZILm2xdFWcGJ+cVvlMfKe0xTrPnzjoIkwc30U7FrfY85WO0AZvz9a8KHnLK55k + tCddzfD0N+E+tayNElU1yF1Wh13oTuXlBAOtuEXFq1QkKtzGq5uEF0pLuNIlYp5ibQsdNsMD+6Xi + xXCcxvEcemiR7LZP5Qkzvm95B1RnMwGU5iOt7CmOxYKmzTV0mBu61UNnVTIuXTnRN1jSvF/sl40t + NSWzaS0Vm6/sxGe1PasBj9dmg7ulRHPVbgAHxGflo2fw2Evod5od4rAm3tsGeRWYzvocOsdywqaw + YC55dNHWCcn40cVufr7aXjzWOkYNHFHoH5nfcCrR7f/X/cfFi5IikN6MTNLji+D1JZ+QfCbpEEFK + ZvkXWCVfJRVMgYQ9AVN9hrMjEzs+DxN9x9JSJcYzwgWcb/ngrgrAU9poyj1ZHarD6vQYj8RlpUdh + /mf7XSvFar0kyjqsXzhd9+4wapb1u2+mXDWVRZU0mUmXc8VTltO1y+5Lbp1FB3orLOa8vuCnzrRW + 75m88PE5jDIC4ojCg9o3VHa8eh1tFK+CJpzmTph40+t0W7Tj9egVYbmElqwU9h3z4ADdblopjJKr + lcJwlSyXi/OLKl5hVMb7CZ5PGaxNm4UT+OnYlggQrMGo+5Fy+5kXp/KBkhioNuwLIP3xCz0Ihiyg + ZPJk3DtUZIDaXqTQZ3zAX4CCvkPPbjm+TUDZgdO2BJXH8+c+xl8YTnmJyDrOELINCeDgJbhHiME9 + tXaWrJWLdF1FMuycDxdYQVQ5D8QcUWkja3n0flAmb5koRcYN0pp7rP4g0fPLfv+k6ZVzC+FLvEPE + PDXdqJxfD2ZHU8p+rUhlLLPNDRibSp68wharQxB2bYNvw9+S1iC7ykfjRW65hbrOGZ3soX9lgPZO + Tqn681bTSTxBwIgdGBrb8f+uHtmPp6d320f+Y4lLKOhWJ3yab+vn+XrC59VWvFABiABqEv3i7fjR + x8vX28eTfDVskZgonhaly7zfR7gY88rtMLJGv82hFExDfKRmwvYomMAJx7V7w1w1FeS4NuVSqQgV + Yoyq31doIlCPMMr5foazk7+OybQ2i8r8/FQrQY/Gd3hVEXZr2gmsmsl4MFXnkEz+Ofky7nHaY2BZ + D4HuPAx3G98Lqr1Ys4GYTvSh2OBCwkU5e8e6WDt0u1lmP0kuZ/bzq2TtXJ68QniZ0lmIXU6eivAs + BFP0JizyXUsULuoq7OTTBc/o3e7SpaAp3WKXIw8pBVcwzMLPoO94zuQtKog1xVeQQj7bg50ypWeg + +0C67tviAxgIX0Jnx2LP2STrON1UHh9fb5L4Kw/m4OoTSRLfkptE4I2I0kdOIk+wPC9K8fmr/z5/ + dvXhjYzRk7l0Gc89t5+9pEQRbCeCzqxEWPBNt3vQwrMs5dj5tYGUCOsCmwIfnuWDKVojuDJO9cJD + K2rKK9OF1+REbRIY22RRNvd8xykjXBcd4QWB5ZXtmZqRlOP8LY3pwlRCv6hVSDq+tR009T8MQBi5 + lXhTe7MYOyn+DGs5icvf6nqW1XQmFIZuFIZd25QwCMrwHXqB5qQtxwvCSo2qsLD2PO0Aja5KVzqW + GzWH2monxS5ZZEvJQF28urislyeUBq3xTI0PGgv/Mfo30jojrp7zMgrmEEVzQAR1td2J00Z7XXM7 + 0IcNSdor4gu72r1OKeNI0QlGZoMfBW7ZguRdGS+RdI0GuasFxycwD7XUz3Wj+BLobFt2zk2S8W13 + Jg4NzIIonkWZKj31jLFxgjrApB0T3dJ6/vgTTOs6a34wxI4B6YuPN/Vdhw5xbxPczn4hJAe3AcS3 + tFgNRjFOzydkdewWwrrJDnzbvURKpblNMFD/9c5iHWAI6XYjc1tILpnbdJXM7dPTT07lWNR1dZgQ + 137+BGxsN3AmrhVxbnm1VEHsFKKGmJQQuu4r0Len0Hd80xGJhJM8nwMU6afZGmMnlWLBvA4OqVFm + PKcXE0UQwT4l5Ohv6bdMWMDQglNNGsrfYCqiO/gOn6a1hQWhYzeYKGEQsMAKqkQnRtBVhoLq+UlC + rwIUUiersKnlJzeBhQReBYijTmBhR6uvZh4qZFanVqQ7/iVbVOKyvusd6s/RL56DI1w/uTnkeQQd + 4lJdYvnbOtouzVIOZ+DgOHDDp3EQTcRg2QPBC8h0Bvkyvxi/pPq8SVKSY5Mt2K4aOgWEOgg1eUM6 + zS5TXLQbPINZH0OVIx653XvMCnmf7lc45ZP5cS9kJK65h+VOTYBer97BIu8A2MhvNwNsJMllwEZ+ + lXbqs4vLSgKTxQKrAteIXqkfTcA9sDwJF1xKxDubFmj26Hxg1EIQdtZhYaA+JFcFvoDIcM6KypDF + +jaW+C+T8dk6tgVDGX/2YsGzj7bJaqtKv9lwz3i1B4nChyWKRqVJ8NSUMDvPCvmCoXt0Fi7+OKFc + kZP3F4XnIEyCs/WmmvFUTkbUd9tmJC3E0bJZBfOrpQvr040QN6F6xKUeNEawdFiliK2loRzHvkJu + qe3JrPRx+uFafat1sGy6ULslJ4l6bFSZduPGT3l0dnF6+fj3nn0jXKI52ieLHFTPzCEnOw8LfktI + WHzTxYkGi90S6S7f4q0SuuExjSI2cbPYzzL45yJdpruO4ZZAFDPVQvKZC/EJkJ/3JzlZ3VCZC0nk + gPZaAL+yqeauGbKVNrMkCugAldDExRTe7mcbnBrNMaumF48Cl8ZUSDjABH5AFpm1t8kPU1EtLHo9 + pDW8GLNsOiOXK+i4N+slruHVwC6jAIg2nFKwUYjKOCP/r45z7oYBq1FPvRHKUaDQ7+Xdv6McsA8O + KIdfIblpGR8ltJ2lz/HVddNo9DeUGoQuxdQu4R3NLXW63SymRpLLMTV+VZYanFVLDVzfKcfUpuBf + h7YzcV2X03Fy6F20Z6bxzQ3yt66Ib43bOFM0GrYy0Qgm/8lNzNbySEc+IDKaPkyhX5cpznDYw78g + ft1ttsQjpmzPH0YDJ10u96vsZpHxkAYd9IqzZW7byKwoOQLbdEdlXOr7TcanNW0RccXN4g6GkJBa + dZFnF+dwAdk68xqFm5rKvzwP/BEacPvxm/3qJn2sHz7bQfPhsxM6kVdJ3CPra44mW4Yl6LB2kBmz + JjPQQ1iJptNLZkd2WD3aPkK6YkPbfhD4fhlzQhtlOfTQqf/cC8wcbrzmwZov+231ENprOs+UTY7+ + 3abgCNdrHsMLfHckOgp1Tr8u72ASkpWgz5oOsTSPToySHzyEkRMy9WDv9XyiCChWXbfncSXiI7AU + buLFlH9li6zac5WjTAQHvFjemTSsFN7tRYUyQByML+7qyFb0gbENaC7vcDCL8Fs/vLMiy/zYiW43 + 2iKF5NIWSVdFltfbj9Wcdruc0+4/f+J6PvzvxPUChmWKHJB4t57Kzy2xkm5uM4wFFFXMm3jLgSzk + jTJCdHmbVbPM05W6iPTcKbvpiCjCHBBWoaQ/a8lpcqJS7OTqkLQWa1UnOAmYiWAFvx0PNr6ki1ig + 6igHBKVjnSYs03rBxcI3Pzlyg07vXgIEEiGadSYwmYXJoE1u3XSw7BLa/aEWFR7tKU70vIit3FdN + eV71YolFUUyYkpuox0+0Zmz/0CQafchW0yRHO9baEQsG1sGzy3imL5rL8qLREabwuQOdL5ClVOJx + eZ42wqWf57hbDt9tcX5xzd0yH42OULDz+Q7SOFSGYtxA3wt7vAoMEPc0jYe3Y8yqj3wDVBxxcnhg + hA8eS6HKFP66olS7miQNMn4WBEFPg2TYpKCIorLlHcWoG8zCHQbdOUT2vOeRfXbW+WhQGi4E7Xlx + yZwO+TJ0u5HhIiSXDBe6KmjTrq5YhTXN46l4quUSPn8SRKHlehP4ESKYFT+GkzyPijbd4rEA9gRO + ctwimYelQbjiTj/+DxP2yvvtloUVg6UDiU3OomaHrs08q2xhCEMy3uTXaikzPc8rU2aWTqs22X49 + Ppdfk3+dtvGWCELBZ5+ojqh4w9EHXDowlHBTph7crpJkLjI1EqwpT3mmoGxJ4A0Wddi8G+Nz6lZ6 + rxfjJXaowkZ/vchmX8fY3jfM6wQh3t/Aq4JPmMpv+afomBeKcY5QNvyvC9xbMFuRu7E3N6A+t2Cm + z+XxkuzV7YjPoJy83nE4EDl2CV8aDd1nFKf1nYg2P15Ak9fXd9Q3oRNynce5/BrbP4JPs8pv94uI + 7SUAWCgw1l6ehpb1lDldKFfEI4aEK7IBlW5FXCMN8ZZgDaeYqsBh/KafTt58eDP9c/zoHBUqjOrj + kcQ+fOuOv8FuDO6iKtv2XCtigsC8C8Z881YWhH5JStd9/KcRoxxX5iYnRCj3GdYBEY5uN91nWBUR + jq4KB/ni1LWq+4wflPeZaeB6oe1OAtcPHbHPlAro8tNx2DqWCOyTVUrsuMV+fn4u3eP1zLUq2w3P + v+UjBZ1YkVCbWhk4jVmMNrywW4Vma23kvKEZjFsaNFMqQGpopd5nD6OmSLDWRAM+MJ9yHBS4ERO4 + kjdpJq8ZZTisFN6M+k+MEZ+QxbbF3IFqk13bJjr5TXpNukUJEFQk4WJJvidzPg3E5o2F3vAfRK4Z + ogDAlwniRtPQzHoOnMNCzUQOVMYLs/nQC/Wt5u0o+nASqh+FGhQxL77PI0r9Eu8jiarK/NPoqdVl + y8+fMUVVlU1oqKriIulr1R/gxhvS5RHYA+eJx1BWMpW+/Sj5wfH/4nmM56xaG7CWbIdFfPNHxmFl + YcEyAfP+Jl/1hSXAq7+Uiq1KVxozoFlWaS2LV+VSGheksfgjER7BqRC4AirbcQc5RurlL0LyFhHw + zbtLi3U4R6fbjWwgIblkA9FVAXxTk/HqwIahm0Du8ykLbNsPJixwo1CYQP+LFfpfQDMidVQdeoCS + ph3rwB+gUoXjWYYAkQAQHP/0RhR36tIxMQc3L83Hh+k8SxcajfiLQnMhhs51nm9IDpIaPeEnjJ/2 + a7aWEDl16a0mJd9q2B4GGKkt2kBt2ogxOBKEieyh2cgOtlPT2VpFss+sRvoFIXD0l5w9owslPdWF + /yMWTkqrWt9tQN2CKZHoEUvR5u4ImrPfAb6mVwMGpguzuOYuD2GpO39yReu9W5f3AxJjJvOwNT4M + iMtQkCsRk+jzXaBx6XZT9PkaaFy6Svvsn+/eVA7jWVBCXHGt50+CMHLYJLRcxPfj4aq7dUbTGbrg + 4+UbsUH9ebsA6d9rE7p4jDm/VhtkDkvxYRlkHj5aDQtykd3g28trtXJQX5bkjEYF/Dhp0pB5+Xzo + VRrHF5/wdT5/unguMiCnTEFM3G8Q6fBuwZfBl2McNeYHbrGijhUVKDSaHIzxCKlyYdiCZdjqcthD + txuyDFs1hz10VQbh3tn+y8rScPFMrcQzDFMN14bn+X7g6qc9xWQXh+7khj3yravHinOWB2NWYDyA + jVDwh2BYZr2w/ZM1d9Vu463qGyH6LnwCzLjxO9vld4w38Q5+8RXp8ij/RZG95z0Nr8YbdDdl0A/a + uK7lX6CSWnrvyhvLVIvXnBEkflyqrHIbM2egy3CBltb2ZRNKY9DI8+A7TsCcSkW04ksib8ku3e3F + KOT+qd6A02hpqq9aqV1uMjUtHxRlJQb366ZFt1kxotmfJ0bavj8S35SrDRNs5dzGMnmwxe0eIJ3g + aD+aNGY+ezpGHyKyxJqWUSdp4PDSYfrh5WkyOkiGFMlvIzW+VuZpbV108/lLQDQHl20WZN0UwRWI + dxos3HuX17o1UTXw20vYC06nr82tNvGAmd0mpZctN3Gdtqg37z7qVKOO4zohR0cuUQd5HmNRCDsU + cyMB4HHOdckXwTeAnucUVtd6zUHZeQpVvNnEdyKDSgHIlPF2qrSEB5H/5jt6jCLH+268TTgPHw69 + sAk38N6zafLvYRUiLB6fhvxXO/QRNSuPrbnywNn3radW0OnAmR4xPXAWDWgHznSN5s9qtxYRs49T + mSxf4NqMeN7/hLL/d5vkNuZoNx/goRE+ifFmxsRhsxdFgjAZ76OatxpT2OC4xExQF80dRY4uUUbY + e4c1InIiNWTZ7ZLzoYG6qRXYgC8WVeQQKvC3pJOkY/0PKSdyiXZHfaPbJDbbR/DpyveAETI33IVc + 2qHjLUzEdbZJ2kDRmkB/HY8OIZRyiOJdmnq0iv47CFRJp8g7Pz2jZD+cnou7HccA61f051FEq34B + d0wiNJbVCSeEJgpo2Vm6X7YHUOoBfTsI+CkM6oOwJ4CgyICKPdfV1x3Y2OX2I+s/mOWbH+3Q7Yb1 + H1xypf4Dr9K2c/7hwqspAMHJrxeATF0bdIo7cW3XjUSNZC3VjdtK+jBBlAY8Lv1njBg9anY7Rcjj + lVqxhpRJRdx+Ed9tx/F4gwxMcD+SePAFjXH42zvE/dEV/yzeb2VoH/Hl+OgKKgSuXma3OeXh+Wrt + VStR6M5ZthEEovhIcxEkqM0ganCNGeMKvUrTlKc0f5ETuVTw0kjn7vl4yN/ExjTFc/6D1Bs6EZOr + E4WriChKW0MWl5ydtzfRkerp0BsrU0YPEIRR43sFYRgG/j9GF0p/NjFcTUovnOB8Xe0ljmvd41uk + /tg+xnl5ca4DzA4zwV8cXHLqMhtxjVDUhXjWkPxORcy+v7x6dsWD9kG9mUNGX+0yN/oQ26NNgpMF + UuVpsR8dsDFcYWTlEwlxR4wp1DqaIfdEVoSCo0bB7XvBg2ipqSD4Qdkifykmp8gXOV8XL1nwmtlP + LbcTmbbymGHml9qQmvylXCdraLZdiQO1048XEdXqUFhKBt8eyWCe/Rj09vvzV7Cxh57rWsHjET7z + rO4h+cwpii8/hW2OHMdnYGBRrnhfpOtmFhe3qFie3dVymrYTwDohVaTvF4gOAFtkMp8r+nmVraaH + C9ps1xHfpZ7t8/UVU6B0f53+vz3sAyvleD+PftbFCdob/nfIEiuCDlQsok4/05FperhD5UYkKjdO + T2FiO08tr8uKLh4yW89KI8pqLq7SWl6kN25ORjKG3/Dh4p/jd/D3Ed40wrIx2Mlp8dk+7wqBdJ8T + SHQMSh2Pl2+E1A7Dq2B5wIoZ/zOjZChj5QAmtPLBrewAh+JwA+LzD1e4emAlG6e8HqUTkL4wz+UR + 8+/87+aJ5gPWsBajLd7j0cmni8ctO7hxD/WQfRSAbU352rGQt8wPaRaL9++ZMBHKUwUWWNFTZnVR + hsVDpicLeSPa2YK8SiqQ50aBh5hDkz9aw6ekWBPweNT6R60FLGmzmNCUx+WA4/OEI5d1z/8uZIiz + 12wNr36kqCBH3eGKRpEJOjbJYEHWVsKYrg8HlzE+XuSp/Sftvd4x9pygdljzUFnecf3hAj2PNLLS + Rl8OOaplEIJq0P97T5nBUhujQiGxsFuVTf6MuTqiJkraiF8ky+xrshFHnYK6nPqTNjewEcrVcQ20 + g9Kr+gPFCa/K893ADuzHI2yDG3Z+ICtwh0h/9utyX/G5yivntYCVJmqwSgfILg4IBjLvREPF0LUg + 7tCpWc9ytupefo+VcUeFdmhJgTLnRzev31m2b54USbcbHd0IyaWjG7oq0C0/fGYVyhjk6NFzIoPn + T5jFItchOmpR6baONzzvhkBrHuXJSo+LZMKrq8+PpbNNPuGjHLTvszPerjIYjscvtOwi2aWPqCb0 + W/J4ItUaOgQfbte2LJ65Wu1ZlS+mmL+l8mWr6VwFdm7XdquMLvRlsgakOZ1KO7/xnDIghgJiCeMe + +W3tZAvTlvCL9JYKHHhmwyc5VuVgB4yy6VIDg2grCwptN2xqQPuU/GxEdpXWxoQYwfC3pJqpiWnS + 3RpR0DBg9tnWFf8snvxaIha0DnXPqGbiTcZyYssZeqGdqGx0RA7ldvfZZ3/62QPdnk63q/JzpT5R + pvTtfhmvYON56v0hX2LEV2aegBR49kj0Va6hD3ezsQN/rNw2oCCwQMj+iNFCkSE7UAw0Yvx5ZLtL + t0LZ8svF9siVCL93UuSzTsbvxMXHXcIUBLJVGsDOG/gvBmaRhl2nWvvfqmqfAl+tM+4eDJnB0mal + PObafFVdZz/Gp89eSV1iZAnlQR+L0pT5DjGV+6rcUQ1zZ13fIylcQ41/jDUdZW6ZmaQCHyj8MpDQ + tHyNHm7RRA5ofbuy5kr734Q0T4LFnshfTq+/TJCKMzU9Er6XhtoMSSZ9M+dl9JR1OgrLnzH1zWQT + mm8mLpJRudysF8JE1MG7KrUK4z+X75zRoZvkrMdbUTRPVLVccdIF9oHs6zZtbI5LYCjwAN+bQX2E + cdQHvpfPfL2jHnTtxdDwXoUMYU1oXWFcLWEeqj+qPOTnV2AcUrvcWS2zUbdKNI/Z95F+4H37l3oY + v7YrACzzIZJoQAMcY/SQ3RJ7cyxb0mCwoBMNBtxuSoOBkqs0GHCVdPrrqysdvgPGyLd9P6ryYPi+ + 63gT+BG5ojTlIlnzVBBYA4u7xRRM/WdceU3TrSByHz+6uDiHn49hv0xmuB9yREgtDW4O/b9BTAPO + 3Xm7SZChEdnTt+l8Dx2hpHyCT4VtwZ9fKPAM5awwCZtcBoQqQes8ulxnNls/VpkJKM9NRCFeb7f9 + IDw0V9dzmONX+C3Wouum1Hdj6Lsp77tx0XdNFLFNiZhBEMK0qsYGBmtKyS8NfWysFZkEujNZZCtB + wSCGqxmppJStWSRZMjewXOaV0zXLfpqORxI1w3srb17EN5IbKuYoJaA055e6tmM30hGyCN7YL79x + QyONoHH1mHEW02HuD/eU3oCY62aNgWvdxH6SNzb6q6qBESrHgnMkIBBYRnaW+WBWX6BT/F+JcnDT + Qx0/xIGvSD9witEcRTGMfzQKGIJRmS+rlv7tlFF8L8As5hGyvmejI6EPc0cjH8x2fdplNqFu54PV + ZXMw8gaGkfxTSJCHyOINPWL8PPKbXDuk2EIBHXDUEZQjc+6iwOqYRJs/Y5pxJ5vQEu7ERRE5yK5F + 7qxYv8VZUJFNIq99Be0m+5FP8Pfw9AhFUDYe8ylA4PqhOnwxaEWsboCtqU1JVE8Tj02BBQF+IH3X + zkFa5GLlM6jE5bDR0B7rqB2MtDLMK5rl1yl/lsR05Iv1mEPpKfzheYqORFcP32MBKXZdn7d1el0x + hxWRC3kdb2AugrsGWmZvHqfoGd44LsUlcgrOLqwjMY4RM9Iteq9zejWT5z1mEyQ4f36Xrg02y2EY + JAbQzuAbR5qUilY4wp2XStKVALPBK/epFXSqNJDPmALMyiY0gFlxkZTkbvNDKMndbYrUaNkP+O5z + mb5iW7YVOuzxqAATUe/7tPnBKreCSF7+D7+6BDebE10XmbibhHcldNePO7AYyERPTEvjfYrbYalr + Ahv9OAGbe3N0ffuRCYS2HRESnbxJEQQjm3bUXUNVq0ud7LmFuDEfwPY0woET/ur0mQlZT8dMvcgi + QzAfg5nQ2T1rrj3L0TTCPN3uF18w3xmxGHAhwEpvt8BMA31DtNUa+PMEbq9teV1we/F2Q9xeLrmC + 24tXSdu8ff8/euDPtQPXtsOgAtzreTZs3RPk/MWKSFRQry/HIj0vmU/GtzBPCrI/0AIIjbFNxmU+ + sjlyQs/zrR8fewGuNnwydA8sl9v0GvxxvCxUkdbBc1hyuPXp8Fn63dsX6qqToQFu9J28+SR5et4u + f1TjelhPy1cDZiqg17RfgF2hp+WETdhmsNNi8rPVXMCtVSaDem6MHHm+H4YVyF/+mTWAazb6W40v + 5UcR/F+trKKDH80TtL/Sf4Hox/XBOdeJ9JDT64uJEndk8D92ENS/9HENHf4aZb7Vi/QtZiQyD5fx + 1y7A3fWgH/PLteAqK5I+D3KJKWq/crK4XmJewgZo6ODRb7rwRqhtclRjFnncgQuoclBISue9SovC + INJ25tq+7rA34wjnb2UAQNSUsRsQRmi9WjHcpzuJOHC8GkbNsu6NeG94/mB8nEpDoL9vNhQMvidR + hytIXc4p98xQ0xmN+pEi2wv9j5TdtGi4kuXmUo0yNpvrnsVd1Xz19nIa+W6Yf2AXoKLGJ42KZAeq + xXAsX2D+2JHThfMZbzfE/OGSK5g/eFVSJ76s5I27FhYClDifQyQvmoQYkSOb8P1+AfokW9+Nr/Zr + PlEyjmvycj8fv14mmxu+s0mmxOtqevc13IhRCs3mipwmiBsGG0gE/mzF5kpXs3TN6QZRIg+X6Odn + TqNBoIlU0G7ja43Zs/kY07OisjmmbeQw0SMWlk8fB2B41l+9wLT50QBpEzbRK+SvOKIvnoovVjP4 + 8ezuKpm5hGm7Tb4lqD0z7vkXfbWdKIdzyotg1nGKxIsUNYL/47Im43ixxWjE/9unfLXgASHMYuEw + rrRueaGmWcNscmE2XcMLjPnM4q/Fr+bWEnfUU3wTPETiUVQwoUQgdISzPoe1sZ1gJPqIb5nFmxv5 + yUPRJDu2Q6AbesC0PBfNd4GRmPx0u1wjueGULxYzhf0QoH4jJ4+P5p/QWYRbEXEwVKo87VWeXiWz + r11COBalJTbrl45fZNExbrvOMvu8fqJadziOBfHnH+8suwNhEd1utMMJyaUdjq7SDvf58sQv73B2 + iBnd6g7nPJ+CscT8aAI/uCGOe9znTezLGqUqADvN4VIlT5N3HjoRC8Lq7mWUX9QgptixkIIAsyfU + qHnFMw7dJkA623MjUIB1RUDZNYcyEzSj8OhERR5Axct/5aCYIEkGgksd4zPnUNujz5xGAQGF6Csm + AnDzX4hqBl4t7jsrUPnJ6l93CD+KyGfJuvB5wXb7lum476j7cw6dLVIqrmDv4nub7LFltsoKKKNH + n99fPEYll8kbpt7fpvNUvePVxeMRTqqca8KzaANhjkK40K/bWhzP2mj8/TZ5ANeEiqb/Jnr+bypd + Eb6KIVFR7XfdFwHSw62aH/IkclCYENdiBP8LK1ddnp09viPxOCzMscNH9iU90e1FmC/Otg8+/BOJ + WlT8wzqJk3GhgG44G3mM9vQsWVNeQ5fmIpu+X5kYx3UFCPQMldBRDQ2dMiORWS7Cl8FT2+9SayMe + MSy1kQ2olTbimkiSoeTG6Sad3eaFo8rZFQz8ShWEdTMOnvD+nhkSXRMV5IBFggAcXC7zaAndbkgA + ziVXCMDxqoiWvH5VIb/0HLvC//3ED70wciZ+GHiRsCWvRP4pk4mq7zl1LOctpFIS2MZwYsNsRV+4 + nFutuIUiqJLMq8day7JQPRTCmqywyLUtpyYSciDbNG+uzuJkvtucUK62d5hPuzFbuSklW8ofyW5v + zA4u99gLnHXZLOVhDI6JO0PM+ypDN2fmQSj8BsG32SLjtmrywnhoRzjDckJvOxiK0PtnsDWSvXFk + QnQ5qQCnLEVaS/P6Hq22kZi63BfuvABaX0yoMmbJdE0vcjuna4pnTNM1ZRNauqa4SKoJi7KSDR4g + 5nmamIy4uINNZYZ1rTF3H0DVr3bbxyMsdcVFWEqN2O7XyeZLvEzhuRz9QGkfQ8euyEvyfUouWaTr + AVyRUNTpyhdrl1fJCH1Q5BRHnyMOcWLGV4BNQyQ7dZ5w5OLyaXFFoHHODcwB3lUNGTYqsQIq2NO3 + 09O3wvoF1TUHv33TjWPBYUxYEMzqcN5CtxtaEFxyxYLAq4I++/J1hWLB41BSJQsicGzH9Sbw1jZS + v+AyJYQUAZEL7hy0PuVZuzkdnZi3KYaZ+UYD/Ta7vQNdu7lba8QlYjtUxAka601SZT5Q7uJ7YQGA + 3MYxqEd8tCOHMLBdmT9yuJ0Jfaos4DFonUVB0ESyzSwP+7iSvcJXHK9haI6gsaD5PEb9poL32gDF + uBwq8/TKuLpGRi+hQ8ZeXtMkRlOfIEdNhxFO1NwQcUSEy6Milc7YzF3siGHauC9gtfsFPzzwtMC8 + b1iNHb32gNBNu605Iwdb+uuowfImepXM44LLd8Pq2uwYyDoozIB1ySaApbxekRTwIO83SDJ+aNMZ + 2bFvczxdgdxzqeb94h3sgeYnQHS72Z5Lkst7Lr8qcxxqvHbmueU9d+p4QRR5EwcsVkugUn66pcnA + I04TSg+Jb24UU/l7vC1y9NDWQkWqwlpIrsX1Al5pts65ZkHnSgbDnBoRD8CzLcm51hP7Pkzj2d0i + 2d3GKxiPJT+7yA9bsC6WMvByGLIPJxevp1s+NJjsL6KLYHDjWL4aS890RVWX8mvSLRh6u4QjLMKv + t+nNLZrz+w0xUmrfJf4+hcWQ7W9u1/sdLJj9PE22ozfvLxwr3z4s2x3e6I8cUTCSfxgI7bv7CNPd + BNbknhBRHk6enMMicuV1bJbuLgQoI+Jj/Fe6mh2DqjsUc8pAaVvMkTBNtvcKKUOcbkBN+VOmUE1F + MxpYU35ZFF3OlgKn4/3p+zLfyKjm2vg9PDHCxziYt+8QEhOMG9+2wZa8xc4GPYUzAa2phuq9ao3l + UNQJQa2UFF4+NagHP0bOoWjaw4/I9a5zHaKMXlB6IZ6n7PBv9aZqZfK4tqC2VKesQaBwKFoEP8jp + GfoWmh9LPRAwppzR4THaFDTEEdRfUnPxCsg/X76zwtDcGKPbjYwxIblkjNFV0lKfXr8rG2MsckKd + GtvBMiQGQzrxIkcWIV1olaETmFzpMt5gtFGrf0gWWJmfjBfJ6mZ3qyyvF5j+Ae9+vcfIPlLgFgtj + dpvMvq6zFBPk8KYMjesG/pIXubkWL6BxjFyt5li4zA8L3iczPJURVCy8/IKbY9BFP8BmgteLVzdp + grEu+PXRyaf3j7mzKqzET8miJwbRaQ4L5PlR5Ea9Mo2UYEMYhbbr2VXk4Wp9brUGJ2gs62FWxLOk + SlDA7cSOVlNAxI5sx/LKUZdDvDNauCVqjBRpHVmcUdEEw1TZQjPns04t4tdTeXVecqWIyPGYw+Al + RvoE/4vN7xEu/BwHmYXcI7ACWwK719IbtcHStEHnHE25NCiB0dFSGxF4IopoKEJgu9nPFO+0M4Nm + YT1Y/GVrZ/Y3GmkJgWIqlEmCqb5vxcCuIGwFcDkxB3A1XmbzAna1o1/hkTtwm253SNJx8K0agopW + QNONv1RGoVfRO/z05qa7cdhmftVwHQ2NeWRQHe5Hrv7NXVvt7m2PxNaiBsl65aKBEC0wSUBkzwoQ + sqPylAYCGnqAaWoKJ2hDmlq8mGW32eLYJDWsyrQV7QP3tJrjdUfsVHL/5h1MVXNT9/9n71+b29aR + dmH4s/6Fvt1xRfIieGZc9VY5duJ4Vg5+7KyZWc+uqadoibY0kUVtUUri+fVvNxoACZ4ESnTirLn3 + vWclocgGCAKNRh+ui243MnWF5JKpS1fJ1D09Pdczz5nrwMbnl2zd8NWYuUHkjJjnOsLteCUoM4bQ + 5mIsR1UPwfLtWC/SvTrGBfmYpQh9Md8+tDw+GparhkVJ7tdEhrzVPkWm6Wk89SumqQyZ59eUU1Nj + oHB0i/DjedmubHnR2tyi0PX03B+t6iqwbd8tV10tuNikMUfdCpsIxJXEwbP6MAOcYSoNPXQ4YGHk + O37ZythwyJjqEmwq8AQNxriGzMu0KUBvvpMNKIsmYlLMwSAazJc0O36HSALdbkqz41cjCXSVVvTZ + 6cdKJMEKcEfSWXbG0NnIHTmO64sUz3h9P+dbyypZP3AYYVpUZ/Gyet7jscW4FkzC8sKwed4jP0Do + VZdWue36WkY7DBvPWbDaYBWXJcO44ZfKkdhqydiKy9ZjQUuBZ233kY7CoPORY9R5pQ6a+653OLSa + aYBEhwdXpQ9WGfGRrHPMVCY3JrEPtXDOi6s3RzxOX6RCG8EqncCpAJY/HMZUauKUtAxFPdbx3SY7 + 4UYzX6FwxINFBYsiXsZfYwWrCkYcvMEAJ3FOSBNG/RA4+lQEWTec3ewMT2R5t3yfnVbiIaGckHKT + y2vQ5OHnE8NxPWYzrSc4R3YOHC5PVvcde2Rb5Cqg+QN3bKnuK3iMzmNqFe4juHwClZtQIDHk/Ivo + mHXitlbPmGLIySY0DDlxkbaVcpFAtWggl4JVA5FvUdVApyIomYHPQnIfX8MC6+A+5rebuY9Jctl9 + zK+KWP4fH8r5cyzirJsl97HjIZziyPEwv04iFkynC3i/D8mcyrspjX77UM1461zeyWCPsa2osnk9 + pLAUuIGsYvx19rHneW6dfVzgSoPj95wH4fAklJc4ahasXYIVKkCFM9sJXcvpRWwBXd1DdrbwX4Mz + OWAUeufnXj3pvdhOMQjHIQVgOSovpjwMi+z7T+uJvRoNv82wOAZ6Fg/zo4ZIWwOT+p67MyfpPYb0 + UpVrNMD5ojY722cD8T4iOlX/8t18jV2FNXrcGAGmPsjp2SVzoUsZj1zOtiV1GXvNji27my4Tz5jq + MtmEpsvERVqeH0/PpbejCBMMl3+D/72r+60oGGEvPcfh2i1kngr0H5BjAuqStirsmoGsnanP/GN1 + xVV0Io+JTrzc7Q7qQNHeRWy73fJcfFVyYjPp+3GZeZ433W7q+0HJVd8PXKV96u2bz16N7ycIyr6f + l3BEdqKRxywr0IF1EAlFoCuNcpNQmTEq/6zqbXibbBBu5wFMolmMvorhGrYhdCfMdWxU2gHhdq+y + A36NJ1sOIK0aFPnWb7fL+7me6205dlNdGUO3ShhU9kX8lO04fk6F9qKIrBO5sMs75dicgpOqPcsh + RbzftJEJeYMfN/oDnCO598Zz+jmIUeaAPghdZdg6ONePENQERd6DJ0rMULwdJuB9vKCkXZrhSbcj + nvn58Jkn+w3EGuOjUrcYuxhB/cC5oRiyY2j5HSKojwhML85LeSDvKffQtmXuYWhZYPd0SjykR0yz + DkUDWsohXZNnz3WlaL2QclAtcpUgcf+Yzb3BN/wPph1GLBz8MlWuB9jozxJ15LByldpDhaMOFTDl + j1nXU4V4yPhYIRvRzxXiKtlik/T/ujRli5EVKjBaYuC/iBk0aLiudMkZSBugSO5Q8W2PZq9FygKV + ZM6ODTN+sl1naQ6Qj6k5eOLF2+67BpbBQubToa6LrVg45qSp+7bwNFn1dXSp8+UyWbfsdrsPYXKm + ulKVwj/DYyvopEvFM6bKVDahaVNxUVDsJpvZ46J4+CmedKu/frRtOxhSvbXWBCpV5th7+Pl+RbWD + p/2AiMhuxohRBLN1gaM1p/qsXNNXh/BwShHby10o9rHldvSg4CPmDhTeQMl/gteklvsuYo04cDwv + JxlO5BlG5fz//XKw83eQxN0pbkTuFJ/ZNQuxyrUxGmqiwSgVFCP7K6TIokKCOFmntzybKlvN1w35 + WaZSezpU/NyCoT3V4w6R5BMqMXmLMU9hShKbiszKv/z7/h9h3zMQ1YXmKoKm2zifyX3w/u4nf9fh + pocz0jM9lfi5GnSOmdNRDeIj5mqQN1BSg3iNlN8/zvGkkcSqWnzwhzPMlun1x6txIXourbmP8ZIV + 5aLas1nQ44nEp5zfQ2joHQyy8M8U44yV1uXNzR9jLnfviQ7vSsgniocbrD00YXs+2+yyFyz1dFqb + AN2gQgn05SGGM6d4GLFbzKnaTYepNxp4OewHV8Zj0QNRq+PMPoT9Xa5gAur99N7qUqZNtxu5zIXk + ksucrpIBc3P5sQpF7wV6aNfF5CqbhV44cmw7isTB7vzdu7Px2fW5GlFRc50uLKy5frKsxb7Cu7Ds + Fuk9eqLktVo5VqmKBOQMruIFbte6Zcvd0vF2k2LNuIizqiRdHXJdPq7USpFYU6QvZbxqJMZsivth + XGROvpol48/r1fjsMeNo4ie6dC07H2SfzTLuG4ctP1nL8C1+PHGQ4YdmmWK5qnmzbHD19tRV2O2O + j15zFjqskRtUf7/KAqkjnfwLMLH8CPdxP+XdVuhKAH3T09mPSnmPAssvTKvx5DHDP8HoGItptUhM + +1yzhfVmfYUSZN1yzcOddLspyDpKroKsw1WR6v7HdSUx1g6x/lgHWX/pOp5tOyMXzCJbwFpdFRIi + YdlmOKyvoCFYxFNVlCN/0D7ri8urM8q0gH8dlRQbPAUjKXAhlBvvBJMiKVOSZ0ZTqiSoyjWHrkWs + 6eFpIVtS5r5v19U03Yt0cT8fxqtVDDZZubAyiJrzXMMw9P2gvJeoVxSvrIZAvmFtoNT1mNvELhdZ + EQKdlPYabWCacuF932uKlAqhg2f93QY4I1Vw1Q0DbjTBX7jRVGzCzL9Zv01QDVR5Hpis/Weiwp2Q + StUJaV+DBOtm0eIspEeMJ/HOMZbqjXB//3ZtBR1MU7rdSL0JySX1RldJvX26uqyYpphspKs3+9UY + y0TsaAR/cOWXq7d8uZWdvHQJzlzju3izeeQoP2MN1KawUnRGBDAnNsPNt5QTIWRDVe5Ja3Iy46jS + ehSD1Nmn1bzKx9SdEROT7Mvl4YUOjD+OxcsVs9zlxdptUzN24ePXtlaqGm95W12l6QVDKG7wrD7O + AKeZ1FlO6AjQJIrIrEo9PQww1feqQn9aoOeZ6ELXDUXKvOk339cVGDKqYu4SkdghkCzx1rX1w81o + ob+dPM00vPA7oh3nDxk7CGUjuotQXCV9ns0etCQGgpb6/tgeg9t17w1K1R6AC+RRdG3yKHq0mJE9 + vQjg1kvotrvsHUCcPj8Evx+L9z5YoPDzwXYznsTrW5GlnW6XnRGbD5C1u5+RRYtJvLZwTBRcCj3F + 3PuBi37qEJTRa/RlRlquQydiOYkb11ofQZ7D2/pBjgg4uNCURD6kafo9XihboivKldTJtqzkcbpV + 8jjmlTxObSWPIyt5bs4+VYGgOPhvuZKHWZ7tjxywsGWQRwQ56/EJdRfwzSStYcloC5nqFq/byAEf + ua5dZczoyyNcyIFsTGb2WhKkQ0TbdKr1PnrAATQCvPZCN7x912cNh387dGBbgMP/Ge9eTkaeY5qW + 4U/L41s67tcmI6hlgqlShZA/ZVWrgQU7b5os5l+TtRwu9AzUCDwZgrlWStPGDBHoBFbGZwOcjHmZ + kEtlQjAMdUEaNWY7D7Bqt4JPxdVj3TftuIl2EtVWtxQGhKQjOQ8KEtup1FsNUc8RCZgtKQPNA/jX + SrXoL6ftFwgGdMndbmAE7yX3uy+nuuOQ1+m9FfjmTnW63czrRJLLXid+lXbIj28+V53qTuiVvU4v + bdg3fTayo5CbxbyYTsXDFbJzIfc1+T7fCJU13xRqYT8mmwb0wbSMm4dR+2ZuauTqq2yNIskAvgpW + SL5Yw3+P1MfRearCZswFm0W2W/Zp53hg2RyO7hMep9yUWiw14ZT2uNHl1eWOZvKh0OidOWBdnjhR + wv2zGvbShjb03PXql9KlR+WCppq3cHG7XidltojrNx8/53D/pfpaVNXFGZPnVxQGGF4bAZoIJhh7 + eiJA7Dh3lp42A2e4MpeS2N0lZXihCWG2JwNcAsoj5jN7ID4d1xQN3/y8LiOmBeaulHxSJu42lbMn + 2G4uwA/kxtB93w0Eq/SuydPhffYU2FJR4zFRJ8oHaTpHndct4bL/PKPdtOxW6PMvW1wu7VuamKR8 + F1ob45blG+EBtUty85Kp7VeOd2F3dLnlD5nyW6pGNIZLedUUqaIgBysr7DD8mSnse6ak/fiCG8eT + 39p2TpnVsY5BPWT6rVUj2reWV8lwWa9i4V4tIhlR4RV/A3ifymaQ0zrRNnU0MLtf7mrX0OgAWxaz + x+ozh7NGBn+u0qtmZkMzf+Ch05YrbbOB29PVdzA8uhNG0a5e9oFvcFAz7afcvngt+gTnjHKFxSOM + PbgdYSGV0l6zvXH1ezuX+apqKzrrvLWph4zrtmQjeuGWuErqbnu7YgK3U7GWFXMkq7wlgx33/YES + B1wuL+cKmKDNfEICtv232q71Wphhr70F98UtEmSaPGhV9kN9hYIomiHS/Qgu4NkwajmUqv322nLd + Dsi2/HYzdBOSXEY34Vdpxr+5/lsNuonnRxVkW9uJoiAa2S5zbZGr/e5xlVLwDOb8p+u3Mlf7bg0N + 1ORqHwbFVe/1T5dlaY0AJk8M7HVI5vc6veVHl+l8TIfx9XyspukJ56Yunud5Uvj59t5e8bvhb86K + fOj36xj0+v0C0+uwcDIZvri4eXfEb8NvtRazv5wIfh8/PMRjeG78zyFsEdxTgFwAC8SSlUncm9m3 + mHvcQaRoK5YuASVgEz88iiTBfKG9eDN5cMIVWIJ/XOTJfJFrkS608pzvFEFCuwekqdqt+N4G2rM+ + FbATAldH33S91iXjQVXu7Fa7LORP8Hj598c+1GRv+jZQlsHicCLF0Ha5pQGjch8bda8lTvLMOMyY + H1rcPTCdm7xYg3vHcQPyxCCr0EHj49oCrhX1Eqn0Q0BXDrYSlZyInISyM9M5wshLf+1++26Y4wWw + 8NhiHfEC+DPmeAHURAkvgF+kPXiVroTR+XYM61mVO/J//VYpgxxewf0DfIhblGBIEtlb4Iqwy/Lf + 23saHr5PqLjg3bbeS9cY7OzHRn1i8TuIWohaspYPfjnfcKh29BSuvza4iVsUSuC4NZ7Vzgx7oAaE + kTpZ7DeiP8e3xiKLFNjN2dvCCWAxv0cVZOxf7QPhybFKPCBCyGh4u55P7/erp+xZL0rdQznwv19b + rANxG91uVuJDksslPvwq6Zs/rz57Fep6Owysco3P2IUO+/7IDcD2ddpt/i9raOApbX4j6rRfwtof + KAM4sP0DHONPaqnuyqKoQZdIt5tfOvdBrFDXkgXULutUQA23mxZQo+RqATVcFfkCn65YZYW6nmNX + Kqhtj9m+N7I9m1cX1CYMlOuE1wk8dlMGMjiRB0KEteLu1SIK8wPsaXfDF9fXH+gsWc3C+ggGibMa + DT9mawZ/4E2q/jddb2a4XHjxxPkajjmrGTzKb1J2kUhcADFVFG+zzAWNndD1bNiiysu/WGJfFOUE + tp5FUCDj0ETl0X0UVV90B7OxRJtYyBWQ0ga/6Hca8Mmp6rZdi1Ls+kDH4OOmpBhkfzeYlr8iGEbf + zLe5IJ7DzZPd9xIVEGJUKzZF22HLJQjnD9fM8v4xPjVWqPIBI5WqpJeUqrxOavXqokQ5AL1zwhDn + SlGteq9eukEIUxoMn9D2BKrbJTf/7uZkw+NsGm/W8WrFzcyH+WSdxut1/DjGDk2LhEzxMuY+LVpr + 8CCCEH3DjyuoNx/BFo3XkxkfWrKmHtbQ72/j+C+NdyHtIDv0IwS5kxOGMtovrm3LNt9/6XajySIk + l6YKXRUT5ayar8d8t5TRHr0aR+iACUaR5XIPJM6TnHtSVgYW4ncneNoQ1/PEf7DgMM6nR/poJlxN + avL4upSra9l8ThQEvl1vWsdNifOYJd6wydo2Fl+EB9vqmpx8joqBGu8YqXrUcVhADc3Zoe2D8VSa + yGfnV2P5xaSru1R12nhm0Qa2n6LWOvGDM5OZg9yNWTqkNQjb/9nnq1eyhlv0ov4xmEyIskhRTFRG + yfI/sJJklmHdAHE7peY11Tsi4vpsfjvfkNq8SSbMRasDPxmH79rCnCHyK1mCMMDVp1IFXVk8K3jo + 28a0tYqr7iyE3xTvrHs1IwF9l99KuZHl8ZDIoZW8ezqFPPUQaIVk+RVTQ43T4huhFHZm6B0CJNhf + 4Rojr1ZX5WM0Or0J/zXTUeQOTxn5V9ewAM0z8ul2ox1eSC7t8HSVdvg/Xp9WcCDgfF3CgQhfvfRD + ZlvhyA9tJvF9Jbv7Bj7ckNMbbeB0wYOr3OH+xyJmPBwrtdzwensLV26TO0zenm8yzUkPN4oDYDZ8 + sUym08Uj/+FIpnJjpdRqAf/J+SdUMCQPwp4ML95ejYWPX/4usvaIRR6VeO4swgAvnPxgr8UeKtZQ + bnX8cRtXUSV6Y9L6+Ob8PJSDU9hnamkmo6DE5VoAxfHgKO2UyWHlq+NISqwwHWWHNW20UuDgqb+w + 6NfP+MIDnPlyd/XtwBIFcpr7XAN727fo/OmjOz2RQ/EpUXz94tTZHb/oSNnV6zm/r03Pc0Nhb/ws + kg4QQu9y+vlqX/g5n7zShCOqEASb9UzHrTCkGJMIcO2NREfYJDuVYOsskhupS0TK16xLAhndbkak + TJLLRMr8qtxIr7zyRmpFUZVI2fWC0GIjFz31Ei9O+h1zJZGtkgmqHvp8OM5cB09TLCtKNzltLili + VHjiTp45I3avVZUFy3D3OlNV1xGsLb9S+dbW0/pzaOg20RlrTVT2r2mi2qpsYgzOLdEOqQOT0R0N + J4s0SzLQyWCnL9J7POydp7ELe9l2w73Hy1SVaWOM52uyXqBbCva3CQzsmhd8wRfCL3G7nYLunHwZ + 4KRQRdiR6z91xqtaop6kcGwYw9ZTCKlmR8SRJnCWw76p1AF8OwRGNTwHRY6eeSAHZ/f28ERZtTgT + 9Q/QMoVNjmv96P3/lmRfl1f3/Hl+bTkd3Jp0u5GuFpJLupquCrfmzedKVNGyHb0M2fFfjT3LhWU7 + 8jD7ysoPPVyBbrLxTTJZJ58Thb1+wlc/usTxCgLZD7+B5kBXEq/ViB9SmBVKV6MZnKEI4RRaJ5Jr + R+BPiHakCzTb/AK0vodl/zYxEBK8csbBnAvAyneL+GvKAS/Gi/mXfFiRcheGn4ZVUGLABpBtMBZB + 54E/4xUcVApcKjEiFtAXxHXOc1xGoPWX4018f59/ZKwoVl8U/jmb38+gN6vtmoIixVwA+ft4M1un + 2/vZCvaSbLOdzhH1GSah3Bts10HSeuYLwLZlck89bqH96uL+8igMlnznukylgN3vk/Hwo9KC+8qJ + YpYgT3/74eNPZaiQ+i9nlgi8PUiKxUPG4HGyER08TlwV1Y3ZAxPYniWeFIU2IL+ArE3MWDQwvfcG + 7uVNcOQ4RyLHucxWzrmmQ6Y5VpyJtF2lYTU4Jt3lkb+ZaCjny+KC67zSfi5AjF8zHHSkzD+1/MT7 + f7jdWf/tOGI98Vhw13lApmqhv2DdZ5v5Ziuo2Zs7aV7EeUAjrWolEGrl6jWjyuVOeiV/ylCxFJop + apb8smDuwiTjNUJuJNsvICPdSDN7vhzUo1YXqAlLDeESdfxoIAJhVCxTCISZwzqa86TsD7BtyJ1u + SL771CRUhcd7SyAMBSQfcwLz8AbdbgjJxyVXIPnwKu1sH96cVSH5fOaUIfleIpKHZY3gD8+J2jN8 + b9cg/1sPljizfXQ4P0NLXGXmWo5LVRX723174Uf0Zfz1nLTuCuD294x5XSC08HZDCC0uuQKhhVcF + L8XN2xoILSzAKEFowTy3LX+ElB+uRzM6hiEY59BCciS4Z3ESb5EVZ5qofC3Yivi9G4ytzIff4EjE + 3V4ipQuGSzBJZHfV1Jwcykhh48kNWU+GCcLG5RE4zA0qmauzebYhFtdK9ioYl1GTk5FhNa8TlKNk + CPowjR/i+0SVxIzgte+X0vaTJIrw63bBT+YceUxexgPpKl1VgaxC32mEyYI3C2zfk6mvfLNXw3QH + My5dY75IjlVVM5qYQzedZ/LfmFRn8HHXHT7vCQ/FZYVYnDyNgvjPj0zCNGY843aAEzMHtvJENqxT + ArZS/YdtrND9jsYpyOWq4Zxn/a4WIkRX8KQua0bWSGOBaL9ONHzyXoRzdVgQ0DoIjSVjDlklDYBh + CGH2AF+yKrANPvMXYCvnuLm7HCRyRo4wV3f8kEyJH9F0cJnv+aXB1cLAnT3xfAVIrQWnwY0xc5cy + Ql2KkzZ8brGM+S/35O2d4Jza1Pnom2cAfH9qhgawMrhGr1Az63uR25ThDgvBL45v8h125OV9zYvv + VSzYfkT2g9JEqex1P8TDxbe94iA0Cmngo/EEn8HZGZikHT1S6hmzc2PeROHUqC6KOuAv20B421EL + zxJUwvD079vhFAa6kBRyhXcO+P1wOHQiKyKMLKRgw7e/GRKS4+5y1FZ1a4ncf6VXsRObZEl0WsZK + 2yY/pNhZ4nlXjxBYFLwb03R7u0jGGWo7OIyuk/iLFPh1HqPLWiTUpzClQc0O/51SHmuH/aXvlnZU + J1NGQbEouWCYEQKn8fKkInAaa740+UY7kl9vPmn0fNdt2ftJ2qE3fjz8n0/ZqPlbdBUQkbtF37zl + OvwyX7bWOje73Hos0Dkcxm3vEh8pwbVo3Zx+viqMUlGJ9ULzcEgrT5f+5NrMtwtqEu7pChWKIBd2 + cTucYRZ+agh10XJw95gMutj2G2YfW2GnoIt8yDToohrRgi7yqgi6rJdM7HIVQMPtCkOV8YPKi4L3 + pnOhXGODPZ7JgSWx6QHvAIeWDB2vR2jJpz0C9IRdWWcNWh4hJ+8eWpjOpaH9zShP5H9xX5tTQevR + hXcPqiOAfypfrTRB6Ht1Siv0qALv6r3lWx3y8/ntZvn5JLmcn8+vkpZ4f/WGawk9QZ9FQSVBH45C + HgtHruMFXm0wd1VMr1All2Bqfbi+sYUv7/0qYdbTkMswDmJb9XbH91iPvH3QmT+SdX0avIepK2WO + GMSIL9apF1tSnr4St059s3qGvFXKkG9pa/ChbYzy1govqLv4ikcKPK6oJ/IEQ+gpJq9wxNLi2/Bs + Fz570S94d5dgon6GritcRCDsfp1uV8PLSx6PTjE9Js9kFK7E3OBYYCLSgrtMcG6sM3s14LNQlbpH + oXDuRQRydkipu+WHLFfne9HHUDql/hm7yQidUCl+NW6dRGDwSFItCpSvPTvDZx2XZDRfTfw7Hehm + /pcz5jDOGMumJEn9c+2XdYSqriqLf3rVs1p9aTInlMEdkn+yNG87NtCWmOA5Mjff7xAzo9tNc/P9 + asyMrop8z9PX1TJ2qxwFDjAKDMfIcOQx/Fnke4JJ8aLA6qIwSpRpxF96qspERbJmfFsTFOseIo6Y + awf+wYXlTXJUrokmKGzkXw8xfm6xCkdyaZC0QBir2ASjIvk6i0B5slbKmEISFlcT8828Ugpg+a5b + rmcbadw0YBiFtv+vQeMXXcVrRSXj/M8Y/VkYQShsbYpbRkQVsuKSyoa3yeZbkiy5AO9/hpN4lRO/ + EJwtlyx2TNGNTTxflKJ9KW7TC+xK8abhIlneb2Yj1WYmaj8KKWrCyk0u347diwHO+7z8wA963LVd + FjSc8vZJvuMfr1We/t2NNpkDLQvQBXaoRqqrkJ9H8/Ej0zTy414X6F65wVkuOSVFWjZsu8ttnVv+ + rw0PpMawlyISRoZVWSEbnXZdifdmd2BQpdtN8d7sKoMqXRXpWucfnLCK91bObkG8twCad0Y2ZlII + vDf9BHY+h2k1v92SzxB07wek5aEzL23RH6YIxf1LQKrrnerA1OY1pqBEVmD7/o5zq9oatZOq/FXY + yioPBv2LWbKR0baK5wHOnRqw2+8vf3v3UkVsT/KaRrGx1eaXJyBltn2Ilwqkbfg+2Tyw4fyBkjWo + k/9IF3fjd/N1NpnN0vUSgVimMJdh9uIUU0dZJ6RNMWRi2WygEwanrBbyNa96zNqLgA2PlKSUZf64 + 3rtWStMGmWDYWlqB+xyzc3m34GOmTfzDRt7Tn56v/r+H03Z7pOdcSM+TpB2sAzwo3W5K2sGq8KB0 + VdVc+zWkHY5TIe0AiwHm2Ij5gS3xyVpIOxj7X9KOfWB8I2RqO8gK7VwkJicjL6r68+N7OOaaOxno + dqPJKCSXJiNdlanmV1WoWhaWHPX+q5dwDnU9Z+R4YeQJUrnbZJEu7zl0SSzrkjGlIq90LHobyttz + Rkme+XaVLtGr+/AAOgA2ixcf371wj168PBq+HMJfnaOjY2kBJatqRWm5EkH3DISN4GzIketX03VV + N3a59q3QY1GDuRJhhnNY5pWtitZDBX6FSrZd3ipLttN09riagUa4X6ffwAbR7Cl09DcIdEOwSNm/ + BqeyT6tk/cBLyYumk368rWnvZPjUU8F9eXRSROWc40KfItH8LMmZACQAwQaT9dS9efcHONuVFWWF + /qAHVz6OLzdOar6DqYXDvzreXTM5OrpfOwhq6kwkAMjUuMJxZGFsCHaqD6o7YD8Ls4Ov6+pAdvQw + 14IO9iG41XUdSH4Uz3WOLb8bMZ94xpQfRTah8aOIiyIZ8s3pOfzv3RDJUVRWpJ4FdF3MAjq/XYXD + F7B8p3OsVj8aTOECz/iwZBWdKVy1eSFuHwDYPwq4+jnlW+x6zKic8K/pGnMtS0JiNU31PtLqHJFK + fmgSnQmAl3l99OFwYBbVTOijd+Bb9gYH44UyM89hp/Yxc7rBIciHTDPzVCNaZp68SpZ8drcRZ8Sb + j6fXb8bKLzUd8AvDG7hhgHdxQAMvFNlzB2cy0PzTQQNUHVet1CqLkh9GTEkZE/rsV9CbsIzzWpiW + LhrXGXsWIUS1d3BHuJzRiY+6eXjxs7HApwmiEEEbLDBln6/Rv7BdbI1FNIIG9/jw83dVYSIyFXB8 + PL1CXo9k1Z68t3OCSG0jWKfeM8vqwDrFbzdjnSLJZdYpfpW0y7ub99UC3sCNKqRTtocIwSPb88Bc + 20E6tQD5NT6rvyBJAiie0BkMns1MdVnEexFnmD4wn1D9HdcBz4WOtLe92rckhUnUwctGt5vSl0RV + LxtdFeXvV1UvmxOWA4Teq5e+GzAWjHw3soNIx6tO79Ssk9O5klRx/TVjPiNaYf73gGM9PhBFEM9H + kHwm3JVDosd5XKWQFoLoxPH6PhlnMPETCQA2zLb39wnCu8VYGZnNMclZVlrjo9A7UF481VkPIFHV + /arGd4fYitqCjJzGfNwm97TCZywJaiS/aBL07KDp2gZVj5sy7WWLKALQRR/eoYAqevH5Sq2oeFNI + KBq+uDi9OiKHHAJbz2K4uwBsjZRX8/8kyJGT8jz5eXYiat14DPTiceWthiAjX63Q0T9XG6SrmqQ5 + 4DWfsHQ3rwbGhyl3SDQgfYulOc4fGcmpPirO9cHFn+9V6pAbWsQ9EVJ10Jtrzn3d2bRsTkNkAfNq + 8onygekiDBQCRXN1YdfxrfatzLVfv3io/UCD/Whu7iAKlW1ZOBDJ728o5QBnJtdl/KWL4276pFt5 + cjNfGT+9L4CtZ1GuXXnqxe3G7NOlCcl9nMm6FtvtVNcCt5vWtaDkal0LXBXMjmdv3EpZi12K3GJZ + CxwzPeiDh1XuAi5by5XEcu4s4WedfHP8OEnc/6VgNbCqb0RFoMh6vU4m/8/wxc19xlZHw/Hwc7pK + h5eXl8MX8DcHLon8V22byrarZE3epAWvHPnOYSmwpiQrFnOJ+T6nzYkLPCkFx+qqv09gtOETU2wk + Q7gUThABenidcIY5Qt5G3LwEuncrEa45Pg705hFuETAAg+sPlyyvYnE9vqn1WnuuvDD7Sm2j2Wbk + x3tI5vVbYqtH3XFo824A4TCu1P2vSmx1mEu7NV8Y0mU6VuvCCObjUFl1ipybJC6Vq96l2/UYmbr+ + LbVI17LrPmrnfdrqMNajECPgyc5dAVszIC9aTgOxY7+syWX1bQE9aIcdTqp0uyH0IJdcgR7EqyIf + 5PrqvR1UwAd5cWYJfDDwQxaFI/jDl3vch7rcx0LGllDY/FyZo7BSVsd6tbCDHUWc9GAVyFXfGn2d + vffqMmcqdCLb86oUioe3UjhtRa7rOX6FDtEAOlWnNHaajnNaAxXmiWaOQpft6vJgnw84oDmjSjZc + nlfREZk4Dwk8i6xMgoQwmxZGqi8/TPwlgIPbzHTn//vO1dj790jYNn5trMjkA0aqTEkvKTN5vYYp + 2C5ltSGAqm95Iy8IvJ/AErxYQE+/jW//KxzgdugHBZZg3xU5Klfh6+DY8rukqIhHDDNUZAPFBBVx + TSCarFa2LJv0rRueM4AxsIrue3Fln8pFfzRovbVw5wDl8+wVO/LNIeR31bG5JQnQOE/BaxDXBZG+ + o+inhZPvgsjRj461bd/2Cm3CPcaa3xyg+5no8Z8OAO97CsTPse1ji3UD8aNnjEH8RBM6iB9dJAXg + jD3031JVNByAseAHM3acYZaNeTlrMTHN+Z+x9z/19/+PfEBr2MbSnSgktL/ILxfdwKDSw7yKty0N + rRECz81hZQzouJ5lRYxXlsGBJPiX7T5/aYEYpHJ1WAkHJ4Z5LFQ+hUMowTybDp2FCbi3qFxlHior + DOkLQrc0cZeXfeS77SX9x8SZCxQ576JjZnWlyKGHzClyRCMlihy6SrbNdHorFNs/r8ZvRDb+gNx5 + updDbj/n+MSLqw+X53BaDtEyto8GKIYnjdmiVMaygjq46eFklky+rNJ5HTxaG4izLYn/EnQTbgQG + X36M/c0EUutwpFJboHlVfIxN4hrV8A+gz93bWdvY6SfxKQeWSxZcC4LtDgG04AsgoFlyv06a7NHm + IldKedG/bj9Yu47ru3qwrjiIf/zdWJBrifQgvZeNzvMWjBxbqDU530pcmtPtGtf9gTO0sWLXdWvw + FOXibhvhJiSoXycpfp8jS8gIy4s4HMzRKBzmkhV5tl24r8fXlx8vCsSjguvYGNb7WeDayt1UVbHA + PhR1LmORD5nWsahGtEIWeZX20IKNAkpjOSj/W5ODwN6+5QwGP9GmVt6WUB2y/DP32Ao7QqWLh4yP + WbIR/Zwlrops9S+3zJOBcZnfI72Ki0dK9bmZfWEraY0wJ4xCzzsa4FWJ3Vw2X5g34JLppOUJa8UW + IUh04G3g7A56h6/OLzBqm51IBy2GixVR8jxKgx7VF/q06eguBUN7UQHU6QzLD72CYuPp+kknEBzX + EWy9+3steskIobzoD++t0DfPi6bbzTI7SXI5s5NfFZmd7z9V8qIdz3PKmZ3jyAsiNooCJxAW+fn4 + dB3DW6fLdMxG7niBIFjLhIhfObc3dGPxiKlyGHK5m6MjLtskq2E5yING6jhZPyJda5xN0vWt0N2j + 4bfZfDIbSmq6CQ+hx/fxfJltqgyzIkVzkVYx4Par/ufs4Y5fdkufj+O2N6+vs3bg4GfUTgGNLTfB + Ku+qBcaioKmEW4kePLvPNcCpp5IdPUFdFNFJqvXdjU3myPIEsLoJc2ArLBkciLjCEJ3hZdmSjaqD + 0vjZvimXVX1T6XbTFa3lwCoAhzkEsqNVARzaKeQYrMNw7V5d4IRU/UdLYsOn916uJFz03Io01RhG + U+Fwqa2dhlXDxcubYBjWsLXsmzvZE4+zkhZGUYu0EeWb32PSNuqxs3fjT+8EFDMorimM1TobwdOP + CAwQZ3C7KHPqpg8sn/Dw356e73c+CCxRE2VbHYB86HbDmiguuVIThVdFrszHj5VsUNtHjrNSTZTv + RA4b+YHrB6KmQ6bhl/PaYBw5jDa8bfa4kCyxAhXgjjDiX3xYLv3VURmIu/hIun7MT90fx4v58gvc + Bkf5e2nxw1aXnQyT1XeFqCFSE0XhxyYZL9J79LzOJFRsJmpIYJQEvAV3nUi7AXpVzV6tw2Phyk/b + b3Nk8sgC68mtILX2FchWQ3G/eJzgcNUBsoZBgzGgdU7J/GQiUyd4LMoMGYJStZgutQaL1wR1G7le + BJtDodLjZ0+xAmjL3lNsgEtNldL5IRV2uLqDK34AVU4+i4bvbO4KdYmarEZ0w+fu4GX1rLKF1mSX + lfwzz6F2UGpfpnlnWJewrXqmk2+GsRrXDHrZuTdhdSdTEInrXcJaV+PrL7Ll9cero4FCzBfgwzco + YjD5dscC7ruJYJJx54ETFYJ1a8LVlQ+POKEY/1dSPT3XlLn3AmN8APD/z3Kl+hSaaRqpZ+5nCOyc + h8k+hkncjYUJHzHnYOINlBiY8JqY6YmM6BVVM86EQo4Of5+rdIFBUUUm9CL3xR9pWQyIFl72o90k + hTBgZAWBFcGSSSgMyCLXxrXhWCFlPYP4BxlXwJq1EqdNidRmJHF+NXbayvcwzqVhLA/IG6ROmBHc + P8kaMYdP2Wu1/dJQOj8w/6IXleDIDTCwPdiHukUnxDOmG6BsQtsAxUVBPjpbCVDGs7PT089jxNqS + r1Xi/BKrGo6BdugeDcT99ffKRLcrFF96EJvk2oD5jPIamSV8T8WYHxx+b1NMrUAbE/k6dkQUO0B2 + PX/aN8f2/Ig2vmSCZMwm/G9tBHCtjTl2I72BcYulirY5+i/wObDM11+7IAD+igpUGco+QQ63ro39 + NpY++D6tOibBKlHcMl2OjYjozMR166KrzfodFsFhzbmORzFw+QHGql3jOi6p1V11rIEjQDe+TfWM + 8bFGNKEfa+gi6fLT86sxj8vJU6YYp6L11nDPaHi6vpMJX8XW+NnGCZ4V9tdhAA3GSiGwCeSRjoii + tF21QKkX1FAhMmG2ivYS3UEjHQpbpjQbi7hm6zK+7XQzEs00p2+FPed2zmE8KNHHFAv3SaDV+gGu + 6AGizEEke3xE1v5vDOHVPGbTKuMP7gSA6PUQ4HlUCnHRFyjkbmmtPn8C7//bteVH5j5/ut3I5y8k + l3z+dFXgoJ1+qOKg8WKOos/ffjX2/DCwrRHYfxzXZQeSE+HtzDPN4Zpnnp7IxQJ3ZMlSOHRBW2KI + 5pbHbzBt7H409McfxzyR+TvsB+i1XGGeX8JDy6C/MLkE0QjWW9p4pymMHIyy8s1yidxWh16iHQjN + JojkjR1QqSnc4f8ufuiDLO4XgasopAFrrng7ZA2u/TAIIxtBl87Qml7jR9XIbKcJfKTcQckJUmFu + 5h751SNMUnK2V3PTC2xuyffJYpsJ1Qv71SRe4vrBejT+8TOhJXa2l6aLzHSqNc20Aa4Q6ap3Qsc6 + CK6iMTNBMMLsfCeDHNZ+cCK6IT0M+qg7kPZvTwwpUlzgUgJrPqRjbUin6u/moXepwH0Jxec4naD4 + 4HZTKD6UXIXig6ukwK/fnPFUlFLKVoAO6hIYn+eARvFHHnRbWuQiETs/YejwLaggTzjaC6wcbjBi + QZhMLK9CvcTf57y6ktuSPCwmM71vtxuddip7XMYrTE944KV3/AyaZCOVU60JpzJktOcSjFDczhfw + hU6GkwUyMfHyZozcL4dJvObEyeV3EBr+OpnASFR0vJFmPlMRSSy+rmHQ7otkrFAwMk23twrGY3gL + G9oXHLuHSkTWtZkTNmEhFPtbaUYfK51nw2ncCVwWRGH0r8GVAlrMd3n6BhnurlkxSV5r6USCLT5q + z6JOnqTpelrwvldnmZQ4neOCQGEPAg8yGy6SmDNmY+lNzBk/C4SVAu3hbr7ONhUpA1pJKgMtcEnV + O3SmpP2y2JVupudBuEH8Y9CGM5njN+R5THVf8EeJbar3wIkoX9NsGv/WVgvFrX9xXJmk6LFEoAIZ + uyyU0PTjj3vaqBuvAPjz8j1jHZgd6XajzUJILm0WdFVQMF9/8CrWvoW2THGrYK/GzEX39wj+7vkC + 9fhqluBoL5Ox8Mfm9t9oqBw4uPY4xCYr8YBkyT1+UAQbm24ncKMo2OGnQIrg465LroVFDitxtX7w + Khq7NuJfSslhDSk5SJFk28GT5eTANP33VgQuuV2sTul3ZNRqEBOBqx8k3lxV+jn4kSMPPwxwlqjk + FCeIBqKjYhG2v111TeUJM6t4A4tCOW8i2/HLVvRKvquJoGeWQxISxToHbDGnWOe3m1Gsk+QyxTq/ + Kk7zV6dOeX1bgR9WKNZt3/eDEdK3SkzzecZzRUERbx4XxdwpsWleTJbeGIEFcap9HFfve3Hx8fTz + EQERCpos6QQAHb2R/hMc4HerGFGTSQY/8s2o+Wz4DTYHbhSAnQcjTVbldpMW7hWn9VXsPP/T+qxx + WGuLAlzXsktqa/SxgHts+XgGDUoaR2+kYskxHwZAU1k1ErEeoJhvVulwsSBA/pzXFI/zjDKsF1in + 2/vZEOy4hLvI5+NbdH4iw+wcvg06DHhhAEkZn6WnOEvILEP22g132NymW/z48D9xA3xYXsyJLufh + Yn6b4G3Tk8rMGpnMrAGuFYXxFUQ2J8liHgFl7Y7rtmsVGHF+FK75Mjt98P8d2I4DMd2rw1S7Sowj + F/0QeFuUkVan5/ZFkXCpX/GkD3HMF5x2h4vqmZA2iCRYmmObW7l0uylQGkquwqTBVeESufxnGfHR + tqPIL6OljQPX9qNRgIns7cweiwVI752N9lkCm1lO5HkH8sceAvZqgHZVKfPeO4NKzNnQ+v+yHOvk + 1DvGOudOUCf8GXOkE2qiBHTCL0oMt4VTxHCrIrK9d0T+UshCFrgeAbgZ3MeHueneATbM78C/jG0C + SeHZCL8NEQDTsSIBmEJQPbkQHQMVvg0Y0Uh6iv6aGNXEMsaptn+0zQhmrl9pTwsFd/A6+V8ouZ2F + e78ylFyY1yQEp84xs7ol79Azxsk7ogk9eYcuipTMOHNJI/1nvpxgQfB9opJjBnDoS7/PaQ7kGCzy + ywngjjeOluqDEnn+ThBQbUIgs0KksGQHlIF5qkxXyTvMe78NiqZ7N2m7pUy6Qhe7KpQg1AS0Frua + Zzl0Erujh4dy8+3r7uGnjdDlSrtxevaA5mZ8+thBORbwl+QLDa8fnqtiLrL1rIBJIPKAvNhDjlRt + BAz/9tpiofkhgW43OiQIyaVDAl0ldXZx86ee+MJch4UcNrDoKwtfjVnoMBaNGEwf1IVt54S7NTTw + 38IAGDEqW/SsUE35lLjYDBcld7n0RK/3DA/YcrI75Be+Zn7UwS/MbzfzC5Pksl+YXxUn4qt3lSwv + ZrGg4hdG8h/fHXm2F3hit/9czGzm5DLcDU9lt1fvrlkB5iMermbpBiYBjpYMN9w+akQyqDAy9NWd + Xrxwj4YvzuC/6DeWmmy7wvLR+EGKPxler2ZsNSyX6YooRiHtZo6zeJpgSjvY5WASC9f1hzdnbHx9 + eu45GDiYIUmHyAdAwYdlAzAwVx3fq0ST6gsktOGr8wCjaeE3wsIUmzogkatB0JJDEFY4aWrqLcql + eJrOYLa96wUGf3v499lwmuLBcIwfC/7Ebyn9gNME5vvskecQ0dyaxEs1pBxPS92ySYbvnN8dH9Ok + xsQ3NKefQFtO+f0bUfCxwfrt5u/xhPNtgAtQOZujgA3ESHG/pvG4d6msqTv9mSCKNtZ5/wLlSeh3 + D4oO5XyW1Ha2minXw7G+xQlfrRXYPyPh8MKbfkxCrrH48beDxjOZrY7tek7txyzuxC/eOePfXdX4 + kfGERvGumfioTXxdlfehVvJQZsqHvmEXQf8Z9lEaJa6EUAy84JjZnQAU6RFT+ETRgAaeSNfIwJDA + E4XEURE/Zs4gXqxm8Th+oJcW5COaF6HQBIIkhrYn4OgpqsGzHB4Q0bIZidD8eBcF5P/qWATavg77 + CTpakU2zDoyQ+3hBDNj87b9hDU8bEqPp+8Ppm7qqvf+BwM+ua4vUElVwhacIhbmyQ36JaMlneVEK + f+9DHB+HeiusKIwEoj2mq/BWpjyjYif3qnEvo6hQTZNt13dxycuuD1BvUGau5/F29QXagwulq+Ad + BT9Uww1G42QOX+2Aba6n7HYQRAAsdSUQOVaZUoq3KR6Xuq0oh/nirTf7u2hEbdJ7K+gQx6XbzWqT + SHK5NolfFdmKN28rLPO2E1ZrkxzYKp1g5AhfJc9WjNebZcKN+pvFdPgW7WtbphRmd1XS9ovLjzcq + wqAdaEKmH6SK/HuBYzGnkgtetMk0zE+w2YxEFQ93BWO4TE+gn/f8xvOelF0mmtXe+QWMExKRw+gw + +sOmPxwEzlJHfEl4PpU1L8UOpev5/XyZ8WPY/IGuU2a3CgiKpstPPsTIJZasHwf41VUs2rfCAb1c + IQk7f6rj8QOGSEhpGdSKzFaih70k1laKhkSxoH2TypOtVHw/PGfIYfn7a28M5lkh7b4zp2of2dah + r7CUO2Rb0+3GWMrVbGu6Svrrj7e1WMp2FUvZBZU9ijwH1Xabf/lhAdL/S/zLYAdgTl4/SLvPIU3Y + eq5QqnLFBHkOzIXfPQeGP2OeA0NNlHJg+EVaA9xkWybodRsv5l8S6ZBLso1IOC6Gkuk3qTAKBX1a + azydJaQUlqhaVH7gSQaBL5tZU5pAEWvT2n9e8lWHpJJeS/P78kb1Z6aHBmY6n4x72eh9RVJDmSRi + OxfBseV2A+6SD5mmiahGtDwReZW2veX8TqSu3bx5z9AuSGJFwjPIr+XIKh/hiQE+hgsUh0ZkgxzM + tERpGliv2rnkjuPO8pld754/gF0JDivEasiflfWHHbYRK6KMo1uxe3RA3/gpaWd7QH54biig+vdZ + FCIH+doJu+Qg89vNcpBJcjkHmV+lRfDx9EPl7OpwLtpSDnIY2jBNR2HoBp5YNiWa7mQ7eYRRu1YM + cnyPJ4vwY/xQPcruR24RRXjgKluE2PocaaOx+XKejFa6EtpON9EP103H5MCOmo7JeOAH275kb15w + PPdLHrjBWJ8EkdWMzZL1Wzgg23YQ+K5VEkoDT2/Oy1sws6Dm4O3au8a0RENfFJx/UdhWFhmW8GEY + XSwH2Hkwjp6/EIKYJF8TtED1WXKvjUDGi/24DF4PX6i7Lz3Gmb2LGboDnLnKBncCdyDGjh9OG8bZ + VPP1wxXNFUPdZ8H30xCl9myBNFzL9zfStPvIaWMKOUxt/2ymkS4suD8ADTagb/PQWjPQ5m1xQ5rJ + 6ovWq8hu3UIlKqdMo9Y1+mj7SdoFnsVPN6ed4a6UTR0SbM5+/RCbe2SpY2p0wexjK+jISyufMj6q + qmb0w6q8LEo2smkNkLWGrj58kftE62Gqr0HIACXxk6rnUijzMJT1H1xO+EuDNrfOOyYj5rb7mlld + Y+byIdOouWpEi5vLq8JFooC4ku0XkJAKPit+0Dq7uGQ2k6F0dfwqisbcezhBUrxcjM8mWYBFsE76 + qtr5BdKG4KhHbLdlapF+MrGMsv8tl7Jo3/x+9tvvbz5d3eymCDD+BlZAaV85XMpIfmYe0r7fYz// + heGQ4WkBKNMCH3No6Zb5q3T0uOGZQoNOLTGHdu+J1G92Xm5kIedrx3Ij/ox5uRE1USo34hdJt03n + 3PO2Xc/htRI6J5W9vtyoabrxfJvZ2t1TuMAdTNBp2lddARWNYrRk0f0/Z2hROvvmMEaUflKC+mIp + /KUXe59r9QCsg74Sb3qmzwuYl6+BpqV0eFbPoe08LfdeRBUaF++toAOMI91u5C8Ukkv+QroqkHtu + 3lYrNBxf9xc60auXDhyiPHfkBMz2BOH0DP3r2SydfKmHoReAOZjXsU+xgwYXE4ahH9hlV147+r3u + 27OaqN4cy3V9Zleo4w4oRgDLsQmKoam1PGDHh7UoLQIbrcmDiDM8KHsQu9LeVeUNPq/nZKbt+Mgj + iVieILTxYjNfCXRkjsJZ7Qin9Y05TvJiC+ez2eMqWW9mSHwUn3Dwv/vlHLF+vsIy5oArhQ4ogM8X + 727eZEe83HmebYSDEs6/IArW3ceL09OPIv6TccTHTcErx8s4FKDZABeASvuxXGL//QUOD3yO7Wig + p+qNDkx77T3uIKgRsFicVyoLxlSCgwibeHe2ApW9QLTmBWI+TR+H022H3CkpDnQy/wwN4brPn65z + hLu8DMwkM+vnYDF19db+YDKW3SPwBEQs+zKjtO79ruLC89+yY9YpgJ4/ZMyHJxvRGfHEVdrP7xbx + 15zfsXCCiVfpioeyx7y2skDiIwsjTjGIHuN/HMdnnic5H60KXDmeShbJRjIf723Z7Zn00uqOcXOJ + eGBJv+P7JbB9xJ3D+D/qCPTkZ4iOquHJ/A+YUk8kORgB3DtR55mmwilpvue2SCumAH08PX+Howx/ + Xr0bIVj6dnGHLu9WMnHT79NbLdn+hyQpgXmO+vBjfMnteohEDTwDal+JfC3YXCZo1eFBYqVG9yTO + su92wlmG201xllFyFWcZrorsj8vPVVYVDplVwll2wIwKRg58ZeH2+jiHhhc8HQDzS6mCARPmv8GU + AoP5joNiLuVdQ8xAncyGL96cvXKOPfg/diSfyG8qYrKKvJH5pobr5JmkEeeC8leoPUxadul4V0R5 + dkIrQmDTxhGtDGLbuGFCBUzLNEv4qYVgcLn1kVC5A+Zrr4f6nICFHWP6ejz5gvkZmCQopwnHtZ3+ + O57gKH+6fjuiX7yz0RCTXaERiSG1gZcXuzVPBYc3TfmiiAs9xZPeAGedQudwbZ8o0YRZjJinuNHz + b7vlKPr7+RYHPJ1aMK21Z0fyMsHlWLX9AlkgkJ2HwD6So06Zk3J5+8JPffU31/fdY6tLHC5/yNBT + nTdSdFWrq4UK1jqDrfEHTTKSjjq+MyDURcFBt7NCsH133VUVaJTyfkDGvMNsgorDlYU76H4Z8z3C + sEQEv39+7UShuZOPbjfaFoTk0rZAV0VByOerCvy+5Vs6MKnjv3rJbHhvLxrBn5ETCdChjzyaXmAk + HA1zRS10F/H1SRC+Fzc3fxzJ5Y1hrmEBbANv/8MZZssUHRN1fF2F8AWWrK6TMQtvhmu8nXaRPzar + KjZ/gbCed7YZx6+UmWg3lsaBFnOsqAKxQj2vySDEekDPSJpy1envals3/H35u2qC3ajsshvVCS9W + 2v3hFDFObvjw3DR9ITk2pe8gTywgTn0DvoUUyupo4CtQjAOcdXJbsEPLp3CzT1YlcqQoJwl0hl6Z + LyaY6pN5JpYTv5wf5XnH+b2joXcsejQavhcXzWEYevLxEU7C+pCgmwsKi6RItMa2kvld+QSEabV3 + PkGLa3AvF9WuI6Wlnk5recvq8Dn6AurMPXik6vk8HksdVlgbRr1yPEINWaNHaJbAEKY8zg9NmeU7 + Oq5LJ9PNGFZO87to52K5x4QqN809c7vx7apnjPPSRBN6VhpdpB2jcMhczeLlQJDycM/7dpWTiXCK + rA/be2/wgP9Be8SPfFGEQYmbhVyJLLlfJ/f7ZNYexIHkesyx5dO88sKwS7UL5lcor5KTiqoZPl3b + NjM/z9LtRoaLkFwyXOgqGS4fzqrnWTeIPP08G7waB57vBv4oQOwMWc0QL9IlsTy8Oj270iw5MiM+ + TGoOox2KGHAPvinwnYUwypVqg//Dc3Slk0loqn8Nb8aif7u5ORzmmjarzIoY1M8tT7LKVvN1tXgg + AvOvIQRYL/Au3kC/eB6kPMCV4Od9v8LbVtfPwZU8jQxbvtBouOLUal8T3daMh7iSxpeXpYzuQvdU + VJ+blmTD8GgkqGRF9ckz9ql2czFfwVPr5CGdJpyGCCedtFu8wA0G4uVw1dQMQ8s5ttH28ClZpyAN + 9nxRkvHT8XxCn87YNDA9dAwnGz+S1UxKU635c4sIjGTU9RwXL96paYGxoRbo1st+m2qYuv2di13L + Unl/DP7/sRV1KyFVTxnn/qlm9Ow/eVlRIHjSv9JAV+A1cR54yGPgjSnB2Q9ltt9fjD/gf/H/dyfd + 7Z30Lwfs12QQUFuIRZUjnnAZ7Fe2E4V0nN1DhNQxTJ6LnHchHE+6xdjFM6bnItmEdi4SF5sJDOrS + FDRxSH/iO/7gOSUmdSnDeNIsKMf2CHKsHgW0ewLUXzQZuWuw3Sijx1zP/Kz8oA6asPekIZTpalOz + Og/7bO6vTt7gWnaeMfXO61YHp54xz5eiJkrpUvwiKXOutfiygc6XPm0x5KYfVFueAuMxdakCE0ZM + 0F0RmOyu4vnDNHQPW0pUt3r4OULr+YHFavt7z35wIfnTZUH1oErDKBISGudvHxr1oGZ2QCT1xUEJ + ooJIbatYMXzQUVwqKkedbO1zrNXugmiWP2R8rpWN6MdacZVOtZPJRrhFoX1kVFrqDAifx+KQM9jx + O8HjquPWGcgdoHA68kZMHHk9jafqLl0cuBMZS9wBzESeLb7avsCtG7RH+2L6IqS+DYzMonBoVJHS + ougKIL8LOr8ERi3edO90mb1t1mdQuHagr4HiNbtm8iFam6CitXm035bWG2RBPwxgRlgbHVjJDkTu + 8BjYoPjIdokrHh7Z+XqmndtDdKvO5+n8f15dw6Izz/Kh242CZUJyKVhGV0nHf3772i0HyzyHOXqw + LHz10g8Ys9nID2yGy5Mj5uVpI5/fXl6+k+prpCWE6PZdjrQ7KlKhg8r5cp7vECBxtn2Il0IuRd4+ + 3926lchb7WFI602pXDDQcm0+5+WCSOzohBVuJAw341zoeg7TeJJsj5m0eji70UhB/RXfOoD/a2if + gc3l2kE5ctf00WobLVUx+kFrW6GvJRw96cw5GUowpGz4bb6ZDW+yBVsNcNLLYB2idRNq9266oR2A + 3aFuFSbj5PuE0BL/ivxF/EtXO1meK+1+NB5R4BWb8XYz49o33vB6TdVKFFTKgQq0Vtlm/rCtzQLa + YdQFbXiZnfyB+ZprfSHKZKND5SRdJyUtZWSldHm+9f3RdsRHbm7e2+Maaat0Lcfi45u3zn4Y79CI + Y9jILF2k+wzI/rBPfUH42h5XG/tuEz+8tZ0rrjfPm6fSy6yAwaGyI/KZeMg4wUw2omeYiav1KWbl + f2ty0KUWiUT354DILofVV8PKXDirs26jSs8YD6poQh9TumiA6nX+x1ssTaugeuWCcZBZFIhqgp+G + VCTHNpCoaSx0rWPL7jJl84dMUdNUIxpqmrxK9vntvSQyZyNnfAtSxveLLWeYVCBDwvY50jzIjbdL + S+k1SB6geMFEZksmMkdzKehsZIJX8mtyn4hMq/t1+g0MK2PTxopyd8qXeUPCcqNdZBGlWfnlzPKN + nkZqexbT3jRntbQrcBKr66j6tvsZA3t7yA+mHINVSj6RlOeWbOYLTM+o22nqnyb4/KJWralEWqbL + 8c5d7xlo+KHMKXFt/lrZfEP0a1iZwkmMmtZabcI7nLTkQu6Cub4H/LkjUi4ap2XnjLFDRP64KIAX + NIkaqat8Nit+NA583a2E0LVCuSn5TreogHjCdDsi8dpexC+pyOXfBAtyvr9Xr/Ej5d9gfxe7fkEy + Ovu90H02BhVP3yIszXfZCk4DvbkJHTAiudovwBAd5iikrPqr91bQgR+KbjdzFJLksqOQXyVD5PTz + VdVRyEKr7CgcQ2cd3xm5DM5YXjtD1GoB8v9LGKK8KAqFmXs4YRgMrkprcM6dzmkN9IxxWoNoQk9r + oIsSRZoCYhNFZpSQBsQjfrLWDNMu9xZbx0IfNySMGFnRrZ7r6roKGUUGqz044MzRSWo7DgxfOuL9 + lF7rKo3OVAQfe5Eu7ufDeLWK1/HGOKpnZmDtN1zPYwuwPJt52lTaG9XF8hwS1TjDq1+ytTHzw27P + DbdtRYwnVP15em1ZHbYiut1oKxKSS1sRXaWt6PrtabnAi0UOzoZiZbrzasww3BOOmBf6tjBjru9i + JAyFP5AwFKuS4a/OavgQf0mG29Xw+uoULg9n8/uZgLUg7wZhWowRJGOJcb/zGkD8YuyiRDI54iiF + D/AEzRhsmIICJ1z/Z8M/rm8Yv3x2es3EBsk7W94dy/SVwsd32hDv8u2myJPt2pElMCWLu28b8La2 + 3QVhI4mrG1hYIVvekMlpP23hnA1dk+4W6uqr36VBctQUltIkF8lsS99Mj3Kxpoham7jCfCDPAh79 + 4YhHpeAInlmmyY06t0JDAWs4Xd7XdNwOGkORjSK3y281Qwq9CzuJmqbbW/WthrfrJP4iI2P62FpG + czaPljZH3PT+ht1GEzFAiyutvq+7hrMY7KQS742ESb0uCL8SSuR0+AJ0UJHE2EwbDTtqI3yVkdBD + hVk+QOUqbVZ4P0/QLVD9UB3dwtd5XFoolf2khZQYRHP7pGVuYAMCMjAFy2X/tnojZjaT0uhuhHUj + BeQrS3hWWyXWAq0axK2be9I9ZF3bB4epjOMN3yxaP1FTdwKLct8bp5n4gRdjdwlEBowKcaFfc1zd + mIQr6vL36yrzPV9LLdzezv/vdr7pKgchWhg5ClAxIJYsbOB36frBfAa4cArnw5ZkYEIt5tnsQdRh + yc4JFvQGkU281vsRcTS6/cU5BHQYaMoMbueTDozENmKLJwCr9QlLZqcVZegC7+Q5F7nYvbEEHZ7W + 7VMOvqZ9S/uJ0UCgeUU+6+aNyWxED3GOSCE9laDsCeBbt0Z7iqkzR8CCMc/qAguGtxvCgnHJFVgw + vCrQIv/4UEHXsBzPqcCCBR4WDo8C3wl9AfEibRyN41HqgYf5/VpYJ0JhIex7yqG/HgiwkOhr8fT6 + nVsu+NPtdopRihPYLB6HAqqhOCe4fT19XGK7+IxaqjC+8D/oEeZeJyI/DCUWWxEAlNuH6jlMNKwf + tyKdjaBIr4npk67rV89bheZKskIjWQVmA5FGXnMAgqNwCWmjyFNq+77rlnMAC6PTkvzOzbU8jqkj + Xtp+0wFRewPdki/OheGLDHaL7VCb6Uclr6vv7Wpl8MvNvAGuMwWE5nmBqOxi0s7Ka5LmS+jhfFNf + 0tVmetsC4MjoO5vv9LbvlzqJWCvzrJ43ugVx31H7pDYlEJHiXuv1TqGH4oFEjo4aLtd+z0+3Wy6g + D6QYpZ52WRt9bKdcdXC7vKRejITIncuV5U3hecesJfmIaWmTaEArbKJrtIPdZ18k3BMcp+ewPmbr + BCs+khJN2YB+/q3p9+EFShpweTw8YTuOKGWiE568ndOukqUn8IPWjaS6Haqb9m+k/YDrWbngdPFY + m55iXuLEhBHF+SzIAf2jWL1+IvNdfzU6rk+mY2nu7Qv441M6tZRWmeI7xRsP2eFNHV511B5Bcmg7 + PagfPYIbMcKCf3ttsQ6hFbrdyLoXkkvWPV0l3Xhx86du3TPXYaGHO2fRvA9fjVmIADsj+CN0o/Yw + /90aGqgJ86tlWQLMa2LBYi6cKKzIe85hfhYxxzSZtdfNWs4hX8u6Zh3Tg+mZTjnXrJweTBcFDDTy + TeQFJiWGimKoH+8slKIgrQwMQcsDxQ7wXG1H1BFbUSFHXhYYwIOT7ToDnSVrYzcCCx9vuzddqT8R + WA6b7puHxGLk43v74eO+OrQXJhM5eYN88lr+sRV0nLz8GfPJS02UJi+/SJO3CJdWLGsiuKXWX4fJ + 5Vv3VGuHz1E3NId3azfSXOaUJHB9oPrRfd821Fq9114zGcIoVBC0D6779gCi6b8e53suwS3PiZrB + 6wX46LCG2i1UEQUCu66wH1xzgGx01/dknDqU5Wwg8yArtALacLjdaoUWOW70ETrwTcCOpWSvKktK + RyUeypM+nFCPwfDrdNQXz5ie9WUT2mFfXCQl/o9zQeqpspaFS66I7YuwDxgmn08YZztxvAv0F0wG + Hox14BGu0kGA4A7MOD68cTZJMQMraQvzNTrFIgrYwtk+g9GYL3L3WPpVljOY+cJ+uJp3LFFYIMa/ + oMHbi2adgMJcRY/fQ9qoYfIVJydkJK0K/yI6ttxORgU9YmpTiAY0k4Ku0WSEF558Ab0Ery8yGh5F + /vxOuPsgQrx7+C/Pg/X8fqYkuWZgOsri53WSISEv6CQOmCNnKEfRVg5Mmr8/Yf7bFtlNerX2KRw1 + lZPhQDdTD1C3B8an6ZvIdZ0svyaLdGUaGw+ZALYkmtrdR06L1iQO4f02RmD1gk2UfIcFsrxP9tzR + xfqzea76nx+umRuYBy3pdiO3hpBccmvQVYFycvnWqVQvOEGkkxm53quXnhexKBzBH6G/w63xsIYG + vv13VC+4gefBP+QXVQi5tnfBrG6sZvlDxvUHshG9AEFclVhliaxIBqtvjroFtoEN12RYoEjrCQTq + Yan2m4dnIHWAovnpLRCAutbeAIvNeB+skFPWKSPp6SEOn8KRAbYA7enxPcaNtw8HkLP+6Iyapo+I + iVi56j7ARe+REtdm4t6yqMYCZU2T9PujAirfry4zDKnoAiyxLAOTcz38t9RNu5swKMI99Awy7Dff + xrblWcZ5HXWEAlfPmJ5lZBPaWUZclOw09+l4GWezuTQfodHKpaIsUFuWJ0r7fYdytB72Ih77WeTy + ++A42I4gIWKhY25x0O2GJERccoWECK/SfvT2z7/z4rgSC5EXlFmIXsKch8k68oPI9pmeJwW2rdyp + pQkw0lNYsu366/wrTPHtCpfg91UKVzhG0u9s+GW+WCQIkvUd2cS40fL28Suz/9ImyxOM3YB/zJzd + BybLMylhlvOdcATfwPyzzec73W4034Xk0nynqzTfb95/qqQFMsvRy4OdAA1sG/YkMLAdzmCI0/3z + jHYEmHfzyYjwGuJ7rBOSp7pvcaZSs6YqNatgfkmbPFlDl76tBleSCGrVPB1OuJT2hhHyJNkkHIcY + D+1UiLHarud3c7ikdUH8Pt7M1un2frbabmCD207nSTZ4++GKWaqqIhJVrPvbX89p7nli7lnM7TL3 + 8HbDucclV+YeXqW59+7NB1Y53VmhxyqTDyaHF0UjFsIRppCTmq4Q5AYMlyVnfsZYFqcTi0smfrL8 + D/SVOMIm0MHFI88URCrb5CtMohl88GSFEwGvzRKi5SxgyMSb2bf4Ealw4Vi/3shynVL7l//khbba + D3iR5vi75IFVcTA7MNDl9Gph5CLpSlmL13RJDEkD2Vxgt3Hcaa0oFa+PTjl1FDZFpyGpU4ob/Dpf + bsBnqFr/ISO2cwEjnt/ZA+CQL0B5al7hR8lrOjtENiHSbGZzzFXroXeex4i+jH934b/cw+v3s5ni + KJqmz9j5cpmsD9Dv+2wPA7GY+aw0UAIdz6KHSG4sxOoz/8DmyTN/fnxvd2Fdp9uN9jIhubSX0VXa + y87en1a2Mtdy9K3M9eHYEEbQhYC5rjg0XBbqPYWthFqKpwsL4CieaI5AqjiPhRWF0FCYGM9PgnyD + OVvE1f0FBxTTTVYyI//tdnk/1zLxMWW7sWLB8uEY6lXQlY1zA7X9xg+aqsT1dtRmcz1LWyMEGliy + 7fvdpMcr7hrGtG4x0Jo8xsKm+oR6eUVoPO24E7Em/tUGSZWSQD4bCFAMBtWguMJu3IcbmjRIR9Y2 + erexiFw1MDibTlx7RZOBB8VK3xDnrpgwCN4Ls/rq9Pfhi5XNxvkzdMORwKXSkaaLi0BxL8iaDfEp + TsQGgPZ/4YVAM9DT2RC66awIw2E6YRasISoeeUzibMO7JJAwUS0n62wYw3HzZpPYFj118+WBrQao + AdRZ03btgfjy0gtSAE00QE9+siTxToJ3dxQO1X41spd8n2+E/ofNsRNUJC47vBtW5VTpwepKNeuc + KGnZpUaMfJyR7Yg3zQGtofdYBFu3UTcX8DiWYCbZscpbezUQehvvynX8rkf+utntvYvfPbt6KXn9 + 62XD2zwZ9M/3147fIWxMtxsZY0JyyRijqwJo6OrGtl9X4sZOpKfDu+6rl6HngyU2CuFAwHzdi6tx + kXOT6wHBX1+41s1RlYz2ZLhM4jVsErghUswZFMT1KrPtU9omZnFWTGiDX9/AK6SL+fAmJEAPOOTe + MC+usg1nElgIxd3WZuQTUy51scqUKyyGNzxTM9ZtBS90nYatPPK8CH2+ZfCe3RSyGoZP4DSSdxQb + qNgizW4Gl1WgZgbP8bsNaCqqcLzjRSZ5xNXsw2dABX1w7tmhrNCq+fa5buIA6JkAen9m5VpQhr6Z + mqVmVhmedvgG+eK6pNTlD5nGRVUjWmBUXiVdOyvm6MhEzyq8f0EYRkZdQT23O43u+2qdUAHzKt7A + 5luAltnxaE+lyMrdTkiw5++Z02FXpNvNECBIchkBgl8VSLDXbyuRTVQsFQQIm8EBLhrZLLAC8Z1O + z6/GfNLJw4HILLPFxnS6vquGJwm78itob1hfJd921AhBFsDS9IMq3IIIJOs7l92IDFYUk+9cF5+v + Gt0TTmS7DQ53m9mOLQvY1Db15ho3A3rLHONT26fC0Og9lUiuoMftIqNmTioSOWj4WiP5+mJfvMaN + bbtK1uJ4WzxZ6+e5ScqP4nnmp/io2ZASsgubCvz97m4++YKGLPqthGuev9KJiuHxdFluDlOmIje0 + uZsLZhIcpnGuKhQFO/L7AY8N+XGp+NnEe4xFPvlUF25wTg8jpjbWcT8y4dRKVNJ8fxOfTAnbP1FW + mvqeRbAAcsPbczyZD0difKT9fX+ohWKImbtLSqikjEGJpxN6LanIzA6H1fyXH3QyRzXG+19SdUam + R19nWk/0YE8EJzukTM3cJj+kttaxBPqSE3Sga6TbDdGXuOQK+hJelXvvuyr6khdW914Ghi7ouRH8 + CTNIhAg+6UESob7b4k66m7SIYIMHltKTWJA6A2syhQmJthCBSxYybtQcgpbfJuOb4WSxzWCUi1Sr + FKnNToboDRM9vEu+VTnB6TwLux1+WkSYSTlU5O18wWepMCdmVeCm1jibbl3oB9pCPCMK7MBilQPt + R9gx343j6RqMvSlPu6oJSWmoTFYpON/QhB42j1sD57rxcXE50hCRgjD0rYq5gJ9uXvp8urUQlEP8 + uUjL8SwW/mvw3zO9BrgOlV0BQ96PXUH5AGrXqv0qpg5wsHYs8g7LWvG8X1Tt1ql3/82h9vreeOXe + IKpozLW7+Xi4Dm2ydDNqjDHqkJd1eqPbq/YNFYCaCh8xUnEmQ9hv6N5hVGT0ntmROXYK3W5WZESS + y0VG/KoI3X/6ZzUNDVRjpchoDP9x7RFzA5kB+UGfRXImKk4dXc3JACUeqB7xwTW6cCYqi0KE8dPv + NXlitRl/GlexZbOGHSkIosDzvMqR+qG+96Wt1DKR2n8qcZys01sOWJut5utqADqy/KagutYzLTpf + GfIGBMTQc5qwCaXwwa5vX2FEVmgP+tkavzc5mndOkBfSN3n596OToTqaCCTC/MdcUrFYmnZeddfl + 5W+FJ7gfQPw7yQZ8TSivtReFAzHkuLrrPo3p9sYCwYXXxuDb5N+uiak+j83Jqm4pHQtAf9IG99Nz + lBs60BMnH4tCOswn37F4O0OEko69cVhUh4u5Z9a1Y0tSODj8HVteJ1Y4esSUFk40oPHC0TXa9rJk + otAUJznt28fT6zcVToIbuGOAtxHnqGf1w+YUEWKIdKxMU3IbCkj95HvKvScHwRge0MauvvtFuXfb + ephUY1alZ+mVsyKKRN0KG7QDH+VPKTr7CfAYe/BuWszlzehrrfvUkTrFESSDWMU2Pu1AM0gPGBIN + CukVqkG6Tjrlj8saskErcMpkgy9ZFFmRO4I/nECQDf65WoCob2NMY+KGcJuxCgNwn9TEfnXbVedQ + KsRzmO1EtudVWYkOS2wotBBBA1bYlGRpnNhQI3HwjupFpRcEZCr4rUoCwvC944+Gi/mXZMEzF26T + SolF9ZlJOhVmK4iXgBZUJn8C/4Zp/rAVCwfMRh5hxXk2nTBnzIab5GGFAH5Yk4dZJ3M6Fg6uP5/5 + 0qIMbNs9DE+tx6yGww3AgzIbnk0qQusx3ZU6xvK7EJni7ab6BSVXtQtcFZWKN28qLnSPlYrFkMiU + ezWjkePZnE6CQ4HcXMFftSzekSwKLFAUwQK5yWJxGrvJEluqIvh71R9tiIN6ludFu6EVVmPSk3QM + gwlrBl2b9ZHpwA+avLia0IqiuUsXVf4v19spbXBK0SNeeMW5rCpZVTUcue+yVWQN85cR81dS5W2X + 2J28SjM7Ed+iRSR8thf868kE8JNqQan6EAOcI1LHwCkiGIjXLRpWckhMT6xg6nm0vAuJv7C+Olc9 + ubbAf5M9WSeNfang/eyNFLKXQdRrQNIKKPs2hum2L07RE8YqGVlv8eIhnbbD5B8Oa13/GgdmADug + 7ohhQC084VNpHdLmBHUXFCctGSyQaPvuxfeRO4WnMIaiN/6x5XTB3sgfMsYYko3oGEPiKu0c2yxl + ku8498npVkPl2CVOwuWtWHnW5A9FaGNsiBCHLIkX62uHuoqUAw62IR07dryG1kJNWukeUp4i02a/ + QXBDO7RqTuHcHbpfFghpPrIJScJ+nqdDz6KwqOkkXJ9kVshF4egHu/JRXMd23LqZ2MHadumj7gXI + 4/j/33dRFgDWjLkFSbcblgVwyZWyALxKeuD89GMlAdKxfL9cFDC2MQnDH9n4q7Agz5NF/AhvGi+l + 95sDPJJ5eB4v68FZht945nlT5aUVgaJtOqIyO4LZHT1DqJYz9WYP+KEV2AeuOj1R/vN8jazN8IdN + fziCvBn+ijEukZ8L47pdTjHGqUYX+Qbn+HbZSMzVDR5h14l8QDjw1NfgZWED/MQqbCENwJ7sNyuw + 3EB5evj7tzMtNS8lj5DP0Cuda90masYduJMs1PvU0SGtoNvdt2FX2gF6xHSrFg1oGzVda0L8rVyB + Q9sW5tzwH+fXYDRJl3UuG/Zex2Ow95LNTOVxaBN9n5OLY19lvodj8FCVKz+QStrHf3ZlYBLPmKbs + yya0jH1xsekjISxuvMmRcTVBtudEUUDhAivwmJqqk0fcvmIYhGxD+cZGVZV9geH3eVjqcYvtcBgx + 9g5LFOWrP/+4CLra4+ohw0WeN1Jc5uoq7cOwvdk7cZVBry4W+fVtMvwAjw3wWW5i+yHxtTSUWJsd + 7WEDttSUzBJuKuIXFZvLXjJhl4hK07zrNuMH0iXZHRyaMQpMFUvj9yIERElBWdJ0njWfXRoEeUxU + qPIRmc6/zutDZU8ThfopumCvDQMe8nz1kCRz7NhuRK5oDR3EKMptCZBJPJ4tDB4kfWWQ6G2qqFxL + YXZa58w6ZlZH1E75lDFup2pGR+6Ul0lZwWFZbH2EjwDDPX0ExQRLcwMfVjAOtvw2/AwSBiiGatcC + wTXYwSptIQPtIqbZwRlUZKTZA48odZcVeXKtC6s2F7qcw8RF3CA4nq6/dlNHPehV260JF1E9Ddf2 + cTaJp7rUqsckEpgSxffSQl6b+cN2UedvaMbX8oPGIdtjpBgoH/49FwlCrCRtnpZm3U/6r1wGtvz3 + 9p7+SSlnsstN6Q8t8gWGGo8PlrPA+mxIfnSZ9FwSz0FED5mYDotI13/+dF2YTQJ5Dn8w8M4I7rP3 + 43h9P+eQFPOHTl/MDS3hDScUF1JCcGgflyrHhI5u9xodYkXvQzHCIscWQ3hmNxvOlf1nL5eU6mkf + HLs9oW84Fk//Y+O6jWTsjPcBKNlLapdOHw4ZkosK7CZRI3WVGyUSpWibFctD7tfpdtXRVMZWncKS + qW88XkzSWbqgFmDqwU8TMK7SjokGjifoscrrc1j7GdqXp7SYmKrnj047uwbEM8bV/KIJvZifLopa + /iT++iiQ20X4+MXVh8vzIbMDKwhYcDQwuKXYFqGge2Qv8aR7GSY7HB/z4KIfRjmq6SFhEjKfJ+kK + zIeDRIXMU7j5txwdY69hYZ5PARXdRjLroGnUxsEIi+zs4pDX9jwr9NRXVL69vTIdDWM+5sTTIur9 + NZ5sEdGrcxq3YS3zQQ8/BRhp4fGDsar5h+krDaFP6pKQYvYESYxaaH/SxDBXAWMEsyeQ4tNd1ds7 + TBty3RQW7tNkNTwBTSLoIN8WEvSteAI78EKk/WgLXpHogW1PISMNy/Arwidgpsm8qx+nN2IT5osz + WVXQiPD77odwM8dhjJd4E0x0DH0R5jX+3PzK2fYWTIMl7vWdOuU60KvC7FN602gCGgfpD+V0Kchx + araNqtrvXiwpDSpb8RgHp/Yx60aPJZ4x5jEWTeg8xnSRDCr47JPhHQxUolIyBjp36HmBXVUTih5y + 1xVlGoKml0iqVvG8xnQ1TztxHJFrBI/xsM86eUinyWI/359aHp6vJeltb+f/dwv2cROblhlbcBBZ + autAM0b1+YBt/b+jqgE+CFlWtd/5L0jibEIgtmsnd8Su1bBAnxP9sRuSW0yts7FceYv5fU99Nfav + HJ5X2X42ssm9zdVp6/Zj/GrmIn+IddEXbZrryOrEMPKOLb9TdSI9YlqdKBrQqhPpWlOeAWc/Sxcg + mXtoLi/hVdLlPbc9pUKSZUBvFitby8wsNIkVjFHoi/xMwtrYoHBQb/M7WFUH7Dj/JbuD43giwVN9 + gVm6SAVZywG7g5yHVG3y9hoOA+a5gnS7Ua6gkFzKFaSrFPa7uPlTrzZhrsNCz9F54Jzw1ZgFru0F + Ixb4DlKu4OS9WDxOKJyAXiqcrTW5cRfZIybFcagdpFUW5Sh5ShzBz4v8h5MiliUPZtDp636xnaTQ + wAJk04cd1UUzRliPPochhE0Jh5xH9SgVD66sOVAADzZxiII1QuXniBTQ072rXwpUEq7n21ZUAYy4 + l4P1Ars7mR3lo1bPIuEETehOCNPohmXgB9WAdI6V+xyVkjAJeqlIhcQiK8SqmcHz/bLLbp92gBNc + ZkqyiLEBjQRf1mrEenC07imzGerhBzHmDnp18zh0dDWZ60YvdJDAHxAV6zM0ROVbBqEhPhjZ42Kv + aFDPmIMu0etdXNu+Y76F0e1GW5iQXNrC6CptYa//OHcq+e4swLcsbmERbGEWC6LAHjFkuXCFBYY6 + CUYiG35L4i8lDRcPV5KoUWKhy8GaJnfzJSbKY9HgYr6Czo6x/lhSuQnCx/s1dHRS2VWQjFhCya1R + AWwX2/IOEzap/6Yd5hmkzN/A/ADjaprEk2TziKb+SQ1OPd0kbsF+/qYe4L0WSbNodAmw3A2HXVYu + 9jIKEd3FlwuIn2+SoajqfnM9hIFNlvCC6wTUx91iCztVNsHeqMqmi7dXR2ORcKGOh6L4MpPFl7Vf + bHBzmu8ujht5HD7IrxKoCI5b08wWn9mivJmPlEG0qx7Gm7jx6ieb4YZCBnC9CD60hn6WvwDYDnLR + uFboyi/zqE10w51N6k1fHkHB5vK7QdSrZ0wPobIJ7RQqLpIO/QYLTFQAwV/x9Xl6TOHvw3/gLQN+ + I093d9Dt+rx4ht1A1RD4b6JusEPqGeMaAtGEXkNAF2kkp8liE4/FGp6MQeDscVHc34snd+3msx03 + J+t7fsCPYPDogO9Halqm3Dt4eOaAT4xX0FYqumUm1dy71E8w3wp9ynGAXbiXV0f16xfU7wES93eW + dNPdRl4bOLeHhdey3XHdPOvBI3poQztSQIjZrS+BPVJCuaEqMruIjlnHknDxjHGZmWhCrzOji6TU + v64yWxi5MHXQKZJ7EIvapPKjdC/+HQUMVskq5BVnTuT1g4e2bzF2c8q0o+eg7Asq1hM4mYPnVnwk + zuCgtkLfSE4pYfpWrs1ckZuMzpA1pmyr/oy4YuD4Nqpq2swm3E8Z+coKrMfUafoyu580D7Ps48C1 + BCxeZYqbvkEHCeZ5YcYim/aUThEV48IUou55897yXfOjPN1udJQXkktHeboq6AP+/rlK3RMEOvaR + E7wa2xEc5EcO4psJMjt5Ti9kR4wKsDuxREXCPBKkVB/q3eDouMMX0AE2Do7g0ywIvCElCAKuoS5O + X5+O0fky17MwJGvd6ddNtTy++0n/42mxOD5wmV/Bb6tNAdFk2qwJsU2XqQ79TSw8JUrfGjmDnzr2 + A5wziro+iKx+diifn78LrLF7kb2IxGval7ojaxhnVu6Qc6gb4Bkd8TxLwmtEHZQU3W4KrxFVlRRd + FSGzyxunAq8BmqgCr+HY0GM2cuxIqamLywtHgQliMiEFnuaZ03fgqSBJ7vWaHLADfpJ7cVddmk52 + 7tqlmFWBftsOQ5flhJigXmSHZA8H+LFyoAwiwtinQK41WPMso+G94qTJ1cfkAccLo2PL7nbAEc+Y + HnBkE9oBR1wU0M7rW7GuqkkTpUA9XwoDqhGrSaS4AUmDbPV5Ha9s1+JphV5A5Iu+4+V7yWQ9X3UA + QVH7iUNkFzUY8FLiCHOoChlV3Q4ctudz4zhbJRNM7ij1lguojhEsyYcUbYhiY3mq88+a2/vl8REc + NHzIceUr/7azDlDOb1tVGvnvwm6ZQeoZ40oj0YReaUQXaX7fr78LV2K8zpIldLZAZvLifgF215pY + WY5yM7B4si/eMrxYf3cH9/gfXm8UhD2BmxMrkFZUTRw8GItRZdVG8F09kwI5sOwosF1fcrwHtqXn + 5hKHfGTb2Y/69go+fa0qdi4UhTUdpt1vJmyBT0D6owXxp/Nsu7jDTNsW0h6jmbifaHNXoUepX++u + WcDMufrodiM7Vkgu2bF0VRy2P18ElbB5hAefoh1rvXrpurAXspHrBr4lMr9g1NLVLL5/lEffzX1Q + iwzH7cU8AlxnMIZOYNcZjLnlmWfv8gi7KmtXfGn1h+DQd8vUOVqyk2U7DnznMiGPejXtIBwx919N + YMK1csTEGedOScRy31RQin3b2SV4cCr7NJaHYzktMf1pukV3jtj5cRB0tOE3rHD+zoeSD1lxEDlM + sWDQ4XDDBfQAeBI+MbNXMh5/7xF6NPwtFBeLxdfJZhYv4a3h/JwU6KGyTbLiXLpykMkpqJyjA5yT + KlvLZgSe7lEZ5dkYOX7my0LGCo/4NLhV6xThnqIaQUA8Ko7NBzW33xQ6VnxYcOvw/Zl48QortmO4 + paeK2754P2zKrniIJ+u05aWa/Lm27XGP9NnfPxexKwwfdl0N2VpLpQbDmaiMc2C0fAEZN+EGNlUI + zZMJbEiY7DLX3hSWYqPN0EDmflji9AGsU3tZ8jt9TU+WvvgMcDYiAeZ4enXB7GFFR7e8WVMuEUiM + hMSwD4E9JxB6Ckeb+WEAR59uPgX5kHE1omxEL0cUV8kwWq8WriA+9K2bOrIRO3zvuoPGH3/DX0GK + HRJKdiiSNExYQMwrFH8+p8h+4G+HkIjYti+wJKhNuKeJImfvkX02RCXm+RZPxIbi+RJT8zU7Zdax + 1alQWD1kiqmpGtEwNeVVyeGmxgS2w+WA123Sq2XJ/ToR220dar3WBOYzuG7E12UPSJbERdjQme4f + lqp6CaIEEaKTJZZTaPW9vJnREDNZeRCZB3XqgZX/t+hXGgtyXvM8wT/P39td6q7odqPDt5BcOnzT + VRFEOn9XjnSzKAp1jHbHfzUOUNGPwAZjwtX98fT8xcujwkmDO2Qe0EszTXg+wH2COEsj+CfPGskK + d2BO+8MDjGXMT2/xAhbR+EuyScmrA7doZTqS10pHNZRHGu4XUveiPH03kS0tkq/JQgbJL6azapAc + vtwWnTF30hrSQ1W21xSqYvAj1klVaq1qh6Sp0Mqz29wEyIMbhKXTvRqMhmIrP7QayYeEwMGv+iUH + OHkVu7wTiFM6me2FkPmheZ04hlyzqO7ijNkujSQ3ndn7Os9GHqF851+ketKHobbH6ff8k3Rr4+dx + 2vdcFEYjvnNR/iixjclqhxz/+qWL9xQafvjG7RhoVc+YBqJkE1ogSlwUkHePq5Tyn/ODzqBsihVF + gXnFbNeXBAXdJ6AcB8pJO79mFuuwU/PbzXZqklzeqflV4Sa//meFjw/OCNWd2vcQVW7kewFnQ8Jx + O10j53kdzWf37A5UtIHn1md31MnyvcYMD01W/xke+WGMDmfySFbPQo80XI2lbrKng5vZdrMhxNl1 + MsajN5GpYVVYgYB+pnHd5yeflr6cKK9EJubg4lG4uRe37ETGDOfcQAET+vP8zoeLeFDgUPHJXYKP + olf7NqMFcTe8TuasQF0/JYHYvbxDhIImD5UDnGhqV/UsoqKPQh0zea/NCkaYopbqGFgYo4okXAbJ + N/gXdkwQoEJvY/jPIz0gZFJym8HHNjlHHCRv38ScHZQzXv50z1k2T4DFf4hrpBL/tR1CjOXEeIcU + a9hOIK2txSI9VN6zQ5LxKR3xzTXz7Q450/x2s5xpklzOmeZXaX+6Pj2vcFHD7mVVcqY9hEjzRp5l + h6HMmpbBGKQ/hSmQ3i95zSueAIjLdAqm1T2MBAI8veA67Dqe2s7qSHKH6DSXRHlB6Gsnar6BPvwo + fBdv5D3XhND2lhgx7eGLj2/e2kcnEi0CnyEOpH9enSl3Du2k0AO3coRs7odk3cwBt7UqZsZYw+YT + BEjw51d2XBJbpcmGQQ+bRIVIDlJJqSyOrpx/GiGuHzbt4VHowFpwy8dSNQrj0ijw/DLRoPzUlaO2 + Fehp458LqehWxLyQp3v/WpNmgAtEJYhHvjsQL5rr9k7j9ZtJoosJFmH72dcOo/YO/gCBLUQaooAl + z6YqjFYzNUQL+i3hwxaXltGmict3x2tVlv8TujX5wflgjD1c9vhInXow6nwnAU8X1JSbJM8a/vPD + e9bF3Uq3G22SQnJpk6SrtEn+/fRj5RDneHaJVN17NXYtFgYjl/EEONwiv4LdO6UUODA9OfysHIxj + sR/9PV5WcaOoJg9m4hjmn75PeKHFGrWsh7kS1Rx+zkCZ6fWu9duZ42s7xpVKmI9cOLU61QOkCrQX + 5PAovFEfC6fHmi7WOlwxxNZQVAR9dGHXLe1qH8dw0voCM00i38SVnct3w/LJeVTwucp3H5yVwUiw + 17BhFBOjR8Nvs/lkNhS8C9mQf2C+v31YLiP62zyrHDzv5utsI3KcQLqQTKXj/JxJ+hR2ynUylPNq + LOfVZoCTVNUqeKEzoLGyVWyqykXaVJq+e4eCDyg0rkZIg80Qx2jX/cUNNWTbgh+44fOZaDKspKXQ + JhyVZT9hxLYLnsPAae5lYS2vNMvLOXjZbZcdiPKKyJHORv64bckZ7k0HiWyjc++JurlTYdguWVGz + rL07+BfC94dNbfdk6IaO1svmLLHAr+zggrFjy+kU45cPmcb4VSNajF9epS0XcxeSNSrWZPsFJKRC + uXFr/hwr7XJG3FwgupxDQcHqwwZeVW6lTBmjPPAekgMc16/2BX3h+FptYk3j9gcTTz7PuH8HCpKf + kEPgOzJCE7nBMXO7RWjEM6YRGtmEFqERFwXW0BZMgW1WG5SRT/OgjG8fHJTxqXbh07Xluua1C3S7 + kT0vJJfsebpK9vw/3l1WgAJcThFetOeDVy9dWBuWDwY92JXC6fWuGMz6dP1WQvWla5D/7b8Gqk9V + 7a+ay2eNYfMqcHlvrk9AM6C5Sj6E6TyDQXxEo3myTmJMZxJpIQgKsEJLe5nABEZPkWevwKybzAeX + 12e2qt71PKHc+4G1e9aWz3OwWeRi92TBfRh0KriH200L7lFyteAertJiP7t5Wz28M+ZXC+4tP/T8 + kcNAudm6h1uVoGAED16eowjzIYs3MHu/adympBDOsrsaOOi+apr60gDau2gnYsaaC4uCEM5/fu7L + 7TI8J3yBo73E879HZEjF9/eFsiQ4HU+TTYKJl3hIE8jQq+16fjeHS4VNJ5a/jzezdbq9n622eIbe + TudJNsAvn1fvB8FAvBfOYa2XO12Xe255z3A9+qpE+S2zuwFHqmeMS5RFE3qJMl1UufIskMyIDQnx + LGhKlYdfuICBF1p2EPjmafJ/tcR25kVkThvHbNsByJ5JCntr7DRQaHnvOrJ6ykeMsfLelTk95TWa + uOcfT/82nMJ4z5f5QbN6bXgW/5v9dv7vFRtynVIQjfnkfiDrPDzNFXaXLjp43rmzIKIhvxXl0Uhz + b2zb7DF5PWYTJB8/QW7mqx0HAT7DXD5f32WrwNrtgTAuvoC9ia/fGXKiZLN08mVPYh05y8IcExYU + XyeuM/WMOSYsNVHChOUX6+sX6s5rUgoCvAZWfl77CYdckX73noW++UmPbjdMlOeSK4nyeJU2mKur + d3YVE87CxFg9/+4lsz2fBSM44rqe1X7Umy6ggepR79kZdwcc7wZ5grbrwT/EFw0suRxcOzy2gk6r + gR4xXQyiAW0t0DX6sg/JVqCTYl7ZMhmvMegi1e9DMicHWXuBzwcQMkBJHNREmhCBAPBFIfWwHHlm + /CrebJJ17q7b+WgrPAhzbPl0S+/NzNU9EUJyLsC0Nghft9ADJuHIA8c/Zl18wPIRUzBy0YCGRU7X + hIac5WgvWkb3oPmXglxUmp5P0+DQXP/B86ku7je9PLDl53YQBD7o4rxUz5h+cNmE9sXFRQOH/x/O + MFum1x+vxoVsWmWQzSfstz82K5j0KiaQt8gp0GxxqnB8ylnhMFg0DbqnQ/gOgaIfJmTvA45UM53y + eXdI2j/r9hlTxXXRgR0e6wBWvNdhkI5btiOn2J7pQ090YAtUyCMMg2PWDRyNHjEuSaEG9IoUfk0P + d8g/C8/wKAfzjK3m5+3uCVwFj2BfwEGEWd3gEcRDxvAIshEdHkFcbaKsrFwZiTTMf5xf26wQrc3l + 41fyHPmV9tIRe5xzXcemlvb0hsiP4skAWOib+8TpdtMAGEquBsDgKhnPn89eV3ziru9b5QDY2A0d + 27ZGbujzenL8gGcyr2kzWydYt7iYzLcPPKtJUmiQ2iHvR3Y4eRJ3K6yS9RwM3PXjiYa/hDzsFBP/ + PLllqxH816YUK/ibs1IpC+Lsxm/6Kx/c3uMnGMtPUMASwm+Gl4y/Wo1fXvsymhce5cC33PtTzvMv + OGz6hAOctSqe5zN730h0rgPIbcVVe/wLB9v4nKIEIflhu9ekqFHpAYgIhLhuoTtFZDOO85bqk65b + D0ORjL5DRt0nN3z0RxT/BD7lNV+z0DP3jtHtZnnNJLmc18yv0jZwc/Op4hxzQlxPel7zS9+OLNsd + IcqEH7WERvny/jqPb+cLbs6Sv+xhDU3+l/jL3CAKhFnSQ3pdQFAjf7tmLDI3Feh2ozkiJJfmCF2l + OXL5/kPFVLC9oDRH7Fdj33VtFo1813clhVmTA/Xfa5BfpbX8y2LWHzCx/vbw7zMZRxI4nLN5toH3 + HE4TIrFCR45C7sZV+M4Z/+4OX5BfFEPwqzSj6iNX5q1LGe8cOT+PsFT5If0KE4vESn5YKTpeQNvx + dJpwkO+bZMNWVRatwd/enStwDycMLU434xGND3dnInzcDhL59v3So/qYyigYZ4V3FdFQx9QXvsaz + zJ4sl/SCeUGkWwi7/ANsi6e3UEI74Gbbf+bLyf5v1JNjVUkLCByxQdqI/w36iJA88OcC5m66TNcZ + 4QPAm6RrOBHlacJSf4HAx/sEDtaVWzbfUtAQ6QPPpKO7uvUZDo6eU7uaisPwgnSS1CVHRtO8L9FN + UJR9GXJ5jDiyWUcMyvwh4yixbEQPE4urtGmvvt6LeMgtSBizkTO+jxdYyZiVaUGTdYbc1A8Px8Pr + 9DZZb4af1/OH20VyNNj17NWHy/Mh81jggH13NMBGeRwNlpbIZAg1vNtCUc+OWp4deHmuQrWgoqZ0 + fR8v5//ZS9ghATsrsmkGgXkAYzTmkyvvVoP3O6fIkDuJzFoAC3u8elxvvz4STLccdyofnG4TQzLR + 2nigFxAh6/diZlMT6N8OaAsW6h+g6/7zl0/BNS8+qn+7v07lEgIN4O31OqQbAYS5rE577sEErrko + St2qEzVSVzmGgVSA0sru6ILgeI6gWUlZ7D2ibmDTHMlH9PvjAv+QOtsZ812glxGX+2UkcsJd2+mS + E463G+aEc8mVnHC8qsgrWIW9AtGkK0nhUcAi6EQEe5yv2HALHg8JiU3W1Onqnqnt7sucI8kpigtW + w3HR+cTL3DCKmF8+qYq2RG/Sel5HsBGsqDGpO4qQneZwOgshB0yg+A5zF9V4lJGwOIPDaoaFtqD9 + QLPA+TJDMMnidn4iK99S+MQFcI84Z4F4HKvTrwzIcHARsHUXW4S9xLFXfBMMufIIY4JzVdCPxfHD + 0DOfIMqn4zKPijBd4nUUDUODkpuxO0Hvz6Zm6I+tWPDhgSUJxxYeFybA0W7j4UjCYn1FlRZTZ1jG + /hkRsJSAxi0ZF4lIMJIvQuaG6CMHJmU6rsi+oClcYCDsUhN+sKtSzidULvhEsyoynwqRq6VAK749 + qVIqkmog3OQW1y/hQEiQXb+/t1iHzYtuN9q8hOTS5kVXJaTkGUdz1l2yFbe982rssgCOZ4hH4svN + 63S9qtAXih1qPWFRZYeC++3fnMqX0AFJwiaEZTiUWk5Q2a0KqSXCRdGA9eGxKGzcaJwALLegvGGh + gwS6uRafOt5MZvn2omOduI0Yy1L24CbfcdBtenp9haMhRkEifcD5TrMJODBIuqEYiIBDBo2I/0KQ + DNk36irvYZIN+FdV5EVu5Iuyf66j9eDmfDlLQBoHkzGym62Cam0eHOPlCYuK5eLu5ouYNyZAULqd + w/tJTvd8+Xz2BW7ddD/SwhzmqrR+ureqc0q7IpoUGpI93Zow2fGR1tVhbF70EX4KmZay5XTEEaZn + OiVtOWUcYbpIustBNOx48rgYv+D/FfR/YxnBGHPXCLm1RHny0SB/6P/UPfSvwkOCKyGntznSOsZT + w2Q+qEVuX9x31gVjBb7WGpmZZc7wRiDb4W2dybN8n3A07+INKpIJj1ib+H/MWWD2bWFXv7llOku+ + x9NkgtCvfXe8Jxx2K/TJCJf5AAe/e2R5Ik17b1E9YM8ekBNj9mgXdA0Tea12LnMoXlfMOFrwGjqk + IS7MXbWUzal7rV6h6knl7lI5eT+bGzIe4D4bbV8qLjWE0p+b2801dbth56XLDVMT0FiLRWRiXPyx + k0crtClN473luh3SNPjtZmkaJLmcpsGvCkaYP6/8ypmA4xiV0jQcL7SZP3K8iHNe47568fkKWilS + eub5madXR8qmfUzibDO8jm9lJgIxhY6Gf642/kqHUv+agFEBC05wgk7r3AzE6PK48qt+sUW8mcEH + G09S/rCUVrDfnQpW4e58DnrRHV4yy7OiJsGh6zLXj0pnDr1YvPqiOrNLqAvP0Qul8MHP+R4DnEIq + dcPjqRuIlEEFHhr8FDZZHEvzJdtbjf3BtJSUkoIxH2O4WEdC8jVNz53HBJxaeFfzRDTbpLuLaR8N + K+KjWf6uB8ns4/zBS0b+fH0N25y5XqXbjfSqkFzSq3RVoMd8+n/K6W8scoMSf4f7amy7ruNYIxtU + jyNwAT7vBDr5FmcqR3oqc6S1xGqRMXe7hi5NVoO3QpfFGPQGU0aDrb66vBj/veCUiGtBVblvXF4g + ruYswaOPuDtBdSHDU0VWZtgiM+hawZbnsKS74Vwqb1l8w8HF1SULFcK2TcwVvsg3gh9hbk3QZuvj + YLKv1CaGiEPs7OcdwH4G0eNc61LmQlFU11et0+ZM0Hl3glVtmAnYzSZZzQq02Wv9K0alsaHQsKFZ + 8r17O3JXcOWu4HZIiqbbTXcFt5oUTVcFa8abSv0UizysvCztCo7jOi5Y24jqHiq0mGG5PodUNtEf + ZNxpdMeZ6lATYwYRDd5kPb+l/KHbFFkRsIq4ADzNHU3li5fHw+vklq2qTmoqoVImXVmYbHGFd0is + ci5qn2TrAgB4BCeT0LbKtvkVbCylVrU+Chz+WovdCZjf0FrgIaNW5SRQGaZSy+2tWXZTvMN1vCBy + yoRWVRzZvCGc7fzdL3E2PMB8WOsHBpBoMpKqtZYhVG01NeU7O4ZxUJknyXKGgYh1eU6fDHdNdFDj + h07ukwPm9AAXcW53eA7V+Xu52lWD2NHKcDyvembSJHJ6kEJRVOcGmvCJ9XlVneXqu/9mxEMCE4Lf + 2WVcjUS7nkvAyG3v8MPcpdWnd3gMD+foEIneXfWQkW2J6rBOeAft2joEch/2itEhqyOGsXimS3TI + KmMYi4u0Jy+2t8y4xHz4Hu4e4CMU1oFTB1/+BsQ75sEVj8hltrdz0FGb+bJYBSkDjBXW146qICJ9 + VeTSgU514bTFchgK14gse9VfFcc1wjp3HebnCUUxZcQc+O79ARv9yIKZnpxUh8INHOqEyb8rnW3U + tzwAp0+qDl8Q38EWY177SrcbEt9xyRXiO7wqIBDefaoSs0ZlYtbg1UtQCYEVjsDS4hhAqGButisO + AAZvKRJDPhc1K7zxi89HgtoT73i3WrPhi3dHaN18+godyvHDXnw6ktAEs3Q/2/oHFjK2GjElq1Xn + xbvIiYQCK3DRlDxTuE1LwdQGG1YZuuBErz9UlmPRZszrCrHIZAhfdizNxUL38GiOznFx6ObicupW + XkCVKZbY2fL649Xw4+lr+2SYwheD3sjSvkx8/ILhKr+6+OKTeJuRKTvDD/8gWFAHOOWUwRn6njA4 + WcXg3GketjkOIkoKxI3/xenRy+EDmgGCLJY/3KgDm6Xatij5aEaENU8j6qzEhcnlqwd4iHZv+ADH + D4kUSU2bjuxoEVeH03QLu+E4wy+HRbHdadZMoJqeirglVPC5vgVGVKfUHvWMKS6QbEKDBRIXSRtn + y61E8PvD/cM//sMbZnwJKl3YjuR2g88PuBQ06Gzfd7hBZzmUUyU1DF8M2QqMDhiwEUIV0L+ShiiQ + ubHXF0AcZTocJCV0QktOLPmuXX2ubiT8mfjC8nh2c/PHmL/g3uPUA/ZcH+c9svJbv/wTYcRxzZM9 + YNGceBir8Mxxto2RkPvC8JYfzvfIIf2H+9sf/vD7EFYoLPpxvkr36+5hmHVSmeUVuN65e2x1w5YT + zxjX34om9PJbukga7OMYjkqbcqEtvMkcGQ2OBh/jzdmw7iY5jHkmkkzRLj5e7ATilYYIhIbKw6Vz + 3McCPFa18pZabUjR/WH5d8/3INc7tL/DBJ0Y/+yHrRTXo8A/MaEngg6ubir1kVnWQ2Pt+5RF+1Sf + Ip9dkppUUZFCYow8uxv8pXrGGIdRNKHDMNJFQbxxHwscp7dn7wS+zOB6ll6crkbVFJBN+i1ew7kL + bvjtOp78djaduPZ4Mf+SiK2MnsgGKJbbX8yxBZS2T2CivDiJxrEbRor8soFNBlaxwTybyUi+IeLs + D8lO6iEzyDwHt6d0ITGVIyqB+vQelm8H/Ep+uxl+JUku41fyqzL++k+3gl/pRk4Fv5KFCHwwYiFz + bbE7o5Xx5p9kE0FzJyJrDu1b53/G/z/vf+CwrH4VmXXHw5skGX5IM7gvga+2OB6yCEz1j4XTKCyP + JDse2t4rjzFrDP8JVdT0u1vv2eGmY6n01zLy7fTvI4KXL717bfQzdK1ySdaokMTIcMlHjlcOgZYO + NKWwo9vgK2Loc/MtVpYmDw91hV14xPCaCrukvJy/jrwj+Uuv0gxLlB+17Ems9Sy/AnqYKh0Z4MxU + GJWua1FyCJWgNqFkq7eIeRIWHtaXsrjL1EPT2wHUUEpTRlQf2vPZY3737JByPVZwUuxv/LgezbPa + NdxxQPqoCPYDIvXmXAuL/W2niMn0+sg2jxbQ7abp9Si5ml4PV2nDeXd17VXS6x2/goL40oap5EQj + 27dC38kTfmYJnJH4CCynJefuKe3KRXWThx9HeoIDfI4V1izAFr+8p2LSh4f5hkfheIId8YbATAWz + TwbwsEmMUXDjaJ5nB3wQkEeX+Kj6x+UJqMANJnPCRwVDzw5XqKjQzbmRYBbvVmtvv1BFMdudRY4d + lnchfbBq029gWjXIBMVvu1ZlZ9tDZjHlv9BPtQMVAsTaVmaHTWGPIPBD17FLcjQn8vB2ncRfpFz0 + TS7T5Sx9wCxfJDeFCTP+d0owzvoGajUyyFqRFTqwHQ8Om4XLJJkePAfb5h/Ou/gOwycZ7i2c8mYj + cWRvH1XUBdvcLrPJLJluF9CjwvBoLQ5urm9yIEr4Lqbh/fbt0UBA6x5tcUdX168+lF/daCv0I/ID + FXMCsMPT+CFGq4Njnxhvkfu7W7npw1Fz5MbK3Qj7Bm0OTrnxCTyqXhsYjaxr0feDxVJYOoYCd5QO + ElTeoXJQAYoe7gto2demLUiCPlx+Pra60ObRA2auDiG84OegK7TxzorwwzIViP6f7KQsMLGdDkdZ + ut0wlZhLrqQS41VxlP30uYzBzTBEXkkl9oPIs/yRH6IzpB1f+XYN8qv4ynqZQunYGf2klIIDsJEv + ZUGAXhicbjHBUdUCqESCGE5bU36u4vzCkkgcIyJwUMkwF/3bkopfthMCXVzQGREUKBWLTuL1LaYA + pNs19PQEofmSeM0TEgTFwtARflJaycIlpTqTJfe4UcKj+LngTVIEqIqHUTDGCcO3ADw7gfb89IGp + kyToB/dgtoPDK7FBhlvGI6kOeEd982zqTJhDwE6aqE4vWseNF7mC7cUJ/H+MTzvwvdADhowvQnqF + 84Wuixrh83d6yhNWJ4Qh8srpbrOXDM+kkT3CPx1XaJtLDqDEGbjBICPIU2l/ke/i+vP46uxaaqF0 + DY1/G8f/FcD/duiFfmFj8aS733ZO2bHldXL3i2dM3f2yCc3dLy7qhFdVvtj8acyDjcLwEOar/wZk + 12egsNQk81UOz2skVfc6JvGIh4yzeGQjehqPuGrAxZgnXCHTwDTRwOrqI92FVpEjW8HvOE6JUaAg + 8TcT0I+ncTKahmSY7xHeVOuQ7H4RORGIJuTje9uPzB1kdLvR/iIkl3YXukp7y+ubs2pExioziiHP + MmwKUThiTmhFwkH2+nEFw8wTjEDbDM/SKSyXQkaksJP4trOZgfGGtlM2S7+h5TSb38+Gi+RrskAB + GQqYcAG3JJU2o9fZpBqC+SvtQ5KOB8ZAPiL7MiJb8/tsfjuX3hVYlRpoOo4A/A0nGc+EjYv0ojCD + wVaebmCubu9nxZRa+CrYYp7PfFK8E+3s+VLa2VsYYjC7YWardLLtyvFWA5w6KmRiI3uwmtehoL+x + mNXB8ctvN6S/4ZIr9Dd4leb1hzefnSquSo3jF45JzHNGLiJLiEpPPIRn28Xdds0pC0Yir4fToc3w + YDJ/wO5km2SFw6HHTPBB9LjmcKijIWYdk2OWQw9npFc4NO5aUY/gKhDPYjEI/BWmyUjz7CGLAtyK + 7DAygQd3eL5SPiQbp29mngLyo3wreOJxUUqRgvE6qvfPuoHuVy1UJsJhGWzY0kKqf0HNZ+o1Bwnr + JKqOy0EvH6FhyjQVTwqBg19rPgxw6isPahCwgXhLnoVRNxzdjLNdogzKEz0qtKzpfoeaIikt9Cml + rZAr1wseXOiX+ni4VBY5gl7vMUOtf5DMg8z9Q1F4OnszenUqo1rRpuBurfQjGtg983viaDzcV9wj + SAUBqKpv2kf+Xs/Yz5HK4bOtd+4x1ox2OdTTM8aHetGEfqiniy3ubQnYoyd6lQ9VUjim6oUOozNV + h1JS49Qz0/y/CieOFUW0yPUCcXM5/QALd0j3HXAMdCr5rf8KB6Ty0Qz0LEtSR7MOmRB0uyl1NKtm + QtBVgT7+x02VOtoL/YoP0fF8mF0j+CPydvBBpmuQ/19CEOp5TqhOOJ7FVC4l6/BB+e3GuZSs+kH5 + VUHweX1aIYF1Oatd2SkcMFASIxZajlRBzUiFHGVsmdzzAMriUS5jeKvr0xu+TNPl12TNn5mLwkQ0 + gkHiWAKhXZxfjW8FDg5vgng2Sjkx3NLlbpPTD1fkCcDPMk3WsJnAyOC0WcBC2pBrBdQ+ToBsNJzF + WVFjYRLCOhZEIQSotky26/Rufgudg1eiyQr32E93PrqGPhmjVDaF7AIPNtOgjAuD4y6/Tp0aLQoP + bL/pdGQz3/XhvVpQKv96336Ai6SQ1sm6bphNh47e8uNhSYokQjHupY2TD9B+7HGyBdshxzexyVZa + KE/dLmj1ru9RKUhD71F229w1bcdjlldnVexfU/CzUU6f0bHsCVBJeTfadaLZiOwnqjyL5KZty3OA + exEdW0GnYwA9YnoKEA1ohwC6Jtzuoe8GY+FHV6nr6naJnTCoXBn+cfUWmTwkdLBcXXaxWQy5uI4j + Knn2IcokK5wQCSRXVtfJSNls9HRsGn7f4/G/KJ+jMjUdWSQLRz+7G1gTf8K0QJbEa+Wx/FI5Qigy + CFR0sOmHXCaGqK3AFyHqThASchBchVl1bh9bUUfMKnrGGLNKNKFjVtFFgXVgD29FHZ2qRS+8OfzM + 66vrEA8+ZAtWKQuWLXJMK6QT4r7bHwaB8JPBC35WUbFPLl4qhf/DPmAI96ov7qvSv+983d7wWkzg + AYyH+FCwAc+SqT1XdnDBWMdSXvWQoQWQN1K0AdTVnek9+fOoE3zf20N57ucOk8PlC7ZXFnSA+qLb + DdleueQK2yteJSPp/OpdpXgHzjJ2mez1pYdcls4IdgnbjdpdVos1yP8vcVnBvOE24PNJffKsQDhC + bdaBGYBuN3SEcskVRyhepVl1c3pTmVVuUE2mHAeu50XOKHCp/KPdEQryq4nbOdH6iyxZZtvhW7CQ + 5kfaF4zsoNHZZDmhE3nOc55jXuBag2fGU49Dio+QPTrmfoQWWTUq88AV4zDbJjgLTlaQTA9ZMaFY + McwNu6wYvN1wxXDJlRWDV8WKubqqepoD266sGCyedK0RkuxFIvn4uuj2u+PgNtkmvk942hjZr9x8 + zQGrTiTYcUYZFUzdybd8vuBuVquqM7doDdfynfqlIr+C59WNHKfKzt3XQjM04bVF5zQyqMrODt6o + NBLNg6uGD/2xd/N1tlGpKWoYObtpDf1p/RdKK5+oBMB4tYbvIRlMHmJ0HVMZM/9Quae4KO4uXSzS + b9iZvJ84TF+x2G2diNp0nHtK1/iB28fJqJHZ+3kchH5AJf7hMGv1x7Ee8Nn28oD2VNgvVa7KF3Df + OV3TBegRYz8hNaD7Cfk1Up/ZDOE/odU55mDy2r77ZFkGJjO7q9AeOggdX+Rk+8QnX+BjNMjG6kJV + 6pXE34L4cfp9Pv3ZaGZyu3Y8AjcsmC27Q0MFMOAVvFuyluI8D3ZDvD9/xTyr76k9IgFhpK6SNbRO + XinQ2zgHf5B3o1dmTickxgRnzCf190dOkXmWnpameS98nBZX27AniCawgUIqyIFYTm4o+GX3Sthy + ibYYZ1RKk2nvCl+PUTLK+bUbdMhdoNuNLEohuWRR0lVRPHv13g5eV2C8/UDPz3aw7sC1WOCFI/gT + YSJILV4VHGV0Whd43gTQ88K3bo4KsD2iRgXhEOI1QgSptDJY39erhR2cihByJbwMM2AIfS0Ik7aW + wIjCp29rEwsyrpGoR5W+yBPhG15uE+tnQi907Yac5AjOpGhulvOz87mH/vjNfLMVo6KgjnQqHMcz + aUBZsHn6XU4hp+dlu6zS5cEz+EwDmmrShLTDIBqI7uKqKVRLdFRNDRJ2VS89AwrNkJI/1cTo9Lht + +3S03T3DW0fjKZzgOKu5/bl7MXT1ZHcRvIuABcwDoYBtrwMRGt1uqIC55IoCxqukgP88rdIOYzZH + Wf2Oo8D1bWcUBRSQReV7+/9eXpW04J9xDRlwV3w7xoLIddmTUn7lmEORE9iRU062asiR6cb95Xrw + HjuazYHs4JPhIkowISoZ/me+QpSeFzjIR7VvSsQGBetTlmqBTkyn8+0DV5ELOJbj3zfpAsYNOnHC + F5SgNIAJHMN/HlGLZ9t7OOxvsCZvjWF+XtNYfPlCU/Avov4qVqFwcAUylrQ6FJxjSu/6fvDsebp+ + cByyN0aqmhHdyT/15ChyLuYRc6UpTOSxSmHZ+2VdP6Iic9mx6Ry0gqyF3NMatouHfaxi7HjYZ06X + wz40UDnsSwaF1iLs2u97NZmUkwlUMzwJiBHEeODQLmuu3loo6G4f0XWG/0JNsPeRyGEOnVUfVBbq + vxOaQc2cJMbCbc+PyBclJl1nmr2G2gTLtfhB7s3vZ7/9/ubTVZ6cezD2P3yncnX5IbKiHBoT5m0f + Mn9A9JlMwpyOVn0xMWN7QVZ2mKDJyAelVSeZlnkwR9TzW1GHWA3dbljPzyVX6vnxqjhZn95UYzW2 + w8r1/GPXiXzLHrkuHCgsEasR2brpOF1OOLuHhIk5xgxMm+rC840fgZc2syF8HIQ7gAFDG5cbvjre + 0oh8//AuX6U7jNxrI1ie6VoootFwlSXbKVgSq1m8kMLRlonv4asoKlvoSMXU5OegOA+x6Yfp0G80 + OSPm2oFfgWbuIq/IthpYYeBXKHLL2dWahRrZTYS7mrReygEKwp0wYlYUlIRTnSPacZPHyaKQbluR + zCKrk+S6b6sL1MehWNftuYFnlT0S6wSjDGRC8+AunyWaTOaUrP8ioHToRFFUhrsuTEfpoNEW8VGp + zyWytEK1heeFkRfyaosyNRpF6fLiClwccF7mzkyDVYIr4g70Di42xJmkwTwBk2AN+7GkCMG7VvEC + U8HlJS3YpyYjPyykYMNJM2qTlqf/iVQDaCs8xA9wyJ/Hy2FVXWQDVD8qXGe5Nu2YorjOxPiAzfY+ + XqB1k3WI3OGXpiNB7aQwloOzkHe1ZrZ2EEKbS2HpwGs2LC3j0uEeeBR28TRw28OgZMPAq+OSjyrO + JilOXioCanCz1fPM9eAoCym/s6zMDa0Ww4f37cLOQdw7bxyXXG/poBEtiJoCoR9X7e6JHnRl2zN4 + sPVk6IoMSCf0zK05ut0wA5JLrmRA4lWRefOPs6CSAclpifQMyHEY2VFkj8LIcSJLj5HUIgtVPPI3 + 39ZspY4wfIeag1Zfw+Llm9S7zX/gd/g+afEkQck43yZBxSK7+cc1q83CsUI9UHB5lbNGwPne8q3w + qZgy+krnqQX/0oG9nXDXO7YjP/XyfQY4fVQyqBMEJhBs5ivzWfvylBL1/NLrwstyWtqO4Xict3g7 + fojmo/5e3sEeXYpSdfFc9z/PrkGQueqi241Ul5BcUl10lVTX2WUNPnLo6cByjvdqzGCpus6I2bZj + C7wBPE7qCK6TOfEY8OAj7kSkes7mm5rDoMx9KJ3bgpZEWysIfFZRGLLVFzfzo7Fquh7piun0OsWI + Kgs81ykDU0nZTThXzGpCzqqXd78AM+oBJTbHaD29rt1A5mP6PTda9fH08ZDXLm1wVvpsZegsLO2G + U1ZuJHM+ObicLP8DE3B4yo8n6fd4keJPAgsLbUk5fiMt1QX+4M9pXorSS5wUAxowQggAvU4XC/L0 + XW/uRTk5/M1e1brVswFOboXx7EVEUmBR9mBl0IxsJV9UusKa484TkCBz2JSULnoVpg9Xe6VZpmVI + mSB1OeKdKpNr01GW69o+0TdLa742brQnCtb+4NoUfynojN6ea+wv6orix2lQL92+uLlQg5NHb/hQ + YO0U0iRKokbq6prnJE8e+WF7u8pGxX9I2Am+nGH5x4sv8Bt6KsTTHc16X5aS2u6Z360MXD1jWkoq + m9BKScVF2icn0wkTgfWby48F3mztX8jow9wBvxkjO5ZvE7C8FRFJ6W0MgwhDkSWrzfahy3FbOQAs + N5Lrcy+dE1h+IJeheaW5fDpklls8LGo+qYqoZrIWh1kUPsCRoKfny/lmTn8lj4YpM5oQ6TFHaFMc + mukczZ1+Uzl3OBEY1amu4BS7QKY7+M9tOt2BoTA49AQu14tinLexnDvoBlYtnjFGTxNN6OhpdJEW + iUoUEiG7F9cfXx8JNIRB649F+Zxr3nUEKHUvDHwuzREUgkZOT/nTfeUmk1eImHSS75SrBKNTYK8+ + 6jotn5rR+UkgUjqnMj+TIma1zT8/zkHXyxMKDWR14LHuJPdHsCPB4JMyPDtjEYu68UOoZ8yUYd5E + QRmqi6QMP19dY8wjoaovnidSvTS8+TJ3SlkiuXBkomeOKAVxKYzy0LMSYwFz20CuWrNwzdifd+sF + 8yyHn0A276Jft7hTd8t+lYaKZ9E0hy9+IGP9fvUKcpVEEh3RsjsxTcPtpuiIKLmKjghXBTri//tO + dz/ZQQiDwyp4l2PuUWcjx3a5HYDL6kOJg0rzJ/xnvpwUvDajAg81L2RMt+uxfA56IayPkfzqG8yW + Vm7d/zdesXonw0hzUyyn2wk5KHjz0+RuPpnDR6T4bV5bBSenaSKQ+gt5oQkncPwqkuXhhq88ashl + CXjE/8yqnrTagv+CD4gjAzQlugaB6wes4stvkmOV5IyKQOyeBXcEVYc+fAUwWdPcsC1m4fph0JT8 + qwtU/q7FfFWofit75Hw7avB3NYgrWmp8qEtZFAzXfbceKjEzMOBSOLhXfHxhWM55GNWJHVyVQpIG + U52ccdlDupkvx3JKxqt0xc97J/UJWzRr+TwfkUB9xgr0xxOpf/hcUzkG8XSOEwe+9xJu6Ti1B6gE + VDaC49sD8RlRm+nfel+YeANpBl62vSow2/sVhrqzrXbiGPsGIjgjcVOsMKM36fe6ZMLaaP4Bkfjn + AF6CxigoExqBSbL6WanVYnu1ZQGf1wVEhW43rB/xakBU6Cptr58/X1fQpK0yJATWj8AWy2DpjeBP + Owp38F9O114djEoP/JfPN5jcBwiLHdn2AfBQhx7kfwazZb8V/zZVZF1csy747HS70YoSkksriq6K + VI93f1ZWFPPK8dLo1cuABY5vjQIW8tI5bq9qsdL5clnDo6qn/y3RP7zg+ny+lum3BEOaIJAAxjWW + ehxNJeUjKvEjNrjmSCtU5p4l2g5+88f1WyY2BL6Zg2EK5+TJlwRRnDmN+TF0cREv0/s44xn3lEsy + e2Rt67/6ero6cJsI1SPmo4KqRHjVqzbUj3mNWanMCaMw8ssZtCDtdj4pjqwO9wT2V4NE2cVB98+5 + 69sMX8jT4OXfj06GCpZSwLfkP+aS+LYj8gsz/sXUXZeXvxWeyLYwguLfiW7HESI3zYXiVHqfIPnb + zSO8IXRzgFNfERY5Lsd4iTgH3W+142lqtjiOz4KSgilMeqRbIsyMuvc3M2x+Oq2vU32/0oQx7M0+ + kp4P32aD4diD5ecxi0zp7fIuXSCb4U7TrQF+2rYlabnXgRWPbjclLfeqrHh0VZCAXH8qsz2yKLAr + pOWwyYRRBJuMjWBsO0nLPeuvjajYkqpXVaYCaDsvd1Ru2FXKVoObq0+2omdDH7cRSHdF+chML9tR + 0bngLTu2/I7hOfGQcXxONqIH6MRVAWcOByTkgUIv2AKzeWAwuGtgyBMl1mVcore/v74ikL6uT2o9 + QpxUN4iEI5twY+TQ48rtCMMVOHn5XLrYiVNNxgId7QzeYt8wRuhxNb23IDlrKLX5w7Xdhb6GbjdS + RUJySRXRVUFqfnXJKpVqTuSUcpu9Vy9DuO6Eo9BxbIn/8ua63XHF680SzC5T0Hf3i8dJmj0uJMUT + fqH5EktS0sXwBfTmSKA1KhOAytamyfjjmPLS8ngFXJcX7xdbkIvkgw2yi4bUidIbOQU7CiRD6ery + Yvx+JfTqxWrOqh7ZHYzYujEcRk3ORdC7MAcqwKLG7zRNxIg0pUNatu0ZNa7UM3wB+QFaEhgtf5fU + wV95bgz4qlEp3WHEdw8cFlz/dUO4L6/k/5K5m+SEC5jXw9bNz4lk25Qifv6e2WEHFDB+u5kTkSSX + nYj8Km0Bfz/7Z9WJaAUVEJqXtmP7nj3CbUC6EG/yUyahnvwGht0EEU+S7/Aiy/tknSFZ7mSx5Tv/ + bfoV4VU+xi9/O4vtl6PfX8KQbOardA0r8GS4kmgsim+E79gVRUK6+e+T71UvRZWppJR93gQJE/p2 + aIOurheYtGBHW47d5LbUhBb8HWKQ5jJ9kgagVokzD1RqSfyoFE9qb+aVxOgrjHVDU47fGFyzoohF + brmguPgmzcGwoMl9o3W8VqganpJIVq4mH9WIHfxdzoZ3NOHyaaltRiL5XPptCFCL3w+/TBKsfqRT + RhXyzGja427UOvUHuAiVH9kO/QG9ZJ7/y4ega/SJKn71YewsgyJYoip5fzE+ian7ska+kY4idnSH + klNhS78HFQHae68OBXpKYNNaMPJhoRLh0ccCWnoj5VNDLvyP4Yn6BSwCz7Oi8lzZL9EvdBSGqpoi + qkO1qrvbC6Nyr53VHRupZbaBc1t1lu8J+SQCr9Vcj27mjsr6D5hzbLndCKTEM6ZZ/7IJLetfXCTz + 5R/n5by9P5xhtkwbSKP+2KyYJhmdHSy0u+Uvm2bSdXF8FNzZ/DMRPIF4GLOVzXEdn5Rt6cAEO8Il + otA9/0w9oAXZQYHYzelM7OZ0IXZzqsRujpiKZ5+uLi/Hk5RPuK9w5sbKj9xp+0KaxkeDHXfe3N06 + xdvzprFgJWDEE3K4bUG5JDoyhIJWqZVaZSnfR4pR3wgb7Bq3D2INFOM0VlAdLcLNQdUPbGjHzkDp + SAeOhmN7ZAXyUkg8/fOiA+ivNBRywUjZ8LBd4LzJ5tzZTwUuWUpsw6t4M/vG1zKHmtoBstvNefHE + JG+M8uz52iksmviAz99JaIupYpiJ1G6m2AFfziq/7PAiCXORrRu+5M2xu5TA0+2mTFM1JfB0VfCX + vTmv+DfcoIRxzpmmbM/z3VFgB3yT4pn9M5rcHAF7RLM+vr8v2ATf4EQoiuSSqaTfLsZvC+RUljdZ + FTmbHDb4ieFrFbuKJEqBE3RCKYDbTVEKUHIVpQCu0ie6evcp1BFWOOlWEIVVnILIda1oxKKAhQJi + 5X36bRzf3WF9ISZMpGuwdtHfKlx/yfDF1fyoaEeP9IwaDSAKuiL1XLlEHea/gr/AO+e6d4BnZ1zN + Unel7PQT7lmI58tsCMdoadKPsxV8BVxKWXKP6jITcwQeDqsYLqap2sr54UUhqJWyM6huYHb5nizP + Ybrv6eKy4nsqNpcDzVXbKDtwAkPBg1//+w74BFfhZt9xevLvUHi1ZqyfUFJzhS7zApd8NKL6vWt/ + nglLopj4dHvDqul4Pm8bNCYKnYqD1oePQeh3x5IHHBZYHQnX1TOmhxzZhHbMERdJWzvjLwmvmU3Q + 47pWLCrFjAKTe5L1vc051i0WeYJCKSLuw/V9Kh41C8D9MKajwQGBOCO3gWVTZkLTAPZQD9obq9Az + 4uJxKPH492vYb8yjcHS7kQkkJJdMILoqEIPfVXLCbDuySnyozquXnhuEXjiC0QscgVi+BhtUhKrH + 4yLQXokkB/eumuKywtFbz8a3G+lvwoiFrMIR0QVht1ijVi+tBHvZZKLAODQWvxUF57nBWMaksFuH + pN//U80RDizWyM5TKzjJEHZ5ns0ehAXBgSpWqVg/u5FsLTt0ao2iAnAd0iNivLGEmGsMR1oCJt71 + TQYf4ciTKIZLrR2RZgHT6rfreIKEM1RkiT9cx9l4Mf+iQrbZaIj/XPCY2a2e0o5C2sdugKtDmk8s + 8Ln5hN8Hl3nb9/ztmWC6dpdvgO5qkfm4Y9q1yuqP6rJBhgE8aR8Qr78+SiuqMT5JmrWe2XD+MLTX + 1g1V0Hm8vnodvAmPLdbF5pTPGNqcqomizSkv0gbJM8vkiGiUnbnVA7b9UhOHwR3HA2u5Z17tKKIJ + z5dptl3fgbyOLhvHyU36ADrrdjTp+TPmJj01UTLp+UWyXeB84ot8oBUejxVJxKNkIRvgD+MbvO/L + fFmAu6m5FzO0/QHK5Na95boimZggROVnxPyulIrN6GgGIvYGr1CqelcGeLuiZ0RQJp++vKwKaIYr + Fzw9O7abShAFUb7pyQJq/jrJ0I8Py5anXUsUMsR2zPMVCBK8WzTheUCK/4T6St/Lnz4c26Qz/tHh + NZY9+fXlhhuFoZbbL5Z1n/wwfSUdOK7Sln7oHDPWLcgrHzLWl7IRXWGKq6Qn55hbQO6exWPZs1H+ + UZeKSEGhJTDTPML628zWCbz7MukTLqgvXmcWwUYqpsoK86rNcEaNUY2iwBMpajpg64FYpoeBD/VS + VuiVZfRCI91JbM8wbn35jlzXIy9veR3tXdEjAEQOEOL6LrmeYeLNYBqad81cIe7bQqt69JR6ZNEx + 6+ge5o8Yq0ZqQFeM/FqxZg1fRXgSPjB/wLX/IlW/FSVx9y+jMKpvEeHL6nG9/dqzksHijtz6TImy + 84mlPQ3QstGj6KJMviXTJrLSfrVcWFVHoiJHnOWzVe0Rycgj3p/Kse3cGFmk3H2vpuueMkPbISLN + HgQFhc6ZyOuQCNJZ9o8wQA+uwOnbylSprSw6C45ZJ5eHfMZYkYomdE1KF0U+4eJsOJkt0jX6s7Am + YZksNCtz5w3FdnjqoNdX6mAfZQm0EaoXMM84NHrQ4CAM/+OC8uz/zc7Ef9M158m08IZYcKfNgtwm + KvPvEMsxIv8mT3SMV6sYhrbuJG1suj+TWL9NlSUoWS6EfWOatktlFOliE98n43vu4u9HcFAVXFm/ + Paj7g1va8R4CR7sfeQ5zLV3e/vpb5YF7Aeg8r5uTQDxjqr9lE5r+FhcbMYU/nt5cScN4Ns82iJdU + ivRqwlFphyI3IrDo1MchiUgRZLBmOBBwFywfEGQrOfGGsxMuYF5x5ojNkGdLISiCOWukA53kSgC5 + fxVzZMqhLVU6FrndeLcVNNB+zbmOS+53OYKyYm9P+3IfX+ThVRC9ABg6oUz8tMOz8WmX1E/+gGny + J0mvpn/y6yL74fIDq8v/ZNX8z8COXG/EAoe7vakIeXm/SMYZbo+IDIREZbVkr7Al56FsBOzSDx33 + MFNggj3EOFTLGL+8SJyYP7TCoXWAQ3Rsl1Xxz7LqG9Rh6VqOr5M9FZEXipJVXsDOFyxh7jQS9Qrp + A5Ox7jbGJ1ougH53SSUMcJrINIAAzmMD0evqAbLuW5qGYnzbr1NIz+qE3nqisX1R+KcNCelQ+Jit + /RDRhkAOwJ6hcJ9YuNomttFw7CWodZunbPeL9504+eh2M4zJ93WcfHRVcPJ9uqjQiTIXPQE6xuTY + DaOAWSM3sjxXYEyeIe7vGhfLp8X8Hrc+eEkyyOUmEgzPBAzglKCwztL7UOLZwN+rGeb0fH66qCEM + ZQFjulIr5CSxwHKiKo5NX5BhPFQ4LndSzyaPWCVxqqaDg7MyoedEjWfaNJ4vYMwQHR4snu29GM2j + EQZSFVTAJgFZnD1LowaVr42p5cU6rru7+eQLxwVIZR4Q3JuJCG2hHotKirK8ugzFx+sNJZXjPMqx + Z4OecsojeaRSY96lpK0tz/nAgjbK1SHtSB3blw76EO1seAR+yiJ5XIp5J6rL1sgG7MuIdCUKtmNZ + XVCw8XZDFGwuuYKCjVdF9dD1pyqADQdjKqNgWz5zo2AEf9q8OhE16gUC446JWvFxIeLYZYbMu/k6 + 2xBQFS3lxXwpWBgFQJao4FmnVUsxDyKWrMRGItQGsOuc/9Ebi3h7fUqs4zYaoLYHSygKehNdtEA9 + Kwit3iRT8quUboe2C3tkucyo+CXqscp8tmsoBodOAdHwACeiUsiBFYoQvdR6+gOtFQm1eCN7SWp3 + xfsUOi/kUh0u1bWFjwdBB/iRHWTivlDrEt0RajIMxvdJUmbMN9YeLnKIx7Ft+hu9xl6C+u9ay8bu + C17Gg3rVB9up3JKYxFRzumGqOeaYak4tppojMdWuLyq02zbW/VUx1ZjjIKYa83xXbEjlRGiCs0s4 + x0oqEdqv7+sot0tPattNGPqlw71WbBmBgRaFNcqbt13njPA8x2+oj2CWCx/CahRnUHfqNdVeNMmu + UoKUqkSaill0gbW0QeoTbOYP20WJtSIKShtXAYesOKp5scausgzm73z5CnGQ7KIchtFwNr+fLR41 + OoDlnQOT5jaFQyGfQLyklV8d8lMQaJ5SyEmffBlXA1gOi+7eZSmJU74Xd7VxXqKsWGHLET6r3//F + u39+PuJyswEumxwFLQr6ONHsSKzdnVEf+gTKrhFl79sbnCx8b2ybXaaeqj7DhKZVGA1deSahvFZ+ + IIPiCZt52lzbG9gLNRjVc2zv43WOwJg9Phws1xObd76UdlYLm9SNELdUWeObPGzbwmuQbW8znpCW + w673Xc3s2gpp3X7D7GNmdYRal08ZY62rZnSwdXmZNvxksxKJF7LzqC84F7h6zxdXHy7Ph4yFLrNt + 92igu2f5Yroc/h/7bTK2QeHTgHB2rzcg/Lcio4jkE5mkxFI4PEu/M28knEiDCf6L16+EjkRi9zXf + i3QVNPNstHuJgpBb+LMEA3J9V1kfqvFDjwoi9mQYMe0nludSAZ784gVXDG/OxL7fQ8ozDTvsyV7y + CyWLDGXSgWN5FVGmL10t4GERFSCWMrL3gr2kRBacRntn1lmRRVtMsyYzmlJ7iHnSPD1pNDGx0+Eo + jbPt4m67Hk7A7MI9aW+J3NNgc5mw2QxNxRonhO3fROtmmtOWuGdRx6SX/CHjrVQ2ou+k4qqsJVyK + sH6Giablck1+6QbuGTxMkwj3ONt3mUhxIdOa11VOHiedMXD3K/7bNwnEYYy0iHip7jkgvRUu94NB + Z1Q0bJ6GdmgJsuuque2cO8esE9Zs/pDx3JaN6HNbXKUZHS9Ws3iMPuZyyZf+i6SdOI1n9iDG/6At + 51k0z0GxKlLZ4QMWLjd7V82HOwq8yiH3UPrbngrIrMgmzV/ExuZv/w0BFdq8yx2Mi0IRmXx/g2K6 + 1h3LFamUObIp1nrQ7OO5j63yc0OBVAwL1Vfn733Ax+4GzVlrL/aB2mBFIWV3JN9hC1vyvk45rshO + scbvurPavmKPHWhoOkzQkRAHTDLd05XRX+GK5/ER0HVMD5nCXQXv2D16gmzvrTAEBEVhvaARgc7c + D+FmyVo0vAXLvauGcJgv3nqz9wv3VcDieoKNjFlBFzYyvN2QjYxLrrCR4VUy/v78/Q8O6qmzkQUY + TiyxkbmhY0En4A/HFzCgkh5Qo2SFFf91/hUDihvuEB9ukocVerC362Q43fKcnUxEHaGzMJEzmfX5 + 58MaevZtNehN8MkQhlwXc79Ov21mOI+WKX4p9KpxVxvfiJbDLN2uYfzBxLhQAEhuwJyBoh50fYGw + 63QhkaPbDRF2nRoSObpKn+3t9RungrAbeUEZYfcl48lebMSwLCUQmCFvYX7yDUhguI3or0nGdwPo + EmrR8W26XU7pZAt9THk8Y7vaxF8S1OAFv2Kmw3ryOATX8ov0Gz2/SL4mC5mx8XadOHWgaFUfQQl+ + tRF0LLD9KAgrPEKdgnOFLAXGbCtw3XK4646P2ngySziw97qKgKcji0VOQ38d5kSuV04cVi6EFlIf + Per15qqYrsEsx2WubdWIHdNnFa7M2oQ+5oVRUyqyHN/BT5o3A5ztCsM5Elkez6MmTvf+7C8oUAdp + brbWToaqzHz0VvEGDTq5keLX5CfdwneZr9t72BBn6stdKv0qHigmfIR71AV0TjeUt07RsyczpZ+B + d/TneiB/AFhoX/aWnHuWT3UGb0/P97TYeMnan3+7ttzIPPeSbjfa+oXk0tZPV2nr/+PzdSX30uam + fHHrt1+NPRvN6ZFnh04kDLYCww7PU78rKXSxQ/+xWfeeU1mQJH12OvSp08To15Sb+fH0/GUlA0oH + QPUaMxFhhOBjlvdgEFmBNsOEjWlSvlrcOiM/KNMF7min+15/oVLrQx+p9vx/DU4/X42hw+/EGJxo + PYfpyJNO8I3wDfDGExomnnMSD2fJ9/gBKSCT5QyrdSjnUg1keledHS/AdGOrowFOQbkfg01q8f04 + IMghaOjqkJTL/XbC5ly5fhCk94I/65ZEORAzVgxidWobNdpNQj8+6hZcy+eTqSi3EjugWFRh5RgO + sdwCQrUFdMh1pNuNt4BqriNdFeVMf57VbQFheQt4CVsAHAthC/C9IBTlTHlOw2SEaE6IJjhkJ9Wd + X9Tr7IaJ4eln8tNkSlBGQ7i9ncPpG87aybiQTzEpWwZg/VR+xuviYF8AAKUUA/5JqcDqcdJaK9rQ + a30X88IGDR6Bvg2YX958mu0kLVHRakyqDH2buVEZVbrGxta2BcbCHfIGf6EPPMCJnm80sI74GNg1 + 1afVgRupji0qbZttRcyuSa6oa0iTDW2l3x8x88xwwzvoHPvXSmapScqophR1lbo32lX9i+4t7qmP + cL3gUD/PTBQb60N4YCB52DPk3pvPPlKgU3YYHbOOQND0jDHolGhCB52ii+JENwX9Ch/74xhn4Bwj + etMUa/AVPom4Q5OHiKZRZIkkDlJAvLb2C7z6BjPHS5D++8WrHMfzdMLmYhI2PFlvhVe8WuTwodCX + 1s3uPRv0NxO8nOXHP3U649fIh8xBbkUjJZBbukqG4XIa2zQvNtvb7QJzeXiocMiOBvKKuDDAewna + 1ie4b9hLhP6dwNTBuxPDSVEF/YJJFZRkjfFNpnvmI4C8sF7eQ/pVJkZ3SiCzPQ3bHPMEsBS9acq3 + OCKJxrs4ar+ZsTDUPtgllHkwps2PIGLosoMxCv8WVq5ANNhfpE3mUUEkAhBs5put5O5oUijVWb0r + Q6r7EwbbVhTaxY88S5BhajovTNbmoWmpIveY5IsIXwfHLOikvOQzpnwRsgmNL0JcFOBbbz6efn53 + KTavgXBlEeru6nEN+nuKFbh0YNdkIuaWjRRraHbYNp9Am9kcC2z7TpPfT3zPXqXDQPV/bGFvrus6 + wlaHEW3R7fOgF6zVQ1tqd1w9F/eXXPW8lufP1+8tt0PqAt1u5LwSkkvOK7oqsSPelLF4WOQ6ll6o + 6756yVxmM3sEf0SOQKu2rRtShDFVuUPrlJsoiUwkJkRShdwpPDdBFg0FNkMkYW+2X+BN4qNSloCO + K6bVhYIV6QYVDrUGlGKtMpYFzdWmRanKLUSejM18Oc4B+tSuL1IaS4EZ32NsVyOD1zCAQ1+NnnAI + 6aM8wA+miFSZQyWiguLcpGP75qDu3cYu8q0nVqCHacIdT5ObpWkud1MrURC4LdJGtL7k5OiEddOf + iYqLhXsSGtG/DZi+7Ejs24K0g5TGswIUPzyJUqp4R2Ix+B1UPN1uisXgV1U8XSUV/+bj5yo8kOVE + FSwGeOmAeSPmR1Yg4NberDJY6UUiw2ERrRC/GV8784zHNYmKcBVvJrMCTin8IDVyvIAL6IWG8y7M + CB72frPkUA5okMOQLGKYFyDk6zxGiDHxT4WxKNwpD3A8usPUwzPhadnKfDaQVo0/UL9gOW340qAO + iq3m7XZ5P9c2Gsdyg0asN1CEtu1VNhrV7xqkCMeyg0akCNv1GSjBWo7OUofViGqZbcwNGjLFmOW6 + kWuVoxr78n/ullycDiV4up19HPxCU22AS0rhNMBqGogPgbqh/dNVlEcjCKcsDSi8d8cd20RCIx2b + Gblou7AemIQOLUbApdz4VXZbJ3048UObCK8X89W+pGVcg/BRLKsZkx3XtUOqmMLlJ97/AMQ7TxWW + sbfOsWV3qysTz5iWlckmtKoycZG2t4cvM4E88OHN7/JoR1ADEYsiO/SPBsVf4O+/Hw0/4FOlu1AS + r6gEI2cgHHL88384vfr999/BvM0m8dQwNNVepbZMl+PdlpIV5cEA6H63h38IX+QhjexQXqFOL5Gl + U1kWU8o9MhyOiFhXijGPNEPlPmmMfTQrx7yujWrRuulF5cFyiQap2KcZIt6bSnCsKGe3qFaybZd3 + 6WJKbn5RwSEa2vuL9xlEsiLCqbgV0UgsBDauv9vTddbF9ZXvIXZeetihkx6zC7V3m/lqt6ettxCA + 6weao/pAxDw/0A6OGYL9Jr/ltIsHig+o9g30rJSk/9HxgNlF3I8O6XsexWZO+6oS3y3t1/KJesq6 + cC6CY2Z1sy7oGWPrQjShWxd0UURu8YUm6/mKv61AGypWru+8odgOGhehLSL9h1Atu54rcdTuJeex + hM5WnTF36zxN7MN8Fu/lBDRG6jfux/64/3LyKg4037eOmdMtB0E8Y5qCIJvQMhDERYElkt0K07hM + 5SDm6WnB7y4ci+xImcWMOVYg/xkGlh26ztGgUZSiL8dW22Ws4ymRqjHmhWRqC8DZTbIgPptW5oqW + BPNugposM5DCZ+Q03d4q2oXh7TqJv+DLx/M19xoIoIoU5iysD/gIoEQPtahNyTeehr2jICWqkTIa + 5jDToG8QHhgmJ4zzQW8cskJTOLY7X5amTCio7NaC0mkkvzq3gu8P+xC/pE7Mn/btuklQWfdPamzv + fuyXYIx/RnQwPTmk+iAg7S1xT/HOgZXEjq2Om6Z8yDhxTzaiJ+6Jq7RbLlIYOXmaXyXr9Psc1EsR + k65o4NXeQOAnKu1zlXzniZ4uaC2BSOnb2peEnt4nG0GKokQehBfo6Ul1c468ihNCa2BvQvWDoOlp + RbW9577P7QgYB6EmoBVo8KmhGSWEhRfKJQDHg2PL77YCxDOmC0A2oc1/cVECz6nXXs3i5UAyBU4T + OHlvCOVG7h/C6BsNr//52ZbkjGUWXdkkzn8/jITBJ3xo6fLfW8HCyGM0yrEkGIEOWQAUrK70X9pD + 7Z5D8sdQpmvbEOwUlBuVhFadc0d23dR/ikWiZmkk8HHAhu+Cj4O3G+LjcMkVfBy8qvBxgio+TuRa + FXyc0AlZ6I9CzKwXyflv0/VDVszYpPn255dtaK2GxMsVZ8PftyMZIMy5QhP8Nx4B5pkWleSHC/gf + 6u0lyEfgAHnwWCTLe5CPT8lxBQsVneTT6Zx/V1TEMUak5quYq35O1JggMM6DOtNzftFNYdJg9Zdo + Y7xCNfZAfH+JDIHDGwVWJQbOJwDyNCtBWhg5iKzGBCUwgJBgrEliPaSL7zSWYVu+EwYy5l0jMLfi + 6WvVd9mDM1pjVN0KMXpSjtJfN/FKwqGxkSUnCjyYZGVR0/ghvk/aqCrDxt5pA6qi54UvLKLFv03n + WW3Q33ecxv4yz3MCVuZcqOOr1SW6dkliEc4m8mBdWeUshX1Px/rE079iMTeAgQ4PK5xHO1oFXVxo + GBbu+N8pLVD9fa3GEbQiC1r1Ss3WOhRKb+I0ZjmANrKi6F+DGz25L5/pv29zXwwt4DFppqORpnHK + 6qXQm1GuZ7jWUbeu0owUTnJ3BxvECQwXmrgbYtaD3xJ+mtcHFpfiV5jiXEuhItwk1bEdyrEVdaPn + N6/FtxhwXa0gu0Iis3im3pmWhgKDhviFsYRManW6tHiuTPwg7T4bmNMGvW3+iEYGRf+t7Hgpyuir + akc0WIoK0rD3biN/t5mAiEJhxbAnfjHaD1o4THakqVDcr4FWXNgA/Jd7gf+K773ZmDlH93eXtX4b + NBqUbamZFr8Z1Vwd6OKi6LFsPFl+hbdZmZ4kfSKyLNh4XU+StltsvtlmMRuLiA7ryCddTawWwbm9 + Eotdx/N5T3+HTeXV77ClmDn/+iJCJqaMOnPJaGCMmOhqsVcOp7CzSNMhtE/+TfANZglq+AMiyW7I + v/ZPKC0XhznfkqUnjmMOnUW3m5aeoORq6QlclZz3r8t5yVh6EpZLT8bMQziNEfMi3xO4KW81Mkq0 + pJBs8W4Rfy0WgmGUAk5Ws284KwST/e0vgKWF4P1pTea5BnNlOzpIik4X6nKg0fIRA6TwUrnXdjNj + KAhmDWas5/g+3PGvARZQljp5eXnSTBgqrN0d32iAMyKvbbGjgegO329rnt2f+HNvqQ2Womu7kVM2 + C6brbc2irE2S/UGIVj1WGDuqkrYyEX52fs1hNb49hUf6g+HGlU7fuV4rdDhj9JUJLMX1FALyibD0 + 4r1tu+abEd1utBkJyaXNiK7SZnRzXi2SYTbTgbed6NU4CBF3OwhDT9K0bFc8uTHlEE5TLF0XnrvP + by8vb8TGczOtKUuRru782nC7JEdkUSOHjs7d+fG8vGGo9dxY5RjaXtm/k7tZIsetuqMKVbc4iAqx + r1zZaFtlXtWK4MFVLqvY1ZNh+hW+R54cKsdS7CD++PQPzrw5z2EQ9RQnMLqX91po+2Z8eTlCP+43 + TLqM8egPW8yGOxgw5RfkrovvNgWb/WuMQIzZACeBAriCdTcQ78eVUsNwdN8rDsdA7JUeAWeGtid0 + xuDzqYz5I9h2HQIDdLvR8hWSS8uXrtLy/Xj2hllVDHY7KiHn+69eepi97Y3g/OYwwTj87nGV0sYP + WuzT9VvpR18uoIVvT7dsBZwGSJLXagWhKVcnSC1VMF0W6T32Xl6rlYNHmpKcwUB56CIMTMtYj+/I + iGQQ+MdWN1glesQ0Hika0MKRdE0ksSUT27EEkE4R0YRCJnL/KsYcm++6QWG3JU4tuDS+pWw0Ab5z + OJw5JX7r/MAq1F8rtQpXso8Uo75xc+LNNerDi3RxPx+C8pvD6h8/wKhwPOIW4R1oLA9rqNUo8ixH + I/TcV47PCJq9r445lkv+yjfX4wK+c4cqfKO8C7BBeDoUjeqe7ENPderY4TfrxL20S1bULGvfUQnI + M0hDG69WMZKadPZO7lFocnCtI6NoxdmnKziEiRk9nKR1BUXG9T5dhLb2jrl5MZv8WFKcod2D42pF + vjjeFVR82gZl2KGYog8aQPPjozkqzrNK2PN5/eefp2B++eanNbrdyNwTkkvmHl0VkMvnZyyq+A55 + /Kx4XHPguObBe48Cn8njGk2ckTrNZpQFgo4gjAJko+EszorfAPauf4IBvwIVAM+q6nA5Sc6vL6S5 + GIO56E9Wgw+wfHNAX7xB5EXBlRoR2Um5M3zvWZDlojrGQ7r8588PseuvBtevL3JvGRiqCKZo21Sd + J59qJQfEsU2+wb/Qjt3SN0ZCJ/gPHPkzckwRvK9ugnRVqD8U5ernMIM+jUtKrjhiJvv0nrkdnPV0 + uxnFFUkuU1zxq8pZ71aOV64dlSmuxp7rRc4Ixk2a7LlTWCsdmD8IUwvGFg5B64yoiXKHLBziF1ma + 52W93z7E/8Hj9w2Kyekxrue37vN36YMOGmPSGeKZjcMxvCboFlhO4p0y+U717FVRyceCvv6cwSrw + vMjz/Cfy9b+v9PGF4cuUv+D5h+v36sejYrig28zAOIEig/PgJPALxAl+lJdfddwR9YF5x9X32wOZ + NCInWOdZ3ME3bbkCcbyuyz+9LNX3FZuyd8GsYyvsxqYsHjJmU5aN6GzK4mqhNFUkM8+X88286Acd + tP46TC7fcjdI6B7p7WGFqiWwqH2X2Wr09kNxcJlTksC3SNWdA7wLnUW3Ie3/KCwBBM7mY5pwgEOO + PtH+pZzm5WrkKeizDsoko8K82Pbg/AwncMtToGYAa9d71dl2gLDdyiMUFKWWH3aw3/jthhSlXHKF + ohSvkv3299MPrJI57/qYDFcy4FzPCQNr5CIOjsic/z+nt5Tc/q+/x5NtCgf2DxzQZpHey8SKv8cP + rJpz/pXf3pgiHgS6GXWWJ10HbugEwVM5zL+K16ASkxGv34i3sPpn8T18wIIsHITG/GTZS8WQW0zU + lW1o2D+c9CvDlL54OUziNRwKZYIEZkuCpYBeEa13xPcyz3TeXHnPJsGAFqydAf/CuVUU0XkQes/d + m+0vbGa+wFQuyup6CgwKPSlOifZ1afacgSlwWImWr4gmHP910LlGSz5kGhRRjWhhEXm1vkyr/G9N + DpZeKY6JvZAnni9Gdo9g1+JrBzmZROC43Yw99YxxRapoQi9IpYv0pW8+n34YFpERBzVXCpJ4nann + /bRQ1g8L3zjMIdrWOJuk+LzAkgWx/F+FSqoOJ5G+MK6k39VxbK0QVyv1ldpUFFB0g1fGRHv0MX74 + ++s80dE0Zc1zKIOA82djCIU7DAtd6sBO/KOPt16Q454dViZtIKqfcFFfRwiGAQGtwz+FMdlBtyQ+ + 8ubm7PrzuCWpvM41qhQtU4rWPQuPWcdtVT5krGplI7quFVfJUr5NNwI0p2jN3a/Tb5sZr5UaThPB + 7sSH48XpW8ezg8gfnkFTSzCqhlfHI2gXLMbhP+Bvf6bb4Qf48+/JepoM3x6Dybra3i7m2QzTD0r8 + auS3L+TlKVQdx9PSFrCbxBwV+sS2YRHuS5ys01seCC1QMxrqBNv2LVHdUoSVqsewNJLowF5Uw9vX + 6lJoFBUR6ZTeOYHsas6X1aQPQ4cQ7nXWvOkctMf8dmsm62DiPr9msLIHhJjMp4aiVzBTMeQCUxEh + c2vPCSjJN2tk62kWulP9SgVgK7g3PwyO7U7oH/lDxoBvshEd8U1cpWU/hT043WY19nThefSTOZY9 + GOz5xZUCFPjw157VwTVAt5vhw5PkMj48v0oK7+LjVRUfPkDGMB0ffsxc33ddNoI/Q9cR4Z3Z/H42 + ju/u0FfyOLxfbHnUIUGEjYckj9JcLFfV/Fe+4ccNzgGwO7Vz902hftoHAzesxFiK4LOy9draCc/x + oqb4Dby6Y4UVz0NBtjKLGnhmmceCRqZzres5JHuN9BKCut9STU8iB+92fAoRj1EtZMP3yXY0vEnW + o+HnGfzn7DEbDT8kGx5qPs2WJ0WjFpT+3RYx1XPDFK5erNdsxe9/SKeolekQj0bpTfbIVuOrzdpZ + jeHv3mr44ubq5ogn9FKydPK9eKbIByEb4JxUAOsR8/s5yZDBUjvYRrq0m4Q2f/NPZHY90O7Dx5k4 + ECb3qNPB4NnThGSRX8Mx29VDI1Zc3YdRomrXrJG13ZPo9tMwo+Kh94jnsZhLoR2bqDnQyk3GVVb2 + edARsV09Y2xjiyZ0E5suiozeyZo1o6vWI6rewDMDfJA7N+DIRs4Nx8tVQkfcU7WoHSLHbUFSHZXK + crvNctsjKMVslUzmdzLgk78gCuBAikR6KWqoBOSCabJNb8k6zwXA8NfG+wusmnlZE0MyA44Cca42 + g6rTZWdLP7wArq90w4CSn66umdWhOIxuN7KQheSShUxXSWG9ffe+YiF7jq9nG7rhq3HgwNVoFDg+ + T41CFXfFE+u+JvoX4lTqXN+kAoZKzzhEfVPioQGldL6GtbCawX3o2PwyS+LpiR4WWhMiKzcr+Uhz + 4/vtbFE1vo0Sm1RELmS+61dpj9qnnQ6xZFmlOFoxh0mTr+zi8uvoCD5+U2CuXliN2r0CzXJZVLZ6 + A6FTyroqNzD4XPqoeT7yIR91eLvFkiKuE+A5fIYrI85VBOuk/aOfgKmekiUeZ8N4qBcoZghOgz0Q + H2u1XrkDnODS3Pbh+POr7K18EvAGyvPetBYPBPg1mrrrntwsPnRMxbfJb8R0aQFg6SEy9yThvLzH + aS1QTh0FBxh9fCKd/XF92dHTbLqh12KI/DhL4AcnJTPf82tmpkk9RZP/VAYEpIU4VubK3nj6gZ9T + TcEBIupKNcWfMaeaoiZKVFP8Iu3l8WIBb54S9EvRGd/4Q1EuFhi6LiP0U5tc2fLBfirD5ATZS3q7 + nhV5JCuMUppXQO+QSTNQyCzk6u9dGL23Tut62nAtCltqH76HEqSOcn8IhWmQA3S/CY/R593FecAf + MfYdUAO664BfowUo3CPj9XwyU5kPKmQuy2zEDyOZG1YUzSGIvUDkt/oaq9FDOkV1RYO4x8zrVtlY + 79573sWRz8B3qAInCjMbpLrHFus2LekZ43kpmtAnJl0UBCt/vHVsZ5BtF3fwIGpHnEyPBUObIeom + WuWaRIzgwlZ8wHw01i0HEQ71yfv2K2aRdVuYT0dr4XnEbQZW3UTyIe6fiy3XUqTMLPbGObbCjnaW + eMjY0JKN6JaWuEoul0m6rsnC4IkIq1Rkt988TLyxr44D6Eu7+XCmwuMfs8QfoBxueXnMpkV2OMoq + K/DrtMLKtsvZF0i08az5FMikbugGgqOywCKTrr+QlprUv3jDcfVnLPzDcT4P0hyOFdFhjU9W+I9v + jr7ZxzkPEb+cohBMM+fo9zI/ptkobIGPDAk+8vf3VuT/Y3xq7JaVDxg5ZpX0kmtWXhe14P+4ssvO + WTvwHN0567x6aXthGIUj24sYhgpQtzzE/wbVWEpqwdh1zuwKP0qA/4uryzHxuowwdeERnWtrTJTE + NC3o9Hwx/w/P6iwKGA0X6bfh6l0Rh0p+C/LOnn1b2bUYQ9SBRpp6K7KDxnJWFnl+4FbSGJpTefIG + NYcwi5oyJYLAD0MrKOPM11PicojovBRdp5l3y29RBLKsb0Z3KMLo6skSodfguGUMjKAgCP81OEu/ + xgiqDOcFOFJ8gTmfd/0Bl7E6ReyeJCfm0wFr/fP9rDI1Tgo1rzBO+YwDsxEnunTS4ucdiFcl7Vwa + DxOVrAzDjnTGVT1FoTc9nWMvRGnPZ6HelY7Pi2z1cmZRNym4sPARWDf38ULgbTf36AmgXJhNkAHy + 4+9zUBLLl7vkDJZ962tJtc/yKth37NjyOhbB8mfMa2CpiVIJLL8oqN+TrQyz4aEGp3fhxLFdiVUB + a6ecy8ef5El8gW0fWhSzqy6q/qS/f9r4MzqFh7ZA7mRRYA79R7cbIndyyRXkTrxKk+DD+U0F+I/Z + Lisjd76Ei4HFRgzzyURh44fJFzY8h9kL9vFNHiZzTobL5J7CtnmYFhPWeMWenGuoUosTjrbzD9PM + 6RuPov8KSEwnkjtG4UGELyvvnRoPjBM6VuDnFY88zBkvhx/HIid+MfySLCazMS9OoignWEsyCL7H + sObBzhG1dvUwZasRj3yKrPztcoqZUYsvMU+eAhVHBEvZACdHjujpewcTL/MB4iq1MIDQ0+1CEjhp + 5E1x7i+hgqRuhy+b0ZGuPGxCel99aDqu/VjgnsLz+2ZThwq20g+9Y8vvRr/MHzFmX6YGdPJlfo3U + 0nqVWdI56Fo3NZUdN9bwxcq1jgZNP5+K31EUwVO6rhEwQw2U5KFQDi6cqYrIUqosQXpb2oCm6qvF + fkCyWo+wDXtVUcgd1xNw6S2VHDuzwEyEmHfJtn3SgmIY0J+517s5lmcrpBmK4al6xc44M33E2/ev + WXly0o1Q5eHa3Ylu7U40t3YNya1doLgVPmA0/Yr7LR1LZwnsHukqnfNdIYNpCG8Nt81Ro+BazehV + Pzwmi3T6mKGWxztvHkFZw9AOzv9463mlcFyxWzyHN3RE9cyP8wqqfYJyCv/23nJ9c7OVbjcyW4Xk + ktlKVwWg2ufPzKpkFYLd6umOK/vVS8cDO8AfOR78H2tHrP73Alr4L0GsxtNHz2Hc3AFA6FlS5GK+ + Sh87bZuDfuk2+gJ79zwSdLovO0YfkFpKVEgmxWJ+v392QuiLE6gV2l1OoHi74QmUS66cQPGq4I44 + +7PKHeFgCk7pBIpMz3Y4QjSRYAf0/P0C5Ncs5OeGa/isFILlWQfsKB3pdOT8C0R6umWzLunpeLth + ejqXXElPx6s0/04vzqrp6XYQVtLTfVSW7sjHaL7IqPlQLcumQqMRIRXdpni+R9c21RMiVgRYm7IY + aUk5xgjviEzG8Os4vy/5DkOxvE/WutN7iSnMYE0UGEVGw3QNl2cKRBDPESMuHr3nYOWiZNXG8OPp + +bthNttuNgtZYHp6P6nmuOuFZfPlMmmEonL1XO9itWmENm6FAPh9oT8GJaFhI92s6+O2XyM/H8ld + 8i0wDMzkqwVX2329zyGzusqs6XJZ5s5+DvQ5WV95+0OnJxekrvP5taWAlpqsA1yEKoXetr0fX7Ha + fgIVXan76EY+Z/xyeGf9NzYR4bo2lVK2jGR3TNWfWkvL9UZJRlXRdPbO/2znPr6YTcfdw6tbuW6q + nTmHV+ceTKTZIZlqRwVvKN6xtMD6qEC2iaKkoNe6Pk85xctNNwHSwiH0yvfXVpcCPLrdyMIRkksW + Dl0V9E6fzioxHsdySuCVnCo0iBwHqUI9y223sBdrkD+pmAy166a4heECazQVQj8C47O2Sq51+4bV + ZiRTL2argYkobdk1cgaqIrEcJFegGdDKKs0o6nybaLvjJF7fpt8fF7LCdrvaxF+Ibn6dSBcSB4CY + c/CJE3RPZtBbWBBY7HZ7Z69++5DespUgNT4pVaDMYb9ewEBhc3clvTp9zNQpI51gmsTg87vLII/w + RJE76CcV+zmoYbn+IknVawWdqHrhdlOqXpRcpeqFq+KE+/60hqrXdytUvTazvSgY2cx3pKvqsjB7 + cur2O9j817QmqwBOI5l1lQ2d4c07R8QRswprx+skgYkkGBYXcfUAIGTLplbxZjJrzqhyLDdoBIax + fA/MukoFbN7vGjJNzblmRToDIxbAXl3ukl8SORrerufT+5Jwx/JLULoFwQx0YRiGZciZupFR30c7 + czM9Qevz6U19p0uy7+aLmMcvtGwiPfWrpPbahqTPFLMChm99G6g4+JctSfLDqCxppI+1a/lWGd6H + ZywPb7fTyqQImN1EwKB6Njhrm2Ly31pFcHGd8fSz5rVWIZ+RrDQq1gyN0GPTxyXo9Akx0RRuKzRc + GLcTuIC2veDnlr4YfJZ/QexT8v2E0+1oq3yA2iangSZ6B5yE3IhpnbYmcTT+DeXmIL9x13OZgYSm + NG2c9Pmb1C8So/fYnbZnIIPRNnU7pzmqArEwWQnsMOMjsVPgL1vXcRj4Z+jlQVSJPthVRB8Zi17k + 5HmTtLLMzBzr54KJEsxgEOUL4ifyNOEOrX/Nen7sncuKb8c13Sls3l065sIBmg9uXuloVMUu7MfI + EhCDsNq7QAzi7YYQg1xyBWIQr5L9eP7ptMIeZdmBX4EYhNUQ2s4IbF4nEuDXf07XIGgizTz+T2uy + Glyli0fCt4OvsXlcFAJSJ+ISfJWMYyzw+7Lhi+T4/hiT0eCcMoErI0TUWROrs/z7MjkivyFC5cVg + uX8BOcXHN+vHFQHrjbhyf1xwOhx+5ehk+ABrq3RmKpXYL6e/wZwR9UeypmZwdZpverYbCAgOygJO + MJ0cAWPFTjHEfXKTLHkxAZrSCvYhXk9mcyzL2dbleT0ZIXX38MmhCpyKsD1SHIWvNPw4rkyHjj4l + lxHWxHTel8SetFPIlUC37rQDPbnSFOlDXI9sSxHPM//zwzWLIvOgLt1upLKE5JLKoquirOj9x0pQ + zQm9UnaG9+ql79u+64x837VDEdSVVSC0Gz8iw+nN59Prz7LgZ7GsnlS7R3YZTAjmHR7Z1eQUD7aT + RS0MPfltChm8tREv33PC8qmxrYaHmhs2NldPjGfp53VsZHDBpLCiEi5BEMmaHP51TiTuCcyus+nE + DqVzCr02ApSHPwKi4coNrFP+I85znmh8QiD68LPCPCnkhdM7ZQiXWgsDI/LkkHv0w+u3wxc33+b+ + avzhdsVWtBfd5Ffhv+7qaICzUzG3h4znwcB5IMptwEdzXl2xfj2wMpgSMJ3jqjDPd/lRYfdD1anU + MLZMxXPf+p1x58Uzpsl4sgktG09cJI2Rfp9Psc5nO0HwgMGb62HhCrzim3XK4kEC/yUAzMhiIhPY + C4pDcZcuKkNRlw3sa09tZvN0MZ7OEb0Ak5RkZLQ6oi1VZPsL3XHWPiiGatsRATDJmwqCoD91SFk/ + AgZBLjmPMS4Ov7bM4+efvNvC+2sgjzT069mgmHTSPe35hRbh4qlJOYnXoDn2BxC2HK1X+arTFcte + xJzMdyMmJ6mRrPbB94M2aSPyA9zjbokvseVVPltOkTZNl+kadsn89TC7YzJJVqTcumx2lk90GW9P + z/fDJoscGZaxLXMblW43Dcug5GpYBq6KHOK3n2vCMh4rh2VeMjhU+/6Ihbhz0I4D9lI6RVbx4d1i + vlpxe6aOaI4qRtKJMp0+xEvvYjH5GE/s8dXV+Dxd0Fhxk0pu4pg2jt8HlCJeh7WaLDnyyDSR5hfs + cfn6Iybnu03VLt6x8HVjOWyM3rDQCjwvLBu5cNi9l1s+7+/uRC6vMZSgtaHM3I9jUV9+v3icpNlj + tegOts6wo9DGfuudDYJyyKkid/Amy2Cg58JK4rHKPCKs9vKfNTMQCRUahrXHf5Jz9YT7MmTAWCKc + krFT2G2RVnH7EMO26zmqDgFXTR5eENwCbqgZL4WMq4bvZ+xc6SEJjO+A8Ob7539ZoU+JSjx+j4hw + O/K3Wo0g1yZMET4ihX6pyWCyu+xhuPxwvLO9hbbtpj8/scDiSVl1s+qQLC+P9yvb3sfrVxxzEFP8 + sseHg+TiXLP1uTYuzDURmzTOZYpc2rSv7agD3Q7dbrZpk+Typs2vinr10/dOddcOAq+STBFathcG + o9ByXZlMcRWvc/gRUV4HIwGHbRR7MpQ7G9fmwxs7DM9OhkjRs3jkyD+L9D6Fm2HOwP0+o3HSOjsq + /xKvF9ltspZxdczlwbDv3z4wOIRy98TZa8YoWRseZZ/pUbpvSD5aKoyPF05Niracu3dyneh+K1v3 + W+UJTXAMjpzAqhD1LFazGDMNQVfDQ60zUc+g9myTlvIkB72hhows+JbBDrEw2RabNCvy9OikSg/i + 9+IqfdHYfLI+OhmSdaeC7zg59Plywgc+WcvJxOxSvqIAKIetNVmLQj6sOMfVXWwrK885GOqUtCQs + Rf7KYibwyTjgs1/tvp7FPVdwTKcsWvGiByPLHrjl9rlZep4V5pm01XRQc539XHaOPjODn2TPsO0w + EnJF6uFY517pg7tHbig5QnVw4R9bXkfoRPGQMXSibESHThRX5clOhPJh40snc04EIO3aIjb19YzT + DsyXY1vuDXobCI/jsogcjR6RI3bjp60MpTEw5oFLuC+C4Z/N3btzvAxDrx3YcJ86oebHEfPuQ1cv + k26jQCRNOMzpkjSBtxsmTXDJlaQJvEqG4tXl6yovo4dme5mX0Qojm9kjZkWWFYjCvqtZmoGFsJlP + H2GJg42wSRcvnKPxSlwvlCJz6+xqfls1znRqaN3XEjQWhzHP9hmzKoFJ+hJxoTKmGdsQ2V6N5OeW + X7788rLt+8bQoRu6tlEDeRankKraqThykFShOVwrhA6uLz9eEKZcns8jeiqMMTHimK8JRnVl2LIR + /3awqez6xid5InU8fPvn398MwaS8h82OrLsBTjGVdBLYrEdN326KeHqsqDSkrSe5gZgdeFcRoE+u + 867xhUOVDN+m9IVi2PI++qnwtJs/He9dbWb9/Pw/XIn6hGtav2bj2kuEpp+UnV6I1A7ESZCOFNsm + MIo6pTF06vYFk5rOnkjeogKaf+h0A5ZUz5ij+VMTJTR/flHwUorqJf3IXbCdd95QbAcD9sznGP/M + CwXBh/50V+s2IuuWgEVuuc+A/o6+gFERcISXLhc5EX/YOdbIdrUYFeESDubeXtr9wTTNH+4njdvU + /H0ep30wWixPn2m909/CcZ2SWPYRbEpxEAmKg7Mz2PG76Rf5iJl6UQ0UtIu8Rsrl5vTMuTj9uBL4 + WAMYWuRuS77zZSRIcAuCkCLE82W+j0XYlcgeJ5/AcTicr9X3mXZi7kf6T4P9d/Jpi4O7/Jos0pWp + aWb89I5OkBtRiqkH3/xxR/NOXCO0bnyLigcu31tBh+Jvut3oHCwkl87BdFUUn765dirV3zZjevWA + y16N4aoVhCPbtnk4FxebNGxSjB8l3JE7TaSnke+bhKn1H3gdHmCer7MNQt6t0JmdJZyaDPdQfJ5T + nxVAPzjT5n/g/fDgdpOsHVWLCn9/QhDg9ldqOO/6rDHHwPYwFuGWIYLp5YXzvxARLw6BTkhgBWWO + 10obgx/8RQZ8+ijcfMeheL9HmHHvx0KgGQJJe9TgwCoKJccnOXUjvn/v8NvgI7u/aicMFmUd9pTI + 2DkZuDdoPFwg+flo9+L6wdKb0ksORUDpg0q03/xALwoq03+vY7PP/JZuFRMNUc+cvRt/elfNNfx4 + eo47M/xxtX+2IbLwENoxutGocvkQUp9Q0EROUlFCsNcIecymrKePe+ZA+hZTgLbeO/uYsY6QtuIh + Y1Bb2YgOayuu0oZ/i+UaIngtM77qrmny8ITuWiGZ2I4opVVFdesEnk4WO/PqYeqSS282zzapKkxs + 8Gma2n2u51JdRwuJdkO/6IBN+vHm9OK0GZHZnFrWiHG6WnLw40F+4QDMTddP16B8zU1Xut3IdBWS + S6YrXRV1r6+vvLLl6vp4ri9arsGrMTIDe9HIZR7s0zSRzwoZk+dvvp//9m58m37Pj2cqbRNzMbHI + 9cXp0cth4VxIpuj57co73BKFAyiskLC+1kwebfTEnRKgYhHWA9RhFFSQTrDrs2RR4rwtCnUCu1zF + Niok1FAny1RReFQeyxkkhkZPvrX8NsYL8eaD4vc4/XxViIpoHRchnPM3p+f8ewlDq1iKVjm8F/Ax + dCzCIly/4NfgMxznlTRpPS+w93MNtBbzFJI8qAPoQsq70E3a8wjme8yiYD4foj2F+J5l1RAXaF07 + JMvn53hLTBwVPYhoC5b8LLaRUDCbgwY1Dt4dTO8V+ZqDaY+oWW/Y4lYoiThELGiWfI+/zLP9AkJI + 4ZD3S8Yc9uVyoLTA6wPYIMj4qd9ajN7Hdcixb/D40yKvW3CE8IWEwuZzYL/6Yon3LVclwjkXfsej + QP6QcSKcbERPhBNXJSfc13gBGxdM4XIReTFUV73tzfqe2do9CV7hCXEhE8cEQSybgSJL+3HRgEji + UVzfp1zswlCqsfXem4vKJl7BeQafJ1n29P6hT2YC1SQcLpD5gumr02C2SxTkz8KNs+5ICrH39v6c + Mvy6Upb3tlPBOVgQtzWu6/2HZR/hT6vwYbIRHsNB/eiVsEOkLInZXydxNIwXk3QG84I8aQe5zPYl + rjYMCvsW0QB9fM8Cz9xDQLcbeQiE5JKHgK5KZOMrVgluweGrhDPjvxo7FnxINnJQTcocTzE0cOaU + ZBnyOI2002Boz3kUJc1PmOlCYDAKqi5UAMUswSW3lZDX/n7JoU2GD7Bk74Yvrq8/EBgJ4jUWlg8I + /5iumL0aDb/N5pNZpUxUKFruab1DeuMxC2+Ga2yGPBT4eDVYlve25KJoTjt1PdtiUb2Pos7d4XvN + mDhFWbqLog7bFS3VJtxlTVQffCe/+Fcf8CmvvBeMRQNOL+gV6QWTVj5BXErJN/gXfmVRB8yTZWM4 + w80zo212x2nWy5/ueBrN3aN81H/c9vgsTl5Ss/oyMOBYr91jqyO+jnzINDCgGtECA/IqKcsLWN8y + 5WaDL7Zdc+C/oTcWoOYPCsgvpb/qVGLJEgPLens8cMA8fiKwrYh7l7jwb+ktAkTKNjRBHU8FLgHY + cLHtcsxzfUzoQM1PFZbjqB4WFn43nwgMZQ2VRnfC0h/DCtLF3N6bZeRgsCvRiYPBTnwrEISJzO2A + IUq3GxImcskVwkS8SpbSn6e/V+kSnXIsxX41Zm4Qht4IvcaWwBC94UkP481sncD7FYAthGktoEXj + L73g8iFlhu8fjstXlFMFhG/DxXP9oKm4xbYCO7LKQRIO+SbYtAVAaRFjVMOxZ14jZLnW5UrhTCGi + Xz4/6wEZP9zR+cGuDyoBS1aiXp7zQ03SLBljxRFO/+wReU21aIt4fzSL0F3AI785uJcQMIy/xrDE + b+cLGPSTAu5FkuXBnHzSFK0wYYMV3x0eukpX9qrcmOovaJR7MGsGOPsVzQWcwwTxpVab2DK+Rqrv + EHnPKpzx46Fo+/Nx+FRP0bTKjd6ks5BdXdLArCmD7Ld87R0oPmDaOX/zuE6zw8X2UsDzF/LhyI1c + kjk5VmCOWka3G5I5cckVMie8KpB1zytkMrbDk250MqeXAaa/2qPA9T1bJEVcl86Yq2SNf33I02Jm + WPcOmpMHIDkrggDdndbQwyBYNpxIlsNF/EhYGIXnSvt0E+lTGLlYJlGBz53xws5pIpKAGrdqKyoX + uo6apOepuXkvFfeFqKXVvqheUxswr2wVFDMdZFODs0rXR7An3cORCMaIc4TAYPI9q5CpMNMTccsf + QQ36SA36ScVjgF9zPb+HI9Pmsf5jDnDyKOBbO+Iw6Vi6ypc6hnBzTLQDi1QtLwq4BtFQQA6GJuGs + Zb/J6XFgHx3LFXT3MEIyOQzsiO2CZzZyQNjC4ohz2NKse4wf2ZH4Jlf6tEX2lRZXR7/JuhYFoNpW + mdlWuY+gpw2oKkEia6YqqJi6ymfncqw4NV8gYh7C5a2SFdohR0P4eWo6r+QuEclgrhecBsfcXWce + yxXPmIZyZRNaJFdcFFr/4+m4xHc0qLtWlIaxWs/2iYfdIc+MSrdAR0WG3AuclAOROPi/ElW+vYQh + 3UV2Y9ekAXV1M/64pMhf2dNo7Gw5PGPEvGTb3D3WSxV4T5XWPqOCrr9dw1ZkbgDS7WaeHJJc9uTw + q8IAfP226snxqp6cl54b+oEz8twosIUnZ5Lg4fwBJKvXpxT4E4GJAUr86/xriofos/M3w0vOYsUv + 549mwxd4EOeLXcD7r7MjgrADIVscCuRnuU0EbY9mqKAnD7euLLlfJ/ciFomxFdxqlReFWwvC9Ly9 + q5qecCBIuEewlDhrBYGWjlpk27MDj9MqHOxZimB4g4pn6bwpuuUHzc4u24ZeuRXrV441Ji/Xi2WR + 3eJDK4pVZm+JM4ePOk9AJ71NnAd6+MxvKnqzWeiFUdmwRr//nE61LVVuob9D6OBdsph/Hy/SdDXG + BK08bZs7pmimcmZ7HmY7Oz27/nxRCKUhgC0md8G9WfI1Ib1C03iy2PKR/PDmM0+5zScwDUe+PnC0 + QBNwzqDL4QtYDZdHJZtbYAbwdZASlQWH1ESwXegG792JwLzKhpfZN7bChQWSB7iIlUMqFNAxDgUC + CnxEiohwjajdZqaispUdLz/11pY6GNjbDiGttxRPjPB9Chl13RoIBAlRYR4WFUNFWFMdF84qod4r + M3CfijzmuyFhRPCufE2M60fapLq2Gzk0nrmzcrre1mxCTRIcRhJowlX6hXO6BNfXvZddS2Z22E2B + OAiqTzzSFBy00n1iop4XjiG1D/xmQtn4U/LDKdexMMc7CnjyeFzjx8PNC28/bzMJGxKZdz+4w7a1 + avSXqNjrXOnJ90v+FRr2VpO3ciyPSiD0PtVwOXUzKomv6+o9CzugBNDtRkalkFwyKukqGZV/XF5V + KAY9joZXNCrDV2MWeZEbjRByWYIENFHErxYgv0oR31sd/0MKY4rnRnWtNgnI87xyElBvyUQDuYfD + wcAb7FmD/cseLFvntC3mtO1aXeY03m44p7nkypzGqzSn391chXZ1UpeRL2BSR74b+aMo9G0BMgPP + fTmPh7METchZOvkiLdATifWKO+JD/ABHlnm8HL7LVljYyec9/D20n27Wn36+0p1Zk3S7WsAnKch1 + bb+UUVeQa9uOx/wmeEZJgaWHlBtZO4IgYkFUjofXsDpp8iKvCejC9gM4qrtwBOAjCnNmlayxGFh3 + ds8S3EqXMr7LrW48Q9Yba+8yfoKcwncULN2f04fAWqnzaJ4wA0cHxQIEJw84PDyeyDMCnDmSBe4c + OP7FrSNPDSTMsOlU0NqVuMHPlhlbjYZnq7VPfwTwx81mzlYDPldzZeIzU3oykwwoj+9Z/wNdW6Zf + 0//ZLa8+vN1ZTCOnR0QnEyPyr9ZX6yCouTNBRUaaPZCPopssxNWxW4xzMX0SLTmEAxnn88rkWyCp + g1+cGOuk6zdwHdvNsxViCXhtEonovskVjNGfnyLwPCLbXEMLCfXq3GREPWaFBP65xAmQTHe/VT9S + Wnd+RyS7wWLokuyGtxsmu3HJlWQ3vEo7/6erCrMXolpFlWQ3xwk9a+T4/DdeE1ACICzC6HHnk7qA + uwH8Y0xJSbDHxyJklAl4JcysRl9EUiaLgN7JunayGD6tjJm7SoRdjZu8ZjwUpBbxDMtgi5rssMKp + VYyrI1BY6DoVEAJOrCXGwYQNLAob7ABm+Z5tw/uVIvdEaSfDyCVryg8i3a54UyTswo/sUf5/uhzL + ZdbYY/GxSoN0QszmhVlQ+NAiP+0RDYoE1f6y+dMPcI4qD2DgEmO5gAcpvWZbeLuJG7MH4iwyPuoH + yNBm6CjjSWEM+qL6NIUq3QV4GtAjzevR3Ff5HLBOLc+1lbWaFmHPta+fJROwtVGhc5WwHx5qHaYA + KpPmuXYAOej+csvfS26QxKL18drqQo5At5vVzZHkct0cvyrIEd59iio7pOu4VqVuDk7Glh2MfI8F + TLBovU+/5exKOc5BYUxO8PCUSLMXbgndEf8joD8i/kdkjWRGL3RmEm8zeP/cZQ8CZnEhTVi528Ao + yefW3fBqzqVczVJ3pT7GyTCFs1tBO1Jajwhw3qdr5PESsUbB4IC9aObX0ngKYL011qvBiRjOxPWY + k6VhatoVmR56vLgcFcOYWgv5+b3agL43hiUAy4vLisTB7i8rN7IKcP4v9ckHfP6rIjo78sXuSwos + XTzmL2+wCbdwVxLIQTqdw/aCfdp/Ny4CIO4g1GqkizQmPegftOX58WcxCbpZGtOOe1HNYEs970nQ + 7DDyjq2wSxGfesYUNls2oeFmi4uktmdFN73M+Zqgy2ONWahEBlJIBstlcgjtKBgMnm9FQv/QzSyv + wXwdHiO6YZcKTP6Icf0lNaBXX/Jr9OUKuVIwT+Hb/Du9XyfL/+Gqc4rBrN8yGNd1Ok3WYEDG200K + +miO+YxMHjcK7diey8Ba41+za/zdjJWgPji7bwngXhNur09OZXpn70E5/GN8amyayQeMjDMlvWSe + yeuCm/zNdZXlNHRLLKfeq5fwXxjuEf7DCdvjcZMFPAQbfDU2IfIv82u1AbDQ0cviZCDteUbkAltk + 1ZgU6+5ff9WKoclCmQhsO+fOsfX/Z+/dutvGkXbha/0LXX2TrEgJwTPjK8dJHE87aW87mZlee83a + i5ZomxNJ1OiQxP3rvyoUABI8SCBFJ0563vVOJ6HIAggChUIdnoe1SgQWz5gmAssmtERgcVE4t/75 + z4thCci17lpRGiYCg2XUDtu1jaoIPV3k91YU+x7a/xryY/Os7z9OL63QNk8NpduNNIeQXNIbdJW0 + xsff36ONph/rWIX0Lnr5zHddy/VHPuKmijD+R1mLSTCcv2/R7nmvRcdye41rlI/Z3LaqRybtkYyL + 0W0q0YiE09V9mjqvXOHgE4H56vtBU0HvvnOVFXq+14CpGtme7USVNMzOopt6nSdK6sMa868um0vn + 5dObg96viju20H/RyOBEKXBxToMZMXyy0b+s/kmequ8gImAppk9hZLQIaEK5vSlHzBX9Q06BNb8R + y1i0N5rdi7WWxxLWR0MeCEVEI5RMmEb4dLqADlAdAmweq3Wm4EDXAz6hlZfUYS5hx1laBCcnFW19 + pjrQQ0qewB1Qpj8OrZVPmaIc8dWgs1n99DM91vYguS609n2AJ/acM1xWklHVYIa96SJpX+fsvSLr + 1Ov3a2Zv9uUj8CFIUVFIHJqHfBMHbe9KfzpPnr7wSvh2VKtCdjoy+pDYPAOEkWRT/czpueW1qJ+h + 282MJJJcNpL4VTKS3l995PXQupHkhGHFSHLRZRaMXMv3oj1nq9sZNPD1lz5ZEYISR3YqFtJriVl5 + yQfYGV/vr7cbDkYwgj2fsJfgvtttvCCIgptsC2YFL5dIhs7fxrKIYhhP/xNjnq7E/0BvxiSbSt9y + srifxbOYZ/kTXBSv/FhvlxSSXSUxlTat4rmebHN9jzMS0Uf+xBu4zHEuvTDzwfb4458KZw32PB6g + 7QeryRKkM4URNccZcZhHfDH58HYsdeBnupARakn1w3asLQ4Zpfs3TJd2Qb3+kBtsyrF+fQ4z21zx + 0O1mjOQkucxIzq+S4jn+eIG5pyVKctuyypTkz1zXsWx/BH940gf4OpltYpji11uwwqV1z3PZ8TC6 + iWefeUaqtvm8ZW8tnqLEJwcHIlA1UvFwhmbzaJh8yWZbHCg4zILdnjuECbCtcDoorHMllBAGuQ48 + 3iyZX9GAIhqsNgxcLXqX9JcQOAxvtp9heOOnpcOhVy4dw1OQBvgA4+ZGldo8SRLV3I9CBtYqU5iI + 8wRmyaKUZ+L6keO06YfSvvqwyRQUGqL6uB0s9kq5XFNbg0c8R4503KbpgC8GRZ7OfCLhCLxCWt3h + iOAHH/CI0/OAwB3/fvKVDD799xXelFDiRZFCQOrQvcdxlKuBQ0wXi0MOYJ5fFdlWvxmOwIM09TD5 + Q65n+yyfLTtUrFATowKAyQRjQ2+fsKdGA/NQTTXNYuZZAbeO5P6Rq4IeGZz7xDwhQaWkYrOxPRQh + QcmJyEaujlmXfdes6w/b5I983ab8fT/auRJ6e01pPgs2ODBnoxZscPx2MzY4klxmg+NXxbn99XtW + KedyuWOiRAfnWBH8MnKYxZyoBvlMQE2UfJUYXMfD8T13dk/TNfT2ekufmhu476dzVi3s2unvKYU2 + WFOQIIxYEPZV4NgkuC76wA+9d8kq3VSQSuH/jPrbIDZb3cI8k2QDi2kRklyDVYMX2NPM4P2uMRY+ + qRLMCCnplDLBSlYvr7qPt7d3KAddNOujHGFN2s34ta0x/+bj9/M5U0ZuEbdNuL7x9XKshnKEZXgN + k318HcNKm+WhDT6dVQqa40cDMeZV06f4hUzcrHxMq2K0L2Iix/Us19DTv8/PWfE9PAoT8QF89EYi + fyJHuWOH5Prl6+EFXw8vtPVg5EiWQXLbEZwhdtgm95nfbsgZwiVXOEPwKu0j/7w6qW4jsKFWUp+Z + 5bHQHjFklnIkftJsRrB9NLJoXHEsJCoUVDWEuTaxxebxz/Wkj6JgDXuoLk/5RnrudTSjEvNnsZLH + cbGUp7z36EauCtjWg3CGoV7Hc3qmFwu5DlZelLaLy7ssB8XlZbzUqOQ91zYJ2y+zjNa/QD/Si333 + rDD0y9I5gCAll33GtGfz/c7BMv0mhKr6xvJJZ76nuuVk75FWXFU7ZMUKWF75rsE2uVb5G/cqrmbI + BxfxakPZBKBbtosp7iDoHsxWY/kt84x0WoJjPkHRwzS8+O2Ejd9f/MYKReLLeHP3NS7xyRbiAyCr + aYljNgSWg5OOy5EBjrCkZQVTAH6S4vlir5C68EgGqMk1tzHoKZGnzgdqgJopT0q3g4H4lKhiGyZB + u/2prbAdpLS4ZvCBfeusjUycFPhAZea0EMLXFz6wb4nu3IYPKXIW50GVEHK9NSvmfUR7viVKuRA1 + jYfcsFwg/RODd6JkZl8cG7cE5XrdsY2YfFlpOrgynT4KrOeW3Sqbnh4xTaYXDWi59HSNzIDb2f0k + W9/PCh4bUdAb+IM5jGe84CWGYzbyx/FseReP8Wq2TqelJmzPCSMrFKG4fuglIwHoTBn9Y+41yFf8 + LmYo01RLmGvUVQ3c+UA0Zo/55HVWK4eX3BlDUl/fDyfQXZhe/VR6OgzmHNckC57CPsUFlXzDGls+ + JlNaGvuKNo3SYHtDdg4lD+O+SdgH6WMfjX0nx2gQhfWCimDQall3wHy2PVkugoWSzxENqkW9iHjG + tGBENqFVjIiL4qCigHNqSXsJRUPtbBIqkJ/u80evVks4/xefKzaOVUF+KDLD+0rJjFjOg97Qv24r + 7OAKpDbEdC0eM04vt1U9kh0dM+s5c1vNMPmQ6RRTjWhzTF6lkzS8sMhO0OzpJOXgOWgwz6/TBQ3k + E2kKI2M03TDJMF65UI4EGbi+BLEDlE38cB7tjoFgI8anazev3ZYvo6xaEJvi5sE94XX9NHXAO1ZE + 0PdwrkBQdAkVmzMGGLvyMflMvtlGoBJOsy3YpeM1TnvY2lZJ/LmLaI9RGFSAlmEFrGmlV234jblu + safwHbgLVRRvTFtL9LD2eKdEmiQlcflWr+S4BFQbbzbx5G4u/LjrZbqYgnkPCgQUE0yvGTF7FgvT + ptsV6ik5rc6MB9djIlthb991vFMTk5d4OWwNdr8BPrQyFqYP7l80VkReVgqbFwcNz8kZlmOvk+lO + +Z1KbvqvIA1tiuOWVY6RHWiFBLnbpLf2HoYOSuqV6j8QeIrQH/P8NbrdEE+RS67gKeJVBRqBxVol + PEUbj4o6nuIzN3LAOBi5kWe79j6QUGigJnH2FwIJxUzIJ1fJ6unw0/yJ6z4d2n8b/z6upEYeVb1S + 8D+cJ7PkSzJbS0cXihuDuCGHeUaFdvXk5PSYiIbh75/g70eFHK14nnH9ton/zOIFoVPh0TAdItcJ + shKBEsxADtKexMslqgzQkbDjxwrsEosDZ6AE10fDj5fvYRPg2WFI8wEDAR8Mwxyoxgb8V+XDijws + weyY7/qDgOb6TohFDrOcgfYJqOpJOnv6mDJjidPs7Jw5LWjc6XYjzSIklzQLXSXN8o93V5WQjG15 + pZAMezmOPMv3RpHvBOKcc4oY/l/vkOqxhP6B2eD494SoAmpARuSCgn856OpyhdXFN/xC3P8fd+sH + xHPtS0GdshdXNBtSicIiqTa486eO3iG0m1z6tsdCh0X/HpwUzmBy/6qhTgflheAslOHPa/zu0tu7 + 8SRb3qsvkeW++vqPEaMJZVc+BbKerbe3t8manyjjIRzhE1RJ/JWXPK0GunYrvvyRPDyhFns/u3GW + A5xfUikxJwoG4u1xoZiNWwsPNHrZI+nHanp8V97kd9V4UglEyn3huEFLsJL8IWMHhmxE92CIq8KF + kWcZ82TwbJNPwQES3ZN9Cx//nV0+Q+qNoKciRLwfzp/gKFz6AhnKiJeyf8Fo/c2QijtSMNd3ORh/ + cRwUaf3aNp1zm0a8mzvG9Qj+VJd6iFNSTGSHCszeXbKwxW5GtxvtZkJyaTejq8JOfntVwVZjUVBC + H7Vejt3A9W1v5AaeI7E7oE3iBnyrDvvxZnjFPysMhTzQLjM8yQrgspt1DTXnYys828G5+RaN0ad6 + kNwNmkiCGPM8J7C8fw+uCqyNORKyzolJzebZEcVRXdeO6miInUKWK/nC+f4Enb/JtivtgeF1NkUr + vOxHODviBrXOfVXrcir8UO+cGeCMUvsXnO4Hj567sjbfqzP1Xh8HaIfJDFbbb5XBCrebZrCi5GoG + K1xVGax8nZcyWN2gksFqg3XP7BH8AQdppRmqM5ybGF9Swacuz9TZDNqcLLukTRazGPlhU4eOwEsl + OU8+/v4+x5DgZ1A8UsJmWYeuX8wjPBp+GIKoebqAyQBLBoz3bE1hNskCD7tUORUJ1gV378EDaGIW + y5EG78/e56h+TugLmncNT0H11HjuquCEr6Ou50EOPR2yhYP20BKlnkBxf23ohEeUWNEzYIBUbbYy + 3l3/OWMtbXd6xth0F03oljtdrIerE5sbT+TaLgUlAuaS4Nn9/fYWzmPzZOtw0lmY0U4nYLo90Z8D + Ykffe6clGz/faTuFfRxb81h3ZNcbPIrFo6Y55Q6/urStFgBbdLvRDi4kl3Zwuiq4V1+fuGXsCBb5 + JdvecV8+A8M+sKORb4c8UQ7XRQWc6S75FlNM6P3J+7xkTdXf0jYZU1SRn0h5ogJyvC+4O7jM6Ml9 + IpQYihYmpyKQONvHHy8KmNxIq8k3dU5qoAhuXnMHLU1sFJPMsoWYLF9hUgzz7ErY30+mk2A5fn19 + 4yKZ/fBqTK4Ywdo6nbhBD14z9Ka4zKokPJtJKhaTuK4d1mROt2V/beoQKLax+hZfGtDN/FIBey43 + csDSc+rYnmpJZZGApJHgyQ0trFCviipMAPzSahLUZ3WDNmoay4i5LLQrtLUKxK+eBzdshHYrfht1 + ZKzObsQfq2Rv+3ZgtZa7XXyt6SIYeKHJKxdYs+o/euGcCauomGFcak6f9wVENzEdqohuv6TSGMC7 + BNJyh5nnCw8tPy9KH+/hntmOEhuNd9u3anyJLY0TnAVkwtfPpZasv52l7cJ/woUh3zRfOsLlsfPV + 6/sY1I5bYYG3HcL2AndMExDHpDiRgVOY0+Kt9370B2+gcVr+DMTP0ECwpwGSwp3x2exe8KOdnSnK + brPJdlg05kewBXv+rgXcVzioNuNZwCuUpx70pbCU2vTEtT2aSIXNas+hljs5+2NEPZSF2KcwYdW2 + MfoQ8HhYN6K0H7eVFYmqjMWtyg2EB3a+XJOScIICLLZacZNsL79y7XT7bpx69a0fSMYH1jKlh6Fz + f4wFXP+RsY6qiWzSJUyRZvkExlqBMZw7JdFE92QS12GU9qEbZs7fxt7fGkx6o1UKYu2GqVVophWs + iDy0u9I35VrRcxa0802JZ0x9U7IJzTclLtb7pl5/essCP5LlOzkCei4MvVJwiP9rsV84vJzhj/eX + zG8RRqXbjXwtQnLJ10JXyddy9f6ikhTkcBqcYrDEezn2IlBn0ciLbN8OqvnolL2in8LIR3E1X/4E + iT1xssquedBwvUxX1fNvZPlNbMqh6wReUMbpqBuQ0oG6KfgqBQ7e3/5/s83Rerv8/243R/Yz/McL + 8a+CwpAKL51ifdiTi+Onw4IOlOBMf4oULXiugBEnLMKLY/QY3qfJDDFZ4sn9DKt0YEhmRAFF3bjG + hlPRC/6PUQXOXPAWD2fpEjPVc2S6QnI8OicVqTfeuBiywcXxOxVVcoPAG4gx4jte3eQy3YNDn4I/ + 1KNuIJ5qC7PoLFo3W0z8vBwjQPPz3uT7c/8WJ2VaRmQ1aLPEbJOs22l8yvw4t2zP3D1Mt5tlfpDk + cuYHvypU1oe3FYBP2F7scubHM88N3XDkeaErfMNnBYV1O8uuwUTadTIS+mtxUwXcvPrn2QvoR53/ + EXQra0QKCmw/8hvcoxQ6KJB91Ds3g6hJOK8HrqBy4gkZQwLVI17pHFiySbVXsr1GlKJiqzmaQh15 + iab+HKfRCSgkDq50jE015nWy63CDtPfTvvWRSjtZk5GstOnsvu5J4VzjzjbkmIc5YS+5aoS/ecsB + TkmVOgKGKSmvMNKPV+Pk2yQVpHnLOK05Wjc7G9pwwvzMLgvXsVx5zijIMHvx2moqUVfSxBbfqucP + 3kCnjJ7erWGuwvCRsprbu9v0cUbl2gaf6Kq5XhhA5DtU6XN+6bqWuelNtxvtY0JyaR+jqyJR6fLi + 3K3Y3m7g6BuZixhJzPN8d4SqRaEktUhVmq2g1clycNGcWo5fTCUGXSeaHlXIIxJM5Uh9tTXpw9fr + GSN9iFlMs/RPqgBErf3mkl+XZXLJ4ksyy2BiX705cSJl8LkOQRMfjCVM1N7QTUxVj8Ea/QLmJzQ9 + nidg2GJ4RMkeDU+z2W2KHYVOVhpq9iz3xR7DfEZYDM19/A4CG1SOp7RH4auZWqmH83+3E7HnaE8b + cb2stnlT3WQ9ROZUbzmbYZ7YdBK29h7Jh8xTm0Qjpdwmukq67Z+v0URKKP5JvqLj0+NKDfvVchNW + kROkfCxIwINkK1K9aqHvg8RQjDFgLE9qtGLrXM2vwYhcacEsPBZiAXFt9lUjLrUXUPV6ut4QlEWy + qSsdrIwMJkD42qDm+qYE99VscerlHhaj47H2tTsP3o/iKuzmEzwkXGA8nQI4RuPjH48/Ho+lstir + PIzLQiJJ/xFFreg/4HZT+g+UXKX/gKuC/uPysmJTwSpyK+wfdui4LBrZoevigaNoUdVW3t2ukgT+ + Pdtmq2TNaXPksD05fXvxdHyzXRdLJCp2UO6ygV/j4RIFc09MvEGwI2mqTWfwLr92pfZJuh7fcstL + DtI0z1kvmJ1glMHYCRtN2i9HPOsHSx+leuAGKI5w7lM8vTy+uvA96XMEQ291h9U7pALh4RVFemFq + pmthOaME8Q3h+7+5hFPaKsWeCFtKWLrUHblTrwevPp0qt6Vte0E/ViyFM4sD0Mai25UTcaDonce2 + vqzZH1ChmatsgoaewByl0YGh/Jqt9lBKyICOS3Vxry8tt0X5C91upgBJclkB8qukAF8dXzhV+iM8 + UOsKcOy5YeChexQGTcBH4Jye3CXTMfQatdQ8XWSw68BqXiareZLnnb6Kl06VhKgE0qbpkzBsBn/1 + MfZX0VSF1vdRwzKPBaxJEWri83hPjXTdQRmWiGxrRA6Oa0ZI80CCUtkuN/FnAnO5X6OSS0ZDMCwm + /C8p2AX0d35K/oIAqskAv6FSKq7n9KNUCGG69sWN1lY7CQ/AWfMYsuT78nHhjK0bzJaMJ3Wj1JPo + XWgWLvt/37imOz6HaWGu6eh2I00nJJc0HV2t1AbYbqk2wHk5ZqEVjGzmR7uhceIZSJw8/tLeAwyu + Qc4A5pKbLfLEoTKHABbg6q1WVE91NBF5/E0c6O1P2o+72sYVRWXHJzazWwJCqGfMPC95EwXHi7pI + i8T37QhRQfD4Pji9OMtRWdVhR/O25DJtz+XdGvQDC8sNBj4p9iG/7k45E9Rt5C/ZruAgXSMC1Uvy + NZnyM8FWkfjE8J97cqX0sPs4zKajdxHotuusceQ5uw1M2WtzmLLXtTBlr4swZZcXUfWcHVTP2U4U + eI47cqKIlwfiLCvHdd868XCNWZucTpZ8HarkQme+xbtEoDzPsSeAhtUyqmjx9eLyw8Xwk10KoYdN + 9UEMNg3XC92yEr8sJH9q1TaB7TSICsFIdPyy2Skd6nOUKN95hBEb7d00je5EYVMbkR8xtEP7HdGj + IY/sxDeoUPm5uFh6iRc+MRraMeZP83cR0gc4L/LtJuR8vvgGxWjCnpc3M0YdStOdH8IRDNt3yJd0 + sUNtLEHftsVGgPFGUZDa8sR5YB57yLeineO3TwJXkWqp7PdS+kGeN85BtHleVae874AAai53JVc/ + WC50KApa/kwXk0Oo+A6k9JNKnefw/vHbOWOuuUVNtxspdSG5pNTpqnCeXnyoYOrYgVPifgPb2ka8 + onBk2y5Dfwkq9Xn8H3RRLzESkU5exMt7LIqb4j+4HSDxh144fxuL9BdEdNmQCSfIjZeLKsiOfk4s + uT+jRkVuI+Q/O7QQNfAjC/mQS/sBZnE8ke865O9deF0kdHg6nN03Fn06kdW4A9mBH4Cl8NAtIsFx + wQfjR47rlLllRDkFfio9czVsSgZjFmx7tqzbzc8u0K9K8lNJZNMXiOwI9lHr3zDvzSbYaFg7w4pu + GfGrKNOcxvP4lrPWZ98wOzIVBaXx7DOPg2HB5W3CYTnj2TorpI5xCD4qC0i+5QhbYNiJFoJROJ6m + HA9/HI6zb9k0yb7d327jBaeUH+CCU3ljXiTzxorlQbV5Ynvq9Kj+snbUzTbXKHDL58PCSK036Xxb + i7P+Y3fKB6kKaOurEjvkoQVRsF6FhLbL3mhY+pT/3V6kKa/R9ZhKylCLsCu1h0WrTybJw01CiRjx + Y9SNdT9mBtiqVO2kgdZT9RCBFN/AY0oZcUWj4f61RL4VsetDPj6TDJmb+xUyfoyxq2JgC5r5+xIo + S2vLE0domwUtIjX8dsMjNJdcOULjVbK2Pp69t8u1NwzMqsoZeozEKu4IDHVLVN7omGMlwvW6WKrg + FEUqHUGNKo9yx68vXmBN3yRewUushk+Oj0+eykotMss+pnN7HyVvYx/WyUqrZy1s+64d2DvCNnA4 + iCon8UrKXUNIyAo9v4nxlnFiZy9qZtbd8ULzcqTI9aySGYq21UWBuM934cu5NSgTeoswzJ67HNNo + 1xPhqtEkujAMcuZwrTyVnZIN9M4P+ExTp3In8HsIKPWVBMmHryinmf629ElM9wffs6wa40PrdzU2 + 0sa4+eEUu05JhsFg/RxYblxF7H25Zm2z11Trx5Hg+V7tUmgfYGsrcm+iu+vLjc5t5SvG2003OrfO + V4xXaaM7vzwtuxVgn/MrKQnPbDu0nZHthYHwFL8hpHlMKMzWGwlFianoEiUOsx6JW3wOq4qfz5Yz + /Bvhl0u8WLqTtrPz1W3Vy4D8kYtk8ll3DEROYw6All/1EJlayPl5WqgFjxuZgT1mWY1+EC9iYIM3 + kt2qekgMdDRCBXO2wyYUe+a6gW+Vm1jPUbx4AZUKZEASrDsCTrStVL7N4IKHab4kogFJSFvMZnxy + enzxtJKNcfF5wpbjUn+KpLUcdWmSIZPQbF3HU3sk6Dt4Zp80vAV/LoEuDtnIGXM6+tvZdhIv8jLY + AS6FfCOOIuLcoqVuROy6G4ERRo9LMh77ovxq6vNh8vaqze4UmruYab8HjmRvLo0flOV2gMFiRLy7 + u/WIvpAmgute0x6YPt787UTmerN+bflKjNhnduvs7+gt6O2YHKjaEP+d99xqWxsiHjKuDZGN6LUh + 4ipZE8tlbEuYkRWypd2tEuh8wQwsFrc/ycleRdXI0wE992L3gxfQzADb4tAkoAqpjsSlryOfKORY + VYEVjB1YndGzcgGER4cLugttY08bkAtrk6g4OfhtJZXnMGBBjzkiORcfn6Zf0gpl4T6N3cWB3FFF + t639cMVBR0yiuilpZvfLHrQU2EbbeeTTTeGG7iqqN95hmBUun7/zGOwIsBiSR6A3Q3HqYu0ydJh5 + hg6rzdBhKkPn8uKCvaqk6Fil8mI6dkWR5Y9sx/IktM87qpy457EsMIgv2Gh4t4UB5n/D6NgbaDmb + pcNzZidnZ6/E2epyuWTXtdUra04pPkM0f85Hs87mWEIkElfEyeMN5yCKn5Zyx91GSFvPizBxsnR0 + KtQoIW3BJt1shddNtJyUsnicJleh1kABkFY6CwqHJy2e6TKjLiuJxAAhM88KMJUlqfrhKA/gRizw + Qt/+9+BSDa3s5AUb4llkNJyU3Y+FzwCT/XMR3lZzOuaKWKZj1vWU0oxEmYwcZ0wlmmzncg8A0Tky + PZw3yjsmTqxie6q258KmPuYvMeDzOy+9oVQjHHjl1My34f3aEse29KD+eo/uYLCnjoUQ7NR8b/W4 + bfuUq7h/4ZoMLuoVnd1K7UaNfrrG0XUCcb7bv8bbDVk7wftnVB+l2W4kwPgtm7UB48fbDcH4ueQK + GD9epW3k7adKQSWL3MirYPHbIXMtb2SHjmMJ990nTsOpSmNGhYI/EagopfceDQvckqAsNunt3abg + WeFKg8g9JV8rh/VdfEFbBEcfv9pWsXa93a7cw+qUismWbui6rLzXbPV3bKhP8qwmR6ImVu0HQmpt + aRLzQq/JmSilDX7c0A9wxiiUcdv2egk2hVSEXxkXE2OcwbGkABR6zccjBw0dFRFwFVaJTGzsFBAy + TV5/nEVO6jTHROxFPr6Kb/aMOFZXeLbl6aPdX/2R+qIetUHz4aXA+13fz1tVTAkt61mStMwJzbUs + 3W5KWoaSq6RlcFWm07+pYNq5XjnzMgAt6yFjwcj2fCsSlU22dUWbTExZ3DM43pEzVW3SIkM+qQLZ + FR6cZKscAHu3Qe40YdAxC85PblDNu2xoZyS6K3tq0DyL4Js1mMFBxLCev6yjeR1KskTsw0YeDjCg + jd4pV9HX6X+3KaJeFKA4pVmDnx7splIUyPfYjsxJamRwjAMydNXHE8a6/pUp3IVY11jRwsdw6OSn + KfjU0fLpcAu9WsnKLjBmpinlLYJKmKwSjFSAcsKvIYgolHw0RtYZesqPhqdvL8rgBqsEdxNkpeBL + Svo4xMaih2pl1c12iecHSrD8kohODXDe51xyEdnwHiU6mQzwDgzP3TmSXdtotvu6ky8+Brd+B9La + /Q/tOaIU8j5qNFC7DQGVwg5pTXrGyBiXxxi3aNFTG2s48mJKLOy0i22dO7MWB9ymWdL9EITaCm9v + UGztPsR+YQbORptKfJRPnTagXvrXU60Hxa0O7c3hXktpdDCKrJycMBY6z62gRWBFPWMWV8mbKIRV + 1EUyIi4/VPCABp9gR1lkWOYF0zebUNRXfoXL1dLTZNueE4ZRIOC2KHC82ledZYylZCxxD3opxf0O + EeLCkcbVfCu7ItWPuXYsEMEabqfX5vM3BESIxYAnBYiHoestnDumX71nx5FBrdnuAXMJPKfT0/Au + pMb4ktrRBdPBcW3mFJdEOsdln1fLHw7n5eXF6W+D55bTsjidnjEuThdN6MXpdFEEfrM52x34/Zwu + UNzrPy5/K3FNiJ+GFyBjgIIwqstAX3F1ZQWentQwR+IKtaglul62+M9WUq6hY1rdLszjykA3AjG7 + RPRVE0XeG0Ourdc5QN6eyLCl/MACWHDEizUErbuxez1gPiECwC/XcC664z8idbUOFMhDu8tMTXTT + AHqbCHZt1gWHiMtHUHjLGsZsV4xa1KIUEMPhta5T/k70erer7CvMnr0vx2emSHa5Ftn5azBfDCEU + HEyepUHZJCJhHIYVPYBNPaiR4jE7VOk2aFJvQOnKD7VJl3vdQf3RTLk+hWZLS7qr1esH2hevJIXs + FV83jw6X+vCmsBGTkznI5aG8UKAZKK3joKEBu9zNPcw3+yqLdlrmAl3j0vWdFrF7frshiBuXXAFx + w6uC4uLjhZ4x7UC/bLCBK7F75oR+aLkj+DN0fAEN/rEGHn2kM4TyGZRRYlTBEubOnQIoENenws3D + kSUurobomsNZgWhmcw4ikXxDCEuETFEbz/pItbcuQfhg2mUNbhrfbYfE5Ho/vIu/JDKJG1N3yxY7 + UXNsltVM7rZUwx5YAX4lrKMq6g6gzQCTUwdjOjs9G5Urr7E6KIjKzkVzLKSLbKYBIGmVSZHbsf2N + hoihE3eEOhxJzlskh3Lwy8+/AS5QlXsQBmwgRoZroCq8iapMFW+MJZlf0G/EIfNTU6Z4Za1Y5Myo + rIqWyXouJYiZzDUjx9bDInnVWF0/YWk5HUWtGiKWTqSQqGK4kddVX7Uwbvs4Qv96uC0e4bZcXLKw + Raof3W5kLgjJJXOBrgrclt+vKrgtnouI98XoYfjyWRhh8tkIcaPQX4u2wgcByqQKzbD+hfCfEN3i + LoHhz6YpTCc69H66ju0l6mapXodX842zHD65+vT+96fD6+QG3e7pZq2dl+F+VaX6ZL2dZ+I8+lQm + naHOLRZuFWhHNph6hNUbR0OsBVtsMKyEar/Mc3KcrQ83BxqqsfDt1KEOpkiy+PN+3pDtEUVuGbFr + pLHOM4Qkb8gpLAyOTsEV2U0pJFLg4Ff4lgOczHJrhS3VJcDKPgFJ8kO/pxTAAcFE/mm0Q1/hE+49 + HnfZehzmUTpNw6xsFd3iG1JIh7i8WKLrAfUQFylfODteq11Sh5dXrpx6z1nYsnCFP2Net0JNlMpW + +EVS0cnq1hY0Aydj5g4R/CJDSjp0U2ln1ScX789eI/BU6Pvs6aD+7jcobsCF8voUOAxS4MWPyBzA + B4zpLnfHTHyKmUBjmeiHmVRjF0IXhs49NEi2r0bBtLu7JILZQunBOUIUfYuWmcG9ECN1IiAyZgj5 + 8elnHKHXjZgc76xmkbT7epbP+LhPk9kmZu64efF1HrdD2thpXVL5/sk5bBTmODV0u5F1KSSXrEu6 + KnPTXlfL94OoBFPjvRzbuBGOEDAwejyEKpMZvEkNvvcvRKii8L3hTdmgA3tGX0xiXiDS1Znrt0lX + x9sN09W55Eq6Ol5VpIpXZWBiFnEXQSlf3XM8m/kjBBf07DpYpVWllEak4lHkW0+ufL9arqv4w6VU + OP5ctYZCn4F+E6IwY3YQgl1Qya08vJVifZLrwpCEPZdUNb7GgxRtFV+he9FWY5/7qQMTnRx0mXQD + Ps3Vsnc8a0fxU4scBfQa8M1f61OTPJ27raeypx+LpOTXvH7TgmoXdDuoIOtXrKAy31Wolva3S8v3 + WgAj89vNgJFJchkYmV8VCEbHVQebHbGwAozsgeHqspEHx09HHPc+3lFaBDo7JqPhIluMN/HtbSGV + 7mu8rpbnFOegtGU+r6BLnMc3UXYpLU54GlFw8jS9eYZeXjFVy5jvG56rIWdODohynWy+olE2gZbj + JdivGBG5iOfMJ3Jf/Gu4HEkfPbqVqEHh4Kdbx3RbXry5rO/u4OL4PQsU/C186kcES+egpKKcZlg6 + GDycW6bRmweHo8MyPOr53lkiXoomSzt99qM19S+IeSfpPbxI5d1x5JO2rDDiIePMO9mInnonrpIC + vL6dCRv5dnY/QTDXQgK0SLWDtSzwrjT8K6yxw7tegYgByuFcMYFl0UklouTzSby6zlAkHuEOdMha + vkUMBWUcrt1VIzX4V5ZLxygFSpWtbuNFY16YucfrQM8zHdjoJZNvRTWySm47rCafhfp7tns+sgnv + uh7Iq/0w9eqSdgX18665ebj/58Bmdr+BR+mp1ZKDkbh2/yce1X8fq8XJT4fbxbS157QnTBaGkMVN + fca/QXfhZtVfsGrb9tV1OLcbnyGdg7c+lX6+OQedYW5b0u1GtqWQXLIt6ap0r72q2JZWEJQK7IOX + Yxdj1iOXRZ5I8/pHPNlmBduBa9nhk/v15NVTGGWRfCjLlRJ1ktxeb9IZ9GQhNPfRsIj3IQ2RKW5j + wtktwBO/8AYpa0WzKG+2s1ntgyJ1ugjGJ4tRr6uxWim/GYcSjqhuw4Ha9gM4/zoVtwIfhJ3lSFod + qO01ndhZ4LpWUHYrFDRvkUwvXn2pArhE0MeG3Cmt9zmIZmHcCoI4yGErQV9KU6WpQjWowbKuGePB + Tzn1BrjUlNMkCAkG27Py3PlMEr61SpIXANaNY7xjd2/K8MKZInfkXbPLVGDvsJhNZI6ORdAHDQhw + nXfzgVj8ZTNDzosXJlUIICBsEjDbwp1mYjxRa1po27Ru0ya7z0AptTQRWgne/4p9lUuiIL/csR9f + gylnqx2Ko/iUe2cKXtdu1oSq6fSZ89zyW5V00iOmFZ2iAa2gk66RVbFaziJLHNl866rGr3weDRp/ + wKfHeFBzItd3B8bOZfNyzs6u6h+b8tmxZLJbdf33g/B6FOWZ3Z3HxtOud9e3XPi8UvKP00vLbxGl + p9uNjhFCcukYQVdpwf/j3cfKMQKdofoxIno5xii27Yx8m4WSu6+JG/t2BfL/ItzYjh2Fgr24h0i4 + 7xRLZ5nbvnQWnmlTOotNVEpn4SJ94OQbTeonlx9wtxSr86nG5izvkWrhcrV0q3TPoilePStzzh5r + sb9Lmzvx0+63xY3cUhYrkJ/GWHpSP7LdXx4jIVJxywyvB2klJO+hoeTHUj/RaU/tp/7f9ViBx/gQ + fx4V5hY5I38wGolPRQxvzy3HMd/A6HajDUxILm1gdFXgFZ+9R71b2MGY67DQDUtFjyFsYRH8OQpc + F00cjl7Cn4WTO3lbE+T/JOKYo6H6TXMbnL1/YxcRDwV8cTpn3sPlijVVLmsOKD9oykKJ4I3DoKlw + YEfRv56S4jfRidfLL0G4J2lWynJxwdq0GrxR8KGY45TzZnRnBkcn07oYeY3yRBcHp/qHTvEwWxre + omepDhhAwjok5ECapVg1LH1OxS4utjCxkQB2pPO9oF+qBGhww4/SIANn//IOunEkDpc3KfSEl2GI + Ac04AS3OwyPcc2EcYqrTv7jLQms5xj+8pcS04LNYxcpDn4nSeoqVf83GuS1W966iWPKJnBnJLL5v + q+SZcL/Et0kBLa04UGV4NzXEdyBTmmg04PFtrf5tRMxwPG6T7SgoHHGO0bxjbY2FnwSSAxcHjURl + DRmPZiDy4+Vibuc0sUSgvF4x7O1EdyaGhwbX65Nqh5an51eXp/pwuR7oaEf8OGSNBuiLRwXP8UiA + NH4q6AtfFU2FTvSc2a1qpugR05Ip0YBWMUXXpANz4gj3BNfrfMbBO1Tqm8/koWVgeF9+wsUmBrwh + fqBlCr3OqynPbqmmHSr1Mal531X0bnQo/RHq1PcVr7fJmHc/qR5OhdD2oBhG0b5X6yFh5LBmdq5i + qhl6d2k5rvlhjm43OswJyaXDHF0Vh7nL907FGxnaujfStV6OWQAGTTCCfkcR06uGlhm36+9rQ8R5 + vr3wVd6toHWeG1uoOYK9lp7My46wOFl5GwsCb7IZV+DxYvoCPl3J9TRS+l8QnMRDlSI7fPJuvQzt + 5dMR7vTc2OV8o7DBz7NpwtklJTnKk8sv12w5GsIf8ACPZuMzZUdXfvtq6Tpw/4ds6YXLp4OLs3cq + gs0sQeRs6i3bgezgO1GgfGUHeNwIpb88pm16Ejo+q1qX/MywTv80j0SDoNCS/h6FZGNuvP0YE/VQ + ZM09Kbvf2wLuxZUeSG3mtnBN0e2m2sytuqboKmmz17+f2lVt5tRos8gOItBmkeM5AljXhiNp9u1e + Oqb8sSRgS4pUbCOeK5ysKPlCJNTC32fZ1zxKMvyaIClH8TkOx8h3Fg6JkN2icoFB3k4ooTU/kaOq + ydZzzr9H50VkhMKPsB7qfcQTSrrecEjGr7CqhtkXGBfFxEz6Fpqy+3aU9Y/a0Tj4je43J/SauJRD + z3P8qMzcJQdNpvKWIf/h/xvICurltfWNvcnht6wIWov8fw9+tTk3wAWYb3shUcq0cIQUHL2qPPhF + nxggmF/F7f03l3Vg2R0ywb4XYWWvuda4evARs3Vn9DoHinxwL0B/IRgqc/v9krEWZW50uxkLDUku + s9Dwq7TPfby8cipmu+sj4oROQzP2nND3ohHPD/IU6ORyWWQtAVGfX8vatY+rteNUNoyPl8cXF3pm + KyzJJiVvBXZgsQerwH9ziSrkNJvdpvXEW5YfNmMfys4Nfl9wLz6z5FisZfZrLlROuGW8gtWGGc98 + JJ4qw048MUnXY+qQQFYi7vX18AuoS3xumk0+i1OLQKHWM2rrYUKevLl8mr9rsdjs5iadDPg0UKws + vst6qMvjY0cKMm9ZvMVYUcrvEN5g5jMfbC68u42svgBa9ljzBMVDrwprI17Fm7ZnAr4e8BFaKY12 + v6bRpUKJhEKxLLcFrRW/3VChcMkVhYJXSaH8cXVR1Sce5jeUaK0cx/Eie+Q4ruP5uhtAC9vyc2AZ + 9+2PbAVNft2FvlAKgmIJYieTlOf8lSQ12YvM9SPLiyrQsn3pq8IxHdQF8UMlY+4F0GsFoqZoKrMx + R8uthGdLTgAd/tV3G6VZYeTZ9r8HbxS0W36I1TDpUoyDVvhor64+DZ9oOAdPZTcwRaWo11wtc1Vu + OjkRx9HwLl4P7wosxhdnHyagLhFvXvXl7eQGbdd4trnLtreCabZwH/Tr02ZpO0vsMKzMcuUBfb3B + p48Xdq4vPYeDMVgu1Q42Qr+C/LOPV4ybrQlXDnwE6APyRe09D6/oY6B6P9d+g2UJm4NQG/xygfnh + iZQzymWMlICauG+TDwVJxHe+BHQeR5yqNkG9rZKh97dxgnb/TelteuwUOXZ2jSx04s3HK4oRf4+B + 6iVjrTdmmR/DCvMD68Ed26IQGNceiuWroDz2n4E6p4eJ7Taw1HYbtdtuI/PtNqrdbiOx3X48q3D1 + wnYbOtXt1oXjqjtyYC+OhJ/qY7pyl2JDrab7UiVvc10eVgA3mu1O6ERepTDvEST/nqg3m+PnLCHu + XK2WbPniYwr/LXhHRCFLPIs5zdkKzXIJh6o4dGG+EPdivIiTVXaN2imnX6zUsOV3ETPHUSlsiNvl + bJ0VnSyTbDYdru/A/B/gVy/sPu2dI7uL29qVwP+C5er9k/Q6zKbijHgxwWSs6QFgEQGvOfrj/NK1 + AnO1Q7cbqR0huaR26KoI9l2cO+xVWfGAKV/yG7gvn0WOHfneKHIQN/t7gATy5D5YsrBjr9R5YbaC + zlfPC79kXQN8hcgUE/BB4zgB1ch8OGdei6g03W40UYXk0kSlq+I4evJbJY5D7JfFaeq/HMPcBYsO + 90c7EMdRuTzH14irMEQknTzJ6UweNRTq5OdqdOR6Ox0ukslnfQ5EzUB5FotCywurXModCewtB315 + 5clafpOGrOSQlY59GotIAMs6aiyN1+nUtKkbWXq28+lZ/evnQnMqspIkZrWThOcHnhRSBu0Lo6Cd + pENTsOsHc3ARz9AmRhEYS9C/esM8VLTNa1hcyZrjzy6meGaRX1wkMMAUBbsGHtU+Dsf2WgqiMXwj + sGXm17P7kRwtUA3CTfiZo7jD7fgaaNQUEd2l2sMwzixeLlFZCDywmJ/3efMDXJDKdLGI/tmKqGyH + q2595rTJI8D5INWdnC9tnvdBMVTzEHbWq6LSSb7Cv3CtbkUe+AytOwkr8MCpwQcIfgiqQvN6rzBS + vhK5Itt8qyhwo7K1KwOLzdwAtRG3kOALyirW7CBr+vBu61ZQ/intqfYNs05EtM3zFCTO5fufxJwI + sath+z+iv//lJ3+H/OTAkVw7QYs6a7rdlGsnqNZZ01WyIV+9+VixIT3XcctcO+MQNqAIuXZsKxBA + DKfw7ov72S39URyOj6hyz84QgTMuIUu/SjZVW/Iyvh7LuXHbKFWGi3SDs7H+Kww8PwB7rGQgXh6/ + MmirwWxsRLPWGttlSelNVqwpFjoVtp1yG4NXxWGFbVwOd/PraP4ZHlvkujgPKkqsVF4EVhsu5Mmd + 8CsPABYtpVy5xptNPKHSsXkGk5FHKvDbztLPqp5tPfxjuWGEwHqVTNzlAOdggSIH4w18GBo26roR + 3OsPxXnC/aGtZtp+N2tvsH6+F9H7Jk0zsa1AAn82e+G2u0U/sn8WbrU+VL4MivRE0xa4AqLDDlqk + kdLthhAdXHIFogOvClbX83dViI6A2RWIDnSZBywawZ+R7Tr7QDqghb8KSIdnefAP+Uk9Am+8tFzb + 3PVJt5uBN5LkMngjvyroJv51WQVvDENWBm98Zjtu5Pgj2/HcyKIPSjBYyfB9srlLyWhcb2c32b/w + 4qXijWGSYeLbqoqY+OgyboXyGc/VS42vxpgRmtRR4WgzEQaqIVM2sgMPDhc7MmUrlcd6zmwQlRw6 + o2LeAovsKIJXGVyILzIvfRG9+4im/iVZrdHLDNt7TgnFq2DVk5jROt0maz0hK++o4K5bJcs4XY2E + eYBqrZAKW/dmFD0qOiWwcn29jBcDnI0K3zB0JXVe5WxckdnKMdJJYFP6VuQ5mtlyYB5uX0Rd3ynx + Fuc8f3uaeMVV8+Tq6a6VY9SjHsXv3u37ZOuChR7sklbED8bVuV1h1HS7xJUwzRbZaj2CwcBf8N0Q + cWEygfevA7jfaS/4shTWc6znFmtVCkuPmJbCiga0Uli6RpvM7f1SlMZ9fHVSymEanH68UKOjXD58 + KZ3iY0UAJ5TD2QLhTDoY9Jk7KeOatkMTTtdPYPUOi91sh/r5k/E7d9QGLR57+KzT9jWznkUkkfps + 3AltYF4A3F727pezyNtcnpZdZEplQTVqfz+3mG1+uKDbjSxRIblkidJVgf/38UTP/XHtABPKdPQk + 1345dhn8GY1c5jhMxuBVfVBexlSThCKWNWWgXLz7XcLKkIH6j83EbYD0jlcN0cogaDQwsVzYZZVw + ZV/HEQneSxkExMsTb2HR3cVwSNHwjWzmNua8yl7miNjqRaUeLpp/OUZ0NrvPq7JgvmznQmMeFSJ1 + VbwgJeDds/FxSaeiZah+Vyo8WeWlyiVjtPTO6lkakwFOqfzk5Ua40AOLlGK1HcP4gi3CE+lklcm2 + zcwZ/h3yths/3V7bk7IhumA451o20Eeha6znYELYR0BbIzd/5lDEFTfqdLHGSHFmMkJ1BNeOyITd + PZ1bEl1LZS0LrayohSeIbjdN1IyqniC6Ssr6zUkVHsH1/UpdxNiNAs/yR55lu5KksskPlK1A/l/E + D+SB5Urnpx54dA4x8x7B8uvVqx4yGowSbA2Ho+jod40UD3tgRc+tqB0POz1jzMMumtB52OkirZ7i + 9qeTh1WQRQbNLJigU+bpIi4MjtY8Z2SPHhduujqitaL43Fcu99BJ/0bwR6FFHqndX+iQo4iYy6El + Yb7DdjDfoTnMd1gL8x0qMu6z8xqY7xKwDof5dhENYOQjMXlUtPLzhJ2zxV16nQpz/jzjQI3oWsC+ + SJqedPaQTueuFXqBbwcViuJHsEFdrNI5flGttC1J17yaZz0SVbzxKhFg/Ol8nl2nM5GnPEHz5pua + gQV+TfhEPHuukCB1BBsWJshx23aNpQBflROI3C4Xnyds+eKPJeb5CbdswbW8jDd3X+N7kDNNNgQ+ + hV6lwhSBK5wXpKwqBzgH1bnAYSGVBx+WwhUyS8unEZncLbPVIpeqZYu+6bskNign7sCa3lKV1T/q + sqoyzrabnTSW9blnjEuapUtMzZN15e2sEdsjIXNEa43vk9V4vV2tMM8UHifJa9CkGLa4zqYtbQvQ + U4Q6KtfDfq+SG/oaB6sC9uV6a6dKb5ohfWSyh0zS3FstkBrodlOae6uK1EBXhbfn7LVdLvVikVcO + PLpwgvAQCWvkeiyyRSq7qCWq80rIIl3UTtyZLFw76dSu+naKCPUSkKCYmQPGbVP2TwS9CvxqajtW + B6mzY53LiEVh1IhfXRTa/77QQGnFE00XSV16O2xUdjltPq+W9kPfZ+Wg5g5XvDa08DWbILLFKAwu + RNkLUhSXfVKoXlE6qEb4tsMn0g0iCIHRk1TgUnsquwW7hfQBrmGZwDaFWCxs5I+v03URkOXJ21fo + m3pamEmiIke0dJSTSC+JJA40QgG9WSLmwPZTJHWD8SbJA74CVLDTsSIicyMFtr1O/7tNodmCxBZY + PLuzrH0qFK2uFeXuaIFSdyisxgOQz/VFod0pvNTIK8f8vE8xlf0f+JWbmsJFyx0CZuvdVK6HeBCF + 4RDuSzLsjOfNoBefg6OZOXCXXlUCYmQnjXyQqJP5zl6rvY0cfpZI56vbU7r6I928AqQssp0k1ydc + y9Oz1+0gWEJbEcI5z5Eupw0fHD5hTAfHxetscHhJASj/vRw3rruWS+LMbx4ThEgHe6l7BtYJo2ZZ + Py/7OydUowjHu/UysPbbqMZEbcyiHEp+FuJV44cRHYaUh//+0vaZuQVMtxtZwEJyyQKmqwLr4OKq + 4kJ3IlZyoXsvx0EEn9YdBVhzHNJ6YHAG+Pw6D6zdF3PD4aR8F8/KuIncKwhde1G0cpQuIIiz5bqK + cBbP4OYR/+84l1yVq2Q9+fT6YowlfPBRnpYy912/Jo1tdHah6hOj0IHXdcsWsHEn9MYbADLtMvVw + sXhR60FnUMuCNVsrT70EOmtyKGh9tKJyZWnTaA0ue5oI0sEje/SnSBGUh+ZJvLrOECcQBSnxR0V4 + SniLAsqDGKsKdoQEmbgmEprLeD2eHL+/kE6dAS4OVQAeBu5ADAhZmpWx23Q2hrsK3Zlf2J3g5JA6 + 9/yVXO6mOHDlmrxyz9ibAlPiwMVufHRxQ8vTvr0hJGfzt3fAMnVpa/8T9gcjhpRy7+QO5YqMHGa1 + CPLS7YYZOVxyJSMHrwpX/fF75pe3KNvxwkpGjm2HkWuPbMcKonB3lPc/M2jg147yXvDSaTh38RqU + yWy7RndoAZynChOCResZKkTQFdc6UhzqR/0Ah3hlt/eFTKcRj3hMhzk6MIfsLGhl1LrK2JL13IPT + q/e5H9x3yAPBGDdO84zo/TXdjeDE/RCRPCxzVu/M8j0H6rmO9Qnw5/UubK9a8GGTB3dr5cCq+YR7 + I5J7ONX7qNHqq7Aq9AQAkeO3wD2j2w0BiLjkCgARXhWFVVf/pxIUdVyLVeCHQi/yPDYKfcZLo1HR + XpFpsU6+wNS/H/6f5xXtkduXqAYkIgZO5hSG5IXIQRd6Cs03UEKydPO50NtX6/9W46h61AfWCI6B + HgT1moKgYWAFoVvBFs1To+qN90BX20U0+qJApcZ1xYDLAIzPGaj1chmu5cPRrMGGrxet53PjUPI5 + KG3lEu5y4/nA963Q8v89eK8N5h0eoAnZK4eyV4MzKsGvtfqk6DOPoZvJchjf8HQ0sUOpeTIiOGaQ + zCExle774+YO4UbpjMAhUCVqEPx4t53HSBAF0/4bJo3OaZhpGr6FVTFdJfDc37B9uCMe4KTPQZ6I + EBI/gtBXOz5bC+d0qDL68k/FN0J8Y4E8qz6dudye0OmYb1NIEbsw1r9a/lVNTw0/EL+Sr/SSjFwl + GPaijYSHB/HoDj4h9xX//635znJ2zgLHfGeh2412FiG5tLPQVZlVXy3ZtbmrsLizsJfPMKXeHjGf + uaJU58sSzv7JogQM9o/NXXUfQEcmD4jrur8Rp6Gp9lIQvypDVQ67JtYqoSUUdgAf1IdbRmQQePh5 + aKsJGj/ym9S/kJsb9sozeju7nyjYTR4I4Ui9t0UXJjQNo2YT/sFFsmTLF/9YrpkFmhS5vErmfiUO + toae0tx7MTykA+zADgxoKkEv4C85mQkZzy+G4hQReGE/YPuiZKb547U4lh8cEByI+Sy99vuzP3Kt + tu+pnfuDJdDz1eM/c3QAPXk2bZuioLFzARRBhTTpC5OpIZU0FT5dnNtt0EfpdjNAHpJcBuThV0lF + n11UMyLhDaMyIM8z5kWRFY6wBMW1dntZljO7DiC0PuKka+2wKeWlSWs/Bo9LHdWCfvQBO+/r/fUW + E/vQfo6h21PiNL/dxgt+FZ5CREIwj/FR52/jJVzm7xNP/xNz8FaRAwLWVzrJpmQVoxl2PxN4ysMN + 4m8LL/p2iToGsxZjPi/BOMYlHOM0XPAkRu4i52QQf3KecZQ5zqUX5ut68PGPfyp72Wd2SJnDxNq0 + OQS23YGJxZd3PkCGXvB6Q/RRBFt7tQV783F7nqXs/QPQaSwW8g/29v2Hrvg2fVa8H+yJGcoME89p + PA51lshPFS6XOYI/DxIrd41QYla7fivMarjdFLMaJVcxq+GqqsAKqi6joIpYzSzbs5k1gj8pu2zX + vjFbQQt/FWBp1yFbVZRnc1NaAp0aqZh+QSMd6sZd8i37H/biA2AvhlGRG94KJ63J4eGZNuzw2ESF + Hh4uCvQkEWtMp/ezFA2QTTbjczAGNTWBXW89/KChXyzT27F+Jd2sQ0H8ThDpvtheTi/OBDR/x41c + ncO6Cnx4TgYVTOiJABMOiXzV1JMq7O5gQ2i8RZX1Y805a+hX7/lr5rgfj7OGvM9MiB7BBz3mBAJN + GX5aJ+NkcxdjbcwcjXwR2TVrxrTGMLJkyih80efMa5UzSo+YJo2KBrSsUbpGKna6BWW1XQ8KXQeN + uyg+i3midhSIPNFOKDutoGbkIEnSEydqQW1It5vGHKMqtSFdJQPy5OpjVDUgbb9KeWIFkWeNIity + ZHJH7XkbdoV4uQHrEFPbZU6Rip2Tr/EuRlbl4YqXaiBYWsq5lWGA4AOKctcjnQWFi13ztDI4jNPk + hs0SfsxyAZM7LMbgRYpHMBk2Asb/ZDqxQ87pCjMWc4fIzD1Zb6KKjcs/Og+ySVG6KWnbzbyuEZiS + biVrsRh014KYfolrqkCdYLme60VONYqpBcDQkVvo5+S+VLmEO7fWxMfjfU3s/nqa8IA55WhmMStR + Dcfg6tP734dvnOEsvY0xTbDFdHnASTDAmZ8HHkOfAo+hDDwKRMO2HuuI9vpiSBCFCZTEZhT/3ZaS + KDnEVzQ/mBSe5qpJjZ6J4ZI/TDx6td/JPDap9rTI1g4l6+08M8ZyxsWnFLO+Rs10tE/Gxa7nHoY7 + SFmp/cASR8L04iuLlpUhpKLceGx5CHLt8LlltzsEiWdMD0GyCe0QJC7SJpRMYkcU96O1NblLpqKG + vwD/zf9aMFIG5rcO30xiNxrwZgg50GGDPoBX1Hf1SU6hDz0ckCKLtFHpRQWJX6GtQ7sPDdlGDfXy + UlRhn4KVlGwn5l7mXcQpFhVu9SlQlCPODpLX3Zzc95A57OD+PPI2sr5zisiOb9Qa3LE/zH4rdIvL + ZcyXy5ivkzFfJ1z34L+7ppD318ZuveWSb6EHWT0eVx2L0Ta5vF+l0+wbohqpvP/uVWRy73Mk7EHU + ItGTbjeFPYiqiZ50lfa73z5WCG5Z5Ad+GfXgmc/C0PdHvm3Zvoj1quQPKo1gI3tMp3qdfIGOOL9t + VlW8g7JvRQ/8Rk2ZlVEYhKFVBbKsabw2aRO/q4lodRb5MAbl+xlDs+iSX9dT0IVNZygps5CuU9PT + YsqLYrQoNnfEXUDJSrLp/nb5xn7x/sNHViuOdswBfl9V0+9aDgFoCVatGmIT7f2MTdJH4u9yhW+J + AiccXcUe0+TcOTd+lHYBUVQGXSdqpK7ytFD5ZQia29TUkYrGJSP7+OKV7b52nlteGzO78JSZoV1s + pmBqFy6LiMM62U6zIX8/xTU/TbNv97AdoSj6P/kSipzCawESQ7ebklN4VZAYukra8t3ZVQ05ReSX + ySnGNqyxCBSi7wWhSIvHuJWsXEE2em0uYv7HXfItnicr+H5UrDUS5oGsebxJV+sNpUnDor1L4QQ/ + 1UxCjmE1FzSJMCTxFqZTfl+8/QYnkQwOhaL6ZoHJJF9EQt7JdjQ8ySjR+kM6XMezzXofYDEaDbha + Cwpkki2gjZlQ+u/SdQ3YGcYwdFIMHdWm4BsKQ88Oqxk+O8eyqcpWp6xoakTp/PoB1vcRZnl7ZA7+ + Up99gAsk58vwgoEYJVRXNV3vfnYzF8oT7ePrGY7E5o5bZPAicyrLeoAj806E/f2dOYRU2rJDEVu5 + RSSV7by7Y4evF3zEcKk9tPC9A/dTbsu+CLrAHDTf0eh2w6ALl1wJuuDVvKQ2rERdLKcSdRkz3/MC + f8SwPEgAJ5+Avtmkm62AZURtpZ+lBfjVPNtQUZAGvYi3Y52mPCwR2Gg2Ib04yyTB8dV6gkU+H9O5 + 68Kf728T/CdPHY/nzIf9hXzZHEILhZZR3KFrXAbqO+jXl/peHnElFvN6pKECchGgndBQuKfaLF0s + Eg2rvvbN6hkkgxIcfiF24foO7CVVoM8G+ePCKGujX2yPufq+1dietuNi7+VIF1OlNcl+wBqzdX0L + 8776K7BD+CfLiyole5Wk+qSht6HnV5E3imPhscB2ylAZte4iRU0wLxdyOJjtv7MVMS6Dvysmw0k2 + zoel55XVfk11XU/qAR4mKyDjUhsDrntUuXcU9VGo0RfUGv9qRTliwHnhopnDsCHw5HuWVWMcaP1V + WqRLXQiubup5Ow3RKnz0w6v76jC3Syq4tUh3r8h9Wr3NGD4SpwkT5GDH5sQ9tV+1l6AkKOTaxZt0 + QKbtHaMrCmQiERhEdjsGM/WMaSqRbELLJRIXyXSDI6GAn8WCkfvZuJDxm3yDDi1ukzIuwmD/rVcg + doCyMRUpDGwC3bcCkSGZLf6zvaV5yHcSpcAE+KLp14Fv4/P1tp5jOqOgjVKAlqKSik+AdmyDQ5lo + Znncy6nDdPTdWm98au35wUK+VMy/fcvJThUFZ5egIFqUCvPbzUqFSXK5VJhfpQl+eXFZIYa3bcuv + lAo7oe3b3sgJHdfew+mSrkD+X6SeAOxXb9BvTcAPzuSXczMivqFzK2yRrEi3m/ENkeQy3xC/Ks7N + 76rVLq4bhmW+oWdYHOl5cGz2HMfSkxVrgJdGJeQ6ze+WRx5nyZdktoYZs0oSeHi2zeCZSRGt98np + 24unY6GTSxQAlMGGhwTuil0KVOsi3Zliq7ibBw0MdMnwCfoSt8O328VtqgMrWjAYP2/R5mP+LgOc + eIq0yXXF7uzQiiqWCjQCINfnDIuQIHoc45+4qJs0RGCpnG8W2kHLtLL8IWNjTTaiW2viKq16OFNg + Bk8+WWCrx1Ib3edZrKZp/4TWF8wkZ4FPdTg+GUPFGh8h3tDXbU6oJKCdT15fjGUTAkXzAKmhT/R1 + wltMwd1ecsA8nq91uCjXdynhFl3CCQZcWvfUiJvpOzLv9puqJCI2Yk6M90zrHmhue2vx+6UDUFhE + mWkHdVCqQiZi/ycseBc9t9xWoX/1kGHkP2+kGPhXV0kVXn44HkvDTyKl113T5Nkeku86sjDmO1BY + 73EXUTY6favaRPpK0nhv1f88QUsI4iuSq5huaIpEXXDZGY/xUWEnBpYtcNQZaxFSo9sNcdS55AqO + Ol4V2IkXJxUmIdsJ0LNVAlL3wOBxHeQiDRxn97l1voIGfm2U2rwOHp1OFq+DFyyEKcf5/nY/k5Od + CozaTdQDIwu2HRHwqLypIIiS1Ft4jB6lC/wx2O9cTRJx3Xo7mWAFHvIVIcR7RklhPxbpBA1GT5sF + MDVBS3SFjuoLqcQNwVLDR/67TRfZou3OIrWnI/ABLa8VPiDebogPyCVX8AHxqnD6vatx+rFyPgJ7 + +cyGD+pZI/gj9EV57evzsTC+Z2NHw04nLXp5t7IfkHtTGhJ6bpvT1hOiXoHVw7/rGWh2U7wdQQKD + ChuaFN6c1ObD8DYxrIFBHaqAey0XRbae89LHdR0nRaDFwYsloGD6wgnV//dAppRgmvTsXnpdMFS5 + zrAWE50zjZ/5SEuirn3V0VCSQfBq4bzj17DtwoKI4YlrvjSmWhIKemXeZTB9Xpwul/ZSdmdUeuEB + Tl/lf3WYJxDMiwfDmeFpsBECw2VBNbCxk28Yl1ryFaupYLaKTEFM4BO460pyFFRQZEsf9IVRQl0/ + tWyu7UZOuT/T1bZGqdXifnU6KHdmLO2etcdo29y37o060iMw2OGefljVlJDIt+/ZAWdYNz/DnkTP + md3yCMufMT/BUhOlAyy/SPvM+6sLkR82KPy1+CweVlkgMHCEVaUwdQyWhamPw/UEck0td+Kby64+ + po6AKuble63DnYzqKgtSxZGl85zyROHxhfuOWS1LIvKHDEuP80aKtcfqqojoLxMxw67GMWySmFgK + cu+g0+hFnSbyGIQrCb44JYwP2tw8vII2BtgQx2lynFDgNFEpLPywmneHW1QbSTdxe/wMkZfLbJFH + 3tTJzgJ3559F5A5cQpt4kl9QpeAPdv+2XW6uRSbL3onVh5v28LZ2H0vFy8/uDxJCaYWiP+NOwqTm + obTv3y/hBGDuo6LbzcLXJLkcvuZXRfj6w++VQiY3KKOwBy/HPpzM3GDkgxEbCKjGi3i1WVAZ4ofs + mslI8SKrlvrkztHS2cpqOhNZke1Ytnvw2crmTrXg0GTj18daqq4mVZ1/HO8KFnU6x4+QV84U0W+1 + Y5BTSTrO5aOjzi1Xn+ZZwSWsE73+tMIWYtD1VQmmt9TRxoMgiEI0xX8P3kBfCNVGfOtCKquGrgPn + uDELr8otjpTZuKaD1ut0TqnIQ3X3NEWVUC6cQmBkpF3nT+FELBKBVIppORs26mFBMqxl+//2Ttpw + uC5UdN0POAWI5ZKJhcaQeEluWKuKRWjj7OMV47BACS9lhm326tOYd55rA++5fBfs9rn2G3o307XQ + FfxyYQ49kXJGuYyRElDDide02aFTdedLQOeprmuTEMlKMvT+Nobbebq31uPeOoVztmi8dgbzwcgQ + gR1hFZH+pdu4Zb9faLVwcGwTRjr0vDmU2e0+5XtEFqquRA3bXsPg4HiRxwTCy3Zxk82QGHvvCbOK + GhRYCiXfaYGcQLebouQ7VeQEukpb6B/HlzUo+WW63PDlsyhyQ3fEmRNEvi5/FHRqNk1Q/UDnimga + GnnG5ms2PP7wG0KAYRYz+mJu1qT8FjwUAmN8MtxwMxsmz4rrv8Xw4s3Vx/Es/ZwoM2wtI0nxqqYk + 9zAf6KMKI50UyMnjxef7VboYi9ETKr8QYq7P9SqSHyLwgyio4f1IOHK/C+tGLBq0aQXFbUHp8C80 + jZdi7hccafhLzmVIbjWNsFYjo81z1wc4a3K4fd8aGHvsDLVxRNkHmqxSR9to5KCokXGUeOp1zVhV + ZDai17byzR0MlSZ1DWVCfzi3/RaMHHS7ka4Rkku6hq4Kc/3st6q5bvm2rmv8l8+Ya4VBMGKuayEU + Bs87U9XkeiU5zmktCMCZI6oQ0GN35I2vU5U8c8RxM2WdP36Lz3BUW/Pay1W2vSVfOY7ggs6bn2E7 + 2GSqlDL9XNU/bXBgimEDG8/bfnDoaSFkkevZlcNC7ofVILHdcRlAvNiM6zpNUQ6tGaXq1AiWwQUi + 1kTRVy8IVNZmLPiJmhilygTe+bnLwzymMgZCXV2EDrzpNwIgiD4OLnaN4dHwsUzPAa4xZfrbDE1/ + 1w+1rENqE/N29lLQ1hhtB0jbE0HuKrZJd4eW0JolieNSwYy58fejrOvQEmTqMIHF2oCt5Wu2+mzg + A3MJ41NNWjzF1k3mw8gRUGHgI8baxmjcDpf6wJ1uskI8XkTx4meneMhFBU5hKdUjSsSzSXaXCQwJ + +I7wk+Aja+dXjGSUzH7D7OeW0y7TUz5kGidTjWiBMnmVjI/TQkn7Fs720yrV2mDHPXpue6FJjF0E + oUBJtyLiy74WmThreNic2emnRvlXh2qbzvO8cGSTLvdoNzFhGK+S+OPvl6xNjR/dbmTZCskly5au + inSfq2odle2V8Add++UzHyxa1xr5LvOCaHeu5H9W7C9T4+eAuT94JAh8clblCefeMYY3g3bRevGQ + cbheNqLH68VVmillvoUq/0JBDsbug9D/zgwMAVOZy21y7+h208zlmtw7ukqL8cOnC8+pZC5zG0rP + XH7m+WABgOXte6EvwkJX4mAv4EokMjqcQnJ4hCcfLk6eVlz+n6GfGVa6wRbwW7xkNluirUWO/e2S + BdZy+CWNh9mXZDUDFY1mwSq5TRHtDINQ26XnLEeaz1+gGMjcKCRehMemM+jKXTL5vASbdpOXf1/f + 81vex1O2HMN/7WUO6MBVCjXRRNDAX1E/arpNnJURWpVR5ai5M61BE82isOHEpYnOoUvPr8bX0Esc + NMU4MJbTuQpXY/m+1cTUUN/CvFi68eRucfnh4ql0uOxpqAmRb0dDUmDyrSrQtfxWArUPqBEqoZOu + 4KHS0xijdt0uD0Vdz33GDpJJwzsaTrPJ53IcDyaN1uFCVDAKYaZ6dUHBPePcbobkPkCjacGaHCj1 + 0teL/f1tt2ZQ4oXhFG4nebO/q/sm1+CXVLQDvvfkFSC+PRBTt+i+LYIwiVHM57yRTzcPPVI1AOoU + +SH4Q4WNfn+iK64E7uQ+VArlti0OFUPlModJ8emVaveNug9gLFa948Wu72ksLpKfr2nvOUQ6VQpV + 9NZBIrVQd/fvcyiRfRTlNaa1e59RNwLOBy4OnF2qsQLLJ6zSdNOeSKgvlDePWeTjm6u8iy5ChNOJ + j8U0Rcu6rRP3wUHhDvSj+lRrpk0aQ/+tyZMPWJWGdAZesQcdKtJMk48N0H17yKoHM0DMlSmmXk0K + 6qlLeJM58rjueuFzqw09onzE9KguGtAO6nSNzp9flmvHzclo6/3sg1qPsyM9zhfpZ2ewxP/AOd6R + ACmBoKWXoCi72VMbM4ZFZWIJt6VBSjOlCvNZxL/gFzhdwKzM4yra0t47nRw0lPDOeD3J1nxpcW7Y + 1vlTDnPI/aMEEYYMvCiJzXn3TEW6vnDk134ugxKI5uF7qEDaA4W9OlYUtfEhqYci164dGLU86oAq + wSqfgFKjeMMBcnaPw3cKpz2K+JFjcW1THx0bO52jYz1I/hUDX0yVh9neq/A5s9rFvegZ47CXaEKP + etFF2rsq2cpaHIti0fEEXgXVOSyp3fcX28Swl2/7fRIGwrL0bWm9cqOTlzhgxR5PBd4pPdccPy59 + 9pA82I5adt9DRoU8IfND8f3uHhkQket7bk6AsGeuHkzQHTBZiXfC2CuMwbSCKCo8ZUoDmjejEYGq + y2SNzlfLtS34pXWQjapfQM9tpCcHex8St1/hvfQIYrZFvk01eS7Lk1eaDBpzWDYTaTsPUmhPyxN7 + /lrt5fWG3/SjIcj9muGgiVBNDe7+4bzQLTqj2h5/LY+UFT5ORQblagvzr2aU/G/8YodDTzkBJX4U + mpnolCTNg9aim90b2amvo5DW06r9AEjFSYWEJ+dwdjEPGdPtRiFjIbkUMqarpCSPL47LmcnwYmhE + FxnRvJfPXJv53sh1PM/fnb0xmYH0Xzt7YyfQLHz57WKK1j8xdcC+sOQVdBg50fwWIuByDV9tfDvb + TuLFcBbf5wSRuUcAdr0rW+GSwLshD6RjuWJmw30SSWSVrLczjh+ArMvq1A8S49xCXLf34h3uquDb + xiOAqXWYTcTxyIabrahKpGuqTKBSZULLe878ltiM4iHjVBnZiJ4qI64Kx9t2hZXXtFWsS06V0tGk + zb1a+5hiA5OPzBzmFEAvr3lxZy5R/p17HzAqr2EeHso27oszVPVFMC29J4wOK2KsgPvIxXft+F/h + mNUv6mwgAkX8C48bp2ofOAYHN/X9fDMPzG+XN+Q7hg0tYUfvSqQXsFAgKlhW0AZRAW83RFTgkiuI + CnhVoH6efqzg1rleWEVUcJwwcsKRAwe9QJwuT2ew1yFOypjXb6pVRuqh2VRQJeybBMPz8HC2TJZc + VT75eHH5VFSNrmVhfHazSRYyG0Plt6jYdu5op/L4dbISWR5323lMSVEnz/FDgBEi60mvbje9Y+o9 + KmOt28c5etCPcxeviwoIDBD6QjAJCyAIYLFlOeDF5i7eDBfJbSyg9SSFwXr4br0MrAFOYFX/5Dmc + KTwSmSnFklBekWpmrX1/LLVu3n+pRQStyKVttUiHp9sNtQiXXNEieFVk4P5+UtUiQVWLPAvswGP2 + KLAj33V1WhH+odF0xxmQo3LI4z4/VbyPP2PyF78Vx4ozTyAYAK5x3+egAGN5roUpCvPta8LNdSmz + LPFDNnHKAiuCjghmUTwIoyqnO/cDSbl5EDQ/XHO3GaiC1TpbSdUDTVZVT1ugGMsPwRatJOT2pXiU + b6AOtAVhK5rqJ5ntuj6yadbL25VEiMtgn9TBX2e2DHBRKc0WODKzUAcM6ZqQ1QP0SCdJZpCefIZp + MosH7uaX+3HnjI4uXcfyI24ew8xiyzFXDZ1YGVEQE4JsLshpKagv3AGbqrPenMOgmm9HdLvRdiQk + l7Yjukrb0bvjqlFrcZKKoncPtiM3YH44ckMncGqrQd7FG/gq8F/4KkjZTghcyUYPJYlhPtKRo+7S + 27thfHOTLtDWkSMpBMsvA/rjZpUkSvg7d4S/r5Lr+2GyuIsXE3yId0OdQI6kDZUbUJfXx0vX53rN + DcnOiocrzBhCVZnMYAWtEFojnSUkkXYi/mIHG8Fh6IXMYxU0g70DVoaEdhrS/cFy8FlU00LLTTPy + As+2K7zL75wX79wdvW3AS9CLNprGI8dLuIM1EGP5vlRlL6bpuh4TzXGa6nD2yc6/MGxR4sMnJeGu + lvtfhEezotAOYYDKufq/6jIYoKJQ7uUg5Fusb4dckb7+cIxnnThtG+DDz8cPApUvjr6Y4kc32prw + g+ni6j9yRVhzJhpi5rjlAxK+7zSeI6gakWi33QaZ7/mlns6zaXoD+0T7sC0Io0Qcfb6Zw1a0E1B3 + DkSNVBVQp8eMvuMB4nayUj5Kt2rfB2RQt/buweuMCEEFNcabgNGrHi61EWeiF75ql4TEk8eWwWM7 + kbZI2oDr2byA+49X56DfzL2pdLuR4SkklwxPukqG5/nrVzosAOa9RX6gcyg57ssxhpU9e2SzwIqE + I+TjHSIHzxI+Hli4hKr+LvvKN7GE2B/yjZRK0uLZJIWN73q2hWfvE+lFW29vb5P1Rj3JRQp0ItgU + lD8NgWVXoPDldpzwbKDVDcxUYSKeT6+rTKqPLqjNO84Ds3OcU/niaCALwbSgJiPI9cKAWQ5yesiX + E8NzeXVS2NtWCexuCc+qVpZPqXDxcj3BwkP8w4I/Pyxn/pIgYN9tZuiZyLgLA74SiMKqDKrTwoWP + plM8vF5l8XS44rTY0AnsgByo9QAnmzJemCX8A47Kitw1IN3g0R1S4CJEhMfyDtaMl+sKDhbbPoUJ + ZJBzoMokIiWO0JwZT5NlspiS06NdA2TI8IpEJFOhX/mDHAc4m4Gm4Hru7AzHcQ7DW2Mm1psl/RlJ + rmO5kpK68LK1c3Rn5w4utWKIqMCHDNdIC7PI7MEmZMVeNkOLoHT0CQMjar7tyw3IFoiLLGzh+aDb + DREXueQK4iJepQ3o06sLns6te+IZZmyVIBftMHKjcGRHLAxEatOn6xQObjBvxutlMsE5KUGoRRhm + mmzlLTwCo/6l4j3zDL4TukARzU6GagoHFti2OIYdnAAXw6t05S518iMEA9QWMqgwJQgfO42XeAYE + FQq3rlN+qMKTYu5PTVbQPOGap/ArFjttSLgqO99KV/yn6yWzDvbFs4i5duCXN7ftjuGs9ymEjfgb + zHIjy7esBoh17cOkOtohHoSaivNDOPC7vvXvQS+fPv05vv2ALxLlWWcOQdJ2PWY3k4lQ6XQ+Url2 + Ubms+9N19h2SNaCByjwwPSnvlbLb524F5DPhg8ctg1HB30JYDG0Pmd3OtaTL8360OWPatv7Bhkjo + MQM7+rATpsiXNVIHZm/Zy7Znk5eKgvsHvB8IojG/X2NvZAnmgWJ74+CyVZ2w/9Z/boXtUhXFM6aZ + irIJLVFRXKQNejKdMLHdbr5m4/wAdXp8wY3+UzI81stbNqjecYKPD66314KrS9RcWBFx65WgBNuX + v/YBkEBLEGNhnKkhFyQhVtSJoYC1YtpBB45mxDwgj7D6KQDfPBbHXVhs9Ncd9a/NTlLHdphTPWZc + xtfyG7WckN+NAPwxJlJSKqmcAUv0yV9nU1OF15p2zYp4e8UPFRfRO9tMBJTG37786fdIfDieQqna + XFmAZgfPLbdV8Rl/wrTwjMRrRWf8kqAVXCVg6SgIpzkm4sv6IcXbAqKeaonVVSxD2Q4oNlBCfYCk + dqiS7AhJanvke7wEI72F75HfbuZ7JMll3yO/SjvL75eVHCwWebjqS65HB1mx7JHj227g1oa9s1V6 + y70Hk+wWtWimqq6kg5HGYC2DZDPpvrjOQ3ybTPuFZBLDBCb5IQdS0fovWf659U3niWsdJYGKeGE3 + tMOlOMv9vmpKq4IxF2+EqTaFPtW8YOnQ5zdlJHFYs+qZrzweol05Jhpplx/uBGELyhzIZdmFDU4L + 8NqNfMX1chtOPPwfmyH/5ZaMugnu3Bs41D1ZJ4v1dvh2u7hNnxZbdyzX3wlmWGmdp07Jt/qSB8Fy + 2wVnDLJcbZJFjCL1l/V3YvpBc+Vg9iOb3CWX8dVSnnGJR2clSMT4lFfhceeocTUMUA8ot7DtuxTT + 9i3h49L63dItavuCtLX+k7X0BNtBbZ8K07rNJt1FXLOju19fAF8VOwTuWmpmm5ZwKucTZPybO5Qz + xzziHVLedPMS6dtU3fO05++ab4aGr593odVOYCLeYbbP6qYd9Lkw84xE8gIiPwikuI7FxT7xlOVT + zSiGWng8rHuf0kb28H4KaVgRY9rbS5Bm7lOn240MKyG5ZFjRVZFN+K8SixFzHRaWa2Sc8OUz0LYs + YiPb92zm7C4XvllBAw9YLozemFgR0vJa2xL3q+Z5ZrbOwnl1VUgKs22najRkyyWY4zg17kAZZtBa + BXE4DPRMszcXe4Sut7Ob7UpVGZZSEP0gsho7GdqMhdG/Bxc8pxiVRMMA6D7nhtfA/bfSmSPQIRhQ + JcU5TddwEr5Hzs7JCo830+Es+ZLMOOQsZlXBXUkGOu8ynnq8FHqSanxpsBh4SB92blAUK0yZHs7S + earcF8N4eHr+Aeb06fFHVnAeY0Q3WQ3OLk9U+BcMfcpdcwgtQzpfUK3Nrxudwc2ua6o05ux+PZWs + hkEoj1UE11M/8lWp+YgtY9gQV7nj0acq2EIve+Drjiw6/xXonA+QalhP1Axd0VtBKSPn9n690NJN + 2wNLtWMxst2W96t0mn3DMgjJi9WtJMoO5a7BXPPjON1uumug5OquAVdp1zh5X7trOH551xizwPbs + aMQCJ/QFRchJPOMZIbVBI4GVRhvJybyGl84whbsAqB6AAemHlU3EoBtnDTuKHzbFS22snXfLOcxS + bGE1l2ERS7zRYSv5bTnhiilBLHAdRP0fGHwXclfg1lDIPRYslDLddoQ6HA5sx8+evZBjHGPcTYks + vblCsl7DTXOEcVnJwOYX3DtGxWFTnrVCfjRME3spTtLzeTzDpLGTeD78TXzEswHO13w7YRQTdelY + YfBtzI58B8jbHXRgBJZb95GNTj4GOrqpZgZ0YAEmgRfKdrPcXZ+4rksLrKvC9wMN9HWN8PnJi83d + KiHdf6j4kJLcDVREy9zZXiTvc777ehMdP5nn2TL/6mdnfpM7pyBjOzlxWcuggnzELKqgGiiEFeQ1 + 2gSnWzC8tuuB/LPwDOLNeY79vbmOHEsODmzWUTvQafWM6fDIJrTxEReF1/7Nx+E0Q9foQDp+sIhy + kdSAM14lG68Uf9l4OI5hiPwVlAXCij6kJu+RDp5pBVFOBI9mvXI71D9j7Bl6jEHMllHIRwyVyUKL + NJf42mMxcT7sQcrcW1fcVbC5hnJynrZXznO7HWguPWIMPEUN6LBT/FoLfjaSgdkaXmDhSnMcjwqm + 1Vm4WIa1biAsr56Dv7Puo+TW00sWtjhS0e1GRyohuXSkoqsyufWyQifOfFvPbXWil+PQiyLLHYWg + 0rxKbqtCwU9vOdjXG+cppTiWk/fjqb988ekaK7LhuxTTH4v2uIgqfRiDhTJcYRI/fJ67r/H9UQ4R + wIsHlgsbawGWGyZqAOCv/lJaNEoQi65AwmqDAPvyms0hBniuGE9pE7mrq+rJr3CXCshTrO7NFmmU + 4qd6HYRn2Q1HQmaFLoxjBdqmmvgpBrIppdXek3tafwyEQ07WnNOKyZVOJ7mYur9DrmU3ElnV5Mr+ + 9FNpgEtKcXK6zB+IMSieHGqGzGQn+B4JsHweFPtaM21M+uqgIV6U07VfA7GolCx9LRofKnHd6GPX + tNpaHtvayO2RF+bhcqGUN1jEf/9MFxPuVe54Hgvp2HzQMMMRNlAg97MOvZF7rspdtZ0T97kVtWTG + Fg8ZUwTIRnSOAHGV9tFiYPLJFNbaLBmj/oJlDYeK1wVas49vjy9ZNF4llKAgPq7eEBIDRLZzgFXU + GW3SHMh6/7HBCDi/j9AunbVKw75boimavcOTCf/47Zx5kbl9R7cb2XdCcsm+o6uCVPvkQ8W+s/k7 + F2uXnJdjBsdWm42Y57rSvrukJN2MowhPsCx2kSCgpTCWLieLGjd54bba9K9Ih7nSraMwgPZrPOaT + dDuv2ekq/jcZ4kA1s1K9r7WiwA7TPfenZ6Oz9xejxg7lYVrRnxoqoGKJUBTYO+xAEqygt7T4aWEI + C3nS0y0HxxSt543WQQC+ez5cx8sUjNTh66sTsPAVEOBNtl2o4p3XGAO/ul9MV3xDhZmfTtF+ouKS + Ac4d5b72XYyG8rcSbr6mQWi3OXQR2ESJ00VWI2xTRAWxdRPaWAhOsmKHDp/ClaZ3pG99h9Yb6dEe + vukdCS5OziICOvg5s1qSiIiHjDlEZCM6hYi4Srr0rpizIvdtTjUp9AoHvhVjo4NlFxpAH20YEumP + 79AQl4V020m/o9PDlx/Hj9hzi7X6NPSI6YcRDWifha7RR+F27Q0MWqL4NQfLeIaZHrtImJRgx/GZ + TeVCLHRYYxxOimwIw5maTa7NqDRdUhfebNF3NRoussUYjhMZLJ9bUAXdZoDl0MeEjfc2nlHGpGyo + GdO+T5OvHuAmKLzyTs7O+sepcuo0m92mw3gJR/d4Yzi9DyQHwMcZPbJJbnFQOpAD9HYIe7z4NLBr + W35h5Yxl0ePwaixWzizpjWeq79OkSKU8b5dKeW6eSnlem0p5nqdSHp9eONWkGNd3K6mULIAXH7HQ + D4Wv/Tz7OlboN0WFlazmSUw5FbzAnB8Xt8vl7D7HtOFeuPyhNUK8qqS7dbZdTXiahrw0XmYZZqjB + IOP4rY9KcCXpWmXvgYWaFG/l2X+UOVhI5qNDyPHt0ql6bEucINoBBPbPxoxH33PBdCkfQAojU6iK + rz1WMI8FrCGH5kHEF0F2fLB/K6eVOumllNJSkk5Tjw8QWdPLwc88+Y6GlKeaZyMVIBU+3jM5Lmsu + Y4BLVB2kQifi5tuh5O0hpefUfgyjvbGdhB4703R8szybsn7qy5C1MR0haFB+wNvbxuCx7Od8CdeN + VZXTPdl1/KkzWHoSvXMUemqj/H3kfkpJpr9dWnYLGjO63cxjRpLLHjN+VbB3HF+wqIL3Y4dl5H3n + 5TM3ciLLGrlRwCJ/B/K+hneOOuwq3bjLPBhUOPmKajcN7jXdrAtkEjjQROwVD2/gKyBiy43KS1Tx + KrAWZ1tu0FzFS3c5wj+Y54ngFv4j9GSZJ/4rqmL2tE55DX0YkdAub3BGR/76UGezD01rS21Np+zF + Fc3AVKqNGtAEHbYutPf4AWVT9UD5j/bjDmgmq40HTt4D8cL8SGQ0VG38TYfiXDDfoejmNNmbutoI + ZRHRKfbj75cFr5+I+RptE4fnNHXPe+2jussh6pJ3lyxqcSSh241UqJBcUqF0VVCX/OPv1aSSKNSx + 4l0LFagVuB4oUNhUxJnkg0h6SxZfklm2VPQ3tUkAuNyqngH5xD/iSciTAwSaoE5iKDxdY+nj+I8E + gZSe9mWaTBIwRWewLiarTDpY7mXYX7rKnly8//BU8pB8+U81JiLz+OrPI77TbH6HIR7WmvRpXQU8 + zqAdUYdcnFKZpZfTUM7skqov2PFYX+E6oBSbPthIY0VUAwZ3plhrpUZj9Mi/7ABns1KithNy6z1i + 3K+UP9pS09mkI0rtm+mnAwuACfxjUf5sZv4039VSU7PtJtnlk3tA8s2+/Gt96FzXUkkF9mnw3HLa + 5RTQM8YpBaIJPaOALprnUEopmC7gh873Tvt2CVj67NzyXfNdim432qWE5NIuRVdpl3p7dlUNjTNb + x5V22ctntssi1xrZrh3IEmRVEns1jkE3IlthXtxYrCutJOhKQt7kS7KgWkHKOZDmnqhlTmfQ0Zpa + 5r7Y9Fr3uz6IHnhBkzPNDgP4aOVy5APY9wZKCTu2T7ngnvLhHpDw1ivZUgeyu8ea1i5Xqi11W2iz + 55bbLl9KPGOq22QTmm4TFwXYXzqVixCTKJ8cPy1CR8OOffYa5p7l28yyng5qbjnhAso3crGoDB0b + C3T4PCOW6jJqQweAPct3qFJ7LpGucfG1K/Mzjfbu5qv2ckAX2jZxOuhv9BiZwL4nNUa3bQ3jpwGR + kVx2TkZzRfU9zpAi1zWfLAdxZ/Qh+MHzTfvlNSb8XfW2fZTJuI4AI7ds92R83AKOnB4wBCQX0iuQ + 5HRdeCmvPoSa8eI4rhOGgVUGJR97oe9b1gj+CJkgGT7DPT69SamKDLe6MQzOcgkfbCSOJKtVfD++ + 5hAchSoZucuRnwkeRPrJrziV7uAcBhv7PRg28Qq2B8WH9sdiBv2ejOPHz3jRg21ih34Ukint0faR + fCuikraCbVa2squqs9gb5zlz2m3B8iHjCi3ZiF6jJa4KmuqLs/x4X5O2BH9PVuvnaCTNnw9fpavb + dDN8k66ReOw6WT0dsJEz5tbv7Ww7ibkh2pxwU+gT1nxFYURDHAUiRW91nSGmMeYuHgqqElhuoJyY + nO0jW93Gi/TPrsk7AxF05tqxFJhuL012M7Ip87mYrZN3+QC5IdkZMG2TFcHqTfmh5fCu94m94sJB + jQvaM496yBRxmB+JLndOE3E9sXHYrtOGxQJvN9w0uOTKloFXxYZxflylk+a4PCUSCxaGlmeNWASn + xlJQq5ilrCYCt48+I8dSlrPyjfQgB5+ZS/TlyXWE+wcC2fKnU8UgP4ureKOc4AA0yUokT8abyd1O + tEydmqGUzwCHvSrpZbqYpJguvRlebzFbeFOKETGnMamDOZYdePt8tKPh9Sqd3pa8tY4FFk8l+KSR + dFou2Ozl/As+IDcwT3ndkKafNPgVizWmYVhwngj8Smp7vdLDj1U4E+ttuI0uYm20VRvFr64njURt + JX1rEBS2FMRnJn76ijs9KIO41cgafNTi3/zrqIqdZeulw0e7smCOwFiPl5gRrcVDZuni81pMiE02 + nMCR8g4z1UvLCwk8kjVOFpH5X7umhGsKznorPlNxLWxSWI/TdI6wYgiM8yUboCbJmT7CYCDGnLaN + fEUb1TPK7aaoCkwexLnNHfA71oLx8Xz/nm/QIQEGdp3SbFImn9Ioa75D7BU4EAqHui/1UlXcdzoE + E1yoNlPbijC0fXZLiRy9kk1Mzp8u5CBdMbhN5RO4tBL3ThAnKD7dtUSUSFRErH0GM23aTRTfx2pO + /4VdryKvJo9AGkt+Xr1hgdXvta3eoIfMqzdEI6XqDbpKxtOX5dpRsZUJE776gQpQrvHzFbT9P/D+ + AX9K1GxYVLPh21pJ9AaZIjcC/FqGK829igenEEZch1JyPPQAtTB3gO+QaHyS8COLMvfBZsBUEFDw + n/FNRQxW3ylaHdCIZEcOVyeVzzyLNKz6Et3GkPkssgtvmWckdhT4cDUesgHPoZMTZxLLv3g+/3r4 + +G5ok8O7/PE7Hp8fPCypFJmwR979fnHVXO5nVk/DKBvq6sPx5ZvDa4ndQOFkRSxqiyImnjHGyRJN + 6DhZdNE0xJxLQUQs+Ot3x+l5yDyIgAD1cP1ww4YDA8N+tp0ZM6m0E7EnRBJGzbJ+2vQMuSpZ5Gvf + qm2Wh1xClFz87txyWnCJ0u1mmXEkuZwZx6+SIfH+U6lYBzPjAo9VMuNssBSiEWjRQMDXFrCTt8tN + /FlCFr3f1hTA1GWa8e/ZEKwPw8gJpZ8hd2KcjwutGtSmRKzizMBM2oZ2DqgnIcllqVhSkrN5F7qe + l5QU4Fth4NhygB9E5RVYdvj9SzN6FFVP6fsIFnKPdQ97ihMi3kZ14rZsZcfphNJrX1+6XgslQrcb + KREhuaRE6KpIr333r0riEhwtSpht6Mp14FwWOCP4M3IkL9Wlln2ucebxTZwjZ4lMyg/xM5nYevet + mtiqm5B6RpJOmFTwmEZ+5NboGkSZ+hLPyEdFNv1E+tz3qx4raEyAsqIohHF42PZ0NRc5jssqibY1 + pytNPbNG/6dtBRWluav/DewRTjlyqXkzPTB9nbJn1GiU9KHx9XCt0dCogzSqhZy4XXc0O83ObNH3 + wRsaYtBRMHNfvHsGliOsTqzvLwUk9s/7I/2BbD3PsBB5xemyNqjAtjD57+BIudpwbbS+gzPOANem + 3E/sUDBFHbyfUFmEPuitZZDnAa6DJQ1W4YHSuOm9zqaHiwr5DqfX+i3ftfcKePmxuTKTzP0CAjDc + bOIbi8XFLQ30fR6WRsIry9KPTqYqYG8LlLRIGYiqh21PIJRZpm8JJgchhjkeWsu/wHmF0Ar1wehi + M1kU5d87G/soHn2gthpXmk1LAn5MD7T67CgibTQDnfySs1tjHXgPkh1STqTnepTsWAJeStfH3bzv + cGC0S9q4U5aCx6sY/ji/dDzPHK6ObjcybYXkkmlLV8m0PTv/h1c2bR0HY4vF87H7chw6oeV7o9CJ + bExtRMP2eJJseBpQ9u2eHy/gpbeTTZbi6lsRokC6ySZ32WK6SnMYJi02izN7cpdMx/DqOoqPYiyi + /Deko9QshCKdJuxgX9PZlNJy9EYx9ZZM6rPZF696cs9vLhlAXuA0wegyyw88x60wp36GAZmNa8ei + od7W1dH5Cm0Evs1g0Mspc2K4hjRcooahYdS0pqJS3W3j6xQK1YrjSMmHjSSmaH41mIvyTQY/z4Th + 9SESuU//mRJc0+l6gGtHmp6u4wYDMQxcqe8bO1O13VfRxcMxjXGp5vPyB7a1N6nA8xjZ2dk3BGbE + tmmKtsghFZqjNAlMyw4MH92Xv18vY+/7u7bvetXpK6f87lcg2G1KS5nHt5i6dMgu2yNtnEtbv5F2 + fljRBmjULnGXdkR+dskfh/M3o550fzsPw+f8C2TJ4s/7eUceO48qD1+fg2HRwoHHbzdz4JHksgOP + XyUr5/SPi6BCKx/h+avkwHP8IApHTsik866J+nQ6A+m9lwuWa9i363LpehMfXVPZ4SNK1bdssB0P + qHr9mWqaZATMs2UQ2fOctjFkesQ0hCwa0CLIdE3U8d0vRWQLkUKy5V06SxeDwt/lRrpMlrx8B1H1 + Z/ez4SRdj/nJc5jrtBMQNkCJxGLlBQIh1S3RNucM4ZVxM01tcMA6taoOq30MTy3yBozYn9rl4rSa + 4ZRfJo6nBoPfQ449LEXunZSjeHC2hKdQ/r3XfjuQWfmIabmMaEArlqFrNNFXy7VtW+KM6lpXssy4 + cJ54csW8+Omg/kf8bQBC4I+xTej+gZjfLjET8w9yKLismbQd3AAEva071lsqxe+V5gMPUaGhqvhu + 1VHb9u2g0CY6/+eYNZx/vPX2ertID8igciyP3gtlksGreFSa0pKaGY8Dco4XGpwg4Wm62fKk6Zsd + A2E8fw5pZKe95sp0UJu9YtZzy26VDiofMk0HVY1o6aDy6g4w72oGVEEYLFsrsJFcUW3FntRQ7lu4 + h/ntivrkQ6ZaSjWi6Sl5VZT5kPvh+ONFsZQ+sIKABU8Hu3/V2sAyeo8oSNCVU6DzPPjQ3UNuBnFr + 82znA4JWflXbGeSSmmvj+sKIbtKYJ+CKtFTvrhmqnuPY9cJmWVO4zSzN89dPquu/EvQRhL16ZWzu + 02XjWqwyU8eFmQoChTo73IbtpbEHJkb2hAOl1I8RbNRbMCkIqE0L8c2zL+QOgu0bBK1HOqn4Fzzw + YIZF2rayiPkBfWfuf58dgvQQ0vyvChpRecztEKvr0BcWL/AmmJvwHuTG+5PXXjS+MicSRP+46TYl + N3dfVew7b712pMbqGeN6fdGEXq5PFwVQjtiYpikiWePaVKe3AabJwTtl3won7gKtmBSOdfehy8S5 + w+OfToq9yWaVyVhhJ3Zc36Jq/brM77skrtuGKnnfag9y8zTyIe/+7oyHx+sbD1XuQ3WPgf8lXCIW + f+wrCPOKJAp1n/oQJSfndVAozYqeszYOJPVMi8Is3kS5LgsvinnNvRPI7nk7u5/EizJyxL7fi62g + 4yjyyCHoe0yb4NMEn0dsgYPMm45uxoPKFL4zBhKcjd3cb5SMP7jjJx/GMHE397McpwGmyzxd3M+e + xmskZLnFLF24Mu1pJ37ITuyOafbEl9nT1tgXyYkXiogJi1pgNdLthhETLrkSMcGrAr3iw9tK3QS6 + Sqspz4x5IRsx5tqO2P3oY2P99WKN2xEhTSxuDuQNyYMdtgsaw69AQMh262F6Hb8x+8GFQbfCJnH7 + kpMtz2lM4miSDYs4WTZSJbph0JyqURSowjPFrV0N/yadw65WygIJ3KghTSOM8NxalkyY3jQIMhKu + Azb4e19+cFH6zqUZwpEVhHsfZnhl4IlxEax9tZWUTMh1cov78vpoOMuQslFqX1hcJ2P4bqB38B3i + dFaBg59lX1WDnJJEBRiSb+Wvz/E4hu/+9dHmCSLwF9gsYaHkAS7P6SP/GMeUe/Zqxv6FSRA59KnS + XANq6tobnDLcMbprjlVENqSzuF4o9td6zpF5kta7XhrkeZ5FGYMNmZJtLFNTT0G9g7sH0IVH4lpw + xS5WVVJGk8+zmafN/s5Jm6hZ+Qutt7fxKs8GXd/PD5bLu6hpmr1ptiZU4o5flFvY/fc+bNthJF72 + mpdGJOP1MplgSn1/dVvSwIhkWNq37efMbuMKV8+YBqZlE1pkWlwUFATHry/yl4XB28Rz1FjTRH7y + 8kGi/RPFnuDRg7kipufRkiukjx2aaed7dAjIu2Xmh2/hq7Z4A4qAi5tUmK1o0HXjVnpKPOwrp+5R + caG3dEmYy2uNgdtbkpxDDp7GtYRL7tnTXhy3Bze1W7k/ggw6oWd9SvB/dc4s2/wgR7cbHeSE5NJB + jq6Kg9zbj2UYQhY5vg5D6LgIum9F4ch2A1cc4wql2/N4Po9naYxb72ITo+vSk+e6m00VQZAAbmqP + dRZzmtACkacwYtFDpbDtQt0p4eLtKn6HU42FWYL/HnzIFmOQjNC+aGvBd4phT4JJgLOuQqFC6eTz + bL2Z3Q8FKhyvV+L9Qv/4grMuckQO3r11MvWG8WwGMwxONkjOCJvnMl5tJHBc3v95jBDAyep+NLze + Iuc37IzrRPFc4alHjNnRcM93HeCMkScai0U9Veh3QD5qZr46GE1IYL5FeZ/amfumz+7xRRtyJf8E + Z4Y+SF18Jq1S95XTkvhAPWNqlcomNKtUXMzTJOE9ucHB99UCWlspcDO7X2d5GBKbgJdj3M50GZNI + ZIU8iIOLOfqxzeDrU8Ym9QqNiAOkOa7vECW7oODDRMYJDglCb+6XbZy96Noiz1RGtoy7b5gW0TFX + uFUqRAsb80ekWOyOgLWX99NpNDCHGFnWq+vs2z3swZu+0m8tVyRvVvTGjxL+sOERqd9tGcx0/JZO + B/mIaShTNKBFMukaWcW36SYgLV8sLZwcv7/IAQUVm+Xg6vQjG8/Sz7kxdwrPD1AITzSMfApjwozh + A3Udr6BXCHOx3MAyyLnyKsPVHSDXUA6j3Hb+wZSTVZLhJJw0dPcHbfTjWnSq38Udrei+kfRCuMT2 + NjBoewyWPXJsR8NEbZm2Kyepo2D/2BvMJY3amSHqKWPoP9WMDv4nL9M0jWewoY7j+f2s7NjSfxG0 + IBXXV94KGiWW+4CEDn2xhMEur9YApXtmoNLoG2CSwe7tPs+H+a6Algh+5KuVu96ubuJSsa/esf78 + Nx7lo+jToY/tpKXgPSl1luB2mE0OSjXsMZ0NzvL1gorpbDIfZXidLaZtZ3IfjBa+q/RS+Mp7brX0 + 2cuHjLWSbERXSuKqOCCli0U8z+5n40kWD3Nf2XKdbKecvGBA/ydfgUg5Xl3abmQOd0G3m3nDSHLZ + G8av0r5/fPm7W/GGBXbFGzYOkKMzGgUsiDAEha/rjKcJGILj12M4p8M3zMZ3uL/PQDcsMFoTjOW5 + BxT06+N3F0+5V+WO4xqI7Ed4UXTc3KSr9QaWXbJEswPHIOZLvwHGQdCY3yTJ9DqefB6ni7v0Ot2Q + Mtncr7I1nrDIH3e8ytzHX5Yqx1KOWSaGEgdSjVp9coQTuk0ORDsMLbuCdVY3vOL8vgMsI3DKWQ2D + xz4BQJPfpbd3WAU0SRYCXW3N0b3uuME3ixfivs3qfsmhrRcDXBLK3eeKBIbIEyWXBljB38EWeDDw + Ck9ECnoQFfBDuslka99KdxOmPTNqbxYJLlR8pOVaN3qvvmTvMVYeFcWiC6qNSj45m2ChFK6bt5Wn + zP/x/tJmnnlsim432o2F5NJuTFcFLMPxVSXJ0AmDEjiz9/KZH4GV5o18BBaNdIos0G4yGiS3l9EQ + C0BmKVe2Gde3BaY2vkuexutqNmJ+UyPZFaeBawQ+dcBk8JxHCMGg2LN3s7eNeJ5d4QgAowcjhTi0 + zSM6wK+oYJBCQnTu9WApyp1dzSd4k6+z75We1ZYDsA707zDfpsNsm+CpJRVkN9/m42EFrHXk9HFc + CiRzbNgi8k63m7LGhtXIO10l7XbxvkR37/owi/mAlRgA3cBxImvkBr7FWA1o9DyFSYs0RatkGaec + GAwTTqRlKHImRzyXdZZ8SWZk9GXrDf6En3ed3K64ow61Iz7DDUWMmCbDLykYszN+3p2m6yVoPu7y + x4Z5iQ8onWyLWbOgKuFbiO/P1ejFfF0FqdZwNKpI1ZjotgOHLnLsSrZ0sQBPV5m22ygqckLGKgh9 + 5YpADRC6zGNXZB2Ek6BjVc4xrwvU09ohxW/eJpgXeJFdPqXIxNcSGV5z0nrEvNCPKpB9+kzR8hrs + qHngrcB2YP8ZwPhUqPRW7efikdqM4TL8/xCs3mSVEa/d13RzN3w/u2PLER+89XCabWHKjbkEZFmH + v2MK5GIKjeIQwxQdppv18EOezD3NEE1PIxh4g/S3s3T4frs5H+DqU6R5lu0T0gsTypdWRfldjN3q + vh3y2JCgqq99dnc+hE1Op7096EdK43tERCNWPOfhO03jeXy7K7u751PKD4B2QkuT7zI4W7hvszlg + UGdF8/nkEkD0LMuWmiowO8P4FJsRk1+b8G0F8QGoWzmtBPVx4Dm8atpMQiPwtyDG3Fv6XctGFVGo + XS6ofYO401azGVU6oIQUFteKYmOr4RQe223Z1M5XkXIET+Ql/wfIlYZSqNBenNOgJdd5/pAx2ots + REd7EVfJ9tmuklhLci8Gs3b+qLWAkVnPFlneh+WvMYlfpLdeFWIaVemzbKVbaOvXRMXor/aEeTYp + 9/yTtyzAMK3x9ong5t0lWMYn42NznizxgBlTlpRe5soS1+nI8ubkPdOzhR3HdZCfvMyXNWYes61o + hH+gEYLr9oz7pW5Scktj/AcziJZLTkw6TyerLF6t4vsx9mhaxBqIwaC7J9BmMAAJLHn8FfWbCGff + w2DGK0xxvZUAnHcr6PhkHNd6cbi3RV2rdZOEjl5jKd0tj8pvI6EzkdjEywNpgSV1duhEzxlrp7LF + M6YaWzahKWxxkWbN3XbDdNyLr3cpWKMc7hr+B6fRJViSMPeTxZcU1hvPIMPDhASyQKTIZLJKNhm0 + vow3d19jlVy5lsnSby4lCBazQR0zCzeDdIoRjWmqIi9jWXiel5zrC/Yd9rYsCF+BQ/3Zlt/HhtEd + sGpPGKS/uk44htIW9On1xfg2noEi0+pdq9J25WOHZIOXhrtdj/rcFH99ZKvHsuM+VImm60UNs7M3 + armASX5Ku0VCAt1uyk9pVxMS6KracTHJqEJQGVY2XBgPOxi5QYS1O7ugqe9mIH7Sdw5A//uiDAeU + eoQh4yY3FXpQI9/99+CkUOFf66ZaJcuZ5KLKboavVpx/AfYDeAD2oC3fVbTvMhK7Fjqy4E44TMEk + Xm8Snr8JBtx2eo9bVUnwMlunGFkRp+7hJfdWgfxE7lvpariIyfSDPWqzHvx+cqxoIxgswgF3RhBb + mJ5EeRlfD087QZj1hhDbPn7sWeSNKHc+LleSmzvzA1tayCFrwSPLbze1jlFy1TaGq7ROzy8vKhSQ + LAycGh7ZwEMiWT+0IsFgf46ZwzFMUJwcFzT9C/7V58N3ImkT8Q9URdYJe61NScXFG/MXqaNG0WdP + wTmJM1Pz3z8XyuJ8tWx24CMABi6bJ5cf8CsK99jTUjlfoKO0XJyp1Wqjje0+WD2f5jcbXsMx7bN8 + X/QXi6NDNXShdT+wG1OXbNdmjmW3a3WRLQoNw34//k+WLsrhAd+xnHbNLvNpA5/WDq6wxm/MZ5RG + OOmGTfAu6nMMrqoAAypmk93gTrviOk9+f7VohSGu92W94eEi6Mm6ROG4SWaIhJYMZ8nidnNXpL85 + UonK2pxvmOOwFDrO8wGuW6Vsme2Q25agM+dcLUsx3vPwipYo10fQgUm6FhqJX85T2odPrq4+8cEf + 5Y+Nhufi4lNzBzzOv4oPuMVcNrJkTaIVtc/BLDXoXGXKD+WUN2zFpxgEjnFharU8bwlKtjlKMSgE + q43Ns5Ab1OvFvq7UR61douhcZG0eHwglqlx4OxRvKz88CCWkQ1Nhh0HFN+ca9BbmCGw+HS+7euRR + glfXlZ0Sa3zmgSI7iJ5bYTsccf6EKdIoiddwRvklUaCPIVXFOFSuC9n9ay4dscN9z3uIIlVb0CSK + nvQKTtJe9i5I0sNAG//nbPhOzgYnJGA0Z5x9y8bemGpS5BxwxzqOSNeCEJsWgRRrKtQ8VCLYLBog + RoplJ2hunbwbn7wb3q6y7RLtlGm2yFYt4ZEDUTxyfPHKZm/t55bTRmephwzVVt5IUXOpqzsoHZC/ + IlmhlUcpdkVk5FwqaizXF2wHptaDObhSH/aIa9uEcaMoOK5TXhHTEiz5QbIp+mMx2uc7yHmVsto0 + koaU9X2PmXO6+OSFjyx+XjqAdGXAGWIouCgsvIM5kwLFSMLCV4zB1G5nSqinjIHLVTM6dLm8LNDY + RAClmMCpYa/t+V1vCXHMfSYWq+Wr2kjujIpnk+wumx2OuOZSHlMhP0yeHQt1GNTt6sFJr8i0Ikrb + KBVxm83dbtxIv14sXi5AFvkamvYBL0eYDLaoRaV583vNVOwKJW3R4a9udh8e4w/8vKo8dFoeGvKH + zGvKRSOlknK6KmnSZswScVu/niXtnFnx00H9j/jbAGWMCefGtgWUuxP58pR2wGn+FyNa+zGcaV6h + TbgH+n2bPGLOtMOP9z8x61pABQtvLuGQYx6LpNuNYhxCcinGQVdJI/x2+aYai7TCoFQdHbwcw+QK + vWBk26Etq6N/S2ezBNOwEUTu8g3YudzjSWGG31aJHT3+quRHkPHzRuEJytUpsP7ez9c2G1/NJx7+ + x5cL7Egp5JpCuJI/Ho6QXzd33Emeu4KPRGr+n/fcfSsc1eu77Ot6eBcvZ1m6WG9vbtJJCn3kIYDf + 2PBz8WOvEvrYk2TAZ5AqJgb9NTB0P+9Jc98voDHD3aE8Hnp2p+t8dx/+upnyh/rHHCxVwUcqk7cq + pynTvg94wYBYNX4Dy8Vvk2cpHzDSskp6Sc/K6wKU9fy1nmbJHGZHrKRpXQc0LTKSOyP4I2J2Q95H + quVdypTJ58PhVZIM3755dTU8T5DMCfQjcnj8e+iGwUuHjR1fhoH/+Ay2oP9Xyaa0Ap/5hWxKyr/9 + /RLOp+Y7L91uNCeE5NKMoKsCluTqTSW7wOVLvTgdYON1XcuJ2Mh1GfNdvRBaU/W8KlUV9smvnK2g + yV4yg/zI8iJW2YfrXc661LAx8t0ktXJ4LG3zXieBbcyFBjnrJaihWYLAVMnwOpuWaGFC1kRg84gN + ELVIPC/kRXOBRTRyOsR5Ozi6H7XfPTSXVw+hnPqTH+Nn6Or8Mn08Kj5uaJMIdRgSZvkpHAxaVE7T + 7UbqUEguqUO6KnAhrk7KmOU2LkL9HBK9fOa5oe37I89D3AVShyeqpL1gQJfK0wuwPFXAA/g5niH1 + IcdHLEsbDd9+XrPl8MnpesKWT4+Gl3cZ/BOWTzYV2D4iOwVT2cVDR1r2So4YoAP8FNJjJErFelLF + Vm96F2VU6elZblPNb4BI92H1LMWDT/Diy2YUDMdyg7BJtSGjBpwKy6qtsdtNIE9N24TW71zjoWho + YyjENyI7+VbQxFcVeL4XsDIBVgMEJ0+FyWM6Wtk2DM+eJgYtp2lx/uRwouJomC4WcBibxffwX3GJ + Kvux10f5AMtc1dm9ItviFiNNYXwhCeaJaEX3YK9/xuTAA5fIAFez3FQc23cH4iugXiq/sRlGUm0a + 0UESd9NxtQRj3e1ndnwBrVXMYSO0SDhvt3WwI5kG6fpsJeXBGXU724i6Gm22xHnohWZI28YoTyle + T7J8huF3AMtsZpZ6PxBaqe5bVVSZ0ZfvLm2P8XAY4oxvh+LESkPVimDgEYVwUNfzj672hRe72KwG + Qnvv/CKtwb66ivuZ8L1AFNE814kaqasr7KKCI+VpIS2zQULBs/DqInwVPLfalQ/KZwzLB1UTxfJB + eVGkseWudw5IWP53UQqW6DkObCc/zoPWJqdB2dS2jPT7jvXc8tvF+cUzplF+2YQW4xcX60d8V9qN + EodZN44f/nRD7xCX7qUbBebeHbrdjEuXJJe5dPlVOs6cfbyseHfAqPDKXLpj5rpOYLER/Om5nqBh + QrVNhh0vsdOK3tbbZbIS8JJ0ZDjbrKoFHXWOE77DaCb2lbJSbaQ4sivYSfP7bJwu0IjMZiasuDox + 7Nn7i1FTG3lNWG0TWr+9QIcxKpQ4SJmD90095dBDPKv/tmTTotWMqSKr5teEsbWXo2H+Qbilveuj + HBWr3DnzLP8Xmd2qDbS8JU0KJtT/vkyFPT5N8ifwl7NFZtMv8Dd3OcCZpchnI8vrBepC4GE3fArT + yMsjIWZ9BIZUv7gUfF3Vf5+WdbENH+578pCGrgQycN/6LbNi1DOmQAayCQ3IQFwkRT1fzZaOwBct + uDvhq1fzX+Sx/Y/5uRMNTO/m966WM/gD4WnCUCTNPJJ8F2nz415f8vlKHuofkz9jRrPZ4MU1eXRP + 875dHY7e02kOzPjpORvnJ86lCYlo4OKSWaG5C5tuN7L5hOSSzUdXSZVcXnwIyjYfae5iRC98+Sxw + bdezRgFYflL1XOYO5It4tUnhSw6Ra5IgzUb1pZP8U8f6TLxi1oslVqVx0/ByuQgqpqF6TPNbL2Wz + wgX8ZvsZBiB+WopvOU2+5QjTJZhdNiB5SCRZbtJpo+PXZY3uWU2oshi31+l/t+kmXYynyRIawImj + pn1cizDge4ztaSPPwxlxJjSBJld17Usz0PavCmOpwVLGCwzXr3S0gRpRoyF8IQ8MzHg9/Jpwv5rO + 0Vn4VuKR9QDnmbQAfYfZA/F+uGBMhkbzie726uxNYtzt94STu3K2NE640XAGXwHerlWGiGjDPZAB + Ct+RkfFb0EgiJtuBI6uXrJXQl64D27ZbVxuKZ0xdB7IJzXUgLgq6NFgl8Z8wJOiBSlYwDXLOi6o/ + rlgWUHlyXPNkuY5Adgj9Pq7vCsZ2mklEH42HpsPZJYjLbHm/SqeY02Yk0rxW0RfTIBffMyF85xYO + qYnsM1WMogLEam80UfoowzvccyvXaFAq5GnFGVd4qmUhT1RfyBNJzri+yngiKuPxgoO8fx1y4Lue + 3rGToUtrIp70UR/CfJdmZ6/VIQ8wFSO1XVinYeuZKB8y3jBkI/qOIa4KmjDlXZZu5bqp9yHeMKuq + /6V8Pv9sC6dfu9pKM8bfR+/ObvGY0RtjFXIuh2MJPyBYs/kJ+FDwaMN1upvdWKylyFJRm9OoZZxM + PWMctRFN6FEburijYjo3daecqbYgCW0m9Al/J5UtAy4Rk6PmhdARr92oiWdMR002oY2auNikffIr + CT/WZpscRE4TSnteJAaw01gQcNnZuRUF5o4Iut3IESEklxwRdJUcEW//+AfGA3RPhG1Fpdxi9vIZ + C0G1uiMWMl7rsJdkSUs4Xm9XX9IvMDG3S1iLybdlBld4lUSpXETPhctPg4UzqjybbjC1SWcuvkHd + ka2TMRv54+t0LS1DGIwj9B0R3OzJx/N3giBC+D7e3n9h1l+nAKmBlJlD4i6SuqQ11wts1hBWY7Yf + +j7z/z14dPPh7auLxk9/hAGj+/VwhdmzWAm+2KTjeJktOVvJgC8MBQ3meBERH1LmrX6v8YkfqYt0 + LweOQFs3jFlT+MG4Rjf71nvl/rVqklyfcm1Oz16bZZspla6wnxy3bSG3esZ0e5NNaNubuChDVksW + tI1YXTHfOGL1HhsY8Gb4hujiIfB/IaufIGRVMxzrOeZr/i9k1f19HypkFSl678BD+pJW8BD0iCk4 + hGhAg4aga6RHBNUjfSfleCmezGszAPSju2oGsSEsJzIF1TfXGIeluTwqrPnHl2Vi22EhF/WBiE8i + T2Z/MOdN0Dr9Qz5kmv+hGtESQOTVAoEFRadUKKbAhFec4xzgJJtBs9y7cHaGnzSbpLyq4iK+YUqF + lRmKVEdwbQS2L4HMeOQJxSazbEFkjTSg1aagQ/MMv8LP4u9ivhfxVXIynQTOC218Or0D8yPCW60O + Tg7Ui+0XB5OwjXuYuSoox/w3YeuEXvmQsbtfNqJ7+8VVkTTw4bhM3DiouTb8kC2ZPVjw/6I95zD3 + f0B6fxFfreMXcIbxDkRF6wylux+tp4VV1RX7Ry7I4P+t1WYSYMzKbreX0DPGW4loQt9J6KI4l8Wb + uViZWH61uCW26HmeS4k6i5Jh4PJkYHzXnPYNn9f4vhhiGqHl0pnMCkShWrb4z1boPJ7xrM4wN9t1 + B+wTx8tNLaVXW8vgponupNAkjhBQpeAjadlA5Im6uhygBeZch2o/x6EUEM6mObxBfsVZt1q/wHO4 + WUffdsi/7TQREIVS3u5QRH689UVNdzEVV32M1mbCQ2nKbmGGPfXqZbx0ZFfGuzpzc4LCsWqmdI19 + YPR1UJyrfZ19RsleS2Snsgul9fHpw29uS8rO/CFT60M1olkf8irpuNM8XjcQpC9/zG7sSjxXyeKx + FcG1BiYwjR73TojH5/AcN6XX6e1CenIQKtlo2XxH/htzV4mZW+e7h2+5Xj7tK3y7X9rOqR0pnEzX + tZ8ztyVOpnjIGCdTNqLjZIqrAm7p7OOQqnkGMexL2Rqzq7y/jecZGNE8/JSt4jlPadVlwi4dhjZZ + 1xFjQel79ZFh9itgRPe3vlpFaFsuInNTNqQMhhwWoXM1MBFZc/D5WW+JRuZCdx7LHI/ONvuWROus + i9CyBNkXs1gLUj5+uyHZF5dcIfvCq2S8vzo7rSH7iipkX2M4PIeBP3KYFwUWqYvrmAcyiX2Uf5Dr + 9JYb4GsRi36V3lZLNA9DzrIZs23HroSla/2JpSJQZiS0/xh1jqahYbU0gs5Yka1jzJ2dno20KLXo + 7+BMvrV65QJGJibr1w52KYC9QNwM7tzfCMd+ocMENuMLIIIBzpecZMp1CDarR9AQfHV8hMqz6ZCo + jV+jR6QBgeN/fCPmISpBzlQU1fZVawLJocVySPA3zGrHyZE/ZA4JLhopQYLTVZkrlc6S6Rj/GD6B + kzqMwlPNhJ/eLwQMiHDdygCiFh3a3jIyfkSoOLCIynVyh8dRql+BoUxuO52pBb2kAgVMb1eHRp8D + RrDy8yStT/fYuRV6zLHl07jUTF+zqXCa2eQpTzizXrq+mwsFJM/HWoCuo9H4Q7IuuuKgk+ujMvk6 + vLpce3buvw8RWaSl+54/Y+69pyZKznt+UULxT5io/eMuMD4IybTsRXhyRqX/Z2dy3T2VROYwh6PI + s58Odj1feXx4yRsuy0CynT8+ndsO9hoP6nBdxAj6cAT6dZ6XOv/VDvdVMxU5NEBbm4mDrGUTffjH + 6Mix8zNBtxqn+I4Xh8W5X3YryT352sIo2tevVuzd/QjeqdP9iCaRNBynKchT0H9dvHah5eQBiiB8 + zqyW0W7xkHmIQjRSilHQVRHtprMaoUiAVV2ToPg55axnTKcWhLFYJC82d6sE3rVgX4u7L5afbTZY + 8v9irCK0AopPRJSzgeofbpUW637/qu/6YfFzFEh95HmzjtinbQ5a90Z2myyMEDsaPJktbFHHo2Co + 8mYaRTtyCJpljDjgi4Npjh5lmmjvlgdYYqHiqxpu0mW/LqWd/XV9OvGVVlZHzBiQphVGVxbwXvHG + q6hLU/sVwOEv8HMVMTkWP74e9Fb9VRWGFs9O/OPVJWOueR0L3W7kkxOSSz45uioANY5fY2q+5pRj + kYfcwkUUNfflM1w6ljuCPdzDk3uxjmVzF284DcjtIv0zWQsQ38V0LXg8iBiF1wrg1yvsh/OYg+w+ + 4eH0y3gaLJ8Op1uOxVhY68m3ScoVreRWKaBEfMhveyNvuyQ2k7cUDXSHTz68ees+PSpBjF398+zF + 1Ye3Qw3oDfrA/IobsbkvMuToNuBEsybnYuRGgeP5Fd8iiaVzri7KasKGjkLPhkNG2aOoh/0F1EYt + OkhoRU0lNVo380IYNR7j0niMivQtYkrwxaO9S8Ca0EgYspqEvp0Xxfwck4t3C2fVG8yLSxfjk+1s + Bn9cZZP18Mmbk6unw1l6W4DNHfCVp0h9HBYOxMjoG53xABtZC4eTBvVK2CPPBbaIn8h9SNX20F3i + o/Vc8SPAEUJ6nXzVGQ0kruzdH6qqGR7ennOYS/UJMPuc8eXZh9N80Erz7zsaXX3mxx1+bPZDPr5F + 5WFEUq9sJoes17sEZtshxmPoclM0n9VyLosP1Q7N2RgU53CLbQ/hZ+Qq70Hj7mP0SqEdcEPrz3Qx + GWITHa2+voKzfhgIj/QGMYVad0hafQSj9vdLK2pBSUi3G1l9QnLJ6qOrZPX9/e9/dyrFy54X6pFY + ++XYZw6znJHPPEtGYis8WYIF6T8rkN8LC9LjJ/FxQo9ct90d/m2r2JSP3Zf+Loe9ZVbLXJ7CU6Ye + r7wZzeWlLtOs+HhxifteEqstefDu7PK4ttzjXbp0Bnf4H8yyte1AeMELGx/txK0YEJSF8jOk1baN + 3TVBofUbA3Rcv/rWOEd5/A29NZP7SV0mafPncKCLtuohJuzCyX4GKwonBEyWCYwd/JDUkWY0lWjL + KPSOr7Mvc3ekXsvMTHQpzwym9AFhMmU7BlQjlw9Jy026Jz+hWRJuN4OUKkcJ/03/MpNMgG8fVjLU + 2u5pBgMMLSIJ/nAJ1qH5jky3G+3IQnJpR6argqrw8gQdxyWuQl7qU9ySfdiSI7hsjeCP0BYkwRfb + DWEV7Ks+l+DqPCNY4WNWmYjeQEfhMMUPtXdbOEeXJF8xuypdJmL9sVjBe1UtAbOaad1K8HX3SY5z + z2wnAoulkkZlUECsEWIFJZrDphaU+ZDPsyYmLAQ63SNy8F4bCyHzaDiP79X0pBIT2ev1EGfSdMgX + 0HgJB+IbmMxUifdtmaxSXLLroyJAarePOHh/eQG/KLpCh0XGuAS/dOX/3or8/snmmSeiScYAAz8F + KsDOw1Eo07d812tXbiYfMU3dEg1oiVt0bQcwWAX3avhEkLvgMoMjwGLztCid6vQlwOOPmcLq6ECM + vB/OLd8zDzfQ7WbbHEkub3P8qtjm/k+Vs8W1q7vcM48XL448y3NDkUZ3UeKpKFbNi41tHv8n4443 + 5OdFCGSNyoV7kuED3iBnc06vzoO8YPpsxjAc8EEx3XoSr66zb/cz4a0ir/N/t+kinWJYjDa64//W + kMKU2TR0aO+wkbqWRbbt22F5P5uutrd7SWGYZztN5C1Ngmvecj/5TGjZZu2o7VLvv97pMHLaCdvZ + 5xKbDdvb0UF5Qs2R3q8y4CZTa9TLtNIxu3hG9bcJ5sHSAQf+gc6KPH9iPcDlpHZqXK3WwQge8Dyd + fWtGw/iIxsefC9n5xUzFOXYUcLd2IXcEsc/qRDTll/2P7EZz0tq7P08/nDeol6KGudRKntjAmOBQ + Pocj9Mn42JxFWTxgxqMspZeZlMV12sgu3h/rG5njuE4YlIpZnOjlGI5pkeuOYBuzHOFCPUOPERjw + CSeswhmL5/DlEs6t6JiYrLJ4tYrvx2TyFxKN4kU8g1PsesQVBzyIiH5fMTIjyCvu4eAcr8BiwhMw + ncZuZ9DvyTiuemaFHZ5fq3WEho5eHyIdqo/SM2uHPqcxlBNGUjKe2KdgjnmtPKX0iKmbVDSg+Ujp + Gn1zPvE/JxuKQBTT/pp/KchFT6nrMm5GhrCuZBziEHz+yCI5S/j0CP5ZwIO/2y42RNGRfUun5FxA + hTC509qA2TsB2x92w+4lkz+yVLGvqkLLDa38eKy+ZR95Xy0F74nuWTQ+8WySbucHxdT6omftK6rG + bMV59sp9zuyWnGf0jDHnmWhC5zyji7Tcp1vQZtt1HeuqeppTlXnud0aSDplTHKmWSpEeaTNOZaVI + 12gXXc9vhQuTPByy+qjqoXiyXlx+uHgKfwrXxymoR1hHeJW7lNV5/ApkDlCwGF+PcqQdYqBR9U0Y + G1gvQXnyTRdZIPm/kkORDH2HCqnmh8AzwaYb8vVV7GUrf9v3zyT2KbOoaRTzraLwBLmQ+Df8xB5g + yvft+VI6yyP198l98ckffht+8kATpmM5Gw/AXzsAs0m+LLNpy9DmTgkZRfBeJ2uww3NP8jwBBbBI + O+3BUrko6klmnyDJULtqDHrGuBhDNKHXYtBFoYbvF3hmlEgT8p+vF3M2mOJ/UEcwEcy3bEp40t3k + N+m6HtzJXCUISL2c8l7BRe0PvwUWgR0tkxWYYnxZ7a54bixN/jGliQGxSuljmm3x/Nd8Bv7O+G0B + 5TTOswNhDNsK3N2riGzT032pU+bdMpX4E0HbwFmIfAKXVtAidku3m/kDSHLZG8CvkhXz/vLi3K4E + b5nHqs4A3wmY5Y/gDy8QpanvzWK2RIuqAj/8bP9+tZzZ3p5AaxOfainQqscsL87qw6C9tlIkiHRd + z/ErTuoDo7lNDXQP5tZIHHT5gAOaMyqfzLEw/bsl2nrp9P3DkdEPIfPdwT/5q4Ch70hAYb4oBLLd + VoVAeLthIRCXXCkEwqukxE4v/mVX6oA4F0apDiiwAjf0RvAHd8rzyBzVcc7SJawLnmZL1grsyJxN + cnMHr5oIE4bDF4Gm306E+1NA+oDlsxIMJDxQxz/SZLMWID9iCJsaolDKIltot+S/ihKC3Jslyzq5 + Ij1dfrMfP41Nw1jWE/76lt0YagTN5YVlXVis6KgMk6YToyBqjK0J0YOfd0oMcCWouhzXDQfinbkO + 2TVI7RRmN5FN6CYeo1w7IYFXobQrhn5ID27Z7wqzs3CoqQCatSrBpcPuvrVh9CadhT1MF5uiar4b + MfmtM/rMB/hfA4uOUcVVMjZasWaDK7c4Rebq+W/D57z0rQV/HT1jzF8nmtD56+gibXfJesIKgZky + gmwlPlO+4Q0+X7wLBaI3wbFDCb8a5HF0lfNGZ3f0dg6nyZdkli3nrbPHHYvleAUw1jfwIGdV7wB9 + gGUe9IjUFgjJVgC65kRjYLKtEAytqJFNp+v3wViWs9lzXaFVm3PDW0oMCTdqydE8KoRg7YoCHpId + 7MHTuU1q78ydEd8PbPrRAE0XTiRhtediXnXFrw6Zwq8Obfc5YsO0ULD0iKl+FQ1o6pWuydRJ2D6+ + 3SNHdHHvyCvwipqz1c2F1jltmiuKh4KIz4X1dnazXR0aGWeRLc7hyeYOe3WffcOTXqXGGIufxzP4 + XBg077wW+sKfkbYg8yKvbFnqb7JXWzxe1sL+4Gi4IeoSMeXeOdhHKP/wtnbHDH/NcllGWcvnl05k + /bNF0pd8wMg/oqSXPCTyOhmNJyf/xFOW7ud1XLuEYOy+fBZhHM8dRfDRXZH0dZVgLmcGzV7Rir6U + y1O6o8gXcTL5ytzaZC2Cpd2J5NvkmojAZkRM4h1O3BJGB/oEW/onmp1iee+1JlgUNXidtf7WYBtr + ITBCBKmj3+VwwSVfxahQkBNZQRRCJwYn2Zd4Bp2d3Q9n6eIzzMu8LVCaE+kyHA1R6eJbiQzdlEOM + zOL7PFNYPTng80W6EnzXjrogGNeajB4hKiTfivU0BC3bVmX6lKmbd6e1yu7sdjbNyd0H4szHsx7E + 2aQjB+b3OsymGBamx+F5vGt+LyPcRZNlVJG6w7lsW//vG1ehr88tvwX2O91upD6F5JLypKsCZ+ri + yo5elXWnxU+fRQez/3LsuAhTM4I/gijUgabyTFWtkvGJa109rUYZjoaLJF7Bkk55vu2EMq8vl2s7 + Ol5SWVyl8nEVb4bQU/6rLKC7AqXfWO3IxV3XOo/X3FZsqt0SevzN9jOMZfy0VCjiOk1hJw+sO899 + wEhZsYHDImWDx/jdBjQVpVq2bbMCx2r+0qMoiTzQXD4ksIZVNKr53XPdRAs/mjhd3VbVe7ljv0Z7 + X7a2nefLs+eW2y5dHp8wzpbn4vVkebwk0kKTJfMU/2bJEXOXzbJk8SdcKagVibXt254fukiljDRX + sFbLiPrvk2mIv4Y88yvwWY8I3A9NxeeQo767+7Sqw0JmaQCguzHwG1LLYN8mE7A86P14DB7AzdAh + hxSZdvkSu1pdj+ve1MCh0gNUha3S3MM3btslSo+YrlHRgLZI6RotzXg2zbAiYahCUAO89EK/NizW + NIpKE+VJgx2rXO8iWoXVyWAt4+pkkUcI0vEqvkZQ7cQE7c/ULePaIfn6Xo+/3c96Fv5Dw7K/IhfZ + d/cPWg4VnsLEHpcmdh+8Yb1EcqVq4HUdf7y/ZJFjnkREtxud8oTk0imPrhYyIaseshA9HkUPmffy + me+BVeWN4I+QsX4yIates//lKB6co6j8V25o+YchwUhD/6Asx18ASeawTMn+YWb+mievXqwxVe3i + vAlaMgarZ4yBGEUTOgwjXSQFWjS1tAI3nWZErwkaDa/+eGvLCpliQ3hC8hn7X/1c25m1pxSurfVl + IK3pTX5sMZjtKS6+wHOeW62KcvOHjLn4ZCM6F5+4ShbKbboRScsiyRTObOntbYLvhqSrSEWTcJhL + ZYjRcEgAqNNxrhu3oBunCMKeLHE8T0H2ABvgNH1BYFEeWF80NSCJ4iU7uqCIPHhjHHQ13tx9jdtB + qPbb0J53osSNwkiDSm/4Ei2ZrFzPotPXguOh7k7dKuYdV9po5BT0COx6mmBeshBbkLLHH2AQ/6q4 + bB4JGI0bBqxmVneHpHGFB1PNsK5yImJQ3jF3W3LktBPY4rwmij7OQd+1KPrgt5sVfZDkctEHv0ra + 8OrkYxmOjUWub1eKPmwkpohGthWxUNSt3cVInClRZq5nIPVrPXHKvsqHIkAmHPAdyy+fsYz5ifQS + iMCsnRxfTBCVahkEzNYx295cVKSoOBd15wj6M9nOpabhwIAlprN4xTOp0wyMMlmIoHIHOMjykfYM + 2XT1pBtHnE05xpAkTiAYCxC8RpU4zzbpzZrzLk9xsQsXFBpr2NjxxYnU2hpw6PHsM6M4G+qGeA7H + kTReDOmDrwfH57/l9RHM8uhQ2J3krZan5CFoRjD1gtw/O6Cs9wjwA3l0q2e0bUrKMyDDrfLJ/Vjq + s/oKiR9PGPZTUXzZwf9bczX/7txyHPPkC7rdSM0LySU1T1dl8sV5eFypTw68Euym9XLseGC6jhww + EoSVfFlxFZ27urfoiV8bxB81BPFn4atdMfzzIK66p464ASbc5+vtbLNGbTjFhDqOkBbPs+0CLkK/ + blZJMoQeyW7kaRqzsAYCTUWum9wve7I0Gh1vP1OWxi/wjfGE2/9b7Mw26f0tBmKZ4rvA31SGCrN4 + etmLoagVj/xwhx92r0Hr2jZlm6spV8idbOEi+eG5J55sfvcKNhmTH+gBNajY6cNRGSroZ78d9LNv + Dv3s10I/+/Ks8elDJTLk2r5TA/3MPOaOPMsOykSTZXzc+FbwyqD6ez68TMhUhhWKh/AYTQC4TDvA + 1XbRe1o1YxGWh1UrvnXf/jzmI6fHmbyoQbXrQrXy7wmYjo0133BAKx1VConOgRu6jlM+72hRDPOc + aquRvVF2fXCiBlZO21XdxxlhWd06RY6f4rfNPwvyJ/MeVdg7P31QPmuYWTkKMrMEJzZXTyUeZjgK + zTuErPg7l2I25REzWsttk78f9DjjMWEsizrSL2k90FXzHvCY0tC9cmAuX3hGn+aAPHKJrGhHIs/a + dgNzLUu3G+ZZc8mVPGu8KiLwF++qMB5RydJ3UMtGCOIRMpHMczxb3sVjqWK4c2KOJssoR2xew3DO + MH1nRH+BfvJ/xPxRWWAmBBBCMe5+mLBzpNtW75d3Dqhi0B7ZlBZ8jNv1JpkhExQm3vBa22xBP4kJ + NUs/JzNuft3FX5LhdjFNVrdYOTXdYmBDTAdKB1jeVfE8WiHzF31FNrPCKCirY46bjUVS6Kbej9DP + 3GZnVH0DYrSHO8V6ISvtTaNG0XkdTW3XddRn3y0zF9cKHvwiE2eAC0flhLuU6gADzFVCXHrHHQj2 + tVyxFkE6yg96KG7zoQj/+G25rq2fBkbv1FbGzn3Is8Ic2b4KPW++Iz2C4IipKIN00f7w/j3Ho2jN + 9jZeveSVnRzN4X5+kFzQaiS3doG05BComWW2HUai39dwmoKxGesgEi2b2OWocyxZPc+CY69lrDp/ + yLSCXjWi1dDLq7SXT69XLM+CR+9DvBlOE8Jhx4OPSIOn5PcIvofteE8Hu29+jUJLT2BDvJweTKBe + sj2a6Cp7Se5wmEU1E5gDxm9ZL7J9Ao3TgR1GYK19yNyXSlKHifzdkuE5k4BLmfu7p0yX2HtvZeQo + KKwXNBoKYlm4mSevDK/B8Dd9f7numcyaZa65e55uN82aRcnVrFm4Suv87e/nFTZmJ/BZOWd27Ebw + pe2RC6d5N9zNxjxfwSO9szH3j2n3iLhD4GhuWwdg8XcEWG7FKyhPmg4vA/njt0vLt8xPmnS70awV + kkuzlq7SrP308YLz2egk4lEJ9NZ14KgJh3vfGsEfUSiOmxfk9UmGnxzStBfKT6QlMcaoUmVizXKV + jFl4NVyBuhoV+TDnS+F05zR8RJGDD3CX8HgNk0KBLIzzZnKVNYXXFgvn02bpWPVpDNmsPN0Dx/pB + y0bsTtIVXJDmYFZSk3sOpPnQ7WrUSO5xMGi2dcVHGkdZF+xG1j7BgyvhdQdBn5yxSExAyRGJVdNc + +tW18qBVVkAhk5+aHwgVFTj80FBlOuAzUkVNAhEm4Ry6L0hS53xSYym4VpKv8K+GWZkbQr7ceLt2 + qodATidJZq+IxmRRpqL8lXGZhib6oBQ6tF7JUk9ntUkmtdXLPiXzlef5bnVuHUL4IPcCxediuyf+ + c2a1y0KXDxmX7spG9OpdcdWIOjXh0XROvy5/1CRj4rmHtY3cyU3ODh7o+wzjsKlxvHewyy1BrVsK + EPQzwfoiLoGHPL/y9p0PN3ByEucvrF9FFUpzzQg50GM2zXDuFN+kS0NLxZU54O6p05KXST1jmgEu + m9ASwMVFmpm8zv4G3jtROcyD7XX63226KRgHs/QWDxpvnFJ5at4C8vrCnsDrU32PssLk00pe5/lJ + GbaEzNnYux4gyYxDyz1hGBh37HHBIjiFOobIe44lMa3KGPgz5lUM1ESpiIFfFPAI27nIznr95vg1 + /O8dHHy/De8SdGaDlOOPFwWQAdxX5E/DK3h0ME2mjJco+KEgvrEojocZlqskD6ZM7pLJ52WW1kEV + 7CgfQO8wPnBqv3hPnrlU2nQYnsOndoUsG51HhxYeogS+UGvKAJrkNXYmogmqoXev5/zlWmJ3f4+0 + 1N3uNIpJ4xeFpTiDBYorBAwxnDpGxg9jTs3AFmGEv6abuxzfMidAMp1Uh8eq647nhpC537vqvD9m + Iz/IBaWC4Lcr2u6BvGQggUJGxfUGZ0OJW30QpK7lWpbMHG7SfS3LPhxSYrWPf68y01zIgXnRyPjs + V8fnwJc73MkrN1jFf+K0gC6g2035T5wqdAFdFYTOry5q+E+QL7VUCuPDgSv0Rn7o+rafh2fkZ5Hf + mSs8PWu0UEqRwCfmx98Mjg8yyoJesN+kgFEl2a20a1HMO8lD3snNDdciGD6XP4Iyv4V+kG/r4nrZ + O8vJo/LkPvbvMMBJllOLOIGZt/lQeJWHB1s71IMRCIhfFrUokaDbDeF9ueQKuC9epeX/7uSyXAln + O7Ztl5F9x56Lfxuhh8LZE4OZrUB+NQbTK+buI1h1OrYI371UXH69hH1WrUVO4iOWD9LzzLDKiSpz + C05QXDjrbLUR/uj3t3NRjYaDrE7t6yOQBAdjPsFgA19gZuesnP+HrMv4YvdHcOTc8L+izLvtHFb/ + xeWb87PBp4srpiJALHS401ggG+rS5GsU+ipK99J5fZ5KMxfnjwUgqcNfISTjjiC8XuCFdSKrc8Hw + LTuL25eUcxDQr0P15JjvCjMQs1CylqNY6yKj5Py/X1qOZ2790O1G6k9ILqk/uioqxI5fc2NGD+a5 + yCNQ1H/2y2duFNh+NPIwP2lXdn6xtn6cV0wv43RVPNck39IJHeXEbxg4+sdYkoGhR2KW4O+w3u+y + ub6AT65elcDTL+Op7XeqQv5QrK3yfcwHLalaHbvxuESiqiVPWpHbECkLIi9gll3SvvmAjJNv+nho + 1Vt22FQ0UC+3/iuYt9YEQixbGxz26Xv58gM+dxWTZhARSpVNqCnCpYXyW/qK4O3VabXNELbxlPXX + SKOfyg4j3ZVwWId7rct+vCwjP4VH5mAGpf58HIe7JwhIZbeONZkb/fkkqJjj4pwFLXZlut1oVxaS + S7syXRUlcxcfS3wjUeB5jluq2w5fPrNZ6NvRyIZOhIKD6dPri/HpbPLheDKW3wSNaEQ3nd1zN3We + qoHHWpHsx210wreF98QfbtLVegNLO1midudsGOv7GcE6wIBN72cIygpW0Gz45PTi7KlWfTxSBbEw + aPEWvsY0wePxurJT8N5R7bLMC9AoD0q4+1fLTQ1NCkwcWtLwfitUYqCNyp4NfVcrsJciG0hkVY5Y + dSAAI3WV2/93yTcck+HtClS3ZmfAdPTCEsmJVkhhRZxJt7RxwzgKOokdtdye5Tfsz2EIRxjm/Hvw + q06CAV8ailrFEps+jAgu8rrR23QvtzCXalBlZtHJ5oB+8f1I9GnXhxh/GENvNrK2BiFZ7mfFyYwf + any6+Pi06PMxCYeQ0VK/1vZaJjzvmJG6x+kpX8EMa2OHl7wP1I5clBc0iSqtfdl/ufjbNRSwoMC+ + WlpJ+z5gt43N5ZUOf/x+bgUtasHpdqONTUgubWx0VVQpvn5vV3JHXTcqwQQHL5+xMLBsZ8TCyGUi + 6H2lq6wP8eYVjBS6BlKeh8aHrDBMo+HXu3RyJ5Ten+h44rfkLlysJEfAolwIFqWlhGgDpm463SZc + EWn70HVyC6d9nALcx/w+2YyP10tMbcC/ns625LS6GfI8sN2PLeRj8D9Zwzid29VMVB33Vj/Q2k2M + 3xHDdCqngqqVLLklS9U7crLVTjANV8uL/NIOOipQdzEb9ENYgTEufCFq9342Loxy8ZMUt8+AlRo7 + he3z/cWexpqTxXbWtTOryTIoDmBD+Xy6uEtWKei6SVJ2mbIdbyBFDz7gya9pX+4wyeX3LKRPixlI + IRFZSFWQKtNz4MStZWGXPFz5e/LMXKzBUPm5A760VTW+64hCSgreN49Ym0Noh5TAJiptnF54d4vZ + 2cLJe0jWgMMEXST/9EaMGgOxOPl+Yr62jX0JfQCRuKLc5txywxYg9fx2s3Ibklwut+FXafM5vXpb + jvTajhc5FYh6FoSu7Y9YEPmOOFS9uZQUKXxpiNJO5e7VAh1zOJMKGhZYWUj+KPNikhVmxdOpQatd + XGO0cTLb8mE9jWcYri2uRIlZmx+RV4lCjaNt43R900eQl0XMtQO/Ur9QLGetNwDr6usdTMdvaspy + gsC1o4eKbK0V76ZEqC087oLu9Wq0s7ahyQ4OHvHXH+CsVmEsjzGCiPK0xNSbbFa/YJuo210naqYH + gpfkB7P1dnVTG4rprhjrY0JueQ+Bwc+2G+N4S8cDzB5fIvlX96yF7xmm6rGKna/bsqi2r1reovrI + iPKYFVJ29AInNTyxV1p5jssNyRb1nzBubeo/8XbD+k8uuVL/iVeFm+/336obko9+glL9p2PhTjVy + YAiRi6oYe+M6ZxIvwAxMQM18gaYITxRef71d8r+KISCXyvH7YiJYCRRUuNiyz9WtpKcCthKJWSn3 + TwdBtHSzPHeehZ7t2l456LVcJ9tpdncPhg8/lH8Fa7eE6Os22PmMWa7PHLTGRS6QptNh1t+vCVcE + UxhwT1nBLiUTgzB1F9YEjOzwCY7v0+YBfnLx2/HTWkh4BcgrQctn94WUCe3dpukNTHCERxEIWSJM + hrlMSByfwCyQ4ktDvR7gpFP7hc/Cn4YGDz8fVx81n9nI+fSda+wPD9PgCqh+lm75slLrORLtwraP + mf3c8lqhXciHTNEuVCMa2oW8SlpwtZxIIijNzOBzhX8ReLEK0eGZOho9EUfmp4oMEt35rvt0YCpB + nrkveU/KUnj/OC+dZ/fJGhm6VRnFtGgUUdNpYVuujHy2YMoH3EzZoCTnb5j0ns7gYVRyXzBy2+L8 + 3UFYg33pei5VPuziZTBfaT8ilOz7snLGaIqZOdjb1gt876CycRlXD7ovJFL0XQPcLrG/rcQHKYTb + R8cVVnWCMjo69q6vYjjXlVtH+Jax51bUDihJPmS6dahGtK1DXqX9giDktNBWoWwT3iLDYsw5+sM+ + jKs3f1hsmP4EXEBN73iRKJBjdGKc3MHbxRvOeyPrpDCl9XVdoZQ55VXgU45OsaMGIHFm+EM/M/1m + yKjkb+8n7KEWtoe2disHRhQZfQnskaTAFfWtxxfBqdfSFhSPGC5n2UBxMYtr0gqcgcklDreIjl7l + qjxn1qD5Fy6Am2l+EA6MCSvNF2vnKtQe6Su/3yrMH/p+cO0dwQ0eC4uluXXUN7WlXM6+AAS5cLxT + PGC1AgRRDxkCguSNFAFB1FVa1pPPqVjTxBiTE8bojpFBhVCm5Dg5AUEDlMaXuOMKdsqIWA65P5qK + Phrha5rLy9tQGO23Mw+hRNrjADmUUPAgL/yByiegBOIv8WSboe4z9xv/OCakfdJaUyIZlB8/AqKl + FjAivxptkxsoNFjnGI8abeFg5VPGeLCqGR0QVl4WavR+6QkfGS5AfhwBFel61tDTjzAIhwl7O3PH + 04QsTmwpWd2SD8uWJxvfpwgfv597DQ7Pl/QpBQFBtkU3DKU2kqf5kVdB22hC2dgDfU2pI7N02cvL + Ml/QurV70Z1g2IyKzLJv6TQWJ/8u6r1VjPOxhklNVdAjCJny7BtX4Gtliyz7dg82yEE6mnJ80xV6 + hLt6k/oBoAgFIHStWunl9N2xgZ2vHlkUi5I3IVo9B3vrur+4BEeOSzOjVdm9dzYeAPCRu2Te0ZLp + zaVHBaivL2GdtuAt4beb8ZaQ5DJvCb9KO9sfv19F5Ri4ZZeZaJG3xPci2xl5fuDJrfAUM7Dl9BYJ + k28u1frVERzeXI432fg0m92mBYYBTtu8r6ZhTNn/ebKBrEX5I1tHPZSiFAFVbSsImM2aiHD38Y1Y + IYxTU0hek63C5jBioPTKA6MVnIRhWMqVqsjEHKn/buMZ9Iejv+JixpmH1HhKuZaSW99dvhaYdkdD + jhC5ho2Ih9kFvzLW98/Ttcj0+KBKBjiflPwWIzAaVjDM6ZJHyikmn66GG3Q0cDABeL03l8evy0xS + v1+NozxFiiilcDrmbCC+O+D4tw7fD2EGwT6ZTdJi8zzxdo+/ti4YjYoP73y3mrJljvWnEAihv+Pz + ZgfGTtCgfvfvsFkW/C8xxi94dPlSjmtRRAh6QGnQW5iD6WzGE5ONM2/7AnriXeFEHe1zmSLpx31l + v3KfW26rQ4t6yNSXqxrRvLnyqshPEkRa8WySwgcWFZ0itm4HqDWCpwNxF/06UncrNYSDcDGfsMqD + WjcwYuMKBgs/8ApH0sPPNCF5fQUwYlfmHRBDEKriBffIMndKt5O7p4/keVDe6aLQOzhvwqEurvWs + 7aob7yy0yV0XMk+ZPgeQKTE4CCtnUPdR64/CCPQRqYAiDx15y5J2ea6P5EzUX+l8SF6mvEimMxsS + bWZiDo41NbO35tzcK3ZQM/uOhlF5vT+8G6+GruZgx59cNxXN1Qe1k2rE923RTb2QUyJtwMzWG51n + X8gdCzYiCELjsuiz/4JLETbURdrWAd4jL05Iq3s3Lw6PN8QLvAlW3nokC8S4Pdz4ypxvC82flmQ6 + niVohuFf5snUdLshzTCXXKEZxquitPTy4tyupFO7fLfQiYYxndoP/ZGD+a8emSs6llk1wqzxiauQ + JdVrrpYzu5ovrZcrNEU99WOhbzckPDMrsqOAhXv4hju1UqzgdCLbk3nVvbHXN75Hfy00vYM65MbJ + KrvmR471Ml1Vyk2tyPL1ZPM3F1q5qdbvIoGKMPmboBpcpg/2SaWfgy5Tb0CzXZVbwgncOONhj+fM + 58qlbryqkpr89g5a5NwC0d6tqVtl6o9eUiV+LNAe7Ttmq7PdQfGgfAyweinr1bgv+xIWH0XmxZ4s + +u6CdxS0ekyyr7DgNcbq2pAD5A+Zsq+oRjT2FXmVNjGq/UWLgLxZwxM3HCyS6TQkZcJzHpMlg2tL + TgQQhVYoeB8dLWcBtBU81pimULdufLDolIhMMgLtMiL3PWGQESHQo2rYBUBtLaYYZ5f8Ud04DZgf + 2Zp3Z72dZ43j0lRtDkJ8fXi7iHEcz9MP00Zh0YqS/oFZICELufaiFBZDoqR+Alk2OXHzNdI515s0 + 6OR+jb1J6KB+qNj+jgdRQIUlH968fh3mtLlKAZiX/0tFZyuaKe+d/dzyW9JMiYeMaaZkIzrNlLhK + tv7d6kaovGKERzcYKhETLU3i5PeLs7PxJOOu/C9gt6HOUHb18B02ULz/7oaYci3H88nPeCAXNwKN + Vq2caqdbS+UqtRjTEW83FrBe0z4cj3B8d1hxTXbsMPMZeeHadHKHx4lMN3rvzojGP0/2w4NEVUAo + 7ao0jPFyGcO23bZC6hE4IZWVykhj1wc65eLv/BGwVt4pd3XfFDRnbnNzzBv5hRu7XL8ypB53iDr2 + HPYwcx8N3W5GHUuSy9Sx/Crp7fPjkwrYvh2WYS2dl2PX9iMnHLk2Acahpj+BHZ2XZvCTNu5kSl3r + gf78JE6gG/QUH58T238ST+5nT0HzC8RDYhmdpnzfXS+R/jpbY54lfBiwJzbFa6Oh9FjEM7AoEYX+ + SzzD/QK++Hl8y5bCJXQeT1jPeQHMQiiSCpRXsccI9rMfxsuz7Ig1lsH7kesFZVDK+LbENWsFnh8a + 9TRH5pIfoslX4voeawLoVP0a/BSzYIDzXPHRuhH3zTCHUtUVz9qXhM4rNLotziTIUkBxa57MeGAg + rPfUSP4h6ZhS/uQ7ZdacN7qKqq3+73df3y3LCEzzseVD9BX46+O81iOmJ1d4/NBppitNJubBMh+0 + w00HOVd5rJw3QbtyP/WMsb9KNKG7q+iiKN7FF183l+8u09vx+8HtMmUuP3kxW5y8uoL9mmdVPAic + cCDoFnNQ493QhTttWs9uLDKS47rXz+4ReACSmsQFl9JtB3+3z0L91R70zPWzJ63/ysofz0O8FzWr + +/Dcip8S6tkXpEbt8eTN2pHq3ZNkao7dikwNbjclU0PJVTI1uErnu+OTN1VAM+azCpmaawVw7hu5 + mM1VIhPSyL24QvmSxtfpjH9gxa/m2FV+tQMZDQ9navMjy4tYRVpr5LSinP5xMVuHwgvBda1rOosR + lnQimsoajzcwl0f43ehfSTWCbzlRmR2h0shgkNOz2TYBL4kyGw7bkrOxtTzwOBSEKPa2jXn76Ilr + Co/9iCi4cjj5ij09tMHuY20CB/lDxvzpshGdQF1cFcWTGC1boYsg2X4GCdlGhkbSxeD1p7fM9hwZ + PJWXNdnInh5Z1sCMwLPTTGiDymIpSVkt+9J+pBj5rSJBxNtq83hlvnm8qt08XhU3j9MaIl7fCstE + vGM3wssjD939gonzAhdFnNsrk3iFSGp6FuGoGAtN18MpqM6xhFjk1rFO5H40jGfrTHl7RHHKLPs6 + jm9uEKntXqvtR4rCHEPz+LaGc9ccOJmbiI3AyZ7rWdFujOZlaUQ02WHYuCU2ya7W7eu9DRq3M01i + vp0Vhm5fURPzWNDosoTdIoDjYVl87QxokG7bzRjVxc7nW2hN30sVU6UqrKYO5/7Ran/1ToaB2XxQ + Em/iDc7QScFFWDKNfFhh7WQWEw70xaILjgKrSbANK94LrX8P3qW3d0O1khCEDYc1UQtpBBo4uRE4 + p+hp3a5BF63x53TKfbNfkBV2i83DFp4ctV7e5TXSoDW6aIEBajPF+OwQGwKON+romi/Tzi/aQ/SZ + oERqJ/JDimoEYYmCSqF/aYKZDAwsE5cybdR0at8Zvta4uVWzJnf2YmB1Bjo51DVQj91EOSW79gWj + UX0croVe/Mq4ldRN117LDvppo3F62pZTM8d7k277DZN/p7zivBFGpW9Jh/PFR/uStU4dUk+ZOp3z + ZjS3s7os0iQ5gDTG1wb0f7K7TGK/uKfhc9YS+UU8Y4r7IpvQUF/ERWHTvr9QZxBic2Eje7zPa16U + jXgvoWP/lF7zvyCWya/qFh7KVBbblttRzqLey7uS45n01u6l8hdzQUvNZkvN5tjOc8tpp9nEM6aa + TTahaTZxkTTb3f0yI6WQl7kMCuMPH3ChicJyEoYJ9oT5R/n81wLTZZ0sN8bq4Af47kJGlf0iIX23 + ASk/mCN8+Y7ntvHl4+2GvnwuueLLx6vkjvl4fF7J1XI4b3TJlx86MD7RKMQ6C+HL/4gzN55NeSLz + SJLLCraMJRzokABJ4q0kip+JPCcf41k1ecrQt59Xmtmh63iWVUs/InvWQHMY6rx9RXpdz3GtsHwo + Fi80zl9ofbddlBwCVsnfnTsEQjuKmGf1ILSmp4Odn2KRLcYCbuzLjg9zhAUzcNjewPE7mWZ3uOBm + eGdQ6B4mUKGSQuqRaXJ3P02GTuFnVPWr+83dCp9zS8/doLrFH/z8hwFOQBUAcFx+gvaiQFQNr64z + TNZCCYcmQOEwcnu6YcgfWFrjkXi/oP1pRoeiJRxCaMiruvqq3cdVqbbK6gLuW5hBAtcjyXKSO0ae + 3OP6YP23y+3hjxin9lADemYPvybAKrP/in1Ah8MrHlP0X07giQE+xovS/EAcWQKBHS1zU/A1Yl7n + hRvDdnF47iOMP5+ehL8E6tA0w7AFxn/HFvbUUfUCgtIb5uQBcca6QuF0sdhJ7mdEgNAnJmO/CICw + 7AnGo0FaEcdhGfNkiCm8BPJEcgrfdDEBIzkTsftsVfho2U2eJzCktx4NPxy/foe3wZ8X79B/jbOQ + Sxzx7bck74b/Hm/gLfDvXMhB56Wf/2V3p2v6VDP/9vh1NxhGX2XuuMwchpFuN83cQcnVzB24Sjr7 + 8vKDV83cQZ+8bu0/c23Hx8wd2w0Cr1qDp1PXYG01pwC6r3AjPR9+On6rtsS1UA6ze/ro8WIIh9zN + Kon5yEl4En58WAn+q5jrf14uth6maJtu0rmk55MW/3NxqLhcLbzKoaLcp7xNPjljPi0F3ZosaNeS + WDydoVCrgvCw8rwCdFFpshUfYtO5JIoc2/UqjeXl/fgRnuCneKpmqPYiLLSNXkQdT0rdxhl+kc2G + BXoy7aDi+E0DJbs+kPlfnWbTUe04jgqAjzjbnlS+r7r1qcz6iGcZDA6fhDBnoiWfZvA3Zi0HuEjy + lCSH/TTUiTj+1U7y5yoT0oxfbiCmP97VZRmZmdiduRdxQvMRLRGQGbCEBXQ0aLlQd8qWap7nQ/3x + +yXzWlCg0+1Gal5ILql5ukpq/uLNR2Y7FZCkwCmBJAUvn8F1sHpGvuMwdCC3AElaz+OZQhQ5Goo2 + k2936TWq6brKpjWtOH6rDRv/XTq5G4KqyKaICTs8+f1fDk/6y+vZC1gy0AMx0RBbgqv7i2QDbe7B + ZKJ+7kVLcpoyGZgdhIEf7cFk6tJKUT+6rgc7bt+ASU2v0VsLTa9wAHZSU5+7i6zppCkc055J/pBz + fECNKfAnsMcGh2Iu/XC8pJquN62cNh6WA/GSHg3C0W7s4AM8UXJvkrwnF459HD632viP1DOm+MGy + CQ0+WFyknQZ9cp+TTTZU58XBt3vuckZzLF7F14jQnuQ/l2Pgqg3O2wsLZIDQKB4VTeXPG4B3G1fq + 94TOI8S5GMDA+1+PxZv32Ne+/D4/Uyb89yWwdC2HG6AqFmLiMzJ2KoJ0R0jPxvo66SXC3aezy7FD + wgEW07jPnqLsQF/RvYiXSjFSPnXfcp+zVoy3+UPGfnXZiO5ZF1dFZPXy+OJCU3Z0pUxl/nG1Dr2S + Uiy0wN3svvfDkIxqwOC+E3KR5Uek+uCQli3v4ttD1mEgSKDmCVicbdHr+sM+UsaK7RKkebKCpcsN + iSkm7UwbKoyN3OjfP92iD/ihTmSnDkZW8E59TXUYN6FAAoJFvji3bMc8jYNuNzrxC8mlEz9dFbDI + eFYoH/g9jmFXPPCHL8ce8px4I8/yHUuU1ZytM54ugI52zsmEpxroT8xxUm4yzKzPNa7CmIaXwyOS + 5qj3RswaNwuBNe9JyuXybyJZAX9NiQNRO+Dp2SPv8eRfTR/BOlK9/tKunLjL9Zb733j4hEcZnjYk + krg7Snh8juRdOsAWXrGpZMPzKsds5Trl50ujbr//+O7tZaHb8DD8ucqOYKkikyqlJNzF6+EiK2Qm + 8PjJmigT4O4lHGGJo0f1+2iIE85R59p5/B/4Pc3nEW95wGelOsDC2Xsg3o20aWUUfmB8cyC+pOxZ + 6ylhpPT6beHBeeF6MhGlmlSJ17Z16j5HTNoW6YniGdP0RNmElp4oLkqmYj0TsS4zUUrxQsuO/EDU + g7Y7nKhdQgFsMhY9Zy2T5MUzxkamaEK3MenijuzMvHCW6EkK1bG5TLQqI8/rNBgtTmpt8qkPzx83 + NEZqPyxlcX64tOwWRbV0uxkrAkkusyLwqzkrAgaoSg5/x40qrAi+H0GnR35gcbu0KyvCCLaMzRBU + NdXtCQ63RpekolDwrIegUHh4coO91AM/jCSg1ZcY0ExRe7JjeT+/U/lxgvA/aqeyVF1uXjHAmahb + 1wyIp8yrBmQzpboBcVnsTcgYdp19G07h48Huo/5dG529uPvGBkv8D1ZCuZbwd/QQbd8FzvjAwXxY + kr4oKCiGiXZH9fWwvnljrue60Z63aTFZrSDKESuQDO6OMjq5DExG7yEnoD+fM19efsDNkfZ5BPUP + ttBfTmDVJW20STxoLapd91xtGlbnXI/NuY5HZebS+MujpO1HWOo4Srt7fW7ZLYps6HYz9mOSXGY/ + 5lfJPHt9dlzJxrA4R4LOfjx2rRCOiCPXikLP1QGzYD1KHChp1ehQuPD3eI0FHnh8p+JXsPHvYl5L + 9nVzJ4yw12lczZjIEf2egBmx3g7fgvmfPtUBo+ygEU6ERY5nV+mMCStBFDQ0VuLAaUJPvrgqogz7 + jh+WkajUq4o3E53WPq3eeeZaehsFbuP6NupGUMNGZraOhVLEMRYSB719vAFOIcVYzEKOk4UvRWtB + Hw4Or5YHJW9n2wnGTGZwcto0+Ih37HT4otyRUDel9lW5DMTEwTuLjJc7ICTLMTacHtyT3ziZWvrj + D6XgkHolyMNGb+Bk7LSMGvFnzING1EQpZsQvSnfGKoVveLdKyKcmbc3PaaUqg2590Xjvb+ulTovx + eS2IhHzPIePKbcQl1YgUO4UjlIl1QCO7IVqZ2GQ4PQ3tXw8QFjd3YDx0rLzfoHdvjK+uH9jFDyym + X9dqL58QWRSFU3mW7xVvHpjv0NR+8+3wF9jjEDYgc+2NTNZADzuUgnvQW/VYWheEuX/2pAPTm3jI + 3EN7Usf0Jq7u8NFi7qAccd09KwSiog7c8BDwwh+mEuA8lQviZaScrKDbwcrmdsPlroODaY5IQMCJ + ry/BtjNP6qbbzQ4RJLl8iOBX6RDx9vdXlUp9y8Egj36IeAZDaEX+CE6mQSQqND8QdmQhYUPD38Wz + lSKswDNctvo8vJ5lk884aGiSwueGOQorVWSp3mUbMDA3cqmlyfqID/Kacy3zqHBZnEwsSPNY74oa + RijyI/iTENx4mhN81S/pSvisbnFVr8X55W12XcUNyLExS7gBjfh0lu2AZRk8SC2N7QRu4FVACTrL + 1lGDXVC95ZRoGsfCJyrV5TCr4agSWUFYLfvJHTbrdAaP8FmwKb1AqceN+fN2BEPtlclmCI4e2xEi + J+mKKvxQNiyv7Vx6oqZbDo1SYFHROWrCppfTP3KOY5zcEhKC7u0qL4JiI4hfve+LDH6FRTZALaPO + mR4LRJkN0bM0TAtswGhfaUuO04iZ4FAuW3XaG4vAaYN3HzQPjVsj/PMXplNv735rgAlc3aLra6Wa + nxJbX6jg3dy3/nPWCt5ZPWNqFckmNKNIXBQ542sMzt6iPazIoYpn1X2/F1tBvpEQw/o8LYVsnsLz + PVTww4GZKambXmBMPJdLvJ3BXJv3kD3TF8oAjCTJKZzTD0WGe5SZ532nkJPpXDtv1Ucek7fq/k9Y + ta1TguRCtkX9udUObcoyR5uyatGmLIU2dfbmSneEO4Hj234QVuCmbDcMWDiyPStClFZuxGaLcR7m + rt1jeUx0lacj4v6XbTEehom2CXkcZ/F9slrnLBPQvclyl6sW21pma9o2rxPNcYstKPJpWTSm2hr8 + fvVPlQDnWjwBzsEoB4VUspXcBFbJejvjFbQp38rnam+I80oTkttqPkJjgZhek6wwBqrLRh5cz7el + J45ktAW7/a7VHDIvJ3RkcJu9ZfZzZrWLbcuHTEPbqhEtsi2vigN9Ms9PxnIGF3cnnvM3htuyfH43 + 1D7lDWLxk+8y3MZcm5HTlLe0W6OX0ji+i6PAiYgkZ9d79uCg8wRIaQpzY4iroZMLwUYnghrMg31m + huJ2ky6GgdqrZ93fzJXlEdxtlvJfuoqUq80VZe9w5GpT9o63G5a9c8mVsne8SrvLycVxxUMC20hY + KXqHrTCMvBH0mTmi6P2qWOjLyUTj1XU8z+5nBaA8YcvwJHgq7M1T4WP49slSbgk6L2kKs2I246Si + 8WIYr2CXp7BLAgtwna2O9BpgUMsaoD0+s9kkiy2vpCEO+kTkXvMb+CjY/+SZ4aIDfCw4gY73t/Es + iaeJLJo/Wcb1wIu4gHX+CDtqcHHYsMKcSo6dGrJxaciMbBktp94KyziKo0JY2Adb069gKapxbU7B + 83QKiOobDf4C82CA11QGIHxkcfwhO6EyiIccfgxl7o+N9H/q8UOLK+MFFkQgGlRvaHMPcA56FNCM + VigR45tXeXfZ4V7ZPZ2GHrjNJsB92Ln5d5ilt91jVKHKZQq9k/Fxm2wm/oBpPhNJr2Y08euC5P3T + SaBttsz2bdhdw0pSExYs+u4I/vADsdu+Kwa2fr98Kw9j0xk0MRnHD0j615qmryinf5o+0Ayz7BbH + QV6rlYPztSQn580LvDB8QKayx1Spr852vlgIzA5axOP47YaLgEuuLAG8KkCWTs71ikvXDlwwI4JK + QM523MgORrbjhZ7I1jlTiHi8mm9yPwGzoJArLILiF+9+Dz30OqBLQF6U2eP8yVM2XiarNJsWFXvR + QcHd1Sifp/ncShgKAaA0mdVUUZY7U8rPuIMZKwCma+HyHCtoiowhz4DtV/IE97UorKAGyDzme04T + QLbeYh7gygdFiyVZbpPFqwQNTpno7windDYhZEIC/bnLQm/Z+DWfnEw/P8WvOcmQG+F6KwCz4R/4 + zURQBwsZOPqt6uOoVN3Bf5ljmRqnNwHr8mg4y0CFpLwmN+PhH25xLjEcBVen9IzIJcSZq2I8dugR + r0JQkwG+78O0q37su42dignsMB4igc+15Fs5VjdXhrYqdFcmpEVZ8rse34OREYTVAUjA2r2epes7 + wr9cDbHmAcz8mPsUbqg5+pJ1o9DcYY+JFBsuYZqiFmubLOflMTvto3WQSFEoR/CMTNJliu+rvJvX + 2ynFLc3mkmOJDaS1sqrI31kD9Ci31N3PR46OUIQju0mXhn0XQBDa04tk8nm/c6+fkmNQ5iYftmZP + MHk/FkW0Jkriuvm8AmmO+16r0gK43dQUR8lVQxyuSqjHfyHxSLm2wKkxwx3fdqOR4wSOzC9zreHn + 1/HwJl7BLnJPfgaVbSv3tintbTnayFqhL35jUSdPUsG+jlwWRlYF+LAv87qAkZKtbuNF+ictFUy3 + ANNbbJ8lI8BpYiHVOluu/BwX2tpg+eGmnKri+3YjXajlOwESlA5O7mIUtBAwDHMOEAPTOFniXMft + f5F8nd2PpWeJb+6gJdYI6ip7AEtLhWhE99bDJxfvL9ZPRyKFBP8hvVS5psE2p8ks/YIRMvhpLlNN + Ci+HfVhvr8ntvQEZ62TFB1WZMHX9GPCZmpsdtjMQg81XY8N3arm/ekQ9Jedw8i3diMfMasMbDu+u + Zwm+SYleTJ+Fv3Ch681hsQbBnhXamjZCUyCdNb59neI8xEGUbzlUolF4l9YCQk1AcQYangjbSNjH + 4PYrEMr1DnzUlSSur73dcRw7LE2znM5SqUwVT+uCcBnyLO4/js8tZps7Buh2oy1ZSC5tyXRVhKH+ + KCU5IMM5N1eLO7Lz8hmY1qHljsAkjkIBSpLHEXAHEPkEm6+YrSfhZcvZBzxksN7ObraC7EAiJW3u + 4s3wPk1moO0n92v8bAmN3102z9QVvrujID6YHJ0MkfWLOQh4b6zQekQY6X5dU0d4mJuu6BEotngb + z+fxeHbfTObF7Mb8U1AsflTJcJVv3wjApHsEi56AACGzywLpAxR9/g2SLaTbbiO58n2Lrg8w9fdJ + G5w0jWURyevRTrcBLidFsW0xayAGEdVC86i3ji+RZtwnqV3qHx3DylOtZdf6DSepY5Dj6r3rR6Yv + 3kmfIibv6cLhxCFHQ166Ol1tDbJsHxaH6DtE1hhVqhgoPaOXOkTe7mIrYXQcIgQOn8QBv7xfpdPs + W1wMrHdLZrFDclGhDtRqpbpZEFTq8/s57MstEln47WaJLCS5nMjCr5IFcXp85VYSWVyMgJcSWeAo + 71ijwFGUnE2BtWwG0r/W1v3zU7a6VnvMDuFsWnfMfpzhMM+NBIdsH5DpEYF7fji3ghaRJrrdDN2L + JJfRvfhVmg7HF3+v5jXZnl3G9nrmhsyJrJELyzQQE+JiuxF1FsqvILb5d1cXrjV88vrD8d8lLc7R + MIODfwGsnA8HDJQMcGAibHybA8SAmP97sU6f/Rt+yaNKx8v/dKZ2/X4R3HxAGniYvDK+w0hDpohs + OM14/c3f7/qljihxGbZirjJHBMsT394WPIDpejhNNgkmnKLxd5fe3s3uh8vtKr1J4VIRcEv+Pkbm + 1+3t3XK7gQ1+O02T9QBnr1qalk10Sq6nOWpuslkLvd891N3ZSGiLcIZdDG3a6P5MF5PuqZoOsyjl + 8y4B+3p9l00+79dn3yOH1GMWVRRtF/j5ChPne4kr24FSYzORiWo5LeCY6XbDTFQuuZKJildJY7/5 + 1+9Vje2XXACwgY+dyHaZN3Ii17NFaoD3t7Hzt2HyjTDjYkGGcTOLl2P0IKmrxYOZVgQ3Gk6zLVja + 4zUa4nBagMPcZ6wvi1Oi08MKsDmcS+PN5E5cPypwqKFmuIyn9nKo2iKlI6gac5DQD1zcWX4f4bXJ + AMGbb1lDqe4+7V1AW2QuUmpVeItqRqlOi4eu1QjObHvINl8JPYBkHOyhNti1eQcBTNmWwvd2GOZB + c/ZEcShyNGn9S+puDLuRj1xJG/wCE26AC05tMp4XEQwdHYM2ySybJ1i1UoirV5TJjrg/COL6H1+j + 7k3Fp6jVUbsgBO2QSbFisFp6GGyiDi/PANPog+VHlJNYPHLzl4znMQKMcqbNtvFrByu+8RF8dUEp + z00U2L549fAtQUDNssl2Peo0qPU1SgfF3Pc93RR56QEAsDc3gsdC9Q6HJOOKKFqtrmonCtUvPrJD + W5sFLg7F7JKCUGWLDu1Q8jv7JK0MW5wL4STQ5lyItxueC7nkyrkQr5KV8eHkqsL54NpWBfP5mWsx + y4VzoQWHRhH6B/P3HosVYDg5UkAZQ4528A+TdV1+YE9O/kfgNLioqyJFl9lMOzrBmWeacgJp/s+v + 2TV6MpeZKJ2Cu87v108+ffr0lG9Qp7Mt/OPk6XBz+eF4fcQZFvKh3q7mEreMmKqH+9D/juAOwThY + hAmAZl+teBAtW8cw3b+kqy2P6WtzZoDTJD+A+U7P0IGNm4vra3BW82yKQJ6xrKitdzA34jUcgkKo + HIU2cbcprORCCkhFCI5f8hWzK2DqbzcSlCOG/8BWsD6ACSBypOoIrRaA8fx2U9WBkquqA64KIvB3 + v1eIwF1WAxdvR5HvYfI+fE9Rh315l0kaZZiBRN94+vGigNEDd1RpuB+dA4j63IRJajeKY16EbraS + EsJRUVkcNcCCWoqR7etwMkW/kpA+0Mvdi8OsbOa77MVlPMFknPx7XMbr8Sz9nOf9jIb4z5meFV7K + fjsZPrn4PGHLp4V8u7qX0GJ9PIs5m60pGZQwZJAVCeeW0jewbAf0xgQjXHwNxYR1KBCjTe5/jZms + Z/uvT3eSYFLjj8QdE0AOyeXoD60tIqVcXklmw9BDRgnCEHqiB91SOCMqWz4/t1jUAhSD324GikGS + y6AY/Crp4t8+XFWcRaBvowomBkMSYGTYCsJI5ItUsp3naAoJNfzbYl3jh+8r5GMMU6m5N/ygrFdH + BadEGDHkTWhoCs6NKzC59jURsHIuSGMTFfaOHRizOpeH3+T5kfJRfxfQSqRzv/TBCmgjOaEs2Ill + 98j58fv3by4L264uZy3rkONV0vRBwASdrTM4Zi55GB5lFN8QFo4aXjAB0+k2WQ9wakpV7kSufSj2 + b50e6B3md/BLg9TWBvwfFjkWV1RRfOMyNOtsZ2mHw9v+VIC0kafwa+xXzHrOrHb4NeIhY/wa2YiO + XyOumnOmKTlIKgSqkELxXfhF1XnJlwPhO8Fzy2uH4yOeMR0G2YQ2CuIi7ddf5rEgzvoHeTKPufkz + 0P41/AdTKBKvMPX+7DUcRFwWeP7TAUrgw+NaYU/kvIzKqrImKt79MgKLvtCXeLLlKJaogvMTe0WY + Mc+0F5G9iyszx8OYZNvlTET5uvcahBNDIQoXFfrtpLd4jUhtBN077PqWo/TUwbyXVuipaZNnUrfs + GV+eNtUhqI9PbzlWslCdahN8hDOcwi/dB7XjEYqBzRDl30Lv5eZrNl4nnIRGLMV2dFtDmazOgrB1 + G6OCG79pcPa0SmWrh41/43cOPc9RjvTbZDFOvknpx/ohbqRbX1/wuA7KdpG2LS5hnkUDKdvMtVR1 + yiZdmYP6CxH4IR2sq4JG/G8wVOi5Rfs0XuBNYFuuVSo1nx3au82zL5Tnis6y7fV6g/HHliu9R9wv + x6n/FoVpUIVzGcGhRHlAO84DaNtnTVO7MvnM2jPVMw/R9k7TTXDDnJwEjv/c8lsYLPIRM3tFNVAw + V+S1Al4u5lqPMRgh4WcqiLnlO4qybQ+TaoSl4jJbbTmd2FdAAlcHvDF+2Isn8oCH0Rd1LjigBXII + 0ovdz8Z1TXXfs7qJ31O42IZ/c4879OBawIfm82xjHXTmB6UyEQJs2DRxQOQQmLLJx8hk4YYsrwDB + KaYt5a6H+pDcr/X6oQ+SnI4N/FwkNn2gekWKeSZ8bbfbLeQjpvjqogENXp2u0W6RrrNZsp0g3lnT + dmFwS6ElxKa1Xe9n2jt4C+ItDbR7VYe0l/HAGr1DrfD+h/ausn7dsA+jA0XksH5K96IEO7bwF9SC + VHf16tzyWwAI0+1GkTghuRSJo6siEnd2UY7Esci1Slgq7stnmNrrWSNmeQw9MKg53wtsqfUShnBW + AIUXsbh0WY3FfU4x92RRC6PmhQFrSASOmOcEkoC+IE42PU8noAe319sSvBmIbCoW3idyiblL19n0 + viSQNdHiRF4Imr+a8lXo2jxrQnSznCBoyoLWepoLXjcSo3MF9hlm3qYUxPNgBjVknWu9L2Ra552n + pMFqZodlN8osdrwgk6ZNvIgJpuxVuVpcp4IqgNGEzLEwUeQ3mkVjye1D41rLjzBvmqSYeKZYcDCE + eLtKqHroSNEgCEDi6XYxxewqnpp9ki7C5QDXjSrRZiL72qLqF9VkukbvjuQQmhbbqCqKXdnYVsDP + StWpuU6QQqODQHLs1nyKipjG9DSLiVRsNUXGqHWmufunnYo/FGsOBPiBfKva/LZ9qG+dkeMGQjPU + fyRD44NFxcfb2juBDORp6vWFSbm9J/ay4mJv3bxXllBA0+rkjea6uzgiO7v3cPSMgRic7CBK+SAo + j893EGjw6WFD4GNstpdUOrk7UamfbKfDLLV+S+Uji2qj/34JE8w8eYpuNzLZhOSSyUZXBaPQ+T/K + YDu2zTlvislT9sux67uO741c32e2CN++Trkb/Ns9981ME/xXvCkBo2zu0tVUw/SHBTwv5EIiqD73 + +mc68QBMFwwATO6S6RiGRctskYmyZ7MvVRAd3dtVSpZtxKe1fdv3wwrp5FS+47j8kk1IOr7V0AQc + CKPIrVQ8i3cc0juKDKU6sJIy0F5kNVJoyqYGP/ATDXBqqeQnUDE8fvYoudKk1EiU0Jp/kx/YVrM+ + HnwXL3Q3J/juXvcICePzrchk+T6oZINdsxeupV6wZforbfcc9U5jATI1mW35CaazRP56Lpc5gj8P + Eis3YCZoqW07bAFAy283pKXmkiu01HhVwuC/ZVVeaheTXEoAtJHNIhaOItsJ8vTlZMzJafAw/QVr + TnkFVAaTAPYE5dmNeabF2VBtkiNljAi4i8tFzNwlfxr/6i0VwP0Nq/pd9CaF+HonjA4IrxWmO65r + e5UKbyn2Rfkt1stkgulUOKtFk3U7sGM5fnPpSX2bZRtOr55jXpM4O7CDMHTKLgltdHQi6aCxml7r + mi6rPBIlkY019PUiuW9/skqXXBZiyEnyX75cLrLZ8OwMhwSOAEmpHN7xm9EAxFgMeJexWnUxLRYh + 0ycrQvHnCfR4MjCZwMfDJydv4Y+no1IxjlgF1VZFgWDjO0tC6JOxuDiTOUHQpxlCaq43RTYr8Tlw + hJ5cLjObLZ8O+ApWwLwwRjxW43h5RqJqud1WAzKcqoziF2stj5+hdCh6TTqvJy8UMbVtgNLKil3M + Bw00Jc/mhbHbMyq1ae4OZUHVrghTCZGSoOab4aNRkDe+o7K+O97OHu+FW9P1kuI1OnlyK0sAOzRF + 9U0CKIan8d4Ll+TGTdXjb85hczTfuOl2o41bSC5t3HSVNu5/vqoEO2wrdPSTsxO8HDMPNiVrxJCK + N9gNM5fM4KFJZb+tRz7WT7ZhI4DrI64eL1f11JAHQ2OrJIF/z7bZKllPilQGT07fXjwd32y5c1Vj + cMFD7JvLI/XF4LC6KNaDHsFCRBIYckdP0zXV86eLySrhbudZ8iWZ8RMuVnPDXUkGq/Yynnr2cniT + TdLB2eWJrerCLdj9CDLvYOzsrpWJhccFRQgWlGIaVNa6yFGuMkcyXgctCq3pdlPG66BaaE1XaZX9 + 64/zCkaDY0XV4j47cJlrj+zAs5nwT8GzcPycDV8nMl0Ttx9aav+6r2Nu6qu27/X42z1IwtL/VZWX + tyDLLVNqFheu5Ya+F5YLpefZQma2oCO6ASbZi6K9cgcwCHyApsUBGgnMGTgafBO/I6yNeqOjoQab + B29HSRzwe4ZPw8JBJxLC2KFnaT0EW2KDI7He3sI84StxM/yKgZHtBrH66XFtDujLE+EfeCCFU29P + kxuYsgOcGDkzuM9hjb2IIgdISZjRefxwoksYSb73qi9q5vyp2/l68n65duBwOfyjZOuD3xF2ZKIz + zr6lU/qBpm2LoFWv7hvPJW7JbtZJP8CBzHepNAYHJatZxi1dK4LMdbdqMJlGXUU9qOdH7hiu3DGi + 6J8tCDblA6a7Bkmv7hv8uohsnHzU7TOGyFosqGwdzxyXObY/gj+8MGow0Cjgw4E7QVmJOvH758Ph + VZIM3755dTU8TzYbZH35v/BG1r+Hbhi8dNjY8Z9L4262gu59rSPn/BVRhAMfM96VJeHJFE1mv2Z2 + yyLEwlOmiZp5M1quprpMn1nPF59QbeWg9ioGTGaTFIw4uTAUbEipQduD0yJzeipMrPjRZWL7YeV4 + Pda+/fBQQ13uf7pYJKsddm+LHPou4h8CeqRPA59H65mnTc2dtWPm43XQ1g3TktJ2xFrbuRGZ9gk5 + OoMdc7190ZzUasSie3bOHLcNnbR8wGi3U9JLu528TrvdP96VsOwcx3XCkOlhBJe9HEdgPtijyA9s + kXl5pm1tsHPcwiDKHY5CAh/HFyeXch9LZ9BwLcn0L7iPwdTxfFTlj2HVymlHtIkn55bbAnOHbjea + ckJyacLRVQmpf1wyrsD4dwKvlOrrIUJzEPoj1/r/2fu37raRJF0Yvua/4N1Yq0gVMnG2r2T5pF2W + rU+yq6f2t3rNgkhIQpsiuAnStvrXvxEZmQASJyZIyJarZ9Z0SYaAyHNkHJ/wUTXosn3NFkC+bvvK + 5+hGBfPosGUdOGOhDTu9Viz5CW0ubMWRlcdJc6qPtvMezXdEqPIlGbfdY+b0SpiU35hmTKomtJRJ + +ZB2x+3dRvKWu/g7qidlViuxHCwfy3n7R6OGV97i99X3kKiQrbhjDSJbBR7d7Jq1YG8cBV9a6HXr + jEZuZyzAkEJZQOncZXbTAJi2s0tPge31Fla6RQzbFT0S5qjneSJ39nB/WAK9y2gHlPfzTllj5/yD + 7BLK7l6DjINpgMoRPrg4wygc8SWo0T2cKvS6WQYJUa5mkIinxDnOL6+quJosdD2/mkEydbjPGJ/A + D1HXR8gxJZewLq0XMKWT8T1oH9kd4nxFKswtvwdEKMT5OmNMxT/AP+pInJ2qQF79Iy/r2hAYAd3m + bdkpjGPwNw9ruSTVZkX5N9lqtoJ9VPEIuUFLC6ETulj3riUKonEjaQKc67XV4Q0dG1hPGwDdHqRL + +R/lXmv5H7vXgsrNlhfAtfRQ0LYxDN9QfUSj1wXOXeEIoxp/ohmtadXoBMuAJqu7eC0SS5T7a/5C + D6xAMp/OzjkvIFYI6i5BTOXNNyy8nK4l+0AiyLsQnlSii2alnQzkltv7eI2usPvtYpPAtlsuUTdr + no9shOc5F3Z46Ip72+NaMeCicineDQdYAg4UCNBPqxUT3heiCJe8TKdc7Xg4M8KAzbSXbR6qhY6o + fM+1rAb8WW0R/vPsUztIukETyfqN8ANEPLyJG2yUTb1pugb2SucR9+fOSW2/ijunZbjaU+I6a+Qo + nTJaW5LcftQ6jt5QXh/GcvXT83k/oMX8G2P1Uzahq5/0kATBf7xCmH8s9yVnaoSZbGKjrItdcZ5k + zFNapmt7oeezo9E9PiU1k5FqfniZmceoEjNEgqNLBBrTVnvsSmZp4KlSEOmdR8o8l4BsVYprpeRB + T73TpVCAuyTbYCnAeQzHfdMaL9gyOJtZFDJZ9GkdQ6/ihQgu3YwxHGlN1ZF60KRsQj0Ms7mj+zbh + WhpGrOJ71bXZeTcgwqZV2v2qdsYU2EQeJEppkWIHFQnR1Y7vNn4wmzJiyoe1QAHYxbEt33f17Twp + eiCCsG77392WzIycpTjSLNaSvMv9NJIm9qe2o5OhWCJKqV+X9qqZjLMXdP9h4aw/AZAFzgRhvALf + 96ZXyb1jLg04Dkmo6ozSCT0AoTgfyBBZrYEjgaJmQ/RpOADmkPEcgNk/cY+tsB/wsPrIGIBZNaID + MMunJBos0m9l/yDcxHfb+6io56FKaVO9PlEzCDYDF14w3Wz19v1pMD1P58jC03UZUp7Qwwvw8BLN + aTltQdb/wE8JNjYeUyjr9PqB1OsV7sdFcrsUG7Gpj/IOSWEuVJbC28VMnz/EkOIsCIU00/fWN/b7 + +oyE0/1rkaiD6tqWU78fG+Dt4QbaBXBvBLK0Hwfsw4PQfxgGgYbT37iMh3jg1amzc2E8ZMcIkN1H + FhefGIvi1IAuiYtndNqKwpPx9gt8ncqISSGTv/r8hvnAuWTGq3pcoiukcMuRtcgf5ZoyD2t47Atv + SMjn4S5P5WBkjozfuuD2CehqVh8PY/GRYfRW0Ug5eCt/Sq6CaDWTcd4KcGZKSWt4gaqr/dnJxemR + UvK4g0Nxj0YdHygueoLUa9/Bw5Fte0zsSlTtpEyxvU7+3zYBQqXUqVz2jg6LP/65SDbwdZhbWvD4 + oqlATN7vOc6P4PVJjQHXgf0Ci+rH4Sh2zkztc1QQtarn+awbgArajDkkJbWufXXtIrgd4QTuv7a1 + ThwOC7QfEyQVrmPXD3/j5dPuEHD0bLuAJZ9enn14W8yoArzrZwMUEnngcP3g5eaHDgy9+o4cQgC3 + mUdFtIpxVTqzn1GtCJl13oAgZ/eMmJUfGQfMqkb0eFn5lFjul2jFVJl1cZ+j9wnNa8Xv4z/EOyN6 + VVzhgUexsJYUPZu8CXJDYyXs2Zf+dtbDw2ypxEaHC2IfqiFV6iH7SH5fK8+9cVjIwY6px5OfuiUN + jyqiKMNEvPwaL9KVobXEleE56utVamhIav3yyVsoQk+br3Z/TBWg7MB8GUO/wu6Z389D0ckFfYnQ + AZKWOaopvW6I0CEo1xA68KmMdTz9ENYSfYXPSwfo+I05Pq7FBH86ChH6Qvfo73SSTXTESTQ1YVwa + pcpJo/ByTpWFl7GKa6EayTDRdxiUKIoY3yW3wJFzzSsvLnsyW4Y7Q1r6xZZoyYWifN+jZRuLYL2l + Nh1wq5f/CROdrm8j3E1igFvEdyi1wdywAplRhH7ovc8brUy2jolhhc4uaqOnswlGuJtzsIqQCaxR + HAMey+o4e153plRavBZiYQTT3G+Nd7bzJIIBenjuTbq0N7nOCHMW5JZb2CXHrI8RKf/G2G4rm9DN + tvSwakeS2QllGxLIbnUbUkEVS4Nwjx1iRNrLYBLKREg7dPukzuPrhkmQgnItBRKf0r11+vG/g1rq + vMP9Wup8aIU+DyfwQwggOONX0gzy59nZmQLuFCZjUNYoSxhTvfNAMmRqOYCOXnm1M0JDbcKSREsw + eHRVnabfg9pVhW70ZE02b3pZqY9nf46fZfEy245fC34XHVVvLdYSicds9PTWsajyUU/zUbfBPvJW + ZKQy7fxKieJ1ei3ckjSaamJDaLXiSGKqhWtx/5+jn7xKI9xheQ6+HQiER4/xhnCnOomJ3lvQAdPv + DxiIbXQmD1f4Qqp7nS5uE2wc8TqEN6SDYgcGtheSz+Ir3HhooVNq7Hy7xh/xd6H+9b5ThwpJZB4j + jG7Zv2leOn5Pgrbjc7LFJfEMVADcUIgeDIpBurqLbh8oVrSFy7bFG3JgR6KXmjtsIqBbFGXojckO + cVybMmoQ0720umlOfK+FHgIpAU+L7BxdZ1SWUPXLaP8DgbCNgJna2FOq+bWiIxtiAzuvjT7mPqBP + APqtCza4ZeDACE3bCgi+7N3Hi6t+cGGKAohQYsynHy//fP3JzG48kveiGm37TdpvBvekeTAweFsA + 3KDVZAZCHZFSKLdyGzLIIMdW2M+ETN8YW5BlE7oBmR6SRLq9njEpYBa2chDu/7XF8AO8J5f/hmZG + XX8cf0YiI0FKmJfD0P1Rvrg+Hqheq25bDsUEFrFbWbKAL2WYofjHZiz+ckvcfoahcZtNj2h+26OU + wFWabaalCl+ltJP9Ay5dxp2GqMac8J4ARUZKm1GQx34eI4MtcVDtJkUllNV3s3uEuCrv+sN6qfgA + U/o8d18Gx5bdS5+X35jq86oJTZ+XDyVssQx9SeYPC4qWGs9jYfX5/rCoFsPb9bLWJpbLcxyC4vPg + tIr9XiIA8sACKZhheBnHZAQeObZlPNIiWR0GEj863HvyK4p1vyAoi2AtHoGW7NzWQxTEO7ytR4eR + ByKktcr+TPciplgXIb1eXFqeb+4AoteNDGmScsWQRk8lktjVSQ2DktTLsiEteP4bTB5n7gR++D7X + 3T96GbEIl1fdkfomFpXESDeA6XgT/36VZ1NO6hinBp6E9CsMq0BshAbFeLLtSjwDWrfr766QGrBH + eWmVLKoDZA7oJgqQzzyamygvplBo+ZrTJqigbr49m5xdXdV6N/r1lm+Ef1ZGOY/7bCTHK45dfVr6 + WLlCRnHwcLNtRLCMyQXX5u3xOG+tEVFO++iTFeiENsmgRabVfL010OX+lq6hhqxM2LrICXtIISwU + vSpdSvKM7ns7DFgcRF0RBFP88ZKF3NzXQq8bXRGScuWKoKd0RVyeXdXAwB3fq5TR8p9PvTDwvWDi + o3y3Aww8XQP9DkCksk/bq9bNLJgZTI8bWjW0h51QDAi5YkJSLyzRwGrZrp6NPpX6IhwSCUb5C2FI + FeVUbt4XBN6RFRJTSUYS+B2f7hJ/Nfr07szP2aDrs2AAxCDmyhB+2cH9uChzQ5KOKCzsWvhoZAod + zNGkXGUQbxPxTwGlm/Q31z8R4DIcNbdcfdSD49dwR5XT4z3wa+h103J6vI5fQ08lH3h9yiy/XlAP + U4hrBfUCxwsn8D9xawk40jgRMdbAzUFxVlYlZQEgtnAZz6CFp4+91zwWrdYvs1lL5EyA+dhBWMhf + 5bwpUIZBMsg20W0sAPobW3ox1lOt0vVc9eE63nyL46UEWEk2SS7K6X3Fw4fv3CTrbFNEa8sWRbzN + KloLkJWoSDiQ6zM9jxNnNcV/MWd1pAuQ82x8vY6jL/iPezohtHGKcnkBpyoyrJR9W+5cP9nCZyRr + yY73/poYFvQgwfUV3uOm1TUSsyyfwoSKLFgtcZX8dGYizl7RqSpCg7u5Tcw+ZeyY9QqwLn1lbBfL + m9EtY+ox8YDvMGF3Rdpguk6uQcrWEjvL1rGer9+tNkwYyUKfQPRCxkqlbbNyRYE9jeTA7ijkf7UV + ZonSdZZFi+aaO8Ok6Q2ZQtWD1t4FPyi1mFNqMQiBBmt5eHog92RAre33CqjF1w0DagXlWkAtPpWB + SZ+uavYUmMeGgFrOQsdiE8a5FdoyoPYKZATpYSig8ODYohcmL+9xuskaynvky10pCuv/eqVzumdh + hFOcR3n6PlWU5wT2gsWzShCVh+anPUrRDc+iChc0ooP7OFDhDdtyyCafFbOPxgbM1RYgaMWFLqUC + lUqS9chBELzOpXLl8fdyQspeGBYGzK7KlIYrw+pSBTuBsqmZpSfy2cO/ceY+Tm8XDzNkdl3xvDua + UugxihPsjX9Arrh6n3sTItNJ0+DxNxg3vJwP/DrtPWjHZp6ESyfJdi/ria/koPAtO7Z4LyGIPjGV + gGQDmvhDz+hi+JZkEiS6hqEg9YAvxN7OTy7kr5Uf/wAKo2/RFyHk8MCXmWcSmwA+++OPP9B1Povm + +nGspwZ6jqfl65eAB3bCDnRFCh5AtltKt5sc8Cpttyt7uB2oKLf9Aaucit0rjDH6akjIB+GslgXD + e0yIyxzCKqq1gqtVXiuMAtxZ9LoPq8s5ZE8oB9xPJaFZiLb7ZV45nryS9Qndl9t6vobERYfo9+IU + HUjeJ9dj6+HrlyvWi1yf+27IcCwzat3XgMz5PmhUA6Ly8EDFhHmedcy8XiFh9IlpRJhsQAsIo2fl + OJCUEoZQbKwUoit5tMV1WQ8L6fGthJO3wtAPnKNy/1AfZo43kqlQxJ6paN1U+dmBy91texfEHUju + tEKLQlpbejVR4chfgRHBBpndGTE+23YlHkMhYBaOM+LHDR0tnJHA7oGdDxwbPTBWiolfzpxe35ti + OEnaY6VgprZtP35W2fZH/UrLPUYz3cz6kMTlYSv0uZZHdqsPJ686eH3DrBl+uatxUnhTGea6nyxP + WWcf3jMemBt36HUj446kXDHu0FOS4T+9rpdFdrhV8X94z3+Do2G74cQObM+T/o8rOnAFLNtme49H + UsY6wK8oR47JQhJlY2xrMj4/Pzllwlp/8en1ByYtQJ/iFXs8LwnI7BmWRv29HIelHmrQXs3pYk67 + zYlZPvagYioiA4IogJoHR8hkN22VjyouFpe3JSerdkbvqNSTACHtmHWc3N/FXP8u1liAxGPCMUU7 + No4ZFyXBN5ZfMNeIgl4ap6ymQ7wYU0nmaLzGJAsQZ5doW1mUbS8j7Eju5LV88pk4BN28H2DcDvMP + WWVAJ0mbFsRUswIVsByamtIsoBph0MOmZKfAYrLai5xOsSZFllcxuzu7OBrJ/anRg01gvtONbpqA + 2ZoevHlYA01QV2pai1kbO2RwVorP1ccwtSfOxAXNMskKscqeDtHqoZYkydXtUhZH2BNGM//GPIsj + rIJo5g8VhmYJRPj1ZREMUBbPP16ev3pfz8su6IPQjdc/bjfb8ShCoVEO3S5v0sW8ZHXoL74NU5i9 + L4nHciHtsPYGYTutX7ZgZc6Bme9VSfUYamHlU15gm6maR57Xq+YRvG5a8wgp12sewVOSmD5cvq26 + w1joorpfqXlke2EYBhPbh28l1L2InJqtk5VM5FnH6s7Wa7gIQV4AjebKm4gtErivX2M4o9JsCO/e + wPZEQw1Webldp982dwQsouPmfljf5lWS4Pe6t025afVyfbYOlnJaiCOO5dicN4apNQ6wSbDCBK32 + eoDlFopI4eXXKEPFmYZqIFShwbKtDW5xx2K2DGn7eQszwk1VFN7xrZHsOB0HfcgivrlguKpLCyC7 + aRFCugzctltYqtQM9ORiQEMY7HVbtkZxgkExpRS/fg34jPTyVRZv5+ndA9z0CzUdPQaLtU8s0l9T + WJ37kv/PhIqs/NhQ/aYn0++IjGjAPNwvbAatGZ5f2L1VSOJ+lm8gJWQjjGzaE7VskBItgmPUt2sD + mzESxAcqqGIXyOmB5R6zfvl68htj/B3ZhI6/Qw/phlqvFkw65jzraiziUgQ2qhLJ3jNn1P4X8blw + yDlc5uo6jOeTvjd2d84tTKh15Nk97gEcxu1UfER+ADnTPeUnziVUaZGissDqa6WFUwDIey+Hbbk0 + LqRJHrJqGZIeHMeXARdFgwgGtUk2W1nfrn0ijPfPIY10nmI7jzC03jrHFu8ZYCg/Mo4vVI3o4YXy + KZ3km20mq2XiTQUqGf0Yv4HnI/yjcIb4DiO/ue/mu+U2ujc3cFheSEKAkUOhW3eQRXrVwSwVNxQI + cG2FhrrVCItSUEQYBh2GL/DBBuWMTqrmh2DfFjr7PazDxnEtgkyQnRTuWk2C2e1yt0I6O9fRGjYl + /DFebcz16f3c9T8Bm9VyQ2r0Ps/K/1dsUqBbsBc/LGb5cJe0Ib3OY+VbjrC+Xd6l47efLvqDVOeE + pCB99c4ez+EC6d0jxSudvGpFEBwz1q9qhfjEuGoFNaBXrRDPiEeu1itHopTUtU9Zp2PU+hdoFz4f + zb7dMAF/HYRBQMzUJs9yju57CaJvhhW1YLIm469JRP+KW26aLvyaQ2nvUMYIPUgQlXrzHuK6TSj0 + 5Z71ktJ+Anw1Ff7be1WMCHSEgA5QG8qYSOfZdPP8Stvcq0ivG+dX2jWvIj2lM3nx+r95La3K8SuF + wR3/+W+gkDuON/EZEyG01cLgq3idfk/EUsCcLBIMpaEJE5asi/g7rydX5R+Vyi9XYsj91kx3x2W+ + zdljxZCXBqQJFmhFKuqe615Bq5Z4NTm70DPgVa9HF3mR6eZpWDVkaMnKVuTOK/qXJf9WKY2IPTnJ + N2xGmZt35IhE85aiiuvhrkZi+UvZnOFIDkPs7ZYZ6Hfae1NrTiEnq0aJSE+e4/uBRqA81YbSUR8K + jwKJotgGZZqcvYdNbG5ap9eN2IakXGEb9JTYxtWHejACZ3YFuYM9n3KXW441ERWn7O607GQB9Otp + 2U8uAfOA5JKROmrMZnDs8gX1lYzmBs4x61MCSn1iKqPJBjQZjZ4ZVBbr/GOJOq62LfPg9suQ/FmS + yc8oAWaLuNG//nhvBZ65FECvGx1nSblynOmpPM6X/10/zr5XOc72898w5Yl7E+4HNgYZE6L14gYT + cIEpLid0QyXX2w1hsRThk1KJXuOlCfwdDsT1A4UxinpJDxluoljAViRLZQK/XafblcDbF/EtgvPK + prLxpyxiK3Htndyt4Dfh/4nWpGnDhG+BW6COnmbbdZx3ZrnJXoyLjdxRz+Fq/b0h0OmwVLe+brzd + KXMtIXrlTBgJBSImE41u83SZrvXSDZ7ndQwg8ByfVbhg2UBSW2UNpyL0w7ZQKUV69PfbRCM8Uzm7 + dz2qBxGShaFz8kxtgUOFBT9JNjukfYpyNANpZrpFuX17v79nawAX2xAqKEN2IMxVS3hKu3LvgKoh + 431tdEgJ9bx0qPu5+/qS6FSyQ5mXzaweobv0umFetqBcy8vGp3S9vr16W7teQSuya3nZHkpL9sTz + bdsN9YIRwLc/XZ5cXIyfFVA1ecXbaL1B9Pkj4PpU4HiqvE3KM1TWIjfomRKXA/C939O1hIPHJl5f + TjfpVIL35+1IcHupTQIXTdB9O4tXaJbDFqB9tFu/yHskwlcpX1niWYDwPQGmulik37DlStl7eeW+ + zW7rVy4Nu3Sl2Cjut+Lf+dwHfvtYwv/rS+TZ1QnScZmC9ipI5c5piC41UwKrAOmVMFw8FtoYCvOf + sTVGeHrylHtgnAMATolFwk/Ky9mnhEO7e46u5KJcg/Gnh0LJ7Pi6FS3QIoeiKrDRzzaTUxm6DIbF + 6QIoGXzmGJg479exHwMsoBobtHbHHrG1O4QuggeizR6t4GRGm76im2C9+AkxHLNyBfIidvJoaxA3 + eha6lp8Y50dSA3p+pHgm8fK/Jgovv8z9CvWCpPNnClzqaPT5zynIaNtZKVz6MxIZCVLCuW+H5Nz3 + 7NBTDpm9vTpD+flR5XCqhJDDzqN7RAzKNgncCo3boM27bfluUCO53MKKNIYLtvE72A9BlcpdHDUx + iraeDOW2P9Df7jJOVW4FFsAmWRmeBybNuIz7fcy4+LqhGVdQrplx8Smdg/PXn1itlBm3qoYf9nzK + mA8seQI/PMfZZceFBup2XIpYWlQtHr5t9bR4PC07boCKvcM5bcQ8nqnkIaptBlyL+FtM2JsSXlgg + HEcL0PYymatr5fp12ng+G7dUEd7ovQ6OLb9fYJT6yDjAUTWiRzjKp7TFvq7uZGAUZvoLWGOR6Cql + 0CMtueVPKsFxQoETSlCNRkhExDnajKzKh8t/FKCDj/al4VvEMahcUbQW1iatyodBAeqQOEc+N2LH + zNItXKt00+zfQSBOWj0Sl6BAxtRr0c1ILYfU2L9TrmsFbr5ydYzSXiYd8qLl8089m+a08NbVdtRk + /Kelgmlq7RiHCfWqMdYjV+mg4le+72hzsXeJr0OTuZ5OThND03K/DdIo0NaOgm0z3y+Ogk5v8y2d + ZtApeFunOWl8vW03dkSvdOOmNBxcyy/gsrAQZM70hoAIlq04XuixtjmRE1H4JtZpfuvdx3AvLZO9 + 0CjUracARy/++vyHz46tfoCjxVeG916pmfLFVzym++6Uy9Ud5b+VC+mWqODNxj1fltJ9nCPYHXH6 + dA4vTkHAKddSlfvZN7BT7Q+Kl/hwafHQXNCm183AG4hyFbxBPJXInBeXNTnbsV2vCt4w9XyfhcHE + 8wMn2AFjv1wD/YZ4ib8RGGcuZ7s246M9kMgGBRXbH7JKbURfWUACOzxGUbaHBYQ+MbWAyAY0Cwg9 + M4jz+MzG2fLyw8UU5jCdJRo03edshXja2XLrU04DZ2yQMFzzrKSDwmZ/Xswr2SFxXsefmWGbPw1A + b8iMRJ8KV192uUt7BOkbUOs8hBRu8/691ccfSK+bFZAnytUC8uIp3QavLutFTWxxdeoF5H/DMDEe + TJhtCz0RD+4HsghA5169Pnk1vU6/50dTg8LPLRE5iAoGOShOjiGis8VWzF6hd6Y3Yz3ZUGrgKiLm + 1Tqru+fM7DpamXUs6s2s6n0DbLWUdozrexejE6gV66dyYbQ2kd9EtotFo5J7XK8iz6DMQzRHnu25 + /egXE0fJf7kBo7wEKAdu4qWIXtHvP+7vam70U1b/RTVrz/NwHuNpKStVuhmzEe7tvNpCaIsqWTi0 + knXMfH5MbCi4TmR7q98HOz/uZ7jrrpE1tAnw0BCbugFxR8bZr3p3dOP7WZYS2nZyF6Pt5thksmv8 + /IdIk4pCYHGvPrQD+zUYuJIj427eM6tH0SB63SzuhihX427EU3nPfv5Qj7sRpfb0uJspDyzb8ic8 + YAGm7wntPV4spoTrPLuLZ19WKbAlifw7rSH/asy3cK/lPkMdBAFYKHR5E+UBFwLDIpvUgKrhxcto + 7roUoXh1v2CrifhV0BP+trf89/NxBEuSAR+9QQNO0fyLcbTI0hLQCVaozkMrvsYq1CJK1uqG3y5b + bvjDI1XbsJi1O93To/g1mJkQ4dOqd27Jl6mcfxMJy0azpCIiNa9/CbVbzp1+Fft+WwhPcy9K9Eq7 + pULT7UfTAMhcE1ccrzUoSjUw+g/b1SPkAHnsEHepXIcl62o0rlmNx7X5r3GT4NulDbgPmUNg65tU + xkeDwd8/kKBLagocX0YBFLGAsNu+UP9bYplbEX9+mFr/c8HqmwGGfyHE+4FScP9uCPJuHiHF3Xf8 + 2HL6AVKqj0xthHkjmpVQPSURCk41lxW3P52dw6+VWvB5luq98N5KX9eox7u5FvgJmxqJBgWIpRPY + Q/j6masSUBUg6n50HKATlunIYcDOTGu1hbVx723s8lzLaoBQ0gZykAv9p1dmJgyafrP3dBA1Tddx + QKe2w30i1TlnRe44MG7xdWukphHGa+B6buMR6vQXG9t09yPfyUlZjuzrv2LHVr9iHPIbY2Rf2YSO + 7EsPiXWisQ7+926MBjuloI86TBKvrle2Fhk1hweCK3ImSy8dYFPb2/HSamh7bIrDWd72dwr1t7cZ + cdFdnxkd0P+13e2/CX+oQe/H1Ud64uZBl1NN8fdWn3Kp9LpZTXGiXK0pLp6SbHtSx4fm3A6takXx + 32zLA2l0YoPG70th+GQWbx4WtwvQ6u9FuaA8sLV49mEaibdKisHRpHJxy6IkIu2Yatn8G5Oe8+rY + 2SZejWXqMrA1zVuDz4DnJ7KQXzzbrhFYNV0D/8dyty9EcktWKqItkrRO1rfuxFMQ0ydNENN6H2Ew + OM26e88NW4xNHLauXYObFmaIqeAmDdPS5uBzqsbAiWY2g4Y8Vk1Mz2dEmy7NUubquXVlT1szzXxK + u4iGvEp09OvvktFJCe/a9ix/JCcQT3t9qmUUyT6FaU1pGjgEXYpUbli1zv41Z2C5VTWnOBGdV7xA + KJQR2FFlHxxonLEoN870THV2U7FjAan611uEBjP31tDrRuxYUq6wY3oqoche1UFImGdXvDXh82kQ + OC7jkyAA/VHmolzIkjalK1VVt1k9rLdf65W2coWI4MnmDVgfumpbiW4IWzgIF7mYdg3uY0c3JDr+ + axGMFem4+G7otUUGaK3VXS1KcNDj9ZjbwVU1igVTFbtrepqe6PyFjHRqaBo/tII2JhsC/dBz/zl6 + lZAUkaxS2MvzWjG01/bRVA1BDQkevrw4UoxNP5Ytc/zs4tW7o1IYdvteQZJqRa4f8ulDFWolKgmh + 8fN2/NpWJZfm1RHUj+Gz1xwbX8cj3OA5K0XEbjlNBYfQJ7jMrPSJNmKDh9ZIfBIGohYau0ffj3F3 + 9yL0/DqpXXxlV7iFsQ28cXIPgp/Md4hDVKKZ6c3RmRvMHEuQw9Own+qoLiOnSGM7DXvawYuPzNPY + ZCOVNDZ6ugOwVrPSnJ5eOtMPad22fZ5uuPam1q7IbJMI/paMfZdhtFPV8DVMHEW8pouHZydH402U + gN54h1ay5aFWmEEKi/A6DZDkNknd2dhQE/yx65JAA/6OBoiKmuJ7OgpnZ3jG7lM0RR5k5wqUKSRe + pMvb6LEbdMhxIHYMagztF0A9YchzPb/MXLbXyf/bwkIuW9zGZmXCDjOv7QEtbmNhHnyTTuXHTwcY + wUsk3QrJdXPW2A/yHf8N47RzNScgNSffflO1IRfJ7UC2v4Hu0Z9dMcd0vEOV0XHdHFOrBwItvW6M + qVVHoKWnshzueT2GHkQQqxbb53mu7dgTRDj0lLYoIm6/xjWH2UQH9buP7u+jhYp+/3TfEP3ehFot + nJCainVVDuW2feY7TzDZ6s9a7rA6FXBTKiJ574QtSmST1ycMwZ6kpIOKEsI5YlQY7KivcdVtLezR + MXxSway+mK9dDAtrxMEWQFbz9fa2BAU5wh1RwolS+WLGidFPM5n5YMR6dWQ95RF1bevYCno5ROkT + U3+obEBzh9KzPrJ0RTaLZtUXSk0Jx6gbSvidp1Emr4/4/aiyL2gWnhCeslU8Q3yKQ8XedqnGpyS3 + 2R28Fm2M89rz2/hRAvjMhYFfBzv66fCnXPkPKYYjT//sz+aMcFXNBdCDUVpt32rgJJITDSB87kl/ + V58d7azXD/aQzZlLvubBQIMI04NJunnKNkhux6xnRKb8xjiQSDahBxLRwzpaXbUCWrTQwRufFReK + jrJ09eqEVSuIZ/OICdz+IAgHQVjyLbJjwfdf47WI6gE5TYR9ihomY4qTh5sOzapo6i7F4++9e4YK + 9nz8QnY/K/OwT/9cjWoeUfZIBqAnfrn/zPCuQRSAQBnVA+Aolt/LpE6fmBrUZQOaOZ2eke6+nH+R + mHA0MZnw/SWUn1Lyjz+7OD97NfadMORucDTqfHmERFERsJkCpPAdEsjS5b+20uIqVMs8kFqCG9dm + sTVXhxE0z1sRk2USUtCYodObSreuwrmwLX8+rFO9qezolCPY8OmBnepLpbNTIWN+cRqF0fUg3+he + DM13xTxXw7fhtOYSc7aKmuJ0nxZAyJAFFRzXLbHJNm7QLqK2nddD6R4e7tnsu/3b5C0NLWxTyvjF + e+b2AOqi143MypJyxaxMTyVQ16tTz6ralV0LoY3KQaEBVjazQsubcBdOlETqumiE4oizVSL8aw9Y + iuYbXEAYTwLC8HWywKluDGUB+U2gJBHU12oBPZytRud6BIIyWu9qb7ucI6IxEoTLcC7iWDJCBKGo + hN09GV28/sQtZV71rMBCbgITILZQFK/Ta4FTR20b3ao/Mb5kKJnKsyTGgRX0iJqj1w0xDgTlGsYB + PqUNe3lxxbyXdZQDXveE2JaHxbswjDkI9R1bKv5NeyC7j0Abe+ZYV0d1RJgXY3QbECDdJh1frjLm + nVA2N1Z3KAnf8NfX0He4YcdXoXgBdscYelwiKhdAuVkEtetGWLtM3NTUtVqnukPoAsdui0Zz3RC9 + KhWHTEkWb6tZX24AS92bNFDL7m8PKHZYPaD4Ka3XiLZekV7vENiP49FdEOHsKXP21dXnqcjyEUcK + dvwsyeSxFI9LcEzP1LuTsXscXI3p1/fy4VH9gDakg+cSJExifsftl/beTGF3AXfX4w25m73VzgNt + ynTF51u21+ecezxvvvvs7ZyR3K7iksCKJEgsW5W2tHkQRU7Po/jJ0BKQVO0DrRePl4VBdp/zfnPe + j3D3rKlrhsngbO72qBBJrxsGZwvKteBsfCpLWH14VcuVYV7oVoOzf2OCAYQThoquJQUjbyqxJ24X + W5iMWtTkBP45i9bX6XeBTbG8FZBjX+P1Jhs3fPvb+MPJqwtkVlglcJFm8dSdFnI9/fkd/Dz9yFVl + qeW8nuaitCb9puBtod2M8TDwPa8Wbd05tvGzytiO2qBvWFvFJ2bzoF6BUbSXFTpsBfHVg//X6L09 + mzTQHO1am3r/J6UclGgpJ3sdIxteizfgH5IN50UXlxvsarFGq2hz9y16eKHLrlJehQ9fTak76XQe + LzbRdIFuimU8wn1YxFAHAcVQh7Iys2iltBOyu23vSMFDw6Zza4Plso5eTUqFH1Htn931udiGqv1Y + Nx90X2p2QLorbYCNCDjbE2CECb69/9n56e21WR1ch2qL7anbD1mK0bU8QmUX/HKvDiEJTmZUmYW2 + l2rvUbrn6SWQM7/C6HWjK0xSrlxh9FRqSievasVuWBgyHXbVdp//xm3mhO6E2zx0A11RKjvgNNwp + itSLkvULMUEoVS9vF/E0Q8FxDh+gH7qQuOt/K6I7KnD5KkHvLgYukM6Te9DlhR37Mpp7qxcqvCob + X559eDu9AdIIBZFukhulUUVzFjSjusFsF8EaWoCYH7bW5bGCwHJcVr0G9RCVyiD0Wu1W2AYeF/LA + t52wpo01TFhTcpPthW0w51i42vdqlPPo0sJPADTlVm++qEGoNum9BlEnUfa0C5oHrOXCF/A3zC30 + vV9q243ESVO3NPKPkRwu8owy5mBPn8JuAq2eG2kxbZ67HnRcqhtUxCQX85crMp3h9gbjfAygtd5B + /U3WOmQKuT1dYx1mFru9odaGjHI/PCzIo/J3tB7zgygRkn0XdzOa2QNC5R8vu2wQkDe8KuRydVwu + RqMaKko/oOO5c2Z/hMfEs5VYFfin05M+gpX4wFS0Iup14Uo8l56Tq/NqQD5IV7ZVla6m3HMsi0/g + h+PZ3SVOZmtoYTaN/jOKCfqcE7bTQKbDXhUEBzuwTyp8z5OZpKenro9hdD2CXtQnZkEveQOloBf1 + jPY4ep4JjaJAASkDfHX/udQCRuk5PsW4DGSsYL6MSVnFq00yf1hMqTuU096RkK5ev0tALJknB4Hk + PWIfho7h2GmV71H27wdGjeOIHUZJZg37bQgsrX2o7zDHUeos7PC7IbLUB4Rr9VzFXDz72HJ78Rbx + hSlrIfIaZxGPiLEodq0MjGJAReGmMhf5dHIBgqIe+ltjM9QachnmEZfxGcX2N8Gq779XQs/yq3oO + HHM84PvpOFYYUnCTnklj1OuBOUSvU6m2kyxT994KbXMTGb1uVqaOKFfL1ImnJMP9dfHJtWt16rhd + q1P3m+OEgRdMHNdybVlS7Kxko9BKbgoAaVkKEk0RWNlQzEyS5QEuG9euCXmI7i5ernnbXd+32nwl + DCQH5tSsU2877FF2yJ0KuUkpZxNYkO06XkXiK49CM+sEYVvxgGZCcoqm+ZwRen6tHJHH7R10R29l + mVt52PBE4dQy8vXjr5x+xTwfkauZRMvxOrp2K44Y0/UbiR2TV+mzbMIH8yj3Ow/CzwcE7bYWuG21 + uRxc65m0bG3bmTbuc7rQyPEtN9E98EvBW/dnLeo2OjRfQea4ignSz4vxEN2AXOhC/Ih+MPDysGAI + IXmnqmfdfCoGwqV3ZS/2VFp8FVXm9osqc82jytzGqDI3x2J7eeHUY8rchpgyj3lhOLFBY3Ul2PHF + 9QoYTgW3azIu8rtF4M8tSCCU6B1ds1UN5ouNnwk6R8qF/BBH2UZUV757uF4D08sesk18r/DbrlfO + 0JVQh6+A8wSMDT90cWSllkpm//vsnnEBV4mQk6vtGvMU6RyTPISbr4gqk9kcP6NmZ79as4eqdLkc + SAUqP76HM2YuB9LrRsdfUq4cf3oqj/+7j0EtCtpxsUJ9WQ70n/9mc5c7cP65x5QcePowW+CeWsa3 + IrwB9lKpVk8eBVGErbwYX9ylgbWa4g93NX42ExSmp6/+UFFhR1rxGqADrzqyftC3xIWjP8fsPCnx + U/cX8TxDgUPAZMKOnlEGQLZdxWsMFU2UnwuUlOVM3Ofo8SoIRDc3Me5aJbEky7sYFBhCUSe2I/pd + 5zui+3XPkIzXv4PTKx2MKuhNO7a21VoIEq9ZmOoqY9nVYoGw0CT/gnZnB0YtFpUuNQ2raVG1BkLO + W6uBqgZGT2ffRI+3cUbijaKstScLZPphXXHdtar93B8WI6Oymt5hodBaJCqbB4FVH1nunUrhDmtN + pW2h6bgh5ea2jKS+VTqsoh0hVlbghB3NQM9nyfZ+WlEGGqW9loJVeNLppujNMPpJpE/y7mzTBwQ7 + MpmWBq7WOTJ1v1KW0btLK+Dm4jW9bnS/SsqV+5We0v36x9VFHepY+BXL16uFvrLA8awJ95nryJSN + q5ZSXCWdH/H9i2mCc4v8Dh1s63ohL31OlUHmj2x1cB3IwPO9wKslVhiXFKvUhTRqppZecXjxREV/ + BBOPva3M2Is8GoIyBNI8sqRkTrmLVgts7AZWCEMpU5hFinV9Ubrj6n8dq0qLzW0AF3o5e8DqiW+2 + mS2LKF59ETBl6dd4DT1VVolZtMXVjRaLGCMNFDoI3GkCXS7nyytuTZk1wg2qLinGuDOyfp1Khbbl + UOJ3w3yacub/mFKCu6gdWAWwpVLh49YW/Nuk18oLy7f+J5PFUjgL+xRLwdcNi6UIyrViKfiUrqx3 + //0prBVL4Q6vFUthoRP6E864ZVXQFu/i75gEUK7upVAEl8DcQN7X0tTefd8w5G31FLX76F/AVG+A + VSxAqkYBQMjm0q/17PzN1VG5lWwyjr+X2ZwYC7SqWK8AwW2CRcoQhlBaz+E3WxVNga6Fteuxaj/V + s0p0NPyydyHkIfdrEP436DmrTlfj3ejaru4YeHtWQptkIMVaVeK3kcinMKTu9KUuE1NMaLs9ad/j + 6TCgzVzXD4xo5yJDdXvqIcues7OrowN2ejjIRhcbFRrRwoUXcZICa1kBa6lAZgpW9Xc6niP4VATo + /i6I5IlCvoAy+n0stW6XeUNAXMGeEG4ukTGCWSSocx5ATHgNaruwj8oKOqubj+iQyqBPAFhQiGGc + udoK9S8ImYsFNqVjZdvbaP1c5fyMs4f7g+mKTaDz6/rcd7bQkcGM/Bc/qLDsQRsQc6xx7cHIM5eR + FaW8rwek7lL5cO1aGIw850EoN801BmdvSprTPi11Cnl5xVKbvWHWsWX3QhpUH5lCDeaNaFiD6ikJ + bnflqFwFFHh6F51OF8mX3HKgk8PMFdvnoyfssxkwnk6tnUxuew+SgLlFiV43i8AmytX4a/GUxPPz + y1PdosQsO4B7z6mFX7MgYN6Ec6aK015NVyJAb3YXz74QKqNSzW7SLVytIAOUc2Zu0vWXrAI6I3Ny + 1DvS8ae9chnNXRCgxekgQvPtGpWzyrfogQRZYDL+dgdjHSebvD5d6aXpKtoKTEmtZt2n9EZKA0mm + G/6FCHEez5iS4M/XsxYDl8prqUcdIT/QZMCLQgbkoQNqDx/Wc1yiU12ACkG31aXNA8/lYS3tbShX + dHXxSptId0X71WT0wgFk2ygvDEQYQ7fa1iUnXiQuZckCvhORTRv6x2Ys/nI7FS6HGaJebkCuk+gy + b7bL20TDlrEtx+tMtG8eX0sXNvECtt26UkvNdqq6TGMLo46j3H1cKy76EkAVJvlfpAuMG8M6k2hA + nNfZgTrLrWd37/P6gkaAXUNn22oFf1OTlI2Q7eWJhq7nSWeaMKZ17KA+8tE+5NriiyxZFCVf5c7C + 3K0BcZxQt6o96nfT4aYSN92OjdhnrnyLouUUpC8qmnGRJziH5Uego6a+tlMVB6yjp12ntkczTuCQ + LFljtXID9uz2fvQa0y4lNmfD9fTk3YCeKrtVmYNuucoaBp7Np+y495ego5mbTel1I7lMUq7IZfSU + 5LKXn19VMQe4bQc6bo7jPP8tsB3QUCcBBtTxdsyB6+18miUIIiLmXTDveULeJdo7wIuTDGtcAtfd + LpOVCOOFzyiCK4JTsUaScDCjuUIP+5Ys5nRyruUH8kVyKcHXgiXcCaH/eyJQwEQMr5ClXm7ndXgB + /GaTrCqFTNsFH1QUPZvVBJ8EzvkqwQOOFMXQtfuf2cyI5CNE4an+5EtRkRYD/s+WeG04FbDKVZdl + Fm/nKShdd4i6SP6qMkGf1aLUc9wBNP34fjNewJPaMiM8EOrGdmzHlTUPCWJEpTo2TK3x7ehbZHDo + gpPvRq5n5EBqWg8zfs1safxSW7c+MDPeO0Rktjh1tdnFo2nSh6dgCFTc3JHcnPs9wqLpdUNuLijX + uDk+lXGRZ29rcRu2bdlVbj71gtAK3IkXMhHfr7nBxGZlWrpWHsnyUIJs1EXyt9kDV8rrRXJbV16b + 0sBkU41Rhsxz2pRZxHmAO6otcqOx581emDAIdM2l8HuFINZZQXdgoQi+QzNtK0qmG/phi2KpGijc + MkUeisItRGUIeRRO1JQ1jvDtYuavyBOyiTGGJkO9RtZ/plXJu6mSHUe4UXIuxz17RF0NyNBaHdT+ + kOY4fJKvuqets4W26DSZy2mwsYyEMpGv7IbhDpomUV0NPVZMwpWecit0+3jK8XVDT7mgXPOU41Mp + 8p3+UWMS3Pa8mqecOz7zmUCQVkCJ1w8r4L5KWRfAmbhFK+Ecp+M7UAAW6a0SwGZf6vxABw/QzUW8 + hiybH32QP7mylxRH//zkQjWu/2iO1vKt6qGc6DiKQsytJtShxWGRZHf3EidT3OBCtsAGpAFGW9Gj + qsTVliHHXMf1Q3/YILHSkAIWIvRBC305V6CVzqK5Lr/63GnP6muiWc6WXW5ho8Yov2kk3aBNTlQk + BZA4HKKptMbCucqzgWGpj9rXGninwnSs7ski/lWCO6IZKJndqYo/GS0oSQIifnq7Spdlg/D1w/ji + C9poK0Hbc5DN0bIU3edhiudfvkjTEfzGVyM8dLm7F4R+ZDaMURxPecrEIptbWh4pRK0n4d3V7nEb + lelVdpy58OwGNewptcuMqWCVZCEz7jjR5vRCmi3MbRSysICahwtgu9jeg8Zyky7mpS2cd95IWm8F + W9k96wcEOf99Q/66ycPNgJ/svk/6mB3hHtXzjR/WaTZEJOEw2aB/t3BEwil4ecmtHlY1et1IxJKU + KyIWPZVYUx+vGKujTXlBJUHVef6bx0PGQROzWRCGHWU6CntGKT5KSvnAMxKQhW5hhUUE1SyZLdJV + sk6/j4GXAevGKPAUvaTku5CfQS8V1gbCUGyvpU0dt8riYQqXc1piWyr0/jTNYGz1pDLJmYpnjVar + wPZ5k9VqePNXU+67bq7y3DZpjHse8zHnq61iyjAL0Drlxcq8IPrA4EVo24QA2aPb29J9AirnPEaL + PdnT7pLbO4RPEYmr8KhcLkX9fQoMM93e3q226DTbzpM4G9Gmzb1VjkVYCT8AUbIXfstAZVoGs+FT + MvyHS5Due6CiiNfNUFGIchUVRTyV3ObismbDd0TUVAUUxfNxW08832eWsuErdCqYg8XDAnZuNhXz + D7sqlYl1Im8xXd0lIDxr4Oq4NasfqGw5zNYQtEFuSBH49cMUa4glS7KxYXN4A+JZmm+xvroeo3m6 + WjsrDIa7BSFNOGhhieAEYDluSlmkExTPQNBCu5SU6RWTWq3rJn+V7tjqKsd8wL458yuDCWwGdfEr + wcUl05Pts8ByB8yq/5ut8gi3fJGkyhjl/7gagixK3ebSzEguP75OrJxu21Y4mHrBDopT7LUhespI + AcVy7k1I8SzK4L+4hK3So46ZeN2sjhlRrtYxE0+lpfrVu5oRyuUeq5UxcwmN0/VcUfG2C41ztQb6 + s9qx1y+FCtRG2H7cfY/7QfW4q2nFoGoYd0viAPq7tDNYNi65FlYmeQR8TuBPwQBx45yHVPc7H2tB + CPZJE5pyB/TPT6mfVtBwqzRgy9xHYuuajwKXU5uQ2uL36pbDA4tU+jxf4RAVDisgiPV6c/JqP0Af + P1SAPpZvLsPQ66aAPki5DugDT1WZuE+1+j0WQ2AsHdDnN8cOLMeZOHZou0VZw2thB+HeFc2kyDeW + LhS0waFHD5YLbqvTV6dO8PvFyRUDwqcsKClABNpclHnb1AvySOIY2VJyia2iNaxiIVi0VHhrxbAI + EVGd1WzaHRUK4CYI2jA4WqgJ25S4mtrN4sxvrRFXJpozLROdoFr1B9SJHW2MPoLEIHARv+drIp36 + LLxqnHj559L64xKVgwzwz3P08M5zwaWEMA/v5CH0WQVqbpmuRXCAFHNEZsbiAf18mPWDslG6hqax + vpfszgg3cw4QBLrNQXqUQc0y5mnmpX3Vsb9rSHx3XpNLdqfuoz0ZX0uesg/AhWNzW7Na9qslN6w5 + Fg55bquu8wMzu/ITMTz6VOKZjuRBcjUR2ge2v+vjnTPJfEZcoagADbpCUvY67yfhB1T49bxfOaNz + 83JG543ljM5L5Yz+OLl0a7EofqWakePCjW4xOIMTxyIgV5HykcdSfLwZ/4nuDpLw79dA/1tLnWHB + 06XMrO690dXHP4tAB8+3Rvuai9TEclkCmjOrTwlofN2wBLSgXCsBjU9pYq8uL3xdVrJ9G3QVy6op + TzCxPAgnzPU4k2E+yNHyoqxkb4NRprdLUXW5JMtAM0cNZTCfXX6A54qBibATNdmY19uMqYqNNTvH + nr2+PCoFXIllvlqv/Lrs1dVZXamrpLJrJZZcHtREI0k5B4ZuKtzkWk5bbo1Gtepbn76+bMbLdYCi + v4Pi6BRFi3ot3UdYtqKPyyibYWMlo4tyAJiv5Ehs0lwxZeTw9jwqCgh/LEk/s7RUu7Z0nLUdtGds + IdrxD2xxUtsf5YkvdwfkwdlWVDZX9z6useb4KzcAO8PowjQSyx5XwvKp8kHzwvem5ZVs/U2beNLS + UDF7hgaEx2hp1+DC9on6scjFuXYwbEVjJ3DJOtTFhXroGxZl+bTx4F4iZWBTLWz/SmAD7mULCVRO + huP0CNCj1w2jeAXlWhQvPqUL/vXpua/d7w73HbTK1ZIymMUdFrgT/BnYO4oVLdbQxLen77gdwhTq + OBLp3XYLU2iOztHzDpEABB14lJNK/S/D/Z8LlY6qn+33QNSl103rZ/t1RF16KoXK93V7PGgnVkP9 + bJv5oQdbzvY9FbFw9ccZp6T7uxjzqLJclFvcNYQKHIZ7Xew4POR5gy1OtopDr+RkY7btO1VcvoZF + boy0rKHt6Amvjh14jl8K7da6WgoDuPqS8NVEN1WVGk2Wd8l1orqDvn8EPH12ApIWUKyaqtYxwdQQ + FPYqus0HMs+wA1+TNaLsjXCx82BE17LJe8b8ll2+ZwRhb3odEVShx+QZLOL+xGj6+SJ+KFz2kFab + p1VgUmYJ979jcyOUTaJZ/fD2lLcOtSFZgcU9SaHEvw/s13CWqUezD8nSUCen9jt2bPFZDzCX/Bsz + LJeiiRKUS/6Q7g9RRW+RjnOD5Eg+KR6UCXEXM/PIluO5VhGpLA3ztakwrvlkRO0JV2vrW23NDugA + UbTHRnCW/QJnOS/qISIadJt1ec+R7Um/++w/qVKQgacAlph9wmGf98JXkt+YwiupJjR0JfmQjqRU + FdN1shyVfh9/2K4CrtHASmxe6I+GgKzzQoqUphbzI6HwrJopGldwPLSYkaTjgrpFqF54A+5JBDiN + 1RDXr3XtEIS8g4ERbDf/GvoVL7/GyI4NeZpEHlRfr9ImoA5ztmZE7jGNKCz0tOnYM0U48GX2H+tj + XKDXDbP/WINxgZ5KRe/Nu5pbhtusnv0Hn1h+MIEfoQJ8WCltRgkgGOeWLEEu2aSLPHI/38NSBby5 + cxtVQLyg9AgJ3hqNxQPgDEFQQ18AzrBuKr8XciNKpTDO1hF1AcQGLm/zNTArcAKP13DfKXtqkazg + nUYoV+aGrDUIVREtFEuzpXh2cfbp4giBTIU+mTV+Nh1fbzciTr3819mdiOGc5jTVTExUeQzSZNWS + ingbtSyZVuvvKp4xLIN1D5wC7hzsUymddh2JCgCbu0gk3W2BFeAbI9yxRepcwAa5Z2AX4CfVdejH + VHClxH3SvKg7pa8nZpcf3HQtDqLguvkxNRSJd342HEjigTfESLKBYh+YMJHOHqnLIsgRNz332GL9 + 8DbFJ8Zom9SAjrUpnhHjz/DgqumE4RO8sYydG3X+tVK+N28LdDgGsjPV75VuMpF++Q0LWabr22jZ + WnjHXODreUB3EhZGnZBEo2sZBJqBHtJ03PaKlHpSGmIu73Iy14j12YnMIk+EWz0R8iLZC5nWeHwD + HMWdbanzGeZQDj1QVel1YyiHOqoqPSVh7u0/PrF6JIjn+VVpbso9rD494SA8YK5yG3wXuvfz6Ypm + D2XMDoRfxly2h0Xz7D57u5h9mF6cHeFVLwqOlb95htSO2j+kv8PXiM9EJmBZuUr1S8NYUSgi2cOi + hSZ2JFrCplurkN633zZ1Z0RTOQRxF7S4DXwnsAOnjgNWVZSmzRfpMt58q8CjOrwSd6t5PrzQAi72 + WL42mCU5Se0QNqCptgq53Af9IAibgb3+nptphIeukEe5zJK0BNtpms9ObJvGwkP7EutwfTxtQfEJ + oHgpax6X8bE9z/PuG9EhDxbuzANy3PMRH54uXyLltZGa5E8FfC52HqHmtque9iSbcyYaKZ/iqRTL + 9MP2cWo+RR2grI/TYDX5WIoCoaXcKe4r75hZ/dwp8htTd4pqQnOnyId0s8+3wC+22agkyQBPW2pf + g/zNLccm+ZuR0HQfJ83V559ufhcZBvX8rmS5jHub6J4OJ1LGwlBWXDg9ZQFoTH32lPrEbEvlDZR2 + lHpGcmY0v5XBRdfw9ZTOFPleyupd7Y8n+F35DSQkHAaMBSNSpmi6hWoBmlS0pumUeN2opnwBpUHu + SgF+0BpUTyn95CiPv5et6uv4do/NtZeutod+BZJ5Sb/KtmtQoGOz4QYOucVqM3+4ehNSpPub95bd + IymQXjdSbyTlinpDT2nbffr8Ug90Z47NAifQcwjs4PlvsFa2O3F935LKzUuckM32egt8/gXOdjpL + BFYX4ceDnJf/efzs0/ZagnXBb/aqkDnVG/PkPl4ruDBZclggz6sXhaVKvJ0nEAKpehB72aNV+qZa + i62WIlelg2dCsDzEaG+lw2sZh21aS0df2gpjh8y1fbdeUYLAdjs6VUtcrEX6r5LlHL4TEM7X6bxS + lC1gbepI6AYuiFm1+P5il8/SZbZJNluF94Wn9AtW2K5mhsNubuxmUY2NEA6xdmcJ7zwDph/f1gLG + HJfpMHp1eq2Q9C0khdmsm2SxuLeSqxpgFFpeLQd0F1XFq9Plv7ayo+KU5ez3ZpvVeu/XJ2T0Ew/t + CHlNXlE2cH1ZqcFS4sXOtfndJHPO8nVPZv9JNGrGtyj4rjTCKTLd+b4APTAlzfTu06+q5V5B6Y7f + Mg/RIoVpKLMPkxGLA4Zv7j6WRuQ8GSSnQTMuNwnI1bgReg3WZdzVwBTzvdgnrnIkWR++XmeQprIJ + ZaPUOLTRpsL7BN9su3sMifhOZSf1FcuCwNK3Tu8uBEwzp1fuYqMN8oQyeu2QYrje7spe7Z5WFlIi + RnFZSiPj/iS5zBQxu3/NFm+g1GNXzth+sVohJYm8uwQJ3Nz0T68bycaSckU2pqcyjuPjqxpgBgbm + 65Z/6/mUcR4E9oRxW2CnonB8Hi1vQR/N4ilC30bJkiDHVzFWQoB9OE8yNHQUUfzpvC7KNmKq6FEY + bls8B7eDUKEdH4zUw0LmcN9rqMRLg2weWXM8h11BaG7uci4Lpd8fEMYchZB1LCjG6pkoxAi7AaMC + m3AwAl3ALGUP2HBuQI39ZyXLuWkUk6L4FMoJ2Ti6jbAOhurEBt6fCShjvXrVCHdPLu1YriXgiG0K + SMtr4cBghEYa3TYekDaMXmaTSh/dxqWQ6vJN2jZXSgaCi3upcoD27YLT3QWcSBoilQQbrm1cWXy7 + x97oMOl3tCIrf+a7woBap5jiMnKWy6lJEfWyFYXx6VoE+yA+NfdiEMwoxyek6m7mY9SjPUl12ykd + qhyL5FJa5/2p2Raj4tAFz/3p4dShyqnrFWpJrxvm1DWFWtJTab56d+bUrmhxCVdy6vwAumxNfLh+ + QmlnfZ1lEgixA91CZXberhlmdo6Kj0ioLAcUN3z+Yiyv/2z8j1fI9uNok01ygUmq3eerFbNI0X55 + s8ZkNfwVq6pLXUsgOV6tQBsfvf5wkV8rtu3LFEwq07HGYGnJmfoLucZUumB4OKda1ZgKLfRCUOfQ + hWTu89iLEu6O+Fs8F0rCdqNQByL4DyaYDJLfX6hE6cLQVm1jFCS+GSJ21TrOx9L5ce6doEImZ/1q + Cp+Z1xQ+a6wpfFaqKXz14aJeyIShkloWgdnzKXccz3Um3HFdVyLMfGbZ8vLDxdi3/siPiF605Gq5 + akhdTe/hXrgnEImGokXVahnlokVYXDPw6tZO0Y/PrFICJWgNCWGB5WAJjaq8W07Hq+TAhkadqpv4 + kGSG0iDQnIy/JhH9K26oPWyHrbWHVSOj0zKSCYyYhq6lsGpNVlukyGF1sIk9qXxYaVSJlIQpooqF + ieQhgi7J4JMX+SJDD+62cF9hP0qbYISbKpeMQcsfycFpJofueemli3p2SKa6g9gj3ByCA2iz18MW + IctzNGzvfor1gTknZJjpnMtdFAhIXJ0pMz44EELGk834PThfF1lIvkn3NLkcbreBC4uJbkjW0bMr + 6uKi8hBv33O3B2A7vW4mGBLlqmAontLF9dfFVS0HhzGslFYFW4D/sybwJ7zfu7A9bhdAvY7tkYEw + gNa0GzWRlTJb7XdMaLtwlz5BiI+LLnlWlj6AXbGdUQwi5naiCWARb4QABvsFX81yIRb+vo6FKyP+ + TugJAnZh/OEEhIs5mibxgaxDOvrz9fsi9o9zSnrEiRRcpzrbplrv3vgCB2awqhPhS7BA5vWwZtLr + hmCBgnINLBCfyhIGry/sGlhgwK0qWODUDX3bZhM3DJmC/z29vrE1p4Ti2jgZ2fj01evx2dnZGEHN + 1lQyHCYD77gX49N4Za8KLQikgRJ+/f9d8tOHzKO6f2KGb2Bq4/V4nmJZdNCDxqfF28ifYXLpb2J3 + ReM8X26WJgux/ZIFuSWV70e+LosWYG/qEicar3B/NpTXLo9a9676bWDDII2FPnCVmhw6SENarhoa + MutAxAJ3IqZt2mKEtVpLJmudL2jmawsr8KpZDGYhb8eX0bpad8lLd9vsLp59WaVwpeiFZKywrZ4d + YzzEovP/LKnm5amUt+GkjvF3+vKNrcP10W4Wf3v1Gje0DGqSHxTb+8UjbOhJzx09wgOdgzHBJpGx + XiTfYeL+ckwRpTAv99cL82JrjwfHpBrA9VQGQFz+UqFmtRPyXpe2xM4BjOi8iM4XR2uibd69AtXw + EJL0bniCze6lA2V5msRSD/qZFJlLIQfaQei2TFjDgNtYDYhhMqXtZxZqGwatQnDXfIaqbNhkYwhG + Kpa2hemaEBnMyhtIK6/luOaiC71uaOUVlGtWXnwqKxecv64jpzlYMF4X5qduYIe2N3EDh4fBDnF+ + DfTrlUz+llB9NveFGP2UIq/DHIqFv2L82PL6YbHIj4zBWFQjOhqLfEq7LFtfKwRnvIrghqUf4yv8 + w0j8mZBYXDaSsWsNlbfpo4bSAw3FG7ujj0vX8dNFWCx5D7wGpo7fCbNbYTsEuWqFNxbG+ZnOgc1d + QhMQft0bBVbTp518LAWG8MFuAea5lEYPW2RK6W/Q+dJVujO8HCjYJFns2DbNNdG76Yuz5sAg/yeT + 1Wd4Hx5OrxtWn+ENPJye0ul699+fWNUiw8LQ9arlZ6YM5sSfMNv2LD2Ltsk9JwzUesWzu/h7mulZ + zzJPnmrUZBPNDpHltgzYGIv023gRf40XWZFDGcsAA/EJvYZGkIb36Gp5933D6nAswu4QNebCYric + Hm9d5MIGIQ+5b1dvlxsM96qOslHVc21X95e8LXkNPBY4YU3VU8MxoV3F6NxF+x7PkAFt5roVtbeN + dhEuXll3/cL2anCiNXJdhq8nttHg6D92Zw36MZKHGnqDv3l5QR7HcsRTKX6ELBwCUSaQGFWzaH2d + Iu4jep8OICYuxNquqZFpz4B0XYucIQdDiT0FyQwPNGeutkJ7F2BD3iCjp26j9XOB0inish7uD6Yr + NoHOAXtiXXTA4LpSUNKY4GDkBVsT61zmg4OR5zwI5azLUltTXWDq2VK7XghSBcuxc2zv2Ar7JE/m + 3xij58gmdPgcekjyxXq9lMbqqhjYbGd4JovXHY2fXZyfvRozRL/2Qn40Mvte1b67xHarJLAzmP5r + cZvgd34VEb7JLtMkWjdL1o32Iovx3G++e1qNzFDG9rNHMLr1hn/1yRhkNvx+UYuHF9fGwq8yr/7i + ZfDaPbaCPnn16hvDvPq8iXJevXq4M68+/xqxibkNOvgeuBstVUz+F7rDxGwDu0WW7niPRcimL82L + d8gPzMp3KOrVAh7yuQ7HZDt2ILKuKoU7XM8S6coubawzUQj2JiF5Fq9QVJxXKxFeJHKTovU6epA5 + dyVRWMUQkn8GPkzv4+k3UadSBWdmcbSGM7O8zeuALLCI2vT6P8K8yAMP61DlW8TJMRVg2x4zuyeq + gvzIGFdBNaIjK8inElQ1x6arwim0/0WjjVY/K3CkDdURJh9Cutu3EKgy0jucqOU5qCZke1qwfsF6 + oo8Hou4RK9UXvrdNdrDyA8N4aeDUUazwh/egYZiHXNHrRkxZUq6wZHpKEvjJ1VktXc5hvh6L73jP + f7Md7jJvAozbdnYEXS0XQL+hoNJh5W2q6AzbrBK1ZbeiA7eUyXlC7NhyrTAcPWathBru1hMC+YeT + 4OV1N07Qu+P3q7tB3xjX3ZBN6HU36KHUS1e5V0noZmLuYBwVfeDZ2dm4opGGGP3mOkejru8w6kqq + TLlGii2ORLtCVGaMD6iD7unleUJ3l0c4892zOqGa4/3U0d63mkkoRVNLA8RgBGG4axb6KaOHUXz0 + 4A7HCwOthLsWUrWnCczPRd2QhcfM6Snqyo+MRV3ViC7qyqfEbq7nK8ltGu0Ln96cnZ29zLd1WeA1 + eV+xmJfYigZLBg9QSg5CK5TMhmbbhFF0WZPM4KIluJ7JEPq3sJe1yfh4Gze//5lXuzUHO2fe256W + nvwb44AL2YQeb0EPaadu1itHU89EctzDIlpu7mAdk0Xu3bkRG2Vk9tr4E9AdIXFhgLU8dySTRjht + kYcVCDZYAMEM8NV4ffZuodtNxdxcKDpAz7QCj+ggSmeqMl0O7l1oEcYQbp5IaGUFeeldPBRW91EE + BPMz/zMrhzmycK+21fVTYAapal4CbKgWfxywruu3kaoA6yr46X7guop3KiB6xnqUj6XXTasKsXr5 + WHoq8zdOP/m1VFwh0leqCnHL90NnAmqq48hU3Ct5b6tA9ryOBIwCAQ+WIA+dwtaT+GjippyUa6h+ + mq3YaqLnkSKlPEobKOO8U1qGhIcTVe+/Jl9TlXwx2/h1VT7vQRkp59O0KffXDWzNLFrKuQh8n/lW + He+mv6VAw7rpTcmwS82IiIHrmdAqJWXIyWstzaubG9oI5uYHrWtagRBc1lICvp6cwdoALJtbURL4 + TbqoZVJ7jrtrPkc/eTeP8CQW6PQOQTA4xIiqY+upXrdTMUIktPL7pXERTcg4DvfySjFavbx9RZCf + UBi483sT+DqbjPI7eFMf/bMPUZMeul5trTu/HDRz2lgh30HlwNLCLrMCMafbJZ6UeH5Yh4zI7Yy2 + ZZbKl2BhH1QcfN00XwIp1/Ml4CmJCp/fnjTkS1RDbcPnv7nc5ZjqyT1PiQq30f19NBVy/PV28yBi + 7J69PXl5ckTiFP5FGCydykviXyU57Eje+p9vozrIh16Rs5IyrRcWPC1uZssGRb9WV7DaEa2bzfdi + 4LVdMsxyQ3QSVeE6kg3Fr203yUKxUy31EVa+hSTHEG8e/HP0driprdaAqX2BrurFdhPd47/m6PaX + gGOraHP3LXqo1rVfput74Fs1zLZNuoAmcURIsmkaRrjbikwTVxQPBNFTKBLV3aRQFg5VZ0OHbNlt + 9A3csi3Jj2IlBZNsWvKdLBa3L7VV3uDlxnUD+GCOTdzT+InZafihtNvSTAOnZCM8rIsD6pS2xcid + tYLtNE+/R0X5pL7XpboRmMRxYpbfB8cJXzfEcRKUazhO+JRuhIs3f6CJtKI9WhWgNARyYvAH351g + DoYrY7K86QWZAFTM7ZRPZVYKsfiLmy/c29dJe1rl556qIUPNFY218HK/iic6KeVPMBimF9oVdp4H + D/OJN71OsmKB27BEoSHN4VrDbNejMoWxgWrba2SYriohmVHbeBEmTpSSJaYhX4IztICduf2q2Hy2 + nGJrIFIuxvY0H8lEQG8s49tFcpsQZIZaPH3MDSYTZUKHrV8alrxzsmpm0slI7K4C0cmjaH+Lsnzz + uT6U5+MaaARbF6+3hjIsrNBwLJ2sq7sPhJEydQC5x0+9PlgXAL5FgbYHDWaIe0RxfSrucnZp8T5c + X7xuxvWJcpXri6fE9V+dvK+j93FWR+9zLI+7/sSxfA/xYZHpnyzQxZJKTgSa6td4vcnGkXos4Prp + H6WafzfJOtuARBSvhA0lf7kkgb4oB1disYxEyJtALpe4lPS2iVUWklghcde8ihZDqRPcgQHXQP6i + 0sCbrxwHjlIFjUS7cgL4O6sC/hVzoUZXuWIsrlv/zt6eTVooj57c4oxwq+U3gON5Izki4U2oDX3f + K2Avih3JPh5zqMQAIlMDv48OuKb2kf5xJ2njOYAN96TVKpQPEsw1WHwkU0mDdUITstHejtMlpQQu + p/kmfQY6Cui0MD4EwpmDxgx/nvfO7g4YH6xtFOcoy1u4Sedx31DhgeLjmK3i45j/LuyZuFV8ZBoh + lzeihcippzJGLspk0AoV2BjJOhuX8HyEfxSlFHkgXfk+ZRaWQIMiGDqwNkQ8KgHQw97GuJKlYdES + Kyzs56WCeObMJAxdzXBe7ku+O6DZ9dfcmGBM3LdkOuWK4JG6q7d3EQJBCT+A+YLZSLI7MQUICxvh + 20th60EYC5xdUcZGnlkDBwQnAOnsHuvLyzWURYFBT0luUaEQglUr5r2xp3qAtnZg+FAuXAXbQ1QP + RAN+X3sVp7MLYsZttJgKhiuIfcPudyFbt/Bp23LItRFlsxQTOWNRcMvcz2MzZvsNIzQojmXWQeAY + BNnYsBZDVuJybOaxXP+IshTtmNvr5P9tQXZpAtTYT2Qwu95Nwk9/VMlLRJUQ81JBnuh5B+6Xe/aj + yi+ZlDMyqERkHsRzWF0juH6paMIfl5bfAxuXXjdSCyXlilpIT+m6fX16XiuawENbL/np2M9/cwPH + DZ2JG3gimV8ggZYqenXUPSDrk45A8ecqQ1iUFXxEMI2n8xkPVkWuukr6+LKGvg6e9FFoeKrfO/FN + Alev1FhSxULmu75VdRPVKOuQJsB0d5ArsjiYH3hUOJrKIJC0k97fb5eicpDxjbaH+300lIsXja/E + g6SNTqsKXrJW9gp/t12LUA6kHYsI9mcv6kRS6tRLzC41N9TQ60YnUlKunEh6KsssvH5TNdSw0LEq + Dlvn+TT0QsubMIugxyi0ayWUcGBccA4LDNQ3egGTq/imodTC3ygb9ULBpjYFgU/KxVRQTfhjsX34 + GqtFXuDpz0a4Cur4YTTvrwLcgLIgiVrAclQLsCe2C6GiijgiJRqi4acQs0hw7GPf2Cfz5umihj6t + zDXm5Ygq3jGz+uGp4BfGaCqCvI6lgo9UOL6o5bGI4L/TjSh3QQHcIjZBlAgupaqVkkD0cl5Cds6l + xmyFBdfVZQLcSmzNvCJI3imM2Q+5TFjzKK0jv1Wj9W0svkMAg+4KZkZ5Iz8vKs2kCFuPIHU3qNBr + mf89pkntTV9Zjbj3hh1bdi+jkfzG1GakmtBMRvIhXZireSQF0twXOo8VyBTu05iVAL+7Nq3J99rn + 4wtoe4QdwM3KXF8mPFmkbcE0b+DcnKYnzakP5AlTje6/6J4VivZKnuaevG+YzJL/xJqG3aRCz6+T + atlmB2elOYiEU7dJqHM/vU63S4xkFPZC+Guf296RE9vS92dyq5ezLI4GyUIZtt0fV6SRwY3ldFAr + ew1EvPlCjEzMSPo9pcwUFNHm6TJFRMZ5AkLcDWo2IL4Co41XKOz0EyoCmbliuVafzBV83TBzRVCu + Za7gU2LW558u6/YGh7Fa5ortcMcOJjbo7a5Ub17F0Rw28XeVTnYXY+HcLG4oaRZ/Fxq3mJFcQBXK + z/lm7dSUn6KSX8Wc0BbHySxQvpx6ZYyTTxclyR17kneyxX1stWVl6E3kapHtYvXA5B4nvhB/y6XM + tCAjW7daNNEfVecV4y6KQRjOMu5hOdNYEWMqhXGZl4HAmliUoJSBUSJm/xdiZOmaiXscXInykyPc + MnlMqRtIdzJhLWMvbtbRLdVQ2zvQE+V2waihn3IviGAd2Or391LIRDuwsExBH7egKdn/NcVOl7sq + Z2KdzJJMnkHxuLROz66uPk/x4aT4bDJ+Lx8emfd4oDqfwrDwe8ehMQ2V9SwqtSH6c0DILdARAuzG + kE6TTYjJHPBsmSIVuVJdk9TmuHAcGtVnR5ZAO4yW6NVn92Baju3JEqQzlUFfqrqoXCqVxyXGRJ/t + N7vYNgVKHE6+qWbLz4Gw2qegK3MI5eLT5cn5RS94ENNPm6LknmzZw8FguWzSnuo3Z89VPTSM0Aos + 4iP6rX5gvwYNhwmaCZWFS7Gk0RJfwkATEXqi0ri3WTnvrHipp1gZqoJ2fg+8MXrdtKCdX8cbo6fS + aH52gXNRq2gXViva/YZh18ydwA9RU1qYzaPFZnom8dgVlLo0lScrFgxY59F3PM+qIfgXAHSl06cb + y51qYHtOk1sBZz6rhaAX8SZzvF1mtTwlK+SeXqn4tR5hiCDtrlsVQMuU0+yeSrZRgpAmeYa+VSGe + J+8GFoj4uzD27zCsuxUzX295JNa/KIAWUB5u6Mu4jdYe1/d50eAq2gDTVc7+PUpOjuTKicuyaYk7 + v5aHi1t5iJbjHLM+pXHUJ8bhWdSAHpwlnslKODiJ669FLuTo1ec3oJxJtaEw4OakMFQrCP3RARB0 + fwP4DrWSTCFE+a5/bPF+AFHyG1N8KNWEBg8lH9Jq3pVhFtXaxSvULJvwTxVBhD9l6JAYwGw4GjTr + zXUCcR3u5W/hFKH/8T1zexRlpdeN7jBJuXKH0VMZivHhZS1C33HQ816+wvznUxY6oTXhzFZemtfL + eUqxTsIENgNtGjhXek24BaXQhryuB0wJ2gLX5RK9wIWTNWoPMXT/qwwBp4IgSo2/j/6VYq2QWbJI + NhFB36/iNTGAF7WiIVQUXvDry1nGViJHKbq5iWfy6exuka7T/7dNRBWCOKJa6HT1vl5eN3ipSyEn + X2O41RZa9RyMULLb7B2chR5TKcMlmjHNXqUMj++1lnRtI9SIqV3pXWvQB0iFnuXVavuI9Zy2rWdL + uRyP61dvqUKqFdiM82pCQmczFdqBu4v26O+1H0d4MHNAVZcFQ9Svge/JVJ8uD6BB6omYpQMIiUXF + T7q3gZn2DudGGNLUoeqridc/3w3AjFeR9tUvi61fImVrwgq8VfPjKAbYOUdDl/JxLX3P7ZcS4kro + 7dYd17M4TXUrqltdz2/gfeIo8m96ZTdwqyG5AccqPNXZzKYbOy92nN7BIi4LEE6QGNMZBa5jFHRe + kQat9QGWk2n5ciKwyq/OTwvXNDQ2whaFFG4Houqn5VsOSa5FwkS/DeBb5B0tVRrOYLfHt33iEAti + nlb7OUsyXGdBGwME5Sh7hJojydzl2tsR7jKZOCqmZ56gmNbLdW35sg5zV23oMrkiB8xY4xnc/mlb + AXlT2nblbi33INHbKetFjPXXi+CbPnoRNlHTi+BhCSuXGM6oiQtpZBDmNsAAGDORwFTBtG23iPSt + 5Q+Z2y7Uth6sNh3MOoUXXkfAuOGoYnF589o6dDjepovbZBytVqBpbgx3+IF3s8s4GZXFwd4kq517 + GlPM/I4567yOdq6z2vquqsVq9avFapnXYrUaa7FaeS3W1+d2vRRrWC/FGnLfsyeh7St0qIs7rMeU + XicYxY3pbPNYArdMpDL/bxiFQOUTScmZ9Ow601XlQyxJiTbs7ziYu4cF/AXmeiK+3dwl6zklKsvU + 5TuQayrxVIRj9GK8SGfRIhHNpuPrdHOXgwKSxUfgFikndYd28C5a8dUU/muvVCHX+N5++qUnGmaR + AjbbAxAcFnTZgIFzMCd8hHYKvdHmWNG5VsC1vMg17BQ/sLupjf4zducIj29eatX2HHER+VSLXAzk + YZ0MAj7tycJoDeP7UfTaHOsgs4l7ZRNjFa+H9TpdHNTFH1kvBc9F7sPbeaL6TfGhtNvEiUMJt4Z+ + DIa3wj2Fu9inAhK9boq72FABiZ7KQLfPFw24iyhnV3EXw9Bh4cQTeXbSNI8VlqObm2SJI8fpTRAj + NB6vMIq7wNo6364a8U9y68OOQuN+izEyCEIbpJ8q138/LXelI1fOYhZvubk00jm3x8jG7bqMGN9c + uRsIsxa+rwiP3u2avEkxRfnEqLQCkXnM7PFKZRDlRpdsBbsMdRtgxWiefDGOFlk6LoMvzh4yJBKP + t6tN9AV2F2yBAgyRfJI4AtzLXSM21nUPN0JS+RuzXrTxyidgNpMzK5RYbZdmMWrieHbFRt2vxnKT + OuIynzVN3YBFlblIs/jr4j0LLXPlgF43YmKScoWJ0VNiYh9OXlaVA+5anq4cOMHzKQtcm3kTFvg+ + l1EV5zBZ15Wo0VU0+xLdUrZPPMWgQ3Tqw3pjQQEKZsrTgqTaBGON7uOlsG3CizEc7FkigsykYaUa + /yg444foui6u9xSy/RBk7KAerJEuHp6dHDXGaYCs3BanoVFrQQpsKJBzkS608ll6cK+Ojy5Qoi7O + SvEbrssZ++foCvq5EDCukTAcX5YS7+R8vxB7GANWqytRAYfFRCIQo1WX0eqoZqTofiZk2WKtstUC + flvevsgD2TJitR/Wc7Ya4TZTjNJjjMlkywZIiv1rjbVhOeS80GE856WLPYyZthU4ZDDQZ6jev0q2 + p5y+KSxIe87nT46UfLJBhz75SS73TiV1JK6TYOTRTKU5LpLbnxt6yGTcUIXbdK6xujgozeP9pe1x + c+mXXjcrykyUqyWZxVMZj/fpNauJv7YdOrXSzIETghQyCVxuMYkxWwW0RlcADJ3AYxaCaZFKrYL0 + NjHrCBUwNc6Evusyj1X5/fnJhcKR1H802zl8S4upK9esYC40EbbARJQECRWdqcK59ZoYrXEJLfSz + eDtP7x5Wd5Eod/MNuK5WsYPx1rogsEYBC6qy+gEYPpos77utpUJkw3BxaW1hG+ev/1ALUN4nBb5X + binHK6g8+t/h/ShDIVBOg4I/H3+Dj4HcRpt5OCuwsfwV1foWph3ULDCAUNrq85Ykocn4axLVVg+u + gIvrjK9e6EYcoM0tikCAX11rNRJnJo9htF1HMl0hZ8Iu/OOPP8azKJtFwHjlhJc6IwAamxhEx50H + syzzVDcywAJ7K5rqiSe7H6XWbBzflYWZ5aKWoq8PhJAy6wBzSJfoaOwmWaBcuknhDpX7qQ95m97W + N2QFs+52sZ1hEOwiuU82LRJJq2roUCCFAXsxWuBD6HW7gBldlU18yni0IAWI9cLzgAcBOiPXrnxb + 4Om8uktZ6bU+x4WF3PZIJG3BFTTPb+5rJhxM9nI8gqeo4HbvXUHdd8rUshixU3/f3K1j0r8PJA+X + qWR+O65gM9H3f8Gpm4GZrFCwo6uT8/E8RezHXhBMDg+IW+JFroUT95thJb2GCvnEc8Jjy+0FfUKf + mGKfyAY08BN6RlLsbLtB5QBlUum7oXlTwJsr4WhI5w+qSrdrM9fmR6P6C2pGTgXJyuuiHYEgwRw2 + VJjOAWEw8DXFc+jKdyutTqzSUIvwKQ1ITVJeaW12F8++rNKE9N+dYX8u4zIro0rI9N44PNznkGiI + n5DnGDCvPGHF9jSzecqk0/tkBrsZK+HFtaJju7JhDuDAkj/YlgoX4qF/bPWssy2/MQ0XUk1o4ULy + oUwee/1JMs3RXZJtUBJABJalAA+/02ukXsUbX0usyOABZVRwEZ6HlVbEhlSkiEZdrtKhwy0/LPJX + oyJ+ru2bgXbTodBHfWvgwu4lbKPaxP70O5TBFeiUFm4q98CHaXdnd8c270nY3M1gs//5LqNkL14G + r91+V27+jWGUbN5EOUpWPaRb9/7mXuI5nSsUCTgysHVRXqebM2Ch59nsaNTwxjl8PkIaeKHa3PEk + UDgZZ/vriN0etNCtpRi2hue16gM/G5zXldp7oczsuZV4XlXe9+1j1k92k98YV5WXTehV5emhDLJu + it5sCeks6CE79l1/6JDOQ521f5MYzoESJPrHcw6YBPFDQkNtm7y/lyzoEcJCr5t5f4ly1fsrnhIj + Pvn0ltXdvw46JnT372+h5XPGJyEI+zzIo0MLU2pRPXVzF22qTsA/o1nQVII5Fyymm3T6NZptUVwt + gB+fnX7dHOXGHZHKtYUP7qJb5Rg42dyyuhs4/g6zsswQ3qclTy8MwqAt8hIRcB2/FhtTlWj17H2m + 58yVfbQBMP+gmmNfDERPqWdOS/RLyLkThC0Q1HLuYKMUk6fR9XhbNGUA16yHdbYvSRMUhjW95DZO + 8qpkbZNJAy9gdyf3WzKk0zsVg0fFsayymQoUKGlpLSZDGeL7bIwXmpsAOhLCVoMf3JaWffzdX1E1 + luXtSGz63BltB+Eg2X4hRSiWNujQ37cF1SHQeFnl2jdH0JPGz/sIlL/+/cDgN6pRoXkIjM2QrWQ5 + 4Z2e/vmp8Aqafuz4nEqsJ/EMhG4MCEu00WGAgykQlqFl9zETEJFv4SfNHM7kirYdToUBW061maZ+ + sKpfDIigcirbZK2YUf+MQNvJRVTv1DuGO7OXiErfGIuosgldRKWHssI2IrZmDwtNBZV4GnY4UuP+ + OL3H1c50fe/j7b0zSvE/Qmb1yHSIhyKXjERJGfFtsQ4HhFqjZ46iJW6xorSKchnc/2aFzG+QULWq + NqZ+MLJtN/itPk5hZ3+J52O1CPsE/bjcC3fRV2vXQr+twIwMkMekZpUCvMYXtwtzYb0XiR3WniBs + p9WLyexNq5P5cZdqDCHRAuoaQ3LNZusJhLGqTQWXtjhlc8RUuXtYFLUxJB+Ip2q/NfEF47RNDFqj + O71OZF+XHaPzsGfX+5XzGbCxn2M19PySIlkhNcmfCuaa3xQCGLh3vcAw0Ny+wP7jdTpP7uO1cmq1 + D6HLGO/KUDPQis1jlOl1w1AzQbkWaoZPZYzyx9OakmqLja1Hmk2Z64B4M0E3hi0TLS7KWineLtk4 + Kqzo8hhRoGo64yt6DyUZkcLleVciXJagTnILZEYnX5SfQ3UlWY8FILeim0vgMoUgp1eY7TGwgIJY + CRtaggJIoRnrZqxjDKmlR2QCpZjb8nPMgJBfyajodNYSFd0L+5gjhF7AD05i1OgUqnQxDU3KtO0F + bbklbQR76eZt5HKlujr7pVnWlGpewb/bSbiK5FvBcd45jaP/lN08wiOfJ9aEIRXn4VSksUqup6It + i8B0LLKRhGOMztz08aHOf4dzQg+Qyxl3FpUcjhLy5/hbPBd7bUuEYCtF8B9Zk2IQp/tTAQjeXVYT + 7Tb4pjhuU8F9+yvSyPDEdNXYotnATfXwwSOmlIjg5Rg89lvQfHvhexQfGaPwqEZ0GB75VNUYnksr + tSj2dANDitc5BmJRL1QNWyYDvLZH+OXItj1mh0rbptV5y36/Il6YlMNlKiEv5morD1iJD0VJz2QW + g88PaXoHDyXtrohVnMbfZ3TKe3dG8opVil7Vgh+30TH3xoUUuVh23OKI59F9dBtL23UP/Pv9CXbX + CvbIv/z5T9qeLaizrRnVrqfZz/Kt3eduHJLnGpRo/SkxKU82v+ngUnlDoak7gSMYXSt3HKDYzyB1 + RndG6DbEQQ2AFE9ucb1y40m9RvGeMzNMccK/EfR8btgYptyi7eduAWa5x8ztI6QUHxk7BlQjumdA + Pu3AZ7anEnNDZCqenF7IeliRqC31bjPnWnzhHTwg54DjyDKKtrAI30SbzYNiTCYOAdOd+mNLwPUB + /967Ltxo+NJgMvJx8XAAkVAiEOhb4v8v/jsjv4li0f/UdskAsSmBEun9V86x5fQS6OkTU3FeNqAJ + 8/SMRPlNdMPqWaNlIQw0d1EuDkWNtfQ8P1ORBwW+JjBY1+dHo0/Rv1khUmOiFwUYshE2JYL0fduV + MYWUfLyJF6AarzFRFT9cRjiFB4imHtdcVlqpUxXtcIjkG7pK/a5BCzZNlqm0aWPhNnpbHXjQgspO + wS20s18TPxKSaRClN1QnxA3CY8vvp/PKb0zPiGpCOyTyIZ2Nf7xCjSmONvlFUnsiPP6BRg9xY1lg + qfq7j7opHz/ApscBOShYZ6iIm6EwQAWnsunCudkub6PFVBxatWjtPsohS2s0n02KNWndPjtUPVK4 + 8+C2/ZytB0W07s5hMJ3DA73PtmM5kmnFU7VxpSk/R9LZk7Zjc1vL8mw1YbaJT7Zrkfgkhf9kmaKZ + rEvBNhVFHJEN9NeH99wLzMNk6XUjB6SkXHFA0lMSQd7/VUd6cyyvUtLUe/4bswPXCSeY/R1IkCSZ + zVHBdXv/sKrjWezAcvNasNwQBcixghpUKIwOl6kB+au1rATzW31QWiO5R6u9DZ1w0AoXlxMevddn + 6sUY0xRECOo6jrV0dPlGNn52soB5nIxPoyX+ELN6pLhock2xphKsTYgqYr9qPc5GuLp58QfO+DDF + Hw7GXcsvG5l72zHVuwWevettP4GYmdEjg7HlE83oumme6AMQ5RQjY7kFAvT1Y4v3M0DQN8b2B9mE + bn6ghx3WhxJThvtlqZFCK0NIWYyOy2xplEnIA2JYK+Bng1yppeAKeI87PVIvxOumwHtIuQ68B08l + ftLFKQoWldQLZtdTL2wMInImNvNdlfdUT+/NrxGFmLSa8bCOmBSjY3+BNw2sM3LEOiX91uGtVQlB + fA1dr1bPqHSVYzW5TbLZYq+Q+ZYTibVWYHpbsyfKreTXTjk/mcIUatEZvsXbiIawo323GpxRn4n5 + tnBHPUM0ke1Y2ylHFZglqy3HAkcBckzwz9HZcol+SJr+BpABOG9HxVpOxhhfKjGs9aUr1htW2sFQ + j1S8lpQb0F5izFpVEjKgtfIgR2JP5pkRcMpHciLp7miccyOdWZ1anCP8onuuQQBVsSfx8mu8SFcG + ftWR3K6kT+3e5rvvTNiVoq9mG7rXPAxhgHBslSVvc+uY9Sl8oz4xzZGXDWgp8vSMeFm2XvnyVvl0 + cVk1REiIJZjd9HZJvnPQwDYiFUhlGl0hhZGgIypu+NL57nmkqV9dluvzztIShmMJjEQzWQyg9T5K + 6z8ckHxX0DcBRrQv0qQlirsY7yF2hcdofjhQAqV8AzcQH9VRbPupysMo3IpK4EoW1XHCeuw/IFii + lq/h/hq8mnKsGoif+1d7wHgqdqfSei5e8pccWE8v/13+kaH8XDRSFqDzpzK1J1qg5yCLp6yISx9v + 18n8YaHHoZc9dvt9pfUJXRSORQnsiAgptnO0vk7JBRTvXa41Z3wWLVjeVxOK5mx1H+o/ypD6WFz4 + kSoPW0OW1x2k8p8VMKrV+PnVxVQCHD6/i7+b7Pgh4igeo/Xu8Q4VuTFg0omvx+cNMc6hAjEcWRHr + 0gp71GGm180qYhHlakUs8ZTk1beX/11LKIE73q5VxPIch/l84jmuxWU+5zt0xa/iNcYJEAKtKEgr + /jldR3MhrSsLJAJ/LjBOGqsVlDFO9SiDF+P7FGYJXlrQ+/AXeGOJ4rFMFZVVcaNFCvMtIvzfrr87 + hC4Lv7mg2snwwUxwwYwWQsZoQD9klCJZB+CLepqICPrPOaie4sF5W6oIC10r5DXjsxjMdJ5gFQyc + qPg7rPLyNiZFRmUbNFmhQdaydGwGBL0/14tWQZd816lj7Rdcvxi55P86zoIfNjRRIz/6tVd7hBs9 + rx3lWu4wpm0/z10QOyW/Lu7S+zjNYIg9EQRxNYRw3bV8j0+wJeiB85CkbDUrpZmDPZ00qP6dbNR1 + ClllLJa+e+J+cJZEx7T2lkwGgWMNgYw2/TL0aW8zv2VrnSp41DChX0BfSFF70G2Ye3VpejmAG3de + 2T1BEUtfGYO45c3oMG7qsQRyi25lbBaGxdoSsS4CpoeevDzrHnUZQnULOQswBmvX6+dAeITUBcSb + 6+XhWC6da7i2rmWMu2DAPz4BQrmKDFIfutM4ehDa1Se3jdRkfHIBsvIm7gJY6OqmbeVB6vM4Wnzp + hyz+GIkTw+p8XIa1lSWgnspTB2M9sAS0zBETH9CczbvTBZoWYTAt0Q4JhUHsAtxsoi8fpuXj2w+1 + +zCKPyQcXvAg/ETpodNsFc+SG3i3f+KG4ul+njbHkKn2AarJvzFOmpNN6Dlz9JA4eLS+JewdKYMq + 8310K3IS6wapgijao1wvIIu9S4hLghyyddxwT8W2sz/giqjkabl2PrRDDAayG6WZ/cnbG7M97GZC + 5WwPYWNcTvP43mfX280YSI1X8QqDvY7G8Oc5ZYEsYO0jUf4QTkbfpA+s9yqO2z3ojBF8Hu9vWBnM + bhEoAzTn7/xjK+hlf5bfmJqfVROa9Vk+lBmuq4xZKpbDsfTMfpJsr5g1av+LIDDlIteVuyEdXpMS + aTtNcaM9vSzwEZnA8lz0XgvNucf9UpvwTnaP6FjF+JW7sf+Y8o05kCNI3Ok+aSLtHub2iTCOngxV + pTDX71UpDF43rRSGlOuVwuAp7dTLq1NeLxSGGcS1QmHMtq1J4NhhKC8l8W2CKBfSJILl9q5O1WRP + xt/uktnd+DK+T+fxgiIlrvJoWHj5VOXUH49PELwCLgUsYQFTpTBI+VRENiwp/BLDvdJx+jVez3De + 4VO4O4RiehfDtEbkEIuyY2lJu8xmvAVwRSzcmnpWBtjTLWsVQ1Q59MWCe9Vyqpa1+xT2E16E+bPx + dvllmX6rBNXAtVmm/OFVxVhWoA2U+qgjktjtGKmyb6PTPMREgoWK1WkinaOGaiEopYtaJNTPp4gn + OkbziqxLUUhaApZCR/tsSswZ4aYpqmw5hO/J/QKBO5l3J/J05KqLW3Kebq8XIAKKapvj63UcfVE6 + G1YgWqbLuxSWKb3F0lEgbIz/lVISZC/DB8y/n+sItJvmSdZeAqMZpcQtjH15Vc2eiqXtSq27tU7n + pJIW27cBQv1H33CMJk8JE4Mf9qn92Yy04sk6Xxl+o3YmIpjcxb0gCzHVXnSz2N2wt3Fj7gFDY6NG + IfpVbHQUbLcLIWsB7UJRh8mOCukXP+iNFsMoDUNfwaGabpkvB8aocq7L0TNNvGGn6H0QZgCsHEWZ + lG4OE4370MT8Qcyfe+adN8Qfu5RI8fY9CEqn0xNjYUB9YCQO5NQrAoF6TiLBx6tPblUkQJQr3QEX + Pp/63Hf8iW+DekkCwf+FBqv41CDq3SopvBknUb74+nIMil68VGID2UL+jQWos5XQ6uJmxFBECY6/ + AdOlPOos+XecA55nUhL4mG3cmiSgd23c1DetujR3OyJh3cAKauJAjow4T2TuTblNdFOp7SeG1OgH + 1sqbuq0SSQh7yPGqTrcPzVOmlzQN/B00R4+5sNGeKzvCfZrDkLHQGcnBlE91KVGgZSqMzvtILj++ + vXvcfVjI00jhEBuLhKfDN2w/PvyoLXdO/OEhHYp3cxk0wf0etSLodcOgCUG5FjSBT4lnv2xQ47C2 + djVo4jdmMc4dZ4I/Q1f6h14+rOAuwuN2tUlX49N0DtNUEiJBTJ6lc7KVb+5A4/t4+Wac3aXfUPcT + ZXkX8dd4IeQWJDATBK6JKjHgl02q2CJZYcaYiobUkxsYa9NvHNfjVliLahhK97pOUDvAbaOeNdLB + vVuhk0NAwkSoT1RfJmLS4u93yXWyyVBdStHCma5vo6XCgMWpgd8wNU7EFURjPZgZdJn5BkS07e1d + SdxAQQ1bLLS10cuSksW9wKZgxIAJVlGZdUPjj9m3OyCiiQhGWCyih3g9zbZrGM0StxZRhu2zRrdT + cxbAY4L3D8FIFT+g2jEv4Xwyc35ArxvxA0m5wg/oKfGD88uL96igahyBhT4GEZc5gvP8N99xQIyd + +I5neap4jECP/BqPr6bo/8XLEr3BiSgqW955tRpo8srPgB0AA4B+Kz1c+i2IGfx1vYaufju8Znwb + K+jd70ZpK/BdveFSjBMPfFi2aurTAaxjpM6r5fgYCjQo9uc+ZY/VZnaUI8x+G/ZEZsq/MXWEqSY0 + R5h8SFsTbbDxGg1M8fYLfJ9K2CThDavCvSqJ4c3sRgdmuoEHVJ/OlfgapoCxZvb1Rwn+6YMHUYdL + NYqT3vXZ7tGrXUNxpGfvYTebx5HS60YsUFKusEB6KnM4/3pbwwXgAiKnbNlmz6fcQ9CsCff8gHMd + mByNoKS0wGCX0paE7Axt0CXr6CzCAMGV+DfIQpu7aIHrAdzw7TRarO6iIqApvklmCcyh4oVXD7cH + gg0U7NB3Q+Cr7LEEI5l7IvimghjSkyw9tyXJUvVsdFEZ2apdYnqxY9LVhMfGUz7CPaH4LLNFdfPf + x+KfwM9DayQHQTbJ+mB3WtcOS+c3r0R50Me/ihQlour+Or8E5d6chdDrRixEUq6wEHqqnGNvaizE + 9jBeqsxC3OdTG1kLm9i24zsVFtK4sW/XMchHN4ttChsYE2Lzzfrs7ZuLo6ks2JNDfFL18zhTicTF + HY42jvEKCaNnRoZTKDHrfg1jmT2emPUENK5cbHI8W6o5+6Ih9T62+U71lRvX6aH/0+umblynrv/T + U7lTL95z76TuyEUredWRyy247yZw11loAKG0iRLaBKqpcv8s1tDCI4rpT2r/wGQJSdCigPIblG4G + SH9DgrZGkE+86XWSFelOP6mFZbqc7gaE9hiz6u4pYYNTZQV2UDrsUD4BPOnBgjMD8vR5MtUtpQWb + 8unO+ovD0TVbdTgNrLylprUtxfN8vQN6PogT7mD4aKZg7g9ahmFzBA8MHVQ3kwqLO+Vv3WPL7gVq + RJ+YYhrJBjRII3rWgWhUXjL1rEQMw1hsRtDJVmgVdRXvEQGp3RrSFiICd5AIEtiglv8tvcYTgLmm + GAnbHS7QXt/QbeCOutUW00wWfaqqWoFFMNGbXdaI9vSjeoTfDgb9w05iDzj6fc+12v2hCgp13jHr + mAX9UAnUR6ZhoXkjWlyoeiqxoSoQXg2QXgUdjNwGlWI0OlStPAR9W86lR/EJL99bIesTn6A+MLNr + K+pVy7Z8nsu6tu7scpjHQ8+3q7btqeOB4DlxfIZyMM7/1ekVH8v4r22cm6MXQH82jVa5A0dHsy6f + bXnFkrtCyVXZ/QtFVXjRZhk6u+SWFhk1x/DuIlqmt5EIdYLDs10vC2/2CDuWu2x8zgOySjqVoKYs + WcB2EZD9myK+zmgXBB7Zk7UBmKHPN5dIfQq2AtzdjJh6iZdIvWLfW9Nj//NdwTe5TgA3UR/GkX9j + CuCkmtAQnORD2vHfNjcSsBR+w64Lrl36ffyPzQ2z8QmzBUSTF3LBNp7CGqlZ5XlGjf826IewmH9j + nFEjm9AzaughzaS699G9UohZZSfB7jfKLQm0bleWeeBUnkNRMMiy6QGh4eYJE4cojcAO6MJ/WCeU + BjLOosVXAUPwizo9DkZ5GQ2ateOHBjVa8rqyIjmnXxOO69CY1T6TwcjJfJg6Ex75sV9fWn7wjx53 + vvrA6M7PqVfufPWcOODFpwsdFATkIlB70eJdvvJ9BOQMPIdP4EdgybDEM3T6gnBPASwEwq6u6wfh + Wbj8NL04vVTiQLyGpr+BOFBH6KRg2+JZo50psH3eZK96koYvHriOB/9Qa+5QLNN7xntY3el1s1gm + olyNZRJPaa0/v6wDelOdvwoADEekW3sCP9yAd1sy5wugX7eEN+ca6lbNoB1k1Qsc7vhPeHEtzv1w + 9DcqZ//UfVeHatLqFLrKbmN7IFz0q4ZFn5jabWQDmt2Gnkk5SW45leiD12SGIO905ci4njLudgUZ + T7WAxhweeGTMAXVNyOyCUBm3W5umemr+gfg4zA0ccpKmi4eoo+VesgdSDYrhzHsMaKgEaknOdS3C + mWhBRe+zjQdgGKYe6T5VOoY4orD9/Pr26wkiby6ZcuZqe/YAeBzP8po22tBdV2yIXPCnl5ZtmQsD + 9LqRMCApV4QBeqqieCrCALNskK/CijTgPp8y3w44mzDfc2xpc76SESKpSE39K46yDXbkJlmIsJBF + THMr43BW9Tic6+18vIxnX/SLO7Rba9YzizmBFfyzidAmWVXptBb0aKOT3d2naROlVterRulJCSkd + ERLjzV20Gd8DK5HGN1G2nlIrUV4vp1rmIacrkbcGV+2L8SwtQibwfXXDZhRXLd+VCS3ZC7gONjLx + eI0Y5BhUgRpaCUQc/lQO1R5dleqSgL7vYZkd0PolDMlK/xgth+U4b0MDG6wc+aKF7U94SP4V0/wI + IBYzJhza+gWjtqLp127ta3Eihv6823ZUqg8aBsesl0Gu+Mi8PqhspFIflJ4Sb9GTdmWVwk9vzs7e + 5HlAz65LaVNHmlxk8HX54/Gnm1s9gnUDD2TRD2lz+kWSif16JxOExd4zrdgc13jwpn8w9t8OgCtC + 8TLYVwcIMgc08gPCNA5OCbZ9cjHXN0HjiPeO1hgonMSRYT96CjcO36DYuPGiD1XA/Kn4hnNVgrtC + lcCrF9s4eNHNlZiBgju8oJyZYXm9EzMsr09eBjRQS8tQFlaMYHhYRItIJNqIsAVZlv4ZxWI3XoLt + X2kfjd+ss0r6BjwQ6Rue45tDI3XfTA4rQkNE1jBWcpY3A6yoVk10zxaoKlcx6ofFtKm5A+64vZvo + MAMMCJ5/aDmUfWCrQpsH+pxUN9v+F+Og95cT0B7Ol0o/EXveEQH3ukc/xBVxQCOH3xk7oPNIZNmv + H4rREkzXx0sr7JHMRK8bmUEk5YoZhJ6qmJcrvxbe7Xh+pcqp/3zqIqJrMHEt37XcbqdIuoYGGtID + /oZeLkSRtZ9KQMRATgLfkgkytmX3SZDB1w0TZATlWoIMPqVtefLqXR09LqzW3nWfTwPf5qE1gdNo + 21JmeEv1P6brmIzZIjJxMUvvgLPPYyEcgWwmZbESZggd4QR+VSBxMInlivfxeoPA7wIP8/uDMB7F + GHSVw8KdzO/qWASDJTU0j6EZzsXibZV3bQReYX7lJGCa2xJoF3FnOpSL5Wm9LZWC8ENYiiCs0LvB + ag/LTQMoDGN2ldKoz4pNSksmMpbS5VdYArlGahwbxGZB45r4PK7Ax/VY2he5oVA4WU5eXcL+hs2Z + Z3eELKAoYsfPL1nChakH52Cv5LAQMe713RqhSdDVcvctMkOGzyUyi6wO1YXriNppRIozIWOUyyEu + 6g8wNarmgmkQ6UBxRy7m2uInRfPruDW/8hCxdOh8kgH1dgI038EojAa0L61uscsJhMj8M4HVBirb + 5FDh+0GKRwyFVewzWd+Y2z1QX+l1w/rGgnKtvjE+lV61z2e1GkuuxYJaeWOGrNNDtCDblU61lw1Y + YGWtuGxSJZtJfPaGT2qsPZFRWbPC0IxuHBjLhgCERBmdFVw4AvX1OtYo3Gu1CsmDt03qdZNy9Aw9 + hd6xWu7JMHAwcq9WMalzgI2Xuw2yjkkj+WWsZ42UWtHR2uoXc4Xq6Omt0Ag3XF67mLnBYEYbu0JB + n7nhye3IomnAyN59LbsBuW5KiCbdy8XbbRateJ+yWu49IolO4y5TfQ1rEzZydZ06zkC/Oe9PfPd8 + DnN5DMbuCR3u/4A23yM7nF43YveScoXd01PJ7t+c1qFQXPT1ldk9f/6bZ4UeqGkeszxXYkGdF0lD + AqN9NsPSPvH0ZnsfiXKmpZCTSfGPrHgV7/dUuOHzb9Jtzpi0pKQq/rQUd/FboSdgbchNssj96MT3 + b2b1yI17rdtUeL0ZTqXCpksgT6AzBT6rxXfmA3uejweOXFKNutEacbywRdEL7dCFZqqKWW12y/QY + dLoNHa+ZXrEYrQTbYlEUwdET3gkj3OE5FmjgegPU0hOTjJ80rIWJbC7mFN9smvudTPcnpfsVNIgt + dx6j3pazp2B4GywYTxxqbX27+YHZ2u2leqmbxlZZa1gzpF+6d/6NadaaakLLWpMPVRGUiPGiAB0N + F8ZR8bTmE0RV6BijtFcqQ9f2kRJeznI59xJbG4k2RQZcaHlDxsXYdRobETxqHtFVUPMaetQYftIc + fVKLInZcx5E1NVsDd/qckZ8Qv7I3ZJ0waHVtlbOypGsijPet8O35hQNQWIVEXu1PCmEJwnDXhPSs + /3YQxe4UxEHkdKz6E9TPkzwKe2smg4n/zv9kFEX93vJCcwWAXjeLoibK1Shq8bQOARvY1dDp30Lf + 8iaMWbuyqGYLINmAB/U3chheoEdEItnC7OKK5q6CTBlGvkazbYrhrCUB5Pdxjppbli2kbHse/Qt2 + 4hugskg2YldeYalqmT3z7PzN1VHJmCKCkCME1652YbxS/cOln2MG6eruYYEG34fRny9PbNET+CVH + xkdRTjyUqIcBswcRjgOKlat1sINgE1qiZRO7pazMqTBZ0PTGffEPfUJBUl/3vYAoUKBpaf+TpVzm + Mt9pX+ieiScNhU98N4cFCF1+bPUCaSk+MgYGUI3oyADyqYxme1gn8/Q75Ye50wLzSvisKhgA+sv/ + teNtrQsIGeD6fCTQngOKP9PIGfjafmJq/i6B7sfFeokKFj5hJpUnsGExBojfRB6Kn785/7CnSOAp + PY07LwXWTy9FTX1kqqnljWiqmnpqAKt9B2rtcvw+fpgnt4S/tdnewyzBDfLlVYGzKzPq9TYxRcEK + A4lhtNc+7KcaqJQRvyjg675mvQv40jfGXEU2oTMVekjK8O36O1elfLNYWIMKf+Sz2wVcjfBv2KXL + o3yPjsqPx2+BwgjJCL4RWDLy9bB7nPOQUozUSyVCMEtJ38ppjkvaQmM6q3T5f41bE1vbtWZQcYtE + 2bGYE9xwcQoKXCMGnOlx7k24KyahN4KsJVwzon2x2KJYQWwIIWgeoOmRsFZuAgTJ4XiiFVqUOZRv + o1m0hpOyv9Rh2VoQwTzJtgsE0uty5RtBW+5HugdzzyEXWfjWP7Z6FUwoPjJOVVON6Klq8inxntkq + k4V+2MSeiqocsBMEZj1ifwkOpAL0R62vFHEvyuT28jZjo2v8D+b2w4VPuf0+hVjBlfKvrawWKbIu + c54g0a136gdqc1kh80kEpT2F+ZXb+1IlxB58xPJA4sQPquNsQ0IziKrqSbGHFORbTs5OQRTqXXLH + CjkZMcrqlSD2DWsvd1UUaVuMUAZ7ww6YJzANGXnJBdHbdfoNFroHLUfm4WPtytsue2oLCRvkPtGd + KJulREaMrL0QaxshJoKpkS0k93jKxIDkTtPnaeeOcJnEkxU05glaZHoZYDFlu2lHFWexwXdfB8vY + i4zRnvLb95SJTPcEtGS17KAo2/WlypKNmdXBsRklc5W3S7Zd38AW2X312wF52VoXqF/cQy9yfaZ7 + SGBj128jNcmfYhJ/gYwGXGW7MuWc6hYOZTlVxkPz2Hh63bCUqqBcK6SKT1XxiHNeC7KjoiOVOqrc + 833uTbgXspA3RV3IcKICODmPxbrHIyfv48kYFrksm+GpiO7hlQQ2QbRKV6BKAwu7j+eJYBOqkuYL + 0K0QVFnWjYLnWL5rg+bOUvB1QQA4DZZi0WOz0VYxw4KesKLns4it8hrs97welqf7lWkYxSiVgKHH + aXitQFyM+4Hv1YL2ShIr6rebZLOVtdAbowJtvwPXo9xCbmcuQlxTVaE0q0brtQX45yRHf4O1HonN + ngdgWKEv8DDcpiCCtnC/uleTO6GsjF3okPP1tsHaMnQdnkEiKLyGwbft9BrtTpjthijDfv6yUH1O + RhW1035m9r4vS67vPrP95urnVhiQ11GgUrXgzJu7AOl1w1QtQbmWqoVP6Tp6c1pHVbQFNoyeqvVb + wLnv8UnAHc/eUR/mfg30B68PU6KkDIUaHa8dNunp1pm5INRtlMhS5FZZXM6QEntOT5G6lclWrGTE + xug39VwW+4DHL2qYJsCqYwldXgWTG7L2FHZHrtALYXzBYmwCRml08fY8vw6cIGSCIYekJ4vsLUxT + Gaj2jSdNW7NDqvU8XTfJ4HVxOGks99EtqrSgr+wdemE5Mqp8VdvdffOY9iG0I/ObFLsE74yDVJbA + C6SyuY5yTtKiwcj+l/7YF9N5oLCTgJKMPoJC4vXIWRevm+WsE+Vqzrp4KmsQNyQHO47j1VLWA+YH + 3iQAwURWaZBOPxgXyEjIJfS0Nrp9zofJ4mUhc+DCq109yvGo5w3xsC35hvkg7dYB+8jMTsLefSTm + swIvzKsUq5dXhBMRL/8N69GSRuz4relM5W7l95g4Xss4N2rpOcSh05PYg8rFJQtlhVpbRnIzNbng + bQnOzAp2kBudqi3Qsn0mY3R/CKUKbkLkDzizGUEOqiu56UaWxEQl0u/RIpVx6PWk5dqM5Pd2ac7n + W7JykMkUHW/f0qm4GkkOx7Lo2YtxBbnwYvYFNGuk9+Z6xUbnpRRn1wm8R7xmQ+Wk0kZRp9IGTWtO + orXWkhXKq75ce67fIEIyPiUqg1zFa+5jW8fNSBfpYpApNiBnkPs0TJq243AvL7cl7rsht9OvmQRe + qN99I4SHyhz/+YnZw2ZUM8+jLjVe8/vT9Dp6WC6+gcz69N304zuyMSOTn6fLdJ1NECIBnd7w40JE + Ys5m8YpMU71MLRaF+r+f9hxhw77dn1innEjZiW8uLc7MLRP0upGcKClX5ER6KkFkPr0VYUgljGf0 + OLhcr11rYzp66ASWNWGhZ6s6PhdSO07mwM2XaZZs4EjaE1erVjmtFBlUNtVatOdknAfrob57ky7m + FIiboZl0er2I5miqROcKRusCc4zXlVQ1WDi4TMQOuxmfbG7DFUoa6fb2TiKaxFNg3in061YZAaXN + S0m28BELGkXbXQKpJtj6ls89VpNI6xGuz0Brz7bjN9vlbXKkWzLsdvous2yb12wtUgOipSjbA0t0 + bdcK2/IXdbq5XKimTJd8PRDeK3Qmparz+hxUzfbTfCZgy97Gm0onLc/jVY+DAXF0QqscHDmx2qHS + J9iH4Xa2AaK9YzmVNvKOq+1c1Ij8HZQMtKInVdwAj+8xUyqWWkOvRumz5BHXhgNLp7VSakGtqzKF + 1XeIGo12nL5CIyibFdEeiM6d7wbsjGaVmm7Sqep2sa7PTr9ujhSCzwvRYja+TkGiXjXxj2fAQI70 + erfYUOO7dmGgezH+x6upY8EAVnGU29VGgsEpMR30Taoz7XE94Ly+lmbizIERgOIM4SfFnPa7b13L + ZmWxYt+MAjhtHskCs3Xa0ZnGq5E7BHyptG28HG/XURvAUVsQCOeuELBO//zUDvfU1AGjD9tadXwu + BNJVEs9AmEdLQaLNAVwkrebFNsAH16b9RSBZyzn5TuBOyw/Hz0vUIINa3inDr55AesdeEKQHRrvY + wP+l3N4hOfxoDELVObzJS4bbOlPvnCElhMpCc++BO5obK+l1syJzRLlaYk48lcbK8yterzoWML9a + YG7KuOWEwYRxivISMmhD1VjM4YR7IErWyl55n/E6TsXf1ldWGr8mh/CAtUgIvh8EPuP/HF19Pv+o + EFvLUyrK4MqdX5NIivZejHM/VBUFSazB9Op+5uJ/POXwfiE5Hgj6a6wkssQ9/DWmsLLN3YMA3LuD + 04WRwulSiQPZXfoN+jVbxyIXD11tQCVOYRHy+Ap8D0MAUOuHfZ/eX8sQx5HYcXmWnu+4Izk9eGTK + u6ffbW5AoNXAZpMkQd+W+tq3Dy4TfdheJyDIgfxVgqfPQw12l0TdIbUQQy97OLHf8+geS5hmm+R+ + 25gr8qS8fx4FPYivgbfFy6/xIl0Z34g/w/xlA8MXna6dIrOLA6d6KHS/g8CdFZVQliIsc51ehpnB + XHay9OYl4z3wfOl1s9KbRLlaelM8pVvw7MPHmsvOEgDqldKbXhi4TjDxwtDxpCHmU1O5BE2Vm8cK + OZYcKkqFms6wHPkSgWUVhqtQLjXmr5Utz6PtyqWbTuczHqyQ5YNYhDya7t2zZVr3E/a8LAOLccep + FdFSNRF7F4/Qww71aBG4ESdnF2d504ip4lbdZM1F3KvqOJZ8b7lsW8im8ubrAhIRG/kChN9ydZxS + s44bOiYjGp3mcAHyer6LgRS662FKxbL9Dv91VjL3GCuQfJ8u0nQ1Fb9WuiUmV4QPCk8eqfhqi/1e + bDFxX+AYY6qdno2fnZ1evs6OJt27tXnK8V5Xm1W7jHL7ANx9VGhuhKcrL8zq2tYvU7YJ91FJyG+Y + gr1rkO9Lt1XtHQwJJ6cYEoyX+dnoU0SqMXL1x0kiEsDm8MJJhHS2Lz80NpUMjPWibl6XIBrfMz8w + v3npdTOIRqJchWgUT3MnCBqBSlevw32Hc9eugjROg5AH1iSEPsj6Dp9wgmCOcxtAboorGOEu02WF + +fU1qRaeC+7Xg/0bcBeFUaRmkC6wF0G9DrzA9WruBTm0L4lwejWsfLmREDTKNnu01kBh8ZbmZkOL + NwzDtXa1MKIFqq9PWb451KSNxTKrCLyqvTlcl1/j9YMK4RQWJFj6damsJqY8jcQuzMP4feYIy5+0 + P6kewglSvelIwWxVMv8u5mqLLu7GDWPOz36k4brV/uxQOeRKyC91AbZMt8vSyHjMKKHibbq4Tfa1 + vVqO5e+0g5qqwD83NYQioWg2otUKQSP7Gw8kApPYwFOitYw339K1WXFWA7P0007dtDw3t8WrgD91 + GvckyRxiTk0ke1IKKTFGT//pb6WHk+15hYzcfoH3M7hTYe+LSyt0epQgEK+blSAgytUSBOKpTI98 + dVUvQWC7rFaCwOeg4NgTH43VsnTQP+LFYlpA1jA+LePQiEDJG5TUT79/PyUj0w3MTLyWQZ6YOneN + SRDJ/QqLWm6K0E2pRErZXtWbEUlnxUVB+h7Vlc5jOgTcfYb0hCtbE4su51k9BVK8G5MHTFnQdHOE + bikvxboyx2U+3B2NVQpMjQ5VsUWTvljo2H5QFY7K+u13YO8gEwk8CGVsLbcQwlFqE4wU9boF4OqN + fY0WHDUh8vFnPs6Wlx8uJrSaM2gMtakmOaq+FrhQGJKT3sXfk3v0Ta1RjINbahaPcBvmhQl4SEWC + 7DAom2U1chNRE6i8eLUD14E+cSjpriw1z6ZrXNDsiiLo1sntQLBAbQr7kQglF921XYZRhndY2Mkd + 0jmpuygI/iv2H27ETv6KHJvxooxwPoOVwyhz3UXxqqLCxn0MbHiZNJnkO+rABT7Zjd9zu4f3lF43 + sxsT5ardWDxVdeD+qjJzFoZoGa7YjbnnWPaEB77v6q5TTfssAXnkGgbM2B0G0W1IYsC05pL2gjnL + 41fpkq3wXkCmjZNeiIXA9ZGPwJkTd2Q8v40Vb4GTQu3llzOewvL5EhdKtoL7FcSAFeo91+n8YZzz + 8rIVGvoirVnrh7wcmbRMq+pzD/XLoN4J/SrgQZsbl4VYWi+suYNVf/VwQdYeLlimU9e3G6L4RABB + h51XJ1lLmlcsPl9DPXHea3MTt5BtAn8xir/j/dtR5r9ySKPlVNADXl80RvKN/oN2/Aj5Qm7xtuXt + ahE4jq5BJcs74ITiTu51oeJGKeuutV1lbJg4GGvJZ4SMdB8nae/kFLF/6KYq9tcaAw6EsSdZlmwt + YunzxAxayp/b2GOjMx2MqIQcVG6TytY30/qBcdJ80ZHYJQOYx1a17cYhCsQGeYF4Hp44x6xPPYj8 + G1MITNWEBoEpH9JVvxVxMiKVIsuAWeTxsW1/GH9ex2804oh8abuuRL4kc9Ay2YgciDxr7tDsJFDd + KR4T+/XjMHgfqT7CD04vZx5zGS3L7Et8SDREqOFCM2sPXGj4qBcuNDZSx4WGp7SB78owGGrzFmYI + iowt0BSaYJ+xBdzEzLUJEncQy6ixQbF5sYexRpKaJLZLpA3EDJbz59sVFXJwaMly79zj5sYxet2w + 3LugXCv3jk9VufcPQS11PrBrqfO/BcznQTgJWGDbvEOjEvcmSHnXWH/goSgAD00Ogt/ihZYbsieI + u1IUgPcDFD9t1JdxQ4DqDfsxye7upflJRWmiaSheU7ApmlvhXsHIGhNvzE+qTDwYCJPrciF0vN0X + 5yhkMoTNYn6fEDZ83TCETVCuhbDhUzo6f5xe1eO4OfKWiinC8UPG2MQJOPekhHKm7Op38feosKyT + r3miqzlFbJF4+0s5V+jZ2TK78I4EXlmiRcbD2xgXkb+aVfzuIqlwXSRWpGuMi0mlV7hs58yixUbh + aCtD22QsVcEM0QRA99vOsIzAXbzaRHOZlZTJw//HLBs8Gr04+XncVaPbQjrvW8As2m0dGDjKgmrQ + Wh3kqJIj2O6hhzvZ48x+xKw31eXRWcduwb1C65u/AytWfck/khP3QijE61w/u0tu78b4BLZJsc0e + 1mmxzVAnFys+TjJ9x91Hywcl2saiVuMdZrzmiTLFmCfV7UaRCvECI/Zgr0Z49y6FVR0PYa73OxzD + CJjlknq8jBEUujmOimKs0PRx+eFkKm0ec3N9k4euxOpRs1Byj5mElTXmdh1KtC1W7WB8wx9+0QSk + GOUzwSb2xJm4E2+6Av6h79jqITfqHbSgz3XttOxLNqyQrR6wvegGDiEx5nTh6irRtKc7qXYLtdLq + cSCVweB7sewEOUBEZfCSGrSXfSIk7IHz95bTI+CdXjdDRSTKVVRE8VQK2pcfWB0W0Q2DKizilIXA + yZwJpu96EqZqjRGTjT7X0zeFrXQy/naXIFNdZGlxP1+ulx4B+cBv/kq9VOXODU0AJ69VOJRu5vWS + 1e/02suNPW7yQFuMt+JKhaCQuLWAeLO22jzSbe5urbH8lm4LSm+MSRdFN3eQb7bMm63ApFhvZWWf + oZlRjvjZ6ZsjgWHatmOMNslI7NYcVtG1/F8mgnzfmqftdoOR3KDK02q+xTvJ5tfk/uHUPjHtnmfB + rFcDWIVDW9Wjt3ogvtDrpvXorTriCz2V7uI/P9Xr0TueVatH79iez/yJYwdCM0Wm+2cO2lGuNp7c + U6nxBYbHgoi53aANSC/dKINfpXT/QpiHqEJjNJaFGOF3AfQy1jtPAT/PsNtTkMLXMfm5MJkeg8OE + Z+TtycuTKUKTJXo1PKVvnXzd1Hmz0jR0bctv1SYY9x3m1eJ+6uNtrsenVXxnvu6vfHs2qUUBlZvL + GW9Xa3oTQSWziZqokR/9cms6ws+KOGmPDVCKC773KM7aqJjmgKTaPaK2DprQHzJCfN8EGWEmtu+F + OdHqUnsKCBJPwc6No7FJkH8Pk7oG3UXt7571PFumGpgLeQPeT0XJsftHoB8Q/SRLlZlriAbUHalS + cR2vR0IQvW5oxxSUa3ZMfEp35Kf3b+t2TFFqvGLHZHYYWAw0E/jpBbKeY8EHRemIBxAosYZgwRI3 + 06sPJ5ev1e30aXFbv53IIyQmcjwTVvFlVFEQ7DY4VoYVOR2H1+KSykRFlRw9QMmqweHuIhhHaxhS + DiZTqRnShterkyuF0NK8NOsoCLHak97XHfRcI3q19CQJ0q7bOa2dnRu9zpEx1EBFRDSGeyDKnRKR + RfwP7AlO2sefm0SizkqTXKY6ADtJzTzoBusEjdOyjxKxVgQhoTFELLyC3sKn83T2BYVX1eifbz6N + n/25AtrJzeZhKuB5j3LsvFp4ErzpstUIz0luagx8b5ibmNiXgPzOY18OzBgSCyRuEH0NTQT/4bKW + RIWhvA+FibUvQem7DgrPcYVPmOkzO6GgdtVYEfJBhQUYNv0DknB+Bbe3MnOzkPTWymTuT01MjA4/ + to+k4gRinYBbXSAqDcGw9jPT9qWxC4R3B7EB9fhOZ6srIf4t7vaIUxCvG0L8C8o1iH98SkLK+5O3 + dYh/1wlqcQqg6YWuP+FwYDHeRdRBvrmJEdd8kS5v469FVML76LYB118y4eJZYwRAYPua/KAiCYYP + SVjHlDqEjiwRXBHdVsOjmW21xRbDPYVZEoXJsezZnSMKRl4JE27YfIZejMWEo+qKluLVOoa9kkfh + Suh1IvKQbpdUrDt7ISp4lYDZ4++bWF3C93EkQapAQLzf3o8XyQ0IjKtIJkDB9yNsNA+jsAMBVMWk + AtEyD0b64T4Fk9Xe9/IquywMji27Z5Vd+ZFxlV3ViF5lVz7tiA4rhQau7qKlTgyr5loOk4FgIYXk + VorcmvG3J1m4ZnAgRZdxksuoBn2yMtwrvsJVCp1/TE/6ICuJD0yxlYh6HV1JPJcog1dXDNHJSxzT + th078INaqsxvgRNYnjOBH5zJvMcz4Xa7SSjGXsYb3qX3RYTI5afpxemliu+ar6Hxb9Po6bPTASK8 + eOCKs6RWXcaPnp7alndsBX0YRP6NGX8omiixh/yhVMibINvLIaJNL2i0ObBe3/NGj1nj40fX1zCu + L//TS3eY93TYqiAD1fOwbZeglnJttiFqqk6xrZjLr1Ie5OeiPLhVGkUNqP33Vz+y7V7KJ1GTZPhy + Ir9+6Q/TnfAo9UCYZanC2Yz3KpwNr5sWzkbK9cLZ8FRavk/eeFWlktncq9fNDgPmhxMehj6XSuWV + xPt9BlPz5VUkgi4+vTk7eyWko6uTtyfK3Iiht1rhrkoNzQS0KqWA1eHMJPiDChJfgiA0z/O4J2qx + kLfeJdkGC469c5SpPbrxagJZuWfVGJw2UMrQQ5tuvXJdY5wBTUIzzkSrkTxkLMjDYwuhj6JPF4eg + XjKPu63hPuVWcwnxLZvm8HLVtcpj90u5m/okVsqEFEnKzY01r6s+ANdr930Edhjwqu1ezziAHfS7 + CL/No2aFwp03HK1BWt3ElMyrRzJxt20w5R2Rt6t2INare6hnLsNI9ICD3SNRZquSe7mFOGgwlWiG + Xb1tPYdFhFd7iFd7rUFa5dFT5g8jZHxFDfXAGsmtS3aWdtBJWUrwLUNgtywuJ7N0JTN3Y4lQJkgl + S8Z0v/Zsa5AANl6nUVql3uQePR7O7+xvY2icaWxc3opDEQ87zmuf1RJ8TwiOzSzSzOnhUr+aOJMJ + AZdZobXrVOzEGO1UQUAcsWsLJAx7cWmV+qMNyLBF8iCUL/0fYbPzvLC+6RoFBJPeOECOkODfn/0x + foajmS6SL/FRf0D4QSBoc9Cdg5Bnf0AJRU4Z0vuKUWZHLCRTaTuDOWQihk0EYBalDX54z/ogGNHr + RkqHpFxROuipTAR4f1kLt3FYWAlJ9Z5Pbc8KuTOxgYcxmQdwWY4Xfx/N/q9Y0pLxRIxfgckRriDW + 9s22K/FKmgfqfKpwm2efjkCrQz8ZvvFutWbjZ++O0Pj7UXfpPPt49AIpP2AUxxqj22oiS4xupKgt + gD3PIVis64FAn959bFZObKcKr6sDAIGGirlx1XBV5F7KfNcELATswGtRehi3Qtt3qwJ7vWSJLhl2 + YNGV+5jTEwtYTJiJ7Bm0tdDcY0Rpmyo+DitZCZ6Fu1sP56kgE4Xc9wtxVm2fYp3aEkriG7iqE2QU + rbujmmlavQKLV6dwHaQzCiDRZr9SEtP4TIxgBIWrEZQPwW/yfzqyRE79Zp7O0i0Me17KgZ7G32cE + E/OIdXDaSfwaSRmBujOrm/0QDPtC/KSAp3u59LjFxQd9i9nZTEpMgpL9X9MYizF2IBw2Sl0OwViX + mdkqWm/qkqPsai8pRo0ZWinl4isM2XKbxtN3EKJ/0YkqozUSNI0Esq4bnVL7Lt5zxzG/0el1M4BZ + olwFmBVP6UZ/97meZOKC6F0FmJ0GPobPBgHcAjqChggzLK7Tz68uprfRAuWmrFw+UeYgUPDXYgtS + 2ERAzJYstqjnb++jVhpwqj6//bSOF2wCu+8uuU6wFlkj7pnolD7s15cfmby+320bskwG8/a2974l + vNXV4Qa11JLAseBW1i/FtinWskr8oIo6qFO1wiKu5ldawhHu2ByLFpTkIUJZA8+xyc9T8s/tGz2K + U4+ftE2jER8GIqJHGBSo+OMa52i7aIp32eFjo9pdzbR+8QwN0hKz7W20fq4cO+Ps4X5nUkOnf8dW + sFr2O3Zsub1AtegTU0gt2YAGqEXPiM2enpz8N9pTlg9Se6yGROx8odQKdx3bcSk6wnMtBfa3ifeK + ZPBtsv6s4pWA04ENjNLPElEu8vLa/T13e2z/Zu/0/54gUy8s870qqb5DNVpWh/OiBuAiFW2IzbO/ + O9sKuF3ahYcR8kudG4DeMPUbfYLiEsxtcQAsxTAFGJnl/E+WI2b6r/xjK+wHOqg+MsbMVI3ooJny + KXHJnN2NP0xlXDDuvVvxQ+7M4vvcRfpyu+Eq3UuZ5oQubfLmSO8GfqYeSABD5osSr7+PEczQC23k + u0PFGO1fAq1PTOlILbqrgaRaTs8llx/1gknFRuo4qfBUVdLcvpQrMlpl8XaebteIn4Wim4AbaroH + c8K4Ik7AJLokrcga9eaqn2bPACTmEqcreobJl0UByt42iKKHXSq9eQCeKcUd/ZIBh2LmDotnwzJu + 1KXkmvJgSkBiPSTCQwO2xbJl94jALHFk8YxCn6SxogKhvf8S7BPcjaX9QjVJhh3qwOAg+e1yb3+S + IwF3W8/f4QFcVhgGbSfpkCC4wBVjF9XE9gF7UozRyxmjd2IfW7wfX6RvjNmibELnivSQzDn3D3eM + 2OP5dvOXYo/RPF7ipKGdSsQtZw9CkHh2cX72ahz6th96/tEIPhZ80cfqdtbOKunXD+MZSvki6I/Y + wQB12cXhxRF3WqYb2zb71CQFdciq6bk4eGCMsgRol6VVyim3PVlcB4OsT2svEUNcphLYZ4XhNnER + jXafAE/dzO7EAo3FquCcfpiWN2RvjANsTswIBrMm/8YhIJ0FQdF2N7A7MsTIvru3YbjbUz9U5LHj + slx1pXpK+2s0rkuuimSNXvJ9NZqB4gMGUouAEBWbqhMqR0KrTTSGa3feGyqfUeXfPhu+MZTkQA1u + rMJ2XDtfx2m2Xdxs13m1sL0pil3mCJoT+GlK1lQOOKCJzvvbzwH03RNmgebWD0BffmQMoK8a0QH0 + 5VN5h89jmcmmIRmXipCUtZrzbfYlXsALMsNthJ/TNe6F4hrfXXGlNYHFZTZXn4pASQxnI+E8i2/X + 8a2hw3cPJNZc8wwI/vKSe555/ja9bgZ/SZSr8JfiKS3I6efXdfTLkPMq+uVvwElc5k8Ci9m+hJip + RKDAz9kWAYTXqf97lq4YLu2H6HRxPH69nKVzrJhYq4B8rDIV79fQqW+r0Xm1RHJ6k/uqlB+qls+s + 4migCWxwjFWfEsl9EP0LeiTXbXR59aEAUAz8kFwsBMMrYSzSWg2DDgdHg3tn9AuXVs23ZqigBfw+ + JRDE66bQAn5DCQTxVGaBvLuoB2S5llWDFmChE3rhhIWebUvu8uluxVS5Nd0VquouxsuvMRpCp83G + YAXhUfI7OrwKmFcOSkJoJr+OTaSaEyWH9KQLx64Qm5y9LSKnuMOYWy/w2asa20ULuSGCppgNs/6Y + QVOtLeyImWp1DTdPwfV2LiqfA8/A81CdA4sH7eXhHJejB3v0obTI5YgouViTZnQlOFP2itCXkqw9 + 3kplEtRiaNBfLafiRYEYG40vTs7H8xTD9CvlbWV3ppU9NMKDlodcObY9kuMWN5pSxBrmyViR+UUC + th49FsrN6R8QCnVoQMDBoVS50GoRUrugsw961KGx7ASXUWXovclQeITGqI00FrwOmjqw40bZaWUY + AOKXMUtFX/GgR3lv8bpp9BVSrkdfwVMpWb5uir7iQa28N2OBHfAJ45aAOKMyLDQgiSB3Gt+y1YTQ + anCzzaLVSpS0XP4bejmOFqu7CGtGYyQsBp7eg3iYjW+j+/uoVB6dmOY6yZ8obxqyRyRL4sJp3BBA + pbaofoPbrTmFgYg0q13ewEJKJXrc/8p7114MxWvNksRodNuv3ZDaDOmXrd8GgJ6TGr2EhR4/QxLQ + u9JkQQeP1BSrYOOGtZjA/XOH6EXpPAFmOX6G7yEozjr/GO6609dvGb55u42WD4uHRakuwZF2EUZz + sfORiPtf2JSQaKHZF9QBXOFFEi3VTkjw/kMuhvVKEzXxkSy5Q6EcI9yYRZCVQxqATf5sbUg9Last + JAyStA4q2z0IJ+3+usNWZTOXQhSaDmY/t81BFJvVMHF8BC81O3lGBtBDaQ5jP/x1rJADpwoxJo0m + FuuhmdLrhkYTQblmNMGn8mp7/7luNPHQw1sxmvAQtBh7wlFBlZqp+DbJygnAyMpeJbPNQ5pt4kUC + ssJssT0hkDd5Jy22Q5TqYiFD01kdQHf7BaZAWMEEK5amuHqumN2MHxBUSmiX9E7LRoDMWgLQUKhR + OjyLebmuVi0x9GDp1M2tp6TTrIg9mc+LrnuytkT3fBpG8dkbW68UUjduzeE0UXJptEWTFuV/ZWMJ + c1Bgvmjjvd5uxnDy8K3bdfoNxKZ03bKcE6Cs7HViG31JaJIEDGB7E6oj8v6v79mpsrLhLs+tbHDJ + jmh+igzttsTj7ivWYXaFgr4cffib2AXinmnfQ49h/M15dEA+0z0On9EwKQrCqU5YA+GfmAo79N2g + kk6Y6/ZJOsHXDdUeQbmm9uBTWX3y7KIGiIqqci3phLs+Z+6Eu6Fty3hoOobLqSpFkYftUb3GZNUA + i6o2nXBDz+ADELOr9USCgLVcCaEHrXv1G0H2pIXd++3ALa7tuzWjZblj92lHASi/Hb6jRLjE/Qu6 + CFORLNTB1bk9b8uj1IavXSrCK72MCE7jZQWCMGwzCYYBs62wmtOiDAT3ya0MHH+GDortWNufR5VG + vPYrijo9+qOyXWhqVw2Asnll2xVVr1dVFuF8TfKZgyNSmlBRMHKDhVeEm/hl8oWtlLCywgiReDl/ + MRZ7cryIv8YLuD3WsbBDgrSIdj0JSiIqYeUgJCM8H7n2ZRFaO86o4sSViTe2ivkWI2tUMYQpnlmc + lq9K3erD3nDbCK2ouVplee/NY2kcNL43ikacUJlZ98Ix9C2CEcGp6x17aVsSHqS+QyO0gGqDNLcL + ypqFYkzz5GvSXDr5UVD7gDXhm1X2ZaSGw8dOZQf1vRED361SKLkD9lKHBffWxIsKp99pTxysOLQt + C+BUWHhvIn51jn4AQRNEdjKLn+xZ+ho0PQLOu4Rz1QM4T7xuBpxHlKvAeeIpCR8XHy/qwHkOcogK + cJ7ruF5gT1yQzd0KcB7wtusUtIfLD8iBzy8vFJAAsgi0q67W8RRDqydCXVCsg16vvbwhmxYoe+ss + XWd4g8jSxTKTSlj2BBg5STkX6aoOjtcQrCxaa4Gzc9vctKHHrQBUyip9jSoMuQWIT8+ObaNbyD01 + so1iD9BtF892022h6ri8DUFDo1rg2VesjxU/rdMmmTUS23QQCyrFshuIjX72ZhzhScqR2LjHR9Zw + eQWtVExMxX5Y2EZxWBi120vtpSz332tL1G8UHVR2jsJ2QipOh6G+gv51+n18+vurcbZMd/WqfrtR + 3GDrETYTHA40oLuFJ7CLTZmMhjWOpn/0sCOrrbcxi35D7E2trXDbwVZldds6KrgxCK1jy+4V2kif + mAY2yga0sEZ6RjdnFmM4OFarSkUqgtLAZNHuckQjvfp767sXqy/M075Y4ROR3Ox6MnXB8YrkZh3T + jxwQ6boV1888h+qARroVlp0Rm91fE+eQ6Y/CrtUfF/ygShu/QNmLIYV+kB55eSMcVIkeqTllarXz + sJO88Q7ep6ndF/DhA9hhUzVQQsyz8PZWaXJuLXX5g0YFPN8pIpZuDklJY3mubsj5seX2S9WV35jy + fdWExvjlw46KP40FSKvJuoq2YOyuOxoA6cV1LQJnaSmD2s8Es4dLY9/wZWiR88D1O/reiXay8zyo + zSPyGf86ew8iqLnnmF43UtAl5YqCTk+l5/jNq3rdc1HKtuwdYM9/AxmZsXBiu8jLabO9S27vFg9o + YQWm8zWeT8ar7YZMkxfTRZqu8JyLDLEUtqNIGEuozEG+jC8EplEE23kji4AqXKQcvxY0robUmawU + P6o09dOb+RBOaR76FgtrOq4cSzN0fBC0OQp0crk+2pQNlA9ZR6VvdRbkpEf1lejKNlJXRdeyNAYI + f7he2W5zhHC5vVxEU+MpkQcJY4R7TqmyIHy5IzlMcZC65sXszO9FaUg/6p4C2aBS0hC+0CGu64CU + q+rhMRFtDkhCKy+L4rW+yh8J++WPhOb5I2Fj/kiY549cnuN9WkkgcYKGBBLH4ZY9YQ4I2tIa+q58 + s3+8fKPSlNIFNPDtEWNx6tXlpbPwzXZ5m1SchDYP2+g7rset0H3C5doQHZATSIlNOhHVs5sKcwHN + Q1fB2D2ZQfNn5AdTjfY8/NIvUl+6nqf3yWR/sUAV1wxe8WNu9autKb8xLa2pmtAqa8qHdJKzeKYi + w08/XpydTWepcKipOtpFPJUGHtf96pUgqhtn4InANuK+PYREvn8Z8fbcD6q19foSV5fyFftU8m6l + G1KieC2Zol84lNqKT7JY+d684Wlj7e1lUTqQ19ggSIq5FGesdLiihgUxLmcGio+lLRA0rUj35F+U + vfp/3luOb+6KpdeNpA9JuSJ90FNZTuDTJ2bVdT2HVaKE+fMp6HpO6IGuxy0UAAWb2y4w712CsuEi + xesX5fyLQlWQmX8omG2vk/+3TbAiyyK5LQuAL4Tslo3fXX5ilE+YSTCwWACjoLpQ/vhLbpiejC8/ + v2QvxpcU/EKFCj49MCpUoOKIVOmAzQbGPIBwpAkvfdNwdgtBeyfRer4XurW0nnzm8szKyvTrjtnA + aXMj6w0U8WPNEUivirQ7uQq6bGi3gyT7fugHQa2guR7fRAFFeiRd0F7joLHrxdQUEPU5qFdEYEGV + feG5THeHn9baGMnjoZ2Hy3TGVqVmXtv18yDPTCnEuri6su3tbZxtyuUz8jg06PKtxBp4kWtuMjnt + /D7jfEWnSku3FX8odahAjnrRfvimlcO3vWarEfGS3B3tBvZIThTyRZM5bgZkakCaOpimScgayTDN + +81YxrDczvg87WRMRN54Lj2YmSP2AqDcS8aAm8+jGC+xr6eXZx/etm7eHhIPshp9NdsYlNngBjBy + 2Fj8SOvTuNKnvWKvuKVqfTPO7d7FvtVHptW+80a0ct/qKQkA85u11FnmiXB236QCP3CdV6UliLoA + joNrB0ejttdeAaERUsMC4CEsqoS4pmIWiLiEfidQyAmBc9N1MM39v3uR71aGJKAi3OVTAUZP8Znp + FpNODq1c7lMl3Js0rwqODHker5OvxB2GrPAdSi+0ZjYcdPr3bqHbQTRMVe099I3dHxlhbA/n1WZU + pKXtzLUzxqZyDgcTPdwn3K1GD1lj27U8uqxEeez9uDWlcL68BGrmxmF63Ug9k5Qr6hk9lY64j/+/ + qnLGQsevRMo6z3/jjhv41oQ7JBohP3/drb2r++zbHdbGQKQqeKKOGWhrN+hOW2O+3UYUUd2k49N0 + eZuCjjVXZubrNXT12yqvYiIz7l5fFs2U3UEiLuQbwvpiCdZkKTISSPQBWRNOYW7slb4hNEBk6X20 + mOZGSxCYsDLYF+GyijZ336KHyfguXqzwwTwmrIQYRhWLdP4qRFbuHMQskDkaIOfQNzjM63QrLDYq + dUT7bHR5epkLthboagLUDbRowSvyUXVboXZIm/2Itcat7WGKaklKf+oWpSdgiC7sTIdXb3gMfBVO + iYYfL+0gMDcw0etm7i2iXHVviafEwd68eleHRws9p+rdmjLLZ7BLJvCTh0z6t4B5P/vtqKTdoQca + r6t5rCrNQD8mgnmIiYIZxCOUyUX7jm+koBap74hxvZnfNdt/8M7XkwjbXVdw0pgVhlUzS2MPm20s + QeDpqdhvzyZa7alyC7mxAubkHWqRFBJeS+/2dYOKBp/SSE91uNnQ4XAW1DrZRHQ0/FrR7T0o0RcC + /ceH+xUFb/G79w8h4K8TXCZhp0yWW/wkhTZhoiNx7G7W0b2wtgjoTX3DgyAoQM1Kue14iWDLdPrh + uIq5oxfHVxwPDZ0MGCP8UtSSDMWpV7UkgZ2L1ENcVSnMVNb+d5NwwEOBryUdsRdIf9G3TAe9dkF0 + KDn/R0a6imz1oXChXYcsTPvpBsg8ymvRwm9+DNH2VR5WqgfFinkd1Mp40XgET99NP75DoIntCoXT + ebpM19kEjxHKfEI1wEiz2SxekXmxz2kILLnzUolQsCdwM6doGOzUfnpKXiqN+W+9Y+b1CzdVHxkD + KKtGdABl+ZRu/YdMFUE4vXiTmwTJkoRWRD/g/GikpwchQ8YEZSyVoIL2FXY9bhQ5yYqYsqr/BU2N + sD2BuMxdaXcS8L8KrKpCtTy7DcblnclLTd88OjbWI+QD7Wchcfz67PRcu5081nFZydF/QCD/gND7 + jkv6AtLS8osGyAL4mxYq446yd/uhc2wFvazd9ImprVs2oFm66VlHDPy71yef0NkVR5vCmaUCxIrY + MeFpK7fCXTvwHWs06gEEYLoXHJvbWu5GT4eKmnqRgvDXh0vL7hHZSK8bqX6SckX1o6cyzfvibV31 + szGRu6z6ec9/8wIPWp/ApmNMYsxcqJjx1lS0EordRK/iLqo7YA1SGPP2Xjrbag7RT9HK4SuVe0uB + B6C2IyeTLjqYKMKEbGgyzwNf3f5CkQRl5D9hNeInbcneru5CL7RSH5gMd92KEpnPuVIxqoMPddCc + kk++mWBDRh8ogZWcPh3XTMcNbejy6MnvqhGemVwXtJkorYxzh6e/NscdatfPchWLy9uni1KuVtPm + +9/qN2XjIfkw76PlbbSMgdDeIxvs3qYUpFeXzOlhN6TXjS4PSblyedBTCVD29lUNoMyyXR2gzPae + T33X9rxw4uPesDRP9iJZpQ8y+zbbzmbJkir+aLiGApV5+iXepLcLODPrutar7t8KrqGCO7ud1+HO + dHBC0KRxJvS7QK84/+Hkqsb7dSLkSwQCmm3Oc1pLPbCQe5bnP1ZkPZ+m30tT1sL2PWa1gmgw33Xs + anQXzJRwun9/yD3khDelUUV7YzfV0avOPTDRN4FAadam23hb5OAdwhqE6GQCS5pMWl/xIzWePOan + iTYWnpXdm56mJ8qE+On0hMb/Qstnj+cjPB/qouCYminnhQyCLZPYj02akDPAAmGWMCm1bBjtDnt8 + S+ahyF1mn+7whblVGgWTwOs5XU53T0RoU/XMCg7q951szGScgrHUqec8yIiGy11ZF7B/n9pjxRgh + 0WksfgG39DKeorN6vo3zg3RAHneu8w/eXFtqwyCpeYFDRKLZEKMfIiFeCTlMlhXBGVRMZD/RxFcm + BeelfWz5vUwK9ImpSUE2oJkU6BmJGbM0WcTzKf4YaXU56rV1yvQwPA6uKDJThqxANkzLGQWav76d + Hfws02FLORID/Lof6q5RmybILeSeHR5brKeFXH5kbCFXjegWcvmUNs/bD1fs6vOlU61oj89/b/qD + RhjxGGBktIc8wri6iTZwLOXJOjgMMvAoywUO7CAEWSgLF5W6WdQvQqtbhtBm4tCUXtnbjIZqlWgP + hCZgMmmfcRgF+e2pTf/8mBpzXJa/SRrYICmnKHKFVPq5toMP8wEoHkXJYB/es7AHKDi9bmawJcpV + g614Sjr3P96d2ZrO7XDf4TbaXHSL7ZT7IIfzCffhr353KvpyAQ3M6jZSmWZaPGvUQwNbR7NUeugT + TRVndtjHJzC0iqHuO1vV1QKxqxfAvGOI8Sop1wHmHYXxev7HHw0A88yvA8wHPkzbhAehwGrErXQu + EglRVT4/uVCgTjLYUwaUotx48ccpm4xfnv7BCFbz6v0nfjy+uku/ZeNSUSWMEljOo+XsQWZC/fEH + k5vz/MuXuvFGz4LWLe+ct8VWWbYHsmkNU740gCo4lZZt51tt9vbADtD0tds83m0c9/rRb0Ku03Ls + WCvwuyI4OocdDIreVIxYXOz6TJRDgyu4baeyA6UoXwKYkcDtGQXKEkMXmaPbFcKBU0vC7vkwfjlD + MHjNbpKN53CggQ3H0b2EjZ+MrxYb3AXFlgGpS22ajdwzX4DUCPd0AQrvsUNhDofDEGw299N1pe/n + ndrE3xaSr5u8T4pYDgXwsE6zHwSU90tB29msjLnB9sDcYP0wN1gT5gazpBolAiZuYFpLDrVn+miQ + ZcTfN0cjYW45E9iwIqmgOLPr20TsoQ9T6NHdQ3mWLu839mi1xv8KyA2Z1zZQRCULQwpQoap/D4tp + 3hfRk4XUjtCFmD3ci/kCCWWKZQvxz0XX+9iJMEyKwJ1pKuJyBSpTixUScTUiPXG02thTLxXoh2Jx + HaLDYOCUpU1XrzY597hfahPeye4xTaTYzSogzqQ3tuXSEPJAptxN298mO4zpktE9SvvajE81TfM+ + dLoNIQOFZnHt/ppWec5h5uMBTbWObXGubVQjQDX19UAeaJura8bnbj8zr/rE9JKRDWh3DD0jTWYV + f5dBSat4nX5P6LQVNYekgAZTQUHEGiz2Hl98d8VNwxiX5j2una6CDFwKOf1D7DyHwkf5Ckap6Ex3 + 8pppzw4GaPoJeI3F9xS007VCLRhvO7/b1XCgEUDn4o+z1Q2QQn2g1U8oMdwLKrNYOn6qAwNAV++V + wqF4nJ2jQXjcApm2HxgEfWOMBSGb0KEg6CHxudm3G+4pz5aEjC2XfVSOCCkgwB+p6vl85uYH9FTQ + kHH+LAgcN7SORoKyCJoNbSahFHUgNxFNniEsjaj19jWJ6F9xXVQaOvg+v+ftQOy2ck/6sJmf4YSj + klttM9XRrMGHhwrew3vxbBFN/tfJJVwM5iHN9LqRVVNSrlg16SmdkZNXr+v5+DbXDeS2/fw35oW2 + zyfMtzgmZItc1mke4eNOhZkI2Mk8+ne6iKcOQY18h8fzWEhewvDy7Ork7PTk8mgsnVb1qNT/greW + 6df0v8YrrGMYN0JxgFr3Ai1a41VyK3yxeQhrTOV6SaikvMl5DDODRx8jleYxKZfCWnoyj3+FWGdp + dUPpFfRnbZ5pAdLyXIsZarfLAm9pa993vdCvhS3TKuB+ao+Jc5yK6bScUAs8MgysapJu9+pW6Ner + YI1+3c03wjOXYy+AsDmSYxT3e3u7nR7eJq54KM3uWLoDibciojLy0RZLAdvpoEnYn16rocgJhW11 + HYPsvsxEsON8vW24XX9m1Ppgab3IM8RSH8qIjEb6eK09tmFb1jHdifHWnZE+aGFuO6/bwpxT55j1 + LNyiPjKOE1KN6HFC8qmKZVemYXIt0b+qBbvM3gLqF//H9ywVQsSZJUu6uFbhxEoxvrGvHdtzAs1K + 0SWGm4XX/C/WeSnolWwClaXdlz/JuFzyoBGMvQjxOZRwwCkQbQhCXrWHhxIdrKKf7f1PlrvA7LAn + k8i/MXaBySZ0Fxg9JJ0kvmHRVHILYSCT7uYiuk6lXz8TmQdjplwFR1JTD60wDFBR7/789Zspo+SF + 8WtsM6p8Lma6H4nrw0nMqoOIqW9IKaY28l9nhE1pE8QK/h5iRIr43WFh4MjKhUwckHI/ekp7DiGb + lCjA4S+NZX+LU3/SA5ssfo7vjJIdStao7k3C2t1YPxbB0fYJbLG7uwMgCBzaUPcoQpL23tYL9vST + GV1JZU+DKVXref0eOmQe1kavGxmAJOWKAYieSkDGv079WlqiH1YMQP7zKTyzvYkfitxdAYTygPF8 + a7S1zcZJliLEzphPxvH3FWJ2w/i3y3m8HiNQwXcY/SyFGcLBg/qsJgWUEyoF2pizJuTZXLzIVhGi + NmLQlHIKZjkhCY9F6MZLAXVb7l4FXQekltqf8fkcldnbPJRTKHiJwqWi4msPM39HdmRTryupkkGL + CSaAKbb8Wk222mw1mnZCq7X+uscdx/W8igkmJ1t4oXSzC2vrp6I3+s/aAyM8LLnlxvcoR5GRd1nv + dn1uJ3nHFrW2DS0ZvCFBrqkhjTa0lX5/wCx7s1YO851yHlri+4bNBbwt6QmE9nPTGukC0udbbYcU + +GyfARVU3aBOtWmXGw50b3Id4S+DgBIgP9J2Qo17GY1wDzKdG9SSIGd3cVckyI8AJbADqpZzaXk9 + EiTodbNqOUS5Wi1HPJXun8sLu1YrR0g1lVo5ruv73J64bmj50v0jgOmm61ikbwvAPOVWWa/s2h0J + D/nvdg0DSMcmDVqT/2HRfMeqJf+LPjTWk4H321Lq24iVxFH0F2+SzVam0wvZ/gus5aYSNe7Cmhi1 + kl+61OMbEHaF70CLK9FrvrDWOjKK8ug1XLFUT7aW/S/nu5LUn2CZlbtKGVXZJ3Jdi47MYmQgum9E + XM2gOSzwyImqKypWXfg2BIlVtJndxdkLLRIeTTFiArFxUXNA8qXbdfptc6eg1khVwQ2ZF1wJuMAK + Re2lzsyT5V0Mnwgo799NEjVxRoXRqWMFaue3xQVgW4EtXQDl4icV0gggdw+d3AdA23Zs0ov1hSzw + r2uLtrPvw4CLul6u7aoT0ZcEWVZbOELnpTCwKku4iDoT6asCGoaKPjp+j5kHo7m+zL6uD3WRharo + rOP0KjoLr5sWnUXK9aKz8FRCs73+b4G0pmOziZjgStFZ7vjMCSbcCXgoQbkdZ/zlVVQBJCls3I2B + Z2qpJGpa/J25tTuv8UNdFfTbVKzQsVzbq6VfDZUc2BbaiMy4FDuv30g2a7mRtM5WU7qmjTFrmqbp + 8ba7TlEeXeiLs4mSxRR4/x1qdAT9dnZmuGTatVbqXDHuifTeLyKqy0DLCxdQpoqJ6y0Q1EleikGq + d1m6mIg6FFIbxvmFn9vFRsQJJPdYkwzjCIouqIyDkdjPRcFeyxlZe8SldvsPXE9LZ4L+oJYGc6iF + 4dLgJkVwL/zyMFs0MomWtAhK+0oXW7yebwq29atFj8r7ouz8MiP7VDPnfwFX4RBXo2M7oUaEGEed + RjvqtzGJDme8UyqWZrvHltO3WBp9ZF4sTTZSKZZGT+nme3P+YUwQxy35GmVv+5uTV6XQKb0NdD1x + 3yJ3k0+Iym8E/veg9bmGwv33HEeIPDj+ISqUPab3yTx2uzfwv8zV27kL9u/T/k38ICAnIEVcPVcn + DuqgOuoyqfT0gr1mrGckvPrG8KDnTZTPuXooTTXLLw9rIfmUkaFHzY87AaPzxgRidMglYvSjxIqb + b/zDos6HPII/wZnsDIOv7XAJkWpbPXyR9LohRKqgXINIxaekxL09O61DpIr7vwKRyiw/tBxrwqzA + YqEszPB2s4J2pvm9i06c3CrGpaL2NpnVATLIADCLVuNnWbzMtuM32+VtclTWUWzLaVXVmOW5nKsa + zCW611tQTZJVBTe6NQA8tD0/DKwamWQ5S1YJjgIJZslGVyItVtHLdlPM7u7TtKlrbTHuGqGSxVRk + 7Eon+lqVKn/4vbwGucDU5LN0raANTlWf1VypvLxLC8iEXZge3PPaaoo3U4++ozEVprlmT/YZt1rt + sY204gx2/iKBuVZWZET4UJZOtdW0c3akLyzfPTmjyxzXY32XUhVruR6n85nDV+P45ibGUIkX47v0 + Hvk5dgWOAWY+lM20yTLZJLklU00B2gNyVyj1nZTNGlC4bA4znUShGvzn75fRrDiQXwtD3bPTy7OX + R+M56E0JGR0EjYuzZ87EPbrggkwkDKjAPIQ2c4u8CjlEDhLrM5+04tCrm2Lj78lGKqU9K1yLpRZ2 + QbEZ8tHnhy8TfFSqsAZ2Z072yl0714hYYFPBXX2wYmdld9Gqd50/i7y9O/aqiaI0kqyIXlYcqz57 + Q4nFP8BMLUhUC272UBoFsxfdKM8Csl2zSTD+unsgIZVa08gs49mXvnvFIUtKcVua7FjHtm1S2SJ1 + HfxLnp6dEyFES0bxBHh6ytFaUXf0V7Odmxz6CrcfRf1kifVa08UU+M70OsnU3/qBBDDfImzGUi/3 + Cdd3bBWIy8MT+5j1gvUsPjINxc0b0WJx1VOSqvTAAuV7JyjPUe2PGqZ2HvkRr/XmuOuAYijBPg/M + 1feCWqSHYqzN1IzL1nihIzZu67D2p+2C3OPmo85Zy55oAD85SKYhKClZLuOuFIUe+tQ+5H8Fs+Yh + pRJxa9qtW7O+nTqDZUzhPB1H8SbmvXWPWdiLNclvTDmTakJjTPKhTCPaXifpNhuVug98e6l9jXzG + 8h7VRvH0ksodV+nxrAdUJr1uqsezOlQmPSU9/urzea1OFlzkXoMeHzAQtlGPd2xV2Oxqu0J3WSoC + Qu+jNZsyUJaSNT8SEnspGPdqe1/P375LMhD2EJgfJJNNUSClGm1k1cNbJ2UFkfkM7mPn0KzuwHfR + 01zVnMXZnK2Tlcx3WMfCRZg2x/air66WAq06ylnILaeqfYr4TxS54CQv4BuhzG3oHxspjFEi0gyd + jhuQeLqMHxVFugSOWR7frtY38SK9h02je39tJ+hFXNd9lHqnu6qDKkltbYVT0vX+OfrUugyakxjb + 2AgtNHfkipbn8wWGV6Zr2Z+pKhEplILsxThaZIidCTpylI2pyLFoBDg2DaCkdVNGg66U5xOGevIm + XmK006Rpdl/k1bgEoMgqmt09bDAkb3YHkv4qha9HeCxLynMgxC8JBvbqw0lbv/ooPLiWgmPtWH9j + Xdyz3UI8VAvVV0S0Ja6ftm80ihOcgFJR7n4N4HarN9DX7oApp0K0WMaY4/I17uqw0fUF55ZUv9IW + lREIuCAYqibKIqvotUJFzFT9g176Idk59uA8PbbYoM0Ml56/l5wgfHAeBTjgAdwzjM2j3Vc9wuk6 + ue1ymDeryEMUknO9IqMv37ANN1xnl5Q44ykUedvrUfZTvG6KIo+U6yjy8JTEmQ8n52EttIwhBESl + 7Kft42JMbJ+JakMkzBCGpYzK/bA9cXIJheSTsrMx99zkSPO292012ouICvmVUtBGFvL6MMXUgERY + H6NkkSFRSSsbv3OELfYdPxm9PnmTp7qAtkogJZwYlNxpUdIQ/9CYU2LwXTcHNyDQFRr5S9wi0IC/ + owGioiqA39N6n53hcb1PUc0zv1dDwhMoQ5jg7M6jeyx/nW2S++2ir8KDJ79y/d+nc5SH9otPI8AE + fae3UOqK/nEdqnnV6zptR+KTaVgGp3iQm2NwtdR2uSc2mikz6hVpJeF23jm/AxfZh3q3k9qXdSCs + Pk5qet2wDoTV4KSmp3QbXL7+VEuZcTmKvZU6EK7tBsydEEhgd0mR1QLoN5QUOQyK7ImWFAlta2SY + ivA4rqFdsNU1F8QhQpHauJTrdX5p+Y75xqXXjTaupFzZuPRU5nq9fFOLrgBRpRIh7z6fYrkV250g + PqHK9WrbuPdroD/4xh0eQ+8pHQDH84MDLJJ7AIHtrWKozRvmXNc2l8HpdWOua9dkcHpKm/fz+5Oa + SdEVoP861/3NdbmFXNe1HUtW37lQYMuYNi6MMVjGRZQsF1EHn68jeyUqEsi6LuPL7TVbja/jG9SC + E/hgli7/tZXIE5u0iPR/tozn88WD+MORkrjvYbVgaR5AocawuXGpGswcfQbzsg3z8yJqwKAcqpbU + h9evXgV5FRlY93j574f7ZmxIFvpBayCR67hcGUNrNXtwEhqK9DguY94OgqPHXhzZr56LM8L9VtxY + 3CFQMSa0EMrjx+TXQtTPY++igwKTBwtwxqkv31nlJepmGMOm2A2FQXiQv+wH5td110bxSY3deSpN + boIDqFWVQsnmXSqy9v7SDnqYWuh1IzYvKVfYPD0lNv8nogXWhBSHVaRr5/lvIFR7PJgEIVmwkc/D + xwJZ7x5dgXhPqzzlIlGYRn48/jOaQTtJNo7zDGqV41zY0Qs0WlAXLzbzs2X2zMbwtGcc2Am+L4t3 + SXXyBhRdkS4G/xSSZTkhDEkr6L/F9j5e5pFy53++pHJvwtNQ2PmRjPoiw5QzfAfdvLCmx/L2EOOo + XR/qq0qqod0mNLEgCJlTyzUs7yM93Ea7hCzHb3Hf6ISLa4NS+aiAaRumsFfBFH57NimnBcLNF7Iq + oI0ad3nFdbGMtWYwSoL5fVT2wphuCRF7PeSOQAOK2YaohWO+SW5xYxSLBx+/ieDmHIkzlgujth+M + 5NQgo2iaQnOjkkdZNY0L3HGTdTmUDgsPGqTghmUTHkr8HXjbEqNRYfUMgDibxHfLJpc+nLLbaEH+ + CTXnffMHf2E80YNDYAaq0WRRplo7pzO+O5l0U3DWwzBFrxu6KQTlmpsCn0r9/v3bBjcFHp9qrVvb + DUN3Asq/50n9nuSzf0sfgbLTUQAGTH0W0+BfpYvpxfQ8EnK2ON7TRbL8AnMDB/xWRQIBd80UFMzi + NqxdT81ZqvplpUe+C/99qcKnF/KwITdedLUlfUu/B+xqLH8r+fxymSMPA6bWMuIO+HpHD0bQMWJs + LwxrmPv10pu3i4eZwMGuJTkA+dbYDDkQ2HW1mZloN9wHNSqtnRfjwffFiyKGR3qz7rZAagwcWYhs + 0OI2w+aQMSLo5RIuhwRhluZJlq7niPcGH2rdHOHOLyoWe/ZITkuZP7TOpfntJvmV8UaopLzuDu73 + JPDW24szlV98AFL/yBo8ybwPrbZp/JvmqivnCuNU1hCrQObCwiBjHUnOJcbZxepMl2LYLFpyXjaR + muRPBbKiOn6I/7Rdme5mdc9yZYoMWS9TJLxuaopEynVTJDyVWYrvL+umSGEwqZgibd91Qn8C12zo + BHkdqq/xGmR0RJsEER6ZEfLDO6yhgeL8h5NXF+/GAoNj8y3N/yq88+rvv6lcxsX6McvX6GHhFWqt + RWQe2ZBfmpAp3AjbxY0o8ZKjejYXvUEEmeZ2QIj2Xat6AZe94gIXVIRjZRsMYNEv31BHmStfvqHL + AqwafpoXOBXoZ1oke2k4FXzSybh9r+Db0DPxrv54hJuzqOjNuMRjEBy3/PmB9kUxcOFF65opU0bk + uI6bZzrhsNLvmKwYp3BD9q7cAIoBAafJ7ojQo9Y64z8cS/xxSjP2zgEZyWNR2RfdZ8poMIdTfXS9 + j3lOyNQWSQ/tEghtlJNJeCd7KLNIgUy5wN33c9G5dl7oJbCdYyy12qfOC31jXOZFNqFXeaGHeYlZ + v0eJWVlWdjn1sVysP3IDCxWXX6Nc7DBFXX9K6YLDwbUCrhEowND2X46fW6T1UDQNvHgfuVarOvKO + NDnZVg/URXrd0OQkKNdMTviUjvlfF59YTRZ2rCp+sPf8N89yAj7xoNNhjh6M7ChLUGBYPIxhU+mi + EdwZ0LfrrXTrfovWc2EvuN7Oj/O4qQ2rS8B5enMF26IVW5jbIfqUDoXvaKWzP36HTrKQgqtlKzTg + 45DrPSzlvWjkcmm3HVe3EtPCKh6ZGt3RZXRNNm0NGUT49iv+CYERocciKziI9GZ8/pDyFWnhAu5W + 3w0yuULtFVF+L9re3mEErABuHImNmZuEuBMY4wj/Mp4Jxa8CmwmzzNt0cZvsOxqXItYVFYlyaZ7/ + Myz4gynywi7Yg8OwF0xBE5p884dU+h4s9sK0xk130MMwkROH1clx8zKG3H0ZHAv3pbl0K78xlW5V + E5p0Kx/StQe8TfpNyjZ0OBZ41SOSCoGkP1M5hEejLwkcmVSg1eZTeY5UZGVxzh3OQ+dohKRFJUMQ + 7SgUxyrKi+Chy1YwgYu4s0BWm+nVCgiMD3RqwSpllD6czfh2HbdR6+CB+xFsxd2xyE4hrACIMdv3 + yPsWBba3Zt7tCL2yNMGvNxOUhGzoBwFHNGeoIbj+ul8apMtsurrE1MwTlMX6JS34vpt3SYQ9T4p+ + 5PBKPSfMkuoDFvWJl1jspyA/Lu/43mTDNrJmvW50vIe2BO9F7Ihy7xDtqGkEv5u4bLr0tuuH8Wwr + SsWYvP1YGAR7aFM2k5GO50nmTa+Se8ccnd/4wmg4QIrbeypWnvfwpdPrprHyvO5Lp6fE4d+cXAa1 + MDTPZ7VYeZsHnhtObNvitqWHG5fvhreszNUimIVsQ5FFhfkUDj3uvaVwzSL4WbS5+wZrMk9uYN5w + z4l5Q8H5TbRmq3L0Kb1aDwKK1vZqgj98+hHSD2atKMAIf2crqU7BP4LHC0UeKgTffB519cV3q7Ff + GiQAB6kzDO3mALCnvXwj3K1FdoHNRnK8lct013Q9/kU9SAWSAVzaQ2X1uL7kVNxnfTgVvm7IqQTl + GqfCpzIx4vJEoPzqrCpEJ3SFVQWgsnrOJICd4Ujj7JvkBrYZyG4r3BWrhzVWWEdX5HWSuipBYR3B + fnu01LR0jWsSV8q97wzhcdzWoBouoEpruQqlwRE8W3O4DgsD19tBeXSeLDGicmfXn328uPwEvxxh + bUQRYiZMIXpUzY1YBBGCFgkJXy4H/g2Uv2X6NdV7CwJLMZosdxSKOFPZJeFAxn+Id6buf01zYLsX + 4/voX9B72TVoeJbOSVqBveSOxIbKuUkQUOoDt8Sh/S/Zof9qn8/OQJUuewqnGIwSYU0F3jsORjUQ + ypQIopoh1YNh5BlhG5b6jLug1MLe07JHhuRIngt8q8ex6jeLQzTQvgt+yZCUQNrhe6V20uuGdvim + 1E56SpfA+fs3tZxkh7s1M/zUCTzfcydwrEUWe1lcBa6i5LFcQKMb4HxxU6/n9+Ryk8syzXy91dCb + He6E1YDSPPI/sFxQef45ugKdEnjlGrPEVu2TMhnnJTGwqWs4AtECLQ5UmeiFqPgD36uQg4zgzDLJ + 7WXRu2R5l1yLSrgU8Sj4b/x9lWbbdayyA5L7++0yVQRQFFvENwt4BP2G/QSLXiB0CDgnMU7cvbXJ + 2Cnb/YSMbJXU74aqLkroW8eW26sqCn1iWhNFNqBVRKFndJDWq4XtWTJb37OuVJY4lpSSW+K97Y3a + /yIITJkojxAENnmwHcZzRtQWdWrurTah1uFnJnMihidGuXH78U0KBmn33WWFZRTALA+mWqBLtbQK + mQTJ2XtmbculcRVX+P4+YNuXyFutNUXbJ8K8uMoBjXTdaB4lAr6+tLjfoyy9eN2sLD1RrpalF09l + kOXJ+6B2pVmB59bq0sPT0A8mnFlcwWx8XMYUXb6OY/QxZwma8K6hF1O5SzIVfX61vGFoDdSAk6LF + Iv2Wydqaa90Q3P6dktmRWccyXSsCaRmnHU2Gwo4oEFvhUki36xmI4pguFmE+mJBAQC6aKjVU+kJl + pGe0COpXcN+QSmbbsLRe9QK++vCGnfx+cn4xVSnW85ylyRE2q2Bea+wjs8IQJMVq7VthL4jmqMVU + Ikp95rZWu0WkRry+dVqqyGoKEyDvVB2xsj0rsZlgQ6JAuSBkPe3Ca0OtbBn9zmoVzGuv+Cspjv4+ + W3skjrgSYCy4U5BvMoHagMzqa5RhKGkuL2kyze1iO8PskwXwxE1PNxOuXNnw07HgffRX3MK5USzf + 5OY2NeYRL2+uDGHaDcfmrgT2KoNdVS8yVWfSXBXdz3PhsPwj2G3x8mu8SFcq3XUo4bLZg0Fqaidb + 6wPUdSDFJiPiSDLRnVT30aQPpdyavjOA2dSjZMmPl4xzc/mCXjerF0yUq/WCxVNZL/jNX/XANS/0 + quWCp67LeRhM4EcQqJDWdQq3D4z9mSiFkfM1OSVHqibwzUM9OG2vUlNtZYvK6ngqBPpNskCZGCvs + 7C4vhJn5JhWtClGBen+fYqDDOl96LfrMD9wW62nIXNt3q2mVsnC8Xik9Ws5/B+F3Hleeax4n5rZC + Yj9+cSdRGqeNVhvIQAstLYciu6cwj8Zck52dRO+V2JsTmtipcBM1FTwZVwueVLexniCqFdIpFx2e + 6EjZSwQUhusL7mWCPWhc38ptjmg/QoUTg36hpJJYwCRUo8BERSrSAkd4inMTiEdRfjhNVRNIZVaN + PPu+LI3UOvKeWnOvqlKmMgOZzK8T2o4Hl6rCMyX62LRoTQfShKqNCGQF1YHm03Hl+hBVEjGM+wSs + 3srTNAs7SEcMZmvQoywSU4sTrHFkoxX4+YWvmOuRGaRhuXoR6lswiswmfqntPeMefaqt03xZdXZB + ySeUZPr2krEeSab0upF8IilX5BN6SvLJ6fuXXlU+oeD5svkjfP4bqB2BbU185lv2DrDG2zXQ//a/ + YI19wBpt2xFwAoFNGVpNdfcQisfMvv6DAB8HkdFFQtlff7y3Qu90+tL4FKgPjM5BTr1yEtRzGeLw + 6aKSZWLbrk/YLWVp3X4+5W7gs2CCwTyelNbPMMQmuUnIxYJsfAoMYLWCCZmM75PZOo3W6+hhij2a + owtGVfiIQA+H6cko1Iaie6ff0KkrC2k+wPUarWd3YmrpiH1ZQMdn0+unH0Y1wOHggeeJIOUnAL+g + fEmeoyLFnTfMOmZunwp6xUemseJ5I1qwuHpK2/dbtpJ26X8k2Zd0s5meLObCyyj30egfJ1er/B/4 + OkaA224QSjBGAimS1yhIJ+LIrqINovv3MeQolmKFLHemYCSs2OQ1eaWoDWIskAJhkj6qtPIH6bKm + Vsge9DKVUQSYXrS0Bp7Xv4apaiHkvpDqyihdgto3zGqCoyPK+/ToM8jAZAqjRVTG66qIbUquU/jd + eaX0+Hr/wJRdHsTmfWImIx8s46JoGraeqRop47KOjFPmktgrMtfo8QXeQa77PMPGfuceW34vrkmf + mPJM2YDGMelZ7oP3d7jg/TYPvI8OeF+wT8cJ/p7ed58ggMhD3VijY0hoioPc9kwl4Rk76/83COCn + BwGUZiLIt3qpjJNQgDoxEjtjCzwF4MT7AThxcwAn3gjgxJVu/fr0nDeU8LDrCE4uY1boTxBM25PZ + HR/S5bQADdbixGDab5L1Pc6CFM1fjKObm1hkuq/j6VoU7iFhm7QPhCEXJw69qZWqbwTZmsPu5QuA + 6HcofWhy1CqLt/P07mF1Fy2ky/SFkijRQw4C9dV6nmd6vJ7d84aQvqemozSMqmpqd9os4gg97ITW + P0e/9oKNxGYtkOgdQnR6/IqGpHMUQu9hlm9KrGxYzmHsJh0c2Goo/EWVNveNgA5kycx/J0sQjNM9 + pTbQ76TDXzL6onbo3qUAHS/w8+oBiz36png0pbWcXFp2j3of9LoRj5aUKzyansqI5qtPvJqBx0K7 + wqNt+/lvcNCZZU/gR2BJk8+FgBj9GhcGhdya0Ojc+gq6HCYx5RrvC/Frll/5IhvrPNtwH5gm0iIM + 1FefLziIR3i6YU/BxfzwQkx4Nj79KCA85+KXM9WAQsVFSvVMO4JeiFaraB1tqlZUP2wH9Qi56zth + zRq7B8yuAdVGG41Wqtji7XAmZaLFfVFVXPRLgrUDt5TJFSjwcjU1joVrUdLb9Q67ul8VoeYbZmL0 + ZLfVSJyWPJTK8kUo1RMBKBHzi580rksPqwzzWMhLhKYSG2a+H+DWk0TG7UOmE3ED+AV+UeUpfcdl + SKWzK6ZoLq0otT/SuNwC5jIYOrBTBBWoJVbnosfeNTX4NBn/eEDoFInwi8xKMvFedqNQZsDalm8u + KtDrhhmwgnItAxafqlDxq1oolx16tQTY34IApEE+AUHBC6R96SUGzrJje4oBpVEdI12LbSmEYWV1 + r4SqoOxPLsHtGmTMWBT0iPLsssYwnGdvL86OFNq3ivbO6oFj1eOj3ZFB0FZniwXc8VkNQIxN7KkI + Gm4cd2O8t8Or2lY5XiwAPdmuxna1aA/td7HQO9rytGDTh1bwzxGt2eSJrNkIt1+eLisrhfVVn1q9 + Bg7RaQh2N1ScSPPKd81NwZzNbIZ9cWV7c/3HAwALOcHTNDtxTDn/AVePbTHSW19f4k6jW7SQVVr5 + fmP0MSfTJ206Sj3sDy4mzjC+bnr+O/smrwBflQ3jvAcIAr1uWDZMUK6VDcOnsibv1UnNoGdz16pW + DZuiiOU5ExBsLPRAlfNfhTAejRfJF4SjVLUBC9MyiPAI5lMPeYTxbu9LZphvyWJOu20Rf42pwjrZ + qZ951tVR3VqdKfFesqO7eAG3LSzDq+uVR8gM63ha8XhE6LJaCKuS+KjkDhCXyGUWtWQMiVBBoKjM + whPZO2U7hz/NtusMRqYFJXtBazyQy7hnh1ZzPJDoUyWyyPpJEUHF/OlDzr3oAqG95EXWQyG4X9MT + KygyaiZGf7ddNcIjll9znDGJTeeXnEPm09pD63O4SmhRXowu9/v++MqP4HMbzJeU0/MCwms2Obyd + PVThMj6TvNtxwz4lH/F1Q94tKNd4Nz6VkY6vTsO6/O6gql8p+chwHWw2YRgBgBoQsm+slSOurggO + IG5vORO6KSbabKKZjBO5MRfusnI92RfC/H8XfY1LtWNhStPbZVLOnys3JrO5CtcA1cTD+19+gf0n + jn06n4WPWAoYGppKNUObrzYQYd0yWFTHYqhAWm4VX0ef4VIFo2IGdasbr2R8NrQwenqL23dtQT14 + WagHjsuokPCQdZ5KPpuD4DMPBpkc2KT2N64S5XCfnD9th7L1fqhpeYqRcwVCY/Wo3Uuvm4LQWPXa + vfSUGPn7q081zETH5ryOBc+xqsMEJT1femwuNdGnlJCL+cUCQjxXm3IUPalPNajwxE/fZ5s2J0uj + FQW0tdaqRtxnoePbjT4WIZQ0ukKQL/elCCNOEJKvsr0Q8rymxGu9t61WqVpra0+3S9kh4tnMt6s1 + kw5Jb9c6mFMs1lxLgwtYWxpc6FhhwHkhfWsSde6ZFyQxNa1hn72NVmxlsMdejIv7WLL/Tx8v5SSI + LDqF6QjyVjpDP4UEdbxO4T+f0jU0g2Ix/MZXpWz5aPyPV9N1vIrhOOOJKkxLdHcw1xVROQ2JCG2W + oS7rvIGTaJCM9VYLV0jOoV2xvA3JSO2RvW2NMddy2y1C+5noWEgyfuPqa2RqcMA9vt3RBVkUUKuf + sQdBieIfFj6fvsWNKdqiDw8zNEQ+gVrHw5glxaWgJBv96vgRJkkmq9totawFX1iKPTMXy7SP1Ra3 + IZO7+ZT1Q0IokeCKBO8PpjBEsQLb4qFGpIyUsF9taN9WhXpsqw9AIL5uWqgHKdcL9cBTaSC9eFU3 + kIZhWAMIZAH8NkGOopIJk2yD4MDzGG69zQNsDLj75OWDHhQtsAovtALrXhoiV/O6IfKuTjVfbl0m + Y20SVBCCABnUIAqaKDfDFzlW1aA50VLq7cCxrZrnbG/6ZXwCBtee71TlnaZ6AZrkY3cANiDcHKs5 + 4JorEBT2Ogw10+e7Vnh7vybEPzZj8ZdbedOiOXCziTuRL7y2Wtb9mt/EC6qwUJm/dsimRuq6VCJR + KapZRnkPRC7gJsYg7GrDvA0Ug7YZq0JCLNIs04kXw5tvRaoMyIho0BUBSYQ5dFvdMKDQtw8Yk1Xc + qhCvqoyg5eMe2GcD7hVcIa00LR8YeA15uY6zlB+eOnnHb3VlayeyhJ5hHAOrj8PduSaj/ZnfC7xD + HzLNmET9hDX69MCUwJ0J69II+XNRrsp3SBKjZJFqnHHTSOn+EeHKlFGGbOnsDOf+PsXSLMZSPXIA + YQRqYR3IMYyJ4QbEt/ffzsZNeTYBh83T7fUinmY4PSBzr+PoC9KOkrXw7C/TZSnKGvbF+F9psuzZ + EtMq8uhnpQcZ8ujuzGJs5i+/GxWUt53WSjRGgjeyzI7dkLPZHqN2GwKy+8nhjx79jkyoLAK2ci4j + iR0OtLfrHCtGMMEzXAQ2mk4raOJeZZ3u0zkGk+8Rrw/EqFhQTdR5fFrtgTBUFG0PacO0DccNHUpT + kEUpH5ffjqR02zg5PbHpDvdu7offjBq/T9UH9dmZpfuoS6o/QNNpoglsHLEZ9qKJ0njbVPesb70X + pW5M/b1IHjpUg0TrQWpt++S0vnuYgyi0xywpLdpRrmon6OWqhtdNXdVIue6qhqdKi37vvay7qgPW + 4KrmQeCEE/gZ+l4Fab9mOe6M45iM76KsnPe5SceXq4X3kuzH8K81cMD3Xj0duhQA4h4HV2ORzqaU + 8oXXAFKyM69Wqm6vt19g7qKjShSqrp6Wof9cN3Tdmi59WUp00kEEK97nQgnwbOQ4fpWSQfKr3oDd + ilJY7mpNh2mrGiPywqsUHzP2qNC6bB7wMCw5PYbZXid7ba+ROCKFv9uxho0Tasf0NUjLbxRwn0I+ + /4FYGj8LWP8xQ55Gkg3g65dd+ZBNi3pISvzQ9DqvNJcMw5eW26dyjHjdzDBMlKuGYfGUrrQPH9/y + utM+qDntp7AWtutMfI4mGP0+qwfcg6Yta+BKXKzlGpqcPTb03BChpjvRDjR7pct1A9tVGYPWCeBs + DQe79TpPYi+H8daLFWJYJ1PXfZG9XmLX+Adhrdok99KUdVIpEo1piNer4IUeaKX4tLxYqMh7Lhtc + XX0+Ug3CWRi9vnrDc6MW3NsjuhMEt0PvlxzGAxpREILoa3QrLGVnn64YdjOLRcJZPAbClIsvTlQh + y+AY3mt/g7Mww0rx4ryJx8V6ig6KdycFjUlO4KiHjcyhNOvWQSBCfbyMRedFhG88dv9ritYmmDl9 + NAN2KrB2zSx04vWnK9Jmf8REebZHsbv6Vux3RdmO44npFtttWkS6qo3WAYLWpuv/ukHF+wLiY/FH + fDO0rsrxw90fi4ATUfb2d41D7FDsm+/QvS9zgw87b1lPKo6gk/XJT8HXDRVHQbmmOOJTumVPXr1m + NThXuD28WoIKC0PXYRNuMZvJBJXXS1E5Eg5tqfoiGs0rRSxlCBHOj4gxcqfCbomFCaN/p4t46kxF + iY7vGGRYLlQoCixS+k+6vpeGgiVy/DTDVhBCN4cJF5GlaU2ZT7AQpSpyCV09mccMs9oj+OmJ//ry + MGZKXsCny0QieqOxggooksSA33ttCmpF7eStYXtW4PuBU6t4A9pTyzCqUdDtgkgLab0cor4A5dmn + md5d5tRz2jRhvQe5gFHsERxlu77Kguqs6d7vRuJRvE6vhcsjWyXruvcutDxd3nq9i6LcyE2VPutd + 9qr5pwZdxqA2ZcXdXRPBZ5Uq0Q0DGP1nHciRYF65Sk+FBsViCNNg+/p1RrI36uIH0uz26TAq36Kd + ioPICT235bj1HjueHHyz6YTVe1aAFK+iDcZuFX4SEg6ibJbizo+7UFzrZEZWz+p+Qk0PKKeUqhrj + yPc0gyO7VUvUxp7NRIZ9CHVb6IEPi615OHs3czI8Yns7iuYOWH93IMO/L8PnQEDqEz6HrxuGzwnK + tfA5fCrRqN6c1K0kLKjX17VdHnBrYruu5exA418ugH6DSeSpgfANgaLvWgGBse6BKDAUoL0fEMLt + y1Nuv/WPxZVmCnGbf2OGcVs0UQK5zR/SloLtLuX7WbpaxaXaI/D7s4vz/4+9f+1uG0f2xeHX+hZ6 + 9Z94teQmeGfnleNcZ5K0j52evXufNetZtETbmsiijiglcX/6pwoFkABvAi9O3D17ztmdhCIKIC6F + uv7q3csps23Xhbk7meSRyzXvniOhcgOkjii4aN+ejAAGhe0p9yntDQQFNISpmT7iCKlaCaEThdZk + N9iSXj4heaBzPySp7xSc3hAZP0Zs+xNIjeNT6QS161tdn2TX1Zfdl3SXtfTI86700c9iEUkwbhac + R6dWF1aVtzGF45ZdaHjc4qFkUJss2aENOOF+31RIt8iKJ1dnH3LXjjTNXcX3njV9ltdJP5lk+AQZ + EjAowZBcX0OXO16Z0hQR2YW711JJr+75iYa9mZZyZNIDrnbzRj3apShZykp3Gr6DacAYnQS6VP5N + 9zFWC0lgCRq9Yca4z0PAecyaHuFbbs1XH5vQJ86DJKmIV4/5ud/nyJTckHBxXry37A4pufS6kdwq + KJfkVnoqU3I/lOVWFrluqYg2xqsEmN00YwGzLBGt8n71GXjB/fwlyw+SzKu9tytiK7mCZKHXZu+v + 7j1zWvIZ4FaNqua1XTK/R0twhtHCvEpJCctXE5Jtt7mQptpBLuzKD9D6mPHIYf6vpBpLAtpmx07K + 3hA9LN1vhLRGx6zDrH9NYAWmz8T6nBThGIjegqYeUDaSXXqXbPcx1hZZyMmHbfeML948oOCOZIWV + F6fwjG2R34Tbk180aEL6pSgCXbgC+QQtQQd9eJ5PGrwdFm/L0fzmT7PN5ccLqkRJFasfSg7LfCr2 + 3NOUbVL+J7bgUSW4j3N4U5ByJ2Lec/fJ8SUzUhVyOXMMvxVQiTgXuR9GxSW8Rk4FbSzXPEpDsS4Z + 1HW0HIrSHDSS0CEPo3b+zIU7SyT3qRusPDXX6dLQQjLQ9+aTNZB25m++aZ/VVkYlHXv6+Qqvp+Ly + 7xBZ044QOyjsaGxsI9f3SGj7zf0ZJvbb9DcPfdRzmmqjYOiBIUN9vYydKLSuyBjZq8wmbtF2R85I + 10kyaF3kCNwnIJ5sVsYF1h+joxbzTchETU7L6lAznF43rMnJKVdqcuJTkqau/uvcrdTkdJ1KTc65 + G4VuEM7cKIow/0mNleJ1J8h6JqWaWTVi8+rrTrl393cxai+LdAd6DI/Webv/g21JockzImoQKT4e + ztw8DJyCwFW7bn6quFh39XXhVsS6q/+6ZPWJuWEpDVCRerC4rm+FlRit4yPRU1HtZnB6P7BDe4QC + pDBSL6rkEL9sikv2A90frIR7aaRq0lO1fBwNCAtuFaPvrCG6S4Bssq4KkU4j7ozru15YiW/uTrJp + vXOS+mrXfXfQuL5yMifnP/RkTPDE55VgbYenZfp2yNVM3CQisdDMdmnQ7og46ZRyvJS1MhtCJwrt + AvKfIY0vItuoWgkeZ38Z32M8HEU/dhUdx06160asNdHGIzt03cHrJEO4FjnuSpmpN3nGa7bCGz0f + 9BLOC0Y8dEjocx2XwtHkYJNvKBTcdtPTPGYHRVog6XndUHxEnnXNvNVelF2OCN6Q2AI51sjZfKPr + Q45nk8HLVGIwmYiJuDEl0/txxS1Dm+zp5+d26J1afpeawHkbM3t60YViT88fioLA+xsmcO/gr/j5 + vBoo/U8O2ZEugN8+/sM9ZaxbHWPZyNQJkHeieQHkUxrrnerIluZ/xVy9hQOsE0N7P0jIk8mQ4udd + dOd89ihX8PzS8jsUGaTXjZQFQbmkLNBTWuTf373VUW0RVcIJLR2T3PF++cm2Pc8LZ7YduJ5zVFsA + IWuXJPDv9SGFi23BqwiL15+9eX1xMr85UEiPeFitdpBr/BjSP90iYYwjy0OJKD5hsYOP+Tp2ysbT + jE+w4O6ccAsXOaVqwPUymEKz+6RfgPYT8H7kp8eT7JIFTnRqhd34pWxkyjDzTjSOKZ/Sgcju0IMH + fcOWXSY8oug2QVyuSfMvGm3bcyJELeerzLy8Sl7FmNrh0gT5lQLfZOKfKmhm+109xfqgu17M8YdF + 6nkuGUJ7XenMdyO+VdNvqyXWsjgA/+kdHRZSdP9bYL0dvGz0uhGrF5RLrJ6eCrvQ1esKgDkcolIB + Igs5PVYwnNkOqia0sbdFTTnuEOGiNqoBhBQkTDPZTRUYvHPGW+QzxiK7zId3DVnYLArdRgUdpt31 + rbJja5Fu/n24pbXmWKf5yRB3ksaQA7dcTkGSh3UN3Yot5bESqBs+ZtzuKnMXoHFDyyH1/SuqOlst + x1CqDdE0tKKYxPNcXojXWHcCDtlmiTcVXxbYT7ZWcRDFghd4BKjc4AR3tLwbGbPC75PEPV4PrXpZ + IGozHdusFarNRSqGCw5SL/4TJqZNBK/gw+7s/ZBsPMhDnrwzZp1aXjeFJ29lHPaUd6MHPsnH5dCn + XMa+3qXxcsqL9cJwlphEubo+4KecTH7/d/JanKEiQErrDFWiwLW5HBIwAoa6T1ap+fo+Genjh2AO + 9ZN95CbLQ4CZ/8brGgIs2piGAMsutBBg8ZA2l2bqhFNRJJuroXO1pavVF9TOUMz1HRFh90RstMYR + bY9tEHZsz+ebJq+0PRDTqz//7XWgzEMD/zxH8+lov3KTsIhg7fO4ou5hzEZWT+PVHG5DdQKrhhOU + I+cGjLAf/WNjdrWzWj2YY3YX2gH/hD9Wm0V74LbxrJiTbA+MCYPcWrHuH1MeRrkN3H2BwkjUzQgu + GhlbwWUnuhlcPCW9ebfNWCBxxl29EJ2Qtq5YMGn+hRPgd54j7zwTOCfzC+nHg0P14KUjIEIFSp/o + 7+MhaAaIUKYzOzJMVH90pg4s7nEgoCJL6j128DLorPbIRqZaT96JpvTIp3Qs4+2CCYSneBNv76Dt + nGQgZDpyfZ6dXZyf5HlnLsY5eyeTlgZy05wh+QnvRDiIxNH1KMPscL36f4cVNFXEvHxz1IW/djhO + Q0ukAQHyk6InvLPKBq2jPGcCDQnI0vl0/SznjVjNqsJpKrVjMHJA1IKkqcmnrcqmqoVnLAFwXKSJ + ayWyjc0VDhZW54Qa1728ijGxkP6rXPma4XXrfIprbtm8Zny3m+MHu3ZDAugupiN3261uG43ilSkY + xUsesdwEAzJHNwEhb2NsfhFd6MYXelg2vVC5ptyg0viDSpfbWTxnQgEehK2w/5rOi0iwurJV2UO2 + T+5BuxZp98k6fqiBu2pXmX262qga5EAfkxtaYmFpRFTIcrVMCozwos5T99tNhOXzHq7jHazUDlHX + 9nXlGseLVBkR92qTbuZGEfgm+W7m+nXIhB0BjplhBfdeohzW6PBz1rZfbY9zFM+zqJt4vVjBOvZW + PICS6xdbL9YKqc7dmTe/XmUFCk1/fUmyH6pg+et7y/XMHXn0upEjT1AuOfLoKUk+F1f/qMI8eHbJ + kRf88pPtOm7kzWxQzlDz5SEbZ1fTZYpeibmC+3OVIJTNz/u7XZJyaJ1/UDUp8utdZJ+rmXSjBVjI + uyArj0GtaFUFnApaQZZsJ7DtKCjH+ibf0izJmZ0+dqwLFpY8fQY0a4ovSLZcXzjGL8c813Yy+ZUq + 0cFlgHhQMA3rLJ3CyrOTabGGKnbT1c+fSsXAMrUITHa4RZ/R+vCNAJMVXZEH2BZG+biIcJEzhQfn + Qf8u6PG3262oDvkme7C3MM68jxP++Dy+sa3tbPppdcPEm1e7NII3le5PJrifcwgO1/K4mG0F3HXP + Zv78GkYxv10fFvHGELqoxQWGC6CKIC3rZsQvh9Brl8K71K1sTxN2RP0Gfft3m7/+IUN90VRAHvKL + C1gAbPW5IYBZ2OoSlRlLZ2quSu0o3zKao+FU2wcdEjpmaTMNwZCgGJ2zTxd9w2uEOjTow8YAgpIX + uyMtj44TdrRw5G1M7Y6yC83sKB7SJZ9t74XJMVe6ilgAmOyEo/tN2n6cfrjP7Mk9/sf2nDCwLeFw + o4nfpuh+FeWs0k1jtkcbM+1IqhGA9/GNKl0sEU2n1HV8SjnA750rd5hi8O2fZQFSNEmyumMxJ9xT + Rft+cXv9rATN/Y9S1iUkvnp0BO03qMCIIwuzetKMv7BVfbZDqgonqWHtt+UKURFEhkgz3ZrTKRka + RZdfvId/maei0utGmoqgXNJU6CkxsfPfLqKypuJZoR5c7oa/zG3mWIgnzJwII5Q4IF16n6RVVaUa + jSCrLcFZufh0ac+mX+9WizvggYt0mWBpw/v43/DzNtkWgKUEoPRcYO5g3Az9mkng6KSZF6Vr2G48 + 1i07rPkm4DG9t7t4mR/a88M2IoF3mczFEMVPOMZysANXs3ibXqmiRX5nEPkRs61K3Zm+3km9Go1l + 1K0SZ5njS93hYmb7uAKWGwZNpT/raerDhS2xX8VFVMQFsCk1FKIEWdKUFSu7mvzn7LkJHk2pdPlW + FIpQnEdOdQxJq8vdjA1bxFRwcD2XPCVtNfC6seJeFGvzK3pFt4yTjfYIkQ4oP9WU0BtQQA8p1hTQ + G1A+jxc6qaNYqY7SbU84nlDFhY1wnvPT7kskL2dP4ETYbmBuRqTXDXEiOOUKTgQ+FZfzxctqPgAv + v6DjRPwUhW4UWLMo9PxQeD3OHxYoiSqquTB2LFccRgOGMBOIug+Y03X28oICxpMp+9vfZvbf/jZf + EInCNLtPS6/N89+eTzcpcDUsKsst6MXCE3554XDaHEBAuz+I9YMlh2fpF5iBIqJU3LbbZTVZYQHb + 5G7HmT93WnxJMgxs1+HAmNNY+rnBxGn/bebID54rc+bIT1SmrcHeCSvRCiofOJgQVboscXfWGzst + 3/aihrQGhqqIz6JyzW0R/qvj0Nv6XKg49ILKZOBemXbfLPegRNzFXxKlrPVeBYAZcztN8Bjl4Atu + ECEHj1goDGXlTzfQ4urjDoMc02qYIjhGJbiIs+036fp2NY23vPpR51RuPEZ8ihqO3FFtc7QsMThb + drFY87Z9OqALfnf2YwRmBsRxu3i8ZPfCcjcO7nrkS8SlqEPdHHrdFHEpqtbNoad0k766uqjepJ7j + VRCXEBjaD2dolPCFQ+6KVw+Dr6fkHvTso7lXBKEok/IM3fx4QhAzJs626OA5IWgZoe9kVcQLUZuM + e1cfpuSM59XsVyBhLVaFfIsJ1xwdYzO9WizYluZdwaZZbe5W16s9scWLZQav0EX6KtvWXKSdvYOM + uRGwzcFYSU10pBNcr8nDGmvyaHSKq1wuEFXvxiJmpMW13NxR8zdbIavW3muEL8lA30tuqz5FjNgq + KdEzzOQrJQpqCk3ybbUXsrSIEdPudSvyK65QFfDJi8LIcv41kbt3Blet2JTzNSJ+Vjfy996pWc6e + pGSAo7DP5ufLhedt8RiJ0eQzjpNSt9MneMDzO95xRLVYupKNlquDJdwq3Imk9XfVsSNizvE23TZE + /zV1HlgeWXwLnJrWjzgWRVhjza7uuw7+BscOKaFbp5mvgDjiyTrdNA25hbhruYTUyr8XpMd6O7y6 + m/jk2WcdNNWnm8fWM1TwWLe9wb+7BC9NBKOlsRpwaEMHxHgxSsMFJiu0CR3X5HOOJJHQVtJnaijZ + 8QQ6kWP74sLx3tinlt0l/VG2MUx/zLtQ0x/lQ4OyAi9/ew2KrlVNpi0o257LnGHoQn+ePDmZwhoV + VWwYO7XcLs70vI1xFRvRhV7Fhh6SgH6/uBfJrB/Oq3UgKDsgcnzf8+yTSd0rH5BA6T0kyovXBKFL + AbxWyNfpakpB8srV1BDJX42Q9m0KAhbwi+tenmSgEtRSUfwlRjuvD51jibpPItn3cdIv+CYIoiJs + ON4pkInf46z7HsXC7rgHiNbrSz0gXk10fo/QXxdRwfBN9dQcvatHC+36wcB9BZG+0VCSX+Zpj8x1 + 7VMWdMSyEo2MsaxkJzqWlXjagqMH950d2dXrTiGJeY6wMIPQ9AwNjMOjVmj6YR5lqITTLVTCMQ+V + cGpDJRwZKnF1UbUheQzTxcuhEpEdMn9mR77v+u21+7ZroF9Tu29Y6LZCiUvXokbCDvs/rA9lqmFj + ZeCni7j3Zr0I5vk5V8J8vt6hu6HkUNolBXghthQmCbRUyH3Pi4rAwidYx7ZevSa3heyUzIEyWTOb + TXEfLacpxvnNsfJsHmMGA0l2K8wjySZv3l04hVPf4079rkp9IxSu79dFp5FNuU457qgU//k0VNja + +Gb9IXgMEkfk9GPp1OVbOGSeFhGpLh7rVpci9KKoiRTfRMzIC1/eGJI9M6lNOG87ZvzJJqa6hOhA + UyXoGbFajpJwA/OS7PLrbxuvcftoGMST+8Mtc0n7w4OI6FOhiMOvSxWQJAZiAWBlZQpVUOqJa0FD + RaFlOL1xEYlD+bWdtly3Ms71h37E/R9Qqet6Wv1QVgaKImM4Sp8Q5IzFAr9MqutsG+V6jgNJAtq4 + sIQvxqk57ZI5sO64azSNsj1HLGE9EvaKbdl5ZrUTRR2tNkUj49xq2YmeXC2eitwHmMbVulRfXJ0x + FWGs08vaCDAN22dkxQl9Umi3DzusYY4+rCxef4nrQP+NdvN3C77nwz46CSMAKY3Q12Mn9RSkSMap + IzXLn+7wrNyuHxb4AdPbXXrYmrJpeXby7CHmn7unVtBNf6c2xuq76ELX3umhyB5afBVh9Jcfz+aS + G0iBpebZ9ApaTLAZARWRyIKRTHz6Sln3Ldd8S7ZQZBObIjwE8jpwGxtH9WhDEH0CCsPYZquCEI9c + AhnwEeu5te5cUYTgPVzv5rYPet2sCAFRLhch4E9pt358fVVThIDXK9eLEMxhCwX+LAJuLeTxSxVw + GDXuIjVLCdjf363SuZaZBcLvdQoatl4XGNV0te4jRg2C7s1zr6UxIkMpWm+2gqmdg4x9c9hNF+sD + jwNQtzO3xny8yapxMrraWTLHaLEpn86KIl6Wa/mh5dTFpsT4qTxh9Da+v4/n64eWyJRS5TKlTJht + wS1YyXXH7zyWzhH9qwG+Gi2tYVBGy66buhzfR6vDZZdCTa+uZsqcRCHC6yBatQw8WSZEFr9fLeNa + 1+Oz18nPVyfKmj3Xkay7bSyDPfV8Cl8PO2ClZA6iEYmnhUCvKaiGwPF4BVqN3gTPSl4PwqMas76n + O3SHwrnwdeQEpXZYu/KmpqOx6rqOUw+B7yTepG3rmdwlPSk1JS+4NgHa8VmqbiyzS/GYrNm0RD+o + TPu45R5GCUtVV4HW1EwMbcxyGU2YRQZnSdVkmX6L10pAfC/pwWEW4QIs6rhmp2iZvqSO5cVSuDp6 + cVVHVB/kMNvycv02esPsU1T4uui3opGxfis70fVb8ZQkn9U+E7WUWJ7AoAMYFXkNU29exkoQuIZW + 5MH/D08mXYi8g64n2D/BGwpk0uHQg4awJVW0P9v1a/z6eHXCiOv1grZQwe7UmjwfvigjUze3PdFU + xiLdjicwGHBwUCxCSJhgXO6JW0yC4+NsO8g58i83QYqbjAdI4lhB44oWx3BwJ4SO1IdpfHdbjGS/ + vmS/Xohmt07Ml5qYsl7RgcZ46RkxWzxZ31YbNhF/mTK1GbcG2gTK6Ies+HzM2+44fR5cjKpM0pOO + 61m0DJIOJZFPeQVhXd9IDyh+DrTAM9fKIWAL0hl0iZcuqjS5fHsfwypuEliCxvAfc8TCAaJkQcOt + GfrgWRlG/jE8PHnwSkAJUO+Z26GKJL1ulgBFlMsJUPwpiTFvf3vvVRKg7CiopBLbTuh4/sx2mRWW + Ss7zgAdlvmFj3yF/Fkh3r5xGXJlsNoU5UTRqVNm/rOLr1ZovHDe/vD2svUeMhOlc0r0+9uU4dI5m + wQldu8FGFIVe6HnlYucFSNEmLeEfaWYcT882NqaL0CItdGGfN9m0JN3Jb/kM1ABaPXvlnsxkfge/ + LJT+qLpihjEy2eEaDjGvFkojy55Pv6a7z9x2l263qcCuhj322/XW3+qE5rxYY8KhP+S8lwxCOzgv + KaJvKNgeZPrJbtL1MskLMWXEoouNtjxwZ8Ory7OXEzw2eVoRSPETMUcqo6+ZUiOt3Hd9DVBOsyX0 + tAo9PkoXhhRwU9Gry3ksEr+KyTShXls627MKAMCYB8d0rHQ9QtZ0TwzijlDdIwFe+WHIlxodE3Ml + TmUQVcd1Kfq72EDF4e0DETa2faCou8WisGMB7qKRceUt2Yleeks8pctR+iSLnBrVh30PUxxveAzG + HIFS4zXI/HN8CgxuWfV4K32iky9y3TELzQ7w75lKXyAq0VAX8e46xUlBHj+Q53jMj2ypLfKTDbRu + 5Zqjk88U6b9HSFOtJc3x+XjizQLB3XnGd/INq+DxOVnyzJKjarWRnD+a7TV0Kdvz+JYcIf5gjM4e + N5WtIBSF9YRmUxFaDC/nkQfXoE90DTyIKHT9kgUdpH963Sx0nSiXQ9f5U5L+X9TAH4AKHZVD138K + Q9hv9iwESc8T2XUvSmEIsLOvHjbxdp/+OwYBDBHdHspFBbToUlIPKHg6jxeHA7NebT5PM4VUNn23 + 2Xo2IaThX51tXmoe9Vq8E/iSUMzNZ5j0fSrRgl7UgRyIt2Xjbbxf3CFY9yY7TF8DD1yd6MBBbtCI + NmD7lo+1eMtdXB+W002y+KzrFZHj9SGEwPwlOo36SROdnN/cSEumrvHYZhTHj/avXYw6TzIaN4Im + zzqoZXDFlP3eNdsi3d3CppLonJuler1pi26V0KJUrHcxI5OzJezSZEcQCbhxsxF27uSFAlrgOwHB + qoeUJI0sk7/cFV4ALkuKgamdb5EH0clhSRdQdV+NJSAfMVJTwpx+5B/Hzt1OJXL0MrnywJpNgyiO + orXmfOP7WNspWqB2SxxTWEbx2jpWCT5dEJlNr0GAuz2axiDuUpZXOXNeM+uUdaxyJhuZWqnzTjQ7 + tXwqYcBTJq5KNYhFDe/XZHz+eik9j9NAq7ZjW2N5+YYVGHPqgK6P5EofcaU9vrdrtGxDxtNZfv/w + 3rJDc5GNXjcS2QTlkshGT2lbfbo6q4hsjs/0gDvX++UnG7aME87gj8AOZbU9mLJvIF8DLxd2OYnt + 84XD2fJ9R2sT36JJbj/l7/MnVLsKvjPe8vB4WHhc1B3Z+XYJl4/h8bcHeMxvPBFYI0uZk0D2KYtH + QJ0KHRdUiQpcMgbfYBAWeoa2yY4PvskGGzpBk03zEaiXcB+jIIpAYmlFeuLngffXFLbnWJ7Vhi6p + fYfSS1EyRiwvrFtGFd01a3LU+g2S+uRT7bxwPSmDA0TxmnGe36baB3Gb3OySRAu0U/bpc9At1zdF + iwwHjUHMQO9udXs3z6XQ6dcE/r1HWzKOYVNYCg+bJYho5S99Pl2i1FCkWVF4KCJGIv5zLurggZPC + GHyvZVwFthEoKgoETnHLMphZintRaqsK0YtgU1icwyiLSqXG1WmxR2puiWa0aC8XsmqOhJHJsSuN + I2DT3Yg1fBiIUIzTKdgsNKkJujlyA/6gFNyexYNJ4EOMNKNsV9cXtUpqWG7HAY+C5uTQITl2G5gJ + 8MJppF7NvbPcqPgrkklpFw0I4HMs8pzkScldsoo9ZoVUUGSjO9WaqTQdEBaRhkMzLOe70yR3ptFm + tWO2mtHMrM4ZzaAjdMhohg4qGc3MMsC3Eq5WuMqwJMk6vVVJIvYRsHpR0VwgznOE4ta45UdMmvvz + AGXlt5tHAYCvlIlep0Ks7h9Qk6saTh7y6rqniMrSJeCVNzEOd6UO9GBX/kzU614mQpGFv20e1ml2 + WCzQpZ1MRUU/7rCiiFbXDS3fP5m0vXoGBPEFrtraoQzYYsLvjX72RE/VMikd2ChvDaTbnsBrkQ0J + Pxf06Y0pUVOPiev7oV8Wohbx8l7CGh6dhgFgPkdPVYeCth2TYkdL2APNmewd8S3aeAeBQboWIVvW + 7+3yZXu8bHA3ep3kHJvLOW/61/gbIxhhSHUs8wMyTgo9c/N7/VXQ0YCYtzG+2UUX+tVOD4nTvj97 + w4SHbJJt7+BziLt8nJcxEd7HCzZZ43/wVgd+Qcx0zCLhVmCJ0KaSpVzzpRgz5MAim/eXeHFIUXPH + AJUO6VI5HUZJXLK+RbdvCn2KD6YZGn4VWJFrhRV1N4lr4oWbPijynQqv33NZtUKiWYlnKLyXqeR4 + HKZjcW03qlBZ7g41p6olScKcSGMGh0fFERZA+t78zjblHqAPUgSJfr0WqMFm12u3yJEOEctPG2Tn + T49w0473Mhk1B9CzbNLP29n58BtxcEet12SeiefYYTdAL9nE2MlGHeguNv5MpIJocfwLgXOh+tTs + efotjZerLcpUaGnmD27XcIR5+JlS3K+CMCN6R98bC9gYGSXQvpIjIfPs6qkZr7hnhV4+snyDdx2n + sCSOkcfhVL9ztdmMlsfRg/wT52N87m3mafurtci3+Xx1Itu+sg7VCSa5T6CfNGy6kQYv0iz7yfR5 + 3hpjL51T1gXaJ29jbEURXehmFHrYjEBY90ylhvwHOAfyH8fxPD3SRBVampwzCtopsEEMRR2tmtj3 + M/SNU1tzHHC60RTOQOJOAfs+ZV0MfLKJKeqU6EADnaJnZOBb3mwF5lSRiSUT1NFQ7Donk7fZZzZ/ + iS+KrFRp4szRQR9yzH3+WpkAdkIIVVEkQPdJZCtD1C/uksXnbbqqQ39v0pyAVr45lvE9Qr71IdMH + Nb/FzVvxfirDy/are5BHu9gx+xJ8HMj8ggDFvFeqKFGtp7opa/FA9wYhcEM3EOp3sW436e6zGtTy + c5tV7nvwxRro/u/uLnGYS5nNL69v3JpEsNL5bh2QYMxjQaKNVG1nDDbPojDUMJbFtNSDIR+19Q6+ + NXI6UWirw7pLYAJMjaotKVSMp1D9/o9LmD/z0DZ63Si0TVAuhbbRUwEm99sFwxxCPbjNjkrlGF3n + l5+8yHb9YOZFXuTKcozi8hGV5j4etqG7xStJbmTxgyzvwVGP5W/PPl6cn8ymBRo88FYetZTxuDhJ + 8+J8VmSTooUhwzK0qwyjmzaIrLgWDgs1mmmRgqCL/IQvDqaernBfCJpvPl3gtnqDaQoSb+6whXmo + xMhpA9dj990mpP7Ide0wqoTuKyK3iJ9qiGLz4Bg05f2qpPPYso/vr+bXMErc2Hku71zyKYF9oMWY + +VZTTH99D/cqBuazu83lx4sTeRqOdNSYwtzckSQIYnSFoGs1JQjUE9QW0DANAW79qAmYr76X8lTU + jdxnrNNU7I5PRbdFFFElRdpn+8oxqxP1bHN8vN22NVK8MNxl3Sjvjw/12Lad/AVY34SYvwy0ZIEM + tLTIxYPBKWJ2+E3WGSYPtygXD1soHffY+sLHw3fYIDIUQjaMik+fVMtzNZyZrmTzb8z3/CBykVzC + Jr49hDpTa2coeeRDSGrAP/3XZ6i9OCLfV/Vc9adIxT6abyLT8zQWPJKHp53rn0WRm265aDkh3+Pb + lmNw9hwMswh97H4AER8+qUaH1OZpmIl+YKE516lsAUOl06TlI9rZHRaRcUCOoI+NnVFad6sEbHS6 + B+mqUumiFPB3l5bjmSN40+tGSpegXFK66CkpXe9/v6rkE9kcHVdVudgvc0yys50ZGi7DoL162WoH + 9EevXvak6oxNcknFDdwRoTh+TELAuGC+vVw2Y5qARgqFF4fUphKDb99bjmt+SOl1o0MqKJcOKT0V + JQZfVHEaWOCVkv6sX+aYc8NmDsi6Hh1RROte89Qd0DHha2uNdHKu6fheXW+rCXokg6zLOGmBYzWc + XQzrZaC6lI6uWuxApYTFEEwo5WeXR6uLs6ZzFLhlAn1UF+/KtCYXmOeFSU3qgMQ8PJ+qCbtKjleM + qT65O42nrqWHDX9Llc4uQH8CRSd7Ln5W0t0IKu8eUXXEjMKmQVh5lLZBWuRZk/A3NsElz3mMZftc + G4oIhcnI79d2kdoWVcrZ8FqCX3Krpkg8VNPaVhuj7mrBuyLH1pgQjOW+BCQPM2WWxDE8RaAo7pvW + uklGgPHq0Ow/pFTJEQrtAViSAVPW9cf3zO4gJdHrRgxYUC4xYHpKDPgVHEe/zIGxAovOgX3gwBGI + BP7MiWzmB0dxMhHOkSNifcMCgglmKN0nBIwZb7cg42YcIBNNMkmVK+XYhToVYCYHDqEyXcONBw9m + iDt/+IIdcL9FsucBUYtdCkeZV8goI2Dwi+BVhgiLjTgyOsu1dZarVCRhnuM7ThV407yCiioSatRU + kbCYAi0wpRyKouVog7qn9fPmnZrf3NTXUboYcWM0G4UVMF9OvSgLOzqrkz/d7prwwyTvNtDboyHB + dR2C1h69jutfM8R2Ik4KH0XTMesY/9USvu7ZFDOePdz3C1aTt4YtHZqB28mhCa+bOjSRctWhCU+F + 2P7uyq66M+2g6s4MwtBjMy+IeKHZNt368w7ofx1BtwZFwbUD/0nr1kFoT/qos3ILOATXcmlHlrng + QK+bwbUQ5TJcC38q8LXPquYVJ3KDMlzLPPQQXWcWYkaC8GjnOsrZpwslTgNFqLsEY1yy5HmN30bz + 9CS7FcjkMGjULHLh9znHzlg/AKvarRZ3xPRrvUMS1Euit7yNa2qhVexxJSztRsw74Pqu7Vax6jpr + mzqlJ7Wbn8LiPUdPXLZf7Q/C/eb7V1itbK64TWIE/1on2QS3bA54ElkOv50dyqHdDaoDZkylMSnJ + pghYBZSgGZq2PTOxCyU82snXZMkn9rCXtoAY/vMADcYwyjuaYTvZfEnW6dbUMN9Lt3UskVkcWXwv + mFWfVxqL6Ki84QwEwh0GIgpvNPy0OOyytCZ+7tGyfb+3zlu3HMOVZdey+GZqZh3dADAs16GlNmh+ + LK9YDqxvDLZFOZv6pw0dV8jo+9DFXFA9o/iCjoAsQwGEpexBxVlfXtp2B3Rfet1I9hCUS7IHPRXi + 58UlR37ThA9gfaXiHv4vP0Ugetj2LLIi17Ha5c/lDjqoyp/1Oo9+e4dNFt4n7Od5sz4sJCT1u3eg + J+9jyeBmHIcsm8b5fctVcA5lnTPBy3Rvb2eacr1L7tMvWHnmZrr/mk5veQ9ogoVuDrA5+Nb6OEc0 + WWiACNOgUcnqExxwuvCN5HcWKu0gOry6nLz59CK/vm3fFqUpqMIfx1wq0NEH4mq4eoCsUmxAGz3i + Y3fBlR0Mwz62Uh8204L/S8wsDSxglKJAUOe3+r5qDLau83JxTCyPoh2q1DrXuTR3uT2e404yTU9W + tPaC8/lZl5rWvIFpVWuiXq1rzZ8T83z9+z+9msrWnlepbG27lmPPbNexvXrWOZvexVnJNKcUmZnK + vJzZ9PwU5/gWzvts+vIU9Kl1vElvY0ysOJUMeLGGYS7mcdUEIEJNime1XA4+wq7jlk+K7eYmgMBz + g8kwG99TMKHJ/e1Twa9Li3UIsqfXzQp+EeVywS/+VATZfzir2KSY60aVgl8ec5jPZh5zedJnm0xw + uwP6VZmgn4G/QRbIi9NWsXFKpdHdJpO55UXoNX+EXerYrivKeROatxxs7Q0rMmA5GlVXOXecei+h + T3SUK3s4AAqLHNc9/vXfyazfp9bfo4XE4K7UZmYgwNPTLE0tmRxVNXx9CaqGOZOj142YnKBcYnL0 + VLhrL/9eurxdh4WeX9J8Ql7W0HW9me1Ellty12pl43h6ZLky4e83O+izxhj/F7qJ38lbLz82SsEX + Ujme5yLd+iEX6jLShv6xS9CFjAJQPAWFOpGaCjEGVF2ADqpVvA4QCrLxRr6Tl6B63rYYk3+8elOE + ykROyDmxRdmgSJRTF5QHqTwes8m8pAQrd4uenjwJcUQ5+j1Acwz8LqHEXbDd884Fg0UbU9wF2YWG + uyAe0oG+U8WWvLRCgUABvG6jkbI9FzisP5l83+oCNkUD/+M9CGTm7ip63cxjSZTLHkv+lBjn75dV + 6dD2qwmYc4cB+5qBhBiJSf4AOwRR1okpQOvpMzRYoudCJlAAV4DDWwq2y05E0Yvn069wSqbpFxga + YVYky9kUzyzPaVnt4fLmpx/p5+wQ+vt9F7PttEjUwBJr6frh2dnJTxRuxic8d6wcpCsL2tn1rqwO + 1WBBVMbqmiOEOeqkinQ+9VNaEsVgJQKd9Jt3FdKTP9EqTXAv5mwdvm4iPlIasoqmRolhNSEHnY/3 + //oqHsXs41jSTx/Y/zV/0cVTzxuY+uqJetVbz58Lm/n5VaAxQMdxnTD0WaW+SsiwEvYM/mCRMPy8 + 48VMb1YE9IAbDoMbt1tezwgu1F0a73bxwxwHtFSReaQnccZPIjTEKhlfcWsJ8O4H0BfjHZZrv5Xc + 634H4/46v/5LS59Sw7ZDP8L7WG4YJgqnWz4zvynpdcPC6ZxypXA6PqWN8vK3X6sh+U5QKZw+h90T + +dHMCaNA1oN6laPsyMpJGeyR5bqQrdVMW8SA3ce8dBS9ROIaqiG4Wz6DPsmV3F3BcGfcnS/Z/P1h + vV/l2DxnV28Lh8XdanHHj2xG+3MPb61hDpEwiOZSvRQjQWJqdzBxyOnTopgU35ovD2k1RkTrV1l2 + F3ZxtcjMhXJ3BRFcXnYlRmSRopcvkzkN8U6VytVRanssCPSIT60jz3f9sNKRnHZtz4cs6ktHmegS + zcBvkA2iELa9FzWS3KJixUPpS4M0IliLC1EKGNHK7OmxrlZTsoU+EwWuQmnP56UeWwtw2sc6mRSn + KtPz4V/G96xId48/x9pmPAHxJT1scdcruyaT+x1kmQU/l8vDgvj6h0/TZYICiAK5Am/uEvgtXvHL + j5e0zzdjBqeVJ1qkmFrS+VRNkNXklkaLPHojwDZ5UUmVVcbZmdiAonJ8dWVrdWNoqrWMcaoT0drq + C8L1LHJm9Ip1xRksLSXMfWV5TWSpwWXsgDdRkGPO2BoYWre1QZankz3CL7tM79C4J+BQ2KTKxwy1 + bMLPl807d97euvW7BT6+upG6dh9o395Kqa6eFV6c+KZ2sx5VX5Bf827NWH23SRkhdxNrBlD6PBem + FZNNP9XCliiLcLpOrS4IoLKJKcqi6EBDWaRnJPXxWAhCm7fnsti5jsmsghCTZ5/N7KNvKp0jvqIX + MYGvKNLvpBWVV11Xg0dGBFLHaBBfXXvFtXQkCKQ9ZFRk8n6cUyBMa9hoh8FGTsNgfzUMXTHty/Fs + PzrWl1zhal8FYCDZHsgj9iZd3656Fyx+cgE2o2fNAFEqPUgTBSo4An7XXU8dUKcNKf4JsnksEYTZ + zmJGQG92HRJpdNbHe+3W43dyhgIpL2giNSsE9zwSDz5gersD9cF0I8hrqajuZXvWqeV2q1ctGxlj + U8tOdHBq8ZSup5eUUH/XdiN91n4E7vW5MFmc7ddsEuN/0H0SoNMHOa0dEtYoIerGq65oqr5jFci+ + CR+CuUzeofX3Qd19vAJ5j1eKazjwtuOHfPA0Z8t2SrVm6rECMZyIsM1ooyMkwxwGM/+/YhP/a55H + aFzNq4ehUyQ5mgO5/PWrP+cb7/YA2uwmmRt/veQVMpKchU6XSHJ83TCSnFOuRJLjUzJ2Xryv4o/A + okSVQHLYW3Cfz0LH4iC8lez3GNgPCG+Y7C+DAbBAKE6FDAPgKhCCcNQETd6lCAa9wvBIMl3GuxxG + cLW5W12vQFCSZsiL9bZ3oXHFvmQFbhQGlXi0cq8NmeAYydYUjqYSLozlyhzkc6OSDCzba/LzufAh + rl9BBE2zVRPKx2K32vIHfPddAD949w5Z+n2KoVIgfWICGvxrk+g+0cCxy7Cks7pZy9PTeaH5UnDI + +fmn6TNZrxttZik3dOMXfzq/mLOTXK1Fe7QeQ4LTTRgspcmijfM1iT+b7Z55YXMXyM7ZBPd7HkOP + +hTNO6lT+XiBQywJ1qW8XpVj3YZ4blGtvtqF70TIIcZuvtw8DY8sXSIOvWHljW/LKPI5f20AljmG + 6m4QY2hXS6TlA+1yCQ9AaBnDzOEwn1SoYv/hBvj5Nr6/j+fSgN3pmsgrM/lvGMh1fieJUrQxFShl + F5o8KR6KUrGFmisrY2uyZPvPah9YI9YRieDHS/7Vlzv5UaVMn5TeNy4smuMLpz3IyF2S6/F1Q4c9 + p1xx1+NTKZa8qEQrOb4bVpLr7SDwfNBzA2BPotLJBQ9yRaUUp+DF1M6lhutqVFBhQmv0UVkRdNKY + ne6ETuQ5Ff9d8k2FCNWd6o3OQGa5UcB8pyyRrB+ydKt9VX2EvG/bFX8r3t6qaKL2kMsRqPECpy36 + UCqLlgQq3/fKqfqzMrqO7GRSXopnlS85maoJdA0DeA4nL4PT/SA8bFjwTpsFaAp/7tLnPHyJXHr8 + lIHcAbs+4yl4GVxsC36tFKPAciYP6wV2uUkmuOvy/HjfonBTn5DZ2qaoxcpap/OMFesfORHdVuqY + UJEaQBQYEhUCG0ZtIjY6N/9pRwHEBvNY/04U2ufKJlUXDtVtvJ5zyaY4+0c1ZThalj7VA3KaXVGK + puVYG01PHzpHbGTjZEg7lCfw90srsM0vEHrd6AIRlEsXCD0V4Lfvzqrgtx6q7eoFYv8y9wIrDBGg + B9XezmkC/95Bl6Pg4fqRBerIYwVqxcC6rrn5PduuBGi/dsVZfmOshxxaEYYx447FZPeFR4gqGJCU + l/9cHpMdGWJQ5cBQiIvFmm3ncCeE3rZUi2jy8eIsLxEAV6rTBxyoMOg/AYzGEQq1Dz2NOSFR76gT + aoI8ymFePN0JQGbvWDyd2hgXTxdd6MXT6SEd68XXGyZCMsXOSQT06vlyAbtKlKZjYeh6kXUyqXkp + V+7OOa1yC/6UF1yPQtqFlkPA4jkWEirXGZYi49GfwBPoX0kDyEp7DMdA4vWm8YhidgZB+oROyK88 + dUA/3BZ+BGsnFNWRO06YUcPm8pVdQ7Tl0YpkynAQdUoZhtdNU4aRcjVlGJ4KNevsHGOoSrGuHvMr + OcNYZMW2Z77LQsc9mjMcRH/t1LkiPdhhrAhedi25ol63FfXMV9SrXVFPrujVxWWlzhpzo5oFtUBx + 9ma+FYEOKww7U4R3FEa9ebZNFqsb2O0iUP2QyKjLhyTO9tPzl+fOz8z6mbGfmS1ySLip/7CcbpLF + Zwp7ulmtY15bgcOZPJdWQxIKzl68fiehybe7al00WJaMw541wM/ZTQWZwiBiLrOqUbXJFm3L3Msr + 9H1tkXS932Ku27UDPtwj9gTPZ02FnzS6o0bvNnWSH4dCGzItYBZYblNtsOYuuAp3j6l5tTRBErXH + oClAdWC2/n0Qga9cAshfvzlkZSEYToTTqW9ltcuhzi3bKgD1/0g3k6uWgzjGMRQHIa+opNhgFB5Q + c1wnyGAKcARyoFi8YMHPQ9fiZ5PiLLhBZF+lfozaBzwb/Oem7W5KY1CItmO5hCahzDWqZpjNQTHm + iD+V+1biYqay7qV5MAibYoKyRVq3Y1s/eSL4oLa8+d5S+anRzCHrqxmLYVtCKq7eCmbNI4HgUfmK + zhb7QZWOmEVLT1PXGN37HTTUzvHCI5ZOeiTdWQpilEX2/tKyA3MDFL1uJIgJyiVBjJ6SIHZ29kn3 + YDiB49t+KY3MdX+Zs8gPHWvGotAKhYvtnDxQ+GkZ5ntx2HX0qykxKzr03AbN38AINau5BkKLru1v + K9RtODQVCNFYv/V2h/IungkZXHEW72vcJEYGLbWCpR2GkV3N7SpGUaIUGFEqRKJiYsglcE/2pHrH + iOU3ghKFwBf8cmo2Jx7fakg3eMPwjYdIKqkEw1fztCPb98sfUUN3T/grClnNv+I5FemgiYi0zpdd + NJ5TkWPK/p7DPr5HEk1eHs/RPuVjsR71M1az/0oFD/Q6sjUEJz9k10/woOZOH4sFhPZEPF7xZQ91 + 1vgexYzVbIFeGI2R5YlaXEORmHrZSgtbK/lVlHNtaKM93u5Ikk3XYMfRIJ8sP9JXsp4Dmflw+hJ7 + nCEOBpJsSyIKXQqMGeELx40Mp8kyiAyX/CY9ZN2Cw3NZfGxILteWsUHOa2adsrBbuLlsZBodlHei + hQfJpyT57LZr0GFFQrxvXdVU8H3vsknzL5wAmuAdFloUa+4yO1+ioXk7ZtRGNmz3CC2CRq5aAbkj + h7Rt3/aUPuEdQnEvJl0Go/WeSgeUiEgOkRQSuZDdFRsQkL12faR5IozXfkgnrefQkfVebc/c9Euv + m9Z7RcrVeq/wlM7dh48vqwhPdsmW77JffnItx/f8mYuGAXFMN0myFI7uD8mK52p/FB6pl3m+M1cP + PmyWVfUg3sRbBD2cU5QpWXsqgBDoZ2ks82EjsCN7NKDwe/FVcMqAbcHVU3GBB8xhpbjnAonADeBO + dUs0y4nnlOOOgiKfjJ/lrBCjWZV7dLDPph5t34qiEITiKx3xoGWmn51dnJ88R5MGjA43D66mhBjh + FeRXCDdMyeEY+AQtUf+gFPwtxjbxWGH+MSIK8/pBxsETZFQCDQ+7ZHq4Xv2/Az4sjMSIEsVP4X66 + xFDGZREbLCvXZzISAEb67Ow+ZicFoel6dYsbHXdxUYHXdymrjW7NHEag/CGt+AaN+T8eVYPPh6AU + GMi52LBoqjHAHAbgL/A9zdlzsljhB3Cwx7qDYDppzPd8DRq+tBG6yIN8/9Poup+jjmLXmD01TI2D + Aalc6G48ouUNFtM1/Igb8IcNqmXdB8Np9AwtoHCGFgb6aHSORS10JthUO+Dp4P27rtRLvDA6ZVY3 + tUS0MdVKZBeaUiIeknxTXDPCQybBQlHag+0+V14gZ5T8+N+uV57WCSYtMCc010uOoCBQ4SzZ3X26 + RF8fvdMzgrcjizaVnbtV1jpKlU4yRbDC/lECfLtaoB6r/nOHxJFeitqfV+nJ7UwhBYsXl4XcdCTN + 9Ywfdj2JM87s/+pQLEQ2MMUaJ+pVtHH+nJSq38rVoUGisiNWgzfOfCwMPYM/HKupqsJKg5GUCJCn + 0+lVkkxfv3pxNX2fYGpTNv2/8EWgK7lh8IvD5o5/qgCTM/vrf0yREN9SwCFdX7r1WIfKW/S6qVuP + VStv0VMRV/7rp0q1cMdyorJXD7cDs2zcDtznh9vh/a9fp5+S+22yIyVKZDpiMiUt7vt0X63K3SOW + XK2zMQAB+enW7nr94aMiln48e/ns4uTtL8CCNpgrWuS/8dTke2D6pSrY8s1lsk+/5fftcx4doyYa + rjaLHS+rjY3gm3HZsml2t7rhucHpNJ6u06+giu6LZZ3gFikcShaPkPGjgOxkSnIrz47kqbTAlzuB + 1YPiyi9iQYEHj3RLuv1REbrfN6C/l/WV38qRxy9MsbNgn/AgfNgePJ1VbJ+Tjr6eMKC8L9i9yh7t + 67UYM+PTDSSWmu96XbHUqIkplproQMNSo2fCe3B7I/I4hR+XvlrXFUE1x6xiuChPUUm6P53+fRVv + 5v9ndZj+14Fbo/6e3m2ml6cwDtBc1snJ5PIuffPqNbeJwV/ZbHoJHU2wN4JWE54GK2J8q13HOxj+ + jofpHO6VeKyO4r0V8I3EZk6PYhUtkADDCDeZxIabq2y3RqAncACu0cbZIl52Lo7k+DVIn3yQGWI2 + dJq5yCZM0vpMwDaV5lGINlmTPIuyCvRvhq2b63WDIRewD1L063ElOnfWPEEeg5uj+jnZPU6PAFzJ + MTcG9zXAvpTT8FjYMjXXq22KO5t3gdEk+7vjS0v8hVSxEn8xvHtH0JZ7XfrD7l8HoT/zBenwxR6z + wzxmExj9bp98y0/+frU1JuLnRI624pKRRYEK2vbMQWR6l1i26GMQLephPVfiN5NvcMtubhNZoqN/ + B5x747kd0kkLnxuri8e3P+Z5i/ZLHpzQKW9RtDHNW5RdaHmL4iFJNfH1Qkg1Zy/OmTBCTvjfRSJs + yS6JDXgWossI89UPKAibTC1cexkuRAQRRQAf1jeHnUmIW3M0Gt3QdXnGPU2DQ0oEGjU9oqm4TokG + 32eb1jKDJl/GfHE9fT4WAHWUmtzrkbC1X9jBG8Y6ZukqrQzt7Uo3qsW9eCx2+sWcTeNlvEVWkDup + FSig2hdkTEoJM0jpEw3wYegJA7zPVFaRo4opyQ1dxPWQFVFlvPJQ1/ahLLum3NBycPVUCxzgIVSO + K4ye5WhT1ZeOzyIuhXwBeRY4vwKV1kzQ1FLdi/ifzMAxnqUin7RhGSkWI5U3b75I446bAmgQjFXt + ke69HYAs+XYWIHjd7fj5jvc55N2cEJvhevua7j7LPdN55HQs8i6Ojr7d3+4SB1FRMboNbDw/buj5 + GpX8DCV9RTME//S12Wocmenl5Vm56Yk5p1YXOU02MTY9UQe66Yk/E4gSy8/TAvVTvYDOX/5Dkf/L + CP2Cru05YWAJzAiLDIhFrCXFXsrbzaiunXlAq8801j4y9WGX4uCL5ykgKw/EpSCdX2J8JJsvyTqt + M1s9uqN6cLZH7wID0ofnsTwwJDhDDalraIhsZRwcknejh4fIx6SgZetYKGjv43ynCgftpOYRvs/h + 0D1HhKg7JLQBc72XoRZoQysDsb4rwbX+bJJW6TsRJz4M0MVyKP3iGJXmADfaPSUzrEFatxF912ZB + jclzrBzpxl4Dcs3xaXH+hnUdV2uMLoWz+gWB4E006h8jbo4afv+nrX7aIQymb0lUybuKZJu3DHhH + t1Qb3sQ40YY60NNs+DPiUtu7BzRMJHgwNqLkOncACjwrROZnoXei/DvyA+dk0ruhMipMzYFVRr7H + LA6bp3u20ZC0nnb3RziepwMNqESbnORtFF3fDyug0ot4eb+C66oTb/Ij+kx9+o5a4CrKfV9CjyEe + 9XTGd3Wme54lqt9tt8BXcdp76jM2pQH8sdos+pMZuagM3148n3p/t0KrLOF8U4b1w1pUnTCtNtEY + dj92R+2nJqSJVk9Kr7lGSjnU7boHHcl4Kbvq43vgTOZ4DvS6UeCXoFwK/KKnIrvq8uI9YpfooV8u + h0ZRQ7/8X+Z2ZLPImdmIBxARu/6gmZGraY8iu0dXEkXC1W67ZlElLEw3TDdl9ukhY34T7lDkup4j + y7mawE7l8aJqBxhmatJBUb6iXLCuAobgsmNDnvSZ2gmtpozS8hiVXh0czu3gzcj3uzaoJnp6CbiR + gqF/rNfEt6ufb5x2On4S7JNJUK2tffRIuaieJ/D7md2hhjq9bojfzylX8PvxKXFLPF7ei0qgLM+0 + LyH4e1YUOM7MA0nTDXQA5iKSWTvEz3zr6qS6n2bTTRLv1g9KfVGQ9i6Be3pn27zOjF45Bg7fFEZa + ZRvPRe10eMc7DadX0x1qDcSROcnr2kDd9jxrgQ336vAZ5jMugQKGbiOr87wIg2lL3FlVY3Q2bDsN + Ib2+4wSgxD8in1eHOozPT57qLpjQ5s5DfAM7NL48auF6B8IRjHJrDPRa/SiggrrqbOOy/I7YvmPw + 9u96V/h5baHX/inrFjkg2xjXFhJd6LWF6CFxfsWWs72LN5Pyv1UqGAcA8nfPOIBGTcsWVtJkDZO5 + Q5Ct7da0YBeBYRKYdFGDfSaJcWu5efkLS1jbpd9AHVKHsuAjRFN5VNDh1aXF3PMOCVmygZFUkVMv + yRXyOUkWL357idxCz8hiVLxBzcgKfpmzEE6NNWOh60eRLlmoySDXh+WcB5Rn/KDwRJDlarvG64l2 + SSbrz2CVOrhCYLKgEZ9FUYoK6ID6HS/lFfV1tV5SFLCMFJUvkgjx4rC0vT9BCtdhOdWnRk/NsUO7 + GTLDsy2Esv3hUz7hWybPKPMiayLGrtkaa77VlGmMXUo295XxIMbfX7y3QtdckKfXjY6coFw6cPSU + jtv5y3M7KMnxLHLCUv6j+8vcD5jvz3zQy0X2Ywm55Ezmt1/sZH77OfGwn88fFmu6uxDD5OfzE1nG + cYV1IRuTS7X6LCXMkRzJoSgeitCBi/WB7yEJ/YA5DrxspMAoxoEegYPg5/d8ubCDsWBwFPmZWa6P + TtbygS4zb/0UsyZxvInc8XxdDT6zWTXROyhAufm0NuFThpbXhKveQK8zto4VWBHr10cruIyemBiY + LWO1CxAolusETn+6qSVsd5xvE7COCsInOzpBZfChv8YRnnCeJu8DCzHmxKRL01XDGv1shE/eEavI + wPn/H4BTZFEyozEiz/FZQyZDSqXGirQJOkplVLijHwXFU6cj/0fCAo0OwzN28bFOcBoGYOxuKCCC + R0YBau5aCq5U2ujXSxAUzQVXet1IcBWUS4IrPRWljd5eVgoAupHv6PZn1BJBevdZMGNYr9sJ2msb + pTvooVrvL0vXB5yOG7mlS3VqvAZ7LANR2rPtRyv7NwYEhxcJG4snzHSVjz1qghjouBebyrekqco+ + d0+tqJOlipqYGqpEB5qdip7J2nOi/OE04bb8VIRt8NStl7+9Zr5rlTO6FLpoubKwxuH3SXQ6npUk + Z5jlSXPs3Dm1O4VmFo2M0+ZkJ3renHhKx/h2tRdxmef2dJkinOUk/1vOm97AWxN8lafMwWmmIOxA + lHoxiFDcpJu5QeGXY0XKGxPrGYXiD87ZZlFE9snF2YeLeSllWhyp9m8ZnoX8186qoYuY8CJLy9U7 + b2IUI6xv56U43wanViek77yNcSlO0YVeipMe1pvqC55IIAgK4yvIYcS0ZfHj2TParwDnkea9QTx0 + YPIUNmfUZI/a65rCHzuRyrmvDHJy7MAc3YpeNwxy4pQrQU74lLjtqzefKhDSrmXZ5RCnn2wEj57Z + AQuEse/N+mGRZg9rtaz6aoPgCXDenr25eHcyjzewNDgVBTAG5hEQcEnFGIB4xMkuhwyIRTJxfMO1 + aTjIn1ccUWOm4TVldEBlxbKrryuPnL771e3dHm7joqAZpnop+q6iz9zHPM2XRL5Xt3XlcPIvaK7y + hxXHm8Q+LHEceRWznDgJTXa4MGSNBie02TCnaofL56lUZU+npBjuQ98Pmcv+NfnrregEt3cu1sLm + FYA/ecKenCrza/2Hmk2Ga8xSllB9IEb3OW5ufLMe7+a4QiBSymo2vIl66btUZ/U9qLjm6iW9blZn + lSiX66zyp4JTXv4TMdhKhVad0C0XWp27CPxlz1yL2WGpwLysVMSh5M5/vXj3bo4JrvBvkTKa6eWO + ZCJpkfmCBwGUKriC052SMSMKRmbJYpfsU/i0Rby7TZ/r5xENpctkvfqS7GTFyJJTLhdXzr6t7S2P + neeH97C7gRVCcnTw0Nu1A8lqewcKBeK0wFa7y30lr3ZfmFthoXWfq6Pjw2w2qs3MC6IgrCAc1uel + 1VePDcKmmmBR4Njo2XwkpfzVJU4Y5S4XuZB6saxQ//SLd/WfPoRmwfK1781Jxt8wdlM6XfVKCXbT + 7VFPSk3hMqqP2lQWQZKf/IecoAlnM3m5Vcu2J2IpkU+qi94FMKHRiz2QblvtJ9wz3LzKd9UoTvdH + wZrD0qz8ZisqlLZg/9UifDHSRWj++qkVXRNtj9GKmmk1D7De4tSP1pEBRm4xY/GWi4ZdjQRPQJHL + txAjY0c9U25Eg6jLlvYplPvlJSha5johvW4k6QjKJUmHnoqK8r9dOF5Z0rGcUiFTB5TC0AodFs5A + tnMQnJKXlF8DJyBueT9FLF0sAvN/L67gPtvuinCKq8PWqQmHEuYaPUzabqydboU2q8Y6qGG1wG4T + AtvS8cn06ObmquZqD4VXH4NDCy/7DK4EYDubB1G+u9BCSqFT5et4pl7zdmTDXHqlrpRvwR2qpJqX + oqmbAkLkF0w+KbOi0hEzk1y+dp5P5eoVUZWbghnK1cRLEFf02U8nYlFnoIYtUyQJH60AoYBqwMsJ + JbvVXqEa35JDXMA1806z0qferPCehZXC61r2HKOlE8UJzOvZcpUR1cycGfOdKy9PG7iMiPsKc0tk + vJvLbPxrGJG2krkXs3lBl8ki7lBEcYxqEWRGbN4Hj0Cv3ZT8CLbZ42750CUwvJazbRwfO17eu3A3 + mDCcR6V83I/hRFQLVUBb/gijdkFkYK1v35dmcWYHXcHvikamhvG8E80yLp/SrXeneo+lGbwayq4Q + Q7u4iy5NEydTsz3nh8CrPwHJKxeXgtxFwl7BzHrdXCTUxthFIrrQXST0kPYBXicCi4n0p3Q3UZ6J + o/tmnTANU+oWHnBHphNxlEPmRwSMgkAyz85OfqKLalSUpyF9tEXkDAE+8l0t/aEe1qUDhpMJuRH9 + iHJP5ki0LHzlnVqsG3uiNsbcSXShMyd6KEIXMFCTF9zmCAG2xKJteq5SxT0Z+DbnUiHz8sz+StCX + kTfddW3Bd6Tu3oPW96nIm69lJNfS962u7IWamK6k6EBbSHrWcse0+mAFRbxqmOOM6oIdjlkoJjiw + hA/UDpwuPlB83dAHyilXfKD4lPTdT7++rgaOcfT6kg+U2aBKsBnc1l4kwsbg/lTO0LtC3oF5ENye + CZX3U3rDKhqv5E1F7lhJabQb7cJ25LpRMJbRWosGB5WpqvViessu2a5lrbrFXbL4DF9f1nOBYbTr + ucqwNeI4lyJ4bSpgxTUlF6a9aS7kiNX49Vgd7XwbHzj2mTLqHKGYr8z8w24B/z3P7p3tiVBMF3vQ + Ofdc4QX+s17DhlZn4AZBSPe8ZMJ9iibNxnK75PIsEoRmuDlWoN/GfKfcxlskHK92OHB6ZYmvP883 + VEaBTDiUD+cfpncJjgL2N27ewsPJAlE9l8uTLStmrsLaFMfUsECdJH/fpkRJMS783I7a66hZV7lZ + eQSfLh9WYwZAvg8qdFuw2vtpBbI13Nak5PLMg0o5i/LW6ETcdRgT1XVLhyEGApn57nJDNwhrCfE7 + xdA9MBGMUpX1FH7aTTntFbY2VtZtUMDNuc4pc7rBzfEmxnBz1IEON8ef0cUmUabmHCURJMNlquJM + 6dpL26tqbwiWYwUygdsiUC5spBVB7S/xf284H8NgW+tJxPx2pNe00ZkfEhPuV/Az1z7DkATReHcN + 1zPc2bzaWpnqjK492mKrDfyQ0Q6bf5wv003a8QbxLJHeIwnKXctRSvjGzrua8wpw64c/4BS3FX4z + xb0OHIl7zRzb7hbOnrcxRb6WXWjQ1+JhOaK9pDm0qBQFXYS+DiM3D2gfCDJs6A7sUJ+3h64XUJDR + +aXlW+aqCL1upIoIyiVVhJ6SKvL7u7dlVYRFEWqAqufN++Un23adyJ3BH4EdtWewLHZA/+t28vbq + IrJAFCG1pCJZvs22ob2dTS9Wdwz+uPxyzbjvBf5iz9ARtI9XG3TBZLy+3vTTxaUMyuftQU5G+zRI + y19T/iPmUt1kk09nb3MB1fI9n3i/pyXZ3aTr+rvyyQDvfm9LK//Kx8rm6pChZ4U0fCy6t6MSROaY + OF2al4U6eSYFstl7y3bNzyS9boZsRpTLyGb8qUQ2u2LBWQXZzGdBGdkMTqUHXBFOpe9LA8FlBZ7Q + Y9Nnu63HTmSSNRUde+Za2YnEPXregGmVseBFG6YVjLQGEFGCmEHrahXpl2dXb+tAC1AaLcfLaYo8 + C4Az+XYlJK8AdaIP64yK5jTYJRpQ0Z4klplOQpkCPiVyInKwIlxRZKX7ZBMjiRI4QFMcnxMxLwj8 + f02ewC6b0DnJQdLc0BdZ9qThdZ0CcwvFGE72Ogomdui/AhRb3n37qTW18j8ZBM4jHvYuhNs/XN5V + vjRlW1EnUza8bmrKRspVUzY8FaFbVy+q6Tw8ELOczuPZsHNmKMZLpCyy/s+z5At80gMuu8hnfSFj + trLrmsSYzsXqWcRwrir3BvohK9wadneTmTp0HN8PKtFfZ6UIB4UaKp1Nw4pC3wLmX0nQySWXhtCx + Rit6w/A6Enx3dVU7wlEQleUQJ+dK7Soxf9wAzqFc5DmYA6tOFxQTnDsZiu+ZTeVHCoXi7zmWAehz + e8yv+p9Dih6QexAQrxMtShsvKKkEwNHbJF/XD3P5PRjsjZtjm2x5sA50CZrIcx4ykOzk/QbqTSBT + sJ/Lqi34I5wJNsGDUYA/e84o4M9mFAbdW63m9O6xYS1jqSn00joyZEDJV0wFgyN82MvuY/jPA5mr + BWWvppJ3Q6yf+XgjSXVguQjHJjMUHB9RtMewMoPZ56MGxO2Jf4N9u0m/pH+D9/WPP6oDV+Ade6Ey + jCZu9K0hQfF7OZM/+pmjRemNFbTGx3/WOWhNMXgGgkK72bRBkSacmA1uEyWU1kgdl/JJIELLHScy + T6Kj1w1DyznlSmg5Ps1rKlyhPlCKLfdcvxxbPgc5JYpcNmPMw+/X8+i0pBzut/uyiq9XxETI7LXc + QbdV4Janh7jZH7HlgvOdL8n04t3HhTTGkQesnIpLep6scJUhD3a8K9hGyZzjnJP2hXKwZNEsJPDr + 51U47qur30CHV9W4E8ko8WirF7trXdWoEvDNaNkDPonUt4fd6maVCLHhdXzDtpPX54Vb2w5ccmu7 + FBSLqSjEFdYPHA9O1u2C/t59umL8MqB0Yz5W+kJ+KrxT8VX8g99rv8HGXqwycX7546Ju2/SZpDMr + aMxyAifmNxeih7d+BAwe54YPnq9IMvX+NofXSZZRRzzioAgKq21mYRCvPl3R5f09Jsp3yKm+G1IC + z7VtinfKlbli63WxxA41HVvFTVYbn1CH2GZbpNjzgzaXR0c5Z2ZOjTwYMQj8bi5l2cQ0gE10oAWw + 0TNi/ovNkuW+J+BiGZYjE+VZKk+m5/D2BJvw+DUboyitH51/D60psiaHoizCDMQXdBS8exM8UrTX + LyGSD6A2GHTACqiWZbHGnfD1rIj81SuO0YGIDdxvDXyRalEiTZTDWyI+ng6qUQ9G8OdxPUmWEwns + eGbb5nImvW6IG88pV1Dj8Smxmjfvf3UqUmZUqkWDiPGuZYd+MHNBE3QFVsP/rDaL+Q18dbKbC7cn + ByEXoicXUnSb+JtFxshefrXNWLgVIuibdepU5M9Xl6KIOVcyRJI1PxDxbn9fThr0gshpiHmMIpCL + WMVgdXb5WkvyiRvTHkPLt5qMYSrtIZADb97N1GT+WrK7BEM/dpi4nVOdyW5S7FXvIiqPetbQzeTs + 5cWcX/wikS/Pv9DmR13cZ3z6zi5OdBCBfNHyAT6fZrCnYT/LmdfDEPgm4dtiglsx939Htkv5/IMK + bA/O22+JOsT5JctKvirNlPVlMuFKg2uD59KRQ9Yz3a5U3v3dKyGGtsWtBQgtMUVkCWGS1CbZwEgD + B5dW6Nhx72aGGCNxHq5ziizl3yg/Cb+102Aw6z2QZMq4LscnyCKhoJlXdTsSyM24eaWV/xldnD1J + fYdKpmNV1wwtGYoGMsKp5XRJoMzbmIaiyS60UDTx0CizpQZxVaVre07EQk+GovWuV58b6p5McmNY + oLNGvHa93Q2dVTQyRmeVnejorOKpAQ7u2w9v5tfpt+kXuARB29GJYiqZ51Iqme94XpV5F1aEFUIK + vPx4pmTeV2bONBbQsT2f6w85xI/WDxHjNgay//M8nncyp8PUm/94UWkd0h3/VIirTmAVMlCxGsfS + 5jvUfrdcbdmra9yx61aOyiP3f39/CWqEuc5DrxvpPIJySeehp6TzvHx3XkljcxzMuFF9/+4v89D2 + o8CfwZUUSjBPvaTucsWjsr+h2Iy1xzhk8KzgaDk7Ewd/xiE01g9/cIgOrfVcgkkm0+SbyBmKF7s0 + IxgR0un1YHtJfVbIhpkKKqJ3kOGwUqoBopOJ+WySKvZytajm3tV3W9K/XKvJHe95UVgNGCgGh9tk + sVKk5aRBEfMc1tgJ3EWwvx6jE0XbU78kV8ta+igpZHo8XdPohxOujnjyl923EzzNeSyd41rjqI3k + 5S++rT8lip5qW0sDHekHl652rRKNeN0VsSCoSxcSu6O3/PijxU/BLloWOKdYy3fMpm5IdDvz7IhA + +zb71dHuWy9uJwdrCBg7xUICXcAaqI0xWIPoQgdroId0iW93W+bTnXz26aKQfyfav7gsI1OAoTto + M+EtuZQNx5OqITgUJCPciULKJpZHBa+AQEImc/QRZwla02lJE8xgLVLy4F/bAbKY79Bq3Q/x5Vmh + Q15Knq+FYzcn8aOSRnxKeFZnuvssjotZ5QcFIXmm+5GCnSZjYpq25ghyvOuEfMAGNI+EAbVH8Fw/ + TBcY/sBTCseJ+bFCiwxt+gwN/BLmBxRJRPmJ/Qk5zLbsyoEqqUGzWn5wn6BMtKrTEk3TIUNXMN4L + 941zanVyTIsmhmxXdqByXfGsxf508c5hRSG0PH8+3UkIX5U0uqgdR9qgnmR22vg4R6GnJLSeWl43 + K6Jo0yGhlXdRTmjFhwKKZYcIyrCOC7jvps7813m8SPYPazVtfZslhyUPAJnQ/+Sn5JByXhB0/JS8 + jakUILvQpADxsL7SCkJA7LklE9TXaxndK10ol8nCDib3h1uXYiXgohSxEh4tauEZL5Wi7BL5MAiN + ImCOAIxYrPD+5+pS3TdVyDYhR3iw9nI8pcCJ1o+sA4/4jzmwIgD0PXM7OObpdbMAUKJcDgDlT0V1 + 6cuXFSOVxfdpKfwTLQe2NbMRxlXWA4t3y1W6Xm0xSkjk6z/HU4CFmjLU9+XPainazXR1jxoCh6bV + M3zq9feshPm+QQDcdZO1CG4OzJ3jod/L3Bssi0bvluOYnRTTh4+wkWElraRmbppqylhNVRYCz3cj + NiZtxSmvjju3BSHRZXPuSug3Gq20sfamd2x8DWuV7m5B+vmDTiSuuxJVqNektspYWAVkVRAEHnP/ + Nem3rYURJ6UvFoG5rWYImdEzeHMjTHSW1tL5Ei8OKaYF4cTcATNOs30MszLBc5/H8zoWI3NWoBej + KTUyvgz4PFfNMPXLZUwUNwu+XdpTrVkhte7kHnSax0ThrNrim5Fsw5D9XzPcEzXDIUPlR6SVBZtt + w36kGnYiKKFuYYsW0nV/fdZSNnUdxRlnMijc7zBAmF/iHFE+t2Tf7tLD1nTbS3koFAkxnapK0euG + CTF1VaXoqZCHXp47lapSIPNUBSIPLijHn3m+7dhCb/0trxqdFzwFBT7Z/AGjQvX7lf0c9t1twqeN + h6Rdfd5ycJfrb/jH+XLhOfAnMneQk15z533uG0Hgf7xoGmtTLwgRkWeEnL/Og3rpjpJF2jI1VHuL + IWUCSfT6YQqzBYPDMX9OHmhdd7wJLvYSz80yVqWp5cKplpXqkYBshRaT/q4aLM78g/MPraJjcBN0 + E4yE48IisXr6B11CQC3CaJyFOFYMr2bVa8UyN3SbyghqY63po7EeeYl+01ww0FRYFe7zDfv5iljH + Stql8wj4Yrvo+U+h0XwXXdg/f+jchS6tqQCjIBwGbrmPYpoK616OdZDXB9G9mh5jR75j0nqun72y + T6goRmHIL0BP8SA2H1gJeNqXKQhc1DHP9oRzwFw0dH2q0SjyHc32yc8mFRBwdTlJo31RuUdaQmZB + UuBSUJ7unq4f8jVoEDrrbmjfprjDQdicfINhE5O92VVcLOTtYVk4DoJQYBPYruXhxZQqOHD4NfOL + uVAa6lhpjZaHHW7XR+jY8UXHoNjM67O/2wEw29NzbJpLPZguJ1yHsP6dkn9yGqGvZWDDEU27HJCn + a6N7jOIakUUR6BorL7Nwk5H0pFRnIcUbXmcqTXKB0RQNIPfoqf4j4ZtGgtlQmrR6j4/yqRjD7aif + ioAny9V9ssvNUkYrIjUhStk6e291Sdmi1400IUG5pAnRU9KEXv/2ET0MJexLHuahakLOL3OQi0GZ + nWEFbEdoQh+5WzxbLfWIFC7eXO/SeCkc5/wNUXkSJ+e5Xk9Ux/HKDcJC/3h92Nh+Rf/Q2+iyvW03 + yfaYEMD8qKIj1JmDuS3CiFAhwG/qJ6QhNLBZV9LI53JvHXVtxF7oNZbylSQnj7toE76h8swrmMIR + Quj4h+U3SnkGDC4xI7y4flkJTzSXQWywukkbI4psHNKPd6sIBhtRmZMXlzbrEB9OrxsxWEG5xGDp + KTHYi9/Py9hwLPKjEraw+8vc90Lfd2c+bFbLz9M+viQYz7p92B2+8MjRdJp+i9cp+tjx38QiLx4W + 9RBxx6p6KgzCxipYll/maHnPeRBtozkicPx/lVNEC8+LRj9naR/PXl68RRm6CJbT1PagakLRCdyu + DzBLSa0fyLeiCkzc5KLug1ZZina3mRY4LDR/rnsfXYnn07vV7d36QUbccBZJVKewPGw7vT7s4Szd + wM4l5w68KzX65XMu/uHnY4Ayt+3dHe7jTQ6oFu8Qgz0HguPMeo3LQKFkGBswwZ2WM15XlLC2KHOx + PE0dlVtTKo0OlLYiVuYOk++bKjNe8F9oC9B9aTrqyRLxiHGW2HoozXSBfqQGxfp9r3xNK3ICCS+3 + 71wha1SFZKzU0SjPSXQ895R1rLfImxiXW6QO9GqL/BldSjcYXIjJ/VgRYpNSKGv6bbUsFyh5P9+u + tski5Wkh4oXJTbyl+nYR4+HSLHIDfqzfzxHBb5PUW3uOGhpBWmB8uXhHfAVgJIcGiL6WcjIUp5t8 + U0VF4NM9PKxP0nQyKotkGAwiJz2l+e5/VjxLgBTUbZyOyH09SbUPzydD8euzlx3x+P1IWqrXuMP7 + fRITmZv5+ZvXnL9O5ofIVkGqrG45GNSkC0iVFVRBqiyB1y9USxHmXJdRqHIW/YUP8b3jCAharRCj + 6JQXYgyp5m8kQAbiZJde8zDIbLvaNRhDTUsM/QBz5UgxIF6ZhpLB2Tt1oBvZ1lT8yJGVuWxmn1pu + lwDhvI1pbS7ZhVacSzykXfryt9dRpFT3yZOc6YfSHpwyjSxuw4ixUeuB/sj9NxTxoSuJdokvpFQn + uLdhXvi2XHKkMk441swnRnD6T8GGIw+Bm+NRBC9wM4Xd8ChEI2M8CtmJjkchnhrgUZxdzBlcRBwv + cVecBpWBa/3wCtwkDSLEki+mTZG/2lGLKilErs1cgatdh3GF+41HrOcgTj05fy8BzxRKaHAtZTkZ + jk3D7F8NYhAsXeQJiAa3Sykhet0QosGtKSVET8kEd/bpDSZ6ljAa3HKpYfeXn6LAcSI2iwJQJ4Rk + 8irLRDBuHmgAXBgZBaL+xhwIOM/iEnOLwexU3OVmBXMU8/pdhy1n3+mO/MRbJ5yzGf6QZynSLSnB + gKVFCLF618spFu9Z8d4w/muNufOLxeGe2484oDDP8hQozOsdfP3X7aQ6eG7NkjFm3HNFxqSP+x2a + EHmIsfwZJv0eM/mLF3h4ysVu62KoioxsViHb1JTL5SqTZWaeA80DRrYgeXRFw9et9ysZQZPHsMla + u+W0uPM1L+JcO4f5RAFXuXDC3ATmuoxK4TgUNWGaj3uz2mE5NeN03EZ0X4cg3RqmxOzEdybSFjDj + RFqx1ns1AXGGUN7tGbOtRRGeRqrxCHWBnmi6cn23Bg2fYKxFn9h3jl30RJKoa6dkDG+VLxFcmd8J + wRVeN0VwRcpVBFd4KioZvf/vap2AyLcrCK5O5DmuO3Min/mhXiVAQW+Np5fvPr6ZEqyrhMrXriCN + 9b9NviF0a5mjZvzaqeFsGdwIt7dY+jrGKK9shQL9Ll1z5HS4KOBawlHouY4qJGQmw8/KwX8835hK + pVMRpvW3sOJhM4osLnB5GMxc5EaVyGLsW24XrSiRHwRGpHJnGH2F+rGaO6yMRaTjt+Y0J1dFYCuP + Ml9/8+Y4AUU86TzXfJsCnJ6LsvDcXXWNWsAK09v3+3hxdy8SAa9++/DrVKDx5KQnuAUL5FYWEpa1 + zVXFfbIGJrdLepass4lfisXmq/vkgjz9iNwOqkUAB7yM77EkAM1q5zumN9VmeYL5oqhzQ2CnCdtk + fmRrbDM73KcPTbWPGsrSWszTV6VP1N6AEvQjR+kZ3ySPX35nHHfcE/OkhdKkyKyAnTKrm01RNjI1 + KuadaFZF+VSgD93HItf6Ys75FS4afJ+oWfTs4sO7l1MGaxEELDiZ1L50gTTKbyJhNK/Yvu+SeSXw + FA9t7/zFnKsMR0YjI1naG5EaafBtIS7uAdjeNdio27c9bEP56RkY9CCPjxdFtjzK7V9oOrQOJFs9 + Yp4VFqXwqrFfXVS3vorIIGsa2RprTMR9PR+mFI94YSmGWTUdt1Gs2D+fgu2a38sjxc9YNk0IiCoY + d3S4HxAaMloszgjBLp7HhVoOKAWyzTz5hqcGCZWq1c1kku6Oy0ZfkkFIUI/cfzsvs4JQ7bNg/SOG + jjLP922xNvpnLNLDdk3xy3qn9+mXRKolqFiO98VjwYaBFEWHukpoxv+GBRM2ZBOJN/gSHLgsx1rF + n5s/mWtfqEx1vZuMyyt+F9EuykEl/dDpCLBfNDKGlZSd6LiS4ikJdHW7elL7UKOILjEmZbbjQpY5 + IuQwgW3UC3+MigGjhMnbSj3fQXzHtkMvaJmeVsKGAH6ORSHtr97Dtu1gJOSvmxkJiXLZSMifijJP + 5x+r4AkhFhgtGQmZE0YsnDEnCnyRMvRJBX9HhJu8xAewISWgSdNOeLyxsOnl5gvlZeBduy/CWaZE + Sayy6X51e7dXI62n8X56nQo30748GInDmieKrpMvyVpmIr1ZbKpACEZGwCKl3fbdCMs19bUBFgH7 + jufYjl3BEKh8U2s5KjTiOE2J8TZcOWE5CalujaqAT80oDbVEWypS0Om4SNdaeQjdrunpc6TaNJ3I + 8uELJy/iDDYSrNQCI/D+WG23QOXZ9f+8uzhpmbInvCcneApzO2ngeKLCR011h46a8AhVQo510FT1 + vH95kOaS5eRA3abCe673iqs4byhRovq1KxWg81U3HgkeCny7aUP1M8F0oNoc8zRCsdVjrevMjMKn + xzeDygCNtHejhu2qYL9SKLWD6UeqVSh2PErfl4JBsU17f7LrR6GWvmyYutwidDsWk/ZU7y2zTq2w + mz1VNjK1p+adaPZU+VTYU+ONSKCDv+2xQtp8fg205vEaNDhg/8IQ/QzugOwU3QT3p9O/n06v9un6 + j5NJ3qhbG44Cz3wWikBjT8RMDT3izIsI84uPCyhtMOLHjG6L92YA1f5Y7x1iiI/aAztY5brWSBot + X8sTZta2HdVMuyWWZyDlR3TXSLZg526WILRPraijm0U0MnazyE50N4t4Kgphr7cS0na5YO5cAIoX + cX0C1Q5pHn1jeg7Ufn4N/5kgXe5lcTw6+wMxjxoDykJGFdVWGJZG0Msw5ctuyMs5tYiq0lxTvR4g + st2D5o1xGY9OqV08dMnpmMPWFJINSJyqVa5EulpKoDep46P84RXRoxr0oeTbai/Wqolqc4aupUUJ + awk5XThT6BPgpR7qkW1BXlkjVO4COjhcHzCAFRQmta54l9vLd8hzOHAZHSbr4tarB7iVZdQQ/C7C + QFe3oIYJ4etoIoGD2f21xxYuWzgvm3234+YwIRfidYbTh8u8uEsWn7fpqk4Xa4RyFxnAG846Kp+O + e7o2wAX67HttjVDTnoT+2vrzrXvpP7MWfcj4EsvTt8XQuOt0aRqJElLxAQzo4wuJ0XXmWY+246id + 36+Wf6THEFR4PE1Adl1xsusu36657gMIHknI18OX9g+7lCcxj0E79DWOrJJcbe5W16t25bKFR48T + HMScsO7bf85ApYQ/9ne7JN2MMxkjetGCSNkLvcYkJVxHwBjD37rAGOPrhjDGnHIFxhifkkR7eXXu + VAzxnlVFMWaI+m6zGcYdOYGI1/0fjOpaAA/Ca0muIlm6L7OFU7F0Q291mLwMgWuaAFyZ4/i+xPcf + AsobMdcOKug0vUJn1SE1WKAboWoDtzWC1oB0qyG1ZNb2ms3a1NHkXE6pDNbliyREDLRS3qfLZK2k + Jj2fJnlOEHIIvZ6AGlZLaJZoJt+uYVQP3BKtf8tudS3yluT2Ias4t1nDYPg0fo3X659FTqu0mtah + 5eCes7YT3NM5Lm3A+uHSGiouj6On+To4Vq+8nz+LIX9wB82T6PPbBX0AyTrdCPW2s1+g1nHsEe3i + nPTHgXUcm2JN9Eko5xOINIMr+NC4zmnQfFnDRePWpKrUnnGTr3c9lzTXNveL6TJ5LLBr9NCOiM4/ + BmiW31t8iyn32lHhdAS3Qz0Fo6z0x3A0jCQNCogw/bgfDQuqLZkxDghUGxmjyR4pLAnOb47d9CI6 + ZXY37CbexBi7iTrQsZv4MxF9cXl2caFl4tMTuf1lQu6nXWY7lYx9QZ2jNwW+aXDSsbDrzvn+RlQ5 + g391WeT4f0lg766Tucj8ai2Z3SGealhH7fyJkY1/MMGnC+Q9JsTIEVqGgeJHIrOF+WqVzYkS3GVf + 093nznS64zg4yNLwTf3Edt+7E8mWPOmhCc+jU6sLpJxsYuqdER1ovhl6JnB15p8edvM9yHXP4C8n + 02USLwiJUGVBxVsNLyhdAY9ybI8KcvouZYgoUTT9jzzi1fFleKnCbxkk/T16ByMf/TEdsN8dlm48 + a1EY1hNSY645TMT0Ot0sh6z7CH21l4NwCYVO7Cs8QOXDNEJ0al7R12adC/pSE2OcIlYt50vPyDgG + 4xNSz+dkzUtjbZM4d2NMLuNsenuINzALSoJK8g2j/G8TKVJfIhGVxyBVLgEFvkXO3sCVLgmqNQAz + zpPZc2nm5lDv5Why8NiifgT5mYhtSSRLoUd276xFwfQ9Yji6Dofzk2fl1ozEWLEblZH0DhrnQxHR + 68eXXT0Ix5WyfnQ7KBBBHkvhuqdWFwVCNjGOo6AO9CgK/kxW+67qnZNaZbR8MQvKGCcRejyzAS5o + nwIa6uMvO9t6/nLAMJ0Dl8YDSPmO4ZXGlg9X2yzVnTGmUWQcI8RoJgRZMtP1AnMQNXrd0NfEKVd8 + TfiUrtNPv36olhD3fa/sa/oJ/hMFAWZ9BJEXusLwkNxvEX3rsEumhXnoV7VCMNwzH4TVPT8u3Bn1 + Kb2vlvMuHOil+pONJVtc4AJW1FB/soMrSqPzCLUbwyi0Xd+qKYldrXPtNyY+YLWFyCpXTpTQX6aV + tP0o6tNDqpZRqC1VA5SZ041yUbNtUy5jVqr02JTQUj+zLfUDNd8fLPoRupNXThWERPjl7uBwzwUA + 0gJmJns+veO4gBKuiCOnUQYu8QNsJfcmLtF9XKSMVLJEFmmetJJN8KjmLrTQ55khZtUSj7PhP4lj + ikIndoPQ6HxXD8DQnEQ9ATO+B4AQHAB92JXzYrbSQ027EY2jjSOY6kScEamCVL/a8o8ftNkYXun4 + rLrl+Tiy1R/mzmWPWTZX1ji76GcI/nPKwt0C5zrjMhloeb1QcHPrzijlDf2QEMxQsFfNg8NC9SOp + XrqvmXXKOobqy0amKmbeiaZkyqckLnKpW6AGSoPNHzfzt+8+5Wzt7WrPKkpmThvtvz5zJpP+BtCu + ytfT0hiYRYt6fm67L3BSulR3KBqZLarSibKoxVNaVFABbFdg5E/Of714926+SLlDS3i4prlUPn3F + 31WXl7eGdXUikEB+mO+xJsfgO/kamSdD1Yc5R8d1K1qMkFzpu/sCHj2tWgJAK2qm1fsbR3BAPgFg + p6n0RoqsBnXbFxtIHujuu116J1meVsp8dOn5HfPHRCNju6fsRLd8iqfEv9R8cC5+SUk9u5+hEQsR + 2ovjNGmBFv5te8MmB/wPTxuzA/IksLC4puLdXCpE19Cl1l+uGdR0O10mi7iPA0du1EcdxRD8tyfr + bhyxUOBgo+sgXGvjGXYdujkNaA7CUKvetk+lxOB4LuaAkUmgKKULR241PGViNEHSJtPze9thHdIc + +OtmpmeiXDY986dken5x+aqMN8SiCJexlObggEQXzlzbdr28Tg1CkWewtb8kuJe3vFbEF2FAm+eX + H1nmpMX5xS6pAv3UXpqleuGsGa/bjwKvAvtzn8LMo9iZP5seNp836Vfd9uh5nmaO/viyZMNEUYWz + q7L9Nmy232IiSGQ5/5r8T1XZUjHcb/LpKs/Wc9i067U0VSTfeE5Shqwj3dyuH2BvxbeoQaOEHy8O + 6VqkBshSJrinYTKvd8lNsoadOT3DeijL3eF2+vVutbhDsByaDITWublBpqsL67nEMcE9kts8nWiM + quN89qQgKGfX1FAzWFyfPAlxLxfHKNnp4r3NAnMuQK8bcQFBucQF6KngAh+uKg4omGQ92ckNEXUs + Ah1nxmDUyCOQD7yB61ByvwLBR0l8UYzE6c3U8a54SR1uP473cANiqYAzayb5w31W9UgV4kbJI9UE + 4IVJWa7tBvUeqU6+rVZKHXxbGp2CTb1RbludL9leg0+EYZpy4JaBvmhmV/e4+IXBX51+PQXK95qG + SvQruVYli3+JWnN+We1oRX4TL71NyTsKPbhmvCOji/6lVGAqaqaJ9YWjcnRfFvhqsC1d60pJuRKx + 2sRSq3sY3UfN+/gMS09BuzP7eR6wk1Eo0eVizbYz7p1SJD9gHZ+yHdtO8BhKRuszJ5x08bfU5aPA + NFJjOdmKL7KbxIMLolEyy7n6ceHR3zMV/PuX7MlNBT5pC5HFd2O+Ot9PrxquNSCn4+YbnUKz10De + myL34+ziBTtDjKqoixkjb2Roxig6Uc0Y+VMBSVtAcMxhqtPFSsO40evstr56liW6CR6GwU0ajhPY + AgmHnE0ynVJiASgZfaYCFcLMWHIHS9wL48ZMxDgqXzQF9olj6YF4E0i5TKFG9pJudMYCXXGw/inX + RtNdBttitS6KvEmUZ9NBjYUv4jHBjcv4D81MuUyJ76CIKv/ApYh2AF5JWJl14QfmMbGoaZhlgA4H + xgh8/dOKERkSID+e6hXvSgTWyansQq6mfAZWtjfkzv1hOkKLBZUj1cRcTePHmScD3Ry/U6AbvG4a + 6IaUq4Fu8JT0jIuL/7GrgW6Yg1sJdHPc0AJFw3H8yBXQYlcV8Isa+I7/mYFqmyLjQUntYvsHahOq + eblUhQQuo4zXPVCq2JKGTFoxSIfZPTFY+M7VmrDuiyCHLVbBJQBaEvvu4nW6hz2/owJaXKmBYdhV + pUZo2sWzWgNFCAy/zkBRqBB5KLkROIgWKhfYTaFyQeCHaOHQpfYsXcoaEXcgZ6QwJ1W7SKhHn+lA + DpLu5E+4mhPcv0X0l+uKssr8kOeGk4Y56nDndA9pqTcwDEb8OQbQkxe6Md9+rZKdQppf3nlVkppY + rkeAwkEQfnJb79LNgPToMbK+R7OCOxZzPZpMkAthOpMfGEEh6YSWUJlSEUrez37u54EYb8NTy+kW + hsGbGAdhUAd6CAZ/RnfT8gCq9SGbyD+VNhhXwSJQ7Ce5xY8nnfz+9j1wEfObmF43uokF5dJNTE/p + Jn579api8WNBqIecuxbcxJbtW/4MA4d9EXD+Ns6mVw/32316z20nPOZ2+mr6ZZtJOZOuvbegs1Su + vbxEvG6A88Mme48N58l3oqZbr954xhrNRxq5cqTynIzpaP6Od7fJvmLn8u1yaPVMxWSSxMt1PsVH + w5n55zazg+2cT02eaazbpUShIGiqxJaii1jal8VgESJ/n5LZfn0A/gnkRXRAJoqCws/5Fy3RUL2M + KQQYlvArXifw5w0vyEqYhLxXijjIOxE2sPv8HpJ9yfFkE9xNRV3RiO5F39ZiZYsJzQfVBfjnKYIh + jBU35HoO3Xc8/jw/IMo8dQjrnYjjxDU7ScrQjnWsVetkWCKJPm/e37UywDPjSGz3V1fnl5/mVnM2 + fxNsvvHt/Ui1qh0WymvN85yu1xo1Mb3WRAfatUbPiNWfnZ2JqEKBNzOpPJleJN90U9UWHvBbz0Xk + A27TEcck2aXfVnxvtAeZG0dLdKY8JEqm/sxQWIkygP5fY0LsiYbXDIrgHq0ur4Ep2nwxhhq2zQu4 + Gcepjh7QIjlOHqZuv3ZOWTe8EmpiGg0oOtBiAekZcRxS66pWAQGNrPIZuC13IA4e1lwb3AiUafHi + ++xzXrQXOFoAnAJawEMqJSGM6OOkXFEow/3QjCgN8lXJQPjBMNzGlnKsDUlKXQnTWIW+VI03re6G + 79ZRrQD15H2Wo3Jv1w80U85RHPJj1DTXS8VSM5R8RAa3DijqBilIw6MfHar5Wkqel7hvgz6a+QLd + fSCVwC3Y3Q2Nr9+NYVtFDZIzu+uVIdqYVyChLkoFSPhD3fxy97BNqcROAZyrkfBCy46YrxhjbB4N + //u7S8uxzcOv6HUjY4ygXDLG0FMyxrw8e1/Bmob/Oboxhv0yd0HjtIMZ/OEzYYz5bZeslunt+mGR + cu0xNxdiRd7Nl2S3z6aH0jugWMI/0m8P/F+o38MbMTJKXiXvbrXDGnvJltfoW6+xDg4WtCrsB1rZ + veLqBbqw06n4sAxl3+OFk79LdqGX8boKgd0U92k1xX0Gge/IjHMFK6BpPhrBAsKmMCu1g6JGYz4f + RYpCKZnd8xsoOhGKItG/Jn+qRZvg9pTWHeYGBBsNX4kcozodfXOrDSkaJFczAvXdIp4T3Ii49miv + 7o3xNkbl+b5WDZFsy0VDg63d8SbtRPjozA93WUiWLApcvbhg0Rljp1bQCeysaGWId6Z0o0KeFY/z + iHcRZZgcPgONVFRy45dMw83z4sLl9fNsKjxtMWtI3uyPxQztZFyQS+nI29WOzF0d9Lrp7YqUq7cr + PM1v10rQAfzPKt+uP7nMCi0XblcGopywfwlmtNB5s+BRgi1zPiwYsnaOBG/OEqyp80g3KvYL4uph + QTk9QDzd3sXoMEAHNmlPInUMx1PbeXEtP2KUQqxMZcNdbDmNlSVAZrODcjRC57tYzdEQFCf/GUuM + l7hdXOJ+2PsSb/TQjHntTsR2UEc3LBvuKXjkJU90yf17yRzPXOOg183cv0S57P7lT4kn/n7+j6r7 + N7KDsvt3Dsfaj7yZw9OGRZCrkGDm1+lhg/C5maJ0v8OYl3Sd3gqe8vvic70LuJr9rfuDS0FETfVq + FKpl+UyjF5bq6BT0QsuB41BxL5c/q55j+SGruINVFcWOqjVrcu/jfbrb3tVig1mRZZdiqIo8EhaF + llchqli4dErM6kbJON/tKCUDU6bWgVuKAaifzMlFvMaY5wdRP1Rf9YZNKYLInk8zOGkJFstZwmvI + x+SKiwwN2K/2dsqhnZTFmclyPWgtxS8ScbYzOVuEvHRzs1pAl7fP8XX8DHSeK0WB8kTEFO6Ydbzd + Igvi3e7vYh4rwLuf4OnMeTWwjInYElz6Qq+9vnM6mE7NIr1b2j+WmXoQ4eagAYMkw5aPjQJZzkUU + pOc6+GGRollvv7o/1Fpp6x3yfVM8RkHwMNVgBzV+LPX3L2vlrq2n+Li281Hq0YzgGX1q1mwvLyPz + NjhlrFsZGd7EuIwMdaCXkeHPpHS1v3tYq5+kZQEhWH0+6e3vKr2hy9NyuMvTQSgMLlZzUlpSw8Cg + jP8Eu4bCFd1iFm9gBuozgYwmLWR091XXsy/CcuDxKbmaxyBLpdnDGkmvOAdRHGZd+utQa2HwqRSk + PJArvZpJHpwJY/O44d///p51ib+l140UMEG5pIDRU1LAPrx6XTVKOV4p497+5SfbYTYLZ7ZDADaU + ZZgLEfB1agU/iqV+M1+vPheRE6SIfUhuqsYdXRwpZcRHDbaYwA2d0GNlhUktAVMdU636BFqlb9JJ + rlEofehfrusRzD1CdfLhyBSqwQNNnU5wDaWY7vgiXdukIE5bEFp/MdGo6eNLWbio5Rlo2Q8diUck + erw5FlL1XaSgurTlDkIHZQG8ugTuYs6F6HUjLiQol7gQPSUu9PFTlQtZIa6fmo8X/PITKN/Ajmbw + hxsJQeWjyIJNNl9gebc5v5lNS6AHb15eCK38TbZlW27O5D/kEeYiSF7m1W6xyjyoWkXQMzXk0e4q + dPfXO/iu6WqPYDaaog1iwEOCp7gdIZkzxo/7GsaYp/jWGpN8pym7IAwsmCGnzBsvzz625iuEntNY + 5tkKw8i2yqbvEbDgtbFWEiHkHK/uqzR9q8mqLmlO/vS7Y4JnI89pCKlYMn65yjjE5PCuG4XXR0tp + GBEEfAxIpbHgr738o9T9Y3oJ9lIFJuIM4uuXsFfE9dIneN+mciIXl3Bw/2t+Zo7nJBqYITpJ6mVM + J/FclLC/+Bho3N1xXAe4iVeGdfopcF0WsBn84YQi8v8dagirmxX5nICV3cLnCts+1Su//DS/OL+U + dv7tDrr+Oo8fz4E4FqDb9Qq/AZdPPqulg8aYEh2MGuMMwQ69yFJCyPLw6cj2O0Yr5G1Mg+FkF1ow + nHgoguEeNgKJ/Q6LWccl5JGan1+uF/Zkif9BhBHPsUTaRgWFYI7DWA6vxNiH9pHqAawMQiLo1aJ0 + VNAvHVjUqKprDv7exywS+RhWDVG9XblMxHbpXxS1IE6mzVYwjiPfFHhlCgp2TuMQ29OjbbJvH/vO + xovDCcR3pUMUG5H6o37aMYLGM9+HeJvm4lhkP7m0og64pfS6mf2EKJftJ/wp3W1/v/pYcWDbnmeV + 7SdzL3KjwJt5UWh7ArHwAwj1IP8JufLicCMT2rA048ezMmpcVpFZMdMjA9FkkQozrPA9VnGcsufc + 16cGfhy2/O/oG5zCWthzkL24WLaXsR6L+IA/rzaLXcLZTxnUE2S3+wcUPmA46+Wcy3F4zUqM1b9n + mxoMxdHu4UsFQlk359hNNiPG0Jbn2OXKW2Wo72WCBkvh6FMslXpQTxg2OaJlN5O/7hpPcOvnZqfQ + E+G4lH7XBVm8aa4b8MXrapCOjdA9WoXFwM5TMXpTIHNaK4naO/T7ZEK2qCAOk94s3/VPmdutUrBo + Y+rPkl1oDi3xkFh1uluIaMp0t7rlmD2L9BaTzdLiun0m02S8k0nLa/KtX4HmBAlz1xazCOXft32u + USPG+y7ZrmVBsY56tUAxL1NR8uNaRUlDAu2lOX+UL833hIEjmedD/5LUSkU1CPI+uZ3Uj75Jd5+P + NvPVsghTsf7AqVVCdduhdUZGZk50qstrKsbaESOg1n9uVqv1O6Ylt4qAErqeRV4HMDn+uiF0Padc + ga7Hp8RXrl6dO9WyqZblV9HkrMBGMDlgFI5VLThStXnR59cG3OQVWUjUukoWTlXW4hWYlNJLsSbB + OBaztVA6DdvZ9uwwcstClyLfCztIQxC1x6KwyZTMAobWipIQVl9mpgTp1pgkJceroDGXoMYKefPZ + FuSgEymU0STxyeF5yCAJAVN4mG7j/d1XOC0SygZFs/zEc9kMJp1hApkGm/PqEmSY3QrXtFosJ8ev + mfBdU6DZe+5I5a46Fqo6nkzzJGtSPfVaUEPBY/BkYpOaA2yyaA5zi/BK+U2NBZuaZxnOML7eeuiN + JMJRxUonB4lwX2BeVEeYCNHIGChCdqJDRYinxMW3D7sVcCGMi/Pm+R1fCoSSKBAsctwwYicTtdXf + Gpvpg0Ax0/MFaIQtvEAFHdNsB2OTTci8HGivd+Lio8iPY9aK6mA77Ahs44QkJqHeu+bx2b2L1dNC + aNtkuE3ODVzL0zfRXN2MSYHxUu6wXU6Uh5VyTH69ZH6HoiL0upF8JiiX5DN6Kt1PV3Z4VhbQ4MOZ + bqQLfpn7oDNb7sx3I8sSQU4XFelBiA3ZfbxeT5+51tVJtWLD8+kGNIj1w3TF3VcLKsxyuc1gJFsB + 6FquvQC6yBRGqhDTI6d46xq/Fm1FhJLlI6qMBXTaZJMdpq94smh8UkpIcZtKqUeeF6EPq1kCxETU + /Wp/ELOSo/7rxjinqX6I1kElW+N6lRaVMUpxVRWw4Mnoy/Si8zJNaKNJmc7zI4cisSxSRsvF3xs5 + W2vaQ3tYV40RYFgg2Biu9MEeJArkbC4q0dbctn07UFh2yzkxuZccy6MbAJsTa1T1i64eGwoyMDhS + RnfmEHqtSrYnmLjDrC5MHF83ZOKccoWJ41MRIfbrhRdWeDhPCSnx8DDyQ9uahVHoeJ7Ow3VlW9TM + KZCyZlMWXtE5zTkPoW9nm1R7+ryJz8itJIjiTIttMSvqnbVUpcJR5YMQcWHp1gsrXJ+6k5aq5s2o + qfvokWhQny0/skBnqCQzKv1w8FajnvDI203KPwitoWNV8hzHiqoYVn2qcUrU60lZL9tSqi9pcw0i + hNEM5IQ5ift0ubqRNj3N2cT0764b6OTPuc8n/Gzn12boUJ6h6+Y5c2L7cfEZN/yX+JZnmL/7dMXw + Ss4SXmoZNLOr3+hjOUvzTuVn4re9134DZrRYZYLh8cfKZnkm6cwKGrOcwEmVeTbWs3Ep06vxIzCR + D257Pvj7GFg2VwXhdZwk/WtGHFRoHZtZGMSrT1d8zb/LRA2pLmbeuN125hNscLa5/HhxLLLSyEY+ + QtkzI/X5EUqQjSbm5PT6FAgrrFk2uTLTb9Pzn18Sm7ow8770pdFixXJsiyRSzgvnNbzwmFmABcCz + 5WZr8eu2WcF86VyN3ODUcjv5VqmJqWtVdKB5VukZiVcchURuD9Vy9fLdxdXvIuBBpYRGLNsRFdFF + mgYIqv8+NNULG8sOPEJec+thiyLa5VQh5bC7iRddq7A6lI3x4RKOoLmsTa8bydqCcknWpqfCoXX+ + X2g91mVtKrugytoeyNpBZPn2LAwt25HFkYDHIE88xyn4L5QVdCvG1eIrs2qDgqZfuaZOxorXh83t + SjdVRAiTU5/uEAVuCFNXkV6712ttAvUYESqkkHkph79kWVNhB73IbkpM0z65gN9QThF3UeU6+80h + q8iUgduEpCGpT87zhZHLyMnqJhH8jhgzqEFgvIeThYkN03i6w4oBVGg6H9TyIAByeQUGimqFxxW5 + gGMN7TMVJPj6YXq1T5i9nfANKgVGN7KZYCRBmZHUTkEXe4sXUaTnIt5dp4i3wwW1nrZwSTSwxEjz + ue2BFT+qgd6jiKfkm2rlganvPhzPp/jn4ttGNxY9EjgFshd8k1IMikC3hq94NEO/6xF8bxXdaSae + PfBaiL/O+b2bPaxJSTtslh034milnYAQOQrrxswD2W/xkOfjBZGy61ixyFIk5pczgz6Zjk5Edqz3 + oAJ1sGPx183sWES5bMfiT+lufXP1Vs90dALHtzmSdMmOZbuWbdkz22UOKia84JGK7fjr5WuZ85Ku + oYNF5VJdr7aIWhPv9tzvq5v9GWu6rFzPt63Ie8JpL5bnWiHBV4ZUiKD0qWY8w7Bt6863PSJyn25S + ns4H6sBuh4cRmhPlbJ/uUK2urz36iFEE2JwJ6z0i8HHnRlfgG3F0XEtCFXgdxFJ63RSqwKuKpfSU + js7rFxe2X8UqKMVZYaw9syPbcmZwcDxfiKWv0SKeZsncnvnz61Wm1KqY6YYqCawkL1S8gvgxe329 + tf0m91vpdOkB6GisK50mfy6ik274wOb2vIxBoznRwsApyYGzj4ojDVRS162IlzcN35xM7fnxkpyO + U4aUyzkETLtfSdjl87ZJanHkfCuqWC8nQ5ZkwjdDAXoQUVos/B+/wgXlwZIaEHQ0gpWZHKEHLnqV + P7EH8OVgSXDcQNWx5CHc+9jk+Il5RLpmMbF4ZtTtYnzwOkqIo3XTtJVGCO4dCaPUZaJYtGP75vcO + vW5YLJpTrhSLxqcSo/RNNbzXc5xyeO+coWfHsmbwpxth8fE2mW25gx6qMttfKUu53h2VgiRyf49p + kqhcLZN4f/dcbsTsLv2KOj/cH3tePAcEluK1qQo+fL9Kl7ARNjzCSQ9PwISd3Is2+f3qoqiVHDgU + ZxsJQKdtum2AYzwGeXCs/ejoi/1hdZ6ONJkb4yO6ZXQEqb6iqS2jE+wO9eTpddPoBLtaT56eChSt + 33+t4Ne4HChVV+p+imwvYP4scizXlVmgD6m95SYzzNJbAE/HuZC2sy163Vd/wEQs0Qu3uj5QuseN + NnenElwLaZVZigDY4zdXo3UVBhTaTRqh5Xu2LUGwaihvW+kGjRV1NboK68L04BxlrZQgrDvF3aYS + J3BAncArpxjEW86Grw/L6e0u/QosRSUXMFYF/lURcNThdscpNqOG9eBBwr27Fz53zv5oF8DXi3nW + 9rhuJbfs2rL3Bl2vshTOGMxQy/xE3b9I51irzV0CX8KZe+n+YA1L2UBXlqRtpsi6UmzOTNBqAbHI + NpmGya94Od1M91/TKReu/jm9f4BtsqEtnU2fxQhHRkZq4CDuiXZT8sMlcB+KgeCOiHe3aVbKOsHQ + DIVXJOvVl2T3oCe0FIks+LaYvxkV+6VcEeCzuO8QZzov/SlCQ7AJLiVK8tkWbuI1cFRge0XchsfD + HXHeqxeVukhd7O+4iNigbrE70QGdlduHy8er9EmYRwe/dMZ3Hpa2E1iE78zPOpaT6wpIETCKMc1v + 0Hi5pAzFGIQqLOOA+6YNalvJGt/Ge5g/hTZZ9IEpcD2AD7LKSI0nKwptfvcfNiCl3WO2Occz5GQ7 + 0vqhuUnNu60XuYZPdOBkWQothQRxj2PAr40L68LkUWH0ospv6/FqGGFnOi2RFW7oEJYYsaM+w/GY + wHQmvWGF4lpHAEpHiLmL1RaZQeFAxO3OT5ORyG45FEKjOpQkH+sIfR5RBJA2kP1qO3brds9cRMHF + GplNsvhsPArT5u1H1fVIEaKrtGc0Egi7XH9TRGPzkwPqi0sGGHHq0kMmSJlMBTQPVfZg1AjT3si6 + R55z4Hj/TujoHN0IEyEq07XcIlubbevxAFrHwStS4LJ+ANaFQoRCf+L1fbrktaA7JuObtz/yNQNt + d53hrtXPkTq5I8x2IAx3SMvnrxua7TjlitkOn+ZpX6xSzdTikBiltHwvxIDsmReyILSOWe2gg69D + 8Kv/XI5W2w1sguAj7k33V9nG9qStX7mZyJUBk1i+vmvEpGhjGjIpu9BiJsVDtb4CypBAKuZm8hsq + 5Qafc1jsy1nAXd9XR2F7ThSGLiUNM18tj6ZxcZFwt+/vzRLBxnAs5jxkapPHpgz2lA11b+X6ByMR + U60PZ/bpxlnCkRNxXn7Dh8nxo1CF5rAQhGMzfK5dX0DkKJ2M+xlwIzG+VUCqX0rsG9xqXVMI/1Mq + cRxpZITROV4YmRsKk0AT31gm/F+gx3Le8fHs5U8nY6A8jt5z+1oNgTkDXhgxucXTgpH29FWK6j3n + 547ln1peF7yzvI3ZDVN0odww+UMSgFabTAS/vPt49e7NdJnex6vNRP1HnrqM7/Jrwgkcfk2AkM+5 + i1pyDEsLf1vF+Nig+nVENpAMJOUUHXigpgkeQhRn8icR4osWSmF/nJZQEYvUJNOu6YpLRWlTJYgY + DaLG3cKs3yZ7bulRsp7InlkYahu/0Gi0ju2JVJBtskCJqtQT33U8sSldw6bgZWzevcMhgt6U7Nr7 + eIIpEuZoOwYYZE8PuWdML6kdERL81eWrFxfzq/MzLV2pZdUlP6LyQm8ubc81V8LodSMlTFAuKWH0 + lHjQq4+/Vuu7lqNdnQih0VBsYjOGGfuukJFfbSh05N1M3Id/wMDREXGz2mV7nIz7dJMXO6ZiyA8Z + L7OwLMejaVWPeXIqQaPyI1xXWJE0PhhCDYTtaGklEqLsYXf4IiveU9BOXVo1WrwbevDt0A6dClhH + M/2GOrKO+6/6oD+tg95Bf+XW+YqVGlbcuhNlL8Qtn8ULmOqbhUppZ4L7y9AoXjubEm9h0cUz0FbX + OVGRqlLaVkgR9joQxD+FDSh/ddCWm+BpyWMa3dCfiFnE416eaXNzJZ9PIpF/SUe1zoBAk//CDkNR + u1S9g6UdnFJyZjy+DtgY1hO/hSEcN2cKE9Xx82Nm0+xPrnXiMC6X62g1LgBTw0e/dJiBClB3U41A + fybJP77FTQp3cPdUjVyLEBqgAQf7foSb4yXHKOsuFMj1Q/+vc/0wyK0k6x7TL0UHykJ9f+mErnnY + Jb1uJDoIyiXRgZ6S6PDuH+8q5lvHZaVof/eXeQj/89gsjOzIEubbK5GSTSDrJdFZFIEDiakKWRFP + 71bZHqMKQbjaazUpn2tCP2pPe/g/nFlFGyapD5dNwGWILqDx55WTQ69neCkB2VKoIzb4x+l0jWsP + dxcoW5vpHw/36SLPnn0HVCriyMuPZ3M6ijC2yvfOpnfpGm42IJTocSxe1JgDxOzItyVCq9KVrptU + y+nVSS2YHNzYD0ZJVcFgLkCfgpU61lttzqwfuWUZRgvPaeiycd0bJCXXasTSYaB/wuyW8V20C7BG + yRMfnWt2Ok6NVw4mq3zQRNn1r1r2uBY3pAHOQMOv6TWqFDnoH68NMN3Drnqe7/msccfn3T6XJZrw + 6d3hPt5M3/3j7GKmnABMJeZD4iUICCUAIx+XDxlKApv0fhVPn71+eTJBTpBn+zoBiUWOV4Tc5PPY + UazhAFFl0USjOKPDldck6NxBcKQDE/3eMAjJpeSXfQVHyJzEsDimkYq3PUVz8SMIWY7jCbDm/Kwq + jNoMWV7e1qFQ9Flgm9/W9Lqhos8pVxR9fCqSJN5d1Cj6jJUV/Xno2qEbzkLX8SKh5stgH2Ewya0l + Yhs95yJMJi9Ipd4iB47Ppr9v96JgI/zNgb8KZ+1qW1Xdqa94ywGjDllJgdcVVg1gwga5sXof1tXl + 5BYkEzrju3z7R7CWBzh517Qc1bhTBdUI74AC/5zQqyso6NnzXPwVRW5+X93IFUwzXLR1CkLyimvw + tOp83Shw9dUlRaRq2NjZBHdgoTxbPwhP/enHLY5OsCkuMLRDLXJRwG9QtdXSMTxKVETmcQWJGvcz + qj4J5PgGG/votmzO0YoZa5nuP4lFHHaAWz6P1SILJvMNpCj9Ux3VsY1VtneMgWbvEibFP953qr5N + rxvd3YJy6e6mpyJ76fKTW8mrhwta17SdX35ybRBZvJlrg+rYAq3Ka1WBdrDBcmScVedwbzB1MLvr + h1mVwysAdZTLtNu79fWw+Usly3vThasHWZUplemUzd/fL1irVIGuBHhtNV3XzHID0HjDOizRZsjT + Jhs/szGv1K0gk+ZIyWt0iObgn8q9r3Tg2nZQLvWtK+Be6PjMrc8PHbh3JriXpRTA3MieWB3wIVtU + KzKq1VawM78Rh+NB9qKEpz75mlBhUqF/w2LG8B9hyxc0iSMaLLfRdT1SGe4foA32Asz0yfatgFvO + ShMIPy0OuyytmYQ6rc6zZJ0TFr30TrG2XIcyJ6KNaZUT2YVW5EQ8JE7vzuP71Sa9PuwfuNeM/0u1 + kz17c/ZCoMPib/DoRItIHExAHSfsf2BUIqRRVEy/XcMuvDdE5aiFAHNdLu7fxvf3sTJaGV83OPTQ + JaNVE30D1lIzbBYFBEcKe4wHVU0P+9W6EU3OrFS0mQPoT1A3xQl9fi7Lu0/dZh0zIAaSbI9ydUk9 + GYEW88W+qDVmdxW8qZQkVolZpt/y4mr42V3SHPoRavNUeQQQcvGehaG5/EyvG8nPgnJJfqanJD9f + /HrlleVnz8IK5qr8HP7yE0aBWN4MdGwfEz559r+GgPDx7OXbKcHPzKSDcoeVceFb8Lfn03idpTW/ + PPvphBTrdfoV5CYZSwYLXZMnrIYeiNjeLwmeX85xuPB9kWZeW5YD2oViPmm6HO41JjvYgR2EfsXt + onxxraPFBaHEN6KZi6tA8uJtS/mYwG10e9UTbJ0vjXQUlBPkJenAC0EPDv81eWoLPsHdKyVmn8Hh + EHOExxCn0jCqvBaYPQpE7EfbhjOVwkdBOv2hCCz8gJRoFCfJcBRdKLQkuY6VxBd5cqf8VDnHHSdn + OOiUSP0dNI4Rr03OvMTsVLmcyXp3pNB6Udoy/8l5EZ5aHatxizam+U+yCy3/STykiy832yW7SW5x + Ux+qZEDat+wgmgibPt8mWbqUEUa9/ZUSex4E51yA607H86zQy3dM9WM68ac/abD2n8qczGfaZsWa + 0ZbryzA8JhzB6jaq29N9T65MpmVhB+xVet0wmZZTriTT4lMScc8+nVcx8JyIVTDwQgek22AWOrbr + H0XAA/pVBLy/bi6tF1FuzQ9OhPVciYLt2efzsy442LyBKRI2Ua9iYfPntK1evrys4qZ5tlUFw3aY + 54cz+CNAdHSuOR3W+5WQIXMBU3hiZqXIa37uuB8ToQOnX2IcMI9Y+gZCJiwuNzDcIvQRtzknmy8r + mD5MpogRnZ8cOHILCMk1kcrSy+WuirrWPUegyVMhA4abK2NgmPEPOhiqaF+rEXmNoRBu4LgBA43o + xy/kBDdiAS7OqHBnRNa6mk801H7M2zcL6t85gjxnEp5wSzI7Mr9z6HVDtySnXHFL4tMcVLESAAwK + ulV2S85ZhNGAM5vHtBJzUKDXFvDR2fydAIzJSrElAgEm3dH1tI33izsMUFkmIpkPqPCBYCHY9Wq/ + x3yrmxucL/iR8Kpm0+vDHuk7+B9vukx5BZycBA9wzKYZZo3gY2zN4x8F3BVuVDEONI9+zrvWqoJI + gMdq/G/dN7QjMurXaBOE3/dAZGyogYJTUu9e5NVTGr2hQxEaj1H61kAo7EiIQ/XlkGo6yKLdiLte + T0uzrmT3BGdXa5yyjhGuQBaOeWyS73BsSqcGEQrz0GHmM3IHh+SpUxbzZ6O0YtguUhnq1jAKKhdB + aaGM6ByvG2RAg5H2dL2iLVjFNsv4XWRK0JOJ4rVMSOyZBk9UDYLexOzGOoLeQMAY2q7oqGOOAzKm + QlOVZqZ1brsAdh1f8v8F7GoA7PrhGPeSUGBRpITYbn3CyDzK9X773uqCk0+vG8lrgnJJXqOnAnDr + 3QdmVYPAA1+3ErjWL3MPn8/QqOe02wju1tZfHSU/tw/A5PGiRk/BQCZ3FaUB/v2SddlV9LpZ1R+i + XK76w5/SrvrnxVVQKUZpe+XC7/Yvc9/zmR/NfPS0icyCf26zwJL5AE98CwlmNs8h1gh9pBK+59vl + 6LrCfckc1wq9IrIOpDA5lnxwarRd3pfkpBneUpvbCZ/1PJoeBCaKs6EKyfzlfonkvu2ojLv4RNij + jWrtE05XegpnFZkKo9qFPB5lm2z3pZqi3VYptCWg73BCEgkKpNUxBkaC9B+rzaJ/avlo9/ZYydZe + KGvcdAlhoddNa9zUhLDQU3F3//OKYVBTucpN5FfQMpntgcTizrD0HY/wREb76S6Zvji7nMbLeIvC + oThSGShLi3RJ5jrRB6pt/K8M4xPuseaFEK85dofIlUwEou5MVbco7+fLKr5erXG1blLYVV8pBTve + fREZlruSciWLY1x+yaD/0a0nx+tZFIpIvK7IrHqmdCkv6+LdTCn5y5ATh1Y5PGU888ZTtUqc8VII + cZalC8pGyq3DWZHyXOyjZ3yl2XYuVlyvq6An41YNCCPsOC37+R6DPdereAPceXu34jL8ZkKHoahL + FFFW8w83MYxsHhgLWf9p2AWOqvQG8Y+DjALfVXl+fBUc+Z2+IjUMspMWHOUxLtYL99SyOwa5iEbG + US6yEz3MRTylm/HSeSuRF/GvyE7ezGm56fEsF9ELJZKXf9K7wBAYl/lUpNGhcsvcogMfwfNSsu16 + tYAJmyG7on8llBtSmUGzEPAx0jd+EHxR52hzPyhMZAWabg9ZzrckcE7UIRWfXjcFzomqqfj0lGS5 + 8/P/YpV8PsdFa1cJOScCbuRGs8jyHctrN8Ssd9BBjSFmmJf7aRpiXEdgZXf1nQ7li3IPUUj7x0s4 + 8OZ7iF432kOCcmkP0VOxh379P9XADKeEne/6v8wDXox7FqDrVVQpv4h3MelW3x6uk80fKVxgXLZ8 + 2O6SzcNaDawsAztmySLdLAnSEWbvcL36fwdQaUEZfraQ0Bj/50QP7qYdep7+v2oQhh4lu9pskl0t + ZAOstKtZVbRiYa4f+V4lcn0R72BmG/ygnhM2+UGb6K2yFOcnVTiPitkQha7VQBFkvzBiFbWDZvs4 + kpHvNQWtg5pnuV4ZyEhZFKVGdinEvtFGJUhOvvMumeCOziM8YDOLMHfuAlAIjAKC35NqS/2y3jQb + g+ntiF+R2q4b/OmR5Qkw7t6knkSUvuuUaFS5R1eSJOlyb169UFaX2ffjrYtSb7G9yK6QMqzeWr4j + kePQHdnIoH6EMuIy/oXuvMSVpuliH3cZa8s5Hq+TJmiZEbIXpBhCdXVfXVqWbW6WpNeNxBBBuSSG + 0FMSQz7+esHraOtWydDRU+uc4JefMDzUsmcY0h+JhOXzdJPtV/uDqPTo+1e44+ZFevs2Ru2bF8RU + DUS+daXkwNdlv3OB42O6Zf4IABWWH4JsHgwGqNAgph8h0PORQCAea5UmfO/IG98KBSCUKRTEeOgL + RyiNjbnwp8FL8EhHxy+npnmxh37RNqPjL/hOXjDKccNTxroVjKI2xgWjRBd6wSh6qCRM1WaVbLPk + sOT7ZEL/kx+QV7wKw+CUdcz4Em1MP0B2oX2AeEjMfHtzJz7lJRy+u2QNNzGiPnhz52T67OLDu5dT + ZoMAaQXRyWS7umHFO9KcfgEkJkgHzWHo7p6IksN2VV6D+cCjyUFLk019DVFj/AIrIMf1PlkD0d0R + so0Oa9vnRwW/f5egha5D5J5vh0xpHK+6YIMatD2CZMqUkcMJBRGrL75ED5rtY4soLE31fSDNZXyP + JWPgdrk/1LKlVs7siKSu0lrN4B/36RdMJhDY0rvVfR1Ma5MT41EYtDkOxyNoViZ1WgZkLeHpGy2C + 0Q/yRe0JS++EfCg5a3rMZGfzZX1CsYyMKrYXCNJzuDgkyMeAYAuHESYBfKMCyOz9be78bapdKGYJ + 1vKO9HL4vQ62VnrdGH6vamulpyLP5dWnqr3eDhHsoJTogoZp25q5TmTZwth6tkSV8WGdHdY3qEZK + LAkNA0L+CB/Ot06eYqEhryX7O3i+0s16Iu0k2bMqGB+PQ9fVk0akd8dC1JOK2T8Ww5/r42+wVJZw + dVWjqu+5XiUyov6TNEsl6D2NuOoWs5xyvkrtVOoZMJY2Bx+rg5w88qJN+I4qUPBCdyIGhkeilm43 + 5nWMFFZzMRBoPIJfr/mGPgZNn9BBeAhcl3KYRwyaxO6VMQ6nyiKHrLmLhww1nlHKgdpu5JSloOXu + YIBy2MHZa+ysPZbbMNJ97gr7aFx7oHpXiDGnaiD7PJFchScGjQKkKHayjtQsf8rLakn0o0M2X6R5 + 1ZXbXXrYdj4lIamKyJxF5M0QR60vEBov/u5HYcdwk6KRIUZj0YkK0pg/JWFit824NswRGzUTmfzQ + K+vFpPkXbI/KNRYfJLgVYbHmK1JzW1w/TBcgle65VYX4+pEWRlYx1b6GIu89prv9UCTSfjWB6bzk + hsJuZ8SLqOo6fX3V2mnCgEyImA/Jtn3bV6YB8WB6fdto9r/JKGqdE4hJKrSshW6Y7veZ48SDiCyc + 95bTIRefXjfLwiHK5Swc/lQ4Yn674IGcJSXFtVklDcfxQ993ZzCjARNBRa+yDNktAS7kWmwRuptD + OGMmSrorqp88+3hxftKE94wvJ6haJjuOAKFSyGbSZpgeeCuqQbS1Mc6J3DeHLXxRvf9GDkPXbZoj + RJiDKlkloqN5MzX1wgLop81tgjdY6JYjMjRypnn0fhSV4z5qu5o8qdWb0E7MU5M8UQ5qaKGPiMIh + mmfSVBEZq7aHx7iOL0DHexLxPWEa128+bWjD8MqGuY58CrTQZn0cEgaR6U8mtoJFvqd+Qx80szEK + UCLzab8E2xeqfCLk9RVKHHPnLTu1wk5CsmxjimMuu9BwzMVDuozwk5Id2k+Sw2donwqdG+dt8vK3 + 18wHmY1Xo3vIH6uUUTh2Am/ynaC8xjbtP3VoPrlpqCzKm/csDDqUNOOvm5U0I8rlkmb8qYyB/e+K + WRaT3iolzZiLEZgzhnlxnl6A9N0/8digsLy426H0uCAAXLT25QUZeVWzZIdg3xRGlezkvdoagiYn + UOHcMElYMO3jPKdne7zI6PKQ8OpchQ88xpsaTjOeBFG/utTbPV0GIrz2W9UAjLamFdf9Hqjn/OqH + 7xYpdK/4IYtPSvEwnp5OpsgdjsNAb6rLoaMpnOdT2GAlZnZjgp5KO5ee4mSXXnNgS/qaskU3snyr + abAYWe8VlTf//Mv9XMeaXk7wFOTSFvM8Lm0xuyZAsjq+mT4VHP35AQsUGDFInHduhqtZny73GtyN + hBgroKdTzAFcHhYdDBNPIyjVqpnzzZcEE6u7Exs/wpWAoHWSrRyik3DS82qaCI4gbRbNPKTb5/ak + 2W7kHSOK1ThFvm6jjpVg70ZMHriUztqPz7IPRDmd83PmB/YpY13k0KKRmSCqdKJIosVTkSlDeI5n + vI6pWuomD4cKrCBgwcnE/E2tb9tzwsAVuNmBp/gQhmc5hGTlFSFMfwXo7Kcg/o7pHbNsium4j2/R + /CPA0vvm+w71QHm+bwsKuq9nkR7gRlhy65C2C+7TL6SxgyADhDK9QgaWkLhP4OBuVl0TRMeLdvFD + 2jFVQjNK0r5FvEPujY43+BJWVM/TmTjwTeMnZ4frbI8Bhp3rdQqAw9JMd2S70tLfb73aBm+q0o7G + +fMSQa7TqUQQvG5aIggpV0sEwVOBr3Lx3nHOKkWCuGBaKhJkh6Blshn8EfmiSFAh368fYCGSPcnm + NS68904gdQmKfX7mW1cnVa/PbLpJ4h1QKxyhsJyX27XjvKBCzAjcqawI/ApiHND34ufTHb4XA4Na + r6XRJ/l2t7pe7aHNOv0qETpB5Vkn8m3+x7VE+VTbrhDVEzE2EPyJoFp4k9psY3I60cdVnVmtSmfo + 2g0W/MjzIkyAMDbg594gtQN0Ipl0UIb8aqlVBGJmmeLkP2c3TOjY5NWJYD5MXNKN4m1/z/R3BEQ4 + 4oUe4lBG760nu28/SCbzOa4Pd4AHtrZI39geXXmZ2P+/b7ki4XpWR4N20chYkZCd6IqEeErXy9f9 + DRPVNuCvOH4eaqX8ffpf+MqEv4hqQQTymDRhUwpSF1T5pyApy/Wg4igf3zPH6gCWwF83A0sgymWw + BP5UGIovPumwp64duLaDhVNLaAlOALdAOHNCK3RELsz5HZzDTSIkWy3pXQsHlRHUq+XDekFt9HsD + 2TS+uNqk2WqfrpUgaR3y6hUOl3e02K22tCxk493uWeXOrVendGNuWPGMly7S5SpePKxv17AoICZP + F03f3GTRrV7cpYv02OToCJpeBZth8hSWYYIbKccosAJ+2YU+qe1iZOvVdlhkaw9V+ciNNn6JKJN0 + +afuxxL7Fl/vvvu7arMjRmWGlrLb6oMzcXsjSNCOtDy4UTkmX17HtVNkpmTjMlfxwvHe2B0v1aKR + YbZi0Ymarpg/Jc7MjaA3oG0mecTE5NPl2YeLXLrJtQ6tSLVCHbMUHWl/cy0KJcd4juQbt27xaRmc + 1QX7NeCyzs6wPn0XwhQRsHkEygFRTh+BNA+c2Y9MGDOCKdN5wRP/0vUDRYjTCRJOtdJjhf1TszEG + ZBR5Yx448Njp36YjcZhLUVj6KWsVSEdCb5NfM44DZDTDFSWnvbm0rQ6Bn/S6WRAEUS4HQfCnJNt+ + uvzvStgn892wEgQRMTti/ixijo0bgmes363Q+5N+W0kJ89PuW32lNIyo1m01jU780MfCg/YYZdIK + R37kewGWLirJrfgFIMGtMAME7fDJN7Q3g8LMPW8Cy7RWaAXd2Aq1zhQc3ygMXbdsDHr58UxhFuUU + cU2Atf0mMF6QmyLGrAoWryp48rQ9vi4YZZmk2T4uicg4+OZgV+ZHVuSPViP72LzIdb05YBG4GU8u + iw/7FGSNWzg0GugIc5vgUbQFrtBebUCaWXF7dQkmkDXNtNyGk3NpyoHBqDt+lUkoMmGCU3/MMPPr + XsSEcOECaxvhyoAGcRuvNtlemUbUKUTIQj6pXAy7z6bvP5yxnFXyiuAX1yt7y90PQCvjuMg38A9g + vii4fcpiti0pNa8u52/S9e1K8btx2OPq7EyQH+ThIK7LJmKWVAuCOpsVfteUv9ctPbENKs32JdZB + y3kyHpcv3Fa5+J5wybdvEfKc7NCA5TDkQs6rSzxxtHpdMJZrzaNhJECkoVvQe4DhNZOciU6hdxiD + Ef3I9vkSL5P020NhMxQezsFZlSMFXtt2ZPFpaIq36upHY5TseYSPmcyg67lkDGhg4d0GdpzYsSxO + imqifdBT0+9U37I1emaoFDvMLh9EbjEX8XYb7+J991H0yDEbEhg1SsRRZFEad35cKsConY+xNqhC + +hoWTiRlal8W0/Y6FdvA102LaXt1xTbwKcnUb3/9UJGpQYmxK6U2ggDmgs0CkFxcifeQER7a9Br6 + Bc3qfjWP18vk7mGJJRJ5GALcjccxU/ERSA33MO/beH/3NX7gkoCS544SwP5ul5Sy3oE1PFeL8sp6 + HTwT9M1i425Fy4Rf0sLvssebE8stFNn5ZQDft+n9Y1ZR7gqn14BTHfP5h++d49zXT30TekXQJFPb + Hix0RTjFFKgMBKk2WzZI4hVIjKEYGEcHVuyKRop+E/qxpDj5C27kCR7sotq7T7HSngATKBoMlh0N + gTNMIDgo1Ky6oh0JhczLDR5DPu1PhOKBVEN98n4ojMdURlSOE+3eC6fs+5Z74La/kORH4hG8+ntf + 0A9yg3dj8N+pDwOYETcUyNs/PGCbgcZstVBTIyORu+bfj26lbym5j5DHLtNNustm049nL/E3+OOC + GzQWi2S7r0PxbLfJRqFWe3CJuH15nnSvL/Usn2wNfGi9pt5jIkgXP7KfkZjQAT68B+ZhLtDS60YC + raBcEmjpqQiAOPtUEWgdD235avyD98tPLLKDMJyxyA0tYSQ+j3eb1R65569zCmbTnO/bZAfbiGKT + 8DrW00tE3EK8by39UDKfYjZOgwUy8O0QRO2K8KiO4j7mc1WKgKgPUKgjUS48EQQmg9HqTjRPWJPo + Waorh6n+RUcIKhd5QUnKK/ppkPIi12msL8cc9AZE/5oUy0tjnZ+nZ5qjGuUv5GOofqb7O22B+YoX + E5cVuEAZfSgX14iw9DrDfVmMHP5BNQb5K8VzsrsuYugTBMq7A9anR0K7FC5sqUhnE9zXeVEYOOxc + nvNJR6dAjMGinE82q5t4v38YSTocaFnEZaUbtbz+HVDZnkbC3Pg5buS0Vs6y4eccb/cY8SwTcfb1 + 5WxlG10FmmHEm4zuYxV04EQw+OZJRdmMjEIWhDlOObO8U9YtdCZvZIxULjvRocrFU7rUqdIvFvHB + kIc8OWZCzxPQSNYJzh/5pXSyGJwaMleCjxXZYeQLwmgsCn/voNGIiXcQu6HKE3qGgz8h/AYKoHaD + 0lyV5rn/KXe9XCnH0zTXl7WF7tGvl3s4khgh7uvw1HI6QYRQE1OEENGBBhBCz2jv3qkV8HIAkBcv + ryQoSB43DpLgQeSjq0AhogPca64XCYT6UsGIUeO/nkg9inHClh4Z//wHlLowsW904RLfrzSmZJvD + amsc3xeCCYRWXr3V97qGgMo2xrVbRRd66VZ6KKpUJDs2X68+J9NnSwwDFtY0YXN+dXkiGMLE+EW1 + XwwNtQIb2YNjuQ4/da8ua4pcjxcxODhB+kkEjnc4KuNHpj+FyHJ5Wpg8LZEbdIQzyNuYnhbZhXZa + xEM6LWpwjRA3zgskQBWw4N3V1cmkHI9TaSIZy6v1LZsk+B9e8iUQFZA71WMxL0nSXKDlsSm26/T/ + W/ulCbfxEWq/WIHl0iWJkTGLh0VdLEozfENA881RYcRdKbYpZ0C33b/SCqJC7oCTzEnH+1IoUhWJ + +UdUA/Mpxuvo+R4iw1GsTTHB30MGYg65SJAfTS9fn9OF3yFGnS4jnJfFOr7fTtdpvGyKkimWUjJ7 + W6bH2M4Zs0C/6JYfk7cyTZAputEyZPLHBliKZ+cfI6kz6Qp3oS2pHfFkGUsky1i0xrfrA/SRDFA6 + ck5hSvEIIjfllizi3TU8PexXa+lCgjVT/5neCPzYBd8k6WGz7C+4/WBDKhX1LRtSeQS8EF2ybTzo + 4h3QR7uQRNnBL99bodsh2ou/bhbtRZTL0V78KTnHrn57UY32YiyqRHthOr0TzEDb8oJAwkhueXxK + miMELtL1co4ZDiuKBd9cfrxQtXIhBVzvQCVhwj92dbhuALruW15UoZMhj0+IDUtuqNMMWUMsEMiP + wBWrmRx6brIwldTR5pFEDciMLAoiOwjK3jO9etRlbd0o3XVmuSbD18quz3mOH58ZNOaWrW8q/dB2 + w670dVOxXsWVeU0TYruMeVa5ntFvNsXc5tjDOHI8b4s7OKb7hEtnt2jcL3lRLSc4FnkGpOZym4lV + 1MFNLL+022aVMrF+4IHwg2VixfaQB+HT5av/zjeFls2gfQr1+7yEs/ny1dnL+XX6Td8A2WGb7MSF + xQstcSSSvNYSQaTgDxgmxgPQOMamegKA+UJH64fneclK0SMhmJe3xN1vZxeeP0EWkceN2a49ob0d + qjJf68L8bBIiYjlRlaIc0Wz6ZRVrn9JFwXDECIpjO5coUUWM/zz5tliJULuOKoyYi0LuzVZr2DM4 + k/G+UAI7EPQ5Qb5D1unmVgip2Ebmdt6Ti+fdOzxx9+m+rshjM/2IkNeGlBnukTFcn9UxzB8cOpQS + rrG0TiQcxihIi3+I87d5slm2zkpTaNsgSHxxqPzKVi3fMBVybU7GftreoESGx1Da6CNaj38fCgZx + a32VubHrgo6VQewIy9TlgFo0BhTadhDKLNjCRNYxWqTxip4+hVpoVmjlyIbK/Az8uOGYklJlyat2 + O9ZLUI1ZN1W/aGXsCcm70X0h8rGo3r28FohF24fdASOvSvGqCaWhkpD2jKL6yYZ7MjFporaYXkBv + E+wSrQKWHYhaZCKOWwklqw25pj0k+xxkM/DJZvAAetdDZ3PBWGHxfxUEc69Mowin7Egq8oMqqYZd + 1t/iOG6AuZjChlE+E5tarXx4MiSy4pH6/Q5x5JIRehJnz7GtU8vrhLJHTUwx9kQHGsIePSOWJ5PS + c5kTlAEV9Ad+J+ijpheUThCTO/TCyRhlq0KbcEYq4+u/XxzHK9KCOcKl6lsRgA7VURZ5VNt4D1// + KADfgZJI3VonaQTf9VN1fz917zR+mq1E7YnD0DcZmDG/ssGru6i1A9MYtNCXglcQ+KesUzHXvI2p + 0CW70EQu8ZAErrvssxC4KAm0SDOT4jPV8p3Qzz83/T59C4QmSI17WJjviZA0UnnKjrrFXbL4vE1X + m5qj2YK60YdcIxQI8DV8+w37+YrWeCVdKnjh4wjaPLPNdqqg1hW/QiNaH5yR7uQah+aSPUqunJL+ + qEHed/ePDyBcxwF7e8YLAgSnArI0nlpp0VuClIY5tB3XIPAocIobBW+nfEqzr6s9HNsOdiXXYQRg + ozms093naQxts04HwQ1d8hBWaAmUn46f6GHIC5/xwkDSqy6lx0QFcL50y9WXVf1sj5wROsQu5TCX + smNeXt+4iqZe4m+KfP+9ys77JHaVBtJXMfBJrpHUKvz8KPm6mR9O9YmYcmq31eBqJL44DYNmYcyc + ED8KtT11l8B0pYZJqi3ZISGlh/566XQpHk2vG3nABeWSB5yekiTzG2Z3lF3goCl6en5o8Ms88kLH + C2bwB2g2JPz8dr36fwfMLZov0s2/D7fE6QWyGjDEvRTkpnyTC1EPBNf/Bv63BZZzaCPwyp6fz6bX + h/0U1mMaw0IeEKGJfK0wn5oXb5XB+8+nhw0P/aGm2EzzPqKzT40CVoUWuC9hkOfra1t45n+7XrAq + 5LYh6Ml5nr8JW8f1rbKjOP/wac2H1zu7Q7fi063ro1LA4j7dpHl3ccVX7MPl04su+uFa6IK2Ex2h + O/lr7p8JP1M5Vnjo89xUnA+Vh9RMX+slmUuNHslDxadXL1+DqPQjICZMS8ev2UImYwV1xg9UOlUa + HZiwIxMdYF/M9aSzYpzL1U2vKF4Q5cj7qMNx5oR72oiFZbclK6SIJpzQIbf1xZUjWK9uB0kEg+/k + kESWQeNgkfDDZPfxeq2xvmHfKe/TItvSe+l2zlKRjYyzLWUneraleEpX5BKWMj1kE/mn1g7TKQMW + TOB/8gsiaVeNfPvUcjvZVamJqV1VdKDZVekZSQa7bcZsS5g5XOuqpobRFbMnzb9wAvwbQWSQKaPH + a/yYe4B+fMWgwRV/cs5AFX/oXBhU/DG2GD+VMkDGq/pYtYEiiwrNXTKLdSg0x183KzRHlMuF5vhT + EW368ZODQkCp0JzjhZVCc4EDd0E4CxxoLcuWP2yS3e0qQ2kDRKDtbsui6bOPoC5+SpLNCbct4Pee + Tl9liNqBXjeOtqYGB53KsNPNHoZSkW67BoyqQai2FaJLtSzpgoyVLPBs5c9AyPq8Sb+WgF+wAptC + +ePLkthpGBmnh0FGOsz3m3daAKMcsR7AKGe0SJD6+On8hOPLxasN3lUXOPVbLf6wNCqp6mW59iei + E4Uxif+bAKE5rQltjbyYGhzbifiA3CjSIyqwzSb8WAGHo0TXDYhrMzKHDY+4qjeo9Q3VGgvw1YE9 + bVcmrhTjLJB6EjTyFuJyS7nW8lpLjsokLoB/7pxafhdhK29jigwgu9CgAcTD2oLNbUWaEbZyvcCi + u7mXCuepWq656Nf2XDti3iNVayYrshgT/qT5YA2UwhHRwY1ruXgRq1a/ehK1ph87d9kQT/qJFucb + 09o+Zhlr1yJ5Xt1PQtFPF6QlHq2abB55M0Jn7beIE4bKqZ5rnGa87/jf2t8N5oqnV/t7rMpDkZ1b + OewwAn29o5VDNDK2cshOdCuHeCoCUFMZgKoKxdybuU3Fhn2mwACcTJ9Jw+rJ5EW6kqmoMvkU6XHL + QRTZFBER0XpyklnCWS5OoCjshRr051VD0miTqBowSocGQQgu11V2Rwu80/AKZE2e/DOMyUchRTKD + Ao+eok1GtkpOTVRdPkqLPp0U4msB3Q9fvzcPihqESDPwtgLlVSgDKIOgXcPQh4jAq16+3AsMIvqW + r8R+tTUm4udEjraSFrjIkVIt81+Fp1bYSaoVbUylWtmFJtWKhzK+KL8ItsBSJ+V/q1RQRnXsUDEn + Rq5wMFoh6+JgxNcNHYyccsXBiE+JNbx8d1ZJsXV9r+pfdAM/cq2ZG0QMBTgu0gtVCJZe2gykEWE2 + xXt6veLI86lA/CTU+nWSPYfp3AsbyPlyYYdb4to7HnPOLSC/pzsY5GI7+bTTS4ACKbwvVEb26ewN + 3ADXeQL5896dTz69ee/lriHfCh4DttQVZlH9u9QPMOMeI0XIAxehEdH3DXROISATGQhBmDrkWHrZ + Yc1v9RWP6LnPPThxESuLDTop5CF52vTl/TOJ+W5o+XVbQWzxjkErfYkd80zx1XzT3zM1Um5P5Emx + yguCU2Z1EqqoialIJTrQBCp6RnzPtq5IFIpzS6yauhOcTBrfoBfUXjBJJwxEYKkd5FAOLaGaVbSa + 7+B1dh3mFzXCYnKADOzPVI3yWGDXuH97YQz9iBzRHwA8eLzRkS6dSFts3MS7loSgI35lJaCuSm3G + j8VcetMGwxy5ju1oAXzdfWkuo7LQ3ErFkXfHMmzYkV75hAyfpv0cSWmhkN6hhMbj2VQw7NUlXLfm + Tj163Ui+FZRL8i09Jfn2zUVVvrXCkkvPCbC+ggffPWMR8FKf+PzHqvktxmSl3O8rASp4vCEMkzLX + 3xRlFO/iveJs4h4lbACnlcpwvNnusKLoXZzBVrkF/RP72FEhUC15aHMA8sBdQXq93aH362Z9gBOU + LVSO++zN64uTORVJLCI2VFGYw+BwfRlGCmosTCaJ22+2cU0FMSGaFc9qfYOhE9h1vsHCyfimZE9T + WzuR3YQSwxwWwP8rF1dQNPR4s/y5ZBHQRsa8phq0ke3BaXHKwXNZclimdw+wyHkfKsGAlcogK3Ub + eFVILyxRpGUlc5VMO9Up+l5HiopgLQo2awfrpES/cQpy+pP/hI0+QU4gVTtglRwphjnkj8szDr6I + ZvFtlywIvi84563ZP10MXqQ51WyZbhdBJ0rNwyH7zJt5cY2SxTlf1TxAPl9SWUeu63jJJ1R0lVOc + TWPYuA8cNghFvZyPiLi0pv5avmrsrloLKTg+axBcM9irHcyVgUdXcvItzZJp7jYspt6UFLNsqoHH + 4fwMaTWHKvQi1zA0NB7wr4wzIMXtAYW14CiR49GcRqJ67zz/kM4L7zY2zLAdF4olIi5Uvm6Nhm/c + uGmHumHAaphO7wTW0fJkBhowIovSXW4PMTCHwas0cgWTKJBmESDcFdtUtjE1jMguNMuIeCg8TXep + S8KzkigZa0gGk/3dCnMpkzncujzznYdOlF+/AEoTJMctJL7lTyYUhkM5fck3NS60CSyqg5+2C9kj + 8UmMPMvI5L9iwGhXFjRCsn3/EAgLoR/xTbWseMu3GE9xFJK3CaY42W34K0vuwKthmFjg/WhYjSOj + G/LRza8RKzZZktQn5q4vvioPqY2opGjjZh4wHz1ofx+lPZQx7qGDqBtdOErexjTKXXahhbmLh6Km + zCrbp3kNPDVbsAYhf3L87Rwcf7tmFZwRORz0bbu2iIofDgLvFZmOOXJeZxpeVY7UKM5whIodtnMH + wZEOiEoXjEfzXIGnhUWfHymPSvrou6pvYgTJenYNxbp92n8yrUB452uh7k0usO9mIc8d4VEeM2P5 + p8zvFjHDmxjHy1AHerQMf3bMuUMmEbfFuyPeUPtB4YX9r3vnT+feMYHf/F+f0DCfkNNCbUaH6bhT + qOY7n7T/pyPh9pDc/yBnkmtZMvLLdl46p8zqltAgG5nGfuWdaMFf8ilpu8nm1qZbg8NcZg9r5StF + zGTIJrgeczZz5tzNiXaymCNnvILmE6TB0aXc0OK3xGhhPVFU0kPbWXbl2ulMof1IAbEi3i877G4G + lb14GiE8I0ZEBzTX7RHR+Ta7TmtrorRGZjmRlRsWcDs+c0/KO7JvUd6IeDkRmur7/eWcLMODWajk + Azyv6fc37+GomAdN0utGTmVBueRUpqd07i8+nFVAWZiLBS5Vp3KEQZNRBGNwQ9v3RdDkh/jf6U5K + OlScJJcB8Fy9PZ1exLvc5XZho8bKC7TzV/m812UrZM/z4EuR1ojoGSKXERNSD/dbfiHi7+kh7wCP + o0w7vbiPq5Aq9XYoHV4ldJrSTptqn5SNPhq9MCxXtzhKj5AtE+kRfX3Y3K5OSummdmOFFtfzbSvy + yn5rCfY6J5j7mtSQttwKzRPteU0wLswGRuvLzjUcFy3TTCHHvCiyG74FhDSfuUGJWgk3462OMROG + ug/61UWBBWPzUjCTi9J6vf1pLpP1cGdlTVvr+fT+2Ibnmbfl/ZDH6D7noZ3dj8MED2leGSQK/MdJ + DRyEQeuLENZKSmE3GqKO/H4YmbDGwASLUyXThFc7muSCu1uK7+2fVBfba966DXzC1WSLm8KrZJbW + 8V2diJ0bP3EgXClWeIxI5c138c2RTfBksydHw0IfoYYD3EW5qNn7djPakY/UVTv3sIJQ7bPgrh3B + j/83LfMppGXCoOjrBuX7jpTc6Vo8ufP3j5dW4J3Pz4zVD9nASAHJqZdUEPmclJDzX694QkKhhTgO + YmxhFIaau+X/Mg/gZrbCGfzhWyKH4R2PPrhZkeKP4T0oRW23PA4K5LJdGu928cMcR7RU73xQFHk5 + j5kETEnvk/lXZLICsO8BNLl4J2CEKZdrs4OBL+bx40WYjgVjc51rTfJZLR2rVNoQ6GBa35W4NHiw + gtwxVEbz/SX8yzwGml432i2Ccmmv0FPaKZev/7uirjo2pgup+8T95SePMZB9ZnDvRq4wbL19AEn8 + jkBxpr9evpZLut4B/a998TePq15PaEEtFzjsxDC6bMw038GwM3ILUprpy0tm+R0qufLXzSq5EuVy + JVf+lLbg2eVFiVlhHL7DWKWUq++j2XHmw6Xm2TKUCF1Qu2TNwwrlTNBGPNttmTXCNmTQPXOjJ7gN + K+U7lw8bPiOFq0SGPi9l6DOvGoB8G1i0aIUTtZ3erNYx3siolj9IZS8pJGzYt+liVfj/73KHzIQv + Ya5Qe8zB7QmsLq8mVJvdXxM4+gNOUqEheb5sn32GV/fdw7tCnyt35VUwO5EFFQp44Dft/nB96Bqb + gMFPvhhHX7hAMYRUq7DbcTZsi0uMzXCA7VPdxrWKGkaW3zGyMW9jXMVIdKGXMaKHxMEWm6WdV25f + Il7ERsYSTSpPpufw9gSb8JpF8DVdAgAMrDWDY5KeZMDNcXZypDUFcebTW9R9ECtkGEk+mGA7lvHA + ahJWQKX1il3XxTn+RBNgH4fbd4iRGE3Y8nOAkhfOKWPdvNSijTFAiehCByihh8S2HrZ7EZBNgf0T + Ed//Ozyf4I8clgREr1GKqgW2z7cJAeWKrkoJIQMSm0CLdZi6QD3HyXxGNuJmFL4qwe9dBa5/NFO/ + 0KAfaDv+MVkwXUDcjueQjEut1QYVSMEIFBb31Ao6CUaijalgJLvQBCPxUARoqxYCiRCGQmCyQ3ye + 5PAZiKbCycZ/VOlipLXthCK5o9d2P35LmK9Nj6MzNNpMrmqY3xu2Z4Hc2e3eoDbG94boQr836CHd + G4frBRMXR1sxlElrpRSs0eJOOCke4uRRAb0uhScqUUl/zkITA6tHGEdFPW4FB9eKhCXJtR3z2Bt6 + 3dCSxClXLEn4VJi9z15WjJmW71QMSXPmsNBy3Bn8GdkIJYh7+ZOa0AAzKPJ7UyxhUwCK7RCpkDsr + 8MpmM2bNUTcAHQEUgPVqkzznN1zCgxkekjjbT/9+2MxFxF81b4IDPGdTacFCj2h8Dyu0iuHYzP99 + kMas83hZjb+RzFAHenf0WJa8oFHkBHbkVAoaVbM26obYgNAQWE3BJlpvRehKilUnvyTHk0kugMeq + GSRKt64XuU3xOvXdqmLWIl7eS4etStT3S6FFBRxC6PgWC9x/Tc4u5mzO6wzBnoRTALO/wKpvf6y2 + W6xNfP0/7y5O9K9p3ElC3JNDy2bTFRytnI9k9zMR/ZKsUjh0W+huuTvcKjvwOYe2h22XTWPgA9ym + gka1rNRPzOHjlJOePefiRcYNMhgUlRVs5NOns/NPZ2cTPEy5SS90GNcB/gTpSnxziEvAcKt1yVuq + u+Vx55QtJuou6zb+ztRqk91bxKVqEslfX+/nVk2fslfRmNVTfwismv1fZpCdaea4/13YsNl0jZAn + 7zqegAwRLGKebZMFClH9ZxLrMmp1ygwrMrYJIMySiWK2/zY8ZR3BlWUj02SxvBMtXUw+FYbh9BsT + qhAPLlinMA64KOD6npQfTM/x5QlvwlPDQK4RhhdSChcpv2OGRPLB9uWk9OizxsK3VUYReo4nedOK + /wKv3MWKZvPun7gDQQJaD5FVPZ+qiOglnsxmwCjZsq86aRK8d4TveWGJhjx1uWWkb1r6CH38gMQy + s/XyrKB0CHpijnpkJhSEiuM3gobVg/b3CExiebUXFjruqcW6mQ+ojbH5QHShmw/oITHF7LB1RWEs + tf4baEAJ5Ubxe44qukSBxewwOJm0vJlcvmYTTpTs1W6HinXtkqrLvBIFNFHDIWosg9nm1+1BbuRU + 1ieZV2p8ukKX5PqWrdDJ386tTYy8ki001fDNJfycCz8/G9VRHdZBh0Oel5Zwraiz8CPaGIP9iC50 + sB96SIf8HktIStFHu4aqFSelYxwaTEzfvcJ3eR9cVoIZeFJlKgUFB8bmVG/iH1j2ckD6wSjCj18z + HaOXzhxY3XPkypuE6nE5QOn8M9bulAwwCukE7LpPgORseVkP237LrFNebLFDcrdoZJzcLTvRk7vF + U/PSHjkd9G4Erj2RYaJdD6D0AjE3F+OiN8w+ZR3lONHIWJCTneiSnHiahzsJVx5ZuqUXj9wYGxR9 + 81Q6jNmRx+g8/X9RCWBJ6RClON+SBfvo0q+j2JqcZ87k+/bQemgjy+ccKAYF4Jpnx5LC3O9C6rlz + xmXddTfZarMBRWdAZb58c3tyc4MQYXcLjOEtTLc1kdf2NH9EYku83zIRyveaybSSQo+TZSZtLNsY + nUyfvbu6Opm8ZvPKm2eckLrFOWnc246LOQBcvPC1iBV5uQy3nziOz8qGHiFE1aTETvlmVwGmho8A + vrL4uIF9NktEP/pIeGUaMBX3Md+Afc0chvbadke1FZI3eXOTrpdKXHz/CBV5TPMINoe98eB263ZS + ZSPTw5p3op1X+VSYE7afmbyVd6tNkgPe5F/9eYUAFpMPZxfir9MraDPBhvyucYXyYAlobHjxH//4 + x3QRZwssx6pOVtUiagVeEbFJca0xvJrtpyX0ckQaT+9T4pIGdWFdP1R3AsKipiogpMgNPGqy7UnI + QLcRxuS60D1Z3E8GGcAjDvyeqy0CoL3SY1NOwA9wUHWNEB0tSs31A1tdMbFp+wJB+YEWgkSn5Ofi + mAwkH5BhVjldzZRaqpp3ovNdsKGPp1J/x1KvvggMHzQ1DLZC4b+8IUdjT2dbEWgYdhTYZBPjMMOw + LLLJZ2UlpCaecFcqZq/FGRJhDDNknjAaOxSkXG42QL0wpdiOomRT3HCuhIOKwiM9jBMhjLjoMduR + VfC32gyQBknrWDNzLSHHH2a219XKWTQy3nmyE33viafC0JkcbGHn3KYcsPxhmr8uTbmTypPpbxev + LceySuVzp96EE+SpQWHA+KYMGEFg3ierDpkveZYxi3KZ7QzUf8vuJrJRG2OJTXShC2z0UMhri60I + uPtjtVlMb+AwJHm5kEnNs+n5NnMmC/wPak+WJxOmxKwoaXJaQlmjW7s9r6fXZOetnboQUZOcrkep + WNFVhHH8oBBhOA4JSIk9kUTsgB97vqC93bVjuUDtPDYE5qSbBVE2Ma4QSR3oFSL5M1EGIfkmzWdq + lB7aDb6tOG/XNi6GACrMXrUo5E1gZpRXhFuJsQnvitsfGaNDE8gkmYbeet9zoDqRMqxQvlllHdPX + Bin0lD+pTsoAu1Q/sq1R/Lad22/dc7dzFD+1Mbbeii504y09lBeXmd6sbbnzZcZ+voyXnvPz+d1n + u3x7iRYfkLS0lbnAhJh9MsH++F70Lemr66+YdnDhPY72O+yecKwo4hsdA8ZhpeFdrvu3VDRqVp1A + 3SF8UBzKntuaF7DkMqhgcZcsPvOk/+9EtGs46qjJajizYc3M/idp78eNS49sE/hf5fmINOLkakzg + 2t0CsvI2xkqM6ELXYeihAlCd109UuH3VrXl+8YL5Z5idR3qzHRL6jRW4Mu88N/h1uPbHSDBtBJE2 + Khg0ENrQYTYF6cYbkFuwSQ/MaLk7CJLn43vLs80heeh1MwwxolxGEONPJX7Yf3tn5UwqxNYtw4f9 + 5DkssJ2Z59gsFDmBVyJ845+xxPjg2AignU1BhFpyXNivd6vF3RSuTUSRESFwayVxCh+3ehrlDCqB + wDwO+fkU92+K9DZ7kExE7jRMvDBJS4esqMAJA8FCo/sMBpPi9Tv95/X02Xn6zXuxPcEBVglsSiRE + fhY0qYKYtcZJCzziV9xqFZ+U8IhKtVkv3hWlbx1mydKvRRpXMdHzfKLrk7ZcZkdNWEehG0TML2VP + 1TmxVYLo7G5AMA5C5jo++9fkP2xXTPgRylHCoijgIq8o8aN/RHXUM32CgJek3x4Qr9JEBPI8xviF + yedVRBx2w1R4Es7VPvEGx/y1rEqy9YhWOmjxGQxBOMAjKUXd5kPcUXTsR7OpNKzvRkzuqpQ21AAJ + iId7/H5xaTme+R1HrxvdcYJy6Y6jp6L6+/uPlWRhz0bsD/WKC3/5yQfN3XJmvgt8V8Stv1nDJGGd + yqmIE+J68purk9lUBjthsenb/DXStvg/EVMNjTrx/T3MTfycHKNv1nssgo28hthfliCGD36ULC4M + vykktLgqTj4nqOCFSBQ37hgG9kuot1l62C1oFPBYUYnXIHzLTUS139ebatbxaECO+dfMxdgrGeja + teV45fzc2bsrpSK8GwR+uSJ6sQTahGkQ955rl28vnUg+cUVubgkk39I//VXtyCZ//W0zwVMlbz3f + dqKJmGBkDzVrMQRfn/zF+ej4Bj3A2AZCzA+kXI/V8wOSXccCFcdjV6xe22H9bnSbfDdjeP6ZL+AX + B4Fh2DxO6vcX7y0Wmd9v9LrR/SYol+43eipgVS8+2qX7jUWup99vjvvLTyDzOyycsRDUcIEAfXbB + S7twWxhOgj2TCM4oht8d7uPN9O3ZBeO84BWMAQ4FbP303bt3Ent1u7EHwlUwEJbDyLLLt8YyPYAi + P89QWsbgNkxCzt2qzt/m3t9wKMsEROY8gL/xUgkdxhpxX+v7F3bj5SrJ9iJXu+HC8uzQiHZ+0SiY + jdr9YoesAZkiJzQ5BwaRYdp4TNAUz84uTvRV1GFMeC+wmgW043PjRZ7g5pJsHraRN04xXDvkJw93 + +Dz5tliJu6ieVEss0bgIlqPl3owLyfCYMAeR5QsK82fxFjVceA9T1bZwpGDb8X9nq31yMl0/tHPJ + unttTPrtd4xH9darPKAzHa5Kacepb/FEi46JdD8hrAuxEqMiDbWlNEbxtXNeiE0GM1iTQWNBCXKB + 9Vlgec3yKLTfzy9hT5lfs/S60TUrKJeuWXpK1+yHy4v3TvWiDd1Qv2g9uGhZ6LNghnXK0CnJK74d + SXcURi9gNsi3ZF4cv2E/7LZrp3rH6sYNalhNrdMVN7+i/0gwJdf1HL9iajRIEtNBohzPpAOtvhnJ + b00qm8uODXnSZ2ontJr5zeZF/iip5B3zQIvb4E9riKsfDdXFMduiZiQHJXoyL6JL1ngM3zFttH8+ + Zu2VO3Z+p+TAEprywg7eYJRf0CkjpGhlGNiidKOGthSPO4e0VHzfLe/qA8BglshzhAOULPv7ZA1z + uEum9zEKphsOFFiZ0Q7Rw08fcO1PH8jjN6axmJ9Xy7X48F794/znf7z69eLqOOSr8adbAUmMBcT8 + TO4z7pS77cHUHyWfxjykY1gguh+5+nx0vtJGhAX+3jG6f6FApZ5T/ugZTUyDpts/7NLsf4OiHj0o + ivCDL97bQWSOH0yvm7kEiXLZJcifki739uqiosrZblQOewkRQNi2wxlz+dXaVgttuwbyi/+I4naW + D0tCGN4/vEysjKVyLLLDX9pRhwp79LqZHZ4ol+3w/KkwEJy9d5yKfYAXWCoZ4kPkPdEstBgvuIzb + SpZ7l0LEOl3AdYkkn2Ncm1xzrpBNr+wwPJ9Ns7v0a1ZUXITJu4atOVXe/f9KbYHevMAolhjBSBL3 + 9G56tUBmFOOz/48Ho/CnbTQkHxM+Rj6y6bPVaXLKBw8z/fvFJYv8/5oBxd9f89CzE2nYiNeO0893 + oPhcLdcNvLBStK0TtLVlRDw/Q4t4d52iDY/KptW6ir0o8BqogjoRQaet1dlbpXbNQgKc6djoJ7Xr + PsuLqhttOl7lk4uhcCh5V7RVaM0nfLULe4rFYaQtS4RBxWsQepLhHtunrCX1T7x8upjFTyu5yynw + LS0sy+Z1rKskGhmn1shO9Nwa8ZSYfrq4E8HV8Xp7F8/ZzJ/f48Czh7UqKokkGWY7zGLByaT97V+R + arkJdsUTI5krYrEth88qj4P+itBqnFbFqNoae9HmXROBYB/nGDgeb1qzmlvoRIwEUC383Gx0dSkm + FnO4XtQ+hSNo44xsqm/S9e2qdyhiP/xOwsxGLxRXNTnbhYk6rA+d1c4gjJpp9Q6wJMWcpibewkUS + 7x8XeEORGX+0yElXXHR8D/bCxxhKunbShitvBSkvaCI1y5/yUGl+3mHcGCl92JruDsnrc5hTO3jB + 7FOE0uoC8i4aGYO8y050kHfxtJrF++binUgB0Z1XWtru6nb+q/bkdrtiPLkdxEORG+mRh7yO3kiw + d317aDemggaj3z3t6cXtUgbzcvGgV2Wl7jxzBLbbwXL4tNn5E+GpYwUyjsjtPOaQVE4sOJkn+7t4 + k64puFW4I8y6MQVecxxRXcuygy7VtfB1w+panHKluhY+JZn2nxdXCEJTKq9lI7pLqbyWG7m+683c + KHBkobhKpfI3Z5cX02dcUpjLyuIwKbBpdynslmXuhzspapn/c5t5bDvHP2z6w6E/3K2SPLSDKV3x + CU53Kr0iJ0hUQuflzfkIngNz38PgVsCxHjR/Ennjz5cLO9wK+wR1WLZP8O+R0qVmMoscPQpQyeQC + rROmSKj8KrGSAKWHa0RNta9GoafEUjDmh5HrVIwoYxkdaViwGl/ixQFoKkukh9dHTYW59C9WjCbV + VZ9x5si9RdAjda2W/7JBf2qaV9sPfZ85/5r8qG2MXcHN9LBYowRVVB0U9jX5ZVnfrT3hhzsv9+U6 + 7hglf3HhCn2gdp2PqnaSe49U3tcBAYXUxAyEUGifkJjSjD7aMCC+X8hgZLbXWmWNiWAUfLZUTlJp + 1Qpa96MjhchFn3/7I2mP9eMfRfVspnI8gxwlVu3zf4jY5bDI90sr2QOzxhqn4rnjCrGFOayL2IKv + G4otnHJFbMGnJLa8flfN80OA5IrUEoCEGLqzgIWu57Z79ZY7oF/16hUFb0XySK08wEqZ3YVlPvId + rGVRSTgoLYB+x7ImO79GLb8aiwqzhSE7D1WJ69PbPHZsxIUTEIHrJqIRbhWT/npqm64tKto21AoW + qdkDR9CESBsEXHuTV1q3Mx4J7Nyr89fNu8booI12Uikj9+/vmc/MPaX0utFJFZRLJ5We0kn9+9// + XvG+24iRqHnfbQykDmzXmsEfQSjQ2j/dEWNGSWcxI8yP+PY2KbCvv8YZerLi9eqPZCnlJJVJysP9 + 7zUM6et2cnHANftSBASC2CXFXHk4n3Mq7R2DLLdM9gmaetBEdLe6vUNJDDbnzQoeaUMQv8+xmPDh + 9m572MM9c8D8gMnrDxeFJ83xo6BvPYknpN7LvZejitvRmXtqW90KfFAb4/oeogu9vAc9pL1UrcR5 + l65TUbe8CNhQLXjVJsk63dzGSlGqGaxstqdqcMleN9vKeONySQw5Vg6bJiD8nrSzM+/AFU5HnJj2 + kuvmFsuB2shQc+LImghWuufyIg9jjPeDatMDMfLIyj3WgxSFMYeePqauAvR3TXTO2/dBinO8kEJ2 + 85NaOub9/ITjJl+7VBy4mXWMEU85oJNjqW58U36cj0dSFFGMF2OQG9Um7JH/GYu4z7PD+uYArH99 + 4Il9/cIaAnkrhnbnxArZxvRWlF1ot6J42IzWXBtT8iFdOJN7/A9GJfiu/6SurS6pF498R0Y0I2qW + MozIKOChoNEz07mBoGO5xIkL81gLJmkTEdCng+rUjVIMZOwumj7B9nx+o+R5r6Wtjm2rQt8WExLw + wHdlHZFdXkVQVBarw/3UaNTfuUSKcWCaefnBHxXm1qFA4vhhdEDT1TZZdUeN2d0ohVHMQ/+Mp/aJ + RRPyjMbfP1zaQYeQcXrdyBAiKJcMIfRUmCzPLyomSyfCKHLVEOL98lNoW7bnzULbdj1RVOEcg5C/ + Pcxz+MRliqmI02fnn16eCP9PvOdwiwhgyB1D3MUE11gpj064uHZwv3Fv0XmFqHijum31hPVnl9vU + ZlsZ4P16sa2CihnFdyuuU4ZMw2UN4Cxyiyvf24DREtjN+C+RBWp3xfupADfcp5u0EbpB6QbkzIg1 + O1kt37PLdtqaPMfqCuk58YFl9CV5FzpvKUWPW40eV9f1LBju5CnvtAkeoRx9M4ysDiJoo6zlEpsy + WpnW2/d7IMqM0LrJ3Ixnhk+EwVkzkkIGETyi35GHwARZ5QihSBlidUzN7kF5rURFwaywW/EH2cS8 + YFZYKv0gn9H1stgsnbx0FhzwTKmrLqLL4cx4oRudTKpvnGPrymvwkApp2aJmkUV179tK3hyJJPQp + xGq171OHxwpyJyivvFOkCosv6qbS9Cd4JI7MKopHLldfVh3rpVhBJGHXxSo12q16Sf+PUFXxT2Ag + 5OzZJeNgP2VkDIecawk5FEQdc9c5vW4oh3LKFTkUn4rUxd9/9SpyKA/01uXQuRtZIJ/O3IhFEWt3 + nd/vgH7VdZ4HTZSQiRoB9DRIWYXQerVFSIh4Bz2vS+TCZqy/BoTaJ5Bem7shb+I93DXxepnAbZZM + +R8coJSLWOjaFB7GKkx6etiraD0cR3adpVPuc1bnK3s+vYszVUfbpwIKsK376bPXZ+9fvj0potdW + wIZW+Yiu/p3e7pLN/H28yzKYw+wBBgarPXn7+mUhpgWM0JYEQFouFOV9tntuakrf9qT03XxJTwGq + 3a3BRC/tF0NKx6K/6gGcKEykdGxN2jpwewZChC480L2/g0u2FtWqbNjl//fj2ctnFyc//etHWmBG + AmKXVhM7JOcPchxi1oMurTwV03ZeOqdW0M2TT22MPfmiC92TTw/pErItgcMTC0kt991fA72pfTJp + fINe0PpBL3xoeaL6JNWFO1LasYYnfYe4KIf5hYc6Jkizgf2ZGvM8Ftg1FTA7qwFjWrSNCgANV6a9 + vDXWHdt8Sdbp1ph3fn//9/FGR7qkO0c7PLsWx3l7PFygQPpUqc34cZxLFXRwEq8LcqwGIdQdoM9l + gSevu22y3R8rq2HujbepgF0OZzTneqhpP0fy9h2CNhpIaLhdRd4XPJ3z9zeXLOgQH0yvGyk5gnJJ + yaGnQsm5+lAxtgP/LGU1Rb/MQxc9FbPQtT0ZH1yOsd7fwac9rOc87Emp8SCATbL7qt1bl9lKBTXK + ZZpmiiHW9l2P1eTm0CD4vsFRtFbUCG2vZOZV61ZoPeSqTOkruRUUozHqLNJOGba8jnwJqbV5Fp99 + SPaXWCxDfm0GDG0acyv8Pch5GEGlkcoBwmQe7nOlqTh5a67i5IwXNinvBURAuCYOt3dcm1J/5uWg + Fulmz/FwYu61mktZSVirYZfDe1gyAv7Bl32C2yyP3gQ5cxRcWaRAzKJmKW4KTJdBPVC0W/uyfxea + j1Ii+0enzHhlGngEYs7RzC+j8TABQ9qR+VLUM5GuRKk24jHW9J2oNlcPGQypN0bpEDcvDgpb+9QK + OzkKqImpo0B0oDkK6Jm83kBGKNUErXum0EIfAOinAojGphidHFdZd9blOXdojxoLL9eneCjuKGzB + pemCO6tF+0pJsTlhsIMQ6rlVVcm8o0dXnHpOWf+gotH4mOcRWooaRfX4oJs1VTxG4CkkaQOFcRQM + c4qt4woY2TFoqTJYKtCxVwNctpL9uQIGlLkdKifR64YwoJxyBQYUn4rKSZ/eVNweHrPCSmVAO2CO + Fc3swGaR8Ki+U8Bg4gPIJHfx7YOsibS/9WqL6aH2rTsqmgu0sjDCrKfHclQUY9Yk+Yi5DfEgYQQf + b3n10Stzyo6Dpdoj59+Xsxd933Ya40wCBrPOc+43WbLDOc0zqmonGW8RFNbPv+xl8bvnMAnLZHeb + 4t4px4bCcjB7i9I/F+njnOOq5OGlcEvW6ZgSviQd+F1Q4K4UKsFXEMm78KELOBG8aqwWBiNHTtby + PMx2gtsvh1S1AkvgAfHTpgTGyMkoxmbG5wcn9UfkslB2949Jn7Ep3v4+XuzSlsE0RvjaHledzv/5 + Ka+VaNzYDUi02a6SRXKfoMy+0oYBF3nj9VeLXudaIpU1masbAzm4YObfy5YYCIAEMQp4qTHHtZdZ + cfxcRNCnXe/o7PWlbZNQzw/7HHn4nB9rs1CLwem5o1ncJKFIrC9ytuOaivot8ob2hM3OdjsEJtDr + hjY7Trlis8OndENfvP5Hjc0uiCo2uyiwgsCbRXAmHKHUiCCzG9wWqQQ/R1C9Un2li5vPVWudP69r + Xpfm70Vu2bYmrzYH43akXW1QXV0GvNgO/LIwUD/KepTjUEcYbxqmUlD3YZGuHyoVmSwdowcDXCdn + 2rRiUcEE9nWaLvYx1a6oG6Z6+xadzaZ4aLItBlqhF4dfoKWa67OpADMmUZyoZsncnvnz61UmZVOK + fzj7cDHjnJifjdXmbnWN9d5v14dFykch3fCa92q+Swg5B1NTsgnuw8KoF9gTMRN4jpSJMruXDdq1 + X8wGBHqa0B7nnulveYuI3befxo7D6UezHol2JC3WskMBM3cLu+2oHtueazJWSqoj0iyOMJnvQ/Qx + KwH/lWpsSJPTSDkyri9RWFn0Jji1WJfc1KKRKQpr3omGwiqfkkhwn90JKJAPh/3V9Ca+X60fJvzv + chPI6rb2BF/meKt+ROEcI9SujUQ8SAZq3OKuV9laUxqNGQqmBI4oeGNWz5VUA4+Mgvj9qEN/SXY8 + 2Bk0Yw40cEtubqo1YPrFriNgD1TrsahpTMkkOCiM8jCn6TGbBGQlxLsdxLb2DrBtpfLsrrVW1XiG + 1UeI1+6DrGALtoenj0TrXncy0rElHR6P1T1MY7y7WCCa3KSH3RxtBf+WdrZxMmAx9hCb/z7n1qjR + iJJDKk2345HkE6oVCf4ZnSz5v3hP+fQ8heTgJ1d7a2yjvmNFoaOy/mTZf7pAl6ZgNqSwQuMrKUKY + ubdOxllU7INPwe0h3lD1tgeOngwfwO+sUXrgLJj2Jq8qP/rXSHlIVkE9953glDndoDpEG9OwV9mF + FvYqHpIEdKfmXkisDs7BP+Mn8y/AYpf4zfJnlTLH7QgE3FQHlIrk2xZ/wCndxnuQbwrUVUsU51gg + plAxFL4QbXdrhwNA40wymKr1KrvjsZ3QqiQa1Ixgm+ak+vbueOTKzTMNBk2XG1pCfSFlaLVJsxXe + XfP7ZEkAw8UCqmQrhaPHK3MZhnwBOZ24xZZqgo/keJaaTVl83wgnMcprAYVv/FPmdSsFRG2MKwGJ + LvRCQPRQaCXxWjgGX71gIjpsgn8l/WSKtc4m+BKeOZvZophwZBUVfO7THUwRtzeZWHRyedtiQhdY + wAk/XB/gesaBL4HgFxn4bE4rKtHClGfKwx58dH98riil+ulhGI20WhS4kFlaVLGAm2yYnzZCPkEJ + A1eIF4KT3UyzLZyOdaIuAwf8/oylrtGGVuciau7F9QXYm7qsxxa1WWmiaCw5xs542sNzYW0SWmIU + QtfaR42jJxkbQQ1yDYbH+/P9oa589w/ulzRAxoHW3o6MXSTlKTG1XcfOYLGs8jC0O92ECmxaCocv + Dtbyj9Qw3w0aC6hEzrXS3R70Uukr2K+27UQmXDMNWFkJiNvhfWpXZBRUH4sF5flsJFQ3ik4E2nPi + LVZZ2u36kM0T0CyNxiREAc+SRkovCE4tt5OJkpqYGihFB5p5kp7lOAsihCU5fIbWqaiwxCVvSq/9 + 9PbXc0+aKFWimHUGzEmA6FGOJUY3CoBZHumNM9CORmaWA+UL5f6ed/CNR2Vw4nVMURc20f+FP8N3 + qGaakXKvfggQwYiIAnJL5umRnv/K7ZoeKdqYSqeyC006FQ9FbcoKKqca1VuH2lkGKJZ9oMboOBT2 + O0bZrnGKLH732l/HhhM103rskouPVjSjb+wO3yr/CQCx8uzbuWYanEfdEIDyNsaaqehC10zpIWmm + +9WNGwisDjU7aLUBTVxcKxxtcNL66zR599p9I/GAbEzn98KTCVHnSq0dWZPRkp2cEgUuzeRDMpG9 + GYZUyjt0WGXB7wxJ4wRUNftyAEamW57AmhXti23AyPmoqPoiKNkUKSun9OOwdzoTaT3xVLPv/aUd + +OaBcvS6UaCcoFwKlKOndMpfvriIKgg+jqUXv3HdX+Zo5nXDmR/5oSP86C+TeDl/kfLO+SREIjLu + 5fU2qsdvTNeV4nKOVQ4LK0q3ISqhVQ5eA3VIgSjAzX6XIJRMYxJrCTOnsYs8hM3xMCZgdY+TWWAB + qulCOhai731P+jxLVgW69Hwv8JxyhbuuOVU6zJAdNIXdy+4mLesgwBhfvjp7Ob+GDSKMmWrk3vUq + N1mKt33rShm1GO8EN2gOAGT7/rh5Y42BEqZpYkfgyA2p9BjGUS4JF6vIHqNZStQp7/Qd3Sghn0m+ + wr/w7IvwSVihGP6DIYdG6WfHFDMrb52uj1VfG9XJ7/hBQYiHyK1abA5H7tqhtzUyNmEfOsoQje5V + 1yEfTm3zsb3p7UK6RSAx+qcNHNdooBSem0e3Oa+CriXGRRvj2DbRhR7aRg9bvLnSZLnFvIzrdPmQ + iyofsiWb3ON/MBc3wgRi7uSgRHMlDilLbnfJbTc7PyZlkYUoWXV3tTiuLxL/FdseFR/HPRTvp9XP + OjqyHxnCHDI+GQajHjUnRO5TrygQ4nTbprKJeXkQp7RJ5TOhTcY3jqJLlgHrP71+B+qhMAvWVw3R + Xsmv+k9Ad4LEKSbBkiWwyNl0zNdfVDGKdzAzWIOtNo3qyC3vlMo07ZL7dJlUnO8mpJ5GDZRjUk1Q + HaSqJh63NncPCRheeeoHmJB9qhFisJ+7z8l4PKqbmYH5tsd5NEqAOKTBNSlMQze8PKjceemfWmG3 + mHLRxvTalV1o1654SIwsu8e60DJ+F2VjEi8lx36WbS4/XpxMuK9kmSzi7RY5QpmD6RbzomOMPvds + S4AJhmqw8FxO8DVGayD5CkDfDHqM4XALrBzlsONIhsCPWXbEeVQbffpSmeJaN+D+/T8CgocTkWty + kLIXOmFuNswQ29achCjubWvHGL3epQHVSw5/tehwaESZVmJnb3PZZzCzdOBERVKT1U9rj8hxh1xQ + 5VH2XyAjlXBcaq1qTlA4JM68U8vtFrUqG5m7JEQnJZ8EPRXhcsuEiSKsPENpnRZQhRMqR/YVuXJu + ASqADD9g0wknQLF0ASk+vkehVHwj9MqrHKbyYI4K6QjpTgpsuyQ7rDkYxmqj1FfD6NQigpQ+t2tn + Inc/r96mT5eZMuVTtF+JiKFG9ZdwudaNK4rIesIDfLLDDuSeLq5O17aLzDssM/qE4DyRUKAMblQ8 + 0x60j4z1iRYgGw2iYawsTS/PSmD+q/CUdYGSy9sYs3fRhc7d6SFx9OXhepUesomyLNu7eKO1Rs7t + uM5k8p0rGg4RaJ5AIXXJ/1nkayjUPeuxezyI/vcX7y3HM3dc0utGjktBueS4pKcC4ePX9xguoHku + WeQ6uufScX+ZM4/BTp8xz/EQkRl32lWBOMH9VLoGyzMS59xBlykI0zvYlis+P8AusJli8ihSStey + pvbywG2WEv/9ZQ5ViyICOqZA70OJofqjgBdJ18yueFEpW1If8C+loZZK5Hlhg3cyClwPeEnZv1rX + RRM2SBiZ0M6dkuU5UmZQ83jaQZNT2IjuTJlMWBnSolaIAKz34ncb/Tq+vcUlFUmMSnxlafDOEbKT + FyrmSY/d12nnte215wKbLAc9Rrwt+DAYSzKVejwSWCeb2/2dYlSc8AMoPbMWcxilyfuc05WH1NHC + KK7blu1yVFBVaHERqHnxVFIVgEZEEaOQmPKsVEZQk0jxoy6pYbUGfMI9M2I1x6yFYxTuFbmw3GbN + qSfLRvZk9IXDKD5ecJG4XX0q7PX39yxk5giX9LrR7Sool25Xeiow7z9+ZBUALdsuAWi59i8/hbhd + ZmHgSoDLprpe/14D+a9VeEuhzhbPanEpQ0eHoZK4lE+qEtckh3oKWAD/kOvJSFq6tKIOeGj0upm0 + RJTL0hJ/Suv58e2F/6IiLXl+VVpybd+OrJkLLJh57St6vYMOqpXauqOUNZVqMyr5+6eo0ZbvDMuO + 3AG6Sy839hPQP/KjQOU8Pr63Hd+ctdHrRkdBUC4dBXpKR+Hq3Ue3zNlcKyrVzvZ/+cm2/MiOZrCj + Qlk7Ww1g2/KU5C8EFrfhcRJfEi4gxesGrys0yVZoZvuyiqfw4ZvbhEtchUtTWiGS5yX/7e9vLpia + D05H8Gq1casFQ3gKOEgwdeoAfFsTcnDk2pbjVMItj7n38u7q61q7nmfSX0PNab6jQBPS/Mel4Ej/ + CP1JSdurflB5xp7j8UkXmEifEU4vrzWkNBLie5aDA9cTvkvRkPcHPOGwwLBvrw97ysm9BpaKG6K6 + hbQZgNNWbITnU4FwuJIIh7Dp8TyqLSa4wSW78VjYpbL1Dw8s8KuD7BxNUMMBXRmIo53Tho841uNs + ertOr+Ma20891p9IjS+fykfUAybi4EnvT7fj2zowycedvIyf9yI8Zd1Ci0Qb4zJ+ogu9jB89JL6c + u/OUs6k51i8/4i8X/KDR3z9cXjS44IsOMbPSc8lNxPyQslNwQr2/zdfo/t7xUJ8vdXthnMDg8b3i + R8ZFCKHDHOGW0JhH+zhjii3pgmQw1zYKboGeWKA/Qqf3Cp2eI+Zr39LyJV0iiaqB1e3aPZZ5qJ3X + MerceaJQpP6dP4Lyd4kq9t0cI+oFs7sV9snbGGNEiS50jCh6SDyV+7pu4JgleZWwCdzuf5clzKSF + 4+///rcE01QJo6MmcoSL3fUC1Shyk6572IH6udlJ1yLXKigwGAMv/Ocdz9/TcFwLk9pYSQjjODYd + y3M5a3ubbYHeUduXcbgOs4ht3yFQZ3aXLj73TLiTcuBQx6mgg8VeOJ3DBvdysuw5LHny8zht5p67 + p1bUzQ9LbYz9sKIL3Q9LD0lDjm83Iu+XTMAIeR5vStn98Pdkl53itXN/Ov0dGN9mGU+vMFg/+WP6 + Aet0b04m1JTv+DmbOXNybhCGOjn5z6CzCfY4cRyfeb4IeIzIYkGxFAnPO1dcG2j/QGibjoBXBEDB + afKIlXZkuSOYUAMhqUYqEG9FDuU8A4lbuV8wv6m9ZHPFz+FYUeSpM74HlpQsucvEoPpzE/yuaxdz + zpkuqiLGo+zELAbjQ3kesdXkm3pLgKJYS6YeaacLhSPiHqGzFZu147YwCkaqU5UdFoYNG+GYODhe + DRI/oFzxKiGq4YDRxaL6Q/awnoIYt+x4cDzGaIaPs6hOzqVR6LZeFr68LBzrJWOnjHW6LWQj0+si + 70S7L+TTMnpRHvt+vUvj5TTbJosVjGW5ysj2BZ9xMnkbg9KMgZab+bt372RysIozmneKUqTnEuih + H4a2xktyoeUuvU/SbB/XXgdGySXfX7rroJV1DlGsKTM4AAXGwH1gXlrwx3siukmBprkpfkBVCS9Z + 2AHKgV43q0pIlMtVCflTERH1P68rLluQy91yVcJ5ZEWBHcwixixpQPtUl7EDh/Ns+gzzlN6dnZAd + nBK6vyTT/9nMSTfMw5X+uKlWQ6pNBKqPUvJ172CBbxC6EdyFwVG3xLG0Iy1wKbCiUndq4XHmBRbM + XatnopzvRk6KRi9F6Br0Nzm+DDOlRqBktnxlECN7em6/tZWlmfF9nXHnhHdFtkFeXmF/t8tLl6t6 + vlDt0UpKjCArQsN58Pk9hqUXVRbzKZBrij6J6sqIKCMazMuPZxPcqnkFQyf6M7koQrc6yKO5j23u + irpAkNGMFkPTF2sSPUun2Ph7xoROGB5TFFh57k4nLmL0uUUvQyEexrHPjBUv7vN48d9fXtqhY37J + 0etGl5ygXLrk6Cldcm/OP5ajfm3LDfW4JMf/Zc4s27N8e8YQW94VgqoEKqJySzMJL77DLMaE+CSJ + 6Up45lF0M3v67OqwsrcnU576rcK6x7svwnGrFZ6DS+wOAWuW3KNB0cDY95vFhm3n8F/b2hYHjF+v + +LCpNDAKhBKZ5RlcDtlh+oqjiMYnparBOtaS4iu3LSd0mFu+ZLfafDXAK/mlAoEKVVAlmVX28IO4 + v0nl8U+LSF0t3Mv3mqoOAo9nlleuOihHqhBXF7cSpAt7udOga26UOoA5vQ+3KTQhiBw3ZPa/Jn/C + DVmJZFBKPy3uksXnbQqskF5K///svWl32zrSLvpZ/0Jf7u1kRXIIzkw+OXam3hm87Oy3e7939TqL + lmhbHVnU0ZDE+9ffKhQAApwESrTj7O73nN52aKIAYijU+NR8gAdWXvVumDDCbyr4d7WltUGvD8BA + P2yQFxrgA3frgYfS3DHgsEhWbN/uloPdn177QLtUBWm9AUOyk9Zxjc3eVtO9qdaEeLhuSI6pGna8 + y2LWHzIVsmF9JXdWFKzbDp2J7BqSUe1gna2okM8qy7m6cih5smloiNntrNEld8Z+MxOzYsMgdOyY + ByPsLI/cT7D4Q+BZ/tVKWbJQVCLYb42kyJsIkdeJE/uAVXrdUuTllCsiLz4VAasffo8qIq+b+GWR + 9xkojMwJR6HrR7tCt6croF8Nxle2NCOE03FNsVEzXGAlojipGGf6irhW4zE8dSnH+VcIhOZYfX/X + WItgbNdPwiJMP3IEGqsTdkhqpNct0Vg55QoaKz6lpT4/++C6xxU8Vqe02IjH6oahF/kj+JFggGHb + Ys9X0ENNnP5fMfPCh24Gg8dhaZb7SmD6n5yw0D1iTgd3jWxi56xRHWiuGvlMQBbxG7i4gEv3vB4H + WbmsS++eLb96ntFiiU84piCwJxH3s790aR/5eF8ibMQoV5oqqdGNJGu+W+6Anyvh3bNwZh9ut0dX + FmCl9ytdPrqKoI9FvJJcTVQrODl7xcJj/8jpVNNSa2XJ27RudPZWPBaxSwVA0PuPZzwyJ1dBBIOa + R6kABPKSIEyIazEKpV5irFFmntuDFc9QRFfgSA4gxx0EnesDxLQJMehmfsdTw/c7G15CaWjV6dyf + G1HhAcmxUX8Gro2sHM7SNP0TRYx0dZn/gGdTnvty+1jKdxSk+okDjqgqwOcPMM/2Kge9biWHCsol + OZSeSjn0rCqG+rxAuy6GRi+e8TDfYAQ/QqVzUImqOxSZVulmeOaOhlTCCn9D4f310SSfz4YfmJu9 + fyWk1PPl0k1bLNyE8F7Bh99h8PYN0VWHYgiCBOXRkiirMXEMatnMNltRW1GZdEw/stcE/W90UDFT + Nxq+0abZiaJpWGzCpPBZk1qUsCiIQ/dfg3M1tXKQZy4Zn0dDKqxOOoLIotNWArjJ19Hw+81scjOc + YUJjkSRJMCmFteEy23zPskXzqMlUU1ig5bSrfEhpFZ9MtreaffWMDZ/AFmLHS8rxgV9fkQEc31b5 + sgO+s1V2nJckvVWeqaNgU1CN+aWG5oR0HkdHcnbhUb0E0B+KU0ucutm22tYcjbSBaaRt4ig269Yr + kCRyEa5o7GY+He/pToQt6u70AG4RFVkuCchtbrckF97EOseFOjBTXPgzUb/m9fEp/O/dEEuUyNoC + A3z6vPpYI0i17GwxyHoFX36UlSz+WzbCUrALSLA7Z4HfQbDjr9sJdkS5LNjxpyJG8PQ8qMh1EdYK + Lsl1aER2k1Hohn7itpsX8xXQ/2sDu7yXVkBlApQsEHioJCJH95K/la2kpHTx+6fxfPY1k4HO8Fi0 + Xg8uPpypQLggjJ3HYrrsi9mHYseDft1lx+PrljueU67seHwqkG+Ov1R3fIz1o0o7PgY+FoUj+JHI + wiqf0k2wFNt8L4ybE+V8cAMn8sMK1h6Bncogj9Yql0bMTZCETW4Oo6e2+Bjqq05ZMAHs6oiXMTU+ + jWHpgTQWeqp8Akzj8fAJ/JctR8Pj1RR/8Kl9+lJriOW6xIhgc4C6qFIC1kq5WFzNubC6FoGo80za + TeDReguvpKQeFGlZI548OKbkwRXqWxus/jEacsCV65GOu0zaqUB6gwOxns2hN3hrgLtIndMoEloD + GSC1b98xy/rRqcbo91EW90Ahe+9QBikWM1FclS+5NUbcf1KV14gSBV6fO05kzxLpdSuWKCiXWCI9 + FULA8Uk1hjL2TQQkD1gigoi44QhETp7uiizxo1aYKbu6ynhghYmMin+EMwCSQrbKpxx2U0GYy4h0 + 4nfi1RK45QJfnhsloCTDHIG4CgdbBOFkP25mlwjCM8nn0zHagQiQSWtJhgT5J1wshN7JFjDfc5m4 + kE5qIiv7El4m+RjWdwkzsWgCUY3M1Afd4hPHIBLH5fhJfe5ULr1OMnLcpoqX9SQRh0iNE20mJeLL + dHPzPb0rd9KIcyo6GfyFdssAT41CcYudZCDmgMtIlvNnpWXj6nHWVbvOrST6KTscFFfAV3h10z15 + VUTe6ItyD4LnvUdF+Z7DapZiL0mYQufffmBeB92PXrdi+4Jyie3TU8H2Tz5w15jB95nnlAKJEjTq + B2EYjtwgTDADhEfOv/scB1yimknwubPJnDk1Fnt8RdO+S+7qAhKtHp/Oc5q4IUPNxg1ZhcXu6FEY + jhsR6gKvCSDb7LEhFpwnIV9nLTb9IInMbLO370daQHsSgLASlgPaGzqRCfNlzSOJWamLykcMzm7y + GPQZmi80qE9WW2CIIxULvhYCMBpGgVEa7zfPL/BIZKvr7SViK2+yAd9oCgqVOa6I+SaDqfFdu2h3 + C9KEiSYbL3oK0VoDozkYYAGIcn6qluBAgn4QESJcAxZddT+1uocbUKfxHBEX73wcu3DIvW+bgy0M + SjIPRPXF7lygdU9Jvp3ImnPucdLNXC2b2FacEx0YBefomSiPcccNkFfz9Fu6yOdjfwwD30425cit + T8enw2IasuWMktueTzM6Evh+JededY9l53yHcdt2TxglnhdQ/WgNEsMiK6AAOwXxCdZdHSBfFIxR + 5PbWmHuNigh8Cu3YD1HICUNCN5DHca8MvdgR+LqO2wlfF1+3xNfllCv4uvhUhCsffwwqYgZIUm4F + YDeIWcLiURB7XiT2+GuV3FxxOF/kq42sRnAsk5I/pnAaFxkM8Qn0K1nYU9kGSyBMbvLFdIUk8y0m + 4EpT6EvyI4MEjT1OQFnIF+NNen2twVh8T9fDeQ6cZ/Yn5kblFaIShze9DaqiUFvvJbuhb97eOqZ1 + iLqUV8HGNomvtclRGdu3anLqJC0Gp7wZSDtyEtbaacloCPdAE64wfEICt2hFbuvLrl92vKrvLyX8 + mV/78WykgQyoaR4cuAOxsGt+2WkjSusm6brA9Cbb1RpjIKDtJZy/8WUKh18ZF0lJvUons/lsI+Mh + Zqvy/pohJAu5I24oICffEvAwsLeMD+Pz7TIOBvy8qvDpJGIicpfpV3NlbitcqTFJL2aF5WwJM9jR + 8hY4njGSPelg4RVHpzO75URAosjbD+rOLx2Iw0Qa7x6n0k62jajapHkE+2y6I3rDr/nAXVNVP5p9 + KO3yeD2O+losiQkyYa/PkQkDsSsTUfwOafb0um0iil9Ns6endIl/Of9nBUvG42CM5TQUj0WON3I9 + l5tKeIH3m1kOH5r/UJaCL6sfVWwYGfJgBuy5TbdIHDpewtzKlfQtnWzhIpFxgG+2i+vZ05JJwS2D + ryjVOwRlrFoBC79gPp7O1tv5FXrnsh8E1k/6ByFm11tzPRDk4ibnWRLHvl+O3zPRSMoVj0r1qspX + WJFP7iKaT6sJgbvE+LoYeFmlwTeZdBljcIsnZbeiLsjDgk9JoRUivTH4sg1k17zIdb3arsmUC9IZ + CGv58ia9hlOj0fZd5jeVBDEWuEJ7triBm5D7A0shAKxppuU2HJxodZr1HT9bSwFeXP36H9d36012 + K+57fhMhxA6uDNzq1ync2RttGvHaIBWvmNQRt46vhx8+HjN1gXAAoLPLmbvkthwE7eEhmyLvFc3k + X9Ypul0N0/nr8zHhgRV3KnZZMzsD5AdFipXnDcQsIWerm01r8cBhDreg41Hjh2pNkYf1wYo1xg4l + Z7gksbSfJ3uxRahjaI3JVsCmMljL/TXNnqQhxMDjOubrczxxtHrfsvVsMs/Ggi9N24jXYgDEiUjV + h27h/gOG10xyJDqF3mEMVvQTN+RLPM3yH3dFvGRPGRV9CYiumzh8GuRLGiHg/rOOAhNnSvrpaOBj + NjPoB35hP6lh4R0F4Z3E2v1LDiNpkvbBfnISv5OxCdy51+l8zE+enKlu9sfDwi8P9ZXZwir2FwR6 + oMzbl93VAZU+MI7LBLTUWdZmXt11jI1BFdIXXoh5YercL+wi9pQdNzn2uoHrqzbWllzRhWnKpYck + Xy/zKyEtvxljmLE0xPJI/dlifDwaGn8YnkGDAbbiBtqACUhUj3JfEYpCT6LA2ehSMsc2jxFYh1/j + xdkHsu/w2OlYON/N3iu5JIcXxngE+iWlCZC81fi9Ni6ODhmrh4d/xr48dLBlO2aIqja2h052YRw6 + 8ZCO2o0ewCxPnFoIdd3DATELAhW08ewlkS/giGtEOW5D3hXhEYCOGKim1QF02BO9XMZBRCVyGy/g + Xa01Qae1pni9Oci6eT9Xcf0gerjHHwebcN04iFo2V+mGbt+w8hwHoiAtqEX2Bil63bIgLadcKUiL + T0VB2rOP1Xq0HpYsMOvRjj0G+qkzgh9RLCrZmJbGSgg/2ag+Lm+rNir17pWUfkzQYrdidzjMY/L4 + Mh8+ts9dTfrDiEP/oS0DNhflzCxv8ksMp96Aijm5ydYDXE0VIBIKtBCcTuP4XBUi56M3kB94+D2W + UF5Xw161PP7yvFLaxYcPjut3MCDz1+0MyES5bEDmT4UX+OK4EmOMQKwVA3ISBGEwgks1FgJxkTwT + OcOvp2ld8R8RviCcr+u0PoCX6mY0G4YTN2oqSRxHQZA4UeU4d65t3ESoet21GrAbfatO5GNKRplz + 1MxZQ/BxKdcD3aKFadbzHDeM3RI7uTjXs+smuZlsXFw5PIyM51jQG3mdUTtkYYPJOYn9iPllFHa1 + BWrinrHOWIPdNsHYiCT810BPLiyAzLWyviX6hUUUFks4DbUMLj3Zq2bSYQs/eXdxFjlPxZ7VSstO + yW7L01VU6PBYME/s+stYQa5iKAxOdjmffVSzkXDEavsP8CAqVpv4Uad6bPWQoZaNm02rVIu1fRsp + c57cRbo4VN5R9n33BUvahVBtWViPbD51BrCOAvTjKTq0X3nyHqxw+9/8e5jeEEebQrXaT21He5pL + Yab6hmhZh3vLC384NNH6zXxgCvgelflqnEpSjoqE/eLsVfQ67hj9KdtY2i9UF7r9Qj5sLLNEu0WL + 6cG/pH/m6eLpoOPr+hiw8LEX+ALhYPfx7FJi1uao7gYlkSsUC6wk1iWbjl63xEpiNdl09JQk3fef + PvuVcEc/DCoJxoy5zGEjxjzm7kDszOdAv5pSf/L57D1wFy47CBed6b9njXIoCFKh6yRBRRAtmzxM + uTZpcqyb9B6VyqqwQAM/jAY9Wsn+a2BS6iruNGxStyPb7yp5cCWusuvHnUqJwOu2pUSQcrWUCDyl + g/s/7y4qJiWHO0dLpUSSIIoCZ5RgoDLbhasM9Gugdruqjb/C8XLDIOT3wz1k3bAkoL16ShUTF4fQ + tLzE+hRNexbJ/jLgoYKUH3qkA9Li5vuNS7CSxJGsJAy6QLTj67asBClXWQk8FamVr/9ZTa10/IhV + MNoTzI0ORwnWZxVCwFn2AwO34AdzlpSBh7+7S+DP1yLsKP2aDbdLrvufv//0VtZrk5qGCDVDbeTH + jNDMhKlCRRsfyaxN3k2ZQektG1IUosYsSTcMMVOqqXiQ3LImg2JNwIkmucLuI0doDQbvRI7Hyp0M + zuq+9LU33F7O/u92toHxinoBRqgc/u/3y4m/1CwWMJPBsmhXDMeYzJRvLDPq/GVhIsfCXmM5Q3xp + qQbfS241QJIIqCjwM0UgP3Da7RrNBSA8gwyhdzeFn6tptloP+JYsWHXkDcSMcOWuYTI78oMgMJC3 + 9ZB6rQcxBbY2GiAbGgam0gzvVIVhq0alj+wq6UWxQaDVEt/g1OxA4T5kPpwIP/ZJFZYTOJZTurMk + Rr1u/ljy8h9ZWbyE/Z81v4JenbtJB8heet3qChKUS1cQPRUO0uMPXtnjwpIIbYP6FeQj0FXgOdEo + Bm4Qyrp46UplOck7ZZ5PgLkg2ZfKt8dXY3jhxvHJy+HN7PpmflfKLoL3Q5emDAebrubry2wluTMm + iAOBk1cYyUJu13Tu3SP8SkvRbRNPK2iK2ncDP/Gicmg9HOhNvs6a0vGB4wY76MFemFPqLo3xVB/l + 0xHM83Q7mV3Os1ovRbX/l0PoKZ9mCnYXVoKVFhO3/QN065ndlrfPNQKqILJUBgeMT4/YFnxfDXDc + Lg0Vt7SCXAl4oPjzoXBlgExMQegUBCZH1kO2f/8QAgcje/Wap+yLa/vggvTdCN4zvGyhpBwI1lkQ + SuJ6QgSYAQODlzlaw/puPrzMMXuz2/0DSlAilnT/y8eVeLoeO3aPHL9LkF3RyBZTV3VioOrKp3Sb + uM4FrWHKha+Chz/BdNah/3TQ+Aa9YPaEcLvMpRgRxyXBCu3HeAQKnD9j1qrgemFAwZOFLFRFipBc + bd9jHnl1lR+7DhV3RZHQkJLw2HnY7XFdVsG3tTJgtZHFuT6wCjUFhvPWsH2zxbdsni+tJfFD0bD2 + chDuaLSjS7JWGwdk1YLP0m5Ii7QyOVVqI0oxl9jnB8dK+57rGWV5usOh+4yuYNjmOeGj9lWHyCWO + rkoEkZfVtp/2K971CAnuQEK9gU0nnqo6xl4z58hxO9XnKVpZ1x5T3Zjlx+RjUlOulzMRlfn27P04 + XUyQY3CDIhZ20T93sJxdj38bYAMqKhaJomKBw7kstB+K9n3U5QmcwpaRz+8651Wx0KWEmHSzSSc3 + twI3QhslWkVkyKmFD5pMGbGnjoJINl3hi9v51tqC3YnEDsNInDTT+tWT9303ooJvTTuzkZU1rB7s + Wa+NXvPBbslz9YGj092yxq3UkYfZ88qDuunHAmQ92L6YLxLyq1/9eHi6yqdh4bvgyAm6JdTIRrYZ + NaoTI6VGPiV+PrlbCoRIXghseTObzxYD7XcFNcYn8W6ONsg56EuT2XrMT8OQm2i5M+kEiA0m36/c + iGfaONJ979G9LSXAW0xtW2NSNw8u/TZL6V9ZFai6RhHwaGNzIuKu6G7FtA6CbN9uHuFe69/TQVA6 + VK6OOeNsmroWHcCi4b2k3VIWHF2zNvupBz7YT3ft3CEOOPfam5DkDpSl8/HcDRx7IzS9bmWEFpRL + Rmh6Stzg7fFpFTYmcUqxUMGLZ1HkxI4ziiIQmgT/eDvfbtJbNLdNRam/O2SVPJ3kW7barNFZLN7g + Lqbr9PY2HXOo/cvt5m7FLWKz6fDJ2+NXx0+HUyzfeK010o2WulGzFcOErNRv02k9gE0vQR3X9V/e + YKr2AhOb5Oy9HrHPmOMxNywDfNfNghk6X0LBtSO7P/xLEZmvSA8e5Q4Y4J5W0Cdx6JIO4snwBUH6 + YGAQAWNaHWwLxTYXGc44GaPadretTzaJyIItl0XO9AOG5PRrA4dTZE53w9F7KLKtJm1hTprfHXTL + kOtfDGd8CDHPYeR/XcKZm+Y/MJCYF27FL97Pik0Za+/OXeb9Y3xsfXvJBlb3l6JeusHkc7rD3nz4 + bBYM8jzfi3myt36JOS+eIRCDH43gRxTLmsNomZ1dzUj0RDUOpYTlkguqHA4/Xa3SuzEOaKpD3KaL + lBsdKP6Hu8iy8XeMGbuR5VTXIPtiMM+1DDa8WcG4v49rqqb+hUpvyXBDNw4D9ljKY8ldK/MDTmIv + OWJRN3VMtLHVxmQXhjImHtLms5BRB29+e3Wma7XtEu2brzdscIX/wYwAlgSkj0U+Me588e+twJ7g + qWwq+4jAjqyvlwPVqf29GQ/pHOhPeXkYbSJWtgb2lrEjx+tmaxCNrG0NshPT1iCe0v4OnQsudcwm + WtVWlduiQXZYv2j0jEbmpADW4dtptctKYK1Ihr7jKruDhWxn7XBxXcLzUoW6tGjIjvZPl3BAijmj + ErnSOdRG+OHKCPfktuxmrnBU63xu2WmnWmrt10wi8WC9DlUU6XVbPFivWkWRnoqC8BcnGONRzucP + WTmf/5nrxFHojlzm8Bg9PLfn2W0+zeZUmU9uDo6PObmBz0g3mpswiH87TYtSzFQafj0J4oqQA0Oq + wzVnYRCHTQq46wRuHDv3JeYUn7OiT64kqHslLbtmbIOTMu44/9I60io9HN+QQ+fxwgZGVDrXQxJQ + vixAo0ZEmbblGjYEoorfkRSa4b9BW+YyJxZOxIhzMY4pdI6VbhBf3Cj4TsUTMeoXBawFRw/lu6eA + D3UFfCglar5lzy9ovDPLkIl2UcKjO50OK/+s6WzdjFtem+LuiZoidZNuSSEoUiU6IqNpNALS4Bux + 1kYluNOuHfSDHlcLTxiEpSmECQTFqClhvz1OyvFlAoyOGNB5dQ42mnPmwqdMYz7tXRIPDxxKUjk7 + dx1mz8PpdSseLiiXeDg9JR5+fH7ulVl44AeJycLjF88SlIPCUQISvydY+PFqnQFDNnGkZNYJSs6p + hs1gZE4UJVdR0Uo5nQlFfG0X0/XL0hEB2UJWo+Iq9PFqxZYytpRQMCb86kjliOiOgPe8yhWhq3il + UZZgx+OoIVw38TggeyWuuG4+asuLBcwxQ4HfGoZVg766SKrkTZqR4zRU+5L0Bo93xQa4EeVtAGJx + IND0+LFcA5fY3vJY/L0rRkQE5FsziRVCzY52PwzjoGxAlZNhrZc+BmNFF5d7a9KFCJEBESHj6tUL + sVjru9saZLkuK8acoLpiO7HrLGEcAocJx5gTd6i9SK9bOsY45YpjDJ8K3nv6rsJ7Pa5WlBxjvheG + bjTy4RjjkrXlGt+ugH4VJOCvaPzDVJ3kvnKNnTDwNav9bPFIAv5hKzjGsMZXqDrl62wcjgt7uwwp + 4hm0T8jsM/sTTvfT/QN0yKy13l6nqz3TvGI/LsB55eh+dvHtwKHKKp/OHbcDkCW9blcejSiXy6Px + pwIY7/UJqyDj+V7glcujjcPIcyNvBF8fSiTLc/Oe5vU7ZaThRYr3LocrE0AMqo7yMN3w27g2bk8m + Bl9kE1bNxNIvnh1hfyYSSdSkhCduFLA4rACR1F5xqAy2YnA6btKEjedhAnZQKTt2vU0Xd/OxlpWv + yrsIwOhavzti9jZh/HlRFLvlIiN6iYZaMY4Xc2iyBiROlEReheRYQ48rx/+bHn34eq8M7VfYGgIv + Dj10ucNkIMNrmY0nb1+/efpSJbrwrtVa1QGCNu60kcgQRr2d1/6+QT8+aP2mcsvnSe7hy+2Ucx9+ + tBspY0h3vr2+kZKoJAfvv/1yhvyCn44BP3wKHsajIt6PsCZHX0UtWMgSfhF1GU+759enUMv2rdhy + 39WC4cEhbpRya1mApXvncYc+/wVRgQiKsMOlsdteI7DSO7Btu83hJJRGQPxBMI5WMq2SBU+3+OO3 + D06S2EsW9LqVZCEolyQLekqSxe9fzlgVIzsKSkqG92LsBoHnR1jfnTERffeJfBswOnGWR9X6l+tb + hCKUtvknFxe/P5XnHM2sQw0EEV//3RuuFzkaEjcgqKKdoISzKp1qHE41G7P4gvxtJI/8vlmyatAd + jWGhRlvUEyonHJWC8txSdJtmdw9juAnKYoIYeg14ieeUwEsaqemgtdrHUvZjNuYfa17ZiVO6skd1 + xAcXYg2A2O+eDj55wafnommJ5NyUFoKXGKMrUy2CUbMS/kATX7gGxTYY8F0nr1QWxFTs3acIATz8 + Yq14tBbGb39LeSG94fsvF4yjpmac7cEVffE7TQk/bMGRPpIPxt/gmExma3EU+ePCJMU/mr87KmiM + FIGn9p4EEB/d1o/ACMRskZEOmnKfVvC3MbzOxXFjxD0OikLG22YWBvH6ywXJUw8xUdbO8l3eCDsq + zUEkHDdgqOEIWzfuwYveQ0T+Xn5mzty4um7NGp9bFioBTkeWgFZSHQQEVxTh5UNVSacag7L54D2o + tLnXA8cnDNFzL4jsr2563Q5DlCiXMUT5UxE3f37KkopRIPG8MojomCFSsOuM8GfkCLOALEy9yH5w + b5gwEqAgh15YxNZAvU1Ue0T7PnegUZ3KtbDVz/jVv8xWQwWrfXmHRoa7CfesCXMgvK90MbjEFPw4 + boh0xa0RGrxVOjz7p0C04nxchYlocSwwTIK3ulj88JYy4n41ZcmhNWMTHw4kiw8BJmuiVsGjF2Xi + 04qFArRLv0EPlxQHf6UFHFx8+qdy7wRx7PehY0dMK1oII72FI7+PK5mvhq5YG8tme1v0pZ57GNuD + TXBx+ZXO2VeN2chOje4H5vZQMHZy/KuvsbzDfrVCinIJWUJxfeYS3qeP7nFjs4HKSbCn0kOBca6z + Rb6ebWBFvLFFokDdnQ/qOiuo5kSwO6SqvPIpVe7tOXM74LXR61ZXvqBcuvLpqfAD/PGm4gZgPGhG + h2tLXjwDBd53vFGETlIRjXHxhwQ7mGegW89F9PV08gZ4hSqLc3dVNefrOZu1ijIw6uYAtRj9WtXb + NBsbGbmtZvTY9eNGq7QX+0ElFkILAjPBPX3j2jdrlTuuF5St55bpw2blnaQR9VR2Uo3Xq5tkU+Mu + zVg5G61Stp0+f4nlmSlfZIDbR5V18UK2X570buyeftKlcbGK61sG9O3u/T8tQbqvWA0PDqtbmbjS + uRRFdDKM6ywi824ztKrOLAGy76ejsnAjuXYooc7c6LV75LBOSGeijS3QmezCwDkTD4kLE9xdekup + fXpagfkXidprJh4UPbiB78KOGdxbfMOh0QjSRuK7Iu9HRu5jgKiYe7yK270/BRRDn+hjDynZ7gMF + hjjfivOttys4Gk0IFX2DPPJ+za3YBzBMR8I7BE5HACDOJzLsb0+E+/8s2MfAiYTRymFxh8I3/HVL + oxWnXDFa4VORE/K5CvbgB+hvLhW+8ULfC+ORF4ZxLHjnx1LcwMth/g26KfJhJzlOxboUjMod+hdf + 0PmAmLHAG/PxFEMIVvlltvgzw+p36+F3PGsphyPmANG8IB7tMNOy8cf4Nt/MrkbD7zezyQ16qIxA + 2PN8yiNZi9uVy9nn62WAOP3DG1geyqWsgMeLxJW8BjZiRyByU9hMHLosvL/UFT3KdbraGkYxH02R + jUI7Cz0WBf8alJeUvH64uSnxpzJHfB65VDrbrIcuLMeQL8e6t80wwuUfmeuPJrJ8TcY1IWlnKrCE + s3bYBuiRLC2T+Kr1ALe9Mm8FPpq3+ARxO3l5Fq3sNrjqXOIrdXmf5ov+JM3Q5USK5S2BzO9ROD5w + VPKpFx4B4+qSecpb2KadEnkj55Q/Ig63TpcSId2wE9YoeIPf3eF6cf7prC4shtMZ0H95CXnPPRTY + 6q+fdHmA9sVPE1+N4e/uAbLOw+eHh1FRMkhirOxny/MiAh/Ugxj2n4lHVXABhEaJdMU6BfTj67ZI + V6wuoB+fCvPdyd9N4ceLvBDUOK8S0R8mgecnozAJ/VgUcpwu0r8rtVBY6yb/rooK9bFT8L+sXEq+ + MZCUwFUq0S2TfCyrlzbgTHlR2FhLOYZVkIG1FUdY18LMgtjgM8X6rTO4+2FziOnhd3FRr7IY9CnM + 4Yg8XZkqPvD6XMzO9xvMQeWAxugRg3fWJLz9lq54YaWhiISkwA1lbVO3PK5vgfrkdiub3A90YGOc + w6HxqkIl1YWVSrVU29H05gq7l8DSniNA42ZatO3sLqh9CDUKcf1wZo85xJlrapj/HFYv6OxRz3cX + ObrSFSNppNNghWSOBNaOEv/IiTqhalMTW0ht0YGBp03PxD0yIyvFbJkjpjC8MAYJb3M3r82U0e2P + Vi1fuyWbpRoR5g9ECaGzhg6xE2o/PsmP6/G4Sea/W20xU/QAUSR0Eok9RqQOTv8SkcDcprMH8vfh + 2V7OYTXM7ZruYG5BmUZRvK4jqYTKt5mk1GpNM77zrrNFK6S2NfxNIAL3unbQXH4goqpp2hG5m+O2 + WGRjHnmzzYYtp+wAy2rPHffj6t+R5UdU0kkfg+qxwKjHfEopxlncT5GS7J6Sh08/uL7XoVAxf92u + uihRLlcX5U9F8vDxabnCOEuSIK4UKmZREEUjFgcYgcHruvEakt9gFlfAmtP5JL8BNdQ8IVwsNqO5 + zo4QXONunaMgh3b55uYjw3WNMngFZFTJmQKpIZ3691jwrflDa+EZYj8wLa4a5i1wRdcN/TI2w5yT + Le6dMpKuUwqhqKE4eFQLM8ANpkqF+g5B3CaEYKNrCU2osa08Igm9irqxyX/U6RiayXeZbkDlU2Ib + HEPO5cU35BglIbMWLFk7R2PwKYoIyeREYf9kYqaSibvAcn2yh+X6VAvL9UmD5Tp+9b9VF4xXRuUK + XzwDaTz0/FEYJ0kSqZqPEjs5W/yJJdyHT844bjKX3fgWgv+WduDr9QRU6xlIvCncrfPZEJuoFkXO + 0Hp4ll5S7gb88kqe/cs/7xFH26fPGfvjaZb/uMOCG3A48cPU+Op4AKgqbjXtpji1sYdYIOWwpKU5 + ffKOqWcKPtp+GgwgkvzgQRdkgFunyIRlIcFaPzYgBMVEnEBgjxxa6ccnM9zzXQvYwdKgKIfkGr/K + 54XIsfd4f1LV+v4iEETMF0zVDchzs3n9QbwnsbW9RGRfYiaiant0oeRjXPCDYLU5I8ImXRiZtdmC + ElT//oHFHW4ret3qthKUS7cVPRUlij99qklQ5RUd9evKffEs9p0wHMWBhx4kvKzQu0n4VSmC5Yo4 + canc1eWX3sL0pguasIwDayOIzkq1IYrYZjLfgjT3cbFgznI0fJdPGPw4XizxBzxNZEoKvlG9vbAf + jATRN1NdZK0DEnpD0mjiew7czvW1i9koHNf1UWu0R07ZdGlyPMGwyWrPNxzxrALpoZzKAqyzHJ4w + 0mMBZBd6fmoq0xFa5omvXzpf50V0hj7/I7U4eHuJBcJfhQ1/raMXSogzMzRN7IbLdPL1EhbuJb9I + FbI61q3mPQz4FlVxtRFLCKmSEux4DNd3TLLjH1PwIBseX4sS6QvH/65FaKUmUj+0qKymPWOFWCgH + dyDJNiSxvwruwUAcud3T1AmboNcLKiJvUx2pkXoq6qSImLbrVb5ddl6NiCQ0i45ush/d+5HXmK/K + WoYn/hELO1a1FI2si1rKTsyaluKpKHyGWu0Krx3g3dcF0vig8Q8GZYQd9+JwMNg/LLZTmIGcyEAE + EDLWoVoUvW4ZQMgpVwII8SnJA1/enEQV7TWM/UoAYeDGic9Ggee4vkh5/WJgUIqAcx60VwaufS+u + 7y9Xk6hye2/qyHx5A61qwaVhQK6hleoJISA6w0Xula/xmgHV9trghXcas1yM/tSFXgLnLOCV+E44 + g+3xXgfzNdGpY39XZ8pND+suMq/XCqd615fqo6GPlnP8hOb86UtUy1QizZd0ewxsKb/kIUsiCxX+ + JhZICzA8RZwIAjl7lf84Lr5vPUP5AOlJKAmhPnPohvUA96BSg0OP1OBfA7w59quDLK93zZLoOM7t + FcJxs1e7qD8krcQUo9orIkwERvGhnLZFM+2Ih6J7uvNxbP0yyUypfNHnD8yJO0AI8NftmClRLjNT + /pSY6ftPn8tOAtf3wwozHTPEAHJG8COOgxZmaoRCT6FXZZuFjSwTOsegm87JQUWhtFM6V2a+G+Vs + zmdL4CRKIXvJ8QkxDluVIucW7/eL3AX5vhQ9XNMhNyejORvWne8yBQIHcj7IniBnzGc/xvM8X475 + r5KD0H0A/VT9EHJnmjmRnpnAf6JMdywJWFTJiFwvswnmOdWAqHfi/GXYgFGpKJ/RfaHR6bOtdBP0 + ahuelDBoQiVwY88HVa5Mlifcwmy3cDT9jqm9Yvwg8W2/avCftSsHeIDVTQRi0C9zE+FW4lps7cbb + vyT7AXSbLLSB7yc75qKjyQ43NB+k9fHoUlmhNqbt4WKxrW/eui57ubIJE35ffmq7LxDnKK6eM7GU + e2MCMsrROvvgRh2Aheh1u5oPRLlc84E/Jang3cWZV0UbTsom1xjEAqxmOGJhHMbtsOPLOZCfVO2g + rTC9Qej6TYZJlniB61Zweh8T/HjIkljo5+Qd2Q+R9DGYrOTejGUudeK63Yq7ySa2mdSiAyORmp7R + RmPk7aCa8UAEPmbMxqpsKg/pUvjmWjzivu20MbmB7wWhz5e2N1elR+HZ5EC1CFzuuaZh55yTvhx+ + cUh49V3WpYewuX67fZAk4x7r50qKILFzih/G32aLuznacnH77f3Jkk0kqsLpqdvR2qraWFc4FV2Y + FU7pYdnUmm2/QvtcSIHcqnr6+xsWMRACYIfcabbWgjAWMXWD5BBT665G9rll9w0V+Uiz3MTGclUU + fRIGR8zvZsYXbWyt+LILw4gvHoqNBYxvigcGLYTkdL/jyFXN1wjlCi+ab5miXzTxB6J4Lmg1gTz6 + t9TnOp1z6Na9lxCkE3K+qDFZXGKWyaO/9iHZtbEf6SHp81r2mSj8Xt2vfQSt70O9XYywTmh64OzV + 3q7/vtJgXQpNf/UBzom9C49et9IvBeWSfklPSb88+3JSrmvFEp4UoIem+y+ewX8jNxoxFjBPyP0y + 6kGKPjihXCl3T4SuebaZVIv6HRgu2tXYuzvstO076ksCOlEjyB4wChhF2aYLB8oobPLx+Oy34XTL + ven5+jYX232dLdbl1FsQNU3sjqJWIIP/85jEFGkLCZpmwgi3qg8Lipxu31OCuOMAtcPC/ihH8HXW + GLgP/xclNZbkSseDL2IpapbpZenD4Ni8y6/ZcvhknWUUkARb0F0+RUV7DmxlM7xNf8wQ/r48NDi/ + 20nG4ZxwQZBfU7R8TR9fEP/HeDYdnkwnblzt+OUQOA0HdUcz2uQmm3xd5qD+GztigKdQmipgexEE + P8xP1dRJUz3ePdW2pjO+v+jtmi2qyDXv1UpHzSUZ+UbjspPNDrUSVQ6j2LPmvl+wb+zGRj45KEhw + Dz/f3KyynNd20vlS93Q4R5C/Ta8RDf8QkK4eZZrI1dFg6zjw/pRd69nsVnGmJ9IPER/dm5nDD2jv + LK5T2D3Zz4cOcSlp5/TciTqEQdPrdul8RLmczsefCuiQT2+qYdBOOQzaC188CxLX9/wR/Eh8T1pA + NLDZi3+8fw7UeIgMWoMN70VR0UgdekIaWVzVhDFLUjVBTywMWFNcUBK5YRJWi/lp1der9epLAlfU + FOGUOH4cy0qBWgE/XnNlfoh3HUGrmE2vBQpxXbFxM3jKa4IKlhT1sGj0Hqs5r6NdBxxsfB/MQHG3 + v1TnWOCcpMOb2fXN/G5YmMx8R6URF5oTbKLFlYug/W+KwGfXj52B+CbOrxsqrdvABz9iB3Yf5eAp + LbF8emzmBmvJB42za0WpLxA3fhywxb5Hq3WUkvN6AnPd7VJ7lV63xFx3a2qv0lORLvnxuMJ4WRgG + Zcz1ceKHvuOOEpAOJdrvH9crIDSRySD/ATWXPT+IB4+khrncQ750R/hvwiMn7OSNoCa2zgjRgeGL + oGe0l0BhEjuD5DhNjDNUqsHtbAIPgPPj0bi6wgjNOxmYhAdVaF6/Ib0nZx/fn6KhIQkT5j4dYCcc + MTBKCDEw9Km6Ro2+slNbsUdYOaCTHTDwjBPWpmSMEz6Fff9N8kZLvTMSNeNRW4JpohQvjPaF78Qx + 1I6umVhIOFHAtC7ns/UNFVVeUfmdbJGKu5JnAC1zNV224SUil34XeY4vTKbUr/ARG8yD79wZ3Jaq + VA6Pm7bK4G/KvA8Dx+HKQMFR9Iu4gx6ZeHy9LtMVnLcVlv3b1GFw9agZH26zp3xeY0G68T4QL5zS + jj+AXMBcDU18M1u2zwPFcIcFomS+R8UUpb2GkaG97jQY7aJmlGGq6MI15HdLm/tQ7aRck/ni+MtZ + D04JK2rtF6vn8Iv1oK/qI9lM3s6BjHfzk5PxcZeIN97ANuaNqFej3vhzgU1+9sELX5VlPeBlYSXw + LQrCJBlFoYsoWhwYQytxaNR1gfW7zoZPQufiabUQ6mi4yNIVKFy8NBvnk8Bvz5dzGMeSu5Wr2A2r + dDOEcWrEFBy6iDHOsTTn0KiLy0leNpXGg3WhYVYGiLblxXo7fM0jJ9KnJeBx323SXoMgQXGzJq2p + roAe4s42OANAnYyYF1XC5YtTgsrqZrbZiklXxTjNDrzAZqgVf0ZjLDwWDi1THPS+C4772QUD2toq + MtH3KFLcpvhpvQXcomGL+twDuPTB1zQxMLVbOjUHpc5VgmT7AbKZz95Kpg4cSwzn2tjriIQti6N1 + 7/Tuz14tr51Q4jCxDsXc6HVbHCZWLeZGT4Vh4fx1Ncra88MqDlMYeF48CkGYkhhtxxNCzXyB5ZHy + eRlLbzScrXMs84mzfLzK0HRbjxxL1UApRQVxFGBJtuhuRKZ1m/6byyO8h1IhJs2HKYuCrqVxMP9x + d53JjCnovVpRrn4sJXTqphuBOTARIIJUrwQ+0M/jRmBBvQM/Ms0qjR2oK0HQrwdrYiFzg3/V50Yp + eoNfYNkGuC0LjCfCdYtdSqrIVtd5aRpagsVqnLJ74Cs3oCH3CdGcNNPa33z1s61fPZl5HzFcpx8R + 2Ajm0WW7T39n4lFpyz8W2s3BDkiZG8vm6aK3UcsbkxKTXp27TtQhcIy/bhc4RpTLgWP8Kd2Yb768 + K5viWVLGfsDAsdALmOONQg8tUSVUU3RxKZvqcAZfW8DPZ6uq64zD0vM8UfinKny93uQrwghACjIB + VEpr3Jv2JtsEyMALKxmvFSWTSy/vRFO9uBAwIB4WRDxPhvHoVYboVn2zuam6Y9XgFKsQ2tub7eJ6 + ZupujtdYAL0pZI1P1aw0XbV3a+DFTY5ShlCncRSU7lb9Cw0tK06aakBgcGCcVKAsapbXGHOJvInM + YcSCiYEO/iI7Z4CnRwV8+Yz1UWId2tNFle9dxAEXgbPxmrXqTIhCUGCdxm1boNP9h1tQygfqENrk + 3OIRwzcJx4dqvtEuaCv1XS/uULicbN1VwCEDZ5U9/JIyjUclnsxlVYRqeZOVHTgIHHMb/oRy6PKq + VXmWLHqXHDGvS6JL0cg211J1YmRbyqd0fRK6Kya2BOOv1cSVHX82esHStW7kkWsy8EQZBdn+4MIM + QShLyyC4gmXuv72bcy/yuyALuDlM85jePwLsveewWJui2l0+HmEv1OyvPvJQ9qH+a3lXEhE/44Ru + l/gZfN0yfoZTrsTP4FMS2k8+/xMd+KUAGj9JKgE0IUyf54xCFrmxkNo/GvVAZotFpl1fgsWOTHwX + kJryAg3sJP/hLocnQ2CxcLy2oqIMN5PUVS0RFUI5S1b9rJdYf1lEoyN0GVzO8Dc02C+gAZ4MHo6V + DSeENY9JAhIxDF74/COFMcCAPh1NVnixCyEexsbiihRfez8alia4SBstV7GTRBIVVgdaaJtH0+7m + N9rdWBI4iVuxu+0ZfmQYyPRhF+GTNROLrJHD8pShiQKv2fwmqA/Ku0lMdP22MneV+usMIyNlPOHJ + WO0r/BfuNT2oUijq6Ry2Crpx5JUP/+Ry/sf12iUHz9lig/qctmnMEwVbiI1g/wzFBuJbivBsXx8R + hPsfs+nJgB82FYvlJlhoFn5QVof8sOIT+P4tHYQCpAIOCk3NGiMAupgh7qnHFjE9YK4TtHW5h6TZ + S4kk3yvRqG64X00Ml6vMPJpyg1SnDy0HnvRSXBg2X2RMEG2FvW1qe9FrCrTai1iLquA5SlU4Do8c + t5uiwJtYqwnUgakk8Gd0V//jFFjmEksBShiFypPR8GZ7my6G/zg9DwIBuqDT9ryQ+bEvVAPm6Xvh + Nl/kql70vtGKVtHbjweOoSFArS8UB99zPSP2qaO3We5BJvcg6HVHzOm0B6mJ7R4UHRh7kJ7J9OCM + SqMOn0gHvPvUUEWLN9QLFVVV9ILIH77AcOqnjGskmC8P6tPmWwmUe+1oFroyzE5+28El8rrQbLpB + +yrDKbeZK7dZdOp33WbUxHabiQ6MbUbPSKf5dpsykVulrGoYkqcqbajd987cff9DZkB4F99SLw04 + Qb7hEgxQfySW2cihCA71jWicKJzJNmY1FojCwWp6uOg+ybewl2hD7D9AIE6luZA4JR7eWVO/vBtO + sIhzvtKoqWjV/QcVBA6l6DQYJjtIoI5L7ELNP41srGjhGTK21Gj4P0wh1naTC/2oY1+1DKGYVfwA + FkZyfZSEsw82orr7/FhUdNrPNNsePFuzI5yI9ydL5HUwOHeZelHBp5o6O6Lo/ushD90AXTZd4Eug + HK1HIiH6T/yzOSSVF4GQ69tLOJIL5IydBuWHiTJ0VraBvpx8lCvRmGtzwIwXs0NsjvfRd+vF4hXl + IWIX5NCu5SGokX15CNFJqTwEPaUL5nZyK+6Xjycf1UET98Wg5tnwI7QYYDNeZzn2SGzB8A2cjAvQ + IXDaYEeghoaaDk8HQGiHrP0QOKFLWHkIJgHi/Fxj/13uIwGnU6aigc9bib/70NmVKfqLZ5v2h91b + tA5EjSFEpxaT/G0Xx1etu8BWyTPvBjSF+t7eaS/oLVHlcNzhXmKtDk/viBiJfSKXHmYE2OfsAJAI + ySN9ipf9wDynS5qGbGAXMyupl6NmxXPhUDj7YkYBeZ4PHC+sBM6OvZi5fjCCH14i8i7f8xD7qxlt + XFFiR9X0Qnvq+Zfx2cm5BC5ezKHryTi9v+LDjyB7V6YtAM+STeRYXg6n1ysG2wkLmJFNi8eigJjN + /7HJhy4VHByfjq/n20kOC3n69lxGmrhxECWDQ82pytIQyJs6iqJu1i7ZxPaWFh0YdzQ9o43UAKsA + XFDX92oz4MuIj6Irfm+HNFmP5VKy94vfc8EAzw1Cvn0UrvuBKPkPfN0+HvTK/hAnlf7yeDwSSRio + yese6WRdusB6NXupZ1DDCXYWLbAf4X70H7gGw68J/tkX/pQXKgN78JY53TAsikbWRnbZiWlmF09J + CFst124sYU5856KaiDi8cONB8184gTEHqnCjgA2s8xE7IFL89CTFPbhpD5mJkdYnQkreYvVZi8xE + 25ntOV1x/yzBDkyu51REeTAjXR5lHQ1Hok0XiZSVzUbioQSVUfMB2t5iUP63ToVLm5GEtf9vStZD + hC/LXaOF98buEXO6hvdSI/vwXtFJKbyXnhI7X9wshV4zz0GDnP1J3174mHWdBW7zsbzH5MH/hAT0 + l5AiZ+6eUGkcRhAzHJXgNjf9SLbBGKBnhAUVoed2L3yBdQwLKutsO823K4Grr3xUe7Mb33XFp0qm + ogWt/WxF5J5CEvhdSTeNaIwgQvb3w0+6eyzikztcMgdGO8O3kQ1xvch7GRIQDJKafS6BuK63aDE9 + QImQDE0VfPHYa3bksG4VX2QjW5Q11YmBsyafEhvjgvsVzF62Ujzqifl1mDed/dg8HaRbUJZvUrT/ + rdf5ZMaTrGSjj9trLxykm2uKTnKZiE4KXSM6aYPwD9xBBfdCY56OveyaEEZkMbR7pdUeBcAoP+s2 + m9UnP7Xvadcnp3q2yn/MODec4gU6PVC89xxfyHTLfCVNTqtsvZ3zVeAhOqtbZYlKC2gzbNDVsACd + cak6XU9yal9Qr1CqLcDYa0oGKae8zgzKSB0EVymD+I4E1vRj+2xeet0WWBMpV4E14amANP78oVJ8 + mIWIIm3mBTxL4iCJwlESh5FENL7QAqU/f/AkSnE+r1bnfXSlH8KxAETk5vIF3JSTTd5Ys4BFMFaj + hwstmTZgseOWU2AP8AQ0j40HrJsYRDDd3nKAy1igfwoMYCchMEiYt3ydjYtCZeubbedasYlDQLMN + 1EaUG8AdlCiOT24M+mZEykOC7Hct39MbhjrfM9jEYqvZfMlB9Nr0Z5+K0Xw4Z0mHYjT0uhUXEpRL + XIieimI0/zirwPt6rmvC+/r+i2eB7yWRMwr8IJKYAnCnzUCRQV/E3ZJfrgspEEiXGj82+nviNQGq + vSYIF0Rhub2cwz9RpcxWPJ3kEj6GYl+m2wmPVwU6olDdZTZJtxTPoUO4/ON07Dsi5lpCBZx9X1ah + AnpmilxVKFFqrO5yz+z1EflT+eKba6KDBJR02JeF+Cnw2Pnij0UIWJ0ySXbztZE41LJtBrjZJa/2 + WRwOumjU/dWVvrfA99bYim5MXAlKKuqYvYk7xoapNtamGtGFaamhhzIP+26iNF7d3lK19RXkMK44 + dsnGvluab0L13d20XvA91LT4CCx3ym7kkqED1MbVbLFGjp7jP2CSuKQ+JY6Mn5kafSwojLEJkl/u + NU/p0e4b5nY0KGutrDVp1Y2pSsvH5QKqIl5G5vc0/sGkjVjkbhAOhBmQwkDe5vPr2Z7rAJsq8Qsi + 6XKZgoBnz0csG/8i5mRf4dsDVf/I7WROLhrZ7hnVibFl5FMSqjZZKszJhLK+GM9nX1Vm7aDu4fAL + tBl8nS99Xvk0DiJiV3ugv1sr0vsQ32EquU9IeCdmjpGuZdjqK1Qa4ff2VGYIRUYHJe94aOMoKFPQ + DG7dzLfyHHXHSq/5OIRIJzhXHhONwfw/1DI9LGK6J8B6bvOD4i9Ekqk2KQcRfBzBrU4Mmmj5uzpB + 3AJXoQME0uMYJJIxvYQHvsNU1coofanuYUyESnkOVqPwwyQ28PZvMsQAnM5uQQEVbGKvLGOfQNrf + f2CsQwE0et1KTxeUS3o6PRXWwtOqnu46pfpnPnvxjAWw08IRCxjDQ82thVNQgetr8HTWg1nieh5L + DtZeDTqF9vrx+EyCx9QGbZuWQdY4TBcmJwzikk6L9TV/+204SdeTdKogTTib+46uuwZwDYclYakc + 7MhA4hPfMrjglULGvK7pDCXd6Tadj2UYGI6//vsQAf2aW/Dmdwrobj28mG/cpd7k8k5u+0qhzRH8 + 5eoKbSLGrbhdTLMViN+rW4r5mM7w8Xq4vpldbThK+hLnHo2JRrv0CqNGbzB3fX2TT74OcP9J1Zl5 + UTAQ84LnqMO02tzSklvdQ51RxWU8ShN47PVKsZ97rdtpXGubuxXVI++Bdsy8uI7283uo4Nnj7RMl + 2lwfMiYsKeSIwyGPb8f51TeCvIhCaTD2gk4GY3jd1mCMlKsGY3gqLqIP/6y4rTwW+hWDsc88N3ZH + PgPBJxYXUVHLMZUC74hsfRfzH2w5InOwSGX+E74p+JvwaWQCumq65VIyBhRzjCK9TBPwGpg7Xrxz + 8S1bXXOzoZYjd5Wvvq5fqtyOISg5q3m6lNZG7BprO16v2XL8JV968s6EsVX9alYXnnZJwI0Ux068 + 38V5UpCJYbqrVt/gb+Mr+BRuZqLo78Zbkzlx462pE1e3ZjnV0ECQdUPH6ot1aloSxA7arHTtVkY6 + +NW21ADPT2GDdvlFap1i2qQZ41QJAi2T2+nydWOmDSmddQ3+hStW+yZYmctG2Jp2OgnpLPq6IM1p + epteZ7BEs9ttrTH8fqg2T5kfOA7XPqb5FmS/8RqdEFPYa1n6VU7ht1k6RO9C8WcYWpbOe3E41GSi + HpgFu6N10248MAsHr07eHg/wGJlvs3GkTmnrrcIrskps0c5cre7tSHpRQp5FEHRzo8hGtn4U1Ynh + SJFP6S7+cn58dma4UOhJObH+y2rNXKeCEaS64DGuoA8QaAuBnZhJA0oEtMMhQSp82l+f46kkM/U3 + 0B5g4se3MAhuLmvBE7FCwTqgtKKH4i2+aU7YHuOQu4MHRP/x8ZzFsT1KKb1uJdUJyiWpjp6SVPfx + /OwCjUsluS7G4DVdrgtejEMvdBNnFGLmlFcHU1pNeBFgpBQfq/IvuGz1cbVcs6giXZk4ek0pHKbR + IvQa44QSN4lYVfbqoRcNMR8EEhdk3Z5LtTV+R389NH2DktnSbJVfcsflejlbVSW1xClJga/PDAOJ + Me79a8zpYrAY52CfrTeg3a6ksNhxrNOvdkRqkRxXN19VSk2O5ocN7QT+XQPR2TQH5WiyXirZ2eTF + NxhTekAoDWs+3zpnrNXgf1Am28NH+u/wqdxTNbtDCLcJb0lM+3rV/ZvltazC+l3vbXTkxN0cy7KR + rWNZdWI4luVTkXZ6nUZ05b41IMW0VKRB41+G59B6gCR4SELoBSIihpLG17PrhTz5021DMfD2HetQ + NYOaktw5dLtodNVaB727HqMzYcAsnN+AmLjLX3TfUuFPy5iF64LQpsW0I1AYngm4VEqhwPbzEDhk + 2X/bF3Adoyz78krtoGmbgBNQNP/rbtUsX9tXs3xdW83ytVbN8v3FScU/5/Ba6Ho0f/TiGUvcKAlH + LPFdXGsOyrPI13D9zKWJH/4Hxzafz5azqXwG/8BZOxnppqyZaFjTbj2SM0y3tjQ5Y/YTmeARQW81 + nfHXFyMB0F68hJF2WEBtNBQ613r4KX3GX/sweza8Sec59JyhJQ1J5YtNOlusQRo5G87zfEnBLRKK + kYv679eTmkjcvnCESvPUUPUybC77xdDolZRB+A1zYDrf4D7EWFhD/A0D1mgEZbGTxE65lqa+wghk + WK2o6TnM3znWkvirIqiEL4/H2e65t5QdQN9U3GG4yuF6yPAkpDCY7GVPG+2lxUYb4DFTRbwwplNM + f9mWpy+Vrd2KzzjJ3TWr01KIpjYUQcB3y1myrGnTkDu1v4T8V4o+9ZyoQsrY//l20wlv33HJb3ib + XqN7GqZkb6wTzlq4xbGJD9nNdk+ezL6gVwLKUHl3zliHqpf0utXNKiiXblZ6Sjfrl88fo8rVyhLH + LKDjOy+eeb7rBWzk+T6Hr+FWTq7HAjekZBE0BXzmm6SecY6GETtKhl9PZY2aL/ltVL20WnddqZxM + U62aOAw9T1432jVWNpY2FZkE2aJsxRlptiKD/KFJHdqFJumWbp7SHCz1DBAzaw5n1Fny4o2XPBoc + ozpWw+L6F8sEyz58sjGXz+zlqbqjBOfnITdYrQb9TdeLGUWywD0yu5U1kYyVm8twmkzlO68HfLup + SBcWdELvq+fBPqtaGLqwqvtjgIcBSuMW1J0sdljQLXF2QZFswl57R47fMdtENLJON5GdmPkm4ilx + n+3lRELdq+obKO3+e3tNyjWVIh+0/XH4OxIZrJdbArl3E1f4S0S5tGWOokrhqG1yuDa6fwMKZ1KD + 0JzAymi0W45pv8iD0KgAsasWSZ1Q5IV0u+H3jjUTo2avbUdGaQWeZ64fVo0DivCehRX3D/XqmP7q + +DFBBRSrqALdZ9edg2EPIXfvwdCY585n9KChsERIS2Su1Q9eL5/qu7FjoFwgUK5lNHGNEzjg6U1/ + fP7ghI69m49et5KlBOWSLEVPhZvv+KNXFqX8gJWcfNGLsQsCFQtHLgsZ2vR4tq+qA53d8kITpQQW + EfGyyrISHj8ZAWQ+7sf01nvo0t195cTKLzfUf5bEXtjosQtBWAqSEh1TijBsozxkpD4MOYIRNtb4 + C904DliRe2tU7xPxv6W6c5gpyXGfQe9P1yUxTS3yeoCbRgpEcHmxgRhLVR5qt/I2qt0O5VUqm+lt + ugA6GZxbpAOHLoP7Iv1v4emfnmoXEAr62w8O6xCoQK/boaYQ5TJqCn9KHOzvx1U7K/NxgkrVVOHU + wS8j+BGGwmfyUbKBIQwbAXl4/TlKSBcxg8t0tcGafRfr/4uxgxh1LmtTgSzxJnt+MZzMt+sNYhRw + zWJRLvkHVJWssb59qVtG/y7tobAl+cUIK/F32p9qQOuXyni3luVYa0u1Ejf9e1pjUzUPZSmzo9mm + 6MJt6laCCyb5uJitWk3Ui0IzD+OtoYmahPePKSi4XRKDJsSiEkGc+fF6O7/aruQaFYtnFJB13bCJ + j8qxDi4waUPYUP+uJCce0CnnRgR5vlsvIwc3wptsrHaHzsNLe2Q01EEQHmq/DPDgSC7uJgL7oJeq + bmFCke5m5Gy96bW/8ImG24SvLn+7bTvcv921j8iEoExDO/32uoutuN5ue3XInFhkBB1GEGvjUYyo + 4i33Tqe8xvJSC5TRAU7GEWPdbA7UxtrkILowLQ70UDj2z96PMTodxDYuRqP3QKs2NtjxdxWq8jZN + mRG1eQ0P0PrguaGo6Rg45OQ9ez8UFO2cFO3ihkuVENLNJp3cyDpcWh/kQuJbp0LZzjn9X7Teh/O6 + +G5ERr5d+677Wh7cQ3O4U0LhTk0Ue4g4CEU9IDdm9n4Ret2yFhCnXKkEhE9JEn538q4iCfuOH5fL + AD0DFumHwQh+JK7Q5d9V2XhRwIULOchFuUAB4k3iUJX2WzhAlBmB+aKlDO2XMGWz69mCm9VnRZmh + FCWZm9n1zXiSL++Giy0CfCEqE49+hO54COO7i7PEAUlmvR7nV2Olpd9uaVFfDt++OYPHFC1pwj8U + ck+Rb4CjVcY6Lii/m9zcOwzY4eBdJUnbDI8xgwPisiA/MuJ4A8cHLb0h4lbKeWawbQln8eNZ3xSL + /K0kSVBvaIu1qIZZoJxZE2VcO8rBf9AOHyAnUAYaV6SU2Yr2rQnYljQa/RJdNINKOPTPAwHfCyBm + z6SnPevE1g2h53KznMmYsvWeI9uTUl+Cfy3kzYH6h5QDisSuOO6qO1AT66Qu6sBM6eLP6E6vDf8s + 3Oq6KvBuu0AvCfqE1LHXnCaiHuAAJFqfawyeJ4tyJ5EUdblby8Ykq5iBTeMdmAIH4j8VFuc9A5Ub + Tdgx4R+p2e+PsmChuyC1ajrsDLDlIXZM2XJewHjs9QE+CKwUUj3j4yF616v8+6YmOHlP6PA++bFq + H1MN2HY0rR2o6V0Cs+v4pssCEUUIkzadoRoA5NezjZ0D43BgLy/SP6GPIhFW9B4CjYvSQ4pwvdl0 + 7/FQ3IEe1CrDbsf+KBhfztYFZncPVS3CyK/5/tHwcjWbXu9HW15nlIl69gF4gb2Dh163UmsF5ZJa + S08FIPW7zxy3ytBrA27U1fXa+MXYT1yH+SM/8RxPhOic3E3mRvQLIa8I5w6wS17xG9FzyM+zfmkY + 47PFNzQbI4vF2SFJVQqv+Kpa42y8mvHrVSIqjYZnN3kcLMf4A7QJabTQ8YVgDuGv/nL4/QYbo2F/ + u+LRPtgR/vXd50DCVnNqh6qZLloq4rCiZpanSW4lAVTTEDufGKmvX46LYMOExSypZL720g3XbE0t + Lwlin4Vlp7pW0N30mpfC6E3wriRIPDcpa6IcZhgECM0zY855EpVNBKMS4Thy3SgsZ9IWfKCBchiZ + WGNNs1zRwDV0rDKmlamUh/FD0hfLV166wYEnVcZ4YcGZm6wIHdA1zcUWGBGSnmffsjn5a80TrgGi + 8ayEVX4tddDNzSrfXt8o6rSzBpw7KV07CVwecOCQNbml+C+3gbPnF2NYfIplRbcOiqfatu2imzuM + ss0kcFxr55xYl+rAjTI8rK5+9bRsCish7RB6D43vgpwkUsKUhUTcooCwkEjVhyqiqD+b10ru90Gz + SRtw4yiuEjwQ27flAxAtqvkD2pW9umhTFySD8h6Yrrb29ivf8z3P/pDtKuLbAh3Ub0dNnxNElD3b + 0Iu69PZLVVK9JKRcN/RSvQFb+miessCJ/baPgc0ymW1vC8AYSm+2NYFSHJkjNMh2MQaD6ESgdyec + IqU/PEobZ6OxsjesZz+MDLTeslTYmZqhFVVwJg8lT8zEWqa1WsXDqf4CuNVMpjkc9DEM1reo1H5F + Qsx+ZZeCAtgheOV2TDMpGlkDO8hOTGAH8ZQU10/a5OqWWjP4RyFhqEAmveKE6gfRHXzfRZMt1mLl + W6DatLuR4C8D+VKHeDNbLFpTp+zwI3rDwU/o0B0Oa6Ed40BQ3M/VEToCe9bxfHvbEL1uiT3LKVew + Z/GpwJ79+KaSvuA5oVvGnh27WBrQG7mMJXhN4gk7k+kLlBGr5aqNhp9W6e1Suj1G8heO3PnxDeO6 + IfziSjjY26v7y2BgjhshpmrJlMLDRLleuisvNPBi1qDgMxcLJnplfFfzKKue1iBkoq5kaPcgojeG + zoqRD9RMT2ff0jneZkUSsj78ShisFun/0pR5uctdAqNzmAFFcv1SFI2TiaO0mKJQHCra5noXmZ64 + mxQGmOP65OFixSVTDy/YrnfGlIlnfGtnGkUE64GESKEyF5hzDAyHRQ4A86O62Snh/wWTK/4bCWgZ + ReySJGmX4ts+Sx4hC5vbW42pqYfm8mHFDeeY52avq7cv5IRQ1fb0u0G1+/ZQ7X4tVLsvodqPT/DO + KkO1RzVQ7Vh5OBnBD36q+HVZl0fGbTvfZsqSxK/DP+Yr6PL746qxGSZOkLDDw/R0Ov3nE25KNScN + fAfHK/tBKsPS0c/PP6Gg+PH8bCTcS4Iu6jGrbMxh8FCQueHhaivkuOiUVtbncXG96gXKgfI03V7f + 4HHEl1U1k+EtUITLd7vgWaC3cHHL2PP1aAiHYbiG/Y6Xdbb5nmWLYoBF7BpsfXp6Njj/qJfm9IJO + pTl3AJHvWeCzIEA+a/zgIY76G4pFVjo06QTETxSOo5yGRmPRXvaeezES7Vmn9CfEazySexJBw2sX + ey88jFDgYZycJKHbsfiqamNnpii60KwU6iHdJ5PtholUyvV29Q2+ZzGQv6igMWh15rFXzDliDpoi + vDgW6OCOQ6YD6flaL+FeBTaUzfPFdbeoIu6NMWjNeILX5AYaYQQGSLnXq6wr1TBhFBe22MzG6TJf + 7hOlhg5nvpFbHHs7CAQiWBL9c9xos9fXRE4YyTna5zMSX59h7XPkwilT0uQmm3xd5rO6gpEtDrX+ + 4vlE+QttxtC1C/p3x2g7PxCALHUjAo6AlTu50agOZrllgEDXa6MrWCw6sEXBDapg3sEfwoSR1QwV + 68C5RNFEMXHwvjabrd99b2CoP+HKi5lAAKQdbtMlyM7kvNPma4lHY3GdrfRLfqcGEzCXKMnuQdj7 + M9+J4yQvC09eFiw88Y8cv9NlIdrYXhayC+OyEA/FDVEqyF0t0F1QwVsiiZMB/J/8GEIa+PABjnYH + 7Ym/bqc9EeWy9sSfivyqizPOn8rmRqdibnwWx7DdRwnzfFHoCgSYOxSzb9N/IxyZELbROpVOQJ9a + z5RnVyJbIhdIh99SHCk3W1H0GXztegvCPAjtmHo7GmYbmDxEZUUhep1PEbQwXcFmm20yzCy/yVaz + jfTF/39nF++f/YveXWUSEZp65tLsGjGnUBgu1/s7kmlT6yVMQg+6Hfrn2L7lr5roFBpZKVUHAWmx + qtNUp+u7oduoUjEWxEFUsbvugX5QEE3CyPfdSo3LmhzqBspRXSRcgcTne2rE+yVkNQx174SsKr26 + PCyefTXJc5hVHhPJI77+mP6bLYdPYL/5zlOyuK9T8SSCJzCCVYYfZW5mhB+C/vPtGsH8skW62a4Q + zCO9JoEpK5D9XiqYwG/aB3EU5cl8i5P1wuKMmWFodMCwi2VK4tmA2IZUZb3ETwZOt0yo2kCpnjAW + WBKYdRn3hUWT1jJXgPcUSXaNWWINaTgUoK4O2SSn+JYaZ7gV5f+crLHenI29QEQ8lmCDiJEHhmZl + DbMyBjHg8IKe/PYQQ6u/amw3/D5pa1IsokLUb85BXLcXi+h1K7FIUC6JRfRU+GCPT820c+Z7LOa1 + SnQEphgrUSdu4o1Y6HiBEArf3S1ziiuD5f98/kaakK9W0EGNCbkvcPi+DLZ74ucCncIrKqJgaqBx + UT6UYa+zy+08p1efb1ezaRHB9PwStl7GYxaWoMTifC7wIhR0n5yd//b8d/jf2fGn356iSbZwhZ6N + EZpfvAkX4mILuqLQhaezNUmt02yyQrMV7kKS2e8qyLmoiKKeg+nMwydLWNBNVlQlegr76J0qr8QS + xxsMeivKt1eBeHl8Qpmt6fneEesILyva2OZryi6MhE3xkE6DXmRphnDFqRbfOWj96zB7/8Z9ZfSD + iZqOqOlyeCkroOCVKPD1UOOokLOORAHSNYHKew/Vx/qD0vJB+IH3CfV6L3GVhf2he/0XzFTkN162 + /QqbkBvr2veO++qQooVcM/HLm6Ommx6Clg7tqNVBGxVg01hjqYu9RLWxh5qmLkpI0/yhBJqesTLO + tODcMshP1SMba6+YiBG/AxXEouZITyySSE8HF/O14ScdGEBo2H0NzOe91JB7qhIcMVJubrNZp1z3 + zmDZtlNnQXiRL8Y7LY1Ah3yaks4025MSBpjSzMsAUw35cD/u8lNZsAtifqCxYHgHRgZbyKIYoCXv + 3L/enXWKMMjfhla+Sa93r6jki7FpRw72sCMH3ezIQZ0dOSBuKAIEuC2mCCGQa6DHStu/qffMbc+y + frFtqIA9q+slhCF2yC9QjhfZf1zWFNs83R3DGuxDlX+C+SakMHnNEad/Vy9f9ZCy4Z6xCNYf4wd0 + M5Zm6XBgvTCR3CdyjpykW8QDNbHlPaIDg/XQM+I8yJazFVp6KdhVyWGNf9CoAltJPMrB2C1G1B8y + 6QuLHIm6HXXAGqTXbVG3oyrWID0l4fT85KKKuu2hKGKibj/zIteBMYDczg27VN2wOcyb8+r06go+ + f02e6/XsTz2V72h4LAz9a24e0VDCMHQZWm3wdt5wzziHWtYlwHn+fcy7LBK9pWPrfLLuAw+QxbBC + fnSwW8ugU9it2hM/TWeRY/hijLB/loQsLANwI2Idzj3qU3d1weZm4L/bhg4Yh5ETe2X30RIxUKxy + 08+An+kJ6brXLkj8cjGquq4HX+rmqpJjsN3M5nqtBSPnQEAC3vDwEZ6+sSawnbO7s+3J8cnJydmW + tmzLpmzbkHBwF9f0mI8m/ZYC+6Nw2sHxmy8qBNJzPPIbeUGRj6A+rqNu5IkUsOZVGKGypHlcOmuH + XQ06yGay7xhkAmdGQCAibBb8545YZJd0CmtqLhXXQ6zGtp1vq+cdQLHFxMl3PJferc9PF2yHulT5 + ++2xOVP8Pnttisd9/M7BgeDn1YO/0+BVO/Ze8iJ6sd73lVwRUXLF23PWJTyIXrcTiYhyWSTiT0Vy + xcWnSnIF4wXxSiIRDDf24lHkh4HntLvBrldA/94zKQ6HKX4E7rSBuim9gIyc+53rjidT7j9XZpAz + Bv//iDmdMshlI9sMctWJkUEun4qQs3W2nebSVcjxO7g7UDN71L9i9oC5447r8RllAQVx1rSrN+/1 + Y8RoL0TBKEKTqFgM7PJuOAFVEz1q98b8+7Ns9JE338UisXcyPS+8ncRN+6OnpPW9e2jP9YgJVXOG + VtYDcCQir6gcEnRMz1Bt7CuHBOX0DPWQOMCNfqtIk0S6+Hq34loIhpTLxyPFZwsWzMNUja54qVIs + hvt4xabevam+53qGc6pj9Qm5NXwFMUK5MG43iBHRyBpiRHZiQoyIpySwwKeK6g+6Uow2qQ3PU4YP + vZTenycy7fPp8MnZx/enwxhL/3nu00H9+3KyzqGPAXbE75Egjg+wf8lVjJhHZsxsMsNrg5frrhvE + Tr1jz6JOak1VzQ+nAzgqvW5b88OpgqPSUwGOevFHRej0mVup+TF2Qyd0w5ELf8d4dT2jFzQrefil + 9PZyOEWAY5yJVbbezjfcQoEGkJngixidvkDOAlx7xVHU1sP8RzqfLTkKIzeKTHgEEf5LQJiu79yD + EUwfrwSqArrWRRJuuhhmcLa23ACxQt99YSuWZ0QPRZTMRRR9U3CW8Nf5Hc9rE7TPljcelajAv6tK + FnfFC+s7DNM307XVgmBDfblWKCbxNIFS+ThZUgI3moK5hEUYHOJjbwG+2x+j74HvpIPj1yQTKaJO + YrhmWceoE2pjLTOILkyZgR7aZukUVFAcgP/3nyEOKKYfy/WKXXbkeN1kPNHGdr1kF8Z6iYdyvRDV + jsCnpYhXt2aSEgYFskTPrIoSFQPpxkcYmtklBJI3sY6ApA7MAEj+jG6zzXIta1fMYeQj/t/xZpXd + pPN8nY0LqMhCnf399GyMgaZw7p4OrJv9f1qzfw2wX76bw9ChzZwkjIxtgsaOEMJCp1R7K0lck8Lh + pfQ6JX30UoJnR4RVhVC+vqXs626D8kDK5ic5XU9ytI9rscP2RGBbUwo4WgKyH9zMzhtI7jLdcogj + SreyHOFgH0e7F1PSQnFt7wmNA4SoduJex6EjXE6PnT2wFbkPKMiCFNW4qiM1Uk/5RuL4uOs7Xr1k + u7Q9P4Ltxo6696NjuE678V3RxvreF12Y9z49FFVGv5zxZP785m4Ken/ZUrjjz3ofXCpwRH2giE7O + BsaX8qbABZccaqwPfph4Cdcjrzhj5ijhKNhOgf43EsXtOrGuTBmGFNtYfA90TUU89v6Y+zRVP95Y + pP5YZOJJYMzyDn3fS8T5fvTbLd8uXZ1/zhaT/R1wwKoo86UY0Z6ZbD054WImbVzeq5ijvXQxcYk2 + thYu2YVh4BIPBYTuh/fFXQHfInylFEM/aP+r3gMGzjsuQ4bmeQExgNr6Eo1i1H6VDPuEKfxvzeND + ah6DaBkW0aDdsSVxuf2IRiPy+eqMP3tLLP2wASCUaEPca0ySEyh3qBt1UylFC2s7d1RSKMUj0idv + s60rgg6lhVg7i9ulQrirqMy8JeFmB76lzbpyyuXh2DdrZN840X1NGzF3X/3x6tyNO9iz6XUre7ag + XLJn01Nhzz5+U44rZUkUmPZsz38xjkI/ceNRBOJ6uCOX+HIF9Cf/DaKwMWGDgM51xOlsTMbl1Wy8 + zJYbXib9JdfKEcZGmql5zvLp9pqRKRp+85bcYssBIzPQkNAmfjPDtPYnby/eEZAHrtJqSGRxZxW2 + 7nR4nd7epmNoN/7n8DJfcJdUCv9/jgeKZHo4XTffU+6CAJIGOOXlXUFgk97eSZhn+QXDJ68nt168 + fDo4/f2tsmc7fkz27MApoDByGSnYySYSUeal/t0o4e5IPu3PlN09rqwXlIZY4FQVE71P1RskEyk5 + dJ7bUNshZ/tcrs1vs+v0wMH1KG0nsYH9Np3dgsIqQ5D3u28JHevdueu49uFv9LoV5xaUS5ybngrO + ffbPakZAkpSqNDovngWO68XhKHB8luzg3DcroF8Nf4MLbYtM6kqukMl43aAxqD7xAtetogBLxPFW + hP5fkJ2rmDis+8gDdKoIMRbsqTnlyyMlvg773Y5fidzKyoo+CNs6/EjL40coLL+dO5Fjf/zodavj + JyiXjh89peP38fWXyvFzEwSo0Y+fB8cvQmzvURD5brTj+H1dAf3q8TMjJUrCU2Mdi1/hlERRjHsr + ZoEyh+wNG7FHWEmPZrH+tnb4f9bSUJ1EnVERqImtmVp0YFip6Zke0op39KC2PMBz3VhQ/sPHNxcS + P6H2nbI9OwocCqWDtjwi1vNjnoRM/z575b5yj1hI9iGfB+c/H+LvARfc+O9uIvFXdpcRsU8hPqwk + SRAIiLWGMgudNjlBAr/N59ezYbpcpqt0Yy2rxiIlHeXU9JBCSz0afPotbeG6seZM2lnRYr8E2TjS + HEnukRN1jDoVjTq4kqiTsi+JP+0QRCLp4DFxY8vE2AZNyTDOZYtvGSoPlkYPFc/Bwjg6Yh0DOmQj + 6+mTnZjTJ54KWPX1QlitTj6fJVSnUoJYk979REZ5BU8NvoXvP69rIN8/AdIDpM+5VuAmBMTumRiQ + cDdm02ljod32krgHYZ0zuAH5UEAmmNeNxAqDBMRST0SmVSrHpoTZodBNamAla0Xi9o7/EyKglFbN + qIqUvs/6a9jIlrvYGHZYBXq1Mjw+N1xSZCE4bkc/XNHIPg9BdFJKRKCnZeQEDZNMgSS8BdXFRLYa + Xlxv2GCN/8GANTcU4QSPJPm5A9rLPWVa/yfwG/S3gjAWV1dchTtbRjiJg5EQbsZnVJvt/Rv0upWa + LiiX1HR6Slf72z/OKmq6H/qlClzRizEWpXXiEcabuiIm8mS2Hl9zSZuKgI4lfjswCHlunrw9PnvK + Y70xLPw8vdRVnmy1Hv6x3CCINrz6bfYtJ3s8vs6fj4YX2cSHH/CvaElw1/BroFrAwj41Aa+/ZesZ + 3vLTfPKVW/CRHkHQkRXh7d2yiqtRVhhMI0LSjIrhYWRmBRUDv1MvjJo2omIETlJ274wEfsTo/UWB + kIHlxFlQLowpPraoIV6LjcFClriNX8BY7Drhvwa/2GoOcOeqBIAgCQfiQ/HktcyLDVPCInRelU2W + V9X+Qn0UdYkPUY1tGzd/vUORcc2nouNMwLnBJu0nze7j9iPVJvEkTEk8b7wjYNqd5B3exFraoQ5M + WYc/K0s6Urw5+X719zJwp0aJW49Cdnhe3IPGJj3GrOhe7KdyR7lCVADO1EVUwNctRQVOuSIq4FOB + q352USk248dxUhEVEofFgTdKHDcOxS5E3is4aVGfUd4qomj1cl1TxuWx4atjOpk0w5ciNUI3MJ0N + b98X17cT4OVUIiaPlU4Fj5xB5fXZDira3EqHobE9npboB6yBvhf4TsgYj7rgC/P9BvNEtBM5w7TL + 6XYCO1bkLmidv+Q1NY38PuOvNxmcZnSK5HCCdKKL4WvYdTChgjhhVl18vtAYBlZkwW+DPxYZfQPc + kkoGiH3ncJ7l+AL8VJtUyjjFr+UlPmQeCGZTFryNskQ6d2afZVLDGKXJMPEE2AwcOHvmQK9bgs1w + yhWwGXxKzOHV+89VsJnIrYDNjBnooDGLR/DTT3xhVnyFsXCLIpGDOAI8rabn9ursuyz1Wyui+05k + nEgduA4uOS9wyyWOBFkVg18+4wlz3F0UB6U5GYkr5M9M4b99A4lbbMRphsE9ol+4Xek3WWh3Rk1A + P8Y8o2wpC9HXjVMEM70UllrUVtfqfMKbr4TJe4ArriBuAtaLo1LetzhB2KQ8wAMyM+wo7jCoHiJ+ + H4Zk0lt6Au5mbSIORCqxIvdQhdF7zLo62PQp6AQs8NSXjeEaudquhpP5lteC3ZsivzRcThOY+bAv + snyD+oKsfxhZeTNRHNhvHxw3sL+Z6HW7QBSiXA5E4U9lBO8nrxKIwlERzUCUMVZ4jL2Rl7DEFYgU + r7FI5mamQaoLznmWLtzlGP7rLTnc35Pjp2MDaVj4uSQHThE+FuE1c9D+87lsM9yks/lwni2uNzdD + KhtHAeC8k/Umh7azHCfgrkD1nFH5xWWOKhSWR5RSCi+bIDqG6RUYFzjGnkONiwtUfruS6Y1JqL9O + A68pHi6OWQgaRY3ILT7OFLdj1mjUSgIPZKsq2mvdjBlEPYeVZHgdylURHvzKO2OAR0LFGAVObFuB + o7bun6jq29BphUaLrzb0yBBzexAUfQi8mw9IVq68nS1yysWUpasaHck7gN3oCubD8/42zhbT1lE2 + gPv8hNLzHnMpDBwWvhkuqorO3lP1PjzxtEWsmIXVjPgh3c9ylUVtsZ+Y8314ZcCe0jD7ctsmFER6 + 8sHxI/u7m163ursF5dLdTU8FhOnZcTX7Ji7VN/aCF2PfC0M28n2uULeFkE7mQL0m9+ax2Zn6CB/F + HcmDrJ0gFjL63jnhPYY4U10fxVXu5geI63KriqDQPz5ieWz7zUqvW21WQbm0WempKEFwdsHiV5Vy + 3CEzjSA+bFfXdZM4GrkuqHWxCX5WbEAhUKxv0/l8+MR3Lp5WS/y8HC6ydDW/G+L602YHWeJ8uWbx + MaVAgTZWKuIolfkL5pFkkW7g91gjLhZYipCc3GWtEEn1h2iI1fpDwhr5modYpKYdMoh9r8EGkgTA + e+B8lI7Wenc9IrPegClnNnVQiIdqWzeYbbDGWJnioPd1e9XHuuFd/wg31ICfkWM+Pjoukle5MedR + z4f0Tx/UgAH9wgUfTOMWlW+48QNlhm+I6QYf+P7LBeMepYy7JbPhxcXvY17OiPON4Ci+oOpGOLYP + xt/gvE9ma8FV+OMirmP4RNIZFTRGisDT3QJfIZE6VH2gCQeok5DcR+HMOgo28YS9eLAPC9g5wAQX + k3WouXrZrrJrauTtbG/nZCr7f0DRR0oOVln4HTFdkd2FUSGtS/CZ/cRQEHJ49ANu130p7F9CrkfC + dpUGk5hKeK66f68UP1TEe+yER07YEYKP2lhD8IkuTAg+ekiiBIwRjbGg+ILKdpsvck2De/Lp46en + wxSY+93clLyeLAVc6NPBvgTMfBU5UF72N6C0kx5EUbkVEuGp+3R82jOq0h6kW83SiRdSoPCdgAc3 + NOqfgNP0eNDif128KODepMdoZ2WsLWzdCekB/anfbh/Im3JPSl+sSlz4Ybc8QNnEurwFdWAWt+DP + hJ9g9Y0dzxVYE3pOMPj+bj7MfwicB4M5KopYhC8iKCc0XBqVc9GjOx9PZ0gNlzb7QcW59t89oMAz + fl75qISZdrptyHD+xeK878Fu+igQqTqwwP4hr/ZKyHlEOFkOo133+pyjs/Dw1SIWWEYXd59zHmzs + EzoVHqacztEhLDKhWqhX8/TbbDGezxZfoV0NJzn8EsG+SANEDvMzCbew99CRRUVZ1CHikV63LCrK + KVeKiuJTsuj99vpjFULErVbQGrMoCDw2YjH8Wxigg7+Nvb8Bzy4cHEZRC9Q1ptkkvRs14/EblhvF + wgo5EfWUJ2dPh5f5dJatR5i4fIdgSFgmhXcym8BVAkqpHgkv2uL7V7B6qAhhPN71Kv++uaGY/EKj + xVHeprjamyKB4rfsdt/CpEagU5g4PnMq2Cf6h5Y9gfClpjPZSbxyZgOmTxSFRSPPCR2vbEpUi2Pl + rvatPqGgPs3yH3dWlJviyuIkckD6KhNW1USaSKI314aksnl6wQXM7+wWT4Zm+tKm3PSOh00mVXMu + FP3qFtMJemjeK1VOLZbOd73ILwcD8B0h82HLAbh+S1idGN7gtXHaxsVpqx7Ybuev4Xy/7OVYNh1J + OrCbbI51okBXT/HOXGDZjAEyLxWfx3zGlZaI8Kd4yuN1ensnw3hhGv69vaZTzjHUlHlP5k51MVEy + T5P2L3nwIv2+hpUZ6eovjt6wWB0aORh6hEVBYQytxXd20Al9ZRQyvfy7w9lwI3L5R9+slnGGisa+ + tUzaSxU5JCNC/zx6FCO44VrcaOEnM9rvaGDllvaWxPlm9Hyy2tec/p00BoKrG2J701VgqXk8CrN1 + tX27td1xKYsblnsBciqI8HtHBPRqHAZdXh6wfcNBWKwGc0joaUAGeZ1l702K1IQdcoHVwfVFxGeL + FGBFJ/bJ0lO9l34uAlPoUGnbD+ewq+3Bxeh1K8FcUC4J5vSUBPPX528rMZ2eE5ew/fwXz1yQy51o + 5IJuHITtkSHzFdCvKW37V4wM8R0/6glY7BEo+xzNOiD1+RYfr+/mY/iaa2kKREmDjdwxlRChVw5C + 7AgCOpuwCJODOHOvWNlxPaHRUCDKw8uqQghC2XYrEAILRfbWkxNQd72OlaaKRnY2V60TzepaPFUV + I6O9K0Yyz0u82KZiZFRugf1y263nOY+qgOThFFsjCwNGrtKb/FYm8k1uoBV5XNdwgLNry5Hua0j2 + sOQuvjmfLTi41lzemm0OG7mFPeUyCE/CI8a6+QyojbXTQHRheg3oodi+y7nnOgJNI3QuqhEzww+e + O2j+Cycw5pg0DpPIfjYBIvaAMXuHm/QYMeIU2mStylMf7bEHktThISKB1ie8A58LylptiMh+C9Jv + zMgBYRr29Wr6jgWRZ5lSi95/cKLYXgyl163EUEG5JIbSUzq/X95dmPZhYI8s5jHIuhzKQA5lrp+E + I5f5EQJz4nn/crPK8gVIKrxQvAgCoERPTe0l4fTLzXpfk6tmUnOTJEhYXBZMN3wgWLSRjwTkpmaT + JRwqg3iBUGMQ3z+mUrcAgpDKwiT+16B5qjKVhlOyz3FUC1wflefiUXr4vcXP2cYCkvLLv4SnpqQT + mY6CGfPK+XvA8Oi8bYxJK3VlxQ33o9QqQHgOmQb3p2SZRXOoNadp/faEUe4vlyamzafmrv7QdiUq + quK1cwKrTbMvrV8gPwdBUX0SPQ/4GKQS1lAZDUXlyvLaUvYfLwtELoltd9UtEIV0HK9DdgS9bllI + h1OuFNLBp3RXnly8LQNEsCRAY32pkA4I+MAnRh5z3EjAQ7xuj2gQu2JkYo9IS4AC65ih1r/J50UW + IIyVYhwlTJkwUqeb4c3s+kap9yCvTDIUYZGUzIo4WV9X0Sl0K8aOOAzDD8ZMiAktlzWKsUCyW760 + s8WfsCJ1wIMGXbdU9IeQ5QofWxL4YcUpqFs1QNPL8jVctuV7G45Cw70tRzx4XMs2wB2oUqNcIQ2I + E610k6Zvt70gDq0X/wgCjnaZ6x5NaA+x0Q5Hbtc1zc8LTVnT6dq5ipLjhjIk3PVOvW6WBtXGNiRc + dmGEhIuHxEHZGO8T+F5uHvxxB8r4BmtBFUWUiwAmPVSR2nVupg+K48nFhOsty9XK9rNp4YzqNYK7 + JyCaviDshv3GX+4dDGkjunaINyTeSQV2WotQ9lDtswcSHb5sD6xMEvPJfoSHBk3tGSyfXqncJkrQ + 3rDSFyRQ4MciKWMvobiXMEjJNiNpoE386MjpZp+lJrbmWdGBYZ2lZySwrrcrgQJzfHws8TKPOT7o + oPJkpHxwhXuOB/zoXSEnBPFgMBAxDlyluUxXMLwVZi9urPf9gwdgB8yl4ig8HGQzWz6gymult9mf + 7R60QHLZHe+CArYOm40YY8VUYZDUGPbuwVVvQ0eVEvHeBUdO0C0vTbSxFUJkF4YQIh5Kd8ca+KOQ + SPxap8YF8wfNf+EEuLMjZtFf09mxZ5HNX8hDYp9E+18PyYEekkQ57H2fSoN1ctiLRtYOe9mJ6bAX + T+nUg6K/QAWiJCzouoPFK0ZvbuDFsUv1OHoS+0FNFdEk5xrcbw96yV86Aavf/MrepFsvCTnH+nR8 + evbuhdxd/Urie3dxf3J5T2BSPWc5RQ5RO/59vEL0Oxm9sb9cJ3gdk6VUvKBTKRV83RYfPagrpYJP + RcXTT6+rpVQSN6zioyduHCSjJPHjQDiDxfegVeHDdjKbz9LhbI7Am6vZWlfYU36AeMxNpvKryB79 + cZFVfcR/tdKoH7WpKGRD69mb10zfANetABGPSLDcx88ntyIrpO74iDkdhW5sYi9z8w5KIjc+Ezrs + MnfFDjs5P/7w5fz95+E0xyyRwTqbwFVUyGFXcKJzmcGMhVpA0ubvcPyG0I2F1krpFdju62yRdTGN + H1onFNqTaV2kceaVSp0thBvGxAKHAuUMv3v3sbEgYZplE2Z0OWutOtOcPtMNFb4pBYN5ZGhXRKgY + NnxmZ5L96TauBOakMXS0F/4EoWeX0GJvdbCtLXuPzhfYEYGnbDjTGd5hOTLPjd0K7GED6q9yrRMH + FFtXuA7u5hM8aPLcd6xmW1sPMqAoXr0P6X7st0huyKiey9kH4ED20Wv0upW8IiiX5BV6KoCxz8/8 + sCywBMwpRa/FL565wLkRrhCzx9z2LIrlHDq4xyyKJrxXI0otNKloUWoJnCC44+8hpQJVRoHi0S/8 + 8KDf+KFecXOBmq9TW2crOI/PVezPwbC8B9tqBTr1QePoAwlHHntPBK2ywLdXU+h1y6BVTrkStIpP + 6di//3jm/q0CiO9Ug1bHgZfEbBQEjiz4+EUvegnnviiTZqRfFEnIPH6jFEmRLkQpMhJ60mt4fb3R + c1sn6XYNpC7vhpew2WFu8BhBK2Q4KxLbF5v1iOesYuNhOjwZA1uGk5YiZjqoAIuM9MtVtszSjWBO + 72+X7t/uDwvfLAk6yXdUfvQi5jX0EIdYoKBc7NEWB7+IxKmnM0lXlzk69NEj2VDLKkiioCksNwhZ + DLrj4FfdDQN+AlRcsM/CgfhisjfVzE6L6a9R2bHA0+8BIX4gdpJiT+0bsJWW5FEUWP/pAzAfex5F + r1vxKEG5xKPoqRBNLv6oVJPyGQrjOosKX4zdED7eHbmh7wcNksnLElrtzfY2XQy/vD0fn3xgzslo + uLm5W8HOR4dtNsmWXAuG/30aY7QL+vG3oELhNS4tLX8s5jDUGhDxvjjJIzC0KLkmYL4/OCzq5KEB + X5UhJiiyvQL3yHE7ZnvxNvbZXtRFKduLP6RNnaZLcY8en53ocqGmWQxa/oTtKdMr9Mj5ebA9JeQs + r66/bqRARogLRc/GHtMS3HRoWNAjiFHEvOiAkQ+pPLsd9dRWaTKUDr4gCruVmZVNbJ17ogPDtUfP + lG9fWhob/Peu0+TZh7/w5jyj1veTv6Zn/+G97SwQMUbWPvb/+u4fi++eRbJwWtQBZINety2cFlVB + NugpHenTd+cVIcyNIq9cOO2ZmzAniUduAn/eAbLxdQ70q+YhCiHNZMGIN9vF9cwsF+GAAPgLS1Gg + NBFQAH4H7gQY0nU6J6O8/Ho7oYbHdP1xeu65zsn42HpryAZWm0NRL20P+VxskONTsyC064My5aDF + Xc/pATGdMXRHeyP8yf3JZnE9lQlSqVVxenzxTh79l4ZeuV7OFlMOqIa3NJ5IVArRJ8XlRHRxiFV/ + qZwsa8I2O93mjGpZnKYcynCOAAkzXlk1JyZPWDsr2ctaEgc9ldOm7XyaTqslq/UhGPsjaszxYa7v + xHHIKliI8iPNwims0XFr0KkaTaUNzdz+rKkcn0mugOADSbxStdoJW4D8iEpzzTxcBsXgn6RfU2Pd + n+K+2C5xFbS55WuFjUFXm3DHFtWlvrwbfvwynGZYbOw2W83+pDsMjQUZ/C2dTUUh53rgipe8WK6w + 8+FBFL3oqwoHJufOZjETAzwI8qRHoeNzRBDHT5SzpAE/bQdUW0AELAE2dhAjbGm5dj23bgaCE5XI + BJic3M/56jpdyKWBtWh0z7Xkc3qMkfojsnREupiGrjgs7QFYtMq+sHN8CSuy6Tizl0Tw6AsrtNpE + VvKfVcO2nFcgQDIbKM5YPX2qb6dWqoeFqe4QhRnf2XI3WIrCOxrt6JIcFfru6ETBdyOSTHXOtNs0 + Z524XGeHS2QcCQveJB3xlopGtrEkqhMjmkQ+pRt/8WMjrGyfvrxxZSiJvCwLdV8Ek3yC1wfYBs0W + Lij2IgmMij3LOZnd8jawe/MeSlIcaBQ5OCDk50aCh6SNyBXJFt+yeb60zsh6wBhPxcWT0BjyAUD4 + PAJYoC+ep4vhW0rQODi20HXUQXRfMefIcTueRNnK+iiqbsyzKB+LmMFi+MubFCO6zH+blHgVHseX + hkOqNKES01p2eYeTF0s8Tr4D6gQFqzV81JmBtjnVdrWnHoGpUm5yQvX8eM4S397gQK/bFdAkyuUC + mvypLKD5wQuPK7iesR+XC2g+CzGQ3h/BjwQtkPxGUk6/OYj53HUjkbXr6yASNteTsLYO4qihDuIc + RthUBxHrHsIXVE2cLzkP4hpLcBQPRTlCWVwTSKYtxTWbIMR2FNdsQkJvKK6p1z4zvdRuk5c69NDx + GP0aZTofbHc0lu/stjsGdBgUYGvsRNZW8Xosp59uAD9YuvhZ2Hy1KJS9Gqot6i3WLeohxue+6bUZ + s10Kdvz8gfmh/d1Cr9slZxDlcnIGfyojCt6YiNHwraEbJk45O+OZH8ehO/IT3xe27LN0tVlgqMnV + cD2fDt/MvmVDT3Dvs/WVV+Hdb99/ulDbwDABxswM1dGheCJerKjMTU+b+HIYRVak9PCh8TRbZmgI + 2MiwFDgHdErMiKKwKaJI0R5cmCY845ufXMynwXI0hNlh9MOlH97y6Wj4/QZjcYBpS7PrVNY20AeU + r2bXPJoHmCloiPw5WX5hy4KIA8xXWg9LLW9TEM1hwe4GuOgqjiFweJwPfJxWIKJo1Y0Z4RQJKi2T + WqFZE/U/EPsCXzYmsZOd5yCDjMeKrzHGv1wBQ5ttZqkIKOowMCVWegoHJ3nF3CPmdQPCEY2skXBk + JyYUjnhK57ko+ZJx2SnfaJCRPPxrMca6W9vVcH5Xi2wjO+FWDaef1NP98zo7ZlayUDSgj9sbxM6n + XICa+dovmMH1jXKOncAKVJtOBR1NsAL1kC6MyfcrN7DZMHQq4I/ct3QynQRKqDzhNAR2OItjP0ic + pwNOmcc6hMIi5niJVhFjRWnHazyHwPZHw2+zlP6VHeqtDr2EDPnVqjZdUjG82JHyihxln7t8h12M + 4ir7mRAraoeKtXVuXFfFprks6GjbVW1sd7vswtjt4qHY7euF8MqefD5L1rNrUJRoNtSdLsVj9nSA + 7zyve0m+cwLkBkiTx6t5gSu2uWekRsCdmU2njdkQzZG1FKlr+n123r2N5PYttNSUUuh4lLY92c7n + dV9pWRueiaLRUq2oKyNlnVPo+p5fnTNOOyXtZ3s5+79buOsXmjzT2rfVZ/iOMHCVnHRNZRIa5hTr + DsRVMsWY5UhrkFmtxolRrjWbStZM6FIE6z8BoEHdBIxuAp0XPLcqblTfsIu9UgNYfOcdsY42ednI + HmJRdFLCWKSnZTlBbscnFOZDWQ5z2CZw+9u8ZPSIsGFxGAz2zUt/hLZmCm57fQ6cyT7DgF63sgcI + yiV7AD0V9oCP79GcZJqaQbIxUwy86MWYBVHkBSPM8Ja1XQmThMcL3VAE0gqW9RsW1CO+cYUiR77O + xuH4jK8rodrSv4Xl4HbmO32nEGiUJBcx6IRe5yA6NfDCWTTD47pqTr/0GwOdsD5u6JXxht+enomi + TFmzVTdxk7jJKOFF8H9lewfn2d8xQJXT3mk2xluyUwc1GZ6yvFKNTcWPwx3UYbu3zPVoeNCue2mi + LJP1er3Jlli3VH2KAb484GdEISbHTjAQ08TviR3T24rj2oiuv2cS1o6CCLERb9C4XtbDxL3I7TV1 + G7fTh+8vLDxsNs5AnGt+f9ixBKvxHErzQRCQYoJNOHQ8fhhHykQ032NA8vaMC1i3wDliTldYN2pk + D+smOinButFTUX1thRxoASyFA0WDIoLTRA4W5a/UrGj8ff3VJ8a7T2vQ3sQgEO1NBBKx0CW4BqQm + LVAThP3BhBppJO5uG/hPEuAPRzgZCNu6XIgDqtTGCYVZUoP8x8zcI4cDtR18ApW2KKKM6nbe3hT5 + Qvic5gh+HkRWsopEZJEwt4PjjV63zCLhlCtZJPiUBO0/zn6roKK53OFZziJxAi/wRq4DGo4wvEbh + UTD8epoOL8q4EiX4Cm56Nd3tpTdORuhxSpz/x3TZ/7H86i4VdsnXKoDa5XY6XGSTr6XseK8xZh5u + ncB1/Io8Lk+YGabhNobyN9EpIwiZ9OLGFAODXjU1YCdyRwlgpVpWpABZMftS8jLGTMnAMLOUSNKY + O8BiXrJ8t+RdxlYxZe+wrDpYDBfIwXkTSF4NMAlhGDbCJEiqg12b1xDMZQr6+BbuP+7x1KatnAFT + DLB4HeV+LpsXiTFkZEHmsUw3N9/Tu/VL0/eK+oTc6CO1U4U9Qt9tL2XlT24cS29vgUaqPuTi7W8D + PO4q6SkEbuLcAyROIdnvT7jRHBxSPGrt8u+DAxGTy0Xf/R2/0oZCYyFYx49Mdc3IvbCX/n+SeGIJ + m3ZQ4/ZxixxaFfWkboT7NLr952I+HU6+0bjwl0OT8pwC4OIU47z9jk5z2coe5EJ2U4K5EI9J5Jsu + UpElgn60mwx9ckCg7KGTfxiewvsDbEToFr6AGnVivlwXsJL4Fs/t2rS5Yy7vhhMQ/DHzRCy5IyLr + NtkcdffMQCOqTHWz/6y3qKHdmEDWuozHiCGXhoTl1G7zb9AEJozc/DP49D01OyeKC5UWy6Op7LGR + nFQeAX99GDxDm+ZcXdWfoZyHAZ9sfe1BXPu6a6RdUc974/kYHyh3x563BhAR7LIU4qYObg/Q6Qf1 + 0j5+j67/g+kErkxroVNQIrXb2flw1UsfsgpORNk+3EIzPwQSHjQlbBL8bXw1T5dczK2d6D35pMtC + V7sDYAytZ6ImEdNTqTGx+48OkAuygW16DFGvJsjw5yJF5u1H05riebDP4yCsZsi4QcycEf5IRCDz + e275uJoRq8LbDgMjlkseZMYzY9PVKr0b44CmehW7FNRH2JnrEdcJoSFM5Pg7MiehDoKOCbcDht1e + S2PK7QrG/X1ck9nSFxTsI8L3cOMwETbpR+Nk99wiQOKt17n6k2xkHyAhOikFSNBT2oBFPU2QTd6q + oJ3CPvHk/O3FU5FWPHxifiziO2Y/Nk8H/VAxxowhFlFEcuehwA0ehoDxCwMugsv5bH1zK5InOMVl + rtjTnhztYDiCh8+vfPA6tY8CcL3X0+xJPKgu6Zn0ui0eVE16Jj0Vlvy//+5VLfnlqwct+aGbJP7I + DT1uO+E5NOKQYtCe4K2SaY9M+B0yuC3TFWwAhHwR18m/t9U8m+7BMixhvhuFFaO62WkZboc12tQD + DrFWyYDkJos6yUgjDHJP1EjYD/0gcLz+LqqL8pDIYyI5juk6uc0XOVUvxSse5oZ7aD++/fC0fa0G + uEMKxKuiksojxg3dQcNnJRqoV2/RH9e12O0+lHaxzf5YsEhAKp0Du0+zbNvKKd2AiODWm6d32Wq8 + 3q5W+RbUwamgvIYbHwOyL/NpZ4vb/kbYPnS3PnUlwhRt5jBW+oyv8Cy8t+GRE3WEsxCNrNEsZCcm + mIV4quBDwx2VQcMm+NAQ0UPDMc81cOPI+S98aNHov8U6Hz3gZy9WInmyAxUaFsZuR52vaGQdGiY7 + MUPDxFNRM+LsXFZhkClzpKmhqzu/xvRSzDSV10ZdtJjRFebNeQkTSFKEY3NxrhsPJ7l2TDVGscEQ + sw1OqSaGj4TeWGwAfVjdt0kvrtKIdJeWeRo1XPvFNx5gG7yX7vtHjuqLdUhDoed6hufxnoAc2m0H + ie82C3ViRZbZst0zYAts5YX/Z608iBFjRw7r6EAUjaz9h7IT030onpIocJtubmfEO7BC3eKaQHJv + x+tlNpldYQxGPr+Tc3A7G+hvfax/6+OMT7A1PSZfh3/yRF1+oJ8PPS/EXHnyT0a+hFb891aAcnKt + St3wV9sOhhl5FCKRJIl5ucAPod1mNu8WrqFIBQRlR5895J89zQQOjl024gNlpcv9GKndCJPeUTAt + GlnvRtmJuRvFU9qC1/MtzMXNDAv6FlcMr544n2YggONjI5JZu7i0xuPOjY0RomMctgbdek5I9rLN + TQraklZLutv26KlYtucFAVVqlvtez6QF9lNPsfAuLNMN7MkiSt5NCCFbnyaL7Ndfogb3bsmgwzVt + ZeDoUKLyZ1Xo/uvVue4v0Dwh9/jF+AnnEz+Qqd3czZ+afKnfMPl+e20NYIpVqWTXO0J0yi6lknkT + 61LJ1IFZKpk/EzV5OFjowDTQ0cMKAIyghZCarnNYLZ7Dcnr7ZwKHW00trG12oUd9hcI8usgJgZMq + Ntfh59We4g7jItlgacLXMOEgGM5kPt4BhzwpjBLHKOmHXa0SopW9WUJ2U7JLiMd04NM5fNaYjVyV + 9aoHZOpHfjm7Hr8aXC9njEoUMYFnEoq0p7dn7+GrEUfdMgvU3u64bw9/dd/vPQD2/lJuYSl7M5dM + tGhani3W8A7Q6uVbRa43fWfNAemDbR0eCF2QovjMOlKjop4HMmuZ8z28XuXbpe3ZEbzM1yKu3wbd + 0OxUG/toa+qiFGvNHxIPm26BHWzXNdDfRWvkWByk7mF1eZ+C5j58cLzQHuODXrcKWBCUSwEL9FQV + OMeaEaWIhQRLmOsRC/6LcQhb0R+FsRuIeIULCWsmKhnAp+UTSrDiNh7MmNIww17q1Wd/H1/mP0bw + yy1ILVegx24XhFs5nMChXBvARQKwSIY5nK2WLLnHOIeuoCBNdHS4tDqgU4RVK9EcvX9bIJQyh8WO + 71STEbOxgX2npr8uCxHUz7gxMsNJ0HtVCqCwxNcz644l5U5qv2Tw0DtmwHe3jLbwkiDpA0mwtgjN + gTQPqZDcnk7RC5phKEIPOgOg2cdu7w0xd18wjOraDKiwk/xONQddXdxY7tSYRInEtpcr5udkeFgg + QdZ3+8AQkh119bLZzo/JxWQFnvdQ/utCnnXcyp4uXQJCnssQFgH9NzSK2wzki8XMcvLup6Myp5Oi + kIrE9o4RONjpZuaiNtZ2LtGFaeiihzLWBsuXi2CbsDam5oPrpIOWPwEJFqdjUdfJDf6aITcRaT9k + D6nlzwdLy0Wjn1Xc4L+ROl2rGfgUin38wXEde82GXrfSbATlkmZDT+kIH3+5KIOqsAQ0GxO80MPC + q17IohFoOSGLzVBsLpWmwCQ2oijnKuflVIcqv+JO59Dr4WW2+Z5lC72GHsHzo2hbZEuAHLuG7XZ9 + jXxTZRpx9xACStQwf1GW9VO6FGVZaxJxxTtffn/FhK50vFlX4VosVSWtWIIXxlid996Si7ZTNDR8 + h7Eb9VIZM0f09v3IgATUR6VVXi2qF/Kj/hX26Qaht3RMB5zByxk6ZqoYh8ApDupW5IZJKdgsAVvz + SQXKCgK5hIH7r4HcfxL2ZEQr+3qeL655Vo9gJ6Phb5sZw/oR+EH4OxaRQIyU23xaXMdwjL/nlxi7 + UNitOabhBq72l7wOzz1s8gGeQAWNCDrgQMwuCWQ2y1ThOW3p575DljIUV4zPt9a2cHlKgystZpcB + RYyowfbmQh6fGW2v29C63+SAtqIUvi8SOj3Htefg9LplMienXEnlxKeFbapSXd1LQqecyDmOI4Qx + GMURXPLCV/leGo5nCyxMY/oslZ13qTN6M8NDy2Vev4QXlzAW2jhr+NvN7BIkhRQr805WGd8jHIgT + ERgoNztbT9Jlphmt3AonNgclBloLWhX5RoUxrQBYHPqJF1cwq2ozsQ18qsA1WVHBhpLEw4CVmpLW + xWApwdXAiijl1zQBxcYBA7G1DFe1KtknDAQpLyxDaSluHAQRCDH/Guyx3KlidPwr4H/YsdmS+CXP + rCABKeOMbrEFrWH10nI/GBSLrfFyuL7Jv4McQGWra9OM9E0IR+a1q4qdJSwaiIkuKbj1q2NvcjrI + YvQwvvpdGUledUpKp6ujDejxOLNAx6iQ6vSh9wmnURDikU6z6b6k9g4SlrcXD/L/4xTRzLvAEcgG + VjeYol66w+RzkRJ6/qoGjiCKSopI+OKZH/jweAQ/Eml6MOEI9IDAVX4145ncBGINsgnG6sJ84JDv + ZErodAVD+c9BGIjR2q8kmLDwQzp+x5CKopG9J1J0UnJF0lOBAaxBEyrFWtNDcC0VKq8eXnHy6s3z + j+lXYCNXKdwPd2aP6L5MYp5K6rsuRZrWke9uJxjY2Xjs3dk/nZGq3REVBavfMrfj9tBa2Reslt2U + ClaLx7RDkON5qg6rVn0aVapy0A1/+W+2b5uDQKtk4lFdNhSw+J7ZdeXbA8p02YX3VQWrv317SEhQ + r2HAmGYhLsYxrHx1wfcLP/NjQk447xSIQK/bISec1wUi0FO6Jk+O3/iVOIQ4TsrICeMALiXfHwXM + 8VwR4nFycu7rzmTho6A78CS98ivXH7YYw5/rPPMITuI3mcLg/0AGq5jCyg4d8+pjQYmcAa1rkCwU + IqPIErfwT1azJaFBmCU1TV0pCGqsV6O6bxj849R3ROLhWLjaOQKuhIqtcc+XJ26kbAdr8safTFb+ + UhscxkWBPMoJXKwXqASn83WuNeN/ejNboxnr4/SbsG+eLm7Fb3De7ta6tmaIu1czLhANcP8oXIXI + 98nYFIZVTUC06KIRBTV1r1qXpINt5yerSj1DLhx4w/Ozh00qB9TOeHWoj1Xyw0Simbkd+CG9botk + 5lb5IT0lfnjx5XMFE96LMEaiZPsKXCcKnVHgsiiOLZBkpmhoxRmfpFuMqlpni/VMXBqEc73izjCR + lKSQytxwshy0UhbnRxLkIRzhOP0zhUt1MpsPn4THvz8lfeVukvNjNpd64pOPZ8dPB6cfviiLsR95 + jw0uLHCoRve5F/j224Jet6vRTZTLNbr5U9oWHy9OwvK28BOvUqJ7zPgv7ohhMSKcwJ0b43qFRv2r + +TaHlZ/ooT1P3r45ezoWqZoqEkJHudEZyMvh7XoSKttYusI8mKtswrcEFnvkzIzb2kTpQEyfvr2U + ETXZtwzbAVWBnJeD6MZBVeHvU7klP0IfbQbVfFF2bzWWEWgq69WTZlv/laany2ssJu4EjAW+/6+2 + oycNkVi+oc+pfsmvfMx35eUgRpQIm15fZ0VlPt7lJpuIwuM3s+sb0F2X2xVZLfSNIf8+3kAP2+ub + 5RaYxWY7nWXrAe5rVYYc9HhSS5gGKKyPu9stFzHhc2qqqLmjNWUIwwhmuKbcnlw3mTvliZ944SsO + RhHHbz+4XaoK0utWHExQLnEwekoc7LfX/6xcbMzFMATdHJagX971I/LLhwKd87fZfA6iyYbXveHG + EkxQkfI+6LqT7WrNf5M67NHwt+wHCJKTFC68eZbCuZjfCUPL6hqjDWfTLXw7nzou4Ap1estDSkXK + OzUQW359JFgQp1xmQW/z+fWMhEMcVxkoreQW0cr+eU7shBU/Dq/y9kOk3nMg8AZ3DoujJg+RTrlS + H6Te58JAJQya6CWgzQZMcCQck27WwjnUaMIcfrVbtJdifdbDD2KBjvddoAHuMRX2yyImMpGKQhg5 + x2rtKknAnOiSpWkp2QEQEDtFqNaYNgloBN/L+NhNp/8xSEG0zRwyZJS25b7A0YymlMC6CHXip9G2 + KMnrelRw+sCxHY52Jvm5q0qkh+/ijmBGRSPrIumyE7NKunhKPJqmu1rJR0+S1M2SleIVuxoYA0HQ + hzCWeGaU5V5T6gY085ZiN1VQ+oiJCjeEJsNP7UPhH/w6FfI4R4iIsYj5rVu8PiDwD+llR0h2H3X5 + eoMv9BxGRdZv08U18Ga8XfcdVF/FNAMK5vz0AXRJe1xdet1KaBSUS0IjPRXBnP/zpWId9l23ZB1G + H6oXhTAG34s9WYn63d0yp1xgmITP52+kTWMxB/rffw0dsgfvqBM4vv/XqY8e+Mq76x27R07HLFNq + Y+3bFV2Yrl16SJtMciKEy+ERjbPp3bwlXX7n60a/HNqIRQLQj6zRBYm7OSERA7vuO7c+DOJyXwJX + 1QIRybqbOCRvoeDuhGV7cBL/o0P9+AnAAvfl4HxwsPqH5Txd4hl6i+xK6pxV++hooVNiEI0sqQ/J + rI/edohWPUIgRG4TqRIEgtQXtmvdNdoJD0HrNVESfc4n5vC6dkEg41f8t3FXWChqYhu5Ijowwlbo + mYCvfXUiK4lI+Nq3GsoOISsqX0IpIkUQR5yoIHLJ4cMSvkrfsjUCqRZ1W7sCR8mj5XqMMzfTgXue + Xg7f7oUGdGj2HG/vJARbY8yUnsd/ADN3KIS3/IU76Ldut1BVygnesa77TbSxrpMjujDL5NBDaWQw + wTxOf38Dx0xGx6ltqBPjaZhChtrPI6AiCwOFwQm79siJO4me1MRW8hQdGIInPatGFM4W8DGbfN4g + R+GHVmXQnFpR2K/2Zv15VQNCiTSOBMZT6FfFtx7lQ4xPSrQOakZckhEtAFt7EcXuB5dJbTOKynp3 + DqKPvd5Nr1vp3YJySe+mp6R3n74+javemhh3n654Oy+eMd9L4njEUB7wTW+zUbybZ0F9m6WXszlf + YdLFb1bQZ1UX7y1KGfbGnBuBMcKxnMNv+FHixrQY5gSJy6JyXkwfqjlzQtc6PbwdqcNnXGPjH8oN + oOlEmjyvyDNGQO8H9CBs4DCld/NxXUedCAbMpbyBom7qjiTABr/qgXbPXcnl95Y34ce06GoS63dp + V6KuRC1p3vhdLaWHozoSxst+45BcMZGXr8feMOeIed18HqqV7RVcdGPcwuoxccqb2VLkbNzMVqmS + QPR/DN/BOwN8kV+fLiYr8DAHj2+kUpHiMUyxiicUebu4MVV+wHMbj1XoBYXyJKMVu574HuIf2ztI + ErN+vA4CtJhtOIIuftvqW+eM3iAp8ZY1KOrZdVc6nh9Wp2BHre02iggrFKuRoYq0I2e53Wngh6FJ + bD2bwzXD84M29I+NAe0/wW202dgP2IO5dFv6wICxFRUQtyXpBz6VkWzZWN0mwpf2mDaKnArPdIAL + 7JZ08Pfv8ZDewjFdjdSyWn9H3722i65ORH7tYiH0gT6OUuAP6YWUq9BHbRIKPjZXbpIDV8Zg2JLy + /DBFrRFTJq4Oqijwut8tGlIo6weQ9TsEgtHrdtCTRLkMPcmf0o35/n/fVWplwteyCvIkiwM/iUYs + BrVdqL0fyxnduh7MUe6l/rm+HXFdLOOlcDGA6CrfrhSeFwxCGA1GenolLNR2QqeJU5tmwJlnwO3u + XhYB1CtEwK9GUMOfv3FzFW+JcUlr2B0beGk4T9GwCPMzGubfYFqKDiWt/yWAF7WmXD16/+dNtbJn + vdpp+itjz8pfqXs/a+AHuO29pBSNtIAwFjjwRlR1flbczhpR7pxu0rQMgkrTMg0LJfyaMHSThoC1 + BnKqGMINXFs5HN4yEkwYx2UQg1HdKAf/IbtxgCdWhec7zBuISTJkt9pptdTh/hK42/fsxqo033kP + 9el2D5mwSbGQ2d8b9LqlTYpTrtik8KlIqD8+Y7FTtUolQVC2So19Fy51f+S7rhuLcJA/snS9GR5L + LeqsKGylH03ehzrP8kwiH1sPz9KFSE2bwBV8s0IJjMxYcFxgZBVWjQeIyxEUg7JMN5Ob4RM8qNvh + m+3ievbUzD/0o8Y4E8SHcgNWCROWA6nhtJ6D8MQNrNH1QwayXok14pbnsleFIyZlkDCdIyaBx+Cq + LnIVdD6ohjhBPFepxb5snNOXek4CbFiaXMS3Mhlo3UoNxB5R9jXX8Qdi/PJIy+/rqKraUGgR5/zY + FXqfmo483RhKvX2Aw4Eydg/V30G9JmugYv8IcNWZRFAhscgmNYHR95p5yFjNwnTVw8nTW3vgdyp2 + QUDANSX3zX71XPxKkJByD+1ZdlGaacuspj8yzdMjbx9XlUmBxT5yom5FUqiNdYkU0YVZIIUeCktf + Os9FeDH+SmWexvPZV63s9MDqJb0/N/DixI+5bfDQ+nP/KVHIfQEs9BaYH1LM7OkHYEv2chK9bgc+ + RJTL0EP8qfDdvXtXEZIwK6KMOzRmETxlIxaxxBM27BO5cPBtp69/nD5/h/D7w5sMrdOoMBAeO5zO + NQGFTbNJulxysPtJnq+mmBQHf5vO4EUQUuD9bMkRAvjbKhgWL3xseqfjCHBAgMtcIA4oyuLlFESP + u7mGm56tQSSAnXuDyV0aTAB2BDoNhotwcErd48XFtdObm73RUTWRDERMUKVZRZWeaHNYBlO7zKem + 39FJvKbMMOZGHmia3oGYEwX8QxQ7YQWAT00s9z0Ulvxi+k2Q1MT5V0PGaj19PgOyRgCqwQs08MP/ + L8J7jA5Y3Ij5JzsY/LV36QAPsJRgXY9R8QqYeOREu5cLxGNRjWIsTYeXmJCLHVr7PbA+riGb3WLA + jYLymW55rFz38r73Az6oqPiEvFpjj9/P5b1n4UIp83hJ6BrXYRNHaFYDmnFm+6De5PPxHYIbEmAQ + 1/D9CNjbmVAAsk2s1nWf+o/IH60+0tJMdF+Qui3VP/5KMIsaBV9SkGy3RWJqQUv2PVJHLajce4mN + w0MdnNihCEOgoHHnAz+uP+nU/z8/lCaVOGG3eE7VxlqTEl2YmhQ9JFn1++ZKYpTArzh2rhRrvw// + ga8M+Isc8BCY0+CR4cOEgXCqea5vH7BHr1s61TjlilMNnwrM7Nf/RDCYklfNC8KyV+1ZFCUuC0Yg + S0WxgFc4y1b5jxkVw1DTUQZPHhlWvQUPpQCRxrxrl5JSprCSl+kK0eXh1pByFf8HuhoWU7w0uORw + lv3wuFBeV95AVEwYisOKdjMusg2n+fcF3lHpLXZOUpwSKy/vkKobk3kRf02WEpYbenMqKoC+E5ba + lDRAczcba/0QtkWSVDQDbXZKpBqVjHvOL9RGZFsnIXKaQWvkhw/+c3bUgJ885R3zWDgQk8Rvo4b5 + 3SlADcS+KBGxFFd2t9thxolig0D3hCSNVFLmsnZkH2kaak+ihu8KYJAZR3qeaFWk9gGuC3maxh+v + zlnE7G8get3qBhKUSzcQPRXAda9PwjJEGUtC3wwZ9+AGQmety0boZ/WF3YkXni0F8GQCfvIim4Qu + HTn81VsOBdwM/1cBSMlB+MXC7vDdlkOFjEh10hfzooYKusezCZDBiigSa0bcJDiGKh7Zju5LwRqN + 8QtOEPqhFzUZgJQ+lTVVAQ3CJjAfk7a6Dy7OdbF1kmu6s35YN1hBa8PtKeZsmZEZrNH9KHsffMoX + Y+hZVKCRlbhg0o3FHT6hlR+JzUA/Q7UpInf59GWxW5hWJydducvnr2Zn/NUPN2u2xEW+RWBRrFW3 + yOb85QyL4PDlN6eAwwvl683YnAl8SY/TVUsiJ4Y3nN1ybRd2JcdXHL4+H/BToorjeFEwONzOwAJ5 + 25Q3Rmc3ls8vjqvZPEXZGz2wTUVrmkwH6HLlY4FJM+esOkca+y1vpJ2W/8ce8dGBqFUgx2OpQ+E6 + fIvwc/jcPKRWF9ZA8KXa/ZrZRlrKay8SsHaOn3SBtcPXLWHtOOUKrB0+pWvvy/s3wMkq5YqYV4Kw + RmQ7hCwK2ch3Ep48jRcfx0SGKZrDnGVAavgE/jv2nw6v09vbVFwyX2ZX2EflmlFJKybWnO80sN0k + 9lkYJeX7RDeQzoD9zkTaUEt9aa+5MJHRibpYTFag9WLcGD7bRXXwpXWwOIVvR/o9gnxX+CCWYyla + le9/nHT/zVN4GTUBviSyAjX+5fXwycl04nl4yShw7HUBjo2h3U+On1bIn6WXvEZbDe41kj0ePoGV + ZUjVDHmh9WbLgdhcCtLOoeI/vaSLeSUK5rLYsKW+7e3ApyJVtXlfz3dvJuz7yi7bze2Bufg1Q7fT + kETh8Gz7FTgZTyxoP97+m2b+3QBe3of52C9vvzbOc9/ELSL6/ZhrxPtG5VgqjK2221iqeI7XScWD + 121VPKRcVfHgqVDx3r8pX3QsCcoVjUDDAzkSVNKR7yduJICSLmZYH+C93Enw9W/0ag0Xs6vq/XYz + W2/gV3R6TrKN4VYtOY1Z3Oz1xvIRfsUWJwNcjKsz9JoKQCRhwMK4Yof7dHyqm/lrxlt3fcKYvLBk + 8Rs1DtrsTdc6bPvzA+aWjZXN/ak7uyHja5PNKd/LrD/hm0uA9Scapk91UBl/WSJgYRAF3QfeYEqU + qA/GzMReS8BEB+I1WV9n+VxP9SptWdfd1W9TnY6SdHORbbyTtrMyGn6/mU1uhiKdCdhFlq7md8+h + synwPJS85Ydwgy8IOdDXNbAhjvJOyw0sSe0CGbyLlcd46iKaX4WOy8/58JMC6x0g0ygUXocEGM8v + JUHW77AOjsReEyv5vuMOt9odanMTe65Iel7moiqCuV/och8LfBYg9PH47DdMz5yk0y6plDEF0e7Y + 8taq2YHxf7tatyW8+UkoVMtNi05ZsQP0UPYjTOTVmoQn41ddLlfewPZ6JerVC5Y/F368t+9rqwY6 + 5Tt2HDLfj70R/AhkisOhVQMvVzCUyfjyP6ZqYFhUDYwoMfLsA3Nie/GKXrdaf0G5tPr0VJbCOq8E + bgbML4Gdxi+eAff0fTaCH4m/A+x0OQf6NQArnaMdfwGg09Bxk4Gl2tZ3mE8fbChishqb360am29f + jc2vrcbmy+pDZ6+/sEoYgRsnNeXYXC8Og1Hg+hELh7uqzJBlZZKPRYEQYQWhVAfuz4ULAwQPnWel + G5ighXTV6pXAECZitqIK9WSffskvjO1GWjJS+A9H+oexzNHePIZ7da4cPyrxUr+GpjBPdb0dfzl7 + fnx6BmNDh8G1Ku2dbVg1hsD8opJhjrGm0+XA9km8eztdabbKL7n9mSaubHhL4OwYQ3utFaIJWew7 + YWshmr/S8g74GShKygU8gwxnCA9z3UxWuUTlMwdi/fHd0haxY02WbVuFWrhMqOpbvsjn6V22Gq+3 + q1W+BWVyKiiDtLvCNL36kMr7SMNS96+rgAZfszOvY0kDrZU12KDqxoQblI+Jp00wWn2FISqw168L + L9ZA/JMko3xdRHWWEDHNrhCMEBQVuqUS0jF4bQqM7EMA1YMSfgKKEM1+6NCUoBB0tw8nCUVlcoQb + 2CW8ok2rpYwj0AYUNV4NUxyJZ3d/4hR9HnN///qOfK+4A7uadx1XaJCV+e9kVIs8CbXH3E5Qe/C6 + LdQeUq5C7cFTunL/5+wCk54qUHtOFWrPBXHPHzH004q4iW/pZJvjKkuOt8bcQ5wFfkf9z3LtJrXR + CTVBaGGTDS2J0MdcCUPo63JaZQj0tEK1VzkCR8UgN7moraSbbVzmlxOSy6MdvCYKuucZbykst11x + EAmeNdZKn/Jh3WYrpYoWYQoYJiDHN97koqxP3Xe8VMEG0KMkxO9GWBovoAAGXKVwSaNb8926RqZw + nRfBJs09zrJv6XzAN1GBKhj4jyisgC8WuYnsFtreWBGRyUeR6GRvgDvdV8PSF9rW+IIUwjoKGNiI + xW/XN8g+7T+njxB2W996+xdK9qiKLbinCHrXJe9WtbEuMiS6MGsM0UPidhxi5AqmJFMMbzBZ3S3R + IjiHc6uhI53MV2wwwf8g5F4QUFotWl1brGWdkLustwnmtHkt1s7VaZfMrNDzG+HYbIn8R4PQHQri + bW3rvI/0aorjUZ8Lb91ksBfzeky4Zi9xQF7iT9vzUztTq1wIJnAfCq/APgNAMnwe9F0hBNW96HlC + 8uRnqRMFHo/kUtyBgjD6qWWXIsom+fsHxw3tZVJ63UomFZRLMik9JZn0/NN5JaLJ9b1SEWr3xTMv + cT3XGXmJF7CEmPT57DIvkt3G05nEosgIXorqukEPT0fDNUhnKuqTqs7CH9SOpKx+7oSCv6B+NJ7P + bmdcwOXR+ljq9tOXs2EBX87DLteSr5MhvASwyt/BZ9P0FnXdyU02+brMZ8gk0s3Nd6w6/22WykLH + xe0AYzAGLGOAzxerqu96j3zyyHMj5u3nqW6iU4jrK7Uu6+Z1qcfGjkq+3dcGHprngUbilN2k5Uk3 + nMVu2BiiFgWJH3v/GvwHbaMBHjcV4wVLOxBzhHyj3GtHPZ6RHj/N8h935g4Y6lN6YLSVk7gUbVXq + pxWsfydXB3mYcDnzH1hdBrujpbefh8eLg1LbaRIRnqzNUbX2kOLxtabarCLUDbgn0g9QqLEX5YqF + fsLkhswP/bK+UoD6Ej8UnURDw53xvxwq0YSq+nhkL9HQ69bVx6OKRENPReja2RdWzk7C8uOsHKT9 + LInhFI4QlCkSoLMXprGIxMvpjMTfN8cnX7Q0leWGhcvxWX7pLeFiukonWO6CRwujJnlmaJKmugkC + 9UJgaWxAdN1e32jo72u8gKbZesPrZ/wpPfkwHOSJIqgVn2qA8bLGiHRY0dgqGIW8KPepoea+gCm+ + bQq2C0B5aHRj+cyD/VMvwsDiFjK54dSNkiZxoJFi49yJ8M66kcNx8xqMhszFsqLV0HgRwrWrt9og + vzDxm6IJm7oz+sE0tqKnGuBnMyDfdC7qc8hCRI8sp3pxABrtS3ZFrIVeo4HY/Jya+MFVdptPs3kZ + TSj0vNhq4TVbsW6vuZ7nl7JKs33oXegFO3sd/OpnfsAZnhIqmUg060WolDHmgko662o6gXUvhKtq + dYvdcsevUd3Co3g2c5B6JHpXA2P9VJApr+44d6HdZlMOk0hYyovyHJrmQ2hbnYXkJCFQE2V/6+7x + xJtDbSTjfnkIIV8UybW6QS3HQ4kfWtWSbkPCG6665Zpvxy67wAuYw4+9wf2sKIgaC6x1aPWVDR6m + 2AK/q+UpWtox7J1JKm2RXpS3+PncCTuY+Oh1K4FYUC4JxPRUBBv+8aUSbOiHfsnrHGEuR+J70cgP + mOfuDvR6CdO3EW7Sk+kEsTLW20u4llAXFDGJ+QqGcY9F3x5BTOKxKrsJc/SWjWWkfFlW4XtoPRp+ + fPWGctlfvRmRI1iantYF1iCwWQHwp1PEkPjytcXxtIviRMWd07Y8g48Xxwp3MAgSXpkOjeO4td+y + 5xe6RnhYFSS+t3ZcvhJk8C2jYgWHdvlLyAyxF9ZUFKIonNmfdgkRRUhzLEKaHRbYx5PS65YhzZxy + JaQZnxKXeXfxpeJICFz0YJohzePADWIHw0nDWKrd7ygnloNBvEd/BOce79abPoztoLKELHLuL5+r + UClivwZp/+DcKh0XVXyLgYtqguUXncD2yVe35SvXBTVmtnKfykK60Aym4smzp+MqxoU2G+uX6DgW + fIqkeRTknqAb7ilpK3XZQ8scs5AwEanSSeuUQ+ffsCrcALeV4lSJFw769rKjR0MSW8hbgM5hel0r + XbRAHHZy2e/iP4+fh4U+hSHK/cLrWw4FFHprGlU78kTiUTX1+tiNzqlkjRlVCc1xU0aVuIJAes9v + LxFIuPZTGlKnD9U4CNir7lu7VT3b01HBBXkxiNO9s7/7cbcfDoqpCIng6rqwVZGrnC8oTHcxVmUp + n1xuN0MgNRRVZJ6CoLaYrjH2a4ilV4EPws6fZh0Xmd8l2KTDVWSjXPZC917DHwSdgLm0rjDQPd0N + icQ49TznyOlUJ1a1scU4lV0YGKfioQghh7PFT2w2vAxkoRr4uLN345vsVqGeKXeSQRaLQsD2xOg1 + DHLxDYOJbo8RYBHViaqmXKiwTLIcwSB2OYCL4pI/Kb3KS8jW0jJtLdvWtuB8T75GF60damYbSdiO + ypLcQ5zNe/ANxo7K+3DfMdj0cbe0D9HIOutDdmImfYinoryLnksp40wLyCD8RpOWG/gsQpiexxtu + 0HvZ1T7xk2MmwozPfD6jXpcwY9nGMsxYdaGHGcuHpLTmP1KGnnncCzpCbQXAboDC4OQGrv3VjNv5 + MOi7AEmUgHbAmz5zkgOkzEGsBUsHWTk0QuylFNcZad+JA0+I9UXyHMydRvP9/3Qn6wcOSd0qo06D + NGz9+r3ZHdz/jmHQnWEGlvCd7AnYGtFHaAOuk9kbLi2bpjuOJwES7ZovC1u3JaX7T9vrkws4+2Yt + 7NxSkr/w3MI/3n9wkg5Fj+l1K0OYoFwyhNFTEVF78dENKiG1TmKi4/oMqx5HSYxVj+MoFlleH43l + FmBiWrhQXVShjE1d37pBxV5m7h9qV5CVFErpYY01hZkLmlhYCWbQVgSzKDezzRa3Mgy2FrfQi7wy + 1E99DwV4ufL45EXkZglPsLG4kiQ52GdyB3w5Vb4VCOYon7tB3elsgsOryNQ/l0WFNUNv2hgV2q01 + NWow8LpklwQkmxQhhuW7soMWEdEdabEzrT5RshdPii8sfBMcOW4n8UW0sRVfZBeG+CIeEqu5naxd + qXlO5pgixX8MP8LzAf5RpEQFlBLlEEB7yZrGm9QYf7/OFmVda5EvxhZYkb1HQ1hrdZHjJ1JvbvIa + tVskPIcpAtMZ8veuJyxgkRvWzHPLkPY1Id5HpINAw8rn+fDLm/fv3zUfvp2rwkOSYxJ7d22z2eJm + djlrd7O3GN77AGWJixTIt+4R64RKoNpYp0CKLswUSHpIR3olsFFv7ub8JF3RQXmyhG+ZTTbZ9Omg + 4ZWPq1vXeE/vEDmC7/ukk3gh+WYPqcXmMUbnXRtNg6nc9hx3IPkTNQGr/R8L01t1lfYMko9ZpCBZ + +yMakieEz/eT7WoGhycbu38bfx4/HXfpxXaFYX39wr+13+DlsaUkutfnoMLai/z0upXILyiXRH56 + Svfw8clxtQ5rHJvF6r3oxdj1cXOPXJ8FjiiG9SpdY05ztp3AlA//nC2XcAM+ufzf92dPa0NIVFH0 + L2+en5y/fqUq12PpSRlKUmqJAbQI9zjUbRzbzUxPVsK7PYfXUfojB8hwnW9XOImkXxxP0mot1Y7Y + qsyJ3YAlFYAJFeKyKyqrHancacyUM/o1ocobJZQdIdKNAQeyr8HjX9oB7lwF2Rn7ArLzlw6X/UnY + lv04TGEP17j9D0XJJvSLvQ+ZzaXpe8KuI2+AImxt79nww4QCPVQ8Co/Kl4XL9rstQinkgWJ05ISd + ZDxqYiviiQ4MCY+eEeeHefl7GUOKP5Of+8/pv1lFjhNUUYyLIk+YloNIn6arfN5hsq3Oi71fbW+P + YS8iV0GvU82Y+iE97rIze8Ow9RaXAbpyLMBFUqz0tsgaQrv31AKcgEK1362XMNydqp29duGQi/Qm + Q9CSm3zydU+8fsWn+oqHECG42wUeYWhyUBmBmELPP35wog4go/S6lWAsKJcEY3pKgvE/anBu4aIo + oUsEL8YMIQu9EWOBJ3FuC2jbf6SrPSVPHSshiOOkimrbSbw0kTM/GtgIZgdaGlsRuMED43SSjDmN + BTYluQEGx8p0tP9duCd363CowyPVfYGEbcdOh9+z9Cv1rQYjK+7C3+G97aRGqjw7PWcuD+x88/sn + z0f0LnKIY/U9Ts3w3MB76ZBwO7+BJnd7C3sy1V8Z8d4znNlsfjfAnaFKaQY+G4jpIMGzNGeVbf9L + Rn7/vJCBroaQRy3L7kOz0ZX+qOCA4vj/rP9bs1sJN73FnCTCQMRC1sVAhK9bGog45YqBCJ8qTIJq + 3TjopmIg8hOYQXcUYJEEz0zBsqigXGJS2Q9uU9fBbYzSyBydkuccidhQQsO5+Mf78cUnKhbFL9v1 + aHiTrnVBChcDq9bNZ3AZvPuIiTulYqnLmtyNjle2C2Jawtzyja0zJON+DhtraxuU7ru8S3GHy24H + +y7hS7NcrdTbU+hJGMRf/pRFxpTzotJLQjBGPwdxEbOMuGaFyfPz2fqGcyWYLFSrN9ki5QqBnjSQ + roCjbjKBl/GXkCw0w1ovGeLNjjbfCwkptmYvdqITxCzsa7eMJDzEztV8YBGMHwuXKTlqnU1A/sLL + o0BsaZQU6oZhJZTt3bBNNkkcCVWYOPaXKL1uC1WIlKtQhfCULtHTs1esok26XsTKWIVjN3TDyBu5 + IRUawlv0tYJ0fnV+8kWU2pIMbVTw2ZwKji9XmULN+Fbk9vNs3QJMI1/NriVm8zxP+aya6ABrUrG4 + ZTujPSDjl0S1UIPDXzz/qKPLYSWwFUbp8jv1dHnJqnqwPh4g8bWM4GPciQb8nh+A5Fq+XbPlegac + o/QZDRpxnDQWcdWpNyIFNhWHBam8CbbFjTyHVSq1zdPra8L4W+HlpvG+Et1u451ntKY7ybqdyN7O + 1nAVUZk2hFQxiSVGBugnHbIG5AkvqFSpK6ATsx8TClipJdxYfV6OUofCOa3g2bwWO0OchZdcXOCH + iWzY93iI7I/Ky6Ess7YefswmbFkOYxpwLqLQcoBRiNCoULJHfWxaB9aSAiySuOW1tEGMN2zAz6lj + 1xI0t6GiXE2+JcHw5asuhet6AwmKaql0rjHskhbdfOpsyXC7fTNPsCRDJvuW42VJJ6EAkNKhf24b + TndoTBsQSAJpACpBKrx14RRpGT71IKc2ct2DYW3vAuoR9QdKl6KlkNfcevc6xeLrG27QLqWXDyXZ + hu3D3FCH9FIfCsxaO7DWBRL6qmbAEtfh21zn1zscSfoaSjGVifqOThzbi6n0umVtR065UtkRn4rC + ap8/eOXCaiwpOz2wrqPv+okfjXw34GW2UUw9nuCljhk9wqaJV11p2afZfJOOqNT9bDFBgDge/zF8 + y0ZDEGu/8n9c4H/wyHNR8//V3oSvAqIC2KsIp8fXqYZoyexQ3in/r2BhI/O1bzOOXkfgDZPpxPfh + hXQaOPTDRaUcf4mGl+nk6/VK1AKiCmv53KtWWNtftMXM/lrDkTaNMt6R760Wx4/neJ5VTwWaEJDf + JYv53QTRv6x8+2WnfIsch4c4lVM+3LgZWrxuWP0JyqXklBwzsoutWkfTc5owO5XwDfxmPsNISA5D + wC9pCXYHHHfGgQjOTj4dI/Ck2NNr4H2UsjKf8YWczNPbZSPPeMkDyRRSVorFiqb55CvfAjPQT7Eh + 5sOuCnOuccSlBMFLywKv4NKERLADtl6Hm65xEJiVAeeOynToCuipiAlfAdGskZWs78zeZNrdsqiN + gG0hi1qRqTEc/mxoT2Bi2KSW2/UoYlvaZ5vFbFsDLzmfG05zBzp7FjxvJHgvkJyRQ6H/8kgDd0VT + sBz1FCRAFAu6WXXvtUDQT8uIOUAp8NHAgG8i494PuKeRRHuBxsPd931I9Vx2ksOwlb1sFrUfwq0G + b1WllMWvGDviRiN7tArZyBatQnVioFXIp6QcvP1ypqlGuBZybfQg0ca3zH48L2ReTMXSIpeYAWWB + CgK3QJG7E9ez64XMbq2ryWGmtzoJZV5epiv4UNiV2XJjHXK51/HeE9LiZ0cn4NCdhB9tc8lKW7bd + SiR3K1U3/QTCVQe9l1630nsF5ZLeS09J7/3t/H0VZpbPk+6dCV+MA5+5bBQEcSICoX87P38/fi+Z + h7atmVAPf1vNGgIA83k5niDyzCg9PRHcAakuvL/qpjKj+HKW1yksEYr5O4Y2KPxUBchiAYCkyeK+ + c1HX40vFjud3JH+Lb+IPJIcWYQG/rVZsOcCFUxCLbkASuU+FPDFgWQzkjkv7IBB/Q7EDhvP+ywXj + eFQgIXHQ34uL38c8g4zv+uAovqCEMhzGB+NvsNFAzhNngj8uHL7DJ5LOqKAxUgSedhHFekhv9F2X + sLjqlrfDUT80hq9AP89rpb1KCkwPGbEJz4j94/QDTKU9V6HXrbiKoFziKvSUuMrvr04qJZMd5peK + uQBX8bwYjtDI89E9KGBldXSnIpz4j+kc6E96gJb1g9B1ZMjvAbHJBp1HhW49kIzBdV2M0e12GnBJ + s+/ZlIut2430hKXwH9hz68eLodU3qF3gU6LEfqEXgcpLD06Ze+QE3RLTRSPrzHTZiZmaLp7Sqdys + boVM+skdfXLHGJ+OScLX23SRrzHbcVObnzzo+Dr2w1OdQocy1mNHFCXdxdKtM4WsKe6ojEsLvDk8 + B/7xnoq+w8w7NrXP70koFVGaTw9AKiMsGVdl3O+nSvsx+bb47niCux7T6+Eg3E9yfV/97cAh6BfY + oEdEgISK0J2eB14XsYW/bie2EOWy2MKfSjT8M68KCRCV4PBRbmEBiDNeMIKfLvMFLuVZDkwI1b0i + s44XerhboyyXkVCHE8TFeDNm9zWMKp/PMGsOhsBjfY1x4nN3OeI/vSVVkLhY5D7IQyaS/Onfx+z5 + l5vZ35+fXS3fD9dbGInMSP9+M5vcoE9xvkXc45vtbbrgDYwY57N09XW2WOeLv63h4K9xxBiwDJL/ + WngfMK9Jwf3DeCtCGWj0W5yIK2lYMmUqtxlIDDZC6FRq42oTWp/kZcpSeoKXj54axioUxaKQPZMg + ohtD5mLXs6Pfh/DW2y76aTuDDzdfbFJ0RWn5ZTzRZiyZMfquBvzEKWk1oYyyUCC8W8EnN6tuFNBV + 2Yr3q4MpRuuSgFKzs7oy2ANR1CV7pbzSD+dwA9izV3rdir0KyiX2Sk8FxuLZRZW9wr0fmcYmnyfU + BLGDCTXco4fMdUnH4s7YkDxmqYSJl6+4NUpojfMV9F/VGk2hpaQ5Jr+wxuezgKzDPwmwUKZvJbFU + f2LviPndULmoia3qIzowFB96RttudTUJBDiX7g0iN8NJUSdSs8aXnbSVlyXS4jnSNsC94AHXfVxG + +H0PGa25p+C5h9u8A+3dDmsred6ulGDh1TjMO3Gg85HAOnfuov2ndR/3icc88tyfp1MWDc/fnIzn + s6+ZnXeyoEHLcLK5YvH+NPieeD2/ZrUk7j3HOaSJQAoUfIMh7L1AGSeJML6CWtDF+IqvWxpfOeWK + 8RWfilDG8/Ny2iqjWp4lJSbyfT8aRWHgl+oGimhOLmCmw6UUSEH+4C6Ej8dn8hXyMlLdKsoeuMkw + soiDigjpbZlubr7jLqSgwdWqpj5YX6UFYaeAwIVrpAYmxbh1tgLx+fnmZpXlqFlXoFL1nvzIKeeH + GrARzAOdwykDHsPE/PbbbxgdMYHtVEo4DYMSwQqxwUV5iCW4TV54UGBurrWpJjQI6fPlXz2FuUOZ + Ob1F8R8HNhoqEQojWmCt5tm3bC61g4tNxtxlbYr+AHeUEtK9yBPI+LEuJXfJamgVeBPXC8vSf/Gp + 3Qx8MLV8kE01qfLFv7fiiuObXYW/X227RtH40jndSyYt3GPqm2uun9qqgrTLwsLjhLFZ+9q+QhIJ + WmCFu1HzdWo7j2JH8pHj0o7Z//BXemxyTwaBy7/l+MvZvnWxRMzaQR/dn+EtcmSFl7NX8evgyIm6 + COtFI8uYmaITPWZGPRU+wNfHMttzUOezkst6vloy16SKIO+uFwvs7JLbK/vBq2PwKTkYNe2hfMx7 + Caj2kuQhoi5OtXGyu2O+H+JkixxZmObECzsWEpNNbLVM0YGhZdIz2rJSXpEAiqi2wO+rW47KK+t2 + 6uhLZYxA0QMqjwnisZBJjPNzIiRr1vA93K71hDEruEPl/d3cJYh9qhGJYAEtPXfaa0g1Lj5n2uGD + gsCJA/VBZgmfDp9HhpHDQQbjmGYHm6c91NTpKzQN9ktU3S/V6TpM1VHT4LLA2GStZNv3W+iEdTuj + 76FLviHDRM/c6C1GVjrd7jzVyvbSK7oxbj31mDS3xXbJYhEGI2pp5CC3DLTfh5/4OwN6lSqbRY4A + FKU55ClmVjddW0KG7xRY7r1em04YEulPHy7Gl1nKi4gXNej1AlZ99MWM+l09f8mhXNbxjNHtSSdg + jhurld+TSIjGdsGCtDxgY2iH8d0DbWpUu0ea/6DzA/itJbk2C3fkUPDu2bkTux2qt/PX7aq3E+Vy + 9Xb+VGCrvH9V8acEnpdUqrdHKKyyEcayBsKfwqLx19O0QJKSdoDf/ee/h+nvAUZ7jteL809nI7zn + 7hCAapipOFdpCwIZZsy33RrtnHCURzD3GyxEcr3NJE1yJ/4eFOjSLOC9y90loFJmlzWuZB7dLtep + ucqQkfsZeI11pRwvirykgqBS+Y5WVNHYLVV818Hy9Q7MNEaMajHn6tsspX9l1YJbjpf8hE40u5QT + MieKwn8NHmqv3Jy+/8hGVltmgHtf2qRCNyZAEI/SySznwVrnP5Rum6M49Ehkuz0kkq0PuAlC9xe5 + 5x1bx17ML0LjAHW8ww6o4dTH9UJuqtZl3EWBX5/8GMDGtdIkgB2TFYefpOGPoX6WrD0iHnPp6m7j + XyO6tDNMGMTzRIO/zeDSWswso2nvp6PmUHbY1cqL7DhHcH928iLzJtZeZOrA9CLzZ3TXrre3NSVn + 37oGEosGv/JE5n08HT45+/j+dJjEcDmz8OmgDN+iNZKX2gV0NsAeuTUgdhNhziK1s0wAOGcNSow1 + d/uFoGq6xYD3lFAROVSr6DeQvJx/WEt69LqVpCcolyQ9ekq77+OX0yqIXoIhRrqk5714FiQYDjeC + H0mSiGDv41MNmzIYMUfEk+Ikw7BSDC1Kr3Jep2aa8UAjWAA0KJNc9nEzrcpl0vNsRLjATm2Qu+LQ + iVlQCeyrDiSvHcgT+IhnTxt8dX4ctfjqYp+FieuVRCX4irGoqsM/asvBEWBB8vmslEsSVpPTRpqY + ZHxZAS+xRYcDT7Nvrn+aMFYu2lpHebD/Cip5bAh8OKVsMCmO5T9m08IVJo8UvKDNDQa5rDHGb4nh + dzziRMesvbwbvkrXbMlD/uA3jFBdZfxd+isCjcI8ULwq4lhcFt7KS4zlQqi0fE4hgyAJwrsD3Ouq + dGsUx9y2wSgpTEyr4d8Sk4ufJsOmuvGvUORpte2JFtq12A+HkdwRwx0o3PJD6ODu0+bU3Kqts1n3 + xYlHpuorPiLuB8ZFnYIQ8I38oT2sVF+dNFyFcFkwvs2KowFNapKn7zlr8LCUji6hQTyeJiaPZsEh + 9vXD+hSqui9T/8m9NXp89/JQSRtf6FOwE26pnHbTAa5arQ5WcsTijnWwsIl9HSzeQakOFj4T8bg8 + yANBR+RJlE/K9U7t39T6RcO2E5EbNwypopCIK5nPljMrLmrtfUkSj3Q3jvQMdyuaLq6z1biEplBe + /RKGgkcHD6Sb63ROiQXf0skWr9vDXUTAFwiVSJLsylUoBINat6ZX7aqJ9d8SXQ8CM+EI5wLswMnd + /HoORxtRpZd3cGLF+cmMk9SDR6+3qyBmpBIWZ99+tA+RDhE5lA7x+dztUl6EXrfS6QTlkk5HT2U6 + xKe4Ar0Re2b9WT96MQaBL4ExxKjHCJ3uXFZsu8OkHFgoYAif8sX4mGOSjIY3+S2aVblpQFWDEJlD + HPRNBrBfMPf5Em1QXNM7Xy7iiqanmmmF4u6GS9ntE+CV6+3w9fYrTED6tKQQek24gQkiZMnqHta9 + jYZzaAuDV1H7Lb3HcIe0JJq5SVwFUkc+0p4M5rMosPkmpQpuL2f/dzvb1NZRx4NWp3KCILqjjwJz + ZMTBZmjl9TlbF7jgaFF3wwttcl/W1A0p7O64I+p2CwrbWN5rQXiD5uaudj0awoZibDnAra7ASuAE + D8Q34pm1mR7jkm+H0Nop/rbzrcAvPLL2u9Dq3uuLdhtyl6+bu6iPNZBHextcRYttndxQWxf28Liu + PgxvMono7O8+CIHdKmsVjSxF3qITXehVT4nx/uO0VIViMMlhAXna4xzuNnVUSnJtQRwlWzjAImQj + ZHXTjPB6txip3dGQcVg8ArQnA3NLCIBV7Fl3KlZj41rY63PkQG/z+fVs+C1b45EpxPQegtSgo0Rk + n8JY4NBMs5Z+RmIkmHt7foAG0lMkCAtZwjWZLjPTLIEyygOkT9xbYXhQ3JaifeIXY0+XHOzKOrrW + tvE9qhEeCH+R0RwZTWcahEJ58vnsvdwTDXTs6/va02y+HBg51LWORBLt3kkA1vfNjvs/NKgcENoo + 7zBKCDv7AKpLhzAh/rpdmBBRLocJ8adC0Xj9P14lTMhBLlcKE3LheeKOsDqTVu5cz1H5M0MQe4EW + gOnJILtxZwImJEkkeWCGl3dLOFEgUd7xMFSOC7AeTrc82E/LiRwhFS79o8MAJNXz7JtH7gT4LVoe + ScUEH+8D2LW7dhJ+km3hpG7471rOawmqfBeseG9Y6oMTpcmvzTJBzYuq+7e1T+CyPx6HOSEMK5dW + qfCAPlrN1VN4fge4H1XojiMdPJ6GKn3JlVj6fQ1fN9I9PjgQ/k9pTjzUEdJXivbh0Nw1BCwAuXuF + mu7FgbEn8gBcmQRDW3cmrfODe0uC88KoICQ3296kDs1ZjmNJYUxfDM2a2JaVlHMYxXtHoe6pzHMf + iXIFqciEvu8DQqunOtRwZYsiOszx7aNU6HXLIjqccqWIDj4lQeOPjyfVzPMgdso1dJ75fhK6/gju + qJDJgskKJciAc5ktFpnmrDBK05vwRma7iQCyfvLx5M1TmX0lMGFuJ9UM9NZeTXwY34zZ0LLCncRz + ArcS5FIrRBo0XRZY0VQiQaHOGQIB6P+76Aw+Gl+qamkqlKbmGZeAACqAZJ6hVV8Lm8Gr+XoOlG7x + D3rcSxmMavdqVSyUvHdYPLYc4EZT5Ug8hySIg40flWtL4qfXU2sOUvsZwDsFDcpsaN3QD6nI9ga7 + 7vmcTear63Qhb+N9ksRasp4OSkZlKhmVRcfekZN0S0eVjWwd9KoTw0UvnxJTnc+WoJhnY3kPz2fX + eFEdG9ZJq5eMHt3AS6IwlCZMw1J8m0+LqN89o3xcCkgtBrTMu2FJ7BEseqjhqV/Jsy8/bA9oBT2K + TzEpKmKD7UslISGsYdsenhzKihoir7yOWeWqjXUFEdGFWUCEHpJQ9X22FoHnGFKdL29mc/Q6FL9L + 6Yb8lndznJH5HVyqs/WYrxoo9bmQ5/8BxKDtkmOUoSdCnGGqliOn8iqf77FpD4ZtlIQih7iwCaDS + mJnSELfleQHBMygXxIF4kvvANDxkLJ/UJw733XlRQOqbxY7alzEdFlQXB1zIOXQYvuuSXk5f2pVd + S4ZBmaCvzx3m2mte9LqV5iUolzQveioxv15XgYtj38wE9aIXz2DAseePWBT7vN4pvO06emDA8BJ6 + p+A1YTF8OZznoKLP/oSvEVEC8hBsblb59vom3xKglJ5BIsC+soYSMB3qLDg+KJEsaosUmWD6rk1I + SBB7TWUimQN6OCymbT8jmilpVrXonSWwWxp7D3CJKjjFhwWkmN9U1LypMkJDjQRG3kAwTkAyCZ0S + PZS5JacW328cAnMNIhY02b/ryfcbQKPmZPAKrYx+JU7GMeNkum/+AZ5GpZ7GzD8o3KXLDdxPH22w + EK13/G7oR7idOL9N15N8zZPur/LVrRLtd4T2/IL1FQ6KRgqESaKJ03W7NJNIQ2Gz5mddTLY9iB7I + zPD1Br5ns8kcX1QVVWhvdJ01k3x4y/bjAgePmK+hNXc1XMSdzBZxjdEi1kwWb/94M5zmtynoONqv + WkueGRACfyVUYIKFqkcD7hhg/7OB2HYlkO/GSZbLSQmrnz8wL+wQ3MxftwtuJsrl4Gb+VAikb35z + o0p0s4/QnqXo5jAKQmcUxlEgPAHhWCR6XOEn5mN3LJAShUx59dWN9i0DdlKWrxo7awgBiJqM/3Ec + MtcJSqILUQVy7igcX87WReR+U7IpdGJA3ILgUhbedK0Y8wJyXpfLJMNMTwCSGTR960jYmVDGKRJV + gbgc/bg8+pdDgUJLvn1BFvTv+fJutf2G34eugPVirPIWvLFqPTLySYsQgev5doJzxZtuJ6sch2bg + piKYSPH5IlChgIMUS3c84LtPBRz7CUcHganlsotak4PjBmCtDIKNi/xTe2gstMiYUzWzaBtqJ6V+ + MWd7M3riKcUmu8/2gxtTHxn0KwslWrnXDa3cs0cr92rRyj2JVv72j7PyPcGSJKyilXu+68UjL/Sj + WC+sPK4prIxhSHcg4m6G5+mlNI+S/xFjkrDIDbz+YvjHchMth09uc3gzu7rKkFL2dITP2ZL/8Jio + tYS/u/AuUIdpXuVPXxpxUjIOUsXbagGEV1ezydeiJMnbu+Xe19fuWiT4wc2FiQ3iTlImPuLQCWfv + DahzeDFmQfliawkw1i0eGI/cmILDWOw64b8Gv9pCDnDPFnjoCeKh7xV5XQex43qUlW9y5fKy2p90 + UQupBtqvd024gr1iUyi7yxAcgspq3+N2Yvt+pNptybEAUER7C1f9Dsl9YZSg+P7cYbG9UZlet2LN + gnKJNdNTEc5zfBZUQGdcJzZFePbimRf7oROOvDjwfCHEX/7v+zP5/S9rqwrIaJx0GexnIj5Rwa5e + 5CaeU2GFFXj92mE0VJRzmviW0VuB94JAJlao/2cgDOtQ/1q3fpD4TWZw2e3gVQpbZgjTM8HI6j9n + yyUGzuB8P62v3oDLqPBU/ICS77ygECFUg47CqUdeopYvHlFwoTJCdjtQOBvcTGI9ty0VFXZyK7sC + Q3sZAvaoSnQvVsmequdETs3eKZ+mzjQVsFyXM2u3ND3Y7HxPZIZII0wBTLn3TGKVNE8fGE+TmP1J + 7+wp0fOUyT/enrOwgy+SXre6NgTl0rVBT+na+PL+jR9WC/2x0CnVf09ePAOVzwndUeyGiSvckel8 + nYMOOJ/D52ZAavgE/jv2nw6vMZFd3BpfZlfYR+XiUKUYTKef35gngehgUVIbsamsDKrEWvuNYcaF + NnVihnBSH3zHqV4MO47PdlEdfGkdLE7h21HZycXRRifpUlXjLFvscdL9N0+p5BAtiazoiX95PXxy + Mp143hLEZzhr+QRl3TWFaPIyUHCGnxw/rZA/Sy+5II4E5SETzZDs8fAJrCxDqgLBIN9yvxutt7sc + iM0l7zPPS8i75jNX8aR9yg7xmS5RMJfFyvUAVKKGO3GvYkihEylg1QONSR6cNP6Fwl8n88Gbc40b + DEfd6p4gj8i+Z1O+s7YbObEp/AeNTJaReveUcMJZg/EpNqvMHJ/yQ0szadMjk1k+GQ8Q4HiZ7dzG + f9PsRmsIQT689rknoogtGeF9E9998A6KJ+opebQPyANG6aJvPzhu0uH+5q/b3d9EuXx/86d0f5/A + ZV65vH0nqVzevo/YXCP44bvCJneSz+DeHk/gBxyL/PvmZqzQIo+GH+EY4DUCp2274bEDuLPT1QZX + EoMsFMckYzJaKeD99Wa2AZlrs5bZoCfXq4awonxe1hqr4J26ASqET7ivcr6rEqK3ca97YWO8E0s8 + 168AitYxWyOqBtM9mwoMig8dnImdqVu8iqmmAH08cmgo00YuhAbEb+cfhWY5fBA6F8W4VLRYIbEP + tRTQ2cIIGkFev8l/YF4qMVHYEUM4UMjSjD8McDsWFcITob5S0Hl5iq14vnXjHZGDhxb/2ovSg93J + hyqohS6d1yaf1tk+nTAWcciZ/I7REHbmtdpd+CdQpdf5LoVesFOXkuI+fWBuh6Q4et2KnQrKJXZK + T4mdfjp+U2GnvuuUYL7CF8+8xI0TdwQSrRcJXeiTsEUcSxntjW46+5ReNbHBGl9CGDTGHrowIDeu + +hI08cFUddwybHFBCu5AL+4hBU5jX8bwiqDDRa5LxebnouDsN9LTx9g1pa5mXAMYR0XTMXLikVkq + ORu46WX+Y/ju+fHJMX3F2Zqy62/goODritEW3GnEA+U4kLMQBrnSdHHzfwX6ckmb0qkXhTvWw083 + S5canFxeoeFVRI9wUJ0UrtUB7lflOofv57YxP+ESW3nc3ZWHfUi1l894HMz8Z8UnhkHRukOaE+aC + JvKL6wvqdDAp9qBuWFBo2wZ9iN4uEwnUrt8BqYVet0yg5pQrCdT4lO6K15/OyncFSyKMOjATqMcR + c5OQjSLmc8OHXrxbmWOmxAl+9/hx/535gmWuRyZzquE2vIVfSHcaBKCW0Ssjo7lwp0dGczT3HNjl + gtd0M/9O4gC/wF4vlvvK8cb1FbhRFMWVwP2OiQaJ4/meW7kFxT1TcxHCISpdWsZFqA1KXTI8SJwU + I5yl54iXkuJWXKRIwECvLIXJazePMdLCBWUI7BTGLlbWGLSfNN9otYPupMhoRaoktcGvtDUHeAZV + 8L4fMLr/fC6YYgixeJMHKKF09g1BVoDK+y8XjIfDZxwuLBteXPwu1CVkPMFRfEEziUP4YPwNeMZk + thbccaWK+JEO9UTSGRU0RorAU/ub1/qq7EXHeFS35F7qyJ4ZxKjF8LCHhE6gblq0ahxXVCCqgddV + BRIMihsqTR7W2k7ehioL1o1OoyPmd0uDlY1s82BVJ0YirHxKt+NmuWJ01305Oy/DcFY9hxq3OQNN + SQk2ch6/ALkB0uS5sE4UDYRpIZaiSDbPF9fpfu7lhyoiiu0JXiE/BFxTlAKB58AUtre7qDXymK6E + 2oEAEoqpUiFL31Oc6xs4FPkaOpjZZh05VHG2ACM1hmdNb1/2xcKAlJ6T6STynhu7sfvG2b9qupqP + ROT3GtOwV+6rS7mvp+ee16E2Fr1uF0FKlMsRpPypSDV4/c8KvKETeJUI0meMuVEceiP4mXjozUdW + 8u5umVO5GJjkz+dvZFjSdAU9fF8Ofn/1z+ETlVCnIzb/86nIThkL16iu/nO/aUknh9X3Y05RxeO4 + kRf/YtmBWuz+Mt3AB/7EW/2hAT56UTNVrhVzwiMWdAOJ4U2sIWKoAxMghj+jkzObzsSFOlvnsBVA + Dbmbj6ezIr1gms036bhIs6dShvAZfhSGTwe2zd5DRwPsjdczZJEv6rpIN2q2yjm03uGlvMJE5IPl + c16BMp/3RJaLdNnqOu9E1VoKiN2E22NwRldwqfYzHXFIsgWVzDmcIAsFKPEkxRPQ0zCBKkEKH75g + vxRSx+5GVrKA44pCWOk16mJ73eZyRL5PteVsD3YPNWf66/J+U2UVob6wR3rCfXQD4eJy3Q6VbOh1 + SxcXp1xxceFTIYF9rpgtXZ+VA8VDBJiG6ycauZ7HWT/ePBdFYNolCGKgY+GUfjw/k4jE3MbCk/wy + YQZRAMDwRfR65eUN2TiEosxDyNBSwe0ytylsxWwY/A3NOeuXfNYVuMP52Tmj8sZiXHDLn/NkrTOZ + f5o3Gy31CvXUpqY8PRrtm8yGSehinZCKKdOgCpNTSxcu1sagdZ1uYduskK31zQHdpjo6NnQbqMKx + D22o7mWGNArm1BHbtBCLHa8x6FIQG/wK25b6GODpVA49UEXxzmAi2Zx3GPxtDP1PM0TIus2/pV1h + KnrxwdlTaXcHEjgcxbdK62xHEiTrHfQxuIXU/N4Hld1GDz8JBYaAoI8e15Pnp9IYaBs2MxCcha9N + Ext6CHUvJKPFTlZ771og8sPa2eheWxSZYIVUG6F26a0rtYZh9YYr4oYKStFLkiPH7QalSG2soRRF + FyaUIj0kWaMOKHZQ+1Cnx5ESPWfQA8gwCxKHHwFeqxbBomZ6x10FSJHKo8fVwXLOQH9CzakTsSBw + CEmlAVF3XzulwJjXsX/5cUt7KIn6WICJXRYYe6J7rRi1PQL6IH17vJBFjPnaHkQfo5WilkVuJWwL + n+pS4uqHc7+LPkKvW+kjgnJJH6GnqrImq5iEPR/1Nl0h8V+M4Y504nAEP4IgrCgkKFmx5KK27GVt + VUVeu0+V0mTVkjXaq4fW0jRChh03qSltswd4oO6/N6jqYQabTCCE8Dhh3kEdBg1MbSnQYFRHfnDo + jL8ccht7itFxuqV+AiODzSoD8HRQv8V2Phe3H7SaTLa3PEa9aM7dhm8nC5+C5aazNbCtu+E0m6zw + Vp2WhwHiF1U/GvDNJ+Vt32dej/b9CgDLQxjR7xHg7h7Lbf5VSmGqYTCKYSg2eCdvPqWFfvzgJB1i + 2+h1K6YsKJeYMj0lpvw/ZxdJhSfz9dd5cvBiHMWeF4yiJEwcWexYCwlS9RZlHXQNmGM0XMNXZeW6 + tkUF5FWKCQkcuQrVa+LU/7NcJ7WALLifTQ7sJg0cOA7d2HMqdpDrbYrmTA0aKfsBE7+APdiWS4qy + WCMarucmkVdOJhVba6zKu28wan5TMZOEpcjtIvZLfsHgmI8a5dKWYddAphSIJ2oQGnYKCRgvhzJr + Op3P70RpKp45igwaNdXZAtEN2kagZgzuA1g6ly2fn6eXwQs9krlpxaXVRB2iAe5KxayBlT6YMzZ0 + jdTvYr20rW3H/x/SczEQuxPf6rC5rRhtv/gpbqKieTuIofS6dTRvVQylpyIR/t37ajmkiMXVaF4H + dMxwFDm+I6N5m8ISLldAf1JhV+rIKaFeiJJvtovrmSlIIgfpiCrVV0ocaKbz/Bq/ST6rpYNnsURn + MChiMv2gB1W8u8LbbA/y6ATB3FyncwKblUe4WZ+st0oRcl0jA9ghyxHAb3UzdNaL/1JqNai9CR8R + iJBrHvZbgHfsowm3Wbw8R4VNuu4RczpGTVIb66BJ0YUZM0kPiQVd3q2En23zPR8rhjF8e3xG0hRh + X62X10zEdiSR73pJ8HRQbfAKiA2QIsfgTTwqAOQkdA7x/gAhrFPaIjbml9elKAC2BpVte2uCgu9M + eZfEgH/STaaVIeh0gCInJE96U6mR1qg60GepqDF8QyWpfT27XoBEUneJNX+RHwZRTSWU87SAPCW6 + tHGn20nXOQuYQKTkczad4TVmDVLRj/TBKPRjCXf8nAOHZMPLfGoL7bNf2AUFaO80RN4Hl+wrjMxT + 1cbc5FVw5LjdQLtlI9tQMtWJEUwmn4pwsvVSMBtdPVhnP7Yp7q0r+DKU7GgWRSRZEvhx4j0dfD77 + MgRx+jqXlVh0ViyAHwWDCn1UGzH4bMk5keOFvgADpyyNSb7491bEbfPASxX3e7Wt394t4cwHxmaT + vbX+y7oahx2P6btmTzoeaNkCDVIyDOAp+pxtgecPFwiOiVbnNWyGb03YNZVY0P6lK2CBXCbixkw8 + sZgjg+xsO9/ahXw+DoGGyaL3jdv8Jxj1W0UZT3CYs7/7YegfOWEXDqMaWXKYohOdw6inxGGulxsR + sMphqtd3cwMEWfCJePD76dlYoIlzBHKV3EoPzbK9b4HoAClzsQYNtoQWTlcvQ8RtLIyBTdNF33Gf + oS/uIpkidztb5FTbUn7iXmhWHWqx1RsVdhw6C0Sebud2h2ZD6Q71tOB/WReZxUtiPjnaLnmxc5d0 + 9+333M2DVWmMNHZSIjVST1cor6hDeL3Kt0tbeVmylyIOPnKSI6djIDy1sS+WSl2UaqXyh8Ra1l9l + mcUbTCtb3+STr+pURo4pg8QJcEcnfDqoefcCCA1u1hMR654kg54A6noqr9h3XcSHNj/2Vm9gfzh/ + uYMDVTUnjrqXzaE21nVzRBdm4Rx6KIr9EiTweIURhaXsyJa/DS8+v3UrtX5ld3glsogJTZ/EKK4r + ijRnnM/plnODVgOAXSR74gU11gA7pe5RJiD1njNwoDtSqf0uiR18KTez5e5jdxhEnjwxVG/i7NxJ + YnujPL1uZZQXlEtGeXpKfP7ijy9mrLoHo3Ijx0wX9OMX48iNE98bRW7CGUWbVX65gg6qVnkTkLIE + Z/Er2+BDD0P5nMdQ7J6VaMDC5NtNa7H7+tHsQ+mxm9HlsYskKLTr2B87et0WFBopV0Gh4akAlcRL + pnLseEiviSo5jjwEKR/Bj1geuxOUTlZoT/qMujOCZE9EIIBkf+7wAkNz6D7KrmaTGVdFCC4yv3Yr + Z1PEESiDRE1CBdx7LGkMjoocRGqrVouFwYEqUF4wLGAtf7+SNljTK+c0AlUSv04qfcGlsUUVrJYg + cJHmIAKdYMFiyrzd5CusMVDMxcq1zC0xmtfnHFSsNM8muFpsRoi9fV8/REWTVzAZt9NMWInmqHHd + itySDK1dq1S3yIxUMRhgFzwW85qbE2GCaACl5Suj9Yx0jCLZ7eD1es2NoPMClU1Gtk3UNs+btvkT + 2MtsKUvPDuFf8fLpCFHhSIZAj1YGtEggE414LrpcZQyHqK1OxHcrj+CQZlKJXM3nWMzFulhTDbt1 + PcDzXYByB+5AzAlpLHtM7gPaaMm2oG/XLkV82qrlCr+jvmt7Ig3biX81Ec1X1+lCwuc+rFWZVDK6 + ymkw+913nAHygXRgoJZCvksgOGVuaSkYUJI6fVu65FpPV1XhUFkAL6JiENVLq0KtznHUm+cpJrX3 + 5ITFLmiJcRe9t2hkp/hqnWiab/GUpItlfhWRqPBmjGlOUu01/jU8g7cG+CpotV7CfBJhe4r2srf4 + 3mN0GR3GwKQ/hMsEjXj7I850UHh/em59XwG3nhNGfg2R0fByNZte15KzTZHwKDbt/QfGwg61vfjr + drW9iHK5thd/Sifm3fuLam0vJwoqtb3gmCRuMGK+78QyNm223sxgLvJ5UdOVHBeazVgvKovCzTr7 + Bjv8BjEeliiC3AgiWeFR4ch9whiJ5Z5U9uucUONh6eEW0DwkZstbgWQNU5huYb8XPaTbHzC0HFab + B/NjZNxM2Mahj5PtCAQpys/9NBuu0/lGhgbDl1aLk3GbSUnSbsoXjuPAjau6/E3dDPLJw69rTtbw + nSYQTKMjJdbWT3IpudsJdtAc/Acs+AAPhKqS5kUEe8wczkdqhr4/Jos90d0+tpgFCkLikGjkOCQ6 + dVO9/5cmwLm5OfdQPJeG6pXtQG29lRPGU6cvmMWhfYgOLHaHHxd1Vg4bY78OxjBpIlVyMMogFKwC + 1cnHqC5xRvWTlndwaec/MKZczexeFmzfUcKv77tHjtdN9qU21qKv6MKUfOmhyGg2zJUT4TfRnTnH + X87GH6+fn83UX0VlLaMHEIjjWLoqD1aoK4ZdGaG4Zyax9Fr0GVTUi/HZq37nbLFoNRl3ELb3If/Y + LdJO18Bu+/k6BBLz3oKofKbiwU/87vHg1MY6Hlx0YcaD00PiF9psAhNcDMr/1qkg7kEYOIPB48V3 + 7FFtlOvlCg8lCyJ71Yxet/RQcsoVDyU+FWlDZ58ryeuBz4Kyg/JZ7DM3dEYxLFPo7XJQAv3vtaoM + dykWtug6X2DsmcBS0qf4WJ2TIesFq+Nwy+hj4LhyY3syH87z/jE+7pIRxxvY5sQR9WpWHH9OG/z0 + +NTc4C7zAydkSTkx7lkY+4nnj0JQRJmoMFf4T8S6jKqOlNPji3fS3PVyaASjizQDs9QZRq3wS3aV + KT/JS2UTEui9p9tclNo5TW8RAU7WGOAuEa6cSHQv0ctaEt9kRJsO42k6rQJD6EMwdnoUNaGkMdd3 + 4jhkVbeg+Egzd5k1BhwYdPb0BjaRUydb5tSYNevCqLEUhaCiOcxKNWxxGQrHWPo1Ndb9Ke6L7RJX + QZtbBZh2la8mHBKCqtNd3g0/fhlOM4HuLl0p6EnL4G/pjM8AWmaxKrgoeAc7KKOQ+ZdY6U5pLujU + oV70VYXjklNyMs3EAI+B5FlRkPCkxh5SmAIiUDvOzsQOyIfa3brBo+c5vgDGhIaot8v9bHi5ZOXC + OrGizazLGBNhlHpK1e1sArsd9helIOl7ABatsi9spJ+DU6vw6OPr+iayErugocyDgXOFYCXabmil + tgOA7SBpLiYXllxMOwFyV6MdXZIFX1/cThR8NyIRUmcsO+TILu6HGqAO3xd4+m7s2ofq0OuWePqc + cgVPH58KNNd3H8MKnj5Xrkw8/TFzXA+EpBH89HnqVTuePvRQDZH7S0qgbphwuLjHJP4F0m4FukI3 + ID7ZxNZqJTowjFb0jPbX980VE4Fd8CsOm5tstd+H/8BXBvxF7qv1HamG/iWSweSaFOiIb6IjxrrZ + BkQba3RE0YWJjkgPRYa4qjmFnysgPHRT4s4X9H64yuozUVMnKDQxRaCjVdEj+E/z3jYojoann441 + b/r+tqQ+Omu1S7tBKC42HYegmFsk0KXa0P5g+Pb2tQOv/44+fE+AW5621a2yHrwVtdYP8CKnZg/v + BLqxH+F+9HeN2Td2WXVL9dld7JKz5c/ZYtKOZ9+hLIYtyYeA2vcjmRHrBW/dIyfqlBAr2tjmw8ou + jHRY8VDk28+/iWzYdAIy/RyWDf1a3NfKUT2Evixy1twkga94Oqh/uXCTimYDJM/ZuOcHIlJKotNw + 2NrH6nQmZHO8kCc3XPdJZwuZvtd3Xwmh2wJHowQrS6o1gZ0Pk03RJdTrcAdZ4nOPTMOGO6gAWp9F + T3qLFPCS2G/+4GaiLXG++5J8IGe+ByeAGyk2NzM8W+hoz/d1sffFraUBxglD/plvjk/35PeEmvn5 + A/MSe2WcXrdSxgXlkjJOT0XezOmJV/EG+b5XgjKOXoxD3MejEJVykTUj/WbwaVQPIV2qeRC2iZfc + TJm9f+O/HuOf5aGcrVVcFg+ZxjrFPGCd5xWkS03wvVX1aoWk/G2W6jtZmM+xH/0tDRtJSB04irfD + J19mV37osSUef/rdXT6VmTzTiVe1nRcOwlKKXdRgoo4ZS5IgOrRgdBMZVfHVNMD7TbF7cMThSFay + cdpnqzZA0It8E9/zQnXiOaHrxd49dNL0JVpyja5FaaZt06AS+Q2+AMyjD5IyDrU2cm7pVWM3soFA + erGZkMOo1szAwOb0cf/Q7kPx+gFP6d4ndMA5laoz4ycJRVDGhdKYrsZS3bgE9itmpSREjoYLTIOC + /1+kyEyzSWoJCNYDzoLPvBIFcyf0T253KB9QiRoMEvt8ZMAiUSmk6WhWyO0FPd5fVe0eokFI5tHL + ce+cd+b4skQlh8XoAhzOQjfmlsKMo/lzT1b78fLf6ELxjujWiPCDW8t67zAO+OWN2XYD3DdxC0Ch + HnKXfMq8+Ps5CwL78B563UqiE5RLEh09JYnu+PgUPZCl1IuwHN/jvngWuZHnOqMI9lEsilOc8ZD3 + bzBJq7v5OJ1P8pt8DvxR1ghBSZ4zchMB/ewIXYB36xzjV1BZam5ehNXDBKbwH17XAbQN4Mub4V22 + AZ7xLUvnMNkpzbT0lwxXHLKWC2rH6ZQ59+fsafn6OpEFLqEgbBADGHAWmP5yfbh0zskWVo6SdBk6 + MdtFcfDoV2vAN6PK201YiLwlCT1xORS4QJv8x6wbACBjnHNCuykdemi0bUi8rDdfcw+aTym0SCYn + CvuXowoc0ufO4cB10Of463b6HFEu63P8qXCufvxSVefiJK6ocwmceYeNEhe3U7trNV8B/RrXKvDd + mxUvT06w/CLhWtvGnsO8xvAiA4fkEHXrESOanIm7RI8RkzIR5sSj2L2Y5txrAQcLZKQyaKy4jdYY + QgQywIqnXFLLSgbm+XoZLHm02GYtEP9VGBmdEcLPX9MwitO32MKmQ3Y5h9M8Xxv1a/hp5ycDD/nV + FV6zd1wXAI6BJRAu59tsOL3LBh9OXzFV7ADkoaSPiKMIDbnYpC6fVZ87O4nyJwmHfSR588PER9Fw + 8Fo/ZYCxSSJTvdg4UtYRG2gfkSdQEejslXfkhB29zNTG2sssujC9zPRQ1uDb3JiQh7oH+ffL2Wtp + q29/U+8NI9VdUaGvp5S4PVHyKtfhf0TsPJ/2MBbTfvNYEC3lAXDlAfDY2+CIdULKLhrZHgHViXEG + 5FOSAhYsELWNCswXTU2U8AWrjG8nYOWI+l723b4ffkyvmHEobuEBPw1e4gvxiTBIFzwA9FvWFtHQ + EHXQFnZgX6nxfsfxaMMfkKs7AdUFMD9S1Tnbd1dLdOYT73V05ATdwCdFG1vwSdmFAT4pHlrs49Y/ + 6vTR2+x4weCBsOXuORdvtyNTrqWCwnXfukfM74bkz5tY4/hTByaKP38mwG91HUMuUTVLTBFC27wb + s5+XJBZ6RVVomJpsAQJyvtwlbMmJD1St0g7ZXvS6da3SarYXPaWr4OPx23KRKCxVmpRLlT5L4th3 + /VGSOL4XtiqEH9MavLvetLZ0/vVujl/Hg6k+jRVMeRNqhZc0IkxgH6EjXWhKoUPC04x3VON88Zxo + FznD+yJlaLhnpFoov2Y0VJcn6m84XTXmFGioe+ansLooBELv+RS+mQcCemOSfFIYFMaB0KxQ4VUM + s0IINhMfg2pryw7Ex8I4gNoAN4VWQjQZiO/GXV2ZnMpOx42WfcfQl9rv+Ql61uEAsnIEjysgLAhF + WU3mOPb8g163LKvJKVfKauJTkS168YFV+EfgReWyms8iJwT2ARejK0RP5nrDr6d6wVU9wWqV3aRz + rJ8QamAUMvDkuXykBfK8lMACCNYAx+PL2YXHI1tElpVE4/yynrMKd0rnQG3E/zsuuq52XOR7Iao+ + lomCNSvVSU5806SFAJBm6eEk9qKkWq0zW/x5p1egrWVnnuM2BwT4jo/Mruz+riiOBj9LAqfB8W2M + U3NRi/lpBvUJksS1nIPBB7RD1S79sG7ph0++LNds+dTYAvgMozTE6oyG328QaBzkvm/ZarMeblcc + 6WYc/G08nVHDXJRE4D5w+bveIRqd5UhG5b21XHuUi3kLzIkXfVU8fYAnQivpyU3aOCEkg1fmbv/w + v32JtiFGHly340C9Hw4PNjnwPNp8cq8YPUAo6DRuc7zdi3uAPhsYaz/Wz8NeoX79oNYJePhmXtZ6 + 0ct7jQCjzz44zO2AgsBft0NBIMplFAT+lO618/MzVhGMA9evwiAELhZVHQWe5zt+TcXoBRYTRGUm + G6/QqnBG5xKm9mj4EZS3jJtXUgIYwl85chlfqTUwMjzXml2Px9zwf2FgClU+gJbfNzfDfKEY2WV2 + hQmWvHQ8vYMi33SWbn9ghPXN7GpzJO7D89WSVcX1rjFkzHXCKAwq8V19+ViWatJwhlznophP43KE + +89qhMXtKD8UeCef8kqOuHmd11FUbpyVvu6waAjWILLFRT9FGvn6JW75fDLj9adVjCIPSpLrsJat + +ceKkUJDRKdL0enz7vXxlzHV01gP+JZV/pXE48WkYfgkaaao/UuD18XF7zR5/ATCQZnM1oK5rVSk + FrcVDZ/Id0fD4Ci+GNKvH8TDp1axE77rkjW7bra7Sc47KLVHrfySlvA94oY8JySnWEIHRW+8I+3p + 4Lie/XCQJOOPpa0cbuZuFd9kE1s7uejAsJLTM7oANrNbaZT68v4jzArFEuUTTewYNP5FCbRfkMyA + E+OW8Sh2REEmAnySt+1VPt9jsn82xozab4zkRklndsuJgICQl4yWwIdwWfa2hfYEwiaohYHj1IA7 + GtNxENAb8x0hVGXqC7XtMlZXwFTO2W2O4tIhtuKfXRLlrwkbx8KIkzmmktVcnt0h2Vq7pwKfjs/Z + +Gx8CXM2LoxzY5hAFAd3bMleMOw8YN78qnu3XkbObkXAmi5zyNxVU65uv9QaJrLstgvkm9Dk8LHK + GyhRABhhNwCM0B4AI6wFwAhFjNb/vj+rmNRAsHVrADC8wHURAMMLgtACACP8zwHA8HuAYHPdhJKi + 5Ut66QOe1mnJPqS/J3SkeBO+TTrWzFZtbAUc2YUh4YiHQk39dDwupYQMap4NP+XLZLDA/6AE4/i+ + QFUISRLnrvJCP+t+9O5PNO9yazqKUj7vkEywq5nV11uJ3R1y+X+qEB+qiK/wxDty4m6bnDex3uPU + gbnF+TNRpjldfL1bwbZWv2itcDMnjIMO+x4LC0E4JUW9c4WMRb4Y34cCukedRmjkxcYHZbqnBQsn + 1ccEWgcNhIRU+vqcuYm9jY5et7ooBeXSRUlPRTDz8W/Vi5InBOsXZfTimc8iN4pGwLsiFMdxZ/y+ + RLt2eouAZLx2N4Lj3cAO+vSGFX4EjG3lc5XO53c8ynUxRXusuuK43eb1/FZAM37J195yNJygRXYN + snx6CxsJg2CF/wDNdxOMi93ejuHnbT7dzmv3lxiV+IEFwMU9fpZ+rbqvenOul7qvrwIRmqKARjbx + MPswrrrTtS9E//EqW8LRqfGtu2G5eFo7aZXIWOAqCPfOqtZ374fxjqEP1MZYYxWz7PnmZpXl3Kfe + slNe1u6Sus3xkuse2UqY9mA/iHDTm/Rb4UTC2o8rYB+wZe6IzIffXjEstFZsKblGhQbJXzzLtps/ + x3/Prm+wk0kK37kar7frSbbczC5nc1zO9d3/z96fNbeNZGuj8DX/Ba9OW1GkC5mY7SuVPGm37dIn + ubp3vSc63oBIWOI2RfAQpG31r//WypWZQGIgEyAky9U7orssQcBKIMc1Pg/YZbAljK5gBSmlyYld + wq11HOE7Ur5ki0zWfRElThvr/knQSaIXFDvb/rG32imPkXcMLfWDEUvjAi1/UHUxd5Zm8BC1LQu7 + AM9wUvfrL725tbXXQKJnHvUeA2YRB25BV486fNyRrl48Y09XT01U6OrFReUd/cyZWwJuay2y5ONn + N7hnKY+oxHHbV+TNx8YTI2pMIPGFbnQkn/0x6Uc/jCv+YYtlY1osb0uerV5LzpdSepoNBD368X0n + hZJut1IopeSKQklXaVZ/vKwrlKA0OmbMN3jxixsxL3ImbsS5I1nJPi5mMMIrOD3mMtqHP9D2UeOm + 0lkzoASsyg+WZsqzjx8+nlC3rZpkm8jiCfJIfU1uUqz8uP2WUAnWx9NXv5hpOqRFftw8pBbZ+Lp7 + dUqs32hrxAcVPvaq7L7NbTRXy3qBF1fhwidlsl/VxKjLIFaVg+pQ6sdR95N/ERkm0KL+Gx595rjl + zQM3wrmpg7tOKIK7sUfZxx8FwtBxuT8sdgOxxwiuIjyCjV3r2GwlF141qL0rzkhEAmnuuOqM7vA1 + YsjF1rt3nuz5mBqq8g/U6IZEG8Ol1t4xvZS5v5C2VYgirEG5yJu5wlRJPGXuJDn8Ca2spvDd4wCO + ccr1EKN5vzRGuF/PqqOZ6hTedsszfmufZ/y2Mc/4bSnP+Or1u9rRzFy3ggoew9HMMAF54jKPRzJ+ + /1EWZ6yJB0HSdpgpnXk6Q31WnI5X6W39dFyVhZgIXRXQq5JTwYOXiMPq+Vjyq8moScux6LM4akk+ + MkTrU/Hj+6vpNbwlzh3QnqGhZJtOlbdRRpgNj0jQWs3Q3MJdOUDw7HZ1+fHiRPXpgYbi7g0pgTKX + yvTlOG2JWc0CjQE0uBzwgG5J/wriuNtrV7ui6c0DxjrJ3Bzuim6DWCSjWY0ca0WOa5Serw6/b7dp + jRIvLGdZN8nbw696aPxHTdsLVdwsyHussvhSUNd3wr23QY9fUZb4cbeOvAJX7Rn9PhHXffqXcUf+ + 4OEVnLJimzqp1j1c4Ua2HuF+qYFVnCAaySUjzhkMDMmPJfuiCEfYYIFRIdDmWCnC6yYmy1FiiMzz + OCkBfVLj9mkkM3UVq7/xojE3qqu4WA1f2xZ8jHRWTjQs9oajRBrZZf3H51hKUNjFtSLeeATYvMZQ + 2XI+c6giuwBFfIKZa8fWxZLDyuhxO2PC6skDObOU/VrFyuloAvRLOxtJvU0s/H2KntXMHwJ0Lgj+ + b07ke+8Z6wA8RbfbEe+R5Crtnrha0dpZLBwBJtPelPsRn8BxGu9PYrpegsS/dhLTuxSjYlj0Iep7 + RWEwKg9//k3T02CNyO56my4z5ARDBpobeNMcTJrFzS0oFrJchByD+CxVEeXjZTL7oopB5OMqZ5l6 + 7dP7M/YSltyWKO9AVtnLRS9zNp/xaC0m6E/yrugp1Tx7GNzdilcT4dJIFE5n3+/XeQbrNCVr4I9/ + nI4Xm00yXxRbwk/ysf/7rv/7rj/du/4Ox6usfBMZ2vqNipedqs/A3IFb+W3wqrSrJjncOoVPXrPx + M/zp9Xv6eFWaxU5Gf16+YVMm2hM/8uJHt/jRK370ix+D4sew+DEqcidikka/MnLE6V89kVevfuUE + EVb61S3/Ghu/uoTeo38NBaeA/jWOYuPXuPxXz/Mj89fyzV7glF8D2im3G3DHK/9K5lrp17Ko0OdB + 8SuPwiggBklOQVoaTpg+CWonK8xJEW5/0P6yO1Bp7JNADmmmiKKBdW7CB9u3HmLY0G0QFoJU/Ke3 + KKFWlldA17wLl1Rji8cPRHuPLxY+Pm7gRA7hiIOEUnbRkR+HeWDCHUBVGEe4zamM+c17WHr2ajfd + bqV2S8kVtZuuKrf5mW8CvsJmxCIvNOuY3ejF1PMC3594vh84+5Xwz0uQ36CEHxc+7s+D8YTxXV+l + MolYBYllXbzwDuKU14TQMDPWKcyjdCoLjOB09FB1RYQJrPfdLK53BEthYtepFTjH4iYJdQy74Nxo + uezPyql1kW94nYLCW7qRdtA/Ps+5TlRUzsvfvyYbTDv8tLtD2sXfP/1xIlMXR/Cz9jWyyHeIrIt8 + P52TqLusUz+My5uQ/ubWE6VhS/R8jxBo90EC1gQ10xHwBo9MV7/JU6xQHhqLyYvIx1NMDk0RKPPV + u55rEXcpXotZrvMjDrZIAljM7nOcU+lUoG4MIHYI3KjjTyY16QcCoAqIoertJSx7+xOObrcLDJPk + amBYXJUAVH9e1QPDASoWZmB4GgWB68aTKABtVWUu3m8wUD4V0QOZ4EKZPiX8NgkbdZ8PkTHFXETt + ifseeYSiVML6N+SVaJXww8TsxS+T6M3N2fyRy2qNFA3Abh57rMqoZPSbyJdOZs359u0cWFKwAZXX + Ph5wQz4+L9qq3kJnWulV8JiDW559ut+cTExgjlkDOJ9OR5poRVWCcqyhI/HD8jFsDOgbcn11JMIJ + sACbVB4Y0Bo0NsL5qANvHguPy1ZV+wdIIBDXhh7HbzL8/j1boP1839habcW9BPUPQzwIpuf+p9tA + mQYtR3zsM3m48oOIFbyqxVqtbkJdhVLobf/GZmcC9xP1EK9nPx+ehLnNQGsQEvp1ltIZqML+/L3j + hvY6A91upTNIyRWdga7KwsHLDzVsL/LKlfO82Yspj1yHRxMeeXEsS0ovbsFMu0NDTRoM6bzIKSvg + XMFOExaWVwnF5unNnUB2wqMkActugeQ4+M94nqF/7OW4kAu22NU2ZXytiv82d3WorkZcizL7EAJg + tHEFMQeMlpA9lOkMhuv/7G6SolRSm0Wfd3lVW3Bgchjv+fqi9p6jH9L9I5ww2sLlklsQXldstoe+ + sb462liLWMzr1Edr9cU2gkZPAy9FLvXQkWAazHe7gGng7ZZgGkJyDUwDr9JSf/3xk1+rEXb9sAam + EQZB6DqTMAjjQNYIq9iBhFvD/TJZjT9OoaPhbIOeSdew2U+Xiy+pnD1GSYbiYVG8PCLkIik3P6Ot + e51uv6EDBnVJSf0Cf0XSGonz1gQQp6Um80TkGr+9SbioOa5cV9lkpxdTRglj+hbaTV6vtn4ra5Nm + jUESmQpnE68WUxSIeHAQcu4MwNnEYubxMKhuTPr11AFmQuOGZhVJATdrvpnen6jXBZg2dXopVcYw + ZKJKAUkBkqslj/6q02WEa0hDq/iBMwC0iuhRfGTfCNgq3oPBmHHptMTtv/RC2fhrMtshu2AhGMNX + d7slkonAOhHb/XU2vx/n8EeBndJWs/KkaKeo8ll/qWWrh57ae7ygM8x4/IeggoldTPRd4363tyME + 3xAXgVfQhNd9w3liuzJeoU9yV8g0d0f4G+PPHa8bE4t+yprBQzdjknioy0PwsRRtIL+HF/ujo6ji + aIlRQY9ayZZT/cBD+7UfLp2jPOxSNSNut3SOCsk15yheJe3nz0+nYc05GjpxrWqGwWR0Qx+hxJiv + cC/VgdbIXFFEh85enXnRrxenVwyknrFIIVrAnyiWlU8sM0EovrhNwubqm+NDgqeVEmfDTIqisMVM + igPEnax6QathLFO7cbGq7YA8rTII76VkYkxFTHB2CzMFI3fiKEYcmmQsCG5LDJHkeLxd5Fu0DgTX + QWERvJQPXaPxQOoGqR6U5CMLFExfJyoMJX0FtJhluYV3LikGoNXIjlQ2k83wjnAyas+o7/DunD2D + +qmOd4eEjNQFehWsn5zCarUDYt/nIQldBaDFz7znzO0EoEWP2AJoyQYMAC26RhvI17uESbYf7KcC + v16jOfyDImRyQijY29nf/jYSzwpOrTiOR8MojdThi6y3jgenCNVM056ebERCDoYeuxQCxJFKOynV + 8s+y3Xop3RH9XxCExwpotEzSYyW9lv7EFEnEcS81EOqu1UF8QGUlD6QevX7qH8gR2W5CC1WxoA2m + uuyWOzvt+wm4WbQoj6BpdafQYE/18ODWZq5TZe3tnTyuC9tRMXlMedtv2TRPBe6IKXPSeLs0eLtp + yNB+3Na+8T2T8T+cbk2MLE6AhtXkUAaeokAvdqKOkLyPUQ/uBXEBaljtvoomNAHlgh7GWpUUeaAX + ZE/uBzVUJ5ZkEDy9+I0hl2LY5chSz1ieWbqJ8qGlLkrYxyUY2Xcm4UqJpvTAn8ttwOkFqoo8vXwy + t4vH7WAxrKM8fRvYf2bC+VsIRVyPI6mJ4RSmakk452kRCD19h2xIR0oeiDzZiQK/CEGqjNtje9L3 + GRPbRfZ9IfPsNkh73h17alhu0B7ooC6TebMNK6HpZLB7o0EZlWDZ+S1v+Ozj6auLd/tYkw7o/VQF + vUBA596bqxM79IIaG3qWbGC76rvpM4dFYp2++fCxpznixwRG3NBlfROhHa9NIg7C3jHowM1M+i4u + q4xW1DGvHNDyapE2ET8hixD50c/eTT++4wX30jxbZZt8IlCKCIbp4ghgF1+O6Z4REU29U229ewoo + MoEoMRm/EUBNvdD5fVevsGm+W37ebcaz5S5Hlai3RKF3uULmZOyNjxKrtBaCtXl3ySLP3kFHt1s5 + 6KTkioOOrsr8/Ks61j+LQxPWxnNe/OKFPPT4xAs9QRyDWs55KXgkQj2YJZ4Jj81duhBOVVVEPV9g + 45jE9v+Mc1FRjdxzoi9ewh/zdbrKhX6HuWR4MolMONCJlKBXOttO/MUo3JmI5tBGPS/9CD//P+MS + RiGlqlPj35LlMn9pZuUVf4Exy1YyoC4BefJ1PflSS2tKesBk7DaoX8agJ+OQPyBXmYwD0kkKJy+8 + 4fK+khpZgTouRRSN9ytAUIoO0hKf5TBwu7Exc0060hBUqko7ZRpO3ZZ2RS66zyqKFmbZZq4S7+XN + OBGEY7E258z0erhNVejCS2HYbHsLO/LNrZIywnVSJGBwmVUZGFG/Wn/XNoO2xL3ekQUtgJE+pT66 + m5nrSBg/7CXl2N2kOUYXYUsT5FCy44gpUCeY5N3BEaAxijol+SxrmlK2neYzidkmOk1PhQ6KcMAV + 7nJlHe9VYTtxOe8LnAWSY5J5kX1uCt1uyTEpJNc4JvGqTEO7+GSmobmhG/AQu9XkmJzykPPYncA/ + kQ7OkJt9DWOTwjoFw+6FEf7+TCW5z6AR+PdkohiL4OtMbiZM0dTKqxLx7HQGW+4JukDW1YZ0Ei/l + pK239Zw007ip5HzELfteDKso8mvbMqKgT/9fkUhaect/NSi4Bt4DwjO1ILOV26qBd80yiai7XKy+ + IAJlOU4UgUl9QOrohw/OCOeW2jADJyAK94CKZD4nW+ipgcxiMLbJqa9C4UcLBMuKLORkhrEriZty + vGAxcqVtoz7MVn7f7lKO9QU8HFeblYymjJUhEUlxmQqnam2hT/csdKteGkj0I2G8h6FMGACFoEs1 + Fd5umTAgJNcSBvAqHUm//fEqrtkjXuTUqqn8CB4KJz6cR260v174ZgO31uuFBwrpi25PlvNKOZxZ + 4+S0JkDDXsNZ6A9X8vvJeJ+G1IkG5bdgdIYt/UO2lYQhJdQaohRXOO8FrbNB6Tz6+P/7UNQe8dAn + 6vmQEp2SzXWGcQt0QxztAnYI4Arsxm2F4fx2t+oakj3W7du/TuiIepnhPJ0R6dEtE9nqQ7rKeKwN + jcpDf79kjmO/odHtVhualFzZ0OgqbWhnl2d1SH9BPlJWsUPY0JjLY3/iY9qx3NA+7OMwhfWEzg0z + 4letNFT3lIrfi5g52nKzdAtn0lkmmbgRAuD7QqTzjivUuWrFl5U36I5pEY2g7fZsM6v7SvaysZrq + eSuYMWyVnu/EQS25u4Oyb5HgrbrsV6X6yl6uudeNhrywlT/AeG29w5e6sZk0ALXlamVsTebo55oi + I1wNmkQg4IG0CljFKugIj69PhZ7pPU9CFe5DW9z8Nn9RAmRfOo70jH1RWaFYDn0w8aGxy45hmwxj + yUPouMz+jKHbLXkIheQaDyFelVm2F5/cOhFhFMRVIsIp6NJO6E/gn9CTaXWwwq4TdLyVHa8CQmQq + ayOK3WCjnLKGQ7BUlEA57Pk42RJcW5Zv0b2PASEShtt2sqHaEqmer7du/cCQ9SVruDnZVpX0MDa0 + 3hImNuOc45dWd/UqtVBZHNIPtVXtCM8qc48SV0q7ZT4Lgqqun37PROy8ivxeTQcuOaoa5cjOn96l + c6LjaywlYgGLTYf82/NJg+yR/EYJNQCj9Otlci1TqyfQGMxRGUvF9YyjyNcmJZCAHBcfhxs51aMg + qs+cSoQqc0yUGElqw+vdXCxEjNnAFJI36dkl1qSA/sMvpL+OxCLQeHiR6w6T8EluhtIY2Tv1OfET + 53fo35bdqQcnX9yIFGd8sW5JHGpbHajoSEwIfGTP/KkJbEHGcxidhDRevVMjKWHIPMCy3bbHUdiv + vij2io8otqBhHz7QBa1SDicHH4EbPRzooC2l2368gGFAB46jhYtkDfF7x++AXU2329UQk+RqDbG4 + KoP07+s2JKx/VqshdkGlDvnEDVw/khBDSqu+X5bNaZOy4TU0Ddr2eL3Mz8TSflkighVEERjYpLp1 + cY+CYZXR8WWDxUfeeM3zbJzfEdtj2GAaUc3Jxqb4BTdL6PRNtpy6JYfP79PqxzUfy5HX1mjMGZjk + VQMNxMNcySpRhcop7TrMi1pO6chzIgfMwhG9/DRfTW/ul/UPqLx+leatAK2B03B5n2fqycV8IdE8 + YQhRIRvX/oKEvV/Se1oXcl/Hk5k+qrA7XxIuYGJ4kebpNhVYBvoBNZqEXnC3mG2o8neEE1QX6HIm + CnQHzKUkplaKNA0V5fECjzL55aTqIb4NHlYWiVRWgFVs52lYWrhW8PZ+q87qnBy4if0zyKNzZBhx + A7onI6bqrBh75T53wi6ls8VDtrVWuhGj2kpdpePC0N/LYQKYTEXZ38iMIFBYwGwDy64C36XEddcv + eqwd03K/Ji7zcfegZE4qJN+1BuwT4Qdo7EChfyAUZQ07WelQFIAITutseS+xzc/PcSe6y1ANfuiw + xHA4Yr2A0MQeFFDpDyb+tept1u9hJW2/Rhs6DXP4IPGx/Rv2k3/onT1jltWn1JDN2WOMWvfKMLCl + Q6GNRlzXxbqn7Dnzu+3X6iHr2ljViFkdK6/Sfn318fTytVk9JK5cpTPumFKoEDYYqBCWClD3kD/1 + w2QhCrAUC3s2CZif7U6JSQHd8vqy/xT7oW6UfdGIfoAsnapKD1Woxu2y2rXKDhiT/Rro6zn5WbRv + 34vEJ8BCvsBEd6rFOOKIUbuXq5BaPB49Z3E3nBb5jC1Ki2rCwGiRF2nn+ucrTDtJEw3HPvrDHeer + rExV+Md2Daq7WRtZyEZslsiPBlQxyWEriCWl1dcDVcejTQysaazdlbrj1dUfUyG393rxOCdDWBIk + pmXK2AEVwkMZe45+Olt2yHMReyO5wuXDMMPwU+i3ag79EdtKxKRqDUe8NdBOnyJGx6eHOnzFXi3F + ldDv/aSMxBuRpSuW0TF6s9oyZFn12QV7zVhHA7V4yG7TKDVS2jWKq+QLnX37zCIrjCfRefBHUQBy + Np/5umPPhIxnFx/OX40ZiyLPj52TkZAMm4oLWggTmwrSG+nZjlgPAvN7vVzMoFcnAoJN/JbWowt1 + HqDApVTQu2N2FydyI7EAy2/yw83BA2jWVIPY1lPDrEmFeRX5SkUPPO85Fs53UNDpEVv1XDZgKOd0 + jabnHxdvMKKiSEqSZbLCLAXUl+8qMrDKP1AnmU9KSKl23MKF2qHGn0hC1Os8fs7jQ5OF7H++06TC + BReSNlYdvgFsftdhZN2u7zeLefYdKY+19/P4vTvQK8GF/ZN3WwniEeuVQA2YK0Fco5VQggDT+3PT + tZIsXBEel8aqS8W3BSTZJoVn02W//iHs5LjQY+DjC9FHKB4/xtWmdz5K3v9wyV3XvpiYbreKU0rJ + lTglXaWz+c0fVzVYczeKzDQkz3/xS+jGLPIm8E8UeKqY2ECC+5St2Rqd0Hx6e38Ny4O67blKGrrb + QLPfHpoDTGi4FUnOfy6b2MdsNcUyAYG0N853d9m9AYDeVG0g62+L1YLYgqpzcoHut7tLVuOrf57/ + evXxjVZ6F6vZcid2wKsPl69c+IYNYg9/Xu6yTZrPyjRez96+uTiZSrBzddEAMxR1xGpqTPSIYBRT + j/Po0+W5DmKCCR50hwcc7IjraWN1cRkNVcYaRdKrcMGCN/5zJ+jiVVDPWHoVdBNlr4K6SNuIHHbq + 0KIHyy6EJvtZ9cDHbB0YLaHTlAcCf6mbAW51DP1Us+vQY3YH71OkNQ25q2yqAUJNNtL2RRliR0eF + w1dgHnjdgsL0jHVMWDZhhoTpouQoww9BjnIzeF5eUeKWZ5QguUqn/vRkuv+BcsuwqDgPPLHbRg4V + CG+P9MBFBVcVvUjS7A78gYv0gUOove0dR0JRbLvP3+NXgPZyMErcrM+ivjkbHi+mxKGZOgim1CDt + PVIeSsyohAF5e+1NB7rdroSBJFdLGMRVMh3OX18FtRTHMGbVCoZfgjj0w0nocIVCZEBYNzFQnH/8 + PXKajUelbO5W83QDKuO3aZ4stwg5M5ece2RunKd58FD1w0Pp9S1VZFEFf6dcLOEFfhAHXgUGfOg+ + fCk1/GyzxTL4GxJ2hnXHSYXjl26UjZHcl+PFHXoOE5mJiBkcm3SdLDZjnFtzBFJrSMST7355+srn + 43SNJSiopgl1bYSTTVcKhKHzlHKUnpSzLaBgqhj3LlwbyicRFwkT/BQZFYKOGRPqKeuUCd2MmTOh + LtOW8eqPN67HRnm6QY+e5rKtSEDV3+MOuaACXqLbsPGZtlFseR73yJulsiYaWaj3o96Kgzom0KZr + WZeap+utJXT0T67SHDZ0h+S5HE69kg/5jFPyjACu2i7WB5WywWiXWcgIqbs69QdIL4h1egGL30TP + HdYtv0A9ZJtgoBsxMgzUVVIq8vVKKgm4OBarEf0zvoLrI/wj0bsw9zh6l8LueDwYtQHQz/psAb2w + fplD3UKd3zmqPSTjhqW/64AUi4qiDsyqR9YnxSpGfxa5znOnC1mHesQyPq8aKEfn5TXJ0HF6qrh3 + JLz7M/M7EMsx/b49GdXvfLuZuRUfgW6Q+27scgmCbpuk0yHZ+5i0n0dWzUaSKAhvr5IJ9d+6fTWF + WMzi54x1mkPyGdtJpJowZpG8KDfrzWz87Oqde6LK1O4ltcLot9NLzRdYBA0LmThRmNrOD0Jitqlo + PdE0n6ZS9rSi6cftwGq6EnLmf10yJ7J3V9DtVu4KKbnirqCrpFmc/vahVpHJ/aACm8xf/BKArsfD + CfxTEDjvYzUzsFlWqC8sqdBuu7tGFMJsc5OsVHyDnBOn13f18kulWxTXGr0KkRvyJq/CA7gnSh8h + pssXGGJkBDK+CCNypaiKEZDkPGiptERy5ijyWeHIOLpvRzjCGsosIvxKfAWxL1h9S21O13AMtZkc + KppizuwnNN1uS1OMkus0xXCVJvSri9+8Ok0xfq5ZYvxLADtcGE+C2GOBTHS6gpeFb1TUW9D3r8w6 + E+SdXcrRhb+eX/2T/3p/9u7y9KxMMzcTB+/1YolnWeH9KRWkXWfIbq2cETB60hm0VORZBFoH/7sF + +wY6e0b4FekygzdBlLrFEuaO2HDE0nm1vvbqS2f/K5nrJ+AmXNXF+aSM7ucFocv8sJYToHqk0lEt + TfA2lyJzOAxDDbG2RXpLXXTs/msfPne5Cb2aiz4quhQxX6inzXJvOKHaSqTN/tHSl8nNDUrM0XU2 + L8OxG3J5aL45AZlYvP0yTeZW8puAUhrljw6ugWfn5ydPcCGMcOEX3Mo8Ejo2JwaGqtSO3lBORVft + vV2T1+DILUkTQaX2udFJmutVUsqa5/HBPbzk+v3J3ccHivApa/TAvmWlsuKeafZ98z5bE9aUhWJd + Kro/YiktKtG54pXhsbbd8zFFtxGODxD7K0QRx532rhwVnFQajcoKOvPBhGdON1+gfMbWFaiaMDyB + 8iJpN7ABStsygWWDns+SL0kBO1I9QBSEvsOik9GeO09B3AhlCv9h7DgD1VTWYAQVQJQ1CJPyDg5J + l/kT4iLu2fn/uvCInPnG9OtNBYZIi4oB9oUgoLIBVtzX58fgK8axTjCMT7ESyO20mRRPWScZ6mbM + NEN1mbaUu20uE6RYfEX+jERESOXpnSE+HmmDo4N3jD+AtBGKlAmHVAricGL7xLmKXdsSmajVGnmc + UXKcqUlU+cL7Iue4rMR7k5ACurtegHENh3lJOenQ3p6tjIW84Vs6B2lEf/oON158j+ZyIDA+jKvu + IJhbr4jL4Yf263o+6RbNM1bhGU1E+gVO4KNLNo8vfHQ8RiDzopYc40zzYRK5em5d+ukBEOxcR/aO + gOgqjUU/1SxyHKWace8s6FYYpJ+xVc1UE4ZqJi/KXIzXp6/g/+/Apv0+vk3R1oRn4eQpbSQYmFF/ + Gl+tr71aSbhqB/UxP46eZKRIb86DppH3kvrkqsP/s3PL99MzOI4iCW9bEgPsc55LOSkWMg8Fx/dS + mlscP5Ia2PzeI9/r+AwatXsyxSjRhbLzd3vKzt8bKTt/L1N2vr6sM0qEflRllPglCNFXPwkiOMWk + ripRDmX6D7F13C1W2B8SyzPdNASTjquqKxzTe5pvJs4Jaq7jsns9woQmp+o9fj+V8ttAO53AD7zO + Ytc7Eoov2yoZo8+tQSrfiWEiVmFG6V1lMkQTYXitDSd02tpweeDBG4wUjqLqaiF3D8iokZlkPiqW + hJYn1s/3+/X9Zod0cZWgmmptNRewmtVBeKmUFzJasGE8onBHKrF8tvWBBlSCR9/OVt56hCtBs0mE + BDuKY4tLuj4LjqGw7yWzzVf8pFnmxfTCRw5PzF4fjytEqMRNy6mTxB44WcPyJgUUQ7DZ1B5RclvH + D4KmHXkEMDbAVw7ow+4HpLD3mOcyIu9wv0tEHm+3jMgLybWIPF6lY/7y4oqx01pMnvOoFpP3kLSB + TbyYu+iJLCeZFOkfssSCIJieec7VibIVRC238EO9HOOZQgR622x8uc4Z+4244G6TvFLFrVDDr1go + 7tgkW/iZlaTKqaaqaIS4pFG7yMU2SO9WeyvFMv1aoPwkJxUwcZMwqlTfEvt+jGkpFSWkpAcjgtB2 + sd3J/tG2kxEgD13fpoEa/Xa7+uGxWkmOKaIhAki/wjt/XmDhzbbK5u1XdQJTownhEGPVVoqOFh2v + ultTMQuU7wS3gZUIIZv4AHy/akYtjp7URBzRotLxbs/lI/ktJdvZvkOsN1/Y0unIbwaFE8/CbjFb + 5HJHEpeL0O/4mbp3MvafR1dj+vG9vHjSxaMq5p/eeBtKYxuwqw48ccipQMFjEyy0s2vhyExFOmz0 + Eu/0OOcB183v36tsPB5DI8e5TkDWe+xgoCFt/8iaMnS0ewK3R6EuHt5VrZxBx8jbq27EEQX+Nn0L + 8yPH1YhKgfecdcm0V49YIypRAyaikrhGx/t8B6fLLh+V/Dug7azKzyKCkhv4ox8IY/KIucVqiEQx + xJ8fLx0ntCdrodut9DYpuaK30VWZGvzprVtzz7huhfAzeDENEASJTQLPYWpY1WFZzvVKdtB/t8mN + JqCSJIs5vNlXIw94e+M+nOtmqDxg9TkV/SVmVY+M1iQ4ptg5zUrW9Gsy2wkoUeiNm1QUWpkcmrzN + HxM73GWR/6/Raz5dLr6kKr7S1Pd08hsoQtNtJhtPS20/O/u6PSm4zuDOe6xy3uBd1QIwGK9oPS04 + W+6X6RbWMHzNneAbzVb/s7vBMuzJ+NvtYnY7Tjbm2+kkgfn9Cp6Z6alhvja80ggnpfaU8NiRSA9E + iyHvhlWoPqh4T2sNJ/CpHu1silQzi1WhdVHRbIu4RhrPfqLa34z4WI4MUe/3EAWsiCxjIb2eEXuT + OVpf+dhUIlhO5aHtapoPhImONRFCsT77xye1KKw7wfVC0rnWi3SW3qUqWb/4JlhDrUfTAM6iH3OQ + DeSpYXFIMSzcZWDZ3PRyGnk8ooyJwho7AissckSd2Z9nlw7vQMdNt1udzlJy5XSmq3Q6X7z+JOCD + y8czqIZBpdDBfzFlvgfNT+CfwA/M49nweW/SfL3YUHLEzSb7tr0Vuy4czzKfVdq7ZsIZmGdChRUn + 90W6ZdHPUMJTzuOzrdsJQXLLEQwKEBgu1ez87e0CT8BWWuywkpb/uhRicaE3/KDwOgw2UiMxcTRo + SMCIXjSkFPfqK/cBhhAdJXwE7d1st831Upyppu63Sx50QA+l262WppRcWZp0VcY131Vq6sAUDLjw + HZSXpofwoXCVTWBfDmKpOV+VAA2+39cwliaVQZXBztuGyjl7NvmSJzCKfB7VaYdVEKzttVqinpUV + 3daOXjHw5tNZsrnOpJttt2onla8AmDbIrnDK54d6FhTVr+lmm6s7QeNR373GZA5/AsoMPYc+KZgk + iRD2OcNIoFnYQuFAoTjBMpntNnm2ycXipXjRRLj44W3Fz0VQaiJWcp2rESOO8HI5pk3J81E2kar3 + HeG80wvbC0KKInqaHPAYlOxCBw2E80FHEI8WKHNm9g39D5K9z/N4nOTWmOIwIcs2PscfnQFvJaPp + JBgu1OnSOWe/nz26/IevlHmAKCPV/b7rVsj+zr6Q/V1jIfu7UiH727enNchuFiMVXdlb5bz4xYWz + wfEnrouleHTmCo6lqQJaLlCgBfKahm7A4yC5u0umArhhsZro9SUx2kTIRuaF5OPTzWdGgR74iQsI + 8ATBUUpG+10iqjWwzHuDmHNIfwvLHFQ4HAlFJb+93WS7G4KvQ9GSEopO/rc3Ca+d/JqKfpWjwCpp + sdNahuuEXuhE0UPp3ZrnTPubtDluHO1RXC2QN2pV1VuOfsZxG+FEVac0Y77zpFnsCNFHDZumn98j + sd0TFAeGsPocsN4KnxzTnfIyuC7FXxu9Z+qDpW+zmxcPKXpwIn34x2/2DqjhYpaWXHQH3EdOEXud + kizQU75lmy9WSggcW4yIh5QbcpYlXR15DqOpM4MVebvBtS1RePoxXXkeiav2DBaXWIo6Hk1Gzz5G + SqmeWe1yyt2rzvBIBQVhEneDv1eP2AYFZQNGUJCu0Vm+u17Lk7n4lJIPvZ76PDpw3x8gcIRSBUi3 + 40sErof3p7PAp6JkJW+e6tZaPCF2UN5dXbEe5+a3oqsHdqN8e5y+K2PRRRdqil5ZdTVIUn/ECU7d + piJqf6apLEGa3ec4HOlUHCvHih0uKT/Wa/AdLIdOzJb6GetVKJswlyFdpNV3+fF0qrYQhVKG1f7P + Tk/Glevjj8l1FfauaELQgrma4FL01R5wCOqoLrTh9kxVkSdal5uEav4An/RkLD97Cl99PC27y1iR + reL+bQryKlVY+1FzlRjXp1IpfayjYxi5BFHdgBew9Nv+QG6Av261U8RoZ6yul+59JPcGJsod/3x/ + 6XncPuZEt1vZ2FJyxcamq9KxfX5ZywhxPSxYLdvY3ospc1gMk3zCHM65J6Fri3pPWHAGSs27D+8n + 8J9Lcn4qzBqVbXu12DSkgzTg3TSBTvlB2JYgEjM4E4O4meYKEzEUds4sWTfKdsLIbZMdMifw3EOy + YebcprAEs+JzTD89bwPhjznzAs85nu0rBmuKuTWT/3aRb7NVsRJL0jzuxm2Zyow7EZZG2KcqN345 + 5hWGbU0wNCXjyALIqwLe1Uof4ISeF8dxReI828HmO5X4TNebNPmiAPvRGoMtWroYMuht2MKn/5Mt + VvVmnbY5wpzYiWAPr2J6ZXludkzxQdJ01FBWX1PCD0huqu2CKRAdGPHRlZar7VWkTah4R2D5cfKH + wE/emtaomh7vXPHrOw9M3cUynwgvAcYhl4v8dpyYp2iyXN7Tx2zLX7cVwROz/AqOKMLa0lsF/EU/ + g3fPNqBvoqmelWQpl0vZY0/0CcmarUe4f2liNM/1RrKjcFPu3+1WRyXOA7yz66Qaq0ll2coTBu/S + KphH530LZJmcIOIvN6SfzzBvHVQV60gH7sxaE2jbyodRcQ7AaxCg177Tyu41Qu41fFDD+WEprm99 + e9cA0kCwZkHEzX608mzo9x4EvcKnLC6bo+xXC0QUl3lxMUll8n312LX5vIFzmxjTVCfha96Vb1c+ + Y01zIpswSU7oorRB//lKgWaff4A/flKOfeN5BBuKOHGvgerJ6xuY6pJSMFVWJW5KrGpWdhdWkbSZ + sJ1qSrTjzm/dcuWvIgOoybY7TK/yv2wnNTqfiFFV5N/fd8rfo9utbCkpuWJL0VVpS1184jVjikeu + mSTkuS+mbhyBjTXxHCaMUlwUry8LJ/i6kmo/IY1nAfqbXCnjDxgknNAkKs+w39+/ZubJjkkswnWV + jqENzJ6GHQcPGqyvF2Cvq1RXCC1Eyf2KfF2qoF17An8tYJdMv6pyc3zOlsvsGz2lzzUdMJG233rL + 68afAEfCYcf6Mjz/d8vdXdEjpuUTxRU9eGIYE74fhqFTtVcqeqv6xDJWUakVhlkxbUgGRgtay/+c + bEGG2IbaEpwCl3WTuc7yhRi6g661i2xp+NPK1p0fe20VDC3tlnemWbacmyAPnmMOwOuLiSEy8v3I + A2tk35y2mbqTcWGzGBP/yczpkVjzOvbrO5R6GVAIqWFG9Mkggu6mo6QyJhZ+QHUc4Qwg15XtfOri + qm0OUrafLPUiTlzTeMuBbWAYvXRfarpKhjN7pGGvONgJ6lxyZR6NEzP7c4lut8yjEZJreTR4lc6l + D1d1UB4WoTll5tFMOaxaz5nwCHpRYtJ+pBk/hYWezeFTzVRVtahpZ/+QN+Dz2KeslraQMHDgYKxh + x8OqQ8s5nQrq0mrhgJGmGrXWbBmyi9IvFH2/JMlCoUxmSok0i9l5G8BNs+DOFfeVYnUltZL5aryv + zB/E6YBjXaSiuLQd9a6QLmnHBWVspXc+Z5W0lJ4tEE7tvnHo5pPAAFXFslWQxW3yWnbg0GG0e961 + D8GeVy12O8tCnyFSLp9YxmfxuN+AIw0WNu5vlgr/kPEltBvEtFPD17y1dBbq6bncul117PdjsetY + EIVCQr/3UKeZpzwJfoBshlEnT4J8xtaToJowPAnyogQ63s3lOfXHb6fKp1D8qPelD3DfaD5fsJHr + BswLQ5ks4hSpXaDq2MNR6l1rmHQTe5DP45IKB8uyC1lTwD/9ruvAe3/iMADOB9wnMrVSbL/JHu3S + MtZN1JxXH08vXw9AuuixmE7CnOCMyV9uCx6890hkfqwD2P0yypivs1nYKX/OOqaU0TPW2SyyCTOb + hS7S+r9JPyuf4m329vWbEf0zfgvXR/hHkabCFGR5TD6+CgHenoLyvYv/WE5W0Ou8hjzOfHGzSoi9 + PMlnybwr06vvUJ6DuTahY/SSoRZo8c93s+6ffjTB63FUhANkvx7n9uxcNC0ZL252CSqMJa0l/Q6r + ZnWDdUGzHrDZ+o0cMp9xlLs1YoHy3lt2pw+QqeQl2tAjcMRZ8H/zgvH5bfic8a6Mz/SQPeOzbKTC + +ExXFc+ziYdTx8dRT0Qzoaew2P15EXJ+sJnSp86YhRI/2Y2CLvjJeLslfrKQXMNPxqsSAuBdA35y + HPAafjJzgiBysXw1iHyXawTlLRztBWLyxW2DR0ZNCDOnyvVaU2li5keBW3XGzNPs+z3iXc0XRd3r + WLzClN6hmdMvduxaKjwoKJJKZIXjUmRWmElbrK32WYscCVqron/KbuhyAwn5namVvFTRSw7mfCxS + UtCdneappK7DgcQdFCyrW0QHXMGhSnY/NjpP7pKbtAovXAlGQHvouYUN73J9y9YjnAcaEyemgn78 + TKG9NfWH1VYe8Egc25I7Tz7Xxd6JyYYsu6KLb4QGF3e7xtSDvdYErNVyic2UyAMxjIt9uvqCou11 + i2PTO/oQofyYzW7oTNtjMzpiIgPosDFYddEQch/gxQ9PCzcmOOnK1tPbAzQA8k4gz8Veb6KOyaKq + 6G383Ak7VjTQM9Y2oGzCtAHpIh2Zt/NE+oDqm6rMTh6pHJw57Jrp9l6UczybwT/5+Pxk/C7L+QjF + UFGD58qihv8kGk49QQRRePmr72A5fO7FsoqVUuJta93fLKth8XcV8WhZim3AYE7o8D1tzFKkErCb + NzLr0TfFDWzo/hDLoRcvWK38zXPCxpnR+YDpJ+lRqsdYLCtEeNgBM5Rut6wQEZJrFSJ4lfbXP6/e + 1UwS18Ueq1SIgHIIuvYkiGMvlvUhJcrpCzz9YEPSYUPyF5yPn128wU2YDJY/89uGEDKGTzAM/RU1 + QUzvWFeEqQpF7F8puLFyJPLaSxBcz+N+VKu+MBvfL9wMZxfwBrETx2G9IENJ/dXic5psKReUNq/S + 5KT1mwqoNOOLzMqGcH9mVbu86idUxFYLFxrFji52W0rFR2+3xp8WQE6lmSRg0DpNCTVcRkGC+7dy + lg/IRZn5CKe7LijgEnHJlVyXTV9qtcVgz2oJ+r0tH43DovGuxG4DWESyvPKoVdhFSRUrqd5iH4k2 + MOL1ZCTPp2wHNft6x4F9ppOajpdFxd7VldGDbCXiBBX078VqNsYmesaTjz3ipCAviEJNObTs8ULy + qOSO9N7xqMNRSbdbeu+E5Jr3Dq/SUfnujzpgkRdhPNP03k0j34ldbxLBRHP34XeK+MrXhcKAlGdk + toEmZ08fk9PcXjnh/xOphHGKeXErZxiC/nE4V0cj7Q2LpDfs0Vkr2u26R2feHE4STuQUs1tx0uxI + EOY2wX8wH2KkfOOc6XgK+405Hc3+0lPWERXdjBlSUZdp1Zy9OgOj2sz2GDVeNGVyH05VTpghoXSh + icWW7zYCXgvO4VSAyKADErrHKmZqHeMPXa+BN/oAlbZ9SoIf0g4vIKo0wlP/1/Vl7V1zdq6ln7OT + iAMayVD5G/oscyj7sCO1felxRo9s05sN0QIN81YdxO6tjuFc2pFuxOxDW3S7pR0pJNfsSLxKh+PZ + pzcNSAPMrdqRv0QhLE13EoHxyyU16O87zDv/slilwku+KcoJRHkzZnAglYHSDUXBwIfZHQuoyhl+ + 5Fg0cAfzEXULYUKUpWH91Rr+sEwJx30L1sZSoxWcbT83oBVk6F7LofdVUQCFLcRSK8s2I1U1S6iw + gsKIe17NSKy6e80TmPlW4sySenrHHOZUelO31kLHb7NjtdDRDxqQEU4ibZ25odAEjs/DcSgptaVz + OtkuoROQtbRoSYTb/yaM+IXv0kX3p4/PygllabOe2i1TuttH4aQ3xR5YMQ/opOyEzDZ43bHajF2V + nXJ6xhnvDAoln7EuyJVNmAW5dFHmDeTpbp5N7xJMo5RUM2LJcviW5C7Nbxeft/no4+krAzGzuFu0 + E/qgW0UCGYoj4a3wnDixgqUVnLw2dVD22bCM8nfhTQYX7ctyhKK0eEjxx7LsdoB+tlIYhwNj9kjz + NKbSAGhxvheJoe7pqgiY2Faz74s5bDCov5f9FaLMUFiplNtx9m76+ztkYditUS2fZ6tsk0/GMP3x + PeGfC9gT4BlpITyut0Nv9pzcL/hWRycd20nb633xpILJYq9LoAJvt1QwheSagolXpfflrJ475XJe + UzCnvgcLkE18j4ngIu6A7+7XGUGwQ/f8fvlGuVqWG5Df7GoZfxMcoUT/+ma3ulmY5K8xb4WpElwg + sV9LqRrK8QIG/zK7wW9R1xrl4HqtyCn8LB6LPKldhVqpEJ+8n/XjQAI60YjA590kSxljtRXcDHLn + E0Bc+r2cDQy6W4+cwYDcvsULdXseB7z942y0iyPtUJdxTqxpK6FIzXsYjHqbCogdqyzqoL1dy3tm + sTii9uCrtPfPPgXK186o8NR97oTdXFH0jLUjSjZhuqHoIm0865uNzEC5WaIL7XaBUeTinHl28eH8 + 1TiGLdZ1+Mmo8aYRCkHVyWF+QKpTSGZN+fYjqsh7ijuUDlirTMczloJ4bWiVbXxevldAX2LHZN+x + 6D/NcuifzraQz6gGT75OtpJd3c0iGhBo5QlApZSef+B0RSul03MDXpmR0/ki3y2RRXxcV9Ps5/rx + kverk17M9qiTHWeqEwRiz3/TWfUqSWBSeetaHKo21ECB5/hBJ/AcuN0WPAcl18Fz4Cptoh//uGB4 + +FXQcwRMfRU9x/VgIk7gHx+7bp/+9mUJLTTob0+NefYIje2i7HiDxZrNFoL0QhjwKgaUv9QAKiYM + lQBwhEMZZsZyicf87q6o54d33KTpavx5uYN5ns/KdZfP3r65OJl+3pFCpihQJW9HjieBQUkrGTnw + hm3xZ7MMPBNORRWB2a0xKlI5TUafPpyyuMBbcePBAA4OS2g9Wgc5Bn8kC+hPVKxTPETcSd0Y3H1Z + BF9yKtuqA2qrDHX2s/OKseeO1zH/WT1lnQGtmzFzoNVl2j5XuzVT0RKqBVhnm8VqVPp5/FHcM6Jb + hZsO/j8agKxmOE5eRrlO8nnEKsKEZgSt10QutsvSZw4vsrZ6vhGokWEBqwljubjrxGsT+I7TUK1q + 9JO2p7q+4yDVLn7569LVV9ii19YueM+AZF1L571FwUzLk0N78PfZkLqKIXiLSQHdkCzkM7ZrWDVh + rGB5kdbvYr6WNuQCT/AtskCO56lIrrpJV8KMRP3ulxODkaH15nOQN0KhYp37caTc8TGN0EJQHH6/ + XypQ/XrgrJ4Y1+lxi0OXybVRfMTA4YEe4g/gfbiBNizuhn7hY6MCA9u+w1qsP9riHEJhEUFS6Sm/ + S24wpWp319+H73geVQQdXPIDRFAGaOvxjOKnFLFxHTD+aMRXN3BMY/Fw3xEfLNeVykLO34NFbJ/O + Q7db2etScsVep6t0YH1qIA7hDA2hsrXOXvziupjCKax1V2Ldfjq/YFMwBkmfE5b6p0ZGkL9smOVM + fxkST2ZKkZHVDVebNVv/+mkB/1WEwUiaIBiEp8kyEaBicAbfKg0IzHsZHoEO3a2QwDJZJekmu8Z0 + QtjkhCKdSyO8lGBc3EWk86NPJT4FxinBJohp67CiIjqAmHN8LOmvE/VRJqXrKFWUcZGgyrqZlPop + W3W0aMZQSPXlClHfVLt3CDru2WvX1EJb73xd5w8r2uYUgCXF1KMcavW8UXTaV1d7DCpAyvZS8oYh + AnwMgKOebiR7NauHT8dzJZWfHp5OBJ4iphARpFbrjPzxuShHwTAWUgjJA22vaSlJ6ShwR1fm+J+d + eW/djo4t/YzdHlQ0UdqB9EXSMGbZ/yezM86mgm29TJNe3lYO/BnliIR/XyWlhQTnSpNkReQcEp13 + O4zp2beF/UeNQ5EidWTjebzYHLXV/HXssogRcIGYCsvyXOhdwu0VPtGjRHmgAovpwKe36fcEpiaC + qAVi1mbf76ds4k2v09W/MzVXunyDLdegy//vdyqQew/W1T+np/YlcvIBuyI5Jb1aJievGyYDdIsb + CYuogm7lR/5EdD+u/nPBgfN5QS4prGRCepT1GvbeCTnyk80muZ/iC8zLaUKqiIn4zeBBxPj/hiFg + TSSfp8kGtjhNTvFntoT3/DZNnn513QBJXjwKYYB1jZdLUPXv38Owd8jhE7fb5fCR5GoOn7gqi0R+ + /2/E6Kwk8YmsqCofpcu4403gH1FDIo6JbL0Gy0fY1kvYRBL4DZeTiIzmt7vtFms6ZnQXFQjKECVq + KI0hSeE31g76fI2BSbSb5uly8TWFj0MuhvstkXWBLPK5afy1s+w7Cxujz9iiiR7Aq6X3Gj3Ac0Lm + hHVkgoNvaga3/Vb2wHIDJXgC6qiiH1t4UmqcJpMy9AEsZT+sguI3dlmpTNFYUb7rt5SHRkHAY7eK + F2fqzfIrcJkV8ZXyB/hB1FZ++jDy650z2jtz1Tmgpy7MuatZxqiUBqcYuglgUqZfYV7sYC4cmp0j + scyUme/GLqcgIGUPNn5Rt7MTv7luwtgJbsqLPEZeS2TuKJn7ILYi1zNswpJ2/jnZwPzuAhyBMKBh + RS0SyFak+WUwxjBbSqbS+T/wedgGlnbgN8M20JLT8EOTC0JKZD28W1q+Um9xA2MK+05YWa39ghDD + 4Mr5lADQfmZYrfMeYg74ZzrLa8tOHchz73o6dTmI0NjtlrpMz1inLssmzNRlukgq0zU8Nb1Z7mZZ + XkGWL1vQN8t7uOF+WcL6kG5p12hHpC8HRK7gxwTcJgLF+NwA8VcWOBQhNYTud+LVotiexz3t8aU9 + v0mABQtjZ8Qy3xdZD3XElIm8dv9vnFC/T3WHC3Vvt5of44wYttlHgT1zfRXfcl17S4Rut41voeR6 + fAuukiXy29mftWoiDkpDNb415THWykx4DIZjJC3WErjwbSqMj2yGpNCg28LuMksnY9HVN4KVbra7 + kyAQZKiizqFQIciM+G12X0dF657DymLm8TBoJpg/AAjdKqdkL5x+uGjwsX9ZrAhw+XZxvWiDMnO8 + KKiyYKn2QAfn0PVVcBlRs3p7v76FSU/BK7OMnfFWzkPHDV3fDfdwHopRq3AeRi3iXBTHvD3SZLDM + wESL/Taro1leEwCJ+b1Bm5mkBI4uFSDqfRVPDdN3YCHuHcFnF38/PZnIqn7ygMDTSYmwYp1sb7/B + aS7MFplUjDAAXxNcgfeq4EelwOGHpTmSmM6WO3GUFryZk1I5/0R1oOrTidiIMXsZvgQmAF6prJwR + rt8ikBn7x9IIdwlzwlDgI0fzbHiBTzbKSmAR1GgbL5O8G6lHTYn8eeBBj01xtsWMaWw8lmrH3vXR + PVo1II1ZYPGCDVuw1ecPJ72VFm4AG8SJAsc9/JoaFLoviRJSsalmetoAgRnvZx1TyPVT3eL9rJpC + ri8rfhLML9nebtJstSgx9qrtv2QQ0K2/tt57sf7CjQfWcIG4mBxHBfzLmP+dNl/7MNwRjTzwDj8I + FWSPGDtW+hdoZ9vF+vAhMdwuFZAJXZksfaEmgtBIFqjNyYPi7S2oHk1ZJMHbUDrax097E0SqXYnY + b15dcq8D+w3dbmVzSckVm4uuypzCyyteSypE6FPD6HKDF7/EvscjZwL/xOgiFEmFGBMs67Ug6sur + ROUXbvIG1vlPl6cXFyYYpeO0InQ5IQ8d9mA1gK8v0VZ4my1vFs2hBCeIojYjRL/c6PeVIKVhjuqL + XCn5hVA1kYlhEOboM9ETJ1qHUWbBIp/SC327xXRDWYSTj7+CKYvPzcGuFdD2oH1TLSDy3xTWbzPc + 37PXlyfFt5brXz5/Xsxejm93d8lKFywuchqnM28kJojS6nngewMUL4lexUfK/S+/r6g6+lHC26IX + AYvFXjrUi8K5EBbkCFRRtz85s9nXPyDKoyj9/VX2GaztZJNse6BXS0w0PZNBxfmWbb501focwpqi + HaNV1W9g/hOPoaV2DHleAxWnKwqY/rx4z4IOiDt0u9V+LSVX9mu6Konl37+rbdeIbGz6yKIXU+7G + rhdPuMe8WOIdf9htl+N3colL/vjlbX2LtnJOlSAKYd44LHywnG9E5tuKWQ3veK0SPU1HjBkQN5Du + Y+gQ5lRlLsAk3cL22sBtFvC4bcuPQ0Q+jIsK8PLGi5xDVbm4Sc82mUAnnmZf0814vtuQ26Xho162 + oDguBUPDXXKHGF/mNr2A+zBpF16h+LvI0Mnh4nK52KKZCIoQ4VmPcP6o3TxwIuGjOZ6jTLKJVb/+ + gaTsKQofnipNTC6SOlvg/EHy9MYZabddD02VZm2su7AjiEMbtoH3GITqjus/iM/gaFp114npyFMT + BR7qTqGmtvRYBQddN3zO3G4Q2/IZ2+CgasIIDsqLkl15q3CNiJZ19BYu/HqZ3JyO3+pux2sjvFNE + /2JZUB5yyueHPgEzU7K6ah2lxWy2CLk9iL/S3sZ6aM/n40EAdU83oOSgt0MZq4el7VspHpE9vL1k + fmhvrNLtVsqPlFxRfuiqTFV893uN7IH5sRkgdOMXv0QO9zx3EoEy6Eui1jeLTb6FLkrXY8knSim/ + st5FhlEwp4v8VHB9fr+c3WbLRTmVXMBiUaLhbcZrqlOzFm5GCyO3qqtU8adLLwDvmKyyJbrRQDWa + 7klTNkJ7gWlS60bKDK/7P9LQiAI/qIobXbS9Zf0dn128/vDpZCKxTgVWDfT/59qIzLIVqEi5ChK1 + NYC4eA2vLzWrtqGtSGz66BFOMJ2j50aEdBP4FMbY9/DeCoNGiqGjpbZyzQSE6SbdrcvFGsbxiFKI + 0WOD9bdXGgVkEPZbH1bDMnATB7ypg7bVOh+eYJWGOlKYjsqwV+5zJ+gWk6FnrCMysgkzHkMXpX2c + bF+rLCvt00k3o7brZakI+RHHg0D7IL04Vb/vljApNrub3h4m3yEuywFAb0Kyrb4ms12GyQQdw7m2 + nqXhIVoH2n2Yz12xjswBSfsGNUEeAS/Bol30k6RWERGN/Nd7UIXsFTO63Uoxk5IrihldlTjQVxfM + N5EEPR4i2JVvOqb4i1+whsTzJozDwEjOyndFwpa0cSag2M5AgcK8GZG3pWwf0r3e5Wtob3jwAu7E + oe9V9TEbLF1DxWNxK52H0URRnNFcnY/eo5YSDazrb41LeGgMsn+Nfp8KqAOR/g4z6bbWzZQ2BKKp + t+Ee4bDKvibIywvbXbLdJsLAVuCC+kW/LpKxSGVlE1eksyb0vgXo5/VmMb9BGMQ6v5qQoJ1SGL8A + m5QyR4uXnNQQ/SjlaLXYCgSV8RKMHLk+aQJq1S2g5KOnhaLQV1ijG+mvgcbgPBxgteeq2GqXfFa6 + 3Ta22pDPSldpV7z89LGWz+p4blwNrU5jHnsBn8Su43oytCqNR+hmXP3ivIIDQsYIQfD70/Ezfc90 + ufiSjk9PMPwo9RTaJy+3q3oWa3cb9edAZX19WRzr5v4mJ4cEaE2/Z7N7tDxl3PoqnUmOJPHnPxdr + DIkkyzyrPnl1LRzxqx2CyNCqvEWQI9j5lnAjzMpnd1mO+yZyIKabVbI8wTDkXbZBSyy7ga2u60iO + cBYV8VePjY6u8HlazHJhFLfL6qfy/ezqpnZ0M9rly6K69lNTARrCwIgtP9sQfHOPuTAUKKTnSQ5Z + l3fYp+l2Sw5ZIbnGIYtXaZ++uKy7Fb0ojmscsjFnvutMYs5jR1bKv8Wg25TACe+X2pYvQZ5X3V6g + amWYOC39XtB3bR5G+J66h/FIHO0jahBadn4NzDj1p3l6t0iWAuSuinXX7Kd0Kyn5pea4z9w4rpVI + D9rcW62Yc2TZq9UdNw6O4RkF7ak18uxEnuNXI8+dRTb1yehBpt0IF0JB+gv6tHwducaPdXn2knQA + cMpO5OHMwIGAQNH7KuSU8l6P/87HotboWQVQK7pzyezqulTtPLRDCd/vmx2qFdTecdwbA+FDVAEP + TYxxJK2FR2WEH96DKPvjnG63Os6l5MpxTlfpOL/6UKeEd/2wQmrhv5gyz/G4N2Ee0zCZVwIW+4PS + pk512b04kK/ukoYD+amh1OTiG4TBrGEDpD/MGI6TSg6V31YNiMqPA31VpD2B9aJeTb9rORUKDxzd + tjR14P3ozbSuKgN25RIyHDtNh+a7bCTI6gkxvVykuUlzdI7D09AaJk3pAq2kqHfLO2Cca5XbI5U7 + yWdZU0faeWcCroogKp/8EFvu07FbFKqRF6ha4rBDXjvdbltLHNbz2umq3ARen+EYVIuJmVcDy+Ww + hwbBhLPQ9yT43UWykYWWt+ka9v90Qye3gZAoXAuytCnFQkn0Sm4SOBuE1TndZlMw/Uu0A5hoLRK0 + d1/gazTtfP4SRCbb7A4RkkT6n4BX/v1ifK5zvvGG8TdQ8lK93vJxAhMLyzlXW8TDkDtUOuNRbYsC + YRVZRv4940Fl5U/Or7QeG3uB64Y1PfyJpOD7uLdX3enlT60SeAexwyo2wKSc4Sm/dvR6nS/QIYMD + Ua3clcP1svPwv1ROb9TKz7I1W09or1yC9i6aSiQzt54Scrq9FKlaxXBrV7oEERbzXRffum70FNL0 + WxM1o1j65XWntYudqMmR4Xt0/ICYUtGrE6KDmjYU0crg5QMul2i7gokZPTiiggC6iWK05TgvBmtE + NFk0Lg7H62x+P87RAVSqIrc63WB6xYVzrbeH7lj+JMpq0N9tebIOUOBwLGWoIxnn67vyg8lpWYgI + 5OcYowANKUkd7EpGidulEI48HXrbX9a20cPhLCldJlQIvS7vyFmjHrHF55UNGPC8dI3UEoyLpRtU + seUHjeopHXBimPDfWizC8YLKY5uhYl/xe9whM2COykAbU//QwZPYXwbKd+E88sM947I3XcUWIdeL + VPZ94MTPHd4p+Z4esc29lw0Yqfd0jRaXXFLT7T0YbaK+XvpUBVNwKUVvsUKStGw5dSfexJ9Cq7l2 + v7pT+eOYHtuuRI4+Yw6tu9BxReBMndDdAv9qltmWwtfZpOKYdBBtIn9LcCD3cv62orNJTPamvunD + mnxsWLNHZf5A558X0oKTGbe60reYQL1TLV3mtfVx0/wb6wl4oNVG/8FDNfYo+GVerM9p9o7xbsmk + xUPWZ7VqxDyt5VWF7qF3Qeik1aj6uyEHjucoxEprscBJs8M6M3se7ieSqC3Hw3dkrSzoHF1qZfF2 + y1pZIblWK4tXJbbB6Zt6rSz3glqtrO+6gRtOfNcLYqlrfXpzfv5KG/7PvBCBDU4mhpcTFvpdhvun + 0ivReEfmy3W2hHcXidHn57Q/zzaLtXSTLsCAp04nmITkc70E13xG1irTOyn/kxm2DeKWMGTMWMRZ + rTgXDV4c4EOvWy2TNnCowQK1aVX7Zd6yab5OZ0gzU+sVsecrn5jkNjQyfmCo2jCdGxtr7XYxdy/g + iICP1UNouIjcIDzwXaNHmB8jnL86HCsRox0ZCTRRyUwR0q/+lhFQG97Q0LlWRpBW8mU8zGyoozPG + pbT2Pa8+wULOEpBU1waCsP6S1ZGvD4Aep1/3RYqHqN4N4vr7NS7uvQf2SK49vKvvOt77qWoLZxo4 + 13vjP0cdtgtwLj1jDZwrmzCBc+mi7XFaSEFjF1SC0ah/3LtTuabqMUrF//je5dz+0KPbrQ49Kbly + 6NFVOvT+fvm6lnTqOZhpXz70ghdT1+WxO3E9QQAl3As6z1ZDFGNmoxkC/fsmbcBFPTLvnsV+EHq1 + EMOxefdGMk7kw+5QPSOOz7svnw1hzKIoLDMNGqUL5aOhqYdfjoV3Jxe8meO/s/GXxXIpuAe+4/Go + 1DCYdYJSc4QjrY8HHgQj59ET1Q/slk8nSd0ai/KhUt0H8h0zTlXcyQrM4w3VZfSopOyYdH/4pHD1 + ScHizigK8hnrk0I2YZ4UdJH2wPVm7cpD4w/vj2D8ffyHjwza03x1+bGAEio7Sv/wfm2/Ual5Fyh3 + JKQL6AXHIypFrDYXo1JKecgRlyXF2IRw0SiR/f2sjktedkXgfodHvmhFsDJhiKdos2Ey2Dt0XSpM + Ew3IrbK7772fDauejlxC4S1/Y5f5/QNAdgMC0dk7BgeQh6mudu9U7D6sI7FtEC+70Z0VlXBCGmOK + hQsFEehdinhZi17IGWpz0PwLgRc8d4Jum4N8xtrNK5sw/bx0kTaH5GYlXb7tHAshG8nDGeOLosSN + QvRl3oZTEDRCaeTi5Vy6eL1Yn1Qtltb+qT9QJirovyFNSMxAukk3d9ZARWpGerxQAAhBHCwMOWpY + 4WfB5Wq76/jMlahx2G/zBaq2HZNbWUx7sJG4NczKfxh47O4OayeOS1Cy+W7z+SCLzmgIH2vhrKUz + qInXoqCH1+vqOuvMZ+EzRpre4fXXCfq1p1x7/7Pvy3pDv4vpR7db1hv6DaYfXZU5bxdXtcRXJ3Sd + Wr0hQ+jZyJ0wtFhjqSl9WMzny/RXkU0iag7RbaQOb0ouW+fN6a9PmDC+nDRqlQRrJoe9LjE6CETF + Ige2YH+v57FORH7+ao67KlUOQtdxoowzbCiZUVY2B5fJfVEfWOxkL8f6SMs221uF/5eU0331sIxw + Kuiiwdh1+kcVlOXxyFm4tLcWm3khvS6poB9dJ1ssuyzEDJHM+7+mYy22Q/m9r96DXtkBt1rcbrfX + keTqXieu0l7355t39dpqJ3JrsNXc82PuTrgXeJ6Em/gzTfLt+M0GmkPPikRE3SkG0T8/39ZdXCb5 + HExFfPkK2WcbmyhzPA6TyNlHJ1pBNMVAeBt1KIvwQ6sbZrr6N/RpE9eCkevL3SpFT5k6FHaIIApY + lfhnsRF+9Fm2gUWUSK+6mD6CPHOKiA+7zXi23OWVWAqLeKWU3Ey3hQENfD+u8gJRg9nKyEwwc4LD + eJ9YFroe59Xau+5iW7pdS8y+3wtGqdUcel70eKquiUgXrIeCYKfSlNPGRgSdwmLOwn+NPjTNOvEV + mlfvpSj9EQnFgo8Hhh5+xHtejivl6+f5jq0FehoFPMZv0umVHrXCDYm7YGl/z0V0Djd6sEDhmV+v + ShEaOe3mKViMC/iQBQJ+EJj4Z7XASnC1QjS5QN/Asofvmt3+Dd4cb0xGuKj1qcXDgXKYKUsWL/WX + QSennj/9BYXaOBSHY+OMtLIEeorak+gc8OIrq0u6E8FpT0mDv9rTpEatyigWtuVbdJHQnrPkcuFl + wJsVG3S3Qkzfd8xF0S9HN5LJw+JFdrRztYtqSuLypE1s7ovdvqa7kIbZqrQjYvV4fQmHkL12RLdb + aUdSckU7oqsSeeb0FYIsV5BSRXJPWT0KX/ziuwGP/YnvRjyUccCz23T2ZZ0tCiInM61BFKxgvxgm + TAloG88hBZG9Tma391s0J2daLJwQpYoaMBWWyd16vMySOUa7sKwKf87Hl8mchevph3Tmrqev5jM4 + vLIVYXq/1IcKSKDjBlvVJpJ4VOd9SzCcZM69mmInQc+XyuEpvaJnbXk2NfBWfWjHThwqzsRj0PSD + APW0qn6H72l0VCPCgRtErVooD8AeqqlapXErcf01ZJYaxl7Ju5nAmsjNii2wNdvAyWI/aABF6A7x + bxaBMeZ7VdWsIH2Ypt9n5E5sRPuv9FhZi+RBGKHN/5dbEiOxQyhdCyHpRnLccKcrvXjxitZu4yH4 + BAgTaM8Q2r/Mw5ACHOvl/8uwCjCXxoqm1+WbM4KwsqZrGYzqDLc+NeuaN0pLteaHchwoHYKYZt5c + gsFur0PQ7VY6hJRc0SHoqkRFen1lqhDMc1kkaqTLOkT04heGUQk+Aas1iKWL5Wq3Fk65THgyX5nJ + aSmV1mo786UKB+Ha/PPdpcP8fyoIpDSvH9lPDnHhCNC6C+iWZ6cnepYU+KddenBS7sEPi3WwHuHw + 6XrgmMV2mXAPz5vqBmEhCO8giJxeokIuqmku+5J/+LHU1J24Q4463W6pqQvJNU0dr0o+p9efgpof + M3aDqqI+dV1YZA7m67FAgpWcZdeJgAqfwsdrjwzifC+II1HADgksqLKy0gRNlC9yCXkIk3gJ9330 + Ffg4fF8i4n2fMxEbQi0D8RPTZqx/mK/1R9ewQ2Z430ID6hySI/mp0m3QEwINVtcB5DKr95wa73ll + y8DgRmGbvur6Hg9rvsnSsLVCg8VOVEVqKKGNMcfloKoOPCkkeC9GmuAWUJbuhHr7LSuwkXIM+ha0 + C7UZA5ptDpe2qbFNXUO/peS8SLevlfKaj3BFaMU0il3cfR4EVUt0JwVU6l3/A6S2uKu6om/hzMO7 + hp7dHffmx3qLx6I9cCIeCkf0vxerWX9/1xDsCWOVMBaFOlNo2eOV5CkYyEqtSxZ10DXpdrtKLZJc + rdQSV+kUfHXxoRbN8z2PVSu1fonBcvLiSQwqoiL2eYUJSLdZGQSRUM/T8TP42/Ri+iFZnehtTxnn + JbTgGjFNOZKtRVBHil+FYf32lbhcgTfXuS8tZbEy3kpBWJG4+fu4AGkXqhwKV9aHElcuGHu1vhsa + 1DmC9cpaEEJh1NPV13SZrcEKb2xF0XuWWvMQTqk9HMpin9XS/ediIO+X02IgRV7EK41if5j3yI94 + S6uu47thvQ6uSeREXxV5HXpIbzbZbp2bJXChb3q6SrhJgY95l9USuItzOfj7EECd1mPedV3uVuOz + H8HmXn2BGWhOF0OmF7XyBTTK/N1GZuwekDn6z1mdI9zENLUmnH8j2e1lb0JJgWkZNHvHlhe7LaJb + xs5etAztNE3WPipM/4gb4VSbsa5sh2G/rpB6f3nQ8ydQ+60UE9z8tY1vf34cVG1xe8e7ep4UVsM8 + dBsPB1A0vEYpjrM2UQdOxW4qJ9PgAB0SyOh2a3CAegIZXZUh0tefmsABwprK6bu+A+8A/4iZgSqn + AbZVOCFlmDHd1uv5j0JghO4KOa/RElUnjemyZH7L0RxHjCHEuHncl6D4WpD3zOSluC15Sb3s6P8g + xXALcmJRgoUdczIZf7uFxSb+nEv8xHm6WaBvogRiR92XvzQcF00vjiv1W5quFA4THNmvL0c44qVy + ejYQQqJiaCiVOB4JFTgoPmLLGf/0YA2fELTgjwfxgi2BhcbjPzVA4OOi+VU/Rh06XNWhccaeO2G3 + OjT5jG0dmmrCqEOTF+kA2l3PJNbM7noBNspWYAuv/md3k4gsC8qsHO374/gPkDFCQaIcNXQjQveT + wKD60VK+pkYxPly6tX96+4Fh2Oi2WkwN2zqwzoL3rgA4s8VSLhWfWzDBtdUTeG4grbks307F/kaW + FXyIet27bF4UT3Z6WZ8JaKIqPooW3LMc0NKL/OA06EJ/jzxuTkz1dcvFzX611fr9jmhj/4SPKI/k + OCmxrMTL76hep1jRx72l2uKI9O79JWz99gFNut1Kr5aSK3o1XaVt7f3vlYCmG7oBF0HfsmLtvZiy + IAZddMJCh0eSTend/TojHwOM7e+Xb1RFxnIDDcz+0okAI0174CAOpiq1CYge68MlTJ0OfBridjs+ + DZJc5dMQV2lE//HpvOacdyPfrfFpBH7ke94k8GOm8kDOS5r6bJFPK4qdQsWnYf7HdlF3bJfdEZWn + TRMqbPNuxxg5rxfMfJ1efTy9fN3sSPa9yLCfyomeCPjoebzq2FVKeB19u2I5Bd0El5G9l/e5/LlR + eOS6rempzcKF3TLdj74ftzJcNctU+uHnXV7zGMfOwa/XBZYLq7nzUg9kE9cjxqm39PeryfgqnfvE + 9HiRrhnWshreYV3jokmuK/jo+QjXgl6oYDs+aRuSaalTG+z+wyRZOHkLy6hxrtvJicm/XJkpNs8O + Zbd6vkspehbo+Xvf6/GBp38OJ7DYkauiDnVQI0ZvTNgl5kD1AT0C1RBvh93gQqNodUPEC3wJMnvx + GwtOveeO18WILD1lCTNbaqaMM1tcplO2nuNQhjbaYn7cs5tdgrko04/h9KQhwYJibBjcUS67T5u7 + qIolX3ofRNjzQ48MTs+hHRBb6m8BdZFjbQ9EEnJ7ewyaketIsGt6M9F7fV/s4fCJuthwjpaUNWa/ + N7yA53J6gSoTUr8+GD5BR7LlWs33ASzNgdp76GwhtXUFyvvlBr+Fz2FD6uL9ks/Yer9UE4b3S16k + Levyn6/G8+wuWaxG6fkbTgxI4y8LQaf4drbila3ntwsWvZXQnlhA5MiNh3HdPW0r8sCW0+R0MX07 + Zcjm3rPl2IYOfEUQlVdmKRdAgtJv+m9YQzSyVxVzJYurZdeIoE/hxsvyO1E20+bOayjUFPQWATnH + JfwSBqQX132h8wbNkPcCSutT/SwXRV8m0yA0Nu083cA29ev2dpNScuqx4klrLZHalRdjGXyZCiu5 + sdIHcfixIjc4md0vp2JDPspPN1jEwqIMyP7U7l1UpE8TibF21JAPmcHKQTsrdzPmAc8XyLeokHiP + ppgJQh31iX+DA6QjNql6yDruoxoxAz/yKjnUNusllxQRgXOl9p1SEOE9D0btfxGPi2OQa/3b4hjs + sM/3PVQl9ymvezM6rpueeHw9lNp+MHx+REug/cjYu4L82JW+hw2WXetRVqZXJ2l4kvnmSWYt13ZO + uI5PvYQyqYMPGgGtM8QNJZJYK/jwESexGqFjGtmrRkeK2tZhnaht4XZbaluUXKe2hau0fZx/vPBr + DnnOYqdGbeuCje6GE4yChtH+CMtiCQ9961lqVU7ubqm1ekoRFsYD4tnpUV3zdIgJA0l4dHrGQqfr + wVY8ZHewlRopHWzFVZpchse+YBMo57mXrbrb8lxUwARGW64bMF9mNXSFtrdzxAwIUd8Lz7UbLKD1 + 9hdHhOEN35VuVuKWuUiuP4hiaN+EFRTt4VGQ0zl0VC2u32Fjpdtta3H9+sZKV2VK6NUHVuMMdyLM + b6ug5oDyFfj+hIPh6rr7N9Z0Aw00bKx/odD1f939z5l05igA7dtFvkX8pHkqnaV5OtbUTxhre+dO + /+4GRkGo3AFy+PtuJfYQgWIygU/cYbnqfAPran0Lt0/G//0clBwcxMn47DmuS9gJ8okBeDL6r3ev + WFFI6otC0p+BxwhToIjs4hZuxeyQI3zqIIx2mNqINMtqhHPrJqIllxDOPKKuEnBj4lF4ZFenrTxk + X/SFMBgIsGwYDWCoalKPorzYpxl151GWPYXaWqSVMb4xhrKEqZCtso2MtZsAoYgerbYmCYk5qd+C + 8XlMCc/xFwmc2emdYT0HYj6oKQkPqXm6AY1jvtvjhmsKchxbVKtmO4vovZp2Qj08z2gb1FvjidU7 + Dib7UT6gJRs3ZCqxyYvsz3u63TaxCSXXE5vgquSHPH/j1lDy3DAOq5lNv/iB4wb+BP4RaKL7zvu7 + DTRQP+8bA+pGJanDTcCIqxK0nM89z60VgDyBo7/IWgv9YPS0GEhDle994b1jznMWd/L86YcsPX9F + I2XPn74qKdaSpSx7g50wWa7SEjzuqPzHX2t/NZpAwhE3UDEw30iY/pwt1Xa1ylZTm6yeB8g/Qgh3 + 4dp9fTmFvSubUcLR3vTz/a9LBvv/lnE+wgIiZYms2WQ5W8DHdD8I1SqklOS/XzqsQwIr3W61z0vJ + lX2erkqs+ItPfo0Yg0dIxlne590XUy8Eey6ceCEXROn79vkvG2jgPyQlmYXcJyrNAdG7npIePRSU + SujJ/HvO/C7593i7Zf69kFzLv8erNNnfNPB/uoKfrpJ+74dOGEYTPwRFT6bfq8xb0MXVHNGTT2fi + Q1OzdWOS7moHby7j9bMMTpNsqQs/NU7mS2U3I6TUteBImWnYh/2hY0wUeVmwn2iY01eMu9p/ePbq + jHFd5+lxxx+ElSt0m9I3bGiV28zhowmvujmvizOrf/3OEG7r0De1Mr+HUuZ308n8JpXMpymfwERd + bAUe3f0cCQsqyZMNfzckC03Mk3V3Tiz5neHbN9dgzi7VFtkyN+xjsp1F73dhMTn3FgKX7UBx2fX9 + eAbvhUuwS4j4EQLOWoLvitVZoAsey543EAsfwlgJddOEMPmBofWDaCz10f7hnAkBr3fh4DHuvkF9 + Cmn3RSJVjf+cQXEtOKYssKbddIAUr37iD2ifQziDWSCDfsv7H4jjpzUKuQs2saT0lig+zxMyJ/Dv + UWKVChAo158Td3L9we22rj+UXHf9wVUJu/vn737d8+cHNc8f1nxEwcSLHe5JleF34kZE1/UMFKh8 + ej6+u8/yxSp/KdTeBGNYcFosMR0cCY7GcGmpHDn3Yz5+9ukdP6Fg1TtXRs7gYfFSc+g5MQS3ST5e + LrZbONzTz59xZ4WLN5vs2/b2JTyzQx+Jvhl10fvMxf/44sk8/QqfjrxM6YwYnOhR0apw41Og+gtK + QAFGLJ2wd0FWzb6Vj2JdnIjaJ1v4vlbmR2Tga2dFC3zOfVYzfBezTfYZdgDho7rL2rjMYIS8tmLC + GCZu6FcLE1syB7BHwErGPOEqEh/mHLSyTpRf36jWFB1bYxaLu0r63iKoHcivWdBalDJe7+Y1lKCQ + 8XZSjUZZexKvzTrPsJXc7LDgPFlum6TGQYWdE0nfyuR1bsyYH/5rVFqhwuJ69AU6ge7ellZkdbnO + kl2eHrdIR/gyhfed+SM5OYRDspg7v1oWdobKkdn1wYjMYiqnK0pLK6KsbGIxb0jcvvz+w691OFfI + QgYjR+r1ghaQVrhhJYGOgrjW4pCzFojTt/px5ale66V2QjSfBVRs0LgdL5FOpDUvqrkeYgA6a7+o + p1ATtqMy5UlqM7FYO2aWKoMLT5zWntk7TiN5ppCtsecQshrt4QgTQirgqL9ENyGlXvkBSYuFkKOL + GI4lM1daaChJbOGlOhB2i9stSWyF5BqJLV5V5A+v6oTdLI5rhN2ex+Cniedx15GVA2hqXhSMIOfn + ZgYS9H7JVUm7Mlr0klVhXify1vc0EZ9B663EqB53XNepqnGXJmNJ9f2K5pp0O9wK2uCjjfa0/mAK + F4MPvYPNSrLTCuuXGwQH5I+uTOzC+gdVe+zlWEc6ZUrMDDmnSw9JJ0WOWz/iGLcIRv82IXy9HCPF + +GqLHg9Mm2sf4xFOJk2eyoKfJt1NjEX9JcVz9a7Ro7nX/TSSU5as6sq8tnNc9U0zE1NX+YK6LYC9 + L6Z2Lao/+PieR579rkW3W+1aUnJl16Krcte6vHiPiCfmvuU5FWYoD/YthvxgfIKI746MMZmUxvUK + J7nayL0n18tLhMNIk00OXSG0el3MuM5gMT378w5fCJVm/Ck6EXwk37IplpKtclopV6+uQPVZ5moL + 3KyXzDlA893mYzRrIQLeZoV6nu8GUXVntPC+GUwyodsGRWQ0UNh7+nxuw5f32KFXHv3oYRrRLNN4 + rZxHgxR8d3TIF87wx3PAP2Vn+lMvhnsyhWpNHfVQNWlhrEpcWeAgOkunClf5jG2Bq2rCqG+VF2mH + 1xljJe7F0fZ2gQXaoA3dg2QNqV6615CO1a3M90fD4GvVlo1a8UqaVaIc8yMJAkPfsu+FbEMbvu9E + vv64MrZZZ+zkH76xNO2ri9VqL1dDB8iaPuJ/hkQ7iSzUzxj2JSSPMSXr02gvC6ptJX1EFVp/BwM2 + OJue2ufyyQfssvmU9Go+n7xOKujVm0/1CtjIC+oJfTyOPDCcXYeHMnxzWYb8KxZaAbWba/j4ZDUG + dWZ5T/5YgUC2AVULMczwNEk2W9wecCPM8wXuHB+v3oyT7TaZ3d6VwZY12NizfxAW4YnUQq8+b+uI + l+0olwJorkVzC/0YlKPgKJRL4VA3uQcMsUfARu4RPTovQxTS+05MZMYew/S2OkwjnDSFgewMhP/f + FWXR1sV7NNDhYMCE7UIOe0H/KqCGdviBB8dW7aRMlW5z553XuXRbPWRbuq0bMUq31VXaUbefc1ZS + 37SXIl1mqxsjC/PTm/Pzq/Gziw/nr8ZRjGn+3smo30PQpkigiz02GtBd5Sn3S+k9npzPi4o29jTQ + 3QN2yMsWNfRL50bss/pcCjncXQpC9jT5mtwcoQF6vkcpvPu6rMNi/sEIjL2rWIfkzw6orvfVEVlr + VDB6yNcpd4HewSvis2jdZOSUOKYFr3BBy8lV38SGyGQ7sqHHCNA9nbIM9OZE9ZE/driHqvaIuEZg + eRN1xALWz1jjr8gmTPgVuiiLC2+X2SbTYdF5ihYhPl5ESk1MzUIoHsIRF/WEQ3Gm9N9ku+CojAab + a8fHlbUgaVPUBZUL6EUa/2q6WoAcrHp/hhlDIGq8Br0SjKaTMfx53lFTHmxmuzI2zny3S2wcb7eM + jQvJtdg4XpUm/ulVPcjkiDKeSnCcRYxF4YRFrsMkuizafKgdEM3KM+1UPtFe5WdXV3+cqJx+8rk+ + 07lhf7jjfJXBoXbycnyVCSJ36MHT6wyG6GqxhJ0ef8fXIys+yRtCSWrSGwY3LIi2sHPAGHdYjYOZ + PkGC2uFqbHVsVxC6TCLkcpocekSduBaWEl/cxCboOlU2wTZpRfIiWILXy0VOfhCwy39FfoUEz5uV + Kvgq4E2SDWyb2xRPzbQSpudNDorGPivHvxTIN7TCnSu4kk43+HFmamqFw/DgR/UVXEp+5Fj46cX/ + Gr3WYf0SReIf7lTOQWzjSoz8VeOEvUv1sJcr8ODPClEFxLHoaizeTvhFoMG76+V9sSxqoZaXsLXm + m916m4Pmomb5t1vYnLKv6YZkp/ORWJnakeIyLjwNnqczCOVkFWjyWvGHtzv/dMXEIZIKNwAcYVd/ + UPeJDcl/Xn7f98bfsO5pkcvtSlwuVALRNeLeSSFjogVYQFJoT4cng2MJ6m+qG69+yJvQPt7andCN + 6F+g6q1ELBz/b8ivW3/jAV8qcg6NMbzE609XZJk9RkeBWStUjM0x8P5Hl4cOCtnkcU4amI4GlrLT + f7SFeyi23QOCdbCYrZLHHQpIi21uqvbX0tZp9VbdpTxo3WzkaWPDjePnjt/R2pAPWZsbqhHT3pBX + ScsSCvdn+JBUw4WMmux+UyBMboTPG9Lhd7SvroNT62Edg6DvBGItaLC8h/AJ/uwOsMNeK3uHzBA+ + sIY5PKTLqJf8Q+/sGbPsYR149ha6PfnKk8L9iASowZ//9Z6F3L6ikW63spel5Iq9TFfJXj67uKqH + xHlUwbjhL36Jw9Blkzj2Ahnw+Ydiu5PIAuSAwGlwn8+uXpZ9OwssUhJWwHgHu9tmvMy+FS4MsF3m + Av9DJVmerfN6eFvxq7UWDeIu6LVEubnDAxbUagbfLu+n/11//8agN6hXQcU8m7S1oE0//Y0KD6CC + iB1ETltVXrNAcV7CgkOdDs0deml5wZDsO5HF644eYBRHOKeUoQdbBmVgwvtoXUa+b8cD20ZCq74P + HS3OjeJ1YWYhXqwFUkNV6EhONryzjMCspuivdiFu4rkrPdRJZabqHk05+VMnM3mMLMT2lditd3rI + a5s4ESc8uqPfCQSF+shYZgPIe1Lu66HQCLwgjgxuF0tel73HLAEHvL2Ek83+mKXbrY5ZKblyzNJV + OmYvXn/ya5ihLMCztOyWjuGcBYOHe5PYcyLHN/G1jNymfA17lvQpYkr92e//zUQ+EXTT6bmPWU7J + y3GyzDOtrsG8u9dCJrBWb1J4ckM1RxfplnGuaG63XuytJ0USVcloobZcEaB/KYpGt+RFxL/sz7MU + pzsI970DFRSVB00XtdfG2By5UewGbs0Xbsq+S8RImjL9tjI1Q6ZZptbg8haILgYeXqlGwvVYA590 + uXsbIpQl4Z7PIt6mLfheFPOqtvB2k+3W43M1LfSUMbUmE1Lw/O154xv3rxNpeM1KnUhluHXqGjIz + Yy+LwjecXv7fxn98uqxNQ/yz6DF0a4o6uVKnHpzmcpUYDYnVVOk+tapEFV4yWywJUyb9Dn9D2jDR + 2ny3wR5WXT0SC18rQx78LPsct7C28bEyqjsLaU8adAKXCvnvjnKHwsC3ZSf1JFnsLK9JVfspM9yb + 32boZHax89VFyi3S5qX6apBD5yTZIGk1F9ccCcEldmXtaGnfyA9OVaWsUH3575cu7wB8S7dbKStS + ckVZoasyhv7xrFZf7sVIuVf2CYQvprHrhDyexC5zwkBxSovsZYLlxNIskbiAu62RjJ2ns00K/XNf + pGXLoPhqVq8xLx5V1O9G4JS5bovdH7PYj8Oa3d8pu70kjmGAzfOqAEGa177KktOa4972vi0N2KID + HZak+u/zTpj0JviO04aLpIWN/iGf15+oE5rVof3sq6pVKEeYcTrINlX6vei16RyUe7ynmBDyFWUp + PD5Y6daX4ifY86QaAFpIAq9wjZN59es/Tj9cKDoZuOFSmuZyxNVsG+Ec11WiER3LODDiRD08nlYm + fn94nJhQ5iqjZfMsC1jMS89alRPsKQ6j+CR+gX3Boh85xY4oqxtA9fiWbb7YnSncd3zVrO78/D6H + L/3p/BtjFa1kklC+tpftHdY+FQSNY3JQhoXLaoh4ZCRd3nBwdnF54+2WLm8huebyxquSr+vTJ4Fj + W3F6g61Tc3q7vg+G+MT1w8iTZapXBfPU1at3TAFc/88SGqjzd5iKYyXVyrQ5izyiOMS6s3qm1W4G + ij0ervNUuGtAoRfZmbvrBdj0K2jypPlIi6DrKyQhk7KdV27PgL3TiZwLmddimKOuee42SCyw4F0/ + Yv3Ajg8UUh1ViMV5TFEydVNJEMzLRdcUDOwS4Xhs6rsOBtlQpFc/o+XzEPv5SC4CvL3bMurolB2m + jT2WeuxQJoGesLCKYBPsG2Mdmgks4OEeaeVEZuFleTc9e4fghbs16mqSFaxTk74TBGJGvDl91TMI + G1PS8iVMLvsTiW63S1omydWkZXFVGlxXf9bOI0dkqJk5y7+EYcD8cBKGUaiQ6M80YYhUh68urmqK + qyC5p10Ww6d4uJM29ewqv2fr6cV2466n8LO/PpmMv90iuCXeCD2gqUBLMmYZ7PdYukpOeWXc3S0E + GmUZ5CRf3MCzObnyYDPcLbfjxari0SnFGOG3UjvrdHOX4gQSaWzKQsQ3rp6z1Q82TtooagPtYo7n + wFlVMxBL79Dg5WWBX0FlNfOLTan6QKWev8evQvVLfu7sNr0TulK+XdztlpXM7zAwjbK2lkb/OdNg + hKtF5xH7QThMQXYgttVSqz1FeVhuQF7Lov6l3PFqmO18l5Jk6yD/brMdZvnwEzehEB7NZyFrGqCO + oBX7DoLYMfBwWNCJ+E0/1AkRBxupQ+LAVdrcG6muLz+eTtWupL0uRoVWSTj3XdggPKJhcmJCErqW + OkMO25A1AdoQIFb9CruYTG2Eb24yEAapBntsX7QtekrMJDUUc3gXaii83ZIaSkiuUUPhVdJOTi/O + 4hroPXNZjRrK9XgcsonrucJthBPYDFmXvhOaxwAagW/geVXjeD2bz3i4xvlGITl4jedSBThdz+I6 + xPwqWd/CJ00pqxV7vbHEKYicVjenFyDPX1UbqPo7TCI11u4tbhZHNgC84FQJxuhha95Z5LWh7pkN + FIY72NElrsRKylnk+G1Zci3yFFsVZnaIHv5VdTVtuouqZ8AJHRPFxb6NfCH4IVQ9BOopN6Al1JwP + opGeTch9pFQ/bQrmHfu7GM8ie7tKWFnN+wP7/lAjVSDZUzW/L/T8PqP5/esZjLgsRoRV8uuZVt4w + S7B9vhmLc46n81yvPj3Ei9Xt4hq6bpMLHublTiwBzWAm5hr8Sca9RQ7Ivnkywt1E4887MVWBOVyj + C7YMkZWDEieFIWffbLLzxPuEIWAzxn05o44nmXOCUH1297xKXKzlTtu/zK16DfcYOn2NncjoIItI + hh8YDLV6DFrcaXvgCVxkZRHqY+shUR3YhGocjxz4Pe90PJPfcUVXAeVI7jk2bR2FvYkB8WwzV1fb + iWg17fbEJ9ofVnoWp7D7exYE/+yAUqcesAu9K+nV4Lu8bmhZLuhRkUiqNKPuv/iRPwk9iYt8jjNy + 8XmRCtBZNJARkXING+jNhOgIQNdP7qf4AvOyiQ3jLnKoJ0IDgwfh+Jh+Q74BTWiSp6LCGnuQghzZ + Et7z2zT5j6Cv5RHsjPCLmiCEbfBfl2CKdpkg6gG74JWSXg1fyeukkL86/eg1TBVej1+FLPRimC0s + 9BUNlTlhKH29GHKcC5efphdnlzqwtYGm/3PG3PfD0pgTL+/FpRN14Hqg263GW0qujDZdlajprz4g + O1t5sEM34KIQqzzY0Ytp6ERe7E5g1kbc25M5LM6brwtlgMlxXm+g0b82MfXFDo+er0WCaQNh8csy + sIJQu68+XZ7qI/HZ5ddrtp6M4R8O/3zaJPjbp+1C/sMn49McromFJP56UqjiCl5EMBvriu9NepfN + 06XQqhPcbtPN/ej06lT7OAMelfchVTPm8A4YK3S7bQCd1zFW6KpOZmduDWSFwx5U3YCmbhxydAnE + kcv2zUkVJ0X/uCSz0tni0NZfe1radchLMW9QfcENfDYh9Onk5gaeUBMaJtk8RUQUyrq6XdzcLu/H + a7DNxIZfDsSqv0+3MBN3N7frHTJKgXWX5iMa4CJ0HwiIpx8fTu6Sq9qsdKpFFKjD3OlAh0G32x7k + Tp0Og67KmN/vr+o5KH4l5odLKICVFbgT+CfG4KqI+e0m4/+zgp1qnW4w1JoiAguGD3JVZHGVzetB + MuUMNYNjvJVpkfkYX40O1FMIy6bI0lqDol0troisWigW5Sxbw5dNqLap8SubXWVh1Mb+4/LYiZ0a + s6NoRxQrgQaUZmAU1FMsQ/PtiySXyHcdrwYjVHrd9qLPNvrE5tfUJV7tLxlVaziMKCHzI8Z991+j + M5oBi+ZehbMPfUh3O1os+TjZpMJOyG6ynSyNyNAdgFE8wUU4Pn1/NX6W3N1nW4TnB7kCRRkdvGCT + btAbcSI2mt1dgkmXMOf1rhIFgnuQuRReSm7SkoldDp5tUjHa6Tj7fo+lm6KcCdapdDnhSbpSmy8p + N8lNo899T3Eoo6yN2tD19en0E9n+gmGkPAUi7NIycbskkuCcMWQ2zrJOqSmeE1cDn7NsOW/ouhrs + nwqeco9ScMsy5pud/WAOlzl1HK3hDz8qo/pR2bRTW75Sb3EHyB87Rulgh/cqy6rhTLD6pp6iDiCp + UpV5aXn+SBxUFnBakbBQFmI9IKjeE8gTGwo/Iw5VxN5z/OcO6xSvp0dso/WyASNWT9dInUvmqcTF + IJaaTKBw3S8Fe830Znk/QxYb6dYkQHPXd3js8ZNR9yewNYG+6mBoH3dzRnhmqOrDUwZ7qCzT3PY/ + zFgkptHfQNwq+5r9DVUWS8H2EElHNLL37WPG3FLX4IgeI3YY0tuO+95wrLARwVZg6IJQ+PpCLATU + BRZzt3cLHqu3gPSX90tqAVqbYzsYZsqmx7U2AMFsRJAcR72H68hAFejLN3CsYgC2P5TCQLsslWyc + XTohszeW6XYrY1lKrhjLdJV21/MPb82KRNj4IjeqlCS6/osp96D1aAL/+G7UiTqS0E01fZwwo8/v + bhoYb48me6ywz3OYfAOzPUILZc4cs5UjSvnPahJtKR+N7h3hgCpL0AlkDuf/kjT+UJLGvfD+R5E1 + Phl6xQN5e/0F76l4iyXN4tkZY5HbkbWneMhOUS01UlJVi6u0I36GWZ98X6xU3G9Uu2BIwhxS5rmS + VZGym6UvBsMcbf4ZC4eHvXYYhTpHRizMBda+HPRWPLT8vQpBxAnJiEQZ6Y0iqVEiQU3z3fLzbjOe + LXd5P+qcn843b/dFPhVB65E4Gv3RdSTtIZGkW6E0WObpxg6xHJ5eOjyyryKi262UJCm5oiTRVVKS + /ji/cCsRBRa7rplA4rovfmER1uFOWOT7WCsugnIqNKrT9KtoPJNS1f2rPy5AwRK+QFVqL6PIyQbe + p14G+1cK1+mSVqzOGY2eRoWEmoUFQ5z/W/Schd0I4ugZa3442YRJD0cXpStEg9zJWXLK+ajxYlke + Ij2HjMuShSGoCDGfltb9nOx1uGuDtv9uaV3+0E3EodeJ22X1/kZLysTmr/sJ+Bbt2JYHg6SMKSyV + Y9bGYkYwImLEBkCCHARS8njsRrVryNzHS+ZGXSCH8HZLyCEhuQY5hFdlNPz8tBYN90JWS36cgiHi + OvHEjwJXJTn9mW1A0GytQt+LpCH0/dQOIDxVDbiBcn2pH8dtCHqx5zu+x4qskTLKjllPeZmv/XW5 + EmA1TjV9zLvXZ5+KvFvptHpp5qAohUvJwqX0x/UaPSKa8wiE/vHb6XieIUvP6PKPCx3g9YOAUHUe + PoWeBT6p7xo0ND2ULN5YbPlDqC8OeZKHTrq2RnEpN6x2CkqCffveCTvsFHS7HZIqSa4iqYqrMvn1 + t5qWy5mLGAAmkOoUrvEonrgBiwKZLH366aI0+bA+7zaFSYc759mpqzxVr16fvoLbT9+Nr7Pvpn77 + 6nrtNjN2ZdXKbSQ1aePsclzOg5rLb8/bNae7VJRTo4goiOEIcyqbjusj99TiDvu8xKpTAnw0WbQC + v20XKn+BFl/4mMjnpDxNmkMKvQVlNq9K3VUbFLpqrUjg3NNVpUGclsbP2Cb1exYMOSOcVzo3xfEC + WZcUlrxe9h92cLvRfodBeIispbS8xmNRBw3JAjRsWOyRq3/3B74cR4WiDu4Hv9rUxXgu4QA0Pv6Y + MTIncnhQ/7Rj3yti9H2XBoEOtNE5K2Q4lVrTLvnhafjciToZ4vIZW0NcNWEY4vIiHZrrf9/K7IQ8 + xSj49naTwouXsJYpyppgUseI7vl1703jCxA5QrnCXue+T+5hjxJX1BMluAYYGRnJvd8bjClcspGJ + pZVn8wXYx0M6fa1bOLzIQkYIIgR1Qsdrt7wzPZ3dQCjMpjYvEhvzxb+7+gXiODbz/L5hhmbn73Px + Ew05a2gIjhmbEWk7dlym6OxLGYP09rlmDD74ap4r+RfNDju4/oczAR5XiR/Aq0W5dLycX9G0xvtm + boQUSlUi6/tJSxsWR1lIR9BdcoPaye6uwZi0bq5bZp9lMOJR2DaeVJqIkhM5cj5nkvarT7ZJ7FB9 + 07v3ThdnFN1uZWJKyRUTk65KTqzfLmr411hIaTqjnBdTDju1N+E0OayYOs5+/22cnPtjCdYv+a7I + p9IbObSwLHkQ+X7g1QFM0qmA9tevUiVmM5xg3Gsr2IhAA+RK/nE0E2VzOOZBEFUzSdaH+hLNvBuz + aexaTQ7xm/7uiUnuIBkjJPuhlil5IMqWoiJXL/xmzdQrv42vz7l+CY1os6XIr/iNM8lSjHbVCKeY + sjYZLOfBWCGGYXLA3CplxLS3/9RwR4/mTFW7K+MEYL1vyUxIxUsxZl8w9t6lsFutFodUALXXBcrx + 7oT2QWO63dbxjpLrjne4KsGQ317Vsf6DiNVRBzhzfXfiIzugDBpf6vg5LIS3GrvhSmjAoqAVV8vN + OuEvx9cCy6VYgm+v9BBJD41gG59tcwQHfQvPyM3x8iavb46FylTZGMOWPQaOS0yG92u1bErRMyGi + XM9KTolJsKRsthL4OL4TtyNR+tx1a6VfRa+SXSFgHWawPyxhWqG2jGj3JfdHniIPH0xD3LCQYNeA + ZWJRlROw1vzoo8DH+VrOjoDRvVnuZlmeThUBoGhXv9JLOblxFCUNTy6G+W1FB5cb5m0KiyaDeYvU + XrPx28JcXIKept1rOAvWI5yhRUzBdUfyS8RWeWz3PKBR8LPFBbyIEBYrBmxvaGEx28Ugta4Nqz1S + 13hw/x1/7kTdUBnVQ7Z1HroRo9JDXVUcJ0pRbgSdfHZ+dXUy0hZK7cYPm5yP7vA/3PdA65Sek2Eo + mI7GQaVgnfHOj6c8lJwNzDRJ+qKx+g4LKvqESExrHJz+viQwASJfd3wzYcjTVp4KGX1A2+0JvJ8M + Jnzp8SESRhAvyPBMHOEmgJ3Tr8vqg3drOy7oBHAbVtxw8LqxQ2Ukv12C6Wxv2NPtVsqulFxRdumq + LCO5rGWZsDio8H643oupz0LXCUDZDfxIZpnQKTaVp1gZe1eUw6+k2iQYNoXiBF91eXolHNvZ6mu6 + Ec+AViM6SipHU6UPv311Mb0WfMSLlcymxkqnSRUUBA5kUfOOes0yheZyycW82kHPoBdsCUMrUdwU + ITOmbgoSoLwEBZ7n2WxRwD2CRohueSqmKnAkzjcNyTRNKOtiFVYJp8t1LlHox14t5n2Z5Pa6c9wW + 7S7L1qozdr6pHZpOeUMz5q2hbjyjPR5UUR5gKShfs2QkNyb0SUXx9tsQH5T40X/Y/BrhWtSZtK7n + jYaMobgYExTad8WaUcGUU+va0pbYhcslbsU6Q2TMWgvVid2FdNrzw6YIUH2NdpcM+5mzp1/wrfet + Gdt2fLAng/oXUA2Y7BZNTNZ/tAes2/pBaA8WykujRdrdtDpkqokP2L8dH3w1ddJrRhXeATaPbrdl + VOF12Dy6Sif967MPuAFUKVVcp0qpMg0xw5xNQoeHPje9+A3wcBOlOuHGerlcc0+lnb6e3bFoGC9+ + m5NpqNxTEUr+hksx29wkK02uvpqX835MQG+vNTnLdX1QkoqEVLteG4kRKmg8XAEEje2Ihdj8ht0m + dVdhT4g7WNVzMEeuJM/pQAZLt1uuJCG5tpLwKq2kT5dXjNfA/pwA3eyVpcR45MFnT+DfMOYyJFaQ + wGoMxU+XpxcXJ+MiFbsccnl9iZOkUu4BW/vnz9BDtNQ+bXJ4pdpaE2JNZljHaYUeA50Plv6DrbHy + Z7TRwO7xxsqXG/2+EhmNzFFO0Vz5UAuhOnIvChWWqdHB2OEKcnKhyDgpJVwrbYqIcp7Nvii2XqIc + fWkMTXOiwbPXlyftQzai+aMXesT8Yfh6yAFc7uYujKftWh1z63rLZXLdXZmj7WOAuhoxjfERmuBW + 6NxHh8LUBsSU99UN/OcO7+Z8lc/Y+l5VE4brVV6kzWiWfWcyl7s8MVFvE4CqMMkJ+Csvp7CORLHF + bQp/Pv/v8edkA1fvl2J2QDdg60KucMfGngTUkck14qkhMHQk3JSQlwwNnhP5VLpeRg0l/ko1W87/ + UWQrd2/nJ/JLWleJPRFeYBYHTQ7qHhVrgS9rYNBMLM3u3mm1Xqz3j32rZwD34xBtHUi88orzpp8o + tSOqYjk4KrrE7PF2y5i9kFyL2eNViQn+97/Xi+Uix6/F7MOQBw7YNqHHFHQs5tjAtqj8TPDFcOSj + 44n+Mc57dXDIP50hWOPtt0QVw3z48qXuG7zewbm7WJvKUtweT8cUKj+sqWEfTi9Us/KfFsTXioJX + QN5ELpYIVitgGvKSq1nJJv5N0E3+QUcja3U0KoGjtiEa2wyRjoPrwSK01gyTiZY5GUO0bUFnvhzv + 1mj5SacjBizux7/NYFyNbkGwVdCAMSc3uRuTRj8ZXy23mJmhBg0MrHvhQVwJnMFvi+3tGKYIX49w + vuoIfuhLsB9ilrcYkI5WXxcfYqPOFlPgXvuS1JQ+qHANVo7iBaGRQFtdAp2leWVptfzY48QPgJwm + iXCOeo8ht3hXFW8gqNtzFnbReouHbMs3dCNG/Ya6Sts2AhGlG1z06e4LSBBMTZQ4NXqVbth0ufgC + hl+ZxEvmHaJ1Jm80GsOqDTeMUdl1HY8q0l9fTpXfPi1A5S2Kcy0VyL8ECkOHUPfwMA9PQHHVvilP + wQKywF4RotttYQFRch0WEK5KIorf33t1WEBhaZmwgL8wzw1cNmGe5yNoIC6pd2Vu1d8v3ygIm9kG + GqhD2HSu8n3olMMnBYUTwNh2rSPFMU2/YTIh9I3EnEeCaUlMdUw5TtdC0kFcJb4+NfhvzHnO/I7H + hnrK+tzQzZgHh7qsCv70drW+TVYjDcGH5+M7rh0ECpnRlIyIipwxPCU8l1GU7NXHUxg7TOxKyLmP + DDZfoU/QUyaS1zCv0+i7KtRiLxrgDpi52p3HYxN3sPLR/Q4yz6cSX1PqACBiLJBT6IKHbxmDEegy + g/RDlhOoaKQ8f/RV2mLz5XdVOboV751OBb4feuPxYNPf/6yAFJZT6USiVsMGxiOHOScj9e1tMmoi + 6hLgdQTwdYA8XY5I3RBzaZ7trpcgF7U/mG9gqHzBSZosNkh1pXANkcYCZgl8ayswyD7KBB6x0gJA + 2R2dgC55vUnA3tfYLycmjb5cN4ky58ldgvAErRTz+z1RPJbVmHptY1bIl0o2qpWDzfWcwD8kDOzS + Db72MpvtbEs9ZRVqGWwBgTlRzEHrTgnxPaIzMIcADVYsN5KjmyZbm4PjMVjRD2S6hMXTmSAH0dRi + Vnuk61MR7hUsrSn8x7OPMHi+zLJRC7ivheozrSkfK2uIAqDB6jTB2oq91i+bjGUqlvCVpPAfODbx + UJmOBSFz9v1eHzESlCIXwTn4Npmo5f5tKt0ld9kqE8VIB2atOmpCRW3YhUaObrelNmygkaOrMkfj + 9E0NyQf3+RqxYeBEEWeTgDmOiiq/RpK9srFK1VmCFK0o1isizDIE+nF36kE/plvTqSwn/KR8TOCW + ugFNY30LZzQcLznurHhjusppiNUM+3D13lVJIMnnOj7Q7SLfZpgS19auqWcz7rbSZTku9EWNUL69 + gWanqee0lWKaLWgTwWyg5ibFw9junQuoICO+WmARiWMCp+wFqHjn56pGc1MBJvLbslF0c6OnNkNe + jtfL5B7W7xh2FHTi6j6AZfzpnqlotaRJx8VREEBy8pla6B+NNaHH6y3kHypOFh1LxI1qkbeHFg/I + 9QuXnR7/zjKkotE6oyb45SWggM4NhAcaICnC9smWsC2KKVOevbaqycNodljcR47p5qxPY+ZNBIyO + zqGwfXNka4/MOXKXzYvC2I7Hpk/VCE0bj82URwF+WcA87SoCdEQCTtnXadYzrCnQgDt9/SObzger + Ve6EVIG0R/17QDUUZphYJWL/7PFFTdqYQPsPJE2d/qqeIRWPSrotzkqr3gZ5YeME6yxpEN9TpIsk + w+cO61giKR6xLpCkBszySHGNNLPbsltVftMoT2ebVGSlqKik+tqLm4SPn63hIxfIWntSbgPzcfwo + IDs/Jr83wSClIpEKh1eRQN5vsy+LFkdjF0CooG7N6TqM48sEWcBoU7HMVav4zQYJoDxo0APTWfzC + JDyqZFAHGmI1uSM3fu50cqvqZ2ynt2rCmN/yIpktm3XOQkc6xTznqoHy5oqFo/a/CAFTcmNxHo+s + uW/s53FvJp3BfBo9vLVHkswgRGhYahO9iKLexIL6xp5B4okQ2VhPhcHZcuSi5I5alIzF0XOnU4y8 + eMh2WepGjHWprtJaRFI4pIgrnDblc+UOPiGhHOYpmwRTATUxxaug+M6rdxttIv9N5NI5FDFfg2Ud + QxAcc0rxACv+JlkSunxRqLAvbGZ/1jj0qrNkc51hp4jSseOQtn0WVOAEQdaNGnPMeNnfwNAHmstc + wv5LVrNb5CVFgyn9jpTCok/mwj0sZCdHnUXOgNyJkUfVW4en5DCZlUc39iiYdiAojpoFkaMUAbdW + Y7XKx7ABz21nr9q0VDb7xW/8N/7c4V32LPWM5ZalmyjvWOriHlVZ+HBBxq/LxbphV9JiUXtwY5ms + HhP8fdlrIPmvv6YlKM1OaXTkMrhLF1ln6iuMKZg5dOU3a32fGiu4JdfqEwPX7Cni0SljnkIuEVrS + AWX/SRru/hsIdyQApazZ6AE+ySm5+/2l5wRn01PruIh6wCoyoqVXYiPqugRmu3jvst+M+Ijrem4U + YVFjOUDivZjGLueON4F/XF9mN52jH2rxeUFnLioTGLRdrwVCFsyeTZZsNsn9FF9pXl56Kv1mIiJN + 8CCohtNveJBK1/c9nD3JBrZN7FxKmVpu4M1n0+Tp064MkOzEoyBy4Rc1ZYgS49V73gXDj263K9Ek + ydUSTXGVpsrb96/rsCZx7FULNH+JQIOJJ1EcoY0uKp2z5b2GFZhP0fMLUwG9EBQteSliIu/O/zG+ + TL9qI/YO9ri7BW5BejAQAHCJDOhiQuCPzQl0Ajd6k1Zy3zwjelRG9mAw5WMnfjAWHvj+Z6cnvwjU + ranyfMouMCJccSXCVcrbj9A48P81OlNHDXSMtA2zTRXAdG30uIgZyOYU1qi4S5H73OGfXpphqo+7 + dcTXZn+CZSsN0DI3j75HNkE58SOcL7og0w2CJwM/xnxQ6Mu+0L5ycLiEnPL4ql4Qj/fych8jtx0p + g0e643t+b+A7ToPLxujF4zDJjgMzDKh0z5ixdiqU1ZO9Gj+MNf6gqB6HagItnajtcGSRcuJhXC9b + glL0PfmyyBUW+h4F6aGCFFxzYrjsrf+cxZ3SY+UztsmxqgkjNVZepLPv0+mnqfoM9VmK/lhyB4i8 + nGsM4hK/mTbSyi1giixY2RLE0a0EQTE3dp4u+/HWUoJj7JTnwp7wnn1lwuMBmg5aF2VVamTfC8cX + LkXk+jhINWHtswsZ4W9SV6H/CtT2xREEBmrt6eR095Sx547Xbe3RM9ZrTzZhrj26uKecSQcLF+na + oCIvJIq15gdEDfu/JvqjmOhqBgUSvpEzz97Oodst4RuF5Bp8I16VJKGvrrhXx2+MWRW/8ZfAZ2BS + TgKfx740da4KBKJiXoJAeNV8txbmL3zIq/MrPsGE5GS5+Dd5k9EC0nseMYzOc+4NjUk+vHGDeUMq + TFF5q4D7JvjU2wKoUTj5WVwRhrNaBNYqyFBBFLfn4rmwJJxq6p/yKJpl0dwERn99UXsfhYWz/SZG + sDRJ5E6Rj5/hyLhr4bmgQTpReX2tu5240S1YzgkbR1UB5NvdfAG33ibIjX5HueypKL0+vTj7FYH4 + KHhWJAe9FPYxJvvBe4zxXBH7jsr6+7zcLeZT2M3ztNypIzG5dT2Vx6KR7F21p6jeP2hZ/ACvqd4k + KKv47SXzu/CDitvt+EFJcpUfVFyV4AifLuv8oH4c1vhBI8fnsEdEDmyS8lg6L1XWV+0xgjzYbur5 + vbOS3Z9+p+nw7PJjKd3ppJLhG7ZuCYjiEcasuWZQGPJW8ttZBsryiy3H/dvU/9sUhBslTY3ZwyDd + b/PWPATr6GH5YqRU2LG60VVznUuItKovRlcyLUBuFbKP25iTVaAfjwwCLxtfZ2AnqDMCN59i/Qj0 + BY20VXGu4K2lku2XlexiUb4NMx0+C19KjwuN/cW7Ec51zVnqxsQiw2PNXfJ5k9wIi9Yi6tuWkYrw + AWILki+QUegTyRvu8BvgPXGzFMFlsEt2YF3DbIINC7vTfx5J1hvRBjw0W+Ry99joBUbz4dnV1R/T + jWDr0Y9Nxu/lxRP7Nx6KUzVWpJK9hbhMRtHyVYZyZMf0YGh1PY8SWv/wQFhPWSO5OZTNybYNxeq4 + wJ3MOC727IC2AiM52eyEPFxGa9cy4qOPULm34u0HtuNu3zEAIe1gZV7c2Ep++iovpfUQsv35e+Zx + e9OIbrfSeqTkitZDVyVl3dmnGo0Td6qUdezFLxGy/EwiL4qUXSQPv2toVCNF6gw6+BCMy66gi89Q + iS3heGLdNwUx4Aj4NFuzdQVNHCUVdSKfKYeD2NGgzSVGKOD3r4uvmeLBm20bqJ70G0xlYEMUzEyb + aqf8yOUtukMUhix0wppi1d1qYzF0exj0lGT5SvkXmHDbKmRw5Ac2sgq9TnVeiy7nhn4bg7whsEAO + Lr+aPXgwczq1oonBsuW8ph56/qH+HD2FKT3CFakZ/jzHG8mXL+9a6gM7aibtUixoih2K0LWPpI0Y + z5PlHrVYU9+8yB+a6tPwvEV4CDYb8vXv36C6HEldhNq8IYHwG2O998mBvfWWZ/SDn/THu/p95lAd + 0m6Fyy2dH/dVVuLah0npHbHMVoIz3V7voNstM5WE5FqeEl6Vese7K7+qd7giJddMUfoFVK0g8CZh + FAdhXPe2zG6RVGQsMHGpePK8nP2JvKzGRoyG8r/vb4RDTAKdfV5s8i320U0qQLLvqLRWqha3uX+8 + xzZ2nCh0gody2Eq08KyWr9wGIB635aQwFoUxQkq1Af/L/m7zmjgVboIS3D9jzGU1vSBb/c/upsDR + KM4FwhE3PUhhO5lAo/RcxOzFe+vD14p0hx9oZnRWLf8G0wSxi7Q+QC4gMf90Ws1ZfhuAYvDb7JbR + P3xNyXK/7eYhOZ/FrCwBp1OCCDKgiF2hWO85Rh+whby2BGDKuiCYHCdI4aNmB/5SmSEjXIdK2/BA + 9ZeMZGaqPgJZ5gtkPBZv0ZjN0OoGCiWZwqGRtnfTOJRe0TopezirjoeVj4WtbLESa4L3AQcdIbat + 3nqgVCnX8cghlOSzrGmh2YUbHoeEp1n7GwBi/9iEHe4THYEYBEmyALPhGwIetYtsqmcBS8GTPpLS + RrT/WRV9cR2FyOi7nRAZ4XZbREaUXEdkhKuSLeTdZT1CGzusBsjIQcuM+YSziLuKKUQD0uo9UPJ9 + 3G4GD7cOj8fY8PotmNWx3yI6Aq0wVJL18VcIbovm+kGbX4Cx0Ofci/81+lR7vcm4SMMwuOaowOnf + MGmQI65APNASxAx0FPIQ6mKEKfyynEi+yDVTnchBF2fY2UevqHmmuMGyjP0scapVmfgI51MBMunF + wor2aa2WHju2Gg97UKzfWlcbEg+bXL0CturhoWoLo4DklDpoAAaL2JF7nO6jI4QeA+7Z5ZQYtG4P + V67ZA/WVbvURvQQ9gj9cFm0v7/u/ieuwkHgR7zeLefYdK9sOp5zu8667TOOqgkrbrWhPP2ONqSqb + MBFV6WIznmo50/8iu4MpbVbsFTIFlmroyIo9VmQlZ+X42QAoEz2L92hN2iRcd4HAfgopelpBovKu + i/cs6gJ6J263A70jyVXQO3GVFKQ/zi+qChL3ndCrgd6B2uTF3oQjN56/H7F6vQT5s6efkHZE8VW5 + tkbtccL8rMOpkbJSR1S7/PSJaR6ygAmP/IMiY/3APCyXitL+/p55HSwBut1qokvJlYlOV2miv//0 + jxpJDex+Jte25774hYVBGAUTFkYim6BMwGm4/L4ukuvFEjcXUFGX2bcxaF5rzDvBlBNaCe+3X+t1 + Z3+pZVD1V729el11Vgm9u1xxBgMIlmSeEUM0Rq1KXCvp5k7E4d8ma+w6kw66AE4RQCoKPqWh3qny + 5M0m+4aLszZQI5wWOiwWcFF75iiyYPv2OrpfjvQKxaTSGOX1+V1GCaLNxex7AP56lOo/sBNoUNz+ + Qmbo7RvVfU00+5gerWjlaJfUUQFJF3HIaFRTNSCTSufBn2a7DaxpO68Si6k+ULCHoyYlBrmjZ8rz + xMwtbTmHba8h6sZcT6F2sOCN3xUATD9ki9uhGzGAO9RVOqCS1Zd7Ku1FnHBdudK0fNSXf8zWkSlf + 4H8FAlao2wK0Y9t5kstlcNCwIxeLrSUDlptrkGh1hPtSU1mWYZ2dcQ8pNjjrMJWLh+ymcqmR0lQu + rpKetl0vJJYdyMrytLDWF9iXgh51z1/WC4THikKFY+eQN/5muZuBotI4hwsMKH0oWjxlcUw7lLEr + EILUUXSg2X0PWLVIcw80MuigadFD+e2uO9BwQCjLn5MtKrkDue2GcyqSErVcrI97sUdlgDn80ONC + f3kRwcbSipo2LKk9kveouEfJPVDj6otZ2VuQ2voC5XthvJPvBW639b2g5LrvBa5KurDX/81r2So+ + mHs154vrhp7rT1wXZr3MVjEtI8NLQMhF4tjOF/9ORQZAmaCEjNOL9Duv56DoZ8ukv6ahGrZy2HPm + +nHkPRg6SvFd9rmeLqsU8k3OP8D/C+JU/dajixRLm0UIqLEb6OKqnoLZqfsxhXO22S22ueJwv7zN + 2FqE4fWT+QQr9XYzOieg/2DtTPRCy8nXVKrO0fDFMKjheiRmlvYtOa47kn1Bp0NzN3bbObpLq8Gp + 6SXt+wb3KqHM4NeWuwQTqHC1Wfq5qBKk9HhX3TGMDAF7SbCbra4uEn6Sqms3lCl+zO1QdU23W6b4 + Ccm1FD+8KnfNV2f1FD8WuLUUP48hGdcEjBqPSY/1+n6zQwrj8TwVKKTfCSBdbojz2QA5eQ8d1m/5 + hJbQfmuyP3Og09yIVcuqt7fJCtSSz+iHW8lpVAaeimGxdhOpX7gtW8CJ29LxtcTRh8UK9lpYRZgB + IDbZxm6YjL+k9+N09W+YZOiDT5az7FYomeUPmpQfwjJILWybCSD+ZDlPb+/nYqvWOzucLMIeAHVG + bOmyqwqWBbyb6vZlfsECHZti2y5S78q5BTrZcYRzWqfLwXwlhHnyb+DySoSKVzxKBLoNmWn4AfTN + gmbu9e1miT5YTZTexUvpxCpwao7fHgW7ke3F98V3vJ/iDg09vkxEiPlI5N9j5O77aj+ISXG9X8PK + hyEe4EX7iNzzjrFDIUjcwGe36Pi8RTAgOSkaZljPNxeLXdvBeVPXIrqx3DIO+96epAdo8JpJHklG + wBtUR3d3Y3yffrUGA2aK0AcdOjyseqe3sMeooDyac72wM49PPgEhpCTL/pkel8kShzIpTBws2P9Z + 31wWKdMLolB7Y5Y9ZqpSC6ni9O172O3+2QGnVj1gh7WhpFfRNuR1qR5+OGV1lNqwij4ag34Y+R4P + JvCPr1I+TZTaq9O3r1VOw80SGvn2HwMpGwZxASnrxirjiXPeMd6hn7HNeFJNGBlP8iINEoZub+ef + 1XkHRnQVN2909vt/i+SIEt2e+tNdnhPVSewzSXXi0J6BBen7OcI6EJ5YyzxQWjkkDUvkkEN3exSG + BKaNiS2jgKFEk/LHUbv0PuNt0DQPNN3UFYvVKj2OaAjX4FBVj25MOsTboTAB7SUewk70pZRhsBMP + S9t3gnmOioSxKHrOuiR1qkdso2CyASMGRtckxfl6FajczvVWsJXhP+MruD7CP4oIV+xT5mboeEXZ + EuJ/da0VcTzJyLPONsrWBSt2txTpOaKeu5R0nxQFVnl39FufuQSuL952vsAjvNuG0Scky5hDX0j9 + 2J0Z6cmVID+tpcNMLM+O+oF6qBuaZ1VDUFdpCX25y2UQWaUc5+t0hqdwoQfAH0TC1Bq+GRbNGtM2 + r7N5QQX4dxAyQkkE8xlQRNkJPXFkCZjQm+TuXlP+DVeJGFPRhrJ59/vV26QcuzEcR7kCT5PpA8tx + gbqG8H5Tl5s897Yf5PnMY+p9BORXusQQYDqeLXdIUtMFv+r4jehIv8TxeegRIyiv2vy1edwipDAI + xeIqW033wzsMkZHlcYUF6zhdzE/1gC0eLEmvI8KK67Tz/Pb6Q5P5GTZgwnIOWsck4C5TMMSm+UlU + bAXNCTqdLz9NL84ulVF6vYGm/3OMUt/1CWjZJ0dI+r1sNWzSmw5LWM0cVxPVum9DOEC6MdXSM9ZU + tbIJk6uWLkrVb1ckPxX21GK12C7oR6JBGe396zg9f8NG63wnDi4nCLk9pecha9StSBDLUbd/jMHc + VfShN23jSO9hoz5ebtAhvlG75CBple6fJEMYgkc2tFep9P5vroiMvG5ERp49kZHXSGTkKSKjDxfv + qih2LI79OpGRH0f+JIyY3MdPBZchRU3QWFBVDZMiIT4f3yVLTNKb0A+UKIXQMoIGMd3e3i+1gImE + 9IKH4aaX44U4J2YUyf+wvkUMYBixbC5jjJhpKrUj1HhlvRD9SW6Ty8WXdHmPzwso6d1qnm5uBHH4 + jkClxSIhkOH1bR0Gr4oYYeLCRSbgbznZhjMHIbqrwHBlTlDdSemmMa7NQBP0OjYge3u8VyzoVJVo + /KRVdIE10/jq5jlbYZRqEzz6y0wcWOuP/S38Yb5lRJsAfBD8oNGNuYeVY3BRgh3HnFHlEJ07SeXb + 99TBNMLOOgSRqibt0XACRxYcRbIKt2WqW31TVxl73Ui+E/n6g45hknoCqVW2oixMKc58Y5jTzqev + VkVcX7xMvrtJNi8EIO1NimBQd0fJhZ2b5DYukPpA7m2oYZZxHsXyva9BdYG+mWrHT58m9moogdRQ + Ti9B37TXUOh2Kw1FSq5oKHSVNJQ373+vUy26nlnV6rovfuHcYTGbCBBeZ3/5drIB+d/+I2xKfN+4 + 2Mc5IpWMnsa2oC1UnXHZBSOAbrfNuGzACKCrEkTp96saRoDLWQ1Ucepzx/f8iY+TTarCnzSgfskk + EKg+6OihhDUwrcAa3oi0PviyDNckndD5ZLxONsIvlmyW9/rPAlBRmEgiT8pEt8MUbrhtlRZFrYID + QftBX4I2sJXsCWfzGY/WxX5RhQxSWdgg9y1Dr8x1tkM2l9/UcvmU5T8DGFTTMLRgMDut6ZjcCzwY + ++HW4Zts8+U2Tebj0yJQL6ntSjCzyjWIo0gFvl/T5i/6LAanFPUnR7yiqHs5hrl/k4pqdRzBJhnV + CQBq6yKbi6WJ5enJl5zmwktlEOMUvnj/gY9wmRRJnKFLBHx+oXnpljpqby5l4TU4M5TECZIrFZmo + 3RpwvThqZ0dH1qZ5cpfcYDX44m7XSDzQkKzYkSuwV+7fU0oY7ErNKTw1AVUpvOpNheAGElNT96wV + jaY6W2Ta1iWs+i70SHi7JT2SkFyjR8KrdLacnv1Wg+VgXljL1pr6fhy67gT+iWMZHj+d3S+nZ9lp + Nf3HsDBX6Tc4OKg4MBccaol8bJzm4igRvVMqcpSFhJjb8OxNkrP1FP7L1yeUHS6bRKi63Z1sdEZk + bXQgnM6uBwf9GP5A0J2g+s7cqgPe5l/xfC+qE2Avs9XNVKUh65485MgBM4ObL16GDOaxF7MqW1tJ + els9QeDWvTgleuwQdjsWVcQeeH/TTYQE4AdeevTE5uYI15mmZuIBARcGFKJt6NOuOf7H8mxDl+Ij + h4bhYHj3MXH8cJUIW7a6lLqa2pRO1WEJHewGLdsjMIIfCHUfcaIhVXXafRJMCFf+7L3jefbHFN1u + hyNLkqs4suKqPKYuTut2duT4VRzZqYeMuRMvEpxf+6zs2RKk10HSTA2icljEHTf5J2BpV7jszEzJ + Z3fbk/Fienp6SnMMt7V8Bxp3BUKKOOlgsO8WueQnMAUp9PKXIlktJ+evyvMSNsCHm427rhie2ugT + v4H6j3Be6JYU4giBoRlICr4GleV8vExmX3A+321Bhxt9eHupN1lYexIdlhZR8epYyLail9umlf1f + w3l0xxwf9dNDO6qwD5AP+8RLX5WVxGJK/KL5+jiIQ8rfzSQzWDGJDoprUPd9RyU7MC94zrxOuEXq + GdtkB9WEkewgL8pkh3TGpSafzBOR6TrLkq3AGRdUSQovpwxgKh7CBNgY9DiZ1xAYmGNqZNoR4x80 + VhJEUSBnXCk5ZT8gWgMUTA8pVu8m1IHXl7gOCBb+K+w8oCcVOJIDAL4OhQOHPMtizXV5yT1ZvLTD + 0Xf32wUGIHcagB6gV3rJsZwCoOCExuO4WDvLoJTSs98vztWgtsixTj/sIPPAu5HZUF4cxTRTgvcu + W5d5BZuZyutsevJAxhEjGKfSZ0tNrn+1xeMYAvujyH5gSDk+BOczfaA5cLCwjgcaPWN9oMkmzAON + Lkp0CeIfAEsHFdlTbhxc+/+4vAnloSZxy4aE5XRil/Ddi3ewKw5vg/kMHFKFrAXtXXiu77e7n9s+ + tY4m83RLzAffysGoJvYjNk2WX+6XUz5F2ApMloEJr6qCUQVfIiKC8CWVeIs7bEVu1Kuh7p6KwRva + r1cMxLTrcxmcdeIOTLt0u2VwVkiuBWfxKmnRV3+8rzHtuoyzGhwOXMbgrMsDrtTufLf8jPbubr1N + viA221grWHC26cwJdVtpw87H0C4TMTF8AWWoK7oUwXCawemN6quKWGGxww0MO3LSY2+LdpRsYfQo + Xvrn0klytVsemXloQn3FmDkUulU3ScP3teUdsqr4RtEFU1xVspkqwcNWRjgpbvRucXM7Tj5/xrza + ey1P5dK9HB81hLslI3440dEDD+IIJ4aOh8LHjgawrrDLhGpU69gHk9PoZ5HmWXUudjhBf7RbY+CE + MehQSrxKYcrMcRMTglKzh4dIv9I2JpMFUEc0UB0eta27uhg4dOPO1cD0jHU5sGzCrAemi7TFr9cp + UwXBSGtV0PQoVVrBgIi40MWH81fjyI1C1w/QYYKP/Lr/mQtsofIgKGGMsHR9crQ4ErRbJNLcId2M + PWC69kB4ko1HpXQUYEVzCeibbe4bajTqLpLj6xsdApASsXMquMhhNaU3nQstA+mca+HX2v8WIluv + mt2BsjChYt/HtdJ2uYFTlygk5Ujj3O0FH75S8gF08i46Nb6jF9J+Kmdg0xIZoF7mqFYOGOgOuQs3 + mLTUGcWns52/H4PpSN26cMh4FDlJVjewpYOg3l82FM6R7+lyQfaKOc+doJvLQT9lXTKomzGLBtVl + OhYEYLgatLJfQazZ5OZmuduqcmt124dk7Y3u8D+iSNCJVHU7UbSXitm7zSGQUPNcFBmZg9fKO6Hk + FjQ+8iGa8dWOIor+7dTEgEV66xQ0tlabXxyTdklb9m7zOZlZYs7aPbl3pbiuSysl2coMkv9JaX1v + F+uDO6kXObT1wmirJVGByzhIWunDCVac7MkcY6PQvHaBdqGk931N1uedec+dsBtZHz1jTdYnmzDJ + +uhiqaqXtNJRk6pqiEGQKt8LRpZ2k+0xNFzxDEIci1P6azLbZctkX5D3KKrk4aMZHS0o68DXMIYZ + 55Ef7hmivTbNwXdVSyPQzvNAnCZdrJziIWv3uWrE9J/Lq7Q8MA+Wqv7KAI7lA01Alz272SWwu4Ax + c9Jw+6fNHWOjrfgvHm0OI5y3YdDPHBlIIWQ30fiRte8u52SH7JX2yOq1PXrQQzvPO3B7Pr4j3nN9 + XkyHZ3f8LXOa5mST472waGUqeAExJYBeO2fLafuPBVExn4aAQvV4sXLE4mtZesfbSEMguKr9LdSo + ld5Z3B22Uj5kjVupGjGBK+VV2t9q/OajOuP5Mwn7IspNlqBSnpjiUSsIIooSHsOr+xQDZQ9AXvcj + UiWGzTprB1fqUEXoR3oxvHE7mq36GeulIJswVwJdlPhsyVqDHgkgNbQQYTmUfh7/Xdwzoltx2nNH + KcOBYyYSiKKu7hvl8TycVqTZBw2eodKlfObQaXSHG3Uvhf4HbAuBa0zwdPU1XWZNXsqWti2fPvAS + zTTjB4fux3AM2m8KtWzUI/OAGqEi9yMTaLXEMv3nsE0fK8PFO4M9pWMaq3zG1mxRTRhWi7wonW+g + D90vpyVs0PQ7vMbqJq3V2ZYtmcOPle8uvwoaNRF3bf0CB7ZASrBcZ/l2+nAJoU7IA7FHEBGmRA7W + LeSLm5XCkJ7vZjULqCH4c5Q8i+DikTsy4dRJR0uHGXKE+TNAY4civGKq/Xuxmu33oNt6IAKRj/7n + f71nLLCv66HbrbJnpORK9gxdJUXk49mpW2OFd6sMfPzFlMVuGDkTFnth7NLC/yd6lEEA1zRBaa7Y + zUvpaYhUQIns+TgYPzvdroP1iVDvI/FbtB6fqPKYN9n0DRufwvYqikIKbqqPs8R9+ogcZu2IPUef + Y1BKnb89V2kwoR+BLh38a3Sh1iEW8KiXlDR40Ddc0OepUajUnww2Fi/FQUtAFXjH1R8fJQnBCOeR + Lq9EEBH5XUIba++V2tJpKaQ/pjhHmQCBgmm++I29DrslNehnLE0A3UTZBFAXaeVt1nmg/H6ec1Wi + ZVd77lUwav0DPi1gmf2I2aNbdoGj7ImVORirwcMASO5rk/OAh6U2MW1MHK/FCKiKnN496zo+fRfK + pDOqJ4M1LrRQItcXDaI/ZbvY7nAvhFV6BJKm6tNjGtnnngq4tsjdU/acdWHe1s9YW+SyCdMip4tq + OS6ZXo9B47J7z9z3LBi1/vFX/KuQM+VkrzvBX3Nthm4Ba5I1AqI8IibsgcJ6ss2X6CKxWciHNgjf + 3CCs5f7vBtF5g3B16DoIu0Xn1CPWgWtqwIxbi2syAXF7LRMQb0ArAfNC/mNE6colmycqmTD0HI8z + sHZbnzs/rxR7mg9i0+Kg55EnkNki1zPIgksZhGYjffeZR8Z8jilYc5lcT9UntXdW6xJ4ZNb4gCKW + oFevhogwgcDAte+FIVLxBmpwIIv5QLHKUKSGQ6XBBUUanPMG4/cdfXD6Kes0ON2MmQanLtPmdFuG + 2lARtqu7mT8N9MpBX+XVhzO93XzMU2+0wv+4bsBc15FpcLRS5tnueplOESUC7ddNmnxBkt9ksRH0 + uiUC9gOcJvsYZ3kkXE2Y/CBld/ThuZSXvedlO71PD3Gt6d4uuSfp2/b20IFICyUadQameziCGy/y + iN8d+kTjXn/ONl9o5u1zYtpD49Udn8cGW/yw8Z1/tYh1uE5M6cFiScF/gkdCwVC7js7l8950zVfS + z9iqRKoJQyeSFyVmRY7QpPdL0kDWyC02r6Yr2dxTbg0VncAhlpPAdwpFh8BojrGabKS1QydIjCrK + TZiKJU5Jf8dozk8q+ycMhULQ+lUDFxwwQn6szIveigaltg0hKNT6wXKIFxtIAxqmpGAw/SeU1CTM + d7pQk+DtltQkQnKNmgSvkkl2eXHm1yIXGAWqcZOAxeR63oRFXsDk1iUyIGETuFMm2LnWh4RUEXK4 + XM/8esxB4MyKyQwd1SBHnQgmPGUQtEAKg0USRF4NuGxfK82oxVEc2zShQxUV6F8c8QtYuPgJGoPa + QJV0I7fawGh/P47EGGnGCDg+h0MEjty6DPFcwyvp77Hf74/VMogu03auPLj0/bQJA6Dwwuw79Eo9 + d9Cuoi0yVoZQxaIilhS9jp87nbzX+iH7aJJspBJOoquytMI2OXV08M5PmzvfzDqHC8I+9LhIvBwy + C/x/c7hlJwydtuzEDov1IKnxnn5k05Ppf3hqdECAqq8uWdAh8YJut9NfSHJVfxFXJWzJ6zO/pr64 + YU19mYZR4DrOJIxiAVaAS5054fjLq2RcpD3IgPzr79nsPt+qrb+C3Zl+FzmaYPlofJF05tc0HOxS + BOBcj5/l6Srfjd+A0bM4KWsDsP7DqA2LFUwtzn1WA+5O5csZiKnM81vUljjE8A1/qFQNiW+W1SAs + mqFKgiiuqT9NL1qwokFPf1nUkz2cmDlt4NlGz2lJKZxg18tFfnsnR1qUBa4zuTjkIBlz+MRsktdV + t73vLmSPr3fzGjB6yDjr9vYK/W2eEVCsrEwt5qLZzbGJoHvwVZV4Wc9akdWmdStZo9d5LnlQYE3h + kspNuN7UXFDjZ7Bi3PVkLBaO+CegfyL6hznyX/wrrMYQf0f3IfwceesTBTFzm+QkX7evZzOCH4g8 + PlF9KkYZgXGLHG/M4Ulnm3SbwZYjv594ZCTgyALzsBCqRvfxCHcbrYj7RM2BM1GdW2qmWilQAyCE + igOzNAe6CojFoWOxhu0+KHaojPPgXLUVF5TFFbXWh58NGVVOXC9oEeoIPaxGMbIw9svCufrwqfUS + OFSWc8wW6wUKr7+WlcqmEA3UsrJSufc8bKHsy/i/8cIHC7lLT/u1p1fp7MuADt89kYghLJWwwDyO + z8LnzOlW5ErPWNe4yibMEle6KClLLq5eX0mKo1EjhVE161vJFCgNsTf6aViFuB8I9dsk4DvgrXgQ + Z8VPX8tm7aWwT1o53ucBOkSDD2pAcule8g+9s2dMyfr8G6I5tfUwYld6z1zX3ktMt9uxK5HkKruS + uEpW1vmnszq7klulrYhf/AJKUcicCQ/gwJR1eWdV6+r000VpMzjPv/H19Hw7Y+tS8HKT3mXzdEng + K5LDwTDCNmk5GTsp6DlFZvik8vdUsP5hfHarblFaiULIIkYG0jLNh88/IjemMPTEa9bS5/Vbw8jg + Y9fI/3Df6MKOAm4yOF+cGwzOXhC6zA+PZmtyIifwuPdQVl/jQJlubjdqMRoYh+XD47hVZL5YwjMo + MdmOJfNyWpHuRW3mk9GDWvpKoLF9TfcdU2XvfXF+XN8XsENG/3tY3Nv2FjzgHouDf43+ErN/hOtf + lyUwh43kEItDqOm17RR8mYJ3aOhru2V7msjT12dY4AeVr4Zew8HrkdDiqQJz+/m9R1Uyp/rBXj8+ + wIO7odkVzTuolaI+VHpIyJWm7/odIxLqEVs9XzZgqPl0TaaGFDmpCqlXFQo1/Gmi9/IQpV/8xpxX + 0XMnEip/PFihJ1XfltrvW2U+JH7UzwIA1fYJzGeEe1vt1wGJxsMCjTZ2gm4zWz9jjUYrmzDRaOki + Te47fME8nbKpAq5MZdFpKTAxsrpr/GF9w0Z3+B8BNOvRXEfjUbkdCDZPSCs2h0zSIC6aKQfqWXNO + TNwl18kGvhqOtHS93d0JsrCW3bsVCLCzpP3L0pNA0g3Z7AjqmLcGFtvRaI+ExY0dX0IEHOhmC1ES + ZbucNlYMaqkc1PrrYk7UKG9fXUzlFOsxH0DRJMhewklc/DvVoOez23T2ZZ0tmtSDdlfV8SC5Pw84 + js94CWTSBhTS8bxQIbm2bArDJ/gP1uQj5eaDKKJ80ZX7R72gOjtEpv6fH96Dxmcf6aXbrXwQUnLF + B0FXpQ/iwyuvRlDhR5USe//FlAWcxd6EBR4LJUHFOcH8CTTRYvzmqUgEhOUotCcqZ/l3SiGlz4tN + voW5ka5RkX774aLYH2CnmZRKuBOki99McVVL7WyMxcXlL5noUi5U0uEGWUsOXS8dC3dzb2iy58Ls + B8vU/NiW5LfYNNrLjgmGvj7PGY7Q8+kOyQhnmiac8Lkj9GZGQCFrtJvTcQkWY4DzLZBZvMYn9RcX + MV9npx5BqATGFBPfLAmjMrTwu8Gg9DiSBi0wwxmNj+xZAB03Vy9mqksy6o1jkMlj8jWs4TpYvaD/ + 9c5tHiolOSyAjt23oKy73cpF6RnrelHZhFkwShdp416svmZLhDXEujqpyIrdIhEH2wI3kW22NF0o + 5dDX24tz+MgZ+p/Km4VWlN+uF6GJpwQXRNV55Or6CaGmNEnau0a71FT0a+FBdwFau5QgjGw9CpNu + g++0W+6sVctOIg6Ey4gDvFnWT88M7LAwqIrq+qmPWsA7oNoKlg+dgUrRTre3ySpboiGbKqaLgXR7 + tdUJ4Oo/Ly5ZFzp4ut1Kp5WSKzotXZWwUb+f1XRa38PKsLJOG72YRgx25ngSceYxiQH/kVAjCjrf + iSYtNxjLP2Zr5knKcsWphaj8u02BqKRhD78LzxtoUCZijgY7kihS2ayurXYOUQWRx72wRqK2yi5L + wWQjW9JnbVmOqPkGTi3sU4Lnhm/i8E2w00832ICZhhm3R3IQ9sqrRqs0FEMrFpXXxvDGuOcFQcj+ + NfoRIzjCKaeUWwzACEeZR6SJuNlIMBKxK6DIr1gYCwfl+acrJog0U+FdhbP66g/qSbHo/OcRNIe/ + 4tu8N/4GS2S2yOXK32hMURGXGD9TciaFjIkWcNLBo+aRAtT6EfDyOFTi5UXvpWP/b1O4HXvL/JoB + XypyDvUsvMTrT1cUrnmMjgpcMmU2xwDY20tpeQ2Pc6JrbVpK3VRfzsOyJJztAm9KJaF2cRD+uESg + HlBAg4HcaHkBueRi2inbAWcaXyYgDFBxOkzlptUphKckcYfUCjGMUzWMcpIdfJ/BAoFhyRQKe5hC + YTdTKGwyhcJGU0gAMyu+5PxugnAUmL9eoK2Oduvp501yl+a3i89bWApr4d3INq6KIJZbRXsnVtRN + LComcrKZqi3oGpo22tUGRUPzYG3Pkj66mdX661LN3Qtha6BSJFCQCzIG5S3qY5SLMrk/P77nQQdN + lW630lSl5IqmSldJU714dSkUT0NV9Zyg4n4NXkxBFfMDPoGfA+bVpy7sBgtQ5LM1fOh8s7tBLA44 + 8xLsSwywUPxEJJEIWvAcH/oKXYroKDqBGLeVZLPFbJL85Xi921L2g3IkGr4BZTWozUBV7VzMNyx8 + OKdr+7vsoQZ2Ip8H7UldXhSopK5Cxy2TsRs+DjPxzEzpKnMER7ETe9E+sY3FPMyP2Z4EtKZ3LeOu + iMEv51OBlm3mxhX4reoVRxc2Azx+dnH+6eJkMp5n31YFpO7F8pqtS3DUu80q+0r+4vJYSW5w1MV3 + KzFlBYGxjGyhdgu2+Eaci7DzlaB74JtwSmElyxxWM6nmnz/Dss7N3hSzDV4dnSxiXSl93OdONFCS + hlALqoPX0YEUkILWPMH2Oqba6IpxxtRE7nm/JqocnCZC56nOpdrT7SC4j510jau6+G6bPWHvK6lj + gcovX186YWR/LNDtVseClFw5FuiqPBY+XdTRI2JuOjDc8MXUZUHkuBMXUSQiOhXelWG2fr98I7fl + P9MNyJ/VNmYTs7iyOccdN+f/nsIXt6KmGBun57O2oJjjx5yFVUiII4JiI7UTOFHkWIP37M+diCOd + orCTvobOXmAr1OgHx6bxdXxjmaXfjxb5l2aYjQgT//17WH/2RQN0u9XeICVX9ga6Kkuzf39TKxqA + ropMjdF78Qvjoc9BY+RRHMvkMFTuRIWmMOSfacv+pMD3vLr640TbhMIqfIbKY7JY5eM/XOlHPHk5 + 9gNR5L3SzrZ8dfnxoijkQ69afpt9y9VZfo8nShlLVFSBvlX4jrnQAVAnyBH8DEdGlndcbNaeqgjP + PtcLBehjlKeu3WY3fZ4ub/N5ioJL5tSKBUrtiA+2aglX+Q9q6fzivHCOgvLiOvERXuGStAh2zzCs + arauj86NxR3O55J/reTDMmsNglans9EtRzud23qh0J4FSkg50mliAPhtNd/6RUuF2mqAjLqCkqdM + epCfiSE+qXuSX4ri65LJDYsGF4UBwks+zbt0A1uU5QJaj3Df0MUGseuRhzpQbMLK611z2v5E3tMB + nJ8DwCv1do5w7ZyzWvu/WoFCPiVX5pEOSHUGMw1vexo/h/O1E7ateMQa2JYaMFFtxbUaYySYIPMd + rLrpcvEl1fC2+rLKl9K4t4V0DE16CJ9taUUd9pGpjuJU4XjJotDekKHb7SocSXK1wlFcJWXl3dt3 + 9QrHAK02s8JxGoUOaKKTKGQek52rSGVgR1KKvi6vEwE8c5e83YGeOH734S0TGyH8wF+OlxnYC4t/ + EwKFcjjIfhUaxbub24bSw6GcVUMVBh5h+3zEqqPq6dTQpdDgJk3h9+Uu26T5DPcQ7fh5++biZCqB + ItTF9q59qUZGJG0kd7DaFzA0v11esGD87LdNsiiksOBkhJNEn0ww/KOuOznOvfRbSi6gHW1YgqM1 + EaZdz3S5fmR8au2JqpA/f3/vRB2qi+l2q7UnJVfWHl2VToR3H+quZQ9TfcqGQgiGQuCH8A4sCGKf + 7XciZEuQ/+3pU10N4SzwPSx4GSrsFXnGqdUVkp2e6XRu1eDY6SINsIB8/QwfUfh3R1eLzfgUTL0b + mNI5aJkbUCmgF2uYF0o6HVyOxLwg7pEKHNRmjFAa23QlAhGIDlXUJG7g8xGJe9dUi2qf5ed6VI3U + UO16hFSfifSz3fUC9HiQWqpL1QpUNWDXvz2sXg3LM0y3Wy8vMoHKf0psQuHGimjcih7WB8viZqAq + E+t1+1jMit1FPopTy5dEj07odCF6xNstiR6F5BrRI16ls+r08i2vEz2i26pC9Og6YRSFE5fB4Lr7 + z6r/WYL8usP7r6Tc6bPKDZwAV1UsUTplPUVh9eUYJTeLQo5Ihj4u3tPH633UETy0Z5rFnD5inqIX + vn/9VxToXJjobfCcdcyFoWesc2FkE2YuDF2klTSHzTjb5aPSPgZTZWU8jTktvhNKxajn6dODUlwb + taGC7eFBJ9geuN0Wtgcl12F74Kr0wJ9d1aJzzGW8DtsTMvhxwkPOPNnFl2W/oI5V4qwW2Ru398rT + Pcvr6O7NWevmNmaCaT7iNmYEn1V1RGWXDQKvLV0iDJ0AtvyCS3ZzqKcmY5SyXXxewE0Juj8LlVWR + xJ5/Uo4XTEdQjtJy4gzMBKyASTe4QcK2sF6mWyPf4yVMwxysSrh9g9QTMnOhyAcBycXrlTohp0ms + /jbCaaP3aycWDljskFrk3qK0pM2NekRywQNWqzyBYhC9fUQSW9lzeBdsZbzdEltZSK5hK+NV2j5e + nX+q6TpOwOrYygw2Di4ieKEbqBDe1TrbSCiaAp8oXf0b3spcMpj7kCp8BuXen5hz/1Z4KlXxoajw + zLMlEkuN37+fzuE824hy0qkMAQrQVxje3SbPNM9y0VA1bwdVA2GXpeOLqec7qtDh1WLLH86H0FB+ + Y3JR8Lb0qohFbuxVQXxLHQmTGqbd0gbWOEQEX7OZSWm7U02NPk6xOOF+qbqaykKxSjdvGmmVJIXE + 2TTo+wf04+Tj9HqRUxvjYkSt5sqB0RzhTNa4vRFzCHtf8m0Wb485RbulQAderEpYHGK+6QQKeoeO + 0QiPSruSfJY1DZPN5jREPS6hKMRUaQVKdvb9/qiCWETxoZo1uKG/gYhgIeSVkTfB2iBclKdQp8sR + 8VGo4+ld1wzeoS3gWMPQhqwj27N+xhqGVjZhwtDSRRn5+G+FQZvswLi6TW7uccpmM0qx1G75Khat + FMx9N4ZNjvxyEgtM52VooG5Y0cdzhB2bUgm7pAZARu/93W7VC7HtaCBptaO4fvFCYlsq50NCVzSr + Tt81tN862YLZSbjUniN9eulUjaMK9ss+PabrHYn+XIE6GsYB+FDp+x1kHeKDo41f9ivcNADhXVea + uEH8i67v0KYqdXayF/YWNVizdXcXvW+XjCn57fdL5sf2ujPdbhfTIsnVmJa4Kk3vD69r8WQvRHo9 + M6Y1DVyXR3wC//hB0GB646IUZTcqWWYiOEWMNCAMI//BJuM/OPzfo199ked2iokWEk1R2ut36cNk + phnZ/24YunFQK4mofksNGNlQoHkF5bWUIGU0UKC8yg+o9BdS7IrfUorQGs5KOIEONTI6Q4Xt6k4v + H/jx9cuxylEEczXdZLewqyWU6aRZLkTw/+rumiGbxd1c/sPpH8F/cffdlcwW8CNfn1A6IuJTSOE6 + TSqVO3IxzpPyQF+A+S+1YPFOIscA33OEM1FHCoPIH8mvLnu2DnRYF9+lE7hSvTyqvDRyqXDWmC0d + XAFHEs9FlOIkMkX/8G3PKsKzlE+xwQ6r/ZbFsHlTXuBT6tMf3q9/BOPv+PWwEU7po6x5esH2ddXw + 9bMIhvCju4wTB/W+PWdCKliaw9PFlnqXwpGxWlgGCx6moT1B+phpLE+O3u4uQXr9jDWWp2zCxPKk + i3RildJoYK27hg2QLe8pUz8d3S7yLZw4GI2Ypdt7EdhQU0om2cGeeHrBeKS8oabpULwLmg5gMzxI + SP8AfDNFRNW39ABvJt5u2iya+bpttqinSFYxILmxmuiUGvj398zx7VU5ut1KlZOSK6ocXZUh39NP + NVWOh+gOL6ty7ospd6PIZRPucc7j/SHfL0uQ3xDy/SumJzE/iuAXNaCuDItxpwOSJN1uGRYTkmth + MbxKA3r2roHNgru1sNiUOdz3/AlzQuHlwgFVZFSzLCkSbGhQz26byCGWyfZ2gyXM5QcNPZrxVu4+ + FjIkUqgWQxSWlBznlto1n8VtLAyGaD3c8iVLRbKNhb8Bi9tKRZTc0Zn68Ns0+XoP+1yC+DYVXri7 + 5H+yjdmXZS8x7N6YN14UrlU8Jqj/YrBH0oq9HG+/ZeX2cuHDpZxP9Towc/Iv6RJXRKkf9Yi9FHcv + Fze3W5Ixfnb2/oydoE6+vc12eB1OOVVVrLNSRzipCoqEkIJmUaQAvfZ+R7d9NIhijdbTSvzWGNxi + BNCxZ5Q7noVWAvezJvuxQwdhRurCovNLHBWyE8tPtN+4UPe+fiGCCim0CPGool+YEir9KoXJufmi + xXd9SwllXm2ib7e5TuDHxmmOnin5bj27knkFE2JVZAfTjZFtuneX66h5WIq04MHrlWrd2aZ5OMtI + ncIyyffsgr1m7LkTdLEf1DOW9oNuomw/qIt0IifrpYQKSebJelsJGZxeTNlY/CHbaHvhBtP19Xly + igLKz6BEYSS4GCPBXdMLDL+7ktMegjtEvjn81j5UcKDXTm+fAjzUMXJUcl5/xg/7hx/23CECCP24 + Om+6nV1iujQukN4D7CqeUn3YHBT9wMeC8k15Hr1YdeCEs7TDnHsCm3jkB4aUI+hd9LBxCjXpYesf + llGnhK9Q/xnrhPoPt9ui/qPkOuo/XKWT4fXlP3iN4N0NXFaD/eceKMY+WN+hxw8gjNwt4Zm69d0V + wfTppltfNBhTJRCy9PuMiEU26TpZbI6vqJM9N7o8feXq1EHPC7k4eXkkVi1yhFKDXc9aHpmMFum0 + 8gV1ga3l27HEiixFy/HF5skdwnHm28XdrrEU+inQxmofSqApyn6Lnjt+N4oy8Yg1RRk1YFKUiWvV + wuJ09wWezmTqpqjTmi/Wt9vb5M6gSSijr1cTQ2RrAgM5FvDrLGSU1Ek+5PvltFFoOWGUdF91O/pp + F/NFb6zsnz8DoZfbNSzorhEislvtunzGnu6amqjQXYuLdArslmsFDKNBf2SA4MyLRld/fPgdESez + 1f/skAcRyeYp5/APeHCET4s5FbqegvQ/ElVpoLK7/W3E5OdRMy/b3CSrxb9bIg1tkGtBzA1msHma + 7+6yrnRgruMRlGULV6f4ZTsWf7mRBF1oWW2bKO2HxNztUaDRb2E4AoKqtBUdh2VFuVv3OY5JSh32 + ZPCscM6InsF1VWT0ihm0X2oDSF2s89jdyL4Mhm63zWNHyfU8drgq68sv/k9DHrsXVPPYf0HPNUfs + UteN3dDbr0TON9BCvcK8MfXfcJ47vBVQjvscbJwHo20+QqP8UFTBJSZkoaILRrfZ9T2ogwvB2TD6 + 9O489Iqkay9QsCFdq+pKB6HNoz8J2QeLaUO9Mzq2Z7FIHOvyvOB19Jw5XfIBioesC/RUI2aFnrwq + 6T2N7yrgo3QOVTg6dIty7l2FZqtY2ee6spzfY8IZJWZk26FmnyVsI23vsMK7ufVh7S6PzkTO5Wwr + +Rg7an8/dL2BjKChOyjdsAYpdoySHFHWUjvM06MkUVHqk6wrKUcXiWlO0sC3v6T19x7TSHvmrA+S + ZYU98zoUrdLtlhX2QnKtwh6vSp7HV1cNFfbMr1bY/8I8lzNnwjwvqCIxGVj52bzEiH5+l/J1ocHM + sfz8BrbdRSYoBJP1GhRJ4deAe8boQMOFsRTATTAnkCidZBRubxEHRglohKoDOn9Z4EffbLJv2Aou + YQK/m+PpMYdnZfvlGiRJCDnPGyrPjkMEeLquLtn/lbo03kahE/oIQxI0+7l+svEe4Xwv0BEi4TLD + byc1ZdEc3h/OhOoIN6X2CaYUDv8dc8BO76ZwqIdsFQ7diKFwqKu09l0Yoe3t/XLKp9n37Bo7CGPj + ZA19v6c/lhnEys6nlofbnjVfCvWR0BVhRubHdBCtYXjQbFjZA1hYB+COaGNIjOeOesKjMtOBIILp + 7DwrBkDzeYC2DzA9EpbKUAKHoPVT+4RO3+yCLke326ZvNqDL0VXSJ97//qkWQOJBlbjEffFLHIU8 + mMSx8AzgjvL+92/jT+ndGinDMFFYxgyQaIQO6ffZ1v/POaQHiEc1wzkiS3OpMnGxmm3QzySYX+DF + se/zseAxwiQDOKnHy+xbuhlvi7EZ4SjrhNNAJoY/zSTpQckl1DqjrNqL947XIVJLt9txWZLkKpel + uCor3q4+1sBmfM6CGpelF/oM3gH+Cd1gv49tvQT5/yFp0n4ccKFC/HgflZ5VniIYiRz73ZtutyUY + Qcl1ghG4updgxKsSjPzisjj24wmYhAKvD2fVp1tK5EPsnZkgKZtuk5ubtChM/5bkOpg9V8Hssq+i + xEkSOd/WBkEH7+vQHAapE4bHV4ueuZ0WPdxuu+hRcn3Rw1Uang+XF1e4xKvLvlodAcve51EcOROf + x64ng8cfDjgAVf2jweZII/Jhs85ZsI8kZo+fyTyYAxOI6uJ8Yrjk3Zj7Pt+Tg9/meDGwXEK3SlLQ + 3kqZSUBOjhZWL/RXGmLPahJHfTp5RONabE2Ewv/Y7tEqguh/ujt0X9ntX8QDut+oO0Lw3r4bYjMm + NvF3l3A62W/GdLvVZiwlVzZjuiox7P/7U41NnEVRZSt2Xkx5FDIsVIuiSCEqvlvc3E6Tz58XK7Tx + bpa7WYbJUaU4n1Gy8zmZIagALk3kFk03lI0xMfR4VODnuxktZFDZx8v0a7oUOHSqAXSOyQAi3XYL + 79Fwn8TA/76t844LdTlpjLXCooiCllhrFPOYh251X/+MM6v66c3FVa5vHBwm3wpoIbFTFd7UrW2y + 95DODCu7bEHy0OHw/5qajEvRQjbz/bCt4Mx8b33E3abfDckV0krvYDeMnvbMHeGi1IYpk+fokWBE + 0C8ueck21xl6k9CrdIQwsfnVRuJXi4IY33eojlk8ptdgr0qAgFx/WsjnYpe2KW778VYTfgRnvjGy + vdO5cZ2KN8p3N8nmhfAZ3qSrcX5/d7RcMXnMna4+dJUWLGqjXMJwM5bgQbkWilcvuQffl/nMo8w4 + uNb3fVuJTmEjFLOxvHMe/84cbCg5Ka5BCYI/FulZfV5/r+s2VKQ8rt8Bv1jcbkvKg5LrpDxwVRr/ + l6/jmkLjh14NvzgM4B9/EgachTJRlHjXRMaaYGWB1inNTvOX4ZmQrZb36BgomGfwOdPUvNikcV3r + KETPEB1IY/4Q3uZrkQydnFS0EZOn1DjOopB7IauevALKdj9BqYcMpDZS9Zlrk7RaxUP2GTvUyOh0 + ub5Nxm61yNscicnhfn8Jy+YeRgzP12UiT2F8KhENeAUHJAxNsD4Z7+AbNgr0DiyCueBWJizQTYqH + I+iHOEqiA9PibVCTzzMsEh/hXNNhWDcIR84jZfn2bcOiLtnzhFP582KZ4HWER8XY9Pb28EY2CL3c + w+atH3iarPW2ddpNO4jD0N0jbUIzUxPFtTayD6vIKxuh1EYOSipWpYBCsto1Vcs18WO7Mrm4v/2O + Owre3rL5dBuIw8IOaxYep/rt7e0mhWZUwvQg7zdUUvfx2dfq3I1UakXsx50zK+QztokVqgkjr0Je + VKXZM+mtTVYJTPI8nVJejMhwUafe6cXZCWzHH85fgRHpIWyefzLa80BRtz3z8UUuXH4aPXeYSKZA + bNPRY+2/oePRNiOAXe87F6WCAGJEQp9e90KSUAJf4tOY7oD4wKLTflW9R6rcYo9zVE9lR0LCwlcc + 7Jna4/2ondTuxSQFdvuYV8dOnr/9x7b2Ej5zHabHcr74SiWCXUxQAh3cM3H3bsH96aLqgzmIT1Kj + RfP41H3ueN2o3OgZayo32YRJ5UYXaSvZrJehI9XzANS9eizifZiMn72PTkYH/gySIlHR5bNw+DTw + odh5j/LIcx5IYBrSf+CeJUJiD5k2/WS8/nYF6b7DHF3nEJ76zx2/Y52DfMi6zkE1YtY5yKsS+rBC + QVQUxIIVd1NMXlMgpgx6nncMOVH3sk7ovyJtMzzF7MVuPE7qIeu0TdWImbYpr9KmMLtXpZ14bGXr + 2wWcXaPSz5qQWFX0Qocu72FyLfKpWO5owt1RktoZCBuhRKFGgN4uNwffONg+Z8vaVlrfgG2eeojK + 8K5ViW5I7jGb/hkiuXGQ5h4c+pUFEbk5e7+NWjJc4RWyTjReeLstXiFrovHCq7RE/n5ez4FhnLOa + GyzyosidRKHrOLSk/r7AQ2s13aRLg5CBHFt/X6zr1F1llBbB4bKFU2ZZC6uxlhBSHMSuGwS1XMYv + 9CZNSOIgLmxzLsXMhwnHm1MjEbi6/Q0dmzcsxbhKkkDnawMld8MwtHnXorShJBc0XFgrCBIuq7iN + egfYrlrqHYxXLkkmkyFfw/pA67nC+fMGzp+F4YFEGhozX+TteZnrh4E+4PtufKChDCbxSi7ZPW0F + TrinrZhHDPa6NgT3xc3GaGAPgRHaiQc6blRdCDTCTZiT1Y9dZ2R7wQY0woVYYDxGIpankPkq4MOf + 9/ZabQdC7RJvbkhOgHlBoYRiIk1x58CP+KrcJN1MThZXBNZnpm2kQ0ypsgFbfG4JrUDBzzQdgu2f + jrJdfYAasyJZZljGU/oC2xf2YeeMml54vsjbseAa3aNRKKzN6tZm5dKCh73qIHT1cJJjrSyhhLvd + y9Ep9k2zx/e8XrP6QmA/bcfIQXUGs7f1G2Q9OEAKRUX2sLmZdxYSVjv5EQRazB+fouWnny76cKSA + XuMqU4CLOibezZRSD9maAroRwxRQV2X15qv/I+mktNHEAyOKJ2F3oUNM5KCSfKH4h85xtK9POezR + y2jYC6t3fMTgOEw8NSM9iTbHeNQFbQ5vt0SbE5JraHN4VaYzX9WRwV0f2bEqYHPMZ24wga0KV3O5 + 8rihwmVyNLxaI6Hpy/FdPmPyZMrHyQZP8c8pRTgR6EfME1XtuhWPwsheK39u+jXF56CJEnuigveZ + KwbMD3kDqPmTpvdt/lqzsthlLQojaMCM+Z53oGRJqgOLfNAup5SE/RULoklkriBtFZPO0Dey2xC7 + sFG7gClqCLZGnFqbe6H6jnCOa4g+Pw5HskeEHzCdLbAjBRJJ0xfYKUbHJFn3pvDVPi6qinj93nF5 + h6IVcbtd0QpJrhatiKtyGzn7UC9aiRy3VrQSgX0STqI48mXJygfQPyljUW3CghAKdIMcYbZOL6/+ + JuYPJjuinidSJDT7CK3Y2d0eq966KJHFzONh3ZC3k1Q2iz2PRw2CulY3YqTOY05NDpKK6V74mjZ7 + GAI/aHMHuK4P/6vuRqBXlQJSiBB5m2ITrVk4oNq1dQD0JItqFSQFkpo6LQ0/QxC1UiyUO1RvexJd + U08GOUOqe1+A6b1d5e5W3xpeMeBBK7tE+ZNL5SzNI1UQ7eKOVSbtqTRnTtaCqU2NYSMeRKVjXhZc + DypBCVYMn4aYAFshcBNrD0cnL3MHwUo06NlaPmuEu4AuFwv9SFg3TiRULdBqRWy35CfYF4BuRTPl + gTDXqoPfTeXEniXtrXl8OrEUHyFtL6scDxu/tDTNu350d4HtwxBqhFtMy0RaEnRQkBiJ+XFwjFql + gwYqjcJVPtss1n2+VubQSgNqQeAohsQJvmFpz3voOMeRDH1+sG+SWSobfWq1XcYD1jRz4F1Kk6dP + DpjHfRom2DrsMw6G85gE5Jt41Zu0z5XEifWzzWpA4PGoqWezzeKmq6whgkhHeFnGOgxFWWEgwR46 + Uz0cMsp/opHNEfga9FLS55M+hOZKRQ6U78d7FT53om6uH/mMredHNWE4fuRFmWI2TxX7B5zmmbJX + MFuggtgjEswiJ+Isdk9GHe+GVoR3CA4oCgszgmlB42mVmsunGUvnsFuuu8wumzgjHPS/gbhV9jX7 + G1quA4MLOYHviTl3s4TjCIE8RUraMRl2EfMpQnCknJgxt9S3OMEOf3w9rt9LjNXbBeZa7f3BR/Gi + HA88Ls4UTtvWXXKDwQ2wvfFT+x0KnuOJNXFguXZMCe4utFMu79EASIUoSiNpEjXRV4WGeLO8n+EH + YJL+bt1xAnpBFOpltuwxXOpsKJDf+RnvGBcoHrLGfleNmODv8iqdD/k2ZQoo5pKhZpDCKwoaXUFs + riFltyl3RuJuQf0UeTKNOI4pk05hBpTJH0Bjk4V18HJf2yyJojZ0nWyh4SKYegipb38olhELTL64 + WSkchPmupepxvyROBw9hCbwlbUNDFlrJt84aRN9V3ZjQ6PvwqyA+190t3du2Bo/LJPz4p98v5Zvj + LIaOv/2W2G0PPnPIPjBf8YjOad2onZjSHq8TWMRYhZSut4dclYUVMwCixSOgPurHesSmnkBhbjGv + KFUD5tUZt7evVInzzS5Z3S+nJo/ObbK6SatM312HsBcfldqvCV///Xv46Wx6au3wVg9Yuby19IrT + W12XvLq//zer1Wu6Dta6l8NnHhLrRnAuTuCfWNVrKtfdBnahhfhyJBy7xwjCRtRbjbPvsj5HOpAm + IlAmAyGC41VOS+FFNBBWhGmnZ02+hsX2EhTArXIarNewcsXBCSJvE/gNqb2F+2+eLuGeTa7uwprC + preSHMDZd1YvFlUvZmao8bjN1Y1VrLFXd3Uf/KiKT96PrFooxeC07nAI6gHVDTPCV0YzKkvX7t/G + bitl1hvID75bBamYHG6h4fXNlDSYfzZSRz/5ZByJlah8zyEHPUh+vakg7oFpaHJ8uQHTlU4lRClQ + phbCwpKsy3pnPf+HpevY0uAZAtnpgAw/qn9g0zqzPGV7ixuQ0Um4sRzqW5o1e22DGoULHDGyjOjs + zHWj56wTV6x8xJIqVjVQZoqV1+iIWWefJWDRm+l19l3nCRm/jS/grhHeKswAn1ONECwEYfhv0yWm + hKdGpMlWOX3a3vjCiTNI4WQHp9HDFWqSi9s35atiuqPJTmFWyIRF3EMziVBAM0TkHtz02EaODG0Q + O23xQg+zEw6NcfeIzKr7yuidIPQahEzG15vF/OYIOlQf7BgFh+p0QESh223hUJ06Igpdpf3vz4+v + aglqTuSxWmYJ2E2+F09YwD1Path/pkm+HX8s/JOvjFCCRDpdzev5Xme/X5xPJdO8Yu419CrWHdy6 + yuFraq5xV5DrUohk3hwhKeOUhYy1lYcwx3Pi0KnWQKjphC5x5IqAO5W7riHJwovaqCu0+NHp+l44 + A4Wv5BuOhwb1GStQH+EjLCczrDcihwynMSqZi9Xt4nqhDhDzhRCSTEAR3P8bby/5pWEGTomWQvcU + TOBvt4vZrUgjlFKzTa6llryX+UuR/QCqDKh1sIZ2qzkelOIz3s4Tth7hJC1wch2CUvEig4awtR/t + D+KAtKDlYg1Cjg0uBIH0xK1vobey44SSPhvLuojZpmUX/2mJzZ+2m8eR7smmXeuQqjwchyJuMVoJ + 2LsxWXXvMaHgBpWeU1Xjx/eO79jnWtPtVkeZlFw5yuiq8ha9rfEyeBxh08rOouDF1Hc9Jwwn8E8c + Ofvx4ldLkP8fgheP9OzwixpQIgD4L9AVOmCB0+12xF0kuUrcJa7KrNeLC5zyFaYNL+BV5q6pB2eg + E008j4Nttn9E/2cDDdRH1FRQK5morX61p0uQoUfVDQN31BWCAscj/SaLvna0DyXoekoEt3FfmHo1 + tTzJCee4Hbgl6HZLTjghucYJh1dpav32uoJs7IFiGwdRWJtabhTwyJu4Uej6MqmEuISwnAK0p9V9 + YXD/ud6y9fiZSOgsYdZdvH37CcFfzs9P5Cz8LW3AHb5MrjW0yw1oRiBZ/lMO9TZmI8dBm2M2Cv0g + dGq5wpenv1m01ZyYHARtlRhGY3s1XaPJmr7LItc79EESHLDUzZ9Qlzs/3/M9hvdVnOAiPlZ4La/T + 7TesrGmtkRFaLv5VaEQv8dvwHXHAtXKRbLfJjKp27zKYm4L6DQd3ufiSqt7I5WRBeVfpzFuPcErq + ResHmN2L/dCm5JanXjdFAju3TXNuGJfDzsCY2KK6zd+DYr3Al4B7adu07KaR48S1f89ukLJDyX5w + dwboJMwY/aG6d0COLx4U5MNR+JyxjtzD4hl76mFqosI8LC5KF/HdVhbTbC4/njaQopVLR1tuuVpf + M+O+HC4I0B7GiPYFphAxOSD9lD5R3l/9MRUiRafBl8wWuew2cblw8Y6fXcl7J2P/eXQ1ph+VgJNj + PJqeZJY2Xk038kPfLXApTUW0KI+czo5ClzEqMSiN3pGQXx1E7k3CGgg57EES6u3JlI8tgC4Zvste + b4KdMDSrIQLdx5UhHpj4MQooNiRaeLbbLOaIVcr/Nv19ejJ9iBZZ4FH2EbWIGSrQ4smDfN2QJ4bO + MYx/C547UacMQ3rENr9QNmBkF9I1CT+2nCn4MVjwtxsKLd1uKZQ9ark4E4cBcx2ZYBiRc9PM41JH + dk9iBhYw8iBK31VBQLxHoP1g9hA+fLLyMb7O2KGkTnLwrZtwEI90cx7wMkp4RjVDlIsRX+iIg8hh + tH1quUKeCg9Pqa9WYPhkmy/tbs1DDlLe2ETfvnQdqfyXUV/Uu/VN1vPIf9okssPMZIQcXepy6e15 + eLV+7w5IWXu/XTI/tg8l0u1WPhUpueJToau0851++FgNJbI4cE1eXNd78Yvvw8nJJj4ajtKlooIa + 0J2CWOFLus2mGAualUOJ1xto7dvA6BHciUKmwnMlqY2Bg7KTAiMMbQlrLIx56HhVtwt+VvFVjWlw + fui0psENKBXpAitYbUZHaO/N52QLsoR3oFSCamLAxWHljSf75Jc4L13hm3TAeCYGmaKtAQpohioT + igLaOCiEd/yLiQ6rfG6pa2uy2vHMYOdg4sATaXriDzQPOiZZ9MfIKE7eTiIO6PtUldYsq3848Amw + OQ3GRn9UXgwo+YQRj9OmaefoZqLi3oKPtGxDNvNZHWKxcvy4zivGnjtxJ8+PesjW9aMbMXw/6qpU + 5799FinoqM9rIOZUkPFkcgcQ+YLSrQl/FHkLZ/OZrw/0MyFDkhkgfyKomicjIVnUj7KIYIUdl3QL + jZWHNliOVcsi3+jrIqHfUh3+t6gfdWmvuTvGP+JELqH4lV9oSPfDgfw1SqirfLuNA8PiweaXlhPS + dSQHJ2Md+KrpdksOTiG5xsGJV2kCvr68qEW1WezwKgfnL67LRaDK5THnZgmEmJIlywA2r9d3a+5R + +OH15iv31xOxnxXkhvBnBZRdzhd6fYlPk9FQsuyEfvZ6s/ZrytlRapTjgo7o1KF1B4qv5ulsk4o8 + c1ULZuhMjtcGA6tfbPRYXTzCeVDQPvp8ANpHBhOclS2Px3QsDKWN/EeqEmp7Euj7f56/B7XaPpBO + t1ttT1JyZXuiq7Q9Xb0+4zWOYND0K/sTQ4TDENSfCXw/C+T+9AkWwVU64+56iv/AYlHRwUU+xhoV + sVA2aaqMdhw/zMI6lwVyufXeRPKb8lDPTUeLmYbK20DIGOPIP1+zxapGvLkfsVaiXCxgg1sqG1Tz + FxmZoVHUSpBrvKKWCZpCtr5NbsyofhAzr22zY0EMKgsYbmdVoCtz8MAmSjfZfGFiXslb61398vDg + TZCR9iaDjRqXwUICeukveGlG9LEZ1e/FCzK3gN/KsBm12PKXZdRE+Nv7XEXk3+c5W4/E3NZ7rhuy + Iah2H8S1K6YBPlLuxaN34/7CLfTSmCzXYjbW3qmVCvUpnlowP+LC9dzvaBigZO1pH52Plk98yNGu + 03nPD3jZjxB0mE5zII+0rfv4KFCrR0hMkfh5/16sZv3BYYZCLXG5Ri0JHfe5E3YDLaFnrDFLZBMm + ZAldJE0J8cJmC1nLge5HkXeikt/YyfiZtoQKqNcTI+OkUYSWUME/L95J4J6EkvdIAhfAxN7eL6dn + 2engYFFOHNPiWQgu+u/3S+EkAzWkjmTZQLHEJF+f/M79rt+G5/s6ou0j+k/UKe15PKAYnlJJRP9j + 1cLhjnyI5JMBcKcGO1a7lkcPBqA4JGrWYL5nNyIq+sYNZQhCsH7yH85fPgRq42D4X0cfcFpOXGK4 + rLxSBUcsmWkMsUn5F4Ro+ppuCKQCTINk+QX+pnAg4OmOZ66rzlyXv2FcsPd2OXX1U7bnbtGMcfLq + y5KQkSr47u7T5WKFvUQ+u9FihUxOsB9ItDij0k9eg18EjWDteC2axrwfxtyRQNRglFFmiBqirr5D + xUaHbfWxw4b2yUg/3kU38O7tyeLU6rwaYL/1QspUNea5ami+SBEX70fSmA+t2Xt6l2Gv2XOnC/qI + fsZ6h5FNmPsLXaTd5W1xpoxKP2tb6re7nI2u8T9IT+zGDmnitmnPj0hRXJLkG5LaMXvs9q2/ePJy + i/p7dM7zA6nSw54hEZMHHnHmPZ5qfbROhxLEPH+7T4ItFIirSWZ4h3Jbut2WZIbXy23pKoVyLs8v + GqBAGK9CgSDYnu94E8awC/ZX26ZLkP8fUj/thF5c1E+7oojpz1eXbhDZpw7Q7VYDKiVXBpSuSmyX + i8v6gPphYA5o8OIXxpkbxXwC/3qRK0viuSwwuN5t72HKzlM4wNOxTvCZgFpzP75OjSDOAszjdDdD + GGylteJ2Q3NhvakDwXSnEWqDf+nK/tNSul3/0DZ6Hpe3xvJc4SlrEJ2JxFYL2e0poM2y2zK5jEQL + L24jWUYOuqBONfxq+v1+meWF+8ccJ4+H7Z3AeQhCq9mkySa5RrupTSSL/aBKrGQmkUqxo4+nry7e + lVDBGnp3Qj/CervbLbeL9bKEiIOR49lyJzbt5pmOccBXk/dTRJNJ9eVJGbp5gVKwBeFLzPI7kRKG + D8qEzK8pbvpw90vN9daEcoNb56bpC/IRrmG1wfAwDAh+OqS6oxLqdLXB+knUnkaKnS68I8XoWNic + DWqLxyNP2HN64vSTM1Re62MiGff0MY7kXiK6f8/eY/USiIJBLr7Ndba6X5YEPRPr5aQjSMywiaKh + RLa+We5mODnYVHyvQEvX7/iL7Tuqc7aAl48EZWuXnNHiIetQjWrEjNXIq3Ry3paVIZUgKsJan2G7 + SYtofy3mooSjqRe5seScPWJqPbGgWvR/cwKXvmR++M+pvaKrHrADl1bSq+DS8rosV7m6cKfc0I9c + 13OjyA2r8NK/eBGLQm/iRRy+gQb5HE8d4siEvR831ykcLOu1SNUV5SzJZpPcS2b10qGhQFQm4qCA + B8FEngq4NpmNcg9GQ7KZ3YruJdVpuYE3/zb9D1GkPSZQL34d619j41cB3Sl/5VEQRnKdHBOFVjM0 + llo7tNNFa8fbLbV2IbmmteNVaYadvkKCj4raziucwai2ez5Wo01AdfMVjpVKRxXgzvl2cYdwsPDq + uSSRU/jyMGVzeKXFcvFvBf1Xypy6TOY+W6NagU6lZTqlx6H/Xn08NdO28EmD0VUAOK+ThchynWe7 + a/34+HqTJl9QZRJ8XJLF7mt6k25Jc7nZZN9AGxIA18R+8VJQOeblzDLSmPAN/bVcHvhLWFsaVgZB + QfnInBgWv3dcQl+JQZL5sRvXFGrBQyZ7qwT2ba6N0K1iSU6MtD5MxovciuiGrlYDgYUD4sJUaatl + LjSzaTPh0cgC5GAj1hDSDzRrzB88EFLi3jDzrB3e0mgUeXEUdW1TRMJh9pSsg0Mv0Ea1ioneYeT7 + LZTQluPptGeRNo6lhAtGzCgYMf0RjTjTleFr60kaPhYVGev/GVvESGyn2oLyGBvJISF95sA41s6O + NvBQ7HoRTW0aI5yVHWmvC7luiVXU5g33k55SWfUrAqw4DuCUR2XWShzOjgJiAlYum7Fi1JO75CaV + U7Ozw/0o/iQszRQfJWfTrkInbGUE436Gd/bcGg9OjSEqqg48vQ8P23UoUejydu37U/xv+FNSiz4N + Pk8ncigl1kTnP8jueQgqdliaT20HxkTHqvqsnPH/b7qzXfIetdtzFCEEC934OfM7MULIZ2wpIVQT + BieEvEgq+LftZy5BXOBH7BJM2x2Vfh7/E28ZiRsxRTKKQ66s9VC4wL4ms112KKKl/Sw/Pl9BjQSV + FF1cOkEHbE663coAkpIrBhBdpd7/r/M6JL0vUOvKVnn0YhqEPnT7JAiDKAy1/XMtcq7f5WvPwXqi + qWa8mYxvBTLnq1XyX4TFOM/wlKaakvUajG5RBlKJaby+nMJYZTOqDZhjB881CNrdIv+cLVHt0biO + s2y1Bakib2q8RZQfOKXlTeVMb9k4mTD/tWhAyf+rYdL+dIODeqxArs9N9ujP4982mNhwB/sT5uwv + NjuhsxqTeoTzWCmeAQ/8UYckrKG5NJ7ORqPUCBZLUEGDy6h7lpXLHPJN3qZoz9xmsy/HIel4OvMf + kQCc5w7vliAkH7LOEFKNmClC8irtagaRj7CeBM1PtjE8yCaB0CyDKYs+x8pdRpvoZ/YcyV7t+g0k + nKZQ0Xki5Shb3pOFioi70N932bYp3bMLjmPBaqvbg5W6XSS2Ta+y1bS96obsPipgKOjkuyrOP4pf + 8+mkMz1uKv3xer4bUiyxfXkcn0Ppub5k+5APTBXhSo8XV/uQqzSxOLR3RdPttpoYSq5rYnBVFnf/ + +alBE8M8QVMT+yXEKiFnEvIoYGx/RtB6A/LrGF5/yUBG4DrC3RQyyq3Ej0Rb+W63UrqEfSjvp9Yc + Bjvuh6lYdH2H/Dwyy5lS+fd6I5r4K7tL2bvgPQXhx3x704tut4XwQ8l1CD+4Sgv+/Z9XvAbh58es + CuE39YI4dLyJF7pRJJWU0/GXFF3G6RpVYVh8NwjmpwrT0BUH6gRGPlHZT1f/vscDeFZK7IA/J4jp + PxWA9Ml8scbKH1DqzgLUM9GNnKd3C50lARIVE4OIwd7Cgp2+v8/5eiK5p+AODMxuhHEg+j9Zy1vw + gWQ+11RXcgjXCWi20BJmsMEdcKu/fi63LvFcvwS2ksvfjXnEA1bdtt4bXz01PtTMkmhJGfPaQhhG + g3p7o4Ewxmcy1q+ATuE6Ig6Lo7ANbEK1ImkZjCEsJWQV1BkUFdg/9qKkqHY1MHqnNNYo8vPiMwLx + yFnYPP1eUh+qxCKBIIH6fL4VOsJSBSlqc6LEhCZmxgjXSwFmyGKCmR6qwpPklOgZBgBFjGUJb3X8 + e0sUk+KQRPR3lyeX+Borz9hw0lsiLINhKA6XNmZhx4BeLOYG1uLNkg3s9b3J4gerC8U9CB/psZVZ + 9dWQ8h/tQ9riek8IwBHJLsQMkBS4/aS4jJGl1nSS9ko6ixy5NjICe+qpVfkKU5IH7/xu5V76GVtE + SdWEASgpLyq+6a00kHSkOF3Np9WqLwkWyb3ADf3gZLT35guUWX0CGxIEI6Hj9mCr3h9jhdFpFYW7 + cZHAYL8iQkdCfhc0xXl6s0nbYHHb4IEC7prfOaOsvMO+hgdgbnZkgauC9Cy/VGPUtI5JASK8sojH + 5JXu5Yo60OSxZNSP70EaIlLsuY5HVbaVdJliCPe+YEPms0cVRhfvucs6OIjE7XYOIpJcdRCJq7Sb + vTmt2Yvcd7hfcxAxoc5O4BcX+1LYi1X+thLoitTxhMlA6r1pOJhKfba6mQoijXFODEXYaVpY/lJF + ffICW14oTqWDExM0jL9VAScW0DKZgW+SBjNQNDct3r2VqS9y/aoFVbEE3Wn2XbzD9P8V/1XqnZx9 + /zpYPeQys4KmqB7iMXrQaqHBgy3W0TcqDfrdGhSWeq+2oihuM6zjkPGoVsLUhOSD88bAPgzcmvHc + SGE41arIcvH/Z+9Pu9vGsXYB9LP+hT7djlckF0GCU/zJccauJOVrp7q7zl29zpIl2lZHlnREKYn7 + 19+9sQEQ4CCBEh07Vf0O5ZgmN0AQwx6fZ/4Fk5Qs0kIvqnzbUt+qpIVPfdKfKH1uhcZvNunhktf+ + TYVDuy9sUt358tciAwCDPJSGQBeiyM07GuPhKllJDhf86Cby3n7vNrpC8RBVKZVXZivyyicJ3ERn + 7y9N+/1wyx7cuqHIqaFDTVdoiRIS1PkrUekeGy6qCzjEhID7q2dld9+pozYaLbFuvRSdQWh156pQ + mnhcpIy85Mceb4lbJR9yTxmRjZRSRuhqm5SRy3++/+Xy0xu9rynF5HIxY70c/yNAZ1giM0SCRNtu + Intild0tJll92nKL1I+w+LA6QN9uJoMMwpxpTl4ZlFJsWzfQfXZMbSqorMUuBhmGGDMJ2saLvTgt + IGSU36CS81L1NzzdHJft20NIOkp5SnfjH3AHLzzU28AiX9Q3ysjlrGZClWYdWSQHJLGoXSxRSdgR + a5f1Jp9wTcAm8Vb6tbhEPoV8uQ5q9jArF8x+5d7tNF8jXQDh0taxjeuNDYT3sAWBaxvGCk3rp9iB + KIPiwD1nxyKi5HV7QBt2HmcGSj+MJMiTzIl66KRCqjQhrfny9O1p82bgzoF9cObgI7ha61Iq5dpp + HJGn5nwNYqqmOngb3JUk6FfHSrt7OthcU60ihvyYtdUQ6RlnBVE2YeuHdJE22a+jscQxGK3uRpPp + bIaoM0tMoVaAFVTAYnBT/AOewauJgCz1GO2d6OHFYVH1LtP5bQbvXR9VctcJIwpWaY6H0eomW4s6 + 1EVzaY072CHj3Oz09SYX+zNG3hUjBcyTfXeeDqggYNcUPaQ8qqEwqw5+793FSTuSf2Nj1JCgrvHd + 6h05zo93QyJxEEX0AyZD8sCnfV3N7nabcW9vB4Xci0JitfvtgvktMovpdqfAkZRcChzRVQly8fa0 + klnMY89ONOTxi+dhBMa6NwgjzlKpFi43shj8rSiSHKpkLiMirtiAlgua/8MMS9ln0/xWFO9pYsbJ + mPtLXDUXtwusv5KipMN9CTsZ6CDzbKhLlFVWnASeuBlVq7Zsu8lGn7DL880AAdbms0pWIHRLvqXq + mnkYWbKZZ4NGIAHv5S75+fQGnQPi1ENkiAbhPInZvxtwLkzBBczbGDWka9h9xHgvVjejuSoQNQXD + F2+i2EtAF2VVwUvhL7vaTBQUgCWOsaShnwzPlCQoy7PnBVJnYIq2mjb9Z3k2zzd9a4Uc2fnfflIm + Vt4+NNP511FuQBnsboLxCnfzjrea5gtY+5gK1zxQaTuRyzzbTBa393Ayzuol+s3IKrUSS3NPzA0J + +DBezP+zkXkfAstBLyc6qEugF6E989/qlmOO1CWVhu9G8I3lstKkT3XdsV7Qj5peUH3oXkcb0kl/ + ekfVhpkocsRI3gq0bZieebbElWUuqEGxT2koBcKWuh0tZ/gCpSnXw81XhfDCKAx6chTJJar2PAM8 + 5YAvVTmYmmEIxUSnB+wlIhyNBUaEgo+bgXqzbrBNt3nWcdPBJ7ZtUq4+brHliIN4MxEHsdg/qrtU + uw4yAkW2ZNau6ZZiSaWsW8otBclip5p50U6Vw0UlJDkvyV8ciLVY6lN6rDlrikXSqosBiBMLY8dJ + sXPC9LpxrQa+jF3ox3E6zLPxF0FzvFY7BK7OHSqx6JGXipFqVjJa6uaw2Qtrfavi4qap7ydqy/7y + J6QpC5nKbo3eRMde3MatoJ9xzW5VTVjZrfIiqfWrZc6kls69S8UAUKBg9i9Z0Gv+i3hcJK0yT4ac + uOGXOdQR6SZtC5xsB4GR/TISKPKpCRVaten7kR8bbcI9tN0W30B5x/ce2cAL6b1QJqHO7G/bBjEl + YBgNgpqRr6frjdx6mwfCPU5zQCNbF6RAD/jjLdi6iXsRH93uZFtLySXbmq7SIvz983lSYYwPoxJ+ + ZPpiGPM4DYMB9FpgEOGq/UR8E4bXz2LYzb4LWlQMbFx8Os1pOFCvlR5qsKBn+QJGcgnq4TXmTAql + UGSviTmnZtqzy8vfj1Q2Eg6yicyBt/8e9PP5Ap2+AqduajM9G4wnWLu3yoYsuSQyFLLMf18vk4pl + Tl2Y61dsnqylWj6/ybLxPTBsvLRiVlPPayAjYaE0Qkba0szcQ+Ndfdg88X3Fu1qCeeqVTOlBnfDe + o33ijr5wD+e3Ml+CIPKE+cIJlOyOciFl9A16QANFL7Gajqe5XLjicuHtF70V9w764bFsadD/IC8e + uRsE3cQSHdl9dvHwdMfo4y4JN6XsG/yGi2mzVsWUCvZYyQxTKrJaiprpr1n7zIotEcIHgMzbi8en + s3NRy4uIPTylbaD5jKrrjO+RHiHW6VCtU2OFOkkJwlB8uBXG9AgAbktQtE4C5xQqXw9/R4pHx0QN + sXWK7tu7q5P2rk5nxTB47genzGsbhyuecozEGc2YsbjismQYLLQWMMrnvV2xzgyzv61UiMvl6w8f + eqCTiowt5iPkaWeb0cMnNggXCr61+WYdZFN1Jrthtw/8lOQ37GIHNFtJzMIdkx+2Y7qO3sOxrnVu + HAW+rLCD+T98fdoi76sLbwCL5Ddpv2JbkVyEXFoVXtoCGoRud7QqhOSKVYFXZcTu4hxR+U22hDhA + WDtesSuiGKyNAHEZAy7tigtta+JInRsqDQXSVkseNWNrwGzJvtNB9+zik5HXVYrFwFg1oSKCghjq + UEAZJX60cpVf5iaql2+UVv1tGP5tCMK1AtBY2gTSm8qHmBelHmdlHPQgRCVgeoef0lBlDYXRqnIK + GsuTGuTf4bcyeLwsadxrtIrUWGiocVOxL+m0J/0C8Ak3MTAM1KcIhv+fm/VJiL/rkZPfpSdmY2EE + +DEVXaQ6Veh6NboRnloHBqJG7G1OCVSqAwuqvoBldHcnU1EUvAwZHhl+7wzpn64LK+LHGh8dGA4g + hZzCewnpyYWij4Eti8vpTPGUw9thN3AVmMjP6ibksMS+B8HTk6NM5Tzb95h2HQokSsBWDXt7SU5I + EbFDe8JD31p9j0lBrI5hIuk8u/BYC+ce3e50DEvJpWOYrkpIvosSODLzgiSIkxKpY/hiyHjiB+EA + fqSeZIcpszJUnSy0My3UdmZ41C5XNQjFT46+sSv0v/IGWjpIeUPCgc/i1Au9+pPPecSN2t1R/8z/ + 5czvm+xhyDJ4fdLP4YOIg0C8Zb5ZCjhLmIiT7BqmMIKjbXIyJATW1mrJhsUDPZxIGroqIlqMH2Hq + dXI+OUqpiQU+lmnz41kFO0m9rvEeHJZo3VH4tEu8VSWzq5AswXK8/eCx1D27km53s9VIctlWE1fp + kDj79WUlu5JxTCqxLbXnPExYmA7gR5pKWA5EBOg/C5Ivr0ZHJlCBMpO/EP/M2a++PBjOvlxVD4aa + u2tjK2nYZFGlHCx7XjGoagTXpyxGSRM1rSVZ7/hv2S+XNNM1JiRWnOP2QbCt97DuS9CvSZMJ1NCE + /8vH1k1ErZqgVCGQfQua7SJfjypYF0kc/Ls+47Je4oNmSNa2eD1bjMfq/HGQH3qs1RupKWQAK5oY + F+XEvwimUquZtNMtd76YmdELW7doXBCMocfKK1ORubX2vrm9RiKJpva2szVZ0tO4UYFT0nsvccPR + 5cn35p4zhiVerHV/AOrQZbb65fPtqrwPiBgk6PaC15mmqEEVBjfPplgRiKNyItQhLHkXILSZimdK + jevs11M2wP/64lHYSqFdfOJuNL+v8kdntadjTrQVs3L1Zt7DrVmzkaUJ+S08YtVx24La+CfFBiJE + O2097USHHkEvmMsVwd+EwG/48ho2B/mI0fhCT4ktyj2qGu3QTFsHCevjBWG6VzvtIxNcRg5270Zu + 8hIq7dGJSeVTwH2s9+Vlqw2A7pk+WTfzelJjMIetRsFw06z3kLM1Mss5Cfz98/nwzD0KkURe2NCP + ArJhX137MNlN8+NAsdvCs7FEtGNJG8oDcbsjop2QXEG0w6ukOn988+z0w/m706Mq8YEXpVVcuxRs + 0XjAUs5UqOOOMv+VmSQAv0hT/nj9TPx6VNWXs++NRUOhHXQw3PZRHPIaH0iR6dxQKZQ4Caw98QvZ + +5Vq8HRH0/BtqXCieAmBAE7DOYBTeCKQ2WlcsbH8RM8kmYskv4CYs/Ie7DuR35rn3QhmZb4WZzVy + Vaz0q+b9WTaaSB8/iZN5T9DvxYS8KnqqoGIyW98uNje3fWP+LJFAEmfu3QIbMV6jV9xVQKl5yQ+t + w9gBW/qDetFYVhGRE1l+ynbuXrBlA3IOfN8Q16z4Em3TfUMKYthLcz+c1R2idpEWxb4xFjXL2y3s + 0V7MjjnSWl4jGDYjLfXgPnVBAR8mGjD6TXzshe1S6uUzzoDRsgkbMJouGiAoUhGsQKD0tv61n71/ + E5bIv4omMU8o8lP3NPvtPlnOgpIEMbq6SxVxbbL2W4relcwYyXkrHO4qha6ZUdmp6n+f5JUHTc3v + lm435uVvUDPfDifSOrih7dtD+2ond2iFAyED/VD2bE+vc6p2LRYnwbGXtNu21EOu+5ZuxNq41FVV + DDRjoaIwjGqLfj6w8Kq35U9CxFDwFPqBAmv6s5UE7RWN2isduYNKotDermaIy/K/SqJ9G9m2oiNd + 2pf4rPWCls+4rmfVhLWc5UUJyzZbSuKKf74qQwXlsyxbIgHXHXLm9S/h1h7ej+s28H1fAgVR5E/5 + HfNpjs4ylTs+2c72sKWsE60FfAB9VCZN7/g2G39ZLqZ1Ueot4mKPp8qR1uQX3cGOQWlj+KKtay3g + aUpiMyiqkBxrPloiCuuQnIxkbNFykLZXvTt3Z600tsfNz2I8ny/hJJoZmtGeI5owz4K7mS1A826s + tG8WFLCQQtqqY9v6s8V1HbKAXNfiXSdT9AO12vbB9BEz7ssUuoqg1CtHCCQvpb3iSqLeY7H2xjUX + YK9zImGpOWJbHzo4K1rtXJpBOYq8Y9iQ2kCd0SOuSGeyAQvojK7VV1aUfzdkoD3EAio7jplPNkI2 + bbGEf4a0+Z76RoG2ctOXzD/2opZ2rnrK2dLVzdi2rrosdcbxRJ4yF59OG1iR0ihmPEyOenW3XKCA + 0n0oVKiQsNX1JDak2GPn4rjpupJiSwxL1woY9QDm81U0XsyzFjPRzMWuz2WuPhyHpCXmeExgpdbd + dL6HyQy7pcFfO5lew4NwguxjfQewxGpwlLuEkYEmuFTKDXZJs4XNEv4DWqqgb8MTcfW14VX2qiPc + M5GrIXom2jo7u+DDT799PgDIlPTh2uTe3UrCQXBzEdfQl+wN8s4n7bAv5UPO4JeqERv9Ul6lbeZu + kvnVlFi12z8r4JeOeh/xVqXo4nMSEl0otdxnBImOj65l9tlksbnSDE/9q1U2+oKV1XeOc0yOOQct + xTdF78uLtv+c3etcCdXHZlEStgY6VQ+5fmzdiPWx1VX6xGiNZSv8xvocQb460GclSbFIEZnBoB31 + /jGd+HH/egSr5l5/dashxI1Oo7DXk+Ma6nHFQof5V9jZl86AmA+VFNoCEHS/BNPD5kik8CfjoBX+ + JNzuij+Jkqv4k3CVNoBXZ1XiMh7zuII/iSiEgT+IwiTwZYbkp8V8iJnWeAIW/ioD3WDUf/f+c/8Z + gmhPJ0gqAV0dTY5U4rY8+mQQMZ8jXzX84EtCbcNco4tRPhyffjyH/5z/KiNugmVB4k8OzOohGL7N + nZCIFPUTUEmqCGkD9e1FMsc4Z0sZk4Z/70tq/QPT8a+m6FhAc0Ndq5UD/1OW07O+1gBXAz5NseCJ + mXfW/kPeLSZy2O/it0PQy26KEhxytiu2qfwOg9S306vpOqfh33saWLOg/FGPezixC2y/NCV112KQ + HKq5cwVt1+uVAgkZMy+zoUZjm2TjUesYoU8cFJNsBF9E5jMZsWSUSeScoKI1ds/NtH6Yppp9ACkd + z2ZZ2l2pIOFqMXEFO3uE+oCuaKWcXQYPTpp0eKGX8hAhNKFQvuK3z8K/HS2Xy0/wASgxb7SDxaim + fjuKlbWdHrOgnaUtnnC1skm8ZWGLS3Tqjb9dIzGXrRRlmy8gZiHZ4cifi+pvkcSEks//HgfhscfG + vSCIwByUnMJBatT6rWgBqKcHIhtU/JZp//duWyMKiJSqvJjaTackSDxl6ujXedpunIjYh0sDVmPe + d+anS1S6XRy5lzPS7a7pdii5mm4HV2Wlyu/naTXRLmHlRLuhzyL418BnSRBJ0+3d/XJBtIbwdr9d + vJEazR/LGcgfV0tScH8cFZDtNi1r0ph27wcxT6KkrNrA58+WjXDcPInt2pACitsW2IWKc156M02a + gLhaODFE+tvLfOIvhWqhNA9o4Wr6/zZTTfGCf9To/BMwMkeTwil2m8nKKHFoIkgYaJqXd9eoy2jt + DqxnmHmghaIJKoHBRiII9nmVoaJ5O8pNMwT6peh6VgKJjAY1732+eF3kxnmpyJOPQqKakL2emse7 + 1t52l/s3VQUmMgmpNJqOtrLjww9IK4CPM3pkjd9uJpIX24nSJlqqiti8oAXgiLjdtYgNJVeL2OCq + 3BpevaspYgvCCtwIT8F0iwY85QJ2ALeGs1dnMJIqHslUpdrktpp5uyWyZtciJ15D6irhXSRBpaa5 + vRnlgx0FpubB1dGWnGLPUgUv26kEEo83cSzbr1pUnd2PZ8baK71w4tnW3W55KhaJ+434OL+or2TW + sNhEAinbr42tYWh7543dZkC1CRl8M5z+tuBGWogGwSXnOXrl8+l/7SMNzknWOD28JOW8DDTpsq2W + UWBgR97V9d4Z9G9IEeXC5i3moDxbmtfhL/ishOo4PT/75exI8WPTTpwXPS/GRMxIPIzyzUwIQ/+u + /B7Z9+n6RFIKEdOHEIvbpS4jrhR6oYyzydj3wD4/zTMGP86m84RO1DfTOVv2cMcqarti1pMfV2zp + zXPBSStumz3hEvh/7DwHZr7Q9rXu+EZdpk44FsN4MjRmb4F7oA3hgq2JjOnF7SoIGURj0zQorY42 + BvXBmRKPY0eJlbLlu7cZgsdwzfCEIpjFjqxTZ6Y37s6HvooiRrGVfyNtxUH/ajWd3LS1GmNPWo2+ + x9pYjXi7o9UoJFesRrxKquHpm88V7z2i81SsRhalcZQOWMxEBHu71Qjyq1ajCkQX12rNsiSw7T3l + wX5SrvBz0y4s1UzdzOD7IclMMLS8XBQau0ckmhXR++HCgjuvYNbqh4oCmxOV3ZUJo9MAjhayZJyo + 98f7t0bpk+8L845RsFtLhVcV7OPZus1++nQRXrql1uzCAxSLHNM/Pl14Qeq+lul2p7UsJZfWMl2l + tfx/Lt6yuBKKC0pw9Tx6McS1DJ2I0pQHEtDq9Xyine8rnCab2eZOjwgcn2ppqDU3KCX3TItQEIXO + xgsYRfxTjo8LlJpJBgrhFFbR/Un1zM03NzdZvjbXx2a5Hn3J9OO0v/yf1Q2Lq2Wftf23rcUSesaP + C7ppiB7t8Ckhifg2dESBu8G8NE78mP+79xN8oJ6YgTpmFsjNSC7HmkFwcShpZ3YLMbUbmUS3rZ8o + jopIKxE7NrkkbZb183q9xIcngmf7S2lBptPzx5MPqe3aVwztLDrjx57fJpJUPOTK064bsaja1dX6 + BNtXv7/BYvhqCo0hzoexTr2AUmgeISV6j5SVOCh4ljBfNW7JsySecedZoiZKPEviIh2a68WdL49A + NF7Ht7AprjAb5fNvH7WVo8+ZXvM9ql7nMwrsCbEiUzYNZWFoCeuh4GFut3FECSug5Oq3vx3Pk3/d + LrTSvdpPKgu9gFlvt58czI/1TDnTOyEEOrvo22N/NxKfviLeNWErDD3aphp2pzYbXkw01UYHXbFm + HB/dcZRwVpIBL7zY4Aa7NzE093eKpEK/xdiA/N3/c3TY5M9wRHqcym8IAQLmxeJmTv655WgF595s + S3mx65CCoU6L6Xx4PryCER1SMgdyxwxheL9mc3u9tjyid/ZD7fgEuf/xwk8S9yRFut3JNJKSS6YR + XaVd/t3lO4ZODds2CgTlgGkbhS+eJzwMY2+QcPhfmab4uz/M5xefznHpLsaSUdNO7CBPAOYm54hN + kc0F66q6X+jYmtwJx3h8C+O0zobB32SWgv4VQZoVoIVIr0cwWiORQec/n8C4r29FWE4FlUd3d6PZ + dDTv/+73RY+HW3p8eXouxkQYVe/yW/ilyvMlXhuklQJ4zch6icfDhFcMqQYSL8yjb0TN8+M4CKMK + 57AxFrqczkZJ5GVeMJO/m4kTMAKL6ql+1lJQf88P26M5r6wxnnoURYHRETtP3TC28ua2z1hyl/1z + ZC4dlITkJEFoanoR7nRk4WrSw9Z4ftTqIQdiLhyecRgw3/MrX6uEUiF9GhlG7DC4SL24y+BAmU/r + HIXbTMCwqNt7HR17vGXVnnjGvWaPmihV7ImLdMhYpbwqtrlEPwvmvvbMAlk1zJ/m16w3x/8IBJqI + mKo6iEYScqNDmUxNodxhocy9qkWVvtOSrLoh6tdFTTON3wIj/wgcX4zkAKQiBf0dzN9xIwRWbVZ2 + wqzt9uP7S+b/8vH9p1cEz2aow/PFfOhQibZle6t+14M2w4BFTMyKTx8vHQEd1SKlApdPH7zYd9cd + 6XY3tzpJLrvVxVVJ1/Tpne9V8qe4H1b86s/hkIVXHfCU+UFa0DVp0o13vpEjLh0GA5gFd4uv8Dp0 + 1k1hauQqnv7bl9F/R1+mfc3BQ1EcWBrIbLBYZpRXIXSQi9HEj5cFWYjkg5rfQu8ril3bNCjm+WkU + VhzkFk/Ku4YEztC3/e6FLpbyyE8Cv6ThldEnLFe5HzWlDqVxmIae/+/eww25SoMjPjqU/r7/DBU0 + e/oYtxWam3rgPTriYU6xIyxcoRQe2KduN3dw0+nbS046p6CcyPunMAiryXT4FgzhKbSQY3cmuH/0 + aF5qbzvYpj1hoMZa51E1M1tCftupAWSFcemDyOFD6/zaGMHd6snPF0sMfD+1MXTUnHJFpQ0ig8BJ + VIbAVN0XOezpEAoxHbzogJwoqI5wS0TG1kJ+ngKarsg0Yl0444cvk2MvbKfu0jPO6q5swlZ36SKd + i8s820wWsOVOMGU+o10WR8kEWXS6yWwP9eAwJuQRFlK+YCEE6w71bt7WlvQCQtM7xCINGKOFQ1Jc + O+aGmvggm6u7+/aht+knWogtnSv6o+63Madp0jRXD9ha95bq7GFWQfnZ/SGccgmBDE/RQFrtzykX + UxHWmw+e57un4NDtTraClFyyFeiq5JQ7f8ltTjlQopLQt6uwAsyngzPUSwdgNqR+Ws8pJ2BVdfqq + H5rYjgab3PKK16v3izKJCEIdOvGWFgr+6edzI4f9QvCUox7YRL3KS8lyj0+9WowZISyqOK12emIy + HaJYrLP5CEWWCgqaCzhkc71zQQT3NdsyWAP1RYxQ6woW2VRMbFxleveHT23DeMoO532wCkZ9OgfX + 2VLNElnBfgKLdjJFg0Wag1F0Sax4EjJR0Lnkm/EK4QywHm2K9yIiB1c2BEtSLjPtY6VNtRq6X9yq + Uh+YuW5nFxC4mBsviLE2BDBqrxa0k4R7RvYN/UGwUiV7oABNGYmYXAc+5zos0x2Q6J3hGj8pQ8cj + nESX7ctp0vKAfPG1j7cyLXzVsT1fLfHIRWq/2oH96ozXNaZqx9cXHvPcz2C63ekMlpJLZzBdpTP4 + 0+c3lZR2LykB0gQxHMGxHwXBgMVBgBrjtpT2bAXy/9wp7T1NYZogIpdywCYaO5elp4mALWiFhi0f + ckbDVo3YaNjyqsTPzcZI0ITf6xL+2Z8s8Azq3WxG8/vZ0NjIsu8YF4KDSwVG8cGeeJywFzzC032M + lKoafMIkUSzNwvTYyxJU67mjfCwWMSoE+wonGoxrgWGzRaAzQLXvEWK4Xad1CstOdbuOIcXtBQ5P + iOwAj3wPIoOQ+TSZRPRpPV3utj9DyUyHA7d7Eey3rye+9h75b+Nj1nIbUA85+49UI7YDSV4t465I + 8DmVIdv4B0syuorikOEGEARhgcopCWWKCKLEuaoO13dBE005W+t1tjqgTG+fRNpEJNL+8eqC8xbV + Y3S701ErJZeOWroqq8fOq9VjXsRL7LgRHLVI6uaFA/gJP2S+7elyOVqJ0mjhn0C1GdGy1toMvILX + xxwcSSigCxfmmCszM+oXTiSZFJYmqK1DGEF2Kg3CWaEHRLECos5+P1OoGcJMu9rAKK/WmFswHc3A + xJFfOSsgD7PvEn1sviAYgJGN+CQ0htPl+gHB4Ha+SL1xHqRpU7JVmkQ8CCvm/xPQS/6Us6SHK0cX + uCc8pao9MsWWGIjMDNqGHPfxfDT7iqSRLV2AjBnmXW4i6bWNCvbcfKudg6ulFIFrMeed+tSF3B8R + ReKFanpQf0BUGDeJGpjYQTeibhRHAZl/N8vWPpGEErlwEZMldUilTqIxj9OX0THWurQAwaVHXCFw + ZQMWAC5dowNLFDRdwwtkWrvv1V0zZCHCsY8wzbR6iFiWgKGcoW13PLTDI0QF6xqL6sdWlgleVp8y + EnQ52F5+DzicCOVCrtPpfIGAFtvcVa52SFcR1iRSMzUM43YBVvWI60yVDVgzla7RTCU6zulcFo/1 + 1O/mwzg1E4k+mKZRDSm0k/XlbO11pWRTxbZHCvNoNp6CSbf1m7nWKSTEmXv2AYww91wzut1JoZaS + Swo1XSWF+sPFazvTjHlBEsRIs2dq1OGL50GYROEgiCMFQ2lGj2ZIgT0SO/wKXdFr8s4LzfTDKqum + gxVE488Qq3bTfwOW0/TIUs5SP26MhbAw8FmQVvhzbV5jidvbjPRn53bZHPcJwrqUG7ArnGs4kw35 + yIeVOMkv0Lj0sCxWN6O5ys4VYPSFn99Gz7IRv96/fV8/SAYCVbEKbpEKyhpzWKK7uqzBKMwZgNDL + CPygcG/ES6jJT2AUcsmp9g1Y5bOrL2xZ/nhqSE/6i6/ZqoCpwKauMX/OmGnwKtjqULRK6Ie4Mgk0 + Le99MBAJYSlHMms51m6P6pBXFvWW+mAcNNrMSiO705OCUxzvIr/BkPJqdYd2xlJwApsaX/O0dzr5 + DxC3vcYS1oFWBLctnq29VJtmUviHX4Xt9DP9jLt3mJooOYfFRYnLO1WsN9oFZinzPaSeeXZ6ZFLQ + nMEzPXxQ1Oty31Mka6250Bo5mB8VIAzJvsTJezn8WOr+7lBpEJEjWdH2GJDgjv7MQ3Gv9jQ522bx + 8CikZBl4ScN9Su97gKHZrQlHlQX1c3tf124qU+x9j7dArhG3O6bYC8mVFHu8qtJmLjExtZRhz/yw + glzjh6AO8YEfwlYtFR+MQkildahBB9WeqXJkcpY8/eid8Sa24sIDu6KxwIeJ0yj1TCWgFghGEjEI + x5dKVkFzTHN+UQjtxPBjyWx4o0s98ZV0vjnjSU/2Deeb2XcLKrLg60EEwUL7xwdaboOdN9awXwd+ + 0BSYMvmO3Vca2SztKZN3JAKQelDu1kEyO7HVuzKoU0+BtAS+d+y1IkDSz7hCtKgmLIQWedEB6F9+ + gbfZnSLNYz5P/CROjyzxArGFebJSjyBBbPCH7Xqvcxps7FOCFNGgy+7p8O0u076msO8geY8UaX5c + ZulDKa0eCRmkDWRH58Aje4TMnwimR3eZdCnliO08a9w/VKfusr2k7sqKC+Ub10qoKUfd8cSPy3hL + Cfjx3QXMXXf1mW53Up+l5JL6TFdJff74+lVUwfdPSmF47iH1R5KmycBnaaKwTap0rJZbQIDTaCWI + 9mT8CkKt/phNoopWre+pw/6HfjRGoMHwDgKvAtjfSp5VDhrzIGFlXX3H+xbN1bkQWcTD0KX/D9Ve + 0/tpE6KGcPcctlGTZbeUTt8E5WK9T1fya/rfu5RZ5RLEpjpg5RlwUgC2yFz3sUBFKB7SKfOwk6NJ + 0CAYwXPIJwmWj6YhvFbJBLVroIeLTSfMM88TkfsgLEx8PTrt9kCQEVZtDkviAJ1RRtJv2wbofDqQ + k7lOV0l5qJ1Ed4tJgcxReXpHCrwyIEJODrNtbNJtTmaquqtsJa5q3P4p+SwKSa29XF0N27V/MDKx + 7gKnmdV+K3IZnwPcyVuPVZ9ocy6YH7oH4+h2N9ocklymzRFXZXbb5adKdhsLI16mzXkecz/wk0EM + 0xY5jLclkt+sQP63yqGpgvvN0Tcv8BvBGZ4uZahOKg+CMD4k1bonhwBvN6Mzf51Uio6tldBnofUh + tkL9bV2pGtAVdMy2MEr0iHP8hxqwwz/iGq26W3PVOaUDS4kY+EmCWFNRuxv7Khs35WoUwldR2+p6 + esR1FGQD1ijQNVUfsWSsSbsvdJ4C1VY5rLzID6OEH/UqB5Wq/Du/G0eVu5dwUaRTp37Y+1nUoQA6 + L5QCHTLYXy+y+SQfWNt4AIyUvXwuO/Sa7RhUXbEupCGl7Fx4SdoiZUfc7payQ5LLKTviKq22N+/f + +tWUncRLKyk7fgQWjzfwY98PZcn3mU4uGE2w/BfmdBGCUTNTZBgrgqURhjpO4Od9/yqzUj7MQlwr + 7YNOCtzXLSFSJXkzvanJVN8jH8iyHWFGVovJu1JItBP3DqHSdR6OfDvY7/+zkVh1ZB2q2683eSm0 + 5nlxGDSE1qyXMAj61oub0d19WUpTgE5J6T3mp+7hJNUZN1ESEkwdp0IjY7zabRw4eELCYd+j0mhT + GgUOs9qoxDdwfrJtdtEOkELZjUx/zNYykoCCd3UUZbejuhhBl8iHzVphSEkv2XczVtIEU7gjZEJY + U1b+VJvKhV25WA8dFwiYTz5mhPVd4CN7atoHkbqrgy5SodAk8I4xftgiEkqPuAZCZQNWHJSuyXwL + CgTgaJSOxb9feFF61jNqTaAlkwPLhm3STflhkHoBJ90xJSvLnMmYgjUZ3WH1S76e3m1mByEVpT5h + A0yyxff7UpGN0d/MhYHwf8hM7eKFPxaZqTsMtpj7RuIVTpWhNVUm1jQ/HDI/jdVy5yw+xjL1Fsud + HnFd7rIBa7nTNdJv4b2Caob5Ir8j8lQ7ibj/TKHaHGkzMYlTngZHvVenl+8qBuWr0STsTfA/uAmE + Xqw2Aa+8CZRabHP0HwyHXMs721WexmGpnYwWd4XE9mq6WCHCj+7ezlTPR2Io3cP45L7EObemlJub + hjDCfrvwvdg9Wku3OxmMUnLpZKSrEk/49ecqmnCc2BBhPH4xjANUFAdxEPAwVhxRWM46FHBM+Vqv + IoXDaroq3isA4GxdrfcQjhMxPDBYNY/W87Y3xvISn0cJrzigt7VSX6CcpE3hXKuJ3eHIxnikzQGI + DfQuWwyq4sue6j1viktKxAxvs1J/0GGFIrDaIrwU0oRtNBBX0FO56s8W3wq7uP8tm97cCqCivIfz + RGdbwiQ41LPWBaVBpFLinWbP1l1HguNqgOE9c2USquJ1mmoPK3o3iFQ32ZVPN6FcHUp+yG3QZFKu + HzeXNFX++cB7xVhb3jn1kKuPXjdieenVVToI5utb6abH+W9hKcMq6tVexGfQ1x6EMoc08olmRJap + jKZtUxtBgNgSsOvD7PuYTv0mUU1aVjspuzoUNoka9E/PBaWOkentpGYcLLTxxfe1V7e7h1ioJ/0B + CO571tw2nx6PlUkbh+Vc2EMYAMn76Qnf5eL7dDL9Lzy6vF/BDQIhFydJf0ZuPfyWn4YKEGH7ptg0 + R5yOOWeDoYtDkwLpBTHCvkdk6mmF4NlI4JbAfZjzoUcTDSZYWkcHQQR3CjgfhtTpKdxwQM5qEtJE + LiYQwbZ0PHk682GAIOLrqgoaiH/BCMDNGvoDju5J62SnDuCgA+5R4nsyXHxfDONBAtqX6DNim+EI + txnVuoQl7hHTZDjE/f5+ButsPJ11ITYgsaK331FHuO1K+sFqkDbyw0DP/mG+mV1vVv0xHFBoKe0t + UXwvLmQO4OdBYklfY56nwDTg16SdC0w/4wqnoZqw8DTkRdLVVqMlq0HpzmYIWZ6ZAbmevqjeWzn+ + L0BGDwUJ6A3GKFnCk2C3dbKqQ7aNID3gFHCRPiBET5zBiYJdGK0L+e6qTTcJo+5g8n5gj8R4tFzu + LAUIWELvLYZ5XPQRMxAkE88CFA04Ovr/WcCBtGs4mocYmqKonXwYbgr+JuAQEGFxm/bYLBNONllE + k02Fe7F4e1o+tSunjuDei8kSMMnGio62ohrbS9KOUHESaLUPg0fGN+6CPPgRa7wOcqik3B7otgJi + n9cMK9x7m8HcWRR7wX5acge6ZuzVeKx2YpG2KEI6OIuIebKE54PH0hYlPOJ2txIeklwu4RFXFZLm + x2qucRwllRIe+CB+PIjSkKucx2KLU2yx2QTLseAdqB684CAbz0brW9hRTPZYNXB6EUr8yrtqVtDp + +ZD1R5PRsqEcJ/CYz0rUuwVdQhhxP/LLPmLVpTp24MDzY7s8xaTxNeVph/CW6lGrroal/i7B20vq + Ox72Eyu/R7yF2MJ093s4Q3TdCUyGxwKudpEqC90Xs5spjo7Kt94isNH62aMquNl/kVK99XhBn2Da + Gg37sIQSXB74SO06ctqwCkmEyqJXz05pD5Se0uk27FtIj63K/fUzrbAe7XJ/fZE2VgUoi28Jx+pc + prDJo8tMZbHdUtufe/1m+HnT/7y51jABoASATeYd9dYbYvL1fKYgiDwdeS7kgy6JisJWM6FRpecE + bGH2seXi5oyXJECfjPdsZbK0FrYr7hBUx6v9u3bm63Qr4X+46v/uvaZOVGfOylt3JfMyl3X72utA + 3Ty0oR9c+O8s8aDy/LYa+76l++qcCNQ5EaXs2AvbnRPyGddzQjVhnRPyIqnuy6kXyNRIHDNkW5hn + M/uAUPqCUW2F0s99/10s6E6wfIZJAncHrc51sMPQS4oyr2o32myI0oJHF7xI3hOugDXqqY6cGk+j + 8s33EwMHu+7LHJ6/BzaEijZHmOLKWsWa6RHXSLNswIoz07Wqv3KHnt/TpY05/Ga6Lv+xzMPQmtJf + 8YqIRPvcedo+jDHyo0lxeCgLUQUXH64H4blxM3TcjllGpz9ZUPtC6Qj3wS9FB9s+Tskq9ksesO27 + l8/WK0TkKqMhGSEpxGjtHj92fHjr/oNBP2tAf94CYLVNRbp0N3jV1uQqHnIu31WN2AW88iptVy8/ + v1SEXvDPX85/+z/yV71qX66vgt4V/kdU7caSwytkYlQ2V9P/t5nC5mUUhmpfy+6E/q3rPmBRsX+M + iBnzwPYct4PQfrf+bHqD+tw+voMuKwt+NNNyF3AYndTjMI/yiF998L2gBfmSuN2NfIkkl8mXxFWZ + R/y5Ak/B0jRNKuRLaeQlwSCN05BvB6eYzED6n5vlUPl017ejtfbmwuNLTIYa3aHf9vzLmGl23brS + Ss24+/bN+VDWMBa0P5qvYIqMu5PNmFQvM/EKBYusUswRE/HIGxzUjx8vT6huenRzA0+djhGGHQsp + szVln+IuuFlNr6fwb9Oq752e/apzhf0g8vdBVG/yGaUpFSgsBeHG12wfkoi6eOUe3hHxGE/EKfyI + fkoFmMx4C8Q3ut0RMFlIrgAm41UZLvrwplpDwMo1BLD2A56mXjwIQi+KpUEwmi1vR8P15mozE4i5 + swki/6oBmd4R1DnNNvrrjUDTxcf66jEZJZpd13BJtGY5YynjGOmpQL9Nx9ArbNFm5Q6TuAkLB4Ht + fJ5URKnDzi5oCBohdawuGdGqxXCM5bkrLKutL2GIo7ghBGb1TW9mdZ/jpsQpUYL++Xg+2CkWVuta + 9xU3s1IDchMrN1Quhq9rqHda22U5gwZ9o0DUiIEtpG/s5UlfTJsh7J792QKW2PS/mQii6YkDK9f4 + 9PmJTZWOu2d5XurOECM57NGzEdKT90cTIn9DDDe0zLB43phVZt4Orildb+Glcg+l5BzX0XTeVPGb + 4t31X99t/9wvk/aHErgVml4YaU3vC9y6bu/NTsh+ND+fu/cq8Vhcfnof7ZEHHqv5cPscI6zIcONv + wnYFCfoZ5ww32YSd4UYXm8nNXl8M1QqdVK0Pu5q7aAMrOZMw/FFmGYtCqaBIebqtA0szEW5erH4Y + hrrIfVfl4Qc7VtuK2OH3SdJmWT+ty0OtX5/FtaDcw/r3nWfrb4vVlz0/LU8o07iY/WryyCXUQYjH + vajsAUTuyAanHXvnu/6A+i/GCh57L2bt8on1M86OLtmE7eeii1WvvFG6ZW6pn9+8f//OwNG0t9ui + EQwdhUHUWTWYXRDoUM3lPK+6wYX7oUnJHdd3PRwcyI4807B4+nAYj4i2UIQS7NMsbZd29Hj+w718 + B2oH8SXfup+2cfmJ2x351oXkCt86XpU8SZevKma/x9O0yrfuIeyYP4CfaZBIt985cfah0YQ5Odpn + JjmS8kkHtnzKUsyyq0NBr0nwBGu5ZHE2SHooRsYELD34s3YLCnyyUWEqVnHWRFBS+wIHWq/XSORy + 7HKFZ/75t4vCY5jDICtjjhiKZlgiB8vM/uqw/jDkMZnmaMjmOC+/CuXz63S1waIOOGdgLmiXX+yJ + fFAWeJK3SPLVfZUeTHIztrBOOyNjfFzqO+7D/C9v35PVxn0sfjR/XU+uCrxra5JVLae5y4M7Ci0J + W0CX7u9NjAEbkU7n5HFb85YecU7mpAbsXE5xraptCYJ3jN4a+wVuHzCQYFHM7i09q+5mXc61WjI+ + PDM7gKqYHzEJgkt8SSuhltD+1R79wPfp5K7rSFtJBH4tJcGWIwBPNNzJNsHdwJzt0gW8QkWp1aga + HFO7HtvdeTVhuWRygd/cwWTpdkcmFyG5wuSCVyWY7MffKgc8S2NWLgN5Dsd7mKQDHsZpKJPP/rhd + gaBvS3me/3ljeBpUnvnI1doRljBjYYEQcua3tRDlM+74INRECR5EXKSpcHenmGzfvT79jEd6Bt0T + oIW398tNjpXQstB4VvbG4bNiM+JRKJnmCIzTcH8OsS8T+J5fFUaNo3KQRJRDvsyWAjBmiMwd0BmL + +AMpl1UvTclVJqeDxO3e9pKAlTnKFkKxgu9ztWmrzoS4S+ADWPVP7cBTTVHPJ2UCPpbjvy0NL09J + 3VvMFzC14VMckrh8YKy4C6AIFvGUqSmzoNlyAIpDyohU0N4IXEfLOVXysGZ+iEMvkuZ42AbJj253 + NMfDGiQ/ukpb9Nv3n3jFHI9ZWDXHeeQHPBrgfizSIHFbf7tafAOLUdO535NVTqf32+mcV6zxq82k + P8/GX+yTNg0aKckSMF7SoHyEl/jka8PYPIqbCiQtqUUY+zsWl0APq+Fr5nsNoH7Mi0LQcMskZvie + NzQ6tiDWaMmHzItDP91TkAHXnvpY/lkOpssRG91N5wsYMLiR8F7hq1X5mr0I5nirwcvx7LOo5W2S + u9IXfvt+sLPLUqSAD9CmjSU1LdXqlqTKjmrXiJwtpillDK9lQUnPh9GFAQ7hcoEKBx7lo6+ZlGeE + A1GEvAj7QXGZpucU8wA2cGl1s4AFPtrAeWR/ghMz8eDX8Zgvhch3+Ywte7hUtbckZaHMsiY26cro + t3Fw4DgaUuwBbyMIZ42pw26ZbC09KIxi32pxCk+G8e1adBK2hThu6GTNJ3HwyB6qX6SBxuIXrjm9 + R7qpN+6PNypznRWx4Z5rjm15f24tjZvScoQSyX5Z366yhYBROkx8GFICy+n+BKzSsXZQP7oAw1QK + hcTcPj1/yU6Zd+wFbQxA/ZCjBVg0YpqA+qpEiPy+ljbgErasO/QkZd9FXQlM5UwUfH+CW3p4n6jF + iTiXlcMlt5F8TAzC4YnfESfN2OxRV6IPIIjrBgWGW0A1y0UdRpBj9D+W3nj5rfZVmNPE2hcI2mUy + RaAXFf9olLzN4SFz2C+8pEUeK93uqEELyRUNGq/KgNaH3+OKBu2jy76kQUfIZ8wGEUujQHInvTc0 + keBv/RxDHhnheIKhP8WXEFoJxmYE0AZ8L5hOIkxzvlqyRBHUoK7iw535OluKjGaUBH84VpGx2Sau + 6OLUHC2uerTshDWo5cz3mZ+EFXqk5SobihWlOlApJ7ZcdZiK2aBW+zEWkyZNin9dJA49aA06MfO5 + B9ZLVNIw1Qqxujzof52OrMGxSSzTZNeg9GpGYGBngMKZY6mIuE3IbHT8jgWspfVFM+n2NuWflON3 + YmLAx4bZsh5N5znlwHyBd/0yy1RhEs5arUzylJRJmduAutNKJ8cbXTGGBN+BkNxpm8sEzpd2dole + O6kvsBZivQ/vG2PwkK0MH7EGvkNn1o79ljJWzPFxdIc5PNistAVUbCo/gzVB6r5JK7BGhM0qVEIB + ryoYGfaCGe0kFysAG9yvfOPS9jKoffO7DCvap44Ow868O6lFgNKqxl8/04oCxa7x1xfpnBpf38rE + rbPbvP9msVn13xEA1AY979kqP8ZT4O64/y6bQ28+LnBbWRz1oM8CifF+vr5F1VSnc90XQDKCBvtr + dtQ/u135GhWG8xQMcJAATYuUWvgddbs9MZ2LuqTlaA19K+BWfV9GyM2qnlE+XuRC9xHhf/kaV9OF + eBNhHRpZr9tR/j1pZF2NVjD8K2EpO2e2/ihOkX1TVA9OK/I9nZj4Mjj20pYluPSMc2KibMJOTKSL + B4bKPy3G/nII/w2WFZYf/BvMd1CO76tpjLJLWMzr++kPMF/aBdUfkeLrqQbM1dbhRRTZqPv0e4yj + WhAaBoxFSXjs+e3wXdRDzpURqhG7NEJelei/y5wOUFwh3Ls0kiiUTn3J/F7zX4SAocjVxWpuShBx + weJqYZLvi+z1uMj+e2zV8FCRpNQe2cL3Iz822kTl/A4PueLTqX3rgKUR+iUKlArOpvPHCWLppy4a + RE7z9XS9ySiPsHkgWgBb7d/I1uNNs8P7b3Cjb3W60SOuh5tswDrb6Bot3HAovNWz7CvWbCGsiVbL + tHpvnk7N9/duszvhcINNIaHFLCtw4A9Zo5q079JuL/tHkIt4KSxEUnsO7VKgqurW8ImRO0Ik4B4g + d8/6cuOQfGroe/uJbd5TOqMAScg+dVlcB+xOh7SyfTFwyhwbjbugvgJxtFaFKOxrR/kYnXJ+RWmT + qIG+KjyjcAauUDNGlOOb1WKzbLuuPUbfDelgJovvqBVpztT9rCWulEPk0vKOPd5KOVQPuSqHuhFL + OVRX6VjBYzJbocmUbb6AhIXcrkQFrc7ExyIlLCQ0WArKVtLlt2nQy/E/QRCxwA8OI0TekVV/aFp+ + SFhqRDDfFwmCiFOyumusu21MKGRUHD7PbkY1ACOylk0PY6t+8oTHCQ1f84fY6sFoKWi3h2wvQU8q + lTAiAMXKC5hiqome+5/HAfPTnUPmTDrZRa6wr3OFWXwKhmLSzmlDzzg7bWQTttOGLkqn5G/n798P + Jay5hEovSpEspXbHra9XS/+X4BdeddPITqDSy4P0cREfd0kVk+X1BW6VBPnXBj7+f0X7Wuj+kItP + p+IfsfJ5eT4Un18tgT2mgdoLNIgifwNqAWtHLCqfcd0LVBPWXiAvSj4QE9xNqSGFjnK9md8YfzBl + ClpRtGf3RedSAxIrHS0UOLTt/HfyGVcNTTVhKWjyooHjX2aeMbe3nTeY7WBVBWwxvUPZmPVuFYQh + HW2mzmNJHBBYnA53t5v+fkjqfr7MxhjVO7Ry/sE1EYGAt5NLeT8V5ufgNAL53Ppk1e/TsukfEGLu + KvLrq6ykIPHdq/DodsesJCG5kpWEVyWy5vm5/7KSlhSmXjkt6Tnzg5Qn3gB/JkwGCGRk+B6PGzgx + ++f+oH+7uRvNxb8wgPb6eLyYTfsfmJ+9P5VZRhfLpX9VW4BPPmqq1qz6qJ/l2Tzf9F8L23N0VALK + 435DjlAahinW6JVShBzcv3b9vp2a3tRAJZNe+/bK5foYx2glsZE7pCSVN2XkszhMkO7pohK5Off7 + VzB7BlinrzVkmdxufAiY7l8G/W+30/EtgX4aBJG3mZVFDeK+Zdm8udO0kinMajSTnagDAqHybtFh + M97cGQfGOes/gxnETinpHf/5cnmkuqCzq3tiahewAam3JRK1exPuiL+lQ76VA4vVDo0rhar57WvW + ZXCfTAhpx1HYRrDDsd6FcZ6qRO6/C6KOVoW86hnXNG7VhJXFLS8WwHrDMhesqV7eT5fLLBvOpl8y + Uy/XolEvD1jUZfKPUF87RA6TIx+IXJY/Xl6wMHQ/u+l2p7NbSi6d3XSVzu6zT5flCnrMGbYr6AP+ + 4nnIU2RSRIYUBZCDftDF8nY6E+USX2GfzjdLMXToxRKn9Nk83xslx0RSZSn3WQVddhe0rF1T3ySw + ctjWgcpGPGwqplPCep/PL4YyEVbUDRngtydisuT9K7A1++/yZeIv+8/gZ+odiQPoMh8xuhLLK+So + 1gfYaYmRCHaKy8tTNuivc+kozqm0OlPiNd4AnLSwgyDtrjmz1aeS8rWXWQDxgO717vI88VH6aDbL + cAfCRKb+eLmK+xMEJMWdEiePOhy9IEx7cqDMHakRo3VraZejjLpdzbFMqvHRx8PLLk4yLjYtMRt2 + i6qxE0OWxKkUkbYUofYmInn9+MFLffdqB7rdaW+Skkt7E12lven84nVSNiuCEKGWTHSP8MUwCdMk + HiRRrGodfO+yYJ3IhFY6FCEUrVGI3el8lSWV3cl4bowJnUp72G44BGljzS7YeTyubF7C9SgwHJqL + ikHVdpKqdzAX2NjStouIs7saIQTrvq+HTyr19jD38Hup7YCHYfyDAG33b2NH4OOhASQOQ4LY8TS5 + I5smczvvchoTFlKDtIFEd1azYx+alQPa2G0acHNXJtk5mI0YD74BU6wWGrsuFAnbj1Uj2t6w4BJO + t2H1t/vIu4XtNiC4DBXqOlfaJzvpXyf0M4lPoNKH9gYLvMSCFCBAs/3rXgNf0ln4bRxudLsjnYVf + 43Cjq/Jg/O08qNBZeOWDEf1tXhwl4YCh7SLNq8tiCxfK6MUnHIqPF+fKJYNVal/R3ltlQwRjIxec + ql6j2ys3r6miKhtvVjn6Y8C6kpVdSBoA5k/WD/+GsypXR+9iGVSOXplkjWaaiad33lAxGDYCeUS+ + lyjPlyHfkgqvXCvXYyUojwa5xVFeEVt7moPcpgpHF7kNUnnoRy5StYpQxtezdIEg4k3OxFph6y3C + ErC+dwjrPfZk7OFK0iQWvh+1QiKsLzHsAMbQXUojcXVA+r+odBTjgoddu43Xo423/I2dhsH54e2R + FlcpDcMQ8DQKlZdUtHG1+N4/++VVP58v2rxWT+4Lln+xvIk4DUx7KQdx0+1KTCqw/bdtu05vtr+0 + JlMcd8zasWpXXbqHmKZlhbttRVTb/rQWUu6NUkREqcAff//gBZG7IkK3OykiUnJJEaGrEo/g078q + iF4+x1RpUxHxXzwPQPnibBAkiEIpFRHJmfsp+5cmyLqcf6/CeOk8FuN0EfkyDc495ns88VnlOJ1N + l0ZZsY0NkKQNh6gtrIDvEuA9oxv7MI5S1siQVS+nSKyx5CTM2yWnp8Zvnn1HFimrEBG/avYVVhQc + rOhDHFIaz+Wn04vXuVx0SNFElxVBa67I9kSv5B8Voweeu2jyaHO2jr/XAAIY9c//pYCYpnPBhTfJ + tF+fkAFOMCvxLlc7QyZBBXAWMArMid9P1ze+t+zhZFNndQDmtTirI7+wGjF6hxEkyrAtuud+ah6Y + oBezItog6ps3872ycLtiXobFSCUnZ//43JpzK+CcTEPQtGb3Fm9zOSmshW834DFVky2n2RgsUSzG + QJDVYkHBlG08zup4vbyAskuW2WoKfygnv4E4/e/roi8u5wb3pBc6G6ru6Rg2BXWcyZgP9AUdSk1N + KU2lD+nW9X1qw73HZX5ulbX88O58MCvEea9KORC1l3ZEGM9g6FDhUZfjHXpUTFzeYvfLIgq4wo8I + Q68d+Lx6xBU9QjZggUfQNcm3OYaH7sjVY4Z9m64bMgXsQ6wyMv8HGtxkynCPEjfUcD6WR00LEiFl + rK5bgUo8VGVUZSasAakDN7MNTgQM++biFRbDT8PJYr5wzX9Rcz5Ucz7y/WMvbDXn6RHXOS8bsOY8 + XaM5P9lcTRebvKd+Gs/gnDayjA9No38CieYq7zkgROKPF17aApGYbneLMJLkcoRRXCX75ePntxX+ + gCDmvBJh5GHK/WDAI08Yb4IeqNA33lJwXkbF7FLT6XyerfQQDfoYcp+v8S8Ia4XpKNMVAdygFpyt + UeEf9DG5Bc7qgnEbsUNLeLEN2VKD/i2si1sFtyMehbmCCQIihj+fws3KDftxfVPNz9j2AqWUDd5E + R8T8BN03FdC2t6U8BithI/Wbsg5tcfunRzb2sPCPqvyrOhRghEJphn2T8no/xcxomBc9XBI6iBt7 + gTP0Rl3ADIdLuTrsQXVS7TtKcnzcsnbCx9y6phx7s4+kh9KvO0PxDUPKAn3bGhhXHSPx/83FQXL+ + wY9bHCR0u9NBIiWXDhK6SgfJu8vzwK+E5FKsXDVPkuTFkIXcCweg8kSyGPGdWYD028UbuTP/sZyB + +HGzN0wbs3ZQzN/C0R6EfjWL7ikx1IQpi8TEoF8jliaSr4YAArPv5kawym72WJARITns5xR4CurT + oXapWjeJUn9Zyo6Z10r9pUdc1V/ZgKX+0jVaAka+LFjC8175d0MGqMNJErBDTLwDDoRWhpYa51TX + PiO4TtISsI6eca59lk3Ytc90sX6sC5OjeFpQIclBfgozXo4k97TBxlrba6yNucaq1hrTxppBm2A7 + MaL02IuKx3Q52t1mBrv7YnlfvLjObCWQP2Y0iwafh8B++7AhqpFiMkcFVvk/h6ctslToAcc8FSm9 + kqlC12Vx2IcL28QKAg5LOAorySpBFHlBMIAfXMWI3mMOH4whAiQI+i2YV7dGudhpfnt1P4JjKM/v + l9PpoM+8L69G/d/9fj6/+HReKL4GHz2FGN4EV+qgnc+gv9+Go2XvrFy1JG4DISp0KS8r+abOrr6o + hbwskIsVfCxq2XjB1Naxgd4f8F95AiKks0ij9nxOhSIGXK+78qxd2AG58B2xp9u4Nf8kYMqEaiwm + y+/+Ts/Zw+ACbzmkOSWbnV1A0+6qLd3utIil5NISpququvOS8VNrCTMvSIK4DDsfgnIbxzwF7TZO + fCZ3y2qZYJj2n62WYXqkiW8EnOAz7l0e1Rmt1oqqWJInYvKTKTxe4Lii6TzN14KFGPaI8ep+iZtn + huj12Ul/TmGQqdhaxnQgXSxzxl9SyNHY3l8jSvFs2r9kTPwJq1NhMKqglbkuSgU5oy1VqU3IiTuq + UhsTqeqrUvehj07CJKoSUT/J+tZahw0OphhcNaR6t8QvZzJT29aInzT4c3wwv7zIqyt0hRlsTV3H + qSp6QjnzlM1mbJs109ieuMasfqA53KOVrgt6Ij/uySEyfDju4+x+SvGIKuExN0+X6F5e/k6DJJ6F + LWyMJJRiJxeXi5L+/jN176AfHieXffrnB3nxqNqTbfxUP7wzzTl8naQS7g10u0OCE+5EB4TMPwxv + 94nXSrtj8Dp9mc7qpbU8qUyltME1v2hdNNuXEUnxVrrIQ076nVIkCXyR8dqSBf5JFHs74rh04Pnh + mmmexV56zNqgselnnPHCZRM2XDhdJAUTDDwe+gb4kNxjpjAFpibMQ2/rX/vZ+zf8dZ+/qQBFSooI + FrMAZv1RjxoUhnYSe4Sgz5Jicxithmo/v4LhpBzqcv3YAD8Yam0GStokG9clWP0AUHJDQlCSIKaA + HqtfHHEqdkpp1ykJgFjBbNrvJVPCkaqv5d9R1Pcjcy20D8wn7h0D8HT7VDYm8c438gLyZ9IsXZo7 + wu4vjRaBenhfcCdenis1L9QJytNhDW2LIXGuQJS8VtRueLsriJJXR+2GV2Uq9cXLKrVbyHiVHNmL + E4+lA/zJOVNVXRp4AZZWBf9qgOm++fTKwq6UJsztYrbI5v+9v1Ncyperqyp/G+1xIL6+ZIo15U+n + 3Ee48joLdRtCl26uLlGARby59Mtsz06ztjHczmHxmsBtpTqoxqIqKd8sXcJRrL5QecROCiekzHMW + 9a3GQ/K8EmnYmBjdILj4YCelnAHrNeFaseGeyMxo1d2b2eJK3KBmzefNki17OAkLtCMW/SyofeKL + VTspnmsD1let+WGkVJZnv1u4aG/MvS7yTsUqUXt7u7W29e3UlqkhfX3+krFjL2oX2NJPOdNV6GZs + xgp1mbbRfH3PVKAL3SYFf69NE9z7eHquqHQv4Zne8vZWUFSwCFTDn2feH0CC/Rjc2lFCCYzahs8X + k+nmTsAp3YIhtAANpdY1sK2zaVxRBxf53YIYLXerhYactCLn+3QyEiDrbSSlfhRbb2lrqqPV1xbK + eMq9pNyt22zkiormefaAy3DEnoMdsDT1tJldRzMmSWJFD5sAthorTiLejNb1+z+c3pgj4nZlvDBD + GTOKEY3pOyYrufaJB0yhtxfiNPFo/ett4YOH/SDabgqJEOL2CejY8TDcYXWVm6qsGdeGIra1Idt2 + 7KjVMJUlUqLuocKCgNkdKHYbYcOW7xRFSVj+6qMV6Fpwu2sXMWEhkP4feLWhOF6FnwDOnl9hEuXj + 0cQN5w/UgbTSHzgwb+9nN7N7QRTiopHsI6Y+L/N/pRWNGmNHeZE8ii0W8y+7uHF2SbOQa0g5+qXQ + jg4UH1OpnKFUtYSh2S7gB5dsYVKqGK7TbUmp7hxULtK2J1EFntjsDhqaLkiRlPJPpRvnFyxsAQ5H + t7tl3JLkcsatuEqK/qez18yrpNwi2nwl5TZBT0o4SIJA+5kbk25X0EI16VbtWXaqbdCYasvDyPfS + SjT9CaTankv2ZL0+4KxUz+pOGSCW//yniOu+eSNLtvMTgSRpAEmORxsEkSwjLOPBK2oM3jJYavhR + f7/4pCsLwDCSzoWfIYnoITiBDmFjfwLFrWojiAmD4gLEnbVINFQPuOFQKOllJAp5nTaE0/MPdYmG + VTCKIedJkLIB/IjimkTD+20phmqj+M8K2h4Pa3J9pO1SXKtdm0lgo0ypNf6kNotekZWI7Go6uzQp + 2Jzepe2qhfUz7mxO1ESJzUlclL7vi3NQaMfZ0vJhmSXC+fSG3KHjxQ0aIgsEdl6tBZGNZpNbLX1W + Q+NErQsaJy5pnCJCcYd2Db/NeGFbPLWIFM2Jzw9Im70v8bXMjWweu0FDHWrxygfoTPuk2vNUlzQE + vn+MGOBtahroGeeiBtmEXdVAF2liwhS4nV4hIKk1r4zL57dXviVMlDckki7HFQXZkYHrsYrZWnC1 + PpUKN+PxrooXQk8VqTHmjtZEt7sWqaHkapEaXJUq8/vzSogx9HhYVpifszDgKR9gqZpCVP40XcZL + pOuwUhyjgsG92EnNDC9xWIpnfxxTS5IyLwkr4I/F/ldCnfdcBHV/Lu8JxMi8KPXAymnMgqXhbJsF + G+9qrvdJ47rVljrsmAqDcupTFMk82CIPVR4rYGIojRNzXKXOKWOmnxbLZKnpXrLvdnsXqyUPlj2c + 6NrSgK1VprGSO7TtQDn5L7bkav6IHMm9JOEmkX2D33CRyORjGJYR/OeeHmhbw72jbwTw3PQBtnW1 + Eaz/UJ9iVTNySME7zKfYOe9NlCiYKvWJBqWh1Viou/2XhycEHWacqtNSFbB5SYu6F7rdsXhNSK6U + ruFVCbL8scKMgtCGSblubcjjiCXxAH5ETNZ0ay+LrcpUcu4byggQpsFQj6ws/qBGii5kg96Pl70f + 2/qJ3LinS5HZMiX30Woxm+FXR4A45RXKrq/hNjhh7nuX/7z0ddG354fOKBPbtxgmtxgrFGR2YZXl + WIwJHRMK9epO3zUyYtLLRR2y2wMiVOwZ2jhcoT8oK71byq0oLgIn+NexAdbZ7q26SGrsOCVcbWu+ + hDzyedymLlc94Ah7JKVXgI/oOm1vb05PeV1drlfGPnoeR6mf+AP4wf2wzl1m8mWtFtfTmap2vYMJ + K8qgYTywy/dqp7pbQVe+/WW8Zwl6jrQhGBi4C2k7ujX9TAvkhbREt6YvaifFWiAQv7SdFNOb4b8s + EZgu7/OAXBOhJxbr2/P38KHHqJfoCr71Nh4X91T4fVvYDtAqSBIkQOs3PPUWq5vRfPrfNqfNHkBs + LVwgT5vk/Ck4VMRqI839Di/n9zO3iKYrLV9I2eBvP3icuyufdLvTDi0ll/ZnuiqLrj+digJqS/tk + QVpKB09B+2QR48mAs9gLpPZ5pvD+cQ/GzM8RbEoqX0/myb/vPzt7039/ZOSDmwjS420iML0Gz9aA + SBROyja64KsDw358W3lUepMNDUE8cTEfMU5m/bvVki1VOTVcDqup6BangXyfWoYQ2HebMMJZwOE0 + SyqUglLsL5WOSzAPnFjlUgOjzcAreW4sACazTX3C2K9je4HiRljyLbLKXS+JTHaJ7P3886cn1o8G + C/eY35MvL3aNulFy0rkdaTXqHz0k0t2BswMWQ7XrpdXj7HjpLM3pian9+9aQdpF1xKM0sVK+QNPJ + VovJ9C5bKQ2l+XDbEqQPNdAtixL/2OPtNE56xlnjlE3YGiddpLNtPBkHMkf/9Zv+LSza3hj2j9V0 + 3hN/Ik0zYkLTBI0t1RpbQx7nDpWPcrHRTG7tUPUS5ll5c7MFDHGjurglbxoUTyEoX8LMmImyH1gy + i8l9f7LBHJAGiY2ppTIhTAzLZIoqRDv99TFSXii6p7CI6p0sbQLEYsXdjmbX/avVdHKTkbOnPL5u + r9Y2zzNkhKxk9FGanG1TH8PQo6ZHs7Eqhegi57CF1K0ui0gleyRvGELwtSvzUQ+5pnvoRqx8D3WV + NpDl1xu5fyzvV5uvtvr/bJmt8mPBvnHcv1hcZat1//NqegefAKzamvupODxkccCSEG4B4YJCPPQS + tQMdbjOqz5L6lNULGufNaEZci4XghhDI1X1/vBFQwHr5eySGD6KhfCeRWA4y8UDPCS1msskcjeZa + 12aXmJsssYfwB3lIU7FfEV3JaLkcwSC6bnZpQgtc7OVzscYmYocRHRg5gvf2ukm7LTQEqkesmcdu + m45a1LFa1AF7Gx6zlqCU6iHXRa0bsRa1ukpLWZP3KkxEeeT2yn8Y9G83YPf3z9hvF2/CEGakmPt2 + Q5ivBf/zlJkgOqw7UF81oSr2Dz5vkWJCt7tVsZPkchW7uCqTME9flQnBWJqWnMpB9OK5jynAA595 + XrQ9I3syA+nf/hKOYs/nnmc4inU2WxxEx8xvs0b1M65qu2rCUtvlRfpAt+YHUouz9qIpT9BXcAGy + EgQROf/agKzcZVNU24caTLUonm1TLJZQPGee3YzqisWoEcdzcY/dBF9dnAEfs6mvNeDJoqbcd6+A + /LZalkcyauUkjlTaGyz8NmlveLtj2puQXEl7w6sSm/30cyWQH/pYh1lKe4MlHnneAJZ6jFnjwpUK + 7czuRX2ijffwbrRmyyH811/2b6f5eoF0NONsbR/Kyq+yvh3B/oRlEvjseKE9iPgA/C7xN04Hos5Q + XEVCqOtVlunZgs4tfZxAh1Sr7/iJ5XpbZ7MFegygy9MZ7DEqGPcKPv9ksQGtYJhjH0GvXGWjL4gB + MZqu5HYrXqsuVY8OsVLmXNzgSkzDuECaNwTtHigbVaSEVmm4bzHnIg2rLbQs1LE6WpwJ74Jf3vEt + va1nYuaeDRpSQElazegTY3wL62CEio3xodbq+5VdwbwJp5KBquonFel27yueYBbB99sxKr2/zOzv + 4R5RkBD45C6WqE34qFokLdEfOJk9Oz70D5K6HUKB8gaNumAxYqM79BLn6+ndprZyYIfzLCQozax0 + rLeTA1M1Kr3x3WJSICu3FUY5QnXrw+VUbCdgC3+KXyOlbvU4HdUHiNv6CQ+QexBv9U9fQN6jE8Hf + Pnj7lltzSo5wPqecXvVwqU1Itk+gXlHvSR6Vin4advY1Ek79Go27ENelu8gPUmv1Omn/SnGnDNwP + F4HvuSvudLuT4i4llxR3uirZ+T5e+pUK7yDAQ8XU3PmL53HMUu4N4jgKPKm5f7zLfV8lEjxx38EW + tdxWAj2/SQlksR+lfvrv3rmqO0Slq4ipw3CwJSpIIyVZ8UGLG+/gH2D02yTiOfwbpws8oCNUYklJ + wNMcoxBL+HaYDIgFjqDdSY1BFIULz/XVbDH+Av80hVwvVl/yE7t+BOvHV6j2oTEukFvwtJflHdnN + SljusK+KSaEJ6gKK7HuxL3FN4JPCLFe1DE1qWyPk9sEq30MoUoxIJxvdF5KIOxfVmQP0FBSQtM4u + Ep+nQbnnk9WmZrNodLIwLpm16AMiXD3C2EutbWJ+xodzteyLuqe2PZ2h6wfu2x7d7pqdi5Krublw + lba931+eJ5VdL8HEk3JiLpwVjA9iljBflun9rpzlhcNMJ3iKhT7NMdO9wnNz+va0/+xyuR6eTkbD + t+N5ODwtH49HlqarQS2tRYxyTDhk7bvXc1Xbbf5LuTf/frVMKi4H0aEGp0BjfpUP6yRJKlijmy1j + Um/JNxNuJGBr86iJhrTywiWDO90htfczfb4ezlO9ESfBTwQWGjKxyxcTo5CkCxjKruj2ZmZiql6V + wXTaAHG2453Wcnh4Y4lHEeGEXX54/ytMLJwWyDt75NYHYfv4vj3GMFGnoC7hkXCI5ZNQEonTmnY+ + 9hPQKoVlkcHsOoARHQURgOF9jrMoowB/B2IJ4fK/0/l4j0yOwrLohq+dR0msHTuz/VNLoqISwvO9 + lgiyxUPOmWmqETs1TV6VXASjGTOYCEazCQ2UWRqx5S/wtIBwSOOYIs9pTKWeSGyPw04K7kFbixd5 + lJkAWxamegwJkRUl57eb1pthR046L/VITkOvBF3CsECzxNyJ8a3VRpHmcgjWyS5vTYtSjB8MHRgk + tNmPtdd9702SkgPtidoBBH9bwT8IjS6ieo3fLsD4d9fZ6XYnnV1KLunsdJX2jfeX/6zSP1d09vjF + 8yQBO8kbJEmcKOwpUW+L73ZjAU+9WsG0Wd7CJ+iD9PdSW36ff/OrATrtGIdXx7zyq+kMR7FOgU6i + SlRt8P6ywHvgUYyQt/tF1swCC7BZgqQSWjv9fN6kd7MIRsUSd3k5MKEoLJE1YbRVdreYZLMqmEZg + x87ewht/PB809rbzCJ01plr6Nmt+O1cB7JSgw+Bv88z6IhzLs5p64Uc+Z2n0797HDA6/lTIeYJXT + ahrm36Zr2JOf4XQDVW+G1ZtwE3wyE+eqbrjlREPoDvmBCxsF7ZYBOaHer8dsORB118qOwelps+Zl + upgUq7IL/U5kRg767z/9xgYipEcceMrbIP6s0KcV+u/NavFtfdvD1amje8geLVRriURe/41X6LVx + 9xsFQSlCZQxOW+unjahtMb1944TNL/n0bbuuY4UGKxS5IpWbzTWJhsMZocBfd62ilkq4rMR030a2 + MGHYO4rrlIg8lm7Lq4JnpoIiq29zJLoWT3TB8Lvj6a2xosgvbRH1x2sboTinwsb13R424UkWYkWx + 0Jxf7V2IxQMCH7zNMGbwM4BB/xDDGzQkSqSvChqIf0HPRJEYfLrRHG+C+QBnJry5ou3Y5EMD3be4 + qV1HAsbTIpVTQU3t4wIIJX4sCyL3Umu63RE7VkiuIMfiVVLdP7//WHG3+2EaVWBjYVYHYTSAjyny + WLclLf9nBfKrMNKtE+keGki6Nf2ylYMXgc2fMjdM6ZNyCtnp5eeLwqf57RarfaFxxBJSt9RukXej + 8e10nq3uT0yWY+3S+byeon2E8Uy1lGWJcH7nB/CXt2/Oh9cbBVZiFvVlgnhLNKy+U+/z5/dac0S3 + Ts+RQ7BSLtZFKm2kSOrCNun94nZXkrqwJr1fXJUkdS9fV8xceLekkt7PGKySMBwwjE1xGZy6MPX8 + q81EqueKdu4qq1q25dIde92kjaEgL4pTr0pn3tW6aagFE9H7oobLFIlVZDVGaKXDOn5vJTXCnJRB + XlodRft6rHKaP3grDZqay5nA9lpdj5A4fFX/CXr4YQvitzAVsZyEFfq+aLnd4dtp4VxbYc2GEQs9 + yRyjMiVavl/PO7C0zPnh7ZFqgl5/DUdZi+2AbnfaDqTk0nZAVyVKyfmlH72sbAhpXNoQ4hfPMRcJ + YUp8MIgkbve5gRVmhTMJj+4Z9y6PqqCIJ2BsCMN/KjCoxoQhc7HM/eiUECCq+HWC896PGpHzxNNX + WyBqm8i2d0DUNkWR0zBMcYsp7U4OaGNmAwhS5tLA/qc9Suw9gc/Uo4mmNigvDQICDCTSmFUTF1kr + d0kX3Mt1Erbzev9AEMG/KD99z/tJKN7Vvq7ZFcLoTXLM2uDD6WdcK3NVE1ZhrryoaDR1cGh5O5r3 + 8PWyFSomVMNuVP0V4rB+PvAjWX57wFn5FPDG1HdJ9XdJ0mMvaFcyLZ9x/i6yCfu70MUt5Zjlj2WK + EhQWLPrhJdFq/GKqBHz5wWOeu6lPtzvpK1JySV+hq9J8OatUArKUI3uhqa3wF0Pfi7zYH8CPlPHt + pv7VDOTXmPpwANyupvPheCGSqb7CYYvgNRZWGJhKPx+DlK5WhveO3CbTdhBZGAVxdDSM2E7b+nB3 + YxfWecxUMoufhMeIHdIilYUecU1kkQ1YaSx0jab5KlvLzRuHEqM8/WeTbLYeqUP4qP9sKX02Rz19 + j3VL/wKFmMktKJWSW0IJAsojy45Sx/J++PAHm5tRQj5jW4vabuRVkFX2kuLUN+G3fX2BBxAdhHJ+ + F/mWW4S7w6YmqeRChr7AgTfJtrQzKDwF0LG9Gz3YoNaHNUuFHtxmZJ4UwtWPzBgqtk8WWwoSrufW + WzDVF5z9dv5e77v1cty4hrqgAIh9WYDkhS0oAOh2xwIkIblSgIRXtX/Dq7g3AlFBZhcgDX2OoAID + +CGcH6Z7w3K5CffV1+lIRhClDjFbQZsNrJM7GWssrUG65A/mrzTlPCnt4zUcLvM10hnMK3w0ZZcp + OSDydbYUeSxBeFnmZ6lAj74ZXSP+wZ3OkBnZYWtBSTNeDGWcO8OiFmHmUfoJUtZkRE1zcfGSouGw + Hb05e1OULHmc8k84OTQRnVm+isj509Cc8BLvP18yQRmfCZsJTvrL34fiFcTqCY8T+UboT/lg/Q3m + /Xiay7W1ssPv/WdKzqCQMdACjqrrtCklxOOUCNz4EtB5HBnKewWrb5X1w78N4XYcM/ttOuwUlXhu + G1noxOvPl5Qn8SMGags/UJt6zoOJgh7vZGzDQahNxkCZ3PErfszCdia3fMbV5FZNWCa3vEg7+mI2 + vVFN26W+2h9s6Mu77/4tX/MK46TqhjDXY8k4yRXFD210o7vpfEFh/k/D2XSO9ZU3s/sxQqE3eC4d + OQJboc830EbuBTrvrOEmPmWhNQ9vo3vQWaF9Ak4n3MZCApueoD/19n42nExlFof57nA2DtW8EHOg + Wyz8mMt6SMZa1UPi7Y71kEJypR4Sr0qmkt8+BBUlLK4hKuEpT9NkwFMq48Ul+2oqUmWuFwJRRiJh + QrsDS1m4Fh5rmfFUxEZOZCr+fzVyzfxrtlKpqRMSvUSMZhSO9bJWayQY/6UhbqzICyl/bxaz4OES + RSbV928se0wSzprLywPGwqCkxxnjhhrIJFtNv8ryjqYQUxqkTShJupHeE/5qPZyNWpeLGUXK5fEG + X28oSn1ktGyDHDiH19UI10EH7Cc49viIw2d7/EZq68F/PIZLZ/mVPCAbew2b4UhNuPsZ5uPezOBd + 7+oXaFtH5oGpimITEIfOjo3DVfNlUUKICHBk7V/hE4eywod5UZsKH7zdscJHSK5U+OBVOoX+cfqx + cgrxqOwKiF88D1nKfDaAH6mq8LmE4Rt9n86HEqu2oM6znANfR+ONMGiVB/Wkf/76nPmqLEieGP8Y + 3VVPDP2sVjTskyNuhMDjcRj7QfngWA8vP51evK4/KUKeRA2ZBwx3Rc790kmhHY3UTzOdyUpASNKW + gpW3Sqb0WcJSb6ewXtOn2fll1FBJxwF8lFjgq+hbDW8o8h5+Ee6GO6v0JpeNK8hjRJemp/Iezjdd + sxIRh+1DOadpx97yjX5x4sBNCT+q9Ekcn2Vil4C/L5a3o5vWidFduY6VS5THlNCwnGZj6CnC+0/H + oDLo/sG3arSFa0v5A9qaTeR3NdCOpxjhzjU+tMMCp224uk+4Nu76+E9AHwb7F8EqfDo9R8ygbGnx + ObUc2Z3CXDggunCYR5Iz1w9b0JbR7Y6cuUJyhTMXr9Ih+fb9ZbUM1ovDCmcuqAUe9wcsSn0ebw+w + z2cgv/Nc+kOc4082NH++Lf9+vpnNxM4kupZvlqLOEqfGZMyCIQPN9G6Jnlp00mJe45Rm8En/2ds3 + 50dbk+avFpK2q/gqiqJdjm7v4vMZ1+cZS5MD0lBapt+r5RGr5cFaVInT7a7Lg1WrxOmqpJR+/S8M + 1pXWB2OV9fHch0nGIown+UxyrvpB/8urUR8+0eL7VBGxL8ZTU2sZiJ0j759n35EPjVYQ/hJX1o+W + g0dbg87YVNCMRLDaG1CsgPLuZU97FjZqoIa0Ilm1eE/3HPuAlRW+3nnde5JwElaqS5kshKpmgxdf + gx07wzJp6VOY3qlMfGsYR2J2KBWupN0bL1T0vyemRLEuwqSDzPvuAvJh5Jly5GvD6bswX4fee6CH + rtJIE4scTDFSsgpZrbWaxBJgfuSHFNVo7e6n37QKmj8UVH9M9CFvLzzeAvGTbnejPSXJZdpTcZU2 + yF8vLytQ/WBUx2XW0+dhHHKE6o+JJ5iqi8aLrxk0KN5zNAM1XTN1wvvna7kd/prnVYj7ljoAmMxp + 7FXi4x9BA4QV0AwsF3tlgAsNARdhbWcZWM5gvZPvYO93obfFwE1TVoacqAkgqcLQWrZQHiWt+rvM + s81kcXsPYz9T1V1Wj0vofWbJQhBhallJoOT7FBvYZENalcR4GC/m/9lINElhgmuDuMYXADpo01Cp + N+l9nK5xWx6KT2f5AuQ3fQbf99cjywdd1z8JrJrT0YHVtqvFrH89nY1Q5V/ALJMjI7hRVdW9Bt48 + ESeMWAl4SGBR5HwxV5OMyE8v/SQ5w7jNCM4ZIcf++z8DL1B/7qEoXcPoxxIwlaJounkDm+CQMa9u + dwY3/GiNVFpqy2ISHXtLczVjVmlgS0kHtBDQA19HOXqepQwCt9UopzezzRgp02YaCcV5vxcrpCEy + W15YTvv4IfJ21c8dxKPJA04YeW5wEyWGZDfv/k+XsQeKa6oUmKmKdudLsPYfJcIQxRZ9bPkkai3N + Yj7N4RXn2S/r21WG6CfZoeJjqt2qOzKdPnwrAT8BSISXMJrJtStpnz6xSJLEHjQ8HeK0xaKC5o93 + F8yP3RVMut1JwZSSSwomXSUF89OrzxiyKWmYglXRtMC9F8+DyEtZOAjADOdSw3z27mh6A2feYnnf + f3Z5JD0oC+HOf/bpCD7fZAH7NW5sepfEhMCZ4I28fH3Gj/uX8ikcYDjZhcJacJthyTZC/IqHjvvv + 16JKEk+A62tcAQtKbBzBgbm4wVPxj/PPTN/+aVEAyEGvbAfQsfKn3a5gOKqEem29YGCkYoLSE/SC + 6QIVxqK0vZtJ+YsS7//mYr6eXrSqWKLbnearlFyar3RVViy9/hRUCRVFKMG0iAL0qPKQxwPEF4ok + 3sLn+9P+29FNEW3EuXM3ws28sVzx6xQhYhDsV0BxYDAl7z/7x4fz/EhNoNGqtuJJlBwoKHr47HSe + jUfLHL6W9c1SuzDasCrSMMHVWJ5UJnOdXQHtt5TUykXVIE3P0c/3uN0JP74FwV/CBWTpDqlGSZUn + 1L9f+qrQWWy9xa+Rb/zqM5ENavwaGr8GYWD+NSAIIuPXxP41tX5NzXZ5KPRo41du/2qK4lEY2L+a + N8cBT61fQ8/+ldm/+vavsf1rYv9qS45syZEtObIlR4H9q93nyG43stuN7Wdj+9k4tH+N7F9tyYnd + ycQWldiiUvsFU/vZ1H42LT1rv0JqDR33PPtXZv/q278G9q+h/Wtk/xrbvyb2r3Y3mN0NnxHCPPlG + iaLDoPtoqW5FNG1pR1jM7t1zqJViFHqkIWNPZECyfT9Q+4i0eqV3kHZmSBSTGQKbNxUDy11XZNy3 + 6VQHgHtPIdfK8ylf+m50g172zd3+oOlPCxfPiQx2u4SuQKaDJFEvMyT1KSOWRQNhcl/RKRVLXHQv + mjOqjxzlpN1QHoZIVj8UpJ+HhM1HjJUHydEZ9IfLovmiMTRQ1ruf3VDujq2hI1qFrgjbQBSl/Osd + sCNGuafF+5AwFWjyWtQU0O2ugSavWlNAV8muOvu9WlPAOPeqgSb4R8AHoecLtc/mWNK5ECK3dVDK + 7gMzeFbk9gl3uY13dDYZh4EEQ9rcjeZ97FU5UUM5ABA2JbNd0MIcO9t0Xz/QfXJMK7vLwJiEYfdA + aWymdLI/QSOfk9/UXx+Od00krS07F2ag0uAiqZDVyNkPaMO0JQMG/2dSSD3M7LRyGureYYIsb5Mi + MHBL6M/nFvC0Rpk4/w3UepRcRKiCsOd1QdJUA+7w8MRP3I/tWr0S7ZOMbB3Yg+7CJ3tVVARMQn/Q + JBpevP/01mB6kmtxL8ZhFC1Od9zX2gpu6Ore8uqGGTcTew41bUFuH6ADnSpgEdFfFm9W6tN+x7Sv + qm/526Qdoo16xLX2VjZgld7SNTpykc9hfLuYT1ZY+T8erUDKqjddoRN9YeQ3IdJNqZ5WikZEMp5K + 4JqDkWaolKfaflVQC+SWQKh+9qt2ITkJqB4ed+EcSVhrZ4KruDD0CMBedE3nOe0Holp5Zdc4ueOj + O1wVxCVnj/h0Ps+2pbe34I/aR/zPkD1PbsrS9K/OhGxbAoD7MPJE1j82bGHdSdqOcJkI7/PDvKza + cQOJ8A2ddQ840e2OCN9CcgXhG69Kzu3TN5UMPJh1FYTvISj6SRAMeAibqScptxeTsMgXgEGBUT7u + f1Kh0EzEMClcSoxG7/u6rlaFJz8SAMthRghD/ogwfajYZFviJoNnxaK74kmZq8nmpJJv0ftUao+G + sMLm8v7ExujNs68ZTTNMsMIZb2emSaalkpDSa5RypWA+zm9gMqKaqlK/svlX3AowDnbShwl3k61l + ljRo+NORmcbw+Q208LKHk0yjjXOi8P452IUktMwBnDvGZHA56R66ycd83X0Zf55OHtjB1A56pMOo + JvlHrtCtmXS1c2Zvac3ZlIjHnNQJVVvSfjlBCScj4+UZO+XHXtjCyFCPuBkZugHDyFDXWiHqakFg + UnigWmP0Xr1MqF7G52dR27eRz7i+jmrCeh95kc7yPBv7SRkINFvm05koANNQoIXBpG8r3WXdJMTS + 27O4I4OqI+jOnw9k88fU8XRdHe1LR5oAh8BAlajdqS0d/zod9e82Mzw+8qnQvvpXi8m90g+VTrLH + 56CQMdmBNMZ7l/78UFiR4vlDaEC0lD1AQw80JDvFC91D5g7/Ie1F+qvAXY1Q0s2HOiOObaPL0nrY + P834EPOzmwrxhCrE//6BpS0oY+h2N7Y1klxmWxNXNaQq4xVMVV9EYm2+teewvJJoEPOISfvyokLf + Eqb9Z6tlmB45cZIMSkyzCkWxAPVQUbcc0yJhVNH2mebrEU5gtH5W90ucVRk68bOTfhPHCeOS48Rg + KHsNY7KYTfuXsHPinwTZCeNVspO8IKVh/PFJaZxzL42C3iRMoir5VnPS6SPS29gijMEUg6uGVEOa + 45fDDNp1NheTws5F9psKpmF+x17k/btXO4Wtues4V0VPfO8S5GTDCqptZR7bM9eY1o08PYfN4R6t + cx3Ui/24J4dIaE5tx7myzTWDv0aUolCkvlWQZruFfN1SgPbjO/Og+LOPxZG042EHKiFOCnvDd3Ad + xc7wdzuge3pkoPonRhbVTuSP457S9pJHAyY6NVRdkeuwdgArJCcumZ91VspPQX21n8yd8kCJpxjc + ynnYlKYcazaX4GV07PE20NPFQ86MLqoRm9NFXiXt9+zi9MPni/e/YZHZSHimxnD0FhNeutgpoceW + 6odBynwPfTUslEhrspx4Nl1OO/GKsEgacDlCq84cUT7dYKmle0hsVaMfHDzFDiQhvRqN2UjkZU7n + mKu/mHUdAiQQjl8/sLgFCAfd7mSiScklE42uyhDgxfmHoEqJHZVYPXnw4jkLQLNIByxgXii9qB+t + cHeVcVMquzOMExVkkaPlEtTQHNZgf/1tUQQRl4t13n/2x90HOO5QJ8R/JUeiDvLbYjiZ3iFOlUA9 + uHx1CarYTFlPH1fLWZBUrCc7GE+dqJ4RdtJk1MiA7QepH4Z+JWny8FZMY4fzMIiSB7SmzAYOs6ZK + EnuPPRl6NJd1QWgUSuLQA/XYANOJxGZSzdapkVf4qjuk+3zc1Blp2DhNdMduHSRya8nBQeoqnJik + azv3Zbvv9InQmj5hXXH3l1WHZaoosMPAPV+GbnelwEbJVQpsuKog/T4zv4J5yTyPlSmwhxxrJaMB + /EhUxsylrvwvdg54U4lAhNoc/D/ukGe//Svo3wnvAKZuCMIiRCuCv60oefs8W4ecPDbwT55yOPsQ + oxHDPJIPaXsmmsQKXMPr7Dg2S0/a5xhv8gomQYIYTxWgaWPPrAkmG8KxwMpvcrAlQRDz9NAzrEZi + 6Qxr+lAaw6HyxQYP8LV6NO0KQuwwdD7XmqGMWFB6WLSrc3hae3qInLuaMtLqxH0aiaJe9WjK5l+z + 2WLZPti4T1po/as9lQRTOot4efrUJIDtWXiGK78s3CXzpDzX5bmRepLUxvdS93ODbncktRGSK6Q2 + eJXOjdcXb1nl2MB8vzKrzTBKwGT3Blh7h+xM26CS71bQQA1UstQxi2u1eY9JEPt1eY9PE9yFJ7j/ + PY2kaDWtqK7x/QcvSd1td7rdaVpJyaVpRVdlePXyI5aClEx3hpAN5rRiYLpjEC0asDTy2Y5pNZ1B + A1XEoD/ltGJByJ7atPKVLzIO4mMvaueKlM+4eiJVE5YjUl6kWTKaTRZfMngd6D0o8wIY08gO02Q2 + w/F9jtpXpoqQ9IZ9X5dW1n/2/vLyyOoDui29UFLgScBKIX59O0XEzMPZioLQJ2uMgDcqGa7NL3N4 + ZUMYMvLELr5PJ+pIUwCYrXSjH046zGImoFq2jM/+JHyiyM6jEn+ca8PSZOugpoQTktBen3dHwrRA + 4RGfdOHS5e2uAp8cD5KGzEXhcU63gokf7fiCGiFErdb9S3DUTkb1LW8+gB3sfkDS7U4HpJRcOiDp + qso/+o3bBS6MByzhiX1CBsmL52ESJ2wQgdYV1VUhllLdVdLOglfrV+wHJUy8bTaHaYPZ7HM/8qtm + swW7ctGAjWI5gJPUqQl9mtqdvgEN+i7bkvviNRnSASKLh2X3ck3tgN1gXckMBhvKJTPlZkr2uj00 + J33MepgVFKxyaRk5LutbxAKGvf9zIMzzz3H/CgY0A7sRiX+yAtY/74+02Y+jXcgcLybk9f34+Q0j + 8H/1NghZdTMXIE89MRe14pEQ9j+OZNWqqxl+d8O+k8qatEbGts/m3L3UI5KBUbZaXGEOTJYvp02o + VQ2sgI/rHQhrCnflInfpRcB9HlYlbFvhbSrgYXHXiSffMyycrTKEZX84bFUiAObcNi03T/VBEn9q + OB/uJ7RDFBl7h7A+pFxV+fveW6xraUeyrR5yrfTXjVi1/uqqKlaZ59kKEfbViz3DjW92L8nTxL4s + N+XR7Kj3+/kb2KGYwjJRpTtWc37IWRRFvYNoh1z2Cvdy5DaKt7YFiQjzw0UQt4h40O1OGpSUXNKg + 6Kokwnz/qhrwCATuo+li4C+GSZREERskMQsiqUL9Q9aHSCYZYobFEho5w4ngcjqpiUGYlnQ5E8RO + cU4aUY5YEsEwVlBhu3JAVLgfG3B8Yi9IG9QY3cXeW03oLmIC8uULCqMSD9eElJesPDYneOEedZWV + GHg8tWFSgpIzBOV2eDXNVVaLsOTfvDyHn0fmVznpm4wXdIORMURZrJL7Cycy9AO+YP/Z163f+khV + ZeQ9MaO0Xy+Iwi5qynCM8ZHGb9ICXkft54fWY3UAr9lFKpRYImXn1E6J3dcRdQVIcbiC0gmyYTdw + gl2B7KWRLqyN4+CYtXIbFg85F9eqRuzyWnmVNv9aZgPTd7jzBqsldA+Cydf7WdADsIGmkOiOKvot + ZpWzx8cPI7Eh5lbOwf4NN8P4+r4BhLrqj29RRiW5o1rA++ML/5/ABqY+DyzY0By1h9oHnfXTLtCK + vTqnwa5IsHsP95O/q8/cWiXVJdFlc+5nhjvc19M6hmJlXoY+a5lHr59xNS5VE5ZtKS9K03I0GyMe + +DJb3WXl0NXWP5ryMfsz4H5H2AdUSo+XDpAhvtWYrnaQzd8pylsiYjkCZFsWZK8wZLeZbZwr7VuJ + 2OGuS9JmWT8DMJt7RUY36nUSaMh4PbseCAAtTXTZTdo+1C2fcS66SWtC3fIi7RZl8Je7HensKgKQ + WPJRT/V9GcZ2ydBrodK1yUI/0C5tSNpm1Q405/I6BX8PSRZ2nmiUOfzywueJux+Nbnfyo0nJJT8a + XSU/2rv3l2UucDgtfduNFvAXw5jxOOKDmEVcON7g7vd308nov+hcuZlBl7HeSnlxMsLUE8cXBXcx + pgv/nSwM3/MLpIBER89Axnn/K5mtr6fXkpk0n35HTOh1tsxxzG+n8AUmUzPtArNp8c7RLBdVGpMN + jl44FKSVU9XFIR+OR6urxXfsA+XPC2qPZ6fvz04voAOj/pKq0uG0BYsAAarID/humld5y+2qCRsR + 0G8qSEmS0E+qqOS6j9tGsTaa6jGv0cnoxUGQpP7DNdb0YtoP2fCtSjKb6oHqZcpvRKGMHD/g3WK+ + KF6hsaWU+Y29T4MUW+r9yedzD9e6TtbmIVHwMkGVVNeRvfOZWgh1KLcPudjci1FHW+AAbHQvSkMJ + nFUgSsIu3V5QwkJtnBzSoSQiOQbNbgcfAWe88Ca6LhnnT7O1fGz3Fz00VywNKA27spUNa1Zr+3Im + 3OecxbeLF3cketfa268Nh7r4jlibug1uR0GTqIG+KtgOlsjhnd8LSvjNsrWPTgZKZ/d7U8+C+qaj + 3K/ZedgOmrF4yDnKrRqxo9zyqqSRCfr5fHHx6Rxn6mJMgHymx0HfMDRuUKbGxWqZVvwTulmMdoPS + iCZHa/ATt5L8R8Fo9fTTi1mLsD3RzAs8EPnwaNWm/tLVHuOBTNjcu6Iz8GQgSnz4Q7y4at5TScL5 + Bz9sQblMtzvZOVJyyc6hq2TnfH733q9AivM0LaEJJC+ew/U4HURBEnnbCxKWMxD/FylIiFgs8gJj + j1O6CLxkH7XdFi6cJxDm6KkJqYsZAi86ZqyVg4cecfXvyAYs9w5dq/fuVKF+tQw/RLrDQGYPhcQI + mX03FbBVdtPC4aJGI1CjwXjKWzu81EOuI6IbscZEXaVRefX69BX8/7s+WDj92wx0a3z69PO5EfbE + rUn9qf/qqnISGS3hyMV0ErmDkLkj8XYBa9YZrNfjnG67HnughDSh8HbE19olx+rBDKnc8xRBZdOU + 76QEhRJ5HGTuyFw5mE7To0oQ+30P7NfhnJNqhyzw4SOENo9bprHIh5zTWFQjdhqLvEoKzWq5licI + Sy9J1xuJbaNa4NbbeUf/AqT1UKSIEyQRRRU9P06UYx3NvYZT/8Eo7lrANpMV2BF9Xshimo12jsw+ + Ss/PxCOx1xbs/ND25R+SR6B+lhJL8iwb9HGJ4KR9AlZSdwcPZ7Ewt1wJoN3PUpdtuVtpD7sdF84Y + EgRd6WaoWMxoxyrcpEPYo82k5D1PjlDp1vwNGA1e0E63Vg+56ta6EUu3VldbMYwYwvBMCEJ+SNnC + HmUGvmckj7Lk2OMtc0fFM+6po9REKXNUXKRxK/yno7FdQvPs8uPpxWesOpeu1sBwtv42rNxeySWl + ppHMhDEBkNllbKEKtNklKuYPz6tpQX34v3wdh2OMB5GswXaavB0cSwkn96K76IeOJqgNJybmww8s + jVswH4rb3ZgPSXKZ+VBcJbX+9PJNpazJE7ZgifmQeTxlyYB5EU+lL380X0+H+XQGH0HEO1R9CGK1 + jUebHF5iQuxbUqEV966xeGfa/3abwbWv0K3v4hYYL/JznubX1TKojgjZu3JxiuTuEVIOF68PLy3f + T/zlZihqaMYI7r+GmS35Kd5s5jdTi50i8HgUWe/xVmOtpn4Kazb+d+/UZahXLQa7hx9esxEGYdST + PRGnZvvXq8z7Bpo7L06K09xKkx/019kMabjEVlfvVtzLdik7cA4qe1ErN1GRNfaqrQdTP+MaV1NN + WGE1eZFW8Tj/Io1zNBct8/fLdK43KPHh1JVnZ6e/HvXc7z/DNp6df3z/CqlOQIXw4Gm4RnnBvuRE + 41Fijq2RYiA1gtX9oQmABzWyo3puz2iDFBCFHgXDixCIadI/tBH/aJ5MHlHWvPog5hxq79wDaZal + nGeYUPLL+naVwROga+wUXzc6h0vd0ek0oMEvraduxuTJWdaBJ3TBg96qy7yMNJXFAC7jb+1rrWhB + 1fafKsrq1HcPMNPtrpTVKLlKWQ1Xacv/Hey4oMpZncZlze155KdJ7A3gk4UIHyGyMLSfdLyY/2dz + QwMiYWHMumdMJoQRWayG16ssE1VRywUmry3RUS4+APx7NF0pRsMTPVo5Yb5+vMv9JZoKkuUoK5y0 + yKuMzF+gWmA7v1/1P9znwygQRE2TTXYi2puM7kY3mHI/vbnJVjliYiFz0PRqU1TwqUJs8j7KknC9 + eQq18verMQtqecXoIRuYKGjOc00SROasoN+31VAtOYWGagxO9cvU5snyhHuNmaaJzyOvnNNa/wFt + xCGPlVTSgVmuDzZVCv1vAB7GfD/9HtSGJTxkTWxsDR2WcrEgbYtc0JTTHXJ7f6WJ3xNbRME4nqY9 + OUrmOVgzqE7nqToBGkbFZTPVorqJ3mxPwg2ZFbGpmaO/OOQk8iAiTzC+9tAGjS5ET7CGcg8FNGQw + S/EROw6kBe/pmzsE/GUPitiABbH9Pev2ssb4R53V1aN9zrdniQYD2YVeWKsP7i/uwUEVGEwyIl84 + CJcxleEPSgI0v8FhryqVIKayS89fsvg1849Bx2lhBRdPOdrBRjOmJVxcdk1wMiUFQcSClOAUYsnl + dJdNF/VZMN+1gwV2ffhqheW489HGqF5KdV9XoxW8NOw42XLt7sl+DApn2KUoi0OYyevpcoelqaYL + U/Dj3GsFPw63u8KPo+Qq/DhcJZ357PfLSk5mkKRRBX08hsPSTwdxiGRHNK3O5ZKxCEo1cyfs0r/7 + /XyOic2wnukczvFUzKRzC26/Qzwite8JHeFdfstTIkSAf7IwXEpt9WyTVwE1STy0Y+uYSdSkYzJU + MZMuyG2ZYKuPKqLKu5ztRWWhkzit6BkDVgytreLxJpFJGEVxGP6794M+VA8nUwHLThRLnsQ0rH0R + p7XpBakFIyLYT4Q4GN6B4JU3hbc5VRDOUqz7u73yBjvI9oto39DzeKeH6gD+x0MT4pzP8VoNyCew + QvPjlTEzZLVIhsyBhb54l8GuOJ/W7clb3NHM/795kVMbesde0janlh5yz6mVjZRyaukq7bbf1tdM + AuDBP3G0RTGX8e/+P+GWQAxa+WpUezXBp4snirvgL5hzG6W+uCIw1AUoNf2bhQoDMY7FvFAobS5f + 8ynETdV3Jijpv1+woA2VvbjdjcqeJJep7MVVyZP4qXqG+mHKKkT2YjtOBxF8Ey+RqpmClxnNQBUb + 3uEL5pR9JPkL5zXHXn0M3PbXJI38S0nEozCuBAJF0/ezIZhTN2qJoAOcDfxhtXf1jpcwZk3nW8yQ + DLB0vH0azqbzL/ChbzTIYcU3wkswjoXTJeEB6CTs371T0T3sqNlF03nx+qL//zajGXYYtH6YTbOT + UoHwKrtbfIWpCMchcgqQoEz5H2gmfhzN07ez8afTsUDKo8pgRH8mMOkpHkArlAA3JvJGaFy/ZXlo + zYrjE2s1QH81xxPOL02gnqR+T46KuRcbAZ+GMa0sqyYc5o7yXgKPE3b/64u6urU90Bf/ByLzQ5NS + QnJZ7LsvuLkcum5khwJDjj6F7zTdFxSrwzTKmJTbqiBBF4c9g5vVSu5fLeYT13WoDkidOO+z8Njz + W2Xw0SOuCXyyASt/j67RQXm1uJIx+eUqu17MJojorPLfw6NecVVftDL18HmRogd2koyth9YuSE+3 + 1WtjuWDW0OjMyENuNlMesDT2MVhcIl8Fq9X4H5zc3UZms23VgeMwZB5hFWzm2A/jBNoHxg5mM6mb + H0DxbKFuitvd1E2SXFY3xVWJF/Svz1VSbp8nFXUz8FkUDIKAhcn2Mtr/zED6X6SMFrk8YW5x7suF + puo2Dwol7CQWLpnxXebhE+zg9gNEANXMh7ClrrCisf/sarPug6g+FTtkR3udLLE2sAO/3cmiHnE2 + rqkB27QW12oQhYsUo8Wqdzld+YoQAMFwULefZKNxtr4Xo/UuX/u9W/yPqO2NEiq7YqQjNqT9rV7V + ASY0864EiS0MbY1JNju05pXCNXV9bHdo/BygyZxqQ2ssHv092/ebgSWsgZKsueEcAA1QgdgyWcYZ + 2ptgGDpQ9VA+aFqU8qp8UCHWTYN4hGo3iRBcNwDtTv1CDSKVTI8d3AUHVwY7c8vReJR40J5qWEhQ + q7X7xMEaWcBSsseLnOJ9RhTFcDLZipxnmZy8lzzYN0S3xJ7aSkJHnEQxsS/am994IVPHt0M6N0Y/ + uwFfhilB+aj1WO3ioDugl51qIawzLWTQF3H4OW5+AluvLVAU8szgI59OX5mV7DWnfyv0rT3ltnGZ + hYSYb8/FHXyPldrvgyG7tenk0/SA993TWhI1AX+8uwB1yt1aotudrCUpuWQt0VWylt5+elVxzrM0 + tnNCuffiOY+9NEwGPPY5ovahVhnJMqzFzWwzhuW2xo8spjjMXmh/AL8SBKTQF+Y3J+hc/pqt1nm/ + 5tnnOJDn6I7DjLUZMu+ERqEX/fkd/Dz7zZem2dv5pOr9b5+hyVIwCOOoEqre+nb9Z6W3O2pw+kcs + anDQg4qecEWzpM040V5eoEiWXiSC/9uWaSll9nZ9nWr/TUzQ0VwON6yubJ6tKAtolUnngcx3JMC6 + zAAh1bmNVjD9ZrX4tr7FPe7VkLqzgB1ith4NZxjiRKBSxBOdjJZyhcEkkHS/XzMJfdnDqapZIH0/ + Eh4uj/yDsiMmguDtpr0OnRIPnYm7We6Gu13TVYFsCjvNlnccGF1EJ/b4tiq/OZXyx7ErP4ge2Z7S + UmhFHcFEirUtPs3eO8Wjt9c0e0OeiJX1eERR3bJEh15EGOzikNnvwAcRZMkuZErqfqd+qk595run + tdHtrqc+Sq6e+nBVlYKc8uqpX6rhhVN/GAQ89NMBWCFRFG73kt6uQP64g9O4oRIXebeJ0V7ANWd4 + eNw3h9qZb4faLy+LVLLEZyxJy6lkm9n1ZtV46sYlRuUaeYUXlbGQi+MppFCl4Yw5yI/abpftdKvr + KEv5AIhabQUwsh2X9yvYF76PTAz0vRakL9KS//j0wY9TdzWcbndakFJyaUHSVVqQ5xcfq9ifHrod + zQUZvXjOmJeycABLLfUk+uf5bQadheU2lJYQvPPdZrae5kt4VRyNChmmmfqh/3i9ETbwZCOwiO+k + xq7ji6gM3Y5AyQhL1CZ5doNWoMSEh81xOoO78Ud/skBC2hNNvpmrgpP89m6xwEzgk37RabDULtcZ + 81VK6/nqrqrd14btjZUq4vtNK5V5ke/H1VIs3R17k0q3mAympO5DOWWWSfltDBk89HzbDnh9btkB + qoe9P9/86OFyUXstrF/KpI2pEkZXLbT2dad+EJXV/6UaPDdvne/Tht/w/eTY4f59M7pr44s6WHJt + tlAXLKlPIB9HOXaCgDCs73TNyn8yWoTONQc+U4Q3YXg2PG1DeSMecCW9IelV2htxXQJCX1ziwBqH + AmeRn0Zoo5apb3yM0wxiPxbMu7VqGtGgX09pId3CpJ4tbu6P+5dZ1n/z+uVl/wPCcqzy/v8P4Vz+ + 3edJ/CJgwyA6Vhre1Qq6Nx6O/hqR8BjMj97TAoX2fZqcH2DTa8HGJG53m5gkuTwtxVWalJenl+Ua + cpZyVp2SDAMhfABqeKIKYsSz6A66XEAvbkX872qxWRfhsIHwVPSD4/77+fVMxG1yO1r47uOFmo+X + o7xanq2ighIlD5MNrC8eJ0lDxS/zvTgGe6c8J8lrXQs4YKkdvJnpiMUB43HZ4CjCOFb9pyU0jJIm + 3yEJTX4ozlCl+eZ3spqXMbWsVDLOd7wcmFTvZPSg+hUKi0Zlwy2u+582p4GOBQqsIxWuhomkIhHv + goGl4ZSDRrrrJ2qbFLH6W8x6vrsDRWU073/87f8IbWkxXMzHAgX7pJ/DhOzfjOch6DUbDJTgmSvD + ZbjI8/4Mpr3Isu7hWtBMR4wnPTkgQoPZMYjOPpyfIXFBzHH7rfcvh24trInBHo5TEXW9taafe7F7 + p8BYDZ3kIefpjk/TxrlwSI5DEDDiGBYL8LZ50TaF6ct+C84paaRZ1L4uVO6JD/Mu+OUd30t8rSO7 + A+9IR0HxJwheaIiKm0SVqJCw84oGCfXYFe7mMqtpaP6xnYXQDVszWJxFal8atGNJ0s+4J/dRE6Xs + PnHRnaFDSaGiN09SHvm66FDMR3h/fG4ga3fUlpJPaxmQ6ve9g0Q2bHVd5pApkSz0bER2uTVJX0S7 + AwOWf+xV9+JC4xj+muKku3UuN/orILNru4ZrbEQvZm1Jx+QzztiIsgkbG5EuSkREdP6sUDnMNl/g + +YUEIRYw1JfDESg5WG0ibBgRjTB0H/rGzVjKRft+yP00ZIdAVu96yB3e7aHnTAtI5B85//C0jKlG + pvV3PZjF2/dDNe1///QrbwmGop5xnfaqCWvay4tbUNeL3RFPSUsSTuCQxz8ac92PpIcOTJM2lNR4 + u6N3Tkiu+ObwqvLMfaxSUodBUnGCBFGUBmwQRAnjO8KnVyuQXxM+/TO61jw/ip+Ka+1Q5V3NSgLm + Pv0A38I9hki3O81KKbk0K+kqzco3v39i5ag+g+lnF9oHwYvnLIgEMncQh4zbYDWgtKjPqecJzdA3 + mznjlflpZ96UQvxpyxD/E5ijH4v3MQDaakalJ4Zbz2jPiyRcROuMpOLoIx7pO6sLiw1MtS2z+mnD + T/gK9fo8OQXzI2oF90WPuGJ9yQYsoC+6JhFM/dM3EthMOQyf4bWhHxxJlOoEoyhR2Fe/Mz8AizX0 + j3rVhwd9+bDZOB6JPJHUVAF5Z1T6JFkEhtfSAOVBp/j1dJWvaxFekIvdbQodigVUD9t4CAaQdkoE + iafsQo1v475Fez6ngrPFHSwPkXTu5EpyVnAfouqnil3kQD3+lyEXdDYJDkdm6sax1pnzKNXWbvI2 + Ak26JRWAfMjZ3lWN2AavvKocSAhtPlxNx7db+JYMWUL3D6IHB0Fsct4EIZEGGbSyRc5GU6J2tR8/ + 1nIJPAU1EUQt8bbUI65QE7IBC2qCrm2x9d4uZjdTOoGWi1Wxw6rj8mxx41eooWRLCDsRxLE8+Qjo + d5VhIdMK7OpCKBxCWY5MefBXQl6/EXh5oGRR8/vvE6rUu3iBdrtEJLNhQO0x+Io1ccr+UsWR/PoC + pya9oxyC4R2MpMhs2iK8xeunTHd/+IANxR5x6VITi9XNaN7oLt2qZ4YiWeWXvYeYjj/St6kz+ym8 + j+NnTXnR79FyOQIdsb2UvepoD7MOYsaMEa/uFu0nlt4fKffq7QfY391taLrdyYaWkks2NF2V4CG/ + ndvkVmkchgEWBpsmdPriOQ/AhE0GPIiCUJrQH+kQG+piVItzyUpxLDiMcgyMZF8xNQt2wvx+Plri + QXiVrb9l2bw/X8xlCsICJofxmEimxLyNVe1z8qH8RH2WTGHMY8WcRGe7g+7pDAfEYBfRlPlEHMdo + olAawzDHjwy64CobfdFo7cIn8G6xrDJvjRfoMkV6riplUykZJ20iO0hjL0H/wQM5CPR4mU+BMpI2 + 5KOo7vT+St+4h4tB48LAxKccFTpksaActhZQLho5ALaDSu0Ff208LfYgPSauiiM8GUjdZDzF6QAb + kRqJHa/TgEVBaui2Kf+Ap0lHJf4RIWpYUwGe3Cqx8ywIdQj4ymP0x+9v42PPb2Ud6YdcvUa6Ectv + pK7SoZBP5zKpVloWkhII8+hHS8UKpF+lQMvvVe7/eHq+5f7+JbTUw+YoOhhLTxKLxLDCw7/++ism + Co1Rp26ph6ahDFDvNpQaQ+ay2paeGxavVaJMyqc385FQ7WU5sJPvI2AprerPv13sK2I/u3Cb0R+m + gWItmYoaWzvCv4N4fkvqfXvNDb35vhygM989l6qTZUk4wucf/Chy183odifdTEou6WZ0lZbhq/c1 + NVJpYqce8+TF8yBlPhtw2J0lUMHrPMfDF16MJZf9FTqSJlOZjYEwBXKSTHFmoSu2SAC4i575R6f0 + 3+IZVQIf/G0I43Q3xaTR2WKxxAnBkj41MRCk8Hgp9S7FkcvhJygCQ0UWn6MM8tvNNrmdk4r3Sbg0 + EF52vQrl69W0pjxKiyvHYpoYnxjsDB5nXlnVEqP0DGPi6Bn6FA0+RcOjoRqCXenQaCc0USvZLWqd + LAhxdKZ3OC2KHEbzte3k4ShsJ1+8UFOmNVqjfJe83vZ51H+mfxGZBFimaozTUdfz7KGnWQ8XnNL/ + IpbEPTlO4hipjGa742irHNCIh7td5VtF7H4cZlDx+N5xjS1SdlND+b58A4WLeDUVqeStFeJ2knB7 + zb6JGry7pUxRh68/gv/A/p93QNsQBwVEm9iMnL7Igbk/gScjLiktAGe0SbFZ6Y/Ybs9rO+sPach1 + WRzSxm75HYRjGCXpdzasScSLV+5KKoskQLs1kEcdyu+MFT7gqmjR89yVM7rdtWARJVfLFeEqKWcv + X1eUM5ZGJRypgCO3qAeq7yBCSF7pOLt8FwypEth2p+Dsyvtnk7HPlwMs/Q2JTwf+5XtwBf+NVTkX + +Yotf3m5mfj43yXc9fbzeUER8TKr0ZOuNmCrZ+Mv5YLvRv4hME7ikFdLx1FQTeF4I4tnk5zpfDxd + TnGdoUSwNUq+MhY0UUeAtpv4VV7QlkRLdu242cmiuEtjAWNIUJ8vqvTYqLsWbih9e7V4HVTz0Obf + IBCrgaV2eUnsR2VKjAw2pKvZNL8VexJmVKDltVzIGIUsZrOWwJHdtJ80kYky+J8AFUFNCYVkGDAv + 8f2KWVrSoXSPxChYvRGONnOwTnT+UA7HD1JjjEfXCLxtYLSvDH+eWAcwNWYbMPitlTCwloFYAj1c + hDojiXu8J0fasoj3+3iV/WgLO2fMCiNcZGxs5nspiehzFDvkjm++9diSQSIZGlNrTL+eXmxuDq6D + s5PDSFv9X+DWdWvFOZT4otYb7CxvN54OK0+LfdDl8d0F9tu/wyEMWe4PPziMTeD7kQHDBfIn97Mp + WnzrxawfDB3gaOq8OyHxTylwLxLYPp9H6QShqhX32qRJi9tda8W9mjRpcVUG0z6f+tVa8dirpElD + Z4MwHcAPkYwv0qRV5YwPuhcIYmKbExLHiwmZz4iAOruXwAZGIgNs+DI8tR5Vw1P7V4j7cCgmflA+ + aE03uUWOCOqPi6Sa4mlFrfHLZJrX0hpGsBJ3yO4ZQzgQgL26HElNfgujsdq6GHIjkKFe+UQwQGGp + 6bdF9SPACQyrf5Yv8GuxI8weQadnblJUm3TNNNtXyt1xdd//mI3ZEsnvprPpWlRuU7QJg1InRUG3 + wLH4NFrzZQ/nRZGKS7TVkZ8wFRdpopjebto7CNiCaV8CyC/4JFd986s6+ioMc3wXSeQuiEteDgMY + 1OH5enq3mbWKP8GCiUp9a2kUx4mVtGoLcnAbHJimKUN4WwJ2Dxp7q5XQ/NZqe490Baofpi3DZMVD + zjWoqhG7CFVelXDAJhaUhQB1m2HOcd4T1bsEZl2tjDMaEWSM3CMOo9BL9IG9EA6qlr4x7ktYBaXz + 1HKrbXeuHFCsIqrZGX3l0gDs6+7waXNxEeSc1dVG6Fa9I5boll7UohCGbndEtxSSK+iWeFUGiv6o + Ek6yJEwrmNY+XA846B2Bn0q941W2+H5/e7/cCPe9YB8UIaICGRnZfnX4b2LePhDeCMrjFzn7sO1r + UTaXIbzfzQ0igiwX+Voslplyw8onbDwHeThms8VcWmmSGzZ7/2YYnoqTWgGl5f3pOi9lMc6yr9kM + 24WRHRG7gQwi3dfwZ3aG2elS6D/7cj/D2QlfGZQHo9afHG1HqtDfwsWJoyZHTRz5KYuikmpV+xmk + oi8m/P1siHuLjSXoJRHzd7TT+8vMmB6uqwLhlHk9OULFtlGMohWPQWRA9VZOtt7hUrfj+KZEX5Qv + Mao2QQHVMwHEl77VRkR2JrXfu8Vh0B7FtVsMDkom6XJpOpm33COap4bx2/O0SZQaFATJMQtaKUH0 + iKsKJBuwFCC6RidHUz6sqeU4ZNhzszGhCLG/XFZ9hbLjhyW3P52cdE966q5GsBhh3eWwFTpT+O5H + rdlBRvrTSy5Xez7zaR4K17EzHGiQqpIdUBTjY9aOHlY+41q0o5qwqnbkRdpjRLrgcDb9on04veql + /ulqySp1Oko4bilwBsjEQnLnVvzrKqstX4JJOsPBRa95gwu/ReEIVZLq6tTpzWpfmY4HaefVE524 + 8JNItDu5n4uvd0jpxMGOcTnRuacO0igK4Ohp506Qz7gepaoJ6yyVF2mifxpWEdnMGb3r72YrOOPD + QDEixxbokwHM3wTxVz2MDiV2ebrQTk8TpkdpkEwC230arU8PXDOJR+XodfNoX6/MU4XdC7hvWlNZ + y5d2RTPiVL315sLjzD3gRLc7OX6k5JLjh66S4+f1xd9Dy/HDeMASwRFoRpwSjDjFQRgOfKTHkGfr + 6/mEprIoBYHTbzMDfctKSLmDuagLj0T4fryAlwQrcoH2IVzJN2Ck5zI2IRiyVllOo3cNt7+aj/5O + Z7XMdyEnzOvVf8KKEyar7Y/tkLEzGX4OhJXPGCZ5X+UcEGkHo/7f1dBM8yI+JWqZMpErSx4TSWQ/ + Hi1h74ZZK/F5a8cM6QWgf/IW9PNmOo9XzBiBOQ0ayUQY/SORlruerjeY7o+hrflkM4ZOVBjSVQyl + h1K0YyQNYjppCFesyOuY7REecJZSW2MQk5ujfia5bLlPAUlG1J0Q8MJthtC5t4vxl8OyADomveeq + ZOks8F4x1rK033jKFdKhaMbCdNCXaUMTaBfX8DaZtrd75+9eqUtGapN6+/Pba7+3xP9g+ZEv8R1S + ThEYM2QovkR1kBrZKwJGKq8NiDnJfggkZoCFM3jnh3zCfnmIwpkfgD4C2g+5QIzwaJv0kq7QS3ig + QSzYG+a1A+ssHnIGslCN2FAW8qor/K0hRwBVpMwRuaR2R1LOAU5pt68uYHa7h7rodieNR0ouaTx0 + lTSe9+e/VkJdyIhjKzzIG+XBuRRGA/gZsliWM/4xWYGob4pv6f3yS0NBUbmcKGrOb4XBRc7osuKh + 0qN+qc2ZknWD9Uxu3E+25apaDWoF5e5+MdTiG5lUfa8iucSmqqTrjFDzKBOUABZamzrcTvq3Uj/U + FT6VtPG7xXp6fUJUTOPF8h6Ux6ViqwZlBbfbqbA772GjvIaJCJNqtMlJt/ztX6dM8wvkvd8+FqEZ + P/b54Vh0To/usDfJgrFHKJuDUrVYOidcEu6XLWM6n2/FxHvidEXCAO24BqLDagJOmYO/XbCwRTUB + 3e60rUnJpW2NrtK29vHi/INf5pnxkXvajuHHL55HjKVpOoiYz1NJiGdjOBblbQaaI65csIIw40mG + XmgL/Lhazvwqq4w9/ejBQq4SYdtmkR05Pn9fEM0EqR+GfqUE4PBWjDTAlPMwiJLyPmxY8MrMkT5f + XS5l5TDGQVOZpdVAQVynVSUjzm5tupw5dbmo29QjYH8wK0sRLcZ1Nh+hRNsA9e2chctKa719pkuP + ZqjmoEOPunw5vQib1NqtWh6oJzUbXpO8wjdJujFh79uhttZOwsc9M4hh120pOHbrIJHbCDvChPbc + 5krD7eUNITlB8XHS6stcBO7nCS5UvN1hfTuN2iHydmBD7i94Cz4BJ1Twj3CIhO6HFt3udGhJyaVD + i67SoXXx/iOrnFlBglaKeWaFL56HURKG3iCMPWGYboMFv1tBA9/+GrDgPI74U4EFV9MqVq6dxA+O + Bd6zu1+HHnF16sgGLI8OXSuzUqhd4hl8shtRuA0nAayGDHe2o57KqIcXulvMFwJMuC/o4Wd1fBSy + XTx4Aplq8nQDXP9jtNjptQJLIBENFp98b5PCLEiCubq/SZH831wnUiSvw2OvzUrSzzgnUsgm7EQK + ukh7Naj5zPOkGyTyLmvUvg/M6zX/RQgQzqQ4DcWAwb9x6HvOeqB7CtbeWmWHWuFjZFocol35fuSH + Rptwj7PO5/plnowG1wJLu2O1Ti3wAtOaJ9Gx1yp/pHjIGdNaNWJjWsurMh9zuBytx7cynNi7+HQ6 + VA5vzeVkihKIa8yTuZaEiGeC5ZeKtvb8AIci9LtlBHWx5B8FMZ+VR32/AXhyWPZymYQiy+qP1xce + T/7Zgl1cPeBkqWjpJVtFXacT8Oz079XIQVJCUwviF8+h0zGLB35YHJiX9F6idvAYtMTZaL64GQk9 + Uy6tk/63bPQF9U7JM473nh3jUN/AIWYH/Y1VgqHFzd0I9s/Jl/gXSmXuvyt8PbKGQRpH2Qre6FsN + IfmfjZXmvK5gt+QThwk8zDez682qP55txMcwnXC995evmI4RwKSOha7oUwSs7unm3a4+2eCRHUdh + WQaGY0Zinbj0ImABE3tX9h2emefQCpqNreIODwG8GDJVT8daODbodtd6OlZ1bNBV6Y1/fx5V6+m8 + oFJPxwIe8mjAgij0ZWy25tgd6LdUeMWv/xXFygE/XUaNJfvLRYlCPIx40OBlT33GI16JQ140FevD + imhyFJuSigAjvpk657LvIkvd9nN70Y6u9c5F/O5r1ncapex7FC8H/W+3yNIxpeiicv6o5CZzoEyM + GkvdoN728LPqrCVYQD3Za7GMivtohjae6HVTtyc/janoiC45P/3TstpsU5JDX8J0sThtw1yItzvC + dAnJFZguvCo54v7PbzUwXWFUgeQIkyj0+CBMUk9lC3ws7YXSuVZJ5DPnnb1/SiyhcsBGTl773hs4 + W+6yE5WmlPc/FRiYEt7LyqF8899FNXlhK5WarRZw1hSVSlIWJxWtQPahNmUhSP0mMFFLWrGZ1A2T + 5cj1SnhZH88HVkgRE5oD3iwWK0NNpg7hMywwIi0cfBiOHb0XMTPsJmxT5SPysGlRMwfMueIwH076 + a7Tz11JLmmSkkEtskcIboKeJTg3dXE1BvcJyGtHnkTBA8ntQhu56uHA0wkiQBD05UFW9pUyIshvA + Aj9uVXdpAt56kspXR8yFe0rqpHMu+KT7JKM82bTaDg/Z1KfSwdKe6DaqHSBygRBy9kEP9nuHw73m + 6pDX+ZEsSto7uukZZ0e3bMJ2dNNF99xIJQULpWKEXXm6BUpdgvKpGF/IlVMm9NzVMrrd1SGDkqvu + GLgqQ8eXH1lS9cakrOyNGYpv5A2g02GctEp3KrGXYn6i7Xh5Df2Dk7F/CV2pSiEt6yK/Y8kONYsa + 2pm41Fi6wnxYilGF++fAzKXGFvZPXaoT6ZpNdNjX6IkJo/WRJPT/l33UTfZRzes3zed2B9SfI1Xo + MVJ7wlDRwoXtaOFCd1q4sJYWLlS0cOcXHyvbMwuSsEoL5/lh6g24FwSezOw5v82gswukV5VwOxPb + /e034qbl2c2dMFDQNBrN+2/e6EjDoD+iBHLLrjr77fz9e6UAnQjgIeUnwjkimjtfLVMBNITb0OsL + ubGfr+6q+/phJYh+6oPGnNYgXddorRa6E6i3Db44xjzYZuIqfLbo5qjBuE+SqLGTzIOOPhjRXEtQ + bG4nq74+r7x374lPpxPxCTJRwfDq93Mfdj1RXnk9gsPtvocLqaCU81lPvrbQ31pjUDcTCx+IWsMi + lorDrA3GzFaBqR8IW8ssoluqT+nyZt0UdLYVseO4bCWrCSs1lAhB5SXsKuCJWNOdBHsilUbhR6fB + sRe3S6NQD7mmUehGrDQKdbXIlGK7MqVYY6YUE6Pc/JwQL+4R/xoSQE3Co77KqQplsd6fLqfqcXKi + YqNNRPhxVW4fKSfqUK6ZnzOrSp8aCS8oaPaLOcUKBp6HrWDg4XZXGHiUXIWBh6sy0+S3i2rMifvV + mBP8h3nJgAUhT+SGc4ZRQzUnLTf9fDEb4jQWuM1ZH0+eCQw+Ou408t7VmKlfjrYHTre6dNX4mnhk + t0XkCfpYjTyZ1Zt0s+rVe1CpJEvJ680XGMzRUUmlDstVqUoLBI0pCBJeVlbrBmRoDkhtkCphfhOj + jNWO1mVHoK1ciSOeXq2svqZe5JViVBqTnsU8ifm/e0/6e/ZwpmqnCuOsE/zpgxEUcVzxkbrxd9WR + fD/1iEqlcS67H36P7aTpuiQYRUZVkdUl3FZqWFP/vH1jcBnFQ4DIEe9IKAACnHgtEiL2Qrvivl+g + ScwWwgQ4FNe8k0gQbmv4hPum6DRzuwHx6AqEIxSwt398uGBJC5B1ut3pVJeSS6c6XZVJYa8+VPJH + A9jn7aQw/uJ56CdwngzCACZfSqf66edzne40xjRDsHD7z05fnh0V2xKsZvIZKIeCzA+bzHaleZS2 + glKax5awQ8gYq+R5OPa1HroChr2StWE6sxqbbDq1WZQkjSDsPmxjnFfUAwn7NtTdxVfZ1kbIedNB + bndZqwZgStwsFLxccbJYwZMkjF3GohRAKX3M29HseijONbfvMuhLz43O0QMFQXY0F56plXDrbJaL + uXXESxDUoiOKW2iAfop7VDpWi1mmHF82KbjJPj7N1yLJab3oL77D9ijy/XLBRN7DNaSLH1mc9DrQ + FnCc8ZGGT7JTYfhpT/i/FHxIZ6kbYUgKweneiRO4W4hT22WbcffpJZSOsVNArYLk+vAuLGoTcIve + bXpAMaRSAvyIku5L3UOSrg1oggLu0Pbc3y2+ZgqbGawn2lJac0Q/WLPlj6i0lAI8O/bSY68NOr9+ + xjkVRjZhp8LQxfpUmKKgWtZRF2VhhTis8GRpJHNi/hSAivLrRBLx+eV58jI+ZmmbjyMfcfw2qgHz + 08hr9GXenJ591maQ1ut69Zf7l8s1i8r45qoN9BgHYUgeY58MZ0ngNtuPqR6kKBo4g7auRqYDjVst + o9y+z7V5hzb8ce4+9IAYPQqSu1V2t5hks/1q5AqxYaEBjWHH3eejwRwQjlNLL7MkDkpftG0DhN8l + 6iQMjh18EK8tQY+8IxQuMOuXGOdDM+GAUTncD9Up9Z/2TqV01prUHi2gItThFHAKAiqA0Ow7bELz + G3tTsxOOvJiKdFWFSTEN9x/lR6l63ZOAUAoIQkbEMNZ2ubXjB4crC68IBT6UF+j7/k4gdSoxhRRx + euYz/xgLsttEQMUjzvFPasCOfoprdC4t82wzWQzvRjNVOVQYUkpZ2PbH/sdRxvrPzj++f9VP4tDz + g+gIHsgYoa0oToLDLL4QNoaC0UkrA/sQ13Sj33Rg3/i+tGIb3sl0uLSbXr7MJWNtIFvpdsdcMlYD + 2UpXZTjs1RmqgOVksjJma/riuZ+kMDUGyDOnQOrPYJcdYlm0djlkExoKQVCBIPPz0RIJtYZ05hC5 + u9gTRDk1bTDPTs/PfjkzYyh2ZTG8lRDyi5JGQz/FkTyR3z0v6mX0Aat4Y6hwOx/0zyc5WxJFPdGH + aYHT+e30Cm5f5Sew+tYSjx0p7pMlGRvomVEhNrjsVdx+za9aKhJNLHeWUc/EPB6JFLaSyyyb//f+ + LjMGtj6C5vEmgmdbcJEORgXtimyuhEebeGFT2ViDPDXeWz9YqbgrbSp029EGerKy4pSdYDoZzMFq + HBAb2bOJJdENGQpVCcyxCTqyQXBR0WUQTqtshPqPEIVs5wD1/mrLsCc2rSJxL+E9+T2Ud63h8zmZ + NzhhLDnbZpqTxNjjqVJK+/Sd2illsRfFqkvtNW1cZOYLbV+ejm9ECYlykskPvWUHnGwEh6OeCltG + osEHF8BpbpEl1fImO4kKmSQvFN2YTPFcbJlwdSCwDEXQm4erjdobBGEam993fJuNvywXcKeb/n2I + nKaKeZ5worSwi1jhs82mN+3jnV2YBwEsIl4jZNC/Wk0nN22TI6NA1QH4sXsqE93uWgeAkqt1AHBV + 6m7/fMer1NKcsbLuNuQ8iHg44DximFsgCgFo0RCzKszD/s1sM0a/snASDKzMa+2dkdGk/jdM07uC + HvfZIBJPjqhiepQjUSMMZjaEvf6LkQ1+M7sH8ZJd4wRT/cWKfP++Xy3S/jQUd2v0nsk0X23I8WIQ + 4/zK+l+msxmywC6+wwxT4S1rwZPC9u2WV+O09XZFQ6Q2acLpAdMgwnL4cso+rnt43aGIfElrEQMj + 5jDXh2nDuFpcbwJFw0QOyvgfxVdxr6vn2yKgqpnernnS4kM+9JwazfKF1Qb0Td36/zZgGcNIY8H+ + akEopZj2hu8FPYA7ZRRULCpNXpCmIWX7JhbxkUHU90l1yuqM81kkvoM+i6pf0FnOoSip2oMWUJyp + PG8PQl/tNs0/bZbVNiC7n6yfICTbXWpVSByV7TY0p+HvSPSP6H5jYLhDdNukXtBA/Au3qWLD618t + 5hPXFagUFm77Mr2oZTkHPdPGm4lNVNyZcNHyZ65XcGgKk/WsrzFUsF7r02n/NsOQljAMYWGOVit0 + wk/gthkYrCuxWm9wwl9k4/8vHUPWUzi2DX/6PLtlvTX8R9wE//B7YeL5CSf4XPx3mqQEvxmTYSlb + tRBgBEQmzGx4Q2XxVj9Kc11YwIyQ4HYhjbkXMUXjCof9oDI+ewcOkJ5wpzX45LJIOkTZ4oEMBKl5 + s3cy6YGJLR5MSJUvYbiPDu1XN4mknW2DPGCUvmO/ZfC3Yfg3e/22QnXpKtE1otrv8wvYE9399XS7 + k80nJZdsPrpKNt/l75/9sskHHbPLV3jy4jmYJSGPB2EcB6FMOXlvqMbo0wI1GKyq0RfkByNg1MVG + 2FbQCJOm0+Vm7R/MwhaC8c3jKvvPMhtPr2GgqyFqO9oucVbr0c1iG6C0msnJE9gPyjQ+zZF4mgbn + MDhmqNxyyga7kkfrmpQjXpuPimWFSXOSK4krABrrRqeZuk3zshFtsGBt688W34rxlGUq49OP578o + E0eS4J3imXX7bXQPc2R6cwv2Wl7A7cLkYMseTkllMEU+E2BkP0nWBIX1dk6GNikUTZoifmG8uzIN + dkr4wfhHPbmoRGf3XaE7X0rtqLLE+OyMRaAasjYqqX7GTSUtmjBUUn2xER/WSu3a9XezFawcDiKm + ENxb4qxv17xaT4nDylfVx4oLMLF34TFrx7Uqn3EHE6MmSmBi4uI+GZRSnKjnTsKnjCrWIf+K+nCJ + pIblkd+GGhZvd6SGFZIr1LB41eBQrIKKRah+lslhQef2IjbAn6FCjjuURXEXTNhfl9/wAMZBDZ7i + J7HXOxSx67HLPLrn+vtzoGyZr6Y2lFRiR/usBSkr3e6IHS0kV7Cj8SptKK8v/iEOghJ4dBKXC/mf + RzwMvXgAP9Ig1MEvNbUVkJJatLXod6uvjCteavwlrOwmB8FI+cjeHVRK5bqCfRp9x6l8tZlUcOZj + VuKcNgJAceD7iW9STRfWo1G9JgvRaKrgPlHrTG8e1Z74kLrOnTNOWYiJUJgwurTov13Mbqat0I8w + 4oVO75os0djnNWgp+fRmPprJ8r3xaNLCcfUEPP56y2Ckm5jDVoySHECn0VKqQyw5Yj6AaPeVTre7 + wZGS5DIcqbhKK/0fp2c1aKQl8mXkhmF+kvgh6A2gozEFd0fsg/eUFPV1NN4s8HNX8MCFaVziODhd + 37BgObDToIShrJS34XoxJJmZxPnGGfTs7Ov6qLCbS1I/ff0PW+LnQQAzpUVqKf+RKz2Xu80/RuOq + 6qJulsAdb0DdndqwHXAUN3ljYGGnXhW2o5xaYe8wzEYvNbDePVipmNJobznoTwIzD+aU6iuhpg2E + YQPmzAJU9hv4s9EM9xkvg6QOLEcI58xj5aZgn1ktlMRSebIflB015p6b8sCvV6iGeqIUX9VSqyK/ + HKMv1KoUtphyJ9UoTOe3Gex/NczQdp6fKTCKuAd6Ye/nncs9XMJ6i4f515OvjFtR3dC4elXEh8C7 + 9avrjkOnlGT3aJ4fyAwoa0q5Ph/wmACtltNsDHY6ZkLYkuDAbDQbG4TiquDmODUsJBeNdG9ZdS4p + 3GLwTjK2qQy+ccTr1GMQkDYJaBvHpyBvY/M7NP/YGJTRAbgtznLwoMu+wW+4qUv3rKDOHalSqg5S + CTjolLHVoeWoTlfa0Rlhm3FSx/at6j4cizAm4imkuW9hcdDtbqEXklwOvYirkq3m9LIaevH8auiF + sTBg/oAxShtCPeR3AUp6CW3+Qw4NccYtZyD/z02ovTVqoQhURHpZ/8x/51Mo8houZCKmIafS6Ppa + pJdbQgSAkem7F4lulqVys1p8g4MK/ox7HEw2dJ8Kn+p4tAK7up8vNit4n4FViJiPZmuZECYyxYwE + NZPE7vfLf+hUsYiFhB/LCVp1ucCE6q9lMI520QX0kFA3VbbzurbQfkuGwY8LcXhpFDJqrH4kHfr9 + KHyhPybiobr2tLCbYl/59P30NDj2WSufvnzG1aevmrB8+vIi7ZOTDSywTV5LDKKextycONEgCD+U + paN4/klgH2srvaB5Cd6yY69lZIaecY7MyCbsyAxdpK9YRGIygSkpyglUNObV728QYlvCaVkxGilY + xGgQAqKFW9i9prqLL0c10uRfGS0xPXntGD56As4iPWmIaebVB99vwTRDt7tFhUhyOSokrurqUxZU + nLhpwspBoSGcCTwcRKGnUDouYaubCewqOKDhfV/VhGavFxvMH1/3P79lw6BI4Hs7BJ1jlp/ocrm8 + +JsJo7G+XS02N7eYm7faTNcafEadEfnmaih98ahBXG3W5AHNc1m5ppWuqdHCGGaM2KdVMSkY5k0c + o+ZDteWkXjPlQRozDxlJyzEpMXBDc+DqOUijtLGelAWhD0pjSUmsvGHJFxPsKc7Mt7TfvdELg2Uv + XhT6/+799POkJxaJjrQFcSqTUsU2VjtIzrpI7JHW05jaKv9AybQtfOyHyN1SKXFQGaWYglav9Ep0 + dfD4PiXsltTpbkfv4PLE/VKCt+o7njw1t+5LbofnvgAjQkuPYqG2vdobgb2LSkIeyJqd8lZaDPLW + DtYEVOOwyIM648esjRqun3HPg6ImSnlQ4iKdy8vsugigJCH853Q4m37JZA23kXFHaYI9cdsvO+/r + n4PgHkqX6VERpUeBUSQUKvbLpVmLbBaPb1n0WzYi9JHssn/hAjY8pFLow9uMeJSYU8woFlsaLvz2 + izD2qFwJuv81W4nStXyNLj1V1EbFuoe/QcwiyhYQQVEaLgQq3pHAsVc2Vat8JhE16KhKgEdkQJcS + XvetMyoVF4P9M51nv4BmkMEToJsfKj4NaJhK62pL73eX8e8j9QfvtR1AgkbyOD3oZRh83yKj+ZoO + 9f1Qf+JIwWWHgbvdRbe7wmWj5CpcNlyl/f30rOrKDljil+Gyh5wjl+2A8ziMZeE44qHBFuPD22fr + +xkotqd9cokiCil6X/v32ShX2Xen47xaQKBWu82L5jfVWIMlw5KggkyNHYAZPTyDHpRhBWwC9EaU + 6iRlXsjLlod8M5TbnFnnJU2Mnkpo77RuhEDHX4hwqYBZGfRHiE8ig7RjAYyCRgCYB0rXIg+1ANgo + 5GH4VqHT0WVZBE2qay4d5v2b2eJKbeHqxDuxo8CFi5xqIbMT5ZiFG8AwIoAWSfcAR81kSkFdnEQF + XjSnvH+J/lU3gutttcO1KPfdlDTDYUbhwZrx2q3673+y/dBMX6/Dkt9AgihuW19OQ7CXoB0mHOFO + nn7c+zRI6KDerx9qCyceo18vQFdyj0bS7U5buJRc2sLpapFQXfGdIVJdam/iwYvnPGReHA/gRxRI + tf6PLysQ9W1ppEjXeKH+lyItU6TPyow+r9/+psxeAy/LDDxWcfjtXBCJf0Xi3l6+rhFn7dLwHssM + DwOCMsfTwLArMK6J0/ntaIlAJ7NFjo/nm9laHMij/iQTxwH8W2cD4JPoniLr+uPrdzqWyWIWdoL+ + nzKx1rak0uwweChrub7Lzm4brD9kpiK6Nw/nnvlBMl3mz5TtcmAcI2CpJ8529KqKWIxY6a0GIuCc + U5JwsRhb2RYoQHwTY/ntPmY7yWahgpy3F7AjtwD+FLe7gUeR5DJ4lLhK58fbzxcVEwA/agX3M/Hj + MAwHCRwtiUSiPVMqDXzat4ZdJodkoP3ZoIYiN8lcwOUVuRBUl4ob38Vo/svnMUcpgltNuComi29z + TBkY3eFtU9jCdAOj1Xou9NGJKlnuv10Lwjv1Kzxxu7kbzUH0zZm4Ef7xqshTpwMPHqq3SkhTs4+0 + oJHjhmEyI/cr/M9tC6QtOcXZ+LaZFgd0q1KGr1FPAKpgknjxA+Tw1HxtSjdVn3h2bwRL6r7uiQIN + zPKyVWIw8eGSxm9nrMwsL9ktxlGojz14uel/M1HEXnxNFIQXFCL3rsnSw7Wh4SWD9CmchY9+hinf + t89T6VEtknwmq417EIWHKSWhdpIhtdtf6I7Lvle156OUiD5MSssPUisadJr/aSWHaCUdUjB147QV + Qt62dtoqBSmVPlLfa+UjxdsdfaRCcsVHilelgX15GdZwCgZVJ2kYYqrBAEYujXy7wLBSbtGHvWez + KtAZzdpY2PzOfvsXI3QAaZjnebiVYXAxLysrTU5UxsPI99KKF3XPFGHDTE4SxmDllOtyxK5doEfa + CCppU2EOFnexuOyRPcSKV93rfZJHANywwHDtsvYjNXyQEzGRhWZxtvjOdOKamCaFGzSV8CcSSrc0 + Bi1VhnpW+N1xnSQghGETZaJd2zxUpSxbDukmF2pdOaH3BAq8ny6PH7Lzll8Qq4dGYgdz6dSheYVp + Qggl2Xdocg4b+/bEwocwihMqNf144QWhu1FMtzvt+VJyac+nq7Tnwz5UjYtFcWJv+eGL5wGHn2wA + P0TcVxjF2u1eYhTfOk0Khhrt/7NR94vjopEEVDUkhlRLzpewTZwYjGWi0CLvv78DW0mcPfAvf9l/ + drVY3xpBA9n7/Ig8lJeLO6bcxOKBVnS3ldezCz5jv4lcPvGjqOawqiH0sQpiSkmG5vGXggHGy6Bc + lQGtPa0iv9EDIKX2/sxfv4fLQh9xUZB0xEQf+XF1z1M7iPEtJHnA9K7e3K3sRU+S1v0JJH5rEz72 + a6jgd67cnQPPQW8TZ4gj/Xo9sznlaB5M3w6ChEFEiTjkbz9U6OE4l+qoY7peg58lx17SBveseMi5 + YkM1YpdsyKt25Y36aT0neEcZ/2uhZiW+ctKHbdi5xO2uTvqwhp1LXCV95Pzz+yrBQ5iGVSc91uim + g8Rjia8IHtYj2OnfKzXLcNjSYX6+ntZYlmgyoJX0FUkY8QRAv9sIzj2VMKGS2nHO6xrOGpqrpEQv + YEBGwPRPfY8f7DVvMGiXq2xov8cW/NDAC6Iq3cL5+4GNz+PB/C/70+02bPM2TmtkusgrD3dJbBkk + 1EGs7U+VCNuFb7UEdDoQPXh2eqR5mK3BSkDXcfmqh7Y+BPtBZyOWetAM6RHHAToWfnAPasag91qX + dtigHBgNG5vJBGfnb/rPti44mrxHJ1Z2QfA3PGUF7IZWD/P5AmcQyiCHRQHWQdvb7J7SzMTOcFKD + yHQ3ukMCydG8fyZ7NLwUPKzUxhtaRmf5+s0w4j3cnIooSUJaYRAnheOj9CauEQKxfrQUPTgtHu/A + +yLmunC3GDMGRnlHXXAxf9T6aeX7xcl1SKPmpHUdr4dtdNvbMkaY5nLmBn8b4qTe9sUeGRu30Cd4 + XJ2gLY9Lp6GSVS9d4dnvwoAtMvqVEqRprtpRlHruFKVeLUWppylKfz09Z341V4HXcJTyiEVROuAR + F9FWVIN+xfrjJUILzQW7kAZ6mKIHFY1saVdKM/rzAjbHIfzXLwqb4HssipTcTW74giUw4wKdZv1P + G2Vcw7/QU3IHEw701XvY9VeEcVTyo4L46QK+FiJliSiqIrEaK+6qX0dLePsOchW8KOE+j+u1LgSH + WaxKpFdYPOoirAoiNh6t4Es3EZUGfjMjZ+iHYYXdSqFyqcUqv5jto/Gixs7WCq0EsC3PFE8bq1UR + ZC4M/t37aWdWj1ZUQXJFBJo4hKYPV/ZedLHV3poEkcQBMTskapHy6X/dD/KtuQa7wLG5Va8oJrdr + qKFN9L0nJ7Q5cG400c0voLZeruh6WPgmbQmOXjzkStijG7EYe9RV2kxv75cLyuQ34LWrWB2GMD/k + PrwLeQ68lPI5r+T2kGfLtSPoQgi6tZidYhqtp0tHGz5UjpYweoO47K38LPIZVzeLasLyssiLsq5y + cc1khPjN8GrxXY+h9RvYJHBbT9wsXC8pk9zsIUHmuRAJ718sEVlUdyU+34qwncAblJ0Q2h1X6feN + upA7nsePZUZ4LCbSneOhJnykPYvpWdzesygfcvYsqkZsz6K8SjMdRniMFZACyer7PdJDrm/vZ2Yh + ncmhsPt2u2VcILFHPAsRp8r3s6FmEqupwiWB2/DI9UnmScSAgyxJ5P7AR77dX22QwHmeNRZFdUz7 + 0OJQc19w7euSKBuh5qNsmRLNjnXnniaMCrHbCP9BNaBJrM72KOLHXtzuaJfPuJ7sqgnrYJcX6Vxa + jSYSVsd0MhEt3XI0XfVMLujZ6K5QYNWXvAAJPRSD6zEIOZeF/WS5SkkaMMUQ5+zVAVka+2EyukOD + 2xazOy8m8ml7KF6spfkcpbRxmwqp0Z9cOMvaehNgf6DMSwF4N7xsfsOH8oW0WdGF0yglfaxpZuzc + FzrJGUnUOkp8duxFrZYRPeK6imQD1iKia7SG8uXcV8Q0y3WJGEheuoR7engjrRKE9RFqMdkPZCFl + Ak4Mp4eMe+Nn+TIlBmfn1bI3WM4PnUVemNKOKsdntRMvpXAdeqHxYCuie9dnH56psqNkW0chuxgq + d6fsuisJhyYAJ6mkLAqSFlSLdLsjZZGQXKEswquSavH0LK7wDoRpXCUs8kP83wH85DyRB6lZuzOy + wq/P3p6eHwn/0MXtQtT7m7yMmodCOoZE7JYW1RcYsLWA697Aoi5o/RTdHzyy8o3rIr84u1tmCE+4 + yojvXCRzFvegZjwWNTFg2cuQ1dlk7CdLTAVCZKO18kTCN4jreE8MkFbbfeg31tUmKUsYK3sPYTj6 + 9rA1kT6GzGtKHGuQXYKyafJN8iRmDcE9S7D2Ihb7q2GL0ze7hjUhtI9VZlG6W8FEr5GhIAXFOeDl + eGp+hyjEcpQ0E0odUI/F8+JHfMdr9f5EE7aHS1e7N+M0xk3bFdTIoSwZRlNIcv4WLtqpmAt45/bZ + o5SCLed6vWLYBahyg4zdmvfhCTxhpJULOa3aKDQeKavNu0vL7sD+g49s37HcRqYDLTj1lNMneJke + s6Cdz0c+4+ryUU1YHh95UVqTyyXzpC4ceZdUtT+uMsv1tv2xfwFShn5vRT/Qy+OnqfTyUCmlUYQA + z2WIo7Ovk1IbeK1Fb1GiO1hxe+nUB9HO+X5EqptsE+5xJsFzHeYnQ23nPC8OaWSbmpsyhfsYoD+m + jf2qHnFFfZQNWKCPdK3q+aFvIl4HplZ2dzW7t8zZur+rL/hptGQVUlzZOII+hkFCqzgwjMySrAMW + cBup2xBUaQ3UFgtX/cTbDOZ2d3edy4pR1CC14K/2t+7UpKXE2E8fAj9yL86k251sMym5ZJvRVcn+ + +PZzJSOEwzK1C3WiF0M/DoJo4IMmLac5wpPCXCgQKqZzRW/1LD/qLzbrHO35i1F+0oehN0GaYVi+ + ZkgvBQqpBE2TNC7zGXRt3C1PW8f1mp1SuoxmWDtg+9RxeARbXamGpVrSTaxTJ0VRymjeP82Xw3fT + XPz/2X0+HN/nuJvgsTO+7T979e7d2fDs4tVRf7JAlOUTgaMwGgsutDIwhG6RaiVwdyAYO8lDYmDY + nb851dDaSHaIdI5JwBrxW9WLNygDXXJuNeOz/o/G6+kCG3VC0OB1xRLjJZxJPManEgBTotLYyjYq + FvzlUK6yWeba57pl1xE/ThrIolQ4TdzPOrrdsShVSK4UpeJVOus+v3+D+kKpKjUuVYHwEIEIYp54 + gxCsZUzzFDQZdjXiGPOglI5dquOewn1TM+e8HzzLoO0jA5LOPg2tKnBxEn6eXge8cg4aLDA7Gmyo + JQn90iFp1j2kUcxCr+Lx295SPaZS3JjxaDVi1xZoM9FopQRNsEtq70d9pp6YTLqWMw65NKjrgAba + QRUEVbvZ6OouLVV8ZLxrj7nitB8EEVn2d5vZejqEAXMPVAayGNRxRjmddYfKfHDCxZRrYrDTFGy3 + dj4l+YwzMZhswiYGo4sOlFKT6VCM4wCz74djUCEn2XgEJuj8fga/lVOHVGvoUwq0Tymxkl8Npe9m + dj9e5I06X4t0lMPgjKm2+Ufzjj0UsdYuerW0WdbPrdglZPy7z9lOUqG6bPUH5UiloQoB+6xVCBhu + dw0Bo+RqCBiuSpz8y/NK/S3aidUQMPOSKA0H8DMV7lcFk0ke1A/DUY5pHTeCgsAOoOm/ZDp3F8Mj + BJ6fL6s1ui7g+Rhs3T9Ua+JweH4Uh1EFet94nYZIqhfZkc2intaSWYDu146DpUiFgR31ffve5IdH + bC4fdKkDhr2HH7wIHPopZV3TvmFnkB6SZI0ihYvB6MThIgOvJNIhFbwJqsktdtElDGFPzhnrHR4T + qkE7WxLCBMRJZxU+7KdWRbqoI3kbHTPesqhDPuRc1KEasYs65FUVrsslSzX3LmsCcZdxr/EP+Kyo + 8QjDoOdsSrQJx+1pmDwKkbCxBgrM0UVtQmh3GXQHR/tio01EABJZDf+L9u3ZyFaNRmd983fBMfPa + rX35jOvSV01YK19elNVI918kHcTyfrVBSGbFkWSG77b/7QujVNYwpuXvEdqufsjhWHPfDWQWhzDI + GhCnOhXWvLO0Zi3z6TS6G91gIi8YMfv7dDvjeeHSB1H+wh3YG+1F/xwUXnpLS0PysMD1/LDv2Zmn + OpF0zh5L2tA54+2OdM5CcoXOGa/KqOzFeYWRBv4aVdicue8ngTfgfhB6sY2YKxBKbFiS13dLn1P1 + 8+vVVz9cDoThnWkWAfiz4hM3VfzXF/g0sXQbcOnCsnq9Wlb5bmpNe4vE2PNZg1HDvCBMsQj9gcK1 + eTZeZesFfBEZrbbq1UP4vyZYHNWx3o8a4h7OA21FsTjqAD+/O/x7lorV9hW2Ycza1XmbbQXu4Y77 + S/q81PaU6hxF/13SLtVJP+OcoyibsHMU6SJtN5/PL7AELBvpyule9RIugulCGH0w7wWScjaxGhBp + iT4Vu8USzQafqVcniFUPxxfWMFiGBuHqrkcbM5X2L6n/0wP5qQM28AOr3Lq91RHyRPhr9jmYA09n + 58Z+eOwFrSY+PeI672UD1rSna1vwG4rQCqVw6D8YEmGeMy8W8zwAZZ/0T2VRm9WQMsXGYe4/HHRT + i5DFY5VFq6mhcEDP+TvmHftem7mhnnGcHLoJc3aoi6S/zW/vmEO47S5++yz829FyufwEb0Wc1qN1 + 2TZ8NV5einkTcI/KHH2yDSeZAZBlVM2ISMRSMvpI4Jahghy7yiaSF8G1AvKBmtu2E/vWZII7ygh0 + V4vJIVbVj2HYbsAI213K0Jlh2klFY2ce4BArfsTp3DjvD7CY1U5AObW/XQRxC0Y4ut3JepOSS9Yb + XaXV/+n3V5VgF095iU80fvEcLIoIzTf4mQaYKC2CXWWKzBzW1gRmyxJT+cTEX2wQAwnWBgxJKUk0 + +z5dy+U8XZMKJMy0T5tJNQBWlWyHwlgTElgaJrAfVTJqm918VrmR1YhfKkA00pHMRgyg+TFM5s3V + ZqaInatFep7fKJOFAejQNUSkh41yD7+5zn9NPU/osfuWjmttVoZx9Kds9/ReurBa9GAHSx6LyoRy + PDh4yAJfdQA3MVEEQN7eHKygrKkSqEEeiCPnlRjPyRSXXrswBkxovL36qXdu5ThNxaNuM7wirzmQ + FXiUGPnygxdxd3cT3e60YUnJpQ2Lrkp07It/lTcslnKvFJ3nL4ZMaK2wXzHmy9j8R5t0IFstvuMy + gf/O+88YpqBDt74fka9kfTtdqD/SrRaI/EBA6ZpAfKruE/kF8fSRD2GmOnzDDViRqo4TdeepqA65 + VzUF6IShfPUiUR0liWZF8YFSsgnHe/X9QIYoC+saHTVhWKFp3jEEJYDHuNoEYlU3NWNgMlYQA0Wj + SNiYLUDhKNE+BXA4l3MrB5bvSzbT+xN875M+qRzwKFY9THo4/9Xmjb4a4WZLCTrZtMmqE6dFrUHI + C2uv5mM4GeBtZWzVxkJGiZzyrRbm+Lfx3D0KGZXIcojoPKhbRu2OykTiZO9anC6vxbDYCO+EM2wq + JEggg30CLZwAz1DMgr7OAeo3k/A49qLdK6cs8ApMzfhtW+KN4iHn9AvViJ1+Ia+WTW2Nt3C1Wowm + BB2dIXg7LNvp1QZf46hHfLWfP77+iHgGksjWbgzzMXwvkWwdXWSMpmLFkZsfjGYEKHI0P5+OBxrO + CqGxnH9gLD0bnjrrLOoBJ61FSy/pLeo6aS7/OL/EDBFDdQkCHiRJWipgTF4Msa7RDwbwQwCg4ox5 + LzKRrqeZKC41PWurxfVUYHEIEgD4DmISwYhgn+9VteJyBn0ZD0fVzELp0Suu1caqYNvx62JVT6pG + sSdPRj9JQpHi/ZRmok4Ci14y/9hrBdhQPOSM/6casQEA5VWFWWaD+L67Wr1UAb/CH2zIwqwPP/AP + oQTay2MaS1IeP47dzQ663ZGUR0iukPLgVVq8F5/exV7ZUcJiFpXh6IdojcJZCIYHj8JIrt53knsc + pg/t5efnp5/V0rxZQTvVQuL2aO88SsGgZ4dz7JhyDKB30A6y9S0W7A2VIwwOeOFobajas5KDwzRs + iqPDcR8EzC/jLC2y+X/hy/VPGzlgWZgGTSnHWqreF7wg9ER6L7yfjO3UQ7I6Jxs+DC5rFTWRnKyn + rZHVCr8oaY0ave6g0lC1Lin75PUHGFf3dUm3O61LKbm0LukqrcvfP1+EleyTBB0g5rKMXwwTzJYY + JHD4hHbuCRhd6nhRU/2kxB+EuPtXmg2XTuC345WmyPx9vQr/1OdqF2N1UipQlIawKtIH5WW0mvSf + jUDhv5qOj0y7GNRgActA947m8h6zph/ngTaL4whMZH14pFr75/yYhS2Vf3rGWfeXTdiqP12sP3Nr + gfSlFNTpE5lj7UmHIqjxqwWoIhODZGCgElvgr+i7xe0BfRrwxUh93z/6FCWpUoBWoyFJa5NF44QU + /xfJSQB1gaWFTVWM2v6A+GqSM09BCrHAb5duoB5xhRSSDViQQnStFV2EFoTwQH7ClOHa2kOjh0CE + 1f94d8GS2D2YRrc7HUZScukwoquSSfrXGubGFOGnTfvOe/GcJ16aJAOesJTFtTX7r2dLvhy+/zJl + yyH8O1oO882VURxe5emSeGUF15RRGj7SOECjcba2jv6T/hQaMbAWYVOFv5icRBLj8dfj/gz1BERw + RGcMaGaLsWaWFF0tn4GvPp0O6VvBl6t0edC/hRNJqnhWxiUqnw1EPKDTpWHgV3Rc+xQywNu28FUm + YGQ36cAMdr7YS8uHsWQO3NVanQLMopTbKneJytFqssE9bjcsFkOJzLDEHhk2Mieq5kwcgtdbJpFN + Ur2YIMOZ7te3xdWVinIuEExJYCytiZLwsAnWw2WlznbmB+TyBk1eJigY49FuDwcZIR2pjSM8oCnc + zHS3q4F4RwMkpbqa9dd0jTh6Eaewn6CtsD7PThFP9wzusthQPh8EIeX1FXPd2IZ+JJA9mKbiyPr1 + g++1OLLodqcjS0ouHVl0lY6ss5ef7SMLmZvSJCwlgAR4ZjEPj6w0VD4N86D/7eKNcmd8mYH4b39q + e0j7E2BP956Yn5EFyt4J41PmHXtxK4NHPeRq8ehGLJNHXW2Mdsis0xFRf65H/12M5kc95xutltFM + CtBM+lEumYOMgCc0U7hMPwOR7u4but0x/UxIrqSf4VXaft5dnrOKW5WXyc55/GII20KcxoMgxpjJ + 9g1osYIGavypf8YNCNqIBd6nT9F2XaMKwjHAXxtqx2+RfYPfcCSkXibW2EjURPYOOGT13ArVLhR4 + rxg7Zm1M0uIh111IN2LtQuoqzbXbTS5dfwUjHWw4/9mg6g4nt9QAnp1/fP+qH8egHach7DS/f/yt + 7rZ3IK2HIsX2w9JIcR+FOumB0uj2oT06nLPo4UkD9+dFanzrhyBa8uKAKL1tJRwdDCLPrwWkvt6C + U99S/fLNXTM66JYsmyCiXOXlIl8PbRA1JXq7Hr89g8Kve28t+AA8Ki+majrYejN4uBYu+UnVH7VN + hu+CoQesa5rNkvRyb8RMmiME0GDuQ6pzB8sXYyO2uZ2ittkykapE5uE/WyRaqAdcq5FJerUeWVyn + jf7jRY1S4TGM+JUQnOCoB20DlAo/DPy6HNEq/olKwRbfQ8NkCMXj42rJvG1Zmei6bQDasEO8USN2 + JOchbBvuyexaH7AhL4PQpQGtqRQLoT4KKzBbdkjs7TOyPfEtlbITceH8CTANoeQlVuQrLgyfLZ9v + dpkckBNYWB5RTVec4Vi6B4d5MsAt5qupPSaWe4zv+S3A4cTtjvuLkFzZXfCq3ls+sGoCOvxPZXNJ + Ex5HgzT1/bDV1kLMG5WtZca2ZnyDnCbKjtLe0kjQ9SB7S1MD++8tNRJd9xZraHv0LTVmQRCxQzaX + R0wwNjYTv9p1ZyaXv9hmollE/egNWIltWOL1M672qWrCMk/lRdocJmCqLTZ5bT6AehotzSiOnkZB + 9j6JfIwIHv9+4aWBu8eJbnfawKXk0gZOV2kDf/O+iu7phwjSazqc/BfDyAtYEA8ij+v6ISNQhsV8 + X9EqxbCNUWusAoDPzs7fHA20npzL4ZjdU7EJPvXs9MgM+jw7Hy3Z8gg/n0qe6U/hwUIbFyfBm+my + 5hzAmI/ukvCVlrol8srBkkRBWyKisNzjxshrwLmvqnd+RONmbNRPsCKAlw8n1ewvDk3WxWQDL7BJ + EhtfuCjqtF7XDrZWS6Ac5ZW7XxKbuIjtPer07OHC0mmWmLUkuy4OpLp3dNpmIlntYo+646NpXDRe + 1OO7nziHuh14XO16y/XRxuXQWYvNVf9boALcfHxdhE19kez0x4cP0Bd3M4BudzpFpOTSKUJXJU3w + m2qmT+D5djY45y+eMw7d9QaMwzmiTpHrqc4ctXfS29Hsun+1mk7gq8Ei3lXy7jcZ8QyhwfyqKt9V + 4OKt/8tH0oinW/ypdgwjsevzzXJNDsdvEJShzyovP9kgFhPNX0muZX16m2QrZqUiUaNFNTy9Mxj2 + FUYZzybjAHa3oZqOanpaOS/VLj27PH95ZHZs0J8tYNJO/5vlKqsFP+qw+Kh4CZ4qFekvMadTambr + 29Vic3Pbf/vMPxqa40wlqDaG279gfS1ha5qNcJ72/3V2ej4E/edNkTETpH7Uk58Al5nbx3Ne0I8O + HOCJzWj7dFHshrAhZPOv2WyxdH/DkPnk7ldNNFMLPiAYQGr2oLX7W/R/5+7ipML7TJtN/mvmg1nS + LqFaP+VsOulmbONJXaZNtZRUJY60nkp6xKgmoa3f2mUPl9k6AItrTVhXiaIFCQKhtRSRjVV2t5hk + s/JBVWV5/CnS0g4D24jCqDQ6+wepQFgsVob6UvSJdrlZvDgtoLZhgnXB2Nkm9oSUew4kz3tpj63i + T9sLxTthk2OJR7VH8hMN5WL6NKwup1Yk2B1B4IL1LsnawOpoQ9aGtzuStQnJFbI2vEra4Ic/LuOK + NhiV877DF8OAxyHzBgGHLTmVdb0GsKocWtMTOqgCOYhZIWtvxovlEjEkbkdYKD8nQs7L3xDTSeiX + H+7zeC8uETOA46ehH9fY/ZaXcTqfZ6taAF0vbGZYYyxErK2q03mj0DSwEh7P1Tyrvmx9ljVmh1cJ + Q0wgEuuNtMZpMwbIxoRCpgs1rMLDKPH+Xc7mrrbRO6v7RLXvd7mYsKVNWLL143/M1sN/CeLUf/kC + zOQOtLhrVfmDiuanIdhOd1ORUQD9F6pQbjUwxYQ7dcaod56DYik6UwtRIu+C02c1/Up71tnZpdY3 + ecQZYf+S0mO86oF0J2LI6ZGdX8pVNwugp8zehfbDBD6wnKgT739d4KK0Lh1jEVQdW5aEk0kJypfw + Bdprom0TMTwa1uITP+pZGIWEEtZye6o0siUpqKtTMVAFYfxlcOylbZR0/YxrSZhqwqoJkxfplLvb + EZ9TMakZ83uu936Ae83WiWfee1KMNGqX2SPj4GEZbn7qQGULfN4/RfTysTlsAl8jKHGEG2rFC6qf + ceawkU3YHDZ0sVxPUAKvptqnil3yeXUHC9jEKV7jFUliw8SOkXgBcbPuFS3QM0ZihhsdOXDzCVhI + Fdjf7q826CEzDYQSasV2u/QhqyO6RN/uVoVIGLkrtlurbVQJRineDXPtcB6d7tg04djR/AtReMxa + QQ7pZ5z5F2QTNv8CXZQZ+Fcjme1wMZoP334+h0fLLvce/KlPf+qXvfHv4PneeHQtMiG8lCd01kfM + IgnJvgvlXQxO4zzfkoPeKZRiwDwqyzQFwitcC9p7ZyuFeQr9oZBytcqusxkMUN8dIB2RfeKq8rCX + yfMIidxRWDzdolArYGkU6gdHruaQ2D7CQPhKa2Zl+wWuVmWkVmXymh97rRzo+hnXVamasFalvEhr + cTpfrG5GOOIFqJOeEGDQmOdmm3sF08Bb0M3FcmV+KJfrYZxA+DxVTVQ7cIiK30bqdqhSLwn1++mJ + ttcKSxK1VnWpn5j0oy0T2P2Uefw6RHxHn4XWbMhWexMIBCSqcY5WP8bWxtx1mo4b3nqi66zFKEmO + GW+HISgecUYQpAZs/EBxrSbkhpY6xasW9i7QGHuztwrdHOrkAY+kFU+HsTrZbTLmA3Trp0BDs290 + iEW+NSquAZk9z6rUzpJtSV+qHmqXJ1smMFVXFYPpUjGYEjS2mh515By99f2KjCbzr+cgoodyZEpt + rKab1zDdJpkJw92y0O9AwTuyJx4z/YJFAeneB74GbGuxsL7ngmjha1YKfpPePRQfVSCOfTw9/xXU + 6HyMOGi/uEQbQ48QxBtasAP2V/f9m9lmvMjdVXQeppL/ub6BA3JsDsof0TK4TJTZfygf0oHQrdHP + Y1JOHDaIll0ByVZovnZ7aRUHby+yzfrsiA4JBKXGiO7VJ3miBJ5EnfCDVqRHeLsj6oSQXEGdwKt0 + gvz6/hOvgE4kJQ4RJD2C/iY8GsRxAn+XZ478SpKVmMLsv07nvAP8XpYy7scVNtlSk/XgupGNWmFE + ohPEIfZYd+ATl9kKpucv69tVBp8YJ6rdwTXMD5gQt9MrTBDHOLTa/ARBDxyT3xarL/1nH19/Oup/ + g82uRGokExMN4ISpzDPHDetEp1hOYMHf34m5QGSdaIIgIshK7rKoaH8f1GS6YUr01WYCXRl/6eFs + 0HAacZiSKkBew5oT+7CDjoWxDq2WjgPVzQVM6bl8aht4RI3CcQBzkN5rJbeo9g2pcXJ+PCn0EfEB + dm/XsL1EhV9njWHV/cK8uArMz3YQdThKsyhE8/K8P0x8B6DOT4UhXW3tTJEtxC0Aheh2V6KFuAoo + RFdpa//tj9cVNvLQK7GRI8WC70csSga+D/uxTMz/J0w82EWK6NKn01fn78qEJvDn9Wg6x691PRt9 + FfmP84UxdZ+9+fjpaKBYOhYbkQn+233mLyUJ92x6c7uGRXAN44qbqoBKROwF3JXkRMB/F5SKS8Eu + tJ4it5AEWDaTeHLE4Zjp9BrUr8SxBI1W+c47g0Gi0ZlkQreAzajxbArScBv7VJwEEfd5R+fTaUVu + 78/zXXs4vTUagpf6FOEKdcbIIXg+aRRIwJgixkBAnFU5TaTWXRA1iWh5V6yiOPfwka2T1elk209S + N5Sn23BmPEZYUTA79z1GOmFuUmcApeP+HfZk7q7e0+1uJb4kuVziK65K9f7idVop8fWTuFzi+zwN + vdQbwHdVBb5Ca/mG2BtX0OwQfQCjuVHwQcr+Kksru2r23Yyn2dVUcRM1acJZoCufHgBfDt+BDaK+ + fA/jfLDqS724CSPY6mBBy6FHifzd/6XZRNucRp2zWU75riZ6b2f3Y22pm7vg9o9yAloj/EnBC/dn + 2WgiduY8+wrzQ9EMTLJrmLP5oD+6gomMXpa7zWw9BeV2Aq3cYbE97ur3A8miJCCW5EM9nFC6nCpm + BEAMo4YrA8Z3aPbLYRfeUkoVa925Or6tHYOthDW5tfyQYMSMr7AFWXBLSUMsxNjrZJXduOedtZKw + I47MEvudHF9E7XE6uRKUZ//YS9vB7dMzznj7sgkbcJ8uqkDM9AYWD1gnoKXMpkvMqhjDdM6k/iB+ + lkMuez1k9gfTLQPOZQoGOehADsVmdi0B97hsW8k7gpbcL6QdCIDIIiYLA201rYPX5qC3+pYV7txj + t9jXoyBvP5GQM4+p5qw80bvI3PLTRM6vznLBDnTgqi2LK+ZmP3RXy+h2V+ZmlFxlboarkkLt4lMF + lo+lnEdl6ubnYM7D5QH8SBLJKpIX2Ba/n77pP9ssMZAxulN+wamu+jw6sbQHAtLH0/wWzDNQD75m + s1K0B9NiEWeU1LuL1bwGxa+M0N+vdADtxmZsEy+0ueMtAI8Q1YpKDVSlyboa1waLO/aaCDTSFAGW + K40VWdc4Es9wPI60OWG9CEua0LjsF9HqYhNlRRNjRdQ0UKrrmo5qv+886LeYTKJaq/wlemIqFyzM + PvuJKCmimk6K5yrzzeSg2B4VxNmNd+2zSpxiZPvX0uJ8FSP6yoYr2d0mLqLal9q+DrfKVruxRsdG + Q/TYi9pxktEzzpxksgmbk4wu0uZ6KhIbe29ff9ZfhS7plVJO1lEyMX0i9btK7IvtyENRAtVEHF5T + gN9eiEvPUpnDq7nXmjnQBorea9F/fXHAyY9OsLI7rniZAzQKRujNbVjcto0Oj6IkLHd0tMozvLuF + gfgk+Wd2PN+KZbtFjUQruTv66Ejj3TnbHQ9k9ZS5rexnrnQWHzw85BZycofQBC8neA71GkLJcg99 + 9NQNmUa8szuuOYGBYrI+Z/x1cuy1SkJVzzieXroJ8/RSF2VtKW6Ks0V/mcGBPMHn5BV9of/b3YhZ + ZxhoupSVnrKQDq/QKwL+C0GD0faQkM78u2l+vZihV3GBpfQ089cYgFKgDpi50IKEwdWif9yCzn1q + z1vsiPuI/xl8Eb5fVHsjCdnEmLUdpKbvKX9HLT1VSnYhKDY614G8bor8O9p4uyrlDwj1/N0HOH3a + MCuoB9zITZX0Mr2pvE4unFe/X9jZFQGyMSWYWVpiOI15lIaDmMexzJt7j8bq9HpKWrsZQF4trqcz + FRu/g61JoFPCaGCHVdDtj9sZdOTbcPSXoHXykwSNKh1vKKCq/XfIedaSxFo/5Y65ppopYa7Jy/RJ + z96AMVyM+jNlLJ4eWWftQWikTQZo0UNxinsyg78V3qx7EMINhNa9pJuRGirkBX8bZkRu11hy/oD1 + LHso9oiqUDMcu4BrfxZNX625VBVpggIdHjO/XZWmesi1TFM3YtVpqqs2RLz6aT2HFdFeijTaatfg + nmTLYFHqno1HtzuyZQjJFbYMvErnxe9v/+VXiHi8wC9zZQxZmIACPYAfcSCdUtAmZqKg/xPDzXoP + pfPg95vv/p/6KFA+bnh99Yjqy8DwQIJuMt7cCThukW5mOWHmmPR2B9O/VEhjAHr18BMVFBjmqcOZ + BNbzwxYhI7rdEVhPSK4A6+FVmj9v37yqwiynrAKs9xzUDOg/JuqHkZw/Z4vpLJsMx+KHSQRSHc5p + oZuMckGWfnMLDy7vEehJKCqwZ8GTo/7kahkWuSY0Fd9eT6qI/O2T/z0EQWZpBWZP1awvF6sSrF7U + DKtnCet+XuPOP1QHjcRbsClbPDvn6e37Std6D/+Bejh/NC5dEiU92Td9ejlhRWyr7DvM581CUAa0 + 22HaHntOygkZqIz6pfYUEoWwA0ib1siwsbp2WD37geAP5AOw1oOjl9jlyUNdxU8vYaIF7MXhULRb + 8Pq5r1hfYq8V6wvc7sr6gpKrrC9wVSK0vj+tYX0JWIX1JQSzNQgHYYy431oRoQWAZU34/hra/ayA + 15ws7ka0e727X/rL/rPs/Zvw9OhEQLZfLzYrfOYay0LfvT79PJxNv2CB6DIbrXMF1ToddXGM8DDy + vTSsP0Y2eekECbiTnGotWl1qAM6VJv4WHsUh/G93+tGrbPH9/vZ+uRGlksJX8/0evTUDOAXEGNPw + mnn92gsmGHzF96QE8xwmopZ1vVjdifl/UnxttFqnuY3ZLwrbTOjr6scnYwgDv3lfK/Z3dxMm0y1z + mWKK8wILDiz3piqEg573cP4W5CqByDfwfAnjPR3DRwE7GcmG0Y77Aqt5jf3ZmvC55VRLIsI7JI/c + /UxBDFhvC6Oih8xpMzxc6lZvW5cM2OpY7aCa4cmGNrs8r4Qrm0u6ncV8AUvxwMoIiaO3r/FPKt4U + bjgANLYbGuBOiiuUtJRRdebE2v1ch7zmkx8o8Uf4v3mgvJ/xK94SxE4/4+r5VE1Yfk95UWYilgj6 + 6gj7lBT0TcKy6PUeMUSnzXnKAH11wfyoBXmquN3NHUSSy+4gcVWyJv3zTUUL84KSFobUqbEH6lky + iGFXD2T84FJo7f/EZP036oCWmtPlt+uq5lQbmLNw4j3fypE0KhKZx1MvYpVC/KfgFhrNcBLYMD9C + kxE0bguqpb/8dHrxGlSO+RgB5S/v5wn8+Dy7YUuhyaD2ObvHm3E46eYTMUqZNKOvR3dTvOO6T6cj + 6CfLmpZzU7sazfun+XL4bpqL/0dc+vF9vhZAh6vp+Lb/7NW7d2fDs4tXR1JdpqLH2xFIH/VXWKcO + u+zX0XiD/7zeYHioh3NG+6fCAGnlGChAjdX5qpftylwCj1N1ySgfL3Ix1URdSGuuH+4zLs5t+zUG + Apt1tIFj9XZ0U5cY1VTN32kuEHG918v6aePoxcjHlrWrmJ6G9e+rYCi2bsC9zsLKXsJJmxiNu4Ch + 7aJqX6sAMalLClBMr9rLoVxOs8y1z424ox3pAiEhDIBp34IBnG53QxggyWWEAXGVDjE4csIKwkCA + YTQbYeB5lHrM8wdRyuKEVwhkhf/g7IIPQZ4Kmg36325xo0S4k/7NbHE1KqWwWyh7ougcd03h+LeT + kmFHXk+LskxYB/Ob4lc0NdFROMElNzGP0k+LdVg5So1urrK66oYAPZlNlr84S72g4pDYAx4nSVKP + V0oXgr8Nw78Ns+8LDdPeiETgwRbhJL1gJ5dMqHDIzfr5LQKazCslEX7SxJ3TIHUb9lhRINFYIRE2 + 0uSqwe493ZnWwwWkMQz8mMgJfTqa5N49VG1cYXGuCubXfQcn9fknqcwI4x0N1Ndp2IUazpYploII + LUrEQYrP1rqNhi0fieJiU0vbXE3/3wYmy7xlBXLIebprYDp0xjwlv4rWTj3SHep3YqevLlw0CVWV + 6i8xVN8GUUr2OdeRIiOpLq1i69ivWpFHqsA6Co4xt6dFebV4wrW4msRbpdXikiysxmVwsxnN72cN + +o9VUd10d7mCmhoVdDUxk8ijVD9FnAJb6RSdk5YOI7R4Cgi5XdJOtKeNSIvR2zoF9u5Ulyp8FMfF + +bkQ7vXD4bw4JZ5+uPC9FglEdLsbzzZJLvNsi6ukbJ9/Oq8mgAifkM2zPQwjL07TQRixOJDK9nKD + cG1ySHJMJTOg+zBOpNIOBXagqt7/r1ByCIATNRj89vRbIUiF7M7ny5qQXVdJSNT/YVP/G3Ag44CV + dNEy+yEMGKIqRGVNtzJcqjahjBfDQhtq0mDWVqJ75w83+HZ9N2q3MHux9Hd0h+2I+A/+Ix/NRGLi + crS+/QarGueSTgZhKeE8ssBYN1eiZ0VTAzMPEfsjfhVgVIeDUUDbPKFH6BUdSkGakGNSxoy0ybwL + rsU0IA5ANbbrzBwMNbYubiztAmCkxBQfdY83diNAs+mCOwMTw8UlNFrXlel0Yh4u9QdEsbo8qsjO + qRM10FdX2EUEqFnk9zMEcdosW8OzxFHg2BBYbOv2DaljMjGpFpnfmmmR+W2IFpH1sMyzqFJVLl9/ + lq51J+7zFLnPCckn5FQH53nkB8dq+VW2nCk9tCUQrZp8+4hr2uQ8ibiFsiajO9x+9u9VG0mNXFE+ + Ie/JlxtN27IwgqpMKD+avzyfzuBMrV2ejb3owDGxhQ2LciqMrGJj0PL19G4za21EJ8yzcHUlnnPr + PJXHoaJvPJb2ZaX3JOLy1Qg2owxshmy5rovt7GVtPQQJF1WUi9fbg1Xz8Sn8ujzNEo90Czlr9iNj + 2R7WArvGnJcuLTx7x4e/+p5Wso92z2B1mKUSvtPz2+Rqitsd4TuF5Ap8J14lm+/lyzPb5gOjwo9Z + HFSSNYM0ScJgwLFwQWb9X94uvuX9gh3zerqeo2JJeXbkyb6aT4sEPFTrYaYtxlNRQiFuQJviZZax + 5fAfK7Dwhh/vF8Ev4bJwuAnr7+XVuGr94SeYC+BzoUqB7YGB7zyb55v+m838ZnpkB0543Bw6SOE1 + GaskIdyj8tx/X5eCyWKYjk7ytNknO9yYN9iM6hnA/5Wz/AdmMEI1qGtZlos8n2I03TTgdIgdEw9E + Z8SgkZ1HW778LIj6KW7Qj8iasw+jnMWU2qC/3+W7QKpCgrT+M55q7+Xg5X38ovQA/AsjXgWnADrr + FpjUO18TpYD+mFbvejhNdUpmGMa4U8UelQN0koYpxhcf2PWJXGR2QlKfhFHl7VqJEPPdeCV7mew8 + CDoxZWK5Y1fWkZMUuU2GnqyN8oIWrjG63bE2Skiu1EbhVZlM9fvLqmssSvxybdQQDJSIBwPY2kOf + qTi0WTXz+c379y910Yxybl1urqrbm1MW+ZnG9o1Y7HOvvIPZsYLxQmKDNYPZsaBmmzFdWlZDRuwW + E6h3UD3tCrfyMOV8r+btdmSlgGuIN0r/3VA/xYIkTXjy797nUrzWGMgB7ozT2XQtzjQjuHeFe+/1 + bCONDMqEzymBTOjO9xj6O4eODSihDHdbMI9XmL6KAwlnAJybY+1Vk1s5CrsYTbAkM982t3o4a7UT + LuL+zwScJ3Yu8ztCC9VA6Y632LLf+6kknamftw8UpxUTfEuzB0agm86iLTZI1UTaH/4viApTf7+8 + Ldx+qrOzdtf6cYK3ODcOTZ0/vN4rZLLw3PejNoXneLtj4bmQXCk8x6uycPjssnw4sjTF/MBS4XkI + Cmo0gIMxllGj/zMfXsMLZ6uhkdq6NEvA1EGWYy3q6avzoYg4KFeBVEklubkBe6mTVamUyFSB1YKD + uyQqn1lfSUXG47x6Gr++GBKum/gGEshPWCmj1VpAWdqpVWnQkDeUpn7MWbVozNL0LFmgCpZiQJbq + j66jxKtUj51evFEs2jsO/cSzYWBLnDFJgn7kCnMCqZV1tWlB3GxoWZ3Vx/frC1T+JZaj/hrWKZ0k + SUUzKIJh1qDa5AmC8Ms4iqjf19PZSHy1VWbp9yWbK65ps3nwjZwzDV7ZgFVpv1taHf/69+ttXwP9 + mjXwTEyE0/OjgbUO9HzWHQR1ArYO2DbUN7YD6cLaezsDW66HK77AMUjCbhBJaSs1p0Ib2MythePd + QYrWlfV0VFgu5lthsDXN0MlGhFG2cZtu03sCKgy09Y7yXtHec4ZpU/iIHrwyebrD4NTGHw/GDe0C + cI90Rcxtr/fB1uehUVbL7oOjjUndGcgowQ+IryH755Sk384/UfdFg9h0SzTqPLWNeqlotPlY+4EK + mBKCpyc+sf28dXq/PUX9AKA+7ssJQ+ggwo90wKB1VaIQEtrB2w+sjQedbnfSfqXkkvZLV2XW1MU5 + r7AgMlE0Zaq/6YuhD3pUkAz8JEi59A2hcXebYaQ2z1SCzavXp++GV4vvsi7MPrVXGWXcy1RzPJpH + 6yEmZ8AQ0ngRvyvIzORmRelTqyWv8hOa99UxKYRwqjcRBHDYFVO/onV+Pjd0Lev96nOoSnV3u1tY + ruDYRsGi8wbIfb1u6/PERb5W3X73h8JgN4dmMlVOcKsUIUgrg9Nz+qKFVYPrZwF6VQX3XkH31fk6 + DHKxFrOjbnL0xOzVnnUvEag98GJiyygNQXN9Xt1e1lrIthwCHtFuMcL0TqW0XF7+PlzhwNGbrWAy + 5HKjWGloHhqwZ+reQT88Ti779M8P8qJDxM7oSVDtyYfH6UlU7YmW+SO7EgURZS7syn5uFiDhDPZK + n9YnXZBoYgy9N/z/2fvX5jZyJF8cfs1vwVfP2mHSLqDuVsQTIcuyrG3JrZXcM9PnxMSJElmSOCZZ + XF5saz79PxMJoAp1IVFkyVZ3z8ZOyyoVEihcEnn9ZctbrntcCw+r3hZowhtwLu/zcg/buqiPyDss + ooDiaIwbwqoqyN4Z9S4oYGKrxs4Ncm89uVsbd4pQ6QZhTkjFlO5Z9tpxFNjlzovOilEeRLDpRHku + TbkFiaeXkA+uBACCMcHvmHN04Md1Bj4NKjUJx9ukEhkFKSqg5WFTsxQE1vmE1NqdpWx8jc7hfUBE + 3rgdPIdqZIvPoTsxADrUU5JgDfGjhmvKkA+684vJOXUvq132KRuxCgqxHg3waLhwRB2cdgz7CaF9 + QzcPR8tqo/TqGSPJSPi9iyH8ly8OwfRVu8STShHnjn3eNr1uqRQJyhWlCJ/KvO3zD1WdiFd1olcI + S88HoKOqRJKPj4uMwong234FPVhCkt9Pgfq354/Z9hxgS2oqts3T+2SnvxEeCBQn8Q5CsiE6Gx5h + Ce40z1mv2qXCKPxhmfDFoH+2/O4uqKYv/NNbFKoFQ4u7ZDIV8G7LVLisja6UowZjt8gvCi8Cr/2S + Tnsfro81aC6o1aihuJ5LhiCrz9rlRi0h+YpxdSOJ/eGxxnJrX8sw0k5cm4Q/8QHLWtobd+h1Kz4m + KZf4GD2V4ZE3n8vhkbAFPbTAFhlZ9HYYefCnQRRyV6YHfJJbE649uTlh1Ce/XsHOU37HuxK20rvV + uup3rAdUMbld1IRNHEUB92twjg8BbDJods/4Tq+HOkS0WrrHZPQuyLnmpxfT4wK4VMIyCqaae8u4 + S5gI39nid1ST0Tu7Ou+L5LI1HI9xisAzBUsMOrXQnT1vsSkGqCt9FXCWC4Jnl9xNvikDNXNQS6lQ + rgYmdCY0XgCXG0+QI+pwmtt0/S1NBecTJl0copxsEtqET2B4m23mWAp5eZ+pFcZwTDgWiiWzKIhl + USdx4nEikvkIxdeDk/b2IrnNERhww1EH5wmt2eJuwwmAk5XagyV04fIk6MRmDOif4EhtgpjoyMsp + ThQ2qT2JLVZTHH760G0co22+YzsMsPrL9j8wYtaKMw/VCQDGA+8ArU6+VUBwOAQHCuzrFgGLLaqP + b0uA6qxGYEgHtEpoQE7Re0QLFIPt32YIimxHX4lNga536zj8teO1MxKoRtYVb1UnZslb+ZTEqHVy + x6THqxHQqGQu6dUW/sUI1/eVekWfkXxPdCKMA4hzRLGuQZ79Wttn2wDLFlWMuu66cZc7IZWErU+B + s7EI/4S0Nhnfu3uN91+C1jpLF+GruR1wW6ByTRnrNvwDJE5sgrwKP/3g3mxrkfqEUfLrNY9ce8MS + vW6lkEnKJYWMnkpv+8VVpciRF2GSezERI3z7KvJCz3cGkRcxj283LWVLoP8f01KbmnkYP0RSv4zI + EegB+1RyjZivA0H20RX+GnaYbpE1AiYYo0S8wKUDzrFOhTx8gFgT+ULsnaAd/gAkJF9APPx+euG0 + KaVGr1txGUm5xGXoKXGZj//4zCr2aydEZ2TR7BO+HXLmu+EAYZKYWcCkprQS6euFiwrrL6Tfs1Uh + SBhufgkHTQjRoMwXyneKUPbxZkR5G9PsW3+afk2nIunyfroZISnU3aWJlV7D+k017xHz+/h9zaph + QeXYTTMaPQqaLEMxj3lYCRS/wxul/JW1wTro4WosZRWg4a2S36Y+x4a235L2DPemBW3mg5pmRVvz + 4PK6mzFLgbdzqL2PlZ0z0JtDxh3hJqB7/U5AYt9h+Ol8LTyMQiea91fZZgkjGuzcVwObTdUTB0fd + EU4YdxIZHsmSUmLIqDQl6/Y1sQrEhLRcWYAWqqDvOyRyH1ym6xmo4uIC5cw3VijdP6TWJeF0tblP + lm+FigsT2V89zg6mKzaByUyqc7+1h22ZXDKn0eAnnZEXHEKsc5GldEae8yiWs34LAjycj6FCo9ir + p63Xc6zMC354zJzXjLWzL+hWtgaGvBvDwqAf0707QvfdEr2d6eYL0MjWJEriZdz7fH7Jeb9Uwl4Z + CidiZ1aNCpOZ5/TW4r/c93gYOL0OuFlXZlRQbigeq/QZsDmyUm2r0nfvrVE/fc3Cn1O0JadB90y7 + 2ftjWFph/xKprR+n9xKeJZkhe2g0SuCo2s6u816c2Fa1nVUj29rOuhOjtrN6SuL9/WIipfVPQ9jH + 68cpcX0sbfI4NZCKChXXC+FIi8n98H96SEaUggbpn/Dc4hyR5MvEMqRTWwxlHa2CswsU9RxcZy9/ + 1740txzRQ90jz+BMoOAVMooIJSU4ESi+2n9bty0Oh/gNmDbMhydx64tTNbI2zKtOTMO8fEr7XyQF + UQq2vizrnhn08DZkQYhb3gWpiYwS6jYoRtKsqAB2dZJyjXaRrGHXzu2QRp/Klt0aI62blKqOcqAC + ruBxvBbhfvS6LTyOVw33o6db4XHcSulwF6SWyBnAjyiQVtnTWk5iChNyGw76D9kMbZeocj5sQJbu + vzu+AnFK3VvSoDtbwtC+LbaVdZcoLAJThdimLLwh40hBI8aPH/fFHThEuFgdswvbN11ORKHRox0j + 6v1++pkXIFjcjjKluw8b6M69z2Kxq9uEHHR13fxwVzrwDkI3tMtpeEZXoGIeroQgZG6LGk/0uiUE + oaBcgSDEp8Q8Lq9vKrZWXqnxxN++gq0VuXzAAs+JdkQL/2sK9KsuHT1Jd0pQMl0y2/D8XJ/zKj7g + M3LJuEEQ9eRF6hm76y4XC/9Ym5MC2U+ugaS9J4Bet9qcknJpc9JT6Qm4ucLI/hK4TRSYu9P13w6Z + HzDHGzA/ZE6pmHnBtvqAVbJXD9noy6Cfwh00z1DfgId4nVDsNPxj+Uh6/EomlcHvIKOuUoJOXJOF + t2yklwb91cJ1DjPoF7Y9gu951XJi+/oHYOpcp2Jmz+ckx+2px6YLG+Nci5RzTDpJ7S6bVjBqAs8s + 7FXMC468EKSVCqRLRbA16MV+GcMlt9lzJwixUNhHNIeCxnGLuldpDjUo5kCSH8oeRT3QIiZSbRAp + 2vs/vnj1cnhMuAFXM1Hh3n7rfUuTLzIWj/LjBtoWOgWlfi1jUnfs0J44MNoDEDDlASCekB0Q1hj7 + EsRlt4JRW5esRfutMWs8pDTThtyD410wKrVRh1Kkq5zpPwjDJh9CoNYYc9rm6XRfPdlXFiOsL/Pa + 8dvoyXkjW4uR7sSwGKmndA2sFnfKwVtMnK0JOy2aid5/Ov5v/YcbJNEThEQRgDDkshyVb1RuU8yq + xcy3UXp7oo4YgRDCXQGK7M4UDVv7sMscUmhrGPp+mm2Qb4Sz+DVzWu4D0cZ+G1AXpV0gHtImWC6m + TN/tgXNTyOhWn3nBWK/5L4LAkIvljzwZo+ixHIinCQHfPuzQhtqWjdSBBaaNMcVei9rWJ+cBDwt9 + wjvARKfTwioop87+exv4W6yGSFmeOtC8yUTeHMkTcqHVXh8QaEhlDApDRgfYerLeoK0arqHmqbTe + TId0sr3cUUSOlmX7CVCcIVSmVO6eMPaa+a1MqaqRrSlVd2KYUtVT4g6L1VoVhjn/5KoonlE2lHET + 2bJ3Ml0GurQA5gihjVl5GYq+xyug1UOCaGtloM7JcGa3VIFjmc6ycTotT18V07VV8ZMWQc7PH0u4 + 87olFD1SXsR6Wo2FPHnA9JgU+hJ+3MqS0B8z7tvlnETN68XYfbPzNJyf/9dOWQaBfb3qHsSSrQoY + +/DikZ1kswaRzsp320CV4evWWfluDVQZPiUWdfLrWcVMz0ToTwmpLIxB0BlEjotgR8jSTnR0xa/T + yT3Gd8L6UmqZWi3WP6F/pbIwxEl2Hy0qdSXgKV9IWwX8u5rvWgaBrYElYyFjJsBssRAGaNqxVwlC + 7MpSJ2SjMnJqGc2V/bOcMdo0wB2IsSpHDvb840jweZxE2IE0ABONzDG7LabCyi57p6sVJjyKm1w5 + tmWKah5AkzUt8QuxYPD2MtvcywV+OegnBcFrnQItwieVjUowzmi4yj0Md8CHv+DbQuckZMy7zap4 + C4j51SmvOqOxgJ+56uHGziECYtaT80EXyx4Ta8vJO/DlxEr51tuqG9Tbgx06BMBEYTU0sH19JF0g + lh5q5UCWkQ+iyl6sWLk2TMf/b0Xc/Jq5UQtuLl634+ZEuczNxVPi5p+vfq2kwjA/DKvcPHDDwB/A + /wInlpbpbPqIYQ3FOC3Tifp5kfHOzMgcNMsw4BU78tdktMlQx6ynGIZeI0eDBXWCoMzlVwtRMcIi + HNzhcWhFvFDhpDpnRhA4qPS7KPa2TbwO2cSsffUlebUkwfxEWLe5CkdVFBexNSYrbR4WKsHHRFiE + Ka9Acf1Z8q9smRcwwY430LPUXvDsPMmIWwyiR/scRgL/yKEqXRGC8aZPvwZu4PRoVYURsroPnp6l + H+56Ezse36yeC+vRH2JJtm/8zIMe5VYIq1uhZSB04yx3FjDPfDlO6GdyUGB26OjA7PdBa2w42cY6 + KFt2YYZk00O6Ys6urj/89gm0RXmMUb8zEjfgQ8sQb4oqRpjBJpLx1rSbkvlB3iNgzoJKeRQHaIUh + I1DCWTrJWic+dpdDglzDzblGe+nMmuccyLJ2Ref82XE37AXhhnICneD+W3J421PwPLg98xmZ1I3z + 3ZLZ26bBh0xHtL+LXzteu3h20cQ6mp06MGPZxTNistWytEWWasb6b3+30BuGtHuIr/ljcjLsrXD/ + yfFovgS6rtvsRCH5pW+GCegzWG8IScMLIEsVjPFt+rPnKYfXjFZnlauzGjK3Zci9bmN7WlUXxnGV + D+m8/nb1Afegkolqa+Rk08kCdMar2cLtLfA/6ANiPFbZZ+TIobXayzLkov4kiCgXr6T2kM3SbLVO + ysJMxZ/UVdi/JOdxN5a2uqITKJ+WbC2tli2+0nMZbeDi0OSHNo1wzwJEB6lS23JS/yzqmDqMro7n + cIK2Fyc1sY7moA7MYA7xjIxnyTiR8TzE3Sbkg0J4xNLFWPf3Y2xtvpRQKhhzfDqnjDC+zi+vLFOu + 7L2ukSM25HyyptxqYVBDmMbtGCpVr3DMGFHK4fUPhWyM5TWECRMwZXm0xEpQz+aZSrhKD09F23kw + nxArKqL0sWNY33xftAP+b0vjh2DZs5iTlLX3iNRh91RaUtyuandsX7U7rq3aHSsYl8vPVX8njCuo + VO32Ajd23YEXeBGq9NsyC2ZLoD/6D1hUm8wEL3REGLAfU/SEAeTRlmntQaTD8MmCLtJGKugSv+lw + oCUtB3IyihlTuV8uYxhTbJIMGR8Gw5zPs2G6mOwcaXG6FAvRgcDcPYW7O2olMMg2thKD6sIQGeRD + GQScrFm16AWwGBH53k/gW1br/gsQoJdfaXJk9P3LXsl/mn7HCOn7VEHzqbivG+yhKFdgl0Ku8F1G + 9S6YJ4XaOq+2LlCp3eTtr8QDjoSlgeppbmW1qblDAD/3m2T+OB0WZJvyrB+AbYCDk/bb3f10YHES + gdC/X10z5ttn6dHrVneppFy6S+mpBF48rxT55qhem3dp9PZV6HtR6A5CHzTVHVl6iyXQ7xx48Xne + gZg2htsmdLxYac5N5XsPEXk7RR1U2y/Uehtri1ug21hrbqyCWqAfykjbZCT5sC84njh62HycbW6n + 6RARkObjHAFJKyEiLwoa9x5GK8FVnYgia52QuOoom/9rc0+8W0SrafuGDEraaTHQSloHJfHE3XxQ + RbyDPFSYbksVHOdtP+LnwjnsrsVkxeAdThrVLLlHKJfNbH+oB7uI/xaB+YfnD3BxeRknBlruT9Hz + WaRn/QCzM9DRjrfDadFXGgzg/PzcoLe78qEVmZ+gqncFIBJSZPL7C6dNEWV63Uq6kJRL0gU9JZZ+ + ffXJq+CtsqhUZicATZ35GJrswSRibRC8BM4LwvjmdvK/mwnGwo/RWDmm6Vok64dvyePr/iVwiUTw + CxT+ZsqAXkbKzmSMakLJQ6IUr/o9HS5TCqkS1WJeS1nmejH3quFyupEISM/jaLHM1aZ/KoDqkpel + MDo3Lok5ZvQw9yLHZdWU7LwvaUXPMCc3Wa5FnOuOLqOGaOoY/apeVBashFc8hTkbN9d1ZqGBYVrM + rw7i0GOVus7GUiTTusrnRmEeuBwaE65dHz6LlcS4M/7mknqZaBfDZC2AAgvSmCnRRc0hfcWF0H3o + DVhwkW2vYeQEsKN3zFTvc902FZHVq/VkJlPAC/4V+LTChhA79agv9qgCbU2WVJ56s5ybYYIYkMeD + m2J7TMjP053v0nR8m4y+oLQELGWa17CELvAcg6BRWstCprro4ytcZxlczNIPozw0qx62VxIzZyFV + o3bIC2K3fC0ErOefvOSBLCM4/CKTZfHMng6odVPoId7SA9ZCWKaLZFIjujWSFOXtG0numPAakc4L + gkjOc+7KS5bA0uCLqxP689DFdoTekIlsB6euEN3qINyPZG1su9NRBYyaU7XTEFIrx3dRergbqDZx + 2VQ/q+aGsjJrSgTdkxPm+c5r5rbRp/NGdgp1oZOCRp0/JRkKRdu7afIVY7rRJWdc6y+uLs/f95kX + xI7vxlS5t/xy+R2jY8x3ZxFhZMacslIKROz8gHVbZG9iW83inWIa/gg8Qi8kO/7WVbTqej9KO7Sd + rmJ5IhF39/vFNXNCeysovW6lp0jKJT2Fnko95fQfFawyFxQT0wrqvX3lBh5j4cANfFcBh6BuffoP + rUEWkyDc/xr+//3/gj2U65cUIfS6f5Om/ctsBe+lsFbT130Wx2H/U6GO/ap/jXoI99+iajSE/0RK + KUm/V2s7PDtPJXx86dtrFYrIc6KSLD4oYEvBGrEgdsuoTSXLlSF3u3GjcK+I9bB9YWhHZmnNWYIm + Gi3YgOSM7xupldef8Isur6+OCkmQ0H4zH4PwBIKxsDNezx9CZyE0TVg0vuhTmqQaNtD5zZd2OPGO + IHqFvRW3ET1+r7AH4Elh6CBcw+bVLlknDoVw7VGdMvViRp5JOCSzmczLpDJT6GTFr01xvUCWRer+ + 6+iGLJzi7EKj0WQlT694nF+X/Rc3N78N8eEgbzboX8iHL1uJPdbG1a1s3vMo/ELPrPywbQS3hZsF + nAxgI0taz8to+kerhuQwCgMQ3GMI29ewzrXP6AHRN9ATIDnrTzeFcuNs/szoIHUFcw1hHTl+ewhr + 2cgawlp1YkJYy6cKlWnFA4XK5NViL93woNf8F0FAoDJ5IKhG/0Flyhv9xVCZ/oiYSupguhoQyT9j + Tuv0P93KGhJJd2NiIqnHMrgWy9mi8Zt8/6AZjR4aaipsf3VActLph/4DCkD4v79/5P1Ztp7clcbj + Rw6PfQrDdWS4TC1x2OwgOk0PAYbZB4q7Bp0pohRQNKuL01Lnqm0xJgtqPzwabof8QFHDOn6pLXfz + A81pvsCr6/Z5QV2E2ju+jIIjezTmm9UwoDoIT9RvjAn4KbH+LsbxNR6X9juSuGqR5H4Cle87dHsl + 09FOP3wLUKcWVLfyXk9iqDtBiwIM9LolhrqgXMFQx6ckBL37dFzFUPcQAKeEoe5y13X4wOVe4MpI + 5+Pl4xSU2RkojejOw1KAuUNVm9OQi2AZwckIWK6CCFZ63+MCzj0w5v7XSdL/8jgHNRHTxJTj9aiQ + wXMyHvFokRcqk6aKd/PkKU0VZspgiVrZ37rLYJGYE9bg/3SCJq8e407APRaWTBWfjt+b010kF3uu + 32SsUOR6v+Qzj7H7WcHkNpBhxwjKIcaujBZqtYoLmq/gtpXr4abTeBx+HAjzLnBSPD0dmGGx5Bo2 + KY2wvbX4J0TOFdr/jIpm3ZYLdgissHHbW31O5EW5B+XQXBdO+lS+T4fZ9+x+Cqp9Xht0r5ycLqzV + OalCkfsSqYF+KrDSVCoX+sTvl9lm0TpULyI5lw3FwUdXOGpCCxABhmwo4vu/I0pleqg533UYOdQW + j8vJOPuO0kEhoWuf29PX3rDgxHvNwnbOMGpj7QuTXZiuMHoo4b1z8QFvtB6GTgopCPSEzSKPYkBL + YP9yc8+425vRD7QexIxgnQ+KvAQ5TGqJoDwoz/kyXW2ma5xeARJeYOFJ7qnCBu2FPuJxyWqUUfuc + +k7z2fMtv96dPUSFQUcUhX95wVjQotCWeN0uo40olzPaxFOS844/X1cz2nyU+cuFtiIWBwM3jlQM + /iVunvFyc99P7+6mm+/9xWa2sALgGpg+jyXKJrAJRhSFQXLGJPk3Is+gWu4NBTeDFvNsiqz5EzBn + TIsgQe94vaxifrbClTP9PnAVuMytBJPNaj+3oXi3HzeIVgZxLajltJsAQP0mWU0R7P305ejhVtLe + ID/yuqlMRvFQdTNkx0ps1fAGM/5zSHZ3uoUHg91pTmntht45QYqHiVSO3z9cODy0j/Wl1614mKRc + 4mH0lHjY2e9XkcHDhNDlc9OJ7kZvhxFGkQ6Ak+GuFJhiorbKUMbd4F2YV81Y9h/TZLXuXye3ygFK + ntHVUf/3xZotRFwighEuUzlRE1RYYeYL2ujtBr3sq6wvEIthGW7SkbcYIAWXkYMW/8kFsHGuJiNd + M8rt9DpPwlNgs4XDIHjh2eMiqvBC05RYqk/GGxE2GYgeVdRjnIyzQkGaxnBax3dKeJiEWmy42I1O + NDvcAldrxOuymJc6qBDu/VkWuIebXHFXFgXoa9+rMuIWFBe8SbCBOazyittznBa+pnqBbn83FeVT + UsJT83ZtKeI5ZAbffgR+CM2aRVTsOFKmQ79V+UV83dZ06NeVX8SnEkb4/ceKSMk9NI2WTYcgU0bh + wMVYPpl6cTaFgcI1OU4fHsfp0C0kfYtHQqnFWWIKVXj8UJX+hLX8G7oGZZbCh838fmLmKMQ8bDT6 + MeZHrh9VjH5KuDelSR6XzXLldoS/pKNnzeZmrL6RdOAzXwcg5Sz43naOXtAfsqUoJzG/f9lgWHQD + v2EIboy4hVGJP4uU/HmaiSyAklkxcGKvdjoKrR9H2fSxpmFQbtiz3Q4DhC74N2zcPjOtzYXOkBGX + Rn6E6PLLZJbK1IfcokncWbJHYIJb5hx4Nhu4/dvJSj7M5Mvr9AhGuU5H65zj5+olDgf36RD3aQ/P + TG75jESaQuBQrXVVNO9QJB1cGk2vsHxVKk2wWmKRiISe1tZj2E2gsfuI+To97YCZ8H1GJT5Qb1G2 + kPGmAVb5ueROd2EBllUTS/zIqi3yS3wT+NB9Mh0KFSnnszvN5d0Zj4FbqR10KBe0+vAn7XD7SnuR + dH3s4+OMYgKmtB73vlZpj6D28DBldI72p+YzmSNNvqt9rL8iF+L3T6gf2gtA9LqVACQplwQgeiqr + 4lz/n4oA5Lll32nw9pUfxnC9DuBYBkxa1Zrz8qRcmJZy4cTthJzcuPdKeXBHMnRwqZD0JZrMSqdU + lRPqhA97niLoWq5WjFNja2eqtMPJ8t81QlhrX6vD4jCOnIPDwg06DemglQwisy6wUy69W1ZdY88J + nUpwuPT85zO2mtzPk2kpUByGx8ua60BYIQt5srX0W6QFmoHpjfZD1c+WhNDnuPF6eMa0sRHmk8rZ + Pf8EzE46aLJV4r6iS7ZxG9qokv+JG28TN95hnPezypbsJtGxK0iJ2JHgj8zx2oA/4uuW4I+CcgX8 + EZ/Stf771S+V8khu6LMq+GPoeiweeKHv+TKMXBkdv1AIgYKr+lKtiNT+2mQxw8iWg69NrKXIqigK + paHXmxCC0LzQimlUTujB+Mq1jyRV4V+iM1OWLYwbDPbRrg56V+ZIRXxvIUoPcy2xklz6Zv2wTDOK + JzObwIqgIKM+XuIMyNQqIgi7gPXhVkRtXvFOgYBwJBWqyULclQLiIOe7MnDNdLVlcDwxbD3Xo8hN + BKM9QuxsBAkTqATJDF6bJHqcN2e/9HA75niYzOnJaRLert2z246vhI7Es9IjzZb3yVzd5y01Ezdw + qlegIL16SBat/GJ/iSsGlKz8iiFIwD0TiQJixk1nujU1r0itcroOI99Jur7vk93h+PPVvpn6suzj + QR/TYdJyzGSpwPMLFnL7u5Bet7oLJeXSXUhP6S782+caG79wdRfvQvZ2iIli3oBFvu9uh26cTIF6 + 5zDIRas5WlGb42uZH/Og8YqBPyL8UGcojuqqAr6nmqihDooG0AleJALytT/eGJF9/SncbJJFfLi5 + 0lcB8wRzU3XsXCq6oX6FM0VZug4BvsG1su7CttwphnJX5t49jLTdmip9Cl1OpouHZFi7AdsykY4g + 2YMwjuoJDSiv4h4d2cJIv3qc9m+z+bjl4nkuC2QyxHp/oZ9TbMk1LEqL2BLxul1sCVEux5aIp0ro + PzcZHZwv4Gbcr8SWwGYNfD5gvisKwxKQ3MPkdiIA4CgOSyjr5/pGU5ZYXICz6ShcDPrfHiajBzr2 + uVHFFJQSgXaVrh+ppEnpbCAuV/Y1XcKvyqUxSjbwuD9OR0tM+R0XyrRk87XMEhSLjXxF6SaTer+q + QL/NE+7qGF7kmtqAgr+t6hTFCZjoyapXMaJgCw6EE/CgHEaiv0jNUfkSicPGgq31FGvE6qpJ1FRb + wrIhsdJF74+4S3p4LvJwlDiWaPyh8jgYE98eRUzMXIMmU2OF3pms8ePUhJ7cq8XB79jmW0ejWKEr + y0PzkJ0Mj1sUiKYGliWiJfVKkWh6Tizx5qIk+zGX8Viw+1KdaAbiR+T4A/wZx011MPBsrCd3E7L/ + SrX38XVfINV8OH13079I0Q286v9f+CY4T14UvnXZ0A0UVubv90sY4GiYVDhWDtlbEh+3HMvnivx9 + CseWEqfUvtoCHcMkIgoa4EGvlscMOAYGxBCI3jqj+//74wZOvAhImOD5nyaPiqGMkEfgtS22Jckx + ypi4xOIE8HHLFE763XSTwe+jIjrli7MPVy+HEudaPaxUctYr1Dv9cKZZShg4CqpRsAFdE+FAjEbQ + WUmkNCZLIcmo7MMuUWcOxvPe3/axy4yxC9S6LmUhptTUd9eO10L3pNeteJCkXOJA9JT4z4fjz2Xd + k8U+K0X7em+HLkf+MxBF7Nl27fN2CfSr2ueegVtNaZ6jhrqGJioV8xvU0Jj7MXxJWSihy5CG2pju + GQUmY6ohu10pTe7uUgxwHT3AalNK+QrWDBMKHkEeAR6AvEKqrum4d3LzmQfqOGNdmF4HGp3WDAMC + 1Kv/9j2rf+0fHPNckgQ6wbf0iEjjZv1pdi9fKYPMtQ/soNdtlUGkXFUG4SlxnvNfT9waZdCtKIOv + QBqKmTdgIRdhUyJfSqOqJTlu9/nqG0tekmcB/70glztcdZIxC4BwDck8RjumMYV4ay9TOnRlB/1k + Dhe9VL8f+7p6BXne0UJ7T6NZ4InGjBL4x3fhkIBto3s/EqNRYhluzdPVKGpSQlaTKfAXsesEZz3P + RtU0fCvPVAGinHsRj4NKLkJ5n5uCGGsKajXJ5bEbyNgwYAvmc5aBGFSF92tENWeIIBXx4J+9v9gq + 9/BIaD0wduKenChh+qmb0VbM6FlHdBwsg7HAJ3ve+c3fWTO+VBO2sjW77xwLWXFkSl89uXZC314W + pNetOLKkXOLI9JQ48ul1pYgUA85bUkX9t0PE1ufxAH6Iax4ZshJ3avzED5tZMgfdAo6kKNVaOAZJ + /+OLVy+H4yWoUHMjH694QC6G1Bhrd4k8HDGX08eVOGwUjD6B9YaZLUSHjycrgcmnO14dCeNLMpmj + 4qY71LLBGM4X/o147elyVbXZ1coURhoVCB9Nfg8WYBSpV2a8+dfV5iMaXhUWNcmdJnXNh2uImxTL + gncNxd6fZ217uMW1HB2ErIO0WqZk3bq5rlBqiBBzXHKTFAPCvyajTWYbUb4bo2u/VjvU3lA4vhpH + uqu1l7cGtranwO88C3SujvQOccZrdpOmZJe03JzTFlOK8S8XjhfY3zP0utU9IymX7hl6SvfM+5O/ + V/3dkWMK/p77dggCS8ydgetzHkgv0CXO1kpCYZ1dnQ+T+egBI+UL9ejrDHp5rE1Rqx8oIQ2hXWC9 + 3t/d+wt5AbwffateAOl3+PI53OH4dikNvjSeApv1AhBOmgVozlwnrIJiqe+5U3JcKdu4OfasSLF7 + q2v9VG7PDmzOjJZj7V1t8Ax8RXiFLlcYb4zbzTgHTTmqWfEe7kgtePtclYLsLkorlLXcYShCMhRE + cVz3y+zbuga9bwu+dld2H1yW8p1jTGJjTlu91cbnlaAFi8o3WwwwFAqMRy4pFHu4bz/7fsAicynb + tqfbuXok7W7ZLtArDwWPZJzK5OnT1P56UtEIyM3KpHZ+25MFhkQeZUEi3wBZFKWAIRsEQ3KwFLjJ + nzlQRF3ukcIZ9o6j1vjfso0txrDqwkAYlg/pop+uxlI9vEvWaHlBj3NelEYBTIuVeimL1MRB7DpB + 8LJX10S8qYGpL5B8pdVKYIW7cOQJKzxwhYxaIGdn27ZH9N23hyeN18qt+6TdHGzW19dGZxiSSIqy + b5MR2tOEeJJ2QLirnOT9YNkJHK5u+zZapcrMsdPitt0lC5OVy0U4R/RoDP+v+C/c+MAflkMplf3T + BsTQ+nB12emurwusOrLJym3zed31uuP7SD0V+3IoOjnJjndMWxUMfS8yT56dLTHVH0Cw/xGbsqP+ + flwmeIfAqS5oMuLjpbt4kYCGAswaLRX7xaXGKggiiFoFQcDrtkEQSLkaBAFPJT738VU5GY3Fvser + QRAhcFM2cEM/8CXomTY7Mt7X9RK2WpbfJYtqplorjMViMH3ge05UjY7II/wsrMphM2pOkby2ANRR + L2EsNqLgaJK9j5P7h2Fyd4c+t8f+NN2MRBJZupylQvfPC3IlaE3GeRk9pOMhbI9SNpZs0i9Dgm0W + 6+SLCHOS1AW0jeoJTctfMaEsLRiPd69iD3dLHoshs6UPhmYkXIzambWSO9pRaDQ/PhcjaMjqPqal + FbTOTtER6S0czXMc0sLenbjslL12vBZamG5jp4XlXRS0MP2QuNsiXTCZOXvz6fj61KjrQk+u8JWe + eBGVJxA/414327qjAiyEPSfQ/GBHKX9DC/hSvfwO1STdPgaLjW6FFii+OrlFsNfN+kGIFfDSjNzi + LehY5+cQirsoAI8XCsZcohq1mW6sMysJ14rmOlksELO9zhdvKyzty1F6JBWKwcAmvcIA2nRRDvXe + OcH2vvmtJ5rJJEGHt0iYp9ctkwQF5UqSID6V4VLXVWxpzgK/kiTogsrvOAPXoSjy7WmCQL8mTbCr + zJRnEOfd02Z9HgXwi1pQSob6eM3cFl4wet1qQSXl0oLSUxn5f3VRQUAAZhCZC+qg0OkFvo9CJ3N2 + R1tgDPdkXoi/kam2OlViNSgnq6w2CxUNlYAgOmJ5mLvwmBwclp7nC4pE/gVuBnQPaEQ6sR1vFtMu + EBwa4oXTuYA03JkY5YcNonbshX7I4gqIUF58GhjPAqEKsQyr6f8KTPn97LxMdFuMxe4VPQLZ9Ntc + If+sYAG+5YJ1AVxRXyky/TX/U57/Wkll2rk7YAvY74Aebnt9JlkY9eQEIUNumkwK5qu7hZoAd348 + rIAXBUaOVXmR9pUlKVXp/QWwAntGRa9bMSpJucSo6Kmsqn31K69cPY4oO1NUj4O3Q+74bsAGnKHH + LC+rvcimMAZhczg/78PGvk/z4pJUCnuR8aqzXcQRimVKx/0KoQFWQMttqqZz3FQ/C9Wd4jD03IiV + ucO2rupRzaK4glRb14VmFCUQIVz3q2yKE6JjSc342KCK4Nowmau1ns53nDsDEW9PKCAod4tad1gr + qpToBy+cDKFfrMQz7T+AcJWABiAAMZbAa5K11Hj7OWOB05KNZHys4FTmV6FGvcJYLZHlJFKbgDdJ + boaH+haepUvMurqFfTiE7ThLe2J/KZbAeRx3Bz9GbKVm6qszqVfhB/XRLLl2kI4UkC2g1QH6MV1Y + COztIVk7d5kcDh0G7GHX9OxpKm9LukMVaWuqSycIZ91W+KLalhrop4scnI4g2DzH06W6w7PoNfNa + luqWjaxLdatOzFLd8qm0E42+MFVlC7GHmoC9eiUR56T/4uqXk5fD6eRL2r8CIj2kJAp289jtHQCl + VWMKejJMLkb8jEDGaPu18xhrStyrAXvMwctGyWqUjNsGy3YE86WcOMAsoyq5FJMQp5PVg+AOIg0a + T/pc1C9S3S0ybd+xs7m5PPZrSmGwgTsUUgBiuSRzS7d/XVkiJyaX+y354PorkGKs7V0/unz7XxeC + zAvIa1phH+1uKysybVbvWSCjdXZ/PheANUUqjsnAPZ6gn5zw07PpT8U/9RxfOWi4exa+dsI2l2/e + yNZFozsxfDTqqXYjw3FD32W6+QIUMskFcUv2QB0TCTAUyCSYKJwMw41T7AY9OIET0s3Lw5qEPRRs + i0Qrs2dVPHynkmJf7Hs/dBi1nIFaThZz9tpx2y2namS7nLoTYznVU5KlZun3QKYqf04WKsugN0M5 + XSY6aX/GJb7bEy3E0oVcLp1HJUuKjcRkNM7SlqDxAz15PnN4pAezl2/qJ4CLBlS0QaGm11dftd+k + 7UA+Cs0OLIbKhHSxWgCrs04H2yN00WUxycBqvuyDubu4Q+FejwxhBiRBuCrGE9BpVdJF8x3UnFkL + B0qYUC+uXd4is5ZetzKhSsolEyo9VSbUCzeqwF27iCZZdPZ4b4dhhKlPA/jhhrHp7Mm9cRLajCyp + LwLn5mV/ObnF5DfcuGQKHIgcdNOTAKpUHweSv6zmWplhp2615KHcQ7A5qcNKVyr151TcXMnLUvCS + x5sMpb4fo+uvZIstHEK8FdeT9UZ+tOzZ9K64odto7C12UAGea4R3CTxWGXLvB6xCT2wTDUPtEroo + jkZz7r102wYKuyyQHShGB7M+EkP1urdqznlAKS+7N7CN4uE6PvFUbE53wKKwJ+xNqD25aQVT373X + 201ZO8LNH614J1VAfH/txS1wYuh1O/cTUS67n8RTGfjwf6royE7oVLxPr4BvBhwB8rDIVCgB8j4/ + 0Lch2Nto0J9n8+E6ub+HuVSL9y1ZaX/lWPkrC8bnREVLjJcwqG+LPKSAxw7r9fYzWReOiE3T7fJv + LBcJlNC/t4AzVA0sF0pSrywVPZcV0M9OzcVyXc+NQgzjqaxWFLsxG+BPL5LBtOcGeuENUMsnH7r5 + VgNK+GcMVuER6N95sAqjch0fL+AzWgSriNftglWIcjlYRTyVyL3HV24lWEXY10vBKjEwXT6IPd/x + t8cePUyBejX2SIX2NWcTI1RCy9iPXSHQoiJ4U9hHEEaBEzxFRBL8r5sgS4q5HT1MsyXaEvcJiwwp + Q3aWzTORwfv9cSoyhbaHEddaYw+EsngeIcgdFol3IqU7N01uy9jj+uLxHmPKpcS9j8Frx23lUZJt + bB1KqgvDnyQfKnfSRlYpAK46xRrhoip4T/7m4j9c4SUKXGnw8AlIZXM7+d/NZG3EPGlRa8+McrUW + oesFVXvYDhTUih/K4zInWA1LD5lIyviq/T8k79EynKk7B4U23DqOOAA3Jx/yD+lPJ/dbMxltrSku + 8wLiWmI7DK/PP5216Kbp2LpMyvw5KR2TRiT3MhgzLiUsJ2xxA9PrltKVoFyRrfCpDBf9+FslXBT4 + ilsJwkL+F7sD+CGAs0XYvwzhI1R0iVM8FEDFCsFYrAyFYT5sasIw/0RSltLki9lCSf86GftsMRyI + f3iL4omV1aYQZKQAHoKAzrNbdeKX6SKZLAeIVQXsG9kzvg7bK1sO75ZpKl/A+ccYR3gjRSIC3krW + JEGj/DRdiYwnRFTAYY50bSzU2DT3p8BLFY0Fe1AEY8HKscWgf7V6dOEHkj5Zzfiih1tH6yxe5Itb + OuTSL1D4CjiocpgtTMsg6tGFW/hY6V+opVSRGQ42IKpDKkMlr+EctDmk+LrlIRWUK4cUn9IhvXpf + QdDjwJOi6iGNHC92BgEWq2UK2eixf4tZafD/CeFz58GjAuISWP8jBuGOgI+KOViiTCXsD/M1OtUQ + mlK1hRvkNsMIPVSA1UMKQBNRCApO8/jq5KXYKyKeKJkl98B2H9LRl0UGU6xyFq/GNWh4bWvigYYQ + xyyqIB0py3YJETq2onM4gqlBTjMYJRKsJiuUxhT85hg45j0ID3TqTVZTKk8ha9DWGh+Hau6IX5jm + R1Q3GkppqLH2boCLLkWaI2wMuU9W5urLaVjBOcQ3T1cL5A7JdJX1b6fZ6MtKRpb3xynd1CqEU316 + +h0NmKlGytcoSyQhEWg97j9sILGWcLvhXZPKkBHkBHJXYQz0LRxlPP16dmnpV0c0LmpJNNOJeIMq + gfbwZGke5nOnJ2dc2U52LpWtKtQhZ3RAFlGhegfjeITAMIS8tAWofwcBGkwRc3zb/OwgFoRq6msh + onZgmzhGoIlRzth2oXzGCSCq8EH7I3T5TAZOiPkdT5C7twMLeZbFE7vzLD4HkFyP6ahJfsbaevrz + RtZKrurE1HLlU7ryvy5Wnq/CJkdMabka1BKEbnHhqs/+22LV9/yeaIbaL0OBrBMzUEyHSmaS9sfA + 4rFjqYum3zOh/tUdVnuoo/372DX2oEhXphPtPdAfnOb7pCyifXAhXRSU2d14ynZOpTpyVCng8gLu + XXsPEL1uVyuaKJdrRYundMTOLn6tSNVu4FVqRb/igQcDHvAgCH1vu/l5NgX63/7Ueq42NHtewAre + BAIa/+8LxkL7BaXXrRZUUi4tKD2VatLHXxEXoJTM7Hqml8jjb1/B8fN8NmCx60aBGQ6hwPllXekC + EugiGX1J7iVWPwqkDwbSSE1CJEiNVw9Z5C3wzsn6J79enZ+DiiROujz6K0E6P/bSUVjCbTmqyYgy + pJtkmep8KmHmK+RgYuFrrXDBcIIq/GxtYr+ZGRu5W5BXfC+u1CTvaqvWJZqaoDCssUSgMTRNcYXl + 80D9fdQ2mCKorg//v4te77R2xl6cXr/EbNOJYZI1NtHptdB/2m+hge3OrO44tdV64oCo4+sGvkuB + IL5hc77LpvWsvbFK1sGOJlZAfjIX+gkpNX8OYYbBSsEMEmBFm3u6znl1OILGc3FfdRCR5zOHIvI2 + c9xrhZiJRmpNrikVggf8vE0IHr5uGYInKFdC8PAp3TkfT6r4GYigUYnA890ojL0B1kiKpWnu/Qat + H4o5Lmrsx8XQqkINGQFctdrcrtbZBNSUTHzDyIwhK8R7N1CRRQLd/ov0/INL1jqTreQV74Agd27Q + kDKkioW4VMKejG1VwNOqf724ZwtB6Wq5lv9SZQ7lFfRxtKwBQLcfbW1mduSbUODFsj8sjLlbKUwk + RlRj02Nx5DVedcwPnNitpHlvH3J9ondY6uXqfGBUySiOumjma1iRInEXjcCNpr7iJ+wfvNg03t5f + bFP3kAFoiZhFArbtGVWwfKooz93cvifPpbj32h9v6z7wJJUHuOUQtvv6Q4lvT+46/C4V3EqYla+3 + JZVXixXDVpX4mIy3KhKKr1viYwrKFXxMfEp35yUGJpsKmxu6AQ9Q0ilBZHqRG/Ng4EWe56uaHYVg + ymlN8LkRSC0P8zYYGuUB1Q6Hk1//wUF9SsZYkI0gLIbA/DIxx6pigLjTLpeLqVvVq2bGCJuihE09 + K2i8yDjMgO/zakWPg3spxrbD/LpBxQnWYfB8sYPDgudLFHvPYUP0aFNrIE+XY1FVF6HjlWMjH2IT + T62E6fyMMOCchrzMrLZZOw54UCD+s4mcfzImr1h1rNwTESYD+q2cE9TE1jUhOzAcE/SMeO7We7C3 + /ZZEoeqh2AseCuYrKIcOBJXyVS1mUw8DTeQYp38YQs5z9LftVU/gEMls9zweIDhV4TmeRMSTh4tL + VN2TExDeQ9iWbXx/eSO7A1bopHDE8qd0yJZLQnnCUIH7uagQ28f4mruezBGFQcDfh4qXKN7y6fzD + L6X07UKH3HdjlwB4Pc6pNrfmadvKMnWTtL3rCOyZA7urmdXgOwPOcIMwJ6RisfckFXKx57fK9dYe + VitqW48J08imbZJFxOvWyKY1ySLiqUwCuv41riKbuk4Nsilc5sEAfoSOzAD6aFRnu3p3znXCyBJ6 + eEKwWmHyFbJiA26jiRMalCH5B0VYz8APmVdOGlFZEOTdpmQ0YMnZ4iG5h6Us+jY488wwuirtQiIJ + i5yebCSc1dv7qWynOhBNCWkZaGP4tpmxoai2J0VSv8PcInvvI71up80S5bI2K55KS/B5xRLMYi9w + y6rsK+7EAYsGnMHEyu35CaYyD4gzfH0SZ1EFWpdrEeRxW8Pc/2c6CzE2e7Jawybuf+THA/jPO/iP + K8xYHz0xqbLOLVwHmzWhq+ZVx/MahwOZO68i4UaibV5onIKD9evYsToH8BVfEPsrE6XdlDfy46TG + FJzHXQ2wBMNEoE0Kf8l9JTYSlr7RVBtG3POq9S9b1rWPfceLWSWZ3Jzh4gI1WHtZU/hqjBjSqqpm + Af+3sRA6HYXtIJ9+E4yx6q13I/U1qRPD5lXyHaxicfXhwk1nt9NHLf4Vd6A5TLXLxK4wxvyDt1cP + z6JWwZnjyYr3gu2UQGqGcBvqmPy677aSRLrBFfVrMHUMigMKp9bjbd1BuKMDotIGxrR+NghOTyDM + TLO5jAVtTbs5BpYFPnWhNgtKyGPhHW8x82SrJ59x4QTYfSQyHz0Cya8Er8oQWUTzqyeltQOn5jCU + mx2tG+3xNiindZOATLJ6hmp5q5120IF93WWyXlaBM7T1UnNKILm8dniLyCh63S7UjSiXQ93EUxkZ + dfoPVknzcoMgrsS6udyPQpCdecgxDELIzpP7B4oiQrgoXIpJJisfwpd/fnT7nykaYkWqqgqFW0L/ + NaFwhyHvH5An0pDF/axC6gJOFXL2M0O1g6dXkXtcRD///qFdFZIP9lVIPtRWIflQqEJyenVhys7M + c1nkxWYZEjd6O0TQB38QO64ns4BPiv7hT5tjb9D/9jAZPfQnmLdSSDPRMrD3BsRg4CXp2kTuldz/ + qFy8fQnHfvEACnX/dP6AmKUi3Q4EsEfM5JDb/XQxrYqyqsvGvsydwXhzjF3MWBxVaq83d1CvXnpO + Y8V0owe9qc0OKtlJcA2HdmN+cslWd9f72Tuih7tZK9FRSGgMPGIF6bM25adWlLJot0vo+49kWsg0 + ICzaYkmQQi5Zc0WQJ02iEscIm9Qdt+08/FA5Dy56EteuJqMR7HFxYCwYl81suz6ndK59aTaImFjd + Vqhy8uBacMGtw1X3oE5JiFsA+tHrtikJcRXQj55KQL/j9xhLW5LThO/YlNOGEfMiNog4Y/IevAGR + dJoOV/j5Y5n2jRY2Ql2EuXghkrmvkzFbvATtAh5+TRFDrtpMpt0UrOHp99FESn2CBaEiPs42t7pl + /3aZJl/kn4+0N1gwYE3lVFG5JiofyG/D+i8+nX5gLzWbFbaEzQx49T+uPpSxBGH8Tn3KcP1Q71Qn + 9VcucxqiCvA+8aOgEtZeN2EqMltM+DjNvj9ql3TjXYwJNVZd65uzecL7XyeJOTA86KkAhh/AO7Ps + ayLSuOfZvHCVpRjtZtrT3Ep1GD0mYNGRXy7Zmk/8sDTx4kKAQ0cPB33/v4bAawmIwLzTedzcae1E + tPqgpjgU/UG9P+XJOb0+OWE5AiTyFa1k+AHlOYdMRpRTSvRsspola5CTbCEWcuuFK8WDbevShpzg + 7k+z362HcbjkxeOSV7HVGbG0tDEdnLMWhqIieoj9t3YqFvUkZ93+8VXO3MYw8yMDNXqSXePrh7B/ + S1Ogq5P7y3u7JakO6g0FVCmV9sH4IEpUXqFu/lpZCT2fIOUspnd72QifstQNTv8Taz2wQGJ/CRyl + 6R6jUWJskJeJDl8jlGirKtHYxL5ItOigVCMan0mstq/3Ml/28vj9zfA2+17W6ShubOtf+1dApTe7 + /U41pEGd7XVXye2J9dqYU2GJImihUBK/JdPp1qCbxqI3fiDBFSTPecIqdD5zaPjeIBguHpebr4/k + X4ZvwaVZpZTsuEkPqLLzNHz8iUtEFFob0Pbp/Gs6zerKJnWSg98BQxcRMZW6ggfmSBB6g96S1f3X + YXee68uSWnKJh7rf9tOiWGaoK314H/zXjLWs9CEbWVf6UJ2YlT7kU5mO/g9ZJrOnkD7m6Xe4Wm7m + 3z1mUsHAvpDzjtA+SMxRcT1t90LIeKB0ivZ4HSGjsESyo2WzGahCrRy66i7tCKcDQ5+kXRJeuV8m + RRTcgRAdhEdQ5wm350Od4HCG5AvX4zmAHe4k1T0iKLQz+9wzxZn7hCyKdDSJ1eNqnbac0H1zrVsl + SG81yvoOeZ1l8cHJXPhWt4WlWgOktie9lXNSFtmnCx4F9r5tet3KZiopl2ym9JSEzJPfbiqubc8p + m0yDt69in3M2iAMnjEzIDwF2p3M/f+P91RyvMEr4XDCEt5sRimIx9km/JwETKMYJODZQ+ZbVB3Cv + +i+ury9XL6Ux82SzqmKiItErpG76taOgyfHFIlBmokqIWkN+swgFrgAKFoDJQ+ZoaqadD2v3XAt9 + l2oxD8gOg7+l1Rwwx42jUqzpoBhYJ/vp/bxV6OHWUVYxn7tkFYNhF0W6HV9cOS1NpeODSFyMenV3 + Cnt/2KD0wyk0BdLESkyL3NcsaiekURNbEU12YAho9IxYx0MR/0lZWU+4Km2unhRIISYbR/D0w0uL + PscMpTblzn54tpPPOJ0+IViuJ4vdp8+XCZvympxOFtsOjS3qmUslN84unDC0dzHS61bXpaRcui7p + qQxT/3RZASxhblCqexO/HboB5zwYuIEbM1lz8AQnolRP4MUiXc7QePaSOLgAXJXIwSsRW7xZrJMv + ArUVmPASTR5wwFcw8PFRMaAMtIVRVghiF06X0vQXjAzCciJuh7nAGgXF+9GEwBrJ0Qrs2cdsSKIO + bhkKPp/PqhE7JdytEshIVAbQLV6cHE53GFdwRkY1c1bnEGQgnVSBfhvI63u5Qt0kGYXMgmRPruub + FFZwnk2x+rUx4KNK2kHzmorpNl/B6qxIEcsy40/pJQMemi5XiRg/HBr4nqMftAN6eAg0DhZIT93U + SyG7RKF2+L7wkLhugl1VVtdG3NiDSpO1EeRmMSflFdyDFFZtF9pZ7R6zlaOeBwwW8xlNbXmtW1Zc + 2b4JOH2psXwtO9i2Ozog31j2J6DK7KVt81a4NpBXrB5n+xLHjRTVb6TDJ0dd00xGbPMgbhOxja9b + RmwLypWIbXwqI7avr7DeUeGe9jyQfHzfr4Rsg/rn+f4gckC1l/lkyvqwyOBuxSSWIv/Wddg10IaO + 2Ib+qxHbeXZtKWLbadJIO4+0Lqi6QQzXZOkSRKnufpl9g+sCWP0bEMJQCl+nc4zNNPM14eg2BYR4 + gR/EAWikn3SWdQE5RI1UD30yoxwimQlVzaQ+6n++PAZtR2qtifICaXu1SG9KVn1gITJKYdV/SL7i + eYEz8piu+5O8cB1Wrp3cP8COVin76aonOtBxHZFAn4LzERaTu1EOnaG7SYWWbHM7NWqvPyO7eyc6 + SF00u8slJiDcN20wAfF1S0xAQbmCCYhPpUXq/YlXzbYQoP0lUMBAmJgH8COMJKrRjVir5UM2nE5A + fDr7fAW9lsslpCBq3U4nqwdRSFSIN4UND7tVHIlFRsrHkeSlcneN0zuYNQ1qY4DbY6mPEWZTIU3U + StGQIo1V45FXtVbdblD8Gn0xT3DsNuVlxlHMIsYqyRxIBxWzEpnGrMkGMq3k92LwuBMEkVulBzOc + ZXUDaw5Db6IEGx/BMu7UPWya93hjIqtBMGemtDEa0k3jxlqGxsQVoxrv5yrzGPN6GvPTwyb2aRDW + rPn6IcvvG7OPyiSEPGgKBKwnniyE+QW3juT+Bjm4LRpxfItzqumZp6p8ilTtSIOjlGpI8qhsWt3+ + BQVkexPSODL311kBztKP/dArE4L7PVmBBqQmYvdYmec0jbVheiarDFg8zPmWGY/bkVys0s04A0Xw + IZnWUyxt5J0U6zaZ1DdH2fxfG5mKKlRLXX5a1gUwI0d9559l63URRlMAKPN/9p4fv+6J+0dLBZzF + PflBZNBKMRhknhaCWg6ZtBY6h9hz1MDcrSKTPI88vJ9uRhhcMp3MJusG9+8W9GZhXtxWM2LLCDso + hxPXFIIUkN807qbKNk0fhGxMmIo3Y2F7FCOrcr429OIKvdqj3YIklWatO832RHhAUSTiPMnbTeNt + 1+3QlgvDyZ2y60Z6Y1GzncXclauc71p9sFr6etEDLnbs9tvHZlwucyOvuvsKUFlYlDRRhWP+ldIn + t1yqDmoacen/El8k+UlLnUIW5KyIVZaqBfkDyuJit423f0Ds6lgX8f1KArZZaCFhV1oLOdxq/x5m + RfNc11X4xqWtZOVb6c6zGRPjKcvCVlPoSfPoFtHXbik6CP4FIrSd4Uv2C8RwNciAH7RIXhOv24IM + IOUqyAA8lfhcxydVKPzQqdTTGbpR6ILW60YRV1ncJnTrZD6HZdCb8/j91ZtjmBiC/8tGCA04wMya + h2R+j59HrkCYFnhTyFsGVun0UZu6/g1TCZSO+sfJiC1EQnAfTbhLvAERWQYzhWGtr9J1LP6MAtcs + +Re8UDcIqRkLYttReUtfZBrSTCT4gtrDWRC6TlxW1mAYb/FLgTlPtpaf90run1wNNCjnChXcYLci + i2S1mCwr2d5O7ARloXg7wRq425r6LW68g2jvR28P6XRaUrxzV9ulhyckh3qgLKxAlgZ5SGe2YdTb + SkMe7MSqAAYbC9dmLLhbhJOkZldZGx5/NvZxHWxzaf89DcmnvsQ7qwjD6fo73OMl+BU22cbf7Jbe + oxI++92kshjkuyvOP4avnbBNmJFqYxlnpLsoBhqphzKHZrmQ2Mt/f4+Zc2miK0v1Kk8wUs7vjb7d + sZ7rBowHlCtzaExbo7LtUlKXoFcorNFWZT5Q547cSByE4le1Ukd+fEBVQLmlW2e9vluLhttld+4a + RXLbQ6V3AWnu+jrjIjh2X4vk5BYJF9TGOt9CdmGmW9BDOlqa791mm/m4/+swGZlAEi8u3/16/Pml + ga68q9GgLxqVEJnz4WDeRuzRCY0CynxojnbZq7yzF3jkC0RPPFzDe5C3zGA4tL5ZWxIt4g1b0d1x + d0dxM63ay7MKZr4HEZuRxTIPfLTcgys8E1nCjTxBhomjJPfsdOgO84J+1aPZLBrYo2N32+/2y8oj + 7tkNOVCQvFzgP4gUCF9kPDRmQXIMFSV08DQo/h8ovGbGWuE1w+u2eM1IuYrXDE9JsLo5+VyD11xy + 0hNes+s77oDjyeUFSMRRtnhU5WIygQAmZ2mY60vKkUOGgpvRuqb03UHFVxtCbdruYcPJ6wZlP/mg + 4v7yPY/7ZSTy+uul7N3Eu26ra03S7p3Jj+gXPuLNeCKiyL4/ItoTWtvz7xtvqBANggusC3mhq/mQ + Vc6bBD5WE1UdsqwNO8D6cNBm1WfBcJQsb0UC6xrmDMP+VgPFTkQS4GLNFwOK6xHhzFRARoamqiTY + 23Tcw81XACgOhQzAqCQH7OvkVtgr9rrzn0qWOIRuo3b/JymLikemIGY90dXRWS9N+lzXdxMnX6wc + LzDG/YZbu+4d0X7qy1Xdd6Eq4cTjd4y/dqJWRZxUI9syTroTo5CTekp32Cpd4l21WNLNvkSETGVY + KEhOMKVzkyZHjJEgpkymlpizBePcXllAOsovyqv2vPNfO3Hbqj3UyL5qj+ykVLWHntJ8jjfACzer + mrkrtEedDz6gdwDIbyvQCDVdsSz26PAW3iF63bLYo6BcKfaITyXE7+ea8hi+U630yGMeufGAx24c + yULJfAiM6hGY88MkS1doD1wi+vRaKNnIrgmAVVjfQdWGuwM+bzLvj1MVcQ5vvtFt4P6GK/vxqI92 + +amw+gPbRwj5gk0WQWPhU/qTdf9BlKaFs3Er7LFLLIIyKUoBlVDq03VNYQvTEF2KpY6bBDzmO3EQ + VJB/xYQM/y8yOpRKRBahPL3/zGenPtMogKm36m5/x5AhztVRLExec83HwG0MUVNUe3+cvdHDI6CF + PplujN+IZ7huPvYX1fam2igZdCabkn+qM6G0lZOpKaDFZ4R6kn2fjKkp7YeWYS0/21fl17juZong + 2i1sMIdjDEUUlTGC22H6uBYZ53vKuwqircLrhjW87sWn4/dXHwf9d1rze7m/J2ofB5Le5DwUe/Lf + kzmoPNmeICAskKUncFdmNSy9JbWAIHEsJ7OdNB7LiB4hKA8lSx6eZMeV5Wm9JFKC8Shz+uraCVuA + M9PrVhKMpFySYOgpSTC/Xv1eyerwXbcENBK9HQYxnGc+COIgYp4JNVKTSDQoVyC+havny6roDoNl + gqtNBQCjvSmVccMqAiuPPRTyx6+Lx2qqRvvKG7CuHg+DSi6DqgQno8w/bOb3k1IkvNuYgfDUdThq + 560+ULMU8M0awlBiN3Id3/1n71xZCbSJYFEEL1Hj1qHaFFqGC4Rvg34lBRFM5Bpmq5mK7VQKff/F + x1/PXirL05E2l6wo9PpmnfqIfd3hfunhplYyScBDFSqex3fazaSNxUexx5ATJ8IJwA2UwTnMZ0p+ + /I+g2FTBCDevkJ4KqI1qy3el3dY3oyoAjX3tuP/DQpnGZP8AlZ8eG/tjjXoNVsWDzYLq4qJc4l8u + mNMil5het7q4JOXSxUVPJeTH8ZVXvri4MG0VLy737Ss4RlHoDrjr+q6E/CjVCcQotaG4wTEwbqBS + NYayRhfMyMdkwRdv3MUbb/HGX/RPTo6PP+tKxYUSg+Uil5JoRhDp91NQqKYqjp28K0q0x9MtTOw5 + eMgRMmLk3CvJ8RBTe5FTxc2hbxX5KTrwgdBAkoVXuTHNwUvYypo6AiD9mIV1iqlrAYs8r3Lbbfn8 + WpXdD5qCRI0OGsrsCL8F6rtoHlU6XEkQAM0sbtWFCepZKtPTVFZBkSoXoPzzbaweHjtdBsiPeU9O + MjIQi+UxNOLdYegd4SHX07Dq/mmglA9OPxeHE5tsPc1bP7ITvVic4ers1hz8rWNR1wrPA6givy3M + t2xjH0BFXZQCqMRDGaU4WzBlBi9AHODXXB5fYXFWVAGVi0aog1eX5+/7MegXoRe97Nk2u4KOetib + AAMHzbMnM0rE7oNGv/zyC5yn1QixWtvtfif05Nmsk3D3zodsDJ70yEqgVIgClgyckUIAurUV6TCK + T1zhymVCojpwIC5sYcr76jJltTtc8j0F/7ZA4F7IiyCuGu6lcFD2tbmF3AjuXD8us9VknnZBu5NM + qYi5Ud0A35A/8836YZlC/52M+PCaDDmhIuruQWMKHSpYXGCQh85BTTE0j/LJPl47rmuvttDrVmqL + pFxSW+ipLIZ2felWkAojTB0tqi3O21cs9OEuGLAwiJi8hT4W8Tl/vf6gII4elkC/i6K0hmnseRaT + ZU5IwHZ+oMDQhae/m1AgIVIVbpgDqP6MOAKnCzBbz6VbEZSVdTJD4d0fyiP5UyvJyPzsg4bSYfCL + RwWGf71mbVBP6XUrXiIpl3gJPSVecnl14ldsIJ6wcxaZSfh2GARYFm4QBCEL45oSw+RIpopp2Qb9 + zbDv/neTouqpTERDidFB+Aq4QIUKtKDMzkCwH/czMs/qrQsEQSnRkYmgk87HIGct0BR4m40flXyj + aiucnxPW5nJyf4/xidgIkxJz7UtorBlGouag+qDRwtYiaJKT8YhHizxkUnLJy8XIrxpDquMxwZVY + M7hSFMdMobYVMIfykGzJNhsCUn1WQhLHgNRCLAAP44BHURkJRny2KLQj59wGwidkPm+KOVDf0fvL + bIieODcaIj103F4HysBhVUJcLAEjVAD4DGVrAJ1tMxWuDQy+KH5zkov/9N1tOyPwdNAos7odZavu + HQ6aAQeMvrq8C3ZqC3h+RNNtB85KKKQKub9etBIK6XU7Rn5RJxTSU8nIb04rIAOeX7Zlh29fcdDf + Qn/AA9+J/DqQAbq0H6fDtcgbJNkFLznJBFdpRyFcYYAOqkohWS000ACmk/vmiPyoAmVWxHE2OtD8 + z/w+Iamh078avBV4jSBb9ZRz4aQpcMtjZSZaN96e3YKICHxKoEOTzC3s/WSKK0HZ+T3cEppFubFg + UTgCLbzsZfHAWcllu4ZpbGm78OtSv7cOsYGbgA7o1QT7WI81z0rrpv7QTw58sqLRZIfrKG6qM1Ab + OOy5biXCdGr5Q2uikaGpdEG0K+Qbcc6OWyPfaEUlIsf3fh+jrrZA6iiu67W42sTrljqKoFzRUfCp + vNquawoZxU5cudpiuIhjNoi9wHFs8HMu71/wVy8x7hWeT7FA8v9uJmJWSkjJAisM+JF5FFTzbI6i + K8VWgti6ls6upTjV0/RrKtzkmBCHmW86ER8LACyzzQLFU6SeaUTZy2VN+aO9cXMMjcNDYJWKxjFL + 7hH3eDMTUXm7KzJglFI1Ua14lT1VT4Vv4aDbxKycandmTmk+3WYUVtgYQA2HN3bKLt0yD6z9iGIX + nu+U9L5dc9RlXzWztB0q6NmdhB4eei28RAHryWVD7tW4xtZ32+FwQOS1MdekpQblkOKDfu3pIZTE + +tfd1PU7x0b+OJTknwm1qH40XeMfPZOETUemD5orvZ/8gcy7SmufihR1oWjdUW8OoPRAhHJrzmgX + 5UyUfJWX2A3O/PaAL6KNfbwCdVGKVxAPSV5KvxNKxovrTygzyigQE99FvaPqJlwvFx6vQXOhvjAc + gbFA1iYnLNvlLlwka4QKa4o74nsInPgwIh6F0wjQJ8zx2JEPZAUg47BCjUIspN2wPvvPIPRgKrkw + 5ifphYrT2FLeARP1HEv9dVeeT6684G/ufw39/xrCvGG5D9oG3YC77NvBExfC9HxWwGQ7QLP3uQI8 + P5DU4dEOitdTUeD3177j2Pv76HUrXVpSLunS9FTGDlxduOG7sjbthJj8Xsw3Dt4OGQqBUTDAnwIH + qJivMyp7emBv3cOxDpybl8UCO3RFDEQ6aGELgnByvZi64fGCPDNZH5SGPgyt0FZZT0gnFq/f1gYo + EIYpDaDStXJtnYriQMnLknPOawxP9v0YgxGafXMKxUROgq7GY9YUNgu+NHWwvwkZKfZ+/Kr0aCMp + DY3HTtSVebmWwvYY1E6A0w9m8LuqMm1rzrnEbd+9obfOhlYufbpuNE/XsXDtcQ27KG4sPZO7T89T + Et4drd1RhmockXq43HvKUPPQieXTPYairhwCuPh07bj8ZHhsX4leNrCrRa+ol6vRy+cy2+a3d1UP + pRs45Xr0Q/x0jw/QfB1IM+5vt5P/3UzWkzkVk1F7eZaNsQjckiqg5xXo1F9G2tt9s3hgxNU+3q6x + ZLp6WeBc05nAjUA+IJF4sZklcxSitLIEat4DRp8dwaKgpQwTRYD0x80tkh5jtG3BxQ4LIUrVkdwu + k2nw1T1LaV0VSh3F3PXdSoxd2d1gBtaxsiHVMEUaJI2UUcFKZ4jZoqvj7Vk3qBmzorZzc5FHdf7Z + oDGXVpHs/dF3Tg+PjbpmQ+6zLnCLt/mdcKHERXTY2lf6bA73DwzcXWP+G5Xn+jD/fShtl0Z8svNu + 9C7K03T0hbpb1W8OXoldaW4rFwyxWrMelbYJil+9TmquiJqYFd+R9SBdpwXSJL1uWQ9SUK7Ug8Sn + EvroH2fVwhiihIpZDvJV6OLNPAhdJkJ2twUyT5dAvxrIvANUtoQqGTdxXjh/kcsqoEOdpehnBbG3 + mE6/RllwXWbqQcDcXSPNw549LlPtoJU44KXO8g2k+tpqQm5KEv/JZpY9QYQbv6YDTG+fMp3fX3CX + 2580et1O7SfKZbVfPJUQHTefy1G+LI6DuKz0v3IjL4oGbuTHUW2eM/C5e2WaNqEElV4hXzy97sOM + p/OBDOgk0Jt/Y2H61QJ2GELsTSfzL+lYoDyAtptnR87Tb6XiI3L6V0d9cXWcV4EmoJkbYLjjZLwR + SanJWizWqn+zXrt0gf+6wn+t4S5bY71gzARDrcpMeIaXqjG+h7CPYqBsEIZeXIl4G+Pt8fA4HY4n + MnGpOM1ARwHR0FTtBqr1wyYOFnuOD1L1DtFx0L+Fbu9L/MaF4TcKXDxiTuyVY40/1a+xKcWZNT2L + JhLm+sx1D6dZMwHlPOsONrZOL8QNnjTu8OY9bHjdQQMFwStb6lNBuxf+Av8IFshnMjEgONs6tRrP + ubbJuDHryckosrBCbkrDVLaSF/civ8OcsycTbwRp45S+vXuN23z5M/HY4mHH17tgIm0t7E/Y8/bQ + uC6SgToDiBd8sWY8BS5qo794PCIHIhW3HxVEsr2kDi4D94APtAncw9ctA/cE5UrgHj6Vhe/eXTGc + 5ILcEUeBF4ZRJXQvBLnDBwk/gqmU0GCf4O7VxYINPCm616m+791kmiDfWIkbXoFTrvAw0QuLZD16 + SOnPI2Q5qzq7980wgVlHHgXf/DChJNEXx+PsMl2/LCh9+FeDdaiYvePbBXxrRXAwB1kuu16+TQfG + RRWEsV8pSF430G3jq5cQotA3L8iCKYhHIeyFinWp9CU1RiafORUj046vOVjuMOjmsKxirMKU/gVO + 7hov0GJ1aNwLtxNt0zD6ctymWDrVV+8PsjN7dP7yLKUA017FFyIn2TVJOz3Uh3tM/EC7PNQQ2pKg + 0hylzblz6G5IVxe12xPNkgWRtNA3Hbm2buZndiOJA10zvY3zVWdmonz5Txcub2FmotftnA9Euex6 + EE/pGvrluiY1yil5vD1Ufr0g9gdu6HFmgU65M1309/kUBlGTVC9NpfmzWmtR5Ia8zlr0rJLqL7Jv + /eTuDitpP9Yg7OVg0bNsnn1NpvixZJF98/FVPy9keFSCpIZmI4zpU9VKl/0XJ8f/eKlRqLekZv7t + 0z/ytCceUKr/z4/3RRrC7gZDhwNiEUS7JXiZKsJn4z2odAHk+DxUH+a7kZ9PxFuFW963qo/ZMLtI + NDCW6UC6ig960ggIXLWNERBftzQCCsoVIyA+JT548fGqwgcdgV9eNgIGbuzzgYuiemxywodshrwi + 2wg5hjxdF0n/xc3N8N1LVOYznCScLOKBFw+LqseTAhKmm1XJcOY6je48EEl1JnuFUg1CSbmUki2t + 8pgCt5EO/LEO6aTo8jdDgXhTWg7Mcuy5FRjBUjSqcTc4jRUAYuY7zI3/2SsOpNbCNEswYkLnwIvU + SBBFfwv6qzn1DbfLcpUtV0d9AbYrIP31pYPZIgtRYkZQgxarYikn9IYusilsWiHInJ+fH9nvnh7u + VW3I4k5M0cMdROnizImbYBeV7rCvDqyI6uetWyLAOHnDqeVoOw0c6iz10w0KUdACN18A6+wXimQR + zFQ3n4dHQXXiS/LNekmMtSnwU2jVrmISdlNTMgke0/WgAhw2IkOMDvbf/94fZ5g7VuZCQ97b+YYO + mSgNAmssgRyF2QSu69PR0KEHRYBCEAbrXfEawhT1b5jen1bq+IcGlKvtE6jtE3jeaydot3lkG9ut + o7owNo58SBLJaLxkxaJbBXw2eUYIqql3dv7Jk7J/6U8g/y9ZDwnh3nCDQGaaeIGBhlfwSuzEWdwC + qH4I2SfFkQQCAUWSTNbtoWMw/juW+tHXdCkuxBUs6BrjfNYIwL/IJhRPifRxcsyBzrP5cHd0ZSjR + SOswKluN14PDQxdCijFIX9MybjCMqzZWZyfy15ZcMD8mMP0FzG9Nn/UTs3NSDsa/cWIKgb2Vxa5W + 6WJtXVv6OWN5dgccEVAorfUm2EXNMK1VoCV3kq+bncOp7hA9LMAk7EuHHw5N8cyQ+PyQquhcOGEL + Zxm9bldFhyiXq+iIpzozh7NKZo7Pys6y6O0rD+uYsYGHoZreYXk58zRZwp2auxwpB4QzmQNS9UeI + lBDOtiXqcPafRJ1uE3U6XKYebTRd2wb+90fP3PkTZ94887wZxT4psfHymsWRPfuk163Yp6RcYp/0 + lNjnyfkv1VjiCBXEIvP0374K/Dj0vEEQMJ/LGMfRA4yVvnYCk5DcTqZ4ivBgIS/K7pPZ41Ff9ACH + fDJDGzDahtDsBYu7QLeFxLEsiIMjWHbYOFQkKnkkP2+K5KeT1cNMznOigAuPkHbuVkbahc5F21x1 + hVel9EmGtl+Orz3xjgwkJ1Z8MvlSNb4W87yLgyyFJrAmbsh8N/R5xXoKNzmwwHyTm+TCxrqqGIvA + A79CT8E5lrBUm8vBhjxmnttIpz06q0Gx4HQrzNksaypMgx7msGShNbF/it+dY/9I4E8TeZWXx2ig + vBrjNFCEUB0BauivEFsc9sYYpLz7ZXpfjZlEJbBhzZsGq7qQU1xGk62Wv0PU0KZ73LKTDJjDXDKz + Lf0ETlNQKQMG7ftoIP+FtuwQxp2NJuIo1drJb7P1Q34W6ZhVRpUHTgy08rjqi9NOTVQND5E2JFJm + fkmWMjDZyEHCsE4Rgo+le1f6YGHYiCZSsHllyDqq9//f8Oz3kGfp+P+IUfKQQzmOVjvE5soDzuqK + S7zC3LYtnh3l0BOU89nvPP9oJ+ZurZXck9mZW/YBxpcXFOtdctBBtsT9MHALzeNic8tGoVLhDMZv + 29ij+cuZadtPjphhhShdZztnHBl0eQglfm69hzqx7FOm7ukFSKT2MhS9biVDScolGYqekgx1dnpc + AVp0RNRC0UEcvn3FQJTibMCYHzkSOOhsk4hQxIK15lTGbiB+97HO0DpLkyq44Vk2vZ/0v8JGGpXv + /NDEOC9w8ij2fC+sJGNhV/cwmsdpcTAqkETVt6oHVHeiwKYzfTudXiOvpdHXYvM5QRRZjV+TFJrQ + cDvJuEk6UyR7cjn6W2YAr7bj91ck6SurNf1t1X8Bs7h6iVfZ12z6FbYv7GqxPILH5uO6Tdff0pTw + 2WnMeJ+dXg/kb+bFiH/bEXZ4pO4xAWm8WYtsWCPlFg7TZj7GcygYP+wnuOhw6+oS8qFHYBQRFasu + LpLcYkMseS9u/L3ib2LSN+G0ZfdLLKjVTFZNBIwAxtHK1xDFKkhGb4gOhr9//GfzWDGOhNOUFE3i + eBK1QfNQm7/rulQmbpWOYOZFTUIgtinfujvngWzLZMOmWR3BtT8SUtA8sTWc/3TAkUNjsOIolohc + cGfMYVvZV4PtEasUV14LTttyehyKw2rJzu2WryPa20zKgaM99R/Cdrh+qom1j546MB304hndzRoW + vtZQXgTuq33TRPbT3XHfY6EforuVBSwW56ENf7J1N2Aec6PTNQe8rz37lhh7BC1KzGDf6tAheYYx + Z20Pg1yLItX1PrnYyz8hWWAC4treoWfZ+Jnjl6qLgsXkXCKbuV6Q/ah5LncNz1x7K243oEKIwSaD + 8Z9ZtgGLQ6cIQTEcPa7wJzCioTyg09R2zLZcoSuApIARmz45gRP8mrUpF6ua2LFp3UGBTatnpH4t + F1MmK7IEzk2Ng+2C+b3mv4jmwJXd2AudnrVPxx5qdW8PUWeOnj3DFfaIg/yhTqX9FuTZeJqsd1Dn + 7ix1hinV9b+vmdsCV5NetzKdSMol0wk9pbN78/m6YjrhflwCN+OijB5zXSyj52DkPUFsTO82y/7n + a+KP0k5ys15W7STt63F6cPCwiMKh0e4GndzYgqw+0WmJ98lslgyFP7wx9dSNgy2F5DhjUVwuWEfz + o+q/lz4+CGNnF73eyZZhDnATfk2X61VfX1wCXMH4th6usLIwuJGEVvBJ5ilIpLVV6tt40UMyLpQ+ + egu5RtSDTmuRKqqxVJ0KyaiHVjh9lrG3nRdVjShmiuBC1iKIfT+EZTg/NAibk/dDaTelVHWZ2Mpk + KffH5WScfUcRSFZybhsdqO4Oyk/95RoubXuzO71udXdIyqW7g57S3XF1XM3L4pXQBfftK8/jUegP + PM/zIxk3jRk2L45fFjNt6Pq4ShY1ZfoENP00Tb4mIIugNRbbYX650qCVgxFXRpo/6j36XiM6JY9Y + zB1v/1ytnFYUCGWughoAgy7Ya2j8FqgHXlCqYVq430DcCyrwRWK+ylNkXD5uWK7A2jXF/DqLfO6h + g7x3VVn0QR/TsEQs2TJNtRXfTPfCrt3/GqbVZR8I9MkVHODpelIWIoWVvTxkuTfO+y+uPvTPXw76 + yXSV1fSX1y1AI9CR8HSLV4sEUwGUu+rhQdBFukNGcWmun/OO0XKy2CcyzaXiA7WTb8X521FodBy4 + cZhTOaDORKCp0LxSq8a7sMkTwFie0qQ2xp6j8tyAouOtJmh/WeDwXLmtwELA1vTU7ssnrXrsqM66 + FPHaMESr/d4J4R9lfgokmIce6EEDVHKB9/++y8o8V//tBYH32nHblObRjSxr8+SdFIvz6KckKczu + Zqqu4VDuOp2kC5z48vx9Hy5fDA5/2at54xKa95CGsN27PicrUexLd6ZF9tzWMq5wgITqUuPqaxG2 + sz2XiEo+yxR9POHJARbnfQzWVDhaDuAhxcjRubnJ7JKhttNosVF9mbrA29SeptctUxd4Te1pekrb + 8tPNRUWA9R3uVhIXmBOwkA/gR8Sl8eNUR7xWYuIvzz+9F+FFosbaMkfpe3G5/sYW/fP5aLoRXPPT + /I4thp9WU/jv+9WcLV5KcMZ/ZZP5yqAhzW4rkdkmXOD3/ffAgAWYYiagAPXzQmjQ6sgUbmCWNwLq + pRA7bMTNCSFcjKgsB4vPqhOqnXI166L5JXBBeKgPu1WfZsKth42BrbBlQtCktofKGsRi3ig3cw/T + I54OEbl+eo34WMdvjApWo+v9ObdZD0+ezuRgvtdzOkklpcLPTVvbRoA4KB318JzIkPACiitiNWxH + BgXC6sBmWsGrhUnYSm3rjDoRM/D6L89vGH8jNp6Qx1vFTuJpFNds8bg+odGsKxjsIJBIYA6L7K30 + 9LolEpigXEECw6cSkPK6miTiuaxagsSP49j1BgEWx+PbAefnU6A/+lODfOUQ8nEAQrACEwh00iRv + kfVDr9smTfJq1g89lRUErs+YUxE9OI+rOZNxBAdn4MUxj2Taz/EoXT9OhyfZcf9kmIhfjLAXfJQl + +UtoEMXqby8HBbdeOv83fAShP6rWmOrTp4aysLE4GyTjaXJyYYW8ncxxby3JDoMHq9T3kRGIibfW + 3WS5WoNUmSISNMiwX5NpNicraCEhkfbo6fKeVaFJVSK2adfjxl2KoaUVHNCts9bg84magEHDOIpd + p5y9ki7vM4zHg+E1J1gGcSVYt/fnX9Oe2PMa4C72BDZSxHwdDbF3MZLn4d6IZJSL3TazuvgOJvp0 + uD6KyLON7nGd2KfPM3AL96tq1hHEtSLXVQxQpAp0OC0uMnrdtkCHU73I6KlUoT9eleMHGMogFWw+ + LIrGBxGwTWkJ+nh5RqWtlHBppuN/elhUwwhWswQEa9WgOX7ESKnz3ebUvSB2POZ0AIWHji4Q/stu + E9e/ge+azHBac09AEzpe4AZNyfzmUDV9UaivsdCYw0zZqo5e71Np+pcpZediHCM6UKcTuEAeJvcP + 0I9MMKZ75AWs4Etd4WRQygHWQh/WC3tzfHJMaJ2reXb96WqlilAky9S4TVh0Uy6J3cMtlteGCMKe + /DJh+6t8/xub9LxOqm+7jJF2RFRW6WacbZaTMbqeC5JMC6cGBVDMW5GrBeTncnZUVFIBM/yH+TRC + yq0sHFkRH9wi6KshlOFQslsY8zMrP9rFBQ2fRETEybPEDlT3S6xSARg/Y/y147VKBlCNbNMBdCdG + QoB6Kj0Jo0UgswMeUhBzVw/Z6IueoMDpoeFm9JDNx0vkRDXvfFwBhd6D+C8irzGXyaBT36gHc5dN + D4Qb6spB4cSeE5UJiS+rkqmgBOptwGgw6vMIDYICxsw5myVimfb+7j3xDbeJXx4nq5ymqL7iQLUh + VqY++fW2VkLLpvbAVHb0touosIFLNBLFIeHCbz+4jpFQKYQAr9lpOkTI8/kYWr7fxpJaAHtZMso/ + EtiYj2Gg2GQzR16Ujvf8PMnMQ53X5X9kTtvELtnGlpWrLgxOLh/KKjnH768+9sepAikvJ2zt+nux + F/QK+75LbNyh7FOUd3KQ6NyXrDjGWhYwwdfu22rOh1ot1Ar7jBDxs++TMf0B2rVKMt0/ELUtrGGH + lhJy09St8J5WA1C8xKJ/uPy0L7CfR9sGVyKjRdg/BiOkwpnvrrnfwrVNr1vp5ZJySS+npzKu//pd + UNHLRUZJUS/HErXc5Viilrt+LD0GhnnPCF9LgD8guiqWl17evrkU2ZLFECLKAFjeBtUQzvK7pqLa + CJAUexwkiloV3UBpL41Ud1dn14XV9psLPhX6yzHtDeJiA1zBoYFuF+hmQxyakiLfXIyJ6JfrOFY/ + qDxjR30N+LOSQSjo0Ss00s5bkLPQeNtAGPGpyVR8VFLajc+EZ3lafA83lAYqAFG5uxhHstKZGfgG + xQFKCQVQ3LYdkAhTs4TVqdGruZMd4palK6B8Bp48DYAFPmUtw0EbtuufgoAogb4gvWjz/x4x8h6t + X/sDaaOBhlzGsp0E79hrx2+D+63bWEay6S6KgWzqYZUzYtWHxUNybyai5wXXhW1Tx43BhURHzugJ + BBcnjGXS4xOWbNdnISCThK79ViyZ3VhIx17hPbRaUUziUD61hyjfO2n9CBEPtG6Jvq2mvOXc7C/g + /VCc/i4FRN8j/Jv9JLk4pLq+ZCEsHkC1BNPJ/YG53Io7UQ7O+2vHC1v4X8Trdv4Xolz2v4inJOd9 + PL1kVewrXlMcCZSNyA8GoJbGqlLpb9Bptlw8PC4nc1EoapyOkuVt9v1xSvmFukQ0eXnvQOZQXl58 + 8pDOyll0yfrhW/J4ZJaNFECEojqa3ouoesntfJSvxGT+MLmdSGzQkw1/Nej/nzn+90NK/3VfESbh + ZnqHasPjdKiRBZdpci+qVpIQ+jGdsT9AHupm6xI0pANFfrmIUhGiM3K9IAjLnihzrSoxCWHUVJcp + dFxgBd4/e3/K3dITB0i7lzwKRVSR+fp7u8hAxTnGJjXz8KPoPZfaUD8+jRXPjJCuLM9buw86mPqT + ADRqEV3e5NPHQwIzIpJj5PcM9yKm7k1fSfVu0Fqopya2Mr3swBDp6Zms5DNdBnQZNui+2bL3MFmt + MV5qnFLojTBFjuDHqn/+sn8CFHpIRkjzbhD1/jCq8e6A6Z2udNBFCT9KwfDOK+74VoptKL64MuOt + 8hXbktkeRcQDVpojGWTdblCu45EdIp+o1WQKl62IsFvTL2uJg06xEiMEpl6vazSyLYiGsKh8Szej + FOsigZJeQ7UWcFDCOqiYm5zsj7gn2qggagI4J0Cu68XYfYOHs7oNVnnk+vn5f9mRdQOymliSfbOL + rriUQPuv3ad73RX7UXvyAAQWSIVM2PkPGI3LGW2HrR/44qM7/CXWea4vxe7bmtimLiUK8//1grm+ + fZg/vW6lzEnKJWWOntJldHn6PqyE+Xso9BSDwsO3wyB2Q38QYvqyTKvURajRDnfVbIczjLq5UY50 + pst0HP7HcP8nM9zjptJR117s/2Gkkycw3EvSnh9720ri7TMtP8snQJFmVKHdHPcoE0doh9H9B/D/ + p/UQhLoy6AeQ63nLyqDUxroyqOzCrAxKD4mFL7I7CYX4YQh6ki5eZfwGLOjO7+Grsi6s8AB4Lgty + U3FCaHv7ewNuH/siBxMUGLE1fdO7oKygjVu06+ClA+Konia9T0vMpRKGksigf7ucjO/3CwJSm5MC + 9D9dOyFrkTooXrdLHSTK5dRB8ZQ25LubE7+aOhjHldTBMIQdGA7CEPOsd6QOLoH+XyR10HfJJOjH + pFMK+weKspjfdKhzKJYI0Q/pd8yt3juasUv3CwukMWuCyu5BCTjcCypTtl/sGtUY+XjN3BaOFnrd + 6hxJyqVzRE9VCu6vcfkcsbicsOm8fQWSecicgRuG3JdgZ8ekM48I0rCQ2lQ1mutEOiGGPC6E8xIE + KdT2QNOZiuoYVJBi/bgE8WWe6nsADaLigEJ/8fN3fSRyVoZiVoYC6FHMDf7e6PyIwrgpByf2YgyZ + fKJ+cgcL9VNO/UyMRSbcSln5uwEBNHZMRnh+dl4skKa66TVuH5Chut5BPdznGsuMhSJJEweKB9bi + E7ewrhqj1VM6t58tEGbkRbm0XtmDLWmFsVtcmd173GqeOiD7w7I8uwbWjESc9O8X157bIqmSXre6 + ayTl0l1DT2VN0OMqKLPrhSW4Bw9xiRj34nDAsC5MKG+bbDmfrB/wWFf4hSyvmfwREJr1Zwyz79Zc + 2/Oj5vqJkRMHcblOY7IEEb90ixoWIZ/vpNi7GOaTbgzyxa+fjylJ3+DSqxR9CJpN6zGMsYQERYIP + SmVTxxssIjU0qqfCE8Hcca/DVpeB46JYVV5xURPP35AffyRqVMG4Rfi1ngCEtUx111iqUthIergr + NaCG5zoSSDokRlGaReMeOLCE4J/tAsBNik2sd/jTk7eAfesGLKCzq+953iHKwNgRXoC6kphEIGKB + 1waBCF+3RCASlCsIRPiUrqTzd+8rV5LH0FBQMiMgjE3gD1yOcWh0IZ2Ukcve/faOF+xZChBq9JCO + viyyCZq4KDKoWJJWGM7f3SWMSs+qiwJU+gXmFCYzpP5uc8vp7/QmXXjnt+PqhWdzTX0qMHsOQrD3 + dIBx5YqshckwQeNib4vOoEfZ+3mT3sO9os0ncEl2BO52ADCbmDbVGme5MIxKFejCjNjoMLKLg7Hf + aq5BS0DOXVVw67tUvIVL0wpMkj1vodctTSuCcsW0gk9zMKwKvBmonn7ZtjKE7e1E/oBxxM4l5nKR + zBXiEvOGyRS4NuxyrPJQG5Z4MmReX/9dOXymORHlgfMG3n/913A8oTdhU8A5h6kfRgPmDbgH6zKB + vTB0h7fwwcNsqqIcmxCgdKzjTLtqVYyjiKlI+1ee7yh1Ose/quJwYmEwVTl4ibtxM92UpXYzmlOj + YR1ExUA7iZnHw6DMDPOFKCxBg33FrdbH7QhL60+5JQR8Vo4y7xB8Fny/YBqCfDeFUqKAkjimk0Un + BFkgC5WXp2Bvil2lzcr42fqTYKNOPIPagRRGJOH5s3mWfX88KJUWJpdQ+idL1Dv3BcwSx7uw6E0c + oR3R2CFPsnoJPQtw5vZ1b3eU9CupcfTDkzNntq/a0BEuWOSq+FrGo/i1E7cKsJVtbCNsVRdGiK18 + SFd0wVuK1ooSRMtkPk8LZUPR8KDep4p92ajop1bl5z5PZnB4iql3a3wi6gjGkYR0OSwf7eDcrVy/ + /FHYK4HvODXlCo0P0FO9Vyraz3H25zQ8t0SjuoVak/R2kty1K/desOdwhSiu4QlN4AQk8xZWBnrd + ShOQlEuaAD0lTeD3kyuvgloQeaaT1fVBEWCxj4D8HE6oDFa4knscpCilgCvBdNB/SFb5koicoNo1 + QUlvmnzNxnAjzFcgji7TFMhMN3A7rEbF2JsXZx+uXg5l8QedWFhMYzIzmDBhuL/A8aBRSWMzUTzF + aOF1bY/PZXJ9WerjntYHV2LeZdzg8oT9EcSVnLID4iueYrX0XSCyyNJike10fCQWBHVoYZEbkHKd + 3N+nOa4OmtnTdSpITAj0EHSxxWY5uZvAoyKHUH8frkFS39w/LDbodd2MJ+mqh7tYQyX4cSgKjXuE + UDIXyRWdRRz+YDN4S1Zeind/bjAtka9KKPM4bFcmRzWxLaEsOzBKKNMzYnyr1YIpYWmJcP0Py5SK + GKq9+UU6lESxnDDgked6L3v09pvG12+QbrkNPEMxKYp9hXwXNNapF3bwbLl/oXq1ZQ7pZAdogD3K + XlPqRMgCUgVBnb+dTlYPwr6GaFEJXqzzRHzhHdn2Fpn+MnvyjQWGikTykE2tRjHHiE2UN0zDPG1L + C3I8CuHA0h39O1gc8YnjVEbk7kVTzvyuWaM+RRLPF1jKNd6YbefQZz5ZOWVMs+SbtxNBiRbmfpl9 + Wz/sJvkzGec+GU3oTtKW5VW6WFuaJ3zQwnzdcIQ3/3e9i9eTxU6G3R38nxeQYltiT/t6OEsRuxUu + uJO8Nds6vKs/EuQgsEFyYhz0VV24ZtUVHfy/lcRScx1ur5XQ65ZYaoJyBUsNn8pwnF9vqhjnAiHA + xFIbArfmcTCIEAzcRivJ7b6JMvzj8cRbbPk1HQ/gN2CjaPJYp1MMxkVRe/o4hM2QFfAgFeTFSbaq + ujkVqs8LDOTY9D9s5veTl6Z47vK2sTnPIEDbcmJR6H//25UbOTiNh00y7FzVaxEIapVM1yh9TOAa + hNEdld2nq2w82czeKphD2OTAe0kN+/SQoH/nKYbbo10LY4Z/uLk6Iqy7b/oyjCdwqB58RKZwbTCi + MQsL5AN0ksGnWYGZ9+R+wjdhOe6TKaUyN2JL1SdCEQFtx7jLBY8/jFHeOl6mPIWK84UaI4F9QJjT + oB1KgmxkjZOgOjGREuRT4mV6E8ql1clNJw/HVyvFwdRDgypCI3BPAp1FFFx6lk3vJzi75XKYW+yS + dqDFsSum/lZ6B1qITH8kNJS9REnmUkoGqFoPIMkMR5kIJvwK7Ks2JsMa9NthhTt/SGsLmsO3bPml + sKCFfizKpe6FA6bOT6Sx670Tr3VioGpkjV2vOjGx6+VTqeQvlkyW8Lq5PFHnhbRz5oRe6LjBy97N + bOQPA21ZxjeVzwP/VHl/BQ8JATkKewTZQOxznG1uNdR2/3aZJl8wsDOZLPtfJwnydbx8sw2WW4fe + YJbtYT+cgJMpB/G7JdGWartLvhkiUOq/lfpPAnpR/Uea42SGNbBX68lsM219JkPps56lk/bRRl7k + hRKvfzFVQCh3eBAEb9ym9/8R2ZcMQSgApLTViXfEL3XH/WK6k8URg/8E9qCpnWnCncTRPjO10Qvi + yFDvH1J0+2OkjDYsNet/2wJfYxX4GjH7XAx63TbwFSlXA1/hqQx8vTp3q4GvXlQOfH3F48h1/QGP + Y9+PTOXPKI0rrC/AgGUtJV2NE7r81kGsl1kwOXb8mNVnaCQF92YpBrYJYsMkWEjVaLDGm8gd0K7e + udSS7KAv6w/Drjr5yKka1WqAePK41RFWHoHKYa8A48yW5ihCHjSMIga1PfLK6SGdpBAz7ndW6zCg + y0EtYTr/CmrgwpZr/llCnp4J1myn7qiYEs9+uYYNY8/s6HUrZicpl5gdPSVm9/n6l0qUP4/RBVFk + du7bV74LN3A08F04Mt52sIAvS6Bf5Wx/SrAAFvpxr/c8TonaVUzrQey9+5p5LfUg2chaD1KdmHqQ + fCoTFL9jVbXppFLTpfEPBmWETImjoCeUnZ+GUn04rJlaIC6LeDqeY2/gptcti3gKypUinvhUFvE8 + /lyJv0fmVsaQHrphFIVs4Ea5gfu6KNsguOAjxbWt6CNxKIsHEXWd12Ib5tZSuMwNzEOdYUIZ6mg1 + kGESRyIIG+51LbQL6+rxcqzzfD4l62q4vGUgzYmWRgIsuFYVmsyIOlNi4o0VRhkPETeszLQWIJqg + DkHB6Z9s61F7fjXcvW7YmqnVeNuLUJhGKL0XVpIGSrTL0GefhiCwYxbftF/9AFiM4/4LsSQDWqUB + PvMXL48KDaePekCw3WfJXBsQdY1QOEpTocjA3zfT9QTWXglO8Gi1wTKiFMmfZ/XQbhtS5b/ibqO9 + NihuLImFoKzpOV5mD8+FhoZmcUTBEiwk3b4Sv9MUvoCHLv0Gv+Fu2shzAVMG/3kk44KMkCBLRmFW + dyyflczXAdk9HehdhxDJppwHZJzJC5/rQqdWZgAmS1aLHWptAcCzJ3Rc+6NrtT5d0G2Ejz7EghpT + dYPLayfw7eVRet3qYpKUSxcTPaWL6Zfj6wp4lRuyEhCC//aVG8ehwwaew7iKB00WC1CQVjIW0FDB + Ba8Q667Ob0UjlpGdyBlmsFaww4FR9Zfow5JZPdnyPpkr64ZkiOXmZl2sX5Klb6nh12vmYdQItgli + TeRX8rG6ko2/wMJl98nssT/eLHEj6bIaQJEQLdXFKL/cEJnhCtyWs4pG3MgJc5+usVhNSyNHooc2 + qIbf6iZiiEkfmAWaxBHWX4xc5WfVLgH8L0VXMiy8yP4qyR3/nc5kUuwvBKdRgGuQuwFDpzCm1MBs + gDOKdtJ52sPNrfEUgiAm2z0BU+YT3o6r4lSb7W0XrNLPvnA9T8T129oudgwjiptpNWtaDePai9Yu + BfAn64/6sowDw+C0rxpKyQWnGOxvf5nQ61aXiaRcukzoKV0mV5fn6KIsqTmRV6qJGL59xfzYD+MB + TmMorRufdwaPfwMhVHGgseZAxZBxaRBJlzCmb4vtESxbKU372WZdSE/BkJPxZkQMBtPy18JVJ855 + NMS0u+z742KVwU5I6U777W/H/clymSDiKq7Sh8srX+fsO5ETdGav/On5QqxEozJ7tqPZh9IuLvST + rLHPwISq+IKvrB9Oi1Kp9Lqt9cOplkqlpxJ1/eR91frBMQ6yVEHL87wgcgbwX4zPItx1iSdxkjs/ + 36dSz5qvj5SzDQ+xNohdH7/n7IgECyWVYXx0TmKGiZIYKybSxMUc3pAVpS/TTXIYDAJuH42rhg9d + siHDdPN5PX57WM3C1/6QKHzC0D+NxNFQV8MEPQlNr00BJNF1fdf1msBUJph/rItWjOVcVMgH3g8k + XzPHvVON5r4yTSzlxTNE4+b+sQyL3CFChaEwhqN+ssgW9JhuDDhjsEe+YqSEMIKo1Eal1CT9k9xs + cLdM7sXFUkpbNWRfULq+IHW1Y3t4vHIjSkDxhl5o1KE8yL4hnfr5p1mrxx2A0uwqoNOK2GEIN2Gg + Wm87V7aT43oO2bdL2R13Frvfto+DMXMcTpkRRnWafWJQkA8ahErH7o0VRNpPiR1snYinbt5AO4Yi + 13vthO38QtTG2i0kuzC9QvSQbuEv04WsZfJlgveeLKCroknrHvZ/gTY9bCh8Qiz2Kf5NbioQpZYZ + 4ikWIkoHOgIRJgQOPMor3wRKngxHteYdTkzxa2iEpMG1YDxBFAVSP2vK0q/Ev1aTw0KH0MNBboSW + cG9M0yHOOPD77KvamfsGBe1DfAckHvHpp0zZ2hFnFnqlL2pPwS9T0KVdxl2UUtizg+2jjt08fUxm + gW3nEMKV3VG8mxvKWc8OqEMCRMLyvOwiaD3p+xB/JiF+WzUrkUDw+/mFw7yT4bG1bqUaWGlXmnpJ + v1LPZQ2K4+uKhsVZWMJ3YwQeidj5nL5+W1jJZAo9jIbJXyOwBLQQDHhQSxvJutMs4n9vsbSqgWXt + aUm9Un2ansvcuPcn5tKCtuRGYVTVniMeM88bwA/Xk9h95wIdVWAr3D6qpBIZl/4oFJLrz8Ork2u1 + 5uMldP3tL7LmPPLdZxdMFCvEhDAG0Y21iSXSbWwxE1QXBmiCfEj75366GWWrdBgMc7xeNhynKtWu + HEbU9v3iKBBXyg+D3lPVgnECh4DX5CA7oEcCqqJX/OjNelKLIlAHQHCYDVjRiR2qP7WAs4lLkI9l + 9bCZg1wusfy+gpwBG3P0sH1cnUEA7hQp25TB+nHQAN3ikbueX9gpxvEwD0cXCfUddPYHiej1HUc5 + vSLXPrSPXrd1eiHlqtMLntL9fH1ZKinqhm7AA0RRM51eIHsFLETZK3R4WBPbd5lOhNlHmUjeS3PN + UQEVGoRdmRCm857wFpe5WDpFi67z61lNtdEDEx6eNl1daFDfEviPEfwh0usm2l5v2n49M8zw9MoM + fYh5HLKoEll3dvo5rx5aTDafYAquss7q1HQRcYntTq8LTsFKzAtaRCbpV/Rb3fU/vj+9yCmIvSx6 + Vlm5khxaZ+fwj/e8n4OH3yWrB/XlSHxW2hvKlNeD7yi4FSO/A1RGzB92SvYdadQZUgnJdFw0+OgP + go+xssjhmml9ubra1cEWjN8K1+3N4VmELGCxuHqbP64dQdcLmJnlfyiqkOc7ngHqlO9OsSMLu9GK + LBkeyKJJy/bTPKvPItxkB1HKu6SJShaLBASktgbkZ6BbqL3k+iT/FFif9abpwuICgklsEEEpNKtJ + a64Zg7rvmVKPAs9/zVqqR7KNrXqkujDUI/mwAXeXuLQIut4s8qg0Ead2ublnLOzN6AdqO14c9Xqd + O7kOYYmu41H2WyF6G6UKjAqH1Z6ILOtZwXmZ45kssOJ2686ottEKBFXRPqdeodRg6fd85nL1vSW3 + 3NZJ7BSz7E/PDJ8BG+spHsAlbstV9C587XhtUFtkE0vMFtVBEbFFPqs//+XfCzQQP8KV1o39juiz + MlT5jqucm+4x469Z1Mq5KdvYOjdVF4ZzUz4kLezf3+7YjzFZYU+4mi58zF/NVtUGCbRZaH8eFq9W + RhXXBc3VkOwPmoLnaFz7j3HsT2cc85SwzGKHv3ZYK2FZtrEVllUXhrAsHxKLvk8UizaxuO/g62DZ + CHUpDpkXuexlr/adMyRRehHJCmna4R6hn7l+bv1oifitGZ1LdVC2YIgP0BBXKPfWTvTlfiAheWQR + 0dL3IoHrT8d9CR5MpaiRT84yDAlrqfgxwoNbZFRotPRZqJ0MGwbyZldt0SfFUrLnXofFeLXmfQEF + NKAp9nB0ICtqO6I3nJotLw9Nuyqk1qTaDc8zNnt1Z3fZXcSp2Oi/J/PR/gWWQBGWmOJyHfMjsvdC + dVR+yHd8WUGbey2ATOh1ywragnKlgjY+JW7+t6sbt1xJhLu8poR2wB0v9AcB5xF3t4ecTJfQwV8E + ycTjLntewQe+E6iol6DFtqLXbSNeguq2oqe0rW5ufq+mirilKrgY7BKGMfCVQRhhWTDaVSVU4Ksr + hJfWcS1B3cZ6biXZn9MGBREF8Rg8zkn10RAABU9cZX/tQGLYvxr5TwGAPaCW+SE5W74TSv4Od5m9 + W5tet+TvgnKFv+NTeRCvLypAVS5jrMzehzzmboyofK4fSvZ+s1kIxTcTiNvXydh3YeGm0/5Fun5I + CqB8N8tpFU/9z3Ioi8h3oedFYRk6hiJ/bwV0D/17BU0HxYhgdP+KX4V6PRlrm0lpdgLmmsAFZ+fl + vrdlwx71s6+wD3JzxUquoCzgOtXrNko2KzINJf1lvrAzedR7uG30DeeEvCcHp8/unt+7xUa0bxr9 + n4PNdOGX45EsaSiiRUcF/JpW5BTz0rjQnH9EcPJWXrpCK1vrcN6NYR/Wj+tt9eoTRxl+YYkQWutD + 19kHAU3NAgGr/nrNgxZVv+l1KxYuKZdYOD0lFv7x+peKLOVFXomFh2+HEVzxkT+I4K+BDgq/F4OF + CbrW4E79Xwg4jpj3x+WXvbHAdjPdpjo2BlhXYAr8RcRThnp1UGa5IuIEd36x5oLBSCMTo6uMpKLI + am4qxzeZUUAWxRCZJZSQg5YR+D++ePVyePz5CttezRK26AtUltymXDb8r2ZHAiNnVQDJKX1IDxdc + Q6KGsXto6bEdQUKhGetSnlZrRv3jueafturS4aWQ/kjFi3xG4Z9n15wzeyZLr1sxWUm5xGTpqQR0 + rZYu4rC7SpAn8dth7IaM+4PYjeLY3Vm6CJhGsq7iLd1uQD5KR18oIhJ+WU+ABS+AjMhtx+IghUNN + gtrJeMQjBeD4ua6CkaZq8Oy4GaWaefARLKgI3HJEZTqNArdB51lpwXVliIwgPlgznFhvoZZmNVmL + Wnw4B5R0SQgUiWBc/QLvp7Cnoy5Xt4fbUKcyeb5LYQYEpAiUxFkXl18+vOpRqw2JkYm05QusJeuJ + XdN9qnaKHauXPgajtZgom+bPwMCmvD4uy7Px9YfsaaxjOhQO1HD+mrntYuFUI2v/nurEdPDJp8TP + HopmXZVXfv3peKhum7xyUYEg+u5cHlpGxuwfCly7uwNeU8y95d7eS9FsU5JDupxykUVpx3sZlxhX + VcjboKCf2KOgn9SioJ8UUNCPr0/LmgmL4SooVyF/xZnnBMEAfoTujnTVUQMK+p/EmvQkJl6Eient + byxpJ7hrxqUjx1h8HL2GzdUKFoPaWMNiyC5MWAx6WK65lm4EqOOajE2CUZ1eI7eXCQ46KUDJ579n + K2b0giAZnPm9bpIw2iNYWFEV6mDxw9qkP9g6tZnvuKyoy+w54O5yNNqkPli77v+TS7FXHud/kjV2 + i3ee4pKB57WU7nQbWy6pujC4pHwoExWTW223KUZmFCNj8Z0zMmkpwaRcYkJ1hPGzfqgYZQdQPXvx + Catalx1gSHLf8RUJvR1Wj6t1ekDE5nPYq1iPhZEQULP47T9N7X1fSwjhsf/aCVtWVJGNrGUE1Ykp + JMinJLFupgtOJ4FQ5PE7ZXnJEy/q3fx2+Wt/nGoMaNS2cX3RaJc3+A2JFI8EUiWhIaBMoMB3cmtt + pooXtLrgfSaWdXM7+d/NBEZSCFHULo/koMBrFsSkail643S1mWWNZmT7Cqc8IPXYFlnP7gA/iSPQ + quuIuxR4qbfA3iFt0n4iNxWVcjmU7OEVdgo7QlzpeA7yODmxPw4M3FYsIVDFmuFcuq+ddrWaZRvb + Us2qC6NSs3womYC6nR6X2UocchlFLrJFzm9uXvakqU69WXjB6APrNjOP8oJAG3OK56rgq4FDvMtb + Yy1/HdbNdu7TJkFkexajDL6c3GP8kLjE2yVI6K3pEkPc99OebyzB8wVO8UKSLZrPwN4uspAb8Q61 + B7CLPJHD+tnOzJkb1dF+U/H3Hd5Zhyw+jAtruteYFC8PVWiEw+0NkPS6bWgEUq6GRsBTGRpxflOt + ORuihdUMjXgFGzn2gkEIEpoja86ez+DO/Xc2Te+nMGKY1EoKkZicgcyM+reMoVpNvq8fYNOlwtX/ + MFnB1Y1rfDvJVo/zNaLhro50INWKIq0K7yWb7xnM6OKBcNtWIBVN5OwDkz3ZDPonGRXa+jTpr5Lp + GqiZUfXlQinoj8fdX+D/IG5BH6J6bv9sNPeU2/DjZOXWhmWXy7Q1FTiLIp9HVWPoxG4uG8I/PN4E + +210p02m9ZNumkuZ4++g2ftLbYAeHpU8qIRHPTlLgqlUP2K9Tauouyb3pbWdxQaUYlr4sgOoCuEM + d5t4v+2WtZqF7qhvZ+LyJp8+HsC+CRvz47UTtig0Q69bsW9JucS+6Smx7//5dFOJbGNRKUvAc96+ + 4l4A/HvAvch1Jfs+m8IJm6EOlSvGWNj6hjZHHt/2P/NVF/FtwDOikHkHu5MMOjkHhaG/6ouNLVSP + e/11dOE//nsyv39Zzz/d2G8On3MjB/p7yt7eHxuRdQ3fV5VbitXJRc79fDifrEXebv/F7Wbdh/2q + av297MOfx6uBCN+AccKWhPGOU2Pa4VQwtnVoYYjSQHcOuIY9+OLVy/5Kb8NBP9U1KxS+mIG+IluI + AwsnNYNJUY7hBEgiKwV+qkPcenhqdB1lxgIyvjpCPNQzKHboZm4Veb09O18iyeDZ2v92aE+lYyWu + pY9TzG1XwN4xXWItD53Vd3VF+6kDDqUTtRMu0L5v1lnfNRzIZp1gEBQSOp3c73/tdxzgz2Id4H/K + rtx2EDx5I+vwftWJGd0vnyon/mKRipkFpidANUqoLTtfMHoS4f++hBM4hEM2laeIXUdXDBDuLhrY + wTzXpeNC1CzM/DVb7sdhk3Rrc8KsOdGAVnprbrW95awF0V02H5avjNqA7Xh2Wxo/AGlEMZhD89oV + ncgh09j/bkBvm7e9OCV/4o7yFXD2jjlwoNv4DwutbP0FeTeGx0A/JqVlvlT4JzAE2E34fbV+dOlG + lao6bNFP2LL4BpISngMQTCWC4KF1tlhAXm6zFtWyP0vwApiL9B+QOUUHorxM7SZpRjJ1Qh4QCMQM + AV/lN2ovvZWdfwtOKmeeoP41GW0wO4Zq7lIZ0WQDLOghAVF9D05AvIxSXRTxlpxM1meh1lsLvNZL + oNbNnzjK6BlEHPSVp9jjecUdG8gZsYwOzYCxA/NT1sz6mvFIuQ7CDsPwteO3q9YgmlgXa6AOzFoN + 4pmEV1ovZYQCfVnvbL1kb66T++P+mRb34Bnv4ZuEmBRJ/NF9jqYo0LsVGugnOd6tKf15/W+wMYXW + fLZN8WohBFlQ23ohc4krwgPHPk2LXrfEFRGUK7gi+FTCGfz9soor4gVBGVdkGIdB6MSDOAw5l9f1 + jYCm/TuejcsEJ0msDVMYBt9mVTNhMk9Ebc4hIXZRffhqcVgflItGex/WQ2aHh6GLEo5x/FRh6CaU + mKpciXKgmIA3aiaIf0zEi4UOXBQ9GkrDMli+OI7KObyEFCxg42HDw/0xBfEJvSGbvrGzXpp1AljJ + /FisESCnqFwjoHkVB/1vD5PRQ19Uf+2funm4ldLURf6e8raQA0hPyrBuUtBxk36HzklxpBKlpRID + 1bzicbK5f4BbKQ+6EVjThTQZ4SvKp2ymd3APz4QGewkE2MuPCB/roijsQXVcD6sZ4FPfajL0RDXE + lGzBXRB7H1vsc4ZsTQ0gKlHiUA6ybR4da0KMEXRm86ko75VklYFEcehe2jKDB5e33VNEiZztE2Fz + Qx+A26GuVVeiBLlhi2uVXrdECRKUKyhB+FQlcp0gAnMJJshDa2MJJigKWMjCQRRwkDzpXj1eLvgb + V8+ZqstN1+rxcsSiyr0qm+TYHTV3ahQ15i2LWplOxatVkH4wG2g9WW9kJWYhcX2B7bPOSvciTGZD + nIDZi762hMm4fweylVStCxVPzII2zG+8qCTl8kV1fH1VmMnC5VQpUIP7VAD54LVAihj+hp+aLck0 + TANdJOvRQ7rqiRXWiD5uIBB90MmhGHBeFHkyf0iBmjAVvLHBmsRPFQdpy9TY87mIYm1NZloiLUEn + myvNPJ050w+0CK82VFsSkZithjOwk+XA3onz2d5PkNdJKe5Z3A5QWDWxhnynDkzEd/HMFnpf03Dd + gHmhAvM5VCt0dOts+jTZvmqydRaEdxa9Zn67JAjZxna6VRfGfMuHNOFjuMazzaqnfhZbob8kjt2e + LqDq80AiczDftw8SodctkTkE5QoyBz6VhVN/v6kAlDIfs8RMZI5XYRz5XjCIUPyVSaGwk7KxFNvv + JsvVup/O/w0DQi+eTuwoBm69LgV7USM4m8AihREFw74UhPRqM72TQvhred2dPK68pwNTwiEnaywo + JsYNcznUPt/60DrGy8Ea+SUUBgEoyWVkpbpZMaIsYtfzGi62yA0Ch3v/7J00D7QSTqc7Efd0sZ00 + byxF1Bzcc1jwVo1v0Lw8TWvbw52kwTXcKCRFSWJSVFoUoxOKI2nHaboqktBtJJzSgmAt3d1fj0GE + 5sq07sXb3csPodlUfYh7sZQ68oSH8XJTc6/uWW/oiQAH46r4tluA6KziAyPUDSu29CNJ10dgHBAy + qYVTJlNuHpeTcfYdAzB0WOd+kliohYNjuIOddrKBaGItGlAHpmQgntFd+f63D3Af9KaTRV1MhWyN + Cb+gAVJERSBndLKwQ/i0z2xqS3mHv8rjObUDrV4Y4MuVqUKEfFiTtfNRymglorpIUJmrkzSfrCAM + g7mP5AjKJ2W7r0jP96GpKupsUIDyxYXjtpA96XU7uwhRLttFxFOSPc+uTyr5JVzgvpXB8SM/jAdY + EDXciQk3MNV5YfOSUF4o5Syy1WqCFr0iZtlSlFqgnQVM5qg/wweTVdH4mucEkCx6thzVJ3s8Kwz+ + 0ue/KcUqGINivuljKNcIDrwYJOeyZ8OcOhMm1A2aZFnGcQ68eCvg8pMvZQ93oJZZY5+M+y75ectf + 1u6KtabSKDP9aED5rUAbPFYlxAPn78PjNkXERQPbMuJEvVpIXDwnrvHh5HdeAZN0YqdSSvwVDwM/ + dAY8jIDtSsYhJudr2l9sUN0YCr5N+APLWSoUqK8pDEpyehRUP4we+aKPAasjMS9oghXWz7WINO9P + 1qsckJJ4AzapAkjWRnQYEfYON09gMdXAY5GvvHxFnZXGP6Tv0Z9Rq7Ay342bcxmKHXQCDvm0U90T + +0B75tThPQxPivkxRQ/ug8K+B9bSMwgWwlH4nLLL8q+mj9Gk9KelresNSQbiOrlRNHjttETqkW3s + zaLURckuKh4SH7hM7obTyZdUY5hVHhTpUCHL2NI22iUO835ypppzEXf1+39fOIFv7/qi160YtqRc + Ytf0lJj1+4tqDhp349AU8fjbocu8GHi1y3wvL5Ch3TfnN3/nbx5PPl4fnxDuCaLHwE4Ut+ot+WqU + iT+ZZnDPiuI25+sRWwz656tvfEFJn+8Xt2hBLEoMRYcM2h7TaYbOjxEwpikwM3FpC67+flqX6rZj + NIaEVcr8Pb86HxRZsBeE8P3hc8dUzD85n6FkrSYuLYmAXtQkAqrP7T2bhe7hdtXyYOCwnvwEcfR2 + fLatZPe8Sy/+JCAPPBrmJNeveYVqneffuvjg1guLwvGurh2/RXUhet2KeUrKJeZJT4l5fvp4FRyX + uSfcpCYCrBe9HQaBH0TRAH7EyjnzMZuh6JZtBHD2LJnNkukkwZT6+wdgBXJeQZ3aLNSdt+ozcXb4 + kZayViKtZT6GjQyKljhr6BlAIvD7Q94HqiaDPo743ZH487DUB1o3MHsdA/rzVVb+WeKwnx4WQVJh + sWJHwSznrQzRM4ydElPNVVbOQfSvRPXlhNTOMFJwg6iagttEVDNFMyWgRtVG/0u+uZcg+6xTNCuV + +SX3rb6mIbSwpkDqFYgLxaqoZne+6SU7M26kOAp5XEnpteyxucu4Mr3l+iEgIniB88/ex7YbaaB3 + rkCC15uXti7ur3ewvx4OOhuieB60Ax643MC1VVuV83oEwgK+BYd7ndAAxWSseuJYq1sm4D6lGPPA + UfxqmVKZlD2uBdghBSrJpC1MN+4/bLIzw6V+K1ux57yvwo1BNo7meLu6Kydw3dLNvExn2TidtjG0 + PO/ruNBBuKMDotKmHPKWPCQ8pfv1t63D2kWMKXOn6BvE7TtOZsl92gf1f7apDSHZ6kfwY3JgNhRz + PnDi6ryUeA/p3WzcVq0OxYGRNwHh+xawIe3Fvg4qLMPVaR7IRjq1ImQH4Z6uqws+wGBal3OnNtbl + HmQXZrUHekgi3P+OllIeo/jeeTYVhjAxQ+lw1M+TSssRnszp7dMGexR5S8x3yZEonb0FPzbMnFrH + 3LQz6OvuxL2le+zvkxGoj/dT9L4DvP0wE2DAKfJ9Ai8MKQipPwIOJGxfjfeT7YRwHlPp8OoUwLFJ + 6tjFtnDLthEKBXuUTdMdcRVUoaq0tPOvoBEv2ideUqyMSWwyn6cH5HJ6QZUk3jMTAYr92GrCc6p+ + zVdXqaqjiTfi3rvlediHnYjxQr7LFn7UAaZkB31tVes9Cavo+kEbWEV83RJWUVCuwCriU+n2fl+1 + iXqxyyuwigyTTlk4gJ8x6ETbK7tkS+ihWtnFPOClCMm4SdVkPmwcpWruR82wR4YBD6OyGt4AqlDE + jUFbw8nH4aePUhkD0W2czbPlaqDBD3A/SQ+SxhzBSmKjUbpARcxwsAVe3OT/cvwY5roMhvjp+P1H + HX1SLidcDjGtmcC8iowfRVRqkjHBlQTlHD2kneZ02BXX1R0kyXWHhfJzbzMrGltl987vsH35v4Bi + ZKRYqReGqpLkEg7X8G6afNWQw4SZiOEFBxXOdLTctD+4yfOEXAHFxG0UCvemKPabJ2gO4OdBZNX1 + 5itUF991XjtBO0wX2cYW0UV1YeC5yId0WYktJ9XuCSgok6RgI+tt/Ws/Pf/g9pPp4iHR6o0ZNpkP + AEFeYkcWSvEY17xxP3h2j7klCuIY6wG2F24o9pBizAsFtLZPgNvs9bDq0JXsaHsvHYhsh3a0na14 + VItrv+MQyORPuHZbBDmK1y2TPwXlSvInPiVp7/rqgvOKF8d1YqcS5sixwJ8/gB+xF5uBjnk8oUxm + hBW4T/svAufmpQoRw7WhgzLoP4AIVFgoEPuvF1PO3y2EERuN18m6DwMrtDVdMeL1qi9Gxh/AXNMA + Kl0rkIFTscuTl6WsU89wrRTyQWPfj9HxbJ10quPiDN9N6DYBUxsdaPkuNzU1QF0jOylT7P34VenR + NtIppnB/WDO7Wqvr3lyys4KgB0fEkPVB74OWInDAfdX99g1tM5+u41N8DjYnf8bOzNNmO2xISVMW + e99qrQ+ht5W5UoWCTxfMa6FK0+tWzFVSLjFXekrM9eLmMqyo0iwqRZAHb1+5PguZP3B97rBwuyI9 + n0KLqiJdjwhmqsCR+5NCcrooc+rDldTrppbbs6i0+BR6VZd2NXWKIh0Y6Zzw107YLjCS2lgHRsou + zMBIekinAhH1Ne8qytu1qeOSHMZHOmEg4yN/ZKijahTHVB6RoO42S5A5Wy8EhbifXcDV0CIZW7xu + l4xNlMvJ2OKpTMb+9YZVQtsZC/1KNrbvMj7wIzfezsvup0C8ptzzc0tT6YJ/gVDN8tR6T8Qb//7L + BfA1+/Atet1qNSXl0mrSU4mm9uGXauxrhJ7B4uXkvh26mCAbDlzP51idYduCfpkC/dFfY0GZ77qS + pXTgGPaYlFYcl9lvCHrdUloRlCvSCj6V9ZQ+fq6cbo+Xg6GDt0M/9AM3Gvhh4HiyIMevcwpa/ZYV + 8MlVGNRHNw9TAv0r7SfTVdaH7tjLI4SsSfWbZkJVHsQj/ZoDI2AW9l+6zPRbhWqxOnQW9ZaPl3lE + 7JFZOwe48FoWkhugDe5B/4INFYZXpeQcVVN6WFdzaFR0RSFmyAwGjKIG/Y/zEG4Wt7zhi8EOZhRg + GNpQqomKVpP5ZjxZaYexGQLnNlWAUrR7H/XSDswVVGdg50piditumb1WMWu13eROa7H0pSXv4dHQ + ym0cypC4g4PZ3HJQsVoOmLPi6ryxAWJqFa+2owDkE8Q8MdBBqaRGep80xTxRPBSuwvWn43wrVDqq + j3CKgtL3t/tsPJ2agHmIrRbg0NiovaLaf3JAVS0Fi6nq4saUEfAXzHVbRMCL1+0i4IlyOQJePJXG + 0/c3lRvTZ9yrBMBzUAAiEKEcBhxUFmPXmNXoNUa0kWIxOGnlHK+qd8yBgELdJ+7UBhjXl48KTcC9 + 88srI8OIxZ4Lp7gS0J2zoe9w4EF4w2tZs6FiD7HHyj1UqPf+z2Q+0n4sY/QSOe+rWJeirDHK5tI1 + icOBi0ZEGsOAvqTrDP4oyr31cD/oyGnH9yg/5w8Qv9tZpV6xAOW7o27RdrJ05SL1QzLmNoTK3k83 + MP1pc+55LWTPsywFXIHqOZw/h07N3jvM4eVFhHdb2irtM287uQsUkYgTNs+/8Wgf4N33A7c6YTlL + aP7Epu17qIdfXXauLtfknnivWTsznGxjXaxJdmHWaqKH0nGO4egkNauwjTJukHjlhQYA8Icvh9sb + FHsWWIQSaShySExeHwJ44TrST1sY+UHe8j9iWYSe1F/0POzLVSgZcn8KEQsieShKG2LvQkg8X91d + m+7wkIKu+tv+TTJ++QBSinl4KuomcpzXzGkXdSPb2EbdqC6MqBv5kJgHYddqqGIBUlzwVRd5wunV + DVwOoF2nyRruLViGx36L5sXxYBBOxKkcnMM8cbPWkjo8iN4JIlJFTQe0LhVfGxZ5+9gfbUSIdk4l + FqNEzxJtsYNg1SJC9gK2JCJPc+36MPrPBVg5dvNiQriiu9CU84uhiKhc2gt7TofvkIsomY4mm1l3 + ZezsqW5lB35eWi1oHYQn29iXVQuqQXjyISnRq28TCQddVLiEQex+KEQpeAMWA7/zxdXl+ft+4Eeh + G7gve8VM1Lts+YWOGAmG5dyjG+imh31RzTVOVZNA9QmUjF2kNnpIR18W2aROk9qWl/gUlrMOam34 + BBtEk9oXkzpGu+usseRFUzpqxPxtVryD8oM9lzFZS6O0rgkQWK2tbEte5IVRLZHC5tipe/14DdFl + PN457kK0zo6yXR0oVV4QU76kIkKm+vGkAL7fLJBss9xR2OP7C8ZaFJ+n1+1KSRHlcikp8ZSYzvnf + r6ulpJwoLpeSesV9P3C8AfcD33W2Oz/HU6D/F/Fmcx5ySr3qBOG6ixyNTtGN9wvrzdWDLpIE1GnR + KME8PvZeO7wdNplqZK38q05M7V8+rcbNpwhzZERSs/6Le8SsUFfvS3ltxxgGEzsve9ubn34Ysr5B + oNzeGCbc5hw4Z3fB9V6JgsgH1oM8QABvTbo5wHWfGCQQsinorT7Av24d9wkOpaTW7ZS7Ceo/qKPt + Nk6Jjno/RZBIBCBPLdXwneNXhzqS1RSdOGxTTRFft6ymKChXqiniU7oCL28+BpUr0C1VfcJqioHn + MMcdBJ4bucyM+ze8/LPJaia0JukNRyleFncT4RRUqm2A787gkd5dAvvmcvXAFwRbIxrfwhXbRzvf + NB0KxMf/H9BbpUtcpuEYVURcL+gS314dAataYxyAgNUpeu9Jsz4Zj3i0kBc1dBXUR27s8oXlGZQx + aFFuNVzjuFBd07yTeZNXrZlSI05qEEVNvr44YrHnVVx0tmEkRW8fw0Sj2CkJD+VFNgJHgA83UuNu + GDCWJyf8yK2TzATW3oHbp4cnRgtAvuNR1AGTkbrk4Cp/ibVidXg4idQfdo6gNuHCtnE3Q2ichE71 + 55+kyHFZz/Bys76hBMHW8ICYC64HQHi++1naHY88gHfZZjn8Bl/4L6U6bPUq1uZpHOyO7MTTh6wU + WxxvK2RcD99j0XC7WB9RbYMyb7azM8aRWzwb8O7eM+lyRgbX+02CtVHerB8eZ4hdLRlaq4lBYuLU + EsvsC5apmaUIRVP88keTLbMJJTzFMngaZsHefkCvWwZPC8qV4Gl8KoWn66sLtxo+HTJeDp9+xSI/ + jqIBi4A77oiH/zKFHv7cFoTTrxkI1aj7LNGZg5le6RJtvqNssUiXQ7UXFI+QmYvbMAsG/RnsutvU + CNhBmL2v6ZLquSJl2lGCViKWHq4W/M2AchLmhxy4CqOT5wiPiDLH+huQPflHfCLqb971Ti5PNBgv + C7jTw7piAdNFja3Qd/7WooZvCxSKH4xldGC+kstcUo3T77Ay8xVqplnL4VVr8zrkkqLFb8u9WrV/ + UogHyfN8RzltGHP8147XzmujGtm6bXQnht9GPSUeOLpdSHXw+PqmXzq4vZPTT1fDdwrLtJfAywL3 + LQ4Z2WpkxE7ZY7ANyGCb52UPck1SaOgQumQhqnaV3i/TJjtN87AYVvjABio2fZaNscB7uwG5MKIS + cKGB8T2CG2HZDuXb8z1vJ4KmvZTthFRNG9glsPpVOjZxJsUcDvJxihTJ+52OGC3EhlQ0tx6zsuo4 + /4Eyv4zTy4X1yUjVZ+wwoPoHy9gs5tKfX1iwtvoCeo/c4kga/UbbC4sp/sc0cCbcNa9ZKyt43sga + OlN1YmJnyqfE9b4ni6FvVuWoeWRQAwYYhcy2ivGzjCFT68Hz++iMMbgVWt5H1Mj+PpKdlO4jekr3 + 0Xq54tJF9/n6+OrKCAWiJ+WggM+iiRG2iE/ERRW5EqD0MDSzvYKBWocbCU3r9BrlprNsej/pf01X + WDuwkE71DDp6WsSOvY5TRLaa0WQ1pO+Bq/wbet13XDF7eGBc1NHwTXMvtl8OfQZdCR/kei2cCPS6 + JXyQoFyBD8KndOZ+Ob6K/Qp6kBvGZfSgYcTdiIeDiJOTDk/pL+iHWmDVk7mo7prbd+muGJl23pvl + gi36L35JFoGzeAnKG4g+ctettLwxmYmthxjwyfI+yzMBsY5xol+bZnD1qctIhrK/+HRx83Kg78MV + 9SrhUjJUTHDX32/QGpdv8mS0zFZUzVoRX2BCpF5eodrDoGO/g1QeOIIe9xpq8KiuTR+G14j6YRDL + rQQaGiZZwpZoSOWJXO402vpZyFxerssgyQ7V+ZQrZTgQAidowkdiPgsi95+9v8Km6YljpRNOXTem + WDVSS9T6yFFD15lieoP+OBt92aMcZEDgiFtIyytwVxJqwIyQoTWiFlHQ2TYIkkZ/wM+6e7dX4XMo + nO5AOj7jMdc3VplvtLQLHZp76hcHsi9IdkCGJeN7LKVam5ZdJli1aNYstRwSJNRR3pNLhjdjK7as + i1g3LZEf+LVbfO8Ki76nFLgobmu/0m1s1TfVhaG9yYckuGzuUmm8uvl0fH1qpg2IJ7/BGz18TWht + wEg60gZimR8Jr9wvE7gWmiXogZSxgXeCyL233N4Vw2IBI4b1FMrFXsS3oDX/fIQve038TwohRixS + 3EtwpK506kkX8V9dIAj4vgzCgkG2iEMWr1sGYQnKlSAsfEps6G9XN361WnQQV6KwXjEPwVfYAH56 + wuBIdWIf9XeR5ElpLIkKkpHwn0vhyFpm02m6VC61ItgIltOiqmLqj5QNY+TjCEXmb4uVX8UkODu+ + zhVawwUYu1FDCBWoH27oMqeiyxDPSxaLBFTuckhWGDfCE3RBr6BxMNA3Ys+tlOcr7zjTc8oa6+Nx + NwzDSn08zeC/JqNNNi0qCYZmFMWGZlTENTC+WxOmFbyDY4PyuQiEGuvg7AJpF6tTl4rsFZQuN/R5 + BY9BX12FmwqZl3CVaMtQoROPM69Rp+VBBGoDqHYnZbxasa1eCGpD2K7ZiC6EwgDkYrxUm2/Qxw3K + FkPap+KHSz+8xaD/7WEyeuhPVmb0GXYFvOlxJCqzQd9a/yPmJr9spVzGGBdG32hWcDX0QyAjz+J8 + 3McadJN5T5x2HUEWxbwjiULoOFt2kq2+1ZWgIPYUNtm6CSskm/1oYv+UxKate2+rkNuTjEnMWpFz + tRK9D056DCkJWg++bXOC/ilzN0utx7LxvkOwgAA6OOeTKXuqnsEfX8WiEzGE0qHeXbOInwyPrQUR + 1cBKFNHUS8KIei4xIS+vzKAm1/XcSGzUojjivR36se+yaICg5cqcey6Q2O4mZDDHw4xuvcUC5mPQ + B5l2mSXLZfIouUD6HTSu1Uo4A+fJ9FHE9yKvhIZYS+kbWsxk9MAjyIWikKcudv777RLGPRrWQMD/ + iYKlVLoVjwLHzcFDfUK2/vXCiYK/t9gwqoFdoShFvVwqSj6XcXBX703xlWEeI4uiarUoP2YhHzAs + fek1hMFNjB2kFv91v3+Tpv0Pp+9u+hfpGovU9v8vfJHzz74XhW9dNnSD17rO1BSG9+0vsi+cMOAS + 1vjgguK+ykiBc9VGGcLXLZUhQbmiDOFTiS/8/qSalOmW9hLqQhFoQqE/iHjs+NLje4WZOpiPrJl4 + IYJQzatesKLUdjnnr3CvpRncUcCFjqR0tEIIRrjYHwtyHDI11Efvl9k3ULbG6R1MKPAtyozFv2LR + 5kKeNiUuS84GMsYkg/lfwPzLpjiAwusLFG40VxyDanYPnwJaG44F5vZ2Q/eW2Osn4xGrbPNafd1I + HgHFvqnIGPe557mVKhdd7fhCaoOZNhKxBt0mjIMYFN5a1cYQHMRE6eCSOcbfaEgwU9lxG/UoxiOf + hxXg1Gz+r42M/BIatnYj3G3EOpkAr14TLGvsAw+Py58yS+a4whgaDaQKu7CsogUlFa1YkJxIgwKl + D8F0spgoFNNE5J5KjarWxHTUXz1k31Z0EhSEHHQjUm9w/9/hXu2fJPBncnsJENa2x6TTM9BDZpEn + 48SOLSRrc9DfYSALLHAJvAAmsAwYbB3n53ANEy+2WPP2aKE8iU2fa2PN58Z2nD6TGS5irsYT5OXt + 8lcPLuHwXMybXUTbBSGllYgid9OfWE1OSQKxCu3yTtzXjLcK7KImtmFdsgMjqIueSWyYVIUYCySM + hzQZ98fZLJnMe/mDWnTDG2jZw+YE/BSQ98aJKT7/VoY2wAtr2HEYQbBPtrgT0yaksg6p0H/xz+MN + JR7ASfsyscSl1OacPwRe6MGINE6gEyVqp2d7+pMfiO5Xi3SE4dTlLYAEBFpgNoUtKFK2z8/xkM4y + dGC2O1W+tK9tnUyFFd/GpnUY4SfjzT8BGzWgzVB7kOtsc3k83g/GSd1t1noKyFWg6Rnbvbq3O+zO + c6XvX/nihrrfvZXLgMqd/Pc1c1rU4qLXrZRLSbmkXNJTukpOTy55pRgXMJLAtFTwt68C7qGjDVTr + mMvyFp+y+RBEUkoR36pZkmp2Oprx8PmbIASP+JbAfyz1J2T8YYP+FLtw60TeP3vWk9UTa6IL5ERB + 2IU/BIeoGWD143Yy0t7zkC7VyWE6zj4481vmPeSNrOPsVSdmnL18KuPss4VLxwL5AfyWTdD6LlnR + ea/+KbaiuPqIEsAcTjlDKuar+a5qEpWckIINQVuUSaW4yxQSw78Eep88KjBDCXr94OQBAxNqqxU7 + DzjFXL4n1OBdGFdbE9RaUdqBsxDUJrvZC5mcWLxaKmmIxOzU+X1bWQ6IRYrYZv5N3g9SBt4bDBDO + sZPvjwxRH/ZSVltn8zUp54zH0gVZxecrYFJvz2bSd6xD6aWoyqzTuagmgJUucQ5tR+T5MXHKrViM + cserb90BG9hhdtGelUk0AbtM57o8CwyVwTev09H/gIqIq7VKh59hnyMnsgdRfFaJfW7MNFKpyV33 + lSqlLlwlKPbYeVvBtw25H53QGEjss70nTd3GXGHxBe8Yb2cb0W1skfhUFwYQn3yobuJZKP0fZrb8 + 518v9TbXwmav+R2dD4cEe4KsqJrpOgIw2/MdtzH1oF2evi0D8X2Hkn4bIprbaLR7c5Ku4BZYiQZ8 + cLZZ7w23gCT5TpKEjJeNCngW+y/Hc5CI8cOlbC+Tb/B2u5+LimGinhzGDXeBtH1QXP9+ofP2sdwe + 2QevhlfDW1j6IZmNMX5iCPvgazo/KBnAFsAwoNzDX685b+Euptft4g+Icjn6QDwl7vfr+5Nqvcow + DiqhB6EfAScbhH7Mfam5XG5jWoWZGmCcCvxr1efD7HuWjCcLDP5DDVk8EAiRS3wkZq8KVVMFm8F0 + UYw63Ag8pD6u3JwoCmIzJAba9+pxDi0UAl7+IkLbou6A8WbC1vDreFQNyN3KlM0A2Ob8QOYwl1fd + wWYyVe22MnrwwmZUwPoeSNCXAtfuDlyPW3VQADEszk5TxK0b76La+zNsox6eI11lPfSiboJSKxen + MdNbb9/ncWnvgZFUP5pnhrbU2V3MmW9skQNKgLm028Ygvy9vs++PU+Pwd5DPtt+Vru46kbr2+4cL + 2Nb2dx29bnXXScqlu46emtF1nssizzdrdLsRFlwf+O6O4tx3U6D350aXy4tzRyKS4k1fxk/6CL2X + /0owbfmv4kAUfjX/Kg5w4VfP+FW4Wgu/RsavgfnX0OwoNClH5suROQyROKh/JZ9Q/iszPjDk5l+5 + qKX2HDiHOlO+rHfOXadNvXN83bLeuaBcqXeOT6VH6OK4Em7oOXFcqXfOWehzPuAM81TojJ0i1Djc + pseD/gcQw7/nMjcCDChEgkLBDIodO52O2ILioIS6IsQAEQBlOvCKqPDkUJom1Vi/xjYl16lxjB3u + NoX/oVkyUojPDfVdTcj6pS5i21DvlTXGGhqd6bOPns3ih+A+ugJJp+i+N2uVB9GuHnoHL1Y5YWhz + O4HfsFp5HkAxRpvyOHfjg5iGH3NluGmVneX66lfOjvSv8n05zuHJZjqFHzfZaNV/cXpy87I/ndwX + 1Pge7lwtsbEQgag9LqOI1LfpMRohKXUjz/E+dnolfgya3EHRBF0wqdyQTOVAYUHc4fX5p7N8/kpL + snuqusoWCQLtEAzP4tdO1NIhKBtZOwRVJ6ZDUD6VQJCr7zIF5Pj91XA5uQWtY2pwohfH1x9eGjn2 + x8u7/tnxlYZJQxrkHgx8mWj/BNAdTsipssNqho7hMwJy1pnmu8ofV3CgQAtULsjixoevVbT3jcFw + orBKdydNu/J0bbCryOomMwwL3e8oh2tva2tPe7v1zSHXaHkJDqLZSXHhrsIzA10PKOLsNRzrNi4I + amLrgZAdGA4IekYHP53fS3nofvo4wlNfCGKV5Toj1sMw3yEbuEPEaxpixe5kjm+cQvMe0iBfQxjL + GM3ugyoPjlfsqM6VE7tM3ChA4l6tGCa6bb97K3yHBXGcl7sUQS5PTcEi6Tcmly/spRluJbWAGGE7 + nqzsAY36HYUywhcG+U7aLOEysjPaHKgnoZIeFrcwzoBV/70Ow8GBEK1wldCAUgHu+/CyPrnoTGi9 + 5Jz8MRiMWNjNreoEuLGjkwGQS7zwXpYZxZ6XKI+Fft0nQn2TDb0X9LMVAb7bWZMUB6ZUuctr7sf2 + uiu9bqW7Ssol3ZWeEue9Ov0samWWgBdjlC+L2qv/dhhGXsCdQRjB//HtFqLZEnoYdQBT6PnQZVwp + Q/ScLEQe3MY9y+LFFYHoIGsiVa+4vHDcqMXuEa/b7R6iXN494intnt8v30eVvRPgMSztHe5wGPKA + Ox5zpOdMinAENDFPxuhnWOJtvBZBTEpAP8vufb2txlFlT538enU+HGVC7JaIT2bKG2u9u/JiOcPV + 5t7KNeW6TdaD2I193y2jtTR3YeRY+mHk7KCb5+oVavxUhj3oPySrotQMs/635b236OES6q3sO50g + iUhLZ18Y4fHWwLXdI+LiGZgZ9QUlC+XUbbfdx9z1xTjEsrwV1+h9Ou+vHmcHIeGFFAx/dsF5i2B4 + et2KAUjKJQZAT6Xr/OZzBbWX8VLxGjd++yp04YgMgEM6O0rX3E+BetW5YPrgStdHo3/1+V4fV83R + 7NDHMoXtcTfdZMAQR0XT2ouzD1cvhzJhWD2UcEE5rpAxWUf92XrkoumRXLhixkF6hr37RSYij0fM + HbLe5ecTVwfRs9jv7ek/xWYey20DVBVnmFfF2XO7M4VWwVz7+45et0WqQMpVnAp4Stv94/X7qqXf + D1g5UmSI/CJyBi4wDuVN+01bTPW6keXPsAjXZrIWMavQPJxI8/CL0+vj9y9FrPpkdZdNx+lYQ04d + qRhysdjTyfwL/FHuj83cfDkvk/fit6vrl0fKWoQtYO029w99NYKJyl7/uBy7i2Jdo3n/I+8LzfoO + /oPZceJAw3tVh8MOgELzeEfN4RPAWvywcrw3TTNde3d7USXqA3PiB0XINXTfBLycc396XVyYsvXb + lHJdRF8uJbxgFwMDKE520/ur7ZUeHiztiHBDV0ghPuXBH+hq2H6tw6pgk+1L2d6R4TLfERZ62JX3 + yXQo/mSbSFST/CHsWREhjYkTVXUg4PoOL5v9CLUFcWR0zTaSF+1IPgfA1IZx/VmxUZGDmQelie/Z + zZStc+kHoFJ3YjBnQUTVYHdOx48wu4c69J/F7/3Xjt/G75Y3sjW9604M47t6SqIJetpkpQElZ15/ + utJYmP0XV5fn7/uMYzSeE5v+t9/c/mqewet1DPR8tnBNROziiLjvcZ955KWTldKXIiXZSITa0yFk + TXG76Q8GKaigMxKTjwr5rPYn9OeVpTksnz50S5lzlqzWFV9LvlHZGL63us0OTidwHZ/0jBa0twsE + fmXsHY9cJISFXFyS1/tmcbE4IhPLcm8S8KnEocXx3ULENpI/pEj+9xdO6LYAfhOv2wG/EeUy8Jt4 + SvrZu+vTKvAbw01cAn5zOSIFD1we+wgZsc0gMZ4C/b9ItCPnLsvhIUNPJ6n5/LXD2uWoiSbWKWrU + gZmhJp7R4uTlfdPNFyzcsyahnEI+tv2xQB2dw35AOIfPQXRT0+yraXY99zULWk0zNbGdZtmBMc30 + jM7P9HElPTuImZnAxE4wPbNPNlyk0vC8fwEte9hc3OqIwCBudScWs0Q4bir6BOSB0Wa5ypbaC46x + ixgfh6/dt42qCHxCJcvTFQ51rnflpI8CopPMJvNMZf1m2gy3r+tfJjTKBIzDKcJlEka7KIoKVvgd + mHOioup3qsM/JgOjKVrjkAQOoVh5jmjftOmbFYmmEe1PcYeyRWW3JvDCQXoSCVPTx5+oJvVV0IY8 + 1vhNw9VmerdZ9kcgg6K/ZG+K4vM8QXMAPw8iq9h3oPBufWZvlqbXbfFukXIV7xaeSrzbzx9r8G59 + vyz2DMPAQ+zkMAC1Ky7h3dYhPw3EnZaX+jg5OflIyri08VJs1lGNd3GWzECEniTz/ufJijF1H6vS + CTKWDn0WRr94CyTTVSYoJv0l1h8AcXuGEmrRnCmRa9cPVeOy0nXM6oWuWe7jRBldoyh2wmpxju04 + WGZsutPkozVoa0HNJG0Gofu7SPUun+eCHAmAVy3BCrOv6GeBbwu+VEAd7eGOzUFXfUoV9Kg4uSBt + YXrdhpEThTpMT6jamjG2hT7dFUa+R9HwxuvmWcGEPK9Y1VDHqjL3LHjtRO1sZtTG2mQmuzAtZvSQ + mObf3yN6T5poR0TvZDzizpsPk3//+1EFrFZfKhIXYrJHFbw9TAIuGkvb2S60IhH9v5W8i1yPt7mL + 8HXLu0hQrtxF+FS6SP/xuYKO5/heXLmLGIMZcIIB/PRjJif24+T+YZjcATNDrkWBdWa6pmR8s+Rf + GXK7EVabEsdvtVmkS5r6QX+eJktYAqoDMCL17OP3dbAYqHoRMKOwMg/QXx8+Dd6Ypl/TKebnTOV9 + mPXRHrDswxetBsUyE7CqkgIWF0AKaqCShvR8fl9XofuE6yFpcHVGUdDo6owdD+7s8jV1h+aY8hQ1 + hCj5hv+x6Hd0AhZ51Xytuulvou3/KNpGwafQ4fC/ikUFj4YFbYZHxmrc+u5+SL8blE1bT+DtnIbe + E+/wcP8dLre1VNIL+728y6UTetW/+fSB8k7/FMe2By0o1xd5mJZOQr+QLou/smcTIlcgJiwCld35 + xgJwq0uApEBkC+fc7S6Xy7rT9mubyiSvMnu1afwcTIFOxzAI3cYbFuiKTWveOjtRFSxqeEmccYNz + dIHWsBfdneMFzduj7QbP9h1vY+k8n4xxxi12+Jg5j2K5KW5Xa2Q3QxP1vOXwt0rrEvj/+IqxU+a8 + dlqBzRZaWUrshW6KMnv+WNq0ix4e7TzAoJzkHo3HKsVZSeGXycwV5N+xY6TDRj3XDWDxybjthLQJ + ioVd2p0nJ5T2YaN7lZ+2q17Mm10YoXskJWgbs1XGU5OV0671Vl0mctQW4uEZw0zBdltIt7LdQnk3 + xhbSj2kLnX2+Eml/WZ4LVQxv2PFnsx/QAEGid8ReijnVy0RH8900+SoCZmzs+tbhEHv38IMB/lsA + wx4Y2rDrXLQou31gAc+2edRu7IprrWa7nW/DR7X+on072JFG2FE+Imxlyjg1R3Y4FmEkMdJPTlwO + /N5twXFUEzt2ozso8Br1jBhNGSslB0gpMpRaK7XJcXRX3Hej2ItltNXzqA3TIpjraQvR/NBKMFjf + wFP3o7jRdUw1qA4wD/V8ONdkFwkWr/zjMmHrYiv2DOvHlW7Zd4R/+HouLVwC1rPyvLwMkQ7NFUZ6 + r10kjmhiHYlDHZiROOIZmdGX8wWX1W1hUYfqc5TWUvOsf41NeqKh8C7ECgCns9Dan1XWae8w1F3N + rL4YJJfcLUf5tXs75Trz79kEkLbgTfuGo6qD46qD4x1HLWvL6Da2R0d1YZwd+VBW+xuvuIxjU4ej + UMJ0lQtTjxo5TYa4R17gRMHLXk2zulY3oqNSW9E7BRvGZCnooMpdu9Ij1it/UPk80PODmsJzrcGv + DsJn0TQ8v64QSjFHVrwO/95f7PnDSlxPova2UVvzC99EF1yly8k8fbN+WKYwZKy2XThx1gVWOklZ + Ar3SEXpl7aHfIjTVhI0ovqgjqLl3Er9m7SQK2caWL6ouDL4oHxIz/PXzb8Pp5Avifq9wniTKRtlM + leeRacGy9r1svRFB1TxQauXTZ2xiqa6ARL1Je47FAj806o+M0xK85d7HwXNZwDTpBHg0vNV6IiwM + us82leiPyMJ+tOXOk2k7245YB8pmxCmteZGC3rcP5EKBEFkqJMOgROYOyHaT1/nMCl5HOpPDO4va + IipSE2shmDowZWDxjFg9HKyRWC+U6WXea5F31/y9SBelVy+Uta5dmpyzZbZZ9M8F54EZWmH1ugNT + ND0CPaUKQ/t40ICCuLLFZ1B6wkhDxmYlmNc9e5Ax8TBhj9NhXUeHTEB74jvMmHVFItp/vaXr8IkK + 79k2bcPnO6jk4ddUIpH1VOxntTtrQkh7Z9aNDcCLWJ6rlOjdeFDKPBAlw0IdN+rgmtuP/I5MGgph + Ov581UUBMBtqTwhdoO6lII+ePkbvs9cSc0C1so+gVt2UYqjlYzLTbG4XMuw3Rx45GYIOBVswmdbc + 6r0d7/0GBHtIVWglzPV/lFaCegVBpE5W6wz0qg70CmIWtH9ujs+OD0+Wbyf3C3GVc3Pq+uuHSTZN + MVuqqzO8dxe7BNf/SMA/QQIOVTW/uAUkIb1uW80vrkIS0lPiKr8df0C7fwmkLQqdSjk/eMbieAAc + 1gmi7SAA2RI6qAEB+DMC2oJSuxeg7aFKtQ79IlTks2vH9f8+PLYHtpQN7KAtFfUyuKV8Tnvp+uqC + B++MzeS6nhuFsV9BuMRE/iAcYK5SJHfTuYhjv5uQ0bvowF9md5Mpni5Mr5vB9AkfLkwJDvpRY2Eu + YTDfhslfAnyCRxEWl9K7QMeQvmPhKdYqbhOOU2hlGwCYd2MEAOrH0i+7mLLIkc6lwLlRwEB5RGn/ + gkW95r8IAkMuIkndUMIk2OjBP0Cr7sy+uI9nwI88cSNqpKVWfXIecL/QJ7wD475PC6ugnHZ7z2xn + YEMEAUQhdoUOEcdkPVlv8Dhnd1smooVjd/9Otl3zMSEPv7tmTmifZ0ivW7FnSbnEnOkpHcTzywu3 + dMuz2I9M6HHXezv0fDf0nQGWlook1I8C3xVh1XlOM1YDEbr9MtWZzIMqui6Vxy6+DG2T/sn6jsWL + gm6BAfyIvK3cQivq7+Rh6lE1MGohmf35bOpW+XyGpDBlSSFRFTzAxREYTDYs1cktApki13GfTPxo + 8E8XaaAruylJTo2u96wWqIdbTQlHjsvYD3Lp706bOcx7f5AnDZFTRd/JapRhtkgq6t813DaN5d6Y + 56khoAcV0f9TucmB1Hh7lMNTlXuBA0QCrD59Daeu3Xw7McF0Vrcn8OGtJ93u/twvFFNxdKZMRPFp + /NrxW9mHqImtcUh2YFiG6Blx52ScLMpxzIUbb/GQzIt00OTNo7DX+8HRaXrmuKqjF73nrx23XRk9 + 2ca2ip7qwiiiJx/SvfjwcKcgvKQt6qPXy//Zf/Be814yW7ki/wTGIWMEyVyiTt68r6sswUqUii5t + d1JrMdQtzCrt4+bKTVvOYhSUqLQ8dSGVWFHHyiRk9yk/I+YxoBpY27hA29hqu489PJTaOhqnOXAm + dmVlJJDi2lRGwtctKyMJypXKSPhUgiq9P6mUtnBF1na5tk0QOywe8BDlFylggjZMkTbA5tEqJwQL + E4/nH3BrLWBfXE2/MyFt6DN9Nc0Q1egu28xFtvvtBm6FdPRloPeSeP3q3Ypwfmab6XoC6oeWiUQh + YCUU4LvFWncKpZ2inLLlYyFyT6WGrgjOB8YCYtN4xKNF/jcFvTQe+RV5VY3UlBpjtxHBAf7ogUj1 + z70wnHI6ccTgcnUrZFYL2HowMYtsWpKRY14G/a8fUy4jN0asySWuLy4QhF6DtBv7PnejqCRBmzks + eAaXKTraq4J0wAP2z2rdAg0YFXvA08slC/YnXxy558GFG5RIq/kpgB2Wt5hB3ysVXM5XIMIaMp4H + asCf+Bj1kL/owkuB49Jtp6rArjLMCCZ6Sjr+VzZBrYV0NUTMxEhm2O3AX0EOblHFEtdWsvgtu8Hq + lsNlLPL6Lav/5PR26FsHK2wHKFuH6yQxmeUMjtaNHFLbSCaAagOg5uxbm3ca4AC8kxe3QpnPWn1I + ayK7hmTgdO28C55IcHr6ygsdRC7IHX/QlDCY8Dxt7u4QlzDcWTQgODqZGtVBg0OKZCvXeEV7zbmS + eT0J3/bxmnktpF563UrqlZRLUi891R4vj78ry70sRh5SlHudt0MXhK6YDdyICxiLomE1d0tJ3Cey + xb8InJuXVYv8wAR8ul5MPX5MFrgqjCXcnf0LzzsySyHBvC+S+zwx+AGXdjpNsbzk98l8CCJGJhbk + kvXH2Qb0nyFew3MsbIRBQyu4kaeIQ61aXwyPa1/8OlluFMCbGOhtrVN4uwfixSqdrzb9U4FWnrws + gcCZ5ahMiTFGC2xJMLUw7pt4pW4TSpnRQUWw03ARePuZohyrDLnX3VZ4t2Mr1Dja8Hz+RfZiT5zY + Y/HJdHiVUMlYROhs0q3PnMDa2bgr6LaOwk7TghdI00Ix3R0E1MktybftmG8QUVXqIjFChEi/wyqN + W2FvdeH0PDiX4Mf5P3cu1bNxde4IgW1DuPmj1QXsK/gPuItfO2EbS65uYwsAorowEEDkQ1kguWTz + rtrAcyrcd2M/4tII3q4E23Ot4rYLdO9nY/apXUP4779cO9y3D3mj162ENkm5JLTRUyW0nbgV0F0e + IbMtymzu21deFHowCC+KhAlAwguYmBHnmlMIqlLUGblVMFthPxC7R95IJTqKVZhWvCBoED8iDkzd + qzint/VSj8gexU0uZqOLBkR2seRX2VR8gkZ4MXHaowqWbm/7PPbEGumrOXTdQ3F4rNxdO3wMpKnb + LuNWHtqTE7+L4L5QJy1JWzh1DlGT1dkPle8vDIN2gFGqia3nT3ZgOP7oWV6wh8wR/XGqID/LWV9W + LxV6Qxch8yJxqzz7ojiCKnLw0YNw2SeTuYJi77wvGTiBoepz+yI89mB9+/awa9yULKfNVd0Pe68O + dow6FjyysHc7H3YsJPcJyM2USdTBuIG9MMGbRdFz8Qdot2mAQ67n8MRTyRCHGSrTx7WAjdnPdim1 + tkYe0EUyx/59bL+pPNpYe1oiPUK+xZXIaBH2H4vvBOQ8+XT8vq1pVN0aFOB+ceG0iZ6k160kRkm5 + JDHSU5IY31/fVCoGuQ4qwUWB0Xs7ZK7nOmzA3IDHO3IkplOgP/pr5Ei4sev8zByJWETH//7pgkWu + /Rai1622kKRc2kL0lLbQp6vryhbyBC52cQsFb4c8dpkbDnjs+yo7/cr0xqwfkjUKaLcTiuNcpV9T + ZDBlNPfCNV4AqV5hckUyXyf3MFn/xtMIu3OyLOT7zUC2EXWJqxWkPi2W1QpSdlvWiFzlIKCyypbd + Ehog/CNW5PTGNWGWQLEgWPfNGqetxsMeOaaHPQ8OYMyH3R27uZn2J65ED3eSTj5iPOw9pR8YZ4XM + hjsns0K4obrhfgyA4rvOsun9pJ8sFskyWdukZP489+rP9Yw+E3dkM5XdVQM68GUS+w8cyr+4uPb8 + FuyfXreTIIhyWYIQT6XN6fwDr0gQXhRUJQjHY2EcDOAniBBSWy2F3KOXYyQzuuEQwIG8ThaM3C7i + hevJHbJpdMEo7loUQCfpyngPfnBqLR5Au69pHwT6dHk/WaEMnd7dpdg7rOw6nWYz+Mj+NJ3fY7rB + 3Ij3nmYr7e9DqrWRajDNmswoWdQavpzQNBoVw9dCBgzPrdQgJJIw3GIsZoGmx1nQFMZm0MwtXUQS + 1rgQ+KOHXsTOM3M2TFGocJOAyhfCuuYXibhBcKw6HYOW8iRfXlFSEGe/sCLJFNT0fAmx7UM6xZlE + tJlp7SqleFFNJ6uHwkytJvACwtIcwRUzTaXetdpM1yKaS5OBn3Py0fVwJ+tALM/ze/KLxVGtmxos + hZtPpN01AatP8T96Zw0Ko4bLqP1N5kgb/dYdaHcZ/bxQ5S6CVcQxKKxW6cBsnQLFUHX6A3vvtQzi + 122s0TFkFyY2Bj1U7PFrNsWC5lg70/BJGoBGojxT0XQHN0+2eEjuH/HjshGJWqrJ8WbNOL7CqEi3 + 50vUvoBQVDRp9BuuhfSW9b8mo01tqJl9OuqBlbKCmOwo+bcdMJbdtLZe/77jMmOq9iiS5bjkWQU+ + f59MCU5CzXKzC8r6Ex0ZuXebLGHzwcvpYm3t9dsrVDAkSR3de3v4cP0wFLuvcaPtau3lrZPlnv7A + fTOWdzSyXbQDvZkuiykObYrh+Xod9vNnwlCUT8M9DV8zp5VPg5rY+jRkB4ZPg54RGyyYv4X+l6Ou + FJle81sfZgkzXr2DB8j7nJhHKvPe1cyJ1EFxxYBIqXVAy3Qn38kV1mz6WBsibM+obKjtwGYmZJji + zfFDCvzsCda+xwHEmJeg0AgFqf1z5gXeEaMApdI+egYYRD6xhzXIyVn6/eCxPR/goL4yq0exTLq9 + TabrvRGIAsfV7Mv32oGGqCbW7Is6MNmXeCaxQu6TQJcN01OcrIuFHBr/0r+G1j0kIRiWi9UoUOZn + AYU87QBZ331pcLg2sIlpCLt+yPrFMe3nDzo0pk60d2JxuM0Z2r96ic+oAEv5C3fQtKwdFTie2nfs + uG3wmG5ju/NUF8bWkw+bKpT/5vZX8+z609WwRje4ye6YQRn3XBgHf/UCIpRzMwOuqxpjtSb7mMgW + YPp0GlV+j+WluaPRdgQHv/J5T/Nx3oHl7cVYyUwgdvAhcKfqtPoSY4wFsb0BlV63xBcTlCvoYviU + boer326CSp5FgGKfCSw2jFwviPkgcv3YCXTM3tur1WQoYhSEDUoYKK82q6AD/yvz0CYQVLJpTfTc + ErXYilohnXaVbsbZZjkZPwq1RX9KfR4tnGCrDvKsBU0fFYP6xAXmN2cB11MVCLOzbIyI7XU5rc7O + UfauqgOjQhMijH2COgZmERidIECIWkZxNsZlhGcY1wqTXBfZaiKauOxIGCJV++PVgoGivs76x9Ok + LyK4VjAjoC7++3GWz/oRqDvrPpZJn6+RMA7l60T4A4F9457VLnDPEUg4OInicDdMuBUna01kR4KC + rLVWWS2rwUQOye3rXffdIdDZXUYFFNo/MeL2lhj/fUtIqRF48pLezRisPgj036YddYjaFFEF9Mkq + 2y+eVd0/GpE5iKLW9mbZxtberLow7M3yId0nmDWRLr8WBMIXt8ssGVNlQRjIeAK36eRWpKS/7D1s + Zsm8f3x5eXpyzUSw1zS7N7oS9QMi5ylBebos8vE0NY+0RU1HCfP42H2N5cNbqAayja1qoLowVAP5 + kASP+/ROemFBFTo7/dCjH/0zeN7DP5LC6ZLC6cRMzF7JnrwF7OtJ0/Bd3yFGU1VbdejBoapxB8n6 + h9jgn0MqWsuyNr4TiQ++3yTzx+mwEJuSfocdPr9PDyw9iuYhpby368QiEWBv2q0+oBtrhmIpFEJ6 + euFwzz7piF630l8k5ZL+Qk9VAMhVJf7PiRBqv6i/hG9fMSfkgTOAH7EjATgxElfEl1Fk2Bz2GMiu + oxRdu/0r4ah/oOJk2XwG6/A17f+P5BazFNdjspoNdBzNEoUNhDdTM0apoCjILNEWPCJgGESbWpKN + LelPs2/DBfALknJhGKt0RkNBN8IcV+7bw2T0QEHbiC2JmcNGo0IPt0M/CPoPsK3696JKjgoYWVSD + C1HQnyypjiQlKSh1GHNttqaGh36jeuFEoRv5YVnL0vM7zEc7HPVrgqAN3GjGy9BCqiPXcYPILatF + SbrMbkUcA31bWTECxdVpCCCpJ2hqN/m6Kn/roLBzSottamSsUcNTHfd+2zFHA9gu1yAEfUn7ExjE + cLWZ3m1yT7xM0jZHXNwbsP3kCh/pLbvS37Siw974Oaw/3ogNXpjbHp49jUgKu6InP7UkwbeeOqsb + 6lCHPm4GbFK3aSqUGiCMOI9Jxat+nzxU7W78DpI1fp7+1ZLGVtiX0Auqm6jKstoOjNIcd1EtMsLd + MofviKHimdzf7yR4HTax55R2NoTDye44RL5v7P+RlDX3VWy7zJHpzCnIfFevseK7o+lGgATvTVGI + xlzQBMGofxBZJY7FWp0/Y85rxlrq87KRtUKvOjE1evlUFVeauOXiSjIbUnmEcmiIwisbVaBCXG5w + N7pYdYlSQTE4Ulw1PFL4cehlSiZtFZTACwyHgGGj2y9NMIgpEqgIB4LjGyezBKT31Xoy29R6fg7D + yG64n1jgB0ad42o5KKuwEquCtVaUPA4rKCZIhUjcTjDjod68+ow9eX/M4q95o71QXn5YxYhu6lK5 + zKUE5jym1AKBWDJT5kgctJNrUJrtvXP0upV2KymXtFt6Suzz4+X1cTm/gcUxClhF9dan9LbQH8AP + 35V1tm9EEDpM1ChbPArnCx/0NexTUlQdahBNj6eLh4QvKJJ+ssrBpRKMWacWx2whXDOT+cPkdiJ0 + 2kJ5IamSfPxVBAOSZ3dFVRDeJEgd/vQG/jqeLKaoK6GZSSZQJHO68zHiHclSfKqQFGGzfQXNBTtY + YTG0mdRyP86WSTUv4s9Uoqi6nhdXH2F7wPp8vLw4Qgt4mt1m34fjDPME8l2PK6ijLeQMX45msHjw + 14ekOPsIJ5aKFewneVFoZNDFlUU7Ril3JiFq5loWqMlummnika18YSK/7vqofnce1W7L5HlsS/ig + j1uWZFBYiIGap7Qy76vCIq2O+vmMH1N+ippgE7wFPrJ2xleFRQJqaGbC+fiWyb8K9pCKQmE4SZfH + n2lK6Hv74ntHCKC/Xqc92HVyC4pvJV4F/4JW9FwbB/yQ/iJ/DcQVkv8a80NhaLT85ZJCYtrlDYqD + EuBwS1HMp+sPdg5eGuJdOczdwo/veTXBbj8WdmcLMn+LaXBDp2atDjNOR9LfIUaV0qhaqbue68uw + RCln5Ht/7y/dl2ZNdg8T2T2///c1c7m9tZxet5InJOWSPEFPZbb85ftKNQHuxyXABf72VRDEnhsO + gpD7KlnyvJANpMK0JjOyvFES+2xcxeJvHfcTRz5nXhVEvzUWf4FMFT6/YqcwpQFethMPzm9yfNLQ + 91nA6vFJh2qccmoMM3DgBBZ0e7/Asmagyy0nc7T6qrGqsU+aFwK4iXwLmDs9w2w22CjaP45bQAfP + RDEBvssqULoHogYXW6bmfQAcb/SlPaPAb95B2lqdPTyJKyJ9YFcyWzujVRfpWD+ltotnJG4u2teS + +tGwI86BGDzdgJIje6ist05zKgBRbLm9mnZ4JG+byl5qb1NVtw5XRkHOPzKndZSPbmVrFsy7MeyC + +jHdRF+ShXB24M3yJed3vcK/+7/AO16P3hSWvygiy99T8qvnyGIwYzQ/q1kxCNOguNuQ94flVSR1 + K16VgrI1zRbWtSfqOZ1Nya0fwSM7joI5kEMSgPOZCXFil31oy726o9SCD7qyJrzDwjY14fF1y5rw + gnKlJjw+lbH2p58ZryDken7MKkXh3YB5jA3cwI2Yu7VcrOnNFMjtaxkojXaaN9myEDxMZUrXJDtW + 4wXyXF0K5E/XMN6KSN/QxpTvvaYYkZihwbIimHdlXysFS5t4uXFZ/C4Pqqnkq/9fQ1BIi4SxIFJ5 + 5leW09ujjaDBpnyPpPCY3FHVFa12by8yuxTxtSuIvAFU6ucGEng1/no71q+CXpknIYp43AqiCF+3 + hCgSlCsQRfiUTv3ZTTVCzXW5V4EoCrkThu4gRL2V64xNzYV1TPQsmc2S6SSZ96+T+UIpdi8NvVBs + vgJYDIKLyTssW94ncwkuNijvC7Tsal57pAxVZBC8Wi64s4Am8wQtlr8vb+UPLn4sPPrNxXdOVqkE + TgIhLkazwGOarNb9s9WC6yFLNgPPOgG/Az4aMX6o4SDyfEzfLfOncjaqgfQdc5Pa2XlRrzcoakZV + txxiwgoOUYN7xXG4XycN8qJJnFWgxGvnNUcB3MpogyagJkxAgt0d/LMHe1dO6qD/597mPeQAGtqJ + R16rbNY/lC3EVlH5CaqPOEBFDcQ4eJUx1RSFVYQ6S37/w2pjdSrNdkz+zvAikddK/eQQHH9bKlu2 + wfMqk1entLVQjnwpJrlRi0Rket1STBKUK2ISPiUx6ebzKabUFOQkj4ce51FcEZSiOPbDcBA7PAic + KlRZMpR+qCJbFZLGzTrlbkXUqK2+YmDkOryxCK1wkPCKNkMQKTX4KIafgTdKMwbd3Mcg6KV4GcDi + oPN2lmAITSXSPQQRsx3lAsIPXmfUk3xg3O2+CedbQ7l3Kb8eaZJrnRZHeryV9Hf8fYo3K6zYJ4nK + SLXTCioW/DbUyymBHMUni+zk2ZFYr3SpfPqT+WozncyHBOsr/P6UV0whhz2xx/RNDKp1z+kC5KiB + wu4rCZdJNNy2rtYSgS213VbCmFPAazGKMadmfTftrG+0q45LVzUHOM/jgKeZqAD1nFCVwsLgfgw9 + CwNcJxF4zwfgSV10OuPZdd4z9tppGSOtW9l6Q/JuDG+IfkzXlwiyGd5PN6NsJVarV31iUkPoTCcm + +Dg/DqnoXrK8zXCmMWH94AI5HRXaQdh9bAIk7tUcI3fCU91MF/Sw0UZkZagN4HGvhCSHnLY9PZyw + OCbdR2TWrjZLuGB22ZOQjfiUdV/dywP57FGgzf8Ky/YIy/Y4paqfG0QhbsmxfF/cKJVd0EF5lM7O + JBCi2pd1E4L/EvmQfT0Zt5n9RKjjKnLWf7+6Zr5rb7Sn163kUkm5JJfSUxkyc3LKnArGOFakMuXS + 6O2ryHUjxx9ErsfdeHuVksUSevj2pw5X1VVKAtcPe73nVC0xYJGqsRlx/7XDW5XYpCa2FTZlB0aB + TXom62vS+RRQ4wLQggIui2f+/JxCeGQhv17pb2frW1Yqnaa75b4LF6fMl/EiIxmkUMzi0xDE5i8w + deqwNoiedgkZfii4a/q9aFnaC1z8x9cQbZG3cXhtUrpVCHl4ho9h5ofli7KJ+9u5ZA+zUqjjQnV+ + Li+cNoUe6HUrNiwpl9gwPSU2fPL7u2qhBz8ycco8/+2QBTFjwQB+hL63nQnPpkC/81JR+7se/ggl + pzyfhQfA6bQLGFPsmjuyzhRnLYrb0uuWdaYE5UqdKXxK++/89Kay/zwRwWTWmXrFPc8LwgH3QEAv + 1ZmqTcRAu8X5p18jhyoXYJw98JFZNk6neE5VMjIIkelSQD+sEJh2BLKUQFhTVUHO01VDVZA/xf57 + 0ik8KiHN3S+zb0CW3k/mCiEgb9DD3ZDXipIVDH6gJV4fDF0wgp94rRN+ZRvrwD7ZhRnWRw8l1PDt + gkcaG3JYcun1ap71r7FJTzQUIX6gU6gQPzNPNP0uHCNiTgqTZQmL3hl2rKbYkVuqXULss/IC7R9V + tzcQ7o+NpLNCE7TeMftjE6rDrkoiXL2L3gUg3bcCd9aNLCHc8k6KGG76qUzqX6aJEZtXVEO2/tHo + wXUDxmRs74F+baZSm83e9183X6GKNYR5tzmkP1yb2aVcxc209i5hIlOuS6UaDzBX/XyrAX4XZ76x + LfcHOfE5VfXKd2jL5AFbeGmuixAw1wla2rrzRtZw8KoTEw9ePiWGUahw0s+Ln6nEwTODRex41+yT + +24choEqp8L1Wu1XntMjICazIEthEAcIDq1Jb6+f4NMtXAJibv3lh9ZKKFzSTxwz2gZZ4yAw4e5i + ViSc1fYN3UHh80M7+gGRN1ahKvZLfGjgC6f44MtrFgX2lgV63c6yRZTLli3xVGJ83JxEVdOWkGJM + 09YrYfLyBiC1eyHLIZMRegVBCaaPCuYAvvwBi26sHrLRF61qSZyM1SiqwcnozOa1Hzy/54cBD6Oy + 5YGwmIb6WsT1PW6OxGUxiPhN0SkRTJpXsW3Aci9Av583hfaGpk1jN8GaiW+gHDaG6BQplxOM+3fZ + tFyBFS4V31yoPOI2DGMWxmGliHce2QEnDE0xZjyw34SUyQNgMpH3z95JQefNZ1Gha6wWsSPDbgYC + Z24+xqAVge0lbUgYZzQHzRH2LXZD5llh0IHWEUbbijBd0IaB4hLJPvYTLJqqjDVHhf1eOgiwBswZ + 4lT1Hyb32ByOI5CfpvBnhFFN5v2PN1dw8AjLBNFV4duGrphedBfn69gTJ1QbQMM4olKqpM7V1mat + 8KDGKF5YuKJ5Xi1uW3HFkkrjMGKC3qjZFi1H0oJQw2A8l3t5OFUibCKIODK7nVok0v416x50Jqp0 + FY56WJl0nzlUNmEzx62cjnePp2ZW96CyVVTw80TqD9FrJ2qZRi3a2CdRUxelFGrxkG7+k1+vzs+H + o0ykLXxNYTGmaT8PGygqUuLVwjt5Oa6SSSbvV5hiHdaFRWavTINK/M9T5StElCx7eo2c6iyb3k/U + RA1nMDNidjuwIh3c0a4cia6KEx+ck6DtLiwWh+/gjyT+RvyR5m1f09TB/P25295CKoFOs5QsFgmc + oPZ2/T0AJQ8tHeyIvOg3/RpOtfdObkV0O4ykRwyw6OVR5FpYVzrJF+kmLrercFouwml/f3fhuC3y + Ruh1K/VZUi6pz/SU1Offro/LKfUsFgm0RYRM7+2QeW4M2jMqrrFMqT8RkeX/lnUVQFwpwMIpjHwB + QzhDiWo+gWm4T+cyM2gKkucMqzkBP/8NJB34gTkJ/ZPPonTEFPMAV+t0IfIYHpewPUXtp9tJpguK + DWAbwecWQsDga6JF/3azxuMLupHAULyt1mWjRIh/ZWK/QwfYaaFOmdD0f1sm1eR9daoNxXyL1hwE + kRPGZSVXd9ecExtF7j+bsa5Y6LuxV663cCIExqy+TF7AvaYsHNBxQ0+NMleYH7IV/G86WUzGzWSj + oFnDL358Trawlvj5TZRZHPlBA2X1+XAwYA3N6ZysMpGz8mKVwtxOV7QpXg5kHsTu3Yp/tdmxA7Ff + 8cyf4C/Y7E7k4IhdK1Ce+/Psa2Z+obGbEWWskHnVOOM9PKUaDZK5PuF3k2emMKGG/iKbr/cOPccd + Iy6A4rbaSq620IQFFZvC7EQlX4SDA/QDChyon/Stn9kEF447trQi5hZvRbVXL0z8oKQfZEBq2fYs + 3teSRJfDaTLUdKGfM7j8xRxPJ/f71w7koVaHw/fhaydopw5TG2t1WHZhqsP0kK5yswILcsK7afJV + Vw9+QVHVMoL6paH37mhqtDRGI3Jwwk7CFrqqJPMsYFv8Mg3EvknECu+vQLcj2zg5e1QssR5ix9VQ + fCegEkUfjt/vKZ5TfbZ31w6LWojn4nU78Zwol8Vz8VSi3xxf1IjncVU856HnRvGAh74XybjZs2SK + HstVOmRDuuUwsY1qsurDKgBElKCBwhHFy5tt0Mj/2/ur4b2iSHOHj97L9Cp6iRKu3ucvGmQk4sgq + xVBQLdznRFUO2kqB0sMX1Ivg7XxtThy7IfPKUjjIcMOH9Hv9BD1OCzPUhFsTmWXJcvmcRz4DjlQS + ffMvVcJL6SMC0LnLIm/vD7yMPdy+Wm7lnD9ZuiXOnJAPK1O8J0XX9eLYpFhNkfw6SUoTanNNdEW6 + A99NpyJjZ7W8CA5AfD1tyrdtj6nVbf0kHf34T2vEwu0qBd3LJbODPh9IURkkraZ2Mamd2eIoSevq + Aq4L+8ueXrfLlSXK5VxZ8VQmaR1fm1B3buiCouDwcqrs0PV8HrgD1wtZFO5IlZ1CB9UsrX3jTJ5r + hkueLuu4Tu8nyvEqt8R1tILnnnig77RMLpGNrFU81Ymp48mntEWAxoN55Ip63Pa/Gn2gezPGMnLP + CUHrKVMZopAiRG6GCWw5zDPF2QKKk3laMCNWp9A+41RtG6py8eHCcVrg7NLrVmxIUi6xIXpKbOjd + xaVbZUMBxkYWlY7o7SvGgQN5A8Zj0N3MZD1dWAjN7XOsMy9qhU7ge/HIolke7gD4LCzSMIONcZsD + HfVVqR8Z6HQPCvxqrcq6fk1VOUDicO+msyooVRMQldMgsDMWeTxiT4are2junozj0QXHpT3lCKZ3 + MyfYLpnVh0MUUWAjTChaJMs1OtpWA1WCaSz+kW3WQohn8Y2Cb8QKrur1I3P99lk4hIlsWLijossm + x6m8OobN3IPdxxzFzFkUhT3hiwzcot1uO1oJmesboef2odZJsFXzkA4P2nJ8h5cIqMTNbhjyc+Ti + blz55KXldz+XYhi+W1l3fchbqjP7kSpvJnUPcQXxAVffa3Ei7SE+qIktxIfswID4oGd0H31dPPAq + TOHXZLTJkIeogGZ5XHo7YkIMqEN1xKTb729DItbDLkVODI9lEJcXGGE9ao81H1Jrs2foUHEG/UEI + KZIX0m1P+E+UK9cGTqTzgKDnkDqnTqMrLdHcYfZSIb1uaYkWlCuWaHxKp/D96XUZh53FQRiVLdGv + Ao41VAfo9w2kJfp0+6rIQzUwhQ48kOq4ESIlza66ozWMwTiHMTi9HvTLANfQ4TLD5sWsU1F/YCXj + WqGzzVye5DzMVcWBvE+XVXz1HfvM1KejJn06gjnkKrmge6Hz9HpYmKSytGPanl2QQcoRJ+Vh9vZa + x/pRFFfUZjGO+p+GQno9GfYJ7XQi/rbcjEUJUQI31aLEoP+QrEpFT9/fzdiih/tYm6Q9h0Ip5FVu + jGIyJya/xoSI3LRencj2YuPhWdrdRJmKRccm23dK+w88nHCd0CTkXCn0fVyO2aJQ8l4640+vj98P + L1qKvs/gomsY15/yTmsjO9cKui2wY5ukW1XXxGVeK8BueN0WsBspVwG74ak09r4/cat1TUpGFlHX + JOB+6A/CwGOutPWe6DwFKbiucCrm/aXEfRbhjWgNXg5vN5glNvpSLUSOvBn55ZeJQEs5kkTwjdES + DlV+D0rmKsggCx5RIWdYlX7Sv5VOengJpNa7DVW4JuuC2hkyFQ0z0PBkLieY2YTWB2c+698Bi0YD + GLDrNJW2i9NLefmejEdV4w4MbCXgUurv24A3QWxHYYzByJWky+L0vVil89Wmb2yJl6aRBpalbQcP + swwmcbIwRxpvKePKXCeulnGl7/6WTKdqoB828/vJy9IMsKaAVGOAhbqu0veELpnJPFtN1tlUH0pT + 5vD8JucADwLfDyvSTEFuV1mGcucK8+sXYBLrsgsCzpvNB2hJJ/mO0Syw1ysDDhlvIhVHWJmlXIhW + gNqKCbYtLRM6XhMOff1odfrNLFvCzNfRdGKnEgmwnWZ+kkuEWLupTLH+GUiHDzO1Sjghi0zKURbH + g0dNmbmqx95fgIH1kMHnYPlO0JPLKkxeOKfm6r+xCYPF1VQmM7XaVg1xj+qOq7vblkasaYwe7dM3 + NAFGsgedVn0KcIWB46Qty8G7wIgp5m/7jrWh5TNZPF00HU/wwm6ZQep5qr3+KLHfijvbapqZR6GM + AohPIL39S86KCCa2NMwysVTJapQVrgyr/vH+lLJZ6Za1ax6TOas6Ez9SUHUZc2TdeTH9bRQC67ad + DKBR0eksJ5nTfrK8h+0WuaPiPfvCj+QUPBrHNvll65orhYAq+Px64bhei/Km4nW78qZEuVzeVDyV + FXwuT/xqcVM3rhQ35X4cc3fA4e+OhOi9yde2VM9NQHoKZMRV/wV08bKEZ3IzG/kHA5+ymId+XAmw + 7MqO9f7TMdzpi2SyLGU0RcxqRKZsB79NJ+ieX5cjX6KS5FJHsLfHVBcBUqXjVgk5l7MVZ0NcBPxP + oNhEyf8qEVVRBsnn4qivPSaqJBAmJKFI85ACK8nGkxmINUIc0W9eJ2MWLbQsVbSV5pR7uBU1Pqsb + U8U9mG08SoXFsLqKbNrtSEPaTaC5fCuJCNQWJhd4wl6AZjGlfBRxOZCmDEQAZjrb1AJx7khGJcNT + zbbcOrU/DbGU8qPzfd7W2hjTrVHZ7j/jVvy5SB3q2tFZQMGH4LXjtYsRk21sQ8RUF0aEmHyoAsRq + gBTNGLEdLxT7wfye0HO7yO/pDkV0X7myh/HrEUWBPSXopBupki0BaxGGKl63LdmClKslW+CpFETO + /lapuIwBf5Uo1CjwPM8dREHgMZlHBkovj96MxiMOvHJqGP1BXxX6C4kd91+rTjUrsePqPL+T3Rg4 + fBX1DFRTUcVOheWVRlCbzOEFcfnuHxT7cmLg1rwsUNTUApH5pEtVBMTEGQui9p2IDTZaThZVeq5f + rhM/EJniNTR7J2Ja+i/ebZZ88bJ5eoRsoGZz1VfeJTUAEccnAsbglyPjc2VqtUjs+P6YFyUcZygp + ochzvcg4Fi389jAZPaAAgu/D/r9PMds/F40Ezng2hZ28pCotpSLDJ8kXtujhRs2r5ATkynP9nNHo + SbOTVGB1ilfClkV9cnr7I5XvuMJ3tH7ye9cLQl6clPKZbE3NK1JbpcvJPH2zflimIjb3YPIxCWi2 + HMVqXxxO9TlLNlq4dX2N1144yuqQH/SNLJDmugOpHJ7aom7tWMlx/kfmvHbCVnKcbGMrx6kuDDlO + PpRFsXJhY/GQzHvl34tUUEoL4viQWP498QJbBeHLifaolM1/Xzsxt7fT0OtW4pGkXBKP6KkMj//t + vWcWWg5EVkypoB1/+8qPQUKKByBxxnEpPL6oeN9uxsOS/fv/Y+/PmttGsrVR+Jr/gldfWVGkC5mY + 7StZnrTbVumTXN1d7xsdOyASktgmCR4OttW//qyVKzOBxEAmQMiWq0/H3mUJAhYSOa7xedDSNzwA + ZoBrlWxhxcLpO89g/Yp6T2HmqwAIJmkrryu8AMtYFDMxZmxrsM90+AsJnsOfFsn68y+Urp9+2w7X + IrEczmL5UjjqoenkxDgD/S5a4VoGVRYr1mQm/m7qVct1M4E4t53N0xYB1qbglxGzy1W+ogfRdC1x + M1x5XYhFOWHEyxA6PQYSa8IapTDZoY8cPLXZgmEzY750my4DXEJKcXMjX5QFY39U4gYdwkJPLUzV + R2ip2jFisCpLy853f2SAplX+Tp2OobZyqnT6nw9gobTYysXtdls5SS5v5eKqtHRPL1lUcbpzF8tD + Sns5BwM4jpGXjIV+DS+Zcr0qj5ZOSb2ebb2V7igVqEhkpX05nj3bbrTtVaRnTyQYNP6simd0eHu2 + nMx3ov+vk5UH5hX8w3xfIkDjL7GzUoY3/BZVPf6WoAq5XYknmws7WDmRpEkRNz681gAPObd5l95f + 37Hfrkl1m+VZpNsMC2wKS9+srioBNrw7L5vL6lWDn2twBzST9Z4KatxAfrAIsFl1VWXxNtcrdd9k + LUEK9tom7Qt7B3KC7bUVa6doqx2NS9+dE7XAi6HbLX13QnLFd4dX5Y52del7Feedi1HSkvMuRPdZ + PArheOIqiji7I/fOJLtb0kxRBYHabnumYk04h3Tpnnjtidpi1iu/qgdu9ggvpcsHDUG4MOY+r+45 + UrI2cmoVQceLGnYXQ2rZszdGwGH0T21LEj2/lPVVI3Gwr0OfQZ+dWHXrS3HQJ0JVw1Qp83M1JaCe + siACHhzpCVqgeYTraJDT3iEhhTe6w+hBgTmvGw46YrYutEDSl5BLbyAaqF1wPBaaXBAQnDL8seDc + mGQmZY9OXde92z6VWHvaHuONjTHFgIVHvmxUmbPFKVJsSQXIW8y74jZmvABmq7VLrwc8Z+ES3LOw + Rw2563mbLR0Mj/Gm/aFKn5wTSCtJPs9y5V8reV7kyyScPTtCG5OgN2qlrqSKemwcKlxu2oTbnexO + LL6ryJF0oHz1u7hCj8xSilwCpwqv93d0bbGD5bN7HZ1w1rN8vmxgvoxBy7DTd/a5PT1dlugGbQDy + 8HbbskSUXC1LhKuk8Jy+el0tSwyZWwHIC2LH9ZxRELMAI0So73wsw3WUQYINEGuJ7oHJOLsV9U0d + HIhKNn63Wq0uZKnaTuD+ThCTGo5dHEfSlE5vptUo6OuL0zHNBLi5EggbDe9BT0iXAuPYALfwY9YY + KHVY5CgH1TEB16KcQp4XtvLZ3S4RcCgX4fhkvAcJxTD6vJJFhgHM3EcXBtytOtbE67AzKzROblgO + h5YlDX7cmA9wquaVh54zkE0Wtkzxm6w2Brsn96tNbhxqEas9tM5PKRqpgzd+rNLCbJeLtWp0/LGI + E1t3rfXSsAsf9iP6AFAdha77EthjqM2j0r13V5w79mcO3W515kjJpTOHrtKZ8/Hq8kNcNrJxQpqH + TvxiHLuBE/oj+CeKpJH90QDglbTlBYNBJoaKpAhtHtJx8XG9msf7kNyEZx6fy8UqCaaJHTSGHjzP + h8ZW3Hqi1NJiQ3fKdvb1IdHNaema0t3k/XN9m7ZXUnSaiRG8KujqXol555qDpLFAKHKS5wabHcTD + Ax006DJFBmJSagegR0GVXqh86yTsR6H/OZhwD7w+4CUZe1aXXeBFUqvref1jTNKBXEXCaju8+Noa + lG0EH0TD83xZp+34LUA56XbLOm0huVKnjVdps796888qvawTRZU6be7HMO9GPEBcKdrr8YROv9Fo + 5bmPV+m3KoNsKzzOUQGcI45d1/UrkJzuL2P/F+Pltfs1TElzvy7xzDghC2K3zKVa0hdNHTwOSgIr + wgbUuFLvmFwocEu6nBbfAnPnD48wrP3hZglPb0ZD/1pc8Z9H18M1XcLfry7wiy8LP38kz2ceBJ8K + h1xhdYubl7s5ruoV8aJuhukGVGtR3bHYYsI/PKO0VWgkzC2G/+HSWbh5Kd/2uvhhA5xCuhLU8WIK + zTg1+8sdWBaLA1yoe6IymA+HD6iXZ4TnDPN/sZAeQnyaELcTWJ6p6mf4QN2H9Bp4aDLbyIUuLucp + lcNn19d/jNfCk6wfGw0/yIsnbRqNbMxiy4DBFaNaM/QtxQkfkpokHcX95McYeQmpY8VqG8Oc0CdH + N0BpNwhzr6OACReMOZ3MI59FWtQxCZo+Nyb8D06bBDMnEu1BWPtsfoSRE1A+4aszFrrec8dtkU+o + n7HLJ8xfUcgn1BfpHJvOxAetsKoM9w7NwFMs/SjdpO75jY9F4vPYG4u/f3sYB/TT8NsD2ZeFJwVr + 0lS6JjNK7/xN/n2Z0i3IKTMVvWs0H+H6Il/C9YVE/XErQIbERMXdfQpPfyEk0mMJB2KXXNXNb7Bj + fbJnR+nphXvDFB53NUwAIVQc101eIFm2tjAHEzGK0H6cQj00FmSXe+QIqY/LfN0CyPC7sGjbt6ct + VHaPDGQUWWrcP5q2j2Fp/+iDm+h7NGb/SceorqVxL+zjK495yaHWBwXB1YOkn8Z3fcfPUWugRckl + OX84QsEQhad/vr+Cz7NPvqTbrQxrKblkWNNVmar0+4cKABqLscKyaFg7L371MCGTjTwOqr1USL6m + yWfQU+ewvWSrB22wZSJqM882bMxUMlI2rwKItaeQMogvjkBKaCDQCCT7SyZYYZaZ4PxpLFZkIbS1 + CcjeAdXa4W7ZCwqtRZqZnGRmc79bbkcFbHbMTJncG18SgzDjPW9M7wD3QyeOywhS2z3ugcgpoYxS + CmaelM99zp1/DRo7pByuK7FQCdBY+tZh/q2rZHv/NXl4ObSZN2j+UIamzMnKdiJHHmYSX1HSZTbH + 6kOYvxqnnhO+U+DEVPJX391tdUzo/j3SagavKv+b+EDKMxFlAN+rzGfQhzmktjyc8PiIxTqx+Zaj + 5O3dVql6+/UHsEzt/ZV0u9W2KiWXtlW6Stvq29NKQgR3WDk2FbwYuyEPIn+E5B6KvOPtPPmCpz2s + TVJdCglGz0DwicTB3YqFuErXlBhdXoeYXFskPEYCRtF16IC4pXfQ7vw2qUmAaL07h2Ecx24Ffubt + xwvxKZZkfqzqZb2+rn2F3umIWbIprhR65QYXtzolcfD9On2Ac0NtWbDNugPZTJzkxre0ZnmOmK9J + uLrYi49rfTXHQWLCSTs4Vaxa0l3az8nApjY9Yk57c8XCFmC6dLvVpicllzY9uippUq/+Wcl6Zw4v + 0aSGL8Y+GHI8HvkwVIGriNPQWgBj4RuuODzfQS2Qv47XyVT4+iTwDx61goJcZP4UqZ/w9gy6C+wT + EctYwGmCN83pfvgL3LHEgKGs9ZDlH8k8AxVJJGi/W39zScGAn7BEZ0VUOhvhjtnQQDSQIMET1ZR7 + 029dwshtinkz0MGdmFdUVPEx4+lss5vfYkel32CUl3cpuUFlLnnt3uo6finIpOpuDLU1CH2vrLYW + 8ZbyLwczEHcWY7ONw3iPXqnFD37u0R7gRNc5ZHEY9ICtA8+HupZHzBRN4AkKcJpt4BNnrQiWxGjg + A3uH7/EFNgQy+iILV35I3/M19udQDP3+jtuTTdcQb7IB7Tyg0TeFuPrIkO6ZuBvZDYxG5ZuOue6O + kC89Ra3l1nSjPAV95383CgSCvWX8ueO2Q/NSD9nCQOiXGDgQ6mo9EMR0ByrebmM+jwgQXiBIM/ta + GkcAbWlVpR+mAY/l/msBXJeOJ7R1HBMqdEjjzFZwdBxBddzXwlFTUHN2gaLHW8LJ5Q/Z8nbplxjM + XeqqxAN7f/ZeFYuZqQ6FzsvnmFzxpngOSlvsxjg/XVcWX5my8FiYrYnCkKapSok6//sxFF2P6Svp + I4pzQIYfVbtKamtyHW1WSV2KSYtoVed39EvQ2mZJ2n4dC3xi2ZFCYWahprg8Klqhlqqrz4rgTfSc + Be2OCnrG+qSQrzAPCrpIy9RES5thZRqNxy06xPL9aGDeKP/66e35+avhs8uP56+HjLt+7PL4xHgz + HjEuLWFbhLYDlQs+r8ootLu1OJ/USwVsJ3zJReEjKjTQFkDbFwTh3vYKEZXqBdwPFxkCS1rtOsgQ + o9+iK1G79gpotV58oFdaKbfN+2ilyvXHwNvWjZGc4l1SbL3yYOxZWK01kD7w1yNOJUT/mS0n3bUY + TEyOqh2nWYXbOdGOkLY/WSQKtYNy3uFj1b7tybgpbMX2vi663TJuKiRX4qZ4VcVNX1cSklkYV+Km + Y8Y95rgjxn2Bkki+rlVG7l3ohN+v3krv0Z/3a5A/6SFO6gQRGBOPxmh4BI32QMfqHJkk1s3f/ETs + mn7SFT2qoTvOrFZLw1c5i0HgPGdeq5RFesQ2Y1G+wEhYpGu0RBazz0wZwAjyUsB4MSA2BwoFZ7a8 + n93McHuRWR4fQcIAxaDq4kQIrSMmD2XASij6ueLondynk8+rbLa0rARphwzbt7wWJ8TxWGpOoO01 + e2eY1kBiVyy1ZXpHnj5TFTkOw+hoYLZuOkpby+Yvi7xbD437uHi+ISnIGjvlYQ2z8mixVmC59jb1 + sdC7TydjTZ0MOps99sLnDm91MtAjtieDfIFxMtA1OhmS1VxyySfTBOEvB6eXYzYUvxTUfFXXd4q3 + F5Pc8Xk8EkCp8jsSwx+IxRDUjRkCOJLmty+6YBawWGwhX9INItaMZdRvuk+gvbelg/DmvVn2o9Dr + kq64Un5MHF6TjJgMZq077DgSM1DkQ+NxbEhrGaRv1s7z9qMlOteLhLrxyMwr+21X2FZqp3TnsJPr + cNLuJqBh3K8bWpa7KtTmRpm0v1+xmLVgDhO32zGHkeQyc5i4KktUz68rKV9eGPgV5rAghuv+KIhD + 15UWoQZ2W4BucbshvMtkjZpyipxVmFdUxKc0vWCnAqhpMyJwuX+c89+uL97y8Xz2WavaG1X1Otsc + zfgR85B5vAIAWNemhnJXJ/YaEmcN2TljGIaMEiTwUxv6b9PZRm/uZuVrbWrrqKn9OZ4Nyr8biwj1 + 5utsC2fj8u43k67KQKL2Sy8qFAPLFwyuzi/eDW9BTpqfHsXyWnFNlocKGGFQRRF9dLfIHohlQ6M1 + b15q5VkiCV7/8fH34bPrxdZdnRRxTOUkwDlwaMa8xJ35ATFV4c2pmGQwD+9gZf4HV9xmNodPw5+m + O4FsXNtHgz8+XOt8Nj9k4UAOg1jFlZHDPa04eC1shb6c1o/rZcaJIY6LhPAAjc6qyiqnR/wwWrHu + KEDow3Fy66iWgu2I0tpHs8V6LKUFUaHySXQ0DF3Sle5TdGh8hwra442p7+DW7i153eWMaP7EttnF + T9eb8zpSQUcenLrPWUu6OfWQbdhRv8SIO6qrsrJYJqS8/uMtC71IHRt5HkBBjCAhi73BEc7bbqQj + fixVPNhh26h4eLuliickV1Q8vEoq3h9v31RVvMCLKyoezBUObfBA1fNlgut2fH1xevWGVDvQ6mDb + 2gwx7QKO63rUVAMdGC6vs7t1MhXYeLe3cKfoKQF4l83vZjlp6UGGkD9u06oSWN8GbfOUwKHjprxV + dO94XkU5VF9fqw+CJRNYyStkpBZ7g0yOkewHAuA1dMIobiINaZAvrd+h5KE3c1ydg40dqM81gOeh + Vbo7FcE9DLF4l3AwyIEd5VEJfb82sHD25FwgShVMJ9yhNNY/NjC2EkIRmWfFsUb40aIRV799obaJ + ySd6bCyq19Op+mrQB7dCwpurlwIXV+iPmznIlXNsgAtBq3yBw/pJgI0JmCkf22YnhDnYv1m552Hg + Cp4NNQQ2z/5Q182eSg060epXbsvzHpZ0s6yujhtroYdH4InE+7yIIM4vTi81LruhkfTI2r6H4yBw + dI6h5zstdYj8IescQ/USM8dQXqXzrWLXGinDN1ghhSVTNCpFZy6s30LkE556s87YzSCF/3IBJ+Jy + 7eQ1MdebaiFamZSdhR7YzI7aDHtOjocpR9D8MltfpHKI3m4Xamu34TSAyP/wPauhXb3vf0eQHPdk + xT3BkoDmpdhTHoSWFoT7pI3ETwhohwVC89vdWsJLg64zzZbZejMqfF6yybWodivPCQgDiQo7O5iL + ARF0ffgA32Rv9tDtduCLJLkMviiuktnz+uJjxexxHV4BX/wVbJ8oikcwT1ggA3yvH5aYBzFWPNSS + VMBQjM285dvZRuvGqIUWYfhkukF+8wJLKjAbCQeUXIq5WaWtUjSWkrrHt7ubnVR4kVRO/ECsyDoT + 4etsPh9mk8lu/XKYzDeZZIqYrYRZBosAtwxhyM6Uk/31clG1r8wXZzsMkTRYVx5rSuxijhuxKvfO + uz3OdjfmXoO9ggyHYVSGlawfDZM0MQj2l/n5cYxlfv9Vgz/AZaKhf6HXJcAkq7o4Z8t7MLm27ZEl + OXk+6/usjSTmkn6B/vmlyuajHJzkzspPrSSFDkVnzS/M1nfJcvafhmynBlk+47RZqvMFoT+y+ewu + Q0O2SVilCOFHQxZ75RGvrnfL1nSR9FgaSY9sN5RdtMiOSL3G9YWPlHc+q461fviQi/w4RprefNse + jwjGFvdjyio+qDfW9AuKMRKzcPlNZ4W1Z9fNSnHhKt/IfRU/d8I2Jqp+xjbjSL3CSDmSF0mJWa8S + T7piJfgwfdNe5gqdovFM5iKdqAIbMBx9L3JPBnbPq1SmK2zFANrCKacVjuAey3GCGhm1NS31JS15 + VsWPCkJ2jiOqhGCLobBz0rQHXIzjQ22oXT7VqpvOog7bEq7kbWduaF83Qbdb8rYLyRXedrxKy/DN + 2UfMpioYE8xzWeS5UZnsdwzbYxTyURC53JFcUddoj23TYW7P3UAT1OoaGckVhfTrIjrQqFLTQijj + YiQKZEKkyr+ZLFj4iMh1m8oH6R3n4vT15XuTkj12K28ownfEeLjGVW6PyjuU7AYK4MhIbLkoBDi8 + MHa9MtJcQ0ebKT+B3wh1EkbQ8DK9lFBFvyaofhdVSbQL4CWo2ZZfEZapQAsJOYjNH5Vxo7BfBFrK + hhLrKik+DphbB3pi8P1m5EAsnZywPY4Gso24CdR+DG6l2XJsxdauEYdret3aGDgWgErLCUhOXY91 + hipuI/Vwl8UO5WsUtozjm8hgUhGKycMGVbBeEJq5F4spUoRtma539jZeb+7j74ostvd5i/F16bHD + O7SFbtATGLMnvecWO/pjCrbbU3yf4q0ax+hp+LAdFgmrGuHhOpptffqpOZ7ZwgiEzuvWoKMTk7T7 + xXf1iI2lU3wCWjjaCZ0lClXWEzJH8O9RYpUaK8nnPnDmtiCfE7fbkc+R5DL5nLgqy3//dh5Vyn85 + 96vcc7gBjWLGFd0pnuyUnYPeTwk3JlSbO8wA3w6/zARfE+5WyVa5N6ezzSpdbsSCU15T3EhudtuS + OzWdiT+YicsCYW0FkxWkJzezuZimhMz8eRZ11W8LnKRO6HkOj+qRmZM15QFXeeQczqNGlTmOecgr + eKLFSn6pKRXdSAbinRuyBqUzDN0YVMJ6TlPSXUpfH8D3NamXXsRDLzhCmOGU91gQxmVhclgxv3Sa + 7WAajDGlC7XhNaIp56H1wms8mK9R04gZ3Vvh6asUUJmtD1hDV2ixg8uafPf0G00Bnfbi/oLKiP8L + ddYUUzOm+Yw1QRtEbbBM18YTCK3hZ6cn4tENRui+Cu/15kD/qFT2unXy0lxLcnrh7dAvq+ROp4tP + N9heWKm7TboZ4Gag9XI4XiTnX0hKVyXNvKkGGHea9Cv8hp0v4a9hJ0jgPw9UtasyFlrWujW67hmX + KuysfVmwEwfML6uVokdaHqchI1KHhvLivV3W8GWgRBMjkdx+xsrAukmn5rrUOvWoRNc1ktxttq8U + a011pt1KrYhuIsLFXbLwNcXN9Hs45YKYtNc9b22vgLdJXnHITQ5HVXPJXBWKqocsK42lwNkr5jx3 + /HY+bP2UrRc7f43hx9aXSfdYZSvpyP7Ha9yj0iSHbKtcGV7C3QN8RPibA09iKHC59GcTuE8EQsnX + +RmGYts1gGfPZd0cTfTj0mTbwKmQ3rXcAFhM/ttPv18NN7M72ELFLk4MBPsNwO8DKpA3lDJLoaFn + zG56Fx7l6lH+nVdGoBD2ObdPSqHbbRH2UXIVYR+uSrDpyzqEfbTtTIT9Xz3GIs5HCEGJkxPXzd0c + GrrO5mO3wOYwTUUc7i5d5iSh71a9IOPHrhcFTlmTtWgFWt+/Nvlp3aDJ3xmxGDavskvVrGaHIdst + Cuesak0Z0LmpyFG9YwBNLNTKHf6o0fBz+jCUZPDFFxccoqaRdLfOvm7vhzt4w3qYbRbifN0IuOGX + RW4NqTiQ4/R+dnc/xptlfbt+jdZXNB+JZBjBxsCA89UA55ZG6GeRI5ZNTDyOk2R9k+HnCPrOI/2c + gUOWe22vHS2cMbHHwwC9L7ju7Dfz2HfKCt6mAeR5f0Pi0KVHrCagdQN78jaDPk3APbWjUNEU22ov + 38t3ekAHo/pEAllvoTpaPNcfhqg2LVw6FC12yA6QgL15YyWcZId9/Me9qGktHYUm0Xvqbr5kDqTu + nr0f//6+nLnb/nWB5eswsbD2lSPcZbG0Hd3l3dOFj0nBOZSGLLbKSSYP3o7+XE6m2EXnbGbC6fif + D7DGW2QgiNvtMhBIcjkDQVwlxfHT73+rKI7cDar5B2AvBb47QuBGLqnkPyXru3Q7/P12CDL+NpvP + QSH5JEgmSF/8lH2u6otl9BtDa4zM0scyPRFoWD6rRPRX0Kmg8uwWWAyyXKbzhrpKHtRxHxmMSsUX + 5F5ALR/HvkijYLhXwVyzaPvg9932a7KejnGfn91i6KbafkUaV+oqUd24/ZoNhe+aEMxF3i1sYtN0 + AYpiMrnHhylvlziZkqHqKfSjyxesEAtb2HvbLH//S1Lnvj2AwNlcPyeY5kCt/ELQK0to8p3QBebZ + ZrdG3IwtTYRMTIQtzoABzivtBQx43E9NJKOytaxzzSHKoC3FGNSO0sSgi41Eo2I1zpXDlqgtPNQT + BgDldHag5MpabKkpcQr9f8nm2+QuHd8JS6YXwbLErXnXsNMFO8jZexYQTd/7Dw5rwVhFt9uh+JLk + MoqvuEpnwZ8f3tag+KK1UkLxDQM4QEbwFybDeCq8IXYoQWhZwFKDufTqOeYAbWdzWAjvPl2O1Wmp + wUExvpEN73eLZCkUO9Tgijihm1SVk/w5v+X7yklKWUuYxN6S+PQJAAOr/oQdVT2i2jIa3ovoTqWP + 38DAgmVW27932xV7Kc4U9O+JtOgRJS4kd3cwOzUc0wY06C3lWKK+Nbu7R+SL3RpPqqmRe6/+Pt7e + g/J3d7/abcEe3k1n6WaAEymHNnaCwV4moXbO8x+KkdM9y12tcoLtuPjAndDeVUi3W61yKbm0yumq + Qmb7vbLKPVbipfOCF79y33d9jhpfgFZrcZ0bgUGRJleOpF/NsuoyVWavqfPxxgXKA8adyDma4diQ + ky90mg7F0qhaxL4SOIep5b07P/SWJmxbw3sJSnVz42MYkLL7shBOgE2CO9eooY3XGGkwtFLPBPso + U9ypNg/eaB8j4duq5hYD1kInNd6LV4x3w+LOEOsL9MIhi66HePGl2LHMzQqmB1sNcCpq4AxQj8Va + 9cg2E0K0O+z6+g96gVhhMP8ns41cY+JynjM6fKbuHQ3957IJo+EHebEmQa3R4/dICNYe50TOhiyo + wolUyOFtoWz9kIqEH5Kz+PPgU/8AAGnckvKPPbibVYTvqYv868E+hwIq5M+PV07YwuNCt1udv1Jy + 6fylq3T+nr6qatluyEoeF//FGA/lIMRQncho3MeVsViD/D64Mp6wSixygL7k4E81urEgLF1lWCwA + Z8yNeXohytiGqozhj8LTscLtm6wPOE/ot5fDDcyItHxgJdI4yTn7KoSryx3oQfIwmQpxD+idmazT + BFs0T7+kc0GDjQEkuCvNYAO+SqY+X4EeNZkNzq/OuHaawK6B2KFH5Kt3yDKXtGU9ZCo/oUxeL4jJ + gy62D8qaOxK1MGSaKo3HQTv4eP2MNVWafIVJlUYXaUuZZN8UdHI+PXNKSVVuef73wcG/gyRMjXEd + BTPEuFuyuKDjqkA8o6EhWnDhPqARX+lXa9KB2KEKziRdZzciOZEYFWsVLlup/UUgf3BZvVMzKkvY + YbJV+4w0r2aIydHbGevMrynW30uJ2XlEjynj78jEaj2FH4PptS8o2T6DlH2hwYaaLTbg/DkL2gG5 + yWdscdzUKwwYN3mR9tV0lbI6MkpJlFfEbau94Q0+X7wLBQoUNy8ivi8mDQwzy7cDTnhzDiIl4uYi + 1+kim6bzVomIPwXUOLygKcl8f/3/Pk7LR07NZIEflMYHQ9y3isWrVQ+4sA4DU1gOWi9wfebYq0Xc + +gnOqO22Zs9syiWFL+d73jFJEbgferaFSCbJ6s2BS78hcC/+BAYPqAD5C/ckjT9yzeaPcLnwHAQC + NrxyX3wndf4pcfvlXgGaiTaYdvDvPFUJMSJKBadntgbNVc83beNKzXVUvQVj76C+LIQV16Tffp/i + xCgQk+oeTFpkf56mWHn9YMLmPHvvjv/mBmBvphPcUmp8n3sPY8LHOP/AuGcfq6DbrXwlUnLJV0JX + pa/kz6tqdoqg7yv6StiLXxkPuOONGOhGKq1ZlOoWDhM2TiYPSKonMsS+PSSTVHRdnjyWz6HbbLcU + ToP5bIXuXoFzJtDR4DICQRv4rlLAbCqy58rAD/iIES+h0sO7dL3QhVaTZCWyMXAayvTN/xDFyGKR + zGcJzGBc9iD6HvY+aLWKhp4+rHtIyWYMLGQeBpVASz0AaAn93G2SCsZjGLBq+Mbs1FI0iDXC/Rni + ct8UjqrMBVym47rRrA25OMwrR0bq35SHXPaPs5EpHpiOsDrhg8eYoCOYnSPCyt+Dk9Zm/r7sPHnL + U3aAq1mHhd0oGMieEudKcyP2Yj08cjb0Dwd76O5l6A9472nhHMsksNImYtcOy2f3qh3cJyELhIpM + HtL1eLNbr3E9opNXSIYzeZ3cIc731FapGcgtSTi87He0dn3XxwuaFlxvieRPIfdaaUCedvO+9Z87 + UTtuGvmMtZtXvsJ089JF0oYekkVUhZcHXXtSzWPUwHyxB/P1ZKDuyu9QRZLp/Uag77GAhwOZpklW + ZK1ge59BRGFPnepTlNeUGVnFf8MCerwFDvy7ZC6tVg3MtC9yXh8PabUT2RPk2iZv2nu/IyoeRTN4 + vRS3TMUZW/MKKwiap5Ij6jtxeXZ18xX6anEGgfecsVZrkx6xXZryBcbKpGu0MDebifQT3mOx8eY+ + m3zWlnLoKAYpWpOccTdizsng/WYFf4O2rsQ+PFxsxZUBSpMxmEBSPfgGK8NtNj+Sz9la4oFKNvuS + OPum9VRn5yJAf/EbZwuxf1GGkomcnYjh79xmxNMzt7rOjR/QIS1dLaluAeE+ZEiFNwaVJpsQYoj8 + JgIP/i7eqB8S9uo7h/NpMaNHlL9T5ojtPh0dTmMsi5ukW3UvvLR1+JQ5kTiOd0vcMwqpw932cKqc + f3flhC0q5+l2O+wqklzGrhJXJYvd5Vu3kvQuzigTu+pXWDiuE4wC1/cCmQ57pnwaKhdyiYse/i+n + spJQPhNYCM8uPr4+UXXWYKTPM+gu4Yu8SBYhEZZdLKZ8pYjpVrduR99OEVAUj5soiiteGIyAVCCo + /MhryqKNeRC5AXus1KB+AaJMYaOagTF9QVETKwRDTcxj7F+DRxps0xdDD6MnRXwBEWHjslIvg2tT + +NF8apvOKeRSIIgY4MTWFViuQwQMLMp3f0skoOpnUiPbmp69vtmC4M6j6EC9cFsZ5EQqoC4hCMM6 + WaSb+9nttk0MFSN9hs61u5n9P7vZVoHS2ZkvTyTn1wYynOq39C6zt6mK1TTUxPUBt0/PpNttietR + cpW4Hq7KIqirasjBE5DqJqvpOHBjP3BGARLAyvTM/7Pk47OHTSByM8aS6rw2M4Ao7fE4FtwpwoY1 + lvRiNwcdB/P88rxFwT+ZSGyOP9cLtirGuJLlMPuSrufJaiW8r1SQKUsz6QUyW3RdEzNoyXrPWOzE + sV9F15ahppoYe20/1JP0hE7Zez5qfHe+5+sey50VJu+p77eXusowY7Aeh83MKrjM5kYqQRF60I+9 + pnhAHIIlG4f/GjzxyTPAhZGznEZRf0QNj50XEtEL6iaI7e4tRpD2M9v5cEyWidVefwCn7jgG+04F + GwJQ5Gjud1j+dcwdpQ2jtUzRHZ33J2u3Zz/peb0l1FFV8Ycr5rUwsOh2O748klzmyxNX6UC9/ONT + lS+PhazCl+dxn0XhyONBwGQMH1bMHCtkVMokHWCXu+1eRrkDJcCGdg9qoh/HNTV74r0mnExD6Z7f + aHoZ0vWRcjeHqbPAeEtz/NhvtufqhaoWN1lQftDIOKEEYtVxsbdHWlmHRzK09U232aoG03aHNd7/ + 0duiahXW/4GdOFzOtqI34bfdGs8kMTnMlTfDs2y6m1A0AMbaXQ118WG6SSX5nRYtufGSG/2nBG+U + K6T0xgG+UJdYMJcPZG/jsqoZmO70CvZCLewQXzPBiW8+GgvND3hR3pGoXsxhrrtf3jYrdIS1ydRe + 7sG+/Kvk/zfIsDDMQr/86B4XeHPmfKAjCPt2ynaf1VVo01lsL88ietZrYDnO64feMd6SsrzwlH0N + kXpNqYpIXpZYurcb3gJLF+4e4CMUrJLcbZgareaXQKacCWoDlbE67ZQmLfQqvPsd++26WMclaUzx + RSIoPHmoTehozmsPI+0kQnUwgeOxsajbPoblhnHue4Ij9EtSx5neQp4lkPDe1QUqMEVe93TUAQHt + ct4PCCN3GA5fa7h1lzEKu4gecX8BDWXaBWHZZ7I+WfSJJrptcQ78PLSAXaAn/cgLqxMZVa7yYlGG + Fc5aaTvZYjD3u7VGjtpa/ddYIdluY5XP2G6r6hXGpiov0kZaWOOr+2Q5KP9elIJJOHFMdZfd2Ai+ + 85RUbtuIKWj4wAta5knpZ2xh4dUrDFB4eZH6PPv2IHJP58MyDlKxFsvuruIbcXyc2KWcDMkDoJJc + 7SwG6x0/4hS9UOK7avwdcp4eK4ETmxIxT5ZslPu+fVepuaeJdSPHee64raYePWI78+QLjIlH12QZ + 9nwtqQjysgxM4hZlGYOaa8NnE/hnMzw/PxmewcMDlCCYCSJO9YEOI9CsfXQg/Re3OYyGu6HGa42+ + vRY6lhftEaZjly0EPn2nc691fSCM0NYrU6htrWEhBkv6G7mzs2UbpemnLTOUeALmmKs+lfVT9rFY + h7GodlBMHG47ekAnjI0yP8sCP+vj+1EKE6XmLEcC7mpVnFiYlULQxe7qdTvKD0dmGEtNuHW3IWeI + 2OfkHtTxC1AMGSOFGQ+TTOQ5d5EHexNBvuA+27rg0/MIk7ZuXrYEruokqXH3CSnPTbhgDsjYb/s5 + YePCM2sfmbev9rHcUKVQUNnjxw+MOy0gosTtdhBRJLkMESWukiJx8fq8GjIRBbgliCge8SAY8Thy + 8qLH9y8os2SZLcsYRSONoLXRXbyhzhC0GNtsWHhWOt2rqB1IszjNoDeg34ar3WIlNGcQNRL1CBkC + fG62KA2fR5BQUD7S3WfoBuGpEYFYBTpjiFdwIBLBGqsn0a2PWbtDs78oEnQxne2NBFVxTMzAkNdU + u+gyN2JVqHGLUmPiFyHo+/ejoR6ItVJdxVeK8r0iMH6hXSwISpkKxUpNFx0nZaLCw+g8NeNrxIdg + 8jW9MnYc7kaiXvGvMLdeGuiN6dRgvCGQr9OP568HuAh1pMiPBII5cyk0jdvxUkGZkfMouWuHqGFJ + R1O3L+NgKddZ61G3eQMmulIKen22Q7LKVg1eu0cnzf7BsEuPgJTUIhzTI/Q7meNuqCdhiTolnzL7 + CFTqevp4qd8PuAipQETvve3K4RF5yv/AQtd7DrpAGweEfMbWA6FeYbgg5EWpAFx/Gv7x+nJ8MSal + 6G6+m0BTFhj+KuCBDmzvK74VgYsCxlSR4FFcDlFAS8kgEOsojPlhVHCJY23IeLO7S9bHCBQq5sEe + 6uC30juiE/m6B/XibdviH+Pgsy+P6bPyO4ziZlndqxp/cFGkmg+MUwmp0Ca2s9VhS8+X2F710746 + pfbCAO/vepfw/IT4F2pHH24eFkfKlWDfe9dZyw+xdhxrPlt2Cttbm/pR9Yj1tk0vMHdtcY3svWQ1 + UUwayTJZ3WOVH3lt8ThSmuuz08uzE1lEGocuEnWdDPbcr7TgU5Q+EO8QvmXXkXXeEshAFyIUnJ2a + Tvu4zKA+Ys5HhInh6VijYAjrAAZHdNdvqt+KyQRF2dVCdJAl5qpMvFaqcHP/K271I/ITIkcWlsJj + dqPRQ/VJ5dNdDEcKh5RhBbTvVJu4vicOxeZuLU/SZJMtYHl3n8SVz/1RSQGkw+yZUL9Z5XdZyWmz + R7dF3/ciCvLlQ6IGYj67a1TVqwuuD8g5eyF7dfxAU5/Hp4J8vB3zuXzImvhcvcTkPZdXJTTpt0xC + DsBPFDWApws/D8+Hb+AevMRo2/ciCimGjs4swOWLTuZptoM5Nd7guoWhWCO7kJlOYxPC4EVnulGM + aCch4BQJwBat01Uya0sPFPCY0rlmG7CgJ/eNUvZwHljLaA5PMl48c2BxwBgWNlqLjohDCYiZwwiI + YUoWmH+z2c4Wu9rEn70lBa4vM/MK4wLbuOxtzOyDx7EZtlgqjxJ0sjctjgtfRUzsapsVbAiH8KN6 + qmsJKMZnLDZ4cq/Euj7sj7PXZ7kBcUzers8lVk12rKjII3gY/5ex+4ulwMeOOLGQOZFs1O08WQkL + 1KJd1pZIqI4Xl7+PnqN63uJ0kc/YHi7qFcbZIi/S0XI32/oKzQZjjyCPgqPv8gypG5CsDAxlkwik + Ac9hJ4PG54qPDd/Bewb4MuFYgi1PJr6R63kzu8Nia6FJtnMUa4WdkUH9Tusfk2wHChDCccqoi6bk + ES8TOWBUsW+3T4csdmpMApkWmQq1vX2meSyj0pPTj5d56XveRNv57+KWT3tctlZ6OxwpGCEBMQaQ + sqia0fA1BPLYVnOXzoj6TKVJtvz3TiYKCxgE/bLb3cb2YPR8h6IIVulQoFGSL8HC4HpKxfWPpZvn + D1GTy6u0sEws7A1xJsZ0EL3bA11T1eu9iKzJ0gpv70VS2yfVOL7+wKIWnE50u1XAXkouBezpquRU + vPzgsdNyyB7z6EwYmeDFmGHaCh8xl4lh2MfqNJ3DPTWsTnLl5NdqEVci1+QUVIgrT4rVaaAirNz1 + OPyihjSvjwnfx89ZW+RF+ZB1dYx6iVkcI6/SIE3BnM12m4H613gO7CvuhuExmdvq02NHVuzC6rKf + zXS7ZcWukFyp2MWriiH0rJp+4pQ54b0XYyQy5OGI88hXqNtXitPwDEP1sCVdzSZsJfRbUa13dbdC + 5IGM4v/vsvndbKRrONXGQ4otcv4W0L7Sb0iwDOYPPPvnahusnmuq0Uk1CURIHiYrBD3YlnEtwriR + KtSJY1RnK2hJbeQZ6Eswlz23ir5khbeRE3UiNkUUhuUVfLdLQNUY1/XSPoANDD2VWEwNKAyjE/Qy + N4l71WHRBLYRBTZv0EzHJlMb1uyuQY8qSJcZH5PZZkxjARb812z9+aXkuafTbIqHGSkYYqZprIyN + yLYRxL3lLkJYazGhSqBKhjIB2oUgGhVo7jTHCyXQhJCB60ZnjDiS8/4nSFYWo0WP7B9hW83T48yT + VCzVkRwJ80nsETCmNJY2DhrKuaUkDnqqHY617bMHFDYq+yhvB+3syeOCjqBYkJP88OpvlU7rOZTW + LfbTMS2fRgF1PteB3Frs2tYuqaQPufuUyFgz+nH3vdu6bkw9ZKtx6JcYGoe6SsfwbDmTLt6r84t3 + Q0IEGs9nn3MOTGl4e2HAGQtPBo03noOsAQoURUyRR0VMcOQX/D9rKvPbrOYzTLMfIac3/SaLBeyW + 2ZEy97lmeymDjVwKkBTbZauk/SArMSC/+N5+a+E3tZDWY0RILTAurTSHtdBr6XZLK01IrlhpeJUW + 1O/X7yvMu2Ci+RUbzWNhEDgjOMZEiByX4EfYqkGzEBHfvHxtXC4dlEjPQgHZpF/SpdjjMSe2nMH8 + Ut2rbrhPvqRFEK6RyJBcTvGAVRqfECMr51RJ4GYhlJJJNscxm31JQeYqXaNWBAqPtuxSTfCO+g4s + w5vZXMwKoUP/vrnnFR36ZjcFLWvy2dQdY7c5OdmDXVolJxehRkuQ5SbiaElTbJJXzMIuVw8adi/z + eIMWLTyUbgU7p1LDWaVzKRkMqM0WKF2U2MFfdZYMcOloU50JZuKjUwCDKBDbCHFmdJcSqdiD2I/q + LO59Z4qC2QedtMvzfRXqKtXQjykkI4dvT680N8rFfUwclGakT+QzrDJ9HNjp3H1kF9qyIxz18P4z + KyZfuLZu9OZm04hjkqx9Ly6O6CRZw9m1T03dM9uOSolQB7GreRPexc8dt52iK5+xZk6QrzCpE+ii + jDEVnZ8KbEaVduXkCFfbLXMCodQagtEDBd1CCW1uQcsixaaZMLUF+IrXWInaXWp3fAcnJEtoT0ng + cciQB79Bq3QeVcpduU7UolJO3G5XKUeSy5Vy4qoEF7x+U3VVxmVXpf9ijBDoPhtFMedcplq+LR6X + ylzJN1zCmMPpqIBzLzdpD2R7MSgLcIZ28wg2iDGQC2XOW2mbMUMDZrVXEU+9KNbAUx+rBqbfqu4+ + zwkOCBz8DUu0Vvfperb8jXgrRBFYstV7lGTmFNjqcjhEIFI6IV5qP17xDkmBoUO6RFInUT7VAAou + z/lO7JWX0zV6oP9MhCP6epsyviIX9Ontlq0GOKW0Fy/m/kB+n7Y85feLtVJYRBZpPQFJqWMkaVyN + zfRKR2lfzHdcVmxMp8KDJxkxbaj+6oxoexQhmVhrlX4+mNLePJnU3usrpnQWRLzlMZ4/ZMuVrl9i + kKWrq/VQRzLBMJnD8btbSec19BnqN8OPuzsWeoMF/cN9F7Q894j4mVZ9v2fOA7xMzKpkM8no+RbU + 1MfxQnabzWryBIrZ13dbMfvC7bbMvii5yuwLV2WM8ep1DbOvG1WYfUHljaORT5B6whkqIc1FSOgq + WSXQbBjX1/DF1PEUFFxPa85qNIBulU5txKZ50HRehxFzvah6Xivvl+nM4E1QwzGMGRi8Tee1ImEU + 2fO4zfPTOuIe4xQPHFbxSlwXcX0DTCUtHeWF5FrjBOdRE/FuHDo+V7FHo+Rc4DvKBEqtaT9Dzo7d + ELSru9lJ8R2wXMyMBNOFEnAWl+vaiwmw2WZBLyQ+LaPx0MR9/hnVE4NL0BFm04c5prrMH+YYTfxN + bMHjGZoLa1HHLrO5srUiepH14tuHdbaBh4pDpQcGbr285KdmCPEdG1I9xAqjYOitxkgdGNAw6Lub + HTKSPywT+B0UFLRHF7hzakJDVEny0Xqp8+Zkqz4lK4+vxtezrbcai+muFKUBLi5NtOsxn3A5j0LQ + 3Jdjb5O33ajGxGGF7q000q08H15oJF+r2Zmt75KlAqZW6r6NujWQm4PyHeTbRz/Kzl9CQ3JDClCv + qsuLiH6Genm1DPv1I/kAH1wPZSa4FxeFWG7nrTyNPb2iMVs6ItShYzuUxZy8j5V98kDD9oZniRjo + 4gpMMXtXA91upbFIySWNha6SxvL26o1XIQZysSawqLEEL8ahFzPXHYU+Tq79GX7LNcj/L8nw812P + EuT8gJOKns2xEMJyRxWVZbKcU4AGfHuYp+hTPaZuQRb6pSsEk0itCgVqvcPHFhqoWS4zWa9AE2oR + IxW328VISXI5Riqu0iz/eH0tkGlKUVIPcW9KUdIISXH8UeSFsSt1848GismVgC+bz5C1VGktr98g + 0Eb2TcW1linOJmwlOW5kPB7uxsAY+h0XwkOCaEIq4e/jZgNtPID7JCFUTKecHzfon2CA+lHslteP + 8QUNXFW8KWfPkKmXkpF2YK7myDkgaYC9N8beU4fAGmzumZhb0HvpLQIw425R7EezW96ts91qeC6U + y/Nz1bMvBUyhCA2Z30zpc/NNhtk1GAqcwUyUZYIwfVNRkTCgSaPjg4FDtBq9pGsEHpOpZJXktya0 + xh7SP2pxbbonjrQT0eAp+LHIR0ezRnQTVY+82RMVsBuEuSBRRieyALqRVlH161XrYj6bB/efYo6j + KIgLGaD1W5dVkzyXIq4Wjz++Zn00wbITOeRQNPvn2I+LZHXZlZF3e5DE+VHUB2X9MpmMYGwvpbRI + idMnVKccj3iRYhLlrM7qa4DJjGPFLMZa+BDpdltmMVb1IdJV0lXe//6uhlnM4xVmMTdkAWcjWGox + j3JNBYytsaJRzImsP88EVFnRj4MOicL5gzmM2/t1ijflQ483oesrW8NxKsv2NhLlcLLezbYiFCQO + TqNcEAdLckfCWfs+27KViWEhwLtBJtK/a3Kt3J2OJFnbFSdKYfjJVfzR77O7HsKVjMXQpWFwbLyS + wYqBeVMpYfh4eqm6vJ5fLXSaqNDi0POiCmPn/QOmDEgXknYrldyFjXTStSIfiQS00Dk8BFvELftY + 1ZREMKSMTqcidmXZiR14QdTMAo7k3cG/Bn/liT/AHSFnd3Pcn6cCwyO4eIsRtzrCj5G3v6ExOVjr + V5m12xeUHgJx1HPnob4I267e5HHZWesQUlVCWC/EDDCTMTECfhMszZUB+baSwQPsGXhAQ3oEQSTn + Ze49T9bQoTAoNr7F/54gfm82gxeEvLiyymdXa2leUdoG02PS33CTRVKG9FjxISG41x2ydqZAGwE/ + gTHAAunyO+pjQGP38jPl9hgfpMcj0tnxzDaSILskd4aOZL96dfkqehW0pMNRz1hCiehXFKFE1EWJ + ZjiBxxbE3VtkVWq6XpTqgr7CIiwKP2Lp64nTGsTMoRFWrew8UXqCoAmiSGL+rG+y5VjT2pYg1UaU + QkecqJJ5Fz8hG1+Mp9kys0XUUtOJSYc0bxN2odstHdK8JuxCV8nIO/3bVcXIw22p4o6OYwRjHcVx + 5DIZdrkoHc4U0tdHbX5sSoXjZcmfWqgJKD1HyYYbM9wv4sMbTFkmoHqcZ8ISO/28rqEpqKmGEXnm + jTaCGzrcqxhQq2SOrrSHee1mZAj3nNhKuDZAij1glnfHYYMnPeae6zPHwpJR7a4YMgxGMGrX0Dq0 + IIm/eRB5xohghX45k0S9OYKzh6MT/lI13Nj+ixNBh2iNT8zzV5OK2vjdZ+ZL8UOCyc3J8vPDWsQS + EARuM8AVl/vyQz6Q/SJOb/WmgqVzTN/bKKna9AiYoXnBVnKXirS+vaDLzQm0FpU/TcFynKFN9pU5 + r608gEeIq3eQ91LqTiakrtZv+/j3qZTvsVqn8HhPoN4ui2WEOVnPH/Ku7FJG1EuaCqdsq//MlrDE + srZwqFqMR21JJg2nzo/SplkcGin24wmWYKIedD2WC2me2ra51uyPZH4ZKDLzDj2o9CouK2dg6ds7 + z+l2y8oZIblSOYNXSa+6vvxdFMKY3nPBhmGWzvzqMlhO4chlLPTZ/nyWxRpe8PW/I5/FC7gjjZNO + BQJqKriqLj5so2KL223r4sMaFVtcpanw6qpaROUwNJhKKrbLwSyCmcAD5smMjzdujvOsjBHUUK6S + abAamVoLuoRLuOMFAsb3/NXI8Bijixil4ParXWV51Rt6fTe7G6o62Br8jUWp7vAZXPngifs/hPHJ + KNd8CnAZw2mG1bJyIr9a11R6tQ14cO4EYcjLc/gwLLYR/oi8cs40AikZid6YHuK75UTvQ3yrhj7v + elGDPt8gvY4207A1/JDtl1iJ20iJpRlSEuq1E6q6GFTWrFkwUiG4hwQPfpKp/jea6n87NNUHuOy1 + ns9dmbPTN1nvdyCZwNErqkY1g22t2Ds+JQvs8+sr0tyRCP5rhFbrd/TNDSw6uBOPbUGIVxTSsfc8 + 7sXEXFqIR0zXO9scpx8BrUNWihiKNmZOd6KDvcvlOLqCXn3t/dgKLJAkvQe7ZK+XvC+9myrW336A + sbNXtuh2K2VLSi4pW3SVlK03Hy8RG6+gbTEPrH8PV3FR3YpA3Yoizx15oFLLivVzZZBq+zFXqGFz + qkXogP12PUM30Nnvl+fn40km9qovKYz7PN2MJNOqVqdhtry5yoH5ClXBQjF6s1h5YUUzqhNtVn7B + 9zTmlzA/jMOoP8TNEHTVsELd2pfpUN87JexL82MLuJfqYwc/cCgHYgrq+rDICway1biYio9I0fkR + t6dIvAkQsCdf1NOmkevH27VPymHY+Kfj9IIh98pTKZ85an/Ye7qTx4tidsRp122/F1Xyf/7+weGe + vZ+Fbrfa76Xk0n5PV2m//3D6rgI65/meaVx74YtfeRg6UTCCfwLnADB4Ngf5/yVuFjC9PA0MHjqB + Imd3WmC90+225OxOFeudrkpy9j8uGW6VZXp2JG0ogc4E3I/4KAh95S25Nkt461BOhs8uLs9ORkb4 + Bu8tIPEYxaxSlHoaTb+S9HT5Bcy2FVY2YyFHUXD5FoSEW6QS9G00LAGzXGYL5st8u4vZJA5UpunF + bgVdUu8wUZ9nek0aiddjz+MYXCzNyMLXy8nZ4C9BtICm3M6iaD1HLz5cj2+glbi3oI29RSZajXUj + IVpMMMDmhNTaNwjwHLV9PbtfXl1cnmgH9f4XNYIJNL+oI0pPrUBjAI1ZJ2jCZrpU3cyujZuqrOrf + Uu6KupYHjLVq+fpwV7QbxArm9/6RY434SrXSN8vD7W03rVHipeUsayd5e7iph6bt4K+2Dw7oUNCh + AT9kPcJGeZSDtz5WCsEQLo8VI5Sy7bFIWEQRX7f5NuFiWYnV36gn/1HiYjV8TRv4MdIJwKvKJnCM + SAMioPv4HAvtCmeAdsrVHiDWrsljccqkHJ85PNJrsaOQwHdksmYzUcJxTO5HOjM9t9Lrlk5Umycf + k9OAxUT7pmHjO2RIMAW0ukdX3Dv9lZERKmy10A3bkb2qR2xx1eQLDFQ1ukYGg86NHV6M4QxazJYC + iVMkXCm8tQFWYnyD+XeZfuPRb7zYDkGtxxgnZDW1lMT9wtm9f00eRgIVToswMqQWnVrtRXZ0+TzN + NCBttipgBy9u4Yeg2y3zaIXkSh4tXiWz9fz/vDeD/Dz0gtgNeDnK/yvz3CBm0Qj+jRyVyW0iO1TP + LKlrbeDaXCNVKR6zNTTj62rQRcbLuozADfqE7tINjDeW/GxmuJjXsNZl8qXkuy6CBMxA1ozG5Or6 + I9eqGo8lWIFHyYV7gQX2JSd6FIMsPC98oeqtVsKeRKF/4JZk4PIUQ5KPmB5gq2ZFXlHRae1NlG5A + fJyqd3TcuBWfOQFVSXTIfOeZwHTazrY76XhvbmTx09Syphro//nAeGjvjaLbrZa1lFxa1nRVpXF9 + YpU0Li6AsIvOKP5izCLOWThikccUXMvlbktBbhX3xbqMh7lAwTPTGYrlbLh286B4soUuXKd5veao + wEMAf4SnlwJYGSHrTj+dCvAX2hiuV1vmdEqzKdiUEQ883w3KDiPziw6lxjue5/AGjxTjLEYAnMb0 + mnW6yKbpvIznErhuk2EN22oY+xUXg5FpcDfPblRWtXWNMRaqHnrpYN+oq+N5rCGUDTRE9YTw+4wk + q5+6VQC9ok18P7u7hx8nGVjS60SSTWBmSzJbi3z1P06vc65xsZDXeWvaTKSBmP5qL3eDgCp+j8Ej + dN1SbkZheK1sp4j5OlR9RFaL50fsYCaKbYXpSE2ng/3QYIXs54HF1YN3WSw6qxMjcggm52LcRtLe + 3nR9SStdmeDW9Oty02eOAs/1AvtNn263Bc9FyVXwXLgqcwjOPrphFT3X88voueMQyb5G0OpQ6nEX + 2XKck7wUNC8VmNERHxnwnyzcasD/yUWaRIHLV1RSbN3UoeM1ljC5rg9Ky78G1p01ECOSQ6460UC+ + Quwl9Y1rp5i1FVazsJ+QQcSYhi+PWVsWkvwha/hy9RITvlxepZXhj5PFqhkWw6CuL9asIkt7+6eM + Vgkj3XWIxKQbckOVZjtkcserKc/qbJYjs2espqFwfhVT/RTdOhwO6y9H+RSO5igp2ETfE2ogt3k6 + EbNbMh3Zfr3LfErq2TtHG80om6FiseTfKgm1QaI9KF9tFlQtc/HBaRP0p9vtwF9Jchn8VVyVPDNv + PlVC/p7L/Qr4a8C9OPRGIvIvoaauxwkcMQgdjrm5M8J1KBI/SL+HaXLPlss0d4OOJAFc/b2K7IUw + NUu1ojfIwrA0ye0EizEs3JnYMR6Gd+vs6/Ze0dyk22osf1/jSql5pdh+EZE+RmveraT6mQ6LEjBV + Y8myFzgxQiqVVIqD3V1rAMKUKdMajsow8sYLteqx/31G/YIfOdYvGfw002aAiyNnzPGiHsgBRVfh + Iwd6d++++iTcaV6NO620fL5noKUXJU6ul/3jc5DjxmIEjimsY648NZjTAqCQbrc8NYTkyqmBVyWY + 8ptPVchwjgUm5qnxq8fBQPNHHo9DXxpqH8A8Xabj/8xWq7TqgNNemZFSwIQPXJUelVwF6FTfzW93 + a7OwXCALaE/fBobgFjoXjTnYm29k8cdGSUh232bzmUBqFoiSm+HZzS1SaH1Mtzyif11GWRH4I1fZ + YfCL162YLk+cjsM45soHl+/1phNkktXAzJtgzawx76z4gu8H/Ff/2upgFWhcS6dW0GDEMt+LGZy1 + gw/p7qefSQNcSTojFCxhuQUJdbm5t/a43pr9fz8BWmAUkIux8Mn6nN52LqOLnUgSb+mN/HipLHYJ + mk9X4h8v80fA/bUB2msQEJQFTJLpYrZbDA9qJH2khhx4uql8ww3CUPnSuyJjOzUrqoRK3FpmIdq6 + f/+3UzR6KJjr6mLeX/cWR0Zp63QGM1h7N7uQTITMkxBxZ2EYPHeCNp43/YwlRJx+RREiTl2sZw1U + jE0rDOffZNOHvKsLDOol0Dj9Hu57jMXCk4Ys2GLipRtoEByd96rU+gAPtq13xWcBYUqKtmEQS+L3 + JdvJvQla+0hesHonUhukOzUn/P/dqFnBGPzfc0wZajEt1EO280K/xJgY6qrMfVKZHatNupsKJ/6A + /qdaHSgma8beYbZTOypr9ZAtl7V+iUFmra5SmxfJPFsiP1WWjBEdR9vYRo4g/qUMffh/8eK4dPu/ + wL6SIosxsI+TLSstgULzcA0EAaV8BQGlfN0mW5i3tsqRPTd24Lol8QeP96qnuosUCyWpnzgsKEW0 + jcxnq770rICgJdN1diPRk9GjckwK3mM7Odr42491mrjMJZ3DdJoILR0Ut8IsESNRcmEjkc3+aLUb + cQmluU3mD1uV49CFPooJQcbSHe9fukd4wx/ntfvVxuOoj58cTJg6OELJXeG1467w7LkrvFruCk9z + V5x9unIrNYReOYLvvfg19hlsZKPYd5liwL1sDkS/HN6t0xR+n+8y2FcmRZiVZ+/eXp6MJfCiRqog + NQUB+zMqoBHKESiZCPX4oFI452to+n9JxannYcp3m3jcT+CvPcrCUcuGsph/v2JBi2VDt9tVU5Pk + cjW1uErL5vXrywpUmSditaVq6sDjocdGgee6WGqEy+b1jFzV6IRAX4Dipyzw/pXjJR9320+KqQ4u + FcDj9SOyJgxz3nQmHG5I6ECbFt54n35LxsKltYJlkuiXb0qpljmJG73iQWK8TmfF8L8oW0PvRzY3 + v2UjV+zr6aoP8hfPDzhGxo7FQjPk5Mtef5T6mLE5MOrvJbJlY2/xoqDprY7HYvyzuUdMG+dBvZeV + +bHfGISEBvjohB1cGpIKzX6pBvI/wjFqOYo4URobugGZyeaIOfeywzwf4NrTPtggigeiawKxOzX3 + qQW4Vz3QJvlQ8/7JJ0XaihLlv4jjglMqxiK5w3w36VnsqrvR2ddxhdp8a3+8Z55HVu7NbPPM/0VH + JE/GuAA6tw/F8lqxxmr6YSCyLJbHMcwa+7QYut3yOBaSK8cxXpXH8cWHaoDTx3ow8zgeu64H2+TI + dUPXkwFOdIpKUDDjAAQD7j5boBqXYYH5cjr+N0w+UXp78f7N/5yM8K4FspAKCw8scbCjhV+UTmIt + bJJJJ/OHmYgukb2Hu7B6NXlRN8NVshaOwUQbkkKSeI6qvNN/42laLBlfpDOEDB9Be7fDPEkUv+BL + epfKFHsjseb1ct4tEFosoece9xgrH6SFznx2+unypCH+GbMmdoGYhwhOVT4qM2RoHkvC15t1mnxW + GfXIBdY8VGZNgtMErqm+ZvDdJ0OppP/IAR7gQtBnI5hquB0zl7LiocPmAtvxi7Sukrvatb6vuoyT + y0hWNMw7QUVa1UUcCGw6wlHXdloM1aBZHYH9v6U52MsK3VoIVbftl5gwDovBPZQ5TeAoxnTY2WI3 + b61BhE6eagv6QC1m1v6Sd8l1JARMZ7iBW38akT7EjlaAkiIgrZXVmOtRvKZovqU2dYwu5vLI0UFM + ucuc/70577UZyq4v3uE4n3f1u7bVQukg5gBs6NHsWkeBfUq9hjsS48vhYQtwfHG7JcaXkFzB+MKr + pNf8+fs/q8yyAfMq2PicM88JRpxzP5B6zftskWYEsTyW8Mu6GNkooRSkfph3Q2V0sGd8nCykwgG/ + EGVEYfHfZN+gA569OXu1ORlKNBxdLKfjmuLecc6SKWpfFIUgnWwff3vHYJIL27TALTjb1Ep4CQbd + Vh5+Z9MJj1YFqBYFSPetI1z6WV5l6QVe4Lp1io2ai4YqE4RNTosI7HEWVlQkHY1vHIkG1iQ/aHQw + GI3OYbOsK/ZKWWMjEfJAHcCsVAqbOaFqG2C+V8ksTCVDvOs15pAp8YP/pkk9wNWfO4OFowPmAR1i + vfB9WqpBP0Em2rE6iph91RbWTFlbpc7zPWrSvgF6FB2orQ+pGgj/jm4q69yuWsXjKSaFiY0aH2mz + 0Vv5gRyfoKPMxtpUOD1GSfJe1YmpLB7O2rJ/ykdsM3jkC4z8HbpGatB9EbtWRp0GCLaRrtHAhnP5 + rvCHgkTug0bFXBGB6ymHA+t5PbVNVaoWYdevl1ihXX66ruQ+6yH7JVLtLdviqGIQTiWE76/AVrf3 + ldLtVjaFlFyyKegq2RRXV5cVXymLynxbzosxh+kaOSMOJ6MvI/5XGnkHtYpLWgOiE4T+fbVeVR2L + eoShP9JvBGrz7OqikC5zYsbEWaNGzRxoShiz+jAg4mbayd8TqCvIz1V295ex/8sYhGvsn8YwIEj3 + G1ymDMbA8SqUpK5/DbvJbIHjmO/saoOpOjGDlvIF0KCKfpVCrkEZbqaIkRshMte/Bm9kn2JCU754 + JgoiVYyA6bEU3TUsd1fhgxDfCFuFyjg2b4BzUqMWwP8oihSLPRdvvF0ndyJr1iKK1+RkQ45zvBva + RY4T+hBYS4uFJO9EdV6Yk6BZ7eD74ENSwm/1n0fX1GbxDnhoMtvIRb7WSI40cs+ur/8Y48VR/tho + +EFePGnjFgzInSdU+MJia5fFxohJaLPMUI78pn3iGtrjeh4PCzroWH3zTTo1Z5kenVGpt0dybrR4 + ZSh0kz88CRjbofkDueiL6nPTRmF1iuIOZZxde3Y2W4GRnJp2Qh7BR0mwZNxVS66bPu35RCBb3STb + yuHGYv2R1Ofq6HZVljeP34CG2CYxXT9jm+OtXmGkeMuLdIyv1iup4f7h/REMvw3/8HFbGhPmsAav + LiRn/+H91nyjwga5RLHFp/A9lModBUIXdtw4Ki4lsfI3GAuC6TISIRHxW9qAX/eYJQeMiDpk6YbN + Q3DgUzbn3t7p8BFq1hDT0+UHJ3Tsnch0u5XCJyWXFD66Kqt///hbxYkMy7SUqxZh9a8TI9ET52G0 + n2D14+5z71ld/Sdh7vO8GHWxnteEFI9NDBxEqzsrbPZ7EJheijmz2yrkzQT+o1Ln5kgUPt5AV6Ya + EV9jbRfiVdNEgPUIZNFNHbRoMwziAAdbB4DjGDWpbp4onEvpVxGxrvuegZ0N13dqkS9rbd99utQ7 + +RG+j17SUbksWvrzDSy64Gx8ar3M1QNWC11LLy11db3CnBv6Jebc8MXYY5E/8hk7QOyTzkHmZJz8 + pROt36eYvwCzCK5kU3KEotv/z18UKCQuEzgYJduoKJG5g5aCWiuhJQ3PvwA2EbrnBpb65LMwKuCa + fFxpdNRrnz6csYLzH2SVEjKhMTIggFP1J2kr2oHT3US2b50mRCsrUluiMRZ0Z98eVpsMzsqUUPH+ + +PvpcLZeJ9NZvi5/ko/9/9r6/7X1Z2rr4M+rt2zMRJPFjzz/0c1/9PIf/fzHIP9R40s6cUwiFNyk + KLlTv/LYd81f/cKvLsUy9K+hSCxTv3qgdpm/RuavxReBpOKLQKX0KGJGkVLNFY1BY+ilBPd/tFIO + ZFo14aK3i6S1r4jsN8MnKPg9hM9b1I52FCXsPgwK3asZ3y5RyHMpmdvi8cdNEHIih5xiIKEQcz6y + Xf25GgJN/OE9B0WxFe8HPmFN+yHEm6wfeEl6+wt0QypAVnctl4QAop70E4TS7yjzV9so+d87NvQk + l5uNL8463Nbds6emJJWqnn5w2qBN0+1W5o2UXDJu6KqiGDgLyxSmLBbs4EUrx30x9kPH5SOYRlG0 + 385J5iB+8pe2cnQ5KZ6bOWYFjzRmBSzY507QDrKCnrFGrJCvMAEr6CINEMw5hHnMS9ZE7Ghj1msX + 3ZKtHyi2g/vo4xLIFCx2fQpq5AKNbaAH4Ck/an7BJpl/wdzszksb5BNTyuphPZti3Vs/zX+8HIO+ + MRzKu7nnS8ICmynSBw5CP+97bMyBXBRN+DpRI31VUCHezR8m+AFYXbJb2c4ctcPECveStUifpttt + cS9ZNX2arkrP94frapU2Z7yKeykIS0Ye6oUS9WeSrG9kxBtDmjCom3QpYd4WCZpWOeyHdIrPN304 + xVnMPB4GlRwHg9csEf1iiox42YldPo1KzW5goAkrNV/mYQSzIvsmjMuaLN7AiSuEtjDExotHYCj/ + 5wFZ36jqtyzQJFvdbWfzArkqpiHcIivqkkqtaJyGm2y3nmBBsZlzC0b3v3FzECh34sbCgMo8POG1 + z/EnkLpLE9NthtMdLQUqoEOnf67ZLeB02S0GOM1yUMiAKFehH3C9VDqrnRaIIMy0WGei/SBKvbyN + uCO89bFPKC/0IS14s/qFuPGooKNxCn9Ht3+Pe7LcKl1Hp0v67/lz1oqFIn/IOmVSvcRMmpRXaeuc + TCcIF6IKZAsJ5OlqM5tDLzzLB1UFj5OT4bPLj+evh6DzBF4Yngwanq15FGsQePlx0QrKxOQhRZ8d + SggpZGRP7tPJ51U2q0sab0wGkvZQrXPIWkrA3JxeNrsRWxv9vIHtb1TUxNDXbViFx8KB9VWKGdZK + 2UcYaEnVdEx++YH8FlJgiu29zdafD7w0kuV/ag6WpmYh1L8ftutJOguOT4SX9BmiCEMcA/BYqYua + N7emBXKc1P0ePDlz/zNbTrrjS/SrWIexMTF6IQzrCaTBZTp7ib91nzthO4xK9ZB1/pJ6iZnAJK/S + uYLeW32QP1MHwbuTwVtnfErxfX1xkGxXdBKwKIwGBPkSKRfuMKeGmIChMk+JWybrzNKNOPhByfSE + 3u/6KquUJ4fXvZKEj7VwHHij4+S+NaLm4J9l9crbZ1lN5qC1Vft9mnNcIuMRQJIVZB5L0u6OThrf + oeCJiAzcpUuxkLvQUxxAaSYA0+pbascqt/rXmU7wWaSwGyxnxxR3QDsIjalhtjzKu9U+xyUYDfda + cDTR7ZZgNEJyBYwGr0qOpj+uK6SIXsQq2HDjMHY4Y6Mw5tyT+XYEMQwm51TYjJvhH1wmPidbCTMP + Q4rkwUSRtNtUSRF7wkTLm4JOxf1OgziOmmlrg4jDd5YZLarSK9SIzOctpVJXLbKp4IGtJPphNvye + XmCgrZQEbvfJw/KJxopoJW9wWduPRRggc9DxJaXBBgtVzYNR/gffwT/4qsBAX2cuXi8mp+NXbEYE + wGaKXa3TMf712aeH9cnLYV4Xh4x/a1g6aTIafklhU7pZE0ggChFegBuYCSkcCgOc79r9EQZUpuxR + wS85enLdj0oZGsbeWq3EiSH2F1tBB2LBtGtujyyzoOTjbasvfASRTaUUjBH+J60Ra3F1hagdRbU1 + HOvr+I6uUcDNqmH2tE9p6CzscZrYMPgsiEQyzlA4NY8yciKyfgWIjg5v9uEDc5UPzHvlPWeslQeM + HrH1f8kXGN4vuta1ZFhKREdVFAYDQu0NYvJ9YqV+Qy3EoXLbvwKauoo4u7IS4opxr0UlhLjdrhKC + JJcrIcRVDXZdrYRwI6dSCRFGoBLxURiFnooHvZ/d3Y+T21v0jCGnfE5iZdIglkCaRyJIIFS5JYGO + IGWyfHy32iaf0+FuOYVf5tlXdR3m2lSc0puX5Vz/+YNOsQUlofDMPP2SziVeKwI0T+kOgc1q3kKq + 49l2XY1WlRGmDRUyagS4BQ0W8zDKGqT5lYeoL8FGiqKGYlTjBTnZNskX/spFleSyjMxTFTf4ywzq + AKe2UsJgVvfBfYnPE+R3d0cKyODkr8/HqjMVp3RyVofdUtOgWJSe3Ld5PMequMwShL0WYfZpYK+7 + Ye1Y9OiCcHzfKQ9SN8cs7gYFQcVNpGV7mwB6eES4mLg/GGd9pyog1//fbzl1keO3Zy4Sz9gTF9Er + SrxF4iIddvfecwWBMttsYYMfvvcG+Y9D/PtA/AezNrFUTOwZLhlDOb4QTGTobwTkRlDvjf71t0Mc + J3oLcAsqPilCRSGWk9cJo6Akpd3MBAFG3aopyO5TfgToSlc1cg+ykt3HHh9Usg6z1+Taq2UVEAjj + les49v48ut0OhJEkl0EYxVVaSKev31QAU9zYj8ogjOMo8H0/GkVB6MQydn5pJIKtHqAJGrI8AVUk + M9IVL68uL08/vaS/NOaQnRR9R7ez9WYLY5eulK7yyxSxOr5kvwxXmLqyJx+Q6FKlPng6Tfdgtxxb + 0rv/ixoykRzvQCaS/EAcyCZm2oCVOG8/Xo6K9b1g0MZBVAYu3NNzZSdlwIJKKwc/wbAPcFrnbOnM + H8iPEQv2gIhuGQssEkZk3lIYDEvBjRkYvic0o7s53LDANh9Ns9YTXVvMiBq0OEf7IG1jrHgM4tB0 + bWmHpLC+2R1wieMjttuD1Xl7tNDHbXKji+4nSvFVKnRfyQlUXPLmCmw8+0OebrernSfJ5cp5cZUO + +VdvPpZrSziDL6xW0Eeuy52RF3muGxyool+D/JrqkqfGfvSkqlRAsRp0rz1ov531QrncsylJ/Gav + rljUwlNKt1stBym5tBzoqgQevzwre0pZHGBUv7gcvBe/+nGIy8GPoyjejxnz580a5P+XcPdh5lte + bOXGkueRR5H9/ka3W/I8CskVnke8Kksh3pxVeR5dFpd5HschDGvERyHzYlWcdV7Ixi8k2yL+9jqb + C+9kTuXxUjKhJMPJPFmsCPvhKpmykMC3X08nbAUaa7LF/Px5JnyaICkT7DeYYzTdiURMFCkLK9KJ + eyxfDcOMX8flPeC6M1DCfDj4StOmQLShUF1Hw83sDhNbxJE73dGkhL/u5iIXBvszz2NOYHPYbEtz + rNGHHYfcj9xyAgQ2oskS4n4jypETc6yxL/vXtQ9oM5vDM9hkGDadM23iUnpNzvsY9gYeekSuI3tI + ID+ms4wMksn9wzZdGpnccv98qVMABS0S8eogZKNAUdAoZzS/xmKijMUMO6EppubiZj4TQyzm5OjQ + tLt50NNX3LlWb3o5lFQv2Jz73SIhEBPthHu/27ABLjVtWPEwlmnr2pciu6Bj2nrfmAbakuICVMGY + QYZFYeHoO57Xx4tM52P9xLM3D58WIY6VXtM2JfLguLhORKBZxb1bTO5GeLtK0sWPQ2jvA6HLIyaX + 1x+4E9grVHS71fkrJZfOX7pK5++7D2+qClUcmzzLbvDi1xjRRUewHyMo+z51ajoH6f8l6hR3A/9H + RzQHTyOOp6a0zud3PbctGCk9YpvLL19gZPLTNZras8Wd1PzNXPG1BgtXa1ed5XMWD2zv/QD34hsw + ucZlnBixA49xPQ+ayFets1uspO0n9vI94ewzP6q9PBmnPp6m7NFThw68PuDV7hDwl4WRViPcfeD8 + iFxmUmbL5Yh8GrF6nPypavI1Hox7oJNdItHI24sZY9vZdifxv5ob2QLFpftL9vnfPEqav7iCDdLe + PqXb7Ur1SXK5VF9clQyu19Ugm+ei3mKW6o/DABfsCP6JIr7/hFyuQf5/CbqL7/pM5h32oTDlWNfO + u6gdgYt+xrpWTL7CLBWji/KE2a7lUH98ez1cPGRjTcddSAEZ7P0jyqD6MVlJfKQuwfyQKobq32ht + o/i+E/m6HdXUllbBHAGEhxykOvV/jcsCbBy7av+noODgh3DmG0NzRD6SS+RG1VHqJ4uovxfYngKc + C0/rbzlR3NhkmuojnUvtA570RDttDCe63dIT7dQYTnSV1v4f706roF9eidobPdFgMYG1P+JeJIg+ + cLfYAyPy7vTVKVJuJ0NQQahYjiBE5OHxx13CHy8dYrObTARS0HiTLkA3mqb3D9N0KP4RjcGI3f+9 + OH397PLk13811Fw5rExnPTq/LmQ2OC5WSVXAWzBQLuBIGihhfNd05L0BsVaii06W7NtsmgisHMlq + ZbwiDuPKK96dj4qMj+oVg2vVVcM9XVUcaEyGKA32XbJYJGPMD8hudtsHQfHyDGfASe0UeKmJ2FGW + V3oQHX55L1JaLr1JZlZscjQZwTWJQvTMGeB81lECzhxxFEkOgqJYBfdCopEeTHdEK7deHMZlD1hl + cKp7QoVyTMnrLT3CI1bJ8tBodJvDRD/NjexBeONpzQgOR/ahcOcrx36bk7p1nBKXO+363baOlsPT + 99sasx48OsywPzPqymMSHwJSXxqkjcRPSEBF24T+Hjhys28Z5UDgup9my2y9GQ3hw/Bv8M+l2Ckm + k3RFkCJtDlFfRv/cgLVhB1APWEYApfRKDJCu02H698trNzJOU9f13CjygkocMPJiN+Ij+Efg/oo4 + oIhu385SAa9SXH7r7HYmiv1FXAfmrCC/hA7BNqsMwz/na2jLX51VQFlkHHrVz0PAXiB5YFjI7U1s + ut2SB0ZIrvDA4FVZ/fT7P9HiKZU/CevDLH8aczC9fT7i3Bc5ScLGThfp8PTFbbJepmaqUzEtERdV + ITVRnsaTbPklXW/kYSxAAe5RnDwbxc+i8nYjU+NoHa5BIZ6JFQYrDndKERYCcbT5Ftb1SxmLA1X3 + XkTnZhvcOLPJTCCgixC06YuazjbZeorUzrIaKvvGnMq8NJ+ZLZegSNfXRoHF3BBbjSIs463URuW9 + cP7PYU2v1ut8sBoN9r+CUgavwZSk0kQWb0j2ZK+GUVPE3Gh4nhlb8pDpTH6zLj5gDcFgjiDZLkf2 + jb/mhBqIZaZLsZzYHVA/EzIHNq2PXFoYNy0v6ZhEO/jhnuIn4G9QzmBMb6r6rDs4L4gtFf1v6bKX + jFNc9MqhZ7dltOzE3nAMvVDjGManzHnuBC2BDNVT1kiG+jUmlKG6TGdXwbOyuk8OsT9rkVjN7Xvu + 4Ih0xFZA9KoTI1kn7URxmzppvN2yTlpIrtRJ41WJtH516ZveeDd0ESqwoir8GjKXh2wUMj92w/3u + +NUa3vBfErAOeOz26I6PdbDXOeNt3fHyGetwr3yFGe+li3vwEcqLrCgK3e6hozrkx5w4ann5joSl + 5r7bBpYab7eEpRaSK7DUeJWW16c3/6zCUjthJdb1K3Saw8IRCxmPZDaIydoHNhiGCJQylq8gWnKf + 0m/VGv+9EowJ7npmwf/leQGkOox5GD7WEkRO0bHaamUTS8BLZtPOKi0bXGpmxdw3KLhKSd6o0FvS + 01fbM88+Xb3554nqoAGOnY65wbuoZtbPD9BmRsUDqW8EmLSHo3FEMJqarablCzyH9Ju8C+ip/ZCt + AzkRqt9XmjlW+5leyN0oitUS1rkvQeC13Q3pEdvNUL7A2AvpWjXCIDp2noFGIT5VfMclnPrn57hJ + LjIMwzzLx/ekSE8hgY8Z8pn4gXMyuDJBUkFGwf64TG5ZLcVvocmYkgKSZFF3IEKVdS2svkg3tnOI + igV+KPRyVW6OzH8PnfN0Ho+K4lASzfejIcp7LhaG4tl0Erq/GQPdqeNYEFO9WnWcS8u5MC8IsfOI + UKVaqFwtVP918Jy1W6j0iO1ClS8wFipdqy5UM7NKKWZ5xL24ot5l87uZ4vNQt7rQRfCpD/jmy/8J + Xf+5wycD1w2Yjxw7YrelIkn1hIhBUPDhYjyfLT+nU116d2T6muvEtLrrw/675W02x2R31RQdCer+ + RjhKjK+T4S4FHT6kTktWqwTOkGMoYFyfB3FDP/6u+nGBS++Ifjyi2oygGXr73G4Go6+R04LAaYuc + Ro/Y2tvyBYaxTddIs91OVCooIijO0zEmKCxx9uXUlyX2OHXycdSmouBkYP/kp7sJqzyOTRAGB9hg + A8kDuRfq/3BdQzcmOzWFQbEjAA+14RRDsfYBWImBIo7VHAtkNCxzirY9pH4MOMkPOWP/wuj9x4Ji + eq7jiTY0rz7r2g+1LVHu0IcPDm8R8aLb7UKeJLkc8BRXaTt6f/62Ymi7jlMNdsYx9MCIOQ40gvav + i2w5RkJeQapbNRXfn34av9LqLWwgW9MVq5Xz98mWrcbwXw7/nd2y1cmomh0iF9/L4b1IR1mDFS1C + Hbrv8zIoMuyFpLJhf7g1hnXPuNtk3XthwGKfHV9vXpTTv5egp/pE3czBEx30Ac5j5XRwY8+XQF32 + qFp12kvnYrt92UY/gScETKyg9OEGwHdbYaFbtHRpVjRIqh5GvObhuinVj7nbn408wNJWNzZa3+pw + 8P93oziO4xAVyDaRIv2MLc+xeoXBdCwv0lHxdXsrWY/hJ0XbPij8PBr+Y3vLRxKSGf9CdMeuFwq/ + 9hMIZWqDgHJNzj44rAVmGt1udfJKyaWTl67KCNK7t6iYldJ2I9c8el3/xZiBkRc6cPZ6ridH4Dp5 + lxTdXW/JH8Hjz68TeQBe393yuHICXp++O2067BoPKY4E8lElQaOvQ6puYyjC1OIG0nQOq6ahL/tG + mCiFanjxsQd3joEYCZ1w6rPgZ/FYt9ta67zNcosV25sxNR53Y+wl5OeHsmTZ8WP7NUy3W5YsC8mV + kmW8Smv46vS1X17D3GGeV65ZHrseHAbhCP6Jfelvq4u+oNYjcQFEjuXuRlsaw5t1mnwW5JuiPp9I + N7+kd+mWMpUl/2YV40DwURSNFhyMNMFsxJfyx40ceMEZCp1QtnHgjRrYIYORhp33Kpn6fCU3G/yl + utlYKcPvCovZDSIvrAUgKTe8PvnLCd24aRODN4cu/Lkmy6w4A82di/lNG48TwLYWlxP8a0ZMjSeO + i7gwVkDWRXY+8yt4hSBWx+48P46DMqbJgdc2DL5B/OKDZdc0LnDyBj6Py8QvpP7CUsEv0jtYrROp + 9Hm8yc6AKRDFLKoPTf50i2Mg9gddoc9ZKL1tRyGU7EE+Ef6JznPQytPXA4IJK/Bp7v3S/XIeA7hE + LAOLTmxaUTaW4KNAnFi91ZHJIfs3VLujv48DnNK4Xl+xoIX7i263O8BJcvkAF1fpAL94dVnBNHTc + IKic32HkuJE3CiPmoD+X4mX0QRtKdr1IVmw0/Ho/m9xjLmxx49LqmfY+iEPz4mZVU0D3F8r1atrE + 3//+bvhMMDRkG2gmxXcw1peus/mJKhIbDZfpndi9ocekCg0T4312x1aYfgGTcr2bbRfS/aTgg1Gz + v9wSghr8dLNBD5N4RhMv3ma7pW6MWkS4GrSPfSSg22BfxuvD6/cubAi4TRNkFk72DYke4AzSO7xP + 1F6BRyE51f6SAaDWzOfZsj10K2x7YoO6f0AKdui+rYhrNAUsmw6L2HOi8u55nybWRBHtMZa6sqsf + Hf+oe34/f3Evm1ss64LBQm1TF4y3W9YFC8mVumC8Spvb3z5dlQENWRwgJESpLjhwXT+MRzCoYayM + k51UnJI5LKoxG/GxCiIXTWjayP62XVfRB6skIqYZUHI35GUaoP9xP4oq+1nN6+uNAMd1SvrlqEm8 + 3uUaUg7MjLqoEWmwVubvNjLjcoXyfpkCUO0rculk67tkqTIKhJIyw2rDSv1K6HiNzY7CKHJi2Kjt + Rru4j/8+Fi/V/abWivGtL8UsyEmC/nb1hv/28eITqx1NmTGC01Z7YzxH7qiSWqaa5HAgR+RAxt/R + OSiNuHoeuX73pWV0FB3KQGTDXLDZwZ+CK1YuVdGKfWvbul88l4LEolvnsxXWUo1pRrd7weOh7en+ + +4mQzOWBFiiEQIf5rdxtcLutuw0lV91tcFVmhV+fsQpEryM4E0rqusf9OI5HHg9iV6bbvLnSQ1bc + x76k0AhM7BvC58wws28LQyDWaYGnk3LFNxNWPefqc8oaaiCjsnuKUB2KwBHwASwKyqdfU/G34Sf3 + 4nJNYbNofaJgB4yxA8aVDmiAyUXo5pKriPAvitnv8l2DN8sMJlzecqFAm9WL0Hl58WKagP1EiKFw + aOwZnTwbM48cb1Tk+M3VSFDAgeWQLtdgktFgJzq3DL0u68+4KCTZ0fhLMtmhLTL8t+z0DRoBs8Vi + t4TZmk5gP9kKA0RYe/T2Dfz6Nl0ywm2+3q291UBMUm0RsNCVG51Qty06e0914r6wckBZPrTtHc3w + EZCPhqQdX4z5/TAhHg/zrxVw1IFmEMvLgZ3Dtl2dZD3xktNB/7gXbaU1wnEE5Ga1BNA4ez8+e1+G + zWjZ9lhm5InDfMzHKe6p47PstLCvPkMEjvcnHctSA6ZSDZjnt881UA/ZJhvolxjZBuoqHfaT9LNK + lE2RH2h7v06h8TCFTP/JgP78W9Pfh2cgaIDSRDICdyKZfk4pLjX6uaKsqVPM87KfXNHvJOjwNhEy + gk2rA8hvKUlWJ5luKNwFcUffh9Hd5L7+YTmlXkDuL2sf2iFpXlFaZSrViD/s6OoitU2jI6ocKs2L + YwhJKQHg9NNlRybSwHVEk476sB6r7AMu8YRYHNo73+h2SywhIbmCJIRXZXrP+d+qibWcVxJrf/W9 + wAFTxccUS+l8U9hqmwUa9880HvCJTm55dn39x4nSxSi18Zn2WP/hDjfL7Ori9OSlKqAQR/BsAhMS + BMzTcp0Aeb/hnn/Gjh/4/+s/n0yV1XM9+1xNpKV1PC/H9sOS560QfodDzONhcHTCbJMc6ivFXNqM + V1x4j+v4Lm8KtDtB7HjM2fceYS1YvQl7xox5GylMQeQ6lcSEvuI3rn8Nwzxb4ATOU4/U3CmnPARu + 4Ft1SRHuRgmCKcsdfFs6XmOevdHXXuxY9UAOlogijLxTM1/NbyaykQ0dvNGZyilY/DsUkqxn84dx + jm+Rj2Rx/Iyk5pvs2/Dst9e0qC7V+ArjFWxZedTxX8a/j4tFnCLQIztC5iPMthswO7GyiZyjGZiD + hTKWSbJDg3KzgsWJ5i9sO0u5Q07TW3jJZnDx+6UfaOYUFlFCAaPymWqHWR1XMOT544XRtNWIPc7l + +xWydsET3eoEaCcJ9930K/yGA7IjQQlyLSXzB3jgx5XEOrmmU5uAUPPS3oDWtbyAHOYxrcdm0PO6 + xsAOK1Ta+on/ODL2eEtd7pBiIPbesToD1el36KtUzm+giwC5/4o/RzugDfAOPWMNuyNfYYLu0MV6 + yJ0qOkguBXF2Ah4dg7MTEC6+OiDT5Zd0nq1su06CHH+A48be90u32wUzSXI5mCmukj51+anCzsZi + jwXlYOaYMd93oxEDdVJlajTS7c1Bfu/sk08qBSOn22M+o7xmR+cA3a6Tu0V+xtAhlayy1ba+iHMP + h1QHBN0GrLW2qK+ezwqk9UeYVT7TnjQLWXWLDKxisem6v4z9X8bpt2yaZt8e9JbeWiACAYruEFCy + 82NMqyjSBfDNjRrhngqmJE4D+ADpvlhkyyzdbFNrt5XaNHzJS88c1oaXHm+35KUXkiu89HhVoXR9 + qhphoVflpfeCyPO8kRfEXihhhCazzbgKUFcMHU3Rw36fzSuBouv1tmoykS9dUOmhq8XYACLGGu0d + z+OwZqtpy43QeQZBfOBXI07FkFBRegXBsjHKXkqLCCqvKKb0ylcMzg52aN6PoDwXoiSqozfDZywe + cz6cbTAks0yHqAhsXiLwcLZaZRsqHbxK13wlM/GUSIwNbe4F0H9Z6MlLM34kgx6gR6cg2qz/EIl9 + lDkrt8uNVDxhZsKxjac/zDmtoYdOeFz6Qu02cyTA+EBOOby9NCsP77YdoBvrd7a+AuAenJ6U90yI + 2zSuD4g3qlICU5oG9q1UOxhVif1+BZqFvRuJbrfawaTk0g5GV2kHO/0/1fps5BQ3d7Dwxa++6zmh + P/LdIGKySOz/zJaT8S1M0nRdmsYEXzMampAvyrkMi+/sw4VbnvpL43y/m+9g3qYvtYsYPUh1SrxY + MWiQIgorrNHNDI1RVctbQwem3wjGKghH/d7AoxBb7Ol/asq7W/qSQGuJ3aA7320x3B25ccQrCqDx + PWib4uxLDOQgs9AtaMoGM99QIJSwriwzvTy+v3fPbnhZPvyCewHXm1hdKtfeIN8oAT43vWPwl5ym + A1y4GgUvcOOnVFNYX+v+2Oh6PbygMZs5JHLBwzPUqi+OEFefLd0DXeF3LVx/YtAtNhL2YSlGPBTr + 7j+w0whi045RLujP6vKt2dPtNKDO0pr8sKAWaL1w3uE7ldYTyuCZE7stUGnE7ZbBMyG5EjzDq7Is + 58+/m1pPHPq+64YVVBqXBz7zRi4PhSsItZ4v4+uL06s3VTe+TvDK/46eSDMZcCPU4NvdRjjoZ8v7 + 2Q167U8/XRb2pbPkGf/1pACHp8cKXnW5wNoTWVyi35nnv1Dpz8OXqvpSvdn0P4XNAQ+wNMDMKqsf + qitqTUPfi5ojPUV5hUzBYu+U+KpMtNk6YYOnPTIDnHTacHMiIiWICRK29Ok2cRUWsJgXnh0v0imB + NXSkU/Q4I5xKarpqzGi4zJZjaEQGps4dPHjQhoOZ5BbltA1whIVWGFO7PzkWvfsUctRwERF2wsXp + JRakEfdRu3SRPqqNgkjj/Xrec9aO65oescb7pReYeL/imszbmk7qgLiRwZo0v2w9EClH0xlu/Rj3 + zEAxynJe6zOQMEAxhNALK5FSaMmH8o7/9pGW0KxNJlNj1bQbF9zHawJ/3mBRNIzBiIp98be0IX7W + 6BN3Y6G0LA5FVfdnbjkeJVrt+bL9mbxuJJZJ8ava+lc8Lz6guLdZMT8gJBtQyfrecax/rcWD+3To + IxXfPkpNXMapot2YASX8YlknIrz8efbAIoW9YzmrC8LYwhsHVAV5+sEJWgQO6XYrXVJKLumSdFXG + AN78XvagwcHsl6ogXRE4DIIRY7F/gDQ7mYP0/xLSbBax8Ilhd4WOZt4OTt3ngkmqBfM2PWPNvC1f + YTJv00WaJaevL8civUL58OXaenZ69dYAsB+crpFU97LApZPLh5OOO6FExo7opDsEwt3yKOGU5kMJ + bO8+XaI7XOukDUnGqFoe1GBc7jJePSHg+9VrOnr2XYfCn6bcgzKt4KzB2BR7602yhoGHG0F1s6QA + 7wRb7zNOoyqO8u1sZaGnOxROLn7wAdeAPYx2e9n79QwnENtDedCPktmL26Yvt0jIZEE/HBAtcmDE + 7ZYF/UJypaAfr9JR9vH6vHqUiYT4Ug5MwMC8YqNAONllOFtDeWoUEo2HoTKq3BfDN8tJNpV1eWKn + AJ0ANjHfOSkC6+FfH1Is2zvTYk+VWMIiHJ8Pn52dvh2fnxh2PDp4C5hDqhK6BqL1+fC9AamkW1Ru + yHvBQyje9Vwe0R83s6p7pbkHSgGjMGoKGIm8urCSE9xRcsFJEntuEEd8j+QcebZBdGORf1F0/0pG + AQfKcAjxqInfMo556Hnl4NLV6XVeMFFzGBmQBrwxSTlyYWfjngUMcgn6uAmSzOg+LbAOUtgUWIo6 + FgTKSTS4zqdxzQSSWoRcRexkVEGTyTSsAvTdb5PTj5cKOYesVjwKEOVJnZsXqzVbyRKNl9WS2Voc + nDKuGXF+YoHhMrvBul1odrWY4OrmdOVFQpL4MRjgzqUz0dyYomEWSGLN1nULaOdmIZ44GOpmh7UQ + nIvCvEo2e+fvXldQH5BgZGzu2zCsv+nIOlsXK7/xETFz7dKGj4bdUe9GPFjZ2QX/RL5k7MMq6tzX + DD2g5z53wjaVkfoZa2ZB+QqTWZAu0jn+Mdm+kUgpuSmQrgdN14tSkfMjcLk0Migcu9jNt7PpenfX + 1bDwiR9b9ri26dpKs3JM11dAPwFv9lMwjzHFlxPMgDmenSsDQR45MWFdzLpJUotI596Dfho9Z147 + 1lv1kG32vX6JkX6vrkqKzvRbtkmNXioa6zV/fne/DVH85avoVfDcYbSgQjeQC4rlyR0d7PMooKQD + I9HgKazJjqhtrfAS6q1smTSJjyfGcrBySzyNNQnnEfONeXFEoa7rkz96d5esX4hsx7sU02YXRy5z + Rh7+4pyvTpqSfKsx4DyKZZNvhC6ajjerdII+ZsvXtNhjPIVh4L1yW0MYyGdsEQzUKwwAA3mR9pdX + 2fxUokYW6LTT3WeQlUkkFekGzMUhQoHvPw0a4JDy988/MKdF9ivdbuXwkJJLDg+6Kn337///lexX + 7kSl/H2GNMAs9KIRbMYO9/d772dzkF/Dsf0XKvpRuKtrMAFhckxHw0RgKAnkotere74aDf+2nTEG + //7Pv//twj9oq8Ff/BWio67NTHxMpN7eg2o5TQsAt4ksNYW5hPi2sykiG6zhmeku1QFC6bWtMmfy + 4bM3t1uwR+Fn+IGvTl4OFwlCIW2HAqhJWQ15m0UbqdmD15fvtT3J3ADpfmAK0JGzSkHnnz7Mx4V2 + 12MYkTGhbs+/4qBpcNTB2M226guXNAx0pkDsPXdaKWL6GetcAfkKM1mALtIqJadsnsCTVzoVlbED + +2f+IkwYcJ0jCyX3P2TvYj880o/LehmGOlDmvvees6DdWKuHrENl6iVmrExetS16LchB7TqKg2MG + s1O3SVjyD8xrAR5Ct1sCHQrJFaBDvCp5RS4v/ArOoeNXaEV+ZbETc3/EYs4DGbW+Uq6Oh+GlKutB + 1rZTEZUZKYeeyJtJFotkPkuWtJYSATKi3esrdBAQu8dq6VcOTP1IwSH5kFcSPduky81u+Eas1+Sk + VO/mNjrCEdafVR3h+982Gs4Rr3F3o/nl9rw9gmnVWG0Xejyuoi8KK0acE82Vdixs8kkb36TP993N + DE7n7WxZSF/UNf9JLfBi4Jt1gjXvyCEvKC+QRr3YZ6XoCQ+ui50L/TgyQGPyKQLTQT0r0WKSJWpY + 66E5k6vvGg1hBoWrAU5rjYzoOsSz5FMhmk13GIVuB7yph1b+flscpog+aO1nndWe1JfsfU5Qr6go + 0Ds2IB55McCSXe4sfWuey10DyaodFkVvKkusnUeh4z532mQ36mesXUfyFabniC6WI6nrFFTgdF70 + sRe1lqvrM31drZyrzSQerPE/aOrFngSjc90S32JBdHet4anUGx14gSX8zHdjrHSRx0E4LQxXRV6W + hgJEa7P5AzEgDc/Pse2LDN0XxZdV8AI9HsY1gwJ9qrGrUDQMJCzW8kuKAE4HXTDE+BLnaDQgO++e + vY382UqWjjWuOumL+dQjP2Vxue9XNB3L5FDrhd491VRusZGjfGd+SK7tNr4z+Yyt70y9wvCdyYuK + WqcACrCb3+7WRSzq4h6Lf82W6CqfzrJvD3fpsmw7gvDLV+yMMWkgurHvxbjrerAUXfJNijcIbROJ + YWrVjW4j0xfw8eMbP7hZxE6o+qPapz0kncUOnSXqOzHWIZLvvhem7wH4SUqUtgD2JfovBeYrXFSz + 5QRs2CxPt9B+wCH14ah6y/Yr6NDbbCG8bHRXy2VLOWm/f2CsBQUm3W4HUECSywAF4qrMSTt771UA + CjzkuDQBCsag6/j+KIbjXibOIq6MCHZ9w8zZdLhK1wsBRyMt1J0qlvs4ufcsiuWkzfd2t7ybmRYf + nOiNtJDMd5H+purFzRun6l9rQxSGZenwOmD8Q+86KBdDSA1kOabMnJtRR/oM+zFiziE52nksZnVh + DRvGYNPYbZSDOFmb0C55g8TSqHTuBv67zjaUeFiK+L1U/tfZBlSeLYIhziaIjTicVVuiXzTAmakr + 8L0wPiZIO5CzCG+HgbtL5mORMKOSDlqBtv/1ApM48cUHNa2almG+ZqIDTEmgQ7tr0FNtndxEPPc7 + AJ777fDO/Tq4cxmtklhb6fY+WcK2tsAwxIXEE63FyCmqOKvZ3fhtWenRLxWo51FMhqZP9azvLs+h + SyZoL9ixO9jbnF3fsN9IDAg/3B1/TrfZGLoKTuBEgGlboCBZN74XZKV2mQ8twgk/noGiTWP/orQU + 6Lkkn1jbFXuEeRcRQDvR5ggUm44JJB7BAHbEv+hX3Q78fdKK6vbF6ev32EmC4uIIY4xJgjBiA0vH + xtjJ8exp6NQp4yoWSM7+MT5twwMpHrBlgiTpVS5IcV0CqL5+ZeZSuK7nRmG1euRX2Gu92B/BP34s + q0fO0bFHwf6bh2EBsxr2x9sZ8QeD5bwANUd4zWDUsckPGml1DU35Ok7+K4omeSSKJlU8MdJ5SSx0 + 4+cOa6dp0DPWmoZ8halp0EUaSlFNJeG2VAj9P7fjs7Oz90Oh09bdUBSN+oSL+lInJpAekYWeVn1Y + 5OtoO3/D+HMnbhluV09Zx9v1a8yAu7pMy/7zeiUH/nP6DUZS/ne9EiWnfhgovTAnsckEfnobrdzu + +QMcNbyQvYPbcYr+dFTwNGK+tFb2hf0E5jNon9n8bjZMVqsEnrR2mNk+vPdD4rhQ57nZrW+TyU+X + s+px0oOJuYZM3YYYuFXPHiPvAEICoVnDdj2ZgWbZeReAzcQtzL8jmgSCgvK3Hiv0eCBotUkFpU2q + bU6QeqrlJlXJClKXaZO6W9xL6pu7ZI4JgiZV6yCnJa79+/AdPD9AIZSRr6Kqj8fuG3M6M4q+oJyO + 12StOLjoPc6439DQ/Hstd0CHUeYvbWI9mHK2Ag8YnD1srU9kcwRdVJx19VOxA6HgT8QFXHhRZPki + UVTQ8T0u49TXhzaA1lV9UaiVcphUzx23nVJOz1gr5fIVplJOF2nbO3v9VuqfMmGhqSzJBKKdYRCt + dLvxRtTVme/0UqAUSMhw433tZXDpyThODKFamekJsuI5XUsuKt07nTc/L+KUQXOo249wSvRaqmVT + 9GHbsu+73bZpVS/RD5eqz82xbBmnsHcsu9qD1/Vde9W6SO1mgfvcidplb9AjtnuZfIGxldE1G7JW + M3fjAHHr5eqzGwyS7R35HLyAHcPc2jKM8VisrkfvwjEllCjAz2NmpYWs/XWDcEAXO6njNwW+Q4kn + ue+tmG7YYk13SpP5ATljhx+yw7D667DqdpzBPyWBrxXfrn2o7S/H3hvFugDHs89qotutC3C8SlYT + XSWHxNnvl6VgSegGPOBRuQJnzOIoCNwRi+PQdfdXnk7n8ILe6eaO4NJ9uhWsg0KZiADiPjYyr4+s + mGbpCoxCHCSR5nhEgsKPYxn93sWnf8UgtO8EgZCGkeVuDUIRZNJm6fI/D4u2R7Dc82IFanr5ikVv + 4raFuflTlo7ZwmuKjtn8snTHopdIHYOm7l4p3CyIdN0AWbpliNCniF/6rWisg4LXXnluiq3YTGHV + 0ZQy+/aDw1ukzNLtVoeLlFw6XOiqPFxOS9TwzHNZ5GGlRvFwiV6Mwwjs1BG02ZdxeJxbBNFWtEKg + 5WfTCY9W8qQ5S2oo21sfM3HEYtevYR6s1xFN2kEzXF+QGoU+5xUS8QK+uQH053hm4m6eTFsvZ5HO + BHWpIYTxYG9WbujGIS+XZ1oYfiYLYtCEGqlaOjiD7zPqG6kLxxIoFfcM2akKuEFgMaxwC79Lh6B+ + Zru7e5Ehm/fXqDwTcHJIiXpevCyYCGMN15dNPqfIX357i9yeCFonCqaWW4QfxIUE2vEmpYTdzXZI + tZ7m8G8GOJlzsGiBxIDHtThk3zHiRDwao/9xoP+PsfFrKbQey2eAM5iUn1k9MW9NZL4jm+5f1qQ8 + IJ6SiiflFdpP6/9CJpoSFcfSkW/TY8be1oqBM9bgi/Fz1iZxih6wjVIL4UaAGq9InLiiNafyoepw + K4QQwVgSxo8JQPJ0KiC1TqXR/fhrhjnn7dD91EO2Jdr6JUaNtroq8+kVqs8Wa2jrUWWa7rnc3rNS + Nn3hpTDCjuvJkJpHq6CIddTdk2Ml7UDhMmEI1tBVtnem9hRNEvlEjidiXOJETCbVLu/DFdj9Hd8l + 9Sb2jEXSDkg2f6jVIilByeZXZQWeGdVcLtNCOV2esySLmsux5wO3FxwFEvzAbBeuIy927dMP25Sg + HJmMCCZ9WF1H6mgrgBRIEvDZomMQ+AfC/OUy6vaM0ui2XDI/PE9nqDKrQl4Xvz80dbsN5A9PIbQP + Rz/lHMXY1xvlW0wSdFtulPIh641SvcTcKOVV2ig/XV4hRH2aaP128Ob6E1N423mWfEEc6QmUXu2E + lNy8TefZIl2XCM27xf6O4a/pD+Puh3ixO0RcvSOhjNTcDMy52SrHP3+o3dyMa+emSvBPtrec1RAu + SqTNQd3F4Sk+NBCP0kQN5EH8cyAG+TW0UK0xeix4rfrDATp8VDny0DS/qtHlU0sx5ZA6sMrQQZYz + hdQPAYpG7azazEJ5V7KFLzkY5aoDEPrefOXHkoyHTs3ML/Ek2n1GR1GHmucZU7E673p83RHk5NXJ + o3dgn5hS1OGSI4F3HjUviCXmr9zVpzPoj9l/kry57dUPoj//nw+cOfbwn3S7VYBISi4FiOiqLNV8 + 809egb0WmahFTBX+4lc3iFk8csMQ1w2eAJfpNwR3hn+YI1Gd8We+Ah36LhUO/EXyOR3uVkQcdH7x + TpX6qQNR4kKu0nX2bUaIoNK8WSRw0oHm/KBotsTbKkidhQebiMyb0D8ZD4LQ88KmmJOaJGYaAmvk + MTfE5aEd1ULUbxBFQM2X5bRYumEGotwK8uYAe2+sCiWFTNhVaz9ftV9gqiTDszGsi8UMOYKwdlFH + ZMRwEGS8gOFebKTvJpN5owU8SCGKxrk4zIS+onpuM0RztdiiRExM1R4a2AHONxXDcUNP4HKGKrev + obPa7ie+ERqRMwqU4Kz4Btm8iux6/G3a8guPt9U+qbagdsQsze82Eh4HIzM36Z5SMWwcKT05es2f + M95OTZbP2GrJ6hWGkiwvSshOjR+uTDXTIVA8gOqyHYpvwQoz7vrfi6KhDdx4Z1+QNm905h3nraCv + 4XbbzDuUXM28g6t09v3x6rJC+YDpXxXoa+5x3+cj7nlxJO2fPzSGsFYtJAIuRs/BeEdU1S/wKRps + mPpE/yqocBWN3cshYmbi7fAkHolnQ9q2dwKvrSBjt6G9FnpZgB+g6k3H6AwGbfafFEQlK2FqINkf + SqUA/PwhlwI9jdx5dLL+cbPqnMFxluf38TiIKgkcuz29VJ/NEXluYwph4RWV3IlpWujZUsYEHAlh + 3HBuR3HEvcD51+AvMKADnNA6m5FHzlGg162O3DA2VOPyYOw1gQ+nD9TYfN+dKopq1bnZlzBMs2wu + CsGOSQmIyC1utVqsvrNP9zBlYj5scGSfmP82cnJ+9rduS6o3/Yx1fbl8hVldThfrKSdyXYCKt006 + dilOMCWyo6gnOvsyrNXBvYNAaY7vrhzWgsSCbrc6yaXk0klOVxVb9auKFcu8MolF/OJXn7thFI98 + 2PMjvj+F/m4N8nsnb/prp9C7nPCOH608qiYlJHJE4s6fFx+c2LOff3S71fyTkkvzj67S/Du9rGqS + HseoSdGLApqk54UBYyNQJN1Q+VHk2kO1QPa3GsiRtr4k8u/Vlw3sFWSFi59DmJ84pXa0ImEGJ/Cf + B8mmJZf1WJvCuS0nzHWB/D7ewJAjacNuOoMO2+zu7uBAA8UFfbubGZ7Ya8QdnZGXC1oH1oBwXZtG + ulg1p6saZZIem2RrmdiUbCf3zRC6ruOFzRC6XhTHLKisJfkKjNJ8hr1qW1IAYeWYIi/PtUgnjkFX + qvCw9LWsalpm6Qly0dds1erSy+oHyPQxNTuyYJsJYCnm6Lw/98Qc4NrU2LyOGw1kz+LmcmhwrNwi + lumv+2uFAooz1jSojWtGrJ2CHHPJHdRve2BQiRxXqWTsNGhZIK6fsVXJ1CsMlUxebJlSqUQhVFng + UPn3wWTon6xOq/d0zMjx9GjHp9Fz1oYvRz9jPdryFeZo00WZivkAz4r892RbTsFcYBhrmoIxvSqy + 6Ci2nNeTFR9M8T8CrM6hILXDonxIkvVYBaluoFOEwIrpLLiw8GxLxwt4t/AK4FtbQU+D+U5kKtM0 + gR1apvIXLPf8O3I2l2rjunv4ApfYuBfHMOW4zCEzz/wK2FQe/Ttk2go3FgS0sfw9N9m03cA8faLH + jpr14/BD5g9RxqxcMyt9tDTmxjTUmTg8kri6d6gwVXH4DpfcY0o13olNCSWK8t0uWcIWv0yNxrWZ + GK7Mu7rqnBbQR2zmeM+K1iSYHLEE0c9TENQ50oOYGxTpCd898385Wa1WF4LpN9+oW7m3jpLXPIRH + id3rINFZhsw7i547QTtSOXrGmlROvsIklaOLMotrPZFBjH+8Lqcanl5d8t9cUh/HUhWuOy2vMzgo + UZBI6XKQJ0/suAQ4g1vD55lGJbQqkXOR1zJXXbUuLxNPGjXy5vF0nYi8oGZqUkv5zeDsx2RF/hgg + GD/QDzVaFwfeSwBip+sVTpOaBMfDmW7WJkrF6+8zXqjJ3s5Why0aNyy+7Afsy2oLCDTpGdJHt6pa + 0s9Yk57JV5ikZ3SRtoDNSiE1X7/5xHJGyU+nlyfDZ5cfz18PGfeiyPPCk8HZ7x8vT6+vK3tAmQRE + vRYBtByukjwt2SZrBltmRJqrF5nTEan5vTv+mzekw7th5dZlcjghTWB7csLvb8cFhF8qmph1STbp + krMcMULKuE637Oy38pD35zn4eVDWI4ey836/4kGL7Dy63Y7xjCSXGc/EVVqn785eV/3KkeuVGc9+ + jZgbR3wUMT9kEa3sd8igVaZgLtbnzeD6LClmcKbnb/mrkbgRFWKM9xWKs9Nv8P3Lu1TdfSufeJmr + RfA2siOwrl8uXFpXBnLAVD53O1tvtsNZTviQoHdvmd4lxZRieA20/t3ZhVfM+CR/87vJtOpvTgUV + t0g43v+9/JWe4SZnuN/E2g0aRRA61VgOGKu0VE05ntPgZY0jD1T1uJaerbG5tRkTbmhmTDS9xORr + myuvbOEtJsYEOyR18NeeYANce9pvHEaBdRHu/oICjzUVFHSU5wV75ZljbHV+HStzH3nDkaJrszMj + Yvfpsuxt+sPlstwXp+zDfN+MtefklZWQlgu+3Zw4VngTiImCDz7cD63M+f7g/CJH5IL+eXnlhLH9 + kU23Wx3ZUnLpyKarMhXh6kPlyPZdDDcVj+zoxa9BHEWBPwrRySxpSj8SWdQwGCunQzq8SidgWEKf + fph91iyl63kPoEuMxYicVQ2mCnJLTJGqnmhh6DSHZkOw4CvpCWvV/oZ8vxJ6EwImFalCi0L1EaYJ + Weu5R0OnlETRIHTwsTZpvpGIVFJ5FUdHfd1mpIKSD4WMeHHabNDCBd1Td4RIG0uHaAR9SWF2wQao + P0i77TYDnEjq/Al45PaBq449g4/UdGCLXfxoMN4OgEG554SAj/T0bGkbhWRhmFPc8s198EqglWO0 + /6etexeDCAsYb0dALwwWqBhCFwd6P7loKqsc1kqbrHK83TKrXEiuZJXjVVlR9emsmlXO4gqc66+e + G8dOMPI8J/RZEdF8XIUpLzqhZUHUdtLLGQBtYSqr+ojkNENOtZqq2H6hUvCz2gMBtpawyfZiDiZ8 + OmX0PLMIYba8hz7cimr3UtqaKTdH5YuR5zeKDoPyTdP9sHzNZ2N9yzHjG2PFuPiyzUJorpst2h+m + 4Lgk+N15fbfnJh4GoTar+WxSrmAL8EMbUA5ZHAQO2HWf5PjUjd2zy0t+dvISujnH/cPDDJuPQW98 + 38fTy78NJ8lmkiCi20O52+CO99kdzt2FTA7CozB52FSQM/RIvsQ7UnErrLk0mW+QmDvF7COBkZJO + dms4Zs3vHg3xSFJWBiYmEZRnKjZu3MBwpep0eRZ4AzlPxL7aOKus1WWHhS7drZDJyNoR/aMnv4R1 + wQ6USofqRztbzSW/XenTv8wSccSQjk7QOKJ2ANEdsS/msztLEys33ejotFoYlnbmMRIPUBf4ssI9 + X2JyabU43b5DEmvu+jQJxKqEFYVV2BJQQszvA2HzNuZlX+jMXkhKiBzquv2mu2Ru3Zst+QX7Ef3f + mQnQl2ueOTLlm8UtYPvpdsuUbyG5kvKNV0nN+8f7c7fimmfVlO8xD3noxCMeIlD1/pKD5Rzk16D2 + C8BZJO0p+alBbWnUx8LIi4Kwotf15yWor6EypUaNxXxNUmsNEqOWD45qQ2jRsC9+9NOskPCZzED2 + 6JgANSlDPSUVRfj2DtWjTOjORXBaRESBePF40pmpMZbB4cL8tnMY/njjV21ETOW/+sHbqC1urHzG + Nv9VvcLIf5UXpf1IdnhNfZ4BqF++S2f1rCaueSdcEDizYGQoQiy/YPBrBuU9GaJteLDayt6vA/aJ + 9Oj5cPIbPi8sURDWDMyeN1cdJA96WovtRBxwj5HOUJkh3dEKu4s+1NK4+au7U8eSdjKbrDt4F5/C + vuT0V/zbW5Uu08jawSvGW5fpqodst0n9EmOfVFdpo5zu4DDfbfZX6GpBYgd0nA4luvqc0LDVkeO0 + 7AH9jDVIiXyFCVJCF/dUxbz+4y20ldchTSqJmOwZxMH3AiR54otNGUjoOCt9TQd0HjVTPIWLEkat + cFHgdltcFJRcxUWBq2TavP7wulJNjfRYFQ82c2OfuyPmMYYGK86s12PkTMboyjQV+wborvDa0VAA + S0EPyOhXqa8kGJMwg17Pp1Wor9r7TWPDb6wadXwndlgl26ahrcNnqFCL9Lv0pCFs6fmNlpfxsj5s + h2O6dIBjmROcuaFQ4hw6O5XYWqKzg4m8vs+I0hPpsRLpnEWOrHZp1D8cktovyyjMR7tWtJHQDCtp + l6nc5J21fHwfrFd/fj2PENjarS8771s/or8v7Zs4pt6evu7o6xLVI39+/OCEzN7XRbdbHQhSculA + oKuKovJdVD4QXJGeXfR1+S/GjMehF4+Yy/xQlmSeaQ3r9/nsDiGp4SMphq40/2iYFwRCx12dYwCV + 2MWyu6hyFNDDec5BTQonCxlrLPhnoePGnvtYXiJBFD8uN9IIwkUx+1c5P6WmgYMz9dEquzJXV7Om + znx2hsE1zeAlevBkNExUOjhmxwl0zmJZjwC4MpEc89SO29vZ5LM0dGVJq4St0rl74hO/pLC1zDEg + mBXalKy3eGhsBjiJ1Enk+W7QRz4L9qRU4nSfy2bk1bc/LsfFYXRAUcO6G6U95J0cqS3jesobUV17 + VgdNXxADLKAsvw+ctVCR6Xa7LD+SXM7yE1dpR7w+vapm+TluVMnyY24UxCHsiLHnyMT863SyFsHs + 8elmk03EJB0Nr5LNeJ2K5OXnQ2Phn/1+eX4OPZ2I39Qqe2ky9725ypddzZQVu+l1sq6mjJB0KZXe + YmCQMG5EBopIIYz7PIq98kb67tNlI76fG3PPSpzeTosf1rSdRo0gv0rmgBo1wsaNy/CbcnM9vXor + bd/RcNJ6ACr7YMGhL2P8e8dogFNK5/vBfOlnfyQ/vdgfNR9q1y2tIFUoYcXvabPr1uYCHCmzQS8+ + ehvX+ycj12CbNj3yuRBQINoc29Ze1D59x4/ikf3hh5/YA/GRmq3SZm67zMvLolXPKCltJk1PdJm4 + B4s+Le3Tdtauz335cFd+yb68yqFyqbrsDXuOgC0tXKryGVuXqnqF4VKVF0kj2N3MZXS/AO5qelJz + fM855vKrLWmRTbE4aT18v7thg3v8j+BJiQhKD8Yr0uMOn7GoZnqJ39KGiMW+apw+UF4wbmfQ3dD3 + SBj5RkDZNmHBDuIPRAYfHRPXgZPbaDY66+YdUAycyI00XInO6WzhX3uSSFQ/HBShLzB8FxV8Q8FI + DsDQqO0r0tC1PGwLnEWPWAPX0gtM3FpxrQkG5A/vtz+C4bfhHz58yGy8WV5dXFbq/y/XK09uccXX + IJ6tF4a97F32LHNHLpIfgMfhHUcTpqQEPhXP7R2y9h2rw1GxPmVftYauoUesz9hXVeAaulZmVijF + avcEcbVUPFF5oCOXx2ZddFUpVbdyR2EmB769U5dut8VMRslVzGS4SgrL399/qrgwwFziZczkccAi + J4xHYAFFgSxUBG0Nk7WH73PzB0nIhJfh7/fbqpehnChmlslHQWMwzQ1dL6pE7m6QTmxpvLy+moRz + 30p0MU5nSDbFRWFz2E+KG7yf3d2P0Wm6xNaUP/z9r2P5ime6E0+Gm4cFfUahKGKdbnZzqnC4TbYg + SiTGJ7tv2RZBDh9eDmH/Fu3UwonPB73EW/gXt8BF8m8spIdH5/A2rD6E3VuqpfiYeCNumvP0Szrf + 6NL4cnX9bC3KNGCifcnrKehDBjiRcgDoOOzBcSF6Gh+pDMfhQ902NfHR8hqfQGbCQM79ui5M25Zn + Y3kU3qknaUeDjTPJdua4LfY8ut2S7UxIrrCd4VXa8z6dVjMbkNylzHY2BnWCBf4I/okRr0EwXsIy + yYkZENBSAAaO4RCfpriQi5mUn5IpX8kNUfz85GHkZQFR+fMK31br0I14I1YKAwUbA6B1xWmGEWdW + 0Tl7quhI3uC6gDliMSqK4CwZ3qcwfTPB3Ee13jA27orCX7BrfknXiC+tvx0W3kz+KGlcvmY3qNMT + 6yUFwDawc4pVCi3ZDHCG6c3QD/lAfpPYDCtfbrUpRQ7l8207WenfDY2/zwwCnFXqk2tGt25S2nVl + LwBTvZXW9FUOw4kB4d0H7rktGDjE7XbaJEkua5Piqt5Zq9oki6sMHJhJGY48z3dimTFGY4mVpIXl + GxYXHxxfRXAXnBSn8+R5vr9WFc7W9cvFepTH3BXj0Ak9t8wT2XlTVOIGB5fKSP14oKdV9+JWVtDr + GG1lbhwoO/sIh+HPtB9Sctax4L4IkoqPtNvDvgNaXn+bmSudII1Hcth13+5tn3QpleoKNOwWqVTi + drtUKpJcTqUSVyU80GkVHcINAreSSuWykAXeyGWRpzRQ8fU6em3wJSO/hmZMliBBSQ1ARMttMeKg + K1Y5cjszQ5vAdU7Ta+OQB3HMSnvkJJkuVOXyfbZIs802KZPnwkQxfQkFmAcWRV5cZkyx4S+niXWZ + zQ3K9cJrPT/22n2L+bZyzMG0CjzOGj+KcZguSBMzOMtWq3Q9VuABteMwW37J5l8oY9hsgaCfMRMa + 7md390Ptx5gI8YV0BZzIOp0r4ARP5Po1bOQtDwfXF2brXj7517DD5CGbli+AKSKUVBUyb5pXFbEN + OQZifKpNbhFIahTsxRLAOkcxmK539mnBYmIKh4b1NK8uaT3jD/tevi97nRsQLXNnTnfcg2om7LHo + exT467xJ2vWa75B1Ruuy8/H/xDB3uSf94jz023AJ4u2WfnEhueIXx6t0Ql99+sQc00vkhm7AAz+s + GDMMozgRG+G/oS/j/1dFVNFPD2z4iTZN6TKg0/lqu4W3HG22PF1OQCOF8Sbb3gv/yfU/zn+7vnhL + PGHXZ/W44DJqlW5GivQLpo6i+irAYqOze5suCSFIc4J9TZPPJrIrjsG2OAYDGuPcT+OEEqw81DsR + vWI628CySxeI62e1Lq0Bzw+WY/wch6lLcHy4x6XzbClBhY46SZTs0KHCmsKIb9K7ddoEXNSEkvDd + EyBY4FNllJrtrbKkcyEUixDLpFWatdpLNe0IZ/5zpw00gXrENnQrX2CEbukabYmfXp2p4JSKzRaz + zwgVrBi1lQIxauu7PgZt+8vAlB0MdheroQe5Sm4OZ8Y9DilILwmd3zuHxiGHkDmce9UZe8iA9rL3 + f5xD6W7lIT5KpvBjost7PjkIq2X/5W2k7tWngv/daPIh14uew/JuRT5Ez1iTD8lXmORDdFEilNyL + shHkqy+X7hVxR2zuEp1lJw/Tk+IwfC4AQX4rtkqkKwnOBLgu6vxdR+SIRMzXCm2XPMDuR0/bJdhb + 1MX3Ihl07+RH7KVsUs3bUPHlMFBwnzPejjBHPWTLmKNfYlDmqKuST6PpwDJmmt1dxju570YRpiY5 + x5dB2O4wj3L49XKAdQtVUpqh6K9xoquqmrPsH5vt8MBDLV5vmZBihzbU7QBsc2D3dsCqjSCSoU3m + Oy0S5cTtlqFNIbkS2sSr5BA4v/gdk0tLsU0exZVMOc4Zc8IR574fyqTFU+oGKrCVWQiC3Vrp9KNi + uhZV76NxrLIKiIlPFgaqvWQzIoH3yabe0NR9jaLcX3Av8X8RfrJ7uGFirG94Ev5dZy/xLP26KcHf + C6N9ectXqpgBdgn6po30ZJwvs8ip5rfsMexNPD8/ak7RQ3gRFpW9G6fNBYYMNtDGDBpDnPZxYK+s + 01UyW5uRBB6VQ7ijouO9XljtZ5sAzM2YjfUi24Ui0CIvZ1PWtnvwF56ZA7FktXuHsWggR1S5i+WA + 27l0LJ474CRp4xOq9yp5JQmb2RyGV/TodrhN54gF0AKb+mdxLgXVRvbiWwri0KO255EVHN9pskCE + 7M12ttjN25M7+GQzNERbdETgyA9qqnUN/KA0S/YnV+x16POwWG5I/tbsZtZcwlRLzXSMG81lDpVp + iRPGnlupv0LJIMwFCbNqNu0u6shQlSfrjKrbZFuHBVmLpz+ugFMLikhQ+Ty3WcGey6juBR4ubDDu + L+PG42SvWKVuxgpsx2X28Se63RZsByVXwXbgKqmbF6/rMkQwnd7MEPmVM49F8YizgPlS25zOYI9Z + bkTdGcbwEZNKsEqsYKRF3ir8R3DeT3dYJZXQJn2z25qx/xkW1Khta5lsJti3ZSGzFIsT5EmsKrzS + 5Rc4jFbp8+FyOmHDVbKGR9FYqHkYtQ7YVJbZSnARyVtExQM2fDPbPB9eFZu1SGd4FXZHlft3MW1K + ckGcA4RVNiNpXiMgNZjeHveqgNnVrjNrV1hT7Uocwdv8SmiuYEBh3dJ2tt3JIJnBy2y8hJfS/3Ks + IOMlWmXEBCy15abfqoAZnuM3yfM8MGzK2YkCD3W7u9nN1UBXUhRDhze2kflu6JfJT6TCqNs5W1Tb + GThBq3bunebDZ5gbsxsaa/rE/AjmuA2JNqqjBxeliW5yh4HWsJ2tsAmijOdLWluhA1qysdyMCavO + OR13FEr3vi8rIZHkq2SAe4lO0vFiV2ajC7VNhOxocojdsPGM3hukDByj+lWOotgWugk8muFM1t7U + T9lWbcHpgE/sn1bw1eXNz15l6wmexGcOF6qfqOXqKCTwHafGf2c0TU/kTpRvR/JiE6ulsVjs3HFW + Tx6Ii7GgfirYtOAJVIRpnTomkHVdkd2B9I1T0pTlSdZqyfUBD+Y6KnYA3/qcOa0iB/SIbdxAvsCI + GtA1WTNWl+hVDAQcvKHwFu67sRtLHP4nYr/bo3g8srPA5QKP8rfejOzvDKhh72N/bGiOfvMDrAxf + 64//YRmf9i38KTJKe8oItYfneFJJpi4VIv/tg+O1MPLpdisjX0ouGfl0VYIvXF6jG6ZUiRyVrXz3 + xa+uH4dROHID+HyZTVVM498oMEmFvrDacO/4auMY9HoWsVrSpxpW6KAppmHI6T8/1aTxBa2IiI2L + 6qlRpuGa6JNF+042dPA76EJwMt1mu7Wq5t4ohEj5JpziktRZGWsNUJDnsDSfvbk+u/o0hh9PXqpA + y3KoL+JLlBRhQr6eTXEAi4OM71ZvVKemVtxU5CX3xQgjVIS+hQIv1NRnH//+6mS4Srb3X2FjFtNP + GYbM514vmA392DKeywKxytuhcyGWUNPHq76Tn2+05+ZhOIFdS9RN0ftxluAtFpProJ0n/NER6bRi + yMWUsHJltziy+yfK7o2nmvvkbUA5WsTmYbNNW6oenRF32lgVNR5hl2qr33+ACW5/WNDtVoeFlFw6 + LOiqrEiA1VpNQECqFuOwcF78GvqeE41CP0TmWTwqLgvYUgaS+AZ2sfnwmedcnwzXsxu1rdGG93KY + fUnX0FuKzmGzW62QPBU+WeHTbLA2LJ2IdVXRR84LS9ZQTV6KyLAZyH0DXw5LeXgN2w/6umAxDvGD + 82bpLU7WTsAZV5NxoPHN6dsqX6UcgG9EKXlyUnLkmq7hAohw7PsxHkTWjlz55rRU7uj6Ni+oEFDf + zLLNwxLGrFLr6DFeljj4aw34QEx9fVA5VKeB9YZiJ0iw+5UteX39x3iNDRMrGRbcZLaRu8Fae8VE + s4bP1L2jof88uh7Sjx/kxRNr950YAn1k1hAVVw6Xg098hwy7o01ACrzpWd5SS5AZ8k2LtJU0zgOu + P2b/4rc5NF3HJ/MWH6fwcTdwvn4wA3DL2O9oqx2D6qTrKOiwIUX19K+vQHO2T86j2+24qkhymatK + XFVA/NcVO8pxo7DMVTWOuB877ggsUZFLg4fjedGOqsun2YyG7z9+EHvU+49XGkV/UzWwlDs1T70w + 6uPCuBHUiIUu88K4HtZJSRRjM1LtEmiFd+UInBNGpnFzVv+O/AR77/723hvewzaZIcLRJN0+zMW+ + dEvbegP1ldOI1sexSpI55ffYSWaB5zSTEBe/oCbbrj4dysyL8/aQJZN0A1gK08tOr3NeFRh3vhoN + xfCLf3zkVfl6P5vcD+UnCmiV23Waqk7diLmTp9DQ7wpZb1PBcNCfUSYXgMa8P/2U9xued9ieAc5/ + ze/lR8Qa0DVbrD717Gl4mg8U3PWQ+TSQi0h7Vw+tvv2bLi76iijRtn48xo3fgCsUb7de3nbt6YWT + 3qOq9a6NUeeOp7CTmfsubMu6LJ+xRU9WrzDgk+VFWdOUu0FX98lyYDLBzZbLtBBnKxKMKtHc93jk + UmQndKiL5GP1lJLZ+i5ZNmbiWbtlY4e4yZJ0nd2Ieb1ZzdZdpR6BNEfx2b391v0r28Us1BTzFcdQ + ELbiGILbbTmGUHKVYwiukmpz+aGaCObFUZVjyI1YEI9A6Ykj0+qHTVa5VdVpPIJJvIUNFnv4bDrh + 0Qo1ZOg/dHaRgvPnag6N+Fo1sKW9kV+rddpGoPjWOW2fFDrB5SbdTbP8y2fL+9nNTOIF4GmbLBNY + y5t0TBHCgq/3t8nDZE7K8rPTy7Pfzk5kznvBZhbXh//3bHrP/pXXbRWJyOE1KjkP5YGt+3KoC5c2 + 5AnGx0HVeLWAf4TiAD8hZAQOhHhKJxjnCfiD07OPBRqhKHpK0eIDmTseLdP869oKCEK1jdTi9+zP + oHEdpl8/neGCbNtHPvNcShiWKMqlzsod2poUYnZnHH6SKErPjD1dUbORftf394q20BpqFLQR8is3 + flO+otupFoEul47e+M+dVoWn+UPWBdPqJWbFtLyq1Is14gWukjmOi6k2PZPujROzfHrPE2UWBzPZ + pNAixF6IOBVDx46v4LjJF7ltXQ+tXSyMjJPN6h6mWjafrURSvY1cOw3kWPfW0dwAfbJqPZ3MMabg + WOTkOhvvnV7dBq8/CuKQJuz+xvaQ73Hsi/ZnYnhkcyWTPsSxIPRyNeBYUZRtVSdqpK+Kw2SJJXxw + WmRwGtyts92q/Y5BySOrh/Vsmn3D8MB9BtsH6m3d8j8EuMCfFx8c3gKInm630u2l5JJuT1el2/L6 + osKo7LlOCQY0eDHGuBSLRn7ki4JjYlQuhHaqqUD3oBSny/88oMuimEQg78RbJsn6Jvv2MIaTG+FY + 5xqbR/Rrtn4gneH58LTgb0Kt+DOBtz6D5rsnv5HiKn6LMLdgttZeq9EwQTQo0mPh78Hw/zf89Mcl + G+UJEgW31zoVirNUU5IcPJZgKaXfdbOsckHX5j3VlBmDXhI08ZjGIdif1RwV+rqa3APZCTnEWL03 + 03ebWEkbXogfi5vMEaCqLCgBTze9NS/tkMUCZhkEN128yE9dxBz1fD8OywUdDUpny/Jlh/FKULP0 + AYMzGhlBoleJc9oviNJsbxZwVl4oZnbO3Xw3ycSE0LMYjTXtZi3A1A1wqeiCjDh0BvKT92jtrfNY + m6nHfiafrpiFpPnM6s25rhbIgSoDMiL3bix7O3kglyHe1XVJ24yi2GFI0229Ue2Vr07JSFlC3pnb + lvmLHrG1guQLDBuIrtGJd/+wysg4KJB7ESJBXmqQ/2l4/bBiRcHClAk4mjIuJhGTTmU+jvO35FVd + Zsvx/nH2A3It1gg7+LxWbzwKYW9mW5F5KIohZ/+B2Qra0lc4PjsrpyA6LDYPs+BEDybbiSk2j15o + /2esCMpY0AaIFW+3JShDyVWCMrgqodKvX1XIepjnuxUUVp9zHrgj+CfCODfOmPfFGfP71Vvl2rxb + g/y/tmtzkHM2eBEhJ/5wG1LNKs/RgZv4HeOwNtu4VwpPWQdv9GvM8I26TDPtfptIKkwVLXvPT4fP + bkDgyaB4Ca8M8G4RsoFZN7AFFjkEEJIfWeRabkad3S/pMXAtUKqvPlBKArtrN8ndzhVlqvKCRozz + kKy7gmzV+BFsaXeodYnDUqWmHZQs47hl9Iq2esD3p80NiOu8gHdrubqcYypj1NJkuePzPXOeO15b + z6d8yt71qV5T8n3Ky7Q0N5PULdTSzVXN7Ww7Swqq02DvX4fp+Vvv1QBlEaQsp1grkbtV0FoxSb9h + FjfpnN+7rOpJYpzYJLy1KKTqmj6nJrRO3G5D9kK32yZu15C90FXp5bn8nVVZsQSwjpm4PQ48z49G + iIUmFZhP96QxYqh2MiJVMrm7K+y4X5ONIhWHq6r0oxBCVzrP/RxaNFnligFzmEsxFIKpRsROGsl1 + 2rjLNuekhq6Yu4VX1z1fJd+mLBXBLNq5JKyXtBQMb1CRgnwTOsjEhtDVO9oLFGrua6Wy/AZpI1Lv + 74aYtg3/zhFlYpmtZRB5tgS9f5XledJaRQWBD7Cfjaq3bL9mQzAGFiJMTXe1XHuuKsF23eg5i1qV + YNMjtiXY8gVGCTZdq0/OKf9ekCGAWN1YmImu79NhrJKsixoVbFz1ga9v2gMENhZMM8opY7RACM21 + mxLevQroKUWzUFbcLKtz15DeRP2brFYJzOQW0LF2Dz/xKJ22sIhA5cMVi1vENuh2q1NPSi6denRV + Alh9rBKLI82ueeh5L8a+x2I3HiHotvL0XIwXD2s0uB7mRmxJoj0taqjFlc5kVvPwuCnZ1/dgd65Q + mt3NHyYP8xUogKhLXYy30AfJNJ0ky6ZQnpEU7Ybm+z5ejgqe6yiGYyooO8wvcrcyvfdhPsZmYByx + 0A8VrCUWOU5TaIHBhHa45/1r0NCTIxlb/Q9mH9+j/7ygOSdzxPz8kszRAQIbWDK5X0jXOglTCqLU + NgpfoBoO+99sukuLxLiFAtXcaa73VenkEiBHVWtvgJNJO8xZ5A/EfkoHItjahMLzJaVUleSu9uhv + rt6JxW5UHAipRpR6v91yjmTtZKsBPuRT/v42Bk5q4cRuvTTaNazH9zSN9NMLpKvtWnO0RK/5c+a3 + MrnpEVt7W77AMLbpGm2989kqU+tbJuOUaRQsbim8CZkVuOv1wqagNXVG2dHYEor/95I4dJz4Pk2j + gr5n86h9ErSdvGb/Um8kE73Yfb3mssRELKQGXYx4P+lBXWQ/KgLKUGWK+q4ehfFmN7/drYeT+W6D + IeTOEsUE84TMEfx7lFi1PwaSsZeHvA1jL95uydgrJFcYe/GqdOKcXYcVdTbmUYWxN3LigPNRBHuI + Qv+/KhdxCczcb6WMA1CTHoYiXYZ4bG5B9XqgXfbZ3z+cvT09GQlPzzbVaCANxhglykw2YUVLrn/A + RHGJyuCXo/Nrs0jdq9T2Nbk4zMK+mNlK1tpxoRPUoVGCrwkCtyy2LHJwXcwyTeZg8Y/1EKAyrD5k + ozq2dI8apmK2qkkw0jR0m5GofBfMh6hyCa8+nCg+5a2gvltoyW/TdCOq2TcFjFBYC0OsJ6BqDZxC + pCwPcEpqpTgipRi3aFxb2KIxtmhcmUwWh2+jqhwQ53pB2vG5wCCVwAiNXOBjVYSuQmtc+8eKbOzN + I0FOo4Ceb5M8vb+MPibUMu0AzVtGs6jdWdCXY/kv77t6Co4j4aGkGKyc3xs0UAubUweDqy8tr09H + OsegEj5yny46hsv60r+8IKYVItYZ8QIfCWrnUVLz2QfHbUGURLdbaUpScklToqukKb0/L2ExMDiT + 3BBh64oZO6AqBX7seqMgcl0Z3P2IqF3qMIZuoHzNIgGNSjBAoIqH+RjpC1YP0FCZCi5O8/I9Hy9F + clymmQpGdO6iJwt6OJuXKAPlvJqlm5clN9kmhaZMsdBvtoZ/oEXSZ4W1lPdgA6QroUIo0akJ20OK + 2ftZDXKEcFyZmcq8CYkoElngFUj5Q99T9lXGcTv5B7u14UVBI+KR5YtgjKezwgg3vieweY9WLRsG + yUxDdg61ffDXnrMDXM1KyRQkvLJbxA5afaS7Fmgv9HBmc19+piggOckCurwvfbcvvagJBGq//7i/ + 2iqX3OaHt51HlHt4KuD2g3e22L1atrfTC6waHtTJbd4NW7e7vXyLpdcLxm/vuRP9cBX153jj1KCL + 09cd9bxIJWY77RKzHfvEbKc2MdtRidmXV5fMrF7zWMDjIK5JzXYCJ+Qj+CfCLHdU9a4xaIefLXPz + ykC3RJ6WLRXYLVxyfwHTBJ5KKUleVqnnZ1xhT8NTjRw29BZkWpmsd7NtniNFoijB8uZheD3fhSup + oV2uV6xaZFZ8oL62rEIVmddKIVOoX3GbrdbpWHB1bEq9UavhwM7dGPDlIcNZXn2BmQ9lZp8zv8Fx + xrjnuF4QlGu7FFtEsckjgblb7BxDg3Lj6NBLBt97LqyStYhmb5ZXF5fDP/yR9vbIbCkxGQZigudp + 9K4A0XBk0RTV9CjHYOFthY5AX51sjrDwUvSA53hUomFWDgzsRbzTcgDsPVAuMfUKeXKY2yffRW4k + usSYyG0UmePSpSnrfu/3H5Ig9nQ1G6yGxAt8ijz94f32RzD8hs/BbjomIfYkhZLOT86S/CNUAkRp + yrQD6+pPerNX1GWc0jD2bWOj2tctUjizlrNDSWzqxKNSpPdXTtjixKPb7RJ5SXI5kVdclSfep7NK + DIhFQVgBYOag4jt8xEVJkgRj2k70+WKeK2YstoTM35i/xFweulWQRbMQgxQ4seL5WX1UxnfCPacW + hxPb7a8o6WMR2mv+UExclm2saf/LYkKlKjiBE1umDMHFdAvzCOwEtGrhD5vdBk1vuCvbLIj4UGRq + vsSDZDND7XWNAO4CQH59gztxtltDE3fbnNgUIWSyryrtNV1+QR8mKrqbAU4DnUSNrMLfJ8jf7LeV + yuQiuVuCzb5bHJFI3SP0BvmkpXlRNy+7SyZ6XSmSMDd+296vU1QRUst31BJ09WQnILyNT0OyvEtg + UNIfT3fi50V3oE48d1qiJdIz1gV38hVmuR1dpP2w4FJZpetFip1NDN6Dmj+N9BbjG/Kx/i72Zf3d + keG0IKLwXuH1XXn4fCfydVOOI8vrlPD9NAJKzGchq+vRao+0L7JQs1qT+PDAPt5Bt9uS+KDkKokP + XCWt4N3lPyuJzjziQZnDZ+xGscPdEfzja62AdkeK4IpdB2Y8+jxSxJOAL72fYdGpvEiAZvkBKBEn + 4LRbf6HxEwiEYmNEWwa9ghtV99L0IglOnC2NW/K/StNKOiu/pLrsQagy71bfanKx+6qjbuiDBv+/ + wxuVJc/z/SgqKTLFWo7K5xkpJnElr7sievDzDuUAZ3BOA+QQenRM6bh7O6nlBttJZIPt2ocXfUDT + hvSUmunV1qFKhtChSfudpDZxzfbqWfVCJyh6kSkzymr2t8Jj9LlKAHTcFoTs4nbbBECUXE0AhKu0 + zX/6/aNXod9xI0TDKzGyBwEYq2wUBHGA1WOijlNUV2SCiT67Hf6+wxPPsIYK56vYWD9lC6/KbmNi + I2dCjHmaypfUOihDz9whcyLtiLE4jr0K/UBH2zRmHg+DJtu09tQ3DgY/aPJMco4Ga5WZ3OjJRAx0 + iYy68AIXd7kmSvEw9BAkbHBWhpSCCTB8tjUH0hyBkwIRnNjihK2JXkCY0NndkjI8cI+m2vS5ahsF + YfFGZC1ZlKxkWg95zS+GeCVvx1bX76xTXKiLQntzzpKl2BcxEg23DcREzvMGWdCP8sxIY8w6M75h + cIBwyJfHSSGn1x766h/HaidmXlFOkSm9dhZXxNdVMP9AB0Quw2MlGdUdyrI1XSQdahw/KLJu+7Tq + /SdldPVTCh+5VLv2JZtvk7t0fCfSnGlhotN2mc47o5n6gV+7kvbagE3ajO/RerocX45vYGBJ9xDg + 6mMY5S/p8hBzfXfT05UOaTjs2jik8XZLh7SQXHFI41XSSc7eV4sSmGDWKjmk3cj1XSQH8DyFH/pJ + xMq+iCQgdO8P8Szczm5n6I1F22NWKtW8nwkOGZUZZKIfnt1v3BU6anE3E12HR9AbxZYEf7YtRtAj + VKpKaNQ2HDcI/KhCa9QXBhd8AyxEKgyv5ZPFE6eRU8hoXM5YhNl+X/Gsl73azO7nuI3xUyVbs/3V + Ej3UjKHxNrA+FXgj7BJN4zjAqZY7vSOiipXFBs2fszdJqrkg1w+LO8RtNq/fwR4rsR4HFB8pDr3g + kp2nOY3DHuF1p1oItpLZV/vZWx5VG+mQV/8oSfENyfp/0QR7nzkUad4tcUrnCn3zGV2e4ero8f53 + o2CNnPgf49M2wEbiAVtoI5JeBTcS1+kQ+vP00jUOIZhYMQvjyiEEtrLjjaJQxEbEEfRwOnyX3Klu + eEnYRVhosmmkKPwyW+82VDyFaRy4JjdYH3e5OSkgHTnx13FSOXBgGq0zuVY2MLoEmzVJVhvYTo3Y + ZWzSwBplahEcsRXU5iI+lcn3yltKapWy0yBNHzSfHrRVqL6bjFCTE4/FB6QW4CQDwc/y21D9KvQv + 9WvoCo9/4Vdu/KqIaJgG+0PLeAHf2m0bJJhDlCOXZnspqDEFhdNCdlA7N1gQUiINzE6Cj5CTqsBN + 22JnPi4h5mjmi05AXr1B0fUaze4R1q4zsqKWcDwTbF/BeViH6mPG2rv02kSn7io6Djz5lX2L9hhR + KSYb2vnHQucTeoJACzlGtM8KCXZHydHKy7GyfJ9GGzOyu82XiFO57tHd01dSd5/MIxRL0ttNT4gu + TyRPXOl5GhfGaw293gZ4vQq7rkHXKQ2jLqOmiPdSuasMBuMpAPbA54MfnTDlxrFYF83fVpFlD1ja + XvbjTkk1lQJF0s1bFIbS7bYk3bxaGEpXZQTt6mMlUQLUL79C0h3EzPfcURDDH6WpcMFHFxwOFGjC + /cP8bpcsRX1yzhGzxWOV/lpFjPu0XlSzFOxjW4VE+9CPYx76jTzdJZ+yWR/gNdF/G1JzU0B80zP8 + WPxU+P6TcfUL65MhIqfsLytyt8QRoqeV0/sLXZiUjQQXESaaYnIeD7jv/mtQPwYjnea5QbtZQGGg + oafUW4yHmWMBd0GjMDmCLEJB4oyJEvi9DTNB1ArA+0UtI8FtwOiAnkA5mzj3coJsHgo0KoeOx+0x + 2e+iY7SUYu/Zuqs8zglkVJRgiXKUWSYoj+roTnBppV/hN/y8HTUlwdTXRDi9+0iop3o2NaPT5Zd0 + nq1svTcBWR/q6Sp97+ESsu9kwXSTcaC68mgdH1eunk7Wa99qbHoSvV9TZETB3pfAHkH2/FAlwP5x + 8TevNemEesg2BVa/xMiBVVfpRFyvbmQ5nGGJlXiCnp2fD3OCz8uP56+HcDLCeeGdDPY9p4KY+ePD + K3ghtu7yzz/+FrLnDjFYOHE46I8gOAiqMsRz+/mq9DtyFppcJnloOu3T3eloj9tG2+Bs6snux4pC + pHFUz89HBS6zhp6z3ou+AxB/7nSgwu59H9duQztO4gHj+4goutpwqEb39QeYSvYBYrrdTuUmyWWV + W1yV5EmvLqsqN/PCssr9q+vzKAxHru+7YVRg2ihzk5E+/fFmVdWn1ToxdV7Xs8oSayunkLqGM7Na + Wvu6ySEfhGFTizio6DGvRJKteRdhkThOSUkeNTVVq92SL2iuyuIM1zwP2gs0ufgK7N1meVZo9qjJ + 7qgkDz7VfXwxptz4NmjPnSrbEkvlHUPN/hqWDIHuZesFaP/6mKLK26+zYEX5Bzh6wmL4ON+dFwXf + ZN9yNrs8wDFb6vNEMBZgv+ZhbqFQD3A9aDOAM4piQx/LXcQYB1v9/afgUfRcRn4JCnBU6CWxewrG + 9P4vqSWdD4mnsXE6VKT0Sh1/rMmz/+k9qVKuExNY8MdXb0v91iqJzJq9qfYg7CE44dTM4RpCyseX + 2Zi47gdeVZykW20lUZ3PVFH85gpWh71LjG63Op+l5NL5TFclquzp++r5HGGWQPF8Dl+MYTMOg3jE + 3ZApSpNLYf3DSr4eJ7AhCPSWD+N72AEnDxtUWtKC01BsrglukDdJsQA2f9Z4ECNMEms1WU5/y9bC + oJtRfeUUA62y5kJizSb39YwMZL6XfGuN56/nB2CLVNxgNS1sdnw5rCneHsUgPSwfloXvagKY9X0j + 6H5RgN1goc+5V07v2sCyWOadWS8X2WHjQ3IHFmM70qOFHrbmB77ezyb3mNWHBy9mc96i5TXNlvlx + cy97VSQ4kQlPZO34V0NyoduenU6zjymYpnBUJwgiMElXaILg3NbIYZEnkMOwL5V7oNTrRqKYFWeq + E4Su2GBgwo1lJbeYf7vl8fixPUGIiVHGRxrmRIuv7lAO2i/gFywtfOTQcmx59kr36Y/j/eotxBKI + Cus/Lz+Aamlv79HtVueJlFw6T+gqnSdXp68r54nPywnBkUBkCmJ35DtxHMsQy7VgDRtv8HydyqC9 + Ecd+Jg6Rq2TKnNUJ7Dpw9Qt82abmOVlpWEgGSb9NZht5YCM1Knr9p9nuRj85vFmnyWf555faYwUb + z0Uu5Y2SckVS3pIywYbPLt68ZScvhzgp55mACbrfLWA7enN1dsb0/KDjCj+h3nytb+utektdVRV0 + qNMQLGJOzGBa8PKBVtdjWvfGLp+m2bcHDAdUcwhMG455Vq/WJ1NzjxOIULFhOMHTZC7RsxZICITd + CpuU7OQMVOUUbTSjTWEjDCdzQImJ/DIOZ97x41LHj2RmF10cDf1fxnDGzNNN1UyOm19a2xGtPqgJ + A1R/0OCvuXb+eflW86zjzqJOcz/2XKLXZTKrdiZgVhag4ghS8Sb64yYLGvuYjMd9o9JGnLBFH2e2 + 2/sF5NH/mgKDx8HZH00uzeNSfl6r1WZlhgYu02VWW5G2vTe3s7HfemWvHsg9ev/HV/f4NirE93Ra + DOTGL5TKIw4SW8fCE0qgDCjJtu6rW7lLnma2n6Um+xPpw4TN8uqKtcGip9ut9GEpuaQP01XpX3n/ + xi3pwywOHBObxfVejL3YB0tk5MVBxKU+rKqqhDNaYEMmG2HgThO0b4c36fZrmi6HHx8ybyXOZLSf + r+9TviJQT7mTvNR4kyKZBf8iE2IkDF4yuQeTEL5MvAl2Pfhk8brJZLcwnKlrxDXLmRQlkunNbvpy + mMw3GTxbIBqaZJgkC0P85goG7T5dz2C7naiUKGinW9GBBYUwWIqr4bNNutzshm93y7vZSSkRKGyu + dgt8zn1WCem0dwU1QAgs9tRZNBcIcsaZV1Y76+uLih1VkO9FrtMIAYM0DswtZ1NVBlqgjBZK0k1o + 12aYVNX8wV90Qg5wkWpHkeuKoEzoU27WgsoShXqwAR0aW9aiEhD7le4u9nz1k20Finmgtvz9s+eg + yO7wXg7yZojH1BdBjw+3Mzs0WbGChSNHr/bfLPKaKB1qb/i/tqk9BNIDrnjEufeKOe0IMvOHbLnE + 9UsMNnF1VVK6XZSznC/PLyaStMuUIvjEo+MzbH5UcOx7E862qSQ6mL6iZhDV6p9/cKLIXhWh261U + ESm5pIrQVVJFTv/+qVKrz5ljgqV77MWYxWHMoxGLYw/jZ0aop4BaMBJZlekaN+JEQicqvuXl0GyI + CH4Pn0ET2Dg8gQ1rnkgkdFHWLLaQd6evTjUvceE9Cunt9Mu2WsL/JZnssnm5Vj80QjAXr/NTnYce + q/rDDgIC+byx7tGUmecyN1Tqm766OjmDH9rZA5wmus4edosngmxJYNUUSYCBu0vmVH2lJoDdRgQz + A+9sfOjARkRuAXo66Q4GIwGCxGaWtKtOfwqF5GpL81Q6a+B5z1nULptVPmObzKpeYeSyyou0vYHy + KUm8Pl2dXl4aRyNdUY4V5Z18hU8Ub0MRmI/q+qHTE6JrRygo66zIY5Ei7BmEGTEItxHesxZxdFZ+ + n3gTsfgA6vBkBfZMsv0uKbouGhV4pzmn2w+sXsa6xI8Fr0FhdNqRv6uHbEv99EuMcj91lZbyIvvM + 5FpOxmzkjhGdNFlq1uoBsePW/GX4ER8dCAGi2g8MOSr2i0NxAokoPfqVkAX7WJ94n5AqTgzTAR85 + nt8L7Sux7SSbSYZLM6XGwTSCnX5un/EEpiYVuVJ/y74+ClvHdX3ftByLTvaWEKwe5x65oW0+sind + z6fOSr8V9+h1etehZicgd2yp3y1tJB5JM5UeLZ7Kh/My+kuy8P0gH/JkcYh51f4A6bP2mvCZ6kSN + 9FURxEQVF3NFKIuo5ULyXBbEsldnXYvOYS1Sa5s3rdapiEfJ3OsxV0W6PI5bVAyI2y2LdIXkSpEu + XqXN/9XbK17JSPSdSpHurww2dVhwI+YEjHN5XhQTw6t6liA8SrbCR/hqnd6miOs1PB3ezLPJZ2Vn + vrpd84bkjHm5KiB0mypqm3IJfyAq3LscY9YLuRMG/xq80bTuq6Jvd6bS4jX+bOxcI1mYqhDdvBwu + YO+6Sc1MfLM+Cu5BatJJtkJKlJVKkxVWq2AbFvMTvqIwFCbXCtbSEkS5zEmYI1gTzW+MmKOHF2uO + svl0uLmHMRzg7NH59aETks+L8nbXh8q3HgnOrS/s1u+sgx9yyhUC2rXB8FrlNSCDqDSdDvvkevHi + hobB2gbOQj3SylwNaqzVQHlvT8fqE3SCS821giy0S72ASy8uOdAXqtYMUyIby77tjUk3zJ3sIkMI + 0x06mBY/yFEceTXNl3kVRxhKLV3C3w0Q6omUV6rVFUlIwIsrJ2yRfkq3WykPUnJJeaCrkvr9n59Y + xcntCTd20ckN2kMY8sD3RmEIqyoy4+01KKZUvlDoNTi17tNvyJhR9B1Lvyy5ajej0lkmK0VSUSd7 + P7u7H87TL+lc1Iop/g3J0P5ty6q+7rK/0NAXoihocCxHMY956JYVkVucDOUPqHd+u77boEig7gWr + rlL8qD7HRrbfUvYCp56FbAaWXZMCZMrOGdlLQ2qGyAPvYFMH7yuTYqR1GEUmCpOAlqTI7hvfIsXU + citMO4MObpM/evMgyOAq82VkN6lgIdc1bLcay2o5ap3QJ4rE8evk9nYmOhvVrbtkntCUQWKY98Pw + eQiqyHoDGzX85j0PrVozwDXqUptwterAe4h54L8pqEacGH24YGHU3Irj5whhRBFfnic2zgYppD9u + rqcQC5CxMWOE2gOa6xPc9YlLdXeXrF8oznUwahdHyxWTwNzzWkKxNw+pmKz4gLHt9SZebGRinIs7 + X2/iOY9i2es3mNK4Ldfh9ghZH1DF4+kHx4vtw+B0u5WKICWXVAS6SirC76dvyxUqYFaVOFRd98XY + Z5EfjXzux1I/eP+wysjtCWvl96u3Cu43mYP0yeOVH/blMjiCN1Wj76LvaXBM4lDHIM6gT3BEHhGl + FREOTArejy5mZZjzWvqnGMXg7Ygt5UPWzJbqJSa1pbxKc3yb3GIifCOIxqe35+evtUlUDIFa3K7C + p6fmg/hKAeYTRr40UiU4/z30AGbRibKGaTovd3Ad3k4vgAa8KoN4j54gPgJ6qcK97RUiLCGMWrrm + fUqLuJ9ttkiSlkzSbXdvAtnLFI64Pn13eoTprfrGCUllyqdSy/P/R0A6UOjAYkF175djXtIMTnps + nQSWHAuFAnUObHh10rZEZLCfyXFUA/5VXESdACXUTs9UGmgYhs+Z2yoJlB6xTQGVLzASQOka7fBf + VhtXZoIKUgHo2tr9vPJHtXv/HQUMhBhMEI21a/FHpbw0Eiz1RXzmkeaRB2cRhqAtUiajiL/oVgSh + KCjFI5FZItzZOjJzUDCpUgRZqB+3bU5HjLejrEaEm/F0FxRnlm2rW0iwTmIJuUZSCdshqYT2SCph + LZJKqJFUapDOBMx9GUnFcyMnHnEv8B1eSq89/XQpiR3RU3R6eipdiiOtd27IFSkKK2ZLtjK3Ouic + HI9G+pu2X7Px/cPNGhT8DaIlLDRmyuoRMVPkl9Q65mCPCJuclYHvVYmSj7Bcvm/XDnAWFDBH4i62 + Uq8Bh6NB/FnIiFmTmrLB2lVYKEcgi6s1SynxF4LLxz5cIG63CxeQ5HK4QFylNXv+usQchNECl8WV + aEHAvIjFowA2TyyDFmtWMAnDfg0T4+L09WVB8Yerk5nwpAynqfJiaaCc+QPC5OSs0TAjCw8gho1I + 6vicbjPBXCwu65mZH1pYXA/vffb+15ORWed0t86+wu3CT7AhAhj8S7KFIcKAk8p0OJ+uqiV4R5bK + FeMVqocq6fmGqAKeQcxCH3bH8l7S1J/DZ9gBv540IDF5fhMuhvEevcugsPdo4Am1dVvBeAi9Rnme + z32nzH2UdzhWxiXjfMgNsYHbxDVcL7bQG02AUcxkoq/58sHPPH0HuG41gXDsSy5AKs6+mz9k39B6 + TZtw//brr04sTaqZCBmAKBWm7SSOSVdTddA6IzFYirSAr5JI680T1VoTVdl9NWvIqik9oV35PiNg + gvwT1oJhvmWVW2fnZndGETK6C3vmYR2hR6IqT9LY2m+130G+BVJ/L3ADHsU/cM5kNF2OSU4NWLBH + 2oiqXu9we8MN8ez9+Pf3OcbdNFtmmDkAvYFGD3aKKLKWmHZtbTVG8cpFsrwDSw+a0T2NtSdGodBT + hZBtMkzpdttCyJoMU7oqLbV3pxVLDUwYXi6E/JWFEfw4YmEsSAYpv7To1kC7X3qD85iZCAKqxOli + eqTIRcZ4ZgG/8vnw3MxwhCm+/qJPyOS3ZCiOMqSkzF82Gt7strAfwDvhhMQFgudm4QZl4t0lVRNP + Fb81IiyIOrsGZY97scuDirUns4/ZyBvntQJoKzTjZLpuE16C8Y4c07LwdbLpxuQxPyFkPjPEv9Fa + lYsBeP6vwXnPQ/mynKxaHcrpbDXPUP/uMqYDnLd5ZWbA6AygVYnuVemGRFtRAXJ21TEepVwGhAY1 + bT1ebORIxY/GxOLjG+Ea+lFD0Nko+q84adfpBtOhYWIISumCHpwMjWnY2iPXxrNZSElbgdqXro+r + rO239sQl/cluN7HSq44U+V3I+kAQgYRUBRW1BV3KcpPVosDtPXV9WdcBGkGbug683bKuQ0iu1HXg + VY0MGlQdpJxVqSA8sCU8d+SFvojmHEjNfCkWs+jOSYYdshnCjizDPcVCAw29GXSkjijU6vOIBT6r + EDX0lalRrInLP6YoInZN5M0iXo9qnMbrKZ5cm9kGg8Uqkoo0XvcCYc+2H18WAQVQgyWoxn8kq1IR + CRxlqOzDrRv5EhnDFio4VXHogO5ATA9dueFxcbqFDlVuKDy/xsZXV0NDtZ8jl5qiB1MNawxB9Iib + p9Yi1Vh9vOJxC9R3ut1qLUrJpbVIV2ktvvv9U2UpurFfypL2X4wj33fjaBT5sEXJWIUaYxmEEYx6 + 0L/pGquIhMcH9KWxoPhKYDpmhSI95Xf8c7GGtlQzpuwJEW1A2xf7tE/Ha8ThAIUCdqWy+pmAYX4j + KsY3q1mNdzB2SkQpby5HBohWzOOQRf8afMw/spB4ZDjA4OJ8dqv8J9m6mDgj4xdY/iUrtSbJTibc + Zl9gvPPzHW59v7jDWrYuY/USpvd8rjQl1EvnycMGFN7JGmEGcaZTdE7gkCyMr4LFhx6MebbZDN6/ + ySuyvFhWZHksz81pSjQ5UHrN98Bg7S/D3pPIiaMoVKma0bZUpX4crSwDE13sS/PZ3THaSBR5Wvdf + jpezLWXhlqSOyKlLswhRZNBNgZNofDEWXoyWGooozvrz9w+O16J4hG632hWl5NKuSFdpV7x496Gy + K3o+Zh8Ud8Xwxa9goEbcHXHfidHbSPR58JLfFCiXjDmevByenV15w7MxTA7oI1gZEst3pH4QlSSg + 9W2y1T0s0eHp8i4V60eVglzczY9hjrXYKOvBQ43dErWJJk3I9SOPP0bAttgu6C+cXhLerLifJbn7 + sxDCML5pAbrDrahvwI1umspiOfjL2WTtQecK2okd/BezQUdUbZ/c3cG0VdvzDDe+bTqRhRJY2TB/ + GK7Azhe8sMXdT/19vAUtZXd3D5NhuNnuprN0M8AZpjGsPYd35aEeOH1iyHJhxaTfvh+E7PcAfw2J + /O5/ruCot99Q6HarDUVKLm0odFWqWW8qqeYcNo2SmsWRDCEMAofIEGLaUM7u5xm5cu4RGHyuOYyF + 3o0K+Bg1g1W22Y4N2B9RNZTr+zPonkKc8KWauwVQcQQGy+Yw49PxnVDsJ6V3C0pj0C226c1aqPO0 + Nb1Lb6tbk9GW0tZkQowWo5I+d2oqvfa3qgmpzWum13NCz4/LOKkS3AE6JIXOTJCrzYCbhf8/0OzB + 3/c31Bg63GzusJNG4keZ9IVZTSKDZCRKrUqlfnSxOKzVRjeNrB62Q4M8wOmqdic3clg/6YCUPIKX + usugOiXd4u6CqI5Ge9sm2WoF9mR5+O2jnhEVTGuBYrW1FtcTtt2hLML6p1qBYtWLsMTCang4zB8W + BYjz4USY+cvEUsRPDqcnNi2KGQrnS3l3a3kGS0gkc7H3IzisCm7elO3G7lihB5ossab6kteDfuMy + zzEb1T2UGqt0dNd1njthGwBG/YxtQrp6hZGRLi8WKo2oOnBQVzJoiMGUc8cNbVPObQsA+iuuRRer + kHSTrKFD4LXpavs9tsQjtySfcdoOBSjdQUjugaj/LMBptSz2tMU/jhyNMsjeMSR+bzNbC09Z4wzq + 15hAg+oyaehw7CmgQcIiVwjxK0EjlEMgFWsqDtz6BmUW78eXiAkfO6rGgg49PHRF6n6dktACAtRC + 2gFnGu1r9GG3IF/k2Oz3otmhwByN2XlIqTmACENgdqJbPsOt29aORmvtYq+e4EjQTv0d3fWNo2o3 + PInnWDeDu42wGxZFds1RdyTM3nxyMI3NvjiujdR952zE8r0rblfeqx6x37XiUmmvukb71e5mIh2O + u5vZ/7Ob0TAu/727S0SYOF3+B94xfHb58fz1MMRquMA5Gey99w8QOUC5hJcauQMieAod5ZSqjbxt + QN9N79pmifpkDeoGFVx2Sqk6NnUlcqTS9zCZ24nbg7wQ+FSUqxqnG26f2uq5ATm0hKumEPEoRH8W + 2RTzjToEQuC492poz7Xgjnks3RG82pIteJHHzSmh2l4TxTicENpKXKugSB+hlVj6NuEkQVr6wmI8 + rpVqo+Jqo+KnsGf47VQs+YztVqVeYexV8iJtURNMYVijwyrdfYbnMwkYLJDtXv/xNoKZKxGzcry7 + XDBuR64Luy3VQ5GTXPkJugHv/3hnx/Go4U/BZaHmG+XyfrhyIs8+k4Fut3KxS8klFztdVVlF/6yg + xbqMlUhNvBdjHgd+7IxcsHd8mclwXvCnCiKqBPtkmUhsrpvZSrA8yNiuzh/6VkWHRfajZTr5bHqi + 41JhT7FkijEnCKolUyhoMylxc/kBZ20F1YHEiZnTyD5SFPQI2DP4YbNtKmjIJ5XsCYdHRsXS+btz + I3tCtW5wMVZpcMJTtKrJcKobyurbZY6uGmS4Yyogaw1WLpmVsRnCqLPVACebTmVwQk8WYXBlbmsm + rNK7WmgciCmvXcpdKo585jpMC5jOvszq86P2HPucVT8I56TlHtc9/aEPU6sFNdkhMX5FjFjjdt9i + //jPstnnPBGuFz532qBf6Ges7SD5CtMQoouSIyLdqdyL4uJHJmh0gJAFxHgIAxH6J4NiIrbaND6i + iIEQJNwzUUzumZDxgPp81t6Z8r1Tv3tiemAuTRQtiCJQmo2gBVaG3ESa2QweK8GyX5fNka4WFhPl + lUo07brqAuXjZ7CxPnfidk5+9ZCtl1+/xHDzq6u08ibZN8XOglaecAmkwwmVXILtohFmzpPB4RtQ + GDEUSqaWVil49nGBvupCf0RuXy7Dc0oy4GPT5Zd0nq3aG0MEjGoKmy2XaXdis5Bwn0yRagAzmGww + YwvJ1ud/7z6iXden8Dmw3ElBs3Ocz87jUai6yj9EDyT2E3UTpmeKuFRXh0afRa+uw2nDlj5F6Yw6 + DtNL7YCUGHr5wYlbMGfS7VZGppRcMjLpqmTO/PSOVxK5fOaXcEKiF2M38NyIjeCfkPP9qKGrObyg + BjVUqgP5tVqDK3JDXmdwPSnU0Mu65HaF7nArPhVLISefBcMymm01WeSDj+/yBPLAYTG5pwkDoTbt + vGj82ZheTwRKWc33SOvZ/Iw/Z27LQKl8yFrTVi8xVW15leb/7fKbBL35+PaaSF2m693dML29ne++ + GTH+gzegLKFth1HQD+BcTMgCNjxie/cwLmteCySlM4E7jaOaNSdj9cp0tkf1OEBd2oAqYctY+jST + o7Q2LeGwiqL2f1QOKtsvRjnzGTl8PoyTDTpw7zSDbsvUiUbAQ0aUnh/Gsw2M9G7yCC+I6QXzh01f + wtXuRQDfr6541ALegW63Oq2l5NJpTVclvMPFW78C8B3i/CnWmXpIARIH3B+FESgvNS7hu3l2I9TX + RsBfhbKwvPUr5/j1P85/g5ZoXdfww/pm8WYxpTjkQVzjz5Xga5lQrnQxWI1wB0v1moQ7XoQ8IWXw + ho4wrcYncRNvoemtedZ1HSq0AWLluo3p4lLi4FpakrIoTvd5nWzVV4aruALwp8b6pa4v3pCqoAPV + 84e6J0Wn0CwRZVEwJ/hKZG3DT8FqgJNS4wJ6sUsA2aTETLPdzTwdI/Y+3H+zTpPPCDWYzGpcro2R + dVuwbYsDtR/w7UdFy/Zcx1OwhgUZdl9fc9R5fhSL43WViTrn9KiWV4GauFl0jM3slM/03XGsxV6F + j5T3s4Mf3U8x0PFI0s05A/LIih1Zjw02tv2RRbdb1mMLyZV6bLxKR9afn05ZNYwpcufMguxfPS/m + njeCf2Is29pnYC7W8IKv/x20FB4cmjjpesJvgY4jFUkqSLWUx19mCOgjrIXVbCEwEdq5Er8zf0Z/ + OC2+F0mq6i7ZflFEntDpTJT4TWer2QSGaon919kRpdaySNX78/0Hx22hftLtVmtZSi6tZboqnUVX + FxVfEQuRY664lJ0Xv3KEFxtx13cPLOT7OUj/L1nIDGy9gWD2JuNZM4SCcDwEauNxOBDpVywcgd6R + ICaok8F/YP1uemE7/a6LVc1mrrDywhao5nS7LVZeWEU1p6s0mz+9v66WsFbya9iLMWdeHEUjsLNj + hZXXNJ9nc5D/yOgfT2pOu24s5rRHOmbRDyTcZAe1/K5l4moeuQpxxm2BrUC32yLOuFVsBbpK8+jt + H9dVBSeKooqCE7pBjEa5G8W+5N06U8snTx+sltRu7hdZhnkeL013s6jtn8/ulgvJZL1K1si2OJcU + rMOb9BYD1Eo3v91tCulBC8rOpIn7dreppn7p95Zzv5p24dBHcD3+WBO2HPSW31OQ4fkON7lC80Qr + 1bjBD+/zAc4Yrd5FHpJBusyN6sxKAtdQvy50Ru2/Zf6VDDlYe26hg9zqa67uM90VG/g49EKi8dEu + jKwNTofXJinIvrDbEgLOpVe0gGT5PUzKznFwz3Vd0tAro2RTq+b4UjHHwbjbJcuH+bhAkZB+wwrP + nPT5R9R5qj3X06xw4Sl/7nhtwjj5Q9ascOolJiucvEr76KfLK/QrpYkuthi8v77EmDyiTsPcK3ME + FYvYjJcgzRsLZTGb5xslErfZvGPhzvcpOtATUYasdd1Ja6Kso8wglzmE3HqP47G5zyafD88325h5 + 7KvJx/l75jxnTqvJpx6ynXz6JcbkU1dJAUjmKy6DiB+uriSQz2ALM20ucHAl4m5xMspF/GYgnsVJ + xyLJPhk6jKDPZxPoMxSSjm8EKlk3ez+UO76o0VFtQDevbJ+a1Ktke/81OSY3BN4kph2hkJbl7/VX + dV8fx1Zhdlhf/dRehl5plNsszx4ckPZCDnirWc2gdzpWAn2sYE5e21OFnrE+VOQrzDOFLtJSloTK + D/Ni1FxlOhWPjw9j1cAVOtTkLYPbZCVIQ1kYiGwAFnvEg6Bjk7X1ewfrwPrK9/MpvTb9VlSwQC3s + kLv3Aygov+eyH/SdU+Y7ASWCvj193bxUanrNRxZIvLNuxrXDJ/FZ6Ig26Hk+rpnndiLVAg7zNPo3 + YetqYnrGPo2eXlFKoxcXZTLv11vuKQQEZH0tQIAO3p1d+GOF9nsxrN4gnhaFekxm8ziuia8rIPc2 + K1i/MHwj4TMXv6U6/GVBU+MSwIGQJXeBDm7nnkIDkUtw88UPayeCBQ6da5tlhlJqWyRACA91jUV9 + 8nfTwY9ky42Igt6cGzavtXiwOSIShDnL3kzSPHWLahzNmntM6XILTIQe1BkncmgJXIwrW0Ifjewm + fn+LOcEZ/Ge2nPQEL2Ev8nvQ6sSR0gtjwRLcTi+Uz9jqheoVhl4oL9JZosE7B/Q/1UqJWHV6+Yq/ + 8p47QZtWqmcsW6lfUWyluqhaWQhQKJdIXrVOUHyF2vRcJhx5rocq6/epCrFf38dXmTylrM+Ysj7N + LO9uedWxoxGoIrc1igs9Yqt2yRcYWhddk5oWNHkjoJYE+sFA/346f2CKXqEoCS0k7vhUHyU7xXRO + Wzmk+4JseuwanR6nEllxfcILqelEmQavP3DWIqZGt9sxqpDkMqOKuCoTXd9fldlrWRxHcYVQJQTN + IhyFseNLcOE3tQAYq2TyGdOZ73IvXImZE466bL3K1nraFawheGCRCpIHkS5/9vvl+flwkgnbQUET + U3RIJ/rLMJKoVN/s1rfJRKGeX9+vq8y0xWlQD+FRh3rgOiwMSrG4URH5wOMuKOTleFzuiKyFGXZD + v8y/Mjq/PC+QSAQe98skEsjaoKjh824wsl6jyMh6FUAIB+UWhqFJbNBEMqu+f/B0J8UAZ7rmhnFD + 1iru0Azeeyy0cVCuF9kjqrkVFEQoTg3ZM2MBhyuYdprl7gGv8h2XFXuo44cGviy2MsOMhtSjkDZb + wvIcgvjZwwvyQ0rB+9SIcC8ri2r7qSWvnc8cKmjZLXEJpdPDxmF97UfscJVI67RKM8HbbRNpnbo0 + E7xKR+LZ67Ny7QfsbpgqXkoz4SFnsTuCf4LAPZhH6/De0+/ako/9FClPH0u15JiZoebhZoXH+wRB + 7tEfS6Qccqq9HH48P2Mh0mzAjIJ5P4S3IhsHFXXClME/58m+jjd4zGDY49Xv+1HVnqnrJssmdRa3 + 31JydYzJeRu0BJbOH7KOMqmXmGEmeZXWZkErX90ny0H5d0MOZifErncElsuP8oJ+3zRT/XyrOI+a + JJ7c7MHCaLPZ4+2Wm72QXNns8aqkVzn9VFM0gRlipc0erGcWRyOYFlHkmISSk2y5TWZLPOZA3KnC + IxROvVu4imAYuFNtDBK1d/OlS9Vdr5N55MDZUOACW6fix1TUoKr6TcmYkmyrGYRtuScdF0tAKgaL + da0e2C5OM/ldUbg+EkzZZpWef1DW4Dt39gAnhj4sQs+jYrtHqkjrnl0+6CVs4MoQ5cFCqEdxl+9P + e/DJQlK7dU6s3flze/KXx46vcJX8APMZWqEq0SO2mEryBQaiEl3b44WuHnBaEIInuF6Qu9VjJ2cU + jdsxisb2jKJxLaNoLOsELq/O6hhFKwVs4wi0ccZGYDu7XmxB7nu3TlP4fb7LYJ1PikDRz969vTwZ + y3zZco7yRvsR9KEIf02GKxSMlUYmqqdgJI0nq8Hrh6WMuN1vlSoljHAJXfTsw/nZycvCa0S171Q8 + NTIYMwVl3C3mtn4RVO86Ij67I1fJ4PWfF9qr4cUMtykEdHP1TlK8e5jMM0yO3pcK1VA2cKRyQAj8 + k0JCOH1uc8bk3oSqzjlduQQK+RZbtFdajc7kOpIl49CnNG/cEloDDqzu+6ytkCbnUQ+JyrGjE1Ki + 17ylsq+fsY6MyFeYoRG6SBvJ5nYSF/hkSgfaoPaU+/T2/Pz8rJK+fI2iikloKJtiKT6h3AcueZ5K + UrHHKpXG59jLMFBpTYa9VWDFYTyseVntJ3QOuXwP1HY1cSJ1hIZ+2PYIpUdsj1D5AuMIpWs1UyXH + cYC+Kg5/bcebOe76VYKfKJb8RE8EEMGeEeaR0RdcDqqIUOyUPmezgPasn+6KdX/r4umkUj49t/Ox + YKa2ho71aP4ws8m+hY9gloFMz1h2HeAw/r+kqYLqE+dlMqeMP2ct0+n1U/aFMuo1pUoZebnNafbq + +rWiw5bq30ibT7kLf7jO5uV3i0IaJ9LJS32le/wYRyQj+JbXV4wF9sYv3W6XiEGSy4kY4irprB+v + LqvM8Y5A1DYzMcYBLAAWjYLI9RFsUEAqmmC5hHdQ4AaS2FbQ03c5dDJZrR/Xq/3k8CCGnsvFKglm + 0CrgjU68mMfQ5CrBxPFvKaQ1cDfmfrUoujDbMC1vO9vuZEWxxoUwHZslxo2m7+jvDU3fkKdm1MBY + FyUi3LUh8c2lwXxhtDuv8tYGnwSmKbFWOwEYOYbYs0o7B11m3kDMdZ2L4XOJZBYLa/qoBH1ssj4x + 5w0J7AdQe1pAhxecyNoXpLTbOmTspmaVgCb7KMn+0SjjQQ22btMKb+n8IQBzvbbaabSK2sO6Lftz + KXw6bVAO1ZB3LwV2Q6ofvTpCH5W0EYc3pO8neI/biDEdJPbfsJZkY/lD1kFi9RIzSCyv0kmabu+T + ZTbHfKx0vLrPNqt74bh92M6mD/OGOgKDqLWFgEptvGogRp+hg8hzEBA5n5KFYoovqQcWq99dtAod + EDISyczms5WoWTkgx2bz9GU1e2dR3481sDcoM891qMKzy9zprin3+9r9bgBJGtGLKOJ61YgbRzVQ + bSQK5IoxZp9IQLdbglwJyRWQK7wqs8Z+/6f/qoJyJaqQTJSrXxkoTiweMZ8OSdx1FAbt328Epn0N + 4clo+PV+NrnHiBDqUxKuhgoZ0rVSs/bycGjWhzy/UsSjXg5xG8pQnkCmlUoN9LsE00mWShmSIDjQ + lHk6nG030JwMWX2Gf0+Gz86yb/7p6gSbWBVhCiDTAx+4qZgee6k+nm3S5WY3fCO4IJOTkm3gN1Hc + 8TgKmFPJdtvPrVGUjWwcNrJzlX1pobQ3oR2HEfNc+Ovgv2xeDMQiyiHPQjIMGK9RpautHpkdtM2g + jx7uUjut9y9D7vMU+Xh6dEwfQb2z/wzvJnMv7nAvSAbqhPN0yX946j5Hz1ubkn96xrrkX77CLPmn + i3vyTT4l29fG8xgAix0mA2DEXo/e9v182mVj+CmmUPaKeeF4PisAHhxToUwuFPeXsf/LOP2WTVPY + ArVt2o/eCRocEVDr+tzufNhUtoLFB80tHeEkme4ERAJ8lTRZFtkyS5FO3nZw1TryFbeE24JumG63 + 5ZZwq3TDdFWB+56hNl0ml2CsTC4xDiJYQP4Ii4RUntPpesV/c8tpCqMhSPw8m2fTZC4gkoR+dbqe + eE5Fv5ISyn4KQ5OKokbWYZFvUi11a/YMGNhNxlu4mUJaUIDMt+RK1UQUvMJ8JFDI9V2yVDS7Rcmh + wxor1ZTkMu/D6dVloWMLalUFlRLTS+c42zGdlAKj+Bt+KmghYkekhq6S7eQ+3QzEgOfEDW4k2afK + 52qGHMT3KUhTtFOHcU3wU4W7ck/XVBZIE2alE7k1mJUl0TJW2Cj8AGIl1cuRTFrr9WIqoI1Hb8o9 + QIkRcmjDCjrscJCmL318NxdfH9lajFI9Lz6w2LW3lul2qz1QSi7tgXSV9sB/vD8vlx1zj7kmv44X + YI0VWELhiIeB4x2osVrOQX5NjdVfiAxPw0H7YBzlubsslAPK2yDW0+2WA8prEOvpKg3oh9NLc0B5 + GDlRyLzqiArAnRF3YLSk++P0b6dD2OSwwTCltV7xfPjpHjZgNdUXoN9Rqj6OIe7Et7P1ZgtGZYIL + kJiQU+EZyLaUHz5Wy0PIECJpsnxIVtXa8P6q8brCkIcBdFvVS0HlbpJNOV1t9zgqkIeqQX4EOnjo + VsTX4hYZ8crArH0vkii5oedzb38ZSQ2Rp1Fa7/OoocWGeL1+itDncIzNYD3hcBfRqYMgbBoz1QuD + M1VFSOwbultFMjYqmHm/38OKxSyYZbHbX9Kkmmw3koQyuQM7GOZj8Vlo47fZRNx9n2zqJnneKXAV + /l1nL0v9J3QQ0YVkHN0lojHwKCKhvUvmHsxk0DzucVvJdiJr/X63SJbDVx8+vh/gysy3jYhcKr4T + 6VMkEwQHLQ9y1yOTxfjY/XZdk7UmRovUjtqB7UM1eJSStx/j67HBHDusN/YANcZi2X3F7UkUkle3 + qLZ2LOmhfQjyqm20EVs3at2lHYiI9GNPi51UR2n2bb97v1bpFCIz+883V8xvUQ9Et1vpFFJySaeg + q6RTvPrjKqiw4IDJY9rJ4YuxB2Y990fwT+wrJRH2JdgOUSl4fXV6yYbPLs64gM49eQmTdJJN4TOS + IegXW8RnQdSCcaG0UOkc9yRG7qp4pzQXpeG9wd9B8sthIyUgXJhtZ3KghPLxarcOulVwFkFcQuay + IN5/9IJBSrWNzWWcJoukgIopWsvFt+gTeJneJYcI7mhiXWZzI2vbUHAZ5zbvLlrqMGIpyMmmMzRB + J9j1jdNd2WXiQL+Y3GDVrLqGW54Y0k+vLoUdP0l0HWhJIJy4cPkLIgmIiZEWxlOJg4WTLm7mD+Q7 + my3EYa34HNOpKfFlaVbRWa2m5wBnvXYWxAGTZR8inca+49tkzjfDvzzyi5uJKJ9GscT+F8QSj3sH + 6sN9clezrR7glNJOkZh4KG14I9t3ckVb+h6EH8c9Xee76KvQmdUUa00yuVStD8mCPK9OXs2222bZ + HSP2Uer8tNrfYzW2UjSI7fl/rhj37RUNut1K0ZCSS4oGXSVF483Fp4o3ivtlEAj+Yhz4XuDzUeD7 + URg1gkDgbj7Wkfh0tZktx/PZ51Sl2hdVhQms8/u1IJudrHezrdDR8UCCob/Ffr1Jt1+xehmVDkL2 + wr+imo3pdpuXOB+zCVYXyzpiUbCspCbTZIWz+t1dwldS/Xiz3FZ9H+ST1A5s4bpW2RZvd8u72Ylp + tHsmQbShmUAXIZNzxb2iGiWhyQSGWwlljzfGHbgXYT5NWd8pz2bTE8eaE62L4rRiI1H1Mt2/jVB4 + cWOAoV5ybf9qtcFUizzTd1FMQPe82HPKDpHOYZGDkrEbhMO8nBkexQfbWIfY8VRXxgB3AKV0uVEk + eGCPx/aLxV65b1LZ7t594fC5sDCFHKGg5g3Khl+SyS6bF9uG3iXQZFEj2cyE43t4k00fhhucxPt4 + bB4FQiCMvbwzk9UqWSfb9kTUR1VDiv1JfETtTmajMIiNM48BlfYDG8+NyzyalkXoAtUOew9SL8Q2 + EZcMxzJ/uMPpzx2T4szvwHDmtyM48+v4zWQh1e0OVWqDRLiYpF39syEX07a5QyQWAaPsXHgkEY9Y + cEbYpmD0laz2JFNrvl+l4F8Kcr191pHDZCXwbjIh5uxpKnyQYJgc4XONHTK8dYLmJFnDauxaQcwC + 5psLqbA0L05fvz/pJafpiJfsb32fSYCcKbQMxrn7nLmt4DLkM7Z4GeoVBmCGvFgPqGiFjaHEYm4g + Y7ECx/gLYE1od47nxQe+pq3ER3UQdeXzsWIXemxYuyeN9lAtvPoLIDr0Qv+DpFM1jjgbN5wtuQLX + SNIeawNoh7fbIkmj5CqSNFyV5Ap/vKoC2gVRBUl67PpOHPgj12dxyA8iSXusSnz/V8pyggO3sNPD + eQxTDNMdDPVkZDgLjBp22BLT9QNYaFmyAQvrRgbIDUBQUBhB9odxnkxhSB+cXp3m8J+BgP9kceSL + OfthbMi1rHZssOz70OX7Muj6JV/0fB6Lze71OB9DNjaVzP8Lg/3s8uTXf7VzvHthxIJDsjsqWTly + dezz56xtUbJ8yNomVS8xjVJ5tV7RQiDqrSgtg9V+o4j61MhfpRPuDRa7O0ExxQMWSbpjn+wDrG4h + t88mvVuLwF5rY6MbJHb+NDmzoP0zXC+iXq3uk2wXkeczyQgvxdh+ZK2r6kmaxf2D3nBC3778wFgL + 9G263eqAlJJLByRdpQPy/f/L3p91t40k68LwNf4Fb96vrWVShUzM1pUseeqyXXolV/eu/a5eZ0Ek + JLFNkTwcbKt//ReRkZlAYmKChGy5qs8+XZYgIBLIMYYnnvjtqhJ4CZhvZkL48YvnHk9CFw5Ij+qy + ikr0qymYyqhvYtGr0XSOwQpSjzG+rhACCuExyagQoDDp3p6fnh2RU1hpTUUEnoD6ywfXg7fw7W99 + +B8/HQoX81v+0jhL3k5SthwOLpcTD/55u1jjb+LGxRpBBxNEm9PGvt7OMDsSPd3jVSaKjasXlK9H + etBmsEJFdQWnYAoP0NkP4qqBm+vtZDDPxp/N0znxGgMpTZjV7uhXljCfR+HBtSgMObkmUjdy9cm5 + mM/RlK4SeDDTw5JyUhFdjpWAfho1p8BImc5faAo6uFSVQhSCzfGUSC13WRqxPvfESOHIQHfvce6J + aYGP1E+gnS63p3m01DaaEOOLBojofWbnR+JyrO2jroDLw5GR6qQLFD1ElzoTdLstPURNnQm6Sifd + bx/8SlEhLjylJXaIxAtZMkz82HV3MpsPB/fpvwXSzci4q2b8L7abQgY4UY8jLm1B0VP68zOpPUzH + RwNRRk+KMh+WZ9Fv936wgzWu9Jx5qvhN3AdY8WEHUVwHwcYxw6LEZ5XMxSdg8D6xIXZwsuYsDEn8 + nSrU7qI2qOEhKM9Nu7fZR1IvL2dRjP3p8PV6tI0bovbufG10UO7h39/DYrTfiul2O7QXSS6jvcRV + WWbi9XnFK8c51q8z0V7P4ziKg2GcCAcNbcUZVYjUbHHsZEDATqnySci5/jP+cr34gskxS/UwKGaF + yqC4y62mqIWJCrzfcmQ5bbQXN5MqPaeWVZe+zUJuOvlEXdEcoZOEnst5BTm+T7HSBqF6TzSSbQ1c + EuqmsGMiBrIMLopc5jaAq+pbKVfvNDksg8jitYsYc0KY32FaoVDfCwNHSeEEHtdbqe656VzhkwSd + 1XqwQY5BXWxEgL2nm1KqwF1W7Aedbo2C8BeEhI/Eb7fp/X06EvUppnMHJ7EGLEUs6FTNdAeF5oE1 + USM3B6jUD76NG0bMYnqP8lzvuCXay6l5jT0qW7a9TX+FMnkka0czN+pSOxpvt6wdLSRXakfjVUlZ + fHVVqZ2GKQuV2tE8jBPOhjxMEsxbw610vPjGcEhG9xitWi9hHeHXy9CUpCZer6uVzlqpjUqqoNeo + CoZIRVChCjbAdahANXgcWOCXKpaVUlcM+ZV9qpI1Ym5YYVmDHZYLQ7eLB53iejqrAYAGMPfqZFfk + Ohew8cGEg1Mf3u56sRVEF0ZPl/h9zVEBMxvnVXGf0w+ik2SlzPwzCQbdip3vbPGNL4c6LrFWCHnx + FrgFqtAF/CocJ/AAi5cOzkPNJsxD3As9nhDOTr1n3qwoIl16X/VyYsHRl66hj6qLsRmz/1gtNnF1 + PFJzTakXT5edrPxa+fyz8zEcBgllHkXvsm/Q5Hw9HVfV5F0fWHES9UDxwWNJaA/rocPpIG63JLQX + kiuE9nhV0hyd/1rls/c9XjkdEhb6UTxMWMR8eTqksD89CIjy56kI5UlCo8nnqi5s57cuehg4xouS + qt96dw3cEt1kbNVCfr5UPqvene0yu1fP1Wyscw+/zaY3WQ3TZMxjr0Gh5rEfx6j/npZebWjyHi2R + rjHHsK7v8/J1k2qVPKEFl04FeCAdf4bJN8vSL8IEXk9vMQtABTcdnDB6Gw89qrjJvAJb7LV4MfoZ + t69hziKbiUaNfHgLwG27IsxIcTw9v7AM8dd5G8B6jPIvEG9q8WJ7QuifHM1BL7WqCawahqVu3JO2 + wKXxaF6LVp+2h5i+X+sxE/1ACJFjn3662Bfh5RHB2UH90jPzdIFIfVEncTjI+bNvV4vtEgYd/jjO + loTh69Jcwun7CzP2sK4AgXkBrfa98KCGfB67lCGM0bYiw+d+qkhSyPAIjjE9oluGBz7TIcNDNFHO + 8MCLpJZkq/HYWy9Jzzh/dXoO/3sLNs63wV0GWzIKaiyu+Fabbq8uz85Gni5ostysYgG2YRGVjA85 + 1ReVEdR02jXDGgRU8ZGjMUzJWTYpDPUo+zaeqirWtc3YV/yT2TxdhO8I7YY1xSoL9An9EQYkVAO1 + yCCEXT9J71OsOyMoGbpniyVURxff7tnp0fOB8FVk30R2nHi8MSTbbCceIrXJFkSAojjiVbC22A+/ + 1xAy16kXoI3zHcMvl4LX7EF75BKjB9IOyNj9YrYoLefu39GrTrKLzqmbqEN5nUCIPPkLmAuUpzbI + XopXHNLKjmocVJX5UDlWGpD9fD9cn+JExI5bC7ZxMMr/+xE+S03Ak7meLy9Y/AZO5C7pS/oZSw5z + 3USRw1xdbOEwL0Nti6Kw5qHHXDzgPdDGxGH56bdLaciWUqKbQ739sNl2rwUL70ywW3jnM2ZJW6uG + Ls88898w99jl3VLP5EPWuWeqETP5TF6l4St6l3X1qUIoDf0B2sNezEKru1kpuL+vrpn5BiJPLeQ4 + 6D7nVDapTsJ+R8h+x2Dkufm5U6vX2O9L+yCHPS6D+DCpugTx8XbLIL6QXAni41VdbodVyOG4CF2W + ovi+x4MgGcI/Castl1kf2Sg5wHKGr/o6LHlJG1blduslZsV9PwzjCn1rX/ClzjUmDcqTwqsdGO6q + Ees8wng5YgLpCHrgu458m6LrpPLq1hZJpzKSDd6+n6+STAPcqueozxMASemdUCQL/fH+0vM8+yRD + ut1qJ5SSSzshXaWd8PLiilcrj3leWMKW+i9GURLA3BjCP3GSlOmrVNqgIri8T2ezwTPfvTqqVsk8 + GcyzdAXrIXcRQR9eLtc8OF2KkxfZjgunDfwVJv8A3rSmRixtneLpajmwHGZDb1St2NlaEyw2N9Qi + dzWcCrgp9lvMt6mB/avuokTnCQyTQxNNJ0XCseq4uyvulqr5HKz3HlL8lfOQRwVtp2VSWSnU/VZ/ + 3b/Eag19r0fJXWeXzI3tNya63WpjkpJLGxNdlQHg03MzucvzwDaPohJ/L6Y/syBJvKHHQhZLqOU7 + MWNvpjSDYHneQodIhCWBQS4/jS7OLlVa9HgFDf+506JV8QceB16YF3/wApnGx6MOtS/pdss0PiG5 + ksaHV+VIf7pglewGPyknumMen+tGydBzOXqGcZxfLdfT2SIH1Mpt7TUDE0b4L+CCqTm8Zq9d4UYR + 26dZAjGlss7DQQa24RZHCfY12P9wJWUrNBaz+X8e7jO9Pg2dUQslg44gB5slqyY64DIn9gviSkPb + 33ylcYb0qjO0+mefd5WtNMorvLt4V0SoYtZ5EroVsMKjvkKuhMc+C5NqhQeVZt3cfiGmtlpo6tv7 + DCbnfGqCNfwQ9CjbLvhu79DQB3olm7NFRWZoWOppI2GXi62Hutd2qt/iPNmFd6ICtCsRB584YnfR + qYcs4ULtiIKCP/XgwtWHcz0SreJ0sTc1oxg19UkWA/59hTfyUh4ot42NApQCrqzxPT5dhGg4xXzM + mbxr78yrwOW1wZF8efD6GTvqbEj/hHb8Lsxl2L1Py+eRZQ88SlONyJnHaa6VceUgV4Yf8Nxh1eOM + rmNceaSmmpYuC9wo1lEnLOOs91bdV/odDmAX7LGYaSQ3ws5oMj+MI0lfssFpstgzu0QoMfV9to96 + ZPfqj9vkj/zcJrKZR262jX8/TFoXYW89rGzLUFedDrykG3ZLP2NddVo2YVadposSFj5+mI3GC6lK + 5gAH5XUpRvm63FtsXdSsjjmhuEIKmN6kGyz3agkqtgdc7al0Ph6TRH/wnZ+HBbgzba4bir1aTLCz + RR/clPYi2z/Fp3ra+z3dA5m3FynKRc/95+i0C+mieMCWdpGkV4kXxXXFLPWaVZ2PgsDP5F587nmR + x/gQ/gkVtKCr8/F+BU1/HaV/FfcjgVyfUhgu1udUGHvHbtKFsy9/yPqkUo2YR5W8ShPwZrVkklMe + vmI6Ho3vspnJLK11xGcXH96dD2KPM+6FR07jA69BpoOCxSkVMeb0U6fiYN8FyCA+wCkSfh/kBJH4 + xfFiuQStXgCG7+vl2G6vnCdEuqsZyfOXg7kx7WhSezBMgf5WOBZEe+KG64cCd6emAujkUAkCl4qM + N1g64tC1IV7uq0ZARDh0UddTVptYoaNtO9vaJiDF5CISj6ctS9wekPjjNx6xEyaia3av719sKrJ2 + EtcJx+qaS3M/9aB3Wv8+qWbhEwlu8/r0fE/VhaqQ/fbe9TqwRdPtVmqLlFxSWuiqZIt+976SMOsH + fomXJnox4mHIQ3/Iw0jEn0UY7XKU52MqE8fM4CxzG+S54uj3f3VZTLzX5ZKkTSnLM8kYwa/pii8L + fDHr7e1tthY2qIhPr7COEPHsCUo/uI58NvnQCq3pajqrJvPWbzNmrCoux4py6rAkiB8RInd1WcSq + jxcFyEMxx55YX+Crh6XONlAeITNDNOXip/JTnI95ckH2DY3420xBu3FYcTzqO+3Zq8ujAfyQ4cu9 + XS8jtzBkYgjLOb67ZshJkeLoD1j+i6/TFO2FhfDypYOr91fsZPBmtXxFVb0UcgRnti5B7iXMkR2A + S7S9U/U7qT4t7tXl/q0s+JYKiwcqTX3V4woD162pxmlIrVcCHuf83mG2d5LVml4akalaL0rM2i4n + cUTpX5Q8O5o3L5lOJbB9V1sV8SvMAOhoVciHrK0K1YhpVcirdEaALiQBMnK7pwESAQjYeleZ83kK + cx6jF6ucpOUKnyIjg/GIJX7EjhwUhSkNbuz6kiCc6pYINoHxg309MTWoXRnGmwmkKG8QwzDdycVj + WdZIfbzRUR22CA/eg+vPEcSx6+kMNmtRyHBT6HPrL/Ows/FumRY6kyS0I9BY9BYoU3qx9zTsuNLc + bvWfyfRrMZqT6RdK5OumVTGPyKqKc6oIhW7PcYFVGZjTYZh/hVjvt93jmSCU5tgCewtp87qKrzNR + 3IQirRQXLX4uwsdrmrK0fFq8pNXaMD8kJZKqKrZ92CPkIckalB+m63Ak9qYCXHJH3lQP3Dg+Uwnp + PHjLuiaky2dsE9JVE0ZCurxIG/k/zyXHtlaXTDruIk+B6icNfTaCGHlrmKkWBrIQoeeV+K9XGWjm + 2ewgnzUyYVMQrIY7vLtUWeS+RmLd5+/91j+MQ2WfLCvfU+mS3DvFZLRO0Tf9kG3CpG7EyJhUV2mu + msAI6QFw7kHDAv0UBsjw/GXl4m+FNiiVkvfkv+TEMlP/GgfMljCuAHDQW7Tfe9p49qyV+p8QU9Rh + jf4ZE4aE6Rv7DRO1I6TFvi8PCQnCHu/JbtukM9CjqwzB3d9MbW6Un/DbpRd2oC+l2+38bSS57G8T + V6W/7eyi6m9LfK/sb3vOXB6C2jLEf0NVKXi++JLNzHychyxdb/KazkTkKyo7Z+vhYA3fB9+mXFBr + RYEMf73X90OnTlW5cuiTcDm4mcLMwPRGYh2mNT0TqTooYLxarNcjOMs/r3UF+MWWnG3wkOICzfK/ + wt9u0+kc3nQyXefaPPnkxsuqT662VLWEk7/ezm+nBphcVLhuzGGNwfAPWIUXzyxgryZrkbqUlWvX + 75Za0hGhB1fTyW1JsAe2ZmNhGkNwnilrvq3BbFzisd75ys7ZzglUpFFWs0CP/IBG3nyl9Qm81BS+ + VDClTo1gNjpidSQb5hC0sxTM1c/AzNngvEB2cnmRvHiknR4Nrrcb4QgUk0S5hNUazxAFfo8WU6Eq + jdjMblHTdHCxaRdgnAhyPzBRXaWZzlVcmgzW9LZ2t2px6GFvCx9Qy+i0q1296HkEIDWorzuJ2Fkg + fscH9MD9JpZEjZDCArJRNcSSrRmRxleq88AFylSLXzOwbDrW4lMP2RpruhHDWlNXO7GGFISBruvB + p5CPba+6eT9Q59PGSKhGIjl2ebdhEE/YjgGJNwZAXKLe/ziqWIVO3bVcEvY+WBjSFOYUw8RjcTZd + 38ktYoBb2Sabp3MqiZKbyukKPnOT0Q53gCERJLQsF7OH9L7IpNoHjjBmgUYP70N4KvrGl87bFNr4 + DIa8eMuaru2F/In5ojsm00dtJpbe1m7i253LvtrT+hDXB7ulWp+RXp9RdIwkRV0WqHjEeoVSA+YS + FddkjGIxkTi6s4tTNoBfp9t7NHVkHk8K6ojyDxDwKYQNkvtHTun+X3Y+gE2JFc695AlhoQh4k3+I + KWo3FGSXhE4vQzE7HVosyAQ9MMPqhbUHUWvsNK4p2bd8++P8IbYIo/4J4HusuITsoTnBKwxVNgcT + c7HMRvVRUhifr4vV7oJ8cDokxC2cr6M99yuQlNDEnG032QudANGDZI8mA03PnZJ3riGP+RS9K8z3 + vYBBPjHpv7xkYWgPDKLbrRwVUnLJUUFXaUP99Mdl2VHBkrDkqPD8F6MgTKIkGQYRY4HMr7/aZEuB + 23kAcxHPWoN3RPPVCev/08NqX3r9xgKzRXM8w3goYtoaynQbkGg4UYwG8jRpDl8ZemW2Kf2BOUe9 + CbgJIoO/6mOBVR/WHed+gjQrDe9olGyq68ohMriu4E0EZmY9yOO58DvKBJVqBpYoPDbLYFmvHRxV + ZRG7XkT8U/CSYnqXP8ZQ6azwnyiLGbJ6SJM+VNPUckKSg+rfQtGdHvx2iUshqZS093FR/A38jLVs + Dm6lN1xtp0CUYIiJiUI0T6vclyE1DKWToGG2P/t4en7x/GhvxOlhTuc+gaE9c5n7hBJ9e+n6kf1h + QLdbHQZScukwoKuKVeeC/a3stmaxVyI+dF+MWBJHHh9y9LNJhfx0dTvFPegXtReJFbLMlhtBijcc + LL5kK+ggNZ+JOBsmyHpwO3sY04k8Hm/vld4nSVLSJftb3yfHAQXFG04g82Mbiq+wxnMHTAuX8/K5 + o/ul4dwJygdZgYujVqCYn4vZg+IwpReWF8wTzY13SHb6HnAHp58uDQuntCM/EZdRpSs6FDjJTy03 + 1r5H+dEdLR4bCbWMi3tysXbdx3GK6cOvZjp2PEo5JSP3IShSZ/ts1seLkS7zn+l8vH/eQW8J+gfn + 2MsjINCg0NBNjt2gEySUHrEFhMoGDDgoXaPd/PXp2SeNidHbpVN/eXCxuPYqWc+yCYRjuHEsS1eE + dRjFrqtQskWAlBK/e6vMxm3Bop7GIc/uqGNR2BhKyMyKJHufsBfkrirN2t71zYgT3pAxLHW6fUd5 + QY1fp5vsXQVBxNYsCl7MFnMJDBYPdikDYt/Hj1EXpDecczeksu1He6jf69er4pbFL5uB+MvtSLzP + GKfzZtMByNw/Ntr3fFm3QcL/NHS/KMFkE3WjJCdCh702f5v9p8wPQeFSxeXiznhT69nr8BU/AtiL + IV+80ziBdtu1NiVLrL/88AIofWCMA4Ex/uPNJXSkPbyJbrcyFKXkkqFIV8lQfH/1KarYiX5iskJ7 + yYvnIVZZjIehG4mwHGoWb4tB7t8uXyuig9sVyP/69C29J0CXcAHfk45evR7dCSOuNiVzgQGZ6+0E + a8193dwRrAfhL1+RlDi9Xo+nwqF4okrOp7MxOrPxPqFWC5zYZHoDsxL39PTmBqtrPeTFOUXNeWxh + Pd2InMw3bCh+n2fjz+J37ly8ep2XkueJK3EKRF//bSohOVv1rkLSWqygblk9jAIl11P67oOEPh4F + zqHENY8CH0+IG9roMjGCVtuy6xPrtehkjNRh/4tMYTnvdm7RQeDSaSAnYKv1VNsDXQQ83u7c3Tat + ozzr16cYUDGVi0sWJB34m8XtdvzNJLnM3yyu0lHx6+WrSi0VsAijCn1zHERBFA3jIBGQIjwq8v3q + Ghoe3c6243Q+KOFKf11l1aoobxaz2+lgjHShoPJlq3lqbqqs+fjg3MuBmQWRtUHYIjMuRmsbhEYJ + T4KkwnSMH4QFNps8htCLvEy2a5D6uiF0XqVks+gsNgwHssOaywG4UdnLVxRvvLVZEFoMioF/lIhj + VbLIBKv6TW5K1YQuQmAcYm0fcjJYbnH1fsmMyaGY8U4G6XIJensOihaAVfT5zye43RMM+vOcLR2c + opoD2As9R3YNLjVofVSUbxfkac4+9SO12db0YVdTsZuw+sKMdHrUrBervdeVNbTp+b1JX8mgICEw + bilYYd0ran5PrEUD2KMntIbnMiraWBRVD9Swe0VH7iV4V+2ms3OyqAPF+z9rcaR8fO96vv2RQrdb + HSlSculIoat0pHw8e8Vcr5JewZNSTYDwxfMAF0kwDCLuMa/d/pjPoIUa++NPSLPm+knoibmmfo2S + vOhD4CsvtBd2ZyaQz9j6oVUThiNaXqTRXi1nXNj+OHihe1VT5Oc9Z07zX4QAwUaQBK5jU1emoyPQ + RloL2SavIel4fIdKD+VugkKbcI9g6bcpd2PvbXwiNXDsHUQHNNIaGNK5ClHgHrusEwKXHrFF4MoG + DAQuXaMVuFxn24lQ85x0Nln88jnDwk4KSjHUe1G+TQnOphzd6xNuHks8Ofub2h2ZVXtCfqjhCMkD + 9575rj1Ug26388CR5LIHTlyVHKS/v69UxWE8icseuBH3mReEQ+4HLtvlgZuB/L9GnSPXY278xIhG + g0jW+4PzxF6zotst6/0JyZV6f3hVVj79dFnRqzzf98vV/p4nfgyH9DCBVRUn7bNqtgL5vft1n9Ss + UsZrEckJajpchSNwlo1Wgm5xouxFzNhVeSNiBpwM3ry+GN1sBcCzFLEjNyvmRuY9hrY2mGrTOWxj + 1FoxCIn3ikgqBiJF0OwW1+yHD1cnerThaZh+IGiA7zPfoCcW9/STYorl6Sq9ht1yifb81eUlE3c4 + L1/l2FLfl/xO39l5qZdMLDdi1+9QLJhut9yIheTKRoxXacmcX32qZHrDxlsNhfgs8uNg6LPYZ5Jn + 640st26G6YvRa2IW+/T63burIViACMpd11VnxyM4ncDQrxbb27vBNUyez2LiFIRdP2gIFs4KDGt+ + wUg1aCXzdI1h1cKLrEXBEayzk25K75fC4Kw3wuOrKpmdrzdVdLfU2KprPDRXYoFlMfE8HzacCrwb + 7FXh6dnVUfVwbzB9G/YUoz29E9RBCC5AySjiBgw3mhfGnRrADM2NMOOhu66n85r8buY1li6OA5jF + yb+cn3/2OLh49IkM64QSKXvBrgidsjSSnYU8NmRFxeYbG+iOX9kFkomqfYtxvemecJm6Xb0vKE5t + pSCfiATb+qyL8X0gtqKA3Wo4v+qiMxKZEOqHBd6+c2UEbXUeDEvwJOSmZm8wZ+MupssdrbAqoqw4 + Q+SgHtKCH5ZdMS2nxCNFB79DjJERSqz7wWi1gPuB16L7Jq6O96GD3BvYNpEwGhYmZx0KiqgHLKE0 + UnoFTEPXSYe8+P0qrBYUiWqsebC6vMQdwj8h7rHVgiJF/pXT9d31Qwqax3r9sJxOc6ANtD3+61QU + 4Sz3bYeuzLh0vQ4BcbrdMuNSSK5kXOJVXdC4bGOzJGCVjMvnHgsCL8LK1X4kc2zepPf36dMrq5rX + M/a+aznjT4U8S5iWMZzIP6qWMQayPZ78sDrCRvuPVN9XteE80WmI1Xw9nfbKfe+/xXyfUjHfgwvu + /pTUlDtE/knL3f639mzzLO7BAPheBWz/W3f2r1N39rsWfw01TzoLvaBrRFs+YxvSVk0YMW15kfRq + UD026W1W8OTBN0E3SNQ4GNj4lfNs5tjfWWyZBz6PFPjk+2gQXSrF9lGijyD98/7eylLiDoikG1SP + /XaYpO0rfn/O7V3aCaue74vtpjfi7D3EPx3AZmPfxx6l9KuFfSsitTTt5FLuhS/woGZat1KJ8X/P + /A4kUnS7HcafJJcx/uKq9F/9z2klBhow3FZMjP+IRyEL2ZDDe3PpvqoFfgtI85ep4JfWRd3+WM6g + ySo+hdzvs3JmV+S5TUgC2F187kcHZ4ixhMG+Hj5B9xdVdiuU+zoxwAkFoL603hE+WTLoFVTtRCug + kjx8JcIE9EaoH5CPeT04u74JlgKc8HGx5DBO8y0Mo9Q4oCkc0FkmuJ5lchBcXGdfYFYhl/Q9ps9n + E+fjbxeBNuNDMOCpMrYMxml4IcEN1Ttn38SeK1ZLYzSnCZYP6g9ZdikuXxVUen/1+0h8qngWFghC + 42kRisu5W3vw7EreOxwEx/HVgH5UAmqsgyY1jHPyVmiYYGGkKkJwMWZf4TecwlutkqXwH2QmOYR3 + JE99XtTmsJfhdUlMtrHomC4szKGnC+aEb4OO1ZXzh6xL5qhGzJo58irtSCWIYJHW4s3r3355d/72 + lw+L8ami/TJvN1tBvS9MiPuiJ36zvjjCukyMXhnCDqsk/zRLxarJ7P+fb7qsX/Im6l7WTz5kXdZP + NWKW9ZNXFX5+7bmKpMuvRclfea7T/BchQODnQzf5c+LnHx2CnD90KOg+KrQJ96zvMfHrv6D7PRtp + Xc0CdP/H+SX3OuBx6XYrxVpKLinWdFWivF99qCjWru+V4sLhi+cJj3zfHyY8cZG2BJd6MBIkYLPs + y3Y2FUSMBaeu2MQFthQUvZvpChFZyOaKFKRw5S67L3N6EpvrCUJGP45AHbzHEiAwGrfiHzVWoKYY + irxBOyOxqaYJCToX9NBJieJUggQopv02BW1yBP/1ltIUeJvdV/GGdXLL4bsmIKDnci/2K2Vemvuw + HmroxVGT0RG5HuwYZSSg2dGV/NxyPepCLE6Kc/6Uw+zgxFcmAA99IrCVJYJr3nq/UF53ec1sS/1w + 14J2I3WjQ7/O81xSEzewA6XLh5UonH643P0AeLUUGz86mhfU1N+Tu4blW3SR0HxG9qVY4+aDj9hs + Wt9RcuOaeXLlLnJRYdIkaqivrtB4AVVLRGmwLNrtarFddl2mLqOuhRUKBsg3VL3vFuvlHXbuXrC2 + MFT52cztlJ8Nt9vmZ6Pkan42XJXF7y5+qxa/81hcyc4OQXfxvGHIfC+Id2ZnM/e/7FAds7yDoA/P + w1+DEMnpkRAWBJFbQS3mA3wKkfIoXHzil+zYjbu5FPRTtj6FvBnDqaAvy1JlGdIJwiOX2fj/HYh9 + HeHn6vLg0+yOOZvZHXeC2OWxHzhEqkjG+iabEYNjsTjWl2layoipdlSuPYKmijwlWpnzWIFZtl1I + 0xx3IyJzLVZ9l2867VbzvWbitxdWIC6WMM8IWGxgRe+fD9BXagHYmkScqcZ1b+w8L6Dw9nkTmEUK + l1YIvh/6Xk+NSBpLy1S/0vvbKPibub46FazpCzIfxkq3CH37UCPdbqtboOSqbgFXSbf44/zvVd2C + h0FZtxgFYEqF4TBwIzeRee9UAnUyT/+uYPKDZ+V6SMrzeXQCfY2MtneL8WftDpXKyOTf9bVs0A1o + nPIxb3I4xMz3g4iX1QcJtVGZdk0pjTDhmqjGYAK5vhuXBb9dLyP3l7frMcz3nDCykolhVK9lCe/2 + 9nkR552iYzNj8s27YSENNIpCFgdRXfGC6XxUqpiOYcBNqfKuG4YV4jTdQRFPQjfIs7bzty6GSEv2 + 7V02eHt1kbgivAk/QTfqastmbFX1LrmzF5JzN6WSugqgAM/gj9lKCT/HWUkRJQfnuK5nC3sUudwp + V1BJv1nM9thEQYrwL/wNzpb54svib7vlNRJ6h7Qf68/V44A4jHbDvFHmodCohFJHi9nw682qs5OD + Ba7HjI/b74U82NCFi+nV5Qj0g8V4qmgAaOKlO/Xx5kp5h8tujEG75siussbJUctg6SdeeRAmq639 + 1PIDSWxXO7VeXVq7lw7jRY0Iry54HOqDB31FhfzYp3JasA1N1YEk1U2sGGtf/gPPBak+aCVhR6rd + Y+b/MYr0th4LnaY8ozGxPMxsvhXMBlKNak77PfHK/eCeAwbDgI9s57j8Cku7C5/sHlJaFUDKmfzw + 3mUd+DbodisFUEouKYB0VTqXXr2vKIBeyEvOpeDFc+77zE+Q+ChxJfXfq1oKRdUjX8FWz5AZW2gM + 43S7ho+6m97eIThpPl6B9gh9lN3cTMdTuOUB1+Y6G6MgpHC5SzGZ6dfjwQwn4HoAp8Wd0DFJabzK + ZlWlsZ7T0XRllUJA388FpfpFf6PxeOK5jRoW9+OEcVZPjFN/Xk0QwzmRbDhwcbnAzob9frxYrCbk + bEY9SZP/Itc0PbsuiT89P8EA8CbFP6WD31/+z+DZ9nr6f7fTTXGfeBj8z9FgskAPhFDq0oG+qfiC + z35/earuc0AWz7lvooDqKhJ+On86N9w6nMbtcSHo7OKJmA+J7aH6aOrC4YJb8lzAHs7TEmD9CYjD + gR1dS4Mbk7JwvkiZu8xbGMymt4XUH1sH5D5Q6XpJFKGs3yYeQ8T3ZqXtJRsKFkfk1wgZDq5X08lt + V9L0iHLEP1ziodOBGEA9YHfQKenlo05eV4fdGcYYC6cd8xhPWOxVj7skBl1miP8oBEglljKtpQo4 + Hgyusmzw+tXLq8F7LNWzWg/+P/gk918DP45eeGzkhcfK9XG/gvf7+hchD3CjkPOcPCBikqDPjTsU + XqHbLQn6hOQKQR9epQnx5rSKtPdYmU1fkAeEoPoNPRYlgcT+XZnw7jcX714Y9m16T6TQOs9xld0v + vkjwCNw9SuewnYmwp8SDiGNzs0nHd3AX3DF4Jso0rh9mKu4xnTzMpnNkKVnMjnC/KJzZQi6ac2Jm + vUnTqn7UYacx3UtR2KQ0YYIzZ2551uXfZ3ZGPcwn4WVcTtF9ZbahJyT11L3EpGF3qQZ1t5j1BHgQ + NGlYqgWnOqg7BqH3Ma8dVAcnqtaU3Ih8WAFpMYVPPxyQIroJH7HpXkvPQW9HJspKmmX9tIlT2tcT + UbXnptXTDTF6sNRGri1Yr20CO9PgR1zDvOO3zD12eTeYt3zIGuatGjFh3vIqnQyz8Y1MZkXypxG8 + BCjIN7AoHkYY/xudLU6VNqs/t5jasPOp99iA8QRcELDwyGMiuss81yV/D4ysZn8WuVxpvRbW5Ahm + MoKZv9RAvBSFMi1wDM1OJHRciyU5my7tZLW7nEPyFHd7vfaYZB9wjd3ezw6pn3tbIcK24hQbvU9v + MY/poAJN/ZWp94kI0X6tdJliPUjfwctA9s5+UtQeJjKv/ji7dLvA2+l2K21WSi5ps3SV9qyXF29N + bZbBCHtRqY6HB9YNqrEsGLI4dFkpcVSaMYjAg4Psbnufzgdnd7BLpZ9Hb7GD7qYIU5ys0IevFAHU + Yu63K6xafp1NbzMxmoqVKF1lmI0o6mWSU2kyXWciLivlrAeTLQU2shuZ9j97WMsUDDha0Ef4WUxv + odu+XN7VBIyfmsFUDNgs35rOPh42lYNPAjcJIqzgtNeAFAbipRgIpUv2Pxgn1eMGW69Zx+vBent7 + izS16UDgpgth3TWRYjg4dzXXVMhJwY1j5SAp5CJZBBH7qhfVJAfHD+8uDbGdb0ye6hicgj+UFUYk + +1I/3+T7oBVIiiqIrBezLYJXOj7dHT6u7XhfsoZzt8POR7dbsoYLyRXWcLwqSQAvf4ur5Ru8sMIa + zhiWUB2CiR+EMopxuhKFiGFLRzB2AaQ8bMuuuJVs0egZhzmN4yaeV+iwQgqKZPNbLeLHY+1P5UcQ + olwcjFonnzca3nGUNEVDsBSBG1cgKT21kxfFo3a8sm1vjAn1qcwPVmpcqc8S19zXBQSmsK3KZpzG + 0R6862m8HZyMeV2MSCTb9JeJIr5UGOi7+6ibRv8jCg/0qYTGPinW9fOxo6yIUBf2892qn3oQ+9+s + DRtlPJAkLpx3QFbS7ZYkLkJyhcQFr9KR9OHDJ14hcQFdvULiwngYefGQ8dhFy66oi5sFUAyaxJUA + wY239wpVR6fMh/sNb3X72pVaLezPXuB5blLJ7zD1hNLp1VwfoiCsf41bdAo+DSpztlhv0koCKKy/ + tkNCvp5zoUqhEuikSP3XYUhOBuPZYp2JMql0jkD/wwCxpYOTQ1OywJn+HYnMdsngci8+TAxB3vSA + 7C8oSpTCLpT/2iH+LjKbD8wfmHb5dHzXHkvCGkLUPRjEAhnW0MOyZ4KDp9UKPQP7IPNUJwzlBb6+ + dAPP/oSh261OGCm5dMLQVclm8D+/ltw9mBUYRCU6A+QJC7wgSoYcuhZtIhHMzr4tPpOuMV0vJCc0 + GxaoMLSdDcdwIfWdTubF6iFHc1MJ3Gww2Qp1QP2aa+plzRpRYOgOUA8QexX8DbN61OPjdHW9QAfB + doV9Kot0rTIhiJTyt98+c81h8O3zflkEyHpephnPO6fWnvG9pDEgykPG4rjKXN5VZH4shR7WHGSl + w+4GXcxmN5eKkbtuo0DURPm/nKZJkD7ONCjTFewxDU6U2JGq1iYnhBBJZ/NakjHobxPTxMHlos5c + BvagIztJhBvKnbkHaQHIKhSEPlAUkwRqsO3YiaotHOQm8o0exgvBYdbfc61nAff9wOjW6X394d/s + 9PcRiVHszg4iDjFkOxZC7THLsLdYjJfIHMPqjmPVB50E9PcqTYuhlwo/BydMMtg0hap0UI/0YaAr + BUQnMnMWdE5jls/YRsxVE0bAXF4kZSRd3coqjLhhp/eLh9koN+IVr4XT9sfBKchwUBCFwblkRwvI + mIA/TOciwmTlQ7PnS9tPfruNEXix3Lw26T1+ZDuSFnSZMVJlLla5leKK/Uv5VgRKY7Gd//h4uJYT + kpw6N2j3nusnx2h/W2zXvr9zOj3Rw8ClEFrruttfdrxT9jNaArCuRpTN/fAf6I6jPjigH6n9wxPv + 7aEgh59KB0EXlL7mMtLXQN+8xWza7JD6Ev3kxkc6N97vAA6m221z4/0qOJiuyqDi+zesJjk+divE + O7Dbs4gNAy+JmXThns5gIo7YkI9IiTdImYpUculkMi2mRWuSuBQlDFDCh1SzwMGPwZvZ+OPpmI8u + LkYT3L/vFlLluUdQwEYbYOl6ma4QKZaNZtP5Z+h1hWSlAStDhk9nt6zvnCrGoziK4qr7uMEN7Ta4 + oU1BhXhkWzfXW9rIgFdyAte3UsncKpx0Zk8adrcf7xTvWM8O2kpEPfHKRPm6qJssymYEo3g62ebl + zh9l5jhijeQESQnVCPNjI72qsd862IMgNBGaM7z3rdJxoYtHhDs0vkIntVkd/T2EZveAOT9yctGP + QkrXfNYT8FE7ctkLddVux7AasENlNk/3fiO5QdQkqhTJVcuzWxhXHdkJWaRnZ4yHx67XwSBVj9jZ + o7qBgjmqrkn09nIt0dsbUVxhnW0nC9jbJrjzFMzR1r8O3q+XzFlu1wjL9hI35gTLDoh0K38MjcYC + 3KebpeiTB1K8yf1iMr2Zjhs2x1pAgUvZoptSDYkO+9ajMNG1bOT7sdg58oTRH7tnVKgXKgY3SeKm + OdB9F9lb2A7LIBAzY4pkGwdsH30p9LEr/VUXnL+Njt2wi79KPWPpr9JNFP1V6iLtC/COYKDPMWVF + lmbBH6Rzr5CWMXgGWuiRY3u70ToPfOYxQdXHEo9qogiIC46v4SM4mEYYtKOA3EV172nh6rHyb+xb + /qS/3Ikf5p7vM+3CjVnYPFg7Hcz9uhe+p7PiqbjQc1ERLUoKZtYrSOlsvEBDSahEA2QlGY+zJblq + v+c+KuUEoHMKOWLCPMyMSbRfz6odmslEfdizuiXq0wOWifpSeiVRn67LCmiXrwLD8+J5vhfHIa/k + 6Seuz+NgmGCsSSZmvzPS8lETQabQ5VJQGAj+qXS1Sh9G10RAk4ekVaWnoUpkgJNz9BX7VeX2w2pJ + V3Bq6VSUP+5X8N5/lQR+HodJlCfwx1Qq7+2l6wf2Pjq63WqySMmlqUJXaaKc//am4qJjsVfir3Rf + PGcJ9I83ZEnEedDOjX23AvlVbuwnTS7UBzsDc+PI6ceV8RRsfjVJKTvlN9hfIvtJSrdbTVIpuTRJ + 6SpN0tc1LBN+nJRIRyLczBLPi4cJck5I0pH3C9hrzJTdh5nIeZQqI+73ooxgCspdBt0iBhariIBF + /MIdnbHwhVvIpy3RawoSKOK1k75FAlpg3+bPyKXxuo5Ughxwy3QFE2SWlaBWrJFX1Q1YkHiVBWGf + 42mgp/ywKWMm5m6Y+Ly0XgrFWJSX8h408/VmUe/TTdpww1ECa7vCr2omRJfRWSHfV2KOpTWhzWFV + YIFDg4ewvpGm9WlMqBNV44ZQ0dewEZcmEiH+2kifTgYIBCTn+I2kaYYmcXUuhXfndYE0I4h935FD + iTvI7gnQyTndcxJ8R2mtb9Z7Qj1Otfz1WqDdLa/VU1L+/tDr3jjFJOq+tAvuNkz/pGn8tYCyx83f + 7wUh1g8JQByoipXoj+besRt0wWXlD9k7wmUjJVc4XVUVK2depCpWhrV1Kd97kdP8FyEAfeBxRN6s + P1/Fyh9TfDIotAn3UAnmp1t8kgC5+zvff87ylfrIsg4d2Fex76dchl21aNu3shT3XWIGoUrjDDuA + gOh22zTOsAoCoqvSE/X+rGq7JXFUTuN87gXcC4deFPvSvQCNZ1jj/fMUtCDUMlaZrnEAe/V6PUWI + wvUDRv1ExiASst9lemwEF8Q4w3Rzqpgj6ujgfcOBgrLpRAyTlW7gD4PR9TSHwz27eHfBBWEg5bFv + kIND3suGePdmVbz93YV3JPRvjGlPpmgiYGg4w8z3Z+enb44UgeXFbFyTdbNAFll0rin29bwEkNEd + hmsCgTFNtmIUJZ5fTULtWmTMkJPbnNL9Sz2C7j55AXQ6VAXOmmxOL2hAK8VeErgsKJlvgnVEJrlA + 3/4C67BYr8nwCrLANJwLpmEUYHXVMkRJxA7vHmD8dBtFgRHjfoNAtMR9PynnF0l+QnEmq3ropsSw + iU5RvaJzYfZjL/NWLBHxbrhgpP8sWx84n00bVhUrwQbS+cOgyD2DvZOtHdwX8gzeWGQTMd8Vu15d + 10lk1Q3stcipKFPlcZh+nJ2JQ9j0vh0lcb9GB8uHaZyux+mk64mbeBTUzJcjfLQFJXVtkH1PWQ1Z + KSx06YutBbUnTCWEQdOTuMh/sE8lXaq/FpGCWai/VjxPulRgw91ZyLLd2q1sL0duo4WBsdiELW3O + g8XuMJUPlt+U8OTLRd7Xm8ZUxKS0yrtnPufmtkvGUjobH+a46CW1K3bjQm3IBc7syTRboyunh7qT + BxaiU4qsTNY6PePeW//Yjbp4BfKH7LwChUYKXoH8Kim269WSKaeAUW9czhOs+ng7J8Sxdms9u4bW + lF16ZABf2h6DixQxLz4+uKI3MISISwI4E4UuuRpCKrx9dVks4TdeFJwFBXeFWTarzpOXp1o9TdRu + 8URu78xGE74LFemfmE65V+9Hb0AiX5rGehj33YUll2HbVOkF9EPc0Z1BP2rniyXJP6xpe54Mut2S + 5F9IrpD841VZ9eHqguGULNH883LVB//FKPR93w2H8E8S7UAJzFbQwvi/FbQtEAZvZXXQxY3WGidT + mHbT6614nxtYAjARP24nr4aDj7+fv3p/og/6NcUiL9IxWwoLTrHyrQeTh3lNpcQxLHE4YGD2L2fQ + e7C1rZ2P5+/zJBUuA4EH0i1FEowsrPrxQ23QZ4cAiopgDKo7xQKsfk/vR9Ch91PYLMUNKYZZjI6w + 1TwDJgF64psmU1xMHV3xf/aq5vr5OAjV8+vPcOums80cyIBT60jtkCALbKuPgLtapT1GtaCAubSQ + yktvBEvPrrieOiqoGt75JfMS+6OCbrc6KqTk0lFBV+mouPz9penthWMg8FCLKDIqhS9GkeeFjA/h + n0QRaF/mJG95watngff/yDpB0H1Hx4PCXnif3t+D2p3OCyW4ZtPPOav2x1fn5/Hx4EOK3uA1aq7i + LwuK8YrSIqlgIj3LwQx56t7g2enVxyOVB3g8uIQzf7qS7Di6xMjv70/Z4P83+P3lqSdAFAXoBh10 + l9vrel6lXnhryzPPPJJY0CAuCfyAw1FYAvVgfw3G8F7rllpm5kuzBMFB7a04v9ePjziZCjoTnj96 + TMXLiMp5/97eUoc+m2eTiYSXHKEZBGegOMmm8/FsOyHfJpzVMxyYs8k48JbDweVmAytsSZjUs+3M + g8GQg0TWzO+zVB6Nv1+n3nLw7BUbSCqnZTpdHZnvIHMk6cnrMeP4AJcPHDm4ANRJCfpNSMHe0CgH + ZmQp7cuP8ehF/nxowshCLXS+xc7Y7VjprfQa88zU2U1qt3cmroyUuXEHlCPdbhkpE5IrkTK8qkrJ + VyNlgSB2LUfKYs8P3KEXg64tObj/oFLyU+FnGUELqpSMqhBfE2U6DI/rJjDB3WrJ9bzpuqAPfI7v + WoksRH1WhM1vRAKWiKuLkZlaiUXWeVFm1+DBxmL1O8Q5p7PP6JfPVI/nXz004iDrJULdF2Uk44kG + BiL2bvZQDOuYEsU7pjBrs6yIQMPNSt4om1hPEc9HNV8xWxwLNn/JVoVhcHB+6YiLKuMekjFd6eT9 + oXfdBTZWCYChIEu/NF523ntG6LY3i9ntdE8PyBN0b/Xub8LK4n7eUekS9Z9NVzviCXitnD78zfp9 + JCyxKmgofoJzaTGX3IojzTH1DAzyAYgaLLMluriOBvDnyRo3hQHuF3B4iFXRtXNx1yysKnsEoTrd + 2P9ZU3Wd927UgW6VbrerrkOSy9V1xNWamjqBW66pMwr9KBnGHg9NDm9Qz+F0WcxvpshPoREgJ+gC + gTXwgDse6BiUXoQfBT2TIRAZelIyfXxI/w0b4mvYOmfTDXqu14Or7TJbSbb/YskQpdej0ie0D+3p + S+KCIUKkIKmAQ/3x6yVzw3+qo3Y8g0+u+rU6E7a4ke9HYQVrUcu8axzanDXBKkyZ+jxsAsSzne+W + 577ALhKI2SpTYWLmi7TdJ7AtqDVAyVYv37tJBywU3W61AqTk0gqgq7K+1MdTv6ThscSLzKQ8D6ul + JsznQ98VGaO4GH59mIMJK9j1vNH9Yr4YLL49wI4jNI4VGaYTYX8alVPQYUjpjQLTPJX9tFk9LGHJ + 3IGV9WWaDj7nwpfp5u4rnl1UJ2qe+tWJvA9xfZP5+rn8XfqzGjBDgWsoe8g9rDM03JD7rJzz8fH0 + 3OwTU9nzGkuaKnGOfd/jXgMqz3zxZVEZB3yP9s432H2N2ilv1xtU35eKVX+DZY+W2Ra3OPLeiubf + bud4MKEnTdakcnDG6SXKEuG47Ym/0IO+E3qD+mKjp4tgi/JnV5ppBuyATUjRy8U3OPY21DPdIDY/ + nmS+h2wJAnok5O+uXyYdo2gBQa1sFuB3lPyYHLYs9BOm5tKCptH+iITEU/Sx3qvomIXd6GPlM7b0 + saoJgz5WXpSEPdlWugL4aLrGOO3yYXafmnw8RaRA820OyhIQAhc5iPrbMXpmPNVmokv0L7iMxnfw + iErOE8pd320lwiSFLho/ApXufuLbse1RICuSgKny7WGmFIGnU831sbdmK2aW3lLAvJj6u2UZ9sBM + clAr34kdxA+TQlpSSVSJNw0BxZIzbVj8BV3vX7IVVdpEV9jsM/xtMddPd9y0fQUjY/FLxjrjyPRT + tkCyvBkDSaYvywSzu6U0evPAl445QO9QcMG5TCehYtIYXMIzDj6IOzUPOXGrhZwimucfT7GwQzrt + msilKGaWC5h/GZU5Ja2rXlgb1trzwsK7KFFYeELHKggNJMCvRdJJAYJOsQhnut3cydTkDHHfBeGE + p1U5HSKcN8lmnep6hx6BkHMp6+kMFmBHIUG+Ysar6XIP/DfICMjVebvNC4IYEofYkYUwT9cGqOIq + piRlCHCgv4oHBfXdYvYgac7evcMj4X6xqV1duYkCtiLc8j1DUm6YUMi/6BHG6TVJ79NbzPyZ3m9n + 3V2XQViaS+08gjtwJTJ9brlYqaGE193OxEpGvWSxutcjnOapEfhAZ4CeT6C6uvmbbuiXzUD85XYk + 5uwYlxmMW5eV7CG2S2vfqVitBuLVdql4TJow+fs2U802ycA8MeGZRa4B0JHe8pf5nLOITh4ip+Gd + fI+FzOggOLQPXAeNTYXk4cYNelSP4d1/9gaM+2F1H9KCD9P/wYajhaa73Bv96qPUu8a4ciPSKuI1 + L9oZS9Yn6AqLLu0+uB4drdV7njasFFeslLe/vz9rRv5W3BUxna35OlDTaD8OhP3FPX4BALCyaFWu + 77EoelF3O+wtld4aygrhzA/tozd0u2WFcCG5UiEcr0pk18X75LRaIjzh5RLhI87jKPCHnCchRivb + MMC3M2hgz1jJx9z1m8A56CaPVha1D24wPEN7CohUHrfaeHoNpUSaoyMBM8bvSNFBz1gzdMgmTIIO + ukizawJ7wmK7dtS/xaeQeBoMJMd5uvDa3jfsJxB00wpfQhmyGmW954SLTbuduXuY7cztZrVDIzVG + O2J1cT/cbJdMUaQXzTRBlzGSRRWL2SnPLj68O8dkcaSTZ0dO9an8oU8o3BFNCPOeJ7KUV7u9amM2 + /wy2akIvWbTy0BtRq2822aPQ0cTfPc9uKWpmvu96mY1RSy51RX8GsR+4FLpqeAGzXSRalYUad+rA + lJscB+ZMKD5WLYe239a3x+bje9wz0K77EOVQx5k9VFwf+1SE6CjWQpPvISblcy8xrNAueP8kUfSx + sdeJPhZut6WPRclV+li4KlPDTj94QZU/Nqryx3Iw2Hg85JEXqhJPrzT7YE7xKxE7MBpCe0ago3YR + 3KfIHJzBKz6DdtXEOlLPtEdXhcJ5ld57QV+IhjBxA8X68aSUzn76FWMQn3572ambh4Ovd9PxnZjF + awS5wi60RrgVPIupy6PrFGa09lQQReWNwmVRasV0BTN/na1E1wmnP7ZqtuOIead5dxkPeshIY2Dm + suKC3lMObPwUQlFyZOVd8S3WEIDKFt6P2MYDBRZpDUZhx3yxcgYUVOGfG4RxmKTHRM8mMcWNs2+w + m8/XqNW0qex7Z15UDiGs/61wEPCr1zGilj9ki4TQjRhQCHVVMjNcL6Vm/ubTxUh9DOnfoFr6CfOO + nMt0jknZqN+pO9TnX8HzDgoRZXSZL0Nrvis6SURQvomlJ/qkUaOyp28M3bBpYR8s3WOcUC/4waoF + K8KittriCRXXNemKuu6XvZSs7VrQJJC12eXYy0ywA2gE6hP8m9VHtW5YbtK+CY8Z6xqJpofsTVrZ + SMmkpasyDL2aSwxR2QBqspamSJiQFnPQixCjnIgTY3TPVvDfo7K5RU9dQssONi+s3QArIv40xqoX + 1rxkrRnZYkXWJ7DQmVARU9uFdUdxX2bgYR6wrivUi0gTsftueyyhWnhc5kK8v2RBaG830e2WlBpC + coVSA6/K0rhXF97IzPZDDAdsTkmZU+O5H3H4YQj/+IFMlZayhiQ0+Sclt+IvIfvnIF0hRBhTxvJ8 + hQXMblgEqdifblbpfYbUDuPFBHpL5KWgkm0uWElvhmG1nKKM8eOcwAPeoVrm489Yt8X1mYiLqvQG + +DUxfg1Y/iuPwyiSDudDXARqvnqy/kYnApjf7AlgfqslgPmtSADz6gyLr5ULcPC4XIBjFLtoRA1j + N3I5N/N4inmRdZqOLqN8lY1DzzJbtS5SJLLkmpIEYDPzQy9qSqPfmV0TByZrZ6NsPf3aebf0B2gW + FomMQ4DFpuyPCEMW7mq9YP4rojBYwqJT9SHxjPp4KC5z+W9ISfDwY8SXRyeUnY9/YOq54eDXdMWX + v7ycXohb39+t2VIAWjAJC6blfJ6R0yHb4MdiUoL5+fhUDXIBbyrCwqpsZPhgcbbI8sliZuoSFVHs + PgbjWTv6K6RTGr/qcRp4Gl4NsCNcf48PLU9nKx9ymIRRUWeg7aHlzev0pwPVlpAMExW5msLc3te8 + P8z18eTTh22FWsWon0rgkpOFKzbIX8zds4uD/+AIaE+BBnFw1W4DrTymjUA+l9L8RTr++m4x/rz7 + 7ZoBLqDkUJGxi0uXJR3oN8TtdvQbJLlMvyGukpJzdn4WlLMzecCjsMK/EcDu5AfDIEkCPyyHMu4y + BDqDvWL43u/gQFwt7rJvKVEHfzj7wEeRmlHwjbnfHN3moyL0Or8JfkHFXNR1ymYbcQiei7rVU8w+ + XBRh1khyM97eS6o3WVdKbYXw6xt2orHkqB8ot8DZZMzhUCdVDDl0qhmg3cmLkOzNZ26Fos9OUkHL + SXyfx1HYA5F9/QsZff8l00velBuEDXITzwu8ak22009FRQRHTM+S+ixXWGFNHZAwn8VV2hUdBq4j + gvLCuClr1uhQrbOWIPtFP4+hjvLI7Sx3O/9a84ohD2ObT84J+xtGKodXi2XSUB8AmjMna17pTY2h + 82db0w68oE4GDjn3qCR8TLoylXwTXAigpKDftw1M2xJm31Nio/rLyb9WnpIdvXScFMqmWdMMQ6/T + yfaX1nZC4xJQX5ovEln3oPXT698xqu23wlLu2oXdBbZlB/FIZyohjRvM/0JeivzqnYP+U+fk7M2A + +qOwjGEQtk17S3tmH75R0MdDVjf74F0KE7DLm/g8oPGFbdEe1d4bjbUXRpH6oH0lxHFdlyxW01vb + IG4uK5Fk2PPbWTaiBQkPtL7dYybrY1xNTNXTzsTZSkLiUcmNm8V2NUJSk38rN3JV+7KaMB4jAIap + znl/GwV/a1DqbMXyhr4vNHNaiFfa0T6BVRXoqgnReXTseh2rJsiHrKsmqEbMqgnyKllZ99mU6xjj + qBR5d2quGX5jeFpQPX8AKQ6KEvFCN5aVDrrgRtvr+lBykWqu89NR8el3Vr4PP4gpXXYpCqFU4KKN + 77KX66u/nXnPlCLpNcWBzDnNFzUnaN3TvkuEqp8WKz5CEaOrTcbYj9nFc0GKWmHf4o4W5SFr9+6D + 60r2EqbSKUpxfDY67ZKkJB6wTVMi6dVEJXFdpSpd8dDMVfI834sjBMKUkpWYH8c8HsI/SSiDq+9E + 0PRmSgF0VGExWrFcitiMIOlOV6v0YYSvNCniv9N5OoP+WVM0Fh5c3Gejrzi5pFH2MFjDPEfw3G0h + AyqOx6P0LxFG5XGIqE1HTZlIQcf4OXM7QmDyh2yhY7oRAzqmrtLYl2DYTh0/gWYXT5dm8Z15KiFj + vqvSNQrbcJXlYF+4WBepzfVYekwgeBo4k+9wfDldEPs7B1QtA53c5L9Jjl3eSUejR2w1NNmAoZ/R + NZr+utAPqppvHfNXrs9XGVcuikS6qEAhJW1dNtYVdUM30lCoA5PQQd32opq3GxbrAVySA+6+BNUq + lb7aNV2tIZqY3yUU14b+7i7Z+QG6yQ5WOBbrlzmIXY7paOPhsuirzG7vg56ps+THLaKnpn4vVaVh + w0okIskLWRdEEt5uiUgSkiuIJLwqq0pffqqpKu1FFUASc1ngBdEQ/o1CX2p4VzkuRlSMQOIVnfUi + XXyzindTAg69Z9m7197RcJDp+IDg/swfOhEFxIjeBbZKDbq5WG3YcnS5vIX/fpwu2fKIOISJtkb4 + 9NV4oMF3KcMCG/jh2fToQ7YR4QBZfH2tCkivNnuXFykEPSLOg7gaV8u2n2FohPN+R6/Uh8rioFwb + ZFhsNYxY4FZSqNpbqo2YeZFfrlSADQ0LpMWwiELQteu4jzWSpSnO5TNTek4T67k8cZNyIZX9pBbi + iLJjnD/FTHVwtWqQVhxT5QG/QA7XxP7S7p+H/itJMDvbSv/rLqXnl2ryoh5aH+3wYmS7FepWB66k + KNxjC7Fzm0qU3z1Sa41gpv8F3D87JPjlqde2fVr6lg6T+ehuJ0Z1e/7+niWuvS5Ct1vpIlJySReh + q7m7iVeocbiIbxa1Ef5iFPlwWAyjQKzMIji6mqgriISe+e7VUQGWLw2vEwHZB3PfqEdwuVxz/pJA + vFgIxiys9Qo+AKymwVUsbgArZnDFgrQgXCflyrplKK7GL0V2MgwovWLl5QbP4LBZbwevxLpPj0oK + gd+IbAmCBH1QJWWgoGePF3M4gDZb2U3qfCkpAl4TPttooIAjUZOvgSMeD6qyROcpjptDE1EzDkU8 + tDloq86b/Y9mMos5p9uLuYG9+3J25BxRpE5PkU6Pcx7yIvy4Za7bbKK9llHG+Y23WywLyw1+f3lt + NiJjmiIKxuIYicS7UETRM9YUUbIJkyKKLsqU4HQmUxuFMgLK1mo6dwo/D67gDme5zpigjPLiSBZP + 3yM1t1bNPLBabpiwvFztoliw1JC4m7Uk8uoYHg9BaMGXGYQv7dSgzZCggzMVfhgsxjMQ3tn8SzZb + LG3JBELfqEOsWGAt+Gd+VOXePeK99ij4Sr62TyiXfSObtdnZdlSdtpD5nbnejGscRvIqPMboUBcY + Bj1jjcKQTZggDLpIW2DBjYn1WJzy70Upwq+fRIfw53UKsKgeo6THXy9d1iHpkW63Uuul5JJaT1dl + Oc6LT2jAlrT6OCzlA3gvRn4YgB0yhH8Ew5QIpKTXAdW6lTwDRRTLl3S8XaBSpOkYCiwr6NgWXTVV + ivgfy03AK3q4IPvHmysqcBCZqOxiUSMWR5z5FY/bmxK4yNCoE+6XxBXdajGD7c8vA72LX2EWFUui + hnerFyS7aKT7LE8yMxMjeZOHTsl16COHSr9G5Rq7Vtb+xR89+tEoQ4wjeWKWebIdP0dMIc1SFHHu + yFc1dpVi1hyJ/n7ZgWJAhJemOO2sXVSccDikHctJpAskW5GMPGrqoiNXA95urhfrT+w1/S6WtYlR + TvqdqYL69XslBM4s7xv23doTRLTucO9gpFDW2fmlG0f2pwzdbnXKSMmlU4auSufR5UUlkOVWWJXD + F6OQRX7oD0MWe65Lh0wpox43TJEqQNFryb1G1C1IrYa7Glh4mbhBe3lWy2r4iObHrJxPFXmNpZuN + 8n4H5GU1lAnsC8Mku0Z3lXGEeGH5nNNBnsBPwiQspgRl0PVb4d1fYZUptJmzFY6F7LvC6TDPsDmc + GLI+I5pAsipg6F5VvQpEi1d4TUHBn41o3ErjOETFaTGmLVek7K+x8HOKLn8w46G3BmF4Rc/nLqMU + Dix4z7WD80/Xq/epQCD2hDARS73V8WSxldJU6YBzqi+oHRCFrqsIwdWVfYXfcPJtNyrwoiB5P479 + 2c033NrKJLUOI1XjYZWpjx/CAbbCEifS8ZSvb1uJcUUiHdsWElu4mWETFSDzP15dMtbBA0+3W22i + UnJpE6WrtIn+enrBeIWgBPYRU1f3ohcjL4qjIB56MRdUO6K2asELhCSVQ6XCrPPkf3L75N6wortc + Z+ppFJ5wD+WB+gJ3BaYNEm5sPXjrib+89U+Uy4R2aZ3UJ70BQzX5CFeq7XasF3o3vcb9osapsqbN + 4PL0HZNb/a/pEnqpj2zeMPa5H9Vv9sqFYe74lei8nTD7kyPhXuzyimGTF1xZwcRq4nTxeFMaK2M8 + 8rXBVLFKdO7lfbV8cug2UrUooc6ffuo5tDR1CdqEcco6DZIdbtXhAAySz3scO3YeWwuq9IMtK9L2 + zTjIgSwsfbG5BMzl4kAQ2I09hYSB69aEeoxXy/mNfhZnbr07dn9H7neAMO/p0e3DvdoHM4nH3cqU + rs4ba6drV/dtB3uRclxeXoJq2qGEvLjdroQ8SS6XkBdXSdX5dF6xF1kSudUS8mGEUdBhGHk8Dtur + 8FyvQP5fhMgPzIokz0BhkXQAeAm3H1C63dIBICRXHAB4VXLrXXyqaq4hmvimA+A5Q4AmjCj8m4hs + 3Rok69XpG0Li4Q/kfy6XGZFxv0XO3p3BWauWpTy6r5YbFiyFYkH8uCU5ooAGmmSVShmFjFVhq4Hi + MFsvBmrghZYxnQvdQYjUEhFdiBIVR6pyUMCrVHVW8Z11gFOX8UYNMYx8n4e1YNNCNYh2lCkrw1lz + nc6PgySu1KA6SHzugUjiIA68MnaloWClUTUraORVYbB0k5iXiVV08TKQJCaDPthvtusyhtWN/Caq + HmTQ4n7glsSrtBnYvTeq6p/5wlETQqjhhafzL+kaE2ZvV4uv8L4Sf2QsZhOFxHy30R6pf+vlOttO + FncPy7t0ptopSoya512DxGJ9UPnGr7fz26nxplhNdGf/lkHCP98msG7eBRzcH7WDKnZdR846ofDs + mqpWegLOBtIDzHkkagrnmeSqPM9sej/VWpAN8uNnoCIJPYoMHFoMaUdePOFEataSTU9a1Om1YBiE + 7QXvrNuGbASIFYl3pmuYDULHzxmnrATwIBS2b18FqBqow4mDqXhOfhfriYiRrBnKLXKWwkRM/av3 + 737F+jRySzvqxsYo8+EOZVyJyN6tDk9HavIdrRTgly2qg9V47i2sgT2d5ZX4koAfs061H/OHrMsW + qEbMsgXyqqQUWS1nGAhEfdgsyVLxmGln9x/373ng2N4t7hWtCL6R0PUd6xQW+yTQgPwH5kvticH9 + 0aV2Ql79FApgWGBordMsD4P5Phlcrm2iOKO8y7NLl3cARdHtVtaqlFyyVukqrbW3VxcY0Sr5H0Ra + adFcDV6MMGfbS4Ys5FzVe2vyP4xX0EBNFWD7smxXhVLAHmiHcdkMS9fLdJXeTpHLA3fvcjVmg30z + ZmV+z2FTC/unERQtUynR+WCsF/3ODzN6aRK8EXvj+w+6/JkbMvuMuoYUuMNT8YRmJl4zvZ/OF+lY + aVUY9DZccHu2QNTOlU4ptdZZKtdSNz9QpFVC/8HI3R99KgRlGVgAIRUbkv1O+xST92DLoEFXw1y/ + y3QWGuQzCayInoSGxjqylVo3K/YW9jivaK83PAmCQhbGkZCwX3dJpYC7CsMWdCBjoNttMWxBlYyB + rsqYxMW7GgxbGXwRvhgFQQQ61zAIYjfYEZOYrEB+VSfoDlb4SZBpB8Q26grsiED+Yj76AnrIuFSc + D912yFw9E5zR19D9cnEL19x1tvmaZSShHvQqwGkmhPVkMIE5Kk1LnLrrAbo0p3JCY+h9Ov6czZzz + V58KcLNA6C2wzWlWkn2IfX4ctut7B2u9mLacMSzO2cNGnFn7bbEhsegs7xZr+N/tDHaLFTp40erf + e+eGDY1Krk/RzlkdsKcxIph57zLegWBG3G5HMEOSywQz4qo0dD79b5VgJgh5hWDGc70gSobwTxLL + FMO30rf4BQ4d9KG85af/Oxxk37BA0q3MIVD+R/gbrsKcy22NCbnCjf/PS81oeWIu7npvPg7E5m61 + 2N7eIZjvCyJVpaMYE5OXWP1NLP7pDE1Soq8v0L+Jjfft5j81dDL6Jo0zqi+MEBmxpgLTC2Nu4mLx + qibMWN6EGV5KypDjYaPUfashvHtj8MSAUNibokoiekehxdAgbHEhL1uMuTwxIGORQLJRoyP+cjsS + eNgx9voGVmdbnCgMK9/U1FE5HLo5nECL9GIxM5zPJl46iCpNFlON5Fc7P+VycHAD0Jw1XsQ78znu + Cuj8DEGhINrRQPdwRUv+7+74Thfnnk9m4h7LzOadJYVmWJoO3ToYtzctwNgEv4f+Ekal3q5s7t3s + oTDxtbwuvdFTbAY2YPNzOhLgWz/eUtSiD0YbziW7HphM9pgkut2SXU9IrrDr4VVSft6dv61kvvqR + m5SVn+dgyPHAHQYx84KkgkgyHT0fT8+fPT8qbEZTTFvZCLVzkgluQ+hZkaFJhXNIyxXIZNiwF9+m + E70HFR5FeMJseZeOPmcbUGRBfxWXpQ306exU0RkI9ebd5K6aSlvrkDLty8DwN388vaooMh281UXV + IGE+jyoKTFPXDJ5BLz4/avBb+35T2dOERYHvlTUQ0Vv32Eiz1zpoLsVVK7Pw5sqeKxnrIXMbi1HV + ioThGKer68W3h5ny0tGQGlLdZNfHO090ap4oM2yF7uFs4uDy06pHGJLq4RJFbGNndDzaLcRZQOSZ + xH9XB90w4i0kBWQV10zJTVdZh/oTpBzYy4lgLh9eeK5THvOTCMUe7HS3FWVHqhEkdbHhxg1PU1LS + xtfab0In45Q6d5/eYqbg9n4PmlutExxOydebw8YnMkjrg8HOf3+w1EfPDmChnzC1Che0AA/xUIUU + W2iQNhQ/YcYt7dFnb0e/vUWM2naJe/tkMV+s1kM8LzDGAP9cQIdiUb5subFOnNQWCvMDmqrz2xQm + a7b/VO2L2ZkT7crbS9fvgIen2610Tym5pHvSVdI9P55VE+JZ7JUcb+6L5ywBuzwYsoSHTCbE44CM + 0LEqtPhscOGDlZ2PMqmAH8fLqodLlPWoYVJJGmP20OWB65UVN9W5uwvJB35jkXpDdk6psrpdkN++ + RV3DLPUGBLkU6rR3kulaaWjzpJhzLhIDF4sVzDb4HaxH6S5Q6eivVreMLR0cV02F4saUaA6vixO0 + rplN27ndkDL+FI5sn1VPt8V201o7/Cet+53Ig1wtHZvvegIlvoW/IQmE8wMXw9vRXXavoV+HHjEw + CSkBdYrbwP7KRy8xatgihRC9LVXyoK3m4h5iWgfRZbEYxNcfPu4bOu9FK1Cnnq/rELG9ChGxrpWI + WH0pImbUIhJgEnGO3JBfdQxLdz34h4Mza7Tezm62K7i2XYszplKd6GbNnDn+hyoSeQRZDchlOH5Y + 410N9lqHadqTsYUwQb1qGr+tItIaXOtzYnQVQJLN3XQxanct2+KxvrN9Zlf3pS+jI/bjnPwbZ+Mh + indxAGh8i1P7cFAPCyM/D6nsFLtDMyfOsOXDCraXb4gIFx4a8kvssV95zKVqx3rdTTLqhAN2rUAm + I7M46ZKMjLdbJiMLyZVkZLyqmc+TlxU0cFiiSBTZyGBrhsEwBLU3DB6F+jzZzaDt5wzaSSvveXL9 + X9rzOtrzndFjXfDiBp6alU2eELMVG6yTyPNC9NH2PStOD50VjpjkGmvtJZ5wM/nSi4VMXLoPrq5+ + FyRdtHjRtzpdy+W70jwbInQ6eKbuHQ6C4/hqQD++lxdrHF1tpdT74es6FAXejbCrVVKQUEpmQy3c + hrm200zsjZ7+sYFjj0huz4JEZqrYUtr/jFT5Wl5IIfrEvSpyn9m9DHepo8UXjXKeNLHAdkpx+vEg + P3W+fzWtkpjS11bdv1UpNKEywxhLulUMUI/YGmCyAcP6omsyiD1K4SCBk3EGksBamCMIPQ8P4sWH + Wa2iWawH21mK8XD+mmjAuZHIOfS8gPZYvXNZFTvPaxQv0w2cH08YM9sf93zf4aCYETypZfS7CiSj + 4LdRXyLBzCLnE9h+GZiTs15l92Zg9RauIPqei/csdO1NILrdygSSkksmEF0lE+js/CwsJ0TywE1K + lSjjF8+5HyZxMoQ/8lBWfzrThyaspfHDbFBK8xuK1BBkA8S/o9koOfrS5VK8r0AZ4DNkupxNxqF7 + eM5EEoEq50Vlk0S+g00CJW8sbFgUrS0J+vraTDnTfuBNQBol1+mtSx0xskrvD2Gx9la18PFTJcUm + 2dKrVlv9PnLaYirfO1uit0TBR8ruI9WwdVVZ9dF+knaVTXkSuW064d3vlvDu2ye8+7UJ775KeL94 + dVnl24vL/OzBixFH0mY+5G6U+CUP10Vukkvs16tLVb03W1WD0bq+hA5sNQL/0Upp3BODEN0Vj5Wx + ZsIW7sBiWKxhhzXdSB5oYI0R6eL7FbxKuT67nd8sZpNsojdF4zRI4ibJzI0TOIUL7iTpRKoNgA7N + 6h5vLt6NJCBvNl3i5D3l+fwVZXCxUvwkmxH6D+6HmTtGsBNiQYSZifLW043gBtKxcum8QPl0f/5h + knEL2puiK+pmsz7RbFlgeypENuKoMlGx724L3T9YrDZ3mDY4gFn6/pw5OFlzVgDfpYgPaYSF17SL + sbefMftKbYjci3li2DXN08vKzYPrAu+EXrxNZwTwV8VVHjUQ/zPG8p9CUF5u+Z4rEUgs6KDS0+2W + CCQhuYJAwqtqy/8f5EYuQZAS369AkLwk4gEfenAgJKqga7ZafJuS50t3h+4LudyHBsjG9G0ulYBs + sJ7+JxPO6fn2/jpbndRzba+3t7fZekM700X2jcfk8sYfkyXuXCLfZZMt14PtEl0E6T3th4titR7Y + VOAJz10Oxb9sOVRSPL7UpxVKLx9Xy8In6y8tFaSKG84oxiM38twKbWZfh1ShNxcr2E9UWUL8tIJ3 + 2qBydD1WyTks5bapt3Z2DLf4a2m48cxoGHIR1/yPYF3HARdviVU8VtNrUWvkB84AR6wKDeBiFAaJ + FBt5Qzdb7Y6dhbTVeopKkrpurpQTVTulLbf6LhJ+lk2ZadK3IAyO3bgb5xs9Y035JpswGd/oIm3Q + 48nYj2m7PT09HdyAXQYq0qmoReVUrgzO8HZHPCTo2yJf0rcFRPAPtxW8smKLXoiiMdLQ35m6wEQ/ + b6+noPVtpvOyMFF+Yic6pi2+d3DtWFLWBBkEfElOjrof1AIEUvaqje+55bsil+DnbUVn2xlFZRmJ + QsrhGuZ6dtuwcbS9S4eyuFaJDn1VakDCUaE8vrocFVC3HWaWNUjKTSI5rPAysGVMsurLD9F2heFu + 9MDbthYwTrWR1svpfAL9CAddEejV3MGUevu4mbN7+qJ6UP47kB92jYX05Q97AjUjenBQRRQZEuku + s4NIT0jQ6a5aiNZItojRiSLzymGgYLuZKgja/u40T5ch9t8kxyzsRt0qn7E9xlUTxjEuL9IxvlrO + EleaTWYdPDU13idO4x/w6ZEAt3pe7PbPx3qAq/+7wUwOLrecP3QIpARBIEGhTQy+9M31+vOQtao+ + 7R1poVaxytFibod6e3S7rYfErdbbo6uS8O3ytCZHK6nkaI085jMWD+GfMAraCd/uViC/hvDtz1iE + BjqHOz8wOVjbdVT/9s2l68X2zja63WoqScmlqURXaSr9dvmhOpV8nCzF+Ery4nkQYqXAYRAyT5Rl + h7tfNdVgVTsDlUM1YJ+/re75suTxX6EPaJPiMGHKPlgJmzU5U0Cz2OLVu6wai1DGz0nZGQ+GIxbV + 2+TungbVT0x8eKFqBKj+AdOnFjeWMHnsIroHRGgMoi14Sc+L/H85P/dAOjiH1dL2eERhlyQOyyZy + peXKaq0FrB4cf3hKnqQgT7U6847doGOilXjGPs2KmiglWYmLtPus02UoNxNZB5M+fL0EJUZSOkn1 + wvnPdD4e3IChkeUgjSt83hFSBEoPlD6HYGeU2l2Uc3gWkxt6CaHZDgJ6x6Av4yMCGIMvaC/ix2q2 + B9JdUc5hcUg6SxBLej2//Hgx+J0fYrt/bxxkj1zXVphm656IOfmcxOraG5vZF6DQowKPHy7dqEP0 + kW63Uoik5JJCRFdpS/rwW7UeoBcxUyHygxfPfTdhgTf0mRuq6idI9qe+u1D/djbVh9hddl+EIK8y + BQweFn5G2yRFk22dUdlgUNm/QXeJaBmGiS4X39iy/IQqO39++vGXT+8u5d2T7Uow7mWrxTWKEOWe + KLBUcrXKA2W0yog8gJ4nJenDoqYIYE8MzkXKOZPRMzIBkgU6TVBRA84q1abLTJSyblpDvT/kO2ws + dWfZghyClhaay9IVWyiQbRXZHUt8n2b2FsVEh3X94nyUftnaukhCm9t8XQzOHtZ89Ha65oPC4bo2 + KSh+wLQsPt5ETSHEOLhYleYHJq4va2+JrWguwhD1uUuPQZ/ZF6eojYz2t3gcVtKfUPewZrZsLY/c + ywkpNpvqyNbsUL/YldGjlENTWs1uZGefBBSZqC+JV7/NdZiTvWkHkfKf8+gVP4ajv4v/XD5j6z9X + TRj+c3lR1j1LP0vbBdmTpxMEs3+mJP1nFx/enQ8Yi4I48ZIjp3LDB3y2fBcKFBFy12eOjBjRbvB1 + Mcr9b+vp7VxVJlPkOmvMa78fPFNMhnCGPxxZTaU+Gum2wT0yabJPWUJK/xKgcdK3izSPclu1gBd0 + ktcJFRAlZQ+F5E2CQ2ufcD6jeut1Q9ft1boE421fj4UeoSgO6jUWM8JSLDOYK5OH2ShfWgcJhpdL + YhkugI4fqZK7ubNIrlzqXaHhp5u7r2mnndBjzKuh9Lapo2vjqNonPv4UnFNiF6J9obQLZfPyoWPH + cmktrsOqAJlhVaZevrqm8/5FQeiULE24/aV5RWmVI6iTwtFNXKc0HMrBLG1ae3Nb9YFM8FzxSgd9 + WI/ZmiAq4k2ihvqqMKjUHrhdwxSdb9LpHK8KAk1bpVkpW7LQ7MuL+GV07AadKLnUM5aeYt1E0VOs + LpKKJViS6UURMYJdQChDp+YvpTxuLR50K+aF5CIOXWIww806ZxCBB8fbFW4SilALUxXRLMXbbruO + XJBEMh0Y33Gw3Uxn3VC16tx48mnn9q7Xx05gf3QnMHai71IWCA1sTty7Cx5k/XL7NtAeeejJlJXe + 79nDj09B9xJtE/I3sMo7UQfmD1lbhaoR0yyUVwu8gaSfljcj808o8eLvYRIeux5tTnDISmi0mxsd + ORi6w1AnCaHi9IbxvWq6dY2MxJxgOmIezBbZt0LX7X1e9gMtfIoM0b5L8/3sLAjcbvFb9YjdXNcN + FGa6ukb+Dzh9JHrw6n4cjMKcK578GjwJQzeO4Ag2/4wa/NWHM41JYw5KgvnvJSCeHB8RKXGTxRaU + 0tEadZzJ4HqVpZ/RF5VOV4Mv0xSzEhEosIDJCZMKXhIpkDs7TDkFJtFBKGXvNLe6PLvDHUJGMQlo + /YRdcoj3OJsulHsczcov2crOgNSCEsobL+oX+HKT9D69RbfE9H4763xsR4yyS/H1uu9lESMkP3TQ + FLcxkdJD37n/sO8vtKHr0IsaFU0knZBi723yY5/Sl2AyzRQ56s1i9ZmENvhyGspjte3f1w+DMRLn + CdL8HwYJ2AMq62HUFe8Umwr8J2zGn5aPGuhdsQXnmUJqqGpYEiwqafQBpH9a8XefCn++ec/iDvF3 + ut0OkEiSy4BEcZVOldNPb6qARI5s4SVAIgtxtxqykEcKQ6TYBtYZGMPZL5u7VSZIv6QpX0Krwbgu + lncpGHV4uOAVhJhpa2C0WYxUxvoG4dSiMMWzsy+bo9z1J6Ljp5vbmpqdclKbNKTNZBEscWOXl+PN + y/YvauD/CSMz6nx19V2aKXwN536clGmG8g43UYrMb+CRiEEMDHNOIwHvhy+nXssYTp1dt1jd09pA + b70xxl3H96Rgo4nCCoXmUOpCREFyZJminKD2T3SUW78E/g05KtSWJZy9OH08yhjGH6Olg2tAAxqZ + L6o0IysnLmYlDJavevv8i+2P+UeLahwguPFlD86/pKoU+Th09OL0lEnoR8TVuZxmYzhJUOPA2g35 + ay1umk/SWpIN35UaRzZSUlTCh5y41mnT3xEQpxWmgyIPni9XROvX7yubk7tbbO2FmE+nypz9kmD1 + HR3wi9J2bvxWs+hwqT9F5uJTiQ8opY0rlwDzfX7s8k4+AfmMrVNANWF4BeRFUsIKLk5YkXPn/PfX + DN5SkQLIwTOEgekfh0ksodtkAdlEm63KMbiSEQKsYVAw1tnETFomJDKMZSbyeOo2zP582z87o6ua + cZ4yE5jXyUyA223NBJRcNRPgKpkJV+/PKzBd5vFq3hJPgsTzhjyJEkzYEjNUowhn2eYuFdzlQhOb + LK8ZG7GTwdVsAhqZ2j0kOxjyWARCTZuuTV1wOgdrUseQpDNI2e/H0koQMmsxtEb+vJHEFiVuE3wU + 3Wvcr2jy1frJJqY2biqoZgrUOnvpY4qfaijxYMZWUo0KwNRm4dv515oXDXkYNxgFWpa2CsrsPq3D + UTICkXS0WOIG00ILn6v54dINlZpdTW/xV/O2k9qpsnRwkmo9XjGY8rDg8ctb6qjSclKzzR6U9kar + 2GZXZlT7XoXOtJa1N7HI96CWaEcBCW7gai+AjlnoiM5a4J7F0dV266vtNuiSJiput91ug5o0UXFV + Vpo5+7XGK4N5TOXtFumkwiF34wB1QREdKGuBJRVWln0Zf65xovSVfdy3H4WhVhH5ZfJMC6vXJFQu + 7XI7GyjnbJA7vSDTBwWqLk2gIlfvnrIHqhRpzbDEE1nn5WYK92Nll+1S4YOxCotSDQvLf3yXjT8v + F1Ok3d/Skls7OKlyNwcPnUd0TIh+Ic96XQ9WZNX51P/U9tz3sLyYBMPM7heT7axNzl8F4qV2+EAR + LXsdFGq63ZZo2asq1HRVKtQfP5k7PHM92FeToMy0/JzFoR/7Q5ZgGUi5xc83TJFUmjs44gQXot5a + Os42D7NiTXFD1WUsbsr2QkIe36uU6Pp4el5Aidc1VJuTFTEv/FeZX9KuNZhrndvzA1Zx+je3pzf6 + ivjy4cHCIAq6y23Iiqo7SYLYrGlWJ9y5kkF8SfB8lW28s9rBljQASk0mNWcmDa/8UQkKGA6upjcc + 9IGlOC3gfWtyKx2csznfMk8c2S24+Oo70EaF9LjkTm+oflVBiH84vfgVdrX1GBnbbJVk0b3iJGkf + EZs33ltWs9eSiiS0rd7voI37CUXUcWrYh3mtMr7aU6zrJbRDz9VWHsqykNCJ9vRAdLtlWUghuVIW + Eq/KEu6f3vIKZ76PDm2zKuSIe3HiBkPuM+5HsoR7tt0IFP8qu0tnImg6yQQX4VpeWyBTh2FDw+pd + 3S82ixlMIdwo0EVyD3NAMtuWaEGQfWiV49JoNelM44+bO354BRUz19ioM19k6ylJa4rNNmUup7Pl + XToU/x3p/mowJYKgsT6kB/ZLWI6V1uB7zaCpmQy8U54eO81YWe7NJGkskSklOhdqM55XZ0n/M8LB + eay3d+4GDr0mI51Lfc+hFZTxw02JFpye/Uts8qUcWuD5BxR/KTzflV2r1/rJuOjwkR3r9PsIbRrf + IHAl0Hs2Pqg+Wo+MmhGlwlUFDcVP8GZw8+3sYYy19QbXMLIdk0v8SJcaTM74MfO6FXxXD1mXG1SN + mAUH5VWZw1vkxVMKZs6ElYmywgtZW0NGsAqSkX0oTkLhI+AylVAUAvq6uEZtYbuibKn2sudN+lhf + UOx2Ut+DrHw1srHmOD2PuhWRVI9YM5xSAybBqbhGatBysZQhydej68U3PW7it1/+eY4O3izNScIv + 4H4HHxKkpgHTLOX70Yt/N+by/QH8jxlZ9D3O89ZhpK/OXudfqhCX1kp9Hx4ozy15yaSQ4eAaVuft + QURKPo9dosbQFbAPWkZUeevje8/l9lYE3W5lRUjJJSuCruri8qxSXZ77Li+VVgxfjEKWBNEQDHC/ + BMTsqYo4ay4jLuqGs5rC4Xk1efbfcvL15eT3LPZehtGq0Ckp+cV67IjM8t3B1WCZrjYIzlyf5O5/ + DDQQ4aOYaYOUkJSKYF/4hc6n6T1oF4OXs3T8+SbFujHZ/TRtnSgOTVxlOATcl4EFwsqJ+sjZNwHf + E6uwcXdsyxnZwU1dhdf3Ud09KlZ3x/EQo6QmbFux98YMgR7ofH5oNfWnWv/8UJbr71I6XJ41gaur + y/j+sRt1y6CUz1hXl5FNmNVl6KLM9G7TuXco5Ll8pNGJk8Rxnm6l7afLVtlfpQqbSJ19PwREc/+m + c9xPzXRdRyl8HR67rNNEp0ds57lswJjmdI1m+T/enQ3WYAuCxQ9Nz+fZzEgU3vHnQgtiojPJaXAo + UD4mgwQvHSBDRXm1P2NPWUHgxoH+Ho3k7iqtHxLnJ19EEpY58eMKgekBUiKpE2g+nxqJdjQ8QUze + 2i+L2Sa9zUa3QrVTU0PN7G5Hq/ZSPQneooDTdBewMPk9+4IsuO9XO8tOsP0eekAju94+2D3UewsP + eXFTOVTcwT5XdaDoij7sZXLs8o6qEz1jrTrJJkzViS5KOvXxZ6ZA+Ij/aYLcORV4UAmFdAWCHJQm + jhc/oeOFea5YcYhinKsqHITySg/znuwX1uknue3HUQCyJKHScuPTDxcjXQc0zzba+cXOD9XufjyE + zYq37HGBce0Kbk2e/Z8OvBZ4ahP02JvgmHVTq+UztpugasLYBOVF6fZPx9ILKZZVEbOlKfp0GpLk + KokDDxk0jhybRy6wgdJz2KjYK5lLDD6H19Y8kDKjlQvUSntDskrxDQ04KBvWyh0Bp8dnGFJzlCD0 + 795Dm/YAS7rdyp8uJZf86XRVASwvKhB6zjwTleOzF8/hvE3iZMgDljDWXrRrOgP5Xx8RL9MTx/8T + KP71qak2QBW6MoA9EM/4wduRhOHg5If1JhbHs3+8vXx1lJftFqWN1Jr4x9tPDO5Qz+e2arY6Eg7y + l+9+CwbPrpFopuStF75ZBZAxnivUSEIrZbb4OpACYAmOM3TeEqAe3kzjIZnHBG9A6AU1jLMHsuA3 + aV4JoyBY+fs2XdS4/XeGbjAXa6xgA2W6NZ37zgSfINAZvNwLjt2oWwYvPWOdwSubMDN46WJ9Bu/V + 9N4Xk/dDOuPFGM0zuly8dqSPyUjxgIVuBNq9D4frfOYJmi/Ggp4OyY4FqHcII7QpwpU6n7gBk1qZ + +JbJFE8A6zeQacqh1OqaM5HrZj08SLNe5zfb5jW3sx1HRE9eJ3Y4ELsO/LQSjqtbW2j1D/LE713j + UQLBBU3HZnu97TpBPSYhHh+m63Ak1pEd4kFtDKFWrU9BR2YdHQzqIWvlWjViatfyqqoavJHVjlhy + RYs9FVOtoCnLkJuz847BJUgD5fmeO54XMj/kXTgAaqKs/SBq7IvistBgxT4QORqwiNcQ7++VRvsT + 0QpYP9RObhuQQVs/4RQCYTi4Fiz+2+vGhWgN+fG4Z/gWuoeI+3PFMMp6EQEFC/7ULjG3fiN4/y0b + 39m/osGy/Jy5x9ztVrOTnrGu2SmbMGt20kU6AGDlSKs0R/NpVwCMZzb/D7TitP1x8DvIcFCQwM3y + KDoMatll2HeSdO67GYQ0n5aL9WZUQPkUEGnt2N/2g4HXVWTRgg/JDXiS2Ih+8QydiD877SGkHx4m + JZFbGgGXiqvlsLdU24dAZP/x90uX+/ZQUrrdyvUlJZdcX3SVtoz3Vx/iiusLBsV0ffEXIz9yme8P + 4Z8YNcA219e/VyC/pl79Ya6vJ+WyCv42go6/e5ht7qaL1RTMj8U6G7GROlKMmgAnA5FXK9kb8Lkp + BTjW6ewLUjdrTkvoT0RNQnde3W+8JehC9wsVv8LqjuhOAnGF6hETeFu580i1O10vF9AvtxgNm0/g + PWaZeF76csB6Lt6i0r02zofzVznlQxRjShdLZDS25p3tfEXd3T5Pi3U3SPQBn5zCSdvJ/5M/ZH3E + q0bMM15epVUnsY8w6+ZO4efBxeKeBdwUg0e4z5N+EEgJ83IdSo/odNwm0VpD64nIM2AuJ/sUfaZ7 + CgkD160B3xqvdhjk6cBy3TKjXGZvZPMv2WyxtKUTDX2v+PTyUF49G3FPHC2kXUJJaPRsV9CR3DTC + HLUbnfvdWB/1M9bQE9mECT2hixJ6Mk99aRYg6l9zZ33ROT4OXq8h0VKuIMGZ5ozFfzGSykPKpuuL + MK0TvVmNa2kPfrQd7uaDSNIIGdlCjtaSvvAjdP5QhaFKhQ3ae32vEgEHkrj1mnqmVisR67+9ZEkH + Yn263UoJl5JLSjhdpRX66vJNUqFwS8pKuPviOSjmse8N/ThkkVQHXqerebZ+mI0m01z5vJEXDQjJ + s/X/3aYzrD4iIn9w6Wg4+PcCOROx4rh+ZvmwWuSi7hfwQVOkmFgINvOBliL12XIJcIzPmCT8r1a3 + ScUaqMfXmpZBXEnlKlkCN20fXwufMZgfPFZhajAthLoS55X0rTAJK+lbT3lUHJxuOhbNPc+hrxBb + iHgOvs0uPty+r4eJ3AjBXqsrFL+fWNh2xL4zXcNiA1ujn5eFFeWSv2DZj8DEDYQiergoFkq8UW99 + CNsm0e5L9sAF2oHd6hGTdedTZaM8fAc77GKLuIRm1elnBPA/AR2Vgm/kjrpPbzGb8BBKih6pPGSd + rO57ccc+9AmHjHN2QdP1SWAsQ2Lc/u3S60IBS7db6Q9Sckl/oKukP7w9vQgq2eCJV9IfohfPmQv/ + F0RD/DeOZbC4xBN3l91nOYPacHA7247RuQXqmiD/mQzepkv+i/eL/0swODs7Pf2kyd+k3jYcpCb4 + pojpEk6p29niGi7mdZkFafN6OV1RSFDUSMu9XCVSKyOtuQgP0gMoP0XrkUINgdcOKmqI+QE3IAEa + qGFBZCGs4aa875DFvl9xU7Z0QR35IcKWbBpoIJwV1UjJ5Zgj9Eu+Vjjjkk5NmBAqQ5TXzHIlRZUJ + CP98E8vBhaez2WPhMxWdTObUzuHpSkoCfa73LD0qHZWyJhlWzQfVDzMEDQUXZB4a7McltkdFvPa9 + PyT3Xuvab+2SR+Uy3G256m7ogXmlE1xyJ8ViSGDuX99zFtkfhnS71WEoJZcOQ7pKh+HfX32sgrnh + f+Zh6L14zjn3/CH33VhS5V7qjQhmnNydhgQipmsz7IuxSC/CugKDu+ntHUyY5cNw8DVLP2OZMUm3 + jV+7XHkwQWezKiQX+hdF0VYgMonTzcCLzuRB9fdsXuVbLyd6mqQnscmbiyUeioTlLIldnpQPKPUO + BURz/dFU4cktkpb3LbsQ/8NqEoEXlw6limhTXsQjq3fdV17N+znvq19bwq5vl5v0c4YbpmoOzxgw + 6rdfREivmK2WTYwQH1juk2xVnJvNZ+BZuomXebGJwsG3Wnzd3A1Fq7ks6SzAX8nbf5PP+xv0+ouf + iD0Gti9YgLi6tO8gct0eIkuii4XtXRkIG+Oxy+MNMcr9QaiWad2NdWmfhFkZcBYY45e1geTbh5LJ + +vPFsajGylobqB3jHuQ2DULAfGkJF1S0fRpotRJDFUj23eTYDTuFkekR2yCybMAIIdM1iRIb3/Ey + SuxshBkuU9xMqvA9Z8d9v4NAB6WKeHMShN8RMkZIeCVvkh0MGuuNfOlJgrfs47rfHSXcA2bX59yc + cgOErZDz+ZD055hi3PlMXi+zMeIFFaK5FzxvzCnl3AYkvMNDTh05flhjR2YjsdsdKvZwfK/aCiMV + Hufh26ArEal8xjY8rpowwuPyIm2CFbZRp8o/eoY5xEVxGAV3I4Ybne/5pAUoRv7sG3Jg3FpwsfwV + QJ75Vl0Oi6+y+8Uka6/d+igBX0JdXrxnoWePuqTbrWxUKblko9JVmXD8j6uKjRq4SclhG78YcZ8l + LAIjlYeJLJFYrAb1JZ2nkxJruyxp+GVdX7Nr8FXwRxKF5msEAZoEmgmPGu0dlngBbLGVVGRV7bpZ + quvxH5WYXMzPHd9l92JWCDCl6K5iWRWOH1dvO0Z+nCSM/cs5032IZhF9eQ4OK1l9X6ezCe2+Jq2+ + GjcHJ4Iyp0I39h35FuRnq3vxzfR+O7OuQu1RkAfBnumM3kQNltVGg7OhLCCfRe3LVS034ss9v/SC + xH650e1Wy01KLi03ukrL7R/vzrm53nwewQaOEdpi3Y3wxQjmOEt4MIR//TiSR8RZmYT14/bU1/s9 + 1V8pBpLMuMM/phNeXYu7nzZrMHEjOFAs+MPDiMf80dZPvmEbSRKl0EVjhSj1ds6enVhy0ZsFRBG3 + hiwc6JWrFBOFL7hO0Zs/2Yo1NN3o2rDCrY3ikIRDfBP8XnC5gOh3H14x59Xpa708eRRGBHqLixCm + dFpjGdQtJZvn9nPdd5PxOD583UAiqXALmxd+8SS9R9R48/a1KzUoNpWH/RN2OgtrrsTEvaLe17IP + dHLqH1SXKeCURGW7Q9l+7OHRjj5Ut8hVXpQQHRpd6IzUI7ZeFNmA4UWha3QmaBpiycjx7PLjyyNZ + Sd1p/WNBuihN4VF19dAnlgIErveYCN0Hk8OPJF/4UQVyuiayeRHtBpdtC8R60KyktTstgpy8W0/F + HrwUHeW2OQIizfnLeXSMxCNd/ADiEWs3ADVgegHENQWMp02pmBJcw4lQJPq1fOQyu2UVgmD5OrD8 + mZ/4snot+Rwb6gQeyApkPbz7ohf23ZzaydBscXGi2ml+tBSHRJgsrPnA65Pqe8+NqMMrkHKlrc6O + KMuue1ocJMmOfs2RNgfsLWo/4Lr0VOR63UtPyYesS0+pRszSU/Iq7QsmtBWWAUhaOdP5YnWb4jzM + kY7FEJG53AstIcNSGPTGCE5Z7dVXOGT9x5VoqFqXh0nulTF8/4it3aM73KcUDjC7aDqft8Kenzi8 + WNkPLCHaE/PjmoXZxdM8Uv0b103HQKv9hunHEoS/R+5vpMlTmfcm7MzwpB6yTuRTjZiZfPIqObLG + d2tpfsB7oOWqckYGzClfeefg3VSEIJAmhkyylbf2kOUAxkWktXvhE6QR/s8ehrnn+nRUpuvxYi0S + STG1pUFSQzQfhBBZWy6EnLUK2mktyOcsqhHUqe8q4Yseah18z1IC+y27J7CdiWgwU5zo5sLohDzZ + Q8pj5x3koihvs07UUF8VSDBdEPR2tdguO1YEjfzcTHsTda5CpB6yN9VkIyVjja7S7pdOYLGuMbQt + WTgKXXA1or8+zHLWCg3yVfR3gh7g2cdwpCUd1Yiqmm3y1dBwC0PJqyCpmIkX4VpUXM55poZFAjGM + GIlfJYj04ALJO5mo7ZdsEJAk7Jh2f6glhOagCHVXS4VF1JzduPYB1mDkRO4ivB20waL8C3p9ZbWM + A5mnxPwOcTi63TJPSUiu5CnhVRn2/nDhVfKUhKfLzFMahW4Se/EwZMyLJdnQu0LYW29nSo2cTh5Q + A0cydJgtOuP1BGbyejOYTT9nIqmDKkMP2JBLPKvZx9vNdDb9j8oFmUym2vlyh6rIdoUAWkEeh0cR + 7ICwoUhc7GAxh0MK73tz8W4wRm1BjUV2rELy90uvpzRoHZD3gjD23XLoj0pfw2eO6j6zNhfadXkZ + Ql7fio4L4odiL0BfNedGB25HqdQXiDfG039eDtEj10OTRI77Rhj9yzlVo1z7+VP7ifQMvvHI+Lpy + wlDLJBlUJ0njFHFwZehEIjjYHfmpWtMrdYmtFitGAO+uG60DUrv3lVoPwO41+bddlkVhrD9n/rA2 + 8DlXmj+ohmukb1r0862O3EaE0WS3A9lO459SbQ4VzIx3qBNNt9vCzHi1TjRdpfP20+uXvAIzY8ge + VYKZeSzhPBh6HN46rGQFf3r97t3bXHklXTb7NqZQnsQyyPQ5T3nas/XQ2GrNAEYO4yghpppbGCqV + BidswAefz1MdZIGXpHrF9Kp03n66ueaV87bDF5QAONUizTqtKGFw8PAKLK4UsyHx9IZ1TeC+35RS + G0W+F7PyOY/ZrLgbVCNBtU3Xpx3DjLBpVZ/Q9gGqCzhCC1GpoSYNL351BP/X2LFe7PPIK7+AHsJR + eQhNTSFuTHau/7BGuUOCsGzFkG3nX6UxacyPiEVW86Mht7qAa6rru1LuddjcFnZZHBrJ1z/b+nVw + 38pRkb7nyA7OzewOo2R16B8OzuJx0v56li/yU4C8vDCqvmR5CrfHpy264jGgZGK/EQPVQ5w939Fa + P0hMX9+TNTtA7zfPACs3pOsTT/LV1Xs+qhGCMRP5CR9fvfb2g55BI55lI3eL2WKf79jPL0QAG8ra + 73rYddQO4TjER/Y9WlsngtIMI1nxjHmRvWZIt1tWPBOSKxXPmMgxF5rhxYeKZsjdwC9XPBvFSeLH + w4RH8Q7S5+kMpP+5SZ8vFAHsXbrJ6yqtqcIe4qGwssX6ZLDcbmhrEeTDs4VKEnM+fThlbpyXAUsS + SpR08xqmMNXsMXaH4OPiHMYlCnLsdLH6jBCgosRqHzlqvSW7RdIRK/r6cHl98E/3VgyjLyLrKNbB + 7OQN48cu6xjNVk9Zh7N1M2Y8W12WAe3tBh0jIqYzT5cYWRvR6VpMC3t2enF25LTcoPTI0+XYx9Yv + /h4m8bHri0gND2VNs++QkfyD0bZdamhUWHU6F+BoDMGDrl7VP5WqhBNZjOMvakDpSJ12awSOJ6Hk + Ns+K8uhi4SFYQt+pANXhVecSovm+JtAZNLzcWIME9ksqjd32HrU9Wr5fDZAO5Y16yD6gTLY3l9xn + 9nob3W6lt0nJJb2NrtJ++cfpBYvdiurGQjRfi6lsyYsRmE9xlAyTiFJvcY/9AxYB7JIKC3MB2gYd + mNlQeHszQZgm2tA9RVkLQ9Fj68FFOmdL4UsYw9K+w8IDUgFMl/hmFQUQexBz+VekMS7TzfiuOVEU + 4TuNdECwgXP0VpU0Q/0i11W/jOeW4kVFXwn34WQIy+4l9IWLqVuOZcWJqbNevCuSLCUIcvOTXEss + Ok/0K47RclVYpJPGPj0B++oe9dTFVlD8UueyZXGUMJJUN1KOnCO6locfEcMvvL+Ka6jv62j220ho + sS/9mMvMK90dC9KkG6BZhyi9u+BPfYCoEtJhNUPI9XbSXURQETHPxp+7yTkwvgQnFasZmI4yfOJi + qV3wO/0jfVDZgRDyX0gyLcXlvF+2GqkXxcCwjgvvJVJsRUYn9y9mp+shdukIe8/9wJ6fj263O8JI + cvkIE1fpCLs8fWfmYnuRF/IQ1WbzAHvuJS73hj5oepL64M0MlMH7h9log24ZGW4WQC34y+XV0VAA + RteDVCsswjSXOLC65z5ka7ak8t+nqzFmaasnc+gpGIIrNN/XRP2p+ZKzm5vpeApngaAFvV5ASyX5 + ayEYj7oVPT1FfsmV0H5mC5jECicrgQGF7YzO1NsZ9NvXpfOX+XDnze85IQLoNT5lRjIuZ7cq3df1 + 5PJpfxOvKRwY6VjV1cKohVHaZ88WiGnh1hipUlNW6vN+kp5Y/iSLZLl5PQX195Tnij35S38lWWOa + ULpTqY8PqhWIQuN83GDbtRRaCzreU9bjJWDnQg4uE3tQZUZ1jjFJKhKwDkVb6HZLUhEhuUIqglcV + mPFTBczoRqxCKfKc+WHixfEQ/4WfZGIZDPa1CUbTfm3YO38p2LOZ0vaz7Wd4SeFEKRaPN02Fq98/ + /DZiGnK4qUIOlVPAxB54jfw8rhf6YClV4A3okEAap3IoPEh810pWbsKVp6Tp0WfBY4ormHAuS0Db + KCMSpbBiLUYDQJHwJtgGY0ESMDBond+1awPBqFqmHFgcM21nqyqjMClgODEcMCf6oMkW5jY+ka5u + M+2zEpBEqv+41pQWYEkuEK+IgV5xjXz86+x2JcKeeP304myE7MOipULsYVgpzoRneXGwJw9zeNfx + usxaiyzGV9mKO7g0NG1KwmI6xM0cXQNjvi8K8TswTMLoFl+7OAt2Hlj7ueESiswUe3x3Sz3s7R7z + pFWstKF0R8tqM1Z5uxcvOXsVHbtdMvnzhyzzdvNGinm7+iptrwW/IFhvc6f8uyHH80IGq9SB/6e+ + iGp6fLyESWZ/vNDtVseLlFw6Xuiq5Ky6uEKgZgks75V5zOF8Cb0wiYNhCGdMIE8XEXVa3k1niqJS + uJTStaaEhGkFVrkOVIpg1w1MmGw1QCpoUYIWFWN9Jkkqq+WaR7UYdrG/mCHeEidUkTcb5mvoVTjD + 9z0FDHGVfZu2y7K8MHQbd22eRKDAlvFaUt7ozWJ2O0WULHaTeRb4gRuYNF05Oj0GC9eLon85r6i3 + CsXHRTy51oB7u87QNDMQVrD8HsaCNZHeRJ0DZAPi9dkWLP5C1i5ZY2v0yMBfC1EdtfFjsbFJtoZr + so0JoownYpejeaPPr8G7wr7xAXSRm/Xg6x1OJhy1AvPqM3jEXx45Yh5raDuPKeQdEr1JdYwEOV4D + QV0jxl1681rKtXbPrxdjWXzHfMThF+r6dLlMV+nGho1PS5WMfHhg5gun8NWd2cvJpapFWVp3u55q + PRQxTG48/kNQ8Z4XEHnIq6uzy08jtzuplfWpWduHfZhT/aANsMBF2Oit9ApVybt8YV/Qg9iXQHge + efaHKd1uCYQXkitAeLwqbbXTD361QFbMy0D45zxw42jIsZAJnaSnk8WHbDNCG0ufndXsPGltpfd+ + 3wCoA+y2BiCV8SlXbdmRxYbiOGk8zpnLoDvL5+V6O7vZrsjHYma7lvoChrs5SUyKdmqzettHZai1 + FzgAZwuYtuJM/XC3YcuBrHwBxtaXbKU4H+saGTyjKXBEOTf6MpKyLuDAgQWGgvK//EL3D1a4Bhyc + eRrKDOaloNUJg9z9RF3TS8HJOCx43PAde6g9mfDYt5EqJNX2n91WA6sR78wllMd2lxVXIzUAPYNA + WAfIeroc3X26bcW07D2luZfDTWw9lVFs3bisuqoHsd+J6aG3gziQxblY0Kk4F95uWZxLSK4U58Kr + dBCfXrwywStJFAReOSPNe/EcsRRJOGRBzGKZkfa/MI0KHp4K4PNhPX73bjhAz+pdCkZtOlihQo1u + tutNOp0L0yjbjnGc5ayQ4BeiA0dyu/VJDikaLxariTCT1iSQaP3Bkprin0HlvDi7RLQUQXbXd4uv + 6LNDYw5PhHTybzBG4EURJC06If6nUFFXUxVSC/42yL7R0YMd84vuKqFOnC6zKpzGTp34WLBmozBg + blTRJpbZaqpSPtdLeNM2UA6PrcQXyn9BPz/MGrHCRhVuFsUNx3+IdLZxxRCXg9ZU5DJgTfI8Hoc8 + wAxx873EzDn5E8wcB3/R+PLQdw/Dl6v9x2ME6FQfbeFUrTvk9xBTa/IGBIDIvhXN/VV2ax1iPRg+ + 9EMJ6DxVBlqTbo2uF1vYFCc1i9pqYHhAwC6Lx1vYlv6bHvATpgdIORHuE4V+sh7FunCALnUWu+4x + 60bSTY/YUnjKBgwCT7qmaqUQS9R2NZ3g5r1cZSq3P6doKgxCkfDpkGcL74YU335CJdFiFujBOiTJ + IGGsAIRYFw/DriL7YqXrl8MjbpYlnNv2H9fbSgNB0l6oCBoS5vEW67pqyojrBUJ7u+nnlBf49tLl + 7J+jU2sNXT1gpaNr6SUtXV0nPf3V2QdWRZkLxtqiou4iuiHhLBrCP2Ekywp+XMxHWF+UwkiFWLdK + tCtFlV6N71mNpitP9vxabaJe7EUGMYNK+HuEQij1HJcYW7meLjBhtAwZR3bMBlU0AaMniP1/Odad + 5Ygx0di4wGOO2y8BZ2dhNdrZE2C60UHcWAdxk25B3MQ+iJvUBnETae6+v/ytUufL97ywGsP1wdBJ + hqHv+d6ORNv5CuR/ffp+5ieQsPupVCd5vBjJ2scLkULx4eXrwbMPZy+1zkTZ3EcjhaiZiDzwQmWg + k8HH1T0ma+TZv+uNKDIkfMuKGGA9+DJNhXiYvrLJUuL4FrobBE83NJPfsIFIunI+Xn5gebg04cKC + +wlIIcDaJAoNK2IFO0PvB7hddz3dio387j5bTNn0qzMjn+T2TFtq00yU8s7ZS+Yew5bYRX1XD9kq + 8LoRQ4VXV2VisKheNBovsvl/QODgtJFrX955tmi+xWgUdXPo/T7o+FkQS97pmneoivoxrPn7zc5E + zLCdiIfaop87lYGfjFM6DkhMw0w7PFGV87hAT9djAfKEMn/egXYSdyAdEbfbkY6Q5DLpiLhK2tDF + 5buKNsRZEldIR7zIcyN/6EW+p6r0FuisEJ4K7d+LEC9hj6ZrEyN1rjMMUCVHDX2y2F7PshH6alFf + X2XpZ83LJPSqi9W0WqSR+GLPDQ6YF7LtBg63wHA+G6RjfuD6YS1Xa6mJeke5F7cQmhVka82pjOMt + EDSVKFWbGNis5A4LXQ3DcymHp0xaxsNubz9Lb28FZTcNWYYR/NqXb2LHVWKdx5s7Dk5p7W/3fVkg + MhQ7Vbn7O+prtlIaUXHQ4TUCmkfL6jg4XOqOr45qv7owdYsCKxwWYj7gLc2zZ8fzB6jajtwAxAFh + s3NYKrSHSGyrmdVPMpUXJ6EaMvU63SLx3ST0+DJo3CGIpUaXB0Fqno/oneGhy4ZduqONcWgKVX9B + iB5JdSOT/rAPCEVfuIeESeZ7z3e7MN/j7ZbM90Jyhfker8qk54tTv0p9n7CwQn2fBAlLomESuiKg + hrpPmYMupztCmUJ7uVymfjXTq23yvqvXXyKviS4j5jAefsXNY7VATDUmaVIEjCYaiFLFaAt21EZy + 1Io247T1oCPGRrtcYlnl+XCXi895QASWimOt4CauSMJ5kyEMAIdlS4LSmQYJ9FBTI/LCXTvau+JB + 0k7Y8IgbZFfRFpzuPbD/JCLL6Y+/X7peB/Yfut1qF5GSS7sIXaVd5M2r06oBBbuIuYnwFyM/DgPX + HfqJG3GJnsqjKKCf5Wkmt9tUoDRN3l4BV8n7GNViQTdzfjESk1nnzhP75an2Tr/J0qoVRa6DLzDv + kQ7N3G6SpsLxceIHflQBFmFT+M5gfNe9cgvTtRu4cePeVmxMbzyvLtFLQG+fe1xMTqC4CWtUL1Kk + qIzaRSZsR5c4b1oGTfYADhkM16BmuNaDZ9CL6yOT31kMj0DS5O91nW2+ZhkhpaX/B3TpV5dD+Vsx + OjQUf5PkL0gO9BnW+AZ9v4WbTooc0NfbzQCWvg5wpbPZA2yDk+18ggaNcKjDfOJLB+e9DnxF0ice + U5S4OEhyiuVprR2SabQBECdEjAlLdYFZUFmLWNUR8AbwHl30Sxxm6Y/SE6Kn1z9Iblt+KFaBJ+dX + 6yB36QePu0TFYAYLcJXrjNsDSwOT15N6YgwnL/wP3mKe2lpfVJbZzC3rfPIeCDcj5IH4hpEOPU30 + ltplFA91pCYSNo3oO10/xK4OsUObsDiJO+zhHTtLpkF0PCjsJkNPsh+PpkPpKp6kx/Bc315Xodst + 6TGE5Ao9Bl4lXeXs4jKo0GMEJQCJF74YMSTNiPgQ/gV9WcZ8LgT0DPoXemH2MMNFOxI7wGCKmjRV + 58M8WMpynh9pjow60NBQkhf9R1EZlaSpjQtkKGwqwXc+jqBn76dzWSAT3qVIxnBiWgfi/ILB2o7p + RC3y1m/nN4uZQGiqfFuZgITHhtCczparoIegPktAAYzCSlC/e52xRqmFhG2LUaq3AaOgiYQj9iKY + D+Vk7kNYu/86U8nBRaeJNyJGipIfGKy++LS9C+WgyOGfF1YoZrDo1S5LoKMZ3EsT9gHWmPLdD31v + n/Moyt+7q1tZnWC+5NoFBa4DUaG43ZJrV0iucO3iVZk0/PH3qGJuMz9wK0SFAVwNwmHAiGdOgBZy + LU0YMr+zwXp++fFi8GyOiaNbPLKXKWjgSIWT3t+ns2k613ediNzSFBf3TfZ1cHU5Gg4uX42EiXV5 + PtLpJ2uVeTzfRlW7G368n26EH6S2pBX3vZKlOTRKCcGB7MXVo4S+A17VDHzGweMJKx5FsesjcLJ0 + FKF7qI43xINmG0QloQddUPY2CoUOJpWow7rGCBSIHAo8l/gtq1KduF6jF0O14ZwV3S96MhiBR6PF + coMngwfB3bxeZmPkTRqC6Sz84v9ZpPPihHLEtM0pFH1RSxJfUbsOd39dF4PCDT3KHrmnqJ/oxz1i + Gh6xjxud0OGMOhD2Rdi11j7YJUFs1no+W55vB1mGHiIElYeZLBHNe9U5IOhFxMlSXElWH2H14OOb + PJTc+uGSxx3QvnS71YEhJZcODLpKB8bbq7csqBg9XuKX0luDF89jPw5jfxj7SezKE8MfiaSbkT+a + ZItvD8jtN10j9+Ng9iDgCqbiubmbriZwomeCywBRWfT8dTb/zwJ72aAVECEHwg/fr+CNvy4pB7K2 + qcGzHe9ydPDLnBi+xxuRuFK5yTl9+b8a8O4nLu8xh8YPQyp4Xtf23nQJ+0ut5/b57hwAXkyx6Zzs + d988uZAC8TtmUtec/YOl7qAmpe10LyFqH6Kyr68umdfB9UK3W+1DUnJpH6KrMkz0/qzCHOcm5QoR + 0YuRD1t36A3hnyhJ2rMOshXI7728158y68BRW5abeJT399fgD1FpyffpLca4wajeG5ri+hHhbCXB + qFIMFJHVITTNkUnouXlYiTzPHmQ/naxetRfJhML3sN7t9yK63S6ZkCSXUwnFVYX5vargXvDdynmE + o9gN/WQYs1Dl7gaStmyhQs4j9kxg4I5Gywdkt1ScZjmVuBnRzF3zw8HddL0RabwUptysHpYwwe/S + eUkrgc2I4uM3lMFCSUCUeLBWiNF0JQcWS7kMoOkM+nQ72yDeEYZBF9DVyOJ1FZrTW11E0TlZgeJt + MpX99nk6bybdiPwmEA5zOeOc+6UN8W+TDEzOL4u/YZDbVCyN8DVrBCnvFAzDOr2nZGucXi2NcLe5 + AHJtI3r8m4W6rJkRtF7ocrsiKlVlfIlM7HU6+4JVfsxeCRurENXLNuOhIiFzPf2PKTX2QtY0W7gb + J75fdqM3zPtSP4TNlc7luzp7LU7VHloNF5cXF00I7AMWbh/L1sE9S4O6QScWXnSXTFT94bTuBmyk + 1hvRK9ro+m2wgB6baYII4LQRToOGKWYtqEcaglwk2U+lNXW/mC+6fv6Odog61EA/HyrVY4ErpMLu + fJvORqKvbHOp2+pm9QkkVDJ9nheqpMpT+3//DzJW+1U4fe1JW+fKYMtx+t3lt2wbfXDRslAWrDzo + Q58g7V0Sq5RWFrr+sZt0qXybP2Sb0qobMVJa1VXSbZG7S3jiS7wxcF3vfPi3y+ybX0lf1Q1g+ip3 + ZfqqR4nAq11OeOuKmdYSW3zyPWCndlnB9hVAD7Wn3fzAmO0y4oUvLYzy4zH3Bu61OwWsEL45YBcK + OFVwLMy/fR18PrHKeX8bSTK63QLtY9GHGtJq6ets9oh5x4I9xX7h0yO2y142YCx6uiYrUvzfbToT + ZBLLxTfBquXoS6jeLL49wAaPn/pqdcvMXQEu4GJnzCV/UijdoPCHBYIZRUlCm9PberH05GWHc4mJ + RSc+WXITdAdx7q1bUKUpotbHqKcVTDF//KnhV5JmWYdn2O/dwC7sKk2k6Xi1T6mBp5H27wfEjtew + YnuoT713Czs4WQgNjstvQStvf2lIpy3G4vXp+V6aGNjSWhNj8P+P3bibJiYfstbEVCOmJiavkn9y + vVpKf+PVpSqgrH/S+vQV3OXgrbANe0nMYmc/UMXuTKWfA0zRX7yi31Tk/jQuK1CD9er+wRAJbVCJ + khe5EPKBTaYF3Grz1tCMvWAuU+s6DFhnA0s+Y7uqVRPGopYX6/Nl3w0KaLyL9IZpdMyziw/vzhHe + zKMgdI8MrauDlJKBpt5QqGxc2We9UHjxqowGagQrcY/KCIYWZKxmfYGAQTxY7V2dzXuA2RBQXjw6 + jRfiDC3UGOx4cgbEVa1FibIADZK6vKBflFqoxbWf4B8TXYbvSMR+djYZR94vxmLY7xtg5xbH3nnn + DVJtQVzCv1js2Yc66XZL+JeQXIF/4VWJF776rUKZ6sVouZjgrxFyqHB3GPIodmWKPzzLRIBDCIHu + WkwodpJ+w32aKryuYacBe0+lj46uPp5evlofneCmjQFPUVMMNIpbqhO6zsaovi8UzerVerFvPYHv + nGFSkFpU3IX0NNffDdlx3BwSRO+rqk+UR05lBzYkC/uNycKmPB1b05mg5ddszPNtIi5qaEBl+91s + Rb0iQ1ji7nxb56L8XvL7zRrEqhYSzZ4FrAHZ7nogyxOUvu+kMk+pksF03ZrZC7ORLR2c7hrhFyWB + zOztv5yf6G98xGKY7BT1hAy20qjYPMtCRkZxl8TcNi+rb1jIN7nW108A5rGcIzE5+dqWuF13Pgkf + AewYYhxgUSGwf5wtD0kC7SisvWS7penQer56pOKfnsGPyTFzO6j4+hk7FT9voqDi64t01t7f33DF + azFfZyvcvgrl0eWnOoXS6Bf3N2ypUnOZc7e8Fz5Vz2WRYwfS6+BI27mk+pTVR6mSNiJt5lIu1vtL + Hvr20Hq63Uq3kpJLuhVdVfxJVzx+WdGuOHKTFrUr/8XzMPKY5w3hH0G0LbKJC0kROgkHjzLYa2az + wTPfvTpSwXUcBSIHOhnMs3SFiZho+4jVBTvD5XINb7IUyhpWxi0MGXI9Ywl0HheEqVWneJrg6eta + LWwt3Oz0RpV3UcWZXok5nh6VdB+/kQMxCBKEupZUn8KUw/WzmW62slc0xMBMovKaoFFGA5Xay80I + Lp9VQEZO78N02nmYHJpoWiWBHYJyaF2xCkUsNPsmTmixbho3izaMj89yM77GpKwhJdzxxHcIwx66 + DcWECtDTq9PjnIdcN9++Tmw0j57TpjxK/Nq9pKy0okPkPXaSFXMDHU+NwmMWd3P0yWesI6qyCTOk + ShfpVFje30nnfaNLrMTF4ZTI5Oivn16/e/dWj72aShcg3bkfr6iGTxj75PR3iemwhJ4TJdkLnjLV + y4egekJOWYmSDFVwFXezeXhssjJmo+zbeLqmOGy9wA74kKdflABdkFH1JYvzo4MzsmZjTsifV+Rn + wNGapPcIAYZVe7+txYrsKsOioXliZnW2aILQoHzoxc0I6hXfMZnkcvIOcAZa+ycfo/ZDJCbjHZgM + pS3ByiNw+BlJp5I85No/WUSlY1+MiB7ekRrw2fS2p7h0L1XuD7NAlRR71lt7mEsvRLo9ARWZqwvn + ee45WMuMdztf9VO2J2zejHHG6st0yq7W91y6qQtWZDqrMXLU0bnmkWN77xXcK5qgUnlRRPEyG5XX + dpw9NPRLVrCilOuuTh9S/DOseQ1rVdYuknKA/rizATVRKa/s5SVP4rMOherUA1ZOAS295BZQ12ly + fjh975kkLR6W0BLIr2K2q48ZZn6SsGEM2r8C5b0TJuPNlA53VMWQWWe5FPgNAVlKV6v0YYRvNCmU + gdJoespKgQehP0dfRUFIcjk9QGemK1i7uAlQCu31Cl58PEqffqW7HpJfeRwiWFG7kGQttvewWXao + xSZut6vFRpLLtdjEVVl6/P0bVi3GxhERUSrGFvjcc/kwwD+6O4qxzaCBajG2w2JhP0FqM64kB/0j + PkVVigrwZLWtOfjqCQ7+FAjLpw5gVGswkTT4jEX2a5But6TBF5IrNPh4VblxP1X4UfywTGAd4RIM + XJ7AEgw9z9NO3Guhf/PwipQIVHHVYYnbMPZLtlJOw7PzMz/+5eL0ioHwMxYrTB/Sy366SNc6P/dy + uakyL8oG8JiUximGQpFgSUT72t2xXmMNIDQYGa9EudtbG1I6LHyqRhy1NB+DFtUYZY98OIMqPI7U + H7WBcBY2B9aNr8mlieVTLR1tpB+zqNGhXBSq96zcxKm6WFQZ+RKGIQwY29GG8xtlja5hSqs5IWcP + S65qB17+uTAHcdCKIXT88wTX6kQ7NAr2N9wD4wjKFdaOPMHQ3gr+gqHfBdFsn75nI+bmDghZ116U + ixSMkLVeEgdXlq5hEPqUsxowZtqHzZ1nAPx32roeZosVLbpaMX2hTR/ZM73D6m63SQPya3ddwFZn + W2/C2zChHqfe398D3ht8F3cFff7W1p5/5EoPuZADK/T0WHVcgiTKW7TNBGp7eDeqImK0e+Rp2GAb + TQ9gSZFqCHM1kiA8dv1uOAJ8whpFIMSbGAK8ROqEcPncwMhmGlvkbNARPJmKQduuiC9CxC/xa8+3 + a8+A+k7ggsD46hKivksecRTTjj2191C5nqdl7p8P8LTSuR7Ft/v9EkEPBnf0y7TWUzGwPlOFYPMI + 8qXQtKJ6SBQ9sJ1H9eqqRXNw2hST6RWnFzx6I3KXuviFC09Z7pyFZoq7Z35ZZrTmg4SELE75d1MS + bpQJZ2KjjBgPqWeni1oOi6eQmfTdFEwjrKOGnOecBbF3zLyunAX0kD1ngWykxFlAV2tC7OjRV6qo + cSjWxterDAayOfT4w//rM0Pm4HhylwD4owavPR5QrVXF+VxXCa9LHs2f60C2Thuxz9LbOwlFS4jc + mjm8sx5MhzzCveTvemffmGXVKdVnc3/6KC6TSOmzM+b7/BijINY7t37GbuPOmyjs2/oibdvcNTxV + eYiJ+NoG/MhpvEXeYbSECdAuJx4Kl0ciwQ/jmajBNgBWanAz+3qmOgynx4jmTH8ZDOqB7dnOyIBF + pODUUKx1wfP8FTQe64d2NElBeWMar7rWxVZWRRJFXou0IS2MkYo9HIx26sEJt9t3tufm2lVwu4eP + E2PC5m6VLbCEJXHk9SI75uQpOVRQX+RDjPnmQeB30eHzh7odBf647izwpQ5/VwxjK69XnkFDvIX6 + D4ZUz0OrJH6KuTLaaJIlIN67rEOeCt1ulwNMkss5wOIqBTg/XX5IKlkqArxeKgDBYc3zYMh93w2l + R5LchiLPvECeNywViSnkocOR8nVxjT7caxG6go0jXd1OxboiXMpsu0Gi/Ez4RzQR6j3suncp0qAO + YIJj9MqI30Mfi9NPBEc/re6TPsiLQz8IvPhw1veinEIqb23X1cce41LssVF8gYu30jlm8m1gBlzz + IsANAqsOYjM3xm0M4Cp5TtNkyetyZMgMlrcAk4VahImkPGR5xIaKyIHMZ6erW++IuHbx1zez7dFw + MJt+zmYPSJsralYZFaRFNi9ME9gdYKJMYEcU7cGuAu+0FhXu1psUPwS67z8P94sxbC24TjSWxI9C + R/YjKU3VubgLTaIPgX4c3Z7rU7G4Qjc3ePIrBU6fpL7WN/VqL2G2mBE/SMvC7Xhye4UAzDM4JcbT + 2VEn8bVRtMMZTdUBFSpH7kt2ihBbr5MfVz1k68bVjRheXHXV3omr5SCM1vcS0gHchICm1+kKWoej + GfQue9TWd52x2izjxCwgDLHNdLljNatRiyR2EQ7uLthFvN0SuygkV7CLeFWiXF+fVqhFfBb7Feii + F8B1fwj/BJ6ELs6my4UqxXgP3QGrFLZNdBIigkwc8h9u0iozCBZ4ztMFTYRhFDYcUBxLIEVupVCs + brCebIM1k20koICGZR77uprgE2Tjv8Vz599byTQkjib9CTW8GW5UOrrfvBsWjm+Px/Bq7r9gaEv9 + lo7ICzaELkW8wwMeiNCQKGxFG92amicfivgbHmhU1LXoCoDlA0e1OHFRN1/p8289mGWp2FUR8yfe + 4KTI/C1BR+vBWV5atqhUDIs1Z8VGvShglimL9QTeb72QhDPCUwNTjTk43zSayI0TR/aV2PJVJxR8 + KIeMR2UNtmTEfbd3aNIvrNIS7BjYUVZUdRIdItmRi1PY68bylSgyS08M7ZI1XByPj3ulmSYdsZVV + 13jqNo0X7izGhNn35I4lBYLvJvb0UnS7JQWCkFyhQMCrdAb8/umCV/Drnu+zMgPCKMGrbJgg66A8 + BC4W6/UULcXfvcF6vsAalUp1K2IXocfRUSun4nKVjVh8JbLeCWUGW9S8aVbDAzDTbrPRGtS9TIkf + 5c3kq3kCny2Pnt83S16tXNtTMTDxpbV1YT2YGY3VXkBaCLpGldNAgW/gU8lnno0EI4Ah2E/cXYKd + K+k5xFqw3kjW+kXJCYnVKTqCEkzkB6lHnl1d/X6kXka566ncUHEk4YYCVlSNopAHix3WJCGhG3KP + TgY5mfQku8EtgkibPr1jg7frZeJCs7AClrCqkAHqbnuf5vRPs+n8MyFab2fpFt4vdcTkzQ0+l3Xi + rN+V4msnxbIwRqdiG60RiMco28F5VJSp08eUL7qhiTwE8+Ns1C78+doO74mpQcsL6TworzOrlwHl + VnyD6HHt/S8sxUeS0vpFvkeeiouvS74sbiUFQDAs9E4ffLCFr07NRHvAQwwednSA0zPW/m/ZhOn+ + pot0CBb3xx3kco7mjF/Db0ILkbf8Y7kOXaNBMLUw3xCNYha4Hiv22p5sdRi8LKV22wQskXEakwhE + VStBLkeVfRaTh/w70s3d1/ShYXdQ7QceoRMFpSSGZ8SkgR2d+iVr+zA7NgGPFnaxVJKSfQCXvbLZ + uauqsEbBPztkqKoHbCuxkvRqLVZxXYYEPnyqS1CNo3I51ufIMuIHQ/gndpMfkKCareC9v/51ElR5 + kCeocqa2qpAdu138cvIJ222KxBublLhUZrNTq/zZNYzxhNA58AqTKcz76fUW++7I6Xh73j6iOAIC + 3nleQGpKwVjc7YAvTDXYUWDjty3U0T9Wkkvq3/eMhx2of8XtlmE/IbkS9sOrtMZfXb5hlTKnXoCr + uMT9yxI3ZEPuBoqbzhuJOPO3h5E3Ik+1iNqtHmajs8Xp4NnbD2/whyMNZy7XXr9ZrO61ySbvps6C + 820jxQi9H35d5NfMEuyCZi2D+ZSXcb/PvqSzxdyouJfXkccqNdWypt0Tn9E+KksxqRVKMcZKedHS + HiO7s6Yvq4BwIyfR55V8QXPXqSu3UyG2C5OKK9P56cbYERNa22uBJOYNE0IKYh9YV7ZvN972rWT0 + yAFAFzYisRNN17AjQBv9fG4cMqH7z6bLXgSyUCLpO/VdveOt16QUXEz4SJfF+ANaaJhFPYb8uECD + /nF+CTLtg0d0u9XhJCWXDie6KhXQ09c468zDyfUi03HohS+eR1gz2BtGCXpVJDG9cjvB6TX4fJ4e + 4Q6E5Fjn5Js6fXOae6DM+tu7cMQFFjYUhRbNHfQMOn1L2XOERElvmFs5cIovUCpjzJvchUmIhOhV + rvlGbsDz2hYC2LyaEswZiznzykcT6u9or3RFWBv5+DxoTGsvtprz0rNRQwIB9nMVuWt2IjM78eJd + e2MNI2h8QBA20SMwMCGSmJeT/7M1TPbZdH0n0lNhrvyCQKgU/Q1zASxBbK1uWBg1mwxNw1IRbo8H + TR9TnBG6XVWlg87Tui+Jmin8a79EaekIylpQeaIG4WAJmsJ3vm07xeEFnA7F5BCzY8JGigc5ys4T + 2AccsZEppYQHkS9pCf2GKJpuQYYB3zDY6fEVEAvVDlnfiV3BySQUF2NuWs/Ljm39JWsHHUzcaVHE + wS8AvZvXZZfREvub0KEaDjOrigYBvVfdDmQjIMC6U5XuEzCArNCH6lTTEaGdCpIjT1a80zh6v0cI + IaR0OItj2uZtfBAn5vDV+3e/Dp7h14wQ53jULKVu2IlzzxWL61Ezp8TJj4/sq0XYTByfx/QpOZn6 + IQEA7qs01tg7djsmsdIjtimssgEjgZWukRa8SddSpb189+mqXAHOj8Cg8Lwjx/ijCs54ldtQmshe + jbyAUpoP5OwFAUGitw1yt6+zW9hf99meY+Ya+SSzBYyPKvFXEdUMuPFwlZib2Xo6AyUBJ0K6oV82 + EqhBTvwxbiabTc3ntzUjF1BDM2NoBP6Q1R2cDSacBz0QqdVSkHb9INZNtxgbyIqbXg8EUgS2Vmzz + 24Vu9fy0KjbXINIPmCc9H1PSbCwnUu0WDyag3qhhXeYf3ho2+jGBZfID6DkCd1Fdy/qXbgGXcr/4 + zZtsdoA4z00CKn5Y3FCsnmQJ9UdxVUn8Vqc36SuKyymt5u2lGzJ7/zrdbuXCkJJLLgy6Spv3m3dn + FegTi4MSdaf7YsQ5C7xgyDn3IxlCe7NZQisj/V0CD6jCWEw6F95Mx1UUkrgbNrSl4tt7vZ3fTo9K + cJ8obkIluWHA0Vovy73eTgbzbPzZ9CYkXlNaSgK6cBIltXIQxVwS0+j2aBAzhY1sOcXeQIFrsFFK + PgCP2UgswK7EfviGSKdyxrJfikOgNe5aPLBbjRHUdqo2fi/vFjmxdA0QtCg94mHYYFk3SE+/IU8z + 9E4ZRoZMJo25P/WySgajzApeLmRanJxpxiIz+R1dvrtzdCkdJB+UgVEdcTVhENoYgFvVF6IZnmMj + xKv9R0KKS+jms8nY50sNPBC//nKZjvPl9iVng3t2dvnu5dFgskAb2cE1rYx5xlyPtKikJm86+wY6 + GJ1VYLXXoqeawgE4Png3jaD+Jj3R1+JssTWrxNQRm/qO6WYlLPbqdAAxHdYIreuopEAvujUeifIE + s1HLHLns6Wa1O1R7z/JcPTQmHITq+fVnTC/rrA4H8kQ1vmBn/kf3p3e9RFARI44B27ewfXxHZhtx + NuSHm5Vd6HmegcleLf4tF87uPBp8e0aZWbhw3hTYCNN2e7i2I3pIPWOR1OgL77OXahTmNE2nXrd8 + Lv2MPUkTNVHiaBIXZVXEbCsLNRBBQXr/IPLXi/xL5l8UZPc0vfOdFP+DyJDIT2SKlzTLcAe5x4yw + ZvyqfcZ3QoQC43R1vcDoHQafDw7X9hT2TTilHhRhaeLrv6JK04bfta8B7tKrGt9/KNmJz8naLZ7a + D3ISIuirXX4ZHcxiPeriuw8Y7F7KxB6ejuImcSI6KPuGWCXxrhPhoN8p1vpbk6SQXbjerm5gT223 + lw8kh/cYpyBEOh/fIWfjnpVr+4v6B3RUm3tMHyQkHQXvKITnkqctnY2nMAunnZme9PD1xvIbES9K + VdBwIA0muPl29jBerB9gH1rMJ3vQIcmv3uz9wX1RZHHKqP1wyVzeAbEnbrdD7JHkMmJPXKWj8ury + UzWZKvKrgD0/TGI/GvoR9wJmlpOtMa6G5YDVWuk5tP6XKUxwKkhc56xfD/5Y3TOqWvrHaoU/zRbQ + u8LWEkePYb0JnLcot1FgWZBg3vsVfOz4LwHlBZXWVcQ0ffi7YkOpc6Ou3Jv0UCe1Dhup6nVwtT5L + fy68uV8K3hWcjB9evnbmK1HXGnQ4L3pStJo7gh/E4Ff+rtpo/o7I71DH9m29BD0Qbc4X81GzEfV0 + eUF653HzwGYQjcJkLHWjlROcwqkE6Sg/vsoE5rzVYiwPsVrTVPvm75duFNmfOHS71YkjJZdOHLoq + ORzeXVZOHFioJWoo/mIURBGc1UNQnZkiq/9gFIxTHPyo1gvujeFgeo+5OHg6LFa3KQ5nfhPscAuj + 5NyJPq5AuX8QFO7zCfaaOGYupmO+HFxvN2jxwVy+ln/cwMYj/gj78wRm/RwxyaK43GSKshQw/MN0 + VXWlmxXvtI5qQrsb69ZwsNdjv8oeZY8TN4rgJNDNUaUITl3X6SynrB6N5wYea/Tag0EQuWX3b41s + E4sVsyYSLSXQeVKzYdk0HU5ko4sVhjKziYMLQJ3YXuzFDn1ufjp1z5MT3SXO+5pu3e2UOqSSo9Wj + u7ZnGxmthUokTtlcXtn8SzZb1DmQ6z+lrjbmdD7PVj9xzTO5Nun2hoWtZdYuc7vOkzxhe5lBnq6E + Ep8lxyzoxOqvnrGthqKaMOqhyIsSITO9Ef4ETfYuFbBKNXWn9a+D7N1r/nKQLddTsF0UhsYh6YiZ + 4S7rUOO1ffn7zCtJEHO3GdVolZy6J4EtwbMyUZRNKKDt/QSdtD9zLOlJfvnra5rphXb8sIbat0E3 + Fsv0dpvOH2ajQhWp7Busgvlt1uOX7LdeczfNwWkhuago0Zo9fu5BBHhqQ2HKcuUJhgXcbparesjW + ctWNGJarukqbSrpZMqnEvmYjWYhK4ereGpGJXX8XogToLkgoPhFGQaFO1+HJaIcrI3RuLfZO/Gfw + aVw5MPYXA/otsUCZhzr2U562OF5sYfOZWDRll9HP65ok4SMtHBedfg0ca82pLV4H/yxX++tni6ND + VvqPVu6emFblBzwv2djniDTpXyxwo9ypfZvN83XRUfH6HlWa/DAh+vDq29Z2Uu6fXy00Wc99hgfW + dC8S6/w98rIFNcP0KG2r44MS6S8uWRzbO0nodisniZRccpLQVVUg+DdMaDW9JIHvh6aXJH4xSsCO + j/kwYVzkcAgvyQzNUdjZJF0xIpIKBTNn09u7zQA+aToXVNr4Z+EFfPducP+wWE/nw8GHhwVbHg9I + Ek4kQdoIpu67/xcMYNBhhZ+1eJMBrZZFXDU0g/yhawzeyIekd365gm8eL53LPV7vpP3Fht1eqZoi + PpmuixRheEncOcAkKufD+zNNDRl6CSecAKPI50Kw6myms2ygiBc3ymQtNoOK9edpQyS9Ect1IMQ+ + AIOLaQGTKc4/632dIFG+hkOYEJzKh9udM/1AeljoU+oAzZI9ikd4EZGKwUQ6QI/vK6zqB8z4Hpj/ + +4RxPE8pw2DOHWOAqIMqTI/YKsKyAUMNpmsKjZMiKT+llxXVfBOYY3FToTVUhOOECuqFAXn6ifDf + YHNoUoer4P3EDaRtdKgm7XNpC78fqa+yAObYmeY/uFRZD+UqOsjqw39o/z6dyHd6xY1Ih5+aLGL2 + 4zroCz6yn/x2xJkf5z6Rw2T161coJEmWRA31VXFGgYUtNF0EI9yuQNfvTD4SE+iMjcSehUcy0jMu + QbMfsZHAt30Tvv9DyT48BGwKpfhhNZ0svhlRj/1cryIx8Y/T967XAYFCt1upulJySdWlq6TqXlxe + +EFJ1WUJL/PCeS9Gsed58TD2/UiiO39bbe4EbBNzxgT1ajnPd7zI4bVXv767QEKhuYailCKropzH + KpN2GMJMKizmazAEx7kpuIavXnJOQBX40Q+XUrPFX4KD+Xy5FyRulUa+/JU1EOIS04Rn1UIenQOF + ww5/0MKnANqYv/PLdIaGUd0HGYXvEWmg+vsEd9vFeAqDJkdCkDjhX7OcIbjzYJ3AlklTSCCRFpaz + iBJDukwkR8xyZS/gSibyR4K7qVQ745OHIpuk+IndNuZDhTdSv3uEIL0/rBK7FxMQvvBSXdVjmF5i + M7SerF2KxD6FejZhLI7r/eeAlYSmbH5rDNkOc6iHNAXcwfRprse0a+aEOvMC6d4Bfcieioput3Tv + CMkV9w5elVRU7y78Cggm4ElUdu88R2YO1x2GoGVFksP+6vw1Iza86Wq9GSyu19kKCbPnW8xv0sv1 + a7oeXMEWpJbEefYaVhlsxA+KSGq69KsIlT1qmhVJ5/snr+8LYLkzHRJmWSmFcVhMiWSRz8C8zE8s + 0OQ2hSNHzV+sD0ZUs1RfEH6n0mDp0udLVXtO7lVoeUtxSpPDnYmfnhSSc6Xz6dNvl4NnGywtIC6t + 0mUKc3Y6P5KfVmA1dsQE0+4p7vuO/EKxG9Rn6tlt/0lCtC4NEEUr2T9ZkdcnVTRMbWIi4+qPN++5 + G9tvYnS71SYmJZc2MboqoePvLirFmJiotFHU25MXz5PI891hEgex1Ns/ZPfX2YrUpBuwmcjBKrtD + sGaNZ1vRJVfTpYSBv0lnsQfLx1h1shrD/EbeBD/59FO6yioO3SKf7+1sO15giBU++4ucEGJXhBar + NaC6b4pgsLDQrXLrldNsDHlx3FRPinHYHKOgAta7+vianf5y+uFilMPr1bT6XLLFDZLXMEr+1ZSv + nSSgXJXLfghncXpbSfwOwkZBxjtrQTfTWYpgYGluf4UBNIkE/KhZYBD6SZlrr4a0qoi4K+/zoW/y + 7u3+9D1OjopE57d5Rhv5KgNbHVabiu6v1f6O03gAZ/l0nv2iCwOXR1M5tbvN7RNSDmhPXw+yb3fT + 6ynsaGMY1WwlZo0Y2pPBx9H9wwrpVx5mJdIcSqvCtvLVIMpjwpXSrHZwa9AQR0ZlLZlHSZRgF80E + CdiXrDipKptfS/mrrqKazjLmux7d/SVdoxA5H0uFYFV/zqb3U3142L8tTrjidt8yT7uI7XSaN8vx + OcvDSRXa87pt0rJ3fU+VfTEUhHLdkmbOtYaE/H0PbNv0ydrSlwfmJwaEtmrdp7tx4xwkscniw1Nh + p9RmW6tlsvai8kQKJsq9N94x491wouohW6CobsRAiqqrMgPu/H8ljYcuFk4bOP1ajVoVxMLqYDHj + Mm7l5lvEQhU66oS5CiloQYzafUSZBipaHLpe+d2MGHa5eExtjnXPiUH9hl04ZaLT0FGyu0jUFtVC + +4q9HNBIPw6W1jhArNYWi97Exy7rtrbUQ7ZrSzdirC11tVAGfja9LS+i4vVPqxkz/wgXBLYaNkiZ + 9lcoYG16P7H3ZRkuMXvQTfolvSVXMjawJ3I6d5T23XS7R9Ul4NZmL7+sXIFR0WO8C6X3iBHVJNJE + omoKnH66OOoFxN1ddvvuwQh7z/829P42wuDfdFxEb8NFqeZNpqIWfU8bShDwAuh3Lxh3THAX2Qv7 + fX/AZEW7N58uisW5YGbnxepERwR/U+U/ZqOduoQ1Vo8SGn+7ZF4HUj663coPIiWX/CB0lfwgv9Wk + 0PuRG5i+3AgTGjmL+RD+iT2JiHn7sFwQwgQ+7rfL1woXt1iB/Jqs9T+rc7aP7PcgDCLcPA7lwPnr + OCJ706D6CPK4cRIWchgXguVDoCaKnvG94SAHMpTI7cZ3NZjOR16CbmA68Yg1mI4aMMF04hptO8vs + M1OsCKhSNrmMnA+nF8p2k/9c4KOSytn1wiAJ2ZFz//mzUJ3chEnWK+lggOd//fVXJDQeY413q1nZ + zpjVbgzkMigNpQSStXv4EKeLvYZ3QCM7MmgIVKVtqzUoDxJLere4zxbwvZ26I3JzXizisqJc0JwK + +7GYG/b11uxDueDznLBrDXbVLmotOctD/VWkqOwX6PbDiBcnw04VZ5c0g7m84hc+UHxEDofq3tCJ + Jh/kMKNwxOZhhVjlQ1+vB91WYtwPeo8e61/5OiUR9tuOviv9jO3RoZowzg55kQ6P6fqOVYsB1xS8 + lKcEiwKWsPjIef/qtOzxQll0cAQyHTEJJKHr7vqZTVQ0fRbjPFAtO5S572DvcULnsAZyFcTsXKGt + T3+PePVAQ+H7LKjh87ygRnLsJl0raohn7EtqUBOlmhrioiQcXS25XE9momNenl5v5EaZevGgs/MZ + efcHulv8F93HLIntCQQ6aDVPkI5ATWf47Jp80u6vShsDpylp1EDvbLX92PTasKY7aI7l80jNn/3n + RBDTQShldubkDkidyz1C5TBgB6M1omyxwvti+efNdLOVYKnml+zA9LB/I61qAJXBfIc1k+1hO3S7 + lbtKSi65q+iqhO18elvl33LDkruKvXgOh36S8CGDv0Zyc7vLMN4uqhnMirHB4WA9v+GaRVkiaTZ3 + VXhhV79T4CfM42W3UykB2ES7x3EjcxR+UFApR3n+8XSgv6wWLuOFpeoWV1e1b1hT/3GV3S8m2ayM + mwk9r6leRpzAUemVCbOwnE25yHIEo9oIPPE4aOfhvxzZVxU44eXVWf1ryiV5YkLyC7oVliJIV7MH + XWJHmPYnA/gznu2wVlRvjkrzRM0Qiba/gkmzdHBC6gIIXiz4sLBEMK6sN/yXD7S7TxWAwKZiYTN2 + nZSQyWILOtNojZIng+tVln5GMEk6rdn+m2UVoiW0FRQzhq2OgJ+ClDL0yMuBAZMMaVjTwxH1uV8i + 9/HoogZl14Q9JKa7tMdKsu5cx6wV6UPFrdUWYPsRFiUYu5ghLs2z2j1jv+JkPqL9pJ1fmJ61LdhM + Jz/wadTaMkF2vhwV/ooCc/SGRmUtWYfKTs87xP6EMaSdUGzXtsyhvTm14ODLBYn4gKjXvqcosV/i + abunh82jrqie1Vbj0OHxxw92HOzhcmM38WV/FtZOWTOyc1D0xt8ek6BOb6FUY10jM+LBscs6WfT0 + iK1BLxsw7Hm6JnkK1st0hY6UHUwFjbcVWxGGehxKnJcsw5QHCg6t1BEGVJAmfxk73gJ7d0BAuJK8 + AYsiHV2kk5/vYY2L6fAKKP2xN7BEVrkSX47Q4oa+FZIwG3uB9YnTuoJQdpwOj+5L6Js1bIdvIijL + QH6mVKzNQ16ti9jvUOzDJaaBfH30T9uwZwv/JW74znQKPqWWnl0y17VHI9HtVu4dKbnk3qGrqkRo + BY3EkgSdpsWsrODFCL6eh9EQLGLOonY00ngF8v8iNTRgrUXwixrQvLBZ8iY6duOONTDkQ9Y1MFQj + Zg0MeVUqJzAV12gcUeaco343BYia3D6hy5MkrKkmaZU3Yntufb/6ChSQ6kCxZYsk9PP0guBlfMw6 + VWnPH7JOL1CNmOkF8qqK0i7lyuSD396MXmfP3r07Ak3jATY94oddZis5Dfhoxx2FeO0yEhjpiIvw + kccknxv0oJwHWC1zMf/3VjortrC69W7bmgtUjcDKQQajiYpZLL5NJ/QwPPSdEoT3mF9iwUzhFQ4p + i+UnTH3ygr72AO4f5lM5uvejdD1erK73s8bVZM9r+/hn8bHrd9vW6BnrXU02YW5qdFHuaaA3g+E5 + 3hgkSc+MWOmRaXvVPlFguRRk68XWcUeEs87pAyKqdaiQ5BTsuR74lxM3FlIxTj++g0ckGSYt477b + IjaXKSyMbDtutHH2116hBTFvH0+8WNxfkAChN+mHJBo+NTq7xJeFbutWzIHM+0nsN8vuJVljvwZ2 + uFRpzhsraY8NHlRnOo2y+X9gEywUITs8r8FPdEJW7PnHbkdtRD1knZClGjETsuRV0kbu7m5UGBgT + xGGxvfWd/MfBnX/MHPEfVC780JMJWOQ+yp36Oanuqhwxs8T2egUlQLJ/NYbdmllsozgsSem2UEGA + QbBlCrL7lB/CKkV+40JgqoPXpN6Jb/exh0cArF3vNdE0ubACVxKnsIR1IU7B2y2JU4TkCnEKXqWF + dPbb/yA+qsyc4kcV5hTm+zHjQ+YHXPmmrySW5x/vUqGmP+ApgWGpwZh063WmOIamayLPzlbo3aFy + Y0S7gpdbGfnVKBSqIQgl5ASGelMI9CMyoO4V8h1QlMyCuXu/mAjCo/wvJcApRkLI33C2+Ma8ircB + 752uSLkjhUidXe/+AapiNl9vB69EzZn0qJQeFTADJVEgdfIwrBmX/RH5F41qvsjgUWG8sb5avezm + s8JgQeHNkBjX5wlTqVja95Fmq8W1iExSN01LJCWJG7oNWJHYS2BhRf9y/sxzyxGrLiclCRJH9opQ + BWp6r7KpNESx+zJtfzSSsFsJte9c9UOs4qrI1k2h0kArxeB+IG1HbgJK42/eNrp97p4y20LOiQRw + 6PUn6yTurUb36t7YQ5euCSIHTNGieaG9A55ut6VFQ8lVWjS4Kuubfvqtgq9kHHFn5uE+CrwoCIdB + ECVBXXXTTwVM82/LDRgI/5FcTlfYibdFawm2uFfwRovZdPBmOjlVFUg3i9YKpAvrWqFJFPm+WznL + 9vTbC2bFHEFpCK+wemmDvgx+RJh6w4GmJJYrhCqwKpws9+tBOrjLYJEsJtN7WARq3xCMch/Wa7Yk + qjn0n4rb8VwLFJs3zJG7h5kwIOlHE1klj8Gvi2vUh7er6UT4JnB5IAjLxK5ffjxdl8CWxWMIM21w + Ci8E2eNIVTjfDFhwNVghAE/Sejk48/QBx90A9yYuvS+CFaL0PvuDwaDzXVeLbZfTiJ+0STNoevgw + sgspBYzUREgpqgqijPzO9/iBB7bTXzKNUmDckLSg16fn+7mTA6qYdH7pR4H9tku3W227UnJp26Wr + mkbetKm8yAt5WKor7YUvRgwjYwFaVcwVnlbce/++vV/M/z0dvFO9A12giF5lFHSygtbGS83/Cotc + 7XZq+ztB5vIv08V2LVhgRS9B/6Wwe3xdYEpqimR7GFpdD+n1/TPB+SI/RWnXXxFFCbvSLT2MZOLr + 7WxDcZkVzqcpFpqWfHxrxM6gbwX1VxgysR0qR5Pz93cXvtoVeBx7eXAzoGSED5fc7ZCMQLdbjZqU + XBo1uipH7fWvFQ5RLw7Nw9IPXjwPoyBOgmEYhbEXtker71cg/+tfI1rtx5isrweUqjm8vHSjDvAD + ut1qQKXk0oDSVclsfVoDPwgQ5Vtchf6LkRclLGZD+CdOZBSothSAAGB/mabX05lQAmmMr1fQ5J8b + kXBWTNj4/fxi9GY2/ng6NoAxRk+JrSDDwuMD2A+W+NgEY1ugnYxm0/lnuA1+vVUOZAQFa83qZICh + JqyRIAg+NSZKZY6dzm6Zt1QbzqtLbSadKDUU/3YNG2cmlBrc06iWgqDxWBtVXdfO6fs3TG9KLo98 + ymIkfyq99KLxpe1CPLXpFr220KzY9NlKIzt/SPg1ba/e5If64/uQuyVF75KVNMv6aSuva7uWEYK+ + KKrrp9YygHIeSbmr6RymSG+CD0sY17o1iwwxypM0qn/HeQYa0qqm4l9dmocX+GJ4cFf8OMLY4MOM + mGrRIsuMLbI7CWpAUYqq4IfZZKqo3OTarr3LDgVZm6Lwndpu2rq+V/vtmRE9sA14fmIIodNtd0co + RYpwnG8uWdxBkaLb7dxIJLnsRhJXZQXYj5d+xY0UsqTiRoqDAHGcMezoCk5zaRDvjdTIoemR++me + QQtHQ5OP4IQyQz9e6mVDqsB/MlIM0HoZCRpsHBGhZUDnTj4a9bRFJaa1rnAhSixiyE+zdS/m4h68 + NknvkfZyfJeNPy8XUxwKqmCxFjyZRgVX6VQxXngtFcLL+crvgS2PRx6PmHcwW54hJ9cq8/T3dfO4 + 1MeZIt9MF351MXz35l2xQEnisSCsVPIqd7zhQeNmSOjTacEnh7AR71/OX2gqObjktP/MZ6KkL/aR + ilkXW+2m44CpI5SASbb49mDOgkGxSw9OfpG1zUvtbA5SmwPGSKEdL2QB9IP0433FtTmwfiS49IeQ + PiaRUICsNpQuxPI9SW7UrSLConXbCO1Up35E72BN66WNllTvnlpo0u/6KcbWZ9yvZ1e2Hya0ExQ4 + I3BTne0B41a6YKhKpIYdAEN0u22J1LAKGKKrMqfn/G0ZL8QSHlQqpD73PN9Php4fudKtvdzit3zJ + BEkDqOyTTOT4yuwA6UxLZ9BUjcP0qZENN0y44UD66xdUCufs7ei3t5QQRj6w+WK1Hg4+np4j4hD+ + uRA+9fE4W+LpY3DHhMwkVCnwvLiJF7tR0p+D70KNzX2G5J4jwi+ks/HirjJSVM/UCPi+PH/LTkrc + BiKDg9QkRVeELWAwYiyauji/ZFT/9PzSO0EZfCD0rALuRtQrxb/k5Ur7IVZ+Cqd1t/O2X5Jk6Rfc + M92fU67if6bz8VPJSfHDONIz4pAtVqRe/fHrpZsk9lss3W61xUrJpS2WrtIW+/L0qsqKlQSlQBRs + saEH4xgNQy9KuNxkP5mVZkmpVcl20BfwDtIlrtan7m4sXD2FdSri8aJuHewPRh4DmkGCX0nu1i/T + 9cGsWkmEKU4VOEeVzGdT92X1DFlw5JRaK2I8mJ8ESVhmyco/vRHl4TI3qMgt0FzVyl1uVxpv0Sg5 + gSOzs+RuFbCROqlc0a+uV5wPD9eaKqu2z02W1paZZdJ00cSR1q7sFRGaqe94ZTCfwCm0XtQ2SnIV + 8RfslIt7WPLSEt8M1stsjFgQatnBVaWpveD0dOSI4vZQ8w7dAzo/CX9WWH1J8dzB9FnMI2sNeh07 + TgBx64bGSloiK5nULp+uY7MfF9NTsM1b8hw6jDpsiKJtvSK67q52X9iLszyQlQQlZGSk37n18+vg + lyKt9I+Pl67foSot3W51kEvJpYOcrkpEyatPflLxnPseRuGKR3n44nnEWMiTYcR4zNx2TMl8BS08 + IqbEnAq7kgMCXmajRGdwXnsWtlo/KJdJ7aXEiucxpxNwrr6I4xOIz/ZViDmgAkTvQZeM7ENFdLvV + lJeSS1OertKUf3v5qZJO5AnOwOKER8yNF3KPDz2YjqECUa023lLO8hqdEl56ez39v1v00qs6Ucrr + Z6ppAW8IJaA1H7qqqG4+5bXckS40W6pDZQRAYt+uAT3fc/mFqlSlEoUl30YIlumuRnKz/ers9ajS + Oa9H14tvOdIYh3CCjolr2Fb0YkAVrG5KUcBDp4jm9v6JdI/dTEkbgz13MZZc2sI1cDYZB1gd++rz + UpbC/v166uOtMywYT3Ix2jFaQ5tYz3WL1cgcnDoaS+bGkSN7AZeATQfu6QLwuWScU/J0W3TXZCsI + fg58g4a9J3FJAYXxa57cdi5tuQeErrJfI26/B9DttvYrSq7ar3BVFWO/qgApecKDsv06CqLQjaJh + EMGLy7yDd6VqnpLvdLxAvktpXixKhWdkrfT13rXSz4zYJejILDg47hpFWATM309Mw9vkG5aEPyzT + +QZ1hPniYaZZ6yaZTAyYNe9goec1+haDBPEylRblXC8WwJrORe3uJjvcj8NGq7/4WXqbfMN+udrN + sGxqCLFp6hdUDx6w2GNlJ+l4IbN6ThvNcThHSxOkqXu01JJJ2v7SkeeHTS+NtCAJL58fRsGRdLZR + VUcMH0JYSi3FkHwhD0X2uPNR0P5+MQhKFLRSWec1Y80GF8v/oLenaImXlyIuz8JHg5xb6QFwcFPQ + 5ncUu5JZW7js7Ma9S+wKu7hq8B0oFHu4rGkWR8Ny0/8xifY7nm5FQbU6qtG/vxVpjx0c24cGopuC + uv0xKcLeVVQKdmx7dmHhA2W2ua1DJrNevKCDtUu3W2a9CMmVrBe8KiODb04rbms3KBVz8EIs5pBg + ZwzhXxapWjVvFrPb6UgiY7KcpV+olJKqX8SabtP7+3SUTlKwT0GrVRNgTXfiDqQgOuvB6epGqqDw + ExeonrRUHPY+FZnAmEOzmmQCOn6TjhHgL8ktb9D5sLlbLba3d2J3FNnd4nWl6vHmNq26wekGsamh + QPMECOKKhzo/ASIsiNZXfmMlC0C+12LwJR1vQWYh890wP+KkXM6hqCTpt3R+xnFzcKrqPKQoDIWp + EbPcfyv6o6NrNY4VuLpQwUcXo9tbKoFH9bAhZFkQpbRIbMwGgEE1hFXngK0sFrjk7j3wAxFGKnSA + L6CFwdk0wgB0HnvoLtD3PG4Uwtyg0SkiFIUP3suoQ+geTqQP/3ipwhO7+6u/4k5ElUNjly5F+l53 + PUAiXETnjkhWF7i7B1t4ZDjLxou04wiBDJo6Y1iRdytc27gpLFYdCzCpAfd9ElfuGSQofgwHXPvs + Y1SBPDfmu/isQ8pdvbiEbrY33ul2q1NcSi6d4nRVYr0vThnWmzLP8YBj9Y6i+R6D+R57MC2HWI/L + 28Hau1zBM9UcuVZODtNk95sN1gS90BUTWe8fWYN5GnAWWMk0I641RyVzd8nJ3dYhtHrIcfM06Fl6 + ZlR5Kj74vVAxau16xJJ3dgZqbUeSPP2MHUde3kSBIk9fVIW4Nbkf2Bhzp/x7UQoPvIQlmI29t3W6 + R43kpzDoauwoWfnvl24Xqha63WrflZJL+y5dlYGT399XIoXcT0xcpc9h18U9BHZd1/PcwExWrkHm + 3WGvyyK5r7zGQMd6WEN4Vc50frud1SS29BV27C0Gk8RBHARNHC73i/mi5OEvhV28veRiOL1FLpKf + 7JDrPPYwOjjHdFJJlBAEhhN/ect3/GJTfTv0TeeGQcSybzmZRw/+iPE2X7syPVo/vzf1fm94CK4E + s5ea1o/NOLIwpmLvNQ932ZvjWAwdEtqOCty2+0lVu3Qgw9t+l4KldLtleNuvKVhKVyWlxO9VaKbn + B3E5vP08iSM4FIcJ9AOurzbdeLYC+X8VjhCfxT3Ctw9gTRr0CwD/oRr5E9CklG3PZH2PUkWk7rr4 + 04C694RRVxsYpe/8+p6zuENsXtxuF5snyeXYvLgqY/OXf1Sx5SE6UEqxeRZ5QTJksefJ7csbiSSQ + bw956SfKCxEBjCH8Igo3ofv2/Whzt8oWo5pH0E27WJVKlAmw+T0cvdO0RD633q6+TL8I61JGJrM1 + WTE3g4psCQRYPVS98b1tputM4FHxGL1vUk49UK6aCiozngSM+27FW9HUYbJfRrOH5uZi3665nKA3 + P5En8EFfKCBcj0TyOWdJKRRQEe9899lhMSFOBnfT27vZQ5EW6H6xXWeVUXx2tVodCQrfu3QNKnTj + MDu4fvIwtsseqZJib+cjZ0np1WoGvEPitNPn3gxqIrkNSpO7qzu5r8ppWiKsX3ykcbHbucpjyp/t + urS/r/DW84pyoV5dwjFor3DT7VbnlZRcOq/oquSnf3teZbB1WYnBNnrxPHADL0a3SBKhSijo6THS + Y8rOqcFBsMBnqFI2iDAD6xony5moRkDW9nDwVpXoVRckycNIzS1plku++LtJ9fQxEdXFuuWEs69D + scYuNz3eheAr57CwVfpnfoaUK90a2aRx3JgqC7sNC6sOdJlMtOvl65tL/CZEm/n2+kiqq+i+I50p + 7tZCbSlvU6TXeI6qPnI+5pU1CmJkXwiWXtWD62quUlNfnqjph/yaVAwjn255kWg508SBWDMFTwa5 + dgONCZgvnpFXp29OxUNX79/9qiZbtnZwbem82kRGwbuUSOmUeOSVyr93rKf+0+RXic+sm81dEqxa + OQ+CuFxyZrkg5NzjFqdvLl/DSB8QE60TxYcbxYE5Lb6H26yj6V334rg9V2dj89beZYT9MCTQh1iv + z7BXR7Pp5+zIrm9pRMJCQSHJubNX6lgY5YKme5X5K4g6NI8tJLxoPlv2k+N7BNXRG+u+roWA5j2W + i9nTvfBDq93rhxPfV7tWW1pgy+FvNb+VWpkXfAy85NhNOhaylQ9Zl3xUjZg1H+VVUjM3q6XEIYK1 + cwcfPZ2Z5R/zk/XduyOn/qbiPQ5KFIHVJKLiY9DNEnrzsNwsMAbbR83EUNJP3s7AULvvo2h9GNAR + VnjPJ2LNPlqJy0A6CHsQFYlTIaX9aVx8U2lnHNCK0zXQ3nNteVIZ6uf+vkJ9HtAjEzDWwI5FiuYM + tsJRbsMf3EZI1YRkzgzSWa0fZsZnTFGLOqxSfH9F53vwiYAQCbGjTKD9vAC5sEDM6r17Se37uo6k + 554zdsz8boUk9VO2lSTzZoxSkvoy7fi/vpX2k3NZMKlUELVY6NeUiZUluZ/Q5u4lRv3FezxK10jR + CLKGAjkqfrOtydgZiCOWekQ66WWbgmVf7tRGWttwR64s6eB6vn20g263LOkgJFdKOuBVOtZPLy+S + SrhWqKFmSYeR5yU+i4ae7+qEhOaSDiD/Een+11gHaLYTvghHql/OvC8kqfleFJST1HoJ4IZeJOGL + RCmxmKiq93sgGZ9A4FJEowNXagC4FOGwfiE/a/1wXx6CbkuAsnJ+u/S8DrVo6HarJSAll5YAXZVL + 4H01K8dPWCngF70YJX7IeTxM4I+Ku/lMJWDht8GJ+TAbiSJHUoERgR0jXKc2zUItB6K/vd/KgXs2 + noxDf8RA3gx6DkzadLsWnaFT8lLo2/UGGXzesJPBLIPDfyb5qeZbuEvLmq61rw2kPUjrGLdPSkuj + og8yB0Uu39NZTa7OgeyC+drFTgIdnHqpHb5WInzCZM18AYuqy5Us0OIQCMUyHT/MaiBsfileZyaC + KtmOMbrzSSlk/7OPt4MTX3OFxCExKNvU+dpRbEwG1JrH4vEFNueo+p5LLq2DXyxyWR3K2/I186TQ + p1+9/mfwnWHpZW35YpfXbzGdhXpq6jXuWt9DZEvOdR+kUn346XpCRdKEKEmhIpD4UqXhpaRIouIT + x9V2PrF1FigNhOsyXPxsdNqpEBc+YF2KS0ivKcaF1yXC/eoCeYCKZfE834MuCasFuWIes3gI/ySR + hB+9y0lnYHOBc+AWxlrnl2JPXX4aXZxdFqty8fEo/UvgKjlY6DyvvRZ5Ko3Mc+3j9nS7bRoZSq6m + kcFVGbe/uqxwwAQ8jspJZM9DpN8JhqGHOCIa6o/SiDZSiVPQLDYS1V5grlhhjB9JezbTYkUFmBzo + oF4TeghsbVgvqCgIY1s4RUBpWWxX0CEng8WXbAVtKdTnersUvJWyOESukICGgoCiAZjoywxzDFcC + doQR23UA9n3KB5PFFlsw9JaTwpufTcY8XiLfBtjeOWbtbL2qktd0LvTh+34S8ceapkJj+4pFKhar + W9jdZWdj/8IMFhybJVbTyPWjkiKaW6hhhNxHrTQqnQlOg3JzBomq6h+nPL/g3+UCubHAelQ56OUJ + 1TqFRCdgYrbwyk4Fy6lQWNLcGpWNtU63fB7VT7qTIjcVbYSX62WwRHhd5S+/Xy/50sF1mKceelTc + 7ueIpAfRjga6h9XbGGNgsgpls36a24h6unU7Hod1cKAw3yE58fOc51IGyj5chhGl5L177wYdzjC6 + 3eoMk5JLZxhdlfSdZ++jClaaeWbZK5+9eM6DOGF8yIMkCqW6cvH2tzgQBq6Ghl2MZ1GN6wHvqEls + +jwVZPt3oBtIwqparkPPNfa8Iksgesd4yMrnwa4W2wk/WRiYIKnGFhs2dVGDExZPMxk29GLZf7Ff + Cw3MikESl4myKvKdi7tFHCzVAEpeLLzoitObgnl59fbcL6G60ajhLqVRQWUVh3ogrpMP9yvJdVKu + LoVPlRm39MepWOr6flgk2p6Sa2VErhUtzsG5rHHLHtWTgk2vBgS0a350JAVOqPSiODAJD354iBqE + ih2v0hkHCKzpiepUbY3ZtlmxScxa5O/HH1k4uRJ9cjWwmrXn7IR+zVGrfXsbnQVsm1PFPJfpN5pM + cW/thieDXY1OtM6bYze/wCOV7XjU41bswDa9U7ORt36gOngDHaV9Gxy7frcQrXjEOj5LDZjBWXGN + DuA0XcmyFr+zwXp++fEix9g4vwd0aaQIaLOcfOoUHnTwaQzSeiFjFKTlBHPKEa03hagsRo9W0xE1 + s3/YNPQSIsgReikt5z0qrHixq4KvKozcZZ79CIZBwuZR//0eHNCFB/t9O2Fk1LQPNX2H95LtQeCh + nrKm8NDNmCQe6jJNfJXXMRalbeE77+BDswJesIhP6HSz+Q4cNpUkDsQ6QdNcDOV2drNdHXq4soTL + QALYtPhiDyJHp3rmgfV9PkK3jfCL7Dt7YIdNpGWapwSbTXeX/ZNZdvstBFekZxMwdtdEaj5RrFd5 + D219lyJVPSF0+6pPFUUKPOu9TI5d1gk6S4/YAmdlAwZslq6pvamAkJFHr/N2vYR+L8TOsm/wXvPb + TEGGzT1ItwIHtcvj2LEO09qfyD5r8iR1Coz+FTYB64estkw3oqgZFhJ7mI1aJkUP+8lB5F1RLOlz + mdeBNZ9ut6TPFZIr9Ll4lZTd1+8+VulzPS8q0+eOIoakIsOIuzzZQbs3WYH8GqzaU6um+YRCaS5i + 9g8gQvshJZi/h0m6IxPm8Oo1saxc8Z4FHbKN6XZLdgwhucKOgVcVO8YFc6u1K0Q6Vqn2IsNSG+EQ + k0JV3PJqejsX0cnx4nZOTPaYjT0lT5ws8XoNb6X59hVjxRJarazSIqgRg0sKq7XCdb6dbe9rqTIx + Hb5c5y+vARAlzKusvnXLe6uBNJZhOa5H3NBFAJvRUpkrbfTqssDKW6SaqJFclui09fIzGMCj+r42 + 3ahwX43jRL/UCUzx8d1itR6IsWFLHAP0AMObq053aLJop6oCxoYEjDVbGC8K+kahrrRBTlyLXK3S + 6/fUwk4qMDEaxUVtiIKe2OkPJOxXLKy/+hncdXukbNG2CasHv+AR3M1eB5KT5rf8aUlNpSixJ5RF + df3UWhaKgNTEvES85uXrROXcK+zOl4aWngn7ZnfK6W+zPe5cCr0clLkQCri+2RfPZieh7axm2gp9 + FR27vFsGp3zG2g6VTZiGKF2kc/tuvWSyiNxdhqVf7xbjz9okrV4avMUHHPGYsDyTKCLLMyFohFHi + paG6S3smIA81nEDQQZoS09WXJtMzj+Ut0w30ey7SpyyFoiTxafYyPJaQa094p+E2zNYQjyh9VRLj + U5c1fHjD3Pb8kPa72m/ezm8Ws0nBR7/TGfXn17/39tP1sYsETFZfqoxMF8b6mKtoEYPVc+zGncJF + 8hnbeJFqwggYyYu0EWSbiXROFbW9NZwDMh1BpS8cOYiwmi9mozuYwat1JmpPfcn05Fbpfxcf3p0P + otgPvJDhQxPhqvJcV8aUEvJiigJ12L+ogmDn6QsYlC8WtYMx/jwlsJz1qXFoiBcEJDX1sLJvU7n8 + ESLf5Y080HxrIuZ5R0/xpKQf6fzsckoeHkBOPLE+rtMVTKSVeK86bbPB9VU/ov04zmoeChiXLChi + eDHh7JtAYuCvm+nSWkiohex8SoW9Yk86vjjrwKlLt1s6voTkiuMLr8oMtfPLquPL57xSNyqGw5lH + wziJE8y2FRlqVBeSkLpmvfnT87d8OIC1vfg2pfCuWtMCq0o8XlSU3shpkvvCcKBS0enOGzhIHyiF + owANPVZpZZNVNa3M0jlWtp2ZG7pxzCrArfYS3cVGvMg1K1JAA0WcFvR9FPplfizdVVkHhK/HGux1 + 9JIwP/ZboVq1qKByIVzmVtPZrD7I7LASVNi1lemcFbG+I6nT4FGBkaXRDWwNWH6qZnBKyXLmLRJS + djvbjhdrFEsgYJqScvIiCqd9/iKK6MAp7OD6087PkAuIMJZREmpUqVjkXjDc6wf1mfYnXsjcOmxa + RxRZC2qqJxC0jYz2t3hcGHWkynQ1LG575Z67leKXi1lWG6uv2h/fjSa/P5tAMCo8KfYr2NWrs20v + IiYlsp8YeV+h7djXvFAJZ8duJ3qQ/CFrXijViMkLJa+SfjHZwsm3XddUzyk8jw6E2Pdl+Zw9kk7V + 9wfq+2MvOWadAEj6GduvV00YHy8vkl62Ws5YqGL9oXslvHzmSfSeee9Z6DT+8Rf8q5SD3cRYFDxO + hH/PtO7e9qX9guxEGiS7rqt/OEhoW5uhW77Q/zq41EUa5zKJQ34B3GMt13acenUXexGZeIUGwWJb + b6abreQ/be7WDhw4+zfSutOFeqWf82OWdFvo4hHrdU4NmMtcXKNVfj/JPFUxDNmuBaE05m6X4MQO + /fmXpr8PPoAgB6WJhQ7/kws9NKpxFgjRinkQh67//Rtp155YWAw4if2lW3EQPfV9chGma9CDl4tV + JlJHOuSW9RsiCenAtk7t2CXNKP1UmSk7xduDBg9u6nBCT3tE0uG0A9IPdtBX9UFOp/YtIoT/8J65 + UQdKL3G7HaUXSS5TeomrtF/97/mVCdCAPTrkYcwqnF7Q/WEwhNNd5+TJSQPbtkIFKe/KyeB2lWXw + +2wLa3M9LqICnr15fXE0utmSPaMyG2XB67VCBijmNzC0pmA8rR40X9gMXv4R+cKeAHZKdazhhFAd + sspE8vtC9jslXGCwIRthFGo9SJFVlvLkPsyWMhfuArptqWAYmUjN1j2Mu6dSGJBZL38KfkIczQ0S + ZZBEHBrMts82xCeUi8Cy7CtMP5QucD2Ii9l2fTK4Bz1N7b8kSh31a+fiw3vEiElGtCCigq6+S5WP + mkJrnfwChxUjD5hLRbDFy+xVYvbAZBCC/BtD1pNO3H8lUSxaFRRfd88qorEEkb5nzO0AIhW32/nS + SXLZly6uyurNlxd+Bb+G4ZAKipSHfoA5y6GfhP4OFOkMGvgvirTLTlhzxFBxCJ2sti5tKicD6Pls + tfjPw+0C4/Aw08RTk+weLY6VyG+bzserDOt8ikiiqBMhFsl0nmdpov47WKWTJJdxnY4/365wUzzJ + dWQw5iYpvvcUWyO5k8F2KYJ3RUt4uhKvsSRhzqcPp0ynEoPZGP9FwLL77VB6b9DctywIg46+rfwh + 60i5asQMlcurtFesN5lfjZWDffvvLZG8O+kkFQAqNWeu4AkHHxMmXigxM24USH7lDCfkPCs4q+sM + JwkxKTRES0FPOKlqHWAP9oXiCZNEB2YriJb5FJ7D9O02OE9b3jajQPN9Nq2PvX8f09RNZMnGUih/ + h9wKLpUl3AvLva7nxAFeI1gEjV+691xqom/ZvTnYm38/AtXDElkIYo9k8J1fJveyxNV+emjuWGCg + O7jp6RlrL71swnTS00XaxyZZKrPEMc8InQCy2CAmvAr4DvNBHw0j98ip3nEOTzsoQrjx3TAktxU8 + Itw18n4LhgbreZEwykcreHEO5a9ImHSAbalgnfavroX0xXxRLIl3aJkD32PklpDNrdPZl/R2B6j8 + 8ZQE+wX52OrGE81wF5qa5xfncz7/O1UHd2GFuEoOTK5GST8gwRbPH9Epe7+R2t6YLDPOY2ZvxtHt + lmXGheRKmXG8SlvaH1dvq2XGvTJpt/9iFLm+nwRDxAeGfFeZcZBfteLMOGXJkkt+PgssZ6rnEZOh + xkC7UnR6DJyboh5tx1DhjynzTfEuykYoxjhXcDfO850YgNbpzvVpzs8Z7wzm109Zn+i6GfNMV5dp + CYwn9zL0fG4ii8Cq3aSDZzIaeSSP+MTjYZD4R07t3Sp0eQZCHZRMh70bSwOGMDLnmuoc1XGpWuLF + VbZMpyu7HTLkoauEwXNYYGwfZBFMXv1KOOSTYvEt89WKTfyI83eHJ1DROObvebNYfW63JfaKp4OK + RyFsGvPSRLBKB6OCSbEC6oyolWxSFtbt0OwqsUP3xjInxPvbKPjbIPtGal+jwKrR1mfhoohI1LRe + +zA7POKUeIq/OkzsD2O63Za7GiVXmavhKu1En04/lQ9jlgS+V2WtjsLA84deFHuqBPFpHonOvfDK + NMMoyRdExmfDASytsfhhCtNd/YzLfvOwIkWLjvFP6aYKNC5zzRpnbRyb6cAG0BiRS9UqFjUv3ViF + hkWsSUkwxOdVLOq6xADnxmGwS6TTX8fCLYuvo/TmBlMWHopl7/Cuu+kaZjL2f6EriMO3gHIcC3bg + 9eD1r4Ebiudef/oj4i76QkAAulkdnEa62i6PPOfwMI/oKqGO1/WG1e7eTUI7HinmUkPRPdgiqtkx + hoKoAqGa+i1ialKOn0DerSNXRl3PalG1a8tm0PoS3Y4HixMRwmtaHPs0WDPmapvPoZ/xW+Yes6ij + EqqeslZCdTOmEqouK0iUCfs0a6FUIY9Kz/ywWvpJhekob1MgRj2CQuJuUDIMQCJ0FcYWsCzdJpuL + OM3e7gaPB3WlXB6JAamLE+SRjandJEVq+mnkbcQ7cl6qR2wnnmzAmHV0jaYcMtQ9zEZni1OMylH5 + xgp3n9VNhdYE9NbnGqH8EzuyOOnS9+ktpiPJ0nN7Aup7Ko369Ep2em5CiQubuykeEoMlHKVFF/Ae + 6PxEYFb/OLt0Y26fKUi3W2niUnJJE6erip7nZVzRxBMcxKImHghC9jhKkJCdo3qD6yqHWcnMqwcw + kzaD0/NT6ONsY9oq2lgk19l4Be/wddkW3R8OlqLcx5fMzM8oVis5MSpNwNpPB6eTdPAWNESMkDW/ + hn73k8Gb1xeDTXp7m+Xp2tO1RqNNFBotX4+i/gnt1c7p2zPNV+OG0SGR+26x94OjW2oORpqkNT5m + XjeCVnzCmpxViDeJWfESzaV/nqM/AykSFMWEKNf07HZLVa8+RqOjEXGOFodTaQefVvcxLzSDjGPc + p8BT7FLi3eYQ+mDPlVx4Qgq9yL4Y66cQt9nLGcQ9AyncmGFg1QOxJNCxGuceIqyEJHvznnsdQhB0 + u9VeKyWX9lq6qrweVTpCxt1Sra7kxSiE2RYNQy9kSXsA4nYG0qsBiHoeIjMQEXs/cSACAQzOHlRY + 9ftur2xaf0bOK63TJ7IIGvM66Ct0u2URNCG5UgQNr0o05sUV915WyqB5cVIpgxYlfhIkwygJ4NVp + HV1WzEseD56tljw+UjrM+h4LFT3z3aujaqJWXfq5jn9Bb8DWM344GcyzdDV7GExFfb0xdfnlcs29 + U8JUy81JcL7Bpy5m08EV41SbEE5A+MKqIbw+ycGH8KrXsB8MRGdQTUPZL6i4iDpXcocQrV7X4kwp + I40+t5qR9gzpW7aDV9vPMELpUcn/6RubRyHFPwmCBDeASgHuncleJtmCF9g0UGZBbC6Ag+mMZYk7 + 66Tpkb2Bp2ZlRojQLxEe5EQNyKrBEvdfzl9nvjl0QddF87yQSA9C8sRgaT/du1dXv49WeOxTlsBq + OgZ9nTadlUbXC3V/8EzdOxwEx/HVgH58Ly8edXGC9lKqWKEgLSaLzav1liz76AjcXXmzhCds2E06 + +klDrj+mfZeyOeCfTIpsnfLRezasHtDDTUM4vf/PN2UcwmHaDZWoHrE1D2UDhn1I1+jg/7q5kW4H + +Am/XQSXCz8P/gl3FEWhDehGrtOTovh09DDuMo18j94mx27YEfkuH7JGvqtGTOS7vFrMdB6tRDU2 + acHjTM5WCIKXtYXVHwyhPPA5TyKnu+dEdwfP68wk3jFzO1aZEc/Y15ihJkoVZsRFCbPZrHzlIFsu + FZGRjOQ8E5VHVfRHQW0Y45HPEn7k1DyidimNuEH5lefgoqg4E3nEond4HJTRdF20xhx3yJAECPRR + O0S1sap0k9Saxxe4cQ5eq0bbusRtejA+Y2KYK8MNunTOU9iY8FO8qHaIeoyg4uBFpTZ+ALm+8oeF + SWyk/FO22WR6D3uhInrrxCGk9jNPbe/8DWPdnLL6GdvNXTVh7O3yYktNmnQrgtZYJ76mVtzmFlTa + YuAsxSsiZhbzsJ/9KSHK9vxF9veGWshqV38VI5hidd/vmzw4Buk9chBCMev5SzreLup4Su08zlEk + dqtGKTsMDHo1ero1obfeyWb9eIdAqbXMp+5fE0zPFH9/PyqO/s3NbPttr33U0i/OXV+XCOngF6fb + rUuEVP3idJUUpjcXHyp+cR4iH6lZIGTEQj/hfMhCsjfbPOOfZyC/9wTrp+kNZ6EsQt8lR7OeT7Bj + DFLNoUAp4MErv3OZR/mMrQKumjAUcHmR5tMmvYlk5oZJ7FdgUC7h+51aBsBPr9+Bkl3Wv4PBJ2zA + Ec0IK9MLPDrT+iHAfFz6ytALo+pLFrsGRbRwjxabq6Cf/cD3a1hG9+kRomciPMnV6ZvTZnfNXrHS + xwDmh0m1Z2vnkqVx8COyXWHjDdvnR0tqTGU+oPctroqzyZ1tQc5wV5ds5MFLfuwm3bCN6iFbhJlu + xMCYqasyU3Z1OxUhbBHQnk1v8eHai4ZExC0GfocijTsc1CxHKQhFAouA6hwRU0PdswXSlsSXPcxG + dS0doInvI70tt+zpwPJ6wlfuvTn0WAyIZqkeluLk3pvwLpYmWM2C6YXlbj/5h1Pb7QAokgmz33uo + vZCQLa8vYY7ZR+XpdisNXkouafB0lTSut//zq6nBI1N9HMSlggPxi+eg18NYDLH+n+u1q/A3K2jg + 65+a5S1X4RNUIbU+nehSUP9/9t61u20cSR9/rW+hd5OcSGkCvMevHMdJPO2kvXZ6Znv/Z87vyBJt + ayKLWlFK4v70/yoUQAK8CZToxOmdPbPtmCYLJC6FQl2exw1eMr8bE5R4xJoIihoweaDENRrZ1Xwq + cydkQiTNX0Tzg/eA6TA4+3hy+vFivJh/TgZ4N9EO+47MxCc0bNR6GPrE0h10aSPOEkiawQK+XSe3 + 3ZFeDhPcBJHvxOSUamWUacOfcXxSygWOVOt7tLGtxHT7Er4KX0XsGutEQPanaPdjzqvWzi9WnHw9 + GcXLdDnuobUdIWkmuiBbgWqt81fVxXo5o1xPrWNWcEMiCCU047v9A3rKreWM6FffXTIn6JBzKG63 + yzkkyeWcQ3GV1u8/PhzzatJhpdQSkw6RA4aNgjgOo2hH2uEaGqg6V6qOOJlF9Ha7vJ2bOUTo7Pz5 + XC6ntZGe3KhGNDr1btlouElvE+i+NeEnpeKfOBnvrxcP8hQFdyFwnLooc4L+4YDaEIcseSHvWTA1 + RE3KP8b0r+dHsLoWC6HQRI8kyzusbCL2HnXXcJbczKdz+AzRxGT45X4Cs0Jqwfk9luInAqrs9BK/ + Cybal8li8I/fjvPyStd1Iwk+bbi61ZrKP2Gnrh3I0cc7KS48FipY+aU7O5a/j1f7UfI+n3aaASPU + lveXjMX2hiXdbqW+pOSS+qKrsjzltFIozllcRm1xXr1wvcDx/JHrxaKaSWgvWQRSySYf5a48ubxO + fvtwcXx1pSbzaPj1DvMYVJY/fO2dlPXeHUJXLx5EDa0nMuHmGlOQOllrpSrZfAHrDncOzNIbbpKF + MJuyI8GGNpkvM1iP8JnDWYqViYq/OqmpSS+9pkHzHLEoKvFTFbRRkeODPbwfRqhW285Cj8exU9bL + qm9kr3xsS99/9t4d/+rBnp5M56CSjD3B41GJY0vbE75720jArX07j2BXcqLSVqLMzaU2zLAHqEEu + EWR5UUO+aBxHEQ/LSa13xvylRa7jBAR+M06A0V37S9S5x0I47TL+r0H3ZfUMZ/PJ83zeWq6uo73W + lViTOAaYW4v3bIZihG6HYpeBU8y8YekNUNnkBzIWMPKaRIVBWR3pNWKOWJneTsipCknNjdY65EYO + L5hELa+TC7cVCEMelATepzNcHnv4BkHPUOLmKlkJrJKxHEpMiWgpmGrix+pE8NAshNxeDT1mTBEy + RKZoy2zqSLgauTVlJxbzGBVN6zd3ZubdEXmIvdKxp5MAsX3gI2Kl/lLeaB5VVt35qdMB7NETfZxI + YkF2qUtrN9I44frItxrbbF/2S7o//CFY0J42sfd7z9bJgvuuvnT22sht7OpHaqk8CMp0Ljic49eI + wdaFj6h4yDpDVzViZujKqxKber1iMi81x9Yg+N/cia4WRx4VlzdAZ6a3GAAU2QJrONcsitLbK5Q7 + ENJFLq8fSD6ygDzuV5cXWqx6mprVEvnZGZmxaJvufF7JN8eAUGAPaHFU6RP92/cOP3h+TJOvjfwz + f0MNls7eY7hvzbmTP4QkHdaPHRgLoxBzy/QaNZyli1HbezAeqfn26vGealDyPdan+dS2QO3njitt + 08u9iTT72awjlyKL4dX+r+I6scebfTGyw8hCrY+A1uQwHCpyZwyPuXkJQ4iEkaxbCpV6yLqIQTVi + VjHIqwotdMpk6Ofq7GMBmDEwfhtm08nNTbookn9P8LmBeFokRzEvplCQTWylJTAjNE6Jfb77eQBs + OccAMTDCWhUpzbEeV/EB4atMyjkyNCdqp0GtP1TWz5U+z04Z/x+iCWGkt2VEaIUO3+t0tgPiTeyO + LKbBKvYFGU7oijzay4HiMHWpdIancDz96GR83AXJUzxgi+VJ0qtonuK6RLa4OnFL8X8eOkGpKF8A + evoBj7wR/PCRqgO1y5lGlZKt7qAf0sV8JVihi2rul8Orzfx+S/4i9O3ko4bEGqL4DHa+BYaDTVv+ + 2fnJazYawn/5c7jxC1xdjFFhvVTwn9nUrUJ4Kwv0Ro2c6STljURKTshcJwgrzlbYM9bVSnc/jLmV + pMLlmSz/hCGj7zcz6Iz0B8drTGk2BOfOQXf8OdmkYxoBAcaScyiU0qUD+L8mX3O97MZh1eW6DjM9 + pFrZP+OYTuIGBR2UCLZl+86J6TVbwaSYXvOVOSuOhnOb6TjAGa98haHPCRY9IFdTS0+20EO06AvR + M6T56t6nxDqxC7CajvTVGW6pw582WopYUeL78vVm811PIeomVy31SNMab/0YtTGIdPw/Pp7DYrSP + 29HtVpuClFzaEugqbQjnVYBn7nG/VNIRvHrhxcznfOTFPMaEHgFOPyfeivkqndyjRV2P4kbm57NT + LqA0Vg/r7RcE4psl4mkw3Kqoc+d1SM89sDXouNHt79EKqxIHYYP6ixl346CSETEreuphQf6sMcIj + z7Z1nVa7T3ih17QBcR4y3ytjTecf2LQ5OLGz4ysGjzDCKmZLwJN/yg0h/Tafkb9Fw/RUTpdc4CaV + L4Don4NzDVTadxgRkcJHCXut/PH7sgvZCbSgRnBiseXcLh6mKc6Ari8SwfKTru29PugHUngUMvyy + DDTvJ0KBdRQVU22MKWqXbrEYKM/nvmcMeKMsy07HhYu376kDrEan7za+hwtJUtNgXnovBAx9xVJc + 5hHnHvaiwMUVJtw+5z5CjX1zyR3Pfnun2+04cUlymRNXXKXt/eS3//IqlLge+ndMStwXYLTDeWAU + +TFzQ5MyXCTFTYZrPMTDr9vr+f9u50uMzDw7SaUB9F/PDat7BEf+LJuL9Dm5CWLvzQVfJHK1/pkr + 95P0f0PY6tG7g5XpCEZwlyilcDOZJipJwVzqlG9bWG7CbABZXpvZUH3OtCK8RqhFMIHiMHYfK9NR + 69Om3br8clpSCg8Cn7nFiesnGLAjzW4QiY7mzcUrj9Ur/klcl0L7DnBa5zS8AeMD6iGhuLXPPZzu + b3+pdd7DfjbROjz78nKw29L3kfQYFfp5HqMoFvzjwzlYO10cZeoBK6WZSy+pTXWdFOfxpwtWxtvm + rl8+GPmvxsxx48gdMVCriobuykyvMjv4LXvriEokMYlEOhZZxHPMclpg3EodK5WxYWAL5o/iuj0S + ZG7wFxXkPRNBNfnLv4+GsxQ6DvoZZK2p3FzgZJOO0t9CPSTotSkFOl2jUyS7z6R6Pd6sWFQl4AGt + Q0n6BHaA69QQnBv+03S7Eq52WZj69ln6vPWg5fAw+Fc516/wYcVREEZOxe+mzLWWV1KWwQiU5EZF + c+8TmGvLkuIFve+WFW/jO+T63Bgj+u5kJnuqnvmH+XG081vD6F+Dv9rcGoiVlnvouBeSMve1ir3D + tfiPx9gSA6w+yWJufF/hTSlKfhznyEl7vN5ALuKao9phWsP2A37wkfcJeCvzU41kOi8dvvcSBofk + wC2mRX+j2Ewo5YSUuCl1+6OglnlBFOY+lsX+oGViz6h/2312o51zXVlPkTxuekEHbzLdbnncFJIr + x028SlbTh7fHFW+yI8A2SsdN5kY+C7wR/uShzHabjOXkkHng8IGYJYvBIVid23WGiR7CEvlwM6n6 + h5NvOiyvef4q2RF6jM3hPPZ4xT+cpYst+oma4oqNNH0s9ILAqRwVi4+pde/6zNz+NW+sy6GvonKJ + gExmEbNqtqVXlNyo03T5763MSxNnwbxTbrZZ+VOcsISO/e5spB0uVeMwa0pjokZrBMOF2TQPYGFg + Q9lRHhjL5FF0sbqTf0MFBktqCw3h78PpAyZATdB82IiCALIOFDASglZPZir1T7zBEdoDmO2BG5wM + AWbDk7EkNV4YafGj4cfiD8JfRb5XYkEkyLYjeL8sBbNoms4oqQhmMR/gVM6PmFEQD2RfCbWnOkHL + XjxkPCorvAmA2qet1Jzp6+TWfk+TNLGV2W33tC0I5qMcEsUAhAqlvDQZuyZfiwVnjOWeoA4szjEg + /eOoG/Ry/ow1BqRswsSApIstGJBlKj9dFEI9BjGzpkfrj9Ls6dhIyv/AnYJi6bX/0uma3Ccfsida + ko2UuJboKu2o1zdrmdt3/PrEsHFuJvfzxcPgep3cJIsZgnkaKITyrtfwPDZ28ffQ5S8db0qpfrHf + B7an6/p0TNN00T6IdrndFISSMLuQAot3DhoftWGnd+sTPthW7T3R2Y2Ksy9MoT6gdIjFUFa87xnv + CRmdyOmDMvggOIXMFc3fIXUuAQ9qXm+UH6aRZc6YUvfpF4ogYjLT9pooj209FErzFEDxr11Qyx1x + 4ukZ6yIU2YRZg0IXFR66AoRPhF8ula4X4nszAOK0GghlD54ubphST3p7ouhE4s0gF5AwZTC+sJhn + d9SDa6PaEiFU8mrAyRo6ZJNgUughYLQ/C/SjOO5icr3ewfigJeCjXa88BYa7vTKcRRIWJ2ihP+fL + aftp3fpl7EW267iYokbVsdqxeHpAUDvYi6FUUl4Zx3n40umCbaUesTZrqQHTqhXXVBlcgimfoASe + Kfez93xQXM0v6tJQ2ziBxDD3/FD5qzBCSs913ftCuRdvoLmFFaTKI66/vSxtHkpvruq5/Zkh95DZ + tJB95hA+/3aJIpLZYen2XJTo/PHbpRtwezAnut3KDyYll/xgdJWs9ovLUzSsS2mVsVuKHoYYPWRh + FAYj+BmJJB6c79y5oi6YiLxY4T+hkvecT0m4wS7WCXNqA3LyySnW4lulNEZmBqWe0e1EGJVh1fT2 + WUqlVM05iyxsooczpZYSIWC717bOvABvUp8Z4TO2q5HBsXBBhWXgC7OjB2LY8pTCKBJOH5QvJqfF + q+0dn9q3jV0p5I9cPHSYM2DH025ReV8zm7ttyLFEn2qQNpJrTE2PThgI6jDs6Xlx1EYGW/rkNhnC + yW25tYTG86zZe5tTDhkxvDQs0W4DsVvY7uxXj1NV1+ZunaSE6orarJf36wc4glPE5tC3YRilx0co + D3N/rFjuKaxY3gHSi263xYrlVUgvuio3sU+X5VoxxIr1a7BimRNzf8QZjxWB60mZcv7q4qriQNEI + NHBvwpnzkMHMGT67yh7YanyxWburMfzbXz1XmQx4I3RB8g0dR0iuWciAU6uAO6UBQQ8/HdQp8UB3 + mZOzPqPapHWSbRcbTE0wz3OanwpT1Ip2VpgWgUMrwhBqL8Z3rQtJzZcw69BrUP56PfsjjuLmKjDP + iUO3sv9qL6SmvAkRVZJoxnVMqUVUSQzDA37iNFmpnpjeJfdi5VAZVwmJLAycwKalwf+dOTHAtVNA + BnOsTfCQC7vi3dS+VvVtRU/UpBKKCSO0ctsMa91ucqe3r8ADgw5c0XS7LXhgUOWKpqukaf44vmCR + U4Mf6AcV/ECPu07ojuCHp9LtmtBP79bQRBWXuoc6oieFdVpgU3PHH+xZ55HPBpWzzniH2UC3WyYR + CMmVJAK8SrPh17OP1SQCFwHLSkkEQezB/0YB4uBKINwrUUz6S25n5FbB57ko36CZ8et8WVNetm8l + ceRwJ2AVxMNSy/UHpCAsF3XpYIYRx2qEcmHXAVNlV/foJbVlxZcKOx7TAiUSQyKi+ajH8xMCqCE9 + A7ykj46G00WaJYsHkL0QyePwPIwFXw1wzPNou89jiWAb6Yadrm2Fnx82KhvUtvyQdYC8HdmBkdTF + qo+qAprxKWAOhGHDexHPXYdv7RSuajOIYX+JVNxpTTCOMzGu3faYPkNPuFj0fiovrM7SjFNWVl4a + O8XXFmIdLPXxzzo9hPBcR7grDvqYPkq21KZFdQMX547v2nv86HarTUtKLm1adFVuWp8ug/Km5XNE + sNHtl+jV2PND2L1Gnh95vuTVuCKnqtCGl6ccE6rgC7OHhQpnJkYfSVTWyYNCk/oT+m35MEwX81vl + nYdVppKvNphDlYHNvVSeRDbi48V8+Rm6VrSECdbJEB0fL4eXejo46nDVMq79mvdKKY/rK9K+45/h + ZoXX8etmHRy6yxZ7YcxZ5HlV+6u1q2o3XUyGbUEQNhrKN92PqsdEAW9WA8oL+0sU/qupRKtOZtFz + lA3/Z3FI0XLcjKNWGSxEa8KJsf9EFdi1cMa0d42+1QsI3jxrXBBXIIFFeT7BnUrxmL2wmmzuvk4e + jsToJjkYPk7mXz58/MTyV9FfQAaIceHkLtc4JH5ET+5g1R3RbLjjPu1FTRttw/DuPIoVoSHCg2gY + Uqsj3RPJFJEUuZYLy7qHPJesHCqAF7gofEz6qG52/PAyYBDlh02iRvlVkeCpJs3wdp1uV11TPyK5 + efEuJy663XLz4jUnLroqeV0vTysnLt9xK5vXCwYbf8BGzIVnZZXwpzty+4J2n09HxNcyub3Vgnhf + J1l+ZJipI4NehqA2jD9WC5D7dTW4ECQZX4rjCSgUdcRRqv8I/7hKMxJ5XT67iGokmTicLL/MofPR + IS18WOjBQVz/zc5XB204SzDnhMTezW/v4PSy2q7nN3PcPbWPUH8fg62Xbm/vVltEPdrO5kk2ePvh + wsvjSgHz3L1P6YfagGrOxcQlfOmwuAOXsLjdjkuYJJe5hMVVmnNnl1eVynQehazCJeyFfuTHIw9O + SU5gVqYbQ44A7zli+EhHjteSw09XGfTeXXqPR+iH4bPT988Vn4OAo8esHT1j4zW5BUXO0T0cXm6O + CgYXeEZ8BLQE3Y549nBpuk5ody29kJziZ+usWqH+5IjSmjD059cI1ATdiJ9mmFQsaqpOZxhcgRH8 + 1+D0vezqsRwbkcJdN5TS8yAyvGn3QZB62KwzWCqLoTfyx9fzrNiZFsmXZCEJBRQz/NFQ9LW4+Gny + Df6FC4XuIbSmRCiAi83sDGaJnjl4tlz56B8qC5isTS0jlZqo59ncsnCllNvF8dUAp0bumAt5KI/C + tDt9TccaMGdN5YDyeavDf7KYPNjWS6kd15IRwW77DgIK5tLOfTCqTixJHtVodXGYdDa2WkTFPMhF + 1SQwT9ZfuuONcgGf9cvw5B+flGXcyR8UOQShms930efj+2Q2F06zFsjShroRx3Ok4ZuMVZfLlaxy + e6wxA/bcsxxKBZgspvPt/f6Zdb3sfq6jWBtZ/NZ/6XidaBvlM7a8jaoJg7hRXpRlbxkiQaM+kv6U + ZzBOszkaHc8HrX/U5SOZY4DVJyKdhGz44uGDF6xPGa8IwT9PbZES7dMuDwS3yuUEfsF4q2KjB1eP + x05kZi9YCrX+/H0baKlY6Mg5DAqCmzNmp2/PntG3u+zv4X30KYBaE0b/UW5M1ygCYE73IgB4pksR + ADZRKQKAi9IteXrOYD9cJZM8CW1Qc22U25hFYEpgDxnNYDYu84KBrDPzaMLvld/pisTkP04vHbfD + 4YVutzq8SMmlwwtdlTTK/3hXDVFGYSlEGb4ac6Qj80dw4OJK3V80n2lHwzs4K+enEzBB/rG+BcOT + zg7vv9xWo5ZP7uxwQHSye88McCCUlY2Qcj0UtcEmQrhIAocS87hy59c+wBxhpBF3YPRrnG1v0dm/ + D5QGI+vrXbq4nR9AgfnkgYG94isnK9g14ADecdN+At5UdR4A4ynfjFUnfUkyQf2xL5iHV1A0lEV2 + sBJcN2qemz0Ca0BLvuhNIf5VDouRPdwfKLeP0wCVCxyfO34H2Ay63Wo7kZJL2wldpe3kt+O35e2E + IaqfuZ24r154kR/4I5+FKnT42wJ2YjjUSY/GrFRfpCryBBbDZCFCgOgAQa8Y2JbJOkXGP8l7fDFf + cdhflKxMpjfqHo9r+LaxxOqlvJCbyQZGDc0n8r+sQOa3uUh+bgtq0Y722+SmuqNZkZ0WwFhREHA/ + jsrb2RuNlkaX5AZhOdESYbaMrJt6iWVey3Zcf+RrrMMNa2wo30CLHm2G9S8FMM2Ey3qxlgNjRhtb + 24nD0AsqFRwrdFo0EGfl81IHWPNjr66VUc0YD37S6T7ABZ6bKY5HBN0/RSFqQJ6EmknZci5t9d2R + wKaO6yCLBV5ENeAtXG3NHdtCZkoQKbA1KWmUDiwRUQsuI4FcWiQQC+bTbhu5x+ksq7sdUzHJawQ1 + 4ibgEhKdarP2bJ2GhxKd7ni6iU3UlRgQb9p4xepck1YPtr6zGzo1K3JnYe73qE7ppyrZJ9Q28/ts + uCsa1kpfpcaup4CyI8/+RE+32wJlo+QqUDZcJRPszcVF9UTvxRWgbIR7dXyPj5iwwpliwkAYc0wD + ALUmcOjTIjr17M27i4vneoRpJEZyLFcp9NCXyXSbog5RRvcYpnY6JX8/hVyMx0Gda1mh0EnYhKgA + yONlouWL4+diK7qYjzAwtRxeHONdM+N1TSYdaq2IMeDjItCiGSNkvb1ZrarWW+VLVNnp2+3ydl6C + d3V5Od1+pFdvQofHflwpfJm1dXYtAojRaMSauOvBuA5h2B+5Pc2A8nzueTVIcfoY7mwgYnEjFh32 + cBDxsolGc8cM5VVsTM9rjOjWSq0LYxrWJOifxjpd3/NZ5CHhyP+lhTRArVPgmMeEYx4QdkTtKHUA + HM8tLuh3Yc/UjM8vuyqIcaiF/Qerd7Kgqk3q4zbfRX3kkCpw1dNdfUKUV11VLz+bV2ggdQLe3l2z + WHV1j+KbJpUbUQ45sfig9binfYTaq5jtrUrP6tsPkfddCntdxfnFu5Tb0e2WnF+8ptyOrsrC3t/O + eQWcwgnCCucX8yLO2Ij5XhTG0tKpINrI8td0wavlr6tsDqfwclKVKmg3drGAN9JbwbvxIKogtK6T + 1ULifOKZ7HPJY+Q3cnSFng+mawXPov5la/dcN4pdG+n55ihywfIMa4kLihfhIyZzE63WCSv56Tpa + re9V4OYbMnw2yQLO12uT5QTOZVGTdC+Apv2y9MXk9hYlZrh1zHTMIkMuD7t1iUJ23SmWdxJ7D/vq + ZDO9q+vZgMeNvJWIPe/6Xkma5hpPvk3nGTkDagRHTfAp6i0HJ7mq1EBISpPt2dnZczURR+hbwIHV + cu70Ka89JkqWk29382ssa5YvT7NWOKnWaXqzlt2dfCNec31uSwhc3XrZMWF1jF8su15Cc1jYJzxr + H9ZTthqglskT+7kTDOTUVmf0tuVgvQ8FMiJG43QtbLoCEnCkF51hT4hf51NrR1a7b4xTNl95YLpK + oSN083JoNdI0McK8al6slmIirT9r572lHCofLK9Gu4ddR3zLLEWM4rH8lGuYwZ+VnC/zCeZry4Bw + us0wBDn8d0pJpV0ckqgPhSWzQ4fa29tOQLyt842ATYQZjhEuJR8hCXDad3FJug0zTS6cK3hCFDfv + 9hj24djzJUZrafe1M89gm8c7d1gGrbJ6LSp1g7AQpDTD3qIOdUDKQmLhsRdfDI812SPfU3TTXO/L + Mdln1U5oKrA+yop683MGOaSi9z54CYZ9J0xFesYaVFE2YaIq0kU6B9wmN9J/eXmXvjt9O6Afw3dw + fYB/FFlbgUugEk5MacnXkzW0B2o7WW2291o0xHrWdJe0A5bRo/yKglCgowBGfvGdWLTYwCrNsxs7 + RL048XPWIc4IhoBJNkUShQ4yXd/hLiliPdYDQ1gUn9d7fDrMex5R9OJ6Lj6beuB2nX4FK892uH0m + 8zXFw7P5l3n95tfsLYkpIFeaLnZeJ7nfmB3f1fe0EwevL4ROF7s876sOH+oyh9JZRZXAYri2DZu5 + nPludXSyeV0EspLWLyHWb7eT5cNirG3GYDTeTZa3yaHRM4fMUZzV3RrZbWXuL7vTBxDt8zsNTXxH + rO3xE57CvPwheMOcl6wTzYH2lHUJRN6MWQShLtNutF5lEgQKNiTPudLKzdTXXrFo0PwXIWAsNi0H + JEngX8Zzy6KpqNseO9xGWnO6XR+6aC+s4NDVclBrIcYaHjsM//MA6rU9dCc8RFaknB0drQDOAx5q + beLJ7R5ry4rJloPv7juBXMen70KZNBr7g3z2eXIJyZS4PCB1QibNFF+PHAKb+WYr8f6aR8V6+R3S + SDs6bEQZ3+vuHaB0KhXxn3dDoDm3R6A5r0WgOdcQaP5+Xs1g4DFit+pefe/V2PXBdBy5foxOhTr8 + vCMEl7lORAn1fLlF74rw64nm+Mnw2fF//cGfo5dQgtyusX76ejL9jPgHyxkm0U0XW9GLV/Pb+wnj + YXR9lCfzZyIjbzmc/O92skrXovoXo6qZkpVDyPyxWMAHTv/SVQ85fJ8bh8Eh9QuEKfDUk/t/JIWY + 9ngfYVyfM98YqO6J7Ep9EB7D2TljkX1QkG63Uh9Sckl90FVSH5fvf3Mr6sNBp7KuPhhigMShF4+Y + 53ieLGlaF7U54/E7DVZM7W60msHSrkLkmtZQCQyqMfQTxSxilcygdyVKISNkFzdDS9VLKx2fk/pE + b8eLQmYjONcVKGU5vIHNTfoZtPRXM/2aNSXM1Asu+S/KDguZiGVMrjLfdgnGoZqKzZzAjV1ejpNp + 0IdGXCxqhsSq/QQyueQ4lireW1KLeLBrbAcf0+UYcV9gS0PjQm9HwlXB9PzlciLCc4RNJfwpk2y8 + mH/OoWjMBHF8rL3XjyqTUiXpChhMlbd0/SBkmcdEfQU9e3d88Xx4eTtjqwEu1RxawoWTjtOEQbn7 + FIyTDO9sm5R2gjiFPexHsKOTbh/5O1/bhR50anx/Nc6+XVQLfRzuGmRYODN+ODNnbwGZmDKLysvG + qhs8ASBUyXVLOvuGfGIne9cZIlNu6F4BMeGdRC+duKOLRT5k7WFRjZgOFnm1zOmW65TrdTqBtbNK + pnN4l9kcrO/59RY/4/mguJ1y/4oScL09JJMMMY4xUADSHiM4s0s4rnXA4hS328GZkeQynJm4SqbM + 6eU/KvlNcPAOKlicgRd4njsKvNBxZUHd28Xky3yp0ACz7eIGE74eFkNRBgQTsoJkVm8ew/8ny5Gx + WUD/gjixMtLlTAt34OFKbianl9JWOl1/qeZTQRNrOt+aqOVxU+oUYy5zXc+r1LLdwXkl/6T6+rW4 + Ak1dL7VIK5bTSggfF1+bu1JNsMygTE9QiPcjDxO+Bj98MAY4lXLgNi7ry73AgJFs/N6KxmiO5vg+ + I0SkotoMnuq0Uf4cxz+Yq+QTVDPZxrX3NM57LPBipsYopeE5JFIdU0y5YS3a9UtHGa1bFs+3LP+N + 99IJO25Z8iHrLUs1Ym5Z8iop8snqVqad6ku3AA0zgJLyq1rGv1qixxsQZNwNksXmFUk+UqyiE3aw + FIMF9TJTvSUubR85OBCTwgIwrR2GQpVdKp21J+GzFbaZHevh7uiCPQfh91QPXd7qLw0hoSR5cum0 + osvtycjuuUopwW8dIZHyZ2xVkmrC0EjyIqkhgiQpFk9OrbhKkHw6WRdRoue6vhk+u/hw9mbIuCjv + CZ8PmgRV5VQA39Rbct8DeWEfPO7oPQiqJ892ZXH9MJzCzMdgdi4lZrmUMX2inFIFemHLK1qvrEO1 + WW9YOoelpjwG7fLjMjr2gcyzJ3XtYSo+ZEwb7eq622MPUxrKk2yz3PO7sM3i7ZZss0JyhW0Wr8ra + 5XfHlcifF+EHl8hmYficMBiFse+6vLZyGX/R8iVHssBLcP0gGYTCUc42yYqgBcznn306fve8sJhG + QqAorCwVo20zkWANl8Yn6bEKCMKvw1m6RAwP42gnKzcn6w0qEwUf8+Z2Ui1ANm8tkdyaTLHGkTb0 + WeRWSJxKb/3buNRBTby3leJZHffFbKwoiKGCUUkZarADxmYkQK/ZqZdVHpccT7LkoWex51YZqGrE + lytzf46JMsClkRehhCGd3x1yEuZNHFwI0is2chTQXk7SDocvFUNMxkHDnGgVXaeMcT4KNysqSaxu + wCGCQaZXroioIbv4CTwVEVEyl/SJ3S5t+WzrsHHJCX0P03wxeUjW42y7FvkVyaykK67TWWfvw1Pw + qAhFibfbq9lug9iD/KYk9n6AXTwVfXt67CeeLfuJUMaS+QTziJA3aiLZdcb6H7u5o3x58rvg/H3Y + NYKSP2R59isa0Q9/+dWqEyqvzExAC96uE1lkpx/WPs+Xich8XBdEJh/mGfMH9+K/eIBzORMHuMNr + GBzpIah/L+tpHTrk3MakzVoiwx3V/I5Bfyf35oZ3aCluYA4BmxVVeevkPp0lC1mWJzh9uxXmuZ4T + 1VXRjWHh5uhosnYUuw80Oii0xUO1uZ3xw4NKHgoZkdi29WmUv1PrW1ClLdVBTVP8MGTJKWbGqPge + sVPeWuflwnk3pjuXsMz1NxOkYdWmvu9RWDD47A7uHlj/SGfgtm9sd7zJfR1UQTC+mt97+iF0R5JB + D9n/HhH8vj0HHW9/XqXb7YjlSXKZWF5cpfPqhzd/N8+rRCxfIkt0IwTb8oLYHzEHSRuqSlj0A+mN + yS3mjW6Gd8lkgyt6O9Xc/5PbQhNeb2GVp/D/Cdq7+OrIdJjT0AhAWuy2Ck1VqtLYPsz+XcMerFFB + LeT6qGN6B2PVcxsOoRELIuZW8KCm6RiGCAETl025bWHQxB4fgfXvBhWQTvm5N+migpAaeH6jMP0F + TWHp4gG3C8LEXG3mM3nBkOw7TdATYeyHThghR7z2sQLXIBO86OJoiCNyXMoLkclb768uQqcoB8mm + OESVuVJ88i/rRH28jPbKEaQBhD0HZvgRKEeNDlP/UGTDnGcoophnWZkAEV4KDLJnb5aTvz8fFjll + +QdmA1wKeSpXFEYUinK42oKLKQWbJeoavSTRelPHIdX1hvryjsdcj2I/f5slsIK+pH/bLa/xhaQi + K7oQune+JEW4wdQ45a34U1vG6GLYEwQLtAjVhhj0Pus9uEDAiigLQp1j/Soed7hBbllMRJttr8vj + 9efu/Yty7B7dcVT3yzLy1Wb1Fi5zKRKafINnlrDLiaNnm/ZtFYt9AocdsSMf2xfp1WIb9FIMD5Yj + pUi8z1ah88v7bKrpNZkwug9WJ5jUlCsgZmt2l04/77YjHrUoPjd0HTJ0t0tTnX43ceUeU5ZSmNOx + hBF/yVg3OhZ6xpqORTZh0rHQRUkTBZsmHMmWydgfS2xAzDhCeDNXXdBP68/wgYfFw0LdRXw5z808 + CHnP2LzJuAdenQl+Ke76MSVLMAJoUQ/BMhBxkcoxrxojtH7UxlH6SGRPgZzViunKTmrT1rO3wHan + rkuerSkSBfbBGLVnYWlfORzdKat6yzj2pCu0fr30w4C1Zws7asEpU/q4c5KymkQ9MWn1it7Cm0SV + vI4Kt3Wb6XSie3kaZe3mJSxV++Irut2udpMkl2s3xVU6Ef93+UQcuNxl5Qiu9+qFy50Qizc5dyK5 + L7ynwis8WJxCC2AfD/HAMRpOF2lGVSZUYwJ20h94dJXH2P/ecYwt1dig9dcUPPX8gDuxX0FotKLy + aJKjHYDzA2GN/aPJhtkcRQ11QJHj+R4rh0kPIatSHNX5241UDZz9UHxHDur/1k6a6AkdHHwuPGTb + +LFnEGJLMA8N6XbTemh4xGganGkcyfiqRdM6vV2vJOE9H2j+6gcPtY3EdFw4OWEuf+l4XeJV+TN2 + x4WiCe24kF+kbeF2AQrqHq2MWaIIt8qW/cfjNxozjM0TetuYPs28SDLOSgunsMUPp5x1hX1XvFaf + jLNBREtuOd8QF5nYtrZLq/f+3ry2LPZ9ZvZF1RcGOoOP02+puGddzyDTthr6qkA5MMWw6zGgNyRy + z6WxaloGfZwD9m6ivc/2YlPN965eqlqkEvQdpQTj0OmYr50/Y6sEVROGEpQXSQmKnesG+iTJQzyD + 7fX8f7fzzXw5zqPU81v84lO3oupUC6jqXJVr7ZJe6hpG/sUO+lahqzYTOIlBuKzgsK8wHolWQnXA + moij0A8vxr7ok+IbOnjdd7EOlQB279MZ2K77oCW7zCOYu0KY3r92jlBYhMIFdTfPNnioeM9fFx3Q + 8FJ1nuh95DRiJMpOymW541894TJ6aPKN1Xr3HyWn3N6H80Mj67D3cJl1UWQ3EO1fMV0sR5aclO9/ + Pz+xxyT2IgL5bFQw3cIJB4izHzDbY0K7I9b6nGBvOPUELBwRbczOHvse6L8+Vca/vXRcfjJ+bZ97 + IR+wy75Q0sv5F/K6BPu5OEczS3M4ua7nRmGZ7yxCBnM3iKMR/IgD6XE6w/2BvA/XDyKLC7NuVivo + kRFV9k7W68nDGN9opu8+k+VERM9HIk+AItrjr+i5zZm9s2SyBoMB+5YQwG7W8OLT8fX/CQwwHgWu + qEd9Cvm5atry/FwbRZ1NOvmM9blWNmGea+kiTb5Vlmxn6YD+T72iqyJ1fvA2eun4Xd6xeMg2Vpc3 + YgTr1NUy2sZDMslya6oNVkMTzH0PwfsoNZRxGT+ad8jItDyLPQ7up2WVmHWNlU81Vh8ueRDZ56zR + 7VZaU0ou6Uy6KjmTLi/wnFly0QusGt1F778aR7CKo3AUOR7nUmFe4SkBdZoEExZ5TesEui6ZLLLh + 757Qh78Hw2x5+fEiJ0TJ8DF5jIBhepguCr14sV5xr6IT9SfqWJbAyjQqoHRIMS8MorhCfohFvfd4 + 2MhK31DPRci9JoIdQ36BhaasdzjlFC8voHvmY9EbJYAyryl4gGSKblTGJNE7JG+rJLGxtApBYaMo + +tegz/EbiJmUe+KjSNQk4YcJ/9nu/rBaw/hZeGft99ueShDqjZLBxWlT0gp1Nw9dyrs2ZlEHLXbg + oYJ8I9R3vwe7zfgnSS1yKEAvC50gVv3QIqMlcdj3ZaEr4x0gbul2y0JXIblS6IpXSQmfn/5WLXQN + 4rBS6Or7LguDEVhsfijzhs3MzIr7ROcJvZjcsOLYJ9TteZJWg6Uns2no/mLcbSAo+SZJnI6iCCaN + 50dBJWLaUaROYMbD0PUDryLSdB5phFBSmdWy8Tm88dU5h40tjMsbxUW6QC/UrtYasKZKar2puVyv + 4/jpwnHuyjfI/WAm610QdWuhxue2o4GgsURXDvbgJD+pyGmoD/Ro+PVuPr0r4Gsk6nLV04ebzdwE + olR+I81jdIRggA/ZcDJcI4pNkT2IC//TA1NV8IhGCZoW11ZeKRt4Mbk6/RpC9G6qC2T4OzyaI2Il + yj2PXRsgfX2gk7R5DyTPXN2M6yK/JdDKHJ9M/KUoUviS1HWWGqgRtlrAadh+B6gOSnKtmSk/0rfY + bjlIihtbFdap01GX4hM1KrdHOa0FPULxqcllTiRrPdppCw8Umg6cLzsek/NnbNF0VBMGmo68qEp5 + CGYWh158pQTOWxtxGLu79BaRAIQHTCLjyMC0eHZPfBxfEd2I53M/yn4A7TtosJ8sd7Y9xuzTxO1q + HhLPl7C7TRNtz2xGXx58DhSnFq9IR//j3SX3HXv7m263sr+l5JL9TVdl4V4N0AwLIjNN0Y1fjeMY + jB5nFMeuANKtI5lQ/t3bNcivYXjInU+lJMSm2rSm5EH9uGPWzJVMXA0znLlu6JVdFb1QPHgRH+zv + mmOOR641WboEk3653aVE/npnWrUgKG/3zaUThvZ5u3S71YKQkksLgq7Sgrg6fVNZEA7HrDJ9QQSv + XgSOE0bRKEBiKkmacJallAyKkDbDbLsSYZJUHFEnoC7WMz6cwfeLPpMG2bPTyzccbX9RXfjm9Bz9 + Sskq90nB45sMQYRVReLz0VC8I0zFdJZgQ6Ik/StiqMt7FNfKVTKrHnGLuyV7wNvt8nZusgbEcPKs + QAhpqylgrh/yKn274uoxIZo8p2mBI0GTG1d427NGNqDi5Y0mWGwmMp9e6IhHceBxFpcLZgtRBjK+ + 4CWeY/pOGVgJER1Ci2Zgdv6btkloJy9c1r7p3cXZuGgdIUxyzigk4KEVAfN2TBzAeCvG10qHyJyx + DBaZ6ni4DQ4V2RyNU3VE3FVzeiRUt0y4h2n4NRWw4XMYDLAv4CEUdj9fzjNoe7GYwwsMcAIqBci9 + yHucGlfsb6FR60eqm27qLKyeaNknZYmligWqYhPewg43JovMF+pqAx7AxbaLVq3+qR4ICYRqwUco + VjYW493SBf0DB7qMExMATEbEuZjta2OC0pEb905lZTG71A4Yq/McZ35nHkf5jO15TjVhnOfkRVmh + uJilnxPooDyLcICXfjGvjXKzqbCohP4xWsEzXBCL5GLX9X1PTX65hCyquJuS3vpKdP0J4Ts75tb2 + mxoaOEQMcQ4j0IEYQtxuRwxBksvEEOKqjB+8O62Yaz53eIUYwkNk8HDk+V4cyfMLzLtbqXwQlUDt + QzI8cJtUbaeeqp/6Sk+pc/yZsYUSj5XmweY+rEE3apBYSnosCS0jYe4QqtIcDFsKbL+SLaUFaX0W + sLL3XplICJ7X/HqY/+p2ez3TM1tMBzPlKDB7UuO24E4Ue178r8GFfEOQooZTje8RTB2QK2cYYmSC + 4X69RKzMxeJhWMxEmUiFyVN/PtwiT+Nsvlrgi+gCwECjSACcJiYPoswlwV7GXHlMYi6AQVGYWOaY + tnVzM5/O4f1FLFrdL+Y0LFCFaTXAJZWHDRSBISfsqcZ2Ojjff4YABEwi+tzGOWf9wTh1qi9bTLOK + oGYMtV4Trw8LH2hCPF1I1176zvuuSj8KWJ4BF/CXjt8tAU48Yp3/Rg2Y6W/iGu1g0/R/JVHRXfJt + Agts+bCYzUUNybeH62T5ZyoLpe4aACV1n3knEQNsGgshIoTRFcs8JNZcGsWlnBX9VWiFFBvRxNth + HDx+CzswEA+r+XoSKD00st1gdeyzzjuBALUXxkVxpI7YBRrQ/q8o8vjdWGwYe66w/ful74Z3TFPa + HfoT6NFJmY8xkknvPw7GKB8+YMxG3lh8haYremo4pJqpqzFB5DwsCqgVbVPvq70+8C7UxsKlB9uN + 4y4ebLzd0oMtJFc82HiVNpT3F5+qHuzACSsebMZD3EdH+DNUia0wnvACRiaKBIcTAAW6QhV2nzgs + vV9tahzNh8V7+j923T2s0m9gfdzhVyiwEXSB2eD/eyZzcc6jq3nF0asRlfEoZKcZYZp64H4nYCbn + rZ5qK2UP3sxlEZT2LePb7WTZ+k1lLP+C/wpM0et0c4eRUgSiEpYuiRFQTljTAcJr/nYkTDmUgWlL + Qurd9n6yzBEz3l9cwjycTrDccAvdep5k07vxxwcEkobvn61FAis08CuYwsnD+CpJbkF9LpBzRf55 + gFM59zNHTjigXiI3JHUsfqyszcTOzSaLL5M6or52pyRjWjBNCDqwvtvlPBAb7rsPF80vVVepxiUr + 7pntg0/XddVnKQKlVBMj8v3kFqMz2/v968jEghY7c0elYPWRvQn/Pp/QfOLsBXWkXzgp3xbEXgTW + sq5Y9bKhvioEg7yOifvH0UvH7VbHpB6yrWPKGzHqmNRVeczU0zaqRUxWVMJGW6K0yeGDwfc553Q4 + lOx/bsodBZ5yFPhB/BLxAjo4CugRW0eBbMBwFNA1GYshn8+UEFkMXEgd/tHqLq09Ov9TYVrs+BJ2 + ogfQRVo/5vtQdonETe7DtfAUSuT7hEz8abFWIi8qEntxrA86/lH+rZo7Y0U8Mp/ZyrcvSz+8re8H + pUgFPxZ7n8JAwgDCPtufi+VFYt9/WM9nYF0shsWpYL+NkGqN/n7OHc8+Vki3Wx2MpeTSwZiuyhL5 + kz8qB2PO/VKtEX819p2AxyMfeR1I9V4mJ39QqSaTJ97L6UP1xJvNN4I2Y4U5uQLnHPr+K5yuZKaV + 8dFmxpXDmo+zDMzegFWOs2WTzAwdVujlRkaxki4yP6si25bQHOWDaRSHTTE15oZR7Lj/GrwdX6ff + CohDzX9QFLqWU0dUThsZjUtJ+nb9oL/JkUkHh32c1XXyAIc3z8qEVdcTi2pIzsi8Y7oKoHpLvWsr + EpqCKz1RPHsRD8W2rsiA4VU+d6zYPLiAnFyT2A0dMo5sy87rztGOx8UrNy7K3Ydq27NPA9p4kNdm + wK9dbf/iIWv6ddWISb8ur5Ii+3j85j3q9NyPU4Mf2H6D0RKm9DDOZeyIDCoh4ceadj8Uw5qTxoFu + eIGxe60be7BW9pLeujJ79KmAgUKyRIRjsf9LgfVBte73k+Ut7BMgaP8DeKjIfFkHKGi63ZbMl1Wh + oOmqguZ5jaNWKnIOI69c5PwidCM4SY/gh6/YfEt1ZJJCfDS8EciWoJVKN8hCNfi4s9Hw7IzSSc7O + zpTdsrpmTsVwEbkSYiJDl5Yr1+phJ0I3aPJVh6HnRqzixW9tBF50iqRj9RAXgd9rWw2fFARWn1RY + YG2t1LM6RWaielMTO0uWGyuWnbL4XkugOwhslBhVyt0H9XN8eAw7jTO+hgWHk+P+Hqv90lI/l6f5 + QCy2gh/YDfqret6zKHknRKTne0QV2QYR2cFWOxBdIxCqt9NqtflKsb52Sz7rKDR0dwu1p+NzA8pO + f7MvKodY4rteaM+tuqtoi957OpjivTncqYTs9SXnzN7PQLdb7fdScmm/p6sSWOrN67KfgcUBZrXo + AXjv1ThAsFZnBOtCmHW43aO2yxUgnloe1tsvNQDep2yItz5X2FGz64OYH4oDfeS5blwDY9LwImpl + SQ/H6fYz9NbE9G34scllqO96DEEIq66Nhq+G+bx5WIx1V9fzhni95RcWcXrVpDq6lPIWAic29taP + Gk4LC33OMQNYjoo+gBgYb/qcizfvn5exQkTO7jD5ki62VAY2XzyMi+jM/Xaxmeewoar3c2NQz78a + 4DxUOyGchv2B/Azp1zM/1zip2bGugiwJ5/4wlRyKHf28/WCp94dz/mMz9KxkNJKX95aBJ9ZrVdQO + BWBl6PBAnusMyZR1Ma9BPnk8ZHjZ2fspmh/aVmMmdq+VPaIM7Y/TS+Z32EXpdqtdVEou7aJ0lXbR + 319fuJU0tjguIROEr8ZeEAcRG3kh95BeCXfR33OAZRG+viHNskmwQ0RVtTJjZC3t63Xir/BwMU3H + 0gjH3CTEmb5dT2aJLKPYqF8LRyyo+69JshSOTeFrmiP9NszM7WJ7Lx4j5yUuk8l6g4shQxbbu/n1 + fEOV4Zh9Mcww82mJOHpHQ6zH+AL9nOfSD2+2mUi0UkzHaPAVfyUT4PfrlbtvDt5JkTrHoTOd8n68 + benP+u03aqRENpqoVPfMkvbSo6bjcxSDaoDT7+CnHPo9R36AayTf4WPfJd6W70EAoMqBGkbNykPv + +YyYEebX6epucmuv7Dywtlw6MRdlo7P11p4xt8VBXDBcitRxzs3uHGIi8iLJNoflbkV6pcWOlWVn + g/RzlnOp8EkQfh8SwueuQWZJhd6Hij3cwyz3t9CRBIGcddjf6HZLgkAhuUIQiFdpfzs5f22iD8eh + 77tuVCYIHPuBG8beyAfbyXXbkXcWa5D/iMg7TwhXHWmz2QHAOwcloh601tQUZCozEHaul07cLTFQ + PmObF6iaMNIC5UWaUu8MpmwRrFeJgFr0z+4uvUUkGQ5UeVlEyL2nl6ivaXeUMekC/rAlyN2BCixW + MGLryfjxGkJKT1713B7DitR7qrOe85njB1W5GVYLK8n5d2Tz26WAk4bPqTv1mvvZU0eQPygPYEdQ + kVzFU+jQOzhljaep6D+VFdF9Foj+lE6Qd/ZM8zsAMgPhoCnPoR0y7fPd9pPfE1vM9/AAh1xSCzgB + 70ItgLdbUgsIyRVqAbxKe/vpyQevEvF1w1INFlILuLHv+O7IjWGTj0gTfzBpQtfLOWX2k5+grapn + fgMHGrC3VugKnKxv58tyvdbRcLLIUgESleD/pNCCvU7caSYWgg6CY8paIE+Vb/96B4cXUU6Ew1S8 + K9kjp9N7rxpsrvVQmYaJHze4WuPIC5lbQarWcjY/jiv91HBEBQuignFWwDrEHo+CoNJS8en2Dbl+ + 1GBnGY0UDAp1I1cCueBNoWrGA8d13XJqXw9oZxrSmahGKxMzFKPf8t4xr0R//wLzfSAWfG6ZBkEg + GVTF1lB9s/3T6q1lWrjvYTCEw7A6bq3vV7dDd0VXawTLCCgioBULHNBpT8Kr38UtX/8WBzv2+3Wd + O14xRBY61+ojDxa6iwdWnDsslbfdGx8oc0cxBZ0vJ9MnVt4euv/vm7Cu3l9yFtjn09HtVtaVlFyy + rugqWVdnH97wSh6/w0qYX86rF77vueg58f04kJhfZ7V1zkZEprrNrLMNbTNwBsN6Xn2HGemwdILC + gcCW4NR1j8CeqOEWClYX7sP4LWwdIi0eHt8ISEw4DWNL6MEsy1sn4jeSuNxCx6EKX4Bdr8ZYmFpn + 9zP+eH4frEVu4DU20ttit4krCl1ZzGFl7C04gbTVw1dzxcriBn+5AR3g9FamBON+LIvehfZuQRM4 + wKZglPRk9MQh4qgSzBjbztbJk8sN6OI16XXDxVWFj7QswscQ+H2yx3oKW+c+npiQ4VZwPTssm703 + d4SXV4EEp3FHR2/xkHUViGrErAKRVyXGy/0K5iZV4Q5Ofrs4O8udYOgTGxb0q6frlf8L/CcwZWPd + h8OjQU8lVo/rFCa0fDLlSfy+bBkhKbb6gK+lMd9JxK7XiZtl7f2NP9pP+wQoRDSPsVeemsVMPMBv + rFSDqolF+oEO9NHqAcu6WCm9UhlL1xUZ6h9mto1gj444LxfHvuAxOitHPPacH8Ie/e8FvPfX/zvs + 0QEvWJHDQMUMg7fBS9YFjUI9YhsxlA0YAUO6RhNmPb9RiGFgzMLwTxaDTbKAAVwnw0WyvN3cqegV + LANlIlzCUyj+4u+hG7x0mAgPgi0vdhJH0ofkYvZlDYhzVxQWHnfGh4+8KDdrpkWVBybFymmJZfWg + dof/TtEJdzuEPTN/aRvTCdqgKIx8Ct7D/dsw/ZKskU9Ig+dqFUZ9FgltJxBhRWntSBO6FzGBI/co + BQycf9l0smrmU9sLY+MRUKkC2oKK/ui8AXKv5usRci3BpLACetfWh+jk4tLFrk4g8qpIgrDsU3/S + S2pCSF4eXPNwmPM6wxaph2yVTd6IoW7UVVI4d3dK4Sis4ffeoPjn8M57yQbiP6hTvMAl69SlhKZi + 2Ao+ZsS8znQKZcu0d1eboLt4mJuxzMIoKEnpvEwjfaKaguw+5WdaoC3lWXYfe3htl/XaqgFUU0uL + ypM+njtxYB+cptutzD0puWTs0VVVjnwVvq6UI4vEP93UC16NPVEpM/LgJ5P+0wut8sTgvaXclGee + c/Vc8cqgzavKlZcwRWF9zIWlOCWr/HKVhcero3JG7q+bOcNippwpS+BHZghzl6yxzGguXQMg4s+H + +3Q6Xx4N7yaZnuyA7CSwKV+FwrD8bzARVjBTryLt1XLsEVUYnYU1NiWV/cNQ0vdVvqy98KmUBa0X + Pvl+jPajNfNVLbeWG7qNldF6A5U062afq8eqEdq/3qAPxCLIy4QdiRbjkpd1LYoqqc+6awnswtwh + 0oSnv48EKzXncU7UOvmE0eL73RxgnSTVqDwqRuaSiVMnzOq6ZfxYip1dZFltj3OkuFPNt2sS2xF2 + HZ8wSQro23I9YLcDD3foC8WLjdXryPm/E6xnIPWQkLBbfXXr/G6C27tP7cCxQnT04DTczR2bP2OL + 6aiaMEAd5UXaUI0qf6TNys/MekZtCXSACKPLgI6qMUR0jAN/8JT43u1Tdx+Z28XlPqHo5fUWB7LM + f2c6MXvkokO05hNywrKYACnUOWcPqj4ry9+6Y3vAiAidmkW5kwbe/g33k7/rnT1j2ewiuD+sOfuU + YvvM5yeVpRxRBdKvcDDrgEtFt1sdBKXk0kGQrsoKpN9Pq3k0ITom9XOg++oFD5nP3REPeeR75jmw + lusM7XLkkYUGhrP0nnhlsfYSe6ooeVOQB/eg/mC2zBeYAZGQqZj74Gu5t8SJ7WSb1KS89BUE6ISu + qVMah1HoO25/oYAf2dMDnCJ5LgpY0o9dYDroVF2lb6BqWTFaVpdgJndYVuJ2u2VFksvLSlylZfXu + w/sqzGxUYhDHZeXFccy9ke84oSfdK6X49Kp57EflE/S7ZMJWVHacTHBhrEExzkVfgWaUGKq5QSXv + wVUiaTxAmalwHBxJbm+TDCRPqnzSCTQGdlCR6Vs4EopAz/jLZLpFwM3hBqkNN0X87t39XRWpRjcT + Sl2gLQ8EJW6sKgeFGjnuo1UsFmFfExiXmdzmGsSueqHBX3hMBzjXc/0QupFlQkhd7OFHpWk84RyL + n8RCx5Evi9o1gntj7baErSIq/DoDE8e31/10u5Xul5JLup+uqjSKX6u6X1QI6rqfvXrBIjd2vRGL + CFZQN6myBHM8f9ncrRNBeDb8LADoj9SRWGaxVup4cgUnnbPYN0vyO31Gr2qK0AXrdHt7R6BUkijm + QTtlw+WLyZKtxlcLUDzj0+XMXQ0rziVCHFt/rupx2SSseSIXmWymOfj52+3ydv7c1Oeeieeh63Os + dOF+BXJz1d5JDRVYQdgErh5Hkc+9crVU7XfkQT4Tt91rwjYzP6Ek+wYOJ8KnZwyjWX9VgXBvf2kc + aeiFikvfiUublIbeXv+KqpO1KpzybDFjBkFjgVvtm5q+nQbUeVArTuN789gP4oAV1vETXzQDVAz5 + Run64UDOHVRw7bPtF5tUXBxj5WVWc8DqQRw7Xe+2DLmV/+oQea2bJi6HorPql09FYkOOkJhaVSdj + J4z+XlDxI6ryN6Zbx73XIySe2jm0c9d1JJeeUU+wF5taQE4RNexlbdxZmqdL26nsrabm4VIfL/Gm + EELZR8eidmIvDHaY3PjIQR/TI2uNB+cgigDmUeCDbDyX4NzPmdMBuIdut4NzJ8llOHdxVZaf/c97 + r5I+4SGXuonmPmY8iCOG9KqxAqb7UD4F6jwpwjFZwI+OhPmcrNUmc5Nu1znyJ7yETOA364uKYqWb + yQbGCjVvJna6yQL6Ev4kWlkkX5JFpoXbReUFdGEp1J58E84bfOaoemxEDKx0oSOmymK0P++81jN+ + 3elenEiM/f5KK2qHdeG5XgWVtkmQUxI00u0y34E7wqqroOLQ1YQKt2/T2xkCcytnMV/BH5vgZAPe + BGXXIC53W9+l90kKG3mVpSfiJXtpVPeWg7/4JBzgAs1TO7yADWR/o6IxB6Vrxbzw4v2SO5nrx8TS + dHjaTooe3AuVx3d2cB9OCZUqH+VlV7HDXzp+t6or+Yxt0ZVqwqi5khdp05jP7iShxzxLp/PNugYI + FkldnufpIHxgf+ftYssx7RXBPwYS5llSxcE+ur5Ovz3kJasNKfFN6fTdJe0oDpXWQPFtFhWejS/n + kwFeFOHb1a82wk88taLTnwe6wq4Mr0cCZ1dWi1zuHYb3JO3GrnXWGYu5B8ntyrXPmlk4AhL5eYO0 + EZ0tb4cpsbyfvB//9p5IJdEomKXLdJ2NkJEKhx5+XMBUhGemyQrj/11dyYcTP6mDR1+Bel8SSLle + 1OHEIW63JJASkisEUnhVepV//1Q9ccS8wh81jqMgir1RHEVhKFmDQYEtEH+1gJdN1vcJAY8jNNJ0 + shJbskqywoCNKGlaTMShWBTmLR6m8O+cbGK7qZr3ZWpHMw86CppsZ9DhnhNVjHHdb6ReuM63y3zX + b/Qhcyd0nSgsy14m2w3qJq2N/NOTdUMzLGwM+RufkNvrba2YoiOnkfpTiUY/50LQu8vOGJmhwLv5 + 7d14cnMzXwqbOW8HGUToSYmElf+J/KEbWPRTdYuIFaYw9H/C7jnDScPHas9HFfbs+M+T50dDMRvN + XB8D1kJ4/e5hMU3GyLS4FOZyNsDHcqs8ComNwqcyOPUCB+67KI/r8mzSEIpzywoOK8laK0w/tLCd + EtdqJ0A3FY1TRPjp2uaUjWEAkrin91DHx+MgJPgxGmD8o9jgKWW/wR6s9PDgSYQvB7SsWd0Y5aJq + FUPHwQPV0TZ4HduqHVVGcOjnY2NcO0quSeHvt4EGntRI40ll7KUTdaRJFc/Ys6RSEyWSVHGRdkxo + ErRsuqwFRtVzrutuPL6bsBq+VGqT+24cOQGd0Dw/1N3FN+niwPzGIPZlUKPAxIcH9iNf3UfoIeg5 + 9mnNB8dcOhK6soBUxHE/YLlg4pK3pnWa7d0/e4pvz8B2yJC+SyabYXaXTj/vduHbvq/PHDoSFu+7 + n5UeKh3iB2/5S+Z10iHyGVsdopowdIi8SDqkUnE2Kh2jzz3PUBPmXyuP576ehecN7tcr/OG6AXN9 + pU0sas7sUc19IqcwX6p7PVsHJ8YOTwSZdeb7LDALrb6Oal/dclCpV291WYdWVO38XrVmIlXkH4dh + VzQResS2wF82YJT30zUZFzu7GH6doPUALS+XyWJQvaLJwQnqOqwP/Cnfh/NV/nzVoNnP0/V9zVvb + Cd6T1QzznPlGl+9tHHMekRm0jzlpPc/j/5flcBbxawZq2u0GZyEfsoazUI2YcBbyKvl0puk3Jnzh + IiagBeDQMBHgCHB8JQdyZlTe6rsGsUPVP5InECkldCJaZOWdqLrXXGb3omj3l+Ee8rmlfIcLHKDX + LDyFXnHYVDQoLkWnvoIGikTx7C9DOADzOIjt97r24iLf9ZVROxfMGA+oZTRFffaPFkyPfvfR3fW+ + VmLaa1+fRDih7ivmoNo71/QVIr8vuHaHQ0pQ860thd8/xGB5Aj6Yvk2n/MjiksMMK5zmywyrfNOO + M6+Osa4HsXakMr5Dh6J0BYeinuofuwhtV5+McjxhG7yzxSe3r9LcQ/h3Aj+PHVlfwPyoS30B3m5Z + XyAkV+oL8CpZDa8/XtbUF5She9irF17AYav3wDj22ynj5guQ/rUSzqFan6Q5eR/3pcawxU9AH8c8 + TqkS+B1DYessbycL4ilUX2+jFJ6AFlU5LzHLHalg9IKp2RFqWD5k7UpVjZi+VHmVph10KdaBZ8ZS + HkwWq7vJmI34uP7vhnQBNiwPezEnV5Q+WEXVWhs+ja0C8jjjRh6v5q4vXnZfD0uXIjdrlfkfcOO+ + C+/+yuDGOAUjQTb2y7B29fWwi/eYPw6iNA9BSdQov4qs6SJPAT+GslM6D01IjC4WDd0l3/Zux0WI + AHxkhxLswfERc+X2cNk7/yULuqF4qods3R55I4bbQ10lA2a2upconjOMy9+li3HB2nGPnVXqhWcF + f4I8Lz0fWD5aeXL4Blof4CsIDyLj0oPoRUYoTtP4H8eL+fJzMsun1oGudWiLAqk1bf3We1u+Q9SU + F2cwDafoELBLj7Q7o+xLJPqX2GesusjzKV+c5uuDPl+vYf2M34zrpm0Ph6i+G/5OtUKPr+uVYnRz + DLh3breEA/WINQIcNWACwIlrpBBX2WepEKkerShHM2vpBpVytVKt3QUIGqA0kWbgxZ7UbfvXY3ZQ + ao9V9MkohaojxXHXEP9ftgzSXmHs0dTueplHrrj0AtpLMe+sFoXo0IJOi1rMDt63v0xlp1KinmQv + 4cyzd4fR7ZbMJUJyhbcEr5LyfP/fn6KKO4x7YZW0JIiicMQjPw524pcR9I6JKywMfjMuSYVvsjyu + jTVukX6VpW7Y2u1iO0VRmFdtUMFhCm/NfeSme/9tE/WVch3FcDAI3bJz7gYnb/kja+E0fNc3YZgK + 1mSG7G9e7NTQJk9tZfsdZZMps1s288HYs5KdOxrLw25iyAXezldtQ297UvNsgEtJ+Ubd0Hf6oPaC + HiIFjUnkWP6CBugBwoQtUBmTipjmPNbuyR6NmcNPw5HTXyYGrjzxRtn2drJ+pYqVhtnD/cFyxSQw + 9UtvqclCYwhflq5iesx89slbY2iZ3sRzHsWy168zUSg2NnGJ+0hEV/s1FTK9ufSc2H6/ptut9msp + ubRf01Xar6/O/qcSvkL6UWO/doNXL9D5j9S9DLYqphKzryaEhXd/9j8vhyfpckNwl1/TISlWZfbd + gwl/A9r76vhi+ExD6X0unv5w9j/jG/gtWR9pEJaL+efiRLWY36JZxOTmezX/swp1lSUrRFxZV7BB + Y89pCosxPwphWyhvYFe/f/hNtVm7ccVh1FjjxPwwZCw4XCaiBWjwhca7VpChsu19WgMFxYKYl0Gr + DAwCJXWA7/fL1f3GVS8pUEslyjbVJk02m8n07l6mO2KLw2f4BAwFZVIUo7dOFoIm8j6dIQ3d+jmq + U8X1cCTGPxv+fj2N5QSaPBBAKg0i3KEWHYh9MCur9C/F16AnMFHry/xLeqRAGOFuyfmrTYwBzne1 + qfKIhY8Nn5qfmx1fJoGvFclOBttMctsNJ0kMp3GA0zpjpxBiOYoL+qvJetiVPevHMj/ElCaWwz1c + b2fDZTL93FmO5FfQVMZOn4QrK63Ep6uK+z3zNXoBvmZBRKf5slbpJiWWDtdaBWUzKTpKaJjafVUH + x6Lu4I/Xl5x1wCOi2602VSm5tKnSVdpUjz+cljdVFgdIDqZvqt6rceAFoIBHgRc6kcQjgo5Np0Sx + K04jgqxzs73eLhICbMnJHeVeeHyfVPfCk98+HOeJWkYGBui8xhyRwHXjkFcgfRC+TiRUrc0TrQPd + 3VVWtoIxXSSIU58Mr9NZ6awZMUPix2PtjBw7cIJ7rAQWrZt/0b9XNxDNo6ZTRlg0Nmv1/YPTfLh0 + sblfdtdol/trnmRHVdYnXTTYrWM18mIaPDvZ3LB4NRr+9nnF4MeH6T3Hn2LiPEfepyLVWTU3vQOl + ukrh63XKzwFObLV7Oh4TFcOHsnuCgIAgKOYNQH87HNI8IK0x3+NpHEZ8pGTZyF4wRgOMCb2bbRSj + z6SDUPTNbI66olOpDq4w6WDs1DA+KDML0YxBP4NmeLRKa+0u1B74iKFevofdEBEgRlV7/LIzz1pt + C0Tz9/6Sxdz+rEW3W20LUnJpW6Crkt3h09uKb5TFUQmK2Hn1wouCiHsjLwoDrMZvSxa8W4P8arJg + YWAZWhDMr585QZC7RKG0X6D7KTiI1GQUjFd/vDsH1Wc/Gel2q8koJZcmI12lyfjx4o/KwZ+5JcxE + N371wg0RIWrkhiH3pav+4/Gb99DDKoQtkkJWD/AixYXno6FwWC0e/pSHR/2GZIiJFZNbARcnpJFT + lM6MRdAvK05zQgFjPeq3OSoxRRL5cfVQtX66z34WM4+HQcVcKRosiQqbRblg01VpDxBeqNRnte52 + mGTN3gpddL60RP81gRqGbmNKsJI2eArDOcD5mHu7HZfASELaNIwvbDmBVyDs902Ioc1TG/ydTeGw + yVdtHGa7nXsfQe2bdo8QX31A6rIgpBeiGbX/l/WCTUUa2XWcPFGbOf5Lh3dM1JYPWSdqq0bMRG15 + lTT04iGTtevIca9Qy0SyGC3Roupw5w0oi8AumK/gCMVmho7wde5Lgyem23WWrvPVtlGnTrjttjNl + WD/gfWClkxwti8Uuba5VaiwjT0jGsrTFKdzhSaH3LMMyHvj9YCNSxKPtTb8g9g/2zwSUhmrYyiPY + I8GhXVFi3/L6RRdxJR5Tkau6bzKMR5q8dnHug2C4l7jvBSoexFoNcHui4GSaJwmO9F/wtPolWW+E + KwLMg8niM/wNQQ7l0x1VOstLzOFAhfXLnSrM6RnrAnPZhFlfThdJiRebVLYly2KWwOTLcLxRWx+/ + dQLMA3luopDYPmW8hSjUjgJZTUX4rjpe0DoRQwMr8NuDCCljsCUxl36RwadmIHPp/ASGnhYhsZE7 + 24qBRx/EUp0DySkyuT0QYilyZLQ27512bVv9rM4idhsmrk883XmcYm+wJuVJ+g9+bds20UVsY+d4 + YeSV5kGx0PrI6NxP/vfDne1qT3dAwHpqGLKgE4UH5uKce6F9lIhut/LASMklDwxdlayUx+cVDFkf + mjHdgdGrccQD7o8ij6lUySZn4GoB0qd9OwM1ScpENOQEzS6Gn8CpGLAgGjweOfih4fAGVbxXFH2g + 5r6rDCPO3zMHTpydLCP1kK1plDdi2Ebqqjzh6jNaOhcGCK+VrDEyRcXF+R8MqQiyH8bu4IBB7HRE + UJ3oydwt7gf2CoRut8zdEpIruVt4VcUTjqu5W17Ay7lb4ziIGGiQOIhFNQR2+AmebnCrOB4Nr8Fs + +wxGGq6bPMsw36PmBDKeO8OKrfUmXd+TRYVG/PgkPc6hiJ5dpN/Y6rky/ArSEap2KqwYSRy9mVS9 + uDUtmvrLJFdBvpaSnpmqj6znIHTioFZArl+kFUvOzHrLtsnvGplMeSh78ET6fIDzJs+BCgLvkFNC + 65GVuZIhrvOBodJES7op9jXZQNajtR/6dEzEbvr7y06Flvax6j0eel7uCTVmgEW+WY0qO0zg471q + W/53Twebw3Gndjv9d9WtckOA5QsMpCrKfU578OjZP97usbKX07IevYDO03KCHFTvReXS8zWWVvzg + oEWfJy2OFR1iNSX3e1Y29nYQ8lXgg7NuPjL5hG3Ig8Qb8Q5xSS+1Ha/n07vczKtLmPowz1g4uBf/ + FXC7PBz0lIXUS4LugdlMEXOM+kyDUL7DInSZQzUYRXrvOrlPZ8lCOGA30E9LeIn7pC4FqImj1XMi + sdFiAv86WYHGF+81hmmXb+4U7BXdl8M1VprbWad6UOJUIYMUsj6N7Dh8ZeqVb86HUfEVApLgtrsD + bP+0rO+Y5NXXQbg9L6unE3RAEEDah3dzeTGZ+w96JRhfze89Pa1tB3rnIduK0r6Bgj1gcDTrSIpX + PGQLfZA3YoAfqKukiTcP6xTDjOMN8njJbG49JLHzBqMlDDrz3nBiQQIhAmHTFO6cqvIHrA1RY3FI + C7Qzi6+EE1ZdS7rEmnhCRwk7XfY/L1NDfzAOESsyAMTJV598+5q7kcvygSpP6D4c/vvJPxwC4RGL + RpTeCgu9dcxYN3aH4iF7vSUbKektukresOzmjlWxuw1WLMS+LvjldZV1eXWSK34FTXWFAvWbsAWh + z5gnoVxcN2o0sjqqHdcvIvE5i1dnGRJEO/9GxSGnJI7QeNN8MR2njh+UvpfK+6Z7KFqXw96Nj5jV + tfmnCwG4XlbpAuaHyCc4O1P1iGYqQEUHe67jqWWifa3dOFnyZvIo12yqjG4PA6TV/qnuLU8zSNHf + plHMtEhsHPq63LnbuAHZw2/a+EettbcbOjUr8gZhAfeuvAeZnjHnqxO8z+b6cHz0VKvoub4EjpL9 + X1TVtw5X6yaUs6V47+KXLOyGpSifsY1iqSaMIJa8SBvQ/XqVSWhnW+6gzLemGbryB6IBgZPoO17/ + JEOHm+f90hQFnHipl+IYJhNpOuuuH5vv8jOQDvTMknQoB/Sj8iz10UirSqLCnreXDu8QFabbraLC + UnIpKkxXJQLX2RU3osLMc1nke2ZeiRu9GnOc5MGIOwH3dmDS36yhgZrMErksi2u1CRgRzIq6RI6n + mRHCYs7hFzmijCgGPpw7YYdSLbrdakSl5NKI0lVJMXD6yS/H+WE7LVEM+K9eMMaiwB8xxl1Plg68 + Tjb+6hcWfX5jVg1/ujy+uJCjK+4pDy3doHWaiwPZyIocgpXAHi3R5/QSg62E810P/RVEkflyHy4q + Lzc4KddN00c+K0QqxbearGENLJLnSgWOhl/vRGxiMXnAigitDH+NxagyYv8lyebig7XXJKVRi2ar + PmqAQ6zmn+d7vA+sL+wSfETvPPF+i2R8D4daUZz1o4Q34pvA6sO7D35R8p31CUvcA9g87NQyrjHP + xiRpmWy+puuOACZiLeIjNIGtT0i+Q6N2OcmGt9vJ8mEx1lxzyTck9rtNdp866o5sISPr8XJy3Zts + pYNFJv8fJ+fQzD/Hr621sHrASg/n0kuaWF0nXXx5WqJ7YS7jMfPNIm5XKGM3DMIRVnRz1rC7orLa + ID4S4QCm97h7PbwcXiXJ8O3p66vheYIpKNnw/4MPcv419KLwlcvGbvBSbczTBbT3dXz9f2NrDv04 + OCyQYJUk2Jo9yShz+C1MC7eDiSdutzPxSHLZxBNXaRJ+uHrv1Zh4rGriMdfzWTDCwm5fZv7N5nDy + XmYirIUhExnNnczXIxNn62YLx5QClhJW5RwHDqZuvpgJoQRDjF/mk+v5QixoMTE/ZHdeZU7WOMvM + 0mfeaGCAfeOFPitPTt13oItCV5AhSsdR00UVADDJPN2I/QFeGERWkNScEJZ6k4mhZObooroPulZ0 + qbOX6RrPgkV3T9dpluFnpV8SGJlpWlROC6SY/5mv+Ar3XhjPKWxqOJjTOVZLqeaKXs5GwzvQ+Eq/ + 4FPXoIATcRz9sN1c5SkXOLNyOziKmVhsPCa8xTmcXDdgA9Fs6bjzHYbTgn1Pru18EtYP2E5Do6vz + 9tFCWlbeysMltLn2evEPHhyRgkNz5OoTDB7a2yfIXJXO5L0NOvNtyWdsU5pUE0ZSk7xIyvafb3C1 + JJP8ZDHIr/zy+rcL9vGTltReCESCLTCwZZApEP27Fr5iUlfd3a+cU0Va7tY4iJnrx9VLFNiF6cKy + UQ9Oy0ZSVUevlppZKuGf8Q7g6nS7ZcK/kFxJ+MertO+fffyNVxL+XR5XwFpDsapGcOrluLTaPDuz + NcivARD6K5qP3HeZ5tnJ0Xe7AAXS7bbouzVAgXSVBvTN2w916LuVAR3DGcN1/RDRdz2R1tYypG9u + 7qvFFPVH4FI9hfvz1XGdXmp4r7NkvVDIwQZIu2GOwSMyWR/NVzCKkjTbTEARHoEVtindevxGKEGF + BY19B1pEHDtSCnsf5ZuitMxO3px4EYL0STjkm3S7LkFHz9J78Sd8AURLvnoPe2f6LckGOCM0fNpY + 7AAx5QYcWkTsgip0yWkz1oAHO0DctiScHiy7KevUiSnpoH4Gb5c36WKmtZR3ks3L7+Ekeqr0V7ug + y54G8pnLAjNxyAn3SBxywm6JQ9BITeIQci+jGi3KDNUcena9TiezAr1gDqttfr3F73g+IJToZbos + DH/13En6v8wZTMV/MU/IpdJSz3dpbRhwAPP1vvHaJ1HJvw91fIdExb6Z6fddAjh8kUMdVjPy3T9R + rQNCKf71EtS7vfFBt1sZH1Jyyfigq9KLdHlxzlzD/HBDN+BBWIosua/Gng/PBSP4ESlEyg87Ehdk + iAW++jZRMe6R2GGL0Al6PlpyBciTtF4tmFsxaMzHqJVqTN00cIJKwag0cGIP1mgQle0bi+iw4XQK + Xd+mgQp2fw7ohKcxI6rlsV2vPHj0cRjQRMndQiHDitGOuR4lPrgfrb0CXn31pjlk91pPKQVj/9yG + uuBLpHbsgPOu+zU9YrtbywaMvZquSdc1aOB0mw3UT+0ZUWYQBhIF4GCT7ilZTLFEKnF4B5IYut0S + qURIriCV4FVJEvP7P9wKUonwoZpIJS+82PcdPvLiMGQyo2S13VCBtJmKe5dg+Vim2NSutl92qfha + CAC/kYWFexy9gRUIE1NvlABRmqRFPjL3VihdzE9C/1z+WQ2IA04jVIrxvvkOgTLV2akMMeA5rCRs + pIcklMBB81uOqkjyZp/PcPLOZDnfIgWDR5xw8cbLj/iZb7IMfQ14wbhXnQCz4oFc6Qi+FwrrZ0PQ + T0uMcGD7Ezipr/EMCLvRdin7ANYIvDKsdZiDagvyY8mG5lE0Xe+lbvCwPw8aVv1b9AJ81WdIoy+G + lMPzCHGxybjEzkVq1dueSznpFo8/dgnPoQC6cmvhTsFGf9y1+rB4yJ6N/rhSfVhclUnUcwV6O5nd + YU04HKfRLsZS6MmMcE1EAskHuBHrwD0Bdhj4VAbuOISxdjVcCVxM0Cq4OEQ4tKUyvLmY+3BuC2Fp + gmGPRSuqAGU2pK/qVtSN0jy13vGWDlKbvrBHAozGsnFGY7JKs7mwBMz6JI1fRB+uA75N0lxRYXBe + G70j2FuttQERZpRYTsTeeC+eRnmPRQX1waBZaipwRjwe5TXd2KW1eMUeJbH9ADAQpTcpH+343Anc + k/GxtVGuHrAyy3PpJcNcXZem+elvZgTJdWGfCrEQUA8hua/GnLtxOOI8iORp6sxIPtNxj9bpzZyA + IgQ1H9hS6AoV0Aebtcrw+WOygBeZjif/J2KHPIrQBaIOZZyrNAP3dfySBd3SDOQztmkGqgkjzUBe + pFmw3K4Yl3456T5Ice/U/j38KO4Z0K0iw8B3JBa85whzQmQYwDzIk5YbNUrTbnJwynLM3MISzSsO + VXGokrgbVaI/usXQpb1r8fDs+PmL4f2hfeQyJ2L6tiLS5/QQg7UoW5SUvUDfdxWt+vo3JMsvySJd + 2W4dkoTa6IGDntw5IbDXiVYDpr8TjlngdNrHkb/P+OJmZ07llNnHhlMgdr7rWm2fP2ON1/muUmuf + XyR1s5ncMCZzms161fkSTLxJXenqoLaw9dPbs7M3lcr7T0L+gJoRAJ+Rp5Khnn6ZPGZshdWX1Ltm + bV/b3mNC1o4lTeX4FsO03+s9HfpUtagooev00vG8LlacesDKisull6w4dV2G4k7PKlDQToTHJt2I + C8GIcyPPj0doyoUyseutNI0EAzKoJkGXbKTEUhgtmVcTsp+cpaaSejH/c5ZuQaOPMfEGzNBrBEwV + 8KeVzGyPMzdqCpM5CD/kHZzsvVMkGic5skgGR87tEEbmdv7crKHzTNBtTWzkx5GDRNwfKEO6KJBf + 1eSUG29+ZOaS60bPw3KyEqlNxh0gUWFsgurD3H3YOkUifzbAuViUQvoeqV2mIb+15ls/kSTw3RYB + QhII14w2cPD928UGNcl8qc019E0XyRtZvb2yK/NKbAmTbJrS84V0m7cVU1z1nN0CaRW7l4ukZw9E + fpZSCJQX0evwJY+7HKXkI5YnKdWAfpCS12SwarKejAXG1HWy/DNtpNOyvU9rE60YN+JkxcC/sZNu + F2CZ3yOl08EMWX0xbTGfzjvmBxbb9Q6OrKpLK3Z86a05lF7LCzyJsFv/chbfbpuA5AWBLxTVTbqw + /vYDi85+CHLP04WO64+GS/rw4Qh8B4pyvnhaxFksiCg5MP2WjnGijRcPh9BwRZS34NECGXtwikm/ + PaDLXlTXWH26bRIbF8mcf7y+ZNy3T2Kj262sZym5ZDvTVbKcLz6dlC1nOKo7JRpb79XYi0Lm+yMv + gu6WNCoXGremcKt8+poOT6S9fLGZ1tjLfdEq5zgD5VfgJ7WpA8wH66cS7b/KjUeGleWOw/tzfJ7o + zjf5ZjVvfaTXME8ysJPu5rd342m6egCtJXLvs+1KuJbTtUoyKPToIoG5KMpGycZaXrPh/eozk7bN + cAaTnSxcTBLQfNSzZAr2TgbzTLSXZnACIYUFR8HtFF7mfXrLVvJV07UC3kRL6TPYidr8H+Acylnt + XU459x4dMdUna9STs6QstMMusB/jSyQpXHNQKIGW/QsotAQaAftBn0fdM8b6ZIjtT2+HlEIlO7tu + xewvmVv3ZsccgX5EP270Pz+UPD1aLh6quEoUhS9ZNzh6esQ2qiIbMIIqdE06NoWDLku2oIrW89nD + otHKb7/zYptx8/AAF8RxgLvE0Ai2O02aXATOlCIjuKMJ75A9sTmkXtRljMWFFNsX+4GFo/aW7H6H + Vdoliz75IZ7L/FAVR00zpifs4r1b2GHr0vFS8KscxDbbk7rJESRdz+2MICmfsU5/kk2Y2U90cWe1 + uLoyGt5tQV8P//nmEmYSFTka0jEtHzQLZUMxV/RSksFrLOZZnt+TJ9nIPB84HMBfDqhH6qnGmsd5 + dZjL+UvWiYW9eMi6Okw1YlaHyat0wLjeXhsUJdpWLj+VzMlBdas3/j58DYIGKA1z1aNQ6v7Ao+rG + GjtzPytTLeDvToiyKw/uAFaU0ImNvDftm9QMzok9pnfJ9PMqnddF7RrT/JjEpp3fLlUNSzcOqsJ/ + 1g9/S595eS3kW4wRgojyKveSpngQeYukXnkMXhMQG5lia/zdnUlYvqNfr19GhSA0TiqlQ3F3aca8 + ryjDGvG7s3j2kfq9UgELIQdnc8vlctDH9OGRlJuw6yi0PY/bFxzR7bZIeyi5irMHV6VX781ZCWXP + cSNXVDuUUPZ8rLwb+bBB7MA5mS5AfA3OSWePHouZx8NKLdATylXEFNlwsIe7SZlhLlOncBacxi9Z + p5Ccesb2HK6aMA7i8qJZ9qcZoqu7ydJ4Guv/wjA+hAV4TzLmfciDXcIQPL/0HNd+idHtVktMSi4t + MboqE4ffXlSgZ1wREtdr+rxXL2Lu+0EwwupKpjKHl3fz6/kmK/Lw6sydr3fIErpOsMgY4+n3GFqH + QwFswCvB8UqVfzerKlqNDc+4npERYT2iU16S7VQKZuV2la43r6Nzotjz4tIyNZPHhKWTzf9MSmkz + QdlnX5E6+FT3knDI3ggAmXW6yPTUbFEvsXyohfESP4c6BApYhsvtRpztCGuGUGNG6u3h9nf8lw/U + UXNKIpLswTWmNgoQaXGT+wkWSstWRkZeStET9+lM9tAA51qObuzGPqWUUI2uDetLW2pcmw0N/Y8P + NI1VB1nd8NPqE257oDP4EeUhlactOP06bjtOL2iI+/G1tMwfa4kWPfKEmFh68p25LtWlX8I20aEu + XdxuV5dOkst16eKqNBPPrip7mO+GrFKXHvouj8NR6HtcAeM32YmrNTxStRP/qvhpuc2IQA89gSf8 + Bw/L3uPpejn9cvSWv3TcbgTM9Iw1BbNswiRhpou0olarufR24p6fru6wDmyg/Vvh6q0S0Iazh8UY + JtziYSEA7YWe1Hz7Jw8rDs+uRLTLKUhAfSOWjfht9srnMc37nhOYQiozsOmpHx1O4Zx2X3rXri4l + NZV9eahhjtPlUIO3Wx5qhOTKoQav0vQ9vXzHw8qphpUQUvFUg1XJjI1cj0e+3BHc8edEICsmMFCg + YyTF+0imMiDyNgEpZRItY50kePcqK5Kr4XmkFvySCFjHk7GHu+wdjPrtOt3CjaITJ0va3SUIhsjb + X9+msmEdDOpImpJgva8T9WaT7bcUxmB1p45Qp+tbHva8YzEexo7nV+BTdqjhkvhmdBbGYjeqOFEa + hqD+0IZwro2UL77rx2EZb6uhl01YlSAOdkkd/HxTZSCWRn4Ic2ICUJHF3+L2w3JclZ7E/hP7dc1r + tkptRCjoK7U5oBqGxXzVy5eCSc9E56Xf5jNVPtAtakTmFuWCmxgu6XbTCnXYg9X1VA23hvfq3QiE + HZ2o32lCKManjlswl/zx9+kyXUwekvU4265hAS8Rk5YkZ3BcRIfJdTrrvMHvDVoptCPevlOlWi/E + 3jL7fiCAQ96xXszU2k1tOqVVEyCgYNHXY6VN95arDKrg/2XqdHDxiV+ylw7vdDxQD9meD/JGjAOC + ukpW0p1+blZpKiXPvOiXqrf++IQzLgTBn432EMLHEZW9vwz9yOGRGxziyf95+I7zYyDBwb47d1gH + lkG63cp2lpJLtjNdJdv5+NNpxZnCPF7KpI9fvfD8OPLDkRcwF3NXcFIcr2/nSPiFmXFjtTC1SKRu + GK3ALBhrMKEET/nv7W1Ra4fSMLwLegvNKMqJQSsILosbplM4qKR53CGT5Hxo+Www6pBtr/+NfYz0 + OAKWjmR/mU+EwI9j2EiG6y1o+9Vkc/d1ojBNjjdJNRhhFyLUQgacRT73KmiyE+qk2gCtiRLoW0mu + wMgaZOwmVGDQHDrx4QBUhh0kpOPNfKnVwJeh3MtwhLAR7njrwU8/TQa4SHJ4fug7mcJlZCkYw6CZ + lru9xIE0Jmy6f0+rlQV+bCac0Zg0ZCjVc7N3kXBIKUR3Pd1e8YorC+9qW4lWO8xegtpPJx5ZNZNp + H+L6zAaJFNYV8+xrvOh2W5wrlFxFuYKrMlT9x8fI2Jl46AWxW84GcZEmJeK+jywpDpf2yulyJvGc + rz4eX56CUbYgPtF0eD+5h+tzsFfwKDj5BnM5UlHph2VU61GpgH6D6deEPcC457vM98obAbzIBVas + k3Kq3QPARG5BitWk5iq7iRaXOSVvxkjnwlOyBh27aYBjkqebwDGoH8Lanc834TT5DkEDGJtKZ7bY + gmikO4R37eM7VT5zJJFr/tTPG9GQ0xZvb5jhrbpV6ZtYeZG9TqkxeLutF9mrS43BqzKs+PunamoM + w6BpyYns8dB1nZHHY1eB6jWFFRdrkN9H+tlPEEr0QBfvk3526AlMbPE+00A7D0ho9VnucTpQVm9w + vV4O18v5e+Z0LI/QnrJGAsubMbHA1GVaLrczFTN89+ki/7qJAf717s0FYtwRKjh2zZxSyOCed/i4 + Xh+H8kR9XMgpi/HQfSXkZKBnsI0thvIlc2LxXUn/FUiLgzebfF7swXVuW8Dluj4lLBmcQzvZwzQQ + 0AkyT+cRQtehOWzmUukDbj+dhXsyJvSd68kaph58C2wV9l7q75CpiQ/AS+JdyGgOE3jcMIF7qLY7 + uKV2y8ShkEzj8uyohpjcoXnUgZCCbrfcoYXkyg6NV0nlvPv9bXWHdtECKu3QISzWmI1CFjo8quMt + kn0Cc1ltc2r/HKlxwgVz+hIZmOfQL+lSeiAoD2wsrFCQMi6TgZ0nq2ORMwmPn/+Kxb4vGXXuyQSs + 1/Xd5HoGZ/wM+/oW0wHIUni3vam6oPYirWgyFcqL1kiEjbl57rjS8Ml8N3TKnqID7AVzICRrgXw5 + kQBbZpEwQ2QqEzM7Gs7vUVniwQDBzXQKIozDwJXkfgVnYFh9lMWqkmKlHjyCxh+Gd5Mv8Nch7NAi + zGq6nm7gvRGm4kifFAWHthjrytwY4DTNjSIeOYILLuSUalGPht7KaF+bV3oIicXhBBRBTfDSjl6o + X+aJmGJTOzekuq+wfngXrYMvpeyZmOk6lCKs5Rg3iKk5N3lUUvDrOYuYvVam2+0I5UhymVBOXJXn + pstqOiYPsPDTZJN7wZzQ5WzEsMpRJt/4Y1nuOhZf/7AYs2eTxepu8ny8esAMBoLNyLFjJuXE82IK + jYZ382wjCtZHpIDXD3AOFYEpM2MCmfwE7swNLURyeSTLP6EnspHmLRZTAotMh9B0Ar2KpQz3sPan + qtA5r2e4WGf7hhAsdLfonGRcdMdsLvutXD1mRBRCL27yUcHBn3Ne9ib9DVbiMv2S/g09Ri3JMiza + WzAMK6hSASuAE6ylEe40xUMaGsnHv1mow5wmrr4GoSssjEg0hrYM1VU2WXzB4L7ZK0HQTXbDDC29 + cSN9YS51sNcyUu1h2OXi8uJCzfy5lq2EG+sBS6yPBTZA/ZIjkwYBIZM65DfPP5xWyJCN1crAr7XL + 9mkpBeizmab8iliSY2iz69Ccp5gRjGFp0mKySte33tGOho6u9vFDpbpguwupoP5uJwuytEX1zlc8 + x6drsJobS+tbkj88jxfQCOJofCi04/d3c/WJ2IW7Q252FAhVLXvLd5ffsjL7SQd6KiXYaor2VKPj + UY3Om3PGXPvgHd1uZRRKySWjkK6qtJJ3gpnExDZ3YvOs7gavxtwPAtcdcR9OmpI88iIndde2ocI7 + hrYbBv0pbV3UCg6fnU9W3uo55tym21uiHsxX2HiTjr9Mpls8422Q7lVgPcvg/pHo4yyfoJi0D8Lh + mJYuxm5hc5l2p1HyiuWZMmqSqbSE1TqZbMXeeCus+hEc/TaSd/dkNuXRCvMQEMR5k+RpKLfcqToB + apKsRdzHsCH14J7jRZxVwo8qAZbmk1GwyksZ2+VooS4wN17U15k2ZxCz5ghmrRy5guUA4RE7HyEz + QZuX075rX3JwBVMEH14m34q6FezEZF2aULunyLOTL5vnebIQWjz4YJIHTTNq62h4JzAwL+7Sb8O7 + 9B59Iw/DWYocZ+TTsJtiR7mSkq6Pq+U3RCNtnjkDsc7y1BQesl4856xwIqMhdr9dqsSWbqqxN5c5 + dwlAfjJdp8XEs7Wx4DxKaNQn//hUpH7ZPux5lPhCJAt5xBbW+bt0cTtv+6iaDUxs4y5VmK7A0oXm + yoFXTZ2AmEk1NtFoWziS0gmUz1jXPjhVpSPaOvX60DSdXVH1BsfSAbH4Hx1V70T78+jJzsIJI4TU + aJ2hpnXs/E1KKjrWC6kpCdy7eMzzpPsKlFYX9xXebum+EpIr7iu8SpYKstx7xxUHVuRVHVgeJs3E + I88FdSRxZz6OKfMQjiawQUyTzQMddnVAPINpmejmnwXO1fMq6fwIdi2hZQhdeUqK4XK1YN7rldh/ + cKPRAklYTQTbC3yBJky2fTRc44OT4TS78xWy8nILKl1quuSbxPMoTkHZIv2KlUhfYfMho0Q0XkP2 + R9E0eIQ+qPIpig3ldPsZRmTy3HSBRV6TUyP2/divJk/p2JsmhAdvKmbD9GrmhmVJWkRumi6zzXyz + lcOTO2DNBtwmj5HxqpW03GbHlscqHz/4686jAS2w3IPjRRJpm/HcRtkL6rBBQnsuaC94HAeXCtCB + sTlg0vY4qHWKOOxegq29oRS64/P8nC6JI/cD83Qs6btrYzGhZOXZvTi79XU3wc29pfYrX+XisLf+ + S+Z0SsShR2yzcGQDRgoOXZNsfPMbsQByNr6FyhsocfENmqnQR8Pk7K13rFy0eruYiRM4krjGpUya + 9S5saevMB2uJO+rXO6DzPDGKFqdwnC4OA7bumt/SX/S1P2o/K8Wxg+/FUYCMDZO9j4wdz43EJ1vI + 3BU1boWPrOEIPxRw0okcYmEze+jAL+kvy5FIZX67ZGGHkwDdbnUSkJJLJwG6Shr1/ekHPHaZBwEv + 9Ev5ReGrF0HAPYeNgsD1I6mC38J3ptM7VKRCsU5K2RHz5VIv7c5xvU3ogPkyS9bKp4hdl4JumK+F + WgcbDZ9CXmc49iG389l/j8RTyfz2Dgx24Z9CE1JgDohsFvjjXXJfDssox+cfN3dspVIi6QW2lBUl + moRJ+D65Z/5KHgXol5YkpepnmnFvzzTVr65GlXIxXjbXb4x+bQh0u9yv+Aav6iUX0WKjXypGegkk + o+ZFBz/fkA/EFFemuB86VMARhmIHKVrpAxBCYgrUvMvjydth+x+SM2X16I5Nn1isWyfJ44jcXZBy + gMsLVx/e3rRSO+7jXaU1xdV93xHbHS2lfcOkLJDm1V70bGpvozLvD5ecdShuodut9jYpubS30VXa + 205Oa1Jno6CEkOTD1ha7buSMgtgXACyi9p8iGqif8tPIdDb1X0Bz4w8P1wZ64z1YlDdDTOPU6nJR + o5WySvKzt/Q2XW83Q+g28TfdmQmNniQ3sE2JgMjFesXi1Uu5IYk/lPejbAUGTULnAXWCNQFlo0Z4 + Vuh3OF1XXEboTr9HU1LIxq9sQ5WNsOjZpoF8K8rZ5fU2RqIgWf8aIy3IjaO2cJhqaHCaZTJ2VHr5 + oyLRdqZ3LiX2IF1b0fRIoNJOsJZ6shwWvqrG8V8m+GU4SdVYC7rhueB804datVkkvsOZ9AsciUQG + 7hpjd3heT9YYdxWOK5qMuEnC7pjPxxOYj6sBzvI88zbiwUD2VH5K2d3J1volcGPKxTjkCHs4X0cE + q1WdnPIR7naM9j2ZqVFNSc7hT3s8Tu8Ano1EeKF1SOoP5BYPPopbrx8c215CPowLmJVhm64a0cgm + CFdTABbcJ7AlLee7kpjUhkbV4W8uHd4h65hut0swIcnlBBNxlTa0t8fnlQ3N4XhGNvNLXnhREDnO + yIvCOJbI8h/J7aIhmBtb0z2WDOTrgEVXwk01UkkE0gFPnrNsey1TDODym9PjN+Pr9FuLE0LlC7+d + LBrwz4U7qJQv3IhS7gSx47EKBLqNE8TEHnGakELMJvIty/WvoPPm9zhshabQ9aBxmnKD5rRbKX/w + I0dlgNMpT6PweNTJ7dl+cGmWYsH//n08nN2dlTs45v/jYrQiuvlO3sSf3jcYEyLaH+fnThD8c/za + vvxQPmBXgKikl0sQ5XVju3FdGL2Ih5XaQz9w/JEfhjKX8azgSb5+EAlBCG+0WgnjUxB6TdbrycMY + X2GmV+JOwL6GnT6jTHt4EJb/+CsupTzDLAN7dnonRlvCDSzgTb+Or6vhennaKq7V1utFsEjqcAKe + JuAA4wFhx0m1zXzj19jn2q8+j7RfeUQ8WMWvEULPyfnmO4qnxWX2+bN0uy1PC0qu8rTA1SJ/1q0S + tWDaiTnfxpj1BEf2EcMFpyyciyKzrOp/NLbVIptOpTd2zossslfdKnjON+iGJRisRoabnsoaR3Hj + cdnzHQTbeKxJaJnCqkEBGy/UQwprRfCgZeR6SF9NbsDiFzWwZirlEZ09s+F1svmaJORGFtmDK8GJ + l/MsZvNNMnx2cXz1nEpq0+UYfhHp0DgO2RG+2z0mwyrfi3AtwOSQngWcJuFK5K26+VHdg387PSAJ + xQTN25Ih+r3SVaVDvbbY90dlsRr4+0YCu4gzdEkZrStJ/utntR4It+R6jufv/JA9GSV8gmd4fQ4b + 38n42HrXUg9Y7Vu59NLOpa7LguDTT7FJ44dY/MKdrJ/Nce8KPM93R/BDDIxe+1EDzQBKd4266Wax + BZ2UTXV8xGfv3l48H99sCcTEnONFUYbwsqn5+UBp+0VyPSz0O7RKBJuW2X3ZKpkieRlqMPjjH2Cz + pV/nEyyqSAUo8kSZYNcL6IrpuCZj8q9ogoV+zAjzKaKjjFhVk++deK3WAFdrIO4AUUK3287/uApR + QleV3Vbh12OxGzrlqf8CrvnOCA6ACkLsGOt189Q96c54y8DIF+47Sd9dRPnesreOOPEpdnatfndC + KYEtrnQqxs03acOyyIWSm0Fad6uqv0rEppfjfJtEm8N8owI0fIpmRGtOcOiXzS4jiB+FYN1WKuPF + 0RIOR80voTk+13K+CNtK+Tu1d0B4yWqRUcM75OvI7K5puoUencm+qcdnZH4cldkm6toZPNE5cWSQ + lCczzDDMvWdg0RM+buhrTonD4/+Ho0wS1GG6v12Hw6Y+yWLEv6/wRozMOM4Zn/d/PS9w3Hw4961P + fxJJGFYyWqmfHyOPw/eqIjurV8tefJy2mubfoRClXhAX09d8wc3XdCxV4TGB+HRLWVd2ucvCqHMb + eo/IUs9uK4oHdBowB4Jc5rAJ2Aym5/OANb25sQnWvLQYxrfP2POO7/1IbT5amvLhVO2+Q/NDGRvF + JpJP6rwXkn3x+g73lueCIlpxVUEj8S/4fvQvYyhlssSboG+zPC1RTHrj25Ct6l5WS4jK48kSDequ + L0Vfd7wHVNfBuAi5HLDv6gdyH8vxSbVd222P22SDxodmWxVEbz2rTn1unl3XIRmBbrfOrqsmI9BV + OvW9+VBNRoCjXVjNrotiJ+KjIEZ0TolUnydoKbeFjjNxv8GUkvnyLlnPxbobCdTCySJLc7+ISvsV + XFZ4QaxwOiyU+MUQPCdZLEShg3wqS27XSUGvMb2DriOExVFR2Qd3oHdXh0GkuHtGSGoSQ08G3enI + +Oa+JsVhD0g07KyYVSgJ9wTH1KXVFoVK90pDpoTPStGK4tRmys6Ph+YIUBxviObCJlnigJadLbwp + RMBDh7tOORGDeNFmjRIDHjYSGyqJg7/eHBzgktRSAQVqGPZu1eKqGRJbVSd6N3d7lUbBVojPpF9f + 9T26FBEErQnk6hEQqX7gkQyr6Q0ine5lpwflzqldxJM5Bh8u4YW67CN4u+U+IiRX9hG8KilPPv7m + VfaROPIr+0jMkdlyFHPmqpBvEwXB/Rpk9EFBwGLmoTIpJ0eTK2j1sN5+QTQJNDbaanUCtwlqmIH2 + 5Cws+9cO8FO3BBNGNSXwyVKYy5mYmT/g2cHp5SUTAuAfXP2jCJPGnpHREHM93yHgsppHwn7fLh6m + qcgg6bCSHAl42Dyoe52wu2qm3rHuZAKcxVzterbsA4bukBKTvo5ISg36sgzTiWL71Be63bIMU0iu + lGHiVVKC/7i44hVr2gvKqS/hq7EXOywORx7a1FILXk6u/fFi/jlR5oBuyOT5GWq4JH4XpUYsZ6mo + oZ4TC53iZ6ARW+bBclBOMIDLh4X8gQ7w6jUcADN9VZ2mtVIHqaL/scp41VJGwU3cU2GZ3alQ0jAN + mFexb7uAvxtUVhz2Z7eCxtIJS96MbUQM99qgTNGtdb5JZBWHDZ9aL+jwVBwldyA/sgGEcIa4wLfG + i6sEqmm6FqpMzS7YBfLXyX0y2VEenhZzUwpSYGGqKPdoOEs2CTKkCEtcM1z3nHNHGrEXLhaVTTgQ + yy4vDQ0YBXECSprNM2Ly3oRtSyUc2VvLB8dwKIdF73Trxg+jg3n85KEnERzpj5T8QFK1kEjbDR1o + HXJwngS7msti8mCXiBb2IPX+7nwJjWTgzQJ2p7v3YSzZ8S3UTsm9iRqUaUQIFR/PHY/bnw/pdivT + SEoumUZ0lUyjP84uKknBHse4sW4ZBa9e+F7kxNHI92IeRTsTq9qwaY+G6ZdkDUOmtGK2XYkcdcyG + Gq4m92yYLb64FVwwzb75Y7mAT/i6aj+OdXiFaYqDhh4h2AGER4qcQZu7h8V9sp5u1w+D179daAen + KEQSlgA2EBxznRNL3j+s1Za1zCtPkpu8b6TxXlwqVPZ+cc67cDrS7VYLRkouLRi6Kh0qlxdBVF4x + vsNKZ4no1Yso8lk4ikFrB7Re0JOpPJjSOoAuTm+Xwr1Jjk48HjyDNp7XoKc9u/wI19VxWaAAq8ku + EgxrTSpRwga7FvkTp9AiNLJdwOH32enlc23vILra9Sqo8tW2vax5jCglIRW+njDmWC9R8ZKT5Bwt + qQ6Q0XdK1e9FUbohtWKxn17W2+qYGR/ukDg4wbhyBSPxMYateMflhFJQs2QKw5TCzFwpwnH7kRyI + GaoUVcAkvUXAxMqFP2rlWNPUZKeqnUFK8KgyWno36Mu4gjUlerzR6odxslICvRQeHohBTBlVLdNg + 1DBGxRdbatrHaKnVuPzusI07uAa9SOuAiobotG3Ekr3AcYMu7AV4uyV7gZBcYS/Aq7RtvL46qRaX + M9xJSuQFbhT6DNN4oyiO2v3wswXIn/bNEVWuHi/Xjpe97T8FpbBJEbgRhdNZsgUTc038TnnKgu7d + K2550GptKqIyBKehyhy4xeWDi9+v4rz0m8VCATOfYGJrmu1Qe50fBBmxCjd9Sb3ICi/pXobno4YE + 6+zjw5VJHEdNnd+d5W9vYW1HwUBSMp+cuIH30ulEyJw/YwcEWzShIcHmF0ldXc8zScWsr4ca5t9n + Fx/O3gwZA6UVs+j5QF7O71RbyGsQOECpA+6DiosEIfN+3MJP5QgVhTLrdQrfuL3edgXaQW9OQXY1 + scVXO/gspWyyQM1jKYQI02ZzLVGgeS637LYByxGN+WvmvHS8bpjG8iFrVGPViIlrLK9KNGMcHjgR + bB7WoKahhxfzW2Ot6rThTTfr9xgNc9/jMfcI2NgLjNSDe+jQHBKnLre9isvaWYQNJhRZ/9pclfAA + e6TbP9Km8XjwxF5EiN07Z8H+77R/EztSXEnH7CdFrUcuoZVY6HWBVsLbLaGVhOQKtBJelTi4H36r + Wr9uGFeglSLGmeON4EfkybV7gqlb8D1LHV3ubn57BwtDwr/drtPtavjs/Yd3z0v0TPruVc3KOhqu + 33w8zgm3K6f9C5hdZyXYsuwhAz2sQd1JYqXJ0P/b2P2bwOsqUE6Ws+Hb1ZqtEMoV19riATQmBhAE + p5sEwb1Pe8hqjOIg5m5Ub8PDyE7zbjRs5TB2GnJnWgXuhJQyWLrcEDGPDz1eGC9k8njI/DYibjPH + qw1X0QW9aPXSusNqeQvKE93IyxnMqzdNLCJBbDVSfWRdKoGDv8xSKa+UASqQ/ETlR8RJ1kOmpIPQ + LNLe6oxNqMnwKQjQiHY4wo/VHG+dGwh2NEBSKmthhWmvGGzt0iHhXm3t1xiFIQ8U30CK9jRpGPo7 + U7uONA+WOc5doeV3WkUOI/N/3YowWUutcjA0JWpHcu41a1O7VwmJb7XjJmA3KD0ErAJX4j65YYcI + L91uifskJFdwn/CqDFj9flnNAPYcrwIzFgWh67ujKIhcJFUVlSSLdHlLy+/MYPfmzpgH4+lkfS16 + d7N5ENVfGXXICYvGJ+mxgHPEqKqMLW3XXhXNqdaFXQoqNfFxMQ4rgDlxxbKol9rAIdDIPB/HURQ6 + lVS14nNhksv+qTUv4piXSy9GRipcEHlRWM4308Q3cwkEFVSB/KU5ZuyV8aAr77wplbi4jteYF1cv + EjMax2W+ylKmnfn57/IoWxy5cGguS8xWiDyXKlrZ+m93ke9rx4sO1Lw1GXa1TkBro7G5I2Oqf0lg + waE8UK5Ykttp6h8NTf+Zvqc2tj/AJZtnGrgqgEeVd3XT4wAMhH2lNifkSWyAYnbIrNdxnhnXjd5U + SY4CSvUr9df+rPA4kcQmVDsO+3y9WESl7tSWm50nU7JS1Kswm43r4Pp4hxOuBYzBbRlzy95PhNqv + ti86pYmpfdQjn+LrEx695S8dv4t/vHjIzqeoNaL5FIurtDdOFrP0c4I0hwlmEeGj3x4WqTzKTNaT + a2QyTYo/lxyIWiugCzE/Fh2ILPYpz7EQgFXUO7AxbP1UHo8IaeLNWL5rj8LBXiKwvPTbfKZyh7tl + vj7dbKgdoYCuHknHFWsD5lBy9zDTJ0kfzkiHlDrO0LE5RXsQzwKP+HpxmFMbya1amEd0BJTzsc83 + RdmhuZZ6Ea90ki/r+04vnS6eVbrdyrqXkkvWPV1VXMNXvMo17MSslFkQvnrhOogcNnKdkMXczOCs + 5jmJlPZnXi0X7FGZBDbj7SSw8IpVEticDRiebmMDplfpzAbcxLXVwAacPUkO3x87Pr8UZYeHv8Bx + 5xcYqLmN53v85+scECwSnj9Vp8hcVzgEHS+ggjUD1//q6vexQMoXixsW23SeSW0kLmtcA8/UvaOh + /zKnAziXF2sQZlrM1UdjI14SAMZTZyQ+oO7kYDLj/M3bNcjOzszN+h4z4/qrvHgaBMftPai2ykDm + bTMv7JK3jbdb5m0LyZW8bbwqIWT/+7gSggSD1amkbfMQfRMjHvrCMhHb5LcJI/UF/+Lwr9UqIbgI + OBnI2SQhI1bJGuwimmdIfZAHTBDverMxYZ1MTqviWAyS8KQ0JoeD7mMgAkfVRs79Il6wvIXq5zf9 + tRrcYGETwgkYUU4UVar0a7/u2fHrk+f10FUldpi47BnTQ496i3U+rCYMTKfJM6QkDq4K5MuJkfEy + 7TZ0auE/E10/FvPieQkIf37fcTSPSlvj3fZ+shxOZmss50+2n9PZA25dq7sHs4sRBP38zVhybudJ + 4wOc83kiuBNEPSCii04uHes7QEiSh4PCB8WHd95bJLhe3aTuLCou+zrsxD5dx8sTgrmzhmhrlRIy + AlqlD8rgg2DHmRPywiFYCx6YCkHN641yjFSsuugduO4Rm23ynoWyzpD7oX3+O91uWWcoJFfqDPGq + jELV1Rk6IS/XGY5hFQSugwDuLovNU6oonRG9ReTSRohvc7dOt7d3hikusg1E2kK6BR15tbzB9IKT + gmySAKDEoQS2blFj+CUZgqqdYu7Wn3PY59fEP3nUUk2o4lvzVZWtxCrHpQiMRIyHoQpoFXut+anT + tD2pxTxI6ju5Lj3fV03hc6wymRRxeJHYoQXfSyRs4Y4PGTz1wRvgzMxBCriDJ0nPjz1PRjHq6DYO + TFcoeQOfyLaB8yY3DFrmWuvnKIVDbI4nlw7voHDodiuFIyWXFA5dlY6x969Ne585buSGcQk330eN + E7qBDxonjGOZc7i+S64VjMVWre/Lu+uqkW2wEZWpCkqkRE1rhTmh78ZVkuBOmCg66JUuLl/m5+PJ + +hZWtw4ta5rPUckof3c20oFgmsQiIlSLUFa29CsCBxdq8V5Cv+dmbA3cjlqGwipfTr5MxOdoRdsU + epGfuV1tJp+ToxKf4yV6oLagGwo+x3fj3GTGaZO7mQIu8K8eHecjcmJyU1fGp4PHSXQ1PlAZj51m + Qm6YME/mfsG7giqZaVJGBfYFzHSK7NqZ+z+Sx0M9Hiucl7blatPZPRvY3wu+ojU/PFb1Gn4Uv3Si + LqHV/Bnbag3VhFGsIS+S7n1zfPW+OF5rIVPjD8qH92ZyzwYz/A9WYXhRPCDQudhR3seN+ObJShRn + 2S4FJ4gJL0YvSEqzeyHNtjBJyTqYkTt0fK5/TraCcRZwp7egAZtAPa3jhSCe3i8HSTXgU7u+axCq + d+1c1whPx57+pVqXqY/OieOmd8n08yqd16XTNiVoIFOOUOXzTHhxZLqkyPtYI4td/sk7vcI+cyn3 + ULzjbI5GSNfeAhmSX26zmUzv8iOe/FStXEcgAOS9UgyUtc6STpdpignIWPmjCfkM+4Vw09exMLSO + lyNdMYVYo97AQnwtPZv0ytS9LJySoZfWKfns5BnALq7wI2oEGVXxywFdIbjZdTqzzUCVO7p6vJ+H + +ktlKB46sBTS4yE1a+j49oOT3L1CYlZ9ewmLuwtLnXrA6riRSy8dONR1FYs/52Yonnkui3zfRNt1 + o1djREGM/REHi8sJdsTiBcnS8FlQG2odlUOtC94Y6j2Fl08X8+E5Fzdg4PU8qsZdszwyv+BtgXl6 + r86B+UqU+y8VmP/ugzUQs65AG3AoW9Qm+ly3lA8OW4MRFrtly2m23tYYpfWF3E8gdn1wANrXVGjL + SrEZkScGy3JI1Lm+gONxothw4qNMx3X3b1U7C/Gf/nYOKts+aE232wEXk+QycLG4Kr3mv36o4hZ7 + flzGLX7BEPTeHzEn4Cq36woMpGXyy+ZunaTCq6CmDZhjeBQS/lVT51xtEu6QQjpZTLyVcmx/vq8p + UO2LfDRHTi6/r3zPBsz3sMn9FSP5c1gpr5StTO7ny5TCljrjYKkaAmvwm0g56uWbDmLt2GIi04RN + jv/Y4zz02L8GHwxn1cXxr8PCT1XpInNIM5sxPcKHVmlGYSY4gE+GMxg0PNNO7pHNO1FEkCezqcdX + CpZ4hfVlAlr4dp1+3dwNcG7mfnMvFHTbDgHI0/dnyWoi07CkDNSIeBjohLKLQ6E7SVpGsOPZK+Q1 + VZVth/SmOkNbD9ejEZLBcjCgPMpLp7M0A4Bi58rs6vU6OKwsT94HvQeDrywyIW4obrMfwkLIZZUf + Cx37cAfdblnlJyRXqvzwqmQJvriq8kVxxylX+Y19cUIc+Q6DFUA7xZnmYRfcsFkidt4prIq79Xyp + wRWCFYpqSbp/icd3lVV3h+OLMRtOZpPVJi1yZcwqLm6W3l+cjUzijgDj5OXNIn+lmpp71ymXyLfJ + zDV3S3mSHsgIWKmarUH44EpECUoMu+q9x1phfrl7sM80dl0DiKzMLkDDIN5UVlmBZvqarj8fqbCV + hlh5XyH8LQDb8w4VIyZfZYCzKS9AY4HTQ+IQPE9a0rTs98U2L6QSN4ksRCwg5PfhtT0Qbz1XLIxq + 4LoUvvUusBFAMyQPK3XYZCX26O6OrdihM05KGWd1h5nHBEIHZRYaj+OLdJZBcfNaXWXVn4UkqvrP + F5N4G5UoYC7QnASk68vS3Myb2PnC7eICP3fzqSpD9WL7YtN7pB/qRNqfUK1DYo8fWIv8wBByOCGr + 2KGMUdwHUyB0VbyOu8esI1Zg8ZBtxC5vxAjZqatkQcCLYtINWvlElSMt8wSjLChI0SQpPjotd68M + q5a3x32PhZ6EVYsicQhASGcVfe6iDXfGwvYovbUvmHsK+T2HkwGr6ZeX4gY+e8lYt0pc+YxtIa5q + wqjDlRfJ8J2s7qXD4/iiohT1uQVq3q3coOyi49W9a9wNYl0xAxmLFbCfYRwoCXk4sqvd8lexpqyX + wY80r+zXal+2G7lDyLl5PVnD7F6jR2RjWcR/eOCxc+TwcJuMnMu1C23vEenZ8vEZp4Uj/Dyb+Wq3 + l6Yfk+SHWhO2Jc1hkEO3Ri7CAXdDbqVnrIFbZRMmbitdlLp9nUoXxQpTM5QbAN58QnkbU5Fzu4Jl + Bafygc1Nw2OUaWh6uCCShxjzSdP7RJ57PsYT4sNisqA0Q+RB3AGV0K5cJbLDZv0A8xfMn2UPIilL + KYcbPVRgxPyc8/EgOQHJ0Zy1PaDVxE5IwAZqYDXx0kve1IpVoechDXRQQT3hZHxv0Ir+KlcjcgAj + 9shCEBTu6Ul2IwJedMcCRmOd/u92vsSCDPr1IB5WkB3Uyt4X6L0QHEjB8lCU3c0/z+9RNCNYqW8P + X+agdw7wS6u2vFBmLudN+OpzbpODQgQh7WaF4ANjAh6d735YoVo/EYU+kVH6iE8Uomi46kSN8qsi + RjdZfH5YoJ0A+/Vi+AyJR9ZYvLOUbGjPCUK2o847jJFYWSeRArJ2OgTk6XZbIGunGpCnqzIg/+nU + rwJZOxUalxeBD4aMNwoC5mDmeYkuD33wYFxgTiNGccF8+4pmOEXbN4nfB7d6CHt5EBwKuhyHLudB + WBHTUuoi4qEdxWV392kqzHFDUGz5fUWA6AOcPuQizqaTm5t0MavPIPCdsIlVLHIC7sZOGZ2wps5D + xbXT5b+3MltahODzA/nNNiunFjiIKm1+1Kim8cGFmh/jPJMq/yJ5iDgS2i7Lw/8wdRgWycHPEHGU + EVJ5m7krPMnfpOv74QT751esaJ9icYfBSaYcjTKLQEzR0iCjQJDtrcbYEvLE3aczjJ1jejLGmpKl + qJfDvoZZnrddTHUsKsE06wEupALQmTkD2TPiiJR/eQGYfEjvW523mee4dOeXSYa1SJTmMCzRntwu + tlMEklrA0alIFreLL8XclQkHhbyiazrpU8/1qGZoKbL0KxWKOMy/FgO98xV/ABvQgcbrHikXnR9u + qpNyXVcBDYnUmHX674SmpJ1DwaGk+VZdVZHSXgP0ZKImvk95d9K4VaiaHTCdI06H2j/ny6kgUd0v + e484396eO6xDTgbdbpcTTpLLGeHiKhkL//xnKXuPRaHDXcetpIMzBiqQj+CHWBdoLfzzn8NZipD2 + qN82EywMvM1HJu93uCZU3gd4O1jsKxFQ+XByzJ5La+KfX+ty9/6qDHFGzjFcUaw5BiozD+KG1D6G + bnkftudBa+/XkA2rnRja/TCdEImBHA8TlgUHSGy3Ul/DZHzPf+NjeHo7xaSQVboShVNEUZx8E8zI + +A3TyRb3+HfzIZWyyf1pAssh24iteboQbq9ZMhH7N+7pWUGuLKiGSjJxp4DJMsCZqnZjFkUUc3uC + 7HBPF3TlCWhgqfgiR8XnEDjlJXO6BejUQ7YRurwRI0SnrkoKn9nUi8a/38zY+ONq4eV2Z5E6/Ezh + Nzwf7L5ZXNZduEu4gLxyccSZdOESYsz2ev6/W7BIl5olmQfw+kO+PRxUqZ/QmIumCT5yeqknmj3C + F+N2JWyY+xxCsfvrBr7j1BR7GJ2QL8V94m8/I5Tw4+QgdJW76x3jZln7InHtUXh4aMSyjYCxS8UT + Cw0xyfJLskhXybi+g1QiWPfBVDWPUc6wGL7xXjKvWwKQfMY2TKeaMMJ08iKpd+29Mao1KP+uS8GU + isCHo/8g/xhe7FcY++uYUKIest+vZCOl/YquynQmtCHXmHubiCLGVMZ6CJVWo8FS1wzBiObuhAFt + RC454EUVktS6+0Vo863GVmL7lOVEvJoXV13PMSLQgYn4pyNY2vWYVYqYVQGd9VjuX46n1k6RChie + 8o62XvGQdSqgasRMBZRX6dC7vpm6Mh/r+FgFTQnpboD0TutktVDHMgktdVJJx7oEIdjixd+DOFKL + inmxK9E9Cv6p2eR+cpvsgwXhBDxwlBj9rXQBNeysFk9ZBO5jKrHRD6za52Sb+f22dpY25xqFcTHD + G5nAqt/Tthy73f1YKz4I3LoOr0yeXyxAOzpJe2TrxWUu2VGXkxkLh5dvTyh3tsv3gAwa9pPNDYv2 + lyFOH6eLW1Yr4nvlBfTAK0c9ihKmi8n9arhIJ7NShtXuSWIlpu/4tL0pf3C0u3dAVbUdeVQHdw7v + 2IHtTtxuVwdHkst1cOIqbT9/P7+o1MHxOHQrbHeuw5x45LJQcYS/f1illNYDvf7b5VvpQP1jsQDp + X3smrmvwg4oQwg7wbOY7YRPEBXOiIAZ1W3KLgnG3SG/xw9S1Wvcq/F/ZvTp4P7+9G09ubhAWFHYD + ZHSdL5NxtkqmSEpuvG1N9TFGBd9MFv5Kq2LWHsngPddJAup3sU1hL5zqDppn795ePB/LGJ66uEjh + KwQvm5ReOw5Hwz9OPjF0f8IMhXk6RAco4X+ilTvAvyp/pxuHCIzt8YhOyOob2zwOlYjOwaRdT/6A + /jT8rC6u5uooVb1Ercq6BrE08iVEMswHe9VFt1tCJAvJFYhkvEqq6/WbquqCWRmXIZJf+L7veMHI + 94PIlUSdFfjZs+GnOgbUT2/hT6+Hz8Bo+PxmUvC1TBZZOoSVhejTdA/cAfe//tvf5A/4Pdd+Krj0 + eraqBpdqmVdluzWVwPBRPGhQZ7EfwadWOLhrPrYT53cj36feXCd45EZ85Mjb0dbgNNdMWo2u7Rc+ + o3593lA2bD4DcsURH9TCNBVWwwbayUZDXzHd/B4Ms6X4F4aTKPWLQE/xxgFO0LwqOI4IaOiJ8GfX + Yhk9Pi935FU/vjxFagZTx4Zu5/LB1VFton5VWR6A9jmMDfoxz0NKWum8gK2OMY7Po2pXycHvimAd + BblX0vXCl07YzSlJz1j7JGUTpkuSLkqvSvKNF5o++UZIUPh8+Xe8k2JhvtuzC7I3fK49A8s2EWL7 + U1TX9HeY/sUxV+SstyW2tGdP+ywqfDUHZGH7XKIap4eKijyidXH/Nvb/ZinQvqiup9LTKKRFeQKL + I3ZfOm6HRZk/Y7coiya0RZlflItylcFhTFYoec5VDYfeFfMHzX8RAsZYfeRGUcylc5PqDjS0OANQ + JPkmjiSirxoXkH00wQbur19pLdGEH6da9oopHAQTyHxZHNrCTmcvrRvr3b6VmL0iEe6P+9chvtIz + uKDSQ1SI8OGSBx3o7Oh2q8OilFw6LNJVSWd3ccwreE8xL/m5/FcvIgdemY0ih4eODMx8KLZQkUFE + MOLT4eoBucVyJ2CJzezeeCrP08OTwioFkwJr4PXDBxw11rcP4six1qzh+uYUx8bFasIrJ0pzyy+l + LDaySwReBLtaxcOWNz+rd3gaKIMeD0viDcwnvYn8vDhJ1um1cLhkq/m6Jv/QCZwd7zx4iiM0wCmX + H/+iiEChQgIMKMbx0MpR7B58pK4bK5Lq6eV+HHOp3aN9NF/35Q4nM+t+couR/O39HtnTuWnp0X6y + c718L7FNUdw+ktYPN1ClIC+Iwrx+erF/8nqUU3K4x4y/ZG63uL56yDaunzdixPXVVYucGN3g090f + dIxPzt665RC/2S73PZc50cAauvo7mKS51eNJLpF6Vuk9j9ER1cdrfdneh+4BSBpkb1FZRnsrh5/1 + Dm6oB1BnW7SLmKgDXp+D+WxfIkK3W5lxUnLJjKOr0ow7qwA8s9jzTJ+/670awwtHbjxiEeOe9Pmb + 2z0y1paSnAXhDZlV85oqEPN5mN74IaZ15Zc5gUdlpl4eBlHVQ196GQG90WxlsbCpXNQQb2I5p0hz + lZFxI+TLC4b/3S8RAhd4y2Hsh04NinORjnOXTDam4eaVpJ1elN9zYH74uQpcCltNN71mGAOb5drk + fp5h9VeRq41+fGOAjkxTT0vXwx7ASpVNshQUaEJc8eAAp1jOaMYYkQD7ToGpLDuu20ZuJaGZrAwz + 9IVWrZm2e71PLP1XlRGsiinKX1aTDbyYQtP4sVafX5ZRrEnLt+gioTmNrDdIahYGNQNcVQVWX7e/ + tPaX5LQNE8L1WNiVImh+qOCDc3SciFMpx8GvEsmqY/0bDxXam8H8aKlIsSRvuGRR1IG8QdxuR95A + ksvkDeIq7e0frl5X4/lhwCvkDUHkh0E4CqKYRY6JFWGAQBdktP+rxTOv083dkI3c8TW84hjr0yfL + YUFlg9uDYBL4PGWrsSj/l3gToxZW3CM4by1Adaerh7yCkFgBNsn9Ct0F23UyVvX+iTid4QuJfevk + zQnMfsE48ObE4zKafGPe9Pr0gyetkw9ZDbHq9XY2XCbTz2VAiObUpyCMwVqvlKiioBpgiabAvCmn + /xLVJIMZtJhnOdmbAKIjdgWY5JI8yZivJoUSnPLdBqMmf/fBjvlz+9eYPwNcYjkHRcgwI8GFVSUs + ix0dbWOsHGoYxBSMyGMZair+YhWol/EB42mxIlofV2U1sSyrOb54zb037ksn7uRDKJ6ydCJozehe + hOKyLAp4fWIkaVFa4KB8+WK2ZoMV/gddA24gQ9m7yywbk/0Pq9D0wdwtEJQOK0rcMznvICSLnwur + uE+G3XY7rKbC4XAssYhso+MSffcPNoyUi5IHPKh5vdFwmm5XmP+HibXGLL9PvyQ5NSlqeDxndjyg + ea5HwLptzdo2VF7kSuW50ubjXmzvz6HbLW0+Ibli8+FVRcNyUsEH86JyWC58NQ7jKAi9UeQ4oSsz + CEocHcdLyVl8IZLFcB6ekAsQ0zUXQ7I9oEHlUoVvTMfz+/vtEt49mc5XCFAkeb4S+AUrUjeT21vo + xePV1M/pW6ZVuDHFlzxe5W3XpW76QeQ0mlFeIBLgG9i+avhbhCu/o7iiwD9PEJ/fNnuamtknzQZy + a62oolI437/M5lmO+W0me7puU1yPu3HshkFZ+MN0oZXll+BYIsdvtlFrX1bRA2PwQQzfLznvtVjQ + 80osMnRitl8bFQJlnTG6xHlmN0eqTawIuzpZpMtawbzjYNqgQZQGAYEkdjUyuKpfuOPKwv3lBEac + 8g2ewcL95URP3J00T2bD9VdyHeZDPF/eza+h69YZuhqni61YXzlltJhr8CcJmiZYgNrmyQBVWWFb + h/5A9rkyhhuGyMq2xUlhyGmbTVYScfUJa7myYNHk0desvcnYD4hIq33SAzX8gXTrTB+Hds1hNRCo + tsQXmcrN6KCdUljg02epfs7HoCGC18bOg3kw+ETzplYNnIiMqQMHvuWdDuKOt6q835ElFzntPdJ+ + /BjIvdRcHU07sN1ptx/suUYhzW+gjEdJa3Jy8ffQ5R1zS9UzlrmleRN6bqm6SIbkfbLFbxFxvmQu + FqcWuNiuFHzYrIK2IZ4UKaVhRCmloawhQEEdAR72RfOy5BirI3SPfZV5z/33/CWC8nfIvJfP2Gbe + qyaMzHt50SLvAX7CZnx/D3+llSyg19T0k0x8RkMIDhIgpcwhCGt7ImB8R7h4NZY5nwTn78KXmOHR + BZ6CnrFGp5BNmOAUdFEB1WAIpJERWYcU20G1O7xYfY6MB1ZwgdBtlLPqAN7aDuktj0OOCzpDArzX + 4O52kuS6vm96QfUQLXxcvdFUH6T9CfG8fhjLwlPjBLae0/s0tdvAeAqkxt8R4uGpUSTHonTnj7Nz + J/LtfXN0u5VvTkou+eboKplUv366DCvQEMwJTN8cezXmaN2GI+5wR+VaXUh4yuE9fllmknPIc/+v + l6dcwRyQb+3XzTqs+NbKRpGZcRU30tqDORc5cSUsWfM+tb4vjIzZiM69JR/HcH77DGN7u3iYYhNV + F0wA3dRJpjCSvqL3ktJ//5zkGepaRpPpofLKKfh5E06M2v1fg9bBqaNRNr7oSAQokrU+jL98+PiJ + 1YqT8SqcSzlgruuFtOHLYEx1Lza7sLOLIMyPitW+2+nOGDyZqI7nUgGx6A0CBufjyQJOLePWafzd + dVYhyg+bRJVoU9QId2NHUcoxKuoaXzP20mEdCxvpIfvKRtlIqbSRrkrqtdmdDEtMFtP0Ll0MDd6g + Qe3V4TE8NYBHxfEzduj4GThBzrgnDED1bHupSA30mvRWaQUrsGYx1rFdY3aBkoeg2qhSZH1Lt+XW + EwPaUyH56pQVaJdJ3hd7lyedyfVT6YcQSR1IPZDrjT55oPqqKYljiXDDWYeMOLrdEuFGSK4g3OBV + mRH37qqaESfi3CWEGw6TzAULzMP9VRYtminO72B3uwfFBY3PF9inTCWT3WbVZDIrmoKTIlznuQH3 + K7ZWOaCvg3Jh0L+Rqsjz4ziogH3dJYg+2BirdEskSjpNgROGLConr5chDQ1LjZeKDt+djfQApfGK + Wjq8nijWLt/EJBPytTdWPZonpomotIm9oroXNHeWYWMwhZPJQpCSUQ/NExPfppT2fivmxNGwYDIq + yEDBJldN6tAjs2SxmRwpTx0KuduCLTL8Z7KGzaMYIp1wI8cn++f7s4vnA5zUeZyMBVxseTwSCkB2 + 2WTetY4dBIg1XzsCteKac+1dVwZTSgM4Gv72efLn5PMcBExu72V0oxEepIJ59iSdMY/mTumzuPJw + JJ2ewiUHJ6nLs0my/BNWFC3TDlg7PW+7j5Yy5TKKdeHCWCRjTHFdYrFOvf7q8uk9be6eQ+nu55eO + H9m7V+h2O+RNklxG3hRXJTXi+w9VRAIHF42JvDnmfhjH7gi2A8/humOeqgm+PRDRpH7oksyId/dV + cAA7LiMtbyOKfB65YXk3xgNc6zs07NJhUxKK0U6+pSKrnSB5JdCMdIvVW0l97knoNmXOKNmDkwLu + o70LMc9u+SVZw6Yo7xRkdvTNK4wi+SPmSI5P3EpgMkyEsJt0QQndk3/Dwp5nqWAS1LdhdR4Te6M8 + jGUiV2WFySbQ9uphDWeImfh34RahxG7FEJbmOecDnEo50oDjyZI1z1POg57YuEXCyPlY9sfBAmVc + rm2Ef5Dstjq8wyTvCcDwKAHK3c/XvW1/x1mXNLm9Ivnu8h8ZQ6Evv5sLWzkRgYLamKXfEDUrxxfZ + b3vkErCHRcx+e6TbLQF7hOQKYA9epe3x5NN55ezrRljiYQL2jAPuBswfBXD4DeMKc3CVeC4F+wPM + +onoFbDk79EP/jC8Rl7htUhKnECnTeeZ7JwCHpFORJfvPqiz8x/3a3jhaXWPlZ674lpt7VNU2gxV + 7VP/RVQHAFoP8o0lRDqJgZohlDv++tKJgg5YAOJ2OywAklzGAhBXaYacXX0yDSgeRmA/OawCBuBx + h/nRyOM8jmVqw0WpAiQn0UIaQDkf9D07ze7TDYzGGg/Poyqs9j2hv4qgA0ZLEUxsfL2dzWSqiywM + o5uxMgmP48kMzkVj2tUn69vEeOCIuMLmmVboY0jAyqjrB0TrRoyIe9A0y/FsPf+SLIv9R0zTs2xT + tQNRQqnErxF9nYGKCXy3L1JrU97jslqKcUNzjxInDHsxbs60Bp3CY8xV/gvOk7Q6UQa4lnLQAx4T + VlVMu0pLd/6yC473+/AOP3Ec9tyvxIok1rxC0a5LOlFmNpNdwuFAqO03lzC/7dU23W6ltqXkktqm + q6S2P709Ccobu+MHJQiXAEl+4yAIwhH8jIJIphfGTACxbyZb+JdeAVSHh3x2dnYiMb9PFAb7p5tp + 0AGD/aQJg73puAy6LfJcp6LcHguE3WzvkVHY88YGvy2FCzmbfyvKqWyA2KvQRqp/1Tgd5XaYHIBP + k+1rxS4s1C5RB79Ov70uPiATUUycCJfCE67g2EWOxBE0kooqarhHGHEwC9wV6lbNpXgkfdnKuQ0a + ld4AZqIzwGmrNCQPQ+cpgbk/AdD1sNpE/TJqFXaY2/spg64r/eurBN8oiF+Cbu2S30uP2Kb3ygaM + 7F66Rpr0TufvUQnaRfY2aK5b7Q+aRKww9xHg/T/JqnvkeHtOkCev+DzunLtCz1inrsgmzMwVuijj + xG+vCHtitt7eDpObm8X2mw4tMKjjijFkI3g+V0TSu2EDvhdJdL8QBAfTFf1FkQd8znxjkPZmfeM8 + 0rLHOjIUWUIYeg6l1b47h6+3T+qg263sXym5ZP/SVVnyfv5rxbHFPGbGfdz41QvP98IoGnkIvCeT + OkDHCV/mn/MVmDMaC/yoekIt/qgq1xef98z00BMTQGXC4b2pTH1nlrgRDApCu3aMUudqxmtgZpKc + XlSk5GkU9DpH8D7T7b2ytwQmYqn6Y7JG1K/1PJ0h5m5RA1wUnh4Zz9Dpv56eFM3P5WaCKIU426Av + QHAm6kfhMH2TVcqUv8wnVBl9caLAg47UXEbRMJJ8pRwF95P7+8lijobrBOuLswHOsNxUjaP40Oqa + Wq6gXglZldTvUN5btT1+bBVJLXrfE6i9+JmqJTwnKjjR37CXTif85+Ihe0502UiJE52ukqpOvkng + gsuP+F3y+PPcqIFT9+Q0zuuV5xp3GK1hLSSD5fyEidIdrGHMT09dhdBK1GiDYKCa+nH/D0WCB8Pq + F7XCj9CKULjWkh+Bp+UHMcd/7wLAUFiggolpDN2d0630VF+3bwM7vAz7Utnnm8STI8Xqi7fKc2IZ + foZDQRe+GLzdMvwsJFfCz3iVrPT/ujyLKuHnADVkiS/GZVEQIjFyLBQXqn7lv0QT7v3lmzenl8qK + w6unl2OYu+l0LoxGtcXr5h+Z6/+1nkc9sCjr3lvmswAGqREUCu3Uf29vKTVJz1GsAYZqDJ2x2GGc + sX6Rp7ToIfQzD8Nynlh9r9ajFLmO1xzr5MyBheX+a/B7S6+Y4OQ4zrtHNTfkJTpRNjzZJmwljH/Q + aGtoS7hAZeQOJo060h2hvFWaUVivFHCsAvgMfn99khfbeQGXvKM/I96PGCl8pH14W6TXbFGHC23J + HWe+IzYLcp8SerRtJWKzWM8NSLPCLNiMNaoIjSDvHo6qN6rWoFMve0FAzin9MDedzO5V1nY3vxvj + npSmRzTy19wztc/KD9cepugEwWNxSttf3KPnqjOYL8L2O+hVWCw3dOLG0/VgL5+K2dzCxtQn214J + a4yoSS4uWRzYWwx0u5XFICWXLAa6ShbDbxefKvncvueXLIbo1YvYZW7ojGKXh5HM51aHnUbf3R+r + NbT09f9GphkYgE8/vLo/qlhvYcqazjmILqinupK+ajQYk06dC+89c16yLghj+TOWLp28Cd2joy7m + 7LXcVQUYDRy13G1ir4W/CAFjLkCP3CB+UuRd/+GT/Q+f7E/DJwuzPIdJC0/5S8a60f2ph6yB0lQj + JlKavEoKQeBZFNv3WgNGM+EGDYGoCsCKlOh2P5pSibjiTOiD+RLreveLMTtxHOVIFjD/17A7CRHL + dDm2wDT98QFuNd9cmTXpBZ69dUm3W2ZNCsmVrEm8KqsFLy68StjYEcEmM23yBXOjKAqcEVKvM4yG + CVCS1QrsS5GFjLHIdbrQI2GYyIdlzgmtxdyWzIYXlxfELAL/cFVZ4Wrl7RlI1vwsHmw3Tlwp8u/L + Dl0KNOQKeUvJWipyIetTIR1mYmZr3DERYme4UT11TEPr3bt8IMY9D+aCYSXz7cRObf+RlWQ2I7tv + pxviO+dnHWYhq0XrqRLfuAO7Ad1uW+IbV9kN6KqsUDn5VK1hYjyqlPi6bhx6/sj1nJjvrmEaQXeC + QlX0PkM4Os7E0p7gLJyuE0JgGCq6INyR4a8nCBxzs9iCrv16N8cSVXM+otcRxx4TX6HDt9PCu4m3 + JRI1Yp6l6XQjlChVl0w3VW3wVzqXnj9kOav3fCYKHuH+ybRULyydZ3Pc0tCnmyzvsAYkz6+gut2C + KEomlShe5wyVB3QTJU0e0RDP5qAkJg9ZPqyz3YN6N7+9WzyosYUnWhsa4BwtaodlskhAWZ3Vr87L + jjedqlwHzv8Vgj6Ps1CYHQubWWPpcVQaLUd6ZlHAXjpRxywH+ZB1loNqxMxykFdJS/3Oh9ny8uOF + OoEM1IU6z/p5MmHV7AbVCqaRwkGQ0nHcWIttrqnCSeyXMJNHIj9K3z0PODFDm8LGPCjpIXIJH15/ + yz7dSI8Q3A8IcKe1F3dJoFUohv93fsAgWKQM2Mvqkj6g1izsyka+VffjtLXPvjXaxbjDK/Oo5NKT + OIoJEoAU8Z77BNb/cr5X1yntEhTa5dR/yZyOykU8Y69bqImSahEXSbPgdjoXcIYPmDUJffrx+M37 + EuhdXjuknCtvzQSrOfQ0HDwXN9v1cLrYCtKUPNBZd1rX3w3TrUJPKCQWcKIEQIHjJoG2J9v+sA53 + HPpr2Np+jI9BGPQxGRU1w7h3oMzJB+UAdKmIkfqpebFnFNuDUU2e72tZOIxU7dsPH58CPCID465N + 2mgoYdtSueJg8sDPi/cd7aBDgwBKTuS4whSQw7CfFJ9JNDL4kn0l+G6jBthbolhQnpA5gp8HiVVq + nCoc3l+y0Lf3VdHtVsdeKbl07KWrCrrjshIJZXGpwtdzsMIBhsUZeb7ruXEJOHyRfh1Pbm6wThG0 + WCrqHfRaEHlg/TKZbpGiVkuWyc/F0xR7LcOT2Zy4EUVyDUz8qZIIt0wTjHfgA5lgFwO9nX6BLyvO + xvVypAS4sP6i522dbNZVtIXKayri4rfb5e28RFjs8rjJa8Z8DramVz4ly3fBl6itlzGOym4JelKH + tWwVv11tJp8bKnJ0bE/fiaIWcMvQi2PXL2Nnap8wvxf1WYbIIAwbHHH14swgVl3/lOSbzIx1nTL4 + iefmANdkDsDOWWRZrNceW48oAczs1q4yOLE2141Qt43Nlx7D6kyycXEWUugsZzGBdvs95GrGO/WE + MJoYSVc4jDAUDhT1dEdjKaSEoKom6hxW+dFRGanE6qZNx7LB9h7rp41mEDGnPF33Mw9R3WqCdC3d + 8VVrloWyKiKKgJ2zuENGNt1uFwEjyeUImLgq6yYv31YDYI5TwQ15wRgSlYzgR6TCX6AHBIovebTr + OJow4GIu+RzpJ1/viH+zFvgR0i1e4WujOsv1TdUhTrd+AS2NRW0lDpOoIZc6Dh2fq3ztEoYnOjdM + vCXeBBFiiCl29XfN8NxwWONNpZkuc93A9yr519g99JW1Wyxo+sjqO80tfNwuspGOV4kcwNFlLLIM + VHkj+VNG6vPlXn05ycD8hvUjCWn0aJ4ZXZumYh6poUR0T/qbiAHqMwj+DUbC9DMu6fKsOTKxtsWK + QxfOLXkOBEgJTCS+GuC8zwOArs/62blJZeijJj9ojGhT4gtbhNdWhEax0uz5sLXLtGCpjWKx5clJ + kFbK51vesQXEM+RU6kYpOnIi5O94MIUbaGSX6d7AfS2agBEHfJehedz0Lluiyl1SolyKHihQa8pq + btR4eneh1PRU44vKUbz/HgDWvSGR+/IN9vQSqAor7neAb6TbLSushORKhRVelV6C3/67Qi/mxoxX + AD7DMIo9bxSGseBlxf1cMYj/4+xMqOQHdEmuRSIFOVUxIJszhaPShS68n+OyNsmrWpOdVAdqy408 + 0fKgn36rspVV3dbKR332D3XmPxXEqJPnJTPAN/ays4v8hMsQOc6PKqfy/KvH+Vc3VFOxZo+CLjvf + eifJOr0WxRX0NTj1dIGxEzST1LuR7/CwoHn/MYM0wPmVB7ajgALbjNfkuFVFjMy3RcPv2wNsKFZL + /Lu593+2dECc4lWRrSumi1Z8IkdTXGxqX2pent16bk+ZrZ3VS1BBbifckVxJcGjuwpWEt1tyJQnJ + Fa4kvCq5kq7e+RWuJB76Fa4kn8ex54x8l3kKCu3NdrIYZ6tkigFV/Hi1OetcGLJscyaSe0pMOhN0 + CQ4XyZdkQaiIaEESZMw63d7eFdAxNLlEG0U9KFGTE/TrPMsviADe1UKA904WWWq+wmQ2Wcnkv6Jq + b3WXYF5fnpz1Ibv196SAsEjWXK2TpQS/yU3dhzXiyybDWhoRY1MKeRNTZeQivgwvb0r4wbQsjC+V + +U15dVoq2ZJyG/dmm5U3MCc088V2Nl6DmzNLysg5JteniS5sdGfowEGO/2vwE0w88yvh3rfbzF0d + dZmLA1yb+VYcx8L5jCOASubQUbX2t+GA6IZ360janXgPkvioQEgscMk3v++L7J+X1J1zCjQBHZfp + TevWwL77ZsiNw1a7duosm0qyuypB6xkbMTeqe/tfKnhQh39ObwmQICjWRnOvd1JWhSoAPIkc56Xj + dUt3lM/YZiSpJoyMJHlRFQAuPFfBZga1ZX7nbjgZtPwJRMCPMRO5RUHE/5o1gHuk4B1YzIfld77W + JtwjgPL/U363byM/UZ0wJ7Kak3PH7cDlRrdbHT6k5NLhg67K2NSnd7yc8sLiqMTU6vqvxr4Xe2zk + BwJ0CRXJ8Rb2ybvJ7QPVXmDK/nKD52K0q67XyeTzDIsU0NaTd0IfSEdppuoz8pAwBaA2t7yG+O2p + lWRM8i83WTmY969y8ohmnQeBGzjlUJFciOM8uL3B1S/S2AzZAXctZA/+ocTkroAKuqph/krUZByj + 3ATMCzy0YbtOZw/amJqDd1Sq6plOthma5kOEEIJzAlj6mUC4/zJXHL6yBS3NQ0zEnMjD99xeokUx + +bOKAetmEfQUDnG5xBzV7Ozkm5Ajnm3Mi6gnXftPMoWRei6DI7ooi6+rAzjnVC376zlzY3tnEN1u + pY+l5JI+pqsqA7GKscxDXAW6M8h99YKBrRK4IxZ5viedQSc5sd2zyQKm+3OdZuRknPuoJSOFhEA9 + Gz47+fTm1/HZc+XTLh2bcaVrT6+TVSLODFKMCkNX6jTJjlGv8OxylXK2ei6q/W5usO+vUzgVmyWf + AtB4nYxFVYv7N8RLMopbZJ7ivnDQOhYbc+KoklmAB9ZaOLB2NOi4CZQthP0y5BVKFTupjYSjMPaw + fiwcPe1unqApq6Fe/kH1yIHrN/HOqKEYPNL8FdNMTk98vxyzVkxIbT52mYrEaFo9LF2uMi5k5uWs + JubZDXw/7oADXOh5WiOcXfqDDeqjLmz/s1ghYX/Y7kcT3Ohhi/0KYVjWxAHSbnA8Arg4AyuInEGi + VvRhoYhs9/H9wX5JOQByXo/LKtY+GwVhwIgaIhWFveVqfmwgWaTLW/u38/zYcVtE1i8m64EG8d5O + 8e34Ay3wA7XW2o+okPSLpzvx8gaUIyPidHtVVv4o4GUijMZhqn/runXAI6rBElzI3x4q20tpj270 + lNSFKn8sMP8uaY+J0I+2EI2lpSFlN0N6Sj06jDzAiVw/h77WdIIyKA7kFHhizATcU2xPYJ28dLxO + ZE/0iC3Xk2zAoHqia3SwmW2v5+k2G6if2jPcd6PQdxQO1aFsR0/gXJsfRn3JUwyKqgtPMd5uyVMs + JFd4ivEqHUYvjkuJ627oBjzgXoWnOAx46PERvHbgS77L9zpL22+XbxUe6PUaGvhrM0+/Hb9Ov+XK + Sk/IFtcmuElpqlHH2gYj5HhyB8cS6SHDMioBvk4UuzCvUiwoTbIptnaU6znJDnn1ecUGV8dF3jVi + /YqjxXeAvMYsFXzk6uRtWfqETkkHtl5jYLHYIdsYGtXg4CW4b+OmXWeqHYCK3FwpczjxLQ8UZODv + H3/1uqEb5M/YAgaqJgy8QHmRljUfizjrtweZLWAUnWt4BHZ36W1yH3Re7BHkDvPzAMsBU7KvhMa9 + jPiudCBuRPbJNHeD7Fv+5VGNxNOo2WdBizS9Zl/4Gd+Pf3s/vF2n2xUqvVm6TNfZSBS/y2p+6C/k + QIOTcFpzBLPnIPy+77ULKEDW00nElO+NFKA0TShzIbnH7C0Out0yF1JIruRC4lWyOP7nn9VSOU9U + CZq5kGMWo4U0YnEYexLZ+N1iO02zZByMVQJHUtI8ZIH8z9eaKrfeMgtva96CjRtQQwx/r+uZ1e1F + 4RrncDJ3nbK/F14cWyraye62y1KdmWOW6NUIHezut2fvgos3z0dSM/0pYwI383WGYGzJSsUA5BsN + Czl5xp5uBFHOHab6pVIxf0ly9DjFYS1FErE1tl8k3M8SzDlE22EuyEnmAn1S2D93CTxNunOZ3M8n + A5xQyhbyWeQLdR7L8lg8+eN34pseuNNAT5M7QY7/4fLkQY4QTNYJuuHWHd2aPe2iTuxQ+nvDjBup + 7RWGEU86MErWDjnc9PFu3WGqph7SWKJki8Bo7t9zmDgBWuGLIsgQToHC9sRwgW1b/RVLdM067M1Q + QJWjzdkWDfADG2i0rZ+OlePBiZaSz/BEo9OS72fxR3IfhhNVl30Yb7fch4Xkyj6MV2kfvnx7XAHC + QQrHyj7sxW4cjHwmWH5wF347vtbOvvLMv1yA6OqZv/G8ZiIZl8rLii0sDlxEOmuKrqq+N4/9rGmX + NaTlu6zNkbVkNeBZe0cbBWWIz32fnFc78wjLeqCX0yWVU/52yeMOoEt0u9Vck5JLc42u0lz7/fgt + hg1Kky0qoy6Fr17ANe74I/ghKrZxun1KV+kcu0t4OpmIyl4ev4F9L1khrAzi1ZLZflZ8u8I7+H1y + 4zqVWVmJ+GxXaJxM7kk7TDYatmHthPWdMiLP6OzibGTy2WGSY6UwstJ0O0eKgXsQOqym1V0tFhFs + DFM+W8N/n9cuHFj83Fp+vnqasgSakgSCup6rtJEXaMKWDrNn+KwyQnlnPdcKNcGQrHSwKmEpvSkF + aqm0TxtqwWSHjYqJMxperpc+/YjpB8OrdzDxYC5lw/eumI/vPSxGWSRC8iyhvICsqAeB+fkVbFc0 + QwdiMeS6IeLsydMJFQ0EdbQ+PcRQcUHVhF2sFqa9ObE33juuDNGzrYDvTe3iuq39uI70SGX5Ur+7 + jvIeMvet37EUoXjI1n+YN2I4ENVVUtllXhGM1shM93RtULSVPYW5dDw1RLEoQnC59Gxjss9QykqK + JEAdaQPRl2FZ48Egm4sYASW25u1KrtPubiWy5CkxJX+Hvb1TmKVJ9cY1L7vHy6m5kFelcHbivmRx + p6oU+YxtVYpqwqhKkRdpHmBGf7JGnwAhjKlhH7z5/S2LQZlIQBt1WZcqqlCYQLh1QbHRcUjpU6ss + ngKIDkYdVNEj4lk/fTjpfIbwfIbEx9DRvNsMoWesZ4hswpwhdDEnLot38JbFTbRlMbKWxURahpQc + /ylYKh76D/vYAeVPh7Kf/9QFVCyOKIFu3b0DlI5xzXimv0c80+8Wz/Tr4pkyTeFOT1NQWw3/28j9 + 21jkME3HWgIXXJQ5l7O5wLFvjmf6wkgJGFVKxiyS0xxF6jlhFr5Z+6CWE+aG8oE+33531R9Fz7iH + enQdRnDZU9Dod+v5clyCzdvPOOzPZ8to06lOzurM3L8JscY7rYLmtmxpHFyivXp97ngdoFjodruE + J5JcTngSV8ngOD35gJ9eqob0SrxXrodcdUHguyPmhp6C9vqYLsdFEaTaYmpYsKT36XR6z9ynnwfV + wAGPjo3rObrvBSeULjJ0vCZ8lBj1SuT9a2DdWRg6JEav64chnvY3AkpPRPuiMYz3XfrtYQUnuMki + obf6/R/Hw/l6PUHEQdy1xaDm+VDMFXha+I5Kvdkw3O/CvOgkrMoypZaAn5/WI9d76XQ5oeXPWJ/V + ZRPmUZ0u1p/UG09sujjc9sBIFNteyIh85D6ZpzhLLO2svDsUsctF9Dp8yVknGmV6xJZFWTZgkCjT + NdIM2+uVS51SBC20kqQq9sRgx32/g8ABSiVW5TAaPHaa3vfLZPI4N79iuLmbgzo6cF/qk4eNNuOH + DHv0yTCxqWkfFn4a9tJxu6GHyGfs/TTURMlPIy5KyMpkGsqiiMHtdrJ8WOjGQPKNwH+lh9KQSTxE + Ac3sKFJluq1Q1XpPVVmADoX/tT8zOmQFijQwmvmf0YWPbvNW3W7dAneYzHzQHfLHl2+L0oy94XwH + cqfD26mT9gU+7AV6t1OGQ4fH+kH87eCe6wVDeI9DyVMoSxBxGFrDOEl3aoJDTgR5X/XU4COkyypd + HeUWm+NwsH86xlfkQ9Y2m2rENNrkVTJVZouZDI7P5rQVzVfp5B57rDkRe8etb0DmAAWjTnd5QOZd + IIcHNMMGhuYkPa6nWaUkhIf19gvGaPafDgGj4lA+Tr+ltwuwoi1S92o2EZ/CqXNYfsl2ikVvFjaV + /Vv6lHX3OLIJ//1clQDb0dp2kK/gQRY9vzoco+nVbxcPoltmiay8lJsfBufU35A79YsomEYL7YAw + iOd7hRsL8/PSb5hhmqQyNaSTpvh+GX+79tMfC6/sl2UgzNBEKK6OomJKGagMe6Nf3n7niIOw+pa5 + Dqon49y/uVhWhprNGVpqd5MVTeXxgPInTbG0Bc5ne7oiPeaJ/U5T+Q8L63RM6y45rJkdaaWhb6oS + Y1szNMvyto3/0v5rfJUv2jikz7LtFF4HNkJVfLvurXW5bhvm7zO5AffdLuJfBTSGSPCIZoF1vqx9 + 0KLPTFzfCUilvN23CMaNc4OOOS+dLj4n9Yi1MUcNmKacuKbcb7jFa1ipZgm9br5VcVXNey9Wn00C + 8xVcEJ6nkPkyNL4/rEqHiPkjgcKELKB45/5H5r80ZoO9ptmjqd2MN48MOmGF7GBvOhyKE/HkoBw8 + RXLg8k4kB3i7bUEBryM5wKt0KD0//VAOrHFPlEyVSA4w3uaOXJepggIwkR9E7i5RYmLgZI1pfTnO + NpoWc+n1W6SSVn4yXSPopKhKM5m3Xsrw23lyXxN961wGyGLm8TCoMN3VY1CYUqMm2DjGmetGrl+R + WuvA0elg0dPTUHsAW0vgIhttWWiZmswk54sCq5csAo9m4qp0bzakrWNuThvjLmMsAtvLrYtJZtv1 + DSgeaEFW3cKR9XNSz4JmhCdByTcy5souGnwow6aqEsdSX2HA8fRyNNTrG82ZCA/q85QoCyaLzw8L + eXmKf0Erdr29zVom7gDXUFE2EoQD+TH5+bZLj1QUSGNJnevSVta82HbK2qPQrThuHorpIuaw+ILS + 2PX78BOHSxUnPxly0IdyrA0lbHTHu5jh2hGWDi9I8hjxtV56TgdMbLrdjq+VJJf5WsVViYn95jSq + 8LUKvACTr3XMeBRxxx3hz8iT+9WFNGSJuXNMZ1TyqdJOnq7vHxaCQqyop55QHbXEVf4b3LtMv6R/ + G662wstn2KO6w08lrBN69iyJ+i5s3x9htZF6x+gfvXuoZ2rNHRMY1TPaxLqqMt9OsjSco6UMFS9w + oooIBaUdu3HkxOVa++ZxKGe/wESpyB78gEkxwGmc069GLBjIlxMrdIeI/UrWWSS8FMWbwtbah+AY + tDA+crgoMfL4SGWKlES2E3J+N36ZQCIb7rNmup4xD2tq9yEQpmBEe+Dmro9X7uOApIkSO6NELaJX + HI/kN48J7DdZFOkFh53HuPIxce998NLplgItn7H1MqkmDDeTvEj73XQ25X67y0mjxGn2Nem8OSco + cyAkUyK0S4nQYLEKcwpr5dYJcZvjOEzvkunnVTqvKztsKp0DWZTXb7Jcd0Ce3D1pHRnifMd/+UAj + P1cNoVMetYbJdLVMl2MrsUIXfICvklze9eK6qN99Sb1qIqRPlx8MBBSRnc4hPCfkXk1CS8E+N51k + 08msw0iGLoHemZPQZjCbcEWY9B6JZ2dztFC/f2HRd9jgihNW1/TCQ1jX6t7g56Rx6wMUt7ecRU9V + 9VxEx+5LJ+qyo8lHLDc01YC+n8lr+XYmcWNP3w7vYOce3D9gpwtOivntnaJZxvtECCSIKZ3FiVlO + xQWbBVr2Iyyb2og+WyAnFxaYg0nQEYcJBItOvp6s4YtAiSSrzfa+TdKjqtCDNYwjSwBL32O32h9J + s+zKuSMvWXkw+1dQ+cLyZJoEzb1ulYaFEIpmFhO4UU4FJEoS/dynh6TG+Q59+WQxncMI4580NbN7 + d9wh4HtpO6WkvCK2e+p2hVKVz9hHd6mJUnhXXCT19I/J8n/Gi/nnpFzp3vgHXS5qLh9hucm5apma + +kSTS9UA5fUv3H3vwQGlWzalesj6aKQaMc9G8moT9rj2HI5BFLlqDDrnZeXfHRTffeJ13D7VM/Zf + TU2UPlpclHX3d6ksdnkn3MGDy7tUTUW6MoQr7gDvG7huwHzGaAflst5nPoUZu73egmrokDvfvH/S + BKUgRyImNwpQTMvFfm0vM4jI8Em+peIN5zvcPv2dX1hAAQ0Qfb2YZ3dCepUgWzSwSvPYtOV3hZw8 + fFRGL0crL43YFQmqHgUPk2dRiyNhg0qHeDHSd5NVVza4ves2/nqnsf2wIX5gtKvXDBw3piyOd7sC + Wh3yQvohIfHla/WTqrJbWuuxjSCf3186cQeSCbrdKtomJZeibXSVNps/Pr6rQE3CpsrNzBDn1ZhH + YNNGIx55gSq5/iOZZBsdMvh+cg96aj4BW3l5y3L4ydsqqawEaZO1C7pPtx6EkjfmasB097w4Pjhe + 5kRgQnCvHC9Lln9CFyuIsyb4v6i55pox3/O4X4aPFixPGPSFI8IMIfAm5UwJFvgmRaBCMtQTNNRb + 65h8GK76uD32LDp5czfZyD8Lsj71xHuPoPP48RGc4TN97oN5WSBDw7kTF8l2JYAn4J9nH98RCuR8 + k2GFBx6yM7xKAuEf/gCnXM69x1zi3uOR0PPSMT2Z1yjpOo1p89z3p4zrw0zZp3Q73wF8ivU0TLLH + FdawlYMcYs41Z2WDkArY6ncncnN5GAoT9WI+nYKCs11SNm/mYv4Q3rmvzCbWM+tNckeBdh807a7v + kO1K4TxhsKpPhdU2n21bjIs6ckJXGifvvV9AMbV0Wyf3c19s8l5eisjDU/7SCToenuVD1sdI1Yh5 + jpRXaX/Gjp+LIOF4g6BEEuZZT0Svv8VsQbg6wg4QbjviZEyoE9GciGxNpkoNICe6UZO+ZwtEGy6/ + DSszatra3+zbU367svG9mgqmPaHtnnyFm1WhVH/VABHN2XyAjNWwb2gpItu/YY31UQuwbws/V7J+ + RPbXfl+ldG8Oo+5EnWDU4XZbGHWUXIVRh6uSrO/TRRWyPyyfo8JXL0IXzsb+KHQDFqoc+7bwJB2i + Ljar6iGq8xHH527gN9Kht0dHjRzAkPtNCXxu7MNblE4786UGDQ5HlA/HF78q/2Ga3Ss3W5Yssyry + eeg2tGV+UN4YCkRJiB5epBaoZE0jF527rJtsq5QMk+c9dDp1VZ1PT3la0+W/t5LOWSBw5Q6tm21W + btgJ/aaG829TiZFq5Mc5HntdEN5Isr9LKoOKSv82WY7l1WRWKZnDYX/ePO5Hqi9z8vj36S1b0Wyh + HDDhpYQ/4PESs6YX0qN4pH7DDDE6ocrVMcCVmefth643kJOKVEzNvMynfPME/cUqeSkkoAM4CYEu + gjWrZUUdMspWjT9iDlFX0RZefU4WVfvKtRHFApcgvPb9yB/FGr6nzXZwQs4Py5/pLNti7A/NpikE + xVqP7vWZ0jLxVe0fTPIuZEJ4u2Xtn5Bcqf3Dq2SZXJ1dVUn9XJwyJTKhgEVwZB8FLBYwJ4JF+OrC + y5HgpxgQWuORm2ySq3lWz+TXjiT9DFf4dni6/QxfMnleqnfzmhy9kc9c32Fl46V4qQZeFr+p1ICx + mLs8Ku+/2plL+Ffmm3ndrs7cBn+ves/BJ/R9nZ0NqQ+n6bh4VeF2LXEH45YFt4JqzUHUswn2L8yo + HI4TevRBoJ4sZxMFw/nH7N+CsFi4LuUP6Guw2wVFnNzRoWOOMKS3TgxvrpBwDW+RiAPnm+Xk76r9 + bIAzR+2cXuxz6QBwSw4As5ts/YEgyQ91BXCTLqx9QfYP79jJLKU0hnv39fNabTOPsmPI5w+Bfq8k + OwXkKW1lYGmPG7NI+pjVEqkpXLXyrDqwqoWTMFuFzi/vs6m2oPaVyRzyEN4lsGyzu3T6+TAHq88c + 4qzZLnHGaYby44lr3j3VTsWKJJhjBJDsmAQjnrFPgqEmSkkw4iLtWpPVRuJwqFohszRG9/c+O764 + /PTc8Gvu9xC0KcolYHUMZL0WxeOpXqtgMMjQG5VNFgIuqaPOYeT6P7YuzuoA0EaRGvXxjS/Yv8T2 + AjLGNE9eZom7/53Nc3uf12Or7T4Ja/rDwqQEMzKw7ye3mO91UEapG8exPrWaV2oPvtQ+Gvt+xXBk + lNSJGuVXhasA6wPxA4hjsXMxZj+BL1+U0/1xdg5a0975SrdbHXGk5NIRh67SZvHp7AOWT5pnHC4U + rX7GYYhvArrIHbmMe1jUKqiNopfR8PObSb5r6n6uEoCduuOe8I3FMejT/N7zKuegWnw+swbcjxv9 + c6HnxVENVAhY72rK58ABWTKGBZpOKSVQvhrlnevtMc8xqVc1ZkcvcKPIr9aKl+Ghk6b0Fz9o8geb + 35Kfsmq7p9S9BlAJa/FmxsxlIZy4LuAQg842lGjKL8OJ2A4xrLcEtud1NizYEgob9SqbwslLuhvV + eIhqSlgkyWII1iL+RX6d2Pdkes4c/r4uoEXE/M1TYnjkEWQ3K1RKPZ52u6GxB+T3bu3kO+SqO1CO + GFBdjhxzeNm0Edtypwco8B2nJt3TeNd8LnR984FcRPTW3RZipYXWJMUfjTBaF4o2Z2x3kd5OkQ19 + ul/tzk6cVAtv4hNIoz04vipUc+16TdYdvau+Ryv2YnwxhnPQbExuVpjH2Rh690uy3LXQks6VUMrE + cBUlg/s+7IYKqR6xJWSQDRh8DHSNTA34ECado/98gymH6BNQBUKVK8MrvF1QnLAA2VMZ0TLEsaJl + OFjHfxdChr7UPguke6bLS7bvI56k2oNnVQUDKBJkboW1Inx6qswT9t5JEUzDB7qWNzCXIi2TbCqi + lIq6ZE2/7VGciiJ5i8giIputYP3D8lwh+p6got0rDRO+gNRa0zfky7bDx/xggLFuInZsGwSiUy+r + eSvocGbfr4F+yDaeOEqaOpm6kiFof6JQHzY+vP1ReTLU7uSp3YmFb1jX7Uk+Y7s/qSaMDUpebKHU + LHOJ6aK478Yh92UZ5eNTVKlu83OeJc976fCOPEv0jDXPkmzC5FmiizLUefypvHk/Mz8Cy9eTb5vn + g9/dYbZMLz9e6Pa+euj3zSookZIWzQvibJ+qNQM3FkaioJ6nc/EegRMvpjU7wcmptrmrq9/HgiK2 + +5w+HGDgx8GfOIXN3b1kA54XL05RMCkFiVftaYsfiR1c4LRSXr+Ydi1BNmuVlVc8B69Z92R19ZBt + uCdvxIj3qKs7+OhbaQ9zyYIYB50oIirrlHkbdhagWi2MfSdmLznR+04eu/Cs9cyhksWTc8fn9gkt + dLuVt1dKLnl76apMtX39sZzQwuIwNp29rv9q7HoMwaxhe5P19Bc4c9Cn8HqIDKgzaIAYk/HcKxNt + r5fVpJaD0KTjAHMnnMciiM3TvYotxCgi9CK/IVNFvdjgtPBt5qy3sIuo6ILKgprPHhbzZZrBPF6M + 71GDlmInZyPonf/dzsWkgnmEns7JdpMWrMurNNuMzdQR7b0VyHMxSjA60+0aCwsv1tdsNcqzPDO0 + LuHUCx8OQ5GgoBTm0nIjs0Fri1Ivzt6N/3uA0yfno/X9kIg/HcKZuziDrWGK/o8+EDn3ldpYQudF + hjOnzWxoOv+Bde2Sy6DOerGgnKo//P0lTnFP/HhECI6uNPiq66/5KFMeM6XMC/o8MFBZJ6rT/Blr + RB7ZhInIQxelb239VZ5hTmaf4Qvu5tdzJDU9efNr8dvwCu4a4K0iVSPias8/GNiQPFNmQvhkOREQ + keMVpnBvKD+bzD+Zrl2PNWiBx+pIajQBmLnPwstXdBwHpU8Hwz3JMJpi1DUv5xtBWoQvs/7S1VHF + yL9TQgqxSFa3kg+GBUGHLBMU9yUpN9QBVzRvsMBT+TFp3Yc6MtQyjRVMRBT8c3zcBShCPGALFUHS + q2AR4jot0Y/HH0xwdtf13ChywjJexAseOdzlI/iRm19nOHDzmzmNjLTm5U79IAo8Lj+NL04uFXDE + 3Rqa/jqeVJOM5SQrrtXaTpEb8jrbqX8jDLZ1+Ab0uKhrtXLg/8pyBgNpi/DI9/kgJ18PnFw1v3W7 + YhTTI9aKmRow9bK4JoHS3l8pAurJbLJCBADTv5GLwEphT7GTegGrm/qwumDXW3QtF/gR0fBaAuz+ + Y+oglRQ4uW9BUX+ZTLfo5v9LRm5+MEju/kh9vTFQO0UJ/ZhkLZPN13T9+Xt5BXLLgREyam6HTtNJ + 90QOml9T2Kvv1lgOhjoCXnevuL3nyeL6ch/Dz04TrB8gDMvguX0kO8izrL034UvmdLO45TO2il01 + YWh2eVEBzpfCAsfvjvOBU/n/V6sNnHzKKl8JR8dbEEoWQ5fyHkwOKtEpwsudLuCdyVVwNiSLOjGX + fUXldoONsQQWoKQK42MPWHlPGazbDTW8jnxEpmlvwa8gJ1NgbtwxipM/Y22pyCZMU4Uu0oROv00W + KU4RrH3Sl6uR57/ETtD+OoBHJB9n7PSUmFFx+qpyXyXNDuA+4pSkiwywxjcdYhKENIvqO2t/wb6K + uh6eaPdT5sB1SALoO8XuqXinOBWVGTMrS6bwibiYhbpJ9koPs+9bzoo5uN9enYvyIkl8tCeKlujS + yucbS7nvblBq2c2rufgp4y9ZR5Ib+ZB1PZdqxCzokldboJzVcwLKOUA47fwALLIq/ji9dFiHymm6 + 3crhISWX3B10VTLRvX1XYU0FDeeZgabw1ZhFse/wEYtZqHhTT5RnYiSrdDcTxlcjFeNoXfn34+Pj + 4yIMIqqF5XErG85wfc400I1MFv3BjNgu5em68OhnhMYIPxZZaoZnpulaaU86kUsMj+K9JPiltJGg + ccl0d3Nb5W6ll65D7wRt5zcVdcM+60a8UujQ2j0l2U1xtzDmgeNXCsbLFItGsCyKTBjPAmkTDAPH + 41HFgYS1M4t0lYBhNWvEy4m42wQPavRAQ3mEyBHPPz9bIcloc62E5zteI6oNR8rxuFyN0eijMWve + A9bpI4RUShAWk5A6SV4wJIPdsEPy4C+5ngaoYfJYZMTi/RxnzRX2Bi079X+yT9RQDFH+UnIIO1rE + NhIaQxwStb1DmLLVy4BLRJfXXH1St/Z+2UlQ+DNar/Vv41EmjaHcbR59AgapmjwsDoJqd/zIsg6P + 86LycpGKMHV1B+k46D3hox9ab8IpveDg78E9U+ujHyGvSRn2g4/bH1xRyAjzqqivH2+wEvJQjKa+ + KoQDCXN/7rhuB5h7cbtd7JIklyOX4iqZ8pcX59FxBec+LNnyiHPv+tx3Ry7oHxm1vMwBUdTSOveU + 2QFnrttk+Cxwrp5XgVNGw2UyWcOGPRdxzykpscvVInq9ElZEFVl9DZbJeTjRZMk2j8Rk1KpbMgzu + z5LpGk2a2XByn26XcBHe62adJEN4I/UaymrHhmtCqTn8C31LZ7wm3mBqxr4fY9i0ZDBrh1ZM7NzM + N1uZbiZbTkr4TW5TZbHRQMWUbSaI9ljllQc//RgPxATPS4gd7regNe/0OsL+RMkp+ZhAd94mDRw/ + jwdEHBGoQv4WnR5HhKOcULB9itv0iev45DXtkBDe2DM4rYVlvns12LxbL/RsgUwGOzmBYXvpxF08 + +fkzdg6jognNX5RfJI19d68AgI5fnxjeMYKjG4CNMlbfOcXD0WYja9kofD7RjF398fcgeIDSBXcW + c70+HP7MDwgycDqZ3StgFEPW7kUXBJHksi1StnRxfQmx/6peHfoUxlOpDV1PNIQSXR1Zy2OM9eM/ + g5P9u1aXf1cscDKIyy66J2IN84A4WUqvhyS12xW6iBAJxFgo9+kXWpyg0AUkI7LL2THd9dpaB1M9 + zmsZ3VPQxmG3WkZ6xrqWUTZh1jLSxa61jFIU1jLGSHZ/UEnyQWbLU9AScjRDJx9NHwkmuwSB8mes + R1M2YY4mXZQbOezYRQKvHpE3/3L58fgXLFa6S8BoKzOW6E3haEcusx7tntHQeiPLC8JCEN6BUNp7 + epYcx5VaQ+tQozP7oKaA/1Vbuey7FZdMGQuZP9M250ROrtm13jvwK3ujkg9Fhtof7865E9vDudHt + Vs4aKbnkrKGrZPp/OKvhJOS4OvW4a/zqRexHgTOKQ8eRWG5nGq6Xqu1Ll6PhZJHCMInA0Yf5LaO4 + 0dXvJxxrvL8kazQLng+Tb+oJzEO7m9/eDRfJl2SRUTXcdppmyZEYdFF+JiTlR5BsLngJliS2SG4T + vhe4dT/6Dt3fEbncZ2HFoaIAQqoZdqU0vFLKl+lmcayazd0ssjdyHM/MLIcM4H+d5JnFHjX5gxeg + kfWkQaM11w93tDa4yM/qy81kvsQRE+7bG/hXss5Gw/lTmzoDXAbKo+PC2hR7jqzea6iS6ZZ4CW+q + xrGiItDbg2VNdUGCOCS/ymR9naK6wWSWfQFdlVAYw+L8nX9BZxk+nX0b+2SEe6GmdTscYL9HynrX + p9vDkD3aFQdDfPcWNPHJ6MrVnjG8sGPLtdua3No8uT1Xpnwre6AAYGr99EckFgwJX/XDOZge9hsy + 3W61IUvJpQ2ZrkoKiYuTyobs+mid6cET/9ULBq8bOyMYJVeRBGcFMa2Rh6BB+41UEVi6FdqxqNjO + YdTgBXxFO7GaVvfSJtHlIv2wIVmIRV7geZVoRdmfahaFsabKeubEnMU8rqd2qsnDKOXZlOWOdLDW + XmW/M+iEo5iBljHZhBt79hkMBG6HYjzEDxd/JFPGVs9Hw6938+ndkEr/sV4fVNBEYIeDzI9jTKqY + L4WBLcSr5Sb2yzzVZoP++k2SUzplGAvZIDuQ5AQ6apw5YsagqznfQj0/z6/pmhWzg0Sis7yWzbW/ + nB1McjHYLag3UQRhJ9i81h7F/bsq88PK53Wlz91DyneHC8BiMdL+8+l6j+jVU/AidQksNedKHJgP + onZBl46ll7C72ecQ0O12x1KSXD6WiqtyFzw9iSvHUs8LysfSse/EjhePfMaEn0Qgz4jILua+j68+ + Hl+e5lgnON0m2sjQFpdM42qCbU3+q5glTUefEA8NlS3ti3yB2nOgX0KLMWC2QZ14XjnJM69ZLX9J + ESQyNqAobmZzrG1A1pvWURwGceMpMxc2UB1upvrhXMWcTSkV97l8b5EtarxMpW87Um4h/O7r7WYn + RdPVKuUODCi8ycUYDBm5aQ1wRuUnPO6xfiqPYrHgLAbGJg4hOhnvLI2DzbMH1x5Df7A4ioWuT77B + 4l1maPFXv8lm13AZd8Tb0Hyw2nAGtCY8+dgFDOw0WdkzCCnlRbUMF5fM61DLQLdbKS8puaS86Kqs + ZbiqgGYhGKFvmvDRq3HE4ZwZjyIe+L7MgHqvR2F+u3yr8BlWa5A/rU0pIge8aXy7jca3B4drJ67w + DzwhdAb0LbADgko/23bekicS5rid8evgpRN0iinRI7YhJdmAEVGiazSp79erBWpLQXZvZPdWkqvy + XJ8/7s+Z88f9gkUD20fOmT+gpkSdElc1ovXZVXvGFaykteY598oh34e3azci5+NlwAe82hUt6V97 + oy4ckqHG/Jg8etYv1o7E8MMS1PbsvUMaaT0rBCqTDcxxt3Mqm3rINpctb8RIZlNXZRLxP98oDB3t + n8bT3HejKHIOgWHuk1tsH0jnkBK935wzl9m7Kul2KztHSi7ZOXSVtoTzP654xdBxnNCku3WDVy84 + B0XjjjiPQlWiinb5dC6JUzF7GBodiWgO2PSmpwkbjZB/SphC5w8Zr8KG2gT4dDOIxczjYVA2g+re + qv745nnMOA1qrr3YieFAWPYaYhnWMjGSpUfE5z2ZzVcYzJHc2/qZM47CqPHYxRBhMvzX4H3dS8+z + FAvgRppbEI9XWB+dLLMCdE9AfIxP0mORQj1ZrO4m489wOLtdwDFaiIQRQH4CvW+Uy3FOQm/m62wD + czxZDSVffc3Han5EGmTtYIePoNm7Ll4bh9lZDcQcU4YhzB/hVoyYn3v7DwmERQHJ0VjVe4AijWUi + Z7kP9pbI4pDeU0QBvz0sVHzpwO8Xs2vXm36ZT4xZKhpuPZE+Nnpz80YaUbpIgYG7L1+6R36Bdm3Q + 0UzqoWasR+pDL4g1G7gkqkR9OJnmtIcj/RdUJhiVF4F8WMWTxWf4m0rGvklsjVi1o4mk+D9+PefM + sd/R6HarHU1KLu1odJV2tN9fH1c2NB64ZjaM57564cYs8EYe567Mhvn9ev6/2zni9SlQU+g4qkE2 + 8x226sYC1U1NCb08GpVxwYOH7jNYiNfzhRhosQ/+fj2pp4Tv5A8A4x0mAqugAnTcTw0xxXa6be6V + hl01cpuYGqMYlnfglHbVogVCYzVr3avlRyVhg5ZxGz47Zc/7HrwBTrG8diiIXRkmM6BLDbahffGw + KTO7eOMqnOuBld19bcOYZ2AEz/J3bjhJV7yG3x1s9nunO/ebAtvbNimBt6xWuV3/HIQC9FTKsgMC + PCB2E/UyXbpmR+UGFdgs5rcHhPji/Ngedas8kE9YH9ijUtWBvET77Xo1VY5vyTZAnyoSx8T8gI+p + ZNWdFXkR0nvzfGD7hHL3XGLLA9E+eQNypqA+cuMoiG+TIdiAzdjRn9lTgy0uyu+vYQNSd7YDe4D7 + 5dCWDt0p+i2VODx90I2Iwb2tQ/ogij+omTbtFuW1OB6PuuGxqUdswyayASNsQtdIrb0rtpGB9m+N + WCmXIchKQ1VP9cNQmx/bLuqA3PizFhmBDSEMkXd9VcHslta6HLja7CPXgb23m4tePmO74asmjC1f + XqRNf5XNZbU5rPy/S/98viBqrg0v4IkBPCaK0ByHq5BgsenlFEdz2Nznh8cHfeNAgihl3WfBoTQp + LhxQfSVALH+90PwuqYUPL2ojVpMNbPIHbN97oJwjDkSoPQSfRVZwH4FAIucjdvP32Sp0dhv6tiPu + Mofyx0WvZnfp9PNhcOY+cyIhcLuUEHe9veseoluVg6tI5phn73Wj221J5lBylWQOrpJCeP37GxP7 + k4Ft4IahX2aZexEHPHJGDH6LHY1mDlPNNC/N9XY2xjof6FL8cOWRMQAEJ9/QNQN30m5Ma+VI4zwT + yWTIximSozH3bDZcJlPkShIOaoW0eA+TX0VSocm//Y0kL+Bv95P157/9TTS3TL5thut0Cw+kN3mz + 5Mh7vZ1VIT6xdkqcTBcYrIZ7JTSQMT4mQBB0aCNAUBSziFXcc30l/ZidqT8asuacSf2divwh6ObS + 2BnfyCOrb8zloSL6PF9WoImcmO16scFTm1uT5dCcXM1Ta4BrqmDe485Adp6xn9R09i82eYrYeUrL + q86tKJ2mLOWGh3e3ejjtmKJjF514aC+4voAtK5fAXd6lRVIT5cwLC2W2nXZwJQzkeq4Ml5gmFeVg + 1X+9HCkkXXH1nXZa175Dmf/YQYdQhbduZpT8eX7JfO+f47fW25l6wGpDy6WXtjR1nTa1T8eXrIa9 + C4mP9ViS9+qF5/tR5I08P3C4V8fepRt16/RmvhBBOaEfskxU50F/4Cur0NAfizW8ytfxzf8RNq/I + cwsw88hXCIheZG/Q0O22CIgouYqACFdp7E9+u4qqAIjlMKLz6kXgOc4o9D3pLPiI60GHTJKKZCSu + JGuRsCExuSQjINE1Y6H0JhFZlJtkAXNhjT26eBhDZ6WaiZgd6doq297eJtkG9ho4qm1ktGqNiFEy + i6NiYeYHEJpnJ2kW1WfiTJowxAO3CZ8clLOPqO6PNdP0w1Plw8xSh8godTg7vai848BmqLAL3/x+ + 4UYODswTGLYBTswCuNATVgF+Lm1jLf1jf9D084Mm9E6y/JIg/qvV4fEp5G0rHRIoB2L0hndk2smf + sXUhqiYMH6K8uIOvPQdZy9L1RnMrDv+xyoLIkC6yqSVpexBwA+LbqFZsRI2zI3xyyWtAL6pjBCb9 + sLkcCE63PyXdE5ietqLa6Y7ySR4q3hKfuS/Rq9aBtYQeseUskQ0YjCV0jSY4IcalyIKeEMTFVqDH + SfjJHX/WWsC8fDeQs9whqkfBrb4HjL7r+pI2uM7/BtO0PtOhRw/cY7vi+3WfewETDzSN1t7xbl8o + qzkmpx8SFIpyne6+ZE43jY5PWOtzId7U5nipngaw0O2JQH1OZfJlHh0icRgcAkNRwa/9hwL++xkD + sfP/MsmPxNyoCym0esCSI0lKr7Ak0XU6Wrx7c1ZNuY9L8CBuCKdKL/ZCZwQ//FCeKq+KhOtPD6/F + CfLTw7E6MyZraOf/CgO0EwqMM5gI6ldX+xVOlH4ol1oPVXxxTkTqnoQvHdaNt1E+Y7vVqiaMvVZe + pGkwX6bZfAMaHePsCqs1GeqorToI5O7bjXYR6NlnMkQnQWaTb6nYRep2YFvTzwtkbphqeD57WOTv + 1p6CWGE69WBTCbS9iuSgH2qWyEvrQ4lPKTeOLM1eLF+r5PgO8vZT2h0a2MPWFnaER4ZLPrjQUu2g + 2+EM29L4xTm7KnfeRS+dqNsyVQ9Z0/ipRkwaP3lVKuyPb7kyckFlwuF+vt4g4sHCSD1+e7Nhgxv8 + Dx7y4siVmWyuWC/TO3hzTDyE5+7TWbLYL/q4y4qtErh/f5uXBT6V3tR+8/6ZYk8VgfbwVK/vhGH7 + 10SX7Q0HNs4ZRF3nhL90go4WgnzI2kRQjZg2grxKdubsfsGUuVBEP80a79tkifXCmKqzSZaIgD7Y + dUOus3QLA9tC1cV9We2Pq626182XdwmMnxCz/6ijeVeSXf+mezcB1o9f0O9hGhPlM6rkZsvTh90R + /gfaD72Q55XHGdpKt5ueqJ/3yGDyXO4atTjd6/l92ILxdu3d5MnH1A/tXjqlGjylGqK3jHWDAMmf + sVUMqglDL8iLLSQBFW9/3SLX5aOXzo8DmcZHmEf3mPmbfBOIRaJ/Gy0A+zS+gBmQSD1LPxQ8KqZp + Uum9dH07WTYqC3vm+QMBoXJtBsfhfID2oqM50I35vX1dXY5QP9KHVrG4n4DPbKjyKePACAQers07 + iGz35uWQSrA9dDS18mdsXcGqCcMZLC/Wu4Pvk7nwk+RQyNN0vkhmY/yRL+UP01UwuFtndOBz4lBo + 0tAh9La8g+YwiPVKpCk3K2REl6DeotschqfFHM4elpNVp5ywkJGugrU7RweO4IydC1c4XIKea6wF + bcTCZI6xjRvlZRUpzSCxrhNT+CFbwREB92mYpPh6CDW62V7jpt6usBt5lmNa8bDrZzB1YHjzgVPk + QtayOGORIWt88Gv2GbWyyU07aI+IWKCP0QqjzdfpzK7qFHsv3Nl7k/V6skPewf5iZYPyiM4oBdHl + Qe7nQIKaM9YBKej/Z+/NtuPGkbXRa75F3rW9nOkiwNm6OEuWJ+3yoCO5unftf/U6i8qkpGzntHOw + rXr6E4EAQIJDJpikbFXV34NtUUQAxBCI8Qt63RLUXFCugJrjUxXh/b4G1JwHFVBzP0x8PvSTSIG5 + pgoLaCfQrIEQ02HTsyo2+aPDQ8xT+hfLUl57CarAwGoVQOQFRKHEYz5vqr+K+uUe2iAUJBa0nTPt + 3pGxS5ebVbAavPZGeYK3TDrWYPJF44AZV1rA1FlhVXdsJqNUhhrAVVTiKORcwCkXXEGjKyBjLrjU + hyVYhdv18tv2DolIdzzCG00F5WEBJVbtIbWDHNyPOVZ5lDhymspa+yEkgqbb50egL+CWKY63ZodZ + MXnQFMyxlhbZ/qt/AiiCNbutueEVe4x04baYhy3dc3kj69JtqhOzdpt8KuO99pmvi0r159PPp6NS + SilO7nJMx0cGU39YbpkzXwoHgZeEntdjqvsDlYHRd3MQCskG12+tYumtq+4ctLJ01k97sBf9RT0L + fdn8O0KC/HQbvyZkW3HV2sITuZQYXMsFjvePKL5IcFwfLt3EayE2itftxEaiXBYbxVMJx/X5QuTR + m3KjwEAry42B7zLMocD/FILpRYyoDs0elyUcSk5VKalPrq5+e6puY3QHFCuY4eu/eYPNYinsYHcg + s0w3hvxTqBsiCqtkIxZfDdb4ukTs2q5YUC2nI8aw0KNthpQtibRGtE2xag13wxjUy0r1Ohp6TX0d + zy3X12miVpQ9Cx/L3SvxweJjDcJ+4lZkzxriTg+r1dNiOWLXaekwTEg69CXKcYrHRV10MAT6ZnGy + YK+PpxvJANbaXCpuKzFc8e5wEDyXXQ0H7+XDpy1ky16ubQIcE4MsTEW7q49zio/VyMHX0yXe060t + R+0oIa/IvsFPuEF2W5X5n8IfMshX0AwSguheidCeY8r37UHKOcpa8gAI3r0BUWt6sqZ9Qie6GRS6 + 1pDiEjylOKgjdVALR9SKiheQxW1NYQgw/8tcILai4PsklW5HcJatq08ILiiGbzLKVraWRHvyTxl/ + 7gYtPfmykbUnX3VievLlU7pEt+mNjLI3t3wBKaOUc2mrVnwGyg6SFw495kZ/GrUCGWBUHWRxSg5r + FscEEUXl+KR2w3Zl+u11uob9sBY55NZesJ+C4ZVUZ1ntnjfn56/6gO/60XkOMacORa1J9NgeWW1L + DaCvap2c7DhKU25bo/hYRSFw3TyxInnu+i0zK7CJfWqF6KCUW4HPFJ7gLHYloGAIN1i1zsj72Gn8 + xXr1JRhdC58aS9ijqjvycyHBjoij6ViuA4GEgkKf8E7vFUV6LuJBKZV7BYf9Jpc/ZRkQxX2SmKTt + 9d4JsDZt2JHbE1MZuEyaLzB7poX5Al+3NF8IyhXzBT6VMADnH/2q9QKtQCXrReCD5OkP4a8Id6TE + DaxIYAYODQxnJFyTGGf1eXfNV08VTtkJ5spRiHi6UaqKwJyBG2aNnpgJSSC00LPlhuBmEGFoKm8D + RKXBmMj7mcr1ny78h3O3FbHtTP8abyqSmHAWxEkZ76fgsh1diy9V3hUDlshljVXsJVnn8ayAzv6n + oB80brwVRsRRAVRYm01gobBGML51t5unCxFGhIIt3MHTWzR6w8084IMnlxf8qS6PiHtV2zwiP3Tk + LAlBp3FOfzlYB6KdS+jHozAeQ+FQ0GbgcpUv6LbAVKPXbXMF3SqmGj0l3nP5+TNzK7ZTOHmskino + hWGUxEPQiHyFP7NJ51nB8gR7WNBjwwFzOf7h4R++ZA2X2y301Tdz6FDc54F9+ovsNq2xKL3K4yM3 + 06oX3vMaS5jDpkmiOM4RxwSrSDWoh9nP53tm9uPQYmu4r8TF4wtPKJirYbgGiSEKLnlRA1tjpMcZ + 5dib391Gpn2MefG9eqkVT/C0m5m9ZO5zN27nZpaNrN3MqhPTzSyf7gnmbsQaMaiiHzmO/C4F1P5c + 4AbWgQZ7ZVJf7QEQMp4zv12kgWxjuwNUF8YGkA+rmT2mUlmNGS9GHexDneGu81X8KQALeIAbpK9Q + dN/zuJFYU4tbM9kJSLx2oTdY5Qolpg//fKnrsNkyQT/wuCwtuc1EALcQ6gpD2vO9tRE5Me2111dn + l5/7ArlPZDaoAE+EoRw0iKs9G+i0WM6fM9YuKVY0sU6JpQ7MhFjxTMEgwXKtMFD6HpYYHURicpbf + yfxW3KItXr3L5syjzFlPAsfAdSy2mWrfR1W4UCYLQHe2NeHs7Urtae9N+QhALcUmYrrEL6Ddri1+ + 5UPV1TyUUlZTmHe6WPyElDKRzM4oqrBmQ6rN2EeCbZde9luV/YSprbCkXXB0nmvghsWqM17rqjNe + m6ozXrXqjLQMb+522y2w5fE6vdkOZtMvmWkaRzg9EpWXa6fVy3nfWFMm4fGj8oi1qCfzsO631hW/ + rE26PCCPk06faR0v2Bdza1F+5qcKwh0Q8ewb917hprc4x8itOZrdXWMd6R8as2/s8c6evgNV3giG + OheodU7VoQpkLaAYumhXioq9I9V6YP34Zv0wjnSlxNkRdNT9STW/P116botMHnrdyq4oKZfsivRU + 2hVP/7uCP+bHkYk/5kcvnsWxm4RsGMech9LecDpYp9+ZUHnE5MjysVRDugSXL6COEe9+xuCcg84i + FSUxR9fT1VICmQks9+fKEAnk/wTwZbtWJQ7O3+bhkvAfNwzDxtIEZbpSF1bzJef4xMyGlLULNgOY + Psyouks3xZMgk4Cz9UbFYU4XG3R6jDQOkYiAgH53q2wt4YpwnyiDJDD4qEX9AdvUzM4FAQLmEc6I + IDCZ4n5vp+HEFCwnLt70yFxpVM39yrRsp6v2ZI6B5j+i+WPHbRSXVkQ1OM0KDNmRhQUCl4LhP713 + o+DMnvOK1+04L1Euc17xlDjvh1cfcGZLrNdHEAmT9Y5YnIRBNGSwor40nbwrmno/Xb5RoI/LGXQw + rvDMOux2sbIGYyrkEMKvYi8uc8zTggt1DLstA9Y+eHL68uxpbhIrLolRCdotZS029KbZam5kMxIr + Y3Zo0DkoJMKSOO7x0B7Oo9n/fTpRuybQ2Oa97KUSMcqopA/awAeN4DTZIQDuPdiJLDoPh6ZN0Xl8 + 3bLovKBcKTqPT+lgv/v9Q03R+SCpFJ2P/chNhnGQKAdONWP39INkebhOcHF+W66/1OY/mKr96Tjj + q3wGMRRB3wNzNCepaPyhvodlFaNfp2O2Eg2ulrcYd5BXOUKQbLjchdgg5A94OlEpu0oykVIfEpCP + 8DvmFNNQKjfx7n5eFe/wmjLEr8TzmvzCPIl4EPoV/zII99PVFOdRSyRmYS2PtSdZ9KeYjmvOm6gx + HiTwARVqm7v5cilkgtKnNrrSjXHlHLlquhKp1ct6Jox2Gr/RaV0ca129raF0W6hNtsmEfaAs70as + kp5+oA9z7wrhbXOXrrKSPB+6jWK0JFuT8v7XPEAO8hhd+COMuENxAp4h8RkDVdS+ZrfZluIHZM+t + RHRlmLbaFhXKjegusLhVA2VhJ7QYox/4pEbsyw86ODKJ+SvvbsVOqpqOnSxuF+nbIMabi4o927T0 + Pc9TGW7Sp/sfqZPV6iIVB3nHPN3OMNsBc5WnknERptDGwZA3svVW6k4Mf6V6Shf0v14hh0V8CxVF + UXkylFF6/3p1CYJjoaKFpo/ImEngdom1+AlAiGpRNPa5/86Dr2mXDyXb2C6J6sJYEfmwXElHYxQi + 5ufsfnANeylDZ+FT53a2G8OKsKE/SmcgXo7wAcqcZddxsU9MgQoDwj0PEjJQo1FWfidK4PtByg/n + 5vVUj0QtsM9Dk1z74XZGje51yz4S3cuLSWXCKJPZ/VY4KI6zvHsEsbp3Px6n9jANds6CMGiNOKwa + WfNK1YnJK+VTUoM2q1umY9+xIf01uILnDnwsMcIopMScriVIhUpaSqO7Wa7nbQHzOtckdUMZY91Q + H2F/a3mEKTNeTpiO4jy+/KiWs/pC0VMgojjTaTnXMhe4W5DsbrztI53qOOC5flFfEmI3b6v2FQvc + vR7g6g4G2teUBjg6NF/xLx1Ny73X4XM3ahlKKRtZx1KqTsxgSvlU5h7ejCX/AgEPMW+KvtczJT45 + GCW+7wWd13YJ9BwkKkIp4bKmWBJOmk+ZTBulzJrG/ogUTj7NWZaK9UPIRFBCs9lycds5UZLHrDDC + dHpMwnVfPLozp3GjJId2gK1Yn/1dV0DjZyV8ds369uq2V2Wn23GoFtRayNLMk9Wo0wnIApdvzkYi + tKvN0IAGrevZ9obFx9MQe+v1DKSfOhI/6hbpDPjlhTSjSGE8S+crkBbSSZPHrbrb27Xv0aSwh1P2 + dT12dKE8lPODUbn0l5fcY/ZeTXrdyvkhKZecH/SUbs2rf52Vs9RYErmmU9PzX4zCmDMvHCJclB/R + PauCIJY3OhBDWbpr0KOuvq3ZSp8sMukuxsv1aolFKjeDd9s/4PewfssigxaOh6tv42p629W/Llkt + NBdIzY3QXH6YuKEbP/YMt1oASsOt6nlx49hCP4iDMlhte5Jvz4d1U+e0XPbCMg0H3+6m47tB9h32 + +eIWFv1uutnC64OvIDGggveOn/7P4InYCk8Fwqwe9uh6uQPxRjWAFx3cuzrpTrmOW1Xdqrt821HY + J+Y9krDjQ5HApa+Fb8WoxiNEUt/zJeakXCS1zof1eZl2I8QtZBR2N/BPELK0XVWl5Vy8ZNFrxltm + kxWbWRpxih0VzTiF5xJ4ZSRLKN6gUL4c8dGX6aJsOrV6qdQrlpb0IhlT71JgLTXfdDauIkHPIMiH + 4eh6uskrXvZhD+21t/3fw1iNi2xfLWz7oFgW6GjWY4bYV2mrfgXgvqy2XhyJpW3c4X2ElR/fx0NH + +0hdudM4WBj5+dV106Hqd8Co+MGr927M7eN76HUrEVdSLom49FSGTF+8Z95pBYqB8RIUQ/jimefG + PveHnpt4cWwKuRXBhvCQnoTu1dMqKtJwsMjS9ey+UEIC5NrL1Yx5L0GShUkqIel/nabX0xlMb138 + LwjIA/iGGtQsGXeNdGsKRx/EbnqCgCe7wWtR+Tx9agqpMBVNGC1BkARBJbjFAtSo2AFiIdl0UKm3 + oDMskY0aIqzPKkN2HvUCOrQ5lRTLue9aw57tv37qKRxCYu/B4NUZGeDH4ZYdNg/1C1H2MNhfLQkf + RM9hlOXyX+9Z0MIqQa9bsWxJucSy6am0Snw89SohmR4r4Y7zFyPg2jxxh/BXmEjr/7nyHmvXccl7 + BnOqsQHgE8Rmn+1gAqDNV+ApsMoySKoG3BgmU2yo0QZoadI6JauoBk7gg2G33YKeu90MUgRC3kxx + 3hWsTDYFNrQms/Y3Aa2tudpSY0CM9EBztAVpFVmk3pGR48WQxyAM45hVLCK6WzE16qZ4s1vcTp+W + gHV4oymC+wncpOGDZfJMETsLmbN6VksHrQMlOs5ff5c4eIjUxeKFMaEDuxLCg8BlRsKXrmAyaKXt + lOeIzAYabaPtJUHys+q5desgb623aEsR92CsyuOMcNE3k4hQL9yz8Jbcl0cXjfTzmI4yyZaUEiqg + ZiKyHBHL00tcYqxD4N4mzxlvFwEnmlgHwFEHZvybeEZ3kwgcqjG0iOcL+ZsiJYxq8+JARbWRaJOu + r5dYDqUHMwVLAtqRryioaWFJs+5sHEmqZ/yStsnsvRkw/Ijqo27upl+mc/z4h7UF1EZ1/FWsB5KU + H3oU4GMckD3E6gJp29LYa87Q9QVY7AbPBehfi7A9amMdtSe7MIP26CHJyeMvU4Wpkq2ni2x7t85g + 4AVpRrIU+vUvTb8fnAEhB6mJID8vCST6dmjgfRVrCpLda33fAyj38Z3sD85j8kAeHYZnaSh9+CxA + P6RYn9KqHRvXCge0SK2yOfozlB7T1eGYlO4f0N0K2wJb4y/DlSUT5CLR4/eP7zlrYSCg160MBJJy + yUBAT4nx/fP8FY8qydiiCnPRQhC+GPEAc2OGHDEQ/f3J2IsZdFCTjJ1DmZVS54A3JD8pQqCD6pun + W7NASpYRBbqbX7pfdFJ7QeaXvLyIX0bPmdsqDlS1sQwD1V0Uo0DVwz2QqqoS2cWoUENH8Q4sCheW + vJ55TwhL6MmQ916KdomKbGKu6wuZHc1neqgG9vOwZI+ovCUq8Inr3bp+39Fz26cZ2LrKlW35F851 + KPZb/pyF7QKxRRPrMGzqwAzCFs/o9M3xSzfZSLlFUQma4l5clxVe+zcL/VIcNsUfoCFLiGXaLCZI + VlxE/QB8PoTqDYKvRK+pCr4iTGDTXbZOeCJk67evLkZyyvuamr8L8LTvUy7h/h3bh6jcsaOeoNkO + YIlQacCu4+kLkI2LNJTf3793WWwvidLrVpKopFySROkpSaKvLq4q6CEgr5uxBb7/YsTcJHHZkDEW + RFIQPSsYWtPNKl1v72ejLd4K8oTCGIaiRMhkCvMNb2WLP+4R2xqjZylSRgAVYHFWhUaoCOXRgkDw + yelm9XQogcRErj50u0GoQsF10vH9bFDqeCPF4lerTQ2om11tiRzsx0O0n6RSE5cGC1ucPruMaGgA + EsWlGrkNxI8PF6ih6PzgJTqxWJgTfVa2y8F0uxmg0D/Hd+bAZcdLPD2oOi/z0DMHd6n2BSU+6y3I + QFwvYoB6vDI/ZFmCsT+yB4pIMKe+1NWfzJjTK3yqRdWzukvYl7G2eibrz19Lu5LEzT9wqG0HeBSt + h0O56NGeE5P5qtPHgCBMPrY8QKmLk4zLVJT3Lm9xk9LrdqkoRLmciiKe0k168fpzUklF8RFOvpSK + gqas2BvCX7rYZJNJ53oG9KsmnVzVLF1fjWESf5LSSH2YhVzGfafnouBd6hEcZRw4GEVWW8w7jCUs + ui68PZTxY3kxbVin9WZ5AA5Im8dEmsDvp5etBFR63epYScqlY0VP6Vj9ev6xHEvFEo+bVRA9D45V + BKIBHKuICdBsPFYlfwMdql+ni2rcUW8ov00uDkMUDKMmwY2zJPE8Xpf8RBthk92uM5kgbZYkDBph + 0LgXh8Bt/u18hC/TUZ+lkQo0MfXNOUQMHGwHl0CfLjdiXX1rBxAtZGBI/TdXiFVScf7Snqu/Wfg9 + D6Wrhrktwu/pdUtXjaBccdXgU3mtf3pfRSznJf7jhy+e+R7wh2joe76fyGv9TCeDKP4rY7dfmZD7 + BMsDw5vjTzrbUCJrT4QyQsjZGvREFgwsprRLxD30gmCXr7TWhTceYisA859n05pfEmO8WM6qmrIY + Wmm8L0ojLUkPQdwUFh/5AZyBihJd00U94/TiOLGhrRlneYoKE2ho0jxyu9AdFoMab6igwhr16VIv + YfvR54Tl8hYwLQyRKCqBjBb4v+uKamol6rP09rYeeKM0Nd6BQTu22/z8Z290Bw+zdh+6VKYWZw65 + 0qHZPnjzaKWfkTuSLp9rYWHJU++HxUsJB2vo0Z2N8j1hs1hSaZwCaa/dc/6KtKqxYLjthI7ZuEkP + to+lZaGQW3zwe2oTqrks59bIPW2yg7tiogRCsjcQTBBa1tJlEYjJsOLltmpNa497n2IZi6kURH6s + HoExqzsEioQ6FwnxYuqgWdO9aLVO3Sg+uDGqx1BLpqou6r11P+tB/oyUcxr0nXaIsKqJrXNadmA4 + p+mZjr3epvOCCXmyLH6fOr6lsOw9TYq9YpwIiLwyTiQREyka9Zq03tVg72E4eYntqMjIo33NR5SZ + b8kF7d30dvSaa0f0YZjFggsyk319vVyM4MZei0qQJapDshjQHkPdNd3QFht9HE2WizoL016UNFfW + 9FMEDT+ViKrQXY0whAEY2B/Ab5528V2rUx6rJG/eoi4WvW6b5M2rdbHoKWmZby8+8GqKd+xVUrx9 + EC4Dd+gzP44D4gxX9D3oTgMyDFgAGWAwCiOjUI8dOt7QO6dKZnmjykvQnFefAmcvgj4IRfHtas6P + dakWU/cShoCsFZu0im0ws7l5RXcqW97qv7rJBMeazGVJ4PvcZyVtiaLvM21BNnQkN/FrB1doraew + 1DCsJHy/W87RCI6KD0w0WzV9mEIj6rimJ8LtChfOAg67mk04JZNsPf2aCuB+rKUmkIJAK8rlz+wr + pl3jxtXp3yxKHPlZdJSb0UIO4Mb+EISQPgsI94vcDLtTyFaHtvSPItug5/UWUAOEyJws8lS1N6lW + Lhyq8Rd+absxFMOnqj1v37uJZ8/w6XUrhi8plxg+PZUp4hdnzC1D13Hm+YHJ8pMXzzwPeH009Lwo + 9KVj42pFgMEXmH1qVCHJ5+5bNr292w6gly+vUpVzvRrDzxXeXcUfNnkvCxt4eIJIbaziDmzO5Be8 + /QuszbYciw5z3IB6Z3SiWep8OgbNY3e9gyETMmqNT4Q30mSBFwU8h9cwTFCwH3biYNQ7IUpFVtBg + pbBZhSoqrV+VWT0REOGYJa2kdSFC/T5ZBx4frxzaEzrOxQ2FpyVSObv1H2ylb5Gdi/RTWBGYjg36 + OvOvQwx0IXSuW2czd42HbGtI0E2PA8/WHKdTKrTHEsrOUgt/THIwJwwyy9PSRrHuJfHYc1W5WO63 + KFooXrctF4uUq+Vi4al0vlx+qojFfuKySs3ChHucR8ME82SkWPz6+930GuPL9CeiBbEG8FBWUvp8 + dsHEK28uP3MhKm/T6QJP69kI3gXFQ+maeq0nS6z+IRpt7pbfNibAvWQNpeqeQ/Hw9eVQNKvkqgvW + DSzoFt6Fk054vmqH6KDG35drmAhgGZ/T6WyULsTBnYhUdUVtjZ+5m+3mVYgIVY8KgRuu0bK61Tyr + CAoLnzIGtoCG8ErZqTsppL5Zb7HolKyAvqF4dlnoSaQXwLajOYYO7uBCGnxMn8Gnz74gYj/0907O + Qw4PIQqROLAIhQKwAfmck0Bi0h2uW1Jrg41iIa3UT5OleNiKxAHeR4jFB1atpSD10xEe+sI98Bhp + 5Zdu5LfQysXrdlo5US5r5eIpsZ/PF1dVrVy4A0paeYCAa/EwwMKpEnjt8zq7S2flSPji+aKj/Hm1 + qSrTwlI/JG/ZVhPKyWijiDb7/fbqYoTShTCJmFX+fFN6Q1zcDxdFbNwk9qLErSn2V+54T3CzGzSo + 07Hv+yxyyxEtdZkoZdtBEgUNcmc90Rq+YGjbwD4O0HMuCl9acmZuaxdUrcQvBuc08YKVq0gHUm+X + 6/Q2MydBkz8p1lwSVQOx8rBwcsmPKnBV5J2yCCO9IqoQppvR+PTDBVZsuvuW3ju4j7WS7seM4DgS + aY2V/Vpm1uxnaUcSbfQjtuD4tb67Fu33e0Q7XD0/2KrxYPI2MBJ8syNvqvRVI5H1a0yJ3cDYk/Xs + 7McQbTSkROSoI8v28Q4rT2dTevwN460r2+hWtm6rvBvDc6Uf02Uo8rZuYP0znVXh7K6noHJvC7hi + 0sPw2qtkUOa9YCQL94WnCsG/o6KUoSl28AU9EgHKj33BKxonqYeMPfukugcg+SPS6zwvBzk/Ze5z + xttinMtW9hDnqpsSwrl8TIfh1Shdp/BBy8VyhEX5ZliKBnbH8nupJF/xFBxo5AATEpWePN9zhRs3 + cQNZULXrre75QaIrIFUKR4oBCDdB48XaVEIStAQmeLyksUQz3FEQN0ffaR08rn0Zkjw3qjAMw7+9 + 3MGc7SFvDQPAEgq/Mcn/zBKVnnBiIuaa5ZE4njV172r/LvCpEBOSWdIu7uQOoRPXQG0o/gXsEK1M + IPCfvRt9eodml90KtRXhft8MofU9Ou7RMT8eZ6tte598SHGAb05fHcmBfYU3xt9Ez912/Fe1scUb + U10YeGPyocwHIceRukrrRDan+R2jE4yYSVyJrOLTrVeTCzHJ9mVD1MQtttAz7CvY9YMkFku8B9Oe + eZyY5foRyUkWS3L8l4NYnRR66VLrylMFU87iMGm9k2Ub252sujB2snxIO/lmln7Vk1aUEzBcB8aP + jCODK49YQF3hadUHAuYx1yeZIfTC8u7bAqm2VyLI5ZIZCgYkNtxquW5Z3CdgvpuUhyPCkTb7BQ7b + 7REoxNhJhl+pqwYBC9VRT8Ioh5Wb9p7bviSZxwZIUgPS+eAGiJo+24KeBHBzibfWaEI7Vg1x48Sn + unlNZ6oPJez4PvaOHcR/wfPVS2hsFMWqH4V8k8RU5kAyiKOWhyN+gLCZZPMjw797UzR1mloctUpT + g9dt09SQcjVNDZ7KNNnTy2qaGkMjQilNjcdRkvhDHieidDheJh+Xi1E1L1T4+SgXGngtsBZ0Bo7W + aNBWTm/Q7JCrS7niycfXV0/znS+8jDfogEURFT3bCMG/yV+AM7u8XQioejjzZ2uMddNQhvBl3+rz + 3g9lq19dDYvJTwFsFN99MAz//G4zXA0xc20Gta8YoeGCzqfPau43eUio/eSfFJy80iibzmb3tBEu + 1ivfXQl/w+dbgaijR/evV76LTogs3W6cq3995rnjlnkkIXcrVufpKPw4jp6zuJ1JU7axNWiqLgxz + pnxIx2W6+LqcfYWRK2gYVcoQ1qFQLu2J4I3i308N6cssqJhOUqGZ1QlzxfGgwsF1iD4p8iYlMZGX + pZS7c+Wb71ACG9QHysZShRHTcbY9Ht2NMoHIgnB1+va0O8BhO8GJitkUchH0DI6Xsix095hyj2LK + f33PWIsrgV63uhIk5dKVQE9liOHL08qVwAXqZPFK8OBKYEkSuUPO3ZCrAENouxKXoQhxe7dZJa44 + /OiQnCPnQTeGAElahe7X0WZdsAHBLr7P0s12KKNizGJSyJDm6XyezqbpYnAx+vwNePv96PPdOtMh + KirO5eo6PRq8qxBpDtw2cpPuZXMNOvldMl6OYHFX2ZrORl3ichRGJf84OuCHBeQH0L14FJSjHBVX + uFnOJpWKt35gS9Q5Kw5R3Mx6bcmFLNgWljEWK32TwoqBHK6abE7sV/1EBQctd5vqeq+4ly8ydi0C + nPDpOF3ocQy22awcUezgnlQ3CwtdWWksMFxAap4q57bB8QYnghjBarmZCkGnVKqWxoFfgJfjIsWJ + /jpNiwO00dIClpCkWUvePrGvCxBNm3B4B4fskk8y3ziNwnF5dhUTTGQEoctDeyZIr1tGEArKlQhC + fEpM8OVvLyuluPzQdcsRhM+8KIlid+jFrnDtFmsnGrHBIlJtfI9FZUCjyjZYBtywUMyWGxHtVozX + 1TImsbWXu+saCBodl6tEvIb4XDPtP4obQpwZh73NmPdQkq9Kv1fxt+O7bPxltYRjUgrCribHKO7k + +7EfgBT8a+HrCmQKgqUZu2iEXxemRqftw9srEYOAHAaVO/HTcDDJZuk98h16ICQ4jHqEpnSpoxie + brcpjGJiUFax21JWyWQc5Id0wlYjWE9GsrF4eDYZc3c1lCwWXuH0S/iXt3JwR2oBOQg4xXj72sMm + N1c7dR9nWZlVcFEKhNT6wLnO5teCq+sZ/uVQSUXcX2JgtpuzMuy9UcpdTFeeFySR8c35d7VJZj+K + TlOQfR+Bj76rEbGTU6+lrTlvZI2KrToxcbHlU+KiIPhHhgtF4Ivdz0YYZYbbbJkHrjy5+HD+ahDz + JGFh8tQ52OCX8hufLwarezzA4nFO+B0MwsGRUBBI4kqoJ4rEQd1kOpkubEPOasKO1LY8luR+Y2IY + 5JCVCmfgaKoPKQf0C0DdY1IclQk9vAObO9iz6H2QPzT+sK4D2O6Tab9+rz76OgC20E+4mk8x3h/e + M95CS6bXrQRESbkkINJTWV776qwM28m9wC1VYglePGORGwZDFsdM6siX2XwJAgXZN69UigbKEGd4 + N8J3KnnvcjNOqvKefmlNhPCeqEHUYmEQN8VBM5Z4LAorods5bXUBGdpoGPMmodEgaAIQlsdq6KKe + 1yiH1pMU5UJM80uRYOK5XkNEeRNBU7OqmsYugF0V7WHm+Cu6dKU7x0i0FIHWV2d7l/FEAK+oJcjL + pxbsh3eZiR0mpkUYWuqMizqQCt/I7YvYUCSmawVax4J/FvVUBSpZukrhYKGJ8fOny6c6OBwPgJJH + /SAhTCyXfP1v+S8faBhT1U+NhGmrbOMuifSNRbLjZLrRgqnVBYY7jbTSmnlvJX3CmufgM3qrtGPq + QCOoUeuLFIeEvqNBqFp3EB3ooL3ht3l9eigRhFQU9lYRsKv1KLsG9Ne1R7aiv/DAwjfGagdhaQci + ev7NUVBrvuf6CrOzsEfsNnddtcjA95ND+6W7hWm/cBAQ8xDc0UYRc+SdZE7qkejmPUCkx1KZNs8t + rJC9nU7JN1yVmvPalZrz7EvNebWl5jxVau7i1aWob2RawNykptQcC5I4HHIQdHxWdXXBOk6XsOgr + WPTJeneLZxAUJGERvRaFG+CXM7FTZ9PVdIKZS4OvIJaiHViHDuOGSNdbtC9sTrTVFZi/cXPhoE9y + 57OSWBHUC7QnaLOcaWwItdbPFYzpZM3CB4SnER83wI8QlaVLSAmsiRyPwwSExwo5YSYUV6E5sIRb + USrj39RNEhrui5EfBqJ1wJvAHZgb+3HIy3KW1CloGmrd37CPWLMPpZZokZ+LzVUg53M/MWXBt4XU + xQQOa1yitoHPhY9vqpzCQlb66AL6jySoMwH37rnBk4vzzxdP9ebP5a75bradwpGpHBW5z0GDw426 + KmFJmJuLPCR6h2yGqqPNYJZ9RdUDeLs6YnTohgLOR/tRiJ6ehWHJN4NDiFaO4BG50z4KHBnDoMWj + 9tF70D4UN1F5o7S7THArFTTZg8RqoR5gufHN8rY4JiVRbMayBCLW2MbY0AmY6HFnnguWRWZUxdAs + v+tgswMGKcbybabZsl3flm337lAeEJH5crGcpffZerTZrdcYM5pN1PmTCb/16CQPkV3iSNaeHx2b + i8FKpPGKgdDtKqbqNm0CoUsVU/VDklAK5tTiJxWjaOCIC6wJXb9qla3nWVNMtCyb6oVRQrE2QaiC + +wWVzgjN3dlqULIjH81bY5fE/Gy3RTuiHUnrqKFAWn7VzNXTrImlduNAz5De920/8lECfpBe8XY5 + u50O0hUwnHRrb7i3bHyAW/aVxNGRQRWa95Avy0BoYXWnorp99vI7+73dT3/7jyejqq1Nx/Phvo0k + nPcj4+T23Z26T1TlLuayf43a1O6iBpbVuyT1Sv0uek6q8uuzD9yMmPM834ujkJVreD3jMeiGQx4H + vqwdfC7KmN1MiaOh6DeCeVqtQB0ekmyTrtfp/QjHMymmxKoSU0MFTwUi0OgbZgFIUf0epjJdwxWL + ZgxVFgyG/W1ULQzWWxmjR1TQCyY5ieEHtV8C5R2HhcBcvFbOcdnG1jeuujBc4/Ih7ZmbL9crzGgR + vvFsJYQscW7uZ4PxdDMShyXHx3Te/PryYiT0CZu3iTrII14SMxn7axvxti9fuk1NMgqXJTO3xZiP + T3ntCCWq9keowJy9yJ6b0Ou2YM5IuQrmDE9lzNnVWSXwFn2mZdiokRf7sLeHXhwEsayp+/J+lVL8 + 2BWoh4Oz5WRZdASBHDJeTpSZYboRxQIpyjYlfDVhGMD2G2w/Fu2viagMPtuMa2Jq/0KMw8ipwHqy + UxD3JzoGb1jMjhBeLNDXblJofDNbjmHs0PTDTswRTm6mYAQFa8YUrfVtulAYf8KcuZ1i+JQI/UqL + aPTCZZdOtnegDd7eFUzJaNLH4eXXgIN7JsdRToICw4tyhnfKn7usXTiQamTP8mQnJZ5HT2mT6hiw + dKW9mxrtB+RKMacCPOups+9d41Wzd2R5UULZI65HZeA11qbAhUckanG7Yjiu+ClrsB/YZSRwqi0A + Y5tPhX36R+clWDfqkNBpZU8RtiEVNmhrSNnfqL+YoryRHxY3BeyvQXl/HbkT+qpS43qU64rbtTi8 + 4/fTj669vPeijXWYovc2amkJyhtZhymqTswwRflUJjKevnpXYLOYJI/3gJmyWjT6tG5gjATDEH0Z + hhi6lB+Lkv9a+13zcqvKbLSVRn187bZtCFlXBLmBjnil0ri1gD4/DcbnKF7508IRvYTqlMIWung3 + mGQiFK5TzjbodLHYQ28+fDy2fmcvWdrqgCfK0steem3Bs1QbW0uv6sKw9MqHJFWvV9cq8s4oZ1UK + KXlyPhycn5M2fX5+ngsi+xrVtxlcYpeO6FjgZHDPk/mXfUQOhTU0aoNk9sTI7Alo7SlJdG8PZBu1 + 6eG4Lo4LZ3lU+BohrcLe3Qez0yiy7Jn/Y4uLR97hIR03oCMEORYGCTs8Q+i5ni2zxR/3dRJ+E4Zo + DyX5CIhr3+COCjfvRvjBK/M9MiTHwJVY4CxqU6FLvG6JBS4oV7DA8SldP++uLvwqGLiH8ngJDDx2 + w5AFw9iNItHCLNEFdHhYxng2gp+qKM9kuHm3WfkPXnertjZLHIQNwd1xEIW8WtL5YDp00JgTyJIE + Y8lLBO8wB3Bztxx/yVHW6imb5YrPX18U86GN4ebR7cUPN8w7KBBcT2uLfkVuCeKDcNVrv+NohPLX + F+WRO1fCZlIzH082sLWekhmqOv8qf/Eak1Znow2+MBmADnGL5tYN5VVudiuxKwe7BZqVs0k+2be6 + +s2JEcBuzN06M2fvBq/7fKiOOEPayhVEcduqDr1hdDcqM2Jd9R1Wuylsb59jA31iT0bC0hpOFyMJ + tYJs8/OoVU5iTjQIK19lRUGZIQMKZX1/yWJuz4LpdSsWLCmXWDA9lYAW/zqvRLJ6nJWqwfgvngUs + Snw+DIA/B54qx1AH9DGsz+qtydrYDK6+TX2Zx3u9YivcXTlcgQnpshUhgG/ZL1eF5Anz3KhS0qKs + Xr4bT8wSMsa9UEKSxOjZrcRswozjeFUo5yLhM75N+4iE5WESxczvDJ9h0CkErpbkFNNPwIKGq6eJ + XBnSRabJLBsCYL2INRW4j30O90n5tsBlHelYIrM3XNhqfozpsIibuktCHieMl9PsYaNU7p5y/Grp + 7qkl1JxrhersgTE5f6/z4yCr0UlRLOIyKco7pIti0U7cHwQv0Jgu1Zx0n+vWf4LkpEgG1qo92kIB + 8tyEwoN/e3PRdJokGNO8lI0kMR4qMoq+9yvDaIrl9WSkSwP4i4jiaBjbQUPj43T9PEBKOKwkIZh/ + ePmmwnwbRJUmNB7PI8TXK3tStYgO7cnU1QvrwXwAl0v1FNfeSXZL1QO8ROARKM97FrYofkqv24Hy + EOUyKI94SoLc6ekrVql96gsw3hIqTxIk4ZARIAOKce/ugWnfETQhuueHIlgQtAyZkfsqnQWCj0sE + K/l4nv4H5hr4yXQ23Yp5l79X5fRmMLgq3qQOeTOSR8pVRXP1krkxKCFhBXLnYBZOwEtiThPN9riT + FTo6sAp2E/e6ZHo8knIpal/7MvCHBW3qxYnXLQN/BOVK4A8+pX394epdZVsj1HnFRMSi2PMQTIC5 + qqTvZAo3zWIjhALEmUKms85W6XQtQYxI3hEFkjX2jogwGU9xV9A/l/NrWf5maMJW3exmze8OrrPt + tyxbqJBDGYyIe0GgnV3jsVGH5cPmrlpBuK0qYNigHgCbSs6W+ZWmCO2ZqXoF8dmLfDgZRiARMpEP + u+2V5BtDXcl3Mp3DoSYsqM0dCLgEe6s4DW699XKzWX5FI0t5mpUoI+Wnk8Ec5nb0e8y9d+JCkrcF + ngFM15oBJxfIukuxO9LZFyHKAoH0lvIpNWFCtBLYZGfP8dzcphJv7243h386uFW1JcZjxAd4rCzx + auu1FDg5BerMp5t5uh3fHUklifyyHQeHNEnnmESz2U7nu1pnxwFZ1WNEVZ+B+l1iJRq0BhztLaik + u1DSi38A7g6Vt37cMEBEI3VKbRZo1P6bFO8PKIj8knG3RQi5eN0ugJwol8PHxVPi/WcvL8rGKYbS + Szl0fOTHrpewIfwVR0nBOKVjBnPhEKFkPr0kBYiY79n1qmrRMbH0S1adpMm4ETPgwm5PHLiJcAXI + tCkn1w19xg9QdD4YhYu2zbMmiuLImTsxFP9s4uBKKdbngtxJHn2JAdcN+cIvoArn+Mj7IfZ+bvmq + Zhp7Rq1OXagKhEe8VYFweN22QDhSrhYIh6d06j6+elWFvU/8uFIgnLkeHjzQJbzQ18D3Mnbw1RRp + w2e/ym6ysbAEMHngPk4m1Wjpo3CDg4q0U8b32W+pRNwRr9SDASpv9JKbK/kvHzqYKxlrxEVS/Zm2 + QeM78qoCKIOqUM2JnG5trIONKoGC5cyeFFqOy6hL8wy22QKrBQtZS/Yma+sWHDvwejrYEPgRnvyR + NMvlsyH8eg7uobzUeJI48rsP2fqk8CYm+IC9zxZ+5xHb/B6vTau5TF1P1hfF7iJdTjJ+HTx3k3bF + JKmNdSlJ2YVZSJIeEvM6PT1VVgyCpnEqTwaXX69ZOctZk8YsZ84jpx/RvxUsl3XA86M+Eg+qsPQD + M/WzTu1xgWCU970XGLH9Vupb+4rVObmDkY27AIJ6lIvdlU5nVaw7nKcmFBOhg1hZe6lEjBA1JEwg + rNYImGX3Gn4B1eT4cAm3ewu0UfG6HdooUS6jjYqnMorsvz9Xgsi8EIMUSmijPI7dKMYyTZErQxje + TW/vRunNzXSBX347242XGzMbu9HavdmtsrUyXZmhZ7BhdmNykM6W3wq4QqoDqg8hmtBreZqh8Z4M + Uvu+rcaoldEGzOCyuBmAiiWMhxUd9QZPefnb6+3qXtDkbWduyGK/qgDXzWsT7eBH0TaiKCIXbu2q + 4o7b3YI2Azkmthq3ViHusu8GZTMlNPQPToPzuLeug6dSe/tD1skporgyzAvlE6brawEereMcjiNG + iOTlldirpw9Ufk5/gCohXTWayE1uFrQKbbNEH6kVD36+p0l66oxtcTS+Bx5yMaLN7jZdv1D5Q4PN + /bwzXbHzTDZ5EL7jcExKIAVp4/y2hAWp3RZH0T04XhYwShEFqb7FPFjp6oKLit1YZLvdx8wx3Io2 + hQxFKtlu+gCYUeJQnt8FHT9nXssEL9nIOsNLdWKmeMmnJB6tNjuJPHoNFEa0Iague1GLrfzyAtsZ + mF/wgBTcMKDSxpwSEeDCvE1nhMAhbDTfMJy6EON9cAdQmQ/Kw82+ixXVWZS3R9hf4Y4U94QeTLv2 + SUI81UAy2G++xQvF52I6KjNpfxLkLgpdid/jJl4b9B583RK7R1CuIPfgUwnh/+m/yzWeWOJFUdX1 + 4vPAG/p+wmQ4STURrpBllBseJYr/8nu1atMctpyQU2qQ+7HbpEGMS3zuep7bOaa2wZFe/TDTgqKH + XW9p9hvFT2PcDbGlYrvsR9sPm2R+Rd+5kjmYCmq/8kHlmT/BS2U5ngpTMGVBYPhCoZFM6xTIp+i/ + byCcbwEHd5Z2FbE46S/588Fh43tJ/qx6sQnnobLr+7Ep9WeIcuQuxtfbnwUba3DI6PY8O2PsNXOf + u0Gb67PQyu7+LHZTuEALj4kX3i8mrADSQrauhpovVKkJNOwYjdsSqkXYW0otyi9iJ4jQEke+QGjx + Ak62Sp0ulEPVkYDUWC229nb96TiJj0PZ6M8uFzFWyBQWFjXbOkB7krMjn6y89Xa6xm3X3oSrjhyl + IF1cMp7Y2+/odStRQ1IuiRr0VKYgnb2qpCAFwo5btN/FL55FCRwJNoxADvFkhJ+ABB8vV/c6z46C + FcZwNu7WcGomGYj5U5gJFWp3NZ70kb/jw8y5SfCIoboKCW7pYvAevm2yxIqrhGaORu2Bqotzl36F + vTSA8yDKN5rxGicDDLSDnxX8iJppRF2BfQoiso6rw9C4d2dsOPh2hzXtCViNnMh3WfpVVL+l4D+1 + QA6uvhIHQk+CQbSvrNpLGHfoaWN2i8NAr1sbs6uHgZ7Kw/D5pV81ZpfQMtGY7TEOCvPQY4HrSpw7 + qo15NV14K1yJ7bfl6O7+eg27RXJzOgDba/+46ItCDWQv8XyvsvuLsWZmcawosqHU5/YvFGTWM5JW + 5uREHRPcy/+zeHJ+/pSf3W9CytG/gQ8BEY7ODe5d3C7ZGksYjnET1+VknQj5TR4IDNyQWKRokrrN + NttN4aCZoqoZZkG1p8QJQvIF08TGwU2S21Y5e/Qi9CGXaQWw+ngRtY8MExsK+wI5vcitw6Gh1Ksj + LZCPCzwi9JWdi3tv29ZTzRvZ2rl0J4adSz0tIsWq0m8VlDH8sqlwgxuvXE2vmbPBP3jgA2MldMRQ + hJEWwLyma7zdliLMHMQyaEpmLYukwzh2pdhaMGsJ8QxrZ+DMwxnT9K1o9oRZxhIW0yFbLkQ5S5H8 + oOaxqaTHYRtxwhPxySi9ipqz6w7UPMYoqbG4gF2oJVbUhnoe0KphEXaqOvA4AbeJFYU7RgjclBAi + ykTPchQMS5eTpUDUb4lZ5IL4VjpGSOIUJut450lf+HAMjqUgNJvedgqoiJIaKpR/IuJi0L24GC2m + W/IewQ+TA/cV7Cu6M2Rc9AoU8Ax2FBU67ghReRTxvbdA7MrtJHPOj7wEKEPg7SXzWsR+0OtW4rKk + XBKX6akUl39/U4n9YEFkJj16CeiOgR/xZBgFAVfwFeW8R5W4eLsG+tXExb8SnLNOV/S8UGhcj8E4 + o3ZVqLGZk7fRc7eVCy1vZI3NrDoxsZnlUwWTuPFcV+JO+e7VoHBbSnXjynOd5t8IAgLbNHRlCZz6 + tIZjQzptqO2LQOBVEaXlBfPgSKN5I58giWimW+5UzkMeFfqEdwgxO184hVR5PL92A/oupEmGvJU2 + yjTY9vcEXFMN9UKHoLKCBrrdyfj95omwx0Du0MneGyIP72bRa8afu1ErRaHQzDrIO+/IjPPWz+kY + by9Bj1WA56IUEaVSoNqg8E0NBWJPA7VjrrIFdzb4B/BVuHZiiWwaC0P+tgqxrqksSS5Cel8xvhnF + Q5RPuvKF3rver6PCfaK7a53xRYjxJD2LyUZ+BMSNqe6OH398F4cYYF6HGzXGxSJb91AM6ngEEp9K + 6Bn5fcvdttuo5CJ5e2ewe8GkLn0csu30hfbuB6xQQqFDzHrAdOXIjrS6e7cU487jmKKzpLV9RzWy + jmNSnZhxTPIpCWGz+41MMUxnq7t0JPyh6WS6QrfYWuFyjyo60n1eYrZsE9pHqKpslQi9h/E4OCgB + Y80YMfs4JNNMwVtrVxt1f0CSS8Do83SMcQVCf2i2grQiTGGsaKJe2FKsLQJ/DKFHlV5zmM32ybJ7 + ttZwOvbz9BYj7nbz4y3EbhxT2jaG7Iz+D9p/RtL+M5JS7L/JgGpfub1n0gc4oJ/b3m+6VL2KXG3j + dt/5z1mrIkF5I2sbt+rEtHHLp1IRvVvKKLu3lJ54ebdU6YlvZXoivOLge4ItuYwcqhEPxdkgXUe+ + SkE6MBWb6e1CJf/XFZmoume60bPgS72FluYWCl+b9Ae36+W37V21cRPq7J9MQW7MCLCIR7dNJ3jA + UB+PBdS8PAiMG8Dl205X+/cnGgE9vdoqNx725dYuMSJgvBABXO6uIYyvr3TIhKzlb6v5fhbLF/BA + Nq7tvsbReqDFYTbJJI68x1uAGNPrljjygnIFRx6fSoywy4v3XhUlLOBxFSWMMTxVQ/gbyyMSMzUx + UKomPBkvC4f+Nlf2JXLXejXzqthdptZFDasWJjPYKDTsxgYqL+wJWKdKYHP3XoqwtL4feGEFJd7C + JGRC/3pNqWtGB72A2CiKzjEL6NCu0YBdkedi2CUmOFT15ibDan6eHgXsTMirQ2/aFpbD6kRyP3x6 + Fzvuo7Gx1s1aF3p7wtMirsOjQ+62tKXmjayDo1UnZmy0fEqcs6ASgSq9cGa7RbpK118Uap5JCMM6 + E991nN4KyR8f1HysjKLcVJGnFgM2ckvlQLexXQrVhbES8iEtBO6vbI1A3iQyK9bnXH29YUpF0C4p + eGbQxYWJk5DM1Ukky0PlyBuyCt3XrF0ViYdT5furFvoXNQqoXeqr8G7XbRXeDa/bhncj5Wp4NzzN + hbOgAigWeEFNgDdPojgawk3MFSJPR9EsqAKNPaBo1pvU1NiDFpvSbL28Fhxzs5quq1isiRuaqMUF + kLF6iq0FsfOzCsXjBbGA5UHgroAPxC/ATV73pbZa/99YmvsbiF77RKVAB5GEZ2H7At+ykXUQierE + DCKRT2W9stefZSS5I43kQPXuftbknDDoYugI44EMHaELui4xTFA81mv8ZwC2ErFK3JiAkZzOj6Pq + hHZPkIoIkPNXzI22v0HpdasbVFIu3aD0VN6gLy8r9yePAjMX2/dePOOh73v+kIeBr4Lczov1XQxO + UjSi0n15va7elo8u6q3DxRdzN+Z+nOeITBsnR42R8L2l0KskYsqIKqRrFDKipGV5IkBPBSDOXbri + Q/zTG8pkq5Uv76uNg0urLj4Ge63zxdfi4tqv3kTaAfwmeu7G7dy/oom185c6MF2/4hlt/5vpUqbf + ipjqPGpaJf+tEOvou8BacA6/MngD9BwkKkL+g0BG6XTEJoL2FAFp9N+WBtX+0dkARxJiQUiB/dhg + CQy5NCvW4pMnkXlqg9nXuiB5i2B2ZWC3wE9aLBcjC0L9FErvwRhh6zmx1xgfgS+mL4wn3yMXmtiR + 3w/hothPUeCaJ+ZY+H5XxsMLTtGFUPc6AD1VnJfU+sr4imIpUV+85C/5czdsJVHrRpYSdd5JUaLW + T6XNK52NQfBDyOjRbPpFh+yIxCokpEJ45GIY8AumpJ33h3eCF0fSRvko41B6lqZ7ChmLEq1yRW7y + nPF2Ghe1sVa4ZBemvkUP6y3T0p1aStcdXE4nzFlPCXsjiRNfYG/k2U/bcj3e/WVr7eInE9J5r2Va + 1SZbba1vmermsnHqtw8j8JgryzdgVAfacohjHL6RW/vOYd18EUmJ0SyldTr6agiYvPeqBJs/QW7l + WJVG95hvj79Fr9u6tJFy1aUNT0novTh/WdH5XBEWYTq0R7BMrs+xoFvCA4UE0JTaNFlDD+POtRce + P/hFUbMrRGRk38cUCSLx2J98fH35VJd4QkkZpJvL01e+A394fu4b5rynYk5xAd0FhzQqD+nhCTaW + SugVcv0HX5+U+U9aDw24Q+mjWIW0+H4L/D163fL8C8qV849PZWLj1cdKYqMbBqx6/j04jaE/hL+T + BNVHgcFXLFMH3E3wOonkNiVUh6v1NXNXI/yLrQZfpgtkkgLirYTtlUO3nejav5vB728v2CBbfdc1 + go2SInsxAFFb/HW5Xlxn69t/bHKosCdXly+fokFbW5EJr2SzqKJf1yIr1MEFwtxETdEjUeR7MasA + SmeLDG+UQxBnZTgHA+yPB8ymV83yFtltWlMttyUGoMt4Y6iM7PZRYACemHUU7TfoSan6TbnaTz57 + Dh4gzb/jgDlyfgRrsZ7t/cB+f/KS093RB+1bd4uNPdA6jKpzXOIJNqvVG8QcJxDqYzlJSwNN994O + C8S8BMzIjsFlZC1hGVktKqO0BY/vcZB38EUi3wQxd2f3Zc3e6iWjR9QCXSZztGUYsulg64K48mDp + QbGsGZ9/a2eqLJFutkNUBaX3IxSiNwhoI8rbDsypL/Zc8rL/XGtJJJE1MrRKHplFLWTPnjBOXJ8R + D2rcuj1YTTv0cQBZhewMXYh4aA4QS3K/nk6W3zF4RKNfHifNe6qkYtwiQJ1ety2pGFcD1OkpSfNv + zqslavwkqJRUfMbcIAl4NMS/E8zdFjFQ+EmrIq6dKNQBYthquRYJN3BhUa2/PEcGz2A6uJ3djxEp + Vk3hdHI/A86zmW5BjHzy9uL8KczXGFj+0FCZkdQ626KkRdJGAcppRLb2Rak/EtbfTGtK1eQvPQHh + bbMbvNktbqdPTbctjxqxNuFweUlQqQDfl7mBvk1iQdUWZGFBnLCm0XGWhEwEof8JlsnBnagLMyZu + 8tdzfapiDwXwsT20qjCij6cKAae7qT4HzkY+75yHxSk3iPZeNjm2vks3J51i477yL/hvwuesVfC7 + bmPrX1BdGP4F+bCpVKQZQTJPRQ8wMpQtYL7ebVZRXInwUh1hgFcsAUNcgTVUjvwD+R4ZFAaQwYkX + ReuPlwBCPyC5R7Krm+Wsm7ndDRPSdIvWw6ZgcXsgHUZE1TCnoowP8dHa6T6+K1CyfXVa5Zk//CGF + GKBVut1maxlMEJTjb7qMsNfsQqvChi3c753LJNpWN7QdU/+VDgfaoRSLY7lb4GmBJged/LYxhnGg + gq38N/Fz128VbEVNbIOtZAdGsBU9kyFWBfHCRPFxXiJhiYWs3acrkUmi6WK8deB6ko0R0lYerGxG + 6cNNBXcJ8E80CPfD1lw/pHDvFN9QUtH7q99Ga/wYQQzmZzzdyFUWj3P7yODJlXx3OAiex1cD+qci + 8LTb0MLq0HQnP3NsPlzzfmGlsr0J9g8YRixg/dXJrXU1HdmsTZKOOOOEayAp4mVgH+puZy6IuNio + l/tcVNbsI9SxmsznbfmHbGMdrSm7MMM16SGxkN8u3riMu87H5ZivRvCnt9Kzpc4+/k6JT6Va2roH + xK8Iw1DyktIOhZsXJQExT52zxH7GAThk1vrJJ8EDgU5co3WreMSUqK0aq60ac+85axVEptvYblXV + hbFV5UPaqv96hV7yDFR1lS5ZeTL4sLtlUeLM6S9R/y6RBd5DOsRa58frbSvQ+peDr+l4hzD/HSTq + rmp5QpGx6W4LenB628ViaEFrv1YOyqQxVcd9k+f6Ml0I2ipnGEjgGOUN0y4UGYXWDbdrmkvz2KB1 + npNPxuV0M15SewML/HAgvuuRPbSowat98WOQAQ8Zv8X+bdyqh1r7eet0H6rgATo/uzLV4fg4a+Wj + m8EFWAvdGkfn04HwTWxbhr6SEXGvumgtZYj4zt/fX3peCzM6vW5lRpeUS2Z0eioToc5fVSu9e2Gp + 0ruPlaLcMAqHUcJiV4bEqMgwI/IADzPOCeU/TSdV23XRFXyg5Poe+7Ufx37Ffm2mPsDezlZNASUu + EDAKjJ+/PR+ef7gYFirpMKzxyLyoZN3OLYZG5CrqXAUhp9hX5PpRqa/6T+mzj0J6MnOZH7tlnBjN + yecY0KuJTnYiMHW8XPxnd1vNBnOjsPwtw2Jfas6cTyNlgxeW+vJSG2b9FDO7Uizkg+4MrK2OgQZ6 + DmjL4AoSDhpV4JrQwoooGjTJr9Lt3TcsQKQSAGRwzeVyzldD9AnsUuGWM8MX79IFqNDSh4/9Xt4t + 2Yoyyyg4JzOGILvRH/A/Gbzu4EHSBYQ8LvKtcaqUAezwJFfYSHNNOxdXtGwaFK7vg5foMcbFAzJR + VCG03MyXOPImgnu+DLexnrPqAXhIUk0pW25C5VJ+e3NRKnNdjgCZl1Ca5SpXzFt6rqxknl6SlgQ7 + pSbN7NdGQHgs2U+xxOE+wPLbbJg+Ct4lFOh++h5GaB/oSq9b3emSculOp6d0p386fVMOdGeJKH1a + DHT1XowCHrv+MPCjRGZ4/J7OgMx4pYLb8cekGtz+V6rt+PoraPUi1nE9nd2PctCfbTqdjbSbTqJ8 + m+4HtetkPgRVaMwDektvC/4Pw8QKecCRNoNZOv6C2+ttNmcrVTUP/p7N0tUmmwwHt7PlNc7OEAVJ + OCurjJKyioRPBnAqTBEMmAdGVC6yEezf3RieEmYjqOB3ztvXH3R6NFpQpXesDGwuHN1AZ7qttx/v + Y7sPC2TKQpYIg+JXuEjhHh9p0ns04IdEIf3ZmCbHgNL3B2//J0iU/RE4ohbTG7ikEWOKZSc46ePx + RfXE9pSgmDBtJj8Nn7tJS0h7amNtJpddmGZyeijx7NNbGco6W4JMj98zgjUA5Rt5mLrVmQNqPMzZ + UkKcIGi2gUIPVBwkJczlfugry6QscbbqIWg1csnopi09KLyjXNleyo1DsmnSwPoIfQ0pU7Mo0G+X + 36f2EjPMWuKVSUzWu5ptuqdutz2RpmGEAZOQxet0vq8A4zHeiD6wFluRaGHEbEX3wPUSJ820/rTX + glbtGMWmFUkd/tT9MBpOP5D5coiBy2X03V6m1T3Ko3NHey8KriPNWNwaO0y2sY40k12YkWb0kC6K + u+lGF/hWmgfMCaVSOTAzk/QPUE3QfgWi9GyUh0urWgoOkhDIBpzTBeEyV7D0O6xlPbFPGLAPdziy + g/3Wm4CEvltQgjCDIuuej9FPJd2e8zq6RFD8OPAIfQV7FBdlsxOPQAiEnRRZk++j8lQ//e2XzXur + iNsb6wZSFDtVR2qonwoT4QouDjSVI9rZbtU2r6hTlohi0Rp9OQy95yxqlY5GTWyT0WQHRioaPSP2 + /G17w2QdAfgnjlrcq/QfNVxfVsptBSJIr1tWyq0DEaSnNMxXL+sq5XrVSrkhiPuJOwwjlrCDlXKB + frVS7l8HTqJQJ1eCb/5ISAO1eajM8odL7vn2m4det9o8knJp89BT2jyXH99V0Ei8ODE3jx+8eAbs + iIfBMPKZx6R2e6lC5/C0v2NDEFPny68wdHI/TOfZWnuYPn1J/0i/TGFS0luRmKuRiE8GE5R5J7Jd + ut2m4zvKSEBvWvCPEUjCFPOBsA8b5FcTuU8vF3f1wJalHcq9huT5yI8TP4nKG3RtfFmD4zYwqRb2 + vUFV71aJLTJT2rWBwMxNbEsjvx/2iVvGdO7VMZtgjHzs/9sprejJQGgWsBJo3xlMljv4cUQrACsE + y0UomljJEb/u7v56PZ1sqrgC+KYBLHB+IhZXwrPg6s7T+TydTdOFfPnd+fngCb5jbt69LTAtCzY0 + d9lTBze2doTGfkT4umRgxn2GF/QBubDuwHd15u0191rgPe3hN2b2bZ+F4/7apTXFSRYWnoZTb7Ux + WhN5WMuotj31gxGYhBI3x2VJG9wcfN0SN0dQruDm4FO6qd6e/bOKm8XxJJVwc+C0syAZ+nHghfKm + +qzDkyU4SikBC/QA1Dkn2ThdXy+/388KCs3Q9GqJpEvJO0ALA3qqNbDJYMhciVUNHHj0+d2bk2Im + 0XSj3XLiuM6yr9lMQAnn/6qSGKhUz1z1E5ff2/HXvTUQSlcMenkarpg4DnjsVW7BfFrENoRLRQAs + FGYJY6yeNlyPXhSUrptiTFMCfNSDAZm3mupRKe0l124Y+H7TFVZLD52PYrAUcLfcLSaNtCPP3RtP + FEcs5Ozfzl9rLzl4rDSajs9DR84zWWPM5dhzVzbG9wR+WCS1/9qtFrFr197C0CQD6fftjD20mxy4 + neN1f7LztoGGhUCSEKS5Xh9VbN4KnkdE0EiJShjY2uD877/Tgf0Ux2XNw6x3duzHuVUFB/8oStsm + At3997NLGKC9SkmvW13UknLpoqanEuDu9LNfifuJAzOW1wOVkvHYD6Mh81wexWYsr9AaChY84Icf + V2u20t5TCWsngeTSrf9w9Q1KXdbfdqFJxYje5aA1BGVt8C375YrWe6qSGvD4IXMRusX4Ho5SyYwR + 8383RO9yEKthlstKIm0y0JmyJZy5kkbooWS/98qTA3eusvUvn+/W5ZkoZpRu0tkWVmmWCSf3CSZG + YN8Ik1GCN/u8/sJWI/iTw2rC5t0I5UQHzWTrk8EqXSMQ3IyQ6BcTPH9iR7xLZ1iR8y7d1G0OB3ee + DioKXUKGk7m9dvNtw/D1VeKHQpWpqdYiY/TXjRVb9nsD4f9KxxSqYc06Wt1MvUad4BYvfm75OLSm + ZuRDEL7UL9u7dUaYRd3I94HW3kcOvEcGh04f0+ftoJP0eHLqP3eDdnXPqY112XPZhVn1nB7STTFO + 51wDvs+Xk90MlqqYNDq/R//v4Hwwm97ebRFyA346g1YONqU8UsZonydMiBEl6O09eV0HImMKRcUb + eMN+AoxL5LbpsvbAHmABhJtNMOU3wOlQXBrh3IKcuvyqZLA9ovOfKKNOEeFMwvIpIpRYB4eYSOrg + h/a0AyaPolk33NJeT0Y7xe1Lg+nHUXCk0/fR+Ip7yg5IvBxZaYzigB1eaWc8pHpI/IP9+p5HsAIy + 3wx2x38yukQO4uMrEgEjFUozuzZArUfUs28VAdqmXktvcaU9pD8k6qILXoUt6ynrNrYXnerCuOjk + Q7re7opuVpWQfvHfpyXQFYMaBvXEMQX1RK5n5PMelUAEV1JIF0LX2Hc3Zq4hvc2W8GFH5EZ5oLcI + roxmLGHLFxgNhST7PJge8fRE0S8RcC8uquvl5H6wgV+Koyfz4axvm55wodQx5ozsGGvYLUvh0MwH + PzS+jVKaD47T0rDUUNxdsFHd6w/goX3GQ8Jl7ZVJ6W9pEQJJ3CB0KRnq43uPRfZGEXrdyigiKZeM + IvRUVv14c1XFCXWZ6b3wwxfPfDdk8dDnrgo9uVjO7mEzLZQu+YZy/M61GZpLK8jFzaaa5SxSAbVR + Dp21qxI9lUqIvHwf3H7sN8HtM+b5Pg9kXu+P6NyoohyzhLt+2Wqjuv3Foss6kw7swNC3+mBtbjE/ + 13AueFHS4LhgsN5J7Jf9+y1ovTodWo6tPBUlsvERQ2xFsmGkzrk65iXPCrDa0eE9JBfxydnFm6d5 + aQPglvcYnVCoK7DGCwULgiJJj+JKck0CFCiMXrgVCbPTG+BVqGIVsmipH4p4gNGts+t7WTNAAMPc + ZTnumR6/bizH5SAf0CitoLw6cp4E362bUCt+345Co6/Gk7DgxpTbDsCmaXPPUvwuJS63Uc+6FSr2 + o+rwWzKsdralnnrc71s5BEZW9bf1IHyHLhXZubhknvev0an1hasaWF25mnrp0lXP6dr9/OlDUL52 + Ay8xi+34MeKKRPDpQ/grcmVs5GdRSx4kW5AI5YH+JLIQP9Sn39It/Hk5D/Z55au5jNtCP7WXX+Tz + hssv4Qy90k0ei4JRvd5tEQdh1UnfQD7n+3XgpyUcV+MiZUG5bnNdJ86VSNTdO1UaPQcU0SmJhane + ousMWL72q8uBwMLJRuiKKIHLnuQXDrnFZXfw151acthBaHdcLLKZwgjB3P4NXk5wdjZ4I4gDQZDd + lPe/GcA24O5KHGj8J185uBUV5w99z+sBn7s/8K3OaLwdqlX/HVOSxaE+SLKOM7S5ZR6BRuf05YxB + VlW71bN9KBvlbaluKF31hsdBO1hN1cQ2yUB2YCQZ0DO6ZcR3bO/uMcXPdH40/6ZAF28zHoSdCp0f + H/3esiKtG/iJMFZiGd9l6xhStXhU9eP1pRuH9to8vW4lWkjKJcGCnpJYcf6+JhYxKadcRC+eeRzk + PG/oeXAQlVihXZyTTIaNDGW60B8SQepmut5scZJWqK5MYWqz3djItBNx82Y02G4xgaOgakUVnNGI + 6AGqz8lAjBrYCSxv9v1ueo2F3e6mt3egsKyW5BaH+Zfo2ss5Bm/fLTcla6OofJHXI4NbkmIqBPGC + p5+kofNZpxhFi1yS3GOczufwj0qhGyNMI0qadHpYqSSqyDrI6kQ2ArkeJa5tXS5gOdw+KUVr1HTl + /D22goM/67CMOI4fqgLXo8z4VFQTGYdiv6N+Yl+H4/4S6TCr25FHpsX+HGmx3xJfErT0/eggW3pI + whb1EB9jPa/QpWTKV+9Z2KY6t3jdLsuAKJezDMRTutnPXp0llZvd9eJqdd7QT+J4yMKIB9JSjylQ + s+ktzuiNCCiWwdZKphLVEAry/tA0T8oiukLJ/M8SFdZy0pzOpiulkp0M0tlmSeiVe8tiDwc4D9Wn + ODI4ViCgwiVUuL7PJuOk2/VtBhQGHnNVKluHtNImOsXsupvl+kuJYGD4ED42pNjlokVhPZ+cfr5o + SHTwEuY2DBQ+IQrjsileka1LAgz3TF99IiBtheLSmSZ4Vra95HYXD45wUBZ44GsrhcbNQcZNORgM + TdqJVx7hLL0VRnWZuZkhKFLdx0fldMrDH7+nOHppzM3uFzlm5y90eh3kYjqpw+MeJQRKH4FF1Guj + nZ5TqEo5lbXdZYb7XFHRB8HOzcAJ17x5S1mSiVnhM3C7tP0Cqkdfe1pazCaBGu3ZxS08KKywMgYn + b/dl9nSaIX0ptLcYToHkJukcfRyb7XS+q61g8aABmT0EAP4wfIC8dSBDSkr32i+HIh9aSsYPIVT3 + B3cYUrXEV/sq6hwATMw3df2FbjUjR5D5UwSpx3Re5ScdFVkeuoFC1mLsJRbc5u2wtXQrW3StvBsD + X0s/1ghb0uym4KoMtB+hChfD6jU0EExDhiVa83eNPK8nFx/OXw1iFiSgADx1+iX+DgaNJD1h3Q1V + 7Uhr3K3DbOFBMLweu/0lEOJPD+XTMWa3fMHBm18ySrA/eFH+OHt7f4YN33WLG8bY6I0ZkIc34nF0 + 22ymx5WlmZMiLH8LSK7FdCvyVpewS45B5XoAM42uSsd59NyN2wVXyzbWWUSyCzOLiB4Sj7/f3kmY + hz+mi/HgBr4n07mKTs2zwe/QwsFmIsg6cKX7zDaIqiZL/eHjlx5AujwuzeMhIqUqfKs/wBmreoz7 + WQin8yN20tFpDT0hsYQuJXifv3fDFoUd6HUrG6mkXLKR0lOZ4P36LCzbSDnjpaAq9mLEPc8N/CH3 + Aj+SR1QHstPtS9EmhTzim51QyzBsZ7nZjihUXkLsSzApEVlpZhk9H3yGh6+/L8f3m63eZgIiowC3 + keHvt5iN91wljmfjsGLfpJy7cboaPMEqQLvBm93idvrUjGnyK6GthWjZgPOAVayTmRyekdPN/KDB + S5hEGOBTMUr2hZ1HM1tTfCWPHjBMaHHShKFmDDTPPYeZ/jKtwpC5ZXOpEWdcmDlNCQP/5bqVh9Rc + aYqDOMrLltcM5I/r2XRzN5f+SmELWC1lJpNcbuNIPTUHz+N2syBoD653E3HQDTg2ODDt5kGeggHM + xpdCVZ98V5uzk7hNru76oSry8gSWaIUHaDmvtSU0jr+8Ssuh3Jl5NoeySoksmrGRi/BHNinU2oSm + m2y8BlUJGJTmAaLEFGYBDTZTbAlv5VNwAlfJPFsDc8HAbvydOOJacZYsBB4mwqH+FYUrcX1NF9IN + vh1dfTy9fK2DuR1kd8qYyoCjyWxjV92dapdbCbydS3/K8kmFVW9LgODsLc6/3QcllAp2eHfakguL + 5ORutGobMQpXu57SsdOJXXD+xGaB7TTLdL7bYS9p1/BKR3J4vWCbmpZ7jTtdM3kTz0xxw5moTRKt + G0Xn2D0lssQSPM4L3Dbgcfi6JXicoFwBj8OnMg787AOeu5JfN0DzatmvyyL4VTyEv2MWSuORumo3 + AwwAJtGEgjPFdGPmyhblYEQBKeSAvHHRLAdDVPLG5/GcuQeiw6eLRTEGtBQJ3gQ5ynjoh0EUPpS4 + UK5bqj/TuCf8kO3x4ekxOh/2fXFena4gu5VTa2Bq4W5ApUICueTk3jCad43lrS4b4EHpYIbXy3CQ + GfW2Bnm9LenHU99pDEITRX7vwE9c5/LwKKC4Jp9Jk30R86awV9qyaz80WFBl/q20tvZUuobpHAp+ + 9ko0qtvATh09itJDVAXRuaZUTPfX98xvUUyXXrdidpJyidnRU1lM9/IiruhnkWvyOt978QxYXMDd + IYsShulbItt0h5/ztYxqiKimm+U8z14f1oAwvX6OVeOm1ZcHVypH9cN6FR/gf7J1mfOVOEsBXwv2 + QMKTMuMrgBXg4d5Otzsp9Nd24EVeYNNBhSE2BoACJ2iEBJMUHQV3BqNSXFl9wQlFcd4uYdtsdvOl + NKucDMTqmmU/hQ5NJfaKVT1hSXKYYkpoPxks19Pb6UKAa4HQs0NYHcR3BiHo0JIPCH0GTTsKFCIF + QvfIC3FQWkYOFaL6j4Uv6UtcYZQt/uE96GEtUNnF63ao7ES5jMountIJ/u3ytJK25pUh/RGVPQij + yBvCdgqkpPJmeoPIeTJeGE2+85KDB/epxkoQh/K3dVpNWetYXLP/ogHLNa5zprHVcHs2QEWaMO1m + fe2C7srDKIlV5nh+sAtzhlSbDjhiGjZpxYoy7JH/oIhycOhPPl1cfoZ/PMWA2jyQqBwLjmsrBJSU + yhrTKk+ywWL5dWmOFC1o+ks2Q2SCXzNCylDDEeld+IN4ZxT8I/e9nAzQ+bYeyGFBp+PlhEzfsDeZ + 6+AO1fDqsP+E7MOpvso/5ID+0TyXe51vzfEypN8VqBrBBd19hIwVQhY2SLWjMxPkLsIHKoxZI4RT + D3bjrgMO6ot2f/7JdgzfkccT32pxuq2G0gfdA6Dx3Tto2Oj9OhophMjC0YhQue1r/6hLk3K+X753 + I3Y2eml9baoGVhenpl66OtVzWdLk4io+NW5Pz/O9OApLUPH+i1GcwGUzjBOBBITX5zlmskxvpsTq + MIMG9fzVCuZnCCxxvF6m63V6L4H4Clk3ShKiaEx0186z0Tc8g7JixT1ITel6fCekESqycz2DYY9H + 1w8HXfuICu3wOEgiXTcpZFz5kP23cctoId3G1oesujB8yPJhIQtztoRLcvDkFuuKKPu1TMOkXxm/ + GVxtNszZ4B888D3mu7JAq2vmqWpzdkvFP6S76OryYpTnWI2Xptmp2kshRXeYJxDXWx6swd3CkHRi + NHy1GECXHrvbyVVFzUKNlY558n3l2weBGwf66+ot7/bUwgBO14FvPbqPn1Nj9lAtWF9PHh3MxsCC + NsVq/4oFZnH5jsuct505FviEHXExuhiB8DkZUc0avAxHk/X0a7Y4tBX3jmOv0EGZ4P91yXiLqjT0 + upXAISmXxA16SsLG/3y4qmSC8wD3UlFT5y9GYeglLBiGoS98Moat7WqEgTMoe2H9g6lI7ysw/WpR + BGkE32Q4u9cwalmUS6V4SgHjP2sY6Lhv1T4XL1qPux6EJjITs4qGMh5HsGjhQ9T9ixP3GCuVFmAo + V/H0veu3cGrR61Z7T1Iu7T16KnMV33/0KoUWeFTyaXmw94C7sSGoAlxaiRQSWiGZ4urz6eXnEyMW + 5+0TEHWeMjjzf2QqdVwlBs4W3rHVIQ2XEFypSRixCnofjGm6KOylEuq8dK80YPexMPAqRp++yy8U + key4y303cEt9oOQPah2QVGim5M0eiuSNdAf77S6FbVzsBmFEg30T5sN+9Ss4Baa7iWZv0Dh7tcfQ + daNKfahShEgd+uzeioOe6a6s+QznLVPDLW69whqsEE2VtKwTGrkIGDmbjHm8Ul+EcQxrnO5MMEYg + Ck+uQLMWv9TLrGEBNRagmjgUXA2bumSxCNu7HuhBgn4Hp46Jr4Z/8BOzCFO57oOIi8S5p/vQwROr + kRCABR1VoMIiEKIfuOCuEPixR17H0uZEcoKl2I4Ez4Rf/J6GY2Qjif7YNDB9WVCh1/96z4KwhaAi + XrcTVIhyWVART2XQ5tXvFZcC91BXLQkqjIexGw3h6o0x7hWvizNthpCn4uriqhI3VEjXwDg63Jf3 + G9iXgydXm3u2Gl1s195qBP8OVk+VRx5fzBCCBIGUK1Al4wwVGn2QSHqciizZoqJDcNYbsphTgYPi + yaZdVzDVYLGDQqmWbD0XtRoFB1NxoTjKavwmLACcznFd1JTpGEgaJSm48HweVryVRq7LohwsyLCu + 075KPQZVza9pGe7xExGWTp2/u2wuPF86EdPg2aEZ6tfUE7ourwUTosotxOYKsulj3iLEsW33hINH + R4uNYcIdXBE/NpSqfUH/TWwNkSWIP+YO2+IUNSbK1lehE/tO6LD7NupBi3x/OUOc8rhog1ApD6Fe + 416ctLOMKz4aqixDYE7PWdAux1C2sc0wVF0Y+YXyIfFFuOthwbFqQ0aVWmW1xyJWm807xd4wI4VL + BzrojOIev0m3MEk9ZcLB/Ue1ZeTIZtOVNV1bo0AQwF0ivCPfYaW3lNDertTA4zQ8HWUj+r9GKIwK + oSSapuPQ3RCFVlUy+a4xJObYPJ1esrIRHIip/b+krX98bjWLpJkLBmcfkEKvW5q5BOWKmQufkvR4 + evG+aubyQ78sPT7z/SD2oqHvR4knQ8qEfSqdpMD1QWYX8Zfl7IAx3Md3cEuMdOH4SSVWkSSz09Ws + Cih4ejHiA9FDff0AYHm8uTxjEIJE82B5NjKQfSQzHSb1+TUsZEnTCDkMnnsgcr20n8jBnol8gtP1 + 1DT1qHD76ihP1EkTBx8dYLNpKo2OBCtn37WD20hLUlEYOI/dUyPWRaiezcv4EAT3w7r3VWuLPJXj + Ja3VtPWndKu5BRwjMprjQNpIB34sM/oflM0/PITHcQ6avTdGrORkz2svJ8s2tnKy6sKQk+VDWedx + +b8R3QVFnrO7nv7vDrSdcnBiUTJuekdN1RlQdpC8kJtdTuWywojsRXWte5Fvj+/hAEYFwWulGSjX + QvbbrKbrjs57lgSeUaf22JC2xwHpfkS4fwv5+9FkE/Qmz/YkiiqbRdcsdk0nYbkTnwzeHRPjWaKk + ZJ+1cQbj67ZSMlKuSsnwlPjc29dvapzBLqvYWAMGEoo3DBhhWxUrnxsJR8JI/XWaXk9nYqmUWxe6 + HK+cjyLQsygtGY0XWNpopo/7Zq4ktTWhVEzn+H2512OIZFZLDGyjjIAis9ZJE7mvx/nt8iXP3aku + JxCNkMDfjkLCyE8N7TJBxYJfNToOOJX4qxl9y/3aitKey74dIdxm2bdsIgTo3VYFXem0Cxt/xAGG + 6rm69bLW2Fjnz+CUInHxHta9VYUf2cCuwo+iXq7wI59LKP6rD6wa7BknfqXEjx+7MPgh/OVhdcRq + uCcoercwuzpgEy3Kl59HF2eX6uStZtD1t1H6d4nYjOM8YpMzndjWApyZXrdObKuCM9NTFdl7xqtO + rKjsxPJejFgUxH48ZFHoo6qEa61QfeYUinJ+nldQFFTFCl+uxrzq+Xn18XRExwA2Sg2d2qpNYdiU + HRJzuEb9SjTNvl7qkYfjpOKxr+tCbwrTwy1O98VyJj5Bes9LuLleFe7C2T+PQ/MOKuepwU0v09gQ + nwEd8SAvg7QrUBsImwGWgEWwBKsUhLSlQIG4XF1HK0esfiHJLKL7JsjjRHVH7ZggfKZfpZEPlkjU + fLeetIMXUg+cOtSguVZ78aARoQdYTdh/h4Z0pO+oLenmT1XcS8ebI3J4S5U4b2Qbca47MULO1VPi + Zqv5OGhgTXAHzZaFTHS6UQh0krkhD+BwP3XIdFQweapzeIGUa94ORaQ6Dz2nv6MTSCjESrq7ojik + RdSxSO2MRDD4hPwGhCZWx8Oq01d7MCuwbX7gU4TLntG3cnEwUnDLy2KnHnfhDhggIATmq/X1qK7/ + A3WS0RoX8Li6G2ri7FopZVzXaooCe6GBXret1YSUq7Wa4KmsvPz5ohwlyd2EJeVaTSPPjX03GXoM + 1jEwlbLt/ZpcVipBEveZrLq8XVUjIdtH2ML0e2HgNVZyrBtAQ4kjXo4fzBH/uR+xMijWdCGD6uT2 + /3B68atC71lu5gocC+MwyhhWIE+XA/xKlR0xHrUhcb4Q6QDMoRQ4ZybSR+UCC0ZlgNqvqqtxLz9q + vFz8Zyfh4oXEoZ0ONdBXsI/2F6+kzp0L+gC1TiPNr3SASGHhioq1qFVZWgK0P4FOOFLRjrkjRYY7 + PsFFetq8SidqSmlG4ay9W96yFa0tlQugGJjNAINlMENoJuMDT9RPZAYQnh21mx08S3klpyiSnl1Z + q71mH+kt2ryhbJV5sRTCjnmXIXs3Qs27LLf1AHAjFg2pe3ewFdPvRnH/jQB8DJscS+dHJQG3aNY4 + TuB55OyjL607ckfXXeKma2YvH7b60I4kD2T7EjocpeB0IpQUZvSoMSkJgPIkPl16kW8fvECvW0kA + knJJAqCnMnjh/Su/LAH4SVBC04hePGOul8ReOGSuzzwlA7yd7cZLkXIgogWzyfPBb9spMsjN4OPp + q4tn6FaAfzyDZQZ9dqzkdlCDBcrKN2A3zwdPNsuZEEGvzt9+OJUV+gRzxTC75e0OsQxAT1gPToMg + cIdYZni5nsiEytPng5czVCPWt08VltjpbOJ3qc2EF1keZJCEaDGJKnGps0kGmwkLFIo9BbeSuH/g + exvKIfkut+4nB+bc3qWLpWGrNiQAN2xC+lT0SpBi9eMuGSdu18tvWOh5ofvHq5GAMnRU6Bi9EpKY + gJ7MtgIfo8hVs8lJPhnTzeDXZ3nuxclgV79b1P6AXaP2TKWQ42157zm4l9UNHCQuc+T04KEsz+IR + EBs9Yfj3Fv/3k72NVjSa5jKIgnLzPQW093sfQgKRNEmR0R4OwX6bvTyU+Jbdcba7xrqR3H/rdqPd + tCC+S86OBrL/B8g+uXj67N/tZqLfWD+e11FJzvhzxttVUaE21jVUZBdmBRV6SFfnfL2aBRK6+xA8 + mLI+/T5/HzDH9m3xrugFjVNuFMvQZ59xbY5oElxtHfsemr2q56c9KmNnphTWFH2nQL58htTMHP25 + CNJPiQXKx2j/dYiDJ+xth+Hz2o9P7XERxf/72/cubwFhT69biYSSckkkpKcyG+rsX6ziqmc+K1Xw + Tl6MfNiIsT/0fZ7gjsSDcLWc7dCMdobe+X8huJ7a1DJ7aPyNVYNUcyi+Rlh5F7N3m4w3kR/7XsVA + hBJCuhiwoTcSIZkkMZTSKwz5zDNTY4uyWbGLOiD3oTQpKhV/k6GTpmKwiZjbVG5RdeGc6dlQcyd0 + cxNQkj4OPgUEozkcI0zeLORuFjV7qezPKZVTIxWidaNg3UX5e5sxvnLEBtDgrUkSiqOdRBQRma6v + l3g1YJZQ13JGkUsVM/L135+OuZ8YTK3Skg8vyg8T+yhciWp2YPZRHscLk3+E4BWy2Jyydu0pCf4X + 6dCnzKM9tKqYZIFXr0UP5bP7P3CXfRppyCxxzkGpa+3V6yXZoEetP276cFEV4xbPlP5oRPtoCRPG + IxJvzs5Y/Nz1Wwg3soWdaKPIFwQb+Ui63pY3Mirgzeh6+V0XCzJ+GlzAWw6+KuqweTK4tAH639KG + mVDM83W6hmGv8bBud3PhDG95ZGGTu/qMFM68snoeM7o+igsQgULJjuPFmK4J6H4sS96WaxO002W7 + Zoy7LBDtKVYYa8vISovdUYvchKS10nayE0Z/QsWpdtFmhWY/0qKcS9Ht62MFICyGerPUVloo3zZ9 + XAEeBqTXEBkOrtfTyW0tOWtpPdZIfW+wtKbXEqpPNrLG6lOdmGB98qlE65NhoSV0oWLiAP/H6NNI + qCpZ9U2zI1QOFWR1L+GrniszUwrj7KrBMkY2vvVBkj/cm9NCLW1ZvjJmYSzF0iYgqXZHOmYk4Dds + oB7Q0HqAblXnLlGikue5z4WyYi8rURNbYUl2YEhL9IzO28vPL+HunKcgIcE/f7n49D/yR81vXm6v + mXONf4CoFEdM5uEEzLz5agCd0P/RrHLUlFrsTLPv2/pBSue0VhD2bSWPwrXfXrKgReguvW5ncCHK + ZYOLeCpDd68uq/aWAEtRlewtURLGLhtGCSg1cvu9u18tKa8K5ujT5RsVjX27BvpVeLtVtl5+n9aU + kGi0rTCQNaOQVSJyH0Ew9qd5dpuOxsB5hTcIlhVx9rIif8FMXir+QF5F6XPBAmmy5sNKAQ3qqUGz + YyHow3n7+VOemOvFoUTGIzW6MKGWd8bhds2+fHkDN3xsWy/F0dQeuhKwOppMK8Q8Zi2BkPNG1mqx + 6sTUjOVTOqqb1Y3nKoATYKIZmXtr0rqfTOf4QiqBTuCfyJpksdcrQcaEQoEn8oJgpEtzSqMsVnfK + +xQm+ulos7j8eNFFSfLIqiHkHphAUbpWjXaI6VWD4nce31G3KsBaRvFisbeKo3xwKa9jaHosrsy9 + s9jscehe61edJU6hJu/dpEWwKb1uF2pClMuhJuIpnZ13H84r15zvlyA5/ejFCO46zsMh85nnS1PU + 3qJoeVDe6eciIDhG799leAgr4Q0YXYJC2jZbpGL7Uvaf6XwipPqTAUyl2brGVZbHRIv79918WvVy + 1Dq7zWs4SBqvYd9N4BCVr+HmL24KQXEby+S5YZhEQRlQtm5OjLkrXdO8wb2hye+vcPeYFvNEFPLS + OW+FMl56kndf168c3Nk68MQPAkfOhGB4h6bP3gLJiZXgTKyzVTqtya3Zb4FMyBBSxFRDYpN0jgUa + mzHV9mchuH7Nh746Ljn1UUS29J3o3jLapTaO4vhUeWhcKNwjywEdk9LkcrKAw2ZB2/lu3gFIqnuC + FTIybGLDAFtS9shM2ZVOEBBYIFbGPBKeoCfnlajAUZ0s7x+j4B+2U1bclUqmoASWj++5H9mHr9Lr + VjKFpFySKeipyno9RT9ISagQqMFFoSJ88YzFsH39IYsDdgSswGIGfX57OLR4LH+cCSRIFG2lVaX+ + Ao9ZYxhEwD2XlRNbFenGANLARCH/WMDuZlHAuV/GTpUU72c0WhGYn47r01N4k7ShBpujzgcsYdbh + TQcKw7LcxlwaHq6xASZ0ZA/cI3PtvqmwurOOJNUfIoMNkMLP8jIditUqW8V7u+zgmIlNqJeh/mS2 + JhoVlrrhtNsZb44j9bAXFvBdytn5Y7oYd4HliUlQ7fQ5neF41C1HSRovL1nI7G85et2uchtRLtdt + E09lMYurd2XNmYEyGJVrtj0LQhYkbAh3jMj6kZccYVHnmMUFXMQUpLmFqFIC23wD4umsELwPw4Ht + P8GUuvOLs6eFmuEKoEDZ/UV82kr1pBNj73P0g80th9tTm4oxyLUWYhc5FFbo/JqtZ1RbjogLdGoY + 8NVuzVaq0MbmrqpkKxz85kBCUFna1ldVk3SwXgs6OPdBhPMk8EPfLdM/ogKhAZDZXCUmgeud8XL1 + jea5N5FB/bhJmVcf4vwV95eDB07ncnoSizMkxzUtRHt86Aa1vgvkdJ32jLsb3yzG96kzYXlpR0aB + jLaqblQoR5H+aGy4QvNekJllVsTe818hVwNBn2t0vTlHAuW39MOzFjBTqoGt75KoV72X4jldT5/f + nftVmKkoiaoOzDjgUTKEv3zf/QlVRW/XMO7x3wajKvRix3kch0nt2vD/2yhxisWtxCl43VacQspV + cQqeyv36+g2viFNBCRUNxSkfhsyjoR8lwtiE21WtKlbREFZmJVOuM3nSVbmMXGl4cnoq/vEUJ07p + Mqqcyufshle2o1Z4jD0D2lADpFUS+xigXCtWSAUymy0XMh9AOiHrcbMivwmay+jExM3SJU8LvZh2 + AOYfoOp8biIkh/v6zYgN0tnqLj2BvzbLYt11XNH89u9jbWBbdxwQ63NAzmcBn4mjgk/NRRPOxUP6 + MeQx1Zr3KRFC0AOOibjZ4mg2ujCbb6x+rDF+iYI5nw9NrsHJ0M00Yedp2Bu+VGPdOFy/LIiDUA18 + 8wXGuG0ZcN2TgQQZRXlf7OExP5Z4kwvNiyJKnsWEjWM/PCEB++3ni062ll4C4Agu4+0+g02tjG/T + cK9MkEj3y9tXll0rASDSObzhqfeche1yeKmNdQ6v7MLM4aWHEn3925hHdvE8hWCdva5B1cAo2XiP + DdZIekwxaJssD+y5yLYsYZWqR2r0mGATxhQ1GrluOdkdb5GmpLlqiGgceBKUjuDTUYmmUhVK1z7/ + Zz6yyooejPfpEkxtw1Bb4JX34ApuFZStdnhM+L+XLGlReJlet8P+Jcpl5F/xVIK6XFYDSgM/iMqw + v6PEi5nPh4mXuFxG2nwuBkCgG4CAq2C6ZVjF9f+cX8haynsBTeF1KhtoQGWjAWYr4h4QMGS9yXDm + CxmCBN+yXlcNe1YVdHP0Meb7sRtVcoKreIgl0MS9snEpuKVoOCz0lsO5ockLY0v3gSiKjURQs7VI + sz5oJs32SurWObxqKda8gwkcoyvwj+lqBb08wbV8+lCL6eA2VKIqyKTenwVYU8y4uJyt188SZrOJ + +/lhGGu2rMsdyglt6fVoRSk3p6zSLVaRPIrMUYi+DxFreaD1XlmqZalztxeU4MitOQ1dZWcKPGvL + 6az2qSfL8ahrOMdy3DsJPZI6UDmDKhoqGUxAZ+tq3MfZWRMtsEavGHvuRu0KBulW1kKr7sYUW9Vj + uuLXq4VE3GDJlSowi/Jl1TniHHxjcAnUHCQpcGYwDoMi0ClFuL7U9sPnIdnKej5nFCZtsumuGU96 + o7IwL5eWUux96y/bDzIsuwpYxGs+pHWOt1i8gNhAYeEbs7S6cVVLRm5j2mifVHy40f6AhcB3S7NU + OB6rdL3F5PihAE3B09I5Ld33uGdkI7dbFJEFJBM1besF26tMXYrGea78MAnx2BUd23dzsK+30XO3 + LdiXaGMP9kVdlMC+xEPissJKW/TaUdrZPw2t3R+J10Y+cIXl93tQO9fTzRyBcmb3dXWNVbfIdMOQ + y7xQ8tUU4G67ouyEQSDW9f0IJbT7WTpLF8WAwOPphhIW/X4FQtNdenz9tJwkBRBp4NeuBHsCbUQ6 + JFmk65RW+Ro2+jLPyemzhB5I32TkvREj7lrc+meJ432mx/9IvIpeK73HYSKW8hBv6IF/d+/qQFQe + zeFRRBRXZwoww3sbPnfbJO6rJrZgGbIDAyqDnpEEfbdeSZ/u2btX0gbi7MkmeAfvO9hIgGK4oUzj + 96gMvbDuplsq8SvzNdewqzbNttRDNo5HbydxI5fyWsTHk+V8k91Cd5aOOC06+OSUyidxM53Blkch + JN3SD1uJXycRy3Bat1v77CnPlWpxQx9j6AHt82sLkkK8jsg+kpP7OVK1lV7RjZF7LKHWxQWQ2HVU + oWrPJDxYgHYPqbEFUnV2HLup7cEIFMalnfkTMqLqAQJ+TCJU1YDQQyS6m/hyWQqTcXrIZ9sCy6Zj + apa6EHXtLf7Ga6flqCa2F6LswLgQ6Zn0/FxcYl5plmpThvP6spQrsxzTLBdUYWVlKnSB9aZ9VUkr + JH1mtdxszZANTRkxfrcSzb+HSsVhzPKr84gq9AFwvKKG3pbO4xW3D7SPE9LfJ9R+ikW2QfLdzXbz + XipIH2Hewdh18VVX2Tjkv+CfXgdsQOdoK4c6rp6MuuWeax+9SK9bRtwKypV4W3xKcuvLj1dVtKAQ + K8GZwbbPkoDFiT8UiXaljEfCExbymgEqfLVaMoxGxPD4gm/o+n6F8tZmsMikd5BeHA6ud9uajPps + SuiWwpn7crGpB3x+VPG2aswmVjMPS8kchZpkwLrDQOQ//LgpdXDxNRaRH3KKCekGBSq+k2wk03pU + 0prwQF361qf0qF8v4Xzbnwh63a70LVEul74VT2Vp8fdvq6XFE8bKlW+fgVgRc3cIe4GH8tLbZLMb + CQwuUi2BIcjipuQ7F9ke8P0DnT5yohZYXFfpfJ7OpulCv6iRzt/Obh9w3xe6U6M/mJwU+2F5PxfL + z8QgdHFeLhanJ6ApTQiRweOGY6JIOletp3lIMbV5Gzwro8lykmGorMBzfzWCuUcg3Ul2cFEc3CS6 + QC7sW4lpnqf0GN/Y3simb7njaNYeMblmRXKH1rullNyV+sOmuuSkgqiJ1IE0uXa3e6CFcf8see56 + 7aRxamMtjssuTHmcHhJvmkxlrtw8+5rOQGbeYlkWAcD//d7UOYqehcPNjFjGrxNGArvnSoGdNKcN + avbdDM9aIpeGyWx9uxRkZz0bzF0QLcUdON3AbGcL+3E/fA8HrMOkq7TJ+tt/VORd3mqa91P0mCwt + +WNLJf5cZehBXNFW+okPM45NW5z+43d1H509NAiOhJiX5V1/pvMi1AWbw3YFm0P7gs1hbcHmcG/B + Zu5WCzYzHsTh0GOej+x8H1Rstgb6VahYrfHfqIvdjLxtTqJniRdwzh5xaiQW6I0JxzWk/Vn9Wrsj + 3x6rTCtOkVKckuBfLRJ4VQNb5YmoV9Un8Zx21Yf3F6YCBWyBJ2EpgRc1qJAHgesP4a/YD6oJvKq0 + UBEy73Rzd32fwgpuNver6VTtui9rGMG3UbpCDXq1xIa18YnletAFHVoHJauKzcKULDLyRiq6EVOD + 0xn+gGDAudYlw6Jf/3r2y6+vP11cVeJxhD7/a5oxUMnfLhcR/PVyN/FQQ0eiZ7dTxlG/W2fUM3zp + 3W6eYvgX7Lb1CPSVLShKKcwNDHLjIJSsTswNGP+zBEO7kUecs5dgaFgfXaK6BUYC88hFIktYAbn/ + ZHRKm92rDbQeOLi71lfou0IlbN5sVrzGjQj/Mfe2gu6TzdBpKUy1RxSTcqMkLzoCXMbSkdeTjCYV + jYL32Fqm9JhPI89HbB2ArPhvnHteonY1BFQTe89LVKohoJ4R/12sJxKtZ72m7QajXd6igQSmC3ba + 9MaBpyP1eWr7fIR2znyTksclClSdjsfPVTyQUgh4WgQLVE5h+8L0dQaUo3WPI+HO2gYZPUpneERw + dJfmcbJwhNc3bKUrdMiJVac6UaeaRbH33A1aHWvZxvZcqy6Mgy0f6iAjebLJ9XwgwIg54zsyx3BP + +k/Rvq8kTAGuNEXVXvO9yVERNw8YtkTHOqe7zubLCXxi3To2jy4kAINsPQetTzGFQxkt1vQjl46L + TmzIbyBgPLAym792AJMiGcji6A1M+A62GhaFwLrujVafZjFrL21ZX15UEbWmGbuJOc2jeTahNO0y + /nd5YzTzL4rmIlwAufpAryhk6andI2Y1CGyPIkbMNmPkMd5G9dFVf5uwLHtD3mMBrT428qoW9byn + IKuAajz9+p65YQsftXjdzsxClMtGFvFUpuSffq76qAXSfMnCwr2IxXzIvTjworriF+kG05KQb5Zz + UoYyWv0P+Co0bgA3+5qtlalk+T2dLZGVY1PM5tV0xO2viS4m9FN6i/kXhtdXZuen2721LcqWwshL + GrCfmB/zMK6gbeaDER+Hn7mnnkVolsy4qqeurYdN3yY2kTFHRYTNhJdc52d1ZEWzRj95GHjckoZK + IaxCdXvlqXQey+5wcItrD3sQJ3inMM/VavpCmW0pUiWtL73ZJLMBJU4aKZVVQpHiGDoPkF+VuIGM + KOuWovOz61400LAIL29V36K52lFfOTfIFMQaH2AkLS82n5LLe6DVb3CEVJYOB0cspkAFkTJBLmwV + H6F1EEbK6Op+PZ0gy5BeYeJ7R8RTBkw5QdwW1RfpdVsHiFutvkhP6WZ+ffbBrCDhRV7Iw4iXr+aR + 74e+z4e+H4WoLuDV/HG5GMEpRw9IIaIZ+KnySGlXF92dr8fz5PEHQwq++i2FPwxkKWT+hUICRqik + 65sI1DlUdOJ5QRD7/3as58rBJcljtZiKciSbXP3Y2h3ltsQqVn3lxAt4Dmf2LnjO2kQM6Tb2cGbU + RQnOTDyk7fivV+UI/sqTwZPVcrOZAjt/ahBFlLEEKz3/jSI2/I7J+GoTeGoT8PBd3C6rUbex3QSq + C2MTyIfE0LZ3UxncCv9K/0AMb0MyoQR9Z+8vF/MtpaUHnOqdJpxTrje0mk9toxqbhLDjqO29BmNG + WRtwK4mvEnXh6r6wXS2yvzWUXUCx3R/eu2GL2G563ep2lpRLtzM9pc18/rmqN3tB+XIOXjxjXhQE + 7pB5sfDvFrMdBLb/fDnZURSxiCK4uZmOpzD799paKG2TBZvzUPsXNrJIQOG9NUw3iloUaLAZZJdv + 2ODJ1W7lB6un4qqEJ5544uETGMdXFL+GqHht0+kC6xuIOik3IDVla1U1HGcYSGbr6QZ3q4xT+Hx5 + fvpKYk7k0DZKIz/f1mjkj06qqPEl6lywoqXfBI72kwa5grEgcpOokILx111nB4+Bkoj8wPNknayI + NOKGeW3JInCu99IrrZOFlNTGqffwcLn9VCfqq65QEEjmyly3TfyXamDJYCX1Coul57K+0G+vawo4 + xIFb4bKRCwx2GKH//ieUb5jPYNTf/j7lG+LYyTWNUDu2X/nPmdvOry2aWLu1qQPTqy2eySCV6fWS + IoZKuQQEOL+Y6N8WyaFT2w8iympxyf287VIN3OfSayeoeP/AjTedoW8c+v6KFW3bi1wPp/zYS3uP + CXSnXzm2bXyMH7BCdfoOdfcCplObu9Lqq8RdT6VdmYplWO3WaJG3cd7a4yrKiEM8W6WTilNp8IHu + PszeLtZIB/Z574D1xG0AO/NG1sF9qhMzvE8+pQt2NVVhQFdnb3LwSFXgUJodnMvzj29H18vvWsxh + DrYU0X1xEkl8uF6wNfdvzoBiNxQ93VeD4FdnWuFygzfQmOyERfqhEUIfrzHrYeqlHoOw4BMO79lu + 5r8c4RZs3KDSzbAnkMaPqRh8vq5qNY+scno0OftbqZ9KHH1oOfZ3S4u0xUel81BthP96z1mLiuH0 + upW+IymXtB16Sqz43X9/TiqBGNw3i3/5HAMxmOcNOagMyf78qf/MgPoD1gZ/BDrJmfoWYsaV+iZo + ujDNBqDPUarx64+f2NOTwVzWolLqH5bhXEx2Y9IbYUzj6Q62NTCULUjuaDwRFQommbbfPPk6TQcf + 0jGTZhfsE8llMuRPp/nQm2/Tmb+q71gACxg5QyIeQsNnOJevX+coG1FAgbhtAeLVltcByf4bUMFc + v5UwItvYyiKqC0MUkQ9pE6vVU35bXCNhmeenwgwGt/KGwhzL6L1FRa81FRP5Nh8oQimGLCHJhse8 + an96JbIhVum0JtnGmgtGTGLNT2+FFQttWrD5HkUe859TMfzBaKwRpaMQ3PX9DMWA2T0c1+lmJBYT + 0/Ln3aAwQtdA/arZ2laY1vYIcjEhCncdOUs4aQTFEef1X46LmAwl+vbZWeg9Z7yNBqWa2PEs3UGB + ZalnxLG4a1QvyC18TxAEZuA9dRrfoBeKvaCX23fZj9Kk3MjzawD92xZU+BElCPpkcA8MSPpI0R0O + dEm2NGOfro+sycASWWW7gdpQ7PyRqu7xly5a4PNEhhKssyXC2lN+jW0/B/QxMlN3JdRbIHuo4bOZ + f+Y/d1k705ZqZO0IUJ2YrgD5VAGo6YXCCgDOq9/ewFBdCait45AMcmjPCmPBhTE4jII+VYJnseIU + rHw9z63UrToygFZJ6aGI4/r93SULW8Qh0utWiqmkXFJM6SkppiDolqtSc5ZgZHFRMXVfjHzuh8wd + wsZnCDWGi/Bah9XBEETVkm2mJGeKls4BFQioEFT3WTbaoPCEJYvrkjWGpZQVZeolj1050WSabU5M + zMJPX9I/0i9TmPT0di5vJ2k+PjG0x4KID6t59y29B1Kga8tPOpuMebxCnFkcLuaLCb371SKtFs62 + KRJYSECIQt/3I7escduk6phJCK7XoNQ39FAz/wNd/wp5l0Durzewm8o6a4JhSaIgTLxy+kNhro04 + Cx6zCjRgIdbChf+ysFz729w15f1m0g9ZQxxHFCSwk3l/pItTwNzAC0ukZ+mtSBmgyR80lSznkbd3 + RjzPZYFfiXGpzU4oEsZEhqaQFu5y3+XRv52/1YF2kPXpeF/uRpSSSenkEuEiMzI8Kzz9wbNGeCjM + qOUlaCdP4FaVVPZsbitp9EhSzd8XidluPhsVUvtqxvOYFWar1nbTgNfgRnGuGChEEmuwk876iSN5 + KhmLjufRViPrM+G2Y7Jr/7UDuhDcP9TeMl37qcDeFd6ut0AARihDwT9GN7N0ZRvsUIOMExLI+cf3 + nHn2wjC9biUMS8olYZieSpy71/+NwY2mNOwzLNtelIbDFyMQhv0gGXIfvt/b76hZzKCDGqA769TV + YnKp6/IkeThnzZ4C73vTcNygSbZQA85B8OAAREcUlW8Olj9C/+p6ENWWpUj1N+9B3rN3LNLrVltW + Ui5tWXoq9bfTX039jfkeI4DlIjZjjJ5Fn3tDHrAkVkC/4vR/v8cEXETckFiXUtFJv1QVnV6BxLN1 + odN6DceLmoRsBiIri5KkJ8L5EUtcL2Yhq8EjF9C29TnSoDGHXiuCNfYGQw9IArdRXJdf7ryqX8BS + SfUJ/O47Sg/aEFxZ+Cev3p0+NYVpOaZ0kq6kOQ13mhaXY58JY7YbCZFLT0/nSowJoYjZmGNqA79x + ZQsjqtkHdoJEezJ/DkDa7hnAivcF6rr2uD3vo9dtr2ukXL2u4akMIL9671dua7eMHxoC62N+wvmQ + syB2ZTTxlbRSywyI7LuU9r/dTcd3wl2/GORpo8ryTJ7/LR6Qa7jstXSPl2PuFqCMEMII2gxKIYz4 + 6iS7XcPJKmTonm1mfnMsB0r+NMDBk8uPhdCop6ZZBhamiV26fhhEieRCZdMVLJEl/dCKfs6OvX+M + QDIE4hZGJRYZUkQRsQP4guszt8RDvQA9cNM57psceqk42QZL9cKW9EUQRxMohl+yp1ycV+bCeSyb + zMGTkstfUUh11hNhpMCm2rZi4XlsUubhq4VKAV9JqiWBKcAJn89lmS0UHoUtdZ5ud+sMdwfoCzg9 + wfP4arCmoUAf0Gg83UjWIx4X1vfJ1dVvI3w4zJsNB+/lw6ctzA9eKJjyuks+gOf7PCrYDkZqpNfQ + 2thBek6HpTka0jGxt1awAtLVnrNraQ6ITK/mHmZjSzCW+8COyGNBI9Otf2wYLUWadEWx7C9pgRun + +DG4HxUAPmMtJA163RIAX1CuAODjU5I03l99qEgabtlL5kUvnnlxxHk8hL/gAiBJ4/30Sza4mo9e + eVrXpDv//WZevfM3c8SFUCdb35rLsg+8cBd5bhniqXgvexHox2H5XoY7ZiSY0wbNtrjdFHR5bQkn + 7seNl12xA311qg8w+hgOMERS/JQRbzDufy9p2UmZb5due79ZgfJiD257B1Zg8ESuz1O1OidYbV3c + 2VRm9i4DDYgMwHLyYds9gaZ8NYpWlIs7het9PYBnbIWhA/HqqSm90W/U2hX1LDFBWPPi/kRPGrwd + 52+r0fwWDjaLy48XokeJpnFv0CpMxVbciZvFUvyNLXCyHNzHuhhBwnxHznvxNjmwZK0Mle1pHw7i + 6eXWBiqJYE7zblR8cvTU3/N239NLVqIbe7GrbhB9ptsJMnDAeFkSKE/P9XJyvwf9vklgSTw7yj/i + dg+pECedpd9C2z6rrWwQyrwc6H45a4HkIaarcBcsZ3tvg3beg25xbHDdUEhai+Hsz/IIyCbxm/8L + TOz3wW8Byv8jmmqrWgX9iFBWFPZN7LEg5lhuVqtiTReyBFXLEIc7t+bNM5CFFlNLGfVhOtpnIKdq + My/fA5ez9+nQ61aim6RcEt3oqfLpfAY5riS8scRLzEKdnv9iBKc1jIaRHybchHIxi6IacIMFoIoT + oWhuZbqHkrXgCN/LXYxLToG26eBlOp7OkCNsdtfb6QwaLNewOWZLBTtwkW0Zq1rgW7iN8oKYCY8j + DPB4IK9RClLStfCPb1bTdTWoJXHDJmN2DLIli8phOL27oeq7yV0/TdipPmsKmlEUnZ+yRxza1VqU + kyYdHK+27h6DxuJhZowQaJo+wMIMf5xPrnA7PRyoqI20wsKYwpwPJnseKP0WS1jRNVyTIwWCWaY6 + pECq2xnM4hxT6dMNgsROlqOPo8lysayJYdmrK8vyMi8v/HeY6xS3AYVTbSxB4XQXRVA49ZCY7/+O + 1wq+gxIHFsvZCOUOEWCTjZBnYEZUMdtXxY8z5rRu8/9if47oVYT7ep5MumCcV7e1mkja3ys4XMOB + 7hLtlXmvg3F1HayDxcOY5U4X7KbdVuI8ITjj6ngRz6ktwH8QuFQgQFDRFejaDu5RHPM6ZjVdLLJ1 + XlmvNcmwSlJdbEs4AUfMOCIVuzZU1XY+Pz8/frux0CWs6eOmAJszarJFD4I4CC1Jib3BSPUvDFXK + G70kYMSMF9Ko9rCIDn0pnqpzaT3MH2Vuu/QH1cg2/UF3YqQ/qKfEV+fpSkYd6bp2gw+q+iActmwl + 0l8vPpy/GqBlgHveU6fFq0hfQCfxiBho91RWtXARo0C6t6Nca9zBrp/kg1G/oM5E6TGK5zW6quSr + 9UfaJvvRkxl2eZxCPr8tZS4ZCFU3txKwpFVhsmoiXxDTaBuKD84zEICnmwYix6foxbQcwsaQ1vOQ + ylgfCffyY4r/KK1J1jqzVU2GL6Es9E48lk5CJqU9e/x4yoVql5TPJtlEvrNrOzlsCDuetr3oG7kq + GM/n9rYGet02GA8pV4Px4Cmx5avXZ4FXE40XVaLxRn4QcXfoR5GCjX21owoY+bWEBpfbbPBkAl+t + jupbLLrlhyxgT4fUt3eGmiQo7dpRoL5JBaDezODHagDqXxG90GVxwB3ncbARtS+p2MCn94wH9u5L + et1qX0rKpX1JT2Wl5VfvKkl+mCBmBkpFL56BAOB5Q5jD8EBQ83IG1HtHn2mZUvfnQLHh/xh9GsEC + 3t3PilF3UnJASHwyGS0nRpCmcAchgL64s+GZfzLIvt9Nr6dbPO6D5fXXKVbUKIjGsEeXwhFJA6v0 + uXE+X34QxQLESAM/DnqDxfTghos1FeraIrHo74GUJmaZhTExpPJOODZNXOa2Fybcjmp9zbO+KsP4 + PCYfw1Rg9I4LRTeOCbGPuOSeMEb7W51et+SegnKFe+JTGWb64dcq9wyCCvcc8QTu82jIk5BxafU6 + S2cCGrwWL8OItz+b18Xb94XmJaGufhlbjKc+Yh5rmtX3yd2QeX45wF0RLVS8IqiY5VpxBtPUHsat + 6NdpS4Y3gJnhnh/zcE9F0LFYnROQWe9RhUGD/BrLOuTB8Ur5G8I7i/vB2emzZ3qCU9DdcpKlD9c5 + qBt4CWRf+kHEcEgU98KsaXlQcnpk87BZGIWezNP5HBRZ6O4snQ9+pRU8P3dw02pG7yn3ALEgi6Wx + Yodd6B2wEey1NlhAyrRETROiY09pkX5Iml7TqWpNzcBA2WQIuPuLxh3pTJ6qi7XiC1abox/Kh3Ip + Q7OLo3H+/2rZGZFKpnS9FrVH6XXL7AxBuZKdgU/p2vx49ppyI82LU0Sdl/IzgiCJGR8GoetHsvoo + 5pHKmnE5BAfKyXD4RaEKIS9k34XH4snZLPsKH5bBHpw9H/zX4AyT7V+CzD5gSRLCF3ovmMuiEQ+f + KrX44ziD4f1fDcYGh1O4MMU2w1hecSuulsv1LE+7wGD3HZzttQ4GwKLWQnGhxAXQZNKFeGULu1Yw + blyzmWq1qLYzE9KQ6ecLrxiI3ADSiOvQntMlS2BXiXsviZKysXb5fTohYAbb9DJ1SIMkklwHZ2Ww + Q898q3Jwfx+dx3fjJJ8qPMGTTOygA56Z+tT+42j9EFh9CdI2u++gN/UEdhz5Rm1Al7evDejyVrUB + oYtqbUDUAQUG/c0XGQcfjqRQeIOutqW8KYsQrYffQGpUMzDi5Nh3E3EYMU9zKSq72Bmk69vZu70f + 6CQ9TixU3SjxhVhev07t0fl6E7ldTpkm8/QWw8J28+PPcn/lgD15nutnq53/xJ7W31Pq7ZuHBspk + 77bAdaDXbU32bhXXgZ6qCoSXptGJ6gOXolbRZo94AK47ZJzONLJa9FSAULW8Adn5Fi0GKrYHHm52 + q2wtYRJVHb91TZypcnYUUQ7QqdKAcsCx/DWv5BnN75ej6QJN2MuZMYxaI1NQStE9/3AxbOojDxat + 7cIYdxCVUovyOE5F0/nQNFICOsOtclsytmNO7zz9DxrvmxrD3LLVcJAvCLbZuygnCmYSNuoYTUPT + 7Q7l1Nm9g3siN96HVI6vW2yZmBpxYupn0VYq7jOozCJsoFPMgZX372c7D/FbOAuMpT0++gAPVv0q + V5dqby9NqdR9wFpxHicUdKEU/pEGPjtmrHs5fKiQxlnCkudu0gpqXLaxxRpXXRhg4/KhLJ48vQll + 8eRCqPV0AYpwEXTR2fvbQXb+JnSQlBCRmayh3Dko3Oc8oKBIytrHvB+RrtecB/Yn03v7LhtAYan7 + F+tICcdzKZJZL8JxAk6UK4mvk5aIznkjezVRdlLSE+lpPaLz2dnp6eeR+jo5aeV474u7lS9C0Vn4 + BnTOhKD2Q9+XUd+utPsUo92EAYEsB5kNXpGtTubBKRHdmUxLYFaIdUdiwsUOCqesvXB+jv3Ol8jI + ih1XwuI8jzeW3bXuQWSp5CawKYaSC3cUrNjXNtkdx0UDMjk7sKQzu+sc9EPyJe/dDO1XzKFqc74+ + pXoK15mQvfaez/KUqDNFVaY+XfKohcmdXrdTGohyWWkQT6Wn+vSNcDybFvdKRV0M9MHcCHcIf8V4 + ceMBxNnd4L6Aa2Tkvx6SeEuJzSs99/KClznlNFv4ffBK7t5p4HzX93Tr32QiqJWKXt9lhiiARZzO + 3/ivKa8e/vVW+cfTG+5W1RQ5vjpcBNhyvqlO5IgCSeQCl66gx5kluCtlVwrEEW/DzA1DpOaGDnJY + hOw2rQnALXZr6Ft+FFf6yHWXhPk+yIj/di7IKKCEL6lmVNauDn/ALLSNxcPXy9mwcA4Exzy8uENB + PUOXtlhXWjp02KjeaWf5rx2xS7UeE7u8Fyml78LkzA3dfUHTHbLkmzwLEfMJLeHwLmn3KV0IN6T0 + d5eqyJaoD3B5k1ppDg8tbvWi1whWUR6hTVGnmqlXd01ChSPeu37UonCEeN2ucARRLheOEE/prjm9 + /FgtHCEseaXCESA+x0PmclW7/XOuvJUNI0BTVfBQ25Je3BDcmZKsRL4sSAvL28X0DwyMmWTwFXfL + dTYSQs34LsMiewJJ3oyy3K226RdRuE+8eL3cYU0/MuUUyCAAAYJj3s9udhsQGUSkxZm8iU7Xiz2R + WrBeXzPYCrOK6cwACC2iz3GWhCyMKx5k9IFXYHKCyAyUsiFUtoaYl2QcNtj0GAYtRrxyS9JEyVyr + qZGQ2GDZY4Hn769rEPlwEVSc33309Op02PhN+mLWsvAd9LQEgbiSCh5HSYMJcQ/JUfEDmoyTcVJG + bxoepm4QVlpMKWoh4aWohRqqzp/3ODrIgnTgv+slPdhDsT3Z7ow027Y0OMHKqE11PCEKXNDZXrXb + 1NpIh/tBqGCFmbVQgBsDIWICkKys957PrcR+RxRCqFldW9tOtflBbxpDx7/R6k9rJi6Q8gxpDIVS + SWokThWQUdfS3jnq2/AcuOZROM7RiEy9eau1tAvXGRp67aBZbospR+3tJfdaRLPT61Zym6Rcktvo + Kcltv797ySpyW4ipBMUMteTFKAm577FhggVy3T14OJvd+uv0K2xfuBHupreg0megCK7JVizzVze0 + nDjW1V0e8/777RoGNl7Vg6gcQ/hkAFvHJHO7Xn4DhXQpQshgmXCXi60vA7g2y916jJcTXjp4HETa + wpCijNPbWyCji09jvDbGr5HujIPCYnM7xEmCR8X0fvX70Rau6N3t3WoH9+V2N5lmG+fq4m1e6NkP + Y1Xo+ZgyBr3FUBwfDaD2tq4S6LmvGHvO3HZp8rKRdZq86sRMk5dPaa+v0wmXUE4NhaJk3jtPXC8I + nzrFElJyzS+RhiMoibrRbkxuFTciQQGTp/GwF5rmYELWV7Mb0exPlrtrXf1ncL3O0i+KKoIlwrWP + UZwYFYvy1hwWyl5tf7C+mj/KK5SvkiQ2pt9ofyx/gZIYMn4VGqm+ggyKQ0EI7EJK8Ww53m2GHZfC + pozUAWhJVv3sYwxaCYX+F232SHOSztNbjFudzne1mIL7cysCyvajeaMi05tv0y2c1BalyQImS5Op + Y4K7BcTIW1Eqqykctk3mXxXe4Qf6DoVdKSQAJ5ruSbnMlUXQVphIcbta0auRw9Z+Qw+lamKuPH4e + f8P4cxa08vipRrYeP92J4fFTT4klY3RLtkaenO2+AAXBRlXl1pJni4x4n9+cn7+rOAE/31wHRpTo + Fh4gr3Z5EJEj0OJI26M5deYPnCKZ8yt7lH0fTzfS/3QMwwlynVfPWWsaATGbRv/isFT2r20HVB7A + HGTRUNvCP9pyxXplpA8XxmAf/dsRAZcShxFJsHSkOgypdZRE5+qBXQ3/tvhPsacF27PouRu3hH+i + NtZirezClGrpIQm12exGWtJPT0+VfY5KrTqVJ4PX72+Yg02k8CrD5j0SAoT9EAWBXCbDilHTTcvQ + nvyQe7FJd53Nl5NsdhS0NgUdIUuQaT6iVeOm31catJtVMGAuj/VgjglqdCMKj8wnpu2Z/ROl/hzF + EwYqwIl7RsLrT0wrAAmQm4t2pGotoTEeUDGvFxs7x/fHlFcheUlLSAnbxgdc16Rm02KieW6EtalF + wMNRqV+KqRfSpM7C54y3jYCjRvYRcLKTUgQcPa2aKLTFf47hcBruuCjlvk83bDTD4hVKZjY6QvnX + 9SgQzk0ojErUoDYpHn3je2hIx+bZBs1p082d0H0wMgJ7WS3128d3QKh1uMALYiJfEApreahKqE38 + 19EiXKAbYeWlxddstlwdiGZTSFAxpZVcXLosto8Qo9etrL+Scsn6S09JeLh8/6bitQ94yfrrxy+e + BYnvR2wYJCFXhWzONBs8VdLBGTHnYQ7ai4Xu17ewJ2CvJu5T/QvhUlxnoAbLB2X+/uQ+S6HV2emb + 0fnTQclcNyqUF4c9v/gCv5EcoRiI/HzwDo1WzwUaIwOlSHV2t5sjQkb1A94IIXF0PngiOybD9OXs + psbFXxWWaqPOwqgJySSBTR3GUcU/Xyw3vsJKM/C0UHDcyM+OoiYcFsaimMOqdc1Ep1HGD5WIXrNu + pco9XlPlHjUy4H20x9T60l6TbuvmfUqrzJ5SiNpZOuYEovJhM2Ur8mnLIcGBXGTfoKUyIP4BO+5u + usFyqZvBcgEbDOEKF1vh+aa9SaYdM2udUoRQIl2kgiOVdGrhOt9MZ6L2nhq3g6dUOQhCzrkU2f3C + Rbg//r7Baue5PolG+VYWfYsyEOjQp4EUTapj7GS7reFwTbVeoiiXdOWeFvt5STWU5J7uR2PuPVvA + 8ySGrNgo9tVH+ogTw8IqcdVEYhMp1hCSHFPltIv3rt+i/Aa9bnfhEOXyhSOeyjzGqw8Vd2MgYtnN + C2fkR0ESx0M/ihGxQ1w4H0xcb1Ahst34fjYSiGd0MLei3vFih3INzYHw0d1Mx1NZQrOIsi1dgTLt + EWtydSivkbOlKHQj7vEyw5QDni4yGnG5noABrxXzcqWJYtSS0UMeYWTOiIBfSsf16Fq8nAB5mPwx + 5THqqDoPtI4O7i0dR5yErLc44hzIsDSnNwUI6S490Dnfv37t+FYPhTskqchlQU2xBPvBlqCjuxoR + fnaNASsajXmRwNWqcwkXLPLUn2HS6AvdwI/pnOl9UM/j2hKl5LZDnLOtAaX73dyLMaVLWRl1o0cK + 5JozexWSXrcFuUbKVZBreEo3+tvTz6wG4zqJyxjXzxJgyv4wiXx1oX82RV+aAyHagFwsLBKG8Kxr + 5qjKittMJaYId5QZrQrjOi2Eqxb9CnLlNyf5rKPYP1vCYisrghSziH8VqvXAyaUXsMVv6wxUBpIf + 3qbbqvxgo2oZEdsg30dJpTKXTiGs+sNqHaO1MoUXuU0qXgxaBUiHtelPtetTG2odwpc1fRjsAC+J + yhXVTe+inuUihpYZdO024TYYX6Dp73cuXixnhkexVC+2CeFNdeX0un1PRLIVqIabQSr27oiRxiWw + qG5g28II0fShNjGMeXrTzw528AznkOkRIUn8Pb3ItcCmMQUIW2xXW0nADxJfGLIb0skOzPpjwMyu + traogPoz3MJuzT7ulgaGrBSbHM2XrdanLzS6IPSqE1DDy+3cOC2oHdwPvhdIZF9pos8RPo5e8L5A + n2JVOu+MRy8xTMlv5RFSjWw9QroTwyOkntZjIpS0CBWVXjala7tg0TGk+0PHUJC46BjyPEaMzrYw + WbPF0c7n8rN1ub7rxT2eFBCPB5SNY5Cq3y9HLJ46I5R3+vrSjSN79YNet1I/JOWS+kFPpUHx/T8r + BkU38UrVfKMXzzwPFpwPPY97Lt9fzSRbA/2aaiZ9VciBczizNQOaUmgxcREWmEXBAxTNceM4+fPY + zihyCae0k+HsT2yb6heu/oEMOZFapd6sOI/CAJO4KhiQv/Ges7BVLCA1sQ0FlB0YkYD0jLhZUVFU + Nz2Vw9xOF7o8nPza154RPFKgj3VyQzd2JCiOWjfRWJM7OtKCiun5Yos1Dq6HeqDWRr6e8KDtC5X2 + ItT3JeQmzAD+YscAf7GWwF+sFviLMRnPutpde8US0TX748lr7+m+re0gDcKFDhToXWhEERrVtRoz + nfffPAFj5i6u1rNQlp492dQPV/ikoLG1OsR7oty5EimxUxmRZt/+T3Pu+yv5LnYIVsAZFYrhdLtw + uLpwAqyszrx24eeqke2lozsxrh31lE7s7fxOCtS36QwNHRuj9JiTzkBbHbEhH9X+fvAW2xdvIyRI + 5YY5JewknLgdiNBAQkaiYFjhtxT+AJm3EL542OjAGTf2SGFp8gHqw7E/N95lJLe9Xc5up11UKrWB + bQkeEEQTPyeSrlYppkm35D6PQJl1eoUDx7T2qInUUD8VieSiEABsA4wt2K1az1wUxJYd3WXfj+7H + YzwS/Rw6Yd2TXhJPAeTyd3G7KhKqiS08ruzAQMelZyoumsJ9xwMV9m0AMTiHfl/oA0SEOIldpyek + GLpmq50ezw76xNGOqAAXopwoTJA12j52s511AoglW2mA4o7K7OAgLLftPD0OXtUvRDeRatzNLUFI + rA+6T5Ak71mQ2Jv06HU7SBKiXIYkEU8lJMn5RVCBJOEIfWRCkjzjLsgFwZC7XuxF+016tzOg/4Am + vUdQlkvb7/BaoBKzgdYRj9FCBFvsLULouKwntSsDZWiO/H+NTtuYmkUDW2MzUa+am8VzmTJxccX9 + U2N/+izkiUgOK9uc3Sj0k6EHS8GShg1KdXEFYMz1vULZuH8+uMqywZvXL68G7zHeer0Z/B/4JPff + fhy98NjIC58XrNWR/22U/qU397lizBUvlwHu8/oSOTfdT5ovnqi4iEyDyYk3CNL49SWBF599ujg/ + V6BYotgcBX1JANvfpytZYvX36Q1bOb9/utIhE1EYsH5ECDoixa+QAxrNQTsSwRzti3GwwPVYUeE5 + tjhIyMin1GZMeyzWvSg6rYSaQ7SSZlot644cSetvodUp7QV2gF/e7vlOKsDTHZxvIBV55VEd2lh1 + KXlJqGFRXiagIbQzh8o21qAosgsTE4Ue0l0z/naDoeF4b7wdrdLt+G4wWWL+kLPBHKMC+P0ZvumI + 94VH33Mps9/1qJ6PylAUGeuq8VAAO4mfsga4RXtQDY/QbcrY1+22eOzFYnMWR9nKQvkTwqDIyNfP + LFpRO5Bk36Kugt72FEb88tINmX1iEL1uJVpJyiXBip7SVv98+SEqCf0sCbwSDqH/AiQfP/KjoYdm + bSlTCXci9H9nWj1IPvq8nkc9lPWFqy8KwgoicUPXtd78mO3J1XwA8mb6TZKwyA2jHpJ66gedB93m + Y66E8HouaAGH5sDh/xh9GomKNln144eadrYRAlzxbQzL1B7wDeYwUnwllh32uBDf4LDLCHEKFkB0 + x+UEhjlbLlcObkMdB8HDwDoOoinjI3YpQGHbhS+KadNUinNrdTsyRh6g9cHWXUIj+q4WHDMC892z + /VteLoxSUQ8dKqsvO5pYk5DeX7H3hCrPvL9026DK0utW3FxSLnFzekrc/MP7dxVcAc8NS7gCwM05 + ZwHnQw5/e95+E85s7SI47F9Zy9UmHN+lam2PQFp/XKiyiax0ccndwN48Sa/bVbogyuVKF+Ip7e2r + s3dJxTyZJEm50sWzwE28kA0DxmJPYhyq61ZWyC2mh8hkZF1yZw685hrTAia7xQQ5hjBDjE8/XKjy + 9vJggIKS9CDg+EHI3aQigagRb7BIU/YLgnYsBd5+ucivEbcIzKxS3iEXRTyewFjKyUDpbVYIoSiC + 8y2/TyepSJIA4RnPk0R7RkyBhTps5BBOb/EXxbEwjzfhRzDGEx6H5YHU+IVlmeV1fTJ1WK3KdOhj + S8WDcOgIKlFiWSFrWi3uxonvJ//WUNk1O6ohfUv2udzMlzSdI1WGASZYONJPdO7QZvCW4Xzc6iS7 + 8enFrwVfpk6CMYmjePXm7Qe1U00QjNn0BlZylS4Ks3BSxBdGJpXO5+lsCu+cftn+cvHrSwePnc5R + 4n7siLUlICMNB/M1K24DayEN9wi+3eMWtO4bt0/ROLdn17W0JnYgvAc7D3clzXn9Drb9cB/o1JRj + 7FTCsLJK1oOJ/NivDsagvZkLRFpbymR9oXSnYtzK13S8A0mjpUHRAjCwP8SUdrJ+v+HHIUX6lC7K + Y+OOw8gI+zt4if1o8nvOWQ8Bzp4rTmqnj+xPL4lcHSvNTsPnbtAuck22sQ1cU10YcWvyoZTFiAnO + pisRU1oEjMbyQvczjAHKQBYb0CsGWRGd5gYUORLSKYfXgLce623VbDv0pbXBHMR8eb0nzdQ+/rij + UzjXLGiY9NEdA11ZItM4yh9tQdc20+znIJ5SjDBN0ipdb+tdGn+yMBc/Jize+nPSTxgvhWi+PZ75 + RRRuhJWdl7MOTEuXMWEv+XO3ZbitbGPNtGQXJtOih9IN9PGKXf126StkC5Xogc9/qftFkSwyrUAz + LTpxN+kWwQNQKtQ24O3RzCsOyQNOG747QQYadFwaZjZbLm7FS8PBbrHB+j/CCV145eiNBzcmlUaF + mwH23LLNd1gyoh6i8H6+z9v+ID+AI/yRcMEkoXSIytbsI+A2ckWc/+/n7xlP7I249LqVoUtSLhm6 + 6Kl0yZ1+8sqGLgSoMQ1d7MWIuXDsoyEDNVrF4Z3nUU2oeg7udqAbYYQOqUmyYqQ0GmSDT2fvWBnz + grx36dKrGLeudxPTrJV45RqfuaEkiXgQ+hUQ1OliDGcb1XyktkEwFsM6y7xG2wuLA993q2VVN3fz + 5XKwna7Kg2u0uRmDewBL9G4yKZvDIliyfZVXjY/TlBrwp40ZS9xqAfQaws6ZttNLQ9Hl6QeZ4YSD + BYXo23L9hTbI1ITQMbXz0zGiLxkAOPXjHJaDuUra5dn1Fxnblc42S3rl1+mYrRw8Atro5CWsLXr2 + vrJbiespMjVTK+1LX7PbbEsmDYVW2aIPXGw9VLUbbAjIAC3JJtVJ0UPVR8ZWij46LTrxzEnCnm1a + gj7hkZ6TbiXk138ymhs8oAcNGl0x+jtXaIpcT6dm8ghr2LVMzZSNrFMzVSdmaqZ8Sky9LuTcqX1o + UBSll1zfNsvCPuSoYxWPHnMrElnnBM/ZGKfgAEZwz6JIf3kHnMeFHKmHyTGIXMox+PW9y1sA39Pr + VrKNpFySbeiplG3enFZgQ7gIdS/KNt6LZx5cWy4benEY+zLcCGskvSZce4U4PixdU+P1brpVBRBq + wKEoClmZsYcl74kowkRRydrSvVxlC8FCSCy6Satgg4010l43AdM3wfUlUeR7MSvLJXhR4IJ2QCFk + IQ+YTa8PgOFXxCN0vdjnAsTvJy6mg7tQixcBY39j3L0H7+5AjeuuJdRqQNFqT+BDErbA3zuuqrAX + kcjbGeauJ7SN/eo9cBhsciy3spnInvA3IjeQoVq+x+1vQnrdMlRLUK6EauFTCaD14VVFy/cEXIYZ + qvWMgXQQBN4Q/vYZl5B054vlBj1d8+VimScoTjJhdoUVEAGblDv2h4zXvJmusVTHNlshU3r74cII + Pi3C+KaDm+VuPRJVfqVZExiy8S1DDJjZbKfbHepI8EL2XSCqwuRLWP/5pGpA6C06BhRc82MboHdB + PmxExvV95rKywk2G76aYXBY3A+1Kcs7jXRkHt5yOdPO5L649JhFaUO/NTEdyZ7N0yAhF1PikLuTI + AmssUoncYV7ckycOdE1S8mXww3IhYsbGLcSGIzxkvaaGelJ92nOaHoKgxXXZA1Q87OuEqfVZ0tIc + /2keMCEaEjzfbKa7+U8HkYpcnTTFTv3nbjucVGpibaWgDkwbhXhG19FdMXZYucDKsKkFQsI0EcWO + 87Oyh35kSU1HrVckU/y52yLbh163TPEXlCsp/vhUxoeffQhrUqgTVs7xH2EVsyAcMrh9Xal/fzBw + /oHULxesgPSv0P0HpaJxg0LROCkcfBjPwx6EAzdy8dat1nGzolTUgOE2jKOwa8W2xgHBBTwyYiVr + zQJB2FQJzvMC+F9ZCDr9fFFQJHGm7zLsojE6GNhY0wQkzGdxpXRSteKqIV2FMbeZUC1clTdDQZE0 + xCzQR4yZuDivnYmudK3Gu1t8q/n0kIdNgqWaSh0hvOc4nAzGZacMHA0+ihCeKKVCbWqvCL8MLsPG + qIAIIiHGt6jmDTvNwYOf41SEAmcWRCHBQq/gGk0piQv1UxQoyKB6Xxs00xhQy0OhRlaOfDsZjyvU + vPoj0wx9XVtBgFMYg7mS0sezd5D11KLaLyzst7Yf257gvuo4QI8pehvUtotRG+qzD65P4wL/GSxk + wIGT3CVQv4MfVx5zEO7b73ZDOCrMzmM8ZHXbD8ZS2IFtRuLzgNYX+I191cYeK4V3rloRxnHdlCzX + 09t9ikh94e/HUPDKTTwCqxOWA0xf+o8KbqiKC1Zr7DGKTDblD+8fo+AfDVKILVmhFWGa7iwbEf/K + JiVu0KoGuhK8Y4WtxVokr9HrttharJq8Rk9l8trHN34lec3jXhVbK+Gu5w954rk58F7RKzLL8Psp + gGC2G2P2dbEYF7ycrYWiK+0+4ineBOhHVDxXZrAtbvzuYjhH6HJeDctpKTw3kSlj1Rnk4rhJZmY8 + CDGtvSmvrhic31hay3N5Yub2v9WiKHC6KPDLIuMqWy+/TwV+hFEcHReggJdqRAa5pZCnQvAO3JYe + L9soDybu7HfOBdGBL3JOpSMN8TgxH8ysHp4NTj9cjFQI2WQAu4it1HzqMuK6qhb9WgT5DK4QzOkX + +JOvfnmbzmJvpfRHMnE+PdGhaRu1u0dyd0NPYvaGarsXXgG+uBurF04Ga8zzwbyQfMdLR2C+Ovli + OHg2tWzsxl6fGW5BIsswp+vrJRrE0BjcOVXhzyCI4UY70EF7b+WemKsHSrvrQrZpU0QKF6yBWdgS + 8oOIQmEbipmJ47HImsPk6nLnfooMTDXZFFhSBnfYbAmfOdvNM/tCHkdlmsRUZ/wgImqt/ByQsGjy + w9IN00Z87kixTo4UeSMCsecA1aOS5TpSbuSaPUjOvheQz90qS/BARbbmKei1m/r68ZFL4Asf3sOt + ZG84ptet5FdJuSS/0lOSX19ffqrEbcEtVAIWCdBu7Mf+kHkCpkVkziCidy1oZJ41rH59s5yJdcYk + epAzGjIthOz6er2sRmLVNzDl2LgpZD0JA7TdlQVGxbnwCoeZayjymsCe3QMCxdwk5l7sNyAeqO82 + 4Q1KglouFtJIvQZi27vpcjaaTDe72Q2q0tl32C2L26wMntBEXY/V+YyUaJmEltF57RzcRtoDDR/h + yA8tHiBFyN4u5ZuFNhonoKUAczTZxoF2C5zliGiBTfSWzAlRfcBW5HpzYP8lMqseIvHJaXOVPVxg + uzYEuSTyN3O0loal9vQaQbj69NWzMIz2UaNIUZg9aIGHebemKhAoMk+Wi+UadMz8mKOLZTzOVnhz + txxGQm7+rcFGWxnFAjckp8qb01fHBQkwVwUJ+G7y3I3aZTPINrZhAqoLI05APiQ54tt0w1RRVZST + cjGpJDQ+ufhw/moAUkQYeeFT58PphfqN/OtfQMnZzG9ExRoGW1EVnHpsWuD+SyYhD9B+xJPDETNH + uz1yAnTboQewVlfc39rzw6qy38Gb6GPOdHliVECRVJwnbUBvgkZzx0z53Iy+2gLZhGEclMebrjcZ + zpctkYBJ5BAxYZMpCuJtd1TAfMpvkxhTuVb2ARGkxulmnNLEdQzM7lUJb1md/G8KexNRlegqLzwS + 6OZHuafawE/8xbB3GCPX0yVvk05Or9u5nohy2fUknkrX04fziuoO5yeuhHwlfuLFfJgEbpzIkK+6 + GJYnbOg9HV3DQEZoYExhn+ehyqvlZjPF8AzY9Mvd7V0dXJkoHiebiuThOyxKmFM5qYk7UptUOq7m + 06ryjymqNUngfkOcDgOZHhMBugd9Fek8QDI5TjRMuZqx5uh018ShLnxrzOMkUuFdRnI5LYa9q8pv + CqFTXdSGPaFBoGkjFJYdRgb7JxPVQq5NTMXxcrmeiNKZCP6XyxMFjEQJ1KkJU24n4n/gCdAOHj/8 + 86R74XxreaC6Uj9KRtuX6d634OfxJKmZVJsKlNYmW5AtQ3Na9xHaV0mlp0T9bt6TxAvU1+jOF9n4 + y2E5qnu8TB8Z98xTUE8ej1sm3Os2tlBPqgsD6kk+pPtyvdoEKvTCd68GAuIeriMd2D54chU8dep/ + dRU42H5EWmnEuGONZG+ff29DbU+M2/HVhI8S2PNGJFTJSWtrg1PbfDPHA5vPvIpNaEWN85BHhS9A + bduWrj2mVUCzhDRJU1G7pF1SKmWCyq/PO1RpXjJ4uHlarTdWl072CsGBxB1gnm8vBNPrlrgDgnIF + dwCf0qH+dPa5ijsQsaCMOzBicQJsfcgS5vsSGP9DnrSr+JeswDVYZXDLTyilb5alX+F7Po7w91ME + fgbBZDrZwTORuQcbapNtjUyJ3QoND3O04A8H6Q2GPIAsNF0TsfQ2w9J0c6P7QikL3fngyYd0w1Yj + +JOvnp4ICHOBZz693m2FJcKkMUVj7R0s4xJUfnHnCan603hblarNjOVSSFiyD3jI9Tzu+l5FLsak + J/Tuq8HXF1XhlXizIvE4xiD2cvCV+K5p6dsMETmO7IesyTYugEEaGEqDQy12vSD2vH87f/mN5OAx + 08AKIRPlMMPAzW2ny9l9e+tiKJl15QMEMy18iIxwp4mwFjnFtjAkqNqNZCNhyozOo2GX7JoeSm2z + obHPMBQFZQpYADIVDNj+ysIy8oIMHXjhkKseeqt5OZLUAdQDgrjqg1BUGFwP9PqBY+gKxKq0pZ6y + VRllP7669OPIXgig162EAEm5JATQU1lC9vxlBXLBDZNSrbMQhACfx57Ph/h3EspKgJcg+9zM0q/l + ql10ecJv6/EOUD42Y5Z50mRK4kESBNyrmKTmdReHdEVvViDFly7moLHWl9FDfil7Qx8Ontgq3+9H + fHSNnBI6H/mjHMNAfHLzjR2WYrHzCzAKsNfybZ1m6+W18M5vVtN1NV0vcUO3KUTF+AxNEcaEjrnB + S95sJUt4Y7R14IUhvPFvB2ZjZD8bT169e3mhf3w6NANl1g27RpwXvFdnGMAc5ISHBIZ4h35nNBmu + sxnB7CorIlAy90NhAh3c4uoChr0r6qjhROJZrZtw6zsS500pM+XvOR7R4WiqtZGrsO+r91bdabHU + V9t6pThx3Hl6i6akLhAB/Thn8Ehii3b7+dhrq+fOGkNF5LLM7rugOTA/oKVa3MK2AEJHLxVcEZQq + QAXFCwAIx4Wt9nXdUs7Tq/ewLVtct+J1u+uWKJevW/GUrtuP7y4w3q1033KXV+5b3wdlzh/6fhSo + sNGPy8Xo3XSzhZ0zUC4FpCYu2493K+ZWb1vtNVpn8+UkE7C2Nan2LAxiM1gzTzBnPAZlwK2m8Lf1 + CjUAF/XlFar9VjPPx4Q+qvtG7atRd4xRAOpuensnq1/A+aIIKaVwngxm0y8ILlTJXz//+Cl21awP + B9/upuM7hBPGilJGvqD+glF1tRyxdfQ9xkLXkZ8kGHLdt7dijI/a+fNzkjA85lLNjPPFMl9Au2l9 + RK6EROK6eYnXBtcNX7fEdROUK7hu+JS4HuzyKtcDZaJSg/NZ4kZulAzhr4TF9abGRbbOg05rg+g1 + HoKq/uYONpkA1pN+uJzcGwa/xNAKdfsW8bmlPQA02HtypMKLoWS3p9s6dlsyD9TmZ0Z+E+JGHDPG + Ercn/thEuBIcX4GRKAXFN2GkKqoVG95PXiFHbDcdUu/FKPF7XkhHqWowg1tVB43j4Sp2ZoGxsZeD + PFiv9cL+T7ay+V6drmFshx9Bci8CWqd6HR4o2cpTmINk1x/6Q7pRwNxY0NotML2jkCN2DJfnMqb5 + 7IzBD88Zb+MxzhvZuYwLnRR8xvlTYtzoJ8vWGKyS7b4AhaXUXgUQ2qvf3vhwJ1QqBBVI88CL4cu6 + AKIdA0nGmSzr6yYtPHP0umVZX0G5UtYXn9J9+e6/q545JrIyzbK+I564CQuGPCHfLc76++W3UXpz + g2Al9xoNoYiZLlnuPP0PsNubdIyyrMjB2+xW2ZoWZFhASqDCF5RMfn0/ePf9C1+pACZ8h9yoN7ov + jJXK89OhxeXtlq1A6s0W+h0gOZvOp9scRfzd9xpH27E4B64XRT5PyhfpDbpwy9NRa7gLvMBrMtyF + AShoFWvhbTpL7Yk3B+CFLParIkDdOjbRbgp4a6I9Ry5nQZsFQdSIHGvQ1hLGXfbdoFwyjvoHh+r8 + 2Xazg0dXe/tAkbcsNHHAjES3oAGY0IGYkEgqa/OLRU5Fn3UqQopr1kRu8pvairUfn6T+SIp29Vcp + A4+9GNFmd5uuX+ickM39vDNdqsxncM6WpTgaM9qBD+LbJdZ5kLoFVq60QxgMoztdFjAKklzBs55n + Q3BXaX5d9DhmzuNEbo1rhI/aZqPNKhtPb2C9jxn+Pvsq57o+ZfKWgRAXtqxQqVpZ16jU3ZhVKtVj + kqbSya0MXbwt5t0Xq+zWYvViOyeIXZ74gRRCg0isf/a9GCe4zm6PUZYeVYpwksR5+O9mBxfn+FBC + lFp0r5hM2W7JdZs2yZSl5dYPaYknu+vpcrepBVpWrUVyJO+kWPz5kJa5L82A3GtR6IhetzQDCsoV + MyA+pYP45vSyxgwowE1LZsCQodtjGLKQJV5z2s1bVgynT2ECNttBKWkRGC18JSgUaDcSyLDbO0T8 + m0xvYMqQUYopE1aodM1WBdu0fPWkYHASRiZ4z1sN8a+I/orpr2RFkFpIB5UZ4Cno/gKWcjYZ83iV + 82Cp9OCLVSNiJ8QOxoNa2OLenCzW821WZIyCcojB0HC/gDyXJF59qsyfdpkdseO1JRLuYkfOhea1 + dlNpLVN1g3rtfCc9Bsla8TsKsP50yXlob8ah1634naRc4nf0VJazufqNl9mdHyNeSZHdRS9GETI6 + fxiFXMBPi2I28F0jicQwnu02KJUtpje/jdDJWEr9O9/s+CFXBEUqlkKiGoOu0OUexNFDMZH2Qcll + 6KDi+Ayy5Tmrc2qwENZoL3ngRnESYH1YZcJUM67sDTWzW4pyyuOaKj4NkeGpsyyKw1bO5CHm8wOV + OYKZb8bpjUIAagp5UnG+b7JfriofD6xts2P4Bx9MljsU5yQDoaK2U5TwHNyuilfB5uCOe3QYcGOg + Cky8eHvfSrVkGUeR7OA+OSDatYkTrpfqe4k0DgJXT8uPiLl60HBZZX1igde41kdTFKI4FzThFhh0 + IqvunlApwslrUDnaVKFRTWxVYNmBof/SM7qDvq42qj7a1cc3kXS4OF/T8W6J53kj3Y9qgf+J7zui + FepJnHuiWC4LFD6nQv46zvzoex43UGO2WO1SjACuehpVpngZqHLATzEcpiCsKad1WsaLBS5G1SL+ + +VJLf7aMyQ88skZizI+Qf0RGV2FIe763jpdgRS188/XV2eXnwfn5eXP0yMFUNC3RULT4p/duG9wE + et1OoiHKZYlGPKXd9Pb0KqhINIHvVyQaHiYxOqZAHkWBELffu6KN5dPlGym8/L6cAf1xNXJN3jj5 + s1pZI/YiXidrPADowHQ5W97i6NWzWjoo6JfoOI6+Vr04gR/UgsaKTYRx3BKHSrexZRSqC4NTyIcK + fco0mVRNKDkVYA2eH7lkQnFlGuq1xDrbZKutvRHrB9pCNNfnBWvX4Rrsarkk5OilG7QokEmv20GO + EuUy5Kh4qi0o1QKZYRKWIUefeVESxMHQi122D7fk52nWVZWajCFF1Tq3klTTSLoZSR46EvVvZSSx + WUq0hOR1NsMg/IsbQnoxzrfCytwTG+S56p7h7DVj7coi5o1sbxrdiXHVqKfEyFartcQ8fD9K/4B5 + gY/KRnwkXNzf71GuE0iC6Tjb3s+KmFMSBJFHIYMRPnW6tseRCI9AEnoETJGQymvAD2po3yYMvEKE + ARwVWIEinOER9KwBCnoq3ep5AXljC26tw8h/1a/+QbFa+OHwX3zr46i6yMfm6/h02NJxH+T6gEzT + GnRC5QDa7XU7T7HiEhT39vKScc9evaDXrcQbSbkk3tBT4gqf35yV497gWJYMpp7/YuTHMCPx0I/D + 0Jdxb7WF1LfpbvAEa9Ofnz3V6CWY3CoEi88342rMWWN5+/Oz2hqVLuNN+F/M9WLfcyuxYpXqHofK + wBsVJiM3sepPSyMm7UIVM7HtqDBOY2WcuDlUTXbmfFqIiKkNLLyc4o0ykx780uJo6KN1tRy5bCdG + LcfP6e50cDtbXgsWNVnOU7LJygUqFITEpAv4ARu9XH4/zb8PMahogDg6UQWKmKoqlXO3m6fCvon6 + HlpIifgI7gfcoEqKcT0e/WlQ03Ahq4Ms74Wa5SrWndmPjooHodpF/QHaS6ybk72fxBs8Zdik9VG1 + 4rQiTub3i/csbGHIodetOK2kXOK09FQWPX793+h2NzXJwI1NBEw/fjFChH0vHnKsAiVZ7XlB7VD1 + aeY4UyAOCLQVOoHXS9APcPKenD5VRY6z72HUR5XjMPa5H9VnJMJoYBilaOHQb1QGDWIml64t8Rvx + Pc53YQ5rKrBWRw4F/MakRJ+xwK348puxqJq+n0VuYyVl8/tzhB/4/pE6erSwpcQgtwnbgLkR52EY + gaJKq1+cylWN7lq7iSpplMWPOwG5GM4WMmj4LXHsz6cXjtjXikOHbuJSUV/JXTWQ2QytzlogkF8n + uEIjs9mLhE6+lsLwDxB7oGoYAXPJui5GclxUbseiVZ5urbZhX2bAB7Ae+pyTY0oNuLiApjhipW87 + kj2om+OHl0YV5xxbWLKIvQNTt5WGomTRW7T+tovppDbWEZ2yCzOekx5WK38aV7FA/VDik/P769PP + V9X0orwH4dyKYlL5eVws+ptOa8Af7aEoLYgdkNUI5j/P6d5MZ9B1NxzxP4eYmhBafNH2gPM4SecI + 2Ab7eL6btWVLLAzCUpL8fDnBCOgjIIN9zyffwZ0EYmgueXTYsSdsoJRQkY+tLcv9a4ev5mtYnqca + QIujT4fvMSqR9M7/5R0/1YtbNal0d+N6vsov5C1Av+h12/xCXgX9oqcS9OviY01+IavmFyJeIedD + FvqRK+Nwr/K6tzy8IhySVHjLn1ycRq6rpCol8l+uFlUjS3uJH8FHeRRWJP5ufqAmqqv8qySvW8IU + oyFiip6EJ5tssdkNXou01vRpKS/Ra8qSS5C9sYo43wDdVyTqs0Yc+waicIKoPlM9vdj0mhs6DEdV + vpzKZxOLUVpOTJQ8MGgHIW1k+XLcvOWqyiy5ql0A+WvcgPlSETYnvTNdYSCHhtkfL2/R1EH31Sb7 + muHRnE1vU9RTJbEiIV2pOR0AgxyjvXWNoC1wn2fpdvDk/eXlU2l9GmKAHsKaY8yfnJH/J1dytIS2 + cfDU6dRAuOocOUfIS9qFutiYT3zOohoY+r1ELZUEN3DzCjF0StqhN3e7vI5VFbr79A5dXPudCwF5 + A/bzlqE+B600D9mJ5xeVCOoEbrI1Ck+3cIvt6tygNZ/qIzxLURlpj87tM6ry3QxMamEB9Kn078/D + i/NcORHZ4o/74oodjbJWqockBwXLvp5O6uuo7/PsUpD760s4SmejU2tpQjWwkic09ZJEoZ4rmeK9 + 558aUkUSBYGHYYNF7w0FhwF3wuAwFpeyeypGH7LUPAndq6dVIPrhYAGqLCh4Oc4cKAyXq5nnv1wJ + 0z5CRhakPfjtGvg3jLSmToGSV6B12gRbCmtKI6qC4u8XCnzedBUKINCKydACb940SnqNAkKxgwr4 + T3PpHLyfSxSdR7BMDm20HAjNC6zLSRyobVtL4VBJuB4qR3TWp7oUkcCyD0HhVtuzw2149qOp8HDA + vdOG8GGHTihzK32WtMmtxNctcysF5UpuJT4l9nv26iyqhgb6AatCrCEz8odJyCOP7Q/Nna2hg289 + aG8N8XZ3oL6Pm5Uer4TwUszQcaOIxfEDhOj6PmOO89NM0seAePVa/tELo5yQCi05spKkJ01llWVu + K8h1LIHoxi4lCZlwmx3H1RucPIsYaYG0eBtYvBEwAwUNfHylRS9Suflh6D53w1ap+dTENjNfdmAk + 5tMzYjG1CAs5QhjVMisY6jVFDM0DqdFxeoxR616EXE2wjuBn3pvguctaAl7IRtbeEdWJ6R6RT+ki + mG/uJFf/sNsqD4gj/q0+VYW2MAdfFp6Q2POsPSH7pSieSMDxzTzdksmkqz/FkuKP9yz4XuD6JWYN + 39DJjWR59fR9h7Rsal++tkNSZd/3WteYoJBiqGjLTPZT6re+74+rFgxXZeLLeSpcldJG23wN2VeA + S2KveJwPTeRe9puo+42FZ+FzN2h1wck2tjec6sK44uRDC8BLs656OeqxCEZU7Ax4s8sCX1VM9EoK + qjAKaVrtLFGYwlXlXUcWUPyJDKuT9tuzuuqXF6hmqY8T5XydwxFEpwwko7idqKFb2coaeTeGsKEf + 05bPMEkamsymK5FcUdjG6le/1PzO7IAEEJlM+Ehybwq0kmZax8Oc/GyUlD7UF7U1mU4vct/5rbOL + qI11cpHswswtooe0JV+9Pn0F/383uF5+1yqeY2p+3j9wzoJ/iKtHq4HFHTq/uRP1arnL/P5ihB4O + cMxeQuga++Hm4litwPxnsEx0FwYfjW2jv6J2HqNaIt4/RuWT0V3uA+p0T5cPol1f1/eDMRCG+1Mx + Ha7wzkPmPXe9Vmjn1MQW61x2YCCd0zNiOK/fDO7SxWSfNUMT4YGX+C53bC2MLfSsHq5NkvzfLme3 + 00G6WqUw4TYnPAgoWWKczsbHlfhSi6qxJD3+hvF2V0neyFai150YIr16SuaU7e5WmlO2u+vdDHFD + b7Ec0FNH/DWST53b7bWwpLickyUlcpks0DqGbYBvZSPseXJkWbhIyQw5PRnLW5HV88OSN5b4wCtY + FoyfWd+mi+kfFk4uTYG52kv0ZYq13DZDinvZiGHXyusNYe4eY+Q10xsfvrj4Xa2HF2BuPL6pC+BS + zk6Bhq29IaHwbTh3OIECe6k6MhF0mC1kXtTho+UmdG0ae6ZlNpSIz8uXcIWoNNfLiWW52CCO/PL2 + aXk9dA4J6U8SSOjSfHvIKnHo6g0klSPZlS/Lt3peYO/2o9cty7cKypXyrfhU5nFdfawA8riBXykn + 94wxzCWKh+gDjD2uLMQzuCGWq3tEyxdWcqrAs1ncMHF4aboodWuzCCqewLYV4GBo+N+yH5CKU08X + o3S2uktVBsb+EMaYh+UQxiKGX8IZiGiVsMijM7HCJIpZQxDF3jSp0AyCNCItJVHnVzQWIchFQ16U + LN6NkRLUxclgc4deTVBirjNl054i+8AoxFIz9GZnq5kKd1dTQLmv+L4cdiE0UhdRny7Gs52Yqatv + 01BCe0hkj4u7pQ87Ypyub5fAc2DzjKfK6CG+YaOnGcM90gUcNAc3rI7dgAvfkXNU5CxWKVQVIaSN + WiUa/PTgMrGHRQvL/b/3mxRTClSRSxa1YEriddsil0i5WuQSnuaxCBWmxOKowpR8Dvp1OPR5EHGJ + UvTq1a+DJ6+ub/yCkgDyBlYRFjGrs3s0qqqIFANw82YqUOPg0r4VobtUuUPve3jlCy7Xra4EQgia + GPi0vVsvd7d3A3K5Ltf3ecDsh/Gcj6KVuu4yInw2GfvIDmlo+QqNl2sqHCnhcRB5Rqz+q5dv/KIr + kpgqkKmmw0ozZDXAImysG5MktaDPanNukLNkv8BXZrCdF1ll2EbYBeyhpm58n8dRuWi1tIjoiS6Y + PA1OyKOmwnf1dNXosX71krT98vqUKtU1Bt7X0jcDo8tfURp6Y3SdJO38TTaug4c7D76LKPgOlrZg + G6vbCba6gVjGImPds/rtOHYXwr2jTOUEQqkl0nq2bM0orGWeTdu39lhC9h7zHNRlHSKORjZbgkJl + j8AVMM/N0b0mU7wo2vmUjrCTeiD0kZXWPIhqzeWub1RdapK8e1VcgLfy4h4sn8LW1AyN7CCb/9Hk + Gyv/dDd6ys3V6Qv7AGhSUpdG/PXfJs9Z0soFQk1sPSCyA8MBQs+kBPXx9L8UMo6utlh9hsz6v16q + +KACYfQLBzIGMvSDqLgFFAp5O0aDqL/Y5PXlKJVaQpYjqltkIh32qzjCleuLXfVus4Lr6KBgbh2x + gHAWwsCOqV+gd42/dAsa82VU3unFSxa9xkpFbitfbqGZ5Z4pdlTcN4XnMrnz9EOBawLVuxJ4XtGH + u//dcr9YChc2Fm0rL6RgLAGvQ6veflsxRnenoEL9t7L2CRA5RkJB9VO7uzyOIv6j+FWsItb9dhHr + vn3Eul8bse6riPU3F5d+NWA95pWAdQZHO+bJEP6GYUgYiI8KxoJO4nCwEuaqr9mAks3uZyP41ewe + xLLphiotD6YYHyJBIC/OhWQuZF0z8+TNSsDNLr9ma6Aw2ZHGrgxk2Ubku9yul9+g5SS7QREEfoGW + NCzPgBOPL6TXupTka6+Q3qk4ByafwkA+L+c5zu1q7Xe1sCVexGK3EmhvMycNaHNmPVEjBj/mjFWK + cHSIwb9os3JP8CWUQvTvng5mS+h2+gccAFhHDRm025xIDeyPTJFSjgHKiBV0YBGnkx2+sVD5/5vB + O09oTe/84eDbHWYApze44pvB7H6DjYpsR6RCYek+1drBLZ7nFfiMZEly1DXI2WvUoawFKVfmLCm8 + gvI6mx9r56qQGJiL7JbOk6keqJ7eeaNfvXA/221U8byCZE9BW82VOurG2ItY4nNO0eQ6cgy2roAA + rNOkkIdl3+AnPJvSMi4quaS4EzaKZpCQDLICfaxm9krYcUi4gjBnQO7ZqSeHMUSOiinpDzrEkaxE + TE0bXmQ1pn4oP7y5F9QeUvbTMfKcfVpkLQRKTMVYu36Mz73EK3INq1EowYFA8M8vXS+2Ry+h160E + B0m5JDjQU1mE4nO1Ojr8JzEFB/ZiBB8aC/OyHzBZhOL15aCggtzO8CTfTXESrkYGzEu6Et5Y5HhL + RAvK2eiJUU1alpKWFUvwzplM0913NPXdTW/IZyONdMvdVrh1kXNgxv8ddHSiCzrBlkGRY5auSCh5 + u93y1XDwdv1d+Vvgn1zJCvDbKqpKJyyUJEo4QstWK4/rKaoVO82MvbAsmBg+uWIXWmAo9qBArMtI + IrDtDgzb+dOvrIP7WuOD+BGBy0ZkYKybpD0Kc8XX1SUhhJCnzTBx+GK4oFpV3f6/kb3770dfKsUH + T5zVTB1P7YBNkKBfimRX2Vrg2bceYy+Ih/3pxIGOYw7fhM8Zb1eNRzSxLsZDHZi1eMSzKshhAcpF + VyUp2mHS3XYJHOf2flBjXDvd3nK/2CWGNPs8IjNMSLFO6uXaWlzHmz86gpm6YcLEFs4/sF37iOXZ + oii2z3eLoyD/Otc+EzK670qVJRupD1LwCnISu8x1v6GkXZN5yOyly6i1bU5h3mqW4KXue/Go2Fa1 + /mjKMz7ox18OvdRh9AI3oY1M/s7pQmip+/QQayN5e9J7WTGX5kkvZPZaBr1uaZ4UlCvmSXxKWsY/ + L67QPVqyTwrNybRPjmI/8uJoGPsJ43uKlRd8xAWjgEbagJ7HK+eCpk/lThkEJstvi5I5AYTS3QKt + HwWWrzKch2hOmsHNIcopiSIKWCJxktXECpyvM1QnYHunt1nRb1oyY1B4IHb7lv1yRYIusUNC11Ph + CIifByquenkL22UhkLqvPp9efnZenV3qSrO+F1AQmB+5xR1ecM9Xh2wlXvTgnCcJET4Q5HfhoQAp + H+ZRfd4K9vlWlfdFw8y+rpqCod0kZ5dVObRxea2tQ8ey834d3xEvsgcdpm0FcVEvOz6WvBkkFNcT + Gop/4c5fDDIqJ7tExEnbvYGBcXFh2tbQP9GxGXSN9SbQWN5JkDx343aFaUUT68K01IFZmFY8I/66 + Xs04c6W8G7pXNYBs7zlzmn8jCAhvtedFKkH6MAaYvfh6NKJYb8BgRwAl/1A0sCNlhccCEWa9FXrH + IVPHkRIIPl0y37X3wtLrdhV9iXK5oq94Ssfw6s37ijHVj5hXruj7LIixpO8wiBORCIun9nNdJRxh + 4qJQk41CmlmCpI05yvdj4IRjvdpo+roXAsq7zQ1bmUGRi+Uad5u4UTe7NVAveIlE5PpsOYY7Uiwg + SVFXN7OqUVQFwwvnSBU4EXZ83BT0z7wkcaOKM3WzysaIHl9TfkDlUNRZRxGGvrEGi9GVNo02+OBq + vEhUxau+iJfLuJkpUSorqvp2Pjd/z2JC34Qi4IkhlcqX5NDkooihjiigdEJ1tYZFIvJtCdmk8hfg + Q2UJLvXhsNTy02Va2+mHi+awvlPNmz6vvvCVg3tbV14Ow1BWqaKKH9ZT28ZB1+zxfMTFFxx5DLSg + Z56WNta4n12zq2aSj0PdKNAU36PPfHU3tOyuvrhB6FVHrg9c+whLwWuMcVvwKtuhdifcJO56QUj3 + rLyYR7qXoyGCgkCmFF+w5BQL0PI2sXaFVpZJxYVuilnF+WO6Om9n9/k9WLTmVouuF0kiGJ7Hwr8N + UoqbxIngCtl3BO4TwtlE+O5ED+kesnYBG48BikXtVB1CzNhr77nbLoZYtrFGEpRdmECC9FBWaL5f + SWOWynLc3q+XIuipoLU7+345uAAaDhISG9f3JcZgJ0tPC/2tSzcHDEM/N+3D82sqO3SwQbHQowzM + jhPzU3I+Hpfvo20V606GsUMmN8NlUHtCe4hy7tjPj7LRFd0TXTB1g0gWb+V+C9cEvW5ZvFVQrhRv + xacyv/b8I6/WbkUHUal2axJ4EUekbwTHEBq7RJ5QAZNSWj0DEUSGTz81lLtrGJyGq3gCrfnqqWp8 + goFopJmlG8VZhPY/XYzXmYA6KagRs+WGMhCxTMJUzrzIX1/A5M1UQux0wat449J8lj+rDSmOPbOo + 0cdXZc19voSFFZS0J72OUBA0J9pyFsQJK9dKbcR4KZJFRJgDZB1CtBgpNblQL/XJ29OLp8IyAnOE + ceLbprW0X0BatA0m7wOzuz+wcGqlCgt4AjfGLBMTSaY7RCwhVZ1qssKgh0IKxExQEF6mt/gGiDQD + 7uA21qVaWcitUXMs0GpcGdmw3GxHcD4xRGWBvKk0Z6t0e/cttdBQegG5jKk2p7gbvuC8tRY8jkdx + ER/gJmIARdiUA/plnQ+hgHn9NnrOvLaY19TIHvNadlLCvKan1XAZDMxQUlFRscJyxuUaxB82KWJg + pxIDO5RJb4/ZWKNs6EyCtTXYscbLxX92t/Qj5XMrF8TNrl4me5gd31IaepRYgTYFffdKDBQy/et7 + 5rZA5KDXrSQGSbkkMdBTaeV//6oiMfCoBBPkey+ecQ/U+GjIYf5YuL84yJcZ0K8pDvKTL2tFqNei + ICygSuJh7NakzMPdtsbMkcFuO521gxxTmyxmASczxHFl+ZQCFjCKmRMBmeIX0G7XAM/WjAz7840i + ePBicvHn6BnHJm/8dKQfFvqkf+C6LGlJumgzAQX3mjeUjeV1H58KXRl0xVnYJugKX7cMuhKUK0FX + +FRqNheXYSXmivthJeYqiLibxEO4oDhTMVc22YNoF1mu7uCYLp4OC1mBGKVUblDMERS0Mxm+8XEE + 6zufLmhnl/MHT8QOEQ7Pd5tVzKnCmQgZml7vEGAFfqNk0uIWIAVotQ4fruBSTbelbM9m6LYEK+VG + D5dZ2tRXBQ9ICe8m+E9QnouijzNJEGsssEwxfbybxMEDoiPnuBu2Aml4sFRKeyp1PPInFNv68+cj + PoIrrad0xAATybFJJdSxTV5iyGQoDWctzHL0umUojaBcCaXBpxKL8+2HmlCaOCiH0owiL064P4x8 + Fno1CR+yGPUqvdWspZBKVszDktEzEqDzdl6NfjGztsQqaklss8KYGvNGCeLGCBWQx1jMyvy/DMFq + sHj4yiaDV5wwmJqKHa04WqmpGlqDG3j7Qlk4yOeuV4bpNMneohkrG2CA0jZbpIvSHGAsRKkLTT7w + 0E7XTB0XqwhdLKxmeVK5aQx0GyHl5Nw4H4xxy5lWQTVwP0zuF+jUGmJSyQYVLfRy6Rg6WcMcD9Bv + t0tGN8ybP5a4SeoirebocUZV6V4YENbTzRZ2uMIIhR+u4ULcil9+ns4ZklGFxDCXUpj7Pl2cMsP+ + iEkcFDY4WeJliNFyKyHKAzsA7uLgodExOsDNHVqCcsqhSMhEgNStWDArNowrWSJTv/wPTK0ZPI4g + tfdsoJ5p2RhO3bD6lZpl7B9c3bThia0SbDJCdafQYMZ64HJoBwIj6gotTReLvRm0B0gGcR3JKnu3 + +cpHou8/MnjwPVQs0Np7wos4EqBcr0xPJX5CXW0jiMLnrF21DWpiW21DdmBU26BnssiaBjlZZ/Pl + JJsJLH6685x9v9TBoVffxoGzwT9ENQ5f1vfxyKBeS6IyWfZRKH8CZwLak0rfjsAIN+2yZR+uttGB + sZfBb2qWvv36qais0FPu/qCFUYxet3X3B1WjGD2VRrH3VXe/nyRJxd0f+kkUDcMwZLIU1hqTZs3U + Q5GAp2xNszpnu62taViUjBn6FiOpHXQoEMCihMe8UiBAoBEvmiO/8/TEhsh7rwINXcaCHgHZNbrA + 8fKqhlKlNxjwjRj9IPOiRQb20saE+ndBOzC+661pf/LLyCcll534xkHjN9aqWCCxJeUvc94yRcwM + 1C+njuafd6KcwbCpzyZjHq9Ur2S7wnB3mfaJT6qZnycD1Erw1zpkt4ClQt+0wTS42mhpDVE9HHx4 + +WbwRNQaGH24XrHVU6GBXOVP4U9/9dTBQ5EHDxBYCi4A8cnjFrPCJWoyKnNBuVsIIHMDwm7el4hA + 6bfI3dF7Pc8mBO5gqxV0DsdzPVea1/YfP1Qbs8UfwOiaOW5/CGTtTIWtsufrpDF1EVCu1ul712vh + xaXXrS4CSbl0EdBTXVdBgPwWbwIG/NI1Cyt4L55Fvsu9YeTH/IATN50B+b+JExdRCuAHtZ6Brh3M + WdA2L0A3sq4erDoxywfLpxLTdARqxdZEilXn6cliuajWEXjqfEy3Lwf7Gta2G5yu58xJ8Q+sWebG + 3DnS8GItCLsJRXZdA7OdAvfdZKvtbo62pbmWMmGso8O6VahyAhaTpYgsoQBqu8Z2hhIrWixiFE9V + cPVokz8CY04JJp3WpmM4u4cxLdhcZJSbMWT7rTLWFRoDl4LAZQ+pLCdkuzwtsp67hWPbLfQPjV1S + i8R8KtImTmUH5QN5VRQl+Wp0rwzvB7RZlZdSlBoa1XGO7jHhPYJyhaEqZ+Ql9voXvW5bzggpV8sZ + wVO6di8uP9SUMwqDcjmjkRezJPaGXsw9T+JNXigZc5TnseaQ1So6EWXquxRkQI3SllvxMhExe5In + nUq7/mbwdrzwV3pnZBR8u5E3+8V6Xq0sVGugMxQlt6TCFOCemQuHO6o4gPq64Q9GLBr3fOSb6ujr + i8o4nR8/9w5ulbw4TkJaCYxVMJLWIZkFDWqVbjEBTp2vhHsyA0iCwaCaptUZe0I+9wkKtkhost7V + MJqKYV0LUpQQ8f49zHuLsCHxul3YEFEuhw2Jp9Lz+q4GETYJq2FDLAy9ZMiiUFkTr0YfBIJ14bp+ + B5M4vt/gNlH43p8LbEw6W+9q8Fd7C9O5Kw7harSnfoAhjcfJHu8t87jPS2dus5vd7NbFzLgGAFZY + srDJKapIO2qg+VyO7qpzWfiMofZrb+A6WsJBEufiKp3D2ZKOcDg1XxF7ibTiq1EKA1hujAV7cjpZ + wio+Ja6mH2MAjcRpQkL5b36h9wdrPIsO7h11ZL0kDhz5uXgCmudnT3xmk4suDinEs0ANtJrN/YL0 + siPLAiduLEtA6Q/vQPUnheL0XSgD9BnK/fxjuhgfUY5ak4ETJdwn1ufRaqp6IPvQZULU/RDGkY5L + nh1f2DtU5UZAqm2F5wev2+L5IeUqnh88leVGXl5U7gjPd5MqnB9sZD8YxnBtJxLo5g2KustNNmLD + cHQ93RSyCIdmLMXtbDfGEhAFPiqLe6Axs+7CQN3CuC5A76i1VefXw40ajjmU2lvB58CdG1g3j33G + wvKlID5hkdVGrYRu0hTRg9VZYpB8/+3sna0v2X1urb8fSKuhZPblrmV61sE5PgGRc5Ktb5ewmzK4 + QrJ1ATU3t5uie0BhyeZPJygSy2B5snBKxDZZ4wVGNBFW2M2JNgvKIon/nE48d+Xg1srhDMNEcNEk + IrdUur5eovsVzeMdo/vF9GOT8jxZ30FhTBApy+/3mK9AlSbFtsnUM2G/h3k84qZz2qrNnW2zOcfr + J09YnBZsoo7YoLSH4cGoe15zj908CHLg/rHHFAiFLIDsyZ3M6pQcdfYedsK/RqfWd4NqYHU7aOql + +0E9l4ivH05N67oPzDEJEe2sqOgHWJEqcjkfwl++ypI6F7NxM8XkV5GvChMmw+NEmvPp5u76PgVG + u9ncr6bTobbEZsob98/l4IlSPZ+C7jkuoK0SADJMwLtniHgpOCkWo4IuMRYKXtRvoGBZcN2Ly+ef + 8zSpXD5iI8CJH2k4a1w7oj74p6vKBZbA0twmNcBPMOnWrXiA9cDqDA4I9uxbUcxvv1MzHmcIDHq3 + mpEib+rv8+VXMgnCLAolw7gXQx78uxxKWjB3GL3nVgr0pH1L4Y85nox850uRu3xhok+y8fsikD94 + OVi1YSHN2FGvPPTKsJ1/VrZMzZYb5csNv5QGyxOrrVW5DA2CGqlPenhhB3KmlbrXlyaGHHSfh8k6 + eA7ldcrjwI0dOY/ak7ln/veqPHtKDhv47spw21yUqvl+7Qh5H5MJfrpsjzKfezgIrLKJI9hiwgQJ + pawhwi5dGgI3SZ02nKzjR4nUdSXcI8hIzDrX+FCiZfKzf47ENymmmfM16zUFFuXl3RyBZu8bgzw6 + 4tOaTiPIz0+P8lRuEo+Rb6PbgjWmrwZulAMyo0yrj5Mer+4yOxYa0FdIuR3uo4NLJ4WkiDIzP166 + QYvkFnrdSkCSlEviET0l4ejl5eugEoTmRSX1OXwxikAYj5JhxGJPBR8ovgqfrVwD2ldAAsrLdRY8 + nDm1LxeF+o5Jput5Vi5nFgZmRFbxcuZRFLvQifObaq/0VDR00lU5FD7XTbUTdSuJy/a365W3grs0 + RTB65d5AmBbY0EvUZzOp3G3VjzmHvc6237KMbuJ6sD5Rk0pUysBO0/VWeDdOBovdDGtKagQYYWS9 + Xmc3Gab7DU4d3CU6m8PzfBFYG9CdltdArcYRWdSAPnRvdrl3xaIVJYDK5NsyWc8PKMwBAaEbitbU + qs19wIW3D4x6FDAZevw9RGlFTEX1eO5L/7kbtArqkW1sY3pUF0ZIj3xIXPNLumJoYkQu+AXaL9FJ + V0L8LD7/VbzvUDMRmuNjLXk6T8YOnc7FNhcRjjJ8bgg35fjLEcm7nYVWckGYe/fYYkmaasI8vTWX + ek8rxFlF8XAgSMxlwV1UHUQeNprE24fhdy4DNWgXlVnPJjqEymPrQLeGJcoWX7PZcmVbvi/0vWJr + +PLMbgWaWvbL2/bDJSWh8el2lQvFlHfMtK5N4bELYYpBxBT9zUk4HomYHfTm46aDYWarDtDWsQRb + rmznkkhsMU5LSvb+oojqP3245AGzD7al160EXkm5JPDSU1ll9vRV1V+UuKWYguDFMxhswvwh6Geu + yrtoiradr4H+Xzva9tM8u00HYziim6bakycDBTZZrDJCpdtJh3v7+ZOnHSpx6Dk/yS/9ZyjJ2WOs + XUS5Tq8uYWfbnzp63S7WjiiXY+3EUwlU9vH/reQ6uRzPlRlr98wPg4SFQz9CZwqdutOXZwbrkUVB + Fv9bTXIqo4ebDtg4bPJxMh/DmCvpSd/hioYzA+e91pheH60TBBU/r3alBjHzKkADlRgtw5ztJ17z + qDnjFbCFIjmsbTbLtsoHaGY1uY0WejUdzkVpPuHDNdjiGM2o2y3G6bw8e1pcoSHIOLPtVHxLceGK + puH8DYTO2VAUOqm2+sfqB0gnpoPbScfj+SyWSS3iGO75fmvbYEfReW/43cFIa98w5t3kLlE7rnh0 + SrwU9w8i8P8NMs07V6ETbACb2LIQG4GMgUYW1ZgmW052xMhwQ7OEhRdgaNM+vN8hpb4dZznd7K7p + 3NuqP+p2owSui0vGEvvbjV63y+QlyuVMXvFUZfK+rAJ3e1FYzuQFmRIRA0Gm9BiXMuV5kSnKlEZR + o75gRj2bXR+d0FtyfzJYfo9H3RN6i3R+YELvW/7Lh2Jl0voCCaY0a977568viinOsR8EoVv2Bz9U + Cu9L8oLUpPEWRr9C2y7Fddck8JYydwtzIY7KW45vfKBMXmw+3s2lFXmyWyPrgTfwov0wxPaqOjgM + AqvIYh1ZygARMYHL73BEt9Mb4S/ODb21MVbX9wrhSgZoOXgsdC4vaFmOXA2hOFutY5URNEW8/+Ta + HT+pQkY3s9GDKV6NLteYySJTwOFwo6Pf9Xo5sa0NG7Ok2NyuUULGMW3AvN5NBots/MXCRNSH4TrQ + qOpRzFumo+aNrFHVVScmqrp8SjfOXdGKIb/NwbqX2Rp5ETDz28IvDKoIp+4F/DHWqXoMIqhac8pt + e3npRp69REKvW0kkknJJIqGnJJFcvnoX+IZI4kUeiGfoxCpq3P6LZ17ssYgPvThIfOnYrcNHEO7J + Vx/OmJRJLid3gV9flfOQGHGm4TNAz4QzXRYisCjcZrfK1uPlVMC91N6viRc3OozdJHLjuKLPm1g6 + e7X4UkB0I3EtMUyWOxDdRxu80yboPE2/IHJzOl2Li1U8GAnBLkMldzWriwBzI95USgSNkkkSlkuU + wDnO1svJTriQ86zeAlFQixPW7lvmmdBY0BQNPKTGG+6C8FfGRCkKVWJhuftvp27Gh6DYTJVMIucr + +w5HZHGboRQhMIrucd2FfLNcafBCY45hGoF6uWhpYcBUtBAXAJrinqpZIi0UqVsff4OfD/8W+YGr + 5YYUl+vMFNfWy80GtJc1HRLgDTgPjjh3GpiAS/wSWFVkIUdvEStrfSjq91KhTUm1nTwQemT0IALF + lW9JJ4kqhhgx/ek8hRWmxW8trUSMy4So6TGl1ZgnIWTGU9zmAvywbpNXyDZjxYiDhQ0azqDNDYi+ + B64m/TZbCrY/HsjDYEPBD5jvq4kRUBBTEQ+ucLOwMBNoE7eW8Q6HZFEs1rtbCw2ukxD6aKuCdC9X + m5CQixSQeXXGhPY9UpnuMmQIHbCluxu1ZJ7K/nvUymAYhIVZQjUQHUWtqfRXR64n0OuesyiiSPlL + o7CVvxRet/WXIuWqvxSekiT56urXim3LSzxe8ZfGLI55OAR5LsHEeAF8Q175UbYApnYH35ubEGbT + L0L/u88flao4lbLDqjrjk6uLl08HyHbVPalAjaVdAeSH9XJ3SyHswuBA8GYVmLShcbWL/ikqelgX + DJ9bOKQo/GrzpWqes5GEi+DQLPCigFfKMJibZwhCwnRyW6qS4LlhJdvCrASPWLu87HeqzmhxLp9g + MOBuYGy5pyUZ0G1yTamvcf7qO8DB45G7tOOECjeQQ1gtngG6eVwgJM51veWk+PXQ1+EYoL0CjSd6 + eX05Aja7HE+L2Bo2wZw/UZoQh6DGWlM4MgeHq7huLLmuG7cIy6bXLbmuoFzhuviUuO751ZtqlIpQ + I0yuO/I92Bzx0PeYuJsF9gWGHGYjPHBDuhlFzZOxnhmxjwvgPmgvvl5jGjMqNAUTKyjh4t/w2TJp + dpLdZHgUEBk+XfEh/gkzgMcO/uWrypMnRUPtdENpvDrBV8I3nMA/FGzkNSyJGNbH0w/RgPDu71dM + rRDx2fPNTU2u9WMLsklBF7gWegUc1nVVdU7c0C2pztoXwd2Y+/G/nb/eEjq4ozWjDGNR4QanAk9l + 3ZTZ8C2NVRMl2sqanMbPmdvOyEptrG2ssgvTxEoP6QQKeIobYDmZjpd18ltOreFseot30WvPCBte + 36yobCX8jwCsLfT6PYCmPyRM/1iNfx8Qazd9/+hS6s1DQjhtoxrSsbkECFAh7rh6iFhFfrObLxvx + Bffc4n2Qb0Se9b2aQomNe9s+v/3n+MA8LyKEmqvfPnwaaU+o/h71HY2Qf011r/zY5+aps56Z2o/s + p+yAJZGeIHisIQz7QfUBHZ640MEZ/hHIOLGrElYC9J21qaygmtimq8gOjGwVekay5Hgy1kUWRNyB + I8MPzvAXjvi1yEmJY1fmpFDWVF0QRHNoR7sd3TEOoMnD7HJ5axQKabfAVG0uw/Mzgws63GaNoGXM + NZSlYph2m8vmTxn30CaMoD8om0DWIWkfIfXLocQSxXOYjvNuUdOCXreO867WtKCn0lpYk12BiJkV + TFU/iv3IHcJfUSD11tcanULbf3KdTlpsXp1evVO3sWmzUatJ/nucNtRoYFIzEQm7znRucgXh4tVO + lVF7lYpae/I0ULVOkf6mzCqyl40ivs2ItjQEppOqglocshnaHZmIYKXapgyjLkDcqoTqIXBVtkC3 + pBqV8PUshUWy+MGmZzkyQSSNjoIQ7r1KR2pKzSh6lljRyRXrwt2PUSbb6XYnV9TgzEYvsDWtejGq + 9QnvlxyzxviQdsw3u8Xt9GnJL26aBOo6cfJNqVBW1E6ErZKjuKdfUmOhn6qg101xRcR+wsY3y/VY + mBHJ13t9P/jwGcMLl7P7Qu1ZBDzL4Hf/P3tv2txGjqyNfua/4JcbY4dJdaFQq/1JltfTtltXcs9M + 34iJExRZknhMkTxcbGt+/c1EAiigFhK1yFb3nPO+05JLhQQKSyLXJydzwW5QUcsX2vDqvUD9XKWJ + bGSc7a29F+A0o1l0pW6gAZ7UPISegvN6uOYo6rl6nD/yzhSrq1qbG8MSAJTBtOoOOcDMOWPkKi9e + yLnQUVhKmPvS8rpcdd1LfcSxQimWTKOGWTRbG2QnNtkjvKiZpvKw93u31gcHLlUQcyc0Uz/wUhDW + HvPWOC6h+IT/58hqH0ZtPODHTHxln/P5WXDCkmZRkKqRq4VOd2KZ6NRTklQ2k5mUO9BSJY8mCmDZ + ejtfrOxc/pcXZ58VXo2ahwsgMJjud1huLuB+wpTupP3aZgjP9Dabflmv5kvH7HY8YYqONKPZJBz1 + oWNkXEZCZZzfsl8u20RsHzQc+pFXNVtNqcSVVOZwXc9rCLoX+nMwv9YZ+lhI7OBy/LHR6vWGHNKv + 6+0BVLGI6subqwayUUVstntpkVZB4j8U3VQxRZWWC/9qkpaLrzuqa4JySV3Dp8QEf395VlbXeOKX + 0nIRyTv2RwnIxUzinmiso7GugIAlEwj4VyAYyTQRxBXCTYCmaDNhBHO+gOPsxos56nCoUU2uZNFq + Oa8Yg7mY3IO6NVQ1D79mMJ+LzKy/jS2rXdZmd09eX5y+evqirFPqwwX7Cn0f2otBSt3vV9OyUmfE + gGgdgBSN13sEfpnYoRJe6NWqGl4SJGEZ3Cq3QVdMb2XMcpAEXk08RpKCKhkVk5zMQksWGnSS1kUh + VxO6oTJJznEjYV3cSDX5PI5iuapH6EJPVzu6VhBKRVC279VldCu6g7/8YRggq9D6YpgEAzkzJhes + mEgnEeOH+ChDwh06sJncxlpdpcyhYRpKndHIT6dJbvYlaUKFZ7YCb8c8ey7jYJFH41B7p5VFvHuo + UL1NGXSg5JCfVUbsd9wsP7v/OoBvHsnOV9sdpYwvVDZDZTxZo70TMr/Kk6AJt8SxH8grTk+afTM6 + CUUP4DXtQO7hAO30MezDW8lSuVW3d4idbN49vXxqz+HMSaDMAMEb5p14USMrgGzjagRQXVg2APnw + QCLky99fgeJ1PQG94t5KglT0UNsHvQ61/cD3Qwp8mV+Rycu4iEsTgyJ49g0tcHAu9jt1qifwH4w0 + dfKGNamw6GlKq8rgG0unUSuUV0+NkvDEixtWT5WNnKunqk7s6qnyKa2SUVfJBJMxzTMOr1i9UW1U + Mth0R0kkkLSqMXQxOzQieww43IaY7mF8YegloZ62Mvxyk4uDk+5NeceEj6AwuesTcN1LVv78tGA8 + jpykzw9jgRJ2h6VA2iBXO392yBLZ4WSLSL8P1qFiHBExjrPz/4p50zz3vJEb4zA6MRhH/pQYx/d7 + 0GQwWFV61k12cOhvFn0/5GkQEKt4kNo/YUpFw/SIHGRH59K/fkzlFV6NgbxZW6lVAbkHqureX7le + kiHDKJ/Po7FJ7nV2m9E9zFSkU68jld7KwSG0OynHVFWoiuJoOFlMV7ewBDeb1X4NE47YMoRU6taZ + 4hSU0/b6g8cb1Iyj153MnpJywexJTyU6wukrBLUu2D1jPIim3TN+Pk5Y4MWjxI88GUF3bgbgF5KZ + Pg2pXjhCNmNW8c1SxJCIZG+QlrfSAyPy1odPBAV0Iq2fKpXSSITNvk/J1Us+hxfDHAxetBkusq/Z + YjsywxJkstXwtWp7Qf6KN1SrxR8++fT6jf/0hSpgJFIA9neT5fDdhc9PxUDxt5fa4qSwHiYzn1dn + uFWOVlWH8aviXnBq6/AIYH8kCNNY7IrIkohtk/LqSqOmSYhLWjSrmkugVBiTIqjfdcAPacJh8xax + Eo5EWStubsN0BT4chVqgh8QLIq/Uj57tcWG2R6Z3T+67shEzZmFdh17KwiTy/zX4z9rcA8EGNFhD + HBFAVcxyROlm8+1mBuwM0+An6eEBNiXYf7rio046ORI21HMKpBbFGHniHfmF1cPRXRVwZpS6Qusb + yDAPMfkDyXRp4nOm7CQLehbwZOXOLV0cboQb2B5rIyU62i+1wPrQmGzH2jfFfx3IWw/fqrodnVag + EYEHN662yQU+ZLaU2YVnZ8znYbNkDt3GUbPVXZiKrXpIIuj2blOMRXpC9l/Y2+ixW5g8C/TZjxfi + 9jv7/XWhndUharp+GjnnHLpqTpyHZCTVrkUnD1gJ6LGLCtrIFCrYKTXJnfDORR7knkmptNdvF4z7 + 7sEd9LqTliMpF7Qceirrnp5fItxbobZXXCx1ED9/BjPE4nAUxkHCZQrreYaQwNlGACVJi5HabRYq + g1WlT+QVSoRjWaJ0vWVxSXVA52lJmA9B+K8JkkhjNGmV0Gb7StmuKqc1ygcJ25SqZtkSfBAfGe3g + 0g4ZVxNpShai6zvEa5KXjV2jU41hvFuNaQzGWNWM6zG/GK4PLJsIQ5Bx8bAJV0sZJq5fpNrX621o + gcwqP7EGthqIjaXLgUVh0ocdHcRuzSVwMu5g5tq4OPsq5yMWmMQct83hdKMM5D7HtzWJJlcb80Mv + VK31ym3vt8B9mpu2O1jGuZcqvP3CDnYVuZBCWEVhNFzt0Sq9vcW94D6vveS39pJq265yTt08+T7h + pCmI9vnsfjFfrrYg4y2GfJwXF28isvHQI/Q6afMjgs0x2NR9R7lnbz/4Xuh+39HrTvedpFy47+gp + 3Xfnv/2zFMwIwg23jXoplvlOYPOPGPMC5Qp+AzLG/XgyvUfeI8O2Toer7/OZAKw0E81E/g6+LmHm + YKBj8eJOCiu33yb3eQ6ZzsYB1gyvkWoGjBS/lK7I89X3igDD8tv2XZn4RXNO4XLEjxmfrfRXVAcN + 8rQc62dfjvXfagXfRbxkXxr8lFkd4D5QtxPINcKqE0XkRljM1/NZZ58NfKw4OsaAeyAZFkgW5qAZ + vYSFOo29w7iAGzLB5fNxQLt9TUWSeteRzELSq9XEdwpblFzhakPPMlUBuEMQD258i2rpmDSjB3cZ + 3cvyJfQSAhdrW8YN60QwNfErmvMuDp6IIGhrqI3Eb8DzKetwePZufPZOOnoE7u5ytWm6c2BLC/Hi + zemrlleKL2G0/agBDBe97gijLSiXYLTxqXQUvS2lM7M05kkRRHsc8yBO0lHMwyCR4Ifnqhja5Rhk + R7hd7xcwGiwPhtBOuUkOH94vTJebVBe22ddsSVxAQgbLqCRZde5qAwOdPlx55cbjrkbSjkO7Y6MY + iZ/EsGhRf1XqBtqaH0Thz6ouh7kSkvXWTVDDw9tbJbiUUk7eXrAkdT9S9LqblEaUi1KaeCpr5Vy8 + K0tpkZ8UpbRxEkcRppzECUP+bx2pm8X9FCsXFbEcv00WixHIAffD2wm8lgfK678OJ5vp7XyXobVK + ZXicbW6rceWoRW0GuZf6cT0EPez7xCsn1c+XU5BB8ABhIQoQuYseTV4P1m6SfFTVIfXC4NwqfcdY + pJExnZY5Qo14q2RAtcdFzqokthJM8AkbR08Rf26yLCA04CQKPLs1GqKEdEhYd0UMO4WtTlh2+ZCk + ERKTmYUnbzvAXaplyMBnDxb+E3tkZcgHczgev1diB+DXusqPA7mX6XW15a0iLGLvu3HjkJJqs+9m + LuQmu2k+RWHEEnuKGrZ3rZJ3WFj0SR42Yx4PjKj/inuc+VTAeLIU+fmzlnGNQUi42WUAbolbubj/ + Nwp+v42JGwhNEHjhHiMGfrxhpkfA8JjC9qo+PJel9Udfrdw/WN3VYZ4z/46fsLBpzjw1cs+Zl50U + cubpqfQ85bCk2oVkuIHWt5OlTcsPA5b4os7vz3cDNYokVIsQaWDRMGoaD583coYWVZ3Y2KLyKS3C + 59PPuW9VHQa91Y1nZkxrq0bWiBCPFCaE3IOcLgcF/bruMd2eh9ImbEZHWB2NCvUHWnfWGNDTOTqe + BcEhCM4WCUlHu6YLN7TDbo7iV7rnkzQ5cuKMBolgkO2wHGOPrifct0VY+A6Ik+pUUwjqpw+MJ+7G + anrdSQ2SlAtqED2VBbEv/l4qqxAwNPmYvtno+TMOWlDARjxKuCqI/WlMoXjwadKfP1mvs8lmW1Wn + qMBtYTMukdPCmxenMD5ZTHvztVzBQHAG2DobmSA12QHbPwinVZcmnbIUi32XLNTwIiLQUj1M3KdV + EZkJq6WbhCEiZpeLkCqsm4p8tUKVr5IVvYq0VpFgynI/9/wGV0CwJmURtdLc/ciyiJvlseI4CFhc + IF6PU0lBljqzzOrFY7VJ//ITBmen58MncoorotqemmGWtCb3C70kknW8GKpdB4efAj5Lr5KJajpf + zHcillOWLsUvuLrHuXsxPCsSOX11PqaNhgnZd9lmO8pp4HrZnJNend0vJ3fzKUWfCrn5DqUPNUED + PFzaPw1TMJATpa9/NzTQI7qWA73j4aAxo6I86222n4FWCTLUQiG1uzoIxVbDty8m24Pb05Ug9zyS + lWi6r4F74pjHyNxm9YqgS4Jj53QQysI4DGd1DBjO+LYCe3NZs4Bzyqq505m2/5PRBO/m6+M3I4/N + AbT0Une5XXvycXtUuewgt3U6A8jhxYTU3gcHyahLPdGiuvcmAvWjmaRObZwFddmFLafTQ7rgXyZR + EI8lxNj59eRu/PK/8ZG8svOW23U2xXjr4e/nb/DkFXKPh8zqELOPvVBoVC0h8ns5hinPrSh4hI6C + 1KlFSqlY+wfmBQ2KtYvX3Yq1E+VisXbxlBbm42UZohbOAy8VawdNJErDEQ9h3FLyOhW5lPeL8e4C + a5TeLzF9XNg3jYBbOAYkVX3cVsDB2pG5BRdNWhAYzNLtfhQlachKQpRK76QxFRUJGyCIFSWS2g5K + IDkgf9D3ltCCAuY7UB18tGZoUjuTVnQhemfzy99s82J4n022O5KN4HMzm+yIfp3czJf0L3gNbqFy + h8Lsu5uIsMYbYYkWYXC385vbXJ/INQjMSbm5ybaC809EoJoQ0KZYNh2vbhBBBrjFdOFz0GQGcpq0 + zlxXduFInoYDhToRARqLEyu+XiSV51OLE21FKrUcHgHW2Stb6KoRSRCxAonmXr91jnVQVTamDw7Y + PNC+YdM+uq8txB6HxeZGVFIDA//jK+AJTI62odoX1XyxMdEw39u1zPbHEK1d1H6KhHQsEtoR2Ibk + hMTztPH7LDjxgoa2b2rjbPqWXdiWb3oo62agnXqDJpVMwPsJ1FNlAT/4R5M+mlCDEOTSH2rDTjwm + UxFgx7k7/el1x1QEQbmUioBPVcL155LMFQiAUzsTYQy3VMS9UeCzKJSZCBdUIfYaROQvhhXwRcH6 + LI0NmI0uc5Z3ZeHLqTy9kfHLWRjFJftS+Lcx/9sw+75C2B/Cva4VucJa4knAYs7DgrjFQ7Qwze9w + hvMPVDp30YAV8VobE4MJ9XlcxDzE2awllkZ1BitQN0Ht1fU8YQrQggizgFTMkuxIH2ZGzYod5Il/ + VA7l7R3+bbrYCxazEVc5yGjbZWGEExDIUMuAn3cXqliwXvVdjn43wE2mrT6I0ITfxLiRLHslRkS/ + b+ErR+bNhb1b90/nkE4e5mE7esSNafAyjZ2N+deMXmf3ypEOKJl4U1jGB6JSK+7CXhYWsfbtqfZA + l8/gXkLyq7leMN0XNuD4+/fFBcA/Pjl9OqYSErPjw/4RgNH1l1LXjNd2Gav9SYwhqUZlTt6UDsXY + GuyvPSma0iM3jdPytKX1JwjGUAKOr0HrknfMO2FNcAXzRs6gdaoTG7ROPiWh5ezsbPhpMv51fLYw + k39MpLo1MAW6IlWUnT0cKsnGvT5Q6liYEFLvZHMzxzjeQ4Tqaj/2B/nmHERVM5THAeqGGGusPKkN + AdZqPtH3E4LGd6PpkpOceFzlsXMvaqhU6TaueeyqCyuPXT4kpWCb7aRZ9fL1Z6OW0ufT86fDJ+cf + 378aMh8FzyB+Oridb3cgxKMND2e6HFt9CdQGSBIT2ZM48lU5jiZlNA4ERHqxT5JYtkA3JQxhgm8t + 0fTXQK7ojP7CpeUdy+yg/wnI3K1m2aJbCU64wn2b7Ha+gJbNhKaHQGTBIJ3CF7fHPwZisZh/tZ1o + H5Up5dUxCBOIOF8+hJ7FqiOt00D3XpMx3BVUpEJwCBJGPkY8WWe/nP328fz08rIRMEtTEn8qQyOX + DOHiENSJ8wF0otaPSHYkb/DxJa8oUiDoBcbhHcu74NO4yWCrYql7IXwMR9sz+Y5LD0/e8fGvgfYP + P5WzeOSO1xDbjKfpiccaBqzKRs5+cNWJ7QiXT+l2XyP+W6blXSvE9NDfLPpkOw36EIb7FGQlbqbC + K3bTl481OsLMYxvNub0M/PNFaC/0WWgtZeuE2YYCc6vA0cQTMfl/vLtgXuQevkCvO5nSJeWCKZ2e + ktT8+eKiFDjKkgJ0aeA9f8b9MPK8EfcjkV2HJ9F292FOJ8zA6vtcJXVPdNGjz5tNOSC0QeiCmbWG + AU9+CbvH6H08m2/3i2u81TflRGfLnB6n9dlxZj8GtE8ui8oc9q+ZSjewrN9pXIy+KJEuxDBUT6Bp + 8BZ3MakRkxvQF7a70iCMgAcRePB2sWECf0foFxOZFie6IWaPFsTPm++IxyojF2SkZTYWGVV3IB9d + D5+cnf797OkQsyfQiEtj0d4pOA+3mOy3fSHDMD+dvjp/J0zgb05fDXCPKUs6xsIM5PwUhfvShDor + 8GnAZTGcu9VXmEosf7QndADcBZMZ2owaCspwPRgQQjRjtyAtr2DaiuFRpep3vQEd/CnDCgbybAn+ + 6XownUbVneqfF3WhMwRC4un0o8iLT7ygkSxHTVwlOdmBJcfRM7o7NOAQOidyyKEK/Hz3N41+RVxj + JHD2WcRJvpPIRJva2B5nHPxIhstWIigd9vPZloCHcZD0l4XzsOCijbH4Az+ht+RUY6BZ1RL0B9Of + BKRuatKw67f5JuTjvwhyv2IQlMn02wevSTwtve4W20GUi7Ed4qnMZHr/qYSlH4RYkbeAMslZlPIE + BFIWBkleermclWigQpl+0cnCdFvLxKX5sgxMjw+rkOdZFCZWsoyJ2chTHqhoDIOWUthnGSjeu3sz + JaYIal8HXsk8niQJK4WRVJGulnoDrw5q0qadpxJVmHEnO1WmCiYSJ94efsJrpd8mXYh/7GRqhExs + R8zJHRy+Q7ljUV3oSbPutXXeDmwJkmbUD4RH0Jk8B87y/r3CyNwUuisg3rx9P7K6jBlnYfqvwVmx + +KbYzeOL9YyvD2280ZEzolOmRRXRPAkLkZxAWN9sM3XTZVszCMdctC0oIyBq4KwuZyrD4MWwCNlm + OkEEYoc0UUuH743ITEUOoQNzeESlQxlFK9RkyFZMeTlqQs++q9ohtrm4wWrOBx4LZ2JwFwhis9X+ + SodADa822eSL8u18nU/QNSdLEqzgxs7glf9ZobuwUTRKkBwYtt70DQj2Epr0sKFEsRekWp1rUV2e + eSHlxxzaY+sVlbMf4f4ayyK9DhE3+irv2TsVmlZiffYbZu8F5C1pwaJd+wjClDLcaf5+0PkNmRS/ + xJYAXka1A9x1XLylKyf4UI78g6H9C3kEm1gCi1P/lEfIKmIDp6s8ErZ5DDnQDKpoykulFU0UX+om + /QdHuSupOfnv7ypkiHPQP5NmZS5lG9eAIdWFFS8kH5IMvb+aSzU7h24olCDVf8DfhL4MsovnjNb/ + wyvAPEQswPGMxwNs+gjSx+EIGoNDWxXPZ1lTSk5WhAdR4xGEh3EZeaXSvSbOJQ0SL5XggX4T5we9 + 7gge6Fc4P+gpnZPTV69LuiaLgrAE8ZwyD7S5EfwQqjaerHdmtd/fLt4oGM2bDdD/1rJEwXEUzUeA + zvf68uzi8/i9hnnQDgcBvDS5miOS3nC1mN8IAAaljahmyP3z6KzL3dr31yOsE+An8PNys/TXT0fD + b7eICiVA9nIVoaoEkaoPkRc9wjYSzlnN+gs4WYtMzJY80kAZ1UcSNuDtzWQ9ga03Jy1neb8VeBGD + j39/ybTvAjT6RKI/c3vXb24yMQggVOuGrQqy9hK6c8XcDN83K1N0HPi/BKLTw2XHPIX56bEmxxZf + d8X8RMplzE94KpHZz87LmJ9hEUYXjm2Uch6FowiES09ifhrB96hg3qNzYyOqM0k06VnutTyfrrsk + XJs18fyAxSwteS3XGUhE9Wjqic+LZpSRBXhrUtVH23bLihXMKzusgSvntrE7EaBg1iEJvYA5fURV + d0XIkoNAM159qlGKECRR0T9KcHGqolZmZ3YL8HZrbb9OYEBwG9rToXmEsEPY5gb7zVcyhYiwYIBZ + 3r8YXoFqvLzZKrT4DWjiV/BN47eL9VvyOEoxC6iJxIm8aopa6e0At69mKfB/lM5NkCsSZoXezlrl + muDMCqGmfl3c1TLYDSbDkBtG8Nfj2+yXQwFGg44+RkN8qaZxHCgkjANeaCq+ZJn92cNgegFk8al0 + YQWParZCTQjVbWqgIQRNCRkp/tR1YL0ljDDKiP31g+c3gMGm152uREm5cCXSU4lCcvq6dCX6iV9A + IeHPxxwehumIJwGPpNfkYyFrH12XsrqGBB6ZZJ2AR4wM2MjjSVwWaicCpscuxPBk9X2yWKFuj7ns + s0zgJH8X1qvlzdPKC5NFESt2bV6YVvf6AjOSaPJsUtsEH/pezWVVTXJ9v9l/NfGciwS99BjBQf2y + jES9zcW9wKuGayiPm7FmiUxncm6xApcclCFcT4ZfsnvFu4WtEsXs7f5GBALqoQvDPwb/TPcbNNrg + hZujt2CwTfZVFAnLp3I7wC2po35CJlDT8LsFKyjOT/MKqF4k64bKD+ycXhsS567YDS0G99jqpfxk + dJFe4EGAdVE8ltj8OxFu3y4dMog9uXNyVtcwDqkZiYcDX+u9sAuLDlCrKOzyW6mwywjD/zCyAqMA + MdEe7kO4qlcNzYiCmRsHvN3t0KjLIEpifWxBKFq1THsIsRQJNvnUNlKL+SoQI/YagGyI110DMZBy + ORADnpJI8frj+7AciOGVQTZAJfRZOmIpTJ4CqJOCJ4ITS6uSuu3hotxkGfx7sYcNtp2aZaSfvH1z + /nR8vd9KQzFhGZu1GXRpDlWZErakNlwSLBfWAlhm0y8vhmsgQLUvz2ZTP1mjxQrdqjsl2PyxWsD3 + lmveKBK2WJPaJclqjXUPUTznEZj9DqzpqLxIegoFpqqahhda0ZC4aJ8mwsSCJVbUX+gPMrYEIwoI + JlT4jcaY4KFdCdl33AWo0W0PLfbg08vTHMkj4OxnVPLR7ROK1VLf59hrSuXcrIIXYnr7bv4wOqXi + alQv6PzC82J3rkavu8E1EuUiXKN4KqGDXp8lJbhGH/1VNlzjOETjIRuFMeOxrJT9MVsBxe1YQ2xO + zYgb+As6n5WXHGFrUT4W+1ZiHqsY/G3+t6ts9w3ZYbH1djjDXKYb7Zt6f7A5stGNiNrYVo0FT/lu + vsiJATUZRYKva0/iRTaFkyMRj/D3EkNbodUdz+NSQvfkaaQjwZTFSGBuZDkVi6vEhXg5M90iYH6a + BCUOqrsRX7ysDpaL01o3ikU356dV8N0ohzmRyU2fcjotwybz62PPKqnUbxzbYBrVgYszuHo5izjo + jDSgv/oOHeAp1oiYPmOEyE1ahpHXvM1A1rhpETojZpvssXVT5mRhbAep69y60qUUUxDI4ZOqVyM/ + qU43iSfr1NQdS7frqJW/2qkKhNmdunRECusfrz4wHrpfOvS606UjKRcuHXoqL51X70vWOXQj2g6r + 6PnYZ0mUeCMQp/1EWucublfDt6BHzeYSaR/Xar68nV/NUaUSwpLWdnarb5PNbAhtmGbjs3lFNToZ + cm+xv8Q/kHQXRcBiilxUjm1cM7ZKn1bopXUQdnXdFLDnsxrKQRLb2XxmXLNJObf8WXj0to+kUBWh + KPqbIbipj9B4SZGt32Hxrbefz1Fd1ZGADmUegmMfMTiyJ4pRtVI4z31ydnAdyMuBDzwVNqniqb6f + BrLKgayVWz9RTkc+9ikkyH1SnOTKfmoANEhDMSRqu/oUStRH4fo7ivMDeXzwLdej5zaerkQPT7BH + 4Hly1V3iCY+BHxAyHcZ/ULGFLjpJqFCMWOLHJx5vBmOkGrniGOlOLCAj9ZRYPvqYx9C1iNrT9bvN + 1HMz642iH0XNaYmRa+fEGX36IU99ifYfeUlAR1s3dzBWuyMAtapp7p6X1UM9SQfG4Z5J17YiuUEg + sQighbzW8+s+rqY5dn0Z2TviNhtUEtql89kYk34XPdQ2Uyc/L8YXn6UnLGqIbSIbOWObqE5sbBP5 + VCIqVOBMDD6+uVTRu/VgFB+vt2xwh/9BaBOW9oXzR4ijGGiPjrGDsCbO5ez6BEyhBBwMgRNHWKgz + sGv3i72zQa8RiSOihCMQoXtJwUcRT+L5BF+7XQvk2XbIhO48qzuIizrhsbQ3sthvUB5GvO5obxSU + S/ZGfCrr9lyWYxVDgVZRKA+TJGGceiPYQRwLIR3xooyKeXqLeyVYZSLJ/I/NHaiAExQlSEcUQXiW + anC3X+zms80ei6KhnYOgB8kxst7AJ5SjmDv6M9pDpz9iv8hAG6J4HHXA4n/oIP4+vRl9BZkxT2Ke + vvn4qaWjVJbpenmevGyceaPaOGbe6C7MzBv1UIru2X6KDFK5oyuA70zpvOHr5hgwY4cHtOGigGbx + LK/kqVbFDmepBKd0484t40hIpiSTZMXwDnx4H+gNjxB9UO5b35PQX17SwMFPrztCfwnKJegvfCqR + Fk4rsl9EAIQN/TX2I1S5R1h6C9f/UPbL7Qbolx3qytCRP6tkrwmP/So2/Tj5PWO+P+gaXtXGHfwY + pEK1jZnGSuenfkMQ6LyRM1a66sTGSpdPaVuvdxslP32+0GmPMqDe1KuO/NnqD8HTfY/1oVRBe0IW + FBlSpZ6bamgetyL0W9IJfFmCcTZ3GJEzUBJQTWmq+iT70xE3/6JqXn/omSxk5Ces3uOPFJXT2LVR + zVnorYO47lj0Aizq+7lR+2V44vGGNm3Rxt2kTV0ULNriIbHkb1kmofkpf2N3u8lWS53MBWyLALAG + sz1+jQxewBmw/z78BxAaIDVhymY+V6j8Yr1kwvpCxYfZ0PzHvfVH0f2dSEhYS9PDhmgjVtJq4bOa + eWtATiJ/iv/LR9o3cx3sDxII2mwPYZzUl/QkYblCcziKnPegwCsYjBEr+apxFAUomJ60rK8FStx4 + d79ZCbjso59VX79BVHLTH7XFhGdET92sFoUt44QDEIQp4ZfWQMt0WNbOGCc/0JjRKzS/J0Ow4Rhj + 9un+rn04txdEFBbufGyPUbPgMYgn/pIzxQryTtuoFeUmA5cIMVrWVAepM9lQfaOZQbpcmjh+7p0d + qLribLM6SMOhpKm7sbt7gdTHgiGpmFnXJAolw3DtnmOveOOiraqRs3tOdWK75+RTJb3oVV3fTpaD + y+Vq8sFuLYz7XvzDirJCgzQlmC+8GPrxjPqB0uoDPzlhTXCCVRNXjV52YOnz9IymnMITjF05YGMs + w3yzgDHAdTvm4xyOFf9wwHaqOhOV0KTptKdEPRDJCCxcyhSL+VpUgpFF7nedgh46pSs8LgdpnKT1 + tP7UOfdJoELl+jdjNyZ9JGOQMUVOHaPhb+P+B96nuZwqZby8aJRiT687mcsl5YK5nJ6SEnv26rLo + yWVp6Nkp9jx4PvbTCDNH/DSOFdr5mQiqsyZcMAZRr/Hs8/k4h7GeyypScNBRW7HWBN4VhIgIysaS + veSYNWezbTnct/q42S5cG7AXswu6Id8UkW70ByKjrvq4mqDeyKvLuktCREAqht2agOB6sjUjLmZr + RFEYVo68kp5EoKlL6o/CpEhrcH78u5/UL+rTF3AUVHoxbJedlfmP/1wtv2abrYrkBSHy2TC/DwVO + y2yeP3g2VDsR5wanZjScDKdwZoUjZ7vL1ipo2Mrvx6Ddu8n/wHm/zybbnXXLbQd4MpRTxPMJ0KbD + fdg1jf3YDfR/t5kTKeBupIoX0vabX414hvO94MYDnESTXgj/qHJzUUxqURWpkX4qMqqUYWq/Hcua + PPhUpNk3xoSNySCp7SmdpkXdxnnk5JvwxIsbambUxlkxk13Yehk91JhuIBSjTnYP04cIAUMF5GYV + h6t9bXCb3ZFegMVCyMkn502/34V5qf0aSeYD3WV9KQcdaP8I5JFWGrAbn28QnN3DvdG4WEnsa2jX + ms3Zg2rQqZcfgCuiGEasGEbyhrETz2/GMVQjV5ahO7F4hnpKTOPf8+V0eA18NdtoUGQUlUCsuiOr + syEyKnvhq/UtL5Uc0r2h7Qf+nwzJogqdO8QpP4zh7qxOxbLcgPZkVI7XPPIUf6deR8RsUDBaear/ + E6oVNWEoP7byERwgsZvEpm3tx+jNMitiLv94/4FFDZRxet1JGZeUC8o4PSVl/O+f35Xx7jy/ELvG + QBnnjKUjP2JedDhybb4A6v8pkWsIgoJMSuUhgtAAS/y9RYa6BVt6OIGzTkhoq/KIWzahAuwHUoSb + bW0CJT/74PnR2fil8+ZWDZy2t6Ze2ODqOW3xN78X7E1YXIjHBagSHj4fxzzwwhEIOcmRPT5dQAfT + 8dX/xfW74B3td+SLXx8Cs5KXA6rZV7DlMqEjL+ewv7TMtO0B8kqvj0Anpzl+kbsxsylCJcE+h9sE + qwcN92uRuStcxjLHeI71LGfZmnDQB+9eftJGmzgMkv+czIV+RVvu5W7KdygIsoZuSmrk7qaUnRTc + lPSUjv+tefyVbFuEmFfo/Qi8z23SnEcsiKQeHJKzoAp6Pw/i7wi92TmgltLT0A4nRKompTz6CqDl + 3LfCpyqLAkjEnGaTiVW/kAl8/PvL4Xqyu/02cQdODkJO8QUCQlFXCjCGdOB7O1Us6E+sr+E5oW4E + Zypbfs0Wq7VrAO9Pwn47WrChR61Bsac8QJ954YmXNIvPpzbO4fmyCzs6nx4Sa3r98Rw0GYq6H1j/ + MNujg56FCQVReIysN29Xi5t5S1v28TjvY62DvPXkEDp89b5xbn5kGATTQTMxWa8nm8nO3ajm2Phw + DTzPs7fwXyP4XR0WXx+W9MxvdpXrNs6HRXZhHxZ6SBrAFIEsJQrUp9PhbYaRzWjUPv/4/tUwSSI/ + 9P2ng9PP58Y9Yr0poDCL7wuy4ozFGKiER4zbqF53SGSLgdRwW43EBST+ldWwrfq6kHQxC3qHalkc + Dq3hlD5oDqqBithRPI0otfLg9ze46xKClVtefDof/h62JxVEIXmmfg9++T0afkdisN/GRLn9rdxr + DC6P4pyQCmxoGYLreSpOsm6zm/K7Q6ysLF1W2bzJBjkSwJkXfHdt4XAiPAIGtCej45d0L4cxVI5j + nwCarAN7DcQMzCfp8cwQXjG3jd9lwGaX81bGWcXDuUp9AXHrxGsE6qLbuKa+qC6s1Bf5kBi3Clse + C0dABUBT1QsWbcx0Cf1UehVY7kNulYwBFASrF72JFA+MSqJXsKyDpQa17EEmN+GHYbpFRU/tOWgr + 6gd3K3ptxCVlhTk0//5esOgevFDDj3Wa9lP4ob/7KKbCfbhnWl5DCR1AveOsc902ASIhE0Qlr+jD + SdyOfqdr74dnQXSCG1N3R5Ary2/RFtbo9jBauSvMqpuCyiwfkx6wvdPpkwI+U4npCBpAZ0Jbk4X4 + 9xR+Suve66eDy7uhEgo3uTH7EmgOkLC4X6KeFAF3Nv6n0AwewNodUea6VACYM2//4RCn3AupUXmX + 1WoXh53PD6ewdObrP1lkpeD2tx+8OG1QUlW87lZSlSgXS6qKpxIL5uyPcklVjrd3oaQqPAuCcMQj + xG46Ugl5AfT/0pWQtUOde0EsoWB+Rk1eHllGXhY3N/KyuJGRF7ooG3lZLO1Wy7XyRM23O1j24Tsu + yrFOlrvB2etP5+PTAb5DV0+YqCR+T8mKGMJUQt4/COZfb4EyuDWtCMx8dne1aKrUwvAEh1ADwoII + C9gJuFYYiK/LGzgPjmO6iLgMip8KWxKmfqkHcNycwVlIhlkT2B/OZLZZ5QMG/e6u2fzxIPQs75gF + Jb5bYdJpJmT7qu+uT6INGSdDmNneXJjDdWO9WGY8NqxocDhhXEL45oUTjEoSB7/zGNm0jmyXOgxJ + VNjXDYclkXmo2q35eYhXUTUFnaWjCkvYzxDAyA1y6MMO+3lDL7QOWpZXW7FX43DO/oDsoxpwpJ0+ + 2k9Cew9AjqkvRVRjQx/8LGfhiDBcP34AKfYfcHG4ikeqgZOApKkXRCT1nO61d7+/LURkhSH3GEr0 + ZtRh+PwZC5M48kbwQ+TQmGCuxeIMH7MpW491KQQDPUT5+kWi1ybbggA1ExFBBj4NTJ6JeDOB+d3u + CuCwWOgVVmE/pTNotCZB7d3+prpCyKOqXGdgn9BXFip0hHZpqdfnI7vyUoqmz3qaxrzbUl8cNqdL + i7XNCou13c3v9otCcFyUxoFLD4NHuIEGeCJ0EFkQ+1KQ08UtypNbZm/f1xtU/jH8bbIDvpIbkn1y + vUlYp8m8YQFRMbVCgz2yHD+Kau2X4u4tTJnc4w5EevBx/uAQPMXZKYz8vy6Y57uHkdPrTlxdUi7w + dHoqw8jPL/1SkVM/jApx5P7zccRSL2Yj+BHFEgNVh3NouJ3VRgR8PVnL0NGnksNijF3YXRH2WRok + YfJQHLYGfMpmBXD+bxb76WprDRvVBJuLGRyM+TGGHhTzqmnSxnoW84A5O6na5wXCI7MmkpqTwZlZ + 6Q75oohQG7/XIWpG2XOThVbF4qmFBEpymNhGxuKqZRuIzaMtAEkk8p4xEFCcRJfJFGdEWEBXC9jK + IiMTBrxG0RQ1QmOy3TXeyLdBmqriEN2pdS0g0Vd0JaN6fO0iJwXS/ddsO59StaXV7F6vcVVEZa6p + yJBHwVxlyOOBmMfHFzTYJGDrIdLSG1m4KqevD/NYqkK0g3f8xAsbBWhTE9fwbNmBFZxNz6QrZ7OV + 4MSvjNCVQgiX+afR8Pevm1cYrS3jJJGCyDQMY+mzif2Q5BHYlzA9Yt5hHupEpgOaYFNStVyjs+Qm + Mc3WK1ANDfG0xTc9iBDImayIYg7uerX5UvBlHbfbBVFgF5Izx/n734/P+c9yZCVM2I+2aziQx4CT + +w4q62g0CTxPXJH1p64Xr3uXXg6P/weFrv2AkDHJoQNPOTA4e8O8E+Y1c7zrVq5OjLwby42hH9fn + iP/7evzxj0+vhoLfVb1gk8cwW451AgZkdBX89Qq0uzk02WbrnTMM2884402Lx3U+mo8r0TkQyRN/ + vL7wUs/dMUuvO2moknJBQ6WnJDB8vjj3S6WDxTYyHbPx82ecxyk6ZnkqcJwFduJydwuy2lzk/ii8 + sWGuKL2X6unnzdp/OANg9Siqwb68oK4EMU8S5odxn8Tfvh+9v9RF1GFeeQBv2FrqbnO/hnm4nSyH + tRhiwAbrKrNbo+5E1FCok4D7UZr+a3Ba9fEjCyIMMcBAXVLYXkIDrex8JLyDW1KV1PxCM/IhjgWO + P1n1K6f8ORwvUCzHfKwx13LUMb0uEshM6U+iLhlsPr4e4DbXEGJJ6kuJQQa7lkfcHoOnNdU6YbcB + weNR6UkU5vGFKl6+8zenwMrFvdMHKUqkmpBTeWqOVBZT6Y7y1soamZINtZoj1KrsdVWlAwlaf4TB + OA2tLa0jQmw7ovWqEovkfb+471SxlQxgq++rsaja2oqauoB9WSWL8QYmYnrdsUqWoFyqkoVP6QJ+ + ffZRYBHboVGpH5TKZPEoCT0+4qBxpiHdwJ9WyzHsfqxTbRQ9q6znaAAJCOFHVkYj8B6cQXm66Mp+ + Pb1jQenOVua9J9Djdj98s1/ezJ/a1wr3fxYUg3BufMP4Vat8PAIaAMcQ5SkLd2DsBXHNHZhyHoZJ + YKA0CFFvQTGKOF3icjG0Mmm9PTS3I1C+/3c/FzsTmPMSw2UWxrhVgMpA7Im8DFgcUKa8lyeArxb3 + jStViO9VtoCKmXpYYpXJ3jJ5HBb+ZoKFM+DWa1YpqVXareC/jEJ7S0vVll3KQpNym/RFNvG5AcnV + jVBsjK8Hen0oUr3lhPWmkXHCgf7g+bwBDrR43Q0HmigXcaDFU7oQPp59LGpkLA2CpIQDDXwhScIR + jFvgjeB98BH4B+j9IsSKBBLhm4c53WIQ4enF5d+Eg56E9l1m2ReJ83+c3vWhrCF/CJhXwu9xo2So + OPDpfhJHnYGA6ga03mRjPQtfc0nOphtGNXTxooD/X7zUXIxytvLolfCxVQ8pA+biF3vIwy7VRjfp + gaxQpzNaE6pvz2JtK7lD8FfLXQrHvjHd/fJbxRAjPyrBWVd9suHRrV6pPOwU7/q7CUqeS1FsutCd + vVlzJ69aw8oQmMLEvBhOi45gPDHjGBb4+4Q0WOvs4epsjdWawEkcricb3bzmswbIB7TKylhKsS+J + uDAv4R7FvdS1JJcfecqeZnGCZs4Un0pV1a1PfUB01ZXentqB8EGxb6u+1NjmTT861i6oLXqdZ/D+ + ainjxyUOz9F5rQ8rD3O3uHbnNxwhSLDY5ECAwAhHaPCpxhJgqiXAJnXXflpuVBgd2lmOEmcb6wFn + fsSq9h+MxdiCTUYS+CGtL/AJt4aPzEvGJVZF+SJzWghonlTN6Gozv2lOi7yt6FZdZGM6z9Dg4MfV + nd0+wp37wHB4XJ4Okfn6x6sPHk/c5Wp63UmulpQLcjU9Jbn6/OJjXPJ0iONgytXR8zEHXcmPRzwJ + vDg5nII2WwD9vzyoK/yfWsZQLiPzubvDil53XEZBubSM+FRmEn46LZnLELGkuIzP/ACFyBH8EDXQ + zRj5SgOZAsWcKVOOjhxc7TFYLo9MEmt/uZzUGchMBK6DprI6ZxRjYQTsjT3C7dDLFCKyqAQoEcCm + IARPFijIIsJGNhvgGivR1/cTJnPHyXpcZSxqjJf2Y8DaHnkhlr7SQwORHvrHhws/bWBFp9eduIKk + XOAK9FRyhddnccmPzblvV88KgufjmKVxykaxj1ndeX2PotqnpzL/4zbbSJ1B7u7XF4oXZNO4bDQ5 + UranUB6rVOBKGy7CKIh4yTNding1MamtWwbkXifamj1cXpjGi+nKwKoxC/ToyF+ZzoGnv2wwiFh0 + rPeB7cZQ2BLAYmBiI66l2yfin+uReOzLn9FaqP20BE9fkF0e/8DywOxfJxt//cvL+bl49cPtlq2l + O3oyxOz6ZbYQL2c7/GC0zdtTgK0wVHBszwS+BMelFCich0Rjw/mdiEc2ds1A7FbF4AI/EZHdjyQU + GqEKqLIWfLD9vZUh32o7FDfBUVWke+Cya3Ush+xm3xNjERvrF3vXOXFC8UFBIr3greT1MAorl6+A + NV//MYob61oovv+Gn3i8WS0U1cg1Ill3YsUkq6fEnTez21BWKnz1+vQV/O/d8Gr1vYg4yQK4jfwg + LkJOWubTC6Q1EBRFQaU4TVSYsti2sxUClEsdbni1ySZfVFgvhuvfru5Q9lntt3YUsqtxqnPgMTPs + UAf7/wmpZzEj3L+7bF4Ncn2kNTEg+K453iXirpgL42SDqT5mHHocWd4/ukDLY4TM/NMESv/1wpkT + yeLP/ytKwxOPNWLxupEji887MVm8fkp8nfMkjYD5ovslf08jF/x+/gb0N6aCTNQlx236mHYC2rws + bt7M0qpNFGl+/b1m/onXBKwmb+R+/clOCtcfPZXX33Ii/bNvP5/rVZ9QepiM6r6YLIdvT8+HF/Du + ABuIyw2T/oRsyIPEtpVa4DC7bNEMGgbuD4LZJ36ipxhW6oDYeCALJvYIidGAvWiDp/MgKDg+VePA + GdaZtNX1hI4KiogrI+bNAjQ5GPdSMWmd6q3/BKQ2lkZWMQQ3a4v4Si8VrNfe9ytXiVaP2oVMk1nw + CIZQHLp2Q5PcJtSJJaDGnbBGdQd1G9ekEtWFlVIiH2oY97G6mjRnqXhmUsMMkiSUGST/J0v9JFmq + NcKg2ohMiQQv2SnmBjWUCXQrV6Eg78aSCvRj2pA3C+DKdwrG1qgmb0JU171U6EdIB2ngDlTdAPS5 + O+w1yYb2p/SISt2G/P/BUjef6S6w1L0ylwdCgiZ0dtpHcJX1DwXdroP/PCzo0Nd13fjbuKHokDdy + ruumOrHrusmnxKxhvy+wei8It0UWfeBPFnXgKn7CZTEBFW8jE7WwRrCi01Nx8i4lwH+4HH28kdP3 + BoyMJoUl6ePwNqV8+JRIjIWOVOIg94pcE4RNywNHod0fL3zeINmWXncD+SPKRYg/8ZQMARfnl8x7 + WXJTJklUQviLuR/AKGLOWTF6oRSASqjtTwLv8qlA0wb1O3ejvRguQWdb3A/RAUcBLLvV8GK9Zd4p + uc5uJ9tCIssG8dw0IQ3pjqZr4e8UraurvG4FQA6NqDQWFQ3xev8Fpm5ix0OESVAbAh2GKcY0FFyg + xmaerpbb3Xy3l7Mie7adrDzmdY5Qq4MihFR9Ei3KjUWKg0ewTAPaaNrDCDMra8YTqAheydl3YeQR + x6aWdR7CPamWmY+DknZnvcQR9Bo3au77kR8bTPjAZj36NUqU7gvJfiA3Kb7usLePjk8xvkAyPuYH + TRgfvu7I+ATlEuPDpzL27teLEvw7j2O/xPZCFgRhOApZ7CfR0aCtHgofY+zyOtvM17fZ5n6Ub8rR + 8Go/G1H24H4Gh3P6RQX93W3gw8q4881zZFjKAl9lTDyqKC8NPB/EnLWyxnv9hBaFobKv+ckb/8QL + mhnYVCNXC5vuxDKxqacSff7bdUw70wIrN+uW6IAVcmuzJAnC1Hs6KFZ+OANSA6QnjHBhEnYtklJ2 + jv4HF0I5XlexuluHhg8aThdSON2nD34QufNret2JX0vKBX5NTzVuaVzCLQ28pBBOFz1/xuB6CdMR + eqoCGSz99/U2DteSW3ZL2nvglPH2GKEGPihH8/m/Bp9Oz5V3U1WlgGWDq2WF8a6UBQaXjvzbVtws + F7sd89L1SMZrkEdQtYZbfXe/qNJ7XmBs1hYD5raVhSe0fgQbEH5uVhhvu4I2sPk2GPCKz+vAZUXI + 2vJAGM1AbA51QYQs9chDSbrjkfAbEFiMCJwMXvmf1XzZKL+iUcmNyiCevmp2PJqQvdAjoyMs8bwC + FNbeUY4xOF6c5DUwhCe2H67dH6sfIPxoRHdlzWE54iSsTKviqdjIatKcEokU546ViSGN3AOh6XVX + EwNSLpsY4Clx7g9nL8uSdhoGRUl7nISpz4JREnlJKg0MlyAHL41YfHM6CfRpK0GfgKXDKxi+L2Cf + kH2sb2GWQJ9aYymdHPWJ3hblPvR+3FI/IlJXdzY+W50ig8S43CEff8l2K6I5AfaQncjr5MP0qlxL + QPujr5WOat8v9ZAkGLPmRXEpKfxuPt1UYWenfk0KcS0l+a1n4+pZLSebMwylqLttwjDyygrD4T6q + 883jsBYG3OxEX5XW+tYZRLjHgrqcbrgpkzDhUQFJe1u/50YqunEulFvMrqU9A5vAFwHcYnddzzfb + XYMdqVG6e9qaAzxyWl9KGUPu2R8ilphTEkirVqARpNhAHgehEJQOzY8xnMcUQFMdtd2YlmMEeCOi + KSU8ahbgJLtre/VPz+pRpFRIlhsHcto7PKG9Q5eBQGdr6YeM6Xg4cq4fS/yA0bMr6TqZNglIbUQ/ + b/cZ6MNpkpOK0jpSI/1UoB0sUdWAyUPJ/maz2q+bczpKWV7fb+az1feJifHYLigmUbWdkqSB5VO8 + 7lrXCSmXqzrBU5LHfn/zW1keC0NWsnymPjwfpYEfyFjRN2NMkQAOnK13eeH0kZkehTfY5Zc1G5/N + piEfF1o8uTx783T4mudFDZTHWh56Qy2liV5tKAFz+G4lmCpZoPAmRsyobzj/891W0VOqxNX9EHoS + iiOMjbyNu+EM+dfMRBb6/XpVlt2wZd34LLEoBdZcJ3wFoAD5qgJIR4zZakrNDRcGnXLSXhVkD5qO + GpLLq1VoA3chJMGS+ZKgDvKVeWnEo9jrs87Uw1KvW31N3aWSR2FjRCFjzT6hj04qvmTw1zn7A2SA + WjoOQ3JEwhwgJ29WbaWhbaafPmqtUP2QP4hZ1DbHqz7ovyXB2ozHBwq9qWgm+D++efDCcB458kJ7 + +eo4qPPstipDowSVVMGjsAYuWnrdFR6FlV209JQElU+/nZcEFZz1Eq5G4Mc8YiOM8wpkUucnYUk1 + rMmjuugHxcDkgTCcZYZibqGkGj4rUS4rG7PkUoQwvKgIibib3EE/88lyeD2/2swX+Bclf3xarcvy + BxmBi9cN7FGv7i5mKfeDkJctPeIDldOuPhbAspeEvA6mD02bXhVgodGPmHKnnvCLam1Xvhcl3EtL + XpZsd+tgSkpYoaIcVVAzse+Z77Mw9Hnh9uThJSzo/A63ao5LZq64dXHyAzgG5lxp+uitpI8o4xKw + kHntRm1vSN+7JEAx7Mxa2iD1nCY8l4fEeFczTJgrDxhGHDT7/DyiZYFuLX32cj/RAbhEz/PrEDl1 + d4NHfu4HyNM0jgyT5UMDKtCM4tLZL6+G2+UK553/bYzeqEMe8jrGj1tJOcfN7dbAoxXRvdzFR88Z + i/LorjbjCED0pHGoCCMDN7uBC7xrNpCXO+cqpZHq0NpjQWFViW19BW5pehFlGqfEFJoNhsGNWtqY + 540wAeHGpmkQh25cceiOuv3aJyJpWxajgoIHro+HJ1izxXsMJ448LbI1CCem151FtnI4MT2V9cJf + /5NXiGy8LLJxgWgXcO75/lFEO+aVg9seNfJ/h0C3s/l2fLNa3MwN7LK7FSz1LdCkLBbYDavvoha2 + RvOFa2YO2wIO2OJ6vxlOgU2BdvECWm4yXWgBsX7VzoIbajYnmjss4IJTv6npaPtiWCzBDY9nhFW6 + 3WF1Zq3BvRgapXRWX7PNYrIm59Xbi3/GA/hPlN9/UdIDzJCXRiErKpHbyWKnhlamVleW2vdBpxP+ + G9mfMSY4S1URBwe5bxCmGo+2VOqwNIXu4+xKuN6fwIOUMkhNgtXerMajDsIg1JUfh2JvIfhNttru + Js0u9J9UpSFv3c7LVz0SEv7eiiM/Wa8nm8nO3XAhs9CJX+zvMlefaUKZMFNgNtQYNsQ3rObpZPlo + 5hMsXugBp/JRgsUgt1lm49kcORfmJkKz/XTXvORQGHpiLpANHkaFrWqdegRdrA/+VBYsbOmkCj1u + mV7y78PTuXL5yIMguH7iWTWvMYRtNkewd1VkpsnkhSwkC5gvpg9Eg6F9kTQyHUVMRUgDYz7xkmYB + 0rKNa3y06sIKj5YPJdbJesoqoqMFzrgYPHxKqSJ5XvL6iaWqPh24trM13AsYxABHIkBUPJUz3guo + OoUvuNRZNwqtlzrpJ7PxSAQ0BQW6TmHzMba06Io7xSckpLvJDeqXwMgPMpGHhiJP6II/NFU95Fd2 + 6+bHlOPpMXAgTnNFXiT/dqeKqAUFjX3bOsW+L2zzSGZyn50xP0xPvKgBB9Zt3Dhw3oXBgfVD4rvG + dsRikYMCq6LMk89v3r9/pY++4pufJ9dRWEjuzrv0Q54ymQ70pyhQEXHigC7M+qfz6rRipFVr1W54 + XOJqlb+7sssOzE4dCsq2Pr0A6cndPEKvO5lHJOWCeYSeSkzof7yzPVo8Blk4YnbWIefPn7EUHocj + lkaiipuIhc7LJea25dX3e5TPVosioJLCgf52W/Yw/ZWKAahczG2j2cGaScsdKPRoOflyjx65DRzp + yW77opyRKVWz5Uz8Sx6nsVId/0d++QAXV1dH8hLWh2kDdi3VJxUhtu2pkGiTfRe4epW69qG86oQS + 9lDdbdM+8emki6WAz8DLrUMcBQtTQnShpW0HD8jxoJG4l3ubsEidyL5daSnpOEGC2OFJroeLAaFq + jbaPiZv+CRTSnELbQOGOHJ9bmHrZ8muGZRkd1e8o8MzWxQoVTV0uHUO66dgQfgHu2wbZls3CwTvZ + dB6iGgPhfqfmCTluy6jY1+rWzFP14yYJRPi6c6p+XJFAhE/lrXl6WS6kEGM2aCGBKPR97iej0Oc6 + DqSqfl6O3/nu48XIxN/ercppW1t1k0625YIKarfnKWnWfRWn9TEbMWdBnFaHdSqKYtuOFJiq2Ig3 + JS98nNhejrPqPvJb+x3/5V3gkNRph2oGXl3BSeaDDBMqZ3/ejxtlhhggTrOU11U+gjlrx2gEtWlF + ivrgXe1cPHl3+vmpkV1QDHc8vTRqQeAOGcN/A/HfcP1URRKoNEfYTNebLLNTbvOkT/q3VD5Q/jAF + YSHSyq99IZgClVUV9R7/uPxcHjvl/g7w+BjgCUEn9N7q7NXHr3mxKIwKX2zFtTQlFlsZmQfTWOti + G2AJIpNI9h0Lf9y44wgHYSBND/WT1uDSQEZi3uAHOZBJtgzxgIyvRKrHjN0HER4GxOX88sL2kQEU + kHfCmfe6TVQfhf36MdT1njAkkaE6TlG/9kOqL++QeISToDKOyLMunOwCOXNs/vHnmAepZt6vH7yY + uVtC6HUnmU5SLsh09FTKdJ9fRkWZzhf2WVOm48+fccxwS0ccQTLTw4EiXxZAvw8UpMcbHKJRkBh0 + MhBmhlDviDY6dUsgpd7SLjtVKAImQUD63Xyq6lTkVYriN+zEawh/qho5l2lQndhlGuRTCew0m0oE + mx2ipdzdr7ZzNJ/nv+MbwqWYBp4sOkSCFC7mzeSuQbaAl5KtCltiMYFKM8+BxmGh8UjY2MRls8iG + gi3mddGPEv65FQnEXV0avlvvCWHMCkvZF+ho11S8BJZHdYixb4xEuDoW1kL2dPJuUSPjPB1F44so + 1ePdB4/F7tcBve50HUjKheuAntJGPz3/WFLxYWx2qkfgPX8We37sj2KWxN7hy+B2AdQrLgOQk29h + McfTlUgt+wo7FcuE25ARvFbV/TNcDbg8g59thjKa9wQfINZFnKyaNTx8RORmjz1dlSB5HTaE78sb + OdckUJ3YJQnkU1ns00CjvllA75vVwnwGMuN2vlOWbvjAHFHS8ItWUfmlORlr0KK+AfcHj8aV0cD2 + 7+SE9DhFuFcFEtaE0x2nq3aaDoPi/rvkBA9lgzAo2cY1DEp1YYVByYe0y/7xSrq4dMmV0pPR8HZ/ + B2rKP15dJNp6ZBBHSEjfT7rUZWkBUo6h4oGp5TaEsFXL4Sulpwnywq/uyAu/ViIv/GogL3x8/6Z0 + y/lx5JeUHj8OUj8Zwd8iLIlhGrKtjCThrfo6n1zNF0Lc1XpQkvSiB0WpBweuBBlA2dlrkNfw6l2u + 7hdT9LMi/sgsm042V6vv94t6S3LEbexCI7+trse9ADepqGBhw1TFUQ1hECXCqISmPV1ly3/Dog5P + a/GjgOEU5ufSrBacgpRSTPNvRdVMuTfnoBKawAxuN2cWA+Etqm811ST1Oa60qUHGhAvVNHq+n/Jh + vWiR6mhzq3BFU81NNWpUuKKkuamndNThE2XYxi0y2O3tavpFMzCQXSV3rfjjJbQcYHOqXBGHsrpQ + GJs88Hq16Fh0JErJam+te11I/yGxjId5VH8pF6ENxcD3SAFba57X/nP7wXf/WfW8+qgMQ7Efp0ZR + uU4xoyHzSDvdL3FVstlx67NrhFasfc1RA0WUXnf1NUdlRZSeyiv6w7syOFLC0jIsfBokSTgK05il + 0td8YV7Nd/Pt3WQ3vVVQs+hwmlPsjEhypnrGo+Fi9W24yL5mi61IKl5td6pCsVGtklDfb+c3t0OU + drPSnf9xURHm5YQQZADKMAz08Uo1Lcy9ZyuzhfQ682aEPRImVaTq3cCwURuSM8OrrbIaUVzvUQ5j + uLWLienVVaFNmlhKui77nKWwKTD7vFJIc9sJwDyG31Ccg58I80dp5l9BS5vthfFJvvdCGNHgdS0G + i+S687sto6IcH7e3/noM/+Vr3dQewQsp5svAh6HofLuazoU2LcjdZqgRitODBR0wPnMtRjmFFmiS + ginYDPCw5J7lOCb7I5PmAprR4te7WxRjqgerCN1mqPLN9uKbGxgS9X3XuVC6T0E1R7+oHyq9Q+Y8 + UKX0akTPx1izs0OxvsrMdk5ZgB/3uw+Txfp20gzzJydDvnIkcwUXVnPkIC/wqPjbarU+nHJSNQM8 + ov4tmHRo0IaQWAHkXJ0I9eLV7iw5uVGozep3FbsqQSDShJs84tgkHs5PYRTWiRTmwC82FCcC9wr6 + JpomSiI5seuhRS7cdqCrRD9ySX+44GnqHmZIrzuJfpJyQfSjpyT6vXz1piz6BbyAixk8H6csDXk0 + At0/TKMK0Q9FNBmPMxJ1EQRatAVDowNiXgwn19cwGdscD1qAPi8xLYJku5ez65ayXS72xHEK01xy + W9ihQjKMyEy2sJGh/DKqkmFiSZioSlEXqrfJ7lawNcoYSjw5ZAmJvKSE+62nV4E/WNvlaUFuC+sQ + FNWkaLHNAjmwpma+nO/mMrF2B7Lf59OxTCCQSQUiUQeEMy1IbUmQwug82ICqjm1lIo2RjLD7thpe + IbXZCgPTt/inDd30M52PcDaGvu7mGBEoo7Fgx+RJD59P37AXIo16OUPeJMYBm8hfD3CLa4GNp5Si + 0F0uOk7gQOWMQlSesU0a8fs/QxAilrujaA083ZVYjMcrz0cBi2sG2bJOdGN6h3JFHkg6JYOQ0pWc + 91casbA4nK/zTWMnaCwR75dCIS+VMzk4WzVj43ACqa6ewc9gnPuFKHojbHxKyYEuJrl9jUwAzaQA + 6IzC6bbTFbVvrkLxIKBChTKsc6xOxhU0rN7SI8w5ksBZaOAdIapZ+Dc3LeKho0gfRAkpQ4UdP9Id + 7ZNh6JGwefll7gbO1auNkkdxTkjY8EU1iJ+UN98ZLCzgMiwbLqFppxLhj0KLSaQtHSgY11bHj2NR + TDvu9n62WS26EJLV2cuERhTJdDNEmQu31GSJL8E+Ba4C86kwovdbUxTLX2rKIEOKBDgqEh9lXUqj + oZp55xewBu7GbHrdSaORlAsaDT2VaGynpyWNJvSjQuJU8vwZ8i0YQxiHXiorSX4u5J7kxauKUGD2 + jMFV9fn8N380fHd5DswQLZIUAC1gG4cgg69mZM6UMUDSQySPCUi8sHbr+S7LvQaGC0LL1JXS9Ok0 + Y2vYHDs0acJiYLbO/yDTEzFHO0QNN+5t0q7eTSadtSvGQsysiUtVkNbZFFNMGue42zWiPbd+tYJU + q7qI7Xq+WljgAgVA2wOGc+pr0Hln/HGB/y3ujDWCQYFoJRI2j24Ss6vJbLKWhxkW+hvW9xMMgxoN + 8BQopSfymYBcZcwrOb1Fmwaay59B3+ihgwMQsXF5Aoq7rQmqRala7w8t3NeL8OFV7ImjABbHaAak + JbTkJW6zFlK2zXS1XsPSdMgC6iWZqK9El5iqH7668HzeABFVvO6GiEqUi4io4qlMdHl9WQax91Em + KyKiJilw2FGQeknqK9yczf1ivBMljqm0Gq64TEfOthXAHn2lulA1Ker6cAEXvy67lnuchUkxjMn4 + JJEMhblQZWdrFNTetYrs4IyCMYSjvGKaRhgmDFcGnA/dUWkqBYCqMQ7MuYVXnlxmm6cjxOyDybyn + ZwaLFA3oukDf2A2yPPgASvXNlrfoHN1iaziTd8pvprDHqUwXViaBY7vLRlrqlwZDLM+L2K7n2Xef + rQe4fTReasCpsG3AfM1m2tp8SNitWIfrvLpLpx6IDdevtxNfakGmrzSnrsp5rzp2kNCSF7by0cog + R4j6Ruk4R4pVU9SK0IPHPZEhst041P1B1dp++8B4g4Aket3p/pCUC/cHPZVeqcuzUqJkICyHpg4X + P38WIScfRTFjMmL45f0aGSAwnkvYucOz1Qxmx6xqIcTsTORv725BY8Lsme3t6hsGl4hYIxGXJNxR + SGAqCFwRVema2k6j0iV09tv5+yPpNW7X0X9E2o7yPcEsqyZ6LIZdI9H6Ea1grhll/4umRFCJcPmy + 77fzKyyKhUUPEblmtcGSsBLyFCcUfkNTpLhrJiaDF96kyQymebW/uTWuO/TH4PByXOcBbkpdbj1I + 4y75If+XqVQXBcDo4qk6T8d1J5+sj3o1mkMZKx5I2YHvPwCbd+eB9LoTD5SUCzyQnspCUK/LFSt9 + FhQ88+z5Mz9iAY9GfgTCtAy/lgEYQtJbwP4WXtRlhuOHddmgw530W3kOv4GeK+Lu5HaHKZK1mrKK + WpG98bqcJwETmc73d2O9cnj8DwROeiFPbBk898nD4nkpK8VNStOpyMSifhDz7mhHgcf8mo6YDwvC + St7/uUigVX4rS6oUHMKS+ZPEYt9WoW5JfXCumKAQhMzvGOrvQNSea3gG91T21DIUmQB2aH6iTK/J + xqgqU4D/U9BhWw3/p1gUcagBbk2dUcEZyedxaAgvXatt95B4l8pAfyyGu5kAN5dbdXyXzSjoU9Me + KQy71fD1RQNjkAtEYF3j2OMWGL91ZzlT6YqEoK6B0KNIyPJubUgHDp6gU9qkDS9HV2jAh4MVjAk6 + qSmO3rFWRzrtVhehB3kCN5X1Be0Fi8cjl7QXKXpTZntFWu+t/rtHGnaDu7GpSvsY/MEsjKj4RuFj + EKwDQ+tnIsjM0jDuQBq6k3GLQGg7ssrz4mV8lyFy2bxp3EKfXmQ6YQ29yLRp/o1/rv9kYaojk14j + uTlRQANnURCcgGTQJCWRmrgmJMoOrHREekYy8GwPYggIK0UcdqMtZvpHYSSR1LuClOeIcMQ4GMXY + C2kD05a713d4lAkGvSYRsigg590xh4+e1u4Q6QnTibRxEp14frM8WmrjnEYru7CzaOmhrNdyvzVk + fCHYKyuIwrvI/7AxISw0ccyhhZkc9IGVpVYy5WlYkuw6FgeHW57KP/dCLYiCWAxRAoE0GKl9dMOQ + Yruy76Yi54QB6dzU5eh1hmROfXLumkAfAj3hG9aCbc+IUqX4fBdg3/gKWcvEOCfVgpo9x0FEl5e9 + oXso7tKU8GH5KPJpf5bO5M8KIVM8y1c8KzhNTljULPdftnHlWaoLi2fJh2Sr2s2vOVeYbbn3zIyL + EA76wcG/DrP3b/h0IIjR3ezLKid9+P54gYKQNfUI8IZcLcdOkehHKbkagFvgwiDSmpiLbP8FFkrk + Kh6eVG5KHm7f2K0P18iTOChOZAXlyuNR5rsdiB0/a1RC5dMH7oXuWVr0upMtWFIu2ILpqUzQvzi/ + ROd1wSPmoV5kWoOj5+MwSdIEM/SVLbgOK265APrT/5gKsxoCBpRJQor76fU0yVer7bF/WkOLAptK + AhX8G3H3g0Kvuwb/IuVy8C88pYPy5uyPcvAv971i8O84iuPEi0dwH3O0UBw6KOsN0C8flGq5zA5B + Svif+KBEfhRLSMUeioM0InFMMG5ViPbPcoooKfjdhZcEDYBJxetuwKREuQhMKp4qnOrXrIxMmsRR + CZnUjwMWh4jZ5gfyvnlv+J7WtxlaShD0fTkbrrfZfra6vV/fTgQU+LfdLQjwN0uVJ4pIxjin68nu + 9huGoMmgv13GaoqQHIlWN7xpsP+CmJeqgjSKSLfLmuQpu34YJl4Fztryf/aEZEOBB1odvN5vi7F/ + XhzEdX5AL/aCICrGu8+XXydbtEPKiTyeFAwLZrOjPCk4gb8mrJhzjOAndXl/toWsGF4PAppeenuJ + Yu6ndZnJ5hLlg6jYNHaqs1+H7ZP4YRr6XiF4X62ycI6jT5Qi+UmsnAw/np4Pv8yXqJrR3kRD6XSy + nU5m2Ui/vJXx+6aj9Y4M5hhJaIz5l+JCqd2NWc6rdbbJ06Y/Z1O2rt6SwE5UhRTZsw6NvqYcBLOP + gTjA2kPL/Ggg95hQN45tzF9c0vdwNxFnsz9PZDPn+QU3i/10Bb8uQFHf1ShIf+psA9x/wt5QsU+d + vxRPhSDifOIO2KTtw+c6Bpb6FL5jrl7OvxtotV3rsRVb1+/FR53A0IbmYS9YB1eaki0oPe/tB583 + qAZKrzvJFpJyQbagpyRbfD79VJLQme/ZoZ08ff4M5OM4GEVYs1CCwepYQBERXSyRMsIzUSoIaoGS + YSiLlV+OD6giUqZLUqEp89OT4OmYepje7+YzjF7HclEUx46yDGzOKf6OY9kOr/Y7kXpX6m07ucvs + mktAhiWXw00OdfJ5suw9qaFDWl+NZmLmFttykV+r5ISIz58UYefE8llzYmdBFOQsA6tP0Rv85bbC + AI+FurBBXyWQkkAykdKEOV8siYwyEiTkCrhzyD8dqlnrnAWnDPpK/K/Oqfd9l5DqXvpJXRaxMuck + DfLI6HVXc05SziOjp9Lu+eojLyUChDwo2XOegY6UhN4o9qIwkdjvH3N0O7gMX823MBQ4nThXAjIS + 4wHQSqLhRGd3vBzY/+jKRtugfVbYIH5WHtVpq0lAuRYCNfViP4pqkDyXyCUXZrf4r3zysNP5EgTF + uQgYGYg1y21IiYiTx+6FeaV+8Ed5Gtmi+pCCEl3zyD9l/onHGhY9Uq2cqx7pbuyyR+oxbfb1diVD + AExZ9gmBCAkwvKeWxx/fCv+msWaKAQFIThRJgltz4Ip59XA4or1CJD3cxdRfME59aGufkYARla80 + NkkHRGpFNQgpU1Lvq7bu89BXJdi7kkoCT2jI4d/G/G+OBF2/t7eQvL4yuJNURyRFrxPgEM0ikqiN + c0SS7MKOSKKHxI5kRS7MykCGuhYIvvl1aDKdvP4Xvljg0RrsfzFhshZAOYRJjgZDmDhPyFHHAlkV + s2IccLyzu6tFl5ARpzj+fqkdNil5SiLE770G+hSWefC2dB4fSEokJutAoI6ExRKlBOt2JYuub7P1 + zt031LnufaeY+5ZRGB3r3QEJgtw6FDP1ZwnXD5lPHyM21W6+PjyLByv3ubPJVAYbn51FflMpTrdx + Y5N5Fwab1A8VcIUdaFwOPM6pgBKThpyLolKPyPeYMlL5mtkHz93tg+eV9sFzwz54eVlOewxLgS6g + 8TFQWuJwxLxEXA+4AqIt6iPwiy8zvQXyxQTBJSTy/xbunNV2N5YpX+PLT6cXr7dPX+BORJOM8LFs + dyBOEShxNt0QsrP0Rm4rMiLNqS+eZ0u5K5R7sNx8wJeDwC95KGmANVmQQX36oEVPa4860a04zLr8 + xJQ360Bl1lQ4ORHY+BixwXlxXPL7TU+bpK1XZwV7TPa7RahiNLcVv4/U1OLwZK0IA420ptTEZTZN + 1+QzRF61HX6V47pcTtE5XdxlL3RCO9yw90VgYthE/nqA21UryizklFBOjPRYEmlD7QuWEZs4rP4v + TnC8KRV2L8xmaVB4xLNv8C+cy/1ORUtO4D/3JBdJckFgMcA6epVoKa6Na1HrWeobH1ORH9pstvuB + nWWcuLomQgFqsBMakyRtmdBKdPtmKZXOwkplNfqffr/pSfUJAY+OrjNqLLDZQDY7R/QjEG6bg401 + pHFYdmxIrBe/4kFRzFeiGANN/YQ10Vh1G1dRTHVhiWLyIQkC2XcShp9cfEJtXi7004F6vt1f7Zfz + 3fBsuwgGU/wPCmQ8ZCoVjGxVx5wm7jqhK8WOQOptNDdmABnDwtRMXYePhx5s/Q7G/CC9JNLW5Ea5 + aRjCD/B6lWG02xonm9fuo9QpAVQ+hjnczK/6NLG5+cn6pXbENPnYTJy95QaloXZvvGbnjat9562c + 3Ru6G9u9oR6TYjf9diPdGzdwBS3vF/KH6ah8ImpBSe78dFD/4vuh+ebwDGgPsANyeDBKfYw82tRs + xMf4+hiD0SZLR3iS2lgtFlEoM0jFV4v59lYa54ZYu2SXLSdiA1+TKWS90hvXURpNeKAENXEdG7iL + 9nSUhb9CFuOPKlXthWkoZuTs9PSfYzXu+rVzTkfqpVquPqhRSCF2m2zZh6MdCEYWZEr9BzfEFZRY + BY6z2X70xEEnV506OVAVpRfsh36gdfuIihj26+NJI1n7iwVRk9pf+Lpj7S9BuVT7C59KU9v566BU + +0sIAoXaXwH34RiOAg73rqz9dbkW1ZiA0yMnNRB611nwgAi9qtet6rW6qirMb02wQwq98qgI2bVW + Vd3R9negfnlQG5rGWBhEaTEHQI+3jqYHXCk+MtTBZfGrR+XoMqsDNIypNmj3miy2K8uAVnxbf/+c + KpkMcGvomlmMi/hxHCru8fJHtblHxWwK9lA5941I/qxK7P1zF7F1rUku7/SHJ1hT3CON/3ur1fyY + pycsbKbmUxtnNV92Yav59JAY2LfdtS81fvgV50GIDcbvw3/srgUOyy/DwlNhUyo/5dg6b5G/5WNK + Ooc58MUTtBcQNBT97ofxYNAJcPlILmknxK/HaZXTXicZj/XyjHsvg4aOvLyR274yOjE2Vv7UQDHQ + n1O2sJlhCzXv/mM7ZdZ73+AB6ideGlECcpSGEqMwj4naUs2P9qpx7+59Q+/JXbzb/eYaxPb8axfz + 5RcgWZXOV62iaLI+QcDYDo9S6lX7gXOMksLmMnzE9Nj3EPlwwDLuBLbwGM4hXvJJkleCOrDxOyyD + H9D+mWyuVmjjoPu+rSlI8Y5U8Y4kiU+8pBHnoCaufEN2YHENenYMcEy3ReuE7/vypnhwBV0y2NTT + qGwsfM1OPL+ZQUg1co4oU53YIWXyaXWwxKvf37A40mFhUme0yWFMWByKmDDOQ4KbNTCWjjPRHMwb + g8cQu6j9jf0Yzq1aXora+K8PXhy7q5L0upMqKSkXVEl6SpLY+7NLXgKr5kkhasN/PvbTALbwCH6k + sYzaOAQGT0rl++mWP/7A/IfBwx/g1OrMoIjxxxUylHpc8Rb+LmkKnkdNXPmK7MDiKvRM8ZQpCxRn + xMxoSrckljI4/FeDvkCe4gR98VDSVGOgZDdZ5Dgnc6KThFQ+kwYHnzq7B1kMc5NXC0dwfcf7O/UC + tX2S1Dvxokbbh5q4bh/ZgbV96BltH3K8wZfBvWP8Pvy0X7Mw/oXFnkkGd0mI293rAaw8JUwx6tX0 + k1ZTLEvRTSk8cAp3qFujR3n5NVus1q46bRRws3V12ecGaRou5B5ZOiJsNQovNj5tCsLNbr7bS4De + Ft+jThzhy3y6ACbkHuNJr7vBmRHlIpyZeCoNzx8/lmI8A456oA1m9iwKOU+iURQGYSBhfS/3ayHE + wcLDNNg5fh9liNlQleK8+HQ62a6Fk+LF8NVceFb3G0ri1XYwX5mu7+7+BHnYIpN3VvMpldbwmIVe + XSc+FjhPo24Z2m70jLAXSz4DWd6i9vZ9Ti0M0zCK/zWoWbqREFqyDZWKl6oD/F4zPQjXMl3shcL5 + ar/FqrlizUf4L76m6qzwKzowZCo4iHCSCBZNme0pvpRgOmBaQAhDT6/JbjEJfIAbPMebS5OG2dzV + ReF+cjJ4YyoHXIM9gRKHISMpavV9PqM/YKBt2ez0MzIJH9md0qO3I0iZmvQVzXcH/wRyJ72djvI1 + J828I8mDO86LIkH7zemrVn7f1NMV0sMG8G70umtWfViGd6On6vr9tQIkkbFSikUURZhiEUVxoNDd + RFvKrMAYecznhnM+zkG0lLdfYmhZjkoZeSxyx1WSuoLhyitPTYjwbLbIzMD8sUa8wqYn+tL+UnFp + 92UaMMDAqotDxZ4tB+TFoeI0TJIkLDqay1E9Vl2J0lUb1VW5qqZPMywUVZ0YeRwZDg6MX+OEVt0M + Ph5YkKO74AlM5K9P7c0AryhWLeFXVnvUKY1PWEzus832xXCZ3UxklXSFgrbNF0S2lsFd+oCr2LC3 + 2ynmWsC+zUEJQnkjR3WhVsVFcbyi29M7khDazApx+P7mkfQ6mRBj5NW5nVSpaceSHYS2Z2wMlJX2 + CwGGN1/aKDuT3GC7ba6KQWcUrJxnVthbvYEM0pxWjVgV+IygDdQuLcxsXxNT8SnS5kN1RixkjcNu + ATwEvRXpjSgcqnDiW4el0VwqagSz9MvudpNBC7i/O5KPqeJ7FV93OuKNCPwZKiNFnDJiOn1Mf6BD + qRfrCBOe8hOvUWWDvJFzjInqxA4ykU9J5DEDp4oJHE/md+sFKmLZ7OnwyfnH969QB07S0PefDoov + q6V+v54zu3cRQRLEjzn7JPB98rhhZoDIsDCQhn62rvUDUFvCgBzk7YT+RJYQYJw1sLmJ1x1LCAjK + pRIC+FTiLv720S9hOgcsTUpGNx4ncRSPeJzCktMR+GyUGYXL6jchqNm2t9x9RKCGqzu/DNpsg0iR + vGfnoMpOVIy4bXQL/Jr04SRMU+bFpZKvxbTZrAbcOQmj0IV0FQgXfvtELI3qDnhCIY+ae0Ub3Mfz + kYEgncZxEKGh60wrLFKqhWUbPtnZ02/P21M9WdIFLkpdEyowFsBYqPFAS2vYIOPQYcvl9a3Igt+S + CqaDP0haz6b7zXalc5G3wlomc2W31uV0le2+ZdlSjx9f/Pz+oxpnth2IzagNZF4c9uJFeYjU6b4q + o4odYNKRiwKDXVXvJlf5Mwo9ryKCyhpvdZ63K+drLmEa9iqXpkdMZQEr0CjzDsfRtKF0bHD+UZJV + jO0XhzT7R+DlV7uXcZJ7LVKtF4QCzkhv6JwK3UuWCfD/ykNe8HEfX7IwoGN+Pj4fX8HcjCmbD9EO + xjBRX4EtHjmZbWvWpx7VrH/5ASbXXcig152EDEm5IGTQUxIyfv98jjvWEDJY4MfImW145+D5M9+P + I4+NfB56iYzfOF9t6fLaLlcVAL6jIQ5jhkVNa+Ak4IYD1neTjbewzplqp/ObzIWfwVdJUeX33dr3 + HtrxJxJ6C5RqvWh12S9iWqpQmLkHp6AOWgWoRdBd2RKp9ACYNt+7xCt+LFQEi3CQ1ua8+GhADdIK + qWV7B+LFWFngnlxe/v5UdQiaw2j47XY+vUWrr6lbyTQWpVNIUhohWewtJTMg8JUwYwSBBluT8yxc + G+gc/4rAkqhufb5kIiowE/HxoOJd/k4fKo5UeKLguFFO+WD9DQ7DFHFjxYETj3NAd/FZ4t1RTmOk + CVRknNf55byAWGHtR2AdBZgVMXiQDvabDHEQ4XWcJPtrehxU4h2bWRjE68+XVKHgR0zUn0qRPRIj + E+atG3oAj6EEtHQcPgA0H0fnt5pq+amSFzerF6jpRSTip8Su9Aq6fAz3PTJS2cwpZ0vHZZZ2NoBe + JBV5xzMRyf3Hxwvgf+53PL3udMdLyoU7np5KTO7fX5a8h1yUljHtCOHzZ5jInKajAPS6SNUiJHAs + YRaf3L0UXA3/cYrZaTfzBe7n5XwGCgzol09mmKWhrOj4OpnP8dYA4VNI1AvlAxFYYGt9p3/cXz2g + W7CviGHbUXC1n5WqK8SMRSW7Qe4ETEG6iqETHUBM3lS5bWRZode+uNlec+Dl/4bV3w5/v9r4a/Hw + YjKL6DdgfpZ7bn81h3/tlMMKX5mh6D/T471YLzFSZrpa7ibCHjD8+MenV8PZCoEQhk90wEzIfLzB + YDaevhjeCtPC9hZV0NvJ4nq8mF9n9Niw1sHrlVtCb5oB7kKdoAoSJiWoUhCkOmB3q+VKfsZ82cCP + h5NOqknJQ6bW6OiV1f6K6KeoTT958z0lu6dMl1jnAT9hTbJ0VBPnIHHqwA4SF8+IBYkJuYYvyLSN + ZKA3iVYVFvMb1NbhzBQBiiV9DP9lqe8MrH4gGKo1NPoBmjEPKrYwauxChsOtPL2fVuWZ1hNlURjF + 5vk6drYOXuVwaRzymmoH4P5uVes0P+Dd7YN8qzNdJXlwmYN9+fvH38Y71FDR5qqnT+22WpmoSiAg + GwpZn2r3b0OIuh8L2OGaIsB8CUrLIr9BWVnxuiMoraBcAqXFpzJi6u+XFaC0aVgqK+sHIGaGIz8I + PIWUUVtWdgH06+ovm+WAD1ZiThvaEB5BslNeYBZELVWJWagJVZWYm5p4/68ks5mdxah2+W8f4Nvc + 9QV63ensSMqFs0NP6eycXrwtB/sLTmOenRgtgl4cwdnx/dTzDp+d1QLof3v8wfqP6bSFAaOot9DL + o9RWCof3Yf33Pz7aOZCgkyIGbw2a4XzWpfqITzHvfRCKtTy96GVggnPO5kTqfjHugWZPkFs9FVXx + E+nfxOqsVPmjg4DSm0oTSPwuOPrunJVed8TvEpRL+F34lDjrxfs3pYgOHmD5Mxu/6xkDDuNF8Qh/ + Rgk7zFsXG+ihgrc+NuNJHzwxCILEDYuhazbH4Vs6zOv9IFBEsyRq2ca93g91Uaj3Ix7SzkDkQYmT + SEetWFrs6AtmP4TaEFDaepBYGkan8DaKTUgIjHM50ylYWK4BNph7+ZlGJI5shCStp/WnlSa1+V1i + RZukmn6qy7L2BYWbskgfLA9DLRsi4apGzkdLdWKfLflUIkuh70pHXRfgb01UKcf3rH7xrKWxiiNN + xWJ1hRx3zTo8vrC9xp33AAGt4s2E73eG3MwV9dS9kl77Pn4c4iAVYqrZay0PXqxgmZh/5p+wRgcv + b+QKzaQ7scCZ1FMbnkn9tNphAHaSxo+sHlPKdKXS8B3zGkbD541c+ZfuxOJf6ikJnZPZbSDLAi6m + q9vVYjjLBJu+ySjVi4LgQy8AfTh4Oqh+6xSoDJAUiQcE2M3SKBTiAaZyrdAgWqpxgBfO7nayrEK+ + qqukEvh+PVSUVnK2MB1f6wzZJdworUxIh7RJcjqZ3amqnu6kUEJPLbXrdnWXrWBY1Qp6PZ1+cqIf + POjTPWa/lyDSsEjjQKRtvVXB84XuWL2p2yYleXSTHSY6yhXWMVx32RoEL4o7dAyeCTw6Bse6wf03 + PkDffd1CKhI13yAiR1s7Qm/miD6z1nszIuiQzSb19uh115DNinp79JT4+bvXvxaNCCwNeFoK2IR7 + jQXpiEXMT+UNYMpeSqUTIQe2K/92efHpfPwrBSfIqI1M8HIM8MuVZowxwDi9/dUuWwDz28CUvfp0 + +qKMdg2drbPNsBgBcnr5jonqOC9KgYW2+0/Sz3Ikj+z6WjAyHIL64yJb3sDHkF3kXfalnM/S3ODM + kgiU4aDa4AyrPL2F5V9RlGQ+CzD6eSE13IuTWms0giTHAStZXmqiR1GWrvUjWQPO81+QlDn9o0L6 + gWUT8tMiHLuZ/FLThfx62MYGN9JrYxbbKNS5Dw72JadmULV3i5tmsr2/E8dremirbTJCLtjKQP/y + O4gso3YYnMJsg2HMV/fDP6Zf2Nr4Op0lLki8MJLdD25Y2qcvqk/dAA94HjbrJwM5S0J9qJrOr/OJ + MfnuFwwus5R7jY1Q2inHCQ7k9tZaybFz4SqWNAaI76xj4skS98RBEma/8mbwPa1AxR4o97yhAiUb + OStQqhNbgZJPidsjAlm2weNxn022Ox09M9ncTWbzxWKFJyGb7PJ4fWWPzU21w81qUegRVa8YQ4Ie + LxTP4fYtSuYEKjylXThs53xUnxBjX1+wuEE+Kr3uJHdIygW5g55K58XpqxJiLPNYQe6Inz8LQf6L + 41EIUgeG9+FODP+GDI7/TYRJ3WaYgI1gYBb/NgxM2ffpfEuKkAjOEpe8Dk8XnFZFA2NYI9rLVot7 + yf7ev7ffHVJWpfhVQoh+fvP+/TuLxqe889eq8wvq/A214cMnn16/4RgRmcfE3u7v4KL45/krvS9I + 9riYzMr4twc+8Fr1UZVGC9Nal0bLvJSFSeSXpBN7BszPrs7Uhfu8pgvMdOVJSTQxF7I6RZdHcdKM + JqVMLI4uqPyc6koyfshcetVSS028WaFHPJ/nwCtgLGu810B/H+noPFucib3axeJJ4MfFUjb5thgX + tsWIogr3Yrn2y28VgqAXs/r61ObeyKW02rNR8Y02thGs6MFPS6J/DWpO+l/uoA+QHWopLY1FLWhP + sMO6IE64VOCirg2+rM2hYdww916J6aTft/AVI3M6cfrEP+dUFagrXJ9ToOwxAraturTJmxLkYW5H + 1yvfmEZYXiaLojh6h4wqRzogn0kFEynvYX3W3HdE2/jjg/YWL/TrZkXpMCMcfl5u29mgy6OEH94F + xOrmS/nwqKDvBXQopoi8ZN9rThKoF1Ag7uXlB39cQQTzeuUMIDNoTJw7Er8FBtNm/O0zFfrz50VG + HWLFcFqT6pg9ATtMzAcdgdlhSpU4UUAD3zz9fG4c+2opp6G1mJPHoSudnqyzjwPGyks8Qqy357vj + HAnpD5u0lSRdtkpvcXIsSqikcZnQiGof3WDqvDhXkyW+BId1i7KUtjvtt2OZzYUv5y81NI5zRjgb + 9mKEfxsX5LhmE9XZ5i7pwIbleuePt/vF9X4znMIFh5dmO23a1wWXvXdYRKxZuWVq41xsWXZhl1qm + h6Qd/+NVwRAz+J0TdsD5GCZ0NZ1bEJ2/79ahRRlTm3iSyCCSPuSjHrK2BRCBWH3Mf9fyhE5+LxFz + dVM9alyzY4arY6ngx9qL8yTyoRUVdI+7J2s/TEF6veT9Zo93N7oJmA0xZTYSR/N5UZyDq9Qm3qAW + A73umtrEy7UY6Kms3HT5ezm1ifl+CQzaT2O4p0d+msBRJE7zvoKDLufXv48X8y9ZwYb1frsvZ2RX + uuNtV1pY65nCGyFM4pKxyo4TKDjm6v1cKULVRHUQclVus7AAumIVQkhj0N6LxhktbJmxHZZRJInT + kvvq8rL6my2yxXXQOLa2Ocs/lE7OsJphkoaI6KJs/WoCJBxL1YqNhutsg2i2IrV7Orm+Xi3EZOkA + 79l+IyQKNSYgVjFmIYyo1HUlL8LbaIdQpMQD4WMmJ8Q13AWT75hv/sf1LVs/fTGcw0bD//jD2WqP + aEJSjSS0mTmiNw1w0+dZaCFljycUB6c9V5WL5aqkiqmukzLqMYaPiKNtSB5K6G1FsKb68s/FiGsS + 3lM9il4ChH60VvUDoNEYeXXx/RXIGOLLmujCj1BuNygK1csXNOF6HfaiDgTKdZt6frOSZqqJq9tW + dmA5bekZXdC3Zo6P0gY+flbw8Qjiulv5gzv8j6hNGgWy7J2MgJ1PodH+ag9slDzx1fL/ISSChqTq + jH6MUeidWWzHpHkYEb+Oqs/IoGzGPyDWx0rEMOzmQFjcXM0CGNTO92RkXwaXx9Vivr29M6t3wWFq + RTYE9Tqkt2G216LYQc3sXt3XvSSnS1RYzpZO9mJh7kvlF/3vHsvPCR7ZjGqlhTMlTeZmcnc3GQta + h8TzQ+wKSIm5uZps4MRsBCiQeybQzwDJApmL4Ga2a+A2CFuIietXq5krakML1Qoakc3fXDwnnYwZ + we3ttlUJVKsHWCw/VHGUYXo2Pm0SSSkauMZSEvVyNKV4LqEifv0c2voU2uWCsBhPOWYMLtd0BD9C + jx9OybxaQA/T8eT/Et6bJHfGQeKY3Pnnr++lzgEVl3r7gcWRO1QKve50BiTlwgmgpxIe7ry4/+GS + 9SPbnsBT2P8x3GOw/2PuJUf2/80C6JehUv6SKcmcBSCD6QWN1YIGDUp70+uuCxqUS3vTUxmodf4h + PS2vaMpKK+ojGF088v2EcwXpa5jaLIRYgdM7fBJ5l0+V5RUNZBRZMRous8kGdM885X+3Gl6sF+lL + Aqsrw8W9hg9YLebDD5F4YTPZDT+kBmWNWi8jqoBWNTul4tA0vNLAFBbP6/0XmMaJjcYTJrX1CVIs + ZBkGJUDf2vKu2hhth2nz2rAqs4NStTHYl6IsVlYyNwXlWLDBo1uzgdiC+QFhVC4Axo7s0Qy6dmKy + Tg0PGPr9CrT93m+HIxIjZX/W458eau4DNw4NifHAdv+hZvqB3OJCFj5+MpzWugu9gzo+FXT57cJP + GqB/0OtuuEpEuYirJJ7KxJ3fT8v1XBKs7VbAVUpCDxjzCH7ECpPs8y0h2IuTCid3tRzvJjc3hrn3 + 20Rrp9lMpeqYxjENxbSBIX1bGzhDCSNYxJ9kExR5enFKR/wWON9+cY3A2WTa6Z4w3YtZrceKWX6q + vc9+fOIFzZzPoomz75k6sF3P4pnMCN4DP7ud3NwPz4bwxXdzROeXeLBUnXlw/BVtpzJ6RNtUyggs + DqF3cIZySqXpcnZLxh63Ad8O1EdxwyN5lKpGf/kLSi7lnipoxUJ3uZRedy1ohZTLBa3gqVQ0PpQx + GQMf94Zdz2ocMPglHcGt74VHFI3lAujXYTIeQWL8M6vKoRemColRbMUqJEZHzv1/AIymRs7Zf38n + oLAPIHi6HxV63Q0ojCgXgcLE0+IB8dMoKMKDjRlq4CPGgyA8Ag22AJp/bT38fEKV0nw+xhUXFuTN + fD3Zr7ES6fAOy7cK1Hp5WVEp7JlwIKDys7TTlylBcUsBeF8z7QinHHx4ATYSOgVkDq1K+BTZoZPl + JNusUHebb0dVNZDFW6vv9zCekc5CFQ9vs7tscH76e6SVplQEGf4ylOedw3kXd2koawHnod9wt7lH + 9j8uuBTu6+KhUew3TJrMGzkXD1Wd2MVD5VM6Sjf7iahbO8sQibII3nT4r1YfokQoZ8ilg8gjn6xq + 7pCX4YimdlSUeJiIL+y8H5wHL0lI9C9PbQ9wTm2I/xiQzJ4AKbgKSPO9Rljb+LpjQJqgXApIw6cS + L/jN55JeC/JJUMLaZlHiJfGI4ahjOm2nVIAelhFYOEanDZ+8yZ4OP9vRq+IyO73elfEcnLwghZgp + uEKTNEpKtr11NkW0tC7phx6PK9AM6vruL8qsmqx5SUhwoa+Zui4s8mkb8v1lEtb1NxDxivntafWI + deTU7nmhfoVNL0KBh2bCoW35E5O931K2nAVUIv5iLgG9Ab/tRJxBxTRqDAdRAeV6x9YDPA46VI35 + vL+o7IfPWovLgyyuay8JbL1G7ontWxSKSvvdlVoQppQMQUlvRxKDjzvLO1YdO9K6bkpamPLImutV + 7NM2WTKCEwpDblu26v6t3UL41EUaSMddI63vrbvW97ZS63srtT5hILl4F5T8djwOSn47nrDQD0Y8 + 4b4nI7vtMMgLM2lHFtja3AaHwrkbRF6D3Of7cck+cnEcEiCuN7pYRPMrrCLHw063D6IaD5umOLDr + nttJTtagpdvs1evTV+Or1XepMo6GIFrfbwUkEOhrS1GiG2FRhqKsmUlbTcYAl1Krch73B8fzVupL + 1f5k2/yjzBjtA+gnUBTa5bf1mNn5SLMpewJ15hTs9enCC9IGtmfxupvtmSgXbc/iqWStl7+Vbc88 + jku255hx4Boj+CEKfgrWiiak6Wp9P9zu18JmQ+rKNpuyFzIZS0zR+nYuVXpCU8qWm/n0lmRQEXNH + vlptK7mWLiYzi0JkSlwC5bXi29tVVRoOUcsKPDv1a9hr6gOrTMsAcz3Z79ADo2QkaXO3Vtm2vcfM + xmh5//b9qAwxx0GqK4K1fAVmiUXQZqvpFzwl0jqXfV8Jq0VRa0q94nVT7EfNC8ZQXAnmWwqigGXe + ZCCZ3Jd6l95yYSuE6wG4w3AhHJe7bC0Mi6LlXKCY3K6+bXXUNeoVVb5Ga/lljUfXTbQtoC4aSzLA + 3a89B1zcRiCDs1zUq3agHdYWUpLvji+JCy9locdJ6i4WdG82LA5MmcrIbKcrbJ/hZNy5R8EP5Dmi + C1OdMjcXW6RLNzUJMRCvO5duqggxEE+Jzb09/1jC6ApCjFYulW7ifhSNfJ/K7ki0uK/ZBjYyH8v0 + 8psFDF3UsAaFyi8/hWXCf6iSRIJdvV3flZGvlEnRDr6yISxRcium8hU7RA2gTrYMIla0YeSxVkHg + B0VeIjCrl1mlWBl5aVA5OKO1/vBCw5I8OjCK6ML0wNGu+TBVZr3jSrwY3sG5uspElEiehjecZRs0 + kaBKCyOZUC1fRJdSFQKyryhs4h4ySlDFA/lZwoxqLHczAQUUFmXtbANIJHydPJG44HAiqLZ5W0iO + iHCajm6wH0W2XrXtI3IlCYWsPN8qhNDWeBVRjheqRYfKiJiRmgTjj65rrdhpLCO2OGPuUiO97hix + JSiXIrbwqYzYunxVlhqTJC6y03GSpl7IRvBDpNsgO319kd/RdmL1u+2sLNE1qNBi8BtR4KU2QTpI + QIRnpcyBSr+dlXTs+bZ8ZplmDaKPyhH8aj6Z3i/o0MFd80W4eUblmLjq2X3y+uLpi+EK+C70q9D3 + 4bTtcbdlSxFvqZLBXl9QvryePOWCyshkrNQE/OcQVPg1cgH46xglY7Ipbhf3TJx6Eg+NktxnoASa + J4pCrQav3v6ai3AJp8KAERkU6KgBqVmuVMv44d0hTlsZa9uRZr3Jt5O4yYC1+oa4mYOQNSVIFg2y + iLxdLW7mLd3gj74MFYqxQf6Vk/V6gtuwKSzczw8W0KJ9D8WsigbvgBFU26yKeTTGhYrzMPXSfaie + Cu2oGr/pZrPar5vekomOoEiSoFklOt3GOX5CdmGHT9BDujFhjBLU6NP8bPV5eJtNvt4bPm59WrPN + 4Ogbw09AbYAkKZgi9AY9aK4MwW6FGXI+/ZIVOnVmaBy5iJJojxI5uK8DZRe2/ExwX0wq6um4ji8M + ParcJ0alD0QbbtlHyb6ELInm0RWkJtZZrTeBPx5uNBDGijSt2kHlac5aOLTgriMUO4N8K7NwbzEm + qeIxnCcnrBmLoSauHEZ2YDEYekZcRRevnC9v51dzdBiaAVhH/mz0gAzFYyLdlPMwrK83VRtdV1ti + invkFqhBlm6tvbYPV28a2QUciYDGMIQyo6BicfofS1nmNiWGD+3wwPvvrYyP503iqOh1x/h4XhFH + RU9V3uYlS1+W9E3PL3spQBoO41Hkp8GxtE1yTzwJKlMAX9SkAG5ZelqXA4hJfzDOctafTtSE1lcH + MjVpRI0zNflfOlPz4DKNbMu+BnrCBbLRFYEljQNveAksabNDPQmNgVLLxJgoiWMudtpwssGCORpe + UrgeQIm+WwHZl4vJ9Ms1vAq32d18cmCjvFyLM/kX/LLT9UCQOxUfSKdTq+B+EA2N8OwgYZTi6gk5 + RyBcwg2BgpZgPrX8+gAQz7G016v74RRnaLVxbeHAV/3YjFHAlRLrpw7pIajNOm/KXyL/Vnd/mIm5 + 3Mf/kfm3ARWweXUR+rG7c4xed7pfJeXC/UpPJdDLp3L+rSc+1wyvip4/Y0HKQFQZwU+4fpl9w1oM + C7czlt+6mi+EDENZN7MNdPptrbm9VaXMrm5RcPyXY+TkxtoCS7ry1yP8wUeCP8JvDO3I5StascLT + cza4eHmKajOxKT/l4Z8pHPUhiig4pk30CvbS1ZOjzlCeLROkwYnHm9l6qI2zrUd2Ydt66OEBrDoj + M2N9O1lapFDn4jztU+f6cTpRp/JdAdcp3/xdQyudbuOc9C27sLO+6SGtHOl1u9tNthJZMWpTfimn + NNGrv9S+e77+ktoqODwQ6d9xLNO/A/IaqoaYgLMil4Iun1gnqzjn+XTp5CAXillE9+H8Bn3oghm1 + KM78KLPMHwYbr+G56i26NIjI2FXYoK19+bEFPV46B0fJO+/dNl0dtZT28AHdY1YbVJ5uGwGrGKyM + 3r/wkwYhpvS6W/Q+US5G74unMsT09AMrRQswUU60CKQGUmcaJSP4GYoSIEK+lHnMSEbrAYvVdA+K + LuUsbym8/AQ04wUcrgxBvO+ktXMolDTYFXPMXc6+C+vnVnCtE1yGk+FXmHApp6pwRFHf7AQvXCNK + qERczD1+N6jJ26tsI/W/F0OZbi31fNA8d3cKGGSL2dcy4RojZfc3JlRHtlHRYh8nC1YR3VqMbSyk + 9/ml2CxpqklCuGn9tGgLmixAFBmLeC8smfZclVEfbu/vikZ6qyce1sXTiuSCICrlQPTV1fGPkuvU + oIeomJmoPyZNU66g7/MeQAi7nSxwL1S6M8yIkTCMDyZ26JnS9rPCRBmOKTvOo7a8oTUtRk5iacz2 + QOOYHRvo4D2GfcyRud7Ob27Hk+trTIK710fDnI4ntR+SbZ6+0GgDsj511eEuHyPLleR6ol4Mrzar + CQafXCEfwDBkmXkltEKs5D5fThd75CPiQ4DZwccMBNvSqSqhz2QhQ4qirV0lJ2FCwSmrietcjrBj + zHISkbcfWNnVCg+OiKhs60aOSeQs7YomRr4mVOrchbinaVbKe99lmfpzFT8O96wHmzi0tslBL+xh + MYeTK1act4O8tjFdv+KANeuhUn6XtZtcrgf3Hean4tx0/WxxT1Rs1YZ+84rv9kEOkwsl2d9YJ562 + 6eKgrBkqZZ6lL5l/wlgT1BKjlatCn3djqfT6MQmQAoYDbqob+DBljal6ZlMETR0uPV8Vc+/BVP8g + qq67JvHQFboeBgWlr1CNQOagXDDuNQmaxtcdg6YF5VLQND4lPei3i8/loGmRDF4Img6jNPXTURh7 + iSdzUH7bgKB1Oy8c08pKRvPlMsvhxkbS27aFDaJIEEszETAnW+E+FOkPm5u5UINNB+4LaToHQrci + YwMxIAp+xNt7DOe9uwNlCf2HY/Fv1al8BHoVSF2b/WIxX+6x4yfv3r17CuwThiE8J0L5+W2zO1pg + qyI8GzZp4NXIsEmcJnFSkuQ/jFeVE1upKKAxrTaLkIO44hVF+aqptH3hYamKVeWINUl7FioGXxxx + XRC8GvHgP2NnDfDwaR91RHWycHoEazk6qU68GhdTiC6l7zwYGH5YsG9H84GCzUFPkNJZbkXu8JEN + 0vePXE6BV17HbPk1W6zWzmiPpAEd2vHNhfZHIPMj18LXS6yuu2zZ0fVDaUzvL+CmdXd80+tON7Kk + XLiR6alKfv9QupF9ltqGyYA9f8bjIPT9EfxIQnkjm77rLaYKigmQmemL8v21XV58Oh/+7hdMdkl9 + llLiBWFSit8ygR0KECK87vKLgpSXSi1ScSXY3UhRfcEInfb0r6wcDIbgi1Yf5+9NeCrVz+B3/6Ud + 7wSfLb5/NKyatpH4oK24ceSbp5grfjderFbr4fu/48uwKzerF8PZCnYH7CSVGSQaTXWNx7OxhmI2 + J0rBMq/2S9Ezumc3CviS7EzbAe4GdUUg0NZAfrGWe49PVukAHCrwFPFU2JLuulQT9hKeCC5jDqwJ + /+0Iw0QRvXpzu7CNXsN8/rQYLNUxRm3BWxRPTRRWE29UZAVfd8Vq4lVFVvAp8dTzT2dlZ48IFio4 + ewIfdEo2gh9pqFJjTl89eQZC22TxdXKTYSjD7TeYHZGPTaz1fDkts9bmtaOg6yiqKLjbtHZUHR2U + T7/PK3BIYrch5ewelhl29RI4lR0VbsERp9y+Rcy01BSm2ysiFIrwrMlN8Q6JQfO0CL0+H5nuEGuM + ObFb2GGwC4GhzxfQTsAC74wYwFewna1rhCW8RuupG291FxKd2J5kWK6kGXU1x7vMZCNqF5pekpSH + ybGZHnyyl0x4GDRygbGeIqJH/lsxHENdwout+kAUgoMX82v0aSAK1/cdJtKuRLlEuHVWcIAxfggO + 9JTC6sTpNKKFKLgI796V8JRSRvF2N7/bL+Y0dEEU4R4lHsLXLO9xgPRyOC8vHMjlFc6Emn3xqqrI + fZ3GgqhD4q4wujd2b5k71mWfiH1xYFh6LzkPrSt0gxL04fRS7sf9Zj5D8dy6y7ppV61sjm0DZGLR + zOB9R22EvQFX9FMgOKWyvHU8t6H+1hNIWJBSRcgLOAvudzq97lYNkigXa0GKp3Snvz8/L97pDGSN + uFQJ0o9CUJRG8CMJ2JFKkBug/9dG4NdFKUCTj/NKeKGn3SRJyJpFq+o2zi4S2YXtIKGHtLjTL1fM + yCHMA8TOfvW1QP7kCmirmOunwycyuBnBv/KH5x/fvxomfhREfvh0gM2lhlV+u/gyDkK4XEJZtzni + dIm4BDkfinL+IYGSrp1EoUdpMPmmMsPEH5qvp2FkfmHFMndwL7UgXvt5SeSFNcT0VuoFBL9bP4e4 + dsgU5lnSoH4pve6KeZaU65fSUwk//+pd2d8UJCXMszGDxQsQfh5WUYawn85u9azQ5fxvBG2hqZhj + xB3MDEqoBigMpvCCjDsRTTZXq+/3AvQvw/rz2xMFVj+7rVbgWsCgydojw1mmnPn1IGieXwojs/n8 + tVG+xNYn4Gor5SueVnU9MoiAmAoy0L9hDVXBlAnFFY5xV8J9mOHsIlyUCFGyBHqcV/g9n9bJFJ2f + oi+hNGQgmC9Xi5GsZbndaWRFfCCxyITESArDALdCDl0WkPcjDeKCLb+MqiDUAvpUtHW9vt0sEIhN + aealI3Eoa49RcXDQad4pFHJXpF7Xtg8sqgc8CMUlIRegWjyXQI/WhnIdKcixVBMu/8h8JzTyqrRO + yOkPTM7zZSjPwWPqtAHa0jqsNLRyX/SrcvQSJMGigIJ8cNesaMN00FxSFkvH1e5WYP+svgtBRZF9 + gscwT1972mwt+4roCH0tRgfBiceaSdGiibMQTR3YMrR4ptKG7Nyucq6XpoEybhKFA7dy7r3G5Kh5 + 04VxggaSCb3uWhgnKEsm9FQCOrx8VVEYh3mlwjhJEHrpKAn9VHrdbgkxdLUXVxPQYQpd4WpWLoJz + 9tv5+/F0JSIJFByvDRJYbyK2ah0aNIugYQWc6T9h7cTz1XYrgro3MLtX+K5CixlV5NBmAoZihfdC + 6f2tjKTGs3w+XbP1AFc6r/kSxYMeUeYcQdyqbVV/NQQ4uu+rNvxRI1xPF1k/ADZIiFyKBsROV6K9 + 2eJCXQslTdxjFuh1V/8aUi771+Ap8c7fL1+X/Ws88Ir+tWecxTzgI84SDz3EyD1/32ZsLSKshpef + Ti9ei3R5hAHHJ0pNFyFXqEeIV7YIuu5jgj3+9Aj85vdroHMy/HybZ73OK4psv74Qb++hVynvbkWC + FUhv1xmm9gvUAJhr2P2UQ3GNYcliFbA9nc6cGHF68RFFrlwNwWbz5qQuPoL5SciDpITdChNwDtSm + sPvqypqBCGlzfETst6MibOpGDTLzwykAZ5R/MnyuXecs9Ur9mJ452cfgtS7EQius1qdicexgjAYL + 8aL1nhng7s39RVHUC+B+QmI8TBkMkcbaBA21PlgulSVF9czUk7WXroFe3BfAf79AsH1AGz5yGNhH + cH1L+AQhitQwmyYWlj6gNEKdwxFGb5IT1sw5Idu46lWqC0uxkg/pxprtQbDdbwfqp9kKVCnOfczQ + 0KpNpAYfgbbVNP1EtnEdvOrCGrx8KP0p95s9ll4sWCueLObrlQgAeFoFLOHcyhoFTkYUMlIrU8Jx + tbL5OqcYep6sdIApWX3Qo9AxtG3eL8Znq9NqaxptWDUn7W393fEq9MHndF91ws9gcOlFucAMM3A7 + 3+7I/9+O8I8phubuEOolsDss0hCJ+OJgNiSVUg1Pm1TNWWvvDiP1lgCgdt9W49yLjSCOzb1J2v4Z + xdxk7flm6YjmIUPn65iOPJ0mRvfTPhE+HqT7PwU+R85NCC6701eBghvkMvR1t2ImPxStXfcqgbBh + IjvuLSULUHrBhwsW+e6qOr3upKpLygVVnZ5KB+zlOR+XCpdyltrBsEHw/FmQwICDEfxIuXc4cGax + gR6+/WcEzgQs9AePJH9e7atE4iF7YdIEDxlfd8RDFpRLeMj4VO6ri/Ow5Nj3Y1ZCQw4RRYGNQixM + U0BrRCB9uRpqmfOSMFul63+dTPewHV6AhLuTZoWz2dRP1gaahtyWywUMsBzPJSkoEOM3++XN/Gkh + qaS+9u3jNZrrLRp6HsG54XfgXoIh3UwWZLhUX+8igT2mPU4hh2cXXhPMb3rdaY9LyoU9Tk9pj5+9 + OkMpuxBzmASFmMPw+ZixmMfxCAtjBiFt8rNyqco1BvyKS0ultoocoPHVfjZcZtMvEghmW4Axvd+t + 4GKmRFUigm9MN/v5Tsli+rAIMmjqmiKIsljd4WR4NYG7MtvgS7P59fVehCZjvPFtZqTSYjN4ci9E + z81chI1nQ+Yt74bXcK9hIMEWBpAtydT2+qM8dnAamVfONTM+93jVUUx2qsMSilMWMK+6/uBE6C3z + JZaDF7EQ5aQ0OIBhrdE1isIwLiU81OPriiihL7Bxd0XgK9h/Lh+QJ2Z/R04GS18acMz8OlJpkoLS + VjTjilj0bxg6v9rcTJbzf9OZxPWsr8xdC91UOVqNN3GH7uRKml7q1aJkNaEpQ1dg4v9nf0NfIvab + fl3uX6vvOKyDoK/puxn1prOVH9nCFLFmmyTbArdazLe3qrqZWOr1SioADufKT5pNjKBdty1ZI1JU + 4VXsS40d71R/+Ng2GvwH8NaBuHx08HaYUlpLTPFyR7fvLy4olHhqBLVuB9Gtr5RyaMQGtvtxbE8G + L/NoOTVEVqc7LjNJVxqppjG9r/RoHwGqJbGKmL6eQNyccHHh/sXW7uNhJGZdzem4diXIPY9m9wi/ + caMVUBJrXuTZZgEuREImLRKi/9kcpbNGRkiUJ6ytrfmAySqcJjtMCXS/TOpHuno4YxQnLsdfax6s + SnZ2bdvLAKocO/1mSaek5Lw9ZqapNDGDnCa+wk3Ec9shrj6vh4/lDEM/lHPTehhBmHsWauTrg1Mt + FbgoTzFKX4WNgyOpjTsKG3VRwGATD0mZW9+vjwCsqy9Gmrv7DXyy9oOIh8NzIDFAOiKCEoYqIdQp + UrUiaWeWHXWjHCwx04Xw4fuo84Xm5a6MxgXH0XsluHvHz+i7NlyYEKevqQ13l82rv7Uujr7LJaZp + BB6X/AoGPRbMTkRUfDw9/xUk0e0UY0JcttWPz8XtCFbfwY/YuKZeTAKV3I4VHKG9c8u3uHolY2kI + Ht+U5A++hLpHOuaEUmNZWn2YuowoFe7XD6BdulsT6XUna6KkXLAm0lO6gN6efywDPUVpoX4gfz4G + 9hiJVLiAp9IPo6Eb+FhuUaqGLCCSV0O//BTWTuZgCZYlDHVv13e95b2VOkQmWJv5FjEb0yOPGuTA + xQNeBCAXAR7LrNLOFHlpyVRYbK0/vNAwKjYcfJb5bxjtUf1Jo6GMYtsqnCdYiq28E5zXQyrTxtCk + SQAuGaSHP+Up0q9aczDA/aOhoSJZK8qjGPLifLleUWJOiEC+VxqG0Bwn8FAZcV2jTZreEv1lpcF5 + MK6b+kPk9B3tqT3QIOvWu5/LJSGjlUD36BRjkFCyvcBT1t68mpADOQnGHxuWgo9kptjLsyjyToRl + z1UZUk3cdCHdgaEKqWdl1ECjGCXCVS5WS2npe3INHw/Sx83TgVmw0nhDvvDW7BNLSzEvkXpRx3qX + SCEoULAHWSLnGjPDMVSxwDZUQN5/asBbvzaaOIiKi1/eOz1Eb3XtqB9L07For+M2mSbRXi0tPIoT + 6XJ3iRedeLxZgLJs42qXUV1Ydhn5kMTizXrrRyqJNfAuK2pXX/rRoP4vgoCIPfaS0J3zNABlacvH + ekPtbyKo5I1+VlVdZyb8WErtNmA2D1N/N6KUvncXzAvd4wTpdSftVFIuaKf0lI7hH+efeSmgiyVF + 9dR7/gwLBkTJCK9Q5h8OE1zveFiZJleBShkldUEajzcA6zV9isGQKkLaNPgixqaixxjkyO/DJ+f/ + fDqUmeT3ChuYIjYkFOIVTGmlFX6slE4Uxp+c72bvl9sn/On5U9Fee61NMe/1xZhSw2CHi9ysXNTF + pKyBWH2tXLIgHggvY25dxRN5B8d92lw4Iilbr7qjXHSs1UHRHnVLq/mPzc5qlND84OY4tDJFphXN + 8uiYe6kJTjAPPdM2tyKCzQVGxQHzsj38bXTCgmbOImrj7CySXdjOInpI3HCy3kqJZDa3PhBOH8K+ + 5XOm/m4bJwez+QTYBJllw7+Nwr/97W/jNRuto/Ft9n2SN89NpKfYJSHSMYyWiEP/6QDHQXAdqXA2 + IUqWuDJN+vaAHIwppeT7H1Kj2fPJKnw3uUEj1f6uPdaMlwSUuNVudZw+sDcrdl9YM1FkV7Zq7FCl + Rs3qWpVdqvSUDsfn8wsExc0mOlhqUH40Gn7+fAbCJOEw2rRRag9T5ohE88DFqY77q9xptZDYA+5z + qyhwcyG4Uy2MiJJVXl2EXgOMV3rdSQiVlAtCKD0ltvuhjPHqeyJtwIy3jp6PQSaEVt4IfyYopeBu + /DBfa6BMPPzm0SeB9MN6faCgrQmyjTd/nTzqRQl07tcHJBc7rwZMZ2ltWLLVQx6aSaxuIT5TsfkC + 4HwUBbWFZIFiGiX+vwYHJmpkIC1+vHniP3s6hr2kULYqHPYg8OYfrhDEn5yfPh0NF/fbVelvFAoJ + 19dUoHrBTliJFEj9ZvbCklxRbsZXZFSn1qAX2ddssbW7N8Qa7OT8dIAbSom1fspE+VScIkNwsaez + QT2jH48i1FFWfaT5Hn06VvBQ2aJu7Vl0ul260PshYEBRIksKelEDywG97lhSUFAulRTEpzJL5o+K + koIRT4sQr8+CIA4CbxQECY9SmSRzj3bqDapoU4WiBs+OVd5TM2LAisBnzwuKfxyU3L26ToIfpyBj + l4DVDlbeKhCvi6uvJY7BSfMNQVDTcNUNj/DRMjL+tYA2mzwt9BbW30ZJzJOwlMJSnqJsU8icVa9s + RVg3DOds9f++88dTY00MwEU11qrLLAA1tVhNY1Q7JTWFBMsjHg33V/P/3c8R5RQYizUwGx3XBtZ1 + 612im34tYx0UkHdLoRBFugNrG4/sslPlEoalffDCjEkTKQoi7AzO/9W9aH+b3WV56NdI4V+MQdDG + ZvDiu8naX//C178E61/C9fDs7PT081iJgXLpBnhSdcogit3y+5Dl1M/GLy4xSbgE4h7psKRHb1zd + WTewJt9PKQa4lo00MW89tO/vWNXBnisGOpN0CIuWrrkju7/5+FypugwxrKjaeJhR/4nkKlCSxFzN + cZO3t7b0EpmeeoRIog/dVCZOtZOgfPTGCAkKFrRlWWe8tar5QN93pStr681WlCqxkAdn49MmgqFo + 4CoaEvWycCieS6CAXy9snF2M90uSxC+VAOBpHPjhCH5EkYTafY9a5/x6TlehGbm9WV3PF6JsEmh6 + d3D2hlhSfodLsYNRSgfUagNDmY4n/xFIFX6ShNEjQ6qIZRLI2RnzE3aCoUHONkvdxs1kmXdhWCz1 + Q9qM33bXCoQCfsWh420wMH4f/gNfscj5IU8VbHDMqBZybS5AFzj8h0cwbA9X/Jj2FNPwgPEp8048 + vxk+oGzkDBCoOrERAuVTWb9otjmSXCTh8t6+/xSoikTFii9AY4CERBRdSA4f5EFiw731f/lIV9Jc + 56OA0IK2kkNJPHUidE06raP83a5MEdYD3AuxqiOhx57f1B/OnxdzknYLmUgOK1+fWNY5ubaNo4Yz + T1YaxmD6hc6/PeIz7CseMYhIriqcufZIeJanhg79L/mpryDvkNfTgupPyC/9P+S6A4J3rMO8fRad + eI3QX3Ub10Bv1YUV6S0f6rwhWZTcKJmgXLVYA3U2ucOirjpvUv3NJA/XkRf7EYVWprRHzURLgw4V + be3ihm2Z09knq+rBp6xFFa7EXxC9Try0yXbQbVzFX9WFJf7KhySmZNdsMp7Q1jgcMM2GTyaL9e0E + finUVky9NE1S71hawOs3YzYkEq+p10JzGosQrj3eIG73J2UMtCDd86bsmk7bLohYWkhy7nFs33TF + rf2/BISfk4Bw8FYL1K3GQ2AncbNbTbZxvdVUF9atJh8S61p9v8d6jgYehZJpTAxzt7fMHvGiSwNS + 9KOIdGVBYj5zLILtzk0615uIxGmm6IW2VBKfQJnUR3ZLxGxdrUGUW2WBGEp51ZpPstq1oSoyxpsV + GePuRcZ4ZZExroqMXf7+npeLjPnlImMMLSTJiHl+7B0Lql8A/TqQ04nhpDkId5o2jLavU5zsNG/b + WmoUoEkTFqelNO8+sE8jFsaDh7AlSDxVccyq8FQbBdpgZXpxPGrRWI9Y7kjsLi9yQ0WnfUD7X0gV + f5RK859DzZWkAj+hm2MuHDRTIwOmTcGXONJa8xvmNyv4ots4a82yC1trpofEtb8s1hLEl0yjy/Fi + /iXXjaseDn+FNgNsKKQIHjFpvY21fxkFh+0cL7ehcBliNBls15tNVqdAHDDehkqUl8bbEQVK4qxi + EUVR+3e1uWtOmErDS9csQr3B5d2CUuyxhD58ChMEGuQiG+MKgIyx+qqsXm2FpzbEj1h7WVogiKGu + q8U9IoP8u/G3dzY+U5KH2CaUwHRwnzyoJfuIv+sAflkSURbWZLebTDWi5HYNDAKvz3yuRbobbmQR + hLFxu1GB8SdhcdFaLll3uMmYMC+bfgQ2VICuwElxCxuLfpDaMeysjsYCqnWuFmuNIsvVauYKspjQ + eVLNm3YeRtpSYQAxNiJBUoG5NxpTKO0u+MbVlOrZtYLQZGHEvSLRw19ZMbshk2VO85M0+/fqmBza + s3FFTu+qi21Dbn1zMo4RbGCVaU78TyAIBlGaWMIz6IegLM/mBtOr/8BDElisfOq+f4qiUCMbj9HK + 1aued2O51fVj6U2/zYMyC2WZDBuO21t2r+hjT4JgQLaHbjhUw06uizo4SthxZHGWobmrpYww+xHG + 5q5F4X+cqbrX/JF2CXRavwooJRoXbJVHA7b0JCaydpSfeu7WK3rdsXaUoFyqHYVPJWLh729KmR2c + +6XKUeOYxSyIR/AjTY5WjgL6ZeuVHQRt5z7wpraqRxSTh5oy64PH/MRg80dwwtSZSHUKdJBEzVDU + dBvnBGjZhZ3/TA/pfOxu58xwpk4387Xh8xlUPRx+hjaD5e6aUZRXQnaCiIe5ZUY3aTazQENIKHao + kEVxhL76cZ7O2V6+6qOzY18TH+mAqFx8OlVqHzLb9+/xYIGolwmUpeVqOT5esoDJGhGozMLHLmAK + cG9e3QvqLgeMM5kJuhYwGCXsaJciGk6qKvfDSOpW2XR+rRyyTeakiZmPkdXa/hh0Nal/guyyX+xw + tkD4yg1F8NYk/0YqA9HAdhCEacAOTOeRc9IY4MI9YqmVYCQ4aEQaCUbLdI+ccqJ2RP3yKlhOn37x + VvSPjTmw9n55o/fZXeKT9fbf8+X0cC6G86y4k/wRkCKJLtEQv2oanqTbuN6nqgvrPpUPy8CkhUJX + prYnndWHNT3VG92yXPr0fcNp3lHbCwI/tOvCHCB7+BpyTA84onO1dr+3JHFsOGk9rR/rvTSa95BU + xyKJjFij5Y3Eb1iHbClyd8/ejc/eUT1ivLlmq+Vq0xA7OPFz5J/T5MRr4h7Tbdxxf6iLAuyPeEjH + 9O6eLGpwNJfjTUaZyso5dgSwruqoqh4R5yr0fcqz8YMK2EyKpxcpzRWFL0r5BSxiqaAiIO8W2VgC + uR8MmHFl5X0VMQkiqRFV4pgcZlKlL4aLITSw3gxUNodRun55kHjkJtSjFJwvn918mZr30SlVqkcA + px9twgoCXrsLCuenl5r3j6beSaP4hZ9SV8SdI/RWriThssA3ixsUjqfXHQt8C8qlAt/4VObtnp+V + YV1YGBcLfD8D7Tni0YiDmJXI0LXJcgLfv83GpHYaGBQGNgYZBE/X0zLay4H2lgEvSurKqYJGH6E8 + UxfGVl0omIUNyRGYBQxwrAgv5jf18XFJUFfa1O7AKCQ7XaAwPKkE+0q8sK5ocg09FYeC14qY4V/U + VJu5hXal4LSu6uuRPg7Gutj209htGctdSA+oEW9tE/Ybzne+nrndSsPxVS9CFLKjEzT4MNncZNud + xsyWuDCnap+f631+Rvv8lzNYeYoCeAIn8Zezp6Pht9v59BbxYSb1+86qbjtDMXeWG2TUUs+Xt/Mr + mMLNdgS/Txd7cRR0UqHYc/AnWYeGCtke2C8DZBUaV4axaCDnXsjq9Uv1i1Pd14YRVA5QNSHJbS5r + 3VI3/On5pxKb1+24O80a8hoSaCyOZE3QUSosCumz1DzrNagRSQ/BGsPtIySN+suiuLATwuruuPDV + 1t+fM5YD8/PwWb6HBeAo8Q7PSG9Cfe0X4H1rn/S6W9rpCPQUAlJLpH4ESioMlB0g4vEJ85uZ62Qb + VzuA6sKyA8iHJCHebXfS/fXxj8vPY4lq8O70M2j42WZ7IjDjT4ZA4A1cNVf7zc3TwS2wb4xVgi/d + 3S/MQOSPQG2AJAkU2JP5ppzijGerPUzMeIstQO/dZJMvCDM8mVd4NA6VVOUUOqWuj2Velhrvy/nW + rFLdyFtF2ltOd5PdrWZZtRJ8zPH1KFyBvUao1jiz8D4ozBvMGlr2WxhSgBg5q+w91tHYwYOQolin + 2VKgC20MeKfazXLIsxWQaNDIoXXQgJQEcUIU1ws1cyD+fSEeUxMvVFMg1pNBtfmCNNsYXpx6+tKY + bA7RaRV31HuwUsAZWarfBb+880+H9QyqW2IrjyhwL5+QltkzATHE+nH+3MqvfWWYIKm4jlQBnA2x + pMnCvh1i0NEGS67IDLCx+cemO4PCZY/ujA6mI3WzhzlMls9PvKAZUIBq5A6UJTspIGXRU7rT1edi + Tc+l0ABv7a82zfhOL1k9Y96/z31VQT01t56RukcUa3h4FTNoB9Clltz3ScvRZZyu5mZN1SMuvJ8S + aZmz21Ul8MZPxxIQPjPfWuGx3C+fxuUd4wbQrc5NXhPjTdK4IoZo4uwXow5st5h4RtLwze1O+sdu + s+8rpWETmKSu6xLzMAljEIPLr7zF9sX3kKhwYcehLKrZMW88iQjddTrZXK3Qji4qFrcjxsKYRJm7 + 1VLNOLqaLHLHg6/6jpr2SIIRo9Du3aafKM5zkkg3V+4vFqdl0gwI93H4rb3QZ6G1dVpjr3ohD8WI + tvubyea5CsMYbu/vOtFlIaMNZR6P8hIW6B+df99PUjncK1Qgd6BHWsFzR7to4LihIiovL7ykQdQ2 + ve7kuJGUC44beioxB16fYXqk5blhqThkZhWVAAFXgcmwUYD1lCTgqr4R5honamiG5Wi3nj5PV9nu + W5ZhiTkBxSqwJV9ghkteduUym7KksvA8XT6FcO+4Jtw7jfyAJX4JVz/7DvO13OJqlg+oWdQlTVIn + 2rl/57SAu2KViAH2UAvKz5MY3ih4F2CKYISEvplPoOVMSJKkxpnge3Dp8rRAUsEJzJcg9s5ByZ5m + BReI7Z0wPxnOG/fYvwbyIy3XARWmBxUO/gDqKa5gvDY9An+DvQli2s3fEDxkjVsDixmCbg/LoAYl + Q1txWyDNys9/oYogaqz8yd3dZDEH+f3T5ZuB2MzKt+D5STCQH4XHsurjneSf7ugrFLJhftHhGJPj + l0TocWYKwW0v5TYxLwezmoKY4p3W82wKI4b7RyTVwXes1reTm3tcuFrptQ7n2mdBYC4hbZWRCJRT + lOcOJQEeNlzk4ESnCQFaHmQ/xyTj/nIyO6Uu9QFRIaWlIst0WQsWMzrRNAtbmIUxTGoPcRSURPX6 + Aq449+uYXne6jiXlwnVMT/V1XIIAgvs2tG/j+PkYw1u8eARzkTB5G59LlPNhDj21AIUpR9sYDW8n + ol6ITjOYL7LZGH9oe0P2ouh2fv19Nb3f7pRFS3mWdYla4PZ8PcIfIf2I6EdCP5gnf+JfkbkDvdhb + i19F9RLjHsmwK+HCfAF60w7BQmD0Z7Opn6xzeSyXE3g5FgSjKUFfWdfjGXEviGurB3tRCFo9q5Aa + aBKs25IFdREgaYw8uiQg9JVqJm/FMgOpkxPSuvJD1kCNQJIc59n64pTZlYXMenHmzGlKGdxcV4v5 + VgM6FCK1aZGsk1YAn/KTZmMXtIdX+1kpYidmPms2enkrDmer6RekJiWafJva05x6dQE21UNV5KXk + U6BVV45K0Rp8gtsP6/nQKSmc2sw+tcMnTY4pHVHxMwnWT+WJl7LBdrjD+BSKWr7GnJvd2BJqBEDH + do5vYhzJVGTkmEdbDEWnZUwWi3uKU9mCco6fsgDecDfZfBE8YZtNMRQctFLkjVq4A5lsIHekupYN + ZHKHuI7uQp28z/VecBQmj7fr3PEhnybwAmzgwELc5jGlJJvjR8WVXGSSy/PdjrfF800yDfEAbSIC + ZiD2I+ylRe7henghW9Z8lOaY6RxkYiBeHpbTxvFk0Ig62KVGh+IIKho7RDCk3Da14YB387WjwJzy + sNR6mU2/ODWHS5r0CDFBgs3glfFvaHKzWX3b3R6XlXsKwAhqq6GPg1E4vppvG5ZEV8ImFd15e8H8 + BkG79LqTsCkpF4RNekrC5sfX5QK6LIxsvEmePn8Wc57yZBTzkOF0HMrYv9kA/W/dzTd/hmx9zkOy + MMhydksR0XAk/bRxym0PSmzn4yD3bOrZyHuNYoryRs2w9/wiZL186oBZf/CPVg8Chi/kXUqLN4db + ULjvqS5Rk/rRiZc0i9SSbVw9U6oLyzUlH9KUwubUxSDVZL1EmrMV+lr1DrpYX/ul9CxFnsKyPBmW + FZGfVGx7Om2dEmOPeV7bZBH9mdyxx5o1SVwiSOc7kMIVRXSqwbzSv46Wl3+YKvciCCb2hah60SkH + Xp0xn67bDx733W079LrbdUuUi9eteCpzZN6e+qXrNkB5175uxwHH4LQR/Ei4vG5PZ7eZkIQNNW8y + ntzcLPagiM0pYn+MstZ2NDwbA+OGk4rzoKYH+DioWKhlYTSrtLGLigsmlSeXkxsGCp+U3tVfJhQD + SNF2MPMCk+K3MUhCX+BfK6C4usP9vb1fELAWDEL+ETSMyRJBCUXBDzn405sJWw+/zifD3bcVBlLu + F9fClglsc6tSfW4mfmUhvuE33Kv1cNWpH8c1qnOchrEXBEWZQlCdqBmWEkZWlfUTegk/UOA39RMv + KQga1hyqiT0K8GHJIHFYl5iiPmjwH7Q/BniOtAgG/6NIRJLTzYkt8Qo8ltm3jPAY98SMYQ4m8J97 + ujlkVCKBL7VbOUdVNUcDyHdeQ4+Cz2WxrzwAAoRElCOrXAluH8/SlGp4bLPve1HcFjZyLYzcEZoD + eRqxoYmJnp/ig5PVSGo9NFXi1Janu3TQD45G3SNc+wiYu9pGrzv7CFhJbaOnUm379KmktmHt0aKP + 4BnDyIt0BHst8aSP4FScaDbiY3UgjWiqUR40os1BN4v7qRYCpG2RbEfaH2CZ8CezmS45KNhH3lcm + zjycc2Eg/KTYAzIbm1fk0UHAJ3AzA61r1KvsSZGj2qphiXmReQV0h3xcLsvposV6lrZCmgY1Cmmc + gj6qLMT53TE5NKHViZ2oONbYoRPQr1lSNEN/GuMqTJam7GwZi4O0zrBdTVBPt1jdbWUl+8D2GVTM + xOA/ZDMN8Pfc8OzxgZxzZBhVa3NUhdfWzoCMsRWhrDVL5OAhJlZH09q6qnv70q/ujR8/eos4qkIU + cDvlrgvfb+R76Br5rrZSswB3dfEFdPF98LwGChS97nbxEeXixSee0sX3j5dleyVcfBXO8SCJfQYX + Hx4HWcD5Npvshjcg9w5zebZo5pDXxj+u1uVroxqbyL48kjqWyWI/iMOw5FZWiS9VAWhoXQgb0jM5 + 3v3C2hNVkAiJH9r+3PP3RlAaSA1JSVeaYYrp7f1iPJMBF6sCl9VZk2K3Hb0MA2AXNUNIAy8MomLS + /SeXu6sQa3eMppF4baMZBLVgsnIBBi9hGxd9rwdW4clvl5+f2vegXJgX9tVX85noCVE31Zwgoyo3 + 5gDPir6zYj8ZyHmpuW5qumvkK3FJY68K50n82oSOmmGhZjjZ4sVyM28W1RyRU0qdu2z5NVus1s5V + mf7yqGmCJWATew87ZbYdTPV6FNc5Mht8vQ8m1mxaH7TnlhnkPzRRT0kRoa4cwM+CE+Y3qxtAbZyr + Bsgu7JoB9JAkitvbtQQhokpgeSGwQr0xSrVJPD8KIv/poFQ3rPD6O6RbaIN9ieyc1E/JLeInYlMj + Kmtddnqt5uDQ9nAYSYcCeA2q4PZcZU8TbltY+kj5okicFUKko93erISC8k+FjBKnZLT6Cobimvxe + H7sDRMlq2LxEkjReqjTH9y3W9DEgIxtuq5bQ9pg/RmA3q+VqvVp08mz9pQsduqMDPnRNRYdYc/d9 + 99cprqhu1EiC//lh6K6X0+uO4H+Ccgn8D5/Kyh/vL0uOzcCLgyL4Hwatcz8ZwQ8hur4Sb7/loD+t + RYImIpMKDfztfFvh/Osrhugw6rdJHGHJa2rUMryDk6BoWj0GQWvpl76N8Pf+7fsS9cG5PFbC2bTN + vmbAsbDoMZys8QbDcs/O3p0JhPDxNXSUbbBy1fx6O1K7H++C2/3dZDk8+/TyfITndL3akuvtKrPy + 9VCdvDi9/GV6+vHcGPt6srv9Nrkf4DrnyG1p2hZ69xCkyA9Oz5FY+zkLx79ORQXvNkz8cQG2p7HC + iYjjuGFckW7jihKhurBAIuRDJWJrJr2+nSwH7642L5W/Jg/Kyin5IU/SSICxcxSa8eM//3ZR3piS + kT46sIUfh5qgpBuWUjwPTNOZ7wadpoPQKPnp1QcWM/d7hF53ukck5cI9Qk/lPfLhc9m+6/FCPCre + I0HqewE6NqNAgop9On315NlTA6IKbbygDWDUN6ZDCSXu7W9vTz8/HckEqe383/Bp+XvElsQ/UWxB + VxLZ/b+AHC2eY/bRC+LEbxdLth6JGiZbwTe3GVblxE9WuxLNeDn1KxC9Zbdb6mpyB0LofPLChCeQ + kaOZQOtezncyVX6130xV3tPbxa5snRY2N9t47Nf677wgDv3SrVg1YTCr757WJDR7Qd3VmKQ+j0s3 + Y81U2Oiohbv8tXZkplEYp2nwr8F/wEIP8CCoi9bnXES44NzgSa7oaNcaebQ10TpADaBIpXjy6e1Y + OcOLRPDCL/kkiW2/X3auydFXJUcviWTAUG7e6L42LJViidw9yK2FQCfeqUOJfejykC2CnL0+68GF + lB40hxfay1de6pEhRb2EADeihHlLbc5jZI178/FTS60yTCmot4KZtdUwvaCOYpGtNyTcS91KTS2i + HeVeH+XTO79YIGU0hC9C3R9+nIsoxuk0W1Ohi2Zmu4QdWQXR1TvV17sOnXUV8tXJ9qJILPQbmIJ2 + FFjI9akaY6zlfjOcLvYCOrs1RWH45YLmaBgMO5FVIiqlTJ1/8MIGKVP0upOIKikXRFR6SiLqr58v + oqKIGvqeHYIQJM+fBWEKN9cIfkQxP5wytV4A/YqUKalM588qM5QSHltGBJXp9KhSpi5I2oEzAmd2 + tYGr/BZFg1kmkMW+34vyHE8u1xlbP0WUgN3837BSCMy4E1tFGLTFn/EXJTsZUM3wjhYIDSD7FypD + BGb8ejO5y7a38+udkZ+aS2owsN8m/2YSmGC3NYhrUBQTIn+ywXhkEBAxj0tIOmMt0w1+O/3/coz7 + NMaIMY6mQ9NO2hA8fCCFenGPZgtbIcxL+xCSNYUEZUsxixrAvwlaXgx0cpTJ6AQRlhthTGITd4RJ + 0UEBXxKfydKp365V6dRvMG4EuRiYv4n6qBwOnKjQHfgpOcaFwQHZjUxVJ3AItPzfZVVVtdwM/jKv + 9UqKDFvg/c7e/8ivMJb9aLsC1XwSdoUv8OquqXcLATTE/EqwjdWGWBpInNOKvFxX23zI/CTSu/to + njFlCJkDaVvZkhAArc3RNd8IIRpkquS5z0+Z18zTnTdyTJXMOzFTJfVTh1TJNxdvWdkYZxBGzzX3 + k24Zkk3y3QZqJn3Fhzh7BzPS1I6pW7lyo7wbiyHpx8STptNNQPN6dnYRjD+tDKwNIyey9EcVK3aG + 7c03kSDZPBkVoPR8YmMyWGms3BZXMFt3KoP4yenT4W6CAD63iES47OYe6wlO3i/TmMM3z8su71JN + OmwuthZ+oF3+5XCjh4Gw/08yHqMaim/Slv3tM3L2rkDmHosFTf63cfi3cfZ9pTNLe/I+wyGh0jeT + G0z/hZu4vVnAKeH0SJgXS/Ij2yVczFcgL91JkbwimUUOZuq4Ev3AwP+QSn39+M3gxuGFuztshHOQ + t2p4e4fTyus7lDfO/043Ugpeg8w5n+FEyRv7I4sGhk2OIN9UOkr+tjrLV2bQ8v8LZAd3ky2jK17l + 7MtCFmJlVypFsPW94kLt8K0i6+iWvpJKUeZfKxW7+V23gq0eaBNUkijbrK5EZO12Pd+0jYhraTw1 + 7gOXpkfulNArz6D6rBXsSZGaqzfJ+/dtwsSM3oojxkywiTgIzdhD7CXVS1+/wdstUG9m6sD3cz60 + WIkAbT3GtuXlJboVmSWWq8UYL3cRVZiNp0MXQ2yDuvOU9tR90D7JMXIieqDXR3zF47twKLfqw0UQ + hu6GTXrdybApKRcMm/SULpeL929KMVxcgMSahs3g+TPmhTzyoxH8DEJ0MRwybS420EPZtKmE4kK2 + U13q7Z8BCyoIgljYnmRKpxmZPNvsHZJCf7CqodVrHZGfvmUnXtwMe0g0cYYeog5s5CHxTJbCMHeR + MkIUo4YMQlgCHq4ZaZJok7OqJyHSwFbBWYTl5RvhWlEbZ1gr2YWNakUPpXy3wcjkbLxDTURWHzRN + Bcf+bvaCyFZRoErnsFw1bxd4H5CCI3oW/m6smESvYBiEBZXYsgeuzOSL+8W4qqMjtoBmBI6bOxHK + qix/NP9Cx/DGB4p87yRD9hvpnrA8XAIXxdrHbUWuxFe5jaWj0UeQeyvyDw6iTpH37cahWB/VIPn1 + A2sCaEKvO8keknJB9qCnJHu8u/xQivvz46Age/Dnz/wgCaNo5IdcIC6KuL8C5iK5GC+/ZUxF6JMo + 8m67KEfNaUhSS1xI69OusbBxHMSlvGt0AmEZz1KR+LQQJPfqdGRmI6d+CLy5rux8McXAypuObLev + WarDpJpjhvu/fDTrOMMs6Rre1enPGNhUCE8fWZjZQYoVV6tyqe/wstaIfNNbmOP1ar4s4Kd7cV35 + EuZFccrTYkkUhzwyOw88qgN6r54j23xcOy2xLagaaCtREAe8GPgoN0fdLLDCdrNnWQ108Gl+x9bj + TUZBg4UtIhzlyv1MYYr2EqBTuzSO7Qu8IVZTQvUW0Y7YUhYqzXSLa2CGGEltpKhP0DJPTeBkxWtx + +evjBJfPZj/fYZtRcYWoCECh2Dye1/UA+YCSp1moqrfEsqDqoW31i1txePIvup2EEhM9AKqNa4gN + yivdhEqXbMlKqPEHyr4E1hPX4QhQNZbmgw1Z7Es0s5oj6KY/dQKdFuzaWMfNUSznn5sBWPUJjy2N + 8KFFoEeVjQfSVKJLTIKocMKaqdOyjXORSdmFXWWSHkon9eZOugyM9GNZAOZugjxoKepgqfVlA42M + 8V3Yz2GDUWzjGVAaTCfX/oDzCPF1yEUtK3vr4m9kdQfCK2WOGOmSAA31wIhZ4PtyQKJhraXjYOGD + zgUfKEjSit3pWH8LE9nTorlIhmh/zWrrWdbBSvVUFYwzGFlxVLD211kl2krNaELGIsMZqrfUYzOE + Ga27YMPIUqmq9Rp95+31TTdyjyeGQKxZ15piYvrf2ncBlng7LtqBWmj5od1Kc7r7Q1qRP3hPpLLy + J+i57lo3ve5Y+VNQLlX+xKd0N5y9+7WodbM0RnQEu/DnszhIw5CN4E+MB+o20RKuvHlZqTSjvpVQ + 3s/rNJ7dfmHDUnuF+ox/becuMKDLGE89Hka9qNUfz0d20nck9D9bwzOgRxTLHFWiiMBf9wsRf4xq + Qi7cTmDXFKuLeTaMtV2tqmoUXbXjmk8dXNYJfbCuxpcba5rBVYFJ9aO8ZlT5YxHEqzg+2Drnsy3u + APMv0syb0y9MLZzCj9kUWxlbsNH2G+Bh0HBpQZxI1VMw0OpvdL0G/zRq3UOB6jigwh3UNpOALACb + bL2YT7Wr4QtNQE0GWx26QFcJ4XDrKgytvzRITI0G+rA6Yy9lnf5qiifzKITggxc0SN+n191CCIhy + MYRAPJW1S1+9K4UQ+GkSF0MIxiFn3BuFXOQ8ojjxRzaBC2G7n04RbR/zglSVeMoLwmxFUSFwByOc + YHw+VhHG8of/u59/nSxQEpThbNvx+HJ2ixnb8MOnH5x+BOvxWBhKp6v9eiHNpHk+LEJp6REA68O/ + qnXBP6rZF7lIKgpnmZ2ocqTYXVFyORRdpUpYvBbB+JOnBVSboK7ORJr6qeeVnAa1s5cPtTqT30tY + bcEMqy8taNiOUJ1Eq6XikT2R+QBs+aNQjvNot7A5VbqYQmkpW+cjL62dOBaHAU/+NXhv5DlqLpVD + uNbvw9qN9TSvitvj1hrgidKVLtJIGMTxA4ll1MxGw0vfgZxD2UYZnNZ+Z7h1082G4+OuwiblgcnT + 2UwyCTnX6XjCGnQwRvQAsN9PS843bAU9xJdWhUnMl8ts0x6HPqgIIj3IVF0+tyMaLajJJM4VYlud + q7j3hGLQiySEzB9bNLs+nDZVT6SPRMX20scBu3HfWBG9wif0BiLwIBAAYmV8CQHgd4MAMMj2iSxg + kBWcJugRsACEcl3YMXwVNQU7piauviDZgeUKomckYs/gIKz228pwStlWYBNHkQqnbFnOEr6aSu39 + 1wc4ne6qCL3upIpIygVVhJ7KUnsX50FJFeGJjSQW+M/HfsJjloz8JGSJjEINg5Nk+OXVhDKCSxEX + sjrdZh2UpP3Lf1ywyjoLGLxfZ6wMsOS1qhpnELudb3coGIFMtKsGYLejSGrhvpiXMgZqWG3xCeEa + nKDD2646lxZDl4zIHx55rKacRYO4bgarwEDRKdbj0wOqKMHn8Sipi3yyB5YTrJ/LaiNw4NX3YE5m + HvSkR7zJ7lazbFEq0cR5XSgS7IAgTMKiNTcD6fdqMd8SzvNkOfsFJGLTZ4vhEbrbyQYYC1rD9puC + PsT9sGTlNct8mDOmO7cnrGQ7ZlifstkMHS2JfL5aWHWQ7Y8IazFeG3dXTAQudFScLR3bFaYJ6A// + GnySx6aaPZhwqlW7YjTM4VzMFRwbG0fidshznm0HyM60Hhix2BU9vtJ83Bk5vgtsPScnn725nTd2 + g35ISqg8l27T1E8m/MNkpffZQf0UEohMr7XMK2f6IdwOwKGiwg6g6qTTFp4Rwe6wSRVbdPnGkPHE + l9ZijckvwywdqoYN5HWMb5YvbadJ9mTM/eW3DXPDhdVa5g+PxOAoFmCT98sViGxt6s3w0I/E7v20 + Pw0cRCkn2gMpfNjbqlYxqPSNgGRR3kidasn1k4PfizEh4IzcGaefzw2WI7AfxJG+zdCD5+xRUvoE + lVx9e8GCuEHpbvG6W+luolws3S2ekj7x6fRzuXR3mJRLd8dJBKrTCH6kvkzm+ixXdytXW4IXiq+V + T6YreeWfKuvwJ1mieW5V/LrKbuZLAfEiIq/ho27n5FMjreTTZNcaNv8sLxkahxq916Bja4IFWrV1 + 0oIwjvw4KcViiEzgTOLufhq7SuZhGpWkWQN42By6UTFOl7umbu8XY2Pq6mTcmJX6KvZjg/NPlpR2 + iHt+s1og8JpFHFbSGIoxArj55rM9yHm4zbScx2ME2BfDEJzM/SucLpSfkIk2kCso+Iz7BmhoEQyY + xPPqg1yfHtpA5ZiGiX/ixY0wRVQb1xxT1YWVYyofEkvbrJfS4MHSS2IxExUeTIlU98opNjj6xvAC + qA2QpMg3jdNAhgfHGnICzavbubClqctzdrgSUt2F5/kUEOKStFEr3YbMQFNA/Su/rxoANLpGEHJ0 + fOvrlWZxsYJbdP7vxt4iuGUjZtGCHjt+R800BdwPksKw68XWQ5WrGmd31Kehhp5fGNIPkGdb4Gkd + b3SYj4XEeKrPHVwzMNWLbDTEI4/HsD30id6jYWoFQLec4QCBI0xRsrZxvSezizCq2C3VRXqJVuEG + EbbidbcIW6JcjLAVTyWmRlWELU+9coQtSyI+iv00Sg/jaVwtgPpfGypYI2qA6BNLX0Qf2yGWSoTP + GykR+LqjEiEol5QIfErb4Y93L0tpzkyA/BeUiDTi3PNHaRRG4ZENcbMB+tOHK5X1mDYED6J04Ci6 + VvqlqMLNf10wzt05Ar3u5pciykW/lHhKW+Cf5+UKN36IiDG2X+pZBMzAi0ZRzAV8H26Bf8INLVCz + z2WULyJbg/L42ZBMaVf8c11VIabX6mkFSbhQaB4kkJ1ZaN5yHcSR7TqgfGc79NyHBUvTYnw7Irtl + dhBtXSEZFln7yEotl8QHakLHN/sJFXG1J9b40JFdnPu7Wor9bq5FOIwzxz+uQLERIpnxNxB2ZCcD + 3AJ6RycpxXTBcAWDq//C9jVeUsaM4OMtUu1Y8AT2LOXD/BPLxE0WX9FO6yxTRoyCsBDtR0+kw4ge + T8E4tFDi63r09sbpZs4LAsKOs6anTQf14ngfSm1OitwEDlxB1XBXXKGZ9kwJU79d+F6DhCl63Yl5 + S8oF5k1PiXm/ev2qxLyDOC7AlMQgzvk+HDqQ54LYl8zbtoi+en36avjkdLsev13sx6eLyRh+fzq+ + Wn0X3hRlJi1wHRNxyIBTRmB70KPuRQw14kKrXKpX2az1NaCtgakH1wDzipfARaU11y6d6df6/T0e + Bb5X9Nka3ydEOP2FdtYS4zVWOTXUwQ+d7BfiJOMft2jwo0qb2Kfo4dXLP0SliAnscKGH7UAd32+F + kxMuiYxOAN4Uu/sBbjBdNSKWZb/6gOziBQr29DqzpkRE0BA+8haTcZzwEQ5z2jJ+VyfO3FeiTY81 + QbujSuNRUhQaulByEkFxE5hboFgDt9n4Ak6p8Q5je1g4CC/xyM5kc4CO4+oOFyrvMJ9ydN5dNKpf + RK873WGScuEOo6cy6ff9WVkHTYKCAuI9f+YztKSPfMbSWEJInKHXWksTWNtXWxuYSt+dT2vSd0W9 + h8KVUxtfxkJRernkgqqwSB1KokFT4QH0Lbubcp6w3IKj4dVmPrspRHRxLyrBQNUTL+XoKpusfQ+L + GkGlEdcQHrzewrfvTBhskd2kVkgiOhXmTMwk4UHdYu2y4Rr+TFSUz8posd1fbXcbUQhNwsbDpn8B + V+B2BdRQXbmeK+ioKEInARalVhWXlJFyO8Btp5GdPKn0cPIEifiRHMy5mSbSsaiS0klACacYFBq7 + 0LsUzFSjATWjhGc0+wb/wpWRUgTM2wT+IyHSJU0KP8lndjHZ3GTa+XKoi9qU1Ic2ox9zHjYpBdOL + RR1ObCJhqzK1OqPCTMKfQBrZVtXyexhLd3fhoI/ADcHMKogYrO+okKjuOBHy/senC48l7nccve50 + x0nKhTuOntId9/H0slSjL+BBoUZf9PxZBFpIlI7gRxocqdG33AD9suG9bUzEo7e1hsBZ2+YBGIe8 + a1JZx0wtbM6oyQ4BBxcYXvODkr4Ogm77vrJmsAaSIL3uas1gZUmQnsps7c+vSykSQVwIaRLWjMBP + mTeKg0BUR8VTYtUPAU32rcEBMf91JuZ5IoREqVpoIDGZLb3LyvkTcO4yoLOZ3wGDng7fjot81ToG + SW1eQZKmoa8C6k3xEbXJSb5mNrkC2Olxctvbu9VKFKorwMfWWtSZB0ci4cWD//bzeb0ZJfVLluwC + vGgFzowsgjJdLf9nL8MrhIymM1Wv99six/Li0CsZ5s/fjyzbuZfEPoiog3zFzb2gyqRPgB9glr7o + E5aaJaJup/hAkfqL+KS0PWj0wmlA1dRzGuZ2kLXY1xNZoDMnOpvcrbFyuqLzAijfKwTS4cXtimqG + YpfrFTq8/w3b82az+gb0tnNMGKS5ovG8wDnbTTDY7h+vAg8D3LPJbjvA02KYZggfRhZUgSsQA56X + maFydlmUBpZcD3Q1Tg2+TrYIGSe/TES85/HUN4v9dAW/LubAvhpafWJGxv6qT2rGjVOfyyiQfGR6 + 8pqy4ygJyOZwhGc0QQ9NuBtNR2G1LbXaSF8JQVjkY27DSWUpFjp3MIj/qQPPKcXsJTGr2AGtc2Bb + Eewc/nwocNlPSBtC1meVn2gVa+Cr+mFnsOXZideo9Kdq4xrpp7qwIv3kQxnpN5lFEmjFzE4y8nee + nH98/2ooTD1pEjwdGH9S83AhiBRfFKRFyF/iUYkJT9oqZ6v91SIbo/UA2PXVJpt8USQR+EsCda1A + 84O9BuPG5O2mzK97KhOnZT8w2EbjaUGuPv2GfIz0bQdn6MeDenHmpzI5qIzJVWvI+dkFb7oyC3W6 + AxVYFqaNAsvgddfAMqRcDiyDp1J2//VzWAosE46iQmAZSJxhmIwYYz4W4DsSWham/0EarsfCsKOG + +wi0U61Q6ipO/Cw+YbxJcLlu44o1oLqwwAbkQ9pkUt4cR2OKXEChn40L0BxGwaKm75ujwPI8vkd4 + 1GFK5WYFlBE2RkIdo128yCO4FiVEd6dHrF3RMz/aDBoyqZbdpAkLNfJHl9GkXkjR5CJmKzPGsr3d + Y/2GHI4aN2ahwntpXJyHZAC3QJHUzVMHaJ19X+MfcFigBgLH7R8a6ZhPuUFly/b+6f4qTAp7pt5D + 1sGxj00fxY966OywDbsLcnRPiDqKkUaakZ4y/4QFzRgptXFmpLILm5HSQwngP9EA/pPF3Wq2X4DU + QlI49+Co8eTpwPjLGb5e+vOdKO0LDyh8Npag/UZJgDZ5OKAEUKQa9D+d7+/GEut3Zth0fnEE8Oaw + x8Shmmxhhwmwc7QCNRtQyHxCF9iuYR8tmmZY/wzI+YRCM9WA1+iBvVrNHIM62lV5D6iSmbB9YXJp + 0Sh21BwQhl5qrPth1KnKcTch8HDOL3XiY1l8lceNiq/i647FVwXlUvFVfEqn/O/vX/kV1Ve9qFR9 + NYlZlEajJPZjX6bvvTd0evS/76zwLNRA4Q/79W7yRaw3XeLZbEzQeTl69DYv2goj+7Ye/H/z5XR8 + DUSy3AwABJSkrUT4EWwhuLrxnM37Gsrg8vM516VVeSSlu4gYjl2Co+GO+bEKZ49xZP3UPu6rZLGf + KC04bQDyRa+7asFpGeSLnio/73nx0LC0CPIFWvA4iHnkjYIkUtG4Zt40brq8LrUvD8HHybptJr3p + L2EJY2lYwuqV/d8vit1XJ7379Yq21YEdZbSiGBI8ddSBfGBF04ZeLSyVIj34WDdbIynH/lsC3k5X + dowpYu58hZ+1ie9il4HgOBXpqjA+mRW+faG5C+I+iziiyWJxL2T/5QyvblmtbiL8j7BabD3A/ZBr + 9wmhJIVensC6UlE1DkfeqeFhxSqlcBOzVlAD/aynHP1y+3phTNj6JaBm3cZsyrP6KyQfaq61WGXf + O4/t8RSBV+Krl5BRdbq6mix27QnFnjRYyMlyXsoK07bi9pR98ebCCzx3GYled+L2knKB29NTafM8 + PWehbfXkMVaiD2yAeZ48fwayk++nIx+jq6SUdG6GSCoPs/LA6dKXl/NdsNbCjtJyVbGT+dbOEZjv + tppPvRCWO4LzngyvYc6BXSHuN2nTOYYL3N6LvVjUy8k6QABxYF5JuKa6mPiP1FurKAn4Vxi2zeHI + Y0YTUJF5UltntlShwfrwyisJVD+XvvSN9Jb9ctm4+qxfCkewQ2FVV4M/1+IOaCvreNiURwP5wXgm + 3abK5fAq5tm6BMuD3UFuMaqBNDA026dO5PtUIDmF9b+6COLIXRSm152Yo6RcYI70lJjj+cU5L+qP + noiQMDlj9HzMAuYFARvBT/i/8LBLaLaBHsrJ5dlyRisJ673BVvvFvsiKklp40D+Ba8hPkkC6hhIh + vlR/sZvq2IzEQScPZyquIPCTE+Y1CiugJq5RBbIDK6iAntGWKcJIl2GlNQ0RHcASnNC+nAM/MTBV + rwVFcP76ATi5+6Gn150OvaRcOPT0VMKLXH4sW438KLVPfcDh1IdpEMGhj0AdlvLQR7ukQp6zkRt6 + 8M7c3mG6owr1JL5wsb3zy8qxHRdL7XKyioLNJUrJLrny6YN0HpWQoQ03xRS2zW6+20sgXZ1vYeeg + Fmqr1/VQys+pRxYIWC02tCI5aDO5A7GcWiiIKMawc/onR8t/YbOrkKsKerk/7+cHf4sNUh563dZq + du8nlAGvt02zSfVCsrxjc8ph6ZICIovHH9/bjT4xkeV30d7yyKDwOJfh7zzh7syTXncMfxeUS+Hv + +JSY55v3n0sSU5CiY8wOfx8zL0Ln1Ah+MuEqF9wTP8nOuhPCP9x+q43wgYkS2MIohkL3N9yyGPc2 + 0SgISnZFIEfQz0HYXy2GT96ev386RKs4Fs80zelICuQGDE8knQCBPODbEUp4TIVkloX+iFu/me94 + JWAUvSTzJ9/slzdzO3sy9eN60HWYyDQsBbL3JcTRtwn/ZGbUaDJhZMIkZXWj81kaweYHPvwnWKYB + 7kQdWp4yyvrvXKyc4A3xUXsavl2lqCUhsVTkcdRTcYhW2d1ILpTsu+n1kUXsmzp/WKIVYTojzUy6 + PhlHYXffTBZj4Xs+QOshSk9JFzftPZlo0zBkzOtcgUqx8UCycRAym7BxfN2RjQvKJTaOT4mNf373 + Hh0+xTQmFpf4eOQxYFojmH8eyJo4n2/naBsdru/FtkSEHVnOk1gn/D3xHhBIS3Y/m9ud11jckqKn + ZmQiEvM04AEvIqrIHmql2dT3LapmtcQoDFMPmKicpaw8TSO7SvNW9UeJHZsVhvRLx5DEt96VaWEQ + 0RP9XM0FPH06EIurWWMUpYI1xmRtV9/WOf7NJ1GuuBo4rj7QtzqTr4sQb0P5sO+nKa4eKSo9VTaO + KQTs6KFw0j7aU/u/2sMtxHkRfPzH+w8saJDzTa873QOScuEeoKfSFnL+IfBOS8YQr4hswp4/i5LY + S0ZRGvoyIv4Npd3JRR0ZSUDAxi7Wi8B7uR5p8RGxcb/SxXs/zxazHHpZ2Pgn9eo+QQ08ibzLpxXq + q3BTGLGXQB9E1CF81gujC8xtvJ5MES8Kz7mOcJNdlPsWAq5SIFWIj/ioSeXNthWslIZaHuTBksVJ + 4NfdJXCVhCqDNr8Ac/qwX9YgGy5rLj+kXnO5+iFP4rIm0tFQVDf29naict6uC2R3QchA1HJLccqH + yUElC33+r8F/0G4e0KnXNrNAKk+d08L6wFyrouBQ4TiILCAOq2hRy3SDh6qvFJsD1YvaLGa3GV5O + STX8EQGBXb2bfVfR6MeE6fsRaZLHmb7Lxn00FtEjQHpNCB8/rb14jyPl1OMvk6a5wtTE1aknO7Cc + evSMhKj17Vp6hAtl3gSEx+Ds7PT081h9o8T1UKurNss50BggIeH3Y5wPCOCYIr4L9R8aZmk5J6z8 + GYr3cT+MxJwoZLWutfUOl6pPA8ryQgsm5nIdKutXIl0DvezFCbGQ+lp0R1jvnyqeuwHPr7T8RZQd + fvAYHdXReUQmyFeHAMOcD4oTtSMs1as4ahV4ose5KZAKrANR3v1He2lwJHgocU3kZI11v81nQ/Hy + WPPyd3HjEk+yjTM3l13Y7JweEheXNg8Km7KCpcxcWre3zB6Rs6dRQpw9JIH1w1gScDNqubPydvQP + BxP3lDqbREQnT1zpMrpBvwmiIi72l2H96vaRGNqhkx8Smw2EyPfUYUzqbCcqMZSlL5l/4jXLDFWN + XFNDdSdWbqh6qkq4bbnnSZd04F1WKMyX3BvU/kVMUn07QV68I34biyxSLxKS3C9D+N2PPCneuSjM + 7ke+tfr9c5PE2tUI66rExUaf8I5zdIxzWbDHotm5CzV9q4+KA1ASxMcL32tQQopedzJzS8oFMzc9 + pRP/7s1pCb6bJ1HByB0+H4Ncx1J/FCUg5fCqiD+1hmSoU1NrW+yoJufYqE4rNLbv94IjPzmdTtn6 + qTQpv7uelJG/ewWPkaM5W9nDqEFNTGzyeXGhOAVtNIz6Cxu25/XgnBUT5shHqqP8JwvMCRRfiKY/ + i+71ZAffaMsY2/l2gDtCJ8omPhlAI8q6qmrTXmpqTfVAZkJ/khjFyyzm645CWEebXJfI4j7dqb3J + kXiShIx75PT9IKoH9lLgEfYPrP5OuFA6j7J7PYqUk+1djqmluzchIov5TXvxNfBsXJMmdkbdphmu + iV+FayJNjZPdmknB9Q3DCcYvy72AEmfQxySWNH06eMPGpXdOBQlTRxVEUUhlMVOCqVEq15BY6pFB + GkipTUkf3CkxbLcy51htbiZLJzyogBvjIcgVCrDD/YYbWHBEMYPd5+BRxIaHRRqYWz4RG7PFF6lj + QvD1ry883gCYm153kvEk5YKMR09VZPIFq0pzLaD7xVijJfQif+SzOEp9O83VjEnlfxOVqgxsxpHm + n7J2x0V2jRkdeS2Qs9nUT9ZG/Q8VTLwpS3lX+9lwmU2/FGGwa1MvHjgF7E7ZDSfwwr1UIC03Oo/t + WDpKLdUef5ZGXpzmaaV9T+YAl1gjFSRclkORVc2rRt/kHow4pZHfdSmsEvCIC3bSdjQDuQeEEKK0 + cL1T3NiEe/ODqVqBL/MzQ9ag7iu97pifKSiX8jPxqQxT/XxR0tu82PeK+ZnPWBAz+PIR/gwQLRsP + 9dvFHnrMZqvvCP6F6BlmOsfT4ZMbfEGgamQSHk88l1Gsu4ozq4wUdgCPX48zkoZJFIclDPx2Gp5F + LWcA5mfgJf/9EChKVKrtlMf/R0mAkTIHyFcGvVn0eVRbvrCGvliY8Wy+3S+uUXLPvsM+W97ImlkS + Ha2yN+4VcVjsgrhpGDM/YAU+V3CmYhy62CQIrpyttrAH7Jgk7KWqutSxXvKwkRwKUuZqWlw1jdPC + NxQpD86UywwO6o2xq0fD4q4emctl+Fjz6S3A/ZlM+m4yFyD+yPZoSoSzSXg6MchBB1ptR1TLKvt+ + O7/CjP8jW3BkJqOCML+fUoflNNbB24t/6mw+P/VZL2kdMMXCFHdoTUoka0JvfD8l153q0hgWAXI1 + uzHCIM/trdiILiy/MY2HRC34qdJtE1vyQLIrfOsoj3P6hEC6qo8xZCdiqUeBFHqbgWYOd2hbvy3I + vNwKuqnlCO3pCxtMC7o1NbECSnd8+8GLGqDn0OtOAoikXBBA6CkJIH+8LGGl+YwXahfz9PkzniKb + GnEQglNpOObh/yOjSOGbhYT7x9WarUfDb7fz6W0JOAUNmyWmZJX8oJ0E346pdvg6/u8PxPCqdvAr + hPLWkGx/DvyJswxdVgsM688E69iIkNjVlFBVrTxGKU1sNTQM/PVGXkwvigrJNvuaCS9IRQcaugbD + fSkxEV5aUa2S2/l2h2f/bCuqNakCkRu0PMNOn1ZeQC8KXgSxWQj/ZvGFpesB7kV1M3LPTyT4jTh0 + b/1fPrYAv6nCc/ViUqimK5QctvCqsKrCGTOAb82pcOXuP7LcvFbHQk/qQnJ1jHAVMhZX+7PKyZTd + IxYDlfbHm5Sxpddds7crytjSUwn9+PrXcin21C+XYk9T0LKSUZomPt7Kh9BuVhugXy6A0JHDFOvg + FqvgRrVVzB4xp8rLBCZxOvhZ4Mk/9iRqa4KutBAm6Qljjezo1MTVjC47sKzo9EzGdxFappTWNzBs + FE/kpWkaxs1IigOvGX2iET2IfRXdEWqtRYN7SjzP7rEeTWkfNqMzX0IfzleNITsbYqU8Wi8ijyks + 68Cy9xD81amXg66qSAJyB7xBgR163RGQW1AuAXLjU3m/YGZRGZA79kuA3MyDHwnCg7AwCKJG4Ep2 + 7WEJPLxZL8qVMe0NWZeoUQBXqs3GC4KQR8kDpsyZHXRLmStQdEVWsmZ2IFZTB0kEnPWCrNQ8yetR + uM3IS3hXNY9N02lwj5WJdUkj+qvgMv2QLCTFLql+wacPnu+7h6XR624Vt4lyseK2eCpdlqfnZXGc + F8sXRM/HYcoCPxyFIKqnEoju02o5Bv4gXWV2WJqlR2ox6NYU4FWD1xzRmwJdr3sBoytDVzYVwT0s + Df5wOEd9iOBBGiHSebNESlzG7Bv8C+dmv1Ny1wT+g0jnjSV6LRxTVYB3FyxucHXT6057UVIu7EV6 + Snvxtz9ely1daVwIkfSePwsiP/S8URDx2JPe83/ABC/uxWnMNuhL+HT66vxd0f4nKwSL7J3F5KvI + 0l2ujJCtJ28+fno6Mmtcwvb97T7ja7mvF/ObW3RlXMN84ooiKJUI71nmxSHw9zx6C7bHOtvs5giN + j1nTV7bDY4slZhc6jA6VGnEOoNPebWb9a7Q0yzWVpOywzrDoUzTdZAn6D5Jiqn77Q9YPnVyKiRMe + BX7wr8FfZ58N8LjpBHzf95F19BTV2Vftt1amidbGhabSXa9ZPzylqKiDJ8rpS9pRenD0HFCzCNwB + tv5jKBcXqJwAL/Ga5ATg6445AYJyKScAn9KF9+n0Y1xSVWM/KuUEBH4UMzYK/DTypaJ6pni5UpyW + yJLg/+fF3EQY0SybwtZ48unjq6eIwXz7DTeKuGE+Te7iHm4YhoJhHJVuGAw9KqmewOODGkWRwfwm + QTk24/TzuRFEcJth1eK6Wybx/Kg5+TpyLEqS2vpANeQqq0VZF2EUuw3RDoqrg5UJvFrFG0hFcREl + uUBsVLFtrCuRJW7rVRPaUm8ctL8iSI/1MrD3AX6G3gvyBFy+eQ8qK1yCVOZhZDs31YcOq84HXqX4 + UnZ9PZ/OsQPTNGCOe7LLKU1XM/j1hXXP7rKFcPJQJAtwXfggI6IQZIfbyRZ0HgNLpxAdPkC2oHWE + KAkHciH0VTjZjJW39Up9h1pTfWNXLS19bDPe33PPLkA6FMJQTfy4BzGnE1QgVxw0V7sMLixajjDF + ZzO5y7a38+udU/l0fZ81ROKpLgpJeSc5ksN2voBTJATEHf1jNxR/uZGwpxg+vtu5FSJxEsMek7On + gzxnWLIIyUndYEdNg/0l/xwpOnh8gwaepzJf6thlM2yHgJN/v7L5D03JSRiN5MKCbile4E4f1U9F + xv6S3UG6Y/kGQrhl4LPz7un4fdWMDFUO0vlLP3jFT5jXqEx93srRgWp0Y/pQ88cyF+lmIR2qkwVM + 1JjKXItQt0HpyfAU3h5AE1FSOUjTh6s731uFd86EVxNI3KiJFm7jg7diOcMo8INCQUNkba70GmQW + NQL8ri4w3BkyXARVhiGvPpgj+ez+33gIfhsrtHhhT13tl7OmawRdiWCl8n5rGLnZgs4PQ+JI6iYT + f4N5hJf1RF6t3CdRsRfK3Tr/4CUN6nDR6066uKRc0MXpKbGS1x/KdbhC4Mu2Lp48H/MkiDHMMgH5 + UjKfdzLYjnJizeBd5UGTGsrrxWp5MzFQo4xITCp7Z6n0ZRSl29VCpqe/yFcTGtOGgqlWoWVC09it + vk02sBYyGHA7fMeFpvMueIExsps9xWpOV7hQ20Jw4K8nwwV2sR1Cd6udyGAhw8Hrxbpcl0LgqalR + lAY+MkZuq9hhfTEIhuYO7pcsC3akaUZzagSdKodhwTJQX7EoStLYK1UsOl8tysBV5d6qLQepbeco + lD+s6/K2diNVZ7rUa/+MpSno/+Fx7dyGrZMfrbHq7OS7MP5XdZqI/qDBZb7jD+12SzW3oFKh4bfV + FQpvuTAkrN9YkvxFnu/hMFcKKlfvS9jWfZ2FATIMpaVHnkc1i/8E6IViGY90QFSaQBjWK+ESZA6J + WevsTqJj6k1PwhhmF1hp422LqoDWn9ga++F56dk98idU5jkPqShAzlGM66Q2PuTBfDWBtFA5sCA3 + 0a8DvSM6d6diMfoEeYk4gZ/GvY0skdGjk+ljKXDWl8Ys6YQs5Hrux5iPtId7cLFHP2xLHdyXEJXn + ycv4xA+bIFTKJo4AlaoDE59SPiNheXq/Dkj0xayO1fp2voAb0fhdVVqmOOf7xXiNKhcoWfMtGZDh + Wl7Je+UMiA2Qoghd5mkoQ5dDyzZ6vVo0mLJHVALWoJXU04L/ZV2isVtRPzLeVHDLt6vFzXw4Wa8n + m8nuaDQRstmYBBiXtW973BNS77sSCnxZFkzF47c7mJQkeH7h+ZF76BS97qa9EuWi9iqe0oE8/fyu + FMYX+gkvaq/PImBLcTCKWOp5Mqvm75PpfoVWFmFs3m2y2wkhntm5geL5CqZ6v4MTroBthEJ4urst + 4xR8FWSzA2UKPe4XlSQdbxN6fhjHJSA5tI2MyEKiB1qjG4Vh6EK8Mlu+Mkc+9GroJRHnSanOSD5h + Nb7bME15oxE2p1gIsoqjIE2Sfw1OrYW219lcXVALbDucHsEAN5zWfnzuPZgpNRTJrL9UfPwBitWY + JC0I1eokKSl6LkWw62h01UsG8gjh62ZZQ3XwnAcCO03MTG3DI2XSulZWxExSbZ4WzcZXaInFzNkM + NFJ5nW3XsBF/pJQf0j12hOn8GKK1LuQ/gZE3X+YgKvGHdjduoNDasSw6lqpvgtYu27iitasuLLR2 + +VCKw7Opr6Bazz6OKzK/FSoeS0Al854Oal77OL0DmsWXBXkQjnmacAnd7keC/cg6SYtmtgPNxKQT + tEhlvpzv5k2NNE60HOIr/FhXgELIreXMNLnO9hvcK0c/u26UGPWnGU1NQvphpU7W7xMEZnMUxRqZ + bLw49bT1ReWzTyrrbzwe403CZLUTOKpVM1YFB8PDNDI/1FwuEDNsIDC7dP2xGIhm4RRdi2REBMmG + OGyLbExbEloepFgZlZvQhLwS0G7zu+ZWol5KWPYT+NBbWIHMyD47Y8mJlzTg4rKFGw9X5A0OLh8R + 08bMmWU2FjZqGYxnJleX/2zQRLbMAuYOpn8sMZGqn2JfojgFGsj0sbFtzy174IS3fA/X+Liqn/ZG + iBa0f2RS9yOHlWpg63ksUNWNOHWT0kZ9XQBBwvI6L7gNrUPeVoaXGkYF2+ijMksb6t0j79x3X/ci + yJ1Qsfu+giKV9xg1qIBMr7vmPUblCsj0VEKMvqtA+Eojv5z3GHg8jkcBXBJxJV7BW2NNDuTj3mVw + CW62Kszkt6sbaa9/kaNWSQCqPCW/Mu/cSBJHUb3k2K9j3C+G68lGxsNv92sBzIhXfbabg04ITe+U + +jCcDO82d74S6WWS8O0Gpu/benAuMmC/ZvjlwmZJn1b1ZcKUcCvQtAqQA/Yo58slEEA6MNyMYgjq + Z6U0Dy8cZ2CEBf22c0TxRiy1SQ7RpbKAFcr34OPnt0aiHntYDITDilRvZXp6AUSokg4Ky+d4Qbeh + dJjHeb5H3KlV8zQhawyaX+dLkObVsT3+Ub3e8MDshc7xti2zB4mQdouR3O6gNSnmrKvyMfaSeSdY + tKqJoUc2crb0qE5sU498SgzXzPWxT0ApLmRArjMDm7VQcfVsdZOYmoay/DCsWBTwp/agUNOI02jQ + CxxtQqH0R76gRkvPqVA+pqAypq/9msFuXRiZPweG6CpzdA69oTNBLIeG2e5cujtFH5I5xIwZX1Le + Xs3nWYFAhIk+b9FZ1NiuSm2cT5vswj5s9FDaVW/XEt4Bvmu+gglZ384L1XbFd6iEJ7k/BgQTOVth + Dp7eNP4A6YlKeF4QD2RWnWD8NclTGzTWHL0T9WngvEBM1+mAeZ/Nty3ri0Q8SA4MUiccug6015Sx + 2j5iCmmq6SMHw3STObrWK25gd3VXhH5G+J0vzc8G0muGyA7WBzmANcW+mdSpNlFLcpyl9FXmnpE5 + G43oOZdJPmKWSAp7r51mSAAB//UBjqB7UgK97qQZSsoFzZCeEgM8+/xrSTP0BdC6qRn6CBDAvZCP + Aj/wfBmZ9RK6M/MPzsYy2XUxlIzxy1xgQrwfPjn7/OrX8funKj5bFoXdoNVO1rszWm+ydUY5vUSm + NlnBBsl7crFe+Vh1EMsTXl/jybhaoS5lBR6jFgkC0Vgk//K/YTyTUQnlhUietpVZdOMgCjJphme7 + L2XYHCewmzw6Pw4jOB8l6CjqyAi7VheLnEcZT12bEhDypC5YP/E9n/k1qHtGjWJzYXC27CT6qBn9 + XnMBTOABxrw0if816G8Hio0iNxgOSRGlLWXsqCabaST+XgYivFhvfUFzvpxuBCZmIdkbIYBQaMLT + qdGww4D3lwHQQxkgsR9MmfnANioRPuRBilKy3pmhL8irZ5O7CR733fxuv2h6s3HG6EKSSzW2l+qw + HsL9mLSZ9Qqxx79mha2NJA0nsss9HYSpxw+QrN4RjSYSugiOdnE4IaNBPkYPefxRmLduGPyfy16r + yq1RFRTkJ14eLfL9vsQ7Cty3VvmpWgKRIhpRPNgxtl5vnj4AtB55VLjqg5c2AFqn190KVxHlYuEq + 8ZRkh8uLc1YCwvVEnnmhcpWfwgFiIz8F4UJmNF7Ob+iqn65uloTnLwy2GDFho95ebtasjHq7PdDe + BhZKopq0vDjFCFa/hHVLlLWUXoWxE3pBUne3m1SLV+349YWsMlSgGADF+AjFwaE5ewKr8VTNXKns + nBKfrARQaIGsFW3h4oXTxV5ufSONDv8gBW3ZRLLlOYrXaICewH7dCoKwm1FvkJjj5aia3OStpuCF + AqijGsd3cEvOJ8uh2FkD+q8qk+SHsn4x4b7BH40TNV3Z/FKbcfRcH7RuHr7mIhZ37HFU2lTmGh68 + esTGsCxTZgewnRreCJQst8xuJkcvnUM3WvuUsa4BRMdSIARLP8AdRjUZDPm8Ot45D9HTDwEwVpsh + CWkzHGKl7gvPY1/cdhettWpkqsZ4Sgy4kRDpHMt0OImMkwsrvmz/XdxLA0GkejfIr+2UHxIxZVVN + XvknXtDIqEpNXG2qsgPLpErPSCi4vd1Ji6rKNXzHB/mvw1t+4g/EfzAXy/c9GW6a6KBM0P4n86bu + vkam0SXVQD4WKMoNTmY7TJsOrq1Cc6iSa1ua9QkHD6F1dbDS1n/8A9h+o8JKNzX+Um6cMnbahNy2 + 288w9kbkazJqXjXg99VWVLePbW+CVRzP136kmAcnzG+CFpU3cvYkqU5sV5J8Wvbb5ukpVkULM+Zz + hgk5t/fA+e/R60Q4XNnw42QZv11MP51OfQnUw0ZcgvXYicynixu4nKwa9/iE3E+RDOMPpN2ibKJR + iRZlAa/CDduGTNPITjpCNC2rxRhU5i9ApQhMpedz1wlLSncr89ffnr+HTYa13hx7eERJwU1SePtM + Nk7raf2cmBZorqIFshucgtZKH4h9fixJ5eExvXwrVTT0xOSpAx6N7/CFrStSgXNYQ3+oBUAqjOtI + jfRToefrHK6bzWq/bioy8DCMck7QgUGaH+p0LQW+TwekpmvolkH3ad/dqzuNq+pxLPHCE6/RnZY3 + cq0gpzuxasipp3SnqYXS6yuqDWi988mV4YB5at1FR1qaDUt15vTI4CrzeRL2EZDUV0XrLlUDHk2M + fk4jLNKAvkCixo3TkFTTqtQtSj87z01fZaXVwdTJoAk/8ZpUdZQtnJVrQd7WrfERqdb76VqmE4l0 + 2eF0tZF1jia76a1h2zXP0+8vT395/e6X12+Gt+iMLLg2fgeSA6QrpEZQg2TQEpkcK7up14Hdha6+ + YgNjJYGIXVdVzKjBmCgeFjZptoZe8vDCAv3DrHwgop/itHb6mo+QYE9JYAA60znIHAeTERokWjSg + elhcClPpaVzc57DzTWClA87IiVfZvOEHqnMbKtDPoBnoZ+AO+hlUgn4GOejnWQVsCiuDfgZRFPF0 + BD9SLk+5wCKDeTgbCR/NVkY6zeZ3wMmEW+f1YoLBCZhAQBbb+VpEM6hTVAEqifiGa1kMfDjbTNB8 + Qlie+7V0BmDgDTls8BjuVT7Ft2JhoskdEB1m+y8wKSvsVoF3TstYLb0gal4aRRsC7iWpV/TdFQM3 + jY4OB894PGbMqTPt0is4/R0CWuzwmaoeBg+05jYAizphhjtrhgrTLHcESX/huRVupYNizn/zWduN + NMAjoWtEU4E6rM0b5hY4NISPs+9Tyn0ne/DINEbWec8OGzhDQkCv+nztSDkO2HIY7UmCZdTUW5Cz + 0XEElSZMRjje9ROoTlrgBmfYk4WxIywjCyLxWWf7BR9fvP/0tlzUpMnXdKJXNe1BQq6dfEXVOh5N + PeyUgH9QWo2UtBozEB4bofjJJq7yquzAEljpmayZ+ErGcuq4+dKT0fB2fzdZDj+env8K9/nNZDn/ + N7A6Nnzy8beLt+ypzK4zu0PHEUsoId7jqWV5F9FdW0SCEPF3mPgm/lVn1neTvh4lDGp/6pgWwXwa + csu6uGr/xRpywfebFnLIGzkDL6hObOwF+ZT24QzO52q/HZQjiI/JJZfr16dvBtnkmhEOA/pWvT8N + DDPFZ1YJKk2Qlytj51IZ++kUENmky4oImFRVy2kbxuj6dZ0DWDBQVFwwrz98GMPOcYcO7qUAYiRn + qvk+d7un1AlPlKHSf8vYiRc3M1SqRq6GSt2JZahUT0nPWu+mMn0SlJP5MtvdbjJYomWmJ9QodTOo + eDb0z4bnQGSAlITh0fMSaQ0h8DoQ4nCS9L4TN5aeNynarbZ3K6lkIyplk2JdXhQQck6Flw1YwLGI + 6qo7qBvFnu2fLW4kL/FteZoW9xdjdY0VbF7GXcECglKBxbC7mEB6RAWUKVhyfar2anvKvvNsNgQY + 74f0Dyk3wz0WhLTswAVh4bOfj1MVqVqxLGpgqqLXHWvFCsqlWrH4VIZzfyyDhPAE0aIKtWLDlPMo + GuG1HMtYr3f36xV5zGESfrt4o1A07jZAf1qyBh2EQbCjt4N6E1CKEZGlJCptPs5qLD2hz0InmgYs + rrJIW/achHnH6AwGusxmHEdd3FiD3lw+jw2JogevvZgcGUDS6vjFXh5OFCegZDYNJ6JG7uFEspNC + OBE9VXKM1kyBby4HxX9bdNB7wzioxD/melaqXsy0IBi8BHGMNYk8zRs5C4KqE1sQlE9dp82gg5aE + 0E/wlKov8tUXcR+m1m/0PdTE9WtkB9a30DP6EgGgeA1bOdO+scEpnNYZHAuZNWHSQSg7FgiRtXHZ + V1ePEfQQ5TAZE8pqbGzNPJyd/Vc3tnQ0GzZw7vUSAO+M5uk8sMcFEBrzHJDktLF3X7ZxByQ5LXv4 + 5UMSwrbrpdZj12iVNn358tElvDPAFynU06cyo15Kt7AIPYU3ETfG8Dng3vwyX2aVXvLe0YxpQFxs + wCsZe4Gjd4+AbAkk3ELHBDmW0mBodjeuKUCcMS80GjZzRDi2fXiIzV5Af/thNk5YYE1gJFsiiynW + EOh4PP4mPPGihvF4spFzPJ7qxI7Hk08le8imqD4ISOEVrIWqo5F9X03vt7uB/FnCAbvEdgPRWti2 + koA/GNN4LMhhZCwQM1ITHHQkaYfKnEu4seFsNf2CcyKn5hDdH4Y6pu5CuFKTqrE2YSdkElEbyIlz + duLwLWMouwpqlPG/EntrN19k7vy+1e0SMl/iSokrFM0S39F4LP65m6+Py4qd+LPiZKESclIsKtEM + 45CauIo4sgNLwqFnspybDh+ici5atSn7LKqqXBjS0OZqEnqURRhLdHROd2JHj9BD+oQjsZbHShnD + Pjlgzna/AZvqJTxJ02Pj66CaqN0Y2caWRvdq3qiZsSWqNLaoe/V6fidxKeC3K2AJA+MnuX7jKJRX + psw9xBN8h1aFFWYqVl4EB/I3vZRuyYNX7OH2YaH9qMzXcpzjBjK/qpuJguk1LJ2I0pShGV3TvGJG + ATgZ6PxXi/n2VhIfYljyLluKesiKP65XurHb4DlmFuaDF/v+C9wIO/TYHfyAQ8mmAV06k+10hZdz + 1mJWuZfQVVkDvFCY7FkmD1zteGv6CZnH4orVAylwtmg08F4qGnS8bikPyFrFRgNoGIldWTgsIKQ/ + SUFYrY6z0djstpVC5Uji/2fvX5vbyJG8cfQ1vwXfnLNWmHQX6l5WxImQJd+mZbceyb2zvf+Y+EeJ + LEkc8/awSNuaT38ykQAKqBtRZMl298zGbMsqFRIoXBJ5/eUedaqv8G4njIzAIEFlNAQWOb3v+nG4 + SetYjFW4uLxDeJDRHx8vXT+w95fR61b+MkG55C+jpwI68e/nqGCaDjPfiUvYieHLMYtBWAhG8COO + hZn6XAfiSdVdjycFGCHOwnl2x9YI5FNkFSukORngVodWqG658693brCWqIVfJ/BLBURJC42ri8AO + QJdrACViDL4lqEZgL1awkVBjU8+Gu+Xn5eqriSUYBIEBjvjxouRzswzoM6t9Jk2gTLAMiRMk7B+D + 7zbxA74/VKAzi5M+4hVbcfN6QfWLPSrFrQ+sgyJ5LCIB4YC0zsHxFGoR2yRnUcFNYeJ3w4OXTWwt + PqIDw95Dz/boSo1/0KiiPwhu8GNcgn8ip4pcPAqjeHvNfM8eFY9et7oWBOXStUBPRRjFrx8rGT8s + iM1aK17y8nkUBSwJRxH+FMrHe43nPGPj/194MsZEWZ5enC5NLAkBjvd5WU22qfWkG0ixjsuaQfGS + IPHLbJ0SnGfTpmrILEhcE2fvw9XIiIgI4bOTsMTl+dexUTis+0Ij2ALOZQt5Y9SKeoHCYQj/mAcJ + HUmtTe8mKqPwaRWTRReDKyEE6RdEvn4ANrmaz9a8kFTxEadDLp2/f18sREvZnF83Wbge4A5SqK9e + FAzE9+MRQKyA2i3RClbR4t8xy+Lu0ZJaD2xXYo2qEhMwYLVz2vqdNVrc4HsHqNRw0p5CXPgZw9dr + D+Pe+RUsMnYE6DhI4V1Ax/F1S9BxTrkCOo5PiUW+vanWknc9LDhbAh13Pd/1ohH8zY3EnfgWQSJx + Brbp4nGOtuoMwwvF5uAVmigC818CV/xutsm3oD9kazyo+OQeSYwlCeHXxMQ4/mj7MEOosmcwyJPS + UdYS3kBV2U3I8bD6Biux3KL5JZ0uQNEi2GfQ3ic7mBji02/zmgL2pofDFLxdtwlqG3QM+Gtcw6G3 + mISXjdWklIMJjOr1JXht7QrA8mlOUq4Nr09OM5uOzBr2xrhhUR2fVTDCC7gxMX9cUdWxUcOwEcOV + OYnL4H//GOzdGK374imWfoD7XDHy0OOZjjhD4gxXp7M74pCS/Q8mWxs3fjC1ppsm8R2RXl8s9wOm + gVU/s5jpdboFPr7UaCRlGpPVfNqBhu/6lKiu05hudvZR+j66TytfghHJcPlgCTjcE3VMvXlIhxFs + Gh8elsosaQfLZgN0J9L8eUCqsmqSN1qS6lATrhJp5RFqkQV37HbgjiFcG0B/BL2GrXBkGUwpL/AY + zz9+uwTxw15eoNet5AVBuSQv0FOSF87OLljV0uazkqUtejlmkRs7Ixh3ErQHpq/mQL4amA6K5o7j + WkvTSulSDpquIZZ4geuyp7KGAfOdr+7xI+SzWjq4j0p0igj0ANRNYQygwJjKx9pZBQ7U66WKHhfI + jWEcdHVGizb2AXfURSngjj+sojYitMsEPolsQ1JPA36EERnAix6+wjToLuglQgupBqUX63zW+pi4 + U9GlMmGJ5xgAi3k2QYC5Y1xtLAS5CJu318uzAkZDTDZf6nac8ercHEZRL7DUMvKequQdFh+4v1kX + /K1jocqfCOTRsoBg/QT9BNUH+9CWJbPh0b1/XF77XeyB9LrV5SUoly4veioQgM4/RJW0Kh+rK+t3 + l//yOXNcN3TZCH56CcbvI3v6CMcTKxcvsZSxXlZYsn91rwjwncki6sEeqBnu3ACuWq9iEOzrZuvV + Rpcgo4r9fwxK0yZrOKuJKBvjTqUMhW6dYkjTDGs+oRHPiCia5UoJ3C2nGaIXLaccjYZXvOaB7dB0 + NpnBAB8HuANUGhjIeYOfzfL23W1kjd6jI3MD5KkPpMga+vannl63FVmRclVkhaetIisqsKbI+jxk + UTCKGdsvsIb+18rRlhdy8az2GMZe5NYdw59KUn0FYmi24SXbx3CqZiiV5bv5HSUNmxBWOY8SSuef + H+djzixggeZjehsWGZ2z8O8d3JWr3QZGMXh1cVOgTgFLwz0fJ2RQmK6m2eRxLjrLeEpJVwwmrmw6 + FN6HYykG3kkP7C3JmYHux08kn6OhzXCaDMYh3aGXDnPsFUB63e4OJcrlO5Q/pdN0dXNdMRh7DkvK + d+iYYYmpZMRAnGYije4KZau0YEY3qylaMa6lAMvECbvKN1UL7brU2DgKcYtVEibOlybU4pDZpPQb + Rtqo4qcznWp6N7UmVSGbGzbaxLTRvn/7vkJwUJ61mlhcffS6FsVN7HBvc/GUupcj0oDoUoQgIR+Y + 5PEIZ4dpyH9/mLlrfszvdnCXmagbN5+uXxeqDPaj6RkjxIjBylSPMIrNanf/UINzgdAd+dJdD3BX + KfMsiA4DMTlla1WTftNancOezPEm00YKYcAqo0jnW+uhDMQ256ppaUfY6RO2jZ9Cnxg4R4JpNABd + PBE6Rz8IQH1dH2GUaN950IfJ+4NC9X69dvzY/v6g163uD0G5dH/QU7o/Pp5dVR2OiVNCYfVejgM3 + cOD+CEARi8X9UVf+Ry7Re3F3fEzX1bujMAyYiBZeU1lb5oWxwwIRI3F4dWHg4mEUhJXChuWNZcp1 + JiiGNiwQJLw4TkqXzAfYGSlJYQglgXxQyxI1Rb246YvrSd/uplg54CtcDYbex1hUurdGmu5nzp4Z + R1haPhOVtTSP5hXrwknwmFdEfXDg1VJ1RTUBvNDn8Hx+ixWiDYFVlFHUQr4XswmQ3N3uMF/rcZnC + 77kqlDjjmWWnFDm9mud8Toxkg9PKnVuY9YD6O/eMi8Xv3FdDUX0rR/aPL4rtdGrWQOYOzfNf3QEe + Fnktgm4SDsQa4qlvX/VON2SX6lq1Psr+ynN5ZMnTKJUKhlmMJjQNuLMFXwn48FVz/FxjWA6jIH5Y + dH5Q+RRrp8JmnkVdq5ayVE8eALivdWtC8ZMZeNvHLDIalZ0bZ32ZTT53EDkOr23VpyTgOZ5HeUrE + lA6h4bseectl/b5GIjUggTGPo/3j1bUbufbXPr1ude0LyqVrn57Stf/u5oNXuvZZEvmm2uiB2hj5 + 8Jd4FCFIk0ivvmo2tZqx4bjMixlIt5hTIqCWJer1fPVVnFkKGP+apZ9LIX8fMDBIiBHv8oV3oBih + K58+3P1OEjyVhaf8scZt6iblME0tAjRmLNau0u8ytQPcBPI6A+k97KfcpEth/OXRWbP4fqstWiZr + PYk7NylAEs4PAUk47wiScF4LknAuQBJsIaAUHYy+iRIOm9Snl/Pg1fjexeP2+Ch/mC9R7q9EIbN5 + zgVzXiAoa4d4AdnINmBAdWJEDMindK0s7hfMERH7JoweCVgzZSMb7Pszp8RhfGQOO/wfwRoZLUHA + Q6lNT5KtTKO1h/jwLvbwxP1M1b4cz9Ec+inK2fpeQKAg5tQ1DLIAJSGs2bBm1ttKr9ovaGfS+4Ir + bGAmjyhydpzsbD0vR1eZTVRdbea9RbTpbrFK1MY6Vkl0YcYq0cNmRMB1OsfJNkoPGuR4mBFFfoH0 + xWJdsdDwoBWdIzP8MeeaUvBVujz3SB9RNuzHVFX97tVPj7ptfwL/vdoALArLpLrOk9We6AdI0Il9 + mY1uW351j+G8t5KrSWQYlYqI4JuxOK7zrO+SsX3hKiauyMR0ow6A1vS6ZSYmp1zJxMSnJKddf3yH + G6SUiskrTZmpmGOsvxW7/gh+Bn4sIjG8/0I0rM3sdkX2M0wtMmy6wQ03sW6vP56Nzzb3HhbO3AkA + NVLor5cPkVPR6K3M+boz2QsS2KVlfd77r3HAhyiHV+9Djn2nLXOSISRL4gUlJV+INPPZJK3EQYdu + 2JTkk0RBEjhuTaU0LR/dNL8n5bTRysgG6kv1xSgZ2LW5X90Nce2WUx6NBau0wQGYSyX46GSWiw1c + RHhhmRjYOMozHIA2wG0HoQSUIzmeQP5hhy4W+FXA5cjrjQEkOJgMVwhGwQfxIhbD4B1Do6Jn/rjo + fvjs5ub3MT4cFc1Gw0vx8KR6DFus7C5zKKuARiZdD5XhicHJD+CyawWX6n0H84YXkvR9HBQBqOSc + lR5DxfMFf+dU4JthqmdzDNqDbfQFdIFReUk7THAPxJvSYH0hR/0eDPOloI7L1TYPzQP1XZdsG3iE + uE6gRVd2MDLZZeEc5xfozxUhyrfwFeJMZFxiIt2TalCpKIBXeZUPnp58UMmQyOX7+/pgT4EfMM3D + c0Q2U+AazO1PH8YgpRBPlNVwWYfYA3rdsqwGp1wpq4FPSQr5dH3DK9uWC2tEfqWwRgSXTRSPIgGB + ikIIdHcPRxqdgAKp5tmn67OrqxOt3LNuMn99jRdRKbcCzurd3WxyOsSBfL5QqLAkpHza5PC8IqXw + bvS72kOO3Bzw5iJw3FP5HPTPaqrGETd7HsTgBr8tueuaOXIKclnstCCqInp4cdV5Zkz4nNA7sQVc + 4GMa0NeH2eRhKGLS8goIKwoedzs0EJ92WKrFThwrEf6G7nsjCB2G8dv5Ozag/aXiy0HFP6bMiLrA + Y3Id64NsTySyu9Vcj4n8W6NcXHqLMM3dGPLgaBuz0lgdirSjLW9bsg00CcYvQxz9/S5dPs7HGhp3 + 9g1YzfI+219hrebWluyLI1D/cXHtu5F9IDu9bsW+BOUS+6KnQom6+piUmReWLjR1qPDlc+a5Lku8 + Efz0vEjAnF3LosuPwyt5njA344wWW2hJ62VSjbyVFSZU3AwSKQ4lVlfbDV/z4tPpSSkw14ub9BM0 + CzO3EmHV3ttoOJ9hKPqt4sEtvceB34Stw1jku0kclrkkt44gEHwjvI7jgxRj802KY9pU5Sj5lLFA + 8p4+BtriaRMlLxTBGt3wRpvRUQ1WmsrI0QuJKJ6MvmGgsxnm62wyy/JTkG8QbJUYAAis22yxRkUF + tRheZo/TQkabfXuY3SINLSwpXU71BVaWSJHdM8AtLvmnG1N+zsHFovcUN9kHatWuDwW+WX3Fbrda + Cdh90W4LSfF10ZD6yIE8+mPu4SrZ7cPWlLrMkXVqcR0Y+e81S5gQVQ5IkEgCmSDhdzB10eu2CRJ+ + 1dRFT6Wpqy7AtQQ6hgkSfhjBEPzID0V467XUhlQoM49wFHiIcNS+rrh+opdcX8ANd5cPn11ffzhR + lq71oRGwGoOMPVCnq5Erun6kU0L9qSFt0aBUZEbUKL88eagmMpRrzA0SpaQ+OHb2BrhwRQ5CiBiR + 3VT1A3F7yzgZvZUT+SnUY3kwKXPp/Jo5ob34RK9bHUxBuXQw6ak4mBc35YPJEp4cootPwcvnHgM+ + 4o9APAZdvCQ84b3KQWrkXce5E527aV5z7vpKCiwB6ZcEWfMoOk6blZklvhfF5eBs3Tn/DTYwbHQU + hJVzXu8h8Vm5hwr1wf+iK2gCTRHYv3b0ugYGxxS3Eu6rDZ6uLY96QKgbkBtWD9k3kFmm2eBaSx10 + QEf/0xQAxymjDtqn2Y6ptFjgquVXDrfXHR8+a0WhHXzbqVncvXpcT4XU2r2LAeHnm0MTNoLW0TXi + RfXk76Msn78B7+sAE0Sv28EKEuUyrCB/KgC5r84qBWzdIEwqsIKhCxzYGcGfOcQ88tpLtLPpeswk + 3dymi9XjXGVAmSCDZPQpIOVSA2KwQMdDUjOQMufz2TJDeLgh9DQTlclB4NzkeGgIo3udurUyFGoK + poLrJg2KmusEgVfJ/FEfMy59DOpxzwhyCkY0JnPrI+zR+5MGPdSpmNl0Pg8sLVYwSIrNqy9uxg0M + TPTY6hcNfugKDXBvKTktjpyBGDQekurnHYHjZ0tzL2aPE8bk+4PpIiw5vqt2HJ9wb357Oy9jgWIZ + R9EJiY4WhnTEFB5TsaJfEbi3SvAOZc+2Ht/Dacd7ae9lDT9Fn02eOoR5wLfPOhcAVLftUQB6yrz8 + 85WbTxTIPYvOghesU73ropF11L7sxIzaF0/pBi6AD7kvXUy5Dp62/w2jL4zs952YKoP5ZKrnYlNT + iGM7Y/bJ08q75gwL48XoFYw/MUr4HdgDbVcJYTuu66pC0j6i+iDyh9d5eKL6fd0KmvXG0/2YFVcV + zpexBw/lhzHtqfqN3UMN6EM72Fel9YeyVcnCEgHtxhLWBdoNX7eEduOUK9Bu+FTA0rz+H1ZOMHRB + 53Aq2G6BF7mRPwq82PeEa+wqzV1nDZfC4xD4Ifco66VpCPiXHCOlpOJFCpx6mW0eydiIa5APr7Jv + wXrE6SxAwcdKW9kkW6NOyPPPeRUCg2oRWqD207OrTzfsZKwVwxFdy3IT0AurpijqVOuhcqKo4pE7 + ApzACDxw4EYMnZLGoUaUdYCV8yrerxJREYarES/m0NBmykCxiFSg4zOIMQ/eyxDp2hmsAAjQ3bKa + KFuR0Szle1ku2GhYAilAAri8wCbul/C+bpIWpg2+hyhQkl5221+OYMNhSblcK6TE+8Jt4hMl/Ge0 + HvCjooIUWNxHkEJf5XPRqOLodPTkfW2xaYZHHavr9t1Jc4xfb13UlkeiY8yvb41Wx6sjoiomtdvd + UoLoQuFnRyntr7QeXYrAWUTAiMfcLgEj+LplwAinXAkYwaei/tHNm4oVzuFhiuWAEeCCQYRB93HM + YRfwVnyY3T8AL1ljTMGaJ9aS++MtLxWkzD/1AQAqZkrURsrvqvY0EYtbDr+PPKfBk8hYHPqhE9Wj + 8uynpN1VbuS4rl8J5N80+DdZAtJCc/k9HFXZoQI39z939zQJnBOrGF2KQDOBeSK/DKijih1Ffuwn + lVod5JCEnTc3jHHKfcqLX2gJpCYMkNsE29rwMf12V7OiConAuGmbui0yDEYKrwCxKqH1dLfEOiA0 + 5bDt0CWHvCDbyJCYV3ik7kB7mD8O8ISoeJPIdQbiX3jSO3+ztTUEV5vrTvu2SIcbp4eo8oMoIefJ + vsJveBzFoYcpS+E/wBrzHuoQRp5T6I21PrJyNCAeVv4Bre7qNt6tkk3jOHrB3E65ptTENtVUdGBk + mtIzoZuM+c4RgV7Prj68v+DcC0YZnQza/6rR57XZPSo6EEaBpjUebyePCdx+vcq34+7hqdYadE+m + bhYkjK55gtyiomYHyqt+IKB9qsSUcvDL3ki0/yTUWhudLDEs7Ssz/AySZ3+2McelZI1Feo/8+phK + 0336TljljIy1MwIjO9sXcW5vZ+uhs6NsbjUBGEdb6YKQUCVKIx/BpbsDVX/K4QTxG9XeW6y+kAcS + hB4glI8MhEEuoWcYFD/ravjtEdY0pqNXJTSicuT3Qx5PAQw1XeJLcCxyVVKQ53k2fjLIahRCZMth + 5MVPqdJnl6AN2itt9LqV0iYol5Q2eiqUto/n1TA1Ny4hpXkvn8cRPB3FURQE1ZK1dPPySVJ2MW5N + 0pEpqbQNDyoWpqrTeiPSzXLikg3pJpskEiMNnlYD3ooOZPKNkbcEI29QyRKWBElUKdv0ZXzz8ez6 + dX0IBGaINyG4IsKY75dj8UXe0qpyhTSlMiVetw7w1uQ+kXJYRZw0gs3WU5LzV6MuhonTFKOhiA3+ + W7TXjJjCCq3KIYnJPRmWAUxFn6Dof82yJc1aUQhAbRsxRM2sWZrWU+wLBENiUbcmOrk2VWUdDWTS + FIZ6i0dk+ct/n324EhobT1EioVfuDLl3B3hyVHAg3IQDsYCF3NG67q1ymibsRlI4kstsrfc1NLbo + NSH0idKWsGlrWXvKOqgjjOUXdAAvjZ3C5StUBNBjv642NWCedYgqbuAEslu1cjlCcHS+vX64vDdU + oQheET5oMEybKfGwhiu+SWfANlEOOaYvml0VDEG/wZt3lLwjvQJm8IyxF07QEWaQGtnDDIpOSjCD + 9JRuPumE5i5hlb41KBK5BPP4wCKTJgYm8JRNPGSBUyAyrbj1ouPuSALPwHQ6VFPtLb3/iBAsn5GD + wZzSw0NuabPbELI3CHQgum90gbQszOer7FsfH9xPjHFPwvZPGPjEHMqo/XDpRF4HQAD+uh0gAFEu + AwLwpzKj9jI8q0QNBIguU8IDYBhMEI2YC+dCWOY+jrfZBk4HNzzDEd0K7HY9FU7FEKBQQ2bkZ6Fz + c6IZl4VZuS4183o9D18JL/BqCDrl8DLUWqqCaRR2AK8U2DYynXcepk1xzLAmNKLKWPak9PpN9dCT + IEgQPuDQnLFCGUAceOZVivZo7GACSu12tt2J+VW2arMDrzFTVx9qOaygJTgaM29bIxOeyjHjubGb + JJj2+xNvuwE/UCq2AK7D7+NQsYoprK0VcHAw4o++owvZmjDu1AHo1BzLXAay+3aeYCWVOgFFBW4q + yZjdE4Otcg7rFhWPPb5pwS2enF7rBRhIL5PLgq5eJmpi62USHRheJnpGF+Hk6x0TaPtioeADuFJ/ + Pp0Ea+lZYnHsB4lzMhAIIee8mR72ywlxFOWICRRlLzEqXyxwPXOEs+OxFV9mKf3WVA3DDpP0MCAr + AjZu6r7Gktsl6FWJSwGd0N/9X34Ph98QRQwWa4xIYi0IJ1af7SVkWd4L2GKP02tL8cmBp9BsHoih + 9ABAbEWtVYQGjduV/Eju33Im4ohukgyTXmd3ErGxxdS+d/ySV1D+9MdLN/LthWV63UpYFpRLwjI9 + JR7x4fWnSjSR7wQm/IwfoqzMGAtBVnYZWou4F1uCjHBF5tvjLF9NUtgdmG4yzfjDe7j0FQ7NH8s5 + dDzpuwLHEcifDZU8Vt9m0xVGnUy2TR4MlMHO341/e4dFMnZrnkG+Wq42+Wj48ewCFx5+XGGdVFhU + sscYBaFDFjZEzySeDzNdrtklrQ6lSUL3+R46g7fzR1gclCeH6ps0xBe+mTdZvpsTMgzothvEp+OB + vAtgesP0DrO9p7N09w2zmh9md9tTPgFoS8IS0JMRlblP7+81mRWk7Gm2zfAKQboYeYal3XZ4huCR + DqYu/z4WVSXXO6yhuJvOsnzw9reiimTgMi589pUgl/geN8HeF1NUCzpjJbACf6QYBNw+clpxvn+O + xI8j4OTL9sbenMiBTwlrP66MEwt9qsPYcOa7mnbgXLdQO5KDdLPoREnolza3zfc15bHHjthiK3E9 + HrRoARPBDPiNh1mYKBH+t2s37AA5Sa/bFR8nyuXi4/ypqHt1/WsFDciPfbdce3wcu0HgsRH8SFDG + bK0/vgH6NXfjX6j++ECx8Sjxeb2EH++4GchdVSRsnoUvHL9jvia1sfZ+iC5M5wc9pB22nt+KAjjz + x3xVhL2UEzLNv7waPqwWuDzDK2g/QCKUpZlE5AxJogpeySpfCLCSbtWTI0a12EUCC5eQGy+7RiJB + XCkis9zB5NVisTRR6U0a8BK6T/SwPwt5YM8e9fngeqHmMUbOqGV2T6K3iW3TPfa4EbXEJ1RnuDyA + C646TIlZlScICK4q+6Zb02DU5dHURVhZNrWQFA6SqQ6wCziJSx42YLL36ZxiGjhUIi/Scrimm8go + g29YAY2/MuVYu21Rk+ZS+CExW5NnHBr+J6ykVfbUR7jfAcSf1uMmbwnKiX176XbBi6XX7YpuEOVy + 0Q3+lG6G/35/UUW7BuXcKRfdeB4mYeSMIrgABAbPl3SyAylApq2hYX6K96ZQVp4B6ZPT4affrmFG + OMonrNOzT+8/SgzC/55Na3CsfzrtvS9Jp4HH3s93wGazuhxXP4hc1uDqYSDeca2/jNCm01ZQMrvt + bC5zas2As0qxkSLrxgtCTGhSWTd6WFYBCaqhnUlGzu01xUaAgdzh6Vzl2ZiNwvHtLNer1D978wrN + iCfSV0S/npJhIOd6zW06574e/ZM0C8Z29TXdTIuseRydkB1OhxjRC99eKaet8mbVhhvws6BQg1gS + HoUs2yk7gqJKLFbPXhZySBenU5puugy26Rb3WGiCzgK7PXJemrrCrd8imZRPzV66RzgAjkxM+gF1 + sT0/DHj7t+8vOoR9HWP/EDcaY8IEDUtof6PR65YmaE65YoLGp1KbflXVpj3XL5ugn4eu54E2Hbok + yXAT9Gr++Ozs+Qna78fy+8V8mLWOkXNk32SQNPqrcpocncUIjqNW8VQKJxyk/3Yt4qU/rueeqim9 + ue0BmDfxk8R3vMqV+JDBgvFDs4LhSW9bsyPWCMsOKjm3o49asERDlx1vYYPMUeEhUciSstl7zdf3 + 5DlfsLEcmlhHw6CeRI2pvH4UJglczIMfuFsGuMtVDAVM2kAMmh9g/Stlv7y7RibWCCHwZ2GZfHty + mbzjFsdxorOhNfvuTwu3XB+qcBxOM2OuQC1wkw5+RnrdErWAU66gFuBTYvIXV5cVJu8EjlNGLRgz + eOoHbAQ/XVey+YsZ19xABIVvX+UcOlIh280fRelALm9keSlyZ559yeYchVI0JyPGfLW8H8M04L2J + Uq2ilw+fXZ6/uspPRkIoRrOflmaVUdth0RbzsDYZLEY+PGchLGF5sGMdiC/lSJmYysRL2dEtcrGe + V2+R+lxN80aJm7hpk3ZEw0oR+3LM9GHNpyXN2PQzssary/N8FpWhDIA1TWa7RZGYQHbCCgJD5LqN + +owbxaHvlQnX145PN1+q2lLiho2QCI4HmzMu4xoZW6TB5xqGYRV9qKAs52Pw1920AzzNBcKC4w7E + tHCDcN0UtigULdUVcf34zbJnzW2VFL7dOMHm3dmBViBobW7RvyYvh6PyAw5PGu/VL4vHvVhLG2Zh + dZH1QHZf8mlCdsOjiBDolVjX8THEsFYz2VwfN7Pp6luqYykfdpV7KrwwOWPOC8fvFmAoGlmHGMpO + zCBD8VT4qvKF8FVhGAHuuskKg6wLke2ZCDc9USGHTpjEiXsyaGoh41OvkHa5EXbIoxGDgPxaEUjU + kk+ImkTd9nvkkKtcDgdrFWCR0QdoCS9Oxfi6mXOIdyHJzklHAdx9hEyMI1hVcfY6UvMorYzPz3SG + 8llvISl9lSYoWhOmhPblljrM/nb7knsIPLm0Fe2UGQGX0rSff9kHF9KbwtJTlKYlkScHMiW/zVHg + Dn7ICzUVX0Ma53S2yDYKt7KRcpvtjHKdrq6Z69irVfS6lVolKJfUKnoqSjJcvgrKalXgRaVUp/jl + OIq8OGKjKApYJMI3N9wXtKyUIp/ueMWWG/h0btdPp9OZAIAqYLmGsjVCCygrr+Kfa1huTCFPudRJ + MefzW4/bQ+AfvqzIML8Nji/fHvtxEFUUHbwHao3cn2dLo7xercbDwqBa5LCEOsB+uaG4h1n5+7WL + yAyKiU1t5/XVyKh6xZLEicvduL986NxN2LkbUAYWGdWtwQ3RkCnlRkmb6hN5rhuWKZdCFPiyDBuX + pVb9hOu0UpBj8Ep414mgbr3bu6NVydfz6cSN1xxCAK+NLW5pmGY1WmMqTtX+zzvv/LXa+ghdt8rh + /rgVoHZidDxA7y2jMQ7wYEsNC+3hA7F9uJPAauNVeeQ3jveILdbpFsMIJKN2RB0Eu63WgTDuF+K8 + DZurizbYg5SXiPAnfUOKXWH7sc3+L0oIWa8EWKbZS3lL2tIFSdAVajXfWEVeXYepe1IBsGersgzI + Y0Ue1Vv3hZN0CchTbazVHNGFqeXQQwlGwLmMHnuHOxr3MC+ieofbht453+RsMMH/oI7iB05fOkqQ + lATcPLvfZPcHaAROxKgMjvyGDmd6f9NWaD3mubI1P2qWX9N4PP48O1u1/q5FGuRxCmV8a3yevHDC + bvGtoo1tfKvswohvFQ8FDLEeBS0kgIGeETI3sncLWa1cjUR2BUfN8zDb0uH5v1GVz7dmA3eAFiSD + DvpiLCx9tnQ9HL9UIOvnoMOe/iExDNC+7hNmy2W2OQbUccC5RlzJ6K6R37sTl6cjkpcNY0ncDfxG + tbG9bGQXxmUjHopSPbzYPcqDQig2qvS0/VGnD4pgEkY+HQlGZQ0x+2qZ6VaGY4Omj6JsX1yHkWH8 + rQ26bcUk5Ycid+Xth6s9wypFL+9j9PaZqvsPl1VycH8Fd7yYArzL26mP+N3utJ/akCTEhKPGwUIh + 43M2BK0ODyRmIt3k/Jw57xC1qgtOQNHIjuVonWg8p3iq0AIwzIC72z+e/W04XSFqh7qca54hUoDr + YQdXHnuFHgHGmY4biqJgHsWs86gWcdi6b9TQp9A42endan7Ado+9WN3bKs/75xYT9wAZdOQ/NtT6 + hGw/VqrgtTsCn0/gu3wNUtdeY7S1sMUcwrp6yNLtMH9YTT4fZ+kOmLDM7Ja4O7PpgeQkc0hkkZG4 + Q1l1et22yEhcLatOTwUswO83cU28TuJXq4y4WOrBRRCtiKeXIQP5sKBw7d//e3gjq4ecDj/s8piR + Iew6nQZYwGiTwXnecUyi+wyudKwfruHU8qn6+rCaZ2Ou4FEq0FZWyyKCB9mPsayuXjEqcQLPT8o2 + ZPTDU0Rak2USRNOkyTDNEIgoKptDhSUonW1KptWYlUyrReoA6AdOUk4dkCo01o5awEarxr9EzGuk + KQc3eJfNZ9/GDzCe9Ww5fsDf6mMitYHjEurWrDsE/cxhe83mMEG6nRQDR5bmPGpuMW4ehc2CRtFS + OS3aIQO+EYtQk4QbQkOXTCEXdkpY+/XiUtgK0gIOJZNbMVJmeV/DI1sMlLiEkpSYqK5j2U+grX+P + yn1Rc31TdBxGElWyMpHmNF2kiPDVWNb+aag2Z6AeYYjiZ4OGM5nhzuF1ruoOlM0K9FAQZV/rxrR8 + nyIF3q3m89kU7t1/yqQnmGg4u3jirDMKeq00EFIm5EXnqFVFobdaBQHT0KqOSHoEZo9N6q8FK3Go + I4l+XP1PHzAQx5T9M9ms8nz1Be5xtQ3xS6fZ6tujCunuPGt/acRUl0rKvb6Gs2wfRUCvW0l7gnJJ + 2qOnIorg7G9VYS+OSyXlopdjF2Mp2Mj1YxaIpNJ3hDiwonyI19AJXMbDi2X6t9OhqHOaD4GlTdA6 + 9K/Zep1txvPZZ6zssJ3dyTiA9J81STR9QV/AfGI5w+U+nz/sjtjMrizQlGI4uT4rRzkfAYbxUSQ6 + UOHY98O/1WkjAuxTzuoUZlWgXo+KyU2bp3dUwHlizsSSMvNUHG8uKmvDOViKvQ1v3uSptx7xwrkq + gVb4qM0i3KIW0sjE+pzOcvn7ADeWAu+PA2dwtD7fcNO2BlfxdeXcqW0j/GXVSZcJdRLObBd1El+3 + VCc55Yo6iU8lJPMZQmOVOIwXVtI/nkdhAjfkCDO2PAHJzK1HqzmMgRvc3qvgUE5TQCKnzK8wEJA8 + xnSbwDRVqNSkzKGxImzQ5qIojJOgEmXU1ketwujFSZPCaHSheAw/a5PNbE2aFq721WqOtaYpYqWk + RsKkViJl2mZwwNdGaVhwtsh0FxSWTtV5V5NbKCRsI/4H9fh89i+L0IpeygyGQga12Al7xWNcu33k + uomDx1F8OrlOsg5KHPvtEuQme9ZBr9thbRHlMtYWfypkkw+/VgEqgyApY209d5MkTLyRh7s32oO1 + NQf6X/9NsLY8dAHKMACXpw/8cXntuh2ETXrdakEF5dKC0lNa0NfnH9zKinpuUIpZ9V+OQ2RIbBQ6 + IHYKz+gNRu7Oi+v7Ec8AL4xTSectUqtMJiaLERElw5nIwQmGr6/fulySgX945RpGiOuzy8cq5ud/ + l/+P+4/x+WP+/8DFAWMQUt1kvuMZBEV9oxIb5xB6+akE7BLi8+9rLMlFu/T1ZOE2lFfeZ9zUyxhj + LUu3Ytgs88D3teNruMEix200eerdFVl1pbkuhZWykLnhP5qyAAXFQT9L37jsmrbSvqa1a3YKfXJ5 + OBN54mY6nwx/4A1ABFU071aTGYJBimFNM7iIuJjLT4nKFxewp33cykAjqN7KBsURXUcqQrdTB3wx + uaepZqatUUW+g0GtNf/huFAYC1zDOkzx2I8IrUXbIALujAdOW0XzDPoxvUVOzU4rc4XONBXUdhfe + YyVI9VOapzebji+j7Vz3TfyCud3C7WQj23g71YkRcCef0s2Z46bKxpvZ5EH59DUNd/2QLk1aWFw6 + jALhyScQQ5kQBwxrNoeWXRJmPS8gGIOHWb5FHfyd+6oAI7IM+/x3CNks5svh8/Xu98tzex2FcGh1 + +CupAMxn9/YKitzIQVEW7iLsXhWOt7EvCkddlGrC8YckO6bzNZO4qAQTRtPM5/UzLAFsrMEWlFuM + wy7ispXZR2EXvxpwUhwdNWYiRs6nJFBV6G01LdD+D3MuRg4TSaATIIrjysa3HFv9UHquAIzJt2P5 + WWiPE58sbWnrdPvwle+kPVgpGmH+7TArD+m4TG6fge17Y5Z/97MIjYJQNRIbrXO/kV/aC11snj14 + aXx0f1RX+SDDQCicFiwIujgt8HVLpwWnXHFa4FPiBa9ef6iokcxBlllyWvgR7E5n5Mdu7IsAN4mQ + yCMNZCbj7W46hB29uedXIilhr7JFVQczZXtTE3Mby6jFCYtZpRLy9cPKKMvS6JxAq7DToHY10C5B + M2cNhP04Yg3qo0FYqXMcw948CkZyOurOIPbXAGR6KJs2RKTU94WLcr9ZfYV1MiNbSng0+8ZcYPBa + DhUTdrp1kWEAzHyWP8h65bzP9Uo4C0T5PeOomEX4HDduwjCr71FnJYcsBy8V1rAcUYDhXOVaevkC + p1Bs2BJ6iokBbkylGzYZKOSHDaoHQXc4PYM/vz27qta0RqUd1UyhIDXPQKGLo7ArZwP1dhCTOMvD + kgY6Cxggh1HeqySIBmLGyly8ueMKS21Pb1RgNzU7tfUOVjQEwAp8B2fpnJZ2hCyJdEB2bxdXXJKo + 7HfNd6C/dwKASVEc1Z4DbUmLPBD7eGaHndKF5t4Bwq1Cko1pD+p7xXorrNhEY/+2PrDWTeDouQxj + Le8i+yZiBI8ziwROQsnXjVJAR3qMTDftkkXrlEkhL5LKn482Aa+bEUO0sVX+ZBeG8iceksC3Wd4L + j/D7/wN3wYD+i0959h9zEypNmNDpxXPxeWaJNiwnDxoHpcYUacGP4BxLaGJ9OJX534UwceZ0A58P + c52tt7tFG6U9iuCx2cR/FibvhwFlbjQAS1+nuZISrDqzDev4TpxR9XZ0IvN3KVtbrxxT0SsJUbBG + hep2NbU03YJCTrp1+ZhZWckc343VvIlTtZepexHhUtAN2gmMtXd27VAEAO7jDjTtE38Oo/9dMKZo + 2dP5YjVtt0TULkSH9vu+xppQm0kkptog1yzwOtQG4a/b1QYhyuXaIPypCLO6ua7EcbIgcSulQaIk + BIVmFGF+cNweK3G/Afr/JrESnhcHWqwEpWH9eglTZb+g9LrVggrKpQWlp7Sgf/zt94qNy43K1Vm9 + l8/dkCWuO3JD+KtY0Nc5RnViCr70Jaoa72tZuLXIBuTlr+VK6kp2qbIzWa9XlMIjqodC2xT+84iS + FtyQvNb4OIeVyGSXygeh84EpTITcZf/cHRjq8B3LwdiVujY2m5dUMMS00YZw4f5jUKyTnCTDJLHe + ZGOjy1Nkg6vJrIhvwGpp80cyZvLQFn1VP346Hz4bItTqNsuKzKsTbhTh6VZU3vVqg3j1GhAWj3aZ + bfKtln+xycTacWBiGs8AN6k8QSyI4j7qg9cx/GNp4hHLvmbThq37g3COPAr/f3/JPGZvSafXrbiM + oFziMvSUuMybX99Vrg3XKQXn+gyx2Z0oRmh21/VEQNanOte9jJVabT4/ZOlURkFtH9KtHpvzkOn6 + C+7HdZ7tpquHx/UDLAzZrGC7z/OVwZLqvNBA+d2HS07k3YdrwVbefH44MD1UhxeM/AjE8zJb6RQv + Va7DUU+8MFbXfyD/ZTvkf7kX4HcYar+F0yqsy292y/vZiWly98OyjXdkAKHXDqFmJUoGeNdvsBwz + J078wN8DA9gEXRiVyZqDFaQHb8p7q245OEdMh4vZEn6Rbh5R2kOiW8FYOOwdgcCJUDCpawLhhlgy + mJUMEf74B51qqG+il/179FQjzQv/Cjx2/t0i3yKHL5ggVvYAz6hisl7iERZII86RmglBCD9x3Ann + rsVS7TBSNRs08pqA9WrIjwpe79LxU8euYfQ8v2J4GRa1vN2/ockKBPS5MgaNFjLmBW0YeyKiuswR + Hkyum9Uc4E50Ao/PNW3NnE9bZ0O1HxYo1t34WYdufJA5wpb9eBiaIyUcNqA5djw431u0cCxDAGsz + En7W2EEyMsqYnqODCJv3E2hSwgyWoW8RUaInnefR9wJhYBWGmiJkvPvMSlGRSdCg2HM6QmKqNraQ + QbILAzFIPJR5WTjzV4Tnwf/94fpKpRbpqGT2b+o9u4EXx4kMQCQj82YflJC1XSwGbZ/v0u9PsfHQ + OoyiT41MaZyqxui/Dvg/xwVT08UrsH/0+ly0sj0M8LjSJzB1rHbq+oAzC8hAXfrmH0F5DzwBwZNZ + Jtp/l4rJnqsiodlrRBsLOoZCy1bWsdCqGzMYWj4WYGeP67gA9l2tH2bz2XKg/VvqFesM7pPp4xwt + WPNHuPRn+ZjfNMMZWhn45XMOxAZIkcdMJ2EyOD7PWa1DEBpU9gVM/wwIZuRhIY5hM38HF+oJOMc4 + mJDcop4ogcoiz94CQ69blkDllCslUPGpgNu6eFstgcohFswSqGMsNBJEI48hwxRFd3Zz4JKr9SNc + qGuu1pIF5jZbMC7fklqE6fy3mWFHeavMsm1+TFnmeQJ8bIb+ai7ACACu6X3VwFKuSG8YWuK4KcE6 + ThiwQ/epzLd1HlqhHE9Wy3/uhKrHTQbKfXq3y8uxbKAYmdYcrbCC+ILBVWkGCut36+SDFoIaJTQo + ypGJSO7TIYKqrFWZbLXWsEWNhc4HuJdU8idjFLUWUeKY6kHTkI+ZmL361ECsOe+8NCt2HMi28ZH5 + WO02Wir08vaSOV1ce/x1O9ceUS679vhTiaBwiX7ukm/P84KKbw94QxLGwCJAjxF33DUIBOQNkHvu + 0k2klZa7a4bPQufmhEsO9KIQzkfDhzTXBRcN4+WSBQQEB6r8pRulWmvRTX7K2c5DCgq0vAhqwVNP + QfFf0h7muGD8In7IvkG/U9S9sR5XWkRlX6/nblxbdDnnSHD0SZWPkUbS17vPMP3pSYkz+Y2h20GQ + IHs5EGhQknGZ48cyovaoSsmh58GmjCrx3oWoCSc33862OxG4KKYiK3XgBTZfrJWIke7++jxeBF6v + zOGguvn+hBtvwM+f8hM7ERNA8xVY8o4Gx3oKe6MZ/VCYaXQ0PeC8s1uCsOs0Cj+MybOmEzNnoouc + 2UeU52FgeD3kBhUaVHeIXNcNXRU92M6JbNbYcwLKVGqthW0tjx9cfJrswBbMpatJrwvhvcGqXpGp + mJzF3epiqjbWmYqiCzNTkR5KtRKjjNF6OFz7IHzpRq7zMRwRlfGfp/jxcOheb+4D470MHvAMRV+q + lKLGIW/L65Db5Na3M6CQwtmgr1WnjP2Wok9J4JS5CSxy97HFIUXyUinh4z/2MGiC1qhNELD5iqy+ + zab0B2jXPTK+m+3LrlCASxHCDZutD+OVL+DdV8vV6tvjfXYcxL/Dl2YGLxwBOtpLZGLikO1C9oSl + gHnQ9qGGCj9hcpOsaH8cPlOuI2pZPAD3+7EoB15YJIe/jTo6JIpG9unhopNSfjg9lSgHJqJBHcKB + osOTvwN3MDgmhbkLJr7SJyMZKuokfx+/6hIsyhvYhosS9WrAKH+uCoiG1ZBRP6qGjDoRsM8RYoJJ + 6M9Pj6+Gb9P7McLRFbGF+I8VDxdL52hAJb6aIcQ7COWfKbAMmo2G159Gw6vrEZfl339UsjvFCSE0 + vBEIBwwRXkA5mZyyuJ1ViKqTfB3fVjRCowm8T8s0Sdc53CeGUSfxvYYQnSSIXZZUwn8MwLYLK9y/ + OOrWhbViaEOp42CTUsLm3i5Iy2okGLtexzGXObhp7GNBN2r1LhETyN9vitIyaCpt+FMBQGXuShOO + sVQeoEq1CD9mhLLyy5B+jTw/IrT7SAalaGa7vQUl9wS69AQVHzixum9XFALc7XIMHIJFwJHgXXy/ + OWAcwLNIjC3xh263YkTyzJfZhiwJglEsuMzUt7vlSfBmeq0Q1TMYfDEoDuTOJfofhCtvowt/H2R6 + TxQ4t7pOOpJOKGTCivl3I+0zKqSb5ut0A19PsVtce6leAx1J/xio/j20aL8Yl8i7H1bMjF+mnOke + O9n9gKb1URatIEWJeYp5Pc57odpP+YDeFKdYZhYFrr3HmV63zSxCytXMInhKcv/Zza/VmP8oScqZ + RWPPSzwYg+c7LBHQW+cqUUhY8i/Obt4pmySX3hXsvIaTQSWhMKuaJ+BvxAOQGDKVAoOCfn1JYNAs + HlY5/P+GVxScSh9lKYsA6zfyMsyaqERF/2TRqLP8c9VnbXyBJsD5buSW4bqNwlEM5gwktIpvaLLC + vlHtUfChxWdpc1DyLUdxg8sHOgpC2H+dOhpxKEkexsgtSvdVZ3bchCkEHcIl51U7lFm+pvOspQqW + PnAbZ5UBaGH04jYiIJm9aAA5FOheKZ7eli5hZiwaWLSiEy1nSxr05UlIF0zto2fp59TYWSeIJbBb + 41EwjgGcE5EvM+HBAgjWxEuRfviEkLB0X0tUD6ySlsHf0hlnPDLX4AkOzACZRJHZ5QU/YR1zJxQA + e9vuNaD4WsvW+jYxUFRmy85+KI8xJkzgetS4jhlUWlRge5WFtrFAHQ0bACyHNA3FRhr4VEfdISKd + 1ZoNWpnbkF3tozoywrYFz7Mz5h2nssUkcMo9ZNflvkZPhCgo5Rm83bj6oV9/7SZMwYf5qO1YuN1M + 9FCtwEtUFe/wbdAx1LRoZF3HW3ZiFvIWT0UhzJsrUTR3oP3TaO0GPhogycEn4pRmSzRhrOZ91tD2 + AwEwpor4oG+ao6xhbMX1AZQP8F3VW9H7dX8dSHePRSZOmmnVxpVVypAfQuTJYtu05oyacNvbnAvt + jaRs574j2WYzGqPIFK0vERB6aLSvT/nWF5fMDe11L3rdrhoSUS5XQ+JPhc/l4tyvxPLhlVmuhjR2 + vZAF0cj14jAUgQVnhOEC5/f19ajIhZdTy6EOBbItD9kUxQoeyf2yWKTzWbocrpMIK65qpXb5yx/X + c58K9P5+N2XrIZl3ZmuepMqRCaRDRRb/Qm6vxaRn08KNw5eCly+7xm1AMq4c2x2XeGBnCLf57SP/ + M2+cUtAHVYabTvzGUL+SDlLR1DTB3cfrvaLL1B9EsyJU3BSF10iV38eVcLsgShrLZsShE0fJYQGG + Ggys74WJLBNcaFpnGupPyevBwrJXSqtG5SdukJSrUb2+Hiv4iaIuGdpB8ZrKFyVdquT1KelSQRCV + oWXXqzVJ8oYXJWFNkYpAx4uZXw5VbEgvR+WlaUD6GlRCHoVfYbM1Zi9wSvWVmzaHolegshfaVvsk + OmHAyp3oFog4TmAZ3VI/XzIQkuZZXQB7mDiNNc6CwIthhgb/LkxmwFmxKn7mxj6FzpDyYpMm35jp + HTB+/9kseItwVycuhTErzK18T3YTZXADYJPSHrHrW+AjFuf0FytI2SONBvykGbJr87fX1Y/t0HyP + wYAs7+1csGOdGwTJ4krYKmXOutgxsmCDlV5mrcT2IID3LSi3jCtxlYJrDxRk0az/ah2+Q5IqCSxj + zuTGxODOzs7kJWxfibsvL27gU+3THxhPd7THqzcHDpd3xFC6V6GOGPF0WpMc1mQMegBZWdNDQvqk + SsJEUT6HJfbpRfS6ZVE+TrlSlA+fkkpydXNdrcnnlMLAfP/lcxZjWMCIgcyFtjheTKGUmnWzmmKw + wLUM/3WFKH+Vb6ogbwcmCzK0W/pJJQVGmLzldq1dGyPqJ3JN4crAZtK60GCMKlHNpnRVSg/UcZEE + wcEbMV4eIIcBocsp3gowQcAthCw1ArGpPDn655SB8BHPgqviNCY5TA3gngtf1AcKX39/mLlrLiLd + 7eBWlqD7JG3dfLp+PVaJiUhbC/geISxKPrvlkF6b1e7+AY3XmrNBEPmQL931ALeWKmSHO9fpFiLe + hgfUgUyToJb4TiX3hRdytqcAsl5lFOl8az2UTkmSe24uSypd7DgHZU6Ks8UHY3Emv/+t1OOdEiXa + dx51ERRgCcnrsDtWgmhkDZUgOzGREsRTYu4UY4JI19uHGdaawvLx8zsMZc+GRSy7nrZyQBNjNBiW + DfcLGsRZAgqpvtIW9vBWAd4PEqWI8MQ0/dCKJA7ERW04udbY4T3lhTwJZkMH+/neKER7Wl1kavz2 + mDEtyCkbF7tp/OzmZHwzLu+nHjJaeuzz+yWEgKIQtVEbEcr5PS8zC+dwt0E4uN0ab2gO7paPYPLx + L/htaQ6vT+D7V7ZJm5J3ef9vLizrrt/Jso6vW1rWOeWKZR2fkhh781tFjGVJUsJLRsN6HMbeKIlk + JoOsB4Z2JgEuIWXKUV9Ix/nu/j7LEW9Xik8FWuQdbspVznfoAqc2zxSrw2PH5eebVY383BsOt8Xu + QTHz/N34t3fVDfTx7ALHDj+ujC1k2JpDFjbK2okXOxXr60P2rTQTOr3EY/vRlWHSbrkndZrxi56y + 1E719MUZWh0p5EbI0vgnYhh3w1wSgK/59jjH8eC5a9kxp0U9Csl4oIsk+f8McaAEsC4MlTA6kMbz + hjH2tPE4fq62++w23QDOEuOfiodKmUh9LMX5i0xR8BLXIWYdqLjII65nvqRcJjMX/pA01ANo7QGI + 7vFu5xnZvcWQJ1TY6HI8m/Jt5I6NjdSxkvIR5H52Q1Rf8c59Xt99xRT7Rclp753fuVqTbGStO8hO + TN1BPKVbdbq7na12+UD+NNohVFqceCL58tBSsD3EnlBK/dvV/H42TNfrdJNuLUXt7xt60YpQ5HP0 + gz/+du3Ejr3sRa9byV6Cckn2oqeiHuvHs2qtCo5IqJsQ3ZfjIAY9LBwFcGl4woT46YF8R/x6HFHN + 4hQurMK38hWkClHyOZvK61Mr5VZUktjAkCZrrahH7DO5yToXgJPTS+Vuzy5Bu7K30NLrVtMrKJem + l57S9L69emVOr89CNwlDEyPO814+h0s5dEaYo+Mq6RYkToxIyrgcakQsP2SIDQBDo4DJt4WPDOP4 + JRPNi+oSMDsk273drNla4vRIvDIpXOh69XIH5GFp81PDamkGx9bhVUvr4uTsw9Vwnn3J5kBC2Ec5 + cPv6FsQnWnj4d410rPiJGYnhNQU9mEVEjJgOfdOUqDXGnTSUJDm+MC9zWeAkLLQAuTNR+8NgH8XB + BwQUzLfZWq4Q4QniIoyvfj0rFhuX82EGoms+xOdTEILRcJIuaG1SlwzN548b3Ccybh3uXniHI+Py + dZV+8cmjRu+aKxFiTpSRmU6mdrGLbfl+k7L1L7j8ElKfR9+9HfNC12pH8yFVN9AAj5aq8+oELjIL + 5jsELrn8AmP9ksktWdra9/PdBKXL+Qw2SEPY9vcAa++vml8XSm3mVcclEA05QyWIyVr5phVKniSE + NAdqa4wY716E0Q8Sn6a7HtX9yMIFTb32XcCwCWD+UBnqSMis7rdqx6b9eDzK9kU/DrnYzdlaNTaH + UmAkQzoQSZ5z8JrTdDCUzEEEW06p50rxt7Hy9iGKlu/GDoHAKYPHMXH9vqpDy0DieeGwjjgzopE1 + zozsxMSZEU+FW4R8Wukk2z7OicWlC/R0IBMo+0M6vGv073kh872QhNckImi5dHO7Qm0cAQuPNLc4 + IbBEbPJxXB2cHTiWtWkduuLa/+8XV+Mn7O5wr8khMT8gMfHTSNYzM1W5LtKnyAigMMP+8BV8AZW2 + b6/1Aft1dFdPi+pdEKJaPhyIUqFI1yapj+THaH/seJZ6M+PEyozjv2LsBXM62nFkK2tDjurGtOTI + xwIv/+5BJn8/5MM3q91m+I7E6B0ysGyTIzbrYvFi+C5bwpg+rJCLr04GMHJe9wfPNk65UikeZYmW + 84eNN3x29eH9xZAFvp94TnJi8ETsm5uLQidCXuj5rsBjMOSoQjL8ihWaRcdNfKU5ZpVqiBM2Zala + tx0n+V7sJ2AuyT48qnY7W+8Xeg6zwcqtSfVQX1+zOD4fn1mbQWQDK0OIol4yhcjnomLh2e8meoHn + +V4c4cfpxpDo5TgIk9DxRvBDmUP+yDZAazJOpengr1/ZFm6a0C8q2waOqHgAN1iXigf4umXFA065 + UvEAnwr8iU9XrFrywEHPSqnkge95rjfyfReRQXhOpeLlMGpgPbBGIxMqDs1UKtUfWQM3A6AtQreA + odtPGBLfMDjisnSlblWcw5/eODxyVbEwASOxXbMqjoTZFvRTnCPTWhQkTU5LjOwPwgpAuPrKpvKS + 5v7RbTo9UdQsWi4wqjApp5uUcYnV5Jvo4GGjOcsY6JFkdcR13/Wc4B+DH7xlBny3q6IMbkBBkDBw + 3aVV+cqOlhuHu2ZL2rQBZWBrskDFo0xL6HBomZfJE3iDGCdj/xd89w7r1MoDnQG9mi2ioEyj4Bf7 + xJOAOTGXNXdLLCqkeUm6IHsfQKVFRw9Ebbqzq1fsDCstuV3EVtXIUmotOtGFVvWU7okMUY+hwXy2 + LqvZ8k+/1PzNIA9ip+fFlJx/bJADD2jsq65W4NIVfg3yZocrnL9ud4UT5fIVzp8Kh9/734LKDe7F + 1Rs88hgc71HkeZ4jHH78SCtjneFn+PXs6uyXC/iPnqXFr9xXs1VwXAKBHnEEowlcp4pjulk0goTi + FVXOSBg1EtUFOEMVKae3JsxphByqpwgDQ137l8lKKFEN+alxFFSGW0N8cMWjXb5kQ3Nd6uoW4d1X + 90GqUJFwj/D4NrxZd+stov7CykbjzxncnvEYx75aZxjFRLt7MpueDvl+4sFYmDE63+EZxWYeVWUe + PoMXYCfDf33CDMYGJ+SnFN4FOTI1rAG+oy5ez6OL99gEyph8JPwzCMryUFK49KSQrdq0VatLNGCM + HA1id9gmSQ5+jkgG3K+iiGN5YhUp9UUHW9BdN6ayfIcQ1mdN8mEqHnd1zVgHKD963YoPC8olPkxP + RfG464uKJhXwQtM6H46BD2NGvzuKAsazeJEPF0BmiOCTbb5oYgDBcMs0V+Fq9YIbDI+c7DZYZo6X + YxUgfoY4TaLybCukOFkKFQgi/zh75pyMz565J0NMLP+S3mPFM+hiNMwfVl9zygiHlkW5URH6kcqI + 3OU25dnfyLP4yJf5LudQp1J4IagdCfr3YTOtKmsFanvJn9+MMhfHvlfNOhNVaWcLXLrCi1iHXe27 + rBG/oYl8vlw1YIGDcsPKHL6emro6aAErQ9UWycSvLgUM6AgOgv5g7yaa0ZLKkJPE4XtIlnc5NbeO + VuQO3mfxTbHL4KKfz6vVdE67bIgBHhd5I4QgmXB7n0/QSAotlgDsi+0JX/L+0w3jqV0ZjxEDifPm + 9zEfGucNwQt9pJfG3xB+cZYLlsQfazP/TNIZFTRGisCJNft3JJpd40dgvALPEkTXEYJaZ8Pgv8bw + Os/4M0bc46DoTmqbWRjE60835IH/HhNlXUy6PZXIJwcy35RjGVUlyGHSub0W3AtgeJdCFPIb+qow + peiFZJEunfD9hune0t37BBo/GCZcygZUNvLNpePF9rIBvW4lGwjKJdmAnpJs8MfVJ1M2YL7HYn4m + dUM5CAcBiAzBKAiSWIgG12k+ns9AcieuSxECo4ou8Pp6vF2NKXyWB40JJp9nk03G/TxKM5B7qojc + UUGF1+ntMMsnKKvKHfhhk4frimABu2qppRj/sd6yNfpVZat7YG/wgvihO/s4B3j/HtSIbOuux/Bf + f30io0aRTFk8oG+qVSwd1hzz50R+5MSRJdZUvd4axXbkCxnhbTPIE2Zp+A0258T3POaWwwhfX+Nd + Qd9fq1nCOY+bcm/qSR5mytWqA4fwGQxU1X+LbTnAc6uQd+MgPMxe/CToQTG5EPU9IpCECsAAg/h+ + eKAwTkQeP3SLcE1ZC8mR3Jj1oJVtUZIu3fv6zmktfd1RC+4JZYiFjPBr2qf1iQk2xlA6FJ8hPxLW + DIV/Akrem0XRvDp+zPRMDAlOdbub1l+8DVGQyJkLKt3ghmzbPknplo7ehT8XjFP/sKf2iTtPAZ7a + r8iauJUYTGF+2s86+wJoCsQIDpR0RfHVD+8/vcAgHWvPDzWw8/oI4prHh56QpJtu16GBkPpMqmTh + yYD+Tw42VNEPXVwn/HXr6Ica1wl/KuCW3pVypbzIC90wDqrRD64TOSPf41WyeOTpJkOejDo8pWUS + 4IiAWHpIe0+C0Uuy1XZdn7sShk0yZxQ4bhCXkTGRMkhQ83RphIPms3ykdyykNjMR3I329TW4qh37 + SGTf/guLMDxwy9GXbJPLlCRsky5FaXAa4Ppxs/sCT0bDrw+zyQMKgikJmDJ3vPE75NgHuPpFMEBI + GdQhORc103cP1X0TJ+I3Am7vlKcYF+Tv4N8gNPbSC7Hiy3HDx38/0u1hfd85RWIgzgHx5/az021a + OlDde4WwUMQezh+PcEdTRdMPl8C17HkqvW7FUwXlEk+lp8RTP529qYBqewEWo9dZasBZqu8BSw0i + Yen49Ob9+wuVF/ksDIafL9ITU6esJgKZ2ULk7KA14qz4U3pXxa3uCOjMWMJ8NwortoRSphL5gOkz + aooYQRdhiz0hjgNWCRHb972iz4b4sZI/Ww/00rtTzL8m8wqLyurpViWvRLivg0G/qzrA7aVg7IKY + JwmGXlDo0qpRR33aozy5llS0EZUHVDlKXTsIw+ogO2e3tciPAWNkKTW64J6/TDsX3aPDng4Dq121 + CMOkZsbqTtlewzaeBWlE7nKerOZfMl8qJ/fhGkSdDsyXv27HfIlymfnyp0Kgff2JVeN5vaQczwvs + N4rdkCWjKMYsMWLA7x7XK7rL4ft+u34jrbKLDfQwecKs7q78uEEw/okivXmG4FEFzbtISEqlSgj8 + 6+bq1dUr95ULWlmn2juqkWXtnaITvfaOekq76uL3N0mSFG/k62wyu4MTT3+QArDUnD0+B41vy9dE + q7DT21Gnt2OemJNE0QtHdIP1gjw/5sou/a59q/6A+YSs4ouW9O9Y/ttjLCj+jamFPzRzmJSTL+lk + t7KumLWv0T6r1ncuVtSPDeso5Jp2BSumotfZN8TO4gl/Ux6sV5NQvaRY7H3qxI8PJRNcKXSKemBn + HhymjuXAeBv7amDURakYGH8oYl5RBlBHPwXevcpRl51mqJWXwpBFRlwSOZHvRSeDoxrr4+PlxryA + yo15VDX9mDgIJ/SpGhwf4WI1xQE2pBvYA3E6VGdhe9DIfgbo1B9S/l217wq2enxFdKxhxy1NNTvz + 4OrUhKuNm2DcuvX7gH7tqxT2z1VpOhRpGedw/t1upnnZxI4Bqg40/iefiXSMNazaQPx3ucWUXoQa + dAbkTKEAPA42OkSHO6FGpNvJQ4vCaA8/IK85uLX5qairFdsYL2bTeE9uliibwz/vDgbHb8xuyVmW + otoTFgvEihBJ4zLt5TKBQ9eNCTZS0nptXF4+Qb4IvHUsEi8LZo79UTC+neXyby0+uboLIHbJUzmf + rQ8NG/MclyLQJvN0+7Bpc8lZV+4EUZ2vWlEa6HCakjEUUPNvD4EZeNsRZeBtLcjAW4kxgAxi87Ca + psjPKb5H1Er9/foD03FpsuW/oLcqerzsADWeyBPlVBPark8D8t4X6q3n+mZh1t1mIWOJdEImesj3 + UO87NHs6IPjecHKPAqD1XZdiaBr24xEiiDyRnjyRHjsDTd7pdCBFG9vzKLswjqN4KMM/l8CnVfS8 + 3Jv6ubN4Re8LbQ5O7PGTeVwoVseT8OcoeGAVhGHbvYe1cbS7tsiw7GGj+lKm9F95HYuUqDa2UqXs + whArxUPaqDtEN92sHx7hrkWIatALOEjWt8d5ObW3w6sP2YK5XEQF/kyXSUSXiaLQh387FNYk6K5/ + yK3utP9t1ek+WUS/qrkv8LD27N0+gL2O7WkPHNcRUQYFEYqwFeMZHxOyEAbqvn0DFyfriCooG1nf + uLIT88oVT7Ws+FIW6uB+jsnZWIcGmownq+U/d/dwS46zbxokBk7D2e3EHaT4H27dT+imPTbeO3Lo + 6JHBPd0cEDMMap8XluXwLQjiHX3lQeDEgfqWau5uF352pBshMuekazysdfMncx/8DGZ6bvfpq8zp + sTVGYWsRJMs32Lw8HX9SAZ45gnPhicQm1qe5uZ+GU/YDiqS2Uum9WqrSxEI3rBkepoXv1vOMqgMY + HGKx+kIWJKzns7vNYf4m1gCP8roIlTPJjZOOILRFI2t3kuzE9CeJpwqU0XsiUMZna4EIcoL4jH4Z + nxExGT0uHcPEkAE3YXzPlBATu4N0H0Bpz/11XOlxB+5PEWtJ6q0ORVAl1QJh/rSwlfKOZB5h0vLv + nc4wWMd6zn4M9OX3lKjVLH1f6MwwUswjYnHX6BjVyJp5yE5M5iGeEvP4110uEF25y+sOvinbyE0+ + qA1O+19soivJi9XE51wgCWLiAlEgsIEzDCRcZlrUYp1RZ7rb8DoQ4hpUuZeqPOfdrn77NrpqfAq3 + W6AnEy2Ge+yyTXQiOAaczmy74nAFBfeYPGSTz+vVrC4Qs4Wc30AuX8OGmmtoAW30W7gLc7y2KgN4 + jNNypPJhpRgQWLXKx7qvYUsuYBBTElzDx+A0WnnwflQA6Xf33/eIehBGfOwXB4cC/Eyl2uDg8dvw + 7PfxBtN14GV+WXbxCvbmi6cw3d+uWdIh74xetwrTFZRLYbr0lJj+5furKmRfFJVqdEUvx5jSl3gj + HLQn/Pfvtbj5+QwYlNhmlTqll7N1Faav1/pJNa4gI/8gNvEO3n+40lH6Ys9PQr+cf3aXboFM+YuM + rIPQawKalSQHVzWIeUYOmIAhmKyE30ibSVlKS9nlMMMdJfj5zJhwhSqLq6nyyCLX7bESJwLT8UOs + d3wUOh1SjCRFAdV3lEX6xwC49uuRDHiY7nC2wXv5iKAjvzDx3R1XNCEhL6dcJKUi/qAwJiWvB56a + qbGoYi0hIg+myDeBz2mO4OdRZCWPT6Sg7yYYbxl0kvNFG1sxX3ZhSPniYbNoP3nY8GRQhG5YrKbZ + nCRwymcR6VIGeYwYBYVJRIx6XAuqJVKZKfsAF5/UsYdZvkXLWPYNJgtGfQDJ71oBhoUBWaRbJ/Ww + j+hHAupLeIlkyQA37FBglF63TJrnlCtJ8/iUhJffrs+rwotTxrkMX45ZEMZBPGJB5Ae+WeDdAO3h + WtiXWXo7m/O9SElHyzl02UvSUZg4QcKOTzrS6fycSUeB6/jfL+noWB1Dbmkmi7r6/t871DORDWwL + uxL1amlX/py29s3VeWQCQjA3dEESr1Z3DaLAZaMg4s5a3No3xDU4RAG/BXZfZh4bDaUFl2tym2yd + ztQdILd6OodBfB2n1c3+F6yB4kRBHBYoIJEKgGTh6/gF62SSKxpZF5WTnZhF5cRTWsl8N5nMMJl/ + fL46AxHsngelUCUKcTGblZFsGpi9w13ueqIecugkIs11Jv37UtJvsJN3qPbWlXR7lIwwwdP3Ps75 + 51poON8tkvP7KCRdglSOrVDhg/SRFHNe2mMWxe16Q0fqS9nC+lDcFPTpajiZbTc9qDeOLzz5tZPU + R0hORFUf6w/62cXVGN1iMKknR3xB2NzD2x56OCrs9ghoKiWix7RGe1elVfxVwblhDJzU63RXUBPb + m0J0YNwT9IxkhXyyFI6bT+n2Am53/CrKHB5Ungxv4O0BNqFSJj7303hY5xknoGpWxwOGXHCNx+KX + dEn/INPCrLPL0wsCOrzSF6BHADXF32ff1vgHJLNOt5iW+n10ugGFPvDNiqk+0wzuLYWMXKoXyUHK + cTMG/zUWxSMXq+WKF5bpGFkQEUzwxSVLOqhW9LqVDCoolyRQekp76vc3F25ZtUKB05Q+UbViceSA + auWyIBHy5+8qKQWGjbU7pCNLhhK89kWRjslqtebo46KWQFoktIxrMjxes5OR8Y5yMekvuSdUDER7 + sXDVCzb22jvBDaeibbRXcR9iRAgf1ukwneeroRRV8yFWoV8OX3tCYP79bto7vFr/aBTFx9VMWD1Y + W+w7FYO5jqnjxEkcJSWZvOYsG+byJCgT3UOwWOlqPW7pyy3b5ANWtsnXjnzw77BLB3iMpbYDYj4V + uwkoDMtmcg+OYu+nj0anfhIIeOD9l0djcFwQmjlWcqgNcTz1xr5uNFqiHgNzvtrkagsZ6TsZXYBN + uOYyl7bwwW6Q4x3Gnu8HZo7kuDK7nQr7RDw8/I+313DX2d/K9LrVrSwol25leioK+7y+qkAqMR6l + qt/KCS+w5mNhH89NPJG+dZvNV8v7HI+K4jkr2BtCLMSADbnwXOIzK37lxAqLyOrVEhqlCxBxsE75 + s4/vnvknz56fDJ8P4Z/eyckLWWcnW1eB9LuUaNProTI/Dh3mVe7JTiXfTN9vAmwxjCtXpvqy2jpQ + hskrYIktfXWxVcmXqsolNmMenEkyskjd6fCpl9l/fnKqC+QztLtNM6qXupwhXHtW8PYtBuqodwvl + YoA7WV5MoBR4PSQm8FnDJjWT+3SEmq6XRLhg1ZTstrPmINHaMKWYXGA1uDt/Csydnvg4P2DV1Tii + UFuvhFv1uFBZlGMn6BghXjSytijLTkyLsngqLMrZZgbK+cMmW3HYXLkynyuQQQN69ZfGd6/Wn0Ne + G/VvkRe+cFxhS44p/DsEDqUvvYYzLLTjTV1Ke0er8hGdtMeIMyroeHwJiMRjfIgP2bcVz2g+3kb9 + 88Yw/rxJk71Zn/2QvOelw3AwbHNkpBJUztxe8vaW46O7av+SmAyIpRNzcFlOu/wt+w13bDYYC0Ua + xVHT1EdklrxcKHj0b5fM7YDxSq9bqSOCckkdoacC4/XVTcVI6HoI1KbHX7gvxzBYkKpGcBVxuaIc + PLrKF6tCNhxxSYMq/aJQ+e63t4xbokGKkvaWbFq5uT6cXf16AoJnPsFqQaL6wW3eg3kuiUCOCSvh + FtCh7Ly8JwxTWuQ0FcaKQteP4jrCY0ERPuYOa7HXkw6cyCCt2bkSnGtJulA7WtCmdMKITtVgqYsS + n0Vu2VAnzWDkNsClkJkcuLbiKGIJznI5UQwwtJkd1RPSQ0KYmlZkK9QUgXAitzE6t560hRRRqk22 + b2EH1T3C9SvYfo9YJmI9+7LCIKwNZhyLchHyA/Gz6APHhvghPnU0LI4CKWB59gXOKW+Pzheyh52q + vmQf8qAB+U+PTEq55MoZ4IlWalkY+uLqVBBfpTVWu7J5sa1teqCwxOqGllnlmFpnuavsjYdHCI21 + 9dOeSgg9hnCz5ZTElwd4tpFbRZlRrcn0Al+niLmUCd1+tK3W4kBSTUo8FmPhe7I+68g4OyNeW1gh + Fln3ETEyNnwcg6KJ8JXz4Tpbcww7oMYTw1E6A4V/27jaLYlTocje0U3lMI4ZJbR30eV/ECZ04pkO + 49vddH9+ptY6qLReZpPPVs095jNam3T7yh7hvz9dI6CtQfsB9gDGcY0/jmkv2ImQTYfuZ9Nj9sSk + 0N3QInLZf3jEjHKF28cNocceN0SUxcQQm4W3Csn2Gmz9FHL7q+k9iQQbi4KoY+K0amMLNia7MMDG + xEMBubDdCo2Gx6Nhw+If25RAbX0WHwY/WYTQaRf4AQiWrWiTPcXkyBvHjXyfRIwpWb5R0viG/OtI + rzIcCMYpi+/lHoVuVrljItJ7Dsika5nmpr4k+tMhC/oCd1fu1F7sS/Y091wlxG/ErjnKi9xPMp1P + GcM4mhVtuMMH5SK0Oj8dhMH3AxN4YkrgubpmXYrR0+tWBiRBuWRAoqfKn+2VDUgBL0GgG5Dil+OY + OUkUj2JGyLjIbslrkyrXJwrkD7P7B9iAa9CRMHV3OR3OV1+HcAsjxMHj6TB/WH3Niy1tZtZyTzVv + BP9y14X/2vuP//p7+a9tFvHP4eEelvcnurw9aVuBK8j9j8v7r+jy/vN6q2Mm0CjcuEN8E71uiUbB + KVfQKPCpcChcXlUcCn4chBU0itgP3TAcxaDMuaKYzus8x7LzvMggKUw8WNPk8Wg342HauSzXm24y + CYk8Wz7MboGXbPLT4TwDNsGTQIGfLHfzOd+vW8EPJJ9N5wjPw+0CuBNJYNdYB4bQA2vKin4JyV6O + 8MP95Orh8kp6K+brg70VRr1LP4mjyo1Q/sgml0JiWv4Lrm0SLqzm3P5VbxtrL+AJc6VgocxIYYxb + aw3iFSMZHLPoKlZRgd3BuksVWoT6np9/Gj6DY4DC6JLip7cp3ENoPD+/GrMTaRXat2OO3yQDPBwq + vTZ2ooGYKM4wrRehpcKnuR7WBpXvOYY2U0eSkLm8Ce/q+FAOtwpaqwbbUYZ3XdK5MZuEa3+3M7wy + s1oQK2SW2Vf4DXeR2FTwKSn8B6Yj76EMjE37urnvK8jLQ1ghbFGcylu4Pn65h9suHcuSvVYYTfI2 + cyXuhue+i3l4UhfgDdnIFnlDdWJAb8inIi9mvmY0S1qC1jKbTuPi6UdQPeDZmkM2O25IkM2OANmQ + cwNcEZp181IFTkFixffNPkvTnhY2UVTkPllks+4lkliYuMa+yneLVVd/FxIJzZnrRObnDbXquyx9 + 7FKBPfI1HFWkTThsHnOc8WzMl+NYsv1hGSdRzMf38fXFRVxUkVMn0N6jIDmNJ1HcnOTvXVDc4HVb + FDekXEVxg6ckN7//eBVUDCk+Z6mm4Pw8cAM3ikeBG3MzG0dCqamaNaxUzQrGGlDzCPOk0/V29c90 + WRZXKEVqqfszYUqYqN40qsQjpMNPbz8On/F7WQCXL7Pt19Xm88l4uxpn6QZkbMy+5NekcOGemg5s + YaSepCBG5aXIATQTcC81r0mGQgUXtt8v10HVsFNbxuwZepJ3wze75f3sRJdTefWzplw8WB3fieOK + rUdpbHfyCjSz+9ym7L4kCB0vTspyvSp0hhJVw3o1RCb5fpOsb/SlRH0Oj8NBiQ1HP5poNPHFDCTy + o4YYnPoupllLyA0LvVJy374R6wX6jNidODHH9baInIriOI7CfwyutPk0zoZxEMwBw/Za7ObbGcj6 + tdXouIZRBL7VbPon2fOnUnHJ6SziisEG4VuDzmU+4DxE6RehF/RRK+LoQokscCiiQ7lrDxsJ2hu1 + GoErWhB0SlV3nM1dexS9eimDHLVV9tDX1f8E0RlHlH9UilCQcCnzC/COCaEDW304d2P5NHp1MkF4 + 3XdiD3ZL+UIEr6sx6dUzW6slAMJJI+H2a/in6GnfrD1Bl09d7wKWmrnNwx4XIz54MbALr3k/9bHs + UjwlMIk31w5z7cVTet1KPBWUS+IpPRVgEq+uQhPLzPdYHKCeoOetxi+f4xLGbMTC2Me6qyievntc + rwgTFhjLb9dvJFTZ3QY6+PrvAVTGEice9KKSgzocV2xY77oRCUC0Fen3LYY+QlHoeAAHP4cfRx6d + QIYahX7wgnUyIak2tqFGsgsj1Eg8lLl7KhQDOMFyUP5dp+IGHhykeHAEBuNBFgw1dTz18Y9X1yzq + AGFDr1txHUG5xHXoKXGdj1eXfkknZkmI4QM60/FfjoMIY9wQQRHYsnAmgbwqPcgb5D27+W7BxWYZ + nl72K494PRpUbGWcKDkQphM/pqiC3++mbE3eZ5jt1T3oTzAXGmREkdSSy2SArHEciCj7BZGF4LUF + L3D0kEkjBioNCGc6xQMgIqWIa35cz/0Ky6zvxHQ3xV6jnhv5uFfqsWtgorLll2y+Wmfj+m6E2qN3 + 57ssChq7A3nRdSrerb649evrMZyC1WRm5BjVY82A9Ot5Ddotw5LTsYMuqr/aVhrgwZI3k+NFfi+B + DP2oeXxJsEn7OnaHnIE7z+UXJ68jc+Do4PqmYjRwN2E4gwi3NL75qCKGTkwK0cUqZc66A5rMT1jx + RNSqrd+2lsptJxL7hpM00zpcVDlC0sHbLFALdHDRSM93SAMn/jLmV8SYOMzZ2Zksqtdl63AGro/M + 8g7Yq/D3AfIcF5W34ndYa7UbIr9sZF15S3ZiVt4ST58ClMH1Bmv+X/QgRknyHziGowK/DxODudb2 + H8iB7l3tjfN76lyj/+AO7AkTJNyBd9cu8+ztSfS6lWYnKJc0O3pKmt2by98qdR+gG1Oz852XzwMv + YX4ywqqkftBuTnrYAP1/E3MSjDfmG0NYl9wgJIZFIu7dfDWZ7DoxagWiHyfkDL904qRDECl/3c4Z + TpTLznD+lHbHu7PLpOIL96u+8DEqHUk0YoGnjI1XskRCrTFLi/5Lh1olndPhCvQnPWR8OdlgMEE+ + zNP5FlSqOZw4XAZgUqvd/YN6YVoKBETN6/XHMzZ89jF9/svl7Dn8HdgLpVntFusTnuqLUYzAIPk/ + p7N8s6NRTjPZ6+0KgyDNrlHT46S1Hmnvv0vnSWXjW0HP6u7XIAkjr7zrVXhFNeSv3VxoVG+LnHL1 + ttpu63FocRZqwGhBdm5Ch6gnao5Xq5lZG9tqOJu9sNkJTl0N/r023gDPqPI1+wKX1guKK0rNQLfL + G2gEeyzTIyx/osHRdu2AEF/bd0NLgKutwYFv0LKlXt/MewlZibxPrMN3LoAhapceWXAUOEbNVjrM + JaHRpMoOh7I065X/uep8JY4EMQyis+gFY50wDEUbWwhD2YWBYCge0u2+mK1F3NrfLzDzKksVovSg + 8mT4Ad4eYBOOTeiLmlRHxaV+h2rHvXXRGnGdUNj+p9+u6yFSmjWxHwcH4iGeohj1ObOH5Di25Mjx + ZqdEZFddsiA571BbTDawFI4F9Yp4TM/pCJ2dXTBTf2IecxMWRzUisuu5ICEHjt+gPqFMswV+SCHk + WPMC1JPHF8PhTZYN37x+dTO8zLa8BMb/Ax/k/GPox9FLj429UCJE/7Gaw+gmdUXHjiuk8HMqX1Ho + RoMfcIKkhpa4wjPrBG4Xzyy+bumZ5ZQrnll8Shvw+vXbcpofSzjUUskz63lxGDsjz4NT75p1G4Ef + yqmXawprtcky+H2+W4GINNGLDTx7++bqZCz4pAKpX8FKcteZcHoVc8oDk9dImIf5SIQL2rC3G/iW + XgpC/rTbtXWaC3zGFCY7/bKarr7JMHAOeCMnWKRkc0clCDPz3RTm+irfuuTG/GOy5t7op121wfWb + G4U17qCt44DTh4EpDov53fPmw8efAUrCd2PhTeQseKIlQR50QXnKL+KHL5jTzSvCm1j7RKgD0yPC + n9EZv0vzyWwC8sgAJTT+abCLdmshDsHHcA30w+4+iAYL/l/0dTiJT7WsfAL9Qu+pFJ9gZ2FcNswJ + bsvVZqGkqrQQo7BBV++ZI2JQYcgral9Qt1PRAqq3hvp2qkHw3B/ni/k5s5b6A3VWanJCkAE8NyHf + bUDrOgJK51CXrLpc/QLx/W3YMWSsaGSP+C46KSG+01O6bF+5KNqNhdJEv4mg/4GKi1ghuzBJosIU + uMxSYWpCg9rftPZMdGTOcvZVvJ7nOS8ct1O4HjWxjdYTHRjBevSM5hmOzwST3zaYbl5SSnV/7nU6 + jaTUPLx+WEeDDf4HUXAEO3NCl0IPCj/iOPs2mQm8EV7Ft4tu2S/al+eHfjO53//bamjkfHD2fWWj + ttcKgNeFD/YVY5BQ9OOv104S2fvI6HUrGVtQLsnY9FRAaZz/WikV5PKyWbqK5718HnpOFMcjdJJ4 + AlpJOOvhQM7Xj5sdggwPZdVe4YYUiBWTz9XiPpJ9myBGbgXmuST0tnQq4yDOPl2dNKSyhcxtMLG7 + YZy4rlMSje/nuwmMtzZpLYSTVx7s4Grf8EbDz9mjrO8G+6bUw0jUq0W5lfK7NpnYqTwwDShh2gKS + BbGdl6GlZpxOrlCGZK6XMjPyInITOH6iRB0PUNPC9UbDQmwCDf3DZCFQrs7TbbwecXF6K9LRhDAN + qzfA/aPCz2MnEPWh+VkqT15HE7o1lcZLpZfqzD+whAQVx9u/4w8O8dDTVzocKSuJqz/q3+kjmuzs + PwvAap9KIQvFtp4/HkWErKxinsdHEYscUnDWCN2eHX585N0aSRHb9d55L9Ck30HCFm1sBWzZhSFf + i4d0Vz7oBlHpiJigALTBJF+43+61P+g0QcCGDwooRcNh5CqjXODDIjlBbCbOSkTS9TqFK8Ee4dSy + 8R4drhHBbblajv8UKG5yo4kCK9eg5HcosMJftyuwQpTLBVb4U6G7odu8LMT5iVMpsOLHXhx5Iz+G + q8VpD3T65wbo1xgv/4qBTl6UgBCjFpRikz5ce10yIel1qwUVlEsLSk9pQV9fljIhYUE9XpJBX9Dg + 5fM4iX3HH8UJyK4icu01wl5ygB6VJwJndKvK5JxdYUlgqSTBU9VAwp7NMKckn31TgErFWgsiVZ/2 + A6wCCbWnIEj+392MHx4YRDEczaBCx07idj7M8u1K1S6oDz3km/L1fB1WdqQp5mbUnREUQ19qbE/H + bU5UQjACp4KfISJ39vVWp3awMPHLkUkGTp3RpRae1BEozwwmCpqCiVR3gxuxvvomkPOlbQZjPRer + KYY1qHF9Xd0in6brOp+h5R5VBNghnTbCALe8PI9+4v6ZQn2CGid8Nzg7a1k09EXEChIzlsKWhEfQ + yFox6s2iX5yrpzT+el5AHvpiNxWcp4Of/3jjDXB9aUVk7DVzXjhht7xf1crWllh0Y5gT1WNi/9Vd + 9iwrTh4d+BPdtjh8dvXh/cUQC0I7XpicDKoUsjJzkIRgGda+Yag0B4rpxUlMfux/38O8p3qT9Yn+ + T8XPp3EOHchUbL/pQPJtSofrMOmFddm51xm2Ujay9cSqTgxfrHxaDztwM8094esnCEuDEDpigyQQ + nIEwcyYPMOx0y6F24SRk8+NyavpgFvYOwYBSGaUsO81aK3FZHWWQ8eNamm15ltbT40SEziGTL4vZ + P+L0fncECddxlSuVXXjdAhJUG2tHqujC9KPSQzoFy9ldLh11A+MXvT06TROZchmYQJgHW6vlfB5t + 9ebB1THZK8kbgY64Q3E+fcqu5ucOMz0PNxF6aCTkYtvjZjZdfUsLxK7DjISuUwSzMCfoHM1CbazD + WUQXZjwLPaTNo2P+mVzr2bvnJ+MzCc0+/JJOdljYsrBZGc7is/9+XZHUrtMvzHhrAw+4AzlyApn7 + a2ArSApwWKGX+TEZnpFDoTZq3Jjs21136UzHdoC+6yce3RWFV3q62dmXC/UDjw4MetAKTEYgQ2Mt + ATXsNXCCgpK45RGBIjLBkg796Wp/ekziY+Q+huwJ31TL1WwCrsVmc8kjY5w3KxWyGwUbYQF2n2PU + K5TUDlJtCQvu8toJY3sLKL1uZQEVlEsWUHoqcnf/+O+oYgF1klLouf/yuRvBMiYj+OGH/t7Y35Fp + k8p3my+zLzAHuzVa876tV/CEH7Vf2fDzbD7Hcj4YtGrisYr7FKcVraFecDPccIVwM1vghxYyJpJC + xzV32OO7rnPDbZ5udHPmQoNsvFFIMbyFBB5+8/glqs+2XM3L+ZaR51iFDnfN2/x+IcjajMKq4SSp + qTGRlBKnyarpos/BT+qKfZgGzBSPj7xYWUxrd3rgxhjgRlV2S2BDXHD3Q5LAjK5ubn6nL+LHD07H + BOR64melPTB8Jt8dDYMXYoSj4aV4eNLBXuiFVD+Ctqea5K5WEar6dBCRH3cPFeoNPzK299C+Zu3q + SKAkyshJXjDWTTGXjaxlStmJKVSKp8RK18t7EW2opQQrV/P7j29l/L2ML7yCBgNsxcXDJODFJUDD + DUta+pHWKk119nQ1tw/F2a2hqDuWjlefn2ZLP00tT2WICgnC6Xo99X45n2/CVtPC+1/e/1c73U6m + 9D3VIPrIZfUCJxTo2NuHR4plk18IcvRsumvRE611hX4SZl2Hgj//dglyaIe4Af66XdwAUS7HDfCn + IsHqClhFNXCgHP2JgQMs8qNo5LPEjyJTyjLuTR5e/2WW3s7mhdv2j3/Ooc9qLMEB0kyYOEHCjpdm + dDqFNHOtZZKbyBIld7FW7cwgVfhuS1dlCefBHJjmCZbUNCEmL5y0v3tjDeIhISlJlYYqSagS+EoT + cigIVKrzWOxqgVUaBIWir9NhOs9XKmwARTEfOlM9IRlj2WcgtqKQtMH8LVRUpRZ3yuczH8rOVX2B + 9Q6O1WwlMww+/nalgB68wOdFy3AJuexSDI8PV06I6JAftEaG2iQYOcILiqqf2IfcyoW20C/pPbey + vP90w3i0e8aDnLKSBKckM/5llz9AunN84kSNH6FrH1wYzYbBfyG6XlUe7XFQsbNvZmEQrz/dkDn+ + KSfqmDreB0iPHuivfMuWj6ZtYwGLpxqOSlse/jTZbfJVjZOxgo4RkQx03YaOUffpVg3bRe+Dsujl + tcjjNv94i2WL7K9Fet3qWhSUS9ciPaVr8fzyVSX6igV+Ke84eTmOnMAL2ShCxFaBCC3LFSEoySZb + z6V4PMWo1vshbIuHIi/ifH5bjWfqLcJu8oi5kZp3qwQMqOpZNgQtBV5sXFOvr0aavh17LEmcuHTv + vWW/3NAJnsnLB1Fd+PlH0QDHlJUC82IzJaMosVPfBZwBke7JJ1mlQJh3rFuquPT2vT74JAI5JyxT + LsFo8OkbNk5fbYIJetUqOSGvqLaZIKhf0+275JT64Oka59OJG685DD/FGQw1MCEYrTEVp8rexYOx + jDxWuRz5Gk7nHCin6JUW0NHzW08kfcxvMeV6scqBOwDvmSJbFaPjFu63bIDHRN3Zns8GYjXxvNvt + gwpjaM5H4ysquGP98nchFjk+aU8tY2lHGq0tbSBPt+XXNroSBAhjQ6XU8qaxpRswARHJxzSdfZnV + o8EcbsVprtUQCA9/d5ZU7aSS7iNvjljFRHivw255naqNdUSE6MIMiKCHzcaWs09X2sfjQj5kuI4l + 9F69AwyU8EOV4skXUOyA2pTODuERTxF1gWYiM7ywQJs/wqDz545VKOYmDhqn/Cj3T39ZZ14YFYS4 + 2382PZzUkQBtvkNOrZZz0wf+sEdSuwXN9tHGPr/81JZXRYoFrn4PY+3H3HZ0NloHg531p/VjA+yv + uldPdj7mqGspeOe+cKJu1xK1sb6WRBfmtUQPSbnZzu6YAHmgYpCpSC4uoCl5JsOg9a/D7P0bdjbg + xCiWT0BAhD6lY+qtu+0soOCVKHAntRrBEVdeZ9I9e7QOQS4JYpIGm40JVhfE8Wo9UOCsZ7ra3c6z + cY6zOIWWrRSt18aL/PLa1Gy7HjjosR3tSU+gqB2cE5ogfCkj0MQu9fhcxkQMBotCezsIvW4Zg8Ep + V2Iw8KlwD7z5n0paoec6QTkGYxw4UZQkIyx+44kYDP3OV3lowsG42nFMrlT6HVFdShcLmKR0OcRO + x35RloiykB5SUIPS4XL1JZsPH2b3D9CsyJ7VOyODsjCwXN99qwee6Ia/xhLmu1H4VEEUCirWiE2G + zSuwHJotNGHYVAQ68hmWiDYNHDhP03SBRlgZVjaqLZZhwGBpKmwKWzbfli0eUdni0TqIZYYZcxWt + tmN+m8Ncd8+3w9H4J0xd86SSLj2mGRmbqGE5RgpNNjv0bKgW+fDTbi1hMR4nZI/ZPmSzjRpkqXKz + NuPkNCnU9slDNvm8Xs1QC5aVmwW3aj4d+k4vnZQB/q4iUUAdEJ5wzo/sJ71LYkvddfW0PbYZiJ44 + N8gPEoIwajDL9Jzxd4zroiNiYQ+KWh8YGcjPipu5AK4hG+ghENmcQ+LbXTiszST3Q7hmM8vLn8BX + 3186EbO//Ol1q8tfUC5d/vRUAkO9j0vgvz5c/8wsxuuzl2PXjcMgGrmY0SA0C81nff7bVSLuGBJf + n53ffDw5HV6pwoHj8ivjbPcZhksG1PcV0cwbPoPBnYibXveIy90nUadmceXy10dSmxnOYqfhOmMu + i0PgMhUxoCtNXSRwfT9UZTGfJK6Szwj8OZtOZVSVcZF6JTePHlIpBje4WuX5DKPVc9iGsH319V2t + a9aX33agI8LepAAA/Petane12bI1yIMp6r2C9HQHx8bwW5TPFNI0VTdce1DyR0VcQTqEvQEbpHl3 + 0QDHOCC5hwa42RWKled5AzExOkszp7Af/v2kOJm47TiP0r7d6gaxanhI1y1Q8ZLxaQk5SfzC8TuG + T4pG9ik5opNSTg49JUb4rzRnzRb9mmfD/4UWA2xG8ZNo8aHd4NZU9ey4J75vbbqfyhj8U9W7cBnl + SHy8BF3j7x2A+mUDq2taUS9d1PK50NPfl+B/BE5/6aoOXz73PMdzkxH8CPzo6ZD6l3MY3tf+kfp/ + 3vyFnhD//e9dh/1ApeHYK0qx+0AE+8B+tE80otctg3045UqwDz6lw3Nz/qFc/h3ONgqyZrDP8yAJ + wyQYBUkcuiLY5xFEjK0KmzcUdRAv3DN5Hu430F9N0UAyA2Pgm7TtPsuzZb4bvuYCcHpSAkdtDoyF + i9OL/Wp19aKLhlDPPT36jTBJRo/FgbK0qprRtZVeRoYUqvdk1lmrs+EbYUA+syKtQYGBMvOj/Bh1 + JwyoNAGSdKu8aOVJqBmB64aEzF2zW23bR2b7pq24305xpOm+PtzxCdwBkr2FUpr13DfM7ZpfLhvZ + SrOqE0OalU8NzGYOqosqSynyZM+fjV7Q7Qf/T1dWQvAXBkDxsUAGIfwPm0ho4x7oxTo9Ni7gA3bb + 2Xz2r6MdjA5z9B7C3np4SnNg/9UW9jayi2lxyZO/SO8R+lkkvh8MpkzG2+oG76WC9QHU90DrBpwt + zZDRHlKGuSBEaXtc61Tibm2B55Ecv/bHjmesN+0qkhnobofqU/S6bQa6W60+RU+FAfTmulx9ygW9 + yal4P0HRYpE3gh+JxODskBs130CXvRSJ6is36mk1JUyWr8mTb86VCg5I+NZdcKGeuVRkZJ/Cod4+ + SMEdU/Mfdou0KB/17ObVxc2J9JNyCyUuYrrbCqkFuB4O+Avcsg9f08kDNB6/Wk1B+B9fzOCkLafD + m8flFDZtdlp1WaeTzQousHQD+5p8g2T0hs7zwc3Fb4Unz2GuyIbyDeHtqPQn67zwRs+KQ8YYjlq3 + /15uA8Fw3dKXgTJ9UMkAoESZxIVoCfv1PlMCZhvhhnojf31dvLizpXtz/tgpaUmE+2pJS+asd0ha + 6gOXk8XCd8ZYhwQiet3Sd8YpV3xn+FTm1b6v4nE7ZfhmBleHF4YBGzEviiMJXlJb4ZvzGxEbX6nm + ne/WquYH8jEsIpQ/rCafh6jbz4TYgFi9s/mUclGuz27cMhkerIR5nyV6/N6CPQGnZprd4XphObTl + cLH+zDh/oF1EATfrWTXgpusN5PoB6BOV7FxSG98SCJaajcdf1BbQPIC1hobAib2myyT0Ey8uh6rA + LCmKdWEyOvHIbb6paolvH2YIh2aUcTFLz7uu4ZnTI2tCmCEnbqoH/9PvlgGekMLhFvPcIZxBfqWg + V7Bl1q0vOZxArtqXZ3prXlV7Khh/d5fLsbEYDiHu1Z+XDlEUkqEm0tPh+fYMlV639XIg5aqPA54K + NKir6wpD9VkSlB0cY5QIgaF6kRfEwmuH3gjPn6wFh/rJHRLpfLICqRTODo9fB6mE22A+nl1cPW8o + ahUzxwgD/KiFLDieH7GgzHr68FYETsSxjo5FmxS7Fm5+UqGxvE0qghAbT3zPYdkHREz1BY95XMVx + XHpsYrlrfrGsrtJbKkYvJYsEG3JVHkWINWC9TqZUamJrSBUdGGZUekbsKJ/m0gV0/upGhhzLkACY + qt2E6h7n2TeMaplmX7L5as1n+Abb/vJhNWGDBf4Hy/swRhDpkeeHVWP/EamkDggKjChqxRvT+bax + gmOTvpckHr9UJmcfrsaLDNRcjJSl67l2Y7SUlmTMq/FpgG78z50opsGzkVWIhCjs3LELyhauj9Xs + 3tefB12zd2tuwFytdu52tv4+epzLVAEv523cLZ1XtbEu4CW6MAt40UPDcTKfrRt8JvQXgxqe7SQK + CT7NoeRAeA0uWLw3jrgtfd8lamrf2pC9fRxO0Pq12ojiuXwrIHuZPKyW0421U9KyaRfQfxt6zTJz + X7exH1JVMXOxj3cQ/JCkxO8NaOZS0PKra+Z3QI2l1630BEG5pCfQU7qY/7j5e1lPYEnomoFQnv/y + eeBFseeOAi8JQ2ba7IWOi7ebCO7mZeVRGcW67RKf9Y/8a01q0V+oOprtfAxw0qVW4HiBqyqpua4n + sXzcDvWN6XVbLB+3Wt+YntKOOLv5WPHiMB68XwrvieAYOGyEMHfIjNpK491vgH5NOM9faPGLeBgv + SLQFFXXrz6/Ya8ZeOEmnkkeqkWXFo6ITveCRekoLvFmvmQRfQlcPR4SfaC4AKZa3/XF4DVTG3mBD + PzBsN0himdDsCyORFsajFX47/NrrTrpF7/1RscVPk9LcNlCMKAq0PuEdcjhYRBRZ1+xxAvoupEmY + GmVg9Q7iSURVC7QO0RG4nW13oqbiEbndck6P6aT1VqcQzdfXzPPseTi9bsXDBeUSD6endMTfXp5X + UEqdJDY98V708rnvuX7CRr4Hx1e4U97OHydoD8Ha57uFUAFfDN/O1mw9fjufRGtVQ0THvi1XPYTF + X4NKn2drRG1Zbe7TpYzlQUO4icXF78XhV7S+FtBbAjwL/6ZGQfcJH0X5MrndTYfLbPLZ5PiJFzTZ + E5nPXCxIXybE67wr7EUcLDr4UiAgU1nktY6bqaVmJhxa0yiqwZa6MUtcp9p5d4TXps+Qp09fLG6f + YLWDRdtTQxexGyfAtMqXbksH9UhvLPQavDPmR/TXhT5PYejEcfDksRUmfXWxLLDGl/Kli639JbvP + hDfqfrP6un0wPyZxzI95q20fELqiuNzbvTy60rRcttInUWOJ09rpQdy4spMtYm7YsKvjKPBhX5eJ + mPh5ehq3QRfXv2Fw6OryYqcdfbAukLI0ASFzqiCHV+9HZs5iGIWVhdTNgdwBaPgdfaecEWhUq3Vc + jp9XF4+tkna32WYhIb/qcvlHnAs9OzuB07uD0zs1yzzEftOimKzm2N7HsIYqG7w0gr3MbnCuzA1a + PqQ40HmGVex/2T5sMrhXl1nd4R8ZcUqLdPkojyovojuZ77gSXnMORvo9MuJcHfclh36UlrScLJsL + BHKAGdY85nK48DKasVY4V8st6nQgTXG7Lm+Jlmp3PcDbV6l3cAENxGE2zE+WDKGDCfdpQoqRZ2CT + ypx+T4KNQVlwnmvs4h2/vxUi4bioLywEQhG5x5UT8UUZNxmsARtwRbmFcBrJ9LZpTLStzZKII3M/ + YssHkHVXORy0unCv5gpjRyODBkQAMf5I3s6z+03WpNI1D4RwFMW57jyKxJetS74jeXEpHHjtBrMf + nfDWcrogq9ZbC5tbU0qJvJCt3ALKpeVTFH/lDrP2ZYUBZbUWxS/2brqmYtqOT/6YNJ+sSOwvJH57 + IjG5/fRrCw5+FT2kBGYiLzF5hXaZRn7DHdOpfnN26fgoFFpFI3JrHKVdHKQCM9PX+VCLbmHFhZgo + 5cyhPXks2j8z+vRbjvn9XdyDBxY9OtKryAQaCrGWNYKg366mlilYgdiKR6mqnXgIKtLGfaHU7dYB + 46bxI5dpLqK6vXOo8ykiG56KfauIkFZ91M5wQHEisw1mtx2cRNMPyk9PrjBgI35Ax215n4Lgmf14 + UABXJPydnzPXC144YRfzuGxjaR1XXejGcflQxKnM7li1sqy8dY3EvnTKhnogrThdbIA0uEHciR0y + iMcS+hxm4X4DxxMEfVjteVbEhahap6Ph29X8foZ39OvrA6yb5KimeEYsKMK5E1rwUcTdzXe2sfH2 + DKp16zrkHm4uE9oeDuUQ60DK9/idMCuHkfI9YZ5++/rTkcDRvYRqULbWq0snjuwjROl1O88vUS57 + fvlTGXJ/6XpnFd+vF1d8v+MgiVk8Ch1uMNc9v4XfTmQEkVvhWehgIlDZuTASSBkTWsjr9dz1XhE2 + IOIaaRZ63PwwclDbhpcgNnMgQJBXYcBVT1SuAumBXD2ARrvLY08+v9tgs0yCIAmCisnSwptgpvKb + BuqmDir4VI1B8JiHXymo8VMt2IC2njKRsNjrDUCgjsLe6M0jiln35ko8PhfpuzkI987nT+ML3IPO + 3IVw80dLlk5ZVB+uXc/pAm8kG1ixdUW9xNjlc8nab5jzymDtnud7cRzEZvx/8PJ55HluGI3ghx8I + 7v7ewDMC1nYPUyNhjfjZvv40vjq/ltEdiw10Xgte9BeM73DjAOMTVXxHorDqWdgZfU20scaqF12Y + WPX0kJYOy3jOSPfJd/M7DCM3Qi+Hz64+vL9AfGbEngxOBvsaGP0ifgV8Mwq1sFsSZfbj/E7nnSIl + 4UvWGDVtHWrnu2TVU/1ITtJu2C1Fbv7F444JfZHp6IvjYmXH12NaV5uEAvviE4zQetbo4Z9men/P + bk7GNx36/BOB2Hk8p+KPd9fACOwFd3rdisMLyiX+Tk+Ju1+cXVUD9GIEPdJZu/NyjNkkkTNiYeSj + 8Y+DzM9ouR7n5EOg33B1Xg2fXVydXQ1fnQi2fpGu3QpH/5JOdivuvpJamJCe38AtMTNlZwTOa3DG + u6EfRWFYZvNTNbpxMTDCMK39Sy3Ee+w0QbwbvVYE6nqfP8xhbPr8i0q2BAoY/2PQOKsjVW3tXxnW + kR2m5PbKRallleh9Opyv4FaC13KBkF6dagPs/GabMW89wL2gskKdyOFydOAUjGBFiaX24hauGr5O + 1z5ls9JQshbVu95GSi4m2bor/4z8orW+4zqbEH6wBYLbQBk5PUuH7lC7p0sZhGTvpDXitp5jCceu + p/H04wiF5RH2QZRvzXo20Q2N/FiTqrwORMrNqytQaJnzwom7yH+qkaUAWHSiS4DqKV0P6Xwt5Hhu + mBzPZ59VLMWg+mh4tln7A2zEk29AiBgQeArduip4Z5YjCL+swzY9zEXruFGsUz0kQc+mpF+7lcAL + HGUlUBEwnWk8aekEJ0yI/elStVYaA7TUxa7WW9V+gkK6GtLtFvF3hJorbbyL2QT2BOj5c7qFPsPR + 5elFG/vlQZz/UpHExWrKcyC6TzP6nTk/kn5nUMG3jR7nluRG2MyuOah8NofrnNcY2sI2RFD0Rdbh + OzFfki9Q5WCAjglnd7m1PBo/Rj3x4ZxzXvrO/+Wde1aaYB3qzMqf28ks/kR19iRHppyqi2uPdcig + odetBHRBuSSg01PiwO+vfq1gLzgB5j/rdvXw5XPGQLqIohFD1AGXtefQTDfQw187h0ZaqYEnySZq + LDVFoIH1D969/6BSqdzIDWyLvrYzXwsCbUFjvfJuZWryPIHw5waO/c6m1y0R/jjlCsIfPhXQzzdX + DMXpcoUzLDRtYvw9D33gkcko9LHEmek1qlle2EKbLIPf5zvMkJvolY6fvX1zdTIWaebyYUVdKuws + GB83XCNhjP8TFY/FKbrJ1/ABfaOsP10VkjyboOO2hJyUeCUdt9BJWeSDeJO0nqUnn+wB7RMFyOf6 + 5Ag/ADYkCCjCEwYwOQzPVJ4eX2ZWdgE5o9dtMytrQM7oKZ2ej79fBZW0HBYEUTm1chy5seMno8hN + QolyVkA26qHTsBaywjOPpZO39bOPV+cnI604TEpYUyIPh1dPzpBzCawpeB3pyuZahaCPcGLWo+HH + 3dpP6GcQrSmA+uNskoQSJYj+UJvOIgdnAv00AqUnvu/GSdTiWBWnrN4C5AQsaUQB00mrw/bx8mZ8 + C6Pk2Ua7W6xCuc3GUq6aLThqpOFiDZ3GCn61PWCc1lhu22cPy+uPVyfKUNveUdK9I0lQ4F2azuES + 5yiSLOoJGgtYyeLS4CGNXpKk27DLU1E38pCxo2jWT2+32djsn95uG6PiHG8fLmuqtFVPPV/uH2+3 + o4IUryynthvl7f6h7ttTg4/kagb9C7Tv7GdlmAN+D2jp4mwgTiY3jWBI53FItb5DYEEtlPYDWoUi + aJzvoaPI8Pt7exyVkCZHoRXThgPZe3XA/IQ0P7Vsv4m01RjVhF3tG6kVuUTuh6ar4xjqTA8X0YGg + jyDJ9DU6fLFjVtjnOI2upjPyTDdfXTbDYAHoL/r3HDgcLPEcq4N9IJEwcJyaECNjaMor0bWPHuru + hVQRxJhxSyOWTcsndPAg2k2gj+AA5w4KnPzkt0moVlu/j3BxuAvFXlGxe8dEqnqBDND2Qr9jgItq + YxugLbswArTFQ1KDhCpKS0iR0oUrWgtbOT+7uZL1oKXzQ+8B47N9Aho7nuHECVOHc0yDag7w7mio + jRmFJhpk26jZFQoRaH+lGexOTM6BLcE9Pl/KwSMi6XqdwpXclRv9BB5f5XZg5L7QSR00QcoEWGRL + hGeI6dMF4q9oZJ0vITsxEybEUzqQf79AEylmE8pj9rsHMtAK5JQxsPrVZCYiHYgF/b5dM884qTt8 + ws+j5xGop3XSbfvk+4nMLRMFLFB0v7n5fczpHnZujo4JI789x5kWKWcYOmcfJmsNx+M6FBDM+xoX + lQX4bHYOlvU91zMy/zrH8XqOuNv43mhB6t77hfIsqII3fgeQbXrdtuCNXwXZpqei4M3FecXR4zmR + Vyl448LzhI1gDp1YomM+bnZfUOGYZjxf/dsjD0MQhbinkxqovJ8NebvhE2qNcn5pmDrihuN6iGhf + Mghk24d0uZoPYW8slDtVj8xCSP9uJNWAm+BBnKSxlLmkCPvpn6sN2RI2WdY0CbN89S/YXvlo+Dl7 + HGZL/IUbywl3Gk6H/l0jvfUWGbikul1xn2w650DVGAO2u8UcWfyDqJk2Hsm5GpOZASvuFIEJp4br + TEMOkNCn+WKAG7kon+P5hFhBef0pObYnelMhWFXBU3G4Aln7yywdvn7YwF8f0C/w8DWtia1p86I5 + xL8ri9aC5FCLdBAQvMDlGC0BML/zlIc7Hwkoewzdtq8OQrKXbB7XcNxhWXsY6CEkW8aYiHIJKMFM + HqABMN7ZUm6Kmh124Mj5Cccmsjhg7X6TfKJ1M/y8QeA/vAJh33UD+4MWFrOw75qxmtKDiX2P9G6/ + UD/vjixdSAs/fzyKCBm+xPyMjyHmOQkhh8iKMjD/q6LC548N5Y+lRzjqIEDS67Ye4agqQNJTEiDP + X11VS2mHzKs4hGM/iJNwFPtkljcdwgi3iL6Kcq0huWIYAnA7+7+7GYoIyBN4sBqwUy05g+TO89u1 + X5E7NYxxtGxJzdUUQv0mwSmOGWOJ01OgRBPhSuCE1E8UZo/pSwqbfImS6uCD8dWSrAFxqWjrEzws + JnisT7ByNGkLcDtReCknFRgyWAuPcm2LGCgQDNMNrjl0iqSXU/Rw8NfhFuQeLt5sgBtLeZh8J6SM + LapsYa6nMZxn7KQ6c5VDVRvC+OTY+HsuWrIjm982Wy6zP3HigFLlg8StkKo/lO03vWR8VJ7q7aUb + xF0yVWUDO+YnqZfZn3gu4OevbgKDATKPuQkL4wraODx0R4mXBA1RkjMjaVVmq74YDm9ASXvz+tXN + 8DLD4CTQeuFrgFv5cfTSY2MvfKFQyucwtH+XPFYnCp3oyHQhymwhNS3NOWua9JCNIrapT6l255ew + BezjHel1qy0qKJc2KD0VidSvK1XUWMKrfuq7M8BIXpbAGBgCsyZmtKOufW+yLe5SMkWqQytxERDd + UkJY3mQT5q7xCb/aX18XGWJTZUYeDb8+YND6bAuS+6MeK4s97TY8HqHSjQziey0TuK+zTdXadP7b + 1fv348mKW2+l28EA/GRe3GQwYiyIkih+qu0PI1eW9MITYtzwcWwOTkMjlYMbfIcVOjUjSlKOATTL + vohqyGtEDLJdrQHuRgWaEYjTG7qGl7oYP/wC8zTfLbIOCTo4b/i2PsNdXFltEGJ9wiBVFNj/uJ/q + 3E9ku6g/LvJM28hoSIqrz8gVykzBSubweaLcH79dMpfZK1v0uhUzF5RLzJyeFqgYSRnwyPV9lIp1 + e330cpy4jhuMEjf2kz2AR+TKeebX4uecDpdZukGYYBNGJ2dJI4wOwubAOGsicyTMEbRugzmiEXWG + OWqCZv9rwBy1LtOoQa3jINGG9xD067HvDG9IDYPNn5+qCr0IQD182C3S5ZDvtGG64ZCx0gPKtTRZ + 5/7VPJ18vktRUc8Ws7R1owxo46oyon4sAwb3hvnZm533YC8VcBq2LfabcVw30qvY43rwVTqq9vxf + AYlJdd9+oO0Y90+CxFSn+D9VARbflZ7hsFOiFL5u6xkO6xKl8Kkov3x9U+MZjqtpUm6IdVlGuOqI + c4N3zdl8/ZAOn3EArhM9eFntSHSAKJ/T43zMg2tFoe7CmPdmk1fFesNXRQ3ns3vdQGUmGjUWVMf4 + CkyDKPuEG+nXu4VjtxyBP9IRNvROiruh8u3c55ROZGqweU94TQh+kvrgFUzbIRM94tjVKNZvYbuk + i2xDXB5m3l1zDy2wKR5VzD8+E37g0yEPAkQUbg4/8PgvzL3Ox9pXoCiMgb9XDxkqeehDnax28ykP + NIdTsSPXsFkH6//uQPuACebvrOYD3ISFVzdw+gLZoyCWvavwdGT3lJ8/loHXtd8fu4lnxfyAphNm + oc2E3GlCDBvRlQ70xfXq14tcbmJtDd5pd+jFtPfUgtbzh65ECdjcgvFYXUrH0HuygTap6334H49I + uVc6a0yS3GETJG9tT1YvZv45Bul2ql4s2thWL5ZdGNWLxUO6wV+5bsLisYjWetDNzTLQsZCkcM4G + sgXiqLjMAdZL3Mgax6jeOWJpk6hVuinn9c01SIH2ghC9biUICcolQYieSqX7IzPRyhhiTwRRKek1 + BlEI9mHijtzA85iAK7sxM7dYcqMX5ZFKmPyzG97Q2qRcZpzPpqfyshYlWOcYLDKnS/r66hOTdyuo + GKCLwQGQbNpQHhu6PVWnihd3NZx3H1e3jDT86/XSWyvdfcmqmGrakOs+rl1vb7TBJqCHsKACsdZg + mDdkMhYZuvpHPQoujAJMxDQFMnJ+IrJQAXejDkdaH2oXmOmcRrUvP3FCN/jH4K+y/AN+ChROW+LH + xzlelMwUUMqVzfx3qK7E2da+EKI9OrBXfFrz1u5GNA58tp/oCBdeT83schd6vn6hUh85kEfYjntg + 2jtLe+nx4dL8FOLrzZ605Wo53otK7FMx0o/XjtuhGCm9bnUFCMqlK4CeCtCQj29YBbDS5yBcujIc + vnweRvjZozByGRPKcOQNP1+k5RTem7+//wXIliC8+OTQlhHzPZKOYF6oJ5+E6zKl65tzDRVqky1W + 02zOs33lihFuyPKuhnPLYdSozgzOZlPkShK5YSJxKCu1P8XGrgzEDNaOGpOhQdCM4wrfJ010vq9a + kaxiUQ+t6QaNKfh6r+peqJ1Ys6Cm15glLigO2ndA69rpjj3jM7n7rQiQPnaTnA7hd4JpIV6ac+Mv + HMQ1qv+7TTbGS3yGNoABPw7KmOvx2Bw+EZzd1vVipX7+GVDt/MD3a+r17Rly5zjePZByVIetfHZt + 2Lp942Z0vDhoXGeN2h4LRy9hpy6Fgx3KGVpHKW+fUMJjxq+iF67XCRyTmthCY4oODGBMekYXCYeP + voNZylTe9KCQmxTSEWmwr70yBrqkzzEywwBVO4Q6jPRlUOS62L/+E5n+HVAFfy4McZ8y195fgqJj + L5PR61YymaBcksnoqcAQf/OWVXDcXOaXZDLGHRQsiEbop2DxXhw3s0Dv3WyeIjdYwfaU9WwJW/zu + ntWgsP1sYXbrPNtNVw+Pa9Qaayp0R8xtKlmdIHJZFLXisO2brAFfJaU2eoyJiB+K8Z+toZ9jq/Hi + J/DzVfOpdoricRzhJwiX4axceF2xZsFqUylZMBqKIm8rCvY6fzc+f4fTtFvjwk5Xy9XGduYlE6Ds + g/fXoHV2YAL8dTsmQJTLTIA/JSbw4epdxUnpcriBEg/wsDa8O/Jg5+1DKZ1tgH4VpZRPH3H9zygq + l1I5g7CxVMBTIy32EUrLfN+1BTg8MnagvlZfEKpLVU5vt2MUCKZSs079XdEtKCN+UgAbxO4L1rEM + JLWxhzWgLkqoBvwhnYzNeitgF9H4V29wEjriYO8bw2ugNkCSHOWAxQkhrNthoddE3vRj9bNGEgDu + 6Bm2rOOyOn2PhaYdD3rt/C3txi/R1QFVj59cRrcAAfrz1B2ybrTPsOsYG6LBsMtrQrdZdq2LSh1v + nu3NRb/fznsgIo+VW7dfau2SWk9VjIFREyHhrzl+qljEiKMKAyxWs8KKQ4cXqBa3WuBIl3b4hrkv + 4Lbq4tIWbWxd2rILw6UtHopbbboR0huGFtE5hs8wDT+Dlr8Nr6drNtjgf7iPO6FaIZFDSAjcqEVy + y0HVQbrSaWcqzDGOuAEcViHVHBrLQtfnJx2ngv8Z2vFdZW/084XjapVvy2Zo7FgrRmFL80kqWjhU + VL40JBBAavGS2lH1HD9uGh4QpJDWWrJ1QazMCZ3qNS5rVmDhucaYs4aP9QNGa4KlvXHht9mcpmsy + 32FBD6vF4BdBFAXmph0Vsz/DDOD77pvXiagAgU5UjPBQkj/CxhhS7Ip2nrvKMqTc6/MJOme2WRX7 + yu47Irf4DiygpubyQHLfX8ZC9CFH/4Y2Pt3FqYE1v/nk8Am4p/xNscU6zQ6FiB8bJOglVD+o7fO6 + RfQdR3GPTNMfdEcUFai1K17d7AiqUgCR5cnOWRyybgKIamNbnVZ2YVSnFQ9J7KBqcIibRRVn5d38 + ebbEb9RdLvTqL43vXq0/u67RYo1PeIna2PEIR9AP9YqoOjIRyXagXjTdG9aC8TGd7LHMEjBtPrtH + QYFvBrRLdqbEElGMT69HA3cYMuWDMD/7sXR1hSjqTeEKyYlT2lCHRvWGkSFmVvbtXvLWO+2QrvZb + G47/gOPreX1PLdRzuEhx1Ff1wfclh3ZV/fDgFahqbscC4qKRdQVx2YlZQlw8JTVxkS6Emnj26rxI + GM42EuGNaogjVwEx9WTwYSxCA/RXPyAR8SJLmBvGJwMkzBm07wQDITuT4YdKSGtMSeQzWquOR0I4 + d2WRrYDvgUMxHsejsttmtddJPU5CyXW36QZ2ApwrmOOdnZefofqMb6JNiovtnbr+CVx6cimYG5Nn + BC2+29n6O14z+1hV1a7fRx6GpWWslUrv1jBB2HdDssaXhjfC1DZQV6Yqo02t9mL1JVNVSrFER7pE + ZmhzsfXaWwd+TkX6frt2vQ65p/S6Hc4BUS7jHPCnxL///ulDxa3rx45fRjl4Dtw3dpxRhOG2XhnN + W6toU7ZZLVZTMs4PmXD7/n27qKaadkUZhmvCd6NK5KoZhTZZwfgQ5a4hSBU0UNbUAzB5P/KScgkm + w6iE9qAS1IDvAD8zSL59XyY5+NQ4Rya6TE1fo8I2Rvi9Go4fRqR+vOYmufzUhCmQdgDDsCkCVots + b87BioAGM8P+erlxRZrCcoPAf2LR86HaB/kAt5MKV40CEa768web9ls0KGLETeT+6MZSkbfzoawo + CLj00fk6m2CJ5HLEJdKthmWuUSpBGcvmMuabtzrNjZ/RCKzQwXo4EMewukNqT6+dTBGQE7o24v8Q + alSevnbieXT4/mHWTJW8BHwZzRC6Hd0+soltLIPowAhloGd0GTxsb4UwL83l79xXw2cpYgycCAEd + VKIYRKWTgc0rQI+HMQSuMLJ42s4gabEZObJZ0o3isESlo7j1JzJv8/MRRlxUuzjYUNpH2E1A2UEX + lyzpEIRGr9sVyybK5WLZ/KnKDvIqxbK5/lEplu2HEULsBSC0mIGoxr3IZf0vs/R2xsEQZPXsOXRZ + jUvjXneB9ICFdie7+a5cXyFuKlTKmBOHoK5UEnkoNFOluZkZm6W8Rz3SLUycIGH1eUF65nBJogqs + CGoYHRvMQK+1XRh5oGFgBuVpVYYNyn3E0l1xFKUvWXVwo7blPcXtD7cqifO3mSFtaeXR7oDJf+bO + x2yS7lC/z7ZjweRnqEWIez9/WH3NYTomu4XuaXxcr+7nj5NVLrA5CPYD0Xav/hh8/L2A2XC9wCXT + c2zIHppVuCDUyTkes0DFnh8SfdVHlTfPqJSWLb9k89XaOpGdigbUn7inILHHtRgnzbQOBRCMSXMu + nX+7j7Ns2ypnuiI0cLFarubpY7YZ57vNZrUD8XkqKMt01tvVtLPV82ex6/RRtC+O6SxMZ2PObEYo + ZI8ns3yMlQGIC8FvvXj2ejMWh8qdF8bBC7SidnHnURtrd57ownTn0UPdnSfD9ur8d/V/06mjKJl4 + og6fTUK8ra8ggP3mlanpt0OliuYBcaY/xBPWX4ENl64UWqtuwM0dXDbHJHDJjR8JqxpLoi5WNXzd + 0qrGKVesavhUJEucn1WtalFUwQ59HrEIxIBRxGIvFkHkeGdPECBbYbN9mKTHG8xcJ3RhDcvineyp + TqjznDBpFmeT2GOVolnperXelm1iQIY1ip2STiHUTR5zXHyNH4iNwu+AdLFI5zNeloiPPDdLVpmW + i2I4uzVGqGA0KWjiw3W2weQddLRk6RYPZ6tsqMWArxGNmOxtA1zlwtgFKq4tW2q3RCV0BoqxW4kE + Fs3+ZCmlLWgXiWhLG6UHFHklOLse3QM9EPKrY7QhWzfXh1N72ihryXFjYRlwog5+DHrd0jLAKVcs + A/hUIHBdvKnAhjgMUQJLlgHPYwjX7Hlu4gtj1y2aZKarRVqogQYWCNCWvotX07sqsocNKzaqAzpw + FcRPBnh/jGJdA3JvGlFny9l2Rpso3cJXfToba84faW0GpqzAjHNZcibDnAwZnFRGCvj05v37C82n + sP0KXLhYlxz/tCGH+1TB3J+PoS9QlgmhQ1qr1Q3x6ewNOy2XvoEVZOsBbhelhrsuQSy5FEeLVjbQ + 9tNZVzDgP4ejIxFAylrwAn7xNF2gppdvZwvQajuyc8/xBTrverWR44YednOeCIsJy6vNoriWC3k6 + 71DEvRerxAEpVkdcVb3YXROZGBIwr5seJ5vYpoWIDoysEHpGnJKb+ccL/Macbh5dVWv/62KZ84hL + z48poCdIRDA8lo7DK8iybmf79nYY1XbiozieXuIRPSBxL2ccBcc+ciY7Ij7aa1E/TkkUZU6rO6GP + kMYDiLfnMSeutleOqT4UUvWhj5euE3cATuOv2wGnEeUycBp/KlwjN69MAch3I9/18OSWgNPgDCJw + mhsEjoTObErQX86hg6oj5KfD3ugjLx84tcrL/6HV6Q5J6wctmuCFVrtt9yp2EgI2ZP9vLu+aKHBe + OFGXAFPVxva2kV0Y1414SPsS4Uv8IYmAg7dX74dYQxghN9SFqt0wfCoULeWtr20mglMZH4eLaY/x + hNpr48K0RQd94/Ac/x0xBdN7vHsiFj4fbJ4e6kNIEi1kMd9tQJiuIYEMI/uaTXmmjyhAAuc8hf8I + +0QPFnuPuS4ZIORcHwCuIvehK0MiIi984XhddqFqYxsUIbswoiLEQ9qFbaj+g9Y/6vTdwIsT5g/6 + AtZn3M5UB3qPnk/Nnfk9ofvrSr88SQWA2CFDDackeH7nsAgPxdESv5YKaqdR9VRJwObusJcCe6mU + GpRpYLhiyk+U/dTAtZuoxTqwOMHPWOXgp6tRYC9LP1Xhgp8uhaePagOhJ2rgsi64yPS6Zf1bVoOL + TE9VPbqKfZN5LKiUvnWjKHTZyAURJQ461KNT5c0yo1S4KA+jjFCqfgyGvWxgz5/WlKV7Dd8BuvHw + JuDxwrxKnVstUpcXVeqqRtX/1KgDim3B5+Zy3M0QF3ZbLl0emLHoBeRgnID2h6XLn3hzlNNaQUDQ + rLbC6C7y694Pn51/uvh1/P4EJOsHyqdooqu5BG13G5bGU0Zfz0kIINELyRx6jBxxQHm9xty0Hirl + BXqlvKy1NF47AHMigiLqA9EbNuDeT+2t9t4Phr46pnIfC0TGnXW9vjZqP2sdQCVmOzRXfFBjORRx + 2vaaOHqCivjZ6xEWlhzSSTat31qXvRGHhGJ0N7vdrG5hT28lOKtwsnkH+R9CXwaSeaDKso5Jx6KN + bSCZ7MIIJBMPSRKaTCdMhHTXeRIHH16VSz2Ir5d7V+6/cyQ04OR4orHrkXKOyiVO0FsGs4L3EjoV + 23EXLdQOJ3aJ6C83NLyZSq+ppb3fL4UGVr5RWvDx4QH2ON7zIVadEZh9tzlpqSILG8SRuiV3OSxT + It3x6n1qh2kklNeDlz5yyDSLH9o9HAhac0PPkiOb1V/CxYfKybRiYYnnFJymQ12FwnoS8pnpKyOt + XRiJkxp0ziM+HylG+8Sbw0gHzCHhop2iQBOzpdhlG3QknXSYh06kBYAGPzvTGSq23WxqP6BsAWgG + JMxXLxLrmhvHJ2x5kVMTS1JTVqPF9NqdhtW4fOPMH1AJ5DvnrYWB9Gm53jv/hRN38mmJNrY+LdmF + 4dMSD2UgvDJ+wX23HFQnUKsDX+PmMrrBCiORwIj+c4QfeWTHPfKqsIut2Mc97O2QT82HrNFnwyCR + QWqN+HTv32P44nxFBaQPmTx5ckIZSd+lNjq9bhtJX1MbnZ6KSPpP19XaI37kVQEqsCqWl4xgg0VB + ZBo+9XDGhRJ2qlaa7UpfI4q9327qio+ot8zsTy9qQpPwmevXJH92jOJPAj9wPa9su6xFd1CrLHmm + EZrBPDNd8+r9yDBhav0o+yP3DuhdmLZGx2uwNTKXhVGYlLE0cCXGcnDPHpbXH69OJMMby4kROAxG + T6GTlHoa4fi1lNP68dvRrpaYr6c9+ChmXZCBs5it4apDEWlKga9oRm1C3lA28PLmVMMjO+Kp5II5 + CCviYpCKI7yd0w5WPe3ycbE5+V7PH3bb7VxE5/Lj8HE999YDfrJU8EsYh6T7ksOvBQZjNJyuKD22 + I+f3HWXCacdXbraNkuzBwZWPwefoFewDtyNX71q285E9iFgR01hqePi7o5ih2M9vkq3JEPeO6kcl + jIRkFpPnqUPc8HH6wHHxv37M1bYDK5EJSDc7/m4lEyvSQWgI1joc34FO0kjlmzrhCyfoZiYUbazz + TUUXZr4pPSTBYTtbMJHf8ea3scD1kqa/14M3TvUZb8JNgSCm8qJ9gYivQv9z4bWTmGA4d6uDD6CP + nlppFyqCKw7tykoidty6Lon4WBHHzaSGoSFECzQ0/LPQ6t48W50cIVZ/n+E0H06W8MOpjVEEpPZS + KCJwqGaPyjqcyRWs4jx2P3VyF4UJBUJVe6mduwLZbrNSkYCLDA7ocnaMYgLjKAr11Kzek/QtOQ+l + n/3t2mHJubWaQq9bqSmCcklNoafEbT69vqlWR/PjUoVE9+XYDyPmhyM/jFkiwjM+PcxWGZYRKDJ+ + P2V5NeOXklYrkQgBTEEjpgsMIaqoCzxS6XwFt77ec0MV56QRgQZm0Q2ScpzDXboFGhy8BFNsK4oC + S7zETAZ+DSK2piyIMQ+u5Odyv3/diOezz9n8sSZft3YMmxR46gYopMYLitfy5LM823zRzC7pPF8N + 7xASA8k+7BbpUlsGaMLXnYvZ8+xLNkdpfrLhOcvTHS8LIRxwK73PfIDNVCRCFDtUqpHEDPWtR6au + 8InGJrWzUSVV4AiuoUG2WR4dC082UG3b9tauOTXYIfMIzyn69jiv7u7vaH9UNhuXPF3rdI7zKJb3 + +NJGLn3rnuNsM+kH0/ou6cVhIvl70MEMRa/b8vegaoaip8Tf39/8UeXvAavw9+eBG4eMjQI38WQF + 3PNKZBUILRMBXFdXfR4O4phUd3yRkD5332bzGY5aPpMyD/Cz7XABKylAREEUfrxj62KqMSbqIZuv + h6s1CLizf2WKxOlwlj8y4IB3Luj0O4lsxZdQgCUKI0a+hn0Pf548ZJPP6xXscRC+0h2PlNL8oilm + 6G7FHfYeaFfusLpPN21fcfm+GWkIqow5LIZDXgNSZs5Yxe1gGL/gZm40VXmxH8Ru6VJT0EHmqnyZ + pcYXGblGXhLbfMng3217DPAsqcsvpjrFOFu6prtnoq0uktAj/+7iqNC+WFTSMXZXBx3jSKMHpaR3 + /narhk8G0NHHrekxl4qWtR3rEWk6/KJCbyR9QYtKUTZmiRsmclRhhfBd/IJ1yjgqGlkXVpCdmIUV + xNN6N2H5d4MO2iyC2BPZaX8eNBfVvlPGslw0Rt6pS+ZH9mofvW7nnSLKZe8Uf0piwdXr/2FVoCff + DcreqbEfgUAw8uNQgo58gLkXlv1C1CXrx3wGn67CpQndbwZCuYBS0N/O5qulqHgIx+JuJoDAN0Yt + RPQ2FEoL6kvTdHf/gEYH5M4yDP8q+8ZatE6uq9dhikZRXBu33n+ar6YSrDb3cMSFKRTvMC3KWacZ + ASMpj85QLdU3SWZlAIhqPZoLg12in2e3GMOua9A5R/DlIA+ltwKARHkDqDB83dSOpOudIjrOphtG + oOtXs7W7Hv+WwuU9KhzjCi/lt+vX/LXfz27YGBVjPHAYjpIP+CZVjp7AiQZiXkpaljGl3c5vZ2rW + JsJOha06eNGFm6sYrzw7HVWcVkJ7wyo76ui1rphD1WVN344NAvqh6EwqoSYFaKcdWfuVOyxJWd0Z + PLP4j3fXsHL2dwa9bnVnCMqlO4Oeijvj+iquZHIluI30K8OBK8NNIica+V6Y+E2q5O/+L7+H49+D + YY7+xsIybgA4oYSeAaeYagAfIDGtqZqAFGnpDtis46rSxnMJpGjenBRgQAcGnttoOPSiyEvCSjAE + fQN8TEkjLBNCj3yhR0UgJ8YVXMMjNUKtA2O0vWqENZ1UtcHeVvhUaW8cjJqMmbjeQwK5RgADBPcC + KXd2jzwKZN8BblZ5dYBAHpMTyeeiokLul51kItcEjseYRruXgylPkBcbnk4+rd5/jYku8IEtDnCy + ul/OusUMHKtY7glm+zNomE/hiz9auwwpHUIdeZtR+2FAeUT8TAy/Ybtir1mVsSVbAzl1xYkpbd2q + OtlstGzadMdnK/WiQTshDUMwD8tsInlTeiJq9sqN3jL2wnG7hM2qRpZxs0UneuCseiocZVfXsuCU + mJdB9dFIqRYFKNAQRPdSNxg4Gyfu4Dsh/li7UT2B9HlYwp0Sc3wV8sxe4weH3WKeRSProGfZiRn1 + LJ7KeIw71/W1vC0RXqwBSooErta/DrP3b9xXw2k236YydGNAtAmvJ+wRYcUrUeDHTA3o8EX2XWEu + kbFcT1qnoR5+qHtRcWgUcLaf8Yx7ngXSvlawUI371ypexYv88hrUdNMDHsaxHbW5ryKVfxCGflf8 + RmpiexBFB8YxpGd0CDfruSzeFzo31Rz54SXzBs1/4c05hmMQePbHrEN57EMPbW855Yedi2NSwTF5 + O9D6hHdg3PeZTfK27cz2ltFNh/LwzOcOB7Ln9Gp5GCml4fW1k3RAaqTXrQwAgnLJAEBP6RD+/uoq + qUBVJ34JyiV6+RxOmR+6Iy9AHzid2t9vZ/93B2xpOVYJWAoln7v6UMv5Ap+yUy8qyLtdznU/UvR/ + v10nh6Y1nBcgInGR1VDo3ruWQdYXj2pGazG6qICpTDPVVzXQKAyiZA/VgZpPFTFSgJOosIVR6xfZ + TfsAV11q0k7iUMiPqMBTtCrSqloLjXSyUEZGRH9lylrtlPuBzYq0Qx5/47rmF/FAkqPDcHyBiWC1 + s2wMrz8D0P93iZ2JqBjKxbUbdnCS0et20PxEuQzNz58WTrJKCpfjR14Zm3/M4DYMHHcEPz0/8bvX + 7dtAr5Pjs7Xai+t1KLrSUFPvJ4C9/fsFyCym5myYFHXjXiGYoIdJWtJmsOPG+W5+t1O5KLmBy4RW + SbIyns/SFZMvnardMcuBoAYphf67wfn7oqgKvBWIrKRAE7DgVZKQpFx0DOISA6mRsmu075nMdzmP + yW4sTtpH6duejHHfN6vlIEm5Lyj8iCK93186AbPnZvS6FTcTlEvcjJ6KhNQPb6qRgMwzS5D67OXY + DaLYd0cuTBTewOTzx09aplwAvht+MNIe3khWIBJPF3dVZ3wtDqfJ1EplOI0CpIhL4FWYmmm6KrHI + JgmKuSxGveepWNsM9lS2m2AZqEbEvMRJTA6uxfEx33dDr1yeypw/OMOoPyy0VSmxTbeRvJjLwYdK + 6kol4dhcdOSKdcMY4MZSrhaPeQMxhJJ1sX7c1qZpnDP+ds38btuEzHrf849FSm+iYVPTowuwbf0H + HA+NK7maKvDBkrfMfcE65c5prWzNREU3hqVIPRYW2/WaSXtt9pDOV3k2DscE6IiBpPJfvNAHL/yN + xwLN6ieD/S0+AfUBdsHNtqDiipogFIeu2tuYRpv2OhBzTWJ2W31P/RxC2dDr5+TbTT2hSk6F0hqO + LNAr7TpoIjAsyYcNa9BvFZDYCYx5H+sL392ddii975DZ0ZOWFqv4U+8ifOEk3RD2eBNrgD3qwMTX + 48/o1E/Xt0LxujBRRbJ1PpvDpz/ztw9S8j4xgGkaGkgp/QIp6+9jVzx0NQlFTVc35GdLVOCaSw9s + xxPqRrVU2lw3DeK8E8Vkmn2AlzAAs+sm+x4wp0/h3w8EfFkxe6B1f24w/BxlPI/FFMndUtpEjebp + umPZE/RWHEsKBcROaVjdjE1dKX5/NnZ00emCVFQE8iBO/+P8eKq+J9AKpPugMP91X2bJcpkK+Wfn + XsdSN0Uj65B/2YkZ8i+eqsq/D+Z0GdXVJlttfdvfNXpEDuu5DDmsh+cD54mI8YP6GWZpy4PGjwrY + 5dJbTCChRP0O/rKoRQizIhYzAr6sfumhltqIuNrNOAWFDgTBOZKGF9BqWxjeu/RnH7ba2wkLmCMK + /ZqTfHixBXkgKDT2/Bq2uL1thV63sq0IyiXbCj0VRQ7++4aFZesKS+LARPvygpdj5jmR746wBIKX + tBiKCxtxeocWvY+j4fkIp+IG2fTmC5/aF8NPoJW/OrseptMUMZwKdCaYudWUbjs+uojbQMVAsagl + FrMUdxT3BMnw/ZwWaMSLRPGDNstHvHExpLvVfL76iqtWjAXHtsoXKwrhRDn9hSyT8CWHTis2IXGU + EWoB2TtI9JMHWRvhzW55PzsxA3P9qNFC5IQBZrVWLETz2XqGwPp3BliWHzC3ERwAy53HjlspN644 + jmYtqQUocxK3FCyrg3AhHGoM75TsO9pcm7BecbOlyPjowsPIizHe7qaVkUXlr95LS9fJzKUtVUmP + mqo1KMKDs8X6Ycbv8iWleWhrowzsUuKmUqtidz4T+2fMf0brk/J+5Z+sIZShpap6T5Q2NHfEUEtM + x+O/ksvzoL0+oJOlHKWh4w7E+nEhUVtfK8kL57SsrZeWwIoOLjq+eTujjaFkedghFJ2cc6bdg0PV + xvQehErOltd3RxKJJ6ogbQUy3D+L0e8V2jkT0cQIk/fYTCjnHXS7izwOvoNbO+/kRHhyoZlzKHMV + aliaFUV5AXvKCPA66iyQijbWZgDRhWkHoId0nT7oNUFlvO3F729QihLlE+VTnSAG1jqO+++Vihrz + eNs/Xl06bmIfVUSvW8lOgnJJdqKn0sv+qRxVxBLfd03JyX/5nCFgYTKCK8B1k/byr7dzoF9T/rW7 + Pz0IXScJjven63R+Kn+6KiPrMDc4Yu93c+aq/Rco7L3oAoOuu2BcF42s0fdkJyb8nnhKe+rvF+VY + /cqTkQgP+PvFNah6xFNM+i4I9yHVzOzN1P0DXeZRwr/g7Wp+Pxum63W6Sbf2O8Oyce/xrT3lJMQh + FRf+4+waxCl7LkmvW3FJQbnEJemp4JLvfqsk7LPEw7h2nU16L59jGa3AG7luyKUt3NK/LYUHd5Nh + NhrtLC7kYN6u5pNARW94P3+cqChbLmrPcg3wbypDZIzavaBmimS+DUh1G8z+3z58TR9PYaanuwkp + ooVDTROlUdqerFabKcb1ISyakUcO3+1TGvm731yZ6/mwqsn3z77ppmqTfUZhA2OOYxYlbiXOqTwv + 9dGfXpJ4NnQL3Ux9v3Sfla6iMErCprgFxhw3cIN/DP46qwnn8Id+zDJLNzBEnGwSIaC53Fy7tTHy + uo8diEMJn4H/UiX64PT7/KlMPw14+ikuLudGlV1gOFHbVTDHI18n7NX7dE4xm1/SyW5VV92nlh0H + BF1qHhf41r061EBsedKfmg6I1SAOIPNdgk5jBQXsvYteMK+bIsObWOsx1IGpxvBnAvv33ZmsMvlM + 1KKk2FyFm3wy0N6Rh+JNumFOxaQuOuMqDhNoO44o5HebbmCACLyy3loXgT9S0+lUhd6+2MUBMsKR + xeMD5mqF7LeztaXYG6vMqjdhR9Qm1cY6t0p0YSZX0UPaaxX8UK4uu2FVXS6oYfALcx2xlwTeN8l4 + B4NwHCjc/mjh9Mg9hM0ZNSnQRw6ECYkJcfLqGkRBe18IvW4lqQrKJUmVngrEyb9XEYVBGyohTsYv + x1ESJJE7iuA/Tilknq52YWjKh19n24fhzXobroV8sd5hmntW/CWgv9TUk4G9e8tvU6Nwj4lARVmS + p/w+/tcKFLuH1QIV6lzCFGG4N95VMOcfh5Rns8t1XAqBZYHRGNjmDkOwlziwsR4VRPCSX2sgks2q + QpWh1UJOxo7r/aMBlsN1fdeNkrJcewVcsVLoqtpbPaJy4vtW3RllV3TiuHvFCBQOlCH9emEjzojs + YfCX3iLAYT8qH0LoedGfqTwWd3rXrXmX+lhN0THHSRx4VKpT2HzM7IfVSxRL4qvyMG0V6VoOahdz + fcJj9v64vGZB9Pex/S0hG1jdE4p66aaQz+muOLu58saucVt4nu/FMUoC+nXhv3zuxyyO/JEfu7yi + JF4X77niBqecq2h4shC+f73mCDkgVW5WINumj2Mc0lQ3qaVwuh+VX5vC0sdfUbYWx/oRpM50AyKZ + Apj6Y76BkX8d12RpCSWqeFZrfIVvcuuMuD+lNRik2igWrpAe0l8SpgLFgfYLFnaMExeNrMPEZSdm + lLh4KmOWqqUsBsA9VggmNRGaKUqh6bC26kW5sKHqE1EG3NCluNCYFay7e6UVFsQEwC7GBdI4bNHF + arlSUWpZG21bzSkInDhQ46x+rq0QeqxWeZQkL0IVDQi/0vodPEF9iOgHaoz4aS4LjF10cNEVFoSh + Z7WhOlZ6sY3VSihW6y3oC6G9JZ1et7p3BOXSrUNP6c65vHlV0U+As5dQDJKXz6PQ9T02ikKPSUP6 + 5VnOouErwQElR6QL4jK/rcr1//E4Vu+YK+WN4YIzziQIwh8L/IKbd54wa53y2yYfXqYw7+vR8OvD + bPLA02/lRV0gAv59ln9ebbfjs/l0g2/dPC6nG4F/W80S5vEfFPahcmVRFhB/IClMxBQNcMso4HcQ + dL+fm7Sv+9eTbv6I/X181sXRzxvYuvqJetXZz5/T8fv10/uSI8tloR97XlBx+MdJEoWjxFHwWzdF + jva7bDFL8wn/gO0Kpv8xS/MiI/zZm9evboaX2Xb7YujH0TN28nLosbEXDp/BlzknJzI28dftrMaX + 9Jc9tm8ZbBNULrAKpygMrxU6MI9u7DSNkiWJz8LgH4P/XY43s9vbVWGAJlSR1djUvy/WD2yE/3VH + w9d3W5eftdekz+CVQXF/+fD955kH5/z1fO2uR+KltQeae64FBBpxskWGLXzSdLZ+gAHgrYbuosVq + StrBwyyHqw1zRkEDmE13GdHG9vTOROnEX1e3aAqg+xDezUhzB91swLeu5ANREEcDMU1caGmfWSvu + EPqi7jlqgsbAKs2bQAEiFmvwII/zsTYl9VmExDvk68VM7e3y542T6r0YZuAopAVeps4Kj1IZH0Ra + 179my8lTtm6dtUQgUciXEDaIC+idHHd+GEcq/XN+wHDkfURhZx8uncA/73AfyQZW95GiXrqP5HO6 + j87/eFVngCgFVvgYuR+CROhh/FkUszoDBPlkCxMCNzd+Gl+dX0sbwmIOXU/G6b+JDQHOHPwi1zwg + QJ9LxjpAYNDrdoA+RLkM6MOfijSN6yvfrQD68HDYEqCPG3oeDMINfcYhgODta4Xhgtz5SgNNpiSH + zdp3mwUJOAXZN4J9e3b9UUsQPDHnkzXXREQY4agJ2wcmzZJ+UyiMSb/YUd5/jYP/GgNxBcHXGBAD + 1I0KiXr4ihMmjs/KeGhecAMX0WyBK1kYO3VI6pKDoCN9DnAtkcjKwTa+U87UqMyFUlZ05WFjomaf + DotDK7IP5FJ44//v/fY0wN/VzEkphstFuGtA0MEfTPz0yE9xMcu99YDvWIUq5IYJ4ZgnqsDQ3Sbl + mOc2cGuNUON+SEkKYpQrSqKHo7ZY4BKAuI221Q0PWUlBs89wU2QwSPjc4EV8QzPC+4BGExAhiO9v + VIVuWtZnNze/j/HhqGg2Gl6KhzUVcBsLi3shlyA2R+GXhx4F5BxEZCBOkxJkWk6g1UWPR98QUFpY + hi3BWCyrHZHjsrmfrCgXchV8fQ8j6jag45HO/YBpAP1HQAQGrnH6foIwqCSU5nr/LH7h+J2M9dTE + 1lQvOjAM9fSMruxZvg5lXbHNTFY7wtYU9Zaiidn4w/A9NBlgO26KdxICaHEin3bgavnPnfCicRas + YuBE9pc9E/IdJreQBfetQWpQlAInViaeFfdMdWVlCaME5h2cr4f0vgNISZhQJZ/a8HRQyqk4txbi + WR1ZI1rM8bSbRh05BIMpYx/bk8AbqMDuIFv8klcc+5KV/OPHAsoEDPRxfk8ZZNWHc7lhxwtyHXp5 + Byx0vPLe0YUVNfUdcFkbyjUZE/6LHVrVAR4dgmMlmCE62xTmysMFe0A97Q0+NSyP0IaodTTjoR08 + 7Q0hT44bE8BbETt9WGajvHFU4C3z/KjblaPaWGcBiS7MJCB6KGs+LAJhc/70/oPrwpeA/FstuTdb + cPeoEKkGHd5Vqc6fsKsB75ADXjhJ2I/rWFa2k3bZw+j4QMeAYRafAbfYqgQhV/rug3c+3IZODfiQ + 8SFH+aj7gfAjYOduU/DzRJH+AM+370YidbptzgpvHTA+3vq4ShyxQOCpnIN+/NkS15UFrr0/m163 + xHXllCu4rvhUGrUuqriu/NCauK7PYSL8YBRE/Gpty56dzYF6TfbsX9BG6cDM+JqNksKn3146UYcq + i/S6XXgCUS6HJ/CnAqb36qZiomRe6JXDE8ZeGCZuOPLC2IlFOvRrhUhdOU7zFUzT7F+wv9MtN1Ep + m8XySzYHuYobnWQ99DVKeLer6ePwGdyNJyPT5VYcTWHuWmZf54/D6Y5A1+AtaEQ3RF1Pp0B+S+Oc + y8Sq1eZRpVqdTyduvJZowuu8alVVNfFqy/qGXtBo4vQSXOZqAcfKdxsUY9ZsNNUpFlu8ufqHgX1h + 9AKbqRFFRe/FAAXmyskyJdejuesTp9FWWkuuOglyRXGpBTCPcSRM23IEdBt6TFjgRYH7j8FfaYcO + 8KiqsBBQJgdi2uUdZ6yNlb6EU8hl/talgMmqzI2dDhdScN7+1vURdiysH5xN858hSUacMv4RdgfU + 2h7RQ5SO5ygwVdd7G3VEUy4aWSP7yU5MZD/xVNbdWruyiiGW1xIZDtUqW8+u3FcKXHXQ+qr25gDp + j3lRQwfjKXorgOeXKJjJHIcr5d1J/6fqV/dp/k/VL8USmCz77XTQL+h127LfTlW/oKciYO/9eTVe + Nk78ctnv5x6WbPJHiHvIhM3+19lSVZoq5WrBHeph4N3HMY/W/ExvMhmWN5tUo/IQssyQmBKvCX+B + uQnoOaFfkfT6i+ybLSez9YwjWO4ElJrpC/eaMQYbBpc/LFYrHhNe+szGwRmUCvFTzGZ9Hh9sqkpd + 8gKgEBbPU5+rZEMeyfYVq6kbhnaUyEALQ9dGGbkwcnxz1G/fj3SR1vVjEJWimn6osOhqAzJXHWFo + 5bYQluNXnnsxF0IQvDr79ZebbQaiiHhOKc4l+ZF/LkkaOH3rFQelQByJzWp3/6Ds+XDBs1E4voVT + Nb6f7yYpiLEZyFQq2w+n7FTd+Yg1UXcKhs8msP6b2fLECHGuhBVUJK8BHk6lyjLfH4gJkk6X0jx2 + cUoBGc/w3ZikprsNfv6X7D7bku/kfrP6un3o1Efoh4XjC8OyF7PlSkeFIKm7uwiAu0/NQXXf2oxR + 5LULoVOe9Sp+ot2de2DQYuKZa4C92rT0Pc+jQL0KTqJVygmwiSKyYaWjTnRcCD+kgMG1eRoP9ZWH + kQHoRL6RXxA9hqMhH0m+F3jFICCElrNPV4fNGefQ2GTvx9SqWbaN9/iJjoZ9lhIMZfz8du24kb0E + Q69bSTCCckmCoackwdx8el+RYPzQKUV4Yt3SmIHkOfJiN3ZFhOc7hH3LH1aTzwWTmueroYaDBFw/ + /ZLy7Yf3IXLyR7It5DQTOF5hBODCzc12dnDKgZ4SH4DaFFfi9WB61xksRhNoVWRaVQ2IqcT13LiS + fJAt/wVLAJ/0MLudNeEDOH4cNIsp+lALOCxZaXQ1r4AVh37QJj7EIPe4zP3H4F2+Thy4KdVXj8pX + LF6cN3mK19NuLW/SQnkBApFTTFp+Sl/HgYXxTTjGxuYHAkAN10/LQFqkC1B8ZnD9v1utC7gU2Hfy + cg6w8LT4Lp3FyG/vdGt2qeTT4gQ7EhNwb/vGpHk/5rf+j8PABR4Zk+JsHpa0Pam+FlGYkcGvoFRz + TuwoBQQDQDty7+fVkAhYTPDGdCo6kZDsWmD5np+zKAleOFEHE5RqY2eBKrrQDFDqocjSNlyFVVtS + zrzB3neEOeIGNqyZtV2MwA08UGl/rtLwcl9gFJs0KRff+QNLzR+Y+PhDK+79GENZpPWJwO0L1ER+ + WkNZqEUzSwiEAysRHR1d++e02knxORFlvzfdJ0DyYV8FRAUX/guHdfMFyEbWIVGyEzMmSjwlXgwa + RaaqN0gZp/ahQRHBv6KIcqYjh2KmOTbLFnb/PBPgLIvVl+zAmjuFzt+deAujPITJxaSeaiPozKco + 1l2nAF2sJjPuezw8FObYDlqi83uyFHiRmLxVu+i0j0hU/rx9BDuwi+7E94iyFqYC+6U92PAgeQ5l + 6F1dOpFvr6rT63bggUS5DB7In5Kq/sens7ACHshTmk3wwOc+QnbEI5/Fjiv8k1c7YYgUKptQ9c4v + zv34l6uzGwY0zoFFPDs7OztRdt8i7EBiB2Ns2Deu1WF0FBmD8+HtbjuE+cK3punu/mGr/iKiprZp + WBsyJQmWTPpxk67MQFMMkwp0X1kPNUz6cWwqy4U5PwJ1P3L8HtE7fswsD3BnKGU6SUSpgsTjLF+f + 51ZO3SvHOt7SFzGOH62hDYzh+BwBiCxPcki5ttdul7Ie9Lpdri1RLufa8qcCBvS//6gY3bAeYjnV + 9nmCFbeiUeKGTOK6XZHtn1eIGsuZNWG/TRvPLeyh4R/rbUS5k/+9zj2EkVikCPa9EXE8k9VOtFIV + oihAiF4XZZ9gm3/JNnla7Nlc7tnNbCG3u8yCSHOxcdM1jC+dPDTZ/N5/eaza/FQKkwpkaSx/hnpg + Y/kzF1lG1Qu41qaxtlZZAJqlFc0iRqwMom7WVYP/VYx2hsWSaA7+Sgs8wJ2uUnRDjtnpu4xsOZIM + 5ZaNgLctxzJHCw6ujdVPoL5zNa8O9b05CKpema6k8XQy+kXaZ6XfO9S9L8RNvvE5kboTYmUmU/kq + sZe8YH437Uy0sVXOZBeGbiYe2hRg3V9yVfaAAPGu6x1TA2u/Wfhp8Nx5rP8PKJQqNwRFjr+6duKg + QyEt/roduhZRLmNr8acCTPXs3KtUiAlCp4KrBbJz4jsgO4dxKKoNfGhLyTi7uPoFZRwyOQLThAtg + NMy+wRcu7/HzlIEL3iRQJZ0ccGYJ0oQCIFA6lSmj8OsO1gSRkNNss7pFzCRoNcOzmp/KWeZlObJt + Qhz8LJ0wGR0O//Yqt2preonpXCtdf4XY7LIwcCKvRgh/id+YLrezcg6JQdmPmA1lda8W349OndmG + uKVOMnFCVrpb1b2asCD2y+HcB5B8fVUe5eDPtjFOh3AnDzdwtfEYHAQR3GbLlJ/gO72o7pKgPIqp + GeD5USVc3Dihmi0Ep/WQLRrgs2yucOULOC6njy8YNqlf2iqtxrzsjoQapJIfbdP/k6fgtcSo94X3 + eqCrVdxpzFGozfErrGvndoRtlq2scZtVNyZws3xMd9XF9dnVcJphrJhxd+tCzTrPdtPVboOYdrxo + E57bquSjd4kFTUKHYtBZQG6yggxGdxRQg50WwQMln292DutnTdKucP0+Gc1e2OpTcLM73U8nCB7v + f0qSuGkH9JTff3APrUeWyXxUz+mUjwqv2+ajIuVqPio8JTH0za/vavJRQ1bJR2WOG8XuiMEmjsK9 + GameU81I/cnAVY+wqv4vojtO5rsceb1UbeHnepWTzVSNjCOhlguViHhknvlWQH/wkGGKC5KhQqcw + ZxgVzLOYcpCVvsBOU5c/2nWm2d1sMoOBYVH0dD5Z3c13QPfrA9UKX+YzsS95Nt58dv+w5WHNk03G + fW0Id7p6yL7NOOIowq3mWxS/Bmc3b4tQZS9xf/rSJt8Z31S44DkTvjjCb+7UzOjeciF7oE76gCDt + CTvUY65IiXHcDpo2vW6ZEsMpV1Ji8CmxuE/vrmtSYlg1JQYVbc8ZgWAYOELTxqhBgVglQnSJx316 + 2NQEhfaVcl/ttT6G02dNBmHUCBOnYmM+lHChEMcJrGlSBm7U6DbUSk2cxLUZqyI5A9Eh201aSIaB + b9jYtdjY+lEW5qVmkkETZGU9ySKWvZFi2FQjVlIcvCuvymhYqfFnZrwU3SotFzj3qa5DznKzmCte + L2/PP/rjBUjU/CGhRM71NA4E+QdtXLoLBnh01C0A6vVATDvnAdUFsqyMqu6CgO6CmnXpTImchNXl + aFH92+8pO4r7hxaHhI2lzbKdZWKPbYE0xZqNcAxRQiqtOc0tJOvTGsh0clha0KDfnBafeaWvOiRV + 4yA6f6n8ladOQZGSxwFgZS1p+qwIkXbDF06nLH3VxjpEWnRhhkjTQxJGFpv1nNmGS4uA0z8WlyyC + /3iOdfQ0NBhQVzyijzlPECzdb6jzj7ZOhm71U3pPlT8ySPnPk2kvDx9VDvjbteN0SCej162kf0G5 + JP3TU5FO9vv7CkKT6+Pdokv/7svnfuAknj9CoGBfRLaczdcPqVp1EWug7+8ZPJ+lutKWvX/jjip6 + /UxUHigKl5C2n3KIwelqeVq5KjFzKdsEjAQ5Tfar0ZzFr7ePMpuF44BzZHNy7uCbb4VT5y3cFCKz + bTdrwcC3TrlnCcxfFFby49X2MdGZ/CagoyT24RqphNK1z3dD1pzfiG2kd1KI8QZAiNaLmeTG9lEd + /FV3zACPkUJPioQm0Af2i1eiYM5/q4htmRhnmyxiAZAbkwEs230GNrQi2P22tXU78uWn6KgRTTkk + cJzFbr6djWEXNpPo32DvCW+g5eF+auLNSy8vMgq2Pr90mGsPNUivW11kgnLpIqOndJG9+v3CDBgB + phsk5dI3Hpa+QSCEcMSwpIAQNT9isqwEc5MyAxxxaZ+S7PYUbnSYAF4qO91gjkiGrZArwdBu08d0 + uctH+G8Eh56uvu1y8ubnD7ePKfDUPH9cz2ayXtsfkzl8QG9FePXsZzdKfLive/IONFI+1l1QR7io + uZNETqDwLGHNRKlnJ4q7FHrG1y3LPHPKlSLP+FRsst9uKrZS0OUr9Z3HvFxQNHLjkMcs4R77Mr75 + eHb9evjsSwbK2BwBULIJXmFDeH4Ft9AkW8PBO6mJL+dg4aKKxgYtGLv5blE443GHLTOcc/wevJJ4 + FzwbsojO4IwBqb2+lnQJyZz24qtVXjXZ7unYFIHippBe4NaoAZf3opyQhqCjuLk6TuBHXgXxkT6L + Pqn4akNCieN4H83Bz7pMA9x7UsTw4Vt6wNXGGaFacM3g1IdR5dY3fUXEbBbmVYP4XtmiLwRwFjIy + 4rWPxzpdjFRr+sTD4mzw4PDruH73dKaVNNPqGlx9GK09A7SsofBniGzyY/4tBl/oKDfxyOs/fr10 + mWd/pdHrVleaoFy60ugpXWkXv51VIxxCr2QA8F6OPZaEbOT5zBHq/98v4KvXCClT64TZ3c7gN9Cc + ijMm35vitE9T8mbDu4vcLCR2Pp348XqEJc8fMUIAIyCHosgy/HuOArXiVqof/DOHHktJVOPQNtDl + YoXwJ9kdhQJshx/fvf7bkNdFzrcwsN232eSXhkSXi1X6b1RPd7rawV4d58gKp8PbTZZ+xhVOZxuM + NcV0D4ESgyWKgS2M/7miitdmWTsTONmAyfOSxIvLTsJioxRBDeX6LhW3IWMNnbiMsciDi/yvvD0H + eGqV5zFMwoGYeeQ6XZdxKJfRVjfm049v26zc4R7GXvr4t63z63vMc4wJ7JQTxGJR1JaxDkmX9Lpl + QVtOuVLOFp/SzfTxoop05gUsLNeyfe45IYObiYWxKHNz1azBjwo0dInNn+9u8axss6KwLQzi36Rk + hB/EsaZiJxKhN+ggj9Drtgi9QVUeoafCIXH1G6tkzbPEj8rxSGMfpMA4GsGPMPYsFt6stA6ifsaZ + uzinZPJfr1h94vtPtfA4eGmytillEDRflnHsJMk/Bh+y2Sqf5WOl7BaVawrDe/64TEHGXWYL7gyj + GxGYBojO88dTLKYkCxLwy9YoPrdZ5fnqS7Yppvy0uiCiwYDvgQIJlq63iLkhCf18qB0ZcCS4Yes3 + WN+AiKwoUOv0rwQuOsNF4hUhZtwuDY9WC2C8Deb/BvoeJZf/Yqz0JsvRFg0MnEPtyZ0L/aaFuEH7 + uqPb1KdbJs0nq8q5sLlQHaHVYVYT7EZ4VRZlmDyggFPvJTXM5oIBuY5A7XCDTqgd+LolagenXEHt + wKfEgN69qV47aMCqoHaEiR8HowgEcgGveTZNuQpYK29qfuACi1n4rW7O3p7JzTiC1XyY5VuC8cu2 + Rm7neLIqoP3k7qUUc7NQ4v18dVuEUottghFtegycBICmbug1FBlL4baCVUlskHd3NYCf+heUkMPd + JnUmCSPfd8Nah6bqfbJq92Qyt8Ta9Bz9hIGO7paROvmeTFEgWqymhQ/RwCAJwmZLYewlsVu2PppL + VkcxavKONlAsrQKemKvVfPj+vVQaNuVy4mEDl5fTMPiLb9ABHl15bYQsCn76qPyiAxFOWV1znma1 + mgNX40Fj+vJb31a4nTl/rt/5VgZY3MD4Zt1G3+uGRi7ATWU6m/gealdIJWth47u/vJ0sg1/gX15p + mqsb1mZkfhhSOeCby/e/Dp/hl3HcuJNmKk0QssjFqqtf5XzW+jkQ9OoI2sDClmnKi5kJEJ7ATew1 + A3rdEoSHU66A8OBTupj/z/l1VAHhiRBmxwThGTM/CUGhGOHPwBPZWKQGL1fzMSrT/CRkw8lw9W02 + BYlnCqwPj5cMTYmGz5g//HyRnohb7/9MNlHl1tNTjWA6tDiz93BOhWT+mgcppCcla2HgNFn5QKnx + EH66dC/WfcAYBUw59tobMmZuo/Af+E4iA5OKTPv9efZNld3qCWrTfTt5xorzUV9rg0VOWL7TdTgx + rBBYUzquiEqUDKHw6IyKuUNTv7H+xhXK3Kae5acNbtQGEVdjQbphWdS12VYMozXtu/pFtNswGgFN + hnh004kMUTJJAbuHM4eVaYDlLGbLHQf/AdGc4wShBdMwYJr60ACPnEIDSjwKa2JuTSxot1nveDs+ + RY+Nts3jYQ14eyssgoZBuG5CiW9NK99RwfODoKZWbePBtFeHf4rQ5L6BE5BkWCVZZfZdqQaODVX9 + CrGZxR+OP4VXTGFotrmguk1cD/SbhBpP4RKHr5MXLOgGS0xtrFGJRRcmKDE9JBGFELWLkHWZ4wa/ + POwWKek+Fy9goefpcnWfYn714KGo6SHkxTIEXRkfSw4E7zSQyzHzwQMFhyw40o50XDmGw/CGu+Ai + yBX0JaqH654x94XjdUP1UK1sUT2KbgxUD/WYRNVJvhSuiPPfrpJ8dr9M52QFk6f7mZQ0/ZPhs6sP + 7y9AuIkD33eikwG2+aWukWxzjuTLrbBPjnkWsEjgU1MmIuGJPk66AuQxx6M4nskOfZpDEIqy6VTT + +RD/b6/iCEtEm8FUnvnmTClvpLOLr73jn9fF1z+qf8xiMmtru8V2ZZoa2xxyefwCoRX6ftgFmhVf + t9QKOeWKVohP6ai9Pv/AqtisYeBXsFmZF6BiPIKffihLIn2EmbIK/R0N3765EtCXhXck10OAp7Mc + AUUziX2hCufJDSXsWavdlksBPCcZUT9vM8M2xnG+UvLJFyYbaZ+TbsrXkwWrGmK7hpQwBAXzKnWX + +vJU9VBqUbNj4jUV+/8Y1C8ajyaDZxzBQ5tN8hf9POs34FtWqVXAvwW37lTkr9eKgU3KUCRKBh7v + 2PoB+CN9VLF2Q5UeG79gnepWyCbWybHUgZkby58Ro8unE8Gzbl5/YoUg8ensSokQrh/Hvg/CwMX6 + cew5w+kK96IqZYEkKOHVJ8jx0PNKhuFNtlhNs3l5nrAy3I6rKZo9mOn2YMIh7eQ0jAOz79YOf8iV + Hgq/ZosXs/c73YdrmS/KTbZl57+c//bh6uzmppttOhYVwS5n05bUp1qBmiJSLy6dxOlg5+Wv293o + RLl8o/OntNGvzz5UL3TGvIqd100Cx/NHbhJyRGk8GsWtcEd+LryGcDOjdz7N5UmQvszrdFG9QlU1 + u3QD15OJrVvn4gySMGi4XmPf9aMaLPOWHuoRZ8KwyVyMAZWRU87YVHdiAashO6v6JmPPbwxdjULP + CZx/DF7BOpYTN8/Pzv6n9huevfkEP07I8QcX7JLjFlIJwnQs1FRZzPUhw8Ml8iOutTUqBYhw26Y0 + cYjcC6VO6O04IdmNUdmQk1DVDfkgh7fahw1w66mLGZjpQMyOfo00Tmn7+RIbRafUtsH2EvNicqmh + gjR/3PISVweWoQ0SGhWu0/EAFXyz7vvMjtgiR1H8DnBgfeJ79IQs5lIA598umRudj1/ZowuIBnb4 + ApJ6GWFAPCeGfvXqxsQY8Dzfi3lVWhNkYIy4Y5Ezgh+hK7IM3otMb5IJxGF+RLNUKalSRm/+cw59 + T8a3P38YXw/xm6A9uC6Kcj9DTozceRRE+tulE7AORZL563ZFkolyuUgyf0o77u3ZZdUo4HMc3FKV + ZNfz4QYduV7MZBDpedk594EnCBTxAafDUkGPaowGj1KBphJErA7BkHvgMNKOv1mlgXnGVK34dJje + 3WXYnUkHDgQyGWANcP1tEY2Fj1m5+ekq3GQ8oAZ/pSPyNp3XWA4Wpa8shXGxpuzOxHcdz3PKh6T6 + PebYVXf1RaD8oEmmMvrrLVqqSl+5esUuqH5QecZOi+JzYmNMMJhSayTkjO+/8gN+IlTJKR/+jbPg + UODJfTrHHZn3gAv3bxRtVad4BYlPaaorDi2btX1EB1OGI0C3K2f0ZzahqKvFp/XszhFsvg6D22qC + nWxCndrEJ8+Rhp8kdF84YTfLj2hja/qRXRi2H/GQLrTb9a0w/nBB9Q4WocBWHtQ8G76CFgNsxstB + x55LsIEe+YToXlLR+UqHyDGEPyNTBypdd7NNvqWpzdAkWgQNwm9ru+0XeglVmuQboFDJOwrqHjkr + kAgfpT0J/uEuhQnAwVnMttwL0u8ZegrrU8x5ib4mHSl8T5fUj6i63KHa6bGQPD8XbrTHlN87eMuc + Fwhg2MXtLRpZe71lJ6bTWzwlFvWv2VqwqDphd1CL4f2/0GaADXnBikgUrPgzCBGeG4QJnU6RMXWk + NNGO+QmzQ19TRGU8PE436EEbrrMNRrHWMIcmbKswjIMyuXSTZ9h5FyJhmcgknS5mu8Wwdr2aawl1 + p/UTuJd+Tnh7oOkb23Kf1HVcd30IiL4XkF1UcvMiC/HguUU+y+dW30UHUkoIn0WhA8xgKpUj+zDh + 0pVIVqwD6j+9botkxaqo//RUIFldv67gfmIiYBnJ6jmLAtcNRywKeaAl9z+W3ACmh0oGOkuHIHyS + 9BG+84YwZ3PYCfCLT2XLNDBGCeuj1QLJZ3PYEbhoS0wn3GZzkIKAS1BlNO2eR3vgzTv3khutgL9y + Zj/DuJf0W9nr82qTVYE9y342vRQseuQMa4FWBpbFTgDCaT22h8yA5O5Nw54SJU1R9IzB3g2rIRkF + obrqt14YN0fN1xOUqyLW4+O4pZTks3fe+FdfcRUjmQERqRuTGVjku0lSsQ6ZPKio+FJnDEJYX3P6 + i3oLDD4uiYJyRoAWdaE2ULpV26dkCvJjq5mr5PrpLu9Srh+zmo8G65U5ulKiSM23ly1Vcis/4x7k + k+98MA2oVjnhWulCo+ChOqPj+81qt1ZMlp/lATKpAvLMCShsgCT5OtLWwgtfdH497NkotgThGqQU + u2JG8by0BkVUSrlHpO8V0QYjORAeb3N/QHD8Dw1/6BrJ0JQf14uQgUxKX6CDuJ6VDfBpemoIYfdU + CHsQRZ1rN4s2tiHssgsjhF08FEFK61QogasNcKQH/PBpNkk3t6tvcBDwk5fbGVq2RchSEoWJk0Qn + g73v3wDpAdDncetxzEhVDBJ+ZorW7RbsalgRUOCqB8rI6NpvLhXSEnGMQ/FjqtdMhvuhAI4+olCV + Qwm3TRNT34FF1O9BdDsIt77AtGN+B/cfvW6JaccpVzDt8KnAkLl4Vy4e7bqRE5cx7UC4TcLIHYEM + 54bC3/xHlubbYb6bTDC2ESdHKto8sgVIn1AO3xbGmC5I1MR4a7wsv6RznGnp5hmPb6YPbD0awg+X + fnj0w1+Pxzw6ZgK33lyExqAWr0wVxQgECqjkG/hHOf/ckSTzYpaZxBXm/XRJVt2Tq9pYSCpJMFPN + LUt3jbNXDPWkKV01Kkf/jpr665D/aUxmMYhy9iez+UxNaJvJcyNNnZRlYVBFeJ0GqqBa+R6Ib+da + Ip4eY9W8CRt31YkU8nrdVwM8UAXcnOsPxJcRx2mYho4GOwtyFpWuRK7Y4VvCrpvjkkR7zu/0AxAD + uKCmZ29ZJ53+ZZM4y8Pak25p9bk/Q5wNP4XCzNfAIg425zmEB4178mCTGefibaOrvweslbfEIdu+ + Oj3AMEBMOFTSOtono9Qdh6LpJSs5zLMTyJpAYYeUKnrdtiZQWE2poqeiIuhv1YqgbuBWawIFQeJ5 + zigIwwj9EzxcT9P+tcRDSjHj2vVyWkC4UbHQVU2x0BKkthmL5DXFIjE3QqjAqjUOQay5AltHkeGW + 7UqR+1PTBiz8OG6KLmKg7CDaU4Xel3SyWyHvbkDXjxpTuIwRakHmvP4NbK0p3KRLjEdZzYfeuKWw + KStj9+rVOCOfxV4FlKSskpvxj8yM4dKspm7oscgLShLVWybQl0EUQb6NCpi2icygyLjJgGoMVatu + SnvOREZ0GzGznCTEsHiTSAnUsGlopbXaNzRVZac5Ja5pmMxhSewEZdGUjhtJFZgdX7YqRixsLOQq + hji4ev/reJPNDWRkuXkwtixdp8CU0MjHw89OdckVOMg5GwmgEwUBJvCR8+H9ZvV1+zDk6UaFw2+5 + 23I4kxy1dDnTCGpS1KkZlT24NVM3UoQ0qYqnBOy2K9he94+mjVJsjAFyPVXCKXY51gnuMmTfezam + 9c3FgiAmP2dlH4k56ZeUhSSbRH7Z84pet2m6SO+xotZssZvXWQ4bUwaPzDrfj/PZnKwo3Ig1m99m + LjwWOJwAsLf7dD7mtI/MoPRYQiE0sLu0S1AUEG43TXVou2cIXg3wyOEEfRAGaM/U8C17IlFS4/xG + W4pwnG3Qc00lJss+bK1RBwt95IYNB8byFHcp+VEfa0ApO6rVXWGjfrIQtEOBx8lISFJJd92LmEpV + prHt3Lb5nvA1iiopi2p2g7Bt3A6h4TgxGYXL8ud3UDY95tKOyb7BhbjMMUhpRb4RcuFN+YV2yPQg + U2GCN52z7i6d/spXh6S7lSWUzkolEPJ1QlTD+peigviR1ax9coUd9pX/qYXdRCpym0iN1NMN5ZlS + OdBdPkY5VMAzcK9z5/JDgjkKkvWdp/PJ6mE1px4wSwMUeaoQ1M0cQEXv3l86YWCfj02vW5kDBOWS + OYCekjngzftq0TuXA7rq5gD2cuz6zHOCEfzgy4LmgA+GzLHabXWDXh3GfHE3zjgGcAm2f74y0n4v + lgu25sL9h+kX+Nd0x9falHSmM/yqlcT4fzOrKXS3aBtnyRnSHNvh8Cyyp0oXNMco5sfUPN1SVtPb + 9yMjnEUMcND/skwOX5dTkfmBVXBAT0SAN+BOuwnQTterNcdZ4bTKfy1NyCa9R2mebKS4aZXHwhPa + nBvW4PrJiawcy+Z4VaBI9nv02ixlEifJkul9t1I6CXH24ku72RxdP/HK+tt0s7MYwc9h9q/x1pS2 + o+VoDqH05ygyd4DcIC8PAvP4eMm8yP7yoNetLg9BuXR50FNRxOfsQ1JJxOU1GPXLI3w59sI4SIIR + xkQHQd3lIbRNE6WLV/3msInC+nQ6nKRLvtfJs5fv1jwHEl306OPO6G8z9HEiXzO64EqsuCY+potk + zzVBHRfjkgYw874Ivcb7wo3iKEwqpuDje9G9zL4fwNxWXPRFtgwCTW5n253IeK6tS++hsdbmM3rr + oekTKhAnKlynbDbF+utWYz6cZM0gB027toL5bOzbAR4UlZ/rxJif67lBnVu0qZ58YUCibAgCTTZL + u3blzz/4eghrPr/pPHTThWoK3HdQrJ2ALHPYnFTYArW1S0H7vqrFi2JB+09cl0liSUzbb9N9aPIC + imWaGnPfMrcjgprWyjZRrejGyFRTj+liKaB1Mx7wtNoWFa8GF7+/CXx/eJcuZvNH9dQkjgfTQQy1 + w/OOvndqZh9oeF6iltPxkheO220xqY31UoouzIWkh2IZQceeLTPULXjpDamQ80xlHmegIR+Lv8nP + l97R8mt6z3yVESB5cIwhtVN1537xvRHckw+aB1/MDzC0iIX3HbnwYRy/cJJO605NbJdddGCsOj2j + RS9h2FPkx2D9uJnBLYx2On4MuUVRuf9ACSivsegGl9gPCQwRFcTqdQMyIbfbtmUZWKchH1+vvXKr + SoGgnlqHkYVk/ixN5MqcycN7CECoCdS3q718SNn1QxnuDwpTs16Dp4iCOwCA8k+t+cpBBC6L9+zn + 6h5sDSHbu4ySV1KlpFeXjhfbB3DR61ZKt6BcUrrpKSndH66vLitFVFnieyUMTUzv9EOYqxH8iDHp + voPaTa5ZJX1zpfnDZj2vKaBqbmhquFeh3adolSORsjUPddqLpYmBeg0ZdU+jK/evyXZRO9tWbUAb + RaqdDuyIgehOceqm7LU94Aj/7oprjSTRtO/thvUzKayHq5t1n3YMvVahlbLsz6+d2Le3ftLrVoxY + UC4xYnoqIml/vyq7zliSlCJpveDl2A1hjaKRG7q+LxKR3groQAXiVgUQe8ZB5s4fJzEmfigvyv18 + N0EwN9GSu1iybzyrq5wzr6Pf5tjB23Ky/Kfd+uAqA3otVgbnShWHK3hrLUCi8dX1kapBBXN5VCr+ + anSoeO0yu0/3ArOZSIRx2eHX1NNg/5KNOOxfrk5dsYAjw9+GrBrU2PR2PssfFvIYiPWE0deVhZDV + UjW9XcAQikzUHPO80ZH2zh/pVeCy5QPXa7TKq5gohAeOW8QHuI3VJRHGzp8FpIcvHtcUbFbdTjYG + Rqx0D2JKhPW3WtYKqRUzzHfHEWORE1QB8oxdag063Q8eoIB76XD0Wwcm2b0nnF2u49rL3fS6pbOL + U644u/CpyDu9umE13q5y5kT48rkbJEEYA793fOntwkhro967QsHhZZEFdgNsChVFILzqVLKdx6hq + ddspEXSds6oXiwCjSAih+pAl2Ttu8pvA1RV7QUVAdkf+eDrLlqvH+fh8daaVZHv28ezi6l1TsmcY + lXFDRro0rnemGPhdut0+irxAURsqX5QrlJbHv5+sPvEiGdbYQSel+PnAvBReX+mBFlESJo4HF8KV + NtONkwS8ePdtNp/hbhPJ48CbtO/ES3qskjgJ0Z5QiCaygRGNIeK/kdPrn7VCqDDgEjmW98hwt6HE + sFuc6oxfxlaIvVXZlBwahO4nqpwz4aNdzZHggB8A5cWCnY5MIwYFk8wJx2HL4rpik5od0EKyLngR + Iae4xKl9GHzMbs7zDRBgXp0jBNUt8irpqHUUvX0yHKc5CGW8vXZKK5SKlVjDZ2YbSQY4L+N3QJHM + SxvI/tYlKzZl5ikW0D20N3YNAgUP2Xt79Fay4LhgSmQ72KQD17K6pfugu0eaEWAXZs3qA036vsgz + ZH4HMxW9bplnyClX8gzxqcAgO/tUwSCDGzGu5BmCBBMGyShywigWbgBoy0CuvX+YP8pDo3Gt1T1q + OA/obKG8HYVoVHozpznBkfMXMX0eRpvmQz44BBnjGfRrLuRl6lBirrw6qhJ24VW6reKKFf4i8471 + Gkuu+EHoOklQjyjWobSbQae4rNHmOXnIpmOe/zzm5UzGnJtyQQx/b65DA6pty9UaR0kcOX65onhR + MKX5xm4MX4l84BrlREH5DSKHW/hqtY4aTWmJUxFuRkaCHn0Bx2TI+c1izpfeCf+nZm8c6bVmFrjB + suHr8zMvOW3cqeX9p8O2t+znAe5OlayWwMns8Z6NQ6JTN53bI25vUsX2Lt3xYgLdUPZ7pPWj6jh9 + z13s+xzPqi8LWag/1NRDneGHBT30W+/IIQ2+Kx+0+sLeiD99Okjsx4VZ4LgB9ZHSIcWSQKJHJR1C + Vul1W/SopBqySk9FuaLX/1PNdwgDVkaPGkdO5IFU4nGoWR6bUGCPgtBwdnY2LipW8eNKcsJV9q2m + 6lwhkZcS/+0EheKCP/t01ZzhH8cmOQ1OMnYDxy3npmvDsq/g6lWAlAZ8MjitJSWDA0+EXwWYrqyX + or8FsxRSDsE63cB5n625cVson3D0HidzUdlPV0ZE9i/8nbJtgEywpn3HlVZdb1EOYEJCmjzm/NI/ + VVrw7SNqthKHCMeyWwsTYnE7p8sUiN5SFjlungIpiUylOCElpevw2q5oPjMy3mYLHj4BJ3yl90BK + 2aiYiGLGLIyURyaquqRer+Y7zLfu2PrYyDgLFbch6/Qw1bjXfMbvlCf4p8g2jCl4rczP9oo1yvDN + GNNs9bAoYzgTeuTfoYBBSWwcQYOXCf7YdbTHEW0J2vRDGbsXv2HshRN1C8GVjWzj91QnRgSffEo3 + 7GQ6wc2BV6bu9ELcCdB95rLEzDNp1TwZlP8kJ+kcKQ04PYrlEyUkjkWh8D3mKXR/reMRL5D8BXOL + 7giWYIMLVCVekzzG+URClsdbgViVA2+2jANtldR/knLJhICqL9TdavN530h/RCizH8n6Tp7XvbK3 + aGNb30l2YdR3Eg/pRGw290zKkGWQYD10tf2vSIXX93Z8nxeFBK2Jwj4Mt+db95cPJKrP5KNDQG0O + 1x67Lngc0ca6GacgUoJKPcd54C7XTPMNt+ArV7qwjuZLigLwcbeId9nEvgB8XIp3l89oj4AYLPZI + XRC7wtB/VIFFoii8A7MXBexkYNnsCvuptIWHfGt5UULIywn5//XEU5hIK7uD3Ah7EHs6OFmY49Zs + dOSu9MsMPmwm3KoK+MZ2nECdEHQawgi6dtN0NzBZiLm6THw07lmzp946yPioXlrZ/1PdbVbhfn+i + ZBplgAkJTaNtJWoqY3QypwQ8ceOPs0sndOy9PPS6lTlFUC6ZU+ip8PJcvKvGwLmB6eXxvJfPPSyi + MPJCzxGy4TP3euRdn4zdkTe+xaMJFx2sjoklKlwviIjcs+ulsKg8ux7BMBqHUB9mHLnNQBEeTE9Y + 9pNo9GF5FZSBYb9JwqC51IqgOvh4dqHdiu2DHwmDKppgDJxoalaaeuDxz3BF0km2Xc1AGjaaLLJ8 + VXn7RnubnBuSw/N6tfwvpzIELR/uCGSv1C/Cp4D6w80skyHHhwYOu9ptJtkA95cKTgNGQtjUpI4r + x71EY7FwLjRdVj25V3pz5HeywIvKKZzf2O5mK8Z9NNH2zNafI2KgH3bfSwHJnoIAlNGhn3KUAeW8 + XFz7zLG32tPrVteMoFy6ZuipiL379BrPlWm2d0JWumfCl2PmJq4XOiP46TmRiCe4SzfLDBQLbgTO + UK+QKPQ1aoUIrttmzK9cOvWJng1YQnEZyFgvdgB8ImBJ9TYSu3B8M57lMFfZ8nEuBz38ra3IjOHJ + D0s1qsxCC2bfmjdgzW2bwBxhdXkNrBQFzfI95USe2+jRx+SsJP7H4E2HKdei27ml3nxRSNxYkVjY + 5M/HcP7QpzUfnp+d/c9wAdrtnV58GC+fsax9CNfS9dlNEfkuA7DrlnIkwY6yXPoNXl+r9R3wbSiv + IzdmMSXUkO9bG5VkJabju7lYVHsc9fH0G1U0j9AJWlfe2iKLB6+sNBYUO9x+Id1+Eit0X45k09cF + EdlH9hxam5vwJ8maxHOtXVXdmYTVrd9/L/tAHnvurlnIozJufQ29R894QOlMby9Z3KGuEr1udccK + yqU7lp7SHfv2UxUJkLlom9Ov2OTlcxZECYMbNoD/Ct/4FYdd+pJx+WcsitXXlqLlnuD7+eN4+7AZ + 5xl6LtdZus2F31gFPwMHlioFeWRBe8Alg3sCZOqHx+3D/5+9d+1uG0fWRj/rX+jTmWS1lCYAXpNP + jnPzTJL2sZPZu8+7Zu1FS7StiSzp1SWJ+9efKhQAErxIIEUn7p69L22HJgogLoW6PgXMWho0N/Du + qGDbBB4+uwYWlIJOUogBHg1vMyz+t5xnGL6REfU7DAuWkGomT9gqYfhqvYTNeAv/RNehYbwkI7zd + 1oANOuqleYJRkjDfr6kZ0DYikAV+Esf+QwEUGm3rbrle3dbGBniJ11SmNPZEEFdqbTYi7BWpIhxf + E1WYVibK0f41a2on3MZBUJaOmtajv+IAtRNwZGLCoZkonxibWsibBsu4F3nMxzoBasPL01mRjfQW + VQG4Vo5bXQ1YmeCQzjdLmxSyTBkSP7nNiBgcoHssw7ZGeGr4G17h0n4327wYflSC0G4zVGCv0oBw + cvFm/PbkfDhd3slQTiBzWvfm8O18MV5jvg29OUDGZ8ItmZ8M1FbWNobSjne+bnrEkfwTpOPJYyVv + 15rj5/6lcRJpmU0teAtxVkW2VLa9sy+gVTpHExEuKMPenmnYnsO3h4Id9hcC8/0aN8iBPfGwgPk/ + ww992Da2x1ADKxzJSSSeM1li8BlqVMh8fpRrwAvlaS7viC6egCNpNkrKvZizZG3vKt9ycXvUld7t + y5xFqaTvL4QI3EVtet1J1FaUS6I2PVW4qZ/PK7kxQoS2qO37z3+JksgX3ihKkiBRuGilcuBaSZbM + Srv2nnw8P31aY8vQL+viAPgMXtX3N0Y1o9URnxdSzvUsA5GPu1XorUby0WZ4uV4pIOhiPXFMUrya + 0QLOlsb1K+8B6FM1moBgvTEDUKisu1U1xcb6QFsW9pvAVxPf53CR7IF6UVJxg/0sYEncZOAqkjaC + 1sf3l+MrGKXM+thdQUegsYw1g1NBnJYMGnpRqx7uLuBq1ivx5HZx8fH8qVGZ93fUWKK0uSNNMPte + Jeh7YSuC1gK6hhmHSXNl1dpeylNRN/KQNdaAraW5PjwV7RaxAtyzf+WY14r6ZnF4vO22NVI8d9xl + 7ShvDw/10PoPPhLUzXJdgrOniFAjH2BhlLwyLHEuxMWYIZfL2aJ5GSETCm2vU7wX9nFbEpil3Xkx + vEgXY7iAh/PsazbfKG0HMw1zZSaH9yiehgFeCloN8RWoPUhKsVYhFCLIbA4TIiPTt8NtNl/eZXVJ + y43ytU81QPGU63mXDQrCmENdMdj4Ung8lor8OLlvjyJDtYWPoxLSJ9VycisMvy1Z843ntVH9bckl + evmaboNjqLMiDFXB0XAMSSsM5oj1YVYANdUlVGJJe9/A0VidCRW0br7cXL6KBTp5RH9Vt+H4YUK7 + 14ZV60gtYB6J7ZJJdCQSBgpw1R6S9aFH4YR6qsScXoGcRf4IJTQkCDxr+R37dWn5QPh3R5ccSyik + Uw++C/AniNaSIe6TxZ04Qh+6OEgSapeiwYssAUfEnQe+QVIO/WfSVdwCSVk2cUZSpg5sJGX5jNTE + kztY+rs7WIHdXREDdVD3cAhvc/jLlmCxA49RFPCRTDJScFp1dWCdWTULwkSKLNWBPwyN/cizCjVf + udu7D6lPxGSVSlV0LteU/Tt8Gz0OJ3ccsKS6Vi3xfBsNW30QP4BN7HlNO+TIj9BcJlDxWKwNBjG9 + 7hiPxWowiOkpGbDenVeLyHvC5+VwrF8iAdcVH0WCx8KrGLA+vfvt108Xr/8bE68o61bpVNlGF5Xe + wT9L9kNQehY3NOfSm6zTW+C6A1Y4W+TGhcqbKNDoEM/NHb3znRTDQoHrdCGzv86X8+HZmR7Si4In + WjuYLVfxpyUatsiS9W5VU/UevtbojJbXEEuRN/sjGfNCeKdSeU5ewjp7ua5EuwijxkL13EtEFIiS + Vk75cMVZtHRywZocsfYYDT2pkeVrIDe1mtUVhgXh9rd7CONml2TdiNtaq6wxJ1HCo2PtX2dvC4Xv + ZXHE6F+Dmj3e89Z+oP1suXC1daFQHqG64wfIC0xMXOAHUnLgBfgJ/XVj+uRpIY96nH2fUPnGdbZK + ZzWpls0uUZJNqlu2BYk/g1dVUMxS3VEqV84unKpeDUIHE5y6E2uunNhv5XrBmEI9wKGJv40zjDLI + I0YP0pEqp+/LxS4ycoSvqLph1bc3plo1fTb0UEAa0CbIYn/OpI6DlQ0Dqjx5Op1E4tfz9LpDGWi8 + f8wIyhfVXnVVCzpUHve398zj7oHn9LqToKMolwQdeqowvs8/VQQd30fnaNFTF2HceZAk4YjxMIwL + GN9DuCOWU4xqKdrSZAJ1ZrA2YZm3FOCMGwk36AZfUXCV9xn8+bmJMTQF5vCVbPhvHdTF/zbWOWYZ + zeh8diN7kRTReXfySsN+r7bdYL+LZvgg5jzxylKJ7MyMpbZ8cqmqLWusp1DswfIc5PNjSw9xoxNC + kRo0D6+YK4Xzey0jreWq6EWw+34uXysvC9A+/+2J/5SWoG6haCWe/PIUf8PwkuHJq/OxtLlmQ/a3 + v4353/4mwVwmw3xB8WaHkwqX5iKFD8oGuDENFqsf8oGaAHmhFYc5Gn6dpTKehpgKZdqg/eYrclIk + LDeKqw3pAXo5ENkghOluH8duU1GoWRceqD1pujywl52m7CiCf81y65rFUxHb8/csStx1WXrdicUr + yiUWT08VItj5/1th8YEXlYBK4+e/cMwSDEegiMReUIp71sx9kyEw5K/b23UmAQyKeb8vYAdiNKEq + UZunRWbX13CIgGfdG0mCZElZR2SlANN1zYbz1f99wGxYlw9pSDqKuB39W4AO5SFcjmVOXpPFAlKy + 2lo6l8VWvUqQ4od6qJHKa8n65XjgMtnBD13oAW5JzdxD5nmqbk/UoGm0TfuJRciqpEwwfRvW2j5R + 1Vc5pXtKNnZNJImUiJ/eYEDJ7q6gdLXb1i39MQFpPbM1gkR0DZbrqfzCsTUhtb7kMdJ17lJQOWE6 + s+5fdnTgnqYDogDttqVKJukW/xfTlXPh+S1Sbeh1tyuHKJevHPlUaRVnb4LKlcOT6pUT+jEwoFHo + J4ks+QZvZ9jW5EvSOt9j+BSiVp+94TL65Mnl5zM+gv+I0dvTV4w9xWgRkHGkTjpd5vV/ZtdB7V1C + 6MhN1ZhVqsJrWV83tZMU0EPSlOkSRizwWPnKaY5Xteh6SdjA/BnzEh5XdZGOhAsDFgmcykpKTZHp + FkBhdMJpXSciKs1KoWRFsZPcDJnKsj+mOBbwz+zuam5R9TkPmq2bQrCgGoHWdHtIdmI+pXQ9ljux + zdOqo8GnvdMCe3Mc5Mkb0J9K1NDzupFAEGrRxmrRpLSpYwaWet+Xtr2epPHVcgeKBlB4UcyWVf3M + VHaxjNS4toJcssJwtZnDBP4P8LSa25grA+exVfSQgihRsNegLTm/Jp7fnXgTcCFuMboHGvaji+WM + 85AbOWE/a2lz2/kgx9CNjyknY9hh7sWOesP0FKquqyNTaCkTeOS3bhHSvxe280igDEJ+fdsa9FPf + vAnV7Hvv8aRFzT75ulvNPqJcrtknnyq8orN/VPGKYu5VavaFcYAXb5JwpgunToAPwS6dA3MCMX0y + k8Y1zZys8Pe7/N1KQac7Ymoy+XSmEpwI5Wj2parXbVYw0UClSNG+baPGaGwWiCio5pVqkisMR71a + Tku3YcycCBYSTAtDq3NDxh6zldDcYcZ5hDDb5atPOb3SRUplE16WkiyTxnqpxRFW6OkPN6xLiTFv + doubmSXEYJbQoT4G+zfEaGimXJsG5YHEcGKs+fQtyxbFqaO8xy+gksigrnVmlwyEbYJuHR3kNkX8 + tXStMiqxnMRiS+WkpUNoNcdPQYVug8BTQziH+KfblP4AO3Q6K7zzAp5sb01ti/QOGDJmz52+Pzsf + s8gb4KkxKEwB1ZFFri55b2l2C06qNq4jXNUiucLi77XXmfaRL9ujRLq8Se/u9XmbLBf/3hV9qiYW + 8Xq3aaU2Hws762GJG/2NtYmNB0pNRbUTbkWd6vB3x7DagAmCqZPfNJ19ndVPyZ4oTPLxFDauo0k0 + iiiyfYkK+kZ7hXUgJwkZran+bKRBJiejymHdBh9TbJJu3k+jAyMmN2uRh7emYH3zXkq1H5CIOD9V + GBL1g0pVyoup/PGNhGpYl5JqQo+CPl+eipfJM85aBH3qJm5Bn6aDQtCnfkYyyqvJig2n2SRdrfAj + qC7FQLq886daRNYSNzYaTPE/PPCZJ8SA5ONCKdR0Pdb+7SuYEEmwUpFmBNfMAm/UbKzUtKnstWb3 + 77sHHrLf/QinnALKpxniECv7c8GEmM8gXJKNw3O+TUJBme53nfxa+lJgHtn77EHDJu572ArfnFv8 + EYZUHn49u9uz4I8zhbw/RNm8kTKo0iZeGVbTqLI2IQkLcvkhnUjhIt3s0gWIFIvMotxmGUREUGBI + 9efZr4XHaWFN5dNOqeIBIlfKyY7ePgn+9nS1Wn1EkdfJ1t83vT03B9PpAlycMvaMRa0SBnQj15QB + 04mVNKCf0g0yQVa6RqUjk8bdpapthis6KCScyNWzYNlMeEtBa1nBFtmgJ0Ya/U3Qsz0avHWSgOuM + AwKkq29YnVxnZOzI8wItPedJM/sr9bgSF0hfyzCU5mSN/xZk2SWI3rUy/8FOlJ+tY8oPNFUZC/sW + r/OnP4acAX2aCELttwvgIS2ixeTrbtFiRLkcLSafknXp5N1pNVosSKJKtJiIQvhtJGDcTMluJ9N0 + +A60fMRKRORkG6BOXxK5UYGMRie3k6rRCEjxX99OFsGv8JsohSbmNsS6WPSgjBxaMPSD+uuFVfdN + R4CxIh6pRdkGDiBFcDrb1DlAQIhqhFUzRAclxAyc6NtDEz2yDXqFI0A7FU+AoqdaDHDxTURWQDBS + f4YQYxYCd8Em9qQ4+glURbGaVM+W0sOR+ZiEIdly57dSF4+pb+n7lGbYvO/aBZQ9BsxqzXaFFmJY + FPNnjLerQKUbuQoxphNLiNFPy0KMnp8nV+tlOh1uVtlkBmMBdgK9XO3wM54OWr5ujQKEFw5y3GBA + tzRlPdQDzjre1q1IHKrm3gn/9tCF/Vjue/9/NvLGP3sPW/m/xifOd75u4HTrG+qle18/VwDlry5F + pawoY6U4cYZBhMDp+Igzj3GFTv7uHsRFWUUY5uO3izfqav99Nocevo3Tyv0Oi7heKqF4szSAJ+lq + A/eeDcjZHHUASixLKpe5vEfkvoQ1eGXnl9QHNjTXHG3ooqhh2iESvOVgL1oPNgn9dl0QMnYjwZiL + lmMuc2xbRLJj4Q9TQ/852XQaozIDvylm0qJppK5P93jspI9Ab7FZNSZEsOQAVWCJulKqTAyFw60g + NgN5j+p/YrU2ShmLdKJTQZIplwZsKzo5J4ntpxMQiotcPBV30o7vBR4Z2nEkive1H4eAiQ2NOGkW + phUNP4zI7vh1tia0A8U39iG+twmt/wF2uF7jNzxOFlQTNXpECGe7jKdDpEyJyq6BKcda9Hor0CIU + QoHT7dKSNLB0wzb6Je0zcgikG6pRPZbmeylNVW+FlqQDFpuNchwdI+IdT4v2i3WnvOseFH1khWB5 + t0qme+xk91Wbp9dUmxw9CplXT9UI+on97gtoNQy0Y5Qlp/yZJ1p5RlUbV9eo7sLyjaqHqgrrasIU + BIXFh0pZ1E/ORsOzM6oOcHZ2pt2kskpxYyPZptxkeIE9DtarKyZxdbwoId9qP1ahMKzSkO3apIXv + S+YWNTn8DT207OJnQUeHNGd7VzJHSGg1WyDL5HBky9rU9Hp9XxweUrcBdXBSYto3OzxDoyEGiykX + net69yDQxIS5t29wrdxw/RD+sxSX642th9rq4rfAz6bXXS0ufhU/m56qlM2ztxX8bM58v2ptiRgL + vRGPuIxTQ95/puZ3Q9GAbzf3XKP2nM9uqvjTvWdW1hZorlXeWRLbGe1FNRvW04vLyvvVTNeZ0M9q + fTEo7ZWKveQZjijljll94VoDuqmvOAlls80QSnczfDufRKu97Zdqvm/m9xPEfR5u7hdbDPMc4JLm + BgNPmgSCJKopeGDawsfK5tl2tqdcZxM6RdvURb37KWH55QULQncvI73utPsV5dLup6fK1vj+jJXT + x1gSihL6lv98DNzHg+0fBIIFoQ5jt6NH69z2hQjMTXazzih69pmujDifsWrSWDFUszlYncdNh4ZF + 3I9Z3Bit7hoA30izehBhyIfTw4THk33VghjcHjDNSU1lo+oU2vV3YH83OUStke9LmN6fLl1B06od + edlBeraas9WYlnn8crZmKyOAyOOe40YVFn1cXKB0u00nt2hDxCJeKpNL+S0lIgat6TZbyHDjyW02 + +bJawgEdmbyI4h4teH+LqFVIyiyZRJigegdWX/JjhuluvVynasUH8gCZeHYRqvzqMC7e1Hsm2Umy + O4ZecwQ6lXdv2F3tRJPDxA6GjwvuhzW+aWSpuDWciveoKHKV2KuDwV2DwB/Sp3xkZDVhKDfxRTft + 4Mjg6oApG0pOYPpHbTHOhwiwlqyzSKSZ4R7cJfr2pdztDxc84e6yJ73udPsqyqXbl56qMom/VRGh + RIKZIUXZM3j+Sxz4UeKPgMdyXbvl7XJ+Mxt+ysPZqIzgsgaNiV6trSwM8lG5snAh6MULo6Ry5fVV + BPD1hZTh5NiaiuvFjRCO1uAMTUVtKY2Y8sQ3Ua5cxBXKg9cgxUg/fbqeze+HuWt/sVyM8zwpI5yu + M3yEQk+WrqEBDWYis60WaUYX3h0cqKvMEpFeX4zLswAvpoQXlV6jIeQr8L+JvOVQOlZI9faywu2Y + fb+dXc1AG8mxYZcrFOLvi0iLchhYPOd6y1cD3IKmUkTihX1gNeO6YZPiCqsvyMPquxV0o6TRPavs + SqwvuHwWMko2a/OBezxRFJtZOrFODN617QE3WuLnRNKVTAxsj/j3eAI7KE349QVjsbuKRa87MXlF + ucTk6alSsd79VsU3lp6mooaFgZygovrxSCQJXLbE5D9ZSM/LDYgxINMs1yM5H4QUh3cw/NhkX7M1 + VZ+7/YYVL6/1pWjJsMPb2c3tGCmp2FtUgbP1cp7DY344OdfX6yTdTNJp9gLLVurKJXiasLwu0BkW + 6ABbWeDzu+U0k3VOCn9Tyt7tsno3lcHFbX0sboLpwPKMkTZZFFW827slsLjZyiaUNFtYuIj8OKzc + cvlcNyF9NKMZstirmlNygsiNbxagXSAeBa2WRLzD+Sn2ayl4XDQlEVtTket3m2w3Xd7er25hT9ys + l9+2t6X6r40VW5PIhxnxFQhH7e4jJ+ZsJXWn2aK0z66W0BluttPpxOersVSo8l1VCMm4hksJdYAl + sBg1SD0j2AZpHN6vqsUAD5rRxBIuNbFIQbXWTYe7qsQpV6n9Eu5VfAaPglNqi64Q9JF3Bijl35kC + mYTTdFjI90g/qjs3LurfYyzBEZlszEB4LaNRTRtXp6PuwnI6qod0kaym1+paWKVztGvcz8dGermd + LTMUNKXbkYBxng6fnH84ezXEgKGAh97TgWk3rGs3nmIq5C0crdU9jNLghRatrirPnQ1wMNIRmXj+ + QNk8/OL6YfH1ax1q1WhRPSRH1lgEVu/aGDmEpPA1neyQgUibST6sFo4dBDGjYjOrW9hHMFMrGY/j + YjZ2TMuhyHkaanu57S8RLuycgvVXjUf2eoyUin2KE8y5xRN1OJ86xXU4L8axHf2YSJRI4RMQl7uf + N+dcHrysWtBy94VGTMPXMs9dVaHXXeFrkXIVvhae0g1zelItxRIwPypjCY6Fz7wwGgnfj0S8P/J8 + NQf6k4dzhfZljjrC3fmWRFJliscbFLOnn7xdL89Pb5dPtY1+OtM37QsNOocA4eo15Ba6Kcq+Ws41 + 9/BIanQ73F8SAt7cz5vlbj2hRvQX4O27NUpg2KA0KrquNrPNC2mK0hcdObA1Ittm8PbV6xw11hNM + 3vAeJUYZCVxXC9lz9e2/30MKK6G79EhqIH5EQWF46ruJdgXowc2X0NKvm19Ox2IC+MXamT/IxO7F + oLRKIsqlBGNTW/Zo5uvFMd3X9uJo8pUD8vMvC1E3Xn2I2oy3wfsQUYbx2wuQzt25Pb3uxO0V5RK3 + p6fE7S/O33P/ZZnfsyC2/Q8ieT6OMESEj6JEeNr538Tvb9bQQ5Xf29nmJZ7f6IJ4vDzfZKQIkNcG + HfPqtZUyMnmPcZg880S7tEfVxjXrUXdhJT2qh7S0u3WWWmXlQJzLpjMMZXs62PvHIn2s/shyLIZj + PApMc0S78+4ia48VE3syu3e8aByt9Uc1PnBXxdKtXFMk8s+LAoHfpcts9FLF0bc3b8vajQenTrMR + n+6U98AZWtwp8nW3O4Uol+8U+ZTulPevP1c0CObz6o3iR6Fg4Qg0qTBQBTBkW13jSMb2ZBjEofF7 + QKyZZ7sJ3r/G7AJyrA4le5/t6ktZYMByKXKsEitVul/EeLbBagKr+/ldigFCw2mGIsWeihUiDlkt + VXPZ1A3eIpF4SVPNIcZ4mATiX4Oz0rhmKB/WlRxSc6drDsnSUHUD0MZznHxTeS+JZMxkDFuXTuJx + cj4ssaRTCFtyM5ztpZp4saSKJ2lyK+N8JAS4BKrrvS+qNF2ZwvYkFciFZC6wNXdoZrjOJXEHxp0I + gobcv0sb4/z3GJ6olIfj7m95T/RS2IKFKhNhfn+MlhBTooTUEsbHkOqrHAWob8JMz3izm1/v1sPJ + fCe1o84U5Uz5kuYIfh5FVl8xgZZUxQnjrUVV3chVVjWdWMKqfkrXhsxkuIYvQUVSoYvtrmb/dzfb + zhbGQYIVw2CZXwtLXr3LdsKXkqonwoFyGBJGfTZrj6vLwoBQeXWvZhxdUcEeh49Qws7EBIrcOLU9 + GJKdzRg95Wi6W7gfVdZMRFkz/7iAq8A9cpFed5LzFOWSnEdPVdbMp4tq1kyCZSOKlmLx/JcQIc69 + UcgiFik5740p0mGFXWEMiyzkQEm6MrBAhqtlhOer8mq262peTasgEoxct4p9+aAJ1WN1NAjoxbSa + gCXVgtsN5PPgjDJ1m2RcAgKxaohJcoMzfZhzzMTqiEd5bR9rmqczCsmAHTDWk/1iWIUuUrWlZVG+ + zZDxkvJCtVCgpdwM2XdZcgw3NbBNHVkP0te9XMKPskruGqONiwET68y0ghdPd6tkNUByJn0n9lg/ + IYmBZMwgxd4sq9PfUqHrKXQQF1rSOTyexpIqCvF6OnMgUiNMIoGEJrYtBSXI+tbV1E6SdTYeHNW4 + KQL0cdyrfRoaGMGx7GVeztMD1OLmI9N5lLjjwoYtu5dow+6NmnavMzF9q0Yk2p6e+ix65sUtBFvd + xE2sNR0UhFr9jG7XbXYt6K4sVgIqlmwvVQJ68unkUof7gK6axIn3dLC/bfb6jRhgRyD+ioQnwaC3 + WlR+iQKcjX2VPNzCYzqkoGOpqLDQCGNEGl1qrrKgLxSstOb+7RXtHutFHQ3LE/lheb337LPuEvSx + He03Lhxbi2ovvAwIJhOEs5LxnP0A0rBQoRidFIpxHTXB7hT3jitijOVbcwNbc4y89fjglljbDWCc + z7ywndlAtXG1GuguLKOBekgMdjP/7hOD3WzllGZjCdB5DWO38I+eoPgr8Tqzzf9slyak0g84SKbA + ZPWaNBEwZS7L7WAE0vDgRzFxXh7mcBnumHXOB7An/DrBeKJqB+ejul6uv5TqThzO9/Q9ne/ZTAgz + hHHA8+XEsQqRLxR+Ouom22yRyrm5JjIHZZ+fAyYjPBVOpgBf0rw4l5sgLURA6s3l/DsbX+Lmdi5e + 2BL2qynS9qgIFM0kEoXC+tsFbLM2uOv4uiPuuqRcwV3Hp3lUhFeJivBlSlsJeT0BEcMPRgn8UyOC + nBeEAqtg2xzhLoZPQg/ktEqlytFwQSmDedw6KBMXqzn3TlZSVb9NN8UzDX+FC2n4nsWpVXyUOidL + iWx+taciLw2pdUXexmJ2QZBgwEXJklJgSmhh2M62OzUtRhazkVtF4NJBBcig0a2GIm2Z4qD3dXrZ + ZZ3gcDyGDTOQe/5Ejoe2v8kIjSVevMZXDWKR9KYl1FE4zN453Jny1tCbB9Ydo/ZrbfV4wrNv6BqE + 2d1ttTKSwn8Qd7U3vPkHj/fb1xy1nMDWcppOttO97AWkaRnsxmV3TQdPM77uwATa6i1tCDd/tLp5 + YpPpwyJPPGN+u1Qf3cgZYFB3YiMMqqfKBrBcMYMwKBO5ja/fXM+D6p/OBthQZuZ4gmvJMtCSn0oI + lxwDvmtx424va01nPwPgBGmCxHaLb0paUHU2j0FpprOQwQpfzWcbCRyDsnFJHMzlq3QN67zNpAxf + 7WwvpiFZbwukdFkRWRQ1rzLSXWiPPALt0Cg2BSgThW9ypFrg8yipwY/My7sN12hcIIZSwRLMGznN + HMGzUOCdJeAioIJDhuCDCObuzsmQ4uUKa9D6mmgD69gT0GHCNChkAxNpTzCqJyh5xVkvxqLufRwa + e1xP98nJp/OxTsqAWX7aPbYkkFyh8zzrG4mygf7xHri4uyZEr7v5eIly2ccrn9INdPbf1WwgXq5v + 7gusQJVEXjyCMQeeurOkOLVB/gDC13q52cxniy/S7nCzmOmU0IKycvZ9XY3eq6nia4Vl8xIEXI5H + FsOp50FdRYr6chFwzBpC0C1KRulQZpl0ZmfphzxmTZ7bQMQh0DGah3Su4mA2kppys+LIKnM3xsmT + gA53yhw526xQaJaVwZV7dvttOXz34e3wiQRmuFtezeYyXX693K2GV8vvT7W/djT8djub3GJL2IyE + fKZeBi3hCt20hv6YsngzCYP+Incnp9kaOpjYt0Y6L7pz4Qo5/e2/g6sBbiPjzg1YMFATlRuj5Dy6 + iyGPuQ7WQO1Lw+ft7etkDTnOpuR8bdTdlt3vG822KK3l1XsWhO6hKfS6E9tSlEtsi54qvJVPr6MK + 3oqHBVOLIcjh819Y5CcsGbEo9ONof1LLdA70v/WdxFhmdTvbcIHr/ydOjOGCkU/xcVbl7TNx7+gU + PH16hC472QaSjl53LTtZA0lHT+n0vD79UCk+5Uusc9v4+YufBIxHIz8Jk1ClAH+sxUUDxqr3jtmU + dKxeT+5E5UzVZ/Tb5ysWLc9F2SlWDLcK91Sd4jIIvozHitFo3zBSzSr5itd1wRhlw7P65SAx0wXa + 7mP/XwPnyXsxLILHEQ4NXV3T3cSMBK/1G7w5l9/lRBJWDraFt6DpOl3NpmhAXORAOhhtt87SrVS6 + ZEJwLGtCL7/frzZLENUzov35nyfD2XqdojCAux/3jKlWGbJ4oD5ZHqX6yWp3nNsSq8/l/UsgZDx2 + AAvNySgV6cN7WDl39YVedwPXJMplcE35VIWoXnwIK+CaQRKUwTXHCNfFohGLmadDVM9vM5TZFtk4 + D2RUR3I0NPHjOD+36ddsWI6M3GQ3ErD4hR0HebnNGF9pI5cCWlJhreu7sMIKa9fBYl2wYA2sizEQ + snnUV4XdioQA2sO/dyp4Q7IKYztXEEGWnBCV+N/r88o4Bz9uzge4NYyLI2DeQI1R8phDH1Y9CHnk + 6yrdItinPlAJp1C3Iodd6c90IfRIwv/1oTZFeAQ7iZ95rJ2VXDdytZKbTiwruX5Kh3zyba4sDop5 + wi06n30xWPSDhsfYbiBEiHl1lPfh8T38uHzdHDZW9nr/JZzyBuDI3qRzqh2WE97nAau9CQMyKmff + iy4vODXtB4a3vf2VrW/Bn36jHg4/1Nuf0i5OL7yoxZ1GrzvdaYpy6U6jp+pOOykBRiPwvog9G6FH + wKXGA1DA/BEPuAzRlmCitqPobAzCzXJCYLXTLAXWrEDkC1aPOyqhOUlXK+SfFKb3YpjON0u7qvl1 + CrzyejcvWjuIQc8kRxvVBuRQXA/6aqQBiiD75RmdaKMMjmAo/jb+/OliQwsGM3h3B6N5YURi2Hj3 + QzSS0f1wnl4xU4clrQHENvodbBFJvxBydLWc2pm9XmJDb4K6MSriRfNIIERORaXP3bGU1tI60KJR + yYH9kAhfPNjV3r7eRNHQmUQ8DqMSzRpDm4kNnqFFuNpH6Pt24s7bM2ve9SwM/rP29QB5gIE5DSNB + Jkfy4jV9bv6luWdvrM2dV0BdjsbdBOv7YYP5tG5V23hV4d5MzI0yuZ+0RkJsW9ei4RuFSEJu2YKa + eEWzm7f5MwMmPGY+czpDXu98+Q4UU3Ia3YPavYZ5BIppv5/lHfR49mJGo7pK7y68pAXoN73udFEr + yqWLmp4qI/SblxUzGouTku/Mg3s6SZgfjWA7yLQYWVbJQHujEecym3B/pWANXkgnEIK8qVicEeko + +JJYjcipNNvYFqLleqtO/vldyhAOAnjJ6W/nZ2catB6UplWGYd4SQfz1RSGrkJYB/g4/yTR1Op3w + eIUrij6qbabRva+vqsY8qxcYc2plOsJH86iGxWNloWISJQg5whNJVLlij7MVNlEtTEVRV0KeXUlz + swQF4XkVQcGqkVTo71HU0yjfqGqAgz/ZDhzgaTMuRjhWPRWxCJXeXNCSjkz5PLo0xoMSb76v/tzV + MvZOGp5a+WUtTv2PuFT/EwzWj6LciLyFsEnNZfVwhJoqGfeCgPEYKsVqWSxWmGQs9ttgkuHrjphk + knIFkwyf6oCAi6osJsPIS5hkLPBDDAgIQo8pWeySMHM+XVBFdS3rbNdVWQcYyPL7rBKlFESNsUUM + i9WFrOKtnNyjOfEWfpdYU/DFZZCiYgc+4+WgI1t4ijkD0bMkLaBfT3fQDEhWgc6oUB2cNgxWhiZ9 + zdbbTel75OV/C7oZPobdCdc3LJCB00TISLzLAjrTBRyvRwtDpgCDqhP6E6h2ymh7kOyGXrHscZPT + IA4djR9G90Ey4cyV1gPOGdxHxMFX9+vZdPkdwwoMaHg3Zk7VtD5eeGELgEl63YmZK8olZk5PiZm/ + vDwt1yvmvkhKEPXh8zEwVsa9URRyCWiMzPzl/QrEI1n7Drby8HQ5hbkqBrET+KTCrAFmiBFgm9vl + N1R3ZFjlPPuazSVSERKYSAJXRJVuhpebSbWesdYe8me1Gl4sIl6n4T2q8K7z5sCUkZwvU4QQo09Q + SLT8XjgD8Bt6zqTamJashussnW5v18vdzW3RWgurgj3mDtIB7gMTcyL0nUHJ6zlEWU7C5DAdRoKv + 52Z9GacSk2okXkfPWFsfKrVxdqGqLmwPKj00yUV/V5HBxjkqn+lvPE3/zX599e8Vk25HiyomGYVR + qIBDAgv57no5b8FfHMH2D2TRtUAIGchEN19eTu82K+CTB9fUNXtBMI+8tbcZCP7APiZfOorzescw + VSbeE0GbMvH4umOZeEm5UiYenyq/46v/LovQLAm8pFIlXnghF2wEP2QKhyxWRbePLImhf0cRLHta + uI7g2RRvOuW0m36vyte9cVF9HeIYxtUh1AvZUQWTrShkg24cRl5YYrPX6RariRdl11KocAjz2CBh + a5KD8+r8NU3fSKb9omwN7F3C672GNYVupf/pw/335WQ5Qc/Ud5BcbnebF6Ug+hneA1OVFIAaqsqr + 3GK1D/QczeA3eF74nAFuDeOO4io/OCRrUc0EtBBdc7ldcd18Io6XsIGVE06RnDr5B2i3a7DvNF8J + uDGKMtahTdVSPD2WehO4l8coAePNh49dEWz8hOn5W9LUdc92SnixAAJjresfMNam/AF0UKl+wFQc + UUE7BI3+TsJhkOl7UPOnkeFBYZE6ArvAfdZH7QNoT2m3hd67Aw4ypVVsZvvLHTThDQqPVv39OF3f + zEifv2tFosfSC12j/BVSUjEibh+IYAX/6TGE5MlcKqrHVN4YLasLHIAUJD5hVrtLD/v8Cn3Qb0Yw + JJP1+3Fxwx9JXHMsYRADhB+1RLTKGzkjBuhObMQA9VTFQn6ZKR62wRrxGehRGdkztPhJ9XcH9Odf + m/4+PAVCA6QmoQFD5ukCn3FRwi9yQ1Ux6r4JC8QdpeqITvaHhTDionX5Eg+vo/SK+ueHpF+UVq2r + iBFGFpxhZXMcJO+8uF26Ohxpe/wHHIUO2BJE4HjkQBU5dNRXMZizXCi5PiZRPaFMj/fvPb9Fojq9 + 7qSdKsol7ZSeEuM7+fQWRawyGnlcSloD9TTgoE2Mgtwk+Jpqy8ioBZPdjBEOeVQbqEIn2xvGV2P4 + EaxMgkCmE6lnMhoCVllafHTFFdiuS5DSb+6VTos0vI4ZpMVKMF6AKWmVKJLc5iXj3E0WA+wvVT+n + Vq+NQ99rdPEUezJKbf5dliKbsKZy8jHnPog89bBdY1OZeYsQI9tyZn4Y8iYsdDO+walBLn/NGz// + IZd4IHegcWElYdC9InZjzOUDGjdzVeNIVSUhnbqw99tJm31Fmai8m7t0sl7uGUxT7CcHBoFvn/7z + k0Grd27sRxQFsJplE7ioEKN/Zg1Dh+DWeeI6ViFt1BGSiBL65fY+XKmjSdgNKJvvol0234V7Nt9F + bTbfRZ7N9/HzOWPVfL4Q1dFSPp8IBfzfSIRh5PnajU/hp+qwa2QG2Fp5oaQnH89Pn5r4tfkSTvrs + Dwq8vlpub4cbWZNCUcCWL3LwDVnIALgXzGs2fPv+zVs47NvZtaKm1J4NuTxkmG72XW5rBXv8Ifse + RoTbJ1/BfIAlBiPBGfhHukrQpaSsekvYNTCij7sV8zyd5ID/YtX8QeszbWSBxuSCxPd5XA1SLAg1 + ygnVcKEganwTfmORtLkIPr6/HF/BKJFVm4i+sT4gyrhgXwle0+VY34OM9dfC1pPbxcXH86fm/tnf + UaVQ3OGONEG1wnZGg9cUT1FP0FpA12TzMEnaDbs8FXUjD1mlul0rmvXT22421oent93GqABh7h8u + 81pR3ywOj7fdUUGK545T247yFnnSBkH3KgKYKMUMFyGNuC+goyqpA1/dlDqkxzb4q7LrAd1iJvU4 + DChUWVDcrrUKI1kfx6AyLyl8Bifia3pD1d7xOm+V1CI5kBSMih+FDZwFkgIlggHfQ+mw7o5HQFpl + FseSScwEHvdZIU2QlkDV4ZIxa12IyTmqveKaSDt8bZhP2vmhkTqRS/SeaLomj6HOiti2BWiTY0ha + WkL3bXO0upMkxqJXe027DKMvrSdgHuGOycPdkQhwJK8GD9ka2nE+m+NiEUFwrcx4hUQ9npRLy4cM + M2cJWaD1CLrUilIlmfZK405bv48gRbis1V4xIORHBUaFKsyF8RZKJr3uGOYiKVfCXPApKZn//HBS + rmoIq+aJSpiLnzDOg5Gf8ChS4FfGkPVurNCmVHbsEgaRZ3yrX66ejoahN/zyKjV/A1HlnwzrNktH + o9Tr/nmXVosdtgedYwnzeRRWEt0k3imoEGNzkHHN1OhhLCosrIS5uVcRiCua495O9KYdDddqm8uS + hogoXQqV8cOkWmC7rmcjiJoFQe9Rbniz09ibiw0omkYWfallyWx2c7sd61WDaSpkDpVqI+om+d74 + RW+OJ/9Uvz3F5HB95GGeyHi3RRPh7m41vF7uJJqXDIlc7rY0BJAKc+AbDKO/K0i3NQ6mzWyLKXYy + vX2aYRY6ZebJ4pp6Pw1w+5tQHiF6KrxIlzU+6k6DPDzmOgIGMpnt7iRRELSzJfA3J/gTTREXHt9u + 2COudFiQUJg+unPyHIrJcgcqylSvY+dojSQxfr7uZHzgX8bl1DWFQsGaMmvOaFz2uf4ngdPQ1h4V + mIjTJe0JCuEs4txQd1nb4pCdQkNYCGwmn3L707bflmPFndUZblcPQcsBgkVx6z5GhRSKphk90Gvs + NfXqvmgPg36ZC8I0M/rKyJlGnyEtYUThP4T2fVQZeZIHq4RG8jfMeF5Q7EK6wJfQIqEX8g+53Na3 + 3S2/koyG+QWoJiKkSEsJGfYvRQxW57Bw9RKvcriA2/YdsqY95nbh//T+mhwgkY5PZOFp8szj7erX + 6UauMYqmEytKUT8leTMv15xJ/KClCoWVEfyXErfzfj4OxpjUhKAwSxkBVQiiKffFA58LRtH8CWOF + WBU0pR2bfafCxa2Mtk06l7asCiG3iqCdYIUP3wvusRwtEw56y4brI3ojJxVETaRG5qk0Xd3M7yfL + zf2cMOVbJ2lHoXDsaAVMsHtHkUdcwe0MHBPXpJmDqW0pfPGM8VasgZq4MgbVgcUW6BkpsOvpxhRg + yPE3ivCT8CFwdgc59yBZK8dLBAoyfNkLVWJPQnD7VSI169KEhIkgx7YI343ckUC+GskvSTRAEBOt + AILgdVeAIKRcBQiCpypm6eJVpbgGFruvAAQx4UVcjJhgvlBBSxvbPXKX/ht26EfQ7la36TidZNv7 + eeGUvdAyZKY8Gh8REk9HJa2ne+Dx9lsYTo2BIYT58StQs7oiN43rY3VkDak2QRI2KOVWR2VfYzFW + lLqqw5SLxAHaZefTxzFsPKCMdeMqHwBTeTJ8Iid0NJRzOcJnwerpi0LD+b0ZEKzBXbq412M2xThg + z84ls4G/7+bbGayXvmfh0WYHr6QbUtcNMNpIZpiNKcNsjZqnlBhHCuV2NERhSOGzEQLdNpsjTB7i + c83m0Bti4eJGNNg5IMdT5BIp3IVvPzDJTpdvzCgB/1hRIoStKGVc+GIE0t07kD4jatQAWtUVryvX + ynzSluT2carUeqhls8V3oI6UFJTdT6TTgvZBdz9kg0daa58k1Qymkz7I9RdI63t5DcLQ89slQZk2 + zvkEqgs7nYAe0gWVblc6g/NN0T5g7NVvhk8MKvfTwZuxV3lhIGlQEoFHMMsgbhbin4+GyXgE1sm+ + zHQ8ykv9TW6Xi+kaoc66GhadNCiP13XZoE3nNoPcJIXDyeFTh2+eLJ8eo09FBOdVGE4LrC2Xpgdw + TshDaM/GbLHIWvvqDHP4kXliziUfA06aWN8L3Zyo9iPsen4YR0a6mHcArPpBFjTnZXoA65ajRut7 + LC+H+wouFS9oWQ6XGrmXw1WdlMrh0lNVDnd2jYi3eB0Va0YXUIZpbw72/nWYnb0R6UASk/dSIuJB + bxWtRYnCARRkNytX1xxXErULtsH9EyOa5VCncQrFPff30kdt0CM72iuCcVV/i8UtqtfR6471tyTl + Sv0tfEr7/O3leTkEgftR6FXqb4WxYIyN4EfgB/ur1y3XQL+met1fCJbIVJ0LIiarXj+GHG29q4Sy + NjE/dt9V9LqjtUlSrlib8Kkq5frhvAqBmPi8bG36RSQiEMFIJL4EoMNddWp2h8YDvvysxXXQeAsp + UhZwPugGYxZfUoBojko+GlaLnNWF3X5YrZhHMbYmaavgMpSRvWd3K59eUW/Llp/FcLNYSjx7Ki17 + t6qCyRA+ualx3Vjq3kKrDuxCEFZWXph4PvMqITaFfqTP3KknZPo/qadi2BAH9Uh4SSUVhCa3po4u + zBCz4mksGErfSyLhl468CC5hG8zucEMXgNjy/VIKRg+b4nXseSnaBjUh2DDcu5T7Uu5Ja+B+YqdB + FmC7rWmwkhHsjD6LRTGb1R0eqDEgNZcQbLSKMi+OYkqE/JMe1QEyqBzBO6HQI0H5k6VhtZXLmqkc + DJP0OSdzRd3qtFTv21BCJp59g3/hkd0ZyT6F/9xTAxea+22CQchrAn1bqszHBPMCtyD/aTOnakkv + pGCshE55O5Ms98iOJ9moie7Lz85DUWnMIlV4evK4uNmISQznUjq+aF3AWQs+SUzy9bozCXkNyFmw + b4q9g9eyEqEJvL6AxXSXleh1J1lJUS7JSvSUZKUPv32qSOBewmxZSYAEzhO4N+IRT/xYg0dVGPDp + 6YU/BjGkBLRWCA3OyyhI3qwqqMPXlqqRA98FWWWD3He4StfbEeISzRYSbFOaZkzNoOGnl+djrEJk + MWHkvTL+M51NJTScPaJsvlxQNtGLMn8/zb1AqkgcfNzHZe5E/LDcVsOUzZdPillb1qXrlaSFYq0M + uJCbimq1DH6OY7hv47IUI/42Dv42zr4vDfdpdEh6LApaUrfmVs6bXNWiYmrV8QzCRnGBJV7EwzK0 + 4HHlNws5fBjyGFWkpuX8/snJ0+E2nc0RwXK9zRZlWczjceI0K7mIU60WZbaf5Afny/nw7AzZ5d0S + DYG26BdEhzZLVf4pbELrlCFMovGzrkF9rTkR+XBHlFIzRUVwWnCnrpab7bi81EWZcPNCyTlXE381 + 0tANyg+sbgeTo7hINxMJ5gCTrxxqxUpmed7jyenTATIpE6odR1TBlMfFdKRqfa+mZXWyKHWvj9qY + HieC3Hljpr2tdBfIq2bP3hoNX8labxoso3UH0YEOiIqeYFOGLt/HlR73lV0AeTXWN3jOlNv30RSy + DrzGAuo1eCIOjvwfAib/ALVU5FWDTeovJaf16RXCS4RRTkjGAcpiBJ1IHSvxAaP2pSaQI8vovXEQ + L6R2rXopYXJk9ZHCbverPKbmOnZSB491MWkhN9DhZ3ErgyC+7hp+FtcZBPEpCbkX529qws/iSn26 + X3jM/CQc8ZgLDLtDIfejsTGZVN5CsCFeZaYkorra5ojtVK0GaGXkb2Y3d+mTyHtKCE4yIb9gsIAF + 2d3cbmV6P8z5MLfvXayuqyFsyg6225TlxHKFtoLMApKQV02Sc6RUEEeIUiURThkgKrauGkOaz5nw + 95MvC4QlQ1fUaOiKm9AXGgjnq0arqJVas8bS7lOogWqb6nmj1KanadDvftpsZ9udEgHDUE1DnnwO + mpOqN3fU3hvgAcoNVoIEMI+Qn1pPWSsBAdgQxSmk6CLTEsn7y8+02rI98IbJbKP4z9rkg9OGe3Kp + 3h0Ng2fK7DcyBGoc+00CHIwkrI7E0PyRQ+nFVvhIzX29SF1eLrfMWyRLHGq2Z6OiPU5JmsYWNyqd + CPjTZLfeLGvk18do2ZJ8ubDNGnm50zxpaSDU6QPJW/aMee1Si1Qb1wQC3YWVQaAe6sSB5Wa2BU1c + 6qEGal7/JnOXC3F/LV8vjkEmHHEVFxgncq9gUL+Mqq07J84xApGndFWMlf6GfrEyKkfXmByfkHr0 + 582m93MzA/vDmiso4iBNBmFObEl0UKcAXbUvQGU/9pgCO1ejnM9Ws2led5PwkMt7Nh+sKjYtJfqr + dA2bCjrMVlv3EpQ/sKqL4Tx+JBvJLEzU9RQ6RbqFC73zXAaMk4NBbqvtbHWYafm+sGcfvW11e6d4 + XroCOfsUA1lHf+yPgvHVbJMf0GDs1qXr5ByfVqvZoUq1PD1NwqBlfSTTxo0d5l0U2KF5WCkHUYxR + LPI0h1eKfWHYGXt0tSF6LcvQQ+Fax7qwtUn8Pz/y54GrM+ijYhIP2ZvgmRe0TEqmNs45yaoLOyWZ + HuqqA4ZVAF9ZDMr/LlKBu5/5gg8GR98vnbKAO1wqbbm/XiNKNTy9gB3hnmpIrzvZehTlkq2Hnqri + Xb+99y1bD/NELOQhLXo0g+djhuUw/REDOTeM9scUTtbQweQ/I6bQC70Y/qFWlOUF/ALMnG9Xv082 + cS7fRx3Y1fvkM3U5zVOZSI+Gy7uyqF3548l8zYdPzj+cvRoyxn1QPBi+teaykF8SqCspoLgQ3dwh + Wc+9ukd72s2Vt3qrLRtHsV8clZmwHqKVO9A+gDkSyLtV1pk+ItmMmQj/pEP1mqRd8ZqkrnZNokvX + mJB+ugsHG6ytNZvibFHdrT1SVU4bLxQeBXSfcEpLJEqNUkxFIztWHGNB7JNGB7pwuqfndpI1UI3z + z5m2+KA+hbqYbr99hbJaKgyPQUzDvRJV90pLIc09xY2zwNpgR1TmUki15V3R99A1wzAV+vhrxttl + BJk2rrKm7sKSNdVDkmm+ba9VyBX8hhMlwxrpf/SIxf9spOz16kLEgbufjV53kr0U5ZLsRU9pnK/f + 1ASTBUlJ9Aqf/wIXMnrgRvAziHwVev+64P+nvBa4wF+/GXMEDcRYrkLBauiJvdDgUvB9uROCMmWW + Kkx5uiOMFV0tSSeXFhwi09nqdnsLDGyajaS/ZbeYwS6R8S5WehPwZgp3gSFgMj5tQ4QimMLrsDMn + MhQG3zt5dU5uGBn9IkdM3WTrWQpn9zvCjUnR8vV1TTSZsaNbwl/sN0Kyxz6IsJXY9WLSUFaZ3Nro + LxE1Bl5bneQA6FYCWKEXG4iCNUV8aaqDlqvP/+yrD7zpP2vDD/AT6Lvf5OFcPEL2AA9VQlMYJL1l + KPolCvYG/fVgzPjRxly/CAaeHe6xv4ibo8NkRETCnSMPeWjihzGeRUIK0ls7WbjtmvWA7Ihl7wI1 + lJ/nvBNKYqzmG3Rx2zGKVH/73vNbCBf0upNwoSiXhAt6qoJ4zj7ElnDBoxiDQSNbukie/wKjZZ4/ + 8hnme5FscaFD0GV6zofXwGiB3tPhWSH2Qs6PqjxhB5hczO5M+Df8Hj9+Q9Bs8TXdYL2Pm/Xy2/Z2 + +GSTLTa7obVuTy2SzPeaas8lHotEUg6bvstmy0reFuONVW5qieg9WZ8Cx0I/Dg7QG5wrErBOeqr0 + 3I0qsTXFNZYswgRy4Bp7TFa6K6K1pfMv6DCElu9eyEDqgpoDfz55NlzAbTgHPjY8T+dvXhSyyDDZ + LF2k2Xp5Bb3RQgxwF5vSeR4TAzX1dBrtRSsN5Wa+myzh1zmMYNtwJTZCQDPCcNKL5tpQrkCRIe6L + NqmATxnlJNBerlh4rb1cqo2rl0t3YXm51MMymKj+qidX62U6JZEmQwkJlMPZ1Q7n+OkAsRSlWKOr + kJZ9XbpHHog4CmRCtsyxlBNuRQvpAKAOmml3ENBDjdz1+ZDwokvx4HRbf3pzdvbqCFiFTt4KAmN+ + JEVmVaH1k2MEEBYxwmjKsWjHWwTc79V7nXCv0ImUM7t9uz7fVMzi9XsvaIEwSa+75bER5XIem3yq + 8thO/lGtiutFcSWRbRzArcFGQci0X+Et8dWxipOeXc3zGuEq5Sv90rmabTHq1g9C7iVB+dKXTtOx + dJq640Z6fmMqO+ORz3U6mblq3eENSxiSfrt+bjFPCOuIEpxQQTy2QnNF3IhNqekOPi4X49zhUQAC + 3QtTqaEs0+3pEK+hkZ3/Dcs811ns8Op0g/z462y9Ax25gMEKl+RNdWMM5D4zrrIoSnpCkOwI3PgQ + 6SMgPVMhL5xA51zcPtARm6SXo7QyzaMiZR7lceLOo+h1R/OopFwxj+JTpcF8+sS8CjIJSAph2UA6 + Rqc1j/gIfiaBx2qUmE/3bPiJjN4YSLfUvOpiu4VGj19DWWSo7X/NSrlmr/JqXuqzLMe1EE36AINV + TqI4zhWCOvSG7Hue/nohkYExOv0inanf4Lzcy4qJWISjkiSpTrf8/eq+mqA2khpCuhhenF/oqhJP + Jun6avn9PmcN6g9mi8JGpkdPVc0aG826ODu46NbsDGhPGWtamEQEJvH4kw2ZF5BO0rATrO8c4WTn + cZyunEN4ykdZXDlU9iqphaXvUsmjY41B6cRpuoeuSw9/SMWrX7U2+WgOF2s0Ad6Cw9HrrmgCvMrh + 6ClxuMsPLyuJVl4cRhUhjDMexOGIM8Ei5f4pZP9SGjEbDT9z+H+f8o8/B1QDcoPY0JjZYmBf7sYy + wVFXRwUOd4eHFZX3OVUYzXTqDBEgTnl5d1VNpeoDKqkoI3lCFnuroIWvs/GdVYZ2n1cm5r5dlraY + Dl7sIOeuuuxetchqPiGl7CWRHOxkcIoTfXlnbmL49eULsxq3GZyF5S1IACkBb5s0brmil3cSMhx+ + cPoh5I+MHn7Hf+FCw698lRe7LS61tZiNG8TUo5Vj2t2lNE5FfPjybwPcp3lCOdX+wu83J/fw1LWy + CIeC/O53R4H7xILwoa19485gji1GGUuPDNVh/Ry4Gh/ioNCKObXqGyvHDwPyxHz2f/0cDr/j6IHN + jWlQPw5tRjBOJST3HXxVHSTbwCbK4bb2wJzWAqc/REf7hOvExOa+TJ55omVsLrVxjs1VXdixufRQ + CcqF2r661EfdsyI1zM8JUbVTbsmC5+6I1EZX1NMHSlhz6d7R2eQaOsM9betl4an/TMqm7rZe1cbV + 1qu7sGy96iFJJKvZQmlPpJjezzHff34/H05mGwINycMLBw7vDM+B4gDJytwGzjSkbmABTVwv55V5 + rAnBc2h1mDVHoEJKhd8Uy2hNgFAyEAy8dfanFwmSsW3xHWnJGu57BoU5ovhOTTolxuyaG1P8bZwt + pnsvTve0JmXsleOazlCKdVaNHoUN/qhLvHURr4iUQJeD0dJf35HyQzjzf0gQMmfaSB7xFmBv8nVX + IzlSrhrJ4akyQH14FVZt5KGogL3Bf7g3Yr6sHoLMU9tULEtqoeKONj7dTcPHb3o6Ikvi0DwMcIpz + 83ASD1ycr/vRfHzKFyrO9jrbIJ4X7GV5aazvDNtNc4SqTYuq78ZVy0UOhu+1rf2YN3IHw/cqtR/z + p7rWODrgx1u8CRRGT9EDW/Pnf6YbXnpnQ3kfLIn6Q8CX6qLsV1r5scaOCmBa5ugex/QgZA/wgcAe + 6/rpfo10oL13k2INPS1B5OVE2n+7o9ujTZWV42L4+ii10vbS7S0M0I9pl5ultU5J18zrWHC1dcrn + roecgU7UD0gBR8cHqIrs3cahGauvYbDaWGffuVtn39VaZ98VrLOvTqrVFliMbKxchTGMwjAZoegT + iP2ZkbdroP/XzozcE2D2As4oqBHK+wBX+zS7zibSmYFggwvU5wphRjqa6wXGWqM/+d7y9RQSjQq6 + VCFtMN3efkvvX8jXsrU2ip7f/vFmuNmtsjVlkI0UhBPM3WY7RIwn6Ad2o9UXekrSP2Rg23o53ZH/ + 4vd3Z0leHTGSZtEE+Bfu9OPrlwkvIbDH+lT5xtmq9lINNPP6rDfcl8AfaFGKi9dh67RD3chVlDKd + WKKUfkqnWIz88auZBK34fj/m4yucSCwq6Y9zsAxT7KkoQWHLaaeW1thQBgsiksESLkyE8vU8/So1 + NJdN5nyZdO6hZ+0/oiNUrrWGTkl94DertJP9sJOQ4dzIsbAeBb7dpTcI+QVHedYVwdKLFap903Yb + 1263PlKXe+74AIeheZ/fdyciPOYHNO2LG9hBQKjztPcF9cktcK+WWZPUpA20Vzlnkp4Rp/uvVxjo + laVbY+yvhUfKxZOT2YrVgndBL+gbiJJAVQiPKhXCl5s7aevcNJT2dt2FAkHXpMAux3oNf5Ums2mm + ghW6Y3r9HOSR/syefeqEjwdkyxecZugo/2ZHsBYeGWgP/kZmG7cTUEwrZ4AP042N8aEfk5Yy+XbN + uEbnywVWO1qieFB1wXcVN3I6nQRmPk8lMQ0DEsd+kHjQAp9KWYQL5fE70vnvbnj5U0QCdDrMh8IH + pCjWzyw6UTsWmr1fo04fmYUP49d39uwaAC4evYF70W/n5deNnGERdCc2LoJ6SrxisbtWrAIToOf6 + etysYHIxih+jOK+W0/tB5YlZh49AYoB05C0PLFnygx5cqgERuIVXaYNuspt1dtNwgTcmbh3nmvUI + Wa7GGatnxMQyTG6zyZfVclYXx9k5reyAsO9Jpptut+nk9k7BWOuB3c0msES7qx3WKwEh68tskUn9 + aX0gk9rcikd4eg0Nn7yU7YeoEvH1zJw5WDGkyygK7G0zGmKdlPWSAupUSaJ28wxEdTGTaQacYVrc + laVpbUc2tsnq29OV/I8TNA/wcqbAZcpM4gcLmXCaJHv/OJ3EVhm0g5tdsFAlbXy4dI9o6+NOgmvB + E0UiGHs5nRWUlWb9dk9EGSckwbP3ICO7m8vpdSdzuaJcMpfTU7pcTl9eVIKZOfPtZA2fPR9zxHFl + Ix4FHnqLZIrpPW76tcRCh0OLBlZU9clofnq1rgYeS15SBX2JksbQYj8RXtlcnvc7vgoKHdfnkIHe + cJi4MaHrM1RA1LIyxUC+3ktt8EF9Yjof1s/PSJqp7QxqEL2vZnMYukqOmGbbDOV+qRMUDGovJD+V + G07qUTrF9+PJq3dmY6vUC2U4p9Bg+I5bGSxMTnWqjYV33BmaQ26zu+XNfAkEsrtZOsA9YSzkwgsG + 8hAR0sjy+2yq3fPKot5GJnfzNDYEAh7vpIx8VqIBC7DcIZ5WM9BY/Wi6UDowuFYYu4doJc20Og8w + IfuZOcQuU/VIQOGQDeirai/vcFr+7tT2znDikSBmmNBEGbG6mmD9hOlDu+w8OnVZCU9rRuIdaCdJ + O8VItXHVi3QXllqkHvaL4p33heEdIZWaf0Qo3oIn5JgvkMq+Szqy7dd0slvWaW5u1lJBEhxcrjfp + fCyvBE3xeEDIHnDDHwf76Av629UKIZg+a+GbsK2PgZq4njTVgXXQ6Bmds+V8dqP7tVOcn2SrzWyO + lgjKGHhqnazmdqVmlfOoRoSWCqZyFUI/tkLIC8vwcTyfLb7ABN/M7ycEzdbdefDDoMe9mFPyavM0 + HY0y8jiOjucH5FSYYnjH7f18PFVIH8vityMGiF5duZJuyfT7PyDycybejZQ+j9xEOXhvmPfMY+2i + HFQj5ygH3Ykd5aCekuJ2k65Vzkc1gezJxcfzp3leonQMxIHHgyB8OpAlvM+Hq022my53awxLL243 + TeMt0i81xT6lRyHyFCwzC/LiScUyudXpbU6DcK/01QeNB64W9rM8D52zqyjfMU8IllX7WuQk7lmT + HqgfKErfTwalc96js9zzUyubaZ4ltAwRRCfIOMJWUoRu5CpHmE4sSUI/dS8nYujI+9+nWmLdTPA/ + 7yz+QK+bXm1f3VDnLzl7HcE10crPnbdyvKMK3RQvqfwx3VLZYmkgqOD3eTluru6ZJBO/BCEwmgyE + QJMbIynQI/QdKR/IOopHHFEXYs0Q86r4tBJkVvfr3VeMmcKQKgIw68TROm+dviPUfHUAmr+vjyj4 + Izp58MizvqLFRGD8ycHL+BlrIziaNs7eZNWF7Uymh9VgEwsNBr6xEI5dPI51QIhWb1inI4jIpfxY + MHlahKo8LACQ4AHhSWok8TKwJBKoIvWs0LeItoSffdP9qJzdHx2p4gRE5C7vdYY1yiVGr+bgHEQg + byGRdqJ/aMy+tbUPIE4d2V3MKSj1j9lisp8huwdEO5P8IXeFiSyOw6R18T/VxvWu0F1Yd4V6qKT1 + 3fwa7+Na02bxhqh7sWzU092hkZ2peMRjjewIHij3X7n/43aEK829MTV91t7sXjjzL1vjqb+qS7ji + FGaZYYwPnpOUktusLdBHjU89BwFToThHdODsSTDxz5jy1Q6pxrRxTnRXXdh57vRQ8RRZm1rhYVjS + ucVQym9pV8FlNmF2AsMGn0iQmjBQIqhPrjeLSNYLrkoX2vtF3YCCAzVi/5EqrQu1vRdZoKqsm7x+ + RISSEAxwTF9fdBhbb9WDew2OiCqL2IvH5UHiLh4Jx425oAi46tFtOZ6eqooLFal9ev6SnYKO3Mon + kzdyROHKOynCcJmnOibhDsYKK90ckVDzwsndlsFftsTGhKAIhB9QL+NY+SsKqBJqcTyLHUxjrZbc + VHwD9GN5G1bn5mFo7L+aldkdg+Lu50cM6REJgFH59NcIgwdjbx8LFwpYUl3oXoUz7nlNO6BlP427 + VeVh3c5ubofp9fVsgc0r8mevfWummRjgwigJ2vmETBtn4ELVhQ1cSA/JPXCXrpRz4HysjAPK5SyA + /8Xh00HTc2xJ/DLhvSSzCPjKomwnp1lHuKo8B1igf+9UcotMwzMwVNc7nXdxoNxeEElGlX2X76nW + rRIeJBmm1LrbDA2Fi7a4dPvbu9/BvqcqpjGRtKmYhq87VkyTlCsV0/ApbaF3n98HFbwXniSVgmlY + hZUlI454QdF+vJebObT4Voler+VdViUvYHJWdPhlXgLU80MvqVQvfQzILzKiHPjNm5NXReYy0vIt + fu6b+UQVD4DfsJarSkWDTQJ/xTjz1xeDN+9PDUi/YF50jI3n6Gjxx6Zy/CX1As0GTOl5/rZlIWnd + xDk06m25jLR+RuxgvZrDlylrQ+hdFuCNtVILzOM9CweNf/wV/6royGgnEQl3PL0WtoSu6Hzk7eFc + rV7hImm7K7sFDXVDYanWiW0jlSXkXSKI6nzZtGGoFTXOQ6pdqr4A3nGm645y0WtwkkLHzDvE3J/t + bLtTyZrN09rCQ9S9k70yAtdVVePIPcmNXnetqoqUq1VV4amqm/bhsooJJwJWlhHGwg99LxrBj0TH + P38wMGTwvcv1+HqdURXpYokt9PvBv9PZWuOX6aJqd5tq5fP2NdW8OPb8gP2rTEk7Wy06oWgsZmbR + yaWQ3dXs/+5mhPmhJFyQdrPFHzDxDVl1pTrtVh0NL06gn5KEUpgiK6GOx7bI9PZsVCyACvJy4per + r5nxFrzy5nSlhCRXmt0wYOzQgAefDd2aefgKp0UC4BVCKPZsCfrWFxK4djNMVdkQu2IIlYC5mjCq + CqIVv92eYWCJ8+UqW4NAr6o9yfwjfGVcKC5zcfbx7RAUy5vMgLRuRsOLdMpiXQ1qGqwGeDDyQq1B + QHFEXlK0AaND14yo4Zqq4/i64GT9xFRp7AvuDahepMu6d8TtQ8ijijEL9+w0vUuxKsJ2drervSIb + tHxfhCpnAUsF2gXa9Zj3R0wfQMOpw6M3hLNuk3EE+luXKn6Ciche2DoG1HhfNpWnAubE7e2i5+Ug + uGntt/WQQH4kvKqmkmjXhYyoLs6V8xfuvaqFVud5q6saX3dV53ndVY1PVXGt395V8tGZYNWrmkee + SMIR/IgilY9+ubwFJRWr00lrOHyxEX7sgtZ2nMpGMsRSDb3UutNpckfENbHgNvx9+205vr2/WsMN + srnfbLM72jUvhnepBF75KgtEDjE7aXiVbb9lGfI+2MxXmo0CGbXfCMWNBlIKnaMqXvhlx17+DYVZ + +zJBuF7w+cUbxz7cu0GJTk183DloGcWgOIu+CMOSAFGmP7jMi6qiqaIapkQ190BCVrzmxdDcpfqW + RWyPQiOlIEhEFLziGwhj0r2+uK3Yy2yOskBWLKzzopDQL/tE29Ra8vI/liAdfHj9SjDT8QBPSn53 + J/LuxsnGI19YizZcCiaTLlqMs8e7GO9kHNXXbF2PK9PoWnokcaAHOiAI8iMjMpsFlx9R/RHEed8v + rtlmhqBYRiycdoJk8gOfzOl7Jr+FTAE8myx5pXPmdgG7tz6AzvbDUkH6wp1hoYJmOhRZaaam48VP + uO0fLljku1/89LrTxa8oly5+ekoX//nJWaVqsIh5Cbc9eD4OGbppR/BDpvzhxX+qpU55Cm9nVzNV + P1jNvaxola38lbpOz9NZTfFgJ628UMKbYwBsFJXvU2njNUES+XAa9OjS7ZWrvhZ5cztScn66PqTv + onR0gPCgOG2FmToZPpGT9TQf/GiY81jYbedXG05q5LvlDYhceixfJIGNhLTRcLGw63cKRh5tlaCH + 4l6f34OQoS1N2XRUrCp+m86vQWKCpQFSy/U0W6s78zYzoXkg3ZXW92S4Wy2l/rCFlwa4nfTt6Edx + OFBzgueicQ73qEvOpcv3+/9wvY0jYN8mcWJO3akdKH7RleyD1DY3yk9MoCvpBqulziaEVtHTt2tG + KNN1fj+58MLY3aFJrzsxQkW5xAjpKTHCN+9/K2tALBG+zQiFeP4L51wkyQh+xLFihCvtyzOOHD3j + yrOZrqGjqmfzr1TJYmAqU3kS/ebXoZKRAxEMBkffzHqjhDqQIgi8dmlduolrGIXqwIqioGeqEGi6 + eHkeze7QuzpbjEHXTE83GbBlqpQx+AIUl+jpl8VADT0MnvBDoWqBBpbNj4jhZy+15ANXwHLypUOI + q+9R6i6KMEXgmuNTjsKQSO8Z9THUj4YAohgL20NnVczqEqDmUbWHrnT+/JliIbmpNAxnBsrpfLly + B950bH1gEBQmqMm0KELXwmL64wqAtcZ59mNVL6dLrlsQkPv1rV2sarFcjA+HLsVBaDHvntIljiO/ + V6QwGRi+lzzj7ZBjqIlrcITqwAqOoGckWmyySRjWQUlTyBtaJ28W0hgxJBFrbmfmv74oVfxbKt/F + ZneldfJCqgb0VUrVCCWsA/N8FVARUgQLukjqPSRWAkIPgGRHMvV+2O9fIzbpPz0pYqh9WNyTzBc3 + PP8V/yuOyCQxIVUyu+H3V+85b2GRodedFBFFuaSI0FPiFv/17syvKCIJJjoXFZHw+TjwRRKP8FpX + cZUmpLAIXmOw27DINXIXaQWAmdktpqg0/tftTKwksDLi1G5v0602PiLuOOj+MrJ3M/sj04Vp5bUg + y5Di4bjJ4K21rAl3Cd+6lR3BQtzNtvJFWOESSLpUiaBbv4cIjQbnSnECiqQQIKghUpQxnmA0c0kj + sg2x+VzY+llYDqaoUB38KRZngJtPK3JcxGKgPq9qk857rpy2Gsu8Y+3Vjj7uPQbwnqqdijDKCeEb + iIHYFXLgSJCqfhRphYF+4THf3eJCr7thoBPlMga6fEqM7u3JJ5vRiUiEPCyVDPfZ818EiA+xGMGP + WGvfTTHkszV0ULW0aHDVJ5tssdkN3+wWN7Ontk1D8J/lwu3D6gJjVDYFQaUq66BlXc7bI7ji9WUc + GOhjFkbPPNEOmEG1cQVm0F1YwAzqoRLjFzstxjcWjxp89n/9HA6/Dz8HIKTOxpsFgj5WhHRJyRLS + 8QnVglOQPsdWjWp2EfdRJOpHhIb99QpRXd0PJyB4op1c+XvDgOKz926bDuJsT8b/n1sUKpD5Db// + 472XtPAK0OtOd5SiXLqj6Cmd+c+fzlm1UEdUimH20S0QhD4LRjyIpJFm3x31ZQ4d/LW9AXvrWt9t + JxwLWptiuVLqhT34RQX9TCdMjNngw6dTEybLAkQjNDcDBbe/uoAd6r4z6HU3NY0ol9U0+ZR2xsXJ + K/SL2TvDkyUXbT3tl8ATfuKP4EfsH8iAm66hg5qdcZxe9HiD147YYR8OFjyeYHggViFHj3gepAtb + kvnDL6/SwYezU5ZrO76IB48XurRPzajQvofaLp3rT/dcznq/KClUyScmkjYln/B1x5JPknKl5BM+ + VQzj9T+jyk3iBbxS8imOkigZxXHElLSpmalS8adSv0f5TmNkg1xhLnGp4d9md/QPeGO7UdzlIvsa + dYpmLQTfJCiV+2GZH/wB0yGjHwvBUrWBNyJOnEi3DW89SKc4XSVC3gFCeJlJKVl+zSYPai19ME7C + aPjtdja5xdutqCMUvsLEGs8zaQ6jSxCG9aJ5fWUwD8mPeW7EADdUrv55rDkS9bB7p3Maxn6kkk4F + Jo/LQcb0USn31u1J5+p1QuF3yDhX+Td4s2mDu3G2How2gW8Sfl8hWncrjThv5Jz0qzux037VU1WM + zsROZzsZ8bDNo9oGrz6/wZgmVRlNP7VII9C0YOHgAa/ex18I3NxSgRJrWdSiMCG97ijWSsoVsRaf + 0i11cvE2riRteiKKK+6HmMGehnuKsZCri+qCLMQUBJqub2YLEL/GiqdIMCVkaCTkY0ee5Ib4G1N3 + 1Mn6Jq5mbraUWoWQ5bjLl9RsgSHfy/mvhHyNQdr3c/1QBVE2hIv6zcUMMUuG+7x03eiPNylhlbxI + HjTEicaeL1jFD6HQute60I6FfwHvHxre4Ex/KHIwPQMwvt18O1Pf/uTs/MM/no7UJlfOiGLHsHZn + i80TNgJt5um5MEkY9FDg41H49DxQ5RQxJchUnZnV9y+vv+LEvyh4OMwWGg1Ni/FIbhq4gtdYI6Sy + uwZyBxupPog9cgRQ3v6+jIDuqQhNtjYv5jWek8reaBH/mlvx/gyJHirgpM0H77Ut/4C8DsET0kDy + /Wr2KmirxmTR/AU1d5TP/USUxavpeldz+zcmhiSUbkKf94M2sB/GQbFWAM2JhN4ssSOXWQj0cdAi + EEihWH71D8ccmdYSwoCOoLCWE27HTb6k4bjM951kDqDq21Th1k2/FCmLzpSDA5S7jzmyKBuOPYbj + vbX76NRD7JMxu2GuHWZkvz/gaPJNyHA6Z/6o8fVR90wzIdCb/BplYTTEvNeb1lb8wPPqj3HLTarF + 1FDZ5TkL3MVUet3RLi8pV+zy+FTZ5S9Oqmb5sGR89cXzMQ9jHo8EhgUfMsoD9cnDhaQ8ApNp7iwO + E2XrbGd4JM2YWB969+b3WxkL0ek495Oo1xOqbRD9z0Zu6tML5kXuLgV63WlTK8qlTU1Ple518qqc + i8eSpIyXEzz/RTARx+FIMF/GhVmxX1jPcpzOJ8tb4JDTTE4MCMY4NVLvslPyz59hxur9ZonRlAh6 + 2dw8L4IurYwpAV2jjA9zObzPMDTpa5bOYbpTWjO9UYdrGXxACl46rckB7Mvztefj6xQ7FsNhbYoH + g8MBLKWsh6VzSbZZsfPiJixCQ3HwJ1gsOD2PfpQDODCSh/w6xKNjEpCoPopOQMKwd2RcSSjCsgy+ + XX6f1alN31drNPjKgOwtMJ28vgTcKvg+lvbWuDoardTRujnou0J4QDGrH997YQvfBr3uxLkU5RLn + oqfKt3H+noUvyxeyz0PPvpDD52PQhJIgGPkJCCUe8a48CXWOKLzZVtoapnkgieEKCkmCYOOehN7l + 0yp43EjeJBIhIngWDy9lLccXcleV4EgQa/BkNRq+hg+Dk4wghNK2sE63+HtaxSncvCiX75LhmmSv + kPb5i3TFdL6z7OCqVqTYD3+notReS4tqasepBbHPmxwWQZCg+NA1GDYXYkIhIiYqOdYOGHV2ByJw + GWpu5DKiwNK4RWzu6rPKxw/+cttnQMdJ87PAY8IZB/NAUmAthQPYyf1AXh6ZKfVnhbE86Hr78eV0 + 61T33lEouxFuni191+VA6pyLlsUndBtnIHXVhQ2kTg/p5pIFzGy8v0Ej/NlrUSrPlfeAScFelJBs + EIRWMZhDIIBuwYB9HOI/ZYxL2xzLI1Ds3J2Drqrvf3ZhvtAz7u7gHX/GwpbubtXI2d2tO7Hd3eop + Hfh/vrtU7uxBOk3hEl/YTRG3Oog8XRHLMndrdg5bLbu7mre1l/yMxPhKwPLDpNcDVSokQ7VWQLjS + GQs91BY8OnnU2JpYInf1VxBLgQPmvqVuYAB9SFXHVKhxbXyAvXq5RDkmWots+225/tJ9xQSoihQ3 + pEP+Jsu0bQFgEJrlqk9Azr1dY44dnteuKGa+7xO58nRh1l6bZe+H8/eeLR9SqP3fL0Aicbd+0utO + NgRFuWRDoKdkQzg9ecOqAZJBXAqQ5M9/Cf0kTNgIc1A0As/p6YWfg0dOdYoC6eGn6TWrRj7aoWUl + 637y57Pu2wHRd6lcDIPRUgTBvEXApslyDTvGOJBnsDHGWBlzBydkvsNcDow7xOQti24K0vsMjVWU + WZYrtnLfmbzUdTrFjxhfnnxQeDjyMCPRl7OlQjF7P1sFqxfGrK8Cg04na3+lx1lBex2cvTwJTNij + iGWKKgNmSrdS9Sv2XLcN4GLdi5/0Ek5dppEv5iHZtQ8PpOYHlGDx2wX3mLtNkV534geKcokf0FOF + TPj6UxBWTIpRFNj8IHo+jrjnR94o4izylJfvApXKTFUTK06HzKEmAHAMMDJZKdIUM4FLCLftqAAJ + W0gdxmQ/a104I/OQxjfMtkHYD5+JQ1/4XsWUJzt7crNLZVTURzZ+Oq5+Ym0IW5zETn3lie/YlYWU + bjEgFjRF32lygx+7BoMPFx8MMG8Q8WighiltK5WPcTrRoSCxtFOq5E/kJs6moAd30HoxC2OlCjZt + 05ayD4vMd/VHNCGslHbny2Ud++TJQqPFJi2S3uh1V7TYpJr0Rk8VTPzbS1aTsl+W0QKU0UBGDUag + A0fRvjSWzW79FeQGECy2VJgR7nhZZ2O3znT9v43yEa4xGhXnT4Vs3K1hZN9Wg94Iv5B+R4uMKv8K + W2WxxJVCW6Q0UE7S9RWmbyx3a5j/weX528AAn8ZY71sHdYe+QvfnwmuD7o+vO6L7S8oVdH98Ssv2 + 6eRjFd1f4ueU0P1DEUUgWPuc+YdK9QH1mmiZv1AKq4mWwSAMssw+GmSEMFDpbK3yX+l1x3S2uvxX + eqoisN6fV/IEOAviCngHTzj8acQTuNE0JzDAsVIUmGa6pAaM/vJuK369/PzhtzHThd436poxBXVW + 8/QeBQcZqoCWNQRdJyfCZHlLeVVAdwL7b61q/1CtTyr1gIBrXzP4Xkl2cptNvqyWsCrDFKZ/s61P + t0KjhcqqMjV1ptk1LBIoP3BIKGB+eDqd8HiFHqDNFqsFqQPzeb46Oq2BeRGmylTKSMnJ2qyyCUo3 + NEuNAS9hwstiYLHuU1MXOpVWKX3VWuTW6ealTyiGwHgJyIZxv/SbpshwAWt/YCT7piLRCo+XQJwK + s8KEwM1dTikEyUwi/69gw+CNkG8kGxLcTnksldpSQy4nkBBi27RYqKKUtxg1IZg3DFeLcXCednfL + 2jwSOKkum2PwH3R+B8jnTNwkT8gTzwkNqm6RDloZjHIReLERr5cU+tROasWdpVUE3IiFGsx6Txrj + R2GWKp3sqaSBW6KoA9ibx0UAlgdLGmIbDqGbWaZt3D8wCakm1PCStl426vkgi3LS6rpTOxB6fmQY + bGG9pSJ06E7Z+7FaSAk1fJNgb4NnHm8F36TauMI36S4s+Cb1sJypStBYxmHf+IciXcRPDbkuSBtY + Hvrr5fw4v6tgARVBL4J2ydP8DQuOLdc3oJA2pcm4+f//F/z0rwB+auT/SIV8sqBFsDq97hjyKSlX + Qj7xqQpWvzyryP8+i3g54PMX4Xsi4CP4EQcHcjAWc6D/v/A3rbTTgGEQVNsrsmBlbJsA0geQQRjr + q4GLd/4zj7WD9tONXC8H04l1O+inVUi/bH2zRN/Rcm6HolqIffrv9PXp4sv9WtqgsKRg8Qo559Fb + xijKCw5IEioMbpLdJBmJJeqSW/oDqyiEkn/OZ6tZ+wCHXNqh6AD9kUfVRz0a7KjV9fUwQA89XgWK + lC+URNk9aBS4FB3oOliEHmLKGAXULb/fl85Me5qafSSGfSQvGX+G5tY27EM1cmYfuhObfainChx0 + NVUxoZdjMlLnNZGenH84ezWM4zgKAv50kAf6So9Wnv7x5OLjRaH61wBpSkzQUDENUPmkNlbWY23l + 7jDaT+RRlcGCwthW8+wC7JPvCM/aslZRhBbaKYjh9B0NeACXyl0Av9aoyC06CphKEC4hmbeI9vph + xZ27RLySOqPqPnevitaazJ7a4304H33hJxaRdDG5XbYqJbqHxMFY9SiHL34TPfP8dujFsokzeDF1 + YGMXy2fEnda3S8Wd3n46x0YXt0sdl0NPhvCEDfA9UnUZJ46TUCTeVbqGjuEbs9UWrktEfXG03hiJ + wovkRLKRkLWyxjfz3SRdNAo+DlyMhXSjI47EfLa5lX9E6LSCOU4j1a+W5lZyHHDEQ5LQZNFvNUsm + 5lPVbpGSUbsEwAJ9Ci6ApTCIGPVUD89Fwiniut6AAHOsoeRcP18g5j2+jcdhQczkC3zPFlnrXntE + I8GEIGsOLVdNh60XDzqLJBNM53AFHNpqblgocCxCcwccnNaGGgheQukwpfPkxth/RA7H0TdK3ijO + beTpzzG5CFg1yb5M4VK5kf6Atsqv73K4BFMidvZdFVJFcV0u7EJKp1OiXf1Qp9JaAeNxvrG2s9Xh + G7u/shYJgTko7la8qQ/znF7igxqKknVOrHGgti/GJmI6vywJg2de0MYuYdq45pfpLqz8MvWQ7u3t + 7Urd2/DBk9lcSv4fgZ/dT4CV2Yb+J2evTp4qXYPxiLEw8p4OGtt9QtLlt7E/qlAp6P4/UNm+Jj9k + fwMHywNPFAIwnKbt5LYjlQfBM41ZYPKaOtsxfmw5dD8m3LDD+8dlID06miJa5iqhEUkANxhzpQc6 + BI152hYtDrpImrqgZ/d/YD/5fFCq+K51VyBukHFJb9qMwGK7sSAVev2ehf5/jU/cg69VA7fwa029 + HICtnhtAGmTxxXg/4SM0rijHYP/ig4o88gVTzrYzhAvE+F7JI5RfTdWxupdO/ItP4/PTC235X86h + 32/j9D8ioozHiEppAgQjiut8f8FZ4u7ModedFltRLi01PaWF/nB5WkYe4oKXil/7/vNfgshngRgF + USgwPLkY1llT6mEEYlaWwb/nuyVw4kmxOsyTt2/On46vd4SyYluCMgm/YOqbrbL1DAsp378Y3m0m + QknoCA+aqRAOtP1gdILkWHji7rKZtPdgqMjdlc6dzr5KOHSgrbbiEnipjEtAq6dLHNcH6P/x79H6 + r7eCkphojHYCiZQFvr+3iMdfaGUHuPlN6C6Hs4XygyD/CYkxxZ5aKvmM4mdw1B0CfFQOI4xghouL + qUC1n39QiR38bI3MMDuKhj6/gOG4Mzt63YnZKcolZkdPidn9/uG0Eg0dCFbKK4qf/xJGIvLDUYih + LEkJZq1coGIByryZkkI+5kjlvWnsGbvdRJkBnnw4ffNUG+R0dPuE7cslqvZqO8f9xkKXXoKYI6LM + fGqTSC2anAUNNGMfhYJyxGHuNrQiF+MSWnWVTCmXUfGQ0XClZ795vimHMA8thB8S5jpHa0Ph42YO + lO4sTF9ZgaHtWlVwgWTvsHR8NcBtptlKyEM+6MUtW0kK0ubCemrNpTh/bpajL6qfUVrUH2ko6iU2 + Bz9MKF+ntJCqMqFyeWr3ajfPSKci8Jr9BhpSgyVvo2esVeBF3sgVUsN0YkFq6KfEUgvGndVtuhiU + /523iKlcBEvEQ5aLeFggq5988LpUpYhCdWWzdlc2c7+yWe2VzcyV/en8t4p+gl6qypUd+/CHcIRQ + 0YdSmFZroP8fW4VvWIx3mmY2FDu8/38+X7wGCWKFmwwuRnXF4cvmfAKLfLldwE13+vkiv+lEyNsf + TrPVIgXC64kWVYnpdUcQXkm5AsKLT2mrvXldyZVjSVzKcEQQXpbAcYpGLEH4cNpqb9Lt9p6YfjZf + LhAuamRN9GZ1Cyx7SVFVtughARBg7q8NjY1ctxXOM/dVviFiMgzn2eJme5uDpyJkah78sIQPzq5l + YgPSK/tbdcGNkcLYgZk8kdZ/qquBcs8mm6wzSWeVbm+/pVokfZMtqiJpfTyVLYvGTTiTjHtxBAJp + JVDzQNxuibyV0lREmYSFi6pZ9NfVZaqXeJOE85KWPCqQB90OJNaoXGqsQr6aa+QnUYP2nXDG4igq + kWzcNzZZYIGtyO5BMrLyglhSngZDN0ZGHP1r8Ffd+gPkBwZZGE46BW9Scklhpd18y/u9CyEpB6Up + 6kywE2BVo0Od+VLqrF/GLg51eQpKs1g4L24mjV7SGhwzBQ56RB+JEoJcq3ZeW9XG0DdybCfxtIu0 + VG3aJfGIuiQeFWa5Xm0Y0+ibvndZxdgdXjI2aP6LJDCWQU5Y3HrgDKzrHnrdGab3hwF19hjkcQwu + LyLpRoU+MZdWBls5IPS6Y8n9aHjdHuFwO+7AhwLzBTmY7Dbr9hOg2YmM3P799QXwXXcwDHrdScBX + lEsCPj0lFvLuw5uK+deL0VVcFPCj52MeeTCRIwyO4EqX/GDZB1fMfxbkWYBkva2piPDh7pqtRiWY + I7n57qTXQv4918y+AQsebhFSWt7VNgLbi+Et5pdsbpeTL0OZ6DyDG+mFhDgZT4Er32Q6tslE4L6Q + 8ZqYcI3OEZi8u0xqcl+xhp6S7d/hGI5PvGK+z0NtCK5i3peQ7CtYBDkdDD+MxNEJXNZ4HpVu/hfc + SgM8WkZWjoPkEVvpfj7WtOKIsYkSj7nfsqSvaeMqYOkuLAFLPSQOd1u0ljllSGuaKFF5iT8Y/BgH + Q5uqvi708LLIvsG/8DhVq9KY5WIq85bzFhcYve6YeSspVzJv8SldYH//+98rF5jPPFEptcK5Fwbx + iHPuawuVtggSBF96n7OKFA/1BGYoXWWwwVEn3oD4dXOTbVRtCsmn1tkm04Haw1eL9O/j+exLpks8 + 013y93//u4+75IGTb1Hhkye1XGMkbjTOoFwQJ5741+B0OTYzRZNJIYUGAPWkFFGL6UibFHm3BS+W + DueyCu42W1lyWR5a/qIIaytvBBk9caj2xAsU+bawJrisfx/T+uR2k+Ek3W1gqAoBBVn49Xw3m6rc + tcLcDHC75cnGEZWZj5NIK816Dl31fi8WYU1VXBkPspn94Y6g4sOREAXtAz6eJkMrDW3SHv7sRRI6 + c9sOal+7Cij7Q9lZGMnNUDwvafvks34KFwhPWczebVaR9+u7zQSoaqHM2BjbDU0wj1JzCsLWUejf + fVVXiDXEL2MtMOTodUeIX0m5AvGLT5Vb781pBfEbaw5XoksDzORIRgEWM4/2u/WWa6D/13br5dgP + oYhc63geD0m/L9OSqzoAMxn3W5AdO8FDxMJEKYRo/AvbBSlQG+cYBdWFHaJAD3WEwhqhmtazya2R + fGujFBQlLALCsAb9Xwh557EH3+id45v6UCA8PvP8dgk8upFzhSjdiV0iSj2l3fNfr8qgIBiB6v36 + ZvbHH/da1a++ZJHHlBweUM3ebiGlP0cTPxadQq9qkMPFnPrPWLtUatXGHSyGuihhxciHtKLSp3iH + w9zYyNBFfJi6v+uv19LRyfyGWY1SeCDzrxPF2EM/tqDGYLcsluTT+Qia1+ILpjLqbJ6jHReJPMUg + 0N3omQV+PiZfn+TSyoO4p6aCc28YPYHNj/Bz/hz22gaD7H/ZtkOGGnyblF1uQXuRu2E+nalK9VNU + LrBscOOR65x+djQqe06KcC/qSI3MU4k3bvLMbtbL3aqtOz9hxAvkXLCR33I+XMF1Ygr3e3nBg9Dd + wkWvO+kFinJJL6Cnqpzw2cugEoMVCdvCJXys/BEJX4wiED+DJK/8cT1Pv5bLyKqSvLOroKIbgAq7 + Q7f+tRZqbe8CDxosVFHMfN+rVMld5yPQESf14UV+5FfxdvNoeIt8HrMz2+IlMHzJm8vkJrwxu0cT + HVxUR/liOIFFmt//oWxYwGe2xjQlq/o0zK2OlcF1M/Z/P5SxMjgWbaQpt+0eK9OZaoPdh/yl5X1w + 0HqBK1gaRnXJnS6hbpQemsdplhAZH0UCAmnczkUhmzh7KKgD20Ehn+kAkLlQ4R9hbZDHe8EGzX+R + zaWrwo+Cv2bwx8+J4+hqD/xJcRx/xigMfRhjYxyJXrF2sMqmjbNxRHVhG0foYRU3k3Cs7+djFOCA + d90RMknhpiDLj37tdgbTMZ0tbM2psbFJMLWqKOeDRC05iqWWzCIWF/C/m4ZUvCqahtZ+Bzha5Np4 + MH+CXzrRZWv8FmIgve5atsavioH0VImBJ2fVsjUgBlfK1ogoZNFIxFGcuzkRPgsPGXqAjGVVCYHp + rOqfdIosOT/LsyhjSrI8NkKFh1iJpyJEKhS9GqeDXbRiTymM4gCN+IiRWyjlqWRIy/Hpe8zpa4sl + JXRNNJhpHl2if3gso8PscPdS7blisrkiPPiI81YsJYxOVTQey6xujM/WOSpKOs2+L81dIAHs0m3F + vWqGk490gLvKlPbhLBiQsEoJiVgeyrgk319+ptbykMBWngBToEMmH8tLfrKerbbDJ5fq3dEweBZT + RbqRIfD0sByqzyqMJKyOxND8kUMJRZDLj5J2+4QzoCGqNNCS1C2fHujJS9X2HVvUR5i0P55mqwyL + TLTOsBVhXjGwdc2/nAr5x++OoSK8mHSC4nTB10qayzmwBynSn52Vvx//+OTk6Xiy3IFgNHVVgn58 + mNah1nUuor5cVpJ3kkmtidPunQJ1TSaeDUXM2lW50I3aQREzXgdFrLF3pA/8GuYjM9x0cJvNVxRt + +Onsw/DJeVGAKlBFsOGIySoXfuD5Vtn02Z3MGKmpCaxMw8ryt1mldWVw3KSmRxkreKhir8Ir639K + uglwvYVD9BVpkDCtscDeeuZF7XLOVRtXjUV3YWks6iGdD5P8hXxSg56X3TdOLxX7Q68N81VCSUTs + v9g2c0GNc9aG4RqkOkLaSFAEuoOW9Ra17xi+R7A86RbhKx01lXqvCQVf0US1BRCH1n7eOt0H+9BC + TXKm+Sdwi3gKB1F6fEp78Agjv5EzO5F/2CJUml1w7cPncdDO2aubuPrvVQeW956eEav4dHFyfm4d + eXpSduR+Wm+Y8Eq8wZDngYiTkKq0hAqEyTbxGaWnNjGzBmUzJgyQ1xe4u94u5zezVlme/VzGvdsh + BV5d+KY9yx2Gr7eS0HWSeLs6Sdy9ThKvrZPEdZ2kNycXrBquLQujlAslxSKJ0YyBWeV2uHbRyPaW + FasYmJKH1g2AmGrLOxnFjUEDJo9/OruGeUStiPRIUKPfpGu2KqhL6tUXRmTeUNQxvCdAvYYfEf2I + 6UeyouxppOOtNFIA/KMmBPyxxeC5z6MdkxcFZffaqGgs4UEcJ4nI8TcsG6kmOdZlKusWNE/x2fzg + FaxAWim8vo9j+dLpmLTRGeoSH2Hbr/EAD9+dfBjzgdzrJjjRo1hxnC0tqjhOtrOJonMhEwO+mfha + NvXfhO20N93EVTJVHViCKT2jw/4eNDOK0x8Ufi20xLjCOAh1YQbjcvkyk0HuIxnyL7XcOfpeQEzf + U6dhD8LU0bQbjVsJI6TzMi3zoARMUxiBey/tyss4i9zcD2tMT11GKHwe7KtbgxUhahDZ3WgHHuUo + V0keKDLhuj2wB//A6I/t6uhSCTGv32hOUgjzlPUOJam5Q8O+bFKPTW+nKvMv33thC2Biet0tEogo + lyOB5FNdZfKTLTwxH6YoREXDDgX6JfEikYwSEKy07KSwZSVoqlK/LOdC6XqU6W0laFSVlXJ+l7KV + vP5u02Ld6hlCzsrsWpxbdVGWaKA5FnRuDJYEOR4mf47sBt+fybyryXINMnqqWB/QoHDLdXq91UFL + J5ttDe5SsRhFHTASS+LEggMqIhcxmKzYCx9KsFLzPM5RD80sWR6nkNnAQnZp9CjmKCljvfE//VIO + cCeb2CgWBgP1/UWeYQ2g2Waw5+ruoULBsfYP3HbSslC7QX/dh6MjYzNiul0oFG0rQTQ7Fe7uhpPZ + LydmoZ9I4Xf5fTZdrk2lv46GEVNQm0XvkmesVXJD3si5qJjuxC4rpp4Sk9U7dzrb7ObXGFsxw4iW + SjT8nvfsvtADAVPfrs52owdTVYEqahm4EiS2NJlJm9JNAz+3uWLVxuV3BEHIlrB9W+ZhPOKAcwqP + CsLivNctbmvB9Eiqe09Z4ImgnrTzuWsYNQtjcmB3HqM+u5GOqo7jVlHV8LprVDVSrkZVw1MlS51/ + KIOosiQKg2pUdRQlkTeC//pcxVp+2AlK9NcWTxURfJ9hjPDJ+VgYa923W8yTs8wXuSUSYQPmX0Ad + wxu8YHJWF652JnydpfLf6VwW2dpmJSTKk9VdtQyDHEU6TVdoKNWjsfEReRMoeiJEIETyUPIQWWjh + I/UHNkGjJ2FDoIwe4KBpJSaggd1iBeoCXEA5QvIJTtHTFw+1OAPcYXn8d9IT5Hl7g7kL1URS3bMw + ziwCuI/lKO84pk5wjT0Q3C+OBRHVKaeJSlerFATcts6Ao8v4qToY+R4vnfKW5MLAuCb0PanmqOsI + mU+7vI5kC8HA1YawX/A9xhKhr6tY4bQx7rmr/vS6I06bpFzBacOndF1dnl7yCk5bEoZlnLZffPzJ + RphzjZeZrMG9W0lX91KGvJzeLiVPu9SRxO+Bf86lZfsqs+yN2pIFs3X28TdW8JiPgN8WaaZon50t + kCEsVOSiwVYhlRSZKxVRL9jmpcJqw+hM1OjoZrucbHi/GMtJICIRBpVA1Vr/tAX763HmQjO/Lss7 + zr4jWVMeFeMRj+LIK3tnVPkeNCPOlaINE7vN5iiK2S6ZUJSgjzGVygLuEYLzoFwn6X45NpXuCyVC + LMrAupru5OIsVGwf6Juts3pgYFUZYMh2H6nZGJzpFQJS9XYPtV9R56OESbI4FD4FL+t0YZkKjInk + zZuTTyDibGfXuA9/W80wfjadb5bWmVDzjeCcehlGKGGvd6sikpCZx3T3fQm8CZjLEAYBepbwh9MM + y0Vthqej4T9PznWNpgEecSMvJJzkBeGrdND9q9/KKhKS5mZNklu+2MNQbTLecxFFVeO9LfpQP+3l + FJ8nJA402O3tEN1r+FbgdMWgv8Y4gKYOY+HtSVqeLW5hV21l2WdXn8DR8aaBaQ0zmS2+wm5a1XTf + Q5r4nxHIwwsSYYeVXe2mh0sS9yPl9RE4lQuMUVgm1Xaiaj1DSWjtoIdq3SwhMjKuFuxASkftajwR + ILvKjVS4DRolxmanI5k5FSuku2BvWeq6UOrEhFLzN/Ez5rUzb+pGzqHUuhM7lFo9JRl0k66Yr2TK + z3y4WVx8pLAkil4pWjj1n8c1+vclkSm+TpRl1GjoEVCqx31KGFzNZ5OMMgN7ANroJRfBi0UszzYS + kQN0J/HTsguoEnVxOh27dWh4qGvJfmi/fOZHrN4xyF5OcOWOsBCBZxIdmPcmfOa1w+BRbZxdD6oL + 2/NAD6tpp8DR4aDtroAJjpHE1AheT3IR56l1/C5OTzVmqT6kJ9sNK0Vw5gNBt0QSCeWW8MiihfN6 + t5zOrkGJPjJvPIIbSx7Sxk9pT/vxJlQ86szXwDPpCoy9ZN4zj7XLsFaNnFOsdSd2jrV6SrvdAMcU + sRwUdBhzhZriCC9FWdJx4Kut/CeDfNKqhfCZUKRUKtweGKw8fvqxe98eUrh/BOK5hEwRJJrL5VLm + in5xjMyA/0QYT5r1cH3JBphWFLaTgFUb10tWd2FdsuohsZ3pTOZyTGfAOqeZ/B0U87Jv3+2tYo+E + v0K36bERK0aN6ScjSpELAsYkORUusETbcGME46MSe3/olek9loCdniJt9P0SMfKhyKM9ZiM+Vrv8 + Klv8kS0y9aiy4zsFBwRejnebnPLWkC7Uxr0mL3VRKskrH5LWu7rbKrnjFUq42fbW4s2D2qfGqIut + Zah6FFKoeig8yfHzZu1xkX78MWp9DEIy3b7qXBsqUclPCF9Qnd42WemBJ7Mafv/7+1Z1VOl1J/ed + olxy39FT2kT/OLmouO+4z0slezmmPTHui5GIBU/UtlOxmlbaTE0WOvowXl8ol4WM/qQiFnlhhuVQ + i6/lGDLliHt9IWNBsRIGMMv7QkAo/AVuBxUWoZHhFJXNi4LnBcnsFki3YPExlw/6XyrOl7N1xnSq + 1D/StavDD/4/W5TdfmW3l3FOsSRhVRdduS6F5fCL48ZiHFjm0/fK1PKprgU4FJEdF1OMQIbz6Yei + gntTg5LfQDqyHZ6vz4vYiRzoY5FV2zV3eXFe8MVOlgWUtmJosXHbKdEOE0jk4pVil0OnbzO9f4Ej + tLxJ7+6H053Oevn3TpW7lPvCyC7Xu025Py/y98VKM4x2jCtokUUhqLJJrc9J4sbPgf+JgYf/a/Af + cS4HyLkMQFCgk9h8KaW2X8MKu97jUcQ9hQ3279O90eLlLVvpvjlWltB+nMTmvaFVCRk/924912EJ + 0BelVv36os6wrpGsOrhaGVdZYsvNts/5rXX8PFBfD1cSt09LRtxMi260doqe7yVSMoO2s4WEllx/ + zWbzuXQkNwaElcU1uO1CIx0u9/uqHi7aKidCOhQw2K7qT0zgC+X73WXBA+bFkrtVjqmzI1DLnUHu + JPDCluUX8kbubgLVSclPQE/3FLQrV++4m6wElQT2w2OLLPzY2oPGaB3+z3cz97HwWztoqI3zzKsu + 7ImnhyT/395qJRKhNPHWfycG+a/DW/GMDfAl6VvxQ1XvgJPvDbWodbZKZ23hb0NB90UePmQM18s1 + hi0V7diL5WJ8sKo3kswVyUNu2QNXIyHUFK9G/NJpeofFNqmEXJ2quk9m6EpzT9JMN4L7IzIiKhDU + ENY1gfletw7sOoZq3d3pRXFYWul2C+yp205HeNiE3LbbT3GVU5C3nMY2373H8OH2sd2tJprvGWhy + JkHsWhao142c+Z7uxGZ86ilxvqubjSDOx0ZiLKs13Mx3k7SA6P5EueWeDp+cfzh7JSFDOBPi6aCx + iXbkvQTqA+xC8s0gUbBCXiSlkHLzJlebA9drSbGNoYtTejoVkx1L5iOT6r5h8fc2VRsNRZXvDzM0 + ncFXbEi6lkRVCWNXWgHjxP/af3QtS2EUztq4rnUSaxXwqROZXpwFjzzQz+fyAzazrQymXyHw2+wP + aNu07FX3BdW0b5zZHsDWjujjL1PFRvNrjV5/zvm76JkXtAKDNI0cnR15J0Vvh3mqQN5OPo313aMV + H+3MUOqUtOxc4eVoBw3ZfWAwH4+VICtEKYx9nUHrbN4tCIukEwrW0MJFTrr7zvyBwkbPWvcPU5id + 4w0ixlhBesQ4mu16dgSwoj4yiS45HsVtQOzwddeS40i5WnIcnpJIc3ryhiHLL6HYeQGroNgxJniY + jBgL/UApgKenF/7wJLfevaHcAqT45VWq/CCn6TU8qHhCsO0YXqhP6IVrsQmxnkVCJPGDZfTuzZ3A + FT1fzhGae4VMA/SWUrZSEB0a9+A8XZvk3uzrcr6TJsP1bH4/xjoi2Rot8GZ6rBEgaJGGs743M2cB + ayEw0nIuuZEMDJ6BbDmT3zOCzbhc3Kjf0QqP2TspRUEMaCcYjDeuk3Z6gYp/aGj3oCa5pmbpqgDr + ZhUrPTZClP/cIA6FnWXlcSyyyZe24pVHUTCVU+g2D4qBMU8nkwrPHfuAXndNJkXK1WRSeEoM7Pzk + HxUQTi+JonIy6djn6O4a+Zz7Pt9faTpbA/3J40e57KPStJcIPuitRFVn+UGEUS4/yEgjmXLXRYI4 + Pl7jUYG1BYypcu6cBe6HjF53LOcuKVfKueNTlbF9clku28h9Gclql3MfR34Y8WAU+RGPDxyy5Rro + Vw9ZAW1/WQ6JEElTEIMfRCEINY/5oAWRz5zL0u1zQkgfmT1NbsK9W9Nm9LA4VuGA66vlYgxihQyO + G85nN7ZOKXUqUIRlOctMhgjAIi3HH8fT5WLpylP07jeBs8kzT7TzOskWrgZAIm9Z/+QjZfpbr9V+ + /ux/Doffh58DLNYzzhPHJAxLMW0sGNp/NHY+JFV8E2lLHxXwQMoXE4m0KuR5SlRizgCz4j9v08VN + JksooVFtjSEXeaBm8eXqfHfNwX1cqVzyFKlErOAYTflHxtWauyEgA89n/9fm7dTRmtCXKt7jnex7 + ntbqC1I+iuO3Gax8T9Y4X5CXx4Hmw9ogvNgjs7X9vUeO6/g6DA9t0GCEyv/bey9h7gYNet1NVCHK + ZVFFPlWiyvlvvIrK78esLKv8AkKDEGIEv7NQ8fZTI9gr9RyjBJBTLneoIwJ3gJ2o/7ZZwdbAEDWM + X7taTu9HliIu8wfvZeBPEyENJ2Mq28EXwx7fSphlxIAooBYV2DnByayWvIodWxmTLefErFyWulCu + L0lA/y9LUHvT0S3aLNmL08KjJORxXMZpUVEYRUoYodEYsJhEgidJiQpNlfQxGf/9k0222OyG1hZ8 + WuonsOMureKFNBuDP8OOGMg9b+RMP5ByZmcEfc3DukXK7Gl90DWJMYEqUX651pacdbbZzbcqgjQ/ + BRKpyaipNDUtTSA+XW/pZrKs20EVao1+ReHldRCmM+RK7WT6mIJDq4d3ryjRHTWiVqA6HlssYJSc + 8OrCi313TZVed2L/inKJ/dNTVVn24jyumIN4SVMV4fNxyIRIkhH8SBKFK25QmSqQTKrQAEwBAgoS + +htoNWhNzUGXvo4vP55cvB5+mt/IuP91BsrR9XwHO2szkeU7dJXjt2/On45VFHG5i40GZczFUSoT + gixZQTJSOhup0dM1fPxkNXAcPEZQ22WFfvJ3DD7985wbbEnuJ2zQETGxqdoAI7WXProrfE7X2L+f + j7HYM/qOKJM6NK+9llPQjCaPRg2febxlLKps4hwXRB3YUUHymQKSWa+U8Hh5oRL3B9LvonIZFNzW + Jbw2wHepEmfElS+5DwSX0Kc0PKtbbNWokztrVH8ecJjHqvn2A9XSitqh8SRmsxw/oJhRAIyqTHw8 + RT9MYqt0wm0Gp3+JwV9rXeqnWbLZxzNCUw/KC555Qbt6ULKJcz0o6sCuByWftYhcLxDCnNtAeI7x + 602Z74eb1meddLv5uuCzMIJSP73w/BaeDnrdSX5UlEvyIz1V7sTXF2XrAda9ELb8GDwfc9j6whsh + cK1e1iZPx2QN9B/QnbiBk7HIKNpyla2A7zUlgnoxF7YF4LKY25hwFpVBT3vxMYbK9RFQHrTc8sAw + WmuVvvBUHHc90mVnpAJ5tHxOgBXF+ZTZTdU5bWkN5JS60AehsDzCY4n2ZlX0eUwx+7gFLN7W0e8Z + ayFPvAueMa+VkEdNXIU81YEl5NEz4grr1VzIwp54zEPvcrieXSm3jP7E94IPmv8iCRA6SqhLoDi4 + Ad2hAI9zKv4I1//Rt0TeiFwnaqZb6jCchzwo9AnvzDFFs7Bw2lHXeTmEF9B3IU0SRssFG9wXR0TK + JpZ3iFFi29l2p8ySzRPRQq7s3sneM5zois+ghYtnrA3gmmnjWvNZd2EVfVYP6ehWsgNzV7gsB1g+ + unonvOee1YOs+6wSNNBqIaUqi9YNiFAwWRhSvM0W9VDI/Z5u93KXAYns9oB/QjhCWDNvvZ/Fruzi + wY+eOiHcoG/GidfalqHauN5zugvrolMP6aZL56uIzspkOZtn0zH+sOukn5ye6ij64h90wpMfYSFH + /nSApOSVJ2KydnhMyBXPNjCk+Wxze6dmEbcACm3aAL6EwS+2DXuxsWIwC0UN9bV1BlFGRCs9ZZO0 + KXLVrvbsvszGJFDBHfSxKewONNvm+KAw6Jt00Ui7Ob2JBzZhV0cG5SBQ1BxscBDfEJ+0kDOIdXDl + KW3rZPnZ0bLdPCuF5kmxedvOKd2suLKO3To0PL7UzB5bCTdAqRyu33ZMybRxtZboLixziXpITGny + 7VrlXS5wI6I/wkRcfdxOEABYVmj5muVpl16M+INPB+pF+Gjp4DidTgIzNadIVzVgcewHiQcN4CGh + nAVCR2NZqb93RWPoSOLNNIUvVdP9QkHlqY4z+PZiNj7aQXy0cfhnaR1/WvTxttB1vfACbiAM45Oo + NWYytXGGMFRd2BCG9JA4AMaUFiwyRcnkv8dAF+ag/q9F8ni8YwXOf7RRyksSMqAUa9i1q8zbD7aP + o6+xvEliTlKuDFOfL7PvRxu8+gtUC2NPjq24qMcHCgqPUUGGu3QBklaGyGc/O8qfC1Mj4030jLUE + CFZtnCtkqC7sAhn0UJX/NaWPcMpf2SV/9/ytSB09nXC86JSppEzYXZJ71R0yd0x9VqjXCxf8HaiI + TUha+2+wfiCKWegRiByhXjtgl+31soOaJC8KE5ikDL06AmxPZLe7l01B8uqYz9n0fl4pmFb/ASXQ + 9ZBr9lmKTztGZf9ZSMV+KLx8WvIt3kNwci8lIHvjrIJz8pXXbgAx1o/3eNCduW37GkJ7GSUFmb2/ + 8P3I3UlIrzs5CRXlkpOQnpI+8s8PJ2E5yEz4KAwXQ4z952Pm8TAO+Ah+RjEGoSFrpYK0MDqVoP5P + Txcs0cau6fCJCDGD+qlyIf7zLg0r/kONTj02MVE4lxWilpeO2yUPC6G1ie9zRIkt92JGW1dJEoSO + yG+IKI5h2X1WCSjeO+o8h2itFl0GtGGuS6l6ox8mYbmGZTHe2OrdODPNx2BAR17dxYoKhv3qMkVV + mvWVn4FeeYbqxjm4NGuvgomvQZ0d6x0ByzmrBPipBYb3zRje/TJWU/nkn+q3p5jqrU8UTDxx9S2G + B+zuVnCZ7BZUDfKWvJ2G/OZ+s83uXmCU7tWMQvr++ZveoxKQVcUow300/CfTw8lR2RaF4tKFDTTA + 46Ndw74vkn6KSVNGAz7qSgOXCpvUrKiTBB6pYvUNu+xXhwhoFiiMVUw92eiqtiDj7FbzbKoXrmvZ + 6EDViexIZqA4iPWNRMs+zf8kgYX236jAi1ymAHmKyLtoH6kZ2YvYqpJfm+YPGLMpBCNrbN3sbr8t + x5tMRhWqs65sXKPa1/Opb9d/0tT/vtX9ETZKs5u9KDaiECaimrOf433rcWfrrkENeM80zYTbrbV3 + 32mhJtA53m2qctPrrjneNVW56alKnPr0GisvlZO80ahQSpyKgkDweBQFIeMHQp+Wa+jgWzX0ydjz + SwnejSj1PugZXlIBvX9kCd6UvvujgWL7MvSFqrQE81qVlsDXHUtLSMqV0hL4VIN5fGAVyZpLdJdS + bQnOI+77I/gRJkIn71muWZljZfmWFZL93RJZZwFz3GQ+yOLtSqkxAN3I4woZEpebCRbT/jS78334 + +eEmk7W1QYY6T+9YDFv9Nt0UlaDtcvj3seKQCM4DPwt4ZBt1UrBxVcQvjX+xyNbF/I7a0dbhKeHe + bJLTfTihSUXs7wrDUDilBWoNQy0Cv1uLU+yP+V5jeXk/ifEa6KlafWEmqrRqrxIrtDIIg1I6YbH4 + e4F4nv1oLe9dKs9Oqe6ChYoFH9uALoXkK8mVx5LP1RQa/eCxHDG0gGHhCfacoUKid7xsTe/I12eL + 29kV6CpD/P/JslrT5IU+kRs4o/PZF61TDSQjMqUiQt/rQUeB2RWsyKQ70pHrVKRTrNBRu+YV8g0h + BGGgYplsl5w13qps1eKawrNMI2/HD1zvz58BjZLTqAurKvHs1iT9gyQPXQMuE9BVXZFR0zGBr2WL + P+D612duuU/gPir/tK4x8t7ak7VX7m8odcAjE7MIosczL27jiskbOUct6k7ssEX1VNVtm94yHZWl + AQKznSxZo3CLZQrJq89vWBQwXT9WP8bWsjis54vB4Ee7G92rej6iNEeSxE9/Oz8bT5aSH6lM1A7f + p7NbuIxn//38gnnc3XBNrzvJ14pySb6mpyo7+vw9YydlATsQQQnJK34+jgSDO38EPyQTwr13Xohh + tjARKGjzSehdPq2Gbo6Giyxdw3bM0wJgZS5Wc8ZewlVeBEjI22oj4ovhNAMuJhdnku42MFMFzEqJ + C63laLzwMRJFjQlj8dUI6kTy1zBJy/ls+D6QDWHvDt+jBVEK43Jwaa3Wuj9iXIFOvJZHM31aAt+w + y3wVDctBkKCG2oy90RR2ahdOa7ZcFzsw8mHOape5qdFCM/VZZcglsFQzBTQleiKMEZhqfeUBmLY2 + zaMGeRP0usgLvX8N/vp7bkCHUgubWFNzoCYHmU3rGXYV9o7IGTlAodnE21vY19FxoT8uhcQB9aTX + bJHjE4R7TgXpRviwqyRR2Pvr9t+qb+QkL2qViHahbaaNe0kr6qJU0Uo+VPfr+YXSPzcD/H2drbBm + Zo5InxPB0JoEMX862Bu1PCJM5gHjL5nXLjknb+T8/boTewLUU5JPsu83KsnOlCLIAx2UVBsMVI0F + q+YCgpjhS6+BwgDJ0BQpzP4goZInEroSKWJgw5FBPxg/a8L+CDpof9z+j4hEEiwgDbu+Asv+AToH + dGAJVP3lkntb8+pWUsUJyjAICIch+168K9bZTRf1/GiVJ+HklKuf225f2F/kkipLse9w9AKxeEw3 + +78goMSYamjTSD27/wNZ/G9jwxykVLhbTFvH6/UWnxolcdOY8TcYLrxsxgv3e9ux+oKFidohnYNL + BUFIn733whYxU/S6k+qpKJdUT3qq3IuvT6ueHYaiYFHxZM/H6O7hbMRFJAvX7PMuzuZAvwqsoAMH + lDb2Bo7rzNbFPMGb3CF/Bk8jEzxRqSnEPYocqTFs4nHWezLSCNdWN9APnnmt4p9NG1ebm+7CMrmp + h7TlpjtYqN1moH8WW6EpjWNOYz+mtMe0CITf+vcLz28B4Eevu7mAiXLZBSyfqtjK88uggjXPA88v + u4DHAYvDKBoFLJF1g3HV/qmjdrTZ4FJFaqgwytUmCCrsQkLi4fJVLCpBFHlNbIJjUe9QPBSbsAeF + qIPqWNdGGfpBmaEVkVfVSAfvCzQLSe5Fa8i+bq+vZ5MvMJkvhvrTgIhOBAbt7XZ3BxLB8irb4D0K + 2zxboRsAU2HH62xulfd+8tvL8cXbi/OnA7nextMWe8Fj8rTxgKIKHVYD0wDvEKhUGoqpNAsmmm7U + Dlyl29tvqWMyLoi9prZ2lzyxiOpX2MN24kWoilg9/5T4tz6N+b5Pd6Q8/L/Cf2Fq3YqJa6bomwQ4 + HrctQpA3ck6B053YOXDqqQIdXM2UzeCtDEEbXMDJo1+Hl/C3Ab4gs9yYr7Lcjo6vpbjUPZ7hLlQT + Ji9PsnoZ+wW8a1F0qGnqRqiNds/IpbiZ3Sw0PMZ0N+mg2kegL0s7lQVVpTEP9mXfNqMI9MbhGKfc + DNxABvWk/pP31/3tE+6xh1LK/ebR9gcsmRAzelutTehQUrm5cZuP7yH2tp9kJqyzEKgP6gGK0ona + Xi050Iw+YuKZF7di89TElcmrDiwWT8/2IETaYSCffvtQKS3zaXnHxGAr/4s1SxmLifuHhPxouAW6 + KyiYfHko6MUdpegnC20/sTxSTsNnJRowVYTw3z0GqAYmqUTSKe7nTxSIYUQvCkl+e9HKbkWvO+mj + inJJH6WnSh9996lSToSV1VGRPB+HnPuePwqxMFpcb7eqcwqfTNdsJatfap6lsynIxnWzrrVx/SVr + EWJpj/+tRVhyDD2qWoQiMrpQ6PnPvKidKkRtnDUh1YWtCNFDhVa2XanYpDeeSnccmN/0rTjAt6TR + LlKlLh9BsuGjTvTTm4ZHdBDsu6friN2Kl3GNfVXssiH5ioYhw8dRWCaZeV5TCtdZhoHua774UPd5 + Ap6cDfyzgv1/82T5tPWF/7NFmJ7DmH+sPOGMgBFwwgv8IYs7+IH5ikLU91L7cW1zF1vA+PeeN+kK + qSniPIA7Zs88v2X8tmzjHr5NXZSit+VDBaVzv55Nl99l6XY0p5SBqQ79vdgL3mKMIHWECHIUHBUX + ATO82EgDNcxPffBIU3UAn8d0zPLh9BTIoToIAkYlx5ffZyqUkr7XnUc52Zj6rPvZMU3zwUuPyhJJ + PlnucDqX+c7pxjYCTyHLq9XHur3+eJppLtJP9MhxveyVSxNVeYx7LQpP0uuOlcck5UrlMXyqC0+e + IlpoqfSY70Xl0mO/xLCHmTeCH7GnIhwuV4Qweo5OJavmoNHPht+y2c3tdsjFl1epKQI5YUlFN3x1 + cvmuLgsU5DleTt0spigyFiWJF/JK+maOCasxMBuwYS1NL4rKBSELHQUhqCSVjjTQaqloZWO+6SE6 + rctgJkEc+KwS/NEcsipNyF9ga27LabKwxRpyNa1OCtmaOdorTXMNNg1vpMlANwt4TQZoEVi5XB2z + GhqDVRF5Qx9mugevgc5iOysEOqsI+FfpHcuxWdMvqbUZnyoZCs5kYdeYSnHXy/VEwpwBL8skztiH + TxiLv5zfF4r/wJvrDP6WzqaqKGRhM25AQpSlQZaLF8N0vlna1e/09sWKtzjkyj4ZyFNsqtGFXjJQ + 804yce0StbKcH1+W0wuIQO1XtyYWRlrabw18KfeKbm3jdxfCTGGBGu/qPRMlGCMlvew2y5egtDHg + 8qlsFpcb/ej6nQ8EnY0M1CZ7gPu6iS9Hes4eFlD7J6FwH6JgfXNbPG957UojYPFe3ttyoC4Q2a3b + 3dOKCfUBF+J7uSnwbfDMi1qGRahG7sZA1UnJGkhPlaa1XsrkYwwwKipY9Y8tqqhYxVFkEioe2ATT + RkM41qTTOblbLzQzyLTJif+M+S2haVUjZ2xa3YkNTqueqoXO1qg92KtMz8aiikerKaJLNBK+dona + KeNFlyjROq6mjh94vuV0LcI0FDo4wpTVPeZCXS1mGEVYwSM2a5eif74M/P39H+9ZzN1VN3rdSXVT + lEuqGz0l1e3NyWXFx8dDDPkohpyK578w2DdROGJeGAsVgPUSuitKwdfpFiZEuoyU8UTap7/dzia3 + KstDFkfGcvHGiA7tEP5kDF+O8TcpTjCGS+bENgWoknSSbe/n0qKWTu7nkj4p0Sl1li2W9wVr0mh4 + h+gq9yqkx7TBzNFVOkfWUvqb1sJnmcYnepNuWFNCdEm5snVMkzNcaCc/a5zPUSNqUSyasHp4gs7N + iqImxtKW8P3efNf4/+A3jSfpGnaGiVj7V3HC6vF8fMGaspNFwOMoqECbNvR0OS4sGJyGfT2KnnpU + C+7SZVPccEOXcm81TWrBgPnx5NW7p42dxi6dGjW2cKaac9VDIcr7bvBXP5wD5FwmKyQMKXg6JA9A + 3aztteTW3RSdie13oHal2lydqZf0SS8OSekkIPfjv7Qvo3dnU3VnOVa5uGkiVul6W49+0mNVR8oO + Lx/RtlBG3Qg1x4L0l59JWAl1d193kvIUWcx47Hbv/MSems4w3kV7O9l3qbX+nh672vNB8tQeEkrG + +4WS1p/2IJ3u+UiVMLKni2a5oPXH9dpZ80eRxrycZ3s6OjZ7GLthRZ4AnZwuT47mC72gK/fqXmRh + 5OcRV0ed3T5rC9E1Nb/v7nf0KWHy7XvQSlsEqMrX3QJUiXI5QFU+JeX19YdzvKJKEaoc0/RLEaoM + lNokGsHfhI4zP6sUFbCAlmqTWsfTbD3DfEGERyvjo220NG2iSWEDvr5AowohxRUCxKRi+fpuxf2K + ZllHuoRVKpq9iyyIkqjqFaxP0bUTPmPRQDWOQx6wKlBubVRSgaYMX7JoXl7W0uw/JLd+2i2lKY7j + RmdfcRbzahdqLSwXD+oqICtjulJJLYOvL2HKvj2zyl+oGRj8xI04kCfIxCADX1D2QSsbAXpFl6eh + A/1nNbJ0I9jW8fl38uYrfoH60vFdNiXM1D3Em8d1HN39AP295KjJPYRNavdehdSepLmQUVhsmw9s + 9voxUq5ozjpnd/QAxNmKxKHhJM20On+jI1Lo4wkiPYQO6pePTCEPvAkn9CFqc/pUC+vNezhp7rZz + et1J/FCUS+IHPSXx493JqW07Zyiky+pyRfEjxrIRMOZRFMraiyh8XP1/Z+c0c5P1bCWnWEXWPjn5 + 9ObX04vXL5kGGHg6BJF4q4MBlI1ut7hezqfZdJwzaYqApKq8n88vXutpJYOaWfH8tnqB60jRkmN4 + VUaemGK2Oml/t8UCSPjkbC3ByD+t54wwxk+mabDCccMbWzmyDIESsID58F06gbdySyJJPPJpWYzQ + 7hvrgg/t0lEFQE+GIFxxtbrWZpVNsOIQ1RemWAiUbs/O6ie61j4rIs+t3xxJ1JTLm02NDa5U3SMM + /ZZU7ciP0vjxZJwv5/hlK4yGwJBpqzsRRO2607tpWN1N5ByUV4s9DoQNxSmsxmqFSdJUas30P3iZ + bhA8MttNMBTyj9lqBV/xBM/F014ORs2n9HswnPb9AHmEsVLHoRjQ+uQCkfnMlkKRCCQL3bNRRjK1 + bpqtMgyiaS11CcI2P7gTq8fNbMpfnfALQkJ6rz1Ilu3ZBQshVngDeTh4ZUO0nAfYzHJ4snLj16w0 + IRLixbAee3qK6DKN29JZXhVekiOjVCWU4zvwgzgRez613eaq3Pk/rly5SmQ8MvsQroKaU1q+PJw+ + oyOpQ8OTU9P52nM5UL5Q1QV0HES+1TtPrA+H1GQf4UadzgpRix1tUYGO0wlfMv6MBa3CdFQb1ygd + 3YUVpKMekmA4WU0Ulut/vSpD2V6cnP7D3GC7bHgK7w6wAYboCJ4QakFbgNVmzc+LuF+TUExAJ7h4 + k3QzSactwLPh+vaL66fCjFuPTOApxQYSLdIO6ev6tYKp+gU265osF//eqShhWSnHzMP1rj7idX8X + yR422b6vehis3lJtjqlwEnixVW/ny0xmqpw+MHTKHiK+8ChB3iBmO5VL0YwiNIxCeM+8lnxCNnFm + E9SBzSXkM2ISN/crlQHz6eWpRj7QXKKIc5NuC0XThm+xWTHMD+lI3oER+4M+TT16w3PlArX3+UV6 + 1RGO54fBHDxAEPjR6Pst4ZcCkPqkBcnaEHvFBveYxfa093+cl8jJKe+MLjT1eTWgC5ydCrhg20Va + 60aukdamEyvSWj+l05rOpdc4s5P3ZAm1gf7b0E7sK4dem24Qpi7w6MrvKY7nR+Wa/pSz1Wft0Lx9 + KyPyA0UE9+Z21gcnVt5ZlrSAs6XXHb2zknLFO4tPlXn0t0tedc76Vfgg5mPtjhHDCHVPwQfNNlus + VjjNKLwGJ8Iqui7tUQX7E9p2jG5iWum7ag7ixAI+HO7Pd0Jafd75w1vVxzadzTcvyul8l9lW5PgH + KRzLGSZ65QoQyPVoIIKxyGy65VrfjeYNaU0iG5WJkSx+UL6yZBxdbnjFOHpbMxF18cIwlXGzzS0G + qcmv+G+70rbzIjE8vFK/6ePJq4JxoK6jOvMrEBPl9NSRY28gBLbuzw/YoazgQn/GWpqBmnw1n21u + paYMu+lX2ATFOkSoBWCeGkpuw3QN99U2Qz6Rlcy0PGjwjttLZjqufFfZ9MrCICqHjTt80EJmUFY0 + GdzyJae2X4lLL6At1xNvYUQqGbEPzs7gP4pNDJChFnz1/M9iS4ZdSZbL/FDcLaf47R3yduUWxyb1 + h8FFZGhLYr9ypJIsG6wByougtiBQ/HBy/o/WNhdfR/YeOKlOpgVk57Vfb0cJPzASrfATyr8unqDD + +pAvUSXqB/9TYwb7Cs3DKxCbtLhBXfa8vOo0Xee70smkkqjanp4I/2t80qK6JzVwrO+pqFcqfNJz + BVj54QQtFQWRkwseeT7muNs1Pn8J/SDxg1Hoh/BPkjl/X62B2LdxulIC2SOHnSw6uabrnVXr3ed+ + YofzvT4fFa9QFgQRxqcZBEoe+xxzaGRLug1K5Kv7uAKoNNCZjUFeYC14zZ4xr119NWrjXF5NdWFX + V6OHtLQFpW11my4G52eC0XlPpQlRcdMlAknJag1I9zzCBGkqOBeFfp/AU9017C5ppgGVQPp44XHf + PVSGXnc6nYpy6WzSU4UQ9PENqyiDvghKBzOEgxlx34tH8EO6O/fVQFqsoYNvneJJ/hxVjz4q0Iti + lUcTUYjyoikavyFXA0qk2XdpFrdLvW5266/ZbD7X6glsyDEWj9xQsh386w7/RRERSKVU9nWyvl+h + OwSB8CdLORDZ+sliAj+fYhLgarcGkU6PRFvnN4MP5+ehlloD4UVSBPHp7oexEq485RfBFru7U3no + KBVTrcJUak7ib2O4sXAswbP4kipfyh0PjSZwh9F9Kh/nkuvwyeXlZ/mho7zZaPhePayBMGxyesEG + yYFx0/VY93EFDXHqZJbUAbPdvvBMjyTS9dGkhB8S+qBcmY60SEyMil+s99XwycXHgqRYM4WdLIP1 + zO5QqdqydOhUArZGhglUBa6Tc8FP4pZ1TvJGjhdW3knxxjJPielJ0ONr+IA8yXiwu5qBbgv6k4n6 + m89uZOnPCvJD3gdeX17EyTUU0LnTzQ3BBs3nMAyDlMlj8jA3Dq8PX0UvVRfcEaWdB/a4QKoD8T8b + HRcbBu6GX3rdNS4WKVfjYuFpTTRs4JejYcfCE95IyGqa+6736zmQ/GvDv7/LgDPjCYEnSwzeurqX + t+/vf8NVvlMZIJvd1TabLzFKZqIqwMJNfTu7uZ3fa+GSrnlsSzfYZjhPZcky+Uw113ybZu3T+1P2 + AvjPlvDsgJYKwVvfU8UyGMzpdMLjldykf5KxotxjQPRAIE+3cmhSKInHsLNvMTF0s4TTnFH6zud/ + ngxna5B2ZvmJ/JN87P+O9X/HOvj94g0bMzlk+SvPfxX5r0H+a5j/GmnJ3CPY/F+HKlTZ81nxnzy0 + /unLCCjzT1JK9T85C4ov8yQQhX8izEnxn1HoFf+ZxIn1z6T4V98Pin/1Q684ZiBc7AiUOr/4T1+p + HhEFnqhZzyzHDboHQDgEkaxRJGqQlvcJuLBUEwROWa4LPuu26BT91uLqtcyHtCZjPOitPjHtwmN9 + QVHbDs0P1dSSa3DSugqWEeY8ritTFI2vx43reNuwFu58DRfmB63gwuB1V7gwpFyFC4OnZMe5OK+W + BOJRuUItwoVFPmfxCGFzuYILuyg65kr2hYIigrkWuyuQuaVZAy9ofD9dpCvCMSliv8p8OjnTUmS8 + WG2r6UV1Zr77HNZFwQG/3n2BuUjtWtlBLJqc6kmYRD7jZZmyBO9v+2bjuCktp4GaDEnJVttSbXkL + UIrZDt8monmqj1HS8g2ulSptLCinLwWMHehj8NuCUIVhb9EcbLSHlCWXtROv/szDy+ISFY1WNXao + pn3ywnb7LmHOENjv9NUp92xP5gvDuZWl6mK1YHxlDF+gSjfqsZ+v1mw1wDOQA09xSplW1XJdZrdd + TouAPqxweQeLTveorp8b/LifNwd+HorceJ5HwytV/6jRpbg3uJgLK7a9PWpSb3c0nmxpI61nAi57 + p6+Cl0deq33ilhChMpt1ETP2NT44kxjawvJlRRD1MVykJJMfA1rk89ijQGjkFcWal52yogOZCPP7 + uwuQ4N1FBHrdSURQlEsiAj3VIsJ7Hp1UAv+ixE6L9j0QEjjwTX/EeOTHKjH6vHDwDAQG8uU55qEO + n4Te5VNtEM4x+EfDRZauQUnKZ3G7BM4+59FLYu3V6oNwbwxhpAViJkFQCRPQOm0C/sTcVTmiylgO + SBQ+b7pKgyBBU5Nz/QVjFrcTmEWjPFDsIM9fNrutCV0S7/cyuuQjWKYBbTRzE4P+N1DDVUd6sekS + 0dNE4VD95x7yGY6+Xw/5S/Y151zBQh/e4W5yS0C3PTYnrtn9UsVdja87HIaW2msrws0frdkvFW09 + e8+CFsZ3et2J/SrKJfZLT4n9vv38qeJo5zLRrsh82fNxAPJFMgpEpAGxPlhl727mMGi4rcdirG+5 + UlrDi2JgAzANFelIBo+rJYjWN/PdZIlXI5zsycmHc/nLNLNeRI8yLBdOopzZSbq+wujI5W49oVDM + dHi5uEbkiYuN/PEuXfFfxa/+r4HZSbmwfZfKcn3Ewt/uttWIatvmYkNgiaQU21qMmYl5EAaclRn0 + 4YlqggIOG2G8YME4C8IH62rPh5mLAQEEC0kk1pXAGqsI2UM3xOSqEtZi1oSSESRRU2ixHuHgL7RH + B3hSze0F0j4yOiZIGoTu5zI89mtGOcDpTa0o2BSugHMpeXndvHcAGQ49ck/WzvixyMO4nbBJace5 + CPX9gQz/3MKjTjQaF7v3uqVeIgi/zIHjtLvNjTJ2FKaVgHMSKXErx7RqVXm+ElgsKEa9DY91tG73 + QPgAlmoPPTRsrn6z0oI8nfMN4iWwlumcqpFzOqfuxE7nVE9JXgJOq7Aa6uAyBg2QRyD7XUDDAbaW + WZzCZzIWBgNCcE7esl8vSYOYmSB9VSrMLn/mAGrzJ0jx6KO22zHl2EA+UIWyapF4HICKWphsgjgJ + D06mXm2nW4x5dagVZYqUWuRI8cjCbj8rP194CXH2Dy/flBbROUekPdxO1UPbB7zOgwSm/ZAosliz + 6YgHz1jYiklTE1cWrTqwGDQ90+x5w/aw5+ouUeugN4s2WVwAnQESk5WwWCAekFs/ek5LSKcwpq/Z + eoO7A75iTdmHID7ASsxUAd7aOXCSG/7TOPIh6+BDccL9/f5AFLTDJ+OxoqD9qFRBzVwTHcXBY3cb + Ib3uGsWBlKtRHPCUmOr5h881URyclaM4xlymbIy4tE8oBw2FoQ0/fJZ6gAIyeza8vEOUMgqA00+X + O1ngWE52NgTeSrknRGGMnGODYOXodMiGd0t4x+gtGxmLlZqXMU0Rqx5nNKMK0+jZ8B31hEaYyXw3 + zZ4PLyfDt+cfGDqCJ9tnw/Obu9Hw3Wb4cnVzN/x/pDvhGm29y0025qNwfDXbFL14ZDg8v9vVl3wj + s3zJaBg12cKszKK/ZIbS+W5LRiq1TrSmo0JNsPotga6i+m2hdsWLIWyHdcF4t9mtyCJHMK/5fkh3 + 35dwYOHEIZV0MUynmcD/gAiB/40wQ2g117GXJtADmNMKM4wwuQg9djPFEZDIcLvacNVggKclj/dg + pOd1rD3ZCuGmL6js0JSrBWX+mSdaiXPUxFWcUx1Y4hw9U+Lc7QrtdchI/vt8fALs+G42vx8Uftcb + ZXiBrw5kA5LZuEcyW0QzkgdYjLPvE9JvQB1PZ2spXw2n6V2K3qtssrxZzDrmtxipjsdMX6TUSVsF + nJPQ1TzqKsE9oI5dyB2AuSUYg2I+a2EW4bDd7eatc/x7TJf1mHfoixsVRPcso854s32G5h4rsoWx + /Ahauul+Ss5T04rqn0jXDSk5+u0F94V7xAy97gaURZTLQFnyKTHF30/OmYwCKoXMhKic2lhZvyRR + JHxvBD+iWCW3f7olmVuGVIyks2qb3uAa6UvjW7rRKK3wtGQq1+lWN2sY0bdV4UpXrTHsUokDWs6w + 3Goaf12aUZabO6kS4S2bzr8gxGymTjpe6tuDY50h+A3CJVEMqEqkUMnFU3vk6u/j7e16ubu5Xe22 + 0NVuKquDfjj3hQHL8aOga3VznUQfqhTR09PIf+b5Le5Q1cLtCtXkCzeoeqTQB+9miyXF669QDEaZ + VV2iNX8amZVDvGJDHCu+A8enYuBHV+chhOhC7x1JBYEXB2YoxnPTpUBNNyjBR1BoBZN0Axaxuhmt + zkjWFVYzpNpt7y9EkLgzPXrdiekpyiWmR0+J6Z28el3CagGWJ0RSUkL957/Evg/S1yj2gwgjivAU + nIAGcj9fbnaTiQwFp0J2o2Id428oYGSrjQ4k/xvcyIvl1+XfJC+BWbRu6mKxW1Xfgdgi9MTEw+Wg + prUf0hDF4VUh/kqxfPRlMgK6qRQJayxFEsVJyHhQT7NutiqRgiys0B78gKXaG+SBMyzVRLyQDAoX + /OEllnWXj89vlxgmdLejMyLHcbu7SxGGfHsrlZGTV5fvYcg7XBvrgzboYaXiH5P7gdzU+tZBeJOB + mhapwh34mI6xE8cRbwz4YKRg5Gtx9uHckeY+veUIsk1DTRRwrpqCPN7w2Dke9FsF2SPYtUNH/gdR + bQwm6QUNrYf6oqGvBHMvilog2MrXHQVzSbkimONTZSd9/d9xRSoPWBXBNhRR5IejUCRy9irZbiCP + Lb/PZBgpCBxwj8/1/XKefY+rKWv6dSwKmcpPKJXqrERk7yVRU5sTiESN4YdeGHCE3yxdVoWvoKpQ + 0nWkFUi9USyTIbcDDz8WUWmLneTXTd6HY51NL/JEJT2tNsZ9XPsBdqEu3ohuqseL9TrXaXF+1UCz + tQ6CL/5xdidl17sU1IVFtr4fDbegsmxhAxjwpmkO3iRLa0Kr63SS1VHTSzka4gUnU8PLGyyfpZFc + k83w/NMlG1PBDzSHZSv0gMDGC0DZgx1utCQBB0hNQpED5FMF8myhI2eWEulimA1r20auJ+PIvlEc + iLSjbOXa4+FowyWXcc0ZbWEt4mFc+o49JwrNSqgoH4o+DwNt52XiLWsNlq8budp6TSeWtVc/JS44 + 3cF23G0G+qfVDtXQyOeDIwzqjzufsdaOECqEnvcXrZIE6HVH5asuSYCeKuXr8lyMKy5AhOspa19j + P0zg+chHGM2QFvUUtJ+xLEr0fpxuMAf7hiThs7PRsJjAa/6YFVKLy9K6hmuZovh2M1zMtjJaUcYk + EGrzC2BxOzTvrmaUVozDH6ZrNFFlyAW14gDNKC0UFkGeIMwOhr9d8hhdn6TQbVbw6ZUr96gC2Ywl + DDEi6x196brhBg5FGav7IEFgGDM9TJjciclff7Nb3MysXDPh8eZ8cxZ53K9c8NZiNuigYRNN4cGI + 43Lgf+0WKGWXi0q1yFLyQJ33oGaflItQNibCqa8f/Fk3MjCa/x36/w7ddegDze7hC+SvPP9V5L+a + OvC+LFP8q4HZYbIWXeGfsfXPwCMEBLKdFqyWR+eFEFRQcTKPJglcodEhWcdSfj0Y2hUQlE72vRgo + q4IeWsoTIenyedG/tu1F7hlHxM7F12y+XLkLtkfWY5c3jvUB46vlbiGLklburYMT66uA8PpLqa2V + 5ACtwwAAfYH4hDIF4veXF55oUZiHXneS/hTlkvRHT1Vhng8VEB+WBF6pbLmPQI1+nPCR8IJEgzVq + SOLLkw+FCNa75WI5JhPr5v5ODg8+fQ0TjYcWC3xub2V5BWBz9Lv0YVxTkJ6EMqaKEDAHt4uLj+eb + kQrowhYfV3NBltp36xVm121vQdY39Zcl7zQgtVLbJs15Y3yYZXyYr7P0ChvLaJ8FkDfAbKoUz10N + kFDLqK04DGMGImPZiKJsEWZ2Po6rM1KPH8Sjcl9Y28XK5Cz2aeQnxCce69GrGbIz/D07nfNtXjDG + SwKeJFHFSoN4JPfz/Cusgh7FUccsqVakqY548BffWAM8dAZsjwtCDZIq1a8EIK16kAykUZ/dZ1r3 + o6RotrEv4ttO1U3k6pGhYu+Cu9wOPucUDFQo3GnseRUCyLmyb/AvPIDKMYPpV/Cfe6yr3tli0FHn + PzoWTw8gZmT62XPo291tMScBRI+qL8KS3xQIO3Isl1WAy9TPgw6OGmXP+DlhbOpWiNOgXaykaeNc + t0J1YdetoId0U29vtyr7pahcaJ6k6gk/QZyZ5U16d/90+ERzI/j1/MPZq2Hi+5x57OmgYoowATcF + yoZSuTUORCKJizBQUZgSILTQot2uhfbcbq+0oOPLJ+udEYPuUxSHzZcrQqrDPV9QW5j559S4PFY2 + b0viUMnMpJlWx5TzIErkxL5dzm9mw3QlsR0d2fojiNzROhBLwqB21zlpUO6t628pzcYSrWRE3D2+ + h153VTKQclXJgKdKybg8RyzVspbhh2Ut4xcBQkbijUTM5dFCbnebgeC2uV1Ovhg2hcRINt+seNhD + csZem627mM9DHyTkuCzmw3yjc2fRYEcVUdCY7eEFMeN+VKZYMycNpCPbTp0L2zyMkzgqm2g1tevl + vOLAhY9rnEBrnLVVqVSEt22WDbxDBAeUS1TzwU82sK2eqnuhMsNoLVvfgaC/nM+X30bDDTDudTbe + 4IvT4XI+u0HEZ1VqUeeTDHcL/PA8AnUzTG9u1tmNMsDpZsUqkuqSxewWHORYG/Lg7sIRaGEVRri4 + yV4M4XTaSOC7hYqIncrbDZQDPCy5dhCFAzX3RcFOr48Tu8d5lsK2Q8D9se17LiL9g5Nkhibjkxy7 + 5f3QqpBMJFNtfv/7e1hEd+sOve7EeBXlEuOlp6oI3vllUAms5L4QtmuPPx+LhEV+MhIJZ2GwvxbH + v+fQwV+7FsfAxEEEWOxNX6WRzg9gHm8ThoSvO4YhScqVMCR8qsKQTs8rvloWYCR7OQwp8YM4HMHZ + ZSLav6A3a6BfXdAW4Gh/ivzEfFGF8I9NAYhkCsDvry4EY+5SFb3utBUU5dJWoKe0FT69eVnZCsC6 + InsrhM9/AW4WwH06gp9hEivH/WVeu/jTm7Ozd9L0VYiVLCdUqWRpU54Vk3Utc1dz25EKaJGvNYLo + aHvrp+urBnur28DK5cqbMFYZBovGIa8IfbVJ4jRHdV0EYTPqehT5INFWoPtkObt56/x02wAcNOKw + F3s9VNe7BonhfDkvwi/kYAl2oF1U8dQXS3LzqGx53pOsZwmFPE7afdih3M+dXLLd4ltdUGLEmmIY + 7P1hurMnbIbZpGnj3JWqmDfGS9CUxSGIu4/uWA6Qz2jWySOWqMTbyEhzbSbfxb/2czJsayVfJzp/ + Edgu3J/VQZZ3+H6cFoepeIjkYsmO5EI5c7nm77DQYfb7pfF6ObA/KteT08bzqKoSNFpnpbvHsT2Z + VC8v3/NxDRF0L6m5+fj6TevBEcakA3HMmOky/iMtqyEhnrbtvS/9Ud7O2KLrTb9342kJVOg6pS/5 + aYzFqduUKVVtXKuU6i6sIqXqIcmTCDhpUL2LBUgb/1CkywNQSoNQuxNC2vu59d/dzpAkVEBKxp1s + dutrFWDSwmIa+drxE3P/mcdb+X2oiavbR3VgeX3oGc1qttnKLTOfrbDJ2/Mz+JDlBvjTfDjN0sn9 + vEQJ/TJJTLgkIUj90ooOrdLFBDeRQ8yUOw5GJ/L7r6CQbO96u6wzWfNOXkPD1xeUEnHMkI9OcKbN + ZSMhmuSI7lSlcwo+EC5D8nl8zTZYwmaswI32JlK7fj4LdPLFcQNmoUfijBrkgQwO1+H5oU/zoDGY + MMjA7Pb9WysHbRz8JVxkdWUC/9fP1uhn41wjQK9niw0CDC77mSgKPiTUY4mf/v1+rnlyD6Wse6yG + FNHZqRIayd9AgoGX5dCHV0vMBGtFP/AY4THUnk1zE1mjd8pTiqhI0d8vGGtRx5BedzOSE+WykVw+ + VUWKLj9EFRt5gBKkbSP/JRRJHESj0PdEGB6wka+B/rf/EBt5HIUFGzmVPTl57wn/v8YnzkuqGzgt + qqFeWlb9nBb2w6f/qsa2ysKwRQOpeP5LlEScjWIvSBSMzmuTUFkpavTh7OOr4ZfZIpMm43WOef/k + w/YbWw3P8ohCrAIx/riZw39fbRZs9XT47XY2uR3+e4mexSINhUy7Iaw8Oq6oFEt0vKUE1jfPgZ/B + 9Q0N5giiAyqEKZ5UpFhKLZZjK+9G+Sm1VtOYNeYD+6EQMF0Vq+lmBYoSnHNQc+zUJi/hvIkY97EO + VcW93dfutuqDGj9uyY4ZNLoy9OgGf53tMMAzYZzLnpBlsnpAEQ6IQP18OwlcR2G+Hw1x7kWqRor5 + ghHQQgjkYjHvltPiqQxlWC3YXNLDn09QcXVako2ZFcv24eyS8V/lRpQhb+1sOQlhu1vH9wFNNOaa + MNUfgCWzZ17UMj9ZNXLOT9ad2PnJ6qkKNCre5bqw3OXJ25MKgPjlzTVPSraMQh9YAwLkOtLBBWEB + dke8rqgCLAwiqZsg7inFvGTbxpDug6Io2TEJ2MT62u5qdrdYjy4Z1FEeo5ucxC2LiOSNnKN0dSd2 + mK56StuoMEsgKC8Gdg15rXqfrSdh2RqWk0crTuATKFvESGkHOjO82SRKAWGNHyhP77T0P3CtKBDx + /L0XtRD16XUnqVBRLsmE9FQVxDu9qLjMA1aCVvTj57/4oFL6ychngQhU9MSnxuovIArI3AUrfFqa + PWV+wshAJVIJ81LN6beTNV/pInWTdbdco6IvMQERrSpTFTE6rRDBMGqM6qun1FwGp95TDWN16SCP + QVxK/OWyDyef0CJ5H7ai5QgvwLSIwI+8SgZUA/nDjnC728TGTrPQYUBu5Dz516DzlnkhHXl6uYy5 + DmMV892DeynfWQY2pnl55E4b4BnQEmCQJBRe+CfwT8qVliaIg/ujQrcpLQBXcQ/JI8tUtE0ZqDH6 + dcYgdoIOrmPtx2MO9+NBC6jSvb0ENazm4Kyr2yf2DNJKi1xbet0ZaaWaa0tPlaHp4zvuVXEuWcki + IZFW/CiJxcj3Y2FAxDSWHe67dzyvo2yFe1x8VH/OJ4gqWC9uoe/HX8dgbX1lA/BIwO0b5TzPUfUj + 4cesjCSmAknmNUmpXshD7xC1QcfJx4xQgkMGfZxgJE/eXgri5BJCcjM8gUGtp7Px2+VuO8swknxz + v5ii4jmgDVOAYvAHasD6hBY/yul8PV54pT4zNLVjAG5hu+60Wh/naADcalUCbas+tiWyJykxZoqN + 8Tg4bWFe1Q0cWZmiXmFm9JzY2cePJegAIXwRxz6vcDOQwljkjVAY85WF9UymaEoYb7j24PzfwOeq + cg/3UrS5+DQ+P73QBvX5GrqejNP/CJM6fCoicmvFKeZayQ3CN/EzL2yn5OpGrkqu6cRScvVTheWG + ntjb+3leXHSsiiePSQ6brWYI+g5/Un+oTxEeHEvoZH7DvEEq/4tBJNynnFTtSyb6y/l4Plt80Zk/ + atrcIWHdNOk/vde5pZXnATzSj8CpTGyf1qGvbX6Uh7iv9HggFURNpEbmqUyEll8HHzO8WS93q5a3 + PXYUO3Z0m31v34/mi8IY/7w34TOvrfFPNXI2/ulObOOfeqqMf7v5NdawWpviyEUbX/WvV9CPMStX + zIG6QxnUpUseeYlcRKS1WxeRPXpiZcYzwDyhO0IQaWBU8p3jgnxAEghMqZZjQsXikOi0noD9tc49 + CvBCUAt4LBH0j6bKEkFmhsn9BjXiPmj2V+z+kIDd4j74gRCqZsGEMMfBPlrGEfvx5NX5u6cdL/X+ + IN/V1V7DIdQAj78sjurkgE2H0Ilma4zFXHas0wTHi2yE+iWMqQJe27UGJ0NQImzy5sPHbiPqqaS9 + osY9VSn2NrvrWPPr6FJWmj94grGGrUA04IsXXfdDwAJh9sNYXUWT+Y7CyzqNl5JYfx36kuYIfh5F + VosIJpSbc9RfeDsRQTdyFRFMJ5aIoJ+S2rz6ehNUcXxynMdiSZXB+de3qf3ImFXPgc4AicmKiBGj + 4PnI823YxS7w6vq4Royr23DWPibDSzjtZFLuxxSbUPzMOsCvig08YB6R8UfheHW/3n29J4sa0Exl + 6VZMJZpNd12rnJD/mzYfxcF2DaZ9ROifrnG9j10X08c40FAKXpsoUfm6K5SCVxMlKp/SsT39veo6 + xgCxSpSozwPYsSMf+G/Aa+p/XH46ufg0PEH/Uh5wNZImL6VbUs6nBqBVFYyUSwrD9bWHikxjp/c1 + PmMpf6UNWONxHDZY5TlLQl9UAGyooAwqATjYfUWpwgantEXYmMrejjUzo4oUwN6xXDDmjEqL+eTk + w3kxgXWTYSgVfBXG492U0msjFldKYmk7fhwFiV/O5L04uRza/ZNqqqVoizgPm5K864lrlmmPkIcN + PmMexCypoPHY3shCeJ5tSIyaPNE89hG0TRfeKixgyXEhJxq61Z+OGxCfFXy1eqa+EGCuWTCq40gE + VLU0jE5cL+cIifM1xbN2r4ev02UmsgRkEX4zL1E2so6FwpnR2aIjGUCOjm04vqtb+SU42MKxGOBJ + zfE7fE51t6iOnhxnD3pixAibq27ftKVEhsqjz0Kl2z34oBGn9FA7j8l0DGL5ZgKHvu2ncJqUi3Sz + 92C1GWnCEo+UwgnaCnoq5uV1wv7IFVUyEpSZ7N7GVOqFsj3u0huUfHZ3R6hSfdYik1+zh8k7zUoX + Or0P7OhKZvslmmNKmeVEKNpa1bhf7zbj5fd7vOmPIdtXCeQ41FnFfw+TsGXyq27jmlWsu7CyitVD + VeIWg9wxC15F5abbyW0hCL9gMVUopYyLOI5C8XRwoOn7zZW/t31xgDI92VOepZgMsOj2kKaqOsXI + 2WITebQxabTX8FcJlnBkRuUAAfgVBnTtPHQgqTcIYdafX7AgaeOA1g3cIjk19XIsp3pOIvk/Ll6H + NQ7oJCyHc47jEOYjHsEP30vqHNB4A2Gy2mol712ZVJGu1+n9GAc0LRbr0LDTSmSXxTbG3/BGMu7r + TZauscTbjfZer9Yw7v8c73XE5VF5TApkrNMNEj96xtpwNd3ENdVAdWAlGtAz2rVf7jaKuU2WMxDu + xvjDdhMVczGultN7c239A9oOkIC0+XA/GvSTv3OMnefo3Jv/mHAkxDSV81xd4AqdvbGR3Y7V0egm + +ixRHP+H98AD3CMp6XUn7q8ol3g/PVVx/O9/q1asC0soiH7wfMxB8fOCEQ95GJtirFKpJr7/7re3 + wye3s5vb4XIDLJSuZnR+Z6DAPh1/ODkfPkENAdj8OK8YrWbvqVaGteILE4pkUBgv6a06vn++rNpq + Hl0MprSr3s9v5lhrAd2g+0uR+6Gd35lXDIlBR+GiDNhWpNtUmTzykwM0Bx+WC5WcB+u1/J5KzeDM + KiZ+iwW5t8vveXGK5bWqiaDaDJ+ksA3GyvRhh5E/xQoeOnmvAEJfHD9WQZVtgc+PX42rM2fV+VoX + t549jnn2NZtTTL+9hQa4100IqB+KgZofPLN1U9mpGDdLOGE62aPS9cpymojWJT8T9bGDCu+PAv3F + PSgVs4M7t6UK2p3uHptGzAms7I/ZYtLdAtCLNtqX2ph4Jp0zeiNahuLkjZzTOXUndjqnekp3BGhQ + iuO//XRuZkhCxNgPiik2F9BogC2pIK1HApaXUF0RKeHcYV5fc7GaJgtE6FGGMRuJMUb9yHixdHFk + vfve7JCYh0Ch0pbN+eJ2OSzO1kFrEJ16XmNdbC37H6E6CKaipCR80ny4dk1/CRgvwIdtZyuHr/US + 2aK8yzqHWjBPfnl56g/QrAEgT5iJj4uF/4x5LePjVCPn+DjdiR0fp57WJ8eW/23RwbC3kPuDY7Ga + E26YE4+TlvOQN3JmTroTmzmppzQP5SQ9depghYuKYC1IYCXtXHeHaecsEVLzBkGfKpPXJ7ZtVtkE + haJjM9xczVyCB2FCms/RHZegvg5JGP0lrT8mjdI5xW+/DyFUsaTQdJ6NN7goWO1gL0XnCRWR51tr + 3gEFs2XX+sDLwODfX7+HS6QNBpFu4KSlGuolPVU/VyDtZx+SCkh7zOywARE9/4WxiDM2gh9+5Bcy + zufLCU6WLM61yApVgFCVyXlhOixGExX/kBdBm90R1h/BrM/ukn2Q/1r1N/1RqVZbRQ2aYIKSmHNY + hoqGeriDCjZhtq7DKPIRidql817K8HAmYq9KsW6stbTjwA4fAH22XK7TGnQeRlCaL2sHlNbVSk/3 + ShUaCkmNIPQnYZA8VE9vaz9r8MF15Ueqck9qll1q3R/WG8ZWv8K2Zd5KVfMkbMyNHhaBK2wygz4s + Q+s3mdTrkfEAj5UaWd23bV4M71K0tIIiDpJ2oe4PtgZNbXlXUBQwcR9HqLfUeD77Aip4iqQHeOa1 + xh7BzSc19pBblRkJeh0polF7v0xzADz0KEjTvjBB5T4o0lFrAgu93L+3flY3zQp6j53sMeOGgefV + qEnWOhjCbVfl2AgHt6YHJCJlUept8eWFU0eyyktcvvJIHVPeQG6j2XenuYz0obp64Oq2vZi55N1Z + y6D2pg3sOd19Rdj3UiQs8XPDGai9XtjSbibbuJvNqIuS1Uw+VEaz2xVT1d3lsl3PZGyZRkO7SKfw + Z+XnHl7gywPZRJrLwlgBuHu5YqLKOkxus8mX1XJWB/rSaDE7ugqIckyCErwtAiU0EWscSECpFLur + 2f/dgTq9qAmLrFrKW471IcpiIIqKVTbQfEFDYEnDDAhM4zd0UolfiHrJvDFCpTbIPqJQPo1bKMEQ + 0fzaoN4fp5grDTk0LWWEnMwS7KYqH69sx/IzaEUPKNn7vRIxRW/m+1Gv73x2UzbVHq7I0ktsXH9O + DToHNV/yE7wagTag+pjBE7Szn6o2ruZT3YVlPVUPiTnfrVdzrrizLQkgsgicyoKur3OKf797z+OB + 69vyXdmLDHkL4liBKVCZG3n1HpsBLJByVZjZS7vvqqLk1bMHMEeNrDA3ek66G8A6JbQGMeX7q4G0 + dXx4AbcRb0zplfZSoIgEOZfyj5zA3bSdbXcKAbl5kM6mOhVvenoaibClad60cTtieReFI2YemiO2 + cT1h7sfqUp6qDUlJIPL1f6jcqO13APZ6LI/2AP589TWsmY6NrEbdL5P4zzjvRgw6opO9d3UOKB1F + cYcIBGrkrkqpTkq6FD1VGtRuicKZNA1qDYqeDe5WK8YkO4g9VazJ10W2KwiU9E+YqOvZNJsfhxDg + XEjcEfKoR/iIh7kt3WLlA9Jv3m1WIMUeFISdRR2du1xTvv5H2RycL+JYX8SMc/GMtSknZ9q4XsS6 + C+siVg9Vlvx2wnXIwBqh8m/XGeGx6C/WkEwS0kDmbkSgO3CPPR3UvcJPh+dIs/wqPJPnkAecjBeM + wNVBR1bhQXQSP5yc/yNXR6Y7GVJSCBrdZItN7QI0WhV8Upj0YAtANtNMJwc1wrrXVis9iuIh84RX + Nk+UQl2djQleEkorbj1uWGVn5yG03VjUg+Ob5xpwbLFW2ri/FnZuYTu2v50fZ/JgpDCZaXfVHbzu + lLnzbLbMVOyH9KF6XL0U9hIe8wNa9sVNCgufdV/23swiiRa1OHsXtcsRNG1cBS3dhSVnqYd0VWzT + a+bVhFUNi6WL7dCS+sgqrBT7qlLs45Mkb4Vl4RMZbhUypcsJQXgdxqS5zu6WKKyV5rZq3ewJep1X + aRQ+vzW5x19puptE9vhrp3hRHNhbqaXe+hOyqUIK7nM4VD9IPSBtltzrR0ed7efzx1d67iSvh573 + PxsT3hsE4TMvvGoX3qsaOYf36k7s8F71VJnPsp2S2nWJmkL2y26V57+oZGsmopAFIIaX4oDl7JZj + g4E4k3/AXgZB7PFElv38dUi/x6pcTpdcxkHrHaaXgamiNtxP3JPh6HXHojaScqWoDT5VyXC/nweV + ojYwEZUs6CiEgzqKEhGIYmKETmwr5kE8eXty/lRCw9xn6WY7vEivYOvCFryX0RLZevNi+Ptqy1bD + GeVZwdqqqYLWXxG7SMZewebfZsOrHczafIO6yHaDdUgvs4m/emGFLBaLH0Or6+vZ5IuElymVy8HO + aEzp3ep2JgMQFpvR8OLrhoUwHgkdjr9HpqjO/SqoTbrDRbaBkXhzLUAWJ8yvBjQCjR061651kIGd + e8cDJ4J5SCFOdHPUv0XcS6IDMYV2JybUb09taatwD0uaEvsM4cExW2jktgGy77ezK6yGCATzqdgu + v6XrqdqEVBlno9zkOsPu7f2crUYNO8+uwURv1uyhAZ4uHcyHyaQEAXF0GXGCkPjejCBxiMBRFcP3 + JAL2ViMcdg82aTOs3gk2fyfmO4mqkFs+fu4CgYIRVIAFk9lqhnKx8X1c7aZwhx/Kmcwlqh78JyHJ + pSZA7DqfAbchkJ2+zODcWh+bKR8lhIqFW3sMpJcTWmxdcv7hzDid0J1M40TIXWWte8tPT0gWt0gc + zEQrtA4qrRfZ5EvvzZvlqL4T4lQu3/6r8YfQ3JPU2wOyQuhxylu58GLuLkzS6245K0S5nLEin5Iw + +fnTeaUYupfwsJyvMhbc52E8Ehjdr2T+j9L/WAhiHlXrJZMD1SDeX15+fqoj5tB9Q5WNZwsZGA+v + fxbDzWKJSpW+4osig2ooLfHXKIKOWXw5XOPrJPp93q6iiuhHQ1iYwTa7Tkt4DLwpo4LDhSy8pCzL + qZHXVF0UiHfsRC0vW2h9K/cu5ffKb7UI+4ldzerD+aiO+KCHxepprQa450xN6jiWRa483zcoW2qp + pJ0aQwe/YkQk1lD9dMlQ/tlkEt8WFNLLzzQj8qAFz/RmQHnuvfU3OCOT2UaxB/k4V9Plh8p3RzmN + kSFQgyTf5OLxFHzAXYpKvJYxLn/KSMjy2zidMI1kwthmNNxsGPxtnCEcRXnEPQ4q9g6tMQzi9adL + sj/+iIkKRUhxuNKQk+/ZVteLz3lAVLRbugHt+sjgtkPxM3m47bI2drhGAugtoMTQC0mcSohjNTvq + 6wbDPXLvS0Y01oyowILcbDSUDvrmAk6B+7VKrztdq4py6Vqlp3Stvvx4YkPVsSSC9cVM/+K9Gj8f + cx/u1XDEfUTEp3v1/93NFss5Bm1nBjUSp/F+XqywU4L0tTDj4fjA6mDkiY6CVrznfgXyORrcEOrm + y/0Czj15wBSiEV2jLxdp+Phhi9QXYpGmAkzsdFbwfGOowCRdXy2/S5v/4uZpvW0FJr85F9QDxYqV + ixZ/PHllT3mRXOKLsh1oVCwYrEkOOq00wRwNF8uvy8qq47D2L3UzQNG7zZatBrhz9eXM4EOQMfVV + wwfnBZtYk3dMmR0K2Vvdr2dT3MX9oAVrZgSDpQB+NdeNoy5PuIsa8Z8BhNdvRZ2AKiAdee4fR6dH + AxfvBQz889WQ83mssmMlTuukEFXdSbOWaXa/v7xgcewuAtDrTiKAolwSAeipKpf66RTTTS3VmiVh + WIKC8J+PQWAJfT5CsNpQQUF8kBZzymlXclgRPf98vWLJakSKF86PBGqTKhymvWVS5HphXxuogt2h + lCtfycFqP24n3KsqzTmdevU4jFnliis4DLBUE3xPFUGhPIiyg9SCUeB+/K/6UgeI24wV4kvXss41 + s/oYySuw+EUWtK1IyqgWtV8y+BFrMpC7xijHIpHVDHCIhucf/jonlh4KhZh1jOLjxYJUOntf/SiN + J6SE0dbf7tTwQZOlBciAvDJxpbOg+GuG5bBySMu7DFjZYlZ3B5cvFc0MZc7N7+8umNdCH6LXnZih + olxihvRUVdN5dYr5KradkcVJCcHVQzsjLE4wEnAfCJWZc1qxU2UrGXOljEv46G4J/12Pjflam6Ts + sicgvnyZSbX8hSKCb0zWu5nJ7DWnVpKRhVFApEvlFoKDf6UK2MFL09n19Y4gwrc0BuU6IKRweHIv + +cR6hvGz8HfmLe4M5PsGBpAphNHXH3Rtn+mE8R40L5Ywn+vyMkWuXpi4JxjBvBtau+GpzRmZb2lF + hSI4cQQ9sCp7V4GUs+k9aDWIRbac19lD4Qz5zZ5yuCODKKpYVxsTSKS75wuc123ZHw872eUDzPWR + fsekH9hElQFHcGAbSCVxwmJWRr1tKMiGO6NgHLK68Pyo1WiN08aGqLSWMPF4O5rLxb93NwX0W9OJ + 2usW9ajtiPMDWBoma7dQwBPTq/lsc3un9wBO90oH5zvsbR6LVj1K2k1bgx0gNfgPYGEDyeON6YD5 + yUBtEan9HdpXv7qkru8HZnVpzzytx+p96NTwcJlFJxpHw/bL0ROXqoYabGRr9/EwiuW/mtHePpag + QBxKad/ffzhdaB1dZMBTCBZVx3bx5DnNU1ebyZGudaOBH4mMyzyK66DPbgND5Ny2lwHUScu0kmEO + 6qGNe52SYBIyRLXCNzaryQml11EKcdtYvQBx9ILdFAQU/QNz03kYlLeyVwTcO9VaW8kTE2HnP/Pi + domJ1MY5MVF1YScm0kNSPq7n6delLJ48+HZ/tcPovWJB92KF3k/335hFFfMMWcRVvi9toC1qfHfL + aa7QVSbFOUYeVCRhaHbV4QULqCR23efttZ47pgxTifL67D+Xs3dM/ZP+mEdfVuz/razuZA7uDbTt + z1G4PPQS47MO2/msQ3efdVjrsw6Vjeb1xd/tvALmCxYHWEi14rMWXshG3PeZHxKb/AfmbCNwxrqA + SYgKzGQ5Xu3QfJWp2OuPi2umQ/V/v15D/5PVoK453Km6FJm2ArwYFkJDTXqALIm6RZn4S5XMRnWI + +szlasIxGryYG02+zyvQvYan86tgfDr9wvDlEepH6XCOxNdY4xu6GOErXL7ybHD68SMrOEp5P5W5 + QGyUBDAbjAyTmyxHpm11p0ceZd0hosmPr/LlRYTFVlwSJ0kLGmqNEQvxwKuFydhL7bHkyek4FCaL + pPz+/sILQ/cq5vS605lWlEtnmp7SmQZpRFQKZ3lJqYq5//wXHkYs8kbwI+LKB6VqjKxQbp/KGtAa + /EaeXThMouo2KrepD62MGy2XsR/6vl+x/ZXJ1rqLErimG9xFCfPjpFKZyiKbFSUoqziVXwHztsmW + TUUdyVKQSAUnXI18cKlmH8s5NM3yE1gUTGxBRkc/BP7IJoytno6G325nWBPVFMwygXcYOTJGcNnZ + QgpwkrwW7zYUwKlNSxLIOpsa51Y2AXFuieW5KYbohcYLXe6kIeouvbtL57N0gbI1579ygTKyMCWu + PAWY7VuVbWomz+nEdiCzP/OmPb29QNO+BRlhoYK/vqjSqsPVbClRH4gHiaPK5+3Fq6gPD2lL5dCg + kuYP7F5c9GfXJu1LWY85qX017LDdRLch1OBbZJQP+/a953H3O45ed7rjFOXSHUdPtdx6HlZci74o + pTAkz3/xEz9gychPAhaqqsDnah2kLFlQsPE43q1AWJRy4+v1Vx4AI70zEQAyBRYuSpXguCevUaeq + yTvz9XpVDays3VJWYqZnOxiKGZ+eCJLQCx+qPHCFu5dqQfjVMheFGA09uMGPmuYXsgXa22QQ0Wi4 + AK1vm94g/q4B999gkcgMoT2QDhYDBdJKR5mWa6zIv4+3IIHubm5Xu+1ws91NQZcZ4K7TdxhPessT + /Y9J8zy6YkGvl+Bf8r7RLNqUQ+PBK8bbYs7rRs4AProTG8FHPVU1eT+eDG8zBGjHoMkC1E7jHyzK + CMUD/9u5UFy+8N1xQ/u1LvYHXO4Lyr8ws9jZTkkGz5N9HgF3NBcXavtlFY9wPoBCAYfI4SvdoYKO + hfDS502o2FMetTDl0euOsaeSciX2FJ+SSHR+flmul82SCPNLSqGnUQD/G48QXgbNPUWRqAiKRve2 + quuGE4KhCASjhgGPCkdNBQ3cr8mJsIYrYrrLNqAQyriDNVY/l2bBTILhFxwot9iJuu+LtjMpNJ2v + NjVFtJVXNX9WK+DEIuJ1Ak5NTS817EOwcDZ14VVU+ILqDi94USWQxAWt0TYUROVe9vdgQxxc5tOL + fE4m3OVTbAcglXJJbXFOdzZ4PDtkgBvdRMv6MUlhfyagzR4sxkkNjvD+RW8jOALnkIJI1w+Vd/SD + wkba1YL03uqBdj/KOiOowAqfeQAUSsmQajvrAUazN4hLIJQUdkOnD9ZXLaV5nF+wwHe3PtDrbmhc + RLmMxiWfqqv27GPFwh5IcH4bjeuXWPhBkIxiEXAtBv+f88uzX/4F32tKeNOFN1tULeuPLv2yLxMD + rvzCjp5xjJgVKDg3Vr3E0t6xn99WFE6JUw17I12tshR0qYlkkf8HFhHWYSXF/2+3GYzga7aGEeLL + 0wEusYGEEkE8UF3jXj00eide8Z+TDNgHagozVXqYOGHsmSfa4SCqRs44iLoTGwdRPaWDXDRMFbwf + BcclViDDD5VlTAmpsKDeGnzExPfCMHg60O+YWsqT5WyeTcf4w0zeh8kqGtzhf7ByeuCr4j2CYmSn + S8RxUkWeh1frLP3SWAnNWY/rhrZYaC2FHZDr0lVt86a0yEghbcFunCHngMFpxEl4BKvSWOJsD4RP + d6Ldy511P8o/5fzvb98WorWX00/JTB/ee6xFZie97nTlK8qlK5+e0pX/2+WnisNBhNzWrv3g+ZgL + P4rYiIsgCRRm0rv71ZLi6uDrfrt4owNh7uZAf1K59b+mk50Mzja2P5Xa8Ga3uJmVUhpEM5zlA9/h + cD8Dy8Nv0s9q6aC8XqIzGBhHMKpvA/UduCVgSDfpfCzZAM1D1hadLSLwZ9267fGg0nTVNfjTWoJl + zZzfX13A0XU/O/S609lRlEtnh57S2fn09n0lD9DjYckyFT4fByEcnWQUhHGYKGfdp/UMc8xBb5pm + w/ezFeoNqrj9zbwmba4vExF8cDq5n1PfwOfm1HU9kkjshTVRHcaGEvg+rwC0AkH4m0bXKIn4YVg6 + 1gUDk6Jm+9fms9WyFKJK4Kmb8pdspHA9LT2TArACCVG+NlhPGNgLY6AhhFca9hR35ZS27AzPvbz+ + BrjQxj/mh8FAbmUqZEkNu5ZQJYtCTGG0h9bGiU90JvawJSH0qY3p1L5nseeu5NLrbqeWKJdPrXxK + p/bs47uyPRl64ax8an9hoB4l0YiJKPC9/TfedA70vzXceAfuuZ+lq/Zxz3EhEn3P+U333P9eb12u + t0RnjnD/JfNaV5c0rVyzR/JurPwR85gOwMnJiQ5gOJGpR6U6kssdRo2bb6Z3hh82K1bygBY7lKkl + jOpvww0RWla/YlTZAd+ma9m3n1ua0WclGtVp6/ZlvXlwH5m7lGnI8ZNDyW7O7tGIkSOApmoDUzWG + 03G8DZerKOn3wAhaREnL192ipIlyOUpaPtVR0icVoVRUKir4cL0hhlk4Yl4gdOJDJbOb8lzR6KMD + bvWdgwCpFYNhWkolVpXmiMofMIE36+W37e0LQrSXbrLNJL3GomnSx/bhyxeV3fBhhb/lGcrEUWWt + OhmXiWTNRbt5AV1sVdrE6XTC41WhgIOO8E6rUrXJYrUuzqQCeGdkVIzFi+KKFVqjXJfINMPwiZAF + UdWanWOvm7RlG8NClHGKDo0sX8AypSbEAIZoOiiVVMLhb++Wy7rPbDLaW2PK5RdruyhPnwzKKxlS + bGGGJY3G8eJ4jXRzcbvMa6RRKK+M6tLeCctXzMNm03stddr4GjvA3vS2F7oZKrmecu9gEGUQ5fpu + OyFCAK2A86CcibDaZLvp8vYeWOlcnfgyRb80QrNlfF+AzF2DMfEX4ERogTdqpIBPHagdkvte6nfU + rz8DAUEuk5TEapbT3dbNSSY5dBydRhSLsCY8QC7N5jZdtS4/3R/Eg2Ai9qtDK1SFw+CFVNeY+bda + h5azib3UFbejXJfju+m1DAheMXL75DeQ0yL/zBISvhBCg56X5vDgCJRPIHciOFxxeydEi5SUlPDh + grMWFhN63c1HQJTLPgL5VCclvK0Cnok4DMtOgl/COApYMMLYb43+2OgkWEMHVZNJb4bOx2Qm8WOO + 2MMBixKVCD6d7e7GsJDI89MtcBkVJesCVVCHwCvNiB6FomjcVom19whsfpxrH7f/Nn7mBa083NTE + 1b+tOrC82/Rsfz3uL8A/S0Ha1ZAm+91zkAt8q8UKn6D7WvhC42SEVrxUIdbuYACas359TCcHPNxW + umD5vm6xkxJOASbFCtxw62BAQTdrR6/mDj+MrJLKaoG7BvGFZIo00k55Hx0k77zyXbo6fAEf/wF/ + LuOSwgY46qv6QKnW3FKoRHsQ9tok2uPrjon2knIl0R6fKrTndycVD4lgYdWE5LMY9LWRz5lIFIc9 + 3+HXfIULMP3l13e/wPeB5LRcy8LHBNF8m1Yj4Mv1yuzKlnHZC5mjVXoc5r5iYZDz+XyiY+7MCOq8 + nCzwk6aMxDgMfGOn6Y1+Qd0tjt9IHMAUl1/TOR5J4ORSEZyoPjEgK1vCka1GD3qNOrXqZFBdkWKo + 12aJMolUeUFgA5EW/5VdX89334cqZZAUcXupSiDQ6fwLqMR6tFuQwSgwMd3KGwnFmncD3F9GNGI8 + 7ifdkCy6stvuNCQzUVNxHKk6TW31ri2ZJPLKF+dycyfDuoAv1oqHTcojTralGrnuszY9RFYP+UZq + TXPgHVfN8DG48vDwc0Imr2MS7QYElCjecDnfbbPnUigHTaAPysqqQNu+JeW6qT+K4P6h+lrFOcSB + 3W0qPoWYFg59J9Ar7msth/vvwmeMtfHX5o1cNR3TiaXr6KdK29nNr9EDYpgYTJCl4hz4u9UPhuWG + PBj0w6wV+OviCB4bBB5tM9nenM1uudvO4QM95G/Xk0gIz1PmyacrWRTQMXL2cbA6L+AssDZF52PO + eVwo1FJd2faE9RkNDBwnF8Ez1ibY3rRxhuNUXdhwnPSQ5Oyb261yvOpQ7UI5q93KFLQa3Gbflxt7 + At5iWxVp70UigBl7OkCCGE0Rx34/B/W4EPk49IUxSOEtYDGbn3baPWUj1tjhCObrfE5dRRL3TO2f + fnj1DIMkHmrxzdHe3duR9wIRUBmT3U26zkWGzf3dsawkUXSVF25s0lB65y6hwaaIXiK4QxtLZ97I + GZtCd2JjU6inxFf+6xWmyWSpgdMfVJ9YtBCNQsRcoVH8xdM4htrrw4Vl8WqH9KUj9nikBcAkSGAu + 28l/qo2r+Ke7sKQ/9ZCWXn/MdIZiHlpHpRNOWqZKsLYU0DfY16IsFur+pbU78pW1O7AA4dCZ3gGk + LuQWuA8IUuhPx4BsCZQEIlV2hLncD/zAqMFAfLr8vl8x3SM09iD1/XzgH3dT618UWQg+TUSBFXRa + dwKOsNdrBkGx779dgCTjbtml150su4pyybJLT022VyXB2w+DUuWq6PkvPmhowh/5sfBiJaO+RexL + g5uqwnKW89mNZnD386L1WzNR9aI+uVXgznQDys7NbJGN57PFFwzNUbUXjdlskX2b3xsADYze0Qie + L4a/bbZiJeu1S0EBVXy0Q34cV6jIsW+yrYUASjZpSeR4KLvc5opOzyCohuPZ0zWsmy+7ZmDgNYaP + gczvxRV02Skmodzez8emnGexTwx01ZtcTlCtv8KuJhwlLh/5A0eQT0Lie4EfljOQPtZvJBuGpoTa + e4hmjXN1L/XQZc4q1PUegEsCNtz8vkQ1bNpuZjMMHvSQpj/plA6QbWmHQRAypnzrrE5oM3PnagGU + y1Wk1LjGbShGDRQbNmeFdCO0wiMQGQ7gsAbyRj+86Zy++fEICt1I1fk1kKPhm31wynaL86A9N52G + B+10fyGgx1F/Wst/ifLs+0Gb5BD5uqNnX1KuePbxKcl/719/rkLo+xi6WkkOEaEXJyP4GUe+ylm+ + UAbJjQxB21juY9z+k9sMCxykNsezyguhe1n++Q7mKEVmLaVknKVnw3OssDT7mgHzNrZPLGiRzle3 + 6RhEcVjI1f38LsW/IPwarZeCbUW682w3KZc0eqaEvPfZrirktcQPwvCMKKmIPMakJGsXLef3Smc4 + O6NtM1nPVnJP7SsQLSKvqVvOGYOVKmda13xsqYZA0lRymsdcMK9MsRRXbA8dt/f5co4ftcLILTSU + WfKJCJoyQfT4B//fbDEZX8MZxJKNdTMjgY3W/eyzuk2G8fkPsckGeLJy9AdfEHpNkLMO86UtzSEi + qAv5LlIcIb5gAUe0dQfRgQ6ISnVvm23gZOyIw0A6WuuWbG+864HaUbGkWtoXKke1776odHllA/xo + krXBEj+wJownUX7ltkFoy444wZFXczrKHLI1TYrg6cqQ3Watn8IHFNrzB7DE7jXBjq4tpmQTQYmr + /3jPWYvyPvS6k2yiKJdkE3pKssnni2rUIQ9FCYlIPP+FB9BoxEMWKlSGT1g3a/EHDKCgsUpw1eXi + a7beKJ42nUm30nK93GpYagynKvyTBIXP65oIxQ6QhV4SJLxiHckHgdfJNNOurmb7Bwt4Ux8BY3Fc + AeW9X8N9N5XsBKk2yQcsiQPLTlFI7eMhiDkgjwxe7RnvqDTd18vdentLS5FSiFq2GioM3Gk2XCy/ + Lu3RoJJvRrsZqQWTuTc1qwWnyFqvAW4ZU7YsTGSR5pBTENrfVId/a56P7my7r04aDQhcOUFyqlaY + ew8fwCXb+PzhvA9yMQsMF+oCgzPUTn5GEZjooKI/kJfKXW4auDkR+8SC1JpiEtNdnn0HPrjYoId5 + n2Wg7EzvrSqnrxbDjdU4Tc2RJB9yuI1WBxbENWTlzvq5MMo9VRfVNzdTsMFw3bjjoNHrjrDBknIF + NhifKsiJ3z9Vbu5ABBXY4HHEmSfEKOJ+xBTa6OVuJUOelrJGzu+rrdCADffbB0TKP7l4M7zZpYv7 + +bjAWLPvMHegnO7V0wOvMR+Beb7AEIRjCw9V6A3ewlhLt0B5sE/evn7zVJrVT9bXBdt7UXuWlW5k + aHahzNDGWoJ7XIK7He0xaG4XMLrMJtF4urzLdawBrr5BFObqElaILdn3pYzEqHOs78Np71CYp5mc + 4B7jVRUXt8CBlHTX+yakyxS6xuwqFfzekrEcG/jSHtZoQJtZ8rMWZ6HluDxyrrQ8cG4Xdk+097JX + rtOxeNIqHQted03HQsrVdCx4Suz11dl5Nfta3m4lo61IkjCIR77H/ViZbD/K+ZC5GLTVR0Y3Tudo + IKkpQfxZDDeLJWjOI+BXa+NFnCMS13A9u1rSJJcdb8SGU1IFNneIlaH9kE8uLz8/1SKhhPCwkoZY + fDlcX0hDgoZGt7uWS4cZuNl4XSoPb5xJ8tJ4NVtVUX5oLAszE82fUFLteJPvnQODE15SMQPLWasD + sBFYatuJWtEnrL8RZoF7l/nnW4T9Up2TEtyLJj74T9kJAzwueXYZk/eR51OtUvR0qo0gJWxTNBZG + f/bpkqHEvslk8D3cdZefqRPJJIJnemxoW35v/Q2O92S2USxEPs6tTPKT5bujnMbIEHjqLtF6fqjB + KXZrc41d/pSRkNGpcTphGnH55DTK4WbD4G9jeL064h4HFXuH1hgG8frTJRm4f8REhSIkWJjSXm1n + 4+OcQhbxxEkglUIJiQekhLdR9g1N6nCylEAIQlIK/7lHl0dn+3FBZslR5pdzR6M18FKK8W1mQK2G + IYBDSjEiIR5r5sZpMNwj97Bkc2PN5nIG91BU9n6RL6j25vk3uA7Hk+ViC/I67jugXAj5afXBA3WL + yWHaF52T8qvlKUpvf3sBx7VFjV35uluNXaJcrrErnypD85tXFXUV1NOgUmM3iJOYx6Mg8RKtrpYK + sNDXbejGPJ1O/JhAwz6u5v5qZKleWIXhBvGgVCowcKfd1Qzuvi1iNxWipSQBuOtmeFNnGxBhdDK1 + vAF5eEmvpnLN8NYsoFbb6p5RlxSYEdGni4LCvRRREy5PBvDraVX1rg8SsiWmEvJcQTFmEdZGF00F + 6xow/4IG6zRINSxgftnwfVfisrZ3OomaqDEEZQ2aatvlOqeV1e81YjHaH2vomdUuuGoN40rr4dID + 1oi9p6egXBPoL7YlB3haDWgeV1XxAkr2d5nSzhbyrn0cRFhpU7+4oq8fnXQgfOVypr0xlvtiLI/8 + ENGdFchu41Xaax0UB7PqQYA04eu0K8Tkf+bFbRJv8kauaVemEyvtSj+lG2Z2t1IFSL9A+yVCHcFH + FXNoKA4WA1gw7AT/ySQMdsKp8JHnkQHtQ7vah41yaOhZIa7UPTnUusluQFEO8OP7y/FVlq6VdKEw + d53o11anPL7qeFg1xTkctAMwHOz/Z+9Pu+PGkbQB9HP+i/xy37ZOZcoEwdX68B5Z8jZluXQl1/TU + 3DNnDpVJKbOd25uLbfWvvxEIgAS4ZIJJylZV95npkgWRARBLINYneC6oZiY6lUOoKB7GVgpiv4Tn + UYfjsa/YU/tCm0GorIVHlL4SgNFFe2qL/elhJQHB1opQnGrzzLCiVW0duhqyPpPYTmJI4ykKgw0N + uz8+ATKg5GRVeStdfE1nyyps0+q+Pa6/DTvTFnaz5s0nV+d+QuUuj7SjY8HxO7nvqNLrOxO2bLFc + DC1gcP3ALBNbk7ncHaUG5vKsnqF74Z0yryEICr1jjYEiuzAhUKixMd7j9fmvw3VK4aAaxCMTsI54 + OXvMC/mfH9Yx8CVKUw5sqjNye+bYCkbhL55Z/m98ymO7+jc+5TPHp+SBwtDxWHjqBM3KEsl3bDF0 + VBcGho5sfApEX+735rsHNxS6mBf9NVB821W5bYABvCcEg3EKaEw2oyVKGCmVCIOvFb+hzWhe83X7 + AjuYxBGroZoF3+0hX4cL50aUHGkqOao82f1uIzIvUGIDRgUqfgJXqb3CA6qJq1ZFKE15deVN+gB9 + Wo5Whp+orVP47Gd8F/8cTYGJo7BZASeeiZoicCcvx7bhJv+WAP4tAfxbAgh4JEOieJManvS4ZUgU + r6jhSa1kYL24vSkjVHvMLYVERWHkRu4gCmPfiaQLT1Z5m44fZ3DHbqbbZY7Eke0p4T5JtGo+qlws + 1XuF1V4sv6brs77mcjHiaWQQzRQDfJff4cVVulbBxy8+bxJ3dSLcKnNgMJPkKyxG1oWMfoc2aRtc + o4N+K4CUyUN3sVl3kaLiRF4UVJT6UhzOhOGur8jtRkHMojLcyXw6Wi9Lxcf8MK5NaDEoaX7C2jXb + g7ztRL5bH6mrf3rmo8vLPBkFmHCdtEgJs8KXF9ZG7wZhDJ9b9CuSOCf3UbVzMWa1tePUwHst97GS + a4Ad0VDwI7VaJFoF591iDBQnwIPRBzZLtyImBFiZDBFufgLOGm77Hh74LKiLh64sFSruY7Pi9NH+ + vtaeh0AbzdGAm46XQWhXbMQGwrETC0z+l+Z+a+kVFTuzRNTSf6loxC6ryDiu2HrNauAowR2rOOEL + b26GWkxjA7dwpYz9U1KK2hWrJYUSPcXNQ4gEk6aeFQu3lJHJa04bAyM3p5WOoE7ka+Tv+Wa0uR32 + klTiTSwjlJjL7RNq6HHLCCVBuRShhK0k3lxflxNqmB+4xQilYciDIPAHIY9cJzAjlMrWDq26rWDN + mqy6XfYnu3myMB66vvbPVLwH8ue7pQwLVkof3hjZzj5T4MUwtbLa4mz5gOQn6ChVNeiE+HK9qsrt + aSy+uEHsBTwoiR0NQT1MOuXgpL0zWZ2yG7r1Es6Td5bXL4Ez7LuhBZZZ0cRUwB2LrD6msw7KH9B7 + 1rv6rDJCFrjFZvfwkG62QsIRZUrVQFJdvMIOCwHCPeQAWdQT932yQxJiQMX0glh2yEhYGW3RiuLz + ijT+KR6jLu/8Hp1lpolXal1aFCbPbCaha5iQ7PiM1Qd3RHr/WrT02VP40xQeOB5ro31BxExEZZ4Q + zYE3gXAPrOjnA4B4WeV637OXeuhx28r1SLlcuR5aSer5j4/XZQCQOCyBkw25G8XegPuuw/fXGJ3N + gPqoXbWxWy1OGIWuoJT2ZSDKINvCTZHU5Q+zAEODbXrI7tMuSpDyOAyfPSbV8SklzxeS6Hnh/HhM + pbM6XqN0VnjcNp0VKZfTWaFV2m4vL5D7FfNZi0A/mM/qBX4UDOBHHLEDJ30NHfyrVBN2Yg9+UStK + Ccq/fWRNkJvocTtUcaJcRBUXrbSiV7efSozb8/yghCoex5ETDRiMwJfa6tVutp2qKYUlzQKUtZSB + qcAE0q/bAd3ku9U2+ZIO0EG0Hk30nINBVdX6gZC0Vfk8FEa1ejtn/TkOZbRcPSIgQo6HsFncM/Ei + 9MKcHBlB7ryrzaKsyjZUQBHmyvPDju8VPVnE813ulxRBmJ10reYjC0k2VLPYPBgf3n0YGLjTsBdR + Qe99rh2rmXCiXxjaui4QD3k3WibzRyFX5esiMlaSDVqFpQlBVKjUV3c8vQf2J8zbtPbG5hCedVHZ + cjTazWX3tBXqqyqeqYBjRLZa6uphDzd7hkXthQHePMxzOPFhc6jik/M+xCfCP2egom5rlKr6TNJn + fG9nHcR0SVVvLBsj7p8RyVCcvPLaVBxXK/N4E2oHk2M8LuNxr18z/0186riNInLztyxjcrVu9Kjc + vFlFbWXeczjCi954BxcjHC6TAucB89xAFiNqnfn0DDDEs0s7KxbJYlF5qdmy5G/Zhkrn3RjB0lmz + LPFx/aGPMKroscuuYi2EDv6drjenaKaZn/ZfT9cP023/zXSTLibJXbo+6bEBH95B90NkdckC8e21 + eIPCSLCipB9R7aCmfq/DJeKdJyjW5sQu8Qq4pB+SGUWb5UNuQTeKJV4ScMKFeGQskr4qhr4/SaCH + tjdGISf7V6ODijaeiPb/4/KGB4G90YAet5I9JeWC7EmtJHu+uX1bkj2BV5hGAx68GjKcFTcY4E+B + tLdPnRivoYey4eAvqU7AlhZn8DmwR6dlfo3al4EyZjkNMPHocVtjllPGxKNWiYl3/VtY1nIdt2zN + YjyMeTxgWHdGlu27oljdvFShmgzgCGp91cYpIOhQBKhgR3nQq/Rc4N92Cgd9PAXqi80UmQi+KPwg + KvtL5cpt1KtZ9DBh862Wof/8T4f2vf0XcEltdn1jK5yYkTzMr62vA9orqDre//R+4MokjVamJzZc + bu1zox7FQlD4tjYTII+jpguvihp9aiSi9k6WMbtpnv+HnVGtcxWNfUzYNcgBgUlEzJh9VZ9nwskU + Jwr/dyN40WvgDQ3CCehxK14kKRd4EbUSL3r/+bwIIMdi4frT70hgRS73uR8P0FaARQHEDTndbOEs + 99+75/0XQIhsIYLiaDmmDbqAjQlLg+eGblKF63Ai+cX7bVKGZVM7mqKjS1GCThhFNeYM1w39yC2B + iVxWY68JBc+GUh4FiCaDRGTny233Es5kdVEuzuuMLop2T5tCRLiGLT2RLYp5GHyi3Du5pPMMAfXJ + Z30kgir8t2V5ETa7OzwPG2R9IOzNNkuxbCdnYqLGyTx5SHVMi4K79+6xf5WO2ArN39MZ2iuAFL65 + TlfJdH0G4mO6fczKZ3xKtt5KHKCf9LnGV7KT7POf8HN74jyIb4aJVbwXzm8sGqV4BVuEcMkjpswM + RLOpccWCQL31iGLiKiYbwVq0zb3XqKCRy40ttEj1DPqQxYjCBDQzWb5e0PN0vqvMD9nrLFGJHguR + R/M1bVPcZNB/mC3vkgrtripOELhWUJiZZhOCbC8jYHJHq6Vpiz4Qe9k+aTL8jvxv1RQOW7kilZPI + Is85dcJmSYnqJdusxKwTIy1RtdK9CSwJC7qgjDacTb+oIIhlutmWKyrvCfcwCy9rfbs+j8LI6co4 + 1klhwV4XQRJqTWMF68MD/5Q5jUB96BVbSB/ZgQHoQ220lvgBahVl0fRyU/98vfILy5WRRvQAhzNK + J+U8MnnxOp2DKDU7Ls/o6Szm9ilOf57E/PwlqvgsXvoC9LdNvSks8Ak6u3Ida+Gz7NbT1gay7wD5 + FNFzdeN6DRQPetxK8ZCUC4oHtZLi8d83F+U0rSgulJv2Xw1D34t4OAj9QOQb46H7T5FpC2PLNC8R + QaGFdQ/yXzb0RzEnOp6hAKDChixvV0z7cg3CxRlJi5Nko+WgaJlW8KYgupksR180rVl0gmVqxyBI + 4nrMdgJNkwI8Fhp8ndzNQgX67/Wo7CdWo5LGibe7xcPUNEo43K3zGschcyPulAsMDXFipsOvyYxC + XMmSPsLUB9y+h9KmmO9EdQHFsQNL5LFin1lsy8GULLi0/BojixvEPC5hOo5Q9tqaxE0NLDJn6FOu + gUVwzB012oziwwxd+JMpKhNaFK5BM/TiOpoRXHBRMUIrm4AJiExL2EDFNLEgKsyp7kQHXuTy4oeX + 57T42bVDlJ/d+6scoR7ykSz6BWarJ9cIGWLVchrJPXagSu3TvyjxxVyxxjSE+7x4UBuTkYWEqo5O + gwmha7ViHzYezh5CtoOhKo+ZfbLywNmqw14gEZ91rXOUjEWYiH1YRU/y56JDUB0US7HbKsPrkL3y + edTG5iwmxAPta4DeMV4gTsKVuWkyQnbJXXXWkG5CMp2IZwW7jh3hoZBPh+jnO/M4SZAp9TgGdcQJ + GinH9Iqtaiw7MBRjaiOpbgUj22zwa7A4yyLNK0P83//7f02duPbJokos+0TIHl8htD0Pbi4U6vxD + WlDDHCDP4IA2EKJ5GB1WnsLQAknOV3V/ajZts8F1VbbvWab4dK57duYod8nIicNRR+TY7BrXE5P4 + dTnbopn8QZi52xPuqNKdOgNOTPGL5ok6jiVyZV1yozcYj8SaoUZnb9namPJuDDNT1kwKc7IaqUoD + ySIR0M9DMkTrRoUX59cXJ/0X11cfLvvM9UIQIfyT3p4XFOc8R/I90QmapBw38ns/Ck/9Z2MWO7QT + FUoxqgpiul6qeSPuNy0xrbvH/gjr7SzXueWHRqKmRgPNP/gyZzL3q365ipOPqPrAJY5fnNIgfhYw + MhXo2bNRLW13DXECvMhzze2t5m02fajlR6VZ6yQ0yReRn398+uiGzN4qR49bWeUk5YJVjlqJybz+ + 9KGcruEU68mJkLkYLpkB4yCNu8SV3i7XcywdRu6pbVb4WYsimU3RNyvmdNG/n84SVOQ2ZuUJse/k + VhV50qMJ1gu7243FhApcJHlQFVjbEj5V1Z34NpnCC9KNXB7BCo0e039CVzSIEeqWMII8z2T2KCSU + xRj1A5E2/voTIkoJU93rxbRsqlOUVvXGOoxdqc2UBx7ruj4rYRWY01RMRayHLMAiSE6ZHMxgf5GO + vpiEYu7XEWLM90AdqiS0na6KdGoHVEcHVKzpCldOUAT2WojyYHvKqNSQpOUtB4yw2lAMhuVfeAXQ + 1WYyXy6rvrMOcyIG5TGOSlXdczdCjqYs6r3ur29jAmpdf6geb2YSvJks91YsNaLZ3CBoRr2wE434 + axPxqr6U4T7KkmUUyHm+wxyrXZ4HvcJGkgk2Zvweq63wY5y+jFCp2gCxpaX0bh0OGQQBihesuoPD + 0yHKFOkFDZA36uUqjGhJ2G61UYm+z4O4aIvexzj38K7ACWsN1Ii0E5dgRIRpWbFscyXc2rJF1StR + n4lVTEdzDhHu/aWvqB5e3ln6mct8whklMNnSft43QGtrmRNS5hlWsQF5baFHUVVxIRmXOlou/rGT + MLZi+Nn2Juxc+wHgqhettYVN8tImNAYZl5A/9zA6O0KMAMzUXhBbReNKlkTICnA3pYOUTU92T26E + +N1gVGSOrMh8tZ9rvDbw6UNXjd2IfIo6E97xh77oZwN7AdTsKqm53lxLBatMJlniotYEsVYTN2xp + ecD6/qyj/dYJh2yOB24Vm5njGAqVb1UjSKHNCGUVXLX1l6C5NdwgnPFIBuyZqbxTmX0r2E6iqrv9 + Q27gI3qpylRNkbN32I0bRU65m0w5PGZzCXkmXzpN6DmopqIsTE8pkbnME6wUZIdxaXnOBGWr89re + Gto2qEboPBU82tIuYJnut38EMTcN7UoTshuDLIpivC0UMlvTcAtPnlBANbaRrKzW3XPjOBu0fpwa + de5xzlV56sKxPDh7Ino0DON87D+1NhOLzV28X6ezmWIWOl6k7tV3VGHxOLu1L8Ep3bBR+Vx83BKc + UlAugVNiq8Rv+fuFW0wncVmIIlGhfi5DpHYeDBha4BAdFy1IbzYbiUS8UnXotetXJCFJY6BWt/gi + vWergQg0MfH9MmP6xbd7F3NMCD4OMYRXs+lIRE5DV1kPgz5+5ri/XNRgzQn1AOvbDzewP7Lozsxi + qG+YMcyaAuT+NnLLKS75GPKCmiYmSMTqVGkGnNCPS+FdXeXGqfhyIUaJccI8D/pfp4kxajMWraCK + 1o22y05MFJMggEvqf3p/sT3UE0cqy93zmdOTM5HZ2A9PYiMeh9WQBa9uU5feiTiJT/rAmpGACy/M + SByL4N1BIfqAUmv2zmd7CntvnRaokT+ooOHeeymrCsW4654y3iwBg96xzr+QXZjpF9Qo/ajjVAWc + yDwvhCF9nAmAUzj84+SfGKE1StZ3y+8Ccqhn+2D/HGj3sANKweAEYBEwcqGv0PqRCg5hs6Ht60Ox + QKdvlJSBAS8IxeBY7HtGtY7+BuQWy6/Lv6H5z5Jwgy84vpP6rX/42NinMRyTSBBzV1rHLLdPrauz + PsawqzJCPMoC1uCiwgk/uoIQpbBYf3TT+j4tyDfifK1L88gtM3tsU5knIr1fftHwKGKKD4cq6SNu + gHxBj9smfcRl5AtqlTCun67KSR+xz0tJHxEeuGAAP0SpNR28vgJNASTLdZrC77Pdcp1uRnr4w4t3 + b69PhtKuXDDf5AhupN6m6ylasinLGLVzCfkyX8MnlCFf8ImCb5DXuatAPnWd2H/OYC9ejJl0gtlR + OagMn9vWvGFaTsUE7lXt1caMFVQQjxpBBcHjtlBBSLkMFQStEqby5voWK+UVwYIwHqcIFoS1foN4 + AD9jT2FV7gEL4tG/DFiQF3QTYEuhfAJ0c7zePTSm9ExwPjBfyqXryvyMo+O+gR4pZwmouK2KcQeO + PHOsSaE2etzyzLGKQm3UKmGQLi5KtiKQQ4LiifslQliuaBC5fqgsRbdTzJXO8iuxOsAkNVi8RCMa + jerRReidRaX5xQnrbQ1oFYXPqCvTUazFZxTkCMK6/DnGXETsLRbMyPy0tV9sBmAEntWwO6KvhQIA + +/cR8aR3KyNK0b0lZ3i2TIQEJeGyX4hlGcJ/vdXJQDPJGOgf6iWNjnwOtugSM8FyKAJRaSx30Gd+ + NgGgVPtl0h19eftaoWag5WSSg5T811k/Bao7YcRZT2ePwxF6mdfYTTKeYDGDHm7jjAWCvEJQDyQ9 + jpc7EGaHGzz5IFGs0+SL0ROMHtgu+trgVgR1tSpMdL//uzVyyFOAbHQS0CuGdXh3Wk9VI5J7QRTb + WZS4yyg4v3g4arW/KtvQD7Tt7IlYDRRkPG8Epicety33WQWmJ1rlLfL5s1dSKTgPSlh6IY9YwAeh + B1eMzCNXvFvU30E14PrXC1bk46tkO/mWIK74Aosl0m8UtgJ9E+bV1e2tp26c7dZrV1XCCHJjfhyU + 0L/ZsLKsmTfce/V43Klh3RFcr34YFm6Gq/PrX3/9FVTPzSgZF+Mpg2LUqIH9bYy7EOtXH7FQX0pT + BD3UhqDFHO5Vt7KUJs1Qup0ki6WwEmg2sVIeduDV9REjWldQjEzLi9qMEA2lcFXCqA4OubJQ5zBb + Rxj2tl/epF8Qi6p6l56ZV+gC48pmWdbpHCGV8caB3ZxD05KIK6DzcQUOrFIPD1ymMoKS3hPpiL5e + +pG+BI1Rx5SeakHtQM7ksWTrK0p6kQwcKxIdztMxVZekECl7/ixNl0fXdrSNdChlQniuDKWS7AT2 + TyWbaVlh3KP67tY8zOqr21N94kHXSSU/8Q7PVN3nUkM8JxVy7UxVUQRWNQP5aSmiGHcrjL4F2SNd + UUZOEz3YzaCknNfeqRM1w5Kid6zBpGQXJpoUNZJE8muyugQtaQ6qRj/9viRNFd42FYnNFH2iaJ7L + HgBVhIm8Pe6FwoiHqiZOhaKyJKs+DHA+FxGXS8HW1qLgYLLdrdM+/9swxSoo933/NLqluoOE+bGe + jkBapikUzTlMHihzt78PsXGQvzbof5SNJ9ZHgTMZB5ODJm2mM7g6cbR3j33gZnBZYecHKZKMTpXn + zMjQhsfryCp/TZPQHBaKYwwL4MMafF/qS3sEU+FBmHuFhCtnOj6Sw3i+a2yjNkzUz83KFrQqZhZr + vgUlvRpegF2Rwy4fQV8xA071km5g5RvUSxKP29VLIsrFekmiVaoz78rlfb0AnUCFekke6JFROMDQ + utDLPCR3QmcdgdCQYJmVRTpQ4WnpJp8LOOEXj2sQIl+AYL94nD2Skg5DPDHtKDkS6L0QPeGKSIVE + ss6clYN+Vkl7o8q6A2O7eAuM4cuKrV5ejEc+X718279bflcX1Umeb6nyLDPtl7Soh4oqwLXvmKqJ + X5s1Bve476icGy1DaznM5qtad+JhENaZ7VzPD+DMF7Gpzq+uq2RAHUwrLvqLsIKSFjhVQxnmAvYk + 7J+XFctBvLycmYWWHqtpKWk3inA1xrEXsNInHJycmuToQsWq2oytaqJmoLZmeTKnIay1j7LIC7kT + ioLCpXNEutif6yz1kJlkCUF+RFjDsGK6yFhaXqsrrjmVeh3qTwExYJHYfzjSN1Yu0hrm0GDSfMYJ + 9krfRo3W0GehK5Guag7OQTso8lpj4UrM3Mb9G1Da+8WN4zoXw3Pre1e9YHXzZtQLd69ql27g8195 + 8fplcRQU4pf9V0MGipsbDpjvO7FE5fiIiK+3c7VDzoTuna7Vec//IgX8ATQvdw+T/gZmbbKFZRtP + v6brB5EQnY6SHUzkVfKFs5cfN/N4BUIPzAZsSxW42k/6D7NHRBJGVX30uEHasFBbvVY3c8JTVY4Q + aT2dK1p0OhSdfhoSInqlLmjYJB3PrbuVmBt6rlPMLP00lJk+eT1I7WsVEHvx9gu8sD47vbIfUD23 + QzSqoTnSOH+GWZJHtXnlim7v03IxzMOqNrl3TPuW8nzJXfMp2V6I7LiCZW+dYjRpdmrHG1SMvk7X + u83BfdcTuzyDpA+YJyvIC+uY/QTbqGGceZQPKb7Dji0IVYHk/BVo9GihS2arSTLcu60OjkZxG1/K + +DxokCVBj1vK+IJyScbHVuIyN+eXOCkFIT/2vJKQzxw3iLAAkONGjifF/ItJOvqyWk7z29HMTsZF + lyUBVXIctGhOPZGfnE6FF2yVjCaPW6x3OsrIwhYSwsdVOuIr8fTleITx8ZimjHCeIN7MVyQRTTfC + fyVC3rdLILcWsffjnVho6PRMeTlxIJPdPCE7f2YCuUnG5EP5/RRk18cxELxJR5kXRpUVwsfC44qp + 6qkI3MfokiLrqlRuDT4FWnAd7C1nLEN9yNiHNtvKszqoTJY1Ku5od28CG3mzLcqudWn4sR94jl9y + 7cs1Nn3LZjY+r61rBAICXHLAv/619ltPnM5Mao5iSqN38uoD8qvy8f9Idz133JIBxAwssB/M07j+ + ZaYqbLop7kSB8Vm1Dy2teO1yNw68vccszp2I7iBtnWkfWt9iXRS9oJRXWpJxK0qxU2U520ux0tPi + My31qI01sDPDYiepnVHkczmecbr8/mhYET98+HC8M6ObmhdBoBwVwJZPnSZJNOoVWzeF7MDwUlAb + CSAFxEYdc/XhfvlyOp68nC9H58qPsedxrTf0XTgxYQ5GzKd04SOzvpSG+zOxR5v6ADpLwGjnUYwd + Cr5VD2HmAWySowNWG6N82qbkdIQfqk6XqsX35qMTNgiIpcet9AJJuaAXUCvpBZcfL3kpIDYMCiHo + qBbEIJcMXObE4f7w83QG1L/9pcPPLzFGBTve7FYC0XgpNN/5ausLiUKc4svbt7nCG4p7XdVg8znV + DHhGPOf5sINuQXp9JwgIqn+ZLv4Jp+W4fNJAVPT64/oG9C77k0qPW51USblwUqlVeenelLx0vueb + J9WLXv0Sc0TSHcSwyXwZui7SGoaj5eqxsGUfkhljcMvMZroJBzMHhlrdDNOWk7nL0rJlT09dOBCA + WAtpiKV3yllL30FCvxMy/TDLacBlPCf0ikoVGtTuuE571XvJeEIh88OoQhPFRWy9/bR0FUfQ1VEG + Xe8gtd51Yf4qclNyi9s8+QesaFYsEi+y3SpdK6svTM9GBKwssKb7Wmampes5ippnmUoruqjdJoq1 + bXq4FxVvC2C3dZCCIyZYaAsHsm/qgI5wSouqpaBlp/RFJDLv28A2QtjzyAESUHzGYrRJ/5FxgZXb + r7ktNJbh27BiTcK38XHL8G1BuRS+ja3SFvqhogyYE7JS+LbrxnEQDuCPnu/ul3pma6BfnXRHEa/1 + NbViN6zjhQyN/bFfKi38DGSgPIXT4S6lcPoUAYQMJtHqQjw0DpsF9YcU/nz6GmoULllB9DI4e2g9 + AfQVc10Jqy7cpOMWNbtDSpt7feNEcRNfpXrBrmq3ol6s2y3b6eR8en8dvC75Kv2iugBHx3MD5oUD + +OF5Kl81zzzCyUjm82Q2hQtpMn2YwI6+w5vrUcZWZpZ4spu6Z1pI+lrBkM4e84AFJAK/a9lN6Mce + 9HHEaJ+FPw8LfWCpJ5V3lcf/mbl8nyar4K4+mS97q5DG59QY7pnjuhEL4lI0UEaoumB4bQE8k2AN + kjDM4Eu4x+cJXioLIdGh0z2vvbweTabbdCQCMs1q4q7frOODhY2vlzO9mnGhO7/W4xGFbuwVkzss + e6vvzpQOMY5IhzOGi88Lig6Ojvs0nMJRCIcGC7Q33Kz7cXpxD5+vzvSzccT5ExIkvAeccr2bbotf + TkmWN6MNW4nqZelahAuoSdj0BOvIchaZH1IR8sDRfBOZd7mhg6K9h6NB/fDK0KRGNXTrq6L7uQSd + TW3TT/GrkEp1igOcKC3cqXEH8YEOiEqphLl2JCwn9Sl62hcT9jTF32OJxCSydNoVf7fUZf7cNddl + acXSlbh30yhZSZaWO79w34anwqdq67FQr9h5LLIONI+FapNIXzKOBPoV/IC8OiobXa8st+dBvScs + 2u2FEcF7eVSaU+yeutgYeygsG2r7uYKn6ZtEAXVXDSC51eia0t6fC+0T3LZZFLL5t1vifdVU2WyH + bGyXq2cPNdai6ieB5RKStz6JhR3f3vvSrpf9VhdGkboWlBHac4ymf5X60ciOHLpZtkeDckv0uHW2 + R7ncErVK68ft64psD9cvBoKBCudFpMKJ4oz7rB/LNdAvWz+sQqWMokQRdFpKPX9O1g7fDynX7QdW + h8wMAZ5yx3sX/BQ2RhN3PL1i646XHRjueGqjjfCQzPBYbMzASOkfiHoUM/kw241gcMCmjcf0DtAD + H/mxvNMiI9pdCwH9NARJ+gtMEgYfC/C9I++U41cuJKno3XL2MO0nq1WyTrZVLz8NvGOPXKOyXsie + ye3Ey91lWq0f1pEaZK0CEUctLWmgtmdDHQ1fyX3s0jt1/CbVM7N3bCU/1YUh+slGOh5yTiWaswlG + BULcRe/NesyUQm7QhAPh+m6oDkRQcyDanoNMtgpcI6dmnW4RyXqJ4ef9Nzf92W6eHn3OwoiimxZj + EnJEOB7cHaBE2clJFkZY+0398/0yaq8Gaq/yd/EpcxttVXrFdqfKDoyNSm20T42SIqoq0wphO+6W + 40dDS7n4eH57rTg8LCVsmN3dbpYOs/SxsdpFvdFsIxLDOY+JtYdq8vP39pYisd6/QJiyjlMs7VRS + rvX+xqnUqZuWUOkCWYosGZpKvYFdlD5kA0Hznk3FqBYlZ7kbU0GMmrlSy59gnOas4dTVW1WetNua + FfOV9yUnXmfNq6XwcyrStow89rO3gW+ki6/pbLmyhVJtXWyHypSoKW/69hFY153U9wm9ImNqTMEv + UtBYYsNKwuRBVXO4d1RV9yVsgRKf3T87lUmaLqWM5sMY/3NpA+fz88HhQsKb/vDRCbi9fk2PW+nX + knJBqqNW0q//uHldghh1mVsAh2Ovhq7nhn40cD0eeozu45tkMaRyPEP19XmRjjz7JTvh3ylEhpTw + 9V097OhqWXDt+YFXhxsdIypTXNLCtXtYKuQ1UVc+q4UxNUjn+ZUfb4d3MEoBnLm7w4tgmw4VE5zO + i7FYILU6dYn61T1gXZFsRl9MFjefrk+yMij7O4qbd6QIyuUxk0JNgLaDBI0FtESuc4I4bjbs4lRU + jTxgdWlb1TTXh6ei2SJKaPA8SXT/yrG60qzV1DeLw+Nttq2R4rXlLmtGeXt4qIfWv7cH2r6S16yy + 0rMy4jDnVSQTn9W9JrqhUZ6pPPINvt5/LU/k5XIucsthR7/9/vYdOnFBMxD4usTgJTLF7XqOKXrQ + 6/DdZoX/vFkkjNL3LvBvZ5irh+nqqarI1EN2rIx3jLsys44Eh3xHEdCTypOWUyoum1pZrNaLGzBD + pW5HrG1QpcONwRxJh7OYHNwF3IYK1Kxk29+C2IlYMdaf6QWxo6IvtdCxIyDYf47cTf4kg1UflpUc + SvV7p8UvJ8e7MLqRnijK/T8+Mie0l57ocSvpSVIuSE/UStLT9c0V7viC+MT9Qp66C+ITi8LQGbgS + 4WSfe+IfM+jgX6QiAofd2JPxmB3sCFUmw20iT9PjlpD9boU8Ta0yQ+nDpxJwgSPKNxaKZMSx53Jv + EMe+78qQwyvDxZulVqpVkinwWtwQ3iRaINIAlnYs0ZfwzsOwOgqTUmH3RgcgiwHjw0z18W4Es3v3 + KLj/BuPq0F4I3A8e2SCQ5GaZPSUR4TFjGQU5xFLpb6fztI9F4WePcGViBV4RqkOFy5dz6FbYhSge + S09wFhv+croo4xaYvl1jX4a8HqcrQHGhVHfgEHQBMyszaoF8WOQgLBYc0FbAkGPcqIirNqig1ftX + W+Yenoksli4IWc+xi4KrDLN6XnD+HQQwNQcy7ih0qbN6Zp3lu5NNDj0wLWl1llMeOVlOeXDOG7rq + 8pes88pVJ2ZmuWylG2adpNL+8vdLqXtkrgyMxVMSvIxxhad7+ArWW4Stz8hXFziGr06qeVMEDNG2 + 8WEbf9tKRqETGyUnNKdFyRp+DJxIyL0KBLeK3mwpMuAfqjz844vzk1+oCuxRalMn8B1tjOhWqoCd + 97QD6S3KoiGZ8zY4daKGbnH5krVfXHViOsZlK50wI9xVL2Tee3/1ToeYNCmiWzwICKnhyUKcf3RY + j+2lYx8gd/QVpjaMK5PzGPPt05zpccvkPEG5lJyHrbKc+9vPJfM5Z0WcMu/VLzwE6S8Y8MjxVW0V + PHRfcT+v0yEyEfzXdCnCMJC5EFiq+N5iNsTdUuYRhXwopEPmOMMvl4kyCQmrV54yITpSMFMF0llk + IC6MCve9uL59i1WnNv1vyCET0ekft+/Zy9c3N74q2n6/LVvwBTNs2l9lcffIq0W3ZdzzXD/6n/2d + 7yduqhA5AFrsxMDgo1LKk6T60uJzqpQMjppuoctB7TcZBvr8i8zUnLCoBdnSK35CgWxkQ1YvYSZU + jtp1n6lu8s319qQA1ahOQEZhUBqkIglXLrCSbSpUjAcYgeCfHv//6Awmy7PLzwBu6SEcE8WwT3t4 + dLOsUOb4Pfn5Qhypmic7/QTWJaOQTYjlq23KyncgTEReWB56wzNsdeFrPVZM1jEUKazbFeLMzb77 + ZJ/8kQWs8vfhqdMk0km9Yl3mgjowq1yINhmRt5vdY9mJytx1Pc6p6sEifJTsDINXQcbqdVGANHJD + ESVT6r6FONCA5l7jP8hbpNfmOd25pg8jqAas+S7wI5DMKtnCLOZoNSKcXE5VFkN3lLH/B9TKyF+y + rHH0Z4pIdLpEisD9Jka0gYtkMcYjKgil5gYsr3gLbApZ1rBNBwfXSzEzPzNchA5aD5rZLegda7OF + 7MK0WlCjDBX58Bvrj4XjtGfWZRv04W8Kd1knhvaK2FexxUGkq5dabHGrimfc8Qj0UasJARKNqtdz + rDL8JFpZk/SoQ3zm6cL+sXyvvlIHS2ZZDwUoezrlDdaWTV9uJ+sUjeZpy6prvk/m0PPP18cigbWq + EqbOrQi3/uPdR9drUGCHHrfSaSXlgk5LraTTgo4XFHVaxvCc6C6sGHTaIOZ8wMPMgfU6GfdvtNv2 + Jr1fTx/Ste7teb1eB7WBX9XoWwEvltLM9REv4nAnPJWLs2mAlAHIoA+tFCGVfWmDKKmoWVftwqQy + or03KjqlbGbMbvPsc/LUDL3Ipnwvu+LOMFpaohImM0RckGgG8Ed4eYyl1KZ3u2xOSh3rdTo3u4eH + dCPg1ZL+GtMBJOT2BkQ5HLYxxcDedXvnpofbPXNHuyzoyXXNFJO/THyN2EOV5mJjhmyH4yPmfjZL + TxL+8nTG72cgzyoZhMWB8R1HJupEYaa+Bv4pC5qpr+IVa/WVOjDVV9Em1df8Tl9NkkWv+LtGA7XS + OPBkDEiLoq4tcsKf5ZYICl+jM9mGGyPK/CoR906doKFfRb5k7VdRnZh+FdkqTd8oIawx+DLdfQEK + VPhAulLmS9dXqVuKbV5jY28l/oveFR4RsoTjhDn0Gl0K6vI03YWWKUsgxOHTJiJVBRoVdrdaZgJq + YTn2oLYABzekWCOnrREhTmBEFbWpNliSzf5WiSPKStstpuMpfPCGfF2C1MN6+W07sabFHD+uHVUq + spCxSQaXoFKBxbkqk8PqaqBiJxVLdHBN9tBjpAHuX+GDmwcrsAu9i8qD34P6Iv4K6ol+u6pvb+56 + 5k7sV316aXdW1Cdv9CWeH1VhGVmrdLXygs94mex8uViK4R2145BohYf/bnoEScFQYhIq7iSoO+za + rWX+77Gp+kdaBZmRfJWnwVq+TmceA9wFY4G319YVLo4xSXLCYsfbdYyXmXVvIJNT3QkzuVE4gWze + 95lLtlDx/na6OmzE+PmZYVGsanA1iW2mx21rcFXENlOrRPD++IdXhl6JMEu+AL0SxW7oBoMo9pwo + 1CC8K6CZH1dbBrqfVP0kNPfs0Stjc1fn4ZuBoFFdUhjz/MB1yrDcXdkF3tygcEfoGpUA3KCqRaa6 + /i6vsRULnNw8qUXPRHlzM9wuhwXKPbEWecUl7nXhxMEh4iv6x3yFyxiYV156cw/xCuHkhwEp/El8 + DfI0x47M82ROAxwletwyz1NQLuV5Yiud5v96fV06zHBCnFKeJwt97ngDGLfrycP8uRQFpU60KDiG + /E1EiGS4f0rfy7KvUNCBzS1E80H/4o9b+EhRc+zqrXumO99AEtTilKW3jkSU9VdDgJKoAkQHg6Hx + 9Mhw5VKBx29Tb/Xy6m7FVlKxOIMLcyutWhfjkRut8lxOyZb+Cx8/EiNKL1Idc497zC2yokpE0prS + 2o5Tw+cM2pVY/nIKTUuiX6SnI8kqmr1/sWXv4RHJc+8CLqP3/gQgp1IvsHF0VwaeNHj/TxWKuD/+ + HY5VeWkPIvNVfcaRpPZeGUwKgG7QILaRHrcUAAXlkgCIrRJ67/XHUmyjF/G4VIM1cjF2fwA/wlCG + pmfM4Q76HQpsB5kyO4dpEwU8RtOVOr4a/oNpw5GVTe9m5UjDXF8qJAfVVieokQlHy2Few76GAQe1 + sYigKwBRr8Td5RdXAKQj7EUxTyh3uoQ8Dt0iTrkxiffLWQlzPXRM6PPaEebOIazerL4b/SUF6ljY + +VvyWOyltpaz6qVSqK1d4EExDnCJwO7i8FBUjsgqvF+nqTEHZ/gkfEE6pi2Wd4ZsX30CmgGMlzSc + s/kSa4cb8zpaygN73sOdn0nbYSwSlhzXlSbZGrCSo3woOKdCVs1HQVFv9RhAB/IpXJmdYLe8NuYg + sbuEOly1DfdS+Jmgsz8Tbqd1SoRSZZBX6NujSSFSL5IQlca61VKo9/IRxPVugUuejg9/0N57jWL2 + r27c0LFXhehxq3tNUi7ca9Qq77WbT3EpZj8uQt74r4aR43PXH0RO4LkyMPP3FQpGyVwv5yzZhoJj + kHfWehGX7qwiVHp/VyQH07knbt3xnTqYEMZ8vKhKgeulLhvpHaymtzgGUcAvdZYjVKBY9mIN/z2p + rBHiMLNGSO2H5CAiNaUr6gpXBLV4KnLolRcVEcPRijITs/RrOit0DbcKftcgW29o+P38bf9FaS2z + 6T0Rl1txJXq4D7MA9Cj6E+kb0vVkUQzAqAWw/57AzY1PHXNIrK6x45UN3K5iRgvaxuE+8QxVftRB + VcHiezqwM8dchps5PG4SboaPW4abCcqlcDNsJXb8/s1VSc1gPI5L4WYecOnAH3iuL1x2yI5/M4pu + DmQu8z9h7J/OL6/fazt8nZUYlcaBu6mwTozg5vySikI11LL8/7mn8H//swSSi3ToDoLheIp/fvH6 + 4jf47fIE5Udh3ZhM0biIbyez0XIC7OgFuxl4t4Pg9mQYDEXu8ffHarLDjCT8I1jOThT6x8MMpqai + IG1X6s54Ksb1JUnnK9gkMGhvuC6XLdXLP/q+X1/RKXa455X0n7pqqLoehJVT6wcfeqADPwXiCMiz + gtOGJNRmaQK47RORFYyzvkNV9XCh2yrJtaM6uZ7LIscYodynxw3Lg+MTGuSeQR3f5upBp5V/PYei + FUbJ+m65eJz18x37QjCQk4aGoJ/oOMycH13WI2ZBkK9xBbUBxRqArr3oX7wf/vZeFuTCqrzLxXJt + tzU7qnoce3nKA6JGs4ZYDfIl+6QH2Ukh64Fa6W5bPa7lTQX/2n1Fe5fYa98fEZOiV9dIYA0w95T8 + 4NCKos0kz1FYwTTu1miNV+cY8WDQwoaPPTQ9CoEEYhBA/Ys0t8A1y6lpyfosGUJ34Lwk3VGwHUUg + i+JGPxtRJeSUvVWxP35afgMmTAlu+c/pYtTH9uPIxJysKqI89pFEWCBNM7Ppw/Fz4gGVbLvOjvgk + xXiycg78nLmNAyzVS9Yw+aoTEyhftsoI3OV4upvDFTGCH2hHnSSLh3Tdo/aXpT8Ukka1ThAYn4Fy + 2k3EAcXaYVMLGq48ZC3INE/r/EFFJJqSOIAtFcX1tI6Prvj5wRmuG2mlWp4ohzKWpS9eX0evw1PX + ayRPqHcsxYmsC12aUI10pnVDVbKDy3GSPJjZ4HlrucxF/3z7EJlPQ4Mo08ejgI63T8dzdzf9f7sp + MGdNf1ZU8G5roTSgpMd1GRcm4iEVIiTsg6/JaLesMrLbV4hpnSFD8m4+ky3GcpjWgbFQKc5sd9/v + qss6WOdwt8XXbVGPikCzahf4ABujy57ebp4ho9EJ9AWBh9rvuGNiYVuXa/dol2ciMn4JRe41WMnI + YbI+S+7eOh7VSfHMUBoUmd8ofxUftzQoCsolgyK2Sv/Oxa+lUDcmYCMLBkWMf3Pigcsw1u8vbFCE + qencoNiibuK/DZPVhklGcO9dmQ+fq73vByRJ/IWNhM3te5X3T5dGwq7Md3maovuaOaesaZ6iess6 + UTHrxsxUVM3FVMWsXlyxpf8C+MsDcG6Rvg+TmGK65kmhE1SkXUaKdMhkMJGEV25wfP6tYf6g8P/W + DETtawVK77EGLlZ63BKUXlCuKN2pXKw355e8VKbACdywiEr/C+NwDwXuAH7CsXboCFyazmvof2BE + TaDsgnrlEkucL7azxz5MzXI9pLi9xxXsPh2/HAUmJDlLUZ3ZZOCW2D7ZzZNF/7+u/9M8S/3L6eK1 + Om5ZWGgy5k5JrtE7ul+uvxTEEr9OvInj0ONRCToePrZf+P5KmcEvFDGqo3wEiHwu0oSuzwO/mlD2 + 0Sa1oDZ1oHJUcrWQ5uZxAQtbgCFhcRyZYCxaXpPLMP83/p/e024YXSpHSuk9QhGiTI57Bo7XTmRx + 5OOXry9Xq6XIGhTi8x2Gu6VoYgcVZoz4QZj8vK7ajte/fXy/bz/2xPnKEO4jlxzMLkXJFNfHikdb + v7zfgvDXANlXjB33nhCcqjZpiVRdelpLzBEyO5a4zEF5FPYFadvJA3rW4HY83oXSQfJDEIlZoAUZ + tyojEKmxDOmbJbkqjmm1+9pR/AEe9i4LjhNabOZ6tK2O/gPcWqHjyFBd5jYQXOhxy1BdQbkUqout + sr7Sb1dCGy4E64ZhWAzW/cV3w8jhA5+zSMHQXMGe0pMDEFlqZ9wqBhKUgTQlsPBleCH8SWaf3Q5X + E1wYEkCul3MY3b+rWP67iqXzY6pYHi46+e8qls+5iuUnfWNlKunD7HG0lEM+E/lxT8K0znrETbOQ + 85BbY91ZFILxqCbiui0VYRoTG6MVGXGtbttRCeiTKllli5I5Qf6N2VZtRS7DUK9jt22ok6epxAda + kbRBRHz62kPIsTPhq5Ld2wyjq6Kl7dAUJZHAdxxX2r600qTG0NphmP/g2qPN3uy60NrzMUj2lee3 + JVakFBUF/9knW1odwA4SUEKHSSXD4W4TJQMft1QyBOWSkoGtMgHlt7clfzFo2H5JxeDcd+NwwHnI + HYV4vIPbNx19GUocv3Q86N++5xLqfCjrR4uM2ypgXA0B70zla+GdPtrCDCw3+Di+O35cJPPpiC57 + RCQrAAeWSk9TGvR6PkVr2evFVFadfr1YYxlq/Kd47OLxC4ff/3O9Us3wrL+S6s375X0ZAKUEGPZi + ky42u76xcCeFZD/PrTVpBr7r+iX85jxpV7txqhIJIyc2aWu4KxHwjKBYu1PHHDQGGZuyq46ErAbZ + +0uudg/3fyYUBpxqjsd5hIkG0WhxKR9r+atPkKcaMfsAEw+kxAeh4vuNI9p9JkHdTfA5e26Lm1+9 + L+7iO7mHjoXe+3lp8V0ltYtDa46h4pQ3ukTczHX8FsOWeUPPsXzJ2nGsOjH9xrK1GgJ5vLubLncb + 831EsvUCpycCWmNKf1VTr4ln8AXTBov0DMQVUQmC5YFxowk8mg5HFDvSxn5LKhnoy6t03SYJwaEc + 6Wy2RxLv8ygfb+hQGu2nj9yN7FEN6HErKUZSLkgx1EpSzNXlf5TRehzHjHrzgldD1424N3C5i4wa + t6pKhK+sHj1dLFJNzBQXiRYECVvjDYxpOZv2LxfJf4hbBYvar8Wvw9n0S1YSAO6mDHRRAAAls9lj + f/k1Xc+S1YYwxWAIV+N/MCWBwL8rSgzuG58Zy1ZvbuVwnztdwUPqpp7IC0FWrDb1VUL3BF7BJX11 + bVQNlyPtXcBtup1udxLtuGKlSCGfL0UmeR7/nYkIiLamuJJgLihUbNKzfFmyxZDv0IpcJ3MWwTLQ + 3Z2VHT//fG2cZKybsxnB2sGegBF9rR7fWV9KSSDe9P9DlQTCzZsB7rih20mySVtUs44VfI6UdDq6 + BaUA9J4IVlAiXw8H/uSKP/McefFXbqKhtuGMjdhIMOgAxF+c+gKNMpuwFLWOofQUkU1iAQIqV6Yf + u6Q5VF3kB37lZt5799VvPI5RKfjCBOuQbyZLkGzbAASBuJ+HAV6inBQ3jAKkl+yDAGUnhRhAaqUL + 8v1vN1fnklVlUYAFh/Q/MVDoJv0a9tb4HyxrAXojBfsdpYD0empCfIqov3HioEFEvXjcLqKeKBcj + 6kUryRafry/KEfU+56WI+iDE/J5BEIZ+oMBjV3gnTJHd63tNXC5mHM9utU2+pOpyS7OqQxkw23Yy + xcJvImhnSXXf0BL/4vPk+vqkzEdBT95ix8ihtnngUU1NDZRcsHKyhkqagJCZrCWMYaawC4hSCgbu + b5a79Ui5g8WXdietGLHsHK5FXi54XP0pBbJ1EWDM9USRp0pk2iJLMGjC4lsNtQ3NunGaiFAVuNsF + O07d2JrSMUFyszH1rqrXoLTXJaL25gm2+RFbtgiVa+4kpQzJqox4/LMsBdA4OpDOuCPtRPJjC9+6 + h2oJq78bmcEp3/SN6kk9I2mhYz2+XboCnDdjnY/J19WnW12KVCbx4w2LGlyK9LjVpSgpFy5FaqVL + 8c3Vu7LbQEDG6wq3h5FJPACN23c9Hss0s7ykHtqFkYWgdPVO1ikRt8mb+UOF9b1x0haLmeeGQeuk + LRZz3y3z9c1iqZfbNire+6wWk9bzgwCGXVaTVc1zYEuucysKw4uIAoOwF9ea6lkQe35c1L9z7/UG + /jPLoPuqQ3k81w29Qx30rgz+mcyAcb1EoM3+FzgCQtPH+LuJGdC32a3StYIiN3wDZgFaFt1SJAVK + JfhnDyZDfoUwqMi8q5IrQL0jfrkdYtH25eZxhiOZiiqpZ7lpQL4iK8i81NJAN2fCn7ARodAUFt3D + 7Z55CVgoQkccjyrGY/YHhTBSokRWyh0O/IfPt0yo3lT+Kc2L64qz7Z/qn/rR+BsczxFWghSsZZ25 + xQVqXv+FojPIaQwyAif2DgbHIwWm9iNg8BJ6J6VlSvv+34YpWrruC1/T4aAI+2vfzMIg3ny+JWzH + HzFRAQ/ItSPADPOz2tAsY0ulZhhwOqm+e3YctFPcaCjinGuU9rGHg6P7wRD4msXEyd5eVjrWOi06 + FeW9YfTBPmDkqlJOIH7HasZlwVeFK5EjeTaRIgMq7RTTXZFtCavBuA5JfWLRh2rR5ZY8SEWkiIUE + ZnGzL3q+ciI7cKN5buQYUBoZs86iVRtJVJS4//rGaVJ4mh63kqgk5YJERa0kUf335/OiRMVi3y0k + 7nsYiMHCmA84ClwyR+3zhHzSKFaNBlTuMXl40JI0vyWbfua3Vyn3urSuEubv1jCkb6ve9Q4329e8 + pjFwWuUOUBJQPRI9GnjRsSRQaoW3CtYnXaLDHN3/24PjBa4zTreU/YCrO32YYEHM3Xp6P4UmY+Ty + 78PtZL3cPUxWu21/s92Np+mm9/bq2uXq4nZcnx1baTWzR0UZzN651xxlj96xBtmTXZgYe9RICz95 + XKHDaStOiTLOVRWcVaTQNBf4kaw4+1NY9g/Et1OLFqtFc/mboJlRNXvHdtFUF8aiyUZ5Wq9vMIUK + TcZqyQxAZGEOyesN3W4WQW+D/6HFk3BFXIZWoHMZYaH7m+kMVv04/JJcPnn+CNws8ChBb5E+EIva + 09Pxc8HgmOQbXeoemEIpVIljJvnpjpw9Xs/PPLwel+aQ48QekjmoiKq5xqOljUPIepKgE6+qk/xI + NowUbQd5IX1WpIUVAPmNwmStMd9C5shsfZAw7CM56HHLbH1BuZStj60kBl3clutTOBxPopmsP4xY + FDruIGIxi6UYdJsXJUAJ42K5iuEbH2CWxPEd9L9NpqMJyhaG9QFYUDoePxIHGeAcrdP58itMkCSU + Q8LpIR39m90d1lbDCb4Yj3y+6r8Y7Waz6eLkzJCEknGykmuKBeMmKbyBeEU0NLEjhOx1samomqGN + v7IqBkxDbVUMl0UBcOOS+aspTdMd4cGOLJnCuqotWjdXqnD0cvGP3QP9XdhvMme/hIczolpDs7MP + 7z4UvBjap5TCVYxdYdLlPKqzkCmavT/rXuzhAcyy+f2ITF3wxTrjNufG3q4TkvGi7SKXOnyabPeW + omokEez102Z13Vu9eEzXB0pVdZDQwCih4Rr02gYXCD1udYFIyoULhFrpAjn//I6VXBO+yFnQXRPR + qyHmYnF3EAReEEQyGjCFi3Ui7tnMTVMZzT5OZyB5rkXgF7p2lisMVR9TeZMXH5OVt8qQ7RTMonTB + Z/sJax2rv+VIoLI42Vk/mW2WhQpxcFC+T8lYN0avlkQie7FKvxPIpsK9O98+sIqq0t9hZhewdoYz + zAA4icxMasMJwp3YY6WyR11x/uzjUuPbDN+HW8il0F0T+uhKacYZeGY+z2Y+rFnbr4pw7xy5VrrW + 4hlxRb4rzNnF2GZ1X1x83Z7ka0zHH++AEeyf5Xp4J2pvjOD5pdo+SB+9w+s0r4snkFxeXJ/fUnWl + VTL6kjwgfeEgl2iYm4KXBTpZi6vjQUapZpBCsidBsCcOkLoBAjg63cQjtoKD7S4M0SW1uWa32V5l + 3IWrEZ+++M/PejlB68Axz4tD/Xv0FBcqK5wO1Vwp87wU3Csug7pReqFLvUxhf81T5GpotM4XQSVU + 2+SkkM/LkcNuMrwnyCpERoWvVLO0g7brLkzQ3I09Yw2VKL0ZJffCBdpgQ6A9m0JYx8Io2jInhFGh + wfMbELns7dn0uNU9LCkX7mFqpXv4w9Vl2Z7N/ULYHH/1i+tGEQ8HrhtzJhW597pZ87ebt8o4nayB + fgWaq5QP87bKKwh6cauuoO7vsi4QUV3mdYKI2usQzi9kPLOksuDU8ZsZUsUr1nZU6sA0o4o22l/A + szntlvPPN/0X55+vTvqjSTr6slrCeeh/mS6QEv6t3IrvCmtqyGIxP6CaCFdaEXFMe9XK1AN0Mmwq + mfTXlMSPAz/78SBmMN90jQM3nuI2FnL2VMT/QBOsM6xPs4uY+QSuLkL/h7f1M29xubmEQaAcvMK0 + 3kBva6luHgGl3oFF1QtCg8IGNKBF+nI7WaciZEYemYaB9u2p/gAkM5nc2mooHeOhkUtbRIIuqygO + +gobnUqNJZhATapDQ0bukaL+ESve2yvq4nE7RZ0oFxV10UoM/PLDtV/K2YvRlmvq6b94DDb6ACSk + QDrQLqeqJBR+GmrfMAtwq4JQD0IuItdn8cbCMQzi2HSB64FKmmgZJaAyiRS+TI8AUfjj8GEGfGGO + sU4iIGuYbDBZD36X6rgZxo9K1bvZYtA/38B/btM1/GuWUHb5O6xeLqSWy+nKL4ksQkVMaqLWo8iA + 7DKiuAO4taJS7l7FJNQgtXK/DqmVuU7InagEw6bRPhTIznwW1gO46kPPDb4V1Aux6EFtbLwi2fuT + 7Ige7vlMtWZkXG1fV4ocRJUzacWtm1F43pnXYgtWfUyLsOvMCNEN6b18WVZTu7hg3MUaZA0k7Owd + OxE770KTsbNG4tFfkhVjUsz+Au8v0Tg6XfS0f/d/Fc/06FGs3RhFjiOlaj/Wr+kK1KxBf7wcfTki + kNICt80ysLP18aMovD25p0dQDWVFyrmMjtcAQGTIcm4MbCLnSvrt8La6DGR4qsrl2tsGZlTDvJYa + 5C2bUXeB2XWUA6p13sqRebJ7+VqgElsDHp46vFFaK71im9QqOzBSWqltT8xcXtZCVrNQf9AoYg0L + 7gnWxrlPrszswFsl2uepaqtkC5Oprs0G997hKCM142F2k7guP3X8JqGK+UvWd4nqxLxMZKs02axm + PHRkFlCQJ3Voxs6PPOzV/0UQEFcMXJQUBudRQUzKxq+xHdiHv9lQ28MS3QoUgqe3AsBLno5T2ZDP + uG4gi8FTn/DMDP1VemaADGY4emY7i323DjzfD9se0qWgDXlkIozUT2WDMLLjO9nPna1LEVuPtZvq + xiyO6NJb710a6whMO3I/Ag2eRbKwH5y1JoX98HHLwn6CcqmwH7ZmZWyCEgwBj5wSDAGPeRw7Ax57 + viPDGn7Pgoay2BqYAVmv6sUb98SsULJa4g2Wm56lAfkFJdklYxat4A0UCHYqUGkLQtUcRp5HIZPS + C2xD9iwV8HH/k8geW2PaTB5PpAUziF5+v1uz1Ule6yboIBvUAcXEU3CLLbJBW9HJIRrD2A3CIC6R + EZOSGMF5EmbyzQ71rqQAMOk7dSCQMFIv8svFBrMYsn7FdqgEKPAiry7r1GV+6DrxE/ShIVa5Uci9 + +LgiQlpEZORwxmG6TDqT6UZUrMyGXIo8YYFfnxQL4ogPEklNGOF8uVjWE8aqw7WRJ9WEbeoTFw4F + ljY+sHq9n8gi7tqwCCw/FGT4DI5LJrXW3i8LAvWZouRXqJmiBnSefy7Gj6ma3U0ftfPsMyOTsOLE + 2tN6ktJPgR8IZT7P9cFcx/ujPMOCleErNVzPyhDalEad89bxpIic8wmcut1sS7FsIhE/27ZJrm1v + mptTPB5QZSU8l0NNw9N0zOOn1WeuF5RPWkb42OANecFn+9OUC0pE9uLL/YRsv0NvH8DDOypNu4XV + DEQQ1+Q0WXze9OEIL/jx5PZOawu6dYyrG496RGyh1dexOKRzSnAEujTSbvaUKpcngzKsTtsML1l7 + yz6QSXVTiGWSzaSimcLV7BHBS1SCxQssFznFXOiTHlD+DgvuqkKNhS5EimgYyhTRMLfxF2keYVhE + XhQTw76TGFkI0G5debe7LMbDR7wJLZtccHt6xyQou5R39+bGiT37tAl63Mq8ICkXzAvUKovN/X7N + S3l3sVeAHwhfDbkXha4/AHVMZCDj3iWwoux2yhBEYBT8fzcjVTBut+LlOAj9Ulvbabx+xOuKTYHG + G7peWNbNa/oZiEFm8BcWvQN7Cuvwjxlc1TBLpYIOoj50lh9SrfyysBYvyvimLvXAqk56rxHGiWeL + KNPOCkusc6uqgeQDOJNlZFVd2ekmI33BnB5uuwyfIYpJe3vOOsWBHKrnDY5w4G2ee+srjmTTW1yL + ALQ+eI3EjaO7OOi97SKukoWEsV999m1G4XguJTlkYZNDIbLVk2zkROCk9bYkxAIprk0ex+vl7Hi5 + zM1qIblOo1pI8LhtLSSkXK6FBK10B769uq2ohRS45VpIzOdhMOAsiJU78xrlKwFcKqs8DFB0/Zqu + t8DwMAwN/4S+YfFvLLldlwJsAqNOHle7jVKsDf1UGXKkQCfxU9MPb4f+uQxOM4RKkPvR7y0mH0OX + 7qZLrYC0uKLfzjedwy6agYRpuQiGmXnOTUslpmxr4Y+M+V4Qe11Q1gMfg9DxwhIgo5owDP4zJsuI + eIxrLePmaHO62U6pvaYLSZjFvHU/CgKsqPnn3nM9PG556SWX6h74xPLKk7Tnpq9PqxLLI+hVLub2 + CHshaMqUyijmXJqsJCJlg/uhoXWjJ7cwPlWz262UsKY06qe2syoy2UXixUzN65KmtE0ZcJ/KLK2K + Z+TY68nNgL8CxztlUUPkL/mSNfSX6sTE/pKtEu7k09tQoVRnCc6b5dqwlei2A4Ow6/M4jniv1112 + rQcXYsEwZSNVf50mBEeHdl+Ru0y1wpbjx/xzKnJsEdYbYWNF7oPo3+eU5oaw30JMEkIhZkSrROz6 + D7Ozf0RkJntze3Hzuf/hw4d6ybBLa0andk61oalq068fQfOztznQ41bylqRckLeoVWL9/PG5VLUJ + 5AYzRdTjr4bQKMo2hWEW0jCbLr5s+pNUCP1fkxlssZmoyJSslnnRrf6IKXCdx+3hakpbTBeQkXeb + FYjnBZHHrwNHCH24aFgpdWICKq9RAUxcO/VGgELB70I1JObFMWaelms6qo8divnAqUFvky6mRE5Q + 9DNXke5dGFNH5B6FZKHf6yZeszHdmoSRFI0I5nQTk1gsZ0NjijLOf9a3XuMe7iQlSjA/dHryk9UB + qZ6gg1f+kWCRDW2LT1DR5wBJwi44vPttvrJNWR9PVjy3OCcNPSQtCNe7SCjlQACbHh8jF0gjjThW + R0s33YS1uZ4sJOCGDSr30eOWhQQE5VIhAWylO+CP2/dlnZvj6pmFBIahONsD0NQcNyjV7itC0w4y + tNsM3UTa5M5AntpKRediPHKjlVbXXuIMzNYwwFHpumgaKOb5geuUw6+eE8qA5wZU0eQ5B5v8YKxa + EWMc5In8x8YYOxUzKjXmo412XYTpdsY9fIkWyf0GEiQ9bokWKSiX0CKxlbjH7fUFE6Ahpt/KD8p4 + kYxFMYuiAf70/cMcBM7aOk3h99kOtNHNSNdhXrx7e30ylGh0BQifnOHkkjkC7/VXSBiZjMz9UMxm + vIbvKTOb5ma3PwG7AUHe7x1h/mit9LQNcVBbPpClbl3WwEhNj1uWuhWUS6VusVWWun1zU7owPcbi + YqnbX1wfS34NXJ+FylF7Od2sToXBL/kuijzNhL9hI2T6dCoK9N3ttqZt8H6HYRiT9Wkf4xdxxv4P + /TpaIhPfEGvZ4FkBjVwAUW93/cnj3Xo6lohWoBRs+7P0aypgLEEGS1YYNzYXKRFCf043AxD0YbqX + 453Qpy+xTgdan6RJUxy1/6MDh5iAIf9HxoR9nSZ305lgrVRFN12XTdoNL/IQOEcQlUKcEQRLxFZs + MMgTJ6bI3Q0DtOvVao86/ey8qQXRiYTMNaAB9NhmhjlfRS8xIVaXMLKzGhb68AfCEiN+k3jXel2g + yKntGrTHkGN9pJ7ip6ocz1AdsvlyO70vGJ3lBw43K1jUezivxmgK4HUaGIvahhg8XIke08MzklXU + Zb7Xk1NHl960QSFKxXiOB67Zg/kVOTSkdotkp8UeJz5FFJ65uPl03f+dHTZRd5GaRerRvGlZEc5c + ipPcdyIHJI6lG1iL3KsxT4GLL6aHLiF1B4RZjdagcfxY/pJ1jdagHD2Wt9KdMFqvQomNoh86lcOK + NvAX5yf9Qnv/Al/riZd7nAfMd5lMqnwmyfU/IE29bUBG11KKw4IgGzDwl3F67EEKwpxQ7n878ky2 + PNURIytWcSdanbcoS2SOTp2gYRqzeMU6iZk6MFOYRRsdrouLG2/4aakFimneldIfszin5J71Rvgf + 9Lk4Hh0y2Nlxtj7Jeqj0xDuYiixiE+dqm0xnWFt6vU2rC09UQrqATnFAF6eXVU+ykvOHD8gd4LZO + KzJVGpQRoYQFwT9my4UE8+6+w+dbxeZpAkbVXYdWbnyS9txvnw9Eatn5tmTEEv/bECv8fV9mudrN + 3czdMh8LgcB2upvYPqp4URY8DirWqdPUCUzvWPuAZRemC5gaiR/psRiIZzXVwzJ6e/+KQRvsvOwe + ln0ip8riyD2t6EqWM6NRfJZWvLaX8VHnsysZ2CtOeMUCHhfHwJ3/3Sj51Wf81GlUwix7x1Z6VV0Y + wqtsJNk1vd+6mDBZ3M/6vUEf7PZfXF99uOzHThxHsXPSa/a4mN0Dr/TEaFzxKIz0+o/ffw3ZqePR + gfA9T/wFZWWPQidaQIZkl6WnlRvKjpc2uJcHo45/rJja5uaywCqxvKy6EpNDytvbvzGaxe02p9lk + wDHFuLz7fN0KQZUwX4BKB/AhVtT2ciUK/v1wA7Ts7ar0uJVdVVIu2FWpVeKV334uJcC4LC5UNGev + fuGBF0XBgAc+59Ku+rsrbSRZeem8kiWZIT9stuXkF2lXcQt2yAL6px5Yi8ATUSn8tTNDJGNuFAZO + 0RKpW5sy1DnD5u96fm0QrCTZu8jA2WU4iJq1QTkW9X663mw1tPLNNl0J07H6QFUaPB8abEw1tnJh + 8PGGr8Q7xcBXYR4eyvJx0KY66OF2yCJKPM/ryc8U9rCq+bC2icAJNmCmm5r3qrhqW5r78nADTqUq + 5u0qX3dmU4o4FTcyNvwPswgFBAyxdzYPURATkR3+f5uUjqLQSQmPJ7cZP2lHexyV3FVCvsvf8WYl + b7N3bIV81YUh5MtGuly3yb2nifjFcIjPbz+AoC7NF73Dj2Smtc9At4fEMfGZhcp+3U0wi1um0Vjp + 1cg9MRALHM69430ya58PV3y5KKtA1Ui1/tXS1V+YdoJ/SD6pHAulKfv9CSgYQVxemsp93UIEb9HJ + HqTFnGuZ26ZhVJN90eU4CvZv42fU1V6NhqvgqCahlfS4bXBURWgltRLT/Xh7VUIMBP07KIdGYe0l + Hg7wZ6gC7D9iedHb+fBtQZP5uJmXwfgIq0NJn/Ugn0Y1P5+7dXoI7LyQx6UMwpaKjo6Mp3eQKTrN + wyKE5H2okx7MWf+FnNATNZ9nfawkgNcABb5M0tU2gROGaN8qKAbe2szd1TAk7SWdirp90MZWuL+j + 1YkWKAYv0l/UbBsh+/hJ43SEVQfVZ8LTUf60Gs3vgVJmocfVEoR95NZGWl+uBGxvME5ns1iKn/gG + gnX2cOvlMV+qiOxT6igB4W6101G60nTcjEpDDIFMx3EoO3vbaiQtNSUn5q6hc6gQHW1AIknrh9yh + hGcutabAts/yWxbQ7SF3cn2pEq6tRkUT06XxQpGR1wDyuCUc1v7Klx0hMPeVI80nQ+7v3kuY2O/9 + 332Y2umQprqW5FHOkkoPYxeRRocp/Gsqj14W4cQu+SlrUuYve8c6vkl2YYY3USNJIsvvuFVnVKZL + d1jW/kGnC4qhK/Jce0c589oWTsykzY5gMrgsEPP6mgVv/aYu6OwlSx903onuhM5aaX3uZ8lXgdCq + NFdE0Fx+f3xISwvT4FGjd9TuXTeSHjffKLuKpVZbuS+6y+g/PlGQYoEEsou8adcYNbqb7eatikE4 + mAsnpRpjqtsrUI0JH8jYi8UU0A5BEOJtMl1Q6HB78t2CC/hOQDU6355fHnf5IAUxnk/nl8e6zEKV + iuDyRqkI8LhtKgJSLqciQCspmOef33mGgslDHrhC5irmIrjwl3iApX59WYblg6ZQZAWpT/sfTM/N + 590dI90H/uWulN9njtnFSsgQD57vtuHqtH+jO3c0WNlTqb2ebx+8ijTwEfCS3d2OqiopD16F0goX + iInTpql7Mewxjzul9BuNuFpoQ0t1WGhDMa+Yl1XvNkBjYlaHUB65rseCI8m8OzAayYWHGQBFXuve + oBu4dTjnim7vIqvBM3rcINFUQXulptMuG/pZH1XJr7DhYV1BlcXUcLE9qp+XHjvYQhdft32BNAGL + ggH6lMzeww2d5w0EIRUxI6efIgJnUaFJ5OjEpZNbDzZN4OAXw63A59HAh2fTlbp+mpCLsrtwOXus + TGzYA3z99Dh7AcvBixFZJNsde6scPVmxtphu+nzzd/5+zdC7wljhXuiS+DNNR6C2YiIKcph8RCpz + xMan+qcLkc/ebyrIeyyWHRJraQalV/kJHTggO4PhQ0Je+fueDbofjxS6X+g2QveDx23R/ZByGd0P + WqW08vptCW2Ghywsoft5jPlBNACNQ6RVorByZUBlXJZzbExba/Fpo5C7MJLqOWMDwQjTNZ7c91fv + WCV9wnk6y6d/DjvxLksZSwUcknpYlrQ+V6Wk1xnqMwlBd/eHsHC0dDsz0Ceos9nHfsQCt5QkqSfQ + 65Qwwd6GUp4OaYwPLm0c2zzBM7VIFgWoHhxpnbhxiLpwAmFp020V2bpCKops7y+yVXp4XHJ0vpBM + +A5JL/WzZX2T4woVSFUvq71s8JTwE7jxy8PVTondldH2qv2JSESeG5AgbE4BmZLhABw2pdlAatQk + k7TE4ohkSR5BISUKdpe9ur5iA/2vac0A9VIj9L9SxQDVSleSZqYBuW/RK/5u0BHpHGg/I0NVxOut + TfvXUc6H5/zvd6qId8NC7+/Dc/uaePIFu6p4inqxLp5slzByr68LZgju8SiM41JpvMgLAj8awI/Q + k/FIH5ARTO+nxBVRF8RMvNVK+CRJsl6vk8chDmisV3BNQHdDfYu8nsS4ht8wuE5CnT/2N2myhk2C + 25WgPh7WMO5vw6QM9iEL2+RtldgaEQ+Na01hdDxLsA83CngMv6gtw1QaZxz4p8xtlMZJr9imccoO + jDROaqM1H09zuVg3Oav2xxmVeK9+SusBjxVzZJaUjSrecWJUcyWIOGnh634AhHiDSqTdKUR0XWGi + 32yZfu/kg0ONZBf0xPrl+27YAc1OKrm21vsyQpHj69/480HvvCw0Nj51mrk28QVbv6Ygbjg1sUXi + 8Lw5v4T/ve/fLb/3JynK+/DW+edrTTZFWUX9qX91P2EGE5pDgyhIHgTSK2ZRsdA+f7t1/cRO6+A9 + XeZog/DKlpL7kRElP9ZI9iwzBVpL/yAMisFkp+n4nDmxB84bZ7llzFkC/pgnveW4OuPVHmdciDAC + AcBkQO1vdqBOAUPmx9v2lYN9KzbOszpul8w5ZU7DMm7yJesqbqoTs4ibbCVF5H56JxOZ4V/r6Qy/ + f9Er/FuUaPPCmEBAmJ/HLe6vPmnNqpjPsqg/+KrJ8RXfcsuKZXRl9xSfGZLAkVz80GtNsOLbxhg2 + ACZh4vbYgC48ntlZuDqLMuwGSCFihENDx0CYAu8phaELTeUI4gf4uJc7N48jpXgj4Tq/v3HCyN7b + Qo9bGWYk5YJZhlqJF366uix5W1gUFGAqHYSpBGbABq4fOcrb8v5xtaTqLDDxv928VeaTyRrof/uX + MJ7A5LiOqM1xJLx6tqkcV+L2bbGC+my/331vxQjPz3IKXfeUNcS9k+9Y5xTKLsycQmqkXRIMpcvi + Hg/pcugOv5QjQa0e0vvDSMPYkzqVQxDO9C68dGwZ5+zaA6ZmEHQHwfBuuqExIjawRQ/2l2wXvT2z + C7jLuq9/Vt2qo5BkIBSK/VF7Rjq4JFv08bS6GAukT6jVOLq8s4PMxeReuM1dTPIlaxeT6sR0MclW + 4rB6eKvOL/X22jpTij6qO8x3kaF2FWjd9Oj99Epl9jmpPz5M+eDY1P4MVeJB9Do8ZX6zvAP5jm3a + gerCyDqQjbQ3hX37Hr4IllHh3OaBjIVK8W94/+b16+tAhkaU8gxUd3j588h/iurpueYb5nCGInq1 + shKR/Y7xAyMbIpuDJigFP+s+j7ywPBeUdmrOt4IIxw+XiU/twC47NFBaxwH+iUp7eBSud/3RdRvg + cdHjVgqkpFxQIKlVKpBv/l6qc0AxtLoCGb36hbkg6AYD+OF5wX4FcjUD+hUK5F+x1EbAvOBnlNrQ + DvcBoL/iNd1FQK3nRhRXNhVxHSMtvv6Yeh9eTAWyPsLGa1AgSzxuVyCLKBcLZIlWOgfvrj+wMjBd + HIflClkh89kAvt+RsS1vbnJVX1WnGWuBfrrQugWFsJ+Mxxv19xRaFsuZrJ26kDVttpPpetyf43KL + rIzNdLxLFaDbw+xxtNw8zpSCiR7t6QKLG4CU9gI+5AT2yQhzruH+He3Wm+X6TPFltEtMdkC4f/3h + 3fC3AujEu9WUlfHzqgOYzDMcmWknWslDJ4w54+WqHhWf/2m4x8hnxsfyuiwcs7/sqMOsqEmpqzGN + oSXBIaq9v8Bi98ReVwwM8VZlYI24qqtmam8B5/2mmGOp1oWfYglxwS/T2az/Dc3zy/VDspAVcBob + rv3sGj/aQNMszO+A5eW4BNVDpsmfbdns0JzShSkgJxW6daQGWasogqMO+G6j58w+rJe7VYOa5oyT + k12e9aHBD2QXdt9V7EFepL4jbcfXr6M3/ilzmtiO1TuWtuOsC912rBptg2dzKhhl47pez66IUB4g + Ksu8tUsNfw6HRC1hFsAZeDAxvFEAJ71iG8ApOzACOKmtXvk3Ybw0uGWZD7Bc66Rdn0eh43QJF/ik + +H7ccz3StFP8rFKtqD9xpY0njsEiTzJluh7eI13YvP+KBgHfJTi7j07kNICzE4/bwdkR5SKcnWgl + Rejz+w8lPcgR0JMFODvOnMBzB5y5Xijjca4LFdZAIFZ2JIEeAJIu3nX91SMMTrnHzOJ1EpuanlNy + GWrFQkH5PJmW9ZOO6gWPkvXd8vvjsFAxWi/vHkS8mJg2MHUd4HcxL1IuInZKHOwaQD20NdYl8Uc8 + 9rjHC8qNmq5azSZ2XQM9TysqGAe+HzuRqCl4R3hdoGskwy/pdjndgIIDvaAPEzHtxPzMRJl6zHWb + JLDSSX+NOfpaDjssFnBKEfsu7H2iUCvygCHs5Sll22UopbPRcrKcbQpVCLXrHUili3/CpsbqmXlC + n/zk1PjmHu7dDA/P5RHBq9G1g3fxaAJv0yikiTofZkUOPuIc0AAFbN6byRr+OkGJY/ItqWBd9TUI + QQ8iTQM26giHbZHwv4caLBg/8puacUfcOIKjF3fYUbqbLbWD2HGeH9M1XVPSsWUBrg4rO7az2zf1 + fbuRVC8eFnAeQGU8+kLrUF+TX1Fgq02JEKpDDY9+WmI125k7MTk3Km+1nyxHECzumxsnCO0dC/S4 + lRwhKRfkCGqVhT4uPpYcC06MmqEuR4SvfnFjFwSJAfzwvQORaeka6HfuWOhelHhODgonCigI+jgO + 1syrkSmxXhY1/q55kIV8xzpm/F1FiIVs1AteLUdLqb+Kf/bvgFYGcX97N2G9zR2l+wAjdUlnDZg4 + 4rc3ejD9aGkWkdqLuiMNSWgrbuvTDshGAZfetsEA2vTYDgeoKzCewJcoBiAKoWhAcagm1exrjypf + e3yqtma67dIMrJUqE3u1gzjzv65tOfIDv3Kb7Y09so3I8bN4XOa+Y25jnFb5kjVQq+rERGqVrXS3 + bqb30kQnXVAqfINSCFaokQnI6Bcazh5q4Cf9F6t0vTnF/TQ/7f+2AcGl/2n6LTkBGWHMcl0jR77l + PexNmGfh+ibzrOOTYJrjcmxg/dK8kN5iuRgeKKb3M+RpYublaTo44uez35XwyWLa8xnMu0bG6lv2 + UrDlm21CCdTxCpTJK3QbmbzgcVuTF1Ium7yglY7T65s3ZVGVFWJghMkLIY6DAeeOh15I4fyvZKfm + lSSnZ6AgK0QxAuGXfX1+Dd2YTvg/xjMY2miFFhnRDE8rqU+Jk2cga3/msHSzmVJPxulojRiOG+E2 + nqVf05ko5YbNW2E0+ZquMczx7MAwekhas6I4vfaSALwfBQdu8J8nX7CAxUK+kFiVw3k6Jp751xAm + /pL3vmIfYRbP7QSnLGoWzS1esY7lpg7MSG7RRmxkvZq5fiKzZpxbFZKlyecfXb9X/xfxvkPl60OH + 2de9tfMqPU0Z2X3r7LoBFSyVfcIzM9RQtO9X6tfRcm2nqZAdlrttXzaBcFW0bwc9YLOdbneytmeL + 0r7qHMYRVcBed1L03ZLcXrsVBcS+vnFjx95uRY9bCQOSckEYoFYpDNyWMipZHAZmHCD3Xv0SRmiw + GgCr9pmMBCSrHVyvKajoCXph8iJEuy05lItSgbz1X2/GZbDIIyLvNHxHxnyXs6eyTeUWyvySNOpO + 7QFx1EfWJcR1HEWhG/5P732afH3URlixIgPUb6azKUrFG/yE+/vp6At2Bkfrdn4v4dDhX+5KUtLU + SuEbQjlLYVR/m8B2wpbHfrJGbxlca+N0PMBDC5t9tqmarwHG7H2FlVZ/nTyuUDoe7ebSmTHIJL6N + cLEtV/AAUN8uv2cYBj3csZm1z4tlNF8noNO1IJAB8bdKw5OaE3tDusK7rNhSB4lQzSu6A2CyHpIZ + YfKqUdTLFR1IXs80lKiJatY55rJi5bFMjmex1yQ5Hh+3TI4XlEvJ8dhKrPzq8oqXFDu4paJSdjyW + Gvf9gRc7PPYqsYincPNN73ZipZAxXGEIG+EPEgO/Gs85e6rYhM6YthEZZ0TO4kfdTZfodS6GD4RA + ubbueAzKahAUAXmni0W6Lt91IgpEExxgb+O8uatCcfIFQv7PChio83zKRY3xHA9Xr0Qu3ebJbPZI + 3V1dXbFBH/YCc+iHS1iSuDu8ntgjGRqAy8OOAXgDmZmb6bzF+8iaEq5CeVAtop+PIdida7w9VC7Q + IHlzvm/rWY7mGEp/EhU5cFSNVN4AFJ4et62Rysug8NSaZddE5RqpPC5a2H6B/zpx7A7gJ3cCtt8d + PF5DD2V3sLmlCi7huCHnLcNl6QQR86w28cUJQxZF3bl0r5UKsdpnGDRsgtMNCDGPKDuScXBMhsGN + sAyuMJB9kS7hyN4kYx/k3PvlaArDXacpUJztlut0M9Ilxhfv3l6fDO93FHitkn9lFkwmExvz3/tw + c5FbE0PP6bWL1G7FOP4Nvnc4y7Y14ENHpSwCRqaAj47fQH6kx+1MAUS5aAoQrcS1rj9fFENhQbhk + ZVMAYyFIXsC0YuE12Mez7mZA/98hLFb8rp7NkWSX5FYVFYQqTE+inoOyjukBomeZvVFm191cX/KP + /QkI9zB7oFcno3QrIlyV8dDIpbtcbrEmt0wA2pD/E/rPE+f7t+efPvfHS6ys0Pv822VWnRl9FT3M + m3UlEqE2PCVyl44H7sr0W0rhsrutivZQkOjPFx7oqJoEe5mBK5kBczx7JyE9bskMBOUSM8BWyQx+ + vTB1SQ8LkQQhK3KDIYtgzAOXuTE/xAuA/OhfI08epGHnZ+TJZ0Iwl5WRWNigjiM9blkZSVAuVUbC + VtpBl5c3XkkK5hGmuhVKIwVOFETRIABROJKpdDms81CiPWuS4ECPmJ/q4h6yRA0cepIm2+Fmshx9 + QUs+LiRmW8Cz27kwQ4qMZSA63sH6YZezFGluNKY33822U2CNiFgN720UK9WizjOHwadPny5v/3h3 + Kzf85XjtRU+33UFm2ZO5EdWRizzPi3y3SO1dPTWHx27dfWpQy06QhvBt2LLdiBXoDDTjissQcSD6 + n96fevF7Yt9nNY4otu1lP/vVt8VVr2ILgczu0L9TflwDW+kRN1pMcnJxl9hZiCMSkYsbdu/Lio95 + Kj2U8ZifOl6j/FD5jm2CqOrCyBCVjdUZvrfTuUfWtWTm6lVeX1Cz3naSqZBe/8X11YfLPgucMI6Z + d9K73yYeZY+yWMacebGyo8FCjar8CwesXYeC1hoRIzgoVELtK5DIt30mMfHEt4yneFc0U2FD0jy/ + TBepUILXlmYueJE2+hI9QRuROJTNxl5q+yXCn1LaMqLaB3rh30YdcyZ9ZFfTTTAUG7c2YqAqxj0I + VFxowJ1mlXbUK7YxobIDIyKU2tQpXOPiTdYpfKpmblfZKEUkVgk1cOgxrWsM//RccRQ5yvM4RSJO + lGI7vsBEbw8aj+3iVP4dPtWtbdge464Tz2N3BqAwKyDzJoY92AwHWb5jXUZGdmFWkqFGLYekGFRO + 11bscBivc9I7f31hBJ//cbdlveRuJJJK3EAaP1vGUvq+E/nZ+88g7+Go8/F8PeedGYgP2VLzWhsd + Wl9tRcu9VEJGNyNNwQamYAjHR78mjix94gZZZRYTbGe03MHNOxYuBGNbz5dfKWodPRa7u41wv9p7 + TZ+wx728K1K8i78LTp0mUanqFVvOJTswGBe1yQD19Vd2PlvL5PDeZje7R878OCN44MKVn8LT4rJn + ocRnjcJM7ib/NSL7HnRiW6clHeOEtq6F4zueER8+nQsGOUXktaKrF/h1tgU2q6TKx2/bb1cAzJ24 + yP2oQKPrr23TR70Q0SVCMwtiCfQ1mS7zfd8FkHRDwvt4RuhkkeyhAxp23CyUnd6xjmWXXZjB7NRI + fGO0nAJ7HOKP/gtQk2GgJwarqKyEK8mKEPYgK4T7c5y9al4zQK3I9U+dRoja2Tu2FhPVhWExkY0S + I+fvH5SDaIMlyPGOHy1zSJjbm5srVqqEqujixHq+rGrF4yi7pTGBC31fiuZAQJaI39KWYeJOwOMc + QPppykgdsC+QcbDd17SrdaQ2Ezmirm8ct4FXmh63Q2wmykXEZtFKboQ/rsrZar4wnxYQmwPmeGEw + CJgbqpI/h4P0kH9Jo+75+bmUGgbKvjrFhEIM0KMA5wxwZbe4X87GMIHwp/l0I38pFZ1PpXl5uzkT + Apt4fZTsMGstQaSw9KswFq4RQAPImgRgQRcgm62V+2yeluMt9wZwmf4Fzwgj1yGRopiFUdmzflxc + EYuZ54ZBhbNCD8kuF201woxYGNgMtuM4z4puehcZHkzBlb535qdD3EzZBpN2tkH/2wQBlWAYz2l/ + 9fCEZfjeritgpBinIkVoMF0odyhZcJOHSjZSGxF6dAXrnAKTMvMmn5bpgmZ1m84e+yriQWATtw/3 + txPSD6ccYzkYXR4/Fp7qJ0oVOQ27iNGnzinHiCTCxhBHzM6C3aWVA3mTVLD3MzSbycAAmRz/aLYU + VqW2tbq7ALzvoipthyXXO66P/rxqmT+Z9akjcK2QZwi9oOw0skurV6wReqkDE6FXtJE8p9DhtUmX + IICM9wjIMZlTQJtK+j9PJvAn/I/QJRiZeZyYEHbEhUaJFrVhaXW3hB+HlO2LuGo4oDa177LN2RKi + XdGJXVp7PUUsx5DfF4VX87nAt2lkxue2BFw8ComgNq3OI86cbGCPrNCtK74VrgC4aWb2QHee5+aY + +4TbgGIL7Xa8OPZ/dG7mJk2QRdlGE+OxvLLbeyokBIV4PWmaIGL78v5NGJEinX5HyHKhnY6FIHrU + mOKYxiSmcrNb31ea2Lp3tHDmUlo/FXQgG/pPLAngeL5PG91geB1ATDclfEAMcciSnsxGrbA5u7tp + g5AsSGVCg75EgYKHs0vmDsTcJgyyE+p7b3TOAjmn26OnszOxwMtilINmMcqBfYxyUBmjHMgY5dub + 3zDAp5CxwAO3HKPsRF44YFx4d1CSuN2tRBAhHAngR+P0HpmGAFpOZRl0Gep2M1nylTTB3K6XYViy + wRSZmWEpiQoJU9cfTARtz3G94Mkimd8tZw9TZFfFMVZiGDgBgnnro30Ho73+UD3arJP0+1IExRTL + CxVDUN+VCWU5DyK/AZMaRN6/RlGgZ9P21RxwZyZOwHhJUAb4sMzWwksGHh7SDEjxYkP9FCbDAIjC + JSYohMv1crNcTYBF9mdYuGTWf5jiuYdV+QobcbubIzvNtpGekyt6uf10fvMmU8Ju01G86okNq4WI + uz05UXRLZl9dOoj7oLajWIgKFmttQ7bX5Pav0iAzP4Sf+XcY/P8pYw1Lz6q3rH08WTeml0c1y8Dy + N+eX8L/3wH+/Z+ljPVObx6jcLLPsw3rEC/RRkwiwVEm7AH8bo0yTytP/zhMsi0r2eYL2UtJzyT10 + IsetsEW1HFdnAW1hFjDq+q+jplEh8h3bsBDVhREXIhuVg3exSddYTyHdfYH3l8j4ZJRI/jfSl1W7 + TlmEtKEr8mdWvwxjL+f1yWqVgKJpD0Fg+fJ+93IGQMcvg1MnaMbU5Tu2LF11YTB02UirKhIL02GO + Q5+j0i9lDXbdt9zwcX0MWMXZYVSwy2HkIMBMyunYqMuxt1KENY+BUyhx8B5XsFUmiW0tCnsnt+T3 + qx3GUmtwckJH3ySzdhWkgT4FSv4NqC2WX5d/QxiVzj/CdUKzE1hPeIqWBFez4w5jxrRbUkxVa0sd + I6W7sALz5cKortC6NGXMNPxbdcG3pYq2MjNergVNS8baRCQ6LodSCOfd1RbxQi+DbNyk/XxVx1OT + 9XQhnLTva79wIHN5WlLprKhlZ9YMQmL89NHhvr01gx63smZIygVrBrXK0uQXb5hTqkXmibRqPdQl + eDX0g8h3nYEfxEF0oIbIYgY9lJOu/zqwCVnKtRdHTvPKH13heoexqm3vNIDypMdta9s7ZShPaqUN + dHF75ZVr2/tBubZ9CD/4AH7EvszZV4YYA5YMoRnJzVOdRDjeiWKxWdlSseMuNnPPEtmzJlIpqg0u + cn3msaiUu9wdxudUaAU1n6vR8nzG3VqMOC90PNiovQ4mFc1KeRk4NcBtOoPX1kBjtttsU/HCi7vl + Di6JLXYyF6ROhB1LPTuciUig1VSEyMClsMlj/zc93DtZDBBzmV3dgyYppAdr3B54WwwFRItk1dBC + xkFjJ2zh1XKtqqat0w3mdsO8YSE5NWOikl8uy5AXsdl9hBtDfeeevWTrVfBwx+v0qpbe1q7nyEIr + KoI2H9tA0RXn86FBaNHPTz3sMk3r+aQxPmkRiogg8i5uQI+1v6zocavLSlIuXFbUSpfV+eX7susm + 9goQef6rX7gTO0Ew4KB8+xJs6tP55fWL9yeazUvVrRynwmoF+x/ZG11I5+NJ2WmzWc52IvhS8QpT + EHL92ivIczkPveIVVD2AFzjSX06qo1wj5gQlNAzNN2T0lN1RqiOtVqzhdYG5OjT0Ho7qvTZ7GHUB + x0LWK638EuHSuFsvkzEliYkbTMFAwZedia2crlV47Gi6WKADWcXnIGOtIoyRq3Bs71LjnrvfbdJZ + 9kJe5FXEfUK7IIHgF7MUS4KmPdxNmV8llH4VJ8jiBQQ7L07dHv20iqd0FJrTVbaUrDVQ2sgHpd3O + 4hB8LxIO7yON17D98RXLk2O5RO1o/pC4wS5TvbpSfyOVNHTtOhdR0yi/7CXLOL+8Ez3SL2slJs95 + FAcqdSh7LkOe+/36rcPhQpX8Rd2GzKSPnjofUzt7yn4dUUbLbzcgFl4Mz60vP/WC1fWXUS9cgKpd + lgy9/Xux9IILR8osGeqFr4ZRFPksGMCP0AtMfa0SE7UtoqmIsFqlGISarjF3WBnQBv273ZjgpOEf + /UU6+qLsDMs1fNpomJRuWnzQuFxjXlfCoRbkMeusQKj2lq4j9JfEmvMj/lOw5rL3Y25ifuNy2fVs + 9eahzv0SCdqYliOwfX2vWyziytkJt+up06xmIr1i6+qUHRieTmojtvJ1tWGSS+gy1aFSZLrf6/1v + 17dZboVKfPpPQVd/TPQkHGM+57KA7DGFMn5UgdanKcuGEThiD2UROKh1Co1/D8UGiAF0RtTsdYMV + 0FUtOc9lVJpeDY/uloEoypjshO8S2NvxA/V8TuLqDDWOfGbz7dTBJHsg2wlRVgaKZRFlzSn+qNLT + nTHvI+qkcUcGdht84oi5UsyTQkn/44Y5Dcq30+NW8pikXJDGqJWY5puLK7doj3Bdv1AHy3Nf/RK4 + IXC8QeACz3X2+17+sYYOKsCvJePJ2yrv/IiHbpXskAshs+mqHgHUjaNaqH4/dllYjOPsQhThURDJ + e0DsKhghvNhSY2aBQzl/RO3oLMpug/AjUjVh1yWjxxmGdadrOD/FNWn4pR3FXkV5EWf/nDmnjDUr + 4ixfsi7irDoxizjLVjphu7s1k/a7vEpXpoJMH4SG/oaf9D4NgcsPgeksH+CeQy6caS+a7CHIiaCs + yCF8iI5qgO1fH5+AMBW9rK+W13G3qcLl6+dwgWovojNWuzZdBCcc30c3Ga8d2XesP7grk5HE/mw1 + S52ZiqiA9Zsbx4vtL2t63OqylpQLlzW1Skf3+X+UC1hHsWk44eGrX1yfhW44cH0eHCquk66Bfvmu + /uvESey1GBVzF3Yrz1/1X6Q3b9nJAH/l8ldOTuXr5A7BSCbJpp9kxSj0or0IhqW4Yoq1JqcwkMeB + xNRZzh5fnJ+AdjiFCzNdPGBxC6BKiD6wD7BQ5WPv8/V5hkvhRD6TcVk6CNBQ9DlaT+9S+XqJcQ6w + zgVMwyONTLsUxukosU8LdQKPcoaru2lCh+V4ljQodAZqE2ZLCsM3Ip3xtRS0Oi3X0e/Y3fHDCn+Q + k5Wkuwz971hIzPZQDF1jw4W0i2uo6amKCHoldOHFci0ZA6KurEHXzqIlMsYGBB9hqwzKj2y/LfvJ + djkX6Pn0VPMxB5ZjRih9oEljHlQOeq1twMovcIfL78uHGWxp4eUEHieq5SBJsn2XPhH/jp/YT5PR + RPtMgbx4B/eNmsRG380x2Alf+TjEnPb1Xatsms7uf5EA8MfHG+Y1qE1Dj1vd/5Jy4f6nVhk7cPG2 + 5DjhLCzESXqvhh5WrIkGHogHWMYK7/8PhunvDjofsgFHlQOXfJSgp7BcYgJrRIxVaJYWR0Te60ny + NdXuQVG5eE0SRgVoeA5IQOEJo/tyJWzTQFmITTCsAhpoFXMxgbssfNB39fEzxffi7xhkvqfMH4+s + +sijEg5go9ejcAl49bqS3i7zeOT9T+8HLJrNivVw42XhpoyL0tMdhQWwII4LSBEtldXjgetL8bEB + oRSZu/JJzZOtI506s6jkhJ46vZ/z2Mmi6XCDv/BO8hObtAi4Bz5IZXklK1AdEPXLao5gs77dEK4I + V1SXTaSyzVz/tXvq8EbZZvId22wz1YWRbSYbFf4QCgXpGASRRf+F+RFYNCj9vj3p/fN+eMHfX3h9 + IakL1f8edke6NjoBSRvjUkWFCe6T2J0dLavyPjm3WyVbBFixdAEfCMIMNXdO0rywcAcI+0fkOGae + hDgvF/SasVPHawZXlb1lXzJIdVMoGiSbtX2DoMmLVNM/RdiximUrhCppls6mLxfGhVWFIsftyZA4 + CovdTpKFQnA+Ipi7M5Qqh6yeWj0tW3ClTKp1absY82Fxc/5ocPMncgl2jQ9gT6+J3/A5hR3+FaP4 + 1F5lUoC4Hb4QDOE78q/J4+xE4yEFTtPerN9tr/tUz1hVdnejBjlW9LhlZXdBuVTZHVtJ9by5ufb8 + ku3Zi4JyaXfHdeDMDeAnuo3oIrghwxpMIxoRrzVscaEL3qzR7lobtAZzkn4nw9yLm08asvCJaf2F + yaqzT8NegwuWVZdRhmmzpF8bY27Qz1VQ/reh/7chEM+ynGuVTwc90zXKJ1xfoHc5BeWT+7fA56dz + XEtlD15tdeR2I0KeBw3pGwbfYry955h5YAZcEs1FZnrXw7HWJrj8WT8PBpAh9Gop+PD/PGzPfPw9 + mzm5Lj2xHbNy80EUkY2cQBWxh/t18iAAZ1sYrOE7FEARJY8T+4ZzNJ/L0C6U4An/EmS1dYrrDXIK + fol/Gt3Sx4o+4KXRdCMPuGjWVuzF7e3vQ2wc5K8N+h9l44n9iGGNyY59FIJ/TiUO1DweS4R7HilI + v7P+ZoGU5NTsI7gnlw3ICZ34d68rcuITf/dbketJrpBJOHs4iZXkgyzMkHz2sD5bgpHcw3ZEDlRo + +BllyJ3s7eWsQxFyDyQU7bUDzLvZdxxfkkJR8HymuQCPH4nnuwZbewZhOzGj5ISPIDnY29bpcbvE + BKJcTEsQrSTgXF1eYZZjISvBi+NSVgKLecTZgMVeGB8AIVjOoIOKyu9dBcI9A/d6Ho3vcQES9BzS + RdW2cjMovuCd3zC7J3/JGohPdWLi8MnWHLepBp+pBocpo4o5PZFLBo0nweAOHNL4L4cSRcWCoH0I + +xHEf7BXvEuAnaezJ3ghoXRrW6Yb/Bx7qn8OpBzFBESGyh/vPjLWIMiaHre6WyTlwt1CrdJvC6e4 + eLUwTOIzdOf41S8uJby5UcwZ33+1PMyA/hPGWD+nq4U7kZ9nMsae4urRpXvKmrlG6BVbji47MPg5 + tZXzjDaL5c2na93bK4vdu64buT4zq+rdvv//FnM49R4xt8gNQgLd8wjoFoFb3788vzhXXdUj/D9h + tsZTC/NPxDjV3hHx4X+cf3S8BoImPW7FDCTlAjOgVmIG15/Pi8yAxW4hiIPzV0M/CuJoEDA4Y7Tb + YPsMt0WlXHCD621SUSNNmG9AvheIhhiJgPGHWkigjmMAe3GE3gWV1GKCeXthneWIgSrt+lG5iJrR + +X7icY0hKXbiOORRkTMpqi8tPqfK0sYdHniFLge131SwhqkvMi1rYRG5yZZe8RMKZKPmZIsbxOD6 + TiEFWQNv8p2IRSVimY2qGNsqTtg1HLsPH7C3OXCw9SALcFVFl41Zj7wiJHweXBPBEXCKkB9H9j4E + 7TpzFxZGEB4aQe82L3c3gZtreHH9dtBP+nNETcqSFOQ+Jtx12pfAozQ49XkynyezabLoX1zfvh2Y + SFgi1XzfuUQCuIz4N8Hr0T6FvuUCLFYFQzgTxoUso11iH66RMrxz8fkSicMr1x8+9JATZXHGjifi + jHHTCeWtanc2sENSNWnzzDR4vU0h0szjJRNISyzzaajUlueJPEqY0vYvrYGY3znJtrCRje2e72Z1 + lkod7on+EVu9Taf6EbLquIPqr3LIra6tJpMkrp5yj8dQtKk5m7vwlSwSKEQO3kAxocdt0Th4WTGh + VpJFPr8pySKuFzNetHn9Evse5/Eg9gNR10nUmBX7fdNP1qmsIzL9KiIKPz+y/pvFBPGJ1nlhq3Oq + fCymX8gsn9MKmcUq7cSszhH5rsdZCZhKx87XqSG2fo0Tz6BUcwuZF7TvWAyshxOSygnp5xWgjTvh + fjfDlJCv6UyEi39+zN4o1AZTIznrXwTkzJeAePjFQ/XFSqXABc7hMgKvJ4edqdbZhzV1EVnR2Fe+ + g/vCgrVOH3b5tVdgR/hJexjR8fahdl6OGk+QVdmGKqWqfb0HHjoV61EUghvefJ1EjHQVfh9T+P3b + G4c3CL+nx624paRc4JbUKjW397+ZOLMMznfk+wXsvujV0HV9mL8B/IgVcNHrBG4NUaPi+3C2XK6G + 4p/9F3fvP74/qVw3JcqN4Gl0MgN7BV1fZHZcT5buSsl4MCw/k4LzCkFUblkcLrp9dFlQxKZvpVQ7 + S0G93qZUdCh7UKSAfE1A66a0NKVqTpZlmNvm8EIOdx0e1cRjNMg7NOjk3H//OTDuAzg5NcptFDPU + Cgr3QWWwaj5lmy3WSSreFSwoR/sPdPXL+I6sr5xsHewhSBEHRt9rvvOyWt+PoyHZqJ7ZXuzhUVT3 + Gou50+G99jS3UtZBSLEV5ZU1/CA25aS5ifJ4cDvaXEWe70kc/foJ+Ol+mkMmxh8JJ2N973dzfVvU + XvfdqExKLmdzYUDdvpGKL/fD4NTxGgWX0yu2keWyAyOsnNroIp3oDhEl594l3+FrJtO7KXzjcDb9 + kmpW9YymQEX0g65zDxxGIcYUuX9kzVg/DA24q8Zvt0tfsH79udZpyvnis4k+oMoI//HRCdy/N0Dc + VC/YITwp6kWMJ9kug1turj9GpujKmRuz0C3BPHEWBKDpww+EIa12QaKwsZ3eT+kul2bPx9N+/zZN + +2/fvL7tf0zxdIAYB58E4pUXha84G/LgNIOImsH4vlXAZppx+gVxsrZAwvOFn8icmGGAYESOdUZC + i+KJz/yAqKuKxQRUrX1NMjvytEWOo9Kz3cjemkaP26ZnI+Vyeja0Sjf/9UVFerYfFtOzf+Fx5HM2 + 4HHscW+/m3+2BvrfVr1rATTxFfZUOh5HEhFHSeWizXQNwK6fwY8F/OVRZf/ClPVh6+LZTWZnyqWK + C3hxCnP7AAJD//Li05CdiaS+ZAq///76nK7THLtIiTgEUSwE9aR/+ftbN44UbDFQYXm+MIt+EEyV + 58syZYqe9vlWB8yH5SE4qiVoITjdphx8BIBT0S3Q6yrD14kcMpini3/CztUMi/aDUfPGGfnls++z + s1+po8cU6Br3+KkTNoJco1dsAddkBwbcGrXJPJMKG2hFW/9q9+BGvbn4r+tjfXGRkdquWssPLbiC + nYnlR4gMej+nfngX/hxN6VkW27UJzLaOSjk+zFsdJsJpf3/jMsfezkmPW91jknLhHqNWusden38u + eYWgG8+8x5xXQ9+FA+MMfJeF3N9/j03WQP9fJBKagZ75VEG6LOaUBTDBjI4WUbRdpqaCruCLXT/F + HJMWVQ2545Kz3Jiy486RBCZ/ff3aReSBuFHsd/aSZaRg3okeK5i10tn4kgLHBDa8xI/Kc2f1sEB3 + KPNFs+fcYfWTRqcYLsgjCQfqkoCuVYTttPRpZ8AvfkwhvuJTYUQL+4Kv9mjfx/fxQ2rZ/Pzk+B8H + ov2ckuGlxXb/cesgrL5tRz8uF993BFToyz4WCzoyDR/hr8XqLqVOchznlvHd59ev2TmCeTTCcM5e + slQp8k50pSJrJc6d2SQyzP10bXDjqgeIuutdckSI5jxgnizUalHO4UeVhvB9J8pROcuf0YSbHalP + yNoU4pVkj/nHmun/fAuXmA5XgzuVW+a4o+m6kR/uWaO9hA/Omjp1GXI6fxefgqzeTIund6zVeNmF + qcdTI524unxl/dCpZ1ShltsvU7NOywYahHrv+WR6tc6Ptz9+zybjvjFOr1WSyNHZ7dYz2CrlvUkv + f/o8+B8rqh2bBd9kSf6dZm+ZDNlJmn3kBCpzjrvvo2bVurJ3bHPnVBdG8pxsJB4/Qnf7Gh0W97vF + g+bNr/2DTheBBJ0o7PWsNCl7lehHolVkzqtQuYpZg7Q0etzWTczKaWnUKl3E55e8ZPTzvFIdoKHn + gE4dDTzmxCoxbTRJR19Wy6nmyTGCmwW06+gRC0wlMBGbbV88kcdbzJYbEfYMvB/eh+tcFNSSdjyy + IF4lY966SoETOp7H46cyHqIjE3XazQo4zwwr3WfzotMJYQZLceN6LKAcpZ6LhMF1kuwwy/vU6MuL + bND/NpmOJv1xOkseMYguoYL3ONFi1nEpJKY5Be0jYHBp4KqHs/5qk+7Gy7z0cRZkg4M6v754cTEe + uc7JQAww644iAJH3qjQKI1MWJnuNQKLX4w1bnfThKC6WX0Fhwj2Y5fyCZtIjx3lWqFDuIe2zm51O + mNe4QKspAUKEwvlq7B4S667extnWhlGc+L3fWB9V7zOZfC9Ij6d40Lu1SO3H8fXj0PjA0v60kpSO + olPp4WpfMj5yROTbH69v4EK3Z830uBVrlpQLrJlaiTW/+3Bdzhj2WSHs3Hs15G7EMa6Ao/ZJrPkS + U0qWK4wQTGazx2EehasmRcWK4rll/RfvZqPwJJ8HzWdKnEVE8mq8veB6VAE+76arcnYPUKLHMx22 + gPBezHfNc11D14vccrh41UcIxzarTDZGm1ldsrEfwbUWFK+G6lmqSiyKmG9Gu19dD+roZzcGTYdA + Pc+O/otNutjs+sZOM4EIQ+a7/1OTx6tmqndFLuxhVjk6iwF9zDRmebHgmq+qPnWQRW1v9KHmjmaR + oZquMGJAh1YvJLxqYZPQo9C/ZuQLm4rzLQATKJsWnl4IRFtVnTlzl4tB9vAsZDmrrhf3hCecdNTc + E25O6EFe0VdhEAG5p82gDxmrXrUTGoR9yN2ns6M9m9aKQ+Uiq6uq4RSO10Elr5tAFOaHdd/F6knW + Zf9GfhwfmCabcOaqQJVY2biCC94QDip7x9bGpbowbFyykXjzxfuL9ypiSvu3pu3kVNCK5caupbZT + 7TfyI3Wp5tF2Yjmz/bJZJaM2dYqPweSImKPs/W74rjF2ufaWrcU/78Yw+WfNtDqY8J0zT8w/Bna6 + SIcw9eMUgbtxPypGqlsdRaZ4+cWKtz6DTlNw6uqjQ69uHBEITODJDAEkPl+OkXZNrI+9c6pVgvxz + wOF6aovav4AjFaGJ1Cao2O7aru3CHdoRCHlHtU28II5c/aqZpMAN4XDN03VWwUejvL+aqGJnWTRk + /CZuBk+lXrG9YmQHxg1DbaQ4fFtupBqwcnkGTyJhqWDPMTcITnr7/oYURLFZLyTgwfYqNPcqZKwK + ldhG7T2eBzU9b10ISqCbR9TrJFnBPlvUBe0e3mMUJHj50Ykje6WUHrcDhCfKRUB40Up76/bT727J + YOgwtO2agPBDN/JgOw1chLaTBkN488tl/3fv5e/BqYRgFnBmy9HU0E1Jl7xd7Nyy7W8zRyFf+aUy + 30Emp1fof9zxuVufSRyGPK5QANMh1edczaYjXPJ92cTAlaMaBdPsINMA1QcYfQz6X6cJ/ZaSv8rQ + Ynl8sJPehQ6rXphp3Rhnfluh255Y5Qxn3fWDnuw/95AcHLq14N+W7j4dpSNIIR6J+8uYsybiklU9 + sXauxwNvR+K23zuP+yM0feKc9Qeu4RXsU4Se2KL974jIDnxpSBvVymrY60yw4Mx13NL6Fs77gAIv + UsRcyaXweQoceDG1DHp5mo727P+OUDgixjNEZe8iOnVYQ0Rl+ZI1orLqxERUlq10EY12WynkSL9C + T/3Ev4ic38Cj8A8UX3S78mYqgHNGExg2fCWash5ALmkIdgZUs/TvcTJHDKnjrPdO4PqxotQazJnT + DhsvdyBIDNF9g4gK6zT5ArIXlottNLQOXCe+lH3QN0RxO/tm+1n6YfYrALk9zDHsfIYls8Gk+8wl + w6Y2Z/sLWO4vktTCN6TRCPSpqzhBIm3bPgnpzxhJw2K6Q2mvPInCwR2P5ZsIVdzc82pvdVZc28uq + A3q+0zAXIn/Jujag6sQsDShbiVfPHjdLaVifTVfF5Ib6vxj0kbczqjrQXWk+HpOilw3hYHE+m5BS + TwyuE2peIGvhYM1VUCMbjDTHICSdlthL+l0XR4ElF09vqfqg/as2x7EFZkTs0t1LcUJDcS3nhYRL + JKwNVXEUy+AtBPkQj4xT4QzaE6Vszq4XUBSyuZe7gOpvSHh/lJpUScrn8SfHqrEsHpmB7HrqNgxI + Vi/ZmtKyTgxjmmolSXM+3UhEDONGH8HVv8a8t7Q3XSzwNswa8nxjeLWH7wtjGneIZznqJulEDv3J + 0S1dST3cc0jJRikYJNWZ1HwMTFrSPIVElIlqyVaf+Zc2YElwkbDaMW+XWMMiFd6yquzsJwrDyWmQ + bVofg+7Srv+6Hukkvik6DvLZoWCA5qwaiNIOW+IqbOCdpuQrS5TFBGpCh0f/XOC3VV21FxIrLrSW + ZhW6w/aNsTv/j9q9TCJqIHMZ3k7nnm4v2b89uoiMYoE0Qru8kREaH7c0QgvKJSM0tkrElcs/ijZo + FscBr7BBx5E/4Ihvtz9PfTwD6hV56o0BLmsQicrX4qAv46zwKsG058VwMd2KirH9F3e7rYBtWWGM + zTg96cOfx5tBXyCPLNBImkBv6cbEmowYM4Z1q1X6hOunXDTgYQdK5aIOZdILnILBuYJg752kkTkM + ETY/F0dlRqCMOFIdbpKZAN1eJdvJt0SUQhnvhDHsO9xxE3xE4MvM53BwEsl36d2zXLCAu2q2/IaT + kn6nFZuKYLeH9fKbCELdzbA656aP06kFI00x+HW0RvWK8PSXm+1wPE1238UhHYszAw/CthxSYKui + 1Hv3+2UWh+TyOOwdkQHXXQBOJ9ZPJ4qofupDcSUto2za0PlB/t6OrKAUrv/mxgk9e6wpetyK80nK + Bc5HrbIe8/Wt652X/G8x5q7ovC989Qt3kCsC8wtZLC2l15rJ3qi9S061F55zeyIs/FSzWcarnEng + txHlRN6sNq73eiUOChwOXVOBv8Lt2ochalRMp554uwz/Ji9ANC2JoZQGocIj3+y+wJwlZmCkH3lG + gRMNDjf2/Rjj9wv8WNO0MOtkO93u5HTIntMCWjCvK6JsdJAj+GbnWmIOoGBtFlJmbpFi72euT4+2 + VhZkGYXk9PMot1sUOs789qpwMZ2Zbosc7zOUw6RJIWexqcP3OpAsWUlhv4G3Mx9eWwtkCwTBiNxt + 2e5u1LPrBm428v3H9OBkKim2K4dit/hSoUTyOswenpKwXcARZShc3zCvgRxOj1vdRpJy4TaiVimH + 334qIUb5HroK9OSx6NUwcgMQVgaRGzGFfKh4HcLryaQrxZ6Bla5TEIPvZztQBzcjHSrwxbu31yfD + +x2B8Zr6e5rVP8pPGCIV9ldIGCPPJXqvkvpXaxjdE0r9zwmdKuC+e4y02hnzOsiBOpWR1SGRYLw3 + jQr/0eN2GZY3VYX/qFWWj/jtIy/hg7q+w0splj4LeOgPfBZ6rgQ2vM6qNg21OCm8IlVdhuWMu6Ud + PE5n20RY0rSyT5Vl+AI/rhNsQs+H2791qQYWw8eFpQCryiFWl2qIYmYzxvy44HSl30dkfpNeb0P4 + ciOvEcVZ8vCAW0+609PZciHNtCbZsFYMrSabJmMrsiVRcS/ZOSjyyXY0qf50U6f/pFUWdJzQ5SVR + Fu3OqrRpYRLrKmhUDyu/nQ8tjtWWzGVtUN81g3ElTe4c2kK9z5PpeqynSBX2ptiwAyOILrP7Ae8p + mK3PCqlQ6/VyjeixcHDxyVwpADKiYh9cdOQGutcjSkQdNBm2hgfjLONxMpv3/ePGXQ361xfwzgtk + Bs7qZCBeg1/Yqie4T5ZcGzkeWYlJnNsTJIJRd6IB7e+7EXyGPsXWzonADaqM+k2ldpf09/rzYmP2 + F+dTkKk9zbZkRLzijVEP5OAXVl2qyIjwyUqOZTkYii3ec7gs6cQyTcjkHbbyvKPqf9ecRptBIB5x + WLFbMK1wvvwKh0zVMlxjqL6FBPHDo0w8HrhCaNl7Ax+00/MoUhMxpDFC53V3pdVXtaO4X7dpSPrw + XurGOsoJIQ3jfTMmJ0eWJbwIEBrEahmny++PtUg0FnV52heuz0mF5pF+nLWgKgVh18kiOOML99QJ + GkZwypesIzhVJ2YEp2zdU9FFC4dYTZKFSQyVy1DinR4H2d17HjhxalGYNCgzJ7TXTuhxS4OyoFwy + KGOrBBn4+KaknIAm6xXNyUMecs/zBhzEJU/CI36SAfsi+bgSAUbWlf1FcG100qy3A2GUvIORDsWu + Fn6f/ou/Xw495wS5fpqAbCPRBGZpWbdZ6L2aSohpBdaUkNjz4J4M91iBpapeo4L4zJSadflRJ53J + pJ8+3g7vYJRCzFAoKkN1pUznAmPRkFADp67YenUPcx3f/sUE4+ZP1CIc6KhWvK7vSBGkNSxYsh2z + xF2OSlBNMMvzUIfGCG4Vkuh0WalxxAV/pG1PYqs06CVu1Etx0qvmKGC1+ocVzeqFbDbv68ML2WwL + lnwI+4fLatXFSuqYCnJovM0OJSWX2E1tM8rbw0M9dOjMzC1UCY3dq0THEntVFbKhKWeyfRVAIJ6S + nJk+dKCSPpc7YS7NLuibJAV9Ee+DzAcUO7FMQqerVutAXG61InKtOug5QlRc76FkoWrAwgvJbtGW + jJCztu2oBI5Re0ZuJ5AOlkfMT0DzU3l91JG2GmM2YdeHRmpFLiugXncFtaHOdEOx5kFuQ9KI9zt+ + sduhLosbLBPtEVZ1IWCaDuV31G6XOI51cuV7zpYU8x1uTNGxuNLMIVCaeeYGbk4k8B2nwtlqDK0d + ZHXLqD8qFmXMuqVpwebNJyzjhrXXfH0ExwBcM9rDe4Xnp1fzlQrlZvHise+esrBhvLh8yTpeXHVi + xovLVlKLPr++KEL6vPt8nanuiY6uZhLFIHGfMKtZwCia6isIqLBWw3k6JufPkYcKa9KJzWciMNwk + d319dPaGhWcTFdEY08Eh1G1zUfYmWNkDwjSnvf/jHEpIKS7T8TV9I5f/70bWTOTMvRi+blA1kV6w + rJsoqZcqJ1K7hJO4fm9GEHDu8SjyvGLxxGEYONwPB/Aj8GQIwQejHqnEDFZlSYWKd/N5eH1xkxdV + hK5Hw7u/dDkqFVdhIK9O5stlAb7vbroSJX/vdmNReh32OG4a4boqaAirBF1MRpAFFWvHxCgkAq3j + PkbdbicUcKHlomQekqHoVhDT3CbzBMP/B0W31tX59a+/bvpXX74w6Bp+4AjE+9s0XPVw22SFJrnj + k1NL1pBaLv6xOzK9mO4jEZjdv4ejLW6rokB1+GILGZkI1RxnnLE82dYEKclGwPJOHlcT2Olywq2l + xdClKKmbyTK7cjfTB0xzU5Y4+xFFnBx75m0i1n2DMDcNLyc45YJcCh3dzaawYaUiLCjSJjskVsia + 3NI4O5qupkijPPdWohoQkhVBsWsVsGIh07S+zfwgu82+wKPb5pmVMTdLnOOXb6crSxnV+u1Dg/BL + ZBbp6Iv1KGxfPzQMym3LpK5/5Oduv5jApRuGuMFx8YS+z2JzNeGwaYCsFZLvwbg/18vQLF8zt3HJ + FvWSNZ6l6sQEtJStdItvVivpEriU3lmRv52D1MmoihMFNAZaYuj64UlPf770OFwWQLf4CjzOBC4m + R4giwfip9sMWVGmRA4ii9zZdJIsqUMunjlQI4goqAy3go+TDtnHON6faCDPEz60aImr7mLvzyCxU + WsE4L5+Q5BmxB9PRj/PvE2ytvsggGn052BfhqCYzuHwL7u1X2Ra2cfAfS9FyMnlEKoh+tJrp5Yco + NIoNiNXOzWMDbjoJO3hGKVTP1/svqXaVAeWK7Pw/3t2AWmqfAUWPW2mNknJBZ6RWFXP+K4qKpsea + +bzgsY5f/RKEURCHgyByRViRgF4u+lgKW/HDB9B9ZrKM4UBBLaylf6VQvUQWAf2aokkAVLQz4dlO + +mtQAvHZcUqmApUzs1lEK1WoY53OpunXFEH1DYx0QWiY9UII6aS+nm++MKekuu47WB8+DLTPMXNF + fTOm1gxmB/U0jEqBv52FxZv3TAWot4nd6Nb54qIYlD9V1iX3Su5ZooKjNzQdvYV6LMY85K4+Y/Bm + kKlveDh1fMbWtN59KH512WH4Z9jMPXF+s4BU7pKH0U4C2ZcaZkdhL1ZkTJx37wayGdPxWRbiXB66 + LwvH+pAiI05QeWqqsfQPax9ZLTEWvfFPHb9hHJl8yTqOTHVixpHJ1j1xZOWzIMN8sS6VlKmkmmF2 + hDFmkev2GmzLQ8K1XzaUGBQHtNyZTaxhBx1CxP9podmOgNHgPpWSfpPtC+1Q1Yrdh6dQHRRKFn9/ + A+rp34fn1sKSesFKXMqoFwQm1U4i06ffrgsiUxjxmCEkrG5kd1794nosCPwB/IhUkN+FmaaowS8L + 02Y5fXOVrLfosdqgJXYLqjhKme9fnl+cE07XZrGEnbpRl0cCCrsZ1CJsnLs1Sr65uVrD7kWr8zod + MplMLMWjT8tVhXjUBVr0Zz1FJoDblzlFiUYvO2nmjbu1IYmRx33mFiQC7t+SygXLrCVRa19vSglB + XVq6OVIjBsxkEmadJL8uLyqj13v2G6In9rsSMUIQvRrVAN7vP2dUJZSoZAMTmCaZLcbW5gTUyJlP + gUzW5Cq4GYKx0Oep9EotutHedtCajQsl8/CWaFIWrguye9H5O0xEtypDW1GhyKVc7t9u3MixDwSn + x60uCkm5cE1QK10Sb2/fl3D9vagQCO6Fr4aR58VRPIg8P8TUI7wjbtM1btkcp2U7Sbamw/AORLQ8 + qnFHZb+y+/60f6vuVXmTCrCKt5sJIyAL+BdfSU4v/v1kLtxN8VuqtFIWwv/Var0BsByHd+jS3W2l + DlIY21l/Nv2SzmCukvVDKtjxxeMoWg0/71ZsNby5/w7TZ4iauftBOHozaWaa4YTImFBtmxir4NK/ + cCUnu3mC2FWwzccYnrjdzVEo2q2EEgj//O0/L87dHm4sxYz9yAmolpXnkKIjoK++P84E3PkzwAoS + Kyu4Te0+KNHDmUq/wW+493YSO2qGZVFnwHY26oxnVci4e46lnlgjv416ydZvk3Vi+G1U6x7NaU8V + Zo2qCFVyJZ5lzMTc3yVrGMpaVAbczbV4gx/kSsgIHJUa1FcRjC1rqTrSdVmYDdur7gfGQsmNyZ0M + Jjq48E5Zozps+UvWMNGqExMmWrZKh+L9SMb4mKq3LJXw+e2HDx8u1P3cs3gmdykC5R6SJxRpVWbt + T6Hoc0oWNgcJ4vR2Kr1YSKJk+PggyzLbJMw6jBLDbWa0G7vAExgTGtdUC/JCDsfCBlFAfMXcV85k + s9Rd3yNDxVFj87jDc0RY4VOdLjbS8pdd/01kVZ4VOgsifuo0K3RGr1jHHlAHZuSBaCPmMN6BVLXb + VCSNZu9ioICHp1waZZsCaGVMMoszjlzWOOhCvmP73aoL48Nlo2SQy7Gyz+wG/70YgtSVrtFYncLo + N6hvYgAGRU64TsidKD7pVT50C5R6SE5c6cyNiCFGdAlqr1gg7FuHyR5Hfj93jAiVIYsYGi1XQFz4 + OiegEC838LlVwkCDQRMyc9ZD5jTuiP5R/oc62wLcRmYcl062jthewchnVJpCjkn4ELSYwa5MDE8i + Fz23IrjWL1mZ7L2QJIPKA35shYDjaNaFV4FGTCuYn8oj0Wo7ithw6cqGwU7FhoZBH6t6eqTKIpkl + HYmfH6nBeXZLe17jtBj5jvU9LbswL2pqlDUU1quZNBaZZ7Cc5ack9T/mH+Oe7cP4KHZBgYFRIIsn + W8CF2rPntuCjiI3Iy1yoOb0fmHnzNMzYSgo7QEPC0hpTOUMzWDUo6dFMvQ1uarcgp44n7jDChLeN + CrP+0jbQpz+kk73czpNxacxxmsSl4eOWcWmCcikuDVuJw11d3pSwUJmPJ6UYlhY7rhcOgpg7sWSJ + V8mIaWaBPDSDDN5X4zUrezaXMwRvg7mR7gwTCsWtdwz6Pto9Si7MvRlmBnEnLkZ8DczSAFoHbe3f + VSPvXSjOA3uBxjwsp1YK3+Efq+1L/LI8aZKe3+BfgtUAf3Bp3b5NR97qzEicAub3OJpJH6MQFxfC + pZGVKiY/hmnyoYpWm3S0TkWQv5rjHm6RPPKJu6RoRUGZj1tkYe+ppPNsMz0lNlpp677sKLOmy9vq + yEzRp8jmrPysDhNDNRmdlJFkNpru5sdL154byQT+DJi+TY43VzXBrl+z8A1zGxqd8rcs5VmtG12i + zZuJawsN5B4+Js0ObG93N/1/uymwoWGGTT19wMV5wwv1DPVeOA+Y50hcMwXEILQui+Kf1pdvY8r7 + tR6fqoap78y+vFXsWRhGxhARXKAWosBeimtEtpYdeBGVc6xd5C4SyG2zGjpSkq0H1lLvVkc5yHxN + IAadOm4zVxO9Y+1pkl2YjiZqpCOc+zrVAf4Cd/YqWWyX6NHOlflSLVJJGp1IcJW3QCRU58mPSdMQ + nW8n6QIHkJUP2Ta2i/4AV+QTKIc+c0keEt7Xg0mrva7NLz5iBeErn84vr487fEiC7MQqmPS4kxJm + 4QJvmXPKGgF25i9ZhwuoTsxwAdlKp6UoPeqHAv6Wfac8S4P++9sbNlynIuHA7MX1PeZ5sSzPXghd + s4IYa2C2b4XZ1BUyUrMIPctI7R9iA2pwzf5gJJfO6r74Pmkm+i5uc4dbUPsh1XQ5xRW+/uh4DQBm + 6XEru4ikXLCLUCvZRd5cvinaRVjsuYV0Pe/VkLlhFDgDxmEQPjGcX9PHfroYL0eP8v4rIZskfdCC + v2H2rlLQSXOQMCJ4ka7LJDYDsS6bTAjcEK1csCsDlMzhjktmm6V4U5d2YSCKjF6jIzMQkA3nzTgt + 23AIWmC0XEsdSQCvy0Jnb3eLh+mJGZjuFRLWtKBDxOwFtauUtJfhJhgWnNgsZ2aU6/B811Fx4wVC + eB8X6NSX/dDpdI+QI9d0WUJvjQrGKS2hT81R76+wr3p4sDKkTubxnvx65BD67JQYRp3H2ImDSL2s + rGtrlDx3MxAad4v75WycDyD3Jx/soOd0AErSAk1EHBx8svK8HbxlujOLcMYdQ4FsFngTq9S7KAob + I7jLd2wT71QXRt6dbCTG/rAeM2m/lqml0wVsOOMW1iXEDU47tC3S7/Dht4vvvCdICFnQxYSN9sLa + 8eZUeysKy+Mq0Isz3y2OggrpSq7kIEaL7YlStji7QrjcLqUdus03S0QlQZ6oHQc7+bOCPnJ+1tJv + 5YdU6JsmIVmtknWyfdrIxEwUbAv4SZZYc3ccA/vZhWGKuxKDjDhGIhyZxDZgPvhQNe+R423XjPsy + w6CWOf1I0vuEdM9RQjpvkPxDj9sK6byc/EOtskbdm89xWUj3WFlIDzgw2QH8iANXOS//AfN1fnn9 + 8hz0nZE0NUlIgmLAFYg82eYbgKIPX7p4wM/MCoui3QU9d8abs8csHw6db9BRob7W12lyN53hEhHw + QIKS9ywZfcHVSArDAK1bsAMqoJdu45Jgvm/YBfSL2poTIUibYUn+haG/wk/EuCPkymmdk9WrTTCK + vDDwmF8QiJN0vbwTEttmNV2XcztjJ3BqBGMX9E2Q/ooEFxYkzTHmIBUsZn7kFbNbKwJfylD5IOcc + GGfvZ205E0KjdgsCdwTp/lFIBzBls+Qu25I41ke5J2WmUF9VgMPAcQxghhHdnn9kwsPbw5OZS/mu + qMkcgCworAPp3NZEvA85o7XIVQrnMRbXVv8QO1RI6RXbrgkRwZqrd2+DeYH9S1cV7o49X1N1Z8Or + QnLB3Wn56pHh6Zqs1EFMlRWNfRAqyA7Le6HAPy0/6BhKTwid3kndJ/wwl+SobF+kx/vrPUpV3Hen + 2E32URkmSnwRmRF/fPjoNCliRY9biS+SckF8oVYJcHF+W66wy6JC7jJ7NeSeG8dswD0e+NysQy3s + OpqoJytJr9xQrwk6T+bzZDZNJLR7QtL0cmzEa31KNuWyVc3Rs5gXwWBLhXO7sqBVGaWy6MSEkjEK + ow18s4yREfXlsdhnYQ5A3cWEnokiNjBcDCNJZqXqpzerhbfq4fKrOxKuyLhVmetDOtp+A49Leu7x + UZ7d+P+7qKzgcVVfnnH7mEp63La+PFIu15eHVqmWfLgt15fnGIdg1pf/JfRd+MMAfsTM121SBQ1T + SEroTpGy/3RTNspXmz/NQxuV6jwXDunF5fVwPE1Gj7OHGUzYejkbVqi5tWG8ZvnrqFQ7rFAsrOpT + M7mwZCEPghK93vW+2RqYgq5BGbFXKt5VYC5TxJBbwTHbrRERQBWtKirOm0EffocdCjxnNR1vCOsd + p44a4FcQAtYbQYAil0jYFwuV5PdwZh3HraN4AiizYU9+ea3xwU6OrsVWt8hZr3s3CsiiKCeFPrhl + 5MdPFyU9VpbelrvtMXLgEZQODI7Up+qD3phWXE/r6AHGMrlhtK6xXFZP1cHX/gTyMbI7fLwlB202 + 40/VaX02XHvs4m5BhyNHY0FVFAeC95LjU5Skm253wh+ZmWwf1svdypZJKSHDy+Ak4bdTJ2oIJylf + soaTVJ2YcJKylYSOZD2Sls3zm2uXk9NwKCNlcZEU7AT++WX93zMp9xwIsl4i/ovoksyTsCnMExJq + pVcSTjacnVmLUFIO8ijL6WflTCRAQet4Yu5EvCLNoGFvTxO7+FPcTcfl/7Yv9xFFYqLO1yvcjgdV + D/v1beQ1tyXbPMKzVSUOxWd8BbDmNgAup8dtAdbcMnA5tRJf+XD7e8lI4QkcBBNg7ZcwcCPXH4RB + 4AdSmXmvAzX9dvNWVbRaroH+tw5sDTVI3c+onhWwFvVKNhYTJhJu6yleWsSJEPBgvhynKnsLtYU3 + N4RMN0VD/G6TijoPy6+wYN914Or38we032Bkjrp2ydygQjcxzifB15d4Loar3TrH0wRSKRbhWGw3 + vfdv8oQvP/Q55Xe4eyTG/QkZnWJN/6g83mq2dyitthyE04FFI1COVse1ZwL0uK2jFSmXHa3QSkzg + /efXRSbAYmHGNR2tv7g88PxwAD8iX4oj76cbuB3S/nv3df8FEGJCSRYUR7DRxSFYpMkahIZS3tXm + RLKM99u7sm1S4eNSHK1YEONYhlEdBD+wH7j3eJFvXNbh4QZhXYlxg1LGOHLUIiUQvRxPN5lwZILh + 8pJVpkC7p03hAG+0tD+RLXlUm8ZSyr0TbCU20zSpTz4rzzyoP7hIZ/2bZByshq/XKVsNPz7Af/tZ + Lc9C0pSUpBAxswDaqNJbEUMM80uQC1zevi7U9HvPETZiImFye7g1Mt+hE0c9OUvi0Jc/DT5Yn9uX + VpWJuCZp0ZTUS6576v9EQYFKM1aEOzQjYG5kq89oWxCYooO0fdFA322PPlZN4cfU3/UI5vzXG8fz + 7b0/9LgVT5WUCzyVWomn/v7h2jdriIY8cIPQNyUr/mrou9wJnAH8EAXB90lWX9bQwagLL07MPDd8 + Mi9OC8mql/lMUDT5CYKEwlbzImUEcC+Zc+r4jWwA8h1bE4DqwrAAyEbaT+n3B+kbfJjtRsmizwZ8 + eAekhvj7cjMdI609f+u/AQo9JCP0fTcmOBo/DimIGSFvMbMDjSZtYc9Ch4wIQpv6hgDZx+f0OhHz + M+yhFoM6Enssl8FBxUSoBUXOC3hokDNm0M5S/oSlLxrjTUZUzDWvd3gsRBfn4tbbtxU7SElu183+ + L/B9imQq5TkNZNujMKn9NhS+oM2jCLleLXeYZNHYxNkNQHQQxlHdmIWF4gHVwmy8d8vGY/U4C2TG + wfboTGsvh5t2LtxmTDV7xzp7VHZhJo9So2Sq669MQvrqeTYH4vR7IKPD14Fy2b9PYF/mFVPfIL2e + oCowv4B39Y7FUykXewQqVBvmJg+k/5pusIrFMBPeO8kmcL2KFE6qyixsyclmlIwb1dLsJF6/mYus + Wij4+V62Hxvf/wwcaJnpltFFpu/ffLvKnXzcJQmsiaLO7mfJ1+liCNv0C7y/2c3ukSMCxxNwiu2u + HsnDfIqM//TRicOLBjWU1AtWCkZGvaBiqHbiXzfFEDNQfHkk4jx1JSN4NfQ8J4zDgYcVDmR+1Adh + FLifEq9BK94QVmO1ghM+IHdtsl4nj0MyKmqCkCohIOMhRNz68BtmGkxA0wTB/xHmMlmPJuJ6IM1l + MYNxj4bJ05XIeEa6ixsFcQy/qA3Dcih71zllTUosZO/YA9lTFwUce9FI6y4h/5br6aKn/bv/aTqK + A7WEBi3Xx03FusmFiwkGjHrOlDN4tps8uDZoJ8BExNjQPfji/OSX/hyx062AH/aEbLegWpmz2tIq + RA5MZZNKF1/T2XJlG8xh/faBQXhcJ7NCm2eLe9KKXPclKnz3fzdKnI1DTEJtJM3SK7bCrOzAkGWp + Tda4//1tDEwn+/tmlY7Q/9OnPxQlVS6+vPbpDK2Q3goaPR319MHhixjOwL3oVKAti9+vX7uvXVFw + Q4CuOJH4A8rMTJj/5L95oDDy6Qx9TUa7ZZWQUC3sHXhp75aIVdb6dwJYhI03FhF+xeg+3HnLxfCg + ZfMZSGLZzqUo2jc3rIl9lB63El8k5YLwQq2ystfnMjKpE8fc9DmFILkEmJ0w8AImYFrJ5/Qw6Sf3 + 91hl5LE/XaNxBjHTUb7T9Tj0rua3CmIm4KMJBqJtqgI1z4TnYpNFKQj36tt0i4W9NPlnusl8IkJ0 + ElRlFbBtBShqccMY4ghcrLXoGaEXOW7J/S26w3FUJmsYxHlUm67nxzFjrCD7TMoTa3RUyIlz60At + FPXeM1ypHu68zAEVe2E3Gf6Mzuby6JR5nE8yEpSnvTEhMirB5A/3reZBeSMzncr0IFqVDV3BZAV6 + 1OotiBps9tR7cv8L4ajMVJ86C71L1Zb7dNVUHKBsvzcpUdSOYF1EBqd4UnMnZF9sl/tVedH6jrlz + f15+iC8xtz+6XtQAc1s8boe5TZSLmNuiVeaHlLGlXMbQVlTA3OZ+4PMBD0KVtM7/NvD/NrxAcOfR + UIMPkwGw46mqRzjoz5bf8m0h80aqwJw6U69H51fXw0zwK42o+gLyQJiriX6Io8jhbjG9W/SS2TJz + i6Ne5RKEBF5z7yiivY/LbznnE2jZoz6QrppJLP+7Xs42ffIcpIKLmZbPZDTNaxMPYVfuRjA6HGs+ + xIFW7hIvLPElaid/mS5wjs77L65/PT9BT9LkW/J4lnVJJAsBFnIgk+nddLvRCzL0rjWQJdhbdIMx + cgCIUalMuSNdZWKKFbGq5TjM2nu0+kJTpW09Orytj3bYkM5gdlS53D+4BwudoCNMPd+XtQacmDWp + NYCPW9YaEJRLtQawVfK9m2teUWzAjcrFBoKAe3wQBKGQVESx3hXMKG4tKkY36Of8Sh6o372XvwfD + 331Rl/o6v/yI961XvMz8xCv97314Cb5saL6osRQv8D2nhk8xDPTlcSlUAmt7C0POxhx5NSOM4How + eNb1h+oOMk6ojBlGHwPEc6DfqiLieHywk96xE90Ty5sXCnBF3Ch2qZteDozW6ibPxFhOCvi8TW10 + uNkoicRYKkttuQNrG0lce+fgicJZxabGJ/eegv2GLoRqcgmqad9WH9DtJFhgHnM8TxHUZGoZr/M0 + He2TFCnu9uNHULHtOSY9bsUxJeUCx6RWGXd7e80cr8gyueOYVhDPe/UL6KleMIh9hhrPvhCx2Qzo + VwTf/4XcLFnl8VV9FP5ZNtPTjUjXTxZ5xr4EsTn/HUQnxdBijyJRY6q5e3RdwtzrQzGI1x8d5jXI + VBeP22WqE+ViprpoVfvrcym5w3c9XspU993Q99wB3NVBFO7fX6sZ0O88uaMY9r0zs8ORC//5kkSy + UEYECu0dH8rV7gr6OdGTfhY9yXnYrDSKesU2dlJ2YIROUluxnEK6+wJvLzVs3N7eP2rURcikK+BA + uRN5wtyBdTpVkDyWMirWWS6W2ZYOwOFouYO7d3yEx+sHhQOqNRTBWn9c3DhRYM/B6HErDiYpFzgY + tRIHu7i9KuN0x0WVwn/1ixtwHkUDFyEAHRNDRyRXkbk4MQ3GH9cbb4W2lJHQb6UdmjTU2W5zRg8M + LzZztuoDL0zXoOjB8ko8ZbgarhL8E9AHDT8VEhpcFf3xbo3Ci3JCfyDDotCiQZQRUV2pHpe/SR/W + 6YNKpIBVuzOt46BrZOkVsMnWKYpH8pQLrixGWJc/o3VkcCzXjep4qhtEsR+71bw5qUMdDPbhd2uo + QUWCONfFa8OxGlr37L44v4bDwy2BFQ50Hct3XO57RQhEGVCxhG+sXnJDE/WZVzRuGX0Yn59DGMrd + YdUBd2usZ5jo6Xhwj/U+0bLoMYr7D5EEVqFz8bMPxRlwWlAV0eyyRr8vDj+dAc11CoRQE1gk8Ok9 + ZC6ZIyiIqPKdS3B/pXNmC6LQKgLFc72YF8XP8XpnYXFTFHB9Vf97tkQDehRccXgb2/l7fmb0SkhA + 5znTsXTF+AT2slws4Qrfl8X+FPmhAYUb/sdHFjYA4qXHrW5hSblwC1Mr3cLnt+/CEpKdGxeSxN1X + Qya01QHDoCfpqwe9K8n9Bqh4ZdnOypAOezwRji6sXpA7b2cpLC46GJPZapIoUwBdeOebh7AzPztz + Qh5HpXTRrq4UEDH/sZNnRHDMzK9wv9sU7xgn9EyN6Y1WKcIH7czz8uxzMZF5emZunxd7Kum/yzce + LHoG/XG7TT0qLoqOhXWK8s9M5ebgCKUghOM8y4N9cJmG2LaRnglaPbVAQ1qgHm6WTKsOnaAnv0qI + n4emoswOSvk3rb3Gru+IQ4lx29mbm8fNNm0YAf4M/M9KVA+0ENNzxk6dqGGMKb1kH2QqOylEmVKr + FL//qw/zC9dtocbC+fYB9KhE/FcUqkMjDN68gct1XknuNHwPpqU2hOtHFdzCuFVxcSU7UIgnyUOb + 3KVnV62h29Q4z5UYQmvYRkvY2WMtuGBQUQ3iSEX4ZwFMHCrgsHfJ0MhqvP5jcYO7K5rwp6lkELga + mhc/Zc1sUfKdBlheoosilBc2SoFoLSAOYKBz+DAd1EyvS2P3lN4jWqic2BW8NIYbEiepBV6j2u6x + Ewp9whyQCIlQ8b4WiblPaNk69FKXhQKfb9HBztJ3I48y5MSWw7VuETURhaTNqr0zFHtnKPaOJX37 + SsDt+zqQYNshriEl0lYDGqpWYS0BcX2N9ThR7W6EZKhYqcOoQPLqcT0dL78j9s7hajZ7uakCYHZ4 + E7eWeNwSgFlQLgEwY6tUR2+uS+qoX1JHo1e/BDz2XWcQeE6sgNWNoOMCnI0GGSi1zPWqrGXe/v3D + y9tPb6viSFjgM68mAiMO3SAO6iygQhLQoMEqiAOnMwst6sF0jhehgtvWl4b6O/PioiaMWjueugMe + jn0RMCxw/RLAc9XoK0CWtHkpQCvVAUApir0LPbjlbgkaJyq2aglRjb25vajuSi5BujmTYJqyZHBl + Zcb6rYSAnJk+DCqOxDuiWqzpBnb9bLqZiJAwLPaSmydxxBoeEqZTblNkfxWi3r5CKpxuIm2fFfCU + Dt+xAfdz3petdkP9CXQM0gl0XM6Ch+zy07mG+9+0A5LLRXLdbLmQZgbxYnnjrtCEiZHOViaDwCfa + +XrANskDUBoN1OOOJ67q88/X2sdW7kGbwXm+Ryjfe2a2TOgo22zn3mnBMPGVIlO1XBXLl/fiFftk + ShJ8wNquK4NtNYlEWgufFHf56aLnMynKIcgB8yCeF0qs262OS2bzYy+Pl/vCZ5Uw4qn8S+YH/qnj + NitHr16yzcHMOjGyMFVruRx9stUKz/fq/2LQxnxIP6Rk65AFYk3JsksTppJtmsmBLmcVTOJmsuy/ + O7S4P7DquyXeRQ3OfAuwDPEJTiw4gblOy+MLITGHIk8Lk3yApi0MReBne/81O3WagAqoV6z3PXVg + 7nrRRgL5eryS2AJVR7pXec5v4B2dOGx7tAaTKfinyRs22JJPK8eAZEjaYe53MaevqTyzB98yzt2h + iY4r+tIyo7mbU//jpI6OkC1Dp2J3VlxfdnMI5DxjvY+4KJvYZFwyCPxzuhi1KBoeRGEGyjc7go5i + YkEGsngenzLWrNCCfMcaZFF2YYIsUqNFqGAWdCCRO4i56YTRBOv5wgTrMxYYmRHyrWNv1+cYN9o9 + okZAMdP/ccPcBlX76HG7WAeiXIx1EK10l/33Vbm6l+tHUSnWARSHiLuDIHDj0MsiDlE6wwtBBDqo + cAGyJv33vKKuV0fRztZ2GMG96qrlwXd6LPa6i4D+b2Ayw3vgCunaymwiczEzY406PGioKVVLRsB7 + UdEWnqbwM2KhAuQE12Fj4mZnxXMI0Ophvfy2nQz0SqwEaEXVZNTcbno3t28zwGoeRWjA6VLn/jPe + oDkutnA0iMpgHYJE/3mvszzq/XV86gTNrjP5jnXcu+zCDHynxrKxO49bMNyMWStsjuVoahg4z1cP + 3Hx6ReDBzHEpnwFLb+IM2VTtPNYBGQTM1e0aRlxIByiLzykwxILWnyke5HjR5acIHxk2bfQG45j8 + ZsYk9ZKtUp11YqjVqpUO8ERPwiqnrMAd9aD9waCK+nTge70WeUfHTGLoZFYJJ+ZNAX7lO9Z2CdmF + aZigRomK9ub8Ev73HsSJ7/1JiuHc8K5peUd9S/2p/36UeIUQi7wfZH0Bd6SNIhBTuj6UnWx/+G0p + 7o8gd+noZkVsQHwTwpJ1LPrPUzgORWd3GX7RCWi6wwKtRMgRIUqaINSZTBVSHOXN0TKV5zgVDirj + mHQC4E6OFwuaB/werhrtsTKkQykb5ve2HFdnyB4hU1l4XmCvE9Pjtll4SLmchQetskjc1btyFl4U + e8UsvCEi+DnxwMW66zIM+MpQ2yRXyi8tBTqxmWOVCBmhXijtrGloQkG7LzvKkURJQRTBmUL1/jB/ + KKve5vMzFCu18algeTMvLXBrwjuYy2MXtmJRMdeOAN7bWJ9URiNkDNrUzgs5dNcfBoaGrveSl9rO + XH511bU9ZjfwFiQ19L8wZCH8tWe59jT1na99D7dtnt/lYX4XR1RRoegZL2jgSsbhzDH4n0X56sAt + D71u35Zo73P7Hq58tz/IzKd7E1+XiNKH6n3WWxdCSvGyODhWn6i4qAgC/uPqI3Rgz0XpcSsuKikX + uCi1Ehf94+oyKmF9BI7JRT3BRfFuHLiO76lkijo0hvkM6FcUhIK9PFmDOj5aCo1eYetrBxjR+Gsz + ov4EmAqe7zDKxofvEEJbzTcfFOK6SNILeZZ/E8b+qdPIkZG/ZJ1/ozox829kK223eTKuiHkEbroY + z7R6eKNJOvqyWsIn9ZCxoMNDPZP/KZubKyDaQ8oidcdl5K8NHbKGUj7LY+WsH6gXFYSKtTVOmoW3 + yfWvxq8NY8/nljupj6LzGXdY9oXjKR7vpvzbZx7FfS1EwuzXtGA8zm1oarJn0wd7QDny6IYqzQ5O + DBq5tVRdLRm74fwC2cgkWwEtsJd8d+Ww26mYTfW7TliDJ31aTtQAa5set/RpCcolnxa2KhSNT6wE + BASSkFdyavmR73BvAD+4f6AW4T/W0EHF1fMXAprq5W4fz+/9fBHwGSWchn6h9kGTrCr1SqPaB7yi + 9oG84BAODo4zVZk1c6UkVNhJr+qPmZVPTFDLJ8RIQ9+BUY3E0/ooX+pFEDwyznpUDAH/HYubgWoe + cNxqP67uXyTjFMrf9vMSZdQey4JDAp+dskbBndk7tt401YXhTZONe4zxmrlrNUkWBik0F7N2q9ny + umMykoyEoP17QU06hWB8vOFObH9d0eN2sIhEuQiLKFqVuel9KQQDjoVTBEUchl7s8GAQ+jByZoI+ + 6TKv0ASEG0vLQpbQMxvNR3aXbr+l6UJABVJ2bkKVHZP1VkRsCXz7SUoxpoQcnUwXiIgjWoYGkMKL + dzcfrk9kDrzEvJDCwYbAD2Q0KAzyfD1jq+G7z9fIkSUV0MjmE7bClqzPzJw1qUD6lifeRL1w4xod + j6Cyw6e6dffUJTSyglhcZ0VSA+z9tZe0h7s9U2q543RTZKsliqVi5h05lMU64ytNylXWIRLBHIkx + yQKCyxIKiMVgq0JxOqpR2RZd4KfFwB8lQrSUTDtTskTgzR+XNy6L7G8tetzq1pKUC7cWtdKtdXt9 + 45bse4joZXpJglfDWIBxD2LHF5lgAv48XVWlGMqQCmiR6Gm4nc0c1dvV2o1Kl8FG0OuLd15sQGnf + 9Y05OTF1H7hNazIpozBmHnPs3Rpi13yBxd4WkI1816nDWDc6yRNAq4uHI8fWfNp6F1h2vHEX4haZ + o/hWSdOJHfcAzd5tvio51JUETFMeisc02Wz7F5cX/CVzXjL2EjRyiZ+A0Y67cX+Rjr5Q3c376SwR + t5MY0FmG5SZXNd8VcAGJAjECKsuA2MPHlZ2K8JqSzWi5EaXxEMaPTp/Ys+rycQOXwJpiAuIW829O + zF4LVG6OO1T83YpGK4tiK4NdTx4J9b7YIdkK6UfL6lsQ/bea1I9U/jljBHslx9/cM9NZsANyAjES + OyZiN8nPJ4fS9ym5+13jgAR1mcUSOZzFzP4yo8ctkcMF5RJyOLaqWh5XvASx4GAyogmxMGQR9+Ng + wCIvCA/4qlYzoF9hMGyHHP48DYYBY64yGP4M+O3IUf4oPwzQItXIHSXfsfVGqS4MZ5RslGmBkylc + POMl4r+t0rWsxd2rbu5/Xn1nvS3+B51Mfihmknt+HBtsVFduxKvCqVKn5tQ7dzzf0+DYxHjw8k6X + wGQqnVG2IU6NCe+90XxZTUl+6nKhFd5rIGw/y0yi54ur5AUkR2jb8+g4tS7y83lI0EHVJ6dh7Sng + ovgkaMJTQQHtIUcafT1CbEMyS9qXx0+Vz2KSdOjL1HceZ0SOKHzuw0fH5faXKT1udZlKyoXLlFql + PfOmXOrWFcKUfpmyV0PuxDzyBpyR2rjvMp3OgP5f2/uGyWN6UcqzzIy2URa0NzdnwJRQTSF7DjBV + VHan4iaAZ+Dx0fJ+toPd/w3hcwagKSWE3C8ShhB3fK70aRSKiS2cAR+CI6Npb/PlDrbzr288SkUD + CTxdq7/994fr/ov/vvk86H+4+TycTb+kfWmyPJEaXu8PeFOJBsyN/GdUclZwgCx76kcQqisy60i7 + Xp6D1XQ0JHARfh2ae8UNAU+s8fzsZjtr4asRiQOXXxTX0/qx2J/a663dwI4oJ+uX17xhOdk6TJzu + 8vp4xZ5qOMi994srlTWX8SZlnvBxS2VNUC4pa9hK98vHN+el+8V3Kso8MVDhYAwMawTEdL98XC6/ + bPpvvo9SmYM7e+wLFva7ey7vmo9pUu1taqa1gfLnuWEZo47q0f3uFlKg98C1RyBZR97TFWQ0Oniq + goyqExOiDqZBzMcZgrStd5RIPErg8tmQuA9bUj0jrX5nmcAIS1dwR11tZrh06Dn7OiPPWVUlDCCh + SqppVsvJbp4scB/8TfanfN6433JFl3v/LgR5+BpoXwgyoHSZ7Lh0ZUf4IQUf97huIp7BMzPHP3WC + ZvDM9I41PLPswoRnpkZipqv5SIreZRwWFAnTxT+hRaua+uL66sNlnzmBC0vknfQsX7vGforvYufC + 6BHH3k9GQmrUARmGGwMVHVRRuwRDMnM54EakaDzhiIaumyAPPvvY1UzS88ntfru+G1Z96X6EosyY + 6GWoBr53ypxmoAbiFWtMA+rAhDQQbTLSrxBuBWt/DQs+RjlWWsUkqyrCpEvKCNETyxReR2ZKVl2J + LWxUgashaKutmhX9y70nw/T7iNxS63SVTCtQP+y77AaH4Uf3dyCGJaREZs3Mizgh42SeYLrYdgqa + +1FZwpZ2+e4RBiIq0v7pxvFje12BHrfSFSTlgq5ArXS9XX36XCo47HHMVNV1heDVLyEPIscZhKDk + ea5M5Uw+LZabx9lnLbKTVISrxdZ7OlsUlRdiAz6c40JsasJUTXsS53X6g+O7zPdYQbz/bTibLr7A + 6iFMEPZBy22mPMYHiebFifeOeiBqEhuZjurc/DY0RtDDFcsKyXKPqtTJMnHqHa0mQ813HBL7nolN + AddNmKTtltzuEuwSud8P60gVkPvV9DeD7VeMgmqTf/roeE4DRiEet2MURLnIKESrzBn57V1QYhRu + EQcNGIXvcx5GA9/3Qu+AB3gxA/qd145+VkbrPD8xlmZej+CL6lKMD9uwuENxiVsUdMVJT0a1x3qP + XfTHOqKFjN1VwEhbiAcWRISvUUipG4hYKCSXzeuQpnkx7qtgPLFTd1jYtNkZDjM4IZedsmb4vPSK + NZQQdWACCYk2qdOulzI8/iGZzxO4YOCSmj/qtUByn50uOFs8fo209XewMxSzucckUo4fqBhiuJpS + y6JEDWTRY8jvNxUxP0ODayPCRgHR0a7n9qN71oEAP6fYUmOnvrSq0MaG/Tz0h5t0Pk1m43TyCGxK + /BCFdzoDu+moxx/ohUfkPXzl0/nlkYFsEUVlv79hfoNANnrcSoyRlAtiDLXKQLY3/1WOymaxV4hk + c14NeRy7QTzwsARWvF+Omayhg7+28/06h2hRr6ixnPXn21EgfO2Kkwnfw2Y6+iKruo5HjA9Z7+rz + RZC5vRmZNJ+DoqG2p4qzhDVp4rrDxy1dd4JyyXWHrVLKfv+x7Lpzcf8VXHdYKDVyBqBixoHEtrvR + tccM+6CmgPoiTcfy0W/T2XgofK0ybBzWWIWMA58ECWK6yEPtKWT86zS5m84EDxFH4GIya49l7MNO + wHLzhd1/WQk0ZqAkBaHpV7u6NlCSnJhjCFFVQaly2XIzgcCvy5erIZphZkzRF5Jh6KPUiJhJJfqB + 9z/V6W7ZbPQuMnxH5UxTan5mL4A9n5WOkl0P867RmIi8WqYD3A5BZkOTA5C5E4ZeY4bFidVuLKBN + nr/X5xfv2UBCK2fwsNKzuN3N8c7brUQqAvzz9c3FOTsrPZeM0q2pvF9s78NVDzd+ZtWI3bhHvsQ4 + 1xfuyExCZatgvga6HoE708DKayuqdQBh4hOB6l1mJV7h9hCs8eCmKpHbUwGsBdW66IzQp5SG8XKB + u0BMTONh2dL4yaWqni3OY/tCFgHhulQzXOvNABITl9q55gawJLofiLIziMhu0jr+mjiTuY2ERdWE + BlQB8aGPMgHu2GSBD8Ex2AwwpkTWaV7vNkOZQC1MKtlDzbSGOIcQftsYWIResQYQflsGFqG2Yj2Q + AtTy55trivQU8TkT+IZ0prz5vs9DkNZOeqsvY5cwg7HmtPNcQj4ZwaUls9F0Nz8yWLMpmQNDCs1c + O51oXcJE7s5XZGKXMPxpqUjCzXMQ98Ig11Wyb0GzbuKOp7iHOfm+Q7GYNdGNja66TrLgOwjC7SaX + nW6QIkRAYyphUec8SLHDLPkOdV9JCutC8yKpQ0teQkdziQfoPPDYG9olbFN18g+Tqy2m2ZjSAdGB + cmR0lvQTckvV1UjJLL9+ZGEDcB563MpiISkXLBbUqvyCf5STWYKgYLHgr4aMOV4QDxhzfYViWthg + aiYqNNA5Oh5mU9BCL85vr8+q9AipYL777Zb1X4A2vRSzKXFb+ptFss56OAFF9eEBNGb4M4g2Kcos + 9FhmX5NmjeVj2axRGLUJnMBNe8E7DVfZc+PILQFCd2Xbo1EpkNNKdB0vYoWAhYrh9Z7vovRwr2X2 + wyBwu5GhYsVD18nQmEUrVJq9rlqc8PzSKi+OjX7c2SVsS2SPjt7JJfwnv/X2mpBjCSt9w8LA3oRM + j9vBShPlIqy0aCWG/Obiyi+hpUXcKcJK/xIw+Pp4EDA/K1j3abkYIpLIYjs1YdmLNn8NGQu015fv + QINV99dmusX8uO30vn9uZuOl3yfTu+l2kwv2X5cg/6X9nYDAul/u1v3tdA4z9bBOE7RJbeGyzu3T + oHbONkuJcA466XKF/d3txpLLyCrvKaFpbCQPfzOa+09VZq8r5t0e2kYHSsNyTZhJ8pdazR7u6yyY + JhRl9yygZZqZfBsR++uU72tpN+wGa+V5Ve6LuTI6ee9540Ly8h1bs5PqwrA7ycbqOPcyzGhOBWNt + giD80ZW+4iwrgIUsgpE0y9uhd6zzdmQXZt4ONdI1OFmqGuQThLdSII1qj74wPwj5X/p9e9LDkCGs + zjujtJOKKojvgXAPqYvcASegxJyQkS0XHaeNsTy4ExOWSaH3DJhLCrh7oN5bxq/jCKKKERzU+a24 + h3VYzL95USUv8hV4j/eOnzKnGXiPfMcWvEd1YYD3yEY6WevJSmUA6BCsuGaUuNLL/5mtww2+1BOv + ioQ2L5AVQ11KhNReaai/uZHmJLbLo9mj4RxD7sD46GDNpxs4y6PJUYM6NvVlj1XXOfSZtQlw9nF4 + T13/7yhmdMAFGokh08yOO2NrDaju5QSUB/DuI3MaqJf0uJV6KSkX1EtqlQlDHy9K9j7GuWuimsav + fuEiEnfAQa5W2XpzEDEwTGUqsI+vHpfuCv02aiokiIuAQlynD7kZ7mo2KpvhhAuyP0pWCtD07W7x + MDWATDkqCnUJ9zA81/VZSaUzADdB86lDDHCYF9TQjkNhpigoeclKWHER7ZFqjZsKHWN2Q82VRrjq + scpKGaGUOXVBRdWU0C0jZL1iTbcoDpuNKYtCmivkRlSmVkt5HiygZ92IN+tyulnCcYG53TOzcTOS + ZkmO6WKSwuhFFmghTJLVIMHW0P2ajHZk2ayjyJpSPBJWvWIKem8yU8Fs+jDZoqcEDhhGCMJJZatB + VbMLxzI70RubI33WL2JSEPEP/+8Bf6DJg6ggXNNyuR5j8KGGUSueQHFd3ZESdQmzfOePsIUlFCtF + pYna4Ok4N+eN09US8aAwkQ44WVbQxQkJtiIma7J+tprc1PC+X3h/kI92ltLYDLne0r8eU1BNZkPO + qp5bk2gd0hYxqgOb1aPSsfBth9EaidePeRmJdztdWaq21m/vF07sMXxrRtENBLBHQYZy4zfD8FWq + H4sjHYvfQswKSRwtXI5NFbVn4UjNJsGL9Jn8z3oqFevJXYdH2tuI8ZEmXx8lrzxmQJ4bEewKcmyj + xMxxjmKVeeHwBo5ietwy80JQLmVeYKsUHG8vwpLgGLlRKfGCRV4UhAMWBZFTqOJSabt+WGNFD4Hq + l25GOuTAi3dvr0+G9zuK5DG5Vg4aWBmUctafb0ahZGKbPvopx+k9hqR+FZ5J2gU6uroZKp9+TfE9 + DJ4mBKUlKDBZiK3yTVxBHyXBtjpIxkyFjWoTz5/YU1H9taa4xVmt+Okz5nve3nSSP+eC9nB7Z75p + uCp7cipIbx9NcQaTWQ1x6zu8o0zErnIGjw/ral3oI78Cu8hxU2wyVuCwvEFtRnrcFhyWl2szUquM + p/m1DN6HUBIlcFg3wgEP3CiKnZDYpEBJyCo+w9lSMwuiqEi1+NVVgS1fKjD8Kp5WEoXBI2K/Dosv + 9tww8ko6dQXhSpXaCyLXhnIe9MJe3pLKM1W6QEXRV1PFiuo0oZou3JdXjbuoNQxUdiHoFGNbTT08 + rFOKqyl2r4Zr7uXKHu+BC48UnJgFfd+puySq6Vcgm6go82poliBqtJP2gKER27hezvoakpjRGa89 + EHDdAZNz/KN6+1DfX21WWl1/+w3HBvU4rA2DUNR754LTIKTT7FHkEOU8B3MX8rPugkrfv03XLz9P + 1kU+IFR0DPXa4AUstqg036COL/L3MUeMckzxYteA80TsQBa1AEwTOrr49TUTr8I/4FeB05wsHnFw + G5jjrehnNNuN0+KUC4gwWRYHRmEiyG16yJNzuOY47ElGgpeLHQtqcqUJBiJIW7GeZqR9Ur6N44pg + nHnQg1yk4ShZ3y0xYwPNLyYpW5sFnAsSfw7s9iJiXzVgX602jefhqH7qoAHre/KoOKoFN3pyeodS + KLhhYCheL412zdH+pypd2XHIxHbgjjq4y3pSFNHnr0JysRqT5xGd3z9fDy/sXu00DdALyFFc+I5j + 0+SC0LDTbdL1dJG+3E7WKbyxSA+Tr9qr7an+CXLyWCCtk60+pruax7GTFe5hwYV3yvxGvn/5jq3v + X3Vh+P5lo/T9z2fS9a/5SGAt1tM7WUw12x5SIsA3erYPf3R74nmMEOAu61kDZtmjA7WF3+IYXiVU + cOObmtPrLFywfR15oEFJMuY3UWhmvlpqlY6ffT+icyFpNo38VsZ764HtD3nyKcoN6RAHz6BKG9fC + 4xI69qabeAEbavvjGEJyMGxqS+rVL0GDYR7fyY9in0wFJXpOfOp4zUrGy3dsgxJVF0ZQomwk9jmf + bpjkn4bzTFVkX6F3+G45fsyQwEN03UYnPXQmirOZJ8z0r5BaT9AUsYieBAn/4dgV9R7HIFRspXFQ + ZLuQSpg1HhRlVhggflBVVsdTeSudMPTNqRz00aS9RoRpYS59aM6ugahQG+C0gY6OhV8VMoy2YvqO + sRLwgGpsUm066EqqEkVAjfDqwy0DvfbDp8s+5Trboo9nBGO676aLBaht+leiDlExdslJDhUM3ROs + Vs4tf/IKeFVaCguYeO3T1a29jtJBmmnsuDLszPVYk7AzfNwy7ExQLoWdYStxzl/Pr4XLouA/ZHFQ + CjzzfFDnBl4kfOPIan+FzpZ49qeLgeIHU9wLGMSi9uV0LqJmYA/drrbMXw36k+lmC7xi03/vEgDo + e/c1Bah8SlZoPSdtHSYLfsIe2EyW3zaFFEnYaxuxMRE3TnUyXWwG/VWyFo6SZD177F9sUiRo3AnA + 8WCm5kAKHlCjJOv9r9A/qwDYboyb6/AIVCZWqsHTND3KoFO2+4+SNax5XeUd7joF47YJ3qXTLtqD + h2qkcvkMQ2bgBAUbcyXh3l9nf/TomGRRTS5zyFZJ97laD/ktcNCXaqkH/fFy9KW5oImTfIC0vbzQ + PpeXDKemOqWGdiRV5juc6Z94JB2fOS4FiaBYfySRwHecCo3RGForuI+fUckkIIU6Q7erlFie4EJt + BWbte5FYzSMTTLisaLp/4fZWodtbF9YP/Mo9e2xdu9gRCXF//MdHFjcAx6THrWQASbkgA1CrxG59 + /1vslHzjblAobOe++iVwIo8PYFdGkSpr922Y3N9PF/jdOWy1UU10DJ+vnAfwSOQNxI+QfsTiR+wQ + h8d/MlWILQdwBgKTBGExzwruB9gkGcAXkL+eCirXk6W3ytbjrL/8Cl+eYw/Bz91sK5xjX6cPyzVG + nEgHGckB1zigkhhQhUwhcu6Ny1C7CGF94zAu395V01R5hzMMJykASwz04GWjh/wOL3dQcHuzsEC1 + RLH3F1vZntjk2QUeUjW9DoDCBIPeLMftwblICalavBKlajiLZwAAIeGKfGNSm/PGTESQ4VSFSWnI + 0CtmSzHfPLfWv/SaYeBl71jn1souzNxaaiRGvJnNpWr190tMF0uTLESvN5muk+zauYUHe/i0sE8x + N5JF7DRxgVR0uJZhrmZ2hcr/JFXw4tiM8dYtUcCtBLg7ftv6a2OzWkfmOe5V+OdtQgzqwxObZAjU + 51GwwCfHuAqwXPTnwLqyypKNVoI7Hrlpc2Kb6QxuFAFFtKVftn3xlwcJwIf7cbu1/3LMcnP39JFZ + z+xJohnjYFhDo4nwFONsHiiRxUkMsv1x8DvI/Bn55rS0tKs9gfrxIyu/qZXgLjcOyjEeJ7pyzNUb + ge6kELj1i8bC/tlFFgXcqVF5UHK7Nc8VUbefr7A4QME/ZQ2xOOQ7tlgcqgsDi0M22mNxKCroLOa+ + wuJojYL5HCQntSiBWpRQSAbNFkW+Y7soqgtjUWRj9aKUkHrvk/l09mhQg8VxnSjuPa8yFLETZiEf + XgwjjZrhPaiXrIM+VCdm1IdslRAqeuETJenVgiEbVDGUA+ZHnoCY8qRItkB5+JAHQ81JlGFAh+/j + U9akKHT2jjUKtOzChIGmRhKAt8u5WxkH8/m3q4yXZyp5r/4ZFbnwGQn2BFmxLd0w6Agh+hlbRDlS + 0unoxmNzzkB2wCUrkbeNVegIELn/o6ywncT0eKxAA2ZmuUMd9GgYZ68iTKhAkiKhlgLCvjWGyHNg + yw4CeVJ8JjCmdNUm6VVCzG2mDwsMhEtHy4cFBXeTv2e2J4LUes58j47V9fB6eAerNCQEfxDbNkNY + sq/popXd+bmMY6/ImJVyCjz7RC563LaUE1Iul3KCVpnI9fcLt5Tw6gtAWLOW09Bzo9AJBp4bB0wm + vF5kFcNAQUu0KyWrpnCR3iNewkqWF5499nUwJtABhsLPtFnNpqiEnvUnSdH5mN1vF9/u3XClUsO+ + jdxyUqqgI401lUlhcFPVIUywCH3xzjOsavYzprknNkZe60iWheUxhUoJ1Zs+4whvrEf1iNWxul/O + jnJOReLc6h/W5PJq6Q0kQDB9wz0Bhb1R5C3cgjwks+IK7onp+HE2xDSmRxB2gecJtoZ4NfN2Racj + n0CLjyUkeSRzCKv4I3MaVJ+nx+2wiolyEatYtBKP/O/LW7eEVey7YQmr2GeBh9XuRL6MjgiwnSTb + fgFRJre8yXOwQRMcpoNt05kwwg2MU2xYK8RNJt8/w1s5AeaC7OG/xxumeCT82z0OU9gA3gncIHwy + tih0rOQBp8FIz/eDuCbz0hzRyqiTVzZp5uHXmApkImPVJo/WdPGU+apRBHuHxznmwBNvGVBisIDT + Vj6ISYjSYpp+B01vkW6/Lddf4A/r5e5hUrDFXoxHzFsZdvPyJuzhscmgkP2Q8hEZGZfqVgsXydqO + j5sk09NpD9lbwjvK71L03IhuI3OijvYwWN1QVbdDV8GUTIakn19H57ypNVO9Y2nKyLrQTRmqkRgp + vK/uKvpZrPl98AG9H7R3sjCWdb6dPLmRxP5mKvDRl7DHCAdSBODlgz42nc4lzA1KeCMHkTDhWhC2 + LwjdopMDULac5wJJO0JBcYRtibYvVqcOlZvZB9m75kXi6B1r+6DswrQPUiPJNdPxRCpyU8SPFsnn + hZLeLz6dX/5yAlebtACykyznIw591w9PeofezV7tf8D+iq8/zHZclJuLZF5I4BDKNHydSO7+/ogA + MiLbuKGftzml/WoLk+a0/IMtAG5qB+cT58hqq6OGmEfyNKb33DB3jg117MCi6BdptDHN9khuI7U3 + eUCwxFY4cO2z5jzpcT908I6oidqa8gEcwC5AkDJqAdVxq6GmV/9E8fbi/fC39xi+tluhZCbq924G + ffggXHr4cQ1bEd6RptNGY+EOqH+0QRYPCWyR9KfDsceMS9si8IW/D88bWBfpBUv7oqResjBSO90z + N+eXaAvQFGjOPR5FsVsqGO8GXuCwAf6IZfDWBwEteD+lSAyUldFEsVrBjAwIBzlZr5PHIY5orBfF + TEDleRTQphjrCC+ChjT8hvAHEhvtEU5/soYLGOdWaMx/rGYw8G/DpJy1It0neVulvhvB8a7Sd5+V + PbEntTLgapi9rryXzFPSieuilNCkNEb2jq10orowpBPZSLvmC6YPSfnkS5770tP+3RcpRqxHjwop + wsOSIo7I+DBDy+uRaA8FkrZzbcJBzJS4ZXYdwrMGxQNlM35GugNlTat0h3TxNZ0tV5ZJmnXJEhYB + PkfEKXEWB8ZgGxQDbZUf4YMIi6+8M4E87DJEbZMf6impc+vnkRieCwpuw0AM8Y59HAZ1UQjDEI3S + KXR5PRxPk9Hj7GEGHYPCNBySNtb/bahCj1FP1/PmdU29NQF9nK7Po5hJjI6AIkl1GhgwvwCdbo7k + 20ngQSDz1zTyctztCLct+ZXtuMDX4r9BR1hNx5ZD2yuJOT6hlSxEbO/XtGgE0+ZjukBc8+Ws3Yxw + 1wsqwqL3wqHXkoqr4L9k2QZkQl8wLQNbj5lzD5iwkHnLm/poTa2dftUuirRZbOAhWnE9rUYVqo+m + 1XnI7DOJBAHh2q3edYc5aTO8rafpqY6DPU1vT43ykpMiH4Hkv1UUByKbm9KsBSDkdLsTZd2ylB2h + wdqyCiUhBLIAtxO7TQpw4+OWBbgF5VIBbmwlaf7175clH6ob+lGpALcb+GHsgAYYiywNUYD783U2 + RyL9QUJhirm62azZ6uXr3Zit4Mj/v91UzAj84W6JEJ3f0fhDFUqFUwdrGAg5bZVsQdJabM4ysG1Z + KrQPyzKGCVUPIuAhxoHi5Yt7UaGiQ5dl76oZamf6WF1DM9QSD2OQUCJWymw0P7uuwI/vxEEN3cgF + NZuHRbo3ycaedtxszDJkTGzt8W5Uh6bgRWFdCRmDcF6VSKyjWhITyN1MGdVIuWhkBTW6oDjvxlQv + diOODJ7Pgo+2bp2M+czzQ41tVRha3VdWD20zx50m1yYrllOY09KIQzfwDkxm75kdoR6ygwyr1g99 + aWV1lZiblRsprJSVDolbAp+kkXdBjpGOSJ/fAUGSXqsWtpmIgksvKFlvHJsBcscjhUMVGNNTui2v + ah+0ggq5utFArSO5uqhmXEPjgGHGiQNpAKhhpw2HYUPPwogiHV/7Ob0NqW4LvMRMJI38cXnjhqG9 + IEKPWwkiknJBEKFWWeDl8/tS5QK4j8x4Vx68GjIH5JGYD+CnH8Sq9HxBxUVh7b7//r8+C8O0bn2W + pVO2k3IFg2dnS36Y7UaI8FNdlg3Yc1QfKOXGrhMV77FDNxYwwCIQQxXVXvV0oztHDnmIMVdUAb7c + JdxPk2/J48C81GTqYWVa6d1j/+ZhiytWiLwSreISxM5vF/ecfoN2d5XNHw5muYb7UIfFJr/FH6Mv + GKELW/fhIRXl1cTW6I9RzSNHaw+3proU3YAibhvdFXtSlX0ha7+sWOqDHL3XWUxRJOuWMNe1D+Wk + xy3rlgjKpbol2CrBWX57V65b4mAYmVm35BfGncAJB4yzIHCzYE4CYYdt807chmf9b2nypRBIPdnN + k0LoXR9WWHgV1eytuOModJTlQ5lDNEU2YzHz3DAoSeOrdITp6BWZ0lWlBapldR6aHiQNkyWO3dDz + 4lIZhyHmkT/mGVKFRP3kHmcxh7lMYPdsTFAVBAXbwyFUx71rGfFeCnXM7zsRSCkTwzcimeVrCoOT + m1WNAbYzqCtjORY8/0KS3UgZGAtJDOUsqUdhJ8mRIycw2crFx0+yyMPHT64oXXB78frl1cXrHMo/ + peLlyC3gdyppeTEeudEqLwVx1r99/VYxv3Tcw+2bic08omKQXKXLHzftDbjInwXSwpehmDmSBUxn + Y7t2Fwi1LZBlOwB1jfPS1Ap1tYRucLz/sDunY2cXTCztXCxsgABKj1vauQTlkp0LW+mCefP6umzn + EgW/TTvXLww4WOTABQNXfUAXzHs9f/m3m7cqKOHLDOh/6wBIs+aaqKvnYBa9MoVR/RZwXMePSmYR + LZ5WIFaJIEzZYOBn+U5tSWnmx2jaz0MWEHOFsKaerCaJTTxwbeR1M7fMX7o6xyHP+V+sBIbr6AHz + zUJ75StNwuULgb2yjfjIf3+47v9zuhgZIQVj4P3TRa/yb0wni4n9zPVlYj+5wMQb0/14bPbFLaKC + nS+jXlf6p4TAw/HckJtNBckdi3faTcp9N8Apz8K/esg/+ZPdm9kOYGFQJNX0U62Cf31OG8Q8A0+U + je6pkliFjd1h0rnLCCb9xvWbwKSLx+1g0olyESZdtEob3Lty9VAWoLRaAEmPY4wkG8RxIPJD9JRK + w6YjRGTQsu6mMzEfJDc9rKHLstxEN22xoCBc3U6d3OTB2Py4PQC5Qad7M56WkA0alevciszv9Y2Z + +MhBq3Hq7HkuGh09XeDiXsSFnOLJ4jsJbl2ltt3e/k4diG2HiRbTjdx46wxAWqh1/Rfq2UHfP41u + +/TPj7LxxMIOdbRSAkubi1gHS8CpeFiX6gl8+gi3jf1BocetDoqkXDgo1Cojp68/suh18ah4jlsw + WAWvfgn8EMGEA9Ab92sTixnQr9AmsuAymcf6drd4mJr5q7Eb7gPp57HPn3G4swMyJ6UY4XcI/5ZA + hJJgitn3220OLj0ZjtcgpIIet/RkCMolTwa2ys1xe8VKQNOO64UlV4bvAdsJBr4HGmC0f3eM19DB + 6Pm7LLrYD7Ad4jz83RXh73/8duOE7t+Hr63XVL1gtaoZ9cK6qnZa2Xd/XLOKfImCk8oLX/3iBZ4X + OgP4EXBWlS+heaRgnu7hfsRMa9DH57CdhYFYIH6i3VDugOUahvJtePcvsQfcyEeUtmwPiFDqPz5+ + dAJuf6rpcav1l5QLq0+ttPbnf3wueyhEfLu+9N6rIXB9LxqASB1K/8T5KN0aIW9nsvTxP2HweDVP + 8MSP0E/Jh78NE/F4QvbWze7hId2IwJAEtMoNVRbBqsd9EZquv5yF7go1TWya88ftE7o568ZeqbRr + pD0fZJZ9tVWAV0Z+VPRfbFKsz4TrpiJ0TRMbi0Ov6BCtJNv7GSvSww2UCW9xFPTkiIUXsfRpDYKv + xdUZeWSmxdjL5xZdSUEr1WGVqlW4XnHwKpCSYi0xC4BsiEP9j41GILYbjaDBfj047Yo1BXl21lve + EG8zf8k+P0t2UkjQolZiOJdvzi/hf+/7d8vv/UmKeCLw9vnna811g0qA+lP/ZvmFGZkaa2gQaVth + JJEkOQU0rQ8BTNlbm2wp7l1a16XUiaxUJBw59JM1RItoCwF9SI1pUOK0QWx7p2ZqHoQ5IZWO/9NS + qR1HmaHr9mwXqBmc4E0taLYymlcAlbc1szuRQ+UtzRlq+SWdAWq4oQpsDxuU+6HHbQPbw3K5H2ol + ee3y/U1FYHvolhx+bhR5GNgeY6F6ZctKx0u4dIDfq+poIsIUmeoQmaq+EwthTEyaUPpFWexysq5B + /Wpk83LiyIXLvhQ8Xnk2zHgRt74Cn040DxipYKpGuJjjBQWKRt0eRbV3cD7rz/nB2e3hQuchywFr + dF11d7mUMlif+k7517gJcNcqChbcrcrM2B2bb1/j4K/P+SNV6M1vEElMj9sWevPLkcTUSpz/7flN + WVPnKFCYdd6GzOWhzwfMDVyECRFJ0o+j2XShzat0Y8uwMxW2JiPkN0YYF4VtCRdIRdHos34y2yyR + ic03GlisiGLF8DJvNejfblP8gWYg+CeLVrI32MsUMvgowlxpk6ssXgGJ909YG5kJMN4JXYoK0uwL + YpP30ttkXWEjaBrDAqzehXPW1hVjkMlvt1FxWQrBFPny1KQ1Baymw0hknxdvvvKymveeX+eoiXwB + sWoRdy2XCfT+f+xk6SWxFzLv+/1uU8qBCgsdY/TltVksDxhE6Ab8f3r/Slu5h2c+M64EMXnGQlkf + QI1bm4s2K1Lih3sCMzsIVaSPKK/OQQNFv6N4xWN9e0ckwlvEMVTWQ+Jc+UAlCOs/5K7aTleHJSdg + D0YhiXqm0lCLBbZDc9CYe9nNsa1AcgCZMRRfn8VR/FR4LJdCRT/eMNZAfqDH7Sz9RLlo6RetEnr/ + 49uS/MCZF5Qs/TxyvdAd8MjzuZQfbv8wS35KDjIevV2usZLnxXq5/ALzsEhHX/ofp1/S/lsRvI6c + sg+PTJYSqheZ4+Ua1I7VZDoDHqu/h/xmAE0qmelidl9xg2dRxeYNEvl1SiCLQ+4qoP024P26Yul5 + fhTGT+VpQljidUqIycXLMnCD2nAK41MzagZivekKiYqkBgYWt/6VVUJEQWuuS95mjDkuV876jFAG + n6QPcCCyF/S1MfM04trcMOjED/3gf3pvNht5nxIZs5YmZVWcqXIGG7hfZsBOZwhqjZfuejqS+LKp + quL54vP1zYliR0N1/uegjN5TsHGevaVSYJIZdCUOyTxZPJb2mtiCmwHJDVguSoAB9jej5B6rE6g7 + u2L8PTzGGcw1cwjmmpNGP8LgZ/WhAg86HZIHCI/uXuj/OggMnPHsljy8WNZ0A8mei1sdSxZPGwIN + BZzSWNtVieik1kRrwahlmYn9pSX35FF0kdP85BUuqod+bGmMLgDZOigPyVxKeTZWvJAhJx2KIB+n + 67zg6zwFIWIxPSSEShGEZxHjr93XXkO8RfWObcy46sIIGpeNJI48rL/LJOfrDxe/fVYB46DQLLeT + 6XJGSMVoYf0OM/tu/d3vPeB/EEwdYwQ7KQQXh6XUreVmLjLZ6lK47D2BcRiXiBPKMfD7OvL7yv+6 + ZCGbwucMN7vZ/W7dH812GxGbq5WKPm68LggOVKJAzpg2q7A9qjjJ3oBp7ss7qarS8zH5cR5nVMdH + JyRPQi09LRyJ0EMUMd/Lh9cXu6w2HcAidc5zSkstillviot9AN/BDo+6WjHtHIYaRD8xRcka5Ck0 + rK0z1OMX+uE0AZoPw0XEDmVkZhttBKr/tEWdeYcbXHg8xcOB8ps18rN99bb2fe1TEznLoy7eM7c5 + KC69ZB91ITspRF1Qq6zqmdwzT1XF0NNwNUmtcFv1KrO9P7/98OFtucbn/QPviT4oMMOVZTI4L5Q6 + X6fz5TidtY3O+DMkFPMgLA9Sn24kUV+N3PIUepR4qPOsCWo7tmJ3N+XofxrecBCX51jbqZf1ZTqr + RxNWFB6v3Pk29GBuqSzC7d8/vLz9ZPly67zmXNLwhUyNwggepKZ4DnpnpSgRFjoEY/z5/PN5pk23 + ycPmboZIHMZ+s2TI7B1rRGLZhYlITI1Ssp1vZGz075fXw4dkhrOzMXKperV/6b+Dt3tIQhSJZjEF + qjky2rC5Fb9WaW4pOx9GCbbApJa43aJcCrpoUco4uv6yhLvMAwVASH6AmWlBUOzTmrWynmqQW53A + nCqEEV3mW74FNrFIntUPvJaZrgZdm5leD6ZGepEkMIe5SVqOs8PEV4eRlPxuOXuYNkTutX33QBQL + CcZEJFlhKbpt0yvoGeS2Uropj+pPTRd5oNmscbpUBPlXqsxLf/M4b0nXI82n4pg2HH5NKDSn3Ks3 + H6Eve98NPW7lu5GUC74baqUr5T/PX5ei/pyIm1F/PMQsDT92ggHWpfA9M4NVXBeJ5m1Wwf1fk9Fu + SVcIOS0GaI2WCQF0gyMykcp2hX2Gl3T/P5NRhO6ZdQqreD/bgfKzGeluwBfv3l6fDOW9VChNiAkJ + S+ENyj2pyLz6KxwDXgOZvi58Qf+Z3JWjDJsjknh+4Dr/f/b+tLltJEsDRj/zX/DLjbbCpAuZ2O0P + N2TZljVly3olV/fU3Oh4AyIhiW2K4HCxrf7195w8mQkkNiZIyJarZ5aSDAEngVzP+jyx34RIopQP + M1jDzNBSMUASRVEQleMtB9QJ/dpjNcBpqmITTugSDcJPw46nynbqsa7l/swj7ajIoPI1Xc/sHfp9 + gQy5kibn9UkYBi+Y36UOQz9jp9zmTRSUW32RdpPpjFLpZssMNI0p3AHnxWQyW5T4MVKeB7rQPs6+ + Z+QzqrJ8SdvmyCjVsGtnNOzeTom7I/9o9D+AcbInK6C9D6J3mkAxz/nY+HSLgivrNz6U6+9g1+bh + LH2xS/TgpnvUYrK0mrIeDyQRmyGWdCkYz7273PM5dXnHN2wfA49RcLKwth7mCDm1SMdwIMym23RY + t5j7qEnpven2KGrPZYP9Mgn2VoQIxxTRjmF/7pfSrk4ZX1PF+sfMeeHE3er99FPWdLG6GZMwVl2m + 06Ywv5Z3yWIwQU/lCunGCUtBnawlkYgpFXqRZGGSiLZLJN6TLER97o5d6ZLsKEBjijNcy9DIOl1u + 7FGdLM3T2ocjSpgvmpVCAUoOATZ6OjavdnHwKPfJ7E6nVMskr4oN34TduM/0M9bRGdmEGZyhi2QW + Xm830tO4SKdT5eaRONSK+thDMCMeHg3q7lGa6WuUVH4AxQ9cN4BdRsbbfSb6f3s9+9/tbFOb/In5 + RgcQAiP9QUBTZNYBxPRnhRG61rX25J6ncHMCtqHIKIDu/6knm1odVB758ZLF3kkHSBP1gJWzREsv + uUvUdY1k5AbHNaAmfgka1X85DkDZit0R/IiioApqInheCS2QWFxh0zle310/JGD1r9cPy9lMYZnc + r+AdJv9BWCZejmXiUoXUmw8wOTsgFInb7RCKSHIZoUhclRnO/zgpe8lYHJdofxGgKIIVFI2ikPPQ + 9JHNFl+zOaoXCJq+SselbEfD0swrRGQqKa7jk/SmBs7/YrVk8bKQc5osREwN0cFvMa6LyVyYTvpq + eIfuHAPgXW//J99u+FLlRn+bVP1hh2Q0Q4egmfdY862fXF8jO1m98eDXGbwBzlANB+UG0UB+pz6B + +syw/UsktP6SWaV/zZrlp1VR48YSV5Q5fhdcUbzdEldUSK7giuJVGZX5eMyrwKJge1aARYM4Qp55 + +BG5XvORo73778fHkkdJZ/PnLv8Xw8sidgA65gsV/GJzU7dCB2uZUuKzv0vZR6MhKPhD6FawBlYb + VZ1zM8On0sW/H/JT5IWKwtwnvFqSUw+Da4ZkIreJMi4InCioYp3uwNYtSY8bjjVD+qMgoJLNI88S + PVpGwY5XqtI1zzH1ioMzZdTqj9RU3VhiOlubkBH5XHk+rgxtMTw039xl29s7MdCIOgXGOdLUFU9D + HHf1rPqYV1rGeijeITVKS4qPvNKRoqmKFD2kyXrTMIjP3l4eDcTa0aWtrhtKlH1WtI4q/brz8NsD + GPuXZg1+Ah4VZQB4qr7g5I/z370XLO7kG5HP2PpGVBOGb0RepP31rog4qtyEZX9iURQ6DXlAMcsD + nBA/J86hB4HQtk8+wJqyt8LodqtTUUounYp0lU7FD1ev/YoVFjGzztRFu5uHYTCCIzPi7SCxkzlI + f0SQWFXZBx9+NxN0E+PLMXpEiinvtQgMjstMG6UAy8hiDsanX2GraqkGMY6NODRPtbdwbJSI61QT + OcYswscPnH2LT6rlEgTCCOMltmUqiyz207Oro/FVc1/9ygqmR3jcry85d+yXEt1utZSk5NJSoquS + Pu7PGoeGgPMqLiUPllLAY5+PEPND6ZdNi+l6BfL/QxCXHY97h9SJDZ7WAevqGJ3j8BdCfeoQoaNn + rONzsgkzOkcXZSbIFoZou649U9XTWKzH/XCQuwk9T6LcM5/Zryq63RLlXkiuoNzjVeUbPnErZhti + gpZB7seuBydUMHK9yFdfXUmFP9OlLCC14CV6//F0PEckhJMxbKT3wqqiGke5Ei+XE7dqTInCEaEc + wJyoaazerxc0c7LDduhVEt7aWqlH2YsaqdmNJvTyLRUI4OS+yObiE3SdinHcuVUTcdBDZw/EaGtI + fif2qbxo/zqgPrxS5B6yHevfdtUNugERDLzZH48uoqQkq4nxuKJ3lg30i+JMepL21B2UL6L2OF+5 + ptzIfo+j221dUyi56pqCq7THfb74VEkYZn6JF9CNX47DwA0DfwT/HzjScoJ1+oBVBMXsfGWR09b1 + eZlVow/lLAFjh4qiMqRm7sf3wRAIeMUDpB0cDU6f0PtnIxJIyJygjp52ZX5W2gCs5vA4tBKee4Jq + +swgtY5KmKI1EgdtHa+5ddH3o77kVTVFtzQKr0pbXHYzFFNDeJMkzSvmtb1PEjyL8LFUk17fJ/9C + t2MywWRikfa23kLLN/CO84cByskdOKEzoI4LyG1e7uoOcYv9lTUxK/D26tyxbt6PKDFkZ9JLQ/aM + 3cNP3acjF0F1LA8sqdAdxZlvDPIB5d/yPTEb4iCmMi+QGF0O62Dw0e2WGF1CcgWjC6/KbfvteRWj + y3GjKhtHEIIpOEJ8U0dqpsuagMLndJ7BEYvJOJTwI3y5MGWzyaxQRHi1WTC1taeLBn5wrAkicelw + kixrNVGn2dGPPh8OZt9j2YvFd1uWijgYZjTtei8dRxbudrU7rpVggX22uEUWdtHTGB/O/5QuptS1 + FdhI5i4lXCR07AAHWKM3wf8LZ6NEhddfgHrrJl0k+KYY/pV/QIWkMqFb8UJc15CresZGiAQTIqA/ + LPAWMdBR4ZOhh7rnYTvSN986oyoiW5GHD1TFKVcy/8Qup00PyVyeK9NHMTY/T8cI/LmYYiBFd3Sr + Vl8D9OOFkivM4x0io3S7JVeYkFzhCsOrtI9dnf+3V9nIENShnIrznMF1OA1G8BO9mTLtF7Zx/NpF + +h2tu6vFd4G9Cj+YAl+F3/lSobwiDAc8MMFlC++dfkWXv9rwaAwXUzG6axXKJGF1UcdKIoofBlGz + 8up7QXVT05G7XZpm5AeNwIWG7ErMsUHPdNzmFB8pb3BV7N6RcWCg2pf3IeiBuAeOKZP46vz48q3s + T6FqZuuN/JPuN6mFipeTf4Ot5Vu2+lLJqxGjOhAzRafERK7bB65TyArgPjC899tFN1QKrVs4rhGQ + 3POFPM48CV0Et4BONi3oTyOj96jPLOOchL+hH7eMMu16aldZnRganBddZXTaMx8feI1zcsMQgXsi + jP/ZIlvPNtl86I7V5ZbcnZr+dX2HMmolLTwJbM0A6kdKq2ZLuZkXoGkG9pot3W51IkjJpROBrkrN + 9uxdUD4QfB6WKAajl2M/5i4PR37sOoEMZciUOoFQs71P5DKcVwAjJQxJMHyWQmtHr4Z32bf0a7oa + DUXr0wy+VmRBiN4GXW2z2qbtwl58vsvzMBCt8zqt7JeF5Bs8mshjJQtwpSUdOFeKbgPrIsiHqRhU + Ps9ugh5qmxlHzsaqH6Ura7Ah59FZg8NG1uBSUk/RYVJ8wzKtC/QvvORtqj3F9SwvHofJt6uBwUm2 + AMVis5V5MkEg31Y3hZlTWBS8HtUkf3abrPvNrvqZNcAJr07VgHNyzjgl3pf0uzjKxPbRqD63oMA7 + XkBFlQZH84cfyNFceJOg+iZa5o98FWuOnpaODTzGtf7TBN6yi+Mn75A0H/LmTKod4qiY3mKN2XbU + QTLrjvWfVQLUjdKo8NhPQEWAM5XK+2AXU3NiVOp3+NNku1pnNfi/5WomNyT8pvYt7ifyEoF1TcDG + Ba6rfVJKQMyOudrBPI8V8bPn2pvndLst6TNKrlI+w1VSxv7x/qwSHfICFlb5npkTBfEItiNX2ebK + S6aSUUdkzWkcNzgQF2DtXqxXaKvfiLxlsMLEJMjREuFgU+ByMhlJZSqNFPssMqmsRObqx/UCbP1p + KpXhlSxifFVw0pnMKkTBkmy/I47v3exm8wqs0FvKfZLPZCLKccoki0Ux9Ym0sn/czWoQZ3pLOZPG + hQ4yJk0sPyzmrC1/mHEndrhX5uYx0Sll9xT1H3zNBv0H9AWvCmtTg99r5quZJD5FF6t6xcFffvIM + cGnpbAM/iMmdQREKNJdFpWiHY1L0K7kOdsMnN8kIHQWHgCidN6CiinB6e516s7ADK4IORh514oCg + xIw+Seabrh0jFgEJqlktu50wT8uhIXaKokOjYXPZ+V3yoPIdhTzE3LfhC6dLQrd+xhZ5SDVhIA/J + i3TwgCG/ROSQxaDw22opkswc5hBujyMdbTTTJ+jonJAzeHLXovy26eI2i7cDWMQeK9EeNcYhvylJ + pxhLvcg6uin7pxviRftp311K6LUa61HaTu0wW0lgjqyOxAjCfLiy9cx1BY4QWnLxZRtXtj2Zdg+o + Yj5TkLneqfuChZ0Qc+kRW8Bc2YCBl0vXZKLyG5Wql/9WeA5RcEENHQx+nn13GA5dV4gIpN8SD2ji + nv3SGXyut2//jffC8bpt3/SM9fYtmzC3b7ooUZGXG56jIp+Pk0m6eZjfzrcTeCHMLxmPpwgbcvcw + L7jea+6TilwhTW/QQSLdNtwlMZnf0tSDfiToE08ZzhWY3fMxHEXIYiZQfZvRdpt2zW7lag2VZV1E + tJx2T6F27onnRukziFFtdlFUh0/NweTEoo9DjTVdN5P3XRote0fLLPgJb9Ok6v+EV2mvUYrJ5y0l + 6ne6h7G8z/A9QJ9LVKVULxnKPSY7+2GTqJG+KlQhtZWhLbRd2p6Z6uTJC1Xc0+AFczpiycmHrEtV + VCNmrYq8qoDkVgJqEOaKLgb9NKYZAl+Z04Ob4KAF4VgeGsnDwJeT0sCt3xcdU6nfHvcipVgKRP9a + JK1FthjvIhHq4Tw5AEEujgsK8nq7uoGXtXvzgzUf9QqeT2ifVdb3kbz28G+c5TgD5DwXDr0tZvHt + b365jEhFZKrJXqF639MIc8570J464f3mD1ljzKlGTJA5eVUmluqdNV3OZB5icZkk0+l2IjEYtTxc + Ls5/ktr+tIpXfV2CwqJO6Chwu20JCkqulqDAVVVmd8Xd42oRih9U4FFCHsRhMAp5GGKKoKizy0Ps + UuPm0fDZasmjI+UDXt8j2OYzz7k6qobARyZaRiFClaA/GVWvyQN6dpPV/GE4E3hvE1LiLpdr7r6m + rN1C6slb+FTYjYdXjIs/wZY4hC8sNC3fdP1qOIWxUd7E62xzN5Sdgc+JX19jBYbkUlblgNBqUpsH + shaHAH1u5UOHz9bpYr0dvt1+gRFKjkp1N14j8Irvx5irUS6SyTe4iZn8oENoRl1g6Po2DVTSFzWZ + SCkvQ8S+yxLbQhvmyCIV27ycZBl4fhNlMpzoDoudfw7+c+bbgP6Wl+74lB3iBYpsvpBCcfWIyRyP + mQAhxhwfsZos9g7OHmhyDz6YyB7Qy7GbDeBLYOGm3aSTNM4DHhZOyZZdys6t69Ohi49TPkUZCcju + 9QZyZxIfuntDs1JHDpH3eKEfddxT6dJ/XcLEtz/u6Xar415KLh33dJWO+/d/XlVyCriH2NvFnAL+ + 8rnnxYwFI1iffihDO2+qtc/PYGlu4DTz/eGXN0m+y6aa3B23WWFjfJ3JfLhXRvJcmVkc90J5LZmt + 5Kn7/mFdjfKLpoell6ovvPebquLjED7Qq9Sg1opuqrhnNrJzwAwQNU6/wwaNXyu/0jgGeeR1kjhP + bm8FDb2oSYFZnC0k9ZwpNmzUMerFpsnUSmxFD2gVez+DvQfjP7WfbmKJFpMTHCfkbkVPQX9UTdoo + dmJTmkP9axWItXYMjtVUKlQcY7A7n951Ml1n1xQatCy93tfc4OLThxyLwQ2DQHjWeSAOtPKzHc97 + TnZT8+T6zYaRMJBJic1T31aM8OVcGjSwO7+w7tzBVYt31i5vy5eJTIyDveUQUG15odk97DqUm1A/ + bW1keC5zw5qZMhLcwLJeibJu0U2x22Q/yMPguQERL7aeFq3f1Rd0R6Qk5PgaTSeMnapzkMReX3b3 + xOojc8aJXEp9KBdhvhGgxRJ5wf3b2P/bMP2eTdPs+4PWUf96+CV+qCPHwRukVOlCqJs/ZB07Vo2Y + wWN5lbTL5e1SRo8ptIIfRzgUw4+cD4S3bJ7lf7uA+wf4EGUHeUyy6HKzIrpYab233/cXYRX3KdVN + rJMMqZcOyWOykta6ffqx58kDYVbMraz7chLXznje8UPI5UEf8fb3k99+f/vp4qoCPLt/Bz1K7Xyc + VxpgfEjzru//mo/jme+v+ccp3u/gi7H/lB8dcPAYBSFFnE9vfPtGzDjPww7zzFamPf/bfvJ3wIW6 + BVjSwwSFhZfrQZ5tKMiegrGX6BLCxYgvrQZGuwlymUd7Ub4HtSqw1iHUvsJfkdJguNAiuqUuy2ds + 9RfVhKG+yIuks7hj0eHfH2br7Hq7eVg9zMeT7Lgh7aDu7pPi3UarqN+4sSeBeg8j6lSzLXYoyaWQ + 5NZO61VhxgQRlIWAiU+TO7gFuh0znklnsxbc7uO1RMzusofvj8Dt9JjA4EbkE9k5FfrYm/to7HF3 + HbWqqXLu9w+MdQA3p9utvNxScsnLTVdlUPv4jeCMMt3coWvGtD335Zhzzw3dEee+xo4F63GTgRmJ + NqQyHUdDuHozT5biHM+vGtHET1+SfydfZtBDye29JNtTdcXonirE7JL18Bs66OAnPol+qzGlxdc5 + kMqIf3oLw+/87R2ikckVK4PUyZSH9fBguxAG8phrHITMC+Kya9z/27jSD/UVcSFzmr25rh9GVUCe + /YUb0AgR96M4LHliC0GFkke3yftqvmVZkPaNmdKCxvK6Zml5iF0WtzW8K5K1N4EhOA4eMeWP1u8J + lpvwCCe3JdA1h7kObxLKHe45PPzn4BdeEwOxGSh3NvPjgHwMZNJg8AAjhF/TlRCebIZCUbodi/TW + eTbZrkfF8cjHqrIpNiXHYg+T06B2MKzl4FRVTsjcIdvJ+045f3X9OaKrN6sU66Vvk1UhVVc5biut + teUGuER4Ps2219pXB3pGmnxRL4+geYtsIRkbM9iaYCIN/5URzZuVjRvEhCRaLDHE7pkm9wkWfm9m + 99vaYv92n/GP9mD3l1jXl7O6txRPVmDNO8Dw9ZkuUjhUVj+uaI/IXeHEMnfFbk783kw9cSDKF2o5 + QlvfSepvQV5Q6gUvHLdLaqt+xtqrLJswncp0kXS5yXYjkw1hm4Yjao0wyxTzHFSuDE/g7gE+IsqC + IiyZE/s+2eVoMeBshu0b/ZHKLJ6CFn67SvPQ4Q8qsQ6dIFSv1dk1C09TZYv6qIJ/TfZL5+/ZU2C7 + m4URbqpabhIL+8AiWp9xetnCS7aX57bzjMu4pxjK6ewrnYz2W64TEqJ2PiEbfdN1e70Tk0U7WyCu + wpcZnKpo2a5SPGmkTGGcN3tQ26rFfkJedw8+3114Pa31cT8Dtqe7c7g3BtKnA28AQkh3OP58sa/7 + U0afFbnmXl6IQJdOu7yja1E9Yls6LRswSqfpGp1b+MqwnNM5YT0UnYjmnwZ36T3zxcnF4pgKWmXk + eIm0PQ+rYkr2Zm/HYSBrj6C51FKefcixu+z9+Vv65ufLZRBiVkGGmOy4OzfXoXZwYO4jvr+tRy+0 + /ap0RVjLpbSa0tzuIwbVVfKOLc2h8l+44ZCIjOze+cP+73Jw1EQrK76rv2m83s5vtqDKwhGJKu3e + EsWOy4VM2AiHB4lVWzBR8/3XBxZ5HdKdxe126c4kuZzuLK6S8XD66bzqB+Ylgh1Md45czwtGkRsp + vAuFgQUKmMIOy9l6YStbZqiRbbI6MFCV24MP32O3rB/muTdF1upmC3hYgxJk89mtOptADVi/Gibz + ddbWELk8xKgga+T6niwbCa0k/MCn2aLqBn5yFIJC5/6G9Qiir3aWHiEmdJPD0gtdz+HlLOGid2iK + zscaz23MgyqRZ4EnFNHOYTPJwdF2zIH7bIrpaDpTpnGkR+Wxy1HSdAIU9K8khTDTXEdmAs6rKl90 + c9KMgHT7PUkRwu3kdsY4/nIxmSjs/tfbqcuXA1xBeS6wgqh1ubaWWkau9dRvBIntlP3VjO/6KyR7 + xWEFNK68kCsCK+Sv6nh53FStJizXPbKzai3gn5qI9YQM4L4YS7rmftQ5Al1JAupEHRhK6HZLElAh + uUICilfp/P74++cqByjHeW5ygD73gpC5bOQFoHW45gle3Jlx005u9Zr4yIfTNa6CNRzM8/lsIxwu + H8bHw6+z1VYdox+/bKocJN2R3z0/4E78aMxK8MYIeDu7SaUv0mBWaj4zQ9/lUeyUiJVustX9usyT + dHG9ZEv6O8KgK1oXLBYwdhdEajP2nvefDH/0qwPGpEAnmgzffD4FC+J2QfDZsP+LxYBFfsjgQT0i + FhE0uh7gZMopRjmBfh4cU9s3AtUEdul5TPoCYUmLrPZ0bazv63TzLU0X0t25vu8g2w+pELTtiGiq + 463nNtnPzxapk2r+sLu0c9BDHEntaERrfAEWArPf0eh2O4YNklxm2BBXaUc7+XxWZdhwQr/MsPGc + O67HnRF3vBjrEIo7mqQ+m8/Sr8h8Vll6WkO4ftAbvqT8OXmYRMvx5y0u5Ekmb0XYUSxdTyer7Wyj + 0HWvjk+P9fqXj8sHoK+VpmCsx4v3b4Y38DwoEAaJ8slmVuXOsMpHOSnkIkRBwCulmiW1hrDM1Ucb + Bg1rJtMwZBdr93YrUkWwZtDAGvMzVBNl/rpfYBAHOGc1TQVz+KHczD9KwWaBTyxKuQ5kmGVdhVEm + 991svYEpDJYkYYrZVwmKCWKtotvtwC1aajXdc/+cAs9zwtqP71y21k+oAldzdfqVlr/V+/STsw2r + gQhF4Hi4eyDCXtVXsNhm0203aqm+UqwDXwNVnTL2gvFuOFX0jDVMlWzCRKmii3T63W3XskDsMp38 + P0Ohm6C2dJdikg2Iqb88vPzfOzbAhzGRmoEeLQvFmEysWmfzrVpF9+lMWNCYSLRR6jV8Y4KuFdgK + oR9hGa3l7NlRt9jNG9HGwtOLWwOkiFm2I6uqkFKlP7l+T2l/Y7k7FyTQ0VSrJrclg3Hah3FMt4tv + ciLLZMfWWmv7uNPBirwsLiUBrZ32Qw2Cx8lxc0LHj0sOij2TYIgCTyWN4H61vIM1+1uyoF9oj551 + FMtcyR0wmaFCBmOu1vWOwWlhIxDj+8ffFTNwl8ddJvmri7MVjOQvJfKonTuK6zmBv0sQaoY4xCL9 + tMtK81yHzuni7oL2MEqzN0FlpZXGTjoUNNOX7Bhlhg61Y8u503Fke8N6OtDT59dPjFZVzGUevbg4 + 8NQ5N/6cLTOB7mHlPO01hcQNwlyQyPgEs2VvUXUJqLtP26eUuepSrrRWQX5mtumunJoaTf/QLBwn + cnggJRTsrwO7o7d8Vw8WkFN9PQJ/MFTHbrmvgXQQwXHRxUGEt1s6iITkioMIr5KKfHF+WnF5+yxg + FQeRGwQx5yM3iBwmXd7TdHw+NvHt08W/H9DDJvwwF4vbek82poyYiJQ8bnKWIAxH4EQHM5gacgqc + WxKU+9wbP1Ow3eNr6MdxjhT+MD9K1gh3fDsD+wqumHXARrSYc7s3KCJU3WRzxBWB5QRGodiJQW1/ + 0LUf/ybXCUW5ZGFkKRAQwLJvLNWpbVYJnKbmAJakNoYXlFTBhpqu0Lkuu3JIcwL0sXVqVueU2xJn + sfp68ScFXqmUdelNB3WxsOqmiKw/lRFpmd+LPi1yN+XOYbRV5CwZ6W1O8ozjnQXdXfUGlrK5ywEu + Cu2Bclg4kF1Mmuc+47VHZBp7v7iVl3tv51n9KwIs22XTHUwZNJBLVfTv4TuA1Qs+Zns9IQ/8mLO0 + L1+TACT6882lF3ZAs6bbrQ5PKbl0eNJVOjyvzj9WDk8niEpY1sHL58zDeKw7gp+wjchE3StZRCLK + u7A/P15ejIbf7pCOAONO6KhXNNivBEf5Gj4Q9S8ZkrtcyKfyrQ6+la5e4JYn/OyrZL3BzRETZzLY + oFaF59TeoiiiX4mh0Hvp+ce3TKRtrAuvqh+mQ/5qcV895A0cLLy3DigTNtYmMEfmBLHjMad8Wlfk + 1h/CLGwusi0KzlO2SrzMJmBi0ISQqaUNuoylGK07wTUPCykV46RresaKgXJaPOdQ7jTZ3t6JOiK4 + eawByO5BotW4qdca4KxVpxuPIsJbtCWo3uHUspTSZn0ELuWg44dR36HfyUrEQM4q8Q5NU/ARj0HZ + Pqttv3m3bOsNVzpyL22zaTo9+COqKXtDeggEfsufHy6dkNtv+HS71YYvJZc2fLoqkR5OLysbvsuc + krXkvXzOQ1hY7ohHjkiT25HiC5vRCjf0m/k2W6XriaxcF7c/O313cTS+2VIOnlnVVqf1Ig3ZcImC + RbKMStoTe/Wf8xV8y7enn110PcOAAq4Jda1WDk7SkpzBQG1tnhPwwf5pI0+AVOzg5Dy1cGJNvcQ8 + /sIJO1IvyYesqZdUIyb1krxKC+nrcu3K0NzV+btQgSd8TSbbDF2qa2TvVAYgfPbf8f7BenETChKZ + mIuhZb5Dfnt1m/D9L+HZru4dl0eGHCRy38gcCHqpVNmk2+vZ/4qUh4JJ2mzuYXwMF+jHv7/GxXj3 + LbHnOfN8l0yGueDZWUwpcFJ4pZbvrXNfIxYU3vn26uTyc7vjt0+Iu0cpfgwpxqd7pdvqdCTHs378 + xzIPDuTKDPPi98DxXrCu1e/yIXtQVdlICVSVrtLKvF8t52ppmhVjFY4RrV7+ef8BVqft3eJe0Yqo + PQwiJsk0Leg97AO0h5KFuLDP1JTNdZfXAZPsly0wlCwxhvg57qE2pB/27RzMciJ3U8sXa50eT4WW + xB7RrW+uErWHMQXAxkN7tZxutwVgQ8lVADa4KoMYp1U/DA8x4mnir2GWK4tCzHKN4rhIZJcJ3xue + mVgJhUCEq+FsnWFeugpm3Nb4OWyCGZqrqhB0qLRZ78jwAlbGSytWiUWMxcjmYOrO5EVMh6wAqbTd + zDQIhuHbcEq4Zl0aCKwaYGWWrboGBhe7RuGVjLEKm+fOANGiJAV6qXHxq0FRUpcL76rcMjN0wHxJ + H2BBpEs0m+7S7/hZKvtgfT/AeaWhvALmPBbNJwoV6ojw8N+mtkVtbZgUcSzPv/QumeN3HSwSJktA + L0njf+hHB1IH2zVhu70jEwYBMgN3eM9miTA/I3rLZI7pniDPIqbTyOr9Q3VlinJEMkPnFnlrtvf7 + RwDEdiSspJbt6wdIbBmsICKO1xkeYwdRKERkXohEH+3VaCBJrhJJd81Y6ikkElIJ/OkHp0vBCd1u + R/BJkssEn+KqDImc/Fk5ipnrhxV6TxdndTRy/chVBSfvH5YZ7U/QCZ8u3ymv1e0c5Nd4rZ5aaXkf + XivX8WL4hxpQqom8uGSObw9uS7fbJYiQ5HKCiLgqK4g+nXqVBBE34OUEkXHoBnHkjMBc8THlEAc0 + zw34hGXoVF1L/NFKSfaGJ/Qb3CQi8yfZbbRUhTzZrVcZdno+93zUhJZYCHqFoXZcnOV4rSFCY7uP + NQnEjjEuv6ShE5VI3M5Oz0aNL1hAFYBVjwGhgtdnNPwKezpWX8Kh8TCZ44aBnQjKDL2AMe1KxF/F + HBHV5OCtZvWq1PZP9GBmTYP5DAZMlGyusu2tHMqjEdZ1airITYohSHxRXSYkCkBln2PtYdGbd3Mz + m3yRfjhVACp94aqCRfSv7AfhD8/fKVltMN9vPcBJrBM6XEfUYjoShG2vjrV14SGOQ1641N0zKSaL + PojktJLvNpYdMm0T3nJYHuo8pWgXeSfoxfZFE+pGTr9LVtwsa+8XpPJ6+spkiZkZm67JMYcGFHBP + y1+iuv9ZRQT6CimEnsI7Y17svXBYJ8Az+Ywt4plqwoA8kxfpoDmDTjteT7LVNW4Q2ffZNIOv2E42 + OSXUALGGfkt23FRsDp2T3PWeMlv9k4AV7Av0yqOdrjQw+8WKQ18lB/EOmjDdbpscxKuaMF0lxen4 + 8lPkVLODsHPL2UEuQp9HI/jpRZFUhv8Hs7VkYWy5XFf0ici/lmfz/yz4ycM6kLP4lbqhXOmLt2Mv + JCJTvY5uQ7CbDiWoENbtprKko+YxBVhxvMoi59B6a9gbQ7DeK8zzKs2lCh5TW4tZz5obOm1uNLNt + rXDVdZTkPWjIwo2dsIneoKENe/CcC1iJRcScUiH4znYHv8B8Goglk6cmScyMX6D02wl8qm/7MEYN + 8GGezJMFpm7uS2STyw1i+viHJWznd4lVSvEOkeRr2DysYPb18I447fERiwWzRxr0o3MGKR/M4wJa + /cxq+h7qnEKnZg2W99zOMsX37L3FW0+hfhKge3PSBTng/UnUmUeVnrEHvKcmSoD34qKM8YNBDi+H + G0GF6q6IHVy4Tyy6/K539wk3YYbhAoX2Y65C+66ePnNV2T1bwDrTLv5FthhbMEY/LcJSJ44js3Z1 + L76yX5pvUjRYmhJPgLzR10t1nqXfD363p1P+IOXA1KUS8Ul2ncw3B+xHktj5+OK/gjjqyMCRP2SZ + HZg3UswO1FclsfNqyWQKUhG6TWSEr7HuGT/y2cXHszfD/+/R4A8+XC8uzy/GMCuzCXnElG/jKlky + 1zF2JyEcswhdHkYE7ME9yoxA0SmlQICs9P56fgi0tOPGhfzplfn6I5EZWGzxgG3MpZlwf1Dy/sH8 + IpEbiWPWGKUO++CBdfEEyNHao7skCDeGmEvDP/geAyKVrZ4K210nIIehnOCHUKmqtU4p9J8unS41 + U3S7lVtESi65Regqre3Xf7zhVZDNwC8FlMKXz72QhzwYeaHrho4KKBWCEut7LGmq5nE9u7r640it + A5kyizEGDTr2hwv9mYmqqmw1u52BMgILfQYHntg7kvXwejsdrxELci0GCMdEKpdC0nQG0yx5EBU8 + yWIKAwAPiJEx8+1fb6e8mjRE7y2pRqCjmzPIStn4vCmkhUVnrlMhT6SPrIOnc51ywXCTtGLBsNpX + oO+5c5XXMxmCvbia8FMjfPCrDOVATFgN5Bk4HuEQe2LL1TijGcE/6HolGMWzz1cM41HrVMQL4KC7 + +oM6TKxZ/0V0NdT1YB+Mv8EKm8zWcmMQl3NTSHSKuHeUyxhpAUf2dhHoIqSJ5KyIMBZXP+VNSCdq + 7E5M5UoXKSVbEf6q/7cxEvhV3ri3l+qlJs7joGkIKSq58nqWCa+Yta3Rw+G4m96oJpLQW4prfp7R + CRvT5tGcblr3Mtyh5F+xVYzVBqG2BhtU115wrh0ppLS3WslQh3AsYxPM71DHRrdbxiaE5EpsAq9K + ooqzS14JTbh+tXA5DPzQcUZhEHixpKo4pYiy2GjPTFSFfAMnv6/khZit+F+65Oz97PZu/jBGTQ/3 + LPVl6NL6xxuJajqWR1axqKmW7GOdLqT/cZMVHROj4fkYOvt+JvGu8UOxiPgOGhfnoTxK5VsUHKMS + EBIkLLcbAsQ6++Ni+AxTCuAMlUO5XSjFMTefjgY4UbRD3vfjfQrq+oo5Rw4prx+YF3dQXsXtdsor + SS4rr+IqrZs3JxdV3dXDQtuy7urFLqiusG3LCPWbVHFqEETOaJjqVBuZP1jcXLVmJGy6qX5Ybrww + lEJpwfRlVUOu73wQzmM8OUlZo5CO/7chCMFJJcrRxTU8P9fb9QR9I+h1gz8qblF5ABdq0F8N89J0 + aODN2+M3w+vsux7SN3d3TCVuvZksWzDsZdV68Uy9zqalGv64pO6+OR4ZAMdwpAVOJYurxjtjANOH + UdP+EnsRD73q9tKgQWN9dXOKGXNBXFmDnqbJVMSGULKBZ6NG10QSKinSRcrxWvlUMN8AEOQ5TVgL + ceRBv8QGhoGAx8ExHMN/+bLwihLgSc9DyqUXTMUyM19ONL2bSCULYQqQwhgsVKpZnq3M2ZUu7hA/ + kITo0UNGSg2upk598VJW83GAK1Yr777M/GJRrkwlq7HSaK9BktGJOpQ0Qvc07syFpCtaat0UMRxU + fGT3VIDvbnw9G32pJ6cQzhstpTbC1uyzH8hlbBwVTWvf6psOSYQ/HA8BV7zuiz2B9frggnaU6SlW + Yh677wRH5CPgrvia8PSZ/7ej5XJ5DvepCozOUHYR0zXm3on3wgk61pjLh6xrzFUjZo25vEpH7r8L + GQ8aTUF9yNEAQ43PwB5Ug6BuOU+uzXCW0R4CQntBQGEtl6p27lXksrCo93fnsiAOKQpCL/ic5Kff + RbafENVoBVp5KB8nlc0+RnWgn5ciO8qpni6+phiy7G0DserCiHnFITrAMZtHrJ5SjDriyk/cBZiS + brf1E9cAU9JVCbVycRUeV/3E2EslXdsX+bkj3wnCoESnWEliJ0fjM8+5Oqq6G+GUhymF/kM8jMX+ + C6rK5XIdvl6+GpYQBH/fzBjquFPoRzECk2SLhT93D8t0pYw4HGAQARt1NpmBjoMGW2Hs4U+rZDO8 + CoUL8L/TRbaEBXEVVYvnlS2NL5M0laGihtTkSMU32g7fbr/AOCRHpYJVz23SDcHkQ8O57FjeXUJs + qsqub9NABZyykZQRq/vLEgd/vUEfiEWQ+5457xGr61CAhCYJVokcPbhF95LUVJj583G9D87cOAQb + gfOA6+bbdxLbEf6reY97h0/IzYougtv7Xh3frlbG4+PohRN108XpGWtVXDZhauJ0kY7y7fKmKZsj + d1fUmdjPFHzwkcz2YMwJ3Tj2jgZN9riaY39AmwNsWOBFgZ4weHTLvyGOxAIn1HkR+9bM//KJYr5H + ZfT7md6HsTipVeGpRCceCpYg1i3TST9lm+qUN2PkOunLEkV9CwfWdj1QP80n0d6MwmCQ1wRHviq9 + 8l67Lxze5SP0M7alV6oJo/RKXqwuafP4rNQVDsqla+qO02zDSiZ33jT33Uj0gNNHNSWdITte9ICF + BS0QQfFlXorapV6zQ0OxWBKyT7MCPtzh0vsC1mMBIxiSLl1wcLGpfYbeT6herXdLPIH60j4AK9UW + RbwWHy+Z69i7D+h2K/eBlFxyH9BVCQn16SPzKzFuN0SPXdF/4L987rucsWjku67gIGlDorhfQQv/ + IUgUHqgI5OvytUtpL9VFaM99EeVEcUCsCAox5mEicr2Gdp7rHwJUHGlkes/rVHwKt9sWn6LkavEp + XJUwLFfn1QSPcpIl1Z76Dg+x9tTnrsfap/90BS38h8AH88gnb0tAmu58toQHD8S8QqhNnkvbt2Tt + J2FJ9bWI+1tolM58eskjxx4eh263wzsiyWW8I3FVnjP/XUUEZyGLy3hHY+b4Tsz8EfxkIh1P+Kln + i/9m48uUotjonBqejpfJZnI3PEcT9VNRPZU4hN9X1dSKPLGvtALNFIJCzTMHS5pFlfyJlmwH10qU + XoOuj26a2T12aCFltJlkoZHAqF4+ZcTXiwO1MypnIVfEFbBuVA8XbRmdmSsz/fIk2VfCgZViNbRw + Cn/+cEJsCzcFMmBQnt6uN3w5Gq63t7fpWoBJ54QPDdSEkq4V5t6r4d32PlkoblV45m52PdusjVsK + NNpq2uB7aOcmsp4SpzZOUw0x5TNOOcykdWLSxMlvb9SHupRX2+ZYftSMWZdzwvBr7yOT0lbAbOue + sfL79ueJfiIe5MDPn+54JHTJDu63yKWXnAjYU8l2KUwBuWBa8yJawJH2lFheGeqgiiV1hecE9gcV + 3W5JXSEkV6gr8KqKp35w2euKQeS5UZm8Yhy7DJbyCH6EvrsjoEpgys+CTrG1ucuOl5oGpxobgzet + RsNeDXV9X4HEDeOZ2VJAig2vvt/rDETRyHVLpLQJBXpHpLQxi+4vESl9cqP5ajjPQC2G17sGi4Qa + o7bw13iJvQrrbz2cp5u7ZI7pGTTRtRXrxpE1unxtHl0PcVICMKnBk9C18DfQp3OrHaW3w+anBxz9 + QgChZUHajNKTQWOvZ2J6HOD1WObDX/LY7ZKkg7dbJukIyZUkHbyqk3SYU83SiYKwkqUD18DiH8GP + yIsPydJ51ZSwwZzXbdtQlZDiCoMJKq2GOf+XV9NnXk2vwzSgiaYzYSJG0FAe0c+vrBMk26DD90ln + sfTE/IembnTfTa3SG2JinHh7ySLPXpum2602Pim5tPHRVdr43h3/UXX7OG7Jvxq+HPtwVsds5Puw + 8fnt3tV0BfIn/xnBBSdWvJNPGNxt/8Lbp4u69bTyjGOuYWRDN37hhN1gZOkZaxhZ2YQJI0sXaWXC + RgnbFGw2Ob2qyjOfZLLf0cmHRCHZfcFrXcxd6EVI8X0RSYs5PiUweYFwvJgl+zmUwCPU7HeAoaFa + oWm2hc17jJ0Ap/z1Kk2+KJ71Q4T3k/S6q5xp35oNRtg3Fa/03iJdxvKCJQufrK1cz2WEcyjdvQfJ + lIS3uS8wyef1M2IclhrDIRMLWiCyPlvJh3lZfwqSc7/ZdocXu/VRsB3naajh+7gbSLh+xjoNVTZh + pqHSRdLZJrMpk/kdpNRuZtOHeZHSxYAJk6U9BUTKEyGgeJMQSRmmUSRrwuJA9fzPg+IKHcqSQEa+ + zhn1PpPMCKL56Qz1X2ulbE98AAKAooIqPThwNoqCOnOQioqPlTnDQBGL9eKtjvp+sedYZZOeuMeM + d00m1Q/ZTm/diDG/1VU5wb815lmXUPMYdyLM6zkawB/H5QrIE5AzQGFiZvsu8XMeCmfXHDT8j0Cv + e4RTxQbyrr7ZfbHy6LwPAmM1pfuaN/0FEX/yefdEjStf7VDx286nLz1iuzvJBoy9ia5JwypX9RDD + vJjrrp4VgJxxLNg2nlAqa5yjNYcseoFmWBe0ZnrGGq1ZNmGiNdNF2uI3q7VClPl8eXxxYWgjdEW5 + 6JTX77N4pHifEIIdDl3l/bS8+irC+Y/Kne83K33fnf+gMvY+CZN6yD3vZqEoC9eRBKDmvN3DClVr + NVRp5wG39wvT7bZp5yi5mnYOVyVA1Pk7t5JjESHJpZl0PkaeKt8Z+ZEbc5kMeA7KbA4KdTEWStLx + 5wvUUQVWpWCsXWYbeQdhblMeNOWTUugimwj6XPw5n/2bONEwXCP+ShRi8NfZlxSDMwVFsWa5EpjT + 4sateKULwoaLdPMtW32p0rGZyKDMawQ04pjzxSvZiMWPG+uPE3ltsl/qaZMdM4plJCsWW9Iu7V37 + lknfFwUl+r6K9MFx29gMn93AtSX8dkQDKzLZRCKfPqXooWT9cI8z8kGMT7beyB5fpxNY7xlcV8R3 + r1rHWw3RK6txfzUUU88z5+AA53ZeHBBSdnRISWdwiyXB8OPUZ7XR3MUGx2xhNLofdJ7vEp5R/dDW + By9qMjiegIKjN2Hm5Uf/zgW905DvzTrolbjYYZVR27Gf/PgG2si8fV5YZfuQq/kBQf2W3mIEp+4W + Tt2p2DPwffUsQkC3exmhBUFrTXO8EghHX5EuBI7XxayrN7M3JgUWRLSIqoJGQ5n+DDcLszJZ4E0w + G+E7JJG8yNJu/GQRxSE8um5GV6SMLh4cuy+Y380tpB6yNbx0I4bppa4WnZ2wjGeLQeH34fl6yQYL + /A+6eYJAkiHETIzOdbKCFleIXr2BxXeTre73Sn471LKIiTqGXrwII2dI3M0cc6iDqK+SWJ/Bzqb9 + XXsLsXPRNvjcDvLwShmB7zg1SYhG7+iV9Sh21WPihAWeW3waXr3XJx+xjtdlcWB8ebOYOpvM/umm + gWOh4xORRmPGzx6do7ZXSqT/r0sn6MDrSbdbmXhScsnEo6uSEP31u0rqDxfVAkUTj7987vuOx/2R + 74MJyNtTf/61AvlPr64YDadHoLiPOJekugcHGSOQomoA/bBTDSDcblsDiJKrNYBwlWbEx88fq8lg + QRzU1AA6AWfOCH6GLnNa58THzX21zg/jeZO7bAGqjOiMRVpYoWbpn9dYr+fEmOAnTeB64dmiXEgY + N5ruUexEQVCZccS8BWOxTGEtN+Ex+25znV69YH2UpA1sr7AUfatPz4GTk8UtdCCW+GTNVj+PrN5U + S22SwxprMtXbDT4aw1yAi0ez3pwDE6mmER/myDDsJTQsrijzoatsypco9zpBiqvrB0wqm81nG7p5 + tlinK5VblCwKSOV5T6lUpgFOfr2yvSjux50sVaSGgbExscWkFUKMaW3pX7V6dIdflRSB1iX7IxWD + XqIizoFITmLF0zc07Q87B1dt/ExhlHYBGaHbbTFKa0BG6Kr09r47FRklJYxSx6tUP7gRzGlv5Ebw + My+puxYWy/12vpkt52lJZ5bL3lzS8HuyRuP7dpV929wNt7B5Dxcz6O7bdIFGz+qr7G5y3d7csuDJ + qRWVjOLyV8mqCmNIzdoK5jluw3YcI857GIq6he4dPIUbsRn9SpjDuFyn22l297C8Q2qT9p5HWHoC + rRNZnvAJ2/tCWrL8Zvjr5eyeOYhQj5Moh6j3RV50yMjjU9eyrZXHAi8y1KsuJd1Pw0k5ODyornaL + PNMYVuILJ+oGm6Yess41Vo2YycbyKm0ANak3tek4HydLPrjH/4hMYJegDGGGUCZwOmtI8fqOfOvC + sNesdNIVsvPRHjO7rFIzrFNBe0j02Ov4UrNIZDT+ef6hE38i3W515kjJpTOHrtKZc352VaWg4X7J + /AyQPjEOg3DkRU4cqwjjbK0LpM0j4Xo7HS7SyRdz347N+jKDgiRiYeDFFSNCeWsMOYHrWcnp/2Qx + a0JUOmRRROhEpmJf5HGRL6dL4FSMTRwVqIzrfks2w1P+20fYQAUyhzJYRajNgJBGfyoo2K8wnLee + XZdicYl4R8F1MrtdQFswQ2U0ZoAjr88Jh7Cg8e1xCtd/p5UdvX8Ow6FZzTG56LTvUHemXfP2jzfv + Z304IDyF9hVF9g4Iut0W7QslV9G+4KoEITo+YZVNwal4IIKXY+bxGOb0iHku6Eiy7OXNw4LQb5Bf + jFJhhvANqBqJeSvnetH5PqVH4GC5+5aA2YnhAfhaMM5ELxl0L7MJ9O72egsK2CRZCkogQcgplsP5 + Vrg5Ftv5XOkgMHGn6U06EUEmxMpRrsjZLZW8FLmz5Lsl12s6P26GJ2fnkcJKSiashocKnd7m/mSC + G50X6miZ74Y+r2xPhW+6z4xyLLNANwwbjP2YOyxk5QLdgtwxDr4u+ShtWSxsyEBQYgd/vTEdiFme + w7PFpCg7TGa6N/VcZS03B1pdBD00vN/q9YbJPBNulPy77ZwQYO8Ze2Tez4V8p93RKz8KvdJndt1t + I0r6bRpGuz23q5DGA6eXdFufOmU5366xPmpMrwyPtqxPa/eCzp7l79yu2bP0iHUQlxowQ7jiWjWb + XwBerpd30Fky+8Qo5i+med7jJFibtQ6l5NBi864bwKnAKR9UFCsLBxyIwBUL+sQm01SFcBAl95jb + YYGHaF/iF5Au0/KJrZlF1pV1Pg/i4uQrcGV+GoPK9QVnkOy8asw7z1sli8gyfbJmOT0RAxv3vXyw + bWtj7KHmfTcszqWDjUAWhIWUpf2KeHJRftgkaqSvrvB9aVo+CDfMdtkpLQR2E0JEfn8JTdoriXS7 + lZIoJZeURLpKSuKfVydIflAKU0VlZ6UDSqIbRKE7Ym4kWM5xC7p670ooQdyETiQT7VbREv25nkRe + RdESOTi5AkEAhdK39267uJ0dmQmiYLE2RpkEBnwlQbQvM5He9AbmGeX/rG6TxezfNFNKmpffZCw6 + PuNRVNboMEVbJEWXkVaiOGyMJ8mP1WZn8QBAzch4PxkWkp2NTX2BmbghnEqZVloYPrmcBBjL1zUs + gOVAzAylWMF3EGBWFGuGe/UBtp5H0U94d1u/2usKB1fPUj5CsW+6iRBTM/+e0oze6QLrxcoM87yy + d+wF60T7kD9kn1cmGynlldFV2hMwqSNd4bRMBfxRJk9n4chs/aPRgkg+C/2BLbW0HcfhQV4+ghW+ + uHTCDhY93W61WUvJpc2artJm/enizwp+t++iw6O4V0cvx0EM5h4fBXHEg/aEgj+XK5D/C+DLvCnw + 5JRpjLkfN1i+DNPaAlYhRZY+bmMXZ9zM4H97UZGSp6sEPOKKfQXmRpwjlsR+9ziCfMges0Q2UgIt + oas03h8frmX4f3A3W28omJpuWhX/GrAR2ZCIMaiyME7mHo5IE4LHLmiepwvvoxuIyYxcpesl7lp4 + NOIXT5P75DaFPWZ2v61Fxd0R6JaW/x3cinkVsD6miAbTcPrZa78dBTfr/SGFB3NBHc/VnkqerYr4 + D0sH9VwWiQP8vffbe3483L1O9jt2rDCf7INdeyNIyc2KUW7cxQcn7EDjSrfbHWQkuXyQiat0kJ1e + nFUPMhax8kH23GMwStHIY6BFOyY+ZFn9zd0dsBGcj2kQb+dbMM/QlH9QbopEQD1o38Wz0/nk/Hgy + vjg7Ggk5N7PVemO6SOtaUIZfg1AQBz0/gUm7fqXg2rOtrsIiGPeLs9PxSQnJ/3Q545XTuL6k00zG + i9wmM+mReTXgW+WntkBI+k5Qer0RHNOjgoEThkEUxUGzffOrD/AAZ70O1cWx4NHBjhGeoppObPVr + 1aIS7yus+TSQEts6Y1w3FgaADrzP+HTx+ah5H21z6D7eO1icLwfTeD0Rd14/rnVGbs0/3lyM1Wjs + dLdVKvp/KU+daiiUeGa1u8GuybcPlhCc00wDZblvgo6cjvlD1lBZqhETK0tepXP7+mEl8xRF3tUN + 9Guqq3sGNdeGr+GJAT4mLPqIx1ROFnpk0GeLf21vqaNFkFCH7W+2nWqXXMRVrdoD3eU3UkEfiPTW + hUsjd1F1BXjrETvnYJzSpwR7A4uJa0+Z9x5mtNfNUUbPWPvJZBOmm4wu0kK6+/5FhvHu0u/Zl9lC + nFEChSvyvThynaNB4S+s8jd4nnxkrjTKZd3dDVoOGFAJxmqrsorH1aoTDlVZqhjN3mLi/PyeP5Rd + xjWIL+0P7J56seNTUSac5PDihZ5Y320Xm9Ew+z6bUrkynqPkrd2pDPiM+fK9cJs/qIv3T6/quif0 + VnrvuXRqi6+X87L5YKt7d0+iIBYm9iMKaKmc7yRnB0CYRQ1+h6DogRX9ThRRoSZtA/t0MgtkFfBB + HdOnjhczX9X9LLp9ktr73WLSBnM7BknomS5pG9hEJW8DLtKOv8F0bgFv34wzChNmO8MSaYt7i60i + MXjokZIVeBIoXBDVdfcG6jkVMLFa8J1A4V2kPWde7N1Anwnp/WgrTiRDgrvGr4cMisOb+lEL+EcZ + ab3pip5EDOO8E2IY3m6JGCYkVxDD8Kpkkrh6X6Wpjqo01eMQdBI3HIW4bUcyKwOJstIC/olAkzKA + oARtFrqplO6B9Ux6tbwYXqlJKKed4GF5t76TLFvwm6sqBuD3qr+yN+7fdflbaguGwThnjYIDz/ed + cnHvARXrF9sNqY6Vd6v2s5FM+ypf27N1MePCnAflbsbfco/iBP6Juiu0tr3HLWK7FAU98Ounv58c + 8wHOHI3HFbm+bQC9b1pgz4kpKTRZXWffH+bpenPgJtITPhBOFnykeWpV5OHYpN/gXzjFtyQOofbg + P2idqG0jzw31j6MXTkfsZ/WQtaKhGjE1DXlVbgXn77iKAsOignk0W8EHriS1sHLSvLvZuIMb/A/q + DwraOXDdUkhxlYIakc4PYzDgMjd7ic6zKpHrZZJjz1G1C50Q0+2kXndp8Ng4YZz7XJBlozme2RWE + uWqx/nicZxb45ThtYXQOi1c+SSznJxJDzU3ISJqQYPMfZED24Jd/claoQ3ECM/9iJ9ZdrTXaCyk8 + bM45YrN7yl6wLpn7+hlrxGbZhInYTBdJv3v4sgnUFn18+da058SVP+GOAd4mcm+i0P1pkMwWe9Ee + yMm/EizzHjDGWBRDASPUm5JfHtxD9BrMzAs4Zibpsr145kfm7Kv1TSjPZx+cLijPdLuVzSYll2w2 + ukpr+vjyBPfyEgYY4yXWU/ZyzD03jv0R9zzPl6ynx6tlJRuPDKzj1YT5FQsL7ue/uXrlqkdNptGo + qVA7RlrCMGgDe0JcnwYMKQOqqEAvyhAB2GeVsm3Kj1ZHSakUMu4orDCfZAJLA94zPNuIzYQNe05Y + m+9fyuOGRQ3dMDdlO8xrzNNXsgdXchhlKv7x5QWOmByp0fDb3QzEgyVoIIMILCfQuQTtM5p+tHTx + XyKeKd+NXlW8YboeiJmnU/Vd7lEBD/lxTbii2QJ5tAWGaXWBNSXu4+fi3e0dZCvOdSJXxJVMxb9U + FSAZlhrrAg5x/j1yYYBYeUKDql+kNueHy1xSDNPvsCkt1ghtmpXWZ7bdtMJGVQJOjLh6WpeQ9aTo + o36BRRKtiXm8C1oT3m6J1iQkV9Ca8Crt2h+uTqrIGSELKmBNPuKwhSM/9hxP6m7JfHmX6O1a4ANP + Jpj8MT7Jjofz2a1w1UtPtkCAAB14jBXU0FFHI4nrkA9ouvg3fI7aMD6fHCtIWnEQfFhPWrH/7OH5 + QJ30uFepX6e3R47K4usfv8lfuQFZPwzLBw0m9o2Khe3FFvWGa3RXU3I/M11wRTprFvpgh/UgtKlv + CrB9M+XIUnYsDY0h1YmbTjP1qoNjiylTOBtsZ4hwPUoIa3Q9KteusN4LNtgkW3xNV2u55Rptw/ai + J8ArA9Y7nQ5wlejURQSFlp9LyltD33Q0TSzE7U7Yw5EVe1zdLOiauGAta/d7Ia8aKfI7X6XtZPuJ + 2IUeDzy/JANmJE0zGKSdx09/bqWIHBQ03zdiluzlfKGICnk6JjNBz0s5wIeA/odUJN9lM7Uawl4E + PwIIVsFtJN7vdG86gkDCWchv2tMQjLUXnhMPYjcvvHzI2guvGjG98PIqqRjTRCV7TWfCj/X9AfNF + sdTEyPxiCLPvcv9o0HTfG5A0QHHCUR85MtDvUEQDg6fpKpvvvcmolR54UVAUKOAW2oWW8Q/2izd1 + TW7yXOPL847qmlfUWczhWUHtS+GpJOHIVcWdHCjxGFaHE3dFSpRP2UMlqmZKWInyMq2nVhjd5Sod + a09UkWhJ2mGDXU+3PZwT6c3uuTvYiP9yH0+Un0eet3tG9ERX4aKkopzZvRACL1s2Uu8TMdB7+wh9 + 3yFj+jDuCCnt8fkpfjq+dNnpY+Eo+MGQ1SjS2yly1wLce0Y9UvNP3I+vRMURkYDvNSdEppwfGH6f + Wuj9jruSR7vJxfhifA3jMaZoH+ZWjGFwvqaLXSu0tW3rcMQjv0frAUu45b9fOty194TR7VaeMCm5 + 5Amjq6Sm/v3iyq9ymERhCV7Cffnci1wn4CMv8gIk+muDl/iyggZqOEz6ShDrq4i1DwoTFrpsgHSA + HpFKtWATdDlRDi092jPzq+sx1l8WLfJdRPrI110mu7M18ti6xLhOARBMaGEXFTZ/yDoJQDViZgHI + qzIVPN83BnWbiSkIEwHiMO5DvWR+TL6tTYp60MNkPttfqfICmU5TxMpIFpsZLCr0znQS1l3fs8lp + +rEHsH38u6f4PGe+MRkOOIp96qfivHgpjkEkNMBBPUg+nCeFXPC+z3G10F2Jvcy6AFzQ7ZbYy6wG + 4IKuSjz209Mq9LJbArhwg5fPI+Z5XjCKWOCro/TMAPakUrNVqmH74Sg5Pf7gLcdyP1SZMPnRIk7e + 89vbarToeJrw304nC/83+M0tPSeJgaBza7MJglKOdRHkzouxWLCSTnB1fHpcK8xhvDH+EoB2zusJ + nvSrKp6hJoBlk+m5GIfBQQjKcHwNoDkmJ1UQNWYqRG4c8XLIyESTqZMYurskDj4XPxvmen4GznbP + kmRuzBJMlF2/GuaAXmWlBPMKpgnl9iymu+FwkDZVZDa8Oc7TGvBCcdxHOoH96sPZ79r3ggtEozb7 + kUsJx08fF6ofoCV7YTsjS2Ie4Z11881GgMe92C2f3tPV1o4ORixlvNNY63Y65oFUnuSz7bilVRpp + yasFvSYWk0nM3Gf4hWNkSu+IYzKQW1J1ale3MZsB6yXzgnuKIJH79mck3W5LkIiSqwSJcFXmy308 + Lp2RoNRGXlgmSHweez6DMzL2gphL5NnLYs4Uag5ysY9gGdzeCfqM6XYCf59uRV1Z4ZZXhVmBrBgp + KanJIhEsHdirmIBVzKKnPLz7pHqgqqfG1afMwzNymg5PhjmBYfRYhq2COjwrgx2alvbbiyIWk/lS + WpZOZErqsipcDFuUsuJGjV+a52vkQ2NB8RUyn/2zIfNOyR8cdxzgZ8cXJ7+dHL0ankwn3FnKihmh + iaerEnXXbDHbzPTBshZktd+S+VznwZXuP5lfs+Vwiur9lB6TU1IOzACXQU6V6IfEX3AYLfWeZE6F + p8Pi02c1zzfxSIlZUNyd1GRpCUY2Jgp65LxI1gj9jj3dQjjeLISKUHIhxnBZCzqIHnsgNwHxIs17 + hvV50g+ck+NJMGeRVJRvi51pEbgoffvz7SWLnJPxsfV5oh6wOlG09NKZoq7TqXL14ZN5qvAoZq6L + Vm3xWAlfjtHTEDgj6ErGFKD5yaeTT0M84ws+zKt5VkMXY+XALHDGwILkDouq+cz3OBtPqTZGq/cP + v+nxKnC+1ec5O1Ejqa/RZnkbH39NJttM1KAmq9t0U07ODkoEOMWtXAkugPXlryuQlo5Xc3dpZLLJ + b5S5a5fJGotX05XcbIv2jCr12KQbzFYGkclGPCT4FF4Nl6oEN1uBhjTPblEo1ceKERzgJJB7Ko9g + ExnIzzHiFvqjQd+lruhCVVLnV23HLO0L9JsHGhfsNXvheB1hwegZa1Qw2YQJCkYXac1govbwGE7C + dIKWyxAhCKjoEga7DlgYH3h2fDSuf6IcX79IFm4F7kK9FSIg+b5kJ5Hb8zJbb8AQnisjqgmi2Lpg + lUkL5x5xNNy/IadMK2mmHRR5D5DmBzjr9aN7lDa5jBO80sXx+SGVpmo65xj27qn7wnG75WvRM9bp + WrIJM1uLLsrpjEx8yGGTLbLs+8NtuijjrWQrmJd36C8/91tuW8+uOaVpqXrqgzNCGDmLs73zNpBD + m7JKVlgLcpCgUGuoIoVCS7zL7lNYgolUO3eas7C+iHgH254JT0gzAIyFNE6oN7ukjYb5SHd0uYA2 + wTzdi7A0xJwWj2Ma3F0q/yEcX8X+tZAsvMCFbi06ZXBfq83la9LFUbUR4iTemdgNGwvpey6a/Elh + ywNrf7omIHrEh2JuA3unDTrm4twzd9Aj5A0c9IzGe/+XgtVJmDrFXW/c/Lm7UfRAERML9N3xm+IH + Wj0ovuv8+M2F3ZPqhIlU8mIYht0SgtUjtmmLsgEjZ5Gu0elSOBXBBlwMyv8uyMBorx87mgHlZ6SV + 6TNaJFX/+bobItJre0Sk17WISK8LiEgXJ1eCyqQYUmNxgDUjRbvOezkOAoxHj4Ig0pBImvT9+ONF + hUlbsoJO1oHTQ54Ki5nHa0prwdKBBbnO7vOcyBJ+O28QGUUe8xQpaJPE+lLdMLKRmRuj0D11dboM + rL2owcY0JPWCr1T4rJrhGjUgWRV7A36fLcFyLHYMHsbU76PigQlKStFjPMNJAod4pvFKRkWkprcw + P7P5bChoPwVxKtwjC4PyMr+BmKvKp4eFMyI3pp8KoP2ORcrP0H3UPWGTCmVqp5ztK3SQsONlIl4R + 1ZBlXP8q9s8/RlKniAf1VMJ0YM3MUIUAI5kVjQFRqu0+wEHhEsHIh0sWuPanBd1udVpIyaXTgq7S + afHx+KqSf+EKIJFiKiMcFqArRUE08mKX+0FdUUHB0hd9UvRq0MnxMVm31uWWhAiro+jpMJDsnKjp + ZOGx4/OgsmVbNFRftMtNHIemlgos1A0NlXyGje/vOKEfu/8cXKHHM10Vi2AF6sHObn/28eLiqEgJ + XbhJ+rCpDnaeJl9lFey5JKXE3Crt8FNa11o6tYst40kgihlSjY+2HuB00qB6zHclc0ekXXl7wVRj + Z5U0s8LKK3ycjBjJIoudRslPr0HwyzL23WFxOdT2UPNq2tk7vVWPeqCcqgN9Ps8ERUh1zVl1+56i + Hh9ZLOIE1XHw24CgsPCFPcjrI9O4N1TJvqBnXSa5uZgfduHmwtstubmE5Ao3F16lo/PzafXo9Jnj + VLi5uO9F8A7c90NFMvl5NYPW7x7mp9tkQVDOV6qemg7Lz7c1h2XOi1GysppOKLCyIpeFlWDaJZFE + 3jUgIBvMlSysJisUQmdGC3mywgKbmCTLZeXkc6NGSCAla6D7Z3irO0gVnI+GOTuq7JBkJb/GqOCk + M04AOWzokLt/Fh6d4ltpT7sIs4mXXYMBs8joF+GQTOeg/wtBnz+cMNFlmHX8jI/4CMS8GibzdWbm + MAhUabQacoIsFFV4S3RfoMX3MMDpo0kynVAgRTCX1EsdlvmaUhQ9ua1dIU2QM9jHeLc5CtaPh45T + omFppx5ukSNz50VXQv8nuHUuBKjS11lS7GNboXACkOdX9zWY0CJj04Zh+YdT1JBBS8mLLQuu457O + KJNxxyq2OlH3ldUwPD2WUru6DCVy4xdOJzYC/YxtEYpqwqhBkRcl/0yxcEsxOS3S6VTlkCr94c1k + wQyZGNtiEmA68Ck2tb2ewb4BSnYhv7ZDIlDrEQtNBEWFpviSFUnW5cVgBZKGUw9HnH+QananpW0X + //0h5C97ZPjYFlm4VGTx+wfHc+yNfLrdrmCRJJcLFsVVWWTx7o+aekXGyvWKYxcOIoeP3IB5qKXh + tD+f3WxFMm/JDXx+s91lzNd6b/0mrC2GuqEfhY+V31kbdzUUk8jEWCwrOur9ank3hfQCiBZmqBc6 + 41XROQpd+oeR8KN6tgpwmOCk0sn5cOVd+tsV2O1bBIkX7JuL2UaUHOFSw7Uu/zm+mX3HM/8aJnAK + LzDAOaDrL31OlrltbNpS64gob8+EDBDrBF8XXwdeWLdhf6TwPBY/Xm/nN9uV6oKW7MR2c2YvkbXa + xK/kQ6h/i4O9EIPeYrJgiruNA7Ofoag4Shwe2RuKdLslR4mQXOEowavSUDy+8KokJUHolElKnrs8 + BFNx5HLYaGQg9PO3bHis2TRxlR+v19mEkJ0vVKgHNPxkhXPz4z9wjUFzX94cK0syWXo1zCNyfebX + arfVyA153baa789lt4m5KTMD8LBQuhWFeLKXc9yFsXO7yr5t7tBy+g32waLNYNqljQnu9bLrSBLM + jPnA3yFw8LboUq0lX/786VK2JNxuyebuW/LwSvuOYFtJ1PitKQFUBOWUL7Mwzvw4rwg7++zV3pP7 + 5qSTeD0Qs037YAPXGchvEwahDVFE0/4eg3ZA1mmeaiMrl9eb2f221hhq5x+MCenOVCWtXnKXXGFx + LdLbpEZX3b+BwY7c1J0pFq4vQz6u43UJ+eDtliEfIbkS8sGrspzo5FM15OO6fiXkE7o+Z94odEPf + l36rj8YhkUygezbCJVNRXWrQKZ99Pjk+oiqNV2KSiY6fp8lURKhv53DpHqEFk+33DLoe1owqKZo0 + ZJajcm9CefNdyKIH66xNMos43qJfNkSak2wafWtuHHfDbFXgi81wrayTvLzPWxjpzRyOnTLhlyUW + yTa+JovBIC4VVRVqk8LYY8GjwcruPWXFZixcfrDclc0+fzDFmJMJ9HB0UBVOsDJebLnKuBLeU6ih + tgtmgKtb7/489iXCOa+qeNW366DqP1FIW6o7Ki2Sjgi0OOHxzpq10TXJ9uBcFmWv4IqRR055bbWJ + bMp3PbCU+eDs0adtM1kUFlf9Sxbl4wfCArsBEXVNsy00M16j+jKFm1u5mer6EARRdACeOExQTPRF + reddt7GxFWlT/N2HQdpLdJgFcr7MH35i5LR/E7sgUXyeJ2SO4GcvlnvOROW98184QTcUKnrGGoRK + NmFiUNFFUn2L3aXc/3XXitIwNTn0JSOVRyTxhJGYSByRQpX03q75QwtmPM4pBiRDatDGHFOAdOJR + W4StHyd+lxKuPsvBflwRhHyI84AHhYdkVV99qumPJSHcBcZcw+Z4MAFe7BAKjboJWVBhfe6NyhVE + FPjeSaFnjzxmK3EHlyqF/WiQ1sg1scHU69yTs5/gR/CXhmrX5fExczoCWBeest1582aMvVdfpt33 + 5PgdU3ATxTLYQeMfTNnc97CzFN87HaSUHLFTje5ni2tOce5E/tmFurM3TtGQ6xwBu53B8ykLwKhY + 7iGWGknAOidm9t4zut0SsE5IrgDW4VXynl1+OKsC1vE4KAPWjWGfx1hqwCMB0ilQE7CH83qau+xe + pAINnwXR/ydPKT9CY4yK9C/Psd8+DM8Wd7PrGfbvM2j/6MXQgPX5mt6mss4/d50P02QFS6IAGvNC + OtMu57N9YRoscGaRuEnNkQmG0sDuHD47fn1yVA9eaKRaw3A1ITTAactcv+xrOqB8Jnfl12hxDWld + BUVI16xKt3KuyL2C7WiCvHTCxa/6AonbwJieb2YSykpj6nx8B32jsNcq0oZ0u2ZJJxiMXFOTOtqr + oa6oHkJnqx2RTq0BTloNIufFETmFSnlU6XehOooF2biLNWecBSQN94i2ov92P5BXQP9qyljZJaGj + lt0czT5Uqe6Qp/Zo6vleCXB/lTLlTsr247EwSV6A1vX9+KXQtf37w0i1n6YV8FfR2eP/dy219ovX + 0evgheN3Utr1Q5Y6e95IUWXXV0nZ+TBO1piUcDurIH40/0l0UcuTiEISY9k3F3ca7wL7resKGIff + hq4bMBaFMuWSqg/hRFxkpAYf6I5HkSK+rN/Tzh3fLpLyigsi+zBNCuKZFr+xjR80J/uQbYGcq0kB + guN2D2d8wAjZFTM/BODcDzpZyM8sgLJk+szGJpnbc4LQGKeDaKcOLKqR699zFCdGFxxvut2WE6MG + x5uukln09uSjV0kxjXlcocQANT7m/siPXMeVYHLnsA2mlcQazCmWqryyLowsyj9vV8z3Jktp1byd + 3HtPnz0jn+VGRQUaEwUtzshKchoZtGNEwYm8fw4+3ae3CRwhMEkparm5m2UKLZ5y8F8NYc7kFaG1 + PQmvukpT6O75Nlul60kxJ/3Z6buLo/HNdl3MdDcABtA40f09wPmQ031EngTrDM2l3l5W0g692VFY + c1KTK1OQ8kjoJvs+q3ufSjj1IKiB/VRbYvMjY6thrDuT+u0r7Qdx6nlMKzf8NX/Bom66DT1jrdrI + JkzNhi5KbsotLNXteqB+Fp/CUg/P8ZDqRr08V/mnQYf0f7rdNv80qKb/01WZf/rpo9hqzYyv0PHL + +adjNwbdlI1c2KGZJFk4ac9PKbFjrZHyHmEoMVdG5VHfJxPEQ4K3fnZ1/FGDgr+qZuCoxzFHD400 + VVeu9pdSa8kN/lNWe18/yPzLjyU86s/ZvRvuKFXY8d51UNUwzqzpFBFQqgE7JFW2jAltiNTniewQ + M5FBdY/9EeOU4W8MjGvV9OAXngsDaM0N87TYwOsDaRB7Dh+xHwabHflg8smBnJ54+17z3PYE+/UY + HOvfpm8uyCdAY9gJRLcBrdqj0rWTD51qJ+h2q7NLSi6dXXRVhlvO/x8z3MIcN3LDwASocf2Xz0Nc + N6MQdippVvz/Ls7Onz0/+id8vuhaCn4s/ne/TGKjqN5HALWnSLFnfjMWsouRxpcB41YXmGaLHB9e + VMnDiYAnw4oKFMD4Wk1TnB0aUPsWTIPbZJMOcEA0YpfvUm7LozuH+wWj7ANc2tO8IE4HHkq63ZYX + xKnyUNJVhfT3uRKKZIHHq7wgjs89ZxQjsn5QAvrTZ8zDimAWig5OecyfvDnhviwCLfyVYky6knEx + mW+n8PEfZ3e4xJYglyx6DT6udeqz6yWDY+dB1WWkIvewCEYtWTFvV/C5vbNilhE1yngaMJs7+gdU + VjfMT4T8FPWOdW4dAyswjFlDtDMOXTfwnSb9sXas6iOqIfebIqqegPWv1Nse3kgBzD+OWMRi5xE4 + RF1PVtTvF83qZrQP5FcaSllr//y2C+RebSNUD3T8wXE7bCN0u9U2IiWXthG6KreRTxd+BS+UR6WM + Bvflc4QSikcR2I6yGugqByYT8JKUrvDx8kLtCQpgDBnmMTI8yuFQ4Hvo9srNGwohw1G6WsvAN51N + G1kQnQ79vw3TxXStEEmzpd8ElZOszByUiwbaId9vWPExQnr6VVBRQyp8cgN9X9gEVmrIzVdfRWzt + isPg1AFyG6R6Pg9spOp1XA72mzA/QWNpU62wTYswRFHYIWzwsyfjANeR1owcwXBsnxZRt0n1lFPR + LMWiFsYlhABKlcM+SW4tyT+UCBw70dhBX9EiZTdYvBdT9SsCEwj519n34clvbyTgk/XADOSSFt3Z + tP7tzp8DKf0oXr5zj3t0TzRuRLW90c0FvYeYJn8+bmIVUW2C2qELu0prfq1OCZE/JmwYaLDyuBtY + eWwPVh7XgpXHKpvy0+cyMgKLQyeoYpWH8BdvhDpzKP3wp4LMlcARz86qpfCmS3GBBu+8EC7S1a55 + aeV6iJl/2YYj4ZKI9cB+v+L53+nISFYK4G0jS/rnKVjRcyrnh+dZQaJ0O4DQiooi0CtxwWFeEsra + zrdli6aRsiqKGbJgVEqP56CKjm8LXdNw1PtNiOexH3ksKOP55f1mFApLHsJ328XtzOQfjHlJ9SnE + LT0XDhb2z8EvMYIDnKM5RrkrkHP8OBQ7sKhWpQq1w1NAeioWFV2Pj8CsuE3mY7ENGePXLVvwEDdv + JA7t+one1UkURc2y4P9TS+d6yAjjvbpScAp25ReEheTW78Ujee3h36hXfIKWHqClhzlVfG+F+dLx + LPKj+hfvdtj2U9HYEx4sekGipg6UNHkZEnfLzoPTs2vHuW7MxAzGLksWQzZyx136sPUI1dUyrh93 + LVGkR2zrZGQDRpEMXaPjkNI/YA4n86nsSNzppkjWsBieDzW89zTDkv+B/EtRNhbJxDwYEGLMPsSo + Tze9uPdKPuYH9JCYpfToF2hls1cp56BDlbBt0l9fWMtepCZ5yNyuk5wesZ3ksgFjktM10heT6Vzi + YqHDWCJMFhNEGy7jc4TDySTHHCdypYrfuZttzSNWkFJLn7jDOGeF14CTAQaoy4v0ud52k3K6AR2d + rUABO8r78+9Vw3T8+eJo//T3A3PPD+QFUSskVtSMwTvGX7BOWLX5Q7bkjLoRg51RXaX1cZOsQMmD + E3P5gMAw5KJOi+Q7u+8w2kIK0SiOaPUElD2LYY5MlBXWA6R0WQlBTBr1XTYX4ZNs3pNYylRe3Wad + pKKOjDfUYv0TWs1sDeMDmrJ1B1hna+/dQrt9EdDim8+WvQhkgdQRehsuFrkeL+qm+PV10MWVilPP + d0kF0LN6Osvn9N5D/p+gzwgzhhFl4FTC7qNNTEDgdumbLavlUNHtNpEc9VuQsugk1not7t9E+5tL + dkc109W8PQh9vS/brq/MXd9RhJKMg4nBWJdzMX/IllRSN2LQSqqrpEHePiwlsvXn1yfSFtLYLaeF + grHEYJQ/xceKGiXKEfguzHMGQnsXrFm/aU72e7hVgLTumVyIPFwSo6uIXXmZXA9P96pro72M+HNM + iOaOm8t/wH7oO6Q2mBPiMDx4/TLdZbd/nENwXuWZsY9MtW6ZRCkFncE+K4Fut0QpFZIrKKV4ldbp + 1ceTSkGRy1gFpfS563DueSMXecaqeQmiKiVDrMa1SHwT7j0V5F2lMjcXvwoZsEVp8FrRiAmf6XSG + b4e5dJgyh2jtYBKhgaRchcJlfHU/4UtKpbtL1gIEoej9Q08MmDwaGEGPCv5hiQ0jVMAXGAWV8jyZ + rUQqIT5WzKU6mU54tEQH+ZpADim+AO1Xq59UaLvy/WYuQWiiZhaTzp2IsYi79VlTnSUXo/ZRFNaD + RzSnS0Ul3qCremk6ZIEOa9RJ8pFV70vLx0yBD4OGaIXZCb1Ib+qIivD1TCSSiTZA7BQ2GcrDLLeA + bexooZgg0cuKeKVXRB9LoVwBgHF51CpVZbS4dyPWs6beaVsYA9xAdL4/DMBAdpNwiNn07282CRIh + 2P7iZMGe2Qf6NJT1pPhK3ZkRcWYVP6hpNv4gqc1EUNYCd9ObM07CCkL2ryP0mStBY4tTu5uMEBUM + 8e51k3ZnJw3kVqnVo9qNtYsGbyfOAkLzwCwVchIVxunHaH39oncERIKs9ojHQth4fIrK/X2lSivk + qsw88DqVmcPttmXmKLlaZg5XSSv8UENXzGMWVsvMA86ieOQHXhhJrfB9kcDr0+U7lWP+ZQXyf4Ec + 8ydQXvI/SCKqoErkZHylk/jXZOpOVrOleDsBo5VXVcPro8I6T7+mczi68STHjUegno0o+pDc3haK + TuA0nKabVGBaIVwa0c8vQRW5mcGlYrmW+vt4A8t0e3u33G5gO9tOZ+l68On4nZuXooec8jL93MWh + X7jbogQZftU+NySOhKqTM7x1bCCgMsCbZIOmgiVwSSOLkkexqgZOjB090SDV9TgdnzUDXf3Y+vr5 + J+lO6KngsaeoWejUzNbDgKP64gWGkai+mo3/oYnfs6egte/K5EbH73BY0e2WyY1CciW5Ea/SYfXn + 5adqcqNADjKTG5+7mBDHRq7nORgEE/VZW4noKOZnkld/tsCjjMxREHltam8WIZP3ScL6QPlAVXmZ + IhYWFg2LyvLtVB2nq6ya6Yh/Ns6o2Mzn/zVOv3xM2iBqOp9rSYkThPTwA068V1bzYIDTU+c1cj+S + BfFUeJztV3V+SLJgTBn+2ist5pRNIs4TKbbmxLqKkmGrWSzS+b7eV09FTXzffeF0DJrIZ2xjJqoJ + I2QiL9JWVHBsL+G7BpgRVjLii26THAc/F859N4pjb0CmLoEJ15JC7+1V98CQl8dG69tZWeOdVBIF + 9OL7ipGex50Y6eF2W0Z6lFxlpIerimjwHas4zX1WOnGQkt6F6RqH6DRnbmA6zZ+5zvDLm0RA0n5+ + d3b2ZiR+vKPM6at/nP12df5O+RHS9WhYZMAT1TTZ/EGSep+dVUwCjXuJ0tAhoe3q+2wK25xR//s5 + uWFVv3bpHUwvsc8ay85CHsRBUDHP8jdYpfAOqSDuq5cd+U2ech5FYew49bYfTcN26TDpwkZvueNF + UVR981p9UIxZQwtBMz8WizirOvobW6jtffyG5t4PPTeqQOJI1IGdE6es7Brjwv1G1rNiz2kd4JSN + 18t0grOtarJqH2Xu0TVLL80JVpgERifmlRN108uslHSjTq/fuKTE3nSRzbH7ZFRpVS7KbOJyQ1wN + j0NbxTiBuf7Pzj9FzkgtP9oPzrfH7mNvBkiSttgkiP2TDP98e/z5SuUwiw1P6TCB4zsDOUI77HIV + zzhlsPFLoIOace/kXsNhNB2FhfG2crf+Gk4Jl+IV7ZOwOvR6Ptp0BWy1BHl9N1tvEI8O7t80UtjX + 6ISuF0eeoU0WHRRoiU+TeyxlbSYurXXTM6okoNyOAoh7N0fsgW71IG50Bpibv6UrhRJgLbb6Ll8p + TmJ8onxadxHiMofskbNFFjn7iQAZYlWJncqcT8UEJ6s+E6lyHiFuv3d/e++1CPwZRTlwEOIT+x6q + NksTzghiT9F8FQfB6PiBzpx2wxeInNglb1o8Yp01TQ2YOdPiGinAd8X4gLJiTpLVbTbOTWH1rX8u + l6yCTC1bQCBqzmWdQUTJOVi2JrKP9ubQcmJXzJBriY2+Tpebuiq6PUu87dOX9qiVgf6gLS9HoGpY + be2xWoFKImO1m9ly92L1Paoa3M+FKIq7/nx/yZhvXx9Nt1tZdFJyyaKjq2TRvf6f/6lCPMVOKd7l + vBy7HvyCLkREapTxLqKX2QrtRs/6Nx+PmXLV3a2gpclycFHDZb69nv3vdoZqDFZGkBoGU+cBdbBV + Nk8pukNKBnTsegk9jHBSMMO1RpfBJy828mGl80t31HS7mOL5KnJG3twn6DRUQFGIVVbgwHkXqXkz + IgJezCvR87UwQ/UzJ3c3qxcD/FQd+GF+SCc4uQlSkcU1W9/dSzhLnRIiP6Tw7tVZ05Lu7MTkTcLl + iV0k8lYU0mIXQaFD4fMavVS9o5Y7uUsnX5bZrE6ba27CZ1FgHDqw5Wd63C2UrT3gj8UJGlGSv25q + rF3Nu4pwnniIvZ+gSm8hEF23x5zgBYu78WeKR6zpM6kBkz1TXGs5W8uOxYIgTKwOXKeAo+zHmpcu + esdfON2+Rj5jzUknmzAZ6egifVCjtnycEzsZLD1HhrZg8bjJ8WOqGvkbYskunAmDQU+m2Z5KQf9N + 913uGPLq+9X2+wGa0QGN9Ju+7oako+9hAHQJnBxubnTsabkXBI4yGuD3F07UrdpSPmNrNqgmDLtB + XqwPkNwm9/fJcAMrd15QddVK/phNwTa4F/9FS4ExoqlxRBpTRb/PgVq7zZmfm5jaR1qlzzymYLvS + Ffnp7mcTODywZ2UaMD1w/dB0k8wMpeTlRe1O06Yg/Zg3qHU1xRQmg7mFniaBKN5Nai3QVkwsQ2KK + jstT1Mb+f6L5Ojv2TyZDywgAt08makSx3dzKgf9cZ1NbDXUPkxkeCqX+n4+65SmptkkmIYodzrpA + FOPtlhDFQnIFohivkv3694/HFeYJ5vlRBaLY5yFMkZHPI18BmjTla96uQH41X9NMOSjlbDZCeT/d + bJMc6ZZLBvl98s/UVOAGhAfvxuksn+kE4sEnNSgeXBZhbq+XXHopcj/DyVhD1FTBgAY77vsDJcJN + S+YTzocr/W8+OZBzWzMPfGhnVK88a720145n5PvNsQ14u3qJleRLZW36kS+mlRkyUi/7ZRfD2ROq + mu9c9c65OVhDpD8i+Im+qsf3bmJH9iYlSy3Ry7QPflVBEM2lhzUOd0pocYeK7Q2iMnBlUg0oLl2S + avB2y6QaIbmSVINXaa86/3RaccH6DDF1yzk1oROH7sgNecyCUhanrMsVVXEw/bLJTOTLC+fnzSpN + h4FzVSV1FmiGRsUbBcrXZq1c7bMFnL9XIp0NVERZD/vpzbnih4YrOYjsqfLDKdTK8+y2SpaRv0vp + jHWazlj4Hx46ldSPchV7UZwbczPLooBbb4jLsaglse9Y7R2Szto8Zs3jusKxFIauH/qFTM+fPG4T + 2NU3s81W+qiD4IrQq/VDSOaJaAN7jPEAJ3aeO8G8n0gK3pQL3ieHdgdJuBGk3+BfOO0lDih0dgL/ + eaAHpMz9ebnrgmQ/nOd7l9Hl6Kez2hSJusQLJ6CdH+ap6utR6Ts0nPruE7q3Mj7fJ/aG032L3wLi + e/mvSyfqUE9At1udRFJy6SSiq3QSnVyds3JBAc5r1zyKOJKswsoLR37kxYq1sISJcJItY1BXbmFK + yzGSLC6lPQo2ynQ6lak3I1R3MKvpK7K6kKBc0SV+GKk2Xm6v2ZJ69WQ68d3l8BnYU/PZ4uiVEWZM + pslSjhQor1hQkN1jPgW9mhglcRSdrBesWldQ+IDafMSIRY2nEvc8LF55LMuv6cNUJX22+NdW5iSL + 00Qr87L6wgRSqJxblc8Y/KoDPBDTWhu7kUcHUUj79aHd+GM2yoO8UzhJhXOpMJmtrCWrBw8nh2sJ + ePacDBRQCv2nSzdy7PdYut1qj5WSS3ssXZWA9G8uK9q+F/smIL0XvnzOKB1lxDCTnkt9/zIVRnYm + 1LDpanuLpvlsvaHaBkKCn64adOodFcLFXF0WRTwIKl4r65RpUVFo7CinZyOhDV81NJLr2QVfw3dY + Q9dUbqHzKA0MeI85TfuWkj74bNYqIY6q7MPiNiJxfDaIM4jZGts5KANmB7/Spa2Feqd10fEhd7SL + N5e+cFuUlebTZO4tC2rzv2vKndcDnCJqu/JjJ/xl6olxOKiB9iH8EXtm9elHh559hCLaPWW2Yov2 + kkHS076sxPWUkBIEGi39bdg1hYMesUZLpwZMtHRxTaKl4wJY4eaSbr/A05lEBqXStWTKxn+cn5DG + k/ubi5Ix8YKHfiFDJVBY8BfeKfq6O7GU0yO2JOWyAYOjnK7RKba8y6R7XaAG1DLUPbv4ePZmiIDv + scuOBpUbL1BG6SaUK9zrrguDR1oEgfGk34uAgrCF1e5/9qkUncTu2GpYpLzlxIDRVb3rRGJRp6jF + nDavekKO/XspVsnF39GfL26ZimzPctH4b7vQvbX1zsl61283vkaqCixexnpv+fnrZbJXrabYyONY + dGfzxNy/P/aQ/WO82DoRzw8wbasbgr58xnbnU00YW5+82DEZT4kSSWaBewAvhJpfPYWuni5uSI8B + KjV5dOIjY6+Z0/XYVA9ZZ3KqRsxcTnmVjpfJdMJV6hOY4enmbpXCJxfQKShqOMC8o9oQqIwqImjf + AKWJhM8oiAcSpS9Qul6Rm8HMct6dqQJytM4oy726iyD0r1P22xVpeTOlmNfXC1qJJPhX/tvHnkQG + oKAVTXkwYBZZcRckaIlfLYkMno5UqdvXdCVCB/Dtq422BGkkG3vO6sxzQtcLqnbXnmNxUOKbmPyu + I/eY9qWDhRLp4t8P9/WlaxWA/B+Podyb796TebXWKQm7pBmlSLSF/ZbvYYeKJx1k1/h1KrrbS+qP + Ln44mIvFiVwiUyslEqu40UHfyAK5MA+U0hs2fqix8bn7OugM86IessV50Y0YQC/qKp3m2fcHTeVB + 46eBoQrlB3Z3GW3i6c6D4ADuGPsErIjlA9QddR+ep/JqIknZV0rEyf+iPvJASsf/05u7HT0Rowqz + 6lTtPrHUcmWq5sA9ZqwjlUX+kG3VgW7EKDtQV6VvZz7NvqQwAbCacrIpc54tH1azafZduNTr/m40 + IyoRAlGJAIcBVe5n32dTGgcS0E2R+Q+YZyzwYqZ6Kst7ec8DgasZxk+8F8zvNsHkM7bzSzVhTC95 + kWbXH6//W8Gs5L/qrf6P6+98sMX/oDvQVxVo/5dtuyvb1pV0SOL1EkrzOfD1983AtffG9gAf0FvI + 2WWUl5Rn1O4Tag4psfRTt8TST/aJpZ9qE0s/FRJLP19+RFWlFGv2wrgaa/Y4nGgj5rmBwgeVk3CG + RgOmcdxn681oOLsBmxf2p/l8NLx/xo5On8VHJq4aRhRBvV6/UAhrq3vmPH3sa4Gs/+x2m6CFdjQk + JrFaHdwABvN4I8woDx3o1Aq0FrYjeco2pTQcF8G4dokbFCQU3m+khSKM6l06PB+zHCsBBgU/Df65 + ELgKYoQGYn7oQLPnC+LxyKHE782ulMrWPc2RsBiVz92pWT3NU31PzJNG3QVGUvRPyzzr9g2xQ8BR + xjwen7Px0bivNsRsr7TRulZs+rEPi1dt3f1mC4UaJpV5Hu+oMOUPWZPLqUZMcjl5lXZlb6j1a+ov + HYG7S+EIT9eDIoQvftQiXVWxnU+y7ywaTMR/BcWcVK8i35UZIuvlTDj3EPojKVRwnv19L7ARn3HH + cIrNMDoua/gRDtd462Zw3PYW/LYW9gDcPQBr2O7RHduS55ZkVEe04wr+6UDG6oAAHcuviOr0oQ1K + aeSbkDPawZLulzDj8piCPPpNaGJ1rllTm4ovme9YFHZhvsPbLZnvhOQK8x1eJb3w7cdqwZErwKVL + zHc+96IgHPk8jL1QFhy1IZP3i/s+yk/WEWJ1jzQQ/CKdfLHgrPtzvoKP/pbDTz3pl36lbBkUfJLc + wH62JETkL7fecnD1+6kmGfFgJqmC3R+pueRuDIow1mSBdJGyLx47PulXnsT+7f3xx9hNDzZU1U4S + SAIK3qVghG63JKDgNQUjdFVyaF69L+8kLA7R/1AioAhDBn8YYflbvIMt6XoF8mvYkuRg5ddqyyYi + N+R1ZRNPs/IezSScDrE0B5CIAeYR1jVJXG8Mat5ni6wr1XjTzHsCKkBfjprDs6eUoJiTtjZNMbHh + AAdrqEq4mN+phAtuty3hQsnVEi64KlfkxUmVv8wL/UoFlxfwwPVHXuCxIGxfkf9agfzH5C+rz3w0 + pUa/IJ9LjrARhsFhB/bBKaIdRezKWI2bZf2ytolKiAsjhQkQxPawrHS7LSYASq5iAsBVCcv6uUpD + 6LOowrMx9jiPImfkcTeKQlUjVKi+012QbDbJRIOR/nnxmZFy+RZZsMU6f71ZVwuHegW9uUlWi3Qt + fUW7nKvoiGelBorlQ2EQ+IEixMj9q+lqmS6MsD+mhRlO2zLBAsql8qSy7MEpvN/iYX5LP2Bh5eew + EC48r7PFZJXCb+R4hQlYyChfZlRPdNsoaAQmwLJQ1XWdbrgoiKGaRAQGmCRblD5Nb9KJQA0wpWnH + OyjjYIucfr4YlxIn1iSHUOXT4VfoEyL/hle9uZlNBjjf8pKj2Bn0kOgQceKIna1hDZTGpLvuota5 + 77isqDns+XZiFoivq06Y1per9WAyQtabJPhSh36p5Tmxy6W9F5NgRBlWGBOcP+Cr75ukJoOQ05l0 + /s/nbcu+o3CXSdrKXduJ1cl4gLgdr0ljKFdpT2L7TBCLJXwbKIRd4Nvwdkv4NiG5At+GV9U5d14B + HGB+xCrwbWHIPV8YkEEkK6xO00X6m9oGvsF2mhaj4rDpw7d/TTQH3vVmwWA9LLbr317Dr8vhPJl8 + wT3yAfZupLZbJbPFC30WLqpgACprwzgFYZdrhKVxfNdV5Dr9K6alg6ayHxq8PEjy0wZME8DGGoSV + UlwDsOt9WaRJVmUeofrrB1/HV+fHl28ryXziSLpJJrP5bCPClpoySd2xwsmVIlSAmMvJEMObQusU + pejSAXeazW9nrzAKLQtyk9XtTCTabpeb5AscsMtsTYFshStPB6F4mffDO5CVrTcJ6glw+H5DdyDK + /ZpMtng/qkllT9f7Z8+PxscCu2eAc1gr+m7o0dlJXuhConzLQdUIbwNdTOGY0jh08F93ENLyGoFU + rVsnnK1AjzMvpFeCrQmU9WmaSxkZ4yvGdrfgfo5MKow155idbbUPY0XkhaTIYHq4wHnV9YcwPh3Q + 7q19Kb3TwshzJHJUXWr0OnzB3E51qfSIbV2qbMCoS6Vr9UjJeRUulUYWyCO1MFFuipmJkr5BDCVN + vH092399cx2EUpY1dVSyXCarZGOdr2H78C/iMYgICPfjB/g0e02KbrfSpKTkkiZFV0mTOj27qjBz + uoFb8hj4L59z+G7ORnDiB5proCGlCGlQcjIWuqvKofnn/Rxe49tycDWGnXwBds8cZc1EsUsh4bCa + JyJRMdbpVzhy4ehNxkJBnkqEjFcmkNC3h+vthlKYcsxyzBiFUwAtDEp5ga4XxCi34n1FjpM+nT0v + 8H52jpN6mvmU2Vv4Kjubcc+z78lnMEWhL16m8yz6WdlGIIqUvDpRI32VCHrmXx7mmLoKy3o+fIZu + 9hUqwAv5PUfD21W2Xe7YPtVuw81q77gb2LJ6qFu9dzypK/iOJd4yqNwyb3SSrK6T++xhPq66yozq + AK2la7W/9dFjbKH0PCExO4Ejc8OpcFwL7rvwZz/57cVAPnF63s5hVd/jB7enY1erLgPogVwCvtaB + pUCg7lOB6GKG2nlKuV8I0nCwZDCKeMkq6qEPY8eXFGyP7XJ7nFyKHbaDHehFb447WTzeuhb3lx3t + lP1MT+QxxXUfkIPiqBeo7Mdpv/2MkCQLO4nH2hx1kasLd/z3rDMfjXrIunRHNWLW7sirtM3/4w0i + J6SJzpYa1AHfKqvy6n83zBQNGzcPmS/hGDi5AxpgaXXCKaqGWCS0SRcEeLdfkciTzDDvs1amvxo0 + +RDnAZ198iE0INVw7/0l3mGcndr2Itzc8w+Mc/toLd1uZXtJySXbi65KBPfjd1VMR14m0Qxejt04 + crg7gh9uuCMNajEH+ZP/HBIS3wkCocV5LOc464QpQmubc2nTF1yVnRfr3mnfERkXzYuj8c3dkJIS + CyumBM7eUahaHirfmHPXfnnQ7Zb5xkJyJd8Yr9LyOHtXyRLkLkdV0Mw3HsPWxF1/5Ee+F0v8n7ew + 91O+rI70IApvMryb3d7hkQBKJHz2eU7ZQnWkr4ai1fT73ewa8fJrHOQSZf/d+w9sNMy+wssXokd4 + G3SxguJfz+YwZYUltxlu0jkMA/4ND6T3HzEneGaRj3x2c7cfMusPXMqTO5gbGBqp/2QzAuR60T/r + 0Vfj0PdZ7JXjSSV/iyks8FrCSTCVfZcH/xz8JSbEAN9Fe6U4cweyO8UZu2MIdnqEtCH3K2DGwrgH + 1ZcUz3Vh82zuA/Kj24hvk/+ESIj2o00AhVsM5Mkfl2fNmlYNz2fP+LMgkdBZlNfnYFLPRwtrhbr8 + LxAoFk7H+j/1lHUBoG7GrABUl+k0zSaJZFxAZVxsFmBzmb6x5r/g01jyF4WhRFQ4LMuLBRKuUcOg + 9Olz4zym+adeofCaVJfYyb+zfzXfzw/GdbAPHyfaR/jMyBXZnd/yKYTqxK7gUCIDziQUvx+KWOzQ + magn5UQy6h7uo+K4QeLjd+n9nmh2B2NpazmxzJDMISQPhOeOImmLgPAutgjebmmLCMkVWwSvyvqI + z39UEs5cp1wfAbYIdyMYjhHmVWM3GGRr5XrqUZmWfE1TQSSfXT8giVYCBnIGZ3Xd2bYe/rm6Z1Ts + 9+dqhb/NM+hboWgKV9qwyFRQR02QVzzCp1a9BrXrxsiJhgXWRIcGlprnud5Tdh54jkvOg9ivEBA0 + Iug84QoptV5iWYgAQ9ClEAFvtyxEEJIrhQh4ldbLn8dV2913nAo54Th03cAdhbhcaLX8KdIqj6eY + +j3NvsPEfQ/KNQz1Nh2yV8PPdwX/MPy6QZevgDWgrL4SIkAiviJZD9d3ODNgUW2FCZkUsgZBiZzM + JZHaZkbsybQskhrDu7YB06HmNzrUYJcGLb6S2tl8IhisJbAoKsmYhQVnCNfrRJwISWNZgxOEUZsB + zVgYRYET/nPwTkw/MSIyAaO2K4zcizzhAnPTlF8Nz9Hxeju/2ebsJSY5k3jpY+OlX2HCZaa2w2x4 + t71PkMVJz5MBzjnNG8hCMo7h6/S5mFiqma1ZkQeqvZxrVUJ1gSJyaQbIqE1I2EtSg737ExTmHXqj + X5aRzzBL3buLhCeo+h0uzwplmgUBYds2QAWOxG/wwdDI+fGb96iJws+L9yNaUxraG3UXTKGqY09s + XlB9aZ1gt7uNy2FviUKl5kImnJLDg8TKszkWSa9//n7p+B386nS71dksJZfOZroqz+arS7dS6xs7 + JRwP9+XYd5E6eOS7XsxlouybmYhur5d38OWUfsYK4fACt8WoCh9U3OGlBEKzVQki6/tXInmwYN/A + Tv9hcu0u1ZG8XrmVI/mwOmDoGOb6lTO58Injhk+sPaY97sa8sa0II01R6Yg2+qLpoHYdZrrNi7xr + 6Bt0efzPwU8bnwHOKnX6sjBgA/nK5LSr+8DSGdzOs3V4bvRTUNB7TLkR86zQuXYTtbWj1BZFWclv + Ll2nQ30X3W61RUnJpS2Krsqs5IszVrEfHN8x05LdAOkOgzDk7gh+Rm6kon+X7ZNbVgTBLr4URbZg + AGDiqOqx2fRhPkPUw002Hz6DdzmC7p/glFSKlamtoi6cTKcaM1FyW6SYqJnNKbtOmSdohC9BM7vH + AV0L4EVY4BdndDbKSttXUru9ODsdv1sKv4BGHoKJJxVhuSWeLmesaqbssScWTYkwhk0xLu+JdR92 + 3gYUaFji3G0kizXa0/sidovs+GbzBRS0XVIH/xnzYSBWjdqDecioHFtqsHWdeUgC6p5S69PQf6qf + vI6S5K8JVCFoYCQsnZhv6diYlHKi2uW4l0dSnR5cVgfDsWCv4NLtltXBQnKlOhivSqC6DxfV6uDA + jcvVweMojmMnHMUOMdyLowNdqGIuaCftEpl9VM3J7PtY5RdWI5D5w3ez9QbpoEGl2Zh7o4yhvpKe + KxT8+3z78DVVfTTHLl8P//1wn01mqljm7XxZLSw2ncIpNV6IfdYyjzvN0MMsiGJQ+Mu7/gXsepXw + arW1eqTj2Ctv+kYBsdFkQwFxTQxevpKOu5sZIX7YdCKo5oqk5Pmgyf5qYiQv41V/y65RW80Rt9ZD + We5kO7gDnKm6Bthz+S9D2YudvKOBHpMxPJlNUK0ks69FPsxv1xN8iMBRL8rZru4by7/2Yjf+5WGu + VU+5PmXdF/bUdmaxw4qcWxI6YoLkf3vJPGZvD9HtViealFw60egqnWgnn/4bv6NkD8VR6UgLXz73 + fNfzvRH8f6zjjxoWobCZ4WEmXAXfC0BAwqP3CTULdNxLL3xhOwQVNC3m0a2ltieK0ITYQgbJhHha + 1irIiODR/o5wSgm81zRXvKaDK+YcRqmvSGMxHbEoOM91rPvGQvWCcdz6bjlm0y68t3DNzx71gZiz + GrEy9ige4wXGPqoWcnPEov0Y6im888vCdte/zV8QAHzw00MVP6T5JqPKV0cQ8+2NKrrd9ghCydUj + CK4qhNDLoHoClTF7QyxW8XgUjeBHFCh4DdCUpJo4rqD10OlwtVwFTx+8t/Ahw2ewJa63w3fbxe3s + qMTHUsIyfav3Z859l8PbtmGLjxQeFUyK6VbUgRfafSWYdIxdvfBXBA/fiElsk7JO9eSUKtQkcYAD + n2/jLDycbBv6h2pWCr0J34uuMPhW6BQjbSDJEwfwga6MATgY+EiynmT0fC69KqnKTKiSamKCzX5/ + ycIOXnG63WoJSsmlJUhXNUhvHFYcG3FQitw5oAV6keu6oAWCvS+1wKslqL5grl4gLMdrTHLJFxWV + QizyZTL8ls5u74T9Ci1+eZPoVTqJw5o0MTxaQMn/360A51jLppbYlMinKUGfNcXHYs7AVnEqQL/Z + dtOtgaYyGKOBQqyvsXhKFC5+gQm2KZfNwfgajeRODaMRvXWIFNjN9nqrXAY0BYsyQzhlm2RiNNqH + feNED5pOwtFyx0ourKLP22tvOXx2m9zfJ2Px59niKHc+qb1AbgQwrowhb8CGvFyV/n12dfH6yBxo + TDtUD4dcPws3GuM1ELNWRwahb0TtrsxeKfaK0dfZ6jZZzP7dpZBP6T+hUlbqe3xnqNGJuQysFXqh + 2yuACMJnKHa/xFnVXqZqL1tZpT1Z9REZxsVOkn2O0wcJLepcNLtKhGUV5a79wE6PlZHS3avfUhyV + 1Be/2D5si+tdTAq7raKTfyFUlchuB+WObretRHaryh1dpZPl3cVltRKZxV61EjlkUcRHoHCJBSzc + C4ibNEVUBEQ9gG6ZrcfCPYYIvtLt9+zi4gx+Ho2EA0ZzoGA28nr47ncMJuF2skqWCXw2Vt0l83Vm + 3rzIFsqrnpe6lcEh399nMiP6HkZeeifTIapB2sTEvESlBdKx9m65qkZQnxzX4NKio2sjr3BymE6I + QqQ3hC9i7uM1VfisOEbA47KrX1Un6+Excmm4Ka6Y8wK9FMDLgyr9C0/AAa68vJY9jCkCwCm7D46l + 6/lsLeHXVwaIBe44+i2S1eRutklxY+rEfmZXNo97RvoN/oVzWiKMi2zpZP5A2r+U5Ru+7Ztsvkeq + pLWUJld/7FBeDEbF1+nKEtqoJUXR5eRkup5lMpJh6Wja0W/7+/N/EuTQnuDgIcWiOu0pVh/Uj+TW + b+6nCfsivB74bUAIlyF+UHTmyATUBdqVBRG5ufbuO6XWSDoMrKKyN5jpdrsqFJJcrkIRV0mt+Xjy + kVWcVr7ruOUylOeBH4SxNwpgjrsS3fLMSBCCzT93ggtoS4FDfYv1/gticPgCW41YGat0XFQyZRLP + VG8Uauumg2+d3sIxUUTG/Di5ZzXOsAwDtegUUrC/BSGFts2kKxiJxnB/CAq2F1XO/tLcMx1krPF4 + N8SZwBDVDzXN3lLBTDE/QArV/rJintXODq9v/FV+rKOZsyJ4hDfnxwMxX3QJCfdFAlXoeAR8hIR9 + k4dJZ2MQv08IaBjzLms7dIJQ7cGdHW+Hue185jpMd8R0hguuE8gOzEU6f/REbpjAHW1tmOKm2B3r + w+6w3Mu6fhK42nEsPZWgS9nbk3S7padSSK54KvGqIvj7H9OedEM34IEflT2VY9TweTDiPGSezN59 + s0h+VzmNo7Kn6n+2qF8/g3v+S91zpEOXiTYnxtCr2UTuAjLG+Ozy+OSItm2E7BfQlFK111bI11ki + LlAzKtNLOj/X/+7DSgQln4e8Um8AY7RMV5QzVm9YVeO+xY0SmdjDis3YVWpuGcZeFHm8nJmVz8um + +DQYFI2befEdDxBZDnnHPI5j75+D9+tl6Jg8EfWzJxnuM3+EQHl07Jwz0oAsHlcgZJbBlrGELaNc + h40ySEsUCoYsA5cRkIs3l8S6Bb/46vQ6/nwxwGWmPavMsQdCa7UIVS10JbNrriyYGxiJuVVS6E9C + mcZgrd69s02rDtxu8/jkg4Te3reMzInEeGwXaMmSFti+tTeSQDOHisf+6wOI7UAUKW63I4okyWWi + SHGVdvbPb6qF3dzD5LoSUSTo0aHjjlyPs5DtJIEeaYJkvScju+5mBhvuPab91ZR64w1q7Yl78qS8 + 9cN6k97L1YedfHWXcl1D9q85fE+VmFI2aG7kcbObzgWTASbpEwQ4eC2/JO/TZXPXt3fw9QPsitR7 + ea5ouaNzEQUlWfm+aJDefbnjyxHY0ckXGeQ95b99hI0C5t0rWKfwmNw7prM1LPcHTKYlfrzpcJ5+ + Tedr8v1nC7grxSLwy2Tqc0xAmgzOLk8inUfrRyF50RhXqvJGJPDDWMOi65JtuS/V9FNImFF7BtMg + wO4xe+EEHUGA5UPWIMCqERMEWF6lPWRy/0Wqeh+PL34f55gnapZ+EWy6g9a/Dk9AygBFCTT3OOIS + FDgUOz+Yc4g0PFeZwpO7dPJlmc3qMp2bPImOBLUWM7UAZwPzUE2qNqOwOZ1ZsjarhKAc1lwWYKys + c4L7kNnujo3DmNSBHBpFZPgJRJsmkJSG13SZE0cyigbPNY/tenYLeobwqyebu29JJ6w40DFp3BbC + xP6alnSZLmP28xDeXcejGLJ43XW63Oyqc+1V8fECqssvDcy+EO5BaEA2k1/+t83dKhVEHQeLpwIy + OO0EndtsUShssP6CprXVj/QdaqYTyyYmMxjnmYmDsBPFoS/HMQvMD+38Ei3P/0itmwXSV3XQsPTH + mckcrkEhQWl84XgdMSHlQ9aQkKoRExFSXqWzlztXNF0SYcXm2WDPkjmoZcPwaNB4i7zDbIv7buyG + ER3DnJxyO87JOl4SYlXdXs/+dwvHbd1aa+c62V0577JCEnpC1AGd22tHV+mzVsdi4T12gU/vzAC7 + H9rRJIUijcm5aqkLal3mcRi6LdJGNN113WdjIz+KwQDPJBZSigBWKIvYZE8RyK6C289lTuqePufH + 4lztRXbEyTY7VBBs8hFBZwralgO2eFcVPrteF1pkvN228BklVwuf4apE9nn/uuKcge9zK7TIMZK1 + ByNMyHEkARemq6DdXWTuu0urur42BKQz5e6699Spw0u4CglOfuwFTjkqWQP0aHicY99peNPY93we + sX8OzmcwVFTtlJZKQkbDm3nyNbtL77PbeXZdilouig9O0w38oupZXw3J89E0BOgDFvRa69ohWQ9w + AuT1xEFncMu6nToOCFmr+PxGwAB2W2d+QMS12fcHZAfbs4IWdEyCl5W9IkoHsN+7xSJ/nRSa/NGD + IfG6nNM9gt9FMVHNmRN/RvPggBOgZ1A9FngxUzOrpr6rq7RYWuLFr7aR2mCGoofLL6yfvcbiKeBE + q+NS8S/xqANOCN1umfUsJFeynvGqxAm5POUV8ltPpHuU0p4ZZhW6IzgtPUV+ezKGfUii1xd2fhFr + hL0xXd1mZWx7gWJKwytqALf3lBwq8IKuF1iWNFciZ7cL9fwzkpWMoxE0OZ3BvJgfjcRhkKxE6BBt + gy3YLCvMLYRnrqk699vmTmRFzKjkCyvD4CCi23HfxPpezJXZ3qun5bOFhyT8yOqWez1gTGH+bumI + r+3HJgQpn9VK0+d6Q6+bhzuszLKUwX/GaA7EjNfpxpwLWmPoEKLWwBfsh1szCghuox3xr8tuug9d + xOPrEU8hztOT96/f4w80BybMs2k63yTMGzev8G6nhi9PDSfuUIVJt1ueGkJy5dTAq9LIuvjsV/BT + Pe5WaPueY/llyEZgMDgKXkpzAfRNep7z/8GbVmPbvVVS70+zbbQTljCairwBoF/ApvQoXIFuMBj0 + tWA8UCSo3A2/XNx0QNYec4L/97ukufCCDnObbrekuRCSKzQXeJXm9sXxHxWFyPXiCs0Fwm76sS9g + NwM/YO2clPMVtPCIc/IJZFzklBKeDwesDr6HMmGHeW6XhB283TJhR0iuJOzgVZmwc/aRVYrGucui + SsYO80KwMkArCcWIi/h8G4RIHZKmvnZPpr2YAJ9n96xaNd4KT4Jl+MplSbln2aSAnldGBvLKCl2e + bOl5cRQ25bhrJ0QT50LkB40FaIbsQp13jX1e6hYT1rnkaypmNrqex4KoyF5YKjqt0jDYdWSlAvwi + uWfREvWPVTpZbWdUzN3wdDE78j7D6M2zi+OPanCOSJnF9EcDVEIHf6ELcHeU2BbUJwMxT7XvKpCV + cIfBtsHzlAlg8roeCOLWGxgcSirKkbMDXjbb383Tg9QGD0TgO04NS67RC3rede2TXxaBaZdIb6fI + XXudZQc8Rks/5OMsOCr+MlaWOFBq9479yUBsRe7uZ1/mfl+ML8bXMKBjiolhseoYRhctjx2rvftX + KE0pogSJ1ycsPglfOEGH/Aj9jF16RN5EITtCXyTFB8s8RbwS81rns1tRQ17gw9z192Ir3Pcw52Bw + GE25PtI8RjFVbFmk+SUTldpXPGUPacFV4fD5w3xc11BRYE0ORzcBB0dq+stO6DeFLqKx1p9uzJZ9 + Q+oRV+XxlQnYR/h/L/GPncwlkVv2ew+1wVBV3MdLHof2phjdbmWKScklU4yuSuv68qRKaB/7Jeva + f/k8CljM2SgKXJ/JcMPfk8k2Q3Vrkqyus+8PedrDn7jxiDUvsqKPRrUG2RRPPunolHHlr0IkRZVN + 1jbMxq97sIpGJy28i9WkjywAFoMhGgYVAJXDCH6apKrvbwTyE3jNHTMWKsNzUm9Ywi5eiUJI0VEY + xdwvO8C+qglQzkor9W/ouPEOwYMuk+l6lSVTjdqIn3EyRmaKGRaCpd8LiTxGkkMd0mPzHHwl9DFQ + HrSXU+B2VF6PfJ0DXEja4RIzLnku8gz4TAGTdNmosOfwkcaetqQr0oHS2KU3uhPwuOlcAsbYhC4q + h5JLmyhMtNtkTmlUav5a2QcgIGoSAIsp3YGLVrCz9suboAy7xlfexemxL/cT5cpFQqutzKZ9j2AW + EXylmKTUlR1k1/XPgSJ3nL99mC39Zdv5Qru6nWMkBAMIqUTJE1fuH+YTLCmbLRqiCDbd2VtKH3NU + 7RQLT4NuRol+xrZySjVhFE7Ji6Q/rJZr7jnS2e45V6oEuRB5eHbFvaNB/d/gTwMhAi0S7rmOvUVi + rT/ub99QxjSvcTA9or6fP0SJ/rqmu1ObnAc8LLQJ9xDUYz4GGklg3551HZ++C2WSabJ/9nBvJo4b + SiTfRlTE5h61nlOHNNK6ujXPXdQBJ4Nut+W5i6o4GXSVVvTx50+VULLjI36ZSXM3ZtxDnIMR/OSO + sgku8CxMamjlC/VuEsYYJuDtbbrGTBXYXdbrGR7yKsk0/S4ctYi1fH8PfZVQ36EihouwrJx9PhnG + L16/gAPhzyR5r+LPyHOmgtsFd5DKIDreZFXizmXpA0wUX1NBLurePA4CJ6oQPuyM5vicNQIhckxW + d8t0DCLbFtPttpvZXMHRFgmO4tBrDN/Ui8w940ZWEliou+QMftiAF2tGSaEvOnkPmxADnPQ5S12M + 2jvzgzggXwm+D2h1bfGDCki3OvdjWa9VO2oVOQ21nnuHIGSsqTyp7TSWJ+HhjoS7oTwKXb28leFR + +y0xw326dENmv9/S7Vb7rZRc2m/pquIVrRZIeLFXSt0JMeHTZV7kj+Cnx7CUTeJXwFJClye0rI90 + uQjAoEthOa5m9ynm+5624tAI/JhUkkCcrpZsOZLEuqruWS3VYtb9YgviYeNcm3STZnXzcp1up9nd + w/IOpoFMG9zcrbLt7d1wcvzxQoIpvNIsovDM6fJao2PA749Y0EEfSDNpup00bdReFBqZnkUUIdjD + nZiV3SMlweV92gmZGcivkzj4iBQEggVU9mkm9jjstvHF78f58OAASHYFvD7Nvi2wpCK5p95MOEHA + njyscGSRZSG9fhhKQAuBr40jodKmJg8FeZeCH0T2iRo4uWVUGRzOVglb/obUgDncBrR0OqYKTTUH + xStVh3yA60FnR0VxhJsA8xzCf1x8hXeFzVtOotJkBHNtAothOAd9bdOww7bADIWMHBp107WbHAp+ + 1Y1/FwuXOZyqCdR3aRDBfE12eC+Pu7wNg2AnKEOL6MAnf0aDaJxAOtXCplea+ZB+SomM7THa8Npe + FAgbUizaxjp9udyytoOsZdbh/lQz61rPxZbJ54IaJFbD6ecL7a1INkVc6X1SCpmrY6oM/u+F43YL + qsqHrKOqqhEzrCqv0gG8mE4wowdPUwlOJOFZciDOZ6fvLo6Gzy4+nr0Zgs4QBJ7PjgZV0H/VM+fT + SeQMhGARanWQbcL5sbid1RjoTwTqdKKAXOGgfSUTCR6e0yYUkFIFBmpXaEwwQ6sFgaBEYyfVrdOG + bKKD4ES1DI827e5fKkNZqoPPdruR/wPgS9V2BLNP7KFiaXVK1UFoBdFL5x+vfihLJ6jterML3sYv + WNRtr6NnrLc62YS509FFmUBS4I6X0axpKl36wiMN3yrJTNlg181GmwizEfoBOW8D8qYXBcAswdC9 + ZaDJ2gsXBb6XN5UdXNnzyyb87ewxoYUEBOizcxr0kbNxeFs70i/I8zx/OEgI5czK9xnvJUwtdV+H + Zdh7VC54N0w7/ZR1aEY3YwZn1GVa8nfF8ge5lQ0KowhjsyiJA30FTkFvsD+n3uCw+Gi+FDqJ2BWu + jZtl/boMpGr2BeqgcYPX4QvH63TQyGdsDxrVhHHQyIs066YzEeUEdWaKK15sx+VsRJHF1XTjm+2a + VXIXVbsIrQjWjowUWtOw258qDsWVhUx5gOyBMMB8XZJ+ADBUX9gSj8LRbs8hcigY1M84kgVRjOR7 + w3Sb+QNqFE8CyCGU9RSti+jwY/zQdnZU4wZC9rvjN/uhNTAqZPv9A5xT9tmTdLuV715KLvnu6Sq5 + Dk6OL6rI05FXyp50Xz73eBR7/sjjoCbLZIlJslziN4+HyXSqQVwFX7Py46tA5UmyrPq/343pXiWn + HHo3SsZ43AgeJFk8y+KlcKyLErpDspnctfILh3GT390JfI4wCT2RurjMD6NyBJNe9wbmryQmK1B1 + mqmIJcF5TNPoCS1YuAK+YeaEIRNd6WBpCJ7iEphDCH3R5NY3uiKHiACtRORplGEhorijJAMSd30v + cA5rwaTCxsiuEjw4Fu76UkipPNuenVwcyTjTFMNMcAEnK4UakiVfHg2/3SEMhEFbdw0aNyzxFC/p + Sa8GD13FWFEufI0325UghJYsZ7L7Xxkw4uk0w9TPxWb+IAh01JwlsWLmpusBrlVNTODFyKPjYlWf + 8NXQZO+H7NVnDmGO0leOU6w8NKen6kWbM+wQcc36QET8cSVBVs4NreHApiI28B0bkdVBvbewHXjF + hBRdu5ntdAG5YfHpfWFjD890xBng14zWHmwNLNLI6/yd+4J18b7rZ6xx12UTJuw6XaTzc7OeyNPw + LrlPsAR3oH/BvwldPwpi0vV9AptKVrezhSWF4uNU4jYinsexeEMty4iUqwSQNfTUV8v8D+3CjMnf + 8fnTZT0Q+e7Ub9chDfTDWHegqoh/1Oib6/qUR/P56oSN4T+8eTHXLQLRskMizFhU1rGWsB+fLtXs + HF/Cl9lrnXS7ldYpJZe0Troqmaz+8aasdbLY5SbfiQtaJ/N9aH3E/IBHMj/vyjzOTz59vDi+usph + ZemwJsgU6L31UNHLvncR0QlrGOAfnjjfZ+u8RkctmMlqtsTeEubEHJQL7N8Fhg426VwE05RSe/Vt + WlVqS+9jEO9GLIqatCEWwRyJ3HqaYxW3ELUOJhNh3IxzEEQh9GuVvGpVYtk1uKuCiHcUqPpX9uz5 + uAWu5tl7d/y7N1RFLIYGjtAvTTo+mEpgecC31iUnFkasZl0V8woDMOOtvm5pMC2K3sonQ7LRU8HU + SV0v6iZddZ2areU8yMAvZezU9MigYUE8u0o37OTohy6MV8N/vPEcyuSCj1zCKQKa73q7TFcyf1Hm + OIo0m4K1jo5DrFeYz5LF8PL6ehkOcI9Q2i66yShayMmxpbq/yN1sf8jBOIlTYMfYdhBIAdMadi/V + aSPkTilkTtjKhv2eOEjywcIFVJwwO7VABzZ9/b0i9DlSHymcyLd7BHkOc4dJbLxCLLaTALGR4iNi + iv9W3nLtD+WeAKuc4gDttQ3aqCGP1FJ54kktgTsSN8thHXxTdLslbpaQXMHNwquSaPjtH9XKXqfs + m0LcrDAMnHDEwijgjsmKJvJEVRbfenj85j0XymExoVbyA6fbHlI0owj2qKhC/9sXmBaVcyEgZjMS + p196ufwUUi83+EgT5m6WEe4cTqNC8hwGOj5+Pr44Gkm38b9TYmcEpVvgJYlsTllsmiPWDdfJ/Gty + myqt/tUwublJMT0XfR9YsF96bZWIae6b2QpauasGWp9dLVO2PNJz+9WOcR3g/NEFrbALDmTv4Bqo + 6cjWaHvT1h8zVij6WWPRz4FGHYslbU1Nx9psE52e74GZqd8gw+HcMLkoP2wSNdJXRb7S7fxhguCL + mCq7XXZGUQXFzrIhOP03+zcUOsSwciU3/LE/blvCdtWdartn/+9abPgnl8zpwLRAt1tt+FJyacOn + qxoosVy4xeLYM0H1XP/lc9cJwzgcuU6U02AmVHvD3bHUMTFbY5mg7omVNpiELjYIqYjC3pghcShq + kHPMIkc/cVkrWo+oF3VmWzKfZHdibUN/omGekHJn5IkrgGH0ho90QjE0YtxFiOP4qNiw6KJAEJfo + D8m2Wtv1V0J31KitSv2qodEUU/9n3viXmVUDWFxC24WPgt8C9ZvI4KDfuPpNF5JhsElcVEEHkSOv + /xk6YeGfXiyQy9Q//ZgXnwXNzO1KnNFOVNCBQaNSPPVEUKbV5st1lqUXvHBYtyRL8Yh1jiU1YKZY + imu0jYqMEYpU4RlydjaEialyKgtsZoXMFqrpyFba/lIBt4/pFGZcKQnmwvVP+QvmU8YlI37RwKEC + 99tkDiuDCkUO9Iy7VIxtGOH0XPUTl2iGYv1dpQ3rQnIONi0+ruFZ9m+4kvbu+ZLrY5khV2qlNsVs + ynLqiQXMpKJYGsC9u2GvLB0WiNps2ChW1+O6d9lJCscCmbFe7WGzb7T0HjJL0JdYnWH1jn37lBDu + yvJ5h3VwztPtluXzQnKlfB6vSi3s6l3F7Ia9LiiXzz/3Qpf53gh+hJGTa2ELqmG+mk+H73CyMqXQ + rG+qBvbp2XmtrxzTz5qLFUMXXrdSqY7sxPU+7bAxCcEQpbUa01dXZj02rG0esCafr5Jd9tAa3/wM + +slfjoaid8QPTj/c5ZHy2YKpbBC5l18oW81uZ4s1eW7v6To5bmGdwZFEdePYdPnJ+2SClvbqYYCj + ruvHPe4M6OPECVl+quNWzMlsae9Ua4t77wqkgZxVIgxXHIIu7r7Da0BYXY/CGUm+FarbanqxprBm + D1FBTsxB77v5+97b+/ve1/r73hf8fX9enUQV4A6Mi5kOP+flc+ZGQRSMmBtHnuSAkBs0Lg9oYppt + b8EIns2Gf169QaGEmb+eRH9tm+ocjspUw5qbJRgtts6r4T0enTBtthOYK2YZ12i4TJMveOE63XxL + U4StENuQIObBMM+dpNLQdV+vhq3DMRAjrVOZwFQYHFy4QhqS+cXZdtNadGK4sdQ6IC6Utx8c7tvj + KdDtVutASi6tA7oqo+Pnf7AqgI0AbS+ewAJQgfsRQ74IhnALIjz+j7Pfrs7fibPg8uokX+mFVCR1 + Iv+ZzkHApG9ggnL0ems6qHEH/TGMlY/CReGEPqEO75eRvlcGylOyVQPNuc0i94XDu1Fu0zPWjNuy + CZNwmy7SdC8i3l2Niy7Yot1pd1exRbROHbBSJZibpzV9MrsQpXOeLWqKlu2r2X44BrMbekHpO4pf + cYOmdx+mkeO5gaeDLLLbe/Ho90Ucz0OdRBi/DV4wp1upm3rIOo1QNWLmEcqrMpkefVirryIdmIrc + iuXJOlnZmK4FyQJ8MJIlRX252H5Osb/Q02NSBahstNgTiBxTVyv+26GU7lW0gZ+G1dFlXasZHZH6 + /gGWib3aQrfbqe8kuay+i6uktrz547KqvYcYnzG193HIHdcdhTBhnXrIve0qTYq4WKOiB3eGiUu3 + d2DTYikH+cOKyakKV3iTKie4qnZQ6i060+dzVFsXMD8EkhDosmuJBCQhapTFDHeCGZoVgZa/pnne + qtCj3mxXB8LwfbwYFWDzItcFPajCr1TulvocN5+bykubbK0YmaJNeVEFi69OXgVGr/iiiH9+nW3u + qB0cC50RsH6ygzvACZ0bKU7UA3cSU5iopQ639X7g80QlsMUNfTJrJwWqUyVBQiQ91at7KoTrJsFz + PfIbi2+ohfG2CL8chOxn/3BTPz4Bhdoh6ExjNu3Ps43L3pxYHREGG2ecR4Xn5RnXUXztVAyICr08 + FQ8QrY7DWCl4LjvmL5y4m4KnHrJV8HQjhoKnrtLxmCzvZXH58cUQtpplMcpR1OuOL8a8coOKqR2j + lOLdKFYUmfg8lNZKYPCoKQnaFdzRe/uzyOLs0bEfhY4OyULwka/pegbK4lgj1/XwynsJb/Zpx4Tk + fJ2sYHJihsJyY41QsZcPI2Iy1kmIUJYP7YUgbrnNtyvUsUNFTZno42UdYvgjwmS4oPaGxuP4Ip1l + EIh77eaw90TE+BSlhs9B58GMlp2id7ylyw1x4kuFydax6zuFNXohcrP3HriUGv32EsyYDi5icbud + i5gkl13E4iodJv9zeRpVPcQlWws9xCJ+Eow4BwtRsrCdKLu0QCJTExMYlSLboJorHXsL9vdKmOGi + 6l9UQP97tpiAFo1sNoi9Ki2j/1ndRo+He/sE3MIXbUEVdEMIFusR5TAkt7e5fwc7dJpu0okM1Uq7 + Z7ldzW5mmEJWCGWov49lxjToYrCut9MZltycvrsY32xJvc5FGwFjUfeuev1VeWDtR3WA8047wiPX + H+xfVXm4n+SAcFFMADlaW7jeTjsfKnRyGiI2s2V3MX5FzCKdfHmMfbK9Fj4UZ5wYcby+F6KJyyQf + HPND+62RbrfkgxOSK3xweFVSc19UEU3cyAnLfHBjP2Q8DEZ+CJaTDCJ/vkt3LNpvSc3SMpaqDK3d + r+CVJssCh3kYBPuGOZWXz+XarHFOeDeULP2MtVEjmzBtGrqofNYyZoD+HVlu8DAfoztG8Q4R16Es + sADJa8N4OVhA8T0F7FukjKAe+Dz7iuJ0ACtyFOIW9YTuhWGpFw5Q/QY0G2PdPY0L3doCsxPXznkT + EA7sm/0lyNrQ7u+gFpcrSyBOPzhhByc63W61e0nJpd2LrtLudXnxITyueNHdoEReE78cu0gIG4zc + wI/j0Cx6yxNZpJ8Thus2HT4LnKujKn3SSBTxYrb6VOx75M26XM7D14SCQxwKxVrdt/AB2Xw2/OA6 + RHQJWv6HsMqOBdoJ6BObRCSnDfMQV4Hs8BwtT1EwBHrWazlubzJMoB8+O3/zmh/JHRVfKKnVJYkc + ir6xSg4lEZ/ebr/AWCRHJT+8Z+T0FGgdY9+PUW8sUy3spksyUg9D17dpQKui+RneVN7nscorD/6q + Aw/rt+9PO34SnzaQ6xz3K/jttVISXMeooQgYi63p5OoU3V6YsesktOZj90M5d3AY9RD2Oab0+6Zt + pZM05LLzC96vlu3KZli7idsNL94nC94hvHJ1M7h3nrr9BD8yNE9hJCK92rSFnvPm7Omw8nTOVsBf + MNYlGKKfsc7Zkk2YOVt0kdQUhb8pWUOK+nzLn4qyue9GsUfmVE8wtQjFTuP3sJrJYFRj2bSdkv3D + /fJPB+22L5PoxyfJ9cbi6UWejJIbU7qP9Lquknfg+1Ht/vHni/2+lAWSc+Sg9+i39J+IsWU9fH1h + viy6pVL8oeAHk9Rx3RoLGZWU5AgQY9ggFW3A/jmKrq+KQr3XXleWIXrEtihUNmAUhdI1SZGsQQ6v + Md9uSpqsylPELPNymPoSnyju3iuJheiEnsRCdN0SCNMqBdFpPSeYfTDY9fNZ1LEmsiDjYDin1imD + a07Mz/p6zh5qSBvybgovIBZIA9nZ479AIFGt8tFvh75vDn6HhLpahcl7xNOvd24g6A8KdBfX0s6j + an+fmdpidC6/99rFmuwuaiE9YqsVygYMpZCu0RYzvb+RW0yRhBNPbUz+RSfIMwVIJyvOkQi8UNPy + cTZlA5QiUve5Q6EpJ6bslaKgShf1XmmYCziMrszxS+8+gtm6wRxqfK5T1WTEKD1MdZfBE1eR0kzS + 5zNZE6oEIfslaN23WY5tbbVgDmIqezxCiF2od35xs0kXX9N5trTNgDlYlSVaKgPku5MIlzmxzETJ + F9DObaaP6lI3JN86ahYXn/kle+H4XazQwlO2Sk3ejKHX6MuSUUwwpeJ8H9D/qBeOcpbHU+QV6rI5 + 5g/ZszzKRkosj3RVVriWSI+EBiLGCgagfCxXNbJl4pqZgyu8InbLIFY6WR/KU1Ajo1Z1OAR342ft + ACGBztj1/X6f5UZxvKuNHqzIw5ppVSsIYPr8A+uSH0W3W4XRpORSGI2ukjrx7s+/BxVKchabGBZe + 8HLshh5YcCMsjYu5GUWrzYnSqLgYRV5vV19nX6F3t0sspfsO+vx2JQoWfmdgDQvwWwFJ9EqUSQuW + c/ijAmzCsujreTpe41qZDq9XafIFyxqS2Wr4dZaI9ANJLp3BTAVTY/yvDHHPb2VI7N3D16ASEXti + Jbe7v7HhE01kZacRt5m7cexGTmsq1lMZtwHOS00N7oQESekSNXjXnhrqybBLCfxZIMCPoYHtiRys + znXP+X+/K6Mncp2u9cv0iK3RIxswjB66RrvUt80Nl6k08Cu+uAigFX4f/mNzI7Haylfj8tURXuYj + Sf6OUvIn87tjceIzn/4kbCU/1L+7Xjg4LKePPG9fk8k2s04NVzzd2fx2NkyWy2SVbKzBo/orbfco + ee2kG/TDiT30w0kt9MNJAfrh+LSUvMbgnHbDIChDYI7DgLlsFIax4sb9kH0bJzc3CCPzQClPFH/G + 2poUD3OBuX69ypIpKoW4zWAVXbK4hZ2gaHRvl5vkiyiRS9Y4FLdge45kJpL4FbenTHAa5c2sX5XK + +AxUQozXX11cVfL4C6+JWRq4NT+sN+n98NnV+oEtxxeblbscw+/+UqWBHN8uqyhSnWot89pFZIry + nKhy9hVea3e5JWuG6DfE50RfNdJLpFlBI3WYEjn4qw/3AJeCTjX2XaeH6kvRs/hI7RBY7VXdJLSx + Vx1e2PI0ihjFCqjrkj4KBFksjpMPY1g9833rA5vJpDyRT/vn60vGOqQr0+1WO76UXNrx6apMV/79 + A69gHvv42cUN33s59kLP9aKRFwZuLNOVxed/STcZ4j2PhgX1EBOTv8wVzs/nL3P+9EF+jK+p3Wwd + L3J4w14OB2EQxGWCFQLcTscqHJcO13fbRWm7dWKTtuX0rCx08Nns6QK6FfQtnkc5Tv4kW3xNV2sZ + Svn+MN/O8Q38wjuI9DJMLjEvI0xHOs3uME9APBOWnkGccpjB82l69zBNx27hzxKMX37vMP+DxuJf + pOlU2T86sxB3fQqYTIq7+wBnpd58Xc4Gsp/EntXQpx28yAcnbfwo/KU+we3F7NWnV3Wid7SEJMr/ + JJlPZtv7PUo29DHQW+DdC6JQD+t8/yoSz5XbshN1wCKk2y23ZSG5si3jVZmH/e7Er27L5TRsD3lx + 3ZDzkce9UBXYwbOoEiUED64csMUonXKl46I+JkY4QVSSIFkGpiJo1m4xCIUiiTeGgw4ryOYbQtRI + l+vZXIJhzEHrQxJSWFk4oAL8TcRZVOQiWQjc8uGzi5Pz4yOkf0LBMtH6ZuJXTosyYKV8pTxaaW7+ + JZqtfPMPA5+5NTRnh8kvUJz4fhz4lbMFxU/myf1SdE2DLo/kZ40UwDxAKs4ybgp0phhQ6bQpoGmZ + ILEmdKTBBewF8PeS2PsZaIXI8Cn9P6Yw87gqpJQzQZBVySmHjR4VJBUan0Kf4u6flXmFA/Mli+R0 + boRImwaSLVHm4mGQkA/psm74nl2+G58UgWyTjgvBGDWZ+m0/sfdeRgPcAPQJyGPWJx4ubZLNc8fO + EuF0HJfnym82yap9hLbFRzTPLavwoNU5vsMjSDDcOzcQS+/kvtIaeU9dgk+5TKYsHMKsGs9nX1rq + t+r4R5lLSS4nmxsWWchoyzAGWcJaezu/ZXuK6jVNsofCryBSgayGPd5u6Puooj08mfKx0gk9T9a2 + Me7b61R0u2Vtm5BcqW3Dq4rP7XMJ15aHEahcJYBnN375HLZI6MkRB5uXS63qbJ0JEgqBM4z0R2hd + wAslYAutsptMRGagK7aTjbDRTOYy+oM0yvwRc8bNQsAO8xWnXvlvVdIzo1LLxIX7mG5YPd50SZ3h + bvlEL0fjdn/x8Nn58ZuL90cNlrPXrNqAZQfLucpZ13ubBdS4KIbDNH7E6jrP8131TblelQ+bsjxL + /g/QHSsiD5VRjFaiLhHHbllD285vtkX/anP9HyzLsPyCsGj/BafT7BdaIQOxGeRlbzGRA/mUeVvT + x/uWdcQOeVrr3mcfxj84JggNOPs+myayPEf1XAfnxR4gAHJJqa/pvDatjsF+W9jhwjj8xGWBR/oM + DkeWv9qeh6SvSBBc1gFFVdxuS4KAkqskCHBVOh4uP9ZwIJSo0RFFFdm3YjZiIY8DXk2dXZVVWLQx + Pj8w5TNfz6gXyeRf3VfPKWVS5VkCZPLVM5H7IfeazEcniN0wqNRSg5JUIgS5S/F1G72/jtPkVmDc + 8aFfgjq7v10o6J9l0u6RGSIsvHuRIKaNEsYETD09GwmpNT0yMF6w+/ghB+p8ln5N16a5kq2+wE67 + RdM2Z7TOCeheFU7a+YMQrfpMXAChBEeXDS9mN2w5wFmZQ6GG7kDaxaUtDJYoGN94TLcSc7c4hq1N + 7CYqlIBYPyu9Yekd5rkp2jr1f4qhFKmeqU5p2+NLLCJpoexcfHYHhksHrMXjj12HFkZi7MVhdYBv + /fFssEAmRsI0tbfB6HbLxEghuZIYiVdlgsnlRdmvzT3hkDITI5/7cLB44Qh+RAqm+/3DMiOtCab5 + p8t3CupoMQf53/7aMG9lwlCRXWECSOjU6uHmYVUk5E0It+jTJGEEPnE1+8Y87K8VsunczLcZIuvi + OtQ4/6fvLo7KqG4Kd2pdA+mmBhk0bJh00MowpwES2e2fTo55nnnosH2yvPqqBvAE/cKf//UBtnv7 + dUC3W60DKbm0DugqrYMPx1e8AhOGqaTmQuAvn7uwEBxn5LJYZwh/wIEYHi/SNS2H9fBKoZW/NA5x + gTG+2SSTu3tpxyqqaTUzZtOH+QzpmzfZHEb94gy06QUyHaxpShHkyAu51D4ka17Nfirmb8B+rsEd + V/hu2/n2vjYxyoV9Lmh0Cbg8RuO6rakdSVeNq9yQXQr/l8OPxUwrjFM2mtVFmXrBQ3fK3mzB0/Gd + MhR/RergTH12+Zs14GJp0I0IO16wGPcJ0lsovSx9JU5w7BpQ4W5ucA0Kx9E3UNDkMGC9gJjH2oz2 + YwKp9wlXu+77W23e9rjFvlKba9J6SAIII6HO1M/7jhpISKbvjjXUUWhESknbyrHRs55AspcKIeDG + URbVtc8eK8miXxiBLqKa/EXMpQDHPTawTsfp5i5ZgHp6nysItQgFu1tQp2mkQCGZd+J1LKzLH7KF + hdSNGLiQ6iodkHdFTVHhBFwlU5YrA6AyUFDNFCqQ7CMq3u3AHtSt9Kmr4B1lulw6GGcdinx7CHx2 + 2/nqzd2nvXk+oT0PtD+j9LdZjDX2ur3IFgbvnpwL+xvfahOKFW+16/1j/LoLc7V4wJa7mqRX2avF + dana/3mFHvoygbUbVwisfc5cJx7BDy/wdhb/9WCvoQK3TNGVkK5UkPDP6Qre/tv4+i9NTKthkEPu + era2Z2u1ju/ICu2L1/x1Ryxk/YxlfbZuolierS4WC8nHX3FgiUwqNapHzPJyn6kS2Zh18QTh7bYl + sii5WiILV2mZnLy/qhjAHkNQnpIniEeO57IRxy73dnmCQP5f3BO0yq5FapWukMGw7bSowo3Q43xP + 6KCUViO8RW+2t9L/A7/xJW4KcqIYRJnPTq8wpKaLbpbpEjf2tUIdxa05Gd4m9/fJGJ4b//fwOlsQ + 2Tv83xxRdhKDow7aAZE5wxlm5T7kAiS+tJipoikR2Xs7uXej5dHgzR+n2vEPqqwvzMvQF8dq8a0t + aMAe1wzs7MiKOHEA5B/dqYJEvz33xNuDEnmb7CtM7Qoa3p3zY8ZfsC6gX/lD1rSkqhGTllReldta + nb/ifJxM0s3DHCbABF4NFsHDvGjC1LFaLWe344vhM5kNfVRlMlUvgxZAyPngIEeGvSmwv/b+w/Xv + DqCJ/6fX/xhfhsFay0IpbK9FcwCkh9o+XJW9wHmn7AW43TZ7ASVXsxfgKikVb08+snI5G2cRq5LA + gsXgB+EIdArXDdu1irsVNFDDUv9XVI+ZE3jC98GJQnt9j/7eU0qN1zRx69kt4oyL6dMx9+iJmI0F + CcIIPt3X8PQ9FUtyO9QK0e22sSS3WitEV2nSn/9xIfj8SsEkj7vVYFIYwIY6ckPMb22f9f+aQws1 + uvRfaNZXoqq1Vnex0FxSVQm00PVyJnbeh7EiqKIQyXpIfMCgk65ANR7PYZ/ERTO5S+8zrISALXuO + IRZMg8kLOZPpvxJh08MYjGiAo5NXsEZg/UnVdTpbw7nwgERokxUW2U+H8/RrOl8TaCbq54sUy28v + k6kPGv5NNpkNzi5PWJRHaEJh/T6BE1Cbor5cQIxFXRYQ3m65gITkygLCq4r05G1NLNbjleUD1qXv + xyNYbVzBXjQvH5D/114++tBwA1/6VHZyHjzNyJKeiypBhnOni1sEb7d0iwjJFbcIXpUJMm/eVjUY + jzlx1S/ieh7jIw5rWllLxzA4D/NsvZ1MZgtRGY2mSk2y9c1std6gnQRbkzjQN+lSxY7/BsfxIvua + /c0MWmOpNoinxBKJhTJNWe+F/QUYlKavaUrPZM0lBmDTuayChKK/pyk87wWOid5iVDvWCkUCRZBo + 6DZNsX8WeGXhg45jqEauYaDus0WWF8qLFTCTf/L/Zv5xuiVA29b3x+PwbnY926y1uoSwAfBTQ4fB + dEq2GxB9D0eRSOaUqZBw77PjyyuVaSCtioGY8bmPh/RP7BphyjS/zQGZBAcKr8M328MD1Jsa7PBI + hnhvEab3kGr8furhdKJoMQ02W81u2xK2apM7HaJ6ttgKHl1eO7bCAYKbHJN9VQTuaeDo8zUKiYlo + dnsANAOX4BM5IdYhn9UX0oOvYXYDvzsmsHzGFmRXNWFg7MqLdH6/Pb5wneFNAkbBw6D4D91Zb7IN + H0zxP+inZB7RTSKTaNGLeIb/2FmF7bkusf1oNkokcdrIPV1B6MljYXs9+9/tDP5YyNrWLE0V5zsC + RuIZ9fHvr/OaRMt57/nMY+prcB+WWfDpcDLfYrW3FeakFuZyyaMFixE9a0IvLXxfC3xWc0qNIxRW + RUC/RDnX2fQB9rjbZNEIQ94ozyMncFXefYK+Njtp4kiJqDjs7dXJ5WckRziYon1PmJuINXyR5eNd + WHPUWo41y1T02u8WkNXPWLNMySZMlim6qEhL7pWNaFaoVBj9NEb2Ggx123uv4F7RBJFRcaZ4Z3fz + 7dmTmRzK3uciJ65YysZXdZfXI6nf3pzddo/uaD6o6Q7ysVpQ8dmv2YO4B58MH589lnjfJH1ySwkc + lVXEI/uIBt1um1GEkqv5RHBV+qbenlZ8Uw53WTmZaOzFYeSykQ9nQOjndOKr9JZhJpDAbJ5kGMhP + RAg4h8QpJo8LAHYJWoOBfvRk4hNlpp5sRdUEGEtKx6DmCxepyEsA2bpg4BJa78FBAMe45/tOpRxA + TctiaZQ4WFktbpNTY2/XNpH7IFpaqHVCIBtZf03UEC8aXkI/jpsaAx2KO3G5blRkgN2usm+bOxzb + 35D2vFApaQhnPrP6Ei1c1Bgg+FEDLoEfhxXogHaJDfxQNdwOF6AlFLmgzDHhTSzLDe2azQk/Phb1 + oQrZhLnAHNP5hEW3F2ejYlucBWHgxf8cXKphfdB7PX4VjXnddDidT8KlCZvb0DWNK3KAG4nysnCP + MmmwZ4RuZ93P7fRbFiylMbkXKnPFcLfslhMwgh+0GKkWR05LXk3o0HFPZgLs783Gjo2jxyA/atmu + 7DrxsekxK7lKPnF1dNuqWr9FnbBM89z4b7xucPj6GWuWG9mESXJDF+nE/PdsMRnewMmX6gEflFaB + KhrIxSFwfcSjHilsDuf/60JY+KhkgxYZTk0sfbsfbQI9434Qk/nZE5HgjyUBe2SeXGvuPnv9+3Cn + cejU0TYR7F0fbEP7yd/1zp4xy6pTqs/mIh6KTxB7VKvH07pX7EX+CNjdgOuzIHrrv2C8mzdWPWR9 + GqhGzONAXq3z3BQMozzRViebJnM4Eoe1CaYdxBhShh+TNR/c438Edy0m5DoiLTX328J8687tGARc + M0MaL0bHe/6C0vs7u6/3kNrxpP1sp4tflgGveJ+I2dFJFAudqL7bmsdzvy7rD/Ob83xpzjORWmqR + I75jI7LPXN8lKCy8XA/y+tjOesNx6W1fdJVjO2DuCyfs5NemR2zd2rIBw6tN15r143/fjN+ffS4+ + LpiciAGXBQ5FD9eLDI9HC6PsJ3Ivdshw32lDWX3GEzuAPX0Axyf8BWMdD2D5kPUBrBoxD2B5taWS + 29x+sy3q7BVIDLPAo9AanqRuFMkSb+I4Ns+X9iie7Zl38ATpeAg+3vkpw7FtvX7I1+0j/omXd6iY + ZODLAAKPOyBu0e2WAQQhuRJAwKsS9fj9ZTWA4Du8Uo3MMFfE8Ub4M4pkpeVZweVojlCB7YcyfUDj + ucacF/j8F8PXsP+IumNxdFL3TjP0NVOC2mQ2VUoNOo3WL+D70rWYMCoKQR7duwy1FoErew/z+i6d + L7Gt1XYmUKau1gt3LMSkoupR4d0UHsPiZ5HYoA18HZ74eLeqhifMtVIKUTTzMziuF3F+MDmRIaeE + TqQNyfa4AMbvGikaDPkFwocdGIqlXOBGOgklXrOhFn3WhSljTJfy5FIJ9LUfLe+X/fpKnHRdZtor + k4vVeJGCk+t+IzgaktVGAF0ieSquJO1BB9v/MBDKWk6FJ+I9fPQGajMofwqd9s84WQdyjVaHut6L + bp0W10nqbt98oOyOMAxfOG4XbVA/Y2t5qCYM00NepKNoMbtZqy1kYPyj+DxmwwQx+Ul+HsvXYwdo + dkB+dcme6tPbEHlU+CumH5aY/jD0q11FtkLU8mE1m2bf0ZLQWe/7GUoEIHnxwYk9+7wQut1KrZOS + S2odXSW17urtSWDWiXgsAK0vKhWKRC/HbhBHrjdyQyfwVUaaUmfzMiTYw99e5qmgIkUrU9jPOSey + 0Juu0klQLfywx34UVd2NIXk/8AI3bEqTUANmVjmxMuOBAXfNnJDFrKJUGR/bQrLrRH7QRPRgvq5W + qK4ui/DGk6yQ8obOR00gqjJuR6UeN3ILAtZcgyJbH7zVcKuFlAIcJzf3UIt/LkdDGj76GUhI2HQS + 8uXRK4IKwT/omPRo+Huy4svfXs8uxK0f7tZsmUOM3MHqSOfi5nSDH4talfn5+NQyW2/GZi/gTTCY + lXTiPA1Z6IHkeobDjkCM3l4OxNxXmljgML8Hbl4sBGfaqV6cFB03G1CBKdgPH2x+b22atZoK5Qlg + c84EvtQ+zZRI4wuqXLVdDr8nDuTQQejOrIon4DUonFcHA1zumqNCwxAbwW/mLmGlb3ZCYn7U+hbc + mmuXbSsBV7sWYylytwItqkv+/HAJIu3VBLrdSk2QkktqAl3VeOtB2fvjCgaZopLggZKAuEqgJDgs + jiXe+jHCZI4VF4PsjRfDC7CJlZtFJFx9f8gjN3+qcg/lYjleLYOKpnD1j8uGDM2INZJAekEMm31U + 8bB0Tydl8M3Mq7A/9VVSnbM0rNL7bJrOy+pK4LpR07t5gedHFQrN7iIp/7C+8/JaVRrTsU5yy48m + UwHhTXynjDPXg+n2z0HtbCE2TXLRSDaD7B6BDxJT88S5VJwUirAz/Y76xS0sl7vZeoNAX1+T1Qx3 + k/f8+H+Gz95v/s2WR0Ll0F00vs62oDeoB+DGAa4CpS94Tkj6gusKU7m2ay29NV0ktJGO/AJuHxb4 + Qelr4Vsx7WWPuhBkkifSDjlIapztPEW4S4jj69uKdeXX/IGZk4fa850O2fbzXpJU5UvQ/rRWZ1ms + YoNu0C0GLZ+wjQqSeCMkKC5JbutKitUzSVyL529d7k31icoDw7MvM7cSMKQXwTJL0MeeVHJnewOe + zHQT4fbWJWqfJPqTbatD8Fr38oqpheP6VMv+Vk+ZQmDpgBQfuahCqi96e+nEHYhI6HYrBVFKLimI + dJUUxLO3VxVCHicuwbC64cvnrscjn41cz+U8MsGKiTJ7vc4mCA+2Jh8CHuln558ip/58VJ0HRzWo + 1fPs23idzNFTAtsSDptyNZ2l6yobfNeg2pOGc328Lhzg4GoS8SiWID0/zqPdF2FPyBQwqc9ZtyIB + 9YgtKKlswIAkpWvKcypy1fLkt8E/PnyUAcecaiAXhBWwXiCLA3rib49YQYrkXO8iwCd6sW4l/R3b + iCntC2HSYCaKKDy+8DS5T26RZmZ2v50flIK1dwvtWm7Mjdm63t5nD3sXUv+E5dZjlrhafFyFAbn3 + mjkvnC6owPlDtoFA3YgRCVRXaREWXn0JdsOg/G9DjqiPR9D3pxvO69Nq2Evf0QoJQbh+uuReB1x4 + ut1KIZGSSwoJXdUs7WEF/yxiJke7BwpJGAVx7I/CKAowgwznxTvQ8+eo7BOuuMbfScuE0+n3DTKm + SeX7TqGp4wPwwTJ1RIBsEefwROp865GZPVJgdc4BuASdaamyFjmxjRQR2KpGSNmHURvMZ7nO5IGf + jzfKMdJiNKt72EdNdRiCaRNU3Gn7pT8Z0gppS0Xy5tqhaYZzc3kzPVyxNa2GwQeMCXOTnEvoBWoq + 1w3dZi43KXzwa80mZDQPNYxaGIQD+Z248tu6Zu8j/jDZTVGB2PGFydUDzlvsxsLLdCPeRPDaY2+C + tiwSxb4eBCa3B+hbb1v7T0tb6g+zDpe3cCl02yGsPrIv2Y/OHt8H6fBB6Gzq2CcQ69eX3OmQz0K3 + Wx37UnLp2Kerkg7m05VgPTYOfhYHUQnpxHs5RnRexkaB6woHfBsK7/UKWqhCt89nS9gLRHInTOMS + cyhjjccOHA0Bq7gR1qmAkawpFyrSh4bwv21BH99xHwGa1/GciMpwiCaEvnxf6472PKr1Xaar7Pus + A6ZOr5lmfay+Pgm7Q2FRN88Em32rL4xEtah9zcsYH0cvnLAjL6N8yJqXUTVi8jLKq7RMq4BSzy7P + L47qCFuGzy4+nr3BhPIgcp34aPCHSzVkF2PtJsvDjGf3S69C6aLfiPse97xA+vAJi2NVQjo6wBFh + K7EdHxNeUkhRQFWw+gVwS11tr+27dZP6xHJgnVzPqPXjNKg3ux7rUnYlViPBs0mJsEo6oKJZczH2 + i7jGRdLW5UHQDmoTCdQm4r0JX8BZ2mkPkc/YbiGqCWMHkRdpA5nM1mNY5SXqmuLC331HsSX0zgbc + kdiJFJNWPY/5yxlZDYo9++A4mkcHTk0T5+P5bPElrWlrkS3GuzGBDs11V0dZ7BG2wBRl3GXzvgiv + 9kgntJLpBb6EJiqP+eGoIX3koKt1RBnjpx8ct0MqGN1upWFLySUNm65Kx9pZFUmQeY5JEuPGL8ee + y0C9Gnmu6wQKSbAOx6RY2iVxx4YKdwwnFHmrZr0gALKYeTysequ6RgINOQUVfl8Il2K7iAfTkKcd + Ry73WTlJXHVak5MK/q+TvINQ8gLXb0LnU60N9pgGr/LVpju5CBOUn3OaXXLzLRuePKz5+9maD4uI + A/DSsxtRwCe+MxX8ZyJ17PwdG36R5SaLqbh2+uEkLAKVDXD+a8YS+D/hzvAIyqIXADxktZTfb6Ws + /LDGW1LP/Dj0ySDrhpy3K8fl6ebJ9AYl/BOU4sDL07jghdPF1xRhU4ZwfKb2DsCu6H9uEOY+P+VI + /VnsEn1hvPiBBCivQ4hD5G3awVorMWvJjPoQ3LxgPVcmp6tddVy7q1q5G3pCDQkjFR92XbC3g25l + ovIZ2+iwasIIDsuLEjEkTTbD9V02+aLTMaqXhu/XS66ZFoqCMVocujFZBDHtY8UUA9AXO2+IrhcQ + zIjeaooSxdtV5VVQEX8ilJYOD8cm53mnkuD8oW6s52ZRcH61hfd8ma7ukR/PJD2PHFmO4YYd0Lzp + dstyDCG5Uo6BV/OqzYoS7nplflLv5TgKYcD8URSGLAx7K9qsquL1thgdKKWKzcaaBcZjL3biinLe + oX7JgK9gYWPk1/ed2A8rLakvr0Sso2bA7/Yy079ATWh9rQfMl9oqD893vLApJi67vbnKlJlVpgyr + S6/v8IeoLl2vGRaXlotGq6Wiqvtl1Sc+DLNllRFPfZ43LCLg65tsPs29wGtEDVKh9reXhVpWtwCv + OM++rRtLT4vFprLQVNsMHth3A9n1uG+2D2fvxZ4/PQlby4mK8H/7EOi4ThzKg1UPbeWtRrizQZ81 + 5i81Cf+BBbiP1lbDt/1qBb+enq+0N3er1fk/5vddn1q21HqJivosDmvXd2tFbcOMZb5HOvTF+GJ8 + DVrnmIKjiFk7BhX0a7rYNX1bm60zwR65yfbN8XHbbijOipjEI2FBB5g5ut0Sj0RIruCR4FXFU/N3 + t6zYgtLAymgkz7kbum44gh9xWKojqaXfvl2l0Gk3820G9tCkeFg/O313cTS+2ZKRJC/injqfCY7U + rJRPiQGX4RIFo5NLY81TpshyDt9Sw9fcF5ntE6g1Od7Ct9wltw+5z8Ao052tK9BoCLN3Lw0NTLBZ + DY8/n+b6luxisFTHiRSuOKxkWCUdPrs4vgLVT200srTleHPLQoIekSOWaHHwAI3VPWqJK3o017TK + z5/M1mjWwIIQpE/p6ms6HcBr8jiHCInCHiBCnCAmdj31rZ03h540sIC7xIuQTFZZy8s0aUheSOjf + y1k6ScFQBuNjZkiC0W70UNYW5HqOjGu2TARLn/g+knrlO1F7KleR78DzXrCOkW/5jG3kWzVhRL7l + RUkneLf0ZZb7ZTo5Vq4rDV+4ToeXeMsAtGn4Lwa2/YgC207IDD7NQuFQnmZsO3lAGqUXaFbOVpTD + ltADCBKraZptrzV59PB6lSZf1OshjWgjaGSlLeswvCOzRAzcUgwdgXV7fz0XK8ku6h5wij6/sYO2 + fuS6LpdVP2uv0Is5XwRbHGytX9PV2t5adZkGxtwIdbb1hdrQER6j0MsJfbJiRVXlLbEYreFogSXe + Db3B44xgIIrLq25Oo/NDf/1ucl4O2pJw9JOM2eJrsrZ92Gey0lCdNLiIYGre4optBLZuAvpxwjhP + qkoKSBv26wREUN5nhmf4Glo0hB3K//jLxvOItrISz7PyPThxLCbIfLYQD89Vj+8wElEPofVU2Pk6 + 5df/dYnr6UASG8v0IEm0YoxtYJfEup4GQaxOkDx894j6oUjRT5ijetC79VQA0QO+iV0Zhf1uYiOt + vkcOrOZwIof2STOxAeQdAqQa0SLbKaXOlxIyVkSOgaUOu/2syP+3JyarKzFZ8Utz2z0RfVbzphbn + ZT/J80qc63i1y2T/lbdv6L4t9h6pel2XR13qdfF2y3pdIblSr4tXyTC5eHOJamepYDd2vErBbgxj + Hkej2A28WKIpXGw3lPp0/PrEcIHdzW7vQBGXixNVvovpyl9Kbw38zpyKr0YYd0kD4GwUmTHFqzy7 + DaZOyCspgTAJx2pMJmgZbDbp8Bm859Hu2KDnlNhgG1rL8fe3czhGV9vbgk/ACPdFvglw+/ZiVCN0 + YPfSo7r2UjOTT/h15qjSwryAqSduXqGpuBGWHqjD37LVl1IyHg4MeWXgN3c5EJNDF6XCR/Tihoko + Nayu06qS6vIonkAYoNdiyj7KCC0PiR11UI9zWng8oIrO0uuNwKDYwiydCteh4U+/z76mynO53l7T + rLVV0NXuSmWRnz7A/mWfMEK32+2uJLm8u4qrtLt+vnznVTZXz4/Km+uY4ZEajOBHzL32oshsDo9U + iyKV3ZRfq/UsR27I6zzUT8rVresffS/0qLiD9EwzSAvbwX03H8mAKmxINygIg21wjhlHe3J8qgmn + 6IJ8txNdEN5uSRckJFfogvCqzFD6/KFKFxR6fpUuyAejPuYj+BmHjnRNrre3eFrnZ8p4PvuSB/dl + ItJmXsO6U3Nqi2264RyNnDCIOKvlyWk7mn1egopvEKlnYdOBzHa92eB0DuO2ykgRhSmyfriXbyZz + VEoKywg3qn+h2gi7mSJyh918OxFHcs5vM0L7JQO99GF4vd3QG86gF+Hf6vZvd+lCrOj1MFmlSjBt + lNn6XjiqREbkAAdcs9rEntfHCR0FnnCuGVnle+ebhLEQdqu6s3vCie87Ub78D8uQiGSVWEnZtLKm + nobagUvAGN39obJ916fCZ1z3L0Ws+zYtzvR9w+g8JlMpm283aTfBNR3PeRTL97xGS25TsL16SwFQ + e7hmzQk4f8FZN7ZO8Yg1Wyc1YLJ1imu0l3/b3DBpaMGvykM4KPw+/AfeMhA3Dlw3QGhsCZS1L7RJ + pwSiHkT8cNKBp7CK1VyjqsLfP3DO7RVUut1KX5CSS/oCXS1rCVxwShfVUvfl2PUdb+QHnLWrpF/m + IPE/RCVloeM/eTRhq7L/HfhzVDuroQdaF/+gHw9+6NR06X4qudZlnhRFb0SUEu8/OMy1X/F0u9WK + l5JLK56u0qny54d3vFJHHIYlf5/zcgzXeDCC3dyL21f/3Ryk16z+v1DuVUuKGyVfIbmpckNTipNa + OOvREIdmOhQJtOPldpVDeqffl+lqhif5+pU4RHLjIiOmhOFme59JM+zZp89/HIEOBM9Q+gjeq5ER + oL/X+I7SXIMmQSbYCN/W+UjAlFTpWmKXAIGaiIk5RPm9t+rQbcNQC0KUJP358ZJxx35B0O1WC0JK + Li0Iuio5Vt68ZRXISjcMSk4a/+UYTGbfYSOwmHko18RbwhKHgfjbNB0usq/Z34Y4xIsCOB3m5xTq + owVUpD8W4BEzmPfJv2F+jz0C4fsOl0FQDiSS5/BiAsLDXNVIw8PrmXCULbKcDm/yMJlnFfyiGU7C + 2TpTr3o8TRmyuiT4U/w3lKaXTiHEqwLJMJFcHLMp/kuSwuATtesdM/1Nvz1vxpyMYAJ4Fcf92ceL + hs8olevHLeCY9aKpnzIxQ6EnjQEo9j71dC1qhBEmADPZ6g30DpTPEfxKY4IY3gkWlXttZEBc1gqX + 087wRjc2EJQhFmobGPxnTe+B2Ap0wVDIKe2UEUBUS/+2YqvUplcdKLNdq2TEemDMsYPECSOsYfJa + f/vA+ZncprhdqE5p2l6shm4vQe1YmtLd1sP2ZPUFj9nej0D964tY9nAAQanExI5CB4pje78/3W6L + DoSSq+hAcJWUmA9XNehArhuX0YGeu8yDP41cFvi+DDT9PpvPUwzSf4cxuXxLMeKNPOs/rHsBAOJh + 6PphRbU/LcUrzQOeew0+elNcTrOWLf61vaUhFjq4ziWUVSaGmh8218s6QRBHYZnFTWm2Y2VRg/pe + DixgyKqNyrb+xdFlqRwAz9bpYr0dGpPoyGgjZD7b9eYDnZohu7iYHBA4V+pjCqXAObbgK7OQBM0R + FR+D4/X8fuouaVGgIPn4WmUd6LkxwDmZI/YQojX2j2ElyD4U4qyLFtSG4shI3s6Bt5b4RKp0XSxX + xkeS9STD51Mz/9jqY7rBR+K+kn5DOxLW+XajYqwJ/AfL33rD3fnxJGw95mn0gxkthJzun+zR17FF + ZYenlzBTOhxb4na7Y4skl48tcZWOrdd/vImroHZh9djyw9gLo5EfOTx2291RtyuQ33sp4F+Svko7 + tV0eHsIutV+JVsxlugQLO/h+6HbLdAkhuZIugVc1oEvF9YP5IeV0iXEYgxkUjmD6cYSPwPl3VjhR + q9s9+gQxwW05xxqXBDlQpWdvnU5W6SaDN5VcuznAS9WpcprNb2fDr7BlV5DOw7gR0SXkceDzWqrd + Lh6aOArghooYQYKBITlxppjvFDqNGiBCbwRuJU8TFu7tNlk8zMeF/VkTirYBNvpO1AQ0E/tuHLKy + AkeIFNSlTXkhJZicXLWC/cetgryLo3DcLjJu0tbglAd9MPrn4BQ6oOQHKPfAs9O374gp9/jNxVDZ + bIUAydpQ8eAF5zO0jnRQCTEV8TVHDe+MnpC3l+NNVv4L4r5sF9OKfieeAOHi9iKq9yQTP+SkXSMM + i3aqcJgi/SSRSmbHwpDKBsf36ZRepHumiRgtreKMe5Pbm17IHarLMyOGuIg05dnsVuTGYQPT7aRe + Y3xcaMWD+VEoZGfuM5YnERVg0MAVILQ6vgCVZlVmttqHLQMiHX1duJ/hXR23RLuX6Ul2e795keT+ + +eHatVIpXBVOYmGncBLcbhtOQsnVcBJclSrFxQmv5Py6YeDVhJMY9+IR/Iiw3gx1iqslfDRMsAvQ + DYcnRZw4rS0Ov6Wz27vNkHtf3ihOsavlhHtVjbetWvMLnDcCSXCVltwiYfkENBwY8KEx5zW6RUtj + I0T0myH4x0ok8NxWfTGRqTecnpmN8iDw/Eq2aKEMDKEjNrPNVvaWWHNfYLptypByMOJGS3krsR/5 + Hqv4lPIuW6e3q/S2CuYWOn5cefuCT8Z4+7xmBDEbNtvr7Vye+3WCeePLMt8NQcUbGJMEz+f0Kybd + ofG+whCxxtQojnhxTzufTpChVsG/iX8ux+fbG74c07wSP/ylQAHJNYz6jhkN13IKT+7SyZdlBms0 + 305QYyhOvMl8u94g6crtQCybQuhF4DuHKlWrvq862d2h49F2DIeacNx3BaLAYRYC6mdERVhLTXzo + BFQ4O4Npas3lIZ/2mesw/SXTGW5Cnc54R1IA5Uu2YV/o1j+4c5hid2w7VgfX4VKbnYeRs0vyaCh2 + LVkyKHeuLiN9UBKWCzuH0MbMNbpbkeCUR2W5P3Z0Xx3uA+uZKSlW9GeO26GKkm63pD8Tkiv0Z3hV + 0p+9vyonVbHYR1XdJD977jIW+fHIZV7oyzN/cockzjmhHZeH+sndmted6Rvx9XOMokNH7Q4XOMzj + TUa5E/icVw/W8ivVpz8wp8nYj+MYJm/5xMNJhyu1nI3gxKyZzbP4ggWmhBxLRJdDELKzYXrH4U7B + g5PSt56daVrP9TAv2qBZ+O+He/SgQ3PojsdjMFtNRexM84mKQ1gFJ0W8ZAyG1OZhTiUhGGZNwZqf + T86PJ0fiQfECNTGXPL0CVyy9pirtXM3ucY6u0+VmCxvAVsyFQgcPcEZqFjnu8YHsaGWRqIGw3y5j + wk2tzEB9IVuYCkJbK7VJEdJGlp/aQ+pCKKvAxUn5DXmgstVtsmiEUGk2i2PXRAC/3sJxAQqO1Zc9 + hZRzuWAL/bsvO2dnKb9YToAfNoka6ati4iuqp+HtKtsuOxanxjm9X+T4LxjvSO8nH7Km91ONmPR+ + 8iodYtt0KfP8t9cz2ItweGWiqYLi11HjceEWE8Hxj+sZH2zxP4K3j0eExX8wOpZHjq9i0WZFQgcm + L5l/JV/6PpvmWbl7pkk9Ds4Vo8ppRKfqsl0jkYXBVabHS3edFfQTyAnjopxpuqeknikSfzliw8Nc + ol18iUNVNRdQpFk+hMnfiGZdk/qxX/e7IR2KzWZGcy64NbUic01av01yu3vKqT02oPqqSyf27Q0D + ut2uvookl+urxFXJ2vbhopKXxWMvKldaPQ/AjPH8EQyZE8qiv4/zZY7VCtsKes82OXDjPF3cbu4Q + tgO6do69KZDwQDu8nN2w8ed0znSEEX1D9FyyLhJVvRom83U2LCOHmPDm6H1EqFLpgoS+u0433xDW + F++VfJc6IoTXzi9OFH/cfFlNH1N2dj3US+D6jeaKE/k8aojI10X3A78xKm/I6j8qr/ga1DYjqQlM + EginkShDvd3g4wMmQpt1+AXvnch20sNQAKFDbI0FaKibtfFnkUqkHAmVh4VqNctWBU+fuAfn0lJM + jtLkE7p/Ni/ff3E/Vzgy93M3Fo+qNlbpBo3+TBbTrJewMcFz95fnx+sBLhddkBIRyVsPqoNDZyjy + r1nlm7XBWQaOsR8VKSf2O1L2ktj2hgfDJD+CIuP5Hrlf20jyqhIr6D/aB+rwSI/pXkAAPw/6EQle + 3OLTy+7OVtzZcj3EPpFuH6riJmDRXlyBrrRtq+/TKK5m7qsDX9G0sqhDeSXdbpmILSRXErHxqjzw + z9+YBz4PIycKS3hqyNPKcAzDEfNDHslqskWaTqUD6KOEoz2Xc+SN9PMrOqiPi2lNXnabk9wMuMUt + HKuwXwaPdjAqnF0TUdjMb3Yb85uZB13peHlFZhnyviATzx/VmuoPFS4pkBkVD8P32ZIvR8Nvd7PJ + HQLqNwS88BDCqUn8RuJIQiVJtlWDHgwnG8wLnW3HfEYl5P0gPu80Enc8TW43eIMZjpIgs6obo522 + p0Qb3gMquD9DradK9L4QYHtJaohknqTjd8qTxNst8ySF5EqeJF6VOGYXZ1VYKe5XYKXGsPxDzkc+ + cphJehCFabRdoKdcuulxesw2hf3s83L2mETTNqmPSMJWwaOaIYpTXoE4Wysjqj4mEjnlopIi0GMQ + +nFQySEUgYFFqp0hJol0XKHAKz/9MCGGmvKDFYa5wWfxOcOazxkNk2sYIFzOUiCu/1SUf74iLesu + md+MMamQmEYKsJGzFe62XxMw3a9nc+iTVyXFTlaIgqUwpydkXAWzFi/Ta+SZO52sFN3cZQI2I9gl + q2x7e6dXzHq2SXWRif834QGYZOJPFJcd4CTVeYaeT3mGEpG33McdVWLoTJKi+7p/AY0piQ5loy1h + IpuTcX23tUYEya0NAs6/AX36QXEBHxxoiZiv4TEOIVGIAjoR57PlYS92EAZSZ5LWXitVcQ8h+233 + 3mP1QQcJ3AE76ovJtLcgdcIRCsR/fXBC195RR7dbnXBScumEo6t0wv3X249VR50blRx1/OVzV/Af + jsCQclxZQPlmkfwXeWjgtZcpfGRq6qUVh5eMmci4LZFYjKrkV28v9SOvwBi+m11joV2N/SNpmX4/ + vlTZA/+V3tuyxZYoV5swDeBkjaLYqRytmNsHm1Y5LikUYvW5yugzbBC3OX+g2FQhLSEb5x1cXzMa + Bub5i6l4BaDlolx9gn6BuZLdJvcPOo7esY6UV5osJho4QYxaQa17cIgUqCUmVyeAs6skUX9ABOsF + sxae1JQb4OLRxg2cVwPZL7gLdO/dTs4uzzfCXKo/O8jAWkuxi729LOZFardIsvNIq7WDXAqTd1kd + j2gW5Yfb/wH87Uq6iwPDt7efGI+zsNZFOK7/VgnIvlvP6MPr5jKH4MwEeb0Akt2TwoMOcDiPxQH+ + 9pJFof0BTrdbHeBScukAp6t0gL87/qOKgOC4JRM1fPncDwLO/RH8CFQKXlMpaboC+TWlpH9FXEOw + MmL4hxpQqg1+84HxDpAWdLudz4Ekl30O4qqkJL24YK8rTgenWpz5nMN85t4IfkTxDqy66Rwa+L/i + 4E4zg/MoPKA4+NB8ix8KF6CmP5fELDDFuhCz4O2WxCxCcoWYBa/K6X95EVSoA/wyTiPsZy4PIkR0 + 4bHjytL4t98ploIW2aRcIJKfSN+FN/YV+WZm19tNrgb+7zZBR85Yum2GawQXvCesQzi0EkxJQF/N + NBX87/CPa+hb1IJEIFf5afSgi9V3uVoGjckA8m2Gzy7P1WvP0+/lVOawOWLuYapSJZXZ/dvY/9sY + hOsAU6PzDqT7ZZdZni4cY+ZjaXW5/pVOxc09XkpRrOj1brBT/qB16H78yA1wGmo2Bp8Q0RweC+0B + vYKgvN6KLK899GS1WmHoxGpN5bdL7yN82f29yGnJhPouYOjBcEEOWRjWFMuPb4b+i+hquKJXgTYw + SWa2lgt7paPDNDDPrq7+GOPFUf7YaPhBXjzq4JNj5COi170WDtScNUX9Lmorsa/FP4VHaDY9nGjU + pdxF8XGFqdZVCnkkDxPiUR2H8A/vPwHg+KY8bUFVup7NZS7T9YN4PXsxMg62XmT4nJwjbV/XSLGs + +EakHJhDM8TIwuX3NbmFES7N1S72pueFwoACfXW9sHzRdnHiXf/wfpq45m4MxYD84ffxap4rVYkl + dDoCOEoAhAI69mJiORNrCd76E1/rEWBhDkPUcuBZKTh7C2sv4WNUbNePtF+V1rVbiq8cWrFmdigb + v1kQIWLwOh9ZdWbsi6dOXN+Xe8fBPZ9F+TQ7AOLS58YJf4CoyHMi3dc9COwLTos7isyRBawD3Zi4 + 3dJmEJIrNgNelWSO51cVH4gXlnwgSDcGOkTsxqPAjXxfhulbIM5fDe+SdTE3GxSyz9lqmU6x7G0+ + u8lW0CPJcHPy+QMrps8ss/VGhonhkesU023uMmQ8NvkMF+kMdE50Ws/nYu8U47OA5ZF9hU/NswCT + mxuR0lqRopglF+tq1KNYNrWDZNI09wuAk07MXYd71ULJytfU2hbM57yxFNEHhTr0nqIL4NeeEwNc + Dtp2CaKDgIc6kUc9df4ZOSGFh6TYax15lMpajtoIqR77w6Xj+vYbId1utRFKyaWNkK6qsov3FZIL + F2wecyP0Xo45427ojDj8AwNJouxiu5kP32O1Q3arqxjuqqXYVp6+IvQrx1LsSlBzz2VuOg/C2OVR + ad0X8uUNLwSPWKMPRQrSC79cGHI/g4m/gYWcZz3CEKBTAR0B9+n6bnazIdVdomWtJZx7Lqc2ubAh + HxM6ni0HOJoaGsThfj9VAZzSasqf9EhSGj0Jj1Q22GdO58G58u1PP2Z++eHcuq4TU7xTDfGuNNBW + HdGXlLRO0GFrpNstKWmF5AolLV6lrfHs/MKvctL6TlhREmEjB1NoxPHck5kuFzJ3aDZ9mAuKhk02 + H3ojf3w9W+d5Rf64yBksFnIyXCGkFRaMC/jLGUIFVZIP6kOjX2eJ+OvJWBK+wpmXzOavhvNk8oXK + m6Aj2XCa3eNGlJCDAU+18WomlqSAbTFQDDOhW7hD6I28xo42+7PF0q+CaR2UOsPgfwLmV1Q81YVj + dDk09V99oimcV03HgdGYPg7AUhJJsOU80ZLSWydo8Jce9oFYETnjMA96AKjsC/DRCyKfdE4ia6De + R7/yNFX8DQ9N5fCV1IH/S/5oxceQmOt6hoOtsayb+YczomNbcT6spvzxjpXVMfvzUVr6MR6VQGNk + eNx54XTFyJAPWWNkqEZMjAx5lU7PyWTjK9gmyrubLcYF9qPPY6m/Dnb8fZgu17M59JmqwT8ByQMU + L3AzokDiZtjmt3WAvrCUuANZJ4cS0kBi7eA61m8YSgtXAP4VChNhWsOinpuT6PphOAE5iFoqd0zY + wDXoj/A4a5CPPQNvh+WS73rMulsOx5BwOVn87RPzgDeUZ1U7upwVtsSP52zYIeVAK8JnTiR6f7vA + BVfIL20UZ9vte4hu3XRDtel676IXTtRpy6VHbDdc2YCx3dI12mLviklcCoKo0C1wTC2KgmDjdEFh + FRvnfjWRj7vU21OOovywi4KuHS+fsT/qqInSSScuqqo9E8lNVG+mw8kw+z6b4pFeQO95pklIjwaF + qhlhkC/SQgbtssatVCtcb/Un2XcWGK/MEaQ3JraKELqdTPNiqU7jMVQ5K5zId33lfZmJvzzg/lg4 + dM7+Xn/u2G9le9QTFeaUzaM7tGzPLcmoDswhp9I+4p+6g1ytScVOC/qYfRog3W4JJy4kV+DE8ar0 + ZF9efBBpfaYvO/Z4GU/8eeSx2GOjyOPckUBuH41RyYGflnlgB81iwoXSaFDk814t565b8YOY49wE + KGX6RQLe4GFAyCM3iOxxvTWglFn04zb5QowGKsU3zfyoHtv1yoN9unZAo6l92VEcDxxLbLt2Wgi/ + bhU2ycv3wR4pH37uHkc4yXaT0+61dtJZt7t/YnJ6W79Duwu6O2hLMzjCAahttXyoB8hr00OZQ/rQ + 6xPXecOcF8zroBDlD9lpRIVGCipRfpV20+kMFJ45UmTASZI7Nwgjc9D+V6MNWK6O68eow7iuT0g+ + euUVI0ESLaHacRVgpKebn98fsOGgR98SY3p6sXc4Krzb9JIPWU8v1Yg5veRVGVz541g6sweX58dj + Zb2ppf75PgG9qKhrG4LFnIqDgfWB0sFjtO/xZGlOPboLhPY9i2Q46zfZP7VOzT9XmXvcP4URdMJu + zk39lK3JlzdjGH36svRvbjcyDYKgu03kwUHdxeEJPDPAB4XnMnS5tM2YjIxr7o4xvsx0eJ99VRmP + +7sIuwvfhRR+MDuIsDoU/Um7L7QpG6Arx0iHDvuZjCP7HUwRAc6rHl1iJPE6m9oyXkWUWFHkjul6 + NoV+WYJBc1dVvaoehj2EWL2Z0TWt31gHSA8DUiHWaffaVlOee3LQuqEcp+wA5jFXUtoUv2eXwA57 + fXfhj455f4BLWp1AnnY4vgNFxvE6RtfkQ9YuR9WI6XOUV+nMKft2c/Kqm+3ituAENgQKnPkYi5c7 + K5SqK3xZvg47lX1aDt1uWb4uJFfK1/GqLF8/+bOSsehEcVguXx/zIPAZG/EgYlpxRGCNdEzpHehm + xew7UZOmk/CW4pbhM6xrgV9GggRQ/IJ5E+ho/w4H0h1cORJXtCzoiu29Qmwlz9C7yUM1G3JHYnVT + 2WbEkXChivQimx/L91Zf1JBc7cZNDDexE3PfKddt6q+rpWxlGMfqJE++ZRMBbNAIqSOlDX7UCA5w + mumK/8iP+uFiDYQuXOkFu6OoGDTc6/mAyedn032ejylRZ59SzkdNIn+yRDLM545vdtle6eO1o9GP + 6HbfHCd71pwxB7y8OkUCiZkBY9wFMwNvt8TMEJIrmBl4lU6RP64+VXE6mVfB6Xzuej6cIyPXZ44b + ViJ+RUdwJYENkeVn83Q6xh/6z4sUt0J8X0Sfqma9iU4rsjXTWfLHOqsW7MC5jbCrw1rYMD/gTfwA + YDAEoVeBAOirkOYg+nAYBscLeEMkopLiYkYjgqaM/Shw3FjABsCDi82sEH8oxlh7GNHmkSwxl+lP + kAGQIqf41fnx5Vv1sQOcrDnGCKO0Sy8w0iZbc38abb8e2MUDuU+29Vt3qY/BWd5bqmnEiRBTsVxL + ODaRyLsfoTYZihTfIQmdjjvrZ3eVIVOAoryr2LkRDiYzf9oJs31RplulfrUey9wnmNL6bVZNyh+p + L7lO4MfG4MNdu1+kHV3OyxMnyyI7KJE/j2ldCYEBN4Qcrpj1SwvLmU5k4/wtugq6RHjyh6z966oR + 070ur5KKVRPWqQv1mPIw4Sn03UF3CK5+/XRPAZdADW0kK0xdHnapMMXbLStMheRKhSleVeh0H9yo + kpbj4n5RKjGFA4DxcAQ/3ChsR6ebr6CByf+h0x1Wmk5YV9rJLoFqVRbCevD54zFzdA6Oy+IDwO0e + FWJ8x4m7K0Gl1tMZS5AKzr0uIBV4uyVIhZBcAanAq2rlvK4sHC+Mo0r9YRg4EfdHYcB44OsNVMDz + SLRxmU0zyou8SjdI8wG+7WwkmJ3RhXN2dqYA6ZbXUWW1vYENmboOOrIk70wbJKWVWOFaUB6+MPTc + iFUWYmsjZ2iQFXjazNXaCCK3X1sNnxQEVp+U7wltrdRjdUdxhX6jrgm9W5icEmKKX2RzGJMlBktR + 7yih7Tll8XbymgVWusRSYKNEs2JUcHTUT/Hh8esT5r3wcWbc3+Mel5U6uTzFB7jOdFVj6DvEOOTn + hnEL79oO/LmgKkM8V5lc+Xf/1oZ91EeROWmjndZV6zsVJAe7JZ91FAo7xk6hdiIHcintErdvZLWj + aItvP5wSiXPCm774wLvAE9PtVseYlFw6xuiqwpu+qgTsfIeXyuijl88Zw+SLEfwIdul/yzl/BHTi + J6W3aVThgMGW9BPrbbhMADw5gbXYMf1KP2NnHOZNFGxDfbGl1knk28BCo3QEtWDMFMBcOPfdCJTC + A+LgnGCPP34A695eO6Tb7eodSHK53kFclUxjf7yuRDAoRdasdhjHIRY7xLHnSBD34/nyLhnLotFX + Ff3/Gt5F/XX47PP2mi+P8BRF3Bldajqd3SP2FIFVyR1OIRWIGws5IJq5bHvdwlwGc6+YN1IKi7P/ + P3t/ttw2kq0NoNd8C96caClMykjMsK5kedxluxSS3HtXn+g4AZGQxDZJ8OdgW/X0Z61cmYlMDGSC + hGRVd+8dXZIhYCGR4xq/r1ah0ORgwh23EZbZFjluvEuOIjNobku9tqSH+HEibmtFBUiiEtippHKZ + Elhj2D2IsezLvlDE8EMaL3GdHWrhPUE/5ZtVUxqeJs8PmF/R4UqEl2DkIfDOarJCRYjLxDL8JpEO + ZuttF1mM5t2Snj9aZfPVpm+s2BJ2tlM1HHZJ3ZMPp6rUPvna7OE+omz8gLRf7Fhpdu8cEStdxolM + Jt/2XWf1mshh5Qw0ke66H4R01+mzniMgjav9kE5zpBsyExR3fjFfVnjn7sVoIy5gbhDrOqeaPq2z + 2Q9NSiUc1OpWaqc6x8R63XQqWAo5PDE2dszRbt2EWObs1J6SVlME9AJfH9P2pVDd+cYTysV8f31x + gKkVMMKS0041obDvL9IlFirLg/Lx7bdCCAVl3++bveoS2u4Zgj7aW4B0u5WqKiSXVFW6SqrqH2fX + ZVWVJZ5XStn0wAJMYL9NBixx3UBEgn7f8JMnXc4na0rSy9YPU+5SuRWErGYxo7AQ03VV1zS9yCUT + MWkyEQ2mXC3zUjXp92GlUQ1YZE4p/VLDzWWem7AwKWka6XSU3+dThchSsmxDx/S0aQR4DQKLVjeI + THyvTMxbEdmjQTH7fccQIR5ttr5P5/l0yImOJ7h0iDfXSMEpItmw6AT9LfwlHT1M+3fLfLNY0ZzH + lJnCpIWVkwvgTb1RoK3AxD3t6whg2biHE1Ildzoxefwc2uOU3lHu+y1oONt490IyL4mo9WBKi5Ay + WDRS2oNFHpgClAgwsOrMagn7/8tLo58LPkNPbBVmr27dZdp9aixIO3BNHS6OhZFfzKD9RMmzype1 + pqEfnjDWqtKUHrGtMxUvMKpM6ZrCLwu7wS/7E96ug5eFCF4W8mwF5v4XvOxZgZc9Umj7CaHLWjgz + i4f+i3f2X7yz3ZtzIDdn9yw5YV6rzZkesd2cxQuMzZmu1Ze/VaHOlAys9gf1vVcwdrpUffDbJZzO + 9gYR3W5lEAnJJYOIrtLh8veLq6BKoh5HJagisIj8KEpiNvCjmLNN4cf/uJ/AGnroH8Evx0KTKlDh + 19CydAY6C3ei4YvcAf/hUcAbf/WFkfT3xSqoWknvzy4valMdnMQzk/Z1zH7fD8PQrziyy8myptGV + NOZTuVhLKq2XwugqT2AzGMeCxubp4grrasGt7pvNGC2LH9BfuryIsbjZJgwi5pTlidYNv6ejDfdb + rRHUZl2hNwxdr8nEcpnnO3EZknoJg5pzFkK9FgGzm7mXT2UB6/52l/mNUU83jMOQeaW3yOxa44DH + OaMh2OnVf6ETNFK1yPnQOy9TM/LpdcTbq7OIa58ouvFYTkKYv3yiDvGHSz88+uHrhClGdQW+Co66 + h9EUux/ercDLaaMTfaegtdEwlGUa8IjAzT76+7vrl9hi1Rh5P1VoXE/v2KLHl7O0J1nkUrFgSLmb + Ku1XzQWQQDOkxiBoZD840ErDyYyPwFznC4cHTKvz30pfiL1QcCbcyXpXTm8xxTPoT/uP6qoeg09E + fKR2Atu2hi8Y+iy7xba1r3piv+SuO31Dbef8i0KimZMvb2vSWlYs1Ku1HZQ7MJwuxhc8vSndSRpN + JCsWo8Q+3k+321YsouRqxSJclfiGv9VULLoVku+hx9wkYAMPprMvMEoXnBXqe4FE820yV9QDJjXV + LJ3N0ukknffvpg8j3Pf7HPoPb6enhh4/FN4sYUAX9/Bo/x/Zap0N//d+ss68l1f36d3dg8JG/FYT + 8u+KFb6phX2vwf8aJmV36cDkLgvgXGw41fspOjHJ51YmFCgVIcZ7viSfPuAZywkasgXYNuKCIT5w + yuJ3iK6BSTMEJqVTHNurn+SBi1CO/+y9b+7to/dXvw29YxmEPO0jshucCbf5Ztnnf5N/4rTJ5izn + SehFSnqunL79z6s5HPcFq6iZSAnyxeeIL8QJzvUU3oOmWAxlinEkPmfaHnBRFZWVXiQqK40Q6JZx + b+lpPUDwNg9zQqefDRzeFs5YVxClmqe6ihnupnKtkd3r1GL3w8jV+09Mv32JJcLIiIquMgRleLm+ + X2boAskOFk+00TZ7VJvRPtjhwEKBUXXQ93Xp9KUapfNLx/fsz1a63epsFZJLZytdFbl0Z+/KKaos + iRNmnq0BMj2FbhAOXAzEJNtTVEdLkF8tUdrXIP4LJKoiVbpIVN1D71TuGVV4k3jnw7M2pTf8Advi + G5JeLb/h12UBzhVzzoyJ4Xm+F/Oi91INThxGSRIMYjDUfIGC+pFXZ95OyH+tI5Eu89sJt0vxoJrB + 5/dXC75AsNFSd/ojX0JjRsP08RSoZzR73BhBdpSTznNkTSp0+InTxtkoH7GtRxUvMKpR6RrNgnQx + YgIlPJ2nC9zDh1StQXlrZNcdnV2cH/ePLj5/fIPejyjykuC4t+UBVa+C4nv8JZyXgcURxYQCxrfp + zc3k/20wBKgpQi1O5ccGczwALRGeTph8Go87DN3w7nop+42Ol0lFJ6ohKHAEOjD3+OzomcrjLAxC + I16met2CHMFjHDjmZb95tMtjlxLI9f5jW2lEB9CTlKu2Zcru9Hj4se+ac1Z+zXRyt11DsI8ldZNV + 1UXwJ3YpTfbPyRx0tbyDkE0LkVsBAsKYVGVcUdM95MhdWJV+BBFyirQr/RDP2JZ+yFcYpR/iIu3E + y8VKZIX5zlUNk8CV22v8Az6LhR8J7FjPD/q5C2aB/UK/h4L3E2IMdPb0UPB+1w3dSPsCzDu3lWs7 + Th0TBOyLziC7/xBKgBaorI/DO+C5kr08acH5QrfbspcnVc4Xukobwm8fv1TZy5kblKElXnieGyRs + 4Hmh4wnt/Kps75fcCqSE/zaZVyE8lRO6CXetyYqLHbAcWQXEs8mhYfouozJ0p+5WjF1EzCnHDQ/Q + y3d1j56yabqMCv7c0yqDrZ7IfpuOMhkVLIE8nvZH03yVTR9A9pTgvvI+jAVb9HDMC47zODzUZVcL + i/ZoLsCYSBk0juE2PrpQACzXtCvdQMe25rk9AGLT/uEm2vJ/W8dgLbvs47ob//3cgh7VLXz6BDtm + i+OF3253vJDk8vHCr4qQ2+eLapZOEkaV44VFSRAOWBI5om79avg5W98/TPG/ExrfC4nMLCJjs0U1 + MtYKG/rzhRlX8pOIhZWz5Wo44y2ZFS2pBSAzzgPmlBM7ml+lDpttbyqhRjvlL6mI7n2Y3N0P09vb + yRxbVyO7QH428j4268lUhv7hbKl5MMU0qdVmersBxSnfLEdw2oDBW4qDXg0RPzpf1b6zf5XOvEUP + 54c8irwk9jvCiCZfQrG1782sDv2Mj2wdmIrI+tT8DrEZbY+NpqyRZwHtzNfIts5tiZLcmCLDIlY3 + HbqAeZYbrS+NfDcOTpyglY1Pj9ia+OIFhoVP10SqvaIxkMAOAiq9wBk3PrgM8CDko5nveZz5FFHP + +ThtEbS/bRUEThyo1V4dkzYugHZLrMz2FbjkLW74zJbTZef3y6kj6CA+QQPsz2i63Y4OgiSX6SD4 + VTqj3745r5B+OrHrlukgXjAXS7EGzI3dWJiAX/L5MFN40JXJVweZN8B96wFPkCXm72G9AZr/42yU + LhaodN088FjO5BY1XrBf4AiDgeJpf/dZkY8gzJ7iOVEJ92bE1QLDbjKKfzmiEB25/HX5eKIANt6O + R1Ue0h1PP5RTfJsIIlgA+64feo8VQxpneOAK00XzhxddZDTUTaoqipbwKxvb+7cZ4x7OdBVqjXyG + nIjMIXvS7DzQ/2u6D5oj6tCHMpHmBjqCv832PPK8JJSUANtnVTMOebN924X0OvUFZ7WVWDu79wBu + vS6CFx2j/3qhTmPP3HbkRuKZNkT2+IoKkz1cpP18tVj4wsn/Neiv5oj6q6WJrxbTyQg/8Rb5Q5c9 + cc9FJax6hXJ6ox+3vNLO87FehfR0fsxyOZlwK8OugOUTfJTwn/fp/I6WJc7VJaaiYTRu+oDTVr+5 + zeTmJoJydyAYBM5A+T2D/vdJqrWqbSA29BIKxJamdTspsUcxQL1lrcIYhyETxswcmvYA9lTvRDPi + a7C/YueHAfkxvvovv4b9nygMZvbQnGvtxXcSNvCYSxuAMUy0IJRSNyBVDzNzl/yg4gJmGU7uyV41 + inK/iFR+TgvyFrrdOjenSt5CV0W61sfPrIqMWymfAqUvjoIgCQdxFDlesD1fC7Nt4hpIwa5ybRqL + rQ0xfqmGqfC6JG6ARUflvGFy+RK6QCNNexyayleN2K040QY+w32pwEKoOTnHhEDbIuv/wLAd6FDZ + clXnW8Hb1+lt+uefWI+z2iyyJZE/E+SD0U+r3uevn5XeE8Qu97LELFDx7QMSYDzHF7ExaLYMYSyz + 1WbKtTleNy23emxaUW1M39n2ZZRhm65GudZPrXSZZ+L96AhBQG4psdhSnLAV1jbebrmlcMmVLQWv + CoiaL+8rrl6wH6pY274fOrEzgB+RzAD9I0tXa5ngjvOkqKH4OL9jcoOBXyu7y/1kxVnQq9AOtQWY + zG0iyIMjIYo8r1qAKbUN4RHAQ9UEoYsrkIi1Irs3+CSaHJxKYOCoI8qoMAzCMk0UWnmmMzoGjdz1 + y9iERsfWSY52dmXvSuiSYof7sjnzLEaMQPXFe2ECyyc+eKd9UVe/6l98eNO/hT0GtkxiMqfHpNoo + 4P7ItcgV30LKoGFHvd/MYMatNzM8wDcLnm0Kv36Emd3D6a320CDpEOI64PuAGQE2JA4IEVkZpC33 + q4AisQ2Txd5pHBDuXt282OVcO0yv9TzhKbacPjY26MEym0Kyvk8hgw/eyw/+FsGtHdmdwS10QcjT + SY4drJ7QFzpIeZHC0puMN1vC2TVj2lnOXiJgGi5eM+dNfOK0sui1pyzBGrTX6HgNxWWROr18mGLQ + DZ6E+aM77pv/YkpHwBwvCSl5L0oIro/CeBZqoH0G5oGq5f44ModZz0+JHENQ+pRxUHhG9s23cETE + 05gHnWQKO/RJ6XQ02cz2X+qg7sZ+Md3gFm5W9+8fxst8elC2BLlvDxXU1d7hE1vA50v4l71tT7fb + wZqT5DKsOb8qcy4qWJFgH3isDGv+IkTdIBiELHYSkXUhTVjdXC3BuS0R0qLK1P15VgMXWWsjmQAY + Lmsyq73A8yRAyKEQlIaw7hVx3in4NJgwYCLA8ivXHMeR2TSzRFg2r3chy8xpGuqxxhZDUpv7BwPk + YsJFgdvoR3HSTcIFRU7x0gEyBFrf+jAxLrGpygHZX1Ck6nq4u6J2iJ9EZl1VsPOrwR6fgRdF+XIT + SoIs4ZbuA3PhmJPnV2rYntIN1DTuMGPFL8pSAu/ECdtVpfBHrItS6AVmTQq/Vo9EBgrjnWyHaTKJ + wJQuFfNU3DAQ5ShxU2rvlyECEkHH8FryVaPZahV9OCDPpLCfyHHQ/K2HBUj8gHaaMWrfYFoNxxPh + 5tbfCGeRqi7jHWNnn9pqjx1msvqutMi84L17wlg7g0w+ZGuPqZcY5pi8StOWm77C/yRTrUw/kDx7 + /7wd/uMffW7J1z1kvJBbaIqA9deBD/U6M/I7U6xFMvOlz1p4uOl2y1oZLrlSK4NXSbE+v76sJEp5 + vh9WaFgT0Ob8ZJDAYPqOqVjXxIZAlVxmGfx7usmX2Wqkl7AevX93cTwU/B2qErRSEsK5mzKYePfZ + 8mFQWLAEWIjoZIr1FZpUhVTAOwyFN/EafbtNfK//lsxh6M07iDnsScpDtqsjMJaG1smng8X7n4GK + J7EMfF9m2ITvkxMnaZdhI56xzbCRrzAybMRFWUU7dUUCZFhbLfvJ9XvNf+GP860+iJx/00raQ4pi + sYw10DxpcM8UoR//2mWsT1Jt+stLWv1A5rZEfqvcFrjdNrcFJVdzW+Cq8H/9/iaoprb4lUD0i9iL + wogNYi9OAuH/kqoqH8rJKl9AZ2BWqKHDCodXPg5qU4XR91tiq2t0S4FulPhxRz6uBmE0u6cVpCTP + 2UeQPaO7IaY43telrt3N+RIz1vAKj5fshmVuZHxDU0QcdsdKaVZZXO9NNl2nfXeoz4DFw1KUh4JW + /6r8FfoEKdVTGTlFIhBOrYMbbnglcCGHSqawAKHi5kNVTs+/xSasTrl7CLF7ZZoC3gYflo9RP/yR + o/A/H3ixMOJb93B1FLlADsWxfYqFVjvOSk9p8XhTbDN2SElZ75V8+esCRgU3GV9gtt63w+JMv5jl + pW2Yq7siZeFnttpBrPrjMImP7wXsoCa5Ox8Mgf6/vWRRC8Jeut2uUokklyuV+FWRtVoT2WIO6l5m + pdIw8BI/SAaB73iBAPC9xg4YpqDkTNYcGZXnHOjdItPMrusiWS0PdsbCJEhYJeC0LrXCE7WPuw5B + zKZutKONd3Vh/pb7qtLGgaaai5IcnnxFkWzumbiXj/VLCdRwAnr8YIVJ8DAFZR7egH4Kmv+zbIxl + CvKchF15hIehOkMxELJI1/c/0gdybpR6VIHZz+8nN5M1NWQ0WS95dH0yJoy23rUWBnOSKLK18bvd + GWNGqVlb5sCTr3bltgsIy73VjLXZdDuSvHWrihQJFpaztuJbV89Y02CJV5g8WHSxcBdEDtvuMIga + HQYRdxhEQ0aEV0H47+ky2Et/e3rErr+gc+Kv7E6gvPaPn8Bgt1c66HYrpUNILikddJVW79WnL1UI + E8c3WQN89moYJlHCBpHnB4Jj6UqdWFPk7ZxiN3wZZnBoLTdT6Ua4ms4PRDHRIKxiJ4alWFY68tUs + R872vAGsJHAabXis9Wahf7BILSm+oZGS+QcTQCfjOjifEpZXU4CiQT6YwsOiAEm0vcp5bBYLBBUa + +7qXKJWr6JUHWCN385QjFAt1hZcnllrxAKqRGS+J3MaxqH/ngdwKO79Jx8TnSXaIxI4kdz/RkDPo + kgLfbXCsMObEvpt4CEpTGl5tJnEVUuTBIwVB//PZhbxtlK5G6Tg7LWVCyK/nuf6kQ2onkHhWLw+g + YeGRsz8WY7bgOuTV6htbDFBVXGY3D9xRwqGlVU9mUxg/MVpi80MJNzBtMu6bMcdVfEO+XPVw91C8 + Rr6TCIOYtDRzMvCW0feNN2QGilce6e04bnmwPnaBQUuot92k3xGjbNa6DmnXskjQtu+5Lm20CRZ6 + lDx3EKodixmlHhFpycNU2wYPEswXJY3+tmW800/XCurumeeN9cTWXrMESydau9lmLXP3EgBRYVWU + GkO1v+zdVJdSpWbpHZLSHZTZjUexvvybD3A7l9z+4nY4DwkGqrSrtM+gU2aEU95cWn7pDgG7Z8lz + cTE+F9jDQlTkNokaqKtLfgaIzXWz0gl775b5ZtEyGtBZnhORd7y59BPXPoBKt9vxpJHkMk8av0oW + z8d/fKjypIVJUuZJe8F8z0+YO4CfQRwKzJHPZd1MT1znuWSyLgjzk3DvhjUo3H3IdqVSEqEZfSpq + H8j1QwyQ8u5/pAtQ4MykO8JwGOhcITAKsM454D9//Ti7nYwmoKI+cOXvNl3DDEN1ZQXvgaFZ00Oj + JeIUrvgGPhHzEA4buOE7pfWhLLLhPv55X7Xh6tNDzRBs3DrLqqmKwimZhAO9DDlw4I6ommhVmamG + xzkuwSVfNQhUpgJBKBSjW6ZsTRoMjwZxusqichD1z4ZGeu1aqMQ012nEZRtmUCe29wiz/LQ0lTkf + KxlDY7EApg84i/m833OKn7ad4j3cDRTBWyICxiH5p8wRN+r8dh9f2NfckSbNtdrRsVNND0/J7hSg + M4qTZlm/THGuPL5zjLrM4QsUHxF77Z2woF0On3jGNodPvsLI4RMXtUwfqqHo1RVWGGLQimJMON53 + V0vZu90Pq7zqFDxz/1zzp7Xp7MsPOjEVXTcOoi193AkKaCDKcT5/vG5XjEMP2K0KIVxbEnSF1sO9 + DuokaxPo/2Qjia3i/SfXa5HaR7dbaaZCckkzpaukmZ69eRsMokoKgOuUUgCSVy+C0I/ZIIjjWGDM + vJ5IzQc+UAStxYH8t3HWn+ff87+Z4K8iVaUu8qxQSLizC4ZznP6JSJcY5eCPiWe46TGnuiMwj2b4 + p9p7aAoVQKRn4wy+tBmK9NAke2n4YFTmYYpfkQ2pkVmFacp0vJuvQjVuq2h0pj5Mi+/HF2AMPh9u + f43Pal9T+L1ppHj+XJPKyfymIETCfEz6rJdZN/oVRZGFFdm9v8gU69EyUrjrsHx6oru4O6GmZ9uq + dizURTV+616UeyEj7aroUtDSuxCcwM5R7oADxB5SNnIAQGpn6XbdwVOE9DVt9py2b/BZ9Q32W09L + 9f5wl1lMVCYHtcNzBGniLJ3fgU6CicR7V+l1hIjbsTMs8GQiD0veRyfMb5fJIx+yTeVRLzFyeeTV + +nJlUpgLlbuMonue3wVlSJ7iRWBYOPCdwrCg+IoZw5TDUK/UV1k8wzhhSsqQWvcdji/YDIYiuW4r + H4ZlCfQhlal7JO2wiLGkeGO1u/f4DjnHfInAH7RIMaHbbRH4g2qKCV0ltfbi/HPV4Qptq+S1+gjK + PvCDyGXboVizKUiv1nn+O9IeIwCjp1kpgXIzBG9ZO2tKPWPtZhCvMN0MdJGG9vti5QoDhO+FU1VD + gjKWID+fgQlZ3jX+jo/1+MPc+QC7s63zYRd7Wus9ZlvhBgscj+kxqD0bhjCyXEcokF23QIQ3NMZ3 + GWWW8m4Fk1+nKBlwbxzPQFvnYhux8y3+BZHIIsrIUF9s24MWT9pjh+2xzXtO4vhqBPWFYfsFLSTY + nHSt8MVaAGMcCFom9zpFPOAGH1hbjnfxjO1eJ19h7HXiYpl7KNt8g+dzYTNxV9Ism+RrwfaxWRSB + DV6+9nlzF4a9Gf8vbneRS1wDESM4J3y4Nd7SU0NTH76BeV4gKNhlS/QYGEypeuOziAMt0jWo4v8Z + AIpyDcTqvPfOgxPHb3fe0zPW5714hXne00VaA3dTGNoZJ8kDi9NA1NGNAMvb9HfiugD9j9SAgOzd + QszTY23uHuzHOSq6RM7sNutEixNszzqRKFSNiSbWcQOZLMJ8z952odstk0W45EqyCF4V6fFn1fR4 + x/OjcrLIMPLhejiIfC8OYwtQnFU6Z3yjxH+uFB43dMLSp1ro8QgEqTsGcMvdXbZai9RdEE2MVZKC + qgDAXk2m0LvcG0E5+GlNDv6zs5Xg09Kb6WR1zz2t0AMvMYM9Re/LPOWT5Vb7xnQJu+A6w5lj1g/A + +JgEGe8V5xcWeSbwOb2vN5P/t5mAGJWmQJ6qQb/MY8H/nqKqaBCOofJdnKw3MLXxvJMl6kLoqoeT + R+UWBAHlFiSEjWZz9DUaApEJBbeR30NtGm/4MlRXtaarOpt0535asysGLIrjcuNnk9VtPh1nBWNa + 93YHB32LKdV30zB4bdMTO4Ebf14gYiGh876/ZIlrv1/S7XYhTJJcDmHyq6KG+c2HCogYJpGXA5jD + OHZjFgzi2IuZULDfw7kBBwvMJbAcsqE3VHgUfX6JZ3XjSHuylHl8X0NniGhhnDflCBN/Nv13m/nd + 5NjYJBI3ai43ZkHsBVV4kPaxSZYwWKphraRdxdYqIqg9R+lIi3S5Rndn6fFGEBEGyzZIvEqI9M62 + t4+MFP353XFDTNMLg4YmeAnmDMWlDR+0OzCpMnxNNf7oJJX4Y/lpUDKmDzUPhpXApe3EGgg0EZhh + 5lGgvYxikUbLT/trWDQpWuM1ZeLLLFVsj1v6HHZSNvBg3a/ExVzcvM4wqQ2PuuJYKuYi1xRgxg9x + xvdw9am4p09MSKFDtRe80U0xzzY+Noec4+XhszDcNBGiSapbW7dht4Dm18cE6JL/fMAyEexCGqTv + mbzG2TthAC06q8nXFCaCAWmRL9b15n0jXEw35FVwxDFKwf85GUv/QLtSo18Q5NWe3xsHRuCelDZM + q2fxaMA7YaO8S6dDPizFkfJkphvfTuUUP3SbtvrwR33h9pH2Sav8lXjUie+1+vh9rWifwpe4InNa + jPtLC5ioc/py9mZPhZEn5v3x5ZOTJPYKI91upTAKySWFka6Swvj7+VmVV81F5Cm9/hwMbDCsgzAa + +F7ixkJhVHQCKjzzsCR0MS0KVYIr42uZo6SADQkHBFJqGfaM2CxB6jidpXfc7nyDDMhc5fx9lNaj + 53STtrblOxq0rsht4oOEbnPiIC7Dx9V/qzBBDVUqKZE66AXPQnTvKYegh3NFgbvBhtXWnt6uUyQE + Kr61f+xM26fPivIjV88QkoNRO31ankORa2yv26fm02/dnUWbQldQ2zhB0obaBm+3pLbhkivUNnhV + OBvffmEVbE8vcvwKt42XMFA1Bh4megrXfImLcG1w/2LAk9xTqwJDasWDh2ATjPGhq2zuLgb4gwX0 + 0/MXBEIFvwf+QnoT+Q1bID0RCYRTvdbje0R+2VIdCNbGApUjcYModBupKifzeaP4mgRemRQLNrab + OBWp2FNDzBiAOaX3Uz3Dpssak251+SYgaK34elAOl3k28k00UDXOpie0kblTiioTWHY/aXp8Tiu8 + 8TD0iGSd9lreN1zFFh1E1N791WSNhvMov4PG4VrnZi405DueBla76eGQmzjUqpHb5ofd7n5o7PFw + ZMuIompbl2o7ddYNHL6BY7coEU3wEo9R/iXGyds6TnZ2kDwGPAHJ5MStIJnwdktIJi65AsmEV0UZ + yN+vK0UgLiufAuzVkCVJ6HsDF/8dbs+Ym0xBfjVjbi8k5r8CswHz/ESiHv6XR6rfGY+UXCW+ylwO + z7wTlrRLXKZnrPOWxSvMtGW6aJGas5v9VqYlvk1vo2oys3g7cjElMU2q0I35sKBduMwW6aQtHGDo + eSXW4mU2y8fZ9DBs/b8CYzMaWn7Z0MKOFLbeaj2ZbWrRprevlJY80DuEtSCDth0dP/D9ZEfPtjn2 + mFvTxm5ItuRQOREV4Bad2lLl+CVZWodu2r4nSrA++C8/uGf79PD2zZNIJL5cOqFjb2nS7XZeN5Jc + 9rrxq6RivLt861e8bl4cl71uL6A3Ez8eRD4oIIJE4h2m+Yz6yns5oF85pB2Pm8Ciwy11RVAmKzie + ObXAMhve5BtQ5DkBITQ75yhzm8U6/ZZhqYdWdLw6bcB/mOY/6Plp9j2bynLSd8vMPwxlsgSEwZjr + RL5f1nB4htNoOLrn3GdFFzTZcoln/RKDbHVIncaXnV7wrsODBHHSjEcoJPee01j1cNIp950n3HfP + gpy1G1ZVPiT4iN6NXGj7ygM0z3nHyBfqRUH3aduduKtQYDeUXbZSmqoyfr1S3RPLG2/fvSnYflhX + FK2JQyqcmjujFJq4NxZct1Grg5Od5JR2QsIZfbd39CssWGKdE6cV66Z6xp4nll5RIorlF+lcPf9w + /kGAufa03wuyRMMwKSSCYQILyhekmv8hefFhJIi4WOzYu2nodksiLi65QsSFV0mHenP+sRq5jAK/ + TMQ1DCPfC9xBGAUslET0HJqU8NTHyMZ05A2C4yH96g58+HUCe8PDdHiec+qWmSCm0LOSCtwrA41L + ISss5EsygSyHK0QiBKdriWSLrtV0eZP/hFM9Q2jgidCq3owmNdjdWsvBJMAOLIG+uU1uIwdT/bwK + acgY7N5R8bG8D4bqkxvCnqwx2YyBoYWnXUmt0jrrBjprWByEJoyb14SJreT2nvfg9XBeKjUrckJL + RLM2ClNIVZE133CAyKAksjRML22QOQ7NnCKPIWUAaSPQdkMk5LeapbJ9b3O6zB8SMNO2q8vuoOgk + YBsHXG+yacTW45vIEz5/AlPH/gig2+0CtiS5HLDlV4UZfVFDmRyEYTleOwR7zImTAXOZJ6lVvxCt + GtYLSFRs6Nbpw7Q/mqyGXNvXuujo4uIj/Dw+7b/7DZVE2fNiJE4NHG0yv0ZwP4yRwK39+LF/dP4t + ZYsh/NfF/97w32/cxTHfRsZZVcTFesFk3PfdYllNtm5NvhgFbhAkYSXxxaILag8CLwqaDoIocYMk + KJ8DBwQX/jIj1sN5qWKugZcQo05gFI1g0UZ7pZsFieB04vWuPEg7u5GVJ2ADjb4t8kmdT7i80z0p + OWFPTBXallvMNattsRvJu0B5BKT5CGRvRT2qhTDsas9NZNwneR2esFYmk3rGNu4jX2HEfcRFEfdZ + +ovhdPIt6xW/6U8io5QbC2BLj0C7lrsSAuwgYp6lnfUoedhtq1f9gMXqKw/JPAvITYOxfMUU1Q1E + AcrmnZL9tBG7ozC2m/yziIq33nxy3RaJB3S7XbErSS4Xu/KrpM58+L2kzLCEx+pKpa5+6EZg5sSO + JzDRrybrbKjcyUbuhZH4ycEQwML5ni25rxjMGMw6+nx23Z/mI1gQR/f5LEcuKdTcVz8ma9hbMLF8 + fb/MN3f3/G4UstRgDcYrHj28WWbpN8MTjZmlS+4v4Q4+TIug3NMV2l/cV/eewbTlNhcM3ZRO0Ksf + E9hK4L8hJjT9mAREonO2uleq0Ie8XhHaQR5tGJMJC+KwkkKxO0EMVldTXgaMl+dWGI5qOr3ocIOb + KbBsrhLNQ4J3lMClRuulqRKU3lAOiKi2u0kU+dE/e/8xc6n34XdVG+zF3Ep3IpfvnDXfpnc1/74B + xczzDZjDwxVqGWNq9zZgjrrzAQeFNAvuYjAH09p1jcA0Bk2SyiJsYXgfdjxWn272F3B9MCQ7n4/4 + ftwwnZ10TAGqt8xa21PEExQ1H34wdhUwkAcsFbtcXDphYB92p9utDlghuXTA0lU6YC9//7+Kyzjw + kF1U9xfEr16EURLG8SCMHQ5FyDP7MgOEYJnxzSnntAuIbv0TvpnXYp5q2Lrz/ofP7w2GOE67wBNv + JrgwcCvlCyCjHi2GiJ90l/nPqgtYpmHz8DThaJlhb9fIO9Yyu6MgDKLQK596tQ0wUSicpvLmBpHq + BDHSaxAuQ/Vb3ZswjaicGKCqmJ3Q9Spn4Dy7owqRbVk9fG5egPIMNv0COw1zbk0uRrcpmC9f23va + CdDDuSoPqBAMP5FzxFei/UdzYwuMYWF16t9fWbzYePQp1NTnPe6LG0t4n3M6XU8steIAMlZkG5fs + nidvN4doLPi16nchK+dGQJmtbdZ8i8nXjfwmLBcvEHSQwnQtdN+tXVqTuR65Ev3DZf87PGuD/8Ef + sEUAIelVDBB+nc65z28vzHPO83wvjpKwwmMQwV9YMIAfITr08KD7yDGabyekQlMdNnLmoN+WCH8u + r4cX55cytf1uCa/+MUyfP8RRB4ntbow4QgoONvIURCKmKTtxO4hEesYaIlG8woRIpIs07qvZjUDu + Xc2wXF7uS1Wi76PV/PLLxTH8FLnXr497V7M+vwrH17IoKL0CmT0QzBHiwtjvUQFRYmx8M71wacA5 + T6mUaF+Yz1/l4wspsbyp8VVAbHiC9g/ec1+ZZSv3Qi/tiLZd6fUBodN99V9+Dfs/+18D2FknQzkH + DsA1dWBJc6P2ct9jyWMuIcYbFXFEv1fGvctWSJOsUs1nGay8+WQvyEC5rBVot9OCi4ZutwXtdqpc + NHSVlvIfb88qGcKwVXpl0O4XzMcS7AHzoyQSwHdX9/mPVfGxmvsVsYl/fx8M+ik5OfSMiO/pHFHV + ULdbTcBSx0cl3ndaTe89jICQuVHss4rZ8PXNxfDLkBK9CTCH8Cdr+ZCMd/nhVmY9433qQNj5OjPj + NzILOo2M31r5BXAJouXxgH0T4Yvj7ZTd+7oklonxRMFi1Db/CL/r/XT05Wx0bHRdFQZAb5xq2Sm6 + uNLp5E9yt6Gn7u1lD2dkAYruEZqeI+poGj90K7FJo+J/YFZyHBKcCE/NQf8HR3jaN6s4irVQJzKe + DFebO6Ro318g77Tds29nh/2XnfApM44DUTVWPxNakrdt70QvID0Exb9SjOqrh9mBcv3Q3Tn1Wn5I + eU7KM5SqbD5csiS0P0PpdqszVEgunaF0lc7Qr9cXSQUMMUlK2DbOqxd+whI3GfiJFwZhJT2IlKxB + vzBjRLk+KdlSgz66uvp6LPc6VBz7Gucz3v7VAy0xR4VGOoL041cLiYN4MGiHLL6iaDmdwl/Xi+Tw + BKBGVESbCJqNHM3y4N3XrK2WWuw2OC1BEwxjz6nkrYq+rCEX9jBPxkpawc1m9L7rXPER4L1vCPYT + p6Jm1AjvdTB9Opo9PVwFqizbpWQkR+wDsxQ1YOkVgxbQJ/N1jQE30ANpK+GXC78Lby2/d9APTsSb + Bv1P4uLxU/v4LFNLtnNUuYSOz+m9cABAh2kGV+xMEm5d2Q/4F84PgTYNJxQo4xJYkYpXBULaIudc + ynt4YFs4YH9dhk2bpLJHsos9WMPc35jQLqBG0aoxrkNGNV/cQ7m4tWVtJcULKF9siU5IUKJlMWJ9 + DXCdBN8nv/d6COvfDiqlJ3ZOcmfkW233Om+2PPgVbQiL34dtaUPEM9aUCeIVJmUCXSQl4GGxlvjG + 1xf4GP3o/wHXe/hH7thyGSELOAlZHuiY+TZpWLKPZba0oE+y4j+XKVbcy9TmQyKHmI4Ksy5f3qXz + yZ8NeQ2NclzamOmkEx2vaOKomoK+q64WsupsO0yehWXWDd0UMkXxdn5PRxukB7jdrHicaZ7PhzBe + OZjud/Cg1T7sME+jptu35PORODjqH9tF8rTjELAk/+sua7J4qIPyWob+B+P7n9bm7ZakNaFyGLHU + Osj8DALCM3y/jd20W2lbk1KojvHTpR+0gOyn262sVCG5ZKXSVYE6eHXtVopYfIwq6Faq/2rIcDjC + aMAcn3mhZ5Kc6MbAOEPkfVATxX69zvvpFPacofCfw/6CquBc+nevVmv3MPiGwi6MoyAMo6hsrOkT + KF03ZH84QQk9XpObBF6UJGUM+3ScLtbqI4vvEhQcYEL9a3NHf/8xWd8XzFe0I5thv8gMH2ouWBeM + Oj8ue3cf8+U6WKDj+miHmy+vO+yMXM9yhWbxNbIrhSY0FIOiFcdw//D7RcoWA2lnwHJomlb98rQ6 + heurvPA2Y+/A3KesmVG2gJuHsFhVwgV9i7Bd0dYVuZCCrPyUT8JsKf96+f6qfySaRek37xUXiRJ1 + DK2C3eKhh8tL1eLA//VEb+M+cegIWitCHb5wt+YXidJDK32oWXUjuhdTFy1GapSuRsiA2e48SRLS + DRryiA7X4BLX4yefDm6lbXf2rl5bVaBKkxOxms4/wGUruBaad1A73eaQ0lF5WFLF5++fnLBFiQTd + blf0T5LLRf/8qsjgvH5fLfrnKJilon8X5kLsD1zHDZgo+r82fSS0aR3dfPj04dg4PvmHc4MHpj0H + mZqBES+iyzfZ+keWzQ0Yv4FWq7wi9FWlaFMa5/quC9RyJ/Zj+N6DXbeGHA0p1+ifUb7jsPYi1hTe + TRzPdb3yYa34oii4WK1PAPPZbPP7jwM9EGq0u0DgNZo9QcTa1C7rM/TCnX3d+wWzpoezXEEI+G7c + 68xR+tjYgl4YVRtZHpM2uaG12MKMSHhrJ1RFQnNmoccScjiamJzFIScUEDuP297CmlITu8UrfP4V + k93ks+K2VJ2CtbvZ4x+ccm44ASUKm40qdNg9SxaJn/P1pdumooJutzqPheTSeUxXBd/c1Tn6PEtV + i5FvllR4PmaaxoGXDCIvCRyRpGgSda0yUH/HoM5mi77g2SpyZTCodY++nAWWRREDgiChW42Y08Hh + 2hTPPCzPqQGquQHJa8B/QztojqQyH9D/AT8vPpg1EmHQVI2RxMjTWDZUveG3bJ0Pqe/SuU7oW+qg + MAwbDfBa0WI8CNemKbvJc5gfl8QOShlaUnyPGqu3dVmgJ26dMZUJohoz6ENjBV8rL15c5j/AuhKz + LL1ZZYLgNPuJgbocdrrxhGdd6OK4iWu+YqCZpqv7AhzQICt6WQy0sq/JNuWrR+VU+VTkgWOA+8CW + UWtHG9oVnxkfRm7b1A761kyvOjbTX0yPtg8afwfJU//Nv9o7/6ozcKZfz3jWLaYjPxK2SGs+V2ym + JxgglIs94ZUh+EGHfLofBQQc6Q3FNlm72e+pE8WO1ImY20ongtttdSKUXNWJ4CrpRF/eX5Z9FCwJ + cVWWVKLQj+DIG8BUiEOhEinHmDiilIr4UNA7c7Xny93yEYnQGhKreF5/k+Pfc4M4rhaCgghVIQ8D + +KZJcpg0NdKQrPGo6VaR6C5Noo8HX4MHXErs6d+pgr6YXiXHYfqgOcDlmHBOWDmxV+SpRUXC+1v/ + 6/WlcmIbJ8siX2LZzcXvl+yYymXQ4M/m95hnv+pP1iud1/y0n3+H2aXBOs+Q5WBVElrQ2YtbyRWx + EllEOGnucdLijCzUDMbBDiKHuGNMoPa94vy+DHnWjslOKZR34bnGKQ5re1ZK57rJx7Y22146AXN8 + Cj2viGwORmO+seQtBd2V/L6LDMZZll1ld6IrWljA3cVuw6gQxM9Krq3tJyqJyKndvJitBsaqLmjv + Bx/91EbACVfZ8dPU2opvyJGOmeC8g1OoDecd3m7JecclVzjv8KqERLiuONSR6bNCeRfCaRWwAWga + HBdKjz3zHXMGg3VjVhQV6UPFRjUTKY4cuAWeZ6DNbVY6x+84u4VhBJtttVnwTQ20xaVbPEiu0nQp + 7TuukcA+Pc0QbYZ2YxCsPaHAFNbVI/NRzPuuClYb8q841syklrgdM7caw75+4IIm0PssW4fGKvqg + S4VgZYRCYSa/vSxGjwZtJcfKHOzCB4ANRf/sg3DhaLlPsJlPMm2Qs/phhueaR/lbunSHjN9XM+o9 + nNoq8hszrxUK4xYwBJDBT7u/wdY8z7/nf9strRb4p6skO0YoODebMX85l5cu+BYG1xqP4S1+cUeQ + umagSdxMJ6t7Hl6GHQ5hLNbZPBXuEm5VUI7VN9h81yBhkasMHbv2e55Lioiecinj4QVTrZUW8W9i + ije069/VrLc+mWtAF2JXMGiD8taGQRtvt2TQ5pIrDNp4lU7QT2+/Vrl8XDeoMmi7fpwEA98NeTYI + nqDTbDNCq9fwnNJp9SnbVItuDzTwHot50EVEaxi+xcN0lnI0Nv41zajBcdCEUu+5URBWSHlq+0mX + mDhJI9lqFAaxH/6zd8Zz4BpbetT8FcenIi0J47yr/E+YMhUQH7zhFky0tRHBqG24iAT2cOZofNo8 + zNuRr9aJQ5IjcOpH1p7aHcwmpP/iEh/dY9EKd3eTO7vzdxHGRKUL9xbJkog6RUD2T6VVdBhc/a+B + hf01vJqdumFxG8BHbLYPOyvxEIFP4PON/CKF4/YQPGo/TJjbJGqgri4JzOlhikrgZoE6dfEPgXC5 + 5ko/z+X8Bn/L5+rplo5XIu5998nxWmBm0O1WJ7GQXDqJ6aqwZS8+ue5r4yxmSCZYTqb2EOEvAHN2 + EMZhsoO593YKL/jxHwFu5LA4dLAM6q+mGG7JWYwVU677jrknPNxqj5gunrFFTJevMBDTxUWaZab/ + VpQWagEVnWRq172yuPCTFxhvdwPf8cKAUNd9VnFYVbrPttzCA8le6eSQOa5Nsredm7+QGBqrlNzq + p0yR6kfratnFe3eZA6onX0nNVaTbQ+4d1bYSKBNx/GjtReLm9WS9EVXpzY20RU6KA0VMHTF2woJ2 + DAXyIWtqavkSk5taXKUlN97A1rhZ9bRPADtgbj6P7NKhHx1C4rYPjVocyvKjMDwfvm5TgMQfsC1B + IunVIiR+XQBOXb5jQ7+KGhj7SU0lUsSChA3wZyR5aU3cQPQuIfnGYsER4WaT0TJPl8v0YYiNGuvg + 3rLUnTx+mH8zy4Y/MPChUAdXWboUgNh0Kk+X0PbR8OY/4lyGaYIkGmrSUM3a/1zCYNhrWnS71YQR + kkvTha4KTevqc1T2ebictFufKS6oWaCSR/4AfiThDkXrX0t45Mei0Ea8OAq0r44FfDTzmL2nh263 + hI/mkivw0XhVBPbPrk26KY8xN0wip4wfPYwSL3GCQZT4fiJIGs6VtSQPFREn/pKuX/e/DIk+DpEf + yjTXg/6P+8noXkt+0/nQhRRuexdC4Evv4a+UUbGajDcZOeCnSn1Y9W+yu8mc44tw7/nnbD08Wy1w + h8df3083fD1iZhseCdsfm8vH4H8yQyFdVwmrOstQIK6fTBQ2SiyjWsvKpG9IthJPO4EfMLcMMq2N + juIY0npYHw49UTNilZdVXtT7z5kXPVw/CtLaA62V9r1yHh6vGLjPQKsgDMIWoZnIKeAbVEhie1hl + i7SOfHF8HuAjLaaRZbjjV7iePOYz+hycoJoaup3uAVceN+bsF247jb6LFzTF2GKHMAA7bG7sk3GL + HpnDxXXhW5IHbaLwW157LWmZ1TPW+C3iFSZ+C12kcxPsjNFkqtj60EIxO0w3mVvdrL8fMWBgPyab + 2aVcEyFslU6/p3e7cIDjUHDQPSzBJuIwnXUPtjMeE8a0XCCktT/MVf34dg0PtfuB1n3NY9EFj9jh + 73rsVVWICqImUSWP7d30YYQfIB21rZZv4ggYetdvERGl2y0h6LnkCgA9XhUR0avzCqIFC2OvjD4/ + TKLY8Z1BAuqyK/AskHVY14RWm9FoMhfsudPJHV/EIg4Ev5/2z64vhki5hDX/iGtsOnSyOQ/WCWXo + +vxMphNQjHU1qgJf7BUZTeLId/1KSS21HnF69eafvSma3KCmRlGZVrVaMKO9sajH0burqcinVGar + x0pZFPiVwt19hDb1jVa2OymH4WhoTFjkJNnR1N7r3TNGasqYkmQ5QXhOm1lupMG+FvWxGk1Y+d3r + vBj/Hq4JZdj6EbGCw9fRltDQFe00ChtxFrhhori2dtBbFh7Zy3oqavG/ftAUt4aiT+22Fqsv7ETw + LhJd3gdnrdGa1CEaR1yCaNV+Cm7CVNlsixOSbrcum62ekHRVOFsvrktls17khW7oeuUikSEYa5Eb + DSIv9lzhQRN6EG4wl+lNYYFzs5xTIyqAvGGpukFmF/2xWHdSNdvgnbnbpLDc63LYdf9I4jTSiiHW + FWZLlQ4NAoWzT4YtwSC//1iR39Ohw4wSEEXihXv/xdura4npUhArSKogzP/hz+a0tOlQWZ3WJUV/ + h2ZS9q1CF6xUe0yzdLzi+Eqj0WamlVTw7+c8y0huvc6Wc5hZ3N0isz+5+Gm26vEpptWWEojEgQiV + 2KP4SM04tHLTPHMcx0OcK51gCD4H7L8uUl4OAOiTXZEIB2HzlrJ1XOSe7yqipnfeCXPbOTXEM9ZE + TeIVJlETXRTIB4hNtcQdIdt8g+dzkdOGHd3b+kddvueFzPecpw5aJpTp89ulEwX25yfdbnV+Csml + 85OuCszEj1cVCxPGODYDMd6rIaKJhskgiBE70axage1UBuKK8hTtaP3j90sndM+JMvgy4whOBiUx + lQVStJNzKGR0691aMVX/8W0JjR49Yh5vW+ynR65Y6SQLKYq9A6Z0S9AZOalFntD5efDWP3H8FvuD + fMRue1Av0HYHeY0m92izlixu2SJdwqLnP/Fx/BPPVfB98lXikSzNEh5D4lpBX4KFw2Ga3S2zu5Yl + JaFHBd919NbLDCtRWx33YaBxU+cS1t7GFq1/sJXCQhhK2ypJdggISEBB7bm1S7dmbQaM8qdEXgPi + jNjKbQSJigmnsYEXQM4LtJp5LfDLdE6/kFI0afW2gAmyUN6d4wluzW07AWWEO6Ysx3y2VSqtdgr7 + fK3HRryyb8mhGeIxUZKvFqAn1c37Fjls7cG0fQQx1tXH9vlqPktEB6xQQjbkM5EXQPEQX2eI1B3o + ubHrET2HRct2kL9Tt5kffajYw8ng5TFJrE5nn6Db7HOP6HYr3U9ILul+dJWOx4u3/+eWlT+WuGHJ + deK9euG7oEoMfDdyHaX6oUHJwQmQ/lCqJqSsXWQ/3RocbAXSWNLVIlNX05NIfA7Z/Fg6lpioQ61l + a8xbXZcxNcLQDXa1sXfB62W/Z8WH8jQRYXfKRWEwB044CxnHZNOekR6mgVKnecEurXs81dH5fjEB + rSrtL9LVOl9iKRT2uarZ7fGxVU4LOCsIqcKT0Arye7d7HravhIASf+WXiY/hJRDaG+Aogkk6UIDV + +AuoD7UbQ31uBgEZaiLbHiVRbAjQh+VJvAna4wdn88vtI5QIwk47BGHHHkHYqUUQdiSC8Oc3n1nF + dgSrKKpACHvogHUHHnM5qiluIGeLRZYuuWsOFPfUTKUu0XvprJq44XrFEUi2YT6FVlVtQ0kacoRo + 65v+u838bnJsWk/Q4L+efbfV7gbNN4N/Tzc52Ncj7EVVEfH+3cXxUAKglyBfOWoA1WYKxzc6hsQA + YPH7PBt941Y5XhA9e6omBGxAMEPh7xo+IB4MvfOrj2obCmD0Bek1hS+IEp0OZjlYdqZpQgn4Ck5d + tdDORI2kD8t/x5y2ZOPiGVsflnyF4cMSF6VxaubTV/PrCylYOBIIiqWIuaT/Z5N6VqImhfA57WNx + UeYQeSdO6zIHesi+zEG8pFTmQFdpX1vPVsJrYIBP9o8uPn98049d2MRYcNy7z36C3TXtl27S0qJQ + EK8hYmLAukqDTHyHdFDRBAyFNsurpFghKZpvLB8d5F9gNlVbVHjsFukaIybSDu0IfrJtelR31bMJ + RaQ/DSdj3p/u0BzUDmyjA97xiACMsUtOrz8n81Efr+8ZTO4YgpFy9SwgGPEsOv8w/P0DJXjheTXO + 5/kSVOcvZ28kOCNMGYz/kfa59xD6YUDb7ZvhzwdYNuiltvlWe/lxpHaH6f6jETCXLFTsgb2onJJE + FohEXqsCEbjdtkAEJVcLROAq7cF/v7iqQIHAyccq9SFxHAYsHsRxFHti137DoZTQEMMgMVcrNPK/ + Fdgo0COnuusQj68csbOufntDKEhw5X4zA3XmnlrC9cy/L1ZdAIk8Dj62IbVQV89KfGMG/DX0WlOm + WeiELGZl8BAEAFBsbNBHUmkrwsI6bmRQ1q5Njt/6d0ibnALj0A+oTZrpg0hT4v2zvhwkhr3Ii6J/ + 9s7Ozobi4/WkgdlmilNDZg5wJMSjz39/fVyeIAOeD3mTb2A28IE3NWXZC5QrUqS3vb06v7wefvz4 + EY6rFRxVoBUhnsd8XChIS1h7MuHSGBtMqiNsfTq1/75OMVRWwGYW7EHIkDHVMgh7OE2LipAo6iBH + oSsSRxYyV5TLGq3eov1sQdRyQdvAByzm4vdJWjveYoT34JFwiEy28OXI2Qn/2Emz2ChVWEMWX2Qf + XnAJGVi2FDc76PI7kLxs9PaUFSwwgGnc8umGg/MUQ9F9+LB47EDSy0OBy56QdrLu7f9OCSu7cxTr + eUIOT24kDai8wVoNQMRogylKRYagylBBRLo/nrbnUDnB+SXYb/YOf7rdSqsSkktaFV0VHruz37yq + wz8OS6AuwasXYKjGnj9ggZfgHqBne8wz3LPx1bcljRYaMpliv4Aa/ml4Zga9oYsuv5wNRS4gbb+w + DWOGnVCvPqffvGrU4NmVocNEWA/x6EDLzZj4BlGHFzepKGB9g7LGCj9e9z3a4yOt3P9wAPc4ZyPF + MXmbecol4mVrHyDJtSgosJpZHGKyqtxzmPKpncUt4SrUM9Y+NfEK06dGF0Xqx3gk6mBg4G6hE+c9 + 9Qv+jRxpbtgTLJYKOPMunbUoZ3QSVobcHPB8V96lU0RAgXHBdO+2WKTt62+3w584ROdYAzR6kFTi + /iCp0LspTzoRlGTWAKyPmaK0i9ya90plxOzevh81dhBWBrZlqxP6aknuusz/ldkrZgzUuqRhKrQc + fT/SBaFWzSkt0vXoXtgdW8qYwUjRnt6XoiwOChmzHAFPli21DYdEUFbsUNOdsp+wb83vMklVaKdG + yO3QlVlwoIqfsFa1v+oZ2zw4+QojEU5cpE0QD4pSbn6v7pouDbPjYFkekhR7aAqQUyhi010vfbaQ + /3sD7supJPAAL8H4PR+e2SMCigfsMAGl9DIqoLhe4AImVVjAIIjKsIBD1wWzNhzAD7+sQVYCvAQW + dhQ6V8dVyLBB/z5d6e5SsIzBwu5jSypQbqc8DGlylGmoaoP+zWZtpmAguCXsGf/KSYUyWoRuG6qs + qLSK/D4oYI6Hu4ndhrwmEip/MXWTR8xaFmcPzJsmxDUR/X7LM+BTM/6NOY9NVaFBkKAqXK7D3Q15 + ZtLceIHNC8ruv2Z8YsThK0vs/UfNrB5fhcrZ53uRNT5hbWmpzYNbkBDcGnbz1hv9LwH+PQhQ0HWF + d2z3CrT5mmeDT1jPGbO/vK0nGy8V+OPNJzCj7ANNdLvVqSYkl840uirqXy4vWCXSBEdYiXY1hAMt + 8bzEHbiJH2Ei+84CmF2JOLvycIppDX9N+wsUjOeKCr5T7tN4Ch8zWvS+vv6//tHmZgIb0Hqicek8 + 9P/vuD/OEXHdcBXoBZolBq7z8ciPF4PH/gJsskKxcl2fODuFe199iYYQoBbE1nSHxylG3HOv6Qh8 + F3YHWimXnsPsnYd0u91KIcnllcKv0ko5f1flNwLrKSovlBcMIcl8fwA/I5+JfL93Yl0Qw800Szmg + Dywc729DGF7iJV5mQ6QqWw3g10nOa8fQlZDC6As4r9O+650E/x+NQFHMNRY6w29vDPiKWTqDXXiS + au/Dk7UkUdUeowIgSenPL67eDUHksVhl57c1hEecVa2taLmZl7SwqEFJwsRJ0J/jKuuE8fLtwk2o + FS0A6yRJJDFKChVPSn1p8Tl1cWUwWEK/9MpB4zcpzc/8IkPl86IyWoytvPInlMRWuJR3izWJxwUM + Hf+dr+GLfNr/+BHX+izHYhzzhWHS4BNmLmj4Lmi2hlVewjHcPeFoVE6NiDfec3R2DHruGmPPo/xu + PlH1/obCepPD5i8X4dYXDfoB+/9o5fuFCs0PkGLlnZ19Pav9HlxhPdxS1AEQOXQAQCdxdVTrWbhf + DuaM8J6gi82BsHas4qhz51nd9LBTmD1yXJm9ZPkoFeKUCRnb6NsHulT2hm2J/aj61S13PasjT3tj + TT/vI7H3Czw63XIvSjWAsv5/++QELQBX6Ha7gnGSXC4Y51dJDYDDvKIGuFESVgrGsaY+dgeeF3tJ + rLyQF5gZU9CziuEc8BAJlrXIceX7yGU6dkPOACRrGmHnyeboUl4VGmKBXqJXt9Kega+jI/xNdls9 + wq1qvrVdmsXoe684RboKLeppuMgIOk5nOOXB0JptpqVmhklk10wl3UalLmORgTZeg55WeVHv14ws + JiTjV6B5MYeFk89F0a9416k8BSacYBG2JHH3PyYLhgld6ZgSSaG/i/JhRZon8up7OOVVSX1A7hZH + LOU1vBXOpMwg9LM/jFzKVjHOMjDTNtD6sQ6Tlv0cTQRYwh5F452YVLXnWUIoUrsmbjcRwMpDcleM + FDNJ+CE+cfx2NQTyIWtuEvkSk5xEXBU5qG8vhNHd0341nsbCgCAQlRyuX+NFI/geTt+YrkZwxLay + cyM+sxrLanaVzPnF09CUJ0bfkQMbC/8QY2ELq5ffbukf4pIr/iG8KpDqv17EVf+QE1fNXhfM/DAc + uLBB+AJe7MrU3yWb9SKH/UJuh0dfLs6Pi10SVGRjo/yyWcTBYoA/meuIX/xgMTwf9K+yEfMWRPZw + ld3Djsa9OYtp+oCiljjumF4iXsv1qOwnTyTER+DFOt6XwJqH91WTnI2Wm4el35SRjMgacRJtCSCI + Y7MBYD5gzUSEuugCW/7T1fAmS5fC0sAkmXU2lLuJqE41q3qdJru7/g0z3Tg7up9ffrlQecM7XtQI + vtn8IilQDJkZBHGa8PDrBao5IBeiLfJbmJijoKdaB2EAO1fDm/hUafGWJsu4/nvKnV7XR6Gpu+zs + 9OXuTm83XSoxpO1zhDmtpK/mu9vbbgGhxAvL+dxO8np3U3ctkN5faTPt8WOj8G1Hfk+sWmXQimf5 + IWit8RQxOyoAXG6RZAEK5FOiM59JB4khj81hUkL6pNpd3MAWaCtWfaOa2weJUz6JppPgEOlMj0hq + DHWHiDRqOPYfnwMBLzszFQqBxGorV2Q2/w622GIXpMUWcYkurnp+2Yrqqm4mwL2DB50KZCsRY2vX + oIA5buHz3LM1cNY7NTaK8Y1Ku9gLJvQwz2ZIgGDG8Nk5Nq2efERYEI8lYaC3YB+CT0aLYat2bbXO + O4lWFsQn76L2xCf0jDXxiXiFSXxCF8mGWy3WwiDT4yLK8QRb0iwfZ9zQNsr3jQCD5l0SLugrENtD + 2WjKwxwQPKHMK/aR/IZj5helJAM9NRH1BsMdfShVeehRkjfuq8tsAYL4n4cwhMrjI9qCm4kqT6y8 + xbqsPfSC4lRoDsbsaDVl35t4e4bEAX6S5rZq/YJoxwtISjXIpOJ4bd9IRWxcI9ImTtuXWNeOez6B + Jd9PVmuw2YvcZZyJMAO2p2I7UeLoG1CxNPafGU+YMEwpT6TnNC5alRCzN0rE3sGb1lvrLgA6Preq + AHQ6MkLGoSBvckytsJMv9m7myMT10DthrFXaOn/CNmmdxBsp6/wS7dmL5cKNpS/17A387wN8zc/+ + fYa7Goj4GpBOP4QJlI8I71x27AV/WN/LuTjMaI8j+EkYRAIDBauu5UYoklAKRJEVbqLZvlS+xXZw + SNhXSok9ok5DIbxdHUeOHyGDH4wGrpV00ouH5GA9x8IA33Fknat2tOHoykneCbGXJ06G3TIfl3LE + iR0qtjK/98B2HY7HqbRwl+wbY3mV0pwEvRjfXDHFgQTMMjxsJ3th1MpdV1VPMjcJ26Fmq2esNWbx + ClNjpou05d7rzMKyNmjFLaMfmLSuNkyVEFpmAxSvwCpLxz8ErkwOj+PTwktXo7yuJe273gp0ynad + dYiJBjNRZnn4nn3Yi263zfJAydUsD7gqoGE/vKlmecROhRbghQcnROINQMP2k6LgloBUCgaAq/Xm + DA/Xs9UiW95NpujomU/GoJApHp2L+/Ge+RlFyClGuEmfVUJOkl1mVxLZlqRGUP+aud58aBNzyiGK + VbYZ57CS7lPOP/hjfW9y6rAKOk75O3rXevM4czGHh8HUWHROZ/N7zDdY1b1Lx43RoNtgEN59+p0x + dHT30zHW15QwaQ1ZqqRXlTCflseVSzo7KcZznHFHHD4GEpTefQpdvxbFM+fjkRsvCv9uD+dbkWLh + EqnbX8G2xFHkOn3NaNv65/wg8UlIPfT8gZZqd9XW+1tnIWH4vtnbdoLlVzMZdlbmPobMJg9yF54z + 5gk94OKPr++jE/Qp2esB8hlLPUC9QtcD5EUJgDldp302XDwsQblCEPVgKBkR07WOf6crAPypYdun + 9Bah2uBKEuEglN50lFVUBq63+cnsbbO9xG9XdLuB+UQmZC6HM89LS+PQ1nWF1tklP8MvQ/70RWHb + 7pnahSXWwcseDwu0IxBPuY8pEiDGYu+E8+e1gD+gZ6zhD8QrTPgDukjq7I/1LRPMBfArtpy7PrXf + +/+Lt/T4jYR8EAYc+eD5YCV7LJDpcGHYplwSb7dNh0PJ1XQ4uEod+e7sIqpmw3lBpVqSga4QOAOY + VY4v7IK3qnZahdropBwY9SqY3CH2pu+ZRCNWUWMyFt6li+hQY4E5YeKyMHlEcgnp5wMdznWuuGuR + Z2wYxVJ+4jSYAcxFVCs/2ZIlXumoUop4Y72R/PheMSpfCC3NMAaMGvVMFfCo0vyBJJtclb4XR9H4 + ZjBXeAXSGznGxcmBlfPKi7vq53Mw54lTCVo2FTVFvseFyaasOLrj5WLF/MVAsoOiWETto/kF38I/ + gb+1hzNXJeR4bkCcX4TFo5Vs8++Vn3lQjo7jEz0GmE2bpdLlr66+Un/wZ5FgerISC36povNcF+0f + yXsH/eAkvurTr5/ExWP7lvwlDCmcrPSCLbP7udk2LVzTDYPjOWEs2J2y5iL6pqKmDhEfD8VcPAQ2 + sdw38rxTHCd+C8REut2W48SvIibSVTrv3l99qKE4wb4yKU5euF4csmjg+tAGQY/5fopkPPcTjMcK + pZ1nAxRgwbhfmd7wAvMEmZU0AUfQkmNR6oHVlUP+x9nDVNJb8WyCu+nDCH7HAlDQ3zKOIlxZRHjj + fYb78X2OjBn8RH2/uq9iL5qpPua56jYBxzDoA/hrpaz4rtwdTbjUoDCEjUnliGwbhqUTURfdDBwT + BY0JtkJq768xZD2clYpUxRd1sxFt8rV9sb8tu7/YptMoEVmn+kbPv63asArjxFbEmR05Dp1FADsz + Pr3QK3dtdWE8icx6GN6nAgHegeVLeaPTyd3+/eK7sUheVLgRB3npeMHZH+8/uUGLuiS63epgEpJL + BxNdpYPp7M2HSlkSmLwmQYKXvHrBwKxHO8xzJPPWdJTfV3hr+Ar9+PcBTAVE7hyBHv0ntBHumiHS + z5LnVxBZF5KFaPvfGNYxqth1aADwwASGZFjA2qd1b1+dlnTTyUpthzw8UewUnKlE1nKOHsTpdTa+ + rxYtmUXuJaC1MqDELtqv2nZrceFSpxjHmdNIMua5MeYOlo4zmIU8eLIutzuEId0hqVc/vJNVLgb0 + LzrQPZzw8szzXGG/JYRJoDlIq4WsIEu2BU3Gt/dL+Ot9M/j/tkpa6H98wBgg24OvO8fr3hAOdo82 + 08g6dPJuXwt2bdlX1o6Mmv2ENqkqz5Ee6WCaIHmGxSrjxD/3T1jLjBN6xjrjRLzCzDihi3SepeuF + oO95xyRvSzoF07HAseT0awy0rzCJjnsNt/VQEE/IluDeoMFqKsjhCvGhdTAx2cl4aW9iliSWmVSa + +SFhA1CzOUh4omhd9xfju1GkyMnFZgPTdd8WN0XOQ8dTg7tvuK3FrrrDCUSFJOYXT+bzbN/6eRBJ + c9cUSd01VN2Fa191rGav4iQfiWqWnYUfB8c5fMJtqmvc+kc+XGU8rC7WbDtMS+krA8U7bv0OvTcI + h6HlTIaNhDW9Ve/2uhfy7n93xGq8tU9B42JhfLVgdz/UlAucqMhc5+QZeWPhWLZvVgcYjDSPt+fH + c2UxneNN0MEr5eLhU8lo0iz/Tuskv6WEJUq5etpDW8lJPK++C2tnZPHlSyGIc183pqs2brOP+9od + n7x1+XX7mZ2/aqsKRjyLXz65cQv/Nt1u5UYQkktuBLoq8jzPP1XyPH0HcZF1/3b46kUcxUmANIue + SBF+fwSL4Zj1icud8hG1IB6P2V18+B3JFSi/czSt5nfSwzV4RN8mXGUHJV7arXXYlo7XiMjA8DyD + jbsCbrnjjTVlQgZlYuA1IR+Yb1TGPHoo+VtN4JTI8ZsQD5Sg3sV9Dv0nelgEVbEfB+5wOvnGw7G3 + YPtOH8wIOnwWTANeK85hI0F54GdR0RKCftQjeTPkmpbwBQMTyxcjqATQilhAcHVMsijNsYdzSHmj + Xc+jyKqM5ukv2dX57UzIrt+x9SzF8gV85D2DbQPlYJ9VO7aNNwGnAHckb3l8qzrkxlFc7YAMWaOm + k9U9HVpLA5kMOwhfRyNZ1wvNDQ6Y5zDV4PHkOyGStWozynBrBm0PiaQqeSK5ZjRZcHA3gxGeh/7t + 5pLniABu6w3JynGslKhnGZt+HOhqpZDBnmnTtzYVmnV8RkniGHALQtxeXhGXSPr+55PrtDiS6Xar + I1lILh3JdFXgbL++qJZeuIEJSO+7r154MQzQwEuSsARHb2TwnP/+muoONTK5ZT/4m5avc2I+oRNB + IFIvCEBQ7hOJhX2zqMHC3sfX7jLHj/1KoHimV9iaJRiuKep9AWXt+Z5X4RJOs2V+g5k16LleVv3p + iRM25V7VCyQo2gasTN9xdwjrfa7Y8U0Y/HhwB38bbuZyNDJ+Ysu8G+Q9lwPLg8OpDlKEJCLFcHM+ + 62JMT2GQkdSYY/LLTQwagDJLzooUy6eFKpetPSdZ9HB2Kjd85As3fBBXvRRGX+0RJ+6maBaHmLuE + a6bCzqYc5m/34HDi+3b2EzaEOeyPPPezlXeokvkcuQUmcuMOV3OGy/1N1Bm+vngdvw5PnFY0jcVD + llCZxUt0qEx1lXatT8N0hZzJd7Rt6yUBW/5kSEeoYRZHolyAzH8tJnQwrEZA8DmqMVkHIonbTBNp + sVRaFDWQXsTFo6PvMOdoQK5cnMdFxoXYjVoqIyGLlQrJCzg7V2bKS8Z3wsjo6l9ZbCyXoSsSCJwk + apNAgLdbJhBwyZUEArwqiW8+V9QM5vnVBAK4DC0eeC78vwjRfGkmSUQF4v0KNIRBlQ9G6K8DU90g + N6caUNwll+nt7WT0TaQSz9IR1rYRmtFKKyPE+mOeX5gvH+iEvHmQpYWkq1wtZ/sVlermeBiGYLRU + iko5OC8drBjAbigb9eOINWgFbuDHThwciEJpwHHDWeU7FYkirXSbVMwj2yW192uHfbVZ8HQweFZo + QHBO4x3zrEgcEFF9u0nSwzWglBks+BA9wQ1UmYx7WBK4myhQgVvYfbhNfoBS5Pi0mWU/BUkYhRlg + J5jNuOs654c/x0zkieeZINjBPlNZ5E+afG4BVWkn6VB/CQigzkMVrDUAAUtcAtfSk1SKGdjaC7K3 + J6UlYNNjoLpUnt6eeol7IN61Zcu0ngRd0PV2A9K0JT/QJcbWi0vmtTje6Xar411ILh3vdFUwtV5e + JOXjPYB93PQixK9exI7rBd4gBj0pEq591Bl5tIsXwxyp6pjjIhcDdodjuXvRNnkkyOVW/a9efzXP + cZc47V8uF8kCs7xS5Blfo/tMlQfdb2Zw9as3DIJvBctm8ZcRVotzSnu+i5OpinMKTd2HLF2t+0sQ + D/MQWknz5aR/dDHdfOtnMOGn8A+WJPFx/3MOv5/DUjvpv57g7ywe9P04HvpJfCIpvnhLy6oC9YBc + Zc3UjEZBV+A1psY7YeL4Eimi/j0cbt/qTagM/6I3aSRizHVCRHys6Ed8CtT5caCHWNAkjTF4WVim + LvECLP6azHAVaIeU5hUo8Ww1kc6a/XJwrV5TNxjaXH+WjwuwIEPrYkGj1ikbqrhtDU4v2bqi4YO+ + BoTGXTZ8HV5+uTg1aXEbaGdr1vSp1ZLt4Vaj2GjBguiJL1OnvvH9W0+LwvcTFo/v7fvZImVnE3zX + LemBOlWCven8lAzo0u/UFZWskhdSulniGCWYlk4wn5wnCN53/vIN7QsXzS2pk+E6xNTLp+5QTlg5 + VXe1pCe2HC7B3JVaHeq+SpiMPb81RBc9Y50wKV5hJkzSRTrg7+/XwhqXmJ8fvF7xa//eO2E9vAmT + IV0wG8g75hIin0CIraUS2gUxyzNBCo2zAE9cQrevdECu7cijmshijexCpn0cjPFtOd/d45bvKXD7 + Go0orlqMy2oyhUMFZ3mKYdE5PMqJqlp8/CFS63zpThSHpZFuN8COwD6VGpkpyG66/RIczMRX3djm + u7dgJ9l97P7AS3LXI8yJi09O2IJ4mG63M2VIctmU4VdFqdOnN2HFlGFlxkEwZXy4HnsD3/O5kYh7 + 49f1hHxRX87eXLyAMSXH0TIT3z8S0fyT/pmqXLl56H++c1/IeOfZdBzWJC5J/3NJTS775gYfr4oy + Uy9xnSislhbxOoWsqVyhVEtUpuNpfEMRBh1lPAbQVBrLEr9UV2RQ/EXQm94/e+eK576+wQOJTld0 + IQ89biyH4NT0D4I5+T1bSsw6/gnytVjRQ590qnjosVoWzgtRMpqNT7kfcl14Ic24W77BDNPVZnkL + kvqbBb6lVHTbw3mn8pqS2OXnpxMrxw2PgqhGWQRYcHpnP/gnzxYblT2Ywn8eSK3sEj6KjyoPfJSH + f5+yXT+QB38R/9kSSbX71ABmFz8QRrlw2nTWi08Hc/VIwBDdImwdwvvbEpwLdijysqZ3aC1tZvun + O+N2x1/esEUewZZyvH+xmAjB1sv+/4Lso4vjF/9sXdh2sNgmXplOEbrcUCJ0uf5r5pywsE0qgPaU + LUpX8RoDp0tdpgNbm9KL+3TeK//blIQuTS8MLOGFK3ACcsx2PtodzEzr1fTrEV7khKGi94+f4ISy + 1wTpditNUEguaYJ0lTTBrzUxa5chha6uCbJXLzwfZoY3gB/QbppYBfstT52WHhHS8b7WxYktdbym + 2vEDkMkaatDLIQkTjqzkUy0xNftwA2jH9TSKzR7K0A+b8dMihqjc/+x9re9a7oT8kaXfmirG1ZCc + 9ikpFLG/uLL2lpEooVHix4qs2683KVb6K5C2vgJpEy5KPpSquhsWswBvG3CYsQnngjYD0YhsLJPZ + BxRw4KJBnQQb935yd98Ho2qBQdXNMut91YLGzI0cXKUMdn1aTd/TFaqQAgG4VNN+N92Mcvh1Ct3Q + VD3++ETOTwDDVWyspITxOOfNZmydrqY8fz5V+MvP2yxnD9OGnqvZb32Xo5KbnzNebmoa8ddBEmso + 7f+lSd4eEzQTKqc1rRGgt1yeKkTx/PaTw6Lz4Zn1uSIfsDpZlPTS2SKvi1qozxcVrC8wxhIzIyp6 + NWSuGyXxAH4krki9/gxDIfHW+3wA0iKr88PRi2NRrH7an2d8ZymAaGBGwpuZLJOaLao4XEqSUYrk + uE7D1hw7oYdoV4+EbCnOiaJc2zgxYmaGCoskbdksCmnBJrXAGsxS1GpL5/WPLmYpWxzr0PbbbpeK + cXOn93DMFSokc3jtEn4BX0vlz2y5k1qLqdn/iJtCLKnSJ7bzAuwu666rqXg+oLeu5BK8iN4HJzBC + bQDR6RFbPHTxAgMOna7RIkdfU7bEECysnzuNGQX+8K+N4BlrYESRwjEYEzsOUVBxonj0fhSPt+pn + LAxx6qbI7YabOeMNp9HFQ+Eune3NkbLnkdTF9EUpUXkm7ZTYhrTlF09zqah4nifRYnHIYBb9K6Mt + ej1Z7DNwYvl4oqDp0gla+O/pdruCJpJcLmjiV+lc/f2qxmrjqmypoClwkygKBoHH3FigdeerGS+x + FPq0abX9vtrbajPAH+PId/zyYXm7maXLElvBl7M3H44bCoNZEDZiVmovKEqJstoqInT+7mho712l + aWWEysLVCVaR+hIs5d2MRpM5/KOUjUsPFb5SeMzEV8RPB21hjEl7c1lMAxvXeIL3r065/sx/haZs + sD5WjNwqm3NSE5yTOBNUvi0cj71d3u6dAa7n4+Zt618l5w4xwKlR6QYGqxPkxsQhwGf5JhjWJaz+ + /WE5GGFtW6wrOw2lS2eoxwSyvstYG2R9vN0SWZ9LriDr41VRj/Hh0ivtkixJEqeCrB+B0RFgviYT + askHnazt98t3Ynf8YzwF6aPKBvk9HW2wTvAIV+am/w5UmclxCVahEbCwyTXVlWlxM8F0M/wSea1W + DvrZS3J6vQLdPRL6lUcuT9LWhtwxIb/e0qqOuPeg8aEdmwIletDT7Xm9n4+SopQJKlv6/RIMY/tl + QrfbAXKT5DIgN78qALm/XFcBS+JyMgAY6QksFuYPEhY4sTDSvwwxFPowJTccFgg+TLlZdkssWvrv + o3TBzx0OjaE5R+HfX4bTyfxbRtDNSHgmCA3e59O7ST9dYJnZeiN57d7P11UlhW7l1AlTZKDFYERa + UliSRjezGwYsjqsQpVs/rjadIAZ73OotaoEaH5+vpDPO9BnHjRVKUmhv11gc3v89nCoqfh/7UU+0 + TT8atSrRhi+zchQ6gvRdjuueYG/PYLfBiecXn6LN5rZSIr1DzIn+V3FBiBWCt1suLrsvi/wCQnKn + hK16i6SLO3eTt+GJ0yqGWzxkm5WqXmKkpcqrwkkiwO2Ha0y0FajdujNk5w3Gm9BfErmMkld98qjp + ABUtfXI+lR/zV/O1n47kQufcl9J7fcAbiCVefOXDdFj3rr09FvvKfzzL55cFtH3hX1WfbkyofZNC + YhZp3ZtZyrTngNtP/uNyt3SGc9wJVH9H+MaeT+kKl3AO/G+LwJJ8wC5lQUovJy2I66Szfr68MnVW + aJwXxyyu5i0kccDYAH5ErrDuPvKYxe2Esir1HJZlfjuZ8kzs+bg/gwXGiY55QjbivwkrcLKEpvwY + plVHmXDtFNdqTS2kIKsz2Z6l7efGsRc/M9Y+jzKoP186bSCl6HarSSgkl6YgXRWRzU+vK0aTB5q4 + Of+CVy/c2GcOG8CP0He2exdmS5D/4/knzTyD2Xk2mpCDCktzxpP85wNG/DgtQ4n3EMYZOVsQDmaV + Tr9jPYhCNNBr8agO7/P1+euLISs4FW5kEBVHnzn/q+M8wp8W+Wo9NPgXeGEtbCuXX4hF+mP/6BLt + 1eM+1lfg+0/7Z28+MsIbMskaNAqpwg/cw7ul0eWHjBcDPgqPrZM4sUjaU312uFSWBE5SkipH4vEE + NSfAtBLzyMQTf51kmCcKnDd1Ffq6iQtvMvqWHQD33C1zBNidVM3VIE2Hx8Y62SlsVvk8XwpEOtAN + 8+UiL6gsixw82tEG1VvWP2C9r/MZR4+lu/492ty8YruC+g6YS+Ub8sA4wEsQSi/B1y+/+S0zvYuH + bL0E6iWGl0BeJa1C+tgMHwhhGcOLe5zSY8D/CwdWdp9O81U2lGSSGqVZ2W+g3s2LXhOuCzqS0UJJ + 6ppDft8XbCc7CAKVO6kKbmQOY1MiZgNlXhsjvfgoyk6xHgtZ0n309c3F8DZfIiBRDVCQVc5JZyR7 + ICho9RVm6zsw+R+tBTv2zYN9jIWoIGoSNVBXeaaRWtZ3y3yzsJ3xcpuK5DaVBEk7ynj5iO0WJV5g + bFB0jbYn9MoMV4vpZESp5xql9JGAHzg29p4tD0i4gqtszoLeiv8XASv9UPATeXHhk5QiBpyrTMkR + MF9SKed6PXpZDnQmxg7V9K33gtmgYi9SLfn3Y8ZIPje/vhHnwX5z3VPvjNRDMFd24ay2qKTzuUZW + V07ahfj21XbM2zoAB+xgcl3GslIMkQBPHL9doZh8yLZOTL3EKBOTV2l9Zj8F6BQZrmKSwZL8eHV1 + XFszpqRiyRg27alLxro/1p+TjytR2CjhOfRz1A4bhZ6xxkYRrzCxUeiiLCKE0wgM5mVGFnMJGV7f + uOnWl433Xiy+BcYDC7jAtUtP8suBxs+tzWpIWQeePDTss/9LtmMi7lwC258OCVbHRPZr6VlwEo9L + uREZZqtssd50V/jSdb1MdxGsMHL1QT2MoQSk+bq0yszeKd4+irXHq3ZjlRz+AX8pNrRQYIAe9FUd + 5hL4joCGP3eTM++Etam0UM9YAsOrV+i48PKiILP43/+9kHx9ss6i7pouDbZlxwt8oVYL1hEFXbTM + Zvk4m+437gK+KDBFPr1Wu/2h7l6/9bj3FYtA/Do6cZ12JALiGVsOAfkKg0JAXKSpgr5xMx9HP7A5 + AmHlji/5wq0QCshXIX2sG8l5ZAlFaH+WdwFu6DEWFrjK9H0HKhlPBXn4KHGCXTiJdl6niJJrtkIE + bs+kYKSnVSfcnqdWzCLVpDZC7X0AwrtzNUzHYKqsHqZFqEmrL+/qg7o8sFx5YHkhLFwnbrUNqYds + jyz1EuPMklfLFYLZ5htIyIX7l59UdfiG9dWC2svwSEskeGMboMQW29Gh8IstEcm7O6Qe+7jDPdEj + AAGJrLm/5ihnrSdnLdh0J8xtN2nFM7ZzVr7CmLLiIqWG3KWSd/29VjStihD5xG38S/89PN1DEXye + +r4j3CqHWoXKvnTpqCTMYtEOnk2M+QydyOctvUxXhdmxQ+rNQ38EQ4toZeIohtFp/F5ZgquV+PLI + pHL/iFJdW/9RwJxA0BDoBIpddxAd5K4r/ENaIWDLk/lJQJICJ+F9Yk7UAzgAnCSR06KFzC3QLXtK + 3Hr8+ZJDiDmtOITgdlsOIZRc5RDCzCKqWathDya85xKHkB8FgR8P/Ch0Ind7XtndFORX88rQpy2J + YpYZR+jZlHPMYu+vlxtWVK0lkYhWRzE/ceq/2NK71UrEDt06Tppl/eVL2nyZnclCz76kjW63zM7k + kivZmXiVVtGbL+/KlZ+uF2MJr5mdOQxi342cQRCHXhyZlJ9wBMgZJ6cyTNFllsG/p5t8ma1GOkrU + 0ft3F8dDcfTIixXipsI5yrkiFyiY49vIUIjMBIVvqdaZHpgJ+qxW6UW2zH9OOIkW5lhjORosglG2 + wO17MkNYFzyseQmJuhV67T4DzQ+JlxGodngrDoWCIF27Wc7fFQ/uwt3FcJRu5QVv3yff81NVwD19 + UIeOxh86e8hXcOvfoQexnZ8fcoQW+vjlwsVUTlgJyMqCaLmcKIsfXz38q8rfjCIExPEDESau/7Sa + BVefhLKvp54QrLWXd/bcroK62BCAnKZ7V/Yl5f3KTuzzLYzzRZqbWga/EKzA9/zEEALz8j6v01Ur + M1MeA2ERwIzR8m4ZwOTP2Acw6RWlACa/aIuCWkghRCGv15Hy8BymlxwUQhz98omxFuXmdLvV2Swk + l85mukpn85ffL3B6lurN3RIonB++Gvosit1w4LPYj8UongtsckG8E4aCVkhR7xDW5DRbYRpqUQkQ + Olc1/DyFM/bUPKpvQI/WXJ/8+Cj2WH5Gf8kXLKgnwuTPlE7oJlw5xoIYM5cOrtWAU95z4scDqIPP + /zbhfTVA03vNt4tp1ue2OKbWVavWnaQEoKqDp4ZBBAp6Pa8mDBG0+C6rGSj9Bb7rRmWQ/YHBfKX3 + bYW8s/DJmTKDRqargLHQh0b3nsE07PF1pIrxncDviS6XGoHNcNn6SHhXa4GMbSO0U+b+IY09yZtC + iVCgiJYGpebDn0ab5arugHu0alsvjApBPB2XV/HsJWrvKIs8Fwgz9BMvsrQ+F+h2q3NBSC6dC3RV + VNRdXVawQj3OT6ofC/6rFwwWtesO4FRgIdvu+ZjySs1/6zrNc52ILu1DJ4AWPJ7MYKqP+hf5yF8M + Py5HbrDow4iihjw3a+QKrqlbyqeWawJtImG1Ensf6IEpcdjNdGjWYjMBCcVdYA/l+CdhPKVTjlNB + kMfyBQR+Np7cwjTlLL5F0dvHy3NX7W6+w6vefMSlUTppuiOusqWepJWcRq8xI0J41a1D5SQuc8M1 + C6/TwFs4io29SS7lInEwcKOW8J7yGWu9W7zC1LvpIi1NTKKVW5KiN6y5pkvDZIHQD+wRKroC3WzD + /vF0GA/FQz5lc+XTh3rru7uQvH0txqFHT6DgND2/FZwm3G4Lp4mSq3CacFUcPW+vWVIF1PTL3L7u + qxd+EgZJNIAfiYQTkA5DA/1R31ZxkHnwNuuPqGJ0lUls6mwNb66iUxup8KVMe9Oy8L0GbTWOGWNJ + VwZBk2DDQKh8ZL3ejuRXTYZB7MXM86KCo7VVr572s5+TFbIZo7bcz6eTO+TSg0MsXVOtdWFBVxms + Sv2M6jZyWRH+J9+g1d9Wi5Q8kIKgOe2vf0Bjz38m5+ganNz2aE4paM4oCZA0E8wRxZdevFjyPuUw + b2HyayfHx7+3OJnEJrc3LZHdo9tTqDyK2xquim2dbHWkBYQl+f7S8SN7rwXdbheXI8nluBy/SlvE + 9btzvxqXi/1yXG6IoYTEHwRx4kdCOzXwASSX+jrd9I+u3338+PG8IAHnKgXfGK5vR35lW6gVRDJq + OaaRTKORDNmLfc/xytsDT6CD82VGaUSIX1D71lrsOy9yEqv3qV3DlD2BPpgI6CicCxdwMmIL4HZY + VDBtTErquJnpWbys9/uc492tYOSV1ilYTXZ+qd4a+mhVjinG7bQved1R4HW6OZOptHBJjAvfevBg + XPVf5z/POG2k+p7VBOMW+DxHnJqP5QHLtdfVaf8eNrLri0vaU/DfHKXiHh5H2ArY0egtQ+a4PZyi + ar9xo4Tym4IiNUx9WTtdBWQE5JbW0yMMiQP8LC21re0LYr/ayPJkqBkv1Y8vtyXD98RKqL6ifgVt + FaY2y33Tnw7gDy1ULgKwaL1W7b7Mp+LJ/ZQ5gjP9/MkJ3RaxX367XeyXJJdjv/yqgIZ6V4Uz9YIo + rsR+mR8FTjCAXTyMS6qcbiCXji8emSQMcD3UK7FJP9/WYJNef/i9fn/2/Cq5qe6/dELUGcp7dK3D + yNiHw6gJOZ25TuJFQXkfJvJqaOMNgmaXHbmhx5wmR67RRiUPp2Y2zed3ld28aTMPyySsO1qM8DlD + ufqyn1XSFN8JG9ucRIkbgZJ5Jc5duYMX4zTo/7ifjO5xi02LDEwxhvhzOVnB/IAHPyyWbDHo84Ef + 9C+n/F+4lV/fL1z4tdA9NWAiY5lqHcVxx2DCrSkaXozHqfk8PMI5ovGwWWdzDBr3cOIrjwlY0j0x + cnKzMcfX1s/xVzlCKEm8bt5Vtknj3LDsBJhNXDfmL6DZxh9o3P9rMW19n3eDvh8oDcKcEvSKxlLv + pnbCGzTntAxX6u+zFnXQCdfCsV3DYBUoDNbojd8aglU8Y+vCkq8wXFjioiiGwc9bNZfDjJFj4T6f + Di+Gn0E7K+Yw96cesaF33K+TcTa983op/odDsoaxcHjR+aukCgxlbsyKDqCgQyeAK78mP66Fo+2/ + eXeWtrfDaNnpolp8apGE3SMTgpiuObgKG3jDuhncReFrQMo/TfeHaQHfIt6YDTkEiqA2482xbkol + sfxxX/ckpTqFqEfGkNFeFFu+6B5RJPbEqgko+frtpRO1IAyh2+0oC0lymbCQXyXT4fLLZcV0oIh6 + ia7QQyr4YOA5rodIRM8lbTRbwrf8e6eNquRuJ4683h5JkAfTc8rpSlnO559Amn3Ygm63mq5Ccmm6 + 0lWarr+dXZZ9kmjZlKYrYtAiwc3AjRMvpMl6XecmMDztHJVUKurwIo+bJucff2Oy/oZo1cDUma7y + 4ln5R8K+UP54tFl+5DxWvIJH+qtp/iNbDmeTuyWVP+FfYH6BSZOCSTZGjVSI+p7dZWsKHAvKMmxJ + Cq1G6oOyCImmCjs/aLSo589lrOW3dFl1qVqlWZ2r6EQU+MgiUloXpu4ujJwGJ6nnBK5p6r7/qNNK + G69QK4ZXPnLCQdvqJ2MhRb7bFG+pfZ2ELtGFIKxJOyFgx1aEOGEjaVwcxGGF022Rc6qzbJvpuNO9 + 4AeJ3+Qrlq/t7V4T6JPV28GjU4uVRBpS8w2m/fNfFD3cPdRmGoQOaX0xV0/eM7gRz3nE9xTuCE44 + PXoY1dKoNII6OQLcq5jA7XR2nLrm812X/zmhYJohm/mGc/+Jyl2YLgM90Qs72bBqayn2nhAraD/E + LCfyKP3AfnVtcaLos8ouI8+XRtM8u0sf+/0NpRPPHnqZUjWcGt9bjVvfou1dMBh2hsUglaiiRiCK + wxOHtfP0yIess5XkS8x0JXGVVCOB/QX2Hz4F8pAHBQ0omGHTvrhsCEPnjRsL5LKQFhaZj4fuDmHo + i9wnsxWz/GYC9sHBWJXbeEJb+TComfTRiC97iLTEFwiapY+2kPu43MuMFR8p87v37/1n4DiimiNy + bNdPdGNZz/P50CJ8GBA27/v9UbwiStfmtK3TAzYXqnW5+MSC0N6hQLdbWWhCcslCo6sisezycyVr + JGBOiSUkfjV0gyBh7sANwigUNtqFPNOGGt0Ebd6DvvI+47Dfp3CCMjokigyl7A6H5dQ8O3hdYyEP + js6rdcbchWnUcT0H/naermP1J/RDjCfp5if09ep+cruWKWzLWdWsqp2VBrkzTF/Dmri60kOKrhux + RytlaWk6mV6StxeVdvae/VD1cCJKZT90oqgnPo1vhK016UZ1nyWuJ6A0CgRWzQ63FuQHfoHpitwa + +U/MegGVfJ22ws56Jtvss+SPDhzPaNR4stpMb9HO6YQBOogFta3rRfYeMrrdktqWS65Q2+JV2n8/ + vL2qobZlrExt+yKKWZL4A2i1m8SlXJAZAojzNSgohUxjJVve5Wh0w6GpQnLcys8p9wzs+ux7Nuez + JhNOBEHLQJURGJqd5XrZuNrfuL0Jx27xp818AvqFugNeIzPGcHfh2WH5zwfVHiPHvn/0+9Xri2Ox + b3/IVtVMlc4qY6qNMJ5nJYeUvvu7Xuwl5cpALkxnOSp7lsIw8be41ZTY3r/tuPZwtquCwCj0eqJb + cNlW+m9/lqgwJv0s+5nz8oW67XgLbk8YE48thib3eT52ib5GftGhRlYcUooMKfYd8F2BJherBgqo + KJ7N0eIrWShcO+UZuD/5CW51/CAsUoZ4Gj0esItc2Sa7m0hRFz/RP3L3SbRtRJkvCInKE3yrZSaP + mUSULrK4BWgT3W5ZusglV0oX8aoAbTr7XE05dJ1q6SJoAW7oDwJGVU14zNSBRPbFWBd1IlfprGaz + 7iyuV7xZNmYnz7nvR9UwRrGNex4D5bjszddeJJdtqfVh0Fx+nYC+4rj/7O3osoGguOHxU/EZMsNP + PkgRaryKaNMiyoraz2bJmaq441sJV3s+uutVueKkpKFPVvmfD4glc8RHi2/y8Ju7OO7hBFGpeSzi + vnb8UulLK/WJscR3m9wgie8Vtf1it3M0+sZFxTXaNrDGb3IqTck38/033j2Dtp3VXTsunV+z9A5L + kzaz/RnF+CooDeLWFfTE0rfB5x2Ott5ZLosHexJZInB9ddiQdEYW5wg9ZZTfpNP1/qzJoSMgV1qV + 1tPtlpArdaX1dFWYQW/OqmaQh9QeJuLKiyDxXDcYBEng+TKvZSPijAVv2KrImgYld4o0yR8/KjjX + cQb71fphqlMV8RxoHhNVFXMfxqlLeyT85sHZBj9g06zB3OJ3Dvld+GolkyKnWOfHZ13WX0MvpbNs + eQptmGYiRDtaImfPSjXvg/t60P9A6Qwf/L5oKw082UXYjvJRu+3jzIorFjccvnECZ29c8WrVSW44 + cJ3GYi5Ef8FK0K5kQ7ONnAS96eowz+AguoED/J6fRdCfL+FwKmuXCrM4XY7uJ+sM3eFZKfXfbTzx + eR0XK794mq9WpvDVZArP4tIUHrBlRsYdn7io4aZ3ZRuUeU5jyQFSRcZBUM5FqDLFqJ6t1kz4zTUY + VJ5WwaWxT443+69ZY5L91/vPWcU93OyUrpWEYU+MNbfx9p459hqTR/EPc3VYrww7he+vUZKxzwss + Pt6nNOedq9EmrMfCICxxmszyMYJRNsjYXv3skEed+4KKmcXZwM92T6GeOEB48GvLOrT5sAPKN/Aw + aGpCu5wDW0k2UcXD/eedBRZDpvDmQ+eEg3C1gJvnj1ijzdMLTLB5fq0ZXYXXKCley1Lpstz1y+wI + 4kWIvMICR3AjCOtD5t6g7dEB75pHyJ1mM9vLe7wsnkfmQFBPd4lHE/s1nVoa+/36+C+Ld/YEEDaF + BHKT8O73/jb8en2pS9qeOSF3FcW9wsIz78TxW20r4hnbfUW+wthYxMUy78oDqF7rYncxkUsKxEPJ + 9SA2mMvVzA16S/5fJAiNo7hDPCd54sJ+xYfObNVW2dt8Ur8QOoVHbKqfQiwUVczIg7YKPlcVDGZL + V01AGW74uKgyLaGd2fc4LBti+SjaOzKRNZsbaUsOE3oS2dBzWyEbwu22yIYouYpsCFdFWdHZmwrg + reeETiU84ILBkrgDsLUDR2DHXMEWMs2GK5zSY/h2U2E+47wXJsboIoebpRHDyxEW6WSpYRVdfvzy + vn8LchF7j+BKyPNxmY4bEG0N9iEzPSZpRLZ14tjxg4rD40zj6ij5IRiGFht9HHHsh5WIAhW24xea + RrEbsybj3nXdkDnOP3v47H2GHbXiJLXQc5SlI1KL+3o3gpX6DW0Zma8izMX63kaVHzb3BQdIXIEN + DBv5/G7rGPRwlhSAh67bE5+BU1/7yrZGGDFiNjTTanMDGXzHHuebGzUV+zdgkX9rlLMt/psQJ6me + IoTfN05nqLPA6p9taqFduyDK+iVZ3Y9PewsThvfAbb5ZDn/Ap/1LZhpsRZmp6w0QxY+hP4bcL9P6 + +S61vIORcnwv5o1Rq/yxEfUPp8vdnqvgUDZH3SnQ0jaP3YhPmT8n89EBAbBEGInVmWfR57UOmUON + dCUoFp6UiqAB/w0+FTNxcHqmc7wJlh+H61b035vVUGzYlGgpb2rXkIMDUlKRofro3z8xv0UciW63 + S6cjyeV0On5VpDNffK5ANPu+V02nC0I/QFadwIsqUaTlTf7zYSpKSPTg4YCjnWkKKxwMFwuMpN9s + OMD46D6bcd+OmhFIuPKQrfvjbIZ645LH4UVa8mLmPl7GxPkQ0SAnc83wKX3ZzgQKD9Sjxhw4OCTj + 0O2ubHpdT3ZqlDfyFAiVWwfK948H6Hjku8mwOpH8onDv3Sad86u46LHqcM0fBbOXyslwVY3/lfIy + d5FZkc5BGcjH5AJe3GdDbI+R4kYDLfqw0tAezjyV2gbKcY9vhqJQ5CDSX0fArax3kv7WQctjshfe + WXTVngkXB9H5tLZbefc9Aq9uUOpJO6n1x0BXnLZhUHDaBieO35bSlj9jz2hLrygR2vKLbfGwC2mc + sdbl5NntGKV/oRP1UHbpPfkf/uvS7AaVO1SVmW74IWjnjVTP2NZlylcYZZniIq2adDlLx5PpFIvq + F1mq4aeYn4T6WvZzfdz7no42mNQqARvRZB1jBceYel0+//fJ2I2NRmA5J+xlRLvr0NaqpBWH/eHF + iFI/9DiNhcZGgOngNxM4mUFJ1dT8x3h3EFF5S0Mh9t10Az2aPcsN5q8YpfkFrAG+59Ln7++mPQgR + NqQqzDeXXtSiCohutzJbhOSS2UJXyWwB+xhR10u4TmCdmEA54asXzHXjIEkG+DORe48ECb2VScTv + HBhyHlkT8BiFu/4dgz+ifc9VQG7UaDiinHNo0M++w9nFS/yWWC2iMdzPMYFYjZChnSuhtBC5jXO2 + XrCoYuTgQFPAieoOcMj0JhUQp6N8s5hylBAKFL47yo/7R6tsvtr0324QciM9Nk0LNypjwOiAtYkb + x4lXgcfhFjhsIVuaVJjmSzF9OIcjTJV5KUPcDxNvG+mX0QZlOpm9x79b1Gjmc61CQ/dFB0ls8629 + Zzg9enzGKxrkKA64MzkKNPdTB2VArNDQ6+tbdj1PlZXGCLTz8eAYyU+yGN6dVlghN3HlnrlH83pi + qZSsMuEsOGBt2n7Ar49l1oVld1E/PCLOph+4FF3tegAeteKXBU5U+DBhBy0Wi+oG9SX71wHLgr59 + /Mhdpdvzbb3+U/c5MHYuFKmdxEI78YMWoJN0u6V2wiVXtBO8StrJHx8uqqCTYZCUlZMh/IcxJx7A + T5eFiTCMRoLtBg0jjE0iMNC6n6VLPDoKyK6b/CdWJr09f706Rn8b3AqtHnHX3USbOcJh9/mlDgHG + ISiVrBMJN3m/qCbKGzE4clCYCoTblB/PwNoKsK64pD0odvAqBFQrZhKzOvitibRvvFtpDfbwVNuw + 7R3QJtu/23xlDSCfD53p2MiVJChYvMYxFGAulKEmitmzQgUwozTvP/KfbHE8KDhMcHp8HsniNsQX + rplnfJYd42rH7KaVKjKlG4p6OW5UonBYGDcPakbiUgcBBZue2d36BOU75vd02sM1pNQd0OAF5Ye7 + xbRthzFmdXI+7hubMfb+EungkUMZilthBLcK8Pyw2kIbdMImTltHqBT1S81+APzAp2/bNt5tNEc3 + Vv4Kcyu1m4a/Ih3CmtmmIWfgcEqcfYDytqtFAXmJ1QHUuGe2jW10Ibg5w4YjzFY7owaWtp2G5gUh + ZesJd9dQtb/9uEn1K5GxGd9JTpjTKjRDj9hGZsQLjMAMXSM1LB1nkYEAyAMsD9MUztJ8Av9J/8wx + +2kzGk3mOQUq8W9ZoZMeLUSU+7i3TcY2EWfQih42hWfiO25CObMsJBce5pxlZtjicDueESvC30Dc + PP+e/w09HV2xSyjt3iHYfSwhODBI+oudyZ0m7bdw5/INNqYEoqKIb9/C8pBs/Mo0ndtN0y54Hx6t + CY+bgwXWMuUvTid3+welI4c2vvNzljDYhNw2UeniIbvNT3uJtv0VV8W2l8E5wVlbBYrRZzhF9DIh + PjbFXWYFkfYOzPZnQUQ7V+AUTNtIW7xXEEltVTbSmj0ye0RPHhs+zgpTsysQutglF0sxhvtmeri0 + CXKfzzS3kWcPStte9o62dpHn2FntYERUtu8uHdc/H55Zu5zkA1ZOJyW95HaS10nj+XT12jMcTywI + PIeVOW0RnRRReeOB63i+K+oSPp2tWNR/XQIiI8fQp9WNV3EM3WzGYBiPvpmZd0mJCLop8667HL56 + lu1S8T76wH8RNwpPTe3fwqoQheN36VxCPZtMCqyx7B+aGMI3FFh3ehqrnrt49cET5QengqP2Uwrj + ujDCUpJtFkxaAqL738nqW75eD8+m0HNw19UDdCGap3Ia6OUo9D1gMMONisqakxXQH8j7Ib6wh3NS + OXKSMO6JL+W645aeqaxBnPTZD/gXjvdGeYhT+A8eG4el2x0WxD8gNJNQvZQCaFWLaqfq2AXlTeRK + pSUMvRMWtNNZxDO2Kot8haGxiIu0BWlHyuI+nfeKQCmswLsiM9cQh8qJ74JychAUeDu93QscyhIV + uu5kzvNkt2Wd2Va3RYopkYVnYAy35UpUT1lD6KvXmBj68jINDT9sRXmTGoXZKBiGKnqNms/V53NV + 0Oj2YPRcnn3lMbdHdT2u4GprLDz6PlH7Uw523Q6K021VSYdXWlkzrW6XE1BY/MAMsO3v6LQES0o9 + iMuEhYlrbFCrzSxvk4rtxwIsrVK0xyWOrGfEr0qJ3cM68Yic7mWfry34T2iHEdIZInVXyvVBJrWU + kgh6z6uvn3/fLeoxYtlyU6ZKndefnLgF8QDdbqXfC8kl7Z6uipLji0+ud1Yhh/PKOW/+q2HIWJIM + QjdIkqdgMuRws6DwISr8g4wk30yh6TXEhV2hUT8r4kIWw/HWk3MlkOi1Xou5Qrfbotd61blCV2mu + XH+8YlX4WhYG5fr0oc+C2HEHPgt5fgJOln9oJ71mZWg2wyydzWAOgN3AXzSgpGJefETxNPR8cMQk + mgzXkxXrHOu2LePfX4ILc1ZTNyKjlJlinZsgU8AKZsX3lJYwGXqwHtNCzRTB+r5AQvf+NtzMJYoG + iFpmd/AoD+WroA++fUWeKB6oF5kkWpK9yVnP26FxOPT4dChQcd2Q4EGo2JyAbHbrOY0wbHGkws3c + VOKvn5hN2C3ur0EVdqhp2p60/ZHrtmFDL+CMWoWSu9FIOtMEQmUxM7A/W9GbqWesLWbxCtNipou0 + 08+yDZYF4b79mnlJEEvsiTdf30F7Pen5l3uJ26Pbhi63mz2fwpH7Kfr7wD7LboxkmNh9756wqF0J + n3jGNlAsX2FEisVF6rsbeGpIp1g1FFL548Vq41bg1uRLsLLPD5hwRwS0BLOfPCQgNi7ae1suoMSl + JUiekCHfGbnq9QPhhNq7G3j4wKf0psoXHuD1lwMcywEOPOfEaTnA4hnbAZavMAZYXKz3LF2//XL2 + 8vrDR7lcdCk4gnFMCyMRmTvr+wkGy2yj8x0SVLbyTMnOT5QPib3x2pMwioesPUjyJaYDSVwtg4+V + XHlbfHyaZHQiJTGvl/W8oCCSEuupcHogKM5zHJKYMMPfX7p+Yl80RbdbWQVCcskqoKt0Vnx+X8UM + x0xx035MXr1I4tgJvEESJ748XD7fIQjw6j7/UcZzuMfaTfjD6Ft9qhaZAPz5Z28MykgEOh4FCbPB + 8+2XmOPeF7VDsecGrlvEZ3Sun+09dAoq6hTBFBYP/dVmIfPEEFZhlW3G+f0D7FhT2Z5xdpuNKAU3 + RS4iRNYH43uGYMpC1131cKSlGu75MSPsz8dNB+W9ww+oaid24aS7eeiP4KjhU+oQhfzfL61xX5lN + SbSPkBUYM+ET8Z2gDWQf3m7pE+GSKz4RvEq735uvVxXiTs/3ogpkX+ImURwNEs+JMesWd783E54k + ANb3WBHT8FI/wRTGAdd/IJAQrN50LJVuTJNXp5s41pAjfjTd8C68ms3YAhbdZoU/MBICv3oLsWXC + 71UWzs62TA7pMa7/rnokv4gFjeg2Lu4zSVjaTgk2RAffNuH0nZ3yek/b8z2cJMp/4SWR8F/Q6qp8 + jbXrohNcm67InYMA5jk+gpSQEjsQeSFb5LR3mbrIQp9iqYdRVEppOE1VX++c4O16zglDLvvd2Zs9 + 90GFCOwGH9wTx21n9tIz1maveIVp9tJF2hPX9yuR/LO+X2acjojjOMlYi27j1t9xjRLM21aMW1CB + xBy3QQfeHtv0WYHnxFMWkddahQOVb+OQN1AWBn3jw3RY96r2pvBh4rdn7gsYk/0lWTpvnicSRqeQ + P6Ag8xmqutGY4fvmY4vPqV82XWRb7/mCZ51LrUkJa6QMOLMMz3kzxwpP8GVGkQ3JZmd7LMqtmVCl + f/vEkhZhO7rdSkUVkksqKl0VdcO/XYdlFdUN8dDXVVTv1TDyEy8aREHgiZjd1cM8XazzG5Q77x99 + H159Obt8e6yCdpyzx7Tbr7KR64LyczUfSR0IfsUrGrstTEIkdeXrGTptiUbbZrqZDd/n07uJjqJA + Ud9v67CisjaRxTehTCcuY6B8lxVW8U31xcCBHzczJjl+5PvlYtwJBsMqn2Hop3HC2sn8nq0mWK5Y + QzofJk64S1jv7+J51WMqEK8GlHiIR/U4fGZ0Du64BVX1G6ePz/kA49MiHsi/fCApe6liTb8d7yGM + rIwmhwLMoq87LVopMgJoAY83xBC/LIhFBJqkQIIUqaqbVQ+nu1S2WRjxEt/DIUgSmVevhlcMS6n8 + WAq3oCeCscM7S8Nr8ywLGcGObG+DbRmpR7uzHgIQY2TpuQwpIwvOV8y/gxvTBrW/I1TK4nAnVBe+ + kaSPBxjyC+o9bFUtn8rlYB1fYDZhtig7Zywmk+9QgVU6xTF4HmCcMaVGffzkOK79uUm3W52bQnLp + 3KSrdG5+/HIRVDzbLi+C1A9O9mroBTgVB17g+RjX4blRPIMXvmj8MKU0XlA+/UEwvJmsFuJvWT8Y + yt+592FF5+2/UlC8htPJt2Krpg163v+ipeSnIybiTANcAQ8c2wMXrUKm3vV6PcMBN2PMCinI1k9B + B55OufeBz9xRjqOHqEnT8RDkwfDCJJK+WH5Sf5wvgqpDXs1rtTGYKTVuU0pNEoSOFyflM1t+0BBr + Aho6s4m+0m8qI4F3BSFzSmdvEQo1qgh4enEBp2qWWzR78/XPUa8YZ7KysYYdkoXIytimxdoAlvWO + xnZFcQyacZnEsm4KqUBlRXwYbmkn/+zef9ia6PENRKkibuj3eMIIcXBXUvyr88Bmyz1IXn0SE2kD + 1UVre5q35ev2fXpEjQk6X+rGqnZ5t7Sffb2Y2JQ/3D4VW1MaPsabGmHcnhPtYRzIPAH/XXzCnHZp + AuIZ2ywB+QojSUBcFDkC6XSBrgxptj70j84/HKsUjc+u+5LrK3fZVG4xVEE2y8c8pqklTV6t71hv + hf9BQjHfD3t7F55ZU5dhfLCQzjeib0h4i6HWrW/Ygvzh+sLLVY9AhC8Bk60eyreWjVQUnN2kSxgl + +CBQRDe2yYh7ZUv8AoRcD472RBsJhJvDpUQ1izYSkC2a9zvXK9aTxe7dsYuVHbD6CWoVpJaLOlTo + +K+TlhmK6hlrdHzxChMdny6Scj5a34oYw/nFO1XMcnTx+eObPvNDFsWue1xiOMXjvExPKoPQuN4a + GFDP4VU9fB9BrbC4HelpNcMg9JKoeLRt3O4vVHaEFILFl+47DjuXyH9R+ncfyZHKL/aDdvhJ8hHr + 7GJ6gZlczK+JmCB+hBoq09ugh/zOri+Ozq8vjvu2D2gvxyTkQPKIekko+27vIHmLaL0d0v3T1IY/ + 09DY4Ty6vnTo8jAN30ds/VYtQmF7v2MHQsjBTrJCFCkkDatjT/U9lup7+I61zCZQz9iq7/IVhvou + LtJJv1ytXbFz1CSi9Wqz0y7hmR4+yNV0x2MCHY0qpltSV9RTXf4VkDSDuFK9Pd/AeNSKqmWtYr5L + d8pMHkqB+tfmjt60AcF9UJIIibkoHrMT7wYhn771+Ib0XCvk021ZNkzkNhD32HbQ1QEvWUHbabd+ + Hrqii/RajJY78V+ncKw1Et3zqhbbK6O1NmU3cnxj6rYFnW45XM+nCL+rkrc4EaULrTIj6HbL0oW6 + zAi6SkfLuz/+HldLF7ygXLowjOMk8sJBnFD4Z0fx+8Bk3Fhtlt8n35GrCTfL7CdsQJsl34x/Y/1v + k+k0w3z+nwoV693D97iDsmaWwOYtvfrPqhz5Ebquh0NZ1Ca48T6wPV3BHyWOokQL3iPaTSsqQe0p + a1o09RqTGE1eFopUNpI2mJ7QIU86E4vmSI7DsXCqgDIROp5z3Ku/X/bXJX9J6RH+Zu49CeNYeEwD + OkcKyOoVUqbf7ZNneRCeDDztCa1wNMGZzOkh6j6xIrbJGb+/xB2J2o7Bz2UkyFREbYN9ThLe+dPJ + HGG/ZUk/JsG1+1LfZV4se34tKjnqQJi2iG5uZxfSmxoeMN/XRcO0QY1SIqCPt8/GBqkBY1G0Veoo + x8ipfSiuvVqIgxvXDO72jU9uXExWE7p+q2pCuN22mhAlV6sJ4aqgYPvHZU01IVLylKsJYZN3okHi + +6Evcy5KaUA6440gJ5ml/4JjBXSxyXSy5j7Z1WaRLam+Y2Akui3RGoRBGfHzhsMM98fLzd0KHuEQ + hf1v2ToHY4j+hNPxlpuS9G9BvPbnspoPUU5XMs7duEQmpp/o+OVRJYWR3ldL76OzgMDsNBlVPl/U + Sy4QJk3BZWnRLmm95zQgPZxZhYYQhB3kBfJewEfKPWW3vG2z135l6tuTJLG5pHMdzlDFJ3nNgGwV + 2MD4lLgEznXJAs9+M6Tb7cC5SHIZnItfFeBcH1+X6SjBeHGTMjTXi8CPQLcaBH7My5R0+8TI3b3P + zAweWISIp347Tb9jxswKtBNYNXBoLeTtxZ/NJxfp+v5HKnG5Lic3VXrJzooKxxwkIedpCT8fanDg + Fw9LhILHWqxxhlcaE8DiuIQj/P7jQNu6fDR7GCsnYMPOhCgNr93m/KfE9VjDfhh4YQh3YNVh+Tt2 + f8apKITjyGj3mTFEYgvdMUQ9nEUKU8wLop5oLldRa57dnyFib6lNClVHNYVx5PB4QzDk/TwMh0cy + 4cYYgOPNEg+i/qHVgo/ywiYKyk7rHLEWkUv7cvamba2O3DcV0mzoRSdO3C56wB+xDh7QC8zYAb9G + e+DZ2Zks3SXKwh6Cew1Xm+ntBtTy6Yar5wpsWtAafrlZeIEun6f6MJ7qw0KXbM2tgir99V/26+cb + jOyiOM2SFnPrsvFlfg3zz+PWCTbyIdsMG/USI8VGXq1HNyr/25CDIfeYeb0CsTIhxMovn5yghTVJ + t1spUEJySYGiq6RA/f3svMLn7buRSVzgh6BAuUg8NAjcJIhFXtFHqdQyNx5+e5MWpUrlQqpTsGIe + lAuTSDOJu7D/Lr1BR6WhkJwIpenv6ahGaTrMz6tJqlXKS8VyjSnbiKvHqjJlWZCg/n63md9NSsTf + XnM2vy600O4EWXUN65gBkuOWgDeL9HXogQDzD2vz1/PpZAH3SHCDUr+GoV+WqquDRosLdVB0wmR+ + n8EGyg1S0+XNmlRBKbCnJlfjpDIU97pXon07w5XIc1pPqdtgzq34pFuUZx3o3mM4o2DlwFtRh5xg + 91OOO+fwTG/xDLsHzWKZr2bkv0J0oR4uIoVekSTEmelQKL2uYdZ+Uux9bsPWjdQWbbEB5gemHj9C + 6urYWhrX+6JqRp7eKW1PUCpxrs6IZ2zTN1TGdUJC5FDuoNgfxPTeB3qIbx6aKBuCw5o5Jo+1sIju + vIazL2kb3KGH7GM74iWl0A5dbU6MMeEzdt1gvAlR8SJPZs8dnqRinen+JPkgzztp45HV9V+RkmGf + 5fqrEjxa5OE+adbH80rYSBS4LjvzWxLIqGes7RPxCtM8oYs1MewiDRaDrSmXrRSpGffJH328ujru + 2dxZQIUW7UDsodAX2EOHRQ1Y4JCbzEAYai/HcwQmVan5sKnl9T2y98QPA8ep2TCND6hGedpsyHb5 + zG1ggw7Pj458rySDp3vMs311MxAZlJvVwei0FPuI2qPHPHLYIjL1ZL7CI7w8F3d14G5fmdyPYvIv + XDq+08K/wG+38y+Q5LJ/gV8l/8I/Lt+zqoPBC+OKgyFMkjBOBhHGqEQG2YeHRU6Ocfi83y/fSbSb + +RJe8KNaRf8cSQi74DkJPNfrtdgEajMXEsmk47JWTDpwuy2TDkquMunAVZoLH84uvEqwzscdusSj + w2IWusGAxa4jp8KVKDUTEZ37bJYNpT0/VkQoQ0GEAh3xIV24i5fe4qW/eBks+ufnZ2fXiuFDFE4N + +mmFMF6zosDuv5vmN5xFXtpDGA/MVosJL1d7ILKVAuL6VBK3rNQiXfFLy8nNZi0Qfm5gTqvSLYPH + 0VDr+FSHr6jyf5rfUqoFM/xXsFc1gB8lIYsR6qGMTtrcG3XQpCHo2DYvUKuhVESLyEQY7ENHYJMD + ijlJq1eY6qUhyjOBVGtE9f7T5lkPF2XBp8QIeZUR3o3FaBlOKAtIp26qQuplWL3+cQpKnsJk7gqI + WykyIWmsW7eTrd1qDen96Jn7fCeqTop6l9jOefIISNy+QzwEby7dqAUPAd1udf4KyaXzl66KZJkv + H1wcclMZc/wykx0oY8xhiRc6AwbKLseRxTP4cnKT86mGhvwHV5Z/lzLSL7+IPxddThkw83t4e+Uw + 64hDbGm0rQHbKHCN0+rjRREh8SPE6y+fJYLCdFoLo+2Gzi5pvT277FSBaiKNAWeKPnt/5cKRlK5h + H96sYM6cQaOW48nwfQ47Poz4CoGAOHl0jwZakT+HMe3qbqjRqhYfZbXOfk1Nvee6lIi9LPWjdeU7 + jnlVQFukmrZCttUYdVA/4TsiDfkTi9qkIfPb7dKQSXI5DZlfpc3k9dc3rKzNuwjhVMlDhmcCPxmw + KPD8pDn17mYzHq4ma0zgwhnBtZzxZDHFFSf4NeDfK8SsAnUKVtEiF7zdRNpH5DIgabVGQHqhwP2Y + IOwURjpuxAPyRtqVXm/GrKpht92UYFdyHVbJO+7MhtyM+2bXmLajG7sN4VTVsrJie/n2qtBOFUO9 + sSvRTEcfVjbk8BTLbI34tDmhu61wB4GeP/2Vo9jj01AlLTPf7YkOwfVkkLuXOtA2NAZSqVxAdgfv + CvnxA06bzf+VUZGO1YZyGL6JkuITPiqXgqVfyzU91bjXNvIkeDE/GvRPa6X5Pn11bkgk41u7/lHy + sTqqgfMdV0VJ3XfxieO1jJKKh6yjpPIlZpRUXKVteby5meSbVU0ak/Y8Fqklji949p6Kx8t3PJkr + lbBWuVJwu22uFEqu5krBVTryvlxdVypvfNerujJhz/WdeACqKvMci2JYAU6Mxvycl94LqPBVOl0L + YrVTNYNWalKBNc8RHnnWs1y1wn77vJqyRZG6IrbcVW0xGRfy+eoTE2fil9W6c9bg7g9Fg3yu6Cgz + 5zwMmhKNGDoZHTfaUWz7XIamh5NP+YMdL+AafUKeECsevq1p6WHAKoK0Pt15kOxRS3zwPiw3BsJB + /nzp+i10YbrdamMQkksbA12VQY7zKut34piObT949SIKIhdU4SiIPRZuj3HMliC/GuN4dtR9XcQ3 + /DiIKXf811dbyVklU3PdILYPl9DtlscNl1w5bvCqIE7jO3LpuHEiVj5uhiyIGRw38PleJFw1b+vI + I/pHby+Ph6IoGnphkS0nsIKXvPq6lFtpWAIczn+4zodvL1HaMkde8kwyF5z2i7ko9HW4Dz73LluT + 1s3dFsUmyTe1UZ6uQWlbDrQix4qc898vPir4f9k0fFJSteFWWl4itcQZpVMr9hpNuQh08/jRTDmz + +ygLYNAXdBg5dlwJktppPL9EQ3sXf91hPKUjsCTzfDIP6IC8ykZesujhSlBnH3q2Dk8x4V1LR57q + iGauCHOEbM2qrtJYuiWz2BNMNuYesPq19RgidthucdIs62nTgjuzB0NRTesESYsAPb/dspqWS65U + 0+JVAS3wW+XEYUngeZUAvQfmt8sGXugwTEHmlWTLb0NRSUZ59QYU/Un/+h4LLqXfj0o11/eT5Vgy + Sh6d8fR6kCO04wv87VjuIRX5SCvZNz5Glo2cfas5FdAFNM9G38ztOvGa2A5M8+UxDCHZGeUyBCNk + EZp6nM7ViUWUbuiXIQl2YGA3EzNwGO2m08ZNgjAJy3W/Zhy1gVjBc5jTeIpJub2rbDm8vl+WekXx + jR7xk2HL5JDdSHPEdErqDeN21/Y+6uE6UDFxN/SITjGM9SXOq1MpM3gni8D2HMV9wcsbc/mZ41SD + 3HofPKo5J3DODd8rX3g7YzXdEQuGlM7btMJaSzNQhVagb82zl4r/70DxnQDXdVCiCfMGHznoYzpE + bkXwGkqnwDQMQpE/5HSNJVsSa0GETbfbsiWxKhE2XRURs7MqcI/LyqWW7NULuOz5zgCsPYZF8ni6 + YrZoKasYu1ZCGfxJ+1w6xFtWIkyMYOKZpGgpat/S6eI+lb4oEQRL6zB40KwQutVqAS9vrmn0HDc2 + Tj89s8r1E+QcLEPygEgkB6CoDtfjsgUs+eaTkCWNyVv6K4rqRmlnpHV5ZR7O+B3yeme8kQ9TrcOz + EUbBxpRCjkdPtZtgs0UsK0zCwm9L+Va4GvTvs+liRf/o306wNpHuwnfMsyXcYTVk6XSa/+DJZTTW + OYdM+w5nJF8D/N4h3TvkqLTQWk6mMHpA8yuF5bJa93AyFsQ7EU8QcKKAbyLpOF2ItYiMgmBa5rMc + ITc2S0pqK9BtyQaU87Ig6Nt9TjzayxprKQOnOMDz6UNrHDwwwuik1r2kRYPb7W4ei8g05LM+U7N0 + S1FnFYiRqpTMvQFO/T10EJfq8xWZ1/AGmVylj8iY3i93ZYThSuUja7PErebKYRK3H+4HiW6Mp7rE + O39o87oiHPIdyv7+cMlYi+gZ3W51/AnJpeOPrtLx9/X1mV/JF0kc07j0HTj+PM+J/IHn+ZyXQI+e + 8YOt2Be/LmdgDtxkt/ky60/WK2O34GSo/LFV/2iznAnt/Pi0j6tV+LUKQxSBYTjELFZ3/6RBO7tf + IEXvanN3B3smpz8mrjQMFSmJfQEEJSB4vmcyaqL2CTplv96k/uOF1b5efmaya7ClelFwGejOdRO3 + STxicyJBX/1hahA7GJ5KP2zMjpEie3/tYezhDFZnJgu4WQgz1qOl+D1d4UOC7ZHQ+NQxIfLG+9PJ + bLJusOeacT557+o2gjEMVgfGYZKaz1QCOdjcTP7fZgJdqyVOl/WvfSGzwiRKyqduZYysWxwJvCx+ + 0smsozZDETGytBarbDPO7x9A25oqik/r84EFqt50n775FeHWLg10L6ZOJOS2NS+x3s949mOu1P26 + zPPDTW++HeMju7Zwm/HdX1g9yCOYoDJNiZ2FJ07UKkmJHrFNURIvMBKU6BppATBMiNk7XGK2oixB + rstVEoIQpcGPfYwse14QqHUv9GSLnAlVcKPyDTvVu50gJDDOgkS33fOJS8UXOqDLFll1eVWMmWlo + wR5ZaEG7JLSgLgctoDHm5uuAjFgYFdhcsdyqoAHlHo8yr9VeD+ntoZw2UWOZ0AJSgiwRGu1rkfd8 + wVYLrsv5vRePXeKTF9t2KBQh4dc3F0PEJ4dN6niPXu11eZyAoKDVV5it7wI/47Fa8HSEW0HUJGqg + rnLfzt30YYRAn6g+bRa2M17uWwQ+/PbScVuAD9PtVhatkFyyaOkqWbQXl79XKiCcODQTdLzo1QvM + wI+CgYtFVWKfe5NN12mfDRcPS3GqBUNeYPnzgcPiLSVM6aAEbwsq21rhD4sTkTYQAWpLxiZ8U7Ws + obWxGUGnwXZQiVzuanSDCzcqRVu1YGYAOrG0Ort/UQGF58JW4Xte1bwt+rGWvD0okbc3NP0AiUVQ + VLax9wiTRDSlh3NXhThhz+mJJgl12Hxgf7zj/UQ+ltmk5IQkR4vhHv6tXUAxtzfrOj3+cN3w0bJf + dk//gi22+a+3BrvFmu44Bsq8/99KKvvxedIWeZoesVX1xQsMTZ+uCa6lxUochb5zxSsrV/lM+8Cr + oNf0B947jU+RYHQYwS9Dzm/JIixhhktoESZeQhhVvK5ZKCpNmRvWepuVtMeFDog8p3DOTB+lGKd4 + iPRFMQBtM+1kjshqhmZqMYqST7yVNNcN3Uj7AgxU2cq1xl10AtesQ86LNNaGSuRmdEGxCWovHIGl + tp6sNyJntrlbW+Dw7f+SrWq3LwmQ/FachHi7LQGSX8dJiFdFHsXluxoCpDKIQfJqmMC5GIeDJEb0 + ZwFhUEYjbIAj5KHm+3zGkYPRhL5+9/Hja5kusbytpkvUisGn4LEabB6MuodN+QdBHAROJWXCtu21 + KrEXNcPo6K9rgNGZwPKZ0KrjU+QCdoqPOrKoibMT+zve1RM983oogQ6o8QMe1eFZfcsskwuX07Ds + /Hy9jXr3D/hhuaJ/nfPkiuvXF/wn7GzLDcoXwklqrj5rNSAdcQi/I9vItA+G+C2Gm8TcyDcrNTt6 + ODEL/qQoFuiwXQDeuFUZ2ue2Fve4rMo4/lvby0XUjKeOU2sB5uOzAvKFPoSrPft1ix/4fg3o0QHj + 5geJT8aPBZ9yi/PDEWSONjuOVUceWokdRo3N2ed0JOyp1rud1ad6ArFSV9Oq+8ZjZ3L+VYiMW6Eq + tUk3Cty4KtYGdPwJUHx9FpCRdH7O4hOnFXi5fMTOSFIv0IwkeY3UlXu9OFRGvFCPy5aY2p5tvoHI + XLgsBCKvkop8IywRIOUuwSUI7J90UmNd2Ns6FsJ2hfR92mqLGAWnLk1n6R3G9CezTa0B88QIFM+H + GagNrO9zYhma5/Ohxa58OKx5Ry6wHQl3Vp/TWdIeC0XOOmO+va1Ft1vmrHPJlZx1vCpCHL9fVgDj + XAdHy8xZHzI/Yb4zgB9JLPw6F5s15eiY6MaLfAmn2tH3fLqGxa4pmekcxwE+cT7PpscDHQLtIl9i + hthmDSOwNotaS4jOqgAWFHYYJeRMfehXblP0LWt5i4ia5MsqQl3p0c1aB2c2Ayl+M10Qgz2CVYrJ + 9oMsbiCur3bpBCnYCPIIxkF0bQPvo+fEpZjJQItyGB+gjESeoFfHfovlucxCXO+vNEl6uBpUAqAX + dUGQyzuKP5LvXR9sK2NbgmFMta/UvY+IT9+QktYFFD0ryaguVsvW7CPp+RAONdMFeVQAIRfVHV84 + xoLam4bjINGNTEI+i6QqHobeCfPb6eLiGVtlXL7C0MbFRTrRCs2bEq6U1n19eUHlztoHGzJRFw+Y + b0uOYavuBYETF8TQh/BLHFD97rqxlvJRS2V+QGKMnAlUv/fbJ4dF9roQ3W6lCwnJJV2Irgr4+vOr + av1e7Jl+Z997NfQdP/a8gQ8jjY4wjvKT/Uxn2VIACGt+DcrwgQ0oHxGkA/79PkNwVsxc7+tlzNP0 + 7g5V4xV2Ld2pAvo6IjjcM82GdJeQSCYVf4Hk4AQJY5OPc5KtTg1kWOmC0J5fFY1DCRUBErd+tKq6 + yKmMzeyAVzAUMz0fzITcDEydpIDYjd0gCqsqkNF79Y5w0M4blTSfuaycyVHq9Wyaz+9q6h/cqAlb + WDa19x8zCXq4VJSiFDhOT/QQrv/m/tQ3hyrY+d5eByv/wA4XZ8CPN6sJbKvyHGKme55LZSeliWIN + i9xdJv/Bprvv0KfALNL0/PqF3FKyF/OPPFROB8X1h3oEpKCIkaZP47aCcRuuEf2J0kIPyDTxGGm9 + 5igEfxt6f7MdC32OyVM7kfkmQXTGnBPmtgM5VU/ZZp0UrzEST9RlOslhYxF19eMJH5J8id2R9ccZ + /ycopChw2x/7X0FGDwURGWTMhJ/V4QP9N1hQ8/x7/jdMdQJdZsyT39JOcr3hJWQPaKKNddzFC6iG + 5PNFF+I6SttjSRyEpe9u0aX2OnVXeXy/2B7umJrtEHys7jIUxVTaujT3lx3XyJZVpG1L1vcUtn0I + OskuFJuz60hIFK8FIwndbguJ4lUZSegqbcTnr+sgUUqMYAiJ4mJ7g4EbJbG/Azh1MgX5VeDUw1Ah + ny9J3LnySQgYqmy1JqtinM/AFBgKk4AjjZTqrzF35S6DThQJT29nC9dfvHy7/O4GPHV8lC7v8n72 + c7Km6USgkKew3qYZ/1oQDtOtgo7sD4++DI+uhndTdO/ew50P03SUrR+mxzyf5pjndsO1JTyIkznr + H72/Ovv9uHf99k1hOXgOI4cJpfUiHGUukBjbQCE2+z1910+I2UOLRI6Xmxr9rh4i61BUxGfiGuwm + 9bmjsJerKhI9duaeOFE7nVE+ZKsyqpcYGqO8Kqp13p69gf996N/kP5Uq3DN15UtdS35zs2COUW44 + xiuoK3osiQRxOJXiLw8hgfBdlwr/VDqnBu63tw7UTuqz4oXYMwt692NWlYhd2tWdUZBHxF50eYiJ + Lg3gpgnfQenjszHXndihDDvzew9sV3dOgDCmqvGqoAGhSN71eZbWBEMweBNMw9UAz3OJVLlZ6WpB + cVPLjVoxmARx0pLuXD1jbdmLV5h2PV2kTVoAm1NXqUNQ34Ph00GTECiyRcZUIRxN+cBRYRo+XEXN + 7RMFbLYnmTwOF/gT6DG2rNW+6ynW6rAda3Voz1od1rJWh7Ky9+21n1TQqnyvDNYYvnoROdDmaBA5 + MUt8E63KSEHgsAzfJ2a+CWeyDmtYHtqjQoWJEyTVBJPiQCtJcvaS1IaoUZfzrEwmnQoNDzGYLPcP + U71g/ejzNfw4lv50wpqGf8BxQtsLN5eul7OE0IjhN4bxrlUhWbriicFl/f/cBZld9DIeRLnaLHyw + s46yy3fsuC/gpxCFAaerfB7/OIT/eMP31xc1ltcSdTIwTUbcdvnzYZaPeED6M2MqVyXw3ARjvLHQ + OAmW7mFK9tkMHWmyWbZOKs8RtZZaDzY8XWs5/ZU0w6eGWfJjSoHnXXt0t0kRZXj4xR0eD6tTtZ1b + qqvk8lAXsm+j5H7vkxrx+jyOo5Y8aOoZOzWieIWmRqiLwq/09uwaA4wZLNajj1dXx/2ji88f38CG + lkSOFzvHvS/5yF0M4b/eQi1TufLxqqFzzOECr0F1Paed2fc4xtp/TcCmDS0k32rd6B6gzASiXpJ5 + bpt6Sbzdsl6SS67US+JVocx8eF2tlwxKPEJYLxnBoZu4gygI/UDCMc3XE47dgAub52kqCgctJ2Gc + ifo4Wdqk8ge+I+ThLXKgpXOZY3t/U00N2RqmKOXYNsE2MxfUeLBVu0myTdwggf54LPVFRyFGDYKO + ZHHBxAkp5eV+vhjoVNOgd0dOWE5a0QeAa54pz7nQBTPPaWSNdePY9fygwhoL8u8nN5O1Vvd8xMdz + CP91F8dgf/bZidv//CbtI8TPcHWfLvgc4QNan4U7wnuWHM0TFSSRbotQJvPsBxhqOsi5hAI9Leac + qGaum3EmC4T5+lV2t8wo8aSHK0QVbsL23CPFsZwGymvF7jNY3lzd2qnoyA0Je5qczLWDYi0HlmWk + n7u3+bT+8K7DBQxiQmKZ84+uFCNuRcVuoIf468U3G/J9n1GktAsmITcknA/k9nHacQk59lxCTi2X + kCO5hD58qFTpg4EcswqXkBsEnucN4EfoCwP6d1ED/iPXkE/uwczBTeKDrwECr7KMKMTgde4x5r8t + M3WnaX/fw/enuHPB6MO4wMaC+y6/TPqN3NApiw7Ung0aaQjzn01zyttbTaawV3LS6y9FTTgF2sy9 + Bi5I9xooTflMhJ/uloXx/+G+BkZAskyLBB9sl2HORnHccPy5bhTArl2XESknUSkPsomywZCkjpRq + B74cT1aqM00AAK/pkJayex/UcA7MUaulrmszevm22bNt6jzyoMMSflYfzR7/o3u0C+CXQycXlEq8 + cP9lX7B/JhHBj3kEml/z2dAZ+lx7aQUP4GlGBHWXLqBFsqUfUU2k2oG84W9R0t7pAYs3LLWo3aGH + q18JMDcJqy45NAs28dX4tGl+z+mkxLNegsVXd3GkRtJHwbz37IR5rXwU4hlbH4V8heGjEBfpcF3f + 3gii10YQiA+ahk7ui8DDLM/jnsUj0ptxje+pPA8XeUFLlJBHw4koUlIEPYfZz9FkRalzmKk9oPLu + DRe+mf9oGoEnLEHvBpflsYFU6qA1dgKpGDgq+3Zw5yX6oO6522eJnIveAX6Xrra6iI/sfT7NS0vj + gCbtgewYkeVYHeKdWChtzBWX2N/Ru4dNP/httkVdLhV1vfnE/BYYvnS7lZkiJJfMFLoqMhDPrytx + PkRBMM2U8NULlsD/RYjhG8QiebzkHCnw56RHAw6bcxhOQWTF549RsXw9WiAxiaH0oaRC77kVtJCo + 963hdVPU4uDf3yffc2FGwBtqaGVUC/RA//Wwtsoq9txGlxrsAzHblwRVkxRHcEg4Ua0gxXdptipo + wkczZBWWTuFHakBAC5pQyQyBhcGzB4eqEzmsiaau/i1lZ45JqhPs6s+yh+6pJ2EPF5BU7F1PcHPb + Oqq2n37NUnYrfTgOcrNt5FPdKcb33VARoxXUixTzekzmlvZ4MRZ6MKxz0t+37w1WevEeQm1aSAUe + xqBtfbLTnLuu8LsOTD8LmBPzPt3MccoXXu9HFNfcw/KoTqQB5LJz74SxVgaQeMbWAJKvMAwgcZGO + 3q+v/084I3rFr+rDvt789I0g7AYuYBAWlk5AQdhuiKusckJ/TQj0KZMWivXbBjxKzCzPUaZ15MAI + O+1Ma3rG2rQWrzBNa7pICuHDYi3m2Hte1tyjH/0/4HoP/0imb2yN5bADuYVcQibws6rTqJVaUxp9 + YIGEtQmDfPP4OAEsi55Rb1hN7tBJyF9UVzBXbfhh8nZbNoHjSfqBLR26y26laBV16wH5jdZLu35p + xrwV9SmaXbRqPxxwmr68RekvCJd1l2+f0Kn93sAyaEk/EBB3z/uGk786/3c9sTMF21O1Mgw+4QRT + l9vQs9Ez1vxs4hUmQRtdpC2zDvylBw2HkZnLIobyXNFxYsr8XPKNHLc/dLrYchkmifApQ81KZzhp + Zvk81+bQs4Lm6SA9GxdqJM4ZVSe2c9HafmpnVWguC4yR3YoctH2QQwKu3TnIjwRX5KnSCOb7bUn1 + 6BHrVUkvMBclv0ZrkkMA38LOkinFoteMtaGL5KsOLPruAWQ9j2gPVaRvmc3yMTThkKAAohUbDgOl + 3DfE6A7W3ms29CfX9eGraZ+p7cwDEhg7PV07rGY7HHCmozozH6xi04aUE286ueuoJu6ZuCSc2KHY + rxnNOtulLFl/pz1e+SOIfJKqva7QyT2qjvr9krktUrvodquYiZBcipnQVTKRz968rYAC+xGiOOm1 + UdGrIZzCcRQNgjAJMKJigAKrGID0XBPCJiglML7y2moBXTTNMBoFW08+fjjtz2DfhFNOT0ERQGX3 + +SzLV+sUXfII5rqZwo6FtfxaiYwou8qX8DWjLsqudFwITVL5YyofUop1uGYZlZbf68MOwMKkHOzQ + pn6J16c5ogJTofSWgcaMaL6piIJUO1cT6uGOXMH51TKJ64VW4BY0kRyTwUZk72x56y2wS2Hdk1N/ + uFpkI+Sz74/z0TdcW5JWphLeEI/BlTFMDp4DJQP48NezNxdDXvggE3ykHP7O0/4iXYL+PVnwOi70 + POZi8xln37NpvpgRVvGY0qOyOZ98GEjpz/PljPPILKb4yZKCXvDvniq7ckWVY+fzWbTonb37qBKU + gzDg6VKOS25d5TUCUbANIjcsIT7bpCWpzZI5RDu7epjx3UExCvSNslpbgTBApDpQ5GiULwWHQboe + 3e8QWWNhW7lRt1nmu55t6pdf5ki19Ksc5JRp/GhBz2bMrHk2+rb9/cqhSxRhny4Za4ErRLdbnVBC + cumEoqt0Ql1dfqmcUB7zzai+77964cVB4AUD0AiZpAi72iw4KzbsE1hXME/ZkPGuogHiB8jVcl7F + iX97dX553f9Yz/YVs+aylQTdT17lDEFzv5IAHERhEyQqg22ReX4lA7jTkhXQcguTOV3eZetK0Dpk + 5bqSQWMrK8K/p6MN7qWNwl3PRnjvvKxe8NEZfixC4D/uJ7AVTVaGKlEXD1rh5oWYCrdFIi3sMTkX + KwcJa3+3zJtavQXzbLKf3BnEF5PYnXo4e+Vu7zMn6Yle1Q2Bonu2+loaS0lCwgSpFUdj0EbaoS65 + A930UsX2WFiyyGyiet8nKR9KrjDysAlteqilybGHc+v+R2qq/IX13xMrHP9c3gWstmzrh7eG4g9O + Kwhj6Wasz+6te3tXRSueYl0KAufEaQUUqp6xhXqXrzCg3sVFOkFGP24DRRk5lB8k/Wc11/rn8EQP + H8MAYZxEFCCEnd1I2Z7hol9hHRg8O+Bzj/+rJh+8Js7nJXyEZ4cgRjmxF/PVqrekjZf2F4SzQ3I+ + NvXUltdaPPgEwaXnBObUyWINFUTbeXTCgSZaALTxR6zh2egFJjgbv0YLdZ6PRLx+NhnBJ2F+WqZj + qcvvFGnszHEiP46Oe+efPl6wyCnBAfWvJwuGRfuMY7U5vljGLiFCae/Ynlpmd3BGjMIUGRa9Tier + e243ovPCNBt5taiyMbdvEnAW+/r4tja2hCAw7elULzWupjVWtFjQl3Q+patRjqd7hrb4rF2PeV5A + qATKNtFdCWDHt0YV9sOI/Of60Irs59Ym6lPmzxQPUaa+3v7uHtyeWebGylDkNj6oLHJ+rCcLq2ag + kFAJ2flUV2iVfpjEhkJ9j/Xk+XiiDXuzo3eL4ICJZWPMp+lmNczm41Ypd15E2fGXThzYe3rpdrvs + eJJczo7nV4Wn910Vn9dxE6ecHT8Mme/G7iBk8IsvyXLy5Rhjb9mqVCFDdBeiigCGNlvgL5TtMyVA + OrSPZMoPPDHLl4t7lW893ohk5vm/Nne6WX52u6xW1MK+led8YhnWbtLo1I1i10v8Cv12qaG66leb + bx44ZvJ2yVRNAsdPWJlQzeyo9yqiNMqxdmpcNEL+QWuMMFEMUjc3at+GurSrmi7n7km1Dd9ueCGP + WascODV+3LoG9M70KQGbPhYw8Qpu8bmKG3agAAzgzBZXUdWoPqJ65tR0/goHLA+V8iH8l3CWHvGZ + clycSqUHrxYpgnjlkjW8/3nxjfELxRQT/UTCq87c8Yi56M29VN5c10/cnugsvh3JD9EdEAcMSBsv + qRMVye4WS87at+xSxLaDub3zndiVzHdoA66MMGcL2H28OIFo7+4Fv7NBci+PZZKr9y5slw8iH7FN + cRUvMDJc6Rrt6aCoGgmuks5Zt28b/9K/hKd7KIJjWoFaTOpx4rgNM8d6mjgJVZHepEv4Luh16PzN + bA8dEbVqrh8cnD/qJC7FbInubchfwr/xB+arbgPEatJf0RjkSjDFRQ42IdCvXUNbf3mf705ltMsB + EcGA0rBYmt/EI2JmN7e1/ffKlu2QUXkPpXwfpdZJ+BPm0juAjJ7RLlieCTtkPnF6RWdZEbw85Y+3 + l4xF9jEnut1KVxaSS7oyXaV99fLik+u9rmjLSWjmRXjRqxdeEkZhMPCSKPQTEzO2khYxRc98/yh0 + ro4lFB+OB1X9DTSwD9BDLhdT1zsjSNL7dKWPGvz1LbQ9n076n5jP71im6z40WZOqwhukTnNxN7VZ + ElRiSG2rtAphRuarTf8tp6dPj0u5Dn5TtWkSIOSab5/qoKAJzTpPL7B5QaUCU9EIVSDYfFZpcu9Z + DViPJp8CWEkYBY18ChrxE7AJqWRHDWathN2FkwcSa3RxcBzsjPH5BqcmWavHXTek1P7dq8WmPz0n + oFMIHyd/9EKbgLWxomYsloiOdIuF1a7L2gne6QDxHeEA8RLWxgGCt1s6QLjkigMEr9Km/vX1WSWR + wAmSpOIAYS7MNz8cIAilI10gTRRF4yW84THTz1pjdT9beqOeMpSjJOn9Z5RTdhVS9YvioOh93LoK + gZ6xLkMQrzDrEOgirQZNtVzcp/Pe9dn12RAJdSQYgXD/HF1fvjuulgIJ+ViU4LtMQimH6nQq4Emw + WyxBcR4hfCKwbgjhkpcyIpRbK3LYR5nhLcooEn74Xi1vhu0+oDsqKZ+QlXYh0ajmHV6x4/OKnT8u + PjlOC4Jxut3qsBGSS4cNXaXD5vrdeVw+bAK3zIYXvxrCEnAwr9r3Yl9g0VzXIfSg17LShR/FKXR9 + O4orR1AjNtjH8/q8NuY2IZQwB1vnVNLRahq0HV7IVO6dxOp96uzZjp11AQb9R31zMGEs4ybEGPWy + nsAqXU0UatqKO2B2faXeEvpghddG/X1MWcYoTAzAdbp5LaEOOFQyrq1V/3X+83XxAZgBvFLUFmg2 + 5Jzgj3uqTvvTyfwb/OsmW//IsjmJ5AwW6eZMyIa77jezlOd847mNOXLUgmHi9HCSqlTkxI1pH/5L + gKnFfrWRO8HUzINjFxKJW4PXVr+KbLT+PdWWjvAWI2KhaL1erVR7T4E+JOfuiRO3A32gZ6xBH8Qr + TNAHuijgRPyvYf9n/2sALZ8MV/PLLxfFctQUka/+y+YbpT13sVx4sck7hVc4/ogfeIemhbUttfxv + yli7zK9D/L6dmenKPRqQE2LrxGs/O2Sqvu9LpScIWyk9cLut0oOSq0oPXBWp+l+rKQaB67CK0oP4 + o24wgB+c32Obfb2Ygvwa+1o4koprtWZo7EVunTn7PO3iIImITvSXYnHI+c9c8nql89E9ElTvgwQg + 52agrNfAjU6cdkmG4hlr61W8wrRe6SLN09XtWkDu6in8O3B7egQaU+SzyzuuUJp+RKB4HlINGftl + yEItj5Y4IfAS+sa8SBzvQPrzhO6xFbjDm0R5d6rUpS1fBZViUxvSBRgJ6do+MGr58CNuEp3AhchN + IpQHWBzbx/3odtsDDCVXDzC4KuJ+nz5XDzAWJuUD7IUXsyR0Bh7oFXG5GhpeOu2n01F+D5rGOOPF + 5mCxQRNOywbLSsZxyX2FIwiHSA6DWKeWr/p/LGeMIkx/LJf42zQH5Y0nC3Gb0ChJ2lY0DadqHNdw + VXZ1qmIfDGv7oNYXwGLfRIj9eKWZ50HkumE50pdOudhMoXeWXO2hE7NdEouTN3R4aVYQwPDitEUe + e5rnMHdbpZv0OnScEYkZtiWnZhwAWeDGlNZTxCwPckdH6kAPkXAvaneg0zPWB7p4hXmg00WZnzpf + ZUuc95Tdo5KfGv+gy0U3tAQBjJgoDsgmeT073k9eGYg9K+q85X6889Fu8+Ar7bDMWq8r8/VjDbcx + PHHaIYKKZ1rgNvJXlHEb8aKgRMhSEXVbLUf9o6sP3rF0YD1IqFBMxMlw+xP53TfwialWG3gNMnoo + iGM8hr4rhvfQIo1dpfcd1WskQV29RqWdNalnrVuNEAxcE5IpguSuu5lwSdQVd8v8BxwyO0Xu7yF4 + ynIJDzRS3r0wSRj/QJ7Q3yawc1i9RFdnhOeEkV8jZNC/WU7G9Yx023Z1DRiYtc1spUfsYYFZJbOV + rpV39IxnHuXrAsaip9xWkmTitS4TfXOhF4qo4iEus6eZzXITDihF4rdPLGrhwKHbrfRfIbmk/9JV + 2ng/XVUZFNwQs/p0/dd7NWQsCJxgwFiUJCID2civRyLqXGBEZstZhopLYfXxLsD8KmVucrh7XDqr + zRIGNTsxNFlZGzAG62605JzZL6H/HkZTUcs/n6y5fqndKV+7OhE676dVDbeCQNaFBZyuTSwc5jax + qie+k8SuW1Z5K8Zt1hD3ioMwsBGtVF3VS41wm6bmG5cwd3bJ3+VWMIXHYSvhW8Vxz0ArcVugkHW5 + IUvcHXJV1t8ihz0ByRH0KZfi5fWQup5mXb58kMULpWoSzvWu2qHNx2ExH+tWxPt0AUbc7tXQw3Up + TRWM6XfjVKLMeq1hT+6fqts7cfoarqjmWW8jr43z6cDHtztKGGVitMHyLqkMfFPSZNCutVPRwP2m + 9gu2oqPWkLsHTHGRsoTZu2jodksuUi65wkWKV4vUbHZWYSMNw7jMRvoidELXjQahEzlJdFhq9jxL + l7hDlBN+2eumhF9K8GXVBF8tIZul/03I7jQhu9NhgiXReTsa88Mb29GTEx6aw38tMsM97rOX1Jsh + /O8XJYr/N837v2ne4oigzLsPnxzHtz8g6HarA0JILh0QdJUOiM+XFxUbhkVxyYZxXr1IEpf5Ayby + N/B0+GzQhle3BIlkyhku1Fzg2/nn5aJqXZRY6vlj1clUgoRr0t0Zc6M4kvCbnb5F38V9P/DCuONj + ovEzHuUgqv+E9WUDezayFjdECgxR+59pjZ9/2DFZamRvn+nbw+VS1BolYSdHiId4O+SZ05vUJM9E + X+voJElK76/7hoZMf5tHd8Gv1Xx+09Js4/E78IxjEg/Uui1bh/nf8IhrMRIdlHUEnjCp3n0CBc7e + 60e3W52YQnLpxKSrIm3ry++ecWIy38OIbKkyKn41ZGiDwpGZhKVSV+hEGSiWO269Fnw1zxFtVYte + cdTO8WaE+0B2i1BSuEmBcbz5CcO5up/cEvoyp7rn2dKgfdysMhEBWd9P0IMhwVznuff8c8UWD8vJ + OP85mTdGr+OQ+Q1nEkPSg8CrcI+2l6n5xKIEDqay7Sa7tvFQSlzXBLDVkL3B8mZ+yApbrs0U8R5n + imgW3S+fsD1YdS6Zb7D8lHMv5tEGadMFoCwQxaFPrM7TzRofLsa4LWepilSGlOhQM222iKw7L0FS + UJKkJsx67/bh1OIqSHkObhVZCUd2l4wR+YW39ZbS51tmYsgt31epE9778AR281apE/SMdeqEeIWZ + OkEXmymF/rwdfv7jy5s+DxIfmZ+GjLDZz/WxIR4zKGI37B1Q1Pkr6CoDhVMbJ0G7JBb5iC1KrXiB + AVJL1+gMTqcLJnIejKSBCtkENGTs6oBS4obRfTb6tshh6mreKomT6XswPNFxj7+FJ0T4CWUaRw4h + 9eiAm9joce0iq2F9dPykCIM/jNriDoKAMJKqcn3CzfanE18+jTuD1gzZMYr7Wuuhl5Y4l4+eLxI6 + fJdL1+t0pDA5Zcu1MVnhUfQN9lZuTyxt0xwYWVJqUUEP6bkSe6EUBTIvvNLBNl6xgHkOUxNmPEF9 + 1D63Ds/EiIqhYB+C+Y8TlZNlkf7etocOkHYY0NGOvYyFegcXRDN2W+mjpdLsoOnzKliZZfLvHRkx + PlHf/gIsZLUgq9thK5zPIBY5HKAxtMnhwNstczi45EoOB14VOJ/XF1ElhyNGpLJSDocPu5sTD+BH + 6LmSL4O8AGPlK1rzzR5+TL9x8E7DofGOvXM4ERlXzaB9GhNDSs7zQT/7nk85Hw/sjbgLF4k98z/h + W5WnwIioK6GEyEaIoOtFVLHtcLRpJ6eYJg6U2SLjE7YFzxw3ai4Rxqq5IKz4Xh/x9RxeUzP7Ys9l + QVQ2SWVmdXMTlJo66C/FkkHIzAwm5rxkIvph4pUpOXa8X3OqCOu4PsMbNv6kbCsabB+6eGWBmtNA + gktSpzdllCSlBJUt3Vhxv8q5qI400wUbMosv6D3PRYQ8oZEyM/1EgEqFRnJD5futNZkwCjRawoPN + v8OTWxiVpeT7Z2zgTJKfZDEJn1Z4wziA3ERBYe/RvJ7YiKrO65Y7nfXEgbeF7d9WUP/wLtNyQd8d + 5cetvfW/OFhQFyuZzOfZtnKyHSKDGpG2nWr16QcWjvmBG3rFRH3kke7xRK6Ia5fyxCz2hpa80dvT + vAQ590461ZouPRhAU8mBY7z+U/dREHYuZan7quxxz3nDnBMnacP7oz1ljY6sXmMCJMvLAk3ntfvm + gsmykQ9/P3Pdl3DtJV40+UJKQjGP3I0d4dTqgLe9nYgdCzxOmmX9knrxLktBQ6amku+2htjmj1hP + InqBOYP4NUEetbwRxtHry/NrOY006nSFpn32JpFVSoP+5f0i6eGzfBrBoUxQIQ4dduJx5KzmPWi6 + piwPTqdAhRmns/Qu21MMcWe8Zy+vaI+YyAqgGqdaK2PaEfxG62yaz8BaNZxm9pqlBVv9dl0wIX1G + r6rTOm21nsxg1bT3PB7o+IxZQERSggOhhJZUniJtPGSJo5xPWMClyOQrMuyBs38Z+vfeqEmdMMt0 + WzUbUnbcl09uFP3v8MzaPyQfsPIQKeklH5G8Ttva+dk7nkyu+Yk8z/fiuARx7YevXjAWhlE0gB+8 + ZAD3wo+8P24nFBPQa1GX+e1EEb/MYCz7yOMMI4SNfpD15/MpNObHsCb/+bnF6jvAdXHjOID9Xx1u + now6MbAeTpjfKuwknrGNO8lXGIEncVGQri0WzBF8uSKHJ1/CEaf93v/C7+nRrTx+5AikmtB3yHxr + IECtro8tpCXPhHs0YA4Fn/lH7SkkDBynZss0mmZT0vK8gLgok0qeLNmcE6RbEziSnSufXtTGVVoc + STbiuocFY0lodIId4ota/Cr677pvmXvC2oX/5UO28X/1EiMBQF4VWc8PN8IQ6t1PVmskXhpnMGPX + D1PdKaDqT0pgvuoViHgUkaLLwiDinVQRWK/L2LGXMBbXytzmubCHAxLUgVu0pb21m2rYvNXitcaA + tP7Y/REl5TQOlIHmfohPHNbS1BcPWRtp8iWmmSau0jS+1wHkLPA/Xl+47ofohDlk6Ttxckj6yj7p + J6FkXr2Iz7yW7hL1jOVOoF6hbwTyIikCi1SSSclDanGfr+B/HHZGsbY9qNRx87a04bb+BcjtoXDB + wuoKxYE4Z6QQrQx1nIkXL/ffMJSZ1hV/FEJy8PN8ZyrIfmActMMFid4nesdyk9g962Cne4IJ7hwY + zGdJTE9vnWKGd3V7Po9ccZEiJvdh64haEpPTM9bE5OIVJjE5XaQVd3e/FivuPvuZr0wHtMjdciIv + iIPouFdzy3t8vnwfCuW05ZHndoI+GAtFa5Qub3J0KUOf7q+iR+Q2meVz2enIxW2I251EFDh0WHeg + RQt/ve60rEHd3Nmk5+A8xc9xWWCM9d6RDCfwAkLd3dyly1cqlLB6mB0WIQkYzQB9Pu+MwOzsf9eN + E9HcG9j94I9D9DtMbqENnQV55C6i0LKC8B2ovu3QssQztqqPfIWh+YiLtIuABGG+o/cZ1B1Mwf59 + SMqxlq/c2/FnlMNVodiP+cYRh3TiaUdzF5ndTixg0tb3cNk+X9z6gNv7DTvaTZF1rRctMuatLJun + TX5GV5VP2f/bZ0QX1IIHv2n70eTTdpeOuhDHQp/xk667FnZYNxAmynMQvI7b1g2IZ6z9BuIVptuA + LtJewz8I+gkai1tx3xvicjP7THcVtL1fbwXHUg7EpsQCFSM/oADG991Q0dxyz5yh3myXXq5XfY4k + Vp07vnY/ZLXXxSyM5eb8XFaYnBNh4BecHzvm6uEsRZEjo0GJY4+VQLfbRoJQcjUOBFcFmM67c6+c + K+w7XlIJAcWhy8JBHLmegEqAJylBUXchKVt+PpYJMJzbhrOmp3i3hODjPacxG70xiElW/XE2Xadc + TrZYTaY5yZzm6XiFMqYTHAWeycLjr9IXCxb1BJXUo4vzL2fHfXgMBQvAndtRtTS0HGUVTaonSArC + RnCGKAyYF3sHk/exhPluFJaDWeVsIgPqDCyYBnGx57hxUIFawI8eTdPZgndoE0ydF8ZJUzPd0PGj + pJxFC0PApwHq3zhyBTqrkUbrRo3gCJ6PmE0lsbMJWGPr0b2M/pvCzKxiI2cb8w8qgESIhJ0VQXFE + /cTcy1IjI2yG3kgtzxcGOol9r0j0zW/BmAGh+QLGPIUpDJvLZd2kOrp8Nzw/NvJ72y0fY9REdrH9 + cth78fVwn1AkFa7nc7cCTALpQ26fqCAPlVCwsjfPHauzCecBP1VKc8XGdOykhs0lJ2PT3KrIq8sS + +GVRPcrE3LkXWrZlX2nbyUg8Sni7TMcs6sN8HE4n39plrIIMSow5X9+y2ELGNuBdkMXdDW+nd2xP + UeTxJdZLCrav0RW2J8PX4RxhIfVw8+lgNf57iHn8sq4gcLXqhH0c0ofk9bKIUTUCjfIKRnkIapvu + 097PJIxUmiQLPwQnjtcuCicfsgZuly8xkdvFVdIoNzepSJfc3Ez+32aCgVSJKw6dTuUqvauvn3/v + v2W0aMSf86UsZnm3uXF7txueO+klSSgzTUID6nqWj9G7R6O0Z5VJQOOimqrVVauSmPRAoIVu7FUW + Jq6xDlabWd4YHmugsv21ZLQeCygQwUe/Mins2BS73TRj2hZwjKcP2GH7blIHVq4euDthiIac3xzV + SemRlS7eu6iBMmink7sDDPUk8eMtw9+BQU3plb9dwstaFN/y2+2Kb0lyufiWX6Xt7+8XVxUCITDB + vGrxre+4ARv4vuvJnEodflrxSanlLgo3UDme50uE7DKq98EYMBPNZLxjdYoyblKs5jOqA+UNQ/mK + Jdgwcy6M418jbLUAYcaVmS7XpDNzY/rvixWrwh3KEMutPH5Ns9dtMntjF+aG65Tt1PfNVq/jJRVp + epmnIbEo8wQb7eeE1/YbnYedejPJOYVSCeIoqgKUDz6+/zgwoI4iJ/KcBkg/ASFedK5ebxs4QVO9 + LSzpxIsaClWHan6ssT50XYY0DEO3UW5tzxTyalHfoRfKtclleb03D3MMFNGZLobOmHDqHWIun0qE + JA11vUpnog/UQJuUw6JHETIDx1R0zmqgUunRqC7GvBjiHq5TVQwbOVQMG7qefsIWXbvOReNblC1E + Mhe1Yc5Znb3Y73hnzfC0aMih1u1OSqStaTOOx5/eMbRWOoz00+Ky0UfK2Ll20uE14pociEyCGxz1 + U3kbtNOz2lE3tXhsV/UpI8+JXiqab9Zbq0/rW0ImqDbj7Z7bG3qkW2VQUDnO8nJqURshCc2B8tFl + ZzrbPrxLmwyElP1yOyNen/DH50vmtcBwptut1CghuaRG0VURl3h7zon4TEXKq6A4B69eBHDViwaB + FweBY4JSGqcPX9XfJ+nNZMr7lOpQZkt4aQ0PolpMJmyy1+RpNx33mqT6Ak1TatwI+eyHiRMkrD6s + oOeel+ILjeDLhsDui2Umy5yKje9h9edgtFVgjOPIDCqYqlTCYqzt0YgZfdieeuJBuTlz/bb2VS0O + ETgXnaC08e08kxrozg4pith31z+0HPk5JKzJDUcyl7OkxYZDt1sSv3LJFeJXvEobzps351XiV+7V + LxG/YoVDFA5YzJjE66svwBW6yQBJXXmIKO1jFMb0Exs7lCZHlqoOzDsW6ej+AVQd40VrVKHvJzeT + ta7i8e2vqHfdzCkgAoJgJuQzOBhSoTCtkY2Ic9GgqZhzTQqG83w8cuNFkU4ndsw341HV8CvQ04ya + 0ypquxMlzaHP2AVNoAIw1NXWpPWN1nlmCV8UNBg5ZuOKyKTQiA1TCbTlXVJ6/xlTpoerSjHsMhaI + EniNN7E8HtZWjRORlmM0DVHvGyrE64OGz7OyfF8eWQaHidiSl+nw6kBkABRHimQJGWBPWfyb3rsv + P+8rS9S2k8d2247TjVv7MROwPCdOeH/oqK08WGYV0LQuCHu8yJo8ugNhKzhx0MZWwNstbQUuuWIr + 4FWBd/jmQyWHyYvQ+VKyFHwv8hNn4HtxJDnbP+g1Y79fvivMApD/iPToz6g4HdGCOG9UkIiN2T4P + 0ibC1jlw+YHxNB5L9D3KXVHNGt5iWCFfZcNwKOOyolQA/86TU7lLYzn5E9bI8QHGOTdjeFHFvsEe + n3R/o3W/PD05ClUs2nvPTpjbLhRNz1hHosUrzEA0XRRIpl/eRbKquex4Vjvem8nY7Y3xP5wjPHI6 + qZfahw2zUiHcFZaB7zHKTWoX4/4+SXlyGegviE2zmvDdikCIVS8SF+r27/ADj5xa3HOP5io/ojWP + +pYPsysLj+kYe3t1fnnd//jxYxclkhElKav2ttUOqLbV/Oa9m8PwI43m7Gmzg0kbSDlKxOphtc5a + 6i/7Og+Uxc/rMP/4+Il5sX2klm63UhuE5JLaQFdJbbi++OxWIrVOOVLLXg3jxPWcQZxETMRpzzCS + MSwnbfJMTSwNnkwnf8JXULzjFkYSw6ZgJ10vZm7/x2R9j7+xAS2vlK/sHDaxB9D1wfQDfb9CLXyL + 8V4VqBTvgNmBFiJFVTBVYsXjxpPvuUgvFQojVSD/CeK4xXW3zH9AE1AQsZbAxJvcbFQcLfueLWVs + Ge4v6LOx+RWFSHu9xDZ+t5nfTQxkY8/x40YyZiwuDYOKgxNZJrimOUX6RehmId2YKSX8ZOZbvaXQ + wqj1uEjxk+uo4bzIBBPWWddY4EVBOVdZ75Bi2MyQL2MlD2htM0si5UQyHZRmjJaZ7gstZRn0MNcN + WK1kkfmrxcJfwryDQ8K8bii4zNRLhRd3YPHKBVe1bzZjORNN3wmL95NbKsovEzJYzB635IW3f/XP + nEc1K55uMy3fyEyvFQT6JW4FsGE2d0+d89yijRzISOcVGZS0E2N0t+XU14s3XOiT+T1MmzXHQyhZ + IaydXKkiNEtkbSXuRx9fJ7j3eTKHhQKjhgudZ+PrGzluJ5y1Q9uzi3NB7Nj4N3VEDLrduE8xBp6l + S96I+/Q7PTOZjzR2qhwemsJtHFVX7Iur4pBa9PCULEDDiWAYf60GTvQxemmTdY+Dh3fWDbKVAJmS + qy1Aq+dwo8Q7t22sdoIEIBEs17GqvajucLaykoqs2h3BShzu0MU3lrbyuu3dTqqosihlmpU3Fyth + fI3x8W9ekjZyPNSP+TTYfgTYyOKHc9Ft5WO8ouM2pNmiJiJd3GQ2wejNs9G3qlpj56o8uNqTkEa3 + s7Fs91f6hBKrd8xuF2UUa6k/ZT1r64BIOyEu0NLclvnt6hl7rDS3nN2uLpLNsJ7MmMgxuP742XX7 + JZB2aQtMOESGtEN715NZMrzmz5bB1PjVHpfLq5yTQPggQooB1OaiHQI2/0wgFmGleQbUkegyWEl5 + vx0Qvq0V3eEr/4K4j8+WpyCuE8kDjNI/sUjr4KLtfTl71LofSm7gRqzc3Q3fVVlHWD94qP/qsd7f + OCdjlxxenEwS+2FPz3YQGhEpO6ge6145lF5BHkociOOP809O6Ns7r+h2K+eVkFxyXtFVgd784cxM + V2GOF3tRyXvlBa+GLIiSeIDla+Lgkr7eFTdZOKzTzwcN4keybZ3fpzUZ/sb2UcqNa6wW94PQdZKK + ++XTUADCpLMZ9HQ6nD5sSff3q9xLGqtT6MIH+uU3rO+XGeH/WLzCL+embHlFUU1OXyB4JDSgJK2b + DcZkUPSbskNqX1B8QoPEMAijHRJ758q/r/r86NNQiT5GKFWKIw1ELRRaqtzMxNyusSoxucnBACnG + DcxITcxp4bnE9BHoZ3Efd2OqkSDBKzT5QAMSoGL5ZjmCl/MFP1pOFpTNgVzMkmn5oa+9VYnr4UqQ + BiocjZTIH9DmrQ3H4XFMYimtDkcLNmLNOOuiJJBPJnxk5yRsw5hsryw8kp7hu6FfTsxMBaYBTvvd + ZkdXVX246eAjuzaqJ5LaNJ18kROjLcVuWnqI4CZ+slBoY4c0zMOSHa4nEOU4wvqqmP1eR3rsSDvT + f98WF1Q9Y2tnylcYdqa4KEqn4bNErsQ2RC30uxzNgq+Bf1xz6/Vy5lYQteS7EYk38AKyNT3KRUJx + EiKkreqGDgLia0cp1JgGp4kdIt4jGjkVpNqAKAxURvmeymvHwFYgkNL5ih59VmhZnhPSvNkxD5+B + 4i7kBCzw1EgPV5vp7QaMnemGg7bsLZFPOZ/LHMDPg8TK7YjjOvzx+yWsTfusOrrdysIQkksWBl0V + FTgXn6rIYCH6IfXwePTqhe/j8Ax8P4jL9TdFlpyAKuJkpv2j0Lk67i8nN5jLgONNvrBB/x50Q23w + QYl8Cw0E/aUPbUG1b5mu8dfiUVnxedrXq0jxVTr0DDHRGCDd3ybTKYzOON+g95FAh+BhnMnfJ8uN + NIIuF9MqZphwJMDA0fdUvmQrzW8Q+02hpSQIkiCoWDHa0kA4+/VkvRF9Kt6clWLWZvlP0wvKNcUF + RmollOmzSpNNEUUXUJfIjlA8suUhMKN4bpMFA2dUFKEF828wpXq4pBSIVhAnPfHtuDe07kBr7RAH + T234TWfydtunXsJ2jI5OCMMOjnvQWaeWSavHXTekEoPd631rb6jjUqR+4uOCW6nEumzvb8M1zi2/ + 3VtDS+OkleDdEcMucsxjV9Jk/E8UOm2jQOohW6IM9RKDKUNepdMxHd8J4P676cNIDaSubWvKDRgm + 8x4+QgQYgaIU/UWlf50ykSaCyJpHW1eb5W2tt35rNmBMBcdvQP0I7R2qdLuVuiMkl9QduirVnStW + 0XdgbzarCLzw1TCIWeL4gyB2/cTfXkUwXsILRh0UFzc4UJ9BFYE8l2FjkI+otvA0kvvJ3X3pBL5c + L9GznP3kFWiruii6yEERd94tswzkTjf5MluN9MTlo/fvLo6HtxtJPcgvilSEjCe+4MGtOvxUDTpo + ODALYS724WtF+Rq2o3d5fakSXlw/8g5bqfudX2pdFFxh0Tt24gQtw9/iIev4t3yJGQAXV2mqc+di + k0PCH/I/32zWD8ty+YT5Bh7qjhh2rucFlKqilAS9mg7OoXq/qMY4ma5h3swPGae28PmdeRhblnJY + xzyfWYnIQX47a3i57r2CVNz26dJzQ3sznG63OpeE5NK5RFcLMzyuVLd5GDXX7XD/1YsodlnkD+AH + Ly3cdi5Nl/CC/5TqNo/FxEj4bOAO4lAWP7gtvDt0u23xg1v17tBVmlZXHz9XYeqcMC4XP7xgbswC + NmBuAjojzaqjxQa/53t2zC3k71OykHlqG2yeddTVfNpdTWY1yAGoNf5A0MLG8gEncaMtsCtgSHuP + phnpkETN0FVb4OPQimzI9mdOyNzIDwwlCtWVq69fZCzviHfaoP91fY8/voxSD35cbeb+4pgqTmZw + jCFcwGQ0WeBGN5mXu3+AitEsp8SO+TqdgHZ1df5apxu/yX/2QdbQc5z+zQJjrvxZzDbDd2iHLb4O + FIOieH8oxGTjHk4qlSvsxRRcwMHD9UH0i0PumSgGfftJK9cLFQv9Tztv6P/Ye0P/p9Yb+j+GN/SM + VauFArdULeS+egFTijnJAGdWLLbhSwNevf9RuQ1A5ol7WozK+kdOGTTytBrn6PJZDVTW95c+ZvBM + EOiA/kb1QlxfmohkVbh5dJ8vRa4gPiUa0Ncq44R3M2XVmh6YPkMaBuG9Mtpey4sQeU1VMqAohbFf + WZ/b3lGf/xEnic0rirwJPZOA5tYF7wK1GAwPpxc6ZfG95zduPT4P5RpDLZTid0GhoKlPbnW8+TCZ + fcNVpu1nFUm4RrIfWJgAzdqsJfRGCv95oAco39In4EFto+FFEu1baRUR3OVK5F4Ku8m907vphVEB + OsfVf86N9ouA22Ft7Pq2fXMVWore7RDEemDuevqZK0fofmkP3eQcols2rq6eeo7RFguqo1zDmCfA + /3H2CdRPe9cY3W519gnJpbOPropcw/PLMhIfS3ghiO4Z814NGQO7MxngP0JXJhsub/KivnzNgyhC + lzgtZ3tpnY7bId+G7qabEaIyiMegy/iuBD04mm54d569+eDKlMXR0q8cZ9j8IfwZFvcyqzu+sICk + uXDST5zQqfL67AEQGMeJ48flk9D72zD427BxNZgFrlFTYM+Ubpb9FXmDA8zzg2dFaoYGBFCqhIxL + H1FBPK5/HW4KR2egmKYTsM/vMW93Xq6oBelJQ7APLQ5Mn+9CalPHFxHLLYdSoS00qgtBZDVjdHXk + e7ZcEcNNymtDyFwi7B9oAiatoCdJw8Uyq3ub+y1wosCNvH/2zsvRUTX5y0tNrAONikiPdpqdgytO + swFOq0HYWfovRNiUawK+Qk00TCmtfcdMHiM1Y9vDdqusToeJUGkkj3DDutwGIbUF/hGnuTrC0+VQ + 9tANPGusG5U82bx8xtkorTkg6nyNOFO3vrZpuj+x9MZwsi3r05au70BhRRnBDuVyQGqLGqXWL4h2 + aa9cSlmL1PYMqyhn8ULKH0N5Gv1V63dshTyl6bHXbmQ7RXzXTzzqucKPP15u7CeZj4V/JEHjj8qX + 3yjE04Cp3VSMmZDCqe9Os1KqI4e1sQsVPDZq3CPUf7IwoAE5H48i7+VFesv247xyROF0vUplJaon + 9Bi8e4fqY7fh7SmrEVbSpZryWXqHxu9mdkBCqBe5Kn9zPwl+wLQz6oBE7sCVlfKHi6IEEXGQFCTr + lh3fDSLhjoAVjSGvbZoeQgfbkQ2XKGQ0PzxhbUm66BlrZDTxChMZjS4KuviHXOSuEFRF/4gvgI/H + PfFv+if+ixEuWpD0RFk771dRA44oYLi6F5xvUSWqtdLBEsYl3qRL+Bgw+bLFGpbclor7RrUkTmiG + z8c6GMSe4VNLhAi7pkWMCBFL+ATLcv5gBa7ASvz+/BqNApnjVBWfrR3bKMonlT1dgRG/wMOCe/2b + 50ozfGxsBu+W6e3axECxVi4CgRdBHUZbVr2EmgOnxdPN8z5gjPbjRY4wuN+zUl/vll2PQ0+OLNg8 + qa/bsnf8GvqRmIAO6pAxLNILD0a2YKEfUNEIbX5WLuDdz7aqnKHJsEL3GIx+gftTAL7sHAdcaknj + 5mwlgTm0hXIclqk9PAkoKRQaNxenzaPwpJY8uJ4stj8lDiECx8bIrNqZd3G2WO/8z4xNJtIH9Reg + PBdCDmUoDAICj6CUnHw6WZgRE4vFdqhaJ9SxRNX6sdgJTpy4VVKdeMY2p06+wkipExdJHRtPR0Id + Gz/Mefri5O4eLPJ70A561Uv9N3B/Dx/qeV7I/ISRbhYR5BAWnOR36eyhP97wFQz76r82wpXAcypV + mp3ImmyhxxDyC6zHCdrOMFMQoX7Nc4d1fgB79SAhdwQM9yrjHinFa5N/l2NvcfI5LtkkKRZdTLfz + SO1l1NcnDTK+U6wWMInhTQssaG/hSNgDleQApizV5WLDFROrzWm35dk2DUiIc0GdUI0pNjuPgk62 + 2C4KFBImeUejpBXvKNxuyzuKkqu8o3CVdpG3558rdFku93yVeEcDxBhlgyCOE7TmWtJlfVvCK0cL + Kj32/jYEq0D3o6GRoHwAcA/++IegeZRZ2eMSglXKkyRkp6pscA7+QEng2U9X91ycIuMTJgbK6MP9 + ZpZijBEGbowpUKgA49zFSyO0KjerERiWE/EpPJzx9tPZudu7vvyHxgIZRxzKxvEodfagcmjfZ76S + Ah0Fq2uC1WH4Cd/Tu2xQ9FVOGcQ7p/vjkDc/Q3/lvnXc3XnLCDzJmM37Jnh3kqTQnUvLjWj7xSlZ + muD4uft7YrtyliXE4fw/n5jbYi+l2+2S/UhyOdmPXxXI4Je/VZNjvfJe6r4assgLWDSAdruuKAUC + 1a7/7U1KZS/p7e1kjh24gG9ccW+yjmglcLWX36ppsXzVpA30fnEjJrWH6c5JhUKreD0OSy2olg5+ + GzhRUzDdeIEWodflN1D/eahC7hBbDWDz3hnCf91FXS8K8PrTfot+P5U2yPKB5632JWy6eQ7J814e + Q9gaWU+Aq+Ni8Sem5K42d3fZiufK8rZiKhj06QMl+InUWEQv0l+KgRCcZSqTLwyDbpgnCL7UGOb2 + MiheRlcPEEP2Xv3ca6s1wtyRfgKCU2yccruOiWdQCHCA44RrKJ6qPlJ9WkWU3AqZtwPik7wONUPX + 8jV1yIrdSd9hZwRB9TX7HUlUnnpx6biu/ZFEt9vRU5LkMj0lvyo4rt7X0FO62JEmPeUwdLzECQch + EtJH26uAFkuQ33l1apmkdmPWQ6A++terclXVRKHrhr3O4A3+7RX6Xlf+x27U6M50VOKr/fDJcSP7 + ghS63WpDEJJLGwJdFQUpHz8zp7IlsAiTs/QtwXn1ImC8IMVNVD2KSrMFJevj57du/wjEHV8iCDUo + MBOFmCLrEM5Wi2x5N5kileWFdLwNVXpPkbZ7kY7OVc3DH+lymf8A+16MPCpNf0zpLc6imv3LN3ou + xnBEwFayRBhIfswKQkyqXqH27rXrnKtNxw2cxK9Sw6i0hmqOMs+DzBt05zAIw6b9zXjVvhyysRdG + bkUDn2d3aU0gsWVaq8PcJgadhsbrKV6LD6WqvTBuTPR1ArghLGOpwokvG7+bsCViQROSauyzKEmc + f/auGwfPzHY1PoLMAK1IjQOgYMyIJ78akzOdfkuniNS3+DAktleu7t+niym2FN4COikMi0beoX3l + qZzzwkLAdSK8QYVdfqqvxrOT/nwyhsfnK77YerQPKB+WTJVldDrZT4s2CYa1VLp/hZTOncS6j0LL + y1cCfZcxz1o8T6dWfQnltkKt5hQEtLgpmUelZrTIunkKDajCJPiLGHufXbnXM1Ko+HGHj7Q5Lp/U + myjoiT9BW1vQE/Pb7eiJSXKZnphfJU3tj4vrqALgEPpuhZ7YDSMEcIAfsSOAFN+vFxWeQeEYW6Y3 + oki8dCRhcATWKPSGCPBm33GnRCdXlWhpIFQsopUcKn5JepTqV/EOIUrkgeEtK43Cc9X/ATuDLBGR + 48JdcaN88UDeTERuFobnOqpobbJtps0ZeY1FPUHiuL5TVtveX19sgZB3/Qa/aRKB8ewkJX3kfT69 + m9QzlZpEb0kjR2Ct3LasZtp3Rz7noeyG1EwnSHRY4DnuP3vUgafYkb925mlKzyydzUDLSuf9y/Qm + 6uGCUugefigoybZyiVnoLwd7XgkLd8uceWnHaWaRx9qYoeGG/IBczVAxEGtBTYrV5A53ZN6g8aah + iOIpuH8smb92Z6z5kUijnGQj6EWZTAB9my/u0ztOkNqoLDRWrzDf16eSnJDzfD6UkuvCtbWJKcJT + q2tuUq6l48UvU+0hx99mvZVyp14SgUk3vr5R+ekuJS6h3ihv0lYLo6s0tkC0YE8PkhsLcic0PyjD + 8pDEkVAAH/ptPMt0uyXwoV/jWaarEgnoouJGAkvMqeAeMg+OCOYP4GeUOIFiWWeqB76Rj2e1ucE8 + rHWmcH8WVS9N6/Pe81johOXzHt9/9vLs88WwsKRLzannegmjxmpaJ0kcP6jEOIVUjV2jFNErQSY3 + ez/qX1C3PZv+jjDYJbF3NkUoPA54BlNhKAFLJLDQ/JYtZL+oCmCE9BnlOGW1oZMKPXTcqRgsjcRM + IJ/gdP/t41X/6DcucvhRTnC4fiUybo+5Dnl2dd4/OgM7YDTRUhGxPbI559ScY4mdYnhoFGObhhDZ + w5mrkBpjz+kICuUJKkv9MNa3si1TqoVFzycIP/1tzvlmOb4noWCM7y9jFe9T7+MHCZ2tDXUP3ful + /DCknEXd9zJKxzMZEGwZP2gr7XGUgm69Jn/5KJNUB1lAFf1bj4PGrNXakoiDJDbVv3aA+BM5Ndvc + LbzikFoD0myqK67lW+qGFs/bnR3ZLHLLrneg5CZTqgt10/cEnaGsPimKZfceej9MCNlVNmw80Uic + 9yyIiGR9qhcGLVGG1TO29anyFUZ9qrhIGulquhGZC9w5eQt9lCnVo7dCRABOV07z8Aru7uEjiCns + JL4ohxB6AE6cpTpfCrheLiUTHgc0NzJQaYT9mSFvC44SPQf/qilLsi4oCj1RVXVIOrETe1T/iEJU + D9ibcL/iDAgp0VTv6f170UpaswXr0bEtRrkQItWk0pB3UEfWYcSgI5wz5hb7e3kRyQ8e1HbHLINd + YD6pO4+fmno1ITi015fMS+z9+XS7lcEsJJcMZrpK29Pnt5VULJaEeFroBrOPeReYzzQIWMRLFrel + Yt0sQX4VkFlqhc3QuKhLtkyn4pBsP+Gog+N8zC2vBhOZmWnGOhWqEyQugpF1n2DleL5HFJ5OYSPl + Elay3UHpkYT7B/SdZWhmaBxHWpDdSt84SHPvUX/yZVzp/32rFFgslAskkRRR4Y5kdxRipEKaQ1vT + WfEDLESDL9VGXp1N2bEPkNik31+CZPstjW632tKE5NKWRldpS7t4+39eNZfM90vkJwnsaY6b+LCn + oZdAwIFfZMv854QOU5UTrXzTomcGhjunIS1lISVlcID8mZ0SrjXPwJfbF/8H9OpmPka1nXuRLrKf + nrPgbib8FQGN4a03KWfNwkz+FMaP1Lgx7EXIKJFy7mu8tCriI2A6w/NurES5yUJs0Ci36sPUM8AX + Wi/UV21EjUUVcDzATEiSx0p81frVFrY8An2hydkoW9v7tx75Hl8UqkDD9cKe6Bfa0+q71MoBBFMh + Kglp618heLTaSddaVEKP7JjLNjvjMyitODjjmHblwHEo5/+TE7coQ6Pb7XL+SXI5559fFSm+n6oc + DQErczTEr4ZelDAWDLwY80hoU4YTbjMr3JSk5g+nk29ZEbyV7AFqczHXyOeL31j/6OrTtXvc/3x2 + MRSulEW6vv+RyoLgy2kNp4NNBq6eJMF4dKcGIr5/k9HI1Sqosec0pUkw7mSv7qi628VIDQkbGSYS + Bieh55UlNScvN6UFl0NbBp6u6zP4nrJCXST52e/bftTQzai0+7FbTkaxd8VvyRzmjv3GzOHabzsg + 3BUFYRC54T97n8/eXA2Ru6LOQzmowtSWvILnReIBTPB+aYKX2T/r0Lpoo+IxslJNIY6RkdyLIrRl + dDVd///Z+9PmNnIlXxx+Xd+C744dJt0FoFY74omQ5U3TXnQld8/p+48TNyiyLHFMkRwutnU+/ZOJ + BFCFWkhUsWTLPTP3nrZUKiRQWBK5/pKvPDziJrXEZ9KFxWRcv+1jkNYDZ9vlL+EEw50q1aH6Pf6b + S0xAK49XIxzYD/NJ9VDFoNr6YJ2Cw66GOuPfw/RRIMs3oyrfDW4SShiJ6qhquLeTJngPBv4QY/il + DDXbIotvdmp0EmsIqeTthR+H7mINve6WuUSUy5lL8qlSNs9fVXXNBEOM7LylEQ+SAHRNHqQyWraI + VEJARmTsmKuS8wNptbS0eSPi3IzhXI8HawoNHEwzapIfcpPbbUq5FlO9C34DCqhQkCZkAPg8Q36/ + QU1Dxt3poAs7ZqtSYFqrlqusKkHZTYlsteqwrV6WBIwckR74WyiiSuEBPX3wVXLm6swhlggT74HY + h9vLZ5UuNscVLm/6hu6Fy50p3i6nuf27FNdjCzqFel56Fry/0zb18Lya/CLGJEYOzkJRw7Kmq61V + NVRltjfLuayc/jm3Ix4yqfopK5hU59WpdbrrOpC5X3ulZtaq7vXpKUuSp37axi9r2rj5ZfMuCn5Z + 85CYrwJwok+1qj0Xa8A21sMudoKowtw3yHUaANQA1bXQ9X+NYtgYPHxYnj2+lHboG6yCOGiFVQCv + u2IVIOUqVgE8VfA5v7+r2i2EYFWsgpTHKRtGoJaipwD3mEzY/JJt6dgwDZHzZV5TOdINpyD3WvEE + 5DW/kjKytbqsd4UlPi/posMC4YTzKE2CitV1scXKRXkN2s3NrlRqJ/LTpihR0NRTVq2F04FosVRe + KAI/iVRirP5oK9kC5hrtqHSXYA1tOJdfsVYEXUHAHndzHEFYGAMqu/LisB9j+eZsurxBUG/ZJi61 + QV4BnHY+zYBVZiNR+LNSutX3Fgr5KvX8+WCRZVOVeJJf/gieDLt9LEsym7DKjYd7MsdwiBNPzRNZ + Uevn1F3fPkzo8NlPWGgc5FbVGVcG0Gtd6kC5uBoOx/0Sa47J8gkyczyfHFeZoQ//Zo91sXuKjgj9 + QDN/0aJeNb3uyvxFtV41PSXm/+f7E8R9KiPVpKLM/Z9EgUgEcP8g5JGK9zJx5ieUIfIn09UytbD6 + dvAoDBDo67G6Gv68HTNRuRuk5IXKs0kokpXiylRLhXpZA9cEVYEnSVzBtzHDNT6KvYEaTfVLGfql + RTW3Ye9H5BE7a7UHpLNGB+oUbbNRGjl9WSk/cbyWvLNeDYp90VSKTtP0Ls2aKdUlQxRjk5MAy7DK + 1jM45ZbbUC2NamKG8vbJSH35oz/VT48xPVWfB5gnYpmIHLva3a7gYthJIJL1cnd9s9xtaQgg45mu + NHbcJlt/hQOCulHRFITWICuoaSvBUP+drfXo9Eg8uevz+yXwHwqYG64TNmlYUpebiYVKKkXs7/ym + nSx3q7kySnUfIBCnVMCOZDx1cq1vJFr2sfmTAmRovYYFHtBuPo/u67AggJwC36wLMio6Qx1S5jql + /BVaB9andnfqdvEJS+UuoPD7n3jJhz652jUzvhewOhYlNEdVi8FwoPKppJV6ho4lfAnY7maohXRZ + MdoakoFPx1gHzOlCr1X7ALqI5Uezyy30E/prPhVaRgq1USV4lT71WTujimrjalTRXVhGFfWQ5KV1 + NmEK/n+dXct4c+1CKNxEn0sI+4/O35+9lCpiKtLHnobhnyyRN+c5WvqqvcBOPNkVml6SJORSXTgW + D6fnegABZxSyqcmgE2W6RKPgCNMS0e29zsZfOtSHCkJG5ScUdPhyBzfYDXrtKOgou15n1+53Yggy + W1wcKcweHn9JEshM1VKURlhJzupIp5tnsbZqTEKVAZt20OFeO7FofRYjXYkjjE/ip37UqhKHauNa + iUN3YVXiUA/VAdTg17n98uLD+WMzGQVrpjqBjIOUJnw4gn+IwWaxhNfNdfPHdsWCkgU0HwUPAy5C + soBGgqzp66MQ57HusFzKMYqr2mVwefnHSNKtEDsYut89cSQWvmm0nLdoJkVBck+oxrDo1WVp3J2u + 6QiC+6S7y76MSqLmvlVyifCVmCGXf4/T9+DY9KGQ2Vh/fXjH09jdgkuvOynxinJJiaenKsXh4wde + 1uEDWRahqMNHz0Yxi2I2jKMwYSYYuKLRrYresNy7VUQ4QdaeQ7eomJqhkcc21PZkPWcUoqlrSWw0 + QqWGj3kuu801tMtsEq8UWk0hi1lDSL5fLnitYRkrstiY683qO/dDnmgwwwIdA2lT8tOWi6sfJvQd + VnOxQXStZW1wMUuT1I3qPQQX04yOjJoAu+0625Yj7KKIiwZLN4NrP/CTcoBYE9gS8/eY4hljURqH + iQxO/iV2ooeHTZsOQh4wT81WUXXJ57SALORunz7eEHGo/Z6ynAS4omGRzKHoRqwzNtLR2EWEhEN1 + SehrOkdcE/qDmQnHyzEN8q7Hq9UY7nj3m9Wx8aFKjeWKVQ5F246LCEfGJierlgUelk59ypG63o0X + d/NRAcEo+45K43V2OCBtT+55L4Hmia4dxVs4bOl119pRvOqwpad03b98cV5BKORJHFVqR8m67PEw + SKg+Ll74L7PxVIbg2lFNL69WVYy/XB4seWz9hrsrhS2HzszS1XXy6bwQdopC102GZeIb3belhEMr + KDpK/YCV3awivIQPmt3iTOaRgkXZ3LqTRGOosvUFOWqyCbKZI2M3errBVMGbpRhvbKdP8vhAb975 + bktpNnumSt1LL1+dvJQLqK4mCxjZjDMPN38+QIjHBWbnSN+rQjbeQQ9wihbjbL28kookHAVcro2H + 2ysvsiW4pz5CqjxtZ8L9suhDqXKn0mjS0GA6OuBtH1zvfuSxNpTwoGffsqlUlXbGVAbrI1Npe4hE + bqfj9Ysj1yMab0yC1l7Nbb9zG/4/NnFhSi43ph8osILa5q3M38eWbE18HlU/7chx9Rcdl2pDbhzG + raPjVBtXQ67uwjLkqofKkLvQZVxh7cvQqV7NMwr73OxWBJq7obCGRYZlWwdTrIGJk3YBZD2kLWPm + AhF46ihJweP9yfnvv/8OLTeT8bSGOe6RXTA/Sh6ihozM46F5YLD+vi66Dz5IOGWnSFAV7ZdtlYF5 + dNFy9+KtXi98Biik5pM7gl8eL60ySot88w54eYtkdfm6W7I6US4nq8undNBO/zivGKeYRMgv5aqz + FPMKh/CP1F/xaJ4uV6tsbU5iXWpKXpNhU/q7EphkjM58ub2BZziN8g4ewKjYiElxRf7IB6XCErC4 + lMUxkWNAAWmCpU3kImt71OluVbVHtSyjxKOQJdXUx/nsGgY3ykvS7c/LsePy/XI1kqLNhUdxECUV + GbcIkUefXAoiQTS9puhHKghYDqm0h4wl/hSa5KH8RJTjykJz3Sd4D3aDeLjtTTY6g3vA/0US/XDq + q4MsL16bnLomWRv3E31K7dZzuxl+HFLWg4YClIJfS57hrJuFoarmmC/OL18Ko68YTsY0GF/0gj31 + eSssPmriCsWnOrCQ+OgZ3ZYn6y/sHP6nTQO2TOjhn39r/vvgfPVF+N5K/hd0V6xCpoRXyvyVgS15 + HfjVeDu52QMr6464dwS87g/p5EDEHm1pmp3P0C0F8uxFGXEetmvGdB6p4Cgu3weeqx8QNkntRmk/ + B73aIIIo5sX1P6gnHaJm5dMRQNVv25t1Bi0W2WHyzjugS1cORoujP+B4W4Y7mOSxlhEWqTz0o76q + jwQCfWlwDYsY8f8cnbQBRpQNXKERiXoVHFE+V+WOLv+KqvCIIq3CI6KekgzhH5GEdnq3tIxICKjJ + bCUFbbmlJusMGNJdCYLmr81dVNGZ6nP5bLdD0lhs4J4L0eaHBL+oHFqfCr8ZdxGDJMNihvENZkep + wksyejC3J41rpuxW2YJxQl/BMi7ns+eDm/GmeEqUI7tQdefk/XlQwODPHQTmCzxcdgPGz8KkhwD4 + vsrNRKHv11Sqs6hWg3lbCPEPLAcVaKXNtH5sFHeh+dHIXprXCS0gYxnRp0y0g6vWjVyFZNOJJSbr + p8S3boqwrgaoOr+OVjfjhU0MjbmRH6I8LEABp6Q9vTOL+ivicdXmAOZHHs42Fv04SlDrvIHNqlDq + 2dkFHFt3wyC97nT7KMqlu4eeKry084uKYZBz3wbmDdizJyJhaYB4aVyggCnr2OSFUqRoCKO8+CCV + mCHw2BnIm/gQs4S25AmEi2C9Wa5l2I8CGc8o9DIbhP/Amdw8H8DWHWxgGlCgzrbfsgzt+Uj1/cW5 + tATRb+cYXyRrqoAIsJV4TwiHBDtqrd/I7wwaqKmBvFo3GAzt0EkiouMmbUtiGDa53+EWTMKgfA2W + iNa73EPeVAbZopqb9koOVgvoDc5IU7KZIub9uAX8YC3gh4ML+KF+AT3crsYtHoTSoJf4BJlbno12 + F8AeKgcleRGkpCHiZSnpY2zA6W8vdXzrvlH1DXZFlsmD2/ngOHA3SsNgw85tqay1pdYUktaXJ5RR + kdMPFzA0d95Lr7tFDBPlcsSwfKoRhD8FGGNWihkWcSVm+EnsR0wkw9iPI1/l/V5a1WPnJlrBJMBg + oAnKpKcf/ynIAyZVBBmQiShZ8qQpSNhtGGgc1y3jyB0xRnOb5UB+FuDNbLGwaukpvN8tfM4BWKZS + S1u5CJqUi0QkqYjq8SSVwUjZWxvcMQGoTWU0ihziQog4qEA8toZJqlL03lvf3rRQJnmpsmLDe1gt + j7adiZ4VnPQO+ByjdzQZ4RrjhgJGkUlVf0gre54SxwyUm/qGQ5k8BduZS9MDigDlPO3f8G6j6ULp + ntJC5QEor2/NmTm45Jp9UhHGjxcsjNwjMOl1J/apKJfYJz0l9vnh9VkFMieIS0UYg/jZKILzGPnD + SPhhoHzaZ3Zo+ukIfr2dLXYSDOX05SnjTwenVK8Pjt+35YAsFjl013b2GZjE5cn54FHBDUV1+96f + /d+RKsBDnPHD51lnKJ4mC0t3X/d9W2oKKYIY0JgtNhUoBOHzRngFxgOf84CDePrH+4/SnYYJ4Tm2 + DjK4yfLreI4CGKhx48mNTtuVLR5d3m7F6rEE5Vb5As8tA0wJlBZeQofaNpvDkEGQBbrX2xsPt5dh + klHCqcAGoQvsrmb/vZttZ4uCg9fkWY27YdHkvoyQwmQaMy0dBaWUW26+ze522ehdqU1z5JRa3LSe + eyVjAilL83DHcZ6g6crNH3wNPuWMflg1i1iUkFuBTk5XO3uqDGKFQ9gS57Uv364ptMZiETz1eUvT + lWrkbLrSndimK/WUbp7JdMKVFP7SDsGYZvPtePBI6auPvdo/63jtUyTjSWJk24J/6dxQ3JvhSJ1i + uf1YGNjfXIKdYqTktXy4zlbj2drNVRXxyNfEoN28gIXSJqqFx/mQKDcdPnGhOJs9tHkbuBUExk61 + ORBO76Q1cAcoWLEW1tqHmQsm4prpGcIvt3hT4TVDdgAsPOj0SSFT7jL5SdMZSkDt5OifwD7bRHia + uVNIpnQ2SgemYK04gNmdJHoFRtQL9Fki1s4725biD4/ACajYl/jHCE1v33OzSu2oKjAKPUKxASkK + OjARAnfzHvyzicrp9hlvYaGRrzvmdEvKlZxufKrqvJ9/tFWMNA5DEfCKfSby0ygJhhFjUaRQOd8T + PkiObm4l0tquQxX9Mp+tcLpeIN8A+VLO0nKd41ysYJ/Ajl1hIuvVcnoHLDPnk8hNN5nMUoRfn9sk + 0DuXFSFAqMj8atmtEIlVNSQBhSCNy9qE/UkN9eS53+C0TVLOkkqtPA25Ype84OU428rQvIe8Fh5u + Mq1oBGkY9wEyc6B1k8xwLJ6mppMKymDO5xJRWY5TjFjkB5zk2h6oYaw0BXXBauyMPWSzm8uMcYwi + M4cF8VFzRyMt38O+h49wTapzaa/eA8hcYrriH4tb1Jai1x0r/knKlYp/+JRug4+/n1eLMEQsKSdR + jJIQtMJkmISBzMTG2+DjDqOyv8wWmTQGrgul3izmAJ+1I68aCKISXKjWDPBcbk8MV9ESkuRk7ye3 + XGEsfPyygp+kxR/FC+myk6HxUqXYDL7OxmRrfvFa5GKWvBZk0/K1cPrx/UmtLxSYRrPFKhIijXnF + YqXsCPDNlm2APrM4SVZHsA0aLyHBRRJVTFplAcu2Y7EmH65Nrs6wVbTI2BCfoV3vIa+dYIh6ve+F + Ss2mIm3QNkd63eQiPjrdfmbpakhbZKg2zXBwcpsxNJvhltFTSACfA2AiW9xwclhF4jry2MOzYTIt + Asa8fpSydqawfeLyUQrecffx0aqcr2of5sem4bi0+yhfVUR0Po1OVxfyA3zTYhj3eOm1Kl5Y220P + KX6cUvzev/O5766r0OtOt5OiXLqd6CndTn98eFO5nUC3LlUQCJ894QL+TYdcCAnvt6/E9u0c6FdL + bGtZKH9W6ylIRMzrPAX9uxz6KKIdBAmHX/SCMo2yx3nc0uho2rii7OkuLJQ99ZAWCCsBIeDydJDt + vkD75TZXYrwyzoLeyBfrFezsMpie7gyzS1KWtgPT6wf/zj3ovDMo3qFmhz9EbwSuzc/iddTa+qza + uBqfdReW7Vk9pI0gMKZqPJLS9HeE4l7j9pa1ICTULlAiQ1o4Gv3/gpEslCttMMVt4EDkt8NUigOG + zQSbiPLso4iAkzRdt+rx+w3HUSqv32x9vZRk545UnXdaX5pvElH4Nimpx3866BckebT67L3SSAjs + H5ssv8+mWu9tLAD5gOK3W3CNhx0XfhQu2THQ4D6nTX46Eno/WYceVINRkP9Fl/bCsgF9ZFH1VmhF + JBT8LUZFPjaSLCsc1fKzznGLMSF+5EShjwJD7OoBOAaknUUB1V7DE7ykw3tEHZXYp8gvWvdRMBrP + VzfjkVl9UEDFqLRPCptjS3EvnYw6XGgpi4mXcJOwVlKWauMqZekuLClLPdyTkvDaQmo7X35mgbeS + /0U4Yrg3vB8VGRKl5GUppjooJv41a0x6aIzZ60StLlCEBxToZkf/tb6r92jvfXVR53/kykCpV8ms + oOWVPnJd677tpxmHj4TxeQC3a+2sdHA+s9T3pe5/efo6X2Id7tLGeBFwFueB98CpssXXbL5cZaP6 + b1tk22/L9Zf9tFuZNvZZJwKV6er7LdCx6XXHLFdJuZLjik+VdeLNSTnPiKUyVd3OcMUCxnDlDnno + pzrPqMk6cbUG+pO/tXXipYY00ymqVNjidrUNTVqq9/LytUmK8TmDS/ToOjBwsan0T1kGt3AfdtuA + qn7IyfkLFrauIFJo5XjXF7op3vb5Y9pYjWVXq2mI2DbBttHEC2FuUhGraQ4p/g/BdseFbMTr9uFR + PVQy5ZG2VvDwBZejbWOu0I1c7RWmE8tgoZ/SJL/49EKVcvLgx9/OP/5fXdlJz/yL7RX3rvA/aEYI + g+jeJSpCtQht+gfZ/l6cuF/wIm+Lx9dL2JIzkb16Q6wuNJ7E7uZ2et3xQpOUKxcaPqUL7eT8Vblk + I0tjNKOWIBviOAp5Ooxh3ExhBMHNBYS+rdRFdrLKqtUYNWD93uqITUE5CQgjcRXOTuLtrLLVFqT8 + xqAcmOAfQLVQsxeoJn4ZTNqqFVc86qV8idgX6YHh5iZ+H/TmYzAW+rF7PSBYAJ5o/Tt6kz5lrW4L + 08ZV/9ZdWPq3ekjnonzt1lzDhop0XwjmWJKrkviv2VHXUKleAQg63R2tuLde79TYW+KkrXiQN3K2 + uOhObJOLekprDuf7ZnYl79+iBFZ4fH5zxWxyVAdKofr65Fu3c/5mi5tsPdvWR8y7ObF+CnzXT0xh + bGFefzB5jWpbCz931r5i/ClLWnprqZG7u1Z1UvLX0tOyw5ZKkhpzYuMfLMrI3ZLQVyrG4T3lvnhd + 2IYgpKx3F8xP3cUtet1J3FKUS+IWPVXi1ttq7J2QlQ+L0Q0gbokoATYxFBFcDkrc+nQDCngh9jdb + L79jkBX8V4ZcTXf4HdK+TX+bUmUiuTI4F9eYBrotWEen49vxdfbchElhvOjX2deljt/a5AmKsN7/ + tVMBS0Dzj/UtM3LfzaqPtFAUZ8KwUvADoXTVR6pPbhbPEhGXpahhuUiU1U0BsbhokJWaq+wUa0Zm + y812XIrXFn7ol7P8h1bMdkM3+eWa55MVq3mhV6ixVhaPgaz/L+/B7QQP97WJQPHT1OtsmW9Gfpdz + UyaYz6KryBOEQS7y1Kyyk5m0LY0f4sn+oTc9RViT0FJ3Llve9b2kEgnacIdYhpt2w6mAAWyhmaSw + 2HaOHe/TzxmyVIW1F099R8elMI7LFI2CopW8QU1cpQ3VgSVr0DO6GUFlUPecQL80ZrPfzW/H0m9L + XtvxthIAtPfNd0ix+Dp2gSKJ4CnZ5vqLliE6BSDgHqKFUp+gLlCUnNzIaFk0NyrA5b77olprMEVY + h6TvsKRu5JtZ3SHpz31ggkm9ef9OajSlNmO7JwQ6sJ9uL8Eox3V0gCsTFvxsjRLBEZn8tFzzu2MS + cBJBpZFQqhkdQ+rojH7DiUNhpme02c0/79aDyXwnq3h3pihnKpA0h/DvUWQ1lw80l0948NRvp1VS + E1curzqwuDw9Iy5/PR2rIJUCCvd0Rilapb2qy2xHwF7D2JTdDiIQhIV47GFhx+UG2MnIJvAG+vCw + I1I/dThnEFko1bfLKQrPNP0dA1kCcnTV4MBLl9ymEadkb22mrkTrSlr0VLW0hxjJn13C9CGYq31Z + 4U3ynqbN20pIPYLaAZRD8ikePqOuShdeJXRlY6Ez2DVH3CbHZmIqQgKRN+WGGC+uYRGBUOdB9QUS + I0JjAUxfMP7UD1smbOhWzjZA041tBNSPFUbjaDyF9QTWA/SwtJHcacaNjQ8bkBKsQPu9VCpESuND + Y3mUxoqXk6JXwyOJTAdUF4GKgVzCJrBDeSLgpt+P4NFdDXcxmLdJOelsgCfViGqc7FnbljoSj617 + rT/CcSgnvPsm7TzLPVZxEAREePLOD1rEttHrTrZpRblkm6anGiXkNK4Gt/GoFNwmno3CIE35MATB + zNcgrpOYr4w4o+AIL7c7+VDm8m6/LUc3d1drOKNy4z8fqEaI+Tmf/ZsslPhmGZNilm2eDt7rILbB + t2x2fbMdzDYDGO2XlwYDBImVrdBLmaIMxxDWEw27VbgLyzqdNEYipFEMH8/LxunC5kCHyHa23an0 + ZamafsGwt1JqdQgr15BanUY+Wp3KaCGzCRyZ3dUOhkxRmTXp2ryRJqgUccgrNCkTezOTWoVGtJs2 + JoRjH02FpxtGvbUARgoAWaWC1k3os9aUG7o6LvV2dk2oJDqyxDoxpQgTv7lGt+rEOy3nnhv+DR/x + aXcVrAaPrrEqxkguxWzxWFsFhgqYoGbbSgQDePeLRHu8lSJjvpobqr4BQgwVORkjltjcWu8cvENC + sRSLnXryuJqQEJDZVG1trtl+w/Q7i2y45hatfZvFmWqsxfD6be1KBwtECSOjWhtijN9q0XcmykJK + JTdIBXnKv57JJbDWhbqBJjfZ5MtqOauri1ij4inTFdn6D3KmvWKDpzgJvuXIhCr09gS6CgpMe3vB + WauaQrqB041kqJfuJP2cbqXX7z6G1qUkBGg9iW/fSoH/7EkoEriOh/BPqhPCz2TY7+dZJoHDcElQ + elvBXF8PaYeM1+vx3QgHNC2Gtehi6UN58KDh8jYbfUNF6GZ5i2HQd7D7x2uQzFHEpzjumzWM+9to + /LeO5M6D0HyphoHcJblOEkk3v94/ia7PHaZBu3wo3cS1OrfqwCrOTc/2JEO9/OM1w4w4u3hhkR7H + 3YSmsvybUhOTnJ6IlkXH80bOMcm6EzsmWT1VRRo/nctijCcn+kvoyeDNZAFctpzlbEjK+GSjSwXK + qdqAeQ7Ttu/2cK+aeFS04g+MEVaNOI8opk41QqPX7IrQRNrPQq8FCB9cSTyFMal2Xx+KlSvFveOK + GSvYsTYw4cD+jzGQKVYQqECtF+fBW+a3TU8wjRxZQd5JkRWYpwrLd7fFIAIVs4U4OHm9Ga/yZHCK + r3uykbSSC4Wg8XMBaH0sDGLJX82Y3a7SZkeCe01FQUiS11oiABuAROdhhUwZQwrD2V/k9Z5xmQiW + It8mrfCOECaR3lyU8MBQBK3DenKziP2EVBQF+bFvqIfCXjsCvfzo0J0e76JjEmFaU9mfk/NwLjJ9 + U0j8pb9evmNxi5BTet1JiVKUSyoUPVXlmU7fpeWQUzITFK160bMnTICUxIdMpBzd/rIo69uPSSjv + gZkG2z2fzNOaaE98oyazTRXJvQF9I1v8++42q8deFL4VFloso4GON6yyUVKFDvW4v44Sw8KzTj3m + qIn5jWib3oL0ECHvVA52aMAu9WfAjlHDteAvz2+WSbiqfqJ699Hp9MvjodZWM1kLREZ8vP8NVFJQ + At4wOCay2ogqzkTq7+W3WbjycDuYYq1CJGQ10pGaVhTsgSnuaK8/VsQQPIlrNJYMrWPz2UYVUVmX + y6PI7lZLI2Y6e+SPul4LNHjNDHe9sJlQvujJbDWTQbk6fedqNwUutHUFORS+ukFan9/fXMDnw5TQ + ia3hLbLJfQMGGH4eUsRwB27h8n0sTX2rSrEi18n3G1B2wqt3fpC4e4DodaerQlEuXRX0VF0VJ39U + qqj60t1evCqwFFUQ++kwClkU78c2yOZAvQbbACb7Zg0rMllK7vQ1gyW0OSscOtFURvS+Sz/1Yh+L + 46CHQtjQnvAPXl2g+4BCYNR0jW6z6UzOXyebSsRrKmO3Y8W4RvJ8Nazn/Z5yfXBMUWjuvwadmPnt + DHOqkbNhTndiG+bUU6WCS37jKcFphfe5stDZJNAQF4fM6+cS3h+coNesx4zP464P00OlpgeqlHJb + XI3XsAZr1LG3zqFm95+GevTN0lGZIPyb9xfA/9xvCHrdDZ2XKJfReeVTVazw5atq/poMz7PReUew + yWKMEQjhqlB2qQ/TzOSMNdZWLXvL40pe/NBy36ZRHPrle+DDycu3Tbh5ReoiDcsO/2KumEXdXA6S + eJ6qY9VSBZG/6criILiyMCoRy7Y34wXsN9gOt8atWFRU0nKJ7urHl8qzZt/xeMIP1VkAhWAgzVBn + Z/jXR+eP3z77790M+EZWTk6R8Ol2scL8m7VrURrFsZvnA1pcdJbBT3yFxwCHXHpPh3jYMVbIgGby + /N9RjoOH28ykk8Wh8KTMS0Y3NM4s9P1MIvT4uvbOaISMYxT0X1pJF0Yh1wPfvJ7vJktU3CrQLfCJ + elWd7YG9ZYC5xHzdX8nZMCnR0Pe1CZTdrFqAAakTapbKFQmzd3R0TSRR9dFqRvOI8HfwKLVGkTTa + Sq95Yn5Ete5en7zsqJBQafGXFz7n7tcNve5muyLKZduVfErXzenZZeW6gb+GZdvVKEgSkJSH8E8U + Jro2bqFUaiEYRNd6UDfR6WzTe1Hb/jWSOqFwcFgoLIVw2VfpmzxITAQIRvQv72QH330zvr6rlpiy + S3qo98hGbqKUng9u4cTJChulii4n22sW0/0AP/JUlXTJY/+WsjC46syEAoLQOSr2hVKREpCy54Ob + 2fUNaByruxKs3OnZ7wwRbiXknId7yBi8Ap6SxyOQJ01i0F+Pb9vasKKU+LUeW4tA+LbFQPY7omJO + oJ+zbAJCvo4ey4cFs9EoB9fmiwS+QhFtnvj79Wmoqq97w7eOL6CxT53UJcF51MJkT687lgSXlCsl + wfGptsOcVkuCJxjUZJcEf5LwSCR8mPA4ibTJXn16sVJ0JUZuCFrc2oQ6Tu8W0OI3+AcnQmp4N98w + QhcGfp1tN+qFUvjiYDtbbYaDbzezyQ1G4y4yZFX4qbI63HwmZx5RHgshjyo4D82Ak+V6m31/PsgT + QecoN82JYVwtZuy5DrZCKje72/Fi8E5eCOSIGE/6YNwMjjKPo2ptp0L8Z/Gr7YDhhDXK+2EUBbwC + Z9HXhdBzHKwZrvf33z8eHi9TEj1Owz7MdEd7Ne4jnvWXLL77kwCrkjAP9moMmT1AouvVlVNImPUR + Jd7zQ5wmIfNZJUJ7Nd9tEALarSSVvklNyXPhv8Rgpbhl1RndyrnujOnGrjyjH9MNeYWlTxcjPUfl + ovDFqMn6VyvVY0y3aM8N4ui+Eo5T4VvLa2NAwEgbM9/6woprk3/WOTaltwIbIMzKQahl/P/Gk2x7 + Nx+dLk9GhaIg/6psgda9JMVeKNMMz85ysbyX7tJqd7d4S9idFZLSju8z8Yt9ItDErNyfzMV9dPLp + nCqZzO/+jSU1juyaRYqrHkcFJGRW+ICms9/dNE9Fvj++88OghdIgX3dTGohyWWmQT0lp+PT2DDNr + SlpDWKrriloD50nE+JDzNBEKc+d8eSV+u1xtWTR4O9ts0SAMnHw5IfeicuYu59Dbt5X3QYkoK13u + cyUh3L9mgwu7rvzZWTF0/DNM83L9HGS95VySHW8G2O+KOl6N9N2iw/HPL9/mclrAQlXiTR427KlI + Gxer2vsKdWxMtHG6AH+wxNPqwj6UWyuPJxy4yc9PYg9Sk/wRtvTG6ibOyR9h2ROrn9GZuM12yhqI + FZYQeWg8l3bbrGy+LV767q8ifUwVSXkU3DuE7/4t0A+UVV/eYS1L9uTY+BEuXT9RtSLU+o8a1v8h + GPdZpGqbN1CjyD9Unyn52nwKGki/LwfX6+VuhVrxFESUNWjhH05e4t/gn3NZKnkyyVbkj+94IYZU + SfY/LuDGcb8Q6XWnC1FRLl2I9JQO/9v3l5VoJh75djRTwJ89Ad2dMTaMQfVJYtuKJm0JBekWDsFN + Nt4ONjfLyRcyFkzWs1Xhfts8Hyy/wojyI6GN08qNutpku+ny5m6FtorPQDh3/E6zz7gjYV3GCLgy + X0pAixXD/3BpzPj33fUSDsBiB/q8Uvrpcn57u6mmvx/pxihQ0ifPogOn8ie5Q6w5hM38DVbJispl + pUz+gq8DZJ6Q89zQ9fCX2MOdbKqSp35CghA5omvy9vRwh4OXH04KoSktLVqMtLC6ua5Qasp2fvD2 + I6lvRqQmYjZPNwFMxH5uPSztlq4odSKM5AJrjpu75NqPUzNlUw1acNEaXEi1cYUW0l1YwELqITFZ + /I4qLIs7ZNChxoVBIHqQMsywRFWJplofoMNez+GY3aLItxc9yNX2AbcMufjaYxHd35np03BzTyjt + dBLzrCRp95ntMTkeEIgfEICRe/3mvwWYUUih7O/f+aHvLvzR626BikS5HKgon5Lw9+bkXVKxhogQ + ZXA7UvEJiwUT6ZDB1+tIxaZo9ts5dPDtfwa+QxCyIAc/CIXW6RHN9akft1LqVRtXrV53Yan16iGt + 7mYzV/AOdTeuV3sNf3p9dvbWRKXoROhLoOQhOanGs1SBhXJyxOANtc5W41kXTUifaRdi+6NNRFgj + XbSmcb/iYiQo8dse5AzmeNbeRFeNCI9SMgMXzRE4oVS4ABZgdrurzbfdK2OFQVATc99lnn+WtBtR + uVaMsC/t8N+cErRa39AxGUmqC9mj7NuTQZNFnHBMUTvBs3n0oF3PfF+m1NAgN3PWvs6VauOMBcpq + qlyph6rIlVQFR/Dhi4m04J8OMLh3htHmcG7wPN5kc7h3EEsVTX2IrrS4xgSlbI6l5iVwMJYU9S6y + yf+hWHSrFU5fw58+zW+Yt4X/yJfgBy4rmCYSxPW3gaxmmhCKhR9TapPqNbNyQb/OxjAIOCVXuja2 + gz2TqCrvvIncG1a+q/OZdwAWPTa7vS83gWAkJ6KnL78txD9G4T/sFXPLpdRbPdRhd7HvHm1Mr7uG + 3SHlatgdPCWp4s/zt3Vhd0HZgTZKeOIH6TARoC0pOcQUelTQAX/6ujysljTGg0fM9wdfXo4fK3ny + z9VNNYJNm5pHJhIJV6hC1ZLjuA3/WMhBT4OAJ0lcsefpspy2XTAulzQqRMkFCUsr0Wx7B5sbo9dq + B2F8agbLuiiVvwyiNGIuX5AbAIGLaxyfzDg9SobOKE6bqnWmqRAhC5uqdaLemQdrlAp1hgdG6l2a + FQemqGmOyks4HMi0m8+IjIo+UQIHeCQ3hQyUvtx+ZavHzwf0ZLaR0dJbisj7U5NTtz1GUFMwnl7Z + bzcz+K+k4dxWAaxD3wj1jhxu4+GhKATLRSq0xUp71iJHHlrvnIoDSyQp1a7nHidWI8Gj020JMgof + dY8FpOzFhu3k+i0sVIW0keNTlCP6BSfLHUz2VE5+90EC8ZTrNexAxlN8x/pOomUzgz9H8pNoyw0L + HKzSz77MGywSjC2o2CCR1Dvd6coFAmkTgWYY//4oNft9ke3ms9gecYj0IrMGP7Z0ZaH5sdURBtoD + zeI435j2ZkIQ6U0mhXSbhw1rX2/aaU07moUqlEvfazkbMB9jOsg6W/bxtmv6Qre7c+9G1QJVpI1w + vmhlhIPXXY1wSLlqhIOnygj37mM1WzhC6bFkg+MgECdiyKNAmikO2OB88T/FBhdEvGCDI1DeN+9g + 0twlZHrdaUEV5dKC0lMFEX/6rrKgmD5h5+Olz0ZBHAQpHwZxyEO/4FIfU8KTEpD+Oo3Hc7jyf/sr + Qc+N/Hs2uNtMXplXYi0sX07mVWF5ldOcIOCc4QaS7EgT0fKJSpF4tcO8r/FjO9G6JP0WBLskTXgQ + VbLMZTmcg/Xim6RF5icxD+IyzBSlkW5rIQUaasdHIWsSnk0n3glOyICZeVUSH/cvi5NYTPqQmR3I + zPOkbzM4KUoCKUQs3yKQeZkO+cGLa2J6jIpvPh+g13yxxUxhTPsg//Jz6BgLleYDKeYUe7gLTUZf + GlOx0ZDkNpf561okr3MfB+1wIeOEwruQeYBfs5JFsuBzOvQFeHCzb9lUzvvO3B0a0NrJTnmsg/1Q + +85Z6oeslQeyK0ReNabKNFpKPKkS21qyoDZS7xF9HIaBAU1HKhepPLlZM7RxzUKIoBi2qng6CGVo + iQeGsTiYq2JMSVxYORLtCy0ih8XXG5hxux1ymNhhi3rAqdTl9madkdtWagi9jC/hgvbDkYSOr6Gl + RZJEZ/jAr+Ip463ye1Qb1+we3YWV26MeNjsDrZCQgy8U+8FkHiYUSvqv4YKj4IF93qzWgfLuUS9h + JNmrCVM6suN9ZofEXF/jdRNab9WH+HOi0ToAAj8gbRwBb4qT3aHkoVN4nXvB258VrOc+wv6DAZFm + YB2uh+J/dY9selA5KmGaX1yMtYtnMW3cLy7qonRxyYd0cf3nS4wMwahjnftUeTK4WF+xmruKSGPw + SpQKdVdRfONa7hHSE9pPNOeUCGIEw6sZWsSy2tQUZ794K6oPKtDiMCO/99xYZzXoHkRtdW4i//9t + yAp14SctQAjpdTcrFFEuW6HkU7JCXZy/Y+xFxQ4VljHNUwSqTUQSDuGfFCtGFVM7ckOhskzMEa1i + 8CjyLx/r/YnLR8rVEFRzCa49kyWlJnSpXqzmjJ2snluGk7yt9oehPWNFcESDyXiHaQIly4oBPkLn + G55bNSYYjB4BVYuzExVewSQt57PBu1A2BGln8I5pgBQ5uKvapBBC5KMPrnzqPjMZ7L2AN/k/gaui + VdS5RqJhAhYmY9zsYC12kLuCTerkMneSWfaxgFWGXELXMlNAU2Jc9tqfiZNbjCEplTBs8jJzHsd+ + 5Oe5Jr3tuRcPb88BI/n7Hy1P8p4T+bXEhkxejmCFemhwCfuRKsgYFy489y1W4cuNHu+AcSNudql8 + 3EThQDjS8fDRPVyEFInUbLza1xwLfIWFe3QPR3SzqIV0LWNzEhO6m7VEzKWl5+IILYeCEBzY730S + dsDQT6ju9rr9t2qhhOnQMZa2Ch2D111Dx5ByNXQMnirH2KdXTFRix+K0Atk2ikFMYcEwDkNfSyTT + mU5FIkSX3LynXF/bjInKPU7BOvLMorZXRibzeUMsVyL8BI58+Zou9dzkzmrKHI2ESP24HFBF9DJk + WmijwQyrMW6ZalgViKd7cJ41de9l01QN1XwYk4cxVOhDSIjG82z8FQOeyK2kkUsGWBtObl2pc+EO + HP1zdDIfj4xUvxnaEJiFD8FkTuleI6V7WI6Bx+q+092EbFLjkUpSkFsmj6yi+r1R6CdGSl9Kj03L + 44kzmduIG6beyQiVcgL3L4bc59RaaGsPIcBFnghzyY1osyyy7bfl+kAxkodjk1P+DnllNh1XJ1W4 + NZEf4pVAQnLDbbK18Zs8GFdHxHOLkS+e+qwdlplu5G4zUp2UjEb0lO4NbZPNvtN1++jiQyEk6rFH + v54rwRd/fn9xbopCmhqSnE+k/SgN4nb2I/cMqD4sUkCFgK9ukYpk5OhvbLnFfNqr296+zZlisz+D + kUnTyI16pRrFRufBtSd9INvouFylMHclSFZuDauP7+3exT14cUADjOPK7Lcdg9ohrHYZe/FWHKtp + BCEBF5U+s4extaZ8YJy5tmio/exbRSiMfdYmpo9ed8TYZzUxffSUVJfXH19UMfalMaOEsQ/fzEU4 + xJB9jbFvgN/G8zHGOpB0hWKFBGMgYIW7yWB1t9591S5h9Wcd2PfXdA2Dmay8cxdiswZi3sm7TwYj + hYdMYqSkfqiRGXOU4HaxX93dDT++pmuPuJkkq9YuRFfhLkiEkb+Po9UHUkFOiqIW6kgNzdM1ckUQ + mmRQOKLzSACtlhcgi5JAri0bScEbUaLRRLQCDWDEchTNbUbZHt2/SsCFIScIjspsuvwOzDVPrulm + YqHSU+fvWNiiOCG97sSnFOUSn6KnqhbIy9OogugQ+mlqm1iSZyMeAgMTQx4GQptYmqLJV3PooFqf + 0JSptGwqqe2Z+MUKEkZ+TNmxXYty6q2gy8KwKD0dnbS5tGQD12uLqFcvLvlcW91e2EY3IQKRxIlf + ubviFFYoGcI/MVM+9zPpbfg8I7MMZfNowHgyx198Gp2fXhSuqSidjMb/I1IPeBKKJE89iCiX5HfM + 7XA//vS603oryqXVpqe01iDuypWz4fySsJRMIp6NAoH3wzAQMRMqmcSukJbb97VtULmENvBsnjuF + qMvs+83sarbd1GGcbVTB5lefGOfDAUzjUvLW8eD04z/FyA6Fm5tYbKrKjIFpcmu9X69YXNlWdhkt + GlrVM2En8EaNCbxcpDwMeSUR+Phe7AzYUESVLOEePcDFDo7zAJcoeg90i3iyB83D4XpTCbhH+vwE + Xo7SmGJ9dhO9PJayR9ffz61VF9V8ftP2dxvWUc7Inr2H3X1/dZ/2QHyJhxMn9HUVKxEl4C3wx+h1 + R/FEUq4IJ/hUgc/+flHVqiOelCWTJ0zA4zAcMsFYhJsS76tLaQH/zeQQwDRMbqiKy2a3lt4+2621 + XCBmMcY4DF69HtzIYIIlSDd2+AQysJoK9N9w1yPq8YgNhaxsCWRyTorETFn5jVzPGdZ6K2Ggwhhg + eTboLppttjKGYbscvAWGki2gx8HtevxlNht8mc3n2Rr+9B0hEN6+H+lwpbdf1jUJfqgCj3NHSan6 + UrnaarF6K2IQB1F6b0JWab6aLx8/bqq6ZA0xp1yZ6xLaR8Jb0cvXeLm+BoX+37T6clnz6Esb5CJo + CmnSXXjuWxR2yuZ2iTFlEv3/2P04rJsg/Jibu1W2xq62Eo6HnJZ9bFO5Sz080cbAlPDEUz9UVKnS + 0CqMqzGQx6fsI/jokfz68s7aa71qpJqSC6B2dqpkaiQYTQl3hf7Ymv3kPKKYCzmifFfcwZxdg9gj + iz9Q8TAJ03R5s2SF15xG6ynOIM0fJe7hctk9ED9v6JPNsfD1zbagmmnQNyHVJfnwjqXc/Sak151u + QkW5dBPSU2W3eVut4RrIQrpFvQ1uQh5Hoc+GPE6TNNKRMZv1bgWC9S0FZeAxR6gEzTGyzyA6z+Cm + yMu53tSVc72ZbSt6RoABOI0Z37HPdKRpx+uoiVx+FeGwZosaY58dc+P7DUpdnIacVTLIgQVJBcPG + Q2dB09h4GDM//pd3WhrNmQl42Wh1xORx/fvuFi8O2HKy2CuqR+upZJemZrhk7tp+iqz9w4jKL1Hl + bMJbfvRmPvlwMnksG8r+n9tRNoSXKaE/MFxHDTFbbXdweHfyD2gp/zKTl9jzUuSNGjYpMGoLqegb + 3JUm+AYEMalV+UIBvMlujvAadGWZBwDZfRP2rz54qJQDfX3CzIybQnwa2bEq0SHHqDfPbw7hn4HF + JT/nt4WTstSdQ7s3/jUQbwKKBPytwKb2G2IVVyhsVQd/QX0cUFsq+5XqHqoP9uvbCeMmUiXfzvX8 + boJo2+0cO/qSTVX8qe8nbSziuoFjDKqiXolCpefKIv7uTfWyDRNeCUMVAU/CeCgC4SdMX7bZavn9 + 7gr5REbx6LAf4RtgKU+L8rIuB7aGnv+nGMT9KBBMlg/4+XxDW+VjqrHz7oKxFpCZ9LrTnlOUSzuO + nirh7vQ/WaXIDuKp2xsugA0XpVGaDDE5NlVOudPJN8ZXajtVtxBdmCoZ6fVucT2zU5FS3hiNzHyR + iDQU97WhxtcYjaDxY7Ugslz8107Vo5M2X6MVft5tKlp8HDZp8QwrSMDxuE81vqmPdp9wmLx3akZ9 + ixvYlAwkaQQky3WmauJg5AdC3OSSvjXLwyKEHnzoFBZN2Q5UYLXEQtHiHe5LA6MF15ynBiyvu0Nf + 6Sw74SrKQIlO+8FdRDtS8yb4YCpfkX0vGu2bUIsPBPKxxB5Oy/Z9yG/y+GOTIg7jnhH1r+oLxil/ + CC7FGyzCdgwrpxSWl+/8JG4RByZfd7NYE+WyxVo+JVb+7o/Tin8VeHdU8aUL38cMFoGMXHHydyBT + wY7/Y4FK4Ok4L+WpfReFs0vs/t1uUnV5bhYXH84Hf7BSmbHEtp++OcPUkKKpl/khboi0oq+7ESzi + HCcgjicVTf22GB1p+yq5ZUNoHJRhsZLUZjWfwdt7rLyRiKOar64Q914Z/DRTFTov3CrZDmrOMAU0 + F2pBntMQcoXYTrPMJstrrNxAWmX4j+KAn+feBkQulngOn4EQrLx0OYAW/mFkYOGLf8YJ3CDY1Agn + wcMNZwyqXOW/COJSe2apjckyEgQvfHtU4HkiqPqxGVO7+O5jo6YJdZ4mo4uTDfe7pKAPg5uSfbBV + 87z3nQqZh/23KT8fc108gfmpaF09QTdyLZ9gOrHqJ+inxGOnNxOtbN0tcDpusvHXO9C/Eab20fn7 + s5cI2RhibuBjr/qKh+09ISIWgESjRBph9hYmR82u1/clhDBah83dYryqzUtrbkl2NVihGR5CmZ03 + U46IvYUYGigKP6Ao2fEGtPYVQuKhHbKByL59mibym+D63mDV13k+kcuvOkvVcUw8UUH6lkMLIRSW + 1+NbB0x0ypU7NiOaUQrVCg7KPEOIoGxwtZw6GoS6IItAI6q0ZsYMI1N7t4eMDlX+HYgCB9ld1UIL + HpI2WXl4e6nVSYrAw/3yMOQkfYG+t45WT+FzEnwPzc7+QJFUfQ8iRsuz1GlMlFcS5eX2ljJdtGuy + uVql5RGgU32YD92qpLjvvuNrrihUPJCGdptRtpiOaBGyqbVu1Yk7nDgfJZSDUoIM7/657hT3Wrhi + RjC5tKsws3oEN6cOQO+eKxNTrsyLC5+3QB6i1510JEW5pCPRU41//bFs7WJpUApBF8GzEU/RYDjk + KUt4vD8E/WoN9Ksh6O1rN/tRgkVOH6AR9Xw0Xy5XelvVFVze3Y4Xg4/vThjZs2CDZDIi76/Jzevn + ChhGhmojTosKmQQ1/y5nAXAyjbZTxJfW3GSefc3mZG8qZOMboH8MjvgO/Xg4CK2VgFqiQuZ/DNhJ + 3wlBvfH3vlizJPKmKzN150912kCg0PNZELpHQtDrjuj5knIFPR+fEvf4dHbO7QwWFgiWBBgDaeOW + PeEgKwTRkGPN0mKlS1mhxQr90xOt4owvswn3VyUvumlgSMhZwqMicYmVVLRG5rSb727xSOIfr6ke + 0Eo6lVFzlRzr02wlu7D5VT0hm3clzfWlYtDUkwrEfl+8CwYEx3w9nhbqd2jEEMR6urBtL0nql2wv + Jlw8EqlgiOiV4ZWW1SKNWHOv1CxQBU4/np8NvmZwPubZJmdWry5k8RIVQQ6s78vIbtPU6BaYxFju + 8sF4oGKEsEfzNuwOetcM8Xn9dvHkzjRIVrAFpS3m6FJKKQVE55Ovhja6zaZkoGpYjRY6HAtV1EZ1 + k7dkLowKIjWPsY3NJ6Zsx/pT4cj4W5E4cPeQnltP68cGUHg93ScBV4guOWxcJ3L6fgiNtYi9RVBV + 0dJcpFs524tMN7bBSD8mro/h8Nka7bIaGfby/YUUkl7+8RoGznSRI/NnizQPA7hjIs/7ebCpPw7q + 1DhTIlOsmr1i/lM/aFetWjVyLletO7HrVauntIwFFQyUoIWnJJhiVTC1d1UGok0Z4VlAGPWcc39a + oLa3yQM6xPTuO6enDcRu5xwhs41iFTvrxy2ySOh1x9hZSbkSO4tPlcT48X3FJxfwMK3EzgapEFE4 + hH/CQOe3Fhw69urqrTa7pVuNpLrl7aEcxOUOgfrtSmhYVzLHHCrJe0FjogJu4jg5kI14bH/nudgW + x0EUVVTjishQrOlmhSqFUWMOR/FTci+f9SG3Y7kLSvNe6ECgGFPqYFgYv0snpdlq7iwI/aDcWbkj + 77QM4QpbcfCouATw3O7ysVkVlV4wQ+sVRfHm/kS8uqgq/FyPbbPNVhv5oowTKX4VaPjGXqaBXJ/r + ohEbGz11A+dqNselKwxZDcnDk2TifX0W9CPgkjnXtgocK4f2JM/KLVWkoyYbBrus354V8g2eDrl/ + 3CiX9uTBHn7MLXJAYglY9UI89CH1o+lC6dDg+EGSdXzSdW177GFvkO/Pj6FUXL32pO0t7dlYrTeg + 83Y+Oh9dwcSNCBsKITxHMItfs4XdUR8VRbWkkqjoIcZaWMbpdcfoIUm5Ej2ET0lSOfvPUr5rEIDo + HoaiEj4koQZDRGfJoThsowQ6+s+t2iYkopx9q8kQbW8nt7BaCpS0hmPHConAiU7/Nit0kVciOhlv + yjFifiwCliQ52DwWbFQd65EMB9PMBkuXaYFoPJqpjadMf78zKwXSw/XNg3Vi8QsVxSIbePdqVNVC + UsfTPJhryQj5Tm+C3w7n4zxE3b5Ph4Zh/mEqmb/cFFo2rEz7EBTp+TJb/PvOFTvAqH2pNgSJ0/gp + 81tZgaiJqwlIdWDZf+iZshqsJ4NHl2/F4xyXiKw9HrmrFiMm4Mfv8F8JdhVEZCFQuPbmukFUe6qf + vVSOrvowMndHcRgmxR6KEmChgybBskU/UaOkWekHmNty8qVlbF7XPaxqlO+ZzEOo1olFoOhHOMbs + 0YbsA0+P0wcy8bU5jyfhUxa2scuaNq7GPN2FZctTD0nSWa82ZHnGExr4lzVYQZc88Zr/IgmQSS8J + +zfpHQEO1Juru1sY2bHFPOJCn/COM5qPs7H0oWD0tAD37Rm4Rx9Jpu9IHpymT/2k1SWp2rjekroL + 65pUD+kUXs/vBt91MYcaxPhi1TxTR6Dyul1bL+8XfSggrXvO9RncT+rx1R58sniYrzIbcm+t84pI + GwLDFuWhFFMCKuYt1w5kHIqgMLpiqk5jNYg2l93+uhINN/fPL0bxEC5XH/PiKK+h+eC0m50+C0FQ + 2gYW+Zz3UaGij9qjx4N+K0JHFzE1dNIkP7RwJqcz0H9MYmgnU1KSl7nwI+B+LatcUBvnIheqC7vG + BT0kYesFE2mYjFQIFP2mdSBygIvB5zFwhjszCcwiLYt4+1TYokap7iuF52/iOU8oxPb9hZ9E7i5P + et3JkKgolwyJ9JRW/OTl20ohLRBjSggG4bMngUi5Hw+DgPtJqbRnjeXr+eB6nWXw+3y3XGebCYo/ + esc8evP6/LEOujLxopinMvs3fLeyiMnc0pUK+9JwQ3/drmHo33qwSrKUBTyOHmD0roFAAH5DIQhd + teaDEn7tngy0+hdF4qnM6nbX/qiJq/KnOrB0P3pGe3MymzKl+OGPo3Ums889tDw9OnlctECd4que + bCBVvYBTcWbgQqZ8+XR8ixVsJjfZ5MtqOaszbe6HY6MDjvsSseTbCjOxHyrYGbRQygXZgDiRXbcF + EGpJ58CgUpXvs5UJYoWv0zlNxunbbeIE9MHNeMcS+GY2h90uYQe2A2QN8AdgT85TIJhK0MdeC9RA + CkbDZKsZQFpJ0/CAIGm1tWT3fHN3oo2fzOh2Q1SYbG0ISzCKNUKytdtFgYjI7a0tuWNgQHfH2kJC + JijQcLzdjic3t0rp1TupkIEj2Tyiakm3J4JSUP4k7kOnZMefJSa4pAffgxm+k41HMFXC62KP7b7R + lFJPMMkrMwHzP5pwP8VXg4hwQbD3QvIF7em7uRu2lXuZpD56u++CK/o2DxVmkc+Eu4RJrztiFknK + FcwifEq3+JuTT1UJ08dYDRuy6AmLmRDJEP6JNTBzXuFaQiDgzgByJ1oHqYIhKDnxzXhbreDq5HAu + AkqAxBtUE7xKXkiCc6gNY0PwJSfiRmy0adsAFeFBWl7r6fJwcYy8CSP27tNH3B2dQbKJKBfluqbN + +jUO9PIK/gxbRyBUbIxmQnmhgs6fe7TZQ7OQKMd1eB09ZXFbXAdq5I7roDop4TrQUx3ejWDYORa2 + ViKLSa9F87IsYYbFmKaZzkCUr8xnqyUcjWn2uNjUHob09PoqFtwnXzhKfnkxYuhosltjOhDONBpp + ZazkYjrA167ljlosFyOHFGNBqbxwsORwlus6kaxUHeJvEgWOHIiTwQ/UNERX2912P1A9FmeLyfir + VqRuq3WnzIvmxE0Z4r2XPigo8v87fAT+5difezRBT/Zb4bMgpH2xuB7DzsiOseH2xBRjbbcVIn7q + 83Z2W9XG1W6ru7DstuqhKgy5yXZTCUrYZKYN5QTYFl20t4RRShWO4a/w+zn3TxNZCBmtKGHE5R/k + z6nwulijjF2Jgib/4x0cc/egSXrdSRJVlEuSKD0lSfTj5acKWivCtdqSKMeSVqDpRMNABGGkoNFP + ZMV57dNWEe/A6q/1ituCv1Z+1IuvLgbzHXD64eDbjazboFC7MaR+NV5fY/3t+WzxBSZQQ+Oa62WR + fYN11PUY/l2IzFfC7sfNthqnWZ96KAdRzhJOmmo1+SwUOkm4QNr+6kHdZ1vJHLwkueZ5FiC5holf + xX+boqPz5m4OuqViu8U+EeFCb2s5W7VqkgXqHsZpgyHY+kgjh3+oXw27yFXSZFxuRRMLL8hNMMZd + UOwCsSzShplL0yRBPFDvXvfluOPG9PCkmfxmYB4UdaNgKDVuHhblhPWalUm3u+FwHRrINsy4i2wk + 574d2dJCVnqpDYL0H37isTzA2OTwrnL6ZiMePAynfEjr3AfLcRK677XDXwkvvueE8iTVEhlPXjH+ + 1BetRDLdyFUmM51YQpl+qkIXr8cqH/lNAUFlLEODdf54418GF9DaQxLSqS7FL+lUV4YCWcGHlmG6 + a4Dq3H+smR8Ut4PywLZG9fMTEflVexGVproZr1r4dbhgaZXSxc1y8KYv0K0g9EnHliBGcOGppMkm + NMN6v8PPgicSnIXyspCzO52hlLtcEGTrfikcu/RTeQHbW+4IADlVzqK8PgdotkCD6wEFqSf7XE9q + Y+prJhW8CNrFceomrgxKdWCxJ3pGzOn6Zqt86zfZ9+XGzovT2KgxyOdh/NireeUNti+/h0Sl5pjG + FAN0bM5vEhFegoyZQ0MCmjA6p/rG5MK/XS4K96xN7qCRLgx9QuptyCpsIXuAJCA58Jsy7pNbdAfJ + vUX5pwbh3cHo+CDksJCz0Noo7bMzzcxIDC+4InfX4/UzAzm3ubs9ii4LGW2f4mE4mFV6cP45T1I1 + 3Ctgh/DHUpHiHhNXU4K9/3DhB0ELiA35uhvEBlEuQ2zIpyre7M1JtWKOiHkFYiP2BRYwiRGSVpUV + P5HA/xjDU9B3xyNdDYIi0cYjvBs3w8HN7PoG9NOPo1xNy1VUynwtAKdvssmaMjWVZIX2+9PC3+mp + RE2YTg1W+5vzM1WPQNZU0/UQhgOlIsLD8RTVYySsBn1yPeYrqS4ioPt0ttnNP0uswCXitZNNB96p + yb09rkpLnIYxLESlLB5SNYNUAXBZHfw+cD7RVMKPMZ6CQF8pRn4E9VLVAWv4P6Y0jO7S+5+w8zw8 + mgazQ/DYU5MjpeV7rrjCyOVs75Z27DnlIiLlQRVbxQvxJsMguZZgaQ+mcsvfo+ZKG1F+32Akg6ju + kgpPcd11Leg13+L6ZuUqziYIWJvaYPi6Y5yNpFyJs8GndLNenF+yk0qgTYAZNKXaYMxnCRPxEP9N + NWTaRSV5EiT3R+sV8x9razGFLT4K/MvHmqU8Hyyy8RqBgY0RB3bIxWrDXqwkI7tBBGELfBhEnMGl + GNdka9LVh41ritwdzDNUd+KrHdYAGNu3YpgEosnLEYZpWC0W65DCZ4f6iNClA3Nv5SehqY55wHiZ + ovfzF8mT28yEDAVChgyBgkzq8RinTF9Rl5d/jNYY1SdPIWzuyWyjDrd8nMfhDB7pd4eD8GlyOaAf + 36mHj1vZo7on5B6gsD+I4wdahg5Eiv64xF6nsJbe8ngNvYg8Sal/icE3jvkN/j3k5+o5b0d4/6zp + G4Vyg36/8NuADNHrTjeKoly6Uegp3Sh/nX8KK9UmeRKVaomLZ6MgiiI/GAZRIjSYRhP+/pc1dFCD + v/93LGLKYkxD0REQaaDq1oqoRf1Qet2xZq2kXKlYi09pRc9fvqosaJCKqFKvFkQDzANDESFING7U + fPlt9Pvt4BHqN6Px58+IK3j3eDA5eX+uw6OmswzzE9AWTOt9Ps34wweRwk/IzS7Vb2koFc8a7/wk + 8QUv16KTvRica9LrSkowS1PRKKnEKajY/F/e2+L8y2wdGHTtIlDBcgtYUg4ij9zVnPjLTMaD5YPa + 3AGN2yG9gFhhJimP2KGlHSHRYV6obp2Np9ub9XJ3fUOBxnBnrOFXkqeVZiuP5mQ5BQ0Bt6XRPJMk + 7tXRJadU3mgN0+/o8+mSa9IyVMrvM25R1ZkX/xiG/xjRJhkV0hX2bPLWHYWVjupZQitP+fHxg5rv + GqjxMHqdPPXbpDSaNq7hy7oLK3pZPVRWzPd5PQ4FmFWMVT7w52IfGJosVMmUhIXGQdWME3Eg/jYl + KeZqvIZvA5EkW22d4fMTct3qXK8fYJzoy/Vw9JHT+0wFyr8/+/SUsRabjBq47TBFvLC96InKmF1+ + 1wmzdxiDjYmVg8kAS+3IaF8tuvPHHv2fHjphb5+/4yx1dwzQ606iiaJcEk3oqRJNTt8lZdEk9EVJ + 1kyePWEiioN0yGDZdK2n87cfk5AuQm1FOJ/Mkxq5A99ovv0KGHZ1kYyYy9po/o5QdWIVweJAjyrS + oSGDCK5A0RSd+YN6LBjgU9AsWVQWauxYDWnxRm9bo10D9ppt5bcr7bbqRIPilAXJNGENBWXMrHmn + cp6GxoCgwFDPb5ZJuKrOopq9R6fTL4/JspwnaGTSiKKro+fDkxMgpbDxfLPUwRFwolQnaNJ/M58k + q0Ep3cPDw6AFIqw+6tHEhRVXeFd2b9h2ShZmM+YjCQZhTPfAQuajf80O7o/tvq5qrDyeOogkV7U+ + zy4u2Z8EJXJ0pRbNzBU88UUQtWDm9LobPDFRLsMTy6eqcN/L04qX15f5ezY6MTDzNIXlHOK/oVCm + g0s7mvn04/vzk8tLvYQ6VhmGeCNP32ZwM9ts0cnzVgxgGRBNC34JCPt+k9eH0lDQOvVPOtd0Wj6a + SEE1mUsogs3zGpvo6VNct2sgMHi5uhvhaOVVczmdVH21pUFbBQESZsfcFyPiWSL9EvWK7nhdQBSw + fZhpU4kB4HhJHInqPWEI1RZaj5Imp2gTQb0Iavo/jGiBagNFH70Vo98DU1rQMtZjXKjfpL+zOOCw + Y8qKdT20hF7NUiJtkDh9maGuP0xvuJIDGa7MmB0ar9ewpx9dZlt2+vjh7W0Pj7BBoE7i2FNzJznb + gfl29vveNxw1cFMqlpzPIu674koe1Mh7sekfCTpBcWIFxJd2lzIyHGwiN9tvZdbkdLf0WUbML65I + J3bhol3eU0/lrawv3ZTM9e9Y2KJ6Eb3uZq4nymVzvXxKl+7704tqeltUqpYbCLh0oyhEDQr0qFBp + UB9OXr4dFXTGqxDOJJrbckvu+0lNOQC7boVcbqOBb1ZwXEoW3jBp4JQJDo5Xk832FsYolSNq4sIW + 7aKmpD93ZH1ug7GXOw3d3Br6QBYiQ61rCG765srCoNkyXia4vl6iIW053+M0jtKoHdVitIw0E0ih + fbPFOmk26bLeVrw3A+6DlvIv7721Wvs2FSpeOdxpw7d5uKWNMyUiXzN+Ix7LujZ7lYk6sxV+FV1A + e6bBOaAkVDZXRWG5UN/rbrP+34o8hwZHSPiH+c4vYoDUPm2mVFqLVOcV8BTH0mroXjbntJbdqd17 + Tpqf+iRFGpY7UQbsrvBLAUVk4zFedv5EEgwi38DpsyTwn8Kt36o4JrVxro2purBLY9LDcoFTCio0 + cT3ArAe5lJ2tZgTj9RvhRRAohI0pYPXIQ5EkftSLL0ILcIHCJTZC9zHOjb8RTkpvPsIwIL2gYzhm + REFfE21j65ISFfmUk3D2zk8T96gIet1JcFaUS4IzPSXB+fX7qrWK+6ldSytgz0YsTuMIBOfEl7HG + eJ5siceuPDm0S5MbIE0yOariiaA3YzwFKM+3KwQV2q0zbSR4zTA4HE318MC+DF6z1/7g5NO5sTEr + If31bY0tyt5npZCLJmAExvwUhFR+X/E15RAwMzt2EGRUtuQPLcFTjdF7KMvwHFR8LKpJAmKRmC76 + lQ2u18tv2xu05qA1XAqwIMZvditZnDiTAE+3uzmc6+XqrlizGLr/iLZGDzesEYtFJN0DURr6ZUm2 + SX7dK4mIiK7kahFbClsjZQbPubX/KuvoYsw3qnqQivLgp+uda2zGzxGYe7LXgxBZrIDltyq4Y9q0 + qYHlh5NqESw/nJjqHjJppRB3oe79OPLGCDcyYsNodAsTMV7UFfLQXWB4AkvZEVjwRsDjlH1bnwcB + 2h9uraNqgwgB/MqSNZzOUaGe+HgL65rbHaOUW+RK4A6t6nn83eHwcx2IBIpiskn2HadVLtlUcuSa + HNeWS96rCJUEZI2g4yCBV+TxoIOCT2G/HyimcXDEmlEInT0eJeFTP2gHOqbauOaP6y6sBHL1kMSm + 8WqjQ5rOR3wwno5XeEnqi8AKaqp7wWSlIZ3i20hYlgHyE1VhD8SAIpc9fNfsD+//CYWoa6paPuRy + 1ixixMC+Al8FBpLHTe4h6I4M2IF4z8VCupVMUwhWh1jQgZALn+I4lpQWWlci7R6rGQnQZWKrOQ6k + NQ3yidWe624cuZcUwY41pvfqpxS1/+aCpYG7fkqvO+mninJJP6WnxGj/+ftlRT9Fa7gdTZE+G8H+ + 9ONomCRxEqtabdub2XqqA0lxQkCh+X43RwADEFluvo11aZV/ftn0Xu051xqhy918qcJy6h0ssHR7 + sr/TMA2juIyXTWQ3WXMkWNrsZUkT9Pf/y/tnYWwyiP1rtt5uBi9Hhjo621HZAXnEPAtHGi5V/f3l + +fOBjMmaw76W+tFmm61wzj+jcVpXaAARRtN4biumalmst+HaAD4E9y+MDtQee5MgXASi7eH+MGh7 + AY/uMVoslfaiyrS387oEXBYY+o2mGOkcadj7kXWRPbVX83ko7+p2c9qSVoPrCdiBL+/9owbTI7ob + kKLKfyq0sY4ixkVOljdw/V6vl7sVrA/8aZKtSEhqw6NNhH+EqLhtTOy6iav+rDqw1Gd6RvzW5Dji + h761xFr7T7FfUZwVbdSbQ18VwBSkXsjaGnQ0ai9Ftyv2R0SydNJF3U3nx5QPiExLqe/J4jmdyo2E + BOtgFrPr0Q8p1Tb7vjyWVBJQaVPxj1H4D0eCPw7IWx/TSKe0Ji1EKXrdNaU1qYpS9JREqbcvqqIU + T8tZBuLZKEyjKI2HYZqEghsQR7NhLDAXM5F2TB2KWtl8uVAIKarOxAQmcCMBXAxc7nDw6vWISYuB + FCUudysRgiwGLy4nMxkFKPt5ubwVwWoo39nAzCFMr+7TWFdlkTTob3MzW1EzaRyD0YCUD6NcTrMa + 6AUj82kAordX9ykO9u1EcEZRkFJlMdw29dM0ZP/y/mcsrof7P89OTrlzOfQueAmOMaAB6aM1MaDt + q6n/eFkQ2GN+r1BqZdfqNEFUnsTqDut4P2CFIGxyEEf1QLQGoQEVD0u7G0CVTTg5j9+ETzFcwF1Q + U00cBTXdQVFQU8+ImxcAvVeoceV+Dq/mT0PDn4IidVmrPI16gbqMEjJdFHrvSKpHiEqfkX+MICo7 + B20dg3Pp2vgebWY9BnqFjJMRUfqvtsDG986CJ3EnY1a3MfoDhoz8RBUi5n4LyYxedyxELClXChHj + U5LMPn18j7pnCb4qQWhpuxLxKIrhsPBhFDNZ534f2MjtGjqogo3AqV5+n1VAnMK4ETvxvgWZI9BG + zlWNZIx70DtC3/zoLzPfurFCbs1z6ZOG9jO4nieZd/bh3EgICP3hScxsXWnezFuhyeGr3lOTW6Lh + eP4PtzvAfeLEIlCcqLakqPwlgl+AaIcIrUvSpt2I9xiC2lvwQWqqu70Q7RCpdRPnym7UgV3XTT5T + WdxnHz6dn56p6kSDR/Y3ILgIzPtj7/TjearQOygXpuxPZLxiWVFdw3XNQ55QZWghkuLkwYHKplOH + emv37m5SSfkR8//fxlSZCoN2tbh1E+caU9SBXWJKPlNw4aupyONDkNvIwNBsIAp2cKu2mGe/OGp8 + cfBpesPkTLmSHryB0XgwJNUMf5NFEmRZaKxXFfhprCxovi/v2+v5bnKMqdmIaapitqS3yGpDT2qc + vQp7XwbXYCLSkQ3aWc1ciO3/6DSuBJctN7eyZHjr4Ji+4oNBcy8F2Xwbowh0A0xhudmO6z+zaVQd + I4D2iuF9pYP88FCcw42c915LDNsfG70TCNK5nFnVIwupYXH92OrZCQ6x7047rsu9juL+os79JKWK + EM7j/qlJIAWtT54CzLLoZDlhTIUh8KQFHCS97hiGIClXwhDwKYkA//ePj9UwhJgHlTAE5kcsCRE8 + MBIsVNLdqcET1VCYI2MCnQ4mN1KEXmQFFLnx4OVi/B9KHHwOXPg6Ax1vTXbPy82/GVpLEbgF/YY5 + BelLh5WfSEAQuO5W2Uqa5eCNvGji/90t+7Bvs5QFPI4qaauab9ogxNwKtv9QhPbz4yCoZr/WYg0j + wKsLnSLWg56bhjrlJe20gWDF7P55Oa8gR0RBGB8g5jnuBTJr4xIP61ZfmsrRDn+5uSqY21vthucN + 203S1hOodth/mIpsq/F6u4CxIG3oXA0FfuIrD09JXvqQEW5CENZUyCoYehHfHwY1b+PylzNd1GD0 + ahy8iH6CpbzQvnOo/kFc4wqW4rEV4wXzKfD8JoONuLlZTr4cCWHP/EQS3C1wtbJpHTkXeOCIEeD8 + 6YXfBuSHXne6DxTl0n1AT+k+OD2/CEr3AUtTVroPwmdPuEj90B/ywPe19f1cnsK7OR6p+d18MJlt + KLdkIE08MkzkEcI7LVc3s/ls8XhYqE0qkUhLDXThOmnxohNO9VQKlTYQtgu6QxAIkOZn053GQhkD + Z9giNDq8BC+YQDkqzQESTylW7nS1DqpZVjWoBNK60wCnxhKUYyswOiuHmWni4qFLV/3YHH/J5fNw + y2rm7EdR6O1no24a2gNwLnhq/cnO2WIDtRxpQtUHOxPSzEuoahnAGNyZF73uWC1DUq5Uy8CnxLxe + nb5HoLpytQzOy9UynqQIOB8N4Z9A18r4ABwaU/VoyxWM7fr8GGcA8YtXk1uWPnzI81wtX66vxwt9 + JlG2KeRYFUnGfhD/qx4UJEWDShIAr9htCU1jzzw9l+cVrzpZoGJId+D4+rpwQ0LX0wyhqMl/oYos + rXbr2ecZPCqmK+q/jxQI9WoHt/d2h0jEnlx44+AAtuip79C2n5oZaCfjtCX2gFIaj3RK9MjRjASW + UniFnY3alj1qvhNoZ0fCxVM/bZdpqdq4ujt0F5a/Qz0kNqKje2B23o1M6XBsb/9acWdo0jJSNOBk + 55bwib8VS5A7RGe7xY3+SAukjK/2o9j6ln4CGdvSPRDf3E9QJItM3er0RfjUbwMcbdo4V61WXdhF + q+mhSurbfmYqc6SIwqfDj6jgaxKGsS/Sx17tOydAwkM60iejAcrhIpP78w0DTofTpZLp0XorOSWK + i+2gA/NwGzOElm6NTvCDhy289w1reHQ6dWTjqtiejvH6a7sQPuaHvMa+AWd6hoxH8uvZkuIXVS5L + K/qoVtJ1hGHw2XcZwyQbaCesKkhIano70C7Bw0gh1xerruabGtvK8HuQppXUe3aGHPV2id6mVlMf + oAeaZiqfcVOhloIIpjWHYA90QhQlYZnieA2yKbzegk7IfBIbVksFU7F38+oFPcjKEZlWGjUq+LXO + /pIfmP6+x2p0eJxHm5tAhfNreNrByM+67+9I6tDwAuukVI9Fn931BTcqikRu4NhOZwWLQ/Pg9pEV + Ks9Uix558aDOqx9EKdkGzVAzRDfsYbBA2JoDR5J7pRYqGPEf7ziL3N1R9LqTBq8olzR4eqpSOf75 + qaLAcx6EtgLPn414IAI25JGfaONjsyI6LKMog4qpcftlmMZf61s092NcdjEAvxhZJ7F7JHoNmqk2 + KkaOAhL/aw4fcI/Vz6rS6FA9u/s37si8JjFlBezQxmal4YahaLIi+mHKWRzeQ6E0EYechEQud+rt + eL7tI1jnXrJgjy61028IQ0iImAQ4QlFOhwBH7lexyQlRtnDdnsSfYDsqDCy5H8ne245lCkay20Rl + S3fyrCfaKMBfi6csaWcUUG1cjQK6C8sooB4Sc5ru4EDtNl5BqYWFXVitEaMLvt3zSDsn7o7QM1I7 + l3I27Kjd3Ll4UzsSh2Jk02Za3Q1KP9vCrndLWjQhMb+9CQnatDEhYRcVExI8pN1im8UU7qlX+1Sl + sy3nu21mnq1BAR1vN1ZvsqxYxHpKaqkYI3Uxv+MwZHrMcekJNFlUv3O2WOyF7G2BGNqF/EM/Uv6R + sWCcJ+S665IO4wq6xSV+718f3gnWAp+UXneSdBXlkqRLT42ky8qedh74WPStKOpGz0Yiif1oiEa3 + 5KCoq/iBldV6k31Hsas4gwr7D2c3W2+GxQDaGcq9092EJOP58ttgnn3N5hsq9ETh1lQZq4BsKVE2 + q++prOPvW1b1rJfxluxgqCRqkFeTlKc8FmUR+Xo8R7V007BRLOLC9pgVC4lhjFtQqURTnkBbfI+C + 8BA579xKPu5ndYAcrk79mihfmf7rD3TFyX1t6r7yiPdx48Aki4rIfwQxeclUlrWNZe2H31QPE+le + fgBnobW4nUHa8WzKEW121+P1M2ND3dzdHk2X8jtsNtHydmneDnBppWrgVwjgtC3YjvpO6+RMY8/H + ImoJGGnauGLP6y4s7Hn1UOUQ3Y6ZwtLQs2uV4THosnxU+/fBG0mAfFBpiLZ75j/2JFkEoE+Zr6TW + ILFCegqZsx9G89niC0ye1jtboxWkooH0xyNJd0e5baAYcMbDhsHmE9wiKsE1G7xOx/zfTPIeGWm/ + QF0FIbpEamieSv+asdVIvK7WM6dqtzh0JO/bjv0IxuOCRayZm7iDrGl2SjG3L98B22lRWFO+7lZY + kyiXC2vKp8RC/3hzUhNzm7JKYc0k4DEbYjFQZfR+c/LipHTTSOlD8wYSwP+4Hlfl76/jyW5J9TfU + Rn2EaPa7wWvgVLPHtplX8MaKAkGahIwHVYH89nY8krzpare9W2twLgfxXLAm2T8IQ7Rkl4Nrd+gc + nsyabtdi6C6opm5fkqdF1FC3SSZBM8BALcmG4mEgIzeUhU4DYDF+KGEBCNREJlHImi8qj6E83ygg + P8Lt8bhmWxQdG6gY7LazeSFYF5sR1cVsqySw5W49ATXCDvjNKWOIbz5RqItMs/lWDQgUwx3conoL + PDp5d/L4OSgvkzH0mk018lJlR3p4MEy5ShGlDwuRBVaeEJIO7vUauk0Zq8cQbZZP5SaVQkPdbnYh + 5Ck2UJZlaNGy1kXECEdSt24rMMRB3nr8a1vL7hUJxix/QPb78vL3pgBBD2m4Z9u20+Vq+tG3tVBl + sP2EtymDja87lsGWlCtlsPGpKoP96UO1DLbMBC3d1hHDfNxhxFjKVRFsi/HqwrrzbHG9vSmE5gxz + c17xPe2a3Nzq0ChZmf5Shd6putXbRTUFUsfpGFKT8aquiLXvx4louIMw64f7YQUspxzIYQens7Dp + amRcyPKSpauxMMJViRyD1T84Ou+TppAtpiM9KLyQNEVTQGg1H9/hJfclu6MME2mdO1/OGZcIz6j4 + YQM1Ji1daiMrzZ++M+fj62uCh15LsD8NXEjYf6im6QXG1BUJIm3hRJc/3MNtZu4+OL6emgB595Vn + qcVJFZwzyW8W2fW4LibMbLcxNl7IQIevs3FxGpwvjDiRXeU1joeajHQgXrf3yfjKq7l3S1dI7is0 + 2LkQc2/Vk4XKLUAU4Hk2oi2EcpGZqr3xR8ULVrNJhW//Dha7RWK5fN0tsZwolxPL5VNikx/OXotK + YjlncRXfngU8GCacp341gn6GxWBh890uF0uMNKfAnNvxf6GDZ3Z9OzYxzOvV8qXch7gWmNj/WHHE + D7PPom/Q06PrsD1g5LF9cVR9Lc0P9EfgPjQRSSxJveMSpdua6vuC9OIGDZ2FJ8xvCbNpGjnDeulO + bGAv9VSBP5yfMFAMp7Pd7QAGSsXkgD9uZyTgeaUXfqu+YXWFYdRxEPcUokCXHD46ggZZheE5qGr0 + ES0qARFOUP79fURItCR7qOJRTULD6u1Ro3Ml+WtBnXbkFv+z7Nru0PM9Kc48pcQvw086q8c8pWwR + GUeV66o9UBa0k+m4tqTsPKFH9XJo/JHFA+/pEwSogrzE1zoFfvKoiK7Y6pbUTdqgK9o3pH5GEvDt + erVhUV1IXxXNXcNcQgPP9d1LfFf2QXX1dHURF9x2d45+LI68wMjDktCkowXbQ8H3Ueykl8jAqOab + Nrfo080XTC9U99k/DI+zd+r9kAy2pkjNslxs0X3qRSyIx+TjxbLz29l2h5kNmBrYOEjn7z2mk71c + Idb1yDlzNxvS6671yJFytR45PCVucHH+oqIPcxYl5XrkTwQDTVgMBQOmruoPVVOyJkusPq33l9Rz + L1ZXVT1X5qNK8QKmqUJmSHTqLIFhFIVN3qg4DkRSwbjZ11U9tk2Spi5d2H4zO4fzfDm3Ejcth5qI + ojJ9rya7TRbTg314nW22Zk5fBMFQQoLhpkOcMdqL6+x5UQmGfr/ARpBZk1QNRLX3cLlNTQ6eCKr7 + 1Ed2cxRVaTjksx5ADjuusHAU5q1bicgROeNabdODH9NDzmZCAqHTnr5f0odTVBNOOL7/ni0mHQQn + bYWMkthkQM2PodN/YiJPdMgb44iSIdrFvOlGrkFvphMr6k0/VWFvuy0vQmcv581opd7hVwZvgJ6H + RGXMG2dkBuma6tYCRJoWvXaED6mjvXJOz3Xee4N4vme0nxaZJseLvKmgGtQOe7l7zeA+O2tcmEBE + iSPxfiCZj+/tB4Aaa1ab5vpz2pLTmjbuGnRa5rPm4aGCTnZx+X3FnRKrL6kqa3ilBxNL1Gs+QXez + 4wMIidET8iBLKgnfeGHECWNPfdYuVdS0cvbDmG5sR4x+TMLI+nqcmHKW5uyPt8W6hxRgz4LQB23Y + f+w1v3mB1MqvYxfSQxMp0SRmCixDFm2huW13SepTFPOgxqhDdHFck/FmMq4D0Nlv+0hJ2QKlDqTn + 2eZGiszArYtxDaDbyaR1QjH7AgTRQbVaGhbeIqxCMLK1WK6Pi5vl4fJ8P67O70/BhxbMJ0P9LfBr + adE8FMVg5pQRNKnkAdMZmlWA6ma2dQszRB4SmvYTPPjfSZ13ZCl+qGqs2IflCPQbRgA+5W1xgKa7 + oNeDp1mwnMe9Dp/6cVsWR43cOZzqpMTg6KkNn7BC09pug/AtNLXwOWMECpN/HsLRvhvA88FVjks6 + WU5lNFWxJ2RjKWUV9aU6dC8idZzh5YeCOOoNwnXF5zYo5b+7o5T/XotS/nsBpfz9q081FZ/LOL/i + 2ZMwZrDaQ5gnHy3LuJkuR3CZLDBvZPRuBOO4gfnAgNgdjAVhOe6AP0kH15mGvsKX7uZSpiwGcG52 + 888oxKNjDA8ihcgUKOYBm6oC8Gy9vMluM7uyMVlv32fbmtIVfSEIFb9thN91OqKPqk2dsaCDkpCV + gpiGFnwQ8LQg4CVLbe0k2MbZsARsnoMMM+Yz4P0lkvWTVwwPTauJ3cWhpuheSJMy2ZpFtGOkYCxN + pS9qKdbuo+Za1nHSWPdDkfd627EYdGWNBC5DPa9DRFxfLzdUcZOStAY7ld+Ps4S3rtEun9vRq7Wz + iFu+MNpixx4e4LxkdRx7aqalRFlH7DdXYMEojhXkoZqZvOPtT0OHMnQiolNQUXoYXeonCji0Otk/ + gWoToGiqkrCrJ7nzILvSbIhXPixj22UjkTnin9ux13bL0FMfdbJHwsg01ddY+0hg1TKGUA5bFkZt + HLb4uqPDVlKuOGzxqcrKfHEeV2QMKUWUHLZB4qdsGDKhAyP/uJoBbwS1Mk/NlOKoSdzD0HXM3NuZ + F02dih1KlVoo+ONqFXcNXT7NEVMSHkSV8lG7PYNskASCpuwLq4tKQalpZvqqXK8sCuMmJ7Cm6h0/ + nx4uprlvApYQuDrFiOatcuRmoz4cRlvffyJCdRs1zcVvBz2ze0X8atxpV5VA8jPO7RlB5/hynmGk + 91EsjCKAnLbc3gnpRc817I/rAthYW+WI7wNCpEPebXA0GWVGHku2NzB6ERjvKUtEu5g408bZd6q6 + sF2n9JD46m5xrcDoYeNOZnPppv9gIExlaQQyPvIE1Is4eOw1vvgH0PKQIHpNkyRUEXCc0o7w/XW2 + Gs9q7GSNUCAObff7BHgiNwPOyCj7PiGbVTdSKeW5Fk0SOK7p+HZ8ncGpmN3u5q1tBkcjnf40U0eX + 3AvgPQGJTw1byB0wosDOupL85TFaNUsJTX0L1tJCqJs4V7dgZeugfqayxTIQiEGAXWeko+gr4Uu1 + ygq9+lvju+erLzzwVvK/svJ4GqmI2siqKl/0NhbL5x4ZaNu9k3ssK3G8m+cnVj4iqwIFzFFsGhWh + 6xQTFkSxheT+5ZhKM0gtKFKr7M2D5N0jEDp05VDw+ugPOFAngKC0Tz6dd1svFglf3uRHjaNPlTbS + fpXodfTUT1t5VaiJq09FdWB5VOgZ8UyMqUbsmOkg25n4VbWQ3ofdSTC4mW22VFo429qmAR1vowNl + y2WsVN/oY2FhvEceczTnHS2PCSH5al6jZJ3dLrEsr0th1pxKQ+jukc1bfcg91x+6F3ETro+oNP9Y + qwN0vw53GarTch719uxASuEShPaYWjKnexF/3b28xwnSbXx+qlGAmdP45tvgt7f8xIE9tP86416M + 82DfMH3KwrbBvtTIPdhXdVIK9qWnSmW9mjCtsxrTCDDR/9pdU+hMtvg3dGT01pgHgZ+A3rrv5Vd8 + dFrTAnoi2MvU1yXWKASB//aeTvtMn/36SmuOHOn+jV9YM5N22p5KcAcIhKk5p5T2s8mu1xK4pO7A + N2lssSoRiBPWQQT2Kb5STzcqzhJy57fxgn4orov7oEQQVfn5MdXzEl/FMkAzt+XbA+gEfNuCW21j + t3Sn0SKvQEQK/3W52Y4K6YOFzMjuNwui9NWshiF8nN8PfQPMnAQTyNRCf+p04Ry2BLdIRGxb7TOh + oL6qSX4+u+6gbbQh92PVjISkpqPGwVJl+6EU0uJtcdx36js1ITygC1Db3N1p9LobHhBRLuMByacq + //H9q0rIDgswVcjGA3oSJkGSxsMwiSQ7w0v3lUtZ7iFVkgT2vsVcPowNU8CSV7spIVjBz/KdPKx6 + gyb7WxUkgdN9eZPxlS7sdb2G8X+reOA6Qv5EKVxnlbTJviB/SrWUx3KxDJbObRluFBhSaAWenJ2f + VYbqvbeI1sGHlnqAi4TmvG44zyn2Fv5H8KH6g5V75loyHNRp4G+fzt5zYagTu19OpKNLiZjPcU2v + ZnPVaLGDg6NuRtgDCKJVFGqe79sd3qeT94GJRxE8TnrIDoD5pSQW6yPa05ErVaRTnOraVXcVGKLQ + 92viHazx/qTSBj+xfs8BkmFN6aOmea//sDYU7hHdRTBBaW7Zd+gbxNfJoLKhDs3VfSBdiVTrfxHn + T1nLXE/VxlX7011Yyp966GAr2/vHIn3U6ILE91zRx5qP1DG1lXpZn8DXvh8m3rCnrFUBiryRq//H + dGJ5gPRTg49goD717Nc9s+jhkkQpeYx9luTy9Xg90la1K5gPeW9UdCkJWYeA6dlIpjXghTLNJuNj + DPW+IL+dxraUPW9W0Ct8xFCKMPK3rCvMxhGuW7LCHtd9Z2WiNx+OiOKc0GyiIzC7lXWmqqYX+0AG + XOuRBYwq717ATLeovCtfd6u8S5TLlXflU1WP7KwmpD5E/KJS5d0wYFiPLAx4oNGN3t6tlhRyCR/3 + 8eK1KYy7Bvo1hXF7A9/Um9hGLhGBE50HBbuZV81NdO7/Pen8vd7Z2jjDEyVJTiWgZ0FZ6HTFcO0q + E2/ZUz9ql4Gk2rg6y3QXlrdMPaTtXcwbLbq7ahNLy/4wTV4W4Iwj17zjNoCQx2kpKdV/32aoA0jL + YefSakGkkFeKLiTEiYODgZJRO6NZnynRx1bT/VsjKbas4OZ+z/dWGI6FIU1/cZf2gXOoGY5QDOf8 + rz/exC2LquWNHFlO3kmR55inKqd7daW89fuQgh6dnWlP/GNdQy0JeRoEj739oEoVR/4FdlgigYOQ + iAlB7GtXvjBLqt3Oo8lyB6SmBfmsLvLxh7rKAy2bZfPlIvcXuY6hI8hWc1x2EAZBTX54l6/8WQGY + HfzGLApTHb6xF+DrBgQn5Rf9zQHeqzch/icjhdWt0j1ij/WDFIawkkn1eJjyFh1HdzQAmeblVPvg + /YXPYndfB73upEspyiVdip6qEjHnH2XFF0uZEhEa/orKVPjsifDjIEmGwk+kho3s/j3FaeY5EppB + K8v4dnT54eTilebfQzsTE1M4V8t1oSATPL2leVZVY/DvigVZYIZXu63Mns/N8vM7mfG5mKL1WBY9 + ucwmKehzMILzEQ/h2N6ixqNrz6yW3K8Weq6MyNbWeFLKA7aSdgPQQcOK00TPQX0FuaBUPbrg2fBT + HgRRpYRcO3oNw8tziuXnygKfcLLhqxGtiIrrWbvRLrIXs5D/qz4jur6brxnoT/NM5TjZWcWpX4G+ + zDO2gxgztr1fcKN58mRpVTmIGJbFEX6gUGPz/lAD2c2lAxWzwMzIEPAlx3qgD2hrNSeRe7yZ0ASo + bB89HXlfFbp11Vdx/yvtuzSdB5sfqZooa7KUCHCaYcom2Wo//96ns4eqMhfjSZvKXPi6Y2UuSblS + mQufEts9ufhYrcwlhKhU5or9FLTxYcx4mqT7TVjTNdCvuoB7q575YA1Se+rAPB/cbieh9LLqVGt5 + hGFrfFG1saYTJkbMe//pNDRFrEKhjO3/W0bQnL8+/DEmrpwFQVvVVbdxRutRXdhgPfSQDiHcJkqQ + Wa7hMrlBcxI6RtZXy+8yPcpreD64hJYeNpfB4yaZL0xVBYL5HebE9INtEFC0V6EeohtV95IMKeUN + rIBlI2NZIKJFz32kAYXX5RNa46YCTbQwzZWLyQY0+PXizERCAVxUmFbicHdMyAkpzrZpd/aRiNO5 + iwMRaDRncD6OIULBKmo8o07ENEeKDUeK3yRPGW/HkaiNM0dSXdgciR7qDEGzPqub8cIr/16kItNW + eEp+ej8lufJqvIauYXFBPHK0F3dD1goSPXFcnAZPGWs1caqN68TpLqyJUw+JlY+3K6ZwJV/TNX1C + mHVaUfgPy9vxeuTvf0HSk+bEFP6VzD0OC+GXR7P1B1A1jFFxdvqkHGhJW0hVCbTuxFOTg9idTMBj + sqDZwT5dR+wUduDzui6J+MgQR9nHDKOQTjKk4eCfVVHB14+Wj4+5Z35qZNrf15tktOQ0qlnubsSC + kEci3/X97ZYmsZyFfpwn0KODyTCEHoty91hwgXBMqqOtnaQcC2CtCMmVgftlMTtGdoNxRGzPMt1L + 3/riTFW9Wxb7berd4uuO9W4l5Uq9W3xqbL6oTpYL3pYK/GDBW5YELIyHLAllvJcspWnwHZXtDZP1 + 8R5c7nCDgVQN86D/tlnBNgFtd4Uq79VyemeD/MkkmDtZuLqJkARNAh5vDHrwxUtd0KbRqmeMvHFQ + sYdUxmTbKRIW/asMIlkAfORxGvEkKVtBCiuuDCIN0FQhSxNn+paZVpsLncyzrME8y9A9GvjBv7xf + YR09uVPzkrgi+eE2VOgstmyo7a2mx3kyWUTfWt60B9VN3Gmy6b6t6SZG9GD6CU0oLgh0T1m7YofU + xDUMV3VgBeHSM1cly9BABYCJwDsiyu3XA00OmfJK8jYZWPS6o1eS12Rg0VO6oV6fnFQuKJH6ouKU + jEGH8aNhHLFE12R/t0Qg/psxMoLxFvb4eHI3H50uT7QJGG93uiBej8fV+6F9yCfoiKCnRJWQz/ls + hZA4Y5Ar0PlVumbKWMW51wuOG6jz5SsGg0NG8rtG8rtGGEwgv6ucb2dBIQZR07hjmVQTl66aDyM4 + urczK1f1bo1J9Hc1kMMgztgOAwQyzq8bvMxg6kpd0Lw0oS1HvCvFXPGzCCZRlWDBz8ojH6Gh/+W5 + bJyhjh1AZlWXyqv8idfr5bftzUABGSMEe6aKOGRwEy6W86FxUWzwEpwtJsB9lrJo1mo8B11ER4vI + 3CkFqyQ/cyPRihfZTtb5o0ceHhjja0wi31Nrgyf+8IpW2EJzsrVcH2nCsxaxsxmkLbW9IyO7oF68 + PoYHeycf3h7Dwp5h9QJi17EahjISlRjRQdHB55Tiezu+XmSbbkWO9Rj6s3orF4I7H3Saox7I3mPS + tb6SuU4048EL5rfMZCq0ck02y7ux0s3M43pJ6vt6MgngS79kyprhLbL/0hghlCqAJXTw26fL3dU8 + G2HuK3Czq3U2/qLjLzF5SAVRLHeoMcCVetUIxHB/6JiC8gT2jNR9MILw4g989WK5KHx4Bq/813K2 + qD1z+/hgr+BIP0fyFTzxTbijOjpnfzrWVdWHhoC5373zReBuaaHXneRYRbkkx9JThSRw9s8qMHeK + Rc+KcmzwbBTDFuHDWIBQS0frfIfz8dX4MZQifnJyoorKlWKcsu/yYpJAINkoL+wtiwVrJ8eGJh4J + qVV5DksHu3F2tcPQzats+y3LFvkLyznWqinUyqXqIDrrb5WtZ7DX1+i3xeR1DddJws9kCU9IwlFl + n2ffqxjhpp+yuO03ittBEDPGjs6wsujkcnbJ/mdDgCeJLU0Xyos0kLvJ4MpvFs9FY8AeAgrHrGIK + aljakf56tRHsmJk9BUzUqL2/1Ybz8OAZu1EaUtEOX6HS1Y9Vf5EccSPTauDwAefkHjRF369maODO + 3DGcfp6JwTetl7X3wr3luB4PaYN7Nx/KBtM5trhFqGrpEQIXRWafvwP67jYQet3p7lCUS3cHPaW7 + 4/TkohIiGLKglOWaPHsiBNwoYigCjBVStUjX1wQlSoz3dLyuqdikbEK2WYJXShyU+JkhXc/P/LCx + 8kLCotAvRwZLcsV4INBtQF7J406ssklhEDdQZ6Du+mGa/ss7UQMcagFohkICsizT1xR9htMxQfEU + KqRRg6nUyK+WUn/XAMJXd3lzyZFmW/Jg6XHLkkOakuRy6x1lG2SLG6zgiLwwy/6N4tgcRDZ44uES + ay4VgcxDQWScCrXq3o7UYeWkWQSrYGvWhO+XrTy1yIbiMcDC++j8sMoKrnkmtTlDveGgJ0zUEyri + oMuIp8XI7L1HOjydCjhkjwkgHZ0zA0w7BOYEVzd8TtZW/PalIIoWgMX1GJpnreemLYkfkW8TUuD3 + uwsmhDtXp9fdNAKiXNYI5FPF1X8/q3B1wSJe1gieBH4SBNEwYBg8qfBd0AKYw1Ur3v5l1htvL3VQ + z+FLReYMmbyYjrp9Z9O7uabYXFQuCivpH96pNY6hsh39WzsYP8/Wmy3wg2yFG72uu7wvDaZ2+vJ8 + pP/66Pdsscimd1gR8+bb+O7xc7gEbmZXKK9K2U3ZaCmGtzwZIGWS/CqHs7T6txrWD8J6RQ3Aw11h + zLeMC3kRRCrwt4l+5/phucE0rPRQWbBOxcmOKeyjSus17UU3o15bIvvvqbbU9sx5IHzJFfdusRYE + Hxx2fBgpHusnfhsei6878lhJucJj8Snx2Ffvz/HolJmsn1aYLE/ilMVDnqQ8VKkAZzqizIQjTIqR + ErW4DKMp6KUYC3H68fzsbDRZSowllfQG1/G3m9nkxjh8kGm9ukDWQXXvC24FydFf3a6CqMLS6d3a + xESfNUM5cgZ6QRLfV9ZO/XfY7rckqbjfClYOPUDvJ068J3eMYcB+7PcAqii/HJsUu1RDy4G4OvmU + jsZr9NSuwddLG8uJv7q2PWB5aAV1cohW2kyr8wDTIP/K8Wo1Xo+37asK/MgA2gNCPRmK6g+tztF1 + Up9wA4FcKve3rM50UAmrDywi7+9mdw23QccM/5Sseit4vjnOV9mbmhEb2MHobfjUD9qhDlIbZ9BB + 1YWNOUgP6UYrRurNFss1aGMo0ymhrwhT9ChH/HhspUPAy8DLyA5sQxSq3rEGlZ/4GjIqLoqVe4GQ + XEN2XSCW9iOmtEB5bROGfuBsO9eSCAn3+vd3fhS0KFUvX3crVU+Uy6Xq5VNVqv7DBa94q+IkqpSq + FwzExXSIKcs66wb6RFMZ3tR4bxlpQpWMX6x5FZu6RpaRM9qIYCD8mKUVUcYKUqgNdi92EGIOs0MH + OVp1PX2baJSKA0RzB0tOsDDY54Ob8aa4w4BDn8zXbCWtjfATX2lxRskOuNHmu+844++v+RP5HqZv + rhG1fzxHsYlikjYeLqwpKRsGsYyi9UlvyHldByHiAVxuHvFtUfMtfWRA6NNJUfvv3zHWImqfXneL + iSTK5ZhI+VRZjj7+n7Ci1IQ8KsdEjkIMlR7iPlcXAB/dZN/HwM4Xd/NRJGtxY94kGwajq2zx7+V/ + 7+BaIEuzXVzbjvKmggbyzUenGgLp/zy2bDvPBxL6XIWFFzJqtLVq+d/hESD1BYN/6ifCDyqB+IVB + WjanPYXDix0mAS+7Si2MF9lpmUOMs/XySgqcm9VsXQ2STP3Ib/C/1hMsfERTlGRsV7iukEz+5f3w + ZZ/P/p1tNFa9ggn/PJ4YX/JewG6sI6kcsjrKQ+IzEEurW1bUjWg4Gw8Ph9HfQgWKH6vipw1tO4YE + dqXaFBuEu0N6QWp20UEiDwK6vivOPA4+YVRzbc/5/OGWLK0O9IQUq8kJQepX53PZogCwuraiHACd + pa0VEdnEWQ+hDmw1RD6j6+s2m4mqPqIrvT4ynlaNDSl8EURYZ0y/It8olpl5jxSrLwtSRhQK5FEl + ZX9MqpHXF7xKxPRqi5fRU79VOQLTxnW9dRfWgquHtM4YCkOBOxu7uPFWgl0upvV/LRLHlUwTQldJ + fModla0Vl22v4vM4Tg0V8Q/UF2dzuGBwIF8xPLKDBoeXzjH4Cw+l2mK/ynGHQlwhKxQVOMJfEzJj + DDyWVj84lP0FCsR+rOCAsIaxUwiWc1Y06PpSG8NjUTpkOJXWeT4eY6Yva1vELQiXdmwvb9QKxKXE + +PKnxPl0zdHPy/kUsY2LeKjZajObw7fqqMOXqyvhTfE/COjCfabAi0koVNHr88ZKgc3h744E9u9+ + 5luVs5WU75411E8JW15T+qktjR8fWBmFCmA+n30QF75YZCrgy52wi/1ETZHeXKU911jptsm03wfY + cKIp5NDAL5uhgQ+He7Wl2CoO9fhIsh4VDyBFQorh7n1oRiDKRiTMKgado6m2X2bNe0UBBYqxp37Y + FgZKNmqBA0WdlIGg5FOtXRgPxx3QKUQCk6rA4QpNg/Sx5/yi1TMyaZ8pJh2nVvyMU6yme7WMLtR/ + eFnWjs16h28/3MgR+6m/zMcABCpqojfa1DEy3R2mr3MXP0Ra7U3Eo2j8VxcsbIGTTq87Wd8V5ZL1 + nZ5q6/sbUYHM8ZHpFCFz4mdPgiSIEzEMEszd0ZA5uvTex/nsegl3FXwkud/1zSxgzScYsIAAL9fy + T/Abmp3QIjLNgEvP5F2orOjXoiFAKHfiaNJFP1XMmB0pVMiDB3Yn0kBU0qp0zk3JO4MFwA1gi74K + bSxhvzGFC4tYY1p+BZtnOd/JaP06giAHhk4Ec29AJT6mwSvoJ3A3NmUWcMzD4uXEhU6RT/XjNTSl + hDvaTzNllWiqpkXMc8YyDBhfj6cFV9jQBHwAL5VVaq6lwR1miwZQWssyotCwOEW6Wy8vfzwp4wvl + BSiXTafgEWxstoK318vd9c0AfktWj4doVyOmDg22GfoDcLC6kUQWysEUCoV+4Vs/w8H5ogJ1td9U + gdDrkibF4JdNvqZIfrzeogSK7oU3QrsX/DRMPTUnJN93mFx3Pe74ILSoqjwdWef3HkPb5A43Ax79 + slFze6cPWaMcSAvW6qixUvJQhY86ym09xLuBIEbnYjLbqOWDBflWVnzvPW4Or7r8Y6rXorMu3E+a + kdK99l5Ie9VgLQpRCst/vPN52qL8pnzdrfwmUS6X35RPSRT68/wyrMhCPMCzVaq/CSo7MMmhSP04 + UsULLoo5xH9qOHuN4H+pMBhJzPlztQlr5JyTi/M64QZt8EmTcONHIhbMrwgc5a1uBx+kjbnjfdCz + LlBge4GoCkRHglH1H/CtjtPSFDJolFOihvgEe+4OyChod5YpOeaaKfQScBY0zgOP0CEmaoAO5QZ6 + JKmNgP8tJ3SnFAagTunjHKUVtyJbjfAfTv8I+icwYVlFcEPc3NhVfvvLPHlJVeXE6y8zARMIKkXf + +NwmZIo+aOaxoVPiyYNostzDKOonap3MDnsW2lV4OfrC1WokrnOzqFXdI3tvO+Wuk/KLxUtaMfTO + phEKdzBjbnm3ut7Q93i9N1M5aMNleBNan/9r1jGJKMfp7YWftqiBTa87XcKKcukSpqeqBvY/P1Wi + AZmUyot3sP9sxLH0BhvyNJJVHWUBoez7cmNHRcpQq9vlNJMIdKg2LVAiQfZzPd9NlhgUdgtbqZhK + A1+9uy0UiESQO9DvKEsZTUcSJU8X2MLqJRsr214GdJAPZIzlJdbSsTgzcB7YfijTLcfINccLaLyF + nQNNCpB20+UtIvatszlF12IuuwwZgxnSwDNvv2+rUYfy1I4bSr0ljbAsScpTHlfKsn1GK115VusR + gIUNkWCZBSKWBKlfJq6WwIl2+MNoFy/b2Ofwv2poNhw9B9osDONmU0lx3EZcuCntYduaEwUHp8Hr + eAr0rq2BdsT8A+AgyPAkF6R0fbiud+tJthn+iA3vIV8wod4EmHy0SIBFh+VdVzjYxxCT/LeygC00 + +T7rbUcEQdNN4X4Y8e89Vq/GUy5HJFOy8rLVm7vbo+nKPWTzyZYR+nvMRsidsIHFzlqSrxWaeqC7 + zyQVUvkGi1P2Rp5zZUzb7K4Qc3Bb8Pn2nSER5UlvIoifspbRh7qRc7ip7sQOOFVP8wDETV0cbTHc + sOkluxeEsEx8CinFFBqpjWCMlAX+292RFwnSujrFNt5DZltPkeGtEnwr9dJiLvScdPPA9h1cDgRj + M6T+iKaUuyz306Pr3RhRmkYf2OjxqE0f7kmLvWE9RInWg4IWCJv0uqseFFQRNukp6UEvP76p4Omw + RAQVPYilgR/5Q0xa9n2dFzXNlt/vFGsfRaM81KLgRB8W6wG/XF5jIh7yTeCUMuZbZcXCz/Plt9zO + NviWza5vtkVKm+co3MHkbgZ216g6zUBZxtX7dgPX7fIrfC5pStlUwjl9nX1d5mxcJgsi8NNdth1c + IYIi5Sh8nsGykc7zEl1pFXOicgDlz2qtgAkcvTorYC7ZN05dY2aVSMImd3AShiJKg5KEr+emKQPK + 9xtVNEXP+3susId73sj4IFBTHs2RKOO9VqjExcYmbtvESRA7kuT9xrtofpjmif9J2K4oomnjnvhP + XZQS/+XDaqJNAQa7KP1cZBON76qBXy/mK+at8T8o9MQqj8aPybNooXHD9dIaCft4WG5WCGzeCw2+ + n06vKNma6lHpRtBaqJCCyQyPrwTDoWJK3VDQBeNpfRDyPiGzUxmjX734TU+eXgkRjS3KMNKtGEns + m7ja9KR9dVVq4xxVq7qwg2rpIQlZ6+uxyt17U/iq8baQjec1/mVwAa09JCGDZ4UfqcQ8FY08u0Y+ + IoVRDbba8tTwoCY/gOjKQKHxZoIuo1ZUETCMpHIDiYISwMXNcvDm0Mr+gIyxHjIiOgTZYtAapXJA + nyDqrLeZxJ+Qv25nK2cikSFysJU8mL7ySVp7bNndGMUo/qa8mgdoOivPPSWNpaqE7nSGlYgQZikD + 8eTnYhvFTHMm8TZ56sftkq1UG1fOpLuwOJN6SPwIRBlMspphWUSVUCUee/lT89CiB3xIiFjVdQ4o + TUdzK2rY1tIQK0PuFvoDpmN8yrCFQZOYd2US3W7dDiebRTxW5Zr11DW6xd0NDe40m+xacFITSWO3 + QBLZ9PDlvHf3ylzBvz6+A7nIPZCcXncyWCjKJYMFPTXRU2iUsi0WQRCUatvFz57EcRimwzhhTF2+ + f642UbJS+r2t2JsYEWPRVWVCX+8W17PHpWBe3ggXGcDVggBJ9xQ9pBZvZIa7RcAPKS2UasA1oZso + vMjwX96flU/WWwNuJD26gr8614WaAmqeD8bzzXIwzbaUXKZcfEVgC08un1a+wyBJPTXeIg/Jv6oQ + P+OuIh3nrusr6garDVD1MLRHFINsqhFBCHB8i6gIMlJXSiOySKmaWI1z7KZq4P7EN2HtrsfzkZwa + 3WU7mMqfjoxC1uLGHXCodZC3Lu7zlsaNn+6idCW1H79Pb8sgICMVRt+Fv0me2Hyv9Kri6UtEaKs3 + axGCS6+7Wr1ZNQSXniqr96uXSY3ZG0tmlc3eAUuSaMgCEYbK7H1qkinGG4zeup4hEI3M+LcLXRZi + EA2n1IhPBpQdAxhlhWjlVxxvt+PJza2KtzQ9SMaBAOuTJehlGD+A/SlTdTZN6jHsD4e+FhHBIgwM + qETmFIvL2JcVbwrHbaCUfwzN1t66q3V1xC/re8iBxMrrgfDgSxT+q6BiUcDLFWSHJWxl3Yn3cFbc + kzs3N15HjGRwxs2N11STdL81LyDokLpZK37NMT0Q8zq0Rk63S2dih4bIDdXtUSSPQfHfa7/bj8/a + W2UpEcU5IenHgPPQMY03oc1p5rH+8LcmGuZLhYEZ/RCNrF3lSrW2hEJXYvdb8auJwuHY414KscaB + AZt5IVqbP1QbZ6gZ1YWNNEMPSQ74utpwlWRsQbNU4quLPp9Xl6cXnwZnRmjSNpI/JbHim5K8tNoG + PPV6CCXsLSNACJ4c1LhU6DEhNcIfR1Q0EPeEblethaVrtbz/84W72qKHFQranA4qk5sqpMpClZes + gzVJb+BQb+AgRGNYq/1LTVy3r+rA2r30jDbv9vNYOSrlrEzWs5VS1WGx1NUtqwibs+rZL6q/fnp9 + dvYKVPfVzdjs5U9Im3A8GMMCLj6XQB7nf/3xJn7qM2kCjDjVJI5EmG9qQ73l3aviBG13gUVxSNA1 + Zg+27YDqVDfPFZK4sPFwzs5wX98uMazPhUn20ov7R4WMp37xGIMkmuGP0D3mhzcBTVW0up+B7kS6 + /Z4d6aSU9kGvUYITMQGYVtertpufiJ7UG84ep/BljIlFBtjhyw8ekt5cKVEhWgQu9ahlxKxq1CJe + hDopB4zIpwY8aYOSHlycU1mfbJ3h1+Cn5RVWC2EyRWFBt8GA2vo3rFEgtCeLlA+Gk/amSVRv5fYX + ntlYRwZGGTqRqjNyt55RTcXBZjzvCBmqbVlwaVDAlfbhFqNRKGWqZph5ChUIKHCS7rF08I+DHj2k + araJXP6hYSM9FgGN06SeULEIqCy3s7mbU63PlnIzSD1x8aSZU31kRINmaTIJ4K+XF8Ck3P1r9LqT + aVRRLplG6SlJlW9O3lXACXzO7AKbInr2JIAdK9gwiII0VQ62T8W7QQa3SWEOPrroPtIhLkrEkxnl + 7+SNI9Fnikf4ejwfy3SX5xIpeoNQNkVw+zfjeeJTiQ/4MVhhm3U2n2VfMS9MlqSU18udevO5vGk2 + OV2qDoKq8G47mC4zChq9GUN79U6lLqA0uQK5KrJCe7ABH3Nhq3l/ZUnANruypjTCJOKJYOWC9/m3 + NkYCM95gyI0jrHnFK1ADzjK61U8pAbKmH+9n7aDCvlFPCtsH+pC76/jd4+Hp0tZbHjAZegzqFen0 + wEdkRuKe+cWtnHfvqlf32cXepP40pvCmYqLjsYIDbk8pklb28Q+l2DS1PclHTMflUjj2ct3JhA2i + taiuQDeSvwrqZa9270DQ/DUx/x9rrO2rOC0sY1U3donYawIm6U5xPwIw6fBqv9blV4EgN58sb0Cs + vF4vd3DzbxBGIVsRAHQb5THJkXffokbVEnhXtnHH3aUuSrC78iFJXePVPCIZ6uR8JAbj6Vh+kgH2 + K2iBtS9ou90J0im+jYRRV4SPVqC7QWRZkA9H2v0UfLz2IDruYXWMwkLboOL1zCE7RRgeFYcCjISq + ShaqA4/bRjTBvSkPaO0W7K7Fs4CuPsP5ofPGaqrNKxEQpmJXt5ijEW4vU0kVuBz3hbv6Rq87gstJ + yhVwOXxKjOT84pxXIls4D5MyuNyTUIiADYEzJEp7u1Q8RInUl6/FeLDBtBecB2XoM4BeVqyDfCsj + Z03OR6SidL5e8WpsymZx8eF88Acv4dMm5ZCPHJUtAd07CcqKUjG12UqWjEsBkAUlyY9CEYUllYbq + cqwHtzKmQ330UDqzih9nh4GmSVMfaZQyjLHsd0o9ubgGsCwWCkc1LVR9OfgJTgzqqHT6AhHiOEdR + SUTi66GYqeuRPx/wUlC23d4JPERBzqTZ8YfMYW5p+7UZnkfn+/cR3ZeY1Kv0DXvKWDsPv2rjKljp + LizBSj0kfrhZLVQVT0wQmi08+mdwCc89/KN0z7NUUJZmSnesTK2BN8eqjqDyhOMFBaJ4VpuZ2KQg + xn6QGpoIZ9h2C/VTROaYdKlO9QRSQklQ87123caCMT8sNGzjBXRue/+KZC9OveOEkoIaKqm82aeG + ursHXKjtE5ISmQH114t3sK/chSR63UlIUpRLQhI9JaZw+fa8LCOxNGB2CokInj1hGATMhozxCF2W + slC3LkOdmybRPjifxCtUvGihijn1Z4+H1equuZEDTYjmcpIi0+XNqms0b2MqSoGS7swWvUQjVO89 + p7RIdwxCZDVYp8M0tj8xz2WJk5RFabkIQLHWpErisfaYncwTs7CMzF8m7/3x4p+DRyYKKl/4u8E/ + Hys4uZFCnSvm7UpgffUyrDxtkVq0BdwD+vhvyC59Op0ECeyC0mM1CrTk5blc0ugt8S8koRKO7hRz + BabG1jsu0UC4vnkOnOHh2TBQ/SwMPLUG0ipWXqsO9tJIZcW0iyprqacqL914M1lSJdG8zqjrQAPB + CoaSMYh+wA6PHPSvAwzQt4G2JxD4NC0SKZ4luXKswJRb1/pNVG7jBdwT7mkp9LpbbiNRLuc2yqd0 + L51cvrLvJQa7MAlQkLJzG0eBEFGSDgMBG0EZDt/XQu7cziYwW5hVmxXBug3nePT+5BxYolUEZAA/ + 68Q9FCU3K1gtTB6bTf8Nl8jzsqZKf83my8W1XPDncBNMs/X1Uk6clnpHmhVOLZaEYJ6LMSzjJlNR + cIXiJM9BrN+qgijAEXmyKkD80G15ssmqt6XRhfOvL+PT+g2uyJSFIg55tbSOmYQmknHkQrJwgxYo + 1RkxEp81o7OHKUtZJcOmLcniIH3YUWFcukz1FjBL9MK2gYDC5PLRFXp6No21qDHdFph5fKgP7339 + TjVy1/TAOZDH4LE+NgRedXCby9t2A6d7prWxH7PxPWQTJoU2TOQVjWCV0thSmonCcF1URc1qu5Br + dD77qUWrsJecaTCN81nc4Ds5pD1Xe90tFjPfKLNKlx+qWdciUkHxbyEtBEndhFn7w5lcCAdcFU63 + N3Szl6ZWtkgIg0VTcdT2Kc+jONUt5YuETHZ1XNhlCPD1VKq8/PUHbWfI3yrbxMWGpmUASk398M4P + +H+OXjhLAbqBkxxgqJckAf2cZIG/zs7tOCwhApEkWAemKAtEz56EQQx66hD+EZFKZjnL0QyBzRQD + HtfLzzOJ6oPM6xa+XeYhwlLikLXR/q/FHIbybXR1fwCIfamPV7PlfHmNEqN+VksH/q9Mx/MUD+VJ + Evrwi94DeYpSGEZP/bBljpJq5JykpDuxs5TUU5Vx/OaCqcvJK/5stUcnb5SqgGAR5RC7+0zvLQB2 + HSnuL0TCFfQvggajMR2WT4ZtOUO9/TyVKWdpy1pcuwaV6VAz58yjJFSxoUHQIm2eXneMDZWUK7Gh + +JR40h+fzqNKbKgs023Hho6YCOMwSobwb5KkKm/+A01CHh4wrBY53ICWPTfRDI8uL/94rHcbbpdB + wcyCr/8hBpvFErekVGBmGytMsLBNZfmgbMSSS9rBxOf+2K6iqm9SDmFhBot7lX4rh0yULHEWxysW + z4I5SoRfKa6pRl4jpwu/HOTZRK2IDFP4Vu5fyu+V32oL06lfMncN64h7PSxWT2vl4a4zMZOgolDM + JFU0whxBtVQSbxUFDplTACTPPl0ymQdA4hww1ss/aEbkwQuf6s2AV+E7629wSiazjeIG8nEe6SQ/ + VL47zGkMDYHHLQTjICLBeIxnXkuflz9lJJSR0zidGEkrU4IwoBOHmw3Cf4zg9eqIexwUiZH71hgG + 8erTJcWw/oiJ6uUa7MW93sNd2okS3gzZN/gN2cGOCMF9BUrd/A4aqJogx8Mr/oTrGtguOTqbWX5L + O7Ry/qfEjs38Og2G+8qBilx2pLlsgb86UUGdAd88/7biq6KXAgjqj4LT02qEnrqh5OjsS8zJnqsF + mkgZXHks2hhc8XVHg6ukXDG44lMSaD6dfwwqWHJJEFfsrYkIQAwaJnD8NWDAObAjxLQoBiXq7ULi + xafVMjiubJZl8Yt4HFXtklV4K1ssiYMG9xbojDHzo0qlS9AH1ypB73DdqchvLFO5l7wDcbjs0ybP + n008F4JqlsQabhIcHK63Z12HEkb6eiE9ufpDhgNgg6BfT+TP0iZoZvB51fNbWv/nBah8aXMf/xco + Ap/HE9DSt9KRsdkBOaXw4X41lr84pfgvTpdJdWJbXGvHwlIkZP2q2zuOpip3tLamjwhVKHL5hDla + vRwbP3CsOLUj4uqOaFmrqHGWe6uVxUI1TuhndiSlyI/q9t+R36wvKp2VyUPWJisTX3fUvCXliuaN + T1VY78n7SlSvH1Q17ycpzIQfDdMItDh1UUlgyclydYesRFoCKWalzo3KtWp8Pr6tutWudtNSbIZo + CrNtDD9BGots8qVMqLE24n1Dqm6y3XR5cwczMNeFBO0AEd50gyZYijkR//JebTbKV7MHQvX5IPsu + Uwo3wOTWM4mQULDM6hDD5Xy5uIOvW8OyKCH8ebHcibTi4i4HOpvd+uvsK3SLsSHL3bZhSbE+iuqZ + PnCoIk6wnCJmRH6ezccI0LAEQTnnyrjnjN4dhamnZkOyyZpZc+PzKZn2jVqA+8GNQ6sIRqul3EmH + hFUWBVTGbfl9Nl3CW7tJl2onmhtQkP+LCxAZ/nN04h7Bphq4xbBp6uUoNvVcxbH9cWlzhYBFIA3E + cSWQLZBnaAj/hDiLUn5Ve6VohZGh2rDR8NqeLHegHUzrc7zkfq4YhC5P3pwMbkALl66qSYYxRpss + V54ovG23qXIW2bK2KH35+BU5Q8ywQll9hBtarjDyxw5zC5r5VZFY/2wGZ3aklVk1wzYcZbMkbQ2t + IOw65PLK3QwSrYUxVCwBH6ZBmb1ZBkHdt3fsdpEspxgj0nb3YHuJL52HxOklAQX5juLjPmHspHwV + TqVYeXhCjJsnZP6vBFeVaBNRwekuG7aBj2qU+AOSmIpLKBs0GlyaKcUWeLfEeSTASLWI9fN7wJDU + l2oSqcgBvbGmmQnia+nix6MiP9T54PWwUPfc655wOzgthBF4a4ypLXMjfSUsWMz9RzjrVL1l6x7Y + LySouz01ySssfpO0hJTKGzn7fnUntu9XPaVrejqTcDbf70bySE0zyupHEnv+ZFGXGS5hSJ7hkAC+ + YFrRYOESyfszoKJyxFgNPbtUSMudqaaqEgYqhJMb5Ds3WAdcxXz13RdptrPNUk+0G1XnuYYeUrKX + zHuk3qIS7hGg/z+kiG6v9RhBrpaXUPOJ66Ps0VG9HEgBott+tkY0yu7ogCoRbH7XfSxHo/+Z6ykU + 5ptGm9388249mMx3G7znOlOUnxdImkP49yiy+k6hfKc3F34cuFuP6HUnXVFRLmmK9FTpie9fVqsd + hMwOKxfpsycg1sYsGILwKWt04/3zFkSH+VJ65W92t2N0hcFtSumsWuR7yYaWXoB/PSm6tZXmdzut + SWxa3sLxlvCQtfofL6lsBd0ES9eJJKqGaucRHK7xG8IPS/EbRZQuEQMjqngybvdkn6dOYy4ifmUj + K3G7gqxphdfxIGnsoDjYXvPba77CO8XNcHlrdgL8+JI9HyAou9wxEo/2JlttJR7tJAc0kdra5e0V + Ww3hnymnf4T8J6OH3/E3qcrdfuerxyZsRBOnIgp68MBL/oBt+AeH/wXU7o+Q9unm+eCmvIvlQD08 + GCafHisrqu8uSo9t8+kbwxmOpLsvM+ZBpNrjUZW3bfVEt/qYo1P25fWiEu5DV4UjCQutmFOr/uMF + gAnJUTgyMGclMgopluCP4Lc/osF3nBa4UEb0tc7Ff44HGEDOaPZplxwwwXgOydzEK4ekrWZ4Z2OF + FRrCbQb37mLmmO12Px3tiYZIuTYrRy2wY+h1V5NyVMWOoae6KlLFycTSqJR9htbkMILz4g/DKJaJ + lkVrco3jYzjY3Cy/bYoC73aJ8zoqcCq9tc+3Y7YydY1qfFC2LlAKwfxZdfmOiEJ/X6iOd8B/tNgB + V1BHHOvbT7PPGZpBkSNgthE5jWAgOqPYQsLEUuHT9Z2s03cL+/zKmJIoSwCv01pw75NJxj3cGyYt + WEQyCDMRpK/YFinCzrgZr1qBN/2cSnN9lTRLhYYiFyJuW7eemrjCkKsOLBByekYHUQLA628g1RH9 + iGUs8Vt72yFexrQOb1x1h2jjaRpIE1JPZh6YdybvefTK0R/INddy+f5O+dM/DqQ7JlnN3gazxSLb + F3njPry2peP7s9T4REjDRNonIL+48Zjsc864f+pRsHOJynTLD+DDKZ/dq9c8DYocEjhfWw7pp204 + JDYsc0jM+0QxJ1tf6xjOCV6Oa7RaZLsvQGipzKd4EXiv5Hv6N9lKJln5PCJTOnyUlNZRx+3Hbgwk + pU0Lc4gl2XnfduMkInfafLbqZcgsYjwys+A63D1yQCLPA8b8ayjINdLazZ3RqtqROMAmk7SZVh+M + smMHDz0KUZ/6UIV4AzNpE+KNrzuGeEvKlRBvfKqUmpcVrCcexCKphHhHgRBpMIwCLI6mbJ93qyVt + ZZiFjxevdXrscg30J31jND0otcQzYcZR6nuO5SwfFGqM3oKUZXB24XPurlfT605bUFEubUF6qszv + r05ZDSZrCW8sYM+eiDSJhT8UaSrlAglbOLteWBK6zgRRNvVswqpKcj07sXdl0hgKxUB+C1NRtauX + h1KfCJk0bvckgNNVAXGtkK21eacgJFbq9WKwUl6vF25mH1hOGcPEop8VzaN2AFZUDkG9X/oFc7qa + F48lX16OCzLwpgQfSx2dm4k61db0y/PT54PL1UQazlcTTv8Y+7ncI48H325mkxtKn9M1iIlifl2Z + qOCNKgmJEV2UuFC7pzy5t0094kDXI47Imto4M06sowOZA/V9W9NrDnpqTWqv/T7083KcSx3/1Mar + GvqUEGvA54oFPV9dHP6yhyl9xZVJtgJKHUf0txSxjr0fu6igvemyjdVUODn1QSuTFZPxT8cO7PgC + Y1qUoDyQdxdwDbiLEvS6kyihKJdECXpKosSrD594WZKA/xfakgSa6MMgRBN9SKXSUZJ4tQLGNJrP + vmRmw1gIV3hApMEGmI8MtsWSaVgiDy4NgzuEf7DCbtEwsJjiYkqX7qvFFsURlWgK0zIfb29gLUd6 + byLO1WdEmDsdbWV6ksE9haa8IsnQICbLNQnhNJq9YGHNrvco5DxkZfFDj7AeiIE3oroxDrddGImS + NFA7YDN9dmh70Jjf6AdBGvhBLW2drQHK5fV4oaGlrJwVvwQfcZByce0tqSVpzsHUlLwHu7E8PC5a + OAlYSv59Rjfl/oVylwSS1CBR6I9sKZa4UGhGF6crYN/WcLz7j7IoH12eBA5u46r8tq+qbI8XIQkK + 2jTWwWYq+YWcxTJT2fsJ+n5RNYlOT9OIY5FtdxupbuJmIzUdFGyk+plCnOIK2NgzPxlLKLx7LtgL + 5qOVlYci5YlEneqxGmvtblosF6ODxYUfiGTmuJdc64KmqbKenwdvYd5Z0KrUsWnkaEHPOyna0M1T + XU7BDH11M8a6CvbvFh00m4sQNvTRpQh+ZHHagY4L5ZQbLj3b29lqfytl+4x9X8d98ha1XOl117hP + Xq3lSk+VtHjxZ8nuFCVobKjEfYYBnN1wGAYB91VAx+v5+Ku81Rdf4CsxEBbF57s5uWs3RWxVZSAo + +xLxFtYnZ7OCczuUUQvjwRoreUmA9KyEfaSWBTFJC1G92iTxHPbW9saO47vJgGssV8sZKruDRyfv + Lh5rcXL9dW/0SP0YS7assKnED0jZsI3TavKhe3xKUZZkgglRNY1tb2bLfMZrIThAK2mCx7WpGlnP + BIHfLG+zJTDQqtAXNwbSWJ9twfrmH20JHyjXFfCEbDHVbyoIa4buHdyHGjjj4Mo+Ont/+Xgo20lA + jvezceDLEoI6onQMBxl7QFPOOpsDB9jcbeB6odBTlUW1ASH4Ei0ImPJN23Z2K6EFpm13qocH1MSf + cmU8S+LUukVr18vNgJYSqeI9rKItvmaNN3JjJhqI0EUhi74ap3rpMPuu3fQVFvJzAopyGmFSouE6 + L/VD6kyuaYZ6cu8buSmNJbXPh45rM/3aoocpJYs0MMLWY2xFrB4OBDQuLaYLkTxlfhtZzLRxFdR1 + F5akrh7SJT9ZflcZ/Xh7Tm7WEnvRfN4j7UT487EV3FX7snnXQ6oo3CdJxKXUlvoU7DfO1ssraULd + rGZNKNmu/u+/y2HvEkx1iH+wKkk951h6hrIXtSX87M/ui9BVZfKkUSWXp2k3jSYOJ6tFSlwn+j8s + rin2KWz7/ALUX/cIB3rdScpXlEtSPj0lBvD202XFuxzytFQ0JHk2igRoT5jdlfosKGDywtBQPCMp + B+HAETl8M9h+Q9UXDss1/IJ2vGJ9Vgkfbm1OxOHXpty32xqMD8fwiNzCKELOkpQdIWI3EcslbIQF + kIBRoy1G+s9n140e6CDhrElclWn6ZamYaN/NibTMMB5PNB6C7Rvm5TkY1lD3TvcugPmUgexPhWHB + 5zwfANXllMK8xwN0T4ICtnBcemj9+fNsMkMbi92hVYhQWXw3g6vl9gZ6QauOPuXS6KuQIZRxtuB1 + 9nADayk44iImFzLjymi22LSqW2+E34BJmalu8nE3G0/pET1w8ivtW+cfQfIe7Lku7Rsh4nq5U51o + 1H15bzUcg4TlOAQ4/fU8oi1RMjAeYDz3RfSgAbWvypUUhn3SukqkuaVVGZJuE6NvZ6HxPHj8ij/1 + W9lN80aueB6mEwvPQz91tZsW6CByhy8o7SJWgba32ayFk+nhpkj0bqd9AKZ/RQrT5kIzeXvBTPeF + z8a+DJr/6/07xlsAT9LrTsKlolwSLukpCZdvPl1UhEsRovhYFC7DZ094lAp/yOMkUsGzRWGlWCzW + 4ERh4dPselwtpormvIvx4rdPkwBbyogfLKQ1hL+sl7vrmwFCGeqUbjIwKtrj9Ra0ruHgzXbNZfXM + QoUBhYlYhKalNLmv4w2OgWAMnytz3cX4mioDwA8v8qi4MRaTNG5qPQgt90K3fZRu9UHtTvz46NKt + Fp1c5lVzWivkirSEt3d+ZodAFknmWHQ1c2tblFljGEHEfeaXhNt+9ksJY+7N5SutLw9VLGS5VuoG + /c5UguLNeMUcd9A2my8J3mAzm8P3yRRLpcsiE6nZUB6eKxOZEKYKmI5QlKWiO0YrsaEnSzJSNy0g + ByKVoOkAEtYFQk5QqJ8LBFkn+schv8lNJwWZmmW7R0oNn8NCuBaKclUXRLWHeZPfi6M2JlRBwgNv + bz5zRhOvH7xz8/uMiWEpQRBgiraMDpLAIK0+RZYtwDcLzG9/w141KKdi8bUr0LnKvJ57zBeQFF46 + dq1lrlCXAOS+u0GPXnct/4eUq8X/4KkqA3zxezVlSfhJufLfKEzDiLNhmMahxmGg+CmdkQ/f/GUm + M19Vsdz1l6p8cmyIZVHgqA+x1CyPonp/Aykug1WDLawGV29uiyqlK2xJxE9iHtWHSHYJvywa3Kzv + OD788s3Z0AqcrB15oSCpPc6UlUt2HRhnDRIr3VzLdb31MUraT7QN+tAQPypAtGscPIfdm0bsX95l + eVvoD1DboyiDldBPb7J8rdXS4yi+AGvYImRGsSmGjmKKqj1cD0+bkcRAb2sVI3rYnILLpy9CvbxO + DXFZivLCntVsa2PsTrjXMNTm+sNy32CD5l3mZAo83gwRRsYMoTZVy0v8UGDrD7qJgZvy4qKXOW9r + akGR2kHG/qPJN5qmH4hxU/hSFzhqmhjMUq4gfSZVq6OdlJJkP1z4Pm8h9MjX3YQeolwWeuRTEnpe + //FBVGtxCV6pdzyKhACGM4R/klDXMpD44V/LVV9M2abiNTC+vYVJQAfVUkUalGswfTodpE9fPBVi + 8Nd4/FYhBFsYgifTO04w8389xRhfqkw4HrxZrQ16FYhOolr+q9a4aMXz+baXsXgTc9h4gQiqDtEG + Qn4joYCniaiGGx4qyYXFf5xo5sCTs61EXxnstnkZ9OIwU9jEjRJCLclGE9NBOt7+fWJtE4WJj1GB + tGGG6DqFba3KGaikRDsyUEYIT7Px9kbutGtT0WWGftTi7UqdFP2pPe9C7+TTR5P7EvIE5RoWKnwR + +qTd7V4jRCUw36hWiu/Urq3rvdw5YOeIKl8PwEMgkwNCllZXoWWtquryaF4eK5/X+QsWv2L8qZ+0 + cXrlrRy9XoVuim6v/HG93+vD6Hp+N1lutKipz6ANQFakLkTERJoS9k6QWOnOBRn2gw4+tOlXJtAR + DP1/wWR++pHRGzvREFKcvcTEEr8ViJRu5AojZTqxgKT0U9rUV8j4S+lRdc8seoilFyUKQ0qIksl/ + nUHrbN4tXUiqDHGa176FSchJH7Gzfpzd2aw2ldk6e+cnLaCD6HU33BaiXMZtkU8VbsvLS1GBbWF+ + XIZtGXGf81gMuS846ou4My6tUnsvJVInCh6XxqMjXiu5i5yKBX/RFuQEmddwefZBkMvo/KXQgC/T + jahIlXlxm2rdJNvmxRoxvZnPA7/ZdlcHdB7uKVNvkcuNXDWuLUuKEwHfZzqrp1r5/IqUGYVxOSN6 + WDda77RclepiNRWr3y5nC7GqnV7LfyiL8uUHiZgeniNcxCq2oa2YWH40eQyN8w9a235KEA+UXeS5 + FDo1GCxuMYRhx507nW1WmMMCw5wt4ZytEJFNS2EbD98xwC0iiJQHktvsKB9EC/PNL1FiiyGIsf2x + wHlzGOe2xGI52vqt6CYUd+OXaC8J/Li28x9vI1Hcm5lCSsFJ8pQFrcKuqIlr0JXqwAq5omfExVfr + jUpqltXNs1HuxV3dAVFSysgS4x1+BQayYR4SxYtchJzqKvnMN+tPQbg9AzfCFlMBsXer7RJF6L57 + iJStcYWVSLMC7PwGzY6b8fzr+PoY8TRiJJ7+A6gtll+X/0Au3PtHcDoKeSewgjNVExj3TO+FmBiZ + iEvTBZrdMt9FfZSUYoWQMm0JPpZqEPDATjY8Fr+zk6D4kICR2yIX+5w00dvxNTp3QNFCah2N9HFg + 6knATs33z3Rm86A+MmuO7+vXMHHrrX5s3Sl9s1E5p1cXLGxhKqfXnfQSRbmkl9BTutH+eHFe0UuY + 75fqNMTPRkHMo5APg1ikidgPaZqtgX7vkKZHxC7+AtCoMLyAUiNDBQH+IHnnvWGt9+FMgxMepU0n + fGieytro2t6MZcqv18vdquVtBxyJgNFRJJguv6MbtnBFd2EG3NQLhYugfb1Q1ci5XqjuxK4Xqp7W + 21mvljt4sJXpebal9cV/b7l3hf9BQZbHgtIM/FwioDDalrsi9sPUqFUUsrYBLTi77hKr0C3pIW9N + IZew/2d4HmHBkdBW2kWBN121rQHsJ8y3PNNWClwLDVn4AZ3b8Way3MgCtfkCuY4GuD4ZV8fb7Xhy + c6utFipOeCNhl1awr2ENVxhEebWcuuXdByETXM87foHrYjZiRzDCjtD0TCyzKq3YBnwVxkaiBXnb + ZnhFtkoX9+OE2Tt0WIjhho9zdkZ1o3SgftmPD/FVhQwKi9ySwE+KEU4YgYV22uPtRf1eDCMyI+2v + lxd+0CKlh153Eh8V5ZL4SE9JfLy4fC/9F5b86PMyLFT07Eko0jhNhmHgB1g8A68Xu1yVVB5k7cVC + 4SoJLC0r2Ck4CcJ9sst/vXqKjvHZ4BKGUqHyfACSE8LrUFo51ka8ms2lQLBbSJxJ2KbA66CntfQh + VyjohJyLzS3zD6BA0VhzEhoEw5Z4o2a4dA7rGqUVWPNc+8IyI9vZdqcYtOrKxpoSsSjjj9f3UAnz + NGJnBccpYI01TTVJ71dZUE9uWy168yBIekkTFyj7yJvJmocmeld3g8lOInCQxM45/VmGcyoTSmve + +XOxS6Kaz286Em0ke+CvpLub7d5O9Q8VTKDzWA6U1uynVKenjqoc2eET3m4xjiG8784JNGARS1na + FlhUtXEFLNJdWIBF6qHWUNC+3BjtXQwAqQR+lt49X30RgbeS/8XwEBYot/oRIc7upub7CtCOmVVc + QPKiOlCkMjN6iLlhPRtb/67h0O5m2w5dHc41uOd47r9fwDQLTTk7/jZpCSyRN3Iuaac7sYvaqacO + tezWpcLgeqFfTz6zas1P3RtGKnGWqEilSK5hmdIR/NOV4l6zPucEOm1uxgLYqPuV/nOYZx6ntZy3 + MPgeanY4TEzvYgr7f/OOM78FRLF83Q2imCiXIYrlU1JG/zr/JCoVLRjnSQWjOBVxGg7TIIiUKwO2 + zNUY87CKQTRSFB+9Wc6vZ4XgZgzNIbzh3Mqmg0nkC19hv8B8bmSe/Y1SR6azDbqKiBiKieM1lbVX + PpPVVlQLVtDb4xW8PN6W/R1xankTrGoSnKPT5kishkLSXsw4E0eRy4P7UxbCzRuWi0Z8b6gZkTSB + PdTTUZM/ugUuJCPjayP8WcTSfbFhmranvlEprrBKv12Mr1T8/BA6gx1aCLbDVSwDPchyV/LjkIWO + tzffxncYni+HtynvMURHwx2Gra5206kCkFjBFlIvmd0lj6cptE1/9eQRMCjALCbF9mjwA3JLF9ao + fwKN2YCcODupbmo9zOoeEmsdVMMjoRSMPAA7Cpvs2YAVgjU2fZJMSRenBe+M+hnUoH4ud9u9QKL1 + twTpJgY1wLEVGYLLPKzfxgemoJHKvdV+6FWzQC4qP6DEaduZTnpKU+yIoaDFg1jZqlkat7FV4+uO + tmpJuWKrxqckHpy+uKxIB37gi4qpOgnhBmXDJOQiVcH5n3IbnsoO/6oRg04/vhjcgtj5fABq5w63 + lJ5putpPrzbVm30vvK99zQei4ZpPWcQR7aifqIYmwt1NxDUUSxbibfOs4sWWz6zekRuq32TawS7U + svpmOJAvLBdW20H4j9FuoRvATp1n42m29nAzGANw5Id7DMAu6fWE6VMTXtzFaMPClHTLFdyIaMde + HBn31xOG56+Ai723tlO/OPWhH1EY7WSZLf59d9s17sNUamJJy2o8uomzPTUpV+LRz4hDrlcrxe8i + /1JaH9HzXHHjFHX8vS9eIL3i29gBIcGnQhlXCbPd5gTZfLnoEuLRmwLfgyumA+jkkV4OziMeFfrM + l6R1AbWH7ODQx0aXsTqNXrCnftzKZkZNXC1mqgPLXkbPdFbASrkjPp1fwCWwyiiPW1rL/gh++yMa + fB/8EcImn402i4sP52Yatf/pHCh4SEZWt2KJygMQaWLkSEQOk1DcK1hYYDJDdHzSb1nD9DWpVMfS + PZBqQ2nhxxjikAgFQh9FJRGJr4eiP+9Hs4EfbgsMBBeW/b3dkdVUopBY0d7t28FaiJ8XJCrEtcNt + yX2lR3AWtNEj8HVHPUJSrugR+FRBqr09qUCqwdXjV/WIlCdRMoS7LuXqXj0pyrhvkU9c3iwnX3As + crFA3zghZU+BrN2MO4PAFix4PARFpwreClO3ytaY5ZXL3nXmPOGzpIzTNmykX9EYPi/nlXTPKAgr + ZQoOU6wpAmkRTUMbt+PV+bCJsHe6HOXfL6E3cEPKQMe3m1Wi0DDUxKClDpSLE1sRt5BZ305ucKkK + WAoSEVZqBORgpREDqc1OQn8NbnADbHADeLipcn2Ec0/NUfEk63l0ZvQ4H6SXONTO3MuP2xCqK8L5 + I0oI1NkvPGmNoXJSxcWzt7oTV+5App+I93pMy+ONOvJUyzndxwZchtOR0l7livlkM85JtpmgNs33 + XjemPhcTnLeDiTBtnNUz1YWtn9FDuj4kDEmdGpY7bIG7X+cqmEUXFa801pVT+zEyt4I0uUdTryuS + z/68yLRQnHWzW39WVfDuu1KwYJzMq+PF5AbtEkcgm/A8jSQ+TZ8y0TKNRDVyTiPRndhpJOqpqiq3 + 2yrgnjxy89H5+7OXiJWQBELwx942w3hNPJ8w6cg2MLRTKyhyM4+lMnIKtDwkKOtZsITqWUQpxZwU + 76eXIPVPx7eYZwza5u2u1r29D3egK81mXMt2ySzNdFLj2cGxYxLi6gYW5Lfxgn4gc8qsXQKIH6ic + RkVWR8JbuJvAdhq1kibCjAW5QkKruD/VZQ8hdUroM0eElUbAaFIjKeA3mN5gs+2uZv+9g+lYlP+O + 6hHuZmksabSpNm+SQLCIWd92fG+d4Bwa1EircEi2+JrNlytHsO99ZUf2Gln7kU0wZFcSWc7vzIS2 + EgECEaTWOIi57h+/ZqKUWfHxgiUtMivodSctU1EuaZn0lJjmu5NLdCqUMCxjxDEpIgbFz55EMcxV + Ooxg4IGSE97mwH5UMOI/Ty7PhzgTcyzotMZ6FbaX6t14w+J7hfPG0udJFW+yfVYwS1nA46iizBpc + 3YIFug5pKPHTplSGFLR8kdTjgHfA6nYjrIpbFIpc/wZbEniH/dz6BBY2JTvX99QfIHgDOrcfgWjZ + ElpclkPQUS7WRLISbulBWlZV6s0tXWB1BoL44Od6J3JVDDI3ySPDgiUA/Ysn6xX/TVSMbNKOQCwT + 30SOObnJpqUttHluKt5rj2ZO0pBa6v2Bpw4xPwtwnfi+OtmzzZfldjs6mU/lsd7cLaZrvGONmoBn + /7En+YnB8Ix9WRmxO6B4QgbaEoq2Q8M0rlgSSgvmRKcTSHjdLRmrvNerGe3HHL1kh+FFWxTSUN52 + dgbj2cxHVjrEdQfbTZ+NKKakliO3zhx2tMjUqvpHYZD3EoyCDFyPvJHj7x2KvuaD//ddXvTvLoIo + Oh29cL7qdQOny95QL133+rmKXr14zUY2arUQwMqToARbHTwbMdi2YcqG+G/sq3IdZyhpYs1VaWzE + VR/Bbl2tpFMHNPP1crxej+9GOKhp0UwH8vQcZhsjKBZTbIilkb9h2JLiOHdwBsZrUCJxXiledb6G + sU9GV1XjtDo/+bPa8JNExNYlrEE1HiQ6B5rxI/hFbxsTsM9CgblI7QL2dSNX96PpxHJA6qe09jdF + KBZt+ykV/K6457X38R0L7Y44/JByhY7biz/PJbXSNdi/ZZrlwbCYn5wyyaufAp97nbmkKbpDWR0V + WdBzQAAXekN1DIs8IqTAPTlKRTyaT9bF57rmdYX5Chh6PSRx9QEkwFXuRjt19427uvumVt19U1B3 + P529Z1UgqqjsVU0xOjPhqT+EfyJ981F0JghBeai+HRn2vBI3hpXDtUVjs0I7r55ACtzGKZzdFgp7 + brK1DuyT4PgSArUUf1YCDPg0u2VVfN3DI7EV4TBpVKlFGsdaEW7VQyXYHb6iBuMX1GzWqNBziV/M + mzB+D9Z/SMJoL4yuH0RpFJaBCvbG/5naC7flhI8ghMly6a0Uobpn8oYy/2czGJuZk5rcp7PbZEV6 + YJ7k0bCRxsjZN9nWaVPBHkYAXjg+yOTG17nlGFrPFjCIQjIeJpbgyLT3a0TACGMk7cmzZpJEAvgZ + r2gVPGbWD+8geQzQF3HEFXdk9klfCRpyBxTpqEWBFV4ejCr9Kd004h/11sMeJSsKfb8m+slahGqV + iV9J8HKLJ25FkqD7DrNfl6880qUoWbfbaPZdBk6G9nvqqrnmCScb0r+B6x2BkIoXUC1j2VsrpRHN + rRO1PSewL5BRHhv47DdJuwgG3cQZPps6sOGz5TMS8q6XGj778sPJxStP/nfwBp56+Cfp0k0jpXce + n7QYHeBf3ajKM/7qAq9FKyPTKePPVaz/qWmJzoq4CMnUaaa3e3xYT+EoPzvn8CGUuPFliK38Fjhg + 5whPma32R2IdXHHNSxKNOOeLVohz8Lor4hxSriLOwVNtJn1Rjb7lfhVwLsBI+nQI/8Sh4jqv9hcz + 0mdNyvE2ItnFZI3BnacjvNNmmKOiABkn48VAKz/j+fwOw//neNWpcrJ0IiTXVi1AWpfUBlRGFpcB + /3q6XFxDPxlW59ggWAAuxze4ZQbLrzAVdGjgr8r+Ol3DlHxbeX/qsuKGUVARuWyzu5WABnpw5GjS + CemUyjuej0xZcpV8/kUqEZSmPhzAI3R9wCOpdWyI+jSjWZDjkzBr5bAro4VgNZop7uQpDB021xoT + kKdUmCYrN7PCaeUceRenF3maXgB3S8+Z1oISbClobiTv88Yq8T1AJj8cLqFZOEuT4mTuH35fwJWc + 6jGdXPg8dWcj9LoTG1GUS2yEnirc87MK7jlLhSglA4tnT1gCf4mH8E8YKDby3tRWfPnHOQ98ubsU + KMTgareV1aHHuP0Xy5KmRLW8QJcH7R2O9uf5bglHdVIMEXr05vX549HnHd2QNjYw4fBK1mI2nFT0 + V3jKZY0RXV6R2MR4DZ/8rQcods58xtMKMOUDctKgLzf2flCseYMW0Bk1QB0M4f+/jTwaLy7gaLof + DXrd6WgoyqWjQU8Vpuv5u+CkcjZC3448EsGzJwJ+4MlQwH+ZqlX2wdyQcBZ02SL49qK/wKqJRb6O + R5F/+bjq8RgOFtl4jbA80rc5IVZ3sZoHLyg9oxk79F1Apa7gvoIfm0Fdgda49nxQBmWTK0YFQb2S + 8Fjjx/ZuT4LGRPgwTPEs9Ivv2tTBcbn73i+0lnDMznse1cmxo/LUQUJfF/z0wvApLt1XIJ1rsSbt + BX62PX5Bj7iz981w7yddOtS97j/seydRS1J/Hx9pj4QPh0v1IU8KqqPz7p0fhO51dOh1twgeolyO + 35FPzaWZvKgU+ExRDS/F7gRxEibDIIm4Soq4qARmADs5incljbxLMqt4XIeqfbtTC42643wrPUjT + bLLOZLjQ+Ha5QwUQxvUZRNcB4j6oYRSu0qQmHuh/r1K4Sn/5NfbkBjdOwzTaB5l+8NT3BdRxNGbw + 3/cC6YdLawbLSSsBhtci655ed9NKiHJZK5FPFXrXx4uy3Y+lAY8rSgkTYRqJIROREGx/obKrOdCv + 0Y7/hiGMMDuBn4cwCqHUTB63sMDQ645qpqRcUTPxKS3o+cnr6oLGYVRZ0DgC9TIcxnDaQq6uTAxG + pChqCssagWC4nMyK6skQyxhjTPtgrM6lFaQPjAamdXKT3eK8zqmssmXJRcjWGfxORw059eX6avRe + WhspQfEWD9L5cg4DGNzAEikYKBnnsbGrLH/ezedF10cp+iOvkDXKIQMkQ1R79Xz8uQoEcTqdxOI3 + /FNd9A6LwrQJO47xGDhEVE3HsassF4CYVFpmXSXwBDSaRuQJDrw+rtiN1KQd6q0ucIhFadAIVWt1 + Z84PbpcicVxPNQJKIczWpcrhUWNpc92Dd4G+ldqd99zsPHvf3dN+e97TTrMSTCi55Pwl/+0GD6on + /6NZSZBQyJAgFy1mxXasgfYrFPeW20FrY+VtVOFE+Y5q4+xncPkTZqgM6vqa1X3Nakk5vUPsNXd7 + uBsnQ0Kw0KW9gYHf9FtVvH9kc+Qt1Q3SzJdaTXqkkkxr+GiPdA5AEqaUHV3dSM7MsZWqHBh4AB76 + T33eDh2A2jiDA6gubGwAelhfYbL8e5EKhv37jHvKxt8D8kQrEoeAMNJmWt3dfD87lkDvmlAFiPui + hYGFXncMEJeUKwHi+NQYWHhUsbAwCVpgR4iPQkxvDIbwT4DuXdxn2jgMrFRLzvruHcLe3CpUCjjA + PFnJ2xJO3xauVvsQglSn00BlkhXGiMCFiUVk7RfpiG4Gf61vGenpf63R5z/GU0wBBiTdFaHib0El + n03Xu+tiCIBSVa7XMBU1NZX/jqqK4FFcUFWivDzKa4bVaVuWR6FG7uVRVCel8ij0VAE+Tm6UZomC + 1Gzh0T+Dc3ju4R+p2okgd6TvU8akfaNTkxqIiJqyNIvlYuSSEntctd2ja6H+jMInP7TuZn7fi4R6 + 3b+GasVLd/X+1dS7Plal4X0euivo9LpjaXhJuVIaHp/SLn9z+pJVQ62SSJRrwz/hIL2G/pD7USJU + QZU349vbsbF/KUtn0Uw4g+czS57Jzl7z4aBcO2OmslonuSyMJSThazDOYroEbYtw+xCaXsZLoaIk + 8xawx2y9wO+2UjTwTWTJW5C5ZqBg6SIsbyZTVlWya83GaDlsMhsnAYuqGu/+b68vorIH+73YiWG+ + NopyoZeSffoQVe+XWj1PblSjnCY87s2dKkoU7Fk97FutsS87eMQS0okLpbf2Tz1v1lqackhERLjb + UuQYwdq5Rfz3W91CpWA4noz7Jn54YZzLcfSD+3iv9ThEYqSqMG1fc47aOMtUqgtbpKKHB4ANX56d + X/6lYussWihhpUIBZccB4fYtF/+1awUc30GV7IQg6CbBNbVuo6mlCrlKsBZyA73uiFwlKVeQq/Ap + yQ2X55dBBbgqQcy6EnBV6iOe1TDF0PvQQU/7vNwtzM2S+/zkZQBPlAT5fI8+p7Wp5RqG20dYZBBG + 3E/DihldS7MWHZB0neg8KK3sQxGDEb0qK+lD/prVary2Kfp6vfwGNzYs5ma3ytYgBuCirDbZbrq8 + uVvdwM559O0GUYumSzgimMP4dTyl2PnxNXRqFu6xjKvFVz7L+ntfxxscQoHUXPVGabIwmMF2eU3R + 6VJsOL+ZomzXvDe8y9dvjBSBcQfer2KfjhndSzWz4S4RhMoOSUbmegN0vthtTd8PxJrcMtCMPOk+ + 1Z9bZRMUZA8aag/KLeW5UJw78PM8vfQpC1vm6WET9zw92UEpTw+fERf+km3rquMU72X7Fbvqq+lA + WmxTlc8XCXnLfh5vt3dU2fqIikbGPcBCkyN5AFdzP52IXFnz2aqXgQk/IIC0wufuq2rjmnIHwiMJ + 7ljBSIfytCt8+HOs5+54Jv9rlXcK8EmI5yOg7FzWFu2qjnSqxmG+ps+CWkEY+3LtG/hP+02lWSvT + rDXk7KnfjrVSE1fWqjqwWCs90yW2Nol2fgX+ZQ0q12XiNf4BW4/IEybCwHO2c7jX0e5sNfnFC2fF + hT4RilJWm+0RgevB1NRy3gr3Vbgr4EU5xxet5RxftJFzoIOKnINcBg/jePpF+XFA61jI7BZtuid8 + +iRII5aEj73K30+gqYftJWgByIh0GFUWOy0wjmOoft6ASjUs2sxQa5W/StYN4sGxIkzECC7i5OW5 + owDTBAzaSS4/LFm3EAE6A6m0AMRr6TjqzewZ+FQstLKlmu+5PVUKOlA7YJ0kueJkn2GxBTidA7X9 + AobySR71VSyKg1yN/0yKW2dSMeFk3Sw38L86ikP1R1wNUMN3K6z1BNyNUBjadZdy+v7CtjtuKoBg + juu/n0V160izeYowfn8BEqa7IZJedzJEKsolQyQ9VYbIT39W/JciSktwuuGzJyIRwudDkYSy5ocE + qNl+VYEbf65u4Cc0KsENgtatr+M5XoAm+wUtUhpGgSAE3j568nhEdaI2MnUbw0VgCaazzzB9Bqca + BCQT3yv7K1sRy1AktlUybbQmMo4LkFSskqaCu00oakQYZGmQsLRK6OZuusZ8jZGBXMCTrSpj/emr + NHfbtsh5o8c0CHiSVKrT7e0kP2trte+AAd1msMcWM9t+i8B+zKVnYy01mBiysK1xXtpQ/81pQ4qm + d6lkxrF2e5pNUp6o4QDDMfGtb8vBbLMkYMFHpT34+PmAnszyTQWT/Kcmp+TIbKP7U9sH2uuF3wy+ + 3czmmdrTrnQUIoaH50kbSIMoTPqBaWKkDi+7gzLhYmCThnWrEqsgEHWl1Hwxs1D5cvDqyxPFJnAb + zFWkePcvBuIEgdKRTG+AS3iorfmiAdkn9k9iirS7hgX20EbOQS6lTTkdslbDmCDjpITUTOMoXKj7 + A5VCA6X18b+s6UprwwJkhHwD2/sFmOBok0kjus2RhrWvN22mZitFHyFgoR/LJdGXVM7AqqiYexEA + 91fhTfPyUuXvdrsIHZifFtgClePHfOEe40uvO+b4ScqVHD98qmJ8P72pAeWJKsAjI2A7cTjkIhTK + Y3H19t3b3/7vbFXviyEfo0532QxOzz5xAu0pzIZKYt5eVyGb2/uF/SRIQNo82i9s0SkkOXd1Rtnh + ZX5jESFfcC6SuvCyPBa6EE3jkFB1cKq8F2M4bYObbD77Ppovl6uR+jHbTRBr7N+z1QrIPtJL/bj+ + U2VyXy0y83ixlO5gs1eMSxsWna2GuuIORndLuWcNu3kpscsGj2BrPpai1KePFxofbePhhs0TLNP0 + l3EZ44JUB1le0jYe3voacsKvGnI2s2vgUQWcOSdiQRgENWHUXWb5F3I+R3RNvjwCB6Rv9/X9lSMO + eVLdk/Ux1C3sEKZYC3ph2qQ7qRauQW5E3gpxk49UiYJ3LydaVHl0+f7k4tNjr/hMzxwv0MIQtziM + VMLTT7fKtrKY6tmnyhJn72Aru1uB6HUnoUJRLgkV9FQBB1x+iirALCy0o9gD9uwJT8IoAqkCXRQK + moWupMoN9H/PzhtuH6Uxn3x6/dvpxasXKnDRKh5nNYP3q3lAu+3MVPOCFzB2cAmvox9qMl5fwdPN + creeGNvR6WYbVWQWJ0mjWAAh4SFLK0aY+5Y07H6NqIEMTztESmJXxEO7ksObYhWHMMCk9x8jt9DA + vQe+SZ7bQfnZHBTINdaCQBa8wBwzD4+IFmMYT8mww6lacXElOtXI/V+BSGUeHSc8HGpdd7P2JkLU + rN+x4fk/QCwJhMLk13fcyHTXeTZAJaf4JH1hT2fF2q3dRBSF0H96GovoqUxlcZVRdBM3IcV0UJBS + 9DPlEb9eao/4+nq5GO+2mVf4Cf4qi8MF6LaXpyagRDgsaT7GgpCb2RxmGqcV1DDDbCrT0Vzb/Lgc + xtZF1vfwrbak9tvOeGDK6Mm+pCNo4pYSJGDbRXvmWf6yHci/XJO1dYL1a7db96kX8L18Tx+IUbxu + t5oC7mPJe6SpJad2dSenoZ3FEGg1bjUgSAE7tWSbRidYDutRXJIhxrl8zdYaPWWKAGv4EhY10D+7 + 9gKKkS54W7y5NATHWzH6PW0PxOHHcWhvzWG+QDLI8br9HXusdstV8nA+jBsEil/mK+aos/B8GIgF + T0ykO7ljMeLax6MJP6UIlouzT5etaumgyYQS8wpnWa1ml8/HTS4//+Ti1D3FD2SGPNZFxyd1Ex76 + gPcMEpPTFLlbpul155ymqGKZpqcafe5TJZQgSFJezmkapSA4CzZMQXFHqRdv0j8LJRaMQ8AuECcr + GeVePFnKq+B5fV6sAYGTS3UjNkWcCGgxWV6N51Rmbn2znM4wXpoUxOW2Glyg6xwo+M3Xu8X1zAbf + xOoITQbimPFE+GVtUY3AcuY21P9joZ80FoyHv7G4kg01nY2GQHc2UhEYswWV+54MlH/WpU8LB+Ps + Mnfbo6klYOU+TY2pg/UMQ5GEDXppAlzED8o16+smy9Y+k9L8N8yQoWgGewMccwkbo4JNmpS+v0AR + K1hxvaRVko1DbFLG9Ud7P3H/e3huCzldoqeQBRKUSpuuNRkVwV+3DZwF5khdTzXr1EpHT6gMiAna + rt1KbrJJDzVVfmJlwAfkJGcpSf22+6RLOShgTdVN0tJRvWf3JMIko9yHG1xeFXVHpWUfTSK6n6Rl + 8p1y6oNUR7YnftQ2zYSauEa2qw6syHZ6tqce/Ms/XrM4ErpSjX5coCcT9mKhIdZ+yjnUroNQ50Oe + v+DBS/HU520wCgqtHOe00E1xWvPHyi5yC2IHScQrjEdHa5WCJ6j509DkWYtSHzjVWPmhnxuJ7FyF + AXQkBUIrsYpeCrz+mqWxEJUxZASVWZ7RPria3t9UtODthR+2gGCm1520GkW5pNXQU9JqXv/1ZwWp + gUn0maJW4z97wrnP/HQI/4Q+c0BqsFAANrv1VwyaHuxA9cCImyU8kQLb72zwZTafozi4/D7TITiv + 774G+6qml0Jxkdf8erAK9zB9Hi6nceMwnym/MUUgFqyYbQ07P/ca4DqPIOCt8gjgddc8AqRczSOA + p3RMTi7eJH41kSAJq4kEIY8wkSAUTEemXZj4BQRiXl/PFrMFQi/LQqmIs0CuPRmhhB0xqb/gT1yd + h5P1deJ38+/mR0EIxpKkUi2j6AexPLZRbCnnFnQ4EwlwiR/uKbb6NWdQT2mjuzjkTZH6gqdJmpZB + 1NwBMPZ4jiWcxqEP8T7VzUvRW2sPoXH3PMfJ1HsIdovKGsAf+cqT2zeP2w/CXydKTaFcVda4c46k + E8HD5UvuFyyltee4v1i1njzG9RQcENb+19VcEBBNBp3PTkcnbe4+2cD19iPq1ftPPlfm75enoXUB + ChGIJAl5+QYc8ZiJIB7CPyHuAbwBzxQGZCYhk5FhYSD7agUTMgTRYLJejtfr8d3oShYhKlj5xovx + /G4z2wwlN4OGILyMvmFmoipUcAfTPV6DSohTS8het2sYyWRUU9Lxb4iUzJMoZTlSchjo6qHvGGsX + w8/cY/hZbQw/wxj+cuR+WBO5n/hDHoXJocI88PY9ol1jZPnEym0ttoetHTV5CYB2ysqW/COW8q0e + CTxZTumIoOX7r38gb7hVSAub3VXuBiV3IJyKm9n1zfxukNcGV9B4ZOfC6iNUzpugVGVznU1Dk/fp + 3SkrQKKhTYiymteq0icMRsGkIZv7RcaKAW/T3USNb52Nt3JoUjpKRuhrX36/W22Wa/QiSdbyx58n + gxnwoOksvzl+kY/937H+71h/ubF+pGznTfY1kyY6M6J8sCP9GSg+aXYNQyWuOt7AqyP45BUbPMKf + Xr2jj9dmFfbY++viNRsx2Z/8kec/ivzHIP8xzH+M8h/j/MfEpPpQ+q2u4Mv8wPqVR9avgTSCmHK/ + MvQ8/zW1fhWUA2F+jSO/+GuapNavafGvQRAm9q/Fl4PIL44K+in2G3E/KP4a+In9a5FUHPKIopAI + 7qkupnjwdTY+VBSqA/4M7KPJbj0mHI0jzVMPw9TcI552f1E7QCrRClxVVnLSP1GIwjcdmv8QuOzj + cGiwDpVO5y+YM478OAbTLBVlmUU87w62Eoba8xgJ/ylrheZt2rj6HnUXlvNRPSR1cbtbKS+BpVlL + BLHROpO3TFHDJrAtBic/DmNg3dVWeaNPQJtXW+BT8qlhjpc0TgWN4ayVuf2Vy9MFgoWl4OB1dgt3 + p0yxlL9JayGFyFDLzXZdbzxrQsbos5PGmgQsjGmijiYV+oSSuq+anllONErMd5PlxiGyma69JLSn + 4sANdU+Ze/VAiO2jVQPBaYDHABLSfNsTWzy27S6PY+jtAxHp4S4JuKBifzqEu5FI8cM0n6Z0yHcX + 7QrVX7gXqr+oLVR/kReqv/z0B6/4svy4WqeeA+8TyZCLWBpQkZufLjG2e45HSNrttrur3TwbTO8W + Y/h9g3v/crvjElkIFQkCWpdOzBXM0hyTTGfwVCXLLAj0cHUjlYncPzmez64XqAQ8NeBYQLRsDNIk + VxhYdrWclqIxExY1+F/SCMXdSoGe4hfVucQSnzXGq7IwFDFvUYtens8vcJ62ZW82LHlDiqY1bmN7 + Kg6bQua3ZQ957PNGmqCNgDhfobmVZWf0FGMuye0VaHWNscLCD2ybWzErk2FkbZT8y3ufj7WmbO7g + 0fuT88c6O/Kf8AvoSr+9nG2YCrB5XoDwqN1/090aV63bZntuDrvypFU3WK7wXq4mMV95eJiMZw2U + N0/NNikktQvThtfIWdXKTXFBKO5ZJZ3BzDVeLQ0qlq9ADEGrz6TaVJfVU8eYoSFl4SxRUkFTgU7T + KExpa6rH1oBj8mOq6+V4ZbK02Lxt53FQXu3WFKzh76VU+wGpqkYnc+YwJMkhxQP5jOzVjUW107aO + gRTvR+FLFCxqHVM/KOTpy9qkZTLB+VM/bKNV5Y1cUzNNJ1Zypn5KFzCcji/LLbK1bHAyCgp6Y7EC + g9tbVp88FEnKqF5lFBLamFyApfTAtVV5IpJCqZqCg9PeHZ88Irz54ifup1+Rx1kqFBZcgUYfFR9Y + ZCUGIzL/sZ99f95/d9iP+8a8aQEL/QMz+XqtsRAotDsZTbrKQJuZHlnYwFBW8MjZCiswZE6GJHfi + Ae3owkEZnQQPpo/7K2vhJ5yK1bis1SFCdA8Bj5rPndb+AD3iXSaToyOq9rF2R60MR0ls6u/Mu2dO + hJTh+fKChy30YnrdSS9WlEt6MT1V2IPvX4aVYrdBZFetE9GzURpFYZAOU5hDpvViUzdCM387gne1 + XCvr03PQNzZL+8+o7eyuZvBkq10lSgeSZqlFttRSfLb4N3wmTCecp+UmG7FhNLqabTTauMw3IKxD + uLKnmYSumw7WY7iFQXkbf6bEu2ywAf0GXiINodAH3vTb5UAWY1T3PoEi3k7DWlBEZKO21s0bY7F5 + lEQRKOX3FE7TYOorf54Voxlz1qTR69F6p2iKXH8tqKkydfEGId0Xg1diNJ99KawfyDzX1nlaZDg+ + 3I241hh3Vlpr1ExprZrW3mnl63aWtfHkiLEnmAlZC/Hi7MObwWc4q7ArCIXMw0Og9VkeRZQuGRJC + sxl2Tb1rB1lnP2oHI+/KbQZyWFtxU2D0HWlQ5nPRiIylbck4jXCQeRRtnuSIDVqqawFXrFN/emk1 + lQniyMlqNpHneLDZmErT3FNXGs/B8VwdpOuYEtQ/FkMQkVvhzdlLdwSEICHvUT65ekrL53svKX29 + pSrVB3QP9+uNXndM9ZGUK6k++JSut1dvXlbMvizFrWyn+oyCJI6ZPwTxSXoFZC33k3cBcKAb9OsX + CoGqIEwJZ7K7BWY4ngMvGnw4OS1XDl+MNwgLMkLuRyKQZf8zqyIvm1fX06qxV1EYHKBg30VhM+gc + fHuq6xoU4AtuxqtsjUb9huSEsCkfPw0SnlTqsdeMeqBHXTbSRkHQjM2nhuudyBkuzS7hglAAjeM8 + PYJFemxlGujtvVHo0rKoriwCtiQf3HBQoCPto+YUYyiRKgW18XCj5VhyIvp1kg2OS8JkoS9Y8WLo + moHJfAIY+wdslsXy6/IfsGp2CXrdw+fl3N0y1gME3dHcO6Te3fboIR6NE0U8eoETURDQ2hr6Ip8C + 7d/5CWuRYiZfdwuyJ8rlEHv5VKWYfTpnScUtF4bVWjWIqRXHQ4TrEHx/FPXtHDqoVrn++9Sm9ozv + JQwir7cKhD883abHsK0jM3f6Mb73YqToy7YQmeKfwVvxlLVDEdBtnCsOqi7skoP0kA7rFETK5W7j + FSxkcKcvrNYYxxSGXMIwPIQoRT2TXENpJzDONoUbVQtXKG0ib0Fpy0c0gzYcymS8Bhprz34K9CUK + 7ve7uT5ShYz9QieIsc0ZMQ9UeuVMW6Qo78iKbe1u7jwe6aES7Sq/tiu1QFV7bZ6t7h/bL5bET4QE + AhqBqM76bLEAdaj5LLVwbHQh/2uAGAU8CsLqx1GwM+yz9rPmnKLqPv+CwD4KxwDtY5sMoxyQOUlt + MOuEAOI+iE4OC82ZhYn/fR099aOW8b/Uxjn+V3Vhx//SQ+LQRcVSRiWslupjiw5o+y8q6/Zi/J17 + a/yPrKubEs6wHxOKpWxyizemMTwpgxss1X/tmpB5m8J7/ZTqjRtBsZb01+w625IN7Hq9/Aaar3MH + sU/s3oqlsIJ3WtpJj4ZHVk7qbAMLOp9tbigxaG1dbxj8Ya2N8/fC7WZFkqLxYN74qc2RmiFTfk05 + jukMVaa2kwWSLBNVi8HtcrGUH0a0m1Z039hCChhScP2K7tWsG1W63kjlx/puxqKCL+7mO+fAX0q3 + kM3Hv/y1IZiKSc6+AzNaYIEFoCWnbSHZ51Ru05qvXVCdtAOA2iykDy0T0Ft/O1spyWU/oZBxFQxe + CL5yJmIEayq99uEdC1sA3NLrTgYIRblkgKCnygBxeVaxDwcsLlVJiZ6NRMD8KB0idlmUOEBBmaTA + or34dnx7C4xhvBicwdpeD5g2WSzmMKTJysAjNYOhbNDoOc8Dd4BhPzcYDzIFEVkc1siAOXx7e81X + VpXVt+/fjE6XJ1htlXxrG/LrUazHv1UBMFin0RyuamkShR5XOI7anus/7sPl2RvNDDfeh8s3xjQa + Mt+X2p3yfJWJdirc3gMbaUfigNQssxUbaP2yHMoc2lChUjPWApiKXndEpZaUK6jU+JQO7afXp3Hl + 0EZ4Edio1E9CgRiaw1CIOBX7jYbLNdCvGg3bl0B8uGbD04LjIg/p1r4qFc8sY7XGEwXLX/AqbBE/ + BmHYQINVBewqoeOaiPQv51182K0Yw1JNk+UKZMvPMw38VaQJh1IWit8M3i03Csnp/WYRrtADM/iG + Fwv8m529HrExuWlg1BcnHwZvqCDom82KrbzTV//MgY8jQSV9KI3X6k3u87bh42FECqv1ma7aeKe0 + po6uB7LqBPlXOyXrHKeSmdY9IN9HlC/0+zvGfXceQ6878RhFucRj6CnxmI8npxXkex7zkmNCPHvC + WZSm/pCzOI2U4/j9PoNGQX8e5r9sBsvv4zkcPFS5suFgs5t/lj/QTofrkR48l4QyU0yr1iiokW6J + tX0cT6oo+HttLjarC0SjOzngCVycZVZX/BIzpFrPsg9T2pK4mofBPkj6hMfMiazhqtaQayHfWRg3 + x3jVE9VDrYeQh0HyQ/S8PndSYRfRtgIZEMa6upuD2NZya3l4PIy7O/J7AZjHGZEyYWXeXNiWXCB8 + s2EtXWhg0IykUZoaVzK/rM22fjR/Q/Osp7hOZaP0YvWsnUbOQutUdMaDPzq4m8y9lS+1ztvxX4yH + KGk8REfQ18KByU+KmHjK/FbZSdTENTdJdWBlJtEzEhL+e7JWsQiYo10oZkvxc4vlfISim8wRzEao + Bk53k63GEMJoD6vd/wFyHtKkvKREFZtjvMY9p5c6n8fhwPQqIQRMx4PJEfb5HrKijrsWOE8pZa/6 + xRi4VlcQ6u/lTztEsqZWBkJJzGTy112rOcqphjUFzKtU9S4+OzvrvsW63gr9pipxngddzJfSdnNs + 0krI0oRsXObjlRWglxSihPFCgPoeXtNHXw8rtCXRbj8evGCsdXCLaeXq+su7sZx/5rGyB1PRnxOy + RyioHpi4OGbxY2//X+1eeBiwMPKJ/cdhAcPp2HRNrHgUKRmqECnmELzZItaDysrgGZIOwLobw5k5 + hClBoihgPUqt7XiVBKEQvJ6YDvftMNIf7cm6b77at7TdF86bzykD5XZ8jX5qmNfOjMgPfFbZCKPC + RgCC6qD2kevZQ2cHTG5HwrwBs5HYjeVxYEnYHdzwU1x7W3y/XX416JoziaZZhL5EteI2A068mLWN + l+4tSZNFCe3/KiGqOQ+zhHloGPY1XuBLsDfhO5QrTAJ/Nn7yZndFBfhc+a++ulJl2QTpoI1lE193 + tGxKyhXLJj5VSEivf69aNhPfr1g2ReCnYTwUAfeZcnle7lYaiQom4fxs8Hq5Ww9+ny1wdhVo0ecv + VXNjmanZCStJGbJoaKUk4iUQxfflUJE7YU+kClrK4N6tSaQUGJDVmEhZHHVeZEMlLs6md9AVHA/Y + l7ezIhBDpXRlFLTsQxcddPwKP/aFONSDd15aQCsp9HYsbQnAJK7ho0CZkc4d2CO7FSLYjW9xs1xu + t8FKptnqRMwFpifOB/PsazbfaKtjjp9lXdLnZ8H5EOtxz7PxBh1QawW4a2ppoqkBurZCb4rdIvHS + NvTwKBgrZigCKW+1BfE4ELlEGfW1i1Ihta/WYERaNA2rD9wO2LzY5ND+bzHIgAepCj3KoQyn6507 + 8mSgAWxAn9mA8jmn7x2pVZ7C7Xq9GM9rL7gmp52rXPV3Di/SzvvYN9g+yVOWtET2kU2ccX2oAxvV + Rz6ja+jz7laBpcJPY8kQ8A6WSd1WvGT1z/iIoY0sFUFISpKfkrOzGtHdEC7ors60Jr1f/2K+3FHm + q3qFCepA/Fhj2SFDUk3c/u1Ybp3u39klIfpwI9fug5CL/VtCwRZ0ABTtzZ4l6N6pOVu9wO90oH5I + Vqdb9647GnRsMp4YD/22hWhVG1eTkO7CMgiph8Tg1qu5kJk1yOMi/1InCxcyWd8J32v+iyQg48Gj + iIoaRgFTiSsmL/YYbuFCrZk99JFy2O0cB/I21bnX7frkPKJaaBMDXgPjvs4Ka6DzzDvPrPBD+i6k + SXaPYzCGFcpHI2Jh80Q4b4VjOtl7JKmK5ZsLLloAHNHrTuquolxSd+kpHcO/3r6oqLssKgH/ihQB + jpiI+DCNuB8dCBa8XgP9ap2mv1uxVpNnLIIo7lob24iegc6iFCJ66rdLo6QmrnmUqgMrkZKe0ZbI + Pk+4KlOafUcj1XWm83CwWku4kuBG3t6/IQnKogwSj/BvSdQpAMJuQFzP8uScw3UAO6epOJDmEZUD + BA431zGTJbWKbgJ0G7mPuAvZNvqzIP9mKZlF4QLb+UAOWQt+WEOt77H/lNtRdqoST69348XdfFSw + uJe3clHAOrzI3ei2uCUopPzFBXxyi/J98nW38n1EuVy+Tz4llvDHi3Nm1wSHKzHiEYsqpfxEKOAK + GSJKhS71+IeBSzLlLxVUVUYWMitBYzrbKGTxDHkxHGqEjJ4WwNSkd33z3EoD2YOBNnj0+gVu3scW + oBrdVX9crVi1rLhjWPupvqSSFBSTyC/fUbs9311fYjCxo0kLVYmtLu4b3q5klVXC2TQroZoV4z+j + ME4PDN37+fsAVntlbYPnWtpDqxHhVWFclolt+OTJrW9KfIF4/IPQ7+SMSuNa0/S7MKcebI6/Orrc + PaIb1dYd65ySEHBubyoZkwy7f0uF9braOhIKq3LiRk4XXp84uGTPudvg1skoBuR/4XAb5IDIGHDi + 0/Spn7YL69GNnE04uhPbhqOeqpJes1uNv/Lp7D3IdKVoPc0TZrcUkEjqvdfiXWNu+IRdebJDafRh + 2rYdUaqkcbmhuUJ6r9EPcIRx9oEgvwVAx7oH1PyA6LxsGSrpbsHtrct9XxaFCllnT7DVcfgwHUts + PcxIVooaL5OEu8FQ3KzGR8EQdbE3Hum9C3jMalwgdd9VOUcwmY32Quetfk/9N+7Jfu4m0DgjK42w + X9iZ3m6sWGuuceIezkOvu2quSLmqucJThXB7+h6FlVIN+jDkZcX1iUiFn7ChSIOEKcX1zfnZyOgd + q314BgSjvVpuNjOUnNYYzADvjlfSNnq1myrwj+eDnKaKsKqJvBhMYG1m5MrWfViayuVqwykH+Hyz + ZSuNkTu5FeLY4KJcGQwTkbJ7M7xK49Q3NC25R+IETaXWUiHCMAn+5T2sFSuVuwbyRTazb0U9uW9z + tTPhnpoByaDr566l7bAlsVrlKiSUSsRjyW9wqiDe9oKLWGIPp2178g2bFfmcR9/0d+0fFQVzbyE0 + fsoJ+Qy23vV4TmrUnons/x4XjJPf0By+I6JwqOzHq3d+INxvDXrd6dZQlEu3Bj2lW+Ps1WVUKfsR + p6VLI372BA9RMoyFCJL9PrFsDtSrABr1EfG21TFpzDD/BXxjfhylXm85AIdc2xWTfw9oC3FqgsIC + jF+IW4aFqUbOgWG6Ezs0TD2lTfZyJHFIKKYGSzyVg8IOvmD1hKFivpDplDBhlFAiG8mtQ5lSLfw7 + FKmTSDJqICNrIF2DYAKq8oZkli75W/tE08Sge/upu1OFXndF90bKVXRveEpM5v3F+Tu8dErw3lJp + teG9Rxyh74IhR5S5qA5FoxoiowKGKXrDxGxIZvQeQ2fSA6AXTWEfNm+KeIPRPw2CUESVWgoOERR2 + bQURunRQ8VU0B4wH7NCQvS5T69FqGuhxUKGcQ5L2XqyI+lxVUJvo5Rbp3tysPzspOKpJ73aOSeo/ + QurBRC/VV0i/n0ClhGlUs6RFoBK97opqllQDlegpccs3l+dVKMK4XAohfjaKEhYEwTBKuAz3lXp8 + IfPLlJXOAfkuxouVhuqz659IoBc7uESjWxWVpeEAUaQUE7LqpKBJpoID9vt4xThbDekHodS+6Tpa + DR59gXlZrm5mc2RiMEubx88Ju8tgCUpPKXA1WCK7rtfXmUQ23GpkI2hWUzLHpczDm7Ph2WXuvw3C + MPIrUENvSkl5Ft9OuTPF3JldM7P77AFRmsYOnXj/w1bfw5NiQN5ixvoAH+qcF72faspyxLhlsXJQ + d4qUXa23eeeEopiRgfXoGK2j/UA9OLEPtW6qB99XbjKyA2xSZhn3RGXPsjorhPdfDyUMyWLypnVa + sr6UKXr44zvGwhZQo/J1t0uZKJcvZflUQY1evA4ql3IQxhWoUebDP8GQ+ZhMqxzGF69DzdaeD84K + fNfEL2KsqBRWEJIpW2xUyI4pC6U46uXtRCFiwk9cW8M/rT9XI7vaVjlC/3KcVu4+WVFMyl8wYiw3 + gFWrbkthGtaFmCTNUH4pj0ADL92GSHWLmORkgRmoSELrAoR2lQswN4onURCLJCzRtSZ3WZndksU9 + LmfXDgsV6JIkDaOwrILpDuC6li4y7AdTeqEbVMcqXURN1fMaJsaZbpOeZxbVOzV5RIXieZ8uTt5j + Mm0Bx3R+N3h08ri4yFrUL4oLKAX8924sJTCYUji28+cGOXojW49hMHd5QNNucbucIuDrVOKQbgh4 + cLNYIin8cU2SRQY63Wa53lC51vAfo+nFeSkX6DnGy612uB+lK0N6N+yd6Z2fFAQDkJ0J7S2V+hV2 + 9Hk9vpZxPt1DuOSelIaf+u3b6go+uqyBT9HXh3dku2FR1Qmk2h7uC49UcUxNx7DFiFjkx1QEERfR + Ye32kyLg8UUvtGKiteyFmHQPbR1J1bs42tFoHo5gynmGr8C+mgOPwfv76k4eJNfTEgiVTb+YXKij + WuQQLQYElITfTEnVLCk9LgRvUrNu8/rD+t7/+YSDdJ+9HFV/pHtA0rEBrH4uw88dOxUsoLRueRm6 + Fd9s2bSpGilKSuoCOSxiOU1gEIVc742CKkPb5G4u9bHPP41wA2vAHLxcYz9I5UAgK0WSmzG6ju1A + IR26dVAcyZbf76RlMRuFIx1ynx1MV66BL01kzaq/zt/BRnBXauh1J6VGUS4pNfRU+WVefRKVnMiQ + s5KpMXn2JEj8UGBVbGZyIv/vbDEZfQaGB4IGbuGS4Wk4qKtdAn/PvkvkICUYSstThuHfCwv+BvmS + NIUNi7Ej77OtMGoP/lJFGGpfqIGlLOCxygU5QoM6ik6ua6RxCup/JcWmWOrN0rdgzzeMqIGSCYq/ + sHnN2VmpQHU5l8v2V/lNE5Ey6DYtK0t76lbbWTtB0JRew/w4iEGM74nywSEjHvJOVcIgB7OG0Sjt + LjiZTcFlmrLX6rhYHyERV61P7HBmPHnWjU6UhqmnBi4F18YvbScg/RKVzuVGONCBmzjoSGhPAay+ + XJc/Qdw61HqvRfDHl0FxKplZ62k8uqg08kp5yroyXqdxPixo3iRQ0g1jsbsflV53lG4k5Yp0g09V + aNvLs6pwwwK/LNyMBI+TSAwFT2TlCBRuzjA1Et1hd6j+GDnv2XSGjBd0rvnc/gsmU6rlfHR2fp7/ + +nhYsIyNFwVcu0L9RF1aDTm7RMsHEbmC7qZrLe11hZ5NZ/UyEaY52AHRvHLPlgSFWT4Jo+KnTrP5 + djzKP7g+wzcIK2ZJ+3rN1tfLmlpyJdRD+2ZFKt6vtzge7kV9+Ua+KkcVpcQWcA56wfJDkoRpc6Oy + KZ1L6v3/2fu37baRJA0UvuZb8Gq3vUzKyMTZupIlW1aX5dIv2T1T/169ZlEkJLFNEhwebKuffkdk + ZCaQODFBQraqemb1lCUIiATyGMfv21FmSIZu7dfvJ7VjJEMWMMIMHI9Qp+roNfdjKGwCU9ufyatL + 4GOPLPrWa7ylltBB/LBLIGDflR990Gd5PJL1fKh9itc+5AM7O3MJPuMDWPjM/syl263OXCm5cObS + VZm79PtNGWQp9AuMjA6cuVEEr4AlSJIr7ebTyfU73Y0i2jnqnw6xOm2KJpBOsae8+/PfZ/fT/s1i + tFJ4w+fIFlg8+SqhMg00B6cAEnFzM/iUy5QMfT8KSnnn34b0upUnn+9FdamcDAY79DxeOAmF6j88 + T/GTqknCgihm7WR+gx0CA0l321LEMIid0qFaFNZTn6grY3PmaeFNB3n2V0olUilH6mmYF0MevT6/ + 4VEP54gG23V4J5RhT5S1E8VMS5XjI/s1Q6I1hO+GFMDOxzsL42PzbGeF1vtDZVCyDCW7Un/sXeVL + yg8JGS2XiB/Z1gh9BoC6tqKaabl7tG2IHoFld6VJUNsCNHVQBRJp8AXXc4+cuBX0Aj1iC7wgGzBg + F+iahFN6+9/9SYqJib3sR/1xX25/uL359t6NESbBZaHkSXl6xBonlDrhPJm2j4y7jidzl2HpKr8R + LMXtTPjHEdoHAdGVO2nU1/vZuppodldjQnkarccpPZ9J37nclRDXJ+6ZXOFjtnMgtHtlD2aOfjCP + kLle7T9PALRTldgnoGaiQFb6E/BKhgQzXTxMb6fNfhZ7QIEO9FzoFopgZrA4e63fUK3f4NRtC35L + j9iuX9mAsX7pGq3fXPeBVbHoFX/PycAVzEOPEBT3Wl2/kNdN1XNGkUIBiHgr/Dq43RYFACWXUQDg + qsKvOy3mKSIIQBm9zoONMvIHnuxtE71unC7+tb2X8TrCsCaCB0WykMeXQ+REOI02w9kU9UPM5hrd + Sk4HuR7Wpdzwd+7wdHSJm10e6wuag0k9Tyfb2XRRemY+Wjz2b07f5xaIWm+z6T100Pq4zGeebZ60 + TemdS8Hijcu5k3pfytLfXqyTxXrbf7fFxPXRSzP84zu8JpjHnAisgXLhag7ardzVdYh5TivEPNU1 + 83SR1sPZ4XHZDolPyUUHdoNc0Mx2weQVw3ilI8U0Wvx2358/XeXoGQvSHMOQ+XUGVgWqX8WgvXjH + Xw7+Sgukh1tJDpch6MlRzZ9zFZPAarf9GUoazuz8u1YsBLt3jSmmaaPzHPr8jpKPJkG7zcfAp3xO + 1SF7dMYudXI3TCPofrz9yH+bjsizgEqyMJ3FlL1NJ4/9NSwtEUknH7y1Vuu5AfkVl+l6M8zVmebc + eZS1XEcJ2Jw1xKsQi7XgAwg58Lwx1OcGhom65DM4TgrDYO4UbRPE9he3w2MbCsPjMCmxdCATwHN+ + 8z7sLZXaR1xunz5y17PP5KLbrdQ+Kbmg9tFVyeV28alcnuJgMCjvdw3evOLoceMDzuC8k5QUN1mu + yP0sBZNjLY4ogg1SKgvMoAdYxzpthWxxE5FWoJaukxw3EyKW65SZY7UUElG9fX2f4Tn9sZjBt5RB + Q9onc9UAheC7V6VPcYzOF/2/+WSsOIIZWM44aqWqXLy7KsrLYEN8FlI0sM0pUWdZM9jhJXLEI1jE + +1XgtcvNIPAR8mlOQd4BMKSgZ/m5l99LiBhQfMQY8acQ0WCCx44sInddp00ROd5uWUQuJJeKyPGq + TO28uCoFYjzhei4UkcduHLBgEHuu58t6tXFVsZAJS1BIU5YJmdNlOQKzHxeG4yPdcWkZ32NgYZ+a + tLgWXCP0fMcrAoGb2WXYxCpZzpQeUKhMY3UfwXGrDSvK3faVnVWM8SDy4sipKewSmlLDeB0LrIRk + hft2LsS2Tqgoaro20xgqqsNN6bBaQQk56uGk0/ta5Ic9+gixrxU/tKXqy8lj2Nx5dur4fqKe4vUa + Sst0OZc5htZf+wu9YZkMGnm9aKvKCltovR1mP7hBmNV7TyVl296iDk0PPKgOpFPRFjbkcy3WUEcv + 4bd8uGae1yIHQtxulwNBkos5EOIqHb1np2flHIjYjSpyIOCN4wEOEpc4rJPTy6v+JMFE7OxcPRtP + uqhzqFGNC01WOx+Za3o4qf46D0LiwmEXO8UshOXjCqyLCQZecnVDNWn0AedORSuqhcCFj+P+P3tn + WIQD309y0a2T5S29wM95mfse4ySbnH6+EsbN5DP8oFMOj/MaNZx+0Ov5WlxttvRwaHXqAovkAUeR + 3+pPtUsXqzsIYonN0Vpgl9p9d1yUMIvwkboZ98TSmkiV/5o8CjFXJWZe2KrEDG63LTFDyeUSM7hK + m+HpyWVVhVkpCfuVF/hIMu8FAfdlPAravBWHEWNfz0ZFBffm5Pyk/zBdb1JMChsnG/P40AoGORiW + M3in78vehcrPyEmzkzTQ+8C6kK4vgvQgb51occPM1SErckoa9ZfbZbTUCB8ohyA+8GVwi8L7PvC3 + GRuOrPTt3Zy/Z7lKHgm/9ycovMEGwh0NkJRygQTsdPMUMQ1s905kFRI18Gpgq1iFbJKdaPMTw9Km + Ovhn1uSo+HNMJaWX7Vg2L+1ZNi8rWTYvcyybMHKl9e6KNLoC0GfoMZ+xQejx0PU0eJ3eM0337Ivz + EzjUcUUIjDCzWE6hl+ScXWLNXy9G+5VC5JSmKPR933UPrQ01xGSq1/Vo0Tc/uq7c0nfiqK7C0IVN + wPOqo7RD9aKS2MSsrXDqqhZDWDxBVHJ74rKs1t0QcYLX+CoYj0BvKztRQZp+PdC/Sq/nOXUg+IyB + eeo5RcAfhfjYJBXz7HZJ7XU1EXu4GjRQauRFPfkGYhNU+JTyLcXyrl33ta4Cgcf9WkO9LHIYHaNN + f5PMMNW9ImmsXqCkuc8P9j7wOB4VvaGYPKtO+y+EeSD6CyUd1leBYxAoWb1WDbwK16+0Rx8dQtmz + V/WIfr49kygVCNfvUi1fAPYxMSsadz67vthPVF0wuKOSDnUSU/njx2vXc+w1b7rd6iSWkgsnMV2V + J/HVlVM6id2wcBJ7b15FSM0QDiIniBQb8gfK53/EINQKtpErZyA5I/En1E7fQcMw6fsfmaPcFNfL + pVN33k7r2dWbMqv8yKvFsPbBXvC9J4TdzjfQDex2pcSsR0wEc0kJ+ii6O+9+N48zXndIRiz20aFi + tmamOcDpsLivCDx4zDwkMzdPzEI/Cvg/e6c6glCGDYeJlwMg2D2BjjE/6vsCb75NilwyWIGZrNCt + 4jq8h7Nan6iuy3uyE3Inqn1PtjiDKsHNLao9PCIZqO32dn4Bzgu6Qw4wuIUPqBuw9ANPokOgyTkP + KFS8e3uxGabOkM61vIDKkWLnBkEN7Wk8Ooc115GAVoJ/TqVJTPWK5x85a8FMQbdbHZJScuGQpKsy + TH526ZYSZxjnpn/Kjd8MIx6FwQDOI9+voqVIt5sKis8B7nEpfP303wrCdb7B+AsFniZFv1A+4Ad7 + 4mipQ+uTubs3e/fP49Exw4X2dGeOX2uTxaBrB0GRqqK6u83OlBm2ZhB1jqUHpNvgG00XD7A6N3ga + HPezkcJ6uHSzxrPHfHy9Xd0hReIC7bzcUMLHrI+LCZVE0IprC4cPdaMsX1c6owX/t5gXOBOZeCf8 + iffEzFQnnStjDdhTwi9c3892xsfe+Cu/NqDssYKM8lSwfJt9JD3zUsSuaKBiWQD49pQzLM5xW1QQ + 6WfsSoiyJnI1RPqizEbSiiZxvqlv6528PWX9rxT1uRuBuvmo/5SXDCqTw2P4iJ+TEmFfMnb4ingG + k05pPCwOgvKKqhRW4pJv83Dj9GeBhC39uisWuHOU1FoI1VoAlSE8YrwNJVr2kO1q0I0Yy0FdpfUw + x09emyGqPOHZaLZ8GA3ZgA8r7jRbwaUROkGPjCgKp2ZkiuLxkr3bGHa2nvyBFxmuuBzy3P3scYxv + vVceliRO+zREKYQ/oLhKDnnZ2K152d+Hs+nia7LzrW3bcn0exLvaUuO6b1tdkRS2E9ENHED1i1g+ + 3GJv/oXoBNKlIdZH42LuonDZcyl9TcxfQmLiQ2q1XYs7EiM6zBqjGHKVqIG+KoC41ZpEfuPt0nb0 + 1M4f/c9alnXAoWJvntLtlmUdQnKprAOvKh/uRxa9LRd28KhY2DEMXD+IBwEYeExnT2gPhlHwR56S + F4Fz87LsLxnkHOCgDVwvZyw6WeqCkNwEkp49eMEKD6DyCMPTt//nE67yCfe6G5+3rcdHWKIrSr8Q + c0xwbwznghsDzOY1op3Nh7M0XereQ7MYa8ARcWmkbFu0s68XWMiDoc9vI3hx+FeYHGhD54pgcfn+ + yinZk9+J70HLSqfQcM8XlxVfSOR0QmjZ3mv8f87Zp3TO/in8q+r0iRWIB3sfHaGK3gLEgx6xBfGQ + DRggHnSNzhFxiur8hzyz8nTukcNqNOMZVdWk/4Iu56+91Juk339xdXlx1scgehwz72XvbjMS+B8s + 8iX+x+F0OD4JyChn1rAVJfvEXA5jwTmcSKMLPf0Q3VoW4EK7MICwbNsOhstkqf/ldB0MxZyxSqOT + OW2RQ7V07z86zPmv4Ym1HqYesNLEtPSCLqaukzZ28qWQ28Y8FyYtM0PqbvTmFahkceQNGANzLjLV + sVIe6EJMy29JPivy9hEMvzl06Ah3jvPRElONvj9Mxw+Ynj4S3mPcYnLW4TJZzZOsZuBkW5X8Jo+T + 7Fqlmx/Ttarc/N3HC3LvX4d7GNSFBiIvDlnMMkXqqXu2h+Ovs/9BD+zJFxSGWtWXlCZ4yRevZzmV + rfx27UQtQmF0u9UMl5IL85uu0uz+/bKcucljLOvPWxouWBpwIIfeIHBgbQbm5BZMbzQP9MS4S7ci + 0CJxfmH32SDw4foYzpuNRFs+nYx5tBQ51NB7GzWJ//i6gvcbL3ufV9PR+HGGR5EA4QVRBOGVp0ww + b5mnCL2cCz7llNHjvV6q9/n8o47IsDCm6g/Ja0Vy9kV10Bpj4EmNseFjrPbtiPm6guCAN4JTmt6I + vu9ASBYWe65b9X2HUZT9FDw9cRhHdJSZk8b2ILV79k/i7/c8wqrD6qvZ6DFZDdfb1QpXFTxO37je + pCs0CAVIC8XW5CpRz7ToejDKgqqZI3eCtmglewp7zly5mYPswCIkdSRR8dDfrxnj9imMdLvVkSQl + F44kukpH0qdP78tHkh8WjiT+5lXgBrHnDwI39LEMBo+kdxrKv+RtuLz4dIYhokREm1Y5kLfLzXe2 + 7F8sxrOt6PlPizu2HH5az+C/Z+sFW76UusK/UoRJycuQJu1aEKJij8PjRA0KbaaijEhfzynT6wJl + APTyVpyAdbaLOBjFexW1O/FZ6lOMJMGI1RUPMC9w3TjkpQKH/KcZssKwrmgAZPkh7MYlWeslTGTY + 65ZI12oIizmvE8Y99LWFT6V51nSvmZbi1+JTqLfr/TWnWQ9Xnk4+iUL3l5jlVVv3r7XGcfbj7fkR + sXpteJA8csR8C7fmOqFRWmOP4srGR1TlyeXFDeOvxcQT6autCtZwNZIalVuudrrNIVVrkeNKX9fV + W3bCnCPWCrJWP2Tp78oayXu89FU6PPKGheT9yNU95Z1gJ6tvbDibfq1IQck1hei2Hg97T2ExBFL3 + fYAln1oLtQ9+79nADmD9Q+H+g1wf7imF+TGtHjnCDWJsewvJYvycyC4GokPI/VauxBbB8i7zAKK4 + XtZTcw38OfID9rPm7Kdwd0aiw8KgKKrFyGaJYvqooLKqd9eg99vbJHS7lU0iJRdsErpKNsnni+uS + TYIgz6YPOHzzioU+98IBdIHDZEj+NJ1NhuuHdPwVPnKyHcM3LjPPmQA1WC3Z8vVnBFJTBwqiB4v6 + l+FoNkLCz+EKVUMFHHzUf7cYpxPkL5N4gUMNIViTy4XesM3DlJKQ0e05AfU5AyzAGO94OsFN68OR + NDg+T1fV7mQSL+P177eL+6kZrY95LT0tqJUuV7w1NtH6rD1D1WdxLa2rCxZhuYy5JXpjVvyk3rh3 + Wt2xew9iEYCmfkBk1jpNHlwgMKX6NKUErvRiBAfPrcDNP+6PwFaYiEonkDldjFfoxhZKDXYlrJjt + DAP7E5GBnm43WHIAyuh9Dye5hn6OmNsaoLLegybz/nAHGO27oeOkwkcoIXhIqq4eEhuV9cC912Wc + znkio4JH9kzXZlRsbTPnGz9L7Y++Cpb5LVKW6HbbQJlfTlmiqxL96uQ3Xg6SeUFUDJINXZwOA9fx + Pemy+fC4TCnDFPrh9+v3KgpwNwPx4+cfzYJlN0vv8e3VtUo56IAsyMngYKGr3F7vWbh69aEbUJkW + HIIt4I3pdrsyLZJcLNMSV2WZ1s1bXqrS8nxWrNJ65TPhCPThSA58MzYlkpfUAMNpiSjH/XQNNjic + XaAUIZo9qHGzWTIjbwps5A8pW2ZMXxJgfEAo5ON0+dhfb5di34bnRWhhk8yXCeqCq2SIcqci/ohh + PzE40Mbp2Sn3BrtjX5frW95IZ1fcQs0cuahYFpzHamPc8XkUseJCyPVGDQqJWwueYYjUSyJZwyCD + 0fwwz+9ny1SqnLt5GRweGfQUF+cZt4YPWwsv88xnxxN+j4BGrTrlQ2fXp/Qut2OMHtERjh2drMyY + I8wRGD6PL4eUCHNyJUsPchBJd6Bf49enYB/cr9Lvm4ccQLbmjR3N1mkns7MxgonrSLv1uCcoHZhH + wAf0UmQFg3oh5utkKxJpKz6hvIXUYVKLri4qDoWRKUmrLcSOCXnjAa6tlJCM0sU+aOiEnOodsj5+ + LI+L4B3Afs4PRYtWXGQ4FPZs8zqwESnVp7C4q+9UpepIvRyPyuZhkxKYvvQ2/8ZihpoxLqODkN+v + at/Y+RrqdAmzarPgyAnbFdjIZ+yrzaiJQrWZuEgnDRibEhZfYUoiLul0AQr1Jp3J1d1r+Fv/M0jo + oRgqr+GOLK+JxHQ7Z69vaI1NVUAaXdk41k1+9fr1YK+UNy2Gg137EqiyahNp9SI+kSDmv2exhUGV + YHPNNIpK+cGJKe6uSABSa4++cgRvtUYIILPFKXwoQtCD5NW3duDN2HjY0Di8cwpT594emgYkUmC5 + RqKwBvW3KXILhSeokx0yolHrVoMdnViiArTquNqTwnViQht60gFyWUwO+M+/X1fs+K93JmjvWTvd + Bnope1UifIVXPWWtojmu5xCGOG5Hw8tkyoc3m4RZCpF8pMI7vh+odTfE37blnM2mkEu7ARtWbdtD + d1gh3gIIew+pv6piKuR1ogoVUwp6Z7seijjydCHqqNqUT+VapaJJElnd+Gg2Th9SWaAllN6x5L21 + a0zpEMS7ePbRCSN7twfdbmWhSskFC5WuKiCRD27JLSyCQXkLNXgzdJnv+uHAhQkURaqiF/18/Uki + UnZgW8tRakwe3DI9Iai+P6ZUSTEfidc28T+iUrVR0eMxwphUI92gF9bR7SEElOcW7a5PJ2cf8IgQ + +bOlXIqgoaaqUtwdnAyPEpcfRmMIHzypEBu0FHs/e0x/CGApeb4Y0pw4bCVNDlwdnDlzoh3ielfG + UJanwUCibiMoidggYVl+S1ZrpTrSI2h7pj9GsxTBi+GCScuEtmLxu3s4X5UlyLkrLEE/DqluZ7S6 + TfEl8h+3d6hXIghSgelj65wNMSpSgDl03YmxwPFyJCrmaip6ByRMJW3EXi8DU0M498wJtHcfW4iz + +MaA0mjrl56dGFkJVd4QrB7vKHHZ83ig8QyEntrlrAbthnDdsr6B5+rsnYbiHopj6A3dGr5m93P1 + JXBdwfk/BwVR4j3gMKQ0AocoSgG9UuV5vL/MoOENB32Zq5dKb+KH4e8fpDoE+/skXaSr9QDXEsbt + 4Z+rPbQkbV45RMjzcdjhF+4vtdYvZS9wN91op7CukUNMj799ZE4Ldhm63a5MhyQXy3TEVVI0z99X + lOmEnl8q0+Hw7UEw4J7vsFgCrM+gy+cYfb7DeGO6TobBMONOgT9N8op6XvnAyWmUURDZI0kLhsSq + ci/koyjRkblG8n9HKE+pltxNV2DcrzeJmO3jB0l6nyujJzX4/O4pq9num7tF9IiiF3khttvV9N8w + dV7WqM5u4NQkJPDAD8q46lmMt6oHTA3VjeqiISyKfc9z/tn7841yDye1joD6hHX3RNqoG2kPU2WX + N+IbNXguA58g5bKvP/Rduyvh8lmpI5+eRqi+lMeVvHCHLzsrbekp29uh4pDLb729R67qvdSkyItc + 7bw5jDGpC5+SPAeZQ0Gb09PIdY6cqE3QRj9jF7TJmsgFbfRFOtce8okjKgG7kCtbiWCQk859F6xy + RrkXLBYrTxCNz5IsxnpIirBdUkebNM1nkh/CqHb594+Mt1CK6HY7tluSXGS7FVe1962UH+J5haRM + ZLuNfM/3B1EQao4pkZrxDSbVcARnKsJFwbs8wOfhRpFF8fGiCYUlk/3WyTfkKkZDGYPsSNxE+QIy + eSmdwWtWJC91Bd3b+r0rdZYo9Is02Dn6lhCGrEiRe0CyUyVn7WjRH03Sy2STe3nFQfJQTe314vNq + zthyKP7hy5cVJFv0sFZnhCtsO0InvUnTNwI7JJUhWeb0X8z5OXNeCgUG3mF93JfucMyy/fzhCzLO + CQJ0SrqseEf6c+/z9WWOq8uLPDwAI0dWQQuaqwaEwma7S5rfuU6yr6PCOspYKhf1D3aHRY/LNvmO + ZU8wdjIbClEW4D/oEjwMk3hvTaRDGlgPbEM9Gi9wjuE6/MSHL4cNS9DuC7uoK45YEGXj/Twg/dT5 + wZUyATaMe+R47bQJ9ZCtOqEbMfQJdbVc/1VYpHn9oQavVtNgJBvGw96S/kEFAw5dqgFzySm+awNo + sDdihyinVcY3pUFNVzVLuY72xpW7iBncF0BwmLI0nVUPZ10If0959d+5p8Aa0PNfjF7uFGQgFcji + WzJLl3a5a1rjIp6/dx8dFrUogxG325XBkORiGYy4ShrXu5P3frkMhlWUwXBQvNiAce4yXZo/glM7 + Bxh2B5+XrgZFhs9P2xNvJ7Pnu9GdX9KuWtLzPTUtwgG6Um1fYSZUoovPW/VcDwdPl3eEnkc0xpGi + sEeW+dG0wrtctTRsnttFCvonYC6Nw1JeGn7xZDRHiJP1ZjrfztoXAPpBgbxvnk6mdzBR2gaSfh7X + qFIgfU6F+GKqWdDw2igrHTEYRMzXGkXM4iPmttQo5EPWGoVqxNQo5NUGF0VGbZAIpNtUOuNkAXlO + MioPLoslicGTjLZ98esh8waPUkc/nVaumZoTeNdjuz0wanpQQcvv127YgiaXbrdzWJDkosNCXJVR + nLMPpSiOFxcKWtBhwRwPVe0B/OsK3zVOJowDvnj1MrebZT75QvqI8rGjd7/guFc4eMKEFYjfX5NN + Km5aiSQS4ShG07z8x/52kwGSwZYF47AmqeeUsZTTELNCxtvHLHMTWxUe6UV/nW5X2PUy1jN5qKbt + becugaXj8TA4lLnXYzyojheVI5MvcFxe1UaF/Lo2eBzFPC4y9WWt1IeD/ML3Z+EgJbP315wrPVxA + GQe6I3gAA59cojksxoPjRb4bZrED+8BJg+HWVVgnls4LPTRr2unEPXVJSXV2W1cJLRL5eQ07NEbl + 77Jv7+KI2tP/UyLZ6yoDBte0OTt2bAhWX3S41KdL2+ko40YdxLL25/Li85HjtdDR6AE7/UwKz+lm + dIUO4nH6Q/FMPaJdvkJP5piWAfa1Mqzclz36P/XqkSYG4iE7YrwdLxA9Y00LJJswWYHoIn3G12Qt + MSbSH48SfEYNcFXky+4ulEr8WZIkKAgI90Q8K3yl3bIC7SW+OX7KZXWjFHlwUD6ggj5CHjr8BREx + KNAvODs0Lu/ElHx5O1rBTILuTpabXTjhIiTBCOa1PC/aj6ZaIRrC3vXcI8ba2GD6GVsQe9WEgWIv + L9IKma/HcoWYjgbyp5huXSzvHlbUd58+fGUKvt6HqRUGHO4GwQK+PmSOdO4e7oywXzL7OiaaivDk + lJwn0xqMvdpa352P1lWb7XaFWJTk+FRyYnojWpbvgZAwL2SSNIbILOG7CGgskylfrclBUg0jGPlm + Lz2hp6eVN2bHJkwV4P+eLmDCpXuKAQuZNOfS0HRCheUFUagV89keryn3Pe4QcZTg0YjfwinfjjUw + 95Q1hYduxmTxUJdpB3ycLhUQ1c3lJ5WmILczJ/TiOAQtJ/cnNeh/0IPQCzV/5D2ULe7AH3A35ETw + 97rvugHznIiKoF0qX18v4QBOFBfM4vrTVWPw2HoztJbfXEb8azyq7SpEWy1Oe9deB85XTulAlx/B + Lrf3rtHtVt41KbngXaOrksrg/LzkXXP9qOBd898Mme9yFg8YdL0fNYMQzWcgv5zHUw1nVyjHc1vG + nSqgu3MSBcJ3XbIOBvr9qMNknRsBW4YAFuTQFzA6eICJGqo16AK4sBAZZPa4TmW1p9CO14P+QzrH + hlH/edjOR4v+ItnCmI5g11YMYlrwi0+f37087s9Hc6xOhHvhd5ZvKV9nO8Y2FkLbkejtsmX5hx4+ + rPxDcGx43SOvPkuGBdcLKMG5qrMsZNelCQQeneBVYvftgGdJQ9o9/OhzyNTEReDEWRb4j8eZXnct + nVOSns5c7D9Hzk+hPeBEe3B67QSh/fFFt1sdX1Jy4fiiq3R83bw78wrHF4tjZtIeuHB8cddl3Blw + F24IpWaXTLyloDJaZDPm3XUpOUmSHmEJfgoHPP1XAIYIcPkZQsnL3XvQv0nGjC8HhCKZZUbJ9Ohc + xQgcDZh+AO3RqSne5vAjM1c5Hfqxy4ISaGhXmRrw5rC8KHW8jpEqKpbgDPLgYYwFkY+BlwvV+zs2 + Ez0gJvqXzEfNcFfIBXEzWrElPnMLqiscomAIbu9h0BYP01uNKHT++UovABqY20ccRI7RFtTp1mJI + AxhSIqKBlbcRFeblMR0oNRE7hiZCDyeozh8JAoIHPRjSm9zS+RFok39f789gvkMoKkqr3RcvfJ+y + gHpP3S+A9D5M1u7a7V+L3v3MD2GloR0Iil1tCUqQBXPhN8KxNZ6BlF948dEJW1D/0O1WZ6CUXDgD + 6SqdgR9+vyqXubJCfqHH3rziPPDjeMB55DFZ03FJzsfhepmM0YUoHKLFOAfZMdM1dPvjun+dTGBb + zRyysxRsJRWzlniL28X6cTFaIoLy6Md0NBuiWSI2+JlYBWtdEoK3oYdqLmlhZsmPAv+KPFrRbMqz + oQj54vBGgpCpAPbLTlc6Uz+ky4r8CM0roqhAcmJN/p64Ng2BwR8Vgmeevqfic4oy61BYwihwAl4y + cPMDYlBvB7Vo4cbbZQgs0s9s8PZgykY1tGe1kMoPzLrdlO2atb2nxS/t/UVnXw9XpK7RdV2PKIEO + YOOxiDPseJqqK9Vr2xqzYhD1k8Vxhz0Vtt2ZPV6Bz/w4Up9BcKQgCwZcZmI8JOOvy3RaFeWpQfl0 + 5InXuKitrCyk6BRWljlX7Px54lU8EnCXbldDhMf7l1Kv87Pa6l1wbeOdjQ/+hDBCZ35+4qL4+0fH + i1vw44nb7fjxSHKRH09clWWPn6+LhiLnXsFQRH481/OjKB64Xsg91uzn/NcM5H//zwBbd/0ISXwP + NhB0Vgj3Kfbzx9k1WKn/NXxrD0YnH7CDo1PSi4B08jrNjour30wVChT8mAW8CEn3ioH2CGr2gDHY + 2LmETf/8+LZ/ProfXqU6X/mYfkhFztRoRkEg7PmE+A9GXxNxAsFjg/7150H/6nogDpOLT5rpgk6+ + 0SoxTyRQelep7HZZhinn42QF3/R9eFuakcYjcD9lBo/xLJgUWAY9t8ZdHvsRRw7psnoypC0MXg/3 + qyV887yhfNYt4q3vbOK6TgMKecuXvW79snHgtWtimSw3lA9VXTzM3ZbvXIwvmSuf+e2kYQUqnZB1 + b+j5Xh2niyFT7y6fH/VZac5KwxXksniH1GyvgTXGKYYqfsOqKONXkTOifnV9EUjUv4axk/vV8wXc + m/418MxffTf3a0hMJfpX1+fGr0HhV8/8NTJ+jULjV4GJp3/1nIDSX8gRRAVBeVWopUOIvlLvOa01 + RNjWKTcG30Ra2+3fAwOEQc6xpXandipHSOCD36YrKv+Q29QcmSI6L/bZVX+xd700wpnplqlwfj9N + zuHkrJ+P7jEmv53vr851WcR9uIqK2zc+cr2/hK6Sk13JFWB1mLUUHRO2tNXR0060x2LK4V+TZ5rI + nYR/rHwItRTt58lSD5KjvZyHy6L5YhxhHw4AHBLjcrIvebg4ysWme2hnd2OrdQyDHRubV0cwCAeG + Hbu2SgNV+uixsF1aunrEtuxRNmAUPdI1mVBfiDQPZYBXJZ7lMm5b3JprGYsiPdd5yqLIJzlK9fNt + E772iOHb40l1FT8PVfKjdx4fOUG71Ef5jG3io2rCSHuUF2kS5r5/+TBa9Iq/56UIlmasQxFarFvI + R14l83SSzPZLsHsWZbth4Yu0q7M2B9leeMup7HE3NnK1Dy434FlBDtZMO+3qccQj1uU41IBZjSOu + 0ZwTusvoHnOjZC0HPll9NScPt7NQTT8JHZh7yK4ypJYoaF+BO2y0Zwp6ifR/Qk6uFvRQyMsnqk58 + sjUGxwWZa8WZJ7ItMzRM2vEfd0Fd1s2sbltpVrYiMuhn0/sDDqhYbRQej44cvx3hmHzGdqtQTRh7 + hbwoN4vVPbKspOvteIyOknzv5dQe+9uEYuQhDZUkHhPuoH5ZQBfk9LntJci10sFutY+4p37dn73j + 7EEZtfshy4qljjw9nkPFcA3zd58t5wCh1pPkoFae1k7vZid0BYrvHyfXsFfYRzDpdqs4lZRciFLR + VYpRvf/4ezHNh8WuVyD2dd+84o7rxsGAY0Rbotl/TJA6AUzFrxnkXj499W6WjseyAnOQQ/w2cjAo + G1JEr6B7sB7vQcB8pgRdvt6u7kZjgWyB0dIVEacPMDR/J2AsoI0h5kjgECo0OiF4irkVj/N0s3pc + rqG1jA0YI2IPCdyywnIknOHH+RzL97PUX8roF/xcjXtPXyLpc99vF/dTkzYXGdLrkVHAFPDCMicU + dUB1TMYt8gnrSEeEJOa8SN+U63sbll/fYTXyQy9yI8//Z++vPNw9XAc6UuQQTKzDuDDYjL5st9Fg + v5ZEIKdtqXuGBjq8mURrtyu7rk+4FZXMkGtLol/JcisOn53Mto3fjktAfDusjtGM/MjZZ9ucpQcm + jbqMQm/wl/EDYmXsWbnhSwya4gLd2Zdqm1f43E7cCp8bb7fE5xaSS/jceJW2+ev3p6VEFc8Ly/jc + zGN+5A6Yx8Vkwm0enhX1DJV5dLi4TijplRILxhuVPi9hVcWxKIv8MdPADFOs+5NktiFcowQW7iwl + mbN0BPsEyJhN7wR9FbQpJo/KxIKOniI00Yur008nL/syIYp27eu7cbnqQeIjzlRFu3yl08qMSj8I + ijWDef72yAncyC0VQWAT49lovhSvn9SQuLtIQFJzNPDA8cK4dDQst6sCXnbFIcFCJwxqwuFh4DN4 + 48IhAR0phEjc9ARrUMoplwE3U4ry7+t6mHRZzAmdwq6xGT8oOEpTWFzHyccEJ7jvFZNDp+hk1V4z + RLBGjKxiXii+Rv4lr3LELG4UR577z95NBtIJJgHWLMLMGCHNxLh/XTU1Xly/H56+lKU6+ywCYzbI + /FD7Sb33Eurhes9Qz30JMBrk8gKyr23pceIUJqmfO1ZWEs4DsacW5sprmzKHw9myHeKmq59bJXm1 + cJmHRTBgn6kak9LmZOmr3lda8zHqUlXJ9WjCwj5MLdIBW7EhM5fCyqebOxZZyGiAUkdZQql6N7tn + e4rq1MTuIGshoB6uP0Csxn8PMU9OEdiBrR0ygX4hB2oNAzUEZUhVQh9gflOl6cW143F7vYxut6uy + IcnFKhtxlfSyP65uglICsUgBMKtshp7r89AZwD9x5DQnEE9XIL+C8OSvmEDMvIj1Ooha9IgWJBJ7 + 1KdhGUZ5zxlGdVx/v3aiNinq4na7FHWSXExRF1dphr29uC7XcflFZh7+5pUfhfCngR/D4aq4eSqs + /NyZm8PXooqVrJIluYc/Kk+AYm6BV+m/eDuCuZN+m67grLygolkqrB0t0yUVsYAqBub6S8XwQtP6 + 7XTVsurqK6jMAul/VazACssFxDl1EWZuyOP4qaZ9dTcVlFk/rvHG6LfrvdPY81oipjZiTHlxD3t+ + lYtmnKaricgGVZonjSRSKIHKirrlErXiVc1bHvdPh7DBIwvaDIdfZcms+zezKfOXlG0ueH+mkwlN + ETEHtkuEKpPk9o/KRyTLrGAtnN7e8aWqtFovQeRMcAKNFqMlOnp7OI111UDkxRRZIQgDLH4SZEby + uSZdtLYk6XCVkvh8aobX9kXATCOPkXiRyRSXdKvkVJzd4nnbpVES3QBM50vQCPgTKunSzdRSqTiA + BSSixD810DYP+Uxm1KmHYGb+O7Wq6e0Ai8mlGqWPH6Hr7FUMut3qAJCSCwcAXaUD4O8fKwp547BQ + o+S9GfLQc+IBj1zHN7d/2JzVTqe2vkGBLQJNY6p5TgRyNEaiZYFjFdrjuv/Has6WYrf4Y4WACjn8 + CwETZmxbAg9ystreaxcubIpS25nN4FP/Q7QdNw7jLrQd7aENXGEB5f3Em/RHFaphPeGQx2WGhdoO + DtLBngc5uo9QVbSLJot/P87bWoZq9fuqQjFqAWVDt9tWKEZlKBu6Sqv/8/XH8up3MXZpqn9DHsQx + iwY85J6jcFoxiV4GOGm1fV7NykqYOl+mi0WyyvzrBXz/umgYIuhw5UotSq2iHAhqYfwNUWall/yK + F2CE1tADwNqq83K6cIb4nl9Y0KJ3BNBhMVgXuAWEmpz65rth5BWLnVqIytXjc3J6mqK2i7t0NoHJ + qU4ttbYHog/EHFf0XSAxFZP6y/urrFq+Ep0XtvRcNxpvGJvebMOh63qISvPPXm4mFTki859+LJw4 + KSotwle6ShD3Tqm5ZA6slT2BLy7cqaRVTqYqGXcgfKM5r87XKdEriLiCEa+HZ8zXUX10rHXTicJU + Kkxv6cxVk1/RiPVwwen9OuAEzePmmCLVxw5EHFDXMFBRZx+lfUPgYPWyLVyqnbeyg/Kp6+bqdPOO + 6DrjQCiPuyf7vNDOBKMv9/VLq9lpLZ3EofZglbfKnapod67KzoqbYgoD1G+udh7L9mJ2VC8xMVX4 + 3wbu34Zox03Hw1yvwcXSftEWOO8ZVjF1kM8kzc6vv5rgPBPVTV3PgZla2oqU9Ffnn69ysPF40OjK + MZph/t8o0/bH42y4szPz80vpjIEq3+CEHu20K+DQT9mWcGTNGEUc+jLpgr9ffVbFQKDa38tiwCRD + akhWPbyn7o/y4UKLiFPtRLzXDX6dLyZM9Ru0nDQdIdbtl5JTa2shuKxwSYisbkE23viJVYG4liJq + 8WiDqGQ6jkeTuSoltv8o33cIU1+8hT4T94H0e25gtrIAOA80tzOlqvs0qI4AbBmcV1H9Ats7yogz + 0quckeW5YB0RVZtpqHkoedC2GJMeseagpAZMBkpxjTbQsy/vXa/36fycLTM/IRzTUud0sw1SyxKE + 1YGrOE1sSFqfsA6uy0IaOxfwExXmqLkh6tX++O0aVod9bI5ut3LOSMkF5wxdJefMP65u/LJ3JgoL + 4V/3zSsPXjgMB17EAu41h3+/rqCBCvyo1gSOz5eTWTmmMVaVSvAjRVworHLcvcVkmApUvuKmq7GQ + bh8RIWW1nW6UN2F7O/1f8avSF6/XS19EphCWWULmTylZuSAWPm+VJJgHvU3hqBsLBVGRep2/v3o5 + vNvS+ScvZuEvGfjSY9Q7+fhHhvUX8rjXs1uCBcMRkZrF2Zp9lm6cPm+voIYmlmL8HHZIJ2xJr6Ke + sqZX0c2Y9CrqcnWlcUbuSxnIOWLfvEjUQePAk0Xs++wkniPdvGBrtHHz4u2Wbl4hueTmxasKsfwz + L+eRxG7JzcscuO4gm63HFRCdrAAmLp+86SbCMaM+2F9JXynB6uwRYIYqzjroK46mBLMeEStokYhg + zWQrXGWqyviDe9zXXOpragBnfi6sLKP+8ND1MuXobn4wXlAmHCg1YLo2OUsLQWbhh9muM3EaGH3D + 92OtzyeWRhiRKWXryvcdym74NCz3bCWtSOTwomsbkc0xOSGffGw2q/dT4dGtyeAtU98aGQ8cUaji + ImdJVbcbLCh+yCped8drtiBlK3yCb9NY7z9rNvdw4Wt3Mxav2+uKO7y7vkIYap/b2wH/3lPJbTaU + YEYLn1PFEFkZ145HJ/RoPU7RYMlTM+w0rbvIJt7xdGOepuT+bIK4fWKauk7yTUFFlmjAtZvuL3Nq + 4g6fm2BWJ0SrFrwgDv38FLZp4cUHd/ibG/RVVOSllW3tMY0zcxa2x5mhZ6xxZmQTJs4MXZTa33SV + PiTzmrL85r/mW0AMGrCxqHSfOZQ6tJ3doWlhMHzvb64qIKwlKqqPKzHRD69+f5a4HUpq7ESBWpRw + uZuKfxbLQ0qPbrcoBZ1xsv/1gbE6ZHQngxUfSMcPyWxXgr+9k+gZ0K5rabJ/Z48HbPUuU6dlMk5X + sI0MeYGovgNO1kMaaQ6ocQppi7WL4sYPsxT3QuuRb8q88qi04/KasRalHXS7HQcmSS5yYIqrEhv+ + 3Rkrk2CGmCVcIMH0Ys+J4wH848XSuQf7zm/IkIj8RjhEWeHitYnyeXHRf0hnKkuNbNvLZMLKaVpa + WCWDCGN1NalxxDgoFVVZVeZ7mOaGbq6aQdMrmHOZNWq0l6VImYkaOP4IjA7NLlFdxciAaS4GwQ75 + +WpQNNrKH1TssbKxN0YVP/eQHCfh0EPNv0ZwNmLHufwm5Z4SE0dTZ4Ys6tCme1L7SfR6+SXFc+VO + 0ONmpd1LFm8KGxRn8tOfqGAaEvXYzep22K59oQLI0Fluq5Vu9H3Qd7owk8QKVAZ+u3XcxlXsuRoU + EPVrvx0ooHjEGhSQGjBBAcU12o9vH1dcOYqxmh7TC0kTVf1I6Rq9y5MrlQZj/vMWJPRQDBoJTsC4 + NBIC0ZHw2G+//QYa0Ho8mrStHnFCT6yccbr413avdDwn9LO6ESpgGcGjaxGtyEfpYTrhylvsSFvT + a9oLovxky9kFRefUARbRAY00J/15lO2Azhi150FnYD0BLBjUNrR/BkvQsjwN8t60aww97PSIMhJA + Zn5ERRUUnA9Cd8KuXn3TH7VzJFxYF/Qt03v0LIplqhqSKYr5xuiAUt8jQ0+NDe0RY8oMBkvEmCfL + bPQCyiQ0F/PeZkhASWNKGm0Zr7M940DxoRPLPaN6q8nL3b1GW4n789V/P5vcRHWoeRri+9xtGf3U + z1iDfMsmTJRvukjHmUB4v5vmiz57Vx/O1KVcurwax6uHO9Zb4n8EgrcTiIMMfohIPcwOC4GbVe6c + 2gQ1l1GSdRYhGf4Wg8HY6EnfyxFe5X5H6Dq88+N6wl7zFupZJ97rbhD3XSY9DRLtIG0qPqrohK5w + 7D0/g3OG/8F0awnoTA/ZQzrLRgqgznSVNLjVcsYiVZwUODeCtEGWPcuR+wjWUv1fhAAx54MworQq + QdYmN4UO1BgLaQ1+wg6Ka/dDLKWdUXZaS7WHc5ljItuEe2aYJpMbA+W+2LtnXUeiZ2fJ1mpc20Ha + CF9lKHXCrEFMFdlMN1s8U0Fnq+8I66lwSCONyzLIluVb5hzh3t1qWdJD9stSNlJYlnS1/vy5+a+L + SxX7zg6g4c1qzY3sRzWKrLf+vqbjKA7oOHJCLr0VOQorATuggKKsy9bbiqpFReaR2JolvlLnz+5w + rnRE6xWTaps/5lHmZDTHEi2YovPtrK1/xPNljjE6b1fDO6zca/rSX8jXsCOC7mdPtzKAfnbEpZtY + +bMidPVCiZbDfLcNWg7ebomWIySX0HLwKqkYV+dfygm5ASvl0b0KOQ9dZxByN2ISLuHdYpIO0ZV2 + P5qNcEKni6xy+up+W3bJJz/yJ72ZPVuAcjTgg12f8zKlY6nlaibGwHfqJCPlH2dF1/sywb1ahPYw + sGxmEHu+F9fLc2DTK7F9L9fJdpI+PC4fYLLcr9Lvm4cifbiZ8ZurKGYczEn4gF51Zw/Ey8qqUxkT + EYiMivwAc20foGdm0PiQDbzh/exxjJBicD9oFpO1yu1dPYzmizQnfKGQijGHVvTIuoezJcNmYCL5 + ypcJGAac76FB+dDxNMYCweemq/vRQjGUtxTGyCCvGgfc+tLFcLfLoaN0AzF9xMuYk6xBXHkjJPpB + czFJcKKdT+NyEO3Xrx6r/X8fOT+p/jGk2ENZ0KAvtTC4mdbB40yugnb7dqQygaLTuJ2hqB6xzQOS + DRhpQHSN9uDJ9naabte9VaGEW52S7x+/haXUHykUM3/AmpHlNkSwWJTTVmUj5tLD6tblCslRlYL1 + cHPzZShebm8TxUMYOMPsg64T2DvWPK9WSloLfqwDU16cTHOrVGBr9LZdj7Upa9olq7ob1TqKjWo1 + r321mteqWs2rqFbzSA9arpZY5Y5LygBiMoBKcuuo/4IvJtA7yRJ+vLq8OOszUFF45Dsve1/8/npx + /elqqKPnGYTCFbbTE60J48/1QzL+3DhXZL8yGyaQCfFbcqidDkuUsN0PWuiRS8iRRvd0uIaewtAh + c7SbXrSS1jj3faqhefvRiXx73Z9ut9L9peSC7k9XJVLm7xcVVCgY18pToXhvXgVuFLqDINCav8bJ + nBPmMi0WUAXgZUmxGmjkNFDeHkUa4WKCfgIRpXubTrEYRRloMrnkdjsZgs61uhdDoFbM22SOhoQG + 1QTF9OaD23+xXo37D+kca+oe+64Gz0TElVH/6gMsVuj+rzCKcFHdV4TYTKdlGwXewrRMYreIjJ/V + kThxyLyghOWEMhbQelFQsaJjp6D1dCMKMETXCnAeqbdaMJwwtw43ymwuZ1FR6Hk2XeYIrU0rzbPr + i6xI5yHNYooVcVzDDuKFHKYiTinsXS4vwuUnoKrfgpX2MJd+RmEzUIdhrvfujuKRW2qWqpBKTff+ + 7DO/h4te874wAhMOmaN9MYiUCQrRQPqZlfq1ThDhsNr4anBEhoywY+ADJxqCdbQU7hlcJJkVZi9S + 5lHumlmvbVIMMONd2FLNk6hRVk9uEspeFeYYfpzdqRaT39x4UuwdNo+DsszFcV67UfwcvxpuDEJI + 1Q5i8yEejxwKBmEanmjmEBhSnxho3l6zoAXRGN1ud7qS5OLpKq7S6Xp6dopsSoXjVQBQFo5XP0BQ + iAH8E7sS6vxUp5WvzaRNCjBkKU8C8WmRS2CUOQMvTs9+e3ncH80wWA0TFXaiYi7nOZNPr+Huj59g + V8Qd5Jy/vsxffwvXiQ1Ejpqo9zv7TeC5KFQxeEmkxUDRdLKeTsY8OrwknwAO3WqsxF11qzVisuOu + 1Hd1qTSmOzE2TguE/zMPpHP2+oa2oqnaPRVgc27gzJL/iO+QiaPSVmbQLPOmL5Cm7WR5zbIs8tiM + bGUvKJHiNFXN1r5XuOO9TDHzZCoQEvLuXDj+naKM7NRnscPDf/b+tMuxJ3Yhfd67AdXLHpB9WFmn + +kTZjJ3w3pC1OyVsjHaeRDTzhMPImEVVukx7PQaFx2Xhk3QLOsZwTSRDt6tk9FXFFNEHINU5hJne + ERKtCctCsxQBM5u9A/sWdRkUXPctDRIJOiyV/IOm6CI3j8zcVLuPzQTruok6jC8/opz3hQCxLzVz + cEF3tw00fIXb0FkdfEUs3X7VX1FxmNiKbRpkG7FPwTGgZXiUsV73enC27PHVXYit/WqPgmh147SH + aOGq5GSxjHCTmsG4jGHbh2PR8ovRaJGZA83qV67Mq9u6lz3TGTpAz6vheKC6wCXRNSwRruM2nVjG + 4XbnsnVodf4HJ7AHtKla2wxWw3C41P9LZ2+fzu5TrezVR9Dt7Z0DdLuVc0BKLjgH6KqEr7o8KaXd + +ByP1XzaTfTmlYfpgWzgywAR+gZuRKXOpao4OVmv4UcwKCTO03xUTeD9rMhBqNpIJHaM1Pvv9tSG + zDcpC/J4SB4YC07OQ1tB4tLPh/ZEWoxqO2MqpTfT9TxSlcyVU/Vw7DTVaOxhterPLbtyPEoAyUB3 + zI7cfYrrIJSrge3eu0cOa4dqJx6xhrSjBkw8O3GNZnXyg46vF9efcGXLE/+lkbug7lFG+PVqGRg3 + rOACAZq4DqU1MALepMPqVmRMZayKg/whhvaW+FVgOUwnB+cwWadUtIndHpxeAcY6OVpFANgi/cgq + c9VhYaYUIDtEzWju/+17t7AjKtxBCcKe+mab7A3Zx2KPcf829P82hO/XtQEdAYa4Qa6L1SrYszRI + llaJd8Wx2hfwX21UnqoC4P7btgCc2UO2VQC6EaMKQF2tRt/M2UEViR+mWCyn9lyZ+cE5IQXl7CiR + FP0VOmSDB0Zj5mMtvx+TYqXP0667LStid2R2+4F6Xn9EWxGkzDfals149gGtr9pebV5uatr56nwM + zrEAxGuH+aUesj0jdSPGKamu0rTjzg3NqZHY/jKF7oXI8e0HL3u1t8g79Pl5tUp8s2HEhvX9WE7M + UDKWNzpebh/7Y8zTS1f6hPGJvlhj8FYYNhYHzw4soCDjKxhR1VXr9qwyf30Wcon8XxOSaLG0Osp7 + 2p2u/CeC07J+aEeTpOkZE3/V4DpqBloLQ7dB2kAm1KuFVNuIPewUdw33RfsqP0+qB8IVJcgKOlIL + 2gpu9qNwynPUfpmhOLQ6kR1J4tNDBR2eiq6OD1G7+MeHa8YCe0cD3W7laJCSC44GuiqzEH7/b+4W + PQ0sdgp02M6bV67HgiAcuB5nnJtpfqKiRBnRoiAkR2QgCj2XSKH8AMskhZ0I1Q20puCfDOwJyeay + xCixyAXwakJgg9DHWZH9cT7OtUn78BEsHOQY6iR8vPkWwnelDff1ErZIlY2Q/uDu8ycIGCWr9FY4 + kNfL6aocNY+dwKw8endlQEI7MY9DFv2zd7mzX5Z7j+ygqzFNf7Bw2RPzUwP/M19gf+GHCgdHRYeU + F2AJm+EQWJdDD74DuJ7tHt3RvB8VZNQtjHbJyqFMp+JOC8B/ut0ynUpILqVT4VXayM6+XLNBEfKf + xQFSKZn5VENEZQucQQA7WSDLZL6skhGmJUxSgUA5yJIqb9PNQ3+LfxYFbD8eab/HXMrZLEXLDuvZ + SifBNIGVMEF2oQl0gXhebFRcPPoJgdJzExM9mxTdg5s0HpLSSTcYmdP3ip0TAZVIt869BRJ6qsFE + jDKB6g5/B/svhZ/obeR8EPve2XYFffZ0G19jDxXSphw3rnHdBsxB3Nmi8PKYVMqNvNBGbrbJ6v6q + ru8Es8cvJU6pfojdKGbFFGfxospZaAqD+cl3vV7vP2xu9mgl65wkj/Ge7Hax55fGxzDZLPDbfMI+ + GK3upyLwdzBAdEeVn6BgiQ1eDuhOYZUoQa0ZcZ4hlSruBXKom7aPnyO0zn+GG0tutCq2oZbv115e + PRzmgRFZJ3bJv3aLGSB7giA8M8JSkBLJ6Ql9uxjqnawgdUDZloJ7b47bw2hNm+/w03CSLlJb77/S + jHQpMA8++O0AP/Uz1sylsgmTt5QulmsXi3wvOf9VPmZ2cfX59eeLc/i0rwKaH7Z7xEDLc0epdtE7 + GGKUELfZgLK17kDnfrQOmNnBoEjny7fReJvaZhXtfGiH4kxTkJ4eNVFV75ATxdpXUsoHqhdq64x5 + BsyYHXms1PoRJcB/nF07UYtCDbrdyrKQkguWBV3VpIReKRnD4UXDInjzKsB0cXcQOEEcybC1njA6 + 7yhdiZg/aeD/WK69ChgUmB3Cp2jq32ZOfK3+nRNUnq6mxLCuIiJmjIHmVSMwUbkY77eL+2mhWs4t + cXZVCs0Bp49u+/fb0eJxlicmT37AQC/uE8UHWomaHjJmJnzkucicgHO/yLb1ML1/6I/u7kD1Q3ap + FSZ9pHk6Y6MMITK185yqHwcMFFNelI4I3o9LmMmqowhmdiBCCaCRoupxD3/OVxhwGL4mJi8nRmq6 + YlPaQ1P15oKuucauiFnk8dKbq/c1gokixTzDQDBSbZxC1Wu+ARrm3j9Ks89wK6EXsFgvUdeB4lXU + peJSevHh96ublxkovemAylJ10vFXvB1FKalUH3Gezu6nw0061AsP71G/4B9U02BN3CdEoVns/57Y + J5TZwr0opGOQmweHeq4pP6MWMu1gRnACJTazGcozqZ1UnAr5k3WveHRXBONt5NS9SsAoC/8bzHrY + jyS8PbqV9yQ990IqwlxOkzHYoiopWu0HIr2sNhBXl8YP24aX7/aanWa3/efSDCVOUAq3tNSsqApG + L57npY9VVsVGBHKBG0e9YlJHu3AQcc4zYoYTxyc+0fIEtmpD6m+BoyFcAt4yQUI/Yw3iIpswUVzo + Iuly3zd3iF2Hmhn8iF0sKrRzP/f/C2/piRsRgSUKYi6ocJ+Baq2U4kBVL3MWtHK3w+227naUXHa3 + w1XqyD/eXpWxQYICv65wtvu+74JO7Ie+L53t12DMTMWXwqzC81fSiX3D8xVdiSY9Q7LCv6PPcroY + z7Zimn/gv/Oh8jTmnJWwkX6+/m8+MG/I6Mrg73+Mlmw5ECc81kEKw2qj0wahK7fzXBqHuFsxid8u + K1Knn1uUMN93pY41tNs4rKM4Yjz0XMbdLFt6lR8zoz91Ven4cY23amLYtVLqCuw3tJvIYTCSoPFm + NRAymFsYiAJ1B31VDydj5i/mTk9+HS6rxu7YeTj+5DDhwXgLaoPg/7MWW8TpR9BA7e1mut1qi5CS + C1sEXaUt4sPlx5OPVx9KhQwsDosYQv6bV8zlER8wN0KoEVHGMJ3htJxgjFloSCRsAHrGOBU9Miq5 + sMapOKREslkxl79Q3DbCSUfajszVUfMYzZ38nkKL/8N8Ju4r7wA2YAO68jxb7+aqyL95ZSDLDdkO + XIGGMk6aMM38YH7J1G3BU53vTt2Rhr3ouyUIg17NEKNZBpPnF4w0rLHPpYaG1S3VtlIr/7i/QRz4 + zbp+V7wcz2GXk+kraqDERlrx6uvjPlJK4Gh8T+kKdRlF31DE5clnSuqk9+uLXhhjJchmk/RyK/Q1 + kqV8pt/0VkpV1a/78tfADf40zGuh6xLBGHw1GkfJajOd7QUP63KfajjNd8XuzobjgL7Aemza8K3q + sStXWovTZa+8T4Kfl5jWNJMy1qw9A15uEIozEovzf50N5Lk+sZUpD3s2pu1fTJ2+omrqj4/XjLXI + hqHbrc5eKblw9tJVmdb38X2ZapNhhDGf1QfquRt5IQ8GbuR76uD9Y7YCQWOl9Xaq7u6P0VOnNjej + +CZrPOgIwteg24RhqvC5Di5usmQO7kRYgVs4Bm+nmKSGs0ldq1TTUREtqOlgRSoOS+ZE0jlIrLcC + DuvgerK9Im7PCoPz52vbMOsJ+UFG3MWEOSTH2JNl5qMZJtk9zoYv5Pb00ioQXoVu0lW6ceDpWLTb + msEoe8g6Gu2WGYyyq9VFUsXfDTkYXnawcHP/6XlA+mUrPgrV4746CZwWjhq63fYkcMqOGroqWZfP + PlWcBK5fPgm8GM74gRu4opNwdC4xSXcKSgch4w8fkh+jebLCuZUrjD45EdWmm3SOqmqutE0kUoz6 + p0PM+pqiMn0J++zNMEfAdjkk2MlB6blAFCklQ4Vbse6/IBYlFTFCAu7tap2uCAgLtN0pVn0K97wY + EO1N2CrUucvJYj/zzXCNMIeHPC6eQyefr+qSEDH1xDwe86dMXlwpuqd807q/CyhprJ3YYqlxgSHa + q4noMY6V/15JmuazMkdGvyyOC47uJlmMUKR5QBYyH3OhW+6GXugXMzM7bS6ftQmaRQBbwz97H7Yg + dvK4gJ4frpBvHSYjzG5StuUAv5jTong5EDX7a6RZQAtlImarmLUjsDWw7kvMY0F4Pf3B9FC+wN+W + w4vllP7rLl+iVv/YV4mR0FDO7FklczDoZkKfuROrQnNqF1yY+bmfp+sBa1KfjD3cDrQa4sTCoMO+ + EQZO2w62Dlx210ITEol1QX1dSM1VBACGAVa7Fp+3LnUAcVPbM7LTNNIO8GQi0peKW3I7KSFjedpJ + +KAhHMSEVwjn796CO0ayDST/3ekV90/4kcNbRdj0Q5YhtqyRfIxNX5W0lA9LHpTzDbOZMUx+jAli + jaALezef3nOwW+ZTWFUPCeL0Qfdeo5ieEEa0rKFLmYWc/DGGYwSUii2szklDK7v3gadbqvbEAW1p + zzoEZTjcI4Ppb3Ll5Y4wlKdHtYuCU5fSWCxkHr7T2I/cwVnXkRN7sv9zvbdzF9v5hmqnoCKt3z46 + LLIPCdHtVsaIlFwwRuiqhLX6r7NiiRaH1eyZxoj75pXngAroDzwHFr0n40Fmptjp75dXJzc3WcU1 + od4qXmX4pIxyGT1BM9hB4RdPVZ7qgGZFJvRaxCVwABcYitwkM7RtNHj1zfdJuWiq8D5Ghl/ECt6m + fJpi5PhOVIawJvidWTL6hiSU+NLIpDUCAQoqVzkqcVLI8EFF4wgAWK9oRyzmTqm0SvWc7LNPQ+rV + SmS1F8ho7emXeWmmNkZOLRceCz0ex04pP5OazvNjG6aUH7J2Ek3XvDRFa4NiA9HNL04wnZAOlFzr + rhN5gVVfHto6pi7oHaDwBjtHs1ezVF7cJBt2+rLNksnWixFkowWBSNJqpRznMzlPr973XzTOXZqv + YPiM9JzNNwBz/wr7pbb3eriT6LJg32GSIJcUA7le97NVOiFAEjOF3iUbcegZIRP6Yk6rqPiJ2fir + 2dfGABKT45BG85OuVcNMMiiKPnP/hnm0+xhgKIewThfpgZK8kPSobEYPfwtjY1uxleUzCfOdl+U1 + iypZRyHxQYnyd+HPGuRWUR0342GwYjueJl0je6G2AuRcO+icajPJxCmKT4hd7HXxvLUS1RWfiTjY + 8lNir5OycdYopS2iTB7MZOSR3xLZTD9jm0GpmjAyKOXFLIMyssigFD1VvBr1vuf/Rhx3mGEprqCR + 58Ts2WVbUgnS79fcb+HEp9ut9GYpuaA301WpN787DUooLV5UxIMN3wwjJ+I+H0TMCVQJUmUKn4Cn + +jYd3U5nwqigBMd0BW2Onz887AFB2BrMGuGr/bxKKPtGOgATBRmmtrKsCgXGOo+noOg+BN+3LhNI + Vv2b+R2GHB5G67zJiAk+cougkspxsoR9cY3EX9mgiKoAGCZ5LmHFC6ZYYgIGaF6b7WQKExBUs8mW + EmUxT3YuxZ+enbqs9/n6ndaS/DAShfQdoa9VMFc8k2XrdIf0hILolMOBnXUBQdUFv3xnpdVdEdWH + jsYJDj/ER07UDiiYnrFGCpZNmFDBdJF2vAJG0QgWWbLqFZGLJHfASX69Gg1gvBk+j5yOB5delbzq + +Z1if78T8yOiWq36oP3F+r4T+fqD9RJs+/k9+4DCjswQ4o8rAhctkqbSnxZExfuI37WTPYON8KBS + JeZzHlVNrfJ0SJrKg2wdlCGVtfz9I/Niewcl3W6laEnJBUWLrkpF69NJSc/iLlZJ5fUsjunqYGCG + A+bGPJK7zofHZQpKAIV0fr9+X3Xqvx/epj/UMav8iX/8awZv8L2kdt2cvs9OaYVTUeHiYzEMdK1/ + kUduoKqHn5UmptPh3CDyO9RM6haD6CZhQDb1q50dqWYsV7aZ9w6ODN7KNKNHbC0z2YBhmNE1mrnj + 6b3U94kspEf/9E/heg//SDE0l2JojqOqYwzM2hY0I1bYuL+YoM0JXa8CmrctYPFB9FAHJV2zwKc0 + 9l0jIz+wUKXZPEZqDrtqDrtudMTaANSoR2znsGzAmMN0jWbuBBf2w+NsOJkOJTEgXLlXr4IxXfXd + 97PHcZp3syj3cx66pmt5uW/AxeRzSSLhkTZeQW/4aQjD9hWGWchf1/oLrbU9MCDidm0hLeBojezM + 99N2ukMH3FXtRDwJdM4Oe4xqWfLTwnTfHQzd/Ew0Qc+niZNbE22XxC8nZgo9tVWFYXjkeK22KnrE + dquSDRhbFV2jrSq37vJKcH63sLgl15LYUCK3I2OTalqq3uAAK6md2KY37NS67GCXoliIgIHpj5aC + yd4y9ed5rG7mMyJALQ5N15aatgy7aa9xsfsaOSJm7bin1CPWuBHUgAkbIa7ZViloGULJxp0JzBrX + pxRMjbRTLl2v6JJquOpnWYzTHcdDV4XvYaAckbHf0iBTj9i6IWUDhheSrpFBtk7GTFa5UAnuzaeT + q172o3EQiJsFM5kXRR2dAe2xniqoWp4EMQqkCqvm3TWuBNp224At2W9THYFKdY0ItTd4kyU+Zpda + t+XZ+ITOUJdxsr9h2Vy/q9TIs5krvZ6iA2DbQbb0/qeb933YS0fjh3nedu4gFXU//6rarCgh89NH + Jw7tA8t0u5W/U0ou+DvpKm1SVx9+L9N/eNwtODyDN0PPY24QDDz4ox/pwPKt8CxkYWEZB71eTlyd + GzFJYOfYEJixTj2zBKIFefCK/nFfV5HB3Cu7VR+28xH6BmEQJhi23WznOHLbpThL4cel6764+HTO + XkqX69VDWsH40fDGpjeTsVooTh6EHKzKg8udQZ/weBjUpWbmX7Ea+N5zakuyjXfUrlyRCoTF/f15 + OsEMlarsywIGKZZMX10YZdNOBJsGJ6LVnzY9upodItlxg1H1FKu7+nDV7YlFosPojsf+LCgYYryE + DlY9tE8rrBZe0Se+qNIEsEylYyyqfLzJWdMdD/ze+Bm4IOveux0reDcIgt2kIsAqoKI7nUU80V8o + ccDqBVd8XGcZCTJv7o+Tayd07aOJdLvV6SolF05Xukqn68XlWRn8yvXNw9V137ziPAxdf8B5FHuy + cupTushRJ6mhFmlKkihJ7G2wA8NMEnkg9wmGAo77olUBrrtUOzDVbws4IgW9i/hqOFjjWUoGqcAk + UpnTMukbOlUZpHArPDhJNtDnQuYs+ZbMVAjzYj55fqziRf4rHnoBrMJuIphVgnv7D1rFUA2ax+jY + boCO9ZTEMRU/+/8lNsrVFHcewSYDByfSbq2SkVhpd6vRXBC0EJs2HEgYrIajyZzruGIvFqnIfJ2n + i1TVRibmxw0kI8i/EwK+upuu1huQmixR5Pkllkul68cF/I34wzIPiKg70HQysHRTcZrMVJ2bgR6I + 2816I5L9ZVdNVtv7ojzJVkMSF1tY3zgvZ5g4R1s1LVr8tMusxAD2Bl9clBUH3I+JPpw2vyWywCdm + 7av8pM3+eC6MyvGMHjpEHBlF55/rxe0O6HZEduMjtRE+kkFJwnPbcQu1ZE+6m85YatyYQrOlxfy0 + Ai2oXbuABg48wsXB8UlpaPb/NBdWj4Q4Aynr6Xa+v8LRmYJAWd3nH52oBUAm3W6lHkjJBfWArkpo + lpOSesBZST2IkXozZNwZuF7sBhKaZZxOZ8lkiP/ogc4bTesldAoxjRNYwfghGX9dplOcJwSGMqo4 + shX66hLJbE1T1XNrzUkvdIMoPtTkDf0Y1KMSPURXmUoq60P2TL5DTGKD2HzB8wuTjSEETd4tQqHQ + zq+3IYUIWGaUiE0UTyE9X8Inu7J3umN88XhrGGNQKCi4u5I6ORx2l8s1W/a3MDr5b5fgltitVA4I + 4z8RDJzTxcP0dppPb9erX/2+GMF5v1ZIlbgGNQkDgaNk5X1CCYI5x5c9nPc698vxvZ7sGG1X1XRk + aX1X5KCrTfBXJx7JUu6KVCM1/ypXpv0XPn1S0lNgknjZIKtdZueJ3UVcKMrB0J8wdsTcljj09JA9 + EL1spIBET1dp959tx4p8lPXXi+tPJ8McBpai15J/u6r4W//LesmcoIeCRNwReopCRy5BQojSvPUS + lDSYdcjUuBajs18C0gFThkL94jP6X5jlU61xMGTBp/jo/dEc1HxhknaKxS0gPOl2S9opIblEO4VX + JYTn25sSVoLjOV6RdWoY+dznwSCCGRD41anIKtF4sgL5f+36rmsNMaWWiazNLFVmDlQ8foratOAi + WE3zVb3ylJPPK28Wct8JpF64wxXl1csZ4ydLYV+Ln98ue9e/XWrbkQcOwmyxyOG5oqTH2VAKLrRq + 7UcFeUGVPDTF7YuTRbkUI89uQ/FqS1exmaU4tCmPtdkWOswlizhVdWIw7L+GJ/Z1nfIBu8pOJb1Y + 2ymvyyDcbx/Mle66nosJMMXqzlew3jmLB/CPpxLRLgSK1N2UdLx89sgqvZvOFOHVHLpRlB5Df+Ar + ZyWfM3iV78PRX3pTUKUGPIpA3eyp9P2IgJovPsK+am8D0u1W4y8lF0afrqpd/rpkA3KGumt+6Nmb + VzwMQ84HPIyYG5mFvbAHqY5QPTxQ/BnJWjnDarIBaBZMZ/BK35e6OraM21WtkmM2PRy4vZOr/x/L + 8DhchypNPSfTQ0rohDZcV/snz+cUVj+vciaLbwnWcVpqIQcnFz6D/EDlhGFxYHTFnuXwkaeyFphn + v2jodtusBZRczlqAq5JZ5N37ctKCy7xi0sIrOHldFg4CsMZ8mcsn+B3oZITehLmwuM9D0vTfvR+6 + x4jhOYLNRhDPYGNiC4X+SlZKKzh5e4oh5GRFsHXHoE5OBXEQ9ALIYJKwIYvcKp0UuRwwa3I0hiN7 + I7RV4mpQSLfH/QXYzqPZ7DHn2od1KAJ1kwSRNFAe7s8q/PIhuStnM0jVGaeslKxoO99tv0KXj14W + cKJcp6aILPY9j3sl6PVWkLc5GtBqaZtsYCqGpYYTpQDHdG6kIhgNmYhMVRPAhNZlRS9QUWrvrzWT + erioNDJsLOMbHhHE5cemZdTBIz9/ba/buDzgVTgPSNutmNVWjoBuqe4l0lSjrblDgsSHspv1P1d4 + g1/tUO7Dn4btWnkWP09gWHWw+oqyy+H2Pge63ZayCyWXKbvgqrREzm9MbdQNweIQK8+k6xoy5kQe + H0BXBKHb7HQYz6CBv7bTQZcyI5bjM4MvigJl6HpOC/gicbutkYuSyyYuXKVpdX11I0o8TYXNd90S + fBH3kaVmAP+IJLG8lVPKIlzjydZ/4Tk3L3PA4rJus6r4/h28IZwc/RsWi2N4Ndr08cVWRZeRUquu + l2vmN+hV9AaltneoWV6Jx01rFn7s+yU0zpyfcpwuQDnYbGUv6BPQVIpc36aBEtdAPgujqAyVudt+ + xbD0xETSmZie40gzk8Dl9zYzc8rK4epOlQSrYnmPK/h5Naw57vU2cR3O5daRK9loeU4fXPtDbrp6 + Fa0ZdyQmo71ufbWShpqj/pjmdWs7Uq7jU7ABRUiA/QJJgP144XoVH7t7mbfVAtsItsIKiELNIMTD + I9amAFc9Ys0eRA2Y3EHimkqAWKyTFbqoiLhcR8ygMzAUDZbRRFpC+APhJOQlw2JjHhXceoFHFHzV + z1rkOj1h+Gz3Unw6cHmMDNT3SwUqyL4v9ryQ2FkgY+s7v3BH4TtR3MtUjKqYxQCM+3H6AGNxv0q3 + S+h5ZKAWYIAtjYdIurKZ18IrR7dburKF5JIrG6+Slvf54qyMneQUOQfZm1dh5ITeIHKEm1uqeJhg + pmg1tdpNWtjn6aTCuZWiLwT9GcqdmUOyhWFLBJBXIYnJgZ6qKF/Jam5YGHPOS4lMTY0NkKB8Oob7 + cki+ZqNREQN9UEz7YTwIPL+U+lS/c4sV/BUmxKbQms+dei9eBFteZdUPddsaTI2kwhkWOn7clBJl + vH0u32oMOzKcrDNF6l0hmNe+LPPd0OeYCFXQL5Nv6Wwr/EgrpAvJzoHcqOezJT5NxpGTsS+JX5fD + T9s7vhzeLMfco3/85cvjnLBd+XXV3Taoyi7L1np+XhqUR+PZFnkHYaPq4SrSgRRPRI5FPwljsrpL + rfxfanPsIDHKJwHVE6eNM+mgHKuDE6BgN6CTVa/umi2kXf/gJmOK3bFDWakBh0ut5eYKFX5k0yYn + NrgdcOWdJ4y5sLMIW8ZcwzvVFtwEmzVfY/9stX46yUaj3OOrj7CU7A9rut3qsJaSC4c1XaXD+vz6 + v0seGZ/FkXlYR29eeZ7nw2kN/3UUqdMHTE2HUw9zw6lUSIQvxK/D1Wgivlrl1nxL+vewX482D/D9 + SS6KYWaWHxewN+cj8Xm1qa/KUfE6z0Q5hXk0XG9nd9uVmLAJIipjOgw2PqP3gBah5QXafJJwSkZj + RuggpzTV89UPl/J54CdPESHDz2VnUOVbm9TI5uGZJx5kse/EvBwJw7cdTqb4JdjDyQ+YHov7hGaS + ogmsioi56H+sOKrNAl0/CH3PfcpW88nhoetwr8TlmENCSddzSswmRBQzXTp0/llTdGV8RrVgqi35 + ltSIblRqlPjef9ps7+HWoH1sceR0gkYSU7Fpw7jbe+lihV3ZMNQt1BAWcAotGh1KGplB9rjTL8R5 + TAeP6otcf8Fimrb0Jnq+lwEI9cVQYhlhkkK7LX2CB/Aed4Le7FeAX8tJb/kWbSQc9DL1o9wVe4iD + mdrGNJEQ5fs6GnzHNV4q28Q7Kd9C+WKB7CG3Kgx7gLj6VdwxrWasEe29k+jICdqwruhnbH2dqgnD + 2SkvksqlaOln06UgIc5BR6k/va74W144gks5cSQTfg+r4txzT+l1SGYfU4b+5TWPWoDn0O1WOrSU + XNCh6aqs37v5UqZWj71CVNN/M4w87rn+IPJ81/PMqCbm5MB0hTmICejmnpQP/1DJ3npbLtlrrYGa + pXs8cFkF+6AxqKY0t05aHPE4ckvxy+RHquMkkn+sMpsriizfUyt7gnpKAoKv54WYpVPkCTSxAKTA + nvu3of+34jsOymFNs5uJ+4Ws7pwqJdK5DO7T6zz36c32G3oyRWl6XoByVq0zKTo0Q/liE/oz2LKL + 9Buljo1AjVuhggTzZruQfQIrB1pc985ubjKa71jHSYW/JN9rDQu/6hhuKaIynff/VBEZ9js0hczz + CQhHL6w9s8U8n+KjsAYOF5XFfQ+VhduBfK3a7cNqwPYS9LT0O+oM45LwAs4J+zOMbrckvBCSS4QX + eFWl5pwKlEozauMVCxD4m6EH/3WcAfwjCvrwECsRS17oUDpIPdb6FZhPSsOSW9ypywZwD/wH97fP + 7+HRt6ED5isM221SMoBhUFfb6WYu9+OlYE29UOmuoPBMoc0pjZH2EsoUnjELS2emwNQSU4U2zOJX + VPLoBkFQdzw5AWOch8WTr6mZ6oTmKC4egUacyGinhmM21xViAl7JzlIcs+Yx6UbFcvzKBnvPeah7 + YhLrinLfi7oDaIu8soxiD1f0je5smx0KMRVDZeeLbJ2D9PID62UoRdp2hez0xXeXc90ZcAsssl2f + 2O6EOUxi4wnhamI1LwqOHK+dHaoesqZWU42Y3GryKp0Yo9mclTFIXlxdXpzhfhHAHHJf9oTKijlW + MM7KDj+BJ3v4uGBWiyTYvROTaxFDMhjAqvRs7VUYtmc6TXNEypHs0Lnvs2nY5cx3tS9PRytFWX7z + GlIzwVMzIYqdI6cNTYt6xHYWyAaMOUDXaNzPh8vRZvzQn6RIsN2rSldUyVg5ceh/8F0uEQoIN2t1 + CMd2u3xJ2+yh55SF+UtA351st55VPW+V6uYGYbbrK7S2J6y1scV1iDWpQOi05lKmR6wZRJwykzJd + o310M1/KfXTz8DjHAn6Mr8mMM7mdujxkXvyyV3HHZ3i8BzIEg3LoSJZKyXs6+XzWDWYcJ8fy5HMD + aJyWV4aPj1mu5PRgYLz9N/3WeY9dKS1eGAsbvWIA9yq/2kve4SVZf8LUy65wImIqnzm/dniL8hm6 + 3Q4njiQXceLEVdop/nF5UjLRmeeHRZy4oc+DOPQHPg9dV+4tmq36w1BWvTGv//VslKtVkT+8f6lc + nZmG/eIf7CUMvigXJHv6H/NR2ZxWWIVDHe7EcZft/YNJRcHMiuSc1aRFxB4qh2HJJ60/RRdCyTqb + 99vF/dSssgF9qz7rAvNP/ZKx3vgRWQ7fSk4P9PklmCFR8Dx7QRxYfZk23/V34SFZibvuhE59TY+U + 2btR46gTJaf3D5uhGl4YBkxUBQ16JV5ddqEcGngkmymv1FR58Q/500s03tUygT6irRtzp5bb+bJ/ + l27BtN88rNLt/UO63Wi8Cd0MEZcfmxz0eFc2OzapCrbDNrOQoBWlMe/hYtCmPvd5N1wpVNE5Tffn + NAllDLZmNF9bpA8wPya2Fdw9s1KscboFU3uienxfDhM/Jg6TPcX05KI1vpFkmSvmH0ORrEETZ5Ab + YJsuEAsX76SiDhKlSFLyBZC7a3RcRhmTVe+4+Z4O5bYmp7pmHsg2v+y1W9iHLqNsyrY9Y6v+dIHt + 6jvUM2rHy+Z9F/Rdyo4KYtJFy63k9laa5hY7bNu2A1Y3CnY7+i9ob2f1Vayrr1jwLgKbuqUzSD5k + 7QxSjZjOIHmVVJP5JLHkSMM7hd/H5YIdzQkZZV3Nk2lN8neJCU3vtbserXQX+WSSJj/yFnldLnNj + SXUcaV/MaXzEnHbjIJ+x9sbIJkx3DF2s7voGh0z/erVk3vCTIVmMiiOwIz3OqWYpK46EXrrP6HAP + crEc4rXb5ZbY87Hd76zGPJaIkNxvhQiJt1siQgrJJURIvCphj26ucOMuQkIGZUjIOIRjyBnEoScM + eJwkN/RF+YLr09nyrZoYx0Yg5i6dKYQZMZHMWHehSv7DehlGnaalRB5zOY8r8IbyDNgC9rCe/4iF + Zrguy4CuEQ/jiXm9i7rYXOjXkjVxB7a1sCTxIRlt+uuHdPy1zDlmig6L4NqDuvc18KyzDoZFKQZq + hOf9QpAgFEAruNXL14gvJijPi8jWLqoVtcDeQjGqgR1Qc83M3vHr0KOiyHXCIGpI+65M9q59OSWv + 9zvSIFOBS+W3Z9NDUKiMU0wKz5J2btZjtsS1Yz4MOvxqDkrBDO7Flkd3qFJlEwOZP5JvMJ+JG2N0 + n1VSCab6NXZPMikMwPp4V4KSuDFF3M21NL56YvvIQEkDUVqGP4qjdNdsstpwA+GVeF0aW7uHY7+U + I16XzX3o881sBcx38l8hZ/sUjdL2eUP/l/SUMyC78qt2koZ9uLOycygoKdhnTiSW5XYh1//OD82P + GqkssSNzmN+eMh7FLcMd2UN2imqukZymml0lFWa1HKNjFhWSpmD5iwuRLJLLMnlp5DU3ZicUH+1f + i0bzz6+WI48LzPQgkJTrnWSLBBUyKlNEGhJEGrz/gUtwpBYNNOagVEPs/RpGgAPTTZqg6vY2Gna/ + 0n4v1BrTPqAK5bP9YQYPykxp+JYnSHlRm2oHsZtMFJWK6fOmC3RzL4hpGWblNqg2/pvu2SvKFDtM + A+u8D49Yu+wOesQaWIcaMIF1xDW5Ra/nXBYpmKd9CY9L4iipbXbNvd7OJ+S9N3CvaIhgeHjcs4Yb + tY1FuphwUtZZ2mN77UE0lu0lQcUrWMNa2aVaHIAfZZk2ETs8w316x/iR47Zzeemn7NGfVDMFACh5 + WWI5f7j4+9X7q4u+rG1VWUd4/bXxB+0rKFZHZQ3hRAxDkZ/kun5WeCndhBY2Rclf+fMSFiKZ+FHh + FNl/0F2FUhC08HjR7bYoBUHZ40VXaS96+/mmVGHlsyguohQMPe5x5gw87jsxa4YjXc5AfhmOtC0/ + t+cH3IlLtfvPCYzUjyPaV38m07GaPDpdMXiLC4y32zDUQ7b7hW7E2C7U1R2IcaherZLlaLrS59Tl + dh325vgfPEW4S+lVTkgG4yTd3s6S4RrPkkn/dpWMvioB36YjRfVKjKowxUB1a4+NE7jkmGloq5W4 + OPSKzhH87sloPkL3voAcrxrlprr5PJTQ/Sr9vnlo87zLOOXSwufMVJz8Ll19bcwI7VpeDcqAz0QK + zev+Oe8Txx2645Jpkc1tp7zW60+vIF8WuLpteBbodssCV7eCZ4GuSjjo63clkBhXTCSzwPUV6K+h + Ew1ATxAaHK427tzQahrJIknEsBcdrNUdsR9frZIyqkruwTGCGWn0rmb+gtqUHyeClRuyUkpRTTsD + +brqTS2aZ3HRh5/578OYRZ5XrotFUpGdQYy6vB/zm/S5sb2d/u92upku8pEShU1aUyrrs7qEJd1I + 7wQ7pB/owZNOZ3OUezhhsrJTl/WkeOHKsnizvfNU921jB9jDobnUB4Lo7lACdzztZhRcFUupnSEd + KyjLdgumjTvW9fI+3ZGkHk9XeDzdw+G3rdptq6qpYI/y8uZ5e0heXHZ4e80KbTcQu4XtzooCA1mm + /a4SaGaR0E7ayfu1MR1+RlVs7GjAer8FDwLdbgtY75d5EOgqHXw3V+9K3Iuej8lvRbx6uO55A+hC + sVWIQPtwBPtOun6cIdndVAxXf5KMR6vb9Mej6Bc6+W6WCa8El6fNogC6UBcPNQ2R7g2anR9TfXA5 + rK4hzoOA8WIAdwlKE5prC8xor0OiZ37s1eKBMeZ7Qez9s7d7AAblPFSjSUx7WCYrEIuPCsgv8esi + OZa0S7PR+Cuqk2IMlTR9l7CsMwHYhlSPZZErOgrIBL/rwzthdtztdtOHhdD/Dn0g7l4gvXKySm+p + rLaHczKDvmeU+OqTxqsb7qLmYz+ZdWhdcIj5mbhJRy+5t9Q6Mk2cWWIXrJyHrUQ+ZW1i0e+D6wzv + sl+lVm/SgdgnD9+yQOpHs8dDDq2IzDz5UcO9hKmDK5QWG3P8NpBEeLulxSYklyw2vKoIfC5LBxfi + KJcgibzQj+Jg4IVhoMo6rwim/H62hVNku8kOqqv7efVBhVqpaYKVqy4Kx8my3Ej1ARIUDhATxDJi + LHadovEjpGKJy1CF4JP+djOdqdiMYfU4ThkL3LaBwKoBVjyrqhrolbtdJaEL8k6sx0kX35LVWsd6 + 5VsM85+5SfXl3MsN4DiZjuHYWfdH/a/JI2iWiUhSekh+4HconIH1/FhTh64RhF7kIikgejy/Rv3z + 2XhYRrLv4YzTJl/IhMkHJ4ivFxWqg/iG+2Ia6D0jpqz1+9njWOST2+3OTfFYWRGxWSUPoxn2x8Ei + YVYF9JI0UQ79aJyleXl1M7vlO+4nsxaQ0yHr+8vZ1bDFhze9YhSa8Rc4AsbT7VzUEDRCYD6J0Dql + IXaJDO9+NENKvXVi48hocKjuJa/m5VwMDRY+d9P6Sw+Kfe7n/qBCIzIl56N7zDWXY7RnCW5AukzT + yfMTJDYV9e4jr25OBhHhTEzRgXJQ7kREpPACwUCHtSqzMgYVFCctdzoPVqeGpJztMdxKB9OlGewt + bwuTQY9Y18dQA2Z1jLgma2PGc6lZXZ5eai+UdJH1Kq71L+GJHj4mSjJAN6Ook0MgRDe5QMR00xSI + KBfiB5xS02Soa5YrS2wFBxBWSskBIlltDfvI2ZF510X2HoHyrpL77UxnYBsSB5TupF3L7RrYm3nj + l+Xm+QEZaclQj9K3ag9yecbte2q0yXxQewf3aejya2qn6dwdMNXBWXrPJJv5WdPjxk6sc5DC9+zI + iVumIMmHrDOQVCNmApK8Sjv8crVkMps5Xz01xzzINS4YHIMXF+cXLyWgSyzqm/2XvS+8v15cf7rK + ExWp0b8ZLZnv94RwkZUUMErjcLgnnV4gOtHYsRqffr88OXilOIcjujJffyAyGvIt2psFroTKOgTk + yYlcKqg2+vSZ75sRKw5TawliaxJTpP+F7zG4EmI21gPQAbbLXtTfcvUyjafufmBHzG21dukR25Ur + GzDWLV1T5bIr5ElSoTS97hT0Ui5DkG59XXvv1fIrSM0/scQrImnI8xyZ1BpoHAJRATifLlICxJJa + 8+rx0FzXgxppVlokgtN6er9Q2bMI0982fZYypkXAEpWBKbJIgQa7nW2tzclWInZE5mOxvs/T2f20 + P1ouR6C62HvpLR9++iooLwh5ftQPQ4ICaUbcvDT5u+P73Kcpiyj5wR/wf0hZ+yNlxYwYGc4+Mtdr + USEvbrerkCfJxQp5cVWGP64+8FLCsCNYBgsV8pzFQcAHnDthKBOGTzXySy7JSc2lvP7KTwbaWy4Q + j6F7tosJKkGiFPhq+cAxYIJRMwHRNumPNv3T/kYEVLfrY/Soz9f90QyTxNHtKo0WVUu8Tr4JlCZp + isLerV5pbdbpV+3KgkLdsGE1vSJFc+DtyiwSVd8plDl+UomGjRHT2qQx0HEDXsp3a2qiMgYEbURW + bej4zDl7fUO9Mc1/fMFVYiZQR2Zh/HkGfo2p5i4rFsbjqy76d7CcCaN6dT9aVMV/Qnj9Oswu+DRe + YmK93U5UmoAhh7GwlRz1xRVUpOb7xWaELUe+Wim3QreYJEXtwqziN9nbdr55Zv9W53+IAqGad9Yz + ovdXX8c9scvpQn4ec+klFLqA3RIobexNcRObqqwmzwTOgxrltDyBrE56XFt4Z9NatBREylxFF6nl + oy3s3Dpq9fm4gIXdtJ2IU160kVvsjS/ak3ttvv+a9mgrFbalwOa380IChZMDWSVzX4U05IZ6W7bG + atrYPe6+72jKvwNiS93ksRyaN9lXET9G/qH5aAHrIAFBe39ZV+EYRgwnnz46AbMvYqDbrXRCKbmg + E9JV0gk//X5VzuXkQYHpNnjzymeO70YDnyGJl2bpuhXzCD0o8xf+y1N5GOS05UGBwyvn6RLcTSO0 + ANRWzMMb8qejQPwzoWuVa0EznK3j/iyFmTP9N/S3RMXMVbQLle5Tuiwn6GQ3FTJJ685k5gSx4zGn + qLeJby9+dQ2FFzOLICykV2Vr5kIstg2HBcCgHN8th6kMh1ARMajglTRZUQJv12f0nvvcOC6WAQeB + lJ9VZY9WcOjNknUPF4lOLoX/dQbS3yRl5zbdARb/XpJwI0m+w2+4nLYarXEE/0FApU5KQ8rQFLsh + TTGFhY6bRH3HoIDPB38ab1frdAfzTDcMZBEjr2PDIm0rMNSv1Cx09xGPWwLeuf8G88scKZr0hZ96 + 7Wvt6RnrOJdswgxz0UU6QNfziazpI+ACFSfSZGpa53shAhYvezdzGboQNUI6rgVyeuPvdzFlN0Tk + Hj80+mTvIv/PDUeRB5+CScyqTdfxKXZUHuS9Csi8QDIDfvFefwn6P/pffFgo06GaJjUibcJcLgIY + lobkbiTQnbMMJbEsBVduBsrdAPdrC5LAPEnhx4IW9AB0uyWFn5BcovDDq7Q+//73v5sKrsdDed4V + KPzAEI39cMBYFHGnGSXhXzNooIySoJIJs2uVsAQRnC1V8AbPEyfBDeKg1y1EcMyoevv02nFbgGfQ + 7VbzQkouzAu6KsEzvpyZ1dsM/uaGsYme4fowL+IwYMGAxbGv+InPP1+9Pj+7gq7AJQIKhlxQqMVe + r1ds2X/xdjthy5dmKdUtTKb+6MdUaEvI+LMUOPHK9SFxUUA3paSBNch/mN6C3oLoBtCn6kb0EqEn + Bl0l6JFQlg60Wa4WR1/KIhl/NWdObFIm5EvdmAuf7ZTLwaeL8XQ5xUmNIgU3l+mPdoucwtUic7bT + aN2/344Wj7NhLtpX7NRKk8Z3ojrvdwzzK2KlxvZvqM5RHXHXc90SVUbBXZnUCPaisJYJI/8FmWtd + TBw1B0wnOK8zW2FKszDiFc50MYBrsUyLrmmHm27/um/OXNPGPC68Wt1XVr/acp1sJ+nD4/JhNKt2 + +PM66zN23dj1ilEPUsvOKWtLckVPKn3KRjO81shVo9N7brtAD/c0tW2DRufJZHFx/usNu2Ls7ZzB + jAsdhd68C3FC2VKf34VAim9XTCA7AZxscfsJ007V3Ev+ztdGv5w4ls1oSNcf0ZM7PN2uDoLyoFmq + 7B3Q/x2KHxETMJzxCeKctPsE+8frzR2HbI8WJ1PLb9yrAYv4gEO5bi3Pb8vYwwFBA6VeBhraN3Ti + Ixa0hPaVD1lD+6pGTGhfebUIr6XdAYgfPnvs38KrJwL5UAJv4aEAM3qxedmreErelD0lbzVeBMwb + hznEJBKE3Jyp+PkjEc5D3Q65qQ6sw4MhoxKd9Md0Qn/AWHHrNLhfQuj5tCA0JSRCRv4cvAcR0ESE + bU/3oiwT+TdsxwcE6WKHqgPUTViWCrN83z2HBV7M1FxIaRoc5DZ0mqQNKMZ9308xS2BxP0PKtkW6 + khkG0DPpaplmQYSsUEviSrR003QU9suYiuKTqC2erXzGug5LNmEWYtFFSbW6WkoP5mb1uISFALu3 + Zp7qVV9bcuGm5DKLFwZKJkHom+2Khe3T8PdtYQeaB7noc1IPrUmOmK/nyEFyApKTSwfp4INjh0II + +gzIiZdosL+EgnbXQ/aJo7t3dHtZrRHJIzJBMpa8fXM7IuqPisXXSYLxXuJ3VEcdDjfiIk6i0P0e + V7Dd/0DlRtfe77fTRloRjN75R4y1VATlQ9aKoGrEVATl1ZpSKISMWS5FLVRmwr3sv7i4uXnZSxYP + yC+zEoeXefe7ydgsrkjggtD8AlcChncR03ER5RAfmSQYKZSJaEMYDR0kzN4J3lJGqoaqNPQWGhEv + 0H66ipMldrmxnuEdi99zm04OWQ1tgYXU3CLKs3fXTujYJ+/Q7VY+bCm54MOmq3RyX3+6Ludzx6zA + eBa+ecXjKPaiASwwUUyP8/Bah67QaBtOptlSy/SsF9DCy0IQ/VgkUsAfdGDKxGNBOJPhDHpZKGYK + UmXyyWBtRRtnulY+i0SUyBbrnfGeHAhvLsFwOdo8fB89rkX8U+Z4ZDXJ8A4G9L7yjl8vVuXM7vaI + cjxE3nm36PXNQoHr+v6sdgSHXhFrR7tIfZ87vJgIXOwoIzmHB7VZxaEPk8D9Z+/3hSiT33xPVRJN + OQNXIePvmiJNs8FmJgyeZA6Y49/DdaL9oqDD95yuav5jThQGkwQMCrO/LBWpCnWoK3v65yKTZJ6x + UJhsVguiVWJuN5I7KTyrzhvuqmS+MzUSdhbrDmuJgdeN6J/x+nUV2Naexj8FOkEnbhep2nCHMGav + HZf/1/DEHmVWPmCHM6ukF5Fm5XXJ6npZ4LhwXc+NoqgENvvKjTkL/QH844YSWeYC1dPp3ZTOFkxo + RLVUqKqDPmiSq3S0Wo0eh/hCkzxDicplHIgDiPgeh99xRUv2AjgoQckFSwIHinJC0hW89/fh6D8i + K4RHIROuHxY4FBbM08+3mbcOlzGlTXKP+jmySLYTpRRyLissr92gBcAk3W7JQSwklziI8SrN1nc3 + 78sKuY8ul0KBJeOO50X+AP4NXFVi+YnyXUcZ0UbeWNTJz5nlc4wVQrNE9Od4tEVYKVFUlcwe0Shb + JWJes+iG8otn8LeZ0obfre/K2rBdVvxPxFfOZ9+anMC8yAmsRfnQUFgiBG6T0S7AKHPFc0pi7+eM + UA+nka5gC0P3p+Sb28KWWApoOO7+zInrTxKDakPEaJ2bXvWm+ye1qz1WJ18z3w+OnFYOtewh6+CF + asSMXsirkpFvNPErYIYy2qIqBqNrfAibuPJOY9GCgBJyfYkpl2FWlS1P67XiyN7eJDNEG9zBGN0g + pVtaJfuYS0jzGhdUHmZ3tMHaHJg7xLMAxvd2Pch1eM7PY7+vcIIFyklpu7N1ywjlEj7ojl5fpItc + xydwy79gjrTbUfflntqBTMMDUsumaettFZ6mTB+YSVPc5JHNWrI77ZhcdXirzKfAk0j5Gd7ULy2L + sifmRurT8I2EqIphwvJzy7ck+jKageMHuENWD8mVKz67RZpztoDibGvHHLcHCruZcirQAQ8saaCq + 7exD2glwnYjCMJerhDG7Uuedj/5s8J8a2EELmBwJDAymeK4OCsU8JOgkbI+747NcCc9fBmCno/yT + zuq7u0rO4Bk14zlzjlhbakb5kDU1o2rEpGaUV0nDgRmmEzREUE0ym4v0ul6B7pxy7k7gkR4+R3pN + wEiviclWFynD60Rgc+FDk+1KQC88btKv0xrlud4geP7gsi6HPREfWS/hQLuDW2w44hso4hsnIlJH + 7PwaBalho5OQYdJByuyzTLCroHXPjgDh+xapL78Ge9YNnYrZvTMr13obBvmeMTHLs7Bl0z9hz+5s + q1UcntxtAX9Bt1sywgjJJUYYvCoh0d5dlTk8BdBvgcMzdF3f8wahGwSuRMpcJgjcKyCMvo3G2xkM + i/ZcSjvzuE9+hm9J//+/GN5BDyWZDSoBx5JluWYL5Qk3kxYoyTXfbxf3U5PZE5Gd6lxhTuyBusyf + ypFMII9gryDspFA0xWRdpisTTCuIYrPaLAcjxjzOY69Y64RGFZwyMGuoK5L+3XYtNk6wuIagamHW + 0j38OdcMfKlXW9Rm9IRuBuPOuZdPdWuV3+H5rll7tPs7vsFhOhZZqcSIJk/a5EcqksqKAF6xU/RD + 5j4ghNUb/7N3qqMIcKqc/n79j3efwU4Be5vOcFK5YeKZs9OcTWoKGnVJ6iJ8+x1sRV8VDofqkzyw + hjqdZKItTOJw2cPFpMluIk+UHwURyzZQ0aEtVYOIqMyaploruz6mDXf3wNhqQMx3yFjO9d8+n4rT + l16tecbbnNpipuKdFhPcVgPBfQZvpgIEcv0oafURm+oMA/IFqKfbqhRhrpvys7ql4XFQ4AosXUqu + +/D71c1+jK6uzB2Ra9gamr+buPUzUwUCDYB9HrQlJqFHrAGwqQETAFtck3Qk35YsvLq8An2bMqJ7 + 4spr41JOEKJZs9iTjmNyQqJ2P35IFxNRoUPx42bvrz1Qh8Brfd2HHX+0SGc2eea2skHF8U0OqLxP + Ep6szgTPwuaydFUmH8WFnqgyC2sSkGwe3bFJeG55IKaLRdK0X7RIGd1H/BNuR53G0UOdNB2fh+3K + U/Qz1inTsgkzY5oukoq+2C4V7IKEWknhqO7lfu5/wlt64kaRAB2GFMc5WPmImatN0TSfgmxItKjR + lWDUwvEymaIlYuuW/iWYOFTbqtzWyeJbMkuX1sW9npt/eokoRza99HOr8dSex+LA+Fg7VUavleh/ + 1sKIfXvNImafdUK3WxmxUnLBiKWrMg386iZ4W7Bi8bNMEEfXezP0YxYE8cCHNe4yDeKogYu0WZHl + UL/wnJuXZZQ9sABEbtWYdprr5To4WQpr4WG0zm+Y8MfVaNO/CXIyTAMYn73tIC+bxWCChUEpE0XO + Bpgx9EVlxEBpW7/bfoWeH5nWtR95dZiNse/HaCEX4T+yg6MAMaiTFMxMFrcWCDvfwP4w0Cix19kw + v20/zLCSft0s6+HqOBEvIdaJzgN3RW386z79iiydQoPzqM7QBJ+8uflCmT1iI4DFOp6u5TYkLmc+ + uv4Lde+g7x/JvJ5B/6O8+LKdsdpNzs8OhOoKPjwbTOvu8nIaagl/gtO7S/91dycZ4cHp7mv1OOcB + 1803b31WR2THaHcI1Ck8/LFzkwfrtHsZ7lDXiC8aZsCeYnHslNKTO66QsHujthrsQ+Q12sRUYPZ3 + JDC3d4/T7XbgeSS5CJ4nrpJmcXL2eymflfuoMJnYea8C7nqxNwi457OAFAvCFc0Ry9BxfzJJu6jC + euK809LLV1duwecXBA/yPlvGESzbLR7g6GqEHZGQeRTFuHmEM6/WEayE9k4K7zgw3bl4uuYJq/EY + qwB77b+AEblMNi+P4cx77IMFls+ig9n+OJ4JT7BuDT4EYc0m0MIq3d4/iJYIKJbIAXo4bTR8YBQE + PflJwmtV8fXt+ZtBHCWKSHFmiUh/PZp9w9SiNkfNPmZW++gmThm8q36CWbW8h5g/B1uSViAi8qRl + CuAhgECuKmjhUWy/ldLtlsUsQnKplAWv0lZ6eXVW2kq9KHBLdSyRj6HGQeR7zImbYUjTFcj//vx3 + 02dUuAKqFSPn0M9a8V0AWrlMqgJOHLRRBfB2S1VASC6pAniV5u/N+9MKVQCh54qqAIP/4wP4Jw4c + 08dAtD+G2TaaTdLh1wQNOFW0ttYouyto/k8wveEbkofHye5Cb9BeS+pCnlGLh9BEXCG+2EW18s2i + mBzNAwOtG5FMC5Xkwx+Ps7RWD/Gw1r22Dj7/thlI6WoEE7xeJIv9IGjSmZTYHABx5IdCg4hDMkNy + QQlZIf0tqQ1P1JvX+CoiMzN7Z6y43aGQVDJsR+Ty1N1pIadGsfmlWGr7qDMEz9G0BCwVGteVguon + u91XdMI61GU5rUs0P799dFgL6ke63Wr3lpILuzddlXlOXz67pd07cgs0P+6boQd7d8AHHgvE3p7f + vQ3rQkQyvk1h4cxEf9CO/XUGTY6XFXVyJdNkgdn5M+jR8XaeS5Pk/o1w8GnfGdbgZizg4gTBx3l4 + c8JrCFuOsdVlipV1MI8KFg0+nHNGSTdk4NyUvSO9L9dvtR3DvDiUDkK37CD8+IQOwtrCII9MIPNN + tMyf+SqdOCo7cxr+zGo8tcRdFTN1A/+IO+1wpuQztjFT1YQRM5UXZWri42r0bzDl4ESFh+BL043+ + zcCMavhTviUMqsYO0QB0BHDHYtenugj5CpskX/VRa8H/kmSG/8O0OxyMBBZJkB9vOeUOSKJWa49I + Rs4/OrwFyQjdbnW8SsmF45WuSuP+7BJzVszzlXmsEIGN4Xz1QxYEA/gnCmUe8Y2IkP8XOujfq5K1 + o/6lkVpyhnv49HYrOhTPx8t0tXwgJAo6ey8nczcu2UrVfPCm3RTVVtI/sTlvJvgY9KQEjK93f5OZ + 1/FrfaMxoqwH/+zdZNy2eLyfZ/l1JrXsFPGV1dEpdZU1KoREF/fuWucDHJdVmBVOmuQbDA88/OHs + 3cdMAp292LLKW5XiELR/AT+c8X5WzHI3Wj+or0bhUjcys4vm2YgL9LQFZvxuMJusB5+X4QXEUdRN + 4m1obp+gKY+nMHnwngc4ndM1qMStKoUiqobEbkvvVyPY5WUW7lAD1Ou3HWQ9B71mteEGcRQU7cPt + 4i4F02SSC0Zbvi1OM3HM1U9SW1ksYLE4Mus/t2UEzQsoMUkPjvo8AwithS3s+Q5hLWW4FmphiMWQ + WwhWYiVdgDhqaCD3y2s7LI8wEp1UvQc+hYgdXxLF9bL27h6q9aU+Hi1FSV9bpfcZ5B6qaejKUPN5 + U0J0leF+sKdVv4EXG0Jgg32o4ousmPRKH/F1/qTrhS0xMrKHrDMoVSNmCqW8SiqGgCcElW86eZwZ + 0Zm8wl9703XyjRl3ghLEwCZw45C7PQmmqNAbCkXTjdCK9knPFugQnQrbMUkdTYueU9GqxWXZNc+7 + jLONNdLGQm65kbcwZJgs6SUi+p2GDGKWkbvkHpVKqcnsW1gaESaLQLCYHFJgGkWqRHVIbyzF5YpA + u6gzPaiZnxT0BVHk4dd+gE6oZ0NGBCi1+1sHJmggTVDuefbxObrd0gQVkksmKF6VScCfy9BzYA+5 + RQv0lce8OBp4LgtlVv2ZmA+zR/xInMPyN4XLuxaTRs1u9KyiYpgI1+nNcsP85aD/+eQzLID0R/42 + PD0JP3GVzChGIztaPjyZ3kFf40EhHocxxGTwNZi+oDsQ5HmpGnqY8wVfje40xMiRSibeVKDanU7G + ofs6f7sRkQr82LSAc8hvLIo8PyonFbcUmadIR0A3P/BKIs0672SWLu5H+ZLvinacyOG1r865x7Fg + tGC8X6WzclV5ubWqACML4kJaUl1z2sTHAcwLx0Ul30CjKxSQ+KJ2LVQgOexoIKj1HsjBLnoPrGfh + cX9y6FraY8GYHo0qsLEebg46nMqZBBTsBLiDl2VMoe+m+6BpPzUOiBj98vuK59rAfzSEQYgXrWLW + t5HfFJl0XPKiPEzXG9g5+vN0kW5vp/+7nW7agnIxxyeQsEVyT/OtouOX6XpKHQ9fkHku7H0fflh4 + 30lGMd1SPfAJ/1uLEjmHLSC+fkEtFe7Q5RlXv7u3mgt4zOATFadRh3LqC7ckXMthGCviVFGrpgn6 + pOGQsvpapauJ8sY/Pl67rEW4gG630tWk5IKuRldJVzs9O+Vl2BHXK4Bae2+Goc85DwahH8Sxqk9W + npVbwd2H/IuY/9lAwPji/N17PJDOz66GcLQIEDL608vj6lNKMb0kIqEX71e5vqLL9Q5xPVozOrLg + J75EY5fwCgU8pDg89cvA7UiWi/7t889XBXf6Ej3CMvCmmjpnUqmDacnLGCnt08Cgh323rHgJIaPM + Y2WWf0XFbCXNzYGRpzj6OZzWxrtn2tXJjfZTWRAa19WZVQs3zwKR7yGyuwuplmFdorrrcBbFRanw + ft8QRlQQgoxWGyyVgJ1h1icASKQ5kshYNS2GThTvaLH3H7REemIv0agrriOq2JgEQ9XeNzjbRX+O + 7lthk4aOR9HibCzaHX+hRCvAQd0DhtQhl/lek8b+I5+e91lotbgzNK3WxqNWCvtJbM+6Nbu69WYZ + Ia944zYD1ZnjdM9ivojiisVzwubhZxBa+VlM050zQit9TXP4BT47ctx20RT5jG0wRTVhxFLkRdLd + 7h+XTKa1f3572p+kaGfrYmO5BNURkHnC+uf4XE88LTA5mRcfjMnZkNu8T8i5XhxopxRwNhfx9ei2 + n//i9oyPvjSPCnIf0l07pVUE+tdFW/4TQs97oG08m+2QEFrN1doNoucesnfsrIQzVlxr+8hUO2pM + O+rpKYsEXbz9hqoesdtPdQO57VRdo930br6QOCSY9Hs3G32DJV8sQnxxdXlx1mfcj33uRy975Vvf + g5geyhJRadj6xNYac1fzxcn7u6BQdonC/f3lp45Jrr3AozqS9ydnneB6HVAJ8rTwWW2TUDviuo/8 + 0oTYWfBq/VH7CP9z1eR2hPXnOWr7CZh75Hjt9h/5jO0GpJowdiB5UfLHLO5lIu6X05uhqc+prQcG + l0f8ZW/XHQw2JxAndiE3cKSCR1lJOU1uQAYsDsMMa9ehB1uQVagJB4LFyXA7WsGnr1B53MBx3iBp + h7F9oK0fMUqLOTQX8SCr8ymL33apQ+LcL42spY25hzIF6q14CFtb0KNf4R03lr4ED7R6Y8Da03X4 + Hpl9v446k4UO6fjzR8RBOIAZQ+1OTGfvhU58xMJ2yXv0jHXunmzCTN2ji7Qn3aWzxxlGRe5nsA3M + 0d8oNI5i8l7DfUZLWMnDHJm155MyPppPFynh7B9Y1AMiqcgje4uDJcp0s3SRDMej1W0qQcTQsdsh + 9umh7TSrjI4vl0kX2qfo4DvxOmLM0Lc8SVbC4fDNlnbaul+6avCXlip3tsl3nsTYUhHujB8JNn/K + hIAdaiS4d5p2mg7U464aPJwjqVldlmUvs+n9/gXfHldnCI/e8yOn3Rkin7E9Q1QTxhkiL5KGu75b + sSaCRKXDekHgMs952bv5Pu3fwdLO5dmYtG8FNsUbaKA3may5cG0ieh1pvqFDq0UStf1LRGtk9Vhi + Kqq70WGdkMvkoNybwFTbh9zvV5AN2p9ET0MI6Pi01WSscOvkfpXc72UrHMYu6LuqhF6EQNGmWX+f + biSdtqX944GdwPPTy/bLqsn/bJj6dimjz5RhqXvQZB6SDww2Cn+Iq/8J2AsaCYQjIulTQpAuZjJF + pkZVP7pPZpDnKijnmNtncdPttlDOKLkM5QxXZRb3xSUvIzkjeZmJ5PwqcMLAiQeBA+cVN3E6ZNaq + 6bsbSyfBi8vT9y8liwHcNtr0p2szzwC3nakMQsmk6umcl9JvTBWokIJTR0gEncwCPyjmzOiYVFKX + GcOZWfObIRsZIqtKi6sJGAp4YSbKUYbJpKT3zHLs5eMKtu1JIakk9xnH/ekcf1qXb13TrdPlQ7pe + PlAuCRweyY+m+zHLM3vgWDhhKUW+fqglVQVOqQz0OA4O46loOlUPrjimPIwdnWuxxfwZuSeeeYHm + wd4eBms42jG8+p0qN4TGAVRbuGbvZGEEGnDUkp9cPmTNT64aMfnJ5VXalpMfqaZ+zXts8tevkx9u + ocLyB3qRPQ67D/lquoECl8b8LiGWkaU/fy3jU6teXWK8dF0n3zHZZlc8x55P4OX59fFL6S6dyHPE + l7l/G/p/s3wv24F/dvzHnm/6LvgevgveznfBq3wXnBTiebJUfJtzUVYj1CSdb1VxrX+Jj/TEg8Id + 4TkUiAs8h4zW3DOiO3Krf7cb4rlwCqFzRVehF1JfVU00LHM4UUHRHz8k46+ULGtrXvvM4ZHurrZf + 2/uFPtpfk1zQ2foLdPyJOf6Rw9rFn+gZ6/iTbMKMP9FFCT397uQzurQSsBRfgNn1UjsLQx77IQa8 + C8qEWobXqyXj2MrV2/BddOS4PdcNmOuGuBhdxyOHSw3Pyr4aya/UJn5ZPFXNnFAWobfii6DbLYvQ + q/gi6Krki7gug0TDkJeL0F0HjKRo4DqRwODNuy+EUwI7YN3f4FQYUQAOAbIeZ0PxKwUM4Ddxgww+ + CeToF5eJKrf4437GPf/78uWgP0lm02/EjyueIDiu+cCoxCCAO5GdIezxxZoycOHO6cpMZpBwXnqH + Ou6PZutUvvT/bkeT1VYMfF6rUqjWJ6txF/wXmFXv83Ixk+4p3Un9QidVFqyHrOACubwa5Gqv48CP + Y+6U/DbXuaI/06PiFYt0BkZZff7ts9ogMdwYjB6NVV1ngZhY0xEVCK+impIg48WNhoZqvUtNwBTo + 1NUY6VfvdT1fz7fw03OZrD1cybpi3AmpYtwjDb/NONmrG65PLMqi3rhUi7wzHlfhBNpD+xALQZ7i + tuto5yf25IrQfbefGWInoi5b7OA6XccNKVd//y+IHI9Mu8W/4aSxymOu8vFE2sfD3rlHrBW+VvaQ + tY9HNWL6eORVCeGZjENZCtLbXf5iouzmWsC6kDCSyTmy6sj0rlhwjNtbnnuUiFij73KHyQrE/Co+ + uX7frrDjSajhuqqIalETQGOJn995CZZaFbHp+XT3cHy67fyebpXbUxrryICWrDDVIBG0mqlMDiKr + fTpepXfT29V0Bh2VR1NRk0PELjIzP98mekVdL+oRiYtP/qvkR34awKRrMZtkB/rEEXR57TDXHheA + brdSn6XkgvpMVyXHyrtTvwQj7AZ+gW/NfzME2wv6Y8DjQBxzoseFSvBveFk87k8/X2ULmiJH6eox + W4kTTOd6SGcDcfcmWcFxjnN3kywxOYT+/DgzA0/9F2fpbHj10uAePTLDh5oTYKBgbFcixiXO8OV0 + QpEj+Wp9LWWgh/7T8H72OEaSMvGyCtkJtli/jG9cVbQvoiU1ejPobqEbhUVFVvVGM9sbC+rUTENs + iak1l19pfFpB54zqgIkapQ/fXfdhot0nm4ISjpCuYY1EBKrxQ/7P3pn54YO+OYsOmRfHNfOiiHJs + NT3EQzUzpCeWjS6BD5jfk/2ZN8ZrB8FKfXsO1Xg1VYKdV/Y9k2gjLje8vXZttgwrtBZXi2j0zOpy + EDaR14ka6KvCPlQnwXY9xEIF0Ffx6v0q3S5to1/quCRKst8/OmHUglJP3G5HqUeSi5R64qr0Nv2j + zE7qeegVL1DqsQgGnw1Y5HMm/ZqneSLqrKh/SIghyrTL9RFuh5/TFV/qcYf7kJVPK+Vwhn1/gLkl + eDQfRgjf1l+lM6SfqQI/gE7/vnlQXqFv+7Oi5iHyPCeCb+0OsL9ScBNEjPyqvFjm+/WYflJu77mM + Rw8nleYK9FyBpY9fUDZmjFFskb3mOjEh7yVrmOuz6fpBhHXgRMxn3mA3lOt6lqm2LOx2K5f5hGMP + I38/mg3Fn8Sbf0fIkGY8+6aPAONRnDyff7+WppzYX0abh+8j8/UKCMi7/TKNGZZhKA7ib6PxNm1d + ogZPe9nTo33zcewhQZ7wnIURoPxXGIFT3hItXW3ixEx29tGJmL3NQ7dbbeJScmETp6sy4/Hqip0U + d3GHoXWfjxkEb4awbiKHD1xGfxXRqXROjBjIFzfa9K/YoP+wnY8W4ifcEd4djeHA739kPLm4OFEJ + jcslG1Vut8SWPkN9uoIt/cUaHa39d8KiHb0sIIV5hgc9h68V+36MW2thV865DOr4wvMNIM24TQMl + 8yOvlBf95lavbGKtzlTifQ6PryDVhATLcjVjFvpRAGbHdda1YG581a96xfqjGZgUg36Rsi2/Fdwm + m+9Jsqh/HXKkkNEgiFpkfx6X6OagQdlAth+JhFiC+RKbV9F6JvaV7HU0J90Vl5+jJ1VPzG5NzcLd + WPrRM30ts0Iscg884oas/fCf4z/LdtNDI/WkAuvp3upxzgOuC6ub161N57qOpJ7IqMT3j+PiWsXb + LZZ4Wx98G8G7Z1QX5MQ+pc1/+sjjFvSWdLvVISIlFw4RupqlzZdNAcctOM7gEAmjwA8HcI74Mux8 + TUs9FcnUF5fveC7pvUIllyslu1apSUduyAua9BNxaME+OVpjuEwqovKIMgbBPKgY9EtdcNOJwEAq + sQRjLEDtmbvlh8xnu+Sb6r7A2L64hHNd6Y9wio/WOXU9U1jFbF/JcAHuxLDfouqZ9JcfdMXUsXjc + JJo+OeovphP4jMW6fzWafRB58Zmmz6Wm71FhSbFbhcmQlWPdz7Zj5PmdQRObmq23LhAXc7LWqxXy + JsrLBnwux6OteLSG9xJ8ci0AJXrPRKPtxHOkNiUiBfw7KH4tNFu63Y4xnSQXGdPFVaXZviszppdA + fvmbIYsd2MoGLIYVIKHlzpDWdotc0kN/eKX9rO4wWU4lPrJSZZNqxwGmvpn6KY9rlD3GeByFQclt + oF9hWfkC1U7y0C/63gci+yPTAiOwHN2YF7VVeHOzrfXDdlHIywALoGZrUUJ7Rs9VvnjeyQ1bTCJX + ktQDF+limLGKI6Ww2qLKbyh3q2O5okDcCmsPFzKDoYKfvIeTQudVBERs7schKTIIO4B5wJ3gJjhU + olfXr9b71aF8r5ZGf9uczh2o5F2xluJ8llqh1Vqw8tofLHRHCbtPZxiqgfsIUluoTx7e61akNnS7 + nYf3uorUhq7SFvru5qSs1kUFWlX08IYx9102CGM3UvmEHyRLAEyTjckjlE2KtUn0saClCgbiZqr+ + pJT/F5+2J95LyvYikSJudZduVwLOSUa7xdmMVhlmZy0osKX4Cj54/U9DHVLbjKazQowsl8KdR3um + nf7delTe6R/qP7KCLsZhvJaWBvOgfRaWEgoPa8FIWYQNDzTj4ilT30D1AeMVMhVzLRjfoE8Ws4GS + wwJpJWrfuVriodDoVmJbE9v4ddFe3fO9n7cmnnZJ9HBj0Lp7GDpEQrgb1aGSN9biuXrGF4IyyPAC + dM0FvPxkuta/tjy9uyHn0bwaTT6iyj55eiYeP9zRAEnpgJcHK7gjc5QOY6ERQ161rdj0red7lMfZ + 9OmtXqkjiHUnpJS4BuyLw2o5G6MZPKT81KvpeJzO0j5uLRaHj02Puz4nFoJ9ZdYRzrpBxM0e27N0 + 0qOkY4ujsOWQdIGw12mmAiUAW2QqYGq5SkygsC4cMzKNZ5j/Y6s38FwJoPXBe/2Bn+zV48W1o9Rl + 4oD8cA2t2Hsc6HYrdVlKLqjLdJXU5U/vLsvlN2Fc8Dg4b4aMsdCLBoy5Arcf1eVPEvnm3eIbHBaw + d15mfPOkgH5K5mUFtNJVU0jGYyWHQC4kFHHux6ykdiognkS+zrA6w2mRbL6nq69G3ht8sl+jzxmt + de+MVS9tRNUFMlTm1TN0tjg2dbbzi0G+eCX/tt17Y5X43mmV7idGe3izTMNlX5mnuC5wSlD+vkqv + yDhx1PdLpykG/omoReQGwL682k43c+n1vRo9sGU/RXZ5daIL1VCG2ygb0MAWFF1Y0A9lEmFxusCQ + 6tmLA5DrtB6uEqU7MscTgCg4Evmzqzkv4kkdsYdCEuwPffLrUxyfj3O5hrygI557BHXy9SjvnYci + trq8GMvdsvFrRe5lSF8q16JSH/L7QFuP1wECd6gU3eAngKA494p7vZPSBESB0h9XH52wBY4Y3W6l + CUjJBU2ArpIm8OXtFQuKqoDPokJuZIR00JHvhAOP4y4oK3G3GzL6Na/ocL1MxmgwkSaZhR++3C5Z + sG/i4mnmvI+4F5TKS5uar/YNRV6df8toopQiM0kKFKoF/1Bd5ERJ7Z0ZAuCwUyVuC9iFcdLIKsx0 + i4ariQyl1r4ogbgdobMAJpQEEMPzAc85PHJwyzEfVX0FLQ76t9uNSHVcJis8czCLEs8f0XdYDopT + V6k3o40hqSfmi3aoxDHVe/pMrIhsHDJrX+dGjA4KU4jOzVsopZHY6epvji1kyYfZ2eSxwhEJPSkH + xuo8EDsk52bf9LFedJasNwcZbDiDzS5vmPqNXaMkRpw8VMtkuZlODgLTIcVk/LjGkUoocn2o2MP3 + b7XpalKbIHCPmNOOVEI8Ys0pQQ2YlBLimk3tmyAtzlmag/7Zl/csYK5CZTTLQ3Vz3Hej0PFl3dsv + ojhoiawiay5K39wJ38oewp+6IkPOxcCRQKJO5LYBEsXbLYFEheQSkCheJQXg87sSEgeLffS5FoBE + PSdmPBh4DIZXnv8FLyxVpcpwwOd3J69PPn++MYjsJSUKzd+BMgjpoc+PDCEWzFjW56QCBEPNZUNn + gHlerTPE6H3zS/S7ervcxSbdRMTrho5X50HIN5vpEdWgBe1COJ4fey2bXSfbSfrwCOpqZeVFyHhR + oOFfkEJ7n6t6xjCz77azGQ3l8occygH+ntWYooKSo76l7OuH0XKWiqI+mU4lqAOmdLHi7Y8t5pfE + Pu3hDNe4pjwKD07fssi/7SYq87SRFRx0ceBXTA6rY6KVgFpwbknqbr8y2gR6SmAfDcdhhQa4l4ul + E7J73FoqptBh5Ku4XeEje+99jf2rzjSq97v46PDA3r1Nt1udaVJy4Uyjq3SmXVxflxPqWGCiS3kM + K0U8L/QHrhPGXFbH35hR7XGK5RA6tVu5MotY2Osp6vM6vjORz6WanlXxWhPoz1T/rDyDa6oOGCfo + BoXhkGDPOaj60Wq+HvRhS4VbhEln1ErTcXmxWtUclwhVb36KmYMQFhLm8ADIwTrFMQJwFc/QYrTI + 9IGzOuc6Y3HksiAuHFKoLd6P5o+FF/P9+uQIHrGomB94T0kC9m7v+iTnSvkKRrF+yE0W+qAuuUN1 + au/POeV6uMq0e5xHUU8Ol9L8xVjangPQTaGB1J8rw28bOO+Cjb5LDgwnMPA36wfOurNAZKhEtqfV + iCMKrlLYIb9ebF/goGLRemCvw9j8HMk1Ubff2Zm+P4+YoxXJRdVByxWQj3cWHjkt0a3kM7ZAPqoJ + A8hHXpTkQck4ZGWUK+Pnq5Or6MQ9Yr6AsHIDJgF3DyYEeGIILGxBzC3EUEn75+nsfvokcFiwrogc + 1uLlm7NknjGsVuZmImBi6s7RUlDa2/uoaLWLh/PIUHJY9hgDCffVCQLX84D80o0cAhcbUNneb6Bg + t6iQodutFHopuaDQ01XaWy5PfmNljT5yCwkrLmj0cRBH4cAFDTOWCGOm/pIHY0B1Z5UsZyq/D1bI + ZX+yRqvo23S1XR8rHAmZqnoLbz5UC0a4ChDuWAG2Xo6+srL2rSMFdyoBwHRblRwvGswp4qATxU+V + gvKQrjdDrEvBhBMjQSEnxnXcqE49Nt4vS03WNbVUY6sSRaoTWzzOwzr5YejGCAii8VPzld6jRR+O + ePQh0mLBzUdAT8EQBs5NRWlv9gLH/VYz4ut0NgN17ZLtMTN6YuJqJdl3PIL4JOKCur7SqcBCc9+T + ZMfxAsWdlsPN/qhws8XjsCbHoIzSul9p+HZh/vdfKIztQd8/im769KMS8NJeWYU3CcpvomX+xFeB + 6UaZzrr2uamKsjmhoo0k3NSS7wnB02w3qh5/tCBo3kwmmUAWa2jnF8szmgyP0hb0hFqtDpIcilly + UN6Lqu4MNM2Pe8I4KJ6tdGT5jK2OrJowdGR5kc6xb8u175YZNnfprflA3/nJ9ZU2adTM+IeQm79N + tCQgMGPX2RsntuwSDSIiBiKdDXRhha/z3IFmPc48WUiwwfqQUZ4qbCAS0MQ61ur9fvqjE7ukluaH + 6QDtsB04tZ72vopxu2505IRtTEP9jG2UWzVhhLnlRZkyPKzPoc9P2k+jzUm/6WaNr1OIfKtX4D5o + fW4kWVz2cyjZmQlPRlnys4igXOaR60F0+v4z9XC+tw7D6ZRZf34NMlsQW4jb7YgtSHKR2EJcpR3+ + 9GMFsUWACXMFYovI5Z4fDyLXhT9LqEGYkg8rmKqz6f3Dpg/vPlVx8NNZFRmEul+ZvON0tDHVd8Zr + oaBYyGCpNGBNaf7laqZNZkYM6kRry6BhUzeS6OAM2CG3V9VRg2I94nz0L1TusUuWFRbErmOQ2BIm + gnhJGA1gKW2xNUQQk4ns2QioDoTbvqd9/X4PyejbI73fuv/i9MMpeynSvMnPr+6CCYe4fbgkDLge + hQ2Fc0pDAbhxfBDq+w5HWixx9/WHW21se53czZuClcAdCX8xOalxDsCTy2nrlzhMh8XVJ9qvXKeN + r5+JcB1DhHhUxcWHpKmobO1az9eOtyR0wFIT+3ab6wS+Tv9SueXq3fY1BzzyEFeJbOG0ZOQzbNzk + WnrWLEXaIGw51Guj2Xi6nR9AQ2gdVNglJZDvM08n21lrQepQDpUJxs8ZO3KCViaYfMbWBFNNGCaY + vKhNMI+O25OTE5UpdPL5CiWUrqBh5aEt5QlTChQdVC091yXGO73dalj1nEEko7DtcqK/TUfibLj8 + x9tKiNTmVBrHNzResHTQzUWQNTud7NaGlO+SW0GcgHm7ycIU3KuQaU9N+skV8LZZro4sKc359/dd + mjQCMEnrJdh/h420HUAylJotF00HZKcho4qCjNl8mGNCP8BCiCQEIQtbJCfR7ZYQhEJyCYIQr8pY + xvXVRwFLa4LVMN8tYRC6ju+EzgAO1DiSNsKHx2VKVY7Qb79fv5f2wR+LGbQwLpkIaknKRJj328X9 + 1EyAcdzaCATz/IA7sf9UIYjbKdZd4peoa5Vy0INckNPr6RIUxsm95chdKZ+RUIv9XFO090wg6YL4 + f36Iafruo+PF9oYs3W41TaXkwjSlqzRNr06+lCapE0YFQzZ88ypwQx4NkAlPTtErCYXG3SFl4MKy + h7U72i6RrI4AYkQSsDxqYVDTSUKRDvgVQ9Pb200yw5wkUZWIHD3IXzcW+aHyXAUtKX0QZ+cd0oAs + NjKb2EDkHS1GySq9FblPA9CT70W5GjRi3JX+eIT3wUdF9jldfEjmqnbtarTlzx/g84DV9NcZsR5O + W53sHYbE8CJh9POZ3YSyZ287PKPtIXQ08W/oekesDYGXfsaa+Fc2YRL/0kXaKEabpQxpvGdDqQHc + j+bzkXbIaGdtr+6OvD8X5QlHbuTG5MgN/Zx+kivz3xPv8OBkI1JN8NK+3g0/lkkf8EkZ5Po4RYJN + oi86SDi5Tg4T4/GQGNPM8sd939jWq74/KIHVozvykaim0vzi6WLRWPC5Q6Rf0YnUXUPdXbg76o4l + 4FFMytWo9/vr0YftWp7PA5ZNpfoXznKVM3i4MSaXvn/BKsLztZssqLvCsBY1niIvRc0q/QH6HZJ9 + s6EOJmDXcmKqmC2/bWUfZfhFq1TnAMwTTPCaHmKIPvV77OiDxhnyxN/dedtNtmPIVFAVDCPniPFW + QVX5jG1QVTVhBFXlxcMSCLKiYzKVctyZWbNYQxxHXJy/IaPzl7Lp0/kcjuxWgHiHOHkO39TbeGm6 + 2TYxeaVi19+D2q4TT67rO3nAknS6EKV2Td4na/be9qIbVxj/n7VyFvtRfMScdjnt8hlbZ7FqwnAW + y4u0xjLQBmn5qLWCKVrz0WyYu2EryhXUSH25nfqik7JkrqZ73Z7R9msB7CDyd5jnkSB0QDOV22CB + RNqsxFYzy7SSQFUt6iMMoMw9NfOYSLfydhp+4WQ0H2EanKC1b410FTLCvFQlUKWnG8BAw/wXlvFG + 9lXKdgpe0HHWHDGygkSxktQum9FOle+iPuDn1eLkThxHP51WTrZnntez14G3L8PSoRRG1p3yZDxJ + XuSJeZqF6dRqmk3vDwLBCUWH/nu6GO9vYriw4RvkxJvR/e5VrU5Tqts4u/acwN6JTLfbcfaR5CJn + n7gqnchn16jAFLzIAfOKnH2vGA9jFkcDxiNXAP2ICO3nKw3tMMas+A1SSJ+8PX2ZZfUtJhrySvr0 + 9PEha2amc8rnJ1VZ70WTZJP+yGE7k6t3smJ+B9ilOdxSUCWjcp5Vw6dVWrgGehkMlE1rJh1fMdNK + OMJ2iOldFVh+8jHC+tcekMt4strem1/T0WAdm95gHLTlAP9xl6IN+CmCQdSwELpWY9SHGanaRNc0 + LD6RLSQmqqbfi5jXQVmix73YLeozok92qiDPxOH802PW3USZG6V0HlnWox3woOL1BtpJish+hitr + nn5LFMjtensL+/cCt+Z2JpMucODuKWPtvBLZQ9b5NaoRM8FGXqVN/2G8kHXAo8VoiS6nIa1EsWmo + tO+Tq9OXvYYbVGjgA0jroUjKwPF8ivbGtDiET2KdiKSWaQZ9gLrP16llqYw2P34KiqG1TVGqvXDR + lqH9JF/Tq2AF0JspOvO16lWabtNqa6UBmpgxYXL260en2DOjgoXbuucK1M/7Kf6R0/zWtqpwy7Se + A1TIFjk6h9Nvhr7UB10eteBwFrdb6oNCckkfxKu0Ndz8dlXKjnf8AvsmUjgzhqvdH8C/gYN5kbid + XOQ8nri6hXMNgbM1WCmc/dko6JRh0WmpLLUTat7N12U5nf7m9H3ORyPHrgIsh8UwHnUp6iELPOaU + UOotgW4NEqQI6eRLkvIfbgLlhEEdZRMPgzjyyrJUcZ3NV2N0pjYx3/UC7tZg8+8C6qv75j1hhjLQ + IvOzq9CC69ZpASrY6rO1sn3OXt/kd97cFl1LABW1bIK/vmzdhDE7DJgjzwE1otiGzV5emM54gO74 + jt47WMJbEYdZoT81C0bk57W2dpEvChatIlcUVsVylt0g52myRh7w8Wwrpgfmzzat5YG44/Tte1fP + c9EQTq91BocEnXmGZcaKG/z65B/vzAcyPoOMy4lqT/4h0xx6uOFpsyJ0g54cbty47SaKtfriSCAJ + u8lhLzbOMu9bq1SgpgmNZY3gv4s+pQHVEl3VQ0MFBiaKGoR6SZVMVU+v3jmhQ24qSjwcrUS5YQN/ + VEP9fujEFVRNyQ9Qiamz6qCfaiGbmCcEwtLoXH2r63SPS9DmGn13rxx5q4Zd5dE2us9+BjXwHHkw + kQyn3CKZTGrLSeuH2GcubQT5rc9uTvfkgV98+rVNoYkjCbRg74WexuS5HMxZQdoz99YHBCCUe/+W + Ap6siqDRCkQFUi7Fet3L5k1c5jORMGOcZpYLhCK3xrFmtQw6wjcNqGZYhjAzxJXV9H5PArJDLLHK + Ye6qjupw0y1QXh7mxkdOOxQLesTWwyMbMPw7dI2MsPV2PMbtGxER59PRbJI8PE6SvvhHZB9hP+fz + TfQDQ8sHcm+B8e/ACynm7ROywj3oj6O5qL7dfTS0AIk/jLxaLUjXz5JlhOfaKuk4gz1fjjZIgqqO + CDhqhDhJD55iUdceYG1/1vAkvnzsMOFFt5pH/++nk7MXVy9f/bMLp0vnLTe7Bj3akHGoUxrlQzgK + AnKQ1kij3HzYhVIis9cfhVj8P1KiTESNaZIu0hWYV/B1+Df45wqGBp4eg0qf2kb01TYmSkH/+Ps1 + c5h9RJJut/JASckFDxRdJQ/U9c0lL/EdcT8oIMnxN68CFjEvGsA/sSepDy+NfK4ss0dt7dL6W88R + BFU5sMnjdL2e8zL/kZkgRs+VoctMl1FQz5uN2nZQQoyziJmbnAZuPXBzvoUSOZJOzi/RF3qslopb + iezt07k9MZwaGyEKOMXtCEh2jfUruACSg7d1RCsVx4PxknXZUwVv9q/Oag8qXr1urrXSt/bMGlGd + 6vh0FODjFI4r2mf2R9whCSKNKmUYeYW5NJmu0cbeP1J4aP652k0jrRTGPj9yWDutkJ6xVgtlE6Ze + SBdpczy/uhgSixmti9Gc6J50xM/fPKhp9tJQ+K6m98MvRiuuGzBflf/4Dvm1ri76Uv7hVUAs4ARU + DurWaPygorC5NohtVMzG9hoELftWNJn/x7R5CE+mx0PCC9w1C/cbSzfmbpP0A5RNtZhjyQTFIt8+ + OEe3WzJBCcklJii8KgvT356UmaBAjywyQQ19JC5wBvBPzIJyMULeGW4eOmgLTcW5+Ji57hV67u2o + Ajy3qRLLVIu8erXIjZgT86equ6V61bH+OBSUFxA7gVMTeomCGCuECwLlZ1bXDtgyRofwv10dUo2s + 2270jgWT5EjsXP0RUjeTXYDAunL/XIOlBAfxApcEXAVjF1OpxOoQOF3mh47EHJYsmOaI93CG6uJe + NxJAWPihtOxse81q68VRE+dDxeiWBFSimvxqrW+fWsbqt+m6KnLfY0NA7ziUV57LVLdnTIgcnQHh + tcuA8OwzILzKDAhPbrJfPl95FRkQrCIDgnkeDwbwbyCKSAWQpga7lmtrkMHEVVufCJ38UulI2F8q + GVJFSr+4/fUiFYDLMtqa3w3kg8JTgOGTZMgUbLPk9d0svdK2Ta+QIXPXK/iFbAheG8oHo851yqYt + vXlFYgAYFw2JAXlpeTM2963cuRHfK77VEOzFxf18UCU8T+vzxR3muj0m0XoK4zZ+I7rspm7UstOy + MDrKGQiN6JFBefltvMbWO5YEeWLiDGEg8Q9qYHQzgiPIZAWD+13/pojS3cOpnYt1C1McjB0ydQzs + 75tfgELeDSUf1TyJl8xNl5aqamcg5H5MW/P+3HkN1Hl7QXU9QXFNZ24CLS+gRIniMrR6Ge6Qy0Os + qWGGcKFXqpUUzyPrE5bd5waY6BJ7YQehpIgp9BDfdY6Y16bCUj9jix6imjDQQ+RFOg8n66/Sf4CQ + M4tk87BKkKY8y/H5Ol0IcdfqSsZ0TX/qn4GMHgoi2BAVL/ICA6Qvh/8sq1VXrUjFDpG3I2nkYLay + Q9jAQu4ZqIGyU8ej9Rgx0l9b1hA6oetVJKzYpB7Vp0h4kcMr0jg0KQBuZ2uMHQteewRPFL8lNQu6 + MRfjQPKxmPyPt6MVrISVyHiydvP8kjrHX5D48AshE70g5BWzfM/qPpBmFD/T3vU627x2iq/q3cOl + Pl0iQibk4DIeudIO+pgOQeMjLoOSTtSiTJJutwxKCsmloCRelWnxn99hGk8xKOn5paCkH/nwwgM/ + ClwmYWxNJC10YufS3HTlETJNwlBpym5y0+h8+E3CojLEXduk9SiOfXjtUh74QwLzKIUuorTa82Gj + GRjVJojXyV8WqhRNcYXM5xpxmVF5XqgvM4KjsYmWiSnOphVZRaunqpLSxb+2kkJUUq/KJBEJCFEg + vq1zG2LWFwujf/aykTYmwUBgzKM7boI9Tm3BEHtLnAmSej2RIPliWtBL408SdDgTkR87knS+HDGq + s9QyJ6P5MllkYo77p8ON4BWFk0kkcM9QEXikkk189G60AouHLiiG29EqMSluF/AOwlkuxfbEQsnC + vV4gOWfFVgCWChoziySXRXrIaFibliGj2MP+jIqZJJnDPSwuYe1Y1YdDcchabqAxd6W6luUn6R5s + aVGxgIKkO9e5Ze75IQwrkWv3Kk8sbYcatK/YuinoSzqI4k5o85UHuGNBQaeSxMLU3xubbS+BtZ3S + hbnsatCv4ASLXNtE2bOHrGG/VCMm7pe8StrCfLWcudJonu9ImlFqwR/zjy7r2d4t7hWtCCCwCCFG + HUvQIGvoqHYpNTsTHPcPtkgPpfEaRLxnkR7TAi3+eSKsqHnuEXXSR+63IHml2+2ok0hykTpJXKV5 + /eH9pRl/jkPfd11epE4a8jDmbACnjivDIpdJOkXHh3YMYVL5Q4I55evE8JgL3p108S1ZraUvYZJu + b2fJEIvvEdL4dpWMvq7xMETVRGjKsAxVvYrYH2Rd6VroMbhZr9L1Ov0mcSZW6exYomD+G+7BBreL + 73LngfY+pLPZdALz719S4Vwf9x9G8O7rM+m6n4ifCO1K6EslwAOhs3+4m5cD5q0rLuOQxUEpNm70 + X7UiHISRlVCtGKPMrCeM9EAe1MrioHLHgV+QpbC8jIg343WKvn6j3qV88KCZsvrTTJUerimtL3Pu + 9GR340ZhDojUivOlGFb75054tZqHxH69flyMlpVPVbjqDkAG2MdV1qn7CZZLJgjvQLfx3qIOLr0J + 9QQor3I7V5XEpbJ4/GlRYZzI0bArObvv0PfqBr6LBbL8URQKzJ4jak1HuaiRrzHpYXoeOW1QaPQz + 1pj0sgkTk54uyqjSci4x6SeY9P2Qzoaqr9DnAW+/NglGX8gAA+Y2ZTmqSutzzXxVS5n66R6+johN + BYEnNWmzLDYXS/o0BKP+K/T5/exxnK73qCsF6XEd8+nvHUjfNx+3bkv/a+TJNvTYXzT1Vtj/PpUw + 05J4zC+JW1i5w7Nh1cqo36sqelHtMIE2xGN25PjtKI3lM9ZmuGzCtMLpIu0r2Ubc53DupD8ehQ1W + 2FVym0brB/LvIeC4XbLCY1l9nhNoUd1iCdq6j3bVMqbXRehGtu07zPMKfVHXtYenaEehnoFh7B8x + 3nIKyoes56BqxJyE8qo83baw9W7XvdwnwOJbmM/jwcM4HDyk0ZKnhOgA92a12DN6/JfY6XcIJUiC + nXSL1V9n+fBzPxnUiiG2vbOPzHFa5NuK2+3ybUlyMd9WXCVN8OT6upxvyxy3lG/LI84YH/DIZWGg + 4WcFGUveLbDCND0B1Ij98pCMiCma1Geq79a8VyMdgjuWoazZY3+Wjkez6b8pKiucDLRvDvq32w2O + eTJakVNB3qgcDJpqE3m9JslKVZMjjIdA+lHB3JPVqpySWz3JzbhuVFtCUUMEWHRMGZC4UVRbgMCD + CCkNC06dfCRKdKxRReE5UU041EJcZt3kXxFDiLtk9s63I5F7kXMBJD+QP+ReY9ZiqFIERY9B1V7O + pndTGKPzcqTuuEhRfv7ucwZKRTHQQv417QTwBe+u8by8u5uOvwoQJeFPWicrlRKlay1g2dK8gifU + siW30Sz9Ppwl35JZyUsE7+HqzF3uR88iqno4T1dI7NvqBbJJ8ACrKIVV3D5ZLohiSSUHt8DuCLOh + nqF8YAyf1QmA05zkF9aCbbeJSV2UkH25tZiuCd093/GM9Mls9ooZm5ut1i/pBUHkF78Vds8E38De + hjk4qe25qTUdKBGeK5Ouc1tUWUIdOlB3oNEODfA9bMJgXDbswU+E7PO0qXC+RymzNGc3iYkP3Uho + 9asckdYg3FXlV1Tj+vu1E8b26iDdbqUOSskFdZCuSnXw83+XqZeDIvVy+Gboha4XBgMv9Dwm2QgK + JlO2kWXH9RymJPwNOiZ3xBz3MeKTq9VZb5dEW0oxn3U6Yf0X4xRUv9WAPM5VaAMvYTnNZmIvpAEh + ZW/zo8xNW3hTE8XVjevS4WBog8Ap1cnqb8JWd5IT+G5kRhvPLwb5ktd8I1k8z2gjfzwblVdOIcJX + Lbr3vAaqh3NO01UHDlLSujgQptt9z3NVdIqp5tT2pa1H1tZHULWzduRf+IvYwXI9iLcoL6OWnJYN + ZRKg67oV06kL0ky5d8eOAhuJ3jF25LjtmNnUQ7ZwI7oRA29EXZVBnvlYZkFdJ+MTydDWy/2sDqkz + uLGHdwsKAeYE5AkLHcoZSqaiQuVfKXSsQgVIRP7rgSlOTsB90QQGWg9EIHICl8whwkvMZxq0lsPy + ny14vXOJDtb22eFlS7syB3Y87UoyhPEUe1SU+9Mn7eie+jTefSU2+qgRwT6va8KOnMI8uBcY03WQ + BLWatdwZM+xWVQvVhIFqn6T2J2Vta19WpBjh5bi2ToDozMRxOCnU89E9lgCDubd3uoFdaog951oH + iSbkLSlmTjVKrOptECReBautDxLUFaSrheXXgtvDQlr1xxyePEPbCfRjzr13oKm5j4WoHn46dqbI + oZ0Nv1DsrIfY/p7ry5IPOchDI6FwrxSaOKOXjjzniDntoov0jHVwUTZhxhbpImlXs/Vcol6W6+5f + XH+6eqncQr0vQX+9gCtDGMl0nKNcgTs/opR8VBvFioiky4ld2nHjSI/4HjW99sqYLXhDC4m0K80P + gYNAnj2xSea/u4198Stg14l9uHFcfgryYybPFas7BzzTCDvTfswpD59Q4K73PhC7qEiJqV71/Jq1 + qVel2+0y9UlyMVNfXKW94fP78xKNEyIqFjP1X0WgQoThIAriOJLlqh+xsmK9KYbCsE+vMmASxRJZ + gDAhX+/Fxfv+i8/v4Z+XA91Bawo3vR8v2bJvHBgLCWKDT7w9hv1ug0eACMbmgRsSgdt6OhnzaCmd + a5/v7ssp9pWvJN6mupw1CEsVo5osKvTciBUdburbi1gtF9VNV0dfuV9LxZNvVXvgTNFTGJkpzVwx + HWFksH0NFmNk74OeWEc8hTWaPAr+2aP+efHZaOW9Gs6XVG+TzYpjw1l3m5YgiHIviOObzNLFvYaH + KHXcsTC6Zul9uhWh9YftfLToX59chV4P57LOkPeYiH12gxXky9hULSTPoKB3tW2AUD+aR648ieoR + f568uXoQkQ7AhSR4gsXy3PkmHVg+Iambbddwy1YiMgCohmQj6gr209lhu8BH9t16GntUnVuu8iB6 + Z+ERnElt/If0iK33UDZg+A7pGp1fm+kd5zJBPF9wmJ/N4gt7jX/tJxfv+dseSUPfohtIpdaqUrJ5 + uXnEPZCTILQB/Qr7q62x4wuN+wAU5V5bp0vmqdlVBdmioJLmbLL9ChNAuOmaR4u/PVj/84pjUtFM + B8QThzb01MgpmagwNpxgtim3jXawpwHKsKIjaglQRs9YA5TJJkyAMroo94eHKfJnpD+mi+Fs+jXp + FS8QiJ5Q5z//mLHeBv+DxDUOj2gziKmX8lkqks/lW1LLCVNH4+ayuJzzMvv6OKPYvg5H2gr0OMv8 + +CXGmvvZdpxiLQt03bd2/nTP9zIqnL7osT0Sr/Y3cffFj2iZze5Lyj81BybT9XZ2hyPQQOTSjKim + FoLi6/Uix97Qo9st0WqF5BJaLV6lg/Ls4ryULuEI4i4ze/YV81joRuEA/o1cP1JhOV1TlSPxUCDb + yuAZ5FIMQdfajqfQJ2bSLRqIBVg5gVuTed0EfmZfUXXCszDFYHHdr9LvYDtoUBsDXeby5GooQaim + YN1hMGWVKCImfIGH6e0U7Mrs9eTKQMkF00CYi2fT+3Iuhk1Fdt46iwInjkpJGJXqVxUfbsTqi72d + CNS8qFhLXeysF+tksd72jen20miDeY5byMPIIJVYFEETvf+Yse/hGtHJs/DxPdlDtHWYL0MJ5KXd + dQYawKZmd30ehdCdJMzh3Kw10drgeMeiFuyPd9dOwO0Tyeh2q51RSi7sjHRVglX8fl3eGWOn4AIL + BVhFzKMBjxzBT4/74u+ISH/X33xPBZvbYoLH59nHIdZkwnSbDd1hzoG17r+4/nDNX59fXbE+rLd0 + ItORUvjP6qWxWJQEg4oJnSkIoTMpTr+HR9QW1nOhO0s9BJdRUTkhDmSZ4I0tT6aj7Q+lb09zO+CH + dFXeAdtznxvlBgegW9SULeh+ZsPKyJKZL8dZQbyRcxYEPGRBYUsdj1a3KapjojQ4qSTL9uOwjmar + Wmjl2JqeOMa8unoGhvZSXPT6GSqpOREMwXHo7HjX3l9wUvdwkWu+iSjwenLcyOdSMcbtSIrFgAm3 + S+kLG03y2oqJWGU1WFBONjof4rAkqNClVt8XOpQMqOmwW5A647abfIffcP3LVEo4Vkbwn0cyH+SZ + chhv50+3L/YsNujJvSg/Xer2L6sX6cp32IlqcHh+utIMdI1u2DqEHrYJoIfl8HlIwXOByYroCjpa + nifDrSjUJVFY4h26PlXp+iHlc9LCsUy9jeNIZwL319sVKFYW8N2qVjOONIJHfB7CG7Xzu6iHrDE8 + VCMmiIe8Kl0v6TKdopeQvEnl7IJ8z7a62XgD7nsO9ABlI3CZsZSM4KiT8Bi5EM0kGY+WS4nPJOPM + Q6XP3kJrIhdgP/eiE1MQW28NMMGLqQW36eQQx+LPcooEkU/2TzYg+y1nqhj50A6b+YM9NvOHSmzm + Dzls5k8nlyVoZhaFpgvEc9684iGcRd4A9P2QS67sS+hCmNm4ALGKYLGBuT5abRQu/pHO9zjqn+CE + PaJAdZZXgYOIqTXro/7ZdL08Erargvn/f5C9QmWoChwwVB2O+tfK0MU6B8qtzYxlnWEC73D5DmyY + /wf/ga6jHL0+pdZJbLMBAXRtQP2eC9BBk7Lt02heARqdzuEFBTFAVTjc4QWitquLgRExdkLuRkFJ + 9Rfd0P/CCrp/VOT46VBYHj8uQqSTElJ0DfeQSBSp4x6idyrZJPMGWXGzrKKhkGVQwXBOBVE7LrGp + Wf3sBG4Y1FkLxktqwZYpWsZwu3G06+17+U+v57WC4aJxk7ccSz14LXCjJ8ldQlX3ctaX07YlBl+W + 2A+C4d3FrF+moNWWHU/GvWc3b9FGWaXb+weLhYXkUdhTPdxBlBXBGI+6yHprcrPgwAqVuH4e2JsU + XaS4eQqjrYanaN9OqIKNdiSbScU21KoTfVlarLcKW+1+b+a+Z4s3eHDWm5WEpsHAPVDPwvY5czGI + kHoEd6I2egTebqlHCMklPQKvkh7x9uRzKWcOmuElPcJnoe86Ax+UDCbrm8SzD9P7h9kj0meKkkTt + u5il96jjPaC6CDaFzHgD/UA6tLM719KKRp/8g0A2+f4Abzta96EBLjAihAtmKdZpgq5z6EixRGWr + 8PSRPPzfjja7+Foll6fp9fNry0/DOAqd0hmLBWzjh2QyhBGbLoYCy24oprNi4F3UOu88Jyr6BgcX + NzeVLWZ8rhlannJTFFx3MWyLtcl1HtjVxYNTfUNffIOqTss1VOvSi52IN7kf5Rf0Lo2ON/ss35D4 + MRejH6jMOKGT4jRJ+u9OT9z4uOV82znZejiJ9THIfdbrwHujvUAByanq0r05wrHzxb6/c/gOfX0c + ZauG7D6qms+20yZ2fY5r1ZaFG/BZUuv6RRnZZmf5Fm0k1OPCd+XCw30yP2C2e63Vx3YmvHkH8KIs + ZeowWZ1xS4HewRS3lM9bcUvB7bbcUii5zC0FV0nvuD45C8vUUoyXqaVcFofBwHdBd5S5kYofXDAD + ozF1v5j+W8baUQ1bI/HP6F4W4uFJsyjgMCP6Z7LqvxB+jevRhAXLl+qEMNFciHAPjpHRdGUAZX3K + bnunbrsWt6kEcq//4tO7995LqZlAM2F1GkZlYyoA7VX7KxirQ0WLvTh0/bJ3gcRW2MLMqYO5jyOf + O2GJ3viszicQhLWxU8fzAu6UigqaK/yMDBInrguoGl9sugVE1w4LXSsS3OUcUfOn5IdwQpOo2XDg + xMyPghxT/Z9lJqpslHdYmAC73el2NoN/btLxuv/i3enNy/5sei9oNmURHS7TjNiKuT3ZM6Y1aN3B + VjtzwEm/IUgB8R3tNt0gDr1inDD3QsRL0Bp6iocmOPb2dvq/W/gs6caRY6av5sa4RXix0nfAFPha + toCtOhI3ieaBKm8yNoJd5gVCMEwfd3h98ek8++zCBNrpk4dNg87h/EJpVW7sRZ5QIbOeV/0tX6Wd + XrBn7XEpHQhOWZ5xNJ16R7xV6Cp7yJ6jSTZS4Giiq4rM2IzzVQL0KjlYDst5IEN/z5IMtkP4BTVo + ohzkj/fXDo/sc7jodivVSEouqEZ0lVSj07NTZoLDMs9lkY91BfksrujNkIOC6bABZ9jXpnKUD8Eb + OYaK+jj5gQVtCOe6yTzLGQf6drGZzmAJ3SYrVYSIN7x/d3ItjpFLKeYdiOl/Sjbf09VXOuFG0ouT + LEa3ggkQbiCCxz4MztdEUBlgQAcZaOAPyd2dGAaMYqLbR/jKT89+e/12iPgtKFMtO4Fpm3t/qVqd + TsasjC2bfUshwasuaYhxOHucgB2c4MViUF3DigDPEja2WYI1TAnFTE1KUFbLFGS8WaY+yULRZcWY + V3uewlLamFaieOy7flxQoiq4GmBTLPCKG+EbrzYnq7oF0+cuBpVOQhlONLiUnLiMtJYP3XAWc8/L + 9LL/iEXQExuG9mFBD1DEgdh0bJjOa8MsXmhgBDXOAjvd7iCJO+jmHSfTdnD00tX9aFGLZdTAjHE4 + hhRMVFLZmid3i5diCiFr3376dad4YVhsPWIHHv5ER1Hecq00XCcKxAy4fvepAWi2qMvi9ipmt8W2 + bKfbHiKw2bcmskGyhbh5BMsC3ewdyO4qKz+qesHXJfr5w9+4QxzaMM4N2F7vpBRRYr48/Qg/2fvo + 6HYrRVRKLiiidJUU0avzGzM2iMAJblhIMnL9N6/QI+J4A8acANcN6qEs7H89G+mOwCJMlSCakfEI + lz72EelxV/frxuBdQddAr3mdrhHGsRu4RX3p9OxqOJmOxtm7VCWCJ/3s59riUcM35Xl1Ge6x7/ku + L5JOyvU8my6bomxR4O8S27uy6t9Bgc8xaw8x+htFiIla7jehhawXuvv6+e5TaSrT1XojUx4UwToq + PENRWETRuGSJrzAerSZT0R0Lozt6OAV1qrvPnI6jc15ucy0Mxv5xpgPkPqOwUrd5H91ldR+MLecR + N1OHW8Hze4Fa+oQui+wjJzfLqyQOhKklSmfI2plutiL1WX/b/SrdLm3XlzoYfQXY4Z8FLQvx9TO2 + kB2qCQOzQ16UtOfJWpGeS8DYC1153ytf6l/C/T18SBTjRwET7rXQIRibnGFQnxuvrYxDkWoj9bRY + kdJmxZdto6n5zCMH7CK5H1Wk0e32y0rXuXqRJqurYpf7qe3/+rLXX+MdPVSrV2uXKmQvr5nfgnmL + brdSaqXkglJLV2m9ghJVSnhzI3Qd5APP/puhH7DY9wd+wH0uqRZO9fFVgIkzMyamIqSXAf0nS9i6 + c0GRQtH3fIR1EbqM3BCl+ZNkQ5K+W0peL2GLONb2KZJ3j/Dmi/mSLYW6BT/xZf+FgCobF99+/ZKq + DW/SOVPYcuLR5vy5XZ+X12E9HvLaGk0eBBVlsJm8al2bu7V8YHEMe0Ep77zYoSpZ2HBbBrw2dC2l + 9v7Ko9/DZaEUbS8krq3AdzITPFX1ja0isQHXx1rps/JjIbdgBD2oopoo7UW/OtWKsrkbB76lOvXL + WSH6Os4t36Tdot/tHGNUoSzIpMpr3GrwcPGLGWnx/A4idZfcg8KZNBQ68qFCO6oWhVMylIREzGNt + CInwdktCIiG5REiEVxU/5VWpvMwTeR8FQiIfkbH4wI+5H8lTEj96MVwlM6POUZFALsu1Wa3Da9A2 + 80ppSZIjY7TS1zSwiyHZN70qn86KadFTzDxGDUZdq5SDU7ogp/dJloxUd0G+jEfwIiBiDJwG83SS + zERtiVFdpG8ZZrfA6vk3jG1W89bDkcpofIKQgEIJ50/FfvZknghcshCq3rWNlD8Daum+KUOVHps/ + ozXgB9oa+Aq3btqOkYurEh+5WKSR056crxMKBM9l5OAwk+zcvw39v4nxfIDJO26fyRPpTB7ux0dO + 3DKTRz5kncmjGjEzeeRV2mSXj6vtN3ShTBJx3IBhip+leu9HbivJV5jbP2a+CeYCORH5KgKHCvpB + +9w8zoan6Um1d5OGWzVY6mfr6vBOsDR+tcJ4cGa9FhUHVSp19bgeBizaDStJ5JEU9HQe7nfEBS7E + zabLtKKCsBlVwlJIC1UtVs5Izj8wfuR47dyR+ilbh2TWjOGS1JdJfVst1wxr+HCn8JwbhWubs71u + 3FGv/i/4/JALDyUcLPbYwfYcFXsjEdMB2wEf1NPgBDe1ybk0h2WbaIsLZohsEJRnYe+e7YzDgpCF + CUQ01+AYtCP040sdtQPA5EMaaVqajIprPyLNqn0AnW63sqKk5IIVRVdpGd5cnJZ9jSKbO29FeW9e + 8SiIOBvwKAxCCdJxBTNN4j1iEOVOUkAMT2e3vl6rEitSj6ywsW6m47ILrz3aHQtjHnHv8GTIvJzM + WlMwl/oTKwkjYs7q3Idh7HsguuQ+LBxWpunHisAc2hnpcRaW6CfO2eubPJyg9NAVogSmVWhWxubK + RowXrsl/lLl+5dqBrw31xEi/V6rGfXeFFbn59EjVfu+iNK1wVhUmk8gUGG2EW3GVztbUFxQhynpk + gHgS35C4RIBkJMKbCUdSrgQXYVuFcw90knQuYyf3uAMcG0Qn2AMb5NvYrPtiCgv36M3p+xenZ6fe + y5w6D00skBL3WAO2wp6RLxgezWEvnY4W/d+mS9bDVahdm2Dp9WSXlQ1K6v2Kyo1i71sdFo6sbbWb + ROW9Tde264p36WeCLZ7C8tUBL8mqqgboGsziORgAwhXxJ7Zfu4at86KA0bPNg16xQ9m9WwfxMqbJ + 17j3ljlHrKXlqZ+yNT2zZgzbU1+2LyPJJCGEXOyAFtlTRRaMuKI+feShb3800+1WR7OUXDia6Sod + zZfvPpcZ1x1M3MkfzQghDmdQEAwYd+I4yHFzSNpiOnL/WMxA9Pdy4Ez5y+9UzNw8NXn9qek5LOJl + rFkxy0fVJOp+FNUWEBjystNytBDb7i729Mh3zBPm5sZIvDekm+RNIqBjhNqiwpGeIV9oOb23KSxZ + TIqfbX8YrycjYYVuOJbVlh9Of3eHg/4F/P/bFfznE/wqDqHT2fBYIInk9M9NKkTh1IOPRtZbzPCv + a/jkCM9DPFVG/be/X7Oe+I9yvHImjpUgIEgZnbQqzjMB5ZrWoybWek4jlnlO23Ow4/MUFEr35nEH + GRQNKkyUlm65IKRKROrdBikVG6n9w5XFky4ljMGUvx/NKNDTCr4SFyl5n4pL2dJiJGdZcd3aPPwM + goJCHfB8aW1TQcVYTobkByydxX177nbtGfKJ6jw3t1pSwzdht/qSwLKbl8VZ6GWzsE2FKj7qV0zg + xnfpSk5xTagT2M082q7fElY1e8jeoy0bKXi06SqdyOtkLM9XLMeaqbqd5Ec6flybXmx1Tdm9ymty + AyJ6KId0Dl9Suca0igiANlmOVkbFNuqOoOolldkNT7c107ZgerD0sVEp9faxP8ZUkXSVkyLUX9Ef + 5Yqi1g/s3lJ8h8jom990V1ax5+uXWNsdAk8Ghr3LR0hRsVQM02YKh8bKdtn7jBNWHxl5uFB/CCMT + f91Ml81Cusq4Y1RGcv6ReS04Keh2O1pWklykZRVXaWGfX10IAGoTq5ajNm3ysg65G/CQD7gbMS69 + 1xfq7MpSTyqi6QLYev04y2dKw3EFJnA667+AF0Doi7EIBWRI/QTfDubzCJ4b9dmACzQOlJOPUxjZ + WqPJRBvxqDxuHqariXwMzJ+F1CmhRRzxRDs1QUMlds+ri/Ph2yXi4I2qvBdkTpwvp8wpGROVx7jB + ruoUqnszzToO3Nh3w6dKmcDvlR1cTwPhO3XArnHoxwi30vvPGu2eWBkaXoVReQv2k3AbVfTp/kUp + e0utLkkhVCuRyiUhwVcoZjvbtt5jwyiul/Vnz6ZzYSML1UE/XcAuLYq9u/hWcmNScW3VTP7F1SF+ + WCdqoK+SW1iu5r2KQZiv6QHeRUeO25IdgJ6xJgeQTZjcAHSx2jGGgaxkhdsW2Z+6MCQvDoH+QTFT + FAutllYVhAmjJPu3107cAlWWbrc68qXkwpFPV6V37fLGRDDhYeREYQFW1vXevPI85sGR73mu78n8 + Qfx0wl7WhaGX83UNvseuQFT+CHS8qAyWbrRWDZrhs7oyU8YwkB1Gzbx441TIHdVFuRw3rEdzy7+1 + Pm9z0FjGEcsjVnfEVsqpRiQ3IDeYa4o8vyh9fO/GzIfXx2AGQy4GcHi5XUdsaXY5BZng528wOzU0 + J3ygSbZexkzP+qCH001XiboOF8cop5QbvO3QStGAB76ShYQeMj20Ty6FsrAGaInDwc0sBNSnYpLV + Ss825oT+fIC17nIwlcCD6+MYvc54itNGaKVVy6XN8O8vdK9AXTP8vUdg7B/S2Ww6Abv1X8oGgBGA + hdcqu9/h5FmAoUJXCpxV0yY32S6U+IN57nM05c37sJUjAY6AHC/CAagbcJSo091CVs2rtBHRDVDH + T4D7iEjlHq/S9RqD+9lsxC+dJOmPR53S1LrXOgP4cJXzCjTue9DVMT687zz3gijUia2zPeQofS+U + RZUuc9sUVeLtlkWVQnKpqBKvkr73+fyjW0p0ihGvt1BUGcWxG0YDdEA70tv7eWUCS8ymSxwfqUsQ + egLSE01FloRQBz/fz9ySOli4s4CsVgd7xhyYvbFbCoxuqt+qWkGMnGLcNY+GD6dQxB0vLOhe9L41 + NJxBUKDXybPgyDfutem5gTpWkcqYnBvohnzADKXz0tdVijjOSgxF3BTP6MUajh1t9SAV413//L9v + /vscSRym4wd0fdylW6K4wWxbKkGkKpZ1D+eNTs2JXUfGUMUGZ/bP3qpbW2m1xrFDVeYkyALKtdE+ + jj1XHlDmEFrIrStBl8He4oKxC1LaPfsn8bmAMUlvki5gr39MVsP1drXCWQiP0zeuQQdApVIggqVb + jKHJGaKeaeGFwfVfNZjFVWV3vu8rbBduiji2zvfFTemsuJFFEnueOW4b7Hm83RJ7XkguYc/jVTqt + vlyflIobuR+4Jex5xNwMokHAMTBBp9XH0XpDsEVYwAwqCWzJCEJmuL0lubs8rb6sRhV8dDLt3Dym + zE0/T+AC71GBxH4Kw6kxtKpdC1Hk/rMImYl5oTm+GcYZ8qF1AVFV98qZ2FyX4UvXSWZx5Ac1ktUL + 9y4xJcHshOk6FQWSL9YJuvrXaR9GO3xZBMAy68OUP1Kde6M5Qh0tphtRSCO33RkcDHN8b9iYvny+ + EuA2c1xHp/gL4V2hc19NDpSQfkvNL0S4Ld0Da9PFUdvjPZywGQo7ET7DpKRIbNahBkzT4RED7okG + TsWWsS/BC8wPSQ6suu+nwnbtLAUS86zQj+bE3IfzurXUBiJcp7JWpfmBzvC2cPtQk6C80VjNgJYi + unydBkdMN/TQEXmsdgLNNwMuRA7lV+FeJJo6KOAvuWk/OrwFbiTdbscpR5KLnHLiquR2ubj0SvH+ + sHi+IqdcEHjBwI9CBR1wTYnsVJlwcZnwfBa8pFGZzsuhgD2qW/IQ3XtQp5pHKHNAa/NKCbDK8Wg6 + 1LlpLL676kJKzj5kIXOD0sG7h6t/p8wqot9y3J+HtaZstVhMKNqWscVdx3P9Cl2m1H29KxXrx9qH + AoWrGeHHYzs3xRCkebSaKYztyUSSsKq3wQ1l3cP5reG2YRfoya+k/aSmSzr0WtcVhux+tL7NrtzS + 2k/myaq+XO/BW29nIhu6yHc76uscOMF5a2/1tqsb+Q8nM60b/i4SzTiVW55dO55v74Wk263OHSm5 + cO7QVXnuXJ2yUr2lw30T280N3gyxEC70Br4XaTekYBJOZ4+SGP7i4kKnlYLU474socJcgpn4Kz4g + 4pboRzDA+WHlEZAVdrbYZRK0FKpxS9SxthyzctWmgDQR8xdGoOINq6jB4FCtqwKJowATwSpJuGpa + qTEq41rg5XwTZiWI/mIxla5kN8I98xT9LyYJeFSiMu39qhE6Vvla6VZQNXx+f3Fx0xOTTZ0C3PMp + 6Hw41o3ne15FaeI+Eg8OEYq5hI/YzsOdm2+Xe+bhUUKYxru+rq2tc4jEHYhlxJzx7+livH/MCeEB + ovIMXWm9e9/qiG5CWVzVO169ZcGJd+TwVnUJ2VOWhQm5ZvKVCdllOhseHpcp2ey5FK6G3K68XFGJ + ELo9WYpAWtHtaAWvs8JqhM2utC69Fn9uiWw/y2KnHHjbtHXYAvMcCCll5jaqWTuxItT04Drbzz/z + WlatZA9Z5/upRsyEP3mVpoZYjndTUVmkJsBCosCtpnOtUp3MU9Yb4X8QSilmCvb5UKIZRkx8yXqD + PEPrB+HaErCiqKItRqJXZdEBbEIKecPaUeI6sc9sWphPx/CpcB7DNxgoYvWt1tkOjBG8i56y8GZ5 + 8c28PjVSPTilq7rqTh+NRtmRrVifuQ7TQziZfiN6xQ4P6Ccotg+8jBcSy44qLa6aQOEhrDosDvx8 + w3bVkB3rDd0cpJ2deK7a0nzXaYksp5+x3dBUE8Z+Ji/SdjaWpXEGP226ToZBjpEAhgbOLdgC8jV5 + Vk+OR6v7tPr5/Psh7pQTeIQ7dWClXejQUqGiX+jABkG2mEWdlMFZHMzWGEoHF7qFgdAKMdWqPa4V + PE5LCuFOG2S0+BziYD1PZ/fT/mgpSjbti/4sH24Md+NGYfTIn7YSRcw1Tg4eu5rhJ8wZVLuep2Dz + XM89YnErzDx6xBYwTzZgoOXRNQmkWVVEJqFfDOTMqvu8obzz4/o2yDfnugHzXaXkKQBEhNC9g7ku + VagmLcZ6rYAGSI7W6T1Gn8UIT7Y1CAU7TjQjsJrp7Tv5Bq3QJJ/Y9mmxuYTmgdAKk+GgvcliN7Dq + SpXgxIbNs7J+iVufdIFUb3dK3JE81GFlWejmZml1gdloNk4fUllSBkMAf5IqR7ttKtR0Jdw+lkq3 + W9OV8FIsla6ST/uPi8squhJWzKx9BSYBmGoD0O1ZLHOVLhsR/HH/FtRwctDxaHkHL5LOpn3Qzido + 0GpEfAlzNJ13gixYQ4/cRQavLWuJ+a5esfzKCO5GURA4pVBxW56SQsQ4L/RArpJcCFRK1QTIyH8k + C7rVmx+DEQWmqrRnJ9M1DN4jJvEKfLpvEhlJF95g66N76ND1MeVGbeG/mKcwIKzd0f19koO4X4MF + sCG/J/z6ML1/mD32l9vV9G6aTIzvU38fbh5gld4/LLeYWLedTJN1D2d9xkYSUF5w1+VBHeFK7+mU + 2xuOev8832eijHZHBuhFQkf/lWUrnTgTWOCRyzT9MZ2k8Aicx/tn2PJIKdcMtMMjJ2ilXctnbNVr + 1YShX8uLeTqQ2fRrknnI/+vi9c2n9yIUd31zWsLxOVkt494I/4OeAN9zyBPQio7CHor6T8BPwTCB + W0xWoZOXID91nW1FoLUUrstCruV3aMAc9clnWI05+vQvEPhBYfRh7LHJNgWswg6BJSK+RDohM4F5 + GWXspOeJito5xjl0NAGdqUVqFdvNHqZoUX5VNz7YGc8ACzgFKjCWgSu9PO0KcxM2psaAp3VUKtZA + 45595gvdbg007pUyX+gqWQlvv5zxEsSSyxy3iDQ+5BGL/XCAiNy+TLq8qoDYud1OhrDTgFol+lyo + jZPpcoZaKOlTa6U69kd96NcJdBg8RJl2cuVOF2swMSYqq/77dDYhAMbbqQgKZUtcWBdvtxNeRj1q + DTfu+Ry2qycjh9pO+mbHmFDc3IT/NpId5Zv1fnmH98R8yWFie7KEm8JuKhWv4lttlWuPc3Imaez+ + 22kqsier0hJxUiff4Tcc9y0t6xFSjI8E6WBnlA+/Ygc/HCnpLx3/cmXa4EfWZvOk2+3SBklyMW1Q + XKXN8+zjWTlr0EHYpkLWICxg6LwB80IfVQjcO8+GMzhASsQ7A6HJT7HaKLsDrCVF0zMonEWwKB6S + eZKph1iuKzQhUkXuZ9tximJRY54k2d9g50g2D6MFHO5wSsmWjkUoW5rgOwlKafM9m01a8r7u8KDo + hECfQ2+VYHdqOq7/AnUVoZIlL2uqrWEUGhwrkRfzMC4mII6SVXor1t56OV2Vc99jJ3Bq9u1qgePR + 6jbFF8dPqCni9uPQ3yG09+efQD1cPzoR0nXdnvx0svEruql9PZUYH7y7ahxthYCaSZotdq3KSG8X + KnkWVGL7cM9Wv81zYbHt1CuE+wM+0m6H+SVt1Homn5NXSa0eJ6Al+P7kbM+jXiR3/vHu2omYfTSF + brc66qXkwlFPVyUh07vrEk6JE3OT1tYN37xyOYJ2DJATAvsQj3pXBttSKsmv2LLNEuO76SpXKk5E + w2L7xeeLJePHunAZdPebZOW6ipAdf+kg5uKBAl1Ftt74STUHcMBq4w8cTnsvLsLMyY+/G4Hl/IjV + 1YtUabA1deWxE9adx7qN3s8ekR5OH40zF0UuwbUGYt/6OJQCOyi9PjQyoeUEJKeqx/d/OxwbfGT3 + qO5TOt3dKd22MKy7EwgWiPBnWS6unyy9tgrsl4dTuj2xWABaaGn673WQBpT2WvNaA0rtue+npC2f + fhj+/kHmHsDmMUkX6Wo96H+CgxN0bPjnao+UBO1Y6aZaXImLHLlOUukP3auHsEpAiPm0t3LAFU69 + 38IPQLfb4tT7ZT8AXSXl4OMfN34Zpj7yyjD1sD1HbMBB3Y1lFtlpuviWrDZr+GIxK2ByLNMh1rji + DPj4uObL/guBPD4Us3E0mS5HwrM2B6VbrNykr2fWSxypNNuIRjPcYEnuQzqTgsGsW6brTY5CFX1m + OchyuUMsYbWDjQdTJDnqv/gAU+82SRZ9lAojQwyk6wzBteIt9YsdvZRaCXyRv6dWkgNycZEZMmBF + pUR84v+L6EfDsUwWk3P8nzvQbqIortWAYIo5rlfSgDpsLO/r5XD2OkVMHfRmFtSMQV/3NB6WEjjI + BMIJI5v+y1Xli9cf6iU9my6+YopEXmoEikutC12+fO+qOIEeZ0YKV96BXfFtAjBur2Xx9Cuhh6s9 + g97nonwzdiRN92iMEUoRMehCoRO9nTscy0NjFVzDmYB3Frs6/17fpiNjRolT7/VOgJkqban5kS4B + XztCEKXTvryghw0L2spT0pHop06RVEepKCn54/1HkGpvZ9PtVkeplFw4SumqdKm/Ozdd6sxzWeTz + Av579OYV8xC0YsC8yMOAEZ6ln9LFEJ2ToN5gjtH1p5M3y3WynaTbFSEpqa4eiGhQClsFprPkbwHt + atNXFKh9N0K9y42FNxPEDQrF34VKtjwneXJ3Nx1PYYekuvEFglbMqNYL9Lvvm4eBKhtLRG34bbp5 + EDqgChfhU7lVRb725L6DNMrYc50gcA/lZzbE5BwDujsfRVVH81HohW6RpjmPzGK0oc8pEaCvSXF0 + 41oMAymr99edJj1cPhpgJop93G+ZTwHQim+sDqo2ewYciT9aGIRWUlzGCIuapNi+WCn941km1hTf + Mo6juv5vf6DsLaz5CIkoR2uKAfdDDhBdncPC0/hIUBS1SCCkZ6wTCGUTZgIhXZTEgJu5dMGeq+MW + FMvtEq0XXUqovrTXcM8NCOqhNEwr5DwgesDDC2h6zya1FjGU8XaLjmrW8NRM8Mkqv3Z4C7BWut3O + KifJRatcXJVUMp8/lqLzzEM93bTKX/lcEDX7rhNzpgogJsPP39P+R0w+ZYpLZjMrn775ft9BsWye + x3kMONd12NNxrInT5Dsa60blGJ4cudwaA9ANQceb8NLkC+uEpO9TOJbE2ZTLd8MGctxlJoEy9DBf + 5rC+R6Xew7oCmFkG6pr4FOpylEMrD48fScm5fEjQ/lokQzAE4NhGWOYV+jrpI4/76+2SAtjr/up+ + wrKKBnzJdQ/njLbtuO9T+QCl+ebLB+Ar27u/sVfF2VE9HiVh1chlz2HDUIs80FywLudHzG9HBUvP + WDPByiZMIli6SAt+tZy5niNLmALnRqWQ5TydH12vV/8XIUDgrkT4LTj2HuPattq7iFFNACtpDXgP + HSSyhW6WwpxWFr1Ul460TweGh8gu1Yl8rV4VT1k/1ybcM0NO9NzQKdfj3gOCmEaxekXqkuz0q0lB + rk9DCCVuYdYgAv1spputhAup7wjrGXRII42KW6jAJOK3wZHjtwOTkM/YgkmoJgwwCXmRVvJsPXdp + GX8J+usFgnHC1ErHU5FapIpB5N+uKv7W/wgSeihGkORxJgmd3TjHxgOGGZof6yVMLjg8BsIFJn5L + Dh2nwKXY7mqXldRCInmS5ofYXbADUQxISLGgjLB+vUhypuc7tNXe9guwbChoKaZQ/0twwMdb7Kpt + ZIkRouiKlCggoay3qJ++/fVVZq9PO/4X7zX054/+Fx/JKIbUw/u/Lu2uFiilLbbRfVFT1X4ZycoN + z4naVG7g7ZaVG0JyqXIDryrM0o8ue1sq3fA8p1S6Ebug0fBB7HoC0hT31Q95YLrfr9+rOu3ZCloY + l6wcDWZiuhiDqGXWUGfFFFNFpaiuVcpBw7Ygp9fT1Que40jm1F0YNtVJkHsh32jdOZZsJjBG9jOI + brdkMxGSS2wmeFXmtF2dlgxk7oWsyGYy9PwIRmQAtrPr7Zg//1rBM+X5o9TV7FrleEWwMKvG/XlO + IDcMueTe7QAG2XOUMRU6beEr5SO2ppRswLCk6BpNjOniQfpBTj5fUbj2YXo73aSrnpnyW/xzAZdL + t4TIhT4XsFwuEvqKw7K6HlSKPByAxHV9KiTSppKVAV9XRgqTn2KoNe9N5+caUW8sku9sPwJabeyt + HBT5QWAEe6lfneSk+xWZ5LiMECFCYU7hUjrJE3ccpkt4EVGME5dcbvYePun2kd2kZ3hMOdS5e+62 + xC3NHrJ1qetGDJ+6ukpbQlUt7M66/Jv1yu2t8T9Yl++50f/V5fs+KzfQQTV8qf78/wrg/7IF8L+u + dN2jrMvfPsJMtldf6XYr9VVKLqivdFWS8b0/K5EF8cgzM0U8F9RXzpwgHIDxI8iYhVvpdvq/2ynC + iyiVTTIxvXjnviRmeaWhrSm4cb3ceEva35abYDnob76nantbq7ppFt9kwDryGg9uFGQWWAnHBjbx + O9fIhMPbJ+iUn+gNYatetH+3Ja2E3netKALvJnuTGl1dZAGdIIpiFhW17W1dN9Ww2Xq8Jt8wiiPu + BU51vqGgztRNlUssYVmVOB2s5OJKaJDrgIW6Q27vzz9RerhOdE6IF7s9+el5g6Wip15bcOA5gUd+ + zmwkcwfLnuyBPsFUZXMvO2K1e+owEl0xo8zXLk3Axs/vMByz65RqSlzco6C0J9ep2cN1q9tqDjyH + 6o8u6PRASiRmHma+DnOlH/tJVQelq1Ni3BPWHlRLPmSdFKMaMbNi5FUJXCtLwWELEVXWPx5nJcza + ylvMFhCp1gulJu+QZqifO7QALXaIniA3DM2Lvqz2xgGp8LKCveL5TapL2PezJPdTbNuoll0nTHdX + qia3rprJ1IUpvW8LOxa5pHV/PEgIobjL9xkeIsx1YkJo2TxMcbbj96YZ8P0vxVjxvMz9cAKLPmrr + fqCH7N0PspGC+4Gu5pI8Dk/x8FgcxX/NFI//y9X4a+dqeJRa+fs190L71Eq63cr0lpILpjddlZGj + 63JqpRfxQuQofPMqhL0tDAZhHLmONL1vZAYeUfVejya+S1l4H/EsnokOJPyCVUW6JSKLIZeUiZZT + D+qGJLGgJpdqHbIcvBeYZ7jtv98u7qcvTSgBHjYgUbs+56ws9zB8hZwkQplPGt7PgU7/OfHXXLJq + HHpeFBYrB2lB3oqaiSwSMsjHJ0R5Qx6ErAb7KGBuXMg9LbYNUxsWhaZQQSM8+SEc7ZhHupneP4jt + TeQE4ScKuxxtZj3qg4q0UjEbkOJpKiahNLNHt+tE1m2cX10MRwswtPCxee4V1sf9B6zLFqjUEt0A + wakTWMALjFZg9cfmOB9cQh5JmaGKO5huXyL29XCFKaPdD0MCjGBk7h3S2Q36eAPnedvM1XoPskvq + JxHfEcSgmuh2B5VPylLyI39CrpL7PWJPAYvMj+rceK/8gtg1w5JqS7N6GvekYgc2fEBNCUnGy7fe + ru6gH9voKF3EugNKfvjIwjbJD+J2u+QHklxMfhBX6Qg7vbopJz/w2CklP8RxEEcDhrWc0Y7chxmI + r859OOSoAZvNjf1Snd3zyoRwwt7BEGeHA17mZMX1svZLnO9g6T2H1P2uVnCYVXqd8Jb0c9lD9rVe + spFCsRddpRU9Xv9gmpF7qD5KJQtXXOufwhM9fEyUdTGfWJeCOCRDI5cuIiGFviW1iSN1cLau9I6a + cV5KPNa6xk5phzFG/LxIqDjjWZAhzqbN/K3NvqoOKZ+rEz53O7cPzhT1Mk6FKDhyWLtlIh6xXiTU + gLlExDVaFgj4pLXmvLf37OLq5g8Jx5WXhKvC811KnQ890hrSxb+29231vkN0DtWRsTJ73RaUSnS7 + rdnrlimV6KqsKDx/V2H2olu9aPaGHiy7QRgihC11fj58pzlvRJV4XwCVGAQ3st7wPtmFrDsfiQ8y + bU0/rlElIofzSGHLVMsshEjxPG9LxoQ2jvKRkBssHUMH56s05IfPU3TX59tjnuPXxai9wI0iv2TS + wixYJjBpaoLSbujXGclRCLOSF/F5Kzu4MGK5Blzk9KzD6pX9nSdVKoPiyibaTJDjvog3C5tznOZ6 + AMy+UX7jXcGSQte0zPtAW/dmPcZZ9YAwNek9vpLi7jpfLd/1cI5nhqcfkYuUktrUa92ls30I5Bml + Ze36ON0j1mcsd3iQl7xKat+weFjhhKNH201aK10pdwT/WuBfvyijoZOr36KNhIb8MQrTjmClPM6G + uXma/IBJvLhPdicoNX4pC0KhIOeTiEfN8qqdDB3QinQS2UbQPiNTAZftZDpPVrqKez9MXuYQjsR2 + gUslVzhX+5YVHYVSSLfUO9BeOpJPUP5XH7nv2x/tdLvV0S4lF452uip5UN5elY52HwbRPNqjN6+C + MOT+IIiiSBYaX+T2bVwf6EITas74EZN7cEueJ9NUAJoQW8ntsnysl3nRCySGtag2foRMV8VTsT7o + IPT4rzAcm+JZD91ac/Yajfx/7L3rd9u4ki/6mf+FPt0dr0hpgm/GnxzHSTydpD12svfpuWuvs2SJ + tjmRRV1RSuL5628VCgAJvgRKdOJ0z5yzOzZNFEA8CvX8VemmnMGm2V4j1BmFhNZCrEJQeNtoMh/u + ZqcK+Fubh/kW0wmJtDCgaBtEN6SEzK4WTywFuSH6b6mMimYDxou53vuzq4tXR+UxFHg8c8QAIqsy + uusWCGAAN8gITkKKOAQPx0j3nu5o8lBxQ/RUxc8my6/JIlup8majDyvEtcMtA92O1PbIR1ermRPT + X36frnH7aGOX+06uP48zO53P/JWFG1ve5wELA0usCrHzxgXsdbeFjBhU98LBt9U+2kzpjQhAtU5+ + 59WO+7nb/6YdhX43+gAmFJ/JDLAw6JUBBq+bZoAh5XoGGDwVRtDXp6xuBfXdoGYFBQnACaKxHwb8 + ywm5VKZyCbEW6zLjqeKAtkLSRUPpeoIm7mUy+yICJvOK9wWW4UsqATo4EXxjtt6mKuSPB+tw3Csk + w0GvpvzyIyFYloaGl+bpjYiAFMdTWsiohAU8eeAna52iaQdjMe3lvSqujeVME+ExOvsgODacJFZn + 2TAyzE5JWvBeAqcNfBP0DubJQlPlO6A0f7s5HYiuXt8O7u6zrMl92ooUFzHXjuveU/ruHTZtP2Ct + 4bXlAVYx5ad6TWp5tHSjtteKQeoEge+HNTCdAS7Etg8oasV8R7FY1tbSryWnjVSMgdes6lA9HLNn + 52iVA0qDyNH3WGy3RnQ30yxZh/gZUp2IM6lRD/uOuGAUlWGyfguVoOl1kcJ5kHsAp5tXOkNR2uDw + OVFrSLro0fob8EeLXyDKCxS5oTAVhlVTYeNmMLLA4h5UpkN9qxq2Z7a0X8vNY9Rwt9PbiEasaJBC + 0E+JRMbBVWbOWnYU2Ns5HhcTz7hjrPsAmNDy4Wpg6tvmKcoX/WIB4AKT7dVH8e1bPihG08w8EvV4 + Mhr37/y3mJVrXoPeLN+MICmn+Swr3W9G/eNlL8TBikhg1jymSLH6TPT2Dx7gXnQZI1uYmP4+2WvG + bQcZQJNQPajnqb/qYLDIT8aohCWhOZG3ny72HoZHw+iS2Do3jlSCHAk8xULGXjC3F/CUaGMKPCW7 + 0ICnxENSiO7SXJh14KcNgqvC91QqdJUcZ60vvUM6lTcdDoMQ+AQ6You9LkmYosW31WDZl96vW05o + qHo/PySHw3PjuLw8tR3Tv+rOASTNczD27+MHlJIdturPwUkTSjA6tKSNr3LGIsd9gaFVPWIGqIlp + zIDoQIsZoGeixHeyZjIyAONfRT2MRbrCiT5xirkWAS41EBjVh+N7bhB4FGPj2/ymBpIjCqltZQhL + QgLZlYhqTrCPy1I4FgtVeboEFSBBzJuMO2OSDIbSCFZulEBmu8RHmuJh26W4HmByITfOtobY7vAb + kruOWk/7Vwk1bv7olbBLtAwDA8223aMEGvphzCfubba4TUfT1Wq6nm4Mb6anEGIouZinRDsnZC9s + p59oR22MRTvRhS7a0UMJBr8RmKLAvW7lIB4W5bIpIkvJ2vnG6AqoWUiS44uy2Ba5ZJEWiFCSd3jw + Vf7QKyVMMTcvClvIfpxgIaBkJ/1mLOm+Z6uxxI1DYR3tc9aqx7VnHDyFbYzij8g20L/NsNJORz7F + QXS703J9Cl6do7R+97CYzFNxZZf7As1Y5fzzjTPEFz1evz+o/JFPiXWvL+E4mzvk6HUjh5ygXHHI + 0VMB6vnPVzV/nA1Ko16zIHg5iTyslD6OMI9VpCVcfv7nK+AGX5Q7eTz6dH7hxdPRO4r12ibCn3X5 + 9bruzrr61yVTR1WzdUfMafHhMy/A+ur1iMJGRK8G4oh61FFNDm5Xxzm0ThGC23iOV/MIVZEGtWFV + qzVoFfpKwyp8E01frFcmctvRUgOE2KwWP+5Psm1lFMkOODM6Hxeg4ZWRxfTu/J2TYp2pwkoqzq8M + XKP1WIzmuAh24Na1ju2T5JXgB7iNgLMvHrR6E9LBcv7xj8iWTY9H00WeYXggcQS4FKYogMB4YQR4 + PyRr2bB2mqQWhEdUejwcP6YASYeQQ15/PAHqq2naN2m7HxJe0zXcj0KXdfBXgM/je3FHB0TFEDWv + 09ISxKTJlDNCcKnn03sswZhv0vttI+r3jiLDQ8HyRYQ5cPVtzXpZ7X8CMB9n+K37tJ/LwSagqPNl + Vhxxs60+dJpKJA//XYIhTweIby4pEIfSGcpNwBf6ZF83AchmpLhwi+FhqC1EaCc6cMsRRiM/K1Yb + 86VBu0+l++IAo6HLSPyEkZWYmfuPif8P0x3R5BYJlO4cnAY9gVeKRsbas+xEV5/FUxJN/7/ZWuBH + EW7YMltM0PzND3IymRWld2vor5G1RxPsj5RrTyjXjMBR9CB0uTgjhRY8HqnekFEXHY5mB5jSHqX3 + 7isuYsU9zFMPerXHZGby9dfGiPHaaZ8b5qcnMHgNKNHpcpkcYFSkdDadJF7wKQcRe+g1RwVV3zah + Knf7OYgje2/JfW0kFkkMJZDFjnM5gA9pgL46tfZQJA+wqEcYLb1umDzAKdeSB/CpQKIFNbuePFAt + pBC9nLDY8xkbs9j3HBFF+3mxYiDCiMsXblgZnO5JhNd0VUd4VQWMmkNP3dYkOoZ/jZwnCCYgv7sJ + UxUnaTUeTUefrxejZwVuZVk/O5oo8GyBoppQvtv9xl0VyKEiJg21yHmySWYbUkynstL7mlctnpOp + fyRAYPTznG03JcYjlMoysbPLAoClFPFu4T4pYvElZMKBVYwodGh3dH2LKG/YehcSyhA8ntVZpz7V + pjfOPpSGdEH9ivAWe98mkg1TRaS371mfHC563azgK1GuFnzlT1U2A8oJlYqvDs57peKrAzJl5I0d + 5jtMgAm+gv6U9JndjG6B/ywfFuKfsnGZqxXnYwGhiXW59XdpVkU47uwhR76DmbigdGw5R1EhuwgM + BeIAcv3p6HQCG/Q+xUqpp9Pp/ynu14Q0LwQwTLZ4217cJQQ4BcOFmxeZWbXguB4mK5MYPLepfG0J + R6mSwNAW+62FrJfC96Vlv3XqmmHDg4C1mm7tALE2a8H8esXlZN1CGcHCekXdTxczia9adu5rVtAo + 9FqsoM1EBw8239ljk/uxYYuWDd6R67VZpx3b9YKolqjH69O9JX38PplTjnRTKWwtScEJ2pJW5KdY + f92TaHEOpcLlmUOwbgK8Wp3Ctl34m1HEuUOI7ObrY0KW74+yQWnH1jIy4A0RjN6JmmoSeU31h05P + Tv7PZDf/Mq3LMSDMcuALoP6kjZf2JRiw8kIaMGsj+QboOj1m8icRf3yj6VCRjYd7taWFciAsaD+W + Jkn3LOxtkRRtTA2SsgvNHikeChzo6ZyJeJ6S140UGSDS8AyxZplr8YYcAdqWgF8He++cqATMia6E + SfJ9RvkwbQQ7Yin2IbdjfLHfTZA744AkPRyj/RquzUVinqY1rI/sB9cEtsiNE8pdsK8jiEo0Y13m + RTJBgWCJ0BoHUBzsGvFZqfD1IeFFTGmeB9I63DkkGFNgF1CE7+IXrCfEGrUxByKkLio4hPwhcaNZ + dpMuUBTJ4IWHDDYDD+u1xPPfSn8QIQUKo7DcAWKvOX4s6osOgQv/9yjCBo38QDVqBXfogIanQDZu + jR2k1LQRve5sCZtsR7fr7Nvmbk+MJHlamKhc7fg90OPpdcPK1ZxyrXI1PqWr+91JHWvHdaKgWrf6 + eeBHkRONQQQOY3dX3Wqg/23fSmi/WOFqx1Nouz8SEVSa+oJSzt6J+8L2ejqnRSPzrD3RSSVtj57S + tgAadylHW59sMOJHFmkrZaIYvKL1hq5n23fMa4TsCOGmC5h3zZXn6Uwqy2gnUGD2B/RANWnEdz4s + Jk19lWnWC3X2p7HTb7xrp/XIZflVcWw9EZ+lplHbgPtKYhHl8LZs60FKGe/Zww4l++CgooOKvUke + 5spq634Q99RmVRvTeuuyC63gunhIV+J0nvgFSG+6hK0yT0qlbvjuI1tAtr6nYmzSYYlFZB4W5Xb0 + Tsl0YCF9TD+OQiY4GhOFG7dYrELf4wenDQeMFNh/ALll9jX7B5qsDQn3CMjZv5NunHdgFdjkcFJe + YEcK8NI8JXuY0nNDMlazsuoB4Xn02JeDsKlBu92RDk8Ru8gRhyA4oJUPSTlKm/7+QEOcjMXHT3hA + wjqh2IbDU2WCUmG4U8RPsHsWhqNG5oXhRCeVwnD0VOrdyzxZY55Bsv0CFLKNjAQBzbrzj1oPqHcD + b0FpW36rXzZ8Mqe/4RPa9DF8Yhc1wyc8FGUObu6Ey/r0Lh+9ybbrUn7Ps1WyzhHO+f7+xehdsoTR + fMDqQ+vsyIIxowrKGRCuvErYfpAa5bPVFlf5a3I0Or1bs9Gziw/nr0fM97zYtWOgAF1zudgJfLxF + XM8hdHw9Cr+CoCP6beN9O3w7vaQ2uWJUXub3S2a75jouvW5WnJwoV4uT86e0Sh/ffKoDK8Z+UC1O + DjquE7IAdNzADQX0CKi1uaKG55b/7MHPHFlofUtRRgjkBb0vN8gfMarwejr7crvOtss5bAHSiz/e + bBog5BuCxnj4R1vJL/hT5NaKg2PEs5TgZpiEs9nABjx5dXpURJq2euZtvfR2qTfmhHHg2tVkqCJ4 + VXfGs12jti7EptZGJfHXtgsQetbbW+4Vhp0HRMqY36pawofLiyP08pLF7hhu9P+eIu7raIjFsnC3 + qBLdEWOWvX/4r/VksmeHg2MaQGcwzB/opPJoSQROQDgTleGNgZFvVwvKVOP7QK3CffY1ke5yHnyA + O9dUPJVsUtXwic6wpHPYr4aPbGQMNSI70cFGxFOhBy1WrrSj1+o6WByqGK8wGehZvDPLxB12Im8t + Ow4jJ4yOLE6To4+4Hjn8QrG/JT3p1leZhP22J5AjjPYs30zkkNCWI8jLYgSr6ebu27QHwg8Q5hr4 + NczmpEqtRqXdowiXt88/uBJpgXgm+PZyKioclgGhNft5ORije+z7e+5+VVtR0Whvx0NBgkwb5XUw + 5rdeJGAitO1ysAdjj1IBnUwn+r+5lKcvPjmXfatKl1qZytRFN5pUrR4LwDeRqGVdJrP/pNAyLX8L + Z6PlT58Wd8zawH/4S/CDY/mR7UQcI++3Ef4sq03bIXnyNskiA+kg0U7g13SKuK4wQlBdW0ytRQlR + YCdw0EsZsSQvUBRDN5H2Ah0UCcGTM3hp4rEcKQ8xbq6yaeg4NELUeXKyx4BFyIZL7jxQHLIjW8kb + paTFQ8c1WOjTMEmj+6Vm7tyhQ8VTBSqeyvG8FzbrxwRFG1MWKLvQGKB4KOCR0rkwK1ydfyyhMZA0 + FQceiBDxkaX/MZ9Nb/BSUFfCFVKpNEHK3GqgoC+bEZnNZCJoTJecQLRGrNjtPTdztXC7dunqUGxm + kKDptt5kjd+ww5hok91STJ0oK2KO3ySFO2YT+DDOBLVOl+lGlL6mgN/GzdkyLwfjOj96zEiz8LV/ + nRAW0/wVQpDw9vfkDINUBQlt5ZiKvBcs6OmYojbGjinRhe6YoofEDEpSIui4S6v6e5kKwtu6tlcy + nYZM1Gy0wx7BJvS6Yc1GTrlWsxGfCkSlT1dOrWZj4LNazUYvZLFtj70QQV1ETtAUVolfZ5MbWMdE + uenHUkxG6eRuez+lygz32RZuk9/TJbAolVrw7S6d3XFrkIK8aLAwYTn4Aibn8z+LOEokLCJTVTkd + AeO0yZ2hI14OgFl6upEzT3UdLdycqthiYLt/8WC/WpbEwSG3w4icQ4l0IQ+M+vP8vW07/5qcGDM8 + 2cCI5SnqFaYnn4tcyDevdf+D64L6wS/JMt9jL5+7PmqnY/jHl6C/5ygopzcpxQiVVc41BbHe0jGB + heS2OJgPHPKDDMZLFzCUb5NpnTmJ3Vw8azzDkRs6TbzgSTEVGY7nRJHrl648l6p6vQcBv0dVL/66 + WVUvolyt6sWfCjiCTxcYbFZxPrmxU6vqBbJj5MLaM4fzHA74nMFSo5Dz2R3ly+zy40UjkBvwPwwd + Ex4/2CATFl2N1pcfT8a85sZ8lJFddUsnBI7VFP7zgHIyNICVu00moD4sVP7+pOimEHHn8NkSB2Gz + YlEzEEK2qF5ToWv3vKb4txZsSKvwC2JdS9IiUgugu3oCJv4gCv049hWfIZwdnbAXt9UtUoStp7cg + Ft9gKo0Rhsm1Oo/K5ajUgIwyFjBJ4CumgACl809XDK9aUFUQ0xjkzavPNC2ct/ovxJA5e3mv/Q1O + xCzNBefljwuwt9EzSWdc0BgrAkc9tEuPLoLWj4DBoyrGB8+nPBn5/5jA6ziJ+tcMOKjI3jWzMIiz + T1eEgfcjJipwKX6Md1Da7v3uXcfxiQoG7SBGUqm22Q9UOO3CUtiYotSYvOqTi6CI0SsgRvapfWMH + ZByMiVmoGTEajGOTpYsn/U5k7rRYFmMqKCDgmxffVs5qUkqJBoLyo2CD9RqhNZRa7Mm0hcA77SFa + yQamqQtEvZ68wJ8LjfLiyoleNQhXHqtmMEyC0I1cewz/xF7QJFxdnbw9K+UwBN7s7yM22VFJbCLs + 5YtLFns9UJz462YoTkS5iuLEn9K6/nHxqWYp8D3fqaE4xY6HEnPsBLF0Vv+BINcrLFs11+JMqqiy + 0IdI+hoTstEKjgTB5cL7dzirqEGOlEEGL8LTF6Pp4hpmeymxPP5Ybeqaf9ljwhWwaQs8VBXb+FSF + zASe63s1tI2s5eOaoZPRnFaRvcblsJxyH2pDNXdRCfXxqyaMJrrWj1oKC/eLQnNyBRDwYZh9/COx + Sct8GKnxfWl0OmN829XgAvaIRuIbrurSq27QMrVaXsoTiWcaAh+ASWvz7kNlstiHkOu0ZAQyNCiI + vRe23y8ySLQxDQySXWhxQeKhSPZf5Y5vCw3VA/lDCB8llPErx7fa/8IJUAyQgF0zSukyi8TfL1iE + JLZ2Kaob2zNwwlKf8A7hvRRfL4XA/t80tIRLWbUENJe3FlRsn4idA5Z7loAgzy4Zc81FCHrdSIQQ + lCsiBD2lffr+6kMNCNKOEcGlDEAWvpy4URg70diNUbnrzmxN1tBkVrvtT/+4OAcZnduev4LChO5L + zbbA+lv8qwWHdJNK/Ata/iWoJL/gp6M1egVxA0ur+nR+RxgXvHaAqHGcwadTqvVx2T9wdr8K7RV/ + 89P9EuWvQqD4pAVnfsRcH5Hbz3uOK9GbeXLLiykfS69vwus38/k/hgEiphm/B6MJJnJk3x9WeQab + PlnCxQmj+/zPk1G6Xk/n5OW1Pn34qGCl7JhxewzzbJcO09dpjuHPInucI64XGB23i+0sgx8X8KGb + FjbY6kFnFIiyypPtPLt7WN3B1hXdmHiwKVCHsCNp7/2EilnmjR8DPnFAEUXxbUaOmCYO0a2rS0ZK + UI4f3zOvh9eWXjdipIJyhZHSU8VIw5rXlkUVXSzg3ovYs8euz9xIQAS8R1DYq/vJWyUBECd9n9+H + NTaaL9Gg+jmoeDmj1lItWNzcdt0qrwMKSKrRgMxCO2w1R2v0FMu7R1KI+oJVVyu+3MCz9Xo8Hy7G + ZYjfZooKMRgp5+iChFGOecgh/y2h21djqG5FkyvXe3FdTGj5twWzOnompvxIzvjxCA4Rv9bhQkvW + 2R2GplAQoariAq3ye2c1CYmlJsAngZfCM7bCmz5aHZWc2dCQ/iJFD830jZ80T2bTh2P1mfB2VLwt + RyNW6YL3uCLD+oNGq2TK3HDbKPkFxpQ/Bz9ZuDWVzxaYrSVmStkQd0+yueW3N10DoKYhLLeo8FLs + 02FUPNtRVOR236P48W46u+clgjPD3zzoiyKXbPXlhfpxpuyADLiKqZndfw2tTCpf7mM2x2aOslTL + xrCzeygZnSVLfiwiyiM5A7zAJ+3ws/cbrMf30Wcf3ToTWqE+RXKMKXUHZ5MKR1kul3sHaxhR6Frd + FgI7N6vLHOIP2qmswCiNSUZPcui2qMJ0n4Dss0x3bSQpOcXS+e/H5pITvW7q/EfKdec/PCXJ6c93 + pzUMbIezR933/xwEqigCyckJmC1cEyKPmN/bPBjq9P1H94Uq4Pvb4iEX1gUlmop9LvNN/7yb1TGm + ZfVhgXT8Zru8TSsIxzCYFgEpDn03cO2qvHXNQ7pKKLQGdukKbvPb83FZovGCANYvruqerf3oxKOK + TGZEXI/wqptYdfN3FLQJY7CEvh1UgxD0pOzVuyo5v1W2s33Xhd6sf9YqNzfW9LtLKiH2xRdgNvj6 + NuXgF/C1hMQs90NFCIO5XkyX/GimOvLxMf5S35naKF5hNgzm2eYck/DZf2+/JssUekFFdzNaJts1 + D3qAc4OzsEhX2c02h94wdPvIwmOjIhr82B/GmB9wo1fj7ulpho+IgXVsR1NhCWkRIp1cmA4a7WHn + PvP8htz/ypZ+t3tYogw6F3uayqAbXuA/qND5E7cBSBU+skUpWy+O+pSyxdcNS9lyyrVStviULqKr + s1OcjYoxNLTrtWyZ5/mRy8bwbxBHTs1Nzsuz5LN1khBWGvwFsbhhk+VULQa+bnu/JWwT4AnJmnKx + N5zboGSzQjz3nFvBQDBYYfjOdp2MRzRGYIDZHOal5I7ixYkls/s6ufp4cnmmsZs1TE4Gi6S51ihQ + CfokU5Jgd2eX8na8SmaOXbsem6t46LbXSgGAcpHcGG7zMKjZcnfUBqmQ18AYymFoGBHlebV6QXJK + GsEdfC9qjZfT6JWuqvpsjotZPLus3F3tYXPN9KX5Czg+njeNWGwHu4hZHx5nX1QK2X4klJ4/Jnot + d3HFUtvrLdxl2UY+RBqY+oSbV0rz3OJMFQ+kc+hTuoKNZ/HtrmrXwocPc8vF5MkqvlxM90SVHWhZ + VDN7RWxzlbSyhiZtD/ZeK87MYqc0hoYP66Pj//WLCfUgapQR/LNvVWJqXEaAI3+B+dXJqorB+2Py + wyJKqfr9ve31iC+n182wjYhyFduIPxW5BVdnupfTCSMbkQWr4EYT1/NDB3RML/BQ5uSgVcmSpwus + C2WC3+HrhGNvwEfcpfkGLrF8rHNHeBsu7hEmjPK6XutEFftu0g/OPl5gwB6VPsqTegm9WbbkgkRR + p62c9b5CYzUOtch71xRW+OKKvldSnwIsCdycTzVdS/SYmrU9bHc6aCSLW3gm5xIG+brF9xA77X5g + jWzhe0g3HB4N8ZCStcp2mqPXEqaCDpfueK24NwpdMgSBLvDCf1s/dNkt3KEKT8l3HUuMkrMRk88z + tzy7JYMtLep+KDIucBjO050JR/+4R8cJhUnB2NCBkeLbRpm8BOUQFnW2xaYu75c2MIdOtg5E+V1c + Xo0eOiO2JzurOnvF8LqJ7hgWGd27j7TJ13eOPQoqK917lJozp4vQI6TnBeTlLk143yudQo6S73jR + SSpoUUnXPMqDs6DOLxkm52+QMDxki3w6WliokXHd9cnAIyOUigqkxqTkre7IrG/He8XsF5hF3SPt + WzYyzftWnWiJ3/Kpeea3osNTv/3AkrD0P6NatLJ9UAbeG5BYbHMjPL1uJCEJyhUJiZ6ShPTm7JOv + SUggDbHICyPd9hG9fO4z17fHvhNL8Me2MLCbBZBvKHDwF0wNsFnke38NCETfIV51eERu5EkOwcLY + f2H3gqEtGplyCNWJxiHkUyHKT0+5pxzENlmyMPmO7rLbZG2V/vhb/a9aF5x5xJT8frg1giAa8dEB + NLi2L1yAB5AhPLhSOccOWubA5/3odo3R9+2o2J9qf+9j1ehlwu8B5PcE7Pp/B4vNU+GXPvmmynt7 + T2QIV5VOUwekvsH7s2P5wfLk1E5hz07Mw/GZR+U4gIMC+Tz5+XgXkUJGZ94b5OX96gBRG+MyQKIL + vQoQPTSVWAsqeOeEvi/Lqz1FtJQBq9nI9ZJZPRevWHQW9xQiSq0MM3tK3ZRze4rHct2wBsnmbp3w + KjNKsfuSLqsVmujV31rfvVh9YZHWYoVPLNcNmO/6loCGJBHjWzYpQdk1VEbOsWT0PZATpSWSxfSh + IUd+R6Ckz4+t7iYvUvJTLLcJ6mIpfKJnB17QVplZjru1cJO5zHFAJ/sHO+4ZqvcIEX77VI8iNGB9 + l6nMC1V8YV+wzeGqUwV0F1RO0t7lpUMN1bB2YHeS71H4pX9Xu300h3/A4dit5uLx4cD4AuzxoK8a + oo6NvKIoie+in3vrwty9ddHo3rooubden7+tle7wHTuq4QB4geOFwdgL3MgVRrPLoqaK3EDA7aUB + RFpWxir5EetSLB4mAmIrmY9rkXX6vcFh524LOyMHS+FRA/huNdVLAM5XPCofTi4mYrlT4EtoLl8n + EuILB3CXXqebHN0JaORdJhPBtVQNDXlxCdvU6/S2XmTEBD2wFGsRR4EdR7UwT707EbHb4OayI9YO + TGhHjs8ivxZ8qU+WiE7VdpwepYoZdS1OvyhmEUZUWn+vDWDhWVHJMHFoD5x42JIz+BQrg3dmJQzg + seA7XPHYtiPROROSxVJ637tLIGhuH6fXjVisoFxhsfSUWOy/rq5qLJbFTgWc0H753A1Z6NtjN3R8 + XwQQfEumX0b5dsU3bMazb/P7jSt40b/yvM6LnpyRXAkX2/tMys1aMabY8VvDCwI78OHP1pVonMy7 + WU1aAhySQHANByunwLGrD5/c49Hnf06QHaa8blLN943sppFCvr29TfJNKdMauRKem/n0HpHKJAMY + lzOsQAZbYJEbWMxZtlhMV4IjKbhbYFpfcgs3jfIQsJCC15ygVPSgBJDbT4VyqOyBoDJN+8KtBj5Z + nbfXKfBZRIYttDmVCbQ7va27j5gE0zIPLc0s3Cb328Y0rMeh2u4pZ7bj1GjChnpVJ9IWog4U/AYK + p+YU8ARpYnzppA12zXS7IWMJocKCs+gF61Ulu2hkCqKiOtFQVORTgxKJ9aKWemnsUhdYI9H17EOM + Z0MW++mrmg9dxhOUFkJcuppgoVeM3C3VTC44QXd/huVRBtO0YgU0H9o9EX5kE1NnouhAcyXSs8EN + gPqeVV1j6ePIsQXyz69oMBOEA9+2qf6F8rOXNYQexrdft5z638lg9b+mpeEYHhMQorbLzPUeet0Q + PpRTroGH4lMJHfqe+SdVzce1KwhRnvfyuYPouMEY/uFxh12hQYs19PA3CQ3ybIcJuWOAYPrYkTIa + KJ8vsP5CDwmNmpjKZ6IDTTqjZwLibjETWKL3D1nObSXKkrRIb+82WOwSK9FyKff8/EjWuWQggfme + e2SJdufnrU0rDbBLjonne74szORLni4KM3FL1YbPGkgla543b15q6THlw123E8XIVAdv1vseiH4s + 8HwKXaRl2Av4AYiQPluspRHaA+EziNqR2QFepV7xFz3ukqGiOgaJ/Q1tKrAiJnkvxuGKLBwW+j0q + jPPXDbNwOOVaFg4+JYbxX5ef6kAPAYZLVSqMMxaFcTRmDtaBJRZTT+znBVRKESvj4pec/khLDntL + IM6XM/lFRmNxWr8BBxgtk2SezI8rFssUUXUJ4G4LetGaR+2nZD/KbqiveXKTzlLYW7KkyH+tN224 + EuWv0LNaww6PgB84dVAJVUVmZ/1yUCeq8AllMGK9A3UBKvolbIMqKkMV2suUZBtqhBObjLMB6uGp + 7ggLN76yAwb+QLjLQ4SN0q3RsCSPR6g1Lymior0KiqFx75mSc3GqhclEBIztl/n6g6I5WyAi/iog + D4IB1fdIz9jDts0zXFUtt2HTDBGFKa9hqgrx9r3t+ObRAvS60TUsKFeuYXpK1/DF22qhrdANnKBS + NsCNX048LwqDcOx5cYxCHi+2tM6uubmvyak3xiKWD7cLWKR7tA7MM6wVXQG1vLid1/1dlJ7O3Skk + PGrqFWNxy70YeyAj1K9FDogHQ7kn7RuEUn24qrtG3CWQi32T/tSVVpkL3AMXIIRDtyt0R+Nu0a44 + Nwh20LeuBBi2gP6vf1B1xo5HqrSf8IvNMC2x1Ejga3PcXtSIWghjHYFk+T/w5HiEDn4qMIBeeNhg + vAbTnKatgBOQn34s2dgGazPxwZ8+zKLV5NN2xVb6uxxPWzjxs7WFm7LAeYhdfkW6fnFFFhEcTyyY + 0Q2C+iB5u/rcqu1gwv89x4sFXlHhU5qvt6bptHBqiJdVjpbZ3bN37MEgCg8eQWzR/yB3fp1kwlS6 + 5fzSdiJzXYheN6t4SJSr9Q75UxGydfK+hrvuOCyuFTv07MgL/LHHEEuQePDJYgGrnSFnTdb3CB52 + XC55WLjBYb/AgV9jgSrlzN0kpdAZfphL4N3TxSLDwHM42ogfSysjoENQXp6qnucoCsyn5Ziq6aIO + WdCk53B5RON/JfHeid0oqsEGTGtf3KLkOBUN6upqXIbHKVNX3Lsg3oKUFzpt4D0uLGhsR/+2ntiS + WLi9lMbhBSFnCA7F9xYtTBz8pVKaiFe3Lhgf88g3sEWfAA/U4HLTQREDhylFfKn0T9wHbS4mCB5y + ++B3jWXmO+yAcdkdhGvFf8XR7IOW95TyPknZKKZuu9pMvyRDiunMd2xfn9rhBWyeMfLnKQi8rE9F + W9nAiL8r6hUOL58Tj//99FTn8cDDIzcMKsU1/JfPIzdg8ThyQc7udpzMFtDB36VOrR36Xmw9kSMi + t1co68PHPfQ3et20Pnxc19/oqXDJ/X5eC0X0gsqu8sKXE98G4dcZ+7bnOqJkyyXWrEkm/oRc+niH + fEk22WKSIr4Gl7FEpfYvaUNU4lOr1L6uf07xIY0Sghf6rMO8GMUgIsRVML4VlliBfope8rvtsmK3 + tCulB8qh1kTU2j37Y34nLx54eRUeHg2ccJYhQmQudBf65lGZCEf6T6+3i+ofhIlTjH9U/EGEWVPV + g3SWrrjaiOLLwzqdZ9/5jZ5m+cNyg+Vmcgs3XVH33eE1BPCTuQTQMj21k9WBVRMFQmto6H/TJU+0 + WYRi23c6Bjfm0UvQEQpMIJchL5g11IAZrhgsHubkG/zWXNL4R6WXWeIQqHHvPD79RLgDabct5zBa + ZUQAwId+pOcIcGMKVJ6VSrft5Zqj8PZXoB72gH+h143uFEG5cqfQU7pT3p68r94pLPYQf6ksqWCQ + RxjFkTuGCfAD4Zp7O12g9Y+CZsZasBgmeixg8SevJ7f0Flkxag8nrM61btJ1vhnlm2SFbK9oXxSZ + 0XQsYeEhrektKqPiKoOfHzHA/rb89S13juu2ocuGgQ3TWr1vim+VClW1oI7NnB0UrSe7LBZuNlX7 + y3E8qsVO7qxVJhTlDoMdUir67XPL+LGAmJuur7O7hzkVRT9UabUJfKW+avtSjJivwA4OoAPqMEX5 + lha5vzoMnIDL3gcFgbquF8f6UOrGBywO9Pn1xaRjbZuKgA9EuuX7vSBy63tm52Q0VjbZi9LjxcPu + bt9aAW+owFiXZqSFiRrJP31pDDqgdnHlLxOLWpAi36jYsE0Ux3CDzLK7jJdU3K5gnRDonnCH+xlx + Yhn42kfLfm+uZb9v1LLfl7Ts8z9Oa7XVXV49Ug97nbhOHITR2HUdxoT15oOqsllgnD87z7+x6yNy + zeHPVETuPJuBoMKBZZPvIou1gNmcUDYTvz5hK2mrJ/xw5Ozj4Xt8lxFOKHfyzbJsDc+Qy+j3Z7LI + lgI2lqDXsdjAkh7wEicq042CKafpEuHaL969htsf0dAwZC+9EfIVfEK9tLuRgl8qAeh4EcxjrUhh + VazWTVCszU2rk1NylUTORankPpsniyrJwHWjXSO0/iara+EJKIKYIyowAxPE74ymmeyjiz1t5+7B + he0wyotfrudX/2L9CsP18qE2GgQODzNntl2kAkbhC9vtmwpIjcxTAUUnlVRAeirCzW9mArJCS7Sl + bPJTOcdWNa+2+oIqM34J9CwkypMD4dKxhkzPpYSfRTKdU77wmlcMLU5mjZ5R4XY7jIsShtN16RiW + 6YF6NIPGdOuaefMfA705cJsmsrYe/Wfi8C6GyxOTSghzCeHwcjpn4ejyzelkgRVmSyMwqPnn0uqe + bm5YtD8NLjaeLW5ZI4kflPJ2OGi2G9CMIoXZYnq/Gi2y6TzpW8HCiMzQOWudV0PIWMm/jD7lCXBH + aWfZO1uM2Uzy7MhhL1gfaEPZxJRfiw40bk3PiFdn6+vAJFF2Z3LsH0DIQmo868fzmCUKI5AUkiwW + IKysYe6k2X12l8y+rLKUrnqjDGWYAvIucnJ5wqup43rNtzwBp5Rb1MvYtGdCbZ17P1ZmLkIpiEJI + RYBZlt9TsYnNupe/JWTEjBOY3utFmt/xGYaPwBDQTbKcco5+Q5O8yhQnN5/PgXro+ACCxm+AVew3 + rZEb2HWxlHbX3XTVz2QZi7wwkFnm6T3GEYmikIuFhCnqQc4FBdc2mURstaQr8At87Abjf0pTuvsi + ciI6o/okPNru8FlI89Qw6bOHWVPo/qBQTXvIDD5zBCAvHyQGvXxXY96kqx94W//8BPUnAHM4AOLV + X8jsJ4UKlW/M4rcgINh+P0VQNDJWBGUnuiIonpJIgRWu0IL+nbuy0JoOpEryXBlQo1SVg9d92ayV + vYSizPReURP0sCiIPUSCFlVH2jGE/fWfAaHwf1L9k4JG01Sly2XSlfPUA5J/H/K/REpVyGgDaCci + TzAdEc8WPxP7xViaz65HRaL2wWNntivZi+Oeej1BfYpGpuxFdaKxF/mU2MtdOfRSQk29PzupZDPp + 9IBxsNj3kHG4rk9RQSqRsSxet4nV9Thry5Jz5CnMegb/vzdovWhkjFovO9Fh68VT0u/S+5XIRShj + f2ogDGiDkbgQGgaDVUM4kFfuOVC1kDROp81Qg+Xa2cAQD0rgt724EL+aZcROthXaQSj5SqNy2FnI + hImbnnc/T9EHNbT796+BUwGNKHFB00YMJ0qeIV84FB2/R8YPvW7oUOSUaw5FfCpCrK7+rDsUHfQS + VHB0ggB00WgcBA6PF+AhVlheGVNGeEAkj+cRjBh5ytv8AQOcSiyklD9SB60dFxkoIGSvv4qHd8l0 + A/ppNvsy5m6iXIQoIi7wHU9oUZeFFtMzO/lwUThYxqOr5Y3wfl3cZZG/EqJsjt7gb7jX4V9oxgtE + T2dsNXm7mIWrUdn+JeK28oe6X/HAEORS3Jac0mc4CbO7IzW3bUFcYRVKeVzFJsCaV35YDeaSHbXE + cvlxGBoStv5e+8DCI6M8kI7HcRNguri4oabVLEy4m6ftR7PNgNA/INeNVOmf6eJhw7OJ9oxfoSAN + k939Ayl3heQNEtg7ZJgLxcw1x7fIp/zGk0XvKdql56YbNoaY2ZT29PG9EzrmETP0utEFJyhXLjh6 + Shfc1Vk9Ysaz/coFF7ycMCeIbHfMHKwiShccbwvsL5sjgxjdbqfLh8WkZNeShfikcw/z0a8SjK7g + +ZJ5JVVdlL0vK8P8ToEmHXcKrJNsWMlXdVsDTWzPZ5FbS3CRAo7G6avQNm10SrfUzolozoO1o1YE + AxbHLAgql1TyPeMjrqP7hP9uQfeRI7beGi0W8vn8fgp8/+1EbnS+gFWUgVWWbyZvs8VtWl/FOsgB + kuWDz+HKwShP8Yty80MfzF+NRzwLd7ZOOMacIJxbuO9UWovDgmEMP5EoO6zm1FQnYb5Nuaeq4vg+ + xpy9ZOzY1ZXW6+282Qi94yZ1/RqZZTL70t9A4mp3KLwlDRiT6wxBl+Zqe5h8oMs8WtWmw95jboXJ + rce5NJv+Aeh22llCkWLCbGZ+PdDrhikmnHItxQSfygrDtQoKLPbDsJpiMvFA1Aijsed5gS9QZ97l + q9AePbvKp2x1NGqfnbHc9DAHd9k9ZqCiR+VqkTNgAd/u0tkd3hXINHawq1fpxejZ79O1A/2JxIeW + Qpj8XnmTNBVx6H0H+KAPBm13CXYrE81E6ZczDoo+Pap04dqtQYzlLkr4CvDmHteMXQesG7f2Visl + Uc4v1G8dj1Ux5RrJWodui3TxWNvCwt2uclxcm4InPUoU4Uy9zWHfCo/mMX6rNMQ6Pm0kbdHIcQIn + KDUq72YjQdcSGw7f7rFfzdjvQTbsqHCR+U4/86xqY+4goy4q/jH+UNiKJqvpBjY0mautptzUsglb + EkTXlx9EaHLtl9dqFLgIO64IXMway3O0GCt3NTPq3g1JnLjsikbbSUmsN7OVPd4J2QvG+pnjqY2x + NV50oRvj6aEAX9b9i+QNtSouobLPRy84UHTBje4hG8j5WfMKypgaSc0oNusv5eO06zOSLL8mi6wp + JOgRHKa/gkdzL0asrpioZLvZ6e/s3oDysBME/8l72+sBwU+vGwnOgnJFcKanJDifvj51qlhhLHZC + vfaY6758HjiR544DOMehuAtAncDQmI6L8tnbszfI8d6+vpisYXbR3kV/OuISz+l85qHJRKvHpyK0 + 9HguNMWUArrIfkwCTT66m2JhLh6sKcuAzJObBHNcUBjczks+PG53vrvPMr4HuIQN43Dq+GJKvdQt + 6m5rYhCWvnGCur0mXc7SVYofgSRzxOTSIShd1koy8H1fYoYcgHHSRodPBNfFKx/Z6vLQPrKEinmX + HWBQaoXgxEqSjFU7q4RRtsFSe1GoTaxWYLNEuEBrW/Gtg6skwh/L5ELGWhO44FaCa6lKT1kq9Dhi + GfubLf97W06mUq/fbLmHRVeHfLdLb9EWuJSUhuXXRosMPiv9H+pKz/V3q1R3fFIlyLIaVbm7bKjt + RG1dNi/KAJVJdy5UmmfA+GH1O9Y+7kdylSfbeXb3sLqbLpopOq0Ji80Um4KH99xKug6PTsGLcw3M + UDvlxQjIxkrphAIncN44Lu1LnaC9zi2tuPVXuEwsfpkqxdx2Y0vMNre6qvKxRcLgISvaxw+GzEOz + nO7Hj4ztCQPWvO1M8wTuxT+rgcsZjzW044bY7uR7uhHt2gJw2mP9GYmZ2zkXMzmDrN8svb40FHi7 + Gs1GptWTLLmGm3hVP0KO5wgJHYVesW1oe/PxTvPZdN47BgoYBzYxZzu/mWQPYEVN7kPpvsqMaPnC + l6DvHhSGVCj53ikflpAN6XUpQmreDy5LmqmZgdOwQj01w72yF8y9Nk24Jq7rElwNZqLycL7/TmgS + jbIYHs33UXKuUG5mP/n3R3WyWwflMfh/vr60vR7lr+l1Ix1UUK7ooPSUdNB3Zx9YrXaP7XgVKNPg + 5XPfCwI3GvteGDgiX/sU+sxWeJ09wCXGg0fOz89HHHwvJ1Tj7PsDPia5ADcRIdATdIIOiZin34H1 + cfwpYYG/S+6raIES3lDcN0kuy7t0WUwaqrwIXGaKcBKDRHmCd/kM/c2X2XcR5vRuukI3BKmr75J7 + Vq//02mv0QPaPF08LoLBXAZiX1XbmtWnWExvi9rF7LhCvyxbgvwfeWEVKFuf55rXJtSVhgZy1t9q + J1j80KiiBp5PoJlwovl9LmdhiAA2nHts0vD9P4pei6jl+4zxC0lAbWa4tP3v2H09VpbY67ytwRnp + N00HUX5cpEuPYABwGBlN+P45YMwVsWV2ZPeJLcPXDWPLOOVabBk+FTVrPtSCBxyvev1gbBlcO7HL + xsBteCQNXj+vMWIc52Y23WL8aU4VJoUMTWqjFkf7+QWIMg9zOPT3DytWKV/z53IBw5odXunAhjXy + /JqR7gngb1+IDy7ndnycyGhHvjOOYd7ErN4LLFvUTWFH5arYAe4zmM1EYeyK3BfSx7Nv+ahgK0AL + 9BpswbVaSTOXjD1fwSkACamU3s8149Grz69cTvHDyWt2rDYNrB1sYrxPiuAybGCd/VH45UEx8Mgv + TwFbDfn1HyegG32BKdC+3vwwBzFxey3DvjohO6kRBySW3BKF0tN9RLJqM62+Rcr2o/XUnVGS94l6 + XZfM7xFXS6+b1esiytV6XfypwHu/uqzxPuYjf6+U6wpjD6SLcRj7XiwTRzaribxA5PYWJaXWUziA + 21WyvoH9vnjQTrvSW3M+OXxqCRY+X9fjnPDtimuiTRKMQz+Gq6nm4+A7Z9oiC0dRW7kskIQR/rPK + Q99WwNTK1NzYafXAIO6VGx5Cre1Tf4Bf5HtKxqsaTl7IWuvXOHbgu3CRVK6O+upXvANt4MPaNxdm + 9kzYFJqG1vaVzUN7ROv2pwvTk6JZr+uTNa4Ypknzz6uWVWktkTZnMnAnN1Q1lIxIwqpbaC9zqb1U + Dswxn4MU2sLFAUMsSTP303uYtBSuwsvpSkxdbiFTkfegC9qZJRa2ZgaqsgETqIbDMyuZqOPDN/Xh + 42F0H1yntBUPJ7iP1fOnW1UPTzkdwkAJ3JwLWxWObyZsmDYeKki9sWz6fsLJsPBqMXkFqneT0Sx2 + NDaAYYkIc6DjHjOi4/uOLwaxX9glo5Tes/ewnqc9Cj3JBkbSmaJekc/kc5H59McHXUIDWT3mS12W + 0ELQTh3Ptseeo0yjd6CKovngAS8YUQsTr530HhRPqQWNUR0dXSf6xcOx+KWKKG6qc2y2SlYbYXxY + zn8TbypXR7bm1879dHaXLpO1LFd+ld03VGXd21xZCg8JYMtE9aD2TtrFJzTUg/WcSkE+zS0fOYxF + NfvoUFo1n8aMF2whLF0+UPFAs4b6drUc0LgWD1Ie6wBdlMoYRSGccb9WRtZs0ksh8dqOA4llu1YO + NJ2W2F+57EmUKRSk8xWwg+MR32ToAkkX6EzGU7pIpl+xGDtHU8631zmVjcWfOFBObuHhKirD+qSx + w6crjV1MTY15tKfn/iTAmmb1+YlFcvLTtXNE9QNqZJ5UWnUgQ+Zd9tZ/YUe9QuZFG9OQedmFFjIv + HhL/3q5yYSvcVuy4E3RPyARnq/Ovo89AxQJSHKqSBSKQ+omY+43hfAZ2JbggcnJhYwOrNF09rNfA + iQ+h+2Mg+rjfIKIqLN2rPgCC0qEddXMD8dmLhwMcAGGB0vTWhWPTF6WJGpmjNIlOKihN9FQc2euV + iHHeXqdwR2Fw0elEQN0vRlhdBVS90hdbO977DAQtpMqxnCLPp+PrE1avalyKDJMilUkV3UFydfmm + dBx9QHDbpnCk8s1BVdsih8K0SrLj3oQoj/ghx8lJJtwaPgBZQqr9n3QJF3rW4RXbAe5Alv769uh5 + SQZRqCo0LfYYkDxYVPnt4hJuRPPIDnrdSH8RlCvaCz0VnrXzumfN51gfZc9a9PJ56EeB543RwheG + 3VVqV2ug/61LnagY6FAm64nf8wT8ZKpOLcbCWD8xx0iJVbJsjsecPiqxbGCIdCWo17Cu6LlIWvl0 + qccLua7nRpEX1ernxL7tBO4Y/vFkRcFzDolyk1KwBazvLbJqStyl0iiXnyYXp5dyvy3W0PXsb1IV + GZOcHEuhAzoqG9EJXyGKadgrHVE2Ms1HVJ1oCYnyKS3fDE3ca3QlPSTTXF2UVvFcLGmRh1oijGmI + XggawY85ULvzR+VEC3j901PHe8XsF06fPN+ikdlElzopTXTxlA7ZfbqSMQ4fT9DN8iDKmt6izb+E + JiXAUCpwuIaNoN+LVyw48V7YmCTqYnmuQWulkK27PrZOmqZpxz8355MmiGa2Mt39ipMI/wzhTU5v + MSlge7+/JIT1OQpLNMcbA+bziKU+jJWhAQqHCPwdXviJryw0q0z+nmLoYaRN52Dgqn2x5nF4WBwO + Cu4oUHA/OAO24PTTB2UjU31QdaLpg/Jp9c6Rl8rHyXSWbB4WlMGCMT0Pi7kos5LNUV/DQoVNb5Un + 6GRxy1wtZX6KT7iNx/UJofZxqsqKTGg5UhmIBL/eymkm/9GQ5h/XdnwyF6SrdGfU08AGmn4RTj3g + vweMnOqtr/vEzobZjUMYm37QgH5cWdIfg9eIHUWGHd0l3/fuB06gF9S4yV7WBYdi135/b3uOuXWB + XjdSBQXliiJIT4Vn9OLUq4FCOpFdCdx1Xz53/Qh0mbHrx45ENilHpIGKMJpvlTxILtHCkzSabjbT + mcoSQw8UthDBMrJcXuERIZ/nirJRqzojRjcsMMYAjhR3Rong0xU3XWfzSmp81IoOCZ8CnNBuABvg + zjEezjFaTB+omujObtoQCLRuSpFmBRvA23GTbrYyia4MpK11AlugxbOqdaL0WeClcN2CorCQs1wP + vqrGQJdoMt8N/aoDtD4PpYU3SC0Pmd2avS46tE71RS7MA43r8Az20tHx6NH2o8WPibQmMd/hcGGh + 9OM1z3GNFXRnkVK2b/fcwnfJobUD0zQGJx9WKjIqwnVNjoWpu0fkU+8+zjtvcTwXfPrMjpTR0kgm + 7UuzAnOCF3bYR5RWbUyNCrILzaYgHhLP5QZ2UQZYStKF80O6PEAGxevvzK2ASRU9cDuBz+HEWOAH + Wny9oneQav8oJU171B49aMfvTmfqId7+QDA/8otSInnrthiiqIxpEtRAXiPjgQ3jiBrKf+QQ6ve7 + 9yA3mmcn0OtGEp6gXJHw6ClJeO9P3tazE8LI0wU8++UEEVM8d8xsxisD8sRg4IX3qMQqJ7e6iMfa + bVtknHIIANGKT8+pEzybzh4WR5NZJlJFT7iLYJ5yLx+oMzCtWIeGLy5w4k352VjF0E0Xi4cRhjt9 + nS6QqcNd/R7rEghh8f30th4g16xS6p6tqBU7vMWzVR4x6l8tGlepF992YtYi8jAWxKjz1WCPxCS2 + 5fN6gc9acYeaaSp77ddEIGrcVgP+Gag3GtGzi3GJcMRiH7YHyme/wM6wcO8rLJk45lIbfiEe4pbJ + qB/vWuEnZQEKnJIp5lB7UhQQogZROzywh+8PErCqO6mTZhOAxJ6kBkiTG8AO9SiZdk89O67PFf1j + CndwHkgqjhH7NNkKB9N81AFXt7+UCcKiXFzcrwy4bGJeKi6ulAGXz+oGHD1npFbfwKKKD/dT3qP8 + cw2qljpEF7EtAyxFSsgO+tr0NZTYjsjafnbJCymVq09MVN7NITU7iTfFlHfByU9XvND4fpjGcq1V + /JAbm8t/9Lpp/BBSrscPwVOS//55cYWJDtUAojisBhBNIuYy3x5HIA36YoP8c5UHgZSwDi30xWLm + OXVs+0FD/0HZ+TqdbXkWGUzVbbKpSjhwa7eKTQ5zPazMYp2WilCUkg3luNRAywdI9VtJ5Xhh8SUo + YpE81xLjKLPnYrSwwYmWgXGnOB8H4UEPU9dkr4KHf4XbUp52Cu/6j/fM76Ht0etGp11Qrpx2ekqn + /fzjH7q254Zu4ASBr592B9Q913PgtDPXj3xhzz9fwiW3yRYjNpFV3pJSJbtWsT6V7VQryoyRzydY + i3KaLimdljuwuJSbN8D4zLKiaB2HmsAAxrXWTJc+CWYCbgwYvUPwPvCTp+pG4EJyo+7nkyuYHR4N + ALuAUt04X4PXm2uDDFLHUE2C2zCpLbnlfq2+huwlxIDxqJrAff+QTdQitJQxrEKdlHOs3dB23fjf + 1t9tA1h4XFSWdRBxsNGCoYiP2ltv2pdUd9zBfjTbLo6I+crQdZj6SiUp2tdpj+D7H1tBd9hCjz5z + ysu04/gbfdihNB91wK1wWYdUDBhIiY0IujfFWikHhFW5tnQFBY7TM8tGtTF1BckuNFeQeEh3/d1m + ymSWcr6Be2v0zjkZPZsuYM2ORs8uPpy/Hrk2g+vdObLKr/A3ai8ANe4V8lT0aMQZjYj0nKZ9kQQC + t+SCoTo1sJ1BNFv03ZtBTGWFyvAcOKz59B5zU/NNer9tLD6zi6ovP1BQkvV45XYT3GzdF1cK9JzQ + rtCWgx+b4U80Gc/sMAoqM9rzOB3mFQtIP57dwat9uuecde+4UXn6qNLHu0sW9YiWodfNfClEuepL + 4U/pxP3x51ktWIbFlUIfnv3yuRdEDgvHXoj5w3RGL9rVSBDm1kkCvy+2IPzks3Ly2rO3by6OJgI8 + XPnxqliZhLqcgBh1h5ABKAOVbj9Kwrhbw4fUk34GE3SfUAqGzRwRosECfsQPA5AeBFalf9HpIVRS + l6CJP1zacQ94NHrd6NAIypVDQ0/p0JycX9QckC4P3i8fGv/lBCSQAKEhfdeTDsiLpg2PH4hohmtR + lRmrqSX5CxzgNYc0kRPFkYNgCajBIoXm8BtMGZYN2K5vprNEYBlQLbYRIRV6L8SROUlXdcWwqXcZ + 9PRmu7xNtWAn1/bC1sw5O/Bhn9bB1g40rR1Q4qbFRFfdgfp5Zu3FfNwg8OOqG5Jm8CZdTLkSPk9E + cH5DcRUXr9KGOhs7etDQHPP7jGfLEJajphLHod1mCpRrY500rbfm7KQzV6p3TB9Y+i6cMwEsPsvg + w9NlqcQGjBFGhvXgNvKvehkGeKG62Y9HQqPOR/96jdJZMt3kFp40yQG9II4s8Y1V0akyJb+ZAf5T + UMmuxasxpzaUj/0i0H+oQqjaR35RGbM1hqw7aNijNI9G7tG5AFQesdx6z6wbMxpdQYqDXEiuwOt0 + 3KgPXie+bojXySnX8DrxKV1Iv5+9r0txQbXQcfxyEgeB7bnjOIiCmOkXEkc7lwySQwdOVcIY5wO/ + Jwu2wsO2TG55kAHHJSTDFs9ZwzOBFVJqHORTci9gyt9vErx/tMsPaPAe4d6iKhuIOUhQycfwZCOw + dLEaW7QqYHrEjQajqgdU963RFoMWEktQzwqdhipobZdNG5ne5dQ0QsPLoz3rQnlh5b6qDtP6VfeQ + hQdHWUtBt7HEB3PeOGStJcYonFd+9+GFhSyxF/lQy7CCOyugKOb382qwSNZJ6SIf3tt+DwWYXjeT + 5YlyVZbnT0W6yOfLsCbL+1FNln/OQtuznTELQW0XNeI/bBew3HUovfXXHLhvAVMucj+26/AxZW8M + gYyCsC57c0hULEb6vcp/or60Gl2SFfh5PSywBD+vER2eq6FzVx4pk5QNvz1+UQzUuuAr+DUpvruA + IyOWd6wnciRpzq1IIM7CRs9maeH0wXgsLm6l+Xg0XWRwZPjzCywJT4wt58pZ+Ts4Gl8FeVQE75A/ + AoVmXrpuDXLWAtgO+bJE0ToLd7eSn0EZpfCVmPO30oD6sDLYgyR7TvNZhmNNSoXvzLhWQGXLCgLf + EHPWjGcF5M1Qs3FTjM5Mbt47O/8gFFk4a5LVyrNo0vAJhBKYyvs7vwVEUofPoDwkZteML5CU1bDX + 05uGGI7G68XXyqbD3dG7bLod9yqbjk1rZdNtgTHTVB7awgzRBGiKLNiUw2ppb5SJ8zAnl8LQGK+5 + /NtoB4X6VJkD8x0WgjNkJXXTw2cOePDTD5ZYw2DHGu4sKr5vvovDfG1xO8l2ujEoJeT00g57WGTp + dSMpTlCuSHH0VAQJfXirK8DMdiM3svWcENd/OXE8O7LtseM5rhfqGrCGPMs59dd0ep3yGjHC4zBb + Q5/1Sjx/JdCnf72ekPVNGUXKQTLr9Jp4N/QgCsUe80RUKSiQUCNfy49b8Xz10gPcETGRqaAFi8As + iXUyCewrSRM3M8EEgRxVcxuRH3GxxXIDJ0XV3SDgpkPbdjjLLEgtMEZREiycuZVKwD28pA4FjTTM + U50I7uXkWzLnMqRQFmBMU/gP4guLgBG78I82eoSbhRUKclfDMLsvw3I0AGO9gwEY6xMLAB3UQgFk + In4BrpJsv0DrbFPErVrvP7y6ZJNF+iWpyeNl4nBZRhFGo4uSqVx8EUHfe8L472utNYzCPqjxU0/g + kJsskkg+wdv4BbP7AfmINqY4PrILDcZHPKSbAxTFAtDM+XjyIRxRzRUrx2wqKgc5z4gz5UAA3rew + EQdt9f2AIktcQhRbXyIyE3Hcw7I+gSLfrwI3VhqKLnXkp/PzSrjhIR2SWni/6xO6g+ZE8e3NYBNh + TLF7XCAMYBMkoha25xlgRCJfDvVtnss8KrqyzA6m+ctmqA9bpSRkoVznrnNSPlY7qzCbIx25pKbc + JZiIeVDkYqSm4wA6vk/WkpOWiif1rKRdLUw4AN1XHLBOIVef7FM1JmI0nZcHkxoMhtl1fAqxg1GU + xuT/Y+L+g286g6VvNKYzj7WRfd2frLxrKX3j1Xs7DMw1M3rdSDMTlCuaGT0Vmtn7Gtgzi91Yz95w + PczVsj02jjyOBsdT9UsZS2kOitF2xtG9OQunGGwew09pRhLz5i2b5KtkhnXJYH7u0usUdzeMLeHf + DSrMiUySWOTNSRIISVHBQWozuocBi+3Qq2VIVIZbRanQy+45jgn1alZYR1lsj7VVy2NoSQmx+Nyj + za6FK64ULxY6lhiSMjb0wvZT4kkzhd1Vn6BhpOQHXmcV810F588qeZt7Ds3hPYhpfFhMmvoy4nh7 + khq8iHWhR/ZEahnsIvciWm/16c0nqS9REfa443wardXexA66sg3k1IhCyw8aB+xDApVIOTD6rIDO + 3itGxrOpctqlHffIGqbXzaqmEeVqzTT+VFQduLyqxciAqFKvmIawgDZDWEDbFxZCXySOZBNuUIHN + yERSwmT1IM22KqtEcM6y2aw4DuMR5i2k81SW39ysH1ZwOO+mOkc/HmFuA69RdUPxApRARrAiuUwF + 436/GfdRTnOQEjbIiNEtjQFsMxl8AZNMd97FOm+AHxwqXppPTlJKslHonl9A1m69AEMvbr2uHOY4 + TvUG/AdwlWX2NfsHem077kEW7U0YlhWke1ylEW6wjk4cO+zXiVr/dqI23NP9iK62a6SIKyBSKTiU + zXTBS53psxIE/Wi37NDKiIN2mUNQtfY6RrI/NPJeXF5ctJWKO+CIDXHALOQvBTKPzSjxknws6sPp + hIzYRJ4MQlo1ySnsCC4aspu2pDesoFZc7Hx3HZpgGTMKQq1s2vtsmfUd9Y5+KGVCk0kOrjLGfJtT + pcISVHSIO414MEO2vp0uWyOIO0JSPc8pKhlTVNYvl3I6ZNUAvB3kJoEtbXC3/HD6HSdzmGRPUUP5 + oA8dEPdoKChBj9Lf3r5nrm0e/UevmwVOE+Vq4DR/KmoGnTVACbp2VA2cfu4EAfOisROEviOEQm4o + v91Olw8LHT/pGf/LbLpakfcA75OjschRla5GksdOkwaIP6MUlxKkceQ6vs1qruS24TULYV7UXq++ + RL8AaCh/oyZfuGErKoOgZJ1Qum7D6I7UBMn6sfW5hKkUF/Ecb+HRM3yPMBVkYxAOTs8+Mbz+uVXO + /8dkg6mEKARseDdl6Xw655sXyfj/wM64ewvaHdMQVDl7gemHZXJHaKbnmVkFZh+3OFPhucTCraVC + i22RuuJS6or2UT2NDS0kDAwhQzh4PD8ml8UKc+rrgcy6lZ2Tq5viV5hsi/EmJqx0ALDnXa07mC9c + 8+R+atiHPevpHESxZWLw2CpanYe9563Yh65J5fUhsHWfGPzf4xS68Zz/+51K6r23Hd/8WqTXzcrp + EeVqMT3+lK7Fd1cXDGOnKmHxtu1Wa+k9j0GACsaxzxy7u0LjYgH0G5K1/0KhUypcvANg7VjNNNwi + sPZ4Q0EfIkEFj7l1cfKZqahtN/ZE1qNfy3ossh1NBHMZgOGJfLX3TuD2EbvwdUOxi1OuiV34VIhd + f1yxesIaC7263BXG9tiNXWcn5MCYB6QQgP9UxHBwhF4ZSTSG3zbJEmWETbLIuP6OOLsTWL9sniiI + DGkrO81y1lSr4y+0X81mE2Wg158vMIIC5u6QmbX4wqut7bgOofU/meAkT9avYX6P6rj0umH9Gk65 + Vr8Gn9LZuLy4csKTWgGbIHZrBWyYHwUsHjMsYFOJZdWyUnAB83s0Szzz7KujeiTl8WiZTNewqoW1 + H+bwcpU74SvKTbmb5uV4B0y5m25GMNISMcn16Pjw1g31UQdDAhA+Kcz65t9W+yqZBXTGIwinRxWn + rue2qSm+H+OpMy5uo6Isyx24odtmw9U6OMyvaz2BBbdoyyqkElA0RLBtpCwr1Dkf0mDBtmiJkBmI + MqoYPv7q6vOEx+HxtohCkObiwPPHhYoyeibfHY/8F9HViH58Lx4e9TPC7nBxNyAA7+0U/0kQLofa + BlX7ndHJXc2BFzqq+24GYPI1ru07ygJIovyqdKb61UvFQ4+vG/AKo5k+hN4PqG4/mCXQlzHB3htm + v2BRr5hg0cY0Jlh2ocUEi4d0iSoAEsXhak/Go7vtPYjuH0EuUhHDZepYrRPuZVFT+lHiMncYPTxX + tUYIZ8yzrJF4oiV/5LYIJNRTHwMxvW4K9dRgIKanQhq7elOHegpw01fSw13XDmNn7LosdpxmqCcO + jHOdCUgduaz89iunox7L+26e5jDVD/lonszWGAY6r5jXeGUxEY0l17lCTuiU+ejbHXdvrDMEC8u5 + W1PL6wG1MuW304PATZBiXH5Tt1Dr6bMVQa41Qd0JXS8I3YMhnTQ6wytU02SdXfOiGTQl1U+M7aAV + Y0kbWoG3MV3M0u19AetP4G0VyzmLQ6eKDKUkRs8ObdevOeZrxtYLOFtlC6tumdc9/7sH3tCBvrda + +ol3TpCSWzUffn0XHv+ip8dCxlEgV7kUBen6he2xPWVjh/3f98kO1Gp2H1dir/t2QBF8B1ryW2H9 + YXO0kG/ZWsak8WDi200H2JQIP4T8omo/s4N5LR7h1j/0mj4AH8Gs6aOWK/BCKUc67mv3hd1PjhRt + TOVI2YUmR4qHJACUpCsMPrI+M548dDEpYYPIz/2crxgQ29I/mFvmRSFlLrpxKRlkTT4ZmcM0xhxl + +q0BPrfQOWk/Ujo+H8PoM9shhHH1gyp6XHYh3BrLkEbUOtUEqj3z6pLFPapR0Otm6QxEuZrOwJ+S + PPjh7HVUS2cIUJeqpDMEwI7ceAz/hAouSFlUcQYu2rOTYPZK7J04EJoNuED2IZlHdYFMviNVVj02 + j7XJZLHn2G69jvOu7CnVXVMsAQs8vxVordzfYHJMnb51pUcR1D+oOmMlwB6BOIZlG8qNZNY5yiGI + eNNC+C5biNp/xyXHDko37Wts4bZSwYNuHP7dpIV6GgFBBNX29ePfoSwAtR2bXK2vJ/36PwwUXI1+ + EDe3Rwvf/yR3fqFkxLEECvBj74Xt9CsbINqYQgXILjSsAPFQFAsou5ylyaZAEKAITQ0hQNJEiIA4 + joSV5uBCjvt6sqTBw6c0idP3ttfD4EGvmyGpEOUqkgp/Shfc2/e/1/P1IjuuAqk89zGneuw7rieu + t7eL7awIoSxVGODX1tvFl/2y7dDLUbmebrGnzpQCGFSLBgqsAYZfjWabTdfXGeaGchzK5nJDfhz6 + rUQRpcH5t/W2GNlYVFzh4CR39WkBPnwrZmy6GZ0GI46fmYxu0nW+GaVrnlSXpxhWk2+SVfn9YoAq + hH1zt04S9YLWl4ouyo/LpV+LmkQgJS6z5QR2Kcbs8EAePh9Y7227hgmycFOo68n3fIptl9BF+qD2 + iC0PbCrGeo8nwoxUc22iWIEpZRxBZbh23VZwlwRbORXpfTO8VZue+POS7FxyxDQeKKO560dhwMG0 + 7SXPjUUK/vcDxzPEPTxEOt9Ti/4eNjPQZ0plj0+8vq4f0cZYZRdd6Co7PaTrb7X+xtqcQKeLdTCS + VYfmyXSWbB4WslA4CofS7XgBRCykxPX4yPYERgzFffJaM8iXCw84yF/zNG8vJdQDxEXgTKo+1sl9 + Nk9qdqsGb7RLcPhF0zxdQKeHwtg8fSUGJP6gMmswZ2gX3iMbHIgRQERto/SyQ7q2EzA1JrLsgEQL + H5f3QFq1Q7L4FB/WkwU+SQumudOyz8UqJ95xKJrscjV3f9t55M/P/2FG1g3IimdI9rdddIcymfqO + rF7g+b2qF8DrptULkHK9egE8FRDcr0/qSThBVAsGncRhHAbxOI4cOxQ+1iuUkpPR62rRDmAQVOZE + YG/Pp3vm2ZRrv4QIfVxPtBnK70jAuuWKHFoWIfqmSmiCek0Zt9Wzp426qCcjw0bUpVOihyiGrfnH + PmOB58R1Ex5XV7BGEWyADQemXmP91CylQBWJ7k8QyA8w9Toet60na2t43KBXR677b+tdensHQy1U + exXd0ORNNJnQFR6m2wT1p2x7eze6wsGPR+Q5nI7gfiERZ421q4HaWzaCHbdE7Ek8bfno43TFVpjc + lWeaS7CEWFkGgbRws5cqDoQUKScuuBZYStDaUJ/gR7mVqz5SHW3cPiofVaxbXwJRLAbQf4uYfubB + 5b7VvQtHCZvs2jymA+uHCNoteDuh27VNugg347D/sNtdGbhc4cFx3NDcwEWvG3pwOOWaBwefShyQ + C79m4AqZV/XgPA9iFjvBOIg9DyU6vG00gC9hr3l9dvJ6cp19lykHEmhj5dcunLKbrslRA2Ioa2G7 + sRcGUexU7x4dLqwZf0wzjFWyAHb3gOi7msexBpenpT04XmRCX90bnx3KnNecm2g6nd1RsTvYgdkt + 7O5qFI7dkGZqGazPGCucQNe4bQj+KSkviyplAPx9nc5vYVt+Zvym+OyQ45RiTpIl2sly5GRoL5N/ + VE4kHC73ImF4bsaTUC3cecqK5nmMnLte3bnb9v2//bA0z0PwModI2KQ6vRW3dndFseEgJIOwIIRv + zHjd773sa7YtrT87j6nR4g4FMDkEzCMVc9A/7cBxDQfTyBwyUnVxrjEJCRxrv9D27xO4kpYpKZ7t + KyIvNO//5qKIr2P3CEqg1w2L+HLKtSK++FSlDHmv6lV847BaxXfiA98JvbGPGyA6LGOomjnidSeO + eF2JQt51m2vof7N79locVXpqenOTYMSiA+oIXuUVgOphlhEOymC76KRv95h95J3wQfBzUBRMRmw3 + eCrzaO3ABInyf9N0/uJpOopeQFdpTCfDsFKCfUgYm5IwfpEsIRZHlESy3jtkz/cpofbSdnoAP9Lr + Zgm1RLmaUMufCvPi2Se3lk4boYSpp9NOPIz9tcdeHCuF7yrZuCtxT+n3U5f1thJ8p1fZK5V6ZiF2 + XLuKPoLCUhKpGjpqDLsLmVsNixsb9gYr27s/LMxVDSts709DP6y7RbTwQT+shg8a0G0prHmfpFnl + pvX8yG0L5FDErdfJTbrE7a7nwfPN1LX2CpxwKvsuEJPXSalIZLnMHzfbHFc006I4ju48gxsKjuPF + +XkR/PEtGz0k01y5KnOqxKoqavO0CRg6v1ov3r0eUXX43MLPURcmXBe/TNxhKGrJyfXtqWb8RIdf + Y427iBj4jk08jFWv81b04oBf2sj4zIMenw6+z0CJrXAEAlFncnP3QGFScn3hCKfzbYd1oWmFB0qU + 9QOBDvThEthUn5xIfN0wJ5JTruVE4lOlbrJAR6iIQ993PVbLioQljZ1wDNpmbDvD6pssaNVUzmDs + IHCOrmL+AtccWFBXHfJCA2VBM1TF/6qgT2m9LNp6Kq8u9MmI+ivhQBhcns0UMEaz2wT6g3TNJ6M0 + ds/IE1QcHwnMoR/h7lmTF00oU618u1eqFbxummqFlOupVvCUrplPrxoqxwROUEu18j0GQtjY9+D/ + YnXJXPPP+6/lBOT422RdMTp+um4p/nIAEP4BoSUtgPpPASPMCNMO7wPcSZzlj2mLTW9vS/mNKSZi + b2ATU3jEHUVyIGz9TZroSdfy7xMRlLHabmB/brEqroWbokiU8r0nr7A83UTggeqjD5P05IZ2U1r4 + rspsvxDGjR+pWlw9Au3odeNaXPVAO3oqLGFXJ1VLGNbiqnPUCBhpOI4CD03oPMMqmW7QSrSd8YSU + 4nbWrSMw319eIzgzSHD5XTb7oo6/FhxxlU/dvXOBlKUmirzQq7HMhr4bIxXcMHRbuLGLwbdRNVLh + 6rLs6JxlJekMtkVRpZvXy+KZ2fRGNqtDiAQBa4vXi0Lfi9yoRXS/yRbzGuC257fdT2EEBzNq0QMm + Ot6CGnhlpE5bri1zfCcIaxEdDQClGsHYb0vNkvNuiQp/5XC66gTwsh53SUNvxyp4T8bsda+cmo3a + CoraIaVFPK7s94bNBkfg2buri9A+Enu+gmCCzRRTtvBElmqlUdEQzw/LZhD5yb2UkICqdRh9eumL + S8iZ1f270/ik+j4UqXYfQo2WsF+2+NkQRcAokGJnscz2TeQzuEGxwXaJW7Aky7UOqYGYvP2oEuUf + l04Umd9+9LrR7ScoV24/eiqgGy5e18LMvSioQHmFcPv5Dtwu48h3bUQk5rWh03y7uMEFTVGN4ulT + smCQrlh8WM3risXX6WyLzEjYi95sl7fpUSWczemrHMh+5w1ja7ny/OqtM9ZuVND64tq91+vqeXte + o2Z90Fhm16ifXbw+L9im3EQCjgGZsSg5SQm1sIFWyRotsuproY/TZYLzzxc7w9yAIuMVRYHRap4y + OKCLhWQZ+XbF30hQQaFgCXjxAl5bKQUnh7ewFlROibHfRZEHHPOfJauThb1Kdu5HzBuInXu+RzHE + PDAaGmTfR3cwaRlo7ebOD0tsM3y9XLRIbk5DBaFXjvwOHSWK2mnB/5I+gRa4u8vz3HksjL71MIo7 + 1J1DSLfvFAyD95sJZ9/TeQYktrNN//LJA5DtGHQArJY32HdaxSUTEHzC+0vH6QGfQK+bVU4gytXK + CfypQLY/Pa3jRfKKXpW6CX4Iom449kMYuAg2eKO4jQhdLp9xYG3ciytwyQRoMpziZYKiclbA1s9m + 9Qvobba4TUfT1WoKnKpqlwrjtqsnioLAa4DeVrLyjVxJ3dBVucuu1B0DXbFQajfD27nk5CCB8uRp + d1YUepU7a1xSQrQRKsIpxnDvoBp3UGV2yECaqBVRKi9gG23Xtis6mE5bLlJhqiOODpv8TeI8/+3D + 0nlepMMk6+PylVdGLoTrL50RZtLDzR0TF6SqhLiYgprDSy2tNwhydMtd06o2EmyFzfQ7IuNeP6Bd + HLOkePyEpmXyiYRzub2X0Ed4YpRDx2E2vzPDmDMEiWMBO9YAEwJPZPINfsOdKgIgocsp/EeAOgyS + EAXnNiJvU3nxOqi1Z2aF6lbnnpq27dtL89ubaMcw9YKEjYeh5xj3odia+hVQsSJ8N4Otwqn1Xw9+ + zrRhtR/PHl97ENmWofo+Y/yT8falzUlXcKOivuNckOZKdl+6J/arw4HCZdwmXLaTbLZ9OyL6onrP + 1Jr3QLCm7LlWcXeHrErHSrHWPecIL9tioosL2VD4Nmy8q1zKz662gt/iigpjdS5aWOKKS6s/EgzI + rHSJ1NnCgR1IaZNJELTAcV4wux8ImmhjCoImu9BA0MTDZrDR5Hs2e8g3NXCSq2Tmj57BBT1P0Rl3 + pJF3fDd2PUZ4JcKExAltmgPQdp4+Yi6erwjlDQzZ+AzDinJK19M1zBK8DGq4ITSbz5xIseHRJl3t + MOfJRXYkPI17Gr6AteuDTkNNTMFpRAcaNg09Ez4YEX+GTHuZiMg0re5oaVFbX7pKNpH2Zg4PeLUC + 5se07h7dzsp9cp8uM8qCk9Fw+3Hip+sKHdQMDHtGm8CJWIuPk/pqtDOdnbMpNyhlVH94z5jTIx6Q + v24WD0iUq/GA/KnQeT/9Xguwd7kFuxIN6Pl24I49P0Z1n0MGovZQrvh6OgFWDPsNvpRClCXs1fno + 2emn179Pzo+kOlLGuBMQe6XWBN0EkynItOLA6in0zy5XmcNWR3ipUeqUgJzX3NIcOELmRbv/QAOW + lmlLevjmS93J2bO0b+gHfujUKh0gNALsq8KxI49qJyZiELc5PLVuaobf0vmvYhjqtuCgNfWbMTuO + wpqjcEfh2G4MYN3y3NCbNeDu4ptAbB4ckyRK26W0W/pslDFFO9by6bAMF6eZLqlywUh326HdbYH8 + FA+eUp39yB4uGGaIFHLcEC33SA0itE+EdxCTKF52C2LgyXx6j0gu+Sa93y56B74DOysq3rr/mFTP + dFeKoOuEJFu0FEVGkskiW972SQmIbbeDZPOO6DWRWMp5ZxfdkM49ijQMgQrgF617BjXZRcPGrfEI + 6ZOuExFAqnAZ1XhPhWm3BqM2LaElGDqNz/A26HXKhsAWCzwSnl+dMi94YQd9NCTVxkx8Lrooyc/q + IUkbBWxUwgP2OdaQzCKmcl4fPn24hO++g129yG41uqgagUq0R0Evvlg+K+F8DCP5+QJ64OQSpszc + qU6vG8l+gnJF9qOnMrnyo1stFM1ijodbjilzX05YgJDBY9gULBaI0Z8eXo3eTm8neNGLdTimH4DH + bKiGrGTCFD1zP/2ScEEOmo1Hl5/Go4tLukbPP1aS37BGT6W4EBxVofHnAlCFSlNP1/BBs5qwpjWA + t4l/zKarHK4wzXkf66keJYdHDNoDi2uYcTySlG8RGNxrnas2++5BGe/XRTllV48CcHoO9rL3YOOg + zQHU0kXhT2+BFXJ7jrnKtnQ3EvP7UVOpA+3StV9BHG+hqaTfTw94e9yr9E61J3Upt1K5o04V+JGM + H7N56p4EPIBNaZd+dZgXar/yeGeFjkCu+OLXuNwW9Da3/GvglV8OSeIs/erov+ovB/qvXJYrfo3K + gww9gdngkscG9x7iId3Dqu6VWOPbhUS6D9I3822SPXEkwgDafxyIzVIUzSiYUb+o5JBk9K/pmlQH + wZdKOVA9jLE/xcAyaMic7ZC1EnQAhMATDq+fjgA1RGT8wXATEak2VI9gwz9ov6gVYRE2ur16ko4p + 39borulHmuSN30AWW03X8PXkmOJBR/Vbpydpc6luFx1uMcRBHU7LUSiRita7nwgU5hDs+cGTPUw6 + x4BI+ECKDL2KeZkad38IBtpQiStBIP1cbuC9sP1ebi5qYurlEh1oTi56RtrG11UuLMenH98JPdp6 + SyHOwngBgv4/8a2yiwObcf0Njhm5OAI6I40B8K0OYnPQ+4MjTMicpOfxdiPb1oxSByPi7u+uGRLC + /UfH8GNZI3yL0o5re+sAtV0Nad8eOg8p5eu+fW8zz9wNRK+bwbgT5SqMO38qgHU/v6laAkDpqLiB + 3Pjlcy8ImOeNgT9FsjSinlYDlJoTxy62N97QWbulKMQOlblNDWOMwUlzq0HziyznIZtNxTTm2zX+ + s04QlpIC9rhPenpb7Ze5dtQR+If1wlgtVJF/BYp6VCFqjHg00FyY2ktmQs2C4UTVnnZ8YZ116mlj + dhvEkhx1JS+gvubjAksJIxOXxOQohyDJ6ajdjC628G6aSZPdg4Q2UghIcII02VmeL7Q0JfBHKtAI + W4zw3HH6chDEZhl/W9iM4dQUfhqUUUuuAUpSzS3c/1IXd+KIV3zGeS0ExPVE2tSv4WO0hVJhje3r + NU9m015x1Xz/YIP9d2Of3p50GrbqwCNc2ObJbyBWpI+sphv45kIcZYTtKzetyPIzTJYzzE97DOxB + uhDvO0k0Xuse7eX9hMhIhOa7zO8Tmo+vG4bmc8q10Hx8SvfTx98vnFqYguuFtdD8MPAiOxqHge8E + Ivbm45eV04wD+AUYEw9wXuvoPHYYtifOejZIeKwWVp+vYGoXvOhsMrrO5rqJ0Y9YK8Wnix/xEXhY + UQa3PFvi4IzLHnoexbG5AW14lqDwq7eQLrJn/JXV5MPs3mGryR9fVox+cfg/LFhN4A0X/nu38OgR + vP2Rv8ZXcnJyn2CTzTe2OrJwYyg3umtzELwBql4QkBqGv/e2Mx4Gb+czUTKOD36e4mHoZQ7EvYuv + l+feiEVAQ+JoVKkKQ46L8lWd1A4rQ7VDBaBc6Prp2q0MDOEEpczXk/e20wP3gV43c9IR5aqTjj8V + ma8nv+MUVJx0TuzVnXQIwRSNGXJCgQ++klkl1Vo7It91+gXOW2OcE3e1V2Ryu42DYcUBx3k0DnaX + 5ZsJ3OB3WCJFk160TBs3clvEVtd1nTioxkgZlGLR6yqFbfTD0I19H8TiM8UsKxM+roI6BYHA9C4i + iLiBc4FYoprrUwdGc/wr7jJVUGf113GCllMhYn9go3y6AV6C9Sjm2fZ6kUxylMkwJxzFCMG4309O + 0B2xzS2+4Qq/lOMKlDZR5bU8mPePiNLWltECIwnqI1E0f+RQDr1n+pUXMsuQ+vGFhna5l/qE78jI + 7dBWhUX9V1HvwqLUxriwqOhCLyxKD5vD8/W0ODkBGCzEI9v1AP2iA1htWBwfrZj9koAGN/H1xYnq + 2bSPhdCE3rBWwlhUbKut2+H2QRZ4MZPLapRZ3aV3hUyGYAWv2Atm94rAoiamAViiAy3+ip7J0ror + FrbV1q3WaLnAly3ehBfRBQXSIgCDuF4vSTYew/UzrVYN2teGP0gM7MFqxAF1mIbSBn5GykZzAah9 + OYQJtc5L1nVczdbTDzjUGq4e0X6RgqEjjC+wrc1VEHrd0PjCKdeML/hUQs/9XsdFsF2vanyZsICF + vjdmgRvFAjH6VNrHOD6ICPpWDpMxl3pRgJsiEP6kwCnO01uUbvikAhcF7sxtwvdwsfKg/iwHzRTU + VFwKZBxTFZeeLGAnq4k/Hs0TLR+AS8n3ZJi+XU/nhWV6e52CHL1JlxO+VaZ8r+UPsKJAZQVPSLI/ + nc+caIXyFMrRIFVLXLwv+4KSlvIfosiOAqdWyC9Z/s/DvbhGpu0F/GyvNa/Ci1D0qNLV57y+Ps39 + YNa2ST9K05KLhUAFtLC4bKjRfYO1wuWrLD6fdL3ErOO2FT+MWOS63g/oUwPXKK1TI3wejwBAfRVx + jr5jbJSmTIIo2FrGwo48J3b/bf31z46FrEVV1I3jQISVkS+i66M4exVr9qw8/Ab97SdXuxD3z54b + 0ujGPryPnVDcfMvSRHVt8qGcJ/2DFndVmCTQJnOO129Ie9HfXTNymLIatkfJ4K23SOdYpCDiKp38 + TfjCDvskhKg2xjq56ELXyekhCRY8kkyHB7e6avuorL9ZxuoauugOtRXPcSjOyHUrdWbWyX2GuVq7 + Usr6VpX5icnX5nJ4RFGO0hBv0r3rOAQ3cbmau7+dLtZBZ/Wl8/N/DGjV/4XQpUNPniw/eBPBRux1 + skQb05Mlu9BOlnhIJ2sOl3m2zS35b7kVYg04jk8HZO+IfLoDeoERtuAZxu0kGnFNGs7qj0RUMbPh + DgXT8gjB03LH+gIR1o6ZeUQAvW6ICMsp1xBh8amIWPt0Wi0F73hB4FcRYZ97sesE/tjDUvAiYu3d + A4ikdwlVuPnj8o3MJcvWQP/bAEFqdgAivBc+QZe+rAjUUAlCpN6JIuiJgG6Vvom8Buoqoh8vr2/Z + yvr04cRTXiM/YOiIH9S/sUfQTae42MvCvKssTkNNhaGSUJ7YVcXjyf98femGPSqY0etGB19Qrhx8 + ekoH/83lf9asUSie6P7w4OVzBuJH6IVj+Nd1mQwGmtw/rFEIEQqtQNibyNlQoZFcY4Y9dDf9mpTw + 6PWw7kLHEuVORghwXFElMeiRK6hTnmWQLjFpLFuMvIlI8r5IuelIj6PFXLmvyTpd/naz5kIaCjtw + Aczu5BtnbyZ36ArOt6B9aaG2b9b/X90WpS4QrV4n3H5t0bHAh+K4bosqYxI2Z2jarQG3LST3M29p + DLdMuAWlpMmCUKYfx0ENYrtcuxQYehi67N/WX3sPWXjAVCxsGPG6Bjg3dStJ04waGQBMIQsbublI + sOCcfHqA3HaA2Af8pPDL8FW83s73QtLzbfIxNRyqnveEiZK/c3Y9JyJfR1EB8JD4qTBUIBLRmf/C + 7uPHV22MQSREFzqIBD2UzJ+0zjbgtV1/L/cCoo0d2C7XhCLmq8t1V0zyU/LU/ej8nMgmh2jTPO+b + WOiRPWA6Gyh/7+AEQ7n1I5l55711X9hxP4RJ0cY09052oSXfiYckNd0+rET23adXpxUUG5mFJ3hG + +Qp7C80sbMtT8Jw4Gg5dUtmubbmCaGO7gb9yA2i2vp0uW0PyTam7jsvc+sV1Ob0evd1VXaXjqP6Q + Up1PM8/up9hN2pfCJjQGfQcPlevXm3b3NNsUlVLdfAOOdx/6nUwsVgiq7K3fLwRJtTHGUBVd6CCq + 9JCYGDQSYQUfHq5FpplV/Kh77TiQpPS6nEFLC5vzIDw/9PeAghrs0u0VEWkb4lAYb5P9US3Epohs + KdRFbtzPWi2bmIp0ogNNoqNntCHS6xWjDbG+y+YcinqySL8kMr083WwwNxD/K9Unjn0HzSxsyx0+ + DvPoVnOCElKNSKlrunw6C0iTtaYBN1H3pRuHXP7cZJaDAtAEjcC3bT6CwmxZvo7/V0TWsOZCuhfF + XpH7qLx7+xVCOohgN1hJ6GiuuM3DOuNgyYfTPhxHQ/IqhfPuunY//VM2Mca/oA50/Av+jHjVdHHL + BLO6XTzMsvxhoakZ4g5j1nQBkzdhY2dyj9+T64rNCZKxODEuk9u+4F5epFWlKnEe2d0+7CwKW4h+ + BEa7/JI0UN8d1QCDFtmo0HBJnpg9VGabufyT5YQFjRPWFO9ZcwMO5I7sQ6Jj2gcu1NbXSfrY1rOh + hH9ZnKX7wOxX1WxIoCGqIdhEaqye8kR+xRdu19l2ZXoUJKujQOFXl3bYA0WEXjerUU2UqzWq+VNi + cZev3/k6jIgbuiBWYR6NXqX6uRsFjueN3QjDH7q9stdr6KHBKysU7+JZoxM0ckOnyZn6pLyyBQ6k + E0YHx1Y8keM5IHgYCWHcd7k4HPltMDCygWQUV6X52KDauP3SfHgT4zQf6kBP8+HP2nJ7ak/GI0Jb + Pv/Pf71mUgcv0eYJPw4T+vVPsEwdmvAhV0UGZV28YicMxDivV8Bj0crQ/FHqpmwAKR4Ti519kxrv + LVwly4eF+EdzWfALUUY8Ho2eXXw4fz2Kw4hFoXdktTc8H2ktR6fQmYU9Uo0Zj7wdgU3RjWzsTq7h + Qya3i+1sujSU5joCVeEkeG0y7GqtYHV6HlMg2lbKQJ+JOvFCTNxf/YypPOrpycn/mcghtK9Aaa8u + s+WkO6bZC3xRqyZZDuJM8YJAs17cTNfLxFic2kVaA7Rrn4Ke6m0QOD3md//RE3TP9PqgTh4NtF9d + bS7TNvtQW2NAx1jkS5uy9zp8wVgvkzI1MbUoiw40gzI9a87rLooMUBlEdQuWiCEndONA3m+Hao1P + QVaTC0OxXR8ubaeHAkGvm1WjIsrValT8qQA7ubx4Xy9HFWDsSaUclevgZTbGRES8M7hPQMvKr5fm + ESEvOhyCAEJZrxb1gk96mj+1K8hKCnpMaKCndZXDh9zY8X2nXo/54F60/DvPd4NajeaSQ6CCQ6Ji + GnXMRNc36aAGKKhEgFqJZY/tGrK1z/pZfMcoACjQNSl1gzx3h6R/u3jQ+cHUhlWq3dMpKgziIX5k + mIYd3dPFarY9+910O+NpOxfG9kkpUCDZ2Z6Svj0QJh+/tpuwdfalSIUyDQ5tr2n3fBqpBi5+fn6+ + 7z0eqnww+63Xs0JQ0cg4I0x2oqeEiafCxD6/YbJc0E26SPFGp3/xL1w1DV0KYTnUreZirBw3Puph + K/NEgN6XQld2GsQPB33bv7bqMLzqJzvZKPeSWwm+wKub3kpi4JKAr6BJpnw39twSovgqbYlZthYB + lNPN7M5wH/Src8uZRbnPAaIDzOh1MoZIMgb2BkRmpxdboCamTEF0oLEEekYM4WH65ZQYwnQxz77A + xhAwS0gAH/HUXInS8ye8bUETMmIFHucUrutTEos6GuUEaJjLftCzPxX4qXcx3EHQjNQZC4ovb6A2 + pj13O4IWp+8mf7wjLwjed/Nsma3NPtK3HWKFq4c1dPN9ijHy80QmqpsbGORmjlUEsxPFL2ynZx08 + 0cg4hll2ogcxi6e0qbfTlYiC+uyM8iUiWqukrblSWcXfLhr+NvoMFCwkwz3IoMPuCc+029M7DBLT + AUBKdFiIq/L5GH12zMSmQSscDVmVyERk7cHvDxWAh8BZjZnwXTqRaw5yRK8b+i455ZrvEp9KkKN3 + 1bQyFodoD9U9l5MwiGKbjcMQBXU6h1dnpwGTKPbweV+zBRqRuBAw0au9SiwO4GoNtT0EktBdPXtr + h/teNw9EcVueFAttJ/br6NXyzCfLrwl62CbN/S2Tzbds/UWHsmGh39ad49hBGNZtHjQn2aySgQUj + bwP5YXbsIOxtW61ANYlJW/aYH7TZNHTayqgxy/SlU5PdVjaBubs6sK50uGxc6vJkCAX2eHSVzAK2 + OmxLIag9vnI8giM7UjjeFu505W/2otASg+eiQeWbG4vslO2LBlfAYQV1Di6FMyqiEBv0HI1qscL7 + lNsZNmjHU3OmbQ2zOd836GcglIVfIYBIkOLsqyz1GHLAnYoZ8pvGbZv0xABivke1OS4mF5PrbDmf + UMABxoRM5uv0a7LctYs7sU27VLnYUapceOL0tvHIRsbqnOxEV+jEU+MQBSwiFmHhMILcZW4gs5Z6 + V+Yy2Ip+oIVIKiS0AzOXPN+l6n2YY8wPH5e6SzXOOkZshii0L5pCzMdFubvT1Wq6nm4MVdBDYzP4 + hUV2twriHBZxSW8PLM6t9A3jACFTFM/YFSiejAV9Sqjg64YonpxyDcUTnwrf2tX7GmCKyzy/VkIF + lK3Icccc0l8IuJQ0vsrg6IyuQa++LecITiajIgRPCDZKS4O/3Kcbzs7UWpPLLV/49Zi++tt6patK + re4yAoALgnlk711JuyCFoZRhEFSkQUOtWBsuKNQt3kDZh3Vanbn6FMhaWlRIK+dv3aTrfAM7LlmN + ONBAacaFOHhcSHw6IEEFxeXDdu6seEmBi/XKs1djjvHIi23RUoPKC3deklA3yDzhQAA/yo9H00We + abKpnCS4L7FrSrbEMgc4axbuQOWqY1Qe+lBM6C6HxzDGh0e5NgbAhmYBizkn/JrkWDdiIvA953tJ + r3i0SAGon9dHT7NxgfOEmjg4y6Z9Rv+jzStNM/ADLSmPZ4/pfwP+CNSh2JNZPMyJ2Avb7ZdMLxuZ + ZvKoTrRcHvlUOhhlqFCy/QIUMhH0yCXS15/fMDsMZUpPEUVUos1zd1Qe6g/PPumRXP6/uSiGAVSx + LwOo4n4BVLF5AFXcGEAVywCq009vWD2AKvRYLYDK8/3I8caeH/K0V27GrNRye/XGrcogVGcTpoi/ + 8PqMxw/ApNwLCYZXfoOLep3kY5Ab6Kzju5hUu10VDGDMRQ4ER7pONBECtFrUVyXqKsLBYTgRtBTV + LlUeKxcjsZpcPXKrqGEm5YqWWmaVqn9RmwEPjjMyxap0yXOoE702aSX7xGatEqsdh0C4hq8lpxD2 + 2Otm6RUu/lYEeX2ohTFTLcxvTVX5StWU9FyVIG7rx7EjD/Z8zab5tLeNxU+IkkJhqih+gpgAxk0g + 0C9fTxCf768XDXpkSz0on4HKhG+XJ7idStVgBNuP39vFTh1re2Gd3PaP4sI9TWKd4YEwMy8eWCCE + DAilEfSTFplPQc7lnbZ7fvfHPRhWshKhPo2sw+Sm54efz18Lo+hcQnlVKRzHPlcVvW6K49hwVdFT + kSx48al2U9kB2uhrOI4BC4J4DP86MYL188qG6+yaf6DDC+nxmgNFVC9nEhoU3unrUy/67eLkigH5 + U9g/QjaDP59wrBR5oVyuNvX7pFTUQGGKPKiKfaNniLm/HZ1xSXB6VKn86rbdKnEQhxgX2683YJDi + U1VJ1Y7uI99rLdvIQs+Jo6B6AZ1UgJE0vMgoai0xUv6aMrZjI9xweYxexYPYRlRdZoXtryjKoCyK + qnq67p3zGdvRh/XHMiFUw+9qT4jdw+KrxoUXfy7tQVy08r2Ef6ZiGQp8qmQhTuZFLYz8uFRTBl5r + Akl7ZeGpUeCMke1Y4tt0k2j7tGiZWTs5vYuRcZq91qDq9t4xSz8XiaPbXON7RWZUj6NppLoNRrzj + 3hnA8j5YMIwnXG7tSOQ/qDCG75OLBU77z8oBVoQEpF6V+RpJBB2Nd7sXQQdhxbLmsKwTuNcPx3AZ + GEo05uHmf56/t53QPESIXjeSWATlisRCT0li+f3yzAmrIovDAl1k8djLiculzbGLZm4Rq/d7ulhg + JabsO0zA5RnqK6hEkNDx+zpxQsOYn0rATKtD5OmWle/AoD+GbbhYSA0rv8u+5aPfGWgopclbJzR5 + s8TiKyKvQ4yS/EnWtL+11SuiWhDv7SgyP5j0ulktCKJcrQXBnwrX5sVrp1YLwou8ai2ICfPdmLEx + 873Q85QiwTfjPM23ixu81FK8gbm4hQXFynGzwnO5mjsDnFUtPsz3YidsDW5rGlujJO2Gfg3CXLMN + MT+Ma7Yhle6dLWp+0sDzddD1t+c1atYHTdXqGvWzi9fnR0L3Go+S73fpNaKdw47BCmLL4rOOR4hc + Xgqjz7cr/rNwgC6Szd10gd/PC+Ct5ikDORuecifDdjOaZ/AmBr6RoMNvvCmwlgt4c6X4DQjdWxCU + 17f4dhGSf/0wOltnbGXhzlJVLWBLWWJKyqKHnLbasWnHF/J8r0gqwASA7DvG+sH1CxfuY5bR2cWo + DgSwssQeLE9P5+Y1YsaHUdzh7TuEdAeAlG+7fjNh42SKJklvALJdqFcRgVXsPa3ySohFtIsT9KgS + Qq8bRrtwyrVoF3wqrEtnr+s1a53YrUW7BKHtes44CJ3IEbalywTUaP6hIC/foDwyu1u/AEUs5Ybh + /4d+FSZV2k45xkcA1+CW6M0W9AGMnRA5gOPR9LsoFI9sKB+jEI4iOUboLmSiIPCxd9kKeNP/M8of + ltMV1km757mfXFFD+8B0M3p3fuWM1uUBLrM1vrZIviaLnLJlMBN1RJmoo+t1Mv2ijFvJvB5a3tRb + xTESt0V4x3aAWdePJWQ2Dg3jU+quipC5dsv16vi+HYb2cLQrlUHiKMKSR4VgWwuH0tdfBUk1jGCs + x3oXJvIc5LTklsYmXBpFINB9knIHtEwdrdVq4jvrWN8439LFnEqCFXvnQ/IFdqCoKSIPv4WHSblM + HN+lBFoCn2kZYj82HDJC8sPv6I1Ry5eHe2+aVrS3G8ec3G4rBZDiYjYw8hQ3Hs8ioKXC2iz3161h + ojsSTUWG+CpbSxhdkI22Cx6hz0USuY25dFTUmlkJH08PNd61I7pysORM+lXZpgR1tAguHjY86KbH + TeYznwK/mudjdpfMvlC84c5147apyOZrhvL6ujhqhsreXoZJLn0x+ohSBIVgfX1lHGN71kGNO4xh + LvOoWmBR77TTU1bPlYRbnLK43tsB65HFxV83y+IiytUsLv5UZHH9/qka5Mpij9WzuEDlciJ7zOzQ + lVUBTxRYPmzr07vcXY2eze7Qnj7ioCYCLuFojHt1vUW9hd4Sfm0sAbSEbcuDFssTzDnwq2XqAQcG + KuUgG2h6dTdjK+koF4D9iSQtOH35oIsksS+bpvBZHqO4SRcJ+bCFZ0hbCd0/ZLNKIXKtiqHvODJZ + 7OBqXUWF89hxvaCGIcNVoW9TLm2lm04wGVt3qe0m/bDJ0MldJWTHrHqvN3/8qqnCOxbbRs4lcsC1 + EcbhTsLWr7HfLDxSKl0MNH5LTJx0psiJNboQcemU3tu42J3ggW1XNs433bOty9M5PIEmLUxicFen + PAC2XNwLLj/DhCk4UjpggFqocniJGWMfotYZCGokLtQHZOZd2M/UyO9HLxJA3z+opFl1g8ibifKL + zy5tzzO/meh1o5tJUK7cTPSUbqazy7dOVIt3iCJdI3XDlxMHjRLx2HEjXhkJr6azbtOxgmbFwKib + 6SxdpLiz5XOVIVNiErkW1X+2vnUCOP06TgJoj/KP4WrkThA/o2RhWM5/g7XYJPDOGl/ME7FSKtLr + 7FLcVkgieqycZoex2K2HMQylg6JxEGPLskXHjRTEVbtrOfc3Dln1StqLajl2A46lG4b/tn7ZrTGW + 6SOaogoUg5XFD4u6dCKPUN1E3BifNh7fv3f1AHVvBAQU17QanVSbmPXexFpvtX0JdsafBXR1L+CS + G2IOWSB0914j/FH27P/NgjaY8iG0RzsIvQYi4yJd0IicvK+plsHb96BhmxuQ6XWj+1pQrtzX9FSm + S36qO/uZi4EW5fs6fvncs90gisae7bmxcPZf8PrlX5NiaeoMuWznEylchd3mmP+YK7MTperlG36L + FpGNrz9fOJ7NTfrCqXYsYq1P/7g452wafziXHeQq+XLTEG9QzejVL+DYa72AY8cPvbgWx3hY/EIb + 1cbdXqlp3RpzrxGtO1qb61mzdnyTMjl1t8vV1EpYclt8ihdo9Z6HAfu6tvj2XC88LXqxnuy2svhp + kRe2a7OYEu6fBPIHn19s0rguvfxjQ2ZcPr0olT602mSWQ9ABzBvviPQ0VJpbvuHHXsstGvdA8CYu + 8wpLjVxWeQ4eQURosgq7CkMkehv0rSEq2hgjiIgudAARekhX8125ypDMzGxxYsnP1WuAF73wWqKe + NwigbG+HmhnGR+A2otsYO0bi6j6UlNLlEi6L8q7sLljxdGRedTTiQJubdjK7p1rudU/t9QCrtvQr + biDaGO910YW+1+nhHvUNJDnc1JEdHFIgtxfOqJw6VRbCCd6wFzAlvdCkqY0xmLToQseSpoeqXrrP + 9iuYDu3KDINT4rMaRLYEIuJW0bNL3L102fURKf4Cxc/Jbco/vQxQ2nozmaer71ExanejHt0byh6m + FJ8AvxR11n+x2uWOHSiGEmLpll6gEUUjY5YiO9F5inhKTCXP70XU8fxhKVHCRQ5fiWOsQPOZvF1s + k7mFLTjvsAOKbbdDTwcqT2/XWlAQ8Pj/3gqZgat36ozebJtR5dtEeTukaEBF4B6vEaXB7t1fR+HT + x+qyPdTnsLgjJyy3Pu/1rdCaMx0eZtTYeUeA0p5RRW0UQVHXrHdaYGKPj8LIJD4l03yWUbBREYrU + i05M5lYQIXM4bOmi2PDZ15bQnqa4ID9iZJxegcYCF8sKgfOus7lpVE7E4nLzvopowFvXDvsh9wuZ + WUGNg6XaXm/3GFTEqgphJ7XGMOSAQuTKDburLzRQwUWmochKCfuRG8qGbUe2QKEqDeNghG2f2aw2 + V6vFNkeA0TL5bvVJXmqUBff7exAi/zU5MTaNywZGxnFFvWIel89FqNWnV4Fe69f1w8j29Fq/nvvy + uWtHkc/GsN42ms/x/jvnOYE3acIrJwmYYx6ecpLfXT9MR7dZnj+s0lQWAf6ygL6/TaZ/izLATuQ7 + HvwiF70oqAF/e8F61SAoGhnrlbITXbEUT4VmuZ3NeAL7JE/u0+mCu4eTipe4LNP0bqCNBGtxOUFI + 2pNPIUS3C+D39+jLNkhKN4f+ZL5CLNsn0V2e+oHKfOxOeu8B5PUDa/FypNaQAFeMln4AHSK2Sds1 + 6u///Xjy+tnF0fN/752wPXBtFNLyDGqj8HwC+VEYPPg9q1ZKGY/g6/Bv8M8FLAi0niUrVKV6aVDM + lrB7vm/3Rt0TbUxB92QXGuaeeEg85/XZyWv43zuQ376P7hI4m9gW4RblL5rzi6N+FmggWicO8JDI + Y8RPPEpT194fgpUEHokTuvWlrYBgL5vuYTgatmqdLZraD8lSniZ7UlzaJuCEqy/pAcL5E64UwzeK + dkQGYLSeS0YuA5o78LQOhN8AiZ30d6BQwrw5cFxDgnoQUFmdUJmh8xWeLvEl2DY5uvBHBL+RrUFN + wKD+abrkOGHqpZ6MnMJf37+HU2Ye/kqvm+VjEuVqPiZ/StrCf7y/qOVjYlxkNR9z4vihH4ydII6F + qUzsP9QN3iTPzs+PSiuNya8ZXvW/8cL1PAyRy4UcRGmeZt8f6L4/Hp2djtgL5mH1aGTLXKv4j8Wq + ng45mEKhBlceSHOyBMguYWsWhhfBdVWFI0fi27USU6toV2FcRf0aazGpgqa1/4zqkSbFt5bwtzDJ + cIufDAKIHHCebdczRDakXZ0XXIeDk88WWZ4sHjCQH9PsEmz5H9L78mwDGqHUGXkQKWbhLtLR6+X0 + P6Tqf2ThVlOhKHGEAI+e54RCNuSj4Eu7Bf3b4L5vvDcOl+4tsexyVB07xcxU5dsEU47w7Om+iM0w + Ip+wmcRLMENUUvRpiMkhyWoGYjIivS8SWTqQm4nT5Sxbr7K1ksWUyj+iWR/XX9l8y0bTTXbPs2Pp + rX5jHggD22EUEvkf74GkOQ+n1414uKBc4eH0VFh8/ryq83DPrxRnd15OPJf5tjcGnZ3JDIYPmJw6 + y1YPCsiD8p4eVpugwPwpJ7g95HXeXPZikd+0KQLQtVnYGlbIQifw66i7Q1l/aFQwvKJii3Lkahw6 + quTUF7gqUexgZsjQQYWlgEI5B9Z5WxyhTFGnz9HSxotSYOKdk/XNZJF+SaTj7mS9KJLUOIFjWFzT + 5bdwlyn27YOSZh8cSchnG5t0rU6NYje6x0+ITOyE97MJVlZ9YdUDbTDUxsRqRiFAldPWV+ccJq6P + mD//ggnRMirHVcz2z3alj6Tng5E40sHPus1r8lKgskJvLmEDmF8K9LrRpSAoVy4Feirz2v5Dz7hm + wP0jP9DdAG6EeW0xs9kY/omYkO3flYPx/rh8I639N2voYPaXtvWrWO4Sx+1Gw5unORzqhxyFlDXC + Hc9LwB2Y9wpvJRkcq8vp3HdWwKxnqXV+eRoogLzYjUVY1+E1Wx3mSVdU2APkh143dUOFdZAfekp7 + 7/27BoGEW50rHignDuzQHzsxyGIiDvT99h5EuXdXF6MrmMQliKIa7E9yc5POeBawVkuzXGQTrrHZ + dp2jeDmdrbM8lzmPxRnmu/n9XYMk0xxmveCDqmRItBclgOPks9Aw72I3ba4lXin6UeB7blBL/69j + tVUh6Lw2ucP27Dh0DqaI6RGIwNMy1BquXaMExu/wBrKFFOZB115H/v92ichvSQEPqCMAREEXdTFg + 64NSQYpZEHJVxzLqyvcqWzwQjm5S2a0oHwp4unJ+B1J/l69CW2V3iICPIj+Tdot49+zyWFqxC+W7 + 9vlqbkQFMguPp+I9vk9JnDHZDjsn8pFEsRbAuoGzKKJ2WjSpZur8PoSGGNoukISBzNxPB3rZcwI1 + FN2YAAwq264WQKQXQdCsqA5IbV+3fmj7/t6DWAsGAvOlNy8I3BesT2i6bGLqyxMdaK48etYcl/7t + mzTxyY+SHwktnn27XjF2BO/CdgRpq9wDFtFyY/+QWPXd7rBGwVsFlwZvmPOC+f1CMmQj05AM1YkW + kiGfkjA0225imt7pcrpC9BhM7kcMFCrDSWGmJxenR1bHC7KCxilQs5Akxl4wP3bIV8prRVHxknWC + ZQt7BhruXaqgVyLNwZk4gYgD2+wTFWqTxRNb45lGux+f7d/ktNMdlfYM0bQFYix80M5Jgit6hvWc + uMefuKV5meJaY5fxMrG/jdr3TXUZsYoBaA37L3NtED4ThXP4skqgQ1Nr++Fu84DqdXYcHTN+0zeK + 5jAInUEUPYo5/PjeZba5kYFeN1L0BOWKokdPBZrrm5M6wLeNsbllRS94OfFZbAdj3/EdUbn40x0J + MrwEwZiCLKe3t6V79Ns0V+LvXIq/eHhnd9lyvk6n0iixXMCAZivrHZYaz++y2ZeCBroXplQt8wbm + FzPjYHPclIvwolap0FbuuYQKc51pXR1zmBaYfaJ4Mb1nETellpBbMMT7dplW5XuU1Yls8W05HqOr + fMZWo2f3G9B1Q/toJIrSlLtdYP03WB/rv84/MJXGDbPo9cK7bmX6h1pv99IZWqPn4cskfxYTgHp9 + p+W1LVN4IDuwi5TKdNr2h1woM9styDZx/UtNxSKTprsijUxodBZoCf0qiY45aP6QPhSGTYBWV/dT + KqbrsOj/5oTTeWl7kbnljl43w+kkylWcTv5UFn+7YuxVDanTd5wqUudz13XCmI1d1w1DCa/ShrOc + 3yOk4DPPvjoardPrjKQQIdMelyrRwLm6XOWMnVDp8zpKogwtuGIhfwNEEfiZlagqHivrxgG567rJ + mu55xCHkY6uNakfxOK+tZkTs+zGap6tBJ0XgFmb7btLNVsyP6Dmp2Nbc1tJr5Q5qNrV20DIspVah + WLWhtcRD4iUJrRZVAyBcQHX47ZLxDwX2OlJnMdF84lVpQAngTIVEkekssZZMxWDvVBFGm3psB/zu + vRFfDbERgQ88qaNh8WN+wgdGJ15hujk8zP63kahk57m8kh3OO7/p+y6e8e2PaPWciRYFb2GCrq4+ + T9YYJsnbAmebpbngn/wx36SzdbqC4yrfHY/8F9HViH58Lx4e9bHt8LOiBKOGmOCaErSzxY/I3T40 + TpeK3Sl21Ku54wSO6r6br5pczS4IubEcDZmAVqUDZF4fT9ELSFSNbawImbR/ZK06behwI/Tl3tVp + kZVjE4MbwEhqOYRep+E2jiiFed3/W6UII+uLABvpU18EXzesL8Ip1+qL4FMRC/XxTQ0dDnZTvb4I + iz3Pd8cg2/Cqhzz5reS7mQN9VeMIOdHnU2dUdqYAw71dbGcZ/LgANqzHSC1v6ihuxcHUfX1uW4Rp + HNgBi1ijG7EmMPhhUPUZNtIZ3teOzqdS3E42+jqdbTGdt9G9B3PueJUrvDpQWfD1JsPAVGIbedn7 + JhgKpqeW7Dx6NJTqHEuaPzu7Or38NEHU7uNRtQyspCOFnmpoTk76HlfOMVyKBwURXjMmLD/78M9X + R9K3diwxweVxwVbFyhcRTqXYrtzCTavqeIDO+YRA2jyX0cXcz2SI0OdtEybnW0xZ983K9wu+YrDN + jJRvzCTEN/mO4Jujn51w9zW7Z7Mdt3ugnIR7sHb8bK35jwVGPVhTH8Jc6tjSNeQHb6IXttvLMyTa + mDqGZBeaX0g8pMumLCmmaDakH29gzLD505uJo6Xddr9+/sapJenKIfAcXZVTt6+YWhJ03QoFPttq + RDVyZrlze2SJHSJz/uDcMQEO072IA2SAHdpR91fExIl3YlSZD9eU4q6QBV9QaVyfura2q8VOQddh + xEtenbLoHbNfsKiPn7nUyoyflLspcZTS42b/ffV3nRIwBjtyPeGk/yn32hMI/ZWRA44jrwfvbfyC + eb1uB2piejmIDrS7gZ7RMmooPxh79j3VJUaN13/4umLhbxcfLhxHhI2VO0Hu78cRpTXZIqNas7nf + gnCEEkGX1cY8t1q46LEK7DJbmMA1mN0PgrHpQ69jXe6d5Lw/Ou5T2sMUdv7hvW2H5vo3vW6kfwvK + Ff2bnpL+/edJPZ/UDdxKLpL/8jmm+nvR2PF9XiIO9/31f6WrkkmvdGNpqp1I7vuayBJCG1AD1nzj + ovmx5jOWgQUV7Z1KIic5bZAbIrvc5C+kX3m6akhC7avEMwdEG8bqcOlyVBqdwG0Hcy/TKbT4xulq + Cde12wpxMuaEHvO6imrN11sNft1zvLjVBYLc1K3W9dRqQFWXsFKkK+5FWZ8DjZTrt36z4yEQhPNv + 69UUVIYRLMYshRP3P+kKWO7o2fV/nV8cHbQbj1UVLy6DvHP+cGDTrbPt7V2hG+ebZKWXhSxKB19n + CO3Oa7pQYFKLSaG0yTGamAOV5jjfQJ0fC3hnNp3fp9t7C8+nMjV4AY/9RXg4bvgrrRClaW5aUytb + YwpcvzBbqInrqWO4lOva4JCSFMcY6layRPTrIPZIHS5/8B1Gj5h+JijUbo1C4f81JcMPUZUMP2nG + FNyAkPA65ooIoFEXA9JFAenz8xFFSiXrKmOs7WiTWxCr+/nVT5mugbvCCtRXp6gfv5puYAzLEpla + TInYu81Tu39c2XAlR3+ScYj7JwICc+qsCbpDObUbTuxOVbHZNbEXqceLlFOnxCdIcSkQTvJVMktv + oMO9580LYkpPkAObp3C0VALwXtC4jidDwV0XdLQ+FirZxDQUXHSghYLTM5Lj1quZKzABOaflqw3f + UGMjyn5qGb6njDKX2IXFOyLgp8gnI9UgV0jkNuzERkZY4oR7Kic/gdMEZJoynfNDVKMfDE/nRnG8 + 69OGsD0d1E3nKfY1gGu7JyykbNQL4NquwkLKp3SEiwIDCQ9nykQROALNvzy/qALpa4R5poHjS4z8 + QGirpVCFbidTQ9T7HgV7DO0EP8c983PQ7ZXeH6gUIs9/YQf9AAFFG+MkItGFnkVED8XdcXvjNliy + 9AQBXrf3GahaOYYt3d+/GP1HOl1O/jPdjv615UrPf2R3y9HlCxgJ10WOrMu77O3Zm9ElkLcW0zml + GXluKDB7SE4olT4e1wtva6jXu8siA1G+L64F2A4WCt7ed2Fnd99KdsjHyMbu5BqmdoIRBNNDiywf + nFcTOxTASsVHJpx2UQi6hGPSfahtP7brqggnBPM2rcDh6xWqjb7UtSO69RQwtYDvLkNS7xUw7tpx + LIDW03vc8XLUuNqgkKv4NmOCvu00lfi4yxSvzNNbdJ1xjteKUdUBxT5QD90Zkwfn9gwQ2LYHb3VB + tS7qmYt13Cl5+DYJjeRFFE4pMb0HKDA2Kca32+nyYTEpOROT78Ccl7fJoRqSTZj8uPSHdNIREDlU + F4+eE+WEAo2LxZ65BZxeN0Tj4pRraFz4lG6/09enQQ38wglqaFzPg9h1w3FoR2EkqomrnCTEzaym + 3GpWx0qi57geV7xaJxP1xtdEK2gyuTw9Gn27S2d3kmo++uPylJtsZNEfUcEDi55NkcnijZxyIzpI + IZXRfJjdO5NwxUclCaQIkyIA5BH8BGgrieF0PsP8KbKzwy9Bzc7eNnrdWu4HbXZiD85/WCs9Xskk + 13G5oihstTozj0VOlRp+7WwxvV+NFtl0nrSZ3YOo1ZrdPMpeRU8LFI/YZY7dkBfQPJGFCNMVbx84 + QeukiMFbf7Nda+H5VjhooWuTZ5XAAN6y367KWcSIZSjSjbuks1Zjumlad7fU6cgU4+a5bRduGqup + 703tseRXRO3y6pJQddK6YpTapDgWSzO/JtKq7ZWDYrGccQjgzWiTLLJ7uBSMyQ8gXvlB11oYqqGG + pdEeMZADWFfAmnY6fFlp3Yy+a2DUbzrYxZL3ilvs0bztdGAN86aZydbpbe/hmMZbDR6DWRAxgJdp + 7v1QTHIjCq3lk00ixhqDQyJCw6mKHkaNQ0aoHLSNc9jGExBNCYN8ug9er5SSVeGa6LR3rBM1MbVO + ig402yQ9I2l5tV6zUkBsxWlkNXqSLqCNhQ25ZTL0A0uceXIbfMsmhVzRpAPnD/kmuQeZQoC5J4vp + Q0OCWOduskOPLIZDltl7Ks7zDuf+4zrmg9gXJqRSJEKLE3oHoTCuEtrt1+6wtjh+ICrOCcdhPxd7 + P7MLaNs1J3i+Se+3jThIT8EDTgeQpBH9AKpvaDakGNhg9yHb64r/SR70XTQ9bb/VN9eA3Q3qIJeX + TKxipFkcvbCjfhHS1MY4Plp0oUdH00O6XgiIEaeOgmRHHxzbmqfF49fbW1ZJoijooqch8CJR6Iyi + h7ggBCvSH4oqCH1+r/MCDpu7FMElh6hwdAja2nAFg3rXI2ME4TSbrq+z7w/Fiux5dCLHpcCMAQiJ + OrKb6WKRmdAzr2fXn/aOsQ6BZTIceOOhoCiKzvBRNq5KBGORz17YTr+qjdTGuGij6EKv2UgPiTHd + TDcbxJZ6WHCGfsP5u8Um+OR2AUOBhZi4Eyn1J6M/JtWXyx1hUWo/oIL2AxVNtBEVly8CCcyLdMVr + X5k4LbsX1yPDjfjMPcgbBgX0ApJtgX0dEos2bqfVaEBpSGHqT+SXyMZB0SfyOJk+R2CYiKBB++0+ + UR4ZU4YhB2zbKyTQ/UhJ5qgy23zXfmH3MQ3IJqYym+hAE9noGZkG7rO5AGZAdMACsO/ZxYfz1yPm + wAlwPfvI+pRMGXzIDLSHsufhAzS3kAYlusUeZ4khC+ggg55xvUjzO65qwNYou0Bk2ALI23KHGGrI + QxVs9xyRpn6d8kHQeG7X2bfN3e7RUDwMwYRUQleG0QGHzIzfL3TqSdisaZaS77DPl5hDAvyOL+WS + 85c530g7h9hUx4w5FDNALhHEjvyuNuUmXe2WqYeJmvZijQidMb4xTGqiu1QZ68MlVic3z0bjr5tl + oxHlajYaf0os5OSff9TwSd2QubVsNM8OXNsde3boRyJ27bTsm5wq30Op7CM6LD9la2c1+pJSZbjl + fIR1U1RAZD4WDkuED72bfoVXRmsEreCe0VqYlDzf3C9+8jVzBsg/YzHznLqTeX/0lyJ/yo4iVq1/ + 2P5VZbLM96MWN7aia/20BbBw26gkqSDkEGg4ZNz6HcvW42y5trB07rqHGiLc2m+lrg6ZT/CqzUF+ + exe4cllM/PvTH5fC2L4b2+WgSF2q0CTRX/qK3qRwUOtpV+7wjpi0p3D/xK4jZv7UafeNNi3eULWG + XFdglr59z9wekF/0uhGTF5QrTJ6eSszS9zXIUoe5ts7l3RhzjkHl9DDn2IlFcsvHCXzTPXCPBaIX + zpLNAxVTWbXhNS6wzN7oWdCI1zgeLZPpGihVYBsXu3Ek3zMF2vie2dMG1Mbj0RoITfl/r0fzbIt3 + r16iMc1HC0y9Xyjw00Un9il9TG/s0xqQ6C+IfWr9ZVceDvCP+radWKTDfpuFR13Clr4vUEtdhof9 + N4laGjBRndIlNxp3ndBm6e/cGQQyqYlCd0GfvwYkqMrI6GY3nbOhJKaBIEF/PqrngIR3K2FUDfD1 + pevE5kUi6HWj+1lQrtzP9JTu54uz/+NWr2fbr0CCuMHLCWOwZQI2RjgKHwUsvKC9aPLl9VSDwVH2 + xVoRVbr1LpLvbj2iuAlHR1eiwjYETRbFXhDXAoCHQtBUQzOuImyHlSJ5dTRvMSWTEvGiQrB2OcIx + bQHkZMBCQzjH/7YummZPzvqziw8XR0VsrY7DyYN6M4TU0Gxh+G2o+qQcVRx2NdDIj5WIKSqDw0qy + eGXhDpK83gGmZokZ4OJry+T1k6UdP+LUzi7L8JYF6ZYkqDY1xfNBbywL1+XCESWy7ZJ/c90IilQo + Eeit/kQagfJqmqpfPSjsGkwsbjjlLRiE7KHOnifiBhlEP+OpyH+eXdqBba6d0etG3F9QrnB/ekrc + /83pn04NEcqO7UpBiRC0s9DzA3/shAHzRUxgUYwXswaTCRclEKUHNso9ltodj74mMCAhfOJMv5k9 + OKvR9XYzmvH5RCGD356bhDMkhBJW7JruC2zSXdO+6cLg66wxzqsSoJLHIr+OuSzHP6HvUZ/RnJLi + u7Fj1MFq0LrHjzLVFt8HqsxAFDiDgBzHbilA9pqPsgiWHZfjv/HC4b8ioVnamWrediafBmdgvkOm + vOKrK8DV6tOS3gFhknEEwqzjuKG52EivG5p1OOWaWQefEuN4d3JRs90zByPtdKvOxAeRgI1913dE + qNeVUCuEbnsH8vBEQXGNJWz7RAC8w3S8m66c1W/u6jdv9Zu/Gp2enpx8UplMQrsYj6Z6xJ1IP/5K + sYewu24XsBaLUkAiyupJvkq5zfOBe/tKyEfH0pKdKxc1/LRV9a3xBF1nGFFczazBzrSwPM7F+EdU + mZj+KSJGsCGZjgWwN9uMLgGLPM8/GMGuxRPRMamNeXrQhclA2zwSGGSG0U3ozpdxMRV3SsDs1pS9 + xi72AqCTpKy/2Xa18GAry41jU/lpmPIG70rTYmnRQLvDhweKqW+mYdT944TM/xzgIc4nsEknY9lp + 3XqaMddDOM05f6oPrIGpGVlvQhVDHdjeCxb2hJkWjYyjqGUnehi1eNqMMV1AC5FnsQQhVCKI8dNh + yA4pCN27QOsQ+lMkrGew38z1J3rd0HrGKdesZ/iUxKDfL6/q6pPjOVXr2XOfQz2PQRpymADUXTzk + D4vJBq2cIpYSZUUSF35f5/vC25YuMScIotiv6TkYFA86BO95kd62aTi2Fzlt4oIT224UVBWc0hdN + 79NlhvFz0/qt67l2C9kwcODWDf9tvW+aGwtnW1maPM8brGgCt5o0jbtcfvaQHqhcevv8GB2yPcgM + PayWgqk/GldzwAzisCAkdc/9SHkRbUQ1hc0HrC9RUV+n48gazfZehIYfWkcG72EJxCyIKHhkv4+S + N0qswAHdE/aCxT3BAUUjY3BA2YkODiieCnzPs5PX8L93IL5/B+0DM8yh9WUy+88Rn0AU0uTj0bv1 + /1fNkir1gskHsOMNr3nzlKIDchKf4DG2ubeaw6UUUr82y+W91R1rqYi6FJHUSGLoLHnzhTs4az+y + naA+WQd+5eFpTuI0e7YEXvReuS94iXZz3EVqYgq7KDrQUBfpGcmJs+uVCFylSm1YfQMvPg49kYzQ + CYL57/xbpWYuRfWmFpOuFqNT6M3CLgmDMeCZka7LKDNSr9JRNirArJQc9u1YMT+zKIhE1fSYYtXB + O78/jqtoZMyqZSc6qxZPaWlPTk5k+ioBSlhVWBDxWCPIuXJMKAnGkELmJV+cqAzdMk1Nw1SGuSOG + 5vIH2iUG4HgDZXKaAo90UhkcgUQQPjg/VJ5RR1Sc9fpVnPXMK856jRVnPVVx9tPnuoLuen5Yqzgb + R04U2+M4CiImWPXb7XSJPrYOMMVnb8/eHI02MNvKl8Zhye6z+ZbXxLy8y1asWIYpMKTpWlmTeYg3 + +Zvwr7UI7WMqQzLLVvDH7Ypbe8kWDJ07RQweGnEfVl8Y/seRYXryr8fAsDYiO+t0PnOiFbkCud2W + zA2ftk3mBhHXVjxrdFdGbug0BdAU9oaeuJSaccPW8fk0j0XkxpFdLTfTEjXfGa3j6fkZb8/H5TCb + 5n6aoGs0qizwTahaA+0ytnq6u8zCU1jUtWEiREhg9BimOXQg8+BcY4OnDNp7aNjo/0LgNluRfhXs + W88VxmoWuH2M1fi6obGaU64Zq/GpwL791yl+R8Va7QZhzVodRgxO6Rj+iT1R9vCjluWrIudK1boR + 5/CeW2xRcIX5qSCINiaJnSY3ePPUY9QLYM9vN8xXcLTfZvBL9abiHSYUdtuMRRvpsUClhDYWRZ4f + 248VPco3I6Yy6RODFbjLo9bif+BiqNwctdFaP3k5LL6XlC3eDwloFUau5NHdH92HxR9K2lxhcmOC + fjkoLyFyCTWnPMohFa8d5WeGM+2R9tg5tTvGYkChLQnOKBGgh7lrAC7uKatD/Io5L2zWz+ogGhlb + HWQnutVBPBXxVB/fFKVli58LK9z5MotsK+X/dd2A+YE0Nuw2DTy+naE4dwTmW4CxrhOQb5PFYYv+ + VEAbd+Eh1ko84kTOp/fT26QvuKCyMcDZ02cU5hNR4/r4Cndxowbsm8MiWHyBrdC0DQ6ul+Uymywm + /EwcQO+pei8ON5H9UFfFj0E7cxllyuleCvcfE/8f7Y6dnhtC3g9+USMw6ofdK5uY1wiMKti98hnd + C1P4SooRF/ALZb9g5x9L1NF/wJyY7gvmEXoORcfzyOYhKogrLijOk6BfZBJysJZ8uviKzLAnZ2UE + DFt8bxOdCvbBo8TtDVnS7/HQHm2HzhzcO2goE2Vd9/akMn3uJQ7I4Whge9Du5jUC6/9AKoMBfXmB + lDNjB0S9XpGFqo2plCm70IRM8VDwksU8ATacjPg/azSj1jjK7lfKfWE4XOALxmJHqtACt4gpWt3s + pS57AEVKgMsWDxiHMwxwq1LqhgFsZLFHZjxeZG66IPPvQIiKog/QdRjnRwJWO1sKf/Fwkt/jhDAP + y/5+dHVUz6bCZu5kdrfI1hkiPCxGLUfjcDbIAi9mcpWzUkDAfjyHqnOdvAe65hZKet3IQikoVyyU + 9FR46y5eV5PRWVzDinFfPmeOF0XOmDkBR9rkENJCrS+7P52Twjz+oAANTqTXazWvZ6Jfb+ejZTL7 + opv5Yh30pOyGctwoCmWQbYUQosFV6LQm4LTR6Q8q1kapb0pQG52mmeaxaDDdTeZXzARsiVBmtuvE + gePV+sjv7rOsaf56f3W+AullkeCdAFw2m1ccjAhmZkKxXgGs6fMbnZjw/ZHR9yurMeGK3cBpF8Bj + JceY7rpkrWA80K3DqrlQuCkbEN9CxloriTXSkXWz5OTO7uDIrLIUBquPL9Z3V+EAbaarwAwxiJYU + YdDYRCWQ5mDysDWFq7MHYzgiDXFBrJZ12cRVVIrYJoFO1hwLe9a4XZwTiXw3XeRZkbvVwKxO5zPf + JyCfJOXgeSjSLB747It3LlZ3DlvhbYE/YZ6hhvLAPaz3mBGi/N9IjgNAaGYxEKjqVcotZMoqNdhm + 5lH3rYVKPIqhMVrs30zyuPAccHWg49wYEqJKsw114eRWV2FxpT1v/Ol40Ljot51TPiDSLx3KzkGK + Mh5xee66eLCRtNaT4O4p/LHwtIybDOo83qx5TENVioe8s01b+7XWXHQwae65LgEEcisnB0b+74Tk + cyMMWS+kWAIVmZCg1eS3zd06ybhCYRYG1pgrsC9pg83hUb20fcP3BvDgREXc6In7wvZ7ho3yNuZR + o9RFJWiUPxSBwXcz4ceZAcO7g4mG+2P6VcbiltXnxhdOsb32FjygmNJQFETxqHhfFY+rPby326Im + wDX1GBYtR6oG29CgqO9BxWRs5LtFdBlCyDhAhWYBi/kx+Ao3JrCyyT3MMcfp6xjeoxJvV9P35J4x + IVXMMoIfTPsCfBwIkQriGfUvN7aYDD6g/ecW6FJem6LL6UmX3eRttrhNgVFvvmXrL6rPvkMn5l3r + Yt+5dNF2pa0hvCXHti8ErUf4LU0ke2wuRja10pSL4JhBLLn7ke++Jn7MJdMdACJKdtVY2t6gL14s + zTN+3Ms8A6+bmmeQct08A0/psjo7/VANpgY2hvu2Yp5xA5/ZYzdkngB9uRDTACdEhlFJhXosoeco + bAk1KAEgyTkZairFs8U2H8swIQ6fWoGk+/Dp0kEqgX1VRzNV+lLynRgstwKdze7rsc+qt6rRpS1z + mYGOj7EVzUaXJgNO4LdjsXTR6mHA8fzAsWP/sWLbBgi1LtkDXNf3o6ohpFhDQicVKziRMyFWUofP + 8quB180TO2QnZZMOiJiBw+J/W09x01t4hgtt3vct8S8yo5aJkBPAWVSrWtcVvLcffRN1vV8MeWP6 + +k/wcYiKXeUlN1WT7aJhY0iQpieKq8MvaqoFYV+Vh5oYV1SjDvSCavwZXQSf89XoGSz612SdozxA + tV7FXj0azTOssGDteEtEuBVYJqpfHt/mMVJ8BipXi4xJNxMcStHzhfh4n6RkZsJoJwqOzJPbdXLb + Z//2clLJHaEKSXl2/IL12RGyiSlsjehAA62hZ0LvVRA1CQe0zzaF0dRaV6JwJVP7lK+dWjlQ0RMv + KMVcnvNqe7EtjCyogIrQvaurzxNOub/Y+rcOEJGbxylwj0I4dm5f3CNqZI57JDqp4B7RU1GeXNmm + yMdKtqnyBinemN7fww/TyeKh1gNuHRY4opAsKbcl6/TBlRqHq/joVIZ2eL1HO7YjThVVzdkdNCEL + k2C2Q/dFlpoUNl2ynQ0fALF/D4NbWQ4NQghdfkRLefQHZYQb0usoAEmBnYUbal8AmZB8Le8nLWdz + kECxAzrZkcFNnPMQIq7NhCfsYZ3Os+8otatqlntlXPuUZfbHpR31gESj142MBIJyxUhAT8lI8Oc/ + T3UjgRNG8FdWSbkOXz73ojC0o7EXxbyqAvLxf8rSTyJIHdP3lsliPBL2UXSRLjgmM1zjp9NnzvMj + mhTUlmTVKR40Xkhodw8IXJ7fk8P6LkMHDdf8//w6q2v+kogosvNmu7xNjyr5Wa2waAwxVEPm1pCl + p4sZBlMq4NDK97UkPztOa7RDiJW547Z+dpANnNbxhyA5ubVaCkucS9x2CEFtMHS45yoZdzuHvoKN + nOcmg+85J3k2N6Aatk5JM9Wv2WIzvU0mt3w1DZbSa90z5Q4K2wpN8h2oBBmovRVDiou7sEJPzy4X + +9D6MQfKwkMvrQp+AMK3fTB8OLYnPO7sEI8QOYjlwTiAFp9zTQ1sWKNu+VkwD3yrXOivtVreky2x + 9zSg1uFU0eo2Hr+eEwO8trxRdnNqs9VyKGfCgF0Y0guc8jB/FJUdcxdQ5ZN2Fm44LEKdaePYZkR8 + wqoun/j9RCmqzXR6CTKkOcg+vW4kSgnKFVGKnpIo9erza6ceDxth3d+yw8V/OXGYDex+7DDme7bu + cinnhF9v55M83aCVaUHBJscwiasFXixkW8rh9xzUlAcsxTpdzmGSZKzSarrB6slAJ98k07kMd/uW + LubEx2Q1bPkiSVmvtnOnHmbbP6pVc2YM7xS5mlAuycMCFu0u5ZpCKVsMH7YUg9fAcEJf/4CiKEgc + hS5wzYaATH1FdFnTiVqDEeFLHJvZhZ/hp620xTeq8ioEniu8Cpw7lyrKcdySXl6FtkA6EDEpZRbN + eN15ra0kHLJ3aPFblbUwJ+Z5KvREWOe5boxoBTzfDNbk/NMV4ybjZDXl4EvKDslJ+y+iK/oedP+8 + 1/4GbGSW5oJV8cdF5ObomaQzLmiMFYEj84841D71dFNGhgYgBrEyEjPVxhZ6SkQeBRPytX12S5hQ + R73ot6zqgFlpvspu9d66L1gvu69qYwypKbrQMTXpoagB//lMOIyUv6D+aHS6TdhvnkJIKFHG5Fbl + LPJJ2SCwzU26LFeak5Fzu3PJuhUIz+Wi+9nlBDZiNkv1qq8DZKpZB9r3iqPRq0ybybg8V0RlqRk+ + ANJD7keqg/Tqve055iIavW4kognKFRGNnooCap/P6yExnlMJifFeTpgbuXYwZp7tOMLY9S69vRtN + b27SJZ7E7Tqd6xW9ihABuDR4qUa9oPnxCMt6lW99mKZZuihruFRCbZvWDV3V6uh6VkwUVGIoNPMC + wmCyoGYUkZ/QGOykm4eYa0xfyUo18jrNqGLWaqFpPf60W7grlDgEKz9INbWIlLb6LNTotIdi/Oia + bHwncd2wstv6jPlJGBseta6bWh2HubU17tlBw0RKdhkK54Dbh13S64bOAbeBXdJTYpeXFycMPfI6 + Bp0XYwUO3TswiQP4PzaOgzBwhEr77mGVkfsOVvGPyzfSjp+toYfZ09cxhwq8O6CQpKWstFEQH1Dv + 55cS2OX+L1I/2BljPQMXSq2M0z9UN3oCiHxMZ2I1W4sUkMZyWc8uPpy/HkW+H9pufGQ1vnMBJKz7 + Te5Q5ocXkkz787GvGjI/Hh9MyzzsqxNTlkobYIhWo2W/cxAho2sWNnGKR5RXTKZYL3gEOyFd9rNW + uCDscrE+XwHJG6BT2QjYtpa8iarEfYb3RT9NZb+IN1WNsLAAcnI+s0klWcFMchdi5+LLierkCdzA + FMZFNCT6YxRm2G+mhTl+BvOLmFhIylnc+ZlGmF5N4/xpdfwaB/MIJQGBpqedifoBGLA7zxU5HVI9 + nah+955hL4gjLdeSksfnPHdcxtO3jraj0iESdsuEDUl2mn9UdSTmvu0fR0xtjAOJRRd6JDE9FKBE + WGNrlp1Mcpwy9BPpljINnajHu+Xe8TqNfG4iYoFIVxMkhoA+s/rbWpoFo2HNNXvS3WVSittp/dJu + aC8UfkvaGH9MqrtrgDi2yJMIB8OYmw+3CUtZwQtdCrG4A+1mjynYRZzcKuvb7BFocxv+YrocjLbg + lEGRcPEGq/z0Y5S8iTGfpA50Nsmf6bBI8zTfLm7QrpNinkGN63W8V+4HGCLzAltklvth+Yq5yRaH + QTR7vlfInQhYhiXvuqJrOmJ1fzRT3cX8onZa8L/ksIjePai3x/eG5Lbt2jgDMLTDuum2otmu30za + GCfNPI8/8vku2XvQkmMw6VpjUb98HNHC1K1G5DWnGn9E3OJfrxG9O5kqp5dVezIe3W3vp8vRvy5f + X0Z+2a9GpNGr5jDnRxWTVsK5Qz1VYS4MN75cBqfIlDuDz2H9LESykXm2nOikki9HT8k8tLm5bjQP + ofsinTapNc02ok9vzs/fqWmRQRifgLqFXXBR13UJGt4OCaao8AZMku+zlOv2hO4+JoDyLSe2XX47 + GJ3/CRirTDqgSLf2lehrhjFEGie0rfblkIvsHo6RfnBua8jXAKTBrLLnDrnh9oSH6offyQLH5woB + 2gVxJAfbE0w92YGqDmT3CDak102rA9n1YEN6Snzm5PKC1TwztstqtewnQRDbzB4HIeNwp8iaeAGx + fAXbAbmA0qEkMxZ+mvkauqv7adTrN9KGoftZKukWpZC60Ik9N3qCbhYZksfz86ejtYiiLxCO5wg8 + KMASJF5dBoeNcOCO5Q5BjfTsfhXahAD46X6JoZQ4YclahuUlX7PFFr8SNhTC0ql82k+a9/AjOhRF + Mh+0FEsjIAR4XpR8daIWMk9ucWC59enDR6eo9kMYgMyjePh0+RWk86+JxLCrZAvcLrazDH5cwBcp + VmEYkBYyipZf5cl2nt09rO7g8BRQeTuN+dbTsBHIQ+7JvFn3Xdg36ZqamObMig60jFl6Rof97m4l + hAoCdythu4mdS0joVh37Tfv76B0QspAaz50NWWRcWqYVHfLgSjIexeY1wEs2gEvuK64c0MmPrwXT + r0LiDugCKusMejlyR+RZpugF7d42IEqS23Szmc7u7kWJMukiAYUWphkk1kXC615+wR2LwW3rBETQ + NV055KY731fEEmCO19M1HKg1xuhujC0FPxkP4EB3VH9lC/2D/IzeZ8sM5KMudevHltLxglBzpxxU + zwGpaTpljRkOWNDi4K4Or8bTo5LawbV9nli9jcCnSNJL4JTmedP0ulkkKVGuRpLypwL7/uRTPZLU + 9/xqJOlzN7LdkI3diMFt0R0Ydb0G+t+GDox6UpK2CmiyndC39sBpUNIZBRO/fu/YXo8Crfx1MxWM + KFdVMP5URMd9+ujUtkAc1+uzxl5gB+PY5xWycAMIcy/MP16yFQUByL4/GT1T70wW6ZdkdHKERiCh + ENB+udwsndpmabYq6xsnqiYj/wIbpwOdrakA6v30/n66SKfLUTHXUoeqamS7J9zCpVYKlRu40lpa + hJjCNkuWX5NFtjLODH5qPo+/osNXikDoCONcJlsT291j2vmaD4BpHVBg79mlHfeo3EKvG7EuQbnC + uugpsa6rd6fV2wvOvVep3BLC7eWzIPbGru86rnBRXq2ytbDXFiE1IgGb6tCf3uXuavQMtGWM7uIg + PqI6wdFYr3WAx6+o6yDOI7YDLXs5Wkwf6JRO81mGodRJ3ljs+MvGX6kKDSITPBejEArH1+Q2wR2h + 7B7Hum1QADWCkgUjm8KCL74A+0AF+p3gtld3DfAj0kJUPGtkaJGrA1ZIxlhw2GT5P7CmpWlszlet + AnKWwTJjFkV2UAWmuBO5O23lM2yX9aOYF8vfjrqCyVOt0omka/3ddpKFx04JQFFMiSY2xZ5WV6oT + 9aorErYnyOauHDgyRJQWHeYOzccwFTyIYH2vXDfTwmLK57h/Z3zkao1K1Hcz5sCRFh5q235RPALs + 1743HR/5zyuyIIlEtkyHbuNCJjtQXm88bv/Pd5e2x8ydI/S60fUmKFeuN3oqrrfLV1XJ3GERnrNy + 1or9csKimDnuGP6JfKGc1Z1I6BujmfmNYHhQ4RYOWXE3rK/rkrh6t7nIFotb+GPsObbr2tUbYpdz + S3XXmMIXeH5bSTStP8XmG+LVL7KF5h3V7hE3aCvMJelbV2LOpNhd+6DqjB2PVOKtcHzM8GSXGoll + 4GZGZBYthIsVPFbOwkbXYDlNcAPCPJAATjLFTb6cwndZuLMkB2dwrz+RxA0jX3hQH2RvB3gD72RY + yIPrQdyUXMsXqGNcc6W330AqXqrZXXLPmVm7gb0tv94OqAjjDxztcgvcDJdskYCGaDBWEUVAieFV + NjKMvbr7NvOp3AnwtUm//i3Ba/Ct/hyrk7S8XlRYe+DaL+y4X8iPaGMa8SO70AJ+xEMDPOTbBYyF + Y4c01u0u6GN9XTcibIP9UpmeAtLx37eS7GAekSdm+bejiCqM13byEMGYT8yrENoi4dqJe5RsodcN + E6455VrCNT5VEGJhLd06Ql9TBYw1CiPPZWPUo0M2EILYcjT9nk4XZP6sgkspdLCwbgQRVZUmopqS + LFqk2QOY21q49bGNztt9MbuiwA9Z4Pzb+qDZi0/vTi7ypticZ6d3ub+anKxv2Goiz5v868vRq9kd + W43xHwf/wakco20hWB2NgfB0w0XYnKKEvqPsqe5cLvxy6mQD5WCgEpKLu96F9WQ2Xd9mqs8x7IHZ + YsvHwY0YYzoF2APV1WrGzECEsLBIPXeo7MiQAFyBTdkchZViKPvH4TimMTeqq/mpYmHsieQhzDz7 + Fs0jVxmhY9PQpiuOS9ZfuDu0DJxIIGo59SZCh4vRaGqRKiXeipnpRdKzCbuzcnK6r27J+ZmKI4/e + Bi/soF8YObUxjiIXXehB5PRQuAdBBxHFZsRueXb58eJIfVNJihR4A8yBfeva8ZH12R3lywxebwKt + +rxZMaYNAsPImesJAIKgAOkrVfHoa8X7ZWp47JJH+xTvKTWj7EIOnigaY0p+bU0HiLPuk5su18ex + 6ejxAU6kHUssNwaFGfMj1xa2R77hOlKqTcOqQ57O8efb97B05pZDet1IABOUKwIYPRWWw9dXNQxX + OCBRJaw6fjlxY7jD4rEbh4EjPGMiyI7LBHSykdqxgqjiZqqG4sdkQ5znvwLw6hMIBfhjyeHP4bYY + 6Ssp5h8EMZpMHoSNP3qrIym8tfJ1/qJbpE2RE0je6PkGpCh49W76NRmlcHARv5Rk7JOL09+w5jiF + VBbWJIuvvpSiXNvx/mYAPqGrAqidN8zpXXlItTIOo1bd6JHU8jEd8dvVd6Ex3S5AOuXowRxQDtMN + uZGGrlTbA/XZ9Y+sltfeAh0LifFYascRdYgEygnmMG7XB9cOGqoqGgYq1wipogB9IWKQWlyjhvPC + Lao/jF5nzSLPjqok75KmSsWtwxoYWMdDYas2pIf5Gotvyp3VC2vP9xnjAxRzxb2z/QLF92dJPybJ + y/YCshKVTt7e8cG2Q7asxvNcprobiqgHsT66mUfOCePM5057liftWX7cB0AQXze1ZyHluj0LnkoA + wU9e3Z7lujX4wIg5buyOI+aGUgvi9qwpv1RPp6vRleZxvVxtvOYywD1EHCzk4rOwJiqtip7FdZ7B + d4O2veHqqIh6OeP2/ulRBYrVjVoqzcaYK8Kcnr2NR9fC0am0v47uI7iJ2osFeU4cBVWB7uTTRRs+ + PguiKDT5mnIc0zxbJatN5RSUx+ixsK0Yr0a0AJI1AHmuCMiID72jDylG5rC9aQ5U2BCLrxoXXvzZ + Ca7Ki6b5jO+wpOHtejpXmq8aPZcXYR3h3kCH9rEev1RXCzBbW6DkH5dQbtEbvXiQhju55Td362x7 + e5dtNxT4hGY1FEoTC4+gMuWFkX8QfPZOvuiiWb9s59oXhfvpisqHeY66vS0+6eZ9WYLRxAxGvAvH + 7EBchyFdachnuEGwmSUZ3fIDpM6E5EDjct7ioAqGRKjKr03WvqvxzklgIWMlEGoEnp6AUCBLHx4g + n/giUIz1SeGg1w0DxVhDCgc9Jfnk7eVZ3doTxUE1UOw57mvGxiC9uGiDR/nkZDHHROlCSitfBFQJ + 4nbxgGUix6P55PvDAt9Gi8R0PYW9hL9J7TC/P5bqhIwcfSaUszGWRMJ/lDo0JjWGV3Ib42qtvwqY + QKANf/r6wOku8qNjecATDu2KF8O7P96iVnL3bSrtTm/XyS9gdpoueKXg8nQ3Cxe2214t0UewmxoM + PpDOJl8SuFB309YTZwpoA8ZcOwAOW5FcXstlLxa6TNFzwtpoNRB8xwlhQqrA+k37RxPbYr8WjGdA + tkG31USq2G8XLcXMWr/6mbCQIaj4PuYFfSvTN128Q9pw9rCSdDglYaNwG0kx+wbiWhOckxNRmrna + 8PvR+an2jF/KxCpYHV+8DtZoNIi9CD16UPpAthC5Q0OBGCDxTdiESs+j7Y0bfT+evL54ftQvFjGk + JNQP7223hwRDrxtJMIJyRYKhpzLUvZ7J5QZ2pXyz//I53qqOP3aYw3xfjxgSsDerrchrkfg3eYpA + mwqoe17Gixhj/Ui44VOe71IG0SDGejqfORHKFeskWY5uFlvMuZmVFcxnb99cHE1utmQpFQ81V5lS + cLF2XYIiZ7JW7rL1Y6ZjDeXlwqpO3MLeMZMVf1eo37Jvz/9tnS+X0FjORA2uiUKHxDhzCj4uhzSD + Lidi2WEkeBvk/FpM89EiXX5JeOGcT5dn/2f0TI/PpfCiIxEbnx+P+F6DXvE2zkfOKEcDBRbEXafT + YmFFqP48vYHTg0ughnaMkPJ5irqGglhqmhELO5K3sOfFoSVmBg+l0ZT2uAQ917Y5Dy6F+fNA8NdN + 0QpNkdoH5QE/gRzZofJaw1CgMrCoT30v/rohKgOnXENlwKeCG364qKMyBH69vpcfu17gjv3Yixzh + DbxKZhkciw9nbxwKgZTskX1qShURxsAPJ6+vRs8+zO4xtO/kdnqfbfPx6HVyk87SBCPwri7fHI2u + s+8iYPB4hJ7iBHjmOiFmCQt2+f4Dk3ztftXA13qrYw58VxwGB6tjGp2CP3IE/YS2SHOmqmu3VpTn + cEx1Pawbq69MHIsTaMQvzsdlnDm44jxQ1XRWbFLNYmeeE2hNlcrwVLas3L2aM+tCXqg7c43kmGA6 + cVO1O2mr2AW4/SbF7mr4ImLeFp4MlXrqRsGvkrjEZ5xzJuP165PP1HEvhF7k1b+sj/+8GeLuF1BP + jOuYPEY5kseg2Zn8KtIQGnmakfY7ZKUReZdGqlZmD4wIet24VmYdI4Ke0l169vqsqVZmHeGIgcYR + xWPmuiHzdiAcLYB+HeHorxObplh+ybWSF3mv02U7/qcUvcqGdek+gbc2IJ7K+wGtK1SwWtK+WN2J + eLcpvJGu58Vf8gfMTdacjTOe8rGhNEWQo1HmPR6BPmamjm1z6+LqT+VVtJnnUIGBsHAw6SCLwPx3 + wSx2eZUcj2Lyy8x3vt42nKkW+fxH8duDRWllmYsiDbCyvCnU1upRXVqylVjm5jtuH5cLvm6am4+U + 67n58JTYyoc//6gZLFhUwS1GlwvzWeBHY+aHnifYyoeHjKHeCnscc0kwZfwBxAKQMFCZrRaCxUuB + /j7iyB1C6U3vUa3F2eFHAW5EBKiEY/BCcCnspS6Cwwnka4TKK1ITYRjaFOrBGHguWmXgwHccn9U4 + GEJnSoBh4GetIjDQ1kz85QAH5ruhXw2i4KldKqurTCpkji5Nl6vwlodZgMoUc6YPKmY9KXVIU7rv + IdxJ2PqkbQlh9Ye1we2hcb9v6WI+4Ruo/CG4O3jYRJ7wvBot7CJv2VPH/HTzv4qni/T2bkPd5qMP + ixkjrgw/OSsZpTFCxILz/2T8L+f/6eBCpzc5nw1MpPoK6qGF56RAGggoBSum3KbyuHuItGbt21K2 + oLFfaTyuH4sOyJYOwpRRVKWlHmR6VmPn8NuDTIftpx0E244bpgnvcWWQUzvM7AKzRXnKdDlLVxxI + oJ6DZ3SpIUfiYys3XyazL/U5MbskhVG9Ts/M9OX5BHFAR6dfrEhBJLBLRIAB9ApcGTTkxA0JFrbC + uHsT4bOCzTukh8dHBdo/+EVIG5EtEwCc+ITZL2zWK/5fNjIN/1edaNH/8ilJHzNVvRf9Pe8meEq5 + CTkZrTzfLrm+RBaAB18SukdWz9exH159y3YFxnoQ8z1WKo1mlupqmg02lO/0rwFL2aca118R95Jb + cGKf6xC0de+Se5V62OxN3R0O15diL45l8/ORrvESzvZlfLFN5kj5EibEc4T4PaPubEblDd58+Lhv + AOCQIf2RI+uOxYH/wvb6JFSpNqa1x2QXWvUx8VCEwJ2cSMMzRRZa6J2b3WXL+Trllwo6LtXWTSfY + QMSfJrXiVn/eJ6yCkFMMwvHdKPSo3lXg24VynC0e+hf8DsT9eJ/mWAYR2nCDvBDT0DsjsST/p2SZ + MQhqMeY7oW2LEagJQ+GwE6rRlPiwQdghVQPXB2p4ERg13XEBUGRR58bae6aeAKeWa8ZiEkL1D92D + 7Q8ZQB0I+a+cH9AYSr3nKfAcx6Hp30wXiNHXFqrd6yY5GPTIcen4HDoUIBSWPm8AemRh/R9gVftf + kj8hJr2TyuDx5YKwF0Rhsbv2mC956bry0vW96IUd9Lt0RRvTS1d2oV264qFAGUi+YwCbgkkBRli+ + NBv+/PZuE2nv3MIDXvnTtUVt4MNAc9BGS5w+W8pZQb7TQc5crbEjXw3NBITn0JtsR34P7fgyw68C + BP3vbVSedIf52s7aXxb3GW2y8g6vb4hO+qYr4TgRSe0qX6/w6e7Tbyd7oTTd95d20KOYJL1u5JMR + lCs+GXpKVpGLs08uWi0rYaR2NRHGezlx4PJg3hguopDJwCltZsi/B5NaoEhLfPbTP/4PG91ffjwZ + j6aLPMM5WvDlyFHVvE4XOHfZDe5fmKtJyenJW8Kn3eOXFb7/nCz0AogDu+gWE7l75yLZwJfVHDyN + h0ZLhoXT1QZxHMROzLxatFXnaPRQLq+tJotGuxItpRDZaw5BLWaJVRDuCoz/MAi80Kv6ijCApiW1 + JKjGpxaemGZa02SdXXObSr5K1/WA19gO+hEsTJptJQ0wu7ebovXTt6zmVOraJsfS9w8dJl85TgT8 + Cqd9JsTJRBT8zkfPLi4u8yOLDrMKn4W9ZYlZUXy4zQff5tPARcK3mxbTlAjfOvh2eXd1KKSNnvxf + URdtHs0+lJ6OzbElkHkw6cNlAssPNvoyx3OaHTDrlmCC1f1vEkjRXucg8qV3g7G4b31YamLq2RAd + aH4NeibscIWqa9VscmMVvFTENfH4+zJphDBiDtW1Ch3CASQIu7ek2wnM0fkBNUkNq739L8pz33nw + HS5iv/2FktSNVaLHSj6PAgH5efEqOvNf2G4fyE/ZxhDyU3VRhvyUD0kCv58mQprGsnUziporlFyV + M8W9jFHoYxW6I6vz3Q9IstYgYQQ2LzE/D1P8B9XOD3U8PgH12eKqox92TMn+eiKl13y8tH3XXE+k + 1430REG5oifSU9qlH/94W6ur47lRpa5O8HISOnBs43HouAz3F082lJGx4kLhWWvV+i6rdTIJ7KtS + FQ5V4UUoeAUcqwjnq1YBS4tMOYGPjS+W0GhJC/yY3dZL9hTEK3k2HaBKduixqDnPpilnJ/Bbo5o7 + afWBtQoiz/HCqsb4th3oyXZjx2sJJwSpIHDiqJpOU6wQ8OtbVYlnIgcr5l6Pl67UIMK8mYvz5u+v + dpTgXoHDtNB1W8fx28CkmM9Y4DlxKSj7J289C8+PwmJy3cASs4KMoGVCJSXOHlqDkVt0Lpwer0Qc + 5ZWMZ4D2rCtCXpqUx4jJWK+eIs9PSHoJ/KJ1z6z8PaCfXTh3nPHDTpLzPa4sJvxptl3n2Y7KSsMG + pcUkbFbP/2+GAEh7ypby1oqU88S3X9hRP98Jb2LsOqEOdM8JfyYivibwtZuHRblSSNkrsuvvpT7Q + d+J55DuJmK+8TPs72UMu/HydzrZZE5L3DrsEhR1S62l/Y8QTC/kyrHLQPJBDSiTw5YT/h6837YYB + PN77ke/2CnvkYpnOhiA3YEGdKJZJbKHXIyGcv26axIaU60ls8JQk1pOTy3qNdjeOagnhURA69jgK + VY32UwUhIVJtP/ujfHn58aKSTcBBEJAtwmuf3YLD58ewF9LblArCzhM0/15Dmymmr6hGInNROpf4 + u83kUT5BQ3SR+ftpyjCTi4e5kVB7Ml3XhVo+aBy9Lj9GdeQpTRZzbCd6tAw7Jcvx2jWIIiFkH1js + CQ1Yr9HjdUjNNFLrl1owCzdmkUAX2pb4TH6Qd8+OqQRoB25MISiHFPWwIzdStnv1gX0EyMPkODLd + qo1sKsQdhF4f21Jw8d66L5jXS3ChJqaCi+hAE1zoGbGi1x9P/mM0zxCgRJUWbHg2+jD/bz2A8h4e + cFnFt6m2YOD5QkSlFhj8eJjx0ZjijnhMg4hOs0oxv6KLyOjLhgn+cm2fmMy7fAX0diaIGMecMpuC + rQogvt3EHzV6S5oomU3sY7sUob6DffMepLvEpbioQuW+DV6wXiZp2ca4CpXoQq9CRQ+J68y312m2 + za3SbKzupkutNVY0iPzYgv+TH+Goj3BeYeJN2O8rRCPjz5Cd6N8hntKHvJlQKtUM1IFSRb7Rs+kC + Pkjq5kdW23vaa9Z0tuImdCcIY4uSMm2VVAcCEkxSu4nl0NzMjvYRszXkZRFl0BsPy0XoD1InNiIH + Mv8C23azMzz9MWh2s7JIAG81l3KmzlQ29TwRoDCtnTUhUjKbkkavp2sQBicJIizodOV2eWxy7QHf + IgvzWqS65MlqY664H+pDJZCcykcY9R05VCqn7dz1Qzffl9iOYnblXMxZtiZEk9V0M7szXHAnChR3 + 2KSr7lY8bevw/E/cZn7DsrQSa8C2jFXUcwC3iu30kn+pian8KzrQ5F96Rgy85DuzmhxqZSI8qjlw + TZ2bPycMeQ+o2J7eSROJ8iBPpWlNv9hTOcCv4U7uJdSoNsYZwKILPQGYHpI9KMk3ws/+6eJSRM4p + nUqgZOoYK2fQwsJmPEbGi6nMV2jTbSuaJBp65Nd0OirR2qmrcyYeUqIhzy4WvoMCtROGU72xrh9G + M/QrcV8CSRB9Sfwsr82PqigfkC24mI/+BMLSIuNa3mWYpfQ/sBOHqN+5289kSss7vPDGEIBvDld+ + DysGqqjFFIZ2ieCBfJsBidc6tt9Pxac+3E5ekKIrX/n6hjDkeyi9YBO09y2SCeYxLFFJLXhC51Ib + c/hyHGTUF+RBtOkRCRnVIB7Ew1pRx1LWIoelkfjmFeTvcmLUIY3L48O7wvbjQRyESgQZCOBhD/ca + 5w8R+ZEL8Ll9T59H2Gb7JmcOkwM5ZFp+TDjwby8d5pjDqtHrZoWLiXK1cDF/SoLNf11c1mHVAp9V + 6xY/j1kIrGEcs8jDdKoutMbbNdCvozU+OZT1A/AaG9ywHNQKfsxL4IgyUyNf3cFWgzO8AqpaBkq6 + vEuvU5TG7h/WaTZD+9L51cWEHXFJLVt+TdYc3zfd4GWSKQfwRL6P/U6yVbIuYpL+XH1hqxEvnYLR + 19hcH5Nsa129P1doYa7neVz9sQOlevKIneliloEAcygj6gHHWOUhB0GlDxtlEJFevjN5s1aP1HbI + lCUm848BHfl7xQY0WkOeakhATEGsHy5Z6P9rcmJeM0M0MKuaIalX62aI5wIr/vyCRRrLdF3PjSLf + r9XOCIB1wljgH18alc9RMkhvUtLEyqBzHMBR4k3ew7JwZzFMCI5Zlq/4834NY/k2mf6luaslWJIT + RV5U8hFE0kfgOCdYmjvsk1JfamXqJSi60dwE6rGUHB9mwNEX2jYXqTRubEll4Y/JPW7rXD9Zf9ze + MyvD/yDql8cI9csWpXW49e8bptPwtrUcxk4EsFbcxJDkyuktiq1YYBTXeL6VmIb/vRXVMPhdom4B + AfFr3g1IDFxc083LewA9BuLeaAAI/mMiapHIRdjHH+A7QbyLvlw7cx/GAAEMTwAQreU+HR77zPFt + VXZTkcgf8k3yy2RxyP0E3J4fsDnKSncgqsm0o0SwgGQit1oTS+jjv+BlSsqS0T7APzaZk5rGsm/J + dEYnas8Z6FmH7LE6e2zZpiBVsqdXSI3VU86e1V1zu862q74CeBBT3IGcDrhAknU2T0vOzX61EOTF + HEufT+iGPa9l1cbU6yO70Nw+4qGIezo7eQ3/e8fL59wlWA27YnKpmgPRUz9RmR1kLlQNT2rR3HII + PJybkWU/cCgUewHXKq4Umc1gPbJlW3Epo/AdO4zt8gGXhasOwHn7SUkVIel+qjo5igI64m/dNwHN + qNIkj6XQl+0lR0noYph/g5Tgw63vnm3zjavDtWknYAjENpf0ZgOaj4vSNlzS8iOlGLu2gj9mwTv/ + hR33YadFI2PTuOxEt42Lp7tVHOZbxD/Z2GlUcWq2btkhL/5re8NpPD2iT4UVpy7xH6BI2NI4/HGC + VKbLzsDpHoM9WP0xjsY8TBUq+PdfCBJ6mKSjXwjLjY6jtFZ2nexB7gW6v/gGJvu4M6Fe/6bCurwF + WCUgNupn7FKteobERrPGmNhIokiWfT4qAOby48mz80VyNMEQfLiTE4GDvCnuiUofCCZh2yLeyhPF + 2TjEE+gjN1JCPIRpGuBW7bCqE5rrZq8MGMOIrR3MpXdOwtOGmzlUcosoX3WR3h6ENUNBExUqY26Z + 5CbQ6fo6W06W6Ya760GLxFI9vTpxHScI5eZpOhmN8V2GkROuzWPl/zy/hK8xz4+k140cIYJyxQ1C + T4UT5O3HmtvYYXEF0YO9nLh+wDx7DP9EsQjLPJXHAWYOg3TkZhDcZFwg14EEhYcPtnd2C8uB88tL + Ho2eXV5+ODoGSeRhdDf9CouoCkPzfLXSoR9jHl6+vb1NclFhvMFUK9ymVOMaViArjwd9tEVtHx34 + L8VRleFBrm6XQ5ThtcPAA8mi6ppB3ffZyZE6Pppjh7VCQerkiiLj3XiNOmhlgf2oqFl/yYW0cGur + AlqYrC+mg3NiQxDCNnfAXiG8+6ckDmxoKAhJ9KhHjPd79EA8fmI4kcqp6lwTyYJFlPurC9d/6/RL + 81RtDDV01UVZQZcPiaU2nD6r6VmZGvobXYTu+wk780nYzZ7Qdt4rsk1uRcKBfv0e7lvzIDJ63Uga + EJQr0gA9JWng1cX7mjRgc+zXchBZ8PK5g6kx9tixfcaENPAqhWVcvpyulK2HBDO8Pb5OF3CBLh6E + UoAHSrJyzud5ZcX5PJWZW9ecViVvX4RLnWYnJNl9f+BGv2cnsxlbHZUjs0uuaX6Zv1othrjMQSzy + nDCo4XPpsEg6yoKjB2mUqnRGXsjcuCoZ0JdP/t/iYyelj/13TWQu9+bZYbsgApw2qmOCDdpdgbMc + YGKsRPKq9wa79O5hMYMtkC2zPbqN9ptT6vZ+usiWeqclE8DOvuP9+ob9vkqr/Yr9++liQjbsh/8B + pnG0awiRbTKEGl52yQJIg5KGPw2N27X9XVvIeoon3ULWJaU9B8tacNtBoOVEaCaJvUIf+QS12FX1 + Wd15A7aCqi1BZzUA5vrxIuhgAeDIOeia7Md9jL5wMOI/5hPaYqWQzZU76M0ze3/Pwd2ZbVzkofWe + +nLl3l83TJ+mn0hxvIMw/75fOmzXRh98oEFPyr++DD5xPLQuO3av6BPZyDT8RHWixZ/IpyTT5neY + 2suLeXfk/Zi9pfWJ1QxjPxoOP3CvQJC+StvTyAAaNHXHtSl1590l82NzrYteN9K6BOWK1kVPSev6 + /ayudbHYd3UbrP3yucdC37fHHovtQBgMLoQcAqKUDMpW0d4c5rZWbETd/GPY9hsMYp8uRqfzmROt + impHMkr9bg3DbMgA6q07eSDu2PGj4ckNEKNuM8d29rGhWHInUWrDq0v4rQfaIX/dDO2QKFfRDvlT + 2kln7z5VdxLGlfo1tEMfBPnAG/tRAFot7SSZz4IpI5pTlLbC2d2mrkOTn3c1RViMRaWiUcTaqiWB + JsGwcnx1M+TJGv0qDfE8ZYt2yMJWwiDvwwGpQlXTKJsN5HYQOHGLFqvGaZ3AnExmQuk4eQnSw3Qp + Un90tzY/crBnHhAzEFWDdWEHh5tgez+ha+JmuoHP4moDF0VGaAxfaxllx3A88zzB/z/iN4xoyt8s + z06loJC+JoRVXS8ylG03JUQyCzeOQiN0I2aJmaFLvTx9/fMUfBbG4oJrngGzmKBGcJWQImraKBvU + vR28zJDHKk1rs216O1NUWuWM7bykHzE/zbPp4pViZG0r/hTr/5NLdStIDRagSF6rdgZpsqNcz2Wx + vjOucfNnB8TsA02XS3JlDtVjezSQ9JyIsi5SnmFXCk/ptz/kraxyzfzwJHzB+uAYqTamoTeyCy3w + RjyUxVtr6IihLSNrGv54MV8zt6JHFP0gDB1zJbSnQaCMcfyg6xN2vjJMlXN9oeWPUE+GLBX1tEs9 + /Wj8Snk2CJ/7j/cwP+a6D71uJLEKyhWJlZ4KfO7LtzXdx/PRHVrWfcKXz0EjAgVi7Di2Fwqkj5P1 + LUhY+XY2w9zHcqjaWKioXCS6KzuEQE96P5liQ60pn7ZZCnO1WCCLRaEJ3svx2sW/iwogomGip/6v + ppu7b9OH4936FIy42RGFe1KXnitSaSHkOrClXKcqO9c/SYUntbgR/DZDvxPFoeNV3QjNn65J0r4T + tJRiKY+5SrE05BYRHWul9CFcWsd2im1+OdeL4N4Gkf/X2VwWHiJVVsZjsSgrQ3H49cnQpGEziyYu + ARcdWtdMI7qbIG6WEsHEUAnYASJtSHP38KJApFZr7p19B2j91BvIEwWGTFiE0cV8EMHHTgoawhLN + bIrEuGRBj7oV9LpZJAZRrkZi8KciLvPstB6J4QZRNRJjEkbw3B+HkefYwpLD2/KgOVT/SV1Y3aXi + jHLRoRxAd/Xx5PJM5d4pO5yIg0xm9RvrejsfLROQUrUrCy0lbZETaFOI4lrkBBJCTNQKnfZaD2U6 + xeVHX9AUTGkzr+0eZaBphHZUveeS7xk/otXLLYqqwQ5avYxmYl+BhaPSPgeRHocmsBna+oh166Q5 + fQHpUCEWtNq1BDHr6n6ySL8kjdtCjhlvK0Ef7jcaOuwk0TVegetse3unph/0A1G/Auhoewt344Zs + Uaq4tYZSjapFiuBHWPcimWFSDzx9prYbDkVsmSOsv1ZkOWZyG8tNYeEhUPEAfsgGKHZpy+qmpfUz + NYLxxcW3d2+JnmPan26XVQW3T5lsG2hI0/1g2ratULhvu6xsFtpzuVjAyO4oxjFRJYz3Qu3dBy9K + 3Wuxq2vTkvGZtvZrrfmBMBAiPC516Byys5m8A5nC7fXfOS94QfkeuL3Uxhi3V3Sh4/bSQ+GJrRQh + eP35DYN9JnNXS3GxihhCMPqBjIv9yUC2w5a9NrFOP5JtRG4PSl05vbRjx1xEoteNRCRBuSIi0VMS + kT5cvXNrzi5+VMoikv9y4oRBGNhjJ4xjW9S2AGbHy3reg2bIsdzXyWqarukRsUuO3pWk/Ofr7Ybf + a6MF+mOwuifqYujtWY5gGE4lfu0+na3hnGzgvKYoFcM3gfS1kdhfH/I7t7n0rISFILBivQKWE7XK + BlHkMFZzp82n99PbZK4hCmg1X4OoTdCKItD3gqAibbwWmR/31xJrShM4QGxuEThixw+8oKqmV+de + I+bEUQuxyGd2EFSrxOKqbXgicMf4nDaSkRdH9Qq3yT2GM6IwAkryHazKIrvNsLQtppFpixO6rUVo + QTgPI9//t/Wh8rkquQbtByDLIHiLCJKEDeKsyJco7izZCMaSLnNEkkRxbA0S0IKEpPstXVW0b1uH + jkuIwy+n9IwuTuHps4ts4dqrInuC8nq0fX0LF/V9aT9beASV2xCkI8I5YSLvOeUrUl1mY4kJZxXf + 7l6HGrmuEiumFA3sFw5hrdOZaP6wbrnNiSPi4jumZxgq7eXhaLXqZ7sPCUfeR/Uj2ENAJs297GjA + UREbgxVI77eNEOkDex0ORHrbJyrXdVxyeX3Ybq6u4SZsR8JpktkHtRbZHqHI/DlBvtQNR9M0f9Ce + DDBZttqrNf+Meba9VpDlv2kA5pzof0srRS/qh2PsDOKxPtjK5dpx5JaPfeWW70fMYbTjgRjyjl20 + GvcvI8aKDZvvp16qh/t/cy5dnr23Q99cuqTXjaRLQbkiXdLTmtktrCZAhS8nvuv5Yz+UtdLaELST + BVCc/S0wXhFogfENIX6NY6YgX13mSTe8+y56YfdJs5RNTJ3wogPNB0/POpAvSmJ3ntyuk1uVJCL0 + SkUXAS/gjkCtck8veQkreLoB7qBg/XzmOmXRqWVQO6/UHxQRLJfWVwAnfuC/sHuWLaQ2xuAmogsd + 2oQeNlsKGssXCiqYOutHkVXap4HUa8Me4cD0uqleG9bDgekp6bUXJ5UgTrR6u5EdVRXb547vRB4b + 41cEO6D8Z2vooB7Iq9sQKsG8rZbzlmBeQkxTSWGNAGqaDzp0WKva5IeOE1RVsgPY1ActIK9pjFim + GeVR55S0sJKlBLGXpvf300UKCv/FBfs9P9Zs5TiNQOb24RjOG0Ke0YFMczi3yzzltQmBxnq6msJO + wrQxkGPupmjBnq0T6HwuJ2/9UNQvREv5xXzKZOlJfLZ6WG+/okKoJRpYF59OA2XtZq7LRULPUXJ5 + scZzRJOa9wZuppobDVlv86Q6cmM7b+BQUcj76WydgaJFU9hHo/NcUZVtlYlZ1itAmiQqDB4A6keV + plIKLNCQV6BeGpOrjmSKkHqcw+w0/w6XsRcSGpnJEe9NWYOypRjH3zZ36yTjTnyzPhqBpA+Nv5R3 + Qijcwa7dQxql1w3dwZxyzR2MT+lOePfxk1OTS33Gau5grMIcutEY/nW9SKQxvU4LaMtRCdqyFEp6 + zNmRzvKQ/2y292j+2K64zAI/vnl//okccRwRV6WV3KWgoXNcJOhgOh89e3f+6QgbJmtho0dri9JO + q4gWubio3i03ztDpJsPed1Wb7Va3BaLc1fPe3JHwgNu4jaJjY/nlGr6QAZKpnlLRnqsR+LDTqn7n + 0naSIfaVxYlZ4LVZg2GqWeT92xp0W757nG1p4clTNyvoe5b4uMLYok1D30yDX8VE9TMw8Ho2ffy8 + 9YHKBprfSk232iFoxU22GzeIY2m78f8xmcJ5BaoYLpgts4YjaUhe3p2RuDt7VUZ7bV4Z7XVjZbTX + pcpon04v6qFUHquFUj2PIpBF/HEURbG0FWym6QJ9fsogixhTq2TFDaxM3FmfZquGqN67KfAYFGEm + wtWCO+XTRBLSo31dp0URisKQhXZYu3rMrkRDQqoWuz4ovy2cV6NV3Dryk1vUPTfUjVBtBIs43tYy + 8ZzRpxmHh6sEUYW27obc2Ys8zBhcX3WRBp6/az6tE45oX1LRdqz8ePTtLp3dSc9eXhuACAcWNpiK + olmqMqwq3JfnCS5Mcmdx98kaKGDkH8arLKbL7HbK0wy5azvbopmqY39beHDU1QeSiyVmpMwC5aD7 + MdIOKrtdb7jCykjVuD1MyHieQPZUtjuFEnNIHv7ht2S9vQEYTCRA13cwnX5uCnOiJiP0g9qidbYc + OAvH8Ob+Bbw/eyQEHUyufZnkPR/L5He/xz1Pr5smv/v1e56eipDpiws3akh/d6Jq+vtz3wtc1xn7 + XujIen5XhS4BjPVinUw4RuhFgRct5HcRF71aQWe1Wz/HoigJmewbb/ogatO04gjOCPz1kTw8qq4U + fhUfJnzTmJeqLw9aM6O6lSCcAjtWDtbSyI1uYKtn6/GocGvBXH72fvscvPjsowY2yZeXHy+O1bnI + pXFvugBVDO8leXTgV26FvVjDRK8sWtwiRd0POH9wKbwRiawbrH7lL8MAlpt0nW8o/JMnpxZoYPBb + QzRmVyyJS5EXhvNqbmp1qeb8/V5o5ZIK+guwibY6Pa6xA0sEUWxM5/d3+7d98kOt0+uMeL/kSf3K + 2su7PvApqZtvxdH3UXkzmpVp43rkk4C7ddHoU1tbOnnVAgaVTX6fAFNepqZRKY/SUcOREleIY6uq + oPFZ8MIO+9UEpTbGFUFFF3o9UHpIF8J8CxrGNm/0H8rW5Hkj1JiQUfaZjBmt74w2v+/upgP7KOIo + FnkMOAoeFDzn+kRDcHt3fqB0mzpMmsi9qJeJHF43NZEj5bqJHJ6KcODLBjXfr2LfoIkc9DaXBWP4 + l0V4HnfgKME9uk4S+H2xzWABZ3ityQP87O2bi6OJSHBQaJg1yCWshQQydAoLuH5QaSwYwm+QNPzn + fA1fWQ8i6Z2F9QtgMDkhXOy90i26+e1+mRPKVLdfCR91KBxp+7J7pNfT66a2L7ueXk9PZYz8lddg + +/Lqtq8gclg4jkJY50BUuC7ZHeqGBk3jPgYOtQCunq0eykZ5TOPabDwVnKzi33OvtpurC62boqKg + TWoOHA8mu7qnmaodms4fFpijClxyMfGKkqIjf/IlXbY7XVw7MumyyGanGeJcssgIL5H0fLviZSm5 + RDjJakz7jknvsIJhRZ627D/Zl3VhOkNjzQRlMirO8O7xwpSjM9whFm7YwubEUMr3AoEW2LSke1tr + lGgYUQiX8GwTXbwOd4Y11AF994q42iOtzKINyoXs6ibu9fVIJWyd2mInHNwJX7+9DqUZox60h8fG + h5LXg6vkXea8YH3QTmUTY2mXOtCFXf6MWP0qT7bzbIIBTqKCQpEiKUMgu/44+jBN2OjZxYfz16Mo + 9G3HDY6gQcJ4tKRL0ZKHpt/6vgj24e3VSdkrmfPgioYD1edznKhUha7+Tcl6381FxSQuLpnnmsse + 9LqR7CEoV2QPeipgTU8uq/l5mJKpx1J7EcgeLHJR9kBY01gXx7X0I36rfE31ZLo/V2vosh7ZSGaD + RTU6I3RtI/F4+CiPJyBmf6Q5mZaSz2bZMt+km62w1cG9PAnsK254ybN7jJSUQJLH+mIgsHSyLluo + RMSiE15xMms0G4h8/xOXiwWvmMjvh7PykCYLLEG62a6BKb+Irvgbjg99Q8PcugR1zpeSAMx2SCGN + AeU9YLMCc+fqM/XGTwXs2Vmai3OxVsWnZqB9bUbPrsS7Y+qTfpQEjszNdDCSoD4SRfNHDiVwKRpl + fYjF0HMckoPEyidlyXJAw+GjxLMUddWzxgyxJuMW3EbCBZnITx6P4Ghgqpnw5cKfZtt1njWk0zXF + wTsKv5wFJ4y9sFkv/HLZyBS/XHWi4ZfLp8RG8XQnaxTcgefcltMd2v6gUca6zo4jLu++aLCdixaK + mpxfp7Mt4uNW3bd7prJHAUkYNMjDIaW4HoVNdik9ew956BSSyGYhvS+EeD4VBfRFnt4uQZDbCzVw + MLvMU6iNLA9toPKSTpjTs0Z70cg4N0l2omcniad0aLc8IwC23IzryA+FsbGEAtr60ud18rqGF6q6 + 5dV6Q0eI46T7qfqoXObZLg8+3ehz5ZRxkCbEzHbekwyVHLQqHguYT7F96QzYzKgzcbJT+qeI9f+4 + ZL5nLv3T60bSv6Bckf7pqchievu5Xlg2qAJ7Oi+fh44fxPE4dALu0OhKYvrvNdD/m1QjcGMUf802 + 4aCFnuQWiqQ0E6As0IctyiamkozoQJNj6BltJWAJAj25SUG20HmFAHcZKB3pOltq2vMVtiXDBHMi + BPpwjiwgSMKN78dDWCawPV1I2d5oVUCDnID8Ew4jRMWOlEShKN6BkJvlm2lVpr9+GM1Qi+GSLkFw + RQSd1T63Yrq6w75c12Ge+ijYn5yjU0I49HmXLAqbcT/KgxqDCHiCZNFpT5z+HybL1BdpGBOU7TvM + 1zZ/f6OTYjq+re/h/UA8fdfzGnffMySRZt8x/zA5Gm1Xm+mXxNB2tjOEzYmFu85nYR93Hb5u6K7j + lGvuOnwq6rd8OK+necEFWXPXMS8MHSccw7+R6wkf9ttscZsq73MRx6dFY6E5Jl/BsuBEEE4jP4mz + L6sMNlIRPwzv3m3vp8vR28uTq4vAl3HL8mrk+FkrYCcF7ouiB21pMDDHsy954ciGT/22sk54QQrU + R8ajWZpPblsGXnY7nV3i9iaqaonbR3ssYJUKKBVVfnKWpYtkPsF/VE+vthyYm0ws0GpN4Xuw+mku + DF4c6lnhYJ5dTmBvpjg4hYTJe6ARyt2YW28v3xVB1LHjD4RDyd0d5TnpA3LYEdYW2rEAA6FF5TbX + 2QPCOHbsGmNj1cCYjD+r2DW53nDr0uTDdH7L1mZRBa7NSDs6/ePi/FyBZM6yacOnN9mZXEIn/vDe + Dph5rA29bsSnBOUKn6KnQrg/f1MT7l0fxY6ycO+/nDAvin13DGqN7woZrnyoBVoVQZaVUaPghOkZ + z68/nhyPpos8U9WVZF2lZyIC86iAy8CrMFmAsLMu++KxF54cWI5FuEhv6lG8+2WJgmxpy/jdvu6D + U5VWAmJp6NYSOjE5C6QlUCnawBTcIGwLWNBoHo7mp31okaxTYJV0BSk8Q0CE7ehs+wX23PSokrpj + twVIRE4UemEVDkItcjktRgfmc9y2r7BjJ/Dd6N+WNrfl3blzDx2PeAjzlF8zKug4Xd6l1+mGohsE + DZ7K2rh9ex0BCw+evE0836EgaNuu4jzA2wKrrzwzxh4FWwS6Ns6vMZXDIfLMsemGovNjwOmkDgMX + ASXFtJydncPbZRer6QyHG8R+VhLvYKlAh4PAIauVFOpM2Wg2PJfM6AbNH7tgwkAgGS5FAP9xyeIe + EcD0ulktIaJcrSXEn5JU8urNZb2WEOhJ1VpCk5BFwPrHoYM1Q0gq+dASnfbqzcno2at1cpNghuLo + 5GgCs7ydwYwssArkgtdfTO8xOp6LsRzBRCLXI1OX+SEagBcXPV7drOuih3w9WX4F5rtKJs0hKlLg + LMcXOixsL8DgIWhuPbYB0z1reT9+5LVXYCgTKuSTckqEnvNbuYDbSBW20+18dLvOvoEqpckGjFXr + LyjZIGZu6FVlAxTuv6T1/GA7bhVsmgnJoHx9NE5beGUzER2WSEJM68JP1Ip43Eiypo7p1PxWUUpQ + s07LZoH7UiYM1mmA/T8jxYxrtbhPpJs8773h24M/a8dLAWah1wcPtKprFDqeJeaJbuKmGTW+0Hun + XBRGN6rFyPOzDHxb/z9779bdNq6siz7rX+jlnJmMSG4CvMdPjnPzaiftbad7rt57zHEGLdG2ZmRR + W5ck7l9/qlAASPAigSKdOD3XXGN1EooogLgU6vpVE2ArHjJ8W59AO92xfWJUbYlFYBX6MrXnNrvV + U8cyQ6pWOuiSGKVuIC5D3hzeov4yvW4Z8iYoV0Le8KmsZvfpfeUGQoy+csjbOOCwCM4o4Iz7eyBE + lyug/x8CIRpwKmb5hAIEXBGl++c5yBmOvVWYXrfaVZJyaVfRU5nE8aEq12CFeHNXYVqz63MWjBC6 + P5YRQBeFKPaCZbUmzWlUMMBi6Ml9Mp/jbbwe6ayZkWDws8VktpzhhsPnIqDvmNgh8NENRlBtiARa + TPEVzIUVVX90BJyw860f1pv0XmrceNiv7lK+VDki9zXCERIrJTs1ShcgpCPQVG3JqVZZU02EqtNQ + qjzlNmJqGSSf1Els3i77SoiPCmlv2WJOmJmF9xUNmKxi+jfVO3jIsN5BpqsdmB1NMYZydr0VMwJv + 4aa023H7NtsAj5a2p7DIkfaUcglv9GYt7tLVbFNvAtmVJ96eWqPM4njasStt8i3tDTJnRBCYzpDX + tNTBXclW1dY3EuvEGejTGNC3HSGn0VuR9oMo7ctZdNUi6am1G4x1lalHTJps0/wxYgQHfUmTlEDx + +hwu2hbeYPG6nTeYKJe9weIp3fuvP72uwpnEEa94gwOfe+4o8MNApm6+Hn96WI03wCGfwV+eD6dp + MnmYi1Q+031brLBG2tRoeA9rmdzc4MIu0NaJ5k6lteH6IHNN5psC4AayWo3fqivX3ieTO1DAVw/H + w+317P9u4YhsQbO8z7AsnbD/Z5gLQPf96820vjJyL4FdVePWiEJ6b7FyoAAvGIJCZZb1QdNYk0uF + OTDXsE3KPpVxARm5HhmTxV6jo6aBarGie9Hg4zqNaG/MCRiI/uxfg59oKwxww2tfuRtGO8ra7w0Q + EvMsrLR1a7JDYa+L8TmU1lPxXA/6MPQWLMZRPaGmQ9VSSvEdcteMNw+rbP0wr9u9LQC9FUP3VUFD + xuLoiDltQhrzRrYlDXUnRk1D9VRWocMS4MktnAzxiapocTF6u+GVq/m9b3aD4YygFw52nJk2LjOB + jwkURBIX7nkx7+IVmf1V5hateyAVXX+gXOdybxWq1skgB/ewb9xcU938QJLWGSYY81+VUduvXE/4 + ho8s+PddRvO7OCRzQirFupGU9fe1I7sboz8ifqK3pMGLDgX+j0hIp10Pl3dPRAPjzNtStZ7Wg3vo + 7se139rdvcIRxTsc9lXqxqVaOm/PHd6iRiy9bqVCScolFYqekgr19vLKDKhlHmLPI/xVUYeKXo5B + d47DUQyyR0SX8yusw/dMmEGfG/C+ivWh4AcyBjDoeaLvFplwiJNGis3b1bqPggYsZh4Pg6oDV4+g + vBPr4CcxraNBY3AdLw6qmM7N9OtL+kQVx+jo7Kq+kxyBuTKLpbvPhGRuxMpW1GsgmS3XbKSjhjew + 75J7kGCFgRIWkQkDpaiJKL48HaaLv2B7Hg/TL9lc2CbhDM4fhLUS5U+SRc2qQ7u2y7UoA5Tlmpg6 + 7iNRfjhHBVMneqYLIwxwmyvFiUUh/3mEQIIY3rsDHo/sbgDiH1cs4RAYaDze5nc3MYWdX9GrdPNI + sgN57y24k9V6daH3aANtcgM8DRTqnkSEUKVfB65zJAA/7JOvqYlt6rXswEi8pmf2dQMlDdSoPNe3 + hP18NF3qkGKNbqSsIK7vtavDqZrYWkBkB4b9g57tA1jVbRFf1eHOYPB9K1q6sdqVfngSHjnttqVs + Y7svVRfGxpQPdxUs1QgeGh5AQnkIFG3gNJvnBn2YSx7Fbp91S/uD0noiwR4epdb817nTKm9evG6X + N0+Uy3nz4qmsVnP2wa9AdnLPCSuJ864L8hkbwWIGTGIWfxKSWCYiis8WCxBfP2j3vO99fq0K1szu + /SoCZ7li4aLow8xT8lR15xr9AjQU3hj04ARuyKulygwhspy2aUQy+YEZo/HubHR2kSPSg7jrBbwc + vGn1TfciRMDE6izl+dR3ZsZQVkMkaKLH8AfnSz1jxRyTQrXsGxELCHcBeRSoKh5sagprMMc+ENtE + YwX4sdNDXiGDr2ZFyeJAOmL2inTkBItv2bkilW6aAysCX6a9wE8oGJeKuPSRFv6jYxRqrLb75uuJ + o+6oDcJlOdEDWc5e7QV5Re1G3pna3gxN7zEN7eXFKJm0g8NQjayhvVQnJrSXfCohO1cpagaVUsDD + Zx9PXl+8eG54kRpf/j/i5X8ZL28eJDoGDyX0l08hz8Idh5Xh7IC1GnOpDiNn7/c5jP7uehrMl5XZ + u+GeRYGfa8PKJN95dLETCl6B+zAR9Q1z8rLKZfdeQO0kLI/s22xKP0C77aSFfcZS67G3c7fEV+qx + HnKgGMyeU9heve+BtL0zo3tfuy8xidx9oIXBi5nacBnttcMtDR7XaMveK8aOWCtIo0Ira8xl3Y0J + u6weS2yj2VTmxV/B35bjD9k1Wyq8bXnfDXb8hO2FmuzHBGWE+U3qTKj8J+u9B43F4bxOVvBNmMOz + 3IAWl+c/t1v+wAui4jVcYEt70dVbuPkP72QPRmW3cFsgQBUGG5OTdkJPMoeMubgG9MNsMdvM6K87 + YBwb1rZz8O+PhtIjt6vKelti+vx1NrU08La6KfIVkKW4MCp9PlzZZjN5LqepqsnN2lNOp1fLexDy + 4ig64d4jNeObQCYH7vLL5m6VYmnI2hoB+z0Wh1Bt5Vb/Xqby7+mb76fyQ291DDxX1X5y3Va1n+B1 + 29pPSLla+wme0i367uIsqtZ+8pya2k+uy302gj99EXW1K/NuuoIeajLv/o5wk6DrsR8JN+l5qn6o + 57eqHwqv29YPRcrV+qHwVCZvvn7v11QPZdXqoa4bsmjku14YyuTNZD7J7uBeMaXn2TqjIIHhH3JP + nUzv/L43VP+lCuq/pj7gw+FGOEYh2AOvT+igUtVIEleqdOmzAycI9hEcnOybbrNqNiI1LDLhO5EK + 6wAXO68m6sUkOnthSTmvxnhvMv0FGP3+5m41R1S8ZbK5+5rYGZW05MpIpgEd631Bq7aW1nsySniu + 5wtJU01Tra1guhXyDxDF+7vdSPsyHRzkAGzHz/q1EjgysHf3efqOOrUT8VBc+3/NFpMOCJ39qOZq + AwZRqDdyB9Rrz9dY7lxUMGhlpi20skZz192YcO7qMd0rm9kNZ1LUKIZKFdQ5Kqo62PnrMD17y4fX + GJUoI9sGRFl4dmOvx9B/t0RByMV6OF1U9bakm3nBAQodFqEXm1+lHAHV3VPOm10Oth/tuQHxPgGB + MoZF7ECTMDa88iTWjLwH42DXjr4DH+qNc+RVIN5HR07Qjm2IJtY8gzowGYZ4Rtwi2a6YAso06vCh + GQtEVxBOpinFjZZzhVo3wL5EMJNOHJLq+C5KfdRz0NdI0cQmUZ9shQrQgj0ykC3vYMGzNjVf7ApO + hASFSxCvyRLj/TeWYsfT8bXCNJFzqEjKBCm2s0v1JRV5PiPLQ3mTVfdqByamDnaok/54CHey2zLp + TzayTvpTnZhJf/KpdNzS1yqTlKpMWfzeQfM7Zjdo+HcxPk5crsRRa+zg07RHc3tMd6hNxJg10ZCR + H4rM2nTjfD/94IDyYYfKH5bFk6z4kyeDKCw2VIcDFBGo1jl34hagWuJ1O1AtolwG1RJP6UY8uziv + gmo5XlgB1WJ+4EXxiPmhH0t5+2S7ylaJMpWa0NOEHweiArrJRBzKKh3fzyYwjyBfIxfcbJLJHfK/ + 9ShHxJOYNVfzmb9UmPiE/yp+PFvOcy+dnn8RkwnTJhAPZpscYA93uEamV6Dr0skx2l8bXvRWtgIV + vmdY/B4T45E3ohCwkHsRiyrWJeV7aaYZNpXpNmlWo/92lOIWfoxGmAM38n1WBkwo4OkWYTdLAIlx + E1E11kFfu+cYcV6Xa4JRToRDaDFFMIVpYajaxJIskiVdfwg2nawQSwnR+e4IRLq6D1m+EfUeo21Y + 2WWlHTbAs6XB15hLUYQdHKp1XO8pO2h9IlC/Xx6XWKNVL6Ba1vn+EVXSq2dP2CKLZ91acuYeXbcm + huYhEQMozJF2m85oY80E7oOYBKA8PWgOfMbJ913arphbp+FO9xITJt2QwJ7rDtzuudu51kA2Mskq + JE1b8o9QrC5iMalDNFeWEsmeRvsyUMQ0NF04lkMIDc9+WwKwWQgwKycw/SvbB+D1Yz3ttTloP9xd + /yQd6z+XK1yWkDpnDm8DGoavW4KGCcoV0DB8StLy6evTagkp5rAKaBgP0Xg24pHDFAj6qVbtC7nT + iHKPiQlUxQJ0yfkmKdUCLxZekdUeBDw0zrEUalQMVCLKi4pUudFQhO7fpguRMlSoyzBS9SKg+2m2 + RYsESr3QVID2r9Lk85qwSBt6K5zo9NuEIp0kyWcf31w+l9IzCtUV6Vl8YPmr65Lp/aBRhEQ/JRzB + srRbS7q+mksUMxvaeQwAkBqXv9Xwq/LIa0Vxntze4lzKmS9UzjHJhm47smkytSLbJPPXk72fgUa9 + AQm49tNjQ9f5WFQgsNaJX66Ng6KEqlhTmkSn1bDyjbhvcay2Ug6ZkKHNJd/3dTRdZ98WGvzHHPjB + xW/nro514QEpOozSdKjxtcB/oL9j4cFRkagGtldAOl0TAQIYAzYpf88jUWmu0UNCR/Op/MUmjA+5 + gCDTyDNsyQh58vLjyXiaLlMUrjf7P65W6RSo67/U80XLwUSF3VF7hC3pxFKXMTnUXqO7JiCFnIYz + bzMIz2VuWLNR8NzdZ18QsvZGgPaDyIGgJzZTDCzEETJgsTgUkLmBmcKyKOpovm63mDXxMj1EHwd+ + SApv3vONbcE+zw24+NCdksHOZfiBeGGPXQspihSFMc1dOm2UcKxObjeKu5UinwBtSFnvQocqOKbf + sq6kelGk+nGmO5Gsk7aGpvN0TExcTv56mU5mN9DM/cfY/wd++TTNvj3oOiStQ7/70LpyUqHJqh/m + vVDtBzC1ryAFn8AJ3lw6rEWFLXrdSrmUlEvKJT0l5fLq4pSXY2S5E/mlAsXhyzGLWexHIxbzgMsY + 2Stpn7nA1A2z+JAKhB5+TWe3d5sh9z+/TqSSdrWc8JqYWVvLm1kOMizXWCpm9TPGwphzXnF87Ops + NFymq9kE3lsJqfa2rMo4oakzlKAEGONBAIyprCsWnHII9bGZbbZytoTL8TPslE2pJx9W3OipAFjg + R5gj1t1PIkZfqKJpjL6gjeU2PJqyGsK8cbDMd0O/Dl2hBLWWY6AUnTCF2lUfp5PI0Vf0M/HP5fjj + 9oYvx7ivPPrDXz43A4brJ2akTYyFyseGi6+48SbzLZrC4ZgPxLHR0cYRdwZyAkgurJ2rVhfAd/eE + 7Kwg3SHrrXuJip/J4N+danMF18jZR3k0FFwLK7zmnKvNSneSyV3gHOJWNM/oznkbSCYnhBQ7/tjS + IN29boRPdTA/nrOgRSILvW51S0vKpVuanso6mB/PKpe0x4JSFbLg5QuXu5HLRxhO4e/JhVrMgf7X + /4wqZD6DJRmozCRfJ44z91145IStgkNlG9voUNWFER4qH9bD1CWrW7gOtwVcULV7Ofx2TdHhUSiS + w128dDSbx/AFkPXnQE2EHWxyftDCl8wcSppBPlGgdv0g7AmPRWYnZ3FZoMxIdEChJQGpAqf4kq7W + 0uE9RQBVUZMsG67V3/eO+PBIsx+cQH1ABjTMpOj05PLUmkMDB6S0aZpPqzKQ6qi5+qiF74Ijxtsd + NWpjfdRkF+ZRo4fER5eTrQzFBs40h8PCBsW/iNBp7hKkHmZQGiELDaJYtSJ34DMh8cjCKLNFwVqm + E8gPLDXSl3zocakLqwHpwRpW+MM/oTIt3eEKfsB5YbE0iV6dvs0noxX2ruaHXkCfLzbc+PLs47sW + FB+nMpYem7SH5uNR5OS4DjNv6AzgqEWhTXrdNgM4qhbapKeq4Fal0CaLhem4nAEcxUEcjfyYeSwo + FBCfrra3GBktIMAnGK+kQaiKEGQKKzD5N+z3m2Qym882Yu+vt0u4rQRi02gIZ0QGf6LLDdumw69Y + lFPXVRrljTEaTBU8RABIFdR1PVsjesvD3BgLXP/b2ztVrIlI59HIsiBXTQHO6sumQ7w5ppR7vh/E + FXh5jAVMf0HLrvjbfhRIn5eKnBdsEQ193OuV2Ued+bwE+2jC15s95BnNTR9h0o7cpgrmDXQLS66j + 3p5hEa7t0Dgdz0u1yX2+r5/BxRbP3pemHToy3b11e+9Y4cHCO5L942synvBY7BDLrT589vr9CZNI + Zc+FQbDuMBXGh6XC8sKdjht5vcBfRq7O/96JGdmYkeSFsjbIJKtbPEvZkqtw2fLB/DkSj0hLp3vG + Dnhx90XMqVZ5YVWquJ47yTcUBPN90tQvQTxqoamL1+00daJc1tTFU6mpX51WNXUX/cUlTT0MfFCh + R2EQuwpy4uTVad2lcvH6UmH+KdV9BR1WVfc6Fi52TyP6gh8x16+E8J98uhirC3+CW30DuugzGN3z + /dzcgym16s6shVjmreLk76NT0O9B0ejCL7qhwz6RE9qbO7qPSgKkXACFDu66kJEelUfwjOFs2mVD + 7dZ9AkL4Lw0PrQlbEL+p8LTBlu6zL6kO3MeMHby/bHU2xZ2oeNL7S+aF9t4+et2KO0nKJe5ET2Xd + +cuL86DMnljsmbGknvNy7MY88JyRiwVIJLr/BwPaF/3EFC5WKik+x+rdOvpM1n5fLefBHnhyapeT + VRRMBJ2AN7iYGAh6HHZuxdXXvZdinJ3n+W5Q4ZjNpmvZkylWA8f3bTrIgwO1cpflJVjNGkps35AH + h6zfQOwYXYiISVTyrpAULSsY5rYEKU7VwIS3tr39WChw8pTY7U3LYXUiudOJElFch97L7dYa5L1Y + NSdWXoOiaHnHgcjkKkPwgeFNIRUztziyVvPehd6jDXTHarI4oqO3aj+H6iILFXZ66IbtKs6oJra4 + 6bIDAzWdnklxOwq8cCyTHS5ASh6/+v/w0XCaYRBj3lBHO/1+8Ra2pKMkarUVg2J33MeQNT6whc/b + iYPnU771b+fMaaGU0OtW176kXLr26SnN0sWv7ysZJJ4XmmXnvfDlC8Zj7gYj5mK6rJzUz9djISBR + buyvlJfzPrtHr9xW2ZYuPt9V8y7aYtdxzkHi431kFBtlSvwg9P1yRvGHk4tff/0V9ZtJApKyNHgI + 27RQ8eGqrcsXgPNjZkSXomfqO7NIlDVv86C5oLzsYHBVzv8qzVMx+qUIqDIW4LcYS5NDDiusu80d + +gwz9BnO16IAkDCWo21I7gHYs38uP2Mi8mI6/PPzii9HQ73kayEea6pqbg3LUym2OJ9w0n5gYY8F + lNxiihq+SHGGzcWWA9zEWt/zKN4fVwOPY4vFrBzeXXB+Tz1vurXn8n+SJDsmSf7d8hv9WMPpRO+Z + c8Sdlng6qpU1oI7uxkTUUY+le1bHAT6kyVr7HAs10mRpNPWDSRrUCydy3e9dZS5wZKQQ94M2kUL4 + umWkkKBciRTCp7I88m8laBUQIwMeRGHFAMmAG3E+gr3kxEWPl7p4YXIl9qpUDG+Er9escIIcVV4e + o+FdsoZpEcHVS+ClGYKaFCvxyt/GwVj8+Q2/9e5hvhQxlcPlAzQjLkiHg9LDZKNFmsn3kvnUiN2e + oR2GCjNnNdApraF4o4i5YVCpasbHgluPPTX48mcUvnw2RVYznRmf05QW6kUNdk4QxYCduZWU030T + UpKMmN9oSGWhz7kXN/RgruGuDsoFogsduIz5bkkaKmwkscLwFV/Id9Vo34jdeG8ng591+w7w0GrR + BpiCsLGElAjYPFldExZxTnf30Echo546aUIr8bjUzpQdqCt0chBQIU1RLlysHQydinR3nQykXZ6M + DlS7Ybv/4Ep4TtVWlS6+ICjSd/GKYhRIUB3CAV6X3qCl8SbAJj1eNHYGrO/Q726ZnRH+oMXFZqdR + dKC3b6BBgfCO+9F2nIeSe6xhNnDZp6O1aFJSPJ8/HK76BEypPjx4H7WLTdVtbNUe1YWh9MiHUuV5 + QE6EwdrDyfAuhT/o44rwvg3vGD2g7uN5opQ5i5zAVdeDajemdrPF5+T2UKDKH39/9FxJFUj6UR3J + DVZHkBTXy2RyyIx1vLIEMqhHEHJ32TzLF3M86QVZVzOODp3sMZs4giPN4IUuJQq6HHotg/WTuhtw + 5QMBJfqI+e3Kx8o2tl4Q1YXhBpEP63NIyv8uUsFCsJ7v9V42/klmUDxGZaPAVWvvh8ERC9qtvWxj + u/aqC2Pt5UMy+Xzd3Ki6V/BXHLoAqKD/qSHnxZjCdsWYQvtiTGFtMabwnzr25Cquqcbk1lRjCnyX + jXw39DjbncR2vYIO/t5JbBd5eIZqosZyLAwbCMeAYeWTEcHPJLe36TSvtb0GZXtDmBvwz7vZ7R26 + Pber2c0MHhXvO/X7WEaTL7cb4AHb6SxdH8MJnc+VfDidreHcPKyHN/PtJFskf2H+fyGuFzX89XZJ + wcSwv6YT5o4ZqNT3yxQR91eYi7xYzyQ2+uWnU55H/vq6atlPHI6njh0FpH44Z45nH/JFr1sdO0m5 + dOzoqTx2rz9UsLZd3y35fv2XYz+K3XgE51Exk8ui204lGwvwr2rQzv2M7gOYqmkCWwfjQ6+30/WR + CgCb3h9qmi2GMnHPR+yFMiEppgm35vAGpBoRqmcCWUeN8VFRzMKoUjGtB7SGpk4KoArFvT1b3IGa + SieoxBRYg63amJAGstnqNlnM/qItjsvX4NkO4QNajV5tifsZnJIaNIi4cRklucFZ7bpJzlXKWDhw + Ax4Ld3YyW6yHyfDiLvsG0q0IXXgYPrv47+cyToQ4lgwRSeaiuvpiutbI+4g/o4tbuGP1GJSzi830 + bLEeu+OL5wM8aoqPwbrwgVy8KhsrLrWVyBIqZK7mpf3FBroslAVwq2tn15zl4iK6/e+3i3Ywd73k + 8dW13z92ZAGKrVc33U4Sh6EUWAzJNnfv0QGngOmTPXTvjrfK/lVUfScuFrQggu0DDtRtGuSlX055 + u6JOuo194RfqolT3RTyk+/H1m5PX8P/vh9fIVVKEoYO2mDyR58pijJ36afj6eukbtFETi0NfFnsh + Hfkem4CGhckLYkYaVaM2Rdry1B1dpA1Pgcr27UC7a4aW47Li5j2Qjq9qq4vpO5BI4DtOTWSxMbRq + olIbztcR8pACQhXvbuUvgdZkM1Otl7XoM/ZFr63IddXe7YfzI3LDu7ugjPX8kSk/fSJQdg7R9hxH + RVk1sdI+rJ0ulW6yoNkpJqyKD9E5isyJHJ3AVJihjl/SHR5R3dMhRTxfsriF1kuv20U8E+VyxLN4 + Slrvp99OKlqvFwZROeJ5HDIWRO4oZJSRgvf6J+Tsk9VsKeZGFsU8OzsZyWwK+Bi4DUiv/ZQlVb12 + U0fg01sg0YA63xi7HEYBZ6yS/47qG27qSxND9eysvuvaxPiA+01apdGrmaepSRfLhuJ+uACmCf3L + akVl3PKgKdhKdTWg6TFyj0wAP6N7+HYVk44gfvB3UO8QmXwDbFqYneCz8cthv2XyzWx1rHS/bCsq + 7Yje1htS/lIEVtOP5BBEQPPd9j4hDfH1Ci6H5R0wElrOAW4zHbgTEgog3NK5RKTnq935Bho15XwM + iqMSDHPbDggGaPeiVveXXl8rmaP/Xh5NtAp5daC1J9dS2Dqc3o7cJ5JO2576769NCuaCLQ5lVDsn + Wd0ykdIG/TBsXQdUtrHVBlUXhjYoH9Kt8XEMGsPGhCkuuu7fnX70x6t0Tiime14udon+fCxvICuC + il3+cSy1t3ldLgHR3pVGqeUI5mtn6CFBc0/X79eftC/c744n5okipMQk1y1hD1Jp5BDMZzvyu4VF + qf4nk55AtPvKPQhiJSe6XovMOPG6rZyIlKtyIjyV+YMn78KqnOhU5MQXfhiByjvywxgGLtGv83WU + cgVe0lcnp6EUDl8lt2FFODRtCyWwpV0+iohVEKUv77LhuwKGQdIk7aF9pCkKvIF2qXBvI95HFDIb + wjkE0j0mZMlRl1LRzDLBhjeBB96ebgbV2ShiZz6Dn9+dXDwfFUu7ovsUF2S2gKvMaIzfiRU07jKW + l+IUPs9kuEJ3J7LcCSKlGWbfirNFJtOZqW4FyKWcGcwJcDqPX4cH6r4AYRVOR7gc4H7VAmdASXDd + Sy0rToGzLChZr9Eve83mfSTrN9HY07VDoefNJ6TlMBh5AHafup3DkowvdDQqJnvjHjmsjeySN7LG + xVSdmMCY8qlkZh/fcpkTPSj8PbcpXH1dscEa/+O6AfMD8tIHrkt41xp+FsvPYLmYOpHR3qr8E+hQ + cOqC0rfDlwsHYvvReq4nrVGz9QZLXabfYB8sDg/QfBShrIV1uIN4BxMb+Y2bqlFvspqXJ2kw7Vyy + xwMiVXPg65/UYNpyq3VPye3J7BkSTvyZqK4yPrEWaFUDK5FWUy8Jteo5ibV/nlyYKHSuC6sXsVIW + KHs5xmrrARvBHwGC1OFVcIa7h6LDQGMsBnuuspvZnAqaT4f3CSJsL8V84JA1Ot1sBUOZjJO/dVSe + gp7jEQw3j7MMuaoVEEWtagXA67a1ApBytVYAPKW1//WkAnnLPVaG+MJysVHgOuGIR6GoT45L/0YD + 1OrwwYIJ9jMMJbtN7nUhuHsSsXE3CJAJKqWyRPH4Opvia01FJEdDhLSdz/6imucoh98l85vx9Wo2 + vdUpmxWKI21sWhM0xNVyEvKlIq4HOBom83VWfvl0OnHZUm7TX5MaNFwcwzAfQ/WLzJgy7jeYtZnj + 8Sj2K4b7slHN3K3MjpzevpX1AGXj31tZ4EV8sRaWb7brskrlhJ7pdighmQRO6EZlIJPda2wDZesY + xWULHbqIFAXfOPhP2IQDPKV5dQqXYsVCsjK1X9fKPbWzmk/nykIdygGJHSB0zJ0LBSu5P8yhIVut + O9B8RGjoe7mBnVQdkc22WBWqxVhszfE1FvJQ5Cn8eXHOvBb2NXrd6jKSlEuXET2Vl9Gbq8pl5DNm + xvx7EV5GjhfGWLs85v7umP/lHOjXxPy3BXpgnh9wJ65E/j4B6cIok5aAxI05nNMZ1XW6yCbecny2 + wipn6IxeppjkajBJjU+NzefLuyR3aAJHIFbHnSvaVQliyB0DH31QujKCJazutc6cvzWcrTP8SfKy + ZI7JP5TGrzvYgvaxgu14c4M1WgSc1HSGpNaDi99OPcX0AifwB6hUcC/HRKJOmtG1m9laOzqNnINR + NJqe1Rwsq4xZ2Ey8zjHWwhR2YMbSYyQ6hZ62U8XvGD9yonZ2KtnI2k6lOjHtVPIpMYWbZIOV+VDb + lsnp87LzzOIVozes+eKzmOxZAW2AAg0L35i9XStw3RL5HjA2gkAagAsob/XDtixPbU2vhZYdu7Ff + +vTs22xq4aWEK5CJGzR/H95rZeCmsPNIzD2i2onDMMMSeTDr2/nW+jy1ItEierEV3T2+USpyXk+r + NsawMuMWkY12Vsie8n49iiLH9c9o6fsxabWnvNP+4+dQam/8Iydui6RGjeyB1GQnJRw1ekrc8q4o + QimotGpucIEYRhuEblxIHQ0DnenM3COnbaYztbHOdJZdmJnO9JAkytVy7koBMQAJpgpjfe76g+Zf + RHMReO/ibeZYglm3ibU/EBq7R2hrJzdxzx8F8C5v1AUZmnNZdkr2Ce9Y41XbLkjP6NOHQzJb76De + AaXVOQ5lsXHGW5Qxpdcti40LypVi4/iUzu7lVcksjbXG4xIOsRu+fOExh0X+CM5SwGT1gaJ6k1el + q4jnU0zZVVKF0Bcv18tqsfHGwmsm1m9jiGzMnMhxK9h8+cBK9dMaYie8psBfg75Z3Vs4xJT28ct0 + ttaaiBlz6zYZ2rBSArL1Bozi+2yRlYoBGoR95rYatKKL8X876ILEEe+hO/i9aXrbb45jHWiBKjGV + p/qSrmdUtF5Yd9bZCi2LI1C/k81wfZdNPufwGGhulD095N7lBI7iGnu8/HhycXZmJJ/eIfd8ZkYg + vwnGJxfDSbK6Ri1FpmRt1yotdYAHRmfGxzykjFLp19ZM0qy4YZU71lhlGlahaG6qWTSriwG3HynS + 5R2L/K+4aa2HFrgUnCJw6+XuqpUlGwl49G0b6wy7ZkqBgTJs+P0P1OH6qRlauxbfoRwpcgVzRipM + pI2NOogIiciM3YDdvcLU9eF2M5sX0p5bmL5tsqitySFT0hvqgB3J0HktZk2kxX5JS9+raxaUgqXb + Bs03di9CGcuzbJ+AuisCHGh7VdpT3GJ32dzS6tE890i/JrqHttwCzaF99BDUzE7dRTH7y947wWJO + urVJN0+wtjC0NI8a6zrUrGm6us3WaEPuPvPCfo8NhJ0YrQxCFIXL7Esy2aJrJM+M/TJLdt2suuxA + m53l8iiqmz8lEJBHr+EwN5V55LFfs9b74jvbzJrns1Dd2rDOt62M2y7cN80wXb//Yf2hHvfUkc/b + i6qc9hQeuW70zs5dFuTZ4glJPx272rHVsDve/ubEXS8qpB6y85u+3JdZtQ1XRWuDcmM/kRPu6KdQ + EsSeZsQJyrqBJkgs6XKTrXJ5/ZBe4G6n8LS6xWpFcCBVP4PYISW/D6CyswxXL6HUTzFZp0/fVaH9 + 4RClJLu8y+a3s2GyXCYIWmY7WbFrsurr7XS4mS2tWjOUKvFNfa+2KhXsgmovOk+/qZyGjQxAWQhb + 01QEMojpTCxJD6ShwjxaTeYNuyl6MrA3LJDBGXu/Y1+5U3HOkf+OC4l4nageAJ5TM9kejySmiYjq + LPgB2k2YMiLG0ojohLyNERFftzQiCsoVIyI+JSPiH59OKyElMFNBxYjoOhhUMnIRaUOmbH0sgBjO + 8jBXNA3peAUlhoHClaaLNdzbmzt0kWFsQ3KN1c4f8FTB4NIVClBw059OJx5fashDJT4i8CH3xh40 + lH2KIDWTjmokCJEIDXMnK9MK0MXCTScMmn9sJtXIRd2yrgg0cLSwseoai4BpsEoRkL6iYJRWQJFq + BFGZbDdCCIZZLtDyOPO8JpulGuXgD/WhxVLUKl5j+Ax2x3PDHDidrWG7XW+F2PXHWJX8hYVAz1hh + vuSxWB/Dqtym4jcR5EKvAV39xmhIMTAqMEeUiqDYHHWxi0JqcA6zyUwkmglKuMJXH08u3ww/PnyR + JdTw2R8Owg+g+1WGHKphDnCva/sfsCqR7uUQj/9SmQi7KyaQFTNEPJpaCTvOLVYo77txUa1ELNiT + bpFW2+s9NGfhYNzvrlEBTwBuVF//LoFx5SmNWi3fOUN1ogSW6K3fZoXz1lKSbRXQuOMWiqjO1n9d + OkGLwEZ63eoWkpRLtxA9pVvo9PRTxZXFRSpKMbCRv3wBDDLi0cj3Q59J4LgraamXpz33fqpphWk5 + hfVYFfKdRsVc0E+TJWalGviYAgm4GPYnjBeCxWDM6Yz8HF9mXzJ5jUAPVb9YPoKxdF3gGD6Na3Fr + IrcpXzkKQxY6YQWotTXi6y5C9RiskVmNqolWftHle7m+QFdoXnBNBHMn3c584EbwVdYEHVvfizo+ + N9m8kkkQeP6++Rz84D04wPOjbjY34v5AjrvIGtS3tePoO6jY4KMSB91p9NtLxvN4YFal0n6RLkAb + Pwo31RUKxD7W0M6WYU/UZoRkvbUHYO01FbQvdbZjHqPPHAK43S5wyxfc3o9Hbm+me8RVBDF3T9gR + C1sFEMs2tvHDqgsjfFg+pJs3mSZoacxBIS4+nL0G5SKGy5qx54N/nl0oLA+DIoYIOxQi7GLCLin7 + Lb0DdgnKMUX/XCcr+EZ4MV1u7MNTvz8IpotpG4XpQPu2MDIkm8ndAXOgdx8na67I4dlrPsNaR6FD + B+j+IVvDSM465BarzevqgE4WHzmsXTinaGIdzEkdmKGc4pmKelxIEwaLi2kbypSeAUEZADLY+8bw + Eqhhtxf/5QWBd+SIDQ43H8XAOzzUpZDQENKQKFZFk+op0MB2j4A2GtZ47XoKaejH12QVcO+zkNd8 + SOsEPbF4vsONUe9Q0dp6Cmxu4j0cZDdQle+x0tgLm3eZIGuZp6PhfIblRa4PR4LQSyzN5QdHhLqO + MrhTqVk93ANDyCPPwLSL20Paxa0Q7eIaQLuY+Mw/X8PXLDHyTcWNv7k8PR1HGuuqFq8uptLbCh2G + Uy5CLmKN028TSscE4smsxn3VD7zJkwaO7rrv1GbR+QZu8Armvl39QtnGdruoLoz9Ih/uyDW4+nLD + FJSQ+lp4xg2auGViz6UtE5M4UQxQkHk/mGTYVJGsX3DCQ2q/RzpNwnvnHjluqywJamKbJCE7MHIk + 6FnT0a0+KdChenDRf0Y9uCd7mENZKcoJY3uTJr1uWSlKUK5UisKnJGO+/r2aq+36AStXinrBGIja + 4Qj+iHy+O1f7fg70e8/VLlBSG8UEUnQbvV1PN+dbIco4nu95g8NPULtwC73/ImlSZ6xFgUB63dKk + LihXTOr4lPbf1ac3qMGVbephWLGpBx5GUY4COHuR5Hl/zRYTquk5z8ZSgEzJDUeVuf+ScI83sxXi + e2/SJcrYJpCuCuCVRtEHoAHTNJboxMDkQOFBZHHa3FeblHt1+J7ajbMnB7OwI1zQX4NGD60fMe5H + lT1LXys6SZcgXTUnmnDelGjSRBw+dvEwL6g5pycn/z3UE1vbTeRFjefX6Ca3Yotxp+gYxOhlmJN7 + LA9YzQ4JgRXtIz14T7UNMVsqXaH7t7gpzD1hJH9svmZiQwi0d73c+UhGw9N8m+TzkM0f0IyvvLi7 + NpZ4uRCPB5uskBsiAgWXKnK2WG54sR6IU5FbysNISEm+k4MdyHG0u+pwQgWFXStgxXAOo9QcHe0G + Zfkvp9hK8DMKne0rDt2U6uGHXrl+Gyxptt3spNZD8njfSd5Wjugn4sd2pGGnBS/dZx4UPJC+bhfX + tFrJA0k9ejSbE3G3cBS7QIarGBHJO7vTC8XWEgy5AxBAV6RGJbP3VAQ8iiXAksNaoP3R65YAS4Jy + BWAJn8o4hE9vWbmqMvc5xr6WEJZ8OFQgtfssCn0ZiPCbYGOfZ4tUMLeVDoIq+XXhu5CRp7lJGNP6 + KEB1DSc0vVU5lTIuSulAIuzpw+Sey2in3z4v4W/iBqYCm3CwJ+lCIEgCx9eh86ev3rq5IkXhCpsb + FlekrdPfPtQX1XEi1qxLBK4bh7waVJChqLOGj1a3RuE7i7NkwuiFUamj0dm7sxy6j0VYB7iz4mLQ + OQxRsBAHYJIzE4wr61qKVPDNPN0SbGA94QL42S/FmSwyMUOUDJy6Wa3tadD7Ns7xSaUmUKS93l5r + 97TYfs9oa45od4/kfh8NT+5TtnxeljexTBFGYG/wrIhhFYmr6ImBONcaIDB2Ywr96wzd5xOB+nWu + ENuZS9kNBZA8Hvfp7IDWUUDib7LZJJO7e7lQCp+vsNcEgynOr8393hk/EFgCqeCanzTwkXZfjZzG + JLuHTVkJM05EiWkGJ+3HVtefge9gJMRexCt528c5ar9/wpx2DuG8kTUamurEREOTT+kCP3l1asRl + SgB/fCyN7gJ6qfjKyeaeDRL8DwY1wHeR2b1bGVdsT8J/dnAJV6DBTbSowwmFmk0KI7ameAdHJFtv + klqWsysf/SCvRFO2aU9GdsWufCfKy/t2q0/bJWfKqukerZZyl01de5/mXj+aQyg9ce2436A1l1KW + zMNW3T2pbWmTnNP2gfn29IoERKR6npRqBLWjEjJik7R8mI83hktA5f53UGh5oAvCFqmM4Ebfwo0u + InbNFb7PvqRactpewzou8PJqwRUfsdNdSnfMlNvbc/wjx2uHsifb2Lq9VReG21s+JAX8YbmRwYVU + E2ggSwP9Cc8H+CNB6gVuT/dspCxjTRXKK1RrArUiWRlJJLjWQjccftZChyIYdeIIpkLuKIuzS8fo + tx5VJ7ItFimOPMEr1qIo+i35AdqZwX3HzUOhGlfWxpLq1IBlHJJf7zKXbrBkPcnEl43FrzBC+s4c + MtqWZG/pZIqe7xKbt4AmsaXpMy8Qgo0ActBjJMtWY+pabb7bYd7cTklybetc9lceKaaVKJfUsxQh + CBbyXZuK6jtb7L9U8jh1HrYuyCbbWMepyy7MOHV6WAU7lCxg/OYS/R6Ys4x5roXguzerKStGrV+8 + 4uwtF9cWXD0slmG9gawwplhKIU/9dv4AZ7quZGw71h8E3OBa+XjhHzD++RaW+QD6ltkvDQfINk/0 + h+d22sMW96BMqI1PNSI+XDo8OLWPOxKv28UdEeVy3JF4ShLUxZv/RszcUuBREETlwKMxsHfu+iNM + TXUlLOhF+o0vR0P4gznwJzoZ8O98mWdx3yef0+F2KQy5l2cf3w1vgD1gEqs0dkkbL+YhfZtRnPfs + XlwS9wnwANAZH46kE4JIl035xZZN6fdR2RDfkx2fB0HoeZXsQDWitEUGosvKnQxO3fenHt3zOHNj + OXO1H0wPF6bJvTCQQr84DINGIjaQmgOafeVNIiTlTIqPhbhvcQWL9dfL7sDa4N2rQzvutvfJQocs + T5Lt2lzoKfy5mqar9UDsQh2CFfCoD3E9VGJcw3q04yY9CYUs8P2oSEfudlEZpDBSuSp2wo00eRea + t7X9kHG7dmu1JhWXuaMd2R9+A3Q3fn+PIINOvnx174hMhz9fnzs8tL936HWre0dSLt079JTunQ8X + 1XhXh4XmteMGL8ee4wYxH3mOF/ve7njX6RzoTyo3hGkVLcW8NsEe/wyxqpxF/qCb6fgpnDC1KfMK + DjyK25W70W2sU/5kF2bOHz2kTfb764vxxzFoS5uH+e18CyI6yuwpTKKEhFpVK9sc0qY4GpEIGElj + lUMllZpo2iENWmsPEfN1UM7BOfI/uO7xfiXlaWYmieoGMd3htluoh5LC/XW5J27My8W4G0JMPphU + aKa0Pcw7UFV8J8grxwQM83HbFY4RbezrxlAXpbIx4qHEp/n1QiVtDdJ5trhFLBCjLaYMhcyTJeCp + DLqAjca3ab7ER7dBqba3Mjw+njnWdt+FcnugCeM/IyPKiRyKCDdhy4t7gyLsu5Vyd0PaBo292CTj + tvAgdhHA1TkPVY4gA8mubZKgbGObJai6MNIE5UM65+VCUNXCUDkVOPFR5JCsd1jw1g8MMNDyHSU5 + nYAS4NkrHfS6ldIhKZeUDnpKSsf5pzdlpYPFHLHsi0qH+3LMQN8PohHD+rGy3tW76fIXtHCn32DY + i9tUnSPD4nK7yr5iac7NcJ59HW7Se1B9MQ8D3axCRznfpFX4SASpNZSH2CwfUzQ5YTgx4xUcrdtt + ghlDBddBeZy1SUMYvWIoQFe6pzCOfI/zktpScmV9m22kWUIGIppGrbgJDYyB2hBzz/vX4EIYjL6k + w3evL/bPr4odFR3XzPLxUNR6FmGeOCUoxuyYk2fv3rx9Lgh/Su8xavTr3WxyN0Qj2fBz+lBgYlh8 + oND3sVbS5w8VpMnLZM2XY/iWAe43jSDpcN5TGGmn2E+nrrBCdSF/eQK+XBbAJhH+A3L/5RjlO4xv + O4D8md+IraLCVzNgKws5iMldOvm8zGbiey1wxzrD+/vAb2oW55Fmt3ul7n7q5XUTkWJZ6qgI+N0P + id0AZirurwXj/Y7mQnXlqhQZHraqQY6vW6bICMqVFBl8KvOKTz64ZTufF0esWoOcx2404l6owmuv + xgncG+gZ/ZBu7maZYOYX6epeJJLKLODk3q16hEoI6yZCZWRm+n64GBUuPQbMOWSBU75e87Hc52Op + DdMzjXexb92ZvmJ391XsgPkgFDZhNiviIjF3nNzczBY4vlrqSzmrpZSNYqUn4EO1TcVVu97Ob7Zw + QLLtapIeD+/gYUGIBzZ4NcYmtX0OP9wv2XKA+0RXJ2ex30+8FpVSLjjbD/Xa4Exjkz2LY8vpgR5F + KS23GHE82UOlznALFMRltsaJnE1bUDigHvMeNVXGNrSpbNC6cdNMPgEDtjzqu/fH3uhey43DQla3 + p1uS373ZPUpwLm/Oln3U7tqAApTLu7YDabrrPIdgqc/OWeDbq5f0utVdJymX7jp6qoojvK/4tLjD + zeIIHns5dt2QRSPXc8Jwt0drNgfqVY+WElXyZ7XOo8gNeZ0T6kl5sz7OYM7n4vLBTZBqHP6F+mGI + OwPUssrz9RZ2EZlKjzHeYDLP1un8QQMlixJ+6bpQb8BcvDVsNpSskslnUNy3mBIr1tM7FU2S6b8T + zI/FBRmplUYAvM+pBLrAssCbFC9AkMxAUMSVgw/LhKCWFEaKSsng49knrQ0yT1hxgGGof4Z041EB + KF1sUSwwjOxwv8xAxM/TRVpN3R4RdOjtEPUdrIS6GOu+n11vN0Ogo8Alng/h52m7gHHP4UoEbeNq + ptdtRdAaVzM9pWN5cv6ughbvO7ySpD1mHKbKHTHOWBDmXkDyiaQvqX4iCPt5uUD6yfBCjIbF+MFk + jfWLboHPjeezxee0HO6HgSR3adM1LJjAyfy2ChVvD24j4CqaavsCO+Y+K3OFmg+9hmkf13xtA+SN + HzXVboYNHgR+uUzxx/rZMXHVo0ZcdUlz8CNXa4DbLJdgvUiGfRqejMKt3fDJ+xXPJ4Bk0oCw8ndE + RRnI7YyvH3QurCav3x6+nzuWwP7rSI30U1HEQG1ytJBvl23vEFfWvQKlx/4Oodct614JypW6V/hU + In389q5ixmCOU6l7NfaiKPL5yIvRtCWjZOXhxxK5UihSvHZUoyuf3KzQRQACIYZvCwtzwQ+/oRD8 + 0+mER0slJqYrGOnfW0zUQU9OHDiDQU/FbDyHIuH+6xxYdgvkPfG6HfIeUS4j74mntLU+/n4RVSKw + uYepQyXkPZfFsctHqFSovVWqJKIwCUROkPLwPvt4cfo8L5tVDuL9uF0yP6Yw3o/rJbpB1Dyt8zdY + QG/M1qUYY/hqEKyNyr+IwCabyBsTRiD3KvwQVYO4jXGboCxeE/Rc7Hk8iiuesIIjWW7bBiHFZ3El + LryOdC6knF+Nr2GUuMdE/iTCmYxVaICM4zVElsBpElnqe8Dq32O1jZ/dLS4/XjzXKSi7O4rbd6QI + ynLjprDllM2kuwkaC2gb9R7Ecbthl6eibuQBq0TS76S52j8V7RYRi0xTrLPVyjWWHqqnvl7sH2+7 + bY0ULyx3WTvKm/1D3bf+g4/CsQJNEVBobcvtjn80txsIrq6RI/2Y1HuPrF/3IlyLJkTcUI3xRU3I + iLgrhadwB6X9/lvcK8Iat+hKRoj+m25UAvqkWjZrpEm0Jau/8aI266ItuVgtYROr7kKdDDUVHtKJ + pJG3cvj6dPXGALcXtq3Gq8JmGH3l4fjM4ZE+iwcSCXzHqXGBG0PrhgnTLf4wICAWY8btlHmrlo+o + uoOoS747NYJD0nZAwBMnf5dEaLX1e9E0fF2i4JXbDr5KNbEuUUAdmCUKxDNSGlZ32TRZwNtjtGUP + p8BoZosBuqvQkYvclhy6Bb0e6V5w/4SL3Gk/criIQLbMDW4Tdt82RFEYaEKKE9r5CT0EovZrPInE + 0XbH9+lqgpXRlg+r7Ze2Q99pN9FVMQL3iDlt0upVE9stJzswthw9oy1Hhq1sjhB55QyYXb8VaGMQ + bBi7g4PtqodmxgQEGCaNMPPZcja1zL7ZEYrbtfDxk7ADtzjXP8Q43Can/ynYmRklc5QPRA8R9F5A + 8SvKrozoeaLwLObQ9GRXJlRnC2OwMmdu18W6owdZhkNVi9pr4V2k121rUXtV7yI9ld7Fj6+qTn/f + qdTNGPvcizgf+dwXEefIFT+J7HrlW5ptZkaGRnr2duyfjFTWzroA8iMVYKp6oLD/0Tt7rNYetyBq + sMowJuzIMKfbxRQVSqHpvn9YoikOHqWr20w4yofAx8jsPLx7WG7XKufmPstRpI4VHCKskGgL7ZJ0 + lV1jSC2MYUYAANJ7ubiuBrxL9aYcmuc1mkIiOBphXDb1bXZOX0NBaa8ptN7oJLdh5H0IsU73Yhoy + 2D6qg7/zWg/wEORlMhzp+2Q5Q2i6hXdrjDCtJQrmGvRPbo/vNfKK6nm6v4UrsTAtt2q7D2pPfF/J + YM+hJJ1Xl6wNIg29bsVQJeUSQ6WnxFA/VZEBQBlEPbvoavPI1RYwdLW5XqRdbdfi84zMDRkSgFM7 + 334jG4qou46B7/8v/VtIi7JMTLK5+5o8oGGQBK+5zgQhV6agNoZftxMdiD8XdiAx1zT7SDf/53Px + 75k4bFil5tn6eXFkKrpnfX80fE94KdsUX3gD8wTPh9lmfaKlXeKsn5brKmdN5nC7j8R/x5tVepdg + SFTBmyyEVryatbkUYyaQ2cD4n5eykLzGokge90OniuH/mL0T/vzo7OIsZ61uGDtetZJA6/pmLMYA + rKB8v1h/jvkZ9RdPxP1S9waefnFG84oAGJGFQVsCN1/vkdJEhe0J12Aem44Z36mZ/Hy+vMhlfvmq + bEu04MpDq6oX/WtwpWa0aOnXMx/UzP0vRfxWua1UHhdpaOuZqj62Bn6Q3KbmtGryx7De6wwuXgy3 + Q50SLsIFlsYAloBre1xEgZ4hwBGd/+sHSVx8sZ4EvJBXqbo75UuXCYi8Jx8uFI8ZILPTnm3XdQZy + RYVBpW71d2ibtVrigbQaKzLF0tKiZs1SE64f22G09mTzHEa00dECu1Zc+RYo4XUf2ab9HvO5PaGd + YOr2ZBqRQw9OdOuEJdg1U8wTvreOd5Tlzn6cvnas62N12cwIHqe/Ogv6gO5Pgu0X9SRxEg4VmiNC + K+16uVtthEfr7Md8YmMOzk8UU1iwvwtj2+6Y+HSNiSgNce+ov6Rf4V+4tyXwIexc0JBVUUjZU8yK + trfds2NJNOaOW7nY++wB5caoYPdGMYhmw6YA3J4+lLYZK+idKArb+cRUE1vgHdmBgbtDz0hzTCYY + 5LEFjVkgH2XfHoDZlr0RjS9JvJ5CRwj+y10mvBVRQNhaBS9FD5JO7EQSCEQnmnWnykA8iEtU18n8 + C4rNrQj5PmgJ2ERWahGQMO3y1J8CpNhj4//Yj+QQLCDr5MrH8OSLxCPmU8mN2eRzekitRz0Gj3go + 7qaMNlKnS4bCNhqoFS8Amdk1BVVwJQPEZotJtlpmK22e1eHRQ+IIo+orWOU42WT3osoxvdVuzJ2r + ZqpzyThZQYvs6zD3MnNUWH7k28dO0+u2YflIuRqWD0/JVvj25PeK84U5iOdghuW/8EFe9eKRHzhu + 4OzOuUxXQP/rztLidXlWwgnYgKXDuM89z/WeYFz9RYk1KBuj2OlwzadrFdW4XW4Qyxv2L76DJb1B + VgdBbHj230NVhju9ERZWeOcuvU+bLCbkSLiG2UcAnzG+KijgP+TZKPgWLn5/l5tI4ogCKXvSqpni + kGIMLfL4B22465PGXfWYKOnz58dzl7dInKbXrY6xpFw6xvRUHuOzd14FJMRxTFwuL3g55lHoRiMX + jnRo5tYYUbqwC2cTxPFBFG3gkMXM4kTV5kPUo+1nGGkmhSWks6aCodIrDS9TbJTCMM+2oqYlTBFT + uTdvZ7deNTvzG0zHAvTYRmYRR3G5xGrBGg0ymFstNpvNH6QsDmLkeibrvddI/MWOQsabrK5mR7nR + WYUx3iMSnQ7cn26F0gVT8++txPgTPEK/LmuzmOV5fTN7o5hGALIVc4AB6YiEhzl9F0g37sgfX8/W + uar67GIzPVus/w/88C8MtM0/+3j32ks7bKFy4PperPj6Lpt83onjRS2F34csuH/AuuNiy+2B4eVX + J6fMiKLDrawrx/IAK8fC1U2wTpXVm6bFzK69oW65KHA4vRoTksCvcEm8hO12m8yp6IAqe9M2D7RT + 0Rz7iiGPmTiKxxOb1B/knfPQOTOtYKDop966G5HEt6w5aePKSfPHdlaEGggORrn+Hy9h9C1uEvG6 + 3U1ClMs3iXgq8zTPPlUEQs/lUeUmCXgccDZCHqQEwsmMUg2UWexo+FEGHwtMB/hws6KlXF1VnuR0 + tqn6Y80WsqiD6Zb0G3NgWOjD4lX8m4fh2Tf4ONVHP7uaPR9rg2B9Vj9rzv8pDjW/SSTtBs9lwJzG + VK1aerdzkMLuRVK0MnRUUsp8tzFbq5YmLIgwoX17mAubMrxIiIAGVac5UU1SHZyWds9ImqqV81EW + jtYaIeFtw+N08Rfs+uEJwZR8S+YZ/iRck5lwPKp5PBZ0RNLhfHY/E7ebbCxjhD6dntDoj3Xc/M6t + OzgtQJL4PPIG8mPJAtswM+04ug05i+QTJrEKS1vKMHNZkPHJIlOzkzYtaXlYgVMMSQlAbX2su9V9 + l+542ibj0+zEBla7CvP1g2sKW9HYVfAE+WOJRM5I7e2IyLuK+6eB3VnNzKG0vhMsgxfEzDYSN5lo + 98mo+A/kVl/SFcq9IjoqmX+G37KFbt3SUuRKFZOHob2liF63VDEF5YqKiU9lvZk3nypJ9p7j87Jg + 8IKx0PXCEWNRpCD5z8eo/63TFQLD/CYrJRggMhVWD5O3low+b4sMXTUvPtaow3mcJ8aIKa7eaOCn + GBIpfnxIN9W8+t5CoQqjrZmABnnBY15DN64PnbByvnChkwaRIXZi3nARg8QeRl75eq+bu7LMgI6U + PUQHT3sLDHB35/c4Zz+Z16kN1f2XPG4SoThVt5MlpR8QpjKQB6Y08J2Hze626kp058JFHmm6eHf0 + 4f2XIdr9jbCPi1XdYoQV89ul67Twd9DrVreYpFy6xegp3WJnV/+s3mJRGU05fPkiimKHRSP4I8Q4 + nV3+jmwF9Kv+jr9t1TQ/chGIv3sU2w8spgGnLi+Z/IbxI1E9s03NZGpkXzRZdlKqmkxPZYrnFlZn + ux6oP412GA4BlymugvqCQMqEThD+c/yqhVRIDSzlQkm9IhnSc+l++PW9eapcF1T6qFwDF4RDL8aB + j+AP35fH6s/FHGh9HV8rj8DfH4OLA8dxCisZ6b0Yn3hH+FObrUhtrHei7MLciPSQVnO1Wsj0unIB + rCFoNptVmtwPC3kaZjmkwQFtdLD6JfQ8wO5xu3NQI2SJLj+/gHSppJZGFNf3iVcVC0MYFEfD1x9P + CsW42nYQ1AxStKvMSHMVsUpFe98RVPdPKuii1bpUFsAMP6Sol6NbZ/N9nYppYJEQSFewQs2+gNr4 + 0YBK9O1suCdHjAxnlSUorfS+RLQ6c7+O3mPhiSuAIVpVzpONrEvnqU7M2nnyKZ39zezel9b8T2cf + uJvXr84jkAeNv+iD/EmQKUb+CcKi8l7k8EEPxQn6wrFxkVKRThEoyM5oZhuD5quaJ91wbSS1x8fO + +dG2T0rONNdgtlikhzo1kaS3lyQG3KgFrdvjBy//9w1ZaTOqHrAXmO/RMboYX4wx3HtMblcMVh7D + PH9JF/u2ZlPBguuH4QTGDuxV8k1OcXO/njthbK9H0utWUq+kXJJ56amsyvPhzypoQRiW9Ej35Qse + BaBgjkDi40zm2CIi/HU6n6UImo22YXF6sGLaDCNFQBCZZBIgT0VSfHjIuBKPr+4f6ivgLdLJ53IZ + PL/R6+a7oV9NQEU6m9myTKbJDBl7IXfcCq4ASDfN+AGhSezqqpaYFrfTb5kI2S37KSMTzfzs3VmZ + zkDFNomQpBJIoZhRARewzNa0DteY4JxjmecdHw8/jjdYbgMj8GVAkwA2pMAWmQxNHy1/BuFSribo + cbBXdNkCUO8Hcvi4yQtfVzlqO5KVQCaRhdgm8I1w6c7TMW7dKYziixLwbPm8w1zJACazpYj8MSp5 + rWcb61I0oVcaVVsGHVG2ZZGCjiqaNrPgffXJKPOp+FW4ye0+Cg5RpbU4ajbNPdd1KeqYZHTYb/9O + aSn3joDWJghyYZmQKw4UY+XaZJ3wEsKwvDydCPo+JaWdfLo4qCatx5kWoYPT4MhxW4rQspG1CK06 + MUVo+dS2Lm2BjhCIY4XH/fSVMTXtXMEGBbwVbBC8bgsbhJSrsEHwVKJ+fzqpgQ3ivAob5Ltu7Ix8 + 3wsDCfp9AteErNaG/JKcRsk9ni7hvqUPLzD9vK6FCDKh6Af8F8iKs+k2FVGtyK8pi0zFwhIcbomM + iEzJqeC/cip4UyUrEIqS1W26EckOeaFwXbpyioKaTAqSqOCbZGfsVHcLtBLeGmYFmmY1gXaGic5j + 5ZDdUamiHzApL/LLAbXlsuimT9PFmjMNQbK76RVxekpwRIG3h+Lgb7SHBniWcvQh7g7kHBTVYmOy + 2qMA9F6XKVffA7c4Tosgn57cEQO5p4u9tzsdNgy+tzDWH1nEirvS88e9FvcFvW7p+ROUK54/fCo1 + tquLGs8fC8qev3EIornHR2EUR76MX7kC9VSZja8u0gkeBKWNrZfVqJG1gPv9ilWHn63TxXo7fLtd + 3M5KAD0Ba+TBWJ8CpK3HcmEUxgdbDRTx+YMaqLE05oBD5vMGrqgHPChOlSgfd5MnhxBrylVbqTjl + oymlIqwLtJCnDamWdHKzEfaamVCbzs4EI5TZFYUv0wBwx0Ox9vWpVDB6DAFCBkcEB/iydnWGAUKx + uSDHCyWgOCIgtp2LUwONDbS5JFcW1u2Bn7EzceCT9SSj9jl1W4YLRMLAJGIutx1ThC1aQ8SGbbmM + kUNkV7udHlruKa8Yi96BtBy2Ee3zRrZ+Md2J4RhTT4mH3K8Sme2uzt8aFP6vC+mLgaW/TNZsOdDw + doW6HeoMfAAaAyQkfFzMjYXo74RUznZvdlAbK0Hg0hUuahzIw1+rYVknUVtT3J0cwl1ZpT0PHIB9 + h16xtkZR0EQIXLhuyluYun+I5iUMA1ScXupfsM74IfQvLdF0NTwfnPueq4aYSLTLqlOrJIoQiz9P + zh03tr/06XWrS19SLl369FRms/x5Wq46BrsvNOMSXPflOIhCFo+C2OfSSHv6gHLgCnfUhJJb5w8C + zeIObbPFH1Xg8nOQojabZHIHX0fZsNkwWWbj0wdMdpQ5wGXPA0qLyhAO8qIo/r29T+AaWW2wp9vh + PazIXfIFi6RiNrG4qXAllnfQ6/x+lhCfmIOciffNZ/h9mt6kaOh89uH86rlKrnmYVAu97x1NOdOm + MeUyAKXRrdTBNOdqnM9VU7yr09QBCBeeH5bjXYvrQFnQCF2OUBvFDM7ICZpKYCmyg/6W23j5GS0+ + nE/4S7h8/uO2wQCPgs4CB1FtIGdG8YX6edyrAP0dnYR+VEeyejjs1LeDwT/EeRAK2/5jZDXhXejt + MeNSWabZCoXrwzFK5DVFR+/Q5I2OMB/q8qLouteX3G1RMpNet7q8JOXS5UVPpcb65hRrXJsqKyyi + Z95ewctx7KLSOkL0YUfeX2dFT1ZeNGC8ycbvsvntrOiMxYzvz2KGSKVNJzyo3BWnv12cDb+AXIUp + Z5Ms2ZRscLyKNluw68U8hqFWkWYzYYtSZE2KpvOyiVr/2vGbS+TlNEt53ETJ+Rg12Qfl2AZvNDa4 + KEArZkzNuUxKEFOKPyBIqllI+c3l7pVClRcdjZt0kQgJ8Ga4QCVxjqMn3AG4NR6Oh2vYtbBjPff/ + ycVFHPUGT5a4Mu6Te2g3g8umOtBn4hGM8/lA7EZ1gfDAC3qI4cGJJMbRHMJyGFXB54oLKbdYbv9s + gVWi+FNPEUcMtGrBotqMaZf3VjBN+syD77yO2KDAMfNBJEu0fG7aqkRdK14BMwyN5mIrt6XBxYas + crtHo9OswLvMo+OllwVeU8RaKLeWZbzarLdHJ+wwX7Q1usPOCzpUnl8Q4I+csJXfl5rYen1lB4bP + l57RRb29XjIZNKkdLcPT3BNQNbgP9rz3O1IcCLpoJnKigEKhQbONDJ0c7TDr5Xw2ESg9X0ANEP9K + dXWFgw09MZ2lLoYeJ/CpdGLufsrDq1v4a3YnULmRDpFWM/HDLT/fCx8xoKr3O9d8N5/ySeRuYXVq + Vlc4N1dblJObC8zTLhlyPBQL/NdsMTlcuehNL9C5GuyVe8SilkZpamNtk5ZdmCZpeqgs0su1iis0 + FdZqBVQVnP3n/RWLBrZvi3dFL8JgHbBgYF2cxp7ddC1148LYagwB7ekRT+A1gdW9S1T1NpGg5jPI + RpyvkVqbDnynphDPd5PU+ir35obSK5d/6SRbrEG12eINAzpR8+dZz1SXTnYyklgxEpdhVdCgFSOR + bWwZierCYCTyYX3UGn5jukJtlBDNNOJNkRwyBNB3dRnTR7YE7l0z5XlwHZ1Q99ZtnU8nmlin01EH + ZjadeEbz+u7k8iKH7i8kxBg/qAP9x3Lte6X6nboPTAENud9H8sxBinceh59TiYNc7YNDrDDrdgzL + Oi/hR2rbtoP0OCO/7SrFcJlVMi18+0gY3gRn0GaIH9hTswUhdoVSYezIDlfLwTcfIQaqL3kkC0R9 + 332YL1BWNb7gu8OF96NZu4Rn+/7ScVvANNDrVqZvSblk+qanJNZeXn4o+205EwVMisFazssXLIw4 + YyMWwfS7u2Ea7lZAvwrT8HfML4fJCMPBk7WvNm1ftJqFymp2kPmtvzPAdV6BFxw5ccu0AmpjnVUg + uzCTCugh7ekSzn5RQLibramaRorYPw/CfHT1z7PLD2wwX0+ZTLmVUoNLnF44/jAhRQQvT9N5t6ig + 2KUs9WSxmWEUYSqMMXvS9ZsihWPppCwGB92ltTsgD+hbJptNutLKoMsCIU+quXnvjn+N8xlqNSDP + kezYhA5Q4YfWZPyI0FKWAmv4S9oJiqAuWM8JYyNeJ1/k3ULc9499gvWhuTiHDfoLb5Y5ysEG3bP5 + I1khnHZCD/hNsUPAEuoljJ+GQ35oRlS/dTpcJqmRaU/Gx9nDJ7jcIwi0OibTCurAdYmfnp7y99GR + 47Vgp6qJHTfVHRSYqXpGvPSuKB8orbaapKUJIQN1uaOV3O8Kaqamj0Lpzi4d7tlHI9DrViKZpFwS + yegpiWSvT86jasIVZ6UaA+zl2HN45EYjD6sKS9PkMyph9SV9bni5Rf1gArFFSPgVhiaSsDZbQc+T + 3jKawoCH0ZMW2LzAPdSKojdJoGQW91V8xNp5xKiJrcQiOzAEFnpGm2W2TiSoFYYEjdfb+c02lzsL + 4svw2cWHs9eImukxnznPB3XvnwG1AZIUvrA4krBAUUhBrUqs1dFHd8DnsjXwzbr72R4XgXMd1KRG + NJlvRQU3+zD6btSeLjbHwTFyLewIvQAX9+/9Bv3CbVzLw7SNUNuCPfeIt7NXUhNrSzB1YBqCxTPb + 7GVNA10usK/xMLqu75s59laFhSoC/OEe2TYR7pphRpTFfM7a4FHS63ZZzES5nMUsnqoYv0+Vwj1c + IJebWcwvOPfikI+AiwS+FGSu0o3398fMu8hj5lQTNZaRUUjmzSdVQgYnVaezBh4ThfT8oKT6Ggmt + LfjJQZpPd8OE1mCelDvcjZVcD/8AabmNnUS3sZXsVReGaC8fyvAbuUNU5iH6hOqAhgxyKOB7nrVf + xd6p3c1H0xNaWKtCa98ZNMrxOfONKTpYceY8KtQ9tgeXsvtsuds9Ap56fc64Z39h0Ot2QeFEuRwU + Lp7ShfH+Y7U+D5p+yjHhLzioYX484h7I1uFuy/h0DvRrLOOtse8N6IgCJcUrzfTnRlSpnwEEGfYb + ATmF3IQHSuh+mbRCOKgTaYKY9Buj9hrVAv6SNspUzdGkHmcUKaeH+jkVRp3Dxgfqpiygrb9cgF8c + Ru1JVzt+nECfDjD3DqWOJvNpevcwTYc2dsLahCBR6VUQysa4Gw6l1K/Z0mechLVkDjoHDYw214HD + Q4JxiSCVYm9LUF0ETGoOTtgiO4het9QcBOWK5oBP6SK4uPyz4iLlbuRW8I94jNVzRzx2I3UR7JSp + 75J18cKHqbpYPbClSDmBv3H6m8RugK0LysXF5ZiBBgwzJKrbJhtR9VID5GksG7pvgEg1FVWYAvcg + ZsQ8bLx6HPj02H+0nKDHUWAGuIi5psLIsOX7BN2AtROTgkJ9295OgzOGTYpVKfOZtlKSPe0JddEg + zlg7syK1sbYryi5MwyI9lAGv6Uyqv7X4y8/QLwf3nzIsYkJ3GHnPB/I5Qml8vkuTaT188wekXm3p + CcMjiFI/Dx55KBNQGv2Ue6JpiV9qBBcLWPNduOa7ub3jhnvnQq2fHbt3yM+9SG+T/b7WRtKNDmbs + QMyPnTO3RQc/bUpCP+5ZN3TqUPT3Yau3COY9iP6+MXvGWakejB67Q0OWW/0EWQZgN9mm7Yw0g+bj + jukBqWh6GHnP9QMKoZbLNNb9tN8p6lZydXwOf834kdPuWlKNrCN0VCdmiI58SjfTOplKcCCJcKVA + sOD75inuiHR4nU0f5P2CQIIgsDwfVF9QBsIroDhAssJEFUvxALab9nsdVFA0BKVVXA2zBuDhPbI5 + l1BYNOzWrjCfubIUKX7AdIbC7XewwBbYm69bi/quX9J5trSGOGZB8evzRbNs3hEh+QlkXigZgcWB + MZFFMnsqw3Wp7q0YgKcMzyx04yMnaGd5Vo1sTc+6E8P2rJ5K4zNiia9gzCuBJlcOMCoG7bV41egd + +EAUK1N1GEoZRBHqoY5gEEbidhEgMHb07O3hMkBNekwtDEXWpCPma29Gp2TSp1Xy0T4C8zGKSrLY + JafuerbKWmyIesYtBMSI4L6p1CcSOVDm8iKfUk0L52h8BpLW6bhNZJ/1/PbU3yPm1Pcd2Nhj2UfP + l1A6zPXbQOng65ZQOoJyBUoHn5Js9ufp26rXxHUrXpNxyHkcR6OQh74ni6D9IXKaYGwCa1mcL+D+ + Y4XUaPqYJLLLyaeLsVrHCUpIIA+D3A/b6oEMbDmK1zTdZN9mNw/4qnDGroFBTu6wIsgkmd7Ptveo + QK4m2xXC9C6mw2S1ThczrGYP72Z572iR0oNCvjWfrbYwiGO1n0UktUAVmzyshS1kdr3KitiUp28/ + XSqn0OSmCij+RU2FvutNz1DY5NGJgphHUaVOiB5jvZ+uCOIGcme53seoCECL0c9B7JV7qF+l+h48 + lzXi8Ya+D3J3xShYGb5JMeSu9Zg11aK/J/fOF+kiI2030vY0i7ViOAvjIPjX4D/sJAyQa2h/n+/x + PqqWOdI0Vb8iNkqE2FZ0UVS3X4XALn/gwfVbFYUgiCpArnKp6j9nRzxjKMaiEkhbXp2yuEmVP9lp + ZfbNn7hu1mvJmE5qWk7k0AovervLpLDSdm8Z4tF8DgTjxwYNXG2cfkPqOHD4iANco7LU097GO2ch + ZKyYyQGrOgaJaHmXrZd3SQdfq8cDchSUhoexddvlPCVPnzHhusQUsPj19hpU+wVKcu1kQoJXPDtn + TouCAPS6XUIDUS4nNIinMvTy/f+q5jM4UVzJZ2Ch54fxCP6IIm93JM1sDvSraQt/p3jMPGXBRVAq + 7SYUIcx/vrtkcYtYWnrdakEl5dKC0lO5oL+eVeAymbAVFoX8GGu7w/98rO0ecCnkr7fLdPV5Np+n + q+PhG3S8nirH6wdx+R0PLzX8Chr4LwqYWISa+XlWBc0sArel3ygB69nlx0I5SdPDDee82cPtBbAN + WX1wFRoy7egHVvTzLef+Y+z/A3hgpiGiGvGbgXpTvUEGgq7jMae0D13/Cq6X2T0ude5zKAKOGbCb + btCSvoAvqy8b5ASe01TOIvYiHnpBB2JF8TnyQJmO/zWAmdxkMJlD4toZVsfc0MYw5pbKFaJkrGBB + pCwtV7hUJcP9R3G+5Kv+UXQlUPqPjYQreBfYOQxBfEuxjJSI6SigJc0Wd7PrmXJoLrLFGF1az06e + i6brAR42HbngcZFt7nBC2kDaN6vkVlwSB9TjUbID7EhVJFHi44v5AiZxf4/fWqyXdJ9stqsUd2sK + XwJD1jNAfUCjyWwtr6OVmZ88fHZ19fsYH47yZqPhuXz43H7EvdRHQPC9QM3joURcJgMA1osM6ciJ + 2UWuqZSI55EAJhnNWE3cNTQ0zoRe4lFpyUbERdp0SerA7wzGbzn8HTiaQE5Isr97P4zcji8Vy/S7 + 32loA8nciw6ZpgvBSifCm0iYai1uMFuCkTzMdkT2efEeN2Zzh3pFi7/nXmw3IFeq9JcHR054Pisg + gx4+Es/nBs/tZEHuWLhMiZaUpvXh0nEDe12BXrcSLSXlkmhJT0m0/HD2vqIruEEp6t7zX45dj0W+ + P3I918fSSSJNS3kMJ9MJ919gdqqo6EBi44fZXdXO+uQi7zVizAOaybBIep3iadTyCHkTfDsPvJir + 2tNaunrHf/lAd7KWOjBAQUTS55EOpnYSNQmz9V2YQVpIUFgdy4i0n2eLZhHXCeMdJl3Vb156um7C + dqfAH6txypqSSlpUwCXClY4fcAr7KYK9ozYUPDL32gC3rRLSPJAqBvILyGZXnYwaeN7yZLS4J8UC + YQO7pW1JWbCWDzA7ODxLirulLo8S69SXF3zAMC2lRWhH+keH7HQOuOkBD/WgoMZ2uRUD4juEGkgL + phazu6FMcLTi/tjNC7+/qbW/+zbWsXXRe+YcOW672DrZyDq2TnVixtbJp3T/bmY3rl8I+9ZKKjCU + pBBUOdj56zA9e+veDgQxglVnsT2Y8R7mwdwSBbFIegQVcvvBTA8+NYdVe6PIl3T7GVYo26gg0Ma5 + dDtARfZb2T4oqD0ipERE7RwWfmwhhrcINu4q1LuyutXuleglLrpbR7vYiU9Jsx8vHdYiaZZetxLf + JeWS+E5PZa7U+9/iivzugaxuyu/ByxeBz73AGwW+yxy+29a/WEEHvWfNPk1bv8/j8BD8K+Ud8JlG + zXexoCpvCZsvG1nj5qtOTOB8+ZT2BELaOzJg23OuahDwr9xk0PwLth9TEdeIhU8KE783me2wi6QL + sjznAQ8LfcI7vYPf91r04qfGoPd1bh9/x1uid+g2tnKe6sIQ8+RDmdt3fyMPZI4+X5BHFFbfn/++ + fStDiPKqytB0gO2FXOcFlKmHLgmlNuUQUqBXCnTmQvm0yqzVV8N+fBWmq4Wy0L4PkK8WAFy9oTL5 + rror2ob1yxa2t0QloF8+kh7hPFQsRV0ruwbxJxVTcD4Wxy0d+2Ol+6VDb5wuZ5TytR4k0+l2Iosl + qMh9zw0C3xpF0kaG7gvEx/dUNnvcAl2SXrfNZo+r6JL0lI7+r+9PqsEYLho9ytnsPoPJG+F0+hJc + UmFLDn998cv7FwKFWIYDkaT2611SNbHWRbCKAK4Go2UcMRZ4vGIYhZlcr2fb+5dC68as90L/9XGm + bsls+eFi1NRR7nvOFtmXZI7cfrbIVrcJLqTErmoIPg3Csnu7rpvBRePsieqQCbLYa5HKo+I0TZFC + DqKAuTgaygQ4Ch4y8MHXwtE8TTcpZrcgtbvZ7R0y8u1qdjNDj2KB26jfx5u7Vba9vYOVhsOwnc7g + iOGOyVPnXaefqhgUZGXOamsa4kxWFqc1GQkXLTdYx0FFNenmy/ftyIg9JfiN1W60u1S7AFkeXvLh + icRq9hJiGbk6q0YvQMvoyN2rzqkWYB1ja02JYAWy+XaT7maZLSm7EuHMjh/v3ZpaVYgJp8E8hofd + spQGc37p8tjeDkKvW92yknLplqWnsqzGm1Mya5iOTDcoGUK8ly/CKAhdNgqj0HVlYY3Xs/UyXazF + XYCBR8rjAocLBKjZQnysQK0YTpN7rB6/SpfJbDUaJt9QbILJwYig9fD/1YgIAo2RFBcQ+adIHYmU + Ipy+zuZTwi6Zp1/SufBX5Q2xC1yMdQqLff2Ad8YaFKPh3cP1ajaVadgjDAACBgEqU4rlzpMlQl/d + C0VKqHypQqe5TCcwRxV5wcaRasSj+TFnUcWoU0x4L5JC6AQrUrlEIKdQTHe2hUUZr/GwT4fXqzT5 + jBN3T0ek0I/HWXOah+t6wEkaujEW2Rh6yEp5M4UMlxAjMOPcHVr0fKbJCu59EBlu07WqqFDpqbQT + CssuFhGkjWPxpRgtp5R3IbeIZfQIq+hqmTG2HC5S/CQ8M9Ot2DHoXS1YOVGNLvY9oOOiHajwLSL/ + vguyipgtuoknM5xk1Khqp9iWRYklVeOx2xC/7EvQduTNKs8kjMAoKtFgaTgIlqTuYmt1M9agc/kK + CP3iFWdvwnYF4PJGloaNvJOiZUM/tYVVLtBBhsxCPsijq30NEM0RccJvpxXLNtYl7WQXZk07eig1 + rnW6neLlmg7of2qYUY7KEbLWBiXVyB6VQ3ZSQuWgpzTUaZp9e7h7WG6Fq1ZkL2PzhscGVVE5xxX4 + 1k4UkFS/TJeb2fRhPp4/iJYGiDBmlSmShxv7une1MxjAiSnDH+7yFfBoJFAN0cVMsOIMjYZbEYpY + P23igGeLcTNTeeTO+wIOOdAS16Lqaht7WD9J2FpjCQO/idRIPxX3YjL//DDHj4ETNx8+Q+/XCqPS + FVTF8+EtqOPLDoAFrifTIBvW9EBPYywlbB62SCqi1y0lbEG5ImHjU5VoflXBc3ddlLlN+XocRCDy + eSO04KnCNPOM8BMn2V1KEToyE3vt1YujeB/TDV1wXRg+vTA2o9UuznKpMmIs4m5jOkk7yka+QxQ+ + ojtTx3nVqw6maOqU0l2avr8X6jVzMLgyMzgqk1qSb1PgmNfz2fpOME2U3YpeClPvKY5rZEjG6e1K + AN/p58mmIEGJHSaHAQcfoxPwJlcVLAQD2IjRygj+7ZrSrdezOXxn4XdBF8RooZllk+16gNtfy8s8 + 4DLg0FEWHpxakJlRF1cDmxbHay31/uCQOrH2xY9q2i/fiWrzLB1IcJe9qQXRvRIB5sPzovbS9ZOB + 1wYU7NjHiriY466piWNknALxj408CBJeVYEcWCtwLkypmALzqK9QkbMl0inGU9IIUUARq1bHE6ys + uXgtaAmr9hJptdOsyO3dY92TRfK6isgN94ptB0L5SCkmkPFS5/D19lIMvW4XL0WUy/FS4ilJMZ8u + PlTDpTii3prhUmMvjPzAH3lhzAIpxZzACi405IcOlsWcRrzcZugXWgsBbzG8AalQmASPh5+W92wk + bxWR4p+BRveQiTsKuLNxS+JbuTVDXE1EGQRGODhEe4JbYo2Gpi+zL9nw691scqcWaokoD8I/JY4L + SLNf0dWFKZBAeop5grPrrTIKrdMvKUqxwtEB76frIyma4aArolmh+2Ysa2AsEW8ICIujwMNM10pk + WSYcb5sZ+uJwciV1Y4eU8309q15yMY1Gj9kH+Mm1psowahR7mO+GlbSL4oTUWyV92E6lrIraYZZI + qu1DK6MAN00RjfmNAmDgc+6zWsoSvlWRhJ3xC+y7aVp6biTvM1NwlZkhI4sul4L/XW+naiea5lUW + HUbXFCZR7MPNTnsfTorF7uFRHX6RTdffMqHjzkyDOUJhNCdw1xGarTNkBcAnm6enLiHHYowidbUI + 1ToqebaN1eVxk928ibzh0JwtQIeeCaSMctQla0dXIeQ0U2RtKTaX7jaCI1jclOKuCcOl9G84KLBq + eNAJClsz8mPBToR9p8Cz89tAcmz8TV8Mo34Z9zF0lW4eqCzB9YNo9THZvNLyhICVyl8RX0GjpjGC + RLkZpjdYWgqGN38Y4FWpo2Qd7sqwM1b1aRcXzEpswZXEN+tW3IqAQp4pnEardsg1hcN3B5e1I8Qo + KRXOLgGA4aJV2Z0trbhCq5Y9WJIjpzmZsu8elnfJvEDATr1Cnp9PVOlyqLswrIaGvIbGUORGFXZl + p1/hqRWbqPmQ29BxUVUTe2n3pWJHy/OoKoXcWRnI1C2nXogM+dSXhYsKmcaUeY8rrUnMMm6jRTr5 + XBW2+jIW74m49gNtIP4Mr24O0FgjXp6YvQoLynR5o7L0t3NRldZCFXF+O2eM2Wst9LqV1iIpl7QW + eiqTtK9eVWyvnleObQhfjhkcMT8cwR9R7O9O8sjmQL8G0OlvlOShfPOmIVJdcdK2YcLIwOnPspIK + pmHAZ7crlUBE+curdPzXw20mcBrX62wyE6nNwkuvwtbp1leHU/7452+XoFWeHherfG6vZzBK1DDn + s8+gX/3+6vy5Kvv54fWf2lnveyEjg4RvFim7R4ercF3idSgDARTWG45adK1fv9nW21EaAWA8AoBR + eq/htGuJmHywx+pnqmeWc759aSMVI0sPKPIBJ9Syc+azFqhl4nU71DKiXEYtE0+Ja338vVrQkfEo + rKCWcQaqdTjiwEYUatmphpOT/oVq6RG67zF0hiRcJVBXbCqlih+yoIg63QJg1YRrhQ/EuEezCJLg + mh+3m6pZpCUSRRyEzIsqaGR98csd9Xpo01xkc6OkkYlD5pt8voAcJoc9eGpLM8B9puOlQZb+aSpZ + 4Wzv6YCotClI1V9+T1dm2zb6WcXaBHkFnNCJ2xWN122sI21kF2agDT0kVkRoThdiR9LfP1xeqFy9 + wc5f4awtI6PmxRIeiCgoHrqy5Jolrpp9lI0sfbn5/hR3QUtxdQdq8CWcqMMz7a236SPs7cDP68MI + WGXju3r5qpbxNAJHt3aG+6gR4VNcaOkrfwTl7wLLFVDW2Ptzh7v2Gh+9biU7Scol2Ymeynj2D69Z + VXgKAxPy1XNejv2YcWcUcD9wzBKoxk2L9hB1x8ho8Pspq8Hn+hvh+e4oT3oMZ3c+V3fldLYGwf4B + lKZU/CEqF+Uhx6t0OZeKzkgrg8oRLSNI6sKSKUdgIJZSQws7zO8j1HpP64oQoO9WX4fbxifekeO2 + jLeVjawDblUnZsStfCpzo1fLtQSUM/Nxq+gElDCvLlfRcLC3jXz7yvwCAW8QoGzhPB14A2XpwhzQ + kvCkpN4fA5fQJZWtj3TtoGY6ekdP6Ajw8D/gC/r+JAj895dO6NrbHuh1u/uTKJfvT/GUmMpvV+8r + NcRZVL0+X2D0R+SOuOf7ocwG+5ACoxJlXhK4PL49YJxQNq8EfkicBmFVQ3/cQqRJpitxfxhDO1bv + qhfuki+wOl/S1TxZLoHmSFRrX0yRZ6srSpChrnXxt/W9uGwm2Rxnf/YlxfTidCV8eYluOYRLEtYP + zwhe/V9mKoKELv7f1nc1Rcpbm31h9iI/rJQl0vNVG2ERlaM28rRtxrDGexyX7n9BrFisruJ5xzpD + O0oRKbKDv+uyDnCva/mCkXzhhOT+ERAjt8n9w+EG4R1glbAHXGrwJVljpr30dQnpMy+cczvfTjL4 + 6xw40Kbh/trRS/fcdyr5PZ8tZ9MOVOpczi0+glKN08X0oPb9eHU5ocaoQ9WxqCQD3SPS9OaHFWty + VTBAOR687H21cnt+Zxs/hUTGxUmYJCu4sA4r2NOP5Z/qlfx6yRxuf/vS61a3r6Rcun3pKd2+b89/ + E+mBJuiJSDgvXr/uyxeB58cxHwVe7CvIsvN0or1gah6IG+cCDDCVt/OMLTGuEuEzNvjk2sQfvpln + k4mp82Ibp1bnHX5FYbIxqNGJeal8SX5xhb7DQUKtKMC4S9Zp7TXo+64VNX0LGt9iEd7mm7FXNfQH + jzHNA7Hw+i6KGKlXIFoFxDqLKsgqvT1AFQiI4+RrZnlQ1eGIZCKVx502UAX4umUilaBcSaTCp3Q4 + fr88qSZSeX4lkepFHLhhxEZx4EWhdIt9uputML4sXeLULx9WM5lraIhHy2Rz9zVR8t7vq6SaZfXk + cNinM2G1y1bZDuR15pfz8YvAPxyu2ICVA2oLk2QAsjaJk5w35fwr+oPXxlhHsujvXxLVfCPWKF38 + 9YAxBBO9WiKODwaRfcnM7hGvRg9yjeXJFiBDbqiu5Oo6uc8e5uPzcbJGlAcE5AKenxkTtkkHuKt0 + fpLHqKIjp/SLf8hu/2HsmGRtW/a4MSSAS0Tq3VPcoWZ3Dx00DJ7FMiDpsCn57pm4FTRwRnWbm85N + u4luTa1pS/QD+8Mpr+6v2WJyACpNb+4ATUgCX1UJjSiu7HaYLcRZzRbjxWxD6DzPrrcbOHYbme6e + Ph/Cz9M1xmJTUYIJAvFPresLytH0BY0XxBq4FigeOV473FpqYw1bK7swUWvpoQUu5s4fi/TRqBvG + gcQifJIhRv3h0iqZJnT0SkaOf8RaYmioRtZrqToxF1M+JRlnub2WGNN5WJtiCfPZLR6hZ2/48+Gz + iw9nr4eMxTDtLHg+aHz7AggOkKpYYk9iV/QYk6avHJ+00Xwk1cohFoXfdvMTnxJ0FT3d1w+x7f9M + 2K8HwDZ3xMPzGSeAQUrHRrS1b9o8sZkt99/U1lfinjuIKjnL83DwTRbJ2PLZdFwoA3MYVcV/FAT6 + xSv+yjty/DbsR7Wx5D66iyLzUQ+J93y5T6S2pKteY4lmjcDxTDmKTp8boTl/UJazrBasXxogPQFy + C1fm4KlgcYYOuW70J+Iy5rzvF5sECj+OVH3kYa6NqOLIuF0PHyAQj5kiTnLTgzX164fhZLsSAYQ5 + Na7O0OGD8n0nypFiqkCSbTjvQZzIC5mxaPQ5Yz0AZAvmNqzzHFamx3Xh9s2nZwe90fAPJoPK23zs + nkrnNevlUElEDVWp93qf8J1BRJx9t1wuGFyywJdQ2tbqugD46K/8txbPY0JpqFuLSiXylWwssPKA + Vy5mB6EwKUasQe8DLz4S+H72cZPUxDZsUnZgRE3Ss7wGRazqjDSUmmBxUxEK+EUQQLbLnMh7UkEa + P1bw+p/CFX/v2IlQBD//+frSCVrETtDrVgZqSblkoKandHbPT19VkHQdHkRm3kbw8oUfRoEfj7C2 + uhPtzjabroB+7yWF+jdDP4GwRV2aiINmP/ix3OZnyreio08lQCnb87DSZJFDSI7Sud6pQljoqRs5 + euO1LTdITWxvZNmBcSPTMzqZya3IdxQaUEHrKTzmxg8FmngL81AqP7KKcrK6nS3qUS7bCXGxvF22 + qzTZE5CQy5nk6qdK6gpEwHJz0eJiGIYq/r1CdrWdb22s7g4lXYqv72Bvj+QwCrNfpGQFObqPyA+y + lLv7JfI2lvI57DFUb6V3rN14XAf4vLD9JAsEyoDxlOzlVjO9n8z3N9+HhLn/7pK7LbLS6XW7/E6i + XM7vFE9V7cGqnABbySnnd45jn/uuN4rhP5EM8rjI1utZsfRKciumQEgLF3fXVZh6M/h3tliA3lhX + 6gaOuGdg+xTRXLgfxXCIK9KDGZ1ckkXiBhki5n4MgsBjiRBCAJZmEwwPpMMhHxgua9+JKm7xIkgQ + F5CQlTxRmdXwJZXoJbflMBXmOuVCO/lMRhFGLVRwQIH+3ex6tilI7s9gPdlyLFb1OfCBITviww+v + E4E+MV7fJUsRSSIW1CzIpZZ3gu/AQUgraGuL9CtC7Uvr1V/SsgR6w/pY1OJZ3QNjlPJ44YPns5t0 + uF4mCzP7vxRgnqN3DnCv6xxTL7AHw7FzmzKXAvMaFsWaTuD5hmfhJpvvx5ZXnMmPyHKxEB/9JS3X + 1Cnsx70D6lwAp4+sgbokihLjsBzNIZT2Vdn52Yv0qIuIgv0/XLpt4FHodauLSFIuXUT0lC6id+en + USWiKg5L8Cj+y3EUBzGMAeN4dA3c7B41NVGmI7m/T+azZKHno1j/HM418jUQD7gCSXw3n0RPX6UV + kUipyq3P6mu3gdbjNQ6Qg/TvhGVwtdv5w0SIb42xVH4cNpZkQZtUFPxrcEk8JoMlX+c3Sd0CsOEz + mPAQr5Aiz9bDKEfT18JGHyPpZYaFP+DISAaXDgXhfGK+zLDmykLDwCA0wRw3PpHIViAmyk1DuJ6W + G2eAO1VHacU8GtAskYMRpWIUnHFAHSOzkai4CCqz04FgZBBsipOyAWGj6pv1K2R5t3ynMKt+4pkc + T8b+N53EneNQjDbUsAjxKT8CLtoKFoHaWMMiyC5MWAR6SEx3vUqlLK8unvEmxXoK6bQMYUEWlIJx + Qcd9hLEDqsHzgYydX+XMQJbUGpbTc66g2wH2Lcrhhi5ZyFhAYNbFrJO7h2X2DQ6yvfD0U2CGBLyQ + zNL1VAdBTJHZq9tMp21ZxT9+g9Vci4ShZbKBljlJaZW4g/XrTixyxJJk3x6o4N0UZlacmlQ9Wy/T + yQz2vcVUNC58TEWh4F6Y1Qi+9psTztFtuiGAcXMXGRhjRA92wDwVP+pdaz3inhN5kB6BicG9lpay + 0w6mGVCYBO3UjjuBOXLfNygnYsoLrVtRJhT0nUcWLrEVguJjjT3x1e06QQsSJQkt72DDZL3Mied7 + VCliF35QW+NUFO84CW2GXQuiz0ito7qmh+k+dVf/4wPlt7Ia76MVN9MqzonFV1nTajVAy+KzT1zB + VUePecSHtNQHb0nM2JaUeOyK2/Lq8s2ri/HV6ckOpJ8KDmlAAnmxTKaV0GrVcOeCuqFTI9fs9Ws1 + 3T1AziNWBhfvDfRYRSdr2dM+VIWoOnp9GR/qmIskPKLDgxbmc/G6JTyioFyBR8SnshTF5YVfMZ+L + qJSS+dzzAo/5I8+LfFe62TerhyXsZixcJlmxqBdHpRtWS//pWyXKX9Cc9BVVaBeTvqBnHjjlpK8C + 9UbrBDCZRuu2A4pJEJdLaB1Cteh9QGg73/nX4FPNtxcFxIZ+RtpeoRHeUeyRoScblNnWiGog0OkL + wb1FGgPcdTrAAOTegRwzHbFqv4cnbx1MtYnxtCBogSDvB1GJWGeBl/nas9dNcCY6dUt4+HLETihd + 1xnlJRbISxyLnyT1zY10Vfhk/iA+5cCst4gGvJMXWX3FYZT2BbeSov9wOBFQOyiTDpMcp9k3jLGU + lsn0QLczFaJ8del4LaDx6HWre1NSLt2b9FSCC5xUYIVZ7LMSrLD3coyIP240Ql8A5sEWsfFqIOFG + w3tYTwHhksPNTlfbW1TPZ2vp0KNotusVDGeyHHzYzjcz8U4xmllbhbFgCAg/iNIiRJX1FlFdxFkb + mfB8hS5A0IUfFiLcYTS8xgRgLHYoIOo2WDNKAMzNU5zz2WLwv15favAXjBjrJ0GBjFj31c+z0/P8 + iDILxIFO2nnbnoDmID6BM9+Yw8PD1H2f7N35dKY3N/Ptt+Fye79sIYDLIxjJdL/TU+bF3pHD26T7 + 5Y3sLMGFTgqm4PwpHclNcsNcJZmaZi9dg76kBQxqdYRPb8/OXmulSjmEPiH5gegES1dHQewPfiKQ + ZzJNd4R13tdHWO2jOPltu9sbB00gUzI1TpeQ7GzJadW67qPlRmoXNV4gGTeSNPfmYTPWizIvhMNH + VbpB0CY8AKVfdO7NNoUlYsrJ5b4OjlgreFLdxtbJpbownFzyIXEzZdifztbb+Q2CTszQXykmIfsG + IhV8IHwL/pPu9cGuFuXwWtW/yHLxGPG0gOv0IULx3SDomzjOwzeXw/kWtJgD5neobcZU2ElEF0Hz + 7NvwDsaXgfRhj0M76GB7tEfjtLVDPl0hwg0lxsiOTdHDmaFSH6fncAzsZXJ63Uoml5RLMjk9JQHg + 7PyPoCKTR25JJvexQJEXsGjEHN/3pExeHwGCpeqyOUwOqipKl1J1JEzAnZvZar0hmB1oiGs0uUun + Y5gEjCutt4Mcw769o/Q+vQBSbj+bf+HLgnIpBzVSJcpSUeevGAsm1QJoGOwKW7WPLGWw/dzAdaol + TGsmpd5s5sZRk0kuikNeg9wpoxNqLKtGdVfeaOoz6OaZMHI9hrQe0tTQsCwm5ppTKSRbtPyp7hpC + iH6mDTTA86O1OJ8gPJ+6OYmKsdkv786+6owqPXex4yb7sXGqMbmG6w+3lYNJXe48kHkKRqAq5VPC + PO23rAHTaB5KO5PYobR2z1UP4Vgs8AmK1dhBB8jigheSCNTEOe1WLSKRHtkcJU52iceNXJkYAupZ + i8Jf4nXLxBBBuZIYgk9lucLf/1e1doXneZXCX74TxCEb+Q6MW8bjYgQKppXldsoJMNHpw/xhLlSO + GylKi9pQMAMCTEK8m6WwtRaw1e5FWlpdK1ga+a7qpu615/I+/7D9vzUFMp6aI6341eM9s1bvYHOd + oHLNmsiKURzxqHKzq86wH2Pud2B1e0HJ5TYqOMhUN4NTq01QBl5cp5NsMdX3uNXwzPwPMtsaMMQl + E+axEr/FFa7jfk8/Xbxs3FrjwpjXAzwcOpOEu1StDOZFsLW9Qz7IcQYSgJeTbxd8tFsG8KkI8n+a + 3whOjOD7hxw9q6/rt4c9uZ9ebkTtSoqyrzVGZ6cBqvuMijGdXrI29xm9bqfdEuWydiue0n12cvK6 + XEyCxbHPytrtC5e5URSMXOaJ8HvhcdpuKF4ROp2Pk/kkuxOxnwoZByemBnb54gitqg/rDH0Ps+39 + jubH4tyrNAX4j8jQwrKJmFL7kG5AMPmSJnhRJiQ4KGgCcnPRZXeSTGuqQvRVDWrHx9fdSSyCy66p + TgQcfQ6CbukySuaCbFpMAzGuHtCn9lEcPPnFGuBW1Ipi6IjwjThwK8Hvm+xbrTm+KZYUBGsmmCNa + NRMZYoWmTXt9Bs2XLPAI9qtkHD3w6PsSC4V7LQxb9LolFoqgXMFCwad09P94f1URZR2vBGTvBpjj + HAWhO4pBt4i9fVgoQL+m8vbfqPRajmES+OFAVx+LAo1U+to7Ym0AqlQTa5RS6sDEKBXPJEBVMmV+ + ncuy4O15r7TvZmfl+4qz8hIJDwR5gVXKHSr06YQsNC7HdJx+m4gacrJSnPAzDqdbQW67+Nqk/O2q + MiIDrKmTayEk09/X0OGoiJ6tK5sLOaiPXBJO2JKyZB58UHsC8e4Zakvw+7tFddcxwXUWebJY3eQ+ + uQVVZTO7386tXZ4UpEeAZTtmR+5Lt9lotKv0yI+oo0qZj5hMWTpNHdxG7SunkoPeQJY/yDUbhDkh + daoOJtXRT+w5lNFz8umiELqA9O5ShBjogBXvUnBPVzq+TzrObJUtDsdTaQ9OubeFhUnd4UF1cjtO + yA9wuueKW3/4P1E9oZ2InDpjOltt12MMZk4QXOq28FK7gXiY9VFdIf8fY/cfzYdgb9RwZ/AeJW0z + 39V7f4w+4e1qOIH7AC+dg+IyIyr69F/nLGyRz0CvW4nKknJJVKanJFFd/fOsUnKRc+QVRRQGDqIy + hwkYxZ5I7GgUwEhYvvo6q6ql0NMvVx/f6suiqDkGPvMa4u/jkAdxENQbYikPfZXeZ1PYGqJQXoU4 + XlhxE3HHi0D3L8vih55l45O4WfamqVctuOfxWIXvMZRh120EZpAUy7g+es7raMu5Ut5VlaawLn0k + sOJiI53+vz42o2HNVgKZY/EgplLwCjgo4oCcvH7PRvhfPhq+OzmHv7//bTQ8+/gbE8Lt1e+nIP/D + ptTW1lCWxfkJwgY91/G8KgOrnX0rJ5MfxUIeaMjsbDfyCkrCd5cdxTnHJmVesN8K3Fm06scJ2f2y + b76u1KUQ6WLf/qvoyGHtan1TG+tS37ILs9I3PZR1dU8uLpX3Xiaul6uvDlBqF5s8HV54cExzn+rr + ZMkGU/yPqNwdRTJcjoLEKmViOxSdegRMhENJNiMW+E5ZvQQJ7zsl6e88l7I0fbuZ2xFkeChcpz6t + PyR3u1n9sAhNtJfbn0SUo+/F+ZLvUnntdfi+VMMfA97TcGo5iiCkOd/vsDHUbGLLlo+KO6rpxMzT + 0tNM/NIRyjSinLKP5/CR9roLvW6lu0jKJd2Fnsr4VRAly7qLx+MSglzwcuwj2Hk08v3YwaR6vNYK + grIZd/Xx5PWzF88LctRsnU1mG4HvZTiF6qMSc08MUC40hUOazJd3yfhzuslu57DXVlQUUrT6dHoi + qsspv97Z9K4axFKC2UzE3JnxLH5TbGoU8EAnXOeKTtO3DZ/BNLx43hB64nmN+hQLfQ+0lDLmHHzu + PWUvNsWYlGrr7qVZGHmT75A5TTnd9SRhPgWa27eHubID0pqYHsl438cPnujeGuB5yXHsIlKr4HuI + MTR8fEsxzIKcRZo3k7F11UVunTDuSkS9yhZsnXzeU2hvH05b58fHv4Z+mUbOlOxGERMwQAmftYkj + aVxi4kxW6nPXyFqHk4X1PrldAMsCafFwscYNuZBoLw9PIustEkoiUFlzf6v17E71O+jvvQQ6aGoB + C3ZQKxrPkRGfvh//9h4LVGxFpOM0W2Sr9QgvBRSt4Y8LmFBoM0mXpHi0imp+emD3sUMYw+eOH9nH + gNHrdhjDRLmMMSyeSuv2h/OKhOj6ES9jDL9gfuxG7gj+COJQSYhLYRnIBDbAfToZiujOOazs0fBS + VzwSrsd88TVurIIbvrqf/wzxyKQn5ai3Dag+fpOUhtVgXc8t49WbV0y2gr05+4s2m0BEmGXCQFyS + BkP4hgaQnzgMvbiCarzPYW9IcHHo7SE+2L+8RgSyssrCCZl+/HSBPEpe6Mcm+s+HdMKW4ssvk6nv + LofTLcLpF8csjODAxISFDravFth8LvDr+41RyE1TB1JtsnXhElZlDGMDtKBFNwsVcz1AKgXJjXz8 + 9TCUMvZlXqjD+ahB0N+zPtNAHtuCMaTmkNuNuwfc+Vhkiv95cc55YH8n0OtWd4KkXLoT6CndCR/f + /LNyJ/iOaxZA8SK4EzgLg3DEuO/68k74dAecilBLF5MMHdyJng4RYposhv/rl4/jFSpvlKkkq1nM + VQFPUQsD5mQtLntoLVw3+BZM3//5+Pu/Xqib42P6tfebI+f46KJSKziBdU43ILA9O3l1+rwePcW4 + B2BVmsNyIwZXbH9RicWADz1Q6ZBAu2e6Oh6erBe/vJsvaN5X0puJh2YNlzh8yBpn9sW/aLaHGiF+ + BL+vUdyaYWUSCgv+PxdXZ/pN6FYqZsiWk9sc7xxzVWG3J7eq9ChKeHdbEL+GHxLY09Ns/F/ZOl3e + DV/P1ileHcpZgvtPMfWASewf15VIvspTiB96fw2fCMd0Olvrf7Zk690whTzOKQdFV0UsXNgVSnjc + 0q+Y8QnbtSZeWkVROAQNeY+a0CFVfH8wgMkPKqLeXt3vOUyO0nrzST/Quu9FMvvoMcLGbGKdSKUv + FfVtSSVkVAw8j9Idw51UrB9xWOx8zHWodeS2Lcqu2lgHW8suzGhrekjXnSgbsX6YG2lGkvVyPrjH + 8a/NdKFyYPXJ/DY2SxfCA+EMdl2JneJFRvWjQoLvx/F8tvgME6cG0iCftagfTLtviua7u2yu6MM/ + b9Uc0xmxcYDadys9Y+8uzoaYFZ+tfj4XawsEmB/qurVyoD4RkGtgJEGZ1P5Ptat+yDhV6MTys7MF + yON2xG3vYIfg9+tYQC+hrT2mN/phE6mRfiq0cM3uhI3O9jgq1k0Z/L9dul4LzYZet9JsJOWSZkNP + SbO5fPNH1R8a85I/NHz5Io5YxN1RHHlh5JgYm0ZIHyrkSty7fsj1OqrUlN7TP+ANELBJZ7lMv1R1 + Fisb1WluSYp8kDwrSDciuk3wMRjdazPwqh5MB676JqXI6ENrKYUkGMNixEtZiLnFCOfXi8tWLzMQ + r2xeMEkHbN8YB6/T7NuDzB4u7uOR0GRQi1S3rtBBRVY9Xb9rZd4ozNVfsLFGQ1goV1qi0i/h0syo + l3OAOg7sPQTDmWFcKGJhCXuQmP8BbjelyPhRSNYpHoiDe5hJRd+XPFBJSTvm0eqW6yO/aS+B5oCv + vvOJHruoeE3eRVdt6SC1pU/HW3f0xoBAcQqb/2AXXhTqjb2Pl1nt724Uf06MgVwL48IQMG3gjy0R + ffpyexH0wdtzuGztBQF63UoQkJRLggA9JUHg/X9/QrtPQRJgngvXCStVeUYjJwNFLB4hsg8ukQF+ + cJd+y9Zp0Rw4UuGyMBHJZjjPvg7n6Zd0vhY3SSGUFgQGYJbyTWAqt/PtBGmRlPD+24Y5FTGhjDtt + iAuY3VBvcYxiHvPQLYsLNyheloZfLyf4rm+Unj57V6jCHLDIiyuQfrcJYmPZUvfaUpeTZUPbb0mb + BPb9tJnvm2VAG2lrqae8XcwE+MDbO9TBI+68gTgTSlxhUeT2gbkOX0V222IV0A7EKLG2PI8VMs0J + wb7vRDkCuj5Kh5hZDw8wegIadr9g8HjQxIjW29tk9VIFtQzXD/ed6Yr9YzKr6rLt7GFXerhL9vsS + v+q1AzHHBsvqjbxgQrmZoW/ynEexXNbrtYhYGuvyWIf0tFMq8BX+P4/8Ixa0g/+XbWzR/1UXBvi/ + fEgSwv36LpD5PdvNlYLBFn9Xdtg7qrE9wFcRwD+G40QG2+4qVUyrOoP7fiOcdS31KlsCjxPzsDsF + 0A+lZcxApJOTlcLdlVIdUsvqiz8ixOBHgjF0TvOz8BC1SGnp6G9ynZis4WqrdlEfXc5kNPM2WcwW + 6S+buwcBNAjExf4//IMVlwo0kL8bHLE2qYeqiTWMP3VgoviLZ8SX3p1c5oUaiw4k4wflZvpjufZ5 + Faqf+sCa06DlDPqpshMpk33BAKNLCddSrRpVgoiSrwglH/jOl2SyRVi3HcOyNp77jmsUIzjwU1nA + YqEPy7Kb43uYWxHI1sMgXaxjh81FiOzwBn5FnjjG7THt7nHzOKP8rxXswgxkyGlhakfCDSLCGWDm + aQna9yT4XuyKe8jYkh24TYfaCT+2AKyCCotDWaCTBS2Swuh1ywKdgnKlQCc+Jcnm4sNlFcaYh6xS + oJNFYcCdEYsdL5Qwxu9nt3fD5OYGwaYehqcJf/HLhwV/MbwYC+mDYgZKRcDQ2p4fCLjpsZlQSkVT + 4BOZeEesi2lmF2/m9m2562Gm1lsMH1vrE7wG0sDXR+oV8XfsYor6kUwiIdPKxf2q6oAp7wkzdCxu + gt5gHEQBh4VlG8IkmU9m2/ux/myB61AKqDDtFFHU5OVwfM9nYSU8rXsfJhgy3Jxx5FeQPnS4vHVH + DMu+NH4MTJfuJUf2oG8RJsV66wjcSmU05/oJygOrjTj/Jqq8edprR7pOJ8AxsSbDMtncfU2ML/d8 + x2sKy1bTO7A6QuYJMg9M/ini6Fgdm+IhEZTyc5JDdwr/FUXoSdUGR8NPGazPViw2yN53maz+8Ble + RmBqypV9n8zm6cOY/sB4PIzoGyCr0TAlzPVlNItRPKYQzbIniKVR2Qn9ggzaHSihswBEoU/mtmtN + g4LJ6GkHMgGRqTtfVrdmSxJ7hsOVsaL2aFoOiPw56bdMqF91gZY77DFdcxRJmyPDH90arcpAWrfd + 4zT8e9Sy71U17tUl2lcmIV66heOz+xK1E2M7UXzEwTaxZ9934jIHaYMS0Y7AI0fHomxjsLDuK8r8 + gPJ8S41HcL0iaO5UAF8b1tb77Euqwurx4h5pnEFxeX7BbHDQKxaztlHUfUImEnNpCZko8/nx5+ZP + FtZoKlJlNyilfAngqD/PL1kY2Stf9LqV8iUpl5QvekrK16e3VeBtlztmRTnPezn2mcsCbwR/RFzW + oD0lvIAlpmNMcUb/HOaZSqTcfLpZV5WbdTbfYiDkjboKzTAz7jeIwLHPWeBXFA+FqUTHx3Bh8qgp + 66WBlhACzbTB+vJsHmtK2DQoF/Idi/lropuMkiyE9CumUD4w+mFBtTbbxVm5r8GupRjp2ttKil+L + alFKrr1+EOrux2TzavhxrLOf6JVCcMZxY92UMryYIfyrZyCf48BOhuvZLdAXr5PKMsBNqLMm4aQO + 5JeTPahp4nbyMnGTuyTeweffJnNSZ5TZrqG+Z62E5JLhq45MO1nrO2eiUCYhSTMijljvDpuEwt2A + BBFBfq/TFa6/mJN+uxBHTOtlthSL06eYbKws5Mx9E7Y1kcs2tjZy1YVhJJcPiWmuQJW9xgMuszLU + 5w1MyAv9mv69SB7t48yR0HxeIBy6dKwkK0kLCnUH++YhOcH2JXIdz7B6z+5zI0IJYmQhsi3lUVsv + gTUdaP99fAyWnwxUDi5zwivVB7dzoVzfcfSJ806jI9YmJ0q3sT5xsgvzxNFDBXs8Q0NOKvKEQFiA + lmNMJUoldqL4s1w3+qBGxfGg/z3yuCo2LbYOSSoWmr59nlJbynv2lMdzaij6dqImgz3ljPX42Z7H + aaDanWc9Ylsucdg9/bN6g3pmKl4YssLK67PSR56RDCShI/kkQPkV12MyE/TiFfdeu0dO1CZiqNDK + Mhu00E0xHzR/TNxPoBTltvcS8lGRe+GbY6s3zd5BGHF9TpyuJ8Q11/XJhK4PuBUC72NW3XKeKnZI + C2d1x4T2tkFG/RktO6WgR5ziu/6aLSaH2+p6LbnmO1wFF8ahc+QErWILqYltaKHswIgspGfEINbb + 1U06wwDtCWzPZ1e/X771HKmdPB9MktVtBqdFQpyh90+Zb6Tcvi6xBt0jSkA+C2QQD63gm8s8gqPX + KJW/KYr1o+RTdxJUnoCIoS0EjFhrcVPle0hur0P2kjqk7v+3VplBAW+VGQSv22YGIeVqZhA8JQPt + 6W9XXjUxyPPDSmJQ4PFgFPqBb+YHZzcauEfZAUcShkdi4pAhAv4+wRt29SWdjuBfGwyX315v0nl2 + nyI47Hz+MCYQpWl+9snMe5qtvYqZV9nInq3TxXo7fLtd3M6em+BBLm8Le/cEii5aTizaVF//fuFG + Dk5jt0mGPfwf0usA9jsTXdPGp78EeRqQy8VDGcPhC8gE9U+fR85AWn4FZ6gz2f4kTE4zIU8DzJwE + RyIhqgW+jGhiDS9DHZjoMuKZTDzI0utPd7O3EhhtgP/+pfigQATxYny3H6WgheHOSk74wXKpWlhf + LWz8jrUt0kpNbBdWdmAsLD2jO2aynErr9AYhvoDcneH5GYjHz+7ZyfPqj5XI7lOgNkCSYhOwWG4C + hwyNgtQu4/QepwDNeGGcHc3QLUh+Z8XQXrH7frkjatKYRJa02hj1Ei5xhiCSnOGulwRzkIHifFwJ + XNronvrIxs/HbfqwNx71099jZ/UrliOSRf58c+54jr04S69bibOSckmcpafEan7/dMkrhb5haKY0 + G758EUaO745AUfGlnvosmc8SkNxOswVopJfwve/hWl+hcDmjyXgupdHfNyteW/Z7+BVkjh3yaMzD + RvwZuDVAnXUrcM5rdJwshgKOSFI25rUk8TKvUeLFguecP5rEm0+APaiz1wgerQY7ONVkdfYK4qWq + sYoYXh1xf0PiItxzOGcgFF3DDnrGxsFzTEdNFsfDpUooV+9gM4rDFe6pYx2UWwxGmC2w3B4wr2fv + Ls6ejwmxLZcq0bYBu+cvGboEo7neToeLdPL5eHgnQF1XKBliALH+mkI24AA3rZJAnTAIBM+Pqaiy + kUjetbZ3KIsgNazV4xKrCVIdyC1rmGLV3Blb3+7K8wk9Lf1WTMWSwK8tb62AKuDmH9e2PcmAWiq/ + yeNyLb4EOUVZwdgxlP5VDESLE/tP7/UDXTU+5bPXhcXRMwp++22ssdYE89supq19U72F8oWxRfVj + Pd7rzH6s6qIMJTSc47Qo80uvW0LDCcoVaDh8Shfl64/nXgUazkfEFxMabuy6YRA5I9eNAi6leLgY + M0o5AKHlt8u38l78M1sB/cnTr23wBIw8A42TprTYw4T81tjvHo9kKSX0wokV7ADf7juRLPrGuGsv + 8tHrlkXfBOVK0Td8KuHbT97WFH1zgnLRtxdu7AWRP3LjMAhlyer1Xfa1kFWnxPKCIC4v9Pvk/h4F + xMXwt/vZL+83qxNeMGxSmJqOpVJmyz8Xcxjm18PgD/dv42JwXE18jRmp6jahJQF11/O9MmJhh719 + Zc6GEAFVfVx99EAAS0C8hhkpIw3mjtg7BEcgb+wxrMAD2vtgq1xvqcQZBWXcZfdptt4kMtb1F4zf + W2ZLkSlz3N+SDj5+OGEshzd0AsJphxOAB2Zn4OjuJKG2ITbN2IKkM+uvbzuQ/e0busZgWlfPAoq5 + +wNlmkh5AYUE1nrmxYbYS+o7+9J7Nfl5nGyZzYGvj10ta4+v2z6cbx+hoPydNkTrlu1QWo8rTaoL + MpaiHo+8NijA+LqlqCcoV0Q9fCrB/34/qdhEvMiPKijAkRd5oT+KvJgr7/2pEizoLDc5a46bSjzA + u3CIb9PxGm4S7dMf54H8ecLiFD4J8bRu0zXWQsES9+sZBgIo5ZmQIZYC3ycvf0H4gdukxiTTV2WU + vuRF+oAJ5k4Jucv8kpIdp9E0AoMEHhn+a/DU12aAGy/HA2aOVPfFudo9F5UjtqeUSKeoysOzH/oo + QdizQM6oxt77Sxb6/xyfWHMc1cCK52jqJa6jnsvQgrIt1nU9N4qcEuNxXr7wEDUuGMEfoao0cSZm + 42ZGNn2yg6g0/QeCqf40vji9VKL23Qq6/jpOag2z4uzqZ7WHN3JDXnd4n6TWyCNQG1FrfEKOZEaF + vD5cuqwF3D29blfckSiXizuKp9KmcXZSTTaMw6BS3DF2PAF3D1zJdS3CWYoKCvwddI0vpNYs1+l2 + mt09LO8SUSTg6+YOFnuVptB6vs1Adp0UESmevXt78Xx8s6UY0pLxeK0Uk5wTIWMdLnEYaP3VQadi + x7+eJX0UA2Mx83hYhUHpabPr2aLJsXBhAENoBN9lTuAGUbnWY80imH4GxpvqO2qKu6NuntT6D3Cb + 51W7CWUEZ40OrDnfJY1aoXLOQRve2NvptcmfkZpTN+N2atlPdkcr3ibCaf98dcl9z95eS69b8TZJ + ucTb6KlMpL684k6JubE4dEswVt7LcQjqUOyOQu5xLiNrPq2S5VIHUMAWhx8+v05UEvVqzavg258u + Ty4uzGRhuCUb3ZchDx32aJJzfQimCW1UQXuqDG7w20JAbzLHKIdhAnapfbJMUDTF+EIxE891uIFs + MZmtxzSgr3dYX1CGGa91YOg0m3xW8EN05EvQQ3mBQAU/RLhDolwHLMP0YZ6lyxnuyxTLRT6sce/P + kiFsnmkyfHb15vX5c8QeylbTdDUQO0S7ET0/6gndsFNg9aMSb7AhHYRT+LgFNnoN++4hkUucZWxC + p7wRqbCccuE7tGKXyVpgjj7MxwUcm/QbgnDcYkW4yQ+pJuszV+U9wKodsbhV3gM1sc17kB0YeQ/0 + jBj2v+//7RH3hb+dqhDG/8KnqvAnviLSGDzuDWTVT/I665qKq/Q+m6bzjmnWjAekJMza24VZ4JMv + +m623sDdMJymvQTGeb5HRZxNBAZxRCer2fJA6lQPNHa0HVe4GlZNdUH7C4Lr1aCMvlheO+m9ZFAz + qkjyX+eMt8g7oNet5BlJuSTP0FM6HudXHyq6GhYeMXU1/vIFi2IQ0RGVUzgZdvmf/z0H+o/mbnsC + +v/V3XazIWiTVToOnCvJaU0XmghAykOu4FDJar0wW8Lgp6SfY81B13L7zh+oYtjJ6hsql1J1EJY+ + TM36NLsJlpit9TARo5imNyk2Rj3lep1KZPPLdMaWg5PzVzkWYtCLNNKu+nB/lOzqGAPN0C3QLM92 + l8EeTrgh6upp5po+Sp3kiMJb9UrvF3L6EERE9P2fry99l9trjPS6FYeVlEsclp4Shz25qLp9nNAr + KYzByzHz4tiNvBHzMeWA7bWHUQRmxWyhblssfqyUpPUS5g59C+gmuM6mZLlN5hlM5/oOGYB8Y31c + X7rwajlhjr9UHH66gu+rRhhVuzFLRTVj6T5dXq8jhHjsyayjMMzLnIu9PBqieWlF+U6NgY61oFMh + CXWIaJsuEGI9p4pQWqlIg1m1zvzsmCpA2KvV5bT5ps4RjzEBHal9fEiBoT44R6AcxnE7h3Fs7zCO + ax3GsXIYX15WQfu8KKhxGAeR64Yj+CP2ZETVJUnzMpdbM10CKRY3FJWFXdUA97UV1ETtBb9S6K2v + w7sqpRIZ5iY32AGS7kWwKmVqNZJGKRo+aDRgyQ8dvFmv0S2WlKLhcZ+tC+KB+vGcMcFwRQm0AsC2 + 2uLpN4VRj8wa5UmUK3M6SsCYbkUQds0nHMNso81KWbAooC6Zw65OzSpsi+H77QKDZ0Gf+cdaQWYP + hXo7vJ9N0gFuu9xdzJ2BnGdxe1fTuvZWvP5R4uLTKNrjwqYJiRmlatijkuAIP022q3VWY88yhCLF + mihs+ddzzlsUsqTXrViTpFxiTfSUWNOH0/cVoYYHvMSa3JcvAuZEo9DnsoTlfbbIJgRiORe+FAR8 + S/KNu1WVKD9M7qqRJHUVKMV10xRTyXw3cN0asSIfhYgRmxVskk01HSOHl+sujgwXVn1f+2tFcuZb + jV+zsMZSBXvnQbvXhFBnxmLmcZhNi7QeSRt7skpNTbdYZqNmchGIdJWB0IXsrVRN9FidUzjCcHRQ + l51NZsg9ZtWR6I4GuAF1tjjw7C5q7RNx4Ms9JkbRtEF7rODHY6HMHlwqUTGjSFemehUfOW67ylSi + iXVlKurArEwlnsnKVDm89kDCZALzzG4XVCtCe5I0zE0yX94lmgtfrZbMYcWeEH8zhqESuB9hS11d + FtGzJplYiLmyRWhxAPm7SFFp2gg1tad67sHK8dO6ZtZjpEj3i8ZThEndvf59VIbqo7t9XxTs6WLU + MHX5Hmnd5SOgER2QgN5Vl3R86hMFL3KQ6dD4Q9bCi3zH2bfc9oelv+qMMcWDvNtXBsB6X1tT3AMf + HUpwb8VwDwyalymuu6a9h5qSXXrZV//Bl7PZT+3L/dR2R/27VOYnvBpeHlrzkoWM6g3R7kVr4xiu + b5WufXikPlNA3hfcPWHOkdMKV1g3shQq8k6KYoV+SoLFJJvN0+kY/xg+I/PecxMO759nv1x9fEvx + sFenFayUq/XKG6zxPyBSMBekDBs38yJbjPdq10DFz6XeZo/tbkFAVove4QMeYXnUglzSbrOgSa7a + gVnUWY9dkBOGhmwO6yeQMM7OUC65z1BQ3SlGscAPSrMKc4q9tIV7sXNf12D5PUmfziPczb6UV+Xm + t4peyRuTVFM8LVbGD06B9a/PWdyimAq9bufRIcplj454SsaPd+9OK3ZZvDOrHh30uDojhun3spLl + BwPxHlj4L+9eXxS1OZDltHERbYQmRD4odGj2KqBWlKEtSpD6q6wgyB+XsNzMd0HhhNlYqeRLssO8 + u51UDcRl2P5Fuqq1zcC+9Nwmm4QTo3hWsRovtyLhsyAT7bOgMKyO0uhYiuMojstZtWJacP8Xs1ZN + Y0oYN1mBvYDHLC5XaNy3TmVHE28kXzvibuTz2O0odvyYR+XQ7eZJN2c6Cpqq9uhxD36aLT7Ag6zd + e64vMonxr0Lj2DfhLYwtHYg2ZRkzjwIHZcXx+qWzunm6h6aGdHco+0Ht4dr7Yd+nbMeeW9Rzq6tU + Ym/t5J6nYVaEzRLv2iwtrYq1898FI5EzFS7qsbAd+KVqYhsuKjswwkXpmXRQ1EzFoPZhgZqIHWWx + bR17+7If3Y6m7ztknWpY5DaycOwKSteSgSIm1COBbfddcqNHKGqfcZJaBQbUZrbcI7JK746xhO0N + 7bJzziM/3LGaOwnbRqRyrqz5vuscsXbWfGpia82XHRjWfHomlW4R3DigP4anm8+82AxN83DxUECO + E9ZEMFPDcbUetaxQV5ys76lpx1Qttgs+KhYDy+FOzGLWRkXOToipTGaZiaG6/xinRv3uAwj//Biq + Pyp0sl1FDlCupWFpzxFY6SChHjiHqwGs43eMHzm8VV2cvJU1jLXuxkSyVo9JV1/er2UkZdFh/Rp2 + 9CpdJrPV8NnFh7PXw5iDahO6zwcftptzpQHfz9b3iIcwlq+q2bsAmgMkTPDXkaz+xSNxzRRotzzU + suaR6raRyg5Fw5pGI3qRLYE9GEYhxekUcl5xXqbJfYJxL5vZPVz+baN/QEOTRZBzhQkYvZxwxCSC + 5siwLdUNvFI1M1AGvobg5MdJUBGYRQGFgL7eZYlv4xzYX2q6X2p76jFT9NPeCtX2QN5x5BZ3KBAo + TZ3VbW5Bp4UCQ4k8v50zvwXoAr1uFyxKlMvBouKpRBf670+sGi0KCkolWpT7POQjHghkWxFjrsB4 + 79JvmJVeFClFXCOG5sABAZaYg6PAiX7/bRMvR8I4Uw4l+jcGnoI8Msf0dpz97TJdSbb67MPbq+fF + TtYqONKoJzxPZxnM9xLme7ra3iIvmVH5bQU29G3DqrbJUnhRKQI9aoLfi2Ie87BijbzBjViek/ow + LtdvxEtwAhZ5sVMmfpvME3vqXlvqEmPAhrbfkvY9ngAL2swH5c+KtjZFlvegGYMXeHuHOvj5tjPw + mguF5ESYDnjFYzPghHDZDa94FJ0eD/88O2eh889f8Kxz0QuaOJPpvxMBb/Hb5dsRvcP+OYKB36bw + 82pItVeGieCLag0RA9IwlNZMlrSSSs4CgxT96qg7z6jR4mMNsB7MibDEgi0bgNsdiAntu7KpWshU + /VlRnog1sD+TBLIOqgC6vU1WLwVG3y2W/zk0prBAV2wCk/32Fvwo2Ck2KHHgXjsQc2ww4R6DNxnl + bBf3dY/U/ZB0gCKX7408CN2x3DTXyN426diMA2jZ0065jNL/Ts8dl9k7i+l1K7lMUi7JZfRUJfFc + hBW8mIiZkfKu/3IceEHojwJfhC+UFdZK3oXM3lmG9dk72bycvxO6TqPn7ueA+XZ9zIuZ3eMK5Ca4 + HZlBhqhQzAwC/dTxWENmECod9wjvr4J3NBoiXrjNLlczO6Cuu5q0oV1rjN3VJLoMcEdpfBnfDQay + e6Fwt/2GVsaF5iSgVhZQSyrNI+kho6gL1HseFZTVGjHqKinBgMWFcPr75VmrSBnXE6Vxfhn+/uli + 3DZWRuUwguLXJocRX7fMYRSUKzmM+FRmP//vGlT4IKrmMPpu6IfOyHcjz/f21TeAJlV8ib8jwiTs + Ucw61gsaKvcMi94z54g5bYyshVa2Tpq8G8NPox/LwnJfJyxQoZKyFOQw3X4GctkmR8UdyM0LP4r8 + o9PpxNec8PTrDSgQghI5d2SQpOPGhpFOeCPWy/lsAkxjNPwyS+hf6aGGuw5eCTL4duxeLW2k7Ofu + u/jIidtZz2UbW9u56sKwnMuHtKSb2Q1nqlpgnoACXzeDC4zCNAXmyWDnr8P07C0382wGRFrUk/d8 + n2znHgUkF2m1vFU85pYoiNgNPZ7vuTEOiKaERuRcLByb3TPL+0hf6bHTZlD+kIulOTjUHCh45cWt + GVsfaQ8dO9qpiygEeoc7bRChVQPbgkNEvVpySDyXtuKrC+bUQEJHTuVadkMWRN4I/ohVhT4TElpj + QW+y4cn67vohgTtwvX5YzmaFekTc+Q/ChObBoFs021MwFMld6zrqWuL8XXjkeK2uJdnG9lpSXRjX + knxIO3d7vVTxIf98rbx+Gtb36sPJ5afnA0wbeHbyPDcr6PSvujq2F8mCG8kcog+RqAE7XyZqOGI+ + lxlWwcHrnqa7yTdqH+BlGw3SP8Xdt6lPuT3b69n/3WKBxpoYAoviMo8M5vlYwRgtsj87BXa4jJP5 + 9OLkY4fLXDqR81RClTF+2GULyrW59sPNHbDFdL3pUt7W8XxWkOO70BG14Ifpt6w7KQpq3M0vehAr + unb0XSrkuEyiijiu20Y+UQ0skUUk9Qq2CD2XINu/n5tGA4+HfhwFrAIvAgIb8yIQT6iQDt4LVzT9 + eOfpe+SuaEmQDExXh/s8h77/U8QTB/HIqSY3IZseWst20Ge9rf42MVeIqmHYClEVXrdFVEXKVURV + eCoN/hfwj1cVcBweeRVM1dgJQbaOWeD7JtpfvuGkd5bwgp4FztXzYQUXalTrzr5czll4shQW36pP + +w18AKz68JyTI3kFchSMuwpepZHCkNx1baWLtdg+NMQqaJUsNfFGqJjJ81JAhscbrOax78d4HsrF + FnM+i6amzWyzldOkbcHFDtzQbfICGB3kmVAaMi7LsdIMv4LHKkMePMV1G9BG1NivIQi1tqaW2jyh + g20031Hi6whBupNH+THZgpo2eitqiJblF4xEOw6QlZegL6SLgTw0wrC5/6xZ7Zwu9HYye5eY/SXI + rC2YvXjdjtkT5TKzF09l0dvfLzA4pMTrfcz2K/F6n7lxEI98FnCFV3SVFwJBXvFxu4w8UR6kVOJC + mb6XCASqfnv28eL0+cjEE9RePgX7mpMivNd1Jt5DiNc8y1/1kOlzBZP9br1kS1wmgWxKL9+ukqlA + 5hJRVPDmQzErU40S3r4B2fZz7qbGD/Pr/dTqq0wXcylpOHcxx57HI5UbW3spSFGrof6uz+ImL61B + Wl8HH8+vxtcwSvyYPF5BWYNn91UUtsBpqhhY3wMq6mOlqT27W1x+vHiuawDu7ihu35EiKBEnzYvN + aQK+rCdYAWjNVrfJYvYXbRbccA0Qm0EcN9WI2d2T2Cotemk3QeVJr5ujgLFWNFf7J73ddqnc87v3 + iAkJuJf6erF/vO0OEFK8sNzP7Shv9g913/oP/vYceCAuKC0DRo6UAZ1AGwnl1InbttHN1ZguAvtX + iB07KFkk1slkdrH9OpERMtCmG5WAPqmW9audC2Js1pqs/saLPP6nA7lYLWHT9dGFOitKysWApQ4k + yYYuCR2+Pl3xCmIzoCBdfEnn2bJ0sdifALhmiuSqd5TNVzHfcY3pOTTlmykEUTwDBxIJfAlXsQMX + slM2eccsTBkhbsy4ne3fquUjAjr0Am7PaP/uFHqtTlIfMPmuJwts8KiFwY1etyywIShXCmzgU9LB + /vfZRRWOyYsrcEwvmOP6cRSOEJYpCnwVZZutZ5tsLjB3i+h1utQF9PSIwWaq/zF7BmvkPR+Xx1EP + Rh1XwnBHBriSE8MFUa7Qev+QjfPvlYbfUpHaCpx2EehfUh2cNUyaWaLVsKGBnKO6Pgae+9cDyj8F + e7EUo9bD++QWhfntPWLIFHJp7mbXsw3FHMxnmzt8AX9bZ1P1LtZRumf4Hz6cZlvc+pJrz5PJ57Xu + Hw7EN5GLc/cwOPv4QWe08CDGIq5eEFHwvn5ffSHW/9qbX28EYlKaKdm2jQ871DnnkQlMDw32jBrd + bPowrwy5g3sskvYu+x1qxYR7IPu4rgTNq2UtX7XbDl412FCh9rXMD6CjeC1lM3w8d0LfntfS61a8 + VlIu8Vp6SrwWVHWvEs4rgrGL5i7gtV7kB04w8qLAC6Vj7rRsHL+6+l05nURRBAKXLxfJwFIYLLoq + x4sXi6aJaNIPyyXD8rl5Wlti5OnBA+3SEOoTqFabRJR2Xs9u75NnofN8PJ99xloYm9kN6WswsgnW + LKUuYATKHXJ2v/Sq9Y9EzL2625tNsUY1X99tcoGYeQr1/WRz257QfP6Dejq7yNM0OQjwLmjmpWtQ + rm4lu0MdlAJ5j7PS5Vcgz2DDwcb7zqkjBUKiqrMs4ILfZKw15qfazItZ+8bALzUcvcxvrH6jk07+ + HsdugJxHB8U7LN5TlaafhJQnW9tmTynEzkpW38jpWAVHmJxiOhutHEgozhPsOnKjcV41R+1hOyqe + R/hZYsda11qGmSAtab3IdkYw13QpOFVhazVyNyuNSxF1NU754naejtEwtZhCw006lxXoduJYFMep + BAvKE7q4hG+1FyzodSvBQlIuCRb0VBYUOvnVLQsWvuuU0Cuily+CwIt9fxQEvhdJFe7jGE7p5mEu + JvaGotRkFaHks1sbskDu49KdZVjiz07zO4WHHneqSLXpUkAoiuyGcd0galU3z48b0WqNnnIn1Bj2 + wP2sWP2jAPhF3VYvBxC8GjM16/sB2XszXibA6DCJu7jzjEvMjdymS0fRHZzqgKB1bmIvfEd1rpQJ + PtmcDtG+dmxeR8WwW3h1usYT9WW22q4HuHXUzRBw3ycwpkBwDIkNNG+H/q1vhs6QTi45+VO4N65B + 1b4TVwdC3poQRjm0eLKa3IGai4adGra2gy0gmnzO74m5am+ElWLWrup5oz30J4Cjxw7CPR0QFUsU + +v2Zs/7eGuv1/e3qsD5Kh5C37HlGC0v3I4B6dY5DVLeiH3tidEu0KiD6S69rWwsfZl/efte57WoM + J2TUXdhljxlU5TIBMfULMW5bocoO9Gx3TlgQcZNbtZHMxC0stov9Jd7SUtdDB00nsZPhXh88J3KI + U/T2zZFH40omfZBjQejlV8lhpJSAG2pwSudtcMS8ltiUspE1NKXqxESmlE9JaD15dcoUwpL4u8Tk + lGqzSpk2yImcpFDkRXtuQFmVFfecjjeou/wr1Uq8iFHCEEEra3/UJCskVtWRtALZ8xkjtybM8TKF + xUnH9+kUNfup3XhbZOraZdvZ0GIq36sGKbglNbX/IpVbEURtKrbi67Z5FUi5mlUBT3WkInOcSqhi + GPFqUoUTR543ckGa5/Whis3xMBphTdWln6KYcJ2JcqPTdK0oYMtjZQsSQSwgym3o5n53/vadtAYR + NdPiZEStUEbuh/RbEFLItHhFZDMD21zB/vo1WcYYfSgTVTO4YmFEH7dLxoJlHqEIk/M/IYo/WYji + XoL/Ezj4P4GD3yNw8G/DDwd0TWiMR5A0bQMGreLz/idY0Jbs/wQL/vI0ggX/J7rvf6L7/uOi+5R2 + yCO5V3SGYqdgQYLAOb90ItcejpNet1KDJOWSGkRPSQ168+EirGhBWOrE1IK8l2Meww3BRxxD3krp + uV/vEBaVe59fJ0Nc6S9o/4SJmcKS4V1/k20XIgIOSx6hTW6cLlYzATGvt8SNnJr1aKixR4RogEjN + 5iFUU066ypv7ZVhVVVRPJZ9W0CgahfB9blQJ+KiMr6T38KaAA4NgrvfsRx/nzIT0vqonmYtvtcjg + yOj3kNFZukIkytMmNAtMphiqKJWDG9Dg8TihfHS7yr5u7o6VXo/L9Ol+wUnAgr+5RvzDJ2PxPmLB + tZpYCDGIuLTS6/RW1K84btpcrXbWQGx2JcuB8OXKYnAundovyRrFS/q6ofD35JZ9hVw8h2/etPQU + hLJyEGGZ3z0s77DaIXVTIVLjNhnIvYsv641tdwfsbbW7TLHjmM1/3rJ/kuV6Gr8p8Ly28E3UxNbq + KTswbJ70TJbimWwkoCBKL36pWvhAPPxH+Sk2ElCB0u7pBK4sAoPvT5Llsitekg25Ryzp9bMXxXKZ + 77qVGRQB3mkHUKNO1Bsn2gt8CeQ1fygUwYRtZxd4bI/407Gj3SJyH+4fayLfJdgaBU23OBy0Tkxn + GM6kDHZWQeaK6zGN+96iHg+9bo37Xq3HQ09lkfC3r3kN7rtbxn1/4ccOD0aBE/LAlDJBWlApJUqe + GklBXIAviprId7Pbu/EkWz5g0CUIkut1JoMwp9dLX9zQNM1Uzftmyv/WMEePMXcDXMoccN2De6gn + yDW1Wwm06MO5E8T2u5Vet9qtknJpt9JT2q0Xv72qhN+5flgC3ILdClvWd5wRc0OmALfwm4UNcVIX + 9PXajLIgKOBnF9mcLZ/LXXmRXVej9KyKD+Tx0zGLY6zAVNqS1egAAx0oiMw49WKuk8dcLyjHY5tB + R+XoMkMh4QGzGasmXYgBk57QX6aztfaKmgHqrnsg7UJIV4li1EQxdHz8tWzzvkvhTpE8ejJ8e3L6 + Kbd8Xy03LFiOxcI+VxHmuoAS7Gq8zWEPYNCNGZmTzrPFLc3mBga9vb0rBLSt0X89FcF0QOkvVSQB + RoMfJqcKnxZi4NQ1nVYi13ftzAEeCK05+a7XZ1BhoIIKd2ylVnd5D3GKnWMHf4qovyCsDrKI79w2 + LKx+KkgFFX6FfDe3pr1zwXsNxWsZzHaQMrLH5run9e74OV/MN51f81C/FDH36x2qQv3HdIupc31G + 8SMGU7Tp2rJlg8nkhwfV9ZFQ7uV1hN3XwZHjtgzVko2sQ7VUJ2aolnwq6x+IJKx0c2dEtQ3E42fb + 1Qy+MX1efWH4aXUfG8jSRodYOzh2CCq8pyBY1/EicRYKI264Tn6KYt19QjW3rKENS0JsvLqsh0Yz + uo6j1wa2DUpDdbume7SZR5gMby4Zb4HJQK9b6ROSckmfoKekT5yfXlRg8RxxaRW13/DlC495XhiO + PAZaoUPH7RymBD5LyGiTDDiITG5bJksGXH4OsywVh/PJsoor9zdJws11mGLWmYltyhuD0CLmhX45 + 8OXRC6h1T1bdXSENrqTtSkuGKjv1GFEZ5ql4DGtOumiOF6EzcQvfKZBT0+l2gr+DtCDu+Hn6JZ2v + j3WkzlpOFnpugGKO0gWS1QA3uLYJxFyko+IXCqmsMg+/WMUq/E826yNls4pTh03sz6zNdPWfJOtX + hnn4IK1L7zyaJOeTJHd66rHwyAnbCHK6jZ0cl3dREOP0Q7pWbpP7+2S42V5v54UpfKZzzSlU7vnw + 2cWHs9fDP9LF5wQmF1YMpgY/bygshPD7VfIVHbDm48GHTyouCJS5D5uMDe6vM3RdubEXhELKC5VX + cDaBacWBqMjBdu7ViDlecXEkw2qgsqOMouPQ9iilJ97oU7abcsP4fCbTQESPoJSBUNPwydcPTS/J + ucQ9h/iH1jlZsfyi/7vFJAe8SFpSfQTtNqLp6GMgERM25/USziMWC8cQhutsamml8SMyGxRH0l/D + ZvdmT/4q8enwM1yt4gwX6DSzQcWMAqVWxm/iI9aKGek2tkql6sLQKeVDYkYFUR72/mIw3V7Pttna + aI0KYhQEg7z8o6fTmHh84h2xlkUCVSPrckyqE7Mek3wqnVVjcfJPPl3gCSbeCWqAE4YsfD7Y/avR + B36tE5I6HIQkPEC7HERsc6hWjLFBZNWQduUDgy97qwMP4khEXGox1XCvK/zA7XxrV8boKUSYCIk3 + yH1g5OI+zPDUJ0aa7/PC7jnEq+0HAZcUihr5CKSGLUgNIk7P3AX32ZdUXZ4yqK+IE/cFI4nggC5m + bfNre/OwsyCiHVMlNBJ/Q+yihUwPX+BLmJ4wkk49cVM1f7IIeUcwg5ZHEwZFX1ea6ZbKRk/4al6k + wlOdFvhq9LpteKpTxVejp2Q3ubo6r2BZuo7rlqNTX8AJdrxoxALmuW4NvlrJ01BKf6cskU9vz87e + S1PK1XrOGkrJi2OdfpvMRGyk9C9JEm6tkQPG2GzkiJkfBbxiTtkxwlo7CtwRjZGooedGrGxGQTkY + OV3VB1PbdV2wKgu435jGVew1T0BLbxM7NALpDVX+oJFIZMU7r/jVcHM25WUxx408HpY9v/kSjstL + aHqro8acp/oPa6Q7Ik/UVizZdvG1xnLlwPVvtT/MoN9Gl11p7spmrOa+cMqioAYjbYK5AwjS3uos + KU83lu0RKV5K4lWJxItpyYFJfO+XuxQdvzkDnKUa+DTVFjGEwTH7xleaz2jF4f3p5tpbDpDFaED4 + WCCe4omtwSdROxCkD5D+4BPaqam4yqZwYLlV7KxlnX3esOV3D89ON7KjY2P++w9xoVtMxaMgzSDz + FAtlzZObvyNnz1Z2Vd/z9uL/tJG6SZ/ZseMq17PVVnY8wlAQ3M+8ey3be2JgwGL4uIYIqkny2z++ + edt6cJTeZUH8Lptnh4y/lyJlHSMhQnGA234BGXspV6utgNNuhBGnUwQaweRwJU1IUtjkUKnM6tj1 + pReoyu28TTQxvW5ZtZ3XRBPTU9ILXr+9rOgFnshtLdVrDyMndoJRGDHfk9kWr2dC5bsBpW+TktuL + sNqXyUoLPNNPFVtLsrn7mjyYkO6SSI4dP0LArfUMA8UMvL4CDAuKLioemJSN1zerqrKhPPNmfUje + JJaGMXO9sBLwOa3/2AYoRuY1lbxiIEtXAfRvRGyG1JGnw2m6mn1R6n09mn4YOHt6GDyh9RngPtMo + u2EgKsUGvid40u38YYLJbH1Y5EJXMBEEBJokq+tMls7E5LaOMTBiyrHJ/rXa0UOTTIu1WisGr67T + 4ftwdsV0fJtN6QfaBe3EgpoQl93eQdz++NbeM9NuAQ4n+5h4ZyzwYqYmOev6kT5CFGCTjyev21oZ + 5a3iOypHhQX2ydD0um2OClKu5qjAU3mrnJ6atwpqxG5YDtPxX45jL+DOKEaWIC+V9CadiNME67Ge + YXH44amMGpwOTzOZSSv5/WRS5ffliGd5w582mHuCpoh3GGAUR17lJugrG0UJ+vIjJ/ojJ+ojTQtN + 4DUxfDXQYiR9oj9XqOinm5uI0orhbwz+KgBf1rAxYFOIOAo9g1KpvyxM4Vs5haWidM0jF9HzBBuN + 8S+LW4STyaFpB7hB8swXznqMgj9UxWvMOXYC6aLct1wVkjuAWztQrXFPu8ylKGuxuMPLt6eEfN8o + 4tfxs84eVcV/mMKk89th0vn2mHR+LSadrzDpPv12Us6R4zyMaxDpeBwxNnJdh4UxMaBPderB2dnJ + SEbPwMdoyIRPWVJNe2s04500GZybcoXCKOCMVSDfHsPg3NTrIxhKa7oa0PTQBMscr2ND/jS6Fzjf + GyF1od1JGCIx8W6xAdak8+2waCbCTdKb2aqMTCV6S9ebYlLZ3fY+Ie71egWyzvJuNk9o7Qa4p3L4 + Ko9Y1n+Kac0qO6XnXh4NByjk1YHWHlNL287h9HZUSv8eJpd+xN/uBpe9adc+V4YSn9mLtPS6raEE + KVcNJfCUrpTT82oxQC9CFH7TUDKOHA4i+ChyXA+veLxSpKsbxqri8fMyvvMb9HkDf7qnZ6D04bON + EFwmD8kCVcFNRj4j/Gm2SWVy4izD3/FVWVIwW8F4J4fWpSjkqHo+SOWxX8HcKYwO/9yu9helgFu3 + CT6H+W7olxNhO+RoD3IDQxjiKcLMAHE0cU9+za5RX70WAYGlGGrL8EhOJ10v0EEROntTT+rhZzqB + qduCGDd0bdO0GRpDyF2/2G6eH8HBeoMD911VtNQP7fkUvW5btBQpV4uWwlMZ6PHmU1gtWhpUipaO + Y6xXzEdxyLxAAkR8VAB3CrKvUFYLcQ2A9niaoR6XO6RBUb9OU1DV7/CIimgvgcO9KwEJcRSA++mO + VO27q3QTHpavv593PQEMiUuNY4nZB4u6KVov0wlyJjKlZousmGuHEQPLuccTUuTF36+Xw2eSmu8/ + P9ax/flSqQXEY6HA3y9//aBrnvEgQFc9g3urUFfgYT5WgyyNwkbLfbwcvyY2A2JIGBc4gRr9x3Gb + RLiaT1En21M5ByzynCPGW+UcyDa2OQeqCyPnQD6kk5rNZ7eZqgBRhMJ79tvFp+cK/h/+Pmx8U75T + 7I/7bgRsgUJluwKcRlQJp75/g1ildkCbxhZBlz1hpPYYpnvQ0WiTaJo3imRZ3zwcV8gPyY6oXNvc + 16cRK8wUsmnjTu8Ou9Wlj11TwLnc6A17qkR4d2kMxamomO+7S1DJ7WUQet1KBpGUSzIIPZUyyMWn + SjFfOIYm6I8bvxwHLPRZNII/ojJIlZA9UOlZl03ZV8uNTzegFDVkTFxuEqIQN0rUrA2JyeEzjpGc + txwTUV0yZL4W5+RhXYDzxHzPChQfyS1IoivOkOc7sVvNBm5EsZF6dJ1JEa7yRqcG5x6aQsvi0T7M + nJ22xNgruyaKNeONL9NyVB2KyR4rYhOQkPlNJjaRxOoB/pLeVlOHQ8ePG5wqUeDFblyOejUT2mCb + /WJdc8/8GN4UZBxFjs9hPksZ0PbGQbMf37dYmcF3PnQj8a7F+UIb8DCZUqb+iI4qxq4WLcOfQcwT + mikG1irRHumjMAesfA5fDqQGyJR0eCqn8NTuZRRtwi+9EvSJHpO96eGpGJqbx/cdsIk6waHmjjeq + mNjAHWy/GMsCSiBOi7KA9qKhE1KcXj68kUjkXMkKvNBL+5UHokK1Kx4VK/HRCaNcUFXgTXJUeVXg + pjE9MTynSCYl296obYijjUWM7PXV2dvv7HbV38doZ+sdaX2Zt1uEvgI1ZV3Nff6CNuNuOqw9xWv6 + QW4EeOUfOVE75AHVyN4MIDsp2QHoKYnLM1AF0y2Gz42FlRv0E5ERWwCHqn/F7AHRBFzukubvsdyh + 1WT02X3TeCxHixLVYbFwo1zDrFQS5MAeqF6J/LaH+biur4P1vUPp7wThQLDxkiEddd7Wc2DpRujD + H9AGUetgJ0FOwy/TQJSFRBySlqTagnL1lm/sRpQjnEPWHhrsKHPL9ZYzzvfBRGUeQj3X6AOf/NAe + umde22/WrnncvV2BEv3isMlRl5LEbnh1yvgpbwmHkzeyu5QKnRQupfypBKFYYolwRC8cigjm8o20 + 73ejH7yaYkZGaTjWQk4qELCLkrbeGwf3sNsEHZOHcQnSCXq+hNO+p5H/p+Mp9sdxwyAoLb3enX1w + xoPIf6c61j5lIv3XpRN7/xyfWJuNVQMrw7GmXjIdq+dkPL68OPfcV5XoTd83g8c9/vJFAMeV8xH8 + IbTmovl4Uk68hsW4BS4TOFfPCwUFZejfqFCHbJMJz6p7QuYuTLkuLCb8uko2w3M3TGrqEpI5WDS/ + bspDgumnsVRGMXy2Thfr7fDNFstqJs9LGUteE/QBLh+6rZsrA0+yxXoz22zlfGjsPBP10W0EPih2 + UK5Om/OxSr1br4rWMPihCzSgzaXNgJHv96bx1FHYnSbTS1ZoV0Ug8oo1Nlu68DgPyIC6f2/vnA2l + IvWFeziQ+1nw2/3HoKWI34rwfgNxP8JkXzaOgLKH3l+ywLF3H9LrVreApFy6A+iprBny5r/RflDy + H8blC8B5OfZYjBeAB4MIJVjNRbrKvs0Wx8OL9BuTKS/wV87gr6tUpD6CWjl/0L4C8Q9M21pMQTo7 + UqVDROtDUkkNtNzAc4OqT28pxlhTVTFsisg0KOUsvmwvNCOZSvUPG6iV+fm4MLoNHuZNBcA34FWv + UsGTKakP5FKYOUM5SSxaqLrKFX0dElYIW7r4dMUroCOwQhgsli+oXkP9Oyz6QGwmHbfPHVcEC/kE + 7V9XT7jw+U22h8bKgl2NMgSzXxiBnSBv0W5fx5FBAJfjoJiOg6JUDo0jaWU5fyww2oDJcAvutAj5 + pNctwy0E5Uq4BT4lfnny+k2lxhILMFe2FG4RMyfyglHMWODKHP73D8uMVFD4ut8u36pQ8tsV0K+G + kpv2vVI4eRMbfMIhmTpk3PXcuIewN85jAuNXLxUIycSxNjbeHxGz3aM5Fr8idsjrrCdkkqxgk7f2 + PqnjxrW1y/WiI+a2M3ZRG2tbl+zCNHXRQ2npygv33qySWwVbOMm+MSHWZwutetD/1GeoQHEnbCFl + 0euWgeKCciVQHJ/KHO3fTipBWg4P/UqguB9FoJ+P4A9Xadmf7kicFSrZiOLSktvbdKpZ6ddEgzyn + U4VyX9xKitFMVzCkCdzTAp79S16UuqbS3jH+uMzWqSpoXYwDoYRfwb8xc0bVd1gLGMkNJgUei0Hs + HjeosNMU4zuIKFbyA9FiuV1ReT/jC+TvY1lPbLndQEfb6SxdD95+uGCBjrD2QsLp/lFZGGrT6Rjm + 0A+PsEJMC+clNbF1XcoODMclPauHKS7/u0ADg5JDHhYPj6/Rip333hEMsBVYMbWxxiqWXZhQxfRQ + Iha8OXkN//9+eJ19GyrAvcHJp4tCIA26QNRPo+Eak9tTqSCX6/ioDgVKc+iJjeO4FH6q4jBECIyg + Att9NPwCmzGn2SGit6cYm8iNxCVYHGWbi+/7ZQ7krQn0r59Z/IHux+61Q7W92nGUl6xhI9df4dVo + /kMptbSvu5H4dAuaP5evUeblmLPX8Su7oz8rXixDYl5deO+Zc8RYK++jbmQpkeWdFEUy/ZT4McYL + jYWwPb5JNpuHMR6C8WlWdUIXWe/eViUHZT4UYNTM9R3BqJk8fzm1oaBGB9ECH2oHZEjgxYKrfBxv + 0IO0KPgd7h9Ws/Um6yHuJSDONZ8t7ca72yoeUOZNuynYfRo6FrSztNO0cH2GIqjnSzLZZtbFKwqt + vbw1XuyNFpAGw49t8z3DoLqU77L57WyYLJcJ8G/ri9e28b5coENNQP05gD2CsLBnIG2Obw/UHz+Y + JAglUr3rtMDuodctkeoF5QpSPT6VQAuvq9g9rovaTwmpPvTC2I1HoRdFaP9E1n9ZtDSjroh5jtnq + Pg/LRgVwPcnQIpOCkjqfSz30dFqD5IOh/nCPLYbz5IEwGwrtSnk9JppOnmMRxZ4DPKtaP3yGqQDT + NJmkmwfzAjbwE5y4bFYbNVHXBrHCKHW1ZelbNlbU9DCHSKjcVSEhRnY1OK0MfQQa920qMroJbGya + sKWhnOO8G37i0iLoSR/pST82/QZyNVez29kUJ6l2MQe4eXR1bR5T9TwJ2yDq8dHno4CN7KLLTeTH + MlIfYSZRjCriYx58YzquTBYRc9xxjC4IxTKaKVup5IRVut7OhQNGwHoWDkcy1E5omtK2nZHsU1pa + u3rfg345uRPHhWmsPWVWl9tBhL5X2RVmUXaFQFDHixnQgctp+Ox6uxkCKZnmnz4fws9T232lbgmq + Z/Lq0vFbWC/pdatbQlIu3RL0VEYJvXlXviVY7JfgeFzv5dh1Q+a5I9el9AjhIibgWp2yk0HfKkxB + uCiBr1xcMJkhr4VsKryTCHDPd/NJuFThPult9eqoayQyElhDYZOgKTEUExE9p4JCuaOD2osE6wQb + Pbw7GzX1kqdQAj8Y3q6yr5jpV012NHJOWQlQzkylrNI+uIJJ6bM4L31WudvBZXWZ5e1By4jTNmZ1 + M1rAoJOYmLdsOaJmlMR4tbgRV13pK27nW2CC6VjC0YndJqqUjii3uHg3qndnC1k3FseRiQKlolhG + Mof7MEXn7H2KpwO3vsbOBOVzIKdB2H16KEFgJdVKq5VRLnLHXq+QbMqEivw43kNTn9qDgDyCPNKx + Be+i162jHKu8i54S73p3WcVch3WMy/GNYz92wigY+bHHFeb62zFamZdNQXRXp2+H2+sZyE0bxEAh + VUAuQgm89XS+YBIRdr7gS7jbblfJVCbFF/enwtGWsoiAXKZdjQmjavfmpqnp7Esyx7+Uy+KNyF2S + 3NwgLOCDalp8QSQYow8gr+kreOy7VR2weyYC5zYzZOV43+2XcR3mNYFtMuZEIOD6lWid9vBpTZSU + +V6v0NBcoXJZ6+ZaVx7WPGf1HbTASjIGelhYUeOwcnL5htSFZUs6qqHxNAe6mh3om+Qd++WKNpHO + PFewuuICmzzArJRCAaLGYFrXC7hb7iL/hHyf60OY1CP0+6yxpJfsY9DhNP+4M2qcTzqyCpdwmm6y + bxpZb4CMrhBr6wzk1AtzkdWi/WITQOmEhEBZaJfAVbDe5G5hwoFegoYKd1yddakRIf5xtDxHaEpq + cjvTg62GTWx26cF99IyrzQKf7GFqgHrw9jBjSvNksjAAnJfylyfkZO04M03SCl4naucJvfl6OwUZ + bPK5ejfZ2VIP8nweBCnZFbwpho7lnDffZ3s3w0AyfHP3Nl0TVtzAOqjv0YEldxHZC+MUOsqxFr0K + j5jXzq8m29i61VQXhldNPiSZdbq8VgUaTMUhXa5nc/jkZ0q1un6u6zHHHD0UzwcNTXIzj247fI39 + lNtj5+Rm8yiQpqdSATxQlf4KbKErzbB2ZAUgbKtD8SNiIA4BmItkDota09JSNzICq7RGN6DAZiR6 + aDxEFNUtR4Z25JbRwq7E0hPbRfyeTsvf274ETTeqPwU4bk4qNAta2sJy7rJFhir+2vFie48VvW4L + d4eUq3B38FTC3Z1+qMLdeVEl/vqFHzOXoT7PIlVtwkDeWm+XQmhHoPD1EKsTzAX81OnrU2/4FXbO + MPsCY/hGL00V+tzkvoo+9yQDtRu0sRCmssGGB4Kdz9CGdwHTRNVqC0bb9AZrBWUrPUdqeKPiVCZD + uFiXKXqlV+kYTQQEj2PO7wh2+Ewkk2zyGFTFmQQ+GSEeJxjHvcKQUQl7tE6FxxvX7GsG86J+JvTd + 9UhY281iu7g4wrqHHvsZ/nWAeyhHJ4tEdQmcl5JeY2ua6xRpSsBWZtx3tkXLoF14gorTDAm1/8O5 + 47VA7afXrY6mpFw6mvSUjuYfF1dhte554JTqG/ovxyz24HSOGAzbL+US10Qij2qU9a8rliNIivM8 + W0xAV85od7zf/CUsxRicrKDgSj5OHceh9x+WHtUwk38s12HVCnb1z8sGn0Jkpt8WERO9IAYtNOps + QHpshqEx81bpfTZN55VUNNeNGscWeH5UyVpuT9J0lJhTV0me00vYmDpnemEKVbw4iLdO5P9rIGDY + RQzqWF3Z1d1WWHUFxp5+g/O1uIW9dofRYHBMv4AohVLHe37yv4fPxA58LnaanoXxtaiNqBrAi5Z7 + ciCOlva1+44EVHQj8pfWzLIV+2lHYVe4XEBwbxpsSi8InMDGcK0d1orSsHbXkNiZqut6MlRVzrpa + ODvVwJHIQMhw2paq+Z6Q7D2h2vWSHe0yWaRxoc9WM6FHRpELXZUxGLS4Ful124zBoHot0lOZMXhx + HlQk1rB0K2LGIHOY5/JgxFB6V/fiNXToUoG5kj/1IU3Wm+HJxTgvwU2sSV0D66EBwI5BJ/PPyRzB + UAxPH+ULqVOK+Q0i2GcO20Ng5+gatUrOIyFwnq2FzxQjowkaFqmxcpngk+U8qNyjYtTJNFk2oCq7 + Divx7gKQruv6rlsBVe7rGqTQygLbymfQuFyiuKnqsBrg4FWLtTt+rGU7Bo4HrE9QFSjCOXyEAAZO + QRK/w2JS8wfkRdkEAYenWvqUd9Yyy+brAW7lPIkzdvupXUD82QTm6Fg/QCwPNtmxmtbXUU81DVjA + qDjPlxQY8DwdS3Dn6SMT3IOL8iMjitWFAQwwNJpPsqTlZMClQ/tQW+bhLTkxba5Rj2xYj2zIfjxT + krr3PJW66/JTxo+cNjVU8ka2ybu6EyN7Vz2le3C9SZkMrKgrUjeorVx3hY0Gyc0NQ5u0w/2IcvRC + j9ww2eLfWwlYK4KGNAO52doVdM1F4acB+r3HL0iDLPoFKd225WHhfiBMFroEUsegpZ21XJjjmljJ + O+cHjTSoZXxXy/3uYh89mfw7o0e1dxmAkkthY5+yFR9/SGd8LE6UnSrTk1sgdGpOVqvKlAVSnrFt + H6dkp+KhvsQNYFELaze9bokbIChXcAPwqbR2n/9ZsajBaargBryIXPg/fxR5GPuh0EamK1FUV/j8 + ipL7w3LDjIgWdU/C5N3AtH7GRQbF4yvWmntzKeREIR9c3Q+FNGtC8F3NH6qWsjeXYyl7aVlE9WLK + +c32LmTyThRW7GZlUcU0uMet6QEr1hLDCi0c2/m2HH8WuVZUc3Xk6uPJ5ZvaoC7Q8uKGWCWTmFZJ + YAmA0Zen09RGoqhJG/E9n3PQRor7QSMwWG4C1CyKG+F4ePVh+OwqnbBfPsAnj1n0vBzBLYyy+P1r + 0XpDE3KVTmVpEwpiEdbamSgpLTMXhNE2oe8cUyOti5QA6gZ4PDTwgx+HPekjQgIsTnobib1RwIhi + eXdjdsAqmaY7yI5yxQXGYd9HTPxRLeU0o2WcbkVYTPotE5fHrDWk7hPVgNASatgdYXLR9SNiAPar + NM0GTS/wCaXLFFUuk3Vump3dLhSk/HQ7qRcXa2WW7nDy1faWAgzwMXy7nuPZCU8d0ld7qGFXaW71 + 4eKaKR/q6sW0VxhC1o1vmczdbt76UOoCZcyMvFbGTHjd1piJlKvGTHhKAsmbyz9QCi1bM7lbY80M + MCd9BH8yPy55+Qy0otPfLs7Oxqjyw7/lWqxHtXdTnkJHBbCUy0+eTy0XrtMJ7Gt0W0+S1W0mBZU3 + qy88rkgqdd2XZZRGvxdjcCDC6LGMkQfc/AXvmRrc4AdN+0DsFm0w9Fkw6OGCbazr04657eGxUdxM + q0f21a551wqefbJDxZNCmZ7I4uC0BZi5amCZoiipV5IU6bmEsn13ZipLruu5URjElTzFADhUxEYB + 85jrEGc6E5DXAnfsWuDV3sIM32X3iHb4ILb95afxxemlglK7XkHXk3FSTZSRFqj8We3Rj9yQ1x39 + J4nYyCPfFeBYT2AP640XKVQ/P26F6gev26L6IeUqqh88pQ33+6tTv4rqF3hVVL8g5q4zgj9CVf79 + dx2ArW2YKKEv/npAKGDUnXTtx7WYBzScFdLGBN8FWWczns+QW+MOTa4XyKg1VM1alrNL5tWYhjz7 + nOyHyqSI7iKVzIIAfXepiK0BCVfkVdLu//164tdn4SbC26usS7sw9h3faYyYcSIv8quRLnnoe82c + NeU3OU21P+OIexVcZmT4SkcqufvCVoQ0WlC2yErZFqXEJfcgumj12kEXjmmTkaGebo1J2Rhn7Leb + yCK97eImm0/THPjRpBwFrSgX8RWsgDaaMsMU+cHPeRYHyH5y2MsgGMh1L6oZNdvESl35LllOEeEf + Fs/cL1ZVXlu4QWo/ric3iti7ZUKVzW7zSQgeIuYix/PIZW4bAp4bUGj7MltvxoXKGEXgsoODqHzG + vaBqDtGEO+CD4TWgN6x5e1hL/q2SmixwSA4n94igUYpKLDFN1veE5ZMzrG6jVGJVrBzHnuMfOWEr + tzE1sXUayw4MlzE9I/FqtZy7gSMzoQLnqqYG0LkbDJp/EQSE3zjwPPtymy0KVx5ayqa3ijSHpBF9 + zzI0h83sk6lNY70Vei+AI49j5Og4jjfhkcPaRXGIJtYxHNSBGcEhntFxvEmuZfgGG6tANEwrmi3Q + r5/Nx65+nA79sYwHzPE/Kc8Qtj1MFX8+aEPkLXZdJoDjEYmKzPdUUEhcvo3zLHTpA+kxYuSAwLUq + Xm8HIYiKJ+qei5+tIaig2eqL5kx2XoLQcQ2YzWx1myxmf3Xklgc5f3Z4aDxOKe2Vme+Y4O8FMgSs + bnvuIV5Z3i7E9twe3evf2MKZWqWPoo0Imx7EG6yurX572JHM0FcU3xODtu6pjK7rCMVw7wTvoxI2 + Hot8HTt3Eu3YMF67DfPYxUGV6APyVdA4NcVN3nlT9ZVjETFVIoLFb+Ijp02ZGN3GtkSE6sIoESEf + kpyyTNZSTsE0Tji/SnCII+5G/vOBfHwB7w3w5YHrBszDEh3ClBLGVU2XmtTYQGq2jd0l2xqax5p9 + oW+h+gVmXBw8wI5hN+Hou/dpkz27kzuFDjncYJhf0pUog4Giy4awXZApZDOSo7uN1HVFbdsGsanR + CJSb4ZbJBhMstNnFoVSn8zHoQFhAL1X17drIMi2oNEijPpN8WUzLdIbuCntttK8EMhb4MqFwz3mp + hxXci9MScYU/4Leq/4av2+IP+HX13/ApcZfzq0+h6WQM3YAHfjUAInC8MPRHAcys49ZAZif3wNYJ + qF/BTRZEYTHVAjZTBYIpSzGo16sbmCjpizlfb8KKL0a5cEUeRSmvymmIZYg95JAV8OyKQlMsJ2Z4 + NP2gsQZmkXQ100rIr0kugTZmXDUFYdbT36eYlcIoglbEd5ITAXOtyO1Qiop0UYfaQ1cHeywJeffB + iOhIyEBMU5+Ha+hcMbN86F1xLYD3KrVyLM8v+jpqdvG7ZMmWFjt4gIepAMQgiwIemA9Wa+mHPSNu + 2f1bzYZem0DI2vi3A1TgUgyaOMEFGg2pUuXItX7Sg+GE1379zgqDxaEoPk5ZuWfnTuDYR9bT61Z8 + XFIu8XF6KiPrP15UcWEZL+HCspcvuBe4UTyCPyLu7q7jOZsD/a//EREhDoPpemIRIZHIefvz4px7 + 3F46oNetdpWkXNpV9JR21dn/elfZVb7DSsW0o5fj2Ak4H8U+U4Xt3mjQmjyWucCKsU6iqEOkxPfr + 7VQcYCmPjlRylq4Eqd9MvlEt0dVnEKyHr7ZTTyIRTyeM01+N8tyl0s9X6cRdjnTo4Foz8jLoojSw + JotEaBUjsYxUyQPfh6k5uVBJAnRgzv7v7aMDDTuBz7lfgckVptbPsJ02hRmvy9aInLgpTCWOfScI + y8kaohzA8AZUbSpQWjSemkBMpZLh+wjjkEF8TsuhKaA7mCJdIffD8zhjZXzdosaTre+FNlUb8hE2 + 0dWzOviP2rYDPN6KAQYsEPnvOP3KEKuWx96HEIeVSITSklg5A3Az4Zu7Nl+rq767Qs9IVrBKk9hN + iVMKIzm83326SASKr5ScOtP30aNUtZc8Wm9d9HTJ6wz7xU4UXJuc1h680LHr14/J/rtciVdIO/hA + k7sjQR9o1YRIuqd2wT56YkyY9tMbzV4EcYf0iJ23mBVFJTr5ZqXvdmgBsk27St+8rtK3DPYQPoob + +IhUa35mSe8okAoE3ERtFAh83VKBEJQrCgQ+JVHvw2+vSqJeELHIiyoKBAswTmSEPgJVWOLDcj38 + DeTbV7BUmE4vpKEP2XVVGtInyRDw4bw1ZZAyz/U8v4KO02x3K5oXYu4011nwHM+LyoVl1KYrmgGE + hyJbqQKZhkwBWlS7DkyunH6bSdOYgnU0Raq4KZRUUx+clqMvlUFZ0F6km6/Z6vNxDoUj5QmR+LKu + 2kckQ1C5MSid+Mui4bM0G7LT19c3IMTQqpSsLkVBAkmSxYSAL2dYL6QSP3p6eumZBn4ZZYo5srhP + c6UtiAZyGYpMaMfqWZlZejD/xzV3cHW1ba60zlfsj4Z5YGIq1ktgDvCVSwzBuM6mll7yFnfxwTai + xwdCRkaELXa6C/ZORm8OzlDHRL4S5eJbxUSKJtYxkdSBGRMpnknn5mrpSovB72y4Xlx+PBkXULvU + ZSl/u6j5bfj7egki70BQEsGRURCrwve+3veq8L3/jzHVaQfZV1Q6mWS3i1nHwEnoKar0pIrXjwSW + WT/F4QOX+IrACaErpf2OBiKETtWJSuRGjhqK+tQ2cj/3hCUb2DowQ8HuDsd771X478YtAwrqEbt1 + +DuzsH8HXJYyScd1O/TwsAh12iMVzgA3yZHjtYpmoCa2wQyyAyOWgZ7REZ9ur2fZdj0oDH15lyyK + beEAg+QMB7gzErVV0z1X3yFo1k88Z1arHFTL7vU581qoHPS6Xb4hUS7nG4qnsg7nxcdqvqHjV9GA + 4P4MfTZiscd5sBdfGwTuFYK83My32SpdT4r++mfv3l48H8vQWJ1gUDGqoaSlkCQfRrnsM0Lxg8pW + 5XIIOUumc/iwqrMEXyvpOo3QOwYgdlulyYZQ+2p0j4zR3cFzs3MDwCr3usjHcB3A29Lsub7LvmJp + ADhoouimLnimlag5yCggnM236XD6gGipt7fpWiS1JMMpeqkTLMEAylledJOg/4spdLlb+fUrpv3K + 3AVhxzJi9sCKT/uMY25FILcV5S1a9mWZ66hM7OSdschi+PPXS6dNpXt63Yp3Ssol3klPJe+8Oq3U + DeFRUKpN4L584fks8ryR57shl+Ya0Ra18YJvAJ6VIeEldjrhXeXVLDB8UAGZH6kyxutJtYxIAS67 + AMNeV23AD8K4wXfERJlax3uSVQLU2KpGGDGddaRzeGSBQ4wZQHNRoXeVfQPJDZgIpjuomYMb/vXH + k2PYzCASJhO1OcWCyKgpDGMxXwd+hBJKXfcDXHptPQkJwAQLMQkzM//lwwGhm80IpMRoCtsAPsOu + ontO42dAMXXJ+oTCezrPFjIbRzRsAzpaG2HTa+kAx1NB94WPbV9uobNRCT6LtlyB6/Roz9njahDj + Nhf8pOANsQ36iZm6BFgLKH563fYSYFUofnpKl8Cn396WC9njJeCWL4GxFzAeRiOsHKvMLU1BP59X + 0GZSz8yfTnGXXkJ+QkaGolaou1oG4DpLAFjAkeO2KbKYN7LOE1CdmIkC8ikt6V1xSZXp7G57D6Lo + 6enrU+YyhQBkkkSdG2vBd5gMCoD77dINQ3uBiF63OguScuks0FNZluLT20qokheX4pi9EJRJB44B + 5yOG8cyxPA0n80l2l82BA6Qbs7Kc8JYs8wpisIFF7YH5bDmbSuTPdFXIflvfH6v4BwExo5SC++Tf + 8DesEob3z5cM7yK0+kOPmP6SIhlcNeWHl4EcNxiFulDsk0pQbG6qnjVMuNSmgPUDUDO0PMZ9p9nJ + 5jA/5EFFX6RvFIXNynXX/Ig1RQQz3/G4Hwfls5/IOf5tXJ3lerQbhzcFMUdO5FejjtVcTkGr+0Jq + FTCK9cMC5r/kXHPx2m6aD+MDNPWbZAMDFF6lfK1LFZrcJnAWc45zmsXVNUixRiAdjFZyQy/41+Dn + 2LUDPJqK6YLu5AmXnUNpYVoVU7ujcz1rmDhsYp4bqwzkgIKha9bZGIwF+gnsLXxz137c2BIdyNOG + b5UOpJUIiQcf36xjEDZfc6jNciBPsJgIm6NvpRF0o7jbo+GpoLM+yPWRQ6luVxUIzHiL8HJ63TIQ + WFCuBALjU10LUSALmpHADDU8MxL4BUigTuiMXA4sqi5NSJUlRB6EysaXFIaCAWrZfIu78A5hvefJ + OjfUybz9o7ySoetUa5aqzXmjBH5TUuVNkmoU+l7kPhriKRyqbHmX3D6UYlGZOZ5CjGvIeOT5vZcI + VHQHV3npptqc3GcXm+nZYv186KokYqmhwYqciWU7Ozsenkqt7QwNSXmFUgy+0F8sAkjUe2eVcJOm + 6oDHQ/jzDsVUZU25m93ewTWTCtw9YZDA5MPhq1QkvrKB2J06kNXxRAXUIKAK3bUf2cSGbaEyOmKy + x0zI2PlUtWMtveGXc7qn7pPJKtsxmIZ5QJQvcde+uaxzzFvgqTUR5twXZo/TPz6pXC77xl4oPaqz + dAIXGUZdz4zvUyazOu2mqX4fZ1ShpwB3X0C3x7tVWLg0/GyF8I50Wd8lMIS5kKgKpA4o8kWBD1Sh + JK+FZvgJ0a5X4ZZ29vOABnpo85CMWfoT27pjQwPHpXVrW4CQnWcGBQXjI36IJ9j1eNjM3cqcG7i0 + zQIhUd6C6B6q/WVhu45Y+EaklL1gFztChWNf23HCyG0HSaXbWFtxZBemEYcekqyUfZtNM+FYFFUR + ny3h77MJsNXng7cnr/X8KetOkSj3PeDnAjsKpp1uGCRH+4Zotowc/DHxF9h17JDVXr2ACOwwpYfG + qbNA1nAtzW8zNXscqLaUd+ZTgNgi2EJxsduPTe3tQAX6cfdNAHukjY0yb2Qb7Kc7McL91FOpC3w8 + GZc3cd0zaHnxX6EfyY2NO1raJ9tABFKGCVkayA8FrGNHTNXuwl9BmBPCN9BCcGgNMaovfdm6Cpla + WYKp//WcRV4LD7R43c75QJTLzgfxVGYcX7ypZhwHJbRw9EDHMG98FEcgbso9gHLOHL2dhIuSLoUy + ks0fMHC7ZLPT4h/V5lqmNSmWfYW1ZCtQjO5wCNMU+M119u1h3myd9BshFjgoCCyqlHkHQQ3t8wtC + O6q3SzLQ9hvTFBEaMIi9fw1+qx/oSMjc8wcR5QJ6081std7QBEvs5OoEH0vk51ThKWjg2oJ/7B42 + IPDeGVXOQvAYYj8Y0y4ke017PcB9oV0sQUBFrHyKW60Zwk4FbOchij0C8V1uMbNwYk+1sTBuTBab + +oVqRfKAAB2RNRaRgE3LuBFM5iBblicdrHt3tJ3R7WBqewCEiZXDnuhChHRhOZ7xQcQUV5Whsq8u + uHvCnCPW7sLMW1nemIVuildm/pj4pZYBhx/HMv94rlI3lSgwQHjWdIWwKLLYR/EmzftBgFGXq/ha + n2609FsxXnqV3h4SK9u5FFfMqTQnjX8sTqYIPPmKqavthSDtnFSRrk7ot4l0xdctI10F5UqkKz5V + ka7nLjupxLoyHlViXeEShWt0BH/ECLVZjHWtJEoRUPGzwLl6XoUrHg0XabLCTHJRCmZCVoDL5dxl + ryjf/C5ZF+VZ+HWVbIYw0ir+dDWBDPsX5ji0MMDgrr7ds6UKB8NOakrJ7EVY3lVgw49MVISCRyz2 + QY3zKzFiFuDFxQ4Q89img0qyYNNdLgC1yxQHP89qHg/nGVx2CHMA1yF1Rn3hX+MlzuoNohnM081d + MscjRxtdx6py17WGKa+N/zoYkTynoGojVKK/dEGBmxk6Iuoui/oazT0kmXROqvtRkOd1ZqOngm5e + X2L5UYDMA8dRZiPuncZHzGkX/qMa2RqOdCeG5Ug9pUvmfrWUeTZmwkq1mIBa3TUf2L56Ba8CfSE/ + +DLB7qlUH1D7EOOYSjYnBW7xY6oZ/Oj0paBmOggIpMfiBh2ZEVNB+dYD210KsEde5Mg08M1OM813 + qanwows3BA5Fu76/ZHGL8nT0upUQLSmXhGh6KoXos/+uGJzg11KEn/Ny7MWhF0UjLwaJUZZD/HRH + 8S1CdhoRpnFye1vwVn5N1mY9UYWloI6OCpC9W0Gnk2UhjpR7XJisIxl5NE++ZItMGAcPNnIcaH7v + y+fiASslGKg7jLRBAF/cM4cHsQQOV7r1K86wDEfQSrVWjWw1a92JoVirp1KvXqfbKeJ/pgYaS+C4 + aqgseNu2aJBqYztQ1YUxTvmQ9n2yvJfOoZOLYTJNlggcoEsSFhxEJxdjVnlBsdETpFJ8G8mSOUBC + hQdeYEQVKArNKRt7yqF1LlzfSz2SA+FX+yz8XhlWf5XjCbKNeP61dJGt0+XGuv55m3Dv/MY/pExT + THGIskLzsu3V3tVjDnxabO/aU3LwhYu1h8n+CCLmHarOe0nvHCXzcvg9ZUdrLGC8p8ZdpCNsh5vZ + sseLY3cY5UGouruXjpOdUs9xV89o4FBI5btz5rXI4KTX7ZDXiXIZeV08lQkLl79VkncYj50y8PoL + UNc9h484D31XetBezXKsSLiis9UMpOcNhvWCtCHuaISTBDlkphz/Nd4huNa/YG0CMon443SRzZcP + q+2Xh/n6bvZ5JigWK3Q8e3NxdfEcZSMs5ljoV2WMipxSuGKA2a0xfjwbJpRbNilAMq1VFsMq44/n + yqudlFo3HnMqlXBLtMoTWUvI44HThNoaxSELnbI/sGZuFJ5so0UxdsJKWsDgp94NAzwHGjSdUUpq + bxVNo8AX92xhivvwPDoUiWazgk+gl56ck3hSSCXYcbSsRIHDKD26L1EcYaXB1R/4nZ+n7hYRUfbn + 6TlsP3tVmV63ulsk5dLdQk9lbManC25eLh7cHnGEh6F4u/gvxwgXG/sjBpKyL2+XK1gP0o2AerrC + zXPcELqdh6GjVT29X4KKiCgBY3TkzETGS7lEgZQL1scqGTHb6lD/e/g7sStKW/y0vmUOG4I0i/f5 + dj0ByXZ2PRPGetTbjuXeXg/Tb3fwAyzE8BT6Ww/fDP9YrvMtr5IHrjZLXr113lydXn4antViEzhR + cyIW3NaOG7uVvDkdG2peYhWsyFER6ID5sCCe21SvpA7MGwW2RvjJIrlKHkFeMKIhj8B0XJ19uGge + aw9JCrXEq6gKYp3GZ2WgihmmtuU1QepqfKusk7zKM7aRu04t13fdkQNxRtXFB+K6J3Vwryg8G9n+ + BybEfY/S5wHjxWHnC78ToKoxvyKg8Lhaco3h34+UrdFXtoXnigC4tguB4IFiI27nyE7Xswkh1yCC + ptrVdSkS1dqdP21JdWlXLXNpK1HDuvEu0IjuxUn3JT70mC7RSpOv7bcXxNNHLeseOIF2v7on7IgF + Ld2vspG1+1V1Yrpf5VNZnVEHYBXy1FQQ1uvf33pOpMT2YvS+Jo3h+47E9gpcilk2cW/ErLRBlLGq + dLvXAmjvCNx/TPqk1V8l+QE5DqPqlNsg9VrXJ3VZKA5WaQknIGbDIf8L/t2DYUtj+zKQ7I9YG7hP + 3cYa+V52YSLf08Nm5PvSpoaJhW+6XH/hgxX+h/su2ufwHLgcdBPBRZbpBC+mrgdip5Wx51Kafkxo + S8tMKkK7Cpj2f7T1veyQE9FmGFgsZib4lsV39hYlcZAH4iD4KQowcmogxeQu7H7Ikb5nbNnqqrbs + +ruUwfYpVsQcmk11kO9cnTlwKJr3zSXzXHvLPb1uZV2RlEvWFXpK1pXXr88qgQhOjFlgRdtKiNiL + gcsQezEMHBmIgPh80+Q+uU3H8PXbiQBb+TK++nhy+aac3TcSNXAS1FWTgtZQSLV+9vurk+fDaXaf + 4Nv3CcKW4EmB9zWwaH6FIXKjjAURv6TfMnE9ztbUFu7ZB4Q1Re0KY0BlOeXJXTr5TPWKVfViMqa8 + ns6qyThlc48ZwtuYMgNsynVYFJbNH+bElKqkxVbEtH3CRvEqI/r4JZijQjYOB+Ya+uVODq18+u5s + ZFQkk18w+FtsmAEeGW3riD2fkoKcvGoHMMjaSmPfw7TxxA0HBwUL1MANWJr994jV5FQun3K7S9u2 + 8WOEAchiY0IWMg+P1dg9FotekzWhL1F6ish2QQvgtAPuUCd9W96KTIcj+++Z0xrln9pYw/zLLkyc + f3pIt9zHk9cX74fTVID5wFYsp7Lv+73Yi4g49lyhF0fM1zJEB3tlX+nxjx4702tOoBv7oue6yT/Q + 6wZXlOBwbz98PFTw7CV7Xp0CRqfg9DTwUAdtYxTSbexOQd5F4RTohyQnwsUpA/c+XVzCDlumib6X + BjCeZbrCyMpcyr7CBsVzgBSEQuyFnozR88Mir7jJ5h2jkju72g8/CT8IwP6A4DXP5a7hl2kfTO57 + kZB2DjomKAtKHGi1a/q0TLnMId3sDnfo+i6bfN5/G9lapFgOlBufREeO3xIoVzayhlhRnZgYK/Ip + HcwvyzVCRDUZqJRbBbZBKkL50OWtZUwheVW82cNnZ1dXz4fPLj6cvRaqARyJ+PlA9CRMu55DV9ij + BKQCVarphAKJFNGt5VyXuRQZmawnGXaeknADYxL/EvE9DS6hHahW/z97/9rdNq6sC6Of+S/05ZwZ + j0hpArzH43xw7MTJ6jjxaydzrt7vmGMPWmJszciSti5J3L/+VKEAkOBNoEQn7l57rr3bMU0UQFwK + dX3K87hRlK/WiSfhQvdziV3881VndDA/cAPDt7jKBEgqjBt+IeyudCmKEx5iC+8d0ysI9WzSonQU + vR+JQR/o9uqdUT8VeC5PBsFSxILbze3o9GbX8wI3KcCELQgzqxUCp4M3gzJE9Nltptl0FnsyCTJC + H3//3g1d+4Aret3KJCgpl0yC9JRulPNPn6pI/ElYqp7rvxxxxrx4yFmscPjPZzA5m7sp3unXoyJY + 7DhdClzexRcRlzKZ3mcrWfz8uFArfrD4lq1m6ZISuc83G74cDs5XP9iSahjBP7lKzBd/rcTcYoB4 + CS21MeSJsTBxq9jet4Wv2I3r7YVlNNYh3J45UmkCmz8p2dWKPTTBb0eNFkFF0/k50+3gftBBrUlM + WfARWR/qvqRFka2FypAA00WhfQMqVJ32Wu+42S+1DFeu/AkHYDnvTe3nAC+HzNfO1OiMsY45a7qR + tTtVdWL6U+VTqVMulzz3JACde2E7ofx9meulxVDm8ogH0ZFTfNd4dXCN9Mqvw6vkh008ElpdiVe2 + yWaYBYiw8HhfzVM8Zrbs3g05YdvhaEAbnu0VaIRUkhoqw0EeMY/1rOQXk+/UAvx9D6pdBt1DIaO9 + q1LTCpL9UpWozav+FGlU8+f29M4GEiw3X2RQIr7u7ItQf9PZ8i4VK5H7TV+q7VuQpHavaleKnYTb + /awXnc1/IaEinXWGClRdejGBrxWZwL4mxDhRp2REA4VmJQf33lZwl/RiBPvcW+DtCXD28BskJxUl + +vwsBHDt4VQPFpwHKjgk8PSkj9bb2ZctcIbZVhT12Jui+F5f0BzCz4PIqouYUipeXbkJt5fw6XUr + CV9SLkn49JQu3su3H72ShM+SoCTheyDh+zwKg2Do88QNJIDXCabsqMwpkXtVB+Z0ebcIUDifPYwX + 6wc0HEyOC9mTApSgWBcUOegai4kCC31QhpDjosAnEPfFb8RvQcYi9EXSBqBDr+q/R9BwmXi6XmI3 + EpTrzXZ+Oz0ya+jw2Mid+1BQFJIw4KxaUugQ8gX/OA+jUOsIhRJDpYmu1z9QrrGhq3UPOW8Nrvwg + juMd5JzTghsd1l2uEaxKZcRS0S5siJvVYnt7tzHq1ha2QD4o6R/GzBpRREPm9tHYdeKeqAMkYDzL + SzGEv4jatKJQpTJNKgLb5Sb9mtnsLwfPivb2gxpM2o+EANUJhPvpPohRTrKoHBcVEtEFdjpSdeQ+ + 04IVgg2ObrA4J7xe3a22wm5XogKRpLUGkCegTn5r2eMd7/Lu9JqAU0MZ7K1rt+ydgBdTAl7OFw9y + imv4a8+LXrhRN/Rr2cZWeVNdGLqbfCgDxAmhNI8XKHr6Wv9YpI/ucDhMzmERNGQDOBiysyOJ5jpR + LCbUg/Is7At/K/3SQj5CVJ9+yMac6p30QSgqjK8Hev1EgfZ1jvsy7Opgdv+V3/kAyza2B1h1YRxg + +ZAOMOWyKA26ijD2bD2/+nB5ZBzdz2wgntYVyPm8XjKXO/fbCWHcxyFlf6DFsKir36OGtUZVGmZw + KNxf4rfsULCw0COv4T3ZNcR1uQfgh0eHtzjKLmzo58V/562JPbTO4i4KBLOGazv4zGzZpZcbYRYz + y4/tF9Pur1oNoUMA/mG1FUImUMD/+K/3jHVwJ9HrVsqmpFxSNumpdCf9rzdlZZNzLzAjzH3+csTd + JPaSIYffEhl7d37y6WRQE9YgBOWzdBa7S5XnDDJ0utGBv6CXyKAS+M75dCOCwwrud1FzrSD9owEP + 9h/59Mkbkm7YUkRLiEGspxu9u3IXikISwJhjqT2g3C7uaKwBt12NM6x4L9wvCp9Yjhs/AQmK9OxP + i5VGnD7/80tVlbWqWX2qXUQgVnG3EoC+dx6HCS3tluv9GR6vYtda6ywHZDcnDl0uZka2kBkmz6up + /Du7Vqvf5GmLq6A5OnLd9UGKd0sUzW/Q9EEhnkknW7mDuC08nvtxAv/5t/M/a7c7yBi0XzH0Q0eu + sODE1vulS6JZozOnB48G0BC3aGtKmrA166igjh3EBDSTry9yB1DD96zsK/ZldcS127ky0uZYKRb6 + JJBYLeEue0arcLSHh6c5le5w18R+yXj1QN97kdo1vJ5z+ZpOUz8KnK/CjpSwNNIj33uNetPlEp2x + z9/EXTMUZBvrfH3ZhZmuTw8l9qsyQ8rIKA13hpZJAsdYjMUxKWpz0OsC1j23YRbBDcsJDGoQaLGJ + E5nYf1hKURC4pHeI9jmIzx6goUGUiL29M+SxLsrusOg4bC41pg3Wnpq1o8Q0fQLnMbmZGyajFW/S + NnqZu5Ru+t6NPHtlgF63SzclyuV0U/G0kmQahbycZDoCdccdRkEgi22/fVguCBAOPufj1RsFW53N + gOK4NvhLlLnOy5HU1bmOQauqq3Pdf8HsmynKajh69ayWDhr5SnRyRG43SpIczpkzHYD+hvEXLu8Y + gC4bWQegq07MAHT5lPS7Jfe+PFjAhhgoPbMHlU45Q2egQKBS0q4UcR1BmOLNo6DHIg2PmeTxZDFB + kN1Sg3Q2nm7v97/8ONeFONmp17FaSN7IuhCn6sQsxCmf0r4LRgJOchSOngUS1XMhSgM8zMQfjgaw + CuPprAYF0ene1hwWGjtDTvsz4ZQki+0l7qIdqqX1ttm7h79NCmEcUQHlnevWuOQHTP9jdP7zUgo5 + xZafXoHoZg83Qa/bgXkS5TKYp3gqgaI/nWNMU0EUYK6HRvcKmOdzDte0mwy5F0eRTD18P12KiBMD + v1MkH2mYRnIcgp4JWu8C5Fq4fRFfboqRBEIKziYqZqDe0adlL7RYUJ4PhauY/aj4BJX1o7p7aAW5 + e3bxz1dHpTKwJ5tbFlRkmVpx0gBdALnTsCpdvivawhgD6TqJokrQSj5T2/usJM9EUQsEZxgmSaUs + 3UysSK2hkIU8KceSNI8wR5LWE2nY0BJWDbMvVpMtDk/T0hM3ma515QcjKsdLymDcJtnaIeopVBJL + 7m767R4hY2tsgCFvH7/syKEtvt8OF1v29NtGb/hH3b6OOMtaTA1DAv0MKVesZY7sLgYgRCDI0+W0 + wcTVxXiW0A2Xf6fdIHY326Ec+jz/iAORScVuNTTV4ra28r75PgUu1S2uHdWmECE/4pTMPc3G2X0G + jAvY6mqRTxyaFpsEg7okQZdR8CXp9Psp5wdn7UUEclfimZbKwuHhJAVaSTOtvefG0mjyiLmFHa0n + DeabQ+0v+5FqCbr2WEKxX2bG7B4oL/0V0Y5dicI5TccPMwzMzRD9qnyBd5yxQ4NslGTqK7ALz3M7 + g13INrZgF6oLA+xCPiQpdbWccd+VuUmhe11TS/I9953mvwgCI5F3FMf+06ow2RvW4V6Fk35ZsVf7 + IkhPpALsLy+TyHWigufaq4v0um2iAlKuJirAUzqIp2fXZXRClgTo9zATFZ6DqsEDf8iTJGG83Xh8 + swL63/cLsNhdq6cv07E0KpjSbzlyIfT9UmBBXqWHQR+gT1zpk4F6A2Xp3pl5O9qvhrrG/WK+oFe0 + x/ZqOfN5qotl+/xmOXgmqfnu0bGO7bt+/UnC8SnsvgKen3P1+0UhkN5DbYGB3k+B9CJo9GE2UoMs + jaKyb5sg4X4q/ipouJQQpYpFyNF/GFUnuflebIEd6TeEnIeq7KnH/zU66VL4VDSwLX1K1KvFT8Vz + OtevTy8EqnLhYMfAbyJWrn/6HF3hQTBE73Xgth/suxV08X2U9l2I6+kyiT78SxGohM6vil39uahZ + 2okWyYPgRslpp4NADSwPgqReOQj0XBY3OnldCY5kcfUcjEDyEYXz4JQE0u3/rlAnRmFdw2SBSIvA + TjjNyLFFcrTSP/Q1IisIpVk10vDJeVEni+3NLButkZ1OBjerLP2K4Wfp1AwODD2zZp2B9AHSQVyx + 49VPWpFmxLwmyNyEY7Jc8m/nAqigRU5fo4pHF+v4nF2cskLkV23PQwFOtR4AawPVTITRUQgd9IAG + YqC7XKzJmneD9um8mq2M1cEL/Ox+zJYO7itd0zkJIkqbd6X5iDoneAA5ALyiuhp93JBTqJcEGsAV + 6WiW8+iCa1ni36xC2ZJIsKEihkgONgzvT++3tSHq7SAFjKSTe7nCXVtLVx1sC9xyaBKr3XB25jBp + rQHBCnYQ7gID/aBLKZb9xB3FOymg/AyE9A6Q5fS6Fd+UlEtck54Sz7y4eluFLOeY/F1UCsKXzwM3 + Zj4fIm6UCpW6VABuGD6rSqSvCUpgheVMZGJqCdZ3OEhnaywOieGW0BJfUfOfzb9lmPZ0PLhL10X1 + DEi9XS89Gfz6B5YIVVW+0hWCTE+2Y5hzaYEvwBUSc75Y3fWISB5GQcAr7psnIIg86orgU+QZQnwe + UmJqentbyFuCYz0BfjuWfsEChlCKv6dKEVtREjuxHpuldnCbKhbMfd+VIXNkYVx0h0eUdhvfsLZ+ + yTUGO8GpK1JSx6ZPHHDbDRLKetQ2r5vt5ClbvJt3Ameh2knAgefzbLav7VUHs/pn0Qss2tQhoIya + 2IaTyQ6MYDJ6JgGhtvfS0180a07n0800LcQkO61/HWTv3nhTB2lhcI4XeJRgDFeoho4pgvkUEP47 + 6OYHGGALFLwSBaG36++xl8OSqIJ7vFjfC1mjCf+4HpjzsSN48kYEfl6IE2xfVM8OLImMrn55XmsI + 1h6WakbBAcQsuFEPaPmeRstn7pvwBesC66bbWMeDyi7McFB6aBECKjxh29nyDq1kNfXjFHmM+UxC + hseWJYpjn1xc5tUi1tNbOCz7JVc+nrHj11SX6xRBp3YNIzH+PVrl7MV48bqdGE+Uy2K8eKps+6dB + xfaBSmpFjufc91x/yDkIsfJ+ON3OZlj1pTAz6hAtvgyuT98odgGf80zK3CgvSrv04PrrEkEuTydj + z5dgl6BPvxndLH4oQkeD2kK84gAfiy5kohnVnD9no2viEtONzLHLUaLPmQC5E8VsMKwM3j+dzUen + Z78DbVFaFxHzp2OZgzdByUBGYpIyAAMNqqYaHEQOWSuLUNYUfmYJbJMG20gSMbiI3HpTZ7qyoo/A + QU22l8TzQ+6xSipqvnBSCWkAOAqYGUVmpGf6Lij+Fdo5AndTfU4DwTX2rcaulZ1z9pux0rDhUCpG + RleAMzT1nrhjF/y3i85dmMpfoQi1MU19VpCq+Q6n55P5doWJqU/3fDqCjWk9jyeuIxccGbHdVrGW + 83CRBVmr7dFJmv0JhbX3xvwcqKgaRmWZYW3Lw0vJx3ng8OshumKjSom50fYD/bfpOGCey/R0TaZ4 + hfYbjn+oa6ZVzcUbR65V8xViMw8eLDrNg2Aso6t3H847UGxJ+KUqJGV1cLGa3u6JtSmuEvMUNV1A + dvJmD/ifHkJ11xAZDm5W08ltF4h7rPkeGJ9Xrn+9Vz6RJ/KJ/jgH0TCyF0XpdStRVFIuiaL0VHrh + Xp+KGiqmG06cv6IomoAo6idxxIc84HChVt1whQDN0WYxotDKQj2UL1+m469ihsj/lo15VJHqTj9e + vlMB2rCx040Zss64edGfG3H/UcITGOpjGXpfX6Ftgb6rFkESa8I0IUgaYyugaSDgANynhXTXoepi + gT2a5BO3gXyMixQE/3Zer9do8IXzcAN74R8jMYcFIURc7zjJ+AfEAB8aosTrq3ztBAo+/gsf4cer + ER7n5Sn/dea7Mu5lTWZsqaYiMsbtAjQ53P2IhFA4nuvjgR/8f3Itj0I8yJR8n97DZTYFgYfGD2N1 + xBbVaBnMDXrIwH60+j3EWYt7pUu5x+YSlom0cukN00zW3EG2ffzSMpetsg+XAppFDR7M4KgL8Fel + oKzLDPUYhn9o8Z1fH6oOjJeZ2ReCrXSlQR7lKovvIKyDRETHXk8nvKaIdZAPGSHztWrij2TPfHyr + qKfsW3FsD3VAr9vat5By1b4FTyXI9uVbXqmjg+epbN8aMe7FYThkIFwkspLOqY73VwHNcG/pVKoC + wC0/GRYKugggqMl2PsFzLGJHLpd3HN3IKpoyE97S0wFM2P10voVriIJO0hmWUxGXllbPBYF19i3D + vaFr9D2oIUHb4rVJJlniQyp5GK9PE/4H9VQRS0Go3TC6ahGfuu8UTJqfNFmfkkYTkccxvaAsD7V1 + UWslQmjsn91H0YEP4mjgR0HvpqhCzDCDOyb2WBkwHIc6H3yZzlIRcbNY3abzOpizCIbfZBxCXC9W + Hjy6Xm9Xi++wycyYK9aEx1ZPR33xegmMYmaU7DbHl/gNFrJ6uhp9DTO6CRNykhXDASpJnn7kdlu/ + nMUt8tosJknGG816cts5f3dm4QhWqm1snh/1YGM71LXbZgfAjVC8wVp3kJUpAA8Xvtl2GFsdozkh + EqVqpkidHx0H2OYZb/v8SEpKcMAnCn6/eNpbB+pIhl6cv7aLwOqr3UhicrdEzw1hnIhIg+iFGKJ3 + u3NxBNp3xItFCetGvG/GXkQ5WorkGsY1z37b3K0yaDHPLPuoLVa2L2mLKkVPqvRNPxDgILb7YjT3 + 6RzOWwaE9v6yviDoPD+vRHzO+AvGO1Yipkb2lYhlJ6VKxPSUBN7JbClNYpNsnC5X2fwBDdc5wJy4 + 4kQ9AHVPcV3ezQd1BOTgI2dXW910cIb9VZrDQxE/ELqxIysV+rnRco51+ewQcxrNEPsS3IF6T9Wo + pusFfv1CAFDvTXXPsoi5vk1BL8VoSDxh82xVrz1X4mY87lO01a7ltI7qwXq4+lIe3WU/JFnxu12m + VSNgZUyeksmUimgOERZzNJ6uR/no4bemTnYyxR6rOHoqJ5PzqEvxKHzdMidTUK7kZOJTGX59+t/V + nMyompM5CiMv4MkwjKhwLzKGC2NDnXy6HCnmJxn9sFgz6HS2/G8VDD3+UQ2GNrfnfSo+y0zxChqL + qMY8CoJKZhYMSfNj0zBewm8poE7XU8qr2zegaJuW9qKWUyTYR4i1xawvF+v1FGW+tDSr+WcIAR8j + qFWFFmRL6nuPi+t2A1+cidZiBWUnawd3js4A9T3m9GBwPZjT9RDWHAVlGvl2tBxFFwqPXw+hLzse + BasXz1RHi21MAhxQOACkAtQRlk/LGqYF2Pz0cAk9YFID3c6/LGaTQlJB4WubLwfF0UMtyEXniLHb + EdFTNrIW5FQnpiAnnxKHT1fjQBb7u7rkHimdI6lrCoWOLm0H//xb89+1rHayGrPAScV/UTbjEs8T + 5Ooo12rH6J8QSc7pBqOCGtPR7KEcXJ/VaM0S9boO3LwqyLgxxZ+algl7igcGafSZ/6rbx+SFEAis + +CUzRNCwBebaN9471I2+wug2+2SPCKZ0slriptsJymG/S3zK4q/dhTZf5zFXAXNNkHHvnksKUy92 + 20etGCt67XO8l0/IFn/aixTKD/dfMbdbCfK8kS3Oj+7EAPpRT4nBiQKlaisVQc8L3wS3xNwkiOXE + uec6Tk+l55KE/PBGOcx2jUhNKaVjvu+mD7y31wfe1+oD7wv6wMnZH37ZzeXxwEzH9EEfCBJgd/4w + SLjry/vlVKeYy7AMlSG72CLkOUwnrMJwkKd7GbdMhiYfiriQlwV89ILAPYu+UTGdsgNl5Fyiz1y4 + xWUEn0ryffeOQkBX09vbbEWxo2j11qxfJCOuFiikFiG9CMtz8uBX1JRql2bWJitnbZrVYUTSbdxb + /HQrfa1t4Ndtqy4OD8syGNReX5o4lj5ogqCBONdFMCKrRaZY4On6L7DaDu55pcn4nAl/xKHhrYel + m4uVEay7sHKrbI1xIPC907n5WWmeAUmf9ms7a7DM/OoY2JhyLKu7aOflvt9FWqSiGLzIzvzj43s3 + 7FAtnF63YvCSconB01PJ4C8vKgzeD5iZp+NHL0ec4XdjAbdEFXA7hc1xt5oKqIpSycihEJfgitSQ + bcRCl/dVFnpyOeKDdJIuUTCvCQHwKpXBijjDQRKz2H2skMhdwXOl4Mhw1zCdiy0fzaZfs6I3VzC5 + 5rnUc/IMZ+rI9LWq0CA9JAdXVLEvUMe8JxtL2HscnSXBdlM0CjKkP9Ea1MENPm4kGtnM8g1ROhnd + yPUUTvZkYr/8PCM29vwXjHW0qMhG1hYV1YlpUZFPZWJ7NmaxNKmcnKjUVzJrgaoxBn0BYyVUZKb6 + +mvRzFRL4AnVRGFuH1WY9jq31TTpQ2N+bbXcJxugC1KgXwA+Bylyi7IKYY4UkNq7f7ljZ/HpFSit + V2OyT1vjEY3I9rnSP88kbb2jezdPKzaoS0V550nXGnXUxJYFyg4MBkjPJPtbbyOJynp6+SYXVqTv + PmRRzPmRowupjAfZGpW9PHDD4IFITUB7+AEnHugFecCWLmDYhqTRoax4KLQ6CoHLMVF3FE88pMND + 6pg/XSDHR8GSzmcKo7m+IdYbqvO4MukE3fbUi4Lmw2mWiB1WKYiPGuDVW3iSz4MoLgyx7vwcbrz1 + ddmvMGEvXK9b1S/Zxrbol+rCqPklH0of1XImiwQK4Xc6d2p1RO2Bmi09g4lge1HNkoWSh8g007JG + 1eyG+jli1SMoVb9ShrK+FnsT0H42sFE/MGWHaZiIcyZYAhkjsYCoXSjCE0mSEitfe6D33lB9ac1O + DyJtH5pyLMsjVw5xa6nYVoHR09CeQTdoz8Ae2jOohfYMVHm4q49VSCDuVyGBAs5ixoYB5wmX94A3 + mmSLHw+js1G6Sm+wOt9dttxsZ3B2MVVhFI3y8MNnZydvL490FOJQ1lf5U2KFfJmu1hvYTdkS7Wc4 + B6kovZKH8RsJGyhywI8vWTa5ScdfRxIyhDg62rRBDpmlIrBa2jhXixrc5aeGUq4mVE3cQs7n3Ajg + rI9ui/2mwDsexy5X1tg8yahmjqWVpDE3JnEjrxxC5/wldgEwnbvp7R0GYIicg9zb9LBarOUbm9XD + UpgNQLSBY1GAEuVCXkmCCuZfE9ZfOyNhgQ5IPwTeJQ6JTt387B8XDRehZLU9kIqEo95mr+0Zcv1I + 0Tw9Ybn2WlAKjzg26cglrL6tL9o71K++grJ9mYtx8e4TKCgd9CJqYKcUSeIFjYie0OV3V6yJoSAV + 6X9qkBQ5/uE9Yx0Q/+h1q9tdUi7d7vSUbvezV5eVhGj0npuORLjdfbjjvWToMwKYF2bzT5cFaCXU + +O8yxOxZC1//2euTswFig8lzTNfs2c2ymlz85K5Z41saYsUbg8+jECYpKUdvkEVEY7gJI/Qa895y + LcrMO46bMmOjOPZYGBcxVdpXAi9OXI0iUptcFRNlpTokMWrMuHigVFDTAObg7tFOS5hoR45cM9x0 + NVJGuBtFroK9VTcX1Gc39veoPbfmlnohlTrYyz7YmUpDZIbPeUAEVGkxuDoxpdY+cOXpmiofJeZ2 + v+u6Ny+MF0Y5IXHrC/lsL1IRF3IUbp39KPgeGUmqbK+rJn2gO8dVBchMpnbguHori+nr3ICYey/c + oJsjW7axdeKoLgwvjnxI9/dmdiu9ONcfTq5eO+K/g0/w1ME/kUvGC3+ZW/rJWj4rht2erZuHVjm2 + RFeq54s9QDPtZWpleHyNz96/IsNTKOjgk0ABh+oSCwRly3Zg+Q4+70PMjYoTxSp0Pwi8Fxh60iFw + n5rYhu3LDoygfXq2I2Q/h54H4fq2oAcVqGLkPmiXTyBy36fAzosr7jL7wE563Uofk5RL+hg9JX5+ + dXJWrsLocS8OSgpZ8HIUhkHs+8MwjFzfq6mkhAWtbueicI8o4AVbbC2Lb02oEBeFXRfEmOzHmKJ5 + qc7XcTHa8UP+2mv12hWVA3tD7ls2ePbh9Rt2VIBh/HM6Hw++QC+YpA6NvxwP7hb3mDSLJO+29+l8 + 8N+XJ/ockI54lU5YNd60eZzKf8wakKiY25DVy9yEBXHIy+pfcZbqMo+9MG5KFDZJau0vH/yoNPhh + sSiaXLMKipEbNeI46Q6dv/rqO2Lv6xD+mPmO/HRT2raeQStucRh9izJ4B9fj43HSPsCuBHstzOfI + I7ZjiJUj2knB3rMDC2icn1qcuFfVMVK7al8KJNvU8TqrWehE4JCh7F7FmBO2l2A40zb4nroPsW/9 + M0CEAldJdZ4bvnB5F/1St7GV61QXhmAnH5JIsUpvRvpA5ugUhpB3ld4Mzin2Un1y8c/FjlDWY5GK + kn7k+GQpTybN8qQdcM4T0EYGecCEX56zAspwU4aAzVSxiJE5rWY5uxNUu1kFvF5G50HH3azbWFpL + dBdFa4l6SNL17TaV1pLzi8sC9tXtbLtBz2M2IvPQA6Y3Hhm72Gjw/9Y2+LfRAPsSWQFB5NF+Z2Tf + XaLklZl3wMGO1JDRhYDDtCNnH/3amXT7SAMCgNBTeLCXuwd/tGVAf38Gk36lgd4cyAmFeVmdjh7s + ID319+iQNyQw7ywY0nqvU0mNj1fM9TokjYrX7ZJGiXI5aVQ8Je738fqT6ev1Ii/kYRJUskYDYFV+ + MoQfsSqp8Xq5ns4wbttMgIRje6uYuQR+k357JYfLF+HGghs3m6uk8jyuJ10v09UtLvdsOv8Kcyms + SeuHHNllnn2fPQxUWM+fmc6xVJjVH9ebqlfZHNqgbmxFHTvmgdvgcYUpDGI3rqBJT5Bp3T3MRgpG + b1HsE7UUJS6JT6qNajDKngVRE2h2wryAeZUaIo89giIgs+8GfliuFPKhftFMvOS4ETy6+FWH0KwZ + p/PIOzbdc8s6eAy10zzkiSO/p2gQLoRBNcxGJ/15L/LtCbd4XPCt3dPZZaRPQNR25DEQGmkPx6vb + bfWoPbfWyeq3YxtU4l7ghA8OGFP6O49dIYtQ1Z9CzNZeCc+BJ1NzLl/xV/wFY11Sc1Qby9Qc3UUx + NUc9lOi/m8lyBHIVnPBs4A/D0SRD2YpypYpaS8HCtt7ewrjaXi72jXk7XkL4vj2Fr3peQAEt2tds + FVj7Y4l/QDLLdIOg+GqFfS4FfEVu3/E93TCZfhWU3vSKg5IzAjcMxXYaL7L5nw/3e9a0C/z/vZbu + PY93cu/h65buPUG54t7DpySCv3n9qerdS2Kv4t1LWBRE0RB+xAq35W0xnvTj1Rsp+/5xvwL642pQ + pdzl+bNaLJXYiwyUFoWl0j8oywFoudcjTB1F6QTLYEwFIP4IfUnjhzWy6EyWxyhcA3lVDZDXQAy8 + JbDcizusXTuVEFWL+bdstZYiW10ng2cnk8VFtjkiQUI/3lBxXFBOJXqW+stv9P5A5A841yc5qIuf + iKvqtwH9GrJE+LceK0Q/lrhVesiHU2UJJ0P9LqqCUu102nBJP/QJqCmnUF7qfWq3AhehALADaD1d + xt831ETMKH6pcq72vQL68bK4cUx7w1jF61F/wzycfm0KZ39yal9+pkD5mVh4AqIm6+hp0q1sfU15 + N4a3ST+mC3J7owpW5BVtT0cS6WFWE73p7HjvMxB0kCohhHJZgeIRa2uLDnzOzQ4GyANnAgPgoFNE + yMfLbAky+mGESLSTe3wkAskPJdtblG0gomz/OL1yeYdagfS6lagmKZdENXqqRLUP5cwYlsSRiaHq + gajGIuAabMgi7jNZKvCylGn+9vlomc43KL7JPKl7SgsW0TJfEOUSsxCmcqpAukCpAlpMZdhceos7 + 80s2h624nN4jAK4U/95k85pqfaX+TXDTuK1YMXO9yPOTCjSfMf7axOZCJ6D/eV6lkwImqdFJXnqt + tg+TcFwy/DUQdn7GEji4R3T1hLAv0D4Cm0GPtdDU6rI3GmvlSiikhpms0KmpuOa4vSEm2FJprvv2 + NOyBYjs3T2trdn/NtykeF6lMAu6dwh3odrER5Y1scwl0J0YygXrakrL4+iqfMo0T+u70NZc5ZCZ1 + 9Hi7POgtmrcjCfsQ7L9HYIgKXQ5ijSyG6SFht7QU2cYaW0x2YYKL0UMlxqVBWYwTZyQVUURkx3E+ + vD47i6vPDRsjUhJZLK4sUPGYopuWjvoxYPowVOKAclzzbDJpdODYxTM9OmrO04xM+AmIhe2mj4jC + eJu27OFgXkEiy4jBGv9rdNKhkBg1sCwlJqlXionRc1km++oyNAMFPN8D0Tco1xN77gVYpHcIP3wm + D/wfNyug9X2ULqWE+vc1SzpS9uNxhCl2iheHriwAwSLfPq2fXrcsACEoVwpA4FNawXdn1bR+j7te + uQDE8wCYVOINA+ARnhQCTolLwDH4cHJ2OVJAfVgGcTxFYJRsQA4hTC4uYbQsfoD6qHzghQZwsaWz + 5V06+pptFiK+Bx8fD2bZt2y2HqSrDI/fN0rApswEWZh2IdLSR3Ci0HkoPIrjdHWDfv3FdjWW+Q1w + 2rbjurbK50Vb8d2kAX0AuaKpJPHmSIwIbqNK8Yem2Rk8w1l8ftQQb+EHTckpRj96t1JsFPbSXJ86 + 8JrjLepoFoauLrwSFEPIXL6DpPN33DYOniNtwGehsNiHsrLQ7exh8UOU5N6rtASQIRTT1VSMDEip + HPC9yDHpvq4u5v4xpfuQbCviHXhy5iqbuOSUsIj570dEC0BEE6JBvgXFpqgX0Z5Q7CgnRf8+vUWA + B1BZ9repIxMqrfMOFvYT6FtUcPUTplZuQYt2iOUyJFG9gdpwIBMgFuQ6PH07+vgWGcZ2iTxrspgv + Vushsj6U8/B7YK2gjcwZ7jSWp1jbOtTI1cnrpLN+KdvY6peqC0O/lA9JRsnLoudhwwWlccefi32I + utSBjNAPSJ0v+GIPRmB74khupFXl89Vz7sC+HfzksJsOVqOdfN6e1i8Lx/GjJDBXxQK4zfq79qK+ + IwCfZmr2sD8RYKrkgF4+rIDD/0ADp0ad3I8lUkT/yXuXJfZqHr1upeZJyiU1j55KH9XnD55bcVJ5 + bgmc1Xv5HKSchPMhY6DmRSZawPc7VJAW36CPPHQu/fIFvhy+4w6+iKA84AK+mc7EXbiEloQ8djoZ + 83iJMdbrDcnmhRTv6/kXrqwAb7Zzz61P6j8cr60vW0Dha2WZO9pClEKvwbSeoadoO3i9/QoLlh4Z + fUQw4yUHVe6c8gPUtvNU/Uee+mPyYW3RYwHsggqfbNLb2zwcHeFRJ9kmw4sRw6IQA3X2IHLUvkzh + UbH8tfr7CE72Ynt7t9wiFOt2Ms3WjtiJ2hXmivJ7AeMEcNU0rTa6w68LufnbYIMdnCv+ZLDBeosv + CAlX+203E91bexPd21oT3duCie71h48VEx1LMOqqaKJzXz73A+bxYOgHPPRkwarXc/r4d+/qAZKB + w96jqQNxkoEZiEj92YNCRBbGjXmm2NlxMWQaXoGFEUaR6dyItzYtaTCCmrADWY/jYbVFm8wgjxqv + BWZxTVCTAp8Pecxjz6/Ae4KYtEWV8IsyLJj3Bm+ix2Daw9CtpE81D7jeWle+mfLAA2PERWtdcaZN + m5qbVEBkyq31spUahuWGTnFHpC3fJcBhzC1jRsFyheuLvWfKCiefZdCLJqqMZubmQoqw4YEg/pTL + pF89YOM5eGDUDcNkgVecRGlRMia6ygyasgLEdEpznvqOzoa8nQQa4jU8HpMX2qxk37VeWeUWcmVq + zc7zaHWTHkCuHa/Vo+uAAmwoAk19uuUVz6nkbZkt2LX+RfChfVrupIxjwcd+HuGGvd5TwlcPqmBv + NjGBMf7Hf3WD7/4ve/ju/6qF7/6vAnz3xdk/WVmI4B4itReFCP7yOXcDDvofdyMPJVQUIv51hthJ + WZqHTUjkMMGK4BNQfFirXImz+T1bmqEWwnQD7KqoI8xAAhFs9oUUFC4m31hFUDBbUM3x+mDFyGeN + d7rrxSyugLf1pQvWfpUpwPCwGkl5cTksZo6D5JH4LGqlDZeWgMpMcb/PUyRV8jzztpBHNQ/OZYY1 + CrNVIXVRlSnWvrliJfa2VRjCPvg/26k4B4tV/WQc6wO6puSaN9M1WwopQPyKfUwe5miyHK2ymfDS + SWAZsZsKUHF6L64d3NLqmvdCP3bkFJRYbf282WiU+vrhpKvVL7S1btr9Fuh4gey4hAhNpfVEWY5m + H0qPgeKq4yioPMLle5De7YPA6XUr/iopl/grPSX++uHdJXPLFjYeuOWMvfjliHNU/ofAZSNVWPMD + AdEPpiLUuIRy+WG6BNIV1ogHBj1NtSpTEIdNNXwwBBCrApS54XQMvW5vtrPcEmHE2bjMjKfOI8Eb + KJavb5OpllS6BmoGIxSG7Hm6FBbiVyXWl7SxPkXTeZ+ubiu12cszqXAchKaRFz1YpquNwHPEj1Fs + Ece0XsIX4rRlm+9ZNkcIyzsM9QX2Nkm3t3d4MDCaCfSY5RZ37jc0b23ulAnuPr2/T2fTFLpggYuo + Nuh7oh2lGBzoDgHZjTzB4DK09M2m6zvh6JR3a3EwC9jF802D+awsefXjmSa/qBrAEqXzm8XEsmxM + EAehdnJ8hZ423VlcTOVeKyfDcgAE3lM8CB0dB5ysX9B/1tZ7o8/Ki+QQFu3w0TtsZ4dXYQ9DVS+U + n/MXLu9ULpSa2FYLlR0YxULpGbFG5XuZTh5m0/liDdu86JAplHJ18j+Ddl37ShmUQPXOA9/lGm3Q + Iq3C1sflhzIctfYzLHy99h3J8yMVMeoDzcogicvSsvsHFKtO8BKg5vILZtPldJKDMK6nt3PgZKXd + lofDCw6WeGJ/3qQr2BDQIZaFso3x3wNqPmC8APO9mS53a96+75mfCfPSug8PUaB9ku3q6I/8YTC6 + ma7zvRyM7Lq098E+Svc7vpiCVnQ35nG17aM+e7Ynq3+k+R879V6wqFvBZNXImgeqTkwuKJ8SH2wE + yG9Bzi9QRg4HrEhl21AxvS42tCeUwhLGstYpY51qneLrlrVOBeVKrVN8KgPfz64r5hTXY0ml1mkY + cxYmQ/jhx9KccqlkQFOBksWYqjr5rCizDgcg/RbPMUzjaxgn3CKD955fpXJs6udoL58KXvwgo1iH + Iv5sBcNZrDe7xqRw9P6YrGAyvu+w19DIcyJK7jYNNyFv0AQY9xIeBBXDTYGh4eYHoXwrhWBd0Mqs + wOY16RoM1IYkYmVlI81WixuR5kWTVbbnJCCOGxRfX5q5pbVUc4GsKR7bZ+ZUFMxDaip0KoHLA061 + RKEVHiCRZdh0w+8I7gopmq3ms6uUKv4RcrwTPqdZ8edRzOQ7VACCT9AboaMEH5B8gc3JM68TxfYQ + 5knOsdit3e4mVXuEBbE996PXLcGJBOUKOBE+lcbkq8vruFp7xI3L6ETPg4hzPxrCj4hJdKILO663 + hmc5x5Am4tVyHe/gOdRuJ8/xdh20nnnOpZk7b/RyAIc4rTKIfebXESuq8xeiMOqFs3iYjlk1FTbR + M/WEn8hSHs/mGtZ8ftMO7eLe+lszOvWNhxBuMW5ErhLuWXIadbVuyDa2or3qwpDs5UOVAb0qA9lo + 5EwJJP3stXfkfBhl88lIlespllj4DBQcJCOk/Cj0f1b6MwuD0ICL1X1Z2h3VdsQUQ00nFSs6W8Dq + Ncb/NVU29VjIDEKwAw6cgFpbaTVkUERMtgLh+rHPzQUpLXN3T/kBJHvC4LI2NPQD63UgxHpuLOvF + rx/pXBcWBGG38uG6jW2ui+rCyHWRD4mTpH8qTrLOsHJEHlevdoVhCr2+OLn6ZNauoHa/tTc8gW4c + 7EtAuQZxQuzGl1HzVeRoCwtk0waPWEhXgDAskuSwV9LdI4sBVpAMPaZlkGik5rq6bP0YCdU25woB + jnuvwo6lbPNGtvhvuhMD/k09pa2+Xt/IUoayXBrGG4spkuW9TrQg80zJV3CHNr6s3rkGus5qmXoI + AhdHEknElUWTN9kMrqZVJZKgnferVQs5qdnlQezPU60ptoclcnKblagMB7kOAqIW1RqfwucfNODd + Ne7siXms8PWw3DeNcofV8XQlckeehDBUKy6MIreHLdavyE2QeMg7z4jdWDqnoYXkScPi9LNshMkn + IH11qCCn+I+nK2mHyQs37lZIWzSxrqNNHZhltMUz4jvL8b3ySxLvHb0fTdcLUecBz/vgYw0CaPGG + 3bcZ9CvAjbxYZqD6YS4xTzHmYIIgCrS+e2bx+wTsX3OD0+AOZlcBFfDOP/vvh6v+KPHDXQ+eH7Hi + SpY327Ozkf7lqHbr9ZLc+Whj2JFH3S8ecR+IvIqP+TJMDa4ue8stvW4ZpiYoV8LU8Cnxr0/vLoJq + lBrD3AgzSu25z5PE84egUXuhb+aBSgvidD7PygGfDVGhMq6tEgJ8n4qvKTmXPk3vg2q8m9lSdp7D + DWZ6Z5J5cTFuSicKIr8xbZT7XpTwR0sbbft6NUkFgp7LSqWmaobqnJo2sWrAruVcPYPNAXKunLKj + YxjfAw7uflFIfEbYnTm8QvYnmJTVGoMj1AJKNFRhdNMdwjmHriYLlJqRwKfFPedLleujhyAYu9ig + uuhREvs9IKXCJHqswIv2pSOWo0hHrhh87aJ+aW2uhzCQMcumodsYq57KriN/GoHHNUbw0p7sTNLf + SXIXS7CZgKcQ9OD2E9IXUYz0u/fwRfYx0vS61eUjKZcuH3pKl8/bd9dhJQeFhaUcFPZy5DHf9bwh + /IiZTGS9lBYkNPg/zEbBSEinI6aSENUf/BGcyukk/RM5tkDLmsKbkwwxhe5lvY9SIuxiu9rcUQqs + yFsHZjoxAEhEBuL9ltYDJivdwjbK30u3PxawbDD3IuS3BA59uh0OThdD8acP08E6nW3UPfd2ug5r + q7GUs1UNZ2UBUi2OAx5XQQ7Y6FlQmpcjmLH/F54OzMdiEo9IVELymXjwbz2DOJ00i6VJrE979RK/ + CQzPGKq+D+sn24zsZm6wg6Zjvzme/t5w8JTk2asxd+Qk4GmvGcD+mD72RH8ayFrP6EWtbmSLwnMH + lEXpsdKuL67glkPd+UzvONJ/hQFaoL7FgZA79v5AdXHKWPjTS4+9Yu4LN+5k/s5bWdq/C90UDeD5 + Y7pMV8uZF6R0OYbudU2gx3v4u9PyJ6Qg7NxJwGSxE5uAD3tzz97hI72FfxwUJMG5zBrPkyKbAhr3 + nqQnE4hhX4n7kcLaokgF9frcXj6l122DepFyNagXnsqg3tf/HVWDev2wHNQ7inzXD6Nh5LNA1dy7 + AJ1BhGFjNK3Ys8tsBQIG7RNQLAjeEY0hwr/JB8W/a/352Xo7vkMSoggQjPtIyoqX2Y9oL0DiYuZf + HPpe6FbAUoojkYqraS+JK5i+B5JoGlQheVARBOUND52A1JReYD2btUJo4AasdrhWxEd8N/mm2ME4 + 9ELOWDmoL++sDSrMhAbz6j+hHCk4qv0SI2KwhHVTEJ8ZiFsRD12RD65XrzzHYseCKPwhr5k1X8xT + KgCVqdefXX665kd4+mt2gtrdx4MKksDxYJIRiBmK19v7dK6xyUiUnoGYgMPB6/YeUaUGpPAvJg9r + lMmm6WCJ6wrHfPDs6vTs8sjBY5wHSfvJE7IgYcBUowWpsJY0ccPBZDH+aq3o95LEGREEWGEsloai + 3e369XHgOSz1KLdbzZG28jbqofRCuTV4sw97TiKr1J6ged/+xqTXbWElkXIVVhKeSljJ9x+TCqok + D4IyquSI+/CvIYdxy8Jn7zPM0B3Npl/zICOBBWGmtryZLdhyCAwIYQQ3+ASkYZmCAJOEPLSYov1l + thiPFT6ShJOcLZJ6I8t3DMOVCI1vtvPbqYnPmPCoKeE9CoCxRGHFS4Dbel2fPh+UsPabqGkOb3yK + HKWxxOZoYdea+CeYklLtw6mb96YZHBbmyUB+wQ8Utn71xTAqlF4WhACz3q4Ueghlwovk96Eun4Z9 + jOBeEU4EiVdJhKcIZvlwv9isHpZrEdhE9pJMrPRdJlBn4LbEYLFjtVXkPgmW4ngVP7A6/Gfy+6bz + o5bP/mnfpz9mcLPd0PfNsEFW/jhW/bjHOTUOHGkm+oJ/BOofSQ7YGSTiofpV1PlVvzK4bh1pt0Jm + Zh7HbsapwGUVEt/gtq+sKRkLCG8qK3FbyyjDR+msDVDmMfprBK7zvCAgW5TSoougeaDH2Yc991Lt + Dxmr+PoCmlv+4VZX9E4SFuahX+7ZUcvDOJkZ0jmItthkXyeRJ+HizFto58pKgSJ2VdF71sFBRK/b + Fr1nVQcRPc1BdKpF7yO3UvQ+ToKIBcMYkSrinUXvmVstev/E8KR7qC3l+nAqHFFQmI67tsMUtMzK + ZsCFyL7Dbzg30o2BNUzhPwhQ2TnQSuVox0yac3y3Q6wLvW5pzhGUK+YcfEq76ezdp2qOdohJMaUc + bcYjP0jcIaJQcwHiBO9fg2ImWXNeokjWcDNiW1ANzIjxgJqwXUkZonjBotAAy6oC10FuSDUU5fv3 + owlc26vFGosrS5wzM7pCZezpjo5J/xyvpsuNqB2yvRdIfAOQH/DNzfReSCfQJzWCzTJbgNiiQHnP + ppsq1l5vBddqfB6GlzDmTccsZrGX+OW0yMIMwx4Dzjh7sJCIgUGUbU7FJG3VlfP3XGgHd7+2gsSM + OWhs9qXtNv9klAW2M6HToiQIQmuaD10LDES827WGaaTiWluPF3Ur2M5GuvrQasKGY65QN70OFxq9 + bou66VUvNHpKLOjz1UkFupt7Hiujbo7QMOSL0uA8luURL3BZ1KFCKztIgun94mGWQ6VIv6gI3jq9 + vEZzcR5VKbeOaPUgsFCenXw6FSblGmznzfeFhARXWMxrtR2xDsY9OYhBsLz7jmKY4CKfV2l9kTyy + PJkG4JL6a8BzMswPL3OR/EP0l9eGYBq4227UGC/n+n7I/Eol8fzjcFEb4xBYEgdhE+mYhQgu9+px + lqseuR0XTHCpVKC+FRFYJ9lgvvi2ML8FuYT+1vXx4AakJTWJ04wQQNbbm//gKQIB9EuWTW7S8Veg + eTe9EbB3mJ/9+dOlg5s6x90MQ2Ff5a4QPv8h+/5H88TuH7DQVydNamDISaYvUDXKMxz+Af2XjQoD + AuOkSnk4ZAuKdSrVXoR21Ken5ZpPN6KAmxAxF9v5k6mVJc50acE7bKOKRXrv7IA9wzM7KqGPVyXK + pdRPW45tNS0HE33cITdmZLsSbE6RG5X4/0GDJizBVtrP9AEeEQraA2IFtJVkrJ/9R+nq8YArcyIH + V44JKGvNCEHbrwTNwYkjBVKeWg6s/zrCMI0ez8OBafVK4PY0sEZ4HnRLh9dtrIE1ZBcmsAY9JAFa + IA18gXXLdDS90wiU8NqrYIOqHjBCKklEhFRnwAurxNO/RtWqjk0b7ZQHYFbY59raspK/JgpGX/gV + sU5I8zoUJqTXbRPSvGphQnoq689fX1SMdAFncTUfLUo4d4cCgtZtN/kuZ0C/ik3Ym33rKRl9gyR0 + 4Re1oEHOgc8wWjTpyIKpkT0Plp2UmDA9VRnTcwlKcnn64WTw7PLi3Rn0GjIWeUdO3TNoIYCMXE6A + zK6bl6WbpPfpLfpjs/HX5WI6r4m/aSsr3hNeQqRBDCinHd5fzG/pJZnV1tZFjnNWICn4lVnd6cBh + euRkXC7QxZdTacJdaJ43BmoGp+HlfkP4M6FQrVIEf+7ib/X80G92SH7+pzWhgEU8rM6b8ASOH8Z1 + yLaWaE4ta/VLcByCiD6zgOGwWH3dNdI90LJ9L6QpFSezMQa5EX/LqnVzBPPBFSj7UCI81/P0MBCc + WuYPSCZNwonE0DhcWOmnt9ZrPsxvhdh74bKOl4JoY38nUBelK0E8pHsA1CoRBzsuwPjreEqQ1Yty + eJd3i72L+yMOnB5iP7E9yfzVERwgCXai2ja+IHDjQH/fgZnCsVAzsfSBsGAJ3Bu4FLYze4T+WELn + 5yapneEitpP2BII2xDRxFhgbKtu/WIfHFBZ+/T6vrmdrZ/YaUs8dt/IfjabP4rcoGobd4PR1K2se + pLsxuZB6LDHEvk8kls/1608sxwv7dHJ5pGRS7sex70dHzunHi8uT62v9lgYMAyIOUiLszVgmUnke + mc8QSirdiEi/+8UkaymNkZufSLrErMwFWeGboXca5aKAQFAUkbfe6He/GymJiBWYn3GgaLRDyqES + rYUi4B0J7CPvxIwsndfZhp3+Vl7mVhJa66J6BO+vWNihRjS9bqVGS8olNZqeSkTuk2o9Ao8lpeJj + PqjRiRfHwdBPfC+R97EktMToVJl8sdiK8NdP7y5YvFRq9WwFr+2C/C+BMJRwV5oS2RmcmIgn/lPW + tH1Gwa2hmyTE/afKHCtcJ0ClQefYJV0cIp1wnriivXqpQEhELXe6/n81UIhbogEbKpt/A+16uQdE + yB6oIw3lDnvGL3kqYkzgCl1tirtmb1skx5RQcddk9y1Bpz/FnCkrI7yHU9UhglW8bhfBSpTLEazi + KfHh83fXfoUPhzhBpQhWHgAf4UMexD6TdWHO3517IFcsRRg3XqqC7Z5P134PQTb9xq8aJVRCDjJS + OevRTNvO64KN0/U4nZgXQ8T9cvHGCnXn9OTkvwfAbQdG5JwGJFOjVp8xxD8uF2sKp77JKmF6VyfX + v41PLi4LY5PRTQ4uoub6fhiQEkklk/Qn4VTBbZkt1pu0SyV38bXy9LbOUIVgc13ZA9EFLYP6K/EO + PWSxJa7MYnsLh4jZC0/0utWhlZRLh5ae0qG9unzP/FflY8ui2Mz89t2Xz5nr84gNmUtKdxEVL/cq + GHWbnoXu9VEVMmA4mGfpavYwwD1PHgzYp1fLGfNPqDJytc4TyNoDGGkNngOxCtH6pilLvAW+QAbT + vt5+halLj0r55H4l+1ulbgdBgoyhxFOuCsY7syaKCWRUYE+gL0XMq4QAWmAMtBVdaRrq/vVWkKKT + Z0LD8sEJ3jxQxepl3xvhVeeNcDxYYcN0MF7fBYPJQgQez7cYsUzcKPshovnWgzy+aT1bfJelwARL + eAL72REn8kQMhw6nzj9LUKf5TSec+XHSTw2sBgrtFR16KlFzIPv+eRgnO7OqeoYzIdT1K1u4aDUl + T6QgTfNsqcuPcmReX4E8b3/10etWV5+kXLr66Km6+j54lRyZOCjVMYzg4oPh+tEQQyYVJF+hWItZ + putqOfcqt1DhbemtwxKEoqY2Ks3tV5AXN/H1MImQR5cuDmHAFggVzaHiLGq8LIpE9WVhU0amJJBj + CZ4dfTiv12tkmOlsKMoInHy6xCEXpqhUrJyH10aZnOlkWMwVFgH7QVxuRdAaZtvjAezGJQhksJOz + USHVejaDU6Cw7FAno4rrKZySNTD69fb2Fv4hkpsHK6wfqjBCCuPCScndsCizw5sObjfNymPuHVSn + aCc38kGGq3EPd6j908ibQP7LK3DQF3djcNY2y/YIJRm03X64hrhLcEc0DrHFGeqDAmsgzXdn5P34 + ZOUwdGaW/Mw9fRIJ16V74rAjpptuY126R3Zhlu6hhxIOYzRLxyIOeZKJWFpQ9so1AGzeKfbGA58H + IVXnCRIKMDHSyQ8O8HcTcbxuZw/jhUgX7bp9+4rjD0mlTueqhOm+Q/J9TiUztDTX54zBQWBiEy9+ + wM0ko3H2KGe0VwTKzy5C0F96gS8wJwZN+39f16tPjp89g7v9hKmVXNAiHhJ+HbKwhdpQ/AvR18l2 + dfp29PEt6mzbJV5ok8V8sVoPBx9OztDvCz8uRU3nsYTw6sYYdbEV5p13LfaUN7JmjaoTkzfKp8Qc + P12dXF4abI6elH2xr7JNOYq70AGyw8RVISFk82qBXK+4Ymqi9mLaQa+vUPI6X8xup4Nv2Rqv3NF9 + hlFxaH08IFZE5Oy6rujE/OQ9aKn19ZUzPvDcFzgfHTzx1MTWDS87MHzw9IzWNc9tppRJfac7xl9U + 8FM51keSR7974sqqOF6QO9N0+463mhfUxGIaFIcYq1UQU7uvRp+d7ajAS8W9dGZ7aWqRwJUZePbu + nar6YMs6Hi+Job/qWj1fbjaBivaYqgeHPXqRW7Pxe4tR3Jf+rjH7xtas7sM+u/vbZ3Mkgbq5OT9h + vLNSo1vZ3t15N8blrR8TlwcBejIFmXmJeG6VDMgiU699s3yf551i9VGQ1wXjh+0pLvT6akQm8OoB + 690byj3FfOCn2gLc2w8yJPgfCbrepY+nXEC1I73HiL/AmYhjVyXGtuzqvT+v36TR2C1shDqKQ2G6 + IxBDkKKFJVu4snQsqFAyOpcFjygImLKCe5sZe6KtbDJU0XrMt48Soddto/WQcjVaD57KQjgfz2ui + 9fxKtN7Ii/zED4ZeFHFPAqdevv0YB4MrAUwkrggdnMf8KszZrw4U6TMSD+ucIcJ67mktxnRkPxZj + YWXIFS6xFVBfFqpZXqYFAx01NxReXIkyLaA00+WMD74t10z5T1WzY8EvshVhI6kxrLfLbPUlhd36 + QO2h5zv8RgHHMpl+y1ZrdQGt79fOyT/fJ3lIoSvrmyVkTV6sN6PuemRtTtPPLVWptUtC8T+/Yl6H + UFh63epwScqlw0VP6XCdnrxhXqXGIQsi83h5ycvnEcJWe8MoxLJTdLxOT6/8wcl6vRjTtL8hmRMp + fj1L5Wk7Tb/Ag8phw7YjeKGu6qCHzuoG3HhMe/SSOHmsM9eiXNKSXoLKU9T6DB+WF0S7xu1cpivt + asrgTG6FRr+CM4FAZ/LU6ulp1Psf9MwVT7Z0HongqHvUEabz6WYq0dfyzEsqozTBiEiyrTq0EzRU + kSehip6IjWBXB9GODrrr7o2g8Y9dFLcdJ84lm3jl9NiPv49AtFiZxcJXrHOGimxjaxhTXRiWMfmQ + mNh2vJS5KdotOjjNKzBUZSBnx3ufb5bMh5fwv6g4AT90DvK+dhEHA7Ow9CQ7GDZDqc4eC00HKLzV + oyN5f8NW55LNEnssX0ZRASZbbw7DOYopeD2fE21tkVPWC95GzD1ZMqESc9HVSEOTPX5Y43plBO3c + A9k+DDWHqyCK57EgofkCzp2veGFQu2MbPCHkFDfMwfas3gxRiRQCeRDYa1j0uqUQKChXhEB8KoXA + j/9PpdQoC0tlrkEEHDGsEcOjIcNCdqGMxL8UEv+3bPBlln4z+Mj9Yr5Y/Hggz6OJ/UoLMcd0u2en + Cxmm8P8clUpFikLH0EB68mRhkTUCDNrUbpby5+L/VAuH7p2HZRSVjjjsq6hS38m0tpR0yaaan8yN + QtePKmG9hZkyIm+Nya2N2oJzkzSV0YArLfYwUqwubGu+KAAalqO0yvORgwQnPIQL0gMB93F3xGwq + wD0XxT2hSkzs3BPQUyqjNpXoRIqoMOvUTTaqyTSctYMnRYvIfhw5NCN+zluqbfcMF9mXalMmRU/m + 2L6iMn519lwDDZs6p3+/XDkhU/mE5NfAVzqOo9+Aj8hNWqgVAz4QrQdoqiAPcbRBjFmslouV1AxX + hQ0LHEPbDQb01SIy5K0KDXmLsSF4+ATFoawGY9D7Iv4OGvm9+Lcg0u0DfR7LovY6HeCQ6L/ADQm5 + 6c3J2V4ySeS6Sr+L4+gFizqpd9TEVruTHRjKHT2TGh1823SG5cXus7KHq+1vBdqowXGf9QRvQhFv + BajjvavkxWS1kF/RA0xKj+AmLiMGSfbVPWvXgCbr50TS5TLF8GnrEDzLxn+F5OHeMFAYrHGQ75qX + Et9q/XB/ONqJOvxMe8bdt/4Lt8vp122sveKyC9MnTg9l6ea7ZSB5wVU2PhmQ98Ap/Hsg0wCu8E1H + vC/i11yXrDaYRIrTQR6KkUShu1ll6VeF74blpApoDrAbYTCNBpe2YlWRVwDNk1TwrioUcsDMhd1y + RsgpkBMpHRx7zGOWj6oe0a6dQEKIt0XouQLC4Hozvd/OOhtDI0Z1QmGipvhhIghhutgIIKXWFWhC + VOPMFw5nucagX6TrnZJdnwFZdmv7E+OvlBHFc0NWtzHJZYYAybkhuf0j6HoIw9I1uGco1pPAsLMD + wu4AqHsgrLYbu3T5mV4Ryef2NKN5LFKsKQcRXqRidDWUdxvVwiTmxZkHxTRbLSbT+2ylyzY3DrXZ + uxC5VIrm/D1LeAe3qHjdziJGlMsWMfFUAu1evK4gU4AMGVacogwLiLlD5vtuwHWK+42YN+F++xCO + Ulg8UcdIYkoVY0tUoUujdhL0zgruq7yUkZjS+UQXWJLPjovlDKfoSgf9hqwqsGjCnXhx8in9Df4z + SGfLuxQ4xHKGNh1Ri1Payd7dZzXYGb3BAF/RPXZnUZgmZlG55hUWoyqWaGXci/0gKduvqBfYg18U + 8mfRHhYGpao0djThSqrUHGe8TElTCXwQXbFO+F9tHzi467V1C2RfoTBJRYA4/Y0w29G/0Qw7LN4A + OCLxq0J4OlRswVkm4Z1WoOfWTYC7P7PwVwwDJUtUfj46YM7tJ0hgSxZRS9Hvs+LuPBq1HFPbSbTL + R3/8iz1mhO3X5ZN2WLYIxYDmjf9j9FFOl56/EUxmtzl87MIY6l4VyUp/vLlymWt/r9LrVveqpFy6 + V+mpLPH26tL0NDHfY3HgcfNijeFiDQM3hIs1BKYtg/k+t7hl19PNVriKJGCRqExUSOKtzQcfwrGe + YfM1TF6WFbyDYi5Ryx/fYQSd4Xik8tbHgwm0FQslUr/XgzvY/SuVGC5BOzChe3GX/cCCScQgyc+w + WfyA0asST+oG/nyzrHqqeoQCMKKRXJ6ACFfvbdrh+jaQAeJGnMIY5EM/rNSQa4prMG/qqMlPpqg6 + T2w7fF+svoooxsVyuVhTDTiE8zVeLkDf69mEsbzdzoKlg4dDXb8scSn+yg+NfHJDttm3CNpTDGKp + RVTtgBvQqt3FBDC74yhZ0Xyy4Sd1BoonHmnSV5R65Oo0TZa8CV64vCNksmxkjZisOjEBk+VTuqz+ + dYaWtizVZ8r57A3W88XVh0t9Kj5vln4VlF0Rx1TNgPk9pmoSK1mJKEiJl99VKgPhOCGDui7qiwzs + +vrzSNDd22jSrRD3T06s3OVLFlxqfY8Ve0kfEmU67FGd7C1LMZMJqiAM17GsOtNfXzBTaqUOxjjx + XCnai/NwSE6oOv8ime+PD+9B2rePoaLXrSRbSbkk2dJTkmwvr88qWSq+iLcsZqmEL0cg78IEDOFH + 7ErB9tMdGdmE85eQjTbp7W0hd+N7utahLwKjsxgzoLJa5jMYzniZh9+0IH4eD87fXI6+bNdSjqAM + EcNkULT1o7AkbJFo7xdYRrcoLlxcXB+Lv7WPHuhOsk02lgLZ3fT2bgb37nYFdxs8Mr5F/n20uVst + trd3y+0GVn47mWZr583Fpa+rdIMQw0WK2YFhLXsGo/SJ2dFbpGRPIYmRS0lfr97D1NgrivS61XGS + lEvHiZ7K43R2VYZaY4kflgyw/svnnEW+Fww5d71QIiX8r+l8PJKlDGtzokHMpyyhxeBysmIKsx3+ + XUVi26NCd8J8HoWVqEB1uxh04OZ5FDq5phdHSexXweLPmnBHwyhqilCE8TAeV7LdbEntHlQ510Uc + AxO3ytQSw0aMfGOsj5PcY9NdzkInq60xPT73k52jdz41zoiqNz9DjymcMjjIoosVSkygSwHFebZB + rXSoPhtOb8FADAROPl2O1MqN0UW92WAl9VenR8VQBSykLpixXmW0bEzXIxl2BcouUKb7Be4pOLqv + 14Nn8EN9P95FwG/Qd7Q+cvBoa1g75jLyJ5JVbZ7d0tXVaypPYwnzv0Byk9gm1EFpL9l+ph8kFEpK + Zom+J7euTMjj9riXIfxR5P4uSaP9VGz7a0CL1Nsi+skqgUWrTkDNRWEzqAOoNRw2pOhXKa4yVaeg + M8XehDpdV4qz4IXrd7KQUBNb+4jswLCO0DMS7m6nGyYziClmAMhh0MB4cK51hme36f19qtDKdIkp + 4aN12ZHT2NBoNzgXXZUbiwEIA0sYhgSJwkLSSEVlAVq9blHtap9HLKbISR1koasVDAfoJBIA6MIz + oCX9dFOoqCB3T3vwBUsSMu1hVYY87z0vjGBDxIO7q7m0KCjc9WpULkLAiGEV9FUVyORUq1v85mFw + O9uOF+se6o72k1lYMBeLnspbbFRj8LCI9bKoGFFT2OyAQP6YaqKVtvIBZfcOzxiO3FgHlXon7AXz + O6ItyUbWYaWqEzOuVD6VUEsPuFZ3MEYMyRBsY7QDcqmtRQV6SQ1BhKJK5KUwoGVN76fzxWFBEk6/ + Jgh5UGYPB0SYuTLCbPmwmk4WPzCNQUPj7HdnJbRrTk+jIHrhxh32jGpit2N0B4X9op7Rbsl+kFX6 + 2dUHnCHJAo6MZVfvqMvnarX0g9LG0D3xwEuYG0rzvqVpvgNUYg/GfqBCmMWHEfHdPGLCwrFoA/SJ + 8St5ACqsfNPy7D+D0IMp3mMa4GP0IlyT1pTbOfWT1IL6BZOEGRO3kfePUfCPEcybdmv0lJ6/bwc7 + dKxDw6F8UUpC7fgDvMwBj+SOO5BUb+5bJtLN/ji78mNu776h163szZJyyd5MT2UK/L9OecV/44bo + 6ywanMOXI4a3OUuG+DPmMgf+tFj+J9UCYqH62mn2hS2Hg6X0zWDtn0LyM1wRI8Ef11izHt4/HtzD + CcWdglvmuKYekL6pTr9/4dqGffp9DL+UTcaCarYwIihM83HMGgOFYgyKdZ8kxNmvnnRHbBtlzORx + QiGznsykPejajD0CJCwOsIMWcGh1YUoYKm6cR6DQGrSzL7haTxoL02lw3hvmvmBeJ4VFtrHVV1QX + hroiH2qMI8lrPr86GUwW9ymGlOh/5jEl8J6DL6PegaHMKGA+BqjQXx/GevcG64Kz+lOloEfHxNlV + jitiXN7ZLOlQPpZet7yzBeXKnY1PZTmu12945coWykbpyo4Dl4fREH4kCVfluKROJnxZQnv+MxMO + tS8CC2y9yZYDhVYrYpDgjtGwJCcq5GKyguFUgURFRS2pM6wwVXQ725YdyHEjrIwPYkeQsHrHb9qE + UxOa5RwbCeZX+CSTYLej08XJ4Ou0EUgG5B3fbQKSMYjra32cT1VTvUjcwo3wNECSY82xvKI4D12K + hcMvNVS/xprXB6CH1DeNxZmrX10LxaWnnMn90wvV2fVVuFSQdAqXgtdtw6WQcjVcCp7S2T25flc5 + u74wH5XDpbzYj+Kh5yWeH6kEO3V29UlYqoqeNanZa1WDTRVgg2PdYKEumOW2y036VUFInaynvHLI + azEBjPAEl7Om/c38wI/8+LGk6h7K7xXrSqvROu/UNxNKTYUj6aIwmM4G078mBBaYP0Z1TeFf3hJn + DLMWVorjTrKZjIS/vrwWxfUWqsizcGbcPAxQyFFiPTaaYA4WfJX0rKHvA28opIF7wMiEoxyA9GZN + d/kXinKj0AXsY+3gdswjy9zDSu3tBAuQXCwqcrE9AISeBrhFX+A1ijfldRmCV/ELl3fzE1AbazeB + 7ML0EtBD4jUFCXB5l86du+l6I+CAMlnLODfWabPv9WRdraykukIwmjCRcKIeVWIb38FnoQ8Q9uMM + ejvU9Pv0o1rQTR6bn25ktnQlRha7yuIcoNq4EUHp5APs2RTbnqsfJmJ6rpYT77fT2Sqsflth4737 + 7d0/dsgf6nRRZOfZezeJOkjt4nU7qZ0ol6V28VQX0a2ATbrMDStSO4/RQzLkcRgmgQKA0Vk7lypr + 54OuAztUEC4C1gu9c7NpOjfQbvURTX5b+v6L4EVehPdRM+9+ahHe2pLwUrJoIB2wxMwULOSzcz8O + mVcObXyyBX7NFHpx8SvsHRRAiml3VQLHhfq/ajM9u07Ulx3R6osqCCBdjLdwasTWQV2KskGxaq/O + 4uM8CB6paq9jYzVoNzA+fjlczy8a4mT1ayCPmEEgccy3liksh6eciB0u7JFtR6JCrhyIotgoFW44 + vXK9Dpi99LoVG5WUS2yUnko2enXpmxHyILbGXpSUGGnwcsQSBhtlyBLPRWuiYKS6YD2aly8LNmpi + h6ul3xIK3+IJNWz2LGoMknd9NEk22zgs6YdW9HOGuMOnV6LexG0ZOoZ8Vs5s9gJkJdN7XMoCakfB + A2BGk4cd6RsO9DJv9V0DgKXowVFzgYgklUowpQCB48G46FURJSrkUnij/+/t5jgwHIcGhC7uGnS3 + 4E8uf5LWdzZd43YyOHP2BaS9qQAFNlIJgxfx9XDA4mvRksOc4hAdsd912HjoUdg4p1Iw+A1fgKsI + 86aFTtYUEA4zZfhGFzNZJGd6fy/j3lGdo+rGohI87qgM0/pp4DSdog9oNAaZjXiReFzYE89UwuQw + bzYcvJcPa9z+zSHsf9k4j8YIWpfiXVdXdsh3tZnj+4aH1Nn9DooEaSD4M4M+drQO8tYdix+5ecNa + 8L89ayb1WmpJcnJ8/f8GdDxqpKc+v31FhYiQ0T8u3zPu2QtZ9LqVkCUpl4QseiqFrA9/VIJCAuaZ + hRH8GJN6I2B/mNQrMl+EiPXhZJ0Vq6DhXfrpGT9SqKXwCJW+4mZUQDBX84dqEEf2o1h+2zQHNwtC + CPQfxJWqAuWeGzTOoGTBbiKc+33U+O7RYKYT+A3BKimJKgVdUxF19po9B9dLyQih64tycdid4Bww + stKorK4SnFw6XsXpB03J3m/UiUIjG3tKHIdQCHABeuBeTNGy5Mu1pvC+is14MQXvGGP5xPflYYmu + Hx/zF8zthksi21hXkJddmCXk6SHxpLPXJ2fw/98ObhY/BncZiFXYFrNAc3sE5qapPyGkMgtvqsXk + ZU9UTV4as3lcAApE9yZctSABy/SnWsxhy1Bf5u0gLBPS/D4QNn5mTqBu1j0Itj/83ZyQwm38VVC+ + vkepMnr77S3G/CL83Z9dnjfiFDn78YqxDp58et1KRpKUSzISPZUy0ruPVeCTMCmV541ejgI/jhI+ + DAJXAOkiP9LWXrREPACr3RxjntTDuuCqF/c2ZssJ7/KtdOpqw/10UZWU9sBs8GMv4F5ZSlJycGts + TGhC35oQDhGPIl6Ska5BwEBy6KWYbgTceeEjzajXuAUeoo52QXsH8ty9FlGuQpU26qv6iWs1Fw3I + CdmP6UaKTPAFFXRcN2mWR+Wwc0s/nJoV5lPJSTaKmdauvTAMmR8qLPnFjwW9ZKFMNCxWNiTYqtrL + H/rCNI9TjGeufVHs1HqfaoM0QGM9glWobhShH+Zgd1jtKo9pkeFeq0bPaHtiK2waLUg3TMsOAmRd + U1uma2uyUe3aiDaT1APYmKQE2qDL9KxMpt+m625S/X4htL/CiNKTxIH8srg/y7zV6ks6E9k1JMO7 + RAzpt83dKqNUz8PIHyyOsFBusoPG0SOSMGcabzFyva5gArKNNdqi7MIEW6SHJILcz+4knMDFdvNe + VYgp/Fuv7AW+WdRmsKlIxUz8RKkxB5ZK4eRovJ+u4SIY3xWo2BR9aWzcZQi9Vmv5VfAqXXUiK/3j + 59Xw8Nwk9oprCY26q0bqwHF94MLY65YJrdtYHzjZhXng6KEE8Ljb+Aq/4wciOBQLW0mwDTfysMIZ + InVUXjnH9uX3kKg4ihFze6nVFoeEpztOVzcL1LTQbbd3tbaIpB8sjygnvVL87WcDbvRY7y2ISSEt + xoLWIFbsxiV5EjGpPRZccwMvoES27W26eikUdizwaFNxrX1DMdpQxeNRXcIS/Z3zz3mcyOHewH6C + P+Yg0nZddGBKlEbw+orx2B4mkl63Mj5IyiXjAz0lRvT+9DKoBBMm6O4rxsBEL5/76FgIhj4LfVW3 + +u3DckHFdGGbfbx6o3J6shXQ//6IlXB+feasTqpxEw94bV8pk5xgeD++d5n3r9Ere3uUbGBnkVLU + yzYp+Vzmc1/8buaXeJ7vAY+Ly2ap5yBau340hB/ck1gf70Qku8CmvXkYXJ+cv1Z7YzGDTr6Pbv5H + 7A4ex4zBL2p1QxWZz8LX8Qu3W0KsbGMbma+6MCLz5UMpg8xTKfQTjBTaObJRDjjzYUSB0gVtx+nw + JlAXyD2eJ5F7XKos+PnscqQaFMhZFue2Fj97gTV+dMQsATflkZRVnIywfXb3rkLgUkp8nyR9Ynvp + +IkV6+EUYvr2CgQie8s+vW7FRyXlEhelpypS/5pHrypl8ARseZGJugiKEcWhN2R+HIZMl8HTobpG + PCHh5D/z3esjZX/LI/OPB/MsXSFQg84mAgnwarnm0QnFElZBGUDKGcBIC8TUJaaC+6F1DcumHQ6T + TyOqjGVHhH9j3ZskCBJkz83B+GMQ+TfTzVbOirZCGujJkdcY7V/soFJYpynf1g0xwr5E0XkCy+TQ + RtOlb9zQI8s8jws2WuxcDEmtjhHWL9IDs7mAPa6cs5Zwz59ssG+rHOxHZlCFDD7FEIRvaLYRCVg/ + JaYU9olmYjWuggpa4c4Wu+4pAn+GSSnEx3TU0g4GYCDGrY9ip+ach1x3385TbC7h3ip2OJKPCIVw + N/uxEhAOobejxlAfAMF9weXyOC8pdBq9cJOuJYWokX1JIdlJqaQQPZUQMN8yebfWB16RQS12wyBh + 4ZFjvPQZ25Ze2H6bZCKEx/ODvmzf3WOA9jWmW/Kyxyhc7nsBIWYXK5fMWqetP0Tb/WqV/LTQv90+ + jh6jB/uLo0m0bpsE/AWGtHXRbamNtW4ruzB1W3pIJ32VTuRJL0ZDFPYXneQIFVTOjpzxXTb+ulxM + Mftllt4v9TWhro0rIOggVaHTBkHskIRFwV+S8ExlXxfI2ctSbu59kYdrHzI2LOiQtj/Rb6YucwZH + Vos3o+t9Z+iv4IbT8ktMsRqN+3Inv/JCCsuhidrHc1ZgN3/HNAs3jgNPjmeSLX48GAHL7969+9Us + 1XOVABUx7wW69DqIT9TEVniSHRiiEz0jdgrnlkmj/6d3F9yTespiXMi6chr/okX3T0jGEcQEjAcL + eB9+ShYAjyhuhz3peEipSGcqPFQyFM6QVECWwgmtkLc1T/bkeJTUwsB1axRAYzoOcm4y35XnLdNf + WFjoEXCdxZgKKMg5u1+Qdrt39MAhKGNWTXdow75XlU93QQztIBmUh9XDRjqgzgELfNrul6PLEbC+ + yYg4FnDM9QhG9y2b79pCrZ5P29qTnoqFunzFX/GOoRmqjSWn010UWZ16WA9YhLp5tkIJ8st2flsw + uhXJITfzEJTo6ZZS6jFWSC0cl/mFbtTBwk6vW+YXCsqV/EJ8ShfT51eXrAKGA/JKWEkw9DmqnUP4 + ESgMhyb/9XIGHVQxKbsHxftByN0kOLiQoUHnSXo63SBJ+BPe/L0G86rt7yn5LPGjFyzoZt+SbWwl + NNWFIaLJh7SbP5ycvR1MMhVfU66oUv2zQRetWByd1SiOuRQBI5EapFUfaI23K8QVVC5VLFqIrgN8 + 7barCB8yJjQcMa7Fj+lkX6wxLVExqp2U0wIa2y4FqPasZPvr5Q6rLEAvoci5mn3SQ82HmNFhqtuF + BNo0B+Z3tLdO5dOWxMVd0Lrurz4GbhgKwefNydl+tm2PArcurjiL7AO36HWrm09SLt189JRuvvPP + J5WsMS+OSlljwcvnEYJlJMMIMfGkDnd+cTlQZZeG8HUDCTUsQEcVlvOanJgZyD8TjeaMjwz3KDAG + pCZmDJZ4jcELwT8K0QvP3l1cHh2XsBShIcwo6oX/wWOEvs08KQXrmm1TkTZws92IdyXYrAANo0Ks + wok238IUomF0DdP3TS6xuMPPt2lNVltfIUbF+Rs8u51tNxQRI+XnP2E/HdXnunkJL6fuDwuotjFj + HESx0v2M3Smea0offuh6zRV1XQ8UY/5v52+83A4eAyWD+LFH5SMYQfpgfXSgaiTc2MQY7bi3yEyL + 09AHOYkhpzfR3gFLimICwjw2OXxwYnepb60d1g50vaeQLdVXgTdxdNVk2B/+X9JHk32/hzyqmAz8 + s+ntAYZNinJ9dcWjDmHP9LrV7Skpl25Pekq359nlK690e7IkCkxcGs+H2zN0ecCH8CMOJHr6p7vp + ajKCe0RAohfgNM8qVX+flR5ly/V0tpgfDXMkN5FlS8jcBo63gM2VoQ9F15KA4JytFwICbjq/y0AK + SyUq9yabLajUpoZBPiY0sRQGORGvLbP0K4jtG8Hbz9lv14ObBf5tpQE9i+mp4jI9W95UsQzlp5Q/ + uq44UhzypgRv7rshD+OKhlz8YvjQryVVubGMfBL5AfCtClhP/WDrr+i4saq8QT1H7KkBn8b5pcXI + SpiFfiNMrB9G6OoqUZ+lt7cCaB2vVNC14DNuaV4MujzqNuhZlk6syFYC3lrJlsMMTGJJE6Qvc92I + e5WAvJYoCJNwnOwYpfM/59A6yNt0eoIfcwpMIY2n7KjuKKxwigxq3jytMkGBjFBym7e2JRmbWJmD + UkYtGnt+CYa9ngnsvKP7KDkWEPBSmXdafUgsYwh38PV2w7DbB4iNJzPpBHSMoC7d13Wc+3FJW2Tr + HR6vnpOKzP18UEC9krVCmWIGsuXp6KRDkhk1sEwzk9QriWb0nGSut/88rxaILCcUedHLEecJD/kQ + fviYrtCeagY9jEfp/4h0IrgjeZinE3mRLEXAwsBejKbXLUsRCMqVUgT4VCaJnZ161VoErlepRfAc + VHKesCH8iMO6kp94h52eXvkjWFfFbIaD73dT4McYCX+/nW2m8FCgGq3RNqFMCMBfxG05y75lM/zL + eLYVXKel9Ia4kCcgCaQ309n0T0VjjVaGCVxu2VwivBwPYCpUDXjdWqKlyYKhk7FXLX1Q+JZVrVTs + oQO2GXA6cUH5rojFe+AyxXHi+lUBu6MLKoITWVNtqSc0cGOQTWjdQ3NlCqhiRjc8jkvfMHx3/m5o + YGTWdtdQ0aq08shvLxczlBOXKOuhC9z8TN4kMRtzmCedwM3z7ORoALLkbLC+Q6f6vIx07pYE3MYF + bgCbagTHivwGZYQzxny/XLLioJkJPVNra9zvhe7yKEKQk5Ao1m9Bq94thsz/ZyvFRQGersNevmzX + ZT0GPjTZ8aXOX50dOYIZ68IZHifwVkZinf3uvqooRHo5rQRJPIFajElXI9XFDYgr9cjmzSd7ko1T + S0Ajt6gN1HXbdNDsqEvwisO2pLWh7q9QgUoc6B0d2Owo+4DN0CNgNqRXUBY799GImx8QvJoKetpV + 4beBjh/4arM0T0w3hyWLeA10WxuO3FMJfv65oRkDFcjpUnxwvRRmtelEzkdM5eXyqkNqa+y0fzeb + 4A+PXMbstrjKHnTtoX1VxVipikEnNBJ83VZNDOrQSPAp6ROXrz8xFlXxSFy3gkfCIxaF4ZBHoEMm + ZsK0USVFJ7nigXnAqIoVZtaNKU5krWzcl9kGeq6I8a1xGKYM3pjNjCAQLHF7UiybCOfm6LqPLKAz + GupvUKp5nMtFsRczD/QKZ69ZdWgltRkyDtEz63kh0wCW+bTipTpdUdUs2HKFJM13/8x7smNxf43w + nRa/qTqMeT7VG8ZfwEnrlE9FbazzqWQXZj4VPZQRI5fvRul8jEMVTCe9p32lFqoYabac3o6undvl + FNZf5FfFVHY6DFxxiQGtgaR1uI+ahZzEnHSzScd391J+L/SBkppCM9grcOqAqtX5vuhEYscei5Nm + Wvujhv1i0DElPPEoDOQuad1x+62ll1AJiCbqh0ez+zprh4sDFHULC1WNbONCdSdGYKh6KpMhl7NY + leMN3esamI/3sdP4h9XyqxdRlnMY0kG2ASuwr7b766EPHh3mJ290KEhCUOgT3hEOTRuQBNvl6Bk5 + 4dCCK4dgJVjvwMcCZGBJTOLAqnUCrFN97Mi1ifi+SLX54/crN2T2Ij69biXiS8olEZ+eEjP6/dMV + Lwv4PGGlilDey+cBCGQsGQZBHCTSY3ABJ+nGBLg3SwLJbColMx4br34Yzabzr/Dv29nDGOSOkiL9 + HeFG7nHK5IZXtaR+36x4RTE4X8xup4N0uUxBcC3b0aOkyY4eY5wRr1TVFN2uG/x9psnWayo7YJDW + 2kDDR5uoRnHUpATU0qyfrmbYJBejUNs7gB1XnYHaxVO9Gd9TrnP1+9Vr/tvFh0+sdmYlvDXuRA2Z + FIWJI4cqOOyOT2yVV5thgag6S01hAXN1Otrh/DhqINuw+laqlMtIH6KdvnfSI5WBKR8XS6nZsvET + F23lxqJRtJ10q1nxPQqwEEs6my7RhzFKZ8u7dNSN+GPj8OWkyE5cR2qonwoLutqmg9vVYru0XWl1 + uXGlMgdvmfuC8S6Sd97IVmnWnRhas3oqgTXTGfpmavnPIHbKIJgmgqbRCSaYRlwq0ocfeEvFd0/j + 7c8484+dIN3z+Y+9SMJktix5P4WxftJp89Rp496Z19VAJdvYnjXVhXHU5EM6afiJc9j8X7M8P/tf + 7367/vBGOFevrk8raBQnWGXbSeG/4nT5idRuPa8U0bfK7hcY43lQOYS/gkuPoXui2oGJf76Xb6+C + eIhdUQGaxXpa45juoU/63CbofxwAVUWs94w//gDCICxtNNhm2GV3G8hT9Ov1DooEE0YZvupgW8Wk + 5o1J+C5ygtaGnTDdH6l8keK1vua17nnc0aaYN7LmtqoTk93KpzJ4bxRjluAK1m6KlpFVOd+89oXX + q1tuvJXBA8F9FXxAGNL9L5qKSpqHp9iFhKUFfS3kiHrGGt+7hx3VVwgViWT8PlwljKIIDh/ir3GL + dAAP+r/uFhudlPuCidce1R4wAfakvyMBkW7tvQkplko5iO+vfK9D8DS9bmUJlZRLllB6SpbQT9cl + S6gXeZgMZ8Y6+P7L5wxFv8gf4s8kkcCWn76DfPcwIJhqmIXx9l6JL2S3/LSusVv+bUFs9q3bWogL + 5pgN4Cd5yIMI4kvhDtzIQquqpK4mnffq4HLqTHSfR+KE/XR89OaIQsqJL4262+nrVvUTd332HX7D + TbMlQjCHKfwHIcaeruTad+XPPioD+ZTH8+EK5AJ7fkWvW/ErSbnEr+ipLBV1VVOn2vPMUlF++PJ5 + 6CPYzDD0uafyd96DMrW5QyfiHQZM02WAJUMMO8Wz96cnn44GVxlBPnxcfZGs7P2qpkh1/Y1ssrW4 + KSiLsShgsVeJypIVfoXM9XIyxSGimUSPd5eHxoe7uZGVupEfxUE5Vp/kuzXoxohoW6AFQnEpRQST + GQoMq54eLLIx7Ca/DEt8r5yXXUveOSl9eAk4pDRNYnm1Hns8wAhpVKizbxnKCaVZXEtqizmM+2a7 + EaHV8E8ih7gPevDHA2IjoKvfgbo9WwhWf7e9T+eDWdMGK1pUcQdrwDKeMFI4SBOlVTgQfENMKVl5 + GtagVdau01txDwihHaUuMbN0w9F4d2uwu0Thv0pBQjhYZPSWUDOYHolrjbAYcrk/jvopQvQEaxqp + Cxi5Sz4LHdmUzX7ruYdWEZzyFz9edYKPpNftCt1d1cFH0lMJovXHZfVKC/2gXONu5AeJH7OhDyp0 + FLWnpC5WteiRdVHD4mgZHDiHgkq4FyRuBcmiFnrVuPN46c5oIFm4LhQesBEUELNdI3PeTm/vRumX + L9M5DgLWeIG5EvfIs4WAaJR3zVbHBIGgnyDnnxLmkRC0Z4vvA0XteLCGvQD7QCubBfVSvP3pbhpR + oST8Fyo68EXLxToT6AylKJFg9GW2XcAXo7kRO8S6VFOaPefD1af8VgiSqBdE6piSoOQXttFprmjE + goRwrSkO60bAd9G/cW6HRXAknAjxqwA4glXaFwPb5wQftWM5rb7DeSq3Bws4AVjnM9lfMdfCzEUW + M9faQc0kKm4Z5/62U8ZeIFZnJ4cbNbL3uMlOSi43ekrcc/xVFZBco1iSbe5W2UIAuSlN5+tUAI3S + n39r+vvgFAg5SI1MwZE0BfvkH6lxc8vLaVXn364rrrUXod1yQsRCEq4wc3M2Xcvw85VRTE3Fly0X + 2jpmp7NjZJQQTT99vAL2dwt6M8p+y3Rz9z3dAU9xSHUcNz8otbU6+ouGTQIjHkrtht950UOzuyY4 + k2wS5umUdfIKYVOumnJ7v1Bv6HR+SIg6pSnYt8JGSOhsilrl3O0kb23bPbyrw11m9v6Aw3HvPFds + sYO+qsfipr5OD+I86u4QpDbWd4HswrwK6CHdBMv0Rt4Eaj8oNQ0/UScmPqjYC8futcEl0HWQuLgY + ApZQ1aXEzYM07xGmv9kI2WQPBdZNarXgq7Qi3dCiFaVEgmJRdYCR6CQPH20zkDbxfVBBasI8kLXC + 9rMjRUyKCk7UzbXojp90jOnfi9uL6KfQZbuGcmj6aiATb05Pme93TbzJG9kdikInhVORP6XDoPOG + VcifCk3Sf/hNFFmcUYCxiA0kpIC8xkShJx54cRQwJRwZ/NcIHdnTT75v8S772LSEG4bw9fZ+sX+I + ojouXkBOCZ0FUPwAaFk/E5WwnKfrj+j5LHJPCK3LbLk5OOlNW8w4fYXazha0eyplapuXF7D/vVaw + syyxtzfR67aws0i5CjsLT2V++x+n5eQXlojgERN2dhSG3A/CYRh6Arixzd50swL6NdVK/o4AaK4v + Esp+G+hf/UOsNU/EPqF2KNeZo8mJ98INuyWOUhvrvFHZhZk2Sg9pv/3rDJEks3SjL6PT83cjP1bp + M0UqmB0a8ETGz/50T7NdNPshbNr3uGfctx2TIdUSi6DpP07fu9y39+LS61YsSFIusSB6KvPvTk99 + gwUx1wMmgMg3RR6EhSMSFrJhDIK+b+JrSCVI5lrdbCeDeTb+ahhcqZbAcjMt1kIdDnSduDUZceUr + KuFuWAf9vx5cf8/YEu06JWvNEGGcvq+LSy79gg/CBqwGRuNdD86nc59Mxm/XM6Ao0/vGY7/CPXVb + g8UlXtkdq23iINmEPq94kxvU+iJVNAE0Wdpj5rlJGRYt/YGhKDDCSRknLmKmO8FAWA4DOFPlVD78 + ztvV4jushUmImU5sE0HP+NpiBM4u85qZdhjGnb67sp9KwHulxbEZsiQpfKoaaMSgismJu6k6f7Oj + 4SCX0JcucnY5w0JlrqyDjRlbSXY4owUq5tR3IfR4Vl2X4Lva4LV2mIUJ5UYdUUGocNK6fGXsEXB3 + DfLX+i5ddhxawKQdSxCYTL9N63HpmkOZEtoDWtfSO8nS4mvd/PErgzw12+vjVzz++9lBAyrE9ea9 + yzoIVPS6lUAlKZcEKnoqYa2vL5mp1DHfY7EAOypKVDHG8UY8cIfwI4gSVZ5+sh2T1+oOZW1g2+Ov + wwEIITAMUXh4LSMnV8jkhQt4koHoqVgBpRKKuk6TQQoMR/1BRG6sB8++pBuYVeSL6yMp8rxdL9lf + IDQ4n5CcyddW7Igai19ECIofVSp2IPdLJxhUVhJKIhY0iXiMxaDteeUaFXcPy2y1WN8vNiKySlqe + DEEnaSyiUT+8ov1qgtrTuCo9JTw0EW1fG4XEGOrEQVDGhitSFrNrkPTdpvocu8cpqy5+y5TFrTQD + TQU6FGXnEndemuvOWFl6Nv0zyxEfRJyg+GW8WesX1/K2gbUcq4jDhkNVHiM8gXVT/y6fMzqDQ3XA + 8lMHzWYZ1jqjqh7jxd1idmxWKkMZ7+3Hc0o9Tdejy6+p8tuuHcEwNPBEHFPNsiRwy8bXRtvlDiuu + uNXq9+VvVjUtkqgCdltZXytKeJy0uKEPnJWogLuxPAixmK0dH+L33issPJaQHqXdu9MK20dMeEA5 + LL+/Bw2+A5qPeN0OzYcol9F8xFO6/K7OP1UC6HjMvAqajwfqpx8PvTCOlEHTSKylgjm4s9ABhAcL + OX2aw+xf3W6qIeBWF81pocpQHCVeBX2nWKrEuFfCqLG4YgOpamZwbeWAhmvMbbonmroziSPIrZ7C + +h5YE5aoVQ8ielstS10PmNPcGHFv9KAvEcVe6wtcuiH8v10EnXOiMZK8ArlU7bSLGyRXngs+oEJ8 + uhpQMWDr2dv//nQk1DSJ9Z7zJPn6sdhBa4k2KXLB12ofrwc3C0wkggdt8wkv6/Vz8GDpOyLgFKru + EoBmecosSzJq9v5XQCII/ZhCH21w621YtY+hvdUhq7mc3jf4DTr7CavxZ/tZnq2LKdXdSz1UYaqn + sHt7ARur2V5lxtdxMBFFfHRlr5YDJlgBC2ZqRa8XVd3eAdp+jAKKUCyVm6gycZsvQ2o1M1U/TxYH + MiZJVfiM9/hGJQVRZtx/vXdj396tS69bSUGSckkKoqckBb3+74+4WiUxSOB0FcUg/nLEIz+K4iGH + gbNYIikoiZP4uNgywJiUb1Q7XcXlpXaKNBJfjmfRcmjYO8nIDKuwWhwXMldPJ2MeLzGwCuR3VF6k + 9/g/M/iMGu/xYbaAXH5A+2nhDBipuF4l/SxPxXUTEBTLuvYBLmRloC8mCShJQKhrmCBF6QGiynVZ + oFd2+OPyEojii/SRYjXEPZ4H/shCAVfrZYApCuZCSU2Rmo9Oz37PS80IWqPLu0WM7UQBk+m6aJLW + +uZQVIfEyYXuLkh3dU7e/6FVTA8WxtkDz+tgNWWggmwlbG0+K6UyCnspP5EO9wpPMCg96BjvpVpZ + B3zpbsyIL/VYRcJrVzSsxNwp/25SwoiuJIwd5ymEMXUKJFKroLMSWITwMB1h6qmNNUy97MKEqaeH + xIjXd7cyDvX69ac8FPzZp5PLo8Gzy4t3Z8Ba/Dj2/ejIOV0vYXOXIvOQgoN1CgK3IxxYTd7BoyCJ + wS0cCdH4brreLKhg/F03ZM8oDsxxHSi/PkJUnIQB0gV1OwOP7pGQACoHZW1dZxt2+tvpx4vLk+tr + y6wAdSBEYPYf51ecdcAVodetpBFJuSSN0FNpk7m+4JUaKrBrSsXNk5fPE84ZSCMJBgZIo8yFWZmj + AggvPdtwN84KaONkoVnf810VVKhdFa/clDJMG4Jhg+cRyAVJWcqwQO427SCNgRxmD5XYhkaMY0Sx + 30XS2WdyHbGc+i4HzoWXBQ/qCo00QejnR/pJ1EgJa4betDE6KU2Hwev3DH2/P6Z8i9QTujKGlcWR + PXuh1y1jWAXlSgwrPpUxrKdva2JYQ78cw/o8dHmQsCH6zDDiuD2GFeh/r/COb+l4i4g7zzBddzt4 + s53fTo9MUd/jvwpw6BBlRMFYtOh7x0XZDpgN7A7h00In6OB2vGJws2L6i7jfjwfnby5HZu6A9qAJ + oyTyFTmdx3WYlKi11O27NZzE29tsvRE4SNDmRha9FHbQanCmc36WGy5dL6FsBVfa3oo5MmpxbRjP + U4jS7clpEzKtt8DxeMHcbloLtbHWWWQXpsZCD2Xm1u1SZW7pmH0pEl9w7lTi+S/hfQcboe6SuJEu + 7ZTHYi0EvFOXaf01F5JAFWEEyyzgUQ5NWvA5zw1as0VPNAkml8KJ6OTYEm4LK+uQBPKzEjX6Nn1G + hJJ+9zABfrV/iFHICXnrPY+7IG+J1+2Qt4hyGXlLPJVl1k/e+BX7og+btwK9lYAUw4YJ87ms94QV + MAcnKrZ0MnhDFnIg9/UsVRXM0y++21bBvLZ4uXnvFoo5s8jzkrgio/d17z5aEWo1buf1t8VsS7Eg + yAdRbstWGL2rhNKGAtFGmK8AtFrMZrogNOKaTGVwbqF6LZV+hktpIoNXyI+IVeWTpSNWPoes8rjz + F3Hg/bzqwAfndvRRbVb0XtkP9uP3yfCwL750D2IJZab81xXzO1SGotftvChEuexFEU9lIOW7K6/i + RBGJw6YT5XmYBDEHxSIJ47CUmmIUKRXW8m9TUVQdub70eKygy6qu8eTy5e5L+VMmG0sa2ZgfJi7o + XYWsOZDTuOP0JsBSyO35e+4nHSxc4nU7CxdRLlu4xFPaKf/r3WWlhhgTtruSgcvz3CQeegFn8jq8 + Ku6PfwCdpQDU+8dguwSxbSqC5XKb41pXds/NkOuHeboU8q3YTv9ruqxG0op30DZ7L9T+yvXpulHS + mEkUJC6L+qoWXNlVtUODybivhphGzGuCylWDdC5gzmAyRrpagtpZxatwjuRnu7oWGmg6FfN9k22+ + Z9lc5awsgKXXrMo9de7gdtB7nbMYd/rhSRwuoScUlx6u6ex2P6AgQl6XI+7eWgwl33odJH1cRd24 + PPvdiivjrm0k9ZSdAr2mjRweWtMLFw6UGSGIws7OT9nG1oygujDMCPIhceSv69t+oMB+B0IOUhP2 + hQBLiIudR0jyIFT/ZytPoPC+a2eptH3t3MdaPH3E7LFIMx4BAbNY3abz6Z+WDrr83NoB1FTcdR5W + iMNX0vV4gQGMWYHJWp3zPeIE/mcmZQF58dXeSO4Z2EMIKznJCmqT9Zd0gLP6v7lgdYaaULPEwO3O + EqmNNUuUXZgskR4SIxTmqy8wraDIquiCOjQDtYrFsjjFHgQfDD2ysybMy4/ZuBA51gJ9YbuvfM4j + qi+svXBUXlqZPXqAYOihWPcvqDz1qIW3ZZxvzj4Vgut+DLQf62lfwZlhpPyVUdjJXwmv2/orkXLV + XwlPZXDm6YVXzlFhSRh4FYdlEKNsNwxiP0QGi4f49wx2GVyQCwwTFJbkHw8Ub1PgV0PT7CDe38CF + mi9kHjQwRBnmW4box3y0+LGYrhff0lkmQjJFuieHq0N0pLslRfP1+N6rJsCYfo9SrGbS0TPqjejT + RmJkNygZtH53Q5JJHPoltdHITGQs8EGQLwdYqEnDDhsrFgSJ31i9RdF1nsCaOWLT5W5QkeMnRi/u + 7dpv3b+u1wF0G8S/ru44wcNiEiioLsRGTOR+wf4xRZnvvx1/eX9NQn0/qQGMVJe+JqBPESwHqeZv + GX/hdhLCCq3soUlVNyVwUvmYuPgXUIWmIkR7skBo5lzm8o6c1j+afSAIacxjaUuNSFpqjGPYIcaQ + ZkKtYR7sUkf3aN4OXppQ/ioBimxXX0As67p7fn1ohtp9iarpFridarrB67Y13ZBytaYbPJU+jIvz + imXa82OvpqSbB0KlN4Sfgc6I/UiVcjbfF1jf7s8HtHXC70B0dLo4oRCgTV6Ahy4l/WcxcXAxLZD/ + DwfpAC+o0QwEzQ3ymPUmW6I1tlz9URTWWQAl2PfKwEAJ9OvcPogZEaA7A0PDJXp9lS9RulqlD5Tq + uL5D/UPIsOlqlOZOZ/3yepOOvyrT+dv726rpfEeZxVJ1pyZUgTjy/UShHzQGo96nYq1NmkGFZm3S + cfHIlbKPA5tBFVAuitfL7WyLe25WWu9nH07OLt8eNQCI+VXUL1O4qqtLWglgDZNKoq3zP2RDOnhs + 89p9Pn+8SrQy8D6vUdVHoVieCIENlmi5Aomjn8H2Xn42SDy6axbZHLfS4OTgclv9VbSVFEFAI1++ + xLsQ6Y3dcMFlPEJebgRYRQYHA6PopJS1K4H0iZev7UD0L1NdzKdR7MWMO47YT5jaYYuc6r7UQha2 + UBuKf2HFOAIePH07+vgWcei2S2Shk8V8sQL9Fr4I7VP4YQKmYDzOluRR6HJ2gL+JLxNk9jI7IQlu + 8Ii9rE6Rq5B0vTDoiASv29gi6aouDCRd+bA+J/DTyacTHL84Bvdwx8mqBzJ7XdU2NA3CeUcItpt4 + Ega+hzAu+zLnHtVr6RzS1RLRZWc3/rk1W/P2JAGcL2a300G6XKYgwHT3WncFaD8A7GDPhfUixrUB + oICAcHgP6kAydSBZeBq+cHm3E6ka2R5J3YlxJtVT0tS+LdfMc7lC4cujVUznhAYf0/6V4rEEQW6F + f5VH1pFExRFlXuz0UEoO2pOKvmtcRarVHE4YhOEJlckhe3i4WeB6RjGPPT8MlGYq5b7UsXsCrEBI + +7vPnLVXK5C5JyLTHyUW4YADMUEZbg5xnRF3Inucpr3/QTyM4yg7SEQR6+/fu4x3sIOI1+3sIES5 + bAcRT2WS2Oc3lVhOz2VR1Q7Cg8DzhoxHAvC9LUlsNgP61cBN0k9gpqDBrKSMx4z99bLDruGifJBl + lPPshaGqo4zBC5mI+BpIBXk9ePZHdseWwwH84PDj0+2MLY8UgIBI2foitl4d4Zy9o8pc5IRSqwLm + li1Abhd6eQ7LCCeoNPUaktH54/VblkefekH/hZZD1+c5NfQ5HKhHBgU90mJwtY6TmLF8THpa7GQV + y7atn8EDInIPYv0sfchWo/V2BbI+CH6TUpnxm8Wks6rxMzW1hiTAXnS9iPAT5GKL49C5TvIeVH5K + tlLkSRs4HDx7NCR63dIGLihXbOD4lHj/h4+nNbzfY2XeP2JBGAf+kAVwYyU7eP8K6FdhinoCGn6c + 1CQMEF1ly1kdfG/Io3K1gkIeUhxFkQ8XQZ5u9NkbYUJROp2jMpy418CZMh1NJAeA/6xLRSrYUYEU + i6+pNotAJyzYUxtS8MkWW0gZhp/jLZZm3ircL8kMgcb9+J65x8XUZMxdxhyMWeacXlwXboXEc7rW + ecH9ln2H3/ArtxKvdwYfkqqUUxXHVKSp0QV2xDGVUBJ+OuiJB6K+kPTLy9uuMaqD78uDz/2oy8HH + 1y0PvqBcOfj4VEbaXL2pOr94FFYOfshj+NRh6HnCotB+8IH+ox38uwxPZ2NlFi82XCIGvrYL/D+O + HwETQI3puJrAb0Zk4PnFp3IujvViwL6GrQV/h1tpLfHfcMOb53IyXS9n6CmZzscrrD0IIkL2LZsJ + Dw8KjvBWhpkXV+kk4EuQIMdT593VKdf5iD73ol6wq39d6b19Al36zCToK+rv8KQE3OxCAKkciY6T + ahvicnj9358QB3m4XKYupZ4CKqNABVQmYZcihvi6bUAlUq4GVMJTqdufv6uJp4wq8ZQj0KpY4g1D + 5sWYCyzyNClOXqDuTvFyEzIz8frL22k1wFFZTU21ntc76XPGLmF9R+FIlZrNBnl/DdzejxpiCz1M + ffLLxRREH8AilSxhwlYnFaTtcuuHsUTKKDUMO41iCdOEX5p/5/puW6qNBUQrlR2ccxoAukqlr2VZ + WJx1Yb6GMqZP3ER3GcWkkbNfgWfXzTfeT1/Q2FX6w3FNli5l6MFH3SopE1uTMKsdDdB1Yc5x3N/g + 49V9tZKit4P7My8Y6VJ5BZcMa+U162iKtaXSmHXkJhLBWy9+5xHsJNDSOaU8NewYOxvHwT6Vve5c + PJx65nef665X32HEGyacgXYrDNx7D1DxfJ3YwuPghagdYp/XQk1s01pkB0ZWCz0j3j9b30tO/jkc + rOegRhbDalSai/zbZc3fBu+BgoNkJPipLwGiaG/q2CpUUNeoO8MNOUQFkn7LDrWw91KdVOTfi118 + GBWfHH2CioUJ0x5BxyV0n81Bw4u9WEhQxaV44gJ9SDAaYvMNPocHTCHwKcJdEpYDEvUFKK89NmCX + vn56SlNvYIdavg0oiPyz/xtM/I/B52AArGZES7H/HJFDXFR9FhvxcHgpK2qt7DjSmMfJOUaGe91A + j2Uja9Rj1YkJeyyfSuw2lAWoc1RHJ1k6zjYPQl0x3dUCfbv459NJypwx/ocHiF8m2TGXWbgm3QPd + LG6QENraOF3dLFCjwhv2QE8QiDV0UuXHHThGzJ4mV1AuUaJhYzvbSIj1PJka5M40z0CnVOuunZEF + IE/VFhnjRViGnRF0ns9pAkpE7OejVs4LWVJD1GZAyMSZWhE4E/OB8EUpMT2n1BKu8BMQzN0eU5Z8 + N0kKe7B4wLrVDrEk9AsMGEzFsVQJFYMMxdGej+ZYfwLUo8Gzm+1GWCMJaTA7GsCfJ7aHUnHcHGUe + WBNwvW5ZRaqRNcdVnZgcVz4ljisUsPXDrDAdEjbTYw4pEoSr+O7d4Hy25vBsLeKCPB4RpsWjMMOY + BdrKdAidRF4ARcDWHNHioERw2UXAwkSXIhYMFIZ7uyjcNvt64btFT9cHDnYiYSXE+AEpg3XHh549 + /Iln6ONIby1hBtvanxbNRIJAiMHpDHTYUXEzHh4r2CM/iUjla+cnejL2YRuJjjqM3zL3hRt0izqU + jayjDlUnZtShfEps419n6BLOUg0L4lSeDP41Wfm+5CbDQbWF0RdGGsaehHdzZXntm3QFI1yJGuvW + e/6X+F9+ut7jYz6eEG0P0XYCxgt5k5vpcoesITdk7OZhsK7feT9SG/sgWOqiFAMrHirs5ylTt1mb + 5auoQti/idQFeEnIA6eTDdbemNOXVXenTbXLkA628Haz0vYVQd/7UdvdyO7iPNA6a710j2lj7s0W + HKtI+stX/BV/wbrYHnQbSxaiuyiyEPVQMo50hjkCEgLKYBTGX87TGSsntGjymFaPEBmPJhWHLuU3 + yDGtrSh2OPJ7UP8ZUjwDPZyAQQ5BtOurMJm6gMPYq67wzhFah/vvR76tNsEvST3qasroD4DPo/kz + z28v7LUb4ceND3k66HU5KcITkXu1jiIoRrPx4g72A2Vwdk/VVLcIZYh8vPLCxD6KhF63iiKRlEtR + JPRUVim7vGaVaEE/8QMzWjB6OWIuj1niDvFnyJkJ+J2jdRvFs5757vVRXSzrHcxZYW9iFVCsCV4p + xSUGR2XNlmtWxanIkeCaKlfJokWvt19hatKjUgSL31QmPQmCBOOM+61w1tTB/gXORAzJT1gFR2wU + XQIhTkJHjkafu9aKZ/qW3tFilzPzKSAXHlLdDDEMdfftO9fmhnsyxdJqq58fQK+VbXp5tdOT4AXz + O1Y7FW3sq51SF6Vqp+IhsdDsx0Lmr8K/KHKCDM5U6TQGZYFF7pFT+utrbFZ9hZMH0JUVnRjF6dDS + 3ogoMPr3GhjAsChnYKSWEcJ6sLgO/B6byASKdNr1pCm5lwjAfgQRYQ/J1z5YxF5XeKyQjzCROQ8F + 2Rw/f5LeY7oX7P377cw+k5SMidxgV/BGOd6lPovMPvChD6762CbIXjyNILpQwFB6iyaq7X17BHBd + nx1J/IUizwNWiP06IIwv4Bq+WNN62zWtL6Bbssgz9x5Pfl9b0KobDdz4Yp8F/xh5/+hhTP2FswfM + l/D089tZNlqjWIVZpmciWEwWA9HDnmSLHw/7z0MA4r/YIpPF9ubxelO3PGVS/dd75nmnoxP7Ykiy + gV05JEW9XBBJPqcb/v3pKzOV0vN8L44xD9esiTRiINT7bAg/olD6mv74zwxojUfpUmoyT7zg0QHJ + U6rUEY9jN3CeRJFjn5VowA242GLm/f75078aKEsdkECJwd5p9IKxbtEYso2tGKy6MMRg+ZAOyXj+ + QxoFYOvMsx8I3SqkW6y6zYPoyGl8Di1FTIbrSzgln4rWKVXmy2Jmf0FbN+4gLVpSbI/l8Il5FkXD + O3Qo/2YTXeb6FEv8+qoumrsPEfbXBG38LIC7R0HgewrMQLB0Ek/gfI1rBFKLuWkn0Mkg3E9NFDGc + 9fYWuNZ+CHbMjYVOs53jaS0clb1ijePwf6+1NBLbm2rpdWtJJK6YaukpMdhP76p53dzjXo0Q4vmc + DxGI35WADkVzW14BVWGXZe/e+CdSOvk0/VJvZiW9rFTbIGrK9GZY/DYKK6i9lpTyFG8e+rGXxBVC + tfZWtM012VtjH2OdylITatLt6ecgeDXmswdwgOMKlHD7ZDd0Ylqif04nDbPcaydNS9BWSHimICUK + fZpGcL8JEcD4EN2HJVW2a+TOp93naDjA9oSgAPxcnqez1yfPzn57ezS6WfwwN53EbN4uZ8BJTj5d + GhsRCBQTJNDGt51/p9+ORQz8epAOJtv7mxsBHS8vdg0XjQcGiElM/TXaX+cZuv7RNJ8OZtP512x1 + rJnwmsq54XecC0661/eyv+T3OsBfGX00MFrl6WBRGImHEi8ljHwbx4dN1hnVkGrcmpbC7m4qzff/ + L/WsV70oFijF0iSdCW+eKBPbzqL8N81+kJpqnU8WV2LvZKkCBV9RsMCWqHfn+OW91nYp/BSaO765 + K3GbzBBXRTwUwHwPmNWfDvjxqNUI3dglKHhzfg78uN5g2WJdBy3pUF6dXreG7aiWV6enKuDiPWcn + VeCOMK4UQgvdkPNoGLqRm0Q74i2oEN6zsNbTPxzMs3Q1ezBv6qvljLNXS3HJ1kcCwEhrogFUPAa0 + TlsCMppK8+0IyKhEN/ytAjJ+3jI5tNHy4mdJ0JvgUkdhh5TxtwjcsC8+aWHQeyKBGztu0C6Emz9a + sd9CAmHidc7Ypjb26YPURSl7UDzM07XLFYMHKtjcuGSMhIpdrcz46nwgnhcy32WykjbFoeujcI9F + CXTmxGS7wqu3e51tW5u253ox5d+Uv6Q2amS+mI92bmk/dqUIUq7CfA/zIezVVEVbShXtRAmOhM5I + Mf1RwYU320mfNOADS2JKLMl+wPadr1GDaTP62pjt+0sGjBjZs+1PRvcBK16QyNhXFnj2ohi9bhn7 + KihXYl/xqURQO7sKKqGvEY/Koa/PQ1g13x2G3Pci6dW9RySCyWp7O8i+fJltf+Tw9dlq8P1uOr4b + yF0P/AzUvwXM+RLmXDRZ4SHfpDhL6ATazicwfQJAaztfZTNxVApZpwTLNlkFFWlL7Nq0oQRaXILN + zE2KccxcHnllWepHNl+AnAOSx0h/DZ7VspHG8EsH1Upt2gbsc8bjoCRRiRnIwf6NurJx0mSBayBW + dKYJwgVyPvd3k3MuS1OIiotSfcaIALHZAEs/eXV6VFzi4SDfAMWVF3OUgQgnrZpkeIK1Q5tYOlsv + BhVkdxiNpiAg3qYEdSF3yJAg2BTjn2SbxQ+Ms6D35EWR/aAdISBGV4vvmzsHN7cO1w2jpI8aGEno + ycoz+azjcOpEyKbEE7HI+H5pH9gITWJFywMQdCr9N4CBtVLY3X8oo6yKraGbKZ2abrPph/ImKBJD + AL7FXfYDuOWkkwvwgDgLWdikzEv6bfwXcKP2ZvjrwYoCXBWb2HJkm83LwpikhJrGnUQEKm6QRyHD + 0KZ2skHrcQD9KqwZ3lD6CkSlCzEJemnvF9/oAxHSZntD/LIjOEEicsH/+HDlhh3EEHrdSgyRlEti + CD0lMeTN1Wu/IoZ4SQmoP3z5PMLC6u4w8uMo9NrxuucroF8t0vJ3DDZzA88PZRG2/HbT5bM6Gjd6 + KOS2PxRfs4J/cHSvF7k1k3OYfb0fbOe+IJkTXdwsfMVeuHG32mayjS2qg+rCQHWQD+lk3oH8hqWC + CDmqmEao7DtFO4GodU+FLhVm75vs2bt3R3DrLn483GYiO1JWRi+UoFA2I+YsvkxEEB1jIOvJWPci + ludIrfwNTGZ93sMQga5gT8v03MIen2Tj9JAMg9Any4DppgSp8L4xI8QaCccNSXiYZ2gp+Za11kUE + Ybz2BKi5qLMBNOHKJoFHEBFyDQ7Mt0GmT7KUULgrHyK6ScnSuL2Z/p8tQpMV1qhDLGCN51MOor/C + u4+AYtMhoeWvhoezjznYLqIzcAl/dYXOz73j+mJGrlQ0DD07OToc/7Pv+ruyWKdF/V1KlZA1d8ms + CvfXYgWytT5rWrwZEPMdVl/BaJN0s7gXZht6q/uYbWsGY/Id0FR1gusGvSoc1NovKF8xa1HJTpAk + G0PlE8X1tcHPSMd3hc8EtrEY3IDcqSaxG59jPiUavR8hquXq5qDQiN6kB0rFf3flsg4Fu+h1Kz1A + Ui7pAfSU9IDzk08VPYBztxTfyV6OvBh3zxB+eHElD1+LBudY3liCIQoJ7Qs8xbwHUCe/KKviebrx + 96vqUyzC4yXc96Pa4MFGUdP0yrquFXEzoE/TNvyxoAXsouV0ni4HF0fHhPkB76vq8/9VFroddy8I + ySMp75mRzjvb+3N7YyGeLnf+NupWH0A1sS52Th2Ytc7Fs/pS5+XfCzRQZXBxsOiUdMndSz62dCX4 + cm5s3vuyP9xuG7Ag4WUKxXSFnYT2F0v3gzck6ebq5J+vmyW4ulAsld2V+AphjHNYKbcLyIFuY4sw + prowEMbkQ+sdpakIIDE3dp5ABuATMC1rsSch87KZi7hn7l9C9acurhhL7M2W9LqVuCIpl8QVekri + ysl1pf4U96KwVGYwePkcC4x7fBi4EXdlmUFdZU/Pq56H116u3Q5m01tRgq9GYcXCl7e32Rr2zGCF + AQHweoMJAC71+YJkzO1yk35Vla5O1jWVrnbkh5lZK7Hh+3x3/m5YFDfg6/3IryRV5Mq7rgIvPrOh + HlYpJK61Ey0f2RgISjk4YVCq0l2shSo7cbouXB5jD5PNKYgN/uUt8SBhHOAqE3FxX6DTGX46LNf1 + 5fUIYwTxUhHxIiJg5OZhgMYvJa5howmWAIAPW2XC14jxJejzEIWwsC53wQcJQ8IW6c2amNYXeALa + ElKiPtYO7mddUjHiFC0nKzn3b2/ZX8QrGDmign0Pms5bs5obkjX3SopsNiA9LYYbFCdonxrVMZU3 + 331kbaZI8W5dR4rxmL1wwy6W6ryRbS0p3YlRTUo9JX6cjh9mo/HiZDDJ1ikKcaUwtl1/N/rBglJR + 4Dm9V5sHapQE/SXdwJRLo4GMy900UK2BINuDitXYxPW+ndMMYehH5x7sDeoHRnLEIbWndTn88zlP + SGVULxVGBlu6NkKkLX23JzP0XzWdfV+b6tPhvZzwezDeW0c57v7u3SGhfhRSbbENsPQFcKVT4ErJ + qMCX+sBIPaCTHZEhfVjj+7Wdc7T3YJO77H7PiJeDLSiaTkLHXjCPqfjLoUYZVSXsMjoPQDntBJKi + 2liGnOsuiiHn6qEs3PiwlhZboZSkk+kSNjeIu/egDE6yuwdRNkzE8ZLP17F8T2KqsCDwQ8aDIwd7 + ElCCrvQH91WTJg6JTkGr6uH6TNxYCGuI1T/PLCnWMey9CP2Uu2inV/FpBq6LWAKXhBuUAxHSW5Q1 + 2ZMHIrCkoiUYayf4vR5rhZFH8/3I9oR1zOvskX77YvoU5/EErhIG94BPYuUO7ahdeGDkwJAZCEvQ + 8TM4wXSc97lWYnnDjRfSh7HfVRLrsjFRFL+AK6JT2RhqY102RnZhlo2hh3SBfHp1qgKCVMrfeSF0 + Mt0U44NKNR80eSwMEzGB1cZCRib2bxnIa7NC1s6eSobHPSat/kVr3FV6MzjfKwS1t0TCv3mNJTFP + sgCOuSVa3Xf2149LZZfLK7mDfuvZUtlALuuQmE2vW2YDCcqVbCB8Ku3Zn68r9mw/iCtA+M89Pwmj + eOgFXhxKf9unQgqIzPStzSNR1cSKSSDSJI0xzJgOMlsLI2k6T+EXjI2gfA5lst6uqybrOuO00AUb + /OAJ/Cn2KnZpu8yXBis1rIdNb9pATd/alAeUsNigdnGpTdEgz0bMDyQUz6POuYNbQkcZB17UQw6N + +DapW5oTUCFTX1VxX2/aEzAO9Jxk8RTwLv5vUkUNN49dSqq4fA8H1T6Yil634uaScomb01Pi5r+/ + rnJzUOS4yc3jlyMexV7iD3mUhJiOhdz8AuYiZyqLHw/yrKodonFAJWehdM/pfDzbTuAD19m3bD54 + yNL1ZnC3uMcEh/WxwX4a/JTX2Zj5y4KL6Xwxu53q8IF1Nl5lcMU+DBTPXg8Hywz3SWZ44tT4BNLW + bAF7f/onjAuXGr7HJErXyu9ZzbVCL9Z6Pl3mJQ25pYj8BzPp7Yv8V6Dkg7DnJkGFUn3qdPECwSRr + q/Hlt191mY2MGFbywhY9sNyDLVSGtVO5nc3AIWHiVxy7hYuunmyLcG7c/iDLNzhzY4SzjPi/nf9B + 29xBdqBu8hCm3pELoG/inpxA8jbIfiyEpF5XdrLZdwrNSQNbLtabEX1AF2WsnTINbD7Za2Qxp/hq + NVeHGxH79T91EKtqZSNG16Q+AYeOx8PrRUhbGLOQzVMZdSAK1S4XWp+yCxRwZRWYEke201v3wvfr + ClNRUT/9pLgcu02GtUPvSqQheNBFo3huUIJ1mjzMCNdiMRv5wwCUhnVeZLRREGwij5cD2dDKLNSW + BAt8slqDTD/LdhGpk2iV5CWS4P44u+K+ay950etWkpekXJK86ClJXtcfPgdhWfRyfd+E1fDCl6PE + 98IwHCZYxUKGGV7Pt6vl4P83uBY1sVTkRjUpZpmuNsgX8Uxd/GsAHX49S18MTnJodBF0hBfBZzZY + z68+XB4P5ogPusU5w+Z4Q92n99DRNJ3rt17A9QQbPhut4LJ7IcUjGFUQVpNpF/eghglZWd1dhozE + S2i7l++GRQQK143ghq8iJIth4HjM8Ps4eDxiRekodv0grsCs3ReRJ0voyElpYPWD0hKMDse5ElVD + 4A4BmsPBt2lKv2VV1DbXK4lzNZ04p0WsNbWcIHr8n63InfmyKHVZ7vFYyjIqoHyI+wXvuT8X6by4 + cSrwsYIsZWqVNoQjDoMSPBCb2JGfo7W93TPRSaMNPbroyyWiOl7PXiyuZ2O+Oij5nHwfNSekm3p+ + YIAcgcW2zuUuCpRsoE6RzbXVM7JbD8Cvid4Qe10pXIO2sTOvc50R1cgatk11YuK2yacSuG2dbScC + LM2h/6mhev/7h7j/Tq+YG9nbkel1q/tPUi7df/RU2pFPzrwKvGcSmHAOXvDyuce8OA6HHvOTKCrF + RUOns5GqMmu6CQXLMUEg4dYa360e1gsUeTEjorn5sRBBZAJ2Cv95QFUAcSVh4wAHxGjab1mKpqGU + doUCaKAoa2mGTife44FLtHx8nfGZxX7QBAfPQP7lwHdLd5D2wCo9phwLDTLdLorOk18sB7eiBgCN + XIFc3geGUx8hEU5vzmd1+Kle2If3POmQEkGv2yG5EOUykot4Kit0XL2pAsrBhVBBcgnDgIXDMPYS + ieMCLX1lRTke4G+/Bdr+MYBFN+QY2MdLjPWeSkWeCnesvlQB4jqnciY8DLxKlQyRxCiuuoyqvWEe + +H2pzrYhFsZxU0EPs4/cXjZFtQePxuIeNTS4LNFmVsrujNywmg1RMJop2s4lDHCAmeqFkRq2KSl7 + 4a34f7apyD3AbFCheKWYS4DfLVfkgc4xzLC/HNYno9ALuIqk4qHNqk6yEe9dbFb+cvDs09XJxaVC + jT2iJOybB0OmOIbf1sstTrtgv1hqHDMW7tPSMji497SvCuQvYeE6uIJrr+VMFVXgROTMRmMIIp51 + lctgF/jKC4Yr0bx3uti4gGqkqNbax3b4xyJKBrYsKduaQkGFA1Ds7IFWRLQWBxMDdZ1kyfn4Sm6+ + AlxMR0qe20xJohqWHhcsxtTsMKQT5rlM78LJFPl5vxgnuwJC3NzjV3uGyjY1TxqXrZixlYHNl6Gc + SKBYSVrMuQla9AsIt+3qyM+d8DsJ7UDhiJJ8IYRp8ACqShah9Mz3V17g2ssi9LqVLCIpl2QRekqy + yMeri0q1MM+LSw5Q/+XzmMegIg5jnniRDC17DffkVoidK4RDQMjvbIUXp1Jka8Taj6t7BpejIaeY + OLdwY8C9SO4akX1HqX+VCm3qsjke3G3vU4Q22dzhLYxiELp5NnSDY9uGrAwhD8GAqoXM6huUkjob + K3EZDsn+wfCKt2xlVgz1JClB+15cGjmhMEjPi0BF+WsvpIN7WKdkej6BbiRxRX+p9LzT7v70soOe + QnyO4l6hDMbjQdAlGA9ftwzGE5QrwXj4VDoRXp+GZSsK90UQZCkaL3YjHrnDGDR2lV3+AWQFzAcm + POR8NxY2tKhisMrhkoQHXJQFRq0c9HZ0P8zSh2yl1Ks/FisY3velxo4xgJyhkfRwH5sdIeEOnR3X + KnrSuZ170JcL5i+dj9f/ysPTopg5VCeWTJb5iPCoIFg1SFSieO3qPs+Mz4GlaSgdnZw++RYRx4na + 59RtXV8eZluZRMR8YPje/c3Mwssnw4IVFh/RsHRVqh0fKTB6FncCo4fXbcHokXIVjB6eqrpAn6q2 + gzDhlQ0f+GEcREP0GIZuOwrsYgX0a1BgD4vEeVIosOo0Cux8aqLGAn2ssgx+n21hR6zHxaT9Z+dv + Lo9GsoqGzukux5DoiToG8RD2pLLGgc6+JMgB2B2TMfNGbLDJ7uGopqIYIaIXTEludK4+nRZw2H3f + sUwG6rPont7msYrL46H9NqfXbePykHI1Lg+e0jb/cPKhJi7PY+W4vOceg/swGXqMx4kUS4XXFsMS + hXP4mS68c5TXlrq+/nyktEHy+DyTGF/rwWdPasFHx4MP2YaNCt7iD6SGpascUVUeog/pvBoat87d + 06JRs6undMJ4kxuTu2HsuRXDm1TbazyvHmIiWVEr1rJS7kCYRe5ew5NsJAwWBmE/cSvSZQ1xR03o + pZq0YbXgVae1KsCx6cWquU+BXahCOYsvLL4WNhcHd1Ye4uWLYG1QRCnnkVLy1fV5/Zm+WpwY2M5j + EG7pzIjHOeyZGKR4dzgIXsiehoP38uGRfYxIP+DUZPZaHeTbDQM3h61dkEuhEwWf88BXDk6xboUF + eURKyFCy7xmVRqnxi0iaQaKgSmthdEuYdkj4yrShvMOpuV+gfGYpe/xEQ1DfTmZNLyS1KiGu0Fwv + rHYwcSgGc/X6w6e9PP0YICRmQbCLkWIRijnYjsMLqKrW6kzU48QwKmUTtkuS8HyfIB03o8+fLps/ + pWya8znZu9YUOyQOvtAJM9hmkwNSIV2Z5VC6B6zmVl36lFr1+opFHfxi9LrVpS8ply59ekqX/tnF + aeXSxwpEpktcyLZYaBtk2yRQUIYX2RSt8TnOY60+J70bcL4ni+3NLBut8ZxPBjerLP1K2T34ggCS + yjbfUSyUvp0FnDixScR+BwVMPqdUxUnACLRK3Dswr5lAbbvKxielephn9+OqnAAXGtyh6E1S/qa8 + K1O0jZLmIvMxS0K3Etpl5drLyUQBBw25EthlTJe0J9fGeYUloaAYMxYELOEV7YCAlq1INyoeBmkt + yNzTnjA9gyBjNuWMFWfQIILm5f8s4MwoVaaowZrrU8pvy6knmOfqN1EHPrG4v1Eo9+aAPbZjwM6T + 3/wOHm0dYpAIG4SYLLJk7Zhhe+mJUz0c3EKHhp4f7n2UweJqF/bcumkOIqEloeFzPMUvF6kQdZus + 63j2Jdts0PkJJihHMk2xkm1c1k6x/nkZ4RTPT8qAnuB+YIv6rFx/KII0XBfYpO16sZrkvQhZzxhe + PWKrtlxVtsPsTsg+4d421/UvkDFrR8F6akC89eVWLcQHHJaNa53Taw3M9nj5vTHlZeUVw/daXakq + MMrbfXXl+r599gi9bqUqSMolVYGeyhC604uw7LdmoA3Epq7gvxx53OdJMvQ4Oc5EUVYDWlnOxPHg + 2VJGah4hFuEStMK5CmT9NL4Pq15ik04JWNW06PlNzuIk5jyMKiAL+QAaKiGYpvKinFkkWLTpGVq/ + dpuYNerDsqhZtOgpyrWuLQGbq4hKo545P+vteIxCQhnPSA7peKCmP/94Ryyzlhs55UWEiboWc9cu + HKvuyXe+tAOY40SyU4EE+iAxKdWkvXvXwd2kjp7PKVxMiy+H1oH69WjpYj9XJ24/ZOF9KD11B3mf + QlZfl/qB93HA3JgwjstBFNZJjOr2YApq8RV7Hb1wg05Qi7KNLdSi6sKAWpQP6TK4nUF30JxAxFYP + GOQnUisVrpj8NS+s53RoYgyCBz6KzIR4DBoVTpmkNesB9LhHCGU/9ClM1fxUom0RT2lXc+zRvJtP + EyFRza3HSSHcP90Lo1gEBbkD4QW1A8XNOjsAJzCOCX3YXPnmM7F3PCUJz4eO14+8uvFigjQCAXYZ + 785doxgYl1Gbvhefjk46xG1SA8vITUm9ErtJz0kMfn99UQl/8vyIlaM3RwyxAdxgCD99Fsks6vfT + r8AQ70dnPBeCtRscns/w78Tz8A9LYfuZIsyyTGT47A8HnwNh+/scUhz6WiVDv1/fV3O/ZIZkWM4z + NtJ2CwnLScDjKKyUDFOd1dmJWeRGbpPDGwRnEH8eO9W4tpOyN9YsRhY2ifOMw3p7zP23AxM6eCaX + 7ChfMBXtQH6su2y5Se8z5AiSrcBaPYOmfDmKyEqbwcrBSYZnbIlbPV4eFWJ9oCH9RXGlopAvJkgU + eT3WkwZvx/nbajRyhS7JqryAT0ahuUirMBUb4S0n3xWltwhPPW5u7an3Pf+xc6K7095ZTL0vX3wv + 2dqhT0aA+qq+dt8Tu1QUYfMr88YPzvcmuBDFi+ykjppWu6drP6+9iAASnVnHD3Uzzh0m9fQdVOCH + AXn1P/u/wcT+wCsFbsYRTbWVc70rpd0FBHrJqN9NoW2ZGgg0j1vJJ57KcPVje/McvW6b4YqUqxmu + 8FRFqZ6g96yc4hqzcorriMFwQ3fIYg4aEYkllTgbFechaArh4mqZ+klFujAynipUGkLtwgbRI+Z+ + GPsVb3VbHw0prkli04UWFGoijy5BtSiEG5VEB7dM3mmbQUesjQ41ZYmqUXpw3FnshdJFWAykEv7T + 9fTPmsu4yWTWZ7hXL5FXgtvb7a7WA9pT2VUR6do+oD2Vv66kd96ATz4Fj/kKtsTj8Qs36oZaItvY + gpaoLgzMEvmQeJ8hbYuSJndwABYwrbj5i/Dsd1n67aFQ9qT4Xj2ce94/GqK4G6rSW17RGgGjvs2E + C36zkBVeD6g15IYxGZK0+bt+xMUOKqW4PDSnCslVt20B7rMdGoYB+sbQrBwKFbCLPXLEOtinOpeC + ymdPhfMzyjI9v3K7IF7Q61bygKRckgfoqXTXvX5fyTJlgWcWAfWSl89huyQuG4bAh0IpDrzWKVrI + lcqoozrkCdes5FUnoK5NNluQRizxDbIUYRfMcHF6JxvMsvnt5q54hYnAJvVnChaGp9mXLyh8Su9g + Nqs6B5UWqduO02WtDOI2Z5ImfgIaF69UTDe+qMYG4nNWwr8oxMqB9B4kFagbSRPWs+Af12MvwlOa + OBtuk+EiDv0ExvFv5wmvn4P7UolCnucxR36TuLHqPh6NAPlUWYs0nh+Q7l3KIaIhYo3qlkikumBy + 2DSESqDbDQsTBZ/fXXxzJQ9r3biWuvJh+rkM12qZkmYgtEOlK3F0Css/3VExvvj9it/qvFivQ3gE + vW6bF+tVwyPoqdK/3nveq2pirBuX8wRHURQHQTCEgfvKJXalsnD0dn3vRcqpP0P5YPAsdK+PBjpd + RykYw8Ectg5a+nSgCWzuq+XM807I+oioVGYiOdxVQD9IjwcrfO8mz6GDTZ/9uJveTDeIZLXCfmSV + i+93U5BKxPupakahX0ZrECxAoJoKAVUpjvhubarjWljD6PMqHzZ4hsl628Hr7VdYi/TI1CJLtZcN + A3aQYFpjOeY5v/RF1u90s5XJUFrnMcM9vMCmg0q4RzOquM8qQ3b+juvu0FHI859D15Hfr9WSJmCa + Ot5m1fBxyxId7LMkjaw5d6e9gmvIA9V9+5Gxmc+eUTBlRPHu02W11ofQa9U5KY388grWskN+rXjd + Lr+WKJfza8VTuiBeXV1V82s9ROsr5deGEffDcBhGngDhE+iTdcgGwsJatNMIdvtqtWrNirXNiYVt + 4jUJtHEcMi3P5iy2BYm4jLdcSylHnCv4fGrD5lzuB01CsKTo0PwUv1Cnv+b08ezge2XpFtNvTUxi + 5KjlKUe8YYMLzrPvs4eR4v9/ZhPpoR2kK4zBA837ZjoTz5Gc949RNp8UfTqwiuvZ4ns2cXC3aE8c + D5kE75Xh+zXTYysXPw0c4l+MHyw2d8nd083ZU4EA29f1oBhULCMcYJHtJVh63TK6QVCuxDbgU2JQ + n19dVXGp3KCCSzVicRSG/pAlHo9lLuBpwZm9vZnCSdpM5yOtelHRyWevvSPJpT7frKr6e2/oF40j + qK+Q1ixLxgk6DMoZZDqcdDFf6K6qaWRhwLy96KLlt4Uuoi/soOtYr0cpiV+++1AoCrmc+7BSssrJ + upwidLG9YcuRWM7RVToJtd7q4HbSEFEuE7EEMCXi4OZDyi0f+sjtjnXbkUXPDOtqzSrtPM0/GwVE + 7kJzapr2brfp6ETXwr3eS2xszCNxe/w5nY8PqbbeR1Hbg0ukKw6eSB+wGyRdfMD4uqUPWFCu+IDx + qQQ4v7qsIhXxMKm4gAPGsb5HwPzEkzjHJ2PcG6tsJlBX5PK+GFzK6CIBupOubhY/HvLU+T/QIH/3 + PX1QEWgnq+V+SMdGxYw4ioMoOTStmjH4WPjAx4JGklM0IocNWu+0G8csJlYSfouBZszz3Tj4t/NB + CiBp3SIYUn+OmrDK7heTbCYCpQzpVr8yyl8ZZPM/H+6zPELNwb2iVXSXEMhDz4u1HbDUSRcBswuV + 9pIZfUCzEG5EC9bIsJSj1qMY+xi22kprq6CoAw0YQagtEF/h1U3XdfCYLLv1br4AzaGLcdu2aS0C + TB/XlY8oAtgEq9jm2wTUt+AfAwI0AXHFHotXXhiccvreggjeAfOLXre6MCTl0oVBT+nCuLw8qcJ/ + xKxUWdl9+ZyFGGsyZCHzVUWMa2lzGv/jH+qC0KyQ8jNVYUJdLRAZWDqeTtD7lB9F3TA7HmD6nXi2 + yjKFgyQyIKSFa61a/NNVJdbp5rlcplWzh8p5G2nfNa69TB7NKZjCNa8E92jXoM8RPL90n7R2kpd1 + XS10oMx9Bgs9L1W28MPETAVs6llfQHq2zSk1nYXNVmxJ03ki6+jgXlQXEnPDuIeSztieMsva4xd2 + oFKQSbJhum34LwskNC7mguXeAVXpF+dn/wECcarVgcQpt+OhG/W6KoNAVHtP9x+bz/2EcJ8KcR6T + 1dZCmnDkYTSmnkZjnrR/EqiT2qoFxmAVLPUzUxcbin8fmvyoSfmU4GY/Xd3uYY+Rp7eO7Ob7YrSG + FotVifSw9vV8iTqIENB/0tR/2y6wFeb6QGGIZYKzvhWyH41XQp7NSEnY+b1gd0TdKC52lXM5vX/0 + FLUW52zXjhMKMa2bdLtLrvUcKllIZaiehon/wg27xQTKNrYxgaoLIyZQPiS56H41ZtXoQBkMM1Os + f3yXjb8uBYTSs8uLd2egckawKiw8cshcthDQTw1NmGrkg3SdJNgIeqVAQd8VgYKuLDfS0rG9VsZD + t45Wx8uQheSCmN7iIovd0LG8lPgsVVN11QECsDdty0JfOlBFCyK69PJp/rJYfbXqu4dcVdd3BQ/6 + Y4TG2n0gcywiemrnugcO6nuBlxSJEHLjbyhKwrcCU/tagGUSZ8zOgqk4TaFo4mvvBYbkdqqZKNrY + l0ykLkoVE8VDyWnSpeQ0pSSEFO9S5+Lk7Hp0s/hRTlEQfx1cQGMHKSDXYFEYOH0lFjya1UQzEumA + a+1A8IZbutl11KItx/N4QNinebzjboDZNoTZvaxAlcjqn41oZnWYO8ByHZxKEbk1u1Nu6G6+CGtS + 3YbnG5umukN67A6YnbxP5QLkeJLdZ1gxOE+nV7Dz4AXrBPah2linV8guzPQKeiih4QuV3YmVi3Rm + 4UkQIATFjIlOLxf7R6mJRbFMrwgqNeUVOIGOztschKWhpf2Q8hkMsA67PlpgbOj+O1/MbqctqqA9 + +KBH8V5ftvPbdEbcVGWZ9EE+IfvITbqCLQIvZ8uNfZWenwgGIrysIQGg7txoPYA+9tBX6zn3ZckI + N+ngb6TXLUtGCMqVkhH4VPobP53zmpoRQVyOaRt5IFCwYOiFvhuqwqp3xNlF9OqQ8oPT29uC3+t7 + utaVPyaq8kcRtkpVU1nOYEzjJdabVlUGuKvKefxC1K4nAIylhCGWEDiWifq1ZxkqTulNH67cMOjg + 6hav27m6iXLZ1S2e0tZ7c/Xar7i6RdHekqs7ClzPj4YgbwogUOG5QPMFXAcKU3mo1RAJsiI3oDZS + Yy4YsBiYi/sUrtJ5BoOVW2++gjEVt17g+TGVUP7la6+XK9TGFd/vKhBQE2vTCnVgWlbEM1q21XLJ + XKnwhO412dLHhUhmhV7d9sfBFVAZMWdFP4TFhEmML5/KXxdixaFdNlvA1VevBtmnVXYm/bgx6Xvg + YP3CQHTrFNGnEp1urxI9Usg6p5D1iysed2Cy9LoVk5WUS0yWnsqSUOfVHFIv8UuQEsHLUYwBft4Q + S0QkEvF1vFiJ/SeDnI2wQV2wZ5BuYEY32eC1CH3Ggj+b2cMgNyrA+x9uZ3ypAozEL2U3r3mMzPAg + 3piUyT1MIqrAwCKv13uvOWY04FXc1mKdzyLxwwGpJLVaGNh8MnPKx4PT8cpfEpzY1Qf8jFKRxU6L + c6y2PV5CsASy+AD8y1s6uEl0nGeckN/WFoOpoWKgDXd8hNCaA8I3Dwev8QWUskoGPSDgMyDBoXkj + 21rQkJSYkOyHDZXHBR9UXDHW5tszECtYN0eRbGNtvpVdmOZbekgccvb1Tkozky3eDtJ6g5+lri0y + Vzs7/j54D5Scr9MxczwvZIHHpTwT5iXBMOrifjpfCMHI9B6WxI+q1XFPQhaW4oScskUP/+LHdEIu + zSZMh8ZSGtyvOfvkbcIjNU7X43RihwTH3CCRqNVVdJxsmcqyc7KkPR56WIp6xJtGE3NSZyYvWUK6 + V1UB2d+LqnSLBhzxFaIc62J1m85VXnuHHshHNc9u05pabF9A7x5vmzZEC9G4jShcIbg+WNtGZpda + XggdLOa9IkH7YWRgCHzdVRFkFzXDs9fq2bK2gu9DtcugIzOdYvOwWqwPJ3swOjYLPUKoOWgcfYAl + qZspoZvp1SnzT+MXjHe4mXQbu5sp76JwM+mHStO+ielmakOWevZuOHj3jhBA373TqGVHKjYBIXt8 + NzpyWqG4hgKn3yQBSvpN7OAoQEH34JLwe3ROhnV+nzp/nuHOs8IODS0pdydNWB82pG1p/7IQ9HA3 + PNu7dx0RTLpivtlYO7qbSFgYUDRl+8cNB3eL2UImVey8jw6Dj7O3RDweSt1BkR2SQXqyhs17WOsO + NWzE63Y1bIhyuYaNeCrj3T+9rZaw8Us5+FjChjEehcEQf0EnjnBkirSnB5C/cEpzPUbGn2/u9k5o + PS0gT0dBwispS0JYT8fVvuttE24pOf78nWmbeJROipaVKEn8oCm71RogpWZenI8yrvz7AuFhYGyz + 9WIAq8qOTM/G7GGUe44aVm59rAXV2YMSVbHE/F1WzpZMhflOJrsJRKrC9pZOg7yJsLrkv6Z5MXPl + WDgGFgG64Hwt2LqwyKA8T0Kxg7tUV+ABVdAGPaVO49sXNkVrN7JcYIM4r2cGTvuBCb3d8m9rYmoO + 9SMf4ib0WakpzMdiu7EuzOPI44Rv7T6EVoM6gFy7MrA/XYTMQA9aNeKvN9uQp4OIOX/jvXCDbsYh + 1cjWOqQ7McxD6ildOOls6UsD0cnZ5Uh4ApSdRYb4NTwfnGBTRxCQ4X0JSdBxHFZNJFo92zfLhZPF + lgAxzimwWyb9T+zCfa3llB76agf3SKjmt8BbmU3Xd0IOh1EVYQXRElTMZlwu9CAtjT+MyWK60zFM + Pmg9s0xJWsocA30CPzSfWZo8evAQ7qUZ/ILyPD2klwIJsoIUF8OOQq8GIy8hs8Z5XwUq0VASSIp2 + kPQ7GnZgp1R05/y9G7sdQGzF63YgtkS5DGIrnhL7vD79o5qf6pXiixDEFp6FXjT0gsTlSe/xRbcz + GNL3pXOpyiUqCsBEFHaAEqSPB3fT2zsQKNEJnK3QSZfClgSpRxj/YerQUAIM+k6V+YaO77b36Vxc + kYNXV5e+//6Yqju2Dh/E50m2IS0Pg1mo2+V2Nf0yhUfGh8i/jzZ3q8X29m653cCG2WKNJufNxaUX + aURWl6JX9pGIVLiJJwNQT08ZD5IXjHe5hvNGdtdwoZPCNZw/lRE/l1d/qDzTK5hpeTzLyLhmdGmB + NA88uHUpxCRyaWaMLDtLOdf+ijw4z2agIoxZnr/Vk7RuV2pu1+3TZ8U463K/TyAoy8UkQbJ11WzF + 7p+mTp1G1Wf+qd/x1OWNrF2jqhPTNyqfylP3r3dXF+rYFX/RUV4GJRRyw8B1bJBI2qvJ5DbXfbJY + dleqschfs9/dvzizQ22fQBnnfLeTcQ5etzXOIeWqcQ6e0mX/+uqsxjjnsapxzuduFA3hR6zQi96p + A6lPo1aI7tKNmJ61uuHfnr1+P7gHKe/LIN+KawHPOJ3LAJkVXKxzsWFkoeXacgDHAmM3HawwlB6h + xkz9QgLpzrJv2UzEkr6+Gq2y9bTIbxVs5+vVpDawSbOZHfUIDORO0BUbbHMcZjSM3LLtT0yJ3ip1 + 8PaBy6pGRbNYtUG7ApP0+qowqSWAJFaibFJk/3bE+EDSyJagGaO3Kp+av9yCO7jPc/OeF8qSIPkt + LbhdYTgwddB31tlNth/NZkNND3AcVNENOoeloQSXbzA/wPlGWv9vId6gibPA9Ywv3RdJI2QEetFl + TM1Bvt0KlOywT3YuSvJXSk5AhlUm1fVTKxZVieqnuMa+GXrI+LBJPYvscHr8MKEQQYMT7qbYqqKH + qs5M2EVFF6/b1pkJa1R08VTd2ue8AjrIfMy1KBeaYeg5HoYIyieTA09HPsIu3j2ARLIRNblF6Bgi + eKAeMnv4U/pjvkxX602OKAQvL9d5SCtC24N4CIo5OoYKRG9B24UXxTzKS2MlDzUywWx1u5D9Fr1S + x5LRAKcfj7f3wi0kRiHfNcj4Q380mVJ/fz7cK3rqVr/lVUBE+6tcHPwmEO4QhOQgrsAkCsppAznQ + Ym3I5ZJB4wrVuwVdHjThMRodaPGgYQlKEkKya9TO33YnOeKAafsMl8UDQyoK+yXdwAqIMM4D0k5z + iYHqwIieeyMpWHvdBLVSrbMTxyHJHwfn2eYXPg/1B9uOrI1iEDDKEpIhsAsUu7oDpDwF2aHeO9C/ + HCKYkpDeSozLZkRPQIhxJNvD13OG0cQsrab5AHI7onhckrNWi/n+sMu9wLyw0Kc4K/ykBZ2RAzy/ + UW5yjtkLl3W0OIs29gZn6qJkbxYPpdf3di2dvumIDb3R7Ww7hktD8Bakks6Wd/gXv/yXwQm0dLC5 + CJp0XTI5B4ms6IhJ4+glx+sC4aoPwUmPXJ/MqpaR5K3EEpciv3u4MRJOgnt9tHtbXdomR60rUxRo + 2uWU2420qV6uz/PJI/87oi7SZkPvYbsVvVAwUhwn0n6yH0Vf714F5YKQcojy+erMiqMyO6xhy7st + r0mcyMwhrNcpDI4TYSLZl1qshrU/NYrEJP8syYS49HtnWZHLmvZUet8XakS/1Xspx6OO1FA/Fdkv + t7OHMUagKDm3m/7ucQrFb+ZrnXPP0G+VyJXa+6byI4nEpgZWYcX73jcyC+3V5SvmnsUvXK9LsL9u + ZBntn3dSDPfXT2V46jrbThZFxEeH/qeGnKgrEnSHF27SzSkr29hekaoL44qUD2m46zu0pkHHID9M + MgVhWYb4sXur2KO4NgNKnotZoAs77HNT7h9e3xWWpje2FPixvIf3SqnpUybzXVnRyEviLhWN8HXL + ikaCcqWiET6V4SO/v6vmr/ueW6lolDAQacNhwhKXyfCRm9li/HVtRM8KC/98hFf9s5MjUUBLuW+u + v077qGfkRr7vVnPSr2ox5ksl1ky7Sx7vHXscE8grFY0LH7bKRIXtopHU8Cd5URMyeRR5SVAx6ojS + YkoEKn1+CB/YkOee+DGP/PAAYkV8cwQjUFVE8gz8qidY/mqSrYmgL+TjM9+LQz/6dx4QVFwhhJPJ + 0/OzH4T9oH0J3j9Qqgr+QR82QTlLWgpE3eTCkKZzUZGzaesdi8zStc6JEVHosBE9ys6Hf8XLUnkn + udAy5mWZ3uqpmKxxNN+mq+06Wzt4cHROPzBUYXLisUqMQTrptGs8og2B/+E1RXQHPtWuNva+cX1Z + BD/4rCaHeO9sgH3otbkSE4rXLKaN48aYpPfpLdpHp/fbWefMtEja8+4z0O46qIhuErKgPBxxGDre + oBHz2zKgW2erUX2VaRgo1m01x15vZwKDezovl2TL0+ahQWdXnE/BVuka9AHRvnv6ugfqcaSFpnQ1 + UifjBsMSa7f0UGNMLIT8M5TVVXZ2SeE4lOevyjj+Iljpbvkm+YgXs59UxicIXFLv4Wqwr2zZX2x0 + GOWEhIgrjPh7kjoYhvZgvBaPzNYWxX8e3Zp6eDq9G7tclSgpXFsHftzhqT2aUMziekJDqpp2i1hR + Ykulc3wJ9ul6KOJ9JLzJdj0aL+YbUCWpnK96qSuDDHhclR8km28NMyizLqUniaylP/7rPYs8ez2J + XrfSkyTlkp5ET0lPunpz4pX1JM7jEownBz0JrslkmIQCFwi1pKsvKVsOB/CDLwlFAP4JAuh9iimQ + y8FVAQJfgVedDJ5dXZ4cwevVUHkUTWfZaI2zO4HfUYgqR2m3lGTAKs7A2G5UoU8ckBI1hZ4mRlfW + 08olEVQCVl1ZbAxhaFQ5uM8TUEgqeiDeR0ILGA422WyByUBjZeA1vOdRXEYVy0vdRi53/UrkXpED + GgohcEibYWrNiCahOHkmOhlrLIvVQq6wMLlrH4vKCliwKUyE2QsPmyrbNvdCe6UIxGiSbNRdm0lu + 599rphRGF3ciNVlsb/RmHtyssvSr2o3m3DYrsbV085t4lP0Yw3kmFb5Cl8fdZnO5QLim/BzUj3XX + dOqCYrDOdxn6LTdipWHLt3IDqjE2XVuyhUryxg62gJ8ylAyhsMsd5H06uiIC1irOIWXfycOaGXGe + mP1tHpRONzVCXGGLls2BPUhoWswP2tFZm5LVS80XayotpWdiRSA/WhJ3q5VineR9kBmBU/xCywmy + G4NHufWYHbURvHzv/RC5VHCgca/JPwioiU6EGQXFwtimeMRFrPT0wOGyMAh1DTA8dbsqa7fQAl2T + zM3EJSZbcde2qJs1K4GgiWL6Srm+X/QAZYJfh+HJDA+m7U1NV7f1tgMFlcz7C5Sq1/C6oao2gMM+ + CnAPrzvJFYFnp1LohaRyG1ysxJit1m/PAhg15VR9Slf9eOV6iX0sLL1uJUdLyiU5mp6SHH36+6uK + v8EPWQmUPHr53AdVPoyGvhsGvvLfmRBzp7/z4eAGhvCPHFNZSLCnX2+qnoZq43rZNQmaAikTn0eg + ipTFyxrC9XAwYdwEtGtQ1rLGOfvtmnQobeBWzFQEL4wfYIObwrFb6iLPPGnogv920bmLsFMXgg7S + hus6A+kprYSuxlFT9e96ihU+JrrQ4ATP1sA/tgNjcx+VInBjr9M3GFCPFvQDt0lHqadvgThq+l5M + KXvnTmoxwhOvuFzMikBwpjjbeCAYQ8OMG+zV27vm/prCuRv7a7ePG9STqCn4WlN3Xgmeou0VD5q9 + 4F6DM54fdo4a+nW2+u3T3arMCISvCbOgRC3gAniRkLDh5dkUA05wWiiVvQCXJjCbpClmDSzlhA3x + v1w0BRYKv4pE/HQuBod3y0b0M55tJ1lt+SVKqsd4JxPubO0gS9alGeCucSQnwSvFjgd1k+5dMgra + 8Z5upAMKsjHOKwqIebCXyrUz4gRNUtb+Ngpv2rndWwEXbQTpINmrn9ZKbbU9HQCAXEsPOLuQ6ZS3 + pXwN2M/1vq6wunhoNyAzbpsDCvT8KanFMKt5kpvtgD3splbmNu8qa2EbxZLi0tRIMXbC8R502gHQ + AoK7Ov181Q160vN9GsrnT5ejU3uxup8SxKEbNEyDjZm63UtwGO2mI3Ag2RbQSV+Akfzx+grkbnvr + Or1upRVIyiWtgJ4qEJvTSqkiN8EUuGKCXPRy5Ic8Cb2hH/qxJ+3rKVyD/8HAjYXECcSb8Xo85svf + 4L/+Um+tdLkEfVKkPN8IDgIX43Q23aiEo9kiFTsJT+kC7bC6ngrMA9zFi4Iqun6hopqwi7KuUfWy + mibsxG2SQdw45m4YlnWMe/g2vNBW+pkG1TGUl8BMLftwVhKVgOnibaDGNZEfWpIvIzdsij/SAyya + MNVsqQmUuvIzsQgjMUPClaEWwoi36Tzzx2bskGKw2L7586QlbYdFsXjLAfk7IAcrOnjLT/7bwS2q + U9ITXxlB+zVUNmL+u36ibtImwWhHJgMJEQVjyjq7XWWd6jLlxMhG0jzdHT6MbGUo+dVKBK3Oeibx + zcW0TKbfpvWdtxTZftyoiPabkzFCdCudnsabsFE26AF42KdKiSdXLu/gYaXXre4ASbl0B9BTCTx8 + 8jmqYJt4pUhUz3s5YlHCYzZkCCgvKynpIMNGzIuheJKJavNnny+57xKW2BcQcme6VF26gvGMq1Gq + UoDNn9WyX7iSeB377Z+P30yRoeBaqme1dNDqVKKTV+GD3e8/sSp8fiD9/EDW3j5Jr1v6+QXlip8f + n8pdePW66uf3kXmafv7nvhe4UTz0se6UzGTj7nWOIZYJ06QszE135VDpL1MNaQxs5xtqMOkX5KSq + mh/ioWzJbkDAzJkKor5cZVXnfKHPMYajKQ4iLVWvt19hFlLTRhXEXpPnE+54uNciVk2br++HjLAj + ZSSx6J0lkWmGMXoPcIorZlaRTysmoxlwm0WB1TfVmo5kHR7TWhQ0ufRjrC4blpF8ivGHu+2EEQua + PMX15G1A6crh3wFr6kPPiTB4DVjRzIVSmbmdD9m8Dp4q7UEOPCqABiND/nAg0l67X3bfPixih5PA + LZsk8lJOO9vviiI9sKLFoxRx0+135e7saE3gkE1cq9vtg5ykhVoDb+piLNi/i92bwC+KbkQaVI4V + Hiq4Sue1CL21LkLuGQWOutcBRd4pDFb1bLbbEu8mZlGziVNCqy7SRFdpL+OLOUGDHEqoN1h2P9LI + lFEcvnD9bsCU1MYal1J2YcJS0kMSZO4elgtK+y6UGy6k5y7v0rlBigc+CEnMORQX1xdJo3+cXfGk + Q0FXet1KAJSUSwIgPSUB8O3ZScVBTX6FohoSghqCdmQWDOGnH3oyJa5gFUkxWAxvy4fBBoaUUlwE + 1m+9Q/s3apknI5QRpkJzGcP2WWPNJGV1mGRwRDaUNK3OswDu036hdD54O0nZUhgYJiJUUPh4xGO+ + HMF/vaUKHcE/H1dNL3q/yktf9kQofoXUa7jdiBzJoaKDsnzYNnJDLWEsLtmXiiCJjPE4CsMqbJO6 + 7cxYU6/RoecHIXeTSlpf3TDr5UnfjZrsYMYYtYBWIV323bIwiBqLwtTT7JBBVfKj7uzIeeTtagST + d96rRTNfXeiXg0dVSZU8cr3+iqcdnrvW4Ml71Jw4jDwrpQDiXH/ZK6ZR7FRxt9XuaSsXD5P4KcLS + sp7OYCPiXrh5EL7KnUZCR/KK2lGsWyTGJmvjT0xjciT/aBp79xwIXTvR6yggyBa2dRO9snAgH9H1 + OH5YM2nugH+iYJDlSBGyIqKfxIwn/MixeoOJ2i1u4ocEax1QKp9uW4tCIwFDsIxnV9nvQMSD3B9H + dApO8h7Q1hLP93d/ve2G35dcC+jaAUWgrJpaAef3B1HDuDk/+6Ox7EXrseuuamMDiwSp5cNqOln8 + QKleuLrQ9bkXqmpAyBWXV6wLqiq9biWoS8olQZ2eEic6v3xbKXwS+KyUkRW/fB6HzHPdYRz6cGpl + TlYmKrWvB4h1s1hnIzbKJ4RSBhDt5xbBn4W8e768YwfXLuRwpfpuxbKpuyq4H5tE0pjFfoNIalDX + 0qMm3mAfDJLY3UHQ+bCYj4AYwvHCzmkYbkWzuF/cTHVUOcg5qt0w/7LpWtcUJMSvhzEy5JOLyzzk + phR5hFnQBNCwmFfak/1tpE1ysMpoUqDQN/i7QDr/eD64OLlU8ROyYKGDu0nJkqEX+o+GKQdESSZS + 03g4wdg1CFoYTWvrae22ClYApEMK/mnYuB2/o5fAHpnrsOtMWd+gf0Wssf65va4ayNhbxjqXDdSt + rE1UuhvTSKUeS4CsskVqeu+Lo36RzvigUFP0GT0uPjvS+yxUQmnoRknC/CPnyyYNhUkrlDLpkwu/ + +KUxEwRRAPwzE5JcHX5GLWJrRIwvz/ApzEYrtUco4XeY/2S/An77Vt/T2rR0Zl1M1+FI7HW7oEl1 + iLk8xJevWPw6eeF6nQ5x3sryEBe6KR7i/DEd4skWdJLt2lE/zZaeF2ING+eJBSoEFDL59sqNOgQq + 0OtW4q+kXBJ/6akMVDh9X60pEGNgVlH8dV8+514Eu28IPwR0uQiXefsxDkjaUgLu5XhWReGnN2p8 + plJ4KmQs1Np5PbcpwZ7havCwIgvv6rEm1NW0rnpN+edmj2Z6UjXNCTn+LkLOqRjsUMshssq1SO8w + IwlB9ry8W8TBsvqB8sOenU6+HiGpyXZMDc7Hc385SDdUK6fGUqjSALGUtyl+U9MCbtpwcA+c6AZv + nTli2MlAdKMsrmEaGKfLdIzaNm4zJRczxrw+rkOPhX4NTpYaCEZ0YlxuFyRUnxx6bSH9pXyY7rLg + 4Ven50oJu/OxshKC+wqPF8fIZqD1gefNvl3FPSnY8Pf3oHPYe/nodSvuKSmXuCc9Je754fMlE8GD + ZqBXlJQSUb2XI89D99/QE1dRxcuHKuWH7TKG87be3qjlkn9QcaVLIyrrw+Xp0dA8sHDC51jvHr7p + Zqt2LbwHmisoAIh5WKCWzYEfLJZlEMVypkmqam1RJr9W6/B0L4CnYdlk0RVyialshP3Icovn6yVT + 7j74Qpiuxjh38X2mV873GpxPiQ/3eRKVGX/B1ieDJBssIAFLGiFGiqQ1h//w/np0A6MUAeIqV26k + JL/pvahZZdZSaby26ntAvDYNwfPsbn714VKrFzs6akQfae5IEcx+VAn6bthgzKknaCyggW0vLCY5 + kLwZFZcknXopT0XdyMPGMLV6mqvdU9FtEUV9eVH61WrlmrF+aqmv57vH221bI8VLy13WjfJm91B3 + bVvnfw6HdOgq0TJS4BMUrE91RASWo5xEce82qpyNuY/Si7hqoWQDdeqKK11sxIPICNFvcxiVkD6p + ljWrPTzFvJ+uZPU36qNxELlELWETez+EOmWIVvjOQSSNGo/7r8+hRSzhhtDmldrrxdr+2lPdygDP + ZskC1w5706gEuARuKA72nqMJYThcmiIK9UyMb9SWib0Kax6IgeN7leWztKvZtHzEkpseSwgsR41g + j0pVKGEKNtImklqdoz4ys4JAxX1w/zR8wbrUbdJtbGM/VBdG9Id8KOM/vn9RWtA5MAkVHFr8t3hF + xHSAXu6Q4kszqhcFz84awZVgNoYiR1L8llVhnvI6QJq5eFQ3554QEoXQsgeWq0des+JIfuIBI+is + po+udbbFnLw6f07n4/0rk/mhLPqKbsfZHnTUtgxVqlbkd4FkxddtU7WQcjVVC57KpPGL02qqlhdH + FUhWniRu5A09l0ehrKpalAtb0lgpxft+XM250imjZr5yOdG7UfKO46gmNPWEBMt62yY0aahfYVDL + tUWJpmKd9N0UWZB4XuB5Xq/km+aip1QqI2XdZzyJ/TL9h3m6xLA8FL3U6uUpOCZxrylGQhMvazz3 + iD2fp2OYm8TQbJrnD+M3C4g462PCBVKth2RuvsrG8XJIGVmqZQXDUyXAS9T/Y7xxZguJiykMyDmS + KJyrXEyCyZGbUmbKUhqtg4dPZ3SBKNuTmzSUPrJdW8tae+pEcveNfpDvVWwkwffr9h4wepjamb09 + updCBAHj5M8tCMb7FznsIyPfkBTKJ8dO7PoFLmFZFrgNrLL5o/sqH2Atbz5ltH0lYIiUqD8+vHe9 + 2N7FSq9bCRiScknAoKcqwvAdM32sXuQhUm8pGzx8+TwIIpfFQ/ghUFGFk7UGdFnUtS6ifH8YUUg4 + xSFiLPFDHq0znTzMpnNEolrMBs/OZ+MPJ+PR5bujYaFKd7nKdqUHFUrUQBTIwdxj4AVcCgWgks2C + MOm29+l8cPnufPRW7wcVETllNR7jp4aUAB8ov6+leHpQMZsPC9IVY5Efhq77b+fvuqSO2Om6mlUS + UyqNLIVcN4UHVDvfl2ptdogk1jYjo7oFKcbg4YyNzuefjjrdMk8hGgVPEqOL5/PZ5UjNws5YxYpS + /VcMc2QRI8ml9hjsWvT98nQDyk+9fM+8xF7rpdftwt6JcjnsXTylS+nzxetq2Durhr2PeJyEYTzk + CSJq0JX0oRQeQZEgUid4Mfg8X4/vssl2BlNxIXHQRerWax1yrWDPPt9n1Xj4jvmZCff8yEtqqy7q + YA3MtG+rvIiFF606aMinVGXQCiR9F062QfL8XZmk0zqVJd+VKim4kNXH0NWRbdT7apbXSkf7lt1m + Es6IAGOHWoLCehE1yWRXy4m3NPvMT1yeLjz48Pr14GbxgzIvB/86w5Fl6QYu2830i3FXCM3yX5t7 + rFwDP/jSwX2nA+Th/55SsuVhBe/+SimVYm9Wp6vx22oqX+xfsveXgI448oxX91kta7D6kv0SM2vn + pA8LfyLDoTrlUtHrluFQdblU9FQGk767qppSK3qO9/I5Czwe+UP4Eak00D++zoDQdxUqJH5lj4ih + VopBa8DaN6kUbaVwgIK4HPNwAKDaJ2NTFmosyTjDEmZDwdAmLPlfYLtkq8FkgZntx+j8FTUncuWi + WOyEoiSXWRGqULmphK4gZiPDHP5CPUmqxQHKwARO2IYsi6Js7nrwaiUK74KEBIeOqnk+e3XxzyO6 + 9/NUK+f1+zea/bPQl7n2nGBezMCKVXnI+VjT1fhuuslouDbMqnBLPP2bJvTorhCxEYV9gA0r4Nwt + 2NzN8/Co2NU/+WLoz6fFwoTSnKuTvNlxOJu5ffMi9OVCC1X1d591SCKg1y2rvwvKlerv+FRWY/lU + 5fue73vl6u/PEz/igTuEHyInEvn+2+nt3Sj9AvwL52+8WCJb0sEKhLSJ/Etc9qnWbUX6J/BBZIVU + 9eyYmA2IL5PperVdyoD5dPDpgesdLZgW8M2Ncoxg6YNZerNYyRIN8CLyV+jU/F5ZEmazqvrwiqp3 + aZQlrMS4uRx9wv2AV/MYaDrgY7DKY3FWan17gRs3VfQwe8jzFqgDMRuVmD8WlEob1tFz/hoL6OAe + 1aYpX6K8HBqgFFOkFD7anwbdfoWV2JOUWK4SKbmorfzXkXuzbEYq72UbJv4EzFkD5dYKA51ep+Ix + v2UgPc+yvaOCfNovdSTtbysQemtXvBqqle1dPSAI3PJW2O9ORJZSIFTkRB3HW1NILGTKOROFnZwz + 8LqtcwYpV50z8JSurovfryt2MJ8HXsU148cg9wVDPw48V6K0Xc7Q7gIdC7xSXeZHygRF6/5Vuh6d + nlxcCpPJDFS4CoYK4QcQxAAw0pXIOi9IZXT/XHxdV+1lZvSfaTXjpv5ymjsj4pjzpFLk1hB04Pi1 + W83QrNFcB6nYQ4PZTH/pdpODPJhVvdwyxlsB4ZexwIcbqLgOWqKtfokysPW6MCa+2CrDF1bpJBs8 + u/p0flSEqUlHm4WOh19Pb2FQcBwd3IC6bBIwT/LkUlVUuzy0/vSCv4h+FFN8tsVW2qmsaM6eUEhF + cb1m+SqpbWBnkPkp0Lp1udmhys0+9d/EL9wuMZ6qiS20guzAwFWgZ9XIuJbwZLw1nG/peIuljAbA + ZzbFQsNn04nvTPA/PPA9kDZF/nZPsdy+53GjThV85G0m+gehg8aUKWN6N+RnUUwWRN6Lf75q3jlN + SaiBG3jFYQFPQcgcEnfPF7PbKZagSUHerdtWO4GvdDceRVZgZrGAwxXRJoUvb5nWWh9qTCbM19en + V59E1bDGpFPbMe59DDx1DHh0Fr1wo24wI6qR7VHQnRiHQT0lMWN9P5EHA0Tq2UwHJmHaBsXrqOV+ + JtJOjpzre5mAIkCi1V+vgY6DxAhYJHEPDYzutiBPImja5ZQdAPsL2LUwFvaw1X5FsFdMBXnFMn9m + ln3ugRriuQE1qm63veDS/TAgP/9n/7fP4eDH4HOAOvxIbdh9F4OcNFynSzXrLLbr6jFOKTLGXitZ + 7WQ4QYYhnblP7j4DVjGf1jGdnb0rRuRLHGpQHuz1G3rdEodaUK7gUONTYjy/X72u4lCHSQWH+jnz + OSg6wRB+cj+SpZI/6GCQohby+yqrojaXbyYTyy7xG/woDDTVJOFlPSSdLe/SERvy0T3uvqZoFNOp + wssVZodNHeVZ3eID03mRmZlJqkljQLifBElUJvhxBPLiV9go5sSVaDZVKq6nmZcdFZNRQdooB6Jh + VaimDkBh8uCTnBOc4Kb5VfmpYkmLkpzqWjUinox7TAMoxwlz5BgEm9ox9n3wSGEGY6P8ZAE8tbRf + uykWfiKYcN2m6DC2xGsYW8PesBOvGOGe0prsZ78S5zAn0iJFPmJqXV8Ra3jc8XVLTmF1t/peAVRx + Nl0ieuWIOuhG/CcBsv5MLECCaIRpuIV1gm7291dRda5XV9zn9pcivW51KUrKpUuRntKl+Ontu/Kl + yJKImXEKnv/yeQSiDo+GEahkvrwS3xaLWny8eqPiFW5WQP/7vuCuTeUG+i9b8KRqx/kSGXE/6bs7 + 0ujBiM9qD4fS58o4sw/gpNctfa6CcsXnik9pD/9xeV31ubLALftcR14cRyDXeYnLI6mDnqyB88ub + FwsGoTNus0kxalOFd5edP6hDpvYh4+pULNc1debafaStQpzLEsYjryIuyg9qLe5j1nirFM9t7qeM + QKOxds1TzZISbFwTUefx59/B7aHdnYwxGYmfG7wWaO3ujCsvEb3KE9Eiw9UWdAioCDUs4G06o0XL + BcUdeWM5bvMSJi1bzaX/kiTCPXyW9o0fFXGAkx+Y1o82wn6k/DAM4jKpThPjyBMiiNgcLTvp6iCK + 7YItI6SQgjKO8XGb6WYr8Xby7VWh3AoE/dRKfIW6xFf4hvEXbtzNtqka2do2dSeGbVM9rcdPzn4s + sHiBtgOpknavfyxi36SKSPsBpgy5fQRj0Cne4W3oTlWsm/iohmRde/OpBbEd3vjDXB+kSZIor5bp + AJtpNwHsIAtmD6EX6gTF2jsQvGUvXN7NOUBtrH0DsgvTNUAPSY77z/1/pFRWBy/q/Bf+WeXX4bvC + 8O/GssqN55XSClbZ/WKSzQ4ymmKCQSmwHb7zrtFeYW2M9UCpUEYhcTrrq57uuvDVPRf4BBTQ5h3f + zwjdoaK7DT0PQ+VqJ7T1HrA2M8uaTqenYei9cFmXK0G3sdvReReFHa0f0o7Oxl+Vrytdcgn44CiW + pURXA/j1Ib8kvo7Z4Bms+GQ6Rnx9J4MHsOe9JGDs16Dot8RL/FoM/V+SfsPlkOGWXVBxP6q213JE + Dr4EDkYklgclcnUBivCEuV2x6/NW1gUodDdmAQr1mA7Mt6UuhtYhbMI4JcUcEPXmZbYMfvunoF18 + 1RwX3iaeG0kJ7BEkKIwRi4oLp0MpDrxN/JhH4vJTYsBkMf4qd8R8MR8dWPq6l03rx77g+3n4iJqF + 2fT2QOavB9ULWod9CoX1wJ4W0ljEJNIYZ4m92Zlet0QaE5QrSGP4VNYE/u9PSSU9jvu8jDT2nCV+ + Eg05467MuL7cykzeO5Da12bErUgMg7tnDoLK7GGAticyTmOt3R8bhrm31Sq89+l/YP1AyESIfBEW + ud4us5VEZ3p28eb6qNjL2iiYBVKW+JZy4aw6CXY9uJys2FLET8K/8tK/PzbJYabB3LIWJzypsQp+ + wc1Znq56NHAvMF2yeao2c0MW+9VI2dt0ltpT97tSp4JyVrSDjrTJlWWTThJEsRVtbSAtb08zJzP0 + dw7V+TvtdAebanSzKAj6MHPEEhvVqCZ3ADHKJC+vWwchOAhcimM6GG/2iXiWA84CY4UOSMPwAkLo + 3N6mq5fC9ochyuuH+4Ppik1gcriOCRkteg1yLGxQYnK9diDm2OBzvZEXnEtspCKr6408xyAXWlZV + B0IV0ekvk0eJLTqkOz5NXrCOoayyja26orowlBX5kASRs5PrtznAfkGrMP6glPnr5djznbX4Lyoa + DI1tPanwXOndAo5xCSLhbBfkoLXk+nTq7LlwW/hF6b4dbbx5z3oY0CD2bBm58ma6WGFVAk1yJ2ZV + H8X/HqOGH5CNTbKG/c6CfEPBwaRpsEPDEEIACT2ZYR6j3iAT6r06LEuM8r9ZTGwxSmKWFJv30+gJ + Vkj0uQxBNnhau66vuDUV9Lu4ckPfXsmk162UTEm5pGTSU1IyT15fVhIavcgtYbAEL597SZS4fOgl + iR/EJtakWTLFkIYFlIiRJPXx/TsmcT7m48VEFuEQ/D/BFm/Y6I0rADx1JXPSAE+yZTWZ0azrXoqZ + Sn5OrFMBVDqOGWMVNWdnBG7oM76DovOTJtvBDaEjQcIwduT4tIg7s+D8srJzoi6yfInszqRd01a/ + XeSrZGG/Q8wVvW6bLOxXY67oqcS5+HgeVpOFy1Dx4ctR4Ccw1cMAa0BInItTjdfzcTa9lTcGBeIq + FhMOTulf8JJATjtd3MbLY32br/VTrqwo8O+wIRQ/V8BqQOVZBJvQOE2XuTLOItdL/Io5pa/IQWFe + HpUHaWb9lqLuz98N6wbonGoQKHlaclSkRdMsP4M5Ay19A5f49lbO8dEQEZXolkEhPgNaImpWNRKm + B/XZ62IoPHzBFxD8v8q8QQW4+mWrD7H+RGmoFhCq+ZjSlchhWju4uwrgqWE/QRGJUon1nMth5JA+ + e6n9PcUi/F2i2vE85YOonr0KtUepvKlYpS72EkTRCzfsojTqNrbFXlQXRrEX+ZBYX220oipYW9Ah + bd8r9or1YeLYcyQAupi6i5PL33//fTBO12PMxN9fDwxDvwINC6whnS9mmNZRhgpoCoG0jo/AGgjY + HBdzTvzoK2KtISPpRbP1w5gMO7KwMM0yIsUXKw3/qi5ahfLYleeiRDZnY3m2fmfKEvtGbjmR+WFF + 1yqYZN8wqT2RLjvKXPZ+xv2UMcvQWruwnL4qHGB9SWPJodc27rOnmdb3CVWCjWqJ+6Od5K1X5/Cu + 2jeTTzBA+5aC2LeKg76dpcXpoK/oN/Mq8grsqD4BK52NF3cLmXIloM7G42xJeOldbMChus69s/CF + QNi3v82pie1lLjsw7nJ6RhrQarnmgcL48N3rmrqT1zxwmv8iCIxEFKObhDLyt14b3YfV7sej/GIJ + zY6SH+chjwp9ojVaQDzk36809AMEg57y9ynB3iPYgcZY+eaJsI1IjCJpB+uERUyvW9rB6rCI6am0 + g306ZxVl3YsZrxjCgihww2AIEqUQvduS/O5XAqO4rHBrABt9v8lSY2+289upWWLM9fhPMmM9Ssqe + H0UKc4S2ZDGHR0HHWGaZqM2iA7IZO/NeuF34m25jHZEnuzDj8eghrb2aEuXSQ9ZS59AzyKF3K0lY + H4kMPUdJd3fPWwq1sbj/RPqOjMdf4YHZzrbWeQB9yYY96fBPLn6A87iQ393Rq2zNqxMlXSR+1DGh + SLexlS9UF4aAIR/S8VMh8hq/DjHPV4tciihaAna+/HY55hXbgRoEZh/x2FeZFGIznn04QdDDmUSB + GYG0qgG/6OYVN2Nzlb0OWEp/ERzxDm7zPd365BMmNtUSR74DTekxHKq7eaE8RbGrcjDiJHjhJt1y + MGQb2xwM1YWRgyEf0inC9b3LcBejB+jTZWETFf80+DxemtHhW3jARb4FDz3HsbRf9OfF7VXN98Io + JySS/UW8w14WA9dVKmzTXPahxXt0JVrQPFzh7hBhfqD67sYSrMWcvQO/8vCcWknI92RBVR2mf8Ck + KX7AJEKExzrUnaTXLREiBOUKQgQ+JQ3o9fWnCvSX51URIp5HYQji6zAKE5aEkn9k37LVuoiii9O7 + NosTb+BWkRfIHWgW2fzPBwyJATEUA3NhVtCjXXhJIBlWoTeGg2LWC+pdK8wRz9DhiT3lBPStiyG2 + Whci3ez1elMFJSMOMqvAkXll8AetgnHmMjeJD0ZfaaJTnA49EzQxdaW/sV52fRwB4iv7IUvaeshX + pZZ6ECZlFBrDzerGCfxfWMGIpg6EnxSIorfzSkhNdVumodgaZ1afpVXX/KMK/EM+NGvbmNXC3abA + Dt2P8xfa6scCGky7oKkEpyy3NkhXotViTF4LESqQ4n0tBjDP7qepgyxBa/IeldsG3sdJDpVS7zcJ + xpHe1nLANvhomZF1ZUitJZG649URyYu3drEF0G4+aVYy30EEa6HZPMKI2H20rcbnitK/vxlRhvmR + a4ox/AWy8eNUsi4QiEqzWsPO7L4k8vJsbnEb7BRBPVlK46wNhLRd9ozIFlE8053gUjyZarsfu+08 + 2MP62l1NHbrwlDa654wmoSrPNKIJg2ZnpiL7JBxDiaG89IEZ6HMWcnOBWndmTa2NWCcSeOfJCzfu + ZGSlJrY2VtmBYWKlZySYLue30oNUk7bsvPtwLjED9NV2CQ0cbCVw4P1AmGw619TsAn8htqqyLrVW + 17R0XPMaisV98RMQrO3suj85m7jVEh64dOIV+gg0UjO4ytbTybbFMNAhXqWX/OI4B5333nqdgZlU + I2tgGdWJiSwjn9I5u9neSNDKvEavOmXlzJnxXTb+ulxMC3UNXkFzB2kIQ2kchH3l7hySDxO5ia9a + C/kqH4b6FC06F75ppyCnd25P+TZ95Mjk9tAOySa7MmT+Ook3+9eD7COGMvZ1LZUgfuGG3WqpiCbW + tVSoA7OWinjWdHorsXXqC9ULBbJ4ZXpe3Idrsp+YX1l4pM5xfMDt92hBdh2GQGJD48fsCNejtKVq + LEFXOpbR0P1X73uaJffUPY8lSYt7t3PkDIgjFEzfePq67x3FbAKN6niOwDxRN1BHamON6Si7MCEd + 6SExHM290+VIfVtd0m/bezOspqTNaGUAIjUGjJsIpGThsjjn9+lqVKw9LaqBVAotDRHoByNtClHA + k2xcV23J+hT/rFo6cNYiXQXHAkf3r1AOZ78M0f1C9sLiIsEGHJQ34H76T7/lZw6Omz1EGVO8JdS8 + xe0a36HbWPMWtxLfoR8Sb8kztLLtV2i/0DjYILacfX4T8VCp/0VhRhFGaQbEEGQYfQVK/TIovZ/o + Vu/ngu+zPC9LKFlH89mOgVZqd2s8ZBa8Sbqiuco21sGDsgszeJAeyjpv2R0r3KELkI0xZOny4t3Z + gAWMhSCGyHtT/u0aW5RfQDJC6w5j3g84csI8PduLojBlUNxpxu2r+GLAXMrAEHx2TyJh4JLrqgWw + 8BA8ol/jN/G94rFYdlCX61vuNs3b9fnkmJnHXKoj+GG7ZG40Au7UyS/UgQU9BhhpLMKe//j9ymUd + isPR61YRIpJyKUKEnhK3urz6oxIhwmO0uRYjRLyXz/3QA9Y/9EM/SJiJFbH4ooPIlZu6DoXtcvWg + oNFWDx79Ky91AXvx8mrEBmPYOsITjlVTZaVlsvvKmV7LaA8gUo32yH40FsIOonJZkTwQIPECzlkl + jkKp8a2h/H/B6jstC+fghlDxASyiervdDDa1nCmgMDxzfTqh5XSi0C4wJP97LQ7eyZUbBfYHj163 + OniScung0VM6eO8uzsogLbgNzarzHhw8OI6xFw05TzzmtuempCugX1OASs5W/qx2p0AvvG7HPamt + +w4tLsCf7xfzhUpzRDB1BawnKulQ7MWfCLMAzOXLdLXewJWXLXHDn19cGqAtBtbjFINqJttxJhAe + YTsshHdgpgJH4b3tTNSHFqgtCKQlYkYkG5ustrdleqtM/EYU59uNANoazIAzFq6/R/gqvMmyFf4t + HXxZbFcjARkj1SoUOotbc6jzvzD2B16Q35BNHNinnMZ4cabLCTEurHy/DWTFR6onoX71fe4LiZWR + 726JBbQzM5bXJmm+XZxl5McwvvwQcpTMcv6pmdxuMSpmgXYk7mPMUaIxaAFi5hY/phP6A7TbKueS + tez6C6qjqZnwEipL8Q6Wx9jHj0vQQtI9RG7TSrAsE4rrs6Cl2f/TPBASaEjwHPjG9v7XQ2UnrkIx + 8zpIpvS6LYqZV5VM6anM3ry6rEBlUzR/GcXMi6I4GnpewqOwiqFvpNPAnBSSbSQI2WpZhaG+/te7 + 364/vKkFTgoD5jcAJyURD5MwrI8dJnNxoTxLfURulDQErCauH8dxA/EOgckMJo75SQVwGi4INOhU + E4PqoI7r8aJDHjSF9Rqjzwsb15WtMYCgPLOiXg1FEwPqBkQjcUOqJUQ94+r6tL4ruQTZ+pggV0Yl + bWNgt5Uc3K05xJpHyE0e1XPLgAndzKbrO8GHYOqK4aZYmEwPLF2N76abDG3JNYJ1W9itR6y+sM8m + 03VzilqdhB2KxIDfdlXP2ZFw9hfJaKu1jHaMJmv3NYIYhE3MfBe7Kk01g9uv0lFdrPLPt2gJholN + ykzVclUsG7de2AFlVQk+YAXn6YqSgmI/FNw7UgNqu+qbwor6CavrQ3xxYxlBZR5E2KmdQ5QFw8c3 + 9708WmU2JYwwlVjJQArsFriq29gmVqoujMRK+bA5YrX2I02Pd06aBx7cWyrp+HEZJlxBofTIFuHJ + 86F2ZZxPylL+s9NS+8gJcGsu2ZpT0Y2mbyzxHofwp0f2+l5ApnflSM8B9Pee3d60HxEo/8flFQsj + e5xZet1K+5GUS9oPPSXt5+L1pyp2DUbKmOpP/HIUR2Hss2EcRSGX6o/3DwkBtkiBYzzM1tvZFzQo + aU11SP+Erym/+oBYRfT2ZjHAZ8IyNfL+MQz+MbqZrnPzlEhLW2WZaABS62C7xpkmyhMQwaeoGoOK + PEfcq/FCl0owU+BUd6j6ortArCfSxpBv+Lewi+XVtklnu8g2rIp6azoBTXWIN6ExM+678Ne4rA6V + pmVUmcTBs8InHjUUGQ/dJjWMczi4UTnLsf6jDYUoKJX7ubgsanbA8UskayfYsLNCo4bJUYN0/sZb + yhFnTSlvoRcxR06KYE91tKwsTbhQkhmVO22xCzZHpfdiWnTjkOggeulCwSEcbD5NXJKvC996OFWW + eKRDYZHirDealJxVt67D8qEfmNtcXCgPnTlDtzuM+4lHEmEeyYSOBeut0pf1GJgivV5kqnY21jq5 + rB1ZHhml0Gv25bpW4mb/vTy6stavrbmPNEclJOXZTskrLObOO6Y7qVbW+U66GzPhST02waNmD2vJ + ce/MNLs68KjGl6+zjQketYYHVH9bguD9RaxmBCLWZjzqogkCExxvVynBmPZql2tBmw+DSBwEtWit + BckrgEJW5byr3/VL4r9IMTorJjlX5nC4B67A3hn5jhBAaIWrh+TXZ1zHLrkt5dYYyfP8YdTXYP0w + oVy8Esdo7eHZW+//z96fdbeNLOnC8DX/Be/aXkW6kJkY7SuVPJ5tu3QkV+9T/a1e74JISOI2pyZI + 26pf/0VkZCaQGMgECdly9e6hLEFAJJBjjM8z/ocIjV3eoAk0VGknvgbjY+HboDMan37IFY7PNGLh + 8emrexK2Fam7QYoF3QwXL9ZzkidxNDzbXOuMgyoAn2kWUYC9iGrTcIbKbarAzZU4urqEJPsmszdl + zx1f42y2rNMSan3OKfe8qQe6v5VjwL7ParhHCtn2yJDLYNsjjLGD/nH3uh9XiYf4RljR4TkSIcBS + 18b0CYqdqUTzz2LJEN+p7pWecS58VU3Yla90UUFFbCd+mUTE4F43femg6Y/8fHgBQgYoSVaPeIlG + HSdPpn6oZBODplXnqnCw+TtK7LAsIkVtQlwUtGt1s+qMse57cdXCvMPaYlcLU/A4bghG6oxQIj6S + lXlj6KgVjMMtvIiz9D6Leo6tCf5OdbwtjfdSBhxz2mX0XMyRzyr7dXu3ychDU14j3UphzUZ2XC0R + 1SzS2y3SWzwyT0l66i9rzVcgSA47TXfJ3Hkwvncbh2t++sLZFB6liiIt8y1MGBD043PdDLcGS17H + 3cDnzTPO6rZqwta26SKdciUtAsZqOaj+XpaCynPkxwak14Xt56HIGRMifPh46Qn/n+Mzd3pG9YAb + QaOWXqVoVNdJZbj6/b2dWw/GWyB8USVp/CVMeBB6I/gnDsL9ufXLDbTwdZzWs+vN0VIBGK0Ca/4E + hSGG4yEKeOCK/Nwnc5WZTLFVsdzRtaie6VSxXHUrqos0KcjaH29mkzuT8lEYxVQVU69V5hMCN/D0 + Av0hGRKdcA919yc64yaI/Wcs6AZlrp5xzbjRTVgZN+oidX8Kb5ujr075HPTvv178aQ47bsmS6OUq + xSZJyDC1lVUnNdoN2S0hNp1reK1ZBjdm6607AUZHKzsIPHognU8OKk2O2COJ52le3bgDUjXd7sqr + G9eRqukqbdmffr+o1SH63Ge1LdsH9djzRwjcm6hyqLNlCYVXGhKY8bJar2a5xt2U5K2lAhr4I+yR + iA8GekgmoXQx60Riv+KMkEU615ss/ZzeUlh6k/1rNVtiN2NtIumH0xlMQxjxazgxpQxMO5bZK+nk + M1zMnqnT49Nq3YJM7Z62HUJnBZ5Xy/7O75fpGn2SC0nj1IAgHSVB21EkWBDV4Z3xE+z+e4JprKT8 + 3f8FndCS7iASFru8vjmrsCWM4EMHl6IGVroDj1hLugNsrnB++w0i1fjKM5yGuCIzbOuR5tcsZWir + lOpfy+nVlXx10fK+CUxZsHpqGR8z6U+FdQ6732xZ74IIhqmtC1gQhrzaBfZOp3Hy2hvAsHhbA4nH + oZP/e/Bq/wrD9I/5LPsiF9cmp/x4HFmZQk+LApbbPEu/4BqiFTXOM2LVlDXAlTWllpBJ6V9LqCVZ + nYZPLzOcLPLXfLfONpPVbJ5JMNgX1AxuXXI1oB2D2xHNs/yFBvQjFub020yumw3tAjga+Swf4H6k + laHAE3yguql+kDR3r6uzA+YiAWa9PAEDqJBlIkdNS8DpROoq48ALUciueZlPd5Jg+yA4eGvXKdTt + +urEA29v/UObSFxqNMSTGY4Bpnw3rk9nZxbzggqpTSnzHw8lDejoCjUOu7l0AzZt+/1olI8RCry7 + bds3jcypib8JM+xS9tl6dEEki5sF7jmsnca6H8mnx3gORGUCufiP7ket+6rigrOL39gZ854xv4up + aR5ytDWLRsrGprlK+uzr8fXqW0F2hoRm2bft0CR/PB1Yd4zAvF+mi2xqNyBxskUkYbK4r1jMlUyr + rgnOZQqzFrCIy3/tbs0+h278/clbHqMikII8Zz67rXiVD0oRXhhZ6IxqXoxAD59NNRHFfjF6TAug + 83OwwzuNqHrEGeicGrCBzuU1GsuWksFKdYhD+YhpCsc1jKNHlXz0aBjvHlG5S39Ai6fWwPTqoHM9 + DJ0//4fV1Li/4f+mmh3nXumpDKifIE7imWxU5vsdD3H1iDMEIDVgIwDKa+TK+jxfq0pBxDvPZ8vx + fPY5M+7hpovDf8AzA3xQeoxjP1FA+6SILWYTuG93vZtnY3yNKRzgX3R87tjxO0Z4ezT3FB/oUfbI + kdteHPmVj+6638aUCFiWUOLcOiqOHjBO5ROSKWA7W39Py0ZlG8D5d8puFkXVTjkksMP22134Axkf + erORKZp/vr30/A7+crrdyV+uJFf85XRVoaOcXbD/qDrMWYwYOWWHuff8F+75QZKMuBcyX+yPcd5t + oIE6flgj1KuF+uHZZH7vrkrVdWEShXWwEVnR0shiXRYccBv8492ri1GrcOP+tGXbAuNEuAgcXCDU + F9hUMPiwHukVFRHgy7dnTKe1ov8PEcFkk2VAsOLL8heSkjpF5ELGh0apr4CT5mv47UU5jQlkS8yu + WT7crcdKY6YCN9wncrj3bnY925Yr5PJdPoGtFy7PFepi+tdqnuUwpf4RG/QuL/F6oYKIqVKp0t91 + IU2pWY8Ah7hfpnY5WevdsV9erWf0DiNzMP98demFgXsFMt3utMMoyZUdhq4qgMLz91WAQo51fjZA + YfR8zGP4cthg4jBhnDaYd3geysLM4fy+CbxutVkUkdjdZIJuVYqz3c7vV98k0xN10cyIGg3T4efs + Hua6qgtR67H0hGQBqi4i+SE2st/tZvV1ezeEv2fbu3S5mquARAmqr7jldr6brJAJUm6S7yZz9nAI + i7NKx7VUFftBNSBk7WJBwIQmnjW7YrWb7KiVZ/PAWjSpXgJjy/978Hcc1QHK0RujF4fRQPUGLtZa + l3X0rOwR45BK7CUJ3QnH9OYaJWgYymNepqf6YZZEJKf6TqfwV5zkjOgt99MnJ2b7EnxweS0xJISA + l1PhqPfRJ4rKcjy/EOw3ZF7plNdfesoxrafUTDmxp7is0fLXGtV2j6uUsPG5HzE/EE8HxPQCf9DW + li4Q+pBNBcM/CyZTgALPf1R+0kPQZmGDm+mwx/LgXtKnV7RWInkcMlm7J4FRkL02xk72vfvTe8D0 + 3IUcCHp+/zjrUYQgQSJ39KvN9bjpkw9Gbljo09I45MM00jsmn58ivsMOSQnMH957AeuAeSpvd8M8 + JclVzFN5lXbDN2fvkc+gAnoaYKJbBfSURSxI/BGLeOIpOP5PrfunhWF5l2mVSK1UaFSuBpPBll7n + mYKmvE3n6HfOQf2aLaW1mddQMGVvm1Dim3Tur83deFElBk3VX8UaPT7wAysIm0i1hmux10N+Nahx + YRjVM+W64qRacgod3Z50mDkke7MFEtUTkY0WW1Kto9Bjwq/i9Zg+b0UA8lgbmFGzxA5Hlp3KZiMN + NbQz+Hkn3UAuNoPZGrBAHj8+FVXqbLO9pxoaFGawXLW5PpvYB/IYqIp1qahjzgZqoCdnmHlMnhX1 + OfpdJbZnhP0Eel5PlpgQIRUp6kzIyht/nh2AW6+lln+HOExPIIp92XwncfP1jcwTkPrfrKPLrbV2 + zrhbkH0I34dSlHDyJatZp3biveLq2BeJR4RI/wdUotjd7Um3O6lgSnJFBaOrpIL99u5TWPN7ct+r + FI/x52PBQxbEI8GjCKuhUQU7L7GqGQ4yLD3ACZYPP602fK2Und9m27DBkfg3Kia7UkY57EWffr88 + 58Mn8vvH7/NtvB6ffVkx/A8ff8onjK3H1CHjq/mC/svXT9E3qH3644Ygq+xaHRjJS0Twpb1ZorqT + QfQZ1h8mGUzvlymMUK4TkNdYZT37CwQr9yC6DaWwr5gWRxEGLPaRc0NrDKCWS5YTFgRx/byQjytx + XRYSYhPIhXQINL76XRhCWJnAaYcGWeDJ867M7VR8/Gpzmy5nf7UkPe+Vm5AtCmOviq1kX6fbu68V + dt7CpfAzlOwfMMApkC9fPD0htnUKBzdLBFc9D6uuE156T8x2iZdUsmq9ThWcxVMd82q9SWNirae8 + jffrbaSs5TcSe2VA/wz/xD8M5J8pcZaxfkg340TOB6Ji367M9NwjsAOAEcUXYKeTfJ7HAQ9paREn + tibKBVb9Yji1+ymX7LGt/aHYEylKT1CHD+xCHfCbTtrPfhh6k0hIN3/TF1oSpusESmLjOzWA9h14 + 4qArkFFB7PtLJjx3PZRud9JDleSKHkpXaav6r8tPtYJYOKsTWw31n499j0dJMPI9H0xX2tver76O + 05ub2RJ7UeZnltMRVIC1ckS9qBjNpdDqDjSpzXAOQqWsyQp6FO/JsetR1H+la7ZuzlclZfe/Ntt6 + /Wv1jLT0UuT1aY9wx1ESB6xWtzqvfTe+yaEsI/yfyLUxoxgfaMt2pMW1As6mBgaPZ9wGOP2Mb4zx + PvKF8HmKiK6OJo32dCi0oce7CqIj4tA4uprYAvdQ7daZH/Vqgy4KZKul/yjSqnBJHejdOi333lSp + VlodEQf1CdFR+PfguwhjOtAr86OPN9WnFlNpqcxLuqSl4u2OaalSci0tFa/SqXX+6UPNecJkhKqS + lSoEqGh8JAT3wpLzRBaIgv3Zisg8wnwYjfyb5TLncrrLhhGXRvF6NZ6UxTw5v5+w9VMdZFDq0Ish + 9Bw8+j+7mexYOKeWmLs0l0hzM6lLmFwhOsHOt4tmbw1qV/bJxZPWgFKUsCRk1WPr/1d+5f92Aq+1 + ji8eVb1DozIphNWqOb8aSwGtQ8sP2yNjSuTgcY7ZAKehyXZlARI6IEYwoaNhfuz0fj62XrfFwVHz + kX93VFVOzvIj5oiTwdKn/ANRj8cHH633TaL7+cd7lnTwOtPtTvumklzZN+kq7ZsXn/5h75s8ir04 + YpWNUzwfgwIU+aMIJrNS9i92Wwr/1OH+1BJXPnnayC62nx8wf7XSZAsnji2lrAkn3EtEFc4Ecz4Q + SDVrVq9ZEPu2sfDmXXkDjPw45hw2K+eeqviV83W2kc3v1tv0s4xKF6Hthpd7gaHdfIYpLSW8ghJC + GI622Z5AKyYsWlofDcixJ+HGyt6Rght6sSapIStq0Kt7AAe//JkHo5SHpFkl47WBPU18DygFgoyC + k96jz61OaKxLOImeeX43bHn1jCvWpW7CwrpUF92xLrUUxLpMPH4KlN5RYHgJU9Ve7z3f76BWy9vd + 1GqSXFWr5VXNhf2x5gxiURXQEtRqJqBnRsyXJot1OhiDzhgcBj4Cr5B/4eUfFxymmiw7ogon2Ik3 + WbYc3sx3CJGEaDUFMsWb1xdPx4T2bC5a4EoN/grcM9PhGk8MTEhRZS+mAm0OH12vQOvkKkL1t1zS + xTzGk1oB2iMIkA6KgiwRDjpZ//0EoR6xD0GvvUDvV3FH4lf1hOteFVdJX9UlhTB4dqYr/gizf1C7 + Mrz8cs1rNBexInz1wWRSkB08NpBYm2ydzlxBJ4zjSogKS/U+KukuyByPP3UqFBQ32shUYFpu3XWQ + MCGtoQwrj8MxTReI9phvZ4td4+lwKH/ndPbwHwUTe1zeeNyObNYadXaDVO0Rt8tAWd1lCDF3grIp + aFs9VU4PWmVPaOwPQG3yQKQkCQsNvkcQhJ0RofVDzhgfuhEb5UNdVaVL0zuVS1DUOk4zOSagQEm4 + NALEWoIW83TQdtMViBmgLHlMhImiletc/ee+0/dbWBgyyh8qvm9/YmsDdxwjfcE2lnWjhbk6KrUB + W3bRuad0xmkxLc4Twgaqvy0iZs46nqB9UXf+GCaAQoYv6uM5Wy6z4/OqIr/6WhXPL/W2PnbevTth + DzuB1SRm5E512RH6yI3oqb29fZ8oBFMzxScK5OfYQ6fftOmQR3ukjShR8hZLvtEaPX87Pn+LYYLd + GnXT6Wq52nTUlgIvDOX8eH328nQcLTdpe49GU7cmwk51a3C7a90aSq7XrcFVOgr//PAyriWrhF5Q + K1vjoKj6HMFoOGP7wWgWc5BfdwX05qp+BA6AC+UzsUqlsjmhAcNLpeu1BssuwSanBGxN366SQv7x + 6veLqxKAJ+2CX2fbu+Fvu6ng69HwH2nG4J+LyQT/QZlvVssI+jed56thfocvDKcqqDppXf6rf5xX + pb8Y3q0W+Ol4z91ukS6H52/ejeEsH8C/+I8prfI8Qi7m8lgwX1jOaK7N+D31uT+DqeoHCXGXO1V5 + dSnA3pu76ylqNxivX5vnhJMW4EXkpCjwmkd62GaIhH17hFLwYwCk+0poZlSZ8o9LL+mwydLtbjFC + klyNEcqrtMl+eH9RL0xJ/KQaIvwl5KEvxCgUnlRk9m2ynzcgv2GTPa0M5YSa28dbzlJ4a2OFKvF9 + gQspBGTIZvc+9f35WPcpKNzTYFaiQwCFbncFsxL1AApd1dm0b2oKiieRR20wq184Z7EfjDiWfPH9 + ayeTjGD/Xjtd1g7oZeF3Wzs6iMApL+7iPbyZe34H3e40/5TkyvyjqzT/3l/V9+6AB5UAXvx8HARI + mjGCIysMuM7mRn+qNG+vpcNI+qdlZsJFNTNAzsz3+br3ysKSJNs1UJHWmvvmBxF8WPwIJ+fFZrbA + 8bSU3myWy302Hw2/3iHtWwoKK7zmbTacLRar69lcxi7hD9q4g+FIt5SxJusQMZPzWxkaVmrjpVod + UMJRqafrFzOEJkCt/Gq3Qa18uQMhFKDLpXZehjyAF7z4DHr8r3+uP8NjOXHilvAnVZldPsCJZ3hs + Eh5QHrdD3dAe/ft4/uAfwCjY0bHV3LTf4J9c7bZ7/VkNkgRnXJ7JenYdPsX9OLQIpTvUV1c7X++G + lO324ZLFHbKE6XY3dwFJrroL5FUFc3P+n/XalriazhCAJisiP0lGoe+Fnk53M2BfyjS1R+V2fj/B + xJ9ppn3bJR6KkZ0/KtdqaiBWEHlEPQ0TOhgxT2U/wkoYf3r72kIgnOXDApH1+n44z75k8xxlFD/V + RZRzWtUkJuSbyZd6fYz7PovALJV9tegHyx1Y6pZtO42bLyKbHw1RcouEujgWHg+qCcXw1mMpnGzN + 1W5ZgAJWAWwi4e1J2GOY+RjKjL3HPtgOQzzA2W58IbFH2X4BeQf0O5yMoqJSm/YNwh7Z7Zs9S/zQ + elNrBsFtSJmo/yZ512QI/T7fZk07dA3v9m8R+BioNWP3k+PCc3q7/qR/P9e8z2NP5nriKifr6RQP + DBcqSxvGqkuWNt7umKUtJdeytPGqwgb581XdAxP7cS1J2xc8EuHIF36gPTAfKyg9q03dDVg4eUfD + BQw+fL8Ml8JKzmQQQ6qKL/Mt6Hy4p+luVJl2pJ6Wdsy6R/HJ5XrF2fppCZP84u3L4Q1IwYAO7Baf + Xr97d0XkFNMVemgtDXi2IJ4+5au23r7k4FQQJ/dZ3Q5xMWrL6MN+5PksqKXvVfFrSv7xooPb8NhY + 5fBpbsycbC0ASw0u3IvV3PLbWqYH4/xQu4Ous8SMYlofODmcaWl8R4RVP1mtJWemBvzBBjKYYZsU + rZhxni2Vxxr+zKQWKYtGR/hZ1ynSKRKaTX12WRNwgKvF+Mz8OB6oTpBmv3OXdvGK/6wxAyeHSFfv + +n7KNhFRnk7b1GpaRV3629nn/h1KL2HoSYcxNWjT4R1Yypg5omvRWgU3nMZ9cRZxX/tFA3E+Puvi + GZUPuPpGSXrdOyqvq/qjd+e2RZZEQSCEVwf7D71E8BEPmecHB/2jgZiM09oRgH4HjZK1wed2813V + LRWLn9jLGQVckJcTvkN7Wupf7KiXdhJxwAcSJ+2yfghYUZ/J4twki/PkTDzzom7VLfoh15Rx04iV + Na6v0tqA02us9wZd/fUHH+bLy48XZUQzvU1e3YhrMIR0ZL2aTm6axGIYP+RUmyWS2Oz9CF2FR2aO + eppkz0QDTf6WtbicOqSIk99wcVL2dSxiOV/Kb/kdz0nK4ZUDMPyDH9EbvcbWPBHLr7mZbfJtaZg0 + /JHkQi+SyPtg0wqj4tV13uex1GGU0HHZDw+ki7S9x6lMEf7z5SXrEuah252OUiW5cpDSVTpGry5+ + j+qkOcKzY/QifD4OQ8bCaBSCxa2pYj8Q9fzYYHTqTQGUTH0E6bOt4tzChNOMAPsKEhaFboh/U+rq + CyRFX6N+j2qhtCDh5DYbx3SG34T4MOrRBb2ROtCv1quobs+Vmn6CpsNu+Hq3vJ09rRh4zA4M2QA4 + SRT7aB090JFeekXDCK/e1Zok9jtHLOB7nKD6nQffcdjSTsM2kLNR6yQ8YEyyLPvE1FiSj0owGobw + KLy2xeKTmnw79bLdFG/Pp80mzSerplFwcBAO1PRpEHM43KR3hkjtDJ7fIeRBtzvuDFJybWfAq7Qz + vH31gdViHl41Agw7wy+gd/PAG8GsZn68X8OebqCB3jMQHqdOzeEdVeYAV8e2tHDV7OwcDPxJYpCD + 3qzg3qxWkwkXdDhm6XbXTLigfszSVVpML//82JAJh4hTFT9sIAIeJ6PAj4IwqkM032XpF105ML1f + UjF0jWXU1Elbe3e6TNd36JHK19CLcHPhO7EBIvTf9aY3KicxaqpdSsjVt66gU5Zb6ziQOQV6px8N + t+hpkySSK+uNt7O1RHe7SCdMI02/vF/uSQeBbigLqFRWs7YdgweguvC4lhxyjNySuzdhgQDruSZW + 98waoTCvV9P7ikAWuggs72x7/MNRmzPaEmZ2N1zN6AXD5ItsY8ohYTjBoM1u68hKyL18XAu1qVaR + y9t4QdzkluddqzInvLACl2hHb2GDYEFcbcoYpzMw8ssN7NHAMEx64HsG/4uW8wC3PeNQj8D6V2Ou + j5SWKbLXF2wMUY/OGKfJ3MUR7DECo67gmd/snXydGlDZOZ/hFFndpouu5U298aCXlF5h+WPMlKd8 + rwr3+H4/vcdJXU/Bdkbwjn285Q+issSqqr20zmhtlSsKDs+vPojXVU1Cywnj0h3CU0Tr9U9wdD/9 + /LzrTbPkASjWTyi5KIScXCjvWt++V8pD1bTzxOTFe93y4j33vHivMS/eU2bp1Yff6v4queSrefFM + +CwYwT8yefRQXrxXt0r/Ptnsb1XsEEZrnW3wJ9Qg3m7/Yutf3/Kz8Vv+G6yyRbZ5UU9Bw1NwNteE + Giqr7fwOHh2jAPlsUWCX5kM4gzZzVQhovljmgXxE9GYrUVj6iebpfT78mqWfhzqSr5jgP3y4kmrJ + dbaEOTZ/UU4euJvd3s0x02SZZxvUdM7f/hfuALObAfxUIkgWnPhUu2DQtBJN/ACgE4UHUry48UV9 + X54MbZRzkUhlQcejj8mMEp7BxnjN+DMv6gaNQc84I2OoJmxgDLpI+4KCKyQsPsIxLAPXlWNaHW4t + t80Dn/MwIaCMgGL778dKCizs/H5JG1N7xqN70Os4+d+DAQ42apJTwoo84e0ck/PdeRu6Yt32R+Ud + +oSlaU0vObOwq3ripTiplf3j6lPMvwdZfWBHGuWZkY24vt/MpqtvmM+pdKCuSrDeuKgw6+V72Ac7 + ROzk7W5+eZJc9cvLq0oBendZd8uzsOaWH4sojAJ/JKLY91VhlpWjl8/mMGtkuf52+PbD+xH859JU + TWMdEZ69GwSiUuG02aae81+cS4U8fTDZilMN87twjXDOwqS5mhA60pTfT9J1o2yvPfkmiZgX+uKQ + bOmLgVNqVXyOHYngbVpfgu03+P8KyM5KSMNrE8QZrM8ad2/1mC1Jk0dxWxYqKMUw92rI7VrcNAP7 + d3tvQ3FZFRW+7TMry2ag5Ua6U41+WtdQfgXtzmgrNk+vaM2WYkEgIha3CremrSouhoWN09ROXq3M + icLfx0MfhsFza0H+sh3Kv9wqrjn8pi1sIXs8jn5YZYMpPjAJkDLPrXkz9+3u8+PvKP3iXeNkN8Kn + q931PBujvweV9Q1q8gooElN5lqulyg5awWrIltPxv1azZWUuQ6te65TwElDjRVDjs8llRUvTtymn + JbyFTP7GvF3pwExvq+0y4cVt8xyWUBKG6LM1VsbHs5e/DIts2ablpEwk2C23O4xOE+Zm2SNrp+PO + ZzdZvk6XL4ZkCW3AXpQk024btGSqxtk/X012+QuTqAxtFoDgSGcyMy0qJM+5StIZ4JFiopZcYZ8w + OtHbFp48Fg6Fs7V6AJ3saWFLbcWWR6SLJKlAtoxsFzlSFTp+Ejk5EXvATvXkMHRdY0O9xpxMVNyP + W4zMFaZr5O35D83ifN42d7p+vh/vmYVm/3Ie96MF7nP7PepUfdOAymxpgOs3u9cx7/0Q0LRob5LT + urnqorKBOQ9/P5C3xrrwybN+hObg+sJ+4BOM4L6qkw6xAJWavVez/j5Orait5zq+xhGCDmS8cL+h + ixoMBLcX7Ibgb6ZWHMphv3z18ZNbj/TDU99P4k6fcL8UyKgLKsMkUv3wGHQcWWA6fHK920ryJWJO + yp4O4c9T0JcQ7X+2xGGF3W+adQXMjsCuxkdACRzv1wE7BbN6kbt3p+IeRZw7NPDkrRj/g/lDnST6 + 1OlTTk7ZMnISWgBd3zjp/MIJzfhODfnQNWHHlgLGaVF8PBY2U3DF8co91oXjFW935HiVkmscr3hV + wWb+41UdB4NXqq6Q4zXwkwDeIQg8nqiqq093pCfL0uoRqqzjbXp7W6ol+Zrmho1jqmuEywAKOmA3 + 38ArTdYGjtIKWpVQlp9MVtnyL/jo4f99WjiaMUFcurZqNGwv6mQgsNdjh92kk6wZ0qGCEizJQqis + 1AK1LL2V5fGm98sH57//36SgL00IcyEizIW2Z49FXjhSaqtOfazAfTp14hGMTApn7rWs+qLBclL3 + flpI6RYwn57BqY/Gi9YbEQEb/IY0mu4bEd3utBEpyZWNiK4q2s4PL6tpACyR9A5lLziSTQegiwQj + P4gFU8npi1RmilnOcJiFk5ksKbQo3Sk8THyai2k9KfV6NwUbZfLZdvImImhzZYUiif2o5i1GOdvZ + uiqmNdWgRQySHWHoZz1P/2cn96tDaai8zekWhzhNvPZ02b2p+iUvGvQ7nAF+TRBomLM1JtDJj89n + 26zivxWtqbwtX5/fLVarpm5srSIoCyp85HoulLUXO1PDq4EZNX1skbmxm9aERHBOtvhwm4XIoORn + WJdbtAE3t+lS52RIj9AMNV95tFmteMzr1ApuMnUhYWsoIPACOAD+e3CezsGS3sF6eTE8T3/5xXSc + PtsrDIXyHrjFaFzqDeBPT9Q7jOTEoINZafvWd49saLpsO3n2VPaFlN0omWDnxgqXDjUPhTr3VGe0 + oqt0Mt9Ns+HH3Q3CTn+4X3GCuZPTYpmhU3CA249JMRFMkHFNXq8irVOnzq6W/9qpRFSpC5gaEMVE + Vtt998FChMRT/fH91fgaLBlZebW7RsfgVqKdIJEDPLdqN81bz/EwlFaCjpEi5ywc57A0V3PHE33f + i8eJwuCbgFW22ozNVrsX1a/tZXFmS8u/dVm4i1JITtK5q9equ0uJiyITEfTbFXTdrTsduM8ZaU9f + 0skON2maE6Qfa3HQo07GDE+SBowM0F3xlDtlbgTag18/T7r1+UBt7XSnPgHMgjBHgZtmFFMBrsux + 5yYwEWYmmPfBA8X16aD2tNQOnAZPCMo7J4chrrF/ZbSCDr7BQJ1KsvWG08vt9bsI6CeXtvk1ekhS + i4UXlr5lbJ0Gnd/pFHH7suB8jf7AxKvomcc6gT+oZ1yxH3QTFvSDukgq9eTrDVd5IkVWZbaTx9m2 + qBIeGAgEta+c43MD+fSAByJJfPa/DOWhMKsiI+LYTLleECMYbdV9dK6TtFNLV9t7wo/lHHrgfWiv + 101htJzDauH8GfL5Oq9S84zbKi2aKK1Sc9GVgLiQgqvRi8QpBMQx1bHr89T1WO6QRqm7mbAwfn/v + JaG7T4Fud/IpKMkVnwJdVT6F3/+vsHwKIhIhDxMbc9+Pno+ZiJkXjhh0r6+wMH5XoKqlrMWRyguV + 3sSvK/jsG/gDnhr6Zpqt+TZby4SPsufyvM1zqbwRq/8RdZiqb/D9SzhuLEiiMvF8Akp4a5aNzxI/ + Cvehp9f9TrYTwG9P4TksfOUOze5FoedHNcP9LvuWrqGD7+fTmYwYfbu/hl5cKYo/e3TagISToMVg + ZnEcgIpXMZibnJ5VAxodpE4d0yS1FZHYb8tv0y86+F5z8oWNRJ9WpkwhYqwf+asUoH2h85G1goHr + 0CDAI4jCKT7mxvyUn8OvfmrS/b+94A+KA5coh0bzrnvQXsOdBu86ctPqNg59N9Y+ZSm/prcXj30u + X5yPEVKVXn0cyq0K3n3MRv5YfkBpt+yl4T6qELRmExmQP3aO7OodQf7UQ84gf7oRG+RPXSVlZbVZ + zrZ3TRVMgz1/sqQjnh8oR6qiiRgt080tJh0WsPU9lTNpPon5KcDzD1e/525L9VmrdHKZ/A+rdQoo + D8LMtPHq22osExF7L3g6ual/Vz3hDhZrExjs8Wde0GUDM8+4msC6CcsEVhdp95LJaQoAXuuMpHRt + Z8uxNvbns1vsw1eiUpRZtIDmsWDEjBcKOrjQdVNCIpFd0wXQ252yWeI7Fb4J8wEtjnQnlM8fvb8d + 5bci0iCKnbUOYw+bwfcG+HanxH5UaGkiMeqKfx52V1fUQ87qim7EVlfUVVrwd2XcBr3iv4AZCdMM + rMjUuOFtiaii8CSi9R0TjIqNwWeC07jpyujYCXpKTHXxb1bz2xmaAvJUTguL4JRGTnDgdTjmiwOE + DCOri494aTWjfGLTfHPJEuaOGkK3O7n2lOSKa4+uKjDLd3U2QxbyCspt8vyXOMayylEccy6UZ+/t + 7PZunN7cYA3VvcwMnU1REV1nm0UmXSqSj9qixL4rDzdCR6Vwoiwz5EFD2FPy4b2dresZRdVZU4Gh + q1YVlkFpBfLeM7/qFXs/Lt7ZvFTWgiUX8KSaMNLahPFWNbZg+R2DmEUt3qpmkVaHNQuFFcfbyiCT + KEEgKEQ+6XvwBjiXtHtKwGSh7YUV2lvzGt/vO4JPkXt3y2c7G+BhHBL6VlHdc+Q7yTGTPoOGsT34 + PgM1XeWBW5nSrh/zGID61ZLA22uzvL6zZ13YDU0/s4g1DVlH8fvOdJ+ZSDM/58+8pNuZrh9yjjXr + Ruxgs7pKu+rZy3cXv1+q6tjB2zRbgIadg+L3DvRrVTNbPtWNTBliFhRiDkM63eaz9cyJNs79NO8q + ef/yDinj5Sbdbu9piE8UKRDVQB7sRpcxNh7edbdaZKt8mzbmVLmpG91oPDo4LjpTeiCj2E4m6rvv + DO6G2KPYZHylvOvsuGMZ7DoYAQd7SG8eVHZyfulF4p8dSH/0A04qnJFeUeL0dYV98vt7u/yEeQLz + NkJbjwue/8L9MAmSEfdBEQhV2ncLldh8lbMx0xgnq3kDxklf8OThWIW6bue7CVbCYwbNsi0YySJo + w2rhqoRNELDY49Vo5LaSAlN+39irgG7YKLgwcQLOvf82RTUyVTWFDTwn9gXEJZD6kfSRfMMD6YXk + ec7Lqwqmf/tXYk5j4T9UbH1DrNabrmAqYcle9k3yBIMWNsupOCYt+xpfDEt17tAWjBdm6cI/Yk14 + CPCjvx7gTDEJuhGTVG5BQpSUslwQox8q6nHa1u5RFGgNM2WVZ+NiG87vdkcUaVMOXqmP6alWo68h + 4/ZHclZ39Cr3VymKawUfcVhiLj1xkry9qpgw0HfRm/CZx7uoYsVDzuB3uhEb/U5dpY3RBou+g30D + Nw10go4Jmhqlwck0z6oQd5efzhgROBaqWqlNiXoXx6SqJYSRUMYJoHT8DqekpzJsr9MNfC0cW3BW + utOSHbkiEr9w66TrdYqsk87eF0cL6CfSVoY6I1wBE8us+cMZynr6E4Pg/3kPK9/dF0S3OykSSnJF + jaCrpES8unwjKW5tMgaOw1xO8+LPf2FY3BKNGGzyoSpifZ1uwDy/n2NwZVXa6ynLQzoUEANV0t0g + oqrMqJnPVUjaCu7AWXULPy6b/kZbyyzD1JoiX+cus7luzlkAJkXjCyGfaS7LYWf5CsPmuKQlxDuC + GMybUspebW6516j74E5eKRs7xOZ+4NsbU69YWCNZ6F9qSUvjYcw4EzUi+v2DUs0Xqxe+9Smv7XWN + xpdtbldNY2o5ysKkxjZhSzGzaDorxwqb5flB15cszcHWl4Q51Zbvp4UO/o6rbyD3I+NQjDxyKIZ0 + 7MgHTkNJLZwQlAM0uUOAscqLnAANC+MmH2kY486ZeUcLO4A6S95ZcuacLhC2FB6a0emjF+WSIg/R + voXo3J+OJkC7O4JRKaDjhus0tqfKPJDgRh97cLN1e9WjpT04x0CPiWl+oE0Rzl8hTnWnxI7SU67G + SNGMZY2Yy6SfbbINqxsmBwK3g0t8quI3RklohMDX+tpfzMoDsMm2iEayQvHDV5fD+W6RHZN7YbbY + I6LMNecmSpEuBXghUM/J8FCh2KJotqeQtbLJEDhpk06zPe2Misg2vNhxPmWPUUoxSTrdHDrJOns8 + tpSAfvGrI14MsA7DH91NKF/uZ+e/X7wbYzQfJBwv1dhyVLLz8T3zO8T16XYnW05JrthydJX2irOz + t7W4vs9imw3ED5//IoIkSMKRCLFaUEWgQM+cEcaTSt17kqpLMhRnXFJPR1Z8eL2TsOl5Ov+CCIeo + 1hnkMZ34ioetNKrO0rs9VHbH+ZP7pyhJa13RaJxgvLsl4A69yv2oGsXXckvdYtklMDRVu2TQZVgm + q+WXbAOqtr4DVg8mC31LlzLd88WegXthV8mjNmLwKeSuvNxtJcHXcJ59yeYEGUVoFENJvPZiKAcX + XlRundPhDkZliKXoiPYLb/I/OzAhJvLLsNj16vy1AeyVR0KKxZQDnMKm2sWLg4HqGFyY1f7rqE0n + jCL4JeqnU93diUrwV32J+NsFydBwsVquuqqte9ViDqe3PKEI5zsr45zUJOEWkX2F33CB7EgQbFwp + /OeeHqA6e+ax0ifodezSo/gskZ+UJpmbhB9FH/N94wADtUuUJ2/DpuKmhHsEOYFyYHo5SvoeCnhP + IYuEkzZ09Gfpc1iTRfMk7kIjj7c7kkVLyTWyaLyqzuFPF0GNlCLw/BopBZPUp/EI/411ZPZqd40e + k2GgEfYQR5vgtOefNfNiUfT1mr32JMWa3F2k1+fr3WxyN0RcP8LeGw0z2Pd3cgfYzCyeKFXCqMH5 + LOhAI5SqGu1Q4/Xqi1zt6mV/vzq/GD6BrfQWexpDJwV5FehYcvRKAEhPtUKwXQf1pD+4B+EQtcqH + z9kfaPWI4h14JbEZ0goFKW8lg2US4yCoF+E+YPOV/EHkuOCa6qNUuItLCfb19lco4b5uVmZrX2Qw + 05cVtcIPE9FKi2F1QfECJT1X0bW1qEABS6o5h63fZ9Qga1rBzNvBzJuqXm9LmEz2pnrqdgZ9Lp3l + 41s0pjZ4cy/1sgFuNIaqIPJUbXBQYl083U96ci4nYRYfyODcn3uZkCPBceZ8X+GtiYxJwvXpesTr + DdT2IU1ya9Z23J9cX/jnLI4+IDJoEHmo/zphrp/oNvEDHrJilhx+qVGp4nCy2mTD109YA+Jy25Ri + gUcEivqMKdZlHwm2+qv6w70WovltjzkVH1XbbQB4YbJ3QvT2mVpbjo3X2z9PnrGOCTj6IWeft27E + dnmrqxrTR1qiqiC/XsJeTrm5neO56Xiz9QKYjRMGKnE6IKwKLa3X1Onusvefp0Eop6Xhs+z3ZbsL + P4ACQoQPiHZCvAQEjrJb9pygflo734dP8wQvQn/l5oJ25oMLp49689Pb+mmLxP3EJDYmL4PuiY3q + IefERt2IndiortK+qsD86buR+PrbjMgC9ck/aLpovEMX2TfO65S+umHcT0XCdWDRciwRmDD2IRaC + 6kaOCrbIdUS8LicJKhZlFFvCyp/eVdvsVCLSlA8YeNp35XP3GBLd7uq7Qsl13xVcVb6rDy/rhKq+ + H1d9V78kfghvPAINQv4VZ9iFdDN/kaGJKa5G5eRZTBuqCFQ8uLjWyN8ewx7SxANfitaotpoTyOB/ + W2oGOEeisio15Am08tWvH2BXGus8DDxCHsRXko7c6nt33fx6IxWK1dFi0wZVoAZGVAFxO4evXMjw + Uy4/YTX+OJ6ulitXKj8905neH8UZY8+8pNP2qJ5x3R11E9bmqC4qnXM1ne0WRtXPvqEyjYgaqiKv + mrIMhjXspcq+Ibq0X9/+Ap+5nSnL6Wo15XyQy//i3hh4iu/8x/tTUIbcqdZwPc81urF7QgYBhFOf + PcyjLt8QNzAErt929v44eGlqHyLgBUiXM1ktVlfurTdsR4UPMOJpJocLVEK74uqaa9/+No8gI0R5 + LJKWydrRZbHnUwNOoMmlBXzkdhqonM0cfcfZc7Ol9CBZ0OSgxdNRcvu3C+YTiWxpUR6l8gZUGXnx + Hiaxu/JCtzspL0pyRXmhq6oi8tU5C6vaS8CiCmZt/PwXEUdeyEciEaGflCoiqQpv2ASnQqQdugNz + Og+vsgkXa10umU1YWNN0MM3onS3RIsdmvJroMiqRTEdBIjBpv4Zuu79g2E6lidtyyS3pfQSAWl68 + yIExlBBW6kvSSv/CWJj4sEtX5OzJACwHjkKW8AOfPmgYnyIjshTZwXS0WhaaJsjAVBb9bZSbYbLj + XwxpXmBU6Vp6JBSZGtgcs/VdBnMcTi6QrgePkmsWKdbGb6kyLL2eIQ/bkJir52pOKZ8wZuY3TsuR + /Ncnwhb4UbD1QC4RrZWGnooZnaqUJJREUu5Ed7rlhJSCPWwhBxo/+HxrjMYTVgbssTEknGal73fK + S20MJhwhZ4/vqpM9esi27QpTsCdYdJysH4pee5DcXO7jeGfDdrLf9lfbqDyC9+27NSn7CANPyu3R + B7owOCnhq6SjD6t4yBknRTdi46Soq3RGn//xShXKm7T2+qXh+S4LKp6qkniETIm1NRaQNVUg7dXJ + TPqFb+2lvVP81UcmuH0PN7cvGLnxTfecjtcRKFqZ84vf2Dla/J0YK8xDjnidRSNlwE5zlSZxCdpI + A2/pWo3ypG24bWScUXCGW81JcguNA3Syi6Ev1CwhgsCmkHIqeP8m8Uikmzrdwq70EPbx8c7aR2Ye + PzxeVhAow455XhfDDm93NOyk5Jphh1d1RuUbXittgCMuqht2IYvDaCRCmHuRcks3MfiJUTC+nuUm + zDOuUjRauj9o8rtN4WXarMayv4lRXcLgjoZm6eJI3qzmU+kihY3qS7YcX89lUvw1fDqCua5hPWSb + FzCvcph997D9oO2F0SazbcJIWBEbnTB5y5tLKA6VpZcLH1gccC+qF1AQ615aSrhR2Y2vd8vbWSW3 + UTjKL8xKlb1GY4AZ8g18oiLwklaq04DBlsKDqi2o31oPXQH582tp4OwacN5ucKqXH1y0vW7jFNEa + X1EVrdATzYiOt6ux5jUsQmJPzr9sn2rqzReyDVWz3cg8+QQm7lNr5krrrvFeUeDvvBj+8+XY9+CV + 11kJIVauq8Ia5ES07ScWGHNpa5E1wy2YzO0gjKcalyfZh/0ZeV5g4cAeRa+JBJnSMbtIjyLIFJwH + 0lQ4/89PetK4P+xXRtbaYDA2u8nGZS8GKlRKt3IHqhR+RJbQepZNwERCY8ZmA4Ut1Jlyc6C2GrwT + dpLbdD6WbemF1NX2PBHRKaKCH1QbmiPPza1GUtnQ79yxzY4oUnIHlf3ftn/tlaAP/dAQvcU8eub5 + 3Yje6BlnojfVhE30RhcdOBjT5ef7jdyPy5tboSwXQV0J22Y1iYozQ1SmU0ACjhoq9ZAvOFUIGfuv + Lf10Lwt9YHhVWPQGDN2om61Ozzib6qoJ21Kni6psfZ1zXxs8vnela9YKyPLhFfcH7X+RAsZk2MS+ + Qs3yGTcnyfxYagBzrrhI20OewrlS30vF7V13EzJ3qWZw/pAo5vAQpR2Y2sFOr8p5yKNSm3BPDiM2 + Lw2eLmo4ekAEYgvrV6QuOXJJ4JHBwrDo2v27394xEhGBrJXeHPei7Wy7UwRv7T3qPBVPaWSv5Way + e1kQhN02BfOMcw6aasJOQaOLtCmsFwuFZaGOpgW+MZ74IKJ+aXgB9w/wIQlbEWrYimPJC9oV1NMQ + JlrlJjblb7b8ks3B9DuSmP1UAjytgSaCchdkT+e9FCYHnm/plVbC39H4GMcVCP+AI/zwQ07f21+S + b6ic//Ul1Uda7zHSD6SgUZ2OTOY8AcInkEm3f766ZCxxL/2l250cVUpyxVFFV5Wj6j8/1RIQvAT9 + qeX0yej5GJnBEz7yJdU2bYr/qf0YJZfdSOHe5jDh1ulmq+19ysPD32SvoJ9BWRcvpEmUbYh7VPmV + 4Wfphxrary7BA4ZP4KXZOHqKoKap8l/J/U9urG/Ofjsb6xTu0ptpoMSzL9t6zoO2dOw0hKiVo5Xx + CDZ43pDbuax6oFu4OqQjdE+NqN1EkY/Q5OO2aTVCmwIXcaIbxA7M6DW/9CMeyAFOWgMPnSgn0OMJ + IvCEyiBLospg0K1WdYsrwW9zJTht9cf5ItprLk/yDETUMXW3bcf99zFEMrxAMFV8VKyJHplF+oG7 + CFisXrJYxn28pDrBQs+mJumEQVc81I2aJGikJtH8gi/P3qj4+gBU4cn9HLcQBfRou8N/++svVg+7 + 6ybQkA8jnQRNfkh0o0md6SheDj2wkUcDi729HN7AX2Vexn4t21069xsM/Xx2u0znkrc7zSeIFdfB + Nn1Y3G53e9unzFrqtwkWmUpKuXQ7uTtebFcobK8vyj+WqFzulml69Bd1Fvw9iAlDWUDx54dLmPzu + ui7d7qTrKskVXZeuGujwGsyNCKsx2QB0XQSdjUfC436s/LnnY841YOw0y2WUTvKPyZk9udugr+MC + DEsNtiGTb/fgD+MFFPqEi6ewX+0wVet6tTQcZqotCcxFOP7wfy1w0S9k8iXshqmyZKUK9hce0Jhs + TUf/cLrZ3ZbQwus4Ns25BZXM3Bo2S0UFbu6oFkQ67jcjkZ+Mjz34u4wX4ksbyBSwZKMHgpd+/CDL + oA5RXHX1TYd04bndpPm4bD7MZD2biiki2t3q2z1YIidBknnk29uslsefBB6SKEr9Qt2ExW3yqD3W + QeFTRA27akW9dPxHcvT34iN32eJIr3RvhwhXhwgTiXtmD93ueIhIybVDBK/SIXL57gOrZfaIqApa + Gjz/JYDlyv1R4EcyhI6nyGU5AePdImNrCyEJPnSEWsZqMrP2HXnn+I9FFq6hB2cr42rDEi8w1NMN + WNr6D2hal1LSiFYJFXxddkYnwOVswXrHNi3RJoDSIat9DODIZwLJEy2Fr5VNvOq2gCbisAbN1ZDx + UelP+6SAeXhkIysCoZSpKzKJSl2wxAdeVfwB0Q3ZhXaZSeDV3rfkheIBT3y/ml5UHmuVDmUtFDst + KgITsc3L5YH943FekIqpMbTyiMiyIDNSb8fTncQBK6Gp4uyUJx+8JpKvt5yw5Zmug2jX9/aggmBa + OjgY8lYkMkuh98qqsCwrWaSLBVg96XLPfBxjjttALmtzzkY+nbO+gks9PM06OptOENxeGScnoBG7 + 0rCpHZ7vwPK0p0APgTSknZZPVjgZy+Ps5PTqmBXea/zUDyNeHprPJ0GWgjQrV4Jgan7d3m2ylYRX + PSi+EVv1ZKkPjrMKQngJ1u8Y8zgUVKR10sf0SLgQyvKSP99f8jhyt2DpdiflQ0muKB90lZSP809X + dd1DsIoF6z8fR3DgJGIUMe6FniJCv1+vSP+GAfv98rXSA/6cb0D+5OE0AVUYlG7MtUaEiiAIqggV + vSFdDMzGzqPINXGqb2DlPiqcQt+gULxmXmf0M/2QMw6FbsQGolBXlbv145n5lLIv1YJnH94g7+Km + hsZjGuCBL1ggx0bwgFzWNlICnjfjfJ1NZjdY7WZJP9pT5ge+n9TbOiB9T47VQyCEu1cyHYU1LiP5 + IUEUlQfz+PdwknYgickrNu3qJDo9JQAzt+K6fDUJutM369VJdSdvL5kv3K1Tut3pgFCSKwcEXaUD + 4uXVqxoaEkuEzbDse4gngP6UkYhDP1bh/Jfp7vYOo0DoCC+WWp5NkGhnajYuqVnbnMHIrpriKZ2P + NKFCTv70r5h0ZyLFU90EucnSnaQ5NldR3cwkCYyKLi/wxNq8KFdYgUq7yeRvGQGdnH24UEfZyzxr + xm2it2gvDUngWGgtDRFeAmZ8Hc/gWzm8Yp9kkW3KlqPvYFnEzDtFWvndEhFwXkNDoNEYwuhK22Ys + uW/zfahTQsROb2wO46JXragVWmQljgfLzgSrqjWbotzHRRtwyILuh5JGyhjUG7SaJVX7HrUeq41X + lZQK9S2Dn3eqD3CFa3WGsVjCIUQqna1lVLrtvdiJWsc53P112W3FkKcKbguTg45LxlCe7aaru/v1 + HWz5iunFzdqEFSadr9YahMOg8TUaj/BOEvbbXiGL7aHs6EnmdPaW0z32yOq/TlQwTmCK6XJyh77n + Y7Ir9IFqajoiET5j3Uo66BHXig7VgFXQQdfoYJ3OcpUKLGuDtrvr3Twba19tact4cvHh3cthFPI4 + TMTTwYG7X6LYyiPYlMw+CLxAGitezAiiaZbLPQuDV1g5B8vlFiZZ1/XiEa1Q+c2wG6aNYZk6Jloc + kpMJFnc6uVuofO98DYoephQVUiWDAC50CWbeVJDVMPsCPX20QPgjTJ75vVLXWkAtZDcpnM3JCvEJ + 8INkT1EaeuU9DsJj/ExsPzELyz22XsnQ5NTRmRTo2aUe7+ehh8hZ1uQCZob1+GC7TedTsv1xhkxc + X2ydqtrCSO+AoR90LWqjR1x3QNWAtQPSNQ1zbowrOGKXg6vFJBiHxku/XC3HVx/OTVnNxzwTamdj + AfqoQv/pAFalkFubL0La2jzKpEHGA/Qm97PFgVCqWVUhMTREKWQ/ztHkg21tk6WfS3XXbjMJc6vw + ziZZoKmls42kiitxqIAM6MzZ8ghfPo+ZNqKV7G5TLxQU0ScBe1/jQDkzLZ9yUEB2aLpA2rR8O1vs + GkvBDmiZ3AxRY5hibzg59gkFGTpmPiM4U4wxfKZztSUloKGz+3Ta9HCk7If8Tsh/KNcd/CdsrzJr + 8iD25oKMVQgelnGXPC683TEELyXXQvB4lXSxt79fRjUveILGRSWPK4qCxA9GoBewWIEm6kgmqCza + e6wNZ7A+N1kGv893oCUg9WOBcfTkzeuLp+ObHdk1djU6KToWcgLm/qQFRoYxhMjjvtjAt/xv8bjH + YXiCx/0xpHrriZ/oVOf4JX8mg8Xuic70iGuas2rASnKmazSJ78qhHF1UXjufC0FYjch9hed93H7X + qaZf9Vjk6WhF0hUwO+mAlp3UoLITg5ONR/HkPscOkuQgNpHD4MCf4QoPZWwiiAOFv0adV37oJMKR + OKQiyVIGQA/ZfIkXq9N1ezejkLCb1DaN6miB+7PCvNjiGj3uHR+y9NI99tIR9MITMeFgBWM172CW + pxIjeY0ZkzgRZ6auZGxN1Ktxbar2USf53d5o/4JQFMX9CewnWb8/8pa+kiEjyqi/uGSh3wHmTN7u + BnNGkqswZ/IqaWIfPtTzEQKf1+GrEb06iUZgiSfc0/YkcUdmdCbjaMt/EFB4N79ZLVFzegItPB3B + 4snWq2/317jyM8poRIuRSCjPlV71YZE3JDT2RdvRl1JVsuesVD8w9/al+rGYeTyshmGW0jT+klXi + 19iGKuvCLq5ESRDlsDUSAxMriuMi40+mxRc4zdDHnK9JvVVfoUGd5J0qr73M2w6qNPyMs7tsrUnD + QoEV5Lg1rTdYJko1+DJ8Iq1LjJuQF/IatO3P8GPV5EMs6QVd0u2Vu+LTPbO7YoBz1iCIiTAm1yFX + 5AwlOxnRd1oM71YEhZON9ocwtpkXkLHdMl2s/hkNLz+eFTAS/Zy+exXriOt9zO+Q1E23u+5jfj2p + m67SPvbx/BXzaoHzwPfqeI1wzieMj2LMchS0k5VnO4UQVccq1TyntTFPJ5+HkzmSQqDeTneu4E1V + Bq0+qHWNzsdJBi/Vg5nIEubzqE4c3b3ex0Vqo6llYdyDTdYSbQZtOAjqOIx97b1FvqQeJCsLQHj1 + FPRib9TvNtjrQpislttUDrlVZEsFqRL3vt+58mJYHGwqh3qawdZ6CxfGIG41l5VKMv1Z1vaMs+Vm + NrnD6IhG4x8+efnuTf50QKug2BsD0UdhPXZr2elUfHUXd2gHKQ8Fnq9QtHzLHXFTvGc/FscJdMUt + 4PUn4ga7U/M8Tv/NcaKcU8kEoyxlE/a/3k279ZEfMHoz89QmvTkEwq/PTspJ/sellzD3s5Nudzo7 + leTK2UlXFYfN5XtRPTmxLMU+OcXzX0JMTY5G8E/iBaqqtgQeXGatQV77DLbFL9DmN5UBMxrmuzX9 + TMUjczQW5jgUEnBkk04DASrIfC53ANqO1yBzSQwk0wmP1xiewrDNVnP9XW3mou8j9uSDq3Qigj7o + g11e1ftllcO1rGilnzHLaFSufkAbSf4qa8VmBa1s5atCJpL/bi5a0m0PfuAwDXB6mXwnmPED9c5G + 3zyyG/Y4mNoCRd85Z1wvcd8Am3IRdHOkmmecgU1VEzawKV2kJfvPl1VM5rtZvl2hjpOlk2x7Py9T + 0qtosCWbB0hmRdD/HiNUyn2WSZH/i30F1glmONwr4K1373RFWYOp5Q6tKQgzQ8edQb+YzeHJ02AY + QlAX8fFaBx2ZtE4dRvlh+zr9BC/mz5jAfupCO96FG1FBuj1LJyuVtHlaqrpe/YHhu3/FeDc2EPOM + M9u9asImu6eLdNjf5TcqBmV9NLy5qUdurvx4Cw8O4GkZi4pjhY8rgoY0/44eExE08GpaEkfoQikR + 13R1ybgXRTbThbk/vx9WLAhVzlVjEUzn3fEBiFC+b2FMz6v5R1WtNH37kaIOvZ5vzZ/6ZOmxOV8E + BKind7oizb57D+vNUOYD//nuPeMdiF3odidrR0muWDt0lTbA//vyshbx4B4GzsrWDnv+CxO+z/wR + EyHT1s7/3c2WsynGyy4x+X2b4v5PZsj/nW7qsYuypVo1vm3mlDhqMR+wtILHnNe8dAfktZeclOWV + DB3JRbrZ3TrgXvKKwdH2tsbaaRBegbwM2gMaSuLgQ+MbKpfZIv3XCrmzJzMwVGSyMxgx2YYwLEc2 + 3sGmGDsYl//RYzoafsYEYzgLEcdnhFlExS8yTTDdXKfLAU4gY8+ImPeDXUlnYFNHuTnwf24Xj/wE + zgKrD08gLg6CxO7O7AaG89twvVusu2MkRjKH98/fLzkL3TPm6HanXUtJruxadFWB1vzxsuaj8aPE + s3et6Pk48qOAB6PIj5NIGXwfwbyfI6EUvoBNLZxb7mxCwTKqrFWCpNbZZJaPJV75M9gC57PsC/TA + Ll+xMSvN2Gl2A4ODWwDcuBzDBDH4sKr5ZxrDZjetO28IDz1dy0qiXV5x4SR2hOCsBP4igQCTh4o9 + lMHa27axuB0+Rr3cgARURuPYUSjT8CqnRzqfK+yU89/fCIJYufqdDXAG6W0riPyetq3TcOz3UcH3 + S0xLcGvVmdXVPG2VgrnzDunDURIWAuY7+FuXj+gh9zei3N9X70Hhcde/6HY3vHKSXMUrl1dVgfP7 + +k7mRaFfxSv/haFhOGJR7Cvt6+V4nlI67jTTXPTSc4iwuHppbODtVrKokwxKGL6vd7PJnaS3gGM/ + 11AEOVxHMgK7XJPi83KiXd/roD2eZ0XgJpVraoOYbLRg0cLKZcGiqjct0IRT8qDmWNCznG03BGC0 + 2m0m8NqYfbwt1nzJ60HF0POGvbG/2LEOLJr4lyUw5EGbQC/wEo/VttmW0Rk+KeAan7YUL/tB7NSY + 2Yp1S20ecS9uVVC1wMH/ltk0wAVnsNajBHGxBPQ5FZkq6GKsdHGtuFW7WR9ojmqmSSOzOh37cs33 + jQLTH2eGT7x63RaO0/f1JPr7IVQGXhhKTeT12csjPQvExPHmPQ8C95ONbnc62ZTkyslGV+lk+6/L + TzXPAmOxnUspkue/cA8O4hHnzFPAHW9nt3fj9OYGLFHoOZnn2mDjVmy7kfboza6JBLQwhFWsTgra + rbfp5+xFxTMkNX/ac3bLKbQxX30dy/ux+FbmkeW4Z6HI/0rXbN3sWaKT6r822x59HzaLRhyKKK5X + yNxBjw3tHqMPPei+kJkxrg2aE+euPkLYDW12gPBa3Bla+uBnHfIBznJ9nAjO/X7sCCKpt7u0qwxy + FzeMTVdBxJF3cMhdT0qBjiLyr+h08aOMGFgoVTfLQXdPKynso3D5YG/rrt6zmvui4xDE5W4PZR+0 + 5bqFfioVsLxANMyXHgnWY1PYxXz/mZd0Q6FTzzjT9KkmbJo+ukgnZ34zUcSdsudgHtxmBcGeqkHn + cRwLn7UA0316/e7du7MBSsIIJdwc/UQRShE3xKFxNSgY6ebQoB0b3I+t0Qt76A8IAoZh1BpG6yFd + 4ogYY4FSqzOSjgw29hGulG/fMDEOxgEPe6tExIWWfiR2Rm/bYR/VVnFRbRV3q7aK3aut4sZqq1hX + KfzxqaFGgYcN1VaxF3kj+CfwVY3CeTVLvB78JR9psTBGylkhYchKAbCWzA/sWXRGpPN8NbxLc8z1 + Q1cD+hrTXCOEF3so1TjstvUKh+qL2Po3Y0mLuwfGiCf16oFDYW7TXGO4MvQrwcWLd43tGV2/ISvj + AvaG8nZrafsiDA/IH1wpTBXnoXthWAQyVbiFWUnlh1RinoQuQHTuFsF3q/mKCFJedJoEB8d/gJO5 + KDWI+E902hLS+InZN20YHTi/abuqLIIHPC5Pjg8UXh3q/O5LrksYIqaCsd/eewl334rpdqetWEmu + bMV0VQVUL96L6l7MEhHZLCDCf/6LH8ASHvkwayIbgaRWtzNHKqDhk9C7elqnKR/JJUUqyGxDUJSb + dDvE16gR0r8op2Rjf09n+QZMIljt2RwpayXSkklwpVjqei6ai82IPp3erk6frlBVX+0+Qx+mTyvO + Gd+qqv1UhFuTIEgwZFrZq/PDhOLlBpCH3KWBWgVYO5mUz2qvPDh9yDR6aD9DNpDTz3jlWRwP1Kub + jelIWopGCd/BNDg5dZeK8zuyzqvHOVdRhMOz3UX1RXTpRL8NlSKsSxOocS9vjxdExL3osDC6av9d + BLd/tN6ThXYJxFx0TVOmR1wdAqoByx9A15qB6urAOEYGqs8BDwYaoahrlZ2u0Yh9jQ0kvJfMe+aF + ndCB9EOu+ECmEQshSF+lE2qeLxRw3x/hMF9iUXcdf3Sg/nbRhE36HiQMUAx2k+dHCoxUJLHRMJDC + F8/6HAvwYWMaSfw7+VvWMik71GSEVAovlYk9SH0dJCrmt0MSD2ySHjdSMIx3oJrI+fViEXtaedId + 2kWB+xHuFUrgkVNo+Ed4iislIrc57ZeNEAddZMkRyheIeawkYgq7+378MC6gvg8I4+II6Pj7w/8V + BuHb8I8ANuzZmIbl+G8cuLpx3CGGjnYK6Y2WKBZ+u/SSDuiDdLub6k+Sq6q/vEob68Xb36sssiyR + pRm25j/2OSI4j3yB6Fm0Ff++zEh13GSZxnaXwbgS9Ve6JXD5lIr2qxmXhfd+amAHEd87321u4IzW + IbgCMUDhs7ww4TvDp4aRfTjHNyW7fbJabaaIf5LN77UJTY/AZ/vyFviBK5vh4m5VZ5E9kXBBBCIK + E1FPWAcVWNeg5mv80lbxmPJtiS+neSZhwFmtULfa/82xX5EkNfpbHZlNWMySauZ6Y/VMY+fbABmi + Rmi7t5lCYltKU1SnyK1IHFzumY7DJwznrXiq8IDQxWfAe2zU+6L2djyFIcOs1OL1ZBaJ5KV7UZ+h + Q32/NZ/Li6DXOTzAhWxsKJ4Q45/Ksaz36BGgeY7CDvvSYxGyuk+Lumn2V6e4rTBU527zsr47t/E7 + HCf8gG3ZH7HC6cQIclvRHygfG1+vMBdi2rA5/Xooq3eg9hO8s3336WjTucg7ON1YGNF30mo9gXsv + YpSYUdTmQ4fM3D60Pbnbj3yetIvNYOyObkKrGYZ4gvmJ/4x53Wru6RnnmnvVhF1zTxeba20LoqqO + jGtFY7IIn8sifIZcjXKfWilAPnuf6ave1BlSpcdC14K+QtquCfk8rhW7dp6tt84oOH+PKndfcGFx + hx7hkuqXLK73qlTX0vo4Mlksr6NnXtQxi4Wecc5iUU3YWSx0keyKm9laldZLMvk1wiPi09Zvw9dw + 1wBvlYX0QaDSVB5HBh05APB9TxREx4+VQeci1h20SRULSqEIsoY3yHe4vi/loaOqaDV3QFvpAWvL + tdToJKAudwSTR5HnB0cVq8+sjvls7ttz4Nnz+LjslT7qrWKqtzp7D5uOe6CTbnfydijJFW8HXVXo + Xhe/V7kWWCKZRcreDoH17kEcxFjvHgoV6Xynh135in99dVkM/7odRbFScL1E8nAjBFbXl2y+Au19 + gf58ZCi4lwu1THuvsL3Wq2hvYrkbPOXLs3KCdxJzHiSs5p+ovt64eRcAjfMrEpWUWvQ5i9rKpazW + +i9K1ewrNokirya467fxQxher5rwor/clQkyTBLb+WPjbFqfbBopj65y/FjL4WnlGwLW8g1a/OBS + K9H3JroHc/FjtmDrsZw5lgVVJMLotCjtWchNB6gSKNQ5V0vYGOZzQj2ebHazrSZKu0jv2HoIf18Z + jVWWgVFjhNFpA+HLPnxx6poY4Eo27g7oooEairIqup82cg8850E6n9bkdl+FIUvju0EAcIkEPZMY + zwtjiqSFcwEf6EpNCI3Jz03zyYqeL6QffOPjgY6Lw72TfnBIVtIu6/jz+vsd9y1QEj3BfQp09Jqh + wjjlUWLk3lwW47i97/1anEl+RF+qlr0+Dd0cFw1EcXFijBn+2xHU8OYpZ4PGNGObNPoyqQ+bu7XP + 6ijZJXx0k57vRVEYPR2U/qQ75VIKqd4oRcsIfhIqK+hk9HUelxxL0oedfZvMctqUmgXup3DrLO7A + +1HsfTED/X4rz6DuL9UrwjxlLHqHPvOxIhMeSCrqQIzZE4JYSJUcNBjT45GyElOhwyV+Hwu7bQfm + KWfoQNOMDR6oL9N2sJ59VruB3uhm03vQktDxuJojSSvK2/O34QVIGKAYBSRIKz9iCmuM0NGlRdha + TO6ekME8y1Wm+N46a0dHoZG4vqUfKoLSxl5ziF65NxQTJKA6sqgNxNhVFzbHI5ue3sR+ukhP2eIV + scVA0MTpOeGmQ8LKKV4f14ed8j18n8f0qJpBSM2yZz0ejV5A6T5s3CjcHx8U7965JxH49pMWL6iC + 96Q+65GBCkRRiahaEE0SR8N0PlmBLYlm7W6N6CFwcGRrYgLvchQxnRvJkzPxjAVdTqLiIdfcSNOI + lRupryqtNF9wodncCyyVeT0t27gGci4Grvdewb2yCZk4GXhKO3VJz+4QI/OpyNd6p+6p30cmvhab + T9jwGpR415g9fXSa3VEJ3qdmULuGkhJu4sUhB/PH7zLHi4ecI8a6ETtkrK6qoujlDVcJ0VcfX/Mh + YVkOzj5dlCqfUL+8y5A8C1b+FT4xkM/J8HAcs5+nBjpiQqXITGao6qRzw/59gPy6LVfmO0XF2/Np + 4AXk2mrBxn/4FwgDomIsUPEXqyk2eYwOhqBR+Ig9AQvRmwyEZ80qmLP+GPh+cmCadTFsI0J8KF6y + /GyRWvCz2KjFuBL01tU/3/0Ke0OnCkN4uNoppZE7LdcYhBfV8UTfcXRt/Pcqs6/PgtO9AD4IqS8V + a6/uQS/2BUWLHWQe0JC5XtiOPXToCQf9lQdyt0ebG7/u4XNGCs25p9y4MFZEHjVBI/kT9AmG0XDm + pku8CZZDPhoaH/Fqs8vHim0Oby5u6qiem8It/3UMKnInNxE94uojUg1YDiK6RirLbLtR3qHF/Wps + jMFSfH/Q9ofhO3h2gAIkXTfzVbFSRECF0E//2t1S/1M5vA4j3ezyLlrBqZk2p4WglJAg8OIC67qe + B9FJ9Sdv8Jd0spM1Mp3iNSc5Lh5LcklvuOGcx4RpaMirxraO1iMCU+Ib/64497suW/WMs29XNWF7 + dumiMqjX1xplF3V4OdjwGZVt+cm7EWzNhIaPKDPKLHyqQjuJB5NRxDIE1CpDiqhKGF5i+xUp+E7S + SZxg+m5vdkzYxMvRpHPvUbn3hWf6QZdoJKIRFH52Ed3x7X9Y/SF11t4JA9/SqpbuGYggEodlHyf5 + iJJBULsTdvhTR6U8lf1ye4pXxUly6K2OSfE/UfCDJ+YlgfZpMpY88zq6NNUzrh5N3YTl0FQXafud + 5HfKnZlvJsMnV2/FU5gIC8oDIurhwT9n+efVdjs+m0+R/3eY3y9B8Vxk+kbTD0X59zWrlA8U78ID + AWeQVLKEp+p+pNZKs/ozjMAWje+9+URORmFHjGZdkZ/oCo4LwTAjoRMiQfGQo0euaKTskTNXaWzu + 7tcrSukqfMYDdEVmG0yLyCSCivRY6T9akrHLgyQ5GqugtLG5PNql2tpF3l6OyyQy6ymUIAas44rS + TzmvKdOMvar0ZRqxTxeXVbLL+qXhp8msYaGYBnDcYjNuP+CQPFxZ30RKfHqdyHGBNz0jYjMj4reY + USS6TQj1kPN80I3Y00Fd1Upuzny9mH3vqiECdMX8QftfpIAxHwSxxyPtXO8zKnQCBNCPBfk8aooe + pUj1ABUUldrEes++g12PBj+oQw1XzyBFehNI/r9cVkC8lRUJ49+cayD0A05VEEZ6pQ5CX6fl/+fZ + hc08E8UiYXGFQ8t7/kscJJ4/SphgSin7dP/b8E16O0YYSFPJLn9YSQoIybmk8nMyieqwkODVdxk+ + NhpefhoNLy6V3fxRi8hVLf4mq/LTQXcqD0M+K5VD/Hk3h+/5Or6u1URYj8D9NOkm6TqfTW3wzcS3 + ABDKdRGwGlm9UsFS4F+2KPAWxkI7mWFLE2UwERscjnd82cvOL5uErcTtzU2sMzC7p60CYy46vnPV + jLHrP1jQTZrZclrf0A98z0Wmqdz4dI9rXJY/2LPSRkFlbZw7WiooUJo3IJRRvl+H9Gtk0EPJNUvp + v3tjvvvp/zzyiaIc5VzsLkXAOxeOnGIldoqZhhGVZ3yZbUiVUEtykeIm2/l0/6Hk2keAq/UZEtTY + DYv0FiuSdosTSvseGYr3qTjbvVESCUUx4bTndxSdEBic0w7dTbTPErltpDlSd80mBA0iyzvqe3VH + 0QErYeWdJMcU+5wq6+TgqzyjpGV4avf0A/Dec16kXcpwP+9Faj8x416g7GPcDE3w6A1jzzy/W/CI + nnEOHqkm7OARXST1+M14LYtZlKMSl3jVF2l7VwqhMrzjh9q38qPM1x9AA6GHkmlGTr8DFDbd7srI + 6dehsOkq2UVvXp7VeMu8CIGIKoycoEFEbBQFgqv68De7FEP5yypiT4WLUAaXMfPBJrktwt1gX755 + eTFeYO/kCDivcPHKRKlUlPsl28jMCrhdUs5+uBimNxjkMs/mZhvB/keAfBPNVWbUm2lapyvrQjpc + Al8Dg5GjN6iqht/qnhm3YBlZGjkc4C3l41HghbyOsr3bEA39YeFw8gi/Rbj98jWI7XQxW65oaksM + t1zXbthw23EbMB1jERNBEv734CebJwNcEQVlZqjAuUPLnWplUrbW5hwAolVwH4c6/NdDwCUeI+Vc + kUsflY/x8CzJDsBljyKjBNcj3n5wETsdLsdL+w51LX0pNrjL4CNqYzqqw/SJyLVyE75JOqM6qWdc + lRvdhKXcqIt0OqabiVJzzi4vwFKTQdKxiouWUmYH+Odf2/9u3MpnIHCAUqXyE6nSZ49RopuKwa42 + KsooFSvoHpjF8xPSHgWaSYV8zfurra/WCG/PYNUnswQcFS8IQvOQjmt3bZfS9c42axzi3sCnheeT + udI46t3FUrygLPI4nbSgAniFanoXLHzzjDMZgGrCZgOgi3vC7o2cAEqUTCBFeo0fF7D9ftN8oAfN + JwLkSy9k7sDadLsbATJJrhIgy6u0VZ69fBXWCJD9JK4SII9DxuKEjUIG2qEyJV6vNov7Oao9syXo + QfIQKcJn0m/45PWbsw9PxwpXR3K1k8frrwy5qvJtttYq43/A7cvVl9V/DNdwIsHhb7kfS9A8GrmY + LIOzaRY2MujQKNo2gWgDwGY+GLJenbNYp31jJO1+flP/4KF8r3YzIWwl42GRL+AIriry7d9eg3Ri + Yc3E6U1YCbxJv+jgx473AKdqwWKciIF6balRHRBxnK5/ovDWdHZGECVFD0Bv9/LCASkMt3NoeYHv + 7ABFsK9CtUsS2Kk7ab/FSH2513EByzlwxEbwXVs6DGjeQwVQTEG6+ez2BLuDx8TlgjuNpSB0zwrF + M5TIKV5eelHg7oyj253OUCW5cobSVUVOcfFW1JxxvJKkIMLnvwQJYuSNggThlBRFqJmgJTy8BmCq + F5aLpUT8iP6V+VKsS8ShaXMhlqzBKfghoa0NQgUOd9tZAbBCFBPrO9H3mVpFbaz668J2l1fb2dwA + 3yW3WX7WfBh7LIjbfHYJmHV+1atmuqiN4QHGse3Q9BIfbIVqXL7BbTTNqjgrtq8u8g6886BxDqXL + YQYTZocSwdCYSxebynpt6jltGJWq2y7ye74mPN47Uwhdhm6EG/x1BSRxMsvXc1WiCkoGnICTw5N3 + gEtIn+3cjym1wKdIlVOfOR1NOF7yeNHjKiflDj7weMIJn/uE/1/G9ppudg272FHghj/E1On7XD8J + eG//qRlR/MnAgWSoq/2KZD/wxDI7AtyvOC/7wCTuzV8Hm4kvPRqLdHmbLjN0iB/7Ur0FNWXC/5/v + L2Ec3A1Yut3p8FWSK4cvXVVYyZ/+qPFzCy+q8HP7z8dcJMKPR9xnvmaGelv2Uvx++Vrn7M03IH/S + SLIk8X8LStImAOBYRJbNpwGAi5Nr9W02XW0k4rldg4x/IA+kGZjcxkmG6d5mT3oCPo17lRMHzIr5 + 6ha/UF9rfGlcSpWXNgysUnEwzhubWxUXx6+T1XqdbYbmi3I7ICQX0N1qka3gOJA0RFN06eGsU1si + crbKu6bZzWwyg3buf4W5tFtoQAmF8gt/hskIAkr4GbPlZIO5GSb2lF7n5GW6GdKLjdXWjHAejZrR + h3TC1oPXl69ifQbB2R39DTH+CVbVhOmL1V8aHeeTj/PEk52jGy29GGwDs44e2yBghJCBi4D+sMla + 8QTbjppHEo7yOCkFePNsMp7cZYhaPayv+a5ndz84+YlHyEBm5CaKnOXYZBufCiVbNrbOJyad6d22 + SddpCz1I5cSvz14eeeoRQ8Dv7724w6lHtzudekpy5dSjq3Tqfbh4WTv1fB8jHuVTL3o+ZmD1x+EI + LJ9QhPtPvdUc5Decen35UvvCzz/hRDPZzIHvR4Mf4eTSU0giR//5j/csEu5eC7rdaQopyZUpRFeV + 4vTxD7nh2pOIh1FlEiHNBOcB5yPGYWjiOrB0wZtLDBDLHTxWm0eKr9avmP1x6zTCsJhIwpr7QAkK + qoLa8nEOCQqrgtqcBLagYmLbkEGXjZBBVlCgMjNLSlziR2Gc1FKTQNkZW5zPNXAdu57Bj13k18gk + DtBKW6tLJIfaGLz5dKE9C6Qtg0YGw0bdXp5A9qdVmn0hN+lcLcO51DqVlDNZ0bNeqQKe68ySOlkt + DcwLFkfdgd2U5UQFm9kt2DptUVZGJX0rlTGk+vzV6zEf0OrR2wmittGxT3hrJvgvIeN0Q1KgZgh2 + jhaAWi+jBQS7pN0mhWO7PELogLmZbXJV9ZHlWzCHTcaTjL7U2t0DCIDJ5fhAuYnGXpW9llGKNKzw + J/Aaf/jwhpOn0n30B6NLjD3t8t2ncZ63Rl96ISR/aN7wAwmzlJ5kdkKXM+tIwuoHKw4RCYUj1C5x + dI2Co5S26QD6UaAEHPchwgupGERvSu1imvhNGadoyL7dfdS4nBcZLr6Zo8ryMA3tCcwwTxeTCxE+ + QzzeDqXk9IhrIblqwCojp2sKlvVmIhpIPdXXN3N4fnr97t2781om2BWIGqA8CTPMMQ3e+0nQWkNB + PAf2SyLR30ydbyiiEypRfXOgQm2XHu3H0/0Q+EaikXzGuW3Hp/uo3GuvQO+hxI0IRhrmQ0eYx0ag + C09UAE1ny1zR6xpPo9M+qncbqsn4cMnDDjUZdLuTQaUkVwwqukq7zKeLq1oYGIvVbXMqeP5LlIiI + B6Mo8SWU1j6bfLEB+V8fzhP9mGxyP44Cmf/HwASTqh+W3k2z1bf7xgrpEW5M0508x4L/UJwGsFMt + V/L86gLJiROIUx7Be/ixQx6BvN0tj4AkV/MI5FWaQJcfXtaLergnankEvh8lMRv5fsIjdbCda0dE + gWRkx2XrTI2Xi2m9pubv5O3p0icD7HwTgWZBQgw3Bwj2DqGOPjzL3g/0YTGhgn889rsE//B2x+Cf + lFwL/uFVWjGvzt/VVowQ6NWqBP8iUNI9bxR5kecrMKGLbLP6NiOzfJrNt6kYyX/4GCyE+/n4fHU2 + xD/Lc280vMu+pZh1X0wliQSi6pbyoRjDHcWTWOWEx+SYW9dHQ4QbWW6RsAFnIHoiruG7x0XQQ3Kz + 5gQ2gOOQbuFQxayHfDSENYUIp3Au7ibwN1rHryaz+jpe66/LKgs5alvICZwWcVxzbuEOPCm+S3bR + 2PRLi4OLhVVuVZtstNSSWejFh1Z7xMqHAf3qwAcMfv6RHeDENucij3xpZISUYk5spcdmdhprICTu + hlK39yAyqIis9IDTvhSzwOQmHJ+7SvpvaRk47omHn2tXuntLOlXMaq5rz+nTThZ6IDWUeDOOFqQP + FSqJeH3p+R3Yt+l2p0NFSa4cKnRVYU59uBT2qcJ8weIgso8VET//hftxwLwR/BPHCkX9wwG+Iu1+ + lgBmyqswkgkQthP6brdIl8ND7EcfLi/GVxjY0+aCqB8FbjRB9ikRilbnvh+IMK6eEg4gZDZKlL2L + tzVQy5tsr1/wWVtijJY4+CFDM5DTyQQKEL/Va8UM3F8x/PD4owd8Eh1ppxxS0k/CBfyBmH0u2fYn + Ih7jZhjooj5Qa595HdmF1TOuRX26CauoT12krY17V/Q5qYoEad/Dk3S+vkuHwdNB6y3qDqslrPnj + niKN4FGsJxeenGgMgWUyqdDr1HlNwoAyrHbXM7DssI638I+a2ZCepNjA7h8yM5YpzfPO7S1Xy/HB + aROwiExO2wvc0hsPUe5bf8hhrv88pZfODx1okrZTa6pvso7bjtadEk0M2SxtRItnrHfWk0uY/dNh + hn3F0O6K2OVOkNRR8H49WlF3m2zwHmHG+gLkOj0/XB8WlIv94b3nhx084PJ2Nw84Sa56wOVVVQh1 + eYHrouKPCZKw5gJnMfMjf8RiIULlwfyDqXi2npVNKUYjXZ+SDxfoSINpO9ziS6fw/xM1qpkCC891 + OdNmLZK6p3O1gMNGbmN6/lsORV5BXb14N7Kyrb2Ii7g1qYhVk4qChxNWRgeKPR+UqqPRWi/eaVEx + S8LQq+rhPWQKlRxBuo3BA4z9QE5G40MJPOnRhZexwnPyO4L/GNPLw34kk3Qnq9tlC3ToXhYZAh89 + Ka/kUWSn4NyXh2N9iXTpkO+CDXcoUYaUer2O9uoGA0rmIAeQzrirTI5WNb69Hx4m86Kaz6JPAUPq + wM+6IvGYZ5xpn89qSDzmoqJGqUB+/HUzvjgDw1iewxKC8gY6I9uU2DcKsZhh4Yfej8QE+RH2dj/x + +35wPvsqFGOxihUxHnaJFeHtjrEiKbkWK8Kryq3XFJ5nQVCLFQlMYA1HcFIEnB0qFAP5/0tS5n3G + ZI5rfyAT5syLyfY3R4SqJztYmNTKoowiE0ukKZjpKPAHAWH0FUroA6dXL+HEnCzsXHTlhlHPOJ8s + qgn7ZKGLBTFM4rF9xDBPrljyjMF/zgzrYStRTCKJYpIxo1NHVYf8myjG+zdRzL+JYpo3BO4V/GFx + 8MxLOrKHyWfcucOoiQpzmLxoNgQcmD08UTxpW/5cLn/4L/KGhb54VIu/kBBEZa/dzWp+hF4Yeb45 + GY9wKf8MaN//3kx+os3EGMkeGRp3yPKX360mnw+HzvaWkzOPimR2S1wo2fRIcXqzYwX380vRjdnS + POPO/UxNVLif5UW12d1MVBrb2dnZ8Ab08Pk91iGiBKLiQT+DVbZWr2W4BCEDlESQ/l5MkTgv0hy8 + lpjJXTb5vF7NmuoOWmuteOg1yeq48SlTtiqlVLpw8I2ImD4pFBk0M0zyefnxeojxx5Asi6ZPro3l + 8Sv5+CZ6j8YJJggR8TKdsmh4+fp8PJ99tsJpB4OQIING93x7w+LjZUjb9tX8ljWK+F61caeXb4TU + oyhhMk8X6+F8lU4rCA+HI7tOYrrMjpMxCCNG8X7q4xz6eAyb6QlIUnqD5xrKKBCdoIzgdlcoI5Rc + hzKCq7Spv3vV4KGSp1gVysiPmccw7czXtB57oIwC8YBQRo/KQ+Wh5q7T07mw/RXxEf6KuJu/Im7y + V8SqBnG98rVPHCHKSghlSi/5PFuiuDqCmfX34RUIGqA06amIiA8cqS7isnFQAsvbB5XXkE9znKAH + NDyMgFOqMeBpSn/NZ7dLXdnfDV3I6Ozfo66j1BhxDOSTFT1fSHdVwwLE76A3hi0Xd/tWboJWCcJj + ZvCmM9y9OjqvfhqYw668Ur0d+n4YWVCGar0fDSccWTk+tW3loHj3nJ2TmzpdZ3BXe09HQVZr4aSv + 6tExzyll/uN7L+6Q+EO3O2kuSnJFc6GrqvT1/Lc6HJVMIihrLli5CEaH8EdY+KrrsNo0l+Uc5NdL + XzF5q6GsKWwF7fkJQmsB7PMKjSo0ha+Hi1bkEz2kGfNQ+zZYEAbPMCO3g29DPePq29BNWL4NdbE5 + Z6CJNkRLQceF7+sUgR/B4cEjheQFCmcXJC+83RHJS0quIXnhVVp9f1ye1Tg8uPyWCo6XSIQI/ZFI + fJYcsBs+z0F+Q+H53zGyzQIvPAYMrrf1F5v1x16JblAp5hnn9aeasNcfXaTp9GWRKkvlSzrZrVBz + xcPSsA480f7DV08tjtD/pKwe8kIaJ+OrAcqTuf7QXYPHAqoaKQAK84lo4RSJVy7OERYkxAVoekdW + JU1Wu/VcuZuPf0EQTq4oFE6pwffO0mtWHUozuuXxLxUEHuXTyecNLGpXaapA07f6vx1ktUFLZ6Ef + Metx+rCxeRVcg/aEbPLi1TpKCBbFRUfZ8rZfV+M8k95RW+aolKdBhLpdeuKAQtowmB69o5wWCGNv + FkJ9SI521flhUhS9VHvizEbbGg036mHY36ycRaeil36a6qAwE/jm2aXHEndXH93udGQryZUjm67S + Hnv+8hzPDevMZongFd4t8XzMIs4ZG7EIbHClIF3YBqIqW/ygKqdefYNd92MGk3XzmSrZYdtADMP5 + 7K9M4iQS/CG5AtbIBnK9ms6Qn2k7lCjF6TJd30nOEYX8lJuyrAyFw4w0YIz519kWzioYqBWhb1et + Ini7l9c3fK0Ui/PphAU1teJ6Nx0us8ln++xPWotEGY/BwGhKmK98lo1LEMQsbNNTsLw+SGqZ823G + uE3yFbVijzJMJoqrLF+oYIDEWhWrlzCvJVeeMY6VIg6EIvvpRNoNpeZXtQvR5PiTpwhmRPX1Iy8J + D73+4KecvS+qwDHU/nSWG1+a4ipWzsl37wZyjRtKYi+SpCY4wlrF1DPA1Qt3km+2kQ/l8fp6vZDK + INQs6/p00lBEWZ+7zh0fMRFr17NMxlRzDIb5O/pQYfcqe3GLPc7NsZkIG/3fbLp7ld0f6+JsBLJ4 + ZH7SBw54PjZ3o5Bpf3++uvSiDuj3dLuT9qQkV7QnuqrqDD9d1AnXEkzWLytP0fOxYH4gvJFgoSxC + 3OfwyDYgvx4otQs4Kk6P5Cd2enhxlGinR9cqF+37EgZ0UcSdQBfhdlfQRZRcB12EqzQVXr5+U9Wj + 4Y+JXwdd9EMR8FHkRxFXGPYfcG7nsni3jN6EZItIvahzCmbT+/kMb9yu5sMnby7ePR2nS+gp7Bpj + cDXiy8md/ivmDMKIYYEYHDo2NY4m9V7tcsVxM8IKBRxevATqzsvJV6aV55c3t3XdOfsGHbjMYanC + 3dJrlZrXGg3hdYu3LU0OPwxbyfAY9zkcVtFDTV+rWwrHyRMYgHw3fL1b3s6eWhIT3q5gW+9aqMV5 + tpuu7u5h/OaaPMjSVOG5Fk0VuVFgKwBFdYf73pcMCbe+/zzB2YEntAn3HjVxBrg+CoDNgA1IO4uM + IiKbXW1uwY7uRChfqEZMCoN3lYebFIovrnq9Jm1PwSiOijyLG0bPWVc7FT5My8FJh4/AXL9N5+RK + ahwoN4eVR281STfXK3TcoKlyLC4JuY0oTROXf5GKDRpv9yEMQhbb86Fr3IT8oJXNp6uGchJxk9A5 + DmbJdSduMu4o2Bqrog5+WzUw0BsYXOyTMYO7EJJ6LqerMRuFYwIFKe1NPwyAohCUxM2CRvInMrP1 + tgmmC9J6dNM9FUjvJeh77ron3e5I9isl18h+8aqizfnnWS3UDWs7rIL0jhnzQi+OR/Bv7CUqopLu + vs3gkKC8Un0WKNqcrylvjHZrCNsNbpu7+W5RzEJbH41b9VEWBCLyxEMd6K8u7RMEOT9KG6TtIuJJ + q4tIveXgrKmXyqffF5ArX7xwdL/A/FSw2uAxbWc1nrXwoauU5uJN8Qhegxuk3HmWD3CUDRowKIwD + PD0FIaI3j8lseQeWo6S7PXxW9RKtjmLR/jqdZe35tE6hmaNlPcThIPvZJzDx48g9+i5L8QWjakqD + H9YJ5l4Igwj3lj1jXRHh6BlnRDjVhI0IRxdVUutyq7J43s+m3ITYnlx8ePcSVfM49v3o6cD6o2HS + wGerd6JAGSv2dRGeIM9bUauxyRaraTY/GCY7lVCjLjDifkP1GyWUStU3zSfptBNNZBRXaBD2v8GP + SKOMWVL2Oro06ceM9gBr4A+rTCdXPThnY3wH6AyWqJj7dJZO7ueo9mSgFv1YHA7hm6T4N/wZEx3h + YegZ56R41YSdFE8XadeQ5A5wAKLpjAbRNMMQhEwyKSWWuN1VbhEz42HjoB2EK+7x+80M1Ax06Vp+ + bOWB2O6zwpyzSxOVZd65hZ8sc9o93fa75uT1aXf5TNDyPf9wUZpyvWAcdpT8PXarvqzA3nYqjX17 + EZ+Jjjmp6hFHPUc3UFZz1LUSaZgp9CASGlUlWd6A8s+zupLzeRZVdinTHuauhonGGiCIMAk55uAW + OjjXKGxHeULZN0omfnL5sZS01EDF2KF29KFr+FVm1GFqvoPvrOcTwWO+eu+xDgRRdLtb2IokV8NW + 8qrK0/3tPLZdB0GUsIRXw1a/MMGiiI9gmwCFRqFjGrjhyWr5r90tmbDZ8i94KcqTWGa30l09v9ca + L3zY7XwH92fGFAeVcgFzkZ7GhAd5Q15QihizxCjMN9ineAs6na5nebnU8snr3zA76+mLYn/HNIvS + W9E2/Be8CrZWl343y7fwgtLdDZvNZqW8IX9cT+Jjs4/PDb5kAodB6FXdHoXp1dCXzRk+se+1pCJZ + bRQ4mWowKsZHdTjKAZkg4qzNM8LDOAxZlTFFa7lIeVXpWSvnJ2BtaP7NL6/lIu3bHrlgkicH5A7+ + 10zbAS5uE1uNRDxQPVQ2Rxo69FeXKuzvgHEuZ0n5XRsmlcu7IhOyhVJTl9FBl+BKKWkRNt1tcEKc + 2C0tgaR+UN8dmwrVd67y7bikbpQwihYrOz29Qy/iziJPa7dNyfWtAwZrvO5gMS98En3Pd0fcw1p6 + e43pD5nPbo9IUjpe3AGeHUpXOk1KotYVARqVt+Ze3tLnMamzeDJQps0p9TGCSqzeXMLm4q660e1O + qpuSXFHd6Cqpbh8uL65ELdGEhV6FEyh5/gtouYwlo1h4LAiP5wRSetCHzToX9aSP0zl9SlDfjIsE + NE3eM6lPawtG0Uizzepahgfy9WxT1zASL7TToV9dlHnkmJfwJGIncwUVCqN5z6O4ggY0S7QWIEQS + DdRX4Hxv+tr6smqDNBXoFZcmovVmbXByhe/4Z2QOOrw1FEblT8og1OETeygxFLGuUg0D98A53e5a + pYqS61WqcFXhL3/8R42rk8v4h12lOga9y4s5Jm1GnoouvWqMJdolT6p7TBqUVNMlU9dvZxeCVaLt + WOAaBpP1oIPoF8MFrAvducOvs+2dGdJ8NMSOmGKGw2Q1Xu9KKO6wprPNDJXk/MWBtxv8+epTQRYW + +HE/9ZKUn2PHrXR/HF2g6AlWnpbHygkZhUlU7H1Mhh5m3RxVVtgpKN4Sv/7hcfUDLvFDW15zAtop + 6VX4uGJP2Ga3uLV1T68yWcOJgVIM3wYdg1DFQ85giroRG01RXaX95a6cFK6X4ss/XrMoEBpdsWAo + KMlEH27ABeEPeIyOyjer+e3s6NGNEr8Qkq7XKZzi7lDNjg93iN84SnzA3L4+J59P1Qvnl14SudsS + dLvTQagkVw5CukoH4dsPl2fVk5AlCS7qsikRPP+FJyIWbMQTXzCF13A1m+O4TREjX5annbERbC+T + lVQJUoK3v159G6s6ZEWZI9MTVptMKpeSnRgr69RJltNRdoYJhXyNnatuHN6l6znozeN8nU3wPJPJ + u3YKBXrApjN5m0wg1aRLbxebtM5FqgMGNp+R8FsS12KfMThoqoaJ/QLl72r03oqItTWA3GteXLUg + 9maMyDyNW8oHNv1ipbgFojVbXTU3qA1jyrCAEabGCzOE32vABnJCGt9lmBDbtAgKpcM821HxOC0D + xyH5PKBIavcBc9lO/cCnMsY94rvoJt8vkt9PNo2IvIYpUCEu6iyT+XWZjUvYpX/QgIvr8tSAHf2a + vggUWqA6J4sF1b079clDxVIX76EP3E0wut3p5FGSKycPXaWT59WblzUTLODcPnj8+PnYj5nPxUjm + cSkf1pWyzpHRnWn3xzLNJ9IFvprfK/61MQzPakIavMkH/Hh2/tRK4DVGQ7q5zbaS3K30nNzdyqEZ + Y2W9gLPuDnNsc2sg1Ou8Sef+moYcB7/J2Pr0WlyrE+rV7bR+QBVg70a9VnVJr3afob/TpxVEAdEW + GEz8mMdRUoMocOwzu5Wg9QAD1ShJkhohN8wt5LBftgQ0RRS01j+V37sIaNbf2oxYLeDo+36bI1C/ + 7uBvNJ8GuK4MllsSxD/N+XmiZ6EvHwBi9Uub+z9gVi1XX1b/AUPdHAZrJb1ocn45nbqnpsIdsNUD + at1tYrscechLEep3qmxVvx6o5D+CFKGFZ9DnBfnLmXjG/I7kL/IZd/IXaqJC/iIvKszAHe5233BX + ms5yfOdKdujigD/fJGzx0GoSCWESFjwEIUxMdf2lVz+xZLFjiOCwPNh+KJeyKC+E1b2ErgWTAz6u + c1D3R0cS3N0ef4+wgntKahT7lclYrKMfmwjqm5IXFkYdGU3NM87oiKoJGx2RLtJO0xrQf/JK2HiI + rXe+EtWUUNMurGAeRZ6GdLeQSawMkKOTfB46kahzApAzV9Jxu1Ezo+MP47E69FB/KbiHXt7iwc6W + X7L5au1c4vcTFwickJnj/FHuOfmuIntK/AnjWG4AiPE1LsF9HSdV79AEQP7uvRd2IPel2508G0py + xbNBV8mzcfnxsoYIxBmvAJCz52MuYi8JR9z3Ip3ef2kOaamWTw2ZDCbKIUWE3N2hhaej4RztS61f + vJBGIvzBnOp22ihiPIznMJIysyrfZmvpe/1owcVirTT8o3NfZeZGlZIJ78Fr03SRQvMlJi7Y0+6+ + pvf58Mss1TB5haFYTVDRvvnL5Ub0AO3MI8EjVqsqL5SevL0/m9OsI78dnTBORBRU4Q+rPWW5IXjY + 6puJggShDge/LwmB8OtKDa3xHN4XnaZUrENzZN90cJkKoweZBPYEGOBCMfkFgpOroheWtoSTai6r + 9ez+cqyBazhqAlBY5LaHOqmuwOlG2/ID8klLzx+ddpUQwLHTYjqSqe3IJr4TVmB/hXywqzh/Z8cs + 335Ef4ea5pOSyAohJ4MZ+oRqjst5dXTXaL0jMD6o+C3znjHWrZzZPOXshzLN2J4ofXlPMgma7NkG + vdWEJ1VKJynLlZReSTQ4Fpmv486zP1WCKuZ+u2RBB3Q/ut1JrVOSK2odXSW17uzDx3qmhDR8ypkS + /vNfgiAMvGAUBDELlEvwXSk8ME13t3cIzyshrvJMZrHoQ/UcwRfIgXL1Kb2ezeVElIrS2WJZDxEh + uFkFp1q0qkghxxhaLQh0hLLVIqljRoUtp45zrZe1jf/D2hO7y+KMWqYBl0tKSgUnWrREn1oEtpSu + 7IejZsyz08ffvBs1NWUgqS2goLY5MxoukOoNTsOGzwQlDqfUpJhScDjSlHqhc3FyaBm0JMzMkChw + MHyT2TIbb2aTO9S/EGlmAXJvMDpVuC8kJCBVu4F22IqZ/eTDq49PB7hwTEaHCCX0NHaHPJld+7K2 + XeyD7vvhiM/GLyxHpHiNI3iL/zfR3Z2q4sLmZznlcHc86IPpI6Xdj1Q+Bfc6EC/R7Y75FFJyLZ8C + ryras4t/1LDg4BgS1XyKXxiSCwQjFsKxHNWPp+UOXgN9sLhDIEYMQpPh1FPYl7ilFLNQnkyf1p/r + aHGTsw8XDR5dhRzdmFmQBLzFRo5iMOiS6Mijq01QKUNh78u2EC0krKUR6N4Yer7tWDuI6l3hc/Bd + mjGn0+XZVdFSA7+odfbxsI3VIvYSj3t+vwwPB1/+BKhcJoNTMPCDAzPPmHDGc2a4Gb7AQahwdlXj + 8iAuPPt6cZB7Q7pY0nyMDZagt5QL5AU8fDe7nikXSt2ZM/xtcs+k7wUFpdc5+V5v5GyEt0o3CO0r + a9Gnu+UUDweZPALLDR7DdQg/ifUAV74+X0PoIHm++p6gHexLmrd/jypdH0pvUIuj5ecngOCUPwdD + tXdluKgYxx+oicLcddoWv4fIlq/721LIHhBPvgDHg8DNIXOizAd94T3q82NxzzwyrgnfMCMG0Rnz + nnlJt+i/eco1/l80Y2UAmMuKQ+LDm+H16tvg7ez2brxYKZcBbPe7tWQ8U+ggJVjHcvFQ0QZG++NI + w9T14YRHi7YkJZ11jWojPW+xFUkLtp0t3D3XyRXFs6vYnyHHUgTRgQZICkJ/YX7gglbMu3daSWoY + wy5ddLCEobn1fppP6AgpK0ClIFa+nS128662bl+ZIEqcHyQ+nXPI3VB3jDz0UBEQbOKZZQcf1AwI + 23OGyAM4IUKqFiz5vzoK6Az36FLl4txlJ9fMdKpH2U+OqY/Aolr2tXjGOqa/qWeca2VVE3apLF0k + l8c8X6iCEAos6wlbz3R8ki8vP148HfwRDuVP5Xxnfc97kDZAkbKQNsHAh3RYEo+Ali1BEXM8EmVi + P5qB8rfs1KzHUFCG3UauZzKIuyvdofTpKOzGo6XEHjnStqdJEbHcR8o95ijiR/ktQ4Jnl3Nk+Ed4 + yoZ3mi+zt6xdfa6EAenBf/i/wnd9G/4RwLYwG9OXtop0Oi9ExIUe5yOB7TlBNFkzpVLbN6JtLMvh + YCtST/ew7rqCcQZekdP7KgZduGNOr3zGPaeXmqjk9MqLCsZ+MlUwm7e7dHk/H5cM8ewbfu1tVu2b + weXd6s2r18MreHYAH8mkNi+E2sISxYqUbuCdNhg+2u4WBZlTJ+Owu7ADsZKTQzUBVS6sCRJ+P3tU + K6dmr2j6SirnEpKrqu/KT12sNuu7zih3YBFT2KwSLVtOV1JJ6SIKZjCl8jd4whSWocFig0tUtqZ7 + 5mbXHIRqbSwm9N/Ke2M8cj7L7yRmI8xnRAnYZstU+0Gxp9Yrs7E6NhZ4tB/ZjcES6eb921+T68UN + H3Q+ncA8emOzhCsNbD9U5clRPk8xqlbWpeOh+Vgz0B+4Hq47m0Q3o8AsW58TxOFsKyc2zWnkkG4j + lGuSwlkg6lNEynR53heCAAoIgwAXw78ymvvb2dpJRMA4oTfJVzj4lNTiPGIVcT/Muo6iR7BGuL67 + NXIY6/Z42Z0+gDjVytvGCXABvcSzA2Z0oiTgHZPZioectSLdiK0WqaukF+02mQJgg59kFryk60nw + TOTB00HrVcnhw2GrIddm7MmluESgZDh/pe672i2npxY8siSkRY4vchrgbFe/Q+JRgp3qgmM95Yw0 + Kfjr5+yYGjkjqDcOP1URvp/DT7JYLsdmQJ9c77ZDEDVUtc1PO5H7GXupn4LBgEgC/88l8zsg/dPt + TokhSnIlMYSuKoindw3lKKFnI/37/PkvYQLKdDgKk9iL/f0E1f/awBNf6zkfSncorjVy+MXCptDV + HH6Pk5xawPJSObA9BMZOXx16ZgnFdw3bZBe+a7zdke9aSq7xXeNVmlnvzv+sQbiIOGA1vutQUiCN + 4B+fKY+dTnNswpLCdAi5+cE+lG1VZqxMOSzSlAqndI3tUbvqDADEqNSAMm1lXgVlU5xfMPkYfA0f + 2WmXX2Y6BRejRJgSKQEhtW2SD+fp5DPOALsEHD22tFDeYYZHdZV8SSc7VAAL2Lh2tmnQ+n5CYnc9 + uNBP+hH9Lr318Atl/yHO2BdYRMtarss0u8k0NGo2Xy1vpbuXLG/4MpmgY3JYS9kmoAZuvtBpjDO8 + YKz2YuUSpvO5TMZMY5q5cvLqNUzFiq8vPd4BAJBud1rDSnJlDdNVBcN0/ru9hpkvWBwEFQDA+Pkv + 3It83xtxL+axqlY8m2Tb+3k5tG4NLq7jio1/A/ZKLhOZ1fpFvBGsOCu8DpWg82ioz3MUiSVwZS+B + euYNl0v4A+y88Bb5i2E6z1f2yyCdgRELk2S62oHqP87x7WEGgOr02USpCZJpsmrBDLRiYtZaiBKv + JTk9SRKwhMLqYk1rPdiUBchC32tNxmdx6AdRNVOvFHS36xBj1irI9+MoquIPdqlqLCM3lb+3lovf + Pgns1PywFRhKig/+e3BgCl4tJmKtejkt+7Z6mZsvisYqiXUNs4vKa5Ug99k4wBVqqiQTLuQW5BFE + xhVNeHz3hmxzJ4dGX7kejlJaswl51JD6cFDcHk+1S/pJc4ecmLbSR/mBHN3Dq8Xdwd3or2ytb2gR + w2KRqLRSzFnAyjFpY93Px3PQeCXAW7HSnJxSQRxJ70dLvsMJn94xlaFpKnR4fG8u3CluTl8ESVh+ + ifJ6uMEqm4P+ARES0Fbx+k40z/r14XH5+pQnMz0FxDOOdUrDmFpS4kr5Kz/C66WF9ENfCXszvQtS + 7Z6Qd2gsRp9cVnt0BZdx7CMVsm/vSKDIdLzE70Kmg7c7kulIyTUyHbxK+u9/nl3VbFgWCFaj0gkj + zuJ4FEagGytHpG2TyFq7Eq7jl3QO+6JMoVB4A9jhpFv+Z5o3w3061GEWSpCAMzP062WYdqFtRVji + IqxQUL9gADSjz6gCs9ishBWg6aurQrKE8ayogqXukbYXLpamChLRhsIRgcw4qLLjOI3CAEe9oMbh + oTOi3n4lyGeUb9XwUdIEKSNTHtkC5a62d56bitNdzClwFqdG8dqUmh/OJOQko1Ev6a3IIqZJa4av + eaV2FUqBwn1r36mXjxJ04Jg/uaygD+yqnknlAo1u4DHfHbSKbndEN5CSa+gGeFX5ci8u6ugGPhoN + NrrBmIchdOGIw3mImZH7ogTXG5A/qfPFaR/ZjVa/bLwA3ooXwBIRcM5qB572vu31o7ZKfbx+1PNZ + Pr6VZCcKSUn6L2Eu3oFMLN6DYc6mq2+SDmq1yXRyG3ojzMRGb8SMntjepWBVwVBtWsTkLywnOzpJ + FNjRl0wns2s3x4vhdAXTEz1zOOcLXRCE6B6DC6sv2WaerskN++by/4UD+E9k8ABAqZIhzJCCj1by + fDrfds+gF36QGPO7lpBf+5rvJ7jdVSH8JAqrX99M03REQYFf1CcM5TATqUcOipAztIFye0tBTW5v + xzP3NDahsHgYuiJzPekVtPEE1hI9vFToFG5GUye6nxq+owjlMSHXGC63JQIy5bv5DR75myORnhKP + yoT0UGEIXCZ9HWlgBp6wbOfiDU+DRiodlhadMyLXT2dg75uondPn68MyMrkpWLomumWmyEec81Ko + ATsrRV6jQ3Mi8/3kGUjZO5iIqzm6VD6PzAkcyDsxEUV4/Nis3Hbf3qn+Rk7+RqqiUO9tqO8OJUsW + 7J79yHPIjU+o1O5Q/qjMEbEjyd2zSUHraSiZ+0lTY3mij9lyY0h7MUYogHTpiI7Yfpb1AFfzo5JR + j8jshIcoIVKe1OmxPHtJTEVGxq2ey8335rDY/tkVj04z7RdwMSFl45hc6t4K2AP1Bj0U8zlJ2+sq + jU0iWQdXKd3unEhWd5XSVcU7/uYD8+q0uVXecUwlizB0Eo0inIxhHWPIdpzCZoKlc+UdTvGN3y6g + wQN846XyTsuc4mEr8R2sj8TjNYOvHNew+InCqDX4bonqHHwvo9c0CjrYURULkreJZ0mEm3+RmjPr + MBwvhkU+n4Jyth+h5T6bVpJ7JO40dQM8VlhIi21Rdj2gWVVKtgsG6lsqvrWWmdJpWzlebHvc+lSQ + AwcBrY33WtE+UMum3kH7Sqgb46adpTwYdPHpfl4ftNmg/jV6zh8+FJ0KuZsDr8dWgOtDI9E5ol4H + 1FS63TVH1KujptJV5Vd8/581WDoRBUEtR9SPfS9Gmr+Q+WGRXgYq7gTPd4reQKMj4wvLtYuqPDAW + TKXarCTv6AzdblMwtAjrcl7O+NNQdyppc/6lDmfXIaZmM8yJUHinROiKOBoHNTGKa7ByaVMvtTDt + JfE+7r7iVfuR3vLqhWcUtNPJXYYQpUgPrOzm0rgYY6SKppp4cfV0L6Opct/DcC1lhzXMIMKAyxU1 + ws1skyPc4WKBeq6Cw5+BCUBYqDKkSBEM+4VUVjKKIKo/mbCSfZGzazJHqBqJ169g4FabvDx3Yavu + c+4OcKGZVNWISRS4OAyK6FClS/fad/utFcXb5j58XZH2+27iVBqwB4sgJgTZ3rzInMDg6NCmtBo4 + 9LGeeLc4IXelN6R73A3av62bw/NYWQ+NDFY4pMh/v72b4dwcru/htDSo+0cNxMkpNtof44WUmfn6 + 7GUn7cPtwX3aR0j09i8vfdHBZKXbnbQPJbmifdBV0j7eXLyTZPWW+uGFvl38JMLnvzAhGOfBCP7l + 0hGECsgnnBrGjVKlZ9Q79Px+ApvQXA84pkPC/pTDvqC8nDAnpuUFLWte0uk0H8L7yZNgmX2FfU0f + LRjmU43lLxS568W7N+OrtSF9JU3lzXrGopqqUg5VNEeRzCeVzlThsSismI+j0hGO4MEiYLyqIMAn + jHGTXm3sj21REXgVbL29DaMnpNttOjFJ2tDgUDdYlPRb2fI8CFxaGTza8R3IiauPcx77EjQ9DDyK + gRU9cPpxLntLbq4OvXzQMqVDlQh0m+deV9OPKrAPzOOOX3ySg7RjSHC/aRkRNG3bImpVAZr6HRfX + PmHth1sLr25oqsDF2+AZ492KwNUzrrE23YQVbFMXaTPfrOeBp7BxQu+qgTj3fTBo/QM+LQNwsPs/ + BIPu0dmDvQU9TqKJRSZnORULJmdFQtYfk23PVLQnok59HzLbUxo5gNFGSG/BFUHGHZcNB4o1YeV0 + F6E3Ca4IF5mfdCFcxNsdCRel5BrhIl5VgYn3FzUfE/cqSh4SLoYCztJRGEt6D9xGPszX5iRGLyq8 + BqjB22wO47FBNpTl7fYOI9zQH3MccF06djm7YeNP2ZxptHepLdBzVISmA6yqFrGaVkX7xGpS1OKk + E3SPypwz6LnrbPs1y+hetVRkciw6HfDax4tzHSWZr+vuKgNX2KDpScLVVjeQFwc8DpqpfZrS08Og + 3aVUltV/Yp0auLGO8s4WWOxtR1xCLzz0doMP96DMLcfz2edCByzhQ5qS9Co/7QhX8jLDqvLyn9eY + iKf3s9rDMtI4W23qiXY4m9ZmOkkdUvl28uqMHOCMNzWBPmN0npF2KKEfs2+yL+TqbY2C7yueC0mY + 7g/Vt3Dn6ki0pqMktr+hH/j+QTDh+hu2MDD/QPrikDZga/Z0fYGgBJPdjW/nSO/XMSd5U7B9IKHU + OGsW1XoeNUwLfRoJTcPH3wTPvE4qq3nGlYJPN2ER8KmLdL5U4PjP/8FN/zypE4LYlO14s3J4NnCH + 2KTtxbsgaZ/wQk3afjSjhrOCE7GwFUewLLUhTUz4YX0Fu9Qxu77ccZuEE+jpsSQg1h7YMC2OH4hj + hLdq13HoBS3CmvGjj3zpE9vZq5gSuMbbS8Y9d/cj3e6kmCrJFcWUrirF9OptvbgwYRXF1Hv+i/CT + IApHIuB+oLA1wCa/Mu6+9myNctoAqYP53d6UmUPxRhtZgvtJLeBYrr2xFTbeFv+zRZ2SJyOE72Fk + D0uI9UusC7iZakjN6rkiF6XWh6PhXZrjl1mOEonFMEPwMJVYsZjli3Q7uUOIEXxAjY8ssngF8wDs + 5uEHGLgXlT2mxJeoACAW2QxL7wc4RYwmx4gc8e+WpcIpu1F33rFv4Cjl+yTLmENMwejaK+xIFGIm + VHbuZIZrBAYdp8lW+jxhNcNU7CbRF4Hn12dSl0H8kdy/ck30lVB6KpvCI6FFQr+Prz6kRANT3bnc + lPgkFuUllZ2A7QAHG+XJI04qMXPdLzBlAoTLmdYl9ojC5LSBJ4qBnyFrNelwm+EUE/r3RkUbSkfC + wPBX+G/DZ17Ujb+CnnHmr1BN2PwVdFE7tPNEO7T9Rr/1VTJo/QM+PSakd9gb/6Yu7aNS8k/xg7NA + AWlT8YqD9/uQVz0qfQGC+bjK/bdX/ft71fvwhxumepZ0YqqH212Z6lFynakeriqz44+X9VpuMA9r + TPV+lPDEH/mxxyOV8vAHU+wnZ0XQl+yK3bRuVyiiFFZxCcet7mUWI+STXzUpLttS76NKvgCyphdm + RQzmve9VrQpHqh67PDyJK+1U2xjUe2Zk7DOYcBTG/4ONz2zXbuPbDHCICk50Bep2ItXQPnduP7RA + D0zoc4ibRxF97OmCQxJo09CT1k1J6nF37VObLQTJHL3Z9Oj9+vQd30HCHpetqecVZ4w/Y2HHNAP1 + kHOegW7ETjRQV2kDBVOQqQjhp3cf4OtMtK7IyRi0/sUc6Z9QzEAKk5kHzGDQsyLzUEZBOprCqujQ + Vq0sdKHuUrEKnJXtmyPlCJRUllMO9Nh2KBgdOFRHqwGBJpfYWnlcR754GCi3y55uPbqNx5BsHPmi + 7guYLZfZ5ti6VRDZ4F6oiMSImx7QptVyvBb4MM0/ntQx147oIyNNOv2D0PJwmEl+ArSET5vBxfhi + jDQMY4K9v89n+RiG60u2PLTA9rbt3EMP/B57DQLFG31+zgR/5nWiUjHPuJ1uRROlw81cpAMN7aRs + g8pptvsMz69U5qikhH75x+uY+TrsWBBFF4J5IOLIjxQhQiemEt0fVJT2j0t43j1hiG53MpCU5IqB + RFc16PmHpJYwFCM1cjkuI56PfT9mIRhIfhJ40X6wq88bkF8Hu/pbUmKwiCElhhrQyNPoZX7YCb0M + bndFL0PJdfQyuEoD+l+fzhosXu7V0MuEgIeikRDMj5Tn7b8Q/WKyuc+36Xyu0Gmgh0bDG0kLpLJz + CnhCQzGxU0Gg0m5TCgP9z262RN71KoQO5m+tlLX4l930aPj1DikQUGjb42YLkrPuv7bp0TiibQho + 1aSvXV5NHvsJkdR+ykEe4LQukNICb0BhLJXS0AV8rC3kFLPAVBmdQH4VBLBf4iPqTVZLBW7V1Wd8 + TFLFYQDRWkV2f0VuVCP18ezlxdvnejiblqtbmdux0vZr6T5hvx8Zb+oFExtO0YTpCXIyohiLPJJ2 + 9sdYksbAzbJwpUswKGKafMULO5GvwO2u5CsouU6+Alfp2Lo6e9lEvsLjGvkKC0ImkhELokhXx7cp + IjegiIQN3FynnQrFbv7/xvC5lEtG6P+t1V6xH7C2hBAvSDiLqngnvSgniaerpYrsN1L1O079JKG6 + 2rIvoHuBcZfN6YeYma0v7zOKmbeNddeNhGI2sqB1vsq+nSyyN6ZB4TEF8ZEub6GPQNDRO11f2PgR + 127R+Dx5xlgnpyg94uoSVQ1YDlG6VjUZtY385HqzSqfDfJ1NZvAW0xlWTlzv8PWfDjreXnoDjGXD + 5B2UbAtiubu4ZF0Ysuh2p01aSa5s0nSVNunzT5e1JD4wgiugV7BHRwm8bzSKEiaVoX179HoD8nvf + o/+WmrvZ10Mw2gY/WNV8aL7qI/Xbtq/sV+tCXnXKML7fzCRcdDb0x9NM7r632fJ4LsvIN1n7wUvG + n3l+t7R99ZBz3r5uxE7cV1dp1ee7CVfQrkXkb2uh9g7a/qByPHQY6EqKImLi2I8SnydPB1I+ZevH + bHAcp1c9pT7kTOgRgnWNI0QvKAEl9xt5TdL6oQZzZPY6DOyYMAp8TbPVt/ui9+XHTWcF4saJ1qwH + qimvdGNTkzDLyigfByrx6/0LzdB6wpTgB2nC55zQZVUTx0+Gf2+7XZs9KnctiSq1UDhW4/LcLnaZ + UgSrfelIPT4imCEnqd2gVo8W3SnxlioHZwh1frRe3hN7c58Hal8YP36Y0NqUwaqZ/Mup1odm5oIj + oAszF97uyMwlJdeYufAqncCfPtZ8+rBfJnGNmYt5jPuJN4J/fZkcbaB7VNwOjpuPswmcpPipZ5gq + Q2r4p2WD97xsM1fhly2dN46jFudGAnYpFh5XlOklvQPCcWSSf6OkO6yzzSJrpX8NwgoR6quLkQUe + G4cJbJLVPLg97RX5C1Y7cYW/tqWdwdvZ7d0wvbmBHoVXXZrOpdrCSq/pbxtpn/UMdxQEiN2tt+ln + qenMV1+H8+xLNpeIebbAdli85WSDgg0QZHqdZwogPftWTuKovCFycaWbdCwdG9fZ8q8VblRPLs5+ + O3s6wHln4Gj9hPeQsSM7Vp5gTkNSl91ctnx0Psnj8C/htBZOvdI1Gl/rLr2rhQoPFXYZ90gl3e6I + hyol1/BQ8ara1d69ZrVtTSSoCNqAqOMoTgS6E+IkFnFpU1M6NC69Gf14A10BUzoD0Zp4/tPshtX3 + NpMUbW9kvrXoP50VG1nsszCqcQJu975GM/BX5AuXRszmVWpDnsSmFZsdkB2SOnDos9EQmkQer1KB + hcRfQDKOfJjaaA5XuxlbD5/gk08NHIddpaEtP/xrPoH2DRw2cssjrsMUgUHOxzA3YQsCldbgTeTU + yOvdknFqJfjt6Yvhx6G5VWsl6k64g8jP4QcxkNOrYKyPRG/MhqIiwR6V/sXtV2mbijz2P9FLnqtU + IC2ubnhyr8TGOJ/KxHNcR13fsqvw9n7T22ZkEjxYl5IGvN05wYM1lDTgVdo2X599sndNWN08kVnQ + lZoGwWLO45HgHhcqZec1HAL3dPJbBwji+mbwIvPV8nasEWbp1vv5+HxVpgwdDRcwgLghVPeD1ylo + kahSwA/+mjYOynkliGDZ1XJlZ9/QTbaCNXxj3ihXGza8Y32/ns/WqE/BljFD34+9azPW5sz1AlnF + 1IA6Pdk07P9R0saUkIShZ2CbS4JAowMDqEFSK1FCq6T9GvY+QMrEi5IwruFRNgxmddybDqigShDY + sbGxbGyMjcmZs5cr1w+rlL5WW+W+MgcizYVGvR3U07BK69v68gUBL0z9cXNvad9QJRCBiRMtdflJ + AuaQ5//34FGvtQFuI0VCja+oJhQZ7uH+2ONPbK06PznXP5RKfnX4H0jKQ+UJDdT2IB0wxe7h6IlL + FByC3r7cHosZK77ZbKKOzzrSOrX01yMwsJQowVTYHasaZmB7T1DWaURTvaZQ4WYoh8l5K3WetIFi + rOxwJLjLPsWbqPWqIjMctudnLOiWGU7POGeGqybszHC6SGrSxf87A90W8UUGF//v1+I3Ow9cieEB + ws0GMnIVMU7Ic4Rp0nECRKxEUIosDGA6dQo0HYE53LzN/Bu22KWnXSf+3l0pUAl8CoeM8LT31kM6 + l8N3F73XEU7VCq/ed7J96HYn20dJrtg+dFWB2L+sO8I9yaVbNn2i579EQeL7owgMQLY//SSbg/SG + 9JO/Ua3C2aeL8cezl28VotgLC/EO8VWhYzDRVqqNeOMLmRO+mmxTJKadmDmWSWSBWb7FqQMnZeiN + P79MtYsnf1FMTDtF/I/tBlRVlH6xygPoayTCLnkmSa9FK1vOo63caOHO4qjJYXK8LtTVKIykMyfy + 5fTGJOETGFZOVugIcTzQ7/KLhm7rmvLcRcJ3iO8p9tKTXqVHahGfR5RzU5rL3eiSY12dw4ToUp2D + t7viUaDkOh4FXKUN7O3V+yoJB0tCVq/OCZCDwhsF8NnoxMIt7GN2S5UNBRwgLMKrrxnTvUF72tt8 + XmfCuN5Nh8ts8tnedZI96McxFpVG1f1MIw2nm9sZghsNP46hS+7u540DbFNRRNWcu5EEsUAL/cIC + s2BegvSHVbv/Df/1Qzmw25wWZG+HFb8JtVe04yeeYfoy7VT4jdtER1UvicHJCH08eAqGyb2dJS33 + 7Jskxsol9zU+AZsljCNbl4CtzBAq5ix6Q7xzjTjKU+iG6iMVbNMXBSllipYAeRLkQ9Itb1qApbPZ + zba4JY+qQkayySkqTlPTSTgL1wOc3QWUh4hULhcxdTgNXm0Z70HyQJZQoy0vVht4R7y7Ue1u2nBP + Jwv3yF7D7+is7Pvab7+WStmXbFgHf3X9lJOYpo2MiDdg0O7rnBaAvNNyhRTmlIlXmznpZrm4P366 + Wr8P3S5mBDi8Z3Ps1jGxT36rO9C/YE933IB/3GHtkSmrXrdTPzQMrM9jhUiB+5rs9FPcDbGhc+Hi + 3O+MfkfPOKPfqSZs9Du6SCf7Xdk40S4GhXeZzuf3w91arUr4Npnv8WF3y/lgIf/LA58lgmDv4FCS + 3STL2W/Txb0GWQXN/V+7WxoiueubFXKza94sWqE5YZHJJVZw2OZwGGS3x4Q/j/OXfOf0SV2BEXOV + M+ElcZecCbzdMWdCSq7lTOBVhWf26U09ZSLyaxyyYz/0osgb+Zi4HO83gRcbkF8v1z8OKPnxVk98 + sKBR9O5RY+nOYTBmc9yX4PT7fS4THM6262T9lCDDUPnR99Kf5frCEI3SsfSAwXSGGQQPlHIqcPGi + Qc6DgqDUQ4JSIULWQK2Mr7lajo2DFptCwNQaMyZSrC6u5+5uWz9WZGeErUZf7QrTezKGzzH4O00I + GrFQxIoi7uCTotsdiRWl5BqxIl6lJfnnZYNPKkCnZ5VXkYsw8MMR/Bsliaqo+KjJLsrJNgZoW084 + +PFD9i2M1hVaecVtglGL1fz+ydnTX2g4ZX8ZrhUs3MdupfxPydnz6vXwiRauCVIoHaKCJJ4/VRAo + L+Be3D42GhKFJI6Gf25SvkYiYUkXKIEnt5TTCH9Bw0IveLXdbBoyTW2IcPVCemrb6IS+bdCVGKZZ + EiU8qlmszoCKZWxGsD7DgFU2H+xaQ7GjXtLOwfKq1mbt5Qb/ewZ8gCvDEDdGcSJ9djwucnL0iI8n + qx0M9bSEBjjOvk3IiukMbi4Cr9ZCR7UEZDQU6lgSRxXY6Y4N9MFQNFALov61lRXUyXI5UkfCd/lZ + MR2bM9OOTZLTR5OvjiaPd8ACotsdjyYpuXY04VU6mi4vrhjmwVYOJ85rh9PYT0Ad4CM/8Xl4oGJ3 + uoEW6voijfq8WmkbCe/n0xVNpS33BeaNHkmxdYztUq+NO7nmyysWZSOrw3HQ4bU0iJNpBZwk7KcU + OD0TIaZyn1eXHgs6RDnl7W5RTpJcjXLKqzrD86xG4ogMfbUoJ4thYnojFkPHqUX7Ht26B5LK4GSf + TLI1JooNv8Ks3wxhHt/K5Be8Wz1O/HpI6AcHvcw2GyGCJHYj9ul58twbnzPx3Kvz96ncM7VKMPKv + EtDWqxWVtTRlfaZ17sbu2ZXQFR4mSz5MdmKpHe6FsFdWtpyPKo29ZGAu7jfoAtPsYra+mCR7ohNR + AttjEDUmP7akJYYhd5E4+PlmyQAXhYktxIwCwNCBMiJ4sNu7xBWwE/EBu6ePLaDuLG3vmxEucbd8 + zP1u5V6yGU/0+f9oNOBuyZhS1eUEt7NIbzHitFucUI37mPIHm/q4B7H7ow4xsVEdJ0Uf26HGzWDJ + m+gZ6+LRN8+4omboJizQDHWRjmENrwxfWaanLF02kBjZJGSGPaHKZalbQnSMKFTUNiFhJVxdXpTs + z8nKLiEy/gWkLpd+w1KS26hCulzramfg6UTYXLZ5Ntlk3S3uviDXe8JBV3mURSU5jdnJON3HJi4e + D0n9M8BCx4b2gIev2TOPd4vG0TPO0TjVhB2No4uKqRbjqtrpVSB4gemHI0F/Vet1Z8tE0C74Glql + Igm1/2AfzcgDUqweesgdXf4YcOtYpnT/+f6Shfyf4zNnU0o/4GRMGekVc0pfJ4Pq7OpCjH3LpBLC + F7G0ccuBMyQCSjzYakfwj6QJwgnxTsacb2ZknYNRcQu9ZPgu0aN6+Wl8cX6pHSTzDTT+dZz+rbNK + tYuEw74UFSh1sUoSvmRdoETpdkfzmTVAidJVFSM9+1APyCSBqJnP6OLjfCQiwdFHgkP9YbVcrVcY + FpclNls4pOfZ8Gy7TSd3EuxFhdM/qHj1O00JlS4a0KdXeDTn2q8NQksx888zUPNRZ91U8sqiKG5z + mHEwAGJWM277mg2aYbMlsl+S5QdM8JbsN1hGESwh/78HqjMR6Ln8tabAu0BFLJuGpdbTot+l8kKv + l8MWPJ3DFIJxNhZh4sUn11/Ir9JP7+kIp/AojqPcM10nQT97+t5SAxFQivFCD0y7RlM1ePpwrSWe + 0tEv4t+iZ17UiZFeP+Ooo5smyjq6vkhrXcI438BHZCYaN9DpSqj3NGYtXWXb0NLSc7ggU3BE5A0k + 0GBAwFV25lN95hSOXpouSeGm1ZMkxVTQE53DPwRFrD84MKn59oO7HXu8nJI2VmN8KH/uIPJXXzC3 + CaFwX7yHHnIPGNHtbgCvJLkK8Cqv0tF58fKS1VzPAUuSKsLr2PcDUFNGYDSISOnNSm/ErfpiugnW + 6miEn1mDZ7dLtXu5eD6O/KRGmkgk0xPnAne/rcyfeT58bViLSX2Dnf1aHgq1XJx2zO8gsJyxJUgW + 6EPOQHOqHMDNn1HBpfJbc6+sdzdC4Yc1ugRKYJC215glsHtVsK6KF2VR4muVw4akaai9Z23wOeaD + BxeVgcfqJL1cJpjFtEX8qbPfzp+WB3I0/Jqln8njJOnjJXDWYjffzqab3a015lbCBD5m9+sGM8S3 + SBqPLmliood9NV9trrGPJNG9xsHCX4rMS7jrn+kG9Tw68HOdtm8evoPDf5NnMsdd0lbIBaWVlCCJ + kn5I7xqeP7hNyamDd7bMMpeTQ04VpQZUJ9U+z3EzaJdrZfmjhe3qL+MBt6TmsenoZ2k87k9nWg8o + 59d1G3Saj2FMPvSDhO37+S8YYRuUIDdLSLGnZLCHZEpUXm801MlKMGXsEVqsvtAHrm4oMwo3GVft + SisB3Pix/fP4GZJLdfFj0zPOfmzVhO3Hpot0pk93MNy7fHB1ecnqXGiFBPRPg36vuND+7jqpHitK + Pv3wHjRUd18H3e6WD06Sq/ng8qrC0Pvjt3o+eFClbwskMmgc8hFDjO0DJdGLOcj/CRD5J+nmerUc + 57v5zW4DFlt75WFcSRo9SL6iZLZF2aMKNmhZXswZi5NSCpEf+BSsDujEkkibPQVvQwrelkS6lUHv + h/xWFXtoFsFltJFOkPqzkllRaSFSlZleuE0Xi3RsUu9/eJGVQPYnqUERCwFG/UoI6ceYoIZ9gPHz + rgydxUPO549uxD6A1NU9tVGlyAV87dIWhqUUPInVWdQ9t8Bs75QJ9vK9x0SH2gJ5u1sCJ0muJnDK + q6pc/NX/EzVXNkNQj0ptgc8TD9k5BSgQ6ui+lGUplnurloKDmXbTdJHeZgWJnqwOW69ywiaGboGB + mS1p3m1Wc7CaVIaKrEybWbGRYpOYw+aRyjIaQgp9c8WGT7C5uwyJDvKMAEM//X4h6Dos8pVMvsAF + 8fTFEHVLnWpJzVbQPq/m32JClXg/WzLtbXibfRPNqamHDpzSJo75/379wHnZVkkQRm3417Yoc74Q + 5UO5Z63zRdh2dLVqvVlmmQWxNK75dgZmcuXjw8QuXi9b6tz3OK9ltpWH4wlauLuhtSCeWvIjZtOd + NckfXKkMCFWiAOMZjHFQSXfewCY2ljRJNzCdQA0Fox7doSpLRDmuX6jv0/Y5rDKE9CziBlib/seH + 36WyjtVdWvTg6v3/MzVYoAEwcsJSzvc2m+NEBI0+xUm3RD3+sNffmOc8lhaJ4vVoLF44VH3wE1Qw + BGR3mZEpww6o7QbP4ZNy5xLKDDo0tb+T1PbMPBYGlCOlv9z0SkvEqNGlkXArxJLvFp3yF8khEdij + UlkvD2mLSX6NmPwYxazQX3NU6lkvCFs9FfT3RP55UrKbVvw4oyoqubV1KWtxfHJfEC/UyTpgSybP + vKCLilg85JquYxqx8nX01Sopn8rN0Gpi6x8syRi8C+NA+y44V47BEmlCx/n2A/wfMZNqroqNOzZ5 + 6KH2XLReFkNvgbNIcxlEHXCd6HZXLoOojutEVxXr+surBiqDSp0V1uXHjHHBRzGocEheLcEmy5Wg + FSU3n81BgSqXZ4JyIzUZraOMbKW+fMDLXC71/IthOs9Xkmo7lfo03m0BCYF68NvkHvP3iZV7Ju/U + UFP3JmEVa0/VGyvYqbMXkkME81fhj/81zbnWxuHnelpMVyiqOGahL5KaGwnlbGfrqpg2N1KbGEe/ + VrnQmAlfiBoXRPV4sXNvWCvSliXOKNwSeCe9rQqKghq+deF7CkMeRlU0qyKToJhMtrXht6byNEvM + EC1gPsuNhi3fVaZN4VF22DzweCwqBk51lAbfaVXsXxAX/zgz814ujheIsS2Z+kiyrN/VORtUdWsX + umiMq+zbDN9ws9rd3lWU8vPphPnrAW4hBV1FHA7U2Eg/VMMYutsjfdQaG2Enxi4jzzdE0sOvyA1J + Ia825In9woKwQPCiteLaKwI2ZPkhByZzh74RPI69us1lFODy3HJ9zYB5PDaDd1Qae0hYG3qSrhtz + zfZWVZ5e3nPo+b3NJ8KAIhtIL9z33XSc4/DEOqW8NYKKhp5Vz1AOSMrx5WclHMd2M6BhummthzJt + P75nSeSu9dDtTlqPklzReugqaT3/fPuu5p70ZQ5lWesJn4/hEAm9aMTDJNDAJ+W6+mYsDEkZhI7e + HD49l9v7Gyax6ODW8/cfhVwUL0yCRk5L90YnbkxXeVY4JdBXuVQgi2scqtvM7MdXkoro+t6sXKyW + gebgyCC/sxScz/7KdHKJ3CxgGsF5iJ2GmSYlpDz4nlud8ECK0D/vZnW3ZPeIGgsTsN9q3BvOECdl + xyRPcDM+AS3F9kmW32wfkqbsRTvbPWR7vZ3qRQetM6Y0Scy0kJnEun9h/dysJrMX1pVNtkXX9coQ + AeEgwlnMlVe5lKZMcy7vMNWKG/fPI0pSapyPA1xdJnWI+dJDyXxP0CbxJc0RNPJ2s/oKGpFEsirc + Wbfz3QReaTifgf7R7cTpARaTURRunWe76eruHra9uX5P57fAWVE/S4v+66KzdJbVehhzCuGWp5GZ + fAoUW8/Mg0IdK2drlaf/BlnpGfKBeV6BBvlGdExMLx5yx4NUjVQAIenqnqjn1T/f/Xr18bXx5ZoS + 0uWN8Aa5/C86syJFox4KovMprAc4uFbTbK46aEnIcgd4jX+GaATzVGWD3YAJH9nvLsXJurzV/J4C + jsN377CbFyvMris3Xcu4R1d/pVehT7GVLhbMKSn/nlJpr9MNzK+NhIx2Zvb4m6dmFYNENNDVJXNo + e2Uhp4mExwnmhdanSWUu1UkE9y8rvedQsv//ed+pTo5ud9LeleSK9k5XSXt/9+FVLdefy4Va1t75 + 8184ZwK1dw7avYKZucLzLvsVFJaMcmMqLsGyC8TG+VCVWaMaz+e7RaZYIhbZlK5LQHREppzNMfGy + oDT7ON3GHujT8hNK2cWz3MBpl5QwuYhIPGnj8HO9IqFjVloUhT7YM21OwCo/gQUrE0Zt9QeW1HIK + P+HIF3leFVD2Cq5MGLdE35PIF4g6s09N17Vz5Xo/z+Nei5MwwcIyBvr5d54T81k/c2KADxiWa+j+ + gerCslqxp+c7noSdBB8+nU8qeBSeT0eJlWyT5VhWASoCVsFrWFsJ+1N4UfJmN9LeaI+nUvabZ5ub + vtzl+OpVW8Y1Wx63oyheOgs59Ep+WVpeXX+nksicWDXweBhk9JlL+N1vLz3RIV+bbnc6c5XkyplL + VxUi4+WHmseMxdxO6PO957+wSAgRjlgUePGBfO27Dcj/e1NYmWRq5kV+PyVUCvy6XkHmrsE/jiIk + FnAy82qFcEcuuIAnUmGH3Xd2Cq4L86g+4s17Ljok0NLtTutNSa6sN7pK6+3q1bnkdLQXHPcqjHHJ + 81+ChHE2ClkcCDssX1ZbvmS5ZE6FXr5Bu/I6237NsuXwzWp+OyMqHruY7dnw0102fPVthZnkxgqB + 466C6ryS1s0sf6YW9VU2YUFtSeMwYFbdWsdYX++WtzMrtgpHejt+BNYgcA1rXZKbqfezliHzg1Yl + Us6SvuLfoBfw2I+rZE+yS2FFVMsD22pPE+HyukVYHDoc4Rcqmi6WYbdpunb/PVw4/OC7E0LJ9W5a + 62dQB1m3t9dTerqafEZpCuCkmJKVxGGvLXG4+VW1eMUyUpEVHpA1eGWYE2CVlsgGddJwVllZT2Dh + iPUIUdUC+iekf2L6h3nqX/wrLMsIf8d1Cz/H/vqpTn4x5gYN419Y7meA1KBt9VkUp5pI+iYwMTKJ + Wll03QvVVM2ugcs+2TVa0EDuVMYM4Z40Q3Ayat+HnqxOZsHp5yPVZpamQVcBifTsOixjtw9KPKmN + Hp6uHd+zi1yn1wzL4gpyHSdTTqoD1zNa31bIGmcXaPj4Ka4CT8bUG6hjwEyEvOs0Ovj0vsB/w8OH + O/F0b6NjUfohFjPHnIW9DJzHgwWelLvQS0zFoN8nXYqn5O2u6PdJQ/GUvEq638uPr+sw2jyJa8VT + oWA8CkehCBlT/s2Pq+W4YO25GMsooKoEp4w0TBsDe0zdId04yoFDSL8GYDPPRjr3h84LPLeq0wuP + AnRLqQ0HxhPVwnQzv5fAyHRJ352DwNnnTGY0FLppbZW/KL2fimub8helZr5c3vQGzcI455jcWlML + S70yLsGOHkBP8T1mO0lLuQtWS0bVsFO265uerS7WiEFr0gdn+wZ1+OQGrq1lJZucEcUYw2xdgNIw + v28Z7RcICgZT+3q3pRmhhph8oPUXx8lh6ZQvKIXItyfmACe8KWkKPI84koOSF+fk2uAe9IpQmbx7 + x6omdW9KItmrpV7s9HzEQmK7t/X4jVX9dUpiYF/gtgxsVPL41eZkd2F+IAjsrnmCO1cdnSKu2cVL + bkez/dwUDTnVNBwPKtPP4f84vEL9eb77hDrHTb06SQ6cCd+/gT1bxek+8SAkZIHjUGVAUF4hZP6C + CEygWy1nXXVdFkY0soT0fBKCO834uiAK0KHNvKQgV7rEm2A25iMF0/CXzLbsG0iHeYFKj+UicldA + 6XbH9FgpuZYei1cVM+Cni1pRkO8ltfTYX7gXsDgacS8McNEq7+O1NHRwXxy/e/eu2A9MN+njBHpJ + O9K12jWShQ0EWS2dEiVQZ9xPLOJF3Y2lo8TUVagYw3Zdr+NpUhDl5teitsWhAOvsMdI9PZLOHuCE + KTI+KYvrMRwneknJ0s8/z957rANAJd3utKSU5MqSoquKGumPjxKqubymWCLjjGWjTjwfM4bA1COG + kHUHCM3SOTRQJzT7WwbQcEY8tmkVaRitxO8EowW3u8JooeQ6jBZcpWn15t2HWpRIyHlTgdGKOY+C + UcwllCLt09nNaj6dFYQeAdjduy2dzJrWg84x+jP+cr36Qgky6uER5lbcpchAs6Ra/c0MIaPlXmIS + PfVu/Ga2qMeGOhcTJH4oROTXgkHmpZoIWFnIK7lLRV1kTwKLAyMJBXIVVpeTBGVvjjOBeiWYy/cW + SKZKGL1hJZji1YIpo/LrKYFVIBPYYWAc77Jv6SLbIIr4qhjael9QvIGKXnS+qkTWgQWlUh4lEjlJ + wIyh5dTkQuQqKlGc1/DUbDvA+VzgjwWEOuoHFkSF/uJuCnak1r3ut+7800fkvZtNh+v8mWovdty8 + 3OU0uTgHaqKV+6GLgzVAlDi8c7fE5rPpYU/rXk03NqBd4UvmPfPijqhd+iln2C7TjI3bpS/Tznh2 + dqYRI5V/6i7DYp271eSz+eC3+Zp5fp32yLQggSV5SPnsSaASyIpKl3y7afRiOXObdBG6d1IlgbAy + +04E90OwfjuGcOob4rSjWsjSSUP5yw3YPa3bw09BWBNSXqOpzF5+yeartasb6PDu9EDUOX36bfrC + zjnV4/FQAL0CFEe5izZsK61v6jpuiP4r9vppjhaNyzCyl+Hxr6uPgISOgPNz/jbuiMljnnHb/osm + Spu/udgJs7EQxQORcHYMfLA2IpinewC9Ud1wk80zrj2gm7B6QF1U9RH/fHf5YThdYQhhUP6lBEFU + yIHPj5Mg7Ldo64iCq/2yqWZJHyFNtUqdN+nvVYvkzE/tuuAYMzpX5IlnXthN46JnnPUt1YStbdFF + sl/XqxumGKxej69X38wss34bXuBtA3mzXHJRqLjqHhDL7zhUOvdJdJQl8f05bPrAoBNeJeNfCRkN + rzezaTP8ifOE5op8hoWsC/kM3u5IPiMl18hn8CpN4t9effBr3DMesihWuGe47wsWj7gfcqbcMO/K + iRA6RGsHdCWxx246hL0MTGZF/2HBCqHxfnm3YuthvkBkmjclahJT1i09ML9lC//xA6T35XeEPimK + TGa3iKAkT5LpblKrPYt42JZYEUeBH9dwrlROM66jz7DktnhSlRGB5LDNkBq8mqorcE9vSyCNExaz + B8/ULaXX6q8zwFXl3JwDDfczNVFK+WbKDXlDCuz5dOJjqo+FTWXnN4Ac0EcL8Fuidh/gstS+pNCL + ZV4qjjLuNYdmRofYKvMCqmRbSpq9L1mT7kKFfKi7XILuopJ0G3TxFgAHlnARVo19uAkLv7t6wI8G + kGoHpKJ3O7Qgft2XBvk90fZpb/5VzzBVibkXzWifG4sJAywavoq7sgCrZ5xhRVUTNqooXayCiuoJ + /kSBiKoyj+X26aDhpuvNKp2SJxfedjrLKdELvvOp1TJyBQvONUo9obJiClMJn2YGu7djZf/RyaK6 + 931VG8e71KPT7Y61cbyhHp2uqlqdf3yMavXo0Dm12riA8Uh4owDOPczmLBfrKHjAcvgVrRy9VVKM + FhdpyWnQVNCvQy1Xn5fRqZXiYO/HMZZ8HyWnFF9BYhG/VnazH4/AxnDyvMo7jmRM43AbX1fjIgpq + ds8GADO7hCioJovayE5eJJLaIV3em1f5gihfyd1ZgbBvJ5uLA9/3qrCVluBvsymdMs2iW4n7EAQo + 8qrvbI+Bja4ZNPV5tb8HH5WnsqlvdcCnMsgjRF3dUmE2LvnJHaYPWSNFZzLO/Pw+hxPihV13tgJx + C2lq6ANbrYwxrQypdA0r2FLVrrN1Chyx4uAe4Jo2tZvcT5SHk3JIG17VVh/opYdPdMJTNk/vn3a0 + 1LAirubfhx6BkxU+5R4+0fmIdoXCaTpffwYUnd5iIXJxVgVV1vJeNaYkJ6nJqS5dJ0knY4D9KGKz + Q0+3BCjl5ltfZfu2bqev6UHsIVSyw166A2BkXsNKa8DpcYEnO0rU3rRrEYQEuaEcMwXHSfdP1rpb + oHENkqQTrgHc7oprgJLruAZwVfHQXZ7VUh3hZKvjGgiPR6EYCSYSzNpH3U0+OyOkxFLCjPx1t0iL + ypZPl5dnFyph4iv8MYU9YJavCM4FcZzR0NY1Ozq0KZf5+MP9RJdWf9qk9VxGTdYN28jWpoJuyFnB + o0y0KGnMgyM9iaOqBtXeQHP1i++1UxSXWzAqiN1ADRQIacmrAJ59SyypkXEc4F/3wQw1YLJdrOYW + EFtFkWoFZNfvX87EuTp7cyZVp4+7M//w+GZ5zeeC+cqzSWHX5sMn2bPbZ6Phm3Tur5+qiQhaG8HV + 2t9TABy9GJaIsWlCy4ls4eyb2SqRZHG6Do13Y7WcoPtLw9gZSJ4BLhyjXCmAUBfyoZ9XPxGUwnRw + IjmC+x2uwOwD668QFkkjv2lduZn4XQS06wW8QUjTjtelp6R2j0/IZdcv2VDvSpUIOLE1uW0NnTrC + D0GJlh3x/t0/hk+wO8ZYrPm0c4qZPAP2j1RHMiU/lpP5x5EoMVDu5ORTBl3Tt4yG6XyyultJyODd + Wp7rk0m2JgDMLlpRqBEWRege0aLbXREWUXIdYRGuKrSniyvOfqtjLPIaxuIY1Go/jEcsiCS9Y9mn + VajZSiuiEMAT37t6OtzMrlf5Co14lST8YrikumFiZpxQavblOoc3IcgJLFawXWSbdDuENy0Js8Nd + 8unrxoAXpafSG9XeRUdUXu0+Q9elTyulxH4r6kkQJBiUquhQpfglOl63s+1O9YpqOau4u0Qrgk25 + gRrMoqmTraGf+HZNMkoc9D5MZ52HaUATrQAxjAg9xPdNYSxlXxEpLnqaviDeOLz1u09XTJr5GVL4 + bLPh1dUf4w2en3KBBc/iq6H8VRJtWn+DpTFB97ZcfhvDTyFPYtj51L2jQsbICGhw4rT5XGBHZXs/ + AuHOJVjrFvkaYXpkQ/EfY7hdaoHWG/f2UjgRjLbUcALXQXsPPXEAzqEPVrKTUx4Ih8+stU6Pcx5y + 0/z+TcPlMBNeQAkY+DhNi3VpHbqnhA/URiFN8sP7i6Pb4Hh5e0+0SGFqBLwDzxnd7oipISXXMDXw + qorRXNR5zrxI1AiJx8yPMa9gBP9GHldFjdNZDop/Lh11aOhgZZzEPLAZk6bTefarRMPIt7jCywix + lv+aUEgli1ABVKoCN+sG5rFHl6HhDN1ZgQ9uYy6OkgBjTf3CBx+Ufxo3cCkaIjwukMBtcKELqA51 + kML5Rf8PEYCpfV+jykpcFQXMMTVwHJsVzRwdK61Mq8lqIxd1lQ0sW/4F6ye3ZmtpChqdYYCrxABx + JII9KKLwz4MAjI0RsmQ+USNQWrbOeRI+8VYUQmTvdyxACrkeDXsqPFab9XsnOv5Y8OR/4x73iXvM + Yp1ZE3P/med3SqyhR1zzalQDVloNXSMN4J8v0SuJuRfadKlfKcnBJJnYD1RifFQw4aFzL4Xzo2nL + bFC+BYUR5aPGcGh+5kfF+X4ASwaq9FG9X2R+U6V/dZAK557yVLtRaugpSGR1v18y1sEZQ7c7qa5K + ckV1pavaGfO7qMNxhEklvyh6PpaZ8WIU+L5EINRsdZZD+d1wjpW3hdGiHCUrUVc7pctbdgp0UYOk + phBTEIZtua2wNkJYFFVdcl8rzelAcdKW5mI10ZLlUorYtIZs6ri2g4bv1314zkKvSGqZ4LFMKpcV + QrmGj8kklMY1TIIxgq2ZYRjIQTYQGprM4YTYhtN2cCCCT6eo6yz49VB+Z5+ATD2E22EWHfq8Y3MB + Oop2yALphbe8j6O55BFPLB3L1cO/V9GGc7PiHcmP1t56Ymln3FNHgCeYe5YC3e54BEjJtSMAr9IR + cH55VYP58EMvqJ4Av8DM44yPBObmKW/8+Wq9zjYmk1R2xny1vYMPzBDAw7Igv87mU0q/n8jH0KSa + EYyVOinON/nRGB5le5wnnNfSNVWj5aGyCz686L/bcS0soY3Zk8VMKOcD4IJtMey1yEFfvTjAoTT7 + fBBEA/UCctY3vuphu3Cg+kbqUfUudFOpOjx/wAxxF9RiKve2cpmurU0iryM9onnGtbZWN2HV1qqL + tBKrhcSXs89sXGJrVfrpZXrDB5P5JpKljj735PgigonsEsXLjhMqK7j3kHH4diMrUDr4JJCnvZIn + UPC0o2NKl9Q4C4yZZ9m4+8nD93CSY0B6z5vJX7ZD+ZdbtdbQk7Ldur+sQFCYPW1MoIVNt+8X8Pmt + HQq2GoUOUBVwl+gnKg/YYp8iTEh5Y/51toVp3WWBBUxw7XuTQSl8XfLsHzOPAhbQgm2pgdKZAG/F + +B8+ruq7VpfhnhZoYilKtD0tJEe2oBCHdZ/UVthkhV5SzAUyMwNuc3TbPUbD/EEKjCOR6H1KgQd2 + 9QwLFrLYfLgkFCi6m0CqHClHEWKPxrS0T6hamgZBB/Vw5CCU8uTW/Up0KAzvta5an29ca6Zh1MU5 + gbe7aqYoua6ZwlXSTM/ev4nrmqnPar4J2HKw9skPhB8qrIl0Os0N47cKcUwxwnq3mo/ns+VnzCGE + ftXHNVoCa+jF3SZH7nGYWBuTv3iTyZ/t9I+z+W1c01WbS9WaQeOjONmjb8IIhExX6xRKbPmV7+fN + tpYVFguisC2uFIgw8ar5rYf6aE8aSNzGr8k8AU0lVc9JRfSY0LHlTFRpnkX8wm4paSMj0t80eCNH + 3u4hO6L6UX/h7fxe3qryUh9w4ij6FMJfduhfy8MD8y1cD3BJFBp+IiiIFlsYdqUgWvNHdtGVZG/j + A11Gy+3Y6lbeeeBgiJN2WcfylRwptK3O+hGAi/btpqHM4+aMRX1Vznk9/yh/sSuKHDQUOzZ0l307 + uh2fc5qStN5Byvp+s9KgXNnwzXzCPqTLBP79eDbhw3QO18dsJMa3artx69TqBNEnrjBoTfEzxH3q + gtWETzgjNUnxNk4TXqKTE755Nl19my2zsfoxnZufFkUoceB8Y9GmxHQKCdMpDpWSYsScwsXxeBXh + fiFzekTCOzGi25Pf2It9CmGaOXRqiPixBJr7djj5OmDNX0fPmOjicDLPuIasdRNWzFpdpG1iu7lf + w5y/S5fjLfoclI1SBi11uKXcFg98FvuM4tpHZ4YWegvZebJlqRKlE63/3Kwq9DpHtkDYJMVn3s/H + Tc3VxLrjsB7dRPsm2SeO50+7+/kxzS/TjdYMPTYHJxaePVqOUp07/OgWHjq5JyYH2nHvoTe4wGxw + yavwmce6bXD0jPMGp5qwNzi6WMAHMjf4QCbhA5ncwSKP4ANPykDEGjvLpjO+oGN3lB+POPi/CzqQ + 60IrL+hA9Ui3OxZaScm1Qiu8ShP44tVFzX3GfS+ulln9IkQQM3+EThrD8z1P77EEd7Oay4oYhFr9 + ksELECSagdVH78iXdLLD28gvdpGtm/1itVKkIKqkVJdKpSXVca1evC/sPvUFY+LhBZseq43swK0f + QEe2odqFfiKiqucMxGxWYJhPSzS+o+LLobOouXIjnPlt9du6Cwb/Kbu3RAiYg+AyxJ0kWsSc4dyk + CeGwLDBdmfza2k1QDgjK111kRcpaOl+BUFnk/Z/rXCAXNPzLE/qXRYoTGn7GGH2BKSC52tVXjrer + olN1b9QI/gY4M01dVhATE8OJJIqRR3bcF91dR/MJ9sNLKMcWH3GdF112Ljk7yy9ZzGH4heSla1m8 + 1mTSNrvjKBXfvFi3nTTRgEKVWdWpzzqIaQ27Kq7pqgR0/i7h1/wO0W2ceiRWoCS1iZDtwzlpc+5E + BsgvCEDJ8LuZb/ohZyg/3YiN5aeuKgVnMlX6DTLpTtEBM81QIUYh9UvDC7h/gA9JPQcOYLLUOHU4 + mu8LegTf4lSmB5DLQqURkFQHrGVnIPtQo81r4Se+bRB4cckwuZbRhlKOGW6cJZulsbXDOOM/mj/i + RzJAiJhsFKJH3GoIkiOMNKWXN0zwPgy0Y6R/By9bb7SWvXmzYg1EEHudgAjgdlcgApRcByKAqyq8 + /OmC1bjQuYSKqeAQxBEoyCOE71HImh+0IlrwVVTS9FADM/EwLBLDWAFhGsObFuRlcJaSFv2awSzT + 2Ew2O+Jr9tqTxrl0juPYqRD0ds3qTOX2s4tU9pGtdwftSI6RH3mspngXrBwtGJpBGz6nLbFWfVlj + yqrUXLLvIbbQ7EFn48ILMCWzimFrje6DjewLqT+YxCMJjETzFJre4dqQA5DZ02GefcnmVNeJ5Z2F + km+Qr6czsBqmoLjAc2evOWxLWLcCn38/kOKNNh6xcIA8Syo4Y78u9gWdUqQIKebg4kW6E59pve3B + GtynRQsFo9BDM/v8rS45Sy3pUkenO3XykTw8xk2S2KmbivfFwPwdlaFE5VOvMZfd/Qih252OECW5 + coTQVVX5/+HcPkEYkjBIjrJy6T/SM7AQdJ4RYjcnquzvvDkvElfxZIVIYLlVu7+Y1Pd6k8RG9zez + SYJtbNc0wT5qpbaHSRz6cXM5f2fhFt9AHDXU9599siprrIMkjKvAwIU/BBQhHteF2cTlFhYftN9N + Gr4X7NXwwTgTtKaXNb6rx1lH6dPVDlT7cY77DBIctvdC4tQL5tjTedulTFtrBtn8na0ZYdZE6EV4 + 22SoCd+bcW7z+LYiXOsW4PCugA7VZnDZfwVruPg2+F3NKMXSiK4zzOIqfGxpwVKKpyusS3+NXhz8 + K6l95oSWB7pcuL/SbfpJYjaF8a9gT0/mO+wHyQ1/Q6FLgptWQA4K62eXD3DnMTCHCY+OSeM/XBoW + eVQyJSGBJ/eTedccqsijOIYCNen8NKEaHJqC30lqW11CB4EHuxyR1IvaBBJSZbro4JdgKhlCDuB0 + hmdYVxkRWuvy3fV0LE9TJ08anhHGB9F4onRRJtzEHZ7cp1awUrZ2aZw6Cvg+yfAPFkLH8w8fOXRm + Oqm6ePDjnRXdwPFZylDdd7y66duPRl/uJSRPDp+qgrS3J5RmLTyFqeWLoAumFt7uiKklJdcwtfCq + Cl5efKhjaoW+qGNqCcGTiI3gX5EECj37PN1cr77dz1Wxjp0Frgt4MkLXPh9iCvNsCTuAUhf0yJXp + WPlZyfVokBwv1necrdEriD/x9dMSfvFsgaYk7oU3JWCIAttHag8GGv6+ymd/sV40YHUpoKHiWmMA + NBY2fbwOgBaq6PmYPrqEajmx++xgaYGIW3V1xrwQxqeqSTY0WspVL9dVVQoL2tjrTTuD89aXf/Tj + PcCpboCxYl/n9Mtz273L9m/8AzVgLTJdxt5pC40ZRRG7yPlOgD+Ckbvgveezf47P3B0G6gE3l4GW + XnUaqOvKbfDqXCZaFLubEL6IZb2B7Tf4xY8j4Y/8OOEKdOWdhEa9mVFJmmLfUgwBRJp3+Wl8cX6p + tpE/b+bQ8tdx+nB7SV9ZGdcz/AY8EfW1RjkYZanIGQzU+uFx4Efwix5ybghp41dBN/5j84wzIa1q + wiakpYs6ZbZINZ3B0p+pbFQqzbYzZ13vLLfMA9+LvcA9gbZDHmoP6biiIkFqPubbOolDLA9Rdxcf + iSP74zy0IvKrvdIw3kfud8JMfpY8Y3G3uS8fcZ761IA98+W1FtrAgT1uZUJAuYUtEMWAdjR9RH2Y + LkRQn/rUMs58L4kp8dLzqpGEVZ0t8oj0yf+14Xc9oXxlFYioA6MO3e5oFUjJNasAryq4sjdntYgt + fExUtQp+YVx4LAhG8K9gsW+m4TbFxMVUMsG+ObvQcQjJJvd1NXz/TlPS56Ny8eXlbcoIgBwhFuhM + UiK0vg631P3zNjS1DWXGa6jpTTS9xTGLtLLtrKKWbFahNLw6JLvCM5e1CAZlhLkIrvAY30A3Eg9s + eRHafmMWtAiO/CSOkprgtbSckR/4drP6Cpq1jabL2sB6oWvCMBYPT4J8qGtmyy9pjn5i9f6Hm2C+ + 19ZEy1fN8hWcDmuMr7V2VNJN5DrPdtPV3T3YSfNmibwNh7lFYhPHoaqUhgX7r91tyXwyS+lml9ci + A1HQyn3Z0rJmjaZ8NcUs5EDm3faFeqQHJHOs+Y5Kybo6N0RPrbE98/RthpkarEgk1qGaddzANrBd + w/zMszUurfKKGpVYmzXa00ixJqznK1mtbc25F9ocJVvi4m4VB7TLQfM8Xg9wuzWWaRRTkCEi3EDT + Vom46JShdItHMMUT50KrvT8IAKMoJTnPAZcX7MB/fSjV72RuA8EZwRiax3ETWGaTz8McJtVWTyEc + ngPKTJ/E1kYFYUQjuP9Yc3M69JIi11dmmwi03h3GQTfGbv2Iq96tGrD0brrWpncXVzJJP7NSldYK + Y9iIxAxfhqbkKdzpLqbRA6usobGBkjdRR5S24iFnO0g3YltC6iqNCRydK6pwL1HVFMOiHDrlITFS + 0cqJuK/Z0R/aau1imRxvBeuR0jQePO6QzEO3OxoXUnLNuMCrKuTw9kNYMy78unExZh5nSZKM4F8u + tHNHMx7BXq+9Vlq/HmlGBmne5/apW8BLqCw+5f6/W4Q1c0JXWild8TXMlVlFDRW8K93GI3Df9dV3 + AxxCo7CEsrDI534ifSxlAMzpZucauhYUiKN1SSBfpuDNbbERu1vrQweCvJFd1XQ8eMyPxp7RCz3W + oOde3AXxFm93BT1HyXXQc7hKC/39qz+SOq5YzGuItwFHZt5RwP3YV6UyMv8B5jdqhXpKzTR1DwHC + gNUFN6zv56BaSr4enUX67l1JsZGr/H22S/YlcFdMD9xoW0NhDE/IsLq6efvrtET1Aptj942VK8i8 + KPHCpOZAOLmZti8x2wtoHhMLI6YKQJZ4SVx589pbD84OjtCT9k95OlIxwb9UKPFmtslBj95m66Gs + w8ya33Kdbu++pvcvqCxztoSZAk0ghvuoNoXwFkT0ne5gldF8enfx4aroxWm2zSbKHkyxPR/0MrAt + aPMa4NwuoN6FLwvZWGAU21NKsuIwKEATKAJ5AmKPlpp4sZSKm8nkDh6B/QANZcq/67utRIYna8P0 + vUW2A66xJKJe1jFZWepEwd6jRu9Hhzj6KtzCLQMfcdlqnL7sJIEP96p7sPh6opvtD9koKYUFK6Iq + uGyIsaJA2UblX9Ax9CXb0IYGWkU6/wx/Wy0LAMVuxneiy2z/+PgP/xnrRuujnnEtstVNWDW26iJp + C79dnn9SAYVB6WeL1UdLQVqfgEXa5O6B27KL2a7VM9/TIHRg/HREmTLPuALR6SYsKDp1kVS1dPOZ + aYBzJLQq+Kxs2qxButusNun4Nw37dQYPDtLZgg2wtMgTYQ9A53tW5sMgqHsJeRPR5wHflTVmULfT + sR7FrdfE0vpQJH0epdCavOkiyzxfw9Y2L5VQgmYw+bxezZYNMAyt6OaMFkBtMOCMhvm4NG/j4Nj1 + A89ChbCw52HfwuGRB2QToPseKHqQK/bJVRn/sNA2mM9KrGCdFIqACTo10u02nRiHtO7hxWwCTe+u + d/Msr36I8t2XkvcPkPBEyuNMCdlSlzPZ0Xt7qH86e86E7NjSG6xxNi1vbViJ/WX3pg85SSt6bfrX + 6hAx4t+aLrBpxB6chPBxZFY/FoBJfWQbJpIg8Z95XZLc9COuB7ZqwDqv6ZriMt7B1rrLB/rf0jMI + /RqzZFBk5/lFdl54Jp55vKNzXj3k7JzXjdjOeXWV3v9/dnC0wTxdfZtNV7LieltFrKwUKGMMbVpH + tSw1J3OTREJZeYrvu17lnJFWiHYdzki181JOcX06OLvmezL9hQiIv8KoomVvKrxBs8TCc7uGwyfb + FHApjElx2M/UDnV258S9B2Kh6BD6aMpDJKihdgdpB/GdMNKbv5aUrIOgUA+GuCKSUO50H89eXrx9 + rpdYsbqOPcI8er90PlndrebDaSaxTUARss1QjAqXchROGAw/lnrwsWjJpEEUO0YPcDN9gcP4CdPL + cXX0wOhtvYAx998wrxuOZ/GQM5i5bsTGM1dX1bGUKUNlfL46q53bT95dXT0dNN5jb+qlxvA0iwK5 + qbMgUfvJiog5h2eOTkC3rNMfRbXTaefpsqN1JVVoYt6hNCBdAHrCTtuvjs5Ip9s/307oPBfdtV9p + e1c6JQR/uOS8QyiPbncK5SnJlVAeXSX/0IdPr2tlgqBn2vgbfvD8l4j7IQ9GEQ/CQBEdfLDO7AqF + agO3M4XsPmxv6nV5p2Eu+T78VVRDaldj5JpGVgkspppJA6p0jjlW6cEu1caTyXgcwZDUQoY2I/Bk + Va1CsJGfWD1c+OFiVP4+7nFoqkqd2cCbXNOKm9iTk/YkT9WPg64DK/MRm5cKaLddx4FwmHR31sQV + TM357HaRjukd8pGxVXN6H7szJO9z6Ssu1yufrQc4/XW0D2PUCuWZMDTxwxerKX7sURU7nNQ25Xaa + HynlBJrpkgy53dusfJbEEfEht2t5BxpIGl5y35w8qD3/oIhbIYMwG6p2iWRrUodlvk4nzkksQfWV + in3ORYLwud+A77WPxNqZ7c5jxBYtJ/wTXKy4Qj+Go4/h+CmI76sWtQdecESOLtZmT++FfRvW+9ae + zF2qyhoQAXyDzc/YK9HNyWSecQavVU3Y2LV0UUPX5kq1X6yWK5g0JeyPopy1rL23kJAaFH8UWL4f + W5ChoyDkD8mR67rJOmt1Pxqy5xTaAz8AnVI/3Vsn9wGC02sQxfGt/SA8rUU1BO/eHW5URW/kJxZL + xSajVdymTgfGsbL2I85ExBRVhJcMApBjmMndNvohVGJeYYXOT6sV7ZIsr48R0LLkMqlvqfuPYH1E + EOPFxSWLO5SH0u1O1qCSXLEG6arCVfjHO1G1BgPftzO4/fj5LwnsUkE8SliY4CKTPqIcz+Qvsw10 + vDwVJuqwLMHAjYamhDRGDvpZZjBEtvDmqA7BVengy4ZPPl1cPtUJHwrD8fNM1HEYjIemkurZhi6I + 2Ld+A7xguYgczhJ0vbeYbQLtthYzKgLtMwhqIIDYORqBvfKqIbxMC6Jg4sc88qupnF2EWXWxPguj + pEgXL9O5Iu0jLn9TwiX+A7fF4D+otSmmLU8LgE274P5udj3TZgXGg1ELfXL2VD6av1C4fzbq3+cZ + p1I5+An5TiwYP9X7qu5vnd4ao6U0y7J8gPNVm29ggyjkF+KNtzrJciIeLpNLFJhuOUhDM7ubXzhi + RDjfwry+F26hLSnD9ykEprbusVZTr+HB5m/GEoCV2hUxDjGCsR3DwDodaj8fJyRyCcjnYWZ1oPw+ + KTjRB2G4TxU8b96DDudewUO3O+3/SnJl/6erCh7g9zc1byDjSQWNN3k+5gLMUTHiAjROz67fkct7 + LUG4v2Qqg0FDes5nazTTrD39cnX7gDhdqsVmeFtuJ7x/tBi3fYQyr+bQS85mHQuu7rwgr2UbN+IG + nXtpgGNi0MUZ4yoMLtUT+32OZgrpKq2doNnnhSAHvpHmyHSvwdN+Un65ylGvzKZfHdOfTmeP0HsE + Ff9cvIdl6L5H0O1uOiJJruqI8irtEb+9+lDXEaXZaeuIY9CHk4CPBKhKvqqnvdAT3o41K6St9Rxa + mTzcXtAWnbX2BD9pQ+hgPABlOPGryljzboCJI4cEGdgtL/R6rjRxl9NmPveQYtLvQj7lgO4pQm+k + hcSt1CJtRLgttzINHxET345/f0v5+lKHBfsQAxYfz16iIYppHaCHwDMTsHxWHbPUv/e7tEwXP/Z0 + EF+5R4+LiCY6pU3wt/EzL+6W0qYfck1pM41YKW36qnKQ4ktWqOmtfLaGv2ut0+BeVnLbTLuY28Z5 + qBDniAKrIU38dn4/wTaOA46LoxaxH8fz2fJzdlB+F9+pQcwYfkVgkBNhw7TRE/DWFHrd//sy8R3z + QA5YJY55YA/qZDqxEFkwlYa/b9a29yF6Ptqe7oP8S1B8SE5HUiL5mGo4u7X4nZjpQVQQtYmq1G/p + JabLtjpti4Gn1D4eeR1cg/J2R7VPSq6pfXhVJYq8fG8jx4lIhDxMkppvUMBhAGofj3VS89mni7E+ + DSZYQrDdwhZ69tv5U4sS0iaMUMki0/khgq5KrqjtA/RFmw8QlDAslG6gQ3F512Z0N+j1NpXPaq5A + Ycs2q2vpzc/Xs00d1i0BxbDNpNQSK9kale64S+c3BLrg9mUDHGejlbKE9UEti5+BjzR9rpsT6kcn + AxyTpNz8NsdIeuzIFDKHoKcUwICTve5GFnvA9P9uHAAHvMCMFX2DfKZj2IrLYOlHlg/zkGLFldfD + KMsOTvKpJBjHfjQDulh9yUwkdHedw1LDI6TbYcS0nzLsgDREt7v6KcM60hBdpcPoz3cXQd1PGUU1 + PyVLEs78EUfwx9D2U0pGokrO2GV6rbDU8hdSHVJcggglAf+5x2gw9BxoLbfZOJ+kc1NGO16bmErh + PQK7GfkMb2+zfIugqetVTkAVmhX+S5bPYE6MTdCltMOST2S2DurnX8NZJ7eB1sMn8QX36oCo8LX6 + dVsCXTB3RRvBui3WnGl7vsl6X5a0xakwcB96SN3uOFYjXfVJU14CBZCarl7mR4/mACds4cTliKsk + ewBX3r5JUF2XuByyr9m05XMGXeyU/q2Lvg6TXny2OHPxiWKeHBWVCUyRHRxMz5jXyR9Bj7h6I1QD + li+CrrWhEYJ2t5JG8DTDH8mdCkb956zwNJdFo7shjIh3/FRX488ZHPxxxNm9xQCCApc+OefdIDrM + M+6IjNREBZBRXqSzOF9MlZ1HULA6pWgzu1ZBZ72Mn+TLy48XTwdXi6H8SSVlq79egZwBCiMahtin + rEFBkRdTqYIRboRfncBCHg2/zFL6LWthEHNnaBAJZe3JLNqikLTb7IoFUcSU37KLFs3JPIDdHSwE + qai1BrAfdSpWGBPMsBzmP5hTmwJ0f0rurc2c1k7Yj64TkKPnD//XP8Lht+EfARyts7Gee8f2K/FO + 0KvK2XJyJZHAEo/atKmkGSt/UiaJA01JwiKDJb+cHVWDq/cTX6cmC+8lY8+8sIvTvfSUa3py0YyV + oGwuV0+7BqTdl3+8Fp6nXUZlNKBCOFKceGEs8YAeg2Kju1tmgv/57j2oue7mE93uZD4pyRXzia4q + oNazj2GDLw+5vMu+PPZ8HIUi8EdRxGON0pouw7UyTk5Nw7PwVKu8yTsbnBD3o464rOt0uV2BQj1G + WvlxOk8lgsZ8dtta6+UHSRVU0cZu9Fkk6oj+2M72DnSvbTu6IgsSv92VB2swxHjwRVmUhjobDdN5 + vlKkGWm+97tGdh6deTWNgVd+vRFojfOMatRSTKer357uvkkChDvYfRRF1mon06VfwewCpREfOR/g + fDJcur4XDdT3Sh2+sXeOhgs8Re7Pk97WZ0HyQE1s02kHl4TT65wo8oDbjWBwjpOi99kCuvxl1K3g + Rj/irCRTA7aOLK+po+x+MkeQcvnP8Hx+a5fKLHa3sbbNhK6VIU3IShel50tFenugjJzSko4sNvkx + 6+YRHOFGXXMun2/rPxYGgkoxDoyp4bvsMLp6AURmAfjnMdhrHeGB1EPOi0A3Yi8DdVWVna3mioXx + pV2r+J+DyoX13WyAdyNQRBILMgZDRrEcMg6u5XlXONVH5eADZpbLX/VRdnKSZA91uIkgrDpZvXhA + UFvBWxcZDWvQ51FTqS7m7Wu7HQVLn2i1oPRd6SGrsUqixaMs/Wk5Un9MxVC/POKM8J83RxB/R8Ur + FCriMS9xemmvULE2q6S5siv80BzgPtNGosQa+pPyWvR2Hxsz/gws4G7bffGQsxGvG7FteHVVbfef + 56rKmMBXl+Sa1uZ608XhBTwz+DxfM4nnGwaBUogIztcUD6+pijObr5bHoM1GPiEQol/hNl10Q5GO + PKawAUwJ6Rj7ZVqEV4/fR44RfqAcmSUVgYivQ4uqNTOvrfqIx5SFa2umJw7Ljzo1lJlR7pnOEoKq + BHjB1YQCeUe5LcFwUUl2JaHyVPmM5vreHMfezhShaFMWqxMYyoRCsy1/yCGBzuvkGOGPIFukGC+9 + bRvAdY6Al6wL2Jt5xnXT1k1Ye7a6SBt1upghO6WOUJXNVPtPljy5VSvbNYw9qk+cbWWBB+FJ7JYn + EzD0iDn5w5m/Bn3EA4t5R+l5dUHl5H9Jh7Ecm2F5cr3bgiG5VYCK2dMh/Hl6ggr80O+xT/kJPY2k + FnB3pzrd7oqkhpLrSGpwlZSdt79fRjUktcSLq0hq4ygKBEOnehBpfu+3ZU673y9f6+yfxQbk1yui + jiM4erz0ZaYMyo/D4FhyPh1fCZmOr4gOJXJ0u2t8RdRL5OiqKqO9eM/Cs+pkQKLtWoAliQMejZLE + Zyo97eMYIaZmy3SO5D2TbHtPbG3lUCgVwSngBDLVn4Te1VMZOc1XC1ydVHkykkeZ9NgHz+LhlbTu + Xwzv0ryCqna5nrPwt/XIOPbhc6QTBc4q/DktyVavkr+wnQjyjS16uct0zXSwSDaQNoI35PJMoO+o + fYHm6nslg4CpzdYXxH4r2EEQJDhlqzlvJfvUxuHjbaniIVYwiqhG+V1shRiq3M62OzUq6huySgMi + cHnVIqxkjNUWvq7QZ7WPH/ztps+AFpMJL4kkGKiPN9b4kXVRjRIenFa4hwwmckSYadbRvEjIZmpb + b52kcR7yoOT22rOO9/atNi/7SgFRORrSU7o3RaPRLQZLFe90WOFdDaIugg86+EOTmijC4JkXdiuV + lI84F0pSA3aZpLymPD2LrYp17a5n/7ObbQsCOpOc8ceH3wd4n4x0JTwix44apG02R2QrsOFSdAws + MS/d2SuBDDsWb4aF2nmkvz+gpH3zPQ0xmmMRDgrXDKFCtmDruX4+C0GTlIr3LN8iNDwBI3YXIspC + 9OHRTUjCLU9rvlus7l02V7MB+OTB0Ih1IGI2h+NNUqBt6ZftUP7lluqaTC2Tsw8L+p3vacPArDmI + /GGeK6r51v62NWagX6+mB2L3feVWCybsUuVteuu2YwnSzS89FnXQzeXtbro5Sa7q5vKqqmN89YnH + NdWce1FNNRexCAIxErHPtHL+yVZYyL6V0VlFX3p+fcPW4w/Z1pf/5fFaH1yj4TrdgIE3W0OX5Pp+ + 242a7+Y3u00ZUUJVQUpJvaZJdZRT0lbjMAziIKmqwy/bFOswaksAa5GkAaZr4cd3laDlflxtr+MH + bFvHthkoBLqoFUg7RN2jCth9aKxL0n0ehW30vtbrtwhvwGG+WM2xB1tAwW2M87bOMq2pl2/ilq1a + KbCC22QnoAawwPvvwW9pjoqjIoD9a7Zewws+uf6vdxdP9wzLwyy5gdwgimy2IByor5AbbvuHV1LP + Diff/CTI3lThfnB+1RdrGev7cG88GDeySnDSyPN95CCCBUUlIfc5Hn99yPS5n1BeRwlycLrZNRzM + bQgsuGfUh6oywfe8Xk1T+BF1A7WnD8+cUxIjndIWWlInTs13iLwmzPxD2OKHZBJh57FHqFuH95JO + AWNd//yGQ9fllXwRUEaejlWMTQ8cPUB+mMQWsygC4ZuA+XE5GqFvUvLEG/bM65qSpx5yTsnTjdgp + eeqqCvjNP/+mc7sH1i+WBEzDSwQ550MeMz33N9k6nTV4wNzrrhyE9ZyF2jFTq192rzAw9aRRx1Ib + /YhzPWlULbLR1xwqbCpMFTrDVS+GD7ebShLz7YZLz47PdcqOZ1J2CkG3cGgtDnh5HpjWq5cArtnG + DiYl9yjqO+Y3N/BhHOAWM/E3gjH/+F6IDvAQdLuTja8kV2x8uko2/tnZS0kgX4nFJpXwW/h8zELG + 4hGLuB9XECqhzfm4mRqR6I6s+MfFM/Qm3ecrrNuf7RZ7Hn8hFbgqDgGGVDAIfp9tscg/SxG+I6UT + VMdVCWiAXAJn6ZT5DweVuefrG63hGOykNvQJWHOch9XwVjqXYrNWNF0vbgXi1BIHj360BnIqamsy + 4JEMXiWhCKu6/hZOlybr7yEpYHvDWugVXdPnMZ0cOPKUEnEKrHYY6QSr5FXyjAWd8qvoEdf0KtWA + lV1F11SBfHEUrO/S5eD83ZloLGJVgjCtCjauweDxVqr1iLWgxys2OjIs9Gee6Kgjq4ecdWTdiK0j + q6t0niw2GN5WcKDWmViLaptw55+L9340cL37PQsH1IrUtKOAD5yj3O6q9qkxcyQDaYAv6y7vO4bS + Hw4TLmxQb52D6h3qSk6J9vcaUMf8LHlUyES93tE/Twm7f5dG9pp1Mo33z1eXTHRIQKTbnbReJbmi + 9dJVVdX/4WWNvMFLIhugU0TPx2ChgcI28oXn+4Eu698gfhB+/4eXV0IpmReLaQM1w2l1/v0nHqIS + px2eFkePb2dcKWpVE30QsfCisELJkC6HRQrV8HM2n9xRfQqxMYwKzoYqpwvMPOi9LN1IDFOiX8Na + h5IKV7DcjKi1D9NcrEeyVP92s/oKV3bLKQIezj+nc3QsI1OXZNbJBzi8WpH0EoKLP4ksTnYQeQuL + DoQ33c1lqi5mcKw2C+NITo11IR/ovBH13FhbGcn3L67vg/sl8gw9JNipnekh6RlnekjVhE0PSRdp + K7nZbXyVzgPvOQN9BWlP8fnq73in1FODWKGYn4gVG8Z0rpZKWI4UxYKYYlfqnfeIcfbRBIkoQXl2 + q0A+8jOQzqhARDVOmK7SToUGBEVE5Xzg8kj/Vg4vP2Akyjy+SW+OmSYS+IR7gT1F2kbuaGRbBnMi + KGb2c5Xolt8vDop1BYWKWLEhnYMpFHXckOQz7hsSNVHZkORF2pA26VQoDhnNZYYPX8rL5tfFJlPF + SFEQaSANE6abposUlPPJXTb5vF7NmkLhbfmF/WQpghS5/Kar3fU8G+c4EabD602WftahD8SzKwHt + wCqE/gBV5IgKV9L75Yc3tLcP4W6P2JAHRuzJiArHRn6MAEF+oj396Tw2x8g69HLCYbCXq2VpvDO4 + 5V8wNRuHpf3VGdNKoFE6QXH8km2aeXqbdvcwoYLPskuytGjAQFrsGgES9ie4nqKfwtN02MLbznCK + yRgEfeOBhdHWVaCbWHnCCja48/ISTCXLSufF+OrE/cXnjNBg9Oe1rdpCR/71cKXCCZ4/4cVE1v0B + d9Syq2B/o5gwJZV8mMDm3TOCcTAReZjkq2m2+nZvfBJVB8LhFAQ4sUuwoMcjQ4AcuZ/hO50ui4g5 + SwfUjwSs8GJBmvjewSAmUHjlU0ckVruQNW0fqrXeamcFZvjJlZcub0E5A0H4x6O4qyJuVKYowKyJ + bioTPeOsMqkmbJWJLpKedFeuKdXBhWoEoixKiJAFvofVmPqLhIEUYWf8mce7IYrQM86AIqoJG0+E + LirMqD9eC18MtpjU9OR2J5Hmxh/5+OmYCh7K/kjjlLk3PthPmwVj3Epa2MpLqDGCBR6jxojkNXJn + ka3sLaRwS1N4kKhNf9i/p7rXuxTdf79Ykj5XRcCLwXyy4G+Y93RYnyyHia/82EsKQQfmXg/Wl8wT + +/P3S9ie3Pme6HYnb7KSXPEm01VVw/zpquZN9oO4kkIRPf9FBFEYiZEIkkRTbPxGlTkNa3B1Y860 + Mv8Jh069uOBnT3Wx8DavO56vd9PhEnQr2zucVJy8Jb8zR0ipgNUKHrp7sFnCML32ZKTatjdq6hPZ + hdAxenJaSfUsSFqLDwRPQu7X2qjXCtmV1Cx0eusSvu6el26syUCPnNNb12qgS0nh04zag1lV9/l7 + oR95bdUG0D6vMXB1rrK28lDUSw+On/AvtLmv67EX6WIBNkm6HP72H2UpePcAF6VJJsGzWn1yWVfc + 21dOqlzEVDLt7Hapw7vdMkuUpABUC79s10DnontKF94hQhL2OBYpmKo7uO2g3TRQa6D83fvWTrej + pqPkwx3qRcQKgNGcbIlYXhpssaj8tHsAZpKz6f44E0P6jLIUOsBRZY/m8YRCUCa0ZE6UvY/L8z+i + ZAWTtyEJ23/d3m0yqippY/P6Ptn0XhwSree+KdsMJdvBvlGZy+fn/m/iGYs7GAP6ETdbwDRQMgX0 + NVIwbubpl4JWpKTQq/2uDA4+NlU6BCddbgBzbUQoXcUY2lEExtnyL3jD4ZljWc+/7YBHawfIpRsK + WroNU6M6N/pQ3cMicPImfMaCbjCc+iH30IlqpBI7oasqzz+dowNVuvsH1i+WBIybxBEthkTtd/Lu + 3aLgJiOd4CS2k6OE71UzvNgnPNVKSoZKJtjfzn4s7e9TZVKcUFTOKd94me02+/K0nPadOKDCVd0H + dRCLvUeZy5nhzHLjCd9CDbAU4t9OoNHRSy8iq/k9NNXBapa3u1nNJLlqNcurZDW/ObuqEVP6Mmmy + YjXzMGZxNOJhEvrMJqaEGavzoLSxVRAcSiwmtBMKinUymd+keZ0psrhJoWi93i1vZzaGVsJbC/TB + wIlFEohHCBnHRoIYJ27nu0lapQYfNUBUQQehT6G9Iwc4eMa6Eom0rmD5qBW5uZbgl0g3chplHlcm + kUoHuClUuT6zMPaXRXMKi8Pw3aZzhaNSTCiHFzmZh54TUEy6nNxhxcCRTJF9kfP5nJGg/fOqG0eK + L1iYqLc7PqoQ/3+53NZeX0KvnY/PnDc2/YDT1makVzY3fd0AG3Ib15DBR8YBnlrlJNP4+Zhzz0+C + EefM9yrMu10x6Io6EEKa47+tZXZVfY0b9DlegM/FDdBzBSYh//GQhI8TSPAxDRYsmN5e5+zU13lR + rsmCntytC9BCeGa++joE1XGdYWod3DZQawa+AX/6zSCLcOkT+nVIv3Lm+c4VH40JHKcWd5yAQPH3 + QEbshmV4cES+P5Zhj9iDh+fbQ4EksiT2C4Kb447MRDuqGBfBM6+TCV485OqsMo1Y7ip9VYWuX529 + hP9/O7xefRveZTC3KHkaIYlmmy0Cn9o4ra9vtnxwg/9BH5XnK+QFoVijDHLdJlusppmbLavNZcaj + AmOPhmi1uU2XrYlQJ3u4imCqs0PqJ69mNGpyQMnbjSNW2gcOeyH643Z4TKw/vkdpkmefLkq+CZSn + V0kfpWW+wit0kHk6R4S7K/R0xomeKMVj7//7pjIOeCK6ZBzg7Y4ZB1JyLeMAr2rj4op5NdR0Pw6j + mvcErnlgXMA/0vO317ggVvInfqOC+GK4pIqtip6YM69Vb0XNsF7Je4XJdsqqgKf3mRX0Rp3Nija4 + wb+HWfH9hmlAE814emKWkOZNvCVS7wAVH0tr5MJpPW325ck3a+MOvuYfrgKb5vdPVldto2c1uIvS + 6cSSGZtCF/Gaec883pE2TT3knOWoG7HTHNVV2gi3m8/KJbyGbwdDc7eQWamNhUNPLj78/9t70+a4 + caRd9HPdiPMf6n44MXZ0UU2A4NaO80GWZFndXjSSe3r6PTExQVVREselYk0tttVxf/zNxMKdVeBi + Sbb5Try2m0UmgASQeDKRy9nx2HUYJcx+Pqr/4gNQHa2XQFxURmdeT/F6wu8311xzGjRjJ+tARiRs + q+ZBsw3clNbunvki1WdWtYY1rFWlOtlHEiklurXk1i2s9hhWdWV8xQ5ibo5YfpwFmvvz71HLl6Ea + ubJwSdYw2PAgt4MK0FwbEtE5HyYGaRQpqEi5hPd6GlN/IZim9EG5ClYgH6CpcLnZarvPDOGb1W5m + VIyNX2FsouVujvBrUSu5N0j2da8BmrKAd4X42NvM/uiHLtSbxEbI2+h8M61MMl5SqoK4r6xmkQTJ + N9opfWQT+Yw+4qE4YReBOmEzyR7ylbdH54e/GcoqI4txv4PPRncxj3i3fN+Rxdp9sQ/46oP9jLsS + GTXD6/sbDqVEpdOmENIR2VbKfp2tvDqb0ftKh9uuqqpEJIQNoedX82h9yzsPI8nG2qI3B7J5GSey + 6IFD/0B0OGb5qBOTfxss9VJVqJ1s2n4tsWYrqf6kl9Ghe7ioAeRNoZrwUn7jazgN+K+rMGc8VH1F + +ljcvkldDrmQ9q0A0YFcSdTG68EmNrEqEEu8iDktMQCZlKXBjCJdp0z3KmpH9RFSmqSAoZuzbQtr + KSgl4mCTMxyvZPRasJne6i1SIhP1c18v1FsXeyqTZDBE4hzMWwbFVO0TCSkeyD7LHDfnaywPn7ZR + qY6bk3sld68K8hrxty2oPnT86z7zasWlRHeDrCX8sDsNv49S8wp3iYI7by4YcfXNuuJ1LbOupFww + 64qnAmv94/wSs50WkvEyls9LxtgvPwHcBDQx8W3HVS4jx+F1OOUunbAKPgXTLZeiyapDAYFzxO2u + /1iuLadkdsXI7pKx03YdrzbaifjMs72iOTWX5evUSLqQuJJWV4mhfr4ea5p/jEA7pmOaBbNqjQ9r + Pk0+LF30T4rXuWEx2ySstjXqeg6tCX8yhEq5Crmano+pAqq2VUPVc0BLd90aosl8bfAafVOsDOQ4 + tEh3cnZ+VpqI0VHRVnxyeXTxwTg7UxbEF2gF3AToK4I/n775/WT87PTi8O34DaZu+z0pSac2Nfzz + 5PCc2c9lWrfx59sITpgIi8R8iueYEh0eZmTKWuRrkw1zi3NVYTi1INOoL6QoHQ3VShzxHZGUvGUm + Nz+bzOJ4RGv++b7fUXElsz60ATJOR1bmppMG/RdT2YRaN7MiqLhWLqClJR10weOHabMyfpiZhQfj + YXq6TwC4pyJeCNGPmmMAJbefg7rq7qp93DzZcaRbDP5jryGnMu7NEzk2+Focp5tAE5Y9BTcdV2ii + iWhutjSQBbnP2xug2tiv+kqabXpUBG7+FS2mLSwryTDgiMkoHBoHlO4mZo4nkCj6O887GH9ENPu7 + C5MSfRAiXterCCAoFysC8KeyIsDFCS3dLFusVBDgJ8fxLNeZOI7PNfNdxdkXK6D/uRJw8F3Bwzg3 + KDq2xUhzr67W9LdQpN22MLWJHIfaiOURayqpjUjsESueX0/rYYVE5vOuRm6VjMVzJJQH9aAJlMfX + NaE8p1yC8vg08dCwSkkhsFpICcoz3/OZP2G+z2/VcRu92ooqBupAvw02CLgwDvqT8P+/j8I5llEo + 39pX+Aioe+gcFHuR/nN8B6vsGtMjRqi84rIDvs/vFa1yIxyoqfvj9YtEZK+VYYZXKOc4MHutL0to + hWev6MvUA8TqI3FyXdqJh3YlSelP0cK5EuWBqzI8APWawVDb8txyKNGT9FIplNZMucu5naw8taJw + CWZNlHmOUK9GefI9NKna/xr9CDtjxGVHovQQ2x1J7nDs0pTF2noIJSJxzx164yfa1OXl7wb38+Hf + gkycRmspePnjVNsaP1PvTsZv1L9s4LK+JtQ5zeUez/6yHatzLEAdBa1bpt4rsX+N1JRYf9DNdjTZ + Hs1SSjJKRYqTRFyBpMFd0eSSphmRcp3OHlS6bzIdiF4Zj+rbiYeLFNm7aZp53T104EmrMI+yTPpa + 8SINCT9UPpZedHuLSL/11CbXwP+pL+1dRNW/eWNSS7+yiXhdT+8QlIt6B38q9I7Ly8OS9g7YyS6q + HYbv+r4z8T3Psnfr7vM5UJ/+eLq75TPnR9HdNYR8/4HtvWj8XaWQ2rm8ktqfLy9AHunvXPG61s6V + lAs7VzwVO/fVm4uiwQBvdcx8uDjsXGrD/5wJz8Qq072eFzwVuTGeu4BmfNsm/PdwlabP+w8I9US7 + QQG/BY1V1Nh7kbveCa+v51t+yX+NdyWL4C/YqBNYE8FfwVWM99mT8RWWq72fT3jS0HizCr/AaTHh + 6gjKlRV3SVXh5K/mq7LWn10HRd/LvFbu1afh8EFPJGXBUsWQ6ntIm1r5e8jLTF5E5pie0yfxQqEl + atk+dYpadan2ZS4piWM5GiRHWmtEa21MvtLaGOEWSOo2UUL7cboXnpkVwy1T2uHL1kchUmJ7wlN7 + Xz/qZZ2ua/ITFteU2LkJ7eA6TEWMb/3eawbf/MTz1sGqombDcpryI23fW9VI3vlWPhWC/fDwUBU9 + Pfxwjl+Wnowvoi9uLrNfjrhwv/VkiRexF1JlSehiSmXSCuX6IXL4mcnXcaW9RIsJvbm5PYp7lifi + ZeUi6x5ZTFxCMgXBsAiYARukLhuo/rb1eUG4P8/fgCqpj93E61rYTVIuYDfxVGC3t+8/lC57MKNv + XuvyfjEs32OuPWEmM12ZoPNkvZYBPwHswlmQ8bbIHrM7fFwmPFD+E4z2crkh9nL87MPL8+eCcWj9 + QxeNaLMeH6UO/IVZ5XUV79ZYS1CaPbiFGsgIEzsuofX4w+GHQ06Q/3gb3dyOg+vraIEzdrXdyKqQ + c2gEuqwKWfDp5JjvbbwpY75ydt+8hkZprfcZgHbToaVc28UFm/Mxq0eOgJOYy4ouZns9i87jec6d + KHdfYtn7Wht9/7M/ws2hUJ0DerXIzmGnqC7haENkZ8nTbBdvoMMZN6bGDbh7GtjrXqZ18AG0FDZt + TmhHubFao7jrV7ATOqu2F6csDvtiZ7M3ODq9ZQBivT1s4RdiIa6NSLygFlZyS7V3aCO5+5MTIy8k + +gEUX81m3qFqdq/IAcPJ+FztTDtSmbToSaU+6SspiaxY0xaGPYCrvY7Lez8FnfQhXpUy6ZriXgeP + BUMNpIsJzk+yCziWe2A6jXILiE90MwvIBnJ5BcQzAclugjnex+cTWo6COeBUg0yoUfl7QQVLWsEM + ApYn3MB8Ku4ZqpOJ7rrJ1EXZmJ0zt0gzsYtpt7skrzKJkG3CI7d7cPSTN44/EbuJZ7lcdlUvvh70 + sx5CaVJSAjlVkZokT3nE2c38foqDwVC/7bKxa4Jre5oN3YZfWrdjYUgIfrJPBnRPiu/z8O8/316Y + TgMPYPG6ljYrKRe0WfFU+i6+O0S/+cIlIg80yqqz9i8/WSDQbDaxfMbPJJSdR+iKhc4maNxFnBkA + 8r7PuzmdjZ8dvRqfPc+kNsoqO9NdJDDyFCGs9Tfc5OsX46tVNLsJ17mz9ircfA7DxfhiEaBGhHRe + r5ZkOeY+Y+EYW09v+IUjIrzKSuopbyrpj+x+VZkp22N5w34mOodYDIu+l3wT8+iw4Ono195wOA5G + gHcusJWjk6rParA/FxmfVeglI6p0bAvgXm2bOU4kSnaeyXkN2q3lww5axa4XSNZbFCTJ0Te3iEd8 + zyY+g45jj+RY+cFVxRRNzVREGeenSPNTn2P2fTrtHhVcxii3ovJgLl9PMANnJ4evijkvyD4tZK+d + jrfKzOD4Xi62+zYEuvEswqpfMoFC/Wm7S88Qcb7HF5bVoGCkeF3rgJWUCweseCqddP4oXfVT0E1J + /qrf+eUn+NP2qTWB0xbjyMUJe/k5oj9fLq5pknNFKHCTcqZA3lAS+bkCCBJxFsFE4s/RYhqvlnHq + 7Pt68xeXL5j+KcnCKs7Hy88VN/ZZ+nm7rVcoBZg5DmFmTccsH4dND7AaH6KyjSBLEC0JtTUKTdcl + XvFEqUxHmz9RrNoThTnM9kqe9s1J4p1+BQtHdWsh8YznHu9Zd78dK2QiY3vDL7AjFngc3UbrDUYw + fAKEita51/Twf8bP+Cp5zldRMhLjKt5ibkn5Abw4QtLqRKIuozpZmXWOlSYUdiUN+gZM0Oh6XRht + zku8ETEM4hNWNDlJap41jbEy8yAKgqaBtA92fH7H2Z/7MoESYb3PCAXpdbmLZF3ExvdiElXYQITf + nl5Qp4EboHhdCxtIygVsIJ4KbPD698MSNsCK63ls4P9iEJM6pkMn+Ldjy8vkIwUXRYR+XZGsF3wD + b8XY8e4R/rhHuyO8y2+JjDXMVZikp8hENyWTN4NBjdfbGzgnNnh3uIwBmqO3+AqzH0QLmZlIJCRK + 7304mHi9DXoP+uvfi7gytVIykny5ZpbrZLZcM8AUB0YBSmXF3MhkHDzmXHjAX8O/0SFOJtvAS9XE + dJTP2syPeJiwD7gfz8a/qllaP9rsjnDxJv7TtmmOJG+46WwnN0vbFHdH+Dmc1YylRbavvnyFfTsp + W/nKPSBms6KV/BPtkpWigXzBSv5MbHeQd1ijE0EQ6LZ3xVuIip+l61jxrkI2hD7FHqWj0cPUclTx + 2r4sBPry/CV9SQ9Mu4nfnfpG0+0uaSLrdaceCq6evj0f8whYzs+bOay+u2gRGuJ0uYdtevM8x8Hc + B/+38oN/FT30kn4gz0HLExmmuRL48zgh0bF+XpsJbBmg1rTWrOULu4wWs1tfQ/R2UyriKveWvt0J + LkR00Ls3JmX64EK8rpfbQ1Au5vbgT1V00DuvnNsDs33mc3sYtucS057AXx6Tu+KcC+FPsF8MNCPi + zQd6c0c8iV1GwcGH+UsRFXgdfgq5VTMw1vjzTAkjlSRkDh0tBxo1hwU1hoHG/a40IHhuwakrY0Cg + nguTVnTf7yMYifmOP2pz5qm156k6T7bHDkzSrMyT/Ea3ypNqIlfkST4Ua2m9nV9HG0zcNQMlhOcL + Pjw+fz3OFStPEjRkBGfrD7P9wvwKHiXCJZqIVPFIWEb4c5DV8oI8MQx0jFrwiJ0EJLYR/wkdR9DJ + eAHoVWrfXRPVFLpouo96oEp8i4lE46rQeHealPqmyJMrX8pMCCz7yuCNXdnTbSISisVfopn4QSzE + Zt5dvdaIb1M727dEB8q7Sdl1nvFtVZG6QctFpK9SsyaTriHljqoO9lHxqkMje7aJsA4mi28qKxm0 + RSFMVI7A1RenvWyJRnxh6mhWAfxUvwL4aWUF8NNMBfCL8zcYaFGwdbCyreMnZvmmzybwV6kEeNMq + p9XVj7AjpWQu+RhIOEyMooOuvIlNAkVeYKh8rIqcQkNLEN0yyyX6YGddbVVZXcvswxJCGE2yi367 + BXqzHvIElgJ78CRINTlFlQcyvxNVszrhvvX8v8JS08wzaX5smZjM7Ni00tmWHRlAGuQdGbJDq6Tf + Kr/TTmYVt0P+CsupS7Crute6cPIT2cMjLsCSKy7f90Zmd2f+R0xJRFzChMP9/qWoQ4/vgR30NHeV + 1vXUA2Vr/TrlA55Qhp2Hr8Xcd8nkhyzB/CRT6limTJKE4o7vLftvhthQIDY3O65DK67LBVwE9Cfd + UglrUPRUvK7plsopl9xS8Wla9NTJFz31Xdu2Cn4z6JcKXPSpO7FhKZu0W9HTUhlNp7aM5gn0Hfbf + +NLnL+CZBD0un0nrTPVTZ6h+2m/1068xXyOx9BJjnGsTkYdeJEzvI2GifeBdjvO5Eyu07+ZlVLuj + Bo1CrE8hUfp3W8w1FerC6OablyjY9c6/Dnnp+j77dErMUpNI50zqeE2cM/F1TedMTrnknIlPZSz/ + 5R9l50zmsrJzJl5i+c6EoFONyqKW8bdFEbS6X8J6vg0W93Njw1GuMGii3UZGxa8/l10h9CMDMtIX + FBAfjr+ieE/7IHpQvMPKeUd6llmqM3JZ3UIi38uD5NbmYFrpfs8K2YpStVBRH73V5uEIJytRwBzX + GfUlCUVUUcVg0OsxV2mjZQsim9Be3j0U2UqV6hF90DsEUDekUeva5trFz9FXLuDCRV8F6q/WmfS/ + TGayejs3JWqZ+QXzqFTr3Qy7p7PpcoOv7BnUMwXSSUBmB0cialLlSETpqdvM7SX5RteVSDWR8yWS + D8XRlcs3UpFdGTFy4q+VvVv9uFqpq3zJjlyL6ODi2CIAWts4tnsamuSA1o+cbkK1Z6ebx89Xpdak + pdakdeo3XZLiE90VKRvILUjxTLphnX3ALPBhkKbEeXb59vDiw/PRaSZjQbDJZh4oOrbJRjAI3yYu + X4OuKUwsheKsudKsrVdRX7V59duj4ny5uI3TYn+8kJGAJ7XX07otYFncqlqz3YfQsci7hXlvuP6B + Ni2sI8e78hd8Ulc2VnfMLcqko8kp0SB5rV2sqaoKTd3vPyj058PxOcvkJkiLWbW6CAbdRmU9tMgJ + OTBps6yH6iPdrIdJI7msh+qpUMGWdyt5yyujmZ6dvz07HhPqYoSW+3x0LlJnJHFvwXyKNdcT5w5k + 8DkSKX6IlFEYmJanKpKLxd2mYDTA7XzO8WyuDZnWQBNuJxRdOwN0OjvqdE+eKlL2RXHrsoJIg2Mm + GbLUgYzYkXKu99DaZSlrRmlPr0SGqrtgAadHCEt1D7X6IpACnybms2zvbgGNxCB9KxfnrjrxpnC9 + T1PM7D7k6gvC9+KNRmzfT0J62zPdQlU/x6s893dyq67GuW16aVbaJDtLqxS933+6+CeQESdZC0TE + 6GVJNRhqmjm138jBvhzg0FM1I6uM3AnXW2rWjs3sSZomqkpl5VlnDNSM6pPLrQsKsZk7NfYyfL/r + hu2Iy6hSbs9pvF3OQ14bLS/cMGmogvLQufVkLHLxAlqdC2+NuxADhKOmhr8+4y6EnCkTmgj17WbM + 00AA4AoW+BJs2fVEbru/eEHm2iGvt1fAxAVC26Yih9nlM19r7TT4dj9utxPc7tgHpt8QtotvtFG7 + bCIP2sVDgdQLaVFFtpBcMNoWBj3+7ewdHtAYEZEjjJjcZzIKijp81mUZuHlttLtmKvKnmgDm6aQz + b+nVpMX/fuo79VSiiZqOKvRCG2R/Ea/rFnqh5ewv4qkMwjp6XyzRRGDpe8VCLz9RD0vCTqiP+efE + Lnu/im4whfP8Xtqgr6MQrbLjQBS4mMbLeyzVwQtQiPrWAS9ZEa2EGWIWXodTIdw5En6hdiN3XZjG + ZKnyvUxjuuteEu9CKouzYFrrapdeD44o3yq59PYVrg1jX4arggKWu3v0Ch656c2m6lridgIHwy36 + 2ItA67Aw8mixgJbU+CdqxePLgoeiCOf9+DYATgc8pEAk906GyCO7xcvQHOYv+RSueGFROQ7MwXOP + ja7QFj0VMSfrMFtSlNM4ir/Q5QgXVVo6hQpPVE86BlYxpqmeKzKJpeppSnOnvrU7Osm2ZPqUdIGK + sBzlInH2jx0h4jvlhc3sRKFG/sdfWnR09BRuMYVjS34BhotP4Txe6ubBdplVppFfxN+cBiiMrqZb + WOGPe7qIEN9f3xDq6J8u4nWt00VSLpwu4qk4Xd6dfSgVAKSWVShFQX/5iXiMUXNCYBPi6sDT5V2U + XLVMxpghCF3uPsep3yLszHzTIj9FIS0FyGYgJDNYAAn4r1e38ISz71qWKP4cr+74P5SAjbdrkSxR + AMVMX2RaqoLcw4842c32TtSnkofei/EiAhZydSFTtUpVPxPHG5AvH29KuqXPKk8iz3Jp1UmUyUG2 + U1+ZBqureGFgL/GCcfwMyyfAShovwyUaHZ6P4efZOh/t4RGz5uwCsOCZvuf2F3b8I6yDEW6UJFcJ + HP/ixBTyJJkavhAwsVnrPAyjfvVhoqEP666vZqItjSB38Eq1YQS5+EY7glw2kY8gFw+FqFJLOVto + BP69gg2BocNyqrM1wUrR4LINLJBl2zIanIqcpYJSrQG4oox4t4sWYntM3CRhktYdLTfSG5Gqlw5n + 1mBAcGDY+fuIbN07aLR6B9QVvntq5nWfj01ksA+WywCGrp/gRrMCn37e9X6wEKxdt7x2y7zeGX+s + b5LosYqfYzpVq7TvritB5idpWPxmaVh8/TQsfmUaFl+mYfntw4VdkYbFLKdhcV1qWhNY865LCmlY + 7pCT68pMK79dnNB8cpXfNiu7BHeK6z+vxvusBm8A1PAAcJTU+Ir+VDoZoxlUh3SCZN4Z82jxMSxe + qufdir26rCzVNGuuRBF3ZNy+sk3gZWpdQKvpo5HuX6Odk5MPRBWIJjeiF4UCvTiNP79994FUkhPz + O8K1lGaJcZnwgG7rl7BTFe16nTx6Mnojs0Q6Ts6NebRE73ND1HbYuYybXoN8OwU1pHAkIszv/QUI + eH3hKF7XEo6SckE4iqcyzO/yZSn+gjm0UHzC/cVg1HFda8KoS+meGvbxCuiXU0v1lHH6KVWtt+Gs + 6JC9r3XS3adl5ScijOgEzlxX3w4jXtdaxpJyYRmLp2IZH/1+XjrjTa+Y28TlYUSu40+ISaidzW0i + 5ZKKO5NnwqdgukU3x/HrZz89N+Rl7z9MQD/iwk29Pn0BEzy9n87j2/DL/ZyrhLMIsFDGp0G++7yQ + GT5pAg+MNNc0Ho3RHcIwbseOExsw/wHT26STlrO08i14tF2WAQhXY+Gsrbz+hkFJ00GhIKhZF33K + GPWUGaRgi0E1OGf/ri3QbtZm1SCUedRz7fprh+yw8xcPhZojGejALMzLXaCJyg13JC0R8uswCAXp + RL1izg8+L3u65jfqmkoam6ySDSYb2JTSfzjUatTTkk9YblZ8vy4zSc2s1CziPKCrD2TOLqUCzbAB + YrT28WD0PW31Ecq85BLKtUWlV0ekgEhi5pLlAtBNcXQvdEzsLN+jf2zLq7UdrqR+jmClEGhATtgV + sjJJ+2PcAvh25dZpQsVOqZSW689a/lG+0Ilw5aRpCJRzVDeP1J4cW3eS2Z9sx6Ie3xuwL2R9X80t + sifVdoLNTCvZe13SEuMRnptNMdw8CPhH3sM/BQM6rDBtUAyyy67ZjoSvWa6D38IdaVWN1v78bInD + HD9dmvm52nyODXkoyVOqXYYDi7hu4zYmla+ni6VZ+7Vj3LUetS+rO/uNmuKoKEPahrbSr9WKhhi2 + fMnj6A5VqkA4I7UZhJ7YIjYz+eFxbpwbeO+lMovDK8ZsFWFO6q/YuiNzxCzvQY/k7rXBnqSduoR7 + vFOsIbTDx7Z9tz3iNW5twk2m0jl5uzayVTP66NLjOBlrd0+zSrcmPZcIzCrcQdcwGJB0Ua9r01dJ + ifkLDaMJ9Nqg1MtYRL/K3mVUqi61LvUdCNs7Ce/11e/StNO+6bY+81+xWc1xW8zfGx7Rc5NdbZkJ + HV/oUNWGLLmn0hoa6dBWcdK3lpEc0LZD6iBRiZVPs709s6UsxlRFU1D7ddMSNOob3WgK1UQumkI+ + FBbgRbCe4kpERU567RgA7eNpxIs8Jmna+Z1VYt3J+bhokshRGJ/czEiOSggPeHAGqJcyg8fTL5vY + 3R3HtJJlmCR6ak7HJqZwVvnbLBwv4k/x34DtmaRRmfwx1/G8ZUic1mXPV86916IGAZZF5V3WW6bN + +ZIcPa6IbcQGRCo/7dR5zCIidGZ7Ff13G212pW+oGCNOPz8BtgucXmlm6pYEQokrSzqxELtBnjzx + uqYTC6dccmLBp+KC6/DyrORozIhLik4sP1kWCHU6sRg6EQrxdrJeY/BKZv1XFim8WWH98+v5Nl6F + cpWoNC+nr86fG9db4WsmH87jaTCP/gIOSF9SlV96GSLAxfCKpNQQjONz9X1w1t5TuBiuy1XP6/Ha + PnmCF8Mpp3OJVE/Pzyo9Hc7OJsrTj1f7Q9v/OgR9ayZ9UOD8nc0ikckhRjKYi3K6Xa3j1VrEIS2D + 1WYhnFhOlxHxloU7h3y21NNgLcNlzm9jfJenaU1slvnkBhsOfWVNxOkqFIlVgs3tZ9hz/AZmdH6a + ViCE/Se8em3hYIa9FXE9mobR6jzjnUStIyzZaqU1iuN4As4zylTWMey+boQWnLy8i1Vrs/YoqM+A + YRHfyfG7jV+laZl1XapXMeszaROWZH1jLwk5ML0mrtSZr7QzvyXN5HO/qceycuz787MzYxrzU/dT + uI6AYanMGO3+eXyy+sScQmuY9822hDeKI71m80G4GvCqQcUtccyfXHDBxF0bZT+NO4CzvONdGhIJ + IkRAlyDf3fe3p2QhrRJ8NPFPfjJSR8je7BynU6pWZYupVVvTluWfTbdJTST+umb5Z065VP4Zn0rv + t/dvy+WfeZRboSSSA7jW9CaORairEuYdn/98+uE8reueoqWT8+f88L24jTHb8J3Ug+G8XoXpccvj + iufh5ha4w0/Z9D3MCRnf0YmMwQnmaxT40xgNr8EY6Kuc9vFdOZ1xftfnQRWtLTnj+cQjJUyFee5u + tjyxbSZNSzJkmXig0vHYNr1aX5fqxgqJ9GqchkzmuSRH+PysknAC6HalHsx7kJBaF5VKwlfbJPld + jg4hbqMO9uAeva+JPekEZY2D3B58XnAF86xGLYqU7jJtXnImVCVLzA2MFgoZlZsZPerOG6HMSCLZ + LIF5NZNc7r9K3+/0rUGDiCsmWJ1c7eW0MktVjwhlFXk8xOxxosF6Gsya3vXj7OIn+mtDp7MNcmbu + p2Wb4hoiby1rnO9zR8baPhKk1NDYXTkCBSfnfr2c1VobtrSz5WaxdWLMDFW+hxocN40b4NCt4Zmm + 14jCNE6SJshmB6bVLEsQ/0Q7SZBoIJ8jiD8T2Gb9eSYDzS9PPpDUiP3hEGSkytTJPI8x9/noj+Ni + 8t9L+HyENESyICqTBVmWcJ/DPBkBCrtVeBdjPo19yZhsYjviLjpabzDK+bVl/MZkHWj9kBaQIWKZ + pD3Y2eyjZIh2RMQj72KbUh9tTLzMI0Iluww35Ojno/dvzw8vL+vV+Iq61ZS4EpETh+jHo4jXNRE5 + p1xC5PhUIvIPl1YJkTuFYD1A5AbAcfhp4pk+o9bOeJSLzdrqu855X2EtGTpq42V9A7gXFD1MZjEH + yIhdV5sE23BgMEWAvauJ6uBBYtf65+faKJWfygTBzcJcprtSLKFbF2KQNJFG+pXqU2lwbYRrKkVs + vnCUZiKCRqu/pc2z55azfURQq3rzlHhpaYNX3gEhDUsb8G/0SxuIJgqlDfhDmVB6PpWhNcRQ8xLN + 7uGMiNfRJp4bbGIbV9Fa/RYqb6NZBAhO2PrISD4TH+EJLR/MoyW+cDQ+h2ZG2Ba3fTFLnlCOkJ3C + yb9rRXeXCItmrznem1HdA6i/AkwHeSuoCh6i61WXPMS+9EDOI+p08jXmSDtbO3NYfSKF3/+xH2Ko + 05RJxiaEdHhRQh/MM4Uuppa+IGMUVJ568PT1YgsbGE3blWltgmG4dsLEZc3efd9MWWlFtsEOZFLe + 9EVOS0drgiWffEbg7iVYMdKTZCZhBS3Js6QHj92urr/qkPaVagjqVFPVUHyiqxrKBnKqoXimVMOo + ogoR16ZuhOc9vLGB3sE8CE2R2r5HXev56BI/VXWHkA5XD21XFBwyXbEs7sIoxvu4/8B+26iLeX6/ + fVeDqHbk1UeDVpaoTFQbRKtMaJGuYOdHJr49i7cgNow17jCQuKsw+KioYkVsmaczBtEJYgq4GC2a + 99yhYllmetxsczi+iI3JnmJIbBbcBTcwS5vobluZYnYPqBH+VjCwCI8x7tEneLtnrLUhY7ZwmhRL + aFxYQpp6vZ/mzcW4vKx+r1cDlLq+0IBhWRqX1yuiqf12lUJyg1OZzeGN6VH9+yzxul42B0G5mM2B + P5VeQh9OsS5OwU2I+WYxncNPWKKNOhPi+L5r5Ws2Z2UCqljJwW9sYkPFeKWBpcojhEerLnBysAbd + DXqMwmK6WXAXoSm8nsloh+/KJKxrbONO+RAtYR9KAqoSrDyGhHdM+Anme8tTcgKYvOazD2gJP81+ + F8oWblbBTC5lbgo43NwQvwdbALFAGtq0rMNL16fCvSvA3eTf10pG5PRsy6xL4wvTZcHp5pbaUjOR + 77NradEp2wTUis+7SuUvxHiB0vRCJs+GHmPWk76OLsJpuNxkioCqDHR8NWiszmdHnzbP1Rp9kS66 + 4oJE9V84RHLHrPGzN8GSLZ/zdZRNVSN+f3Z4tybwq1q1uOwQd4Rp/lxeJouXLw2mH4Mb7AuIjHgM + /VF35+sR36+JAxUoHcJ7o2OYtE/4oZHsxIaApyd3XNAihe+y8hRoFY1smUwcLScXWUfVpLjzft20 + jjCOMztMdVZIv8aG3aTU5mfP0T8+JBJR92MbWZXtSsZpD7HIUmQtuNfCOSMpTji9BuJIS6kzmSlj + RkOjVk5/DUtXuqa6eMdYzGT23v63pS1z8uAKqMUdlT6OPWhAlukIpFggMgFkG81utFCYgjFEueUw + 1uQSAF/XdctBymW3HHgqLwHenpTdcphHSpcAaGTw6cT2LA+vXHhJcGFaWctigrjLMIARVDceaARy + bKvyvy3CG25VBmktbVPw2Rm2jVI/86q6SLgLy942Dc3/vu1hpviS64s61nJhGbymoSouUJlAx7Ed + R6el5HBGoF9yJiHUqTHBVxNRjNsVUiLW2Dmw/Qy9lkGdQm08f7mQ90aq6PvofzDB1TUs3zCFAFl8 + mplaObIXuLkRJa6TsV7dKzbiPuATnMmdinMt+7fmOdvlJ5lyp0dv3tHMJy+kaJondIXNLiBGQNOL + 8Bdj7bU4whWfXFFQUVkd+cOVH21u8zK/IhmFcC9PGa8llL+JaCPXZEnClTEm4mnshAKykp8hUU16 + lT3Ks4itVIur89d79VqbWMJNm494FqHEfASXkwdNcGc5IjkFGjva2RX7SZHHBSy3xzYQ0Dq86Sv3 + HlWRlOcv6Ut6QJrVk00+0rQspo1kbYvJU3ECX0XqXON6+l9AdPT78blxM99OMaSFGeEyEiIqT5Nf + 4xGRG9z2XeHmgfm10PSqeVO0WzaZojjqTTBHJ591d4o91ersOQE4KJKWmyPXJYNQu63f9PqntyKO + li8SqtQsudYXMzIfUzCfIUXSnaLNhMNOS8Hk2Vx9jdDc1aEblkmZU9pprfpkm7Iq4jQW276lSLMS + bwb/kB0Qt2HEjvxI259BNZJ3aJBPhUib4lZcIeYMtx+BQiwD2fgtyKvf3xGmEoCrhznKKNgcygVb + Xzv9YWolfUNRK8oXhvKArz9fXZiWq6++ite11FdJuaC+iqcqp/KRl1NfCbOIZ+PeyOqv3i8Gpa5t + mhNKfaKs8N7mdjxH8+V6k01RCTQPxhfrqbdMtQpeg24JwBF+TEwOGdvAejLeAsJe3cTw8gyllTJr + oVUJDZdHBrx8B99G83Bm4F8w5TeIPSfjxNomY0Av/zijP1++e0VVaojLzS1ZTvilHvrGqw7wl6FH + zvJA6c3Y7Uq9WdjqMy6kVY5utlNImpqxQJsmz5bQ2SmP+ISB2vXViuVVucvmjOGW5dX1LTfGDiQz + 9fd82CgW+dfoqOhOx1dSFWU5MS/GYRLizFOaRsFVNEdBwGvwgTThccQ80CBf7PCPM1w8yZK+/BxZ + sHiwVs52MY8+hurJDBcrls+R+ndY0EaBFkBunnNoPcKdptRm4luWiCAVaQBOyc+X4ttIfaj6t0t1 + rE3MaQlz8Z5740W8yFwdg4LL78B1cxjgpLkJ1hK7Yxat64vyfbNavGMJb3A0WYTzeHET9GbGQJ2t + 4KQOyziXwFS/o8wymcojmBnsXv/3Wr3PZsJ8scuYo2c2fnDHdmCsiCvOnjf7gX1nVb4nFyHhlJ9f + tHvzo1Ux8Wll36dJZWriHFpNLQDJR7q+RUkjOe8i9VRVp46wLkaIufvGwiPOAJQ55x5ZoAwmXr7Z + 3EetPsr1CGuLea7dzg1YP/S9Twfjnl1tHSJS3UmW9Tjsdg6x+rH+bb1MuyZT2pe6uLrRDvmOn4Kq + hOYMV/qZFjZX92JloOkKNyzpCtsHxZ5cMKkoR/4Wi4Ppe2iJ17V0Q0m5oBuKp0I3/P3ysHS1aTkk + rxoy+5efKGiEDp1Q4vOM9VkHrc1tsEmOuLVy08Kczbf3eN07Xt/DdN6lBTt/J+P14uLduZFYsZeq + 3ujlYskDpTPVs3FJ86JZoXGHUGy9hO3NjyWuzf2+Dsq3oL3Vcu1L40pS0GRHMOEQnf+XBNd5Jyzf + q9MzQTu0PZukFcuzl5DVrilZ77NnJxeHx89flMOXXq9mZJkqVxXFVvfN3QhXVFKSjPlkJIeSwLz9 + XGgEpBxLVCjgNCW/m2M6hzk5f4UcQm9pi7c8U6kU6ZptZgvt6mxU4QzM58MT5jYx3Wl+u3l0g9IM + V4fxRg9Sp4dQu0Q0O6b2iRxNvfjiusqGTHybHph+Mxuy+kjXhpw0krMhq6dCegfTcHM/N47iw8w5 + lsWyVS/kqVMbxBCRAFcG4eNXPUdRIW2maMsePT753eLEERv3OtigLQrDOPWSzvUFTvel/Hwihvr9 + 93JaDOnxsk5YFCo3Rw+Fc1vSf5CAIOr9e62klO+6B4Q1E1LyG10ZpZrIiSj5UEqo+Sz+GILQhu4D + S/FDfPRz/tkkAWRpokwOGnOtgKiyLMpFFchz4ZAcf4kkHhLEmnqxPHwih4dM1cvrtQJ+U5yKE463 + XV++Wl3stXVgNrxGld/ori7VRG51yYdida1u4xkAgXVocHO/LOiSPQCrYvlf3S0tUjD5pK3hKmPU + Go2eyHWouoS0RCjQ8QV0UF/RFK9rKZqSckHRFE9lRczXb1ipIiZzCok0nF9+8h2bmPbEdxzuYZtV + NBchHprY8rXwS5N3PaC8HF5cGkcn70Rh9mi2fjFeb2/w0jLkyf2vwnwa2o8R4GJkLcbxKMVO1qq8 + nbOyPhmjfRb9KnPxYEJdyRLLKXBubeFHOK8s3/eK2mbWJp2lhDbr2us4G2/WnKrrONG9NYDf8KYq + vZxdmxAP01Iw+q/R+y3ecmQHqDZFjp3Z1tSsTIraYwWV9fhoc0385QT/xts2vMM6u5tjfpTwy210 + FW3wKjdjSshqCZzq2+iawttKPUqe42IQcY68n6qlEa5DpZ5Sx5Hp0jq7cNqCQDXXS8TqS909mito + Z69OWO3icEq2Ss0WaTYozKfDj6DSSsR8aru25Vc8kLXvkSqb7EGftIg6S61T58B0mp2l8hvds1Q1 + kTtL5UMh3FfBjApR/erknUG4EUDMCJCoeHQdLniWFAsQhgzUFlnuNuEc3cdAfQxw0AuswaK/fUzX + SuKb01Ds2ZZXRs8HPe9P1PA0g6WxKIGb6dZc2qgm/OL3U8A9+YUlDB1stC1Cu/bBE0liJio+ZcaM + R8/Hmp72c9Pbm17JbJIxgHbw+rRJYmXrSquPa+z+CtG5xOQcsv9mXM+Dpe4Ite8LbcJkjqPFTeIv + A1S4rFCmbGjc+hsgj3gWxl/usVKIRheya12JZyoudi4IaZC4Tryud7EjKBcvdvhTIZLf/vm+VIHe + cm2veLFjMJ8y05ow33J9sjNx3Z93K6A/7Rpyls8496TqZYySiwuXuKPGWn6ibllK3aJ2I3ULXtdV + t5ByWd2Cp2L6X38o3+vh4VFWt4htUzqBv3w0tvPpVxkx6eH4GSeEsBz+QceYeJgj/gWArfn9GHkn + lolC9M/lYnm9qbiWUygt406WV5i8uvR+6JnqUautwlRHqcJ9UTm3/Zx1dCs4Mlp7aI8yLMQicwBo + VJrRev0p1zpneQbMpmVxYhExDTpReRLW2yvEQ2vMnx2KZNE4bc9fZIBHxtuomFcQjs+34ZQsMecs + 6nDc2TbFPy+k2ZJfQsG774INW45wgaQKlfB57I6dNAjUe0YK23sFU4HVBfdFDRxoZSSATOZR6//4 + CIDQ9gjX+voIy5yMb+bxVVBhGaxJfesUONNQt5PFuSrEgtbUPFJa3J6wZTWF+lGrw4UpbGE3iIcX + r+tiC7scDy+eyoCCs7eklBXX8kxWAheA2n3fm9hY+FeCi4skMTeszrO3J3T8DOipY+MiuiMV2XH7 + cueYoidKtAhFVjF+V50kWaku7kD8Osub71PPt+yahLMZT4RcgDzz8ilsTs8mWcObpDk6CuYg9RbC + Nq16LYhjX7PuHiodR6KeJHsfmWmCOOfHTSpzgvlHzPEI5F7LilspWoafDw/Gi2gG7F6sx8tg/nLE + pztFRo4ly2p5ifZQlwxkT1F5L6d/7PLdqNVa20cSj+TsigsRjWWhpeQCReHrLRIRZl20W7XxAI7I + VByXnXsDhFiZmV3J9na9aSV+yZQcNfdLVh9pV3lVjeTLvMqnGmF8x7+/8m2rHMeXIY1xOC76XzxQ + WKziZFJUwDfpgdmQkfIbXT6qJnJslA/FaTTdXBPpkXh4eKgYJj3pszd1BZOZqqyQxg6oYCC8KvBG + 09s5oTxWkrqm8HGhjllhe2u4T/pIGEGFKYNnFFU4F7N/o8Uz1qtSwmxiSX9/kWux4+UFGlhE0ZnN + JpgmJU/WSxBK0Iu7aApLGBg8FxU6s5Z8aaFV9xZnevDzUYyQjlW1AEorqbWdqlWtBYtYIlklX7jj + i1dHEjekvdldiQWkbAbJ83TEvYLaRhSEHyFSmM6Du+V4Hgez5jVhbKrCpFoGtLtEpHmVSglWJt5g + +rLUF6DlOeQl55D3ijZLjp98o30KySbyh5B4qGJjcvqhWMhZqXn27r1nlkRkMehFNYRHkmW5zYqz + NHTX+1qxgPvLuehIiN7ynH9tV6GvE78idGpRnTFYLoNVsNGvNqH58U6fadB4+L49W8SZddt8HrS1 + fH3nv9bCUYmOxIPKeUloYxcq9ZHuvW/SSO7iVz0V4uOvckK0UeJPbijFRPmVWyXPqaQN7qAnfIkx + YNbN6jUJwRpE8jBOs40LCHjCc6GWHT34k2prgD3lptLu2NOKSWXC/+3dG4s0SIUtXteymUnKBZuZ + eCptZq8OaSkTNq/GkTWZOb/8xDzqORPmUyJz4l9cB5jXAv6i0kMK/mktx3cBQLztcnyRAaLKU+5w + /Ozi/PA5vD6+jW5uQR9Kdc2KG1BDcbUqp2GFp0E2KTt2SJnohQkPO1q04NUg5upSUgCza+vCUkZB + +ysl2EiVl4lyIuEBKDdFrzc44EmN1xthrklNZvZwyZTrZmIbFEzIMi9/r0TqKk/tIpeZmNTnJe8E + kmuFOnVluupbkdklMokR8iTzBXC1SG4XnytYCr2ruwGsJrUj/UWet6bWisrH63FNyAi/TIUvXBVd + 6jXj5jLGnErpPqju6z52ji7TTDy3IYbMbvhMw5LfKQ1EEdlorSkWxg3FAg5lIgVCZpWPUPYlWcWp + 7UiPLy7ZKz2+MCBwT+mHXSbNh62p0YdNSJtK7aUnFTlG8ltLGlZ2UqxM2dLl+pUKBX7HDtLrgyWS + I6okOR3Wg2uabOdakz8gKNMeZ/uqJTv9qRpC3505uGX0hpAQsy0/Z3fUvKlMD0NEbFyplHGCZRul + p5cqNklU7LojW3saTKk0PpYrcMY0SHeYBg8bJahJjXH8To9HD7Yzpgm7YE4QFmS7Fm+AEF+Wuw4J + rfVk2bLUoFQk0jBybVIK00sX6KMjF2O8GunCyTd6qnDaREYTTh7KPO9pqA7Gn0VXMo+/2idZxXff + u8rI9sYv6MtpR6hteR4RztMOE5KSm8DqSoTqm9d0qO20wKAqryR3Oszm9HrLFf3VA7H2NO+QMjvk + rFfIpgZXBUwUsqwltTu5gC0MGomba1wsPaI/TZZryUQ/SX8RWW6izVaeFz2Mt0sjO60DNAl7PSUH + pt8s6pV/oh30KhrIx7zyZ7ISXjSTdnlA5XhDdrsKodMZv8GPAAWA2Pnhb8YqFK544tH4Er4dIQEe + l+8yR0RW+KJ6D5qt8M6t0k9jF75lTurnkS9MvLcscQOZ076RJ5ycHxR66onTbil/iECuyzC16lqr + u69YO2fef/grU+meqO6Bl5jO5yqeafrTNLa69naVyRxhesxvvPZlWfP1cMT2/jnd3xXkNYrJtqD6 + 0P5FWjexDQzeXe91HbmHOrGGAOPTpKbXrRKeq9PHkrZpanlNbNP4uqZtmlMu2abxqTh1fjv5Z4Vt + 2icl2zTFw9KdUFkWGM8pWBuwNO+ka7t04EObF97h5ZTDu2D1EV2MZxFg/sWaL2x0fq/WmjET7zJY + YWZfXtcm4y2f+omAEvJz9sGZNEH/Fn4pm6DFtSKfMNTKCpUKPbOu+I9nmR6cUKUSSXyv6TuSUruu + AQrHn2MVIxIEPSzmF6IeuwizZdhycdxWbeFCh1kYOMfthZsI1HflUZo4koJ+kYF9i0/hCl0b+MVB + 2YVRDLnaC5WXvMx5n6aU1yq92DqcrkJQh+9VTboRLr3ENEg82otrKWcJp7CLh1rGil7upPnqSqSF + IWgB4vpcjF+sOwafSCYsXMMCzuxd+lqHexd6ew6uvsqB9+kd6xTH+vi+scos09c9K5O1+ohr6Z9l + 4nXNWn2ccqlWHz4VZ9mfZ+flWn3FhJaW/8tPHrM82514jPmOrHVwyn1GS4krlFa5VnGQNyto7/My + Sb7I38o70d8Fd3dw9AWYd/FTOI+XCNvkUSZK+4H4/nBevHgdXbw8TeShxUx71KMRpIlDUK9Qui8c + yYmcNkZ+anHaSR0XSg9Mp1kVF/6Jdg0X0UC+ggt/JhaaMlG/fnsqzmNUdTO+33t+H78NPhJndMf/ + RAdlnwlLYFd1l1EqqsEkhpSrKEbjQOURrOd28yhpstLS7XFlRJ2+vvGgXkNqpYq8wOcXJm2gEojX + tcSopFwQo+KpFKPvy2LUpugbmVUJvF9+cqiF8cMOFbE0uLr/XG7GZ2oDwy6VYvJgfJFUNeU1mLkU + A4l2fc1NT7LaEDAGl+96HIJUDVcoTNNw1BS1wIQtYoCrOIPwygyRJR6A20WaJUrATZiNAyW542U5 + KDkhmYvTAsBVW5yFuh4jpVjkvuLX07rI2QLV/AY73Yz5vjJWUADyZdFlf0dvFWUlRwqZm/k59mcE + PBIAkdf1ybBcTNWLMfI9UwIK/t7OReJnYZgKAdzzDsPC3d5lnHR5U1iGj7+nCK9fZOrdaqyMES5O + dUjC+qPcZ5D4/IyU1b0N2fvZrnLhlbeTRFj8BUhvh7cxGS5HjdXJcBvTapVYtx8/3aeTOr5GLXrQ + DL9fK50T4+mB/3x/QZskghevawl8Sbkg8MVTIfD/+PC2bAPysMZQVuC7v/zkOh4z/Ynr+B6RSZ/+ + OMYrb9j1vJxwIOoLFQuT3sUzGfdLpTT+Y3NXttI0rV9NLeZaflEW56MaMAHDrrLVpuUSrQYSGZ2P + PagoYs3M4gFyelYkOfpQy6KsZaWyrQlglTkQ5vnTuW9eKo+5898Fv9RZvyiQSqOAs04KQr6+UNO3 + Hiczuh7hwkgsNK5ti8iOb6GkU9t0C/UePx3y6xFUYLiciLEAWClPQ3VBX0G3YwEqvhbLrK4dRosU + YdWOLK7Is6uxGb++pE2ODFuE8OU7JS2XTbvUTznm+tvXPt1lPKlTAE5qolPg65o6Badc0inwqThi + Dv/+Z1mnYLZZ0il8SjybTXxKXXXN8EcgQl1hX4VzgVuTupO82kiC8mBlf+YvB9NVvF4XoCaXlVhd + 5Cpvvr5eheFfKCLmMAU86SA/og7/e19WGDgKCyr1BtD3PKe+cKIPOlRJb/icG1rV+URsahcPkwlH + +WkNRd91bHRGzp9TgnbKnJyfsWfV3RsoYqNL+Cqz6D73NAuTklUMT55VPJ+HM1H8BXh8nyn+gkSz + xvsJCoGrAHPwXMF783n8GTeCaDLebq7hwURnnke4KBNdwvK5b7LjkfR4q1Yddp88njAaF7mve9Jg + 3Q9udQjW01gMfYfbZvW1xVNXQDyRO6i4l/QOAt2Pn472Uq97UHGoJask3HVU7OwRSol02ZUEis65 + ow4LX8Uo284remDazVI8qI90o5STRnJhyuppRZwyP1hVGqF80b490cy55jBY2bdl/ZInAmkfPwxa + CSFqO349tmmOTB/YK+krB1o/pfDghIJrVqxhuQv6qF7Sjv6+PrPcKisvqT6b++5DXW0V6mp6DdLD + idc13Yk45ZI7ET4VOP/k3XEpOxyjzC66ExkM1pNtTZhLiClNSSevZSUOI2NKqgo/QzTCL1XQFsIv + GsQdy0dgDjKwZDznCPRzgDA0Xi1vlSX9RXXB+Mt5QJb8u/NgAf8S6sDJYlZOTicbh6NbJEINNtNb + TMC5WG/Hr7aLm+h5FnYDtnPrQgaJCbCb2qSoIRQU3skYSyHcFGInLdNx80asbF1622dmqWZ7Zc8r + c56ahNWFuuY7XaB9DXtFRAxlpyNfhYLYtb2upJz1ZM710c/Hz2Yje6spZdZQQTMqJP3bSwkEFuyn + q+2sFNHqElobb6xojZ7oqh/hTk5sfyb1RnIpcN1k5+L5Wcd9tcY3XSMnqyfCkbIT2FRFq6Swv2lc + r+nwq9e3HiEi9IerSCyexK8DVhGcMhv0lsMR6BJEweLklUY+7/XJaqsVx64JYIQnP/K1RUZY27Md + 1bxY1M3DbXpRDvFcz43jUZRMfljUbradq0IYYLNft/Xd6cuVrg/zLT/kKohkjkQtcgosJWVUCMCv + A2I2q8opvtEuyimbyNfkFA9VzE8COZegvY+K/303XcrgHqm0truRaF/fnICuJJZzms1vz16t8m+x + aeqJBaNvWL1GfqPviyWaKDhj8YfS7e/s3aU6B0fZ/0gCMc/X11aOGDpdMZf1mBXSkVpEkUomYChL + MF/pxPREzqtc5x9aI06PgAdNPZYsKiuJB/bNA5M2Cwfmn2hHA4sG8sHA/JlQgJbh0uqeHgupYJyv + DzqSWGiO9GpX3jvB6ibkHlabePwpmG7jKn8/fYOS5wsHSxEnEadn3w4LtjZ11xQ2cdXPImBqR7b/ + VGFKHaeEsWx/r7drblFbxAsDztoYBPINrMP2DdiWiGRCt6cMq9OZ7IHrzKMuhzHSKwq0jOnHdtYO + EUsqAnCvghXsixUPa6y6Tmi5vas/c3PLpqkocjOTiIXn295WNE/K2hn6SQ3l9fvzLjJ9yET3VMxz + h69e/dMg3np1sQgCPKtGhiGvPTXNdDkKe08q/vblFD64NFYX7w4LJjt+UsFvY/wtNdfdXP3yPwAv + Xe+ASKPX5dkr1DyEG81MHjdpTMB6THzDsgnePuQ+xvPv8iDTYtIYGiEORuL/8ny56syXq6fDF2ZS + wzGtXhgz7cyY6dNhjGsyg5g9LZlZZ87Mng5nCCGuQSy/n0UTdmZN+IRYwyxiEJf53VhD7a4CWFHQ + Zg2161kDv5VZ86tJLNtusmpcgzlqzaivEatu0Ovof2cqhJWZlfQAmcVtv9fzYPFxLfjWRL/dYbdh + FlPlO7O31YnNE8cW1cXl9uGP+E2qtpnve8hCpEWjziOJUj+fLAhh42uqn9WM2UJ5zRNoGjDclEi1 + 7S+7jTsgDkXh6QgCz/YMQhxWkATDrh92/bDrs3u2A5xWFJ7OrieOZRnEp94AAAZRMIiChqKgg/6o + KDwdUUAtxzGoYw8IYNj2w7bfte072EYUhaez7S1iu4Zl+XRAAIMoGESBrih4GcUvDasgCE7W01vM + RH8boXPkPKoQAOI7ve1/MjWu4PXRyQGnJjY9PilseMao1eCcd23bwAzOyYZX33Mn6gPelDvxjFnE + c+kayxD22I1YGJhW9xl0ASuCXGHuxYWsHMOrGuIvL+EX1/gYbmLDM6oJFL54JWgdqfs/EZQ+Cze3 + UVzdxjF8IZbOJhxPZ6mw8Yid3LRdwTimKrFkw+Xumza/+4a2ZNPtSRGRv0+OpA+KMh3cNL4K5sjh + LkS7OG72mujLpCIf3V1wg968ndwFLU/4R8BRE2SKm7dIvas8duEEBBbP7/iixPS4yeJ2jfhLvIgX + wSJGbwzueYG/dEn4awpv3Ozi70KOMO7hVd5R3dIk8j5GK3Q06+DY2TEnL2x54TWMU3M/75BTNyHI + vDTKv+NMeq7wUq9ZLB0noY9MwikpEbFXRWqSPOUlgRYRUAFUhcWPblbxdtk4948nXGv2epDsdnIh + wjljeb+KZvEXdG2WBXZbiiBGqfB1AcEKNJPjKphMxVk46zxjnV1BJB2b2Fay/Yz1dn69XY2n8y0v + 6t2aIpe/lNMEyDLuiyxfV0ySZd3IZtGX3RJ92Y+KvgAMGxTg14C+BvQ1oK8BfQ3oa0BfA/oa0Ne3 + hr7etkRfbx8VfTEP0BfaMgf0NaCvAX0N6GtAXwP6GtDXgL6+KfR11PLm8ajZzeNRCX0ddUJfzKGO + wTzXG9DXgL4G9DWgrwF9DehrQF8D+vrW0Fe7m8ejZjePvaMvSjyDYdGBAX0N6GtAXwP6GtDXgL4G + 9DWgr28KfR0vWhq/8MMm+Ou4hL+OO+Evm3qOYduwePP4qz7QZsBkAyYbMNmAyQZMNmCyAZMNmOwp + Y7J2JjH88DExGfM907CpXbSJDZhswGQDJhsw2YDJBkw2YLIBk31rmOxoFf6zZCargGDiPT0Edk6M + 6SocvYSZBWDHixiE43MikBj8kgNi/zQtZjcAYsT0fIMwX4VFpt8j6Cq1ic3xhDPXMWZ/AaxzJeSQ + hEhp9hmLZLLPyPck/5tsSdsUWxLpyKq9zalYlPhOIkSW8TpqQGOkXTV078IoYvW6haEJzb/qwrCJ + ZRCTucO6+Krr4jhYlgUGsDeagxjCWkabaB6tKxaK+FBvobxcG7NgOXp5kBAUa+Q/8X9Oc4vkjeUx + yhqE9TgeMyxiKdN6+r1cJflhjGfR7f0MuhmhLrfAAxGYtJ0K/Ql6c/Kcr6K8EvWCl5Z9dvg8W2IW + 3z6rflsCyWAabu7nxlF8aEyD1VX85X6OH8qzHbS11WH190D5aIJ/HvM/X/E/T/mfr/kH6/wXf0vV + PEAQAvdgYi7rbwZsEsRp8/HR0SFg9VmT9aWg2lMpcr2nAbGReCFgoec1R8wOc3J14u7iGVYXFu+0 + U0k9WcFo06ljfWnvniPocMwtMFwfanePNgHT4+tkfg9cCnui6O+j+CkKxtKms4zuQl5cqdlp4EuA + LHStm/k9h93du098T8j3Yve6k0ZQb6stswqXQaRbfl0hWJsQvl3iL9FM/CCEaYMjrIONJVGUeynd + 2a3uEn5OxCccCczxnGpIituMTOYn0qKltehJmp16qFIvMvi1Z0yPpi8xGHHMG/+3+pz/Vzcl3mQe + SU9ytLLdz3sx4tjMk8L6kaxSnlB7JRKbRZVYrK1VyRcl1/JiuLMxiQkJxacCxFQ062cugLBPlACN + uw4eqxqyMk4DyQ7weQ1a0VMwpYlkrhqmNJi7KdqVW9rRZA3jRAj2M12yoN/8vhORHkx8fRWW4zpc + 0SigrfxpWgnqlD94+LKT8kcY9bCEgTMof4PyNyh/g/I3KH+D8jcof4PyNyh/g/I3KH+D8jcof3uV + v2IyP23lTzOb3y7lTyg43e7/4OQ2qO0V7//q3TgHtXBQCwe1cFALB7VwUAsHtXBQCwe1cFALB7Vw + UAsHtVCqhW/u1+0cQsWH2mohgK+yWggP807DxDVJI29yhxjEYpbyGpbf79AH0x5g44kPcRFczcKs + wvbs5GgMaib8j5rP0yC7rwSlvy38K/yS+zpZ4WxwqsBufj4ed/daRAyV98doRSy7+dpcyIsPH3fz + WZ5rOLY3bL1h632rW6+NOVR8+Lhbz6Wm4fvmsPWGrfcNbr3z24qgRZ2tJz7U3nrL27C89eBh3g3t + LWW25Ta4g/A827CsxA1Nfa99B4FdAeIrZQVXpuZn8PA9Zo04/XBuKCyf/Bhf3cBPWHAdFsM8WOTW + 9BpIBqDhTSNYNbP0Ixzsc5FG4i5exNfbBTfNYYgwKIVASywyVMMDcQECD+WVxLomtQRaurgG9zk2 + 8IV4gab6dXSDZLmKpQyA6/v1JrxDmhiODNrtPLh/3nRnPHGzt8tNUgG8GfD9n5K/hn/P7/tpxedi + 5o1RM/2tSVsms7jYza5HWPrb+QYXHywhOCXuksuaYDwNYSHPYWPiBw0tpDYIZC7lxN6C1QY7a72J + 7ra4NzTFLhqgHErF67Dakg41NGJ1yvQhLrIKGyBctLew9GeyZY66v6rc362TXFA+5NO2Nj/iWCY/ + Pz52SSNBHNt3S7u4VXf6tGgJO4yGRUsJwu2aH3tBtOB2rnapIzoc6tlzuI32KT7sfA4fdjuHTeoZ + 1HLt4RwezuHhHB7O4eEcHs7hb/ccbmOKEh8+9jnMLNegHvUK5/Bw5g5n7nDmDmfucOYOZ+7TO3NX + VPqqtzJEZ75+9IxYFjMsvOoYgqIH7/efB+/3wft98H4fvN8H7/fB+33wfq/eLoP3++D9Pni/D97v + eUWuzT1o5utHz41l+Qbx2JAba1ADBzVwUAMHNXBQAwc1cFADBzVwUAMHNXBQAwc1UFMNbOOGk/n6 + iWTJsm2D2q43ZMkaFMRBQRwUxEFBHBTEQUEcFMRBQRwUxEFBHBTEQUFspyACNOrgLsq/fux8WaZn + EOoM+bIeDwkPmUO6em3jRmp/Xc+/ftxtyAgxHNsfNuGwCb/pTdjeWMq/ftxN6LhYcN6kwy4cduE3 + uwuXt2EHRMq/fvR0Wr5rWNCzIY3HEFI8hBQ3sCoPIcVf37Y7hBQ/vOnr2w4pxjO1vXLKv37shB6E + OAYFWDYk9BhO3+H0HU7f4fQdTt9v6PRtb5XiXz/26cs8ZlCvlNZyOH2H03c4fYfTdzh9h9P3qZ6+ + m9uVYf173fr85d9rn7/49oqWj2B4njdJ/xOWstnES8K1bIOStKpY8j0/gjPt8abwSIR/HImjjl8J + 3cZ38TpcoWRVq1S8FMZc3CpHq+QkdECiib0Gx22Mty1NJTscSmZhPXc96BxbSJK0352Pzid+BHuc + KjqjTm/hk+ltgOeWOH17b8uRnLiN4p7OYKTq5WesH8zAJWW0jufhdtoPVZDiwm1TCbL7ufr52/Gs + HvV53PbndssIX8YZISTO7RgEVBdHW0asAt1OR7DJXN/Or9aODqiP77NLRRDLMlzCSujin0vFXbbg + s7G5X4adifYFnHr2xX2KMEw49PM989hOAzBnrhCU9ytgOLppC5EpgltasMo2HYfP4LvD46YLvQT3 + 7I5wT/+yYwfcO+oE96hvGp7nDWBvAHsD2BvA3gD2BrA3gL0B7A1grwT23nYEe/p3a7vA3mTc3cJn + Mtsgtu0MoG8AfQPoG0DfAPoG0DeAvgH0DaAvBX0nUwNOgZel+KKTNRydq2h6GwVjzEhRDfmSr/Uw + n3x9dHLAaQq0h09yOO9XEFG0iWnPdalhgRySOC/9HnHeyQFvyp14howZM5bhPFjdCJbgSn0GXTh8 + PlGZyuSRKNOSxegQ5Rofw01seEY1gcIXrwStI+VXJRyqZhwiVLdx/LzGeaovpNVnUipiUkkKR9IH + RSklp/FVMEcOdyH6ZIBArxmD+svWQ/hZjSl0MKFIiluTxe0a8Zd4ES+CRYyyiQti/KULQjBdJ7Nk + usIDRhgXfOUd1cllyeR9jOCFDjPVA/iA80apFL3kOPKYZyVHaseZ9FwB92sWS+fcQn2e/o5fR6rg + ZrWINhxUx9t1W+eqHrLY9I8QMKcdlYIVaCbHVTCZirNw1nnGOqfeUWCG2Fay/Yz1dn69XY2n8+16 + E67aU+Tyl3KaAFzGfZHl64pJsqwb2TISK8aVNUNimletXwmJmS4xqDUgsQGJDUhsQGIDEhuQ2IDE + BiT2rSKxYoxhMySmeQ/6lZCY5VsGdZLw/gGJDUhsQGIDEhuQ2IDEBiQ2ILFvCokddbqdPGp2O3lU + QmJHnZAYc0zPYJ5nDUhsQGIDEhuQ2IDEBiQ2ILEBiX2bSKzL7eRRs9vJ3pEYtV2Dwek7ILEBiQ1I + bEBiAxIbkNiAxAYk9i0iseNONrHjZjax4xISO+6ExGyLUMO2k+JY6vv6ciADOhvQ2YDOBnQ2oLMB + nQ3obEBnTx6ddbGTHTezk/WOzkzKDBCAgxf/gMQGJDYgsQGJDUhsQGIDEvvGkNg5MaarcuHcauCl + XtbDXeJtzIsGHYxiWFI34ficCPw1xTonubRlFrMbpS2zqEGoayZpy9T3sjZQvk1sLqlSvQoB9VwJ + iSTBUpqbTGZqOn53mL4nZ6LJ5rRNsTmRTrTYhDerFlQsSkRtFy44lvE6akBDVJR2XFd1o+MSKWL1 + nUtEE5p/1SViewSrmpNhhXztFXI5NYh3ubp4d1gSJJfBdHqLhZzuAU2Pp+Eq/BStoyCsXj1ZQnor + 6PJIfTG6PMjQl4vk6P27Dxfv34g5/x/Xtl1vfHl6/Mufby6IzY7G8O14FV3F6/gODhKgkllSa1xQ + sIRc3wd2jOXXz+zJ+O1kbMHcL+FFLFLEeT9dRcsNPLwBzsDag2UT3YXwajSbzUOhi1niIa/UFOLB + F87vn4/E/1Uys7jlWjNTczt+l8ykdk8rMyGkzUz5hQ4zLYs6OWbCt7uZKTT3O+QZCDhGCTVcx7QF + dzm5h+Ru56WaEBq4W2ZKMcayNXc1wy1/DO7aB0LYdWWuoqPN2+SDB2Cu61m+AVLXSZlbxYvDow+k + u4gUVPby4c9Xb0zLP9o/fKQnBi++GB9O0eryEIuDD6WzVBNUvh+GdBZEgsp3wZCTw1d29y0jqOxn + yMkbk3h/7GcI0hMMEV+MT9YBWRqZOrbXoPrEqwkm9t4uIi4kNrfh+N32kI2DabjJm/+ENPnycBzt + vOcElYGjCS86b1pBZeAo8uLi7LyHg1JQ0eIoZRocRXoJR+GL8UUUrj+GOcOmql8teXkXbeLpLYCG + VQQ4Ai+tprcwgnB8NSUPz9HOu15QGTia8KLzrhdUBo4iLy7PP5AeDntJRoOnF4TpSFJOUDKVfzL+ + cPjhsFTnfnN9djbj5s2VKifPuYO2QiFqH5CLnbe6JPNjc7Hz9pZkflguXrxkPWxoTkWHhyalOjwE + eoqF+EUWAKGqv4zn0BAHPWdn49t4HoeLv+DJXTgD4ASse1ChiIPvvps5lR+Zhd23Mqfyg7Lww/Hr + HgC5oLKfhb++MW0dFiI9wULxxfh0Dl0Bicer04SGZaRuFvmCNeThuNZ57woqPxjXOm9XQeWH41qx + YN7Atz18+/3i0Oou2QQVPTWOaHAN6aVqHPljHK/Q4QKdOe0cw6bB6ir+cs9rCj0YuzqLNEHlR2FX + Z1kmqPwA7PrjZR92P0FFi10m1bj+QHoJu+CL8ft5dBOvRbfyRtIraCMBcg/Gsc77UVD5gTjWeUsK + Kj8Ex5R/U1eeJXR+WD+pZb0H3/Q2+ktNt+ToMr67qmPmsrEL33mWm5x0JSOJj6y4if4/6nmOz34h + zAVZahE6vjwQX3H/zXAxjbnBCYhOxuhqIRhBS1x/SK6W5GBrruo6SP0IXC3t+9Zc1d353zNXaW8S + gDaWALQNVxnxTcN1XOtb4Gp3CUAbS4Dvn6vdJQBtLAG+X67WeUQ2ZmpDl8jznEukPlMtl9qG5Xl+ + S6ZW8aDaE7IxBzRdIS/PXx5Z9LV3QOh059i5o1vwQM5tyxr3x3Zc2C+vnjQXuosYTafHp8qFoyPL + gk5V+D805kRKSoMb6uWdvEhfG88wVcHt/dyYRdJUFMcZVTWahYa6hL6Z30/jrOb6LK5Tap8/LI+7 + 77mU1MDjah5339EpqYHHOR6fnh/jnUXprqcxhwUhPZlpMxCZO7mL1Diz0uudcf31zoMxqvtmF2S+ + czZ136+CzHfPpp623XfMqGr37cZs0vTfRjYR57V9YDo7+cRdY7dX0X+30SKeGxlH1ykMabad8pxN + ylF2eRuuEis7cGq6Xa0fxGtuWeOr3Y59elLr+2Nfd2mm6Zn93bGv2mezMfs0nTa5jCOviHlgst36 + GPeX2+UYxx3i4gUy5cH41H2XanpmfuN86r4dNd0vv10+fXh1dlZOpd2cUZKOBqcOj6h/4hyY3k4+ + CVfyvAt5BGIpCh7Wm1yNrPuWk3S+Ww5132ySznfIod8vDvs43QQZTbMEyCJ7tyxCcqkT1vgxnbDk + 2LrvMkHmO2ZR920myHyHLPoQ3BSvt6qZgC/qXV/xN4/mcB6PXecQ6KRZZKPFOlzhIW2S8dXy+U/8 + RB8fjjdBNB8/o/zhBP5rdRNuxuvwv9twMQ3HoBuZpKrnL3V7/lK75y/TnrtVPWeO26jn8H5Vz490 + e36k3fOjpOcvq3nu+s147vpVPT/W7fmxds+P055X8twmDXtOKnt+otvzE+2enyQ9PyLVPPca8tyr + 6vkr3Z6/0u75q7TnlTx3HLNRz+H9qp6f6vb8VLvnp0nPjyvXuduw5251z1/r9vy1ds9fJz0/qeS5 + x5qtFni/qudn7zTzl8p3tft/9k4OwGPVYp34jO0YgTqRSiOxmG3gtzWj0Uu1Kd99sNHYdaMx3NqR + FIHIrpFoOuD0MJI7jhpKA3FxVqzqsfyqv8R+bbDCfk12yKvKHeLv3Nt168tyiOFX7/Jf9RfXrw3W + Vrdx1K8sq3oU7/Vn432D2XifjOK0ehT+rnO5bjaYaRrwZfU4tGfjfYPZ6DaOHbNRPYq/68/G3xvM + xt+TUbyuxBrENNtsDmbytMCV6+rv+vPx9wbz0XEk9RPCisO4nH6i2MGXa2MWLEvz8jKYRvP5do32 + +000j9YVwyuS0BuleHv08iAhLZI4/yf+z2kui/Mby2OU6Wdxpo7FDMv0VBW89HuZxjk/oPEs4leK + ywgLsCxQwUyvMJ5Bb06ecx/BfOWTF5zxzw6fZy2u+PZZ9duy+oPIRGUcxYdGVoeVCfmfXUWrw+rv + gfLRBP885n++4n+e8j9f8w/W+S/+Jmuz1M1zcdW2mGfN1Vw3z/DwZad5JszyDeIxZ5jn+nkuwqkW + 86yJsnbNsxhLt11t2rZBUVvMz3Z9bcthBRjz+3VXic5JaK8AeLu8AuBhPi0/cU3SqHKD6RkExLrK + yy+/3zH1aQ+w8SRLv6ystYSzcV5hSTw5GsOKgv9R8/lupnYUn5zE4zKVEWI4SaXYJ8DSjpKKk3hc + ljquhTiRPg2eLm/LRVoa8pST0OYpvF3mKTzMn/JvKbMtt4Hc93zXsKB7kqvqe225j10B4qvtXNzP + KUfYZ/DwPRbNO/1wXko59iy+uoGfoPcLYPo8wMpjabW3NZDMpB5NPsLBPhdXC3fxIr7eLqbYJFZI + WoVIK/VgC8ShAw/lMbCuqqxXN68dxQ8n0XleD7vNKyGOQS2PFub1h5nDjvKOk3jsOWQeM6jn2j/i + HG5uVxVu6w1nkRPRnkV8e0XLEwnP80L2nyZzzCYIy7UAXINClVQ+Ut/zicy0x5tCxsI/jgTD+JF1 + G9/F63CF0/NRVu4TL4W8amNSv203P+0++Kkv2Xbw86gTP6lvGp7nPTI3y97dLbipL2N2cXMy7r5G + TTS227bzWFwVVYFflkCVRgniEokmdYhfluoQ5xnZtA4xdV1qWKb53dUhrp2xFkWjSyQedcZMlwBW + +oFmrAiOWsyYpuD6SjNm+ZZBnQTdfu8zdtRdKh41k4pHpRk76jRjcJh4BvM864eZsc5S8aiZVOx9 + xqjtGsx2f5QZK/vTN54xHVf6zIwdl2bsuNOM2Rahhm0nVkf1fb0t53ucxc77Tsfd/2vOokmZYVP2 + /aORpNR1UY/aMUXfe8XrOiaVVff9TPpeaz7nefRhtVz8s70pXn6ur4avKi5h4SHq4Ktl/hL2N5NY + PtFnluX6psEsR1k21Pc7jPEHqVq+ul9ukJWL8TPoyfNxvAx5afp9O1FwoLXNW37emYEnnIHHnRhI + fBv0ApagzIdkYGuDs/y8MwOPOQOPOjGQep5pWFYCIb46Az/crtptXvFhE+vZ1zDsOp5vUGKTr240 + 49eS9MA9IAeWz9/h15T0wPcP6CQfYiNYbJqmY5se1o7n0jOe36NBv1E1e6BATfyEAwWBDoDbwRUm + xEGy03DdnKTj4CfpGLtS9IhN8ZPOdBxBJzPY5C5k05qqb3qc6tUqWAASnY2nt0GEcYx30fy+/7Yc + yQkAZ/nbnE5UvfyM9ULUd/kn63gebqf9UCWORfh6lVmaVvdz9XMDKrZNCMNP4i/RTPwgHJn0KeHu + A9WZjxDTNyznwfquwbcwEj6RqbAZq7u7Zmy2PMqHMgWBOL/fcIgPYiLa3DckxBjhyzgjsPLJYtrT + tQp0lSBsSdD17fxqTWRoS4o2E+u/3QzYtpiBww/nLSl41OIsWoZLWAkdBgKE+KoSfDY298uwM1HY + coDu4Z+dZo04zCdqy8Wp22BbarYQLjnp2oL1xHEZlyfZjG5t++R6vE98z8y7EPKoj5/M79sTgTlz + haC8XwHDv+DdfRIA3IpVtuk4fAbfHR43XehZLNhGDxEfdsaCHS+lPc/wLTogwQEJDkhwQIIDEhyQ + 4IAEByQ4IMG2SLCNQVV82B0J9uBQ5/voT+cUAeEuS+oAEgeQOIDEASQOIHEAiQNIHEDiABJ3gsTW + jh8/os8HPyVMLupuo7VM+9jDwQwLjIoln3SlB6qA+rwC1e8d9tny0OiBlMvlPyYWDfgRnvZUwsgO + rfCV1B9MMBkfdgCdAZkZ8XhshcawMFy+nHH7VvxSK12PecZMM7ub4nkmhyrvNPK9UwPUFp/MAPMa + liHqduTa6TwIh+UAsGB5jk+AuO+6cd+zWGEvd+22hy5e6pztxuZ+z2zbrSM1SZ6u8BTgdaKA1eOb + VbxdNtZbXMfXbGgRbTjmjuFIbNdWD/gBiFhECAyeaMHoSswS4C82UKp1pWZbUrPstM57xEg5gNPq + QvQH9MkcAM4AcAaAMwCcAeAMAGcAON8QwGl1z/cDxkwMAGcAOAPAGQDOAHAGgDMAnG8C4Px5cmFS + +rlUQy5X9wskQvgpWkdBVfEvRUEP6VxO5Qd/YPGvlLDAO7yKZS5JNKEmdbiTuny4Xs5+kRQaZJr0 + DWolMZAZolg5s2aoAMWwnBgWqk3yCmL/qpI2pw5Klp1u9KQ4YENcYtlcJq/CG5UqEfqdozgZH787 + NGbhMlwgbmvcgHRYynWSf1euIApjv4PRr8ptzKIVNIL5F4N7Af2IL8DPLAqwAqLg0JfdX6pO2Y6Q + 4Hzito0FiO1zwHS5ujKatc8dW2zCOa7muXYnLW/v1xwkRwtgSTDNdYGJaSuzMM/npHv1IiDbv/w+ + LRUybLxPNU2uj7FPLeobDjWHXTrs0m97l5ZqaTbepZp2g8fYpYQS2yDMY8M+Hfbpt7tPYQV3RL2c + QpN9Ch9U7lNen7pQeMDxHLNioyIJ3Y2Ktel8206KESQkgdyfYbDepImM9tWyxv494918/s1tzopO + Vm7OHXvzbrsJoGlMHB5zH9OO1OH9aRhczUEN3G5ugb9r6HV4J4bXp1DZ0XG3TD47701b2jcLnZvT + 4VnGYLOHZ+2Y5rEWo9AdhhD6IjqltHoKYxK7MiOR93MHSFetKEEJt/bZy2ZHTEOC+3u498zq/aCD + rzM2rqoxHDc9dtvTqw2dgM3Ddw/IwbYxEzoUdpzGpuUKl3i9dVl/FNdtrfb09y8roE11kMTezu9m + sWv6la30yaPWLWhsvo4hId0hn+nJuAu+SkNBQA/VJaCR2pwC4poVNNJ5ymvmoo+G9k4Jo55pZZmK + AUWzCJqI/hLM1+93HvZ2MyJxCk8Y9mKWE+aSAfYOsHeAvQPsHWDvAHsH2DvA3gH2/uiwt9utDKfw + hGEvVmJ0KRtg7wB7B9g7wN4B9g6wd4C9A+wdYO+PC3tfvTEt/6iLk4OkoA97xQdVsPfw6APJod5/ + wJHieSXUKyjoOyPZmMPQUrlpMkTLuBc5uEgjlUyxAO+iTTy9BfIrccBjKTbg5zTUPGlNwsl8Cqbb + GN4rEMjPFHYFI1kq9oNJLC64Qmjhah6tb3kjMCrsH36zXsI2gwZi4P4i2ZA6PfRFCjlM2/YxWoSV + SRMrz3yf8DOfrxzsLTTC/f2TB5xhn+L5JyADa7ZxC8QS8S3TW5A18Ty+4dJiGs7n4+CmUqTUwjXq + JeJkFS6DaI+LVUYncffoJN18uZKGPJEtK/wSI5skizRwricyf4GIbPihL0IFxOaBLsPWidd3Yi1t + VjIaS4uOX6Ij8gh+CjOUtFe6azKRRhCn+XMAf8Srm2Ch5JxWp1zpHXe1nXGxwGlF6xgk3BJahccY + iPJ5c6tFjji2CGfDOKt4gdEZ4aY202LF7FqYLoxLAVj7IJ3EAlrGK3htHsuTDRZSNA9ks/s7ZQGb + +PYL1tMYaYWCWdBueHc133NISv2iYlTZeJ6GKgCjat5gr6w4lxfh9GNZQOjJJU8kYLz8vCINgXfL + RJTJ957tqO/XH+HVTVNbBk6OCPfjEwtnlAieXQabqd6aAwoijaqkwN/V+pDIE+dsEXtmPeN2gC/L + pkJFf7c9ZG2WRxXtXrN8akPMrw9U26e7zOOwLrfuksLTxWGM2oZLrQGFDShsQGEDChtQ2IDCBhQ2 + oLCnh8K6XAJLCk8XhWGaHwJ0Bhg2wLABhg0wbIBhAwwbYNgAw54GDLs4/3CBsOgQOOM7Bvn3uj0W + y5DZD8fUi0fv3324eP9mLB6Mf351cvh/jo4vU8h1dAg/mRZCptOzXwhjzBlfnLz9AP//8s0v6tfx + z+cX74//zxU0M76Zb6dbHCovOMOh3TaaHY7E/2XG/NJ0Hcu1YNSdxpyQ2T/q9NVk3PJRMvJ/Z+Dm + y8MjaMm2xdgpcajlYkY7PtbNbRT8hYAuSarGh7rcrCqG+or61Lb9rkNNyGjg7eTVZKjyUeVQDw9P + LWYyJqcZsCYx0WWGD/UeBHr8eXw938Ihs56iqFE75v56KcYN/6gfNu26rhNC+gOnOwZOSwO3cwNX + 6/kuvhKjg3/Uj87qa3Q6TgXJq/Wjs0qjc3KjUysYYPBLMTz8V/34WF/jY/rjYzvGx0rjc7PjgzNP + jO9jsAighxFWdgNULFQutXD5uIPlbd1mdczu0jghpDlu/mp+3OheW79dvdy4qRz39D5YVG7Wqdqs + 05rN6rme38uwBSGtYctXs8PGR/XDti0rGTZjHp5afNhauTSFu/nFOakYv0UtH60FHUevyGiMPnk1 + Hb14VHEQHx7+Rh3bInLsMHTHTaYcM82uxvEWtc1psFxHs2TS/3HOpK3kU4SeWuo5K3PgV9Okjke7 + r4CE0H4epK8mPJCPKlcAAg7b8eQ5ReFERu0zD0jwdzHRlRIANc/6sXc+qhJC+mOnO8ZOS2O3M2OH + lVIau50BY8YcsGpwl6z8q3lQMXQQH77jdV34CRmNgSevpgMXjzIL/9Xv744+nL0HaXU7j1fBHZp0 + omk8l3MZcgNaypuXDLojdwdzbStlRPF7YEl4Px9nFRkhFXH4Reb8CSwF3b0rcxIy+5mTvpowRz6q + lApvLOL46iBwealGdQBO41m8MOLlJrqL/gJNZLoC9TsEpe1KZO4VYgFHFESLNeimK25Q3NyGY1Df + b8LxB6GowYjmMWg/ygKzjm4WIEnW4X+3YhaQe9HRqmJb/WkxajG3I/MEEQ3WyRdTxokHwtp7ASx4 + bZyHc9DkFuPjNfz3wQcm10G8uhOD+xSip2om+5oa5kFpdCdo/OqutSkye8eXvKjGJx5klgVOxJtg + Ov6fcl+P3r95/8+X3ToqaOzvp3xPdfMtMalvikk4OYAtGMF6+vIS1tEmnIw/30bT2zFOiVqb4fhz + tLkdX+FGXUWYuhrW4jnBj875RxVTwZt808Pw3mgO701ueAhY0uH9XNX1N+nek7to10C+fPtD+dUE + lOJ2lJyKyN6hJC+qsYgHNTjype0DgFZSkxJfFY7Iysdnr96cP68fVrdd/2QHRvsY1n70k7xYNyxa + GhbJDIvKYV2EyzFRoLZuSB38/TNEdIdk1Q7JKg2JZoZkySEd7xsO62M4+5Xx5MW64bDScKzMcFhm + huiuITmW011IcCI6QxIvZobkWE7NXjqkzLTVDDHHxusWPiRA1XiJWEzeerO5QWs8oCiOvJ6L8xhe + PqsbdueFyYnoDtuqHbZVGjbLDNtLh72J11hOfHUXJrAZnv5ZN77OK5UT0R0fqx0fK41PalG2TTyi + VurmNopvAjFKvJooX3g829RNcdmO9JtJmNcdHSoye5mQvKiYIB5UKg2HFnOosgq6xLbVFJ8evmG1 + exXQge+QjntVEdk7nuTFDDjxsfx49V71vMQsQIgPihCTWtB28XERf16klj8+0PcXr16Ml9sNv6Wu + G2m3o1AR0R0prR0pLY1U2ath/bpKz51vp5Fcp8Ec4BoWztouoo1co9sv5TUqW+62TRUR3XGy2nGy + 0jjd7IzanWbUNt2uYFQR0RipfDEdqc3vU6r2IvVdX82nY7rJwfkmmc/60XSTLU9nPLZLezA9KzL7 + x6NeTMbDH1SPh9meIyWLZZkWJijADfWPc+KUB+KgkbbrMpNE9g9DvZgMgz+omRYXUFkiNhzcd3w3 + 3azCcGFU3RfwYZ6+Oq8fZcfpeurjfPf238QiIGE7TmiGzt6xZt9Vw02eVYz43fm/bZdQW+l8ngdA + nJDxm3i6XZ8d/2KZjFiSBfFyDcMl42dT9OdYRjfoNrJ+PhmjD5LxOfgUGutwAdo8SNDJWGmO0d3d + Fp3vuAUwnKF/1yzeogcKJyNuHdahIPYCgPEspTLmTb4QLI6XCzL/XL56+Z1Z1GOdl5Mis5fFyYuK + v+JB5XI6si3H9iVvQURYyXHL11PVPdtkfOnYH8afglWEroh86DcVN26/M4f53XeRIqMxbPliOmx8 + UDtsJxk2s0ly+L6aL7NG5IpRudTvumEUEY0xyRfTMeGDWpDom55S6CiW4TPL2EmipelP5aHZts+6 + CndFZP/Q1IvJ0PiDOrsPZs5R6jfWNfUV/sVzShi5eboEYbGbxXcBqqyYUOE6Cmdla9DvoO6a3V03 + FBmN4coX0+Higzp7kOmZjgIZlmtZVF0DL8JYXPnJ++CM+lYeo+f7TucJlUT2j1C9mIyQP6ibUMdz + bKmiUQoinXrZCRWi+bA0o/H1uBKYJEPtOJ3fxGD/aaKbQMd5VUT2DjV5UQ1VPKi7v6YucZVaYxPL + GV+eywvcv1seM5UVcLtYBHdheo8Pf8+20w2oOPHmYAzKDhzjQTAmhmuVN+8/bc/1u2rqish+BqgX + EwbwB3UMYMT2JQOYx5ibYQCmj/Laq7PJsLst8m924F2FtSKjO3BaO3BaGriXDtwrDNwvD5x7khbH + nfqo/b/LebDBO9t/YzBM+O9wMftf/8//D5uK74M9pNoA + headers: + Access-Control-Allow-Credentials: + - 'true' + Access-Control-Allow-Headers: + - Origin,X-Accept-Charset,X-Accept,Content-Type,X-Requested-With,NCBI-SID,NCBI-PHID + Access-Control-Allow-Methods: + - POST, GET, PUT, OPTIONS, PATCH, DELETE + Access-Control-Allow-Origin: + - '' + Cache-Control: + - private + Connection: + - Keep-Alive + Content-Disposition: + - attachment; filename=GPL2529.txt + Content-Encoding: + - gzip + Content-Security-Policy: + - upgrade-insecure-requests + Content-Type: + - geo/text + Date: + - Mon, 24 Jul 2023 19:10:56 GMT + Keep-Alive: + - timeout=1, max=10 + NCBI-PHID: + - 07519F524BECCC010000000000000001.m_1 + NCBI-SID: + - 07519F524BECCC01_0000SID + Referrer-Policy: + - origin-when-cross-origin + Server: + - Apache + Set-Cookie: + - ncbi_sid=07519F524BECCC01_0000SID; domain=.nih.gov; path=/; expires=Wed, 24 + Jul 2024 19:10:56 GMT + Strict-Transport-Security: + - max-age=31536000; includeSubDomains; preload + Transfer-Encoding: + - chunked + Vary: + - Accept-Encoding + X-UA-Compatible: + - IE=Edge + X-XSS-Protection: + - 1; mode=block + status: + code: 200 + message: OK +version: 1 From bd5ee0eb02a2adca1b27c0caa1eafb44bd869353 Mon Sep 17 00:00:00 2001 From: Arkadii Yakovets Date: Tue, 25 Jul 2023 07:53:24 -0700 Subject: [PATCH 189/220] Correct SRA surveyor method typo --- foreman/data_refinery_foreman/surveyor/sra.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/foreman/data_refinery_foreman/surveyor/sra.py b/foreman/data_refinery_foreman/surveyor/sra.py index 144423133..6a53f6107 100644 --- a/foreman/data_refinery_foreman/surveyor/sra.py +++ b/foreman/data_refinery_foreman/surveyor/sra.py @@ -281,7 +281,7 @@ def _generate_experiment_and_samples( experiment_or_sample_accession ) - experiment = self._generate_experment(experiment_metadata) + experiment = self._generate_experiment(experiment_metadata) samples = [ self._generate_sample(experiment, sample_metadata) for sample_metadata in samples_metadata From 65d01d32afdb428f301dfe2902ee4191067a5685 Mon Sep 17 00:00:00 2001 From: Arkadii Yakovets Date: Tue, 25 Jul 2023 17:14:45 -0700 Subject: [PATCH 190/220] Update experiment generation method to obtain experiment object correctly --- foreman/data_refinery_foreman/surveyor/sra.py | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/foreman/data_refinery_foreman/surveyor/sra.py b/foreman/data_refinery_foreman/surveyor/sra.py index 6a53f6107..a258a803d 100644 --- a/foreman/data_refinery_foreman/surveyor/sra.py +++ b/foreman/data_refinery_foreman/surveyor/sra.py @@ -299,7 +299,9 @@ def _generate_experiment(self, experiment_metadata: dict) -> Experiment: # study_accession is PRJDB etc experiment_accession = experiment_metadata.get("secondary_study_accession") - experiment, is_created = Experiment.get_or_create(accession_code=experiment_accession) + experiment, is_created = Experiment.objects.get_or_create( + accession_code=experiment_accession + ) if is_created: SraSurveyor._apply_metadata_to_experiment(experiment, experiment_metadata) From 71dd9f2c3ed7fb279d61658b45dabe94d4c573e4 Mon Sep 17 00:00:00 2001 From: David Mejia Date: Mon, 31 Jul 2023 11:49:34 -0400 Subject: [PATCH 191/220] sra file report params --- foreman/data_refinery_foreman/surveyor/sra.py | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/foreman/data_refinery_foreman/surveyor/sra.py b/foreman/data_refinery_foreman/surveyor/sra.py index a258a803d..007f737f0 100644 --- a/foreman/data_refinery_foreman/surveyor/sra.py +++ b/foreman/data_refinery_foreman/surveyor/sra.py @@ -57,7 +57,10 @@ def source_type(self): @staticmethod def get_ena_json_api(endpoint: str, accession: str, params: dict = {}): - params.update({"format": "json", "includeAccessions": accession}) + params.update({"format": "json"}) + + if "accession" not in params: + params.update({"includeAccessions": accession}) return f"{ENA_API}{endpoint}/?{urlencode(params, )}" @@ -114,6 +117,8 @@ def gather_file_report(run_accession: str): "filereport", run_accession, { + "accession": run_accession, + "result": "read_run", "fields": "all", }, ) From 013703e04c1c12943c82996fcdeeb099538eaa44 Mon Sep 17 00:00:00 2001 From: David Mejia Date: Tue, 1 Aug 2023 11:59:55 -0400 Subject: [PATCH 192/220] refactor sample_protocols update --- foreman/data_refinery_foreman/surveyor/sra.py | 34 +++++++++---------- 1 file changed, 16 insertions(+), 18 deletions(-) diff --git a/foreman/data_refinery_foreman/surveyor/sra.py b/foreman/data_refinery_foreman/surveyor/sra.py index 007f737f0..aa7d00835 100644 --- a/foreman/data_refinery_foreman/surveyor/sra.py +++ b/foreman/data_refinery_foreman/surveyor/sra.py @@ -217,7 +217,9 @@ def _apply_metadata_to_experiment(experiment: Experiment, metadata: dict): experiment.source_first_published = parse_date(metadata["first_public"]) experiment.source_last_modified = parse_date(metadata["last_updated"]) experiment.alternate_accession_code = utils.get_nonempty(metadata, "geo_accession", None) - experiment.protocol_description = utils.get_nonempty(metadata, "protocol", []) + experiment.protocol_description = utils.get_nonempty( + metadata, "protocol", "Protocol was never provided." + ) experiment.pubmed_id = metadata.get("pubmed_id", "") experiment.has_publication = "pubmed_id" in metadata @@ -375,13 +377,7 @@ def _generate_sample(self, experiment: Experiment, sample_metadata: dict) -> Sam survey_job=self.survey_job.id, ) - # i think we should be collecting the sample protocols - # on the experiment here instead - protocol_info, protocol_updated = self.update_sample_protocol_info( - existing_protocols=sample.protocol_info, - experiment_protocol=experiment.protocol_description, - experiment_url=experiment.source_url, - ) + protocol_info, protocol_updated = self.update_sample_protocol_info(sample, experiment) if sample_created or protocol_updated: sample.protocol_info = protocol_info @@ -397,7 +393,7 @@ def _generate_sample(self, experiment: Experiment, sample_metadata: dict) -> Sam return sample @staticmethod - def update_sample_protocol_info(existing_protocols, experiment_protocol, experiment_url): + def update_sample_protocol_info(sample: Sample, experiment: Experiment): """Compares experiment_protocol with a sample's existing_protocols and update the latter if the former is new. @@ -407,21 +403,23 @@ def update_sample_protocol_info(existing_protocols, experiment_protocol, experim """ # ensure we are working with a list # since the default value for a JSON field is an empty dict - existing_protocols_list = [] - if existing_protocols is not {}: - existing_protocols_list = existing_protocols + sample_protocols = sample.protocol_info if isinstance(sample.protocol_info, list) else [] + # Exit if no protocol provided. + experiment_protocol = experiment.protocol_description if experiment_protocol == "Protocol was never provided.": - return (existing_protocols_list, False) + return sample_protocols, False - existing_descriptions = [protocol["Description"] for protocol in existing_protocols_list] + # Exit if protocol is already accounted for. + existing_descriptions = [protocol["Description"] for protocol in sample_protocols] if experiment_protocol in existing_descriptions: - return (existing_protocols_list, False) + return sample_protocols, False - existing_protocols_list.append( - {"Description": experiment_protocol, "Reference": experiment_url} + sample_protocols.append( + {"Description": experiment.protocol_description, "Reference": experiment.source_url} ) - return (existing_protocols_list, True) + + return sample_protocols, True def discover_experiment_and_samples(self): """Returns an experiment and a list of samples for an SRA accession""" From 4261bb9fdb416894934c2d72cd2ca1ff360fea0b Mon Sep 17 00:00:00 2001 From: David Mejia Date: Wed, 2 Aug 2023 16:38:44 -0400 Subject: [PATCH 193/220] update test for working sample --- workers/tests/downloaders/test_sra.py | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/workers/tests/downloaders/test_sra.py b/workers/tests/downloaders/test_sra.py index 674c2e04d..53e40c2d3 100644 --- a/workers/tests/downloaders/test_sra.py +++ b/workers/tests/downloaders/test_sra.py @@ -26,17 +26,17 @@ def insert_objects(self): @tag("downloaders_sra") def test_download_file(self): dlj = DownloaderJob() - dlj.accession_code = "ERR036" + dlj.accession_code = "SRR24086949" dlj.save() og = OriginalFile() - og.source_filename = "ERR036000.fastq.gz" - og.source_url = "ftp.sra.ebi.ac.uk/vol1/fastq/ERR036/ERR036000/ERR036000_1.fastq.gz" + og.source_filename = "SRR24086949.fastq.gz" + og.source_url = "ftp.sra.ebi.ac.uk/vol1/fastq/SRR240/049/SRR24086949/SRR24086949_1.fastq.gz" og.is_archive = True og.save() sample = Sample() - sample.accession_code = "ERR036000" + sample.accession_code = "SRR24086949" sample.save() assoc = OriginalFileSampleAssociation() @@ -52,7 +52,8 @@ def test_download_file(self): result, downloaded_files = sra.download_sra(dlj.pk) self.assertTrue(result) - self.assertEqual(downloaded_files[0].sha1, "1dfe5460a4101fe87feeffec0cb2e053f6695961") + self.assertEqual(downloaded_files[0].sha1, "ef52900be820e4001988e64b7d664f7af595e581") + print(downloaded_files[0].sha1) self.assertTrue(os.path.exists(downloaded_files[0].absolute_file_path)) @tag("downloaders") From 2b293e8ddc245182885d501ea0d75b045c5355cb Mon Sep 17 00:00:00 2001 From: David Mejia Date: Wed, 2 Aug 2023 16:40:21 -0400 Subject: [PATCH 194/220] add ENA info logs --- workers/data_refinery_workers/downloaders/sra.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/workers/data_refinery_workers/downloaders/sra.py b/workers/data_refinery_workers/downloaders/sra.py index 9008f0d4d..4003919e7 100644 --- a/workers/data_refinery_workers/downloaders/sra.py +++ b/workers/data_refinery_workers/downloaders/sra.py @@ -100,11 +100,13 @@ def _download_file_aspera( # and we are not using any kind of rate limiting. command_str = "ascp -QT -l 300m -P 33001 -i keys/asperaweb_id_dsa.openssh {src} {dest}" formatted_command = command_str.format(src=download_url, dest=target_file_path) + logger.info("Starting ENA ascp", time=str(timezone.now())) completed_command = subprocess.run( formatted_command.split(), stdout=subprocess.PIPE, stderr=subprocess.PIPE, ) + logger.info("Ending ENA ascp", time=str(timezone.now())) else: # NCBI requires encryption and recommends -k1 resume, as # well as the 450m limit and -Q (play fair). From 17cde61df0243271133989dab63fefc53c58de74 Mon Sep 17 00:00:00 2001 From: David Mejia Date: Wed, 2 Aug 2023 16:41:29 -0400 Subject: [PATCH 195/220] add original_file parameter on retry --- workers/data_refinery_workers/downloaders/sra.py | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/workers/data_refinery_workers/downloaders/sra.py b/workers/data_refinery_workers/downloaders/sra.py index 4003919e7..c759f7542 100644 --- a/workers/data_refinery_workers/downloaders/sra.py +++ b/workers/data_refinery_workers/downloaders/sra.py @@ -147,7 +147,12 @@ def _download_file_aspera( else: time.sleep(5) return _download_file_aspera( - download_url, downloader_job, target_file_path, attempt + 1, source + download_url, + downloader_job, + target_file_path, + attempt + 1, + original_file, + source, ) except Exception: logger.exception( @@ -176,7 +181,7 @@ def _download_file_aspera( ) time.sleep(10) return _download_file_aspera( - download_url, downloader_job, target_file_path, attempt + 1, source + download_url, downloader_job, target_file_path, attempt + 1, original_file, source ) return True From ee62a16f021c5464c88a4cb549e922e40a3deadb Mon Sep 17 00:00:00 2001 From: Arkadii Yakovets Date: Thu, 3 Aug 2023 09:59:54 -0700 Subject: [PATCH 196/220] Fix API server user data error --- .../api-configuration/api-server-instance-user-data.tpl.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/infrastructure/api-configuration/api-server-instance-user-data.tpl.sh b/infrastructure/api-configuration/api-server-instance-user-data.tpl.sh index 0dfb15ddc..0a830bc2b 100644 --- a/infrastructure/api-configuration/api-server-instance-user-data.tpl.sh +++ b/infrastructure/api-configuration/api-server-instance-user-data.tpl.sh @@ -151,7 +151,7 @@ docker run \ --name=dr_api \ --tty \ --volume "$STATIC_VOLUMES":/tmp/www/static \ - -publish 8081:8081 \ + --publish 8081:8081 \ "${dockerhub_repo}/${api_docker_image}" \ /bin/sh -c "/home/user/collect_and_run_uwsgi.sh" From 179b15877f5671de5264094e1102be25563753e8 Mon Sep 17 00:00:00 2001 From: David Mejia Date: Thu, 3 Aug 2023 13:25:21 -0400 Subject: [PATCH 197/220] adjust asserted counts for missing AE samples --- foreman/tests/foreman/test_end_to_end.py | 20 +++++++++++++++++--- 1 file changed, 17 insertions(+), 3 deletions(-) diff --git a/foreman/tests/foreman/test_end_to_end.py b/foreman/tests/foreman/test_end_to_end.py index 918db83d7..76ba09b64 100644 --- a/foreman/tests/foreman/test_end_to_end.py +++ b/foreman/tests/foreman/test_end_to_end.py @@ -54,6 +54,11 @@ "SRP094706", # 4 samples of SACCHAROMYCES_CEREVISIAE RNA-Seq data ] +# TODO: remove after array express samples are enabled. +ARRAY_EXPRESS_SAMPLES_COUNT = 39 + +EXPECTED_TOTAL_SAMPLES_COUNT = 191 - ARRAY_EXPRESS_SAMPLES_COUNT + EXPERIMENT_ACCESSION_CODES = MICROARRAY_ACCESSION_CODES + RNA_SEQ_ACCESSION_CODES TEST_DATA_BUCKET = "data-refinery-test-assets" @@ -285,7 +290,9 @@ def process_experiments(self): experiment__accession_code__in=EXPERIMENT_ACCESSION_CODES ).values_list("id") - self.assertEqual(Sample.objects.filter(id__in=sample_id_list).count(), 191) + self.assertEqual( + Sample.objects.filter(id__in=sample_id_list).count(), EXPECTED_TOTAL_SAMPLES_COUNT + ) samples = [] for accession_code in EXPERIMENT_ACCESSION_CODES: @@ -329,7 +336,11 @@ def process_experiments(self): self.assertTrue(wait_for_job(processor_job)) # Because SRR1583739 fails, the 26 samples from SRP047410 won't be processed - self.assertEqual(Sample.processed_objects.filter(id__in=sample_id_list).count(), 165) + EXPECTED_SAMPLE_FAILURES = 26 + self.assertEqual( + Sample.processed_objects.filter(id__in=sample_id_list).count(), + EXPECTED_TOTAL_SAMPLES_COUNT - EXPECTED_SAMPLE_FAILURES, + ) print("Finally, need to run tximport to finish an experiment with one bad sample.") tximport_jobs = run_tximport_for_all_eligible_experiments(dispatch_jobs=False) @@ -338,7 +349,10 @@ def process_experiments(self): self.assertTrue(wait_for_job(tximport_jobs[0])) # This is the full total of jobs minus one. - self.assertEqual(Sample.processed_objects.filter(id__in=sample_id_list).count(), 190) + self.assertEqual( + Sample.processed_objects.filter(id__in=sample_id_list).count(), + EXPECTED_TOTAL_SAMPLES_COUNT - 1, + ) def check_transcriptome_index(self): # Make sure that a processed file using our new transcriptome index is From 8e80458f85814189a8c3f8c09961741d374a1238 Mon Sep 17 00:00:00 2001 From: David Mejia Date: Mon, 7 Aug 2023 16:21:58 -0400 Subject: [PATCH 198/220] adding debug lines --- foreman/tests/foreman/test_end_to_end.py | 3 +++ 1 file changed, 3 insertions(+) diff --git a/foreman/tests/foreman/test_end_to_end.py b/foreman/tests/foreman/test_end_to_end.py index 76ba09b64..f6104bcfe 100644 --- a/foreman/tests/foreman/test_end_to_end.py +++ b/foreman/tests/foreman/test_end_to_end.py @@ -59,6 +59,9 @@ EXPECTED_TOTAL_SAMPLES_COUNT = 191 - ARRAY_EXPRESS_SAMPLES_COUNT +print("Array Express samples count:", ARRAY_EXPRESS_SAMPLES_COUNT) +print("Expected total samples count:", EXPECTED_TOTAL_SAMPLES_COUNT) + EXPERIMENT_ACCESSION_CODES = MICROARRAY_ACCESSION_CODES + RNA_SEQ_ACCESSION_CODES TEST_DATA_BUCKET = "data-refinery-test-assets" From fe66ff1b9cfa1f96c43053bc353b195d69058dc5 Mon Sep 17 00:00:00 2001 From: Arkadii Yakovets Date: Thu, 10 Aug 2023 10:16:39 -0700 Subject: [PATCH 199/220] Update deploy configuration - Explicitly set docker commands platform option - Update S3 buckets ACL/lifecycle configuration syntax --- foreman/run_end_to_end_tests.sh | 1 + .../api-server-instance-user-data.tpl.sh | 4 +- infrastructure/deploy.sh | 5 +- infrastructure/disk.tf | 256 +++++++++++++++--- 4 files changed, 220 insertions(+), 46 deletions(-) diff --git a/foreman/run_end_to_end_tests.sh b/foreman/run_end_to_end_tests.sh index c9879adc3..36a16e969 100755 --- a/foreman/run_end_to_end_tests.sh +++ b/foreman/run_end_to_end_tests.sh @@ -44,6 +44,7 @@ docker run \ --env REFINEBIO_BASE_URL="http://$API_HOST/v1/" \ --env RUNNING_IN_CLOUD=False \ --env-file ../infrastructure/prod_env \ + --platform linux/amd64 \ --volume "$HOME/.aws":/home/user/.aws \ --volume "$volume_directory":/home/user/data_store \ --tty \ diff --git a/infrastructure/api-configuration/api-server-instance-user-data.tpl.sh b/infrastructure/api-configuration/api-server-instance-user-data.tpl.sh index 0a830bc2b..8ed9ba8d8 100644 --- a/infrastructure/api-configuration/api-server-instance-user-data.tpl.sh +++ b/infrastructure/api-configuration/api-server-instance-user-data.tpl.sh @@ -144,11 +144,11 @@ docker run \ --env ELASTICSEARCH_PORT="${elasticsearch_port}" \ --env-file environment \ --interactive \ - --log-driver=awslogs \ + --log-driver awslogs \ --log-opt awslogs-group="${log_group}" \ --log-opt awslogs-region="${region}" \ --log-opt awslogs-stream="${log_stream}" \ - --name=dr_api \ + --name dr_api \ --tty \ --volume "$STATIC_VOLUMES":/tmp/www/static \ --publish 8081:8081 \ diff --git a/infrastructure/deploy.sh b/infrastructure/deploy.sh index 2298c2d8a..2a49e0f14 100755 --- a/infrastructure/deploy.sh +++ b/infrastructure/deploy.sh @@ -267,7 +267,7 @@ done echo "Job registrations have been fired off." # Get an image to run the migrations with. -docker pull "$DOCKERHUB_REPO/$FOREMAN_DOCKER_IMAGE" +docker pull --platform linux/amd64 "$DOCKERHUB_REPO/$FOREMAN_DOCKER_IMAGE" # Test that the pg_bouncer instance is up. 15 minutes should be more than enough. start_time=$(date +%s) @@ -288,6 +288,7 @@ docker run \ --env DATABASE_HOST="$DATABASE_PUBLIC_HOST" \ --env RUNNING_IN_CLOUD=False \ --env-file prod_env \ + --platform linux/amd64 \ "$DOCKERHUB_REPO/$FOREMAN_DOCKER_IMAGE" \ python3 manage.py migrate auth @@ -296,6 +297,7 @@ docker run \ --env DATABASE_HOST="$DATABASE_PUBLIC_HOST" \ --env RUNNING_IN_CLOUD=False \ --env-file prod_env \ + --platform linux/amd64 \ "$DOCKERHUB_REPO/$FOREMAN_DOCKER_IMAGE" \ python3 manage.py migrate @@ -304,6 +306,7 @@ docker run \ --env DATABASE_HOST="$DATABASE_PUBLIC_HOST" \ --env RUNNING_IN_CLOUD=False \ --env-file prod_env \ + --platform linux/amd64 \ "$DOCKERHUB_REPO/$FOREMAN_DOCKER_IMAGE" \ python3 manage.py createcachetable diff --git a/infrastructure/disk.tf b/infrastructure/disk.tf index e7b357132..0754378fa 100644 --- a/infrastructure/disk.tf +++ b/infrastructure/disk.tf @@ -1,126 +1,268 @@ resource "aws_s3_bucket" "data_refinery_bucket" { - bucket = "data-refinery-s3-${var.user}-${var.stage}" - acl = "private" + bucket = "data-refinery-s3-${var.user}-${var.stage}" force_destroy = var.static_bucket_prefix == "dev" ? true : false tags = merge( var.default_tags, { - Name = "data-refinery-s3-${var.user}-${var.stage}" + Name = "data-refinery-s3-${var.user}-${var.stage}" Environment = var.stage } ) } +resource "aws_s3_bucket_ownership_controls" "data_refinery_bucket" { + bucket = aws_s3_bucket.data_refinery_bucket.id + rule { + object_ownership = "BucketOwnerPreferred" + } +} + resource "aws_s3_bucket_public_access_block" "data_refinery_bucket" { bucket = aws_s3_bucket.data_refinery_bucket.id block_public_acls = true block_public_policy = true + ignore_public_acls = true +} + +resource "aws_s3_bucket_acl" "data_refinery_bucket" { + depends_on = [ + aws_s3_bucket_ownership_controls.data_refinery_bucket, + aws_s3_bucket_public_access_block.data_refinery_bucket, + ] + + bucket = aws_s3_bucket.data_refinery_bucket.id + acl = "private" } resource "aws_s3_bucket" "data_refinery_results_bucket" { - bucket = "data-refinery-s3-results-${var.user}-${var.stage}" - acl = "private" + bucket = "data-refinery-s3-results-${var.user}-${var.stage}" force_destroy = var.static_bucket_prefix == "dev" ? true : false tags = merge( var.default_tags, { - Name = "data-refinery-s3-results-${var.user}-${var.stage}" + Name = "data-refinery-s3-results-${var.user}-${var.stage}" Environment = var.stage } ) - lifecycle_rule { - id = "auto-delete-after-7-days-${var.user}-${var.stage}" - prefix = "" - enabled = true - abort_incomplete_multipart_upload_days = 1 +} + +resource "aws_s3_bucket_ownership_controls" "data_refinery_results_bucket" { + bucket = aws_s3_bucket.data_refinery_results_bucket.id + rule { + object_ownership = "BucketOwnerPreferred" + } +} + +resource "aws_s3_bucket_public_access_block" "data_refinery_results_bucket" { + bucket = aws_s3_bucket.data_refinery_results_bucket.id + + block_public_acls = true + block_public_policy = true + ignore_public_acls = true +} + +resource "aws_s3_bucket_acl" "data_refinery_results_bucket" { + depends_on = [ + aws_s3_bucket_ownership_controls.data_refinery_results_bucket, + aws_s3_bucket_public_access_block.data_refinery_results_bucket, + ] + + bucket = aws_s3_bucket.data_refinery_results_bucket.id + acl = "private" +} + +resource "aws_s3_bucket_lifecycle_configuration" "data_refinery_results_bucket" { + bucket = aws_s3_bucket.data_refinery_results_bucket.id + + rule { + id = "auto-delete-after-7-days-${var.user}-${var.stage}" + status = "Enabled" + + abort_incomplete_multipart_upload { + days_after_initiation = 1 + } expiration { - days = 7 + days = 7 expired_object_delete_marker = true } noncurrent_version_expiration { - days = 1 + noncurrent_days = 1 } } } + resource "aws_s3_bucket" "data_refinery_transcriptome_index_bucket" { - bucket = "data-refinery-s3-transcriptome-index-${var.user}-${var.stage}" - acl = "public-read" + bucket = "data-refinery-s3-transcriptome-index-${var.user}-${var.stage}" force_destroy = var.static_bucket_prefix == "dev" ? true : false tags = merge( var.default_tags, { - Name = "data-refinery-s3-transcriptome-index-${var.user}-${var.stage}" + Name = "data-refinery-s3-transcriptome-index-${var.user}-${var.stage}" Environment = var.stage } ) } +resource "aws_s3_bucket_ownership_controls" "data_refinery_transcriptome_index_bucket" { + bucket = aws_s3_bucket.data_refinery_transcriptome_index_bucket.id + rule { + object_ownership = "BucketOwnerPreferred" + } +} + +resource "aws_s3_bucket_public_access_block" "data_refinery_transcriptome_index_bucket" { + bucket = aws_s3_bucket.data_refinery_transcriptome_index_bucket.id + + block_public_acls = false + block_public_policy = false + ignore_public_acls = false + restrict_public_buckets = false +} + +resource "aws_s3_bucket_acl" "data_refinery_transcriptome_index_bucket" { + depends_on = [ + aws_s3_bucket_ownership_controls.data_refinery_transcriptome_index_bucket, + aws_s3_bucket_public_access_block.data_refinery_transcriptome_index_bucket, + ] + + bucket = aws_s3_bucket.data_refinery_transcriptome_index_bucket.id + acl = "public-read" +} + resource "aws_s3_bucket" "data_refinery_qn_target_bucket" { - bucket = "data-refinery-s3-qn-target-${var.user}-${var.stage}" - acl = "public-read" + bucket = "data-refinery-s3-qn-target-${var.user}-${var.stage}" force_destroy = var.static_bucket_prefix == "dev" ? true : false tags = merge( var.default_tags, { - Name = "data-refinery-s3-qn-target-${var.user}-${var.stage}" + Name = "data-refinery-s3-qn-target-${var.user}-${var.stage}" Environment = var.stage } ) } +resource "aws_s3_bucket_ownership_controls" "data_refinery_qn_target_bucket" { + bucket = aws_s3_bucket.data_refinery_qn_target_bucket.id + rule { + object_ownership = "BucketOwnerPreferred" + } +} + +resource "aws_s3_bucket_public_access_block" "data_refinery_qn_target_bucket" { + bucket = aws_s3_bucket.data_refinery_qn_target_bucket.id + + block_public_acls = false + block_public_policy = false + ignore_public_acls = false + restrict_public_buckets = false +} + +resource "aws_s3_bucket_acl" "data_refinery_qn_target_bucket" { + depends_on = [ + aws_s3_bucket_ownership_controls.data_refinery_qn_target_bucket, + aws_s3_bucket_public_access_block.data_refinery_qn_target_bucket, + ] + + bucket = aws_s3_bucket.data_refinery_qn_target_bucket.id + acl = "public-read" +} + resource "aws_s3_bucket" "data_refinery_compendia_bucket" { - bucket = "data-refinery-s3-compendia-${var.user}-${var.stage}" - acl = "private" + bucket = "data-refinery-s3-compendia-${var.user}-${var.stage}" force_destroy = var.static_bucket_prefix == "dev" ? true : false tags = merge( var.default_tags, { - Name = "data-refinery-s3-compendia-${var.user}-${var.stage}" + Name = "data-refinery-s3-compendia-${var.user}-${var.stage}" Environment = var.stage } ) } +resource "aws_s3_bucket_ownership_controls" "data_refinery_compendia_bucket" { + bucket = aws_s3_bucket.data_refinery_compendia_bucket.id + rule { + object_ownership = "BucketOwnerPreferred" + } +} + resource "aws_s3_bucket_public_access_block" "data_refinery_compendia_bucket" { bucket = aws_s3_bucket.data_refinery_compendia_bucket.id block_public_acls = true block_public_policy = true + ignore_public_acls = true +} + +resource "aws_s3_bucket_acl" "data_refinery_compendia_bucket" { + depends_on = [ + aws_s3_bucket_ownership_controls.data_refinery_compendia_bucket, + aws_s3_bucket_public_access_block.data_refinery_compendia_bucket, + ] + + bucket = aws_s3_bucket.data_refinery_compendia_bucket.id + acl = "private" } + resource "aws_s3_bucket" "data_refinery_cloudtrail_logs_bucket" { - bucket = "data-refinery-s3-cloudtrail-logs-${var.user}-${var.stage}" - acl = "private" + bucket = "data-refinery-s3-cloudtrail-logs-${var.user}-${var.stage}" force_destroy = var.static_bucket_prefix == "dev" ? true : false tags = merge( var.default_tags, { - Name = "data-refinery-s3-cloudtrail-logs-${var.user}-${var.stage}" + Name = "data-refinery-s3-cloudtrail-logs-${var.user}-${var.stage}" Environment = var.stage } ) } +resource "aws_s3_bucket_ownership_controls" "data_refinery_cloudtrail_logs_bucket" { + bucket = aws_s3_bucket.data_refinery_cloudtrail_logs_bucket.id + rule { + object_ownership = "BucketOwnerPreferred" + } +} + +resource "aws_s3_bucket_public_access_block" "data_refinery_cloudtrail_logs_bucket" { + bucket = aws_s3_bucket.data_refinery_cloudtrail_logs_bucket.id + + block_public_acls = true + block_public_policy = true + ignore_public_acls = true +} + +resource "aws_s3_bucket_acl" "data_refinery_cloudtrail_logs_bucket" { + depends_on = [ + aws_s3_bucket_ownership_controls.data_refinery_cloudtrail_logs_bucket, + aws_s3_bucket_public_access_block.data_refinery_cloudtrail_logs_bucket, + ] + + bucket = aws_s3_bucket.data_refinery_cloudtrail_logs_bucket.id + acl = "private" +} + + # Passing the name attribute as `EntireBucket` enables request metrics for the bucket. # ref: https://www.terraform.io/docs/providers/aws/r/s3_bucket_metric.html resource "aws_s3_bucket_metric" "compendia_bucket_metrics" { bucket = aws_s3_bucket.data_refinery_compendia_bucket.bucket - name = "EntireBucket" + name = "EntireBucket" } resource "aws_cloudwatch_event_rule" "compendia_object_metrics" { - name = "data-refinery-compendia-object-metric-${var.user}-${var.stage}" + name = "data-refinery-compendia-object-metric-${var.user}-${var.stage}" description = "Download Compendia Events" event_pattern = < Date: Wed, 16 Aug 2023 14:07:38 -0700 Subject: [PATCH 200/220] Use unique names for docker renv loading commands --- common/dockerfiles/Dockerfile.common_tests | 4 ++-- workers/dockerfiles/Dockerfile.affymetrix | 4 ++-- workers/dockerfiles/Dockerfile.compendia | 4 ++-- workers/dockerfiles/Dockerfile.downloaders | 12 +++++++----- workers/dockerfiles/Dockerfile.illumina | 4 ++-- workers/dockerfiles/Dockerfile.no_op | 4 ++-- workers/dockerfiles/Dockerfile.salmon | 4 ++-- workers/dockerfiles/Dockerfile.smasher | 4 ++-- 8 files changed, 21 insertions(+), 19 deletions(-) diff --git a/common/dockerfiles/Dockerfile.common_tests b/common/dockerfiles/Dockerfile.common_tests index d914a52f0..3d5cf4f05 100644 --- a/common/dockerfiles/Dockerfile.common_tests +++ b/common/dockerfiles/Dockerfile.common_tests @@ -8,8 +8,8 @@ SHELL ["/bin/bash", "-o", "pipefail", "-c"] WORKDIR /home/user COPY common/R/dependencies/common_tests/renv.lock . -COPY common/R/renv_load.R . -RUN Rscript renv_load.R +COPY common/R/renv_load.R renv_load_common_tests.R +RUN Rscript renv_load_common_tests.R COPY common/requirements.txt . RUN pip3 install --ignore-installed --no-cache-dir -r requirements.txt diff --git a/workers/dockerfiles/Dockerfile.affymetrix b/workers/dockerfiles/Dockerfile.affymetrix index 69983d365..4d6482afe 100644 --- a/workers/dockerfiles/Dockerfile.affymetrix +++ b/workers/dockerfiles/Dockerfile.affymetrix @@ -8,8 +8,8 @@ SHELL ["/bin/bash", "-o", "pipefail", "-c"] WORKDIR /home/user COPY workers/R/dependencies/affymetrix/renv.lock . -COPY common/R/renv_load.R . -RUN Rscript renv_load.R +COPY common/R/renv_load.R renv_load_affymetrix.R +RUN Rscript renv_load_affymetrix.R COPY workers/R/dependencies/affymetrix/install_ensg_pkgs.R . RUN Rscript install_ensg_pkgs.R diff --git a/workers/dockerfiles/Dockerfile.compendia b/workers/dockerfiles/Dockerfile.compendia index 23957c892..dd3352e8a 100644 --- a/workers/dockerfiles/Dockerfile.compendia +++ b/workers/dockerfiles/Dockerfile.compendia @@ -68,8 +68,8 @@ WORKDIR /home/user ENV R_LIBS=/usr/local/lib/R/site-library COPY workers/R/dependencies/compendia/renv.lock . -COPY common/R/renv_load.R . -RUN Rscript renv_load.R +COPY common/R/renv_load.R renv_load_compendia.R +RUN Rscript renv_load_compendia.R COPY workers/data_refinery_workers/requirements/compendia.txt requirements.txt RUN pip3 install --ignore-installed --no-cache-dir -r requirements.txt diff --git a/workers/dockerfiles/Dockerfile.downloaders b/workers/dockerfiles/Dockerfile.downloaders index 284203b35..9f48e98d4 100644 --- a/workers/dockerfiles/Dockerfile.downloaders +++ b/workers/dockerfiles/Dockerfile.downloaders @@ -8,16 +8,18 @@ SHELL ["/bin/bash", "-o", "pipefail", "-c"] WORKDIR /home/user COPY workers/R/dependencies/downloaders/renv.lock . -COPY common/R/renv_load.R . -RUN Rscript renv_load.R +COPY common/R/renv_load.R renv_load_downloaders.R +RUN Rscript renv_load_downloaders.R COPY workers/data_refinery_workers/downloaders/requirements.txt . RUN pip3 install --ignore-installed --no-cache-dir -r requirements.txt # Install Aspera. -RUN gpg --keyserver keyserver.ubuntu.com --recv-keys \ - 409B6B1796C275462A1703113804BB82D39DC0E3 \ - 7D2BAF1CF37B13E2069D6956105BD0E739499BDB && \ +# Disable IPv6 to avoid "Cannot assign requested address" error. +RUN mkdir ~/.gnupg/ && \ + echo "disable-ipv6" >> ~/.gnupg/dirmngr.conf && \ + gpg --keyserver keyserver.ubuntu.com --recv-keys \ + 409B6B1796C275462A1703113804BB82D39DC0E3 7D2BAF1CF37B13E2069D6956105BD0E739499BDB && \ curl -sSL https://get.rvm.io | bash -s stable --ruby --gems=aspera-cli USER user diff --git a/workers/dockerfiles/Dockerfile.illumina b/workers/dockerfiles/Dockerfile.illumina index ae00c06ca..5748788d9 100644 --- a/workers/dockerfiles/Dockerfile.illumina +++ b/workers/dockerfiles/Dockerfile.illumina @@ -8,8 +8,8 @@ SHELL ["/bin/bash", "-o", "pipefail", "-c"] WORKDIR /home/user COPY workers/R/dependencies/illumina/renv.lock . -COPY common/R/renv_load.R . -RUN Rscript renv_load.R +COPY common/R/renv_load.R renv_load_illumina.R +RUN Rscript renv_load_illumina.R COPY workers/data_refinery_workers/processors/requirements.txt . RUN pip3 install --ignore-installed --no-cache-dir -r requirements.txt diff --git a/workers/dockerfiles/Dockerfile.no_op b/workers/dockerfiles/Dockerfile.no_op index f37a21ce4..a9ffe09dd 100644 --- a/workers/dockerfiles/Dockerfile.no_op +++ b/workers/dockerfiles/Dockerfile.no_op @@ -8,8 +8,8 @@ SHELL ["/bin/bash", "-o", "pipefail", "-c"] WORKDIR /home/user COPY workers/R/dependencies/no_op/renv.lock . -COPY common/R/renv_load.R . -RUN Rscript renv_load.R +COPY common/R/renv_load.R renv_load_no_op.R +RUN Rscript renv_load_no_op.R COPY workers/data_refinery_workers/processors/requirements.txt . RUN pip3 install --ignore-installed --no-cache-dir -r requirements.txt diff --git a/workers/dockerfiles/Dockerfile.salmon b/workers/dockerfiles/Dockerfile.salmon index 6fb5885cb..ec2f49971 100644 --- a/workers/dockerfiles/Dockerfile.salmon +++ b/workers/dockerfiles/Dockerfile.salmon @@ -8,8 +8,8 @@ SHELL ["/bin/bash", "-o", "pipefail", "-c"] WORKDIR /home/user COPY workers/R/dependencies/salmon/renv.lock . -COPY common/R/renv_load.R . -RUN Rscript renv_load.R +COPY common/R/renv_load.R renv_load_salmon.R +RUN Rscript renv_load_salmon.R COPY workers/data_refinery_workers/processors/requirements.txt . RUN pip3 install --ignore-installed --no-cache-dir -r requirements.txt diff --git a/workers/dockerfiles/Dockerfile.smasher b/workers/dockerfiles/Dockerfile.smasher index e04410251..077e6e110 100644 --- a/workers/dockerfiles/Dockerfile.smasher +++ b/workers/dockerfiles/Dockerfile.smasher @@ -8,8 +8,8 @@ SHELL ["/bin/bash", "-o", "pipefail", "-c"] WORKDIR /home/user COPY workers/R/dependencies/smasher/renv.lock . -COPY common/R/renv_load.R . -RUN Rscript renv_load.R +COPY common/R/renv_load.R renv_load_smasher.R +RUN Rscript renv_load_smasher.R COPY workers/data_refinery_workers/processors/requirements.txt . RUN pip3 install --ignore-installed --no-cache-dir -r requirements.txt From f4d7801f2255aa83e75efe1fdc60024f55c6cbf6 Mon Sep 17 00:00:00 2001 From: Arkadii Yakovets Date: Thu, 17 Aug 2023 09:54:30 -0700 Subject: [PATCH 201/220] Update deploy configuration - Set initial setup umask - Show additional docker builder information - Use versioned migrations image - Update downloaders docker image --- infrastructure/deploy_box_instance_data.sh | 2 +- scripts/common.sh | 3 ++- scripts/make_migrations.sh | 6 +++--- workers/dockerfiles/Dockerfile.downloaders | 4 ++-- 4 files changed, 8 insertions(+), 7 deletions(-) diff --git a/infrastructure/deploy_box_instance_data.sh b/infrastructure/deploy_box_instance_data.sh index dffe93ecf..5191b5e68 100644 --- a/infrastructure/deploy_box_instance_data.sh +++ b/infrastructure/deploy_box_instance_data.sh @@ -76,6 +76,6 @@ chown ubuntu:ubuntu /var/log/deploy.log # Checkout the repo onto the box. cd /home/ubuntu -umask 0022 +echo "umask 0022" > /home/ubuntu/.profile git clone https://github.com/AlexsLemonade/refinebio.git chown -R ubuntu:ubuntu refinebio diff --git a/scripts/common.sh b/scripts/common.sh index 8f9b5e59a..da6d677b0 100755 --- a/scripts/common.sh +++ b/scripts/common.sh @@ -112,8 +112,9 @@ EOF fi fi - echo "Using Docker builder $DOCKER_BUILDER." docker buildx use "$DOCKER_BUILDER" + echo "Using Docker builder $DOCKER_BUILDER:" + docker buildx inspect } update_docker_image() { diff --git a/scripts/make_migrations.sh b/scripts/make_migrations.sh index 807531569..523ede986 100755 --- a/scripts/make_migrations.sh +++ b/scripts/make_migrations.sh @@ -26,7 +26,7 @@ docker run \ --interactive \ --platform linux/amd64 \ --volume "$script_directory/../common/data_refinery_common":/home/user/data_refinery_common \ - "$DOCKERHUB_REPO/dr_migrations" \ + "$DOCKERHUB_REPO/dr_migrations:$SYSTEM_VERSION" \ python3 manage.py makemigrations data_refinery_common docker run \ @@ -34,7 +34,7 @@ docker run \ --env-file ../common/environments/local \ --platform linux/amd64 \ --volume "$script_directory/../common/data_refinery_common":/home/user/data_refinery_common \ - "$DOCKERHUB_REPO/dr_migrations" \ + "$DOCKERHUB_REPO/dr_migrations:$SYSTEM_VERSION" \ python3 manage.py migrate docker run \ @@ -42,5 +42,5 @@ docker run \ --env-file ../common/environments/local \ --platform linux/amd64 \ --volume "$script_directory/../common/data_refinery_common":/home/user/data_refinery_common \ - "$DOCKERHUB_REPO/dr_migrations" \ + "$DOCKERHUB_REPO/dr_migrations:$SYSTEM_VERSION" \ python3 manage.py createcachetable diff --git a/workers/dockerfiles/Dockerfile.downloaders b/workers/dockerfiles/Dockerfile.downloaders index 9f48e98d4..decf0cc80 100644 --- a/workers/dockerfiles/Dockerfile.downloaders +++ b/workers/dockerfiles/Dockerfile.downloaders @@ -16,14 +16,14 @@ RUN pip3 install --ignore-installed --no-cache-dir -r requirements.txt # Install Aspera. # Disable IPv6 to avoid "Cannot assign requested address" error. -RUN mkdir ~/.gnupg/ && \ +RUN mkdir -m 700 ~/.gnupg/ && \ echo "disable-ipv6" >> ~/.gnupg/dirmngr.conf && \ gpg --keyserver keyserver.ubuntu.com --recv-keys \ 409B6B1796C275462A1703113804BB82D39DC0E3 7D2BAF1CF37B13E2069D6956105BD0E739499BDB && \ curl -sSL https://get.rvm.io | bash -s stable --ruby --gems=aspera-cli USER user -RUN source /usr/local/rvm/scripts/rvm && \ +RUN . /usr/local/rvm/scripts/rvm && \ ascli conf ascp install USER root From 056fe9ef857d8faaabe68789ecca069b1c5a8802 Mon Sep 17 00:00:00 2001 From: Arkadii Yakovets Date: Thu, 17 Aug 2023 14:34:40 -0700 Subject: [PATCH 202/220] Fix instance data --- infrastructure/deploy_box_instance_data.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/infrastructure/deploy_box_instance_data.sh b/infrastructure/deploy_box_instance_data.sh index 5191b5e68..ba03c1ef3 100644 --- a/infrastructure/deploy_box_instance_data.sh +++ b/infrastructure/deploy_box_instance_data.sh @@ -76,6 +76,6 @@ chown ubuntu:ubuntu /var/log/deploy.log # Checkout the repo onto the box. cd /home/ubuntu -echo "umask 0022" > /home/ubuntu/.profile +echo "umask 0022" >> /home/ubuntu/.profile git clone https://github.com/AlexsLemonade/refinebio.git chown -R ubuntu:ubuntu refinebio From 1f5cd98e1ebdb5fe1db24bb80c9fe5c6b8ffda36 Mon Sep 17 00:00:00 2001 From: David Mejia Date: Mon, 21 Aug 2023 11:06:28 -0400 Subject: [PATCH 203/220] add s3 to sra urls to check --- workers/data_refinery_workers/processors/salmon.py | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) diff --git a/workers/data_refinery_workers/processors/salmon.py b/workers/data_refinery_workers/processors/salmon.py index 476deda1b..e87669e18 100644 --- a/workers/data_refinery_workers/processors/salmon.py +++ b/workers/data_refinery_workers/processors/salmon.py @@ -120,8 +120,11 @@ def _prepare_files(job_context: Dict) -> Dict: return job_context # Detect that this is an SRA file from the source URL - if ("ncbi.nlm.nih.gov" in job_context["original_files"][0].source_url) or ( - job_context["input_file_path"][-4:].upper() == ".SRA" + source_url = job_context["original_files"][0].source_url + if ( + ("ncbi.nlm.nih.gov" in source_url) + or ("sra-pub-run-odp.s3.amazonaws.com" in source_url) + or (job_context["input_file_path"][-4:].upper() == ".SRA") ): new_input_file_path = os.path.join(job_context["work_dir"], original_files[0].filename) shutil.copyfile(job_context["input_file_path"], new_input_file_path) @@ -461,7 +464,6 @@ def _find_or_download_index(job_context: Dict) -> Dict: def _run_tximport_for_experiment( job_context: Dict, experiment: Experiment, quant_files: List[ComputedFile] ) -> Dict: - # Download all the quant.sf fles for this experiment. Write all # their paths to a file so we can pass a path to that to # tximport.R rather than having to pass in one argument per @@ -688,10 +690,8 @@ def _run_salmon(job_context: Dict) -> Dict: # SRA files also get processed differently as we don't want to use fasterq-dump to extract # them to disk. if job_context.get("sra_input_file_path", None): - # Single reads if job_context["sra_num_reads"] == 1: - fifo = "/tmp/barney" os.mkfifo(fifo) @@ -715,7 +715,6 @@ def _run_salmon(job_context: Dict) -> Dict: ) # Paired are trickier else: - # Okay, for some reason I can't explain, this only works # in the temp directory, otherwise the `tee` part will # only output to one or the other of the streams From 2d631394eb87e326bc27b4b66b7287ceee4d3487 Mon Sep 17 00:00:00 2001 From: David Date: Mon, 21 Aug 2023 13:00:52 -0400 Subject: [PATCH 204/220] Update workers/data_refinery_workers/processors/salmon.py Co-authored-by: Arkadii Yakovets --- workers/data_refinery_workers/processors/salmon.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/workers/data_refinery_workers/processors/salmon.py b/workers/data_refinery_workers/processors/salmon.py index e87669e18..8344a3123 100644 --- a/workers/data_refinery_workers/processors/salmon.py +++ b/workers/data_refinery_workers/processors/salmon.py @@ -122,9 +122,9 @@ def _prepare_files(job_context: Dict) -> Dict: # Detect that this is an SRA file from the source URL source_url = job_context["original_files"][0].source_url if ( - ("ncbi.nlm.nih.gov" in source_url) - or ("sra-pub-run-odp.s3.amazonaws.com" in source_url) - or (job_context["input_file_path"][-4:].upper() == ".SRA") + "ncbi.nlm.nih.gov" in source_url + or "sra-pub-run-odp.s3.amazonaws.com" in source_url + or job_context["input_file_path"][-4:].upper() == ".SRA" ): new_input_file_path = os.path.join(job_context["work_dir"], original_files[0].filename) shutil.copyfile(job_context["input_file_path"], new_input_file_path) From 18a94691c79fa7df70c2e23103238c73ae251eff Mon Sep 17 00:00:00 2001 From: Arkadii Yakovets Date: Tue, 22 Aug 2023 12:30:14 -0700 Subject: [PATCH 205/220] Add e2e tests troubleshooting changes - Increase batch launch template volume size from 300G to 500G - Fix random syntax/comments/style/typo issues --- .../models/original_file.py | 4 ++-- foreman/data_refinery_foreman/surveyor/geo.py | 2 +- foreman/tests/foreman/test_end_to_end.py | 5 +---- infrastructure/batch/compute.tf | 18 ++++++++---------- infrastructure/batch/launch_templates.tf | 2 +- scripts/format_batch_with_env.sh | 5 ++++- .../data_refinery_workers/downloaders/geo.py | 15 ++++++--------- .../data_refinery_workers/processors/utils.py | 2 +- workers/run_command.sh | 2 +- 9 files changed, 25 insertions(+), 30 deletions(-) diff --git a/common/data_refinery_common/models/original_file.py b/common/data_refinery_common/models/original_file.py index eba916929..49b541e21 100644 --- a/common/data_refinery_common/models/original_file.py +++ b/common/data_refinery_common/models/original_file.py @@ -31,7 +31,7 @@ class Meta: ] def __str__(self): - return "OriginalFile: " + self.get_display_name() + return f"OriginalFile: {self.get_display_name()}" # Managers objects = models.Manager() @@ -242,7 +242,7 @@ def needs_downloading(self, own_processor_id=None) -> bool: without getting processed. """ # If the file is downloaded and the file actually exists on disk, - # then it doens't need to be downloaded. + # then it doesn't need to be downloaded. if self.absolute_file_path and os.path.exists(self.absolute_file_path): # ok a file exists, if this file has an SHA1 ensure that it's the same existing_file_sha1 = calculate_sha1(self.absolute_file_path) diff --git a/foreman/data_refinery_foreman/surveyor/geo.py b/foreman/data_refinery_foreman/surveyor/geo.py index 347eb5693..94d0a6cf5 100644 --- a/foreman/data_refinery_foreman/surveyor/geo.py +++ b/foreman/data_refinery_foreman/surveyor/geo.py @@ -268,7 +268,7 @@ def create_experiment_and_samples_from_api( # Okay, here's the situation! # Sometimes, samples have a direct single representation for themselves. - # Othertimes, there is a single file with references to every sample in it. + # Other times, there is a single file with references to every sample in it. created_samples = [] for sample_accession_code, sample in gse.gsms.items(): try: diff --git a/foreman/tests/foreman/test_end_to_end.py b/foreman/tests/foreman/test_end_to_end.py index f6104bcfe..8eff635b9 100644 --- a/foreman/tests/foreman/test_end_to_end.py +++ b/foreman/tests/foreman/test_end_to_end.py @@ -59,9 +59,6 @@ EXPECTED_TOTAL_SAMPLES_COUNT = 191 - ARRAY_EXPRESS_SAMPLES_COUNT -print("Array Express samples count:", ARRAY_EXPRESS_SAMPLES_COUNT) -print("Expected total samples count:", EXPECTED_TOTAL_SAMPLES_COUNT) - EXPERIMENT_ACCESSION_CODES = MICROARRAY_ACCESSION_CODES + RNA_SEQ_ACCESSION_CODES TEST_DATA_BUCKET = "data-refinery-test-assets" @@ -361,7 +358,7 @@ def check_transcriptome_index(self): # Make sure that a processed file using our new transcriptome index is # similar enough to a reference file print( - "Now we are going to verify that the outputs of salmon look okay with" + "Now we are going to verify that the outputs of salmon look okay with " "the transcriptome index we generated." ) diff --git a/infrastructure/batch/compute.tf b/infrastructure/batch/compute.tf index 7e69fa3b8..f260867d6 100644 --- a/infrastructure/batch/compute.tf +++ b/infrastructure/batch/compute.tf @@ -1,5 +1,5 @@ -# This file creates the compute environments used by the queues -# The default environment is a 2 vCPU spot cluster +# This file creates the compute environments used by the queues. +# The default environment is a 2 vCPU spot cluster. locals { on_demand_environment_type = "EC2" @@ -26,7 +26,7 @@ resource "aws_batch_compute_environment" "data_refinery_workers" { max_vcpus = 32 min_vcpus = 0 - # standard launch template + # Standard launch template. launch_template { launch_template_id = aws_launch_template.data_refinery_worker.id } @@ -53,15 +53,13 @@ resource "aws_batch_compute_environment" "data_refinery_workers" { tags = var.default_tags } -# A separate queue for smasher jobs so they don't get stuck behind a -# large backlog. +# A separate queue for smasher jobs so they don't get stuck behind a large backlog. resource "aws_batch_compute_environment" "data_refinery_smasher" { compute_environment_name = "data-refinery-smasher-compute-${var.user}-${var.stage}" compute_resources { instance_role = aws_iam_instance_profile.ecs_instance_profile.arn instance_type = [ - # Just large enough to run one job at a time. We haven't had a - # backlog yet. + # Just large enough to run one job at a time. We haven't had a backlog yet. "m5.2xlarge", "r5.xlarge" ] @@ -72,7 +70,7 @@ resource "aws_batch_compute_environment" "data_refinery_smasher" { max_vcpus = 32 min_vcpus = 0 - # standard launch template + # Standard launch template. launch_template { launch_template_id = aws_launch_template.data_refinery_worker.id } @@ -105,7 +103,7 @@ resource "aws_batch_compute_environment" "data_refinery_compendia" { compute_resources { instance_role = aws_iam_instance_profile.ecs_instance_profile.arn instance_type = [ - # 976 GB RAM + # 976 GB RAM. "x1.16xlarge" ] @@ -116,7 +114,7 @@ resource "aws_batch_compute_environment" "data_refinery_compendia" { max_vcpus = 64 min_vcpus = 0 - # standard launch template + # Standard launch template. launch_template { launch_template_id = aws_launch_template.data_refinery_compendia.id } diff --git a/infrastructure/batch/launch_templates.tf b/infrastructure/batch/launch_templates.tf index 988c68ab7..a221c683e 100644 --- a/infrastructure/batch/launch_templates.tf +++ b/infrastructure/batch/launch_templates.tf @@ -16,7 +16,7 @@ resource "aws_launch_template" "data_refinery_worker" { device_name = "/dev/sdf" ebs { volume_type = "st1" - volume_size = 300 + volume_size = 500 encrypted = true delete_on_termination = true } diff --git a/scripts/format_batch_with_env.sh b/scripts/format_batch_with_env.sh index 21938e1e5..81d6e6169 100755 --- a/scripts/format_batch_with_env.sh +++ b/scripts/format_batch_with_env.sh @@ -213,6 +213,7 @@ if [ "$project" = "workers" ]; then echo "Made $FILEPATH" done echo "Made $output_dir/$OUTPUT_FILE" + # From https://unix.stackexchange.com/a/111517 elif (echo "$NO_RAM_JOB_FILES" | grep -Fqw "$OUTPUT_FILE"); then perl -p -e 's/\$\{\{([^}]+)\}\}/defined $ENV{$1} ? $ENV{$1} : $&/eg' \ @@ -220,6 +221,7 @@ if [ "$project" = "workers" ]; then >"$output_dir/$OUTPUT_FILE" \ 2>/dev/null echo "Made $output_dir/$OUTPUT_FILE" + else rams="2048 4096 8192 12288 16384 32768 65536" for r in $rams; do @@ -234,8 +236,8 @@ if [ "$project" = "workers" ]; then done fi done -elif [ "$project" = "surveyor" ]; then +elif [ "$project" = "surveyor" ]; then # Iterate over all the template files in the directory. for template in batch-job-templates/*.tpl.json; do template="$(basename "$template")" @@ -271,6 +273,7 @@ elif [ "$project" = "foreman" ]; then "$output_dir/environment" \ 2>/dev/null + elif [ "$project" = "api" ]; then perl -p -e 's/\$\{\{([^}]+)\}\}/defined $ENV{$1} ? $ENV{$1} : $&/eg' \ Date: Thu, 24 Aug 2023 17:07:21 -0700 Subject: [PATCH 206/220] Populate jobs worker_version field with the system version - Propagate SYSTEM_VERSION to api/foreman/worker environments - Update unit tests - Update end to end tests --- api/environment.tpl | 1 + api/tests/views/test_api_general.py | 5 +++++ foreman/batch-job-templates/surveyor.tpl.json | 1 + foreman/environment.tpl | 1 + foreman/tests/foreman/test_end_to_end.py | 11 +++++++---- infrastructure/deploy.sh | 11 ++++++----- .../foreman-server-instance-user-data.tpl.sh | 8 ++++---- workers/batch-job-templates/affy_to_pcl.tpl.json | 1 + workers/batch-job-templates/create_compendia.tpl.json | 1 + workers/batch-job-templates/create_qn_target.tpl.json | 1 + .../batch-job-templates/create_quantpendia.tpl.json | 1 + workers/batch-job-templates/downloader.tpl.json | 1 + workers/batch-job-templates/illumina.tpl.json | 1 + workers/batch-job-templates/janitor.tpl.json | 1 + workers/batch-job-templates/no_op.tpl.json | 1 + workers/batch-job-templates/qn_dispatcher.tpl.json | 1 + workers/batch-job-templates/qn_reference.tpl.json | 1 + workers/batch-job-templates/salmon.tpl.json | 1 + workers/batch-job-templates/smasher.tpl.json | 1 + .../batch-job-templates/transcriptome_index.tpl.json | 1 + workers/batch-job-templates/tximport.tpl.json | 1 + 21 files changed, 39 insertions(+), 13 deletions(-) diff --git a/api/environment.tpl b/api/environment.tpl index 2a02ed6e5..fa47b2032 100644 --- a/api/environment.tpl +++ b/api/environment.tpl @@ -1,3 +1,4 @@ +SYSTEM_VERSION=${{SYSTEM_VERSION}} DJANGO_SECRET_KEY=${{DJANGO_SECRET_KEY}} DJANGO_DEBUG=${{DJANGO_DEBUG}} DATABASE_PORT=${{DATABASE_PORT}} diff --git a/api/tests/views/test_api_general.py b/api/tests/views/test_api_general.py index fd817ccd2..39ebfd83d 100644 --- a/api/tests/views/test_api_general.py +++ b/api/tests/views/test_api_general.py @@ -1,4 +1,6 @@ import json +import os +from unittest import mock from django.core.cache import cache from django.urls import reverse @@ -31,6 +33,7 @@ from data_refinery_common.utils import get_env_variable API_VERSION = "v1" +SYSTEM_VERSION = "v2.0.0" class APITestCases(APITestCase): @@ -212,9 +215,11 @@ def tearDown(self): Sample.objects.all().delete() SampleAnnotation.objects.all().delete() + @mock.patch.dict(os.environ, {"SYSTEM_VERSION": SYSTEM_VERSION}) def test_all_endpoints(self): response = self.client.get(reverse("experiments", kwargs={"version": API_VERSION})) self.assertEqual(response.status_code, status.HTTP_200_OK) + self.assertTrue(response["X-Source-Revision"], SYSTEM_VERSION) self.assertEqual(response["X-Source-Revision"], get_env_variable("SYSTEM_VERSION")) cache.clear() diff --git a/foreman/batch-job-templates/surveyor.tpl.json b/foreman/batch-job-templates/surveyor.tpl.json index 6cb9567d7..53f04a163 100644 --- a/foreman/batch-job-templates/surveyor.tpl.json +++ b/foreman/batch-job-templates/surveyor.tpl.json @@ -26,6 +26,7 @@ } ], "environment": [ + {"name": "SYSTEM_VERSION", "value": "${{SYSTEM_VERSION}}"}, {"name": "DJANGO_DEBUG", "value": "${{DJANGO_DEBUG}}"}, {"name": "DATABASE_NAME", "value": "${{DATABASE_NAME}}"}, {"name": "DATABASE_USER", "value": "${{DATABASE_USER}}"}, diff --git a/foreman/environment.tpl b/foreman/environment.tpl index 8e253b0f6..86aab20ff 100644 --- a/foreman/environment.tpl +++ b/foreman/environment.tpl @@ -1,3 +1,4 @@ +SYSTEM_VERSION=${{SYSTEM_VERSION}} USER=${{USER}} STAGE=${{STAGE}} ENGAGEMENTBOT_WEBHOOK=${{ENGAGEMENTBOT_WEBHOOK}} diff --git a/foreman/tests/foreman/test_end_to_end.py b/foreman/tests/foreman/test_end_to_end.py index 8eff635b9..356dc9250 100644 --- a/foreman/tests/foreman/test_end_to_end.py +++ b/foreman/tests/foreman/test_end_to_end.py @@ -24,6 +24,7 @@ SampleComputedFileAssociation, SampleResultAssociation, ) +from data_refinery_common.utils import get_env_variable from data_refinery_foreman.foreman.management.commands.create_compendia import create_compendia from data_refinery_foreman.foreman.management.commands.create_quantpendia import create_quantpendia from data_refinery_foreman.foreman.management.commands.run_tximport import ( @@ -63,6 +64,8 @@ TEST_DATA_BUCKET = "data-refinery-test-assets" +SYSTEM_VERSION = get_env_variable("SYSTEM_VERSION") + def wait_for_job(job) -> bool: """Waits for a job and all of its retries.""" @@ -70,7 +73,6 @@ def wait_for_job(job) -> bool: is_done = False while not is_done: - if job.end_time is None and job.success is None: print(f"Polling {type(job).__name__}s. Currently waiting for job id: {job.id}") sleep(20) @@ -238,11 +240,8 @@ def test_all_the_things(self): purge_experiment(accession_code) self.process_experiments() - self.check_transcriptome_index() - self.create_qn_reference() - self.create_compendia() def process_experiments(self): @@ -315,6 +314,7 @@ def process_experiments(self): for downloader_job in downloader_jobs: self.assertTrue(wait_for_job(downloader_job)) + self.assertEqual(downloader_job.worker_version, SYSTEM_VERSION) processor_jobs = [] for sample in samples: @@ -334,6 +334,7 @@ def process_experiments(self): for processor_job in processor_jobs: self.assertTrue(wait_for_job(processor_job)) + self.assertEqual(downloader_job.worker_version, SYSTEM_VERSION) # Because SRR1583739 fails, the 26 samples from SRP047410 won't be processed EXPECTED_SAMPLE_FAILURES = 26 @@ -425,6 +426,7 @@ def create_qn_reference(self): self.assertIsNotNone(qn_job) self.assertTrue(wait_for_job(qn_job)) + self.assertEqual(qn_job.worker_version, SYSTEM_VERSION) def create_compendia(self): """Create both a compendium and a quantpendium""" @@ -433,3 +435,4 @@ def create_compendia(self): for job in compendia_jobs + quantpendia_jobs: self.assertTrue(wait_for_job(job)) + self.assertEqual(job.worker_version, SYSTEM_VERSION) diff --git a/infrastructure/deploy.sh b/infrastructure/deploy.sh index 2a49e0f14..3c9203187 100755 --- a/infrastructure/deploy.sh +++ b/infrastructure/deploy.sh @@ -109,6 +109,7 @@ fi # variable, which we then read in as json using the command line tool # `jq`, so that we can use them via bash. format_environment_variables() { + echo "SYSTEM_VERSION=$SYSTEM_VERSION" >>prod_env json_env_vars=$(terraform output -json environment_variables | jq -c '.[]') for row in $json_env_vars; do name=$(echo "$row" | jq -r ".name") @@ -203,7 +204,7 @@ if terraform output | grep -q 'No outputs found'; then terraform apply -var-file="environments/$env.tfvars" -auto-approve fi -# We have to do this once before the initial deploy.. +# We have to do this once before the initial deploy... rm -f prod_env format_environment_variables @@ -212,7 +213,7 @@ format_environment_variables if [[ -z $ran_init_build ]]; then # Open up ingress to AWS for Circle, stop jobs, migrate DB. - echo "Deploying with ingress.." + echo "Deploying with ingress..." # Output the plan for debugging deployments later. # Until terraform plan supports -var-file the plan is wrong. @@ -226,7 +227,7 @@ fi # `docker run` commands when running migrations. rm -f prod_env -# (cont'd) ..and once again after the update when this is re-run. +# (cont'd) ...and once again after the update when this is re-run. format_environment_variables # Make sure to clear out any old batch job templates since we @@ -273,7 +274,7 @@ docker pull --platform linux/amd64 "$DOCKERHUB_REPO/$FOREMAN_DOCKER_IMAGE" start_time=$(date +%s) diff=0 until pg_isready -d "$DATABASE_NAME" -h "$DATABASE_PUBLIC_HOST" -p "$DATABASE_PORT" -U "$DATABASE_USER" &>/dev/null || [ "$diff" -gt "900" ]; do - echo "Waiting for the pg_bouncer instance to come online ..." + echo "Waiting for the pg_bouncer instance to come online..." sleep 10 ((diff = $(date +%s) - start_time)) done @@ -327,7 +328,7 @@ terraform taint aws_instance.foreman_server_1 # tests can run and have access to the database since they don't use # test databases. if [ "$env" = "prod" ]; then - echo "Removing ingress.." + echo "Removing ingress..." rm ci_ingress.tf fi diff --git a/infrastructure/foreman-configuration/foreman-server-instance-user-data.tpl.sh b/infrastructure/foreman-configuration/foreman-server-instance-user-data.tpl.sh index efc292163..0c509b04b 100644 --- a/infrastructure/foreman-configuration/foreman-server-instance-user-data.tpl.sh +++ b/infrastructure/foreman-configuration/foreman-server-instance-user-data.tpl.sh @@ -34,11 +34,11 @@ docker run \\ --env ELASTICSEARCH_PORT="${elasticsearch_port}" \\ --env-file /home/ubuntu/environment \\ --interactive \\ - --log-driver=awslogs \\ + --log-driver awslogs \\ --log-opt awslogs-group="${log_group}" \\ --log-opt awslogs-region="${region}" \\ --log-opt awslogs-stream="log-stream-foreman-${user}-${stage}" \\ - --name=dr_foreman \\ + --name dr_foreman \\ --tty \\ --volume /tmp:/tmp \\ "${dockerhub_repo}/${foreman_docker_image}" \\ @@ -140,11 +140,11 @@ docker run \ --env DATABASE_USER="${database_user}" \ --env-file /home/ubuntu/environment \ --interactive \ - --log-driver=awslogs \ + --log-driver awslogs \ --log-opt awslogs-group="${log_group}" \ --log-opt awslogs-region="${region}" \ --log-opt awslogs-stream="log-stream-foreman-${user}-${stage}" \ - --name=job_filler \ + --name job_filler \ --tty \ --volume /tmp:/tmp \ "${dockerhub_repo}/${foreman_docker_image}" \ diff --git a/workers/batch-job-templates/affy_to_pcl.tpl.json b/workers/batch-job-templates/affy_to_pcl.tpl.json index c6594509f..bf0456737 100644 --- a/workers/batch-job-templates/affy_to_pcl.tpl.json +++ b/workers/batch-job-templates/affy_to_pcl.tpl.json @@ -28,6 +28,7 @@ ], "jobRoleArn": "${{WORKER_ROLE_ARN}}", "environment": [ + {"name": "SYSTEM_VERSION", "value": "${{SYSTEM_VERSION}}"}, {"name": "DJANGO_DEBUG", "value": "${{DJANGO_DEBUG}}"}, {"name": "DATABASE_NAME", "value": "${{DATABASE_NAME}}"}, {"name": "DATABASE_USER", "value": "${{DATABASE_USER}}"}, diff --git a/workers/batch-job-templates/create_compendia.tpl.json b/workers/batch-job-templates/create_compendia.tpl.json index f8e97e70b..b5b3468c6 100644 --- a/workers/batch-job-templates/create_compendia.tpl.json +++ b/workers/batch-job-templates/create_compendia.tpl.json @@ -28,6 +28,7 @@ ], "jobRoleArn": "${{WORKER_ROLE_ARN}}", "environment": [ + {"name": "SYSTEM_VERSION", "value": "${{SYSTEM_VERSION}}"}, {"name": "DJANGO_DEBUG", "value": "${{DJANGO_DEBUG}}"}, {"name": "DATABASE_NAME", "value": "${{DATABASE_NAME}}"}, {"name": "DATABASE_USER", "value": "${{DATABASE_USER}}"}, diff --git a/workers/batch-job-templates/create_qn_target.tpl.json b/workers/batch-job-templates/create_qn_target.tpl.json index eec119d06..dc7979b41 100644 --- a/workers/batch-job-templates/create_qn_target.tpl.json +++ b/workers/batch-job-templates/create_qn_target.tpl.json @@ -28,6 +28,7 @@ ], "jobRoleArn": "${{WORKER_ROLE_ARN}}", "environment": [ + {"name": "SYSTEM_VERSION", "value": "${{SYSTEM_VERSION}}"}, {"name": "DJANGO_DEBUG", "value": "${{DJANGO_DEBUG}}"}, {"name": "DATABASE_NAME", "value": "${{DATABASE_NAME}}"}, {"name": "DATABASE_USER", "value": "${{DATABASE_USER}}"}, diff --git a/workers/batch-job-templates/create_quantpendia.tpl.json b/workers/batch-job-templates/create_quantpendia.tpl.json index 511400d9a..47107b10a 100644 --- a/workers/batch-job-templates/create_quantpendia.tpl.json +++ b/workers/batch-job-templates/create_quantpendia.tpl.json @@ -28,6 +28,7 @@ ], "jobRoleArn": "${{WORKER_ROLE_ARN}}", "environment": [ + {"name": "SYSTEM_VERSION", "value": "${{SYSTEM_VERSION}}"}, {"name": "DJANGO_DEBUG", "value": "${{DJANGO_DEBUG}}"}, {"name": "DATABASE_NAME", "value": "${{DATABASE_NAME}}"}, {"name": "DATABASE_USER", "value": "${{DATABASE_USER}}"}, diff --git a/workers/batch-job-templates/downloader.tpl.json b/workers/batch-job-templates/downloader.tpl.json index 33b373806..64cf515c2 100644 --- a/workers/batch-job-templates/downloader.tpl.json +++ b/workers/batch-job-templates/downloader.tpl.json @@ -28,6 +28,7 @@ ], "jobRoleArn": "${{WORKER_ROLE_ARN}}", "environment": [ + {"name": "SYSTEM_VERSION", "value": "${{SYSTEM_VERSION}}"}, {"name": "DJANGO_DEBUG", "value": "${{DJANGO_DEBUG}}"}, {"name": "DATABASE_NAME", "value": "${{DATABASE_NAME}}"}, {"name": "DATABASE_USER", "value": "${{DATABASE_USER}}"}, diff --git a/workers/batch-job-templates/illumina.tpl.json b/workers/batch-job-templates/illumina.tpl.json index e432c7777..f1dd73896 100644 --- a/workers/batch-job-templates/illumina.tpl.json +++ b/workers/batch-job-templates/illumina.tpl.json @@ -28,6 +28,7 @@ ], "jobRoleArn": "${{WORKER_ROLE_ARN}}", "environment": [ + {"name": "SYSTEM_VERSION", "value": "${{SYSTEM_VERSION}}"}, {"name": "DJANGO_DEBUG", "value": "${{DJANGO_DEBUG}}"}, {"name": "DATABASE_NAME", "value": "${{DATABASE_NAME}}"}, {"name": "DATABASE_USER", "value": "${{DATABASE_USER}}"}, diff --git a/workers/batch-job-templates/janitor.tpl.json b/workers/batch-job-templates/janitor.tpl.json index 3ff27b738..1d178d160 100644 --- a/workers/batch-job-templates/janitor.tpl.json +++ b/workers/batch-job-templates/janitor.tpl.json @@ -28,6 +28,7 @@ ], "jobRoleArn": "${{WORKER_ROLE_ARN}}", "environment": [ + {"name": "SYSTEM_VERSION", "value": "${{SYSTEM_VERSION}}"}, {"name": "DJANGO_DEBUG", "value": "${{DJANGO_DEBUG}}"}, {"name": "DATABASE_NAME", "value": "${{DATABASE_NAME}}"}, {"name": "DATABASE_USER", "value": "${{DATABASE_USER}}"}, diff --git a/workers/batch-job-templates/no_op.tpl.json b/workers/batch-job-templates/no_op.tpl.json index 1407e4084..249d2fd0c 100644 --- a/workers/batch-job-templates/no_op.tpl.json +++ b/workers/batch-job-templates/no_op.tpl.json @@ -28,6 +28,7 @@ ], "jobRoleArn": "${{WORKER_ROLE_ARN}}", "environment": [ + {"name": "SYSTEM_VERSION", "value": "${{SYSTEM_VERSION}}"}, {"name": "DJANGO_DEBUG", "value": "${{DJANGO_DEBUG}}"}, {"name": "DATABASE_NAME", "value": "${{DATABASE_NAME}}"}, {"name": "DATABASE_USER", "value": "${{DATABASE_USER}}"}, diff --git a/workers/batch-job-templates/qn_dispatcher.tpl.json b/workers/batch-job-templates/qn_dispatcher.tpl.json index c1a32d793..abe0ec46e 100644 --- a/workers/batch-job-templates/qn_dispatcher.tpl.json +++ b/workers/batch-job-templates/qn_dispatcher.tpl.json @@ -28,6 +28,7 @@ ], "jobRoleArn": "${{WORKER_ROLE_ARN}}", "environment": [ + {"name": "SYSTEM_VERSION", "value": "${{SYSTEM_VERSION}}"}, {"name": "DJANGO_DEBUG", "value": "${{DJANGO_DEBUG}}"}, {"name": "DATABASE_NAME", "value": "${{DATABASE_NAME}}"}, {"name": "DATABASE_USER", "value": "${{DATABASE_USER}}"}, diff --git a/workers/batch-job-templates/qn_reference.tpl.json b/workers/batch-job-templates/qn_reference.tpl.json index f1f53c716..bf69cf5f3 100644 --- a/workers/batch-job-templates/qn_reference.tpl.json +++ b/workers/batch-job-templates/qn_reference.tpl.json @@ -28,6 +28,7 @@ ], "jobRoleArn": "${{WORKER_ROLE_ARN}}", "environment": [ + {"name": "SYSTEM_VERSION", "value": "${{SYSTEM_VERSION}}"}, {"name": "DJANGO_DEBUG", "value": "${{DJANGO_DEBUG}}"}, {"name": "DATABASE_NAME", "value": "${{DATABASE_NAME}}"}, {"name": "DATABASE_USER", "value": "${{DATABASE_USER}}"}, diff --git a/workers/batch-job-templates/salmon.tpl.json b/workers/batch-job-templates/salmon.tpl.json index ef38c3090..cd6e41114 100644 --- a/workers/batch-job-templates/salmon.tpl.json +++ b/workers/batch-job-templates/salmon.tpl.json @@ -28,6 +28,7 @@ ], "jobRoleArn": "${{WORKER_ROLE_ARN}}", "environment": [ + {"name": "SYSTEM_VERSION", "value": "${{SYSTEM_VERSION}}"}, {"name": "DJANGO_DEBUG", "value": "${{DJANGO_DEBUG}}"}, {"name": "DATABASE_NAME", "value": "${{DATABASE_NAME}}"}, {"name": "DATABASE_USER", "value": "${{DATABASE_USER}}"}, diff --git a/workers/batch-job-templates/smasher.tpl.json b/workers/batch-job-templates/smasher.tpl.json index 8c7846b3b..973a11501 100644 --- a/workers/batch-job-templates/smasher.tpl.json +++ b/workers/batch-job-templates/smasher.tpl.json @@ -28,6 +28,7 @@ ], "jobRoleArn": "${{WORKER_ROLE_ARN}}", "environment": [ + {"name": "SYSTEM_VERSION", "value": "${{SYSTEM_VERSION}}"}, {"name": "DJANGO_DEBUG", "value": "${{DJANGO_DEBUG}}"}, {"name": "DATABASE_NAME", "value": "${{DATABASE_NAME}}"}, {"name": "DATABASE_USER", "value": "${{DATABASE_USER}}"}, diff --git a/workers/batch-job-templates/transcriptome_index.tpl.json b/workers/batch-job-templates/transcriptome_index.tpl.json index 14892eca0..c671dd6f6 100644 --- a/workers/batch-job-templates/transcriptome_index.tpl.json +++ b/workers/batch-job-templates/transcriptome_index.tpl.json @@ -28,6 +28,7 @@ ], "jobRoleArn": "${{WORKER_ROLE_ARN}}", "environment": [ + {"name": "SYSTEM_VERSION", "value": "${{SYSTEM_VERSION}}"}, {"name": "DJANGO_DEBUG", "value": "${{DJANGO_DEBUG}}"}, {"name": "DATABASE_NAME", "value": "${{DATABASE_NAME}}"}, {"name": "DATABASE_USER", "value": "${{DATABASE_USER}}"}, diff --git a/workers/batch-job-templates/tximport.tpl.json b/workers/batch-job-templates/tximport.tpl.json index 7297e8d2a..5c52ad18d 100644 --- a/workers/batch-job-templates/tximport.tpl.json +++ b/workers/batch-job-templates/tximport.tpl.json @@ -28,6 +28,7 @@ ], "jobRoleArn": "${{WORKER_ROLE_ARN}}", "environment": [ + {"name": "SYSTEM_VERSION", "value": "${{SYSTEM_VERSION}}"}, {"name": "DJANGO_DEBUG", "value": "${{DJANGO_DEBUG}}"}, {"name": "DATABASE_NAME", "value": "${{DATABASE_NAME}}"}, {"name": "DATABASE_USER", "value": "${{DATABASE_USER}}"}, From 4bdc42ed6df570cc68cd37c61595cebed6931027 Mon Sep 17 00:00:00 2001 From: Arkadii Yakovets Date: Fri, 25 Aug 2023 08:09:35 -0700 Subject: [PATCH 207/220] Update API tests --- api/tests/views/test_api_general.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/api/tests/views/test_api_general.py b/api/tests/views/test_api_general.py index 39ebfd83d..559bb2080 100644 --- a/api/tests/views/test_api_general.py +++ b/api/tests/views/test_api_general.py @@ -219,7 +219,7 @@ def tearDown(self): def test_all_endpoints(self): response = self.client.get(reverse("experiments", kwargs={"version": API_VERSION})) self.assertEqual(response.status_code, status.HTTP_200_OK) - self.assertTrue(response["X-Source-Revision"], SYSTEM_VERSION) + self.assertEqual(response["X-Source-Revision"], SYSTEM_VERSION) self.assertEqual(response["X-Source-Revision"], get_env_variable("SYSTEM_VERSION")) cache.clear() From 275c1ee73eb7fa36707b55f8f63ad9e0b63be5d8 Mon Sep 17 00:00:00 2001 From: David Mejia Date: Fri, 25 Aug 2023 15:31:30 -0400 Subject: [PATCH 208/220] check if SHORT and LONG indices exist --- common/data_refinery_common/rna_seq.py | 15 +++++++++------ 1 file changed, 9 insertions(+), 6 deletions(-) diff --git a/common/data_refinery_common/rna_seq.py b/common/data_refinery_common/rna_seq.py index a9aee68cc..dc9137bb9 100644 --- a/common/data_refinery_common/rna_seq.py +++ b/common/data_refinery_common/rna_seq.py @@ -28,13 +28,16 @@ EARLY_TXIMPORT_MIN_PERCENT = 0.80 -def get_latest_organism_index(organism): +def get_latest_organism_indices(organism): # Salmon version gets saved as what salmon outputs, which includes this prefix. current_salmon_version = "salmon " + get_env_variable("SALMON_VERSION", "0.13.1") + indices = OrganismIndex.objects.filter( + salmon_version=current_salmon_version, organism=organism + ).order_by("-created_at") + return ( - OrganismIndex.objects.filter(salmon_version=current_salmon_version, organism=organism) - .order_by("-created_at") - .first() + indices.filter(index_type="TRANSCRIPTOME_LONG").first(), + indices.filter(index_type="TRANSCRIPTOME_SHORT").first(), ) @@ -45,7 +48,7 @@ def get_tximport_inputs_if_eligible(experiment: Experiment, is_tximport_job: boo """ organism_indices = {} for organism in experiment.organisms.all(): - organism_indices[organism.id] = get_latest_organism_index(organism) + organism_indices[organism.id] = get_latest_organism_indices(organism) good_quant_files = [] num_unprocessable_samples = 0 @@ -58,7 +61,7 @@ def get_tximport_inputs_if_eligible(experiment: Experiment, is_tximport_job: boo and sample.most_recent_quant_file.s3_key is not None ): sample_organism_index = sample.most_recent_quant_file.result.organism_index - if sample_organism_index == organism_indices[sample.organism.id]: + if sample_organism_index in organism_indices[sample.organism.id]: good_quant_files.append(sample.most_recent_quant_file) num_quantified = len(good_quant_files) From 57ae90e961a8356b70d275caa160b656cf42939c Mon Sep 17 00:00:00 2001 From: Arkadii Yakovets Date: Fri, 25 Aug 2023 15:10:25 -0700 Subject: [PATCH 209/220] Update batch job definitions clean up process - Narrow down expected exceptions for batch job queue deletion - Use nextToken for 100+ duplicate entries cases - Add `create_qn_target.json` to the list of fixed RAM jobs --- infrastructure/delete_batch_job_queue.py | 11 ++++-- infrastructure/deploy.sh | 2 +- .../deregister_batch_job_definitions.py | 39 ++++++++++++------- infrastructure/destroy_terraform.sh | 2 +- scripts/format_batch_with_env.sh | 2 +- 5 files changed, 35 insertions(+), 21 deletions(-) diff --git a/infrastructure/delete_batch_job_queue.py b/infrastructure/delete_batch_job_queue.py index 55602cc94..911486148 100644 --- a/infrastructure/delete_batch_job_queue.py +++ b/infrastructure/delete_batch_job_queue.py @@ -2,19 +2,22 @@ from time import sleep import boto3 +from botocore.exceptions import ClientError -AWS_REGION = os.environ["AWS_REGION"] AWS_BATCH_QUEUE_ALL_NAMES = os.environ["REFINEBIO_JOB_QUEUE_ALL_NAMES"].split(",") -batch = boto3.client("batch", region_name=AWS_REGION) +batch = boto3.client("batch", region_name=os.environ["AWS_REGION"]) # First disable each job queue. for batch_queue_name in AWS_BATCH_QUEUE_ALL_NAMES: try: batch.update_job_queue(jobQueue=batch_queue_name, state="DISABLED") - except Exception as e: + except ClientError as e: # If the job queue doesn't exist, that's cool, we were trying to delete it anyway. - pass + if str(e).endswith(" does not exist."): + pass + else: + raise e # Then wait for each one to be disabled so it can be deleted. for batch_queue_name in AWS_BATCH_QUEUE_ALL_NAMES: diff --git a/infrastructure/deploy.sh b/infrastructure/deploy.sh index 3c9203187..5f4808bd7 100755 --- a/infrastructure/deploy.sh +++ b/infrastructure/deploy.sh @@ -256,7 +256,7 @@ python3 delete_batch_job_queue.py python3 deregister_batch_job_definitions.py # Re-register Batch jobs (skip those that end in .tpl) -echo "Registering new job specifications.." +echo "Registering new job specifications..." export AWS_DEFAULT_REGION=$AWS_REGION # SC2010: Don't use ls | grep. Use a glob or a for loop with a condition to allow non-alphanumeric filenames. # We are using a glob, but we want to limit it to a specific directory. Seems like an over aggressive check. diff --git a/infrastructure/deregister_batch_job_definitions.py b/infrastructure/deregister_batch_job_definitions.py index 552175d21..7d9d945c6 100644 --- a/infrastructure/deregister_batch_job_definitions.py +++ b/infrastructure/deregister_batch_job_definitions.py @@ -2,25 +2,36 @@ import boto3 -AWS_REGION = os.environ["AWS_REGION"] - -batch = boto3.client("batch", region_name=AWS_REGION) +batch = boto3.client("batch", region_name=os.environ["AWS_REGION"]) # TODO: stop repeating this construction everywhere. Just set it once somewhere. JOB_DEFINITION_PREFIX = os.environ["USER"] + "_" + os.environ["STAGE"] + "_" -job_definition_files = os.listdir("batch-job-templates") - -job_definition_list = list( - {JOB_DEFINITION_PREFIX + job_def.upper().split(".")[0] for job_def in job_definition_files} +job_names = ( + JOB_DEFINITION_PREFIX + batch_job_template.upper().split(".")[0] + for batch_job_template in os.listdir("batch-job-templates") ) +nextToken = "" # Have to go one by one because providing a list of job names doesn't work: # https://github.com/boto/boto3/issues/2908 -for job_definition in job_definition_list: - job_definitions = batch.describe_job_definitions( - jobDefinitionName=job_definition, status="ACTIVE" - ) - # There can be multiple revisions per job definition. We want them all gone. - for job_definition_revision in job_definitions["jobDefinitions"]: - batch.deregister_job_definition(jobDefinition=job_definition_revision["jobDefinitionArn"]) +for job_name in sorted(job_names): + while True: + data = { + "jobDefinitionName": job_name, + "maxResults": 100, + "status": "ACTIVE", + } + if nextToken: + data["nextToken"] = nextToken + + response = batch.describe_job_definitions(**data) + nextToken = response.get("nextToken", "") + + job_definitions = response.get("jobDefinitions") + if not job_definitions: + break + + # There can be multiple revisions per job definition. We want them all gone. + for job_definition in job_definitions: + batch.deregister_job_definition(jobDefinition=job_definition["jobDefinitionArn"]) diff --git a/infrastructure/destroy_terraform.sh b/infrastructure/destroy_terraform.sh index 4329cf885..24b1b98df 100755 --- a/infrastructure/destroy_terraform.sh +++ b/infrastructure/destroy_terraform.sh @@ -71,7 +71,7 @@ fi terraform destroy -var-file="environments/$env.tfvars" -# These aren't managed by terraform so we have to deregistr them manually.. +# These aren't managed by terraform so we have to deregistr them manually. export USER="$TF_VAR_user" export STAGE="$TF_VAR_stage" export AWS_REGION="$TF_VAR_region" diff --git a/scripts/format_batch_with_env.sh b/scripts/format_batch_with_env.sh index 81d6e6169..accc7cc83 100755 --- a/scripts/format_batch_with_env.sh +++ b/scripts/format_batch_with_env.sh @@ -170,7 +170,7 @@ if [ "$project" = "workers" ]; then FILETYPE=".json" OUTPUT_FILE="$OUTPUT_BASE$FILETYPE" - NO_RAM_JOB_FILES="smasher.json tximport.json qn_dispatcher.json janitor.json" + NO_RAM_JOB_FILES="create_qn_target.json smasher.json tximport.json qn_dispatcher.json janitor.json" if [ "$OUTPUT_FILE" = "downloader.json" ]; then rams="1024 4096 16384" From 54afa48292107b7a0b8ccd43ef1822138f65c5fe Mon Sep 17 00:00:00 2001 From: Arkadii Yakovets Date: Fri, 25 Aug 2023 16:48:26 -0700 Subject: [PATCH 210/220] Increase launch templates /dev/xvda volume size --- infrastructure/batch/launch_templates.tf | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/infrastructure/batch/launch_templates.tf b/infrastructure/batch/launch_templates.tf index a221c683e..cac79476d 100644 --- a/infrastructure/batch/launch_templates.tf +++ b/infrastructure/batch/launch_templates.tf @@ -6,7 +6,7 @@ resource "aws_launch_template" "data_refinery_worker" { block_device_mappings { device_name = "/dev/xvda" ebs { - volume_size = 64 + volume_size = 128 encrypted = true delete_on_termination = true } @@ -43,7 +43,7 @@ resource "aws_launch_template" "data_refinery_compendia" { block_device_mappings { device_name = "/dev/xvda" ebs { - volume_size = 64 + volume_size = 128 encrypted = true delete_on_termination = true } From 7844f1e601d841e80bd5f9d26bcebc66cfb6fd9f Mon Sep 17 00:00:00 2001 From: Jaclyn Taroni <19534205+jaclyn-taroni@users.noreply.github.com> Date: Mon, 28 Aug 2023 12:49:37 -0400 Subject: [PATCH 211/220] Add new airway pathogens to organism-strain mapping file --- config/organism_strain_mapping.csv | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/config/organism_strain_mapping.csv b/config/organism_strain_mapping.csv index 7d8a7a3f6..7ec9ce5dd 100644 --- a/config/organism_strain_mapping.csv +++ b/config/organism_strain_mapping.csv @@ -2,3 +2,8 @@ organism,ensembl_division,strain,assembly PSEUDOMONAS_AERUGINOSA,EnsemblBacteria,PAO1,ASM676v1 CANDIDA_ALBICANS,EnsemblFungi,SC5314,Cand_albi_SC5314_V4 ESCHERICHIA_COLI,EnsemblBacteria,ATCC 25922,Escherichia coli ATCC 25922 +STAPHYLOCOCCUS_AUREUS,EnsemblBacteria,USA300_FPR3757,ASM1346v1 +STREPTOCOCCUS_PNEUMONIAE,EnsemblBacteria,TIGR4 ATCC BAA-334,ASM688v1 +STENOTROPHOMONAS_MALTOPHILIA,EnsemblBacteria,K279a,ASM7248v1 +ASPERGILLUS_FUMIGATUS,EnsemblFungi,Af293,ASM265v1 +KLEBSIELLA_PNEUMONIAE,EnsemblBacteria,ATCC 700721 MGH 78578,ASM1630v1 From de3c21466c6c2e78c712c59d7f6cdc923924cc67 Mon Sep 17 00:00:00 2001 From: Arkadii Yakovets Date: Mon, 28 Aug 2023 12:01:16 -0700 Subject: [PATCH 212/220] Rename illumina job template Make it consistent with the job name --- .../{illumina.tpl.json => illumina_to_pcl.tpl.json} | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename workers/batch-job-templates/{illumina.tpl.json => illumina_to_pcl.tpl.json} (100%) diff --git a/workers/batch-job-templates/illumina.tpl.json b/workers/batch-job-templates/illumina_to_pcl.tpl.json similarity index 100% rename from workers/batch-job-templates/illumina.tpl.json rename to workers/batch-job-templates/illumina_to_pcl.tpl.json From e08469bbdd9a3dd2cd11343c19befc0e6de2b9fc Mon Sep 17 00:00:00 2001 From: Arkadii Yakovets Date: Mon, 28 Aug 2023 17:59:19 -0700 Subject: [PATCH 213/220] Remove remote docker builder for Github tests Move Foreman tests to larger runners. --- .github/workflows/config.yml | 2 +- scripts/common.sh | 42 ++++++------------------------------ 2 files changed, 8 insertions(+), 36 deletions(-) diff --git a/.github/workflows/config.yml b/.github/workflows/config.yml index 41e956897..851201cf7 100644 --- a/.github/workflows/config.yml +++ b/.github/workflows/config.yml @@ -292,7 +292,7 @@ jobs: IMAGES: migrations foreman needs: - test_api - runs-on: ubuntu-latest + runs-on: ubuntu-latest-m steps: - uses: actions/checkout@v3 diff --git a/scripts/common.sh b/scripts/common.sh index da6d677b0..14931c6df 100755 --- a/scripts/common.sh +++ b/scripts/common.sh @@ -75,41 +75,13 @@ run_tests_with_coverage() { # Set the builder as currently used. set_up_docker_builder() { if [ -z "$DOCKER_BUILDER" ]; then - echo "Setting up refine.bio Docker builder." - - if test "$GITHUB_ACTION"; then - echo "$INSTANCE_SSH_KEY" >infrastructure/data-refinery-key.pem - chmod 600 infrastructure/data-refinery-key.pem - - # shellcheck disable=SC2046 - eval $(ssh-agent) - ssh-add infrastructure/data-refinery-key.pem - - if [ ! -d ~/.ssh ]; then - mkdir -m 700 ~/.ssh - fi - cat >~/.ssh/config </dev/null || - true - else - DOCKER_BUILDER="refinebio_local_builder" - echo "Creating Docker builder $DOCKER_BUILDER." - docker buildx create \ - --driver=docker-container \ - --name="$DOCKER_BUILDER" \ - --platform=linux/amd64 2>/dev/null || - true - fi + DOCKER_BUILDER="refinebio_local_builder" + echo "Creating Docker builder $DOCKER_BUILDER." + docker buildx create \ + --driver=docker-container \ + --name="$DOCKER_BUILDER" \ + --platform=linux/amd64 2>/dev/null || + true fi docker buildx use "$DOCKER_BUILDER" From 8462803a0446c5fe488904af8930f3f0872f9664 Mon Sep 17 00:00:00 2001 From: Dom <97384583+tosemml@users.noreply.github.com> Date: Tue, 29 Aug 2023 01:30:19 -0700 Subject: [PATCH 214/220] use list comp --- foreman/data_refinery_foreman/foreman/utils.py | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/foreman/data_refinery_foreman/foreman/utils.py b/foreman/data_refinery_foreman/foreman/utils.py index 681424780..93212c3f4 100644 --- a/foreman/data_refinery_foreman/foreman/utils.py +++ b/foreman/data_refinery_foreman/foreman/utils.py @@ -66,10 +66,10 @@ def check_hung_jobs(object_list): batch_jobs = batch.describe_jobs(jobs=job_ids)["jobs"] running_job_batch_ids = {job["jobId"] for job in batch_jobs if job["status"] == "RUNNING"} - - for job in page: - if job.batch_job_id and job.batch_job_id not in running_job_batch_ids: - hung_jobs.append(job) + hung_jobs += [ + job for job in page + if job.batch_job_id and job.batch_job_id not in running_job_batch_ids + ] return hung_jobs From 3e102e4447b343c598659aa9ca04287423ddca80 Mon Sep 17 00:00:00 2001 From: Dom <97384583+tosemml@users.noreply.github.com> Date: Tue, 29 Aug 2023 01:32:08 -0700 Subject: [PATCH 215/220] use list comp --- foreman/data_refinery_foreman/foreman/utils.py | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/foreman/data_refinery_foreman/foreman/utils.py b/foreman/data_refinery_foreman/foreman/utils.py index 93212c3f4..1460f0ec0 100644 --- a/foreman/data_refinery_foreman/foreman/utils.py +++ b/foreman/data_refinery_foreman/foreman/utils.py @@ -91,9 +91,6 @@ def check_lost_jobs(object_list): # have yet gotten to that point. ignore = ["SUBMITTED", "PENDING", "RUNNABLE", "STARTING", "RUNNING"] ignore_job_batch_ids = {job["jobId"] for job in batch_jobs if job["status"] in ignore} - - for job in page: - if not job.batch_job_id or job.batch_job_id not in ignore_job_batch_ids: - lost_jobs.append(job) + lost_jobs += [job for job in page if not job.batch_job_id or job.batch_job_id not in ignore_job_batch_ids] return lost_jobs From e31b4fae840126099b469aa3b9d0f892f3c34b1f Mon Sep 17 00:00:00 2001 From: Dom <97384583+tosemml@users.noreply.github.com> Date: Tue, 29 Aug 2023 01:35:39 -0700 Subject: [PATCH 216/220] indentation --- foreman/data_refinery_foreman/foreman/utils.py | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/foreman/data_refinery_foreman/foreman/utils.py b/foreman/data_refinery_foreman/foreman/utils.py index 1460f0ec0..c88be2998 100644 --- a/foreman/data_refinery_foreman/foreman/utils.py +++ b/foreman/data_refinery_foreman/foreman/utils.py @@ -91,6 +91,9 @@ def check_lost_jobs(object_list): # have yet gotten to that point. ignore = ["SUBMITTED", "PENDING", "RUNNABLE", "STARTING", "RUNNING"] ignore_job_batch_ids = {job["jobId"] for job in batch_jobs if job["status"] in ignore} - lost_jobs += [job for job in page if not job.batch_job_id or job.batch_job_id not in ignore_job_batch_ids] + lost_jobs += [ + job for job in page + if not job.batch_job_id or job.batch_job_id not in ignore_job_batch_ids + ] return lost_jobs From 123c59066af09e9bb99463d9c98d257b4f0e2e79 Mon Sep 17 00:00:00 2001 From: Dom <97384583+tosemml@users.noreply.github.com> Date: Tue, 29 Aug 2023 01:36:57 -0700 Subject: [PATCH 217/220] remove space --- foreman/data_refinery_foreman/foreman/utils.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/foreman/data_refinery_foreman/foreman/utils.py b/foreman/data_refinery_foreman/foreman/utils.py index c88be2998..c368f647a 100644 --- a/foreman/data_refinery_foreman/foreman/utils.py +++ b/foreman/data_refinery_foreman/foreman/utils.py @@ -67,7 +67,7 @@ def check_hung_jobs(object_list): running_job_batch_ids = {job["jobId"] for job in batch_jobs if job["status"] == "RUNNING"} hung_jobs += [ - job for job in page + job for job in page if job.batch_job_id and job.batch_job_id not in running_job_batch_ids ] @@ -92,7 +92,7 @@ def check_lost_jobs(object_list): ignore = ["SUBMITTED", "PENDING", "RUNNABLE", "STARTING", "RUNNING"] ignore_job_batch_ids = {job["jobId"] for job in batch_jobs if job["status"] in ignore} lost_jobs += [ - job for job in page + job for job in page if not job.batch_job_id or job.batch_job_id not in ignore_job_batch_ids ] From 09dd604c88229e8b2544620389bc6de84e4f3770 Mon Sep 17 00:00:00 2001 From: Jaclyn Taroni <19534205+jaclyn-taroni@users.noreply.github.com> Date: Tue, 29 Aug 2023 10:41:43 -0400 Subject: [PATCH 218/220] Update supported_microarray_platforms.csv --- config/supported_microarray_platforms.csv | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/config/supported_microarray_platforms.csv b/config/supported_microarray_platforms.csv index eceb027c1..e1ba3db1c 100644 --- a/config/supported_microarray_platforms.csv +++ b/config/supported_microarray_platforms.csv @@ -35,7 +35,7 @@ clariomdhuman,A-GEOD-22844,y clariomshumanht,GPL24324,y clariomshuman,GPL23159,y clariomsmouse,GPL23038,y -clariomsmouse,GPL24242,y +clariomsmouseht,GPL24242,y clariomsrat,GPL23040,y drogene10st,GPL20842,y drogene10st,GPL18094,y From 6aba26483be5df38a0569fe061b9ebb235415bc0 Mon Sep 17 00:00:00 2001 From: Arkadii Yakovets Date: Tue, 29 Aug 2023 11:02:10 -0700 Subject: [PATCH 219/220] Run pre-commit --- foreman/data_refinery_foreman/foreman/utils.py | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/foreman/data_refinery_foreman/foreman/utils.py b/foreman/data_refinery_foreman/foreman/utils.py index c368f647a..f4bb6b431 100644 --- a/foreman/data_refinery_foreman/foreman/utils.py +++ b/foreman/data_refinery_foreman/foreman/utils.py @@ -67,7 +67,8 @@ def check_hung_jobs(object_list): running_job_batch_ids = {job["jobId"] for job in batch_jobs if job["status"] == "RUNNING"} hung_jobs += [ - job for job in page + job + for job in page if job.batch_job_id and job.batch_job_id not in running_job_batch_ids ] @@ -92,7 +93,8 @@ def check_lost_jobs(object_list): ignore = ["SUBMITTED", "PENDING", "RUNNABLE", "STARTING", "RUNNING"] ignore_job_batch_ids = {job["jobId"] for job in batch_jobs if job["status"] in ignore} lost_jobs += [ - job for job in page + job + for job in page if not job.batch_job_id or job.batch_job_id not in ignore_job_batch_ids ] From 1c833d3e6cc2a191a5f4f97d42ba7b88b00ec358 Mon Sep 17 00:00:00 2001 From: Arkadii Yakovets Date: Thu, 31 Aug 2023 09:34:24 -0700 Subject: [PATCH 220/220] Update smasher email templates: use new ALSF address --- .../data_refinery_workers/processors/smasher_email.html | 7 +++---- .../processors/smasher_email.min.html | 2 +- .../processors/smasher_email_error.html | 7 +++---- .../processors/smasher_email_error.min.html | 2 +- 4 files changed, 8 insertions(+), 10 deletions(-) diff --git a/workers/data_refinery_workers/processors/smasher_email.html b/workers/data_refinery_workers/processors/smasher_email.html index f5ba5710d..d3035bc4d 100644 --- a/workers/data_refinery_workers/processors/smasher_email.html +++ b/workers/data_refinery_workers/processors/smasher_email.html @@ -1840,10 +1840,9 @@

- Alex's Lemonade Stand Foundation
- 111 Presidential Blvd, Suite 203, Bala - Cynwyd, PA 19004
+ Alex’s Lemonade Stand Foundation for Childhood Cancer
+ 333 E. Lancaster Ave, #414, Wynnewood, PA 19096 USA +

diff --git a/workers/data_refinery_workers/processors/smasher_email.min.html b/workers/data_refinery_workers/processors/smasher_email.min.html index a74f8638a..b2ddd7aac 100644 --- a/workers/data_refinery_workers/processors/smasher_email.min.html +++ b/workers/data_refinery_workers/processors/smasher_email.min.html @@ -1 +1 @@ -Title




Hot off the presses!


Your dataset is ready to be downloaded.


Download Now

Terms of Use

Alex's Lemonade Stand Foundation
111 Presidential Blvd, Suite 203, Bala Cynwyd, PA 19004


+Title




Hot off the presses!


Your dataset is ready to be downloaded.


Download Now

Terms of Use

Alex’s Lemonade Stand Foundation for Childhood Cancer
333 E. Lancaster Ave, #414, Wynnewood, PA 19096 USA


diff --git a/workers/data_refinery_workers/processors/smasher_email_error.html b/workers/data_refinery_workers/processors/smasher_email_error.html index 2f43801a1..9cb43092a 100644 --- a/workers/data_refinery_workers/processors/smasher_email_error.html +++ b/workers/data_refinery_workers/processors/smasher_email_error.html @@ -1847,10 +1847,9 @@

- Alex's Lemonade Stand Foundation
- 111 Presidential Blvd, Suite 203, Bala - Cynwyd, PA 19004
+ Alex’s Lemonade Stand Foundation for Childhood Cancer
+ 333 E. Lancaster Ave, #414, Wynnewood, PA 19096 USA +

diff --git a/workers/data_refinery_workers/processors/smasher_email_error.min.html b/workers/data_refinery_workers/processors/smasher_email_error.min.html index 915cc0709..94101663b 100644 --- a/workers/data_refinery_workers/processors/smasher_email_error.min.html +++ b/workers/data_refinery_workers/processors/smasher_email_error.min.html @@ -1 +1 @@ -Title




We were unable to process your dataset


We have been notified and are looking into this problem. We apologize for the inconvenience. You can try downloading your dataset after sometime here.

If the error persists, feel free to file an issue on Github or email us at requests@ccdatalab.org with the error details below:

REPLACE_ERROR_TEXT


Terms of Use

Alex's Lemonade Stand Foundation
111 Presidential Blvd, Suite 203, Bala Cynwyd, PA 19004


+Title




We were unable to process your dataset


We have been notified and are looking into this problem. We apologize for the inconvenience. You can try downloading your dataset after sometime here.

If the error persists, feel free to file an issue on Github or email us at requests@ccdatalab.org with the error details below:

REPLACE_ERROR_TEXT


Terms of Use

Alex’s Lemonade Stand Foundation for Childhood Cancer
333 E. Lancaster Ave, #414, Wynnewood, PA 19096 USA