From 2c6fd364551ea388cf5561c2d1b758ee7c337b7e Mon Sep 17 00:00:00 2001 From: Matchu Date: Wed, 2 Aug 2023 16:17:07 -0700 Subject: [PATCH] Run `rails app:update` We accepted some changes as-is, but for development.rb and production.rb we read the diff and manually edited them! --- Gemfile | 3 ++ Gemfile.lock | 3 ++ bin/setup | 36 ++++++++++++++ bin/update | 31 ++++++++++++ bin/yarn | 11 +++++ config/application.rb | 3 ++ config/boot.rb | 6 +-- config/cable.yml | 10 ++++ config/environment.rb | 4 +- config/environments/development.rb | 32 ++++++++++--- config/environments/production.rb | 44 ++++++++++++++++-- config/environments/test.rb | 15 ++++-- .../application_controller_renderer.rb | 8 ++++ config/initializers/assets.rb | 14 ++++++ config/initializers/backtrace_silencers.rb | 7 +++ .../initializers/content_security_policy.rb | 25 ++++++++++ config/initializers/cookies_serializer.rb | 5 ++ config/initializers/inflections.rb | 16 +++++++ config/initializers/mime_types.rb | 4 ++ config/initializers/wrap_parameters.rb | 4 +- config/storage.yml | 34 ++++++++++++++ vendor/cache/bootsnap-1.12.0.gem | Bin 0 -> 39424 bytes 22 files changed, 293 insertions(+), 22 deletions(-) create mode 100755 bin/setup create mode 100755 bin/update create mode 100755 bin/yarn create mode 100644 config/cable.yml create mode 100644 config/initializers/application_controller_renderer.rb create mode 100644 config/initializers/assets.rb create mode 100644 config/initializers/backtrace_silencers.rb create mode 100644 config/initializers/content_security_policy.rb create mode 100644 config/initializers/cookies_serializer.rb create mode 100644 config/initializers/inflections.rb create mode 100644 config/initializers/mime_types.rb create mode 100644 config/storage.yml create mode 100644 vendor/cache/bootsnap-1.12.0.gem diff --git a/Gemfile b/Gemfile index e039f7f6..ff48cc06 100644 --- a/Gemfile +++ b/Gemfile @@ -67,6 +67,9 @@ gem 'mail', '~> 2.7', '>= 2.7.1', '< 2.8' # TODO: Review our use of content_tag_for etc and uninstall this! gem 'record_tag_helper', '~> 1.0' +# Reduces boot times through caching; required in config/boot.rb +gem 'bootsnap', require: false + # For deployment. group :development do gem 'capistrano', '~> 2.15.5', require: false diff --git a/Gemfile.lock b/Gemfile.lock index e0a16c23..e520c0bd 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -57,6 +57,8 @@ GEM bcrypt (3.1.19) binding_of_caller (1.0.0) debug_inspector (>= 0.0.1) + bootsnap (1.12.0) + msgpack (~> 1.2) builder (3.2.4) capistrano (2.15.5) highline @@ -260,6 +262,7 @@ PLATFORMS DEPENDENCIES RocketAMF! + bootsnap capistrano (~> 2.15.5) compass-rails (~> 3.1) devise (~> 4.9, >= 4.9.2) diff --git a/bin/setup b/bin/setup new file mode 100755 index 00000000..94fd4d79 --- /dev/null +++ b/bin/setup @@ -0,0 +1,36 @@ +#!/usr/bin/env ruby +require 'fileutils' +include FileUtils + +# path to your application root. +APP_ROOT = File.expand_path('..', __dir__) + +def system!(*args) + system(*args) || abort("\n== Command #{args} failed ==") +end + +chdir APP_ROOT do + # This script is a starting point to setup your application. + # Add necessary setup steps to this file. + + puts '== Installing dependencies ==' + system! 'gem install bundler --conservative' + system('bundle check') || system!('bundle install') + + # Install JavaScript dependencies if using Yarn + # system('bin/yarn') + + # puts "\n== Copying sample files ==" + # unless File.exist?('config/database.yml') + # cp 'config/database.yml.sample', 'config/database.yml' + # end + + puts "\n== Preparing database ==" + system! 'bin/rails db:setup' + + puts "\n== Removing old logs and tempfiles ==" + system! 'bin/rails log:clear tmp:clear' + + puts "\n== Restarting application server ==" + system! 'bin/rails restart' +end diff --git a/bin/update b/bin/update new file mode 100755 index 00000000..58bfaed5 --- /dev/null +++ b/bin/update @@ -0,0 +1,31 @@ +#!/usr/bin/env ruby +require 'fileutils' +include FileUtils + +# path to your application root. +APP_ROOT = File.expand_path('..', __dir__) + +def system!(*args) + system(*args) || abort("\n== Command #{args} failed ==") +end + +chdir APP_ROOT do + # This script is a way to update your development environment automatically. + # Add necessary update steps to this file. + + puts '== Installing dependencies ==' + system! 'gem install bundler --conservative' + system('bundle check') || system!('bundle install') + + # Install JavaScript dependencies if using Yarn + # system('bin/yarn') + + puts "\n== Updating database ==" + system! 'bin/rails db:migrate' + + puts "\n== Removing old logs and tempfiles ==" + system! 'bin/rails log:clear tmp:clear' + + puts "\n== Restarting application server ==" + system! 'bin/rails restart' +end diff --git a/bin/yarn b/bin/yarn new file mode 100755 index 00000000..460dd565 --- /dev/null +++ b/bin/yarn @@ -0,0 +1,11 @@ +#!/usr/bin/env ruby +APP_ROOT = File.expand_path('..', __dir__) +Dir.chdir(APP_ROOT) do + begin + exec "yarnpkg", *ARGV + rescue Errno::ENOENT + $stderr.puts "Yarn executable was not detected in the system." + $stderr.puts "Download Yarn at https://yarnpkg.com/en/docs/install" + exit 1 + end +end diff --git a/config/application.rb b/config/application.rb index 57c8e73d..f73b5abd 100644 --- a/config/application.rb +++ b/config/application.rb @@ -8,6 +8,9 @@ Bundler.require(*Rails.groups) module OpenneoImpressItems class Application < Rails::Application + # Initialize configuration defaults for originally generated Rails version. + config.load_defaults 5.0 + # Settings in config/environments/* take precedence over those specified here. # Application configuration should go into files in config/initializers # -- all .rb files in that directory are automatically loaded. diff --git a/config/boot.rb b/config/boot.rb index 5e5f0c1f..b9e460ce 100644 --- a/config/boot.rb +++ b/config/boot.rb @@ -1,4 +1,4 @@ -# Set up gems listed in the Gemfile. -ENV['BUNDLE_GEMFILE'] ||= File.expand_path('../../Gemfile', __FILE__) +ENV['BUNDLE_GEMFILE'] ||= File.expand_path('../Gemfile', __dir__) -require 'bundler/setup' if File.exist?(ENV['BUNDLE_GEMFILE']) +require 'bundler/setup' # Set up gems listed in the Gemfile. +require 'bootsnap/setup' # Speed up boot time by caching expensive operations. diff --git a/config/cable.yml b/config/cable.yml new file mode 100644 index 00000000..0a32d945 --- /dev/null +++ b/config/cable.yml @@ -0,0 +1,10 @@ +development: + adapter: async + +test: + adapter: async + +production: + adapter: redis + url: <%= ENV.fetch("REDIS_URL") { "redis://localhost:6379/1" } %> + channel_prefix: openneo_impress_items_production diff --git a/config/environment.rb b/config/environment.rb index ca30041b..426333bb 100644 --- a/config/environment.rb +++ b/config/environment.rb @@ -1,5 +1,5 @@ # Load the Rails application. -require File.expand_path('../application', __FILE__) +require_relative 'application' # Initialize the Rails application. -OpenneoImpressItems::Application.initialize! +Rails.application.initialize! diff --git a/config/environments/development.rb b/config/environments/development.rb index 4aef6ba6..14498c13 100644 --- a/config/environments/development.rb +++ b/config/environments/development.rb @@ -1,5 +1,5 @@ -OpenneoImpressItems::Application.configure do - # Settings specified here will take precedence over those in config/application.rb +Rails.application.configure do + # Settings specified here will take precedence over those in config/application.rb. # In the development environment your application's code is reloaded on # every request. This slows down response time but is perfect for development @@ -9,15 +9,29 @@ OpenneoImpressItems::Application.configure do # Do not eager load code on boot. config.eager_load = false - # Show full error reports and disable caching. - # NOTE: We have caching on in development, to make it easier to test it! - config.consider_all_requests_local = true - config.action_controller.perform_caching = true + # Show full error reports. + config.consider_all_requests_local = true + + # Enable/disable caching. By default caching is disabled. + # Run rails dev:cache to toggle caching. + if Rails.root.join('tmp', 'caching-dev.txt').exist? + config.action_controller.perform_caching = true + + config.cache_store = :memory_store + config.public_file_server.headers = { + 'Cache-Control' => "public, max-age=#{2.days.to_i}" + } + else + config.action_controller.perform_caching = false + + config.cache_store = :null_store + end # Don't care if the mailer can't send. config.action_mailer.raise_delivery_errors = false config.action_mailer.default_url_options = {host: "impress.dev.openneo.net"} config.action_mailer.delivery_method = :letter_opener + config.action_mailer.perform_caching = false # Print deprecation notices to the Rails logger. config.active_support.deprecation = :log @@ -30,6 +44,12 @@ OpenneoImpressItems::Application.configure do # number of complex assets. config.assets.debug = true + # Highlight code that triggered database queries in logs. + config.active_record.verbose_query_logs = true + + # Suppress logger output for asset requests. + config.assets.quiet = true + config.react.variant = :development # Fix file reloading in a Vagrant environment. diff --git a/config/environments/production.rb b/config/environments/production.rb index bc014fc3..bec9a666 100644 --- a/config/environments/production.rb +++ b/config/environments/production.rb @@ -1,10 +1,16 @@ OpenneoImpressItems::Application.configure do - # Settings specified here will take precedence over those in config/application.rb + # Settings specified here will take precedence over those in config/application.rb. - # Code is not reloaded between requests + # Code is not reloaded between requests. config.cache_classes = true - # Full error reports are disabled and caching is turned on + # Eager load code on boot. This eager loads most of Rails and + # your application in memory, allowing both threaded web servers + # and those relying on copy on write to perform better. + # Rake tasks automatically ignore this option for performance. + config.eager_load = true + + # Full error reports are disabled and caching is turned on. config.consider_all_requests_local = false config.action_controller.perform_caching = true @@ -41,8 +47,12 @@ OpenneoImpressItems::Application.configure do config.active_support.deprecation = :log - # Compress JavaScripts and CSS - config.assets.compress = true + # Disable serving static files from the `/public` folder by default since + # Apache or NGINX already handles this. + config.public_file_server.enabled = ENV['RAILS_SERVE_STATIC_FILES'].present? + + # Compress JavaScripts and CSS. + config.assets.js_compressor = :uglifier # Don't fallback to assets pipeline if a precompiled asset is missed config.assets.compile = false @@ -59,6 +69,13 @@ OpenneoImpressItems::Application.configure do # Force all access to the app over SSL, use Strict-Transport-Security, and use secure cookies. # config.force_ssl = true + # Use the lowest log level to ensure availability of diagnostic information + # when problems arise. + config.log_level = :debug + + # Prepend all log lines with the following tags. + config.log_tags = [ :request_id ] + config.react.variant = :production config.action_mailer.default_url_options = {host: "impress.openneo.net"} @@ -75,9 +92,26 @@ OpenneoImpressItems::Application.configure do } config.action_mailer.raise_delivery_errors = true config.action_mailer.perform_deliveries = true + config.action_mailer.perform_caching = false + + # Enable locale fallbacks for I18n (makes lookups for any locale fall back to + # the I18n.default_locale when a translation cannot be found). + config.i18n.fallbacks = true + + # Send deprecation notices to registered listeners. + config.active_support.deprecation = :notify # Use default logging formatter so that PID and timestamp are not suppressed. config.log_formatter = ::Logger::Formatter.new + + if ENV["RAILS_LOG_TO_STDOUT"].present? + logger = ActiveSupport::Logger.new(STDOUT) + logger.formatter = config.log_formatter + config.logger = ActiveSupport::TaggedLogging.new(logger) + end + + # Do not dump schema after migrations. + config.active_record.dump_schema_after_migration = false end LocalImpressHost = 'newimpress.openneo.net' diff --git a/config/environments/test.rb b/config/environments/test.rb index 74450ac2..0a38fd3c 100644 --- a/config/environments/test.rb +++ b/config/environments/test.rb @@ -1,4 +1,4 @@ -OpenneoImpressItems::Application.configure do +Rails.application.configure do # Settings specified here will take precedence over those in config/application.rb. # The test environment is used exclusively to run your application's @@ -12,9 +12,11 @@ OpenneoImpressItems::Application.configure do # preloads Rails for running tests, you may have to set it to true. config.eager_load = false - # Configure static asset server for tests with Cache-Control for performance. - config.serve_static_assets = true - config.static_cache_control = "public, max-age=3600" + # Configure public file server for tests with Cache-Control for performance. + config.public_file_server.enabled = true + config.public_file_server.headers = { + 'Cache-Control' => "public, max-age=#{1.hour.to_i}" + } # Show full error reports and disable caching. config.consider_all_requests_local = true @@ -26,6 +28,11 @@ OpenneoImpressItems::Application.configure do # Disable request forgery protection in test environment. config.action_controller.allow_forgery_protection = false + # Store uploaded files on the local file system in a temporary directory + config.active_storage.service = :test + + config.action_mailer.perform_caching = false + # Tell Action Mailer not to deliver emails to the real world. # The :test delivery method accumulates sent emails in the # ActionMailer::Base.deliveries array. diff --git a/config/initializers/application_controller_renderer.rb b/config/initializers/application_controller_renderer.rb new file mode 100644 index 00000000..89d2efab --- /dev/null +++ b/config/initializers/application_controller_renderer.rb @@ -0,0 +1,8 @@ +# Be sure to restart your server when you modify this file. + +# ActiveSupport::Reloader.to_prepare do +# ApplicationController.renderer.defaults.merge!( +# http_host: 'example.org', +# https: false +# ) +# end diff --git a/config/initializers/assets.rb b/config/initializers/assets.rb new file mode 100644 index 00000000..4b828e80 --- /dev/null +++ b/config/initializers/assets.rb @@ -0,0 +1,14 @@ +# Be sure to restart your server when you modify this file. + +# Version of your assets, change this if you want to expire all your assets. +Rails.application.config.assets.version = '1.0' + +# Add additional assets to the asset load path. +# Rails.application.config.assets.paths << Emoji.images_path +# Add Yarn node_modules folder to the asset load path. +Rails.application.config.assets.paths << Rails.root.join('node_modules') + +# Precompile additional assets. +# application.js, application.css, and all non-JS/CSS in the app/assets +# folder are already added. +# Rails.application.config.assets.precompile += %w( admin.js admin.css ) diff --git a/config/initializers/backtrace_silencers.rb b/config/initializers/backtrace_silencers.rb new file mode 100644 index 00000000..59385cdf --- /dev/null +++ b/config/initializers/backtrace_silencers.rb @@ -0,0 +1,7 @@ +# Be sure to restart your server when you modify this file. + +# You can add backtrace silencers for libraries that you're using but don't wish to see in your backtraces. +# Rails.backtrace_cleaner.add_silencer { |line| line =~ /my_noisy_library/ } + +# You can also remove all the silencers if you're trying to debug a problem that might stem from framework code. +# Rails.backtrace_cleaner.remove_silencers! diff --git a/config/initializers/content_security_policy.rb b/config/initializers/content_security_policy.rb new file mode 100644 index 00000000..d3bcaa5e --- /dev/null +++ b/config/initializers/content_security_policy.rb @@ -0,0 +1,25 @@ +# Be sure to restart your server when you modify this file. + +# Define an application-wide content security policy +# For further information see the following documentation +# https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Content-Security-Policy + +# Rails.application.config.content_security_policy do |policy| +# policy.default_src :self, :https +# policy.font_src :self, :https, :data +# policy.img_src :self, :https, :data +# policy.object_src :none +# policy.script_src :self, :https +# policy.style_src :self, :https + +# # Specify URI for violation reports +# # policy.report_uri "/csp-violation-report-endpoint" +# end + +# If you are using UJS then enable automatic nonce generation +# Rails.application.config.content_security_policy_nonce_generator = -> request { SecureRandom.base64(16) } + +# Report CSP violations to a specified URI +# For further information see the following documentation: +# https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Content-Security-Policy-Report-Only +# Rails.application.config.content_security_policy_report_only = true diff --git a/config/initializers/cookies_serializer.rb b/config/initializers/cookies_serializer.rb new file mode 100644 index 00000000..1389e86a --- /dev/null +++ b/config/initializers/cookies_serializer.rb @@ -0,0 +1,5 @@ +# Be sure to restart your server when you modify this file. + +# Specify a serializer for the signed and encrypted cookie jars. +# Valid options are :json, :marshal, and :hybrid. +Rails.application.config.action_dispatch.cookies_serializer = :marshal diff --git a/config/initializers/inflections.rb b/config/initializers/inflections.rb new file mode 100644 index 00000000..ac033bf9 --- /dev/null +++ b/config/initializers/inflections.rb @@ -0,0 +1,16 @@ +# Be sure to restart your server when you modify this file. + +# Add new inflection rules using the following format. Inflections +# are locale specific, and you may define rules for as many different +# locales as you wish. All of these examples are active by default: +# ActiveSupport::Inflector.inflections(:en) do |inflect| +# inflect.plural /^(ox)$/i, '\1en' +# inflect.singular /^(ox)en/i, '\1' +# inflect.irregular 'person', 'people' +# inflect.uncountable %w( fish sheep ) +# end + +# These inflection rules are supported but not enabled by default: +# ActiveSupport::Inflector.inflections(:en) do |inflect| +# inflect.acronym 'RESTful' +# end diff --git a/config/initializers/mime_types.rb b/config/initializers/mime_types.rb new file mode 100644 index 00000000..dc189968 --- /dev/null +++ b/config/initializers/mime_types.rb @@ -0,0 +1,4 @@ +# Be sure to restart your server when you modify this file. + +# Add new mime types for use in respond_to blocks: +# Mime::Type.register "text/richtext", :rtf diff --git a/config/initializers/wrap_parameters.rb b/config/initializers/wrap_parameters.rb index 33725e95..bbfc3961 100644 --- a/config/initializers/wrap_parameters.rb +++ b/config/initializers/wrap_parameters.rb @@ -5,10 +5,10 @@ # Enable parameter wrapping for JSON. You can disable this by setting :format to an empty array. ActiveSupport.on_load(:action_controller) do - wrap_parameters format: [:json] if respond_to?(:wrap_parameters) + wrap_parameters format: [:json] end # To enable root element in JSON for ActiveRecord objects. # ActiveSupport.on_load(:active_record) do -# self.include_root_in_json = true +# self.include_root_in_json = true # end diff --git a/config/storage.yml b/config/storage.yml new file mode 100644 index 00000000..d32f76e8 --- /dev/null +++ b/config/storage.yml @@ -0,0 +1,34 @@ +test: + service: Disk + root: <%= Rails.root.join("tmp/storage") %> + +local: + service: Disk + root: <%= Rails.root.join("storage") %> + +# Use rails credentials:edit to set the AWS secrets (as aws:access_key_id|secret_access_key) +# amazon: +# service: S3 +# access_key_id: <%= Rails.application.credentials.dig(:aws, :access_key_id) %> +# secret_access_key: <%= Rails.application.credentials.dig(:aws, :secret_access_key) %> +# region: us-east-1 +# bucket: your_own_bucket + +# Remember not to checkin your GCS keyfile to a repository +# google: +# service: GCS +# project: your_project +# credentials: <%= Rails.root.join("path/to/gcs.keyfile") %> +# bucket: your_own_bucket + +# Use rails credentials:edit to set the Azure Storage secret (as azure_storage:storage_access_key) +# microsoft: +# service: AzureStorage +# storage_account_name: your_account_name +# storage_access_key: <%= Rails.application.credentials.dig(:azure_storage, :storage_access_key) %> +# container: your_container_name + +# mirror: +# service: Mirror +# primary: local +# mirrors: [ amazon, google, microsoft ] diff --git a/vendor/cache/bootsnap-1.12.0.gem b/vendor/cache/bootsnap-1.12.0.gem new file mode 100644 index 0000000000000000000000000000000000000000..48f50b22a64ca4d4a3435f68244aac897d7904d4 GIT binary patch literal 39424 zcmeFXRcs|p3@&!U%*@Qp%*@QpIbmjI+%PjUGc#_OvtimWbFxYLw|%(Pm8!n9Y9Hzs zkH;Fz)@VN48rxgAnV6fnnJ`-U0REpM=KqMDogMJM^8e_6<}B>&%m5a4R(1{+4puH^ z763B~8#@~(fSCFJDTn@#cHLdwOkDnR$ zG+<~o)f5zLOjAy2n;E(PQ>#>;+a49uCt6*dkS+#XJ)}BPGwp=CC3=X-4$6b+>zaV- z$^i@Xc*XKHG3$N&o1ZOz%A8e3u(Ms?vb-09FosQ8!r3f1wrigrx+K~XHl~!F(rcF9 z8*r*(0RQHHt3WQZR@mp}nEiKD7W40T6=}3$SX&Xx9F}=9e#Z@BGMq~K!g+k?rzZDy zQmUxdFa`{LkdssJLj;We<0+GBQ&1F8Fi-IzA?1sI>aqB<;{8Gm-sx->(t|W?uNB$ z0!&gr&?N{1Ro8|>Bxg>z;7K9mJSf*g|3*83<@X$pP;`&eNRj?)bB0>LLs_bn*+$s) z3HTKxsv)n414oi(K;rij-(=b^-=zY+Jij$4yGiA25Y-4>cr=%XTV`i5t-LQeucjrL zYPO;gvD_6UH~MhCw{UshMyhniidDPRUY>tA(8&RCc|kWcjy_qX_EdNx^Nq zkIZ{b`d@^I6mX=z;Qj@3iyAr@hr!`8>@~{-$ddC)4oO6kxMpn7X&lFW0bfe~?E$#% zXUPFLT~-cpC`?UQ#^LG!DB`8Y7+uV4Egm5;^Acx-We#OEA19)YvX`EK0z=J9(VXTq_|4DADH=U{1_BQueJ%N?gtiU0c)a z)kd_jf3jIOteoM>8!={! z<4}obfhX|dzQ2s!BH~NdO3$B6rWZ&sLCS>@XNa(qnfezc#YS&$Vf?MpIc}#J@( z#&j_Z<`smX67;s`E~&mMtA6>#{<;deN8BA{1iv;FBVKNatNiuF$x9Hod&ubx7#W8L zcj;e#4l?({fO@b0lRxRuFV}u*7PkS%`+3fu_jfc_7tUarPusNgYmZ1A?+WC;PIZQ1 z0=^rNIXVmd0mji<0p|nr|J7Iff1h9f8}|Q)fd8-IKMONE%YQlHf5Lw@4wnBP|Nrm1 z<^OX_{{#Q8`Yv_1q}!SK2mCQG*p@e18A5p|6sdrqiiZN=8<}q9Tq*YEdXOCL$4SS? zlvDh-5?2L#t9@Dzbz&M-vdQtTXZbgtkyhnks#SW+PVaGX+(Z5KxG+~D)MOiHau@|i>TE6S7c@=Oe@R9nWe1x7U z5A-s}=$)usU`TK)g1Q|{sntoN;DBcnxcoJfhdd)5)1}5^lfbfYxMej zxZWN+-Ck|ppUd6%6%HtE3AuOY9hJbL7=^doD?jxmBO4;mF*b;!4m;k{KZyTu2A?1l zNd>{sH{T|F9j~ESX$92wKT$11Q^kZHx;VMtcwIo<@!W()^_g>qXSoR|)!NkwIUUap z{y62$|MO%&j}6AFr8GrF{90tFKPfOIHtf7#4Zkaf<_*UnRd@cFpvGxv4;f>?pWV z^wOBb2i|{bNJ>iNI>bS+TDzW zW4WjF7q%P~KAV{^aGq#A=p-KQ#(TxgaE3?;f*9*aX(G~}=(Ovp*xZM8f^piw8^XB< zu|Cp^4^_~mp7T7TV6;0|_PQ-M<1)4jX+po5bd|k65!pe<$SjcKgAp!e`v*j>q@_3T zXV_haQAbN(O*%d->gG#bhCR}K#^C_qt{ys?9iH}Y}5GW4Ok+1K?4J>_}WY5GwT_T&0x z74-ptUnMcFp?c~5%$v)Z)<~8=(kyX4r_yTa2XnQNKm1MOR{mWl1y~+;<0RzD#=~31 zl`p(S&>xiqtsq(t;)HU)P$naHZu~ zkKd(^i8BBzAR4+fZT=CUeErgW5jUJ9A>Qc)B;d^mg=#W9=zY{{E?NX&5yV4=5($Pp z<^$Yl2@PwE468llR#ZR)*IN>^MClMmo$bAlh(Cq>>M0iL2@`P^Kz+jcm%OouQH#%w zMh_w!O@%h)fepFPa@sapaecIgXll+U4frgYC?Z0;&I--`mey}QLF7Tb^%2H8K<+w% z3qerE=64e5P7%qZ4vWYdu3Cvrev8ZWb4J}m4C+M?Wy1ABEfm+ogx3ZWwzv<#_F-wH zgrcDZFq8b{x&!5U5G$3K>AVAc{8w)E%1$BfgegMZ7(fe14Z@cIjEMPHax1ln=T)GY zR%kh(PE5Xhl4nj)u5918*kfVB}LQVD^~|QM^Nr?ir)?Ghyg4IvI;&M$N0&k322ga}lJN^z0-^@I9$Y_^2k$}Fig^hKyA=@OdJx3)<4ET}sd^DBq-_;Y zUx{{(O5mfxkaNX%^@MWAnEyhwPaX=sRwxUWL9c);Ja-I&Mk5_wP-I&t!4&cZi$#5! zsQL)WfK-N~kIlDvb>M;#5hZ+XkibyfV0Ws)hnfZM@;NetJ&_|{MT)>rq7-pQ!e4?? z1hH@)iR}pTIuPY04MO{};K2iamS`HO!Ti8+s6;ccPuT!Nbm?Y*^PJZXnDga|s0?Um zp`clU1RYDKU<-wPZ7@oz8t&Ch#PxW(tiZqsKaOE5Ekj`8-ke!7x_b&EFp^jAJhQkePrbi!n`;gOs5y` zbt(GF(wt;KSWvtJN}_l_htOh66-o=#2UMXIYH<^cU^WC$3>z<}y!eY4Uf2%CiBHPx zHJK_VB_@JJG3g1s%3I$j7)ljNco7uhibGjNAJY*eVV%trlm{#%O|UrF>>kcKv$1XRJCT1HH&+54^e+VYs*LCjZQtdoOko0c5}RztQX@%4 zrmr{^6S4^Dw;UAY(?TmEN4S`_7M^V??1w;Bp*@VD41^T==j44V9?O8O|9oIyZL^O*)TaB_8F}sC1FZ?M zSst-wBuaI`;1c%vvCIkEwM3;-w-@8V@A^kKg6 zR96MFtEv85vbdFm8x(P`kq>-|0RmcqcFQLxxJov$2r@yZpBn&%DmyhPb$wwOV*_N%!366+7uVGxoCW2ltc4a&?!CKnh9evd?Z*2BwTZX%>kad6v8 z4vAe;lko&01?XvkltuU;8zigLU~zJ}ZzwOl25r5Wtf)pQlLgzY`SsH(rOLMWqch$?4A1|=Uk#VlWu5SVuz6iea)U^q8);ZPo0 zO$y?`-FTM|mXbd5cXQ)c{Mf`{5fTwZKw$yd0M}BL=!uWsRBv{nq>GBH$c^vaL`vc~ zNXQUNa#GAdPZg?B#v9uMh!bzIeiAw~HuVqF)8KE@zNnNVE=sz+E~c$p-X2~4X}aD< zK_qMNEY!pkaM0btQ52Q{2kuMv4dfdaDbKEw?y!76N;%;;5!9~1kp-<}DAO{0-KodA zH9F#s$@~anXBnRnbbZ_;=>(`nI!()@unv}qwYHePu9h;Z_INhmp>im!a%UJ=yd?I* zoF(2yICPLQlq<1VFlPJGtfj-CBjf=P6XZ>=kO(AYqzHcetKDobMAClssnRO4hi#KQ zW^_+n^?vL|>EB=0rlnvazvG-4h~JX!K`D^K#B+Lhqx|8h1uUFe z^Wa!mQXmYwHNCR?=?KX5OIeDVYt;UsESIgRg_$ST_trM>Lc=lpDU|}_QXaE5Uzg&B z;y2C~UUx&es8LQ2+KKYV1kwVk(3Vf3P)W(hpLo!4nJsERkbNChP#IM8iPX#^^o2W^ zJa!<5o}Pvof+nBERd*Nc0mjo+FBu);G;u~ykYaVIjCqfX8KKBwo4Pu%Gag-MZB;c( zX)+~Ic2pWfcrS{8(wv3%esYBD5Dk8_F9q@DFFCv)JEH6eqZ4U@5E&mHA#tL2N#cB> zDHeBjF`uc1i9%>9=03h3Y~Owz(!XeG#$x*6$ZkPpsw50E8rUaPajvog%+@VDV)si{ zpj{hcsyoi0_Yi0KR}-AM32|!qnS=)WGiX=hn$7lmU9~auO{uXP2L=%E$_X)?Tj+ni zvm4aeki~dAtJ%`Muo-;#4}66v5H<&%o$y(n$?~q)nMb4_0gC5vmlN|f{W-G~Z@vJH zVv7pss7+0VXtDpfiyqPl! z?MK@km35(R1@UYct`h22C=&J0{6Fk$eS8Qq91O zu}$%ITVod0$Z-Ic4hf_4Tj)pk62k;8tGXBE>-_zq!w%T1_9a|)X!mLmA$ zVz%E-yYB5CmJHFyI1RgLr{=Mwuj!)7Z~j^2Dup{<&CiZZFF8aTY_A| zAM=prN?Os)#+d9r)~60nm!BrKDC|COdZ-6yK2~7NO$tk5BXTOIA2F zzBm+SNRp^TIU>xV+pS6=p<5-I3+K@dRHdGV+K_za|M*%pC~ob*wTOwsKQ#v}6q$#| zl5HT-6wQ}!%K(Z=Ly!>Zb1vJUG!#?L_C=yt$tL#$X4Wjo_esIOgna1yqn4uaUjjj3 z>sx;qDE%6M?kz!$J5oFHbP?0M6KneDJmJYaA~`wnn`AIjXwWdVqI%IbriX@)AdA>M zCSr@3leBU&jr}?I_WpnglEuFmt@{qB1N<7l&giN0iX!2&=O~;4IG1P<;?e0hkTc3;B2Z)qzU)hCAi(F_F78eK}Td(A*=tO@*`>MAg~uX7$e}9O^E7J$){yWUOH|6 z%O$?qk&pqddQ11SPv~wH?3=f05_3qbqJ3`k`;=1oK(eSWm@`BaHKn>r%QEgnpWtk1 zHViwetl(`B5gbWLvwl&d=3QHpdFWhWkZd~;IB>P=R$>@WQD<5u#>NZ>?)$&j{k*I> zeuvtUtYO^zAi?S^FpE$oVZ*3hqB0Iz-`+cm-9;iL_Dc4Cf2tx`P+T5QPCM`AT#w@w zC{ozf_7E=D4;idmT}~5U%t6`lpR>~ACPA+d3S`2r3K=poVZ3dE=L#vbrj?u~6DLtr z#6?ig(s2@kOc?%b3!7sjYZI=o#L*cD(swh5n^h|oKQrUc90N)6_6fZWaD>o{(#F>( zl~Rj@kX5PG@=|h}m5!x2*O?Q>K5lM2%>1paV$nJFH=wJYckKN-+tO6fr-r7QsXf_q ziUl&C`ssciU?=gJ)!YP&Y6QD2E8=n?qiKAd;U{I)vBtBI89-=zK?|kg5kd(Zn^6~RJ88o66b3cx|?+;w;Hp!Ya>kK>d-fncihrdfk?YY9gIrZvs7b*BBGozfNw6s<_T`?9 zhC_xW{+_?&J{bT_ntZshRFz*Gf`AULR}R%T>b{#ScVShaVp(v#F!_70O9r(mRHqwP z82c`S1Wo}*A)DL>h{AdjDkhZKSHdF{%YO@e4T6H=RU{Wy$kvW$zZvf&!8}4sgF}3~ z3Vla~GaD=S%b znfB%k{I5H{$M`)frfe&Qivpo{a$yo5qVGCwhuI-p#zqjuv(N+2OE&F=&vrBsAtT-w z)1Z%-ZWg5CBo9MWb>c(~0vl%?UaIUrWj9j=HlEvO9eZ=%(z5PbVZV4Dld^nNz+2cJ z`(TLm&A2{#Iky>mq-6!Fn|ni$_eKA!AiA%lV9bb53W{U#dkg05#lYE5_oA1d=c@HU z=hXV=ZdK&;tjh~_kAMJ7)Dw_WwA^AA3^rZQd(G(a((K>;1Nyz~`-kT$_e-Bn;4+uM zq+tG+(pWzCCZE9N)d24{9|l!}qSCJ(d+cvOx4;Fy0AIMuAEqrSE5tb1dGSxGH!(M( zD+0np<+464=1;ZUf(;?T_xIMve`8r*&VF7C5s^w;%q@Ktk@keJm~DZb>)twOP`*sB z`5osqW@jg@VY6NyhtIK`g2VSO`+=WUc}HaWkkFD=6?aw$n%+L;LjF7F?Y5@3t;-TY z{ColdI&>u52eD=s;Qf3yu1wH2CfCsHLjy+cTis&L3%h(_{l>n(YOh`U@9%`(=7GMq z`xc*C^55NjKenD$o>U`0IefG6j{kl-rhb;vyB~c|eZeUI80-hOc=1#q>e4J6<8VO+ zl-wdR2~Y+2>KNRZWk7*PlW|}dOM=_zADhxsUmz~u$C362*A=}tkGJD%-UqK{ejsPT zG1*Mkl`&4sE8yDiDzLzwGw{({P^Qkb@CKsn28qJv#)Zr*SiO}uyI}0Duw?fA(r@}D zS0<1ChC)@9Z9uy^_8v@xG_1oufyJrrxV%?Q9JN16vkuT?GVUjYBB9kA;LDRd;0pvD zM#^&RSpQKqyJi{gZMm=85V0J934v(#lFu$deuTlH?2Tk@I0^!1##R|cYo%*S!xMXL z`qUm5_CYrQBIF~spD!@u&G~a6zsQ5oRccQgthQsQG?*DNO037J+==ei~JC$cY(F?E)rIS(vv=kmN^c zVT;7DV*R>Sm@Jpt0@rifrr0JYAk@|4q-OoMeOPb6|4M280l9d6cnHd%LUAPnKD31wwTaTba4c(Oxw{c z8BgZF-Vh^8^n*jKZGq$WvGw`ML2VGe=gfUQ@eyn< zIAm}Eoh&KdJ5uoHH%-Vfv%85uxP=0gK=R#vT4gktBC2!6I2NKO%|pz>)os_**to-e z{}}*{2$68x6fS3sTyCFspXxLWWDP=GP#z9n|spYC)(Viw~$U zXmaF`s5RqyXSNbozxT1k6Xov=6_6J}G42~WgR&QFgSn=JyO$>y z7gETB1DFSUD4T`o4z;7zp)Ibf&75aempk66BL+G!pJ)({@GC_Gy-}Z*h>^Ixg^e4I zR&EDPQ)XUUqO>TBrsqydrxV}7K&2fodEJjs{q)9{B zt!jA5B>SMMezRwQD;uN-;rfcvLKcD&T0n;&@t@TRjUF4b)s>bP!!JA&$t{z}{66ce zJ_-pYV(G{L$tg=TK)2kWdpxBQLR#Oyo?B6%;unwHY{h!JUAJIHWL1S6rf1 zT=+oVTdL05{ukv0p5>IXEo+FLC!0c{m^P|jDKt}i2l=`i4QOw(Yv?0|4iq+6n zB+3yEBP+Hy(|xGxlSNNc3jLw7WOd>|n9^jh11gUZx5K9z=~0d;XD|2T4zB+SNPq0D z?V3oiG1MfE9OLsxD8PFu7|QjN#55GI{4tRQFa|z$aPKM~D{115xfvXGbeH^)X3RBqrfo25ZHye8}5R|1Vk^&9+HAxQ1#tJ>U#*8aF zlycw_P$hNRw6OlOz8_38k#wke}$ZUP;o`85xkFg1JjQJ+VsayUhv|+y0xj zFG2M??ak7)25+XIt9P^)YFIPv$zF+Q{n$`WFj!7vD7zZ2upPb>L?CtW2)RKeu4$m% zSj-M<-i^Ma$}I8^o+S+1v>^cvPOy^5f;!ZA88W}yG47wFbd+Z2e+lAW&f%i=wqau$ z_k^RCLH6D!0s`OEn!87_2^RNBo68Ua736{Q74ZYs2f2(+MOX|o&m*anV_nh=h5XrY z0&s)tzO?oquu+f35g~RmMJx!$N4GkYS?HVZYEeeqhw)ZJ7!v0HIPWHYivVyRrU7r( z!6IgGM?|QrRO67;zc7CkU){joX7a-y* zSZ;|)$WV+i>c`93DYVT1i~zPf3=<{a zZ8b541)D(KO0ERkHxd_+71ZRcBMTnB-E0NRDi~eBh`y_|4=d5hYf(NtEKBpr*TID>)lG0Q2`KDm*@`Rj5<% zN&n*JITc&8Sy2nd0mKT_E{J`RKhkL`kQjL>D*CWa>ks+ydq$D@%0mNYrFA z`mbKT&i75xt)b*im}nEr6Y+t7Cs&!qK<638 z7`^pesw%kls@)m0!Jxc&Yf2#yN+t|0L=2USbKSGU!?PW4w(ffNucT`q$nZocgQHbV zf0O@!(cZ?L$0ZUcr{|?!&TC}P7Se};r_){*X%d$?%5*v&$xI!H}4HCaY6&->G|X`6aRF1xIo!>Ib3LtLP{b2e zlBv2Wf+Q;kkSa}n;r^EToAHgjmV!J;zbopXaot6e1H)MsqBW{b`iOE}(ik1OOB5t0 z*q>?EKA345KALqlJzkh~O?h1}aTOI@3OAiLHUzoM`J|X7wgi$^0}@{}9M20@WKrb3~- zBTZ1IH%pd?o)@KxuDMe1sU&`+9Fx#3w}a#Ez}~ij81PWVI~R{ojrfETUj&1*mhwKqs9|QZOWi6r`ta1hl-KgC)zFC%8`ebNUKTkS$s;A zBw-%O9$-I2&i`@dzO5gaYevn-dWqFJq6BN1b$%j1XJ-Xt9fjc8mUCZ$lo1tnxzM z(;i{XvR#sk_Y!zgcbCFoJ##sq%BC+JA9wy&XkOAvW=Q86t6%9-r!s18_(|4p(@P}k|Pb>G7JXKoXCcR2ft;1nKh&vgFg5Q`rRnjH5Rebl?)AUI`b{=$uBX?$7Mt#k6@wT`opfS@sY(tI@PL8-t7%OET zZoSWAc#DTH1sTBLL~vJoji+HvSJSJ{A(!+na2;qGPeI|^O5LgI2!cuEJE}B#g6&^9Lo8E_n?g*tgI%7Z zQKpBK7+2VRTjk=agrX-4_3_BOuwEVe{Dc4{V|4w2bmB|VTET$yU!cO56yIZ>{+dP~G6dg60K>#&+3 z$ut21o3(c+%~4b?+>4V$gYUlWH;-me5}lWY%E)X%u1;v0 zaOvkoBO7DV!0u9i?fty}eBb{3BYG=vir@RZ`}~>QgEFs^|4EmGB{lPcwiNYv-OhuYWr!+^48RZkJDY z%IjI+&_CC8$m`r(nSizIPxkO@s5X$I(!6G2^~gM-p`R~%cx=hfp+h~(LCv25!Hu^# z0IlgQ!>e+MR6IYYKj2-S7O{ea8|LdA6Mkr!iy;AMT9Z%#a~n0A+DDph()9@Zm$Ob1lWGEfYc{R&k_nE^J* zRgzz7F}TNngEJCSqD4jGll>Zd%qW4;%((@{+lQ8dSduF>X`iLlzO@BCt_zFOjKNnp$A(z!j0%->AD)% ze`_lpq4*6{Xm2uN^u7hmtNA{Bn@qs;=1lLNKNeIMUW4zcjs+wL?e>f|?$ce{-QoQW zymoN7zOtPAdAWJH>3ICn`^UZ}3wkN8yn@j+Xz@mo{@doD2SLiM;Vb$KJYY!;JA^6w zK|<(89*H-+*%z1%$l^-_L3}&hZ|Ro8mjii_X&R&!6usqFcMPs|3X@U#sg~ozIgg zwz#8hz7eDOQA&p~=-*ng%N2cEQjvKB?MQ);1p5AV{B^xGuy27t2sAxOXhQvELa4SX z(eF}vIWP#^rAE*$x)HufL+W@dd|-s(!^(6-r%0#LUmQdf5wc(Xg><5FJ>5W37JJvF zy)Vs)vt}mH4>B@ny%-x0lde<_>nlZ^p3=|tI1tJSD5DdTZPh|_P>YHT zS?ZUx9D!Aw{dYE$g%@%jloMGn8qj5zrR1ay1DruakI||~$f0bP=kr+L8!M)YWsMq7 zUFOs$s@f2%E<>K*i*pbnWI`n_zdMsXFFsF>&xnY@q@qR=vM&yHf}oSepwh8IsS1ZJ z^)e!QINk=vX-{c7TfLsipLcU))NUN98{(>JnXAPNA6yQ1q@_4A|8mAU3k(`E3XY06-D!hJ_%-JDf6$im#GKXG(ahR_X44ty=cXKLRDFCP zHXNg()ZFQeWJXz84dn(FKS%d^vxv2Nq1)1bUv54E`pS;40lUx`<1HWa=g~5nQ=-0! zG0z=}`|#Y3^~6n1BKr+e0Asa$7z6s+xn93_ZqSeu_BD0$D{14>=>|nicyFjX%U6jn)#wEKacY*_bqSXmuPj!MDJ-eX zstUBxnL^&rYVSNacklJ#8*!Eo6JAf<4~e)>kxdzBqp#0(4S}{DCwRu;ILohdD*)%q zaZj7L*7LpbY3(M1sHShf#E;DAd*LMS>-;}zM7@tdRR|e;=2eq;Q%vRR9e3;n-8o( zi>)}d9l+vuK0`$8gbVRXE1>^SuRrTMRVy5?*@m?C6Iw(;RTgiQAe(o_njn=`x(y^g zXBV%6CRXmPGfx}y%2ih2A~dFBHr!C$oIJEF$AK`(w|l8T+H~iZ7l4#GQQWUm!uEgw%#srB zYVDK=mu@pJIR4Qk_&F?xvm7Ow$x}LjJcSM>)TqC8jgUwUjFsWD!KAFU7UzX`W-F!o z2rdXj{tZRm&VVA@($W&!6RVXVAu?TzvaU|+ohu@3qi)(=|L4iP4k@%-ORiE{2A0UQ zEJ%M~HPY=I>|{1CzpckgxMNRq4DG%kHG3EJhi3DBLUnQfh2jKL4#xxTMO;pJ6^1!_s`mSkWUzgH6oQCu}9#Sh86|5UO z_TZey-Mu~kLRP|AapWA{%&hEvD(B5T-XFhOdNbQRoo$5Id=X#qy67lYPrDgDwzmeH zR4wet-}FRE)2$(O^*5_3o(cOPV81EDx~kUHLj%nM>~A5}#+D`;UU!cvOtUeg0Icb6 zM6&>O%i3-+T7!DqOF8VwfmJeklF0||QFNz+Sf5BO{9ApR9D&pto6g_P8=eya7)=`Q z4qY_NiEyignFje^3r^v)Vo*mDiUl=A8i5Eh5G_XoJyffqf<*=AYEsB)BpWlGtS2TwBl;O zy|12D`HAPB+Sbglt9>ay^1e?RJHd+Aux@MaUJb8r8!ud7NFt_$~F8uBgh_2l_L#5>sv;cjqG#DFX0H1JAUrKxYNQ{NW^ z3vsfj;bh2_>|aN0g&MJh6cyXgX|;F5Q%}<6Luh{xGO3ahKmk1|9&3I62#mlE_NBC_ ztvJ1xn)k~U6PB0K-?zOPR!T))lWmebd5KZD&^En^Ozxu7H;e|F4Y<&(w!MAc5=~?6 zjl|O3k03eq7a4uK(|x(~eYtaeJ@+qq7&u76Zq|ew*P)B4gz99n83b~jC1fK(?yh~+ zS+;a-ZU?w~S=$x&Y1L9$jcM~A{OLJ4oV6xyq$J#}LYFL-JD^3(rS_&E7Zk@~E5-%c zm~t)P$I&+KaSd9kxEdt$&0UBKHcs(RA+-qeldbZz0@dKs5&&xPa??cU+Nv zXGQw~N$3PPs%?teNZ%iGu|$2J6b;zW?PF1|ng9hKE~G!WOY{En0&1JM+Bw6O@iZ+R z@xGgH*_@@^S3DLastCSI!N-hT3TWjmp8l$RATtoucNVJturD*y{7lOuvIJ@naI*J{ zn+>_b6amVTa})9LmS(QDzE-c_q3#_*fU2t0rnK|`3q2qq%M3!vEg^2d?1SPf^&TX! zWxHm2F1-@$picLf@(UH28#6qKku-W80 z;+U?(EEvDkf+5g1iN}U&og1Gp;J58k5-T#H&z>c}nn)uaP8Z3nvwc5yJiGf8oYX&O z)Jps%^V6=`lv=)Q>n)xO1UdeojV=>y3O=q_&y%ojzC5A-$voQ_|MvrwPPZ2hFB={( z2hZkPqwtRi^4P$mER@L@7Snq=C1%cIqZTU$jF=oPqA0Fgj?q#>RZ97!sU|`;09`9* zQcuKHgQpf)fi|EqqM0a6@-=(wPZ}uY2li3gD+g5arPX&*^v2nwU5lSO31upz3X*sn z`S*r06cKOPFX|WxkN1YUtmm(1ywu0>yM}Hw4WJA)^G!B4s7$0)ELYpKV9n)Dz0zuvK;CB42-tG|%R{&ZfCP z)68#1v(9pv)%pg^gkKdxcu6)=hI*hY(DsnrFfe&XyXQmqiwE<%5Mhu)QSRa9wwuoT zm(8T)b=#(AGMlPfPWtWrwQpqbuNQqc`1YL6&4wXKJQz<@M6dZCzg`r*acP4z6``?2 z~AIq?h~Y3L~Jw;tZfDAKsBoPZhFBmX1T`9OcZ2L;{r(THQHU? zzuv?0n2eEH&1UfBFNd{EP+&#wrn8KqNzTr(8bi^;j0Q0qoes(9e#sZt=d-uJUFn!L z!0~_&&9$2*$U81(#rJ7@3_nMPI0lS{2!s(|{yMs{i%xG#`)6bI+xY_Tj@Im$)r_Lm za7tsd)ZPAUEOfGfGSwlj>nD57*};wA@fQtXXBr?=hl>HLn^0k5tofRs6Rlh(%XuZ8 z4E0NEZVi!)Je0P|%m`+!CqrE~ZMc!vyOR8xJH0GF?K>8Qo81B@#&2p8)@MQ+j9W7vG2Tyg zB9rz-66tah&XCH4$reSAd)E`&P1a2UL}matu(;B0dW%BkFv%0weMqv^-IKY$X0dRp zDmX#3LlkBBhvY$(z_7d_RlLI!BBT6AYOe&&Z&ZQRXIK_8&%jQ7a3rh~{(Nb9P|Z!Y z-tYGA&TGI^+|-w02Zj`x$6=be1JB~^{IqVJSf!vf%I(fKAJ3 zhhrU=IC`XvaeGI57?WRYi5WeFi`Yc{aEzOF`_Wo{V+4w0XehxEG&=+zvvMA+c@ji7 z&lc|)maL;gYSS4XV5YoWz^Pwc@Ww5rN4Z|B@@O)?TPjKKN`6Nqc$>MHgzd=?=lISG z+AD0z{s7fK@xiheFYNwtfE5Ve?HXO(4t9XIG)sfFPr>`+h`_*OOW##BT+-jm8b2eF zIj*#4_H5o8Uenb#f>B|Eog|g+?l{c(ir4!V{Beq!nE<1^6LLq~h22@%pSGnOM6q3@yT!gD4D?enwawgY^+RZ95T| z^cP`8`n~;zqQ)uQ4FIi2YT);*8qu#AER=G19R zVK`doOvRg5F2YdN$I@f$*b?|F(+f@gst>dTt5DhXE8avV)M8OlsCCqd9xmIMD|$>B zh(ljQ_AyN<9-{7RObq9eK@@X4kb!`aUJ1jT4;6ZDFEKknd5~fhf$o2A+$kgBu7YL( z72x?TDa1;QQYi@*g{N7ORgH&hO7nQntlq1E`9)}K?<3RJ89?bS0vmlLjzmR8@|-j= z$$dV}$U`rDj@syl7zOi749EdD_gYo~8D(Xxvs%%r{FEFRYSp zRWj@hsRgiit>V+uTV*23?#|=8v!Zq|HMI6cTdBc-*mz}_)PNAyCY}u#>X+B3hP{@#1bl1)ISxI0u8pQ+(?6_LK8hSV ze_d)vXgO!tMhGrzI7Pv`$O8(f4x({>U!i=1z6gJ=T@3f9QsPU7n5kERZF*6 zlh|z`jMuO5IXYd?RFqV`-Vwm_bF{t1nLLP*9?oYig~i z;yh#LvMP1t1^TL{t*a``QhBO%o*kNABYKx$FSXezx1+N&S;@W@s@!cS5~e^W(gj@d zCS|Ws3(SS4-SRDW%3%F7VABX|AUEMh5P8vH@hZ)Q?LZK^w}qo*+aV;*lCk`5HksMp zC~T^3q|Zk`5UbOfGTd+;H0DtYlfQ9-%>#;kC+VwfMx)1eMVk)H@lBasi|?j=F~F923RslPxi?igD>Q7b!+ z(u(&$_x&WDew`y7)YWN*{aeQCQB~GhUILDhvyS?(Bdr@(MApOBz z(`7r6YOS4wBWWo}b4XQ_=gO^bS+@8d(_)y~L$Ic7eawoad2umIu_h5r%R2Eqmt0jo z-sS7&u$!?2mZmICknC)dk_`M|=(q+CRyN`^ai3H>^nq!QJU>Vc$AAJ9SIuLhwp$Zf zKjnL_qJrrcyk_LIj(+qwlFJ0nm10(BN6_P;z$R3OL#r5cuhuPU0 zmj=vt4VyO$$T_EYnRC4wN98*c@fS>5_x8y26@U03@^8q#uB6LGDh-C$E$axd=Pl;a zDm9jd>N>O8PaLHg$@~pnjc!ifTQ#+QU^po7B;Z1s%*^6+)S774#GEBQNt01qX*Q_} zzN#9Q5qXK22`xj+&TVrhhXetI$?X=Cp}m%M`h(D}r=&9JDDER15L#i`Jd(%wdQm?U zDy|`FQ=)8Wb_SDE3^8m~pSB;A4QC8$8h1ZuujcK8X$RIOq=Ip=iVqjYOmi`iZ1S1n z`+5^Dw7!bEhIDKa4@Wya-^7SHAh)Udj+`Oy;Z&EuN|dOHid65aDO?@H?P>dp zp3d(wPR`u1rLT<5viZ!tN1E&q*_3t)g}k(oBKJ|cX$>k4ms@MBYCwm zUHg*}E-y4L5UIFwr+C|ytaDH39lN(k@Gw`<9eKu0R*-J072B#@e+%}#9(10tuj zr^MJ|`ws8Lcc~7YCyjHcw=l%#yc5wd1Y}0j7+g@XB;!9c3xzDg4Bh3jI3TGMp|>}b zq-_pnDEeKX${UL?t_(S5@lxs8Q3Q;`8E2Acpd>U+jai@QoA_>|;WaH&kr z&h#51>SrNoNwTV2c9Eu+Ef~GstzGa+3!LYFG&Gmq{rJK6FSR4&O#p29;O@ha#1-ji9P8-gSOIMX9?C+6UUsSrOE1m z1&87uKTu_`J?P{&Eyjm(}~#ndL4O{DQ<0tb~-n`(Uj zAuR}6M6)S>4`&(04IUnWGuIz%3HGKCXTz^Z&SyZq;8Mh@ezP(AAiR;uTS*R9X0*z@ zgZ+t7G2a!1#oUF4ve_2}&)6udXZzW*jS@iqP3O{J-$ne>T(b!_O#Sr7K;FEuXC0UH z4tFcNiN95PM~41O2pZblEExO2wSli0?{!00AC~o2T`XCP9Pw68iLbQg+kg5pE!GXV z_`EzXaBxW+l&OR>K0q|VBP^jsb{TaeZ@>|cwz!yvq#PZ$kF1cCg-#P*UO5d{nIk2d zK`Z|*{J=w#lcKVy0B4^C8Ls*)y%t>0UnMgfw)c)+oru3Hi-8h)GC^eOc@@o7f6v=Q z9@8Y1xTc>&^S@_p5wdB4Y*&(t!Du!)F(Yoxv`v-LUCA^~%}gvD-Nw+0%qpwsO^qaxIsXtfCpK=(5(vKdzl|k^L^OYkbr2 z?LGfv>GuCg!sb`d?M+(o8|(ITV850YZ=c`aPLnp__xkfSWgeML;=hKnnn{JTr*0F6 zKcaw2WsX@iozp{VixU?E&`Hg46wJMB`6kR9ZX|f|@46Op{z(>Ms6_B*w z(s#D;ZE(8ix@&$V8`osXLac0#7rEd{E>Q|Fim&rUY7|9BQ9YP66IiKv9tShgC>(i5 zL-6XbY6x{+(YfF0Go5I;Z-nw-q9Pn;pqF%atf!0fJXE%?nyMyIV(LhFjT5{nZaPkz zb9RfK9R-=K@eyd)GT87TAtmNKQ;UhDv zEcFND`}$)oC0K=j$@IXCA(_<%OlD09hLbj zOH-)v`6Ui-)U8N;!%ik)(V82|4irCZSwu}@P`H;h!7!+Pr)DWDlz3+LpIllBP*p$Y{6$b*08C|r8(fcal^z%rv- z$IINWIfpBy6m#yu$gd-wyN>v4tV2a`FJ6eGdPRid*T2wXF4fQ=(7!B$-wW^<-pZ-) zhiYCL#q(*0TZi4au`2EjUzv2DQ>+2g^>$&@%H+R0>|NNWW|1K}keR_O+ z);-!g>Ald}X8K5MP>PbO^T&6_X&VCjP$-QMb#CJ`c=7Fq^*_-0hd%~kFmj^)Z+ZSV zwl?zjzi(}RJO97Q`A7ZzpI*>o6I^eM)%V?T3vX%mN~OsA$IOqsN_lcU8I`N05}a`= zUEV%=-Z^TcRgkVbF9VPK^Zv8Lz2{xLNuVt1$D1PmFiwV#1`i&TDMMNCJ?R)f&joku zuR)ikyd1KG(M8JiV&GEwe)xnc!s*+;E(`otYXA@+aeQ*kL4dFFg{IT+NbsCH6LH?ryMIO~G0W*CIA*jRTqwm>SK1wlBc z8>&At3x@S1y!L{6JO%Wt_iyD~&;%b0$uB}Cm)^v^_Q>#B&WS95o3eff7KC*;*)X3@26tlSEl>R(f^H&?d`1m2Y)ob z(f{8M{qIHIn9`VylP3$T!oge6s6QihZgC?FdM7Um`&Je=R`pj^(~`W3P&uYbLS1&f z52B2JIg4Bw0kc1L#0oE#C-)|3rmb;!dFe$= zq)}RizwgNaDEz?T_b|qvfx`hKaO9PNEl@IJ<|2}k>F=TaqYD39m0kU)yOHA=BV;m3 zP#sp?IIA2R{e2>jP0__f_Se+aj0RXe69fZMy$N2rXS%KZ2YlY zm4RIx!oEbGWXV{zORN@{1x#j{k17Khn5bct2ZU;pM!i`8nRk(0jZi#=R1uhs`^fIy z%ZyVvf8#DR3r2Hh&j8Ccw7QIe4^QnJ9AI26l~*%_ugBpOyTtqBJU+SVZRTj%FWp%Z z>ISiDfqrb&w;$v3dmz3H>^Iga>|r2|-L?H5bK4ia|0NCsNpUFcM>djDThTNfn9CEr zbvJGli1PVC`{cB}zjxL?cw^oPcTu>`3n5E8V>&Zlrp9g&3YCx*A|nq2n}-faD}OJg zHJ8hsk+=v0$7m?ED@iwVobQt zp(5Q&hrh^YvNnP@%)&uW4drNzZ@Fau8db02YXlJz6i&|f0uH%gtWmdt(Gkn>8MB3# z8GvAr0a_3*^3w${k47jqtLYT4Gjo)6=V>6wA+*4&5GW?YvFJuhJFtgVN=L-^qTH}J zF{K{WnZ4GG&+~*P`y_2$&99(1UL`xrl)lZIqJ&>=f=q+*&`nz~70Oelv<1_lJZ(}f z3aIlUG?PZ-AB)=Hjcs@t@kKcw1b`XNrb= zWcT$$zOOQ1pR*238nfcewvQhbHr~O;d7!}m-Pt(l(dKGYz~qn9Cmx~YxxZh zB%kg7HS>u6n#1Lwt8=NxgF^5 zPL0;GQ~i;7*hu)qhrJQ%?ov)6xr^czhN1W{hVB1gd<6U&o}>#XH@KTdxoWgB4wX5H z%z#$6N-RZj6y!5~m}rCEV42YI5KRVtfB}A)NT_?F?W1|2WzFKwPN{N{6y$~dQdYbP zXOVEHpz{w%7+O_}NQZt1Oyg5WZ93wB4cHWE61?@JFhJB0>QZD;u&LFOH3|p6motD- zgJmJKXnSNy$L#hvWb3FjT7MsY-)dAHx|l8h85uL+BPyB3(l!@zr5AVyoACyXaXe1h z=m{X)qZWZHpY^z1<&C+Hbwtjwo)L^-YY!Oy~E?Z zgC14Mq%AJLsaa<;FTBp_hr=4%suz?j3Mu~l?wRW>*Zurnm@|E9FUIx)yRqrn;qh~W zk_l6#O?8_BEe8$2eO9f3l^-8H>pVX%Uxjhf3u6G#qkoCUB);*34_Gkv=ELCj68>mt zGCmS+KMu#Uge8$D6;nN8v_Ic?L#W&;XXlVAp-Xk-plK)RVPq82(sFg)npSiuyNjiv z{JM)V;uz#bfo}d}I`&eHQwB%}WSI~bckCgQb`2!%U>M%S!b=9K*QadlrOM1GY5RQt7lx6&JniUPrX9_f&8d!% z2q=iqiIOCTUf4E;B$OF$Pvl$qK(zR8*^9h97v1YJ&9b69W|4xZDyHnH`>-%le}Wu< z?&VeY>LG~PU_jqGq$PdiFmxUyD|M`hz42J4cF`u}!zzxn@u5BA@@ah1;2u!7byVlPNnB;Gu+t`?(Q0%ehqnogzFdODL?ahiy6 z^iPqXMos>5Q+fL8=l~gB=ZJW^kbggKzr>o_RR{C>NT8On>>q3eERo4VzyO_V@Aiob zdC$-gn(-gt$o_ige=zoc4Ij`Q{-52gX3qb=-u&kO`5pOxg!aFb^N$d18hF*N7xkuL zI5wJu(`4#Kv1dF&@9PXSnAms*GEKRN*05J*|FBas6kW_~dpDIHmR?F(=$h##N}`dS zapRZx>Zv=pMrqx+fPusUZUW@PQc6aAZS|81!^PG?@7<%91@BV9xk!i>((*fRR+&E%+zw z$EF9yPkfMr{^?b4Fl|x7KRC$vt?8G_7)-d#aiz#?!U|-=)*iVJd+sQMx~Zs7P2^(W zRp5`!7jkVy-{87%Rv<73vYtX1#gbMmmvm#1{j4NiR)uOhzre)jWstVhh7L5$yFrc*} zx)?ZiiI)+1lfFke&Uo#zM=AF3$1PSxBn=!(ozN9Z97)B_9m@F9*BGTU)2gDZisDUr zDQ%LhX%>L$Svl7PxZH@R-k^aLuz?e3l;04|a|emZJBp$DXKl*5YkMdu14nF`)3Qu_ zD`>@!*~ulX%mPn?kR{J4%Md+sGpv3sc_^D%9EB-13x8_)(ffjU=O8i zR8O3mKJd>ECeGYbeCfjn{ktQTn(V&kkg&YA)>w1i--4ci1H-D*k@Q+@*X0UU6_lj} zul(TvUpRf+!=(qU+E#t1Tt%l$WzlNWZ*4Ws zl8~me_^Ki`qx1u-y{X*YrRvR74zTOWT8a*8guN(oZ!5<0h42RW6bQ~ny{f_$bk7dj zr>E>WO&efmQj7YG^%(r^GZ7nm_^lC}R3Zb!dKF)e(&QOqU2z$_)+2ugUZ>yQiPx;^ zryqQEyvD98YbiF^cx^mi2=p9Yld5Lmb>Rw3yiOZ@8D1L__-EoZs`I}sUcX;+qJ9nj z<6e8UQ<>>tk#4=J4>`14Fu4BePBg=oH8H3C*FZDuy0VsTj*Vu<^Mz~9p&3~>3^XfT zfr(~mgU>*-A{$I9)wJakM>lzga-2J+isSNStM#he+w1OkI(pCr-CI~O+j0hNac%-{HWR( z^r(UfLdyP`i;gkX?^O0CGi`ZJv|_a&R!*KZrIuDQ;(z7GOoJFs=pzuttC+1I6=;mc z%Y2uynp&2LT$csYvY_-M|3xDoQ{3(ei}f%tow0D5#Od+EzktI90p&83U&VZxn+l%V zKYsag@903B@0~vHzA4+E#UAFmftDl6^WQu_Jbt=&D2`9gI>$%dMLpZaY(G78LJO@zf4QcA{G_r}hhQG2ZW>CqXpTWxCl^u%veL=L@fe>n6*35a#w5r$m6?QeseSq+$U6NQlOPQ*GYRRy zQ$7Jwdsee@2c5~^p zTDms;r_yz5>R6!v(B<=wfyaOM9q<~yHpGfX9l>a}W{L7Idt|xNFneTe2A#8JW1cXj zTj1AozL=|{TI=L~tYsQe6w*EX(d_s~DN9i3MWF~mGC1ng(1b15ajpXyYyrPkIgvEi zEDe?@=$?JTrnM^w!|8(d(%ZE7lQ}SA6wxiM0GA}}`C(18rhaC`3>5E#AZjZ9)Wd>r zHSr^LivruRgHJ1cKS&c~tF{Z%W5*?xjlft$85n^cVR;8N77JHhamY0Yqp^y)PN?iT zF30wb7E~&Uu(XN%uPRcqv%RskLVs}nU{c?1ZfBy^MJ>=Gn>nBvQSx1r;m&oL(?WA=$dD70|5&v7M`AyZh>?^Q5}P0Y zG4p2F^gr=m#G}vA{OfwU)LHVOngCFtePU25=Fb>mA;!!jUGYm(4NVd+(cP;AH zSPE#!Q?%fMIEUB5)A>E4U&wItUZ@7N7iPz~FCDiZMoAAVA{ckdSYS8)$Sl_yrZoSA zV3{YzbO~H%YM}__V4FCa0|F`U{NO{zR?SZ(5jv-X^rl+eCXcW-9$JCri^!Jr1n4Qo zE@l$RIS@6F^p?q1W;R&Ly=P4u&-Z7U)Q!zBdex1Atzi!SAgNG3t(tH3eB+Irb8%lJ zpkzpm+Btk>ze#s4dmOTYh3v!LhXSNTi)-mq5TQ54TQYPgjiO!1Dw-7uYG`5t*{J+E ziyb2pM{cfsA@9?DQYzXEd*#0?ZPV8O%(&67mkDr({&T}@-)1g>UWJHH%8+EJ-LcUFEvoQP` ziwA*lcQ2h~H51$Q=bzfAPmjB8lWDqGLpqly-@i>fDrbUy$yzIDI8CcX&}9Rd6`RX` z#X2SB>S9)dHE%Ft=}RF*#>8bHB%{o~9)#HZ2~s-UAoZ(3iNasL6iOV=vILZ5l>FC& z65D5gB`6it!h(}J)knKWH8-u`h=I&vUM`QJWLA67lgQAHG`3#*b#*CZ%G6FLl-|yp zUN!2o!)0~lJ~7Ew$BZc|lv} zS*1&3MCIjar&<#y$KB4~LO)a~{2n>A7m1G#aUBnZep~dqT*aguwu%=jyJjAyv@~WDK;{{X{80h)Y$GHW>C9YX z(zB~4pK`SDr)_gJd{2EdDSrYBd!+8Nj z=g)y^*kEnL6&s#&4MwIJ>yv=~X|OF=-$EFF0)*#UzgQ~D-IvAFsEM9!v0Ahq3hBi< zW^xU(kE)INr&z6P;z=F!ab}u;@ASZtjuaA=`VrPbSAHif;NvFcIbo=2sa;#neWS|S zv|u8?$ou%Lj>~i1gtifrMB^pl%1#K5M>fiS*&=uK&h*?PQgLK&MU}*AnL25dC0JWh zi>}%0URbj-RXNhoU>oP}ScCE1uegv!GtXYZC9gK>UEk!4vx-#k6-+T{Z26uQ=guFA zm;O70igB51I3q~Pa>R5+yl~%=${4=&=vrGE@_c}Ims3%!xYmw=aHVftVrL?2A`(?qfzm<(Eqo#cQ(u)9QkFo}3oMqG47tB)Nhge#hnW zTJi0qA7UI$4|7;!J0^jfo*RweqxcOhg5NkpZ|o)B!d`6gBD**WnJS*_d???sMhn2) zXl<>+?Jy_u{m1HpQReCgpQ$0t(Glio37nr|K3NEm`Eo!(3Q|#RbGynC;fDmD6{pJ@ zaxM*2HbsXK-~kFZay{A*{NuHmGg+DH`y^Z*%iNO-5ET?AUzhOPvB{* z^-Q9l8R;c5eilWQF!(Er;BN{+#u&GHULJ*E`ORvL0(AbVqExvqxWhF1Nj7QMm>wSr z^8t|n>b08dw4l3%E8)-IEE#(wM6MTydsr->OC~`Wkk=!%;iw=SS_SEloe}^;bVde} zZT)8zKa zro+ji{C*0Z*J}6bnR@rt$;t8QS^J>ZIl_$1y~AGnX#e=2bM(B6EX_20 z*2IcXMK3rJL%n&UINxuh_SgY7HSyc(K@_Z&(}T=frJp7{ z7nKq(i26!_;|E-iLMO;r7TsS_0RJ%q_d65{eoG z1I%P80DTF)<+obFij)Hvqo`tcA(qAf+hIs;Ydi9%FXSz$;1{BlHai#b zwI^=eK-O}_U_!ik8*5$wQ}WyZLl0vr<%(y;6$6lr!ii8u7ptq-16{Hpw^8o0`nQfk zabr3gj~g4!rqRPEY1nE85vV(Hg4rLp(+sg*f49DF6J$O_S=v3g_M#RgoGKOzN2`{} z*-_1k4yC@>mz&YS!O|l(!MAZx2k=;HJ;Nlg#GTkVa7(OJ%;^Vy{rRMgvP>9>Utse@ zeIxTBw#{l?YPGpe5qI%b_Jb5a1)scz4ejw3IdLjTNg9xszBEWql}^*U(!J))3q0fWJz4 z<#`LVWt43*W-@zW`N@Froc(65A!@;}(xz3-8r3W-vt>`0>}^SFTH(AiX0WefN3*4A z%Xl`AAuaL>ME)S@S;xe@OfXK;ZJ+Cnka9aVR(CkZR@$;0<*gt40A5*C-=RM%u4#^& zH$VAh26I8E4^ch*iQiJavQ$qb`2Yk6ei;MF3eoXg&1Nm*Fg%sSjV`?;o0kbV!Y`b} zz0ACmu@G5(wI<4xPLiPRiuXWU=@D37IPLLcIn!t6FzbkkFUbT|rdE=jN(<%8LSNM& z1i3cAQu+nXsxC-1co(s=;4@IWGcG18GYlj{cl^ZmV5I}RBEjhshp-_89W9i|(;=3V z!d>PjWQc(Ji)w+;f(DPg;+u7haod8==}kozM_6I(gK_0u2i6C9qq5yeZcC(D z_9)~_?_|yQQ#ZIQh)|su#fcXrhLkO+?j^t*8(7`M%L-C;PKmw?^RwlIaXaR7#ZPmB zeySVv>o`ISPQQ|HmO}~Ex>B?v_0k!69(z>n_dSiAbbGXJ&c76Qm3vnJ^<|y1qUf01 z<(yrhyUMfO{Z&tP(E%zlS{aPC_~grjCD|4hM8hjCy&-Y5ntJ}!9q!?+l{L$vdiSAQ zjAUPt>X49xI^*w$;C!PUzdr3)o^)W+Yub2@K3DW%uHJ@Nc9*{fP5Mg2=p-YsFXitp zb~t~5Y5Wsh=u0}$Kg*52lp}rNGUq$b3y#CxqQEAQN>H_)klcdLAL0PrYqDa{M14rt9HTiO}bh)%%I`7RFgb6P% z`+bx4zOl5=Woet=WV~+&;@g4v!ykyRD%brQA;ebvulH^`_6L5_laV=JsRZO5`G3vb zja>booo4e}{O|9%{$pFB$|++C;pX1y{)>aoDgOFMoc8zWD#TW6|M=)x=lOZrjRsdh z8Oj_!CG{QJB5;8i-k_QjDwU^Xl#?6a1({Skg0E@k zOQ$HJ6Z(neB|-JNym%bP3ul*C{E?I!@$6XB;I*Hx|)nsQ2M@hcLP?%LrnL zbHv+;Jxz{LTakU9QNcmH%-kEz#=z`GI7?l@58lAz@ohb=3Qo(TI`^09E$NBuZb$*N zvB0Qmgb*kSSR!G7v8ULP0j(r*-+ECDimPL9EPjVK9L1G2{IA;6F!C?$JIjYN6&7YZ z#3((bp5o_eSP}e{#uEYT`GR$WEtw@B@E-E`1DOGk&&7O^I{&w72Kkk-VHu;z%0}yV zJ6pY-tvXli+t_JP)xYwbv9edZLyy&u^~&F`-fuKNeyIF?`2F9VDk}FXU~t2M{%}bB zpt-rVy|a7&!MfYm9e;eMe>LF~1_L*#AT*uJ$eSYXu2ysP64Ea)B1fK{!guM}Efon& z=KY0I&Oif{ZACEV2U8lm1CJ(Hz2g={%9@C>Z(F{5JQ28lnQVDga*yowkk{xuCjC+dU5kuI~DTjz$9 zzV`R_U$hVG{gR(N5$B8nHGU%hX}%Gy%p2KPQM#0s@RT80HMT*3CM-pv7&QN(_pWN! z!%0hhQFI4nPfDUPL zvqgOEBF}fjfPMvW46o;%=JTEB98zhZH%)RIB-r0-O zcK5~c;Q?@!&2`E#1BGrF&%3~j*$p9U*#D)7*<>zN`Z3!AFWAmJGOhuW%#{93A5Ufp z@yeI@Z|2S~ITd)Tensi=9?FiR4|Gd$m#MB3#>Tbr-a9`|o>WGdO>NuA;SsC?jRDrJ zUsNJl?njR;E%qgUk(UB0&(~JOYqrA3JD@>IfjytFxdUDKt{?C_%sK|)4m2o-wfD|m0rn~z4hX;M5!q-cW4^}`1C{q5`HFGmNj0H3(+4AU z`RU9bCw`#cQNjoah6q-w%$b>+V|=?e97G8x zE}WSTNTqt$t^52gzNfEDdwK$n@XN7ma=(pgVf3u7@Jj6z9EteZ4IVne%(0mRDs0Vx zQ_5)I1|zVQc2Hm0pVhUG=+e#FM=5l(T04}}8BllYEk7QH1WA(FTm-p19bLvENvH-T zC_acz=@lIZIfzq*s!pepH)%$5#~B5?F5RUK%ykmk z3WMEYFi&S?ZAsB(9febs^gLJKAk;79tfTRJ_zGZ zWo(+IgM&>E(R`5P7h&*o+(HJPEMAwcMQn#qq&Sb|vb&0Fx}|yrKZ40zeK1D5(xb2m z;{;pTyHv!HtGbZ`<%p(F!BxabgN6v|#}Lw4hOUp2u}WafJBT{MrWd|UcsErr0vw_; zNQOh2vPm(TD+>r{2UUNCoU0t%e#XZ#?=nhew@eI$>^N zn)FT0U141mrG=4!?vG9vm0wKKE8acScI57iC>ddTRYO_a zVoeS!b;e*3#n}&+fZjiRPbXSgR`x2jdqREh(g@tH_^D1;i6lL&Xw%%x=T0_MbxJu- zhz{yB?kB@Jda9w)@ ztxkuVh}qHOFkF9f96XY4)O!0U>g7A*hzim3>R7U!tp*323Zbm{efY5_Yr=PRiI!qF zP0VD6F4;Q?v*;o|34;SpDbDjqYtSmZ>UftAG^wFtqxg(2*>O|=&t?*fxe|t3Y`9UW za+Fbrbra~Q=$DC6q2oERg(L`d(wRXDY9n|eDa3|hG7vIR5;Q(IIat;edsKO>w~#(4 zWyZ5;I;GBY*7aC4q}ISdkAs}pn9;zhj|wt^7=1H{3uyI8C>zb!C8T`7_2(u3lf}?= zxa<#Vp@vx_j@4ROG--?}(;zi^y2IHdKTn2*a6fGzz+iVgu$t6rSPF`)pPFs42 zEWTvGFrXiNpJd_mYGAX!rofBpdpCVkh0Iys)_l5L7WT%i;VEB25>_U8#5n)%0*gdD zj;8IewmJKTk;CxHg;tp&&ojsej1*OGzIts6M#9)3p?>AMQnCce?N2H>HFB;y|cJL z;-9v9y1o7S?R#QK-o4*@fB1fH_cg7p7ab!Q`1=RuF5QayDd3?VK?<@&cBo8xP*gGCZVrJRv1 z=?R;atf$mh_FJ&=HMhcNt6qrC!pWA_)WxNUyDE0<3)<_(gIS_{nslYNpj)}S;ZN$~ zjICtF-4VF_qqnfH%l5RXn|HlIy?xxN=;f(Hj>*z3cb{wP|D6Aa>vZ#}o*=j7|Jr)$ z`+v~y_x>MWnE$Va{&&D5EQ{uDnowmEf>ah)|$NbZh&l`Su#)>Yu#KLM58=~Qa>5aJ-wjb`MNnd z5TQfDpFeLyxS2Z&qtUc)j*X*lgOZ8Mdx=ARP{%5=C)Lt^sN|?SG^RhXh26!?mSCU2 z6;p84!M3nT-C!FnxLs3Iy+rSPrRX2oL4|QIz}jfV&qB)KA%DgMuGo@x^4|}Fi#VR< zO5dHqgxK%TvW(?z+F88&b z>yjqHNa8_>x|88s_D@9~h4;@(u#68lGPx3LoLM>pZ$fI1JJE+^n8dj`(_&nU&dzA4 zIW-4#a(#ZS+ECs*$grk} z&e(BjZTc`m!1OSV25frZ!angRvlVb7nuIunlO%bzW%6KY8Iyj(Mig<~_iPk>YIagc z(q!60SGp5tZ0bO-BQcqrCq)?@2isAu3{6gD1y3q0-Bc}SU`AA(+EQaf;{G+U1HX@s zUocucCUrETUH5=zH^MK17NY)v?nC_smx}}ed!wiz5zEOOH=!je_;{cgyUR_}sY+V@ zAW#8Mfzr* z5Y}v;gCS0T9hk4NAt$M}JBH>+<9kkILYu628D$CValJe)+S|?;yJck^=UV|JY8&3* zUY_`D`2YHli@VAJx5fWG-g@Hk|4-l&e$W4ZHvIqJc>PQ6zc-vs*roz1U^8LJaUu@m z%HrPBdyBX-^@@F%#N;cX?8cCy`k-_krBh#a3JrMA;D)T!I!-l&$JEAvh*y=>p7N|x z&QAlY`MUb-AX#>lbZSz%n}!Ouw;hiHt%B1ncZ^oAO-v$PUAOe5IyU*t>61hFp>1qf zCeNz1Z=8&dg18Jxx29q(*h`Dp_1n}_%u=`S%Z{khk&-dsu>+AgTv=*Y`HS?= zSa@&Q4cAbiQG9}H2$W7^p#u< zf0gS$G6U<}vsm~1->v+gcP{V90N%p?(c5P}|F`v*d;F)*f&VMx@BPc5LR6KoUqe>q zjV7!LQ~vgjB;gDTIr4v%W;TiJzAowD9| zHY$>~>is(F2s-y9|Ndto{cm8$?rH_RCI0*C$IpEF|Mk-+_xL|wnEh|94nPFi_n_7s z&4Y0QDFmo+wq_ifcy=wA2!I^K5mj9Yqa8;%fZ@_pI9-(A51|-_Cb9zhc9muqh??b4 zC=}20Su8OJ2D{B%P!G}YLyiIRLEjMXri00pa6>hUbVi+J3&MGt6#+EEL7U@?v@F$< zz?rNCEEiQ@gy@7oi*GOqs6x0fqQO9J3Fz=GBr*o`(c%tEW|79E)6rROxTgx$k-K{w zUC>7*>|H*l1tGF8L13vy0E)%JqekzHTfuCX!;!Ezh^t64sw!wPM#x5yZs=m}x~Pc0 zL6UQ{M$Jy?ash-=<+0drrddj5#}bI927fx=cIw>>gOhT?qt=OfycGsNh&516xiy`! z;O*#8cUU~A(UXYin*RLj+FDnv5GyzOkc}-Qp-$;bRqAJeD3-GhU zn%4I!H4Ce13snE|`sz6j5l@=y&My*WffQT?Zme5YFXLe>Lmts6xe!Fh(1L8Jsl67Q z!2%2#CT@U44S<3hY(zaoa#D13mb2{+RxbJqCbWu10s~Jbm(=QjO>8qa)Cf$G1Q^l` z#L5&%yNFmIA|%rcRxr3c!?7UY9oqGbZZRm$G)p*SS}>>JUqu2o$JZmTFAk&?F{yX$ zI@2#NS_!#GN27Se;{%yO991l9=Q>Ux{K?w1urVeMu;3bv0)rL@iCM;z9lE%KJ`h0( zJYZX_=&YZsi0cr)TdyqW!SeIb)XQC41r)I2s;RV>{C6#2&_F`-uTCg_P>YM0> z$q_$?d%8C_`n9UPro^qrx-}JH4AAZ|L~gRNT`>v#*CM1a0GpS;1fW%y%o-Rts{?_(WBbhCWiTGRNv&WP;-zju}ys2e}N z7%K%maLPA@>uD2%duS9DXhLJ)(iOL-3Z=@E-2R2{GW)R;%?ysOUA|K&De&7>&C9D!HJh|4xf-tOa!jghycK@GVZX0LCZE#vbK%C= zH6+2)b-V~Re@~8J#upH{gecH)aKwirJZLJL{+-VRr zUo^@rIXf@@8k8IeGugWnfD9B>#%wlCC#7Kw_XNWnI}izDq{1=oZEHG8Y#usc!P@jA z#|*1c=ftv*3n8gS!$Nh)} z6SKt8BH-{mz$TtSiPY$HdN-IDMj5bw&|38;Yc!t z`ZBOX^ffd12rYaXy3Rr-ug!1Odg=F!&8nW=DQ5fNaDVp)gXBTgZTvkv`bT*D@a4a3 zxM45q%N~0xMw6nw?S0%aRQerGrb7Oh6)Byoq%Tmw0{H@xDiTn+3dyki8gM?4LD9G~f7l{k4+-84>V*gO_upGfQ; z&Fve5359@IK=&2kHj{4T`3$mb=`m~u(B?JT1%R}!Qohk^&7D(+Q($}&h{l81?S5|p znYqUpBQ%0{QUCox*SjE|RGr!_ zgAtPp#;8%HT4ATMaSq}*cz#|K(|mhl1G<`kG}1nIuXwu;wk$9AnIsp$yn3)I|ut^UF!iJ}9@p?0Vul_TNDDXH22}~dAi+!VBk|winFDF=0!hidT;tWfRaLFg6nZJ8Cw~Xgyz~*`biQ1 zaLRFwvEOPLF3XuK(-{dp9p^5^Lp$JzAmZ`(vd4UQ))P9z_gCrhmQ5G7PG=tn*hR=Y z`#w`kQZL;(HjLM%{bP`sH4YsEd;!0VB9kzgig9nv#e0M+FA8o%hzk z;ASYpdF5@ldhP^zDo3;t&l{uEn-RG1;VwPFYmC7KQJN#>mNq5&X2{AMB-U4#h2QK*_Jk z0oXxsM(;rMcl2O4}6FCB2G5|zO03a}v)upk*nhgCF;Y;7%l|Cj?* zQdBH3;o`BH{fs%)s%-6599n7iIZj<|@j6#juu3TL!a*!8JycNU9mVB=FdR!Bvs~Zx zNioV+YSxKI53Ik7K{HL0@*~2>m+niw{Ly`fwD-Mh1i_!pUza7KAk;~iGn@p1$mUek zzF^DplmIiay3!gy1!TK{q#4%4oF#1cD9ThpZJ9LPE+vo0j2X?lJV;7LZ>V&&E2CtJ z8GVI{ZkBfPz7tQJ{WIM~qGO74R#-31pd#3*VC!%#bhn z-aTQTn`y2yqf z-@#?jRk_uEc`rG!N+M;Q9ab1Xc}K&0eo=HQG6nxOGt4Qy4u$z3WD{Ri&t!TS7K|xZ zpI}5V&q9dL0JCLhJd#^PI+Y=Jg4$qR^Tnc7#^C$;tzS3K&%xb6VjjfeB1XtViFmq- zS517Ap$vjWG7TMzFPI_MZa@?$^_)0t@NaUEzWydE6 z<@h9sg@%W$2DIifhjfI%ZmH|>Q@+i~BqVpTioZRM@D7xga^$^aWBsBdwVY3`6XAK! zsb6Tu%X%L(EJ_hSNDHk4+v){py)*D>Nu4^aUi`X39|0(Y`vc(iZ4X+AWx;$0c7<;I?S}C2VtlX%46;r5Kno8oOJ1 zl zt%Ym}na-}807R~f92z$<=3^%KzU*k6u=08|?~f>#1>t)J$SRYkwo(TAx(O&bYi9jy z_shw$8B3R2HIQ=)wkr`@A%QixT}`yE;)hcVwHo!rcgck_z()H4Ss;0fD{e3DLegX_ z=A(Y$Tm)(Tx#)~8ipp+ha=8F$fvFGjT_Et9dX!lW!8|c|vptA*^uuA1U11&i8y8Z$ zGi7Rq4i-JcI4V3klX$d0T8KoS9WM$S?XF_6BA1Juw|0x_&-;c`t=9&lZCxr74{Kb; zuokbd&Dz8&?uC#Sa;I&5gC!K|yPite7jwsbgiY=-6_tUIG{Ybj13n1xBNkiZZ^3Xw zXjmU~>>oDMm7C#vbl>T))zVa$(Id8Iv=(hx?`u4(4&>?LINuNV2(cqyRCv$^$z<7I z8p_L^GBK8}0MgXWa4~f{X{D2NIFESUVA*vdmuR1;4|dt7y4R{ulwb9NJjT04@0-=3 zu@&FbP(poIl#Zu5-m0+>iaT;{xb-|Cwg_@Wr}U7mS8CjNS|DgF8^iON{P~pu;dsx{ zR#>tk_&~aYViZGJy`BQF2JMP-fzZ}q2i7%$nRji)v=)*Af$SJ7+PrR<%Bv!Bc2I4` z7d#!Y+C9H{?cH!sZ{6v`g!J3|3vk@vb(>UbZD@*8T8&i{3hUut8sxg7>H5?4R2OF-| z!fIq|_QzCnsS~|dOU^dtd=}8bM`?kxDVn2oT7l4>UvD1Jse)a<6UYuxEIur`@!6%) z%;K=+1?fC@eCV*@hzIYt22}Ycn3#)LfSArg9Hfqz)zbJno7rlnQ9IGLvp{);!P|M%a<08cLhUqCx3+{!||9Hws zeuu+8?-4l8r?S@}39@F`_s}e#yfArc!i!#$O6bm;$iAVprVFoGo;~ZBL<6r%{~7(w zM)hPr*9yNingXX*w;FI(5KlptjUPRoyKo$cF`tUNf3t)WTR`iAHbmG@W}%RDQ5OkD z)9iLCM|ZsfwZS`=uP_OuibqB2EpEZn&;tdjtPQN=R@#xDFSf4G3|H*nen@jNKFh-{ z$PLQ4+&$ZuNP}<~R;eR*Oixay2&t*WnAJ=JB1zP4Q!f!IU$1`h33AT+z0&4a8v;;u7t?ut7Xk-p5M7rX4>v08}9@^khxM zhW{C-R}q&iBqT&4DM`?fcO;4QRg&NM?{>i68D{V1?d$G+JJ8ns*=?twe}f$9UyzlR zCHZIkh5s9+W#yzvfU+{OazHs5d1)YtG*I@gv@8j)^uK}2-%9#=``CK@qU7%kgFX9O z_OFHiFaN*V{u1}s&j08cPaFkF`*@1oRZ`e%Q7_K>G+GTtK$f(Wv9j@g31wkpH%clU z+P=-vyK*;AO^pzNs%TGaSeQiWNqzUK5jJN9pcY09MifDt)>ZQwXBh4FQrx>iMJ1|h zOs4h|t(jKlMH;L&F&wvdnf>rtG+?xZDcmRFk+ z=KBvug;&qkYh>oc8!R=V!Krnkm4|Cd^VW(nbGe0yve6ZC z-Be9Z=-_LmC;6ILbK#s;GZXC=!R~vWzy7I?918J2XRmf&X~KLmjr{64`|X5_fiHDw zlL1s|45G|`f}I{vwkIr(D6C#y0c>wHH|IFj3O?8<-i S5&kCk+kxK>{C419a^N2;_C!kn literal 0 HcmV?d00001