From e32ff933da48e404fb48bebb626e34f38e2d6d2a Mon Sep 17 00:00:00 2001 From: Steven <106664555+stevius10@users.noreply.github.com> Date: Tue, 5 Aug 2025 21:40:34 +0200 Subject: [PATCH 01/13] proxmox9.0/changeable-network-share-storage (#53) * convenience in recurse deployment * adjust to default user and group * changed for ext. mount; needs ext to be created * config as default group * append proxmox 9.0 * configure default groups * configure default groups * allow different storage types --- .gitignore | 3 +-- README.md | 12 ++++++---- base/default.yml | 2 +- base/roles/base/tasks/main.yml | 12 +++++++--- base/roles/base/vars/main.yml | 10 ++++---- config.env | 2 +- config/attributes/default.rb | 2 +- config/libraries/common.rb | 34 +++++++++++++++++++++++----- libs/assistant/attributes/default.rb | 10 ++++---- libs/bridge/attributes/default.rb | 2 +- libs/broker/attributes/default.rb | 2 +- libs/proxy/attributes/default.rb | 2 +- libs/share/attributes/default.rb | 2 +- 13 files changed, 63 insertions(+), 32 deletions(-) diff --git a/.gitignore b/.gitignore index fb180bb..640f707 100644 --- a/.gitignore +++ b/.gitignore @@ -1,7 +1,6 @@ **/.git/ -config.json - +local/config.json local/*.hash .DS_Store diff --git a/README.md b/README.md index bc3f8dd..7832527 100644 --- a/README.md +++ b/README.md @@ -1,5 +1,7 @@ -[](https://github.com/stevius10/Proxmox-GitOps/actions/workflows/build.yml) -[](https://opensource.org/licenses/MIT) +[](https://github.com/stevius10/Proxmox-GitOps/actions/workflows/build.yml) [](https://opensource.org/licenses/MIT) + +[](https://www.proxmox.com/) [](https://www.proxmox.com/) + ## Table of Contents - [Overview](#overview) @@ -61,7 +63,7 @@ This system implements stateless infrastructure management on Proxmox VE, ensuri ### Requirements - Docker -- Proxmox VE 8.4 +- Proxmox VE 8.4-9.0 - Proxmox API token - See [Wiki](https://github.com/stevius10/Proxmox-GitOps/wiki) for recommendations @@ -130,8 +132,8 @@ package 'apache2' file '/var/www/html/index.html' do content "
diff --git a/base/default.yml b/base/default.yml
index fbb95f5..dd18ae3 100644
--- a/base/default.yml
+++ b/base/default.yml
@@ -17,27 +17,6 @@
type: ed25519
force: false
- - name: Check container configuration
- ansible.builtin.stat:
- path: "config.json"
- register: config_file
-
- - name: Load container configuration
- ansible.builtin.include_vars:
- file: "config.json"
- name: config
- when: config_file.stat.exists
-
- - name: Set Proxmox configuration
- ansible.builtin.set_fact:
- PROXMOX_HOST: "{{ lookup('env', 'PROXMOX_HOST') }}"
- PROXMOX_USER: "{{ lookup('env', 'PROXMOX_USER') }}"
- PROXMOX_PASSWORD: "{{ lookup('env', 'PROXMOX_PASSWORD') }}"
- PROXMOX_TOKEN: "{{ lookup('env', 'PROXMOX_TOKEN') }}"
- PROXMOX_SECRET: "{{ lookup('env', 'PROXMOX_SECRET') }}"
- when:
- - (config_file.stat.exists and config.proxmox is defined) or (not config_file.stat.exists)
-
- name: Container
ansible.builtin.include_role:
name: container
diff --git a/base/roles/base/files/environment b/base/roles/base/files/environment
new file mode 100644
index 0000000..cffbfd4
--- /dev/null
+++ b/base/roles/base/files/environment
@@ -0,0 +1,8 @@
+CHEF_NODE_NAME=$(hostname -f)
+
+CHEF_LICENSE=accept
+
+CHEF_LOG_LEVEL=info
+CHEF_LOG_LOCATION=STDOUT
+
+CHEF_CACHE_PATH=/var/cache/cinc
\ No newline at end of file
diff --git a/base/roles/base/files/.bashrc b/base/roles/base/files/profile.sh
similarity index 100%
rename from base/roles/base/files/.bashrc
rename to base/roles/base/files/profile.sh
diff --git a/base/roles/base/tasks/defaults.yml b/base/roles/base/tasks/defaults.yml
index 1e08280..6a351ec 100644
--- a/base/roles/base/tasks/defaults.yml
+++ b/base/roles/base/tasks/defaults.yml
@@ -1,19 +1,31 @@
- name: User defaults
block:
- - name: Set root bash configuration
- copy:
- src: .bashrc
- dest: /root/.bashrc
- owner: root
- group: root
- mode: '0644'
- - name: Set user bash configuration
- copy:
- src: .bashrc
- dest: "{{ (item.home | default('/home/' + item.name)) }}/.bashrc"
- owner: "{{ item.name }}"
- group: "{{ item.name }}"
- mode: '0644'
- loop: "{{ default_users }}"
- when: item.name in ssh_users
+ - name: Set environment
+ copy:
+ src: environment
+ dest: /etc/environment
+ owner: root
+ group: root
+ mode: '0644'
+
+ - name: Set profile
+ copy:
+ src: profile.sh
+ dest: /etc/profile.d/10-profile.sh
+ owner: root
+ group: root
+ mode: '0644'
+
+ - name: User
+ block:
+ - name: Set root bashrc
+ copy:
+ dest: /root/.bashrc
+ content: |
+ for f in /etc/profile.d/*.sh; do
+ . "$f"
+ done
+ owner: root
+ group: root
+ mode: '0644'
\ No newline at end of file
diff --git a/base/roles/container/defaults/main.yml b/base/roles/container/defaults/main.yml
index 1dd6a3e..fa57cc2 100644
--- a/base/roles/container/defaults/main.yml
+++ b/base/roles/container/defaults/main.yml
@@ -1,9 +1,3 @@
-PROXMOX_HOST: "{{ lookup('env', 'PROXMOX_HOST') }}"
-PROXMOX_USER: "{{ lookup('env', 'PROXMOX_USER') }}"
-PROXMOX_PASSWORD: "{{ lookup('env', 'PROXMOX_PASSWORD') }}"
-PROXMOX_TOKEN: "{{ lookup('env', 'PROXMOX_TOKEN') }}"
-PROXMOX_SECRET: "{{ lookup('env', 'PROXMOX_SECRET') }}"
-
proxmox_auth: >-
{{ (PROXMOX_PASSWORD | default('') == '') | ternary(
{'Authorization': 'PVEAPIToken=' + PROXMOX_USER + '!' + PROXMOX_TOKEN + '=' + PROXMOX_SECRET},
diff --git a/base/roles/container/tasks/env.yml b/base/roles/container/tasks/env.yml
new file mode 100644
index 0000000..764d277
--- /dev/null
+++ b/base/roles/container/tasks/env.yml
@@ -0,0 +1,40 @@
+- name: Environment
+ block:
+ - name: Configuration file
+ block:
+ - name: Get configuration file
+ ansible.builtin.stat:
+ path: "config.json"
+ register: config_file
+
+ - name: Load configuration file
+ ansible.builtin.include_vars:
+ file: "config.json"
+ name: config
+ when: config_file.stat.exists
+
+ - name: Proxmox configuration
+ block:
+ - name: Set Proxmox environment
+ ansible.builtin.set_fact:
+ PROXMOX_HOST: "{{ lookup('env', 'PROXMOX_HOST') }}"
+ PROXMOX_USER: "{{ lookup('env', 'PROXMOX_USER') }}"
+ PROXMOX_PASSWORD: "{{ lookup('env', 'PROXMOX_PASSWORD') }}"
+ PROXMOX_TOKEN: "{{ lookup('env', 'PROXMOX_TOKEN') }}"
+ PROXMOX_SECRET: "{{ lookup('env', 'PROXMOX_SECRET') }}"
+ when:
+ - (config_file.stat.exists and config.proxmox is defined) or (not config_file.stat.exists)
+
+ - name: Get root ticket
+ block:
+ - name: Get Proxmox ticket
+ uri:
+ url: "https://{{ PROXMOX_HOST }}:8006/api2/json/access/ticket"
+ method: POST
+ body:
+ username: "{{ PROXMOX_USER }}"
+ password: "{{ PROXMOX_PASSWORD }}"
+ body_format: json
+ validate_certs: no
+ register: proxmox_login
+ when: (PROXMOX_PASSWORD | default('')) | trim != ''
diff --git a/base/roles/container/tasks/main.yml b/base/roles/container/tasks/main.yml
index 9e635be..357c855 100644
--- a/base/roles/container/tasks/main.yml
+++ b/base/roles/container/tasks/main.yml
@@ -1,16 +1,5 @@
-- name: Proxmox authorization
- block:
- - name: Get Proxmox ticket
- uri:
- url: "https://{{ PROXMOX_HOST }}:8006/api2/json/access/ticket"
- method: POST
- body:
- username: "{{ PROXMOX_USER }}"
- password: "{{ PROXMOX_PASSWORD }}"
- body_format: json
- validate_certs: no
- register: proxmox_login
- when: PROXMOX_PASSWORD is defined and PROXMOX_PASSWORD != ''
+- name: Environment
+ include_tasks: env.yml
- name: Container orchestration
block:
diff --git a/config/libraries/env.rb b/config/libraries/env.rb
index df1da61..26138c7 100644
--- a/config/libraries/env.rb
+++ b/config/libraries/env.rb
@@ -5,8 +5,9 @@
module Env
def self.creds(node, login_key = 'login', password_key = 'password')
- [ Logs.assignment(login_key, (login=ENV[login_key.upcase] || node[login_key.to_sym])),
- Logs.assignment(password_key, (password=ENV[password_key.upcase] || node[password_key.to_sym])) ]
+ user ||= Logs.assignment(login_key, (login=ENV[login_key.upcase] || node[login_key.to_sym]))
+ pass ||= Logs.assignment(password_key, (password=ENV[password_key.upcase] || node[password_key.to_sym]))
+ return user, pass
end
def self.get(node, key)
@@ -18,39 +19,39 @@ def self.get(node, key)
def self.get_variable(node, key)
JSON.parse(request(node, key).body)['data']
rescue => e
- Logs.debug(:warn, "failed get variable '#{key}'", :error, e.message, :endpoint, endpoint(node), :node_key, node[key], :env_key, ENV[key.to_s.upcase])
+ Logs.debug(:warn, "failed get variable '#{key}'",
+:error, e.message, :endpoint, endpoint(node), :node_key, node[key], :env_key, ENV[key.to_s.upcase])
end
def self.set_variable(node, key, val)
- request(node, key, { name: key, value: val.to_s }.to_json)
+ raise unless Logs.assignment(key, request(node, key, { name: key, value: val.to_s }.to_json, expect: true))
rescue => e
- Logs.debug(:warn, "failed set #{Logs.mask(val)} for variable '#{key}'", :error, e.message, :endpoint, endpoint(node), :node_key, node[key], :env_key, ENV[key.to_s.upcase])
+ Logs.debug(:error, "failed set #{Logs.mask(val)} for variable '#{key}'", [:error, e.message, :endpoint, endpoint(node), :node_key, node[key], :env_key, ENV[key.to_s.upcase] ])
end
class << self
alias_method :set, :set_variable
end
- private_class_method def self.or_default(var, default)
- var.to_s.presence ? var.to_s : default.to_s
+ def self.or_default(var, default)
+ var.to_s.presence || default.to_s
end
- private_class_method def self.endpoint(node, port=or_default(node.dig('git', 'port', 'http'), '8080'))
+ def self.endpoint(node, port = nil)
+ port ||= or_default(node.dig('git', 'port', 'http'), '8080')
or_default(node.dig('git', 'api', 'endpoint'),
-"http://#{or_default(node['host'].to_s.presence || ENV['HOST'].to_s.presence, '127.0.0.1')}:#{port}/api/#{or_default(node.dig('git', 'version'), 'v1')}")
+ "http://#{or_default(node['host'].to_s.presence || ENV['HOST'].to_s.presence, '127.0.0.1')}
+ :#{port}/api/#{or_default(node.dig('git', 'version'), 'v1')}")
end
- private_class_method def self.request(node, key, body = nil)
+ def self.request(node, key, body = nil, expect = false)
+ user, pass = creds(node)
uri = URI("#{endpoint(node)}/orgs/#{or_default(node.dig('git', 'org', 'main'), 'main')}/actions/variables/#{key}")
(body ? [Net::HTTP::Put, Net::HTTP::Post] : [Net::HTTP::Get]).each do |method|
- req = method.new(uri)
- req.basic_auth(*creds(node))
- req['Content-Type'] = 'application/json'
- req.body = body if body
- Logs.request(uri, response=(Net::HTTP.start(uri.host, uri.port) { |h| h.request(req) }))
- return response unless body && response.code.to_i == 404 or Logs.request!(uri, response)
+ Utils.request(uri, user: user, pass: pass, expect: expect, headers: { 'Content-Type' => 'application/json' }, method: method, body: body)
end
end
+
end
class Object
diff --git a/config/libraries/logs.rb b/config/libraries/logs.rb
index 3f1d55c..177a84a 100644
--- a/config/libraries/logs.rb
+++ b/config/libraries/logs.rb
@@ -29,7 +29,7 @@ def self.log(level, msg, masks = [])
def self.info(msg); log(:info, msg) end
def self.warn(msg); log(:warn, msg) end
def self.error(msg); log(:error, msg) end
- def self.request(uri, response); info("request #{uri}: #{response.code} #{response.message}") end
+ def self.request(uri, response); info("request #{uri}: #{response&.code} #{response&.message}"); return response end
def self.assignment(key, val); info("#{key}: #{mask(val)}"); return val end
def self.debug(level, msg, *pairs)
diff --git a/config/recipes/config.rb b/config/recipes/config.rb
index 69e1776..8aa2851 100644
--- a/config/recipes/config.rb
+++ b/config/recipes/config.rb
@@ -74,17 +74,16 @@
ruby_block 'config_git_environment' do
block do
- %w(proxmox login password email host).each do |parent_key|
- value = node[parent_key]
+ %w(proxmox login password email host).each do |parent|
+ value = node[parent]
next if value.nil? || value.to_s.strip.empty?
if value.is_a?(Hash)
- value.each do |subkey, subvalue|
- next if subvalue.nil? || subvalue.to_s.strip.empty?
- combined_key = "#{parent_key}_#{subkey}"
- Env.set_variable(Chef.run_context.node, combined_key, subvalue)
+ value.each do |child, child_value|
+ next if child_value.nil? || child_value.to_s.strip.empty?
+ Env.set_variable(node, "#{parent}_#{child}", child_value)
end
else
- Env.set_variable(Chef.run_context.node, parent_key, value)
+ Env.set_variable(Chef.node, parent, value)
end
end
end
diff --git a/config/recipes/repo.rb b/config/recipes/repo.rb
index 9d46986..4798c88 100644
--- a/config/recipes/repo.rb
+++ b/config/recipes/repo.rb
@@ -182,7 +182,7 @@
git submodule add #{module_url} #{path_module}
fi
git submodule update --init --recursive
- # bootstrap only
+ # pass variables in bootstrap
if [ "#{Env.get(node, 'host')}" = "127.0.0.1" ] && [ -f local/config.json ]; then
git add -f local/config.json
fi
diff --git a/local/Dockerfile b/local/Dockerfile
index ce5ea59..8d568ee 100644
--- a/local/Dockerfile
+++ b/local/Dockerfile
@@ -1,11 +1,7 @@
FROM debian:bookworm
ARG TARGETARCH=arm64
-ENV IP=127.0.0.1 \
- ID=254 \
- ANSIBLE_ROLES_PATH=/tmp/base \
- LC_ALL=C.UTF-8
-
+ENV IP=127.0.0.1 ID=254 ANSIBLE_ROLES_PATH=/tmp/config/base LC_ALL=C.UTF-8
STOPSIGNAL SIGRTMIN+3
RUN apt update -y && \
@@ -27,9 +23,9 @@ RUN ansible-galaxy collection install community.general --force
RUN mkdir -p /app/.ssh /share/.ssh && ssh-keygen -t ed25519 -f "/share/.ssh/${ID}" -N ''
-COPY ../base/roles /tmp/base
-RUN ansible localhost -m include_role -a name=base -e \
- "ip=${IP}" -e "id=${ID}" -e "KEYS_DIR=/share/.ssh" -e "configure_ssh=0" -e "arch=${TARGETARCH}" \
+COPY ../base/roles /tmp/config/base
+RUN ansible localhost -m include_role -a name=base \
+ -e "ip=${IP}" -e "id=${ID}" -e "KEYS_DIR=/share/.ssh" -e "configure_ssh=0" -e "arch=${TARGETARCH}" \
-e "private_key='$(cat /share/.ssh/${ID})\n'" -e "public_key='$(cat /share/.ssh/${ID}.pub)\n'"
RUN chown -R app:config /app
diff --git a/local/run.sh b/local/run.sh
index 93b49db..10f4146 100755
--- a/local/run.sh
+++ b/local/run.sh
@@ -30,17 +30,15 @@ esac
export DOCKER_DEFAULT_PLATFORM="${DOCKER_DEFAULT_PLATFORM:-linux/${TARGETARCH}}"
DOCKERFILE_PATH="${DEVELOP_DIR}/Dockerfile"
-[[ -f "${DOCKERFILE_PATH}" ]] || fail "dockerfile_missing:${DOCKERFILE_PATH}"
-DOCKERFILE_HASH=$(md5sum "${DOCKERFILE_PATH}" | awk '{print $1}')
+BASE=$(find "base" -type f -not -path "*/.git/*" -print0 | sort -z | xargs -0 md5sum | md5sum | awk '{print $1}')
+HASH=$(echo "$(md5sum "$DOCKERFILE_PATH" | awk '{print $1}')${BASE}" | md5sum | awk '{print $1}')
STORED_HASH_FILE="${DEVELOP_DIR}/.${DOCKER_IMAGE_NAME}.hash"
-STORED_HASH=$(cat "${STORED_HASH_FILE}" 2>/dev/null || true)
+STORED_HASH=$(cat "$STORED_HASH_FILE" 2>/dev/null || true)
-BUILD_NEEDED=false
-if [[ -z "$(docker images -q "${DOCKER_IMAGE_NAME}")" || "${STORED_HASH}" != "${DOCKERFILE_HASH}" ]]; then
- BUILD_NEEDED=true
+if [[ -z "$(docker images -q "${DOCKER_IMAGE_NAME}")" || "$STORED_HASH" != "$HASH" ]]; then
log "image" "build_required"
docker build --build-arg TARGETARCH="$TARGETARCH" -t "$DOCKER_IMAGE_NAME" -f "$DOCKERFILE_PATH" "$PROJECT_DIR" || fail "build_failed"
- echo "$DOCKERFILE_HASH" > "$STORED_HASH_FILE"
+ echo "$HASH" > "$STORED_HASH_FILE"
log "image" "build_complete"
fi
@@ -63,7 +61,7 @@ log "container" "started:${CONTAINER_ID}"
sleep "$DOCKER_WAIT"
command='sudo $(sudo -u config env) PWD=/tmp/config --preserve-env=ID \
- cinc-client -l info --local-mode --chef-license accept --config-option node_path=/tmp/nodes \
+ cinc-client --local-mode --config-option node_path=/tmp/nodes \
--config-option cookbook_path='"$COOKBOOK_PATH"' '"$CONFIG_FILE"' -o '"$RECIPE"''
docker exec "$CONTAINER_ID" bash -c "$command" || log "error" "exec_failed"
From b28fa46dcb8ddb4775584c5126260c3df1ebf400 Mon Sep 17 00:00:00 2001
From: Steven <106664555+stevius10@users.noreply.github.com>
Date: Fri, 15 Aug 2025 20:59:27 +0200
Subject: [PATCH 06/13] dev/v1.1-environment-variables (#58)
* use action variables
* mounts need to be evaluated independent of sharing
* return statements for log messages for better integration
* added: default.rb
* snapshot with base checksum and enhanced requests
* explicit info logging
* set back 127.0.0.1 for pattern matching
* updated with default usage example
* feature to dump variables on repository level
* adjust return behavior
* environment overview added
---
.gitea/workflows/action.yml | 2 +-
README.md | 21 +++---
base/roles/container/tasks/create.yml | 2 -
config/attributes/default.rb | 8 +--
config/libraries/common.rb | 70 +++++++++++---------
config/libraries/default.rb | 19 ++++++
config/libraries/env.rb | 89 +++++++++++++++-----------
config/libraries/logs.rb | 8 +--
config/libraries/utils.rb | 61 +++++++++++-------
config/recipes/config.rb | 36 ++++++-----
config/recipes/git.rb | 16 ++---
config/recipes/prepare.rb | 8 +--
config/recipes/repo.rb | 58 +++++++++--------
config/recipes/runner.rb | 17 +++--
config/templates/repo_config.erb | 2 +-
docs/environment.png | Bin 0 -> 152975 bytes
libs/assistant/attributes/default.rb | 4 +-
libs/bridge/attributes/default.rb | 4 +-
libs/broker/attributes/default.rb | 4 +-
libs/proxy/attributes/default.rb | 15 +++--
local/run.sh | 2 +-
21 files changed, 258 insertions(+), 188 deletions(-)
create mode 100644 config/libraries/default.rb
create mode 100644 docs/environment.png
diff --git a/.gitea/workflows/action.yml b/.gitea/workflows/action.yml
index 062e057..3a684ee 100644
--- a/.gitea/workflows/action.yml
+++ b/.gitea/workflows/action.yml
@@ -62,7 +62,7 @@ runs:
- name: Configure container
run: |
- tar -c repo -cz . | ssh -o StrictHostKeyChecking=no -i "/share/.ssh/${id}" "config@${ip}" 'sudo tar xz -C /tmp
+ tar -c repo -cz . | ssh -o StrictHostKeyChecking=no -i "/share/.ssh/${{ env.id }}" "config@${{ env.ip }}" 'sudo tar xz -C /tmp
sudo -E IP=${{ env.ip }} ID=${{ env.id }} HOST=${{ vars.HOST }} LOGIN=${{ vars.LOGIN }} PASSWORD=${{ vars.PASSWORD }} PWD="$(pwd)" \
cinc-client --local-mode $CONFIG_ARGS --config-option cookbook_path="/tmp" -o repo'
shell: bash
diff --git a/README.md b/README.md
index d2f8ecd..2b1e138 100644
--- a/README.md
+++ b/README.md
@@ -14,7 +14,7 @@
- [Self-contained Monorepository](#self-contained-monorepository)
- [Requirements](#requirements)
- [Getting Started](#getting-started)
- - [Development and Container Extension](#development-and-container-extension)
+ - [Development and Extension](#development-and-extension)
---
@@ -85,8 +85,8 @@ This system implements stateless infrastructure management on Proxmox VE, ensuri
### Getting Started
-- Set **Proxmox** and **global usage credentials** in [`local/.config.json`](local/.config.json) as `./local/config.json`
-- Ensure **container configuration** in [`config.env`](config.env) and **verify storage**
+- Set **Proxmox** and **global usage credentials** in [`local/.config.json`](local/.config.json) as [`./local/config.json`](https://github.com/stevius10/Proxmox-GitOps/wiki/Example-Configuration#file-localconfigjson)
+- Ensure **container configuration** in [`config.env`](config.env) and [**verify storage**](https://github.com/stevius10/Proxmox-GitOps/wiki/Example-Configuration#file-configenv)
- Run `./local/run.sh` for local Docker environment
- Accept the Pull Request at `localhost:8080/main/config` to deploy on Proxmox VE
@@ -94,11 +94,9 @@ This system implements stateless infrastructure management on Proxmox VE, ensuri
+
+
Q=4wC%tpTZt-u@zMMMk(EKp`L43D= zeUMMo7&m}_MEQx^$G~APYtH-Z<8cvb8V1+BUzpd{?fg(#_QI3OpG`SF?FZq=f!WMv zA>&oHrgQkkXR%PRA}@jC)HS{~?Yqoh&c3ZHEpaQvO>2J`kGg+FypNb<7-sN4JC2K8wDKJ%tx8^j519AN`$0ccIdgj@)~JSPfC(te z+iqhtf*0|ERDj!Ne1IM=fB@!HsPZ =J}`S+atOhWG%21!X#5y%SjD;NZZkiNCIxK$-lce k!hY5>+>L*ya7L8JNaygJ&8 zf774?01>tT%zxA9J>36Z2@mNn=3jS=kKq8Eho>hGDKroLzo;<)c^LndN2__L14wJg zC@4JKHOyTtEuGwKoZaaTl@uQe@SyU#ZU6wq^S=pALH!vL06<@|)zop Zk&zMNYGEa+{z~@W@P{Yyr#9~HP*HAfFE1}HFFr13S8Hw_5fKq? zFfTVRFXsaVr<=EvyD5y*$&LA6jr> -RbM|l-fBN( 7et< z*70GeA4HSj5f&1J{KMz}Q}sWR{tK$*X6Y*9?D&9mm-wHT^>6ThR{n3`KRk8+gD05x z|Hbn^s{RA|w-ci3mTt}t9)AZ>%gNSVf)~R5e-;04l bs;;&V17Z4CGzp%6bNJ7)f73&_|GxbHP= A7UIH0G`)g)d9kWzsoQi?8?8PfFAS$(b >vL=+XQ2Sr%tnC{I1qta8UQB$QppdPIRT*_hz1RXQIEe$(#BQ za7k&f8Je1g_-nKL;B9*;Y+t1e9A?Atz$o_HIUHgjeo!2pn2&J0+*lPZC3QLt^^0Zr z%9LxOTz>GywA6Iq54oyS-i3+NT4 ! }u&ShSNMyr55Bf;;wJTFD{i33qgc z;LAD+055M;Fr6hu23AR@M+Hlp(qL%pfuO5tl2i&FpiFOpS97zV-&J<47 zS*spTj#~* T1e>sNzFQG_ zg1JA$tV?`*w2tJ+hOk>QzEt3>*wlH}XPK83=Zq3`M-PHa7j#)i6zexSO-N<174&fP zBRv*^Vm$Wp^$d`Us=d6I!Gn^p-@DTVD|;#0@CSv_r#3mXmWj*`B*5CnYM5?*E|aMG zS7OHkv~h6*_9DqTK-ac;&ed1Zv5T<`w5%nhE*S<8gQ_>@9(aU(u=uz{T-*9S-IraK ze{WrysA?>TD;GU^{m4?J{@U3#xAU17i=PvffgWYm$70H|THGK?*Fj6@Kr9D94Kp^_ z*R;)3?RVU;a_pCnZjagck>~RO*|*}%FI2SeKlm4IL>sq}AcKcdA1K#cE)UA?K5x2d zVAQL|1PX>&+)j?)Mz{SlpCk!QE(1^cDLaOammBO`7kxf$ESHfjo(l^F)&$n%WfbuI z;xy=(l^m_?aX%ts(epMAygRR+Q&$XoO=0+KEPdjjA>X n8bYFueI>>j(T{l*LuGbKRsHZw}B(c%2XGU#%Uic z)@5gLLh`*ZY`rS9YYS%o*jS@$!MiqbBcWIV2R65@62q(%zB<@=U0&u -E#SS4-R74SE8LhaiSr{@PEIjDea{($HJ; wo$(r+{pRL2R zvsOiokTH6%gSDz7i@*_Y-IFnwU&ZE^4!4)c_f+>7*hEO)-@kq=sG?8JK2hX&>!T|- zd^yMw(J*G(mHvk+UA~MiI+FJ$i#GvnV;`1u^V4gM(0m}~1j2JW%?Ya8rTj@mC(6&! zhV02XI=5jmE`(9pK`^@BptJZ;(;^_+ggJ<(IuC;S{p2V49WR` OybK2%W@ z3f*F_;Pi*_fq94ISuPK*jS1{kI p=w zwFKPX5%=&-LP*02sGg)62Y4U1zVqP@OY6oQqwC(={3Lat)y7+)trKb&jjhR@`?P(k ztE~|2`s1=ct%@aC+^sMj5Ib%6!vW<+!)ss%0r>DX=I(43JRBo@?KBvd?Z9}5z#x>1 zj^#pMFaBV$Qf%J4<2fgqZTOrtwI-~))3`Gru7FoioycNy=~ G$frnrTV#E1@K@s+#X#&02S@Yf$JOw!@HPM6KTXpNJ@MG9+FU(1jl!Ib zjDBI2X-RBRZS AdVeZPR3U$BS2P @V;%ZTC|M`zP;l=PKS3r*&0h^RX3ZFJXJt{7mp>uu-SpWo%)0gkW#{3AHg8rI8bh z{2CpC_KPppG_}S2J7- a|nHh}8FNF%JS}xw!g+H &RrND(xW1P!v2efdsrsa*8AGN?h;xaA_qI!K!N2lm#AINq z@unCyrP>4Tw)R@KXm<)V=}P}}*&IW5lFj}Em2@DB7Urt7)Zy<*PZ?Lgd!PrhT)1ou zTru`e$SpV--bt&@2tO|DG_Rk{HD5{qO`6hzp+qzn9anr~QpXf6X>n}9NtC2Byo%iB z$fG#@Dg&ei&Yp&To(Yl}1Rmg^z&KutBN7ve<}f36T|yMmcS4%+bw>H6GN%v@b0zUT zXgIX%a?^7jdc^DMUhxo=JZvZ1tH-Xa;@!dv+YC+eud>VK)im9)E{JN_dhu4=?ANfe zlc 4mEHi%-XxGoU>T*FvF>UKMT0gFCr_M+=1D)Lr|PG$WtAB7YgiDyK~L5F~tD z6`!#C;HqInE#A{e!8x9{ Is1DW5Y$K} zPT63UUdw2iq4%L-5`)~$XK}YMt8EVYWWs#owSfH0ab*?rCJh$V6GPA8W&2>Ge6KZ$ z`~s?piGg3%%%Mdzv%3RJKXN%3`ac~P95}3~QR!e-;|=-;dj7#7q^1S$@@yBY*6r{+ zxH 7ksxRie zQr~kmR `X(brd?0DA7nj@+SdfPziZ)irI`G-ey+7H zo$HVI0P5i# 9m{-(D+w^0uCw~!;k%T!~|8& zyv$|1zj*igp-_({B>eUo522N{BWzpEpaIsNSoGT8($6=vw@!6#j($(5FhKi5f4i7Ti zu#9#EV_=+exo4SZ8Ulm|sRPw!GMzi9zO4n^RCi<3Ty`bBqelO{IbARq`mn_HxTKTu zn=Y6bKYLA`K)-adNyLy%ao3o3a~ybo5I*}knrpwc)E)a>ild{vZ9Y$DJq{t%R#Hv8 zA0x|TT|Hp>Ju^_)B@0SVd}0@?nsXQ)b8VCSEBs7=N>sMBW{D+e^KhZ6iW7a{%FHxB zjAF!*a!6sVxE(=ZU?ZJt^Njfd7nC^b0G>|=aJ5E_$TguXl>)B!K&ukn8xiJHe7|6{ z5Q3z5$El5$k4MlbRd{1AwvC){gY~>>1#O*R_Vj#D^z3pOL!b8?K6A*3K5=9FOkyw= zw|S}iOJD6Zz{I7pK`k3y#x8qd8OJgbjlmop<0b6OLqr7)PRPBDwcCedG=;*Dr3UxZ z5OiHKVO&*{Sh&H1ap-aFE1SQ}YVoN&m(#x-Vr*W1zn0d`%!%Q$A2B->cz0kN&@zC{ zaelE|5P$tXvFxKus||7UH2Zn9#$v2y2s5+kGLECX@a52JAN#D%ia{W_Hj)xfEO`r_ zN) - SdnPMvQ$v(3I2itUt$I&vjWCcG;dq( ztQX*PE60e76w|B4BlsBDgqA6=61horSQDe 8&`lUsh!#IO9z$T7RZ(!_zmge)jCwC(L{S$uDBBO@t|9?-mxM`if9<)G3nU`*_@Ew|w$`}yK0RKKNKry0iP z^+6S}?@_b0r(*B^uO;hT4~$FSwVRyD)&_T)Q-==@Q?qfGIYG3wJX{zB* +~7* zD{n;C<*LvJB;b*2PX;HE%VU+vy)7)JRtuZ8*|GuL0@F{X`RL+g(Ig1dWYMzRXS$we z3-5jI--%!*o`EV&9gf*NA(4c?m-)1ew&xBOx$NWph)s0XxEA1hdF0i3@O#+X&OgA- z?$o6jGb#5=KQyeAdygjF%ZE9c;nc?%v7QC_Rl68kK3U4~`) zQs+&S5MST%XBzMbH)U2{WWMRq0T6*=bXyDjQ>-e M z9Cxl!?u-4ZPm1rI6#s3|bhVw?E7Wm9$k0d?vZS-@v0&)`7TS$P8Tw!f{G|K^{2en2 z$;%eKrVu;l;DX@~ci!JQA0KayrX-bBbu6o{fe#;6(_hfNqO|b4-)n0>(0QL?_>~4i zGcudPyG!{NXm!%7o7Eg?<+oT7onF&2MAle5_#zm$C~>l3aqzn{oM0N8D%c9wNFHRiO_k)V~j{Q z-z!Tl;~%BwpG5;-Q)N12J-uvTQs->e0s+8Zo>CE@MA`OmWkpT1sDtF9Bp>_`KFO;~ zmT)b-OM=wHE^yGyi(Tl7N5N^${>Bky2oJmNt^m*vH4F+6@{JYvj?7jU@SIOW`92ue z?RB-TM%LLLSqx2ue8HXP-}Q|e2?UjJyKLQ&pzNPdElhg4c)Y9m#^NSR-WK%u98_rU z!N$Ljw8=;{k7CHj=`<_{w%4N=Exgx<$|`8RqdQOCHzYT52w$g|s#t2?X(ypU;C5hF zBMEgYnNo>ft|Mf5k>m`OM%&>8&WI}`&HNjeBUwRK4FPF <4fw}&(0Q%!ICNZXuf|`dPiI)?>}|07bnN8# z-b$+tnC>p7ST8X21|`)N#7it!O->J9p6K;CHvas6<(tcgx0}mR4wshL93Q3|c#a<} zv THTG6<=eDGdk*hAj)PtBlNyB$R9?v0T5iI3 uPB&$|b8|BRSWCgqF?ZLej1L z*_#P(U4Aj9Nnt+9$83`dFP-9!%c3}PmG;XCCVBuf!?*{ag2QEw^A9p>(VR|I8nP_W z)=$%3eo++J)F{`&2gF^#($RCrG$Qi&Wsg)JzmrisiGpoV=N071br^U(d_H`3Osg%X z+7D|-dmg6APPialjC7iGN^w8WI!_<5$R s zk;v_*Q)BG=t09NDsjYjX o{nc-&HAzPoBeM z`gE!{E7sn0wcnyTAsUBtkDpr^41LAy=NA^XKri7vrEQ&YJOL4!*2T48HW0L7EFhe+ zi})y{%7X1W(`_j{5>7{`xJ0s-Ytg8gQnLySj`2g#=Kjh+mA+I6Qo2h<+u#+$dhwim z)nF!QKg-ad5?bPPS__Kxe3GlO4Ik$OqDquEHq6pDNr+B>s(Wsua)JS8G@h8vGLkk^ zj0+%HdK$r)sxeBS*4gWh<}R~f_nw%^v9+;{s*dZg#s^FjmlfIiDRNhd6F`-AwBE?x z?xa{ydk#s4eD9)lj;YhSqiS38ZVcZ9@}e7~vt=Jc{I<*dh-sz7p2(>HvLk3@Kg#Gs zVZqUpQDB)lJqeA%PrJ${6?VWX3N9Apf|$6Z!*WQ8B!1y^g!U7Mq =m3lWhpxYg%0{6GjE-A^g{CN2;;7=_CW((Ch^^qCf@78I6k1kgwD;6iYr5F53_1T zt@!lx3pTbo_7V<*-xQ7q;^wd}p7@qvf}rF6a!_)F7+9vkh;`nNkwVLKN *clNQbFAFp;c6m4hiw< zIwQl~Ps!I#d)Z?qzdI(?_F~|X8%#X-G!k*&hJ!Lur>|~8Vsbylh*$i)HgQDRR)=6A zsOzR`G`=yv@g;LUd2!oZfF|k0HE(Ye=h8m)MQ5%b+%vx{P2WlOE>>cKx#+DifPSMN zu4l{RKhl~AbK5n~z~!Sqouw@U-z9-XvE%=|Ht;s(n9&wV+43Q3y^J}Ba14KWD}W=e z;)lF?8~=%62xrissLY>3c+mlo|3(nUo0*Uy6j6u<(#2yZ?iqLaSSrHL<7B@FpVy Y`J Q^X#p`Zzs^imXAA8z#>|6R5&I zMpE)@<&Fz3t#QO3_J%uXnhA~9Qkn^`5Lhmo%WBU=CwhMxH%VD4ZqcE-=cwA(NlE6Q zMAnI@pAEe>bS?XA-1#R}Vs@vQfMG@CRLUtZpo`)(W)OeLZ`Z~soWcn0B_p-U@v8qV z8fi}h?d7fJUIR3`ewkX$+yrW+jTIu_$^l#?_ N`yzoj#P_?j)fEr3X nSb9w5_OCe!Xa6X_hi zKVEwWU3W$Xeh$D3{hSyTom*Qs!aVzBB5scLulY0=nxgj=hC{)F&b6_sG*0zzuc#CD z-*h0idJFWZgvuZx_gtf|UGQU Rn-6op&c0&4;={Uz6T=pA9AA#P1=XQ9tyq z)4dwN-cuB3HL}~L+ZOvtEr~LM`w5xoq0Kp&LMq>0QzhU ZvsigU#!U|w+w_oab zlBs=_h@x4IcWf0Rhpj+9NIF-!k%1%vA-)>CQ;NJt;(oR?RKz=!cec7zynA(>ORSig z=Fu6-VZR13uFs4u#tr&!(+qN|_|oZC>$JOOe%~w#OWlyD%o@?+{gh7_){gz6$27b) zZ~i74Cqed-Qg~h gjGnOWKZ-;}~<=WZe zR1G``>AVr41s76T*dq~g>6+oX7@HlElN`6Za*}L~VK6oIoYN$3!&0RhBJy{7<@zR{ zl~0ntxKB5Jk6>VU 7+46-G+LAFINv~dGnZL*qD>(CflJ{ShpjL8G{W$4Gq|us*s^# zo)?wOTXN#QVl@f`Aw_!nPdaYfE)oZgFCF)iyzEhSc>e9TyT%6ic@=IuH>go=uim(R z-T^`4OS8oUA>vgdGf;n zA@HocH(AMjuxb8;GsXB0pvCxKKXu>9a*OM Ma(VY|b z-#)8Gc7^p4{WwnW5AE8;U*IKFgKHk X|;GV*h#h!*F$7+mrw!AiMT$W}iIdo0g) zypR_^$)gV!ar|&C$MUc 3O;cHn zi|WnipHG=>he}=_)ykxu`+i(+jHuinzV=Wp&hhTA+AmU|OSV$oe{+i6(KBaGdiyFP z_AEZMu>bAwlbhIWhBQNd)G6kZ03$sC;9W$vr{^e@;+{Ru;zAl#63;H~!4K-)H1L9R z_)<7Q9I4*+BdB*XhF9pGcGmurfn7PS?F5F~b)2n^FY!UsozOXfXna&&pxg4;%b;ef zQO?FQp4YN0;jGdAg4t6z*lfI0X~7KcQ_>R7)xwPJsS}V>(ZE9OtGopS)yBMOcIJxS zHRKC|l_5*dGEXAItNC%48*C0|gCqLYK7lX%!A?3qNh1^;??jaPMGkgCmQW_2<7Y8R zB~h9{Nsk^%NG!h5=wy>wTiRFv-{ W&`H$B|SxgVp-a2z=BNHccwKGvUg zY|E<`h1*P{2fdt%gh4|K3N(Y+z)*5vL4t3y`X}h4&JOG;Dj$pLLD+yb^!5FN>pADR z)})UQ&m@xX@zm9lw<%@#Parj#EDeUpZHeTOky#|)x|>p&bP$BhN^Sd1 FSDsQefY8lu Q6e% zMlAV*;7b}aj9|Z6*X !7qjaQ=?_C#~@ifaymo>fOITk)nr*A@T4OT;1fZPLET(@L{ zq;CRe_z}B_SYj&Xf^NKbgb`!!HHgpfDy__*gL}xQ* hi3}EM+K<2F0P4h)5Ddu!{VbU2AiHLuEQn4PMFjjq62t5h3N8s1-i2N- ziyLMi#G_G4mBXDPJQm6A*E+RB@mKv#QyX38SypccqD6(@ns!(|?(&=HdGP3(N*R{Y zYZxI(Rjm!KNk^%AHGB{ssTf4}Q^sW|==C >4ujbPpOZ?cz&;vwya+Xp%fuW4w$>``PF!O| zZ#FC#4LVlTYz%~3K6sh#lyi5V1ZaFwCfpbgzk&8eTwtxM-hLH!dk(@iND1>*Xq)Qx zw8`Aw{y=v-0nCoa6D6mH2PHDag1G6VOKb=wrV6vEbm03BTQO!UCNQ_;UdGsyP ZWK8>8elLCoHDh1YohcDs1%~XJPkj(f$)EPii@qv! zM-aEQXIa>=-us-L&**=0R!U350q@5JM8$TMa^br=;80+U{XWx}w;YQHpPji0YOT+v z#`(<4ezZtioAERAiLn{;?nc)5iFq7tHj)YZ_fSYv=1^EhIS|zyy^4RIY|q~XlNh+c z7(49Tc!~c+#LAFFKH4C)N|ESBWK<0ib;Pp#@24uQxS>NcZw2mX?BjF?12vp;m2h zLLU+ qQ-B7 9)1zXE^Y`Xb#m;-=ZF7pg!o!@a730MfS4`Stbq%P}tT1Ckj9sA2 z`)|Vv1lREgQptL|A*w$6vpev|tq=(pp9&~*{YR#4(%xs*S@fsmm3~MBR7sngL)6b8 zOO IXQ6snp24f2k>8n}PV!3`NJdEx=(h!u=-L3E$Y$?u?o20s!C6^SbL?XR z(KtF(yPChZ{^4h7(x+$Bg)^`4y1}9(rFb^ugzL{dG*Q8m+@sHm&78L~I@{q)uR84q z_8g6NM18val~y}?A$p0r#!CcQI>F2U8YkHA4z-J~vq3Et@2(dx! %EIvqf+m8+j}X~{H_zpUR6ibkH8 z!+gVkv=}XaVz6{3&iPe3TP5ne%!Kd7LO+macMYOT`%+ecp{++SYQM9NCwHy5F~Uxq zGxLIYeeWq|I!s>T>a&JVj3SV7RF9J&2R4M0y7Tp9DCzatybWd=_pN5QaJ!xkze~$y zQ9u;)vYut6ci-8g;tp7p%3fbt*lW__o#|poWc0UYOGfT#cH=9=9`1!46fxh!qf8rT zn{F>Kh#$wDmKxlazQDt4ep8uB@TQCf!y7LGIwthxLochc5<^6{;wXT_W8MAWySOi7 zyT#CGq?Zqe^G&Yf+vVHC;}k(%F-y n*WR`BJ0*F{Ukmnh0N5#a?B9Gh?x@NR`e<+IPr1phq4z245iyP?!1g; za5Ch80EsqO(-yL&$=*I)4}mlgZly)cF7r vv#n@;~YjsQxtJ&U(oN`d-v-pG*LUOcb#Sfrd_iQOgJhktvH& z_ln62%knezIq?%L<2_c6alRtT?Dak@Qtm77w$QSAJxewE8iq9Ow&dKA=c|`9v9KWa z79fkk$w%UcW$5hDplknm9>h#?Aa<|Y_JB81vV+#NJD8PrRI7^MbE#}q8{&+Ng?`a% z(Mc3es(i>^ejWPm%tcQ>Rl04aZHO2Iqfq>#$H0eqlbik7d``$kXE=q;_9NyRj4!2+ zOkh^VpRSADb0*iswq^Y? aP_RGMm8n^^Fg9zej`*78*%i#=Kg)cJZ%r5eV4TYUE~b(FE(F+1Ja3` zZ5r!sMfx*; DAsL|Mt>b zCvd%2LS&%!fO4(EhH6@t+v1c?l4|Yqra`t=QUf()TW;}r+{pSC>+t&B5Xm$3)tpXB z5S!4|b`Btcioh0NfCFz@;A3QR?Lw_Te)E`vAK9=VwbH!-Wsb@ZEE1FK`ZQXc*!C#v zB}S}`lw-W-5XSqKM}6<5Xyo?V5(YN>5Erx&!=MfplGzsoDkJ(XMg6Fk#gG}&M<<#- z)Re|oZ=5T0XA~!7FL8yo9?w1kh0piIpWrrzO2o5lWe(U6Cl6Lp1dOy&`_miLH_U|2 z(n`kXjwGa|q9%GD`$v_*=woN>uBPDCzb{V=7%q(4bmC4aI!s(Tyx~AuiO--IQidKL zC)&7K)NWX2k!fY!`uh=siL4CN3!3}qPleJIAu*7Rlp28mw^XLl7dPy>k^OMtob7m` z(9AC)3xxzm^{!}iAy3l=8=r)JZaqXCvuBh;=P3cWc@g3sWBOK%6Jf@G!!ivC3-4Ht zR$PSRAMZ^KMgzK0NPL}#S(T60AT1aHlZw*-coOn_J=gf5@*^ S)GeHLS*S#8Q$h>|5jMcDR_!M94{*0>q=Ue_wR?3Lr z{u3X#Fx_%f;1}DdL19+qEEc~jCp@v>J83`m5Sq)5QD<)r7LJXNZoZ3uke;=;hv9rL zF3jk9K~gc7Sv15cZHmIr+xuNVJ{jDo-rWj0aP`hhcELj++jxPMokw-*^(6$d OYl-p>I75DKzu?!e*qG&ZQ&SMvNTnYc6xW3aCj1d|4cGb`%Dmg z)3@+a!^VWmRw^lJId_@ID~yM+iI>g%WmDvr>SgzRd^x|3CY#`*N~2FGg*_Ak`Q{X- zN(6$s{6;3*vCErUD$>@$(QHoDdB|HIMzkHls|K>Yc_;o>B0#h|X+qtv;dS?kOHb8S z2uL*SbT=iOSaM5&wz$b=D} 0W?J&!xJ?^k!V<%G8_J??=(4Xkag4m5uroz9 zuA@#LR9d+Vn=%LWd= P61YQnNFG_+FTH(7dVV{5CzO+ThK?lO|Xsg)#UlqyG?(M=uFVMai!^ZG2j1BJ!Mt zEZcA9YuHA;?87nCnZ?UJl>iERR3qLbLGzgqm&`Yk(pCV8HMXZA-i%88%%je~;mqZ| zvsXZvi?XQMoM|vSp`_p~IYnGd0NfU>ONAZ0rM27n5G$64*6;(OJ7-h|2Mm_R7DJMW zAOcQ^dWa~p>}0%`l4BgF$pjTfb2B8 }nUUX7cF7X`iW{**dW6Ld zZPZ1oCo?dCD@@gs4Hzv&fZMI?o< (0|OUA|AuFem7-nC=a51! z@YuO}LxoMRkWX{|1Rb<@BGAeo2$p3qV!!bq%?gB4Ufc3?E=I<|Su0@pasg44gJGmQ z`Df|5Gh6sL#t`-Nbwq)Ce?LCMLj?weh&_&5v`D)EN66zd8hu0 )>*abo~cx(0` z5mAT5yN7>m5a(n+WTP6|`PDLVE3P-0ozwck{_<|}22abct&_ZiTqumXA*A(;bgJhl zxw|#4+hFt@ML0Ok<}1KK(vOlZK1Raf{eJx{D)GH 8+0? z322%`TjwkapR!X=M1i!!&!mZ;E8QYymOPc)z;BC_0mwy63B28?Cur>f5zAfLep*N5 z`(^55pE#;eAt2-w?UzNU$EvgHS>IEo|C)#FD~DJ?>Er=_W0;i%^15ZG__<&?xkT7K z!!*yr*s~r&qNnJor=CsY9{V(T?{!_4=JpA{7eY_+ VRp$+N(`}RU zdwoJ<=+zYIyJqtE*%UeY9OP?;*)2G}synOm^aeWz?bZ8H%Bp0qEc)3mFz>Sl 9=ZRT60`xQbu%Xmzm)F+0W zcGnEn4vWf+$i>mPkG^4tH9>N8-^_NpWFV3u*AN{6A6U_)t-+Pn#=~~BJ1SEqcd(9H z{Py7=W7U94PcaunTK$>e>j#ko4pnQ%x5O#5?D^kHA|T$UCdRT 6mD)&1lsa~i8`U#g?3{7M;2F%()A`(F79*6o$Of-wFQw%4q`ibIbAbUhW!tA* zMDdB8yCa_JsnW(d>dnJJ1@UYC_UC7;%G9c-@*AuH)T$>3{rWF+X9`cYx0ejAlLHlZ zH9qm@Y$pyp3}4OzoJ=yd_|p3%nI(2-8o+L}ZLG|P_5bj6)^SbtVcQ3}1%Uw~F?u3O zNOyzYs3 L-E~P7t)?AMS1TyVTGl!fAgcNT$JDek zqeN=ptM9$76Q4m$9bYjLDqgZoNYb)YBT_Yy&JLhT>%_NPwE%|tfAQs6EU0^XMb~C? zfw8(6nX1ozf_^Nj0QLGzKxgr$LYWVGvVNjyoFGYgCos~`5BGtjSpXr2pH-$O?&tE8 z1Cl04X>XnAe8%y5xnjzo`_g0BuASlW*D6}k4u8Fd20_{`rhTY!rkiG=sa#<6Ne@uP zPnJbcbqFSb|E=az2q{^072y=5KMc$b=OC}Edi3!2UxEgPZwu^5=;sf_Ul%2KDKd#7 zt*B`;G1TC6k@bmKES#eL=GXC?EFcgdS93zZPr(ru!J@tYxqgjH4gKBMF@(Rh>(p^T zz;Yjmf)jD1^UP3ls1}FudwyjJO7P4M{&Uc^Gd9hwFr;@SSi-yAP0_~VK}`z)iMJ(o zkjN_<6z&^3-p1|X)jNI#LG{JEoNBg(qxQ?75$u}@C*M%NiwUVfS4Av)8?2eD$gj)v zdA|v|L$&&YYfV}N6?;3oJupm6{f}?Wd>(ABRad7g4GI(|>E4+!kk%g%IPwDl#An&Ho1{F=9r@zRrYgq5M!0D+gW539E88nG{csx3Ku0wn@f z&61N ?H0$fe?T9ZYR;m7z+NFRO@w!%PzaoVx5^~&)`jy7z%zj`u zlufSvNk5H!|7$w0LHrH2+0JVEBa2Qrfb!kHAB0J-v_DdXpMXIbxD4aox(F(!hFy zz_-o1X-ZC^S >U0aZ}@@W$>1v{h6WWv$A9{L zJ_eZi{j%g7fwvoueD)k lXhkLL=348x>w$dmFaOPN-1-kB$;%}NpISpS zU0GZb?S(=58v-1@?|?Ax5pdkJH?P;k`b$?D9R{x8=Z|GECHnb|*G2KHlm99Y{@4|m z3=~l}BKqy1G`r~4SN{ia<@l}lpQrRPn`9!TRZ6-pyMm}+chP2ls^?3}IQ<2 *NPJ`~R%9rPFxas?9=kiegP`LBBSwlp3YNy{SjRlie*bmy$vw6}PjlL(s+ zaiTU{US@|9;^ycVoLXgeJ@taoohRKK-CL>Tb`oJ!U~~eXgq;sA3y`B2n+fUrk(1+n zX`eYgw0$#LvNNyov_BwgGryX=N;QmJ)Bcv9P0xxx ~J&>ehz0Bd^WHdO4lJW8<>K&O4VPpJJX>mtfo>FhZ61bMJ6}L zzd(Nco$x3{<*6BKN6vTn+OuSzj=|OnboDRtfTl+;UJEUmNn|FzU{FnLV@nEJ+sRuN ztMqb`c$M3~TT!@grWuyo_{6`)=$elprIVcbjVBw!r<#OhEw0-V+mYwO=ECpjsYc-v z?L@GfzV%|$=hzoK-! !AV~d zy2*Gj&aHXzC*L;+sDQH+PNTEQ=4UaVNG$9m;<`;4#B8-cko+L|pNd>r^yA^!3qmJ- z {S)c!(Jj4LC=wo8l(iHQcKz+ zCM_4N7@WWj?_!vCBA4WRZ^P*G)%iCdZ#InKf#1K8#SKNwv8yQA>U|{S-1{;8A?Ev( zL;;oPYlkNh&`qMW@Ql%1;_6{~F{I%eT*+F;usy{0^?x%pEref9-i5^i*z<|O_ClKv z<9?P&XnBXgL<}x>mRr23yf#q(T=c5O)mE!@)gNyWki|0)hPm{=N z6WlHP-!k3`Bp{;I{hx?qhR9<^F{kAHZ+jdjAHwAP7-#{yv=3w+>kK!1_%uf|J#{J? zu1E$4Scw<><#p$*feqF7tkzv@I7*Av#(pu`{Z-(qJRp{>+#_KpsXU0NMOXkFil8Px z1czgGcpu36IAut=k(l(xxM{cf-C+*ft}N)fSN>nf(z1}Sb%Fw4D@$9qC?@D|FB@N6 z{~6<-1~d1x7vbM7zD3>*Wv5V)gO~Y5Z;%{tBRLu3S(iqT0Y%ySdoSzu1*^s6Ds$Zi z&Ck1>RThwB3#ljH5l|hM#K-UwH}B8%n$P}Wfm4Ue9)AWpBT|H6p-w0{(n!8qOLV%j z&iGs0gZSUnTwvMygI84VZS`rS6;v7Dl;jq0y#<)C3yYbKh?G(xbXsZ)+__}B``?~_ z=Iy0R5(txP^;>)0oSG(RVorx0?}ePi7pek^tgjwo_6h^p?Z$Z>&pz%_Rr8a6&2EZp zRH9GJH?>1dWaPbJbKj6razvlGZgJ(Vux V2EqnZc*Lk@cI<*E<6{e4dD-DWbm?JyliN(cetv>G;O_u|={EBaX zxnO)cy96L>K*)@Wx6ONDvz+Mj>f1hFFMe(NaKT9Jdm+E|V8x{_H1#`O44c8#)o)wcGL40Y}||0Pj@G-+A==6-C_f_A21^WV1w@8hWO5jH)A#Ig0h zFZG8lm@L*~CVc^EqOxa43r&F0IJ@Nln$wZyPZXil|21hMiUhczKUo)`^Yps{`+CP! zmW-!!{pq1M{EkAF!F|Q7x4hdtEp+69+%o+bC)Rs@qNo|judE`#Ade~T5 VX8IHM|I7f+N}ZOI$ (IsdHd~?njv2Ch37s;O}AG>E+Lcpf?pd;LV7v|bj#9JP(v4T z*TQ?^@P?7J50j5>`Po&)s%=?!&J)-)uMuSI%D-aX^Zd&(|EyZ=C^R))N_1SkkoQa6 zhkCwXR^;gzo7=@u)#$ZC>mWI^HAqJHPd_~NxAJvS^v#E4;)prn+@=LCKT3X)076T( z4Y35bFIs@|IWE2|5d;G{oqP{L=tF+ic#530GZON$w!g;@z@T(97`1^CX@HkW^p-m2 z{~kj*fnlPnq ~ndV4BLR5*Q92*dGb=h+h_ zWXk~XuolqG< _o! za=eti40SlHR+zROC+&f)1AnV^7Kpo^Bae}_Y~s>92G&$z`k7}Pm$cOM_{XW1v$j1x zGVB0)nYmpD*W|D7PH{#IfV9gmJ*VqNgs4x~w=taQzKkG0Ut~S9V&PAwFse0(A7^?R z<|ZOO?H-r0c*{-CGaw6BI_J>sFOZO{?|Y`0hUtvD7ao=3_Yv7djnyav^}2j1W27+U z0*>u?Nuge=e6FhDLUXb;ZGAfR{}L1uPF!f)*SRsMr~t!}6comSGBzkVAv!`Unhzly z@`v!%32`Ze-Z#tB&ccttod16Y|0TpQB?lsi_9h g+6C!t4+AE!L6owJ=R-zt^HEnt~GFoC@r`UgEn zN~YIMisM{aED7xH{0KQm1t#B0_y0-XH?I*>9|bn`pZnQ(m8BK-6&e}%|5yMNa!iL$ zcLLr=scECPGW|P%oU1*K-5H;xvDb5eUbJR`!(n|e;~6eVMUEqqcyyYm$!s(zaa26& zyKaNs^Dg=x`I09tzTs=a3^-1U&PrlZEV3xnWKT=N6=QBVo3ADYm-+CZ*TX>nYqouq z?3SS;F(>kTcI8p5%td{8M=!A&?$7${xWMe;DYrVH4Yo2xJ
oCf$0^nf24|nXWXd~t35f@o>IU;a3v$DNH z_1`ldwjAO2YKVDmd`vz24aG@;uL!DZ>JK)oyB$AkMZS|UVd_wVmv5vvsW=5lmGVCp zns3i<(;E`E`K @{#OZ!jXR=_HX_Mm2CzH#03ltn-^Oy4Cw&N0$ z+O09Ge-xR1=YK}PkD7Br*@k;5X%87nCb=EYL-23kr%K&YH|fcuBO@TM?y=;zL*NhQ zDp{0-fbFCCay{>BjoGk+x&?OInr`!);+BR7y*B$21BVVr74{CZ`N~@Y%VzyM0mJ0i zNWLeux?|Az%md@q?&!*HMWb5=%gaNZYwh^Y_N623!PT2msq`2t3!I_E@anXXBRuPV zZ5H{BE#{H19ePI*Fl?qvWMuZ%T%X9hKDjQFr)BEb^6Yz%5cDJT;u@$*L5hpGd6ymg zTVx#h+TOX%_MdIUcW2=c1Cs#=L(!s=x0=es0QdZ&l_F;8=Ba{*gQtPR_@m#*GB+T~ zUjD5CR2?{x=t@ZRRTlEi6=|BDq*az#TI|~ #E)hq8Is9g`QL^Sf&4^Vt1<@m?CZJq@8L%&71JF0&hs0{438BG^&uz% z&A1Tqw+``47+eCcPJm0KiC8IJ^|&vD`L^Ei4xWB@TtA8>V=Qe0LsxTpJHZPMR2QOG zgJl@;MV~$94GM%v|H?Yj`Y{Kg&nM^0C3kXImQ%q>P3w8Bbf-eB9E%s?*`KV0ov~mF zSA}HqSXR~Wdlc8b&CUEc5YJ=TO%2-a+VQ}0IzbDtvUItC#CiTtZPYJikIT{9j5B&3 z2ac%Wy1CM87xs5V(ly$$`!&7xW^8p4wtu4pBm`6Va0zjUnm6YS?m+-nYKuSON={NO zgWEF4^)kOh$$&U8ww-WJ6!sGrwYzV<(be|I*te#^A(s~POsk>L_3>VeWKgu&T)Qjw z&yH!TtiMxnM&CY_q3?m)%8n6q6;JOmLr{A~TkBc64e&G! 5gIN?vB3R;3DO9i t)b=%2E62HxJadpraAY*XsV`0UTp^!Q%r zNZee-!B5Oz@iyQLyl=+BBJs4*^jC)F#@Ms5V1ik@7z~^ki4nekLP)`~{yoE1`pVBY zWIjNL)p@K+c%-Xy$+a}8#JKXLM!8kUbLc4c>|v*1Zx;13^fbDBlfh<=&oAj1-J3Oc zo_q@z)3axp>;5lu3TO6M0fJ=?DX^Y5@|n)oP(&1l*KRh;g0gnWoLd}g = zKg;DqyhzDX4AU9>=qiGwTK!;HsQI-;$3yQ>S@%10=wT=je%aPk#yi9wE zXr6d56^Z7^1o+FLKn2*(597@@t<39{V{A&>IsgYbkkKU%vU@W$&ZC9ozxQ^o-)g;W zImp2Dny4Is!i|{F(rtvVu;O>OiRFu9tPnN5H!T+kMr1lEAGyEuotoh?{iH>hJm%t& zczlN{P_o@x^4MZ1*&ZfI(8=O`NK@K$p=-1%lBAX%4#=fT1Zpn*6q{jBiIr!zxv3vg z(|i|uJ$0_OVCLjK+-6S(%W~GQipp)4A)TAmAvhZ>QJ=V=<3zb SN{yY+ZmFgeZd`}ubE}ED){?uu&z|W<~=**`*tjN%QwMEUGMJAT9-)rY7 z_tO4Td|3*iRIH%F-fv~>PVgCB)2{F$0F&u{z7eK(_-ISt%dLJRHFD`nk)MZTF8b(e zm|zT%f)1Yk$tX7_W0&onpXs}yIWZ$VM__zJw%!hc$dkY7Yyv{&O*MuiP#CtJz-#jN z?Vikc5oR(;&(|%vWf^GQOtCm;KBm=y24q x7XP`%Ltq*IaHT~M2|#7uf< zadPWB*{pwkWi`fmF!XZeeysbz^e8S%GEPVM>ggYDNh)^mqZXj9KuN`ob>=&k;3S=a zGFdCKR}Z`n^(V+=dZQUZe645BZH=daH4PCx;d}ZE_AUARYqS*|?oEHiJP1HH9{VBz zb%*-49AN$4oAy%TPZT0iykZM;WScYO1Mya285hSNT}#+b97-e2KG9{8M1q_S@7v59 z 5e<+1$>$Y07l5U)d;! VUFL8;{Y+)T9A#v#ynq zW`pi8e$?Y0M_GgF5RW}ep*RLv@n>nfaOqSt{TN2yp27#}sV^E%FANd$WqCLV(NjE= zH;~!3U-lgM@5&@(B% OVW4GZ;4n3`nj2h9q>(Z325VpM~rh3 z9enPhVS7SNhm~ ^B)rda`<|Z5<2s?lhJTr3OQ=I zx`z|BdJf}VeWr>=BI!bo|9szD{_9O=2Yb%*9H{3yF5o=H8R@_4aBS@HGgM(SJ(x(x z)wX5B+%GiT=2de;gpJN(-Il6^vp&U|>Qf1@JFd8=f+3$n%9cFPQeE1Yu?F-puE>9Q zuh?>fYX=Kel{2osv9#b%syX_c{7VExeBIs(KLpiQ#ua>sYb_5QEh+zQz%M-lF7R_1 zia>T&VHrj$8)eVWgfZ6iq%Wp%1gsa3{-g=bU>LM(2gswuNpV-1Xu=lQ8h7cYb^Zbz zrDA9FA$+;f<7hWh>*hN`L2p`1kMo5Z?QVH0ff4GNMD}O-Ymr1HZ+=1b>kVnyoqVGn zvM0v$pVAXKY$Dv|a|=1!gvuY`_+2@KmM+aTF%9Mr@6u@KHOiBBUFQc4L-MT17#gW~ zZ{krZf1ZIEENf<05f3IYNohLvKB@_)hZ-FCUB2b>5GQTB=~=+mKEd0+z-~pr?1+4# zPU|~af;J!q`Z9CU*$@3I!4}ea<`SU#`%C!!yhdExJ&I}N+RTH+gdk;3Qm(_$!*kY` z;s)N~d2KRe67QmvJsT1vZn6pBcQNudA$PzuTx?1Y{_;EN*A|x0B9oW93UKTa 62X1LK_=(AO|apnOPsRiPC_AjlI;7(_PbH|^-;0IKP>5lvEebE$qci! zjZW{zvu;5?b6Fj$+%-Z{@f2ps_F<1mpQo=r136G+IUj`IG+)n1!}lCoX%g$YNhydd zj)o~ROSxrQym%k8`0vu|{b)JT>bR)!zTueDv$m868ajJw_f7N@NY>8;rP+@HjK@%7 zwGX#~FPQMPD(gSH!K3fRFveOXGgWo629(Rbm$Ge2t^@P;JdDh^a^!V()R<$V^Ie<0 zyJ6q(d0wq^wIo2B<)wXLuwo`bW&u}Q{{C|t18@6(m`yMywoWbIi2^<5Aq&Ta8BfoT zR>YZ_? @IDil?SDb#SyrGzS z{Es*8uHPR(TKd0x4$hUQsKTCf5P{y1_A1H!R=Z19OntZb#&XRXsihj}*#+4$!vC1X zW4jDRk@*vbOOUellovIpz1NEP0(W>&W@^AXMErU(gpUZOKQC#Of}Rw?Z~4B(B=;w5 z?Cf=a-}a?ae+UrNzugSzlNY1JDbTBfW9@I!Y@h|hYI=6*LpG64X@7xOp@EO@Y3B%h48EC81ZGF$*5TDh4JQB$j`vLJ3k4+ zH5^aG?1=No!lMpU?tSVIsw%$RmxccnJ~dYO;>}+Xw9b?!a%Ik3Sy(76v@Odw@aWgc zObW%YrTpn)WT$(r2@Yc~DFLY7qjY^U{vnY|o&8pWeYrAd9L^`APAWYb$tNVR_?3bJ zRXYdu^`Dg;eQ5mXL@f2iu!Npl_Xfe`&1{ADA$MuHK6JH1vGdfO!p}^aZ1qr@;-BEl z0UV`*V#L|ke4aHJC-KRwmsRSUkb%Ewo@VT8i;Y$%_^*oF%nX$eyyTu2{TbT4-+q-t z3Mj_bX6u @#VZk^2uK}!?$p3itwcmMoZO`e;mGU}X zC)J3zBoqex*5@JW4Klw@Eq=@5`mpB|6m)hb#N4RHivs4%*uu^B4bMj{m0zIN-kz8b zacl-oh!I_z(nE)gf5r6EM?T;k#D|hoP3#uzSxpv%`OR=NC4dwDJVpq=yS*Yd3Rxya zJR6eSxJP~`kw%v_pD0~Tmr>MN_|Ke*>;9BKN%!1LxhUx_hVb4l6Mj8CmN_Z%am+X1 zA}<@{YvM_FM;O8VZtu#YNcoTRTn1{;=2LsW3s7#pXx3J`{$3`R5`(wivbJ?g?#uU; z&C;H%%_|JDd^7x&JG&syZmU)6oHugy0D152FZEY>Z2Vxy*vGN7dLf}|QW(cR#pF6k zG|4P)?c&Rl=92;BMv~FRTe1VCoA1|Dn)-5>)fY>6qh0*{+C_`ne3qMGaV)6juMG(? z--41LhTn#&IsTmV!+v0LTO2 dn4k+?r)as^nakC>`*~S1`mscxxr1(XH3TKN;&X zl O1MOLHd1jd_%}kesR%aXVSYo zLw=rfY6(N>hBK-|by3Fn43HY9=9j9%h@z95Ij|cvIVF(3)iXu}AuEk4Bp7)$QpFO< z-{{y-767C;9%<;39| dFc^|c8$d3l{h`au1WA_-9^|+)WibCL&jtvg` zeMg1Z(bIqT;{}N;>EM z0iEN9KCo$6?*uuBv4Iu%IEGYiW|+OBj(`1XWDZ%$>VKq`-Do2cYKN3)#WpmZ;A z #bcG0?>9V+puucea2VumP^VYItlD?;gQ=vC^*Ujq*Im^WJRv4J zUz_PNCmxrD;;bUI4Dv`#WuWiAM kSp; z8b>2*a1wg&)2Pg45WPRa!S39ly=}K=4`f`KzpFnNaQUNO|0H2^mRL!OgG;US$p?*C z2PzdIHhP8V#*tg6)ZauMTPmaOF}D{we{As*g@xzy;-KG>FnJ#+#yFYa#KEyXf?y`1 zaBija&;5_yCauqJ69=5E9vI>jSu)%i<2~oOl`&ktPnqd=Q|P!slN2tDz3{Jfxr0a? z)}!E`+T{6U?)N9LZpZmaIz5>g*L{Emll^>rINW`~mcF&-vhE-deF?`=;3&m#_#5${ zQMudw<2`sR2@c_qo58?KooL{$!#~OFv5chJhf~Nh`B}jzl8p!X+nTe+mT=^dWp}Za zbPHDYa2!oZh{ DV6YPwVBr_hd%jW!Mq7 zqr!{J8hSD<=BJ|9aVjr@mZmqAH(bjf5l9RS7y+y3Jz&OO8aia9=J2PbV2% zj2<^;KruJpayxs{Y?;9F2d>gTb%g-6wW=w6^{YYU)0%n>7)2J(yex@|t7{bKo{n68 z*8@2o4mwevU{wf1(6oO*#>?OH`dmtTFK`X)AvrE)Dwln4LiOw$hQVUBWH>U3!_}xi zmTCsa(J9-C 9o=UQJi V z88wS{3#ZCBHcV5-a>?F7fY|Ta&7j2lFNpkC))wEzcNLN(uk*EuOV4;}CYC>3RP%f! zPV$l*g}% R$6oICAZxL ze%JN0vhlY8=zZg`o1vY!&Z(cHAt~@9(n&=O#}MY~TEI7mK0L!abVT-GeR|pY4Y6uK zs#$h351yofkHh`~a{T9Ic(0-?L+0((&hg=uIDDVJN}( n vGcZU9aNH4}!I!YDx14;DmL=Ty zg=l0nU@9;c=*s0X5S}#Udf2rY-9kSuX0IDZ5h-IDBpy>f0K8qt2kQ{Vku5e?O65*~ zjyq6_hE@%yC&6D%z5$)q@#R&iz?mzOnlX>R(jjp!f2&oP6WWr($n(>y`21K$N-f sL2Buzq)vS1o~OL7-`SRhTz`>7MSRhFnK6un^vFuCh>q8R?5JC zJYZGPX(9o6%%;_9PcEN`Dl0a15x0OtEDlHq>gN7k^Ju&Ms|IyI zBs8R9-3*{dEtj2OX&*Kj^pr5 @1DZ^K^oD@x_Q$qH*CkP{8_`NK@x`%L?+S}KOSYyU zOVWs={VETM?e^f#u^fe=^0q~fpEzRqakfGy`N|yM;>i&soJLEZ689}1g$EpJmo~YO z{ICp$80ij{TDkkh@~Mfzxh_FA8QlK97#hW)CND@3gM1AFm~{?$H2y{B=_oEKkKH?N zC!nZD9JOtY9EY?#fX-%kkbnT79V)5~V{!jrvKfl-yOUX@`T~~><{O(d)jjmcYbv zau~Ulx(rnZnC%>$*}}EISTzdpSoU?u)^9p$bkX)qNPw4a8aemBK$d6Sb+wZFwzZkr zc T@*r}2vil*r@QM09-4z|C_a*9(TaguT;?nq zKw- aZ_bA&tJqjzD+xLm{+Wy?lw?(HV{ty5;om85Uvnd zwPQh_!2Q67mM#j3i>P&c^S6innkRkvvVMJdhrhC&R2Lj3L1y97Shw?9C|;QJ;r1*K zLxcT0$s3C8Ba?7jJlcfgIJOcY(ipV{iHNNtQ5Z6s@1M#+t2HbQdb*!e0@B^~Y;9EQ z>jc@ 9i( z&z64Slm9ePS0um8Xx1K5RgH+*_2W*m_m}HbG6FIJz+pMu&wezs#CAitA$n!?_25-@ zKRFghL$nNDun?0p*D9ndm!2OPx^*vdyfGSigyYgiChY`8@)2(>0DIbOsJPBM!Q)*Y z)I0xP Ec#oqJRO)y+^A9r`gNFQ#Gf}>E}Yqj6nDSMKS zY-fM`_!+z7grSJV4OIF$gb8h0vk%S<8OBng{uo7tQemOab6#n7CH4iO(PB#z1L7UK z@*%~gtvzxl9)5Gydw+T4q|+_ >KNgRob?gcLz`0V_h82_rss(w&URZ4&R z`eEIJ(H`QpJd0K$z`U_03(sOyt+QxpXJN&USjFj&(Vj#$by@OIhi%u3{+!tpn-Cpy z+gmqK?(6%dzxItWHv&=jdl5M(WN&C`B%i(Xp+@OZ`=~n-77b!CZ#@YgbLc?#_|qH} z8`@J9xLn5Mc#P6R*1iS9^BnE9jkjy3uUUid(j>jj>yg9Uo#*PK 4{{<=S zjpgTNfL#F;s;#0bP&Xe5(;B1DOaod+21` ^BdSNI<5VYJO;GAk*VdbfV^wdd;8r?f*rZdbgGm=O_17Kzsb$H8@kFz07& zAuJbyGe{6Qg*?K)tvz9C?nk~_#DC}?hL}6}I5MmDXH{lKUT55jsFo2kUyb0;t-n1u z3ti03fkWp^ZU1uu3=R%;I;p>G+P^cz;=OMLn_Y26={a~l18qLtELOIg+=%D}QTWT< zoe4mXR~^qaw8Cu;LOh*NqgTxVyh6!9@|t1R^={)fY~!Bq>Gy6H6gE&S+`eHWQMD*Y zhI4@}R_<$>8f@WNjt89;X&wQ&jKF@aw|npd6Rf|QtZ1{<=<3M{L+h-_KJMzt0@S7q zm&F5#K${urU^&TVvw90G3RD|WQ#}fgvZ`6sa>mboFwLEQOw#5n`f*C(ZJVp@Sx2nn zetcr5dO9xTaAigLR8G)987^$M6`b)4b$^`Zc)4_Wg-2SZp{djD;lx*ge_Yol&BcV? zQ>XwhcAJ?@pjaCDAC)u%z5}-RV@|zRgUKbQ440bXCj}{mSbQNcey bE=e%CY$6+0|o$@9@x7x=5jjWC-AR@GJ&p?%DX>1?EZ z%Ym5q;;g<)wBs$a$IWf~{Z? T&%Q4` z&l&@mvuEt}bFh<+p6szQ`{ck0&|?8vvejAWO-34(N{LijWMRSWkeNjOd${4mn+(3v zmE=#FVhGWEA+2YcDH|3M&n 7n=Q$2# z;};C|ugwAA(!998c041Q^IT`U7Aqpx+YS)xdm4qhWn~82k+%;w4iF7`P``C`WC0g2 zWCMs8L%>ZPxXlV|zaSh6S-8Vs=1WwX%&qQoknPgMGJL(idCq)qaqoK=u;z>I$JvV% zwzBgKYyMnp$`bWxf!dQh+`5FZCrRbI*2M|Y>Plf9KKBHd3yf4{bq;fY>ZCpyM)Em- ze`(&49! 9SW5qrFC5_|17h$G{$`uMLLh3wfkj&Ie)+66jZ zmH8jQ$eIpoBm0Ng)y*;Yvp9HFUdCK$%>|;T$>qBG0m|o=+5H%uekA8abE(ya$(OCG z%^q~bEwnk}(>8e4y^k)PF@K(Cw;^6do$TJlAA@WC5ipE?(uqf4+4DA|JkIXfk{b@c zO?G?Cqtz|8WJ)EET<-E&H=%UKpnDhk+wrot=#*~}g@i7z_v=Xp6GXs7S5Iwo`R;cT z-xZQJ|7R~swG0Rpa1%293T0v0X-_B+IOB>HVL7!2Yg0}1FgiTpYdr~b#DLTQu=ztw z06qac{6cDEg~jbn{b|ge9mm>wISz; b>{=ips7)ApCvBSt2*Uw z57i6c0xVLlj`gS*Y0Ls8;IM8Ed>=@3KetjOGI(e!^v6YHa3K~-FkR8hLWMPMl2svB zMtlu=OGLm)&X$Jpo}1?Duh=O_3tc#BmQMG;UgM_i_u=x{BUNPe4u_aw$6YQC#CcY* zYK)mLJ|2ba`@v_S{i)1(r3Q`jTD=s+HVbtkP{s*(tPDd8b_spaQ&595&s??N!MnGx z!|W}S`yHDOlK$IHk!1T?i9`)_>EooNcxz<~RroyV(1-jE5R=s&CcdQNDe|*n8a?2= zFvAMq_I{fP`Qmo7SDC+s&d+!KXb@yDq+&JNcmvXK4}r`NAyaGr4mB4(%|~-~FBEpm zW&uVQ?1|TrzW_A#$CbtJswqBJqYf5}Ep+;2NH(Yo wFd_PVV=x*n0uj3?GN>x$b2?abf9)FH!Li+zW>h z@hw4(gIkczZP?B_*Y{p4;G{X2EH>7c^K7Rg?>yK_HTwRWHR6m5^7BvuZj!YG>`}uG zm63JZJ(Umt_L|bRf^dq-Dwi(vOh=5Y= V)!bL8N^ z;E^{@hPox2U3u*1HwVG;sPhZQ&;MNUjg{>rxLi59`%bkn36>ttY(aFXDM1tWIOK0r zj83E6y65`8LU8Vfy6cTMpj`Um{_ri)(s~TZ?ee&eoThN5z1cNp7F Bk+IX?VTXA^T9^#xdyr 8ReV9@$t7 z*Ae5afOobx;C4ay9mQ3J?AXoU|2%EpwSWR4*Q%zt6pYc_s}VOw!h8aXxzR)9(N=GX zL)%^Hq?t5NM=74~<4kCjgOm@Fsymlr3B=-!`H=QrIvnW^7^sq+8z(}@V##LoqybgZ zr;7>A>uaPBC{o!@+3r0NhI-8nJ6$^Ay)3Qrm@|JrCiA(?-lyDyyTyN>lwNJUKyrE; zCvm@5o)=AbIY`BgY0DV>P8Z}u D~77k?x9JC{6`52MC-VWfaco3a-3 z`itE`-|_J>Bmbt0Dod!K%!ahcDmuN(Pafk39cGV|KC0*+VrtA&T7e$CU1%A0-;z{? zu%2Isd_ew=9J$2Ly29y5DAJ6iOz)Q}b0*?-Z*eackWJGLgBrk(mKC!|a5UN$`k-yp ztE}{y+U~yPci!6_xAWuI>KkGY{8Ty2rr%UHR-aY=%zZ_}fZzZh#Eb2n1;`FRc)@i2 zg5+^JxkL~3ni&i~?^PniT(G`& n4`ogqFJYC9{IustE#aKoTD`y$%l5vU nI(sJ1P*R|lewft9MP!@%vX+nSE~9Yyix zmnnk3DyZ%p4^GhcGAw>R+p&YGK@@~yCLsP4JS`Aes5l3~)nd2&ee &( zgK8RQk(nkt@ZQh!ZaJSlCF3i--1l$C->4vD;nBt2vWoJ)%!1DK8+tpl>w~dxA2gl% z-|o@Zdb<5EiZwG_oCfpp)d7`C%wbQJd0XOT6)*DmN4T zP=ROpMg5^+PM{RS$6om5>(UTVc=rP)vPbP9Y%EGtEIT*Eip{!v@T8>#RIEH7W>>2X zz+GDX`$*G8bUTC!e7t0LvL1s;7R %F8qg9XOVG~j z&C++bbmWI3C5hp?ckeM;YTxXD#qKBMZe@7KFwV#AFW*xtG8r;p3g%wbDM3#UE^TMG z$hNM-??;zC@w7F#$)MZJuNyzRThZp}QBuCHh `(S@ zW5tiu`QJG;C~ #bK61F>T|YRC8&jLc$+5*V9#gefZ7zvtntB;0~dzP{PD{ z=@T_?JQNTrvMXf#%73ZayJ&dkIB>&qOwN~lQue`kz*-9>$Qo9av7GzywfOE~9zoLh z4P^}9p7S+Jk+9^x+3Fz)p_KR%G+1BmV=R{$;k#kY DlKFtq-3ck?5RiP)l3k!`pbU<7WFwLk*(*yam43^)A^2H& z@>#JE=+jSfo%LWfM#4l?oVAnVFm>Nk5 SUDNQJE?)EnSbJO!*sqf(Iz<_<+wJJ^bgek z4$6=qR Q-0tN;A#lTOmn1*KEox@GGsH0S#5L0j8}ML5Fx;u|H~nPa5# zzPC!&203>Bt#-v{4wti~lMd3I^={yI8WiP`e}NK|eovlLo;=?#4{`2s*jx<$cu)$= zj46-X|08|L`}Qo%y6Va&cJ;L{U48k$5?Jd&Us_X=1S_Akv>wiCVIG`n;I`7$_X+et zPxM1~OAhyrt?S|MI0)eV5AhBD5@kZX(1b5RN$-uxp0^M7DTDmE;Lv39#mRuvz^*L^ z1F4fd1yt_$LXw!+Ct}-6jc&8rro9MlabS)q>SOx#s`@*}wCzexkn(oQ_}nK89ZqqO z*6NiHr_Sz~R}E{)@wVy1ifH(;c?}*WjI8cUYc#$N%Q_K%;#(wyIcBq?vf`9uw4|g& z-whuqWqW%K|3quPBY7BCsm{NSCu;=|vlULjfp`9uJI0Gu57MqRt8&y<+}6%~+kbiT zloTxgV05E9>hZ?0MKlF(@RN9>P6^z*$70lly!NM6FHQArZ-oV9JEtP>@q}QuPDDm! zR95ke#((`K&r#DxKlcn{Pk#8gh(U zhDJmk IUYiy= zCnTs9H2;iFRLg>B$cnixue2$pd``En^s0Rol~o&8lwX{3LL(PEL`_^R@gktvv+R?7 zQ=xO>tjjYs1i$~{ IR;IMeBi^WaqgqP{1jrrFul7Tqf5nZ?96uwjyEcwL8Dk=VF zYr)eb03OM&kH0c;3-ZM(C@!e4V{n}*<_OY=eIy f^tTH zPsM_O+MLuUr-N*#1I|ZXKS{aC&o2R$tN*s04m0~XLL{?=#GugSJgZGEG6P#1Iex3& zEgdg-f%?UiI4s^n&^46)-^@%3D?ZXIFBVNT7Srb}zoICZBYx$1hWV6pFkc>c2thjk zQI^MEp Vr0pF>++r@boA$`U_U#FJw}@U;bmlmty>zUW$9C-NF_`cK;x+Pzx%$D~m^gN{jK z%$I|gyZV=hW-Cw4pnZ;x>0y_05+AoR*6{i8K=m(cnqoy5UiVf0p1QGdG%@LVv*BY) zX~t|4&Rib?(mer_#m5^ww%6YoV~-xJ^f^m$53>ZwS=aVart?m@V+&zfiG+G00^Ku? zU#xu5p+MC_KTHHiUTbFM=0GJG`Ik?d-cf_+vXe4bngX9RT9h>U2L>u#WA@e`KVsLB z2%=}A-fF$O>Cf~ooQECKubwr GslQM*ZhXu8nVMw$V#VU%WbGhM#tncZq+G=k9GHC^j|OM%Ps!K*fSL@ zGqLG6IMZ0Q7}zkbR_Ts>m+>aGpQIr}FcUC{al2Gf`tRo(qtFTza-6q^by=$ahTf?c z+&m`;Q2G49IO3m~R}Y%!E<)9;c#z@W^QJX|7gLU%UP~Ig)9Bs`Cn{y6F5T(H(nL%+ zPtqz5odP_&Aze!iLVIWl`{YcZ!J}}s0_cx?i~O}d*#+j<-odqy7~p0c(4NUK87h<2 zyq4%6!^u3H=`ZygpPygA{P8@rXC5UX#ZCCaQxc)>7b8R+5?A2yVo>{~fs!W&GmDd4 zrVEoj2AbVi4Q6;2kYtCQem~-r?dZt&PGddmo5!nylcKTOU>^F${CK_Q_funr-fN2| zxo`F Pc6Z0yuBx2D&JfnVg!kNn$DLuXS(m~Zv6I)t{ZX4V!WEm& aBy??xW>loI-IarA3Q7MT0{r#oY=; zTihiOf&?f~3N7wVafjmW?#11LTYz9e-#quezq$WqGLwPi`;l{Y_w3H!zMmk~p?|6* zcwsV~;+19TuP=-t^>8M8@pC-b+R{>vBXwz9+17tBJ8*d}g}4D`Rg$>lQAxQjA8(}c zOHDIwVgk6EF*|=aD_o<@E@JTWC5J2PWE_j?obu9cS{PwL+A$B*K+EK!>vw@`ZhtY= z%=88S{Wzz@#A{5*pEbtk0QRH8Oz)Dh3w}jek*c8q0h{LWJ9irl4~9zQDVLl=aGo{e zOBxDh6-bV9{XQY#t&V}M{*hGrA3epl0pH?MY~lUB#EGJ>rUUU$H&?(mJ-au`DPm6R znodoRo~2T)(b#9r%}W|`*n}ajmXH0@-E=H~Fboo$Z7x(vqKBF&O!^4YeuLEh=}jHc zVKlRN5u5W_{wxO32(<(zp~v^yUvXorRo1?c?l51;?hPChIiksn9~1pz#uF8Av_JdT z@iSM>{jrmF$4J7_N0a1aCL@XIQo;fM3o)0|iMTh*PkF#uK}2C=J{D$`Fx3R3cZhhs zRl8mQ<+Gc2^GrBYEdf*5ggs4Hcc-IyZ8FVU-rUG=T_pZlZW%_O=CLks{j8lZ&M>dV z9*?Vf6NfNWO-S`8h`C6Z6;Ms^+%qVNpQ=pdfK%8=G_)HzV^mO{pi5`J4=qbN8j>;) zOdA@y;*R}doxy@{=Tr(J)gfNcQ2AI_J;RsMXqHE%z4O6#URs#=kX>ehKyQy~#6~;Z zdpT#kkMXs|i4seiB*Wsgjd4}+?-}@B_Y>jx@4fp|-hn3;#7u G9q_*|r^*9$yYP&@^u}STfwS&8Y)Po;i>yxtqTT#c znfk_eG;cj&aH-~2R#-XA$KgNveqf)?c3=_locvP~aEmG-ZSKFAuWjMogR-qPb~DPa zmL$;(n&yYIEFRyt*$oFxjdC5a9LT(k14e78!#Cgd!nb;xk-WuH=G*Y=BX3`}wD9+1 z=GR%G(==6m9aaAR{2p%#2mJXAdKBfAb!k{KfYk|Chou#BZ=Shs4oxtHUffJ+{{-ND zzsFp-{B>NvTAxs%b6Llruw3iNV4dYxe|Ze9@;&d{vtvd^L^S(EmqA?Sc45 {Eer?=| z*!XRJ*u#|Ch?bJrNPZm4P<2wMLKCcCL1cVsUbHA9lCxA({^@i|w&Zfbba #D;R)b!+b4LXo!|4-|) z-;E5oMv@J(hDK_#V%RR~IJw}3N^;hj&n2w*&vx|pv!W`Z!lwmgmyGZ9Fi%dR8efe{ zWcvJL`+gj6@bBQ48Zi&tu=nL)di{^D19Do&=)>DKdsP2M`T~M;o!h^5i%~~8p|en1 zlLCsXP@l}DW=Q3z X=7PS98LLM?Ut3 2*vbk4Xo#lVGsFntGfLzyYvO S}Pd+(O}m^2%Kq{Q5~s5SKN*s0I{Qs%~+| zDUkf7^|0wn>wQ~UQI5*0DP23I#W#yupB(Sut(pMVRO}cl1mBM3<`m||bhqurz?76q zMFNLT;*Z(4%H`}H7Jcjz`5&J{hNUhs_Zu?hHYhUQftckAc|_$jR<>U3YNIT@K}U&~ zb9#srTe3EAl&aA+pc1nxON}aW?C8Giz{%SCt928R&B%vrL8|Phe?To+i(M^(-bGGD z@kOEkxKMorCn?IdKly#I-6g~(xV_E0-!-)HtzRd)3WXNvvrDNZx{F?T%Ds6*27HDr zxKI0b{^98x&(!t2-D+Jimpo&lHJh~g^s3OIQ-LsJK7sE{6 ~nw3(+1%e7$*)9VOJI{JNSX}&Eqdj4MPP&ii1HiIHQO$bf7k1eo$W!z^mdd z?zGfS8k^a#SZBOcRR {ew|@zYN|I=A*|!dQ3qj wc2XYPbV1hRnYpFQJ2thDfp~B z7p)5=(1S{~eyrXm+I^4J7Ym8v@KtMJyG>cLUNGt5y%-Fp9cHV%ybb6Ci#UqYs)HKu z=^<2~48^m&Rt{E$X^L+o#(92|5 Z64>El`M(6iCz=t6q_uC6Re_ zl2QAfya?FS65!h=-U^&Rp}))kVNDs)O$bx)hB;J|oOzPt(rNqrM*dYd2HXuzL$!1b zH8JIXpT(@J-sXEXPw#ET sSpS0+q c8($|)XHlq;Z`4pxH |c5#L_YaCWa@Vk-AwS?YgX3HfY zQ#2lm(5iLTOlvX|5#&skx?7CEcfj?v9354Z&%aKP=neHQz;zv11>g;Ho+A0#@IE+3 zKaF3;HVwEZGjQXjCVDcDu%(-|`Ul(m3U1M={MqTEM%w3&HPF9)=4JYBMfDn_UHOdV zeO7DWaO+V(Py7G807~^sxjV+vSVpd_-1IQ@+}D!J|JnyP3T~jd3w{n~jl>RvdZ*rx zb5rYo9KfH(OWcB5^7WF%{*z7npaKu--`v15AHYYvRtlGY0fI2*8xtuOVppkn(W|S2 zVryZj@-KWRSWx6VhB0|H@M6RJy$TV1n`-4QE(&T;tTMMQEpfN5uZ@|z5YaR;F3LVQ z+PqmjD%uu-!uvC?VRe-NEjPv1k7)KBsQS?x&`k{k7OGRsvxfk&h){`081N6FcpS9# zU}r>sSiNSqKoTvbiey2`7_DfrR_3?-ix%RrtCw@{i!f|Fi9205%Xpnzi2Yt;XQ(j+ zqnh(5WAGbBd>rsAQ3u>A!+icirL|d}i;B}|LG}Z#?3I1qXc`DUGG1@ta3~mamMhsf zCi atmrle?qQpmYl z?r=N+@QGwyhtbSYkz?dmE6vhy@xz{`g41VQ)QNPg+W~(ndEf`LfALxF=`4zx%}_ac z?*gHw++%xD(C5xG9tk&6H9V|$eYB?L;R7L{4en{mc_#0>ALn%>4gp#C5-%32?hsf+ zUPB|X*9|F|@)N3mUtXzP%l&$)V&GbQeOxG?(5l74q{OHJz(F?Q-9v0$$k(hm*+m1! zn(@hiHjXD(nsYC;%yctNCG`r{T(Jj!PJ=x<=0B>R(Q0Yuoo%bzT`6MnmJ_$K&wRu$ zxm3IZNXwo6EEH}eMt-2p_}&-LH8uQcSgQ6P9i7%)immGOVSpJprT4>C*4jr~(^CKU z%6jFtg$W$`iAo9Vix3pGYlCs(NIXMjJ #11OgKyy&A&cVuo>C{7+fqb5!%UeDX|<4CxiJ_g!9VCNB=1(f z>jl5o88uB;Ys40G3b(bt3;UF}a9~35mkR(UniCZ{as@ _@$!3T7k(R zSLxH`W&iu{IR9s8Y{JJ6&g*y>CHrI5f7}&+oD7?9h=>P^h?9 z??EL6)L;m-mp$g O$j&n$P@5RATI%Cq!H6QEpdF&uK$cqG@DR6%WuK(Wh zDL3SAl12g@OnRj-J*AsCi Z5NO9^Dd*CIUaOtHZuGhl# zmTSq;K{R_ av$i$7nUYm>`Oi|c|K3oi*2QncIo8r!`r}QfZ z3qM@FJ03TG1!@ElMq(hp@3c0|WRPQ&C#k u+D1LZwDqkFOuR5KV!e+`vWEn0t;4uUArXq?eB+^GOL~(80 zL#H$cZSs$R=`vF a5KO;7?h-s_pD zx*Nj3HJTI(L}H7hUK6-WCG2XdgQV!Vc#{hh`A68C(-&N+1v6-{d!cN-vz=_xRHq2( zS3jl^1|KRut1*sqqC2HqS9twioBmMMGnG<6LT%zXRZDqL%Zp-yxY)^aDt}X7%&Wqo z;)MuL-~+AsO2~u2CFn1H>AohwQF|8{p^O%j6L&bS;ahfF5_}+~9ZdH1t{qWawP_2m z6dq$%c%d0Riic+OvPDr&Kp|NSRAFH$yxNEnAMe?w)JblAGqgf}<|UI;pN1X*1vlS| zBx}BCd`3Oz1^WPa8VkSp5Z 8%= zOmN^$e4pxcO)Ab*qrLfq`omq65Gp2V4kB=0-#i+=@!f(HJW#P@?z-IcT&h&@X1GwX zuw*LR%5>pu+uCAj6SOL%zDl`a)pM~^5;&?XE&-HJX=|EwormG!0wn+Gy@+pi%MUN$ z)yzRIYu0cKx4LQZ7qXV(gk<&unCIbeBx*2a13N{BU$$N#6JKvbI7lW0nK`w% xlm?9+l#T!RFL-U @r+VHi(;Ne1t;EfX#3 zmj0pq*}rOtYG_*>;xGXoFp<42#kj0982fX)apvAloI2nR8f1HTA-CQ`mhpZ1wx6F8 zHSc4*7bW8cE^vX7IuTWZ;l%?mO&f1(yvL6PW5QfbcBLm0oAUwv6nO5EJ_mMiks>?9 z;!)9jS*1zQUX-AEMvB8oGAN4%CPYc6L+CX!l1Rl!Z!$)Qn$WOGurW!7kg`j%E0+ zfHde!#F_qE-;5i>?hE}?dPIH-q(AuoiE;MAd2NFcBL*koOI6c-BU=KU8R}GpfUSdh zJJpnO!63mgfUq$R+o#hHOn*P3g<&YQV&KxC#NV ?ikvVyydz 3VqiceP3NXlXe9h ziVIOtPwwD#zD51g?%PDe_?O*Sa-y*Dv3q~tKEoQ4Qubtno3NT1Q% {F(q(|T5UR2<>m_=r9PKotTw7bwI5hX80Ip(0exUa12wgW|$yM4vuTL|H4ngpUwP zd8la{K5gfW7akuH4W=75`fxlCW(a+4?(oGE?JCck{j&XNX8g zZZSp@1;%IvvvQ^?Cy+jQju-Gv$HT?1(PzJQwxR-|e6p;?8f$wNggl122RmEaFkt%q zEiDS!H8zcxbbrKKYuxt25J{!?8N2Qi5-cw%xN8Yw)o7?hl|^Al+vGJe%=rE2M3;T> zQ$VKP3;?JGZST2&QmVTf9s>OCfZ&t5`7+6Tr39h;0kM4m%!^8r0A7WvC6!5NLqjkv zyi+yu(!koywohU;@tuKnH^_uIYlfAsPZ*>;8m~PR3V!q=R0nJ_78}-;_?~rz>bV@Z zyCMh4OS;|)IN65t48ug8B_`I?mHn>-m9s?L3pT~nf8{|Oi1IgaNST$U3siLtoYL>? z84U~!F8U~P@!?@CS@EAD-V8TD2MV!AkeqPB@i8aZbC9U#kMCHjNYp2-8Y@+i!~Jg- zqsi}W-(1+PdW&iA50!eJ7`h$*Wf_dRQ@eA2dVup-+-G aB9Egr zAsk@%s%I3cerDf%)5 zM8`IJ))T<+U4zi82B&n!3<2K>7;=O%j^Xb5Zx?0_ko695tMLO8O3OT&ClhobEx9ui z2NDRv=B9oHj4@r)qX~cp^t=qs#HOWHL17r>WF8ljacPxAHh<&OT{o>6?M91kdh$H9 zje{qXvfhS%`%>715NRa)nVKmPEbQwt&J!MbHOy8>e;74Fl#<9@KA{BP0yA;P28;;A ziBAnng)#fgcxB31c}RxNAL42p4t3e)dWiZqRI8^06f?aqTwfBtm0Vd%(JH @p;4tUxdl;Y$ Lo&6;15k;hftH8lh6 z)0??+^W#>Cz6rRA{jn1K>Hy@mGfX~}E#rr9*;YUtmR4GH_9YFLFu{Q&8y@CWuDdCP zg&l&nU-7qV{}R3F8k&YP3F3t=L{eN_xFqjh<`H|YgGC|+rX^|rA&blZb~Rm$^j{^j zAVL(S(u;*UdwuX;`Mf1^c%=Yi`rPmGT>f3cA(GK~S;}j>Zf8A=C!xfW(f1wmrNb4< z!tMDw ?sj|cJBkk>;zWjOk}ZmB?e3B^^iIJkNURXhp1ln<$N&Di2;xER;3d6AT6 z*% FyWbMzUXvL~y`)^Kx2%-a (vTEcQUzX-|CnuYzo99>K*8iByPBXZDR=DTcJ@h7nlI75lV32v2WggkBnGN zNLUK i?KfYcn?-57cAwz83G*Q>tRKqN}YN4niG@v#XC@&5N0JMa~e# zs7pQSSbm-x4xHH7K@NSzl?Wallx;|Z6|AKwTWcNKBhF>iIv(zRvE!+htKsQg@3%)8 z6OVzLF@2e- iGOJV>yGjIcGkXfbj@YCs+X1P zuF~h!nKzIan$M5@^FDttK6_U6{l$*vcT!`Vyhl@{@>nEiebdb=YfbN~)!b^+s7(!^ z9bfA4GHww%z3ZjUu$NqHgEf&bGQaNC)6SE8CvksF3mM>8VE2x8GwB?V3t+^63S!lF6rBsJ%m!9U-!`t&|p)Ai#i1o z6uJ7_uYT_91^c|2d=`HsxQ@|Q7wf^2_WkvaLh$w84p^Ioij+JheS}d3ZXJ}xM!f<^ zzW`HaNcOt>s>2(hfb#p!9^Ui+JE6`M|2v^H`b%{ynFnZmezVu8k9<9;S|B}J;^0w2 zx>t{?6gsUg@!4MJQ1aht*92KMi4SmT^dTH{+q0@wL8N4a@`WQRSJ)+0kcV^DjDJ3# z2@b&7UA}Ww-gR~tbCbdr`^!B$5AG8&uy*P!p)vCU>XxNbpJVQMQ=k0v#@!MQ3m)A_ zzXHF*Jm<0g>mXv-ki?AyU12(~l^vyYd%>T&ya06~^&;xS<2E!(DXPsU`GYHR0(1yO zDw#AP^*9(GC{OD*BPzOm7Q!ycu 4m2>YlkJC*C;_hT@uKv{Qn(l?Wx{}&{S;bzUf z@L~NqBjd0&cdV-j-{DoST!tH4$~p97acNDCbH`PIIMPPaZG6!>b!9>9-?vI9H>hgE za6GIdX044dVH4JB8&pyyD{Pf^t1fe~VdS6S6&bIyIGlfmp(sL{eO>EjBeWH*Pw3-g zbTn6 {hNE?Bu9Suy=0My`usDz|WJJm8Wy~bUJ_IB63vr9JlIuRK{VZo#(0tH_Ik|@8SN= zG{k-~I}p+U^uT8>-n)xed$IDT=1!g(&Xd8~sB@~%-zwU?>GgvE%dp{u)e?vj^vwf* zk0b7&J~wK4XWKEieE49PgF6X%oyvD4sW0Y*5Et@hBtd;v9tB`OSwU$dDDINQc{9S@ z-$W#RGlT_bqNZhK45?0UMX2I5{ >kS>k|EOiSj&cgs 5-^uj+@KkT=MD%I(Asa)3&B=YFEk-!7Dj%O7+yCo6WiYEd&LRHK$}m@u6B14qSR z5jjU<@#Newf|Se^jU2}0bd4s1e#le%#dAHwYNsRJygC>xFOzboGhWwtX%{}3$vvoz z`JZ+?LoyPc4WT1b_aq9(bLA~F<;L2`p#kh3%ejiUxt&$ej}q``rCq~A1n_ifOo$o+ z9|IJ($R)P^;g5CzJeV& Sn}Q_(m2Dh4D$&t=Ijw2Wb7{v1cvJTiLbqXZ04ZwTcd69@-`?x^d_LR{RDsgPI)4 zF^o*95_qx_-j|c!j@;B@pK4-(3#08@1d`ik60> e9zjqZdySE{Pvt2CQ@x`bYh|Sf`Rkvw;zTIC@JGq4GapcO@gNa|9Y+dw5 ztqzC8bW8MN;1g2wW=Z?IiwD!pg&mYwGqf47db;&kgBq*lY>Rm{u|>#htc^z7J4n=% zTbV;S|0D7-MN)Ze6Zf-}Dt@E9nYGC{Fg5dH?Es9zT~s6+M^*`Xv9^%D%5^I~>yM(g z7d+sT*?Ig~Fu-_8UGQzxz)nKgxVfv5SFd^G(F3%-P?q9H7rgPFfPtoaOFRzAGXK}s zB9~ViMh;t1-Cj*U)&A?x^-g*6t5=79jTuHg|Gea>{;4M+>`S(uLyoJb3EV<5fByR; zE3aGhcA+erO=C%O(%^^E;}+A14uYq!{`uv0v`O3SwTFF1@o9z$+QbYoDs;cqs}Q=2 zIhHDvV3;-^%j}&q;Lg)(!Jj~d{gWfNfQp0i_x`9 MWi{uK3%DiqMHE88uB#XmhYjL{2x&OgRQ%!~oALukaJ1&w8M~}(nSe~~Db6DA6 zHq3|;{kSHNRY;G=IK^e}Ej{Incn l_H;borWBOAlQK4j(tSU$ zn*)y3&2!ZLu5c5o0d5G|>oip9PYBD?dThtk=iK%puZD6ggCC?%@m6Tk#>vjfr{+_L z@er@z#}rW$=Jl-Hd5U!2V_&LMa35G~<@}5ki6H%N#dV~I_SP3g`f5L*%2MLEs%Pdm zQ#Crx{gtpD{M;@vNbGt6TH8}WhjiEfD<|*`o2oB`AXsYUyWB5F4PMZxQO3^wN2iu6 zEA2#ByH9j}s1&kHsZDp;3geSehk4x%4P55^=AZKA<=XI)Fv8C`Su-V%N4CF%Z=KtV zhp(M%g;?z@sCQ^)LsG7hKIn>BYi)Twkr}ne1H AJ8@Y8gRWhIs4x#QKcG!{ ^^mOHpRCs$liY4bp7!l #lZ#6-0WqsU*csxRtkbVe)a$7Wzc*s13K+Q!Lm=6yh!Nx@o0M`^y z`YS6uKK$AJ1;|PsJW8?nj?VErm%Ax5lq7_AFJmaw|EDsbmxJ}WuNnK>H4pqMGnoAP z%|~@kVe+~cn WK}t6`VZ;>*CJ%-I5eWJy z-eZ9jv&>gFU1K_?dz-hL?(VN4>5?=cqdkfX*Uw?EQ9fJNB9*=PE4J3@mK ~#3oUlt=FRrVE5eaAf z1{v~Ok0(krpD<}N`{vd-3lDlOJ6cmbb`rJ=US4GWaVCuO^FA)N5;wNo#)gdu&aW2j zMe1u#Q|YU8ujKNAYxT8hR%nbpYsdrp>`FUAPi-4NkcYe)s~+n;h>MbpC#H?$lM5#G zc=*FRGN|;y)3d%7)|i{Rbo`ZqTyWAr(a5?S8Mn!=48Ht3Fe3D&A+GIu&6tPG@ExmA zYTK;#JcCLM%FVcp@GxcJqx@JbBo66tr9lHe#u2$r&fT6{hQ)Gch*6sA8*!4@ry5Q5 ziXgq5AZg`Ocy9y-u^d=39%$?Sm{??hKPElALtP3GBW#KN=AsVTF@=hd6(@aJ|11j) zmGTKfxKd~V93By^{$(`(^pN3C_JwYa<-2U@vg#Sd&dhr**Bj#3w@}Y!LNC1L6kF>` z+#ucflX~yi@wS^a>mV1GZ2TPs(YMROrKkKmrF#c8*Z7CR(V?{9UX@L+j=-BKQV*f| zS&0?N`^)HS>LtY{Gs_Le47#HHhJQ|RqU^vl$NHF18pvn%Lps|0hg)b=LcyY{Bhduz z+sKjT)7gld2q4pBMiOe1nH})YDdv(QwgiKGgjP*^iqPbKMJfKt(x+1NjjW |Hqrx-NI2gIHGrE@`p zr8V)E=&0Y+7BFR>df?!!jfQ@-XC$#Qnii7DrR#yB*J6m@cNO2O{=b09yTERx?3wRU zPoqV0D4eAklQ26-wUJcgV#J&6<>I(MpjT28cSzmpQ|wZjb3q2<$VdnW0X6Dd(EB5q z#gFuI^qrD4( uV9p{2Jj zzE+{RI+_>uJ^Xex=RU}BG@1#D1%BT)Rs-wIU3A9b56(o9ld8BO2Mg`eg4rtPQ}{G! z)Yyv+Bfcn&7_@C*s&6aMl*I<<>mLOZsvjO*4d{HQ6xtemn~p?jy2e%aie&a1oED8t ze7+SOH|=E>i(%s;s$R}B3bAwgJCTXv`B1%vk&{&Oy80D#{)GEds{v>VPj17zj0Cf6 zm#xI?r6wm?H}4Ax1gu9>Sh#B3 0W3gwc2diny0s+J!0cU|I6(VNVz>0d%LsPI!@=kVVP8*-|?N3>-EJ&Er62-B!0u6 ze-HPhdLW9rB){{ENMi`OJ+GQ>$ R30yY-Me2Fo3D%C=rMbz W4w)>MnVZdsPoP+-W#{WkesMoHGm#btI^;B{Q8c+=U3TlDj9Twd$MNF z0|)tFH`FQri5BT7o|QGM*Zl&BA#JolL)v%=4qqcD4^A~Z*$^_lyoU#T!k}$+TZN wR`)T0`dXzq-=d*~5%KoNH?vI|M64YAx3{ zY~uqiG2d`Q{oXGc7|dDy=?bjz?Q`>4f6W-rosm2E1KbbyFq|-@T(pxHJ?&-767@n* zg*Ntl0GdUjQxE&U2CaPGM#&-?IG|E{6GxCq`?LhuBi)l( }amakHem2W#ot@yjwlF9bJN zu=0o;<)RSZ<>M(Pg>hcP{3jp##(%F!+u=No3a2eMPNhODH&szTF2Kvx!P_iJ7;_1} zIiB$hKK3k4ZsWE{PXu70M`NLg_-T;*GD>EW`kVDI0Kx48_|3s4ZU7-lz;tB6M7px4 zma?z{|7(Rye^U92xc{vc-zjE)EJx9}PznFQ{Mp>qeR_A4Y^T%RjJqkl_6124#jDCH zAb6IERD7JD=BBzF-!Z*#;2^*NNBUrI)H8}@*gtZ{SdTqjfJg)ZKdb7~wbb`mUlMoG z2G)vvKixi)75Pdq<7MC6un?VOSrzHeDxdejLuU14jPSQ!aB2CMc r8>Gra-di?sj7#bhxc^fzwoH)d}eC|ERe@92Oa z>V6|e7_#p+@I79f6fK=G`TteGluR0YKE1!?R0Eh~(17E|ab{8|yUM`BbAlGecz4-& z`XnkervA-RHfc6Yq`t8jFdeyF>#JF%VD6IrJlAj &y3$9UWZU8JtBi;gz;{=F8G@5=Ec7vKy*@DBy=RW-r{%q_cc&O2Sj zLwzVeNNp4U_~Uv I1|Cb%h_F~f5(nASv@WyHIpbxD2W=ioOtd|Mq;1;QQXgW-s zx{hJN6}l|AER5Dz{Q2!wo?)V$V>3xWCAT0|)mifsPQvrAJ5$aZyk=#?IwxzEeIxMB z&cSkiQ?&Csy7y3}d%-eIOor#uP !S!o_R<|MTW~6s%lYb zr~l@*Cd!@^Nb{il$?*Y@V)eIf`5kj)OGDq`E&$i0nO2^({OH1RXy`9L|=?1-&^; zX}sb_UBVxKRKaw~7grfs_3VjHuYv|&(nJ>SV1k@7PbFQvh#IP%7`X;N#ytH0Kh^?c zbTSHg8Y}6iFbp> (Qc#RaOW z_hX9Oei(93%Nhjh5cW76KfGQ!DyzbQ3dRO-9MQWL{R}-LnqLOJc e!W!3n}91eM>Y)Wkb#Rc@Jx`*XIX{?IUK)+?qUJ8_=>IQuK614iT&BU;64 z%aUU|+sm9?H$9XO%|@hq8%qL3)4|DowBwpj&qSjT-`({Df72neT-f9v=P#(&2Wtj2 zuYLUu5j-~2 JAdCcFFaA>A1x8%GP