From c023c5c5faa8fa0f24bc89106fc2707adaf74d4a Mon Sep 17 00:00:00 2001 From: Martin Weise <martin.weise@tuwien.ac.at> Date: Fri, 17 May 2024 21:25:08 +0200 Subject: [PATCH] Documented chart --- helm/dbrepo/Chart.yaml | 7 +- helm/dbrepo/Makefile | 3 +- helm/dbrepo/README.md | 331 ++++++++---------- helm/dbrepo/charts/postgresql-ha-12.1.7.tgz | Bin 72389 -> 0 bytes helm/dbrepo/templates/analyse-deployment.yaml | 10 +- helm/dbrepo/templates/analyse-secret.yaml | 6 +- helm/dbrepo/templates/analyse-service.yaml | 2 +- helm/dbrepo/templates/data-db-secret.yaml | 2 +- helm/dbrepo/values.schema.json | 2 +- helm/dbrepo/values.yaml | 316 +++++++++++++---- 10 files changed, 408 insertions(+), 271 deletions(-) delete mode 100644 helm/dbrepo/charts/postgresql-ha-12.1.7.tgz diff --git a/helm/dbrepo/Chart.yaml b/helm/dbrepo/Chart.yaml index 51d9407d3c..587a7b3b09 100644 --- a/helm/dbrepo/Chart.yaml +++ b/helm/dbrepo/Chart.yaml @@ -28,17 +28,12 @@ dependencies: alias: datadb version: 11.0.1 repository: https://charts.bitnami.com/bitnami - condition: datasb.enabled + condition: datadb.enabled - name: mariadb-galera alias: metadatadb version: 11.0.1 repository: https://charts.bitnami.com/bitnami condition: metadatadb.enabled - - name: postgresql-ha - alias: authdb - version: 12.1.7 - repository: https://charts.bitnami.com/bitnami - condition: authdb.enabled - name: rabbitmq alias: brokerservice version: 14.0.0 diff --git a/helm/dbrepo/Makefile b/helm/dbrepo/Makefile index 51831e8e04..07c03a2806 100644 --- a/helm/dbrepo/Makefile +++ b/helm/dbrepo/Makefile @@ -3,4 +3,5 @@ all: .PHONY: build build: ## Generate Helm values schema JSON - helm schema -input ./values.yaml \ No newline at end of file + helm schema -input ./values.yaml + readme-generator-for-helm --readme README.md --values values.yaml \ No newline at end of file diff --git a/helm/dbrepo/README.md b/helm/dbrepo/README.md index 0367c53297..09372a9501 100644 --- a/helm/dbrepo/README.md +++ b/helm/dbrepo/README.md @@ -10,23 +10,24 @@ sample [`values.yaml`](https://gitlab.phaidra.org/fair-data-austria-db-repositor for your deployment and update the variables, especially `hostname`. ```bash -helm install my-release "oci://s210.dl.hpc.tuwien.ac.at/dbrepo/helm" --values ./values.yaml --version "__CHARTVERSION__" +helm install my-release "oci://s210.dl.hpc.tuwien.ac.at/dbrepo/helm" --values ./values.yaml --version "1.4.3" ``` ## Prerequisites * Kubernetes 1.24+ -* Kubernetes 3.8.0+ * Optional PV provisioner support in the underlying infrastructure (for persistence). -* Optional ingress support in the underlying infrastructure: e.g. [NGINX](https://docs.nginx.com/nginx-ingress-controller/) (for the UI). -* Optional certificate provisioner support in the underlying infrastructure: e.g. [cert-manager](https://cert-manager.io/) (for production use). +* Optional ingress support in the underlying infrastructure: + e.g. [NGINX](https://docs.nginx.com/nginx-ingress-controller/) (for the UI). +* Optional certificate provisioner support in the underlying infrastructure: + e.g. [cert-manager](https://cert-manager.io/) (for production use). ## Installing the Chart To install the chart with the release name `my-release`: ```bash -helm install my-release "oci://s210.dl.hpc.tuwien.ac.at/dbrepo/helm" --values ./values.yaml --version "__CHARTVERSION__" +helm install my-release "oci://s210.dl.hpc.tuwien.ac.at/dbrepo/helm" --values ./values.yaml --version "1.4.3" ``` The command deploys DBRepo on the Kubernetes cluster in the default configuration. The Parameters section lists the @@ -46,216 +47,178 @@ The command removes all the Kubernetes components associated with the chart and ### Common parameters -| Name | Description | Value | -|-----------------|---------------------------------------|-----------------| -| `namespace` | Namespace which DBRepo is running in. | `""` | -| `hostname` | The hostname for ingress rules. | `""` | -| `strategyType` | Deployments update strategy. | `RollingUpdate` | -| `clusterDomain` | Internal cluster domain. | `cluster.local` | +| Name | Description | Value | +| --------------- | ---------------------------------- | --------------------- | +| `namespace` | The namespace to install the chart | `dbrepo` | +| `hostname` | The hostname. | `example.com` | +| `gateway` | The gateway endpoint. | `https://example.com` | +| `strategyType` | The image pull | `RollingUpdate` | +| `clusterDomain` | The cluster domain. | `cluster.local` | -### Metadata Database - -The Metadata Database uses the [Bitnami MariaDB Galera](https://artifacthub.io/packages/helm/bitnami/mariadb-galera) -Helm chart. See their documentation for the remaining overridden values. - -| Name | Description | Value | -|----------------------------|-------------------------------------------|---------------| -| `metadataDb.host` | Hostname. | `metadata-db` | -| `metadataDb.jdbcExtraArgs` | Extra arguments for the JDBC connections. | `""` | - -### Authentication Service +### Internal Admin User -The Auth Service uses the [Bitnami Keycloak](https://artifacthub.io/packages/helm/bitnami/keycloak) Helm chart. See -their documentation for the remaining overridden values. +| Name | Description | Value | +| ---------------- | ---------------------------- | ------- | +| `admin.username` | The internal admin username. | `admin` | +| `admin.password` | The internal admin password. | `admin` | -| Name | Description | Value | -|-----------------------------|-----------------------------------------------------------------|------------------------------------| -| `authService.client.id` | Client id. This value is publicly known. | `dbrepo-client` | -| `authService.client.secret` | Client secret. This value should never be known outside DBRepo. | `MUwRc7yfXSJwX8AdRMWaQC3Nep1VjwgG` | - -### Auth Database - -The Auth Database uses the [Bitnami PostgreSQL HA](https://artifacthub.io/packages/helm/bitnami/postgresql-ha) Helm -chart. See their documentation for the remaining overridden values. +### Metadata Database -| Name | Description | Value | -|---------------|--------------------------------------|------------------| -| `authDb.host` | Hostname. Needed for other services. | `auth-db-pgpool` | -| `authDb.port` | Port. Needed for other services. | `5432` | +| Name | Description | Value | +| -------------------------------- | -------------------------------------------------------------- | ------------- | +| `metadatadb.enabled` | Enable the Metadata Database. | `true` | +| `metadatadb.image.debug` | Set the logging level to `trace`. Otherwise, set to `info`. | `false` | +| `metadatadb.host` | The hostname for the microservices. | `metadata-db` | +| `metadatadb.rootUser.user` | The root username. | `root` | +| `metadatadb.rootUser.password` | The root user password. | `dbrepo` | +| `metadatadb.jdbcExtraArgs` | The extra arguments for JDBC connections in the microservices. | `""` | +| `metadatadb.db.name` | The database name. | `fda` | +| `metadatadb.persistence.enabled` | Enable persistent storage. Requires PV-provisioner. | `false` | +| `metadatadb.replicaCount` | The number of replicas, should be uneven (2n+1). | `3` | + +### Auth Service + +| Name | Description | Value | +| -------------------------------- | ------------------------------------------------------------ | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `authservice.enabled` | Enable the Auth Service. | `true` | +| `authservice.image.debug` | Set the logging level to `trace`. Otherwise, set to `info`. | `false` | +| `authservice.endpoint` | The hostname for the microservices. | `http://auth-service` | +| `authservice.auth.adminUser` | The admin username. | `fda` | +| `authservice.auth.adminPassword` | The admin user password. | `fda` | +| `authservice.jwt.pubkey` | The JWT public key from the `dbrepo-client`. | `MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAqqnHQ2BWWW9vDNLRCcxD++xZg/16oqMo/c1l+lcFEjjAIJjJp/HqrPYU/U9GvquGE6PbVFtTzW1KcKawOW+FJNOA3CGo8Q1TFEfz43B8rZpKsFbJKvQGVv1Z4HaKPvLUm7iMm8Hv91cLduuoWx6Q3DPe2vg13GKKEZe7UFghF+0T9u8EKzA/XqQ0OiICmsmYPbwvf9N3bCKsB/Y10EYmZRb8IhCoV9mmO5TxgWgiuNeCTtNCv2ePYqL/U0WvyGFW0reasIK8eg3KrAUj8DpyOgPOVBn3lBGf+3KFSYi+0bwZbJZWqbC/Xlk20Go1YfeJPRIt7ImxD27R/lNjgDO/MwIDAQAB` | +| `authservice.tls.enabled` | Enable TLS/SSL communication. Required for HTTPS. | `true` | +| `authservice.tls.existingSecret` | The secret containing the `tls.crt`, `tls.key` and `ca.crt`. | `ingress-cert` | +| `authservice.tls.usePem` | Use PEM certificates as input instead of PKS12/JKS stores. | `true` | +| `authservice.metrics.enabled` | Enable the Prometheus metrics export sidecar container. | `false` | +| `authservice.client.id` | The client id for the microservices. | `dbrepo-client` | +| `authservice.client.secret` | The client secret for the microservices. | `MUwRc7yfXSJwX8AdRMWaQC3Nep1VjwgG` | ### Data Database -The Data Database uses the [Bitnami MariaDB Galera](https://artifacthub.io/packages/helm/bitnami/mariadb-galera) -Helm chart. See their documentation for the remaining overridden values. It is important to note that the Data Database -uses a sidecar to import/export files from the Storage Service. +| Name | Description | Value | +| -------------------------- | ----------------------------------------------------------- | -------- | +| `datadb.enabled` | Enable the Data Database. | `true` | +| `datadb.image.debug` | Set the logging level to `trace`. Otherwise, set to `info`. | `false` | +| `datadb.rootUser.user` | The root username. | `root` | +| `datadb.rootUser.password` | The root user password. | `dbrepo` | +| `datadb.replicaCount` | The number of replicas, should be uneven (2n+1). | `3` | ### Search Database -The Search Database uses -the [OpenSearch](https://artifacthub.io/packages/helm/opensearch-project-helm-charts/opensearch) Helm -chart. See their documentation for the remaining overridden values. - -| Name | Description | Value | -|---------------------|--------------------------------------|-------------| -| `searchdb.host` | Hostname. Needed for other services. | `search-db` | -| `searchdb.port` | Port. Needed for other services. | `9200` | -| `searchdb.username` | Username. Needed for other services. | `admin` | -| `searchdb.password` | Password. Needed for other services. | `admin` | - -### Search Database Dashboard - -The Search Database Dashboard uses -the [OpenSearch](https://artifacthub.io/packages/helm/opensearch-project-helm-charts/opensearch-dashboards) Helm -chart. See their documentation for the remaining overridden values. +| Name | Description | Value | +| ------------------------------ | --------------------------------------------------- | ----------- | +| `searchdb.enabled` | Enable the Search Database. | `true` | +| `searchdb.host` | The hostname for the microservices. | `search-db` | +| `searchdb.port` | The port for the microservices. | `9200` | +| `searchdb.username` | The admin username. | `admin` | +| `searchdb.password` | The admin user password. | `admin` | +| `searchdb.replicas` | The number of replicas. | `3` | +| `searchdb.persistence.enabled` | Enable persistent storage. Requires PV-provisioner. | `true` | ### Upload Service -| Name | Description | Value | -|----------------------------------|----------------------------------------|-------------------| -| `uploadService.enabled` | Enables/disabled the deployment. | `true` | -| `uploadService.image.registry` | Registry to pull the image | `docker.io` | -| `uploadService.image.repository` | Repository to pull the image | `tusproject/tusd` | -| `uploadService.image.tag` | Tag of the image. | `v1.12` | -| `uploadService.replicaCount` | Number of replicas for the deployment. | `2` | +| Name | Description | Value | +| ---------------------------- | -------------------------- | ------ | +| `uploadservice.enabled` | Enable the Upload Service. | `true` | +| `uploadservice.replicaCount` | The number of replicas. | `2` | ### Broker Service -The Broker Service uses the [Bitnami RabbitMQ](https://artifacthub.io/packages/helm/bitnami/rabbitmq) -Helm chart. See their documentation for the remaining overridden values. - -| Name | Description | Value | -|-----------------------------------|-------------------------------------------------------------------------|-------------------------------| -| `brokerService.url` | Admin API endpoint. Needed for other services. | `http://broker-service:15672` | -| `brokerService.host` | Service hostname. Needed for other services. | `broker-service` | -| `brokerService.port` | Service port. Needed for other services. | `5672` | -| `brokerService.virtualHost` | Virtual host on RabbitMQ. Needed for other services. | `dbrepo` | -| `brokerService.queueName` | Queue name on RabbitMQ. Needed for other services. | `dbrepo` | -| `brokerService.exchangeName` | Exchange name on RabbitMQ. Needed for other services. | `dbrepo` | -| `brokerService.routingKey` | Route binding for queue to exchange defined. Needed for other services. | `dbrepo.#` | -| `brokerService.connectionTimeout` | Connection timeout. Needed for other services. | `60000` | +| Name | Description | Value | +| ----------------------------------- | ------------------------------------------------------------------------------- | ----------------------------- | +| `brokerservice.enabled` | Enable the Broker Service. | `true` | +| `brokerservice.endpoint` | The management api endpoint for the microservices. | `http://broker-service:15672` | +| `brokerservice.host` | The hostname for the microservices. | `broker-service` | +| `brokerservice.port` | The port for the microservices. | `5672` | +| `brokerservice.virtualHost` | The default virtual host name. | `dbrepo` | +| `brokerservice.queueName` | The default queue name. | `dbrepo` | +| `brokerservice.exchangeName` | The default exchange name. | `dbrepo` | +| `brokerservice.routingKey` | The default routing key binding from the default queue to the default exchange. | `dbrepo.#` | +| `brokerservice.connectionTimeout` | The connection timeout in ms. | `60000` | +| `brokerservice.persistence.enabled` | Enable persistent storage. Requires PV-provisioner. | `false` | +| `brokerservice.replicaCount` | The number of replicas. | `2` | ### Analyse Service -| Name | Description | Value | -|-----------------------------------|----------------------------------------|----------------------------| -| `analyseService.enabled` | Enables/disabled the deployment. | `true` | -| `analyseService.image.registry` | Registry to pull the image | `s210.dl.hpc.tuwien.ac.at` | -| `analyseService.image.repository` | Repository to pull the image | `dbrepo/analyse-service` | -| `analyseService.image.tag` | Tag of the image. | `1.4.1` | -| `analyseService.image.pullPolicy` | Image pull policy on deployments | `Always` | -| `analyseService.image.debug` | Enables/disabled the debug logging. | `false` | -| `analyseService.replicaCount` | Number of replicas for the deployment. | `2` | +| Name | Description | Value | +| ----------------------------- | ----------------------------------------------------- | ------------------------------- | +| `analyseservice.enabled` | Enable the Broker Service. | `true` | +| `analyseservice.s3.endpoint` | The S3-capable endpoint the microservice connects to. | `http://storageservice-s3:9000` | +| `analyseservice.replicaCount` | The number of replicas. | `2` | ### Metadata Service -| Name | Description | Value | -|--------------------------------------------|----------------------------------------------------------------------------------|----------------------------| -| `metadataService.enabled` | Enables/disabled the deployment. | `true` | -| `metadataService.image.registry` | Registry to pull the image | `s210.dl.hpc.tuwien.ac.at` | -| `metadataService.image.repository` | Repository to pull the image | `dbrepo/metadata-service` | -| `metadataService.image.tag` | Tag of the image. | `1.4.1` | -| `metadataService.image.pullPolicy` | Image pull policy on deployments | `Always` | -| `metadataService.image.debug` | Enables/disabled the debug logging. | `false` | -| `metadataService.adminEmail` | E-Mail address of the administrator displayed for OAI-PMH. | `noreply@example.com` | -| `metadataService.authService.url` | Url to the Auth Service. | `http://auth-service` | -| `metadataService.website` | Url to redirect PIDs to. | `http://example.com` | -| `metadataService.repositoryName` | Repository name for OAI-PMH. | `Database Repository` | -| `metadataService.datacite.enabled` | Enable/disable DataCite Fabrica DOI minting. | `false` | -| `metadataService.datacite.url` | DataCite Fabrica API endpoint. | `https://api.datacite.org` | -| `metadataService.datacite.prefix` | DataCite Fabrica DOI prefix. | `""` | -| `metadataService.datacite.username` | DataCite Fabrica API username. | `""` | -| `metadataService.datacite.password` | DataCite Fabrica API password. | `""` | -| `metadataService.rates.deleteStaleFiles` | Interval rate to delete stale files in the Storage Service. | `60` | -| `metadataService.rates.mirror` | Interval rate to mirror to the Search Database. | `60` | -| `metadataService.rates.obtainMetadata` | Interval rate to obtain metadata from the Data Database. | `60` | -| `metadataService.rates.deleteStaleQueries` | Interval rate to delete stale queries from the Query Store in the Data Database. | `60` | -| `metadataService.replicaCount` | Number of replicas for the deployment. | `2` | +| Name | Description | Value | +| ------------------------------------------ | --------------------------------------------------------------------- | ------------------------------- | +| `metadataservice.enabled` | Enable the Metadata Service. | `true` | +| `metadataservice.admin.email` | The OAI-PMH exposed admin e-mail. | `noreply@example.com` | +| `metadataservice.deletedRecord` | The OAI-PMH exposed delete policy. | `permanent` | +| `metadataservice.repositoryName` | The OAI-PMH exposed repository name. | `Database Repository` | +| `metadataservice.granularity` | The OAI-PMH exposed record granularity. | `YYYY-MM-DDThh:mm:ssZ` | +| `metadataservice.datacite.enabled` | Enable the DataCite account for minting DOIs. | `false` | +| `metadataservice.datacite.url` | The DataCite api endpoint url. | `https://api.datacite.org` | +| `metadataservice.datacite.prefix` | The DataCite prefix. | `""` | +| `metadataservice.datacite.username` | The DataCite api username. | `""` | +| `metadataservice.datacite.password` | The DataCite api user password. | `""` | +| `metadataservice.sparql.connectionTimeout` | The connection timeout for sparql queries fetching remote data in ms. | `10000` | +| `metadataservice.s3.endpoint` | The S3-capable endpoint the microservice connects to. | `http://storageservice-s3:9000` | +| `metadataservice.s3.auth.username` | The S3-capable endpoint username (or access key id). | `seaweedfsadmin` | +| `metadataservice.s3.auth.password` | The S3-capable endpoint user password (or access key secret). | `seaweedfsadmin` | +| `metadataservice.replicaCount` | The number of replicas. | `1` | ### Data Service -| Name | Description | Value | -|-------------------------------------|--------------------------------------------------|------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| -| `dataService.enabled` | Enables/disabled the deployment. | `true` | -| `dataService.image.registry` | Registry to pull the image | `s210.dl.hpc.tuwien.ac.at` | -| `dataService.image.repository` | Repository to pull the image | `dbrepo/data-service` | -| `dataService.image.tag` | Tag of the image. | `1.4.1` | -| `dataService.image.pullPolicy` | Image pull policy on deployments | `Always` | -| `dataService.image.debug` | Enables/disabled the debug logging. | `false` | -| `dataService.jwt.pubkey` | The JWT pubkey to verify JWT signature. | `MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAqqnHQ2BWWW9vDNLRCcxD++xZg/16oqMo/c1l+lcFEjjAIJjJp/HqrPYU/U9GvquGE6PbVFtTzW1KcKawOW+FJNOA3CGo8Q1TFEfz43B8rZpKsFbJKvQGVv1Z4HaKPvLUm7iMm8Hv91cLduuoWx6Q3DPe2vg13GKKEZe7UFghF+0T9u8EKzA/XqQ0OiICmsmYPbwvf9N3bCKsB/Y10EYmZRb8IhCoV9mmO5TxgWgiuNeCTtNCv2ePYqL/U0WvyGFW0reasIK8eg3KrAUj8DpyOgPOVBn3lBGf+3KFSYi+0bwZbJZWqbC/Xlk20Go1YfeJPRIt7ImxD27R/lNjgDO/MwIDAQAB` | -| `dataService.consumerConcurrentMin` | The number of concurrent consumers (minimum). | `1` | -| `dataService.consumerConcurrentMax` | The number of concurrent consumers (maximum). | `5` | -| `dataService.requeueRejected` | Requeue rejected tuples into the Broker Service. | `false` | -| `dataService.replicaCount` | Number of replicas for the deployment. | `2` | +| Name | Description | Value | +| ----------------------------------- | -------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------- | +| `dataservice.enabled` | Enable the Metadata Service. | `true` | +| `dataservice.endpoint` | The endpoint for the microservices. | `http://data-service` | +| `dataservice.grant.read` | The default database permissions for users with read access. | `SELECT` | +| `dataservice.grant.write` | The default database permissions for users with write access. | `SELECT, CREATE, CREATE VIEW, CREATE ROUTINE, CREATE TEMPORARY TABLES, LOCK TABLES, INDEX, TRIGGER, INSERT, UPDATE, DELETE` | +| `dataservice.s3.endpoint` | The S3-capable endpoint the microservice connects to. | `http://storageservice-s3:9000` | +| `dataservice.s3.auth.username` | The S3-capable endpoint username (or access key id). | `seaweedfsadmin` | +| `dataservice.s3.auth.password` | The S3-capable endpoint user password (or access key secret). | `seaweedfsadmin` | +| `dataservice.consumerConcurrentMin` | The minimum broker service consumer number. | `1` | +| `dataservice.consumerConcurrentMax` | The maximum broker service consumer number. | `5` | +| `dataservice.requeueRejected` | Enable re-queueing of rejected messages to the broker service. | `false` | +| `dataservice.replicaCount` | The number of replicas. | `2` | ### Search Service -| Name | Description | Value | -|----------------------------------|----------------------------------------|----------------------------| -| `searchService.enabled` | Enables/disabled the deployment. | `true` | -| `searchService.image.registry` | Registry to pull the image | `s210.dl.hpc.tuwien.ac.at` | -| `searchService.image.repository` | Repository to pull the image | `dbrepo/search-service` | -| `searchService.image.tag` | Tag of the image. | `1.4.1` | -| `searchService.image.pullPolicy` | Image pull policy on deployments | `Always` | -| `searchService.image.debug` | Enables/disabled the debug logging. | `false` | -| `searchService.replicaCount` | Number of replicas for the deployment. | `2` | +| Name | Description | Value | +| ---------------------------- | ----------------------------------- | ----------------------- | +| `searchservice.enabled` | Enable the Search Service. | `true` | +| `searchservice.endpoint` | The endpoint for the microservices. | `http://search-service` | +| `searchservice.replicaCount` | The number of replicas. | `2` | ### Storage Service -The Storage Service uses the [SeaweedFS](https://artifacthub.io/packages/helm/seaweedfs/seaweedfs) -Helm chart. See their documentation for the remaining overridden values. - -| Name | Description | Value | -|--------------------------------|---------------------------------------------|------------------| -| `storageservice.auth.username` | Username for S3. Needed for other services. | `seaweedfsadmin` | -| `storageservice.auth.password` | Password for S3. Needed for other services. | `seaweedfsadmin` | +| Name | Description | Value | +| ------------------------ | --------------------------- | ------ | +| `storageservice.enabled` | Enable the Storage Service. | `true` | ### User Interface -To replace e.g. the default logo with your organization's logo `my_logo.png`, encode it to -base64 `cat my_logo.png | base64` and create a [ConfigMap](https://kubernetes.io/docs/concepts/configuration/configmap/) -under a handy name `my-config`. - -```yaml -# my-config.yaml -apiVersion: v1 -kind: ConfigMap -metadata: - name: my-config -binaryData: - my_logo.png: | - <output from `cat my_logo.png | base64`> -``` - -Then mount it into the container: - -```yaml -# values.yaml -ui: - extraVolumes: - - name: config-map - configMap: - name: my-config - extraVolumeMounts: - - name: config-map - mountPath: /app/my_logo.png - subPath: my_logo.png - readOnly: true - ... -``` - -| Name | Description | Value | -|------------------------|---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|----------------------------| -| `ui.enabled` | Enables/disabled the deployment. | `enabled` | -| `ui.image.registry` | Registry to pull the image | `s210.dl.hpc.tuwien.ac.at` | -| `ui.image.repository` | Repository to pull the image | `dbrepo/ui` | -| `ui.image.tag` | Tag of the image. | `1.4.1` | -| `ui.image.pullPolicy` | Image pull policy on deployments | `Always` | -| `ui.replicaCount` | Number of replicas for the deployment. | `2` | -| `ui.config` | JSON file containting the configuration of the UI. See [`dbrepo.config.json`](https://gitlab.phaidra.org/fair-data-austria-db-repository/fda-services/-/blob/release-v1.4/dbrepo-ui/dbrepo.config.json) | `2` | -| `ui.extraVolumes` | List of extra volumes. | `[]` | -| `ui.extraVolumeMounts` | List of extra volume mounts. | `[]` | - -## Ingress - -The deployment depends on ingress, by default ingress is configured -for [NGINX Ingress Controller](https://github.com/kubernetes/ingress-nginx) with annotations. \ No newline at end of file +| Name | Description | Value | +| --------------------------------- | ---------------------------------------------------------------------------- | ----------------------- | +| `ui.enabled` | Enable the User Interface. | `true` | +| `ui.public.api.client` | The endpoint for the client api. | `""` | +| `ui.public.api.server` | The endpoint for the server api. | `""` | +| `ui.public.title` | The user interface title. | `Database Repository` | +| `ui.public.logo` | The user interface logo. | `/logo.svg` | +| `ui.public.icon` | The user interface icon. | `/favicon.ico` | +| `ui.public.touch` | The user interface apple touch icon. | `/apple-touch-icon.png` | +| `ui.public.broker.host` | The displayed broker hostname. | `example.com` | +| `ui.public.broker.port.5671` | Enable display of the broker 5671 port and mark it as secure (SSL/TLS). | `true` | +| `ui.public.broker.port.5672` | Enable display of the broker 5672 port and mark it as insecure (no SSL/TLS). | `false` | +| `ui.public.broker.extra` | Extra metadata displayed. | `""` | +| `ui.public.database.extra` | Extra metadata displayed. | `128.130.0.0/15` | +| `ui.public.pid.default.publisher` | The default dataset publisher for persisted identifiers. | `Example University` | +| `ui.public.doi.enabled` | Enable the display that DOIs are minted. | `false` | +| `ui.public.doi.endpoint` | The DOI proxy. | `https://doi.org` | +| `ui.replicaCount` | The number of replicas. | `2` | + +### Ingress + +| Name | Description | Value | +| ----------------- | ------------------- | ------- | +| `ingress.enabled` | Enable the ingress. | `false` | diff --git a/helm/dbrepo/charts/postgresql-ha-12.1.7.tgz b/helm/dbrepo/charts/postgresql-ha-12.1.7.tgz deleted file mode 100644 index a534ebb28b1138ee626c4f8fab2a483cf9ae5504..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 72389 zcmb2|<`7{3f&ZEe+KC=P2FV`2W<Hgcrb)(O1}VX&nNh)(X8vJeX1?J$S&4Zml_7!o zwjQZDxeRaiR+rzl*rab&|2z1>iQ2xmJD2@Au{t{4==G{p)r(p7TXdIKKRY+?se_72 zqLW}w!=}Y2pX|QhD$Y6Kfiu6gXMXmw<W81VTn>yHB3$-IT2zC(ZoFS;-t4|ta*1a( z=ktg2xBalRv$L!F`Df>k>YAE4|EsI2e*N)RKOaA5U(MH7M_+DEueY+RJQv^mIF~E% zTjU0oOZKw)XSCyYynn*HxI@L@pi0tQS%#V!3p5v==Cf$#lyPn=V>nQ3;kt(T-)3e8 z2Dy$0GNlZOa<dm2i13Fl;^XM}FL=>R%{_UJOF>_M$*yxJJH;0mwoNQAdUSEVpH9|C z6SXDNrukg0yjORxE>EcX-yyYSQ*JrWPjV7=$$t6FxTNp4y8f->YW>0L-S?gQ7ggBh zo>4k`!LstE-Nwj0w-^<U*mX&)f0xJeSMrnJ?c>%4$M!3oGU&8=@UDdYSmCeWpqrcl zJ&PDz?cCOEUcB_n$r`^!vJ4tsoQFFzA|E|IcTvza_>9o5FMhXJ6Km~wHpnsvS%_vm zWc+%}Tk~Efqu=fMx8|2I9jWPh>|(QPW+GeLrUQ%rTd~*eNZ?%5FtOlZFoVp`he{4S zD#j^lOEma4>R%~jZ?NonAac=}LD?Zmq_Rh6MZbfS2ZvhADHe-avwkx4Fc~yjsFZgw z2}wTLS?BE;QJwBq!FqO*O4?lI*bm$MpIP5{o?5WSvZ-fbi|j_0U-C0AE^@E1GnI}| z`QYc@Z$H<r`d;7Sm*?EK>`^xn@SUuB=VL>VoPT-4o3DNBOn2FBCoJ=Oef)Ck&5s9o z{L>lkIm#R|<SX2CXQs1^s(^ck)T<A#kJ>JIA;6=we=qZarnX4S<rXt_k1d)Jl{!^Q zM5K<bJjI*i(pHu}p{@&p;wP?3rWL4%E}eY&o9FMV=dQ~M|5vY#`CRYur~meoK;!@N z_SJQ>X8)hRx9aDk%zyPg=MSHeKK7*G)0)3I>IZ_4OyWy0uK4vR^||_w%d00(xBn;7 z)Bkt6zTlsitY7>u`m3w|``G<>^7DT$e=MK=@ATvF^?&BqSy@(=8O{9jqo(NB<^JW9 z<?HA4)Yoh?b`@M?;ONM{#joFg{>Pi2f80EK(tqyd$>%;6{{Fdo`uey(6~A6R{eQhm z%2&(2?En7ehfEuD^%=B&|9{y%eYyU;r*G^3y;%9*{!qI37mqzlDy+P7J|~Fxw58X7 zKDX5J6)%&BYDJUa+lF@=ZdYFyZ+m&}o!*an$xp3MznZBeOEgIYS-9Uh^(g=9VPnHE zkIxp<lO&W*Tu|)rXmT)W=JeR{x1#^BK!I}KBL+@q!}&i0Zce<zWO96?^MlD5P0P8v zm?j8pNHF>z(xo(Ij`2HP4cEX$yvq%I1C?^z?RJJKKUnz3GN$Dr$4?PepBwXZ6h-_3 z^;>#Q{t^@sdArT^P^5KLi|)znPn$Qt?rG?}o}`n`P_&U@iHMcPtV3B@%AY08H@DZA zq;sxc74NxY#^Tzt0F|k|DsNexrx=_2{{C`vUtTbqoyDh`6>751$9AaZPV$>Sb;7mx z*&f;1w^ioaX)CV1e|^HVuz%I=TThs8-I^?%aU}P}3eBTy*BwgP)OJ-(c)q2Uf8pxY z&a)kO&A)JNW^oU`$$UU{y|EGFuZ>}~S6{b&6BBKn+L;tw-YLXpkk?-*a^(AiKWnU6 z{_NiE)VpNqlra6igjaeU&5Jgh9rfDG+iclqG*yJ(ak{<EMK||tR-b0_&3bb8)$<c! zj&|XNU3Kg3m6es3r)=vhOMW?VJ9E@pS%$K5$Njdsr}KY4+^Q_k{Gjn?Q2HNM-KW|2 z!ju}-a-XsM|M8q}!!o9$2Ep6<K1jS=6}H|n%JL=i-P%j+-y$Yd+nh<?ULF4H#yb12 zGqfj&c(2MW&3f7+%&D{1V{>G0r0W?Y<*KBQiBg<xVl^>66F=29YUj%Q*(9MXwUEVd z@23a4`6{A5MoKX!Og?KYj7b(cWT__6_Rz@K`iavD-Ly;JQUu!;MXO}UwHr7l#7k)2 zx~|m2)74_BTv71#uHnq5PcE>?Zu$`3`}9H1r!6wBX@+0IpH6*t*>z*blNl%GJTK^R zS~lBo%6=iH1cfz*5^W7iPaT+k=NNu_vP;mRYlq;8wdQTiE`bFX*lP3EeOx-vAZ3lx z>^D{qK2L8_xqD{k+M|Yl?(%C)K4_so<IBytg6m9{J^D7KKV+Zak~2$W=Wdo2l5b;k z{i3<>1J6;#$R@q*pPsNx3g9^LBmRWHizD;Q2XgAh-oD=_?$&WC<-L^Ta{Df8x`dzd zA)z<TmYf0sQTiv(2dW&qqu^WO$h4#_P<7qkb-hY?73>T2|4HSm{;a)cWT=|FM2sbQ zUfW5VJGY*lshs=yy;b9-Ck(FaRSjV|RtZebZL3%=9r>rI^Q@k0uV9bIHRl}xb{GGJ zy31;;>k4y!E3-jh;f^lzCBf5--hGmPUGOx-#9PL<pk?w>+e1=n69YQ3bH$>R*QHuW za&MEZ=DU5DRm9iG{Zo$NwRwv3&-AZ2{IYt=0Zr>oS%(Y`9Z9+6CvN<o;{uD`p(V`g ze&@3<p8b0N{kSsyU;lNqUGoG(54-H%u48t1^~DFzybQJ8-MO;qnu}=hH^Jks_c-T- zUG{viC93LWsB!0so>x1ACRFdZQfJO_`)ygY?vAfj(wo;*@-xn3Xq)7G{MGKTITeC! z&O%A`k+FL7_>L$g+B)vNBzyG4@ySbXMSOlWeb-gf_G8_dUc&wjH3E|~nRDF45)T{~ zG|h-`i*uI@z18JYyWrLhue(c^O4lo;GA*xqueYC>qoHiNR&!>#xu|H`vSn*tnORJ( z(mvL;H?M+!dQQK%W~fqw<c-J4R^H$E7`Y@L`RYvKSDUUP8FVCI%A3r%u>5~B&IRQ9 z^f5i!tem&0>M|?eg^710?QZpIeyYfRnDOdlde;n-%-~Gx15Z{+#&za8Csr87`d#g* z(K{`D{q2^ZDS2nabsoMoZNKOg@KIC9c-AY%l{YWtMIB+;)c;1~t5T&Q=bn-mwvV1p zJo+W6>wQ8~P_4}+nP2lC*zir=_2ymEjkqwAh=_=*>Fc#aUb;%Fl{8iq>z`!0!+n<b zqx+Hj1}#%$8y0geEZ%8*%Gbzf>n(SU{n=S2zj}=xpZk1GX8rv@CSjAv7Ud~Vau#1P z3fgn%OqljV;mHs7NNNjAZn*lvdu8axl#Y9e@-vS;nlQ=Q@Tr^kIa%+&TY8Sq$#xXH z*wbyYS|#B2F568VLIpc#^b0=iS}!O4En0d{x<^hsJ7b5-A+rkh_d68->v;D+J@!k+ zy<*>t&u@aKG~5?&(R=owu1zT~=xk?%rnA7pYJp&z_L7^|KFt;?J+Rs6pm-sJu!)z3 z&xMkke$xtHF(mD8Z&-Ql(P7@;P6q!c2GTNnFQ`xKf7Bv-SNNBqih)4Ckk=uBz>U1? zSIWQj^0Yb1+Rd0zF23Mf$W4uHE2=Wjx4vx1R%%=KU8%Fm`E2@1b%rw!mtSo13uK?O z@5lXTm%j(TayxhLEd%>~u60MH{M_d%F61<}Nt{;cwj!~3mZXaP;RI&=dG^-2$!5wr zFWV%HjvR>03jY+x@<W^9srAggo`+ZF9oWO6x<|0k#J0)t!9tCN5{CMUNg1x4?+e+^ zJigZS<CSKd`>vR_oGcL?-9t-L($2kis!??*Y}5b2>6x%8^h=hT$GjqgH=;W}rLQiM z;i)#glO!~QIm}#oNkz6K^VP1{-q|(f5_jcSKAWVwNNkcj+g;`4o?MGFAEyZKloJ$l zn6#Ra;cB!%_w`(Z8E!3~I%|@4W|r>auUR6@xjWJ0U7*7EvIzE?gp^4&3@uIk#vaZ5 z+Siyqr)xxT6tmq;+?Zk2)blV?<%_8jqt&gWflVuZtbO`1L8QXKtKip>H7cuL%>2J` zNv?2AaJbrR`?OZkR|}YTObIesY-RCv&pVrzKY#8wE%=k@=asuqG<w^N8?%g0b1AF! zyfw?q`g3xpMs%i$&@bgEu@tdwvJdiwn4TGYOz&m&>rH#vC4S$2Q7ZeEH)hVuPc;Ak zw!`+m(P@Rt>%v$f%~h8M=$AUq3g5e0WtFJU>UgmyOMbk#qBAXT-=~{;SA}COj_)}% z{b<a@VDZ4uaSO#AF5H#RsxsW6(kW^YF^7RKyM3?o!>6lrPF;E59;(dAEv{a@$TMjD zj8nm;j)k|BMU?CnMPin{3NZL~eN|}kO&vBNHHnX1rtLy!_j#RZY3W$i`Ty9De+{|k zeNVY;DL!U1_4b72UXj8=lPCC0Upzxe;)}<T-clLWJp!M2C#-My*(dIGraaS;Ve-la z{+!7*54|sQBwMIo3~BlQDYaT5=J`)or7hDtA5?u!<yar}uYdXJC!RBH>?i-p*#6_p zYym^YO>16xy;`zLDY=XD=*gfr+Ht2EniyUzKOjC)eYNP>yxce=-*erXPM>dNeQ06` zz1A};N>Fsts;}BS!Y;})6ejGmd(yqtEMsHKh5of=#-&sHq&A-K*vVAkCCGFCY>l9r z1>eN!MW=GYy|=A$Qt3EXsFL+ux7AKcsms&A$*z-$?aTc+onne29iA@F-4ae2cmLhC zb^3v*?|o&w3vG-xeqH5tZ_R@Je>7U+IrhGssNpz&(ygnpTZ?-%iyjI7nlfeA&t%1Z zkJT2>&6`a$7kE5nw>Z3Y57T7MYVVUuY@hBQoVj3@b$f!<T6GJToRdN(<~f&T0xfqg zpY6jL>%l+o(N#wE<Hyy5j?G)Qa(&px%xSM)@%NlvwpS=IT)|H~aQfc#MRz<^GbgCU z_McSkT*v8|V^{6!%AWRWYUELo`ws<t0|U-$c<-+26yRC6sNiI3&E%}4=1rEL*PfC4 zH1$Y8_x*G`o~6<|!x}ct(e8e5I6^M#V8>QwucU&$NTw4kGxC2JSi3ds@4vnxt*vJM zna7H%dv>38jm#AcRTDTJQ`x`xVRtc)_@%-K3F9ltn={<96u53M{?Ca0mY=tN_x`Q_ zX6`L9-|1MnJWA<0!?d!aB^=CQ+YKkBdCl9o?o{ikpedSNGu7f{(|k+LpN}pIK9c7$ z*H5=#y?9{LbC0*vruu!U`fblUIq>$O$g@iyvi;^hw!CQPod^RN-^Tq3oHJK5PiFsV z(6FjiX6`1fd5>z7+mx6VG(~r)pNRjZSml1go$cJ&`9;q)47c0rJQg^>vVrANilBD4 zuZxP&6cvkEMg{GPJKpu@Ih0$hFxzu9(LH#=D%1WOCtkUi?{_*CGNXHyY#eXVY;M=` z8A3bVb~K9=r-rqCkal7`we3ko|Hbs!w*36x_0n;%_rI*qKhL)K-TCK#Z*TrL``z!) zvu}6*JNtEkx!3O*5fjTDy0vSydvy(6R<9~Gj(y+MuOw`<w_)QJvsYaclCSJuVHAFL zik4H*-^ljqqF=+$`5$XDz94?({T2P{|LY{yCZ(-iYdiB@lg^J*7oIRb`!w^c?pyoZ z0?!vQZ+P`3xKea$3?l0@tXU@YtXgtN(61`e$1gs2d(!1YE7vm3_7JshV}5dY%EVtg zx%7P%A1BSbY`VrsmXBTIS8d}At2+XZEd8Y3X-e?%+v(^ZG27X-G5FZad=8x%cQ!BY z;Ge9)<+4LozNO?yyA;pnA2y<WqDmFZnIeunICTA{of^05JbUFE?kh{rFU>qX`J_P# z%YzfkJ>Hc3G?w`JN#9pu{ym1yGxrWI+1Fy>d8p)d5N9#RjYIPb8TATUDs{IUba;1+ zo#oEq6I$I9a|KU+QghnH`EavBUr2{<hw?l&w*OHE6BEu^x}0$Daojb<&#>#+6Tf56 zesD|a9h|ZLi$ud@mcR|uKfQXh^|blC&{^AZA_|n9m`hz(x9{Q#{<=bax>m1>M%{t~ z3U8Nbmd(4o`Kanbksz(Z^SS<1Tx49X-}n63X3JUK26HZp>+5fL85(-?X-u-w36HFo z*Pl%k@<=xc*T4PPw5DC@$c&!CJ2%uHEERrrG4Ir|$sZ>_J=P$Scp~`e^as~Yr-}T? zXiKbUbJ}sGZ(?H&8`HlDw=*AUUT-v&I5O?MYn7SV(v!Z<n><V|O8+blUUiDU(s*&l zSr3T@^G}Q(m(;U^(zxgMvr0alSQFqKDG__@u+icB7rSIXyoreVwaxgYi`~}M8<<s8 z+~Y3rP3Z2Zxmt4I^r^l>*9CuQf1eV<mL9(GzS)wEQR$K0uDRur-C50io5k+7#ir@r z;<fH={>FF0Hg@IhJwLMcy6Ilomoz_6$fCOE=eoduSF28+dXimz>XeA|mq}AI&E6<# zU(UT@%~f*La{HUeb?GT~bKKucHTB#+sk}$+`7@h{l6@9Fn`IefB3IuLGy1vJv`i#& zr`q-@)93D-ck@I>kJ9Q#9TSX<jAylFGccWb;grMJ^igSs*Zz!WLRxogIFIE@cCBrC zWRUcru5FU!qMFbp_YMllWxx5x^7xyK``s@#|698nrY_v{pd))${~{K@qlVENo%ICR zLmK2<A4N>NC#LgNncFSwjQWm-`Lj08I=qx8j9(xkh2_%Or3pH_C#;d(%s$iga@PEQ zo2zzG)lLR?%8v!kn{+62?mhjr6S|UrrdF;xcl-6N6Me^*ZHQ=9-n5f>lj=R?-#ZEd zy`Bb~ov+|G*Qt+rgQ|7kr`4~2)SmKQUw1iT5&xnkmp1=aY;|Io!I|$d?Tlgj?t<+> z_I|40uB{6&l<~EF@zU!{%k?&wdo01zDoO+!YulbAF8p6Q;cdgM)-|gpusU1al$KGd z&3nkaeWqQ9fVSYbyrY-8-Guz+a-MHeo~9ttQO7bfN4@>?r2whP$x{nnMrO@Rd?ccO zH$T*UrE{&+f9ExyY7AKaOgN-gu=B=z>p%4?rCv|heR%L;NI{bEMfasfT|tJMoj+fH z@tt*9<Qu8qwk+z$|DRV>s7cs+T&K6is$fO8j?3%|D>r>t;pmcOe3Y3t@5qD4SMSVI z{e0m@*Cm$s@8A12v@tyt=zn~FZ^bFkG?TKP;y1hAy_WV`E^{b_t*Yp~^0WKz(>tPc z7bPExIHY|jEi-84l{*z)i47^;U+h&igpQxPfBLx8J*K7lUpmkHk$9#OEPmg%*1XNU z<lv+{iB)@>Shq5Z-T!+hRJ|dB>4NN{L%ZizUD6RUeRIR;(|TTkquf6PR~8?-={zsP z&C^B9r!vS@_rCL-2G=PM40QK#w1=$xxc{lAjzpW9E8DRQCyhx_+;#B<A8RE(x-IVZ zFmw<UUh2m=TcMr7>$&DH5$+Q{_aY;D0w(<WRD3jQt&pBa!x9mlt#L;-N=-S_@xkG@ zv6F<+>(<-hfd+9#1`AX4CbdWGu#;R=-m%H-hiIDx_gUA^7LjsI=FP7!o>hDi_wTOg zkC5v}SKPV%B}M*QkD0J+-uJh^=b8Wdo%;Un*Q-yj{+?*Q>t)=$zkkZ#Z>qj1KlRE~ zi=A`J_)N9dW_e9{d@ttq4)d>f?d+$=-3~Cj$`bR!<hq%auW4hkk*#~V#+98;Myv}f zHq>AH|MTx{XM-Iz#ibm2>+{(5{!{$1wz}4GM@==yuj|*tueUF#zPEp$CClE|2YD4l zzUcqDp3lE3@|%Z<qW#5ex1$w2fBQ9rHd;=!I=l9oXTtpGbwwLPoPSBJd~;XjA=imd zS2T@YI8R-nc-C=>LKXXAuUQf5S$bcjMSi}};%WP|V%CfmA6a|?o_zi}(T5>^(W>U0 zngbUb>t7nTO>VssbH<@TV%bx%eOb+te9hiM3fE>U{!iYQVOOtvs7&%hWmD;?)DIKB zHaBt0oZQ^db^cD=u?d}dbs`Z)D+Eh>TrwQGA`a?m?z3@={93>qay2IS<vD}TbG1%> z_1`RJ_@(OIQ=Ur&Z#s0<gx@6RZJ24~d`f(Ir;g9UYh_&p<}Veq)F1fDy;GYW_5E?* ztCcUgcW?JhclJzw*>L%h_gbk>8<qqoZ@#%aXs6FT(Ort-4O@Gc%=xx^_k#c16aW8O zR9|`7_I-!Jor)^&i?)41`}yYY2zv2EtGKR8_w&_Y#@{tX%VtPVFt9PuEpa_EYx3@H z2K7vx&YEqlrF>6Pwyt{5pimbsb6N2HZN-`UlywA+!_7Gw<hh>CU77Bazv=T%hokkW zvwI@r4qL~ZT{E4p|I8EdNh{k~8O+WWWNZD9O7VH_X!_nKKjzIzrNpzW8!}C&D9-EJ zX0IN6@J`w>$&;Z1>8mHDwQVnruv;2jtE6#$E4%QCn+1$DUt@Lmq)3?yPhHC#m149q zRekjrCU@};Lkm})75Z(q69o>W)dct~teWCGzeqpeC4-CRLf%<FW!y77F0#}!nM)n+ z@|4kdJ4s;DgO2mFY+~2t8Z-H>GFJ(<<M}(=g=0y)k6X>F1kO3fb&k6)UuP3>V6~=1 zkcg1PoX3W(Q)a(V{y3xi{QPEv+Ku{;KG?KbsM_5wIBg?4>CP3a1)~10iF{WhqP5P+ z)EQN8_{OfLGEuSQS8rOz^880ZrzXvRZ0Q#ymUjN?*43YHXgirN)Vg<Y#`!&~3$8to zR!df&dg`-S-5+izL!OVaNh@!bUY2g^fBE>zjY~0eX3i?+bP9POkP^4l>Cv$%OLeC! zzx~|qcPp!EeZU_UwL_|lc{fh1TX3D}*s-3en}SX++ibW;%+NKz;6!+-&~L5liA#j_ zJO!pEZ|-vPn!fwvmol@q+<ieTks)99>G$;&uQuR55PWd8Ti=<35dzE1{uEqL5XonM z!qin(-l)8p@sCFOhlYxt52f{4`ps|F^?z*AJ^m#4n@#ukyWA)4Dc<n@{O<4NE+ZKe zzCYf*A;~}AMom8br(T`=q1VI%$JGu@mh4$}c>RuhCu;K_N<R6bGE@7lzYWWUn%Po6 zG<mEa94lk!C}{{i@-XjY@!APf%4AdPJ^135UD(EFIcqudzsH$V6LQMDkK7Zh-uqne zf|RPrZ_e!k^^V?&e?MzlDCs`9`}SoFcUvBB_&Hr}&qHzV=Pu#A^>*7{k5ilh_Y!mL z{cgrxR68{#`P-6!)tXb{mw6qUEphjd!h#ONBL}iKe19IIoa7|@@5#~6>C5#@KhD<b z_#pe;YpaVM?*pZo3pFmjd-(RHpP8b~%d=Tk!8zu^l`L|-R>jOc{kKjsFvx5_`oFL5 z=)Iy3izXO*N6o#wutx8u6kp)pZY7hlcYj)JmvlPMp7iDERp0%|IpIqdv|YXYI`L=4 zOlK91X{T@A&GOG#py9x{ocY%)_n&(I?0S-Cx+H`=;1I}?lRh;`Zp*<0x%L{yFOKu3 zN+?+!@6n$#v+qREa`^)s=L<PppX+G<Rg};dDp>vVepY&ez@vw|8!dF7W%5s)E|A}2 zvoFQD@px{)MdKOjW>fd1uqo@$RP?{vGyURew&_i#GqyF~EM;P8p729Hf9v+YrWT36 zp32nida8djx93H!Q{s^YUyAp$>Cd;`)pU00%rKFD9?4q^g?B|Q@MPa`rT?}0y6ckR ziL0j0iGF;rLPf7D`GL=)Hx62Xa!0Kd@+StH&TguU(hL<UeKc9`$V3ytbqvQ|dfuBY zIZ2&6aDrvmlI=g8XP>o``DDMpUEU?}==E=3?)x6rmWs{ZwwmeQhy4@T_j0=CJbT!o zYVe8M-F0o3XSn?5r@Hlp+T3^2j4N3e-)p%4H{Ly2Mt0-Ok32t(nWEBJmU#D-Rr#Gw z3lelsQ`K1&yZD!Ws8#ol;4PvhCknT%oms*()9tNUI`^fTgPgevd3Gu<p4B{g(ONT6 zeiPUHVxdhnH9E_u1X#>Wkl)~{(_@_{zfj}D6wb8YQ-k<tDgW6tCDZ33%f*Q|=DmAZ zaZLRD{#3`RU!P=l*6%%@^3%miVY5<URhQGuWVWSmRax(BZcON2^J>rI7$^CQEdD!Y zc1FBg#3Ld4{?v?vB`5XG-<<t3O?j)s_FF4grdBpPtCX=;NirrDx>!C5GcGi~w12_U z$-msU=sZn$veM+Grj)9R*vIX6J)2$>oT`6)BSlb)(>b|6&|PzNPlDSCcfmIc`)4e* zbF*F3xuO4vMWemP59NyoS=ur=rbn)u!J_8pIeYm$uKP3gL^|c^bk%Tv3O(G#drZ@j zhvkV~R<m)De4{ImON7;diDu2Ljh25pBoer@emJu-o)Kx;d_(Rl=h74YP8+k=Y<l;( z(KaScdYR%Jxh-ceI$KN=S*0Am%sHN4Id|WN%=3jMy$KW8R(+nA9T!q~$*%UG`wRiK zM~i~)Tm0jXx$G~tCco}zkFJ2Vm8GR^-OowlIZgI2IV4n99&-;{alR&Ki4lWq>2<Gy z*?$i(%&04?VUU>UoA~l5i~EeTTh6X6Yi7OG+x3p^MQ~4M*?}EVvepm2xXx5MzeBT4 z;y17QX75QIUhkH@PE?!F7@GWgiB!M%gO1tTx(hpID!-q@q7fQXT=u}t?7jSt`!6_J zBN~5dgf8@82{jhbIpTNf!&<ifs|(|Mwi|OTJMmf3IZ}p6IO6Q2WG+9cb_>B;#@eo@ zZ+U~>hb|B?Pg`L#)xO{Jh&rR;!B2%%Kek0ANyeN|=TwmS65!kT=th=X^X+O6xw54v zyk7{lq;&n=wr$ylHL{guVSf5N3p$eO)y|bhF}{&B-5IrWeqz1aZu{V3!`;U_?H?aL z^Wjwwcjevp^Zv$Ktx@&2Jl3(wHYjwBlKhvMdCw~ra&+g}wf%E{In!?UueXzmEA6M~ zltiy=n<NvO{n04=)r@&z<?jj)aqrz5Eg<43YkGfj{Tqdfz_UtaO0j9rl#X_PkrUY) zZCt7IBJb>a%dBk=RZRod`p*fOudr60<&xFaH)<8vqE4G1+Imf9e|SK4@V{QcwVS1K zyK-_j#Y<n?)soA(XRG0a8u=U7mK|7{aMn#WggGWV>%MwKvFWa@SGR;-xE7Xs)hVX_ ze&{uk`?uzN*`GKk`>q79!@AX8PZ)OJTQSp-_fl!=4a*tX-mj!~ybhWu&-QxPA_3P0 z+3uEFjO)X-PH(%o?(-S%h3k4JKF)TIn|_YF{VMaqBVRT1PxDS(=X=OEVV(J^i@Xol zZC%5=ah?34kJpdwIhRt;v?osfgVkHj`*ydsihcdvy2~%LEObux<+$oYyY&v}Ngw|E zEaCd1MW+)4v@A?r_MDsizgZz(+=f58dGETVdkmkI8uQI&j=TQpCey9b+DJLRSG%Tt zXMP-W{nLGkC%dK{7CyAKdcm*xjRkX89)El=db#%Y_T$_9zFY1SPRQ1M|Gg{g?WF&T z3TtC)<ao~CO8Ul-aE<R*y!6Sa?k^Gs*Ip{U<UIU~^Kex#&+8oiieiS>N^8}>yvmo} zYc>1b^`>=Y>G#F*w$A>=w%}@BleA*kZqGcP@V9EeTSEWd_?wiw;FS<lwDU^6h5I>O zN;yxS{jk!zBahE7*69c5%wH3$Peg6Fa_&s@p(SOP;^ZgX^2`%9$x=V)yKu!^m;Wy; zuB_C4mgu-5*Nnf@A-DL~sSlT5nw{9Tarx}reKr~lTaP}CcAa15_2-4hs?1PZm7Z5x z3ud@o__X+d=dC~6+Ep_z-({MR!g-K4P(@z+gTL5|?568W_kCk`U#DGArE_B!)8pgE z)@)|25IL~RXc~WGSo-IxkQKX}F5Bt&#WvpE=J?8_S=aecs-j$f5BqXSdo_s|sfk|- zJPPu}qz@mkJekMJd@e#imzzP)c*;KgFXq|CZ~NK*h8f(SS8#uy>yD-GnZBRp;H^ry zU_SZsWUX5Ej{IvzKRMsM-5osZz0A9_mPWQ5*P@TsR7Ds$%yKWh)?Q)!W=cNy{j-rT z)C;z^vy~UWJp66q-8oU)V<XIsOWtr^etY{!N%6Le=8P|%O?e~jT>SWw(bG&huNKL} zJI}|9&wuysori(c)d%+8x|cMMZo0T|!qW^xrTNU7Zu>I0n{qo-U8g^g&(e9*@cQ5F zgD;-_dcS@8-R^((y8j&1*DFZ~w+T;Dw%jAdo3~CRP&K-7+qso1Huqa>>r^kudhYpP zOUx7oe?jjzJg;WnQr*?=eIV__m!qfoTHcoJ=514K^0^l|bF(vOnyOUbdPtJr@}M5* zJXL1*q4~`bdsdv&5$#TWJU=5(Ki8@?PW|ua37wOhrySy1#VDn}OiiyHG+U*uRJ`Pr zo{YHG8UIc1G$L=!Sn+%pr}cqr&O2rKmdk$F^LNkRJKPr}4xg~L{P?1Hr?y`7u`fHb zelAF{^?ALK_Z&~cM(C8)bmgmD4U#vw6PqG7m2(7~2;$ki_u!LBDvv@+ro2g=*x$Rj z^6AQ^#dl{Y^_%neEt^-9w(}fpe(LBa6~`Su;pV&U9{ID}dySO6t;+hTj>?<QCaNfR zY~3HSa@&PAiC-)3Zt1wH{<NYp#c=P8N7fpLW-b+znaa9G>QwgJSM&APhhB@n5Tv%_ z%tGN=kxSdXr`iQduj?@XK1t`m-hk@@^)8=gumu_ZwU{MfHQmgxvn6jfPs=gu{L(41 zuD>Mi8@ohSt=(9Z^XX;7Ld$QS9!ddUilmOaRQPSJT^GK<a8Zmw>G`Nv->xaX{<X_- zuex%}O5uR`)EfZ~=QxbqYINk%cb?5CWP32<&O);t4`!J)Yh9c5ku|LCONYr9>6A>r z$j~`6h5pp;TCrTk%|tMxvxP0p#<k_0>$}BYc15*zrG(Glx$7ZM^d_r3*L4e2r<J_j z<H%aFq+^BN=Q9yn`RrSMe1AOozxKa5+j?9wSxX(d>+S7+?tj$pF-19N@|5J6GxtBu zI{jWWW7UeT$_b&imXhg{b4&$0UaVyLq_b~*-^Pfuax2WX&$2dtCn{~Ir4`q7(S1wG zrc_qz%E}_`)Ei79A0L_@EY~=5;T{*OR`!lRPahQ3iL1ZeUShlB$>9|RKbK9P`0Cfz zHl8@^q5?*pg&bXm$M&>_$C%8NT5mb)n(a$g##IRn#=WuptN|NWFf!iZ_~9SE_>EX- zPRJxFKe2^Ud1?wbCrq-=GdYxz=_kzAFr!C)a@7)!Co{qhc16m5I>^MLtH&=XpJ8~b zs3M{7sPeqLP#yV)1*_lfxqtHJwUU6^6^qx}f8Txm@9W#|e$Os{`DI<-hFR<fwfQ$# zwbXQcUd?C5UsiMV$ybKu;oVQ<pL|&5JZ;kE)m6HGINZa(hJ0X956|TjTcW$YV-Z(G zbTa=Ak*j92r|#!>@zs65z5nNu(nq^nYl2ua+I}n%*tVa4%JLY-`2jb~91@M$Cdi~^ zFB6<9u=bYUFFnDi)sDGm4{q(q%)a8U+xNCS*7K^twoOv|3SUHp{$F}x>(kbP1y}Pf z%~-&;W?M`^V`%n?$Y%d&wI_!UT%Ojw_F^XYq;RE6>y-X(W6UhxQ(UnnbN&BY5?fN4 zzb8K3pc-iDH9OmxA*wmg^4}Xa(;bS>a<U9U9M0wKuMKaXSz97<+9&xM)5a^+?Y<n- zl0#3;`k$N-wCvxiT<4%`g7+jQZW3%h%c%MKMh;{Drfn+x?Cz1re>Gmzczq+E$1U>s z1J3SCwhn&}Zq&Fc@UP{<H+#l~x?eN$_%4Jgd~G>D?Rfg>uWQzKoSpVAY%S~AXJ_{6 zrkJUJ<ZZY)=Zo2))Z(B!64TCle&z2t^=;7>;~G<!Z6z<FgeRPxTc2H#llN)%fsH#g z^V*I*Tej0uV)pEJ=B-D+J!-T*7T%P2d3O5i1sisL%HwP~>snRIV<x`USK&s?7c<v{ z;){O{Gi_MgrMhfyNN7M(Dnn8v!#=*3=XUa+wy>3{nQ`(-v@3t{iR}Ak+?Vu!CFPZV zw|Y=z`D9YxbS0jdF6R#KUmbsHc59)`+gIB4rJcp$52qblIyJ6pwP;dvcb@3vKeeCV zpRk>ASVQ{Pg1xo&)7p*)#b5g;c-s2((Vfg+G%c@`r|56GT~qGjJS%5Y*y})%1s&gW zm`jgwEIqpDT}N@Iy3n5Rk9&6o?NVY0cmF#rP5Ko_toH1_+rHmbeE4L42HRf~@iLvD zIQI!J-$c9p9~#d;mp{Tcwc~nc>7L~sZ-mY@ar*ax#vwgkh^QUzklh%!((C3OqlLS^ z{rqj|m8KG){^D(?>>K|3eCyYpbM1-w|0(Ul>w7%w^z!w8nZI9mj&DwArr`bwTS`^7 zbQeam?0$2$S-iR^L;CM^%OBhpmGh3p@AfET_^dgnI)`oVWpVwvr$wZL-puhi`m>bP zDPi8W3rpX`cfHm<xBlL}Z|n5*f7{00xY)S(^ZFW>$c`r#@Ae1xMLyFC=sI@HTUkcf zOlkH?<z~fz2>x|U`*us+jVaUr)gQ2niD%C06lWKG&jup~r8p<fMJGg+j>-#JH7&4b zPPadu8&|tXHD=c-%Qx}&<KpIi&38AyJNuvO|4+{Zz2@lqlrEN1NX<W@s49C}{*zXR z(5@+R+qP8fiFw|9`rq3RyZ)zr*v_sy!S~z0fBV*&#|J8<+g7f7$KmR}IYmw`@a4v@ zDw_H#mo@vA<^DUjVj<JIsKRyH49Dj#ZzzmmfAV|nfuazTG}aF>h1OMu;u${1GHfEQ zJ9nI(@#*D9<x7hfnoD#@)VcgzbW(hRPOgDRL)lNQ{fqZ6Fu5yb=C1ot@yTX4H~$0a zE4u>Sw;uC2bDc;12Onq6X3a%!L#FE8kH5pG$8NrTZ+Y|Q&9DDGb^hKLqdIk~o$I1J zrec=;CP@)bqc_{#dazxx>%e|N)pmwjA#PsgN5wKi{}+1+PduURsUFCnF)O9;sKF#( zzGp$KQ>vo^PBmUW@j~#PntDTkf#@}DTNaB?o)3HG-;8L=b`fHz&2!AUCKi8ko2k+i zJ$^^0jxDExxE5|W6xH6~#OY_#yy}M04b_cT0#}CabeYj;Dah@x!ma6VhT-%D%=^L$ z^>e$Tn=dqK>y*y+dUAnppIAZE<`0)A+?F$Esyz}lucOvu-=U3KjP6BMf~i+xjo<2v z-`#)rlRp1l-zhhiHY<z2JLJ}?qnUW|&Pu(75*#j;@)y~PrYzs|;(0|=-UpdZr_V3h zQV#4b^Ds1NbKiZSf~jCp*e;=2hT-hbo6Y~;o_+A}ZI7^ttDYZr6j17%78&$Ofpr0E zfcd_~OL*M(-Ra?0^gi&OJ1=ADQG59>`uTb6>37<sVtC~4q@0?%b_*BJiu23f>Ze^y z(hpbH=Bbh4<(V7iwCZpF3XWE$FdfzNoIG`Hiaj-Un?JZtiAwt@9{1~51YeZpskI*& zjQ90z35s{!A2>&0g6)&T-YoBq2Cv8}?MeH<m;JiKg=2yz`=4eXwe|xHHbM4zYuy7L zm@RoQP1LExCrY&{iRr@9?pwJB&n)#(nVHX*wr-~Ge%?*@#kdx({wX^nV(G5{F5f3t zR)<8Uq}d5^n)hyyF;!rX|IU^<$58#l!N_T!jO+PZyH&4WOL}wW{qus``pheg&RrFE z*j(YoIP+@2{(l`0BG#2<HT7=IV!o33JnBc}x;?!QHiu37m$+f;mF#u%pDVl1zsIP+ z8F|vMS0&}=T_-=)g#|_j?Gm~pdfX2^7GaIMIK`|vQ${+(udQI>gzYa|E=>OI$kQs^ z|1h(KDN?{i*yf;}k3e?wyqMLk-VTcjRz6KixUqjj(5y!hIa#e;nzIzFgx+<?^`&<h z?K^OF`kfP;LYnnQ<t7_-l{loiDyf}~sZ6_f(pH*l<%v_3_AQEYBahiE@tD$nX@azm zm!v9>Z=|f~%W3kK7mM~BR1}(bEpA$5&+kCK%_n?f{J)8BDGB=5F>UFUUYoBxRd;*p zwtH0=%=n;sNtQ35fTJyVW0e?l-@|rs*{2yMR{nQcA1~!o53aT^-uLgs4U59%VFl_& zVp;NwLOCOMK3VIic4OWFwG)nSpUzJe6=O3v$ImWw*WufCry%LKOB+mAUkxmix9iZj z$Caz*pYOQQ=i|R$GCdbX+?gIaI9}&an9gtW(Ef(KwYz)$MZN#~%l;i&`ujDz-}^Q8 zd)|HDW&YRLGg#qZhH;2n0+){ghgx@v<3+^|)g!Xvh5BcOT&k<o74?_a=(37lIj_g< zSs=2+vp{5uO6U7tm6vAGc8c7bKX-KSwtaH6Q~d0?<~FzEtIw9*M>OW^aNaciHCMaO zN1JVv<R^Qk#$MGs8?O~iJS}f%)=^-zG)2(3a+1%XWX`N#CX*|+Y~H>5@aGRFmm64G zG}eiUtj^yw?JIxa{A2w;;{FG0U0l~CwEBId<JD%PlhzGFlVsd<zA*3p-BHRbaqI8% zU(fUO&ChokpV+T&aP=VPVnuyxS?B%9lG1-V`x*j-@0)T?<lui6Uw16<Kxp0kXD2x4 zBs$rrC1~y3(ICUWi$jpvma|t$WtzXrF3)>yBJX>COC|Ii{V8YNa^KrmUD7K1$bYHK zO&vUipZG5p+8qtyULgNLH1O38kwp#le}b=k^>F;-!Luf5ZGPLs>9*kkPV<;<TRmEP zT<2by^{w|M-K!LX{|FgWPp)CC$SyOS+ww$i#_|)Vqm7Sy`ox=aoey|F>FJCUAHyma zunRv76`x=hxZvPZ17SAy_;sg!gVS^_Zhk$j#%TUz4};XVCzW_yAK7&IJ~`xa;w10g z8IoMP)%(AP=!EPNj%%!#n7-4agF}6T=G_VX8k5*NW^ND+J>$4=V~W$$l?j%vQzm+7 z#W>IUl6BwNMDc*uHTUaFZ-{U7U~w_=X-Rp*JHM{(=fuW$1qp9{O&4>J?6KAo)3$xI zxFIzBokr$^K9&Sg#g3N;t-qd`!I>nMz4ZUtTHz(rJd~%bs{U?uv^?e~lSuHB>^<k= zgMJ>k>-jt6jY?~g{7H_fk2HV27Jr%DD0${cNpiVHcEElI&ZBnP3IgeU7ZgRc6SgEU z)IM6qYW~T$IWt`^^U1=_)t(X)j;@jtow?_1sIU8K_e8h5GF*|TFH3OmbZopUakA3S z*J0As_9K_SNPjMWsBxQ#L*c2~kxwU%nMw9;xYKg!v4Z~XPctu^_D#`gPSFdx%cWMl z&PZN(iskxfNxRR5zn{4NzQK}VS9>VE?oj%_Uq8<D_r)&Q{e0I0)~}nRnEh^Utp3=~ znH^xeXeYnRwL-1tfC`SdXOaJx@q{%otq@r7My9e?ruW=T{@&zg+6#TA$UO>sAbdRZ z_^#D_p|{glrOJkeeZKtjmHmgGS$B1}6&~2-@%m*;>ARNFb<2v>tt$Q-{$AvjrgJ2V zucClS_QU0q{p+Q^yk1|iD|&kU*~fR^y}505|LwAU2O0Ct5BB<1?Dov7Ida?g8-K;I z->IAbeZ0z7lkWU-mij(#j-0nA$~ph~o~xNY;m(^2<(wDK`qxeu__wUD);=$NBVXhC z`n00A`!-!OEJ%N*JD0iqQrv%q9h2{<sUMunVs6XzPUTm-E%&_b&*i?Y<DGrhIc{5G z@vVEg(vv#xwFc~VdiIZL!#eYm?s-d3E!9h#xMA1T(_bq4B+n;Hy(|j7Gg;tHb0V+1 zVAa)YCgCY-&wM{qI4$y>gSy|@?^>ElLJJ;hP2#Ayl6b6+bx+Fiw}G#2UesG}&8R+G zKT<1UVM(jU(wdt!cZF78TbJcDVXI=6|Lv7rOG~UDOmZo+2>rGyY|jOb#`V(!PnY>6 zFkCwE)8~+`8MAoK8jA?-Snmg--WEdLAF?HU1K0NLJiTh#$JLhG7D}|+N-X~#YWYs* zgYza18__jxdpVcAkZXH*QO~t!y2eM5nVbv5-d5a<^-9y}_@XsM<ld*w`7+y|{_pSi zn?L>P)~UA(x~E^U`lX^*&5@t-BXjdyt=Okl#Zr4_y^DV7b$`vdqh+njcXpimQj*(s zR#ef$L{vQU^b7}ovpwy}+CJApPnCQr^>a+CIb#20uEKwoyMI(8dtaRt^;ozls8lXa z^UU%9m!QJQyPtX-SXt)K&3|QWS7xw(@zELlQ`cGL{F^t4HA#@`vh1$t*afi?EPHk- zm%P`Ex+mKvcjfuI&CQb2G%^i>Z1!FaKPt)S^++ayeT&=Q&vozFSl%*t#WcS2coQhw z6jy$QegEFq@kLyAJ_#Pn-b$uuZoMrMSYm&+j^o>v!c}{j3nrh=@hCd|VSjH9`+|DA zSIx;6_S-xb`mlZb<J2aJisIVRKqnRslR~X^hlDq|yX2U>fB*8r+{b&JC;YQ`XkYU8 zovegm+~=67Cku21-zVEKJ(}ij@$^^Gy}vu_@15GuJE3R(^z^Wp?O(U%$VEDOTkd_k zum1M>hbD*q>)qq-P*%{`p5yHM+I^<%kKFjfPbYm+eD|>E<IR7rF_y1?G`UzPn&hjz zp1StNrwO-LSBJ!lX7@CP8=m@5WOO<zaIN8n&{ZX-z3N=+o(1G48Z*S6DKVKjtv3G6 zrWHH<*zBGp)!VI@tUBqN<Ktpc)l186zkGSDcH3dTcj-6g&ooNjczSWuTGM881D@j- z{?CZBn7Q=&>3OaqpSFqyN5nOz{>v)+`fQq5RLt}uc4x*NCW6-NkIuL|HO%P`sxGfT zC?K)CI<b9E7R!@KViwwW=J}O8*i>rby>HIeZ?`v#`!1cXl=Z$jtJWa=?0T*RVt4fd z*Zg6vEXtqF6)IF7DOj+wC`vt(%W*od#p-Sio@K8(ZRRG)G$*Ot4=>rX&*D^Vy9QT9 za(Zso&Dqc9F7}<}89#lZR8U&MxxYMW)jp?|GMPOIQ+XlSwazVVy`+myW1_~tORa7} zzfM~%|G&faRjO=`IVbb4>miA}^IoRPKUx*KVLxx$&G7ye2Tz}NyA{$EFP8k}!lI1F zeUZ!y@{IOQIA>Ji(C1_<yTBu(cgF_f<yFU4oBf#Tf2gL!W$E?)&{^y47Ith<c4w9E zbvCk_<-Bp5h4R0q^Alf9n<cUR`N4HUE>fGn^<`-#{+;DDJ;H9Eo_@LFLG!3zO>@q^ zPH<Clx~h8ID(rks+T2?4>Hg;?$ZZc4Il|&Tt@-$g-IwnC(KnhFt0sS3e|>h4;B(F; zOn-xRze(xXu`BFfe99W8@5;roX<o~Bitx9d-0k4l^Fqd0&24Rr&KHG4orMd#Ya@K_ z`CFYSDtE{~HvNZ_QIY<;SG`OM=Wf1ObhN{$@SW|(cji+|ckSLCtdbQuxApqZv%J4& z1>I~g@S7=_x|VCc-qUL)3RMZ+iky{czTrn)rf<#_koBE$JWYcqeBwb-@mMt%rschw z&zmQl&R8YzVp)p3deSbR2<5U}D-WbTyd0`y#<e8Qo*`;={~f-D%X}7=hRO5lC+&9d zcRcU!cs|tee7v&G&Kt9}4!6CwUeBcyH`&wkh{3wl*L)f|=Wg)Guj}EglbLx+sVjR? z%XP7JN}FzUD4RL8X*YEkC+A(&NQ&M)Z&BO-9f60B`fcd_@lb13yyB!EPi{y)tuFfY z_?uGa>`xn%I@hwE4baznW6?GDjI)fi=9FrS=m{&n2I#j`oSP*x&2(4Fwsjv<E*ln> z-Fc9%pVA}#Q`Lt-IAfo_PDocqshT0{as@BOT{BM_whPW#bRaNc-Cw23svsK&VHwT~ zljEybeq5A0ZOS62o#EcvZ&yoCb`@EncZt`za3;gIg-uyW#vWHSjQ?ycUm<l+EQ*Ie zbKCwV;XHY+J@Z+eC%bC!{ZU$#V<^$Zy74@_{LyLOyLU@1ceTD<XHX#?xUgqcD(Aw2 zt}4ZpGl9LzKczapA6;cq9N+bJ-u@Z=|7JZ4SeAb}d#BOXsP<F&>kAkqIi}qy`K}tq zE3b2@G2ei(+ryLL+tFv!KQ%HtnJ&%{Y-?9gVoh6A#~79>cv`LA&7+HJ!SYE{^cTI= z3DI2~8o4s*r+v#wpDj^m_7~i;Tq?A(LRhUmit~u=$)H*$8^HtK*9=uNpDt%wT4Qyf zach{?ydIVv3XDlFr_TK(IitHhMag=Nh{fH|^P5f<o@2hw!N#=ZqZVs^@k@z+=33H| zkECTp9sF^B1#?|Z_i0!2n%}7+y(a4#8ki2uc8sh1cv|E1^~@K$U(V6j+*zi){NIx= z(@KSJtvZn(-=kLg_pd{C;WMXc43%@5i|(aXpD^gNPT2P)K_-26>oM8u*S0KXvT*nx z>~o_@?3tXirfguH<e?7XC>N<SY(h<vyV<|lFF9Bx&v&rhTQo~8|A4umm;I6k!=n=W zmCo-dSm_nU^7)SMoey@Rlh;W^#)LYpC`n%<p&Kj7YZl+a`OP9z_QesOn@=Z18S#iP z^Yn5RnsoSW_x<_VvGrx|YgO}`I}V0_YOGSy%AMo-z;peKg<&(EZb^6FX}qK|*YSRo zq_C2?kFrFUWcBRQg`Bq)!(Vbd=6bt&9jEq!^|KFc=&JS1Tbj}1Z+Q7dQc{}e{)O(3 zFE;%!VM_^pbMM_c<-GL)oqaR*CY7c!u8K0>bRu|b=)#b8f6Y3v*i-B)yoFA(KIJ*+ zz$P%Gw!}MYv9DOZr`Q$c?-SdT{TtuCn=$+Sxg8O#r*e-U5qo`5cH@e|1u9X?iWqp> z99TJT6-*9vrhWYX(l!sWM6qQ@b=<(G%ext5Lw=e7fNE-zwq#En)2uTz(o;G4kz zlHIacKH{Q7QHgf2RojtCJFI6u@UWhs!5O+{_Nuof6Kz!6t%_Pdu2ffJ47WQqT~kgq zdCe?`H$_HqQH=-YWxY6cPjYRq`^={aCvP+A`dwe^v2%-2&S{=`2^yY9_N|S3^1LX+ z__(9m?rX847Y!;twL8p{l^0hHPx1P&EvGrSFNwj;o8j(9wd6@>J~6JY(X_fUz3%4c zQsyK2dk?PqR(N&3O!u9L%+!+{`%m+F)=U&up7p>-!8YsZ<6~P4e(ja5e$27sB!B(e zRWoMajV;i0w=_L*V_8bdzRkQ|uS4&>Ot_e{!8A))*f=$wJ#PNQ4E>9OdAsaS+2$6; zPHdH0Gwt;%gBoAauGrfaeA8b|k`fMh8(_u6vMkDK+K-l?C$GC3dFoERG-xjO@Lm(1 zZ#APgdhWAT6E$PLmGJs1skX74GQQ-c5mD&t`|*=Rq3;5T1l5^;_iRxR;MmCJIQPO6 zh2782uJLQ%uYP^fogc~9y9G9uH7r_MSbT!lQ`&XwW*?mkqDvPFFW~r``bKG{(8dkn z-IAL;X55ns-Q2TBMPu4;w)E-B8}zf@AKl#Cc4_6~Fs25h-d#aArtGSGVzyGiAoOrg z%d6}MJg%qz=!#W+3(Ctp)AIVZ`ezBX8Pjd|9`?B2*~c<XcHNeDMUJvZ1<Do&&D36W zUSs>#t<wZ9bIv*z(mnUUMA6qNt!B@st=YLfYvbLEj>oP&lyera+x_q5%gulLTOZUf z`OE+2#iv)x?6cJ8PtyHhfxK7vclD<~Pd8t-pKDWJ`0LZv)#A&~&-?rG$CIPolONkR zKGyxP?ypV+)64mN=Fg_;-zop}a_{T7`wgexx$bASt7m(AkLS`7-8*ve``(<`zW>{L z_vY2!#s}ATbXBYDtGW4-uYH}!T?;dzw>AIXG|FGOP~-MYz<uuZ1-fT%Z2LM#{r~6r zr7>qBc0?XkskA@5Q0kE-yIoq}#1AXFxT^vg{{2Zm$>AS#iLvc+#|D<);wmS~^!L@= z-08`AR$+O|q8@=hhiQRlKId+<Rp8%vS~Kd|guJ&7@4U4>ME<i~>iJG!?{W*z0F`53 z&h<4k2(GNCtz>Yo+rc4_q50sJ3g7!BA4FUk7wK-0Pq1gy{kSDG%;fCOrH^={9<(!m zkQaEU@nGxsInyN>JeKFI&aph`HP1T#YLaz`+{=jAOFedq^#`Z3FY@|fbkyI;z_ruo zVP)hS`|#D-Dke@Zmeu@v%KgD9uV(98)4qKrPfG1(3oKvFzv1-NsSewNqqhpJz9@2b zN{@YxMrhN)_=@>V;rR#7?zWSNoBLO^LQcZj?DkDbmxc=tY=2hHRjz#;DrLFgeA;Sh z8$Qunmi{F!k5ul8UNEom@sLos_3YECwYAxj3s-2$-W2@2y1TD(arYjfmmYUgw4CH_ z=Ug)pj&;e63vrgJR6fWx$z#uTwKu6=XD4fK=Q#cAQ|j>*%%Xerb+e9CYpZr=R;|Av zJMA6A#Z_Kcy=~9L?|ad3z2tM;jTuV2LL;v1S^c;pTl}h6rn}g;&(GJqj@-O{SI|P% zTMtf8FPmAk_2%63@&5uOOv=BMo~>K7NXhAR>8psnejIz-O$0ia-9Pym9M8=*JX-8A z{nM>DORmp6^CIp%dH*0pMb*yaefz<PXDM&z&XrdBwOwJ=`nS)LYX9+kJFTVqcWM6n zyhbzml)Cr{E?>-cb%b0!<xpd=N9yjLz3=+-+V5U`v3>RH&DZVU%s$-R<(6}0s&<t2 z->FAup4`SP$M`=<r7O{>`tGkg&!$yJPyg=C{m1=|@P|*9ADWtZUq6W|*?!El_^y21 zp1uE;y>jJ~hztGtqFYc{>349I+9bVCa|8U>Y`U_mz-F%I24TgxQ!DbhKiOEZ&zr8| z{UGrlcjv^{U+<~zaxPi_&_>~~lyvB{o@G}>pDujyt~C3HS@z1NpzSO-J6|0CU3H{r zmoMJ|yZD%0mm^MpXO3f@_r+~b-rBI#^+y+GCq^ykh>m!$zx<2R`OjNQA5|(mQ(j@7 zZ6Uy<pJ$~~{a*U&mW$B`rt6=Idm_4}|5@RtoC~kdefb!F!OlWpPP5yb-kPq>YgS&# zx?2|g?#+qcyWJk$3b-xWKC^75=$(*Df49c{eyzY!dF<+|Jw_9b&6xO<=UQ0swpCrL z`1F^BwQqKp%sF8zwZSjy;LE>3x_f`$(ONO>hV-9LN2M%|hJI;I%sU`*IqLAj19HC# znx4IpKmI>wGm9GcHNW?vPtITI*I(P*#Bq4_>)CSzUT;V@{FEyG=+76ix6{L39nZUA z*;;c<<7yFa@UH#;7idlV{zCrJrJDD9#a4D38=W;OkI~-heUHb&<A98wBa^)n!$Fq2 z&6a&)or02?Zxc?h^}2WP%T%GaB{Tl|vMlJR6<ZiqbddAg8qa_0UMfA?w^C?El+~;F z|5h(7e|aVE^IgvBZ@v16!_ohXAK6^Di?69;+Lb<Y_mNx~&*#rSHfDHUU9ieF`p^F6 zt07j}@3=l+k@tUknPKj%iy_)A9fcRW``w}rzWcMdZPvv#qE@`pum7LeAbRzI`ttR+ zj=z2U?c{%%%`Ub25!!jH$_<V%`b=0OZt4)SL_DuITj`wD-2*GnDgJG(3jDBIrOWfm z@+kpqR_m9VpA0@yf5E(;_p5GgtI95;*Sv+l`^>kR%M={sD@m+NczLPKII2)JWQvvV zil@&*c;DaF&$wx{a{20$Vi}%+QPX_Za=IzjXD&G%Qxbaho74e|XK&wBgsbK^E{U0G zrpv!I==xNx?P+)N9u_rKZ+mARs9I_K?AsNO3#)?_C$8AFYiW$ZjK?c7eY=nFhg`Ir zC@UIk$FN6ljnBJFDr?sMxuG=Ah%YdjXTeJQ=+F5(mz?IhVJD#Uc1O)q508s+M}oPS zr+jmp_PAua@b1t+rPHnFB<;`r^S}A;{#%|_!$oW69(lOTX4UuqadPtW_ndkAe{apV zS5GhhyPsTRS8w<0vtR!a@2=&WS^iWN@@rbLG@r<S57~{sv0tfek7L6k7Jq|9vKM5_ zs^9;*m-)Nm`FZzE{W5<g?>ww@Z`tot(6Qs@_o{Q+*XJ+fJ2C0)p2(JmLVxx(EOdx} zq}=*xcJ#kY&za?Rl`2bWigITb?=d^ErCW)0@72ttuEi-#QU7OGs&!tf`OnB1>ta{& z)2HU>=Zi^32j@GSKK+BM*+Q02*>uipVfAP8vR-X3>`a?=Wm4DP>d<f&?T@F5q(ihh zy-!L_>~A{t-uH{+8Nsc)7M%HC`qg2*+`eGh3y<=*{+;V0zxD0;^Sci3n#Rv8vHtEm zqtE5HUU~h<-L|v)iCA=u+0K2ARwoZ~yu1*aahH7$bC$?~ee=U+9p@`8h_8L4$^Y#6 z`OL|0uUGBiKh@!;b?CsVr!qgM{R;Xp*`jmGx7pcKbTXDO@+G@)r*l4ixa3&zihH%6 zKCLbd<$hJO$ZP9*G4V&wO%>e=KdCroOHDE~aSQ(`En}iT>&~^fg%L#yH*Zyve6lTY zj#~K)GtD$kh4W%wF-||Dwf2<0ekInGbMdy5<9U_}K?#l`smX55XSvR&#d31L@Y=d` z%cXbHu21b-jn{0MZdJP1Pj*gec|cet@2hhc`dUA=naLkA`oA*yPx#yEy(jv%FS{M4 zo-=93+SIK@FXw2dY5U0OMfG;9@X}MgH6<ZYZPW5?RZ6|fj9#Bvw?w%_p|>-09mg%} znLl^PMJqm<!=kO_mio<$RnYo>3FkM>o~AsB^ADaT@%i=f$Ml9IEH;ypQn8KjzbhBN zC+cZ!%*0udrLXQiy`?viRdRLmj@2bXuF9Xi>nG23x#Bu?on=JsT=$iB_7<15&c@EH zY|Q;!x~sY`E;%F5K*c<C+td=@>&LPle_-z4&+9hvxJ>?a!SvIQU$0U!xgNE%?G0P8 zjOlh=SG9@h+{czqS#VGwGw1T&_@kTFoW6c$OO8vb>g`QkNyU#h^_;5Gx=``rR7e8% zvnN(s8z%8aPS3x5@U*M_{czb#xx62@A{ONGBuH}xuHFCZ&6IskD!V1y%Nxq3{(6;K z`F_#UPv2K<U+X4!K6Fi!Nrbr~SL^znwG&*GmfC%N<bC<@yr7~gh2TKB+uOEEJpUcp z`i56Cv@AKickR``t2nNf&E9n8^^KWEchY&M2mC8Jlf0U7>yPy>SXZ3bvug5+zALlV zEfU)F+M-8hiP?oISH;z?@BFcO{bJ4RU)@?p`T1KXB?sj#yv-?}{B+aCjN7qCb5#72 z*P1WC$?E*7sLF4H-|N&>k3xR$*!6DC>{+j>ejeHOX~mA4GB@YE`L+0w)aT`&6r5_8 z1RuK2V5Zz{VDNC__1>M6X8%wYwfc2KDy99}uBi<EZzdNly~%G@!nN+?ihI)A)e5^m zSWRBxKe6L$vtsbC;GO3*`b++|U2%GTUd%yv!~7$O#aZ?iX+~F_w)SqGrLp>SfcL&{ z4NkjGX$ODz<=WGFX;=5IOiS(KPq@^7%P-y#J<m0)<I0^&Z#FKn&RrXMcxvfuV>jE$ zrs>^ThqBL!Y`S%QrYaYE<i5sb<)v$TzbxPMNqTc!<MUgK_w#*>O@Fdp|IRGc+XWwr zr(|vo{8z1aV^!Ncrq9z>%=>g*=9qRwwe94lml<W}XYZS9<9jz{-<jusA1=7Dz)bi2 zsZEz!cKYQm^5^Vg63JN@^}9=C{k>mNu3@jHYMD;o>Nxk6On=bMtYwkg?Ut^+=;E4s zJ~r0&?$2#2W|ggvch@a!nVhhu@X58H<BbZ2lSE#96}){iJm^HtJ+@HI%@wN}qOZ8@ z{eDa`LE=%pH|rHs%Tw=6Vz=vQ>pa+GWtcYgymW)bwF&w%Zn0a>uUlWLRIl6{yzrEE z_H66>W~RAQ<5q9gIj5BuoT?p`ICYWbs^n;|Fu$r=R%`p$d<P}m9UsTeGidmDtTBC# zN9_qo|Etdq9sSPhboR`ZUftin)^beF$@_e;;%kDm@#;<MP0nvWUu5bUojmolrCIdj zJnx4^+I?5Ww(D_~df(n<6PhFaIl4S@wV&a-jVspbUW-b-m2)>-=d9Q1oA0-Hr2ZBD z!op=F=I*8`)UY|EiM^4<Z|1&5G4rZcSzAXPk<*&}@ttCCfk|ratYzygKJAbb{ru!= zl*k+9oa~7j)-RvR=~So4Jr0PmWiyFvSlq(EA<?%?k*WBI#2lr{%#G)T{S^4Jk6*Cq zn)2*_^P=Yt4Mz7fKFs_QIaBLa4U2$MwR?n;(*qsmJnb*KXYXrWefZ_BMBe-@OgkoC zG(4nz@JQ9xp7XYTX(<yW_@j>=d(8RYwSXn+zwFkYCG!|tW-Yrq)6r_npYku+-~ZIs zv(&wv$A4~@dGqSi=jz>S4tN^>b<c=we(19B!wT+-qkmT%yYw?wyy96t=XcA?zZh!@ z?+QvN3rx!B((p(#U{YUh-&M`JV7@|>HQUvU1>ro+HH(>yr5XDr8FJV-YvZqY%(K1z zBluX5`~6Q>DlFH|{J@m)v)H7+|MsG(GOjBp>TX`JjPnM6V9IApfzorUPYG>g)_cn) zJlWT^`d$6MIob!N>$5+SQWV+n<q_xAb&oz3BtQ4Q^H+DFMYT$jg+oZ}4{pZUCm){; zQPS49!#wNm{LA-Z{Er^J{z^t-#$k;H&V}BYN7J_FoqVl$^f1r=a#va1guD+M?{1S8 zxm)Wr_uG%AN6Z`a5A?-evr5tE;PbjKJ7v$IK!r_HFNLmVxW4<2*v*5D-g8+LIP)Jk zs;qL+74!+8x2x7Wgdx9rVw3Kp85f=eB<@+Bd-2lLi&i2j(QY53+kY+B2=hL-KzFf% zZsOl1x_7UcFUyeiNXuAPaG{>TSma#e4sm53ZiU&8teEA?`}$T`t#~(g3v*$^-rmlA zd5(9cCf)sN(5!i6`*Xu744Xf)%4~W4x9QRKMKW_2FaG&yTK(?Sj(du?id3gx{kTi? z$NH<Xf&XhIeyr!5yK8dytE#)77GGDo5vP(j%Wz-4uHgHq=(*<i{@yujxzRP<SL45U z=jn$>cb?Pz>YK`K@@j$VMpr}i!oyErw+VUNxhQ(zKO=af%OS>j@-gO`TV&j(+AR-1 z$2EylbJC6JXCu`1UpUfyHu{U3j-`v{F^&TqI!b?jGriP~xgz`iP|~B=_@he7xu$Dx zOiEog{jk!GX-r>O^7=M#&FS?zo09j`AZYi`=D(Rir+yt-s`*}Zu2X4;+P2jp3ocAv zQP_KH@ob?V58bv;T2)gUH1Aw&r;}p#m%<hy=2j_(d*<&9R4>Z7a_(pr;cocLP<VJ= zV@a}4`L-(g!l~|8beNoPRsL$z|5lOpIj-yP{stwdZ*ONGto(nV%s(V9ZR01lW-ia5 z6_HGD;^Xp9xU(!%yu@6|f0pljk+zo%N6DdO)$L7Bs{J+|TfDrS>9gdl_ljagW;b0$ zX4(Wkd7H0v%wXnA?S>kc$)Q>6=C-V9&j_;OO+9((<cW`5dP1MXTsyi9j1R}J(muG0 z-|H^((bQCTo89?b389PF>R5I4ROg-0-ciBWn%fsS&56g!{JC<2vaP-79<wINMJJ_w zAK3G%{JFnI%4Y38N4rH&t$LLnH0)2?U1P$k@#FX1+|S)wuif5$=8m$96aKpEb?NMP z*WX&$>AW;Q>uIrQQ3>~#U75@#>u;C{Of@eq^j>CSuyx&~)J?N5Y_;E&Id?acVX3Od z+%zkN;>8tbwub6)N}tP0+o>&lHA{B><{f!!jY6MJ5ZQcj;cEk?mL>_)7^9#Kw<aFS zTcqW3ENW}%!yiw|!ps;xX&#-af4}_8zH2YJ%R9cfE!PO^+7;L9+F0|}?`xONE6FvB zlP=lai#WJS-!LM2=QjBrcYRixse~^N=v}n+diXM_PtgHOzP|nIbCKKZ|Ftza-R{QT z)@OqfPvu@dq!-ehnwo!gneH_=;oaLjTWj9l=9p*K|99h-8$13p*LrDuaXK^Uo6tG) z-Aqe<{p)}H_;R>@(f9g2R(0PVz5LgI{KtoT`{znK*p&XCC%3GHZEmOZ*PTD#RNm`* z>~!%~M38mJ6^Zrp+E(Y*ocdKSap1<}*V@}&as*ud@9*c&_4ohHmoJ0=*Y}(^`(3a2 z&fv4;0g3-zD{gFIELXRdFBB;W3HW_ZM%AE!^UWIuLBWeFcWeo84e-40BxQF|bN^jy z-^0bJ;fvohRGu_^%@96ePR(_(>(`y7Qcirl^tethE?sQq8P)kw;Y(y2{x@*A?|F2f z_@r5Qpi#DYmxq$R{^XSj-wx<5OuoZ%PT`MIGaJ*YkEW5wRxqzi`th6T?F%)j#~L2_ zEw4jjgY((%b+3MTTz~%J6Xw#7PX76`YW}8=@vM`pZl0X`RlV`n$NxW9+Wwm_XJ7sA zP3E8ap7Ya=*I&+F_juxGz2d(yeM`l;Zf?q%<RPdpeO_4Y!_&(?A1#bq^Tf9*ubn-k zUvkkY;ZNlj{MjJ~47F{1x%mHRO8-}$a!2@=p_<~i>2i-euf?%n>G`i8H%I3AvHz1N zFaP@gagAKTpKvV`5v`P?EYp_=c$Mwt5X@%Ri2CLsq8Q)fV!q_RrwlWX^pmO0T|e|> z*ox$Knp}<!?oD?4kjQh~;s~c+!KtEEH;-ECTCRT)a(9K~lTVlTe3ket);;llV1Lhs zV~U(1k=93NFEc*)tYg;ouDdHQd;MPUX46`WrLWiAVE+6ob3uuM+Ch%i6aE};JI>Cv z^!anMvi7#r%Tu$iM?Tqft9s^Koz}uT|8{`SxY}r@=59ChxQbKYCBsMZtzY(BzoV0U zWXTt~7u|6im>b^k$zJcfZl&Bj=^V4+!cL{xwl5mQ&-a|&H)B%E50y6!-_s8-^USYu zKB}as_IC^SGG11@+tP*aYWKP&&zM?%cJhz25|Q(+Ij!Hw^|<n0xP180WiMVOzq-6) z$D<V*>tEh~)uHiy^ZvaT4Z^SVx;u4t{xISC=jeXW{(#ojo4@$oXX`LzU#maw=Qr>9 z_4@OE^RCtRf2v&YSN{90_pkMjO;NJfJ-9D4`Ee%aHwo_zj!V|^UsZh49eaV-xro2O zM6KIHAu@}5@vRj<{#dT{EuCK*y`<#c^%YYt_w=9tnx*G*ZvkV1)5$w&bF)SN8b%+l zQe-;uRVMu2=Y!Mr=gB7pPF~xh7myvgPWsgmuh@T2cE)aPTe$SL@ws(T>2|G#S@-7L z3eGowZF76ePv#pA|0mn0ew%N1esk;F`&Pf-fBEsW`_I4kFF#)X_kMAW+=c(|osO5v zb)S0pTyD*7@jZh3-ih_tCLX-wx$@`&-8?Ok$JK?~_FXP}UDw#}qMt3TsUrCC&#Vbc zSWMTb@@?Giu>1J`Cg$9I96JxKl?=YNCT05dOxxUpY}YPbkC^Iv*YN)2$~9Z>ywH~Y zAfKO{-m$qn?5Ev4wO{s+mgoI57ht=_$G&d%fB$(;zyJ52zt^H})_?iOpBX;yFYY>j zI9g<#zgf_hufFS_1}26sJUp8r#U_%`KkUHv3|0%}jhFM1*51(mJz1McdWpxYtu2>Y z{1@J-pWuJ?k9^1H=wgxFBAyLZ|LQ;f`EqpipI`rfZeIS`zW>wBYk&5ilIvR-(#k7i zxp)3j%`hw3DSl7<KmS;@Q6ll^yc3t-{PT!T;0n87$@~1G^kv@7?)|4T7x2AdEI++X zZq8%2+Yv_?eJ*G$G;qAURBPHVRqu(`mmi!9zxpP1&2x)gZUzy36Z{uBWM;iv=<Pb^ zr%qi}UHIE1p0$5A_xi=$x3ixmKE)(k(fvZevQ@2ix-ZsUT)+BGilv=u-6nbO@<%27 z`W0{AaQgK8d0Qd4DmrN9oT)Oa-mdGDO!PEAGC^^%UQc`UO76)gPl*PqS<dkR9YuDr z<<-fs6u*<^A{Hqp6g^jMi;>kj8XUQy!<HjLOE&(v<y7xL>7XM|zDBGP-{RmMZQ8qQ z)>h-1oHEmehdA$Ty2EyqeTuCTW0ua2hOg_V-C3f3H1BiC0@VqcuZ8PfPUi@%_16oY zCb~Y6|6xh#6US-SYIaSXm$dO_)OSCRj*PkqW^#G1C6iBHQ|Z@K6Hz}M$02!nd*BMW zsr651P0{{jKBeKOv51b7%iBBGlEu@l=WpE>x$<d}(4?0|BEc-pa-BN_TNWS5IzCAy zI_s(tBhTUD!)9s+Iev0q^qI6oa?^@cxBV2l-Jab@wSC^v7}oXht9-6$-j$gGb02$X z{EFtPHE|K)UN-Zp`mCi|Grbd~F0Gv$)XG&_JAZws$ca^v6Q8|4JxjILuyog+^^=ZT zq(t!FJJtSb-Vp)UD;g{Q?g_rDX6CkP-VU3mn;$H(sW($^Jg%FkT;MaKM%LOux7@Jd zcaYv{xgf8@t`esVtX8*rXK(}utLgIz{5iZ^r-#Y<(phHkuFS}HE1%b&vi<3=_vc*y z!9b&aQKq}|9W7f56!ZK;tbWP9X>REe>RPOMW4*?_#om`)ucW@0T=d`p!<Gk1in<e+ z8(0p^pZJ@j;`#$-zJ~2TE(q4&Z~D(rKaoM7LH7dFy(eD|XKlL8mfAS;@auJ7*X<FB z-&Z1Y*>~d|;cwF>x$^9*i41(EQP63l&R9`d6SH(9-;R%S*4cSgU*o^&`=cT3)CtSF z`E$g&!*cSL>u7ggoKm{)YSH7+iQ=w3IxF(^B!8;czWGuXGBGmH!Shv9|9c(#3nwm4 zK2&|4CH36PCv(ze52ai)bQ4!sEKS>>xOUUIO}BDl&35M;G&waf?((y(a&Ma6Jrd?K zT;g58{?u2>uv2`|?A_}W46~CzTW8MMa&70wbB-KsnX$Z_YbTvDzdV(Fqy3NGs!3Dh z4IDply){wS`tEVfK=Dk^*0Sc^+Ee_p_)cfCcJJ=V*?M>Hxd)O77QGza8|odIo`^-y z_K`0AAfxQM`ATGv8SBnj4neo}ov>tE-Lb1Rs=Z{_!y@D3t-^PlYPpS~r(IFm+nQx| zc<Zc?t-JHvE1Lc+m0wieQgcSsvUdB_qURR5QOvFF8oP>TE86qt>FpM8zP<V1`S<sq zy<t;a6?N?7>sL=tDqfg%V8X&_t<}lAOF_GjOnD0)$fase+kN!+l3B-Y@AR^(vEH-G zYQOLLx3Bif-;IgAvrqo(diQl*70I$!FUd>V|Kg5{TkQEU_ww7nle~A{I=YqXe~rs& zKQWE1UJt)qO}X#PczMT~rXmZm!ktC`@4WqcX}`_xy?d-)Tc6fanRerx{Q~C?%+IEs zRq`r`$of$G^V3gbe~sxY^n%}=7WY@ryzO~MoFTg8)3iI&_1ov$n`^v!@oU@nb@zX} zYUE`GzJ6<5Isbn3($G_XBd*%Znx*}V+uJrN+WgJV?gx8jcplALJzs9|yd8h-Sc`H+ zO^-j^v|{or!QEcJR%gmj-0r@NHE!|pB}Z*v-z%wq*XQ->{=?4YwsAMp4H}bA7{%A{ z?*Eti{rTsAxm9mBbO&4A))CBZ40DOf<9U|$Yi4_H8Rzk%J8SE0SLp89_jY^FcGnG? ztZJE@kJO}077LB65OO*DgIDi--g&**qE2yIcjml%T+XhScDXNs(c*g6;Tf$hH6rg0 zzq+>DcK@zlPiuEB+qE+6#nQ#jyI4}}I#=ILxw2d8+V{}r8_%3n6?ePs@77LPrLx;n z{%+j&|EsU>-<PR2-?7|OQFq()#TVZ`C@T2;?boZn1tr!M)s>}p^-Z631-bO_D$ViH zj69NK(97Za>DJY+DW{|pVkVt_=UO@W>iG-(mgc+j_s7=f-OKROySL``gvZe{Cz;Ra z-kmPqe45w9HKf#h#^Vgx(7=Ut+ABM!R0PWkUca2bOlg}!|K44htE9^uuV0+--TeKp z>E_LG-_r_8E2}T=uPlG6v-WgSb9YMHB9`At=6{$}jf1kBr$*$4-`#wB{_f{@Pv3j6 zsd4*)jQy!mWqt`CjCm5DJkHp)sqfa#)vfl@J)bUp&tI>XU%y-Kj)_@0^O+s2nIHFd z)h)J&EX~qgeQW#ny{k{3uIt~P^K(vU{C35eQW{mO%|6_|T^_!8_NkA{Cvv>!@K#Fi z@ss_Z_&;jRZP>ntO?P@SR89(9^cGqW$Rw;%RvC6_>ja<kg)MC&z8{v)aw>Rvo_+e? z+Yd|spM8+;8+tlz<HWhk9^Vx!&O7}j&4NdxE9=O<ntDZ@<+tzcKKS!y>Ha##z(Z-$ zi-L~`>~(HjdFbk+`0wt2U&sGW|9Ut5d@0kxqj~wYKc9cNJYm8Hw`bk&?&tlSzRYy( z%DlyGwfADgKLmf4601^7$un{?P1s&#SSOI;WaG#=?e+vcGtkQZf}aZ}S57Pb^6ldL z1*LaR+1h1<=tCCtJ05MAnY=CVF(=1*M}bAfHpiE88|pszxuCwX*xKT;^Xmsm0s9rS z6E}<Q^%hmgT_*K1I5j)q_}4Snw3?HJ4>5_abo;wfQ(^m;O3nLgvMfHgzFhmHG^L;{ z;+*f<{@I^>efW$63YOm7s&eRp;`6gVJ$zRGeI0FhC;t97w!`J2tAD2@9T)Kxkp1Y{ z@U6gRb;L(&l~-Ta=W9u=FSMAMeDlGBZ{Gjk-%fbe6}vi1LH^>B>%Q+F<pyZq?LGQt z+7&O?{I%D=mj8YC^Q`sTd-8v;@018yckjN5<lZNd{59=LM{Z1*v{Ct+p|%naQvuUA zW|PKl14eb;6I*{iaS-e5@?96ReYdmz?9Kew)9#dP5jS7@ZSn4SMco<V(KqzBpD@3p ztAAfg{}<aU?x#|BYkQwQ`=aKenl80!<+|9{S>1aSmXuVk(Oo!uP4FohA$5b~Jw68E zpOafxPCfIcv@l2WKhvJwq2;$b1y{;Stl771Zh;E>>9dQg-WVQ?WRBK2wNLwo?w0OF z%6Ir?eb4!#Y27_*<s{{E@mdR0Lk#CXvM3FeKP$j9dFBnzyy)YMvsy|cbxV2^8oakO zMZMp)Ld<g6?ANWjE29m!1xhVXyAYEp7iW6Rpq$Oc?%Ra-6;?H?W6!Ox{}Hn-`XlR+ znu<^N^0%B#?u+`JA*X(tZOfN;Hp`EOZ$7|1i!(9Jq~*jeh7W1y5<aEKG3&o%I?ui~ z@c*9syBXDWKU`nTa97r~+u+U;`(7cB$*yl+_@1fQd~{!m;hjC|GlQnJu;<6{rRyh! zS?=5ZaO=XpHKk7$PblA8aGCcmOP{j9!3vevYd@v>-m96C@-wgCtX{(B;`T!!f38~m zO}ZZbbLR~9(j701jg(6L60`k|&)7GuSH@j?YgVMA$dAPqRV%H+Tnm{V)w^7A4s@Ds zcrfshr`_9xsf$c5Y<PA_>%i5oEoDz~HGZ8c6gYO|#hvx64Z6pI9>sJV&UzIpq`pyg zCYRzwY0hxpTvgSqTU=8^XHVOf6u-AnGW`DR_}fc&UKOs+?uamU%Rld!{PD&a@5dD{ z^kfb*ek%4`t~*6tHM(A*aH{a1`%7j9Br}_AQ<^oC)6LuS^#KE(ZFwSBBw1FnpEvW9 zk}KNq^Vyy2Po?%OT>C&HZtKi|@Do}8{~SoWzhlbknS$Cg1wJ*#N=-YKvNlRh^USNK zSt-dTvrkKlWNdD5owK0wp^~P*tHHHdk_<<9b>!Fo>v3uf+1Yt9V&klkx|MgNLuzVO z5<-`T&obCG$xFy|-7G1G>0BO7Utg<op7yUXHSTEH{F)~{e7)7_nCw?M;>!*w?UD32 zc)iX0-{IP<5Br~<nS4&|bu4>W_5bUiFU$P<zIn3xpZCXq*3^CYy+7yonNmxSa~`*k z{f*yt&o1`w$C9td%end1U9I63-gsAZzTWSuUsullFEqIK<eC4^m9ziH%RYbi-=ea# z=2OZ4>x*l)+5CUbCbP~?^51i<@|Gj2;(NTE6Fi!X&%982*8K8(cS2N|_>If1ivFAb zm0P}^z5UVd-&bYa?^<^_TU_gt{@f|tb!+D9;=ipTO3Ht}*fm+UUE3Tqt#1zNviQeJ zli&Y+H7Qpj)AaNIUEy_6^Jo41|K#fD^q)WfUp;yG*Z)Af=z0HFU%zRa$hD-J?J4)) zRj+O5FZ;4w^Y89Cm*$pN+`28|YpDHYSudC6-3MCdZheez*kJqO$Nx$7=X?L_$IrFt z{onub=CvR3Mm^kbE2WOhKj(A58fm^~_xsthPr4V%|0)tlwz#JG<p8Vfd#^OkiyCRa z)^0!ZtjQ`m=kv?6T4ht?Z|roNDm;7RkISh-<ykwgO|@cle)OqfUFpy0cMB(PGETng zwM}L5oxq|`Q`ehWD+Zq3TIf1EHbMUHyLHdQ+O{`myk4O6P?ht-gbPcSeqpZ_dcOa# zG?%*Y8|w}COY724J(@6ET-wdCc<1L%r^jDC=Gg3LyBN~0F=cP*yo431H&+O{WcDm} z4ZXsCxOvsI6QX+q79G5Blc#J_>Fd4XdJ%^>Ewt`lf3LFl%ktnkF-hJ+k7HJc+ZeCb z{1Eak`qZO87sHIZe|uyzy%bUX<dgI8&6?M9R!2rpwLSB~!uR%<1wo-ot`~GpG%_w- zbl*Drz*I|dlf~!4OamCj{U7s0>8UMGDG+V6b5hZM*w(z<ack9)KYDk%_}{z6oZO`q z`+uUt{rwBKCCR<|_y6(b$<Nh){{A07XJ19sf7@fv86VYuTW$U=;!axk4F3Bbzw|HN zJNjtSS*Mka?&a#qQw~hd;Sad~UFogBcOzr&v~AaVgjrqoFKvA$Cgyu?<C4bmm(_*! zFRwcJe3a$8D8eeM@b1_Hp*F>x?vCdJL~@P4+>8BNwsW%e`v;ACO$`43Pk(=R_vI5) zT|fTaZr{o`x%SvS^@QiO)8C)l*PSqF1KVwx12bn@mroPC%T#h_OO?u2S+#TTH~*iu zr0z0*>1BZ#vUjV$9qE+|T{>x1NKokC7xjVVq6g>qJ&-##@$A*hm-|>h8vVFhuOS__ z{7L<UgA+CP>2N#_@30rB5@*u1`^Gl+N4w*Dr9T2HUBLlC*PWg}IKJ@5t!?4<UWONr zZ~JZeyZm~gj%1Z!lu@>Pcj(>{$>~=`Z-lJe<^GTRq3X8t2RA>s`(CKdj(vUn-l~tU zI2iP~6JqZMvYgGn9mUJ}@cqWt8(oE4zIcB8`}4xWDLFsi*W0iC_QE`<>&gGs;p>Gy z{lB^S{rCFanztwX4|I;zxq83I&-&%LjE#4ye~Qled0exnw0KfQ=$wm@w))-4vD3Vt zl~2%eyJ)CXb-+%gROQ<mv#Z9sy@{#%uh>t<Jb$n;^4WsfeeMSr{PK9ZFnNvgq#s+$ zQhIb3Y~1(9Hs;y(Zp}M<a+=AnlsDhsHKFZ~`}~~?rbJ%+z5K`D^Q+TOe%}A%dHK)% z-J5*>&o5y7siSf&VA+PguvPA1>K5O3U--A0Be$qu<EWA0JF#uQCAL3f+J3)!x8KDZ z|HWJGZ1jzB`278U`uRAO`}KD9AD`Xqe*gQw-l?$r|6jbnVkq}}pQHRAwzmOSQs!9b zZsXYYT>jtVlCHOx6*4rOWlT67rYt%?!`<HUhNE%E+85@tcbGZ<@hD~0OSzV^?337u z{1?VX2fFM3KHvOd{q+C8&OfhfW>jTM;z_t&Xj!1p>U~5o^q{a_b@+DiyLG>>-~RTy zu)M<hM}f6eJb#}1-E&{B9)0n4a(bP4EtBts<H1~--<0&XTuQcxs>qtSQ+~VQ?jV;B zBG<n9&C3yFPG3+Z@wZ(5&+>8$))V`VPq|^#dER!3gx}hl0%dOAo8KoY-g=jwljsqi z@a&eBX6GN)&C$}fcdSJ86=UxPv7Ej7k@JVpjc(0HdRy~V%lGo0J<;Z^x#_1?My9av z-dr2YunG6i3HJXjxpX3LmqJhXvJ(*kA5^xcf8cm<SoX)q?mM{$Ca1^O+hoeH#wJy} zIVA60`9ku~@#qgJH)Lb#K5Wv7Ej?}@&tJc5Z&rMn^NJ5Vf4)g;Fg-fRaJF6ef=hkF z^9SGWAFThkJY%Y1ku%TT6LQjj{{8;XR@3;V;*3b=Y0)Z%xcCDuG50cUSjC#Y-<a3! z_Ak3HY_;h5Cc)VoHa}2bqGvwo@gE*TaockotO7SC23j%(voQ6~zhPlK=K=o*6{|IW zKE9r~y+zi^a>t&1J6@LGH~XXOdWtKbP4uO-|GpzZo9lBMw&(x-^E!J<(1rcYIgBB% zO3yHC6m2mK3D!QRG}HNs+-Dutxb=S?Rz7N%3^Qowej9dl`p&JAyK5I*C=}o=*M8#A zb;L;Q^mI=x{e`^Go1RSh(H*(Q%0n}zQH|ZO@3;Do^b*&de2+yAE{zJ}n(#yEmr(A% z+c)3GOWPSJ`_19FAvDdhm2K8eF@frG@31fCXA9qN`u)wbyx{K77jNf#?m24WroQ2) zdWKEs=l}2bHy?L5-T6`e-n1BrEHQSuY_Cf<IA%6^$}2q6e53u^=VDL5lx;aufo#iG z-)?8!7Vs*MW8U1x@W>idp{S!*q|d5!+_e9sbm9i{vtv#&bx{lEv(7x9Zr|Wt(aun; z$#uj~Alv=hIff@p*2fNh4tMGkx}Cys&SH_nH5Frn9|{SPY<pKMxO;EeA(1CD7$@7@ z(9QR-?`Cr^>C9beS0gaT$U)@v?<&JHx5d-{br>GoxkK_)OmF^t8TsQs*i8;j)+nDl z=f|1i8kv8O%-R35_;ayXSy*~*IC=i<y&q*Yx>~F5=uGPD@8_=0TE|>a#5C#6cSoVC zj?0!$>zo-qKeXZP*LzV1?q@E{OmYm&XjISqz;;=~BK-s7iS{pyDrcNdc;-tyoUPDN zb9v&z?cd$%Z*P0F)w*@n9JQ+2LhCo%^y~K4-k0t>CKs<I)vM2bFMPk-{%UKvy}5Hf zEiFD3S=^@i*mtM+)@c*&nKq@}6KHnae?4?(#@;ZsO%GOa${s&-;)~SDF!A?$QXCGy zd$G*E?)6LSi3h&+8(#b-DXHhaJ?Ql=RXy<?X7he9{{O#QUgcu`5&PeowZilNvM};q z$k02m`FVa+`r6Icj4wQS+crUjOG5vgmB5+yGsirAJUtQ?xSZT<I&tBu|Lhs(93FdG ztqnSIhX27M*@C&t6J8ZH<eo9ya_A_FN@S`XQ~wsuw}uirsdm9z_sTag>K>k|KRe{P zvDdU9sS}a?J!fN_KSVDnESd1}#oNir%taGS|9CD*e4b|UCa%|Z63g<%Q{GzH9r4^E zoPXQzE%zVo)c1aoOs}PPD4i0zUBRi_uaYv&Pe5<QGlydnIA<j_a@$^3o@|oHz3=<4 zhMe3}E)S2GirwT9TDg0f-SnoQ4Lq(FA{2zz9PxYAtQ~P@>Bo6T?PMx92w&bNobcyC zZ+puPPWGoAty40%7P<;PsOXev_jbReR$Np1uha0*exseQG=yI<q`j9HJn&R$vcf9X zd9J-4{l+ybrro?N!u$LEF++y#cmLz|Rn6S+f1geD&%6J2Pu?{9_x?Q+4U${SWY|CK zPW)-Wb6VQ<;OV3j^^ZL&q<;SwD(vFDwnm0~LBjv~pTC|)e)@a-bNKzo``<3f(fl|2 zxba1fTThi)T)q{q-~V2^;?P3F<~R3(_NtgYYuQ%we6!V_PhD*qZx@MwfAf9!|6_H( zpB}K_S^wwAnYGo=)#t_sOF!8;bGbRk-n6ZM&rX(|`rZ0`q-fQ-v#h=QYCQYG`U;NT zdp&dSQ|lwg8G}F1`oesD_6?E!Pi+FKnkP?A694u`?u*Qcy>@#J|C`lbQN;07^IffP zxp4n?3FX<>W}PVDxxR3-+(PI0{P)u*JDGnxq{mfz^zy;=&y4r6roTDy`_29q=Q53( z<rU8^T=;L^#~AzM|5v4#|Np)@JA3o{fA_65Z+HEdiJbFWirK0v>4&+cfy|_%>e@_2 zb2guHan#FN`MNPgQL3o$HS@%2lOBFE(fVXAxPU#*<jMbIh6}o%{J;6y{NxY)_48|| z|F_oM-SuDQ&(^CF7w)_MitGMzh2zA^iOrjyU9FyZG>LJ-Ugj_IQg8Dm7RB9|KY2q~ z!pu+hN0^Pm8?{WeiZ5+hDEie>W~s&tV~=P2SKm}<L|+vT{#9)`XOZgvr9YSNbhxlZ zKzluh$jSfH^Cx|bpSQo_^RL~1?z{dh`?!Dcy?VLyztS=9*WRyK%Y7w<;Y`BAgRwES zp)KkC?+-9_m;TxGyz7RCM`C$a;<g=1H606fX3bV}?NNP~pmaQ4{`Y*t`1~oA=^G<2 z+^+Bu<=fbsQTF0`5M#mj>sL0kw^asC7vi4Fym9Vd(Jc#vKK*Ab-re=%`h@?l-`C%( zvH$;mNzTcC?>~F(dboc}(}U9QvGzBZ|0d*Ksc(NG#;SE>|JFU<um6e<zfmpmPjtQL zm#6=)z4@;{Z?5WJ`*U%%_W$26tJ(ee|GJzX@vqKq6<zj4(`Vb(=P$Pg<q2L={x0V* zYppIrwZg3v|I}~%EcX@re3$3b-Z!-uum7JmZ@GJ==>~`Y)ur2}{eS-RbNc<i`^$p1 zz4$--3#0Z2g;NEhpKtKp{yfc5L#gP!jqj=%aq3^QX0bJjC9!EW*<@^;_bVgT()Q-6 zvRRA^zlL88+T5EgIps!Yr%&=5=F8S!|M2{8_X$l(yxIFdd|tR$)#({&+qN!WzVyuI z^^flvJ+0N--+4Wi>6HiDaii0GH<vkYkd-r@le2s!Q^Uryf_vL19&Y*X+U|WVdVS(j zOG~y^KB>p5N_za#$L(G-Ou6Xqx<c%T+LgzL7i2zJ%;&PQHl)S9R!(W>k`1=~Uv_-E z+_s);tKx}-FaNh1ZZhHZ-IdFdS$c(OY0{Q`j$MoER3=7euD%(6;lkg&OT^}WmT#9i z8`G^A_m)rL`=9S`-aLIhef{L0_v37T=l#F$d9&^B{uAr<PX$Pxt5sfq>P2)l!<8Dl zZVA@^O6i+ssD9XRNAS;KUe~@>-Wfk1o&UYpIcD~6{y%5DGY;=ObLG|X^%4$Ty4;bU z&L}PY6PlYJ8+*J(rq`lX=4^OZ+MGXJ)5D|=e7yD2<c5Fp_rx9IRi_fCystg^GEv~> zCYP1TFU69DE{dFfH0glaBD3Z3oK{DA*6n<3RJQ-bqy8fsI`TMQc2$4-uvKQ`=H2V- zo~`hhR+Y;p)iz%#L`nXSZ!zz#A8KvW3;Lq^vLjFR_iLVv%JJ*mw?(aIyDm?2`PEl8 zGBsDkWL-bY%4U3KPFs>}F*{NEb7;%iz4}`Z%JD4Z+;KF3%jBS$LWI4z%lgi)^9h?6 zoc0xM5}$niaf4FZjyGO!U3xWcn|#@}N2BQcxkb_QVz$ZTGyd~fAARhgn%X5dhmdOr z6mBhNy3hTzxIJta@4E|HBLAv<L*D9yc&|~q_&ww79I3xix3ju<Ltlp-=xog>s_w5@ z!`u48!8G}SK=+w&<#wfvvW~MBtv8+-))=k2(h(~rAh@-tI7YUM^JvZ0jS9)19{T)9 zQ2QC2wxoZn-8H%UQyMxXxl?wDEh@}Nn!j1$WJYw_yU(9?x;(RAA0<{Yt9JTK+naZ$ z9trmm+#CCiLwx-Li77gT*Ji3+RLrQbH9N4lUTF1^l7H2vhXszG?l|1SpZ4YXYNpS} ztKJ^qnZ(r{P_s^;Ug3-0<-59Tgz~RTmwdYQg>A0soXh8h?nH%m2``*w{ZF}KTA1^` zpRbOtKI*6P{YcUDruEZi7;ZFVdwlXk-J}0ONgs~7a~K^;b9r-m#oe7YmX@5_il+=7 zpD>%i?_|;!FLU)#a=?@#LD@s~>>9hWrMguOXW!|1_J6{uopWsd-<XxMq_pd#nPDDR zmDG-DQ-zKgFXpe*@aTT<Qe40Dbmf!D2Rzl}KTZ185<mOc^CQ!b-?+~p!8c)ME{}_) z^<Q_JNdF^e*4Fu(e9P$n$8fx1vf%O?^O_&ahy-twdvz<f?63f<y7~gfSU;)47S$=- zpAwp%3HWT_ob~QW%)jr<6)bJ19WS%+USK$T^Rs8=kH=d7Z#A&yso%U&^S5fA;*V>Y z2Fdaog|Z*MX0!gtHRk=JYIyMV=FK*Gefm@R7X49Q`SIB9+b3njyQSwAIw(tMgub(> z-q&~Q*O%pog1C6@E}U#U{l=+l#}{>+?AWGrPw&T^te<CIFH>n)wc1<JHnNC0Xtq`> zzwg0S6>YpH1ie2z4Kk5+*k{rI#%iUkYeeYg{d-!24+(6&erbb4pX-~+3Th{eL>Adj zN!C<a<Itr0-p9xBa%b*U!CS00O#A9=O*?EauhQ^X8G2FaSnR8Jzun&M`^_|ILi%p8 zG^qn>59TD^zLLo{%X?#?WewxJ#%DrxeE)Q(MF+3pxsYKfZI$C#q5SQpQqTYEJv+A9 z%>A>Ug@vJ}t>m1;<T_*32hkjhnWtNK&gDOn+H5DE=GpOObL7^;;WuA*|G4_@<E`DV zeHpDT?ljWg^+Q0q>QlxvwX>%?mTM#}eHyf>aG}E~JC8KIFH<h3dS3PnyZ)1HiqWkU zli4#mAKp>xNq#(OhKB5)9HWSeww|ep3;SE{sBUX|u>F?L%+8CO*0FC1`6aOHhTOvd zlSfA^{c~hq6j!v1PYbC%`utO{eQSyK!u>x)H{~o4YT!;e7+QTyQ1;Bx`}+#@C;J9J z-}S;`q47_<Nz%SaNecF_b8bqWiRxap{ntT1$t64|OatOy$Znk!r)Bi@LTp*6@s^YC z%oV@$FL+ybOsuVh^_^mBgYW|Z_oWQy&iToH`=KKC(YWTK%KZOJ-rar8Ki}wA_4}x4 zA-0SCJGtVYrIviVSgmNvB_G&XXI|$lDt(UoQIX>`f!ojX4{!In`2J(riGBXzXYYMI z7XJ41y|=F4@1AWx@=QbWknz@_=rgg+!3ULkCAZADP-Y~euX)jTrmAgy>)a*p7a3jN z@hbnz{n`baw(WYAWFXq@vFWY<^}n-EzkBPNKcmxk-?o{Ifd*IFyT9$2d$Zi)^78ur zduGe|t_pM&DrX<*_^E7?Go>%EHb}|peZ!>c9Hq<I;n5k7Oy^v>_t)@A^GCVpn@_%{ z{WAO0K0P)zE!}Vabhl|gPjd6i*KjT3H@~*PZ?lUy^HjF;)n3zHcXcs6Ro^1DC~}sR z@E$omGl|tF<99oDPqW@)72hwhx9`iYpH`1QOKIl0-F+h(F=_E9aSz!uA?*CQC#-Hi zp5c^~ZE$9~Z_<<X<;#EQ_rCpfQjDFAL-vWW1)G>+`8sB)@8_i!JnUcl^g>KeK#zs` z0~V90q}zFG-%Bcp-@J2lS@Tx0vzOk@E~-28^UYj8+s74#bM+M3gHKEll5>4i_c5>e ztfE!Oy=MzH`u{Eezpei7!*7qjdc1Iy%(nkq!x1a|d7A4pdCtdWucT+*F|@uO9)9=S zj`CX5RVF#@H_VK#B(E$|j{o8|o3E~MW}r>oxz|Da7u#*S*sw_Q-x|)E{pDBp%JS@f zU%fx1$;K$b^4dj*w4UiN{F7dvJG`U(=HLC-!>{hplUN<6Gp928&vyT3QXV{ZTk`d) zk{f+0Wt5b2_p~WD+$p>D_*)x8sX}|0S&Sw_$*;ZduKxJ8sl2rMrflym`CX#drY0t) zeD=<XS334UW@_a1#r<y+zdPyl{44$aXxsg2^Bn%_rwbCeJtkT%IH7dm&1210k#y#X zXFa`tSnjeEWv;*ZZ|SSD84|149aS(n@l(L|LC!bnGWO~6ZB7^W%GOAf)xV2fs+Awv z;O@SHJL~^^Mb}>yojcDlePS)P;NAZBUTS^}+tM`;Upt+j)0OO4`Q%8Xi^uog3EuL1 z^sel9_@`w8vu;g)M80mAi(1y>a}T~P&nv(1?z>&7`}V!73(J43ysO_F@$15E$1^&1 zJxdizCzfhlcJ$!cDVh@G(`|L5WL^F`FT=P~3rZg<@0~gQ#Ix)~2cwOWy|*8~TRNfC zse0!=&DK-5Dz@g<d_F3|cX864#ouo{+Sq-^CxlJjZeR9&zTMNW&)@aviTyi1@6LHs z9L>X0c7?w!|NHLkj`_Tv2|clj*BE$bFR_+(xp#e<*aOM_V&eq4@9sg0@A>lG?>=1q z?!&gr(luw4m)UXgxf;8;cidCHb?}^0`w7VjrMnIn_Qfv0B78>Vv&XR&_NDb}voCBZ zpTD%^@#}{_zP)<(DYnm1@BOE0-HPgEXX8|pFK@VBz3TEh1#dp<H?iB=_n&%LZuD-c z#Op_9rw>fXyEi*AWv1jZ+n=+mY#;B=_TC+~Zl2W-gPi!1{N4L|c84#%_w{Pq>dU3i zL}q!Mt^986Zg%*{wYf|?zxK78FaDUjd;Z#WFB%`6vG;p8V^`01-B`69B1t={6+;ev zzq#GD_rRmomxND!Z|L1qcT}aH?d`c~=}}Pz#hQ2I`qu9{e0%ll?m5m1t>0uC)n8~< zG#&gI{os~N^vvyR<M-G7oK#i%>uYxKpQeM?*RQRZx`q4V`uJ%7zR6FlGB;K`oB72h z+x`8dn!nsz=T-mp#cy0?cedMR|DBuK^s)Tu-(79#j7gjqzDfl81U$P|z$fM3r+oXk zr``LL>vlb!zrNl6WqIWP9#Lk?f29*x=j;(a``ST@argXPOZhCbettW-r~lo=cXAJ9 z#aCzS%CdRCC1Sx_H8<I^zlFCS7k)1?&|5lXRb%^!&F8l53^1u!cxj7S+0@A?NpBWy zezHq3bw+mc^|NfdC+|L-F#GPGX9g30Zo9*p#Kc#-a`WZa&Xwg;4-{_}mjAju%IDge zibYFiuCtXA)p)w{eax1&>mfBZ0(tCjKOXn7@G)s#cT{+daG;}K^tqS|hU{kY8@4R} z^YhBNsPt9$Z#<2*+a&(B@ONx=NS*8Qo{+aGZy7)BtG@d3Ufg&68q-AQ*5HHR<!-X= z+IEKVsQ1NXU&0=9cCv0eqn)I5EmGm}x)VR1pI+9#_h0L!cX`(GyXVd~yRmVz!iv*Y zo6Wi=@t@dpq->q2E^oN%{9WRo)-By)xK?6HuA=O{8DbK*gC_9l=a^q`EmBx{cHWLn zyzh@FockwrtaJ73)3-0K51-qA`1R`7voF5gVEy8|)!Uq@?K^`v=8Ek5X~TGaTkADd z!>xHwf-daZyJw$9>S;geU3y!VZ1=pr??21+vrA3)%JlIr{Mlr|ESz$Gy|z)+iBi4m z%e^I6>MfkS>fahw<xB4>7e@xnx?;7#EBrRcr7!D(7xpem<#IexD9RN0f6>9Tp9;(p z*Mba>zKEEAzeoHN*L`JaL$d`byPnMx`nl3hy=_Y3>yNA*2WR{BN(ES*`!sXYBaNSZ zLF&I&+n+tGetG|L&SeHiS1;$Bb;9H4ujF%;X>xW?gqKS^;5e3J*YK?Onx;n4tDZL( z7G&mqS;lK3{@~_k^R=6=MZS)_)E||f+PI8SYH{BF+mg-cz4DXigglVid~CBbi|?F` zVHt0>&l2}edQcVSE%WHh(;)V+nXg;bHmpiLm~wvM`?^oY&$_h_vHFJRUS86%aS3zb z!Clt83i(!(%2uBKa9W(<tVhn0oz5Ob{Y6QRn~PQ#E#2_!*Mp~SeLwg0=OoJCJn+6S zcWS@Ik~^hAX5wN$mp)soYL;Ou?JaVPC;Un8$CGzLB6#M%H>&8r?kB6gJcy;^%D1hp zbtihy2*mWYoM$oOm=*7M@AtIVYHu}m$X)i>=CL8qWL998>$W3`26HtoMmW3f&rW=3 ze!*S6$Xv1a%%l3KXD^SfNR%!vwldNv+hJiO9(vNrFZY_SWN_!oRhAJmkL+;X(wXBI zZp0oD%p1hFSSez2-<z2N=2sK<Nj=ca)wa#Ow&TI64<?s5UOl~^oy)fDnDmwxlh*3; zMC$D*b>GtYeV4+MzRZHMG8^t^exY;MXr;Dmg?wrj<jxY4IAG_ha?&h!;>JQVLytPo z^Jk_BUox3jEb!vUjgQs3@(JqKHszGa?%(LAle9oIM1A*hsic=FY~~U*JKp{?+9B7s z`|$1gyWi*i-g|LJb?NPWJ0!~7CBu21Yr6PklyRS%yGFI<qTKd;_v_||{l0%oyK&m& z>u>#uOnX25dH?L?{hR+2&qN6c?=>|P4#{kIJc(a$<JtKAS3YK6-5Yz?qr>H-VMf2( z?(z+OP7}<2?6aAm@!3de>cg^k#qv4T(Yw67-q!#A?vZ);T0!TM>ucvNn{q8&_PYD8 zzti?wM@_F+`2J|ck$1b_{$9i|MK(_CY46U)&QtHdMaKv)?TbBWr#j;S^CQo?vMHBl z{h2lCljY>b;`F-ka`~N$uNnNj|LmG_?HA`+|6?VV7rU)Vd{&-6%}=_L|9Q-GL9Lrn z*QLX|!)N5hdB1w}a!$$0e_ELbYz=--WIL68Y-h<{6|U#AYQx|5UEj9Viha(m6%v;| zRr_jvi03oUdJ(V2lFsF^-*nczoqNBwcfVMrX}0uO@P!X=UKqMf?mQvAKm5j&uCoCb ztsQcdlnZ56pPVFC5<6$HE^Eft=Pui%buT|K`_NGu&pDmphtbU-<Ll)QkBQ7Ne_UNU zPxX-e*5a8PY?nL;N|Di%vXgpda?5pV#PS2>%>v$EW#;Uy{Ho>o)pmc}m7P&*43>5_ zRDb-~onGm^eZtZ_h3*Y{-}>GkW4L&1*Pqh3m8)&OD)xzRuc@E4;_EfWTP*u!YIWVi zFCSR4>+WWq@VuhNHRY9iES<kSGRQMZX5IO*=#oX|87bHL9W#`KO>W)u-^a^$yV&4e zzr&XNhR7R_5*u?OnT-YR+)6nh|5l|sQ1t$TQy(Ua&zRS&Z+XRM;vr4RS(oa6_edW9 zwkO$fk598<;dSXPPrZsKyj}E@Pu?JYinOQEf*%rjLVc`J4?JZKe&vzBr)Zyb*T;Fc z#7dT_i|2}8{9;l3MPt{zoc;WsX5Yf5Eaxz5{=ugBeObe-7?X(~gC<`%KKXP0GK;jH zrBkJ&lmEK!+8%Q4tw-wDrFJZ9gev!5Pw0Pkk)1(`Ey+hClXGqy>vRv*_!}zw_(Jsh zwwzur!qjFqeTL#Qe({Y<Oq&ax{_g%}(jf8A`09GC^u8NWVfh=cUYm5;I(JHt@l_oQ z?aC(^lGDB@eml_7Gn<Pi<BYCRYuJy)zpS6`5Sh7lf9~2NDj!$sFO0l0<x9iPnn_B` z{h;9*z5e^RlIP5wJ9ls0&!B(b-@MWJc;7sK-hP|kw>M8;KW~5C=Vw<xi|hX@`}XJP z=gsEz%;~qCt#$MsPx$vX=kdl#CuBVYeae3IFXk%@6FDy~Q?sk4LBy8T_I8GBFPr#& zlixQS%$(28OYpNf+%d2D+k(44Z{*tL&z1fA_{;0-ix(eJ`d*<n>710+kI4~iNBUmx zy_aRQfO+|iLo&+Ox{9K1oV(2SenalO=855{Ek6Q7Uc8+DGo;*?KWP0*9?mIT52_w~ z{t>6n@!`m1j*B`P*}ty|U9|L4u@(N!zQN#eHp`c)FZQeN{d$#r<=y>H%*&s1T7I3a zus+u*tIeU}`{GZ}-5T7&E^V3quZ&Z6dFgXM!L5SsYg$jPbezVwapKwQcVsj-Ua;g? zIX6LqHPL!yT}Ysf!zzae`2`GnPkeiQI_tc-)x4AU=CAykV##L+nmRIyTKs=s4uj?v z9hHtlhh8{%Uhco1X}P%n^^6IN1(#1){8Q_z&{1}?I8)i5>U@U3w;Gq+SZU|auGRQt ziRzPMi{j5bn^-k-j-1ovqrB^#?=Ilkz210_ezdKMP*;`g>1`4-XDDuyv3kwX7}D*W zGH-GB+Z{cH=9^wAe>?Lcu3*ZlsI(qg`-fp68pgl$wpF~Iv)Nl<iCoSlt92b-Pn^H_ z2si8PD{p<DIW@3ZGjZ0YM@G-e9VPOkC63+ERhBomwp!8~R6A?(-a|KeZqHb+RP(lW zCHt!d^}Z95w-+*M99$&+W*+za>nz@{r%KAT{5W+o!Zxm)xl7{FCi$%|O%~N$x^VmM zrvAdBxkWMNA13N;?`iP$S;D(_MGQ;b7H8IK?+}(=Ye|{yJHE+AwLXenyl>U4)`jny z1ZDfLy<xey{;STM8x~*Jmiy_rOpY#pl5Bgx-F>BSS$jmvJ}FBP$IZ?;$25-^zMphP ztMuViR!0}#I|APANlJ4ybxzC>Uv)Wq<G0{d&-ULtI7`$=Tr5pz!po?RV-GuO{aO_l zFZ|}Cyz9uelm+}EQW*l=>H_D=;<kqDFtNTiPn$P?R+9g$H}^i-W_lS+FW;6e-Dbh> z_C~?3=i>bCJm%}!$McR|OAwrOTJ#Zr%e|$3UQfPPEWWp3^34V2FIuKP&b(oKrSR`< zi^_!=I@6Bi6lvext^N8_fh}i!rTh9GJFeJ$L3@ABegK+uHl2TP*+<KdPYu7BGqf@L z{k#-7Z_4ujC%$j-vAgyKeGqAyQ0ZH<-H9DdlZ7ud=&AQU5tU{*)?{;IfhCJ@PSY}L z%jy6BGRQSPEV^Lg$ZX<J{H-QP?q5%Z^1lYno|!Xu*ttA?ef{$m+iKb0lD{1~UpK6e z*LIjU%{aiwq@uQLTjjc@xo7e|9$RV5m%+mPa<}q2-x@8Qr3Y5L;+*++PWa=u3?6%` zc&8O-xkrE8du^ln8exMSooXhNG$Ws`^;tLf#qXsC#|sm$o_l)oq~|@;AD)dF9(T5j zSN(gpFvDXa7pqfZWqQ&qo*9!K3h2k5$_f=(a%EM9;A6eg=<3DWw$?Iwc68i5*}mx@ zC&LWb*ia<W*icwxa9TjdmKnUV+Z6T){>~9R_CMP#COT{Ve|<(qhWSr}->Us(6Z#tc z=8d3l$==&udK#5?ujr+|;_9EM${&>Tt#GYfuJQ5>;_HL2Ny+Y?V{OK<MZh?Kcfp(& zcdFJ19*(d+BEpiTJH_ha_bE${`fe(`xk9*g^^T-Bor~(SI~+bP71MwG;GWF+2^)=c zzD%63`-l>M-Rk3RQzf#L!)FL=xpApnL#ptR%H405l+HXoGGlW3<u41&rv6>acd}aR z;W^1qTVAcIn=x7WPxP*;rFR=U>$2EPuYFf*`Nz2B?)e*sCagPPyM(8JN#@axPapc; zRQq)971?{&xr_Dc<aHY(XYPNZ-1Swr^zU5{w{%CgwJ)-J{#^IHId^I53afhQ&vu`( zLW*s?c)o9TGOOO=#UGc{d{ii7?tb3+(^Z7BU2mnb*;ZYbj^C<Zy<Plnx%o}c3&uuw zWzv7ddsOBvT4}8xadc*5avcNn)%!2@|CW+eQmz!Si~XLjxBI5$FRrU67u773*Sqz& zEbab7m-+wZF15eJ+a7fDG*{E}j<+UTf<>$=Jbza|U@uuDeCK5O56OU{e&3hN1f#6~ zX-IQxthj0s`T64M3yCIkk2G(2{LntjW5v_@RWpLLrB|3#nDNMk=0soZlbd>^O7>;R z|H@vIP4^YHgrxedYHl=pGW)OJv2UvOXT!gpn|!?H<wdzqCqUygw$IVVX=-EsEQw5y z?h$;>GN-}KJ1r#kzJY_@rk&cp?Af}rmfk)6<j;)HH?3z^wY@9a$Y?xy4=Z?(X70i^ zm3+b2h4p_O(;Cj6Ro=O*Y`5Ao-R?8?LdV`-F&Eg$T(xp%)%EbBGp(*4`yw>q<aPb0 zZM>74LZvNzn5UUnTnl#CKOH_WQ?|eS>eQEys`pQ6w=}xt7P;Y?mE2?1Uz2a_+9Lm5 zZ}<Q2zg98zvoc@h*l(QQ{r}s^80J3*+rOQ4&DXi0!C9L!qgOnOrR%m|^__bxv-qA| zIK`%w`o(Ym^}SN3d77r*y}079qPlC@uNQ5t6VK{ztnHL&E)Gfi*k`w`{Vw-LwqMuZ zcHgdhe|LlJo6H6Q-h-POL}oH~=`fwOn-}C!XeJ<eXLHN^#kc(ppG<!nul2U9voR~N zcD_X7@!CB{W=_1Zc+Ye0bplgw*S+5qJ||>j#+xVs<K<4#di~Sp+wZiBdZ~Q9NyL24 ze1W0`t?vc3y$Yoqv+hXV`FG_l->tv*mcR3`Kc4w-N3_F99lKde78FmM+_R%%&##Lo z&K{f9+a4!%ZH{2}L6==|dJ|)(B$)0J?FWyuu<oi1HD+I(9z0urSwY9NCvtm_i@CqP zI3+ms<?-^jw-djA`V|~Lr|S6Kh5xS2F?w|D(BA5+b=TkD>-&8(;l<O)KD)g-vWsGr z8(pR>{;j-nYFYdC#qT}@msi|=$!qs4Fi4)YeUaoMWtaDYZxhldIzQn#VRiSR#qkA! zuX^LUVil6F%-^;DnrX(Z!v}(XJ^ETuQ(ap8Q|~y>)XImmh1Bd1yV*`zc-Z94<vOeH zu?<sYf|nXhPtLEu;B9!}XzsN}tGjbd51%kH_KEyt{#D>exysbCIW|-B+2q^acE8L0 zKE3dJ)|K7+R&CO7{{PUjRV^r3_i%@yPfqNk(|gNo_DJ^T-~O9p>%z<@8JFi1d+heK zcX#5s9B=Ox(7N~gjr2sfsHRnJar=|1+?&hNPZ#UtmhOC#%YQul?n1BXd7d$%5zjcQ zxaK7k{1e+@c0BCa-KW>r$M0Km&$aIFEs^~RAHHU5$Em(;`}q3$waJfFcKSuVxi_JA za(Jo#{+g4wZwY1peEe0TTGxG@)cL6T^qC2NVk=**eHhsg!Bk@FCL%m#r{<jIW0N1B zI9536eD$W)?|wXg{m}nctXi7R(@EQ&w1^(I01c|lu4j$8;r`y~#hk+*->$gryI0<V zz4v)~diqXVPvfZX!QuZUmV9fpoB92s?WMapdx}#suUd5M*X*0f`l>MLMB;V%Ew*yy z`s~TIu3^1aF7tdhpKUEV#4WmZYooWkp)j+!tkL8}XRWv9Cpd*q%K06hb5L&YPuAIs zB9H#Q$s+ShDf_!*tx!dnh2*-UTlWS|Hr1ZDV)jI@%8&(zmfNvhl!^;Z{p7GicFS>j z<A)!T{;EZ&FWNt+>Skhb!e>VB>SOc#->z|8_N(`9;8W%5i*noVZ*_k<z4(;J)(DYp zQ)g;!{r@&S%}aV)+Zms#yJ5>~WM|I&^4qu7Slu}IRdV5k*>hI@h}pSKGtb;LnBf9n zu*uWj$iu;x^CvFSEPeA{^T_s@PBH14p(o_$?KCT!dPJ-Iiqy2@+dY$}+Wq=2`YAk0 zakt0ksm4jX*~#BC_g!-Pw@-_&AoPXaRIj)duY0pU+nz1sJ$ss6STX6`ddry!LDnAD z6GfIcF?Kd^YPLTRIzCavX^C37Cx7_@#`?0d={hcp0_9WUbdt_TrOmX-m+af0xzjPI z{=Ad6y`_hc{A7vp4zr18U!GFD@yyrM!!o9b@vN1>v=gquOs}SFdzx_n`J9HQ^H_3J z*LmvgD78L&y!z~^r&Et8-Q6B00_mAoe(U$2__r$i+436-vu`Zew?sYVOy|F?^A@kY zaPr>!t$W&Q*Q7>%uiC%SPr_=!(}?+ZlX>;N&ivQg%)k9^Jlpldh2<5$i@)E^-ES^c zzCQ1^xcK3`s;d9R1#!A-E3*3jChA|__B#Fwo7C-}_s?G5zxn^+8CzA<s<M;RR$O8@ zo;oi*VfOyIm5=W(%C=dzuil*#-2eW*(aUMW`RVqld9^{2xzFv&Gf)11eP?U%@B9Cj zI^Nn~8YA_hboKHjOTLC4U)or=KUJUi(q*;u`w~-bly9#M7w|u_YxeG@J%-sQUjNg5 z#}#z^-r+0nW*YC;_O5uh!qn&A_Khve`|CVD@8`D8Ki6S;=Fhvgdoq>ZKb-U0$VpZE zS=HlRYiDR~>#jB1D3WHzZgunQ<brjQHdpn^a-&xlA6VJFY5DgFPSt-?7o{$3_!7PN z<;~9M`W+qXW+hdc&ueN+XXxA5bmq*BAA1jd(ldL?ay|Hli`%1+;C5N97uzkGUAcB- z*?TPUKWo17YM<kp_g)c4m}F9KUf8m|=g`|lPS0xUL*{<D<H~kr(Zj_LPb`WJ;TC55 z!#*jga$fUh^YwA6EBCdV$6IZW6J2H~xKz!qZfeM9>9`3~cgftgxm;t;=JC?y^Q`Z_ zOW(~h`E+jjnFaDLva8x+`nFA3teLqW@UB%vm$3HztXFq4^3JvFwP;wXzUoJqpK@yB zv6{dy?cJJ2j*H*^eR6xn23z*W|2SNJv(0GLl@mKL&D4PTV67Y5pNoE*t_OX5nxrIH z&t@9@Bqu8C-<A7|B7a^^@QHC|%l*0BpuFBB^BnWD?jmJRHWB&5dk=1O;I`>h-Z5|O zMQaxKwe^`9;>uGO6m9veG)peMPtNuF<a^&0PadnQDstWZEJ`eN0$WzmMVI0i%b#9d zGp%%o0ry_FRcF7re6f6Oe`)XZ&6Yuy`b%>}S*~q%n%-bLOG<<xL!!fQVVmlg(x+2r zdF|WaStDz*w9)2mky>lRLSLn{6+aHU>SVfp`1Ct{pH#w+^C9o&&aq6&&g4<v*_%CE zJ#4}egW6@YSlt!-Wpocu`sXYsF|jbXk+FBD>#_@6^&$1kWjd5Li~fAR{apY5aDBt8 zPp*VV-q2JPo3yP(>X?PKwRQF1PfP#2zj-tA)Bf}K_SF5`o~|EnTmSdj+11bW<NmyT zb91$My8eH*b6FC*H|*$f{<VE`?{P1sas^kNt(WU%N;@_$s@V77!R4pSOI~Qcxasyf z!(_*gr8keWZIaCTb|mYlanB3O4E|el`|m#ceC_5%d%yj4wpLzms!F(eJuV%#&YAr@ z!9%BnMfQ*98~!7G@~nGuk2UbkN%BtJI(2UgugzZztuMh--bNH$p80&g{EBOiEUi~A zURPdpto(=6rY*lkx>EO^KNTZ%@|e8hx~yH(9`5P7#uT*l<Szy(hAL^ZQeD+p<zHW; zp4_~lV|^ym@OmM~Q>_za8Xhx*PtUo@a^axS(g`NrO7`zKKJ(0*DBXTviqG)x^Kib6 z8yY9Zzm>bVa?K;7DH)nuUOMn+OiNrdW7EWKQYwi`_Th8qc%(;e{uC3x=-J!<!8x;U z%*)qd>-zRTe0{vyxBuqn<M;gB_y7H(H&y@Zmsh;nE%9S@H)E3G`_fRCAK^1J>yO*B zck#yTQxN&D$(VKbul}_|Pdav9{_ogkb-;A*N4Jf0PP!{(&HVgWCB?<1|BwLJVi&h` z>q+U>=X}>HZW2gYQTnw0-eY6mYyaLSa@*#Z3o*9-{{Pwh<lp~iSHJ)L-|y74Z~wo1 zd46_%e6sZaznd3dIXY|C*6HVa>rTwBd19sPczT8GMhB6Oee+yiyBoW&^=wvMR6Iq1 z&F4>U;xY4PwO>nCK3(2=BPPK1;)a#$y47A3Da}7|WM`hwy9u(Jzo`bE%@n`;aCY^! zqtB<U`8z-QAFt}|ZU6p1dh_P%tbhOS{@Xk|=<~n%Uv->08#apWoMiX$`kBcewi!+o zIk&*(`O@Qe6jdsoDq0&Yc#+We#?Lx%cW18TlG9mI8yMsE)QN7HnVE9+vpbhm;L?Y! zT=#z7mf5N=sAi~dKG(fJVwz3viUq2j8rv&(rpy1{^2h!4d!Il56%M7Abd=^iVwm6Z zH|L7C$Eyatj-vcyZWVdTo0aWazUJh(ZV=k6w#*{Ba{|9s(A0K~e%U>F1p@32`-(1D z?kHZ~ajQeQ&`;Ru>52JLl@H(V+`i_nX=Ri9(v4htvuA8CcTwM5*dE4v;X_q+LtFW_ z-%m0*nvO<ITATE%u_er8l3&`^#s&YTvK{izn99`1n7yR&l}>8S48I0j+lh7hyLAfx zuHWi#P3U~CQ($kh$cy^)_4D?6y{OlpKY#DPb^qTk`oq9Bf%~e*Gt02x^>Vqsu{kqu z%wuMkDlh1Zc>RLiATEJz&uJ;P8%&X6Gon+trcIFM&N)AysY~a?N83qp8WZ1NFzc^l zFq^ene8cfRAICPIuRmVe`$avtwJogS#-^nVoE9BS+_zVhUfCsax6fkXix=z{CQ7UP zxFX3Y99(u~R&t%z|M158E3^K2`ak{uOJ3}A@JIW9^WWUF<F%gU^!Qxq0iNg%*}sdA z%FS6^zh&8ncQ531_m%Yh`}kk>FN2+9SLbPm_lr*VMe(WrZ|14Ha!9Rd`6@Zp|HU1* zGiv_w?|$2TIxjo(nw8tTU-dtq-TZt#z4Pn;M@LV;f4+b2l=^?}n{TpQD4Z3S(qVA$ z%W<;|v;U<fUz{H;-Y!2QVHeZ;Dcn~sPP`+r=;q3)@AxG)#_YUj`?rm8pTotjxL?JQ z>72P1?jdhP8!S%bt@4gMz`5~2Pe7>S8_$bj7t9XwBz50W=IWTs#F{ND`?suC-%tAm z<Ag|=h4=f#=UBh_^X1FKhl;<{re65@^5n&fGn|BV7564TzxU5QEk<V2Q$=rw=18f) zsDwQZ4NA`xobx(tUU29f4V-o31j~(SB8r<O7cJ7is9(7u)ZgY_qvJHbErv-&=B#?c zZ(WwE8gM3k3RI7?y2j;D&H5mxO?OR(%Zh-n9H~ZkgI>RQ(Jp^r$N&BMZSL-qPaaV) zQx>xlx+I@4yD%d%VP{sAyOje^O<k4OMHyqi@U!W<qHLZkzRcsFv$4Tsl1bD%wMEYt zFSb)GXVUjm*;5#H$gDuaFm|Tq+y4!Qv5ohqFf#Ql{JWg{mY>D>xUNG5yY_56YWP&7 z^YdP3LuYk=)tiU-8D>TZCO-4`joRO(VLO|hp)%(0ZTA%2!-3Cd=-*i>V`6i64%el* z44!QBn|S_+CCxsc;>A{%!|c(^`s~C5J=Z2Hfj=TW4~vVr|MciI>m1$1u%C13yhkff z2WoZf>tAH<7~JjSf3)z=mf~7dxo`LG_Ed+<M|ppCDNz$(mF;Yf$lbUztMbZ(QjvMw zCk}`xO3!#97kNa`hFj9;sM4R@yOu%hc7B3EAJ%UFe$u*h=l0ng`;wXjjxpUTRtcT4 zlUs9(rBg!Vb8d$BircP)e&RB?9>H+pTz}uJ1-v<57<`^Yq^Mpy68s?2_yE&A<yLVM z-;^%DP}2{$9d5<U+8fu=ZFG1`&Jq9VCysnzy#FwGX8X>kI&&_2cf7sLI7ittA)|m{ z=7XQ-SF3ckN;TzdX04LZnefyjN5d%AS*ON+u7besJ4}wBSH9@!yr-~%LuASJ1-S~d zUWDh0o=DSk^|9*_D`v?_T9j}-N7nS9fTfrTi>vzUCG$1de19%od1tZOgT%&O*Bz(3 z9c!1X9XXJ{D$2v`>-I<grp-4x)gE-qZ<#jd5{HR9n{JA8Sb(-jFna0ud-v8&wMb-( zscu|wRDAWdixc-h5UpoqzLn5*#P7+=x%)f6vdXr%F1TA6AEma--ge>>o|`U8%bra6 zGx?0t>b6c*>4}#1e;C+AJmWdqER&kvE4}_1`TA$~f2*ujd~sX;g};8Ye~+!lJNcsP zF$!0|Uc5MiC3^FZRo9x1IC^q!4fWoAQ{~QX_2;T(KN7z?=bOm=(+b`@hi`ZD>%jb) zxBusE+WDV5MzHVP!SzR2&4RL9cLpCbEZ=FKDrRz_DMD=#k57`akBXssXQ548vx8dA z<o*szM(szJUfg@kt$dT!l`nCI@UE=J?@m{0+q{oE`PV+oa!}Q@O{>tV;(j0+q{(;v zwu$F-zBjjL{F%MNa{tD{YdpLD`7c-7G{Jq*ixSre-PC7$+|Dk0e95xQXThw#Z7Wq| zx2(Au+>o9iR4e{&e_`;)b81OT4UVvKs+DtC3cHGJQ&^`Oc}Mha1IL_Zf7$t~6<fVk zcEtSo$^1h>zLZ)0(@#N<+aYz8EaD!PVV!GprJo9V7)w;xRI!{r#8je{8}dg`#X<P1 zMBLFu(p5g@o(JAv{N`k|h$~mTs9slOmWh<`2EGdiw%WMcn4M(PU^rULGuf?Jb6O6A zX6w_$8kWiT>--s>RLYm=oVcM9d6zjuWaZ+Pga>7;Q|@0iv|icm^l^cZk=qTG6><|_ z{p)`a!4cKf>M(nWsUCAAqr<-7G%bgJ{gDi;z1b`$u3H5$a)nIdX=plT%H)!KbDmmZ z!<GJ4<LNIJGg#?1upK<IlrhAlc-5?Te=-?M1bt$p99)g3zeqN2sJZU2RhhG4NsXfM zga41-JIwR(Uvb?oHbQJmC!=2w<0hXMTbA80o7;X;>d)WqZwwvsmzQhZ+P1CMqioia z-uT#NC!uF0x0aOF2HB*(vSB%^x-I{a^<(9L=js>4?9+5MY<YI;iWXCbz<o(!hNb!& zwmd6km|~X6=x|bU_1YE&&!cCJ8?&|YZiioYa7pd1IT?6w+xksQ`xh+>nIpP)I>%%S zzUy+_uKYFMSEcn%37Raq{EEvO$@(9jYkqYEpBH=XaB5@7huS#ymH7(}m)|<hA2CN# zaa!O1?Dlh$nHK!vo7~{qC{+4|aaCu~r&f0+t=I)k-<CFLGHCr$Qn9POm-SU<qb1{o zDee)4Gx#5`kTov9_2rH11f@(-vE?2)N?m6ri@mt#e7aR;=BX+X^%u%BYJSdQ4SAw@ zLWMEpi)Px}38{>twFx5Di(SNGkMHjMAQyQx+=(Gd%y5Bepu<Ut0P#;E^KS^<`edQ< z)Nr|gz|$=P8}-*k7WV~OIc|E|Uti%Bpk>Q2>%yX4pXMv9VVHKr<w3-mInF0V3>C!x zg<MJ0s$<^bn;QO6Y3onXJ+4Vg)xQ1{G!4~vI#llUwV5}mc|yTM&W5HP+s~N4b<rt) zy4=4xXu>(s)!i>=Z(i#(g>j0=6+z#yqLUZwg{N%U@q~XL_s4y^H?8wna_!P4o~gln ze7j#fTs+PD3Byt&tqUQ>Vb6F{Ka~DWTQ_&gaZ~Q{thGFce!AuGUJ?~L_kMMq%=RF; z>pHJ9%Y9z97=M&8Tz52|^N?oJ%5VR^{bdMm(0%YZeEoUFoUKv11|O!xD4l)qY2E$X zB};qfD*g-cJm6r^QD-qHe|CmKXuHqasa`t_ex7_LqyCGj@6?hafv18#RhzXBv5Od{ zq;K>$dw5Ov@l57knUn`NxhhUBezkqZ`z>o$YpmRQX}Z>|UBzdoN-4_BW4tL8k#g>j z^eW9y%%^huF8iI@B{nBY+tDKXt;`C;0Q*WO5$j7G&V6a?Or2~BFRdzBaxXU0{_oOj zUIOP7pZ${Dm9aqS5M%p{Hwi1kdkgm6etav^K7RqD>i17RDeGBY?#X^JBUB-A!uR>N z-z2Yevv?nv)V^cpr<B?S+U1t6A`@o*UuKvjkkKgJ_9WTkGRw9#H<;uf+HQOPz%@dC zwfj`>oX1OdPw8JEz+S(jWtaC?uVV{SJeSx?o=W$>*F7_gcZt^{<I07KLc%S@vcg3s zk3@=0;<x@drFla|`4z|S!%SzQ7w{Aw*b~?AVyW4lZE-D3K2N$QN_+C`o$Q=;YIDw~ zqx#L9Yd_{aoIS<epz`adqo0}TJcaTcK~rExOLXPr4!UOCEbQQPk!M)t_v%2(@ujom z)F<q7`qOw}w^!91m04@8JT5+&G<{nN|J2=CRdXEnn7^13_~aVrb?FkmDH#il9?B$5 z3v|8W@X*`Bvu}k|QNz+rOn2s;-O&5fORmVYWYTdJdB^q44^GHMEl`hL;q!Hefz0Xk z&-ZKPG;T|s$eyw)r~8eJkHpN6oC+d7Vg@y{x7-anYo%n__t@x2wECR0g`W#net*$F zBVOClV)hITzpYNOdTtg!8>}5oRvwq-d%CJHhU?+GfPJBPa|<p7F}%CrHHTrz{iSwS z_tmcKEy#LgD*AxqVaV==GS!H8x2I)Q#dNrKHr9A8&ycy~%Y6QA*Y|n%7llk-)s*ZO z*HZe|x$Zz(cG?8yC9$T53X>G0oH{2n_a1hu=RFh}v1*RR5v9*pPb}n^C7WdIr?~C& zJ2{qzA<7G)8a<3XJytGmIg-3e%tRy6$MW_MxjhA*Z+4c57HekB`XuUmiDg!eOGx=j zH;eWpCE-`m6E?0s!TonnBij*{I%kE+vR7J<Y}dHDM9Wz0M2W7;*N$aupM0iXnAEt< zg2_?epE2uf^n!yH3(I@+b@jh`nI0;1nSNv1@2l)wye1AJ!o@8-NwXzSe-*5-SN9h% zb6OVS{>M*nMz`J7>LYt~r}oDv>qk_(yJ~XXUy;i9#5VTx;yujz`vQXkT=Z9e-(l0l zxjgS;(Pf1@JtrGZTDDBy-+ZriNr;l1^OPtfl~Y}XTkbIJ+d9?Vpt7v&+ZvUJOqX}s z-Tx_*?iTm=FUOy62VN&+S6qu*RT!i8a7Fg^o4n4ivo_v%Tw!;y=~(oU?c0Kkk9*!( z-(joLqQ2KYx#jo7RDpBZdt%pQYnT?#asFt#?LtlM)+_<NoISoh*;-e9p5K&tzLY`S z=d<07C+f3grr)YaU!oD7r6#jQ=aaz)%jKteGCXth7dh`(bIe-VZDx@1!z4~yA1|k` zPXxahPHr?=RNC^$+STDo313nxo9moV>9=+JCsrq1Rg-aUbDVarL1<yG>)V%7GS5xf z`m*+F3x#O+Cm5CF_Dz4`#A@KX^uE<YoAncom|4$N)~QWs=xX#oz47#sK<~Zt3njNb zkF!en`e196O5@upU1ACMH!nToVA&%4S61k%mhibl#wlxfxNB9O_<eWUC7-Ku_=$pC zt%mq{1%Ar}nV@%8^WM7b$}~P=x$Qa6on(%-yB8(4u<w<PepFMlDxzWO?da?K{<Eyq zd;Zg}cw))rQ<Z!-zt0d#-Lt1%q`UYgW5lafg)vhK=6d_~z5em?<kgA)7Mu*bx<*7b z#>T?woI~8JkNcUfnkmoWnzeX;$nHrITJhzdc)z;EO}xJ(XG4hSL%q(~)t<t9BC0YI zG}9(M;XabX9V57FO5g89f!&@tyY_8u+`Fi`qqkChgFxoH!mffvnO6kA2UxC`dMIHw zaiM;oV@pBY<>uwFriWMyIitkllIBk3lKVShUz`K;RRe>??WaC8PFYpQXZP^WnV(WY zp@M#4?rAM8?Vh`{S~h>M-6WXI?6qvgho;lgCw4#W+PYSF>fLEsVh=1H9;xeJSlXzw z<J6w$S{B<--WiMJ67K1)ez4tn$y4PSdn|5Gcs%FP>x`c)PGQy+U6rnJ*K#~8`lfg6 zu$f=fpRi`tUssLq9BS)N{VqDn`P^1oN?#+1J85ZtS^tB*tJrqLzhB@9k~UYBDduH1 z40G8ran-l$iZK_LX05Vf@{RFZ!xm(EZ<}9CS=1`et1J&oj%3XXv2}?GyZu<G<+9-F zl|f$xG@nh)3Nm%Hkli>-FO+|J(bj@FeGz9Tt!nq$1rt{d<)2X?x@1-P|By#3q$(#$ zW=6})S?gb&=Wv8$d1=VmsjJ#OPG?oe^b|z7UoBZ#)gkiP%XFob@|<gdrp~M6^qyut zuvoh|YgveG$fc_X3ZvYw`mC%v(V~66FplrTi=TTeE}gx#So(j>dZsVe+AigJnO@$h zbjM&>ljtht>=y2j9nMScsI^GDhRr;ddRFS;p3tg}l+`kJhv#hL=`u<-T*|kEX<NdP z1BaPDvMy>6UQopt@JnpgjKFZ$h<Ur7$-LdXJLqVG?z1ghkCa8H#%(D%@ts3&?}JpW zQ<4^}e2dsNS<X4lqju@$bbW>IhwlfdEZ+IsuC4l;(~emM6Iz<*=jW{O-Q`}uY5!U< zk25@>>wwTKjvWsLN*BiXulyFJIkV9_d%+f!*!E~8mXiw)NgY=;YR%-GGR@~rfwyU& zcbds%DGlA1Hy=)0#m{{?C{&bZ%CW*%g+H%-Qpw#I@^wPkf0-BhH%kuv<j+(3-FoBy zmC1iScT7#1>K~IHeKT;Sj!ez0y~m?&bv%ze+*!Z+SZCE#N&a|kNk6-t)AyO)NRx34 z=88QbQod}D^tyJDr(ULqSULGvf2Kt(@m7qPz;f%fR0gYM`P>D!IbNzQ^w`xt<?rK| zKlbxA&;ON|cKla;=5g~6$CroYuDS_6E0bPiALAp~%{HO7>|4A)qu{S!%wls_o$yze z7Cg877Q?63Ho5D8c}9FsxHpPq_Bhlv$sS8}S@l<6bowge<riGC_;$~?+;m-N^;-Ut z#Zo^#H7DNJIdQx=V9~Zm6SMynavi^tx+nMPk$=7XS2!<kb~paJKl}9c{fmqn-U-HP ze%$bW>7&%Mr_9>4`poo`wk9m_u4vz566@%#P!$!BBs_iVfr`exTO#=dib0Ez8I4cv zD2&Vfqi)2y_*dlJ<{9^bO_W7e+H(GR*p>OA=z8$=Z)_hfKV_G#Znw%w+{ZNGwETs1 z_M1G08%2%S6^&oY1#myq>s*<5VoJc~11?I<)0FoqeA>Hnqe9C<4Ozy=7tEGxv!zYZ zNiF3*{roV`#cG#G?wTeszGT})OAm+pAN+l<z@(1rR`~wBtD;HHD_7Mg^}Z}T>{9lK zS*JhYQTmsYtEXy)ZuMW2*<$@f`L&u%dEm1nv)pzZp0xPmCeGtu!3&t@Mbv&-nL5#O zgNt!N&BfaC&kr?U#O~c+$F*+V@x6ZEHGk~1-SaB8wt{Qd;fG&8Xl8uhefVSW1<7y6 z8UilteZyz}rg8HZ<rx|s+5+pGbEGBj?9R~Jv*sg*dFwIRO{pEK7o$4D-g`;QB;Ve@ z?jG}{C(~D*-^0S&cEWkz*_{HJJKf)#9tspul>Jh*LUjAuY3>G^Ue5x2cFY59EZmuG zHoxG;>xTt1)<wM%b=~p(gxQ6yseB=EGnA&Q6rMP4Y~Z|2@!Yi(wvN<ao~bQXyGwNY zWVu=IOFUb5X|f@+T2e)S-^QyV3Hkle38(icsU^*2HG22yr``h#=Pi>qE|)ZL+0C4? zo%j0=j)zwkIX_d~W*nr>+7f*%pY!Ayap4m^f>*6=eJAob2&K$mn{d)$n?}kt$%Tya z@7IKUE$$G0$7H<N;Rsucu+o*~T|JfWqNlLDI}vg$KF7G+>@b^~S^q@gAQqn^qI37F zwucor6-!E;X@9}^x}7uVVb0v2x>L{oneO$-M9Z?{jxtx@(VMd#scy2|@~wJn*zLy) zvXky@I`Kz2G3Naat>E<xhbP%=`7q1y{`{DXqrc@lw4zp3USnx_%_8M`@vmo3f!Iv* zjl3PgEcW&mOnD~?A3h6n*=>4AaQbFuwYzF9#m{m--nYBxxoH)LxcU@@NxKXLRX*?P zzH#OI&XCQ0DxB9FWukt5sb;A)VsBgZ;=X?6600MhIMh<iv`y|W6Y^WT8?t%B=Kri8 zf)!hpo(cLfM02n@@2eJ$DHpiTyUC`BbI}$JevfBz*N>Y?1(+P3Z|d{BF2wxU$_M8E z#o~p8Za-S0YPCvq@7t-q(^k1YbGrX`@{Ooh9r5OFh70+O`KF&^lypm3Ipe&ejzO`* zMArp3L8n>hRb2SU;kIew1MQ1k5p~7|I?gF(l0^zr6WMjo{HR;K|5fds7^4fp6LPuy zgz`A;UuPHmbNJWo<F|wB&5P~p<yXs2IUA?ldgb+F)pMpy?JeDt&ctu6Yj0PU)w0u> zbI-uVd&1g|f>$4RR$7#-o>g_Upw8(;qu4%opX2|uTb<Jx-Zh0S6n$slE!$%JbzY?^ zXZpMUJGGWyaj@9C<b8IF@srJmnsr653i4S-DMf$I3g9*QB+Yugu{}o1>*~)WuJ#Pi zcNeR33g=qP>|Zc>(b|>ntL7-L>iZk=P10_2A?V1G9LXc|-p)Lm(p<1@Z;+td=B94B ztd&yAmv^7!Z=NhJd~W~Ku2vKK8$rE~dyG^*vv=9-`pGS@{*~PKLN0H^n5KeL0z9$% z9L&DQr^|_0W<RjltMRe_0hiv=*$EHaCwEB6FQ0veJ)FNUT61bE^CsUEt}CYR*_Ref z=-qVvjbVvQsOz#R$IKK=W|=9ksk+3pcWH9skpnKQjPeS*j`Vak#|TuX&(4oDSC6^6 zg+=hw&%3ghlGeIeEDWA;d7@+C!N==fIEY8gd!rcJ$+~(MgU{DMcCFpIS8F~cw_Lva zSV-piWFOTTi`JdlW^{N;p@D6KOqFTDoO$n4Z3K@s2Cx04ct2^@#q&zcm5CRQ{S|y5 zaxU!#!<kYUr_c@TDYJe3eJxpD7i{IubhH4kyLh?g;=yx^9^ClKQODPuw!`P=4UO=A z`I$?WDOxkGicgX5VB`wzW(|24*R{d^9kb=?y|RKW#sW_()TV?l*&O9;%XceV@1oI< z=JJM6JM)Y8vfXyh3#whob>&_%cjm8aHcfsW+$-<Nt@7{Hnl1QFeaoe#v2zN_GfE#E zSzQsfG~-C8@?z_4=`t4&#{8KpUVXm1gn8`==`eei`PXG51d7yU*(DnmUH|Zj`*x4> zZHG&(6W%*#opCp)jQhi3;kkpgX<4hpZ^_R`MISn|oDIEgqM4-gI__6s+8J(*hu;;R zGK-09v}EkF-f9s2UPz~NXZoB-r&V?ddCJF5xh>{md$r<6@JESYBd%Fh_o^e7GCkC> za1DFOAlAP?|F&w8(#h_Qnc2Mp{!ilWxIR0|>(!||-QS{p#@|m{wAJSDc$XSnS?yqP zzCZeXn1RuSPz4bt{{p`~CNcM|)<^#gI&}V^`W(cf(OK^->KAwz@IU)FbAtGp*Bl*v zuN<?)p9=c49oe+OcK^gLCj>eTA3lf=<mGs}MwIJz(`4takO}Np59{<Ne0ue?TZ#RU z#6z)`kK0-kmpz+kc)@js^m)Z)UrHGQzHT;@+O4m;j(u^<Zg5XGs3q9YD4gNE$i<wi z?eaGZyBg99JUe?{etf?DT9xwBCM%^4?|7|LzfLSY^p$Ncv#QhzH;eWexwqA1UfCc2 z@>k}M&Fv;0gEx!Ce9B^0y)1kSUQEg+vQew?`=T0_z59-IPUSS+v79N5^Bm8yFWM(P ziZ+Ga-gJVQ>+n{1-*-cZz^SaIM-=Uk70OIki8Fhc(>J@_eXo1{hCfk(hdL*x&dIXc z6{GcV$^NXSjG+0q>raI~*dcQ0?n0*iKQ@O>ZeG9T!pZE6JROsj-+aAoTY`n-;u!k` z{7MBc_)UMhFLLFA<E<B_OP^3L>pOOkA%*As+r8%%Vm()JnMo>gOYS+rs$+K{^g!Gj zeTUs#Esu|Un(OC1SLRsa?)_{JPw9pF$s|qune`-q<t*Pu$>jpKS^GU$9)?&ikZSVq z_VideyTt|4_vKmB;oX?Hvqzch!K53-51yXNoRz}4aqgBU2X$|M(h@kga7MtHa9M7n zvQV`T^LRv+ZZkQXtYdA?57F`nwLi#oRc)5ki#A1uTn62~6}o@J{`Spdx-x6KLvx|i zd#U!sD{CAq`d$d#F53LdVPPZNEY7ogq$1Thq!oi(O+Nf`Pte;nf9JHVt7PBzdT&*} z&LO!jX6=z@FO08OHV8kH`*Q1)I{%B}s47v<GqzrvCxv<Kkv*w+r>Azok<w3`>Z=>> zxjrz8aM1n9RdLiJ>RNA!tgD)dwf3$u5A(UxA6d_Te5RxPME`;JOck{`>?d=laLG*f zv;c2=4%jt$YmfYN?=1`dZkw=n^Oci@LLar0_&FoZx2te`S3a#U=XzbY#`WM=Pb}IW zRp%_Me3f-oA?8M1_KR!btM<sAd}6@@I>d^zuTuWa8{zr|NqyeA`=za>=#>ibMTu2P z{K&bS%C^O+T$T4w>el<Bx?WSQIMW^6kFGf0vDL>b>D5W)7uEk(Ud+0;xj69WZTm{? z&?AvsFTVROy^}r6_K;zUM9NDZ4MDAlL-W=hER3suu!66wss8CF4mIcN&ni0grkoG? zReZ|g;WY0R@{bKAGIVdJI=DV4<?M@9>x<CxTh{essZci4o|fV*{u`rKM>M?L<5aag z=1`{|e`nTJj`W9;MqzEOc0xtrk3juib>{_&d<hlavfmq;9sh-%FT1oqgWpBC@2w^C zcZsINauc?<j`_!@S;)`7B$n`U!u_r9?Hzk1*d{jKnsR9B`7|v?ndJti7q2l!ywWO& znNl#zZo0xz&UXt=hMim^qB^JU)4?6WcN&9pnGe-Y$~(Dq+A6O33;)cV?B96y!`nNJ zQ&xG03cj1P!*#mJLx;daEB7>eeqv49#=4Fp*6H*l&s{!8mrlOXQ=83P&3fozP-E1g z#!JlGWVD`#D##pGGxG8b5m20S{nvxc@WuiW!$(2PoV|ISUu!=dH%gs-U2Mg+#3y?l zB<&^yojiX~UB<P3N5{*F=hWxqG@jw$<eyw7%8~xCTIHYNf|RZ;wr857*F}83_2EY4 z$^^zfVZWSj5>c0!jqktRv^<L`ID|Jwk9EJSlCHPPArJLAi%Vs7=R2I3#qMvo{>157 zz8ue8<#m?K>9X;S`6s?GrZdI<Wy|M#JiX!~8(B9RneTT05O<a3&ibkgOR8BWUzZl_ z+u7DAaarMx$JIZt1=g+kuHbs%$kL-(3ZakBW;>@`U)mJnE8rKr=9%YJ=OwAFwt9{h zz8hz0h4N2Kid(4=D%^5eWcACSuLYXhEstk*UDa7xwPML?sCZ=1*9Ok;uvJyl{h#)& znkYVV;xkjlkGfv1>H>y`Udn|QFMXwWY11J&apgJh0!?FA$tfM(6Xdw+7{~JJkh2q3 zwR`XMwe<VGVwPqo|J0J%MIc4NtK^IxdKJy7;=J51cW$fF-8HtmKA!)6z|v$@sPSCw zL%hkqruSKGa@*n1YVC3=RPBz&rXyeUvafMGUwg?}C3@=z$!A-fKG@nPaJ%u?v^3_1 zx-)p)cM>*!W%X(5^(&^&Gv?o&x{4*oaQRx*ZMVM*L_gA5P`$oN^8DvIE*TfzlwynN zfq6?OukXoz-MW9F2iuMBwLIV7v=*>FRN!Q{zkg!`&&xwT1+6X7heT&6ZD>(r%Cqp& z{c$Z!Yfo6wT+n()?WM1u>*{S|xWA$-F7JfLvE(&}yk<{0teH~nwqQ+A>dJG_4W(<F z_Ec_c{1c+9@odwtkFnAFqy+ymmh``PWgsLFrZDHx49Eh)Wib;}HP5uvkk!pOX#L9F zAW-1ByHbSuoawKEtVLrSc4(Tsn~>|~^n!in!@gFX0QH-;3chtKQy9fqB$W6+n?28n zoa2$wTOi`<!M@k;m2=MRr-D9Rk8H#Q{Pevu7#}vxS;&64q(9-)B9(_tXKu@LKAyGl zYa`d5=ju<QDs*T5pB0c(^ZR|9h_2|nQ07BZy_98@=eR!e&0&7TvM`^ouR(N4mctJ2 zGd#Js)(ZCRm?LZOQcL*U%<V_(f2XXgej?P;E$k)WX_>on%7RVDJJR-?UwY`IqUR32 zCl|Dq+*f`v+0q~+wm-&hCErGyCeE3n%MN-g&WS3Seq*0Y&%w%t>rW_u&~h_L@MDN} z=$f+Cx!|s&j8sY`i?B;(pu&zXw(I(HO%`Od*=I*K9N*_J|2X8s?Ee{2LPEDap1B{I z|N3z5>ZPB8ww{QYBlS;Z+d8X9;r)R=GEx%l-p?CK;v=;L@;L3M2f6%dtl2E29#gse zUG1e!dxA7IrgANp4_e<peTRWkp2H4}lQqw{i*CxCQ44P@c=n}DF{&@ewIx`r<a5D` zFwMF-usz%}o_U78E1b)?gIlWY_~pYo(!%Gi>?w&*pR@D-@#Z<3G#_p;zP?8AoPh3Y z$4Ajqv<!_bpJa6A)G9BN%6PJ!n`e4^%qkD$rn_(YefJBBr&V)|o;YZ+Ha>0TDN=ae zvFft+)VocRs^0JaRPCPOG*h+qeBZy&+E3M~cb9CoS;D_Hr0C1ncQS`QXhpSr);YjF zWv0#gkOvlvRZjkCG`jp)K4s;W<F#`RZQ_}(FlSS`({%j_XE!e7s0es+XUgL(&Uaf@ zPH46{(RsnVaM#I%ZKeu4)&}`nDBN~gc3^kP0kNBU)o10Lj|YaP*zx2rJ1yS0|IjLR z-3!rHVs1P>Au5v@7kQtVVR3@hj^%cb?<U2EW*uuq6zAW6tf+g9t3{Zr)lybcL_FTv zoqgAVPbvH_y>ue3awn{s-TU!I<;o8m4BU1IRmU_vu9>t_W9F5qijUJ~81XG*7vQJ} z?z_zQT(tjL>4Ok$#~q91>wYluJmXUo6G&gCDwMu<v9f<enCu@WO`&(Er+wqFb3E;P z)ZM^;a}ncglY3q#8&7y|(@Wp2`Z#Bs#;oLHE92UhyU!0!iGHwsZSA%%r<G^$?3S-u z{PDx}+pE8&e(8*qS_hhL*3G$I@bz|{==_=vwZrcoR9%sduf8!)>x-J^j#(9bGxF+Q zvaDOR_Wz!*jO!Sp4?JHVH{bb2*4C(m1jQ2q8#vt?^bNSp`<64DXK?<bS#e+*YsY(8 zg<lT~;<&D_d7CX8ethd1#*G^S6XRT?ADlS$>%!G&xr0m0cPquDE$faByIdGL$?NsT z3G>CTsT`ACbT;9rk?NZ(tF=$0*vU!Sm!4KVt~dG6;fz;Vc0r6EWp->*-Ed;g(v*XD zLr+#N6h0cd^WGf;m&ntp9j7ccE3_7zne(XQ=mjC^BT8lw+bi7`v32+Deg3y7)laZM zV6Nb<DHEqFn`hQJ*#8gQ{Xft3(5&{==c;-iy>d7v$8q-i?W@N^5AaATvrU`de6D%6 zqbs9@>h~3_da=h2GTmD}x0BQNINzn$%HC1;p6>b(y{c7-E&Ju8D8<Sj|5Ev`$E=@N zdG+cJ=WL!Y<%>PuJhQmFP<C$M#UloL9xM;+Yg?9H9}sZ&l-jS?vBhz<k0;hGc@Xf- zp}6xcgJ^y(>otvjp4}R=b{O4?RCxUE&~2VCXD0vKb8MTSp?20`#-3o7r~8~ICbOD( z8(s*T5wqa&-sK)j0!Kqr@9I20$}Z;^zw}iPyECtNq0+No-;~!qmylYt!|KSJ=`QBX z;q5a{%JlE<(B}VAnA&kKnR)6#bLQ~%%kvxaEMrcm9I9tw_IlSkiSKP_NNUHjL(}Ii z&*J{vc7tsaqf69|u!2eV?fHKO?U?o{`@a41Z$Uez6}jHGw=ao}IlX-8&HZysW?3b* z`WXG5?&c<Zo$F-$H~r7uYW(3Ru5YS88D;W(t5et1zo*wPsy(MUS2Xp1(4r{^x5g+< z{(CwpsIC3<Q@NGaA5WYsSUW*4<$qCY#-k|3!^i(E{eI!dRb!cq{Vrks6U76y=U;C< z60$H{U(HG&^;n(foU5njJP$elHXyg4L(=+m?c_z-(-+J*v1OWA${VlKGyep#d4G~- za^7->iAl9<UGCX#50|eWLTv9FsJze8>05E;gZ!6AnT@>1IQM41(b_s$ZJo?T)orTG zbqg*yG(XxgH)#3<Ms?ZurA&s6y%Sch)7Zl&IHUVt+ByOAXuVxKgxVuOJJ=rWxvOaQ zSmaTR<!_E-agd3!%$kYaGYoCQyF`MwE^y>bPH>Ik;yIlfBhx+Y$UJ6!pVZ4L-W_k3 zw66QXvS25F_ufo1;YCHN`TASm{A(_-TX<c<VpA#imuF@RPq0*o&6D11CEOr6Vd|}E zu5uGNS-d*tHghT)+cCB@on*SS$uq9>dFZ>tGSd&5_pLr#_&Hkn&x`G6k6%?&>r$TO zp*g2{b;j&D5eiZ7r6SK(`X2ns_jJEX$73yhz5}vRE0?do6Y)YZDt%?&YNg_P_qOz{ z&Jtd*+H#}mqgAQ-Tnri)H~Y_7aWvZPSa;68-8!?XCeN5HxM{+{?nOK<Rr|Qqro3g{ zHETyv($9q+U*2Cmp18R7U}*3@HRHYFtT*|SU;nne$E$z5n&ti6X>)FPu<kf_gWW4e zojv@g^@~`R^ENgtOWz*@O}**my%zADH+Sw*xz~@%{`c7YySe%G`PGt^OaJefccQ-C zwK&eWaOt|cY34j@-$yuofBv(At+%}GwcBT{gL{>}O_<Q~Y3hNm?$a7qU#~FVk!P}= z@96g%PM=H7t{pJV*~9Gf_5O?0bJ|VMw&t!qa%B(yw>h29_AE2I7ag-O;0*h}KP596 zb<bx8GGAYFth#G8qpZbIv1bw+r+Ip6G|M^OuP%~U`?#{JW7fHK$v)h%i$Fb&*Icb) z>v$yDBCVLcTCViSeKC1<HJeA~Y8CqqzS!B1Rd)r5ADSEzqpgyAZ-39(S-%QeZBGB5 zo)Rg1oonU9@A~?imes7CaJJ%qkmPd}<#WeEwO3#Mmnwhm<b=t+tHYF*{q>fZBRtDW zI(+RN&)?G@Zx>n@^|J4qzV7;Gb5mMVcKx328D1>EZo>bv|C8=#eJW_3vi0}$_1mP@ zSxJBVw{*tZw$<m{_S8ovu70>`v*7!9rSP-0JDh%9{d;=vs>-nS6AVlLUs?*%rn3C^ z^oJqA^6Mr{FZn-dQrOJ!y&;Q!Pj}yPYR{|G|9AFZnZGOl%c*omA8*DPQ-A1xN&Nm; zTK&C2_My;p`E?U^<p1CFZR(8clXialrhjqXv)cmK4Hey${S@7c?^YPpm43YveJre0 zCqqGD+B=5?t5`;9TZW|fPp<CYc7JO6JsE*hhXvl%KXJL(x991i-+~NYC+1Ao4-$@b zEsRa7?pQE$euUl4&+eZXrd{9*Rg<W%w+ww=ad5w}li-fS)1Ll*d;5iPJ(o|o+Jb<X zQ1*3JHadS_=kM9UxGO(vZ)L9c{Tllh2aXAZ>-Q%pebl(oo;tTt+-rf*I!BqN{P2?R zYHc+>_ml6oELT3ly1L3u&Tq>7uK#mxaBowHKYVJoc8+o1f|X6K#-cM7kCtb?-f=8> zXPnYLg`??K_WN9H_}&DW<(&+FY_E4V++J&M;+OliAN)VOc`7E~Y2U<YtPx{&lgVuU z{wiC~<6CpS8JGU|dd3hnP5!r;)ShP*9}){{@9uvaxAp$l-P`}Z=HEW|_3G7m>34ST zlgicnK5yB*5Hr`fhShueyVFl~8)fG+EXWL6Xu5pC|BqEB`?BK8vJb_6f7f+}y(3Og zn6>ducR|>WRW%!$9Gg%4oRltTBKF|X+^UvW?*BK2WlHcvj&FJQHsg+5x&H3($6Y&K zpU+;Y;`_?S{e=))W4BJ@&a*GQo@H=74_t8heQaqy`{8%L@99UMkzFahe`Si=`h>Vp zA$`NitGe@FE}A^KPy5@lYq6&cesSl_6v=FR*7tjcWk`m5`H3&zo~Nx>f1IwsCF6C( zQGBD=i^2xU1~G0KP2TC3s^%@uI;ZU_q_g=*+8>T}O8ZJyRhH=IHO?15!B(&2HIL~_ z<h)nPI|G-C8NS<NWwvp)<X4G?kQK8wUzjR#%fU}RLQ5{kwcx7dW!;C*8+m3$v~?xL zP5)Rtw}w&W+;YQ$jcdPYIdAB-KYg%iU(Wv`?SC6TdR>cM&(w7~Xy#s{!r1BCe(or< z`}Rv*=rONrfn?0@ine1B@!!RF6zQ;L6<q1uIsM>?OTCXf(;14-2RwYr(zW>B`@Qe) z^;IuT$zNH!BR$GPKQl~jUD^a!QHT0z!3D`T%tCh9a2xUcD`;K7C-Cn3uJFgV@3l@i zxcBtDX(z58HJzm3Q(R>FEcD%$*Qc+4F7G>%`Q6x>eFfW@n6##^=PhfQ&X!+j+SZsm z_rdg2>Q^rRcYU08Vb_k2VO`7mGLqEJ1sm3^e>-3EoY^9~rVZO}OwIYAu!{M`*?S_o z4{X(T*DgM;xn*XP0$X`g`{`vKoaaiaC(Aq3@15p*ZsR=lhtZ4IN!RbFDQo`gox32@ zc<qD<4$9JvRv%8TwVG4%{-tKxf!)uK)?X`O4M>gq+H_w;Rp5r<qF+0Tx-;!$JHEWx zt0?i^y&>3Qb|SOE^@+<0D`U2wP3t<eWACEMF!3Eu(<k$va5JjgaPH?;<@a|OoUg4p z`QeV+vLm-0raYE3QxI?8(Py<OQrjUX`>AkqqvLm@u;T4Ix|lT<DOWyulaL-L!16qB z&haO{D(VMPH9D#^@Bi~&lB(|TwL6E|&|zWL#)h&ZAzzbo%O_dwYB^x)mD;N+-D#h* zzV*S>>&5qeg*YzAo_Clhru6#ihG(|hCM+}jC|Kh3Vd>W2((#2;j(%0&a>>=a@3m}H zZE=nFqg$ET=iey5*z!F)tGICL&a{*nhl*yVnfa(sKJj<a#P_L(m*{mq%bKPuY$f$> zZ=8g?|Fmfb4Aq2{l+)a_{XN^Czpu;sEZ%fywyyn`s+uD&eA<<FiKN?!PP==T=XXNa zvm4VI<@f3+8yW3*^T7Pu@1HMU+W%eMS3mcE@PtS4livs~pP*>`HR5TnhVq2?n3t0` za~#*)cJ`0p#@uUmi#`XKB(+N4eIq#2^+fEf@3m7_t@5+AFltUYGNba#;@M7F98YIi zEZw%_jNs0rZ7=vYzE*4h>NdsdJd<R(L)zR4%c^BV6^dPEZ=Cn{|K{)S{^s8HSp4DN zS^viHb9NhpCU1HZ6ZL-A`NFwdzTS?h$uY0}wxl|#qebP4$U&whIa^QuzIk7sje#@H z_2;~GrSmSAs>GzRH6J{aVBkENGd)u$<d(<^pTexPC00|rR)udA>YKAMMOkQ}{2Zyw z-+U#T4{M8j+ZDfcPf_H)qMPe}hpyCacQa&{PuyS3k(f4FX5$2hQl6j3%T2hJxWqnx z@_kB?uxdq(2J0`&$LZ#E|K}zjy1XHH-g*Cw_@&u)zw+|s9rY*w{K02e876k%NXq5# zqi)mI_?0y{8}AIiAt5X7*6{Vl;u@JvpI>v|&N*}>ZnBWt+fz&T9o@33V#<YpUk7!U zN}N&6lvUedYMiFXzw8`$oL+W7^Zm1li~i<pow0<onPI7tf%=;shc;G^ZnX(H%a~_s z{b9|0>X<6J+Q4GwfrqaTxkNub)gV~-{l)X9e#fsth3D0_HmrK`Y+?MjzI$?e{w6N} zCB2A=Rpr?c_9+=Hbzbf*?k;jCJ}=yE>e91Vz}eBtdc!og51%)`d49;Qk@+*Pr^VN! zq1lP|)(3C?k-4%pbNeor$TPo7kBHgdO$g?(4feTkQ+L+My4UwUOxQg0$>$J-B1PR9 zw|!&-8`fTo&e*=`;=3rxFPDvK-f!^9@J<Za9V&b4bXQB6+iyOtwrf{8t{!~5uJQdA zzPC@mI$1BORX^$+t|1)jQeFA-LSM#xPuYvpPAx23UA5)*>W+K+FD*37={+g@Hq6v# z-<Ab0{;pQaI=pR@%KKUNMV^;VSleEWTG#L<%=^MRUo(!4#(O5%ZIZnj?bCf_QsITX ztE_K}gwF2TGV?p@d;b?(9_D5)3>DvU`lZ;_?g{H=+{;rs_B!#?EuXx(7v4>I^7g~6 z;yqiJ6lXi_&d%EYd;0maZEFo59m@;tFRPxm{rB`+XWMd9w|MiLF82(Y&--KY*{i#X z&)qHmo$^`O>TlYQuic^F%C6g#f7jm``)_B9$Lm?2-u-*JbF)C!xr+4dS#G;6?;ii_ zU73FP+6<9Hc~^VNil6oWp8oe-+gii-?RQs6zI~>m@LgYUUaNprZJp|t*`FKl?4MI1 z=5$uS=S|qr;@#29_WYhMr~g03X;QiGtn&XxPa`?j?%Tfm+4<e|o}Y7WgiU)A8~pO_ z{y&vwIpMKy-2&_W2fd8sSgUt(x7v-}^^sq7TEeD3i7kG6cRx$@&*wsVN7iM2e;2>b zmV4pV?`79{YQF2goyU9o)TBMxM*DtGZ#>`jHf#0WNz>o|Q+>QSardpP?Mq(luCM$F zwn<Cq#n#*a6N{<$W?G+c*r{%;&2qGS|Mu{2OBrvuw_e`<k74zKxw1FQd%rKeXtyn5 z>&fCM$LP=BW0h+)x0L<~pT2AE+i>P%vsbaV1kJnN9m}1w{P(IgZx1GVOL)oN`ta-A z<@?vF{K8#+i`AZ(ULYa8MOkdZVX-UI7xB6(^1nY4U)QO?*Su|ii+5OD?%A>z4?eI7 z=pHW1+~TY)?Iioo`=Z&4eQ6dBk#Vij4!>?)uxq=$R#_(U<O;pcZ96q~XKo4ajWx`e z%&qZDZr%#^>r*!@J(n@NanthK=JMO8cz?RK`GnhU+by@{s@98Kx;v3)`-h!dc70m* z@xiI~b;q_zYnEM~@4diRPpB{6_4D_No5EjhIm|ALAD*x@xNPm&tCgpx>^O37+r_-o zD+5n1Da@a+Z;HzHi+R<n<9${Y_808C#Q3ev)g*DxTceJ?uX9hg)hR0qY-_!_dq%+= zgS@zg7m63HmIz+qKj7l4vfImJ(XoA3syCe8A<&)S{3N62?<s-#7j{Q*Z&|}@H9x36 zYq1~eqs(t*KepM0$LC6^wwy0C{kY)NHruutvL_TK8K~6sB~Rk~@-;-jBue6N33Knp zQ`>D1{hOIH|MK&VnI*dG|E}xXcF3igySqGLR{2FA<MnP)yJgoi|2bW^uCHwIw;+q{ z(Q=Dt%GS=Fe|onh&n-o{i3Kl%ZLWHyM;@Fw#bd(#;0;FKJ_seagiJbQ`A}uT?E{n8 zzBA`KIz3W1)l9Wll)b@mKI;5(i%K1lbtOGwI<CoLZEs}W8vEUoz1<<}qI58k<NxX4 z$@hQFzpT=E^jw0$!jmSlm3Fgv-Ap<^^zi-BeAX$UGH1d;p354)AL_^onxAWn^FGv2 ze|taM7R$z|OD--s^kix2mZ+*<KP5#w&J@l#ByHz$c;19anK<{Y4P`BQxs8%ru3mQ! zeWINa9(7OlQ@DHeDWzla*K<Dnx!7`5rT)6Ir969M)znokHl0l~F3zsb%065cTKd%7 zjHxH<TiMUKCOVrd8)hf)ZLRLP9ikd~P;2g${G65&rSd87&%CY<y8D%(*?j%`$QkE2 zx;W<tDmq+<`S^1+?}@wiExENHs%Dn2TfI+f?@fPgp02IWHympJ$+Z68mZ@%6v{=`F zGwBmHS#Nay>-zZ9a(M^V|CYYitdx|casAlyW%D;~+ZP(!bpO-wRd+w`Uip2MX@Ahn zf}>Mf9%fqC#l|fyJNo{a+_G(4x5NJIvax^Lb^q*Mhuqq<T_XE`|39}S)HLhB`rpEb zpT16)Q@nR&`B&e&T|Y`IygjBX)tvR8uugdYFZbrR`i%KfA5YJzU%i(v=G&w9X@)tq ztT!6&PyfQR;p&CBuKR!M-*0EJ-(bkcDITJt^64bkv7=`r`F+g}3Kc(i_T}%giKSgj z=hUQLwY_|Sc}_x#=^i$ztNVYia9SeV@veQwIfY2kSr0XiChnL}|A3RTh|QyCZ|7nL z$Ns4btFCU*66kCxv{C%6C|2~iX4TAp5vGn8o@tr9ViSDw#_Gt)D>gL~f14dUDPp#A z+oGP`!cvnN9;PraZR)u!FxTI+B}l_t;(}qyeZ4)e*jl|S7y_UD+{`^YOyQ8grJrrA zT1Ah9t9)5gM1$=Y%>3i}Pg=s;xx!Pb_JypVj6-36`9%M!1$m+2z5g7$7<s3L2J<LO z$5ovaaf$yQFnQTFuf>a`_e(0>o?P$Qk(HXkx@c1SUP-05Df_=HH+E5dzWs{E74d*# zVfBAoCM50UdT%u&`m<`^#kBUVc1a~MJXNKF#uGn<o||c=b!W~0tglb5td^C({&nTq z%)6$?wzO=Vx^}%l$gVus>bwP)w_8p7C}P;>_x6<iTJ!5m7hGgoQ24y){L_k6(j5PF zuI8^}__Zy2=>?_*trb^apJdhlUj0*HCEJ{`1zB$|%@$n8m!5m=>AH=RmNqJw6r{Mi zG;yCu3e)nksT6Lw=4w8T?N;#C_|AQPN9QQWw7r?b;+1OP5FDs8@2X_LZPOrzlE@3W znF<=mZFF0%y|SM8`p1^QlE?=snF^DShhJSE_-smxSy-yx`iP!YBAk(IQ<87^%6k0b z+}l*45t^=+DDXgoBdT9we&egT*UwBTu@^N_uzR-r)sk2#xl7x=G&RiJWiEHQLrwQx zX-d*{p>q!HPbCw3W4qOI4qv$|929p{XM)iD%_dwi=iE*&s<At{SV?JX(H52!T#K^f zs<ho4C%CNA-YFX^l_mM}730>g)0q~;E{^@`&_3sErb6xt)<a)EswhwMIsI_Mr6*P< zU(Y8#ielZ!8}N63>GuPr%r8$r5R$nr+H{-k#gqpMDvP2O3QapA^ma-fI#B)d_f0DY z<w<jl>y~|%E#EWY^pVTayT31exQcm8kjD}ZjX8Sjw|M04j;KDl=y+$RtI6)T*on@H zFIJ1PX<Mql($Lx}SU9E4rGl|jEKKl@@HFKKfgxMlRldB^;q`D?$~s3)SWQ=4SnvEL zml?n1YdKb3I=b-_>;9VRo@<W(tG3;J?+_>*@YiF#UTxhp?fCCz(`^|(nAT|7yqd9E za>b|F$BQ-eS>|Z2)AndOcOprgZz{j^&H4ZBTxa+Paa{J5u$numfGzcPp~SqZ7uClE zcOKYmp(5Q^TvhdIv&V)B7G>5Z(L3g>sNNYb%Q<D1ez>V^@W&K$?b=0BM)TkCu(f7i zbqr3sbKkkVOO>bZvu@RCp-s*Ijs}Sc3OVScSqX9a2F041@on^9ro+P_KD9eqGvV~~ zxyyIunV#xeb}~?0=jjXgPMssUPp_XY>iDC#%|o-e`lWZ*2E$)|KP$}?rkpvT9lA;> zW_Maa`HPj=X8oJ063Vx}_F$bnx2mt$NR^}i#vFzDXVW(ID|B`xoy^eNX(!t9yp734 zYW^&?qB;2&Z<njDFS}qJ>OO<3cZb(AxlOE`W&*AC?mX8b0(R;Ot4X^FyVlAaSN!Ve zXD@av_-V1w1dW9jBGMj9{)r@ZY<m3a(}a(ES}wLdi}S4HpL-*@`_PMT3pn~!?`s>V zy5}!wXi*7#o<GOhWXfcp1z!(;U$p+q`io9$B_6E0b}f`yaaN9k>kg?aZkoKp)7?1O zjipXrJ<K`RyJ&+zmw$TZTifF|xgBSnWP6yzocLw^Ui0+}rDjY@VKOsP&AORT|7`i3 zs5^Helbno_mnM5yH#sqIyz$)pm2u(e_m4NW9g2PsxnlpCD&5VsJGU*9cbJj1VbY|k zlCQ1~LO#w5V;trCW;A{IYiKp&>?IbKnkMx}_g||u871ud@MVgC`^?xW9S5h(-OVYz zWa6DCoNTrtY$Z=6)?MB7-eOhVeh-UowTDcFO5Zs<n`+E2F>w?LCwty?Xf3^^FJ)7r zRL<7va;h`HNh#f0#9&cb`?DwwsYc;f&HMb1?-ZK*ptD7*m-)kzOwK9QeOLePd7Qzy z$mV=nuR+&|ooSI0j7@KaUzhn8Dwxdn{uch!PiTdV|KdG&*@Q}j9Jekx;h@{_y4H^| z&&2<5M}f^EMPHTnro|V6U;i*>2!8$k+GVSAoX*B#Cz4lf=`=bKvL`o%b1v^*WwF+a z-ZNHg;Cj6w*u?w8lPgv{g(5r>`aQ|6mqMy;3tHb)kh7ZP-n_BNPU95&nfAxQipu4$ zdkS~*AHQ@UST#*acgLE$+U3Wl%#BvHNzeLum6uVf*o^t#;^H|^5`A^0AL|s~;>j?1 z7Qw2re2z%@s|5k;Di?^|ZjFrfz2&%n!-ijej*HAVPShwYGd}(^)k{euTt$<;!T)mS zuDeo#iaVcQF|lI}JbKw<RZ7v#2PZq)zbWidPt5Sqzp^Sgak|OYJCUcJh4p1D>_74= z{{9A&No_l)MZa*6JsS06p&;kYpKMm@0ed*yUragkDCOfMujbo#-l+tC$=UHWZ42|F zpe{T0`8mfOPqd}EdwLZ-db_|u$UQSH?Sbs^7g@$a7fQA@-<u%$xcg1E<9~(qFMHIi z4Rm$=76@d`QQf`a)=6>q(~n{#ChN@b+B~Ps>525!!k8~lJfBUh{gmQv`QmG2ijJe^ zrCy`Ahk_+D&&$bFWz?UVanJRp?m?dUp}(469Q`NqM8{y~lI?*ruAGpoSjbiPI`(uV z&nmWLr`PJ+_Mc}q>G9sh%6(yK>h9xAvNB3@6na|j9Nt%Sa^2}~X><0m&sw(g+hMo+ z6CYg;e`j?0%9)J|3s!G+bmM*;I`In=`>%r!{hqn6KWtaNN#FHenY@|cfgQJ;lz%;0 zw8_Na6idBMK*sK{*9ls?LZcrtrQPAK^L7p5a7=x?Dr%X9)T48<>HbfQ<m9G!PBl!L zcv{k%%YW?_FRvxbI)6I3?mN^{#89T^e^|5k?8?B!yj;t+Y;ZDZ3)+0n()Y_*+g_oz z6*fQjZB9F1>aMk^>c`Hs#GjY74Q+%jG}R@nyePUsbdB7viE}6Ke4?uGZAOCT^WweC zZ~Rv7Z&_$tuFx-F<#lk!H<iMTIg>S)N^d(f|LU=8GD40K7x&3V?U4yGQA)0qIy6h` ztBSU&m+}cGwQ@!o*Ljam#HzhqyGQ4jkH#6RD2eIu**msu$vW`<!PBQXvdaUugswin zETCngL&NSlu9<Q(;}}vE{oe}5yu7`tPbNok?et0k;{|a%C*{}ZRn~SX^&gpYw57dU z=3`K6q_ma)$*kQ$x^F&bB}T3Pu*UPZ`JO%Hr&hkHoLaPAuIls|Gl6RtlyyAJw&}gO zbwljbmS<~21Fvnn_OWu~){WBAzh5Y=bnUoO?pv#*Xm@E1+Y9$u;*4kAG({M{a!s{e z+qi%)>)LU>zFQ`xLS6kaqBduL>1r27NuA!PW4H8}N8;lfKAUe(wqEjFBJ9T7ll#lq znr}W@{O9%JS+3?2L~g%j{kKl;%k|y^_fu<<>e@{2y#0AmFXGUL;^NCcYPPe#JyTxQ zSXQlbm$hs6n>DFD&yL=FdouJ#sBUu}?~!|NJ4=@A-@viwHuni0cSrwB-~5xVn;M<W zCR#U4?as^C75&VKM||b2Y^|$7pIcrPyziazI#@_GMD##&YRH;N)f+y|THoPTH^V72 z;KKtBlgZ1civ%7zzOiewKyaDd%)2XXm}WUdT__YfuXbnhBUauV{y9I>J{4LW`ni9> zGRr^NKF*>C-_90c>thakXY#%7;O4Jy5+<lK?67(%A9ZlfCIj)@TMCO9W>0)`Yyq>- z!8g)RXZI^REHvry{Ur0^&G*Z_O|}=lMce!=Z29iZdy1`9DS6{m)e}=YzDquLIpTA* zIP}ZvmNrgp)s{33@0|?)Jtlo+5{{_8o0!&d<YLODl8LcdH!l^>Y1Y`C7Bo4qQR2uE zjr)uFpYKgL_TyyGnG}O{-TS^dwJc=Zwq=%6wfzbQ#_o<<mFa7@IX(Yteym`1q{Gj} zzW2Aks%2l19CBsPiw?_~!PBJvv;-PGoSRpsz2cLGM`)N(Sk{xQnKQI<EstiY&-5uu zz2PtW+`*QC@4>VuGTP=l!zSx4+a9*q%g{mENB;1?pic=>ks8mrQ}P9OIy_jEb&r=- zTSDseQJo#S-$X=A_q^QxF-_rTmBLEBukpr<7ltakc=b)}Z``ty`Bdk6n?(ZO7o1ug zcl%ci_jz&2xTX3#g>K*G4orA+^=H)Pt$w$(S#{l#{f>m}3{{@5as5C0W5q2Jf)|2< zl*^^B?)5nTcgfZ8m($*Ra30<FZO6-{Q&g^n@$GOd?Nb)*VdwUlofuxW_3W3W?^w4j z@-(mtvloe}zO><^aO(bvt$}Z9#X3vU4he5Qx{tB%q(I1-MTzl;^jJ&6QYSr`6UwR( zw5ZGcK=L*-Ar&E!ZA;!RHu-M&t=8+K+p!61#pgu>41P8inY^*qJk1uRzxIjSRIy(+ z>!kPdFAR=i4NQ}E36N2@P<(7+qn5Du=$s=ib5FM}usC-1V{w+sysvczC#+r`e<&2X z<4Cml5;oBtIxnPMN-e~5>Ym=4uwY(Ql2+lDgt`OX|6cn3voNi?Gg;lT!+&0czT=cu zPIh*l;C<m&<}%J#_ZR41vh3^Bn5(i^W;HFk-4=gZqSH-Se7B%w`Pp-S#R7KzQDG=9 zWZJnrX6yghvzzZf%gZoxn>?YnU`G1nrnx-l%I15D{$S#q?=mA;?Z9E{!`voEix>Gu zCii=1D8$Ky&33Vy>MY5<^4qz;tCOa@4gb2<ZtB06SIYi#DQ@Av^<~4KXuEgIw-shT z*DyK7c4m3ZrNvKA|Gt+TcYX1*(>p(h@<#4kb!pY7slnTsQfJs*t$8YvR9Al|xVP`} z#Mjw;8nqi$e@{u;Wq<Jh*1CsNBt=4JZfl4<R*>+;>*G|Pr`rNPvb>t+k}sgloy@a6 zjmz)sfoaM?OO)?cax6;Z-Zr1J>_VW+1m@Ka0y-BgIh}VbPqYcBJKCUl@Ku}1;kmAF z_T;eq-4V`ZkPxKs>at*uR;lx9o}9OBm&5<0*{220D7|NWx;JU|<eT%`)sCquDoy-< z-;jf6uc&oS>Dz$YZ&dvZc4RkQERf{cnk&6be+%m|%YgKNDd*f;ZX20S?0)|0>f(v# zIoqrc?s~!E`qe9;`Mkn=u9Bq%sqz;-&iIu%qatJdgY9n5(`<#8ZaH{kn$qGcCqDgD zoawK-W$(6Cq1Rb6vSXKuXS6)8*cjMousho5q0+J1_5D9{^cx%#_FoRU9e&rh<4v6M z20eF^U+wR|Zw|LQv_fc`xZ~=8CY7CWasd-7m%MfFcD=m(-OXghjRDW9@14%w`S{Rd z`yG1}9p80sf2aH9tYk+UYm4ncSI&rs0$dZ~EjaW~hcqasy59Oc<6v~0q7k3Ym2X8s z>a5InncC+(NSJ6pXVuQgpl=h+p7xnO<%|3fp|Ixh6w`bO^Vzvko*6lpPnB%!UHt#& z{Qn;d#GdK8nog*T{bKvYwznzEhe>Xui6&#>iq8+v>@wbTSh~pADF0y~+eVI{ho3#? zbObdpiZ%HunWr^MZ*1VXb|y!!k4fB}v-GTa(A0H1r)=WoFRne_sp6feCaNX6S>bTH z^WW3+oMws%O^|tAbN=P+{ro%mtY_bhSU>5U?^n|sK}x^WBwnl7KismW>1%gn!lG-6 zt?o)^**-f@xp1og(u|4wy>q<mZ|yS?kWinqH0YVH<m5ZgEplTPHnT7_IjhbQ)$1rY zx1&L)u+yqz>-C2lHzcVfPOfD*ZK`>$OHGs4!<*xDi%ZMn3oK<f@7~qqOn>E4xKcn< zP|Jh$uZ+J1AH(wICxtJ$cD(R5w!U&>%dG=loYO@DrdMe4u&Z}+y}u;>e1a^i&aMvC zqYb)JXA3=;j}(e*h}_}8#rw0`Y-)SoiJk+7H(93jeZMSI7bR>P&07<wH}mkD?}xss zbefp8J}z4>^*_B}+oS(sd}m^%e*S*=;qJ$i{O;@f?B(9c%K!iL?#0vnvww+fy!E%> z%c~D(`Q0n`w<|pOrI6q}(bc`nW@Y4LbuTBol>&b~*U3uz$u>5wm)(BlT*Jyj{gyg6 zpLt@E6RMrwPZn@`?90N=cmAW(E9a(+U<T)3cTCJSvOJh^@`u&4GwP0~I(IT!BxdY* znp-vdm&e?P_a)9Z^CUj*+VpPn@0cmYn*}Cwyx^VhS<rTV>MOB{#Vhqs8atb}YAgC} zX}PfZmB*<=U;na6E#<UQuVh)Z>$>UeFU_piK2(am;k<I%_4&`AJJ*&N*<EZeIJI=9 z*@e4z9v0`%I&)~BVw{`BYrapZTuY8c9q`UjJv@76;~^)FBaW44k_}9gX6gqmw0&gp zX?aGi#g}~__q|KE3exJBU~#k1y2)co|FyRJHowz0pZ1hqo@mi<?QhLNb7}EAI*qlx z0q2e{2>-FNoH6^)ncWkjCG#dFxX##Ot-;4_v#&<C?L3?1&Z}A{bmz+(7zDQ+F&E?W zI#-eud*H#w6SFe6FN@QVNMfFQuHE0?yk{$~`AN<`rZX?)tB%|;nsEERi~l@_8><#B z{I;gMq|H)v=c;*;r>*-QFJhkh{7lhgzrsajle*T`cBivQ&3$#Zs86Bg_OD1)HS5xt zlBgBB@fHt#o*Q~AZz%WkE`6b|r>B>|^Ly{NNs3+h7d8tPop3RX4}M!9TC%EgUe1nh zHS?DS2Blm3Zgfy~Qaa+<lJ2!+`tFriJ{v4J+SV1@C%m%5M@;?0xB8PidiRFDVmR(v z&3NQ=^z{#6J<O>Wr6>7B2JATVBU0eXY}WHt3+5d@+03{0Lczql8MEK6Y;wOT@wMgr z$1|eAZ}M!b?`@vE`T)oMML$2RR6S9rq%zIMa`LXXhg@>{p6)k#nD)+6Aw%~P<H6Ka z&w#JLS|bF%9X-qO-Fb0|SogAuvJ0QjOWGg);Bt+{qI-&nDT6ZK7D4+%O*so9I^*Ix z%+DX0u=Tg}na!!kog?+Gwyo7pb~yC5@tnk_&fuMVE{B&}`?p(1JLeY*%kKI6Pu6Mo z?)zzBc~Z&~3z{5vKT}ygiR0s(ih0+q9tBq)VJXhFc)m%W>23m($h79U$)$n3sr;cE z`mQvlgrEPsXYJXwy5*l&THo2ER{4+j*Tb`%zcy^$`ZNE_-+L$Ty_TJ#+sfI^c<D!u z*khJ?){S~g(h8>a|N3<G<h@22v*N2Ostb>azmVa6-4&whw|>ujhr<us)@@uMA2&5I zF!B1bufh4JiyxhIx92S1vOTzr$w^|vW{r=+ZTrH~&&z$No_P6Y1iR?Muj%*7;tz9& z|6%;FqjZ7l)X(9oN>dk~NvpIiDa%X?ahvpW?pd!JWuGnV=eRm0z1`4u`FRJ+%JuIT zaVr{mayjx9ozJ#&d2P7dm~+aO1-}*AbyEBqHI_?jX<S~BF4|DqpO-c@dtQV_*Zn0k zzwVEZzk4C;r8?&h{r>rP6N9yT_jfr|q;hPV{b7ntL;>%4i`bGkk2kc|KfLp(gz4ht zosVPJcl<b?dYC`IzV7qg)r<Sz@B3fz<<*C;2mjss*u40`Em_uYMfY~BJ}}4c{NClC zO02FO{P3wD{9xuW)i~j`tr5uzXEGRXWOmwJzO{>G5qoU)wU;@c0$#W09ZjA+S#tJa zO^)>jmrjIp+GQ-Nn=j0#df}K?y6O4#uIu9Uo^-PDxi0)<@N1#Xf-jEB^^aEFoT2j1 zq+E$ZmrG-PgPZ5w%YAQ3uI0O$nWzX<PxUap+46P5{a~x(ik*|1Qj_m{H~!1F<!OtM zs?cBJuqt-y|5Hqh*OaoZeSCN~$KKT9r?Rqn`3u&bU3->yYyY$8o6;S{JJwzHEIwwk zD9NiSs=raB`c~`)HK9364y7iW&vdGsdcR}-7xSzT(Tds?n=W{1yZlZpP3loFZgRXD z9_{vzFJRU0WYIGjaqXU^6Oa2y1$gzJl$-ZTwSmJs)kQmG`&88<K3`_-b3OG<Xv-xD zg;^XzUOVj%+7y3~nzXm-dsJX0?_Z{?)h2JAvwXS1B4--CK9{@XM}8%jtW>{W+EPZ_ z6&nQE7Pch+iraeA@$*B?D0Az`ONm<o9!6fs<o<Bm?8tVuN#5BpuYx{n_3R9l72cKS zoDy>1S-wu?&aTi2tKWC7G^!913(owmasT41CyX+|y;H20sqp-|$$ELmQ$LmpyY|;2 zj`8OUFG`!KR~lSgbV2-xY)fXQ-K1@^ZkhP=u-h_9t$4qrlh>2S=dH=q35TU(C%!CU zPP}ZG^6#dw=tJ+;((egZ<9yCke}3b;;p?qiMfXJ)wlvCyOX^yF_uA9CtFe32bWbxO zu4!iuGbGBYI9T*7uW;Fv{z33i#;G(PCmnVB<J_vZN+XtbW}N-$k}>bz^x4V^&u*=+ zxqOi8n81!DS6bI{-q(xPabrlyU+0^W>Y`K4@@?V0m9GlI&hK1woKq?}K6Pe5c<|lj zXD-Jq_&M#Kgj(0x8C8{Alz-^1xyPvN<d^TV<mP{iC=au92TyF&ShHR7xRY;g5a+gx z=G`7WW#z0U*##k2a<BcocKqkJ<C1e<NI%*7#@}4@$keJyFJ9-ate>=eb&O53^Pvkh z(Z#3FYZ>QzEH+l0`EY*k^?pyS^ZqhjjOtCT#Z1%tqCecv4cD5N$JZ70^5FJw9kCl$ zzBS;wnX=%PKzP!kb=J?L^A3HPf4ez<bMxn!+o#Tc{dL-}Y1?le4ExU=@v`BSZ{$mZ zAMuB5sy1BOpP>DB{oywLuwU_Kyxd=Vxz3&7QeXJx)z{T~ABSf#{+d^s@$~!bwxbW- zB4*7@^l-9nopiEl>gPbQ`74-25+(l5i+kFy81-}0<H<{YnJ5X|TzuBZZ;G(ZN#mjn z_J#!Gum8?!Otrd}(6&(UNKa<3PRhk2HKnie=2dZNpPtZj!u97VjuN5whoU`xUaS#& zE*_qCwp7Tt)OFf(Gizm)u;~Zif4{04)p7a6{8ughVuq=w|NM;mR@#z&MB8JLdj_vy z{-dYQ=3lMZ_qO&ium0Sh@6}Syz7jH=zLHDY;b;1Wm2X-CrtvNpV9W2>v^PXP`|Go= z&0CkUWlz2QRNq;@^-1%Jb=Ntz^i;pftrG7G?prbQk;aLVVCR6PVh!g#1zwxY5pMbG zvXeQvbIUiE+-mWo*2S8g1z(TpwWsZVy!PIP$!kAM-+BG^zLV8^-|j!tdaC*82i9nw zdReoY4HEy7#GLEwQWJNT{bS<L-tDxH=|%n|krU3oyRSA#NPPAAwqu@GYtQ2u#&7(K z=bB$x*|2#+LZ7m*A)Dqrzf%9n9j>Xb_zh-m<Va)TKD;B_^WUSGvd<U3PYMyVcK;;O zdVAudlCO_n-6_|q{ajF7Trtc3(xVi=9e!d4O2IbEd!`HXMU+>DF^QR`7I$9hbviaJ z=*41lvr@OGE49`tq|bM4`ZMoTt@48#b*B}aUdw!TNHO#l$@AE{Rqd;6k)UvVkWXyS zENO<%D|pq9O4&Ew*pRK#AlR83?7B(QTln|US$*f_jCcGFS!8Uipcp@IhT$}y!>x~= zUS3%KFm_Iw)b!^&UWCqLyiw(vF?05WM=LAda)#%roe<LN+3X(OZZEU1`unfPnq8KX zm$_AK&oKYyEp3-@_@t4s{_+;tjExJQa6IW~`kwXadB459?3_aaEbKwgW>{{L|2*Mk z->!$x>Zj#d?D4!?@MF5=6#0_F`Vr=TUT=8VocCk;RbKPZGuItMcCGMPvxU(rOY^=_ z-aP9Ib>~!zZY<ChZ9S}ReSO)INj?7zzT2nYPA_KW4Rz~!I4#8g%#7%Jn|WhD9(eb? z_xqk3S+`IBo5<?vakZnZOmTw^YwO$<Z0B~**xb^4Y2(-BudVfd`EKC&H$y<}O8@?o z^{f^x%Qv|l-!|{s{w?dDezsz^H??74&plJ8_jln(qrFdO=G%wIDn3y=S@YKNQe<n+ zfgguYdrkYB^s2vxInKH5&%QYy*(a?qXHN^%nRUSW*)}E7Yd!`Miql-(KbX3>Z0T)% z9KoN#`1$X>|L-_XN&Js{`FGM8&l5?9rYlcvcRz62`pc|eDnc$<e?K-|K563k|LNw6 zkNjJ<?%djYZ@=a7pqq9bHRlUU9v|r1cBgxz{@19lr`awo485ci^7DH2ujO(7<@q#r zS1fE+EzQf|Fu9~Ucf~Ci#i_T7_w{}ekV{dR%B-=m#bD9`sr#$)S_>Xo2+Ub{|3U(T z;Jx!Lt2!n2*xjiA`t8Tm-A{AtUR&6^2UO{B3(M%9NmkhD>{Qby;a+iQ>yf2eGc9`6 zq&+qiDtSIhsocr^#Lys6yKsBZ#KM-U>f<jS>}cP2+uF|JUO}Cu#m|p-&#S+fzIXBB zz1!8<*Y{oAt-R&`ySJyCCpVYp_g~!o{^Gsc^$X|o-P?D^p~WeQr%2FQQ#Z5pjKYeG z#eJNbKJ%tt4PKgABl0L?lGo*`L(f{=tsc8hyD014$b9s7X-*ic?E8HF`PqM`bXBi# zaG$y%aRU3(*xbIeXV0E}?mz#~|Gd1sY5&W2?A-cy`@_rW(dXm$RBYS2_wV+z4?m}$ zH~Zgawx0XsHh(RlGyk_$KHYihM6IIy>bysN%@g{CjS_1%HuG`0&uN}8F~K_OlNaYR z5$9Z4nd3L@x9@qlZTnl6%G9^ATiW9;3r_#GS#+OvD@)2Fvy-bMSv0rQnkb#z8Iu3S zu*ru{xy6rb>Cq)2;s2zCAFX~g+cy1FS_=D2<C9i>GOxTFvg#yR-q>(S@*Pn~5mq~s z|BmOgv3{T0Imt+eus+%2S3g+k&6;GOcBgRj@(X>lkAAUU=Xh{tV%DAhO}n*D1X;Wm z@T#2QeC@}SyMeW)3^R8<E_*RkCuvi&(^ipld$uH%pPj@%Kl;y>ll8BAk4=3Rq4eK; z`#gL7lmEqMAAZjN>A#s>wnq4V?xYM}S^0f`<ilUbzGHkcOFH;a`GtEA@BQmvaIi@! z-X~IZf8fziIZMm_Cv5m1G~INH*}8LFO1|H=nts`TM6$QH{PEr=R_VECH~!CkGRN!T z7llRZ-d^7JfAbQ#=Ke}KBmK_sscdh5*Y8lBy7$n(`%-rI<?P=4zy0IS&*u+1FDo$Z z;%HEBK0ja9y|3w6$u{Qco|o3ONyQs`#?*V21>8GhspNTTDXT7TL`wR6XU4#oV@l7@ z+xKSkeigB<65~G=cW5&6mkU-)^54&$=*s_fU;X!W?NzTHyju8mLKn-|eYdS&o&5iA ze%${4JLl(%Ua0@~auw(Fa|*kUJlOhFrGhinwC}Gb=cNg5lbJ)0y4U`F)$}7k-uu-h zy)NVM^(!BlAMUiTU8<A5xOjDc_qh{E?0<i%e>!)9srFw^YG<0^LyN?itf$wmbDf>* zWR=+|+P*7lUfB{cw@IH*XkJkNQhiD&=wE1=dSJpnJM~H0Wfv|O+V8kpIwwgkCR6q) zgZb{hEVi3RWxVcA59}-OajKB5cKV^Cz3d0;+SJppViO;3GMzkoZ+lhN_B$uIRvitt zxM--fU)e(|<=K@Phu7a-(w5Ha;pEu0SgS5FHRS4IgH_AQx!($lZJyvOW<OEXBfs>N z_<?_XEAGtP)4Gl;E~UQHE_LSAs-s)hE}IpdFF8x$#o9khnuEM9z1wkIN29ZL{@En4 zi5e#({A}gxd)-w;Y@h56ck?;J^i}kgW9KyUqR-Q$r`E4jUh}Sg#$sltg(e<9(>XO< z_I|mr_?&lgVz$N~jl<$^-#p{K>>T&c`QEifEq7%+uDi!Q{Jti<mBZ9lJGX1E_Kn-l z9-awpD@^wM35=FG$#E&5DSgTIP%m@#T6VM7RWn~MSo|T)Z1x)Ev&F1@+LJ8f)BXRq z{;K`L=^CPHCZ8vEbc<Mqp!Wr<DSx(3+Yz7FmE^ZLrKifGZ||eDGgfaG>}L*;v<_Le z`P}zUmY-kr=$Ktlp6ZmFzP(NIlz?pzyNpcPuK2fwAv15>ioEbsOXz&w#r3cBSb1Lm z<ok8UU9aj(c*5dUdwzVn;UU-kD*v^M%(}9B&C6<P*%KY}|DBd^*~#~Rev!bsywy9t zE_(H@Z}<AQZ*NC>#KyW@<yhf8uV`*-aONp#F`rofE!L0Q+nQf@Cv;r<{7TN)rCs^O zEx-A<4gX#Bxt{PldfSz+Gyh%Nx#i5K{n_^UmzOX8fB(2)Tf6x5os1EW{?~u2`J8$3 z|9;b&UtbRXua};0{rSK1wTd(9DjS`ZeXp%myBP4mxsvBa!Q>djC69d=uZr$|vp447 zMY+RyH!hvpI;-)=hJU#w*7^6_J}=+1J>AVv*rYG#w1DmDuV*g2TyP=sq-D3|(at}& zkNlir<jE*%)4E|^pp=itqtfWjGg`02SNyDKohqDSrd~7uY|<IdSAUCN<nrD<8y9My z`HXq}d|nPM=2t5<**`z*P^q|~J!$L8+^Z`qBcohZEYtt^DBtV#+I9Y6*O98i)TpOV z(|2F=X7*a#S^mv5Bl)_g)%?vb%*|eTm|Xs4R++6*dL(a&k?;C`n^(EZU+nq*>DydS zlbWj6I;?@Ou6r$elbRlG^;GuXVvf}51#jFmcOTE4<h8g?+-1?kkm;`OOf#?X9x+Vc zl6URXWK*YWtDJ?C@897)e9iyQ*{SO5tV`ED-B7jQR<8U<_xo?(K3~7p>YbL|p?_ST zp1sPNILp9yS<mZ|584wqto{9UV$uH>so_k&Y$6)#!qaVKF3))zt`zHh{`KNp_Z}YH zsCVmXZ<)oiWzOY7d2#HVUq9cy`g8rp_g^P|bU%4Z$7{j9kcMxUS~%s~TgsQbGC8KL z@$UBONx{Dt{caTw3(8yVq|IyDtJeHe%p}t3j#s<dCcU>cwWmMMD>yNwZs*Y%_BzM3 zx)lQs1zT+A|LjzIs?0s)3Fi&#Di4=8sj<^8{=50~N!KSs#w)9pcZ$FGKI?aDi0SI& zu59*KZGX1!p8jx;ck=!(A}igWdX?-rC>v3}YsId-d8h2B$O{IPFPz*}6`A&i#cg}= zx`m&=p1gY4N%h>+aI3smb+fZ&Hy<$FxufXb?%S>JIfB*s^OjH4Q@*R3?~ukHs;=aJ zeb3w6`lpuF0nI9js}zczUl*^Lw>m1d<dVk1%DM@;`L}O}aB_6n)mfgYo_yRzwD?M= zSIE|73JX@%iM;yz^Jg*t)2mT7!J-jOuC2D_ViP8$Iq5yvcH8gY*XQ#K^vn-7*wwo! zKYA>p_2(7Wm1leZO9txK+<)FW@BhxXxvw92IECiFyr`illQrL?%R%t&Jg>^vmj3hR zIH)Ses(6QH23qC|$!t2A+?ZyvXtT+x=w5Yyt6%G{1S;!9aQ{BP$mjj}uRq&;zt67! zKELM2{`vp^KKcCI-F8cy0{^cTp|Uvzo}914>Rvh)Pyb#o`@TLgRPXb**ZHUK*XQNi z)&|!7-@5bbqlf>#o7ruz{LfuH*T>RZJ$UY|T_H7|SB--fI;a`WFpylhK)@nJC#3Rc zsP*~6I<X3;vIKA2S&t{M6)f8~NjN8O(cHUU9Pal#UQ9QgH^)Lnj%Q};wgdTEj|`8U zyy6`(ZCy_B=Ju+lA9GZ0%I7~cbm8}kaTLFL<?fv~Pub&G4?XmCw1{Cml*pFIDzf)$ zso##Aion(*Zra?xS4K|M;{0`VL%_)(_h(->%nW#{AgXm{qm6XYM6o@3Mz*$JqL>aG z3(Kz5xRjw(GS`Mr{ZE_7SCM-<+Se9yTBTon%%U26?%dglD$h*~bM<bW|99%S^^t(b zKIU21IHylEF%LSmq>1CweTiO$D_gx-tpm8+9ewMQYpdP0HqS3tsJr&^UySy@2Z9Gy zWbWGBUA5m$E%LTuRcXnWcOI$7oBv7_n=Nnjb6nBg68(F7Od@Yl(yEiyXD7eQ>RtCC z_5F2@srLDjDhm#CDisSUuF-lRXl;9kEh({~#?PVSVSt0)a>2%svdC3;TYrA@NpCqN zbU-cR+@TV;3Gzu+!q=I;eb;Qa@hUrLFYjLTPv^U=UqG^*Zs;m~8K0XwXK!#k6lulP zIm2k$idpdmGiEy_XIp++mt_CF#>@Fp+UrHPUr!aB?(p&bQa`Jd%@@|3nlS%@#N`V~ zcYiNa`n%L#_N)C=j*n?y_KWLl{ks3GTb%#>|NN)LuYb*dn%-%d!WXjhnzD^@>8ti< zHb3Uuu*v?bWU0Kdxm`EvzvnWSt!}oWd#`J=votkbEHM**etL`9WUJ7u00E_Wjt^2b zqt_l&%g@gJyv8r!nxnwVJ1RYg19vB%oh@Luc%qeT*JG86B<VTZ^!M6*2t01IN|5J_ zTHM~QCwb2N+cmu|{)+aS?kshIQ?Qe_ul0l8tH0|nMJ7Mq6Kx#8du{2-?inHdOYYr2 z`ry6Ozx{D5b1UEKcyJel#splIyz*gn|Ba)rE4QEXKJloVui@@yQ7g7s`I9$UqWC?| zboL7iy>WPTT4{c<5NnJ4vcwftoR67aZO=Jokso(!(#%`;cWAdupWUDPb@sQM>AKMk zr-Bx)eg9O9>4S>zY3sw!gy)tWyvJbHd*{u}cDYAAZU-A3_Dc4B-p)|j&BU{t<M_sy zn}@c~6KPo5$bDw(sfeeApTafF!bSgwR)j3cjCzps*ZWWE<%NDVSB0ATF7EnkbW&;u z|C@+sU2}z&axJKF%5<qWU%x5jm7T}EK&IskXTN$f8XZqur6rr4-(^zSQ+IvSRqam? zZ<*Je{1CtCWcGu|eOJG(KUOjQ`HG*rH{4t1`k9$&@20J9^IUyG@**c$T;Wr4owX=? z#q#fyT~mvH-`l^;cbk>V+y#-TtM6?+Qx!2qKdMeE``{ggwU;vvSqT2h_InmmXWwCI zc+?=nB<;oi3li-QIew=*#r{g1x4?!mZ}vYE^KjqQGmQ;g`75<@^TabP_3vleHp%;a zSki51Sg}a&KvHP)Lbdg8q&4!a7Y8b^y^5<a;JTTyVXJMO8PADt*DF51et!OMddeP4 zso(zF-EKb?zkU9X`0c}I#TSdup3NLwQgrBAoW1O>_4DmqCB2UR-hTQ2ZocdJ@n5gk zfBh2wKllI3L+`8K{Xh6le*doj|GfTBtG`%(X}aycS6AL$T<N;HsWj<FN_u#FtGUS; zp2h>s|6ixZ?llj1ukl~K_f5SV)4sQCY@Zq=_w4Ptf9q|#+wc9W|GT%(h(E=+<;eff zUv74v`g{Mw(Zj#bNB_L@@ArB61Nn0WR=iP@oZ=D`%gSzdcJ-dtU0lq3&c7R9+<Vv< z8lt=Z*XpjQvm2|Xz1btIRTh4~<z@WW{a^CieYzq)&;A$wv+mV}UA>!*ozYulb77C5 zw6pAeZY_tO*K~Q`mE~LdU#l(<P?c+1?+_Z19y2}f)$B#WyJolZl^D(zbmTlf@x-f> ztR*}z)rGel*c>3<G%+CMdThk~cE_om92Yedg@bm!s?y|4zh6A}MOX8ubm32lEv{)< zTUcE~#ni3muc=r)_pYj;YiWOWR<pOH`|Bs)4?QS7Z}97C*x7uwD=gPeY1bY}YyDHc zb3*I=#MIM5asSyo)n~K0XiQ7K*=M`+>XLt}rfmwJ>1?*PC;fkhd%0)OOvcP9BJQuB z@9%YPoBZ7W^#0i|8$wqL*G<w1TfAxO@4bAXDdC5fE?V_?!xEVZT9-~Lsd2p9+|9V+ zG;4F`U&||tzf3XO*^|2Zu8v#udd|Q9tDZjC;Z<@+qP=NL`(DjQF?!2<7jKhKQgpZ# z(>afQ>BX=m*;}i#ZJwx}sD6CqY{zTic{_|{9&+CCc-_FZ`U#uI`N`LhdtC5zVRA29 zkgRcQrPu6Jk3*(gUvAmB+uA*4PI%Xb^vRR7681?fDZ0xx>qPU`9LLz|8Be>lkJl}3 zn|7Q*&@*pOgtF-jeK)`8j_uL<x|?Tdh^nqy7V*bLY=uF|dLIsZpQSSwtvj?+<n!EJ zx|wl4PE%SA9sSqy<=3`~-Pae^e|Wj#|Ld9n^P>O1OMaB>F8crb&BK4+!|b-N{~vv7 zk4J$>g4_z7)UA0LXDgPa&U?4PZ0EvPA!l8$&C6e9)L#1NfyRmN^_jQo9*Wz}6n&Xq zwDrv!DbL80vCI5+ocgG`Uu>S8t#R)*bJd4ugfBOiv6z+^=PlY3Um6#zzAL<!o!NKu zvhGPejn+|DN-pUu8Q%&0vnzA!{U@s{z69<JoHQrG)Hpp(XT96BXKn6RuUab0G_mRU zr`N>?o`_Cg_WpW`$(wMIufIyyoP8A*;b|F=$Q!+DMySiy&ojRUYn3Iw%)0%&JN!-J zwY3{^raoOIYosk5dd~5_m_$Ixbd!${r?PYl%sqRFMXREbN$aYAeb<Hyk~TJi!uN%( zrZ1d3J75)4(mQeKEgqATq7IuiCZ&4odJ8`nZ(`~YvOONC^!Dw9jS?FzAA0aEJ36cE z!s`piXKJ3Db8zLVYt9!xTR!9#xnwLP)!wo3t>wY=Fg4+giErvRHhMg&KG*+d&Kb_@ zS1-TxSyd^e$9c(e`7WP)&lger(K{ALt*Y=cnw)K<%*j{KWcu>UDU;}Lr6T+I3cC{Y z7k{1cD}DNoyAhMNZ0Waa?Ef8KA$IMQ_twVSESdLxDnk|b@7nOL`E}f(y0w$CLRS{& zm)>dj|Ga$hzx6X77rpu)^!NYKXB*c1x0lbeeer+$$DLn)oDUZ_40GK*H9fj|^VQO@ z#~YKl)y?x41uHtm3phW!GfnsYS<dGs3PDz%Og>%wocm+)xxULEXT&X-cROTP%6#FK zfvc=z8G;Yx<o(+a7U{;ldY+9;&1r!PUa<#vvutd7ci(k=N5`+*842?R)C1z>zwUdr z@ZRxzPbVIde0VHVLhr(RO}?kQ*n<2SQ*2k>I`HCx-NaRzJL1aFYsn4em-eqm9x zBX4>sC*#y@*G*T(?X#Vh`%q0qt?qs?-?3-99a1XQm$EL-dnPX9P+qY`tMU4UZI@%r z)>sJf&YvM~9A}s-C0(*;_gkkLk(Uw=&i%<cICG+NZ;(x~aRm4Mbvy|(xw#jwtPD@w zRyMU>Q+QRhme9{`{Ym1pV^?-b7k|+?W}?<H$1UFV+1oF>W!5$xvcH$@eXYQMXW{b& zyToR^Ih*8rYg2MmbnM}6Cr<>=S@rtb%FwyR4_?>p{S>xJ_Uo?gSK=f#75@&E-LR<R zY39OtmPW4g8dj)?Z8q^)G249887~**C!23_#Lb^sbo(@as>JeVDce4V72jmy-?#IZ zX0J5Akw@2pc$r)08Rfg@xWxANTiJM@zMJsyY4xes+anvR3fAuz(p<OVf9aL~S3f_L z?))!lS8t~Cyk4GfzWtH^cTPRO_VvHcANP$@?98Ii`5vxnU3`h<ip=ZpZ%eQD9X0#p z!Mai<b>c05+bgqmH`(82s_}B(`6BdTx8t{Oe`41ZZCD{8$=O@@JyOx(*<9Y5e9=gE zVJr2ChS~=d+ZPmgEX$2}8JQxioF3_7!*aY~SKzWv!9QA7NA~o_|JN1mEVD~H^4@v6 z;J5SV4EaAX=tx~kdC15Te=*}s*()Z8&A0A*6+rgcWCZAN?MvGb{+Y>F`*h;|hv#3e z$m+}%FWfOf{kNrKu+4OjGn~g0XD)K`s<VFi+1K4z)N;$B13LC%T!!8=uZ21<ICNq6 z)6eeOR#)q^<<>rvTX5#<&OFw_yHj^8u6y}QeUqsUbMakSzqPNf-?+kNvb@1@e_W`B z_gv#mFH}m-t>LnnKGAZO%sI)%<@I~n4;D!`J?+tXb-8iR)<3?RCQcN;Q2O(m-D&M7 zyH>GWIk!&hL(GkBrn{F#yj-;@zsvSlYsULm9Yx2?E&6=t?E9+ca%fX`hRB5OZE^iZ z3uem~>D<jp>v&qN>;2%6#Uqu6Q_gfg(b>VzWqI%*)6WH`*ynyrnWyJ^H!Eu4-qsZJ zV<~#?9Isry>DBc8=%<jUe=HBrnqw8c*X~uT$}E-3a#DGRq>Og92{?ysdB9!2osIwX z+W3bNPsAd=ZHzj3JaSh~iJfXp?5k9hWlWtdo@M#BxtC7NHfz?3&ll#}Il=$={HzW6 z-HWHTPCEH1@t*WGj-|XVdrtO+96a(q(e2^9_PT|M9S`Q^`|R`xxhFqKU>)<Jum5<i zByfdnRXfr8<5EnN*Nm(BQkOfQon<JLVa=H)=*PQwn()pS*2kQh7C#Eu@57mr<2l1b zXJW(|HyshSr>f4+?{!O=F5e<|s*|}%vgkR7&sI~t>)|WSj(u0TH1XS9{nP#}cf6XE zZl?BR{?M!PJ~#V9-AaDuPIdpzcD`c^o~iq6{L3bkZW0zbsl{-oa*^Imt`)&{3vJvt zaX)5E*?(~-&p~r@KV^Bj!^N`8x=uT}yqmeuX7ZFfC)(EK@TrPl=Rd}A{f&&Jxc6d) zr4w6}cJ~_S<codXc)_+<&7|%KPgv>P#>ulXKe6;~INnhIdFKX!$ajige)Q->E%)?c zbJ@DEA#{a?u=#YBW4<drJe&44Uzpa;x49&W?W*O`r+a4#`=5Fl<Hf<eMbSUdWy>M{ z^SlmvDU+CPPda`rT*Y&FM7hUFH_7}(uFh^DcQ=T=%;lFo*vBJ&O-*;Ack&+gp4H|B zQx{eJ+_FW`@Z;3Oo{K+3{Qa;)VUvi%&m%(HW%ewMa{s#J^ts3Gk}1}^S6p|FG!xVn z@``^hefQHUr<PUI|EEYjf3zwl&iwa56VreU&+M)8c}o75wX)Yp9^3HH->X+^{?|+= z=ZC%?pM)c8&foNzXLHk1Uvgvno=YD?f~&UNw|H9}{AzPyQikI4ZQTV;T7lipuis?p z#y?_dwv{j{n|5r4`E;$ejcQgFY?}*Bi@)r3;LBWUyHRb^RX^FV<o|D03N8D&`B=~N z9;V35SdGH0{gRa-3G+YwK0fP6q595+AF|)Se{@}rOCqqcaO;sXSA@R)ULSZ~AvYn@ zTPp3rs`ygvSckr1=jhkIZ`4hy{!MYIQ@!FF{(SSN&MB9eCvfyT35f_lm|?ps`~B8s z+pqMWdEDrneSEsH!?n*#1G{*C`h0R%NIu_iakIjz)emP2?_%OwQn)*W@3dA}UTN;V z>naW*ovN=HH@;c>+AHNIkN4Yk`uiHcZ}E$a`t!IYea4#hH**TM==IOtYcMa#<jwc1 z_V<?=A6nVpR=Z{1vBIra)#vhlN?xC7?p*yaIBMb*U)d8aF)}L)n)e#i_zHj6^tJBq zSMhGK3EN&y4zYJVbaC^#=G!kPR!ORU5^LpEU-q&>X40*-;qeWdn|7#Nxm^;*xIXp7 zFZE2;$L8B4x4n}L(CXMQMXbU;zJ^`P{4rb7r3Dttnc{wNxCqaE8<y$*Oy+8vAN%bH zS>4r9N2=z1w~7erUVGE&<N^IFRa+-!NjzP*_L}J0txI<;iu`-Vb84u``^flvYs`YU zzHLp9&cERNW|fT86F1c*HOH!trmpJ?&Iu@=cinR4(r*Um+t$4K|H%JzeDu8R^NenW z>cyvm0=K$s$i391H#>G~%(k2FbH1-Targ9$+X>N+9>0G2aFx;D)+ZnLzghnJZ~Y;Q zc@v~h{x`f+wJ~((|N3oz3qV7fyHEYkdLC~TcBb{g+48jqF5h{6n(gP|$2zv#{a@uj zUc*+Ibn;urj!Pjs*Sr2_FgSFy-*iX#kBfbCE=xW+Wo~7a7_&55@pSmZ>vzBTt)0F^ z;moSNU;JM`Dc`}NXQG+@&uIDlyKbs`e{B7peg53R^z0|6e`yIXklW;zvo9sH`oEp* z)B1l0UJ0om5c;|Q>zl}*e~*8->HK&4?VooV|MW8*GQPfVm*vTKo||^ep7BAmuhnQ? z%lSt-(VhR=C#>4i@MB(@@6Knj3R-qNYb;H*!t^g?J@n<h&pf5-g<#*~Z$~7qa;{z$ zr@AL0Pe=Zc@)_}G-CzH(FS}=Z?TFv^e}6W&UlacJpG)jz-`}R}o58081%7zSEGm^( z-?Y7twd#rNL;>{@zrKZgfB!5_bNgDf-g|xjwXe?puE(9$&zrY4zGhbJd(KG?FF4<% ztPhp<zu9bJ?)T_fK*vGh=e!P`Q<?pz&N!JR61wx|6_ttEY4;ebt9oV#&u3Y%*x}da z6H{au5BW}3xhKh!R=LR4-~D8OnSkN)$&E{<d{}l;Cx-df&Z64~<L8#ORjTx7#h)}c z{IKEY@}!{q>v+~4JTY0l!=|w5XHa_a)h&7^Yj@2LKUFbnqsKOJ-qla}n=h*W<&acc zbJB(3e)zmc_wq}ZKK{9W-O;>ff1htYoAtN<Isdo&Z)@`Y{s}*MCu7N~U?;7mEekn4 zKSl7rRm>HO>yqBOx!g%;@8a8k6PCT0`A_WEj%TO)-Y=C>+s2oex2W!QV%tx@8>=(^ z$rVq&&=PZ`N8Q6q!1%!P^Sk@6oxddbak4;1vQ6o=&2z7r|54?iUV3)n<WHIR#fl_< z`EKy=`gr%={0E1>rf^SXez)0Xx&1;xu_r%+pE!kfd<y&#>vfo6Vn*My8LKadiRO1* zHQuw7J5s4D%5}5R=GNJjH>d0SW@?<4=h^SzQz8>&5!LdC+3Ses=WykmuMNMq)#{x1 zK6PDz*{-K7Po7%lJl<2d#iqVIxVv;o-anfw>o@j4oc~ib;jsqq!daf{IuEN(wYz$i zOD}fkHH%K2s-VBwOLfB}Ex!Nq$|<?hv9&2~eT98M{a422k)QIu%>MH*@a4RHOVXYg zhdNcPExa?Uqdj8pp~oqHomDf`UDdCb`{wk>{g1V|R#)euoD#Cm{p~{DrQN-y#jcZ> zgP#bzZoj)tyZcRAvfg!l{;!owuGW74oPMQf`@(g*d3e`$tU1&wo)okFiaFPYRs|*t z7s2kBySungn;vJG>Qs6DL{h{PXO0K4Q-!%dPh~z}`b$7&`rl(G=M*^BO^Sc_M(MBr z-Bl-2%PxOXir2GS8Mje)R<4-!ltst)W(jz`4&8CDq*P{;z3RW29_bv>(<a2to40Y& z63dp0!lII&RQAV5g|l9||DfXVk)!>R?ObjqPKMe~F5Yo?;&kbx%{P<C?hCsVSl06H zzgPEh&;FRjA50IZOWo>O$Mxu*L#W{VhZ66a!bP*LJ~VDi^iq-BaLsp8x$XiV{`b~8 zCl*doN+|pK_Oq>V@D|fUX(oZp-`}vD+-od#aOWz|E2nj*`Fr?$ytesy(aC*0ub)0F zzUuG(`@Kx@&S3p?CcVA?rNiF+-?m-;Q~kYD&#%4RA1|V=Xp@w=h`X*>tW9Cp$0fcV z={_rN&wt?Qy?2W8u}Nk#W2|S@rnBvQRph^-vf`R^80YbQ>k5PQ7JTw_y;$qNnBi;8 zzt`&zhWFcPzT9;=_-TIKP3x-a58v8lOQt0EGffh(S7eNuZZ;!S>(l4wvOjxsKL0GP zXU>#0K9wcEy5*nN4TBg3Kb2W3m+~b)%(=M0D>uO2u*;HrilN?Fi&K$H<jx)XyyqF$ zky&Of+`%mpalsBvj^XDYor;WEz4UEZtwqwiKbL*~MK9db+;1nw<j#0JmcKdm-~NYT zmj4fb>weDvZ-4a9JG=f|H@w2~R@&^8@#E*Jj}6&xE_?NHyW75NE;FC=%;LTAM8>2w zev?7P=LwrvTrcmQslCtO+S`yhF@0+^_n+wGn`SJyRPxHq{oXsIqD<F!o?l<R?0IUx z@aLI6w^(#O?d$R0RQ1gFe&3<(AA8<-#hiW_Q1ve+`Oq`v7mC{auel$;JT5$!EhyJp znPu^O)`#tLdS1FNPds<xQ1DzY<(b>XzG?T|kvO-w(Yshoo~0q`;Eo^}xvBT-oLOfT zi7|F;d^ua*)G;Km>rwW{Q?oe&zlE*)G;c{$-s9v+QqSJ%GV7Grgw?OEmz>ldpgWy$ z!egy-_h-F$n}2L=Wlhk0@f%UQr}4zRWaZU-#{GKhvR#)O*2E}8Ztb7?G3Z=-*u!ll zt7n`k)P3}d@5r&B4R@0`9N88fHGJwG@^eO3{?yMpGr0SLRHANAn9IIvUF&sgbNAG( zTg@-6t-H8ezfE%aVXYhc9zGK_?AUr?--DEClh!|+7;{(jc<9SKxy}_|<2s*x3rsNS z@Cm<=+W7A8yUi0LHa&Y98@7GU(fEH#g&+Q}obP?3-uR3rpWEHoM(;QK#r3zH{#w6n zexCh}`t6@~TK|6Eo3eQN{n*`K({FsfccYH&qT6ZydqQz%Ul|wQ={Xzjd}*qV-Q{@x z_RA?%nTyw(gzY`qzSDjw=f}xYuHRcUjd9bg>F!>WGdI7CkaCyXvdOvmX2p?+O9@s* zub0OqUYk|;<YV@so;8L+f4^S(clzx0Z~xp?_*U}kTx#*#>RNiGI!kDJ_{xhqdL}t$ zy{7#;iaOWdw9<13IKtMjMe?apr=J$j^#GaERku>Y|L7mMu->j<SDt#y!jh>cuD@#2 z*uQ<##c<Y^+?SU(e{)*j%E3E()y&^nx5^U^?YYi7VI|+PvaY|&EsA!{X}JFE^iH?b z1>AS07d)Ghn0;(_kMi=z2G`#lGxS)q;obC-hbFy6uIzo1-{$Sk&net>N={p&)cnPs zod@5BIXu+*ea3EL*v$yuzw2%qs(*jar9FG~&G;v)o;}cy42<@=wsywfzo~Z%rhoju zA>+`x^Z$+S)O_3W=U@5nmz&SB|39Bw^X|fb<(n^_mj6F`@`?QQ_biues_N%Bm~A^d zPl5HDXszS75c4Mjt0tA3woiChugkaaQ3NmF!ZLHe!VWg`b3x04I9H}Ezf@byvG)k4 zTw>rm`4{W+PcJO-Idgd4Ds9id+e((~HJQ2ZROL}A^~c?8<{~wJSIs;d_Hp`+0G*Al z`3HV4tr0Ne_<l)und{y9hG?JC4dypP)6O1?eAm;=QsX+sd&8YQ{_9E>-PN8yN5PYQ zdW_z*X_k*mPV@P!zqPwbB`+-OiIi=D)CBhX(c!6&f7RqKsOepIH0KS&_tYAusvG*Z zzb~5@k$6}Cb#=DH(^dP-ZQs~_-&^|af=T8D^Op;Erdcl+Y){RT%65)D<XgO0@1oh{ zC#Pd)t^VzLcGBHF@n6=-+IZVd|M=hW)oW3?CcW<eRsXgK{olIv=ZAlv!|cjm{EwFT z|Ni>*_dm3sr0%cYF0W9zcw)T4VcwlTPaTOldy;+c`lCnF`%6xCtY<Qq-uHczdu7MB zs*Z1~qJC^x{GWMFRJrWy&<S(CpITjVd}3S|qx_>i?~YyH^5x8KJO9h2vVTq|?(1n~ zZLYg%r{=Kmb5{Jd{UO%JLic(bys-VQTUwT6vO3TF<)Ixj-<GDHZ@m>BUttrzSL*N4 zwQ1$ziE6z0T79oK&G-IM|4C1Fu7mfZ{cZYM|K=}`=70Y`?|E_gzxmEb-OL}dY_j-r zucE1F#;m)J*V6V(@;@=_b()OxSC+Vw)+xM&M@<Y&m9OsVFnVp2oj*JNwENUc_iD6@ z+>cMP)QMiHx@$$<wy5J>;Wjz%F3b+f4fDR4X1xE_o}25|-ju#RC21L#>&3l`G*fh+ zc*SI_Puf@IYVUMb<muN8#c!+lTEm{b*}`Q0Ixge*8#_xWz2$c7N0u|5>}nF?oM9ta zy3v9+{r1f8)NLUG=R<aAt0dYhb5HM${TzLJ=e2;m>&_Fr;+*W1B)2dw`MGRj+bx+y zRmFQ1E4CyDge>=V^Ktgwdn@dkjaapoALj|z_PEwd-%IzDr|(<#RQ*NPypE@jBiZLF zO<9$C)l<sMD5G-HQ^w6-r)@eJvp+5_n0s24e9-<5zi!*R7ROgH$8TPJ%Bj$`Z|9uL zt5O$eSFL+<bl3fN+K=C?Ska=b=hz%o*?exoYg2x!<Pzme%K5*F%M^FTG&QV?xjRd@ zru&VpSa`^>KOr34fmd^N7rR|sH^=F#@x2C>jZ?3l?wqt}*KgM1LS4J->UVRT)@!^x zwOCK`)vTv;ZKG={Cx&O=t~>bVQpaVXX_*O~JGPw7t;@*XzUu!Ep?~pyOuK><J5)c` zpP!#+r+@rE@AmojKkD-z7u){3?`_%8uOff<%;)%{i@qQG&i%k-ckRRHt1D}+@|Zt< zvsPg9?C7x4*Uu*A^6b#&DRL7#)V&aN^n_)j<=<wOT^BB1I=Dvf-W?J5rbppt?Q()0 zD{cAfnx!ICZK_HgMgA_`yGr)N`>iV^uP032y*F_EJ0bS4GO_FKjiJpf%vw3mAA2o1 z71MFLGsXO^&pf6n_S~DMt6jc&J$UnnB8gx}zHp|`aTTA}22HhWT_@xjv7l@-yXoQB zL;1_DRmERSO+Pw+>W;OlW#{s4zPYW}_25`%c;DpB>Hj~;UO#;&!0W)axmUloAIdtn z{FmXnjF~GP-!DDwIk#d}#R|hCBH!j}^2$lp7TjCVTbdi?@p<F@J!e++?@fEVB>bx8 z=4gop<_Gwd?Zny^IlU})YgldDd2Q>thJANk4=?|FPCIaQSxn>q?Bko~#C|)O+*0-N zM^wDy^H-}kZ@9jo`XpzG><#aEvZ)!juku^v&ANAQ<D|XQbB^uacIe%^V$R?9?Pgh3 zGETek-#<QQ`rH4@Z=aXD_y6vx=kFfv-(snAyJ4ZdQfPGi%Xb&#%)Z%mADcZpXvdoA zq5IaHGOoFrz3J=b1h%zGJ7>?1^39u(Td{XD@8+AkR@C^;nzyPr)_b;<$STwI-lrRq zUT-juxMpqXw`^Bm<)I!mrT}+gTajKJUe;GC;&Il`j>R?GtA=Y!{nh;Xnae~`@S%m` z!3DpKy<@-C-~6*`<}qJp;Rh_&{V&RVzu>t3e7{zx(w)<Ll3ANGEx)grbxT$4ROOA+ zV!JNteG<84`t``}mD?q!zuZ;+c6Y6%U+<1Dr&PJ7<(<5FXzT4~w>Erzet6l=yS~9j zrdo@Yw|C6T<YFz*{iEZ)>4*UvcgmZ!n>4$tm%rJ(Cnxn^&2dxPbs<_?9nX9U{93i` z{>j%*kNMxXIkaWp%6nz!wZGr#e`Zl_sI|S>?i81=n#xUoOZC8aA#c8(>XVjXo%!T~ z(BdcdhQ_9WyjF8JgkSt)`>bq23bVvc-e$j|;+x^VBH8c%Nd1+XnQ>%)cl=^0Z+G8y z3e&ZhYd-iY&9t{mj=}WL<Ne*oLpM$n%{b=RAh&y6NcWPRTYr0)T@P|_YFvC^a#+MU zsh_W+?@Ka;X%vR;UgrD%`!ba|7d?+y?3~oM)8+sDnr)$%{<oixx2gZN;Q#$&>AbR! zTuw<S?hMl1W@Dga;*}}k@l!haKaYRMhdHJtMoXDGP5LDLS%iXx+62}%rCEGjZZa!J z!Ov;Vg`IXEKD{p#vB=g?5*EF`XWbkwt3Hvx_O<+byAQD@34WQPuy96!$fb^ozVDxY zJl<$CZ;t5}{yUxb-pem;D0)~SJd5YSey*D1(ti)Ke~ABlw8Ut_f5ZPGpED-#n;iNV zDb;*cX^#3li~hOl_c-QT`tL~*v-baIpU%7Y_?%543!0~|Z+U!l&R@4bM?Pjad~n$M z_>KAT+1&G4Q$Dc%6u$NC|HajNr{~92Zhp{JtW){_>zkt=Tr2<cZ<l-XKl<mIh3`XL z>o-e-7J>dcwl9VC_)XCEiHB=`eBFP2xu;O~+=CAD1m?})V|v!@cqr*rx8sUgbyv=8 zQM>)+V6p8(o!+G$fjn(aW()14CO(-nL4(=l>t~ttT;92R{vAK9eB9F3cB<7z;R!Qb z7&~jcw%pV8KPqc0H|N4F&Rxyh_He&HbmX*wqwq0t>yDo#=>`u{oLmoyzq`Oaquy<Y z`^|(U&%!UC)=Z3>@7mOQWMagEoPVrd$tyF`&NA4@T>hT+>*oc_#eo}|mvH*2=NG&= z<I%MAm$qVf!Sx$9pV%MvUN#6h*i)dITXj~<YrErKc~1$WFWiq4F9bWRS-Y@V<Drhn zL%D;64q@89O3!lqn3V*~mYDCeHBn9U+2Qa!_?7>}e&v;i8~)41X@QnEi%cxutD`Y> z*2bhRF6l34BOB8!4hbK!J+8SfE0Iayk9?h%JInEnC)}+s->+bt$uIJpMTPHXlG;}5 zmAR`PKAfM^)8P31>JJmAx*1(91t%TXOIlBUpyqR~BjS``-{uFJ8M5gjzw=8DiN9zr zYFxN?kL<1EoP0M`+5<LsJ>Pt@!G-go;qs<0<_>F5?{`pHV89@qekay=UD8))zXKP< zO%x9m#;9-}R-Po#*mm#QxA4Bz26w;h`)0O3sCEgfm&&FO=O54bA=2LARya%Hq5nyq z!}{4T657<CbZk_49=4fNC0Vt5#v27jw&~3Q4lU<3BVw&zsJ;<MnHBv^Wook*w|2_D zExTk|PO#29s(91!=Ds4C?EktmUuk4>o?dfo`tJjBk;3%?z8NJCEjZ`tNQd=Ke$Z)q z=7O}{_qIF-Hxc)D1(%<m-!7}}clg7E)+_N`+5**k93pt@XOy1F+v%{hYLEE5$E_7Q zyi0lbJU1VI5alnIzv8!6rs9cb?2otWSUz!?pi#NzL7@3xC3cSDK5;%L6U9^iFYv82 zoPU^Ai0y?3uac!PbNu<{YoE>SB2p$feX%{xc|v3B3EQCQjiQ${Vjetd?Yr2t^u?T| zi49IwZcp@^1YGol`UHEA^_;&_7NFj=LEJM|*z4ZCZh>BxCgu4r4!Wfrk34<j(z6{~ zn@;F|Iz4Mi{oz;Z6|;X%+$(fWDriM^$Ce|p&h0_>x?5cAPL@yG#}wzKUYx(`mUrp( zo~JimCX|%OOf=|IPq9DZr1SW!{4yVnaBseZrhA(W<_eaqVRJIL#AYQSeed<oy}T*@ zpT+oA#`(+hF^UTLH8!!zOnDVC@wjZS8f!;&-uc1}?}ZibZD`P8F6WP0B+30L;IZ2d zZedwLnLmdzo$eiE;`nv^(#gJ;@+qy7`~Edr^_iqj>#bh#w|a4nV)G%7XIC;((+^u^ zUA)e9df|&*Z90dhacpR7U}E?pC6RD#i{$xzS}p=lbGWTe3hCtjpWW$lY299?O`BWg z{`TnHdk~RTYyEWNm+v!~Rvhc;)K@((8QJipz1iWPP^9r``OGUUElu-#54dG3ZwoqP z6mWe4?;9znnc{(FMvkWT6J6cBJiQ$vn5KDoe(g4yd%m<q9dukkPvVX4315$0OU-E6 zz*fV|X{M~P&{*jS!*h!!U(1Pmr~W$>s^N5|Wr4EPrIdxsSb5XEG{jT0JY-L-c^9R3 zl6_X#hrO?NeeGJk?9|h(VJ%KJN(=247RZ#pUp4JRY)`$v=d!=gR)2gxU!yuGQD*P_ z3om{K3;n#AeD?hOxlETFWu8e?&s#3rqcZD#%K2%%j)gnQYyO<xy?FXfeveAg{m*l@ zCD(SEEL6Ob6Z2<jYfM_H$gx|lF(>N-{%_k*qa8TsQ;$wmy3OXAOR?%#^w)lxaP0j2 z#=3K}Y7-e#bl<Lc^elec><iVuUj^lF*#6!xPPY1_YtV*c>k3Tw?5x~9{qXF=-ZA{; zXUlf$sC+mjesqHwd$Q)lV?Dn=JxNj8z300Bp@-ibPw7atEx6sNaaeI;TglN5wm_LS zkF5O}+b(RkeW0YTdnIrE_P|9?^VYM={NHh9%VPe0HV2hAU$j4^=vDXg*=|<#+oeyG z(rg^B8SL)Awv_R;x?+i0d8yusof5xQs$J)NW`c|;Hf_KCTUblKQcS$=o#)3k*2;e( zJ00(@R6h72NJZk7ibNbgXPdc0Q{qgPW6wVp+dQ<GFpH~Wf^b{gy=B{9TFBpXeW5#h z^39F{lRNhuqGw0XmOj-oFJDsK%<4E(Bd5~Y#fH5rW=vAp{zctn<}zi2FRGuj_+QTQ zD44`Gz4va4SIk>}w%_x)Ob+ii%##VcbR~FWtCP|i(HU>N?$3Xe;nY&(t+BlOk8OG8 z3tKier$b8u5^U0B)V(@+UsU)cL>^;N*PQOm%Gekk-ui0Wr3DEhJNdVs;yyP$N2`}{ zQK!Pg2&vE+>{07aczk<xH{0L)Y5X#alL_|fa}-w9`n$ycnD+9+{l3SGoc*3XaK9eU z<;t&>(-Q1>Au~|f()D#z7K5xCw@K2;kkVUBf41>{T-*5Ml9svbgLs+Z)mF<sty2(d z?cUdJ_s7E`^LvRD|8mHtLhhu!{Aug^l~0B+&N5sOnD^$9p!d~%n;uw&hCiG4c+q@S z(J4|(WLGU0o$>5;9OD|pf3+KyMek;qv-)NYr%BPF$x7y)7A##;e`Zg4tL_kC@oxTs zR?b;Tjc!4e={5?J78XkQf9z1X(k{y?^=``98!av_>;72AY1l^0V+fw~^Qeycyk{G0 zPp)Bncq^QJdeF+7Z?hI(=$WiiE}IeFd~Hr>bWmRBu{mc2rmfJ7OA$0opH%4eYVKyn z$DJ!pBte@9y)U*dW?kg8#HD0@(90K9@|kX;cAW;xeYiL@H-GiYT;6@xI>F_{%ia@4 zzXjd7cTTXBuoO#BpJFz<ch)Tvp`43s<r5`-={!vF*&!Grf1|?Z;7g9POwX2I+SF*8 zec$Hu+WyaP`;Dyvxosj&|0@Z0jFIP7`c*ai#r#E`QHZUDpz{V>O{|#TzqCJlr^xSo z*$uVKLl#FDN)#wXSg5aK$>;vJ`|U9w73>=fnTmIP)-_N3b^h(a?FDOIZty<db@q?` z{G;9VCz5k^ODuo+;uxdXVu$uk?~mS?FJyd%&1ik!wmrUE^rXLh@!$K;Ugo5=@g4@V zDVM}67`B=3{NTxR`+oXnizTO8%-q}M4i*1f%AT;8<#6Bh1+zB$ZFjOLlu<Z&E}@{V z?p-3o#pD_zj!<F4irNkTU%fSKnFii^q$sFluj9`Bc;9p(>m$!SxF&I`dmXsUF}HZu zf!xgrk6k96;9TKhA-mMG(S}V;Yr<WJQ%^a*e(Sq<u#mrYdwEU4o`-*m3O+sFJ>UO= zezm)Mb-q7eob2Lq_l*B{Z%=1eXMcZBZgKhj#e28^ce0n=Q@gW~BUEoMx29Dq%Y<_e zGQQ7AcH){W9X`G2RFHhD#jGV2P8V9va`r#?H1~s~=&LnH0w1)LxC!eDYQLz6zi{;P c;pY!Of7to?{C{}{hX4QNEZlc9$Z;?L0FJmmpa1{> diff --git a/helm/dbrepo/templates/analyse-deployment.yaml b/helm/dbrepo/templates/analyse-deployment.yaml index a1ba492ca1..0cdb067ef7 100644 --- a/helm/dbrepo/templates/analyse-deployment.yaml +++ b/helm/dbrepo/templates/analyse-deployment.yaml @@ -1,4 +1,4 @@ -{{- if .Values.analyseService.enabled }} +{{- if .Values.analyseservice.enabled }} --- apiVersion: apps/v1 kind: Deployment @@ -9,7 +9,7 @@ metadata: app: analyse-service service: analyse-service spec: - replicas: {{ .Values.analyseService.replicaCount }} + replicas: {{ .Values.analyseservice.replicaCount }} strategy: type: {{ .Values.strategyType }} selector: @@ -29,15 +29,15 @@ spec: runAsGroup: 1001 containers: - name: analyse-service - image: {{ .Values.analyseService.image.name }} - imagePullPolicy: {{ .Values.analyseService.image.pullPolicy | default "IfNotPresent" }} + image: {{ .Values.analyseservice.image.name }} + imagePullPolicy: {{ .Values.analyseservice.image.pullPolicy | default "IfNotPresent" }} securityContext: allowPrivilegeEscalation: false runAsNonRoot: true runAsUser: 1001 runAsGroup: 1001 seccompProfile: - type: {{ .Values.analyseService.profileType | default "RuntimeDefault" }} + type: {{ .Values.analyseservice.profileType | default "RuntimeDefault" }} capabilities: drop: - ALL diff --git a/helm/dbrepo/templates/analyse-secret.yaml b/helm/dbrepo/templates/analyse-secret.yaml index a0639738ee..e995182e17 100644 --- a/helm/dbrepo/templates/analyse-secret.yaml +++ b/helm/dbrepo/templates/analyse-secret.yaml @@ -1,4 +1,4 @@ -{{- if .Values.analyseService.enabled }} +{{- if .Values.analyseservice.enabled }} --- apiVersion: v1 kind: Secret @@ -15,9 +15,9 @@ stringData: AUTH_SERVICE_HOST: "{{ .Values.authservice.endpoint }}" GATEWAY_SERVICE_ENDPOINT: "{{ .Values.gateway }}" JWT_PUBKEY: "{{ .Values.authservice.jwt.pubkey }}" - LOG_LEVEL: "{{ ternary "DEBUG" "INFO" .Values.analyseService.image.debug }}" + LOG_LEVEL: "{{ ternary "DEBUG" "INFO" .Values.analyseservice.image.debug }}" S3_ACCESS_KEY_ID: "{{ .Values.storageservice.s3.auth.username }}" - S3_ENDPOINT: "{{ .Values.analyseService.s3.endpoint }}" + S3_ENDPOINT: "{{ .Values.analyseservice.s3.endpoint }}" S3_EXPORT_BUCKET: "{{ .Values.storageservice.s3.bucket.export }}" S3_IMPORT_BUCKET: "{{ .Values.storageservice.s3.bucket.import }}" S3_SECRET_ACCESS_KEY: "{{ .Values.storageservice.s3.auth.password }}" diff --git a/helm/dbrepo/templates/analyse-service.yaml b/helm/dbrepo/templates/analyse-service.yaml index e8a48b33f5..98720e3e46 100644 --- a/helm/dbrepo/templates/analyse-service.yaml +++ b/helm/dbrepo/templates/analyse-service.yaml @@ -1,4 +1,4 @@ -{{- if .Values.analyseService.enabled }} +{{- if .Values.analyseservice.enabled }} --- apiVersion: v1 kind: Service diff --git a/helm/dbrepo/templates/data-db-secret.yaml b/helm/dbrepo/templates/data-db-secret.yaml index 43c85b8665..7b42140e58 100644 --- a/helm/dbrepo/templates/data-db-secret.yaml +++ b/helm/dbrepo/templates/data-db-secret.yaml @@ -8,5 +8,5 @@ metadata: stringData: S3_ACCESS_KEY_ID: "{{ .Values.storageservice.s3.auth.username }}" S3_SECRET_ACCESS_KEY: "{{ .Values.storageservice.s3.auth.password }}" - S3_STORAGE_ENDPOINT: "{{ .Values.analyseService.s3.endpoint }}" + S3_STORAGE_ENDPOINT: "{{ .Values.analyseservice.s3.endpoint }}" {{- end }} diff --git a/helm/dbrepo/values.schema.json b/helm/dbrepo/values.schema.json index 964c608558..4d1825c403 100644 --- a/helm/dbrepo/values.schema.json +++ b/helm/dbrepo/values.schema.json @@ -12,7 +12,7 @@ }, "type": "object" }, - "analyseService": { + "analyseservice": { "properties": { "enabled": { "type": "boolean" diff --git a/helm/dbrepo/values.yaml b/helm/dbrepo/values.yaml index aea20d2a67..6817e949ff 100644 --- a/helm/dbrepo/values.yaml +++ b/helm/dbrepo/values.yaml @@ -1,15 +1,51 @@ +# Copyright the DBRepo developers +# SPDX-License-Identifier: APACHE-2.0 + +## @section Common parameters +## + +## @param namespace The namespace to install the chart +## namespace: dbrepo +## @param hostname The hostname. +## hostname: example.com +## @param gateway The gateway endpoint. +## gateway: https://example.com - +## @param strategyType The image pull +## strategyType: RollingUpdate - +## @param clusterDomain The cluster domain. +## clusterDomain: cluster.local +## @section Internal Admin User + +## @param admin.username The internal admin username. +## @param admin.password The internal admin password. +## admin: username: admin password: admin +## @section Metadata Database + +## @param metadatadb.enabled Enable the Metadata Database. +## @skip metadatadb.fullnameOverride +## @param metadatadb.image.debug Set the logging level to `trace`. Otherwise, set to `info`. +## @param metadatadb.host The hostname for the microservices. +## @param metadatadb.rootUser.user The root username. +## @param metadatadb.rootUser.password The root user password. +## @param metadatadb.jdbcExtraArgs The extra arguments for JDBC connections in the microservices. +## @param metadatadb.db.name The database name. +## @skip metadatadb.metrics.enabled The Prometheus settings. +## @skip metadatadb.galera The Galera settings. +## @skip metadatadb.initdbScriptsConfigMap The initial database scripts. +## @skip metadatadb.service The initial database scripts. +## @param metadatadb.persistence.enabled Enable persistent storage. Requires PV-provisioner. +## @param metadatadb.replicaCount The number of replicas, should be uneven (2n+1). +## metadatadb: enabled: true fullnameOverride: metadata-db @@ -35,9 +71,31 @@ metadatadb: loadBalancerIP: "" loadBalancerSourceRanges: [ ] persistence: - enabled: true - replicaCount: 1 # uneven 3,5,7 + enabled: false + replicaCount: 3 + +## @section Auth Service +## @param authservice.enabled Enable the Auth Service. +## @skip authservice.fullnameOverride +## @param authservice.image.debug Set the logging level to `trace`. Otherwise, set to `info`. +## @param authservice.endpoint The hostname for the microservices. +## @param authservice.auth.adminUser The admin username. +## @param authservice.auth.adminPassword The admin user password. +## @skip authservice.postgresql +## @skip authservice.extraStartupArgs +## @param authservice.jwt.pubkey The JWT public key from the `dbrepo-client`. +## @param authservice.tls.enabled Enable TLS/SSL communication. Required for HTTPS. +## @param authservice.tls.existingSecret The secret containing the `tls.crt`, `tls.key` and `ca.crt`. +## @param authservice.tls.usePem Use PEM certificates as input instead of PKS12/JKS stores. +## @param authservice.metrics.enabled Enable the Prometheus metrics export sidecar container. +## @param authservice.client.id The client id for the microservices. +## @param authservice.client.secret The client secret for the microservices. +## @skip authservice.extraEnvVarsCM +## @skip authservice.extraVolumes +## @skip authservice.extraVolumeMounts +## @skip authservice.replicaCount The number of replicas. +## authservice: enabled: true fullnameOverride: auth-service @@ -48,7 +106,9 @@ authservice: adminUser: fda adminPassword: fda postgresql: - enabled: false # not needed + enabled: true + auth: + postgresPassword: postgres extraStartupArgs: "--import-realm" jwt: pubkey: "MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAqqnHQ2BWWW9vDNLRCcxD++xZg/16oqMo/c1l+lcFEjjAIJjJp/HqrPYU/U9GvquGE6PbVFtTzW1KcKawOW+FJNOA3CGo8Q1TFEfz43B8rZpKsFbJKvQGVv1Z4HaKPvLUm7iMm8Hv91cLduuoWx6Q3DPe2vg13GKKEZe7UFghF+0T9u8EKzA/XqQ0OiICmsmYPbwvf9N3bCKsB/Y10EYmZRb8IhCoV9mmO5TxgWgiuNeCTtNCv2ePYqL/U0WvyGFW0reasIK8eg3KrAUj8DpyOgPOVBn3lBGf+3KFSYi+0bwZbJZWqbC/Xlk20Go1YfeJPRIt7ImxD27R/lNjgDO/MwIDAQAB" @@ -57,14 +117,7 @@ authservice: existingSecret: ingress-cert usePem: true metrics: - enabled: true - externalDatabase: - existingSecret: auth-service-secret - existingSecretDatabaseKey: db-name - existingSecretHostKey: db-host - existingSecretPortKey: db-port - existingSecretUserKey: db-username - existingSecretPasswordKey: db-password + enabled: false client: id: dbrepo-client secret: MUwRc7yfXSJwX8AdRMWaQC3Nep1VjwgG @@ -78,32 +131,22 @@ authservice: mountPath: /opt/bitnami/keycloak/data/import replicaCount: 1 -authdb: - enabled: true - fullnameOverride: auth-db - host: auth-db-pgpool - port: 5432 - postgresql: - postgresPassword: postgres - username: metrics # implicit requirement for metrics container - password: metrics # implicit requirement for metrics container - repmgrPassword: repmgr # implicit requirement for rolling updates - database: keycloak - replicaCount: 1 - pgpool: - adminUsername: admin - adminPassword: admin - metrics: - enabled: true - service: - type: ClusterIP - annotations: { } - loadBalancerIP: "" - loadBalancerSourceRanges: [ ] - persistence: - enabled: true - size: 10Gi +## @section Data Database +## @param datadb.enabled Enable the Data Database. +## @skip datadb.fullnameOverride +## @param datadb.image.debug Set the logging level to `trace`. Otherwise, set to `info`. +## @skip datadb.extraFlags +## @param datadb.rootUser.user The root username. +## @param datadb.rootUser.password The root user password. +## @skip datadb.metrics.enabled The Prometheus settings. +## @skip datadb.galera The Galera settings. +## @skip datadb.service +## @skip datadb.sidecars +## @skip datadb.extraVolumeMounts +## @skip datadb.extraVolumes +## @param datadb.replicaCount The number of replicas, should be uneven (2n+1). +## datadb: enabled: true fullnameOverride: data-db @@ -169,11 +212,29 @@ datadb: mountPath: /tmp extraVolumes: - name: s3 - emptyDir: {} - s3: - enabled: true - replicaCount: 1 # uneven + emptyDir: { } + replicaCount: 3 + +## @section Search Database +## @param searchdb.enabled Enable the Search Database. +## @skip searchdb.fullnameOverride +## @param searchdb.host The hostname for the microservices. +## @param searchdb.port The port for the microservices. +## @skip searchdb.protocol +## @param searchdb.username The admin username. +## @param searchdb.password The admin user password. +## @skip searchdb.clusterName +## @skip searchdb.masterService +## @param searchdb.replicas The number of replicas. +## @skip searchdb.sysctlInit +## @param searchdb.persistence.enabled Enable persistent storage. Requires PV-provisioner. +## @skip searchdb.service +## @skip searchdb.extraEnvs +## @skip searchdb.extraVolumeMounts +## @skip searchdb.extraVolumes +## @skip searchdb.config +## searchdb: enabled: true fullnameOverride: search-db @@ -184,14 +245,11 @@ searchdb: password: admin clusterName: search-db masterService: search-db - replicas: 1 - image: - debug: false + replicas: 3 sysctlInit: enabled: true persistence: enabled: true - size: 10Gi service: type: ClusterIP annotations: { } @@ -252,6 +310,15 @@ searchdb: ".opendistro-asynchronous-search-response*", ] +## @section Upload Service + +## @param uploadservice.enabled Enable the Upload Service. +## @skip uploadservice.fullnameOverride +## @skip uploadservice.image +## @skip uploadservice.containerArgs +## @skip uploadservice.envFrom +## @param uploadservice.replicaCount The number of replicas. +## uploadservice: enabled: true fullnameOverride: upload-service @@ -265,8 +332,30 @@ uploadservice: envFrom: - secretRef: name: upload-service-secret - replicaCount: 1 + replicaCount: 2 + +## @section Broker Service +## @param brokerservice.enabled Enable the Broker Service. +## @skip brokerservice.fullnameOverride +## @skip brokerservice.image +## @param brokerservice.endpoint The management api endpoint for the microservices. +## @param brokerservice.host The hostname for the microservices. +## @param brokerservice.port The port for the microservices. +## @param brokerservice.virtualHost The default virtual host name. +## @param brokerservice.queueName The default queue name. +## @param brokerservice.exchangeName The default exchange name. +## @param brokerservice.routingKey The default routing key binding from the default queue to the default exchange. +## @param brokerservice.connectionTimeout The connection timeout in ms. +## @skip brokerservice.auth +## @skip brokerservice.extraConfiguration +## @skip brokerservice.loadDefinition +## @skip brokerservice.extraVolumes +## @skip brokerservice.extraPlugins +## @param brokerservice.persistence.enabled Enable persistent storage. Requires PV-provisioner. +## @skip brokerservice.service +## @param brokerservice.replicaCount The number of replicas. +## brokerservice: enabled: true fullnameOverride: broker-service @@ -321,14 +410,20 @@ brokerservice: extraPlugins: rabbitmq_prometheus rabbitmq_auth_backend_oauth2 rabbitmq_auth_mechanism_ssl persistence: enabled: false - size: 5Gi service: type: ClusterIP managerPortEnabled: true # loadBalancerIP: - replicaCount: 1 + replicaCount: 2 -analyseService: +## @section Analyse Service + +## @param analyseservice.enabled Enable the Broker Service. +## @skip analyseservice.image +## @param analyseservice.s3.endpoint The S3-capable endpoint the microservice connects to. +## @param analyseservice.replicaCount The number of replicas. +## +analyseservice: enabled: true image: name: s210.dl.hpc.tuwien.ac.at/dbrepo/analyse-service:1.4.3 @@ -336,8 +431,28 @@ analyseService: debug: false s3: endpoint: http://storageservice-s3:9000 - replicaCount: 1 + replicaCount: 2 + +## @section Metadata Service +## @param metadataservice.enabled Enable the Metadata Service. +## @skip metadataservice.image +## @param metadataservice.admin.email The OAI-PMH exposed admin e-mail. +## @param metadataservice.deletedRecord The OAI-PMH exposed delete policy. +## @param metadataservice.repositoryName The OAI-PMH exposed repository name. +## @param metadataservice.granularity The OAI-PMH exposed record granularity. +## @param metadataservice.datacite.enabled Enable the DataCite account for minting DOIs. +## @param metadataservice.datacite.url The DataCite api endpoint url. +## @param metadataservice.datacite.prefix The DataCite prefix. +## @param metadataservice.datacite.username The DataCite api username. +## @param metadataservice.datacite.password The DataCite api user password. +## @param metadataservice.sparql.connectionTimeout The connection timeout for sparql queries fetching remote data in ms. +## @param metadataservice.s3.endpoint The S3-capable endpoint the microservice connects to. +## @skip metadataservice.s3.bucket +## @param metadataservice.s3.auth.username The S3-capable endpoint username (or access key id). +## @param metadataservice.s3.auth.password The S3-capable endpoint user password (or access key secret). +## @param metadataservice.replicaCount The number of replicas. +## metadataservice: enabled: true image: @@ -365,8 +480,24 @@ metadataservice: auth: username: seaweedfsadmin password: seaweedfsadmin - replicaCount: 1 + replicaCount: 2 + +## @section Data Service +## @param dataservice.enabled Enable the Metadata Service. +## @param dataservice.endpoint The endpoint for the microservices. +## @skip dataservice.image +## @param dataservice.grant.read The default database permissions for users with read access. +## @param dataservice.grant.write The default database permissions for users with write access. +## @param dataservice.s3.endpoint The S3-capable endpoint the microservice connects to. +## @skip dataservice.s3.bucket +## @param dataservice.s3.auth.username The S3-capable endpoint username (or access key id). +## @param dataservice.s3.auth.password The S3-capable endpoint user password (or access key secret). +## @param dataservice.consumerConcurrentMin The minimum broker service consumer number. +## @param dataservice.consumerConcurrentMax The maximum broker service consumer number. +## @param dataservice.requeueRejected Enable re-queueing of rejected messages to the broker service. +## @param dataservice.replicaCount The number of replicas. +## dataservice: enabled: true endpoint: http://data-service @@ -388,8 +519,16 @@ dataservice: consumerConcurrentMin: 1 consumerConcurrentMax: 5 requeueRejected: false - replicaCount: 1 + replicaCount: 2 +## @section Search Service + +## @param searchservice.enabled Enable the Search Service. +## @param searchservice.endpoint The endpoint for the microservices. +## @skip searchservice.image +## @skip searchservice.init +## @param searchservice.replicaCount The number of replicas. +## searchservice: enabled: true endpoint: http://search-service @@ -401,8 +540,17 @@ searchservice: image: name: s210.dl.hpc.tuwien.ac.at/dbrepo/search-service-init:1.4.3 pullPolicy: Always - replicaCount: 1 + replicaCount: 2 + +## @section Storage Service +## @param storageservice.enabled Enable the Storage Service. +## @skip storageservice.master +## @skip storageservice.filer +## @skip storageservice.volume +## @skip storageservice.s3 +## @skip storageservice.init +## storageservice: enabled: true master: @@ -440,6 +588,29 @@ storageservice: image: s210.dl.hpc.tuwien.ac.at/dbrepo/storage-service-init:1.4.3 pullPolicy: Always +## @section User Interface + +## @param ui.enabled Enable the User Interface. +## @skip ui.image +## @param ui.public.api.client The endpoint for the client api. +## @param ui.public.api.server The endpoint for the server api. +## @param ui.public.title The user interface title. +## @param ui.public.logo The user interface logo. +## @param ui.public.icon The user interface icon. +## @param ui.public.touch The user interface apple touch icon. +## @param ui.public.broker.host The displayed broker hostname. +## @param ui.public.broker.port.5671 Enable display of the broker 5671 port and mark it as secure (SSL/TLS). +## @param ui.public.broker.port.5672 Enable display of the broker 5672 port and mark it as insecure (no SSL/TLS). +## @param ui.public.broker.extra Extra metadata displayed. +## @param ui.public.database.extra Extra metadata displayed. +## @skip ui.public.links +## @param ui.public.pid.default.publisher The default dataset publisher for persisted identifiers. +## @param ui.public.doi.enabled Enable the display that DOIs are minted. +## @param ui.public.doi.endpoint The DOI proxy. +## @param ui.replicaCount The number of replicas. +## @skip ui.extraVolumes +## @skip ui.extraVolumeMounts +## ui: enabled: true image: @@ -459,7 +630,7 @@ ui: port: 5671: true 5672: false - extra: "128.130.0.0/15" + extra: "" database: extra: "128.130.0.0/15" links: @@ -475,7 +646,7 @@ ui: doi: enabled: false endpoint: https://doi.org - replicaCount: 1 + replicaCount: 2 extraVolumes: [ ] # - name: images-map # configMap: @@ -485,36 +656,43 @@ ui: # mountPath: /static/logo.svg # subPath: logo.svg +## @section Ingress + +## @param ingress.enabled Enable the ingress. +## @skip ingress.className +## @skip ingress.tls +## @skip ingress.annotations +## ingress: - enabled: true + enabled: false className: nginx tls: enabled: true secretName: ingress-cert annotations: - basic: {} -# nginx.org/path-regex: "case_sensitive" -# nginx.ingress.kubernetes.io/use-regex: "true" -# cert-manager.io/cluster-issuer: letsencrypt-cluster-issuer + basic: { } + # nginx.org/path-regex: "case_sensitive" + # nginx.ingress.kubernetes.io/use-regex: "true" + # cert-manager.io/cluster-issuer: letsencrypt-cluster-issuer rewriteApi: -# nginx.org/path-regex: "case_sensitive" -# cert-manager.io/cluster-issuer: letsencrypt-cluster-issuer + # nginx.org/path-regex: "case_sensitive" + # cert-manager.io/cluster-issuer: letsencrypt-cluster-issuer nginx.ingress.kubernetes.io/use-regex: "true" nginx.ingress.kubernetes.io/rewrite-target: /api/$1 rewriteRoot: -# nginx.org/path-regex: "case_sensitive" -# cert-manager.io/cluster-issuer: letsencrypt-cluster-issuer + # nginx.org/path-regex: "case_sensitive" + # cert-manager.io/cluster-issuer: letsencrypt-cluster-issuer nginx.ingress.kubernetes.io/use-regex: "true" nginx.ingress.kubernetes.io/rewrite-target: /$1 rewriteRootSecure: -# nginx.org/path-regex: "case_sensitive" -# cert-manager.io/cluster-issuer: letsencrypt-cluster-issuer + # nginx.org/path-regex: "case_sensitive" + # cert-manager.io/cluster-issuer: letsencrypt-cluster-issuer nginx.ingress.kubernetes.io/force-ssl-redirect: "true" nginx.ingress.kubernetes.io/backend-protocol: "HTTPS" nginx.ingress.kubernetes.io/use-regex: "true" nginx.ingress.kubernetes.io/rewrite-target: /$1 rewritePid: -# nginx.org/path-regex: "case_sensitive" -# cert-manager.io/cluster-issuer: letsencrypt-cluster-issuer + # nginx.org/path-regex: "case_sensitive" + # cert-manager.io/cluster-issuer: letsencrypt-cluster-issuer nginx.ingress.kubernetes.io/use-regex: "true" nginx.ingress.kubernetes.io/rewrite-target: /api/identifier/$1 -- GitLab