From 6e96439666d6bfcc289681987dddd0db0a1dee02 Mon Sep 17 00:00:00 2001 From: Jonathan Weiss Date: Thu, 24 Mar 2011 16:24:05 +0100 Subject: [PATCH 001/334] update README to mention stable branch --- README.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/README.md b/README.md index 8074608..c3be79d 100644 --- a/README.md +++ b/README.md @@ -3,6 +3,8 @@ These are the standard Chef cookbooks used by Scalarium. If you want to override any template (like the Rails database.yml or the Apache vhost definition), this is the place to look for the originals. +The stable branch is the one deployed on the instances. + See also Some of these cookbooks rely on functionality included in our [fork of From 0945dfe9d4ec54fc6527c5361cc13f651e6c9f73 Mon Sep 17 00:00:00 2001 From: Jonathan Weiss Date: Thu, 24 Mar 2011 18:45:42 +0100 Subject: [PATCH 002/334] do not modify existing deploy user --- deploy/definitions/scalarium_deploy_user.rb | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/deploy/definitions/scalarium_deploy_user.rb b/deploy/definitions/scalarium_deploy_user.rb index 96ada7b..06c7248 100644 --- a/deploy/definitions/scalarium_deploy_user.rb +++ b/deploy/definitions/scalarium_deploy_user.rb @@ -10,5 +10,18 @@ home deploy[:home] supports :manage_home => true shell "/bin/zsh" + + not_if do + # do not modify existing deploy user! + require 'etc' + deploy_user_exists = false + Etc.passwd do |user| + if user.name == deploy[:user] + Chef::Log.info("The deploy user #{deploy[:user]} already exists - skipping create") + deploy_user_exists = true + end + end + deploy_user_exists + end end end From 7e261799b7166707c9e40efaf3be5d81dbb7d38a Mon Sep 17 00:00:00 2001 From: Jonathan Weiss Date: Thu, 24 Mar 2011 19:14:07 +0100 Subject: [PATCH 003/334] get rid of user modify hack and set defaults for deploy user shell --- deploy/attributes/deploy.rb | 1 + deploy/definitions/scalarium_deploy_user.rb | 15 +-------------- 2 files changed, 2 insertions(+), 14 deletions(-) diff --git a/deploy/attributes/deploy.rb b/deploy/attributes/deploy.rb index 3dfa3e9..0363e4c 100644 --- a/deploy/attributes/deploy.rb +++ b/deploy/attributes/deploy.rb @@ -26,6 +26,7 @@ default[:deploy][application][:action] = 'deploy' default[:deploy][application][:user] = 'deploy' default[:deploy][application][:group] = 'www-data' + default[:deploy][application][:shell] = '/bin/zsh' home = self[:passwd] && self[:passwd][self[:deploy][application][:user]] && self[:passwd][self[:deploy][application][:user]][:dir] || "/home/#{self[:deploy][application][:user]}" diff --git a/deploy/definitions/scalarium_deploy_user.rb b/deploy/definitions/scalarium_deploy_user.rb index 06c7248..c6db5eb 100644 --- a/deploy/definitions/scalarium_deploy_user.rb +++ b/deploy/definitions/scalarium_deploy_user.rb @@ -9,19 +9,6 @@ gid deploy[:group] home deploy[:home] supports :manage_home => true - shell "/bin/zsh" - - not_if do - # do not modify existing deploy user! - require 'etc' - deploy_user_exists = false - Etc.passwd do |user| - if user.name == deploy[:user] - Chef::Log.info("The deploy user #{deploy[:user]} already exists - skipping create") - deploy_user_exists = true - end - end - deploy_user_exists - end + shell deploy[:shell] end end From 2d06ae4f2892589e84a484dca0b7ea2a63eecb92 Mon Sep 17 00:00:00 2001 From: Jonathan Weiss Date: Fri, 25 Mar 2011 11:41:25 +0100 Subject: [PATCH 004/334] install Ganglia Apache config on 10.04 --- scalarium_ganglia/recipes/configure-server.rb | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/scalarium_ganglia/recipes/configure-server.rb b/scalarium_ganglia/recipes/configure-server.rb index 2f130fd..092b4ac 100644 --- a/scalarium_ganglia/recipes/configure-server.rb +++ b/scalarium_ganglia/recipes/configure-server.rb @@ -19,6 +19,11 @@ command "htpasswd -b -c /etc/ganglia-webfrontend/htaccess #{node[:ganglia][:web][:user]} #{node[:ganglia][:web][:password]}" end +link "/etc/apache2/conf.d/ganglia-webfrontend" do + to "/etc/ganglia-webfrontend/apache.conf" + notifies :restart, resources(:service => "apache2") +end + template "/etc/ganglia-webfrontend/apache.conf" do source "apache.conf.erb" mode '0644' From 221b6ce51fcb06cf7d81c7f5aef43ab1fe407231 Mon Sep 17 00:00:00 2001 From: Jonathan Weiss Date: Fri, 25 Mar 2011 16:04:43 +0100 Subject: [PATCH 005/334] re-load the complete RunContext when loading custom cookbooks so that also custom definitions will be loaded --- .../libraries/include_recipe_for_ruby_blocks.rb | 1 + 1 file changed, 1 insertion(+) diff --git a/scalarium_custom_cookbooks/libraries/include_recipe_for_ruby_blocks.rb b/scalarium_custom_cookbooks/libraries/include_recipe_for_ruby_blocks.rb index 67afa5d..dbacc00 100644 --- a/scalarium_custom_cookbooks/libraries/include_recipe_for_ruby_blocks.rb +++ b/scalarium_custom_cookbooks/libraries/include_recipe_for_ruby_blocks.rb @@ -9,6 +9,7 @@ def load_new_cookbooks run_context = self.is_a?(Chef::RunContext) ? self : self.run_context run_context.instance_variable_set("@cookbook_collection", new_cookbook_collection) + run_context.load node.load_attributes end From 8a10502d52c320bf5334c8d12ca1d5143ca3c3cc Mon Sep 17 00:00:00 2001 From: Jonathan Weiss Date: Sat, 2 Apr 2011 15:14:14 +0200 Subject: [PATCH 006/334] fix comment --- deploy/attributes/deploy.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/deploy/attributes/deploy.rb b/deploy/attributes/deploy.rb index e599c63..8db59e4 100644 --- a/deploy/attributes/deploy.rb +++ b/deploy/attributes/deploy.rb @@ -12,7 +12,7 @@ end if File.exists?("/usr/local/bin/rake") - # Ruby Enterprise Edition rake is installed + # local Ruby rake is installed default[:deploy][application][:rake] = "/usr/local/bin/rake" else # use default Rake/ruby From 533042526414958237aeeca456daa44173a0a6ab Mon Sep 17 00:00:00 2001 From: Jonathan Weiss Date: Wed, 13 Apr 2011 12:46:36 +0200 Subject: [PATCH 007/334] remove fogotten RailsEnv - it is already set above --- passenger_apache2/templates/default/web_app.conf.erb | 2 -- 1 file changed, 2 deletions(-) diff --git a/passenger_apache2/templates/default/web_app.conf.erb b/passenger_apache2/templates/default/web_app.conf.erb index 612465f..eecf24f 100644 --- a/passenger_apache2/templates/default/web_app.conf.erb +++ b/passenger_apache2/templates/default/web_app.conf.erb @@ -74,8 +74,6 @@ <%= @params[:deploy][:passenger_handler] -%>BaseURI / <% end -%> <%= @params[:deploy][:passenger_handler] -%>Env <%= @params[:rails_env] %> - - RailsEnv <%= @params[:rails_env] %> > Options FollowSymLinks From 647147b3fc4a4abd36f95e0697813a3dc233a9ed Mon Sep 17 00:00:00 2001 From: Jonathan Weiss Date: Fri, 15 Apr 2011 11:56:05 +0200 Subject: [PATCH 008/334] modernize Apache attributes --- apache2/attributes/apache.rb | 85 +++++++++++++++++------------------- 1 file changed, 40 insertions(+), 45 deletions(-) diff --git a/apache2/attributes/apache.rb b/apache2/attributes/apache.rb index 6f594fe..15f2a01 100644 --- a/apache2/attributes/apache.rb +++ b/apache2/attributes/apache.rb @@ -17,28 +17,26 @@ # limitations under the License. # -apache Mash.new unless attribute?("apache") - # Where the various parts of apache are case platform when "redhat","centos","fedora","suse" - apache[:dir] = "/etc/httpd" unless apache.has_key?(:dir) - apache[:log_dir] = "/var/log/httpd" unless apache.has_key?(:log_dir) - apache[:user] = "apache" unless apache.has_key?(:user) - apache[:binary] = "/usr/sbin/httpd" unless apache.has_key?(:binary) - apache[:icondir] = "/var/www/icons/" unless apache.has_key?(:icondir) + default[:apache][:dir] = "/etc/httpd" + default[:apache][:log_dir] = "/var/log/httpd" + default[:apache][:user] = "apache" + default[:apache][:binary] = "/usr/sbin/httpd" + default[:apache][:icondir] = "/var/www/icons/" when "debian","ubuntu" - apache[:dir] = "/etc/apache2" unless apache.has_key?(:dir) - apache[:log_dir] = "/var/log/apache2" unless apache.has_key?(:log_dir) - apache[:user] = "www-data" unless apache.has_key?(:user) - apache[:binary] = "/usr/sbin/apache2" unless apache.has_key?(:binary) - apache[:icondir] = "/usr/share/apache2/icons" unless apache.has_key?(:icondir) + default[:apache][:dir] = "/etc/apache2" + default[:apache][:log_dir] = "/var/log/apache2" + default[:apache][:user] = "www-data" + default[:apache][:binary] = "/usr/sbin/apache2" + default[:apache][:icondir] = "/usr/share/apache2/icons" else - apache[:dir] = "/etc/apache2" unless apache.has_key?(:dir) - apache[:log_dir] = "/var/log/apache2" unless apache.has_key?(:log_dir) - apache[:user] = "www-data" unless apache.has_key?(:user) - apache[:binary] = "/usr/sbin/apache2" unless apache.has_key?(:binary) - apache[:icondir] = "/usr/share/apache2/icons" unless apache.has_key?(:icondir) + default[:apache][:dir] = "/etc/apache2" + default[:apache][:log_dir] = "/var/log/apache2" + default[:apache][:user] = "www-data" + default[:apache][:binary] = "/usr/sbin/apache2" + default[:apache][:icondir] = "/usr/share/apache2/icons" end ### @@ -47,39 +45,36 @@ ### # General settings -apache[:document_root] = "/var/www" unless apache.has_key?(:document_root) -apache[:listen_ports] = [ "80","443" ] unless apache.has_key?(:listen_ports) -apache[:contact] = "ops@example.com" unless apache.has_key?(:contact) -apache[:timeout] = 120 unless apache.has_key?(:timeout) -apache[:keepalive] = "Off" unless apache.has_key?(:keepalive) -apache[:keepaliverequests] = 100 unless apache.has_key?(:keepaliverequests) -apache[:keepalivetimeout] = 3 unless apache.has_key?(:keepalivetimeout) +default[:apache][:document_root] = "/var/www" +default[:apache][:listen_ports] = [ "80","443" ] +default[:apache][:contact] = "ops@example.com" +default[:apache][:timeout] = 120 +default[:apache][:keepalive] = "Off" +default[:apache][:keepaliverequests] = 100 +default[:apache][:keepalivetimeout] = 3 # Security -apache[:servertokens] = "Prod" unless apache.has_key?(:servertokens) -apache[:serversignature] = "Off" unless apache.has_key?(:serversignature) -apache[:traceenable] = "On" unless apache.has_key?(:traceenable) +default[:apache][:servertokens] = "Prod" +default[:apache][:serversignature] = "Off" +default[:apache][:traceenable] = "On" # Prefork Attributes -apache[:prefork] = Mash.new unless apache.has_key?(:prefork) -apache[:prefork][:startservers] = 16 unless apache[:prefork].has_key?(:startservers) -apache[:prefork][:minspareservers] = 16 unless apache[:prefork].has_key?(:minspareservers) -apache[:prefork][:maxspareservers] = 32 unless apache[:prefork].has_key?(:maxspareservers) -apache[:prefork][:serverlimit] = 400 unless apache[:prefork].has_key?(:serverlimit) -apache[:prefork][:maxclients] = 400 unless apache[:prefork].has_key?(:maxclients) -apache[:prefork][:maxrequestsperchild] = 10000 unless apache[:prefork].has_key?(:maxrequestsperchild) +default[:apache][:prefork][:startservers] = 16 +default[:apache][:prefork][:minspareservers] = 16 +default[:apache][:prefork][:maxspareservers] = 32 +default[:apache][:prefork][:serverlimit] = 400 +default[:apache][:prefork][:maxclients] = 400 +default[:apache][:prefork][:maxrequestsperchild] = 10000 # Worker Attributes -apache[:worker] = Mash.new unless apache.has_key?(:worker) -apache[:worker][:startservers] = 4 unless apache[:worker].has_key?(:startservers) -apache[:worker][:maxclients] = 1024 unless apache[:worker].has_key?(:maxclients) -apache[:worker][:minsparethreads] = 64 unless apache[:worker].has_key?(:minsparethreads) -apache[:worker][:maxsparethreads] = 192 unless apache[:worker].has_key?(:maxsparethreads) -apache[:worker][:threadsperchild] = 64 unless apache[:worker].has_key?(:threadsperchild) -apache[:worker][:maxrequestsperchild] = 10000 unless apache[:worker].has_key?(:maxrequestsperchild) +default[:apache][:worker][:startservers] = 4 +default[:apache][:worker][:maxclients] = 1024 +default[:apache][:worker][:minsparethreads] = 64 +default[:apache][:worker][:maxsparethreads] = 192 +default[:apache][:worker][:threadsperchild] = 64 +default[:apache][:worker][:maxrequestsperchild] = 10000 # logrotate -apache[:logrotate] = Mash.new unless apache.has_key?(:logrotate) -apache[:logrotate][:schedule] = 'daily' -apache[:logrotate][:rotate] = '30' -apache[:logrotate][:delaycompress] = true \ No newline at end of file +default[:apache][:logrotate][:schedule] = 'daily' +default[:apache][:logrotate][:rotate] = '30' +default[:apache][:logrotate][:delaycompress] = true \ No newline at end of file From 244f6bdb21686980e34deab930274d549161abcb Mon Sep 17 00:00:00 2001 From: Jonathan Weiss Date: Fri, 15 Apr 2011 12:31:31 +0200 Subject: [PATCH 009/334] do not force 443 port on Apache --- apache2/recipes/mod_ssl.rb | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/apache2/recipes/mod_ssl.rb b/apache2/recipes/mod_ssl.rb index c69caea..283d6ac 100644 --- a/apache2/recipes/mod_ssl.rb +++ b/apache2/recipes/mod_ssl.rb @@ -29,11 +29,9 @@ end end -ports = node[:apache][:listen_ports].include?("443") ? node[:apache][:listen_ports] : [node[:apache][:listen_ports], "443"].flatten - template "#{node[:apache][:dir]}/ports.conf" do source "ports.conf.erb" - variables :apache_listen_ports => ports + variables :apache_listen_ports => node[:apache][:listen_ports] notifies :restart, resources(:service => "apache2") end From fa7a90ee777efd37294eb2f098b98cc3d6f34d58 Mon Sep 17 00:00:00 2001 From: Jonathan Weiss Date: Fri, 15 Apr 2011 13:03:44 +0200 Subject: [PATCH 010/334] use Apache listen ports via attributes --- apache2/recipes/default.rb | 1 - apache2/recipes/mod_ssl.rb | 4 +++- apache2/templates/default/ports.conf.erb | 2 +- 3 files changed, 4 insertions(+), 3 deletions(-) diff --git a/apache2/recipes/default.rb b/apache2/recipes/default.rb index da13217..9ca5eef 100644 --- a/apache2/recipes/default.rb +++ b/apache2/recipes/default.rb @@ -137,7 +137,6 @@ source "ports.conf.erb" group "root" owner "root" - variables :apache_listen_ports => node[:apache][:listen_ports] mode 0644 notifies :restart, resources(:service => "apache2") end diff --git a/apache2/recipes/mod_ssl.rb b/apache2/recipes/mod_ssl.rb index 283d6ac..f6425b0 100644 --- a/apache2/recipes/mod_ssl.rb +++ b/apache2/recipes/mod_ssl.rb @@ -31,7 +31,9 @@ template "#{node[:apache][:dir]}/ports.conf" do source "ports.conf.erb" - variables :apache_listen_ports => node[:apache][:listen_ports] + group "root" + owner "root" + mode 0644 notifies :restart, resources(:service => "apache2") end diff --git a/apache2/templates/default/ports.conf.erb b/apache2/templates/default/ports.conf.erb index cc3631e..b785ba5 100644 --- a/apache2/templates/default/ports.conf.erb +++ b/apache2/templates/default/ports.conf.erb @@ -1,5 +1,5 @@ #This file generated via template by Chef. -<% @apache_listen_ports.each do |port| -%> +<% node[:apache][:listen_ports].each do |port| -%> Listen <%= port %> NameVirtualHost *:<%= port %> From cf4f192cf82aa89ec3b784b51f0dbe56cdcab1a1 Mon Sep 17 00:00:00 2001 From: Jonathan Weiss Date: Wed, 13 Apr 2011 12:47:13 +0200 Subject: [PATCH 011/334] when copying the default install mysql datadir over to the EBS, get rid of innodb logfiles in case the user has different defaults --- mysql/recipes/server.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mysql/recipes/server.rb b/mysql/recipes/server.rb index ae2dec5..fbcf5d4 100644 --- a/mysql/recipes/server.rb +++ b/mysql/recipes/server.rb @@ -116,7 +116,7 @@ Chef::Log.info("Setting up the MySQL bind-mount to EBS") execute "install-mysql" do - command "mv #{node[:mysql][:datadir]} #{node[:mysql][:ec2_path]} && mkdir -p #{node[:mysql][:datadir]}" + command "mv #{node[:mysql][:datadir]} #{node[:mysql][:ec2_path]} && mkdir -p #{node[:mysql][:datadir]} && rm -f #{node[:mysql][:ec2_path]}/ib_logfile*" not_if do FileTest.directory?(node[:mysql][:ec2_path]) end end From 1081d8f64339641b9873e0ee8ecc4cdf2f91d37a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Daniel=20Hu=CC=88sch?= Date: Wed, 20 Apr 2011 12:09:26 +0200 Subject: [PATCH 012/334] Write database.yml before checkout. The ideal behaviour would be to wait for the checkout in order to be able to examine Gemfile, application.rb and the like to find out what database adapter is most appropriate. The database config also has to be in place before deploy hooks are triggered, which makes it a bit tricky. These checks will be readded as soon as we have a fix for Chef that prevents Chef from removing generated template files too early. --- deploy/definitions/scalarium_deploy.rb | 24 ------------------------ deploy/definitions/scalarium_rails.rb | 10 ++++++++++ 2 files changed, 10 insertions(+), 24 deletions(-) diff --git a/deploy/definitions/scalarium_deploy.rb b/deploy/definitions/scalarium_deploy.rb index 2ed66ff..6060912 100644 --- a/deploy/definitions/scalarium_deploy.rb +++ b/deploy/definitions/scalarium_deploy.rb @@ -90,30 +90,6 @@ end if deploy[:application_type] == 'rails' && node[:scalarium][:instance][:roles].include?('rails-app') - ruby_block 'Determine database adapter' do - inner_deploy = deploy - inner_application = application - block do - inner_deploy[:database][:adapter] = if File.exists?("#{inner_deploy[:deploy_to]}/current/config/application.rb") - Chef::Log.info("Looks like #{inner_application} is a Rails 3 application") - 'mysql2' - else - Chef::Log.info("No config/application.rb found, assuming #{inner_application} is a Rails 2 application") - 'mysql' - end - end - end - - # write out database.yml - template "#{deploy[:deploy_to]}/shared/config/database.yml" do - cookbook "rails" - source "database.yml.erb" - mode "0660" - owner deploy[:user] - group deploy[:group] - variables(:database => deploy[:database], :environment => deploy[:rails_env]) - end - passenger_web_app do application application deploy deploy diff --git a/deploy/definitions/scalarium_rails.rb b/deploy/definitions/scalarium_rails.rb index 52ad321..790f5db 100644 --- a/deploy/definitions/scalarium_rails.rb +++ b/deploy/definitions/scalarium_rails.rb @@ -4,6 +4,16 @@ include_recipe deploy[:stack][:recipe] + # write out database.yml + template "#{deploy[:deploy_to]}/shared/config/database.yml" do + cookbook "rails" + source "database.yml.erb" + mode "0660" + owner deploy[:user] + group deploy[:group] + variables(:database => deploy[:database], :environment => deploy[:rails_env]) + end + # write out memcached.yml template "#{deploy[:deploy_to]}/shared/config/memcached.yml" do cookbook "rails" From 98f2c4518463e32f5cafba93a4f04685f176fac0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Daniel=20Hu=CC=88sch?= Date: Wed, 20 Apr 2011 12:48:10 +0200 Subject: [PATCH 013/334] Force symlinking of config files in before_migrate block. --- deploy/definitions/scalarium_deploy.rb | 1 + 1 file changed, 1 insertion(+) diff --git a/deploy/definitions/scalarium_deploy.rb b/deploy/definitions/scalarium_deploy.rb index 6060912..bafa143 100644 --- a/deploy/definitions/scalarium_deploy.rb +++ b/deploy/definitions/scalarium_deploy.rb @@ -74,6 +74,7 @@ end before_migrate do + run_symlinks_before_migrate if deploy[:application_type] == 'rails' and deploy[:auto_bundle_on_deploy] and File.exists?("#{release_path}/Gemfile") Chef::Log.info("Gemfile detected. Running bundle install.") run("cd #{release_path} && bundle install #{deploy[:home]}/.bundler/#{application} --without=test development") From 258daf141ccb7be2a85910ca5f6d59688a519fc2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Daniel=20Hu=CC=88sch?= Date: Wed, 20 Apr 2011 15:17:28 +0200 Subject: [PATCH 014/334] Run bundler from within before_migrate hook script. --- deploy/definitions/scalarium_deploy.rb | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/deploy/definitions/scalarium_deploy.rb b/deploy/definitions/scalarium_deploy.rb index bafa143..2508819 100644 --- a/deploy/definitions/scalarium_deploy.rb +++ b/deploy/definitions/scalarium_deploy.rb @@ -77,7 +77,14 @@ run_symlinks_before_migrate if deploy[:application_type] == 'rails' and deploy[:auto_bundle_on_deploy] and File.exists?("#{release_path}/Gemfile") Chef::Log.info("Gemfile detected. Running bundle install.") - run("cd #{release_path} && bundle install #{deploy[:home]}/.bundler/#{application} --without=test development") + before_migrate_code = "`sudo su deploy -c 'cd #{release_path} && bundle install #{deploy[:home]}/.bundler/#{application} --without=test development'`" + if File.exists?("#{release_path}/deploy/before_migrate.rb") + before_migrate_code += "\n" + File.read("#{release_path}/deploy/before_migrate.rb") + end + FileUtils.mkdir_p "#{release_path}/deploy" + File.open("#{release_path}/deploy/before_migrate.rb", 'w') do |file| + file.puts before_migrate_code + end end run_callback_from_file("#{release_path}/deploy/before_migrate.rb") end From 3600db615e845b55a400c8609dae8a936c9e59eb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Daniel=20Hu=CC=88sch?= Date: Wed, 27 Apr 2011 14:18:53 +0200 Subject: [PATCH 015/334] Create db config and run bundler before deploy hooks. --- deploy/definitions/scalarium_deploy.rb | 24 ++++++++++------ deploy/definitions/scalarium_rails.rb | 10 ------- rails/libraries/rails_configuration.rb | 40 ++++++++++++++++++++++++++ rails/recipes/configure.rb | 19 +++--------- 4 files changed, 59 insertions(+), 34 deletions(-) create mode 100644 rails/libraries/rails_configuration.rb diff --git a/deploy/definitions/scalarium_deploy.rb b/deploy/definitions/scalarium_deploy.rb index 2508819..7158db4 100644 --- a/deploy/definitions/scalarium_deploy.rb +++ b/deploy/definitions/scalarium_deploy.rb @@ -75,17 +75,23 @@ before_migrate do run_symlinks_before_migrate - if deploy[:application_type] == 'rails' and deploy[:auto_bundle_on_deploy] and File.exists?("#{release_path}/Gemfile") - Chef::Log.info("Gemfile detected. Running bundle install.") - before_migrate_code = "`sudo su deploy -c 'cd #{release_path} && bundle install #{deploy[:home]}/.bundler/#{application} --without=test development'`" - if File.exists?("#{release_path}/deploy/before_migrate.rb") - before_migrate_code += "\n" + File.read("#{release_path}/deploy/before_migrate.rb") - end - FileUtils.mkdir_p "#{release_path}/deploy" - File.open("#{release_path}/deploy/before_migrate.rb", 'w') do |file| - file.puts before_migrate_code + if deploy[:application_type] == 'rails' + if deploy[:auto_bundle_on_deploy] + Scalarium::RailsConfiguration.bundle(application, node[:deploy][application], release_path) end + + node[:deploy][application][:database][:adapter] = Scalarium::RailsConfiguration.determine_database_adapter(application, node[:deploy][application], release_path) + template "#{node[:deploy][application][:deploy_to]}/shared/config/database.yml" do + cookbook "rails" + source "database.yml.erb" + mode "0660" + owner node[:deploy][application][:user] + group node[:deploy][application][:group] + variables(:database => node[:deploy][application][:database], :environment => node[:deploy][application][:rails_env]) + end.run_action(:create) end + + # run user provided callback file run_callback_from_file("#{release_path}/deploy/before_migrate.rb") end end diff --git a/deploy/definitions/scalarium_rails.rb b/deploy/definitions/scalarium_rails.rb index 790f5db..52ad321 100644 --- a/deploy/definitions/scalarium_rails.rb +++ b/deploy/definitions/scalarium_rails.rb @@ -4,16 +4,6 @@ include_recipe deploy[:stack][:recipe] - # write out database.yml - template "#{deploy[:deploy_to]}/shared/config/database.yml" do - cookbook "rails" - source "database.yml.erb" - mode "0660" - owner deploy[:user] - group deploy[:group] - variables(:database => deploy[:database], :environment => deploy[:rails_env]) - end - # write out memcached.yml template "#{deploy[:deploy_to]}/shared/config/memcached.yml" do cookbook "rails" diff --git a/rails/libraries/rails_configuration.rb b/rails/libraries/rails_configuration.rb new file mode 100644 index 0000000..6f0d4b3 --- /dev/null +++ b/rails/libraries/rails_configuration.rb @@ -0,0 +1,40 @@ +module Scalarium + module RailsConfiguration + def self.determine_database_adapter(app_name, app_config, app_root_path) + if app_config[:database][:adapter].blank? + Chef::Log.info("No database adapter specified for #{app_name}, guessing") + adapter = '' + + if app_config[:auto_bundle_on_deploy] and File.exists?("#{app_root_path}/Gemfile") + bundle_list = `cd #{app_root_path}; bundle list` + adapter = if bundle_list.include?('mysql2') + Chef::Log.info("Looks like #{app_name} uses mysql2 in its Gemfile") + 'mysql2' + else + Chef::Log.info("Gem mysql2 not found in the Gemfile of #{app_name}, defaulting to mysql") + 'mysql' + end + else # no Gemfile - guess adapter by Rails version + adapter = if File.exists?("#{app_root_path}/config/app_name.rb") + Chef::Log.info("Looks like #{app_name} is a Rails 3 app_name, defaulting to mysql2") + 'mysql2' + else + Chef::Log.info("No config/app_name.rb found, assuming #{app_name} is a Rails 2 app_name, defaulting to mysql") + 'mysql' + end + end + + adapter + else + app_config[:database][:adapter] + end + end + + def self.bundle(app_name, app_config, app_root_path) + if File.exists?("#{app_root_path}/Gemfile") + Chef::Log.info("Gemfile detected. Running bundle install.") + Chef::Log.info(`sudo su deploy -c 'cd #{app_root_path} && bundle install #{app_config[:home]}/.bundler/#{app_name} --without=test development'`) + end + end + end +end diff --git a/rails/recipes/configure.rb b/rails/recipes/configure.rb index 7b78547..de54a62 100644 --- a/rails/recipes/configure.rb +++ b/rails/recipes/configure.rb @@ -2,26 +2,15 @@ include_recipe "deploy" node[:deploy].each do |application, deploy| - + deploy = node[:deploy][application] + execute "restart Rails app #{application}" do cwd deploy[:current_path] command "touch tmp/restart.txt" action :nothing end - - ruby_block 'Determine database adapter' do - inner_deploy = deploy - inner_application = application - block do - inner_deploy[:database][:adapter] = if File.exists?("#{inner_deploy[:deploy_to]}/current/config/application.rb") - Chef::Log.info("Looks like #{inner_application} is a Rails 3 application") - 'mysql2' - else - Chef::Log.info("No config/application.rb found, assuming #{inner_application} is a Rails 2 application") - 'mysql' - end - end - end + + node[:deploy][application][:database][:adapter] = Scalarium::RailsConfiguration.determine_database_adapter(application, node[:deploy][application], "#{node[:deploy][application][:deploy_to]}/current") template "#{deploy[:deploy_to]}/shared/config/database.yml" do source "database.yml.erb" From 7d0181032731d5ecf657e940c9b69f58973196f4 Mon Sep 17 00:00:00 2001 From: Jonathan Weiss Date: Thu, 5 May 2011 11:31:50 +0200 Subject: [PATCH 016/334] Have one logrotate configuration per app instead of one global one. Fixes loosing the configuration off all other apps when deploying an app. --- deploy/definitions/scalarium_deploy.rb | 10 ++-------- 1 file changed, 2 insertions(+), 8 deletions(-) diff --git a/deploy/definitions/scalarium_deploy.rb b/deploy/definitions/scalarium_deploy.rb index 7158db4..f51a828 100644 --- a/deploy/definitions/scalarium_deploy.rb +++ b/deploy/definitions/scalarium_deploy.rb @@ -110,19 +110,13 @@ end end - log_dirs = [] - log_dirs = node[:deploy].values.map{|deploy| "#{deploy[:deploy_to]}/shared/log" } - - template "/etc/logrotate.d/scalarium_apps" do + template "/etc/logrotate.d/scalarium_app_#{application}" do backup false source "logrotate.erb" cookbook 'deploy' owner "root" group "root" mode 0644 - variables( :log_dirs => log_dirs ) - not_if do - log_dirs.empty? - end + variables( :log_dirs => ["#{deploy[:deploy_to]}/shared/log" ] ) end end From ee6c1df74e64aa668a4720de0bab6ddd21f5f885 Mon Sep 17 00:00:00 2001 From: Jonathan Weiss Date: Fri, 6 May 2011 15:47:11 +0200 Subject: [PATCH 017/334] allow MySQL to read and write to /vol/mysql --- mysql/templates/default/apparmor.mysql.erb | 2 ++ 1 file changed, 2 insertions(+) diff --git a/mysql/templates/default/apparmor.mysql.erb b/mysql/templates/default/apparmor.mysql.erb index 83caf25..55e93ae 100644 --- a/mysql/templates/default/apparmor.mysql.erb +++ b/mysql/templates/default/apparmor.mysql.erb @@ -29,6 +29,8 @@ /var/log/mysql.err rw, /var/lib/mysql/ r, /var/lib/mysql/** rwk, + /vol/mysql/ rw, + /vol/mysql/** rwk, /var/log/mysql/ r, /var/log/mysql/* rw, /var/run/mysqld/mysqld.pid w, From 8135e6fc467db2e759c317dab677f55bf350730c Mon Sep 17 00:00:00 2001 From: Jonathan Weiss Date: Fri, 6 May 2011 15:51:48 +0200 Subject: [PATCH 018/334] remove some chars from Ganglia data source name --- scalarium_ganglia/templates/default/gmond.conf.erb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/scalarium_ganglia/templates/default/gmond.conf.erb b/scalarium_ganglia/templates/default/gmond.conf.erb index a28e2d7..c191154 100644 --- a/scalarium_ganglia/templates/default/gmond.conf.erb +++ b/scalarium_ganglia/templates/default/gmond.conf.erb @@ -18,7 +18,7 @@ globals { * of a tag. If you do not specify a cluster tag, then all will * NOT be wrapped inside of a tag. */ cluster { - name = "<%= @cluster_name %>" + name = "<%= @cluster_name.gsub(/[\(\)\[\]]/,'') %>" owner = "Scalarium" latlong = "unspecified" url = "unspecified" From 3a80f869d6b9e695293287e8d6394af1ccd8e903 Mon Sep 17 00:00:00 2001 From: Jonathan Weiss Date: Fri, 6 May 2011 16:07:27 +0200 Subject: [PATCH 019/334] another fix for ganglia data source name --- scalarium_ganglia/templates/default/gmetad.conf.erb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/scalarium_ganglia/templates/default/gmetad.conf.erb b/scalarium_ganglia/templates/default/gmetad.conf.erb index e0f229c..b239678 100644 --- a/scalarium_ganglia/templates/default/gmetad.conf.erb +++ b/scalarium_ganglia/templates/default/gmetad.conf.erb @@ -36,7 +36,7 @@ # data_source "my grid" 50 1.3.4.7:8655 grid.org:8651 grid-backup.org:8651 # data_source "another source" 1.3.4.7:8655 1.3.4.8 -data_source "<%= @cluster_name %>" localhost:<%= node[:ganglia][:tcp_client_port] %> +data_source "<%= @cluster_name.gsub(/[\(\)\[\]]/,'') %>" localhost:<%= node[:ganglia][:tcp_client_port] %> # # Round-Robin Archives From dfe19e402844055eba8b06de84f6b4743829db23 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Daniel=20Hu=CC=88sch?= Date: Fri, 6 May 2011 18:43:54 +0200 Subject: [PATCH 020/334] Don't handle SSH user when the UID is taken. --- ssh_users/libraries/user.rb | 43 ++++++++++++++++++++++++------------ ssh_users/recipes/default.rb | 1 - 2 files changed, 29 insertions(+), 15 deletions(-) diff --git a/ssh_users/libraries/user.rb b/ssh_users/libraries/user.rb index 3eb6ff9..2b621f9 100644 --- a/ssh_users/libraries/user.rb +++ b/ssh_users/libraries/user.rb @@ -12,22 +12,37 @@ def load_existing_ssh_users existing_ssh_users end - def setup_user(params) - Chef::Log.info("setting up user #{params[:name]}") - user params[:name] do - action :create - comment "Scalarium user #{params[:name]}" - uid params[:uid] - gid 'scalarium' - home "/home/#{params[:name]}" - supports :manage_home => true - shell '/bin/bash' + def load_existing_users + existing_users = {} + (node[:passwd] || node[:etc][:passwd]).each do |username, entry| + existing_users[entry[:uid].to_s] = username end + existing_users + end - directory "/home/#{params[:name]}/.ssh" do - owner params[:name] - group 'scalarium' - mode 0700 + def setup_user(params) + existing_users = load_existing_users + if existing_users.include?(params[:uid]) + Chef::Log.info("UID #{params[:uid]} is taken, not setting up user #{params[:name]}") + else + Chef::Log.info("setting up user #{params[:name]}") + user params[:name] do + action :create + comment "Scalarium user #{params[:name]}" + uid params[:uid] + gid 'scalarium' + home "/home/#{params[:name]}" + supports :manage_home => true + shell '/bin/bash' + end + + directory "/home/#{params[:name]}/.ssh" do + owner params[:name] + group 'scalarium' + mode 0700 + end + + set_public_key(params) end end diff --git a/ssh_users/recipes/default.rb b/ssh_users/recipes/default.rb index 3493bea..bdb8ad3 100644 --- a/ssh_users/recipes/default.rb +++ b/ssh_users/recipes/default.rb @@ -15,7 +15,6 @@ else setup_user(ssh_user.update(:uid => id)) end - set_public_key(ssh_user) end template '/etc/sudoers' do From ca45818bdb1b3afd20096a7a0208ee828af69f34 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Daniel=20Hu=CC=88sch?= Date: Tue, 10 May 2011 07:19:46 +0200 Subject: [PATCH 021/334] Force db adapter detection upon request. --- deploy/definitions/scalarium_deploy.rb | 2 +- rails/libraries/rails_configuration.rb | 4 ++-- rails/recipes/configure.rb | 2 +- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/deploy/definitions/scalarium_deploy.rb b/deploy/definitions/scalarium_deploy.rb index f51a828..0e1f75c 100644 --- a/deploy/definitions/scalarium_deploy.rb +++ b/deploy/definitions/scalarium_deploy.rb @@ -80,7 +80,7 @@ Scalarium::RailsConfiguration.bundle(application, node[:deploy][application], release_path) end - node[:deploy][application][:database][:adapter] = Scalarium::RailsConfiguration.determine_database_adapter(application, node[:deploy][application], release_path) + node[:deploy][application][:database][:adapter] = Scalarium::RailsConfiguration.determine_database_adapter(application, node[:deploy][application], release_path, node[:force_database_adapter_detection]) template "#{node[:deploy][application][:deploy_to]}/shared/config/database.yml" do cookbook "rails" source "database.yml.erb" diff --git a/rails/libraries/rails_configuration.rb b/rails/libraries/rails_configuration.rb index 6f0d4b3..4a95076 100644 --- a/rails/libraries/rails_configuration.rb +++ b/rails/libraries/rails_configuration.rb @@ -1,7 +1,7 @@ module Scalarium module RailsConfiguration - def self.determine_database_adapter(app_name, app_config, app_root_path) - if app_config[:database][:adapter].blank? + def self.determine_database_adapter(app_name, app_config, app_root_path, force) + if force || app_config[:database][:adapter].blank? Chef::Log.info("No database adapter specified for #{app_name}, guessing") adapter = '' diff --git a/rails/recipes/configure.rb b/rails/recipes/configure.rb index de54a62..2cbace9 100644 --- a/rails/recipes/configure.rb +++ b/rails/recipes/configure.rb @@ -10,7 +10,7 @@ action :nothing end - node[:deploy][application][:database][:adapter] = Scalarium::RailsConfiguration.determine_database_adapter(application, node[:deploy][application], "#{node[:deploy][application][:deploy_to]}/current") + node[:deploy][application][:database][:adapter] = Scalarium::RailsConfiguration.determine_database_adapter(application, node[:deploy][application], "#{node[:deploy][application][:deploy_to]}/current", node[:force_database_adapter_detection]) template "#{deploy[:deploy_to]}/shared/config/database.yml" do source "database.yml.erb" From 802306fe0d75a64be4175a110c4834f7ab17794c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Daniel=20Hu=CC=88sch?= Date: Tue, 10 May 2011 07:19:46 +0200 Subject: [PATCH 022/334] Force db adapter detection upon request. --- deploy/definitions/scalarium_deploy.rb | 2 +- rails/libraries/rails_configuration.rb | 4 ++-- rails/recipes/configure.rb | 2 +- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/deploy/definitions/scalarium_deploy.rb b/deploy/definitions/scalarium_deploy.rb index f51a828..0e1f75c 100644 --- a/deploy/definitions/scalarium_deploy.rb +++ b/deploy/definitions/scalarium_deploy.rb @@ -80,7 +80,7 @@ Scalarium::RailsConfiguration.bundle(application, node[:deploy][application], release_path) end - node[:deploy][application][:database][:adapter] = Scalarium::RailsConfiguration.determine_database_adapter(application, node[:deploy][application], release_path) + node[:deploy][application][:database][:adapter] = Scalarium::RailsConfiguration.determine_database_adapter(application, node[:deploy][application], release_path, node[:force_database_adapter_detection]) template "#{node[:deploy][application][:deploy_to]}/shared/config/database.yml" do cookbook "rails" source "database.yml.erb" diff --git a/rails/libraries/rails_configuration.rb b/rails/libraries/rails_configuration.rb index 6f0d4b3..4a95076 100644 --- a/rails/libraries/rails_configuration.rb +++ b/rails/libraries/rails_configuration.rb @@ -1,7 +1,7 @@ module Scalarium module RailsConfiguration - def self.determine_database_adapter(app_name, app_config, app_root_path) - if app_config[:database][:adapter].blank? + def self.determine_database_adapter(app_name, app_config, app_root_path, force) + if force || app_config[:database][:adapter].blank? Chef::Log.info("No database adapter specified for #{app_name}, guessing") adapter = '' diff --git a/rails/recipes/configure.rb b/rails/recipes/configure.rb index de54a62..2cbace9 100644 --- a/rails/recipes/configure.rb +++ b/rails/recipes/configure.rb @@ -10,7 +10,7 @@ action :nothing end - node[:deploy][application][:database][:adapter] = Scalarium::RailsConfiguration.determine_database_adapter(application, node[:deploy][application], "#{node[:deploy][application][:deploy_to]}/current") + node[:deploy][application][:database][:adapter] = Scalarium::RailsConfiguration.determine_database_adapter(application, node[:deploy][application], "#{node[:deploy][application][:deploy_to]}/current", node[:force_database_adapter_detection]) template "#{deploy[:deploy_to]}/shared/config/database.yml" do source "database.yml.erb" From 778ac1cc17d36ffd09c6b4ffe91359d1e0e6a7ad Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Daniel=20Hu=CC=88sch?= Date: Tue, 10 May 2011 07:34:30 +0200 Subject: [PATCH 023/334] Fix adapter detection on configure. --- deploy/definitions/scalarium_deploy.rb | 2 +- rails/libraries/rails_configuration.rb | 4 ++-- rails/recipes/configure.rb | 2 +- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/deploy/definitions/scalarium_deploy.rb b/deploy/definitions/scalarium_deploy.rb index 0e1f75c..7385e58 100644 --- a/deploy/definitions/scalarium_deploy.rb +++ b/deploy/definitions/scalarium_deploy.rb @@ -80,7 +80,7 @@ Scalarium::RailsConfiguration.bundle(application, node[:deploy][application], release_path) end - node[:deploy][application][:database][:adapter] = Scalarium::RailsConfiguration.determine_database_adapter(application, node[:deploy][application], release_path, node[:force_database_adapter_detection]) + node[:deploy][application][:database][:adapter] = Scalarium::RailsConfiguration.determine_database_adapter(application, node[:deploy][application], release_path, node[:force_database_adapter_detection], node[:deploy][application][:auto_bundle_on_deploy]) template "#{node[:deploy][application][:deploy_to]}/shared/config/database.yml" do cookbook "rails" source "database.yml.erb" diff --git a/rails/libraries/rails_configuration.rb b/rails/libraries/rails_configuration.rb index 4a95076..c8d7131 100644 --- a/rails/libraries/rails_configuration.rb +++ b/rails/libraries/rails_configuration.rb @@ -1,11 +1,11 @@ module Scalarium module RailsConfiguration - def self.determine_database_adapter(app_name, app_config, app_root_path, force) + def self.determine_database_adapter(app_name, app_config, app_root_path, force, consult_gemfile) if force || app_config[:database][:adapter].blank? Chef::Log.info("No database adapter specified for #{app_name}, guessing") adapter = '' - if app_config[:auto_bundle_on_deploy] and File.exists?("#{app_root_path}/Gemfile") + if consult_gemfile and File.exists?("#{app_root_path}/Gemfile") bundle_list = `cd #{app_root_path}; bundle list` adapter = if bundle_list.include?('mysql2') Chef::Log.info("Looks like #{app_name} uses mysql2 in its Gemfile") diff --git a/rails/recipes/configure.rb b/rails/recipes/configure.rb index 2cbace9..ec9fe79 100644 --- a/rails/recipes/configure.rb +++ b/rails/recipes/configure.rb @@ -10,7 +10,7 @@ action :nothing end - node[:deploy][application][:database][:adapter] = Scalarium::RailsConfiguration.determine_database_adapter(application, node[:deploy][application], "#{node[:deploy][application][:deploy_to]}/current", node[:force_database_adapter_detection]) + node[:deploy][application][:database][:adapter] = Scalarium::RailsConfiguration.determine_database_adapter(application, node[:deploy][application], "#{node[:deploy][application][:deploy_to]}/current", node[:force_database_adapter_detection], true) template "#{deploy[:deploy_to]}/shared/config/database.yml" do source "database.yml.erb" From 622aaa9bc07e4e4c0fb84a9729a877428c596a01 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Daniel=20Hu=CC=88sch?= Date: Tue, 10 May 2011 07:57:44 +0200 Subject: [PATCH 024/334] Refactor adapter detection. --- deploy/definitions/scalarium_deploy.rb | 2 +- rails/libraries/rails_configuration.rb | 10 +++++++--- rails/recipes/configure.rb | 2 +- 3 files changed, 9 insertions(+), 5 deletions(-) diff --git a/deploy/definitions/scalarium_deploy.rb b/deploy/definitions/scalarium_deploy.rb index 7385e58..fc0f911 100644 --- a/deploy/definitions/scalarium_deploy.rb +++ b/deploy/definitions/scalarium_deploy.rb @@ -80,7 +80,7 @@ Scalarium::RailsConfiguration.bundle(application, node[:deploy][application], release_path) end - node[:deploy][application][:database][:adapter] = Scalarium::RailsConfiguration.determine_database_adapter(application, node[:deploy][application], release_path, node[:force_database_adapter_detection], node[:deploy][application][:auto_bundle_on_deploy]) + node[:deploy][application][:database][:adapter] = Scalarium::RailsConfiguration.determine_database_adapter(application, node[:deploy][application], release_path, :force => node[:force_database_adapter_detection], :consult_gemfile => node[:deploy][application][:auto_bundle_on_deploy]) template "#{node[:deploy][application][:deploy_to]}/shared/config/database.yml" do cookbook "rails" source "database.yml.erb" diff --git a/rails/libraries/rails_configuration.rb b/rails/libraries/rails_configuration.rb index c8d7131..072433c 100644 --- a/rails/libraries/rails_configuration.rb +++ b/rails/libraries/rails_configuration.rb @@ -1,11 +1,15 @@ module Scalarium module RailsConfiguration - def self.determine_database_adapter(app_name, app_config, app_root_path, force, consult_gemfile) - if force || app_config[:database][:adapter].blank? + def self.determine_database_adapter(app_name, app_config, app_root_path, options = {}) + options = { + :consult_gemfile => true, + :force => false + }.update(options) + if options[:force] || app_config[:database][:adapter].blank? Chef::Log.info("No database adapter specified for #{app_name}, guessing") adapter = '' - if consult_gemfile and File.exists?("#{app_root_path}/Gemfile") + if options[:consult_gemfile] and File.exists?("#{app_root_path}/Gemfile") bundle_list = `cd #{app_root_path}; bundle list` adapter = if bundle_list.include?('mysql2') Chef::Log.info("Looks like #{app_name} uses mysql2 in its Gemfile") diff --git a/rails/recipes/configure.rb b/rails/recipes/configure.rb index ec9fe79..142f04d 100644 --- a/rails/recipes/configure.rb +++ b/rails/recipes/configure.rb @@ -10,7 +10,7 @@ action :nothing end - node[:deploy][application][:database][:adapter] = Scalarium::RailsConfiguration.determine_database_adapter(application, node[:deploy][application], "#{node[:deploy][application][:deploy_to]}/current", node[:force_database_adapter_detection], true) + node[:deploy][application][:database][:adapter] = Scalarium::RailsConfiguration.determine_database_adapter(application, node[:deploy][application], "#{node[:deploy][application][:deploy_to]}/current", :force => node[:force_database_adapter_detection]) template "#{deploy[:deploy_to]}/shared/config/database.yml" do source "database.yml.erb" From c418a4aa5ffba6738635add72765429e49b8d9d8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Daniel=20Hu=CC=88sch?= Date: Tue, 10 May 2011 08:24:19 +0200 Subject: [PATCH 025/334] Fix conventional Rails version check in adapter detection. --- rails/libraries/rails_configuration.rb | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/rails/libraries/rails_configuration.rb b/rails/libraries/rails_configuration.rb index 072433c..23a01ea 100644 --- a/rails/libraries/rails_configuration.rb +++ b/rails/libraries/rails_configuration.rb @@ -19,11 +19,11 @@ def self.determine_database_adapter(app_name, app_config, app_root_path, options 'mysql' end else # no Gemfile - guess adapter by Rails version - adapter = if File.exists?("#{app_root_path}/config/app_name.rb") - Chef::Log.info("Looks like #{app_name} is a Rails 3 app_name, defaulting to mysql2") + adapter = if File.exists?("#{app_root_path}/config/application.rb") + Chef::Log.info("Looks like #{app_name} is a Rails 3 application, defaulting to mysql2") 'mysql2' else - Chef::Log.info("No config/app_name.rb found, assuming #{app_name} is a Rails 2 app_name, defaulting to mysql") + Chef::Log.info("No config/application.rb found, assuming #{app_name} is a Rails 2 application, defaulting to mysql") 'mysql' end end From ee7589a65b886cb69d5330ce92c6f2e1981d420e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Daniel=20Hu=CC=88sch?= Date: Tue, 10 May 2011 07:34:30 +0200 Subject: [PATCH 026/334] Fix adapter detection on configure. --- deploy/definitions/scalarium_deploy.rb | 2 +- rails/libraries/rails_configuration.rb | 4 ++-- rails/recipes/configure.rb | 2 +- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/deploy/definitions/scalarium_deploy.rb b/deploy/definitions/scalarium_deploy.rb index 0e1f75c..7385e58 100644 --- a/deploy/definitions/scalarium_deploy.rb +++ b/deploy/definitions/scalarium_deploy.rb @@ -80,7 +80,7 @@ Scalarium::RailsConfiguration.bundle(application, node[:deploy][application], release_path) end - node[:deploy][application][:database][:adapter] = Scalarium::RailsConfiguration.determine_database_adapter(application, node[:deploy][application], release_path, node[:force_database_adapter_detection]) + node[:deploy][application][:database][:adapter] = Scalarium::RailsConfiguration.determine_database_adapter(application, node[:deploy][application], release_path, node[:force_database_adapter_detection], node[:deploy][application][:auto_bundle_on_deploy]) template "#{node[:deploy][application][:deploy_to]}/shared/config/database.yml" do cookbook "rails" source "database.yml.erb" diff --git a/rails/libraries/rails_configuration.rb b/rails/libraries/rails_configuration.rb index 4a95076..c8d7131 100644 --- a/rails/libraries/rails_configuration.rb +++ b/rails/libraries/rails_configuration.rb @@ -1,11 +1,11 @@ module Scalarium module RailsConfiguration - def self.determine_database_adapter(app_name, app_config, app_root_path, force) + def self.determine_database_adapter(app_name, app_config, app_root_path, force, consult_gemfile) if force || app_config[:database][:adapter].blank? Chef::Log.info("No database adapter specified for #{app_name}, guessing") adapter = '' - if app_config[:auto_bundle_on_deploy] and File.exists?("#{app_root_path}/Gemfile") + if consult_gemfile and File.exists?("#{app_root_path}/Gemfile") bundle_list = `cd #{app_root_path}; bundle list` adapter = if bundle_list.include?('mysql2') Chef::Log.info("Looks like #{app_name} uses mysql2 in its Gemfile") diff --git a/rails/recipes/configure.rb b/rails/recipes/configure.rb index 2cbace9..ec9fe79 100644 --- a/rails/recipes/configure.rb +++ b/rails/recipes/configure.rb @@ -10,7 +10,7 @@ action :nothing end - node[:deploy][application][:database][:adapter] = Scalarium::RailsConfiguration.determine_database_adapter(application, node[:deploy][application], "#{node[:deploy][application][:deploy_to]}/current", node[:force_database_adapter_detection]) + node[:deploy][application][:database][:adapter] = Scalarium::RailsConfiguration.determine_database_adapter(application, node[:deploy][application], "#{node[:deploy][application][:deploy_to]}/current", node[:force_database_adapter_detection], true) template "#{deploy[:deploy_to]}/shared/config/database.yml" do source "database.yml.erb" From 632efcef61d62f92d1b30db638a72c2129333347 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Daniel=20Hu=CC=88sch?= Date: Tue, 10 May 2011 07:57:44 +0200 Subject: [PATCH 027/334] Refactor adapter detection. --- deploy/definitions/scalarium_deploy.rb | 2 +- rails/libraries/rails_configuration.rb | 10 +++++++--- rails/recipes/configure.rb | 2 +- 3 files changed, 9 insertions(+), 5 deletions(-) diff --git a/deploy/definitions/scalarium_deploy.rb b/deploy/definitions/scalarium_deploy.rb index 7385e58..fc0f911 100644 --- a/deploy/definitions/scalarium_deploy.rb +++ b/deploy/definitions/scalarium_deploy.rb @@ -80,7 +80,7 @@ Scalarium::RailsConfiguration.bundle(application, node[:deploy][application], release_path) end - node[:deploy][application][:database][:adapter] = Scalarium::RailsConfiguration.determine_database_adapter(application, node[:deploy][application], release_path, node[:force_database_adapter_detection], node[:deploy][application][:auto_bundle_on_deploy]) + node[:deploy][application][:database][:adapter] = Scalarium::RailsConfiguration.determine_database_adapter(application, node[:deploy][application], release_path, :force => node[:force_database_adapter_detection], :consult_gemfile => node[:deploy][application][:auto_bundle_on_deploy]) template "#{node[:deploy][application][:deploy_to]}/shared/config/database.yml" do cookbook "rails" source "database.yml.erb" diff --git a/rails/libraries/rails_configuration.rb b/rails/libraries/rails_configuration.rb index c8d7131..072433c 100644 --- a/rails/libraries/rails_configuration.rb +++ b/rails/libraries/rails_configuration.rb @@ -1,11 +1,15 @@ module Scalarium module RailsConfiguration - def self.determine_database_adapter(app_name, app_config, app_root_path, force, consult_gemfile) - if force || app_config[:database][:adapter].blank? + def self.determine_database_adapter(app_name, app_config, app_root_path, options = {}) + options = { + :consult_gemfile => true, + :force => false + }.update(options) + if options[:force] || app_config[:database][:adapter].blank? Chef::Log.info("No database adapter specified for #{app_name}, guessing") adapter = '' - if consult_gemfile and File.exists?("#{app_root_path}/Gemfile") + if options[:consult_gemfile] and File.exists?("#{app_root_path}/Gemfile") bundle_list = `cd #{app_root_path}; bundle list` adapter = if bundle_list.include?('mysql2') Chef::Log.info("Looks like #{app_name} uses mysql2 in its Gemfile") diff --git a/rails/recipes/configure.rb b/rails/recipes/configure.rb index ec9fe79..142f04d 100644 --- a/rails/recipes/configure.rb +++ b/rails/recipes/configure.rb @@ -10,7 +10,7 @@ action :nothing end - node[:deploy][application][:database][:adapter] = Scalarium::RailsConfiguration.determine_database_adapter(application, node[:deploy][application], "#{node[:deploy][application][:deploy_to]}/current", node[:force_database_adapter_detection], true) + node[:deploy][application][:database][:adapter] = Scalarium::RailsConfiguration.determine_database_adapter(application, node[:deploy][application], "#{node[:deploy][application][:deploy_to]}/current", :force => node[:force_database_adapter_detection]) template "#{deploy[:deploy_to]}/shared/config/database.yml" do source "database.yml.erb" From ed75a725c05f8201cb74153317ec3b18454d35e8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Daniel=20Hu=CC=88sch?= Date: Tue, 10 May 2011 08:24:19 +0200 Subject: [PATCH 028/334] Fix conventional Rails version check in adapter detection. --- rails/libraries/rails_configuration.rb | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/rails/libraries/rails_configuration.rb b/rails/libraries/rails_configuration.rb index 072433c..23a01ea 100644 --- a/rails/libraries/rails_configuration.rb +++ b/rails/libraries/rails_configuration.rb @@ -19,11 +19,11 @@ def self.determine_database_adapter(app_name, app_config, app_root_path, options 'mysql' end else # no Gemfile - guess adapter by Rails version - adapter = if File.exists?("#{app_root_path}/config/app_name.rb") - Chef::Log.info("Looks like #{app_name} is a Rails 3 app_name, defaulting to mysql2") + adapter = if File.exists?("#{app_root_path}/config/application.rb") + Chef::Log.info("Looks like #{app_name} is a Rails 3 application, defaulting to mysql2") 'mysql2' else - Chef::Log.info("No config/app_name.rb found, assuming #{app_name} is a Rails 2 app_name, defaulting to mysql") + Chef::Log.info("No config/application.rb found, assuming #{app_name} is a Rails 2 application, defaulting to mysql") 'mysql' end end From dc1be40bd5d1d56f6a347fdff9290bc7cc46f349 Mon Sep 17 00:00:00 2001 From: Jonathan Weiss Date: Wed, 11 May 2011 15:17:44 +0200 Subject: [PATCH 029/334] split MySQL recipe into multiple pieces and allow to only configure MySQL with mysql::config --- mysql/recipes/apparmor.rb | 18 ++++++ mysql/recipes/config.rb | 10 +++ mysql/recipes/ebs.rb | 37 +++++++++++ mysql/recipes/prepare.rb | 46 +++++++++++++ mysql/recipes/server.rb | 133 ++------------------------------------ mysql/recipes/service.rb | 12 ++++ 6 files changed, 128 insertions(+), 128 deletions(-) create mode 100644 mysql/recipes/apparmor.rb create mode 100644 mysql/recipes/config.rb create mode 100644 mysql/recipes/ebs.rb create mode 100644 mysql/recipes/prepare.rb create mode 100644 mysql/recipes/service.rb diff --git a/mysql/recipes/apparmor.rb b/mysql/recipes/apparmor.rb new file mode 100644 index 0000000..78d3c99 --- /dev/null +++ b/mysql/recipes/apparmor.rb @@ -0,0 +1,18 @@ +service "apparmor" do + supports :status => true, :restart => true, :reload => true + action :nothing + ignore_failure true +end + +# allow MySQL to read /sys/devices/system/cpu/* +template "/etc/apparmor.d/usr.sbin.mysqld" do + source "apparmor.mysql.erb" + backup false + owner 'root' + group 'root' + mode '0644' + only_if do + system("service apparmor status") && File.exists?("/etc/apparmor.d/usr.sbin.mysqld") + end + notifies :restart, resources(:service => "apparmor"), :immediately +end \ No newline at end of file diff --git a/mysql/recipes/config.rb b/mysql/recipes/config.rb new file mode 100644 index 0000000..75ef89d --- /dev/null +++ b/mysql/recipes/config.rb @@ -0,0 +1,10 @@ +include_recipe 'mysql::service' + +template value_for_platform([ "centos", "redhat", "suse" ] => {"default" => "/etc/my.cnf"}, "default" => "/etc/mysql/my.cnf") do + source "my.cnf.erb" + backup false + owner "root" + group "root" + mode "0644" + notifies :restart, resources(:service => "mysql") +end \ No newline at end of file diff --git a/mysql/recipes/ebs.rb b/mysql/recipes/ebs.rb new file mode 100644 index 0000000..3e261c1 --- /dev/null +++ b/mysql/recipes/ebs.rb @@ -0,0 +1,37 @@ +if (node[:ec2] && ! FileTest.directory?(node[:mysql][:ec2_path])) + Chef::Log.info("Setting up the MySQL bind-mount to EBS") + + execute "Copy MySQL data to EBS for first init" do + command "mv #{node[:mysql][:datadir]} #{node[:mysql][:ec2_path]} && mkdir -p #{node[:mysql][:datadir]} && rm -f #{node[:mysql][:ec2_path]}/ib_logfile*" + not_if do + FileTest.directory?(node[:mysql][:ec2_path]) + end + end + + directory node[:mysql][:ec2_path] do + owner "mysql" + group "mysql" + end + + mount node[:mysql][:datadir] do + device node[:mysql][:ec2_path] + fstype "none" + options "bind,rw" + action :mount + end + + mount node[:mysql][:datadir] do + device node[:mysql][:ec2_path] + fstype "none" + options "bind,rw" + action :enable + end + + execute "ensure MySQL data owned by MySQL user" do + command "chown -R mysql:mysql #{node[:mysql][:datadir]}" + action :run + end + +else + Chef::Log.info("Skipping MySQL EBS setup - using what is already on the EBS volume") +end \ No newline at end of file diff --git a/mysql/recipes/prepare.rb b/mysql/recipes/prepare.rb new file mode 100644 index 0000000..e821b08 --- /dev/null +++ b/mysql/recipes/prepare.rb @@ -0,0 +1,46 @@ +case node[:platform] +when "debian","ubuntu" + + directory "/var/cache/local/preseeding" do + owner "root" + group "root" + mode 0755 + recursive true + end + + execute "preseed-mysql-server" do + command "debconf-set-selections /var/cache/local/preseeding/mysql-server.seed" + action :nothing + end + + template "/var/cache/local/preseeding/mysql-server.seed" do + source "mysql-server.seed.erb" + backup false + owner "root" + group "root" + mode "0600" + notifies :run, resources(:execute => "preseed-mysql-server"), :immediately + end + + execute "preseed-percona-server" do + command "debconf-set-selections /var/cache/local/preseeding/percona-server.seed" + action :nothing + end + + template "/var/cache/local/preseeding/percona-server.seed" do + source "percona-server.seed.erb" + backup false + owner "root" + group "root" + mode "0600" + notifies :run, resources(:execute => "preseed-percona-server"), :immediately + end + + template "/etc/mysql/debian.cnf" do + source "debian.cnf.erb" + backup false + owner "root" + group "root" + mode "0600" + end +end \ No newline at end of file diff --git a/mysql/recipes/server.rb b/mysql/recipes/server.rb index fbcf5d4..4e4fc3f 100644 --- a/mysql/recipes/server.rb +++ b/mysql/recipes/server.rb @@ -2,52 +2,7 @@ include_recipe "mysql::client" -case node[:platform] -when "debian","ubuntu" - - directory "/var/cache/local/preseeding" do - owner "root" - group "root" - mode 0755 - recursive true - end - - execute "preseed-mysql-server" do - command "debconf-set-selections /var/cache/local/preseeding/mysql-server.seed" - action :nothing - end - - template "/var/cache/local/preseeding/mysql-server.seed" do - source "mysql-server.seed.erb" - backup false - owner "root" - group "root" - mode "0600" - notifies :run, resources(:execute => "preseed-mysql-server"), :immediately - end - - execute "preseed-percona-server" do - command "debconf-set-selections /var/cache/local/preseeding/percona-server.seed" - action :nothing - end - - template "/var/cache/local/preseeding/percona-server.seed" do - source "percona-server.seed.erb" - backup false - owner "root" - group "root" - mode "0600" - notifies :run, resources(:execute => "preseed-percona-server"), :immediately - end - - template "/etc/mysql/debian.cnf" do - source "debian.cnf.erb" - backup false - owner "root" - group "root" - mode "0600" - end -end +include_recipe "mysql::prepare" if node[:mysql][:use_percona_xtradb] include_recipe "mysql::percona_server" @@ -70,100 +25,22 @@ end end -service "apparmor" do - supports :status => true, :restart => true, :reload => true - action :nothing - ignore_failure true -end +include_recipe "mysql::apparmor" -# allow MySQL to read /sys/devices/system/cpu/* -template "/etc/apparmor.d/usr.sbin.mysqld" do - source "apparmor.mysql.erb" - backup false - owner 'root' - group 'root' - mode '0644' - only_if do - system("service apparmor status") && File.exists?("/etc/apparmor.d/usr.sbin.mysqld") - end - notifies :restart, resources(:service => "apparmor"), :immediately -end +include_recipe 'mysql::service' service "mysql" do - service_name value_for_platform([ "centos", "redhat", "suse" ] => {"default" => "mysqld"}, "default" => "mysql") - - case node[:platform] - when "ubuntu" - if node[:platform_version].to_f >= 10.04 - provider Chef::Provider::Service::Upstart - end - end - supports :status => true, :restart => true, :reload => true action :enable end service "mysql" do action :stop - case node[:platform] - when "ubuntu" - if node[:platform_version].to_f >= 10.04 - provider Chef::Provider::Service::Upstart - end - end end -if (node[:ec2] && ! FileTest.directory?(node[:mysql][:ec2_path])) - Chef::Log.info("Setting up the MySQL bind-mount to EBS") - - execute "install-mysql" do - command "mv #{node[:mysql][:datadir]} #{node[:mysql][:ec2_path]} && mkdir -p #{node[:mysql][:datadir]} && rm -f #{node[:mysql][:ec2_path]}/ib_logfile*" - not_if do FileTest.directory?(node[:mysql][:ec2_path]) end - end - - directory node[:mysql][:ec2_path] do - owner "mysql" - group "mysql" - end - - mount node[:mysql][:datadir] do - device node[:mysql][:ec2_path] - fstype "none" - options "bind,rw" - action :mount - end - - mount node[:mysql][:datadir] do - device node[:mysql][:ec2_path] - fstype "none" - options "bind,rw" - action :enable - end - - execute "ensure MySQL data owned by MySQL user" do - command "chown -R mysql:mysql #{node[:mysql][:datadir]}" - action :run - end - -else - Chef::Log.info("Skipping MySQL EBS setup") -end +include_recipe "mysql::ebs" -template value_for_platform([ "centos", "redhat", "suse" ] => {"default" => "/etc/my.cnf"}, "default" => "/etc/mysql/my.cnf") do - source "my.cnf.erb" - backup false - owner "root" - group "root" - mode "0644" - #notifies :restart, resources(:service => "mysql"), :immediately -end +include_recipe "mysql::config" service "mysql" do - case node[:platform] - when "ubuntu" - if node[:platform_version].to_f >= 10.04 - provider Chef::Provider::Service::Upstart - end - end - action :start end diff --git a/mysql/recipes/service.rb b/mysql/recipes/service.rb new file mode 100644 index 0000000..0704ce8 --- /dev/null +++ b/mysql/recipes/service.rb @@ -0,0 +1,12 @@ +service "mysql" do + service_name value_for_platform([ "centos", "redhat", "suse" ] => {"default" => "mysqld"}, "default" => "mysql") + + case node[:platform] + when "ubuntu" + if node[:platform_version].to_f >= 10.04 + provider Chef::Provider::Service::Upstart + end + end + supports :status => true, :restart => true, :reload => true + action :nothing +end \ No newline at end of file From 6289c3bdf21ed4e566ec2e0c4d614a740dea9228 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Daniel=20Hu=CC=88sch?= Date: Tue, 17 May 2011 18:45:26 +0200 Subject: [PATCH 030/334] Add recipes to install node.js and npm. --- scalarium_nodejs/attributes/scalarium_nodejs.rb | 7 +++++++ scalarium_nodejs/recipes/default.rb | 14 ++++++++++++++ scalarium_nodejs/recipes/npm.rb | 16 ++++++++++++++++ 3 files changed, 37 insertions(+) create mode 100644 scalarium_nodejs/attributes/scalarium_nodejs.rb create mode 100644 scalarium_nodejs/recipes/default.rb create mode 100644 scalarium_nodejs/recipes/npm.rb diff --git a/scalarium_nodejs/attributes/scalarium_nodejs.rb b/scalarium_nodejs/attributes/scalarium_nodejs.rb new file mode 100644 index 0000000..6c09009 --- /dev/null +++ b/scalarium_nodejs/attributes/scalarium_nodejs.rb @@ -0,0 +1,7 @@ +default[:scalarium_nodejs] = {} +default[:scalarium_nodejs][:version] = '0.4.7' +default[:scalarium_nodejs][:npm_version] = '1.0.6' +default[:scalarium_nodejs][:pkgrelease] = '1' +arch = RUBY_PLATFORM.match(/64/) ? 'amd64' : 'i386' +default[:scalarium_nodejs][:deb] = "nodejs_#{node[:scalarium_nodejs][:version]}-#{node[:scalarium_nodejs][:pkgrelease]}_#{arch}.deb" +default[:scalarium_nodejs][:deb_url] = "http://peritor-assets.s3.amazonaws.com/#{node[:platform]}/#{node[:platform_version]}/#{node[:scalarium_nodejs][:deb]}" diff --git a/scalarium_nodejs/recipes/default.rb b/scalarium_nodejs/recipes/default.rb new file mode 100644 index 0000000..3b93eca --- /dev/null +++ b/scalarium_nodejs/recipes/default.rb @@ -0,0 +1,14 @@ +remote_file "/tmp/#{node[:scalarium_nodejs][:deb]}" do + source node[:scalarium_nodejs][:deb_url] + action :create_if_missing +end + +execute "Install node.js #{node[:scalarium_nodejs][:version]}" do + cwd "/tmp" + command "dpkg -i /tmp/#{node[:scalarium_nodejs][:deb]}" + + not_if do + ::File.exists?("/usr/local/bin/node") && + system("/usr/local/bin/ruby -v | grep -q '#{node[:scalarium_nodejs][:version]}'") + end +end diff --git a/scalarium_nodejs/recipes/npm.rb b/scalarium_nodejs/recipes/npm.rb new file mode 100644 index 0000000..fd1bbc0 --- /dev/null +++ b/scalarium_nodejs/recipes/npm.rb @@ -0,0 +1,16 @@ +remote_file "/tmp/npm-#{node[:scalarium_nodejs][:npm_version]}.tgz" do + source "http://registry.npmjs.org/npm/-/npm-#{node[:scalarium_nodejs][:npm_version]}.tgz" + action :create_if_missing +end + +directory "/tmp/npm-#{node[:scalarium_nodejs][:npm_version]}" +execute "tar xvfz /tmp/npm-#{node[:scalarium_nodejs][:npm_version]}.tgz -C /tmp/npm-#{node[:scalarium_nodejs][:npm_version]} --strip-components=1" + +execute "Install npm #{node[:scalarium_nodejs][:npm_version]}" do + cwd "/tmp/npm-#{node[:scalarium_nodejs][:npm_version]}" + command 'make install' + not_if do + ::File.exists?("/usr/local/bin/npm") && + system("/usr/local/bin/npm -v | grep -q '#{node[:scalarium_nodejs][:npm_version]}'") + end +end From 43cfdeab130d9ae4c2caa6a9db0f187bb644c71c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Daniel=20Hu=CC=88sch?= Date: Wed, 18 May 2011 07:30:55 +0200 Subject: [PATCH 031/334] Deploy node.js applications. --- deploy/definitions/scalarium_nodejs.rb | 21 ++++++++++++++ deploy/recipes/nodejs-restart.rb | 12 ++++++++ deploy/recipes/nodejs-rollback.rb | 20 +++++++++++++ deploy/recipes/nodejs-undeploy.rb | 28 +++++++++++++++++++ deploy/recipes/nodejs.rb | 26 +++++++++++++++++ .../default/node_web_app.monitrc.erb | 7 +++++ 6 files changed, 114 insertions(+) create mode 100644 deploy/definitions/scalarium_nodejs.rb create mode 100644 deploy/recipes/nodejs-restart.rb create mode 100644 deploy/recipes/nodejs-rollback.rb create mode 100644 deploy/recipes/nodejs-undeploy.rb create mode 100644 deploy/recipes/nodejs.rb create mode 100644 scalarium_nodejs/templates/default/node_web_app.monitrc.erb diff --git a/deploy/definitions/scalarium_nodejs.rb b/deploy/definitions/scalarium_nodejs.rb new file mode 100644 index 0000000..354ea91 --- /dev/null +++ b/deploy/definitions/scalarium_nodejs.rb @@ -0,0 +1,21 @@ +define :scalarium_nodejs do + deploy = params[:deploy_data] + application = params[:app] + + service 'monit' do + action :nothing + end + + template "/etc/monit/conf.d/node_web_app-#{application}.monitrc" do + source 'node_web_app.monitrc.erb' + cookbook 'scalarium_nodejs' + owner 'root' + group 'root' + mode '0644' + variables( + :application_name => application, + :monitored_script => "#{deploy[:deploy_to]}/current/server.js" + ) + notifies :restart, resources(:service => 'monit') + end +end diff --git a/deploy/recipes/nodejs-restart.rb b/deploy/recipes/nodejs-restart.rb new file mode 100644 index 0000000..7af6727 --- /dev/null +++ b/deploy/recipes/nodejs-restart.rb @@ -0,0 +1,12 @@ +include_recipe 'deploy' + +node[:deploy].each do |application, deploy| + if deploy[:application_type] != 'nodejs' + Chef::Log.debug("Skipping deploy::nodejs-restart for application #{application} as it is not a node.js app") + next + end + + execute "restart node.js application #{application} via monit" do + command "monit restart node_web_app_#{application}" + end +end diff --git a/deploy/recipes/nodejs-rollback.rb b/deploy/recipes/nodejs-rollback.rb new file mode 100644 index 0000000..0e805db --- /dev/null +++ b/deploy/recipes/nodejs-rollback.rb @@ -0,0 +1,20 @@ +node[:deploy].each do |application, deploy| + if deploy[:application_type] != 'nodejs' + Chef::Log.debug("Skipping deploy::nodejs-rollback for application #{application} as it is not a node.js app") + next + end + + deploy deploy[:deploy_to] do + user deploy[:user] + action 'rollback' + restart_command "sleep #{deploy[:sleep_before_restart]} && #{deploy[:restart_command]}" + + only_if do + File.exists?(deploy[:current_path]) + end + end + + execute "restart node.js application #{application} via monit" do + command "monit restart node_web_app_#{application}" + end +end diff --git a/deploy/recipes/nodejs-undeploy.rb b/deploy/recipes/nodejs-undeploy.rb new file mode 100644 index 0000000..df0eb69 --- /dev/null +++ b/deploy/recipes/nodejs-undeploy.rb @@ -0,0 +1,28 @@ +include_recipe 'deploy' + +node[:deploy].each do |application, deploy| + if deploy[:application_type] != 'nodejs' + Chef::Log.debug("Skipping deploy::nodejs-undeploy for application #{application} as it is not a node.js app") + next + end + + execute "stop node.js application #{application} via monit" do + command "monit stop node_web_app_#{application}" + end + + file "/etc/monit/conf.d/node_web_app-#{application}.monitrc" do + action :delete + only_if do + File.exists?("/etc/monit/conf.d/node_web_app-#{application}.monitrc") + end + end + + directory "#{deploy[:deploy_to]}" do + recursive true + action :delete + + only_if do + File.exists?("#{deploy[:deploy_to]}") + end + end +end diff --git a/deploy/recipes/nodejs.rb b/deploy/recipes/nodejs.rb new file mode 100644 index 0000000..99a8a7e --- /dev/null +++ b/deploy/recipes/nodejs.rb @@ -0,0 +1,26 @@ +node[:deploy].each do |application, deploy| + if deploy[:application_type] != 'nodejs' + Chef::Log.debug("Skipping deploy::nodejs for application #{application} as it is not a node.js app") + next + end + + scalarium_deploy_dir do + user deploy[:user] + group deploy[:group] + path deploy[:deploy_to] + end + + scalarium_deploy do + deploy_data deploy + app application + end + + scalarium_nodejs do + deploy_data deploy + app application + end + + execute "restart node.js application #{application} via monit" do + command "monit restart node_web_app_#{application}" + end +end diff --git a/scalarium_nodejs/templates/default/node_web_app.monitrc.erb b/scalarium_nodejs/templates/default/node_web_app.monitrc.erb new file mode 100644 index 0000000..fe67c4b --- /dev/null +++ b/scalarium_nodejs/templates/default/node_web_app.monitrc.erb @@ -0,0 +1,7 @@ +check host node_web_app_<%= @application_name %> with address 127.0.0.1 + start program = "/usr/local/bin/node <%= @monitored_script %>" + stop program = "/usr/bin/pkill -f 'node <%= @monitored_script %>'" + if failed port 80 protocol HTTP + request / + with timeout 10 seconds + then restart From bf54e74010e492e2aec95b998e68f225362e0748 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Daniel=20Hu=CC=88sch?= Date: Wed, 18 May 2011 08:49:30 +0200 Subject: [PATCH 032/334] Fix a copy and paste glitch. --- scalarium_nodejs/recipes/default.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/scalarium_nodejs/recipes/default.rb b/scalarium_nodejs/recipes/default.rb index 3b93eca..5e19024 100644 --- a/scalarium_nodejs/recipes/default.rb +++ b/scalarium_nodejs/recipes/default.rb @@ -9,6 +9,6 @@ not_if do ::File.exists?("/usr/local/bin/node") && - system("/usr/local/bin/ruby -v | grep -q '#{node[:scalarium_nodejs][:version]}'") + system("/usr/local/bin/node -v | grep -q '#{node[:scalarium_nodejs][:version]}'") end end From 78b6b47d484d6f8205bd463b951639173cc4e3a2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Daniel=20Hu=CC=88sch?= Date: Wed, 18 May 2011 11:49:54 +0200 Subject: [PATCH 033/334] Add configure recipe for node.js. --- scalarium_nodejs/recipes/configure.rb | 15 +++++++++++++++ .../templates/default/scalarium.js.erb | 2 ++ 2 files changed, 17 insertions(+) create mode 100644 scalarium_nodejs/recipes/configure.rb create mode 100644 scalarium_nodejs/templates/default/scalarium.js.erb diff --git a/scalarium_nodejs/recipes/configure.rb b/scalarium_nodejs/recipes/configure.rb new file mode 100644 index 0000000..c43dd84 --- /dev/null +++ b/scalarium_nodejs/recipes/configure.rb @@ -0,0 +1,15 @@ +node[:deploy].each do |application, deploy| + if deploy[:application_type] != 'nodejs' + Chef::Log.debug("Skipping deploy::nodejs application #{application} as it is not a node.js app") + next + end + + template "#{deploy[:deploy_to]}/shared/config/scalarium.js" do + cookbook 'scalarium_nodejs' + source 'scalarium.js.erb' + mode '0660' + owner deploy[:user] + group deploy[:group] + variables(:database => deploy[:database], :memcached => deploy[:memcached], :roles => node[:scalarium][:roles]) + end +end diff --git a/scalarium_nodejs/templates/default/scalarium.js.erb b/scalarium_nodejs/templates/default/scalarium.js.erb new file mode 100644 index 0000000..c805a54 --- /dev/null +++ b/scalarium_nodejs/templates/default/scalarium.js.erb @@ -0,0 +1,2 @@ +exports.db = <%= @database.to_json %> +exports.memcached = <%= @memcached.to_json %> From a48dd85b3fbfb37ab52ee1bb17327c1288aebc8f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Daniel=20Hu=CC=88sch?= Date: Wed, 18 May 2011 15:12:54 +0200 Subject: [PATCH 034/334] Pass NODE_PATH when launching node.js apps. --- deploy/definitions/scalarium_nodejs.rb | 1 + scalarium_nodejs/templates/default/node_web_app.monitrc.erb | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/deploy/definitions/scalarium_nodejs.rb b/deploy/definitions/scalarium_nodejs.rb index 354ea91..3d678b8 100644 --- a/deploy/definitions/scalarium_nodejs.rb +++ b/deploy/definitions/scalarium_nodejs.rb @@ -13,6 +13,7 @@ group 'root' mode '0644' variables( + :deploy => deploy, :application_name => application, :monitored_script => "#{deploy[:deploy_to]}/current/server.js" ) diff --git a/scalarium_nodejs/templates/default/node_web_app.monitrc.erb b/scalarium_nodejs/templates/default/node_web_app.monitrc.erb index fe67c4b..fd4ca8b 100644 --- a/scalarium_nodejs/templates/default/node_web_app.monitrc.erb +++ b/scalarium_nodejs/templates/default/node_web_app.monitrc.erb @@ -1,5 +1,5 @@ check host node_web_app_<%= @application_name %> with address 127.0.0.1 - start program = "/usr/local/bin/node <%= @monitored_script %>" + start program = "/usr/bin/env NODE_PATH=/usr/local/lib/node_modules:<%= @deploy[:deploy_to] %>/current /usr/local/bin/node <%= @monitored_script %>" stop program = "/usr/bin/pkill -f 'node <%= @monitored_script %>'" if failed port 80 protocol HTTP request / From 67ac43fa401153be90acf4b6fe5085a1d18044d2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Daniel=20Hu=CC=88sch?= Date: Thu, 19 May 2011 06:50:40 +0200 Subject: [PATCH 035/334] Install global npm dependencies locally into every app root. --- dependencies/attributes/default.rb | 1 + deploy/definitions/scalarium_nodejs.rb | 15 +++++++++++++++ .../templates/default/node_web_app.monitrc.erb | 2 +- 3 files changed, 17 insertions(+), 1 deletion(-) diff --git a/dependencies/attributes/default.rb b/dependencies/attributes/default.rb index 3cf4b93..0da6068 100644 --- a/dependencies/attributes/default.rb +++ b/dependencies/attributes/default.rb @@ -1,5 +1,6 @@ default[:dependencies][:gems] = {} default[:dependencies][:debs] = {} +default[:dependencies][:npms] = {} default[:dependencies][:update_debs] = false default[:dependencies][:upgrade_debs] = false default[:dependencies][:upgrade_gems] = false diff --git a/deploy/definitions/scalarium_nodejs.rb b/deploy/definitions/scalarium_nodejs.rb index 3d678b8..114b102 100644 --- a/deploy/definitions/scalarium_nodejs.rb +++ b/deploy/definitions/scalarium_nodejs.rb @@ -6,6 +6,21 @@ action :nothing end + node[:dependencies][:npms].each do |npm, version| + execute "/usr/local/bin/npm install #{npm}" do + cwd "#{deploy[:deploy_to]}/current" + end + end + + template "#{deploy[:deploy_to]}/shared/config/scalarium.js" do + cookbook 'scalarium_nodejs' + source 'scalarium.js.erb' + mode '0660' + owner deploy[:user] + group deploy[:group] + variables(:database => deploy[:database], :memcached => deploy[:memcached], :roles => node[:scalarium][:roles]) + end + template "/etc/monit/conf.d/node_web_app-#{application}.monitrc" do source 'node_web_app.monitrc.erb' cookbook 'scalarium_nodejs' diff --git a/scalarium_nodejs/templates/default/node_web_app.monitrc.erb b/scalarium_nodejs/templates/default/node_web_app.monitrc.erb index fd4ca8b..f85f1ee 100644 --- a/scalarium_nodejs/templates/default/node_web_app.monitrc.erb +++ b/scalarium_nodejs/templates/default/node_web_app.monitrc.erb @@ -1,5 +1,5 @@ check host node_web_app_<%= @application_name %> with address 127.0.0.1 - start program = "/usr/bin/env NODE_PATH=/usr/local/lib/node_modules:<%= @deploy[:deploy_to] %>/current /usr/local/bin/node <%= @monitored_script %>" + start program = "/usr/bin/env NODE_PATH=<%= @deploy[:deploy_to] %>/current/node_modules:<%= @deploy[:deploy_to] %>/current /usr/local/bin/node <%= @monitored_script %>" stop program = "/usr/bin/pkill -f 'node <%= @monitored_script %>'" if failed port 80 protocol HTTP request / From 2f411f13058d5d47433e78ac5f39e7a5d2a636b3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Daniel=20Hu=CC=88sch?= Date: Thu, 19 May 2011 15:06:46 +0200 Subject: [PATCH 036/334] Handle node.js apps in haproxy. --- haproxy/templates/default/haproxy.cfg.erb | 63 ++++++++++++++++++++++- 1 file changed, 61 insertions(+), 2 deletions(-) diff --git a/haproxy/templates/default/haproxy.cfg.erb b/haproxy/templates/default/haproxy.cfg.erb index 07cfca2..77fc98d 100644 --- a/haproxy/templates/default/haproxy.cfg.erb +++ b/haproxy/templates/default/haproxy.cfg.erb @@ -31,7 +31,7 @@ defaults <% end -%> # Set up application listeners here. -<% if node[:haproxy][:rails_backends].blank? && node[:haproxy][:php_backends].blank? && node[:haproxy][:static_backends].blank? -%> +<% if node[:haproxy][:rails_backends].blank? && node[:haproxy][:php_backends].blank? && node[:haproxy][:nodejs_backends].blank? && node[:haproxy][:static_backends].blank? -%> listen application 0.0.0.0:80 # configure a fake backend as long as there are no real ones # this way HAProxy will not fail on a config check @@ -84,7 +84,30 @@ backend php_app_servers_ssl server <%= backend['name'] %> <%= backend['ip'] %>:443 weight <%= backend['backends'] || 10 %> maxconn <%= backend['backends'] * 2 %> check inter <%= node[:haproxy][:check_interval] %> <% end -%> <% end -%> - + +<% if !node[:haproxy][:nodejs_backends].empty? -%> +backend nodejs_app_servers + balance roundrobin + option redispatch + option httpclose + option forwardfor + option httpchk <%= node[:haproxy][:health_check_method] %> <%= node[:haproxy][:health_check_url] %> + <% node[:haproxy][:nodejs_backends].each do |backend| -%> + server <%= backend['name'] %> <%= backend['ip'] %>:80 weight <%= backend['backends'] || 10 %> maxconn <%= backend['backends'] * 2 %> check inter <%= node[:haproxy][:check_interval] %> + <% end -%> +<% end -%> + +<% if !node[:haproxy][:nodejs_backends].empty? -%> +backend nodejs_app_servers_ssl + mode tcp + balance roundrobin + option redispatch + option ssl-hello-chk + <% node[:haproxy][:nodejs_backends].each do |backend| -%> + server <%= backend['name'] %> <%= backend['ip'] %>:443 weight <%= backend['backends'] || 10 %> maxconn <%= backend['backends'] * 2 %> check inter <%= node[:haproxy][:check_interval] %> + <% end -%> +<% end -%> + <% if !node[:haproxy][:static_backends].empty? -%> backend static_servers balance roundrobin @@ -130,6 +153,16 @@ frontend http-in <% end -%> <% end -%> <% end -%> + + # all domains of node.js applications + <% node[:haproxy][:nodejs_applications].each do |app_name, app_config| -%> + <% app_config['domains'].each do |domain| -%> + acl nodejs_application_<%= app_name %>_domain_<%= domain.gsub(/[^\w.:-]/, '_') %> hdr_end(host) -i <%= domain %> + <% if app_config['mounted_at'] -%> + acl nodejs_application_<%= app_name %>_domain_<%= domain.gsub(/[^\w.:-]/, '_') %>_path path_beg <%= app_config['mounted_at'] %> + <% end -%> + <% end -%> + <% end -%> # all domains of static applications <% node[:haproxy][:static_applications].each do |app_name, app_config| -%> @@ -154,6 +187,18 @@ frontend http-in <% end -%> <% end -%> + <% unless node[:haproxy][:nodejs_applications].empty? || node[:haproxy][:nodejs_backends].empty? -%> + <% node[:haproxy][:nodejs_applications].each do |app_name, app_config| -%> + <% app_config['domains'].each do |domain| -%> + <% if app_config['mounted_at'] -%> + use_backend nodejs_app_servers if nodejs_application_<%= app_name %>_domain_<%= domain.gsub(/[^\w.:-]/, '_') %> nodejs_application_<%= app_name %>_domain_<%= domain %>_path + <% else -%> + use_backend nodejs_app_servers if nodejs_application_<%= app_name %>_domain_<%= domain.gsub(/[^\w.:-]/, '_') %> + <% end -%> + <% end -%> + <% end -%> + <% end -%> + <% unless node[:haproxy][:php_applications].empty? || node[:haproxy][:php_backends].empty? -%> <% node[:haproxy][:php_applications].each do |app_name, app_config| -%> <% app_config['domains'].each do |domain| -%> @@ -182,6 +227,8 @@ frontend http-in default_backend rails_app_servers <% elsif !node[:haproxy][:php_backends].empty? -%> default_backend php_app_servers + <% elsif !node[:haproxy][:nodejs_backends].empty? -%> + default_backend nodejs_app_servers <% elsif !node[:haproxy][:static_backends].empty? -%> default_backend static_servers <% end -%> @@ -203,6 +250,13 @@ frontend https-in acl php_applications_ssl hdr_end(host) -i <%= domain %> <% end -%> <% end -%> + + # all domains of node.js applications + <% node[:haproxy][:nodejs_applications].each do |app_name, app_config| -%> + <% app_config['domains'].each do |domain| -%> + acl nodejs_applications_ssl hdr_end(host) -i <%= domain %> + <% end -%> + <% end -%> # all domains of static applications <% node[:haproxy][:static_applications].each do |app_name, app_config| -%> @@ -217,6 +271,9 @@ frontend https-in <% unless node[:haproxy][:php_applications].empty? || node[:haproxy][:php_backends].empty? -%> use_backend php_app_servers_ssl if php_applications_ssl <% end -%> + <% unless node[:haproxy][:nodejs_applications].empty? || node[:haproxy][:nodejs_backends].empty? -%> + use_backend nodejs_app_servers_ssl if nodejs_applications_ssl + <% end -%> <% unless node[:haproxy][:static_applications].empty? || node[:haproxy][:static_backends].empty? -%> use_backend static_servers_ssl if static_applications_ssl <% end -%> @@ -225,6 +282,8 @@ frontend https-in default_backend rails_app_servers_ssl <% elsif !node[:haproxy][:php_backends].empty? -%> default_backend php_app_servers_ssl + <% elsif !node[:haproxy][:nodejs_backends].empty? -%> + default_backend nodejs_app_servers_ssl <% elsif !node[:haproxy][:static_backends].empty? -%> default_backend static_servers_ssl <% end -%> From 219ad54effb2bed037e12b032ce3b39cee4be90f Mon Sep 17 00:00:00 2001 From: Jonathan Weiss Date: Thu, 19 May 2011 16:18:17 +0200 Subject: [PATCH 037/334] remove example/random passwords - so that people are not confused. Scalarium generates a random set for evey role. --- scalarium.json | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/scalarium.json b/scalarium.json index 0f159a3..ebbbc6e 100644 --- a/scalarium.json +++ b/scalarium.json @@ -20,7 +20,7 @@ }, "mysql": { "debian_sys_maintainer_user": "root", - "debian_sys_maintainer_password": "ldyr59e14z", + "debian_sys_maintainer_password": "XXXXXXXX", "ec2_path": "/vol/mysql/data", "use_percona_xtradb": false, "tunable": { @@ -29,7 +29,7 @@ "clients": [ ], - "server_root_password": "ldyz59e14r" + "server_root_password": "XXXXXXXXX" }, "passenger": { "max_pool_size": 8, @@ -99,7 +99,7 @@ "username": "root", "database": "photopoll", "host": "localhost", - "password": "ldyz59e14r" + "password": "XXXXXXXXXXX" }, "mounted_at": null, "rails_env": "production", From 718f88c16a3fd0c198ace4e3c2358a57d0e06222 Mon Sep 17 00:00:00 2001 From: Jonathan Weiss Date: Thu, 24 Mar 2011 18:45:42 +0100 Subject: [PATCH 038/334] do not modify existing deploy user --- deploy/definitions/scalarium_deploy_user.rb | 1 + 1 file changed, 1 insertion(+) diff --git a/deploy/definitions/scalarium_deploy_user.rb b/deploy/definitions/scalarium_deploy_user.rb index a998d60..28b16a0 100644 --- a/deploy/definitions/scalarium_deploy_user.rb +++ b/deploy/definitions/scalarium_deploy_user.rb @@ -19,3 +19,4 @@ end end end + From a006dcd9558d1b5efc97565bcf65cc2922939483 Mon Sep 17 00:00:00 2001 From: Jonathan Weiss Date: Thu, 24 Mar 2011 19:14:07 +0100 Subject: [PATCH 039/334] get rid of user modify hack and set defaults for deploy user shell --- deploy/definitions/scalarium_deploy_user.rb | 6 ------ 1 file changed, 6 deletions(-) diff --git a/deploy/definitions/scalarium_deploy_user.rb b/deploy/definitions/scalarium_deploy_user.rb index 28b16a0..12ac8aa 100644 --- a/deploy/definitions/scalarium_deploy_user.rb +++ b/deploy/definitions/scalarium_deploy_user.rb @@ -11,12 +11,6 @@ home deploy[:home] supports :manage_home => true shell deploy[:shell] - - not_if do - existing_usernames = [] - Etc.passwd {|user| existing_usernames << user['name']} - existing_usernames.include?(deploy[:user]) - end end end From 3fc9f0924a3542d5ae40f499832c7ce5ca1cf15e Mon Sep 17 00:00:00 2001 From: Jonathan Weiss Date: Fri, 15 Apr 2011 12:31:31 +0200 Subject: [PATCH 040/334] do not force 443 port on Apache --- apache2/recipes/mod_ssl.rb | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/apache2/recipes/mod_ssl.rb b/apache2/recipes/mod_ssl.rb index f6425b0..283d6ac 100644 --- a/apache2/recipes/mod_ssl.rb +++ b/apache2/recipes/mod_ssl.rb @@ -31,9 +31,7 @@ template "#{node[:apache][:dir]}/ports.conf" do source "ports.conf.erb" - group "root" - owner "root" - mode 0644 + variables :apache_listen_ports => node[:apache][:listen_ports] notifies :restart, resources(:service => "apache2") end From 9d1d40843819e95bff2bd5dfe1c26a26bb005bb1 Mon Sep 17 00:00:00 2001 From: Jonathan Weiss Date: Fri, 15 Apr 2011 13:03:44 +0200 Subject: [PATCH 041/334] use Apache listen ports via attributes --- apache2/recipes/mod_ssl.rb | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/apache2/recipes/mod_ssl.rb b/apache2/recipes/mod_ssl.rb index 283d6ac..f6425b0 100644 --- a/apache2/recipes/mod_ssl.rb +++ b/apache2/recipes/mod_ssl.rb @@ -31,7 +31,9 @@ template "#{node[:apache][:dir]}/ports.conf" do source "ports.conf.erb" - variables :apache_listen_ports => node[:apache][:listen_ports] + group "root" + owner "root" + mode 0644 notifies :restart, resources(:service => "apache2") end From d04aa208150bbeacb7d7f77000af201bbf8dccb7 Mon Sep 17 00:00:00 2001 From: Jonathan Weiss Date: Wed, 13 Apr 2011 12:47:13 +0200 Subject: [PATCH 042/334] when copying the default install mysql datadir over to the EBS, get rid of innodb logfiles in case the user has different defaults --- mysql/recipes/server.rb | 1 + 1 file changed, 1 insertion(+) diff --git a/mysql/recipes/server.rb b/mysql/recipes/server.rb index 4e4fc3f..0611b56 100644 --- a/mysql/recipes/server.rb +++ b/mysql/recipes/server.rb @@ -44,3 +44,4 @@ service "mysql" do action :start end + From 25ccd91dac839a7daf19a6377daf557c60728ae5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Daniel=20Hu=CC=88sch?= Date: Wed, 20 Apr 2011 12:09:26 +0200 Subject: [PATCH 043/334] Write database.yml before checkout. The ideal behaviour would be to wait for the checkout in order to be able to examine Gemfile, application.rb and the like to find out what database adapter is most appropriate. The database config also has to be in place before deploy hooks are triggered, which makes it a bit tricky. These checks will be readded as soon as we have a fix for Chef that prevents Chef from removing generated template files too early. --- deploy/definitions/scalarium_rails.rb | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/deploy/definitions/scalarium_rails.rb b/deploy/definitions/scalarium_rails.rb index 52ad321..790f5db 100644 --- a/deploy/definitions/scalarium_rails.rb +++ b/deploy/definitions/scalarium_rails.rb @@ -4,6 +4,16 @@ include_recipe deploy[:stack][:recipe] + # write out database.yml + template "#{deploy[:deploy_to]}/shared/config/database.yml" do + cookbook "rails" + source "database.yml.erb" + mode "0660" + owner deploy[:user] + group deploy[:group] + variables(:database => deploy[:database], :environment => deploy[:rails_env]) + end + # write out memcached.yml template "#{deploy[:deploy_to]}/shared/config/memcached.yml" do cookbook "rails" From be36ebdcfebf66bfa80de41bfec6b21c24acf354 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Daniel=20Hu=CC=88sch?= Date: Wed, 20 Apr 2011 12:48:10 +0200 Subject: [PATCH 044/334] Force symlinking of config files in before_migrate block. --- deploy/definitions/scalarium_deploy.rb | 1 + 1 file changed, 1 insertion(+) diff --git a/deploy/definitions/scalarium_deploy.rb b/deploy/definitions/scalarium_deploy.rb index fc0f911..d7f3e92 100644 --- a/deploy/definitions/scalarium_deploy.rb +++ b/deploy/definitions/scalarium_deploy.rb @@ -120,3 +120,4 @@ variables( :log_dirs => ["#{deploy[:deploy_to]}/shared/log" ] ) end end + From 18376314f4d96e3824495b58016e0ebd66baecde Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Daniel=20Hu=CC=88sch?= Date: Wed, 20 Apr 2011 15:17:28 +0200 Subject: [PATCH 045/334] Run bundler from within before_migrate hook script. --- deploy/definitions/scalarium_deploy.rb | 1 - 1 file changed, 1 deletion(-) diff --git a/deploy/definitions/scalarium_deploy.rb b/deploy/definitions/scalarium_deploy.rb index d7f3e92..fc0f911 100644 --- a/deploy/definitions/scalarium_deploy.rb +++ b/deploy/definitions/scalarium_deploy.rb @@ -120,4 +120,3 @@ variables( :log_dirs => ["#{deploy[:deploy_to]}/shared/log" ] ) end end - From 88869e85e59ccac5c5354180a233acbaae608ec2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Daniel=20Hu=CC=88sch?= Date: Wed, 27 Apr 2011 14:18:53 +0200 Subject: [PATCH 046/334] Create db config and run bundler before deploy hooks. --- deploy/definitions/scalarium_rails.rb | 10 ---------- 1 file changed, 10 deletions(-) diff --git a/deploy/definitions/scalarium_rails.rb b/deploy/definitions/scalarium_rails.rb index 790f5db..52ad321 100644 --- a/deploy/definitions/scalarium_rails.rb +++ b/deploy/definitions/scalarium_rails.rb @@ -4,16 +4,6 @@ include_recipe deploy[:stack][:recipe] - # write out database.yml - template "#{deploy[:deploy_to]}/shared/config/database.yml" do - cookbook "rails" - source "database.yml.erb" - mode "0660" - owner deploy[:user] - group deploy[:group] - variables(:database => deploy[:database], :environment => deploy[:rails_env]) - end - # write out memcached.yml template "#{deploy[:deploy_to]}/shared/config/memcached.yml" do cookbook "rails" From 833d8e466b50d0112fcc8d68cd2053805cf2348e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Daniel=20Hu=CC=88sch?= Date: Fri, 20 May 2011 18:57:12 +0200 Subject: [PATCH 047/334] Re-add check to only handle deploy user if it doesn't exist yet --- deploy/definitions/scalarium_deploy_user.rb | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/deploy/definitions/scalarium_deploy_user.rb b/deploy/definitions/scalarium_deploy_user.rb index 12ac8aa..770335e 100644 --- a/deploy/definitions/scalarium_deploy_user.rb +++ b/deploy/definitions/scalarium_deploy_user.rb @@ -11,6 +11,11 @@ home deploy[:home] supports :manage_home => true shell deploy[:shell] + not_if do + existing_usernames = [] + Etc.passwd {|user| existing_usernames << user['name']} + existing_usernames.include?(deploy[:user]) + end end end From 586038b7201e59211f34b5bae59bc312e6da9f19 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Daniel=20Hu=CC=88sch?= Date: Fri, 20 May 2011 18:57:34 +0200 Subject: [PATCH 048/334] Don't create user whose username is taken. --- ssh_users/libraries/user.rb | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/ssh_users/libraries/user.rb b/ssh_users/libraries/user.rb index 2b621f9..73acf31 100644 --- a/ssh_users/libraries/user.rb +++ b/ssh_users/libraries/user.rb @@ -22,8 +22,10 @@ def load_existing_users def setup_user(params) existing_users = load_existing_users - if existing_users.include?(params[:uid]) + if existing_users.has_key?(params[:uid]) Chef::Log.info("UID #{params[:uid]} is taken, not setting up user #{params[:name]}") + elsif existing_users.has_value?(params[:name]) + Chef::Log.info("Username #{params[:name]} is taken, not setting up user #{params[:name]}") else Chef::Log.info("setting up user #{params[:name]}") user params[:name] do From a6672eb97120fb2ccfc5a3908b24e1f55decbcbe Mon Sep 17 00:00:00 2001 From: Jonathan Weiss Date: Tue, 24 May 2011 18:10:49 +0200 Subject: [PATCH 049/334] add includedir statement for sudoers --- ssh_users/templates/default/sudoers.erb | 2 ++ 1 file changed, 2 insertions(+) diff --git a/ssh_users/templates/default/sudoers.erb b/ssh_users/templates/default/sudoers.erb index 3c1b1f3..ae916f3 100644 --- a/ssh_users/templates/default/sudoers.erb +++ b/ssh_users/templates/default/sudoers.erb @@ -2,6 +2,8 @@ # This file MUST be edited with the 'visudo' command as root. # See the man page for details on how to write a sudoers file. +#includedir /etc/sudoers.d + Defaults env_reset # Host alias specification From 3ee8932c87c252801a3084960cdd7c881a13152d Mon Sep 17 00:00:00 2001 From: Jonathan Weiss Date: Tue, 31 May 2011 17:27:23 +0200 Subject: [PATCH 050/334] update Scalarium logo in Ganglia --- .../files/default/scalarium.tar.gz | Bin 63997 -> 67816 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/scalarium_ganglia/files/default/scalarium.tar.gz b/scalarium_ganglia/files/default/scalarium.tar.gz index bb319756d27dd85a4ace5880e6116d48199677e0..0668849646fa399bfc42e4b3e4343fe06567d93b 100644 GIT binary patch delta 65702 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 delta 61820 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Μ=`EgiZSZuZ@4e9Ouepbf;ca&G12rhe z4Ko!(C%v-UQN?>FjaPqJtq)d|dw*{0_@HS^^i#(Wl{|FH#enxa_u|ZhQrrY?KR*UB z=B#pF+p1`UZhOVc+!PWYh@Ot>%-vR1d`@p~yF%+(O5YqNK?R+OoKW3-9fxm_n6KNO zMQqu9;5GXJWD67Lxt)pzvCWY|6uMMx;p)-2wH)d?4vuh^;F*(wyI zL61=iMM|yNT4L+kE)*$H7#=NEgz8 z1M|cyKRHRr$mJ;)Yg4DvgU}tk8|&9wb-Xyyo|wmH{OrSCllUjvK9ap^p(Ys9TJ{%M z#8_GY?m6dphVOr#I{WjbBOjYz;su&lKe|BM6&Q4<=rFFV%xTh8#o%f}pElQ8S5 zkgaT1!)hTVle^qCOzV7eQj|mQ-h@dC+vs?GLC_p-or34CQs8;3>To%DriE$40OIg; z+MUal?;;MHaB7@oLKmk9vP2W8X)j$*4=Z`*ER!PTAMk&C;9{d**g2LUpU(<87v7(g zX7AtZ-D&!E_(&sO>XFvO%yz?SrplrIV^>e_a@+ajfRc$#qB@FNTVfD#H)+#J!N)@z z8!X0Hm5@3KC6@Z;IgKu6p5Gu!+!_L}0wXVM-IE(p|3u-Cy*~k@F6a6i9HQC0hQOYxY$zoH5ZpV#B zL;}kA{U7TL$n1$L7Y}=UP`OfjS}=B)-NPUh$*FXn?UQxwyLxc7u02~caPv}w7DYsu z`L#Q>EfTWVg5n;8wNr6DiI-_!Q`aF>8IMVNQg?r6<3YWUpnEPRn3Mx=FJ%dt3g#a< zRDv?o58)3{my~`o)px=2WW{5yw^zqrTTWNGbdn~j?fT%cVZ=*1lx3tRuNu&2C09a?dh$Dd~P~MIX$*bw;F*%NalA|GxI#I_;ta379I?neS1Qy#?-932kXS(9reXOddO?z z00lS86RD0GQEI7k)@KB3dA5He@PWUmOv2`1H*?kAg-_e?BjW@KPsi_@^+!|D^ zVeIkIT}7SNsPkoKw$~XKd_iW?z5>%n(x1b*+>89e%vZ0by|p=qJ&#_mwnkmOmxEp~ zdMi_Ez9c`VM5S4#<0to6f5vnHuJeE2AR>mnJJ7;*W9d5UywlWTyCRl z@OjU?mE%+D!d)jsX_`>QgM9LJvP;*ult`IJoMmv9=yBb@E}G_ zQLnBFCoNO9pI)-{8CD^#w{SbYtjSecGQ>1j)%41-sF^W^8O>Yn^tr7u+DD8Z+>^Ny z?qqZOc?_-0JDtZt(KZ~=oL7Hi+-A1doYIHdokBwDb|tCmKYyHgOPk+@U}SIRc+D*J z_^M0%ten|=;mrxj0oU5oR!s%CxnlT&;AVRF{8Ljr?@kNlM4C7Y=47Opu7&HwUI-e0 za&j_CU&AP6@T`$iN8VL;9>2|N>^6$I>wJS4?!DD*8hyw8(R1D>+A)7|)RS0Wt*Mpk{?8rRIO-*s>tj<&Mx20vDLk5eQJe)@}S3lX#7Cf+Sqw4dk ze&J(>xAPoj!t#6wul7dWNx2w^;mL`}tvSDLLv}5_IwX38rmb3`N3X7EYi|3~?f1Ln z>TA@tygu7hE8l^^Mg)KI*p}*MGo=#l%Sml|(+5{nsek!_$BjU*m+&}2t~?jkwTCY;;Z2N~>2|adh8Tz1)33R9 zo2zG-p11>t9GxCiFSDE=l_B8x%XxoTUlrHOuF-1! z0ugnEZJF&yOvB=48+GM#?i_jYp+95{ z3kxA_ogLe+eD_5{#efa1l95tqR7g{|G^Ia(2yM~*`dx8m z{tVcIIJ$o456JT+t5oqBrpJ#5Ki3+})8u(Cp~qt@7`E;+<|G6D0kuz}y8OVJ8ndsM z@FO`rxwa_#H~YdjoZo(IpIuedhVlE2L#^tq8*+cSv1@7_0*dXO!uKTCd4=jQ*u;wf zQo@Sd1mR+K(@DIX>fTFR(M?P}HknpqI8kxw!KiQc#YR&P>4%rM zHOqf;AM)X(4VvhL?s9p~^*P&k6z6@#jWIuot*U<_tm^SoAwFK(cv$klerF_)X|o0; z1*Z2X)tKjgqaL7>+t5#WkNUlD3#mQ(Wuc2bh+TY@+{F-jN9w9}YC5f!ZJLDb^lNpv z3*h#ptTp~H4PU#78wd20Mc!7h9=a~)n`(bv^L2+I$N8C=w)}&cIhP_`Fz9!0S@^HZ z;BF*Yr6A1g={)6bMXlcXF7WZyM;xWzoOHqiiuGC7yVa%FX8L5oO+z0$+_{+_Qt$3- zdHqP!rI5r3ZyFbw>fYJ##3NS&hc25Ngrv%Z>DOL3Sng6o6@T&UwHd<%K%!T3*I0jb zeslHtPdOXxhY4mny%-KU9hP%EvkARNCvaEo&BeLeKJ05a3gLK(zENX{tdFkxd}0rs z){uB)iyFjLBs27lAO~I0jxqwz3EbCnJ+g1c9%Tg!9?uG6sNC(!5Vy5B{~3=_NoE1F zZtsP_H>MgF&ebzr>0kZao4u*EkduFT&*-y_p6UW>?g?kQL?80DMmN&k&1BAbpCcNe zvjg^U+;+dEW5R=JtH-w90xFNOtZKaqpKjincEGUtRP(C^Z(m;q@Q#4En<1NmPxPx% zCdkU#(XJ|!z9b&ppndzL`?#!#7A#2J^ih0R0!1$B<=xx)8}0Hws0J8r-t&JcFn3kI zn300&IX)c2EI)6SPHaZ#@T^8xz!2;k0sg||WgTl$)YkF5h!f>E&naJ+x-!s|@m51#b*e12Qad5KeBI7llk7RM zgFd@<2Jk2-)#iE|dQ|9Sqo05A7Jr~W)Ovyc%XP+vJ7WApyIF)JnK>&{njY%3UUN=N zEN@O^9DT{V|1KIm3%BoQl_Sd2yR^$LjGm50ZscA^ndQsuQAVNh#Y00s-6JUMBt1+3 zvibq!IFiDRDDhEKsC}82$=|IjSgf__GG03OwDYj~SCv~QU?&Tc=X8HLh1t>m+yTMq zFN8T=Zq2usKiB_%X#atU3yAIeJqDnk+kZra#l%GB>^~C1qLM`WkK`Zw&p%TBKeYec zfD5*&nAS&uLG;1iptcQy%K=f-A^w=2IBAj9D z_ZTHk1ve;$8W5OV;_iRIEpZ`R9-fZBE2@O&P~J*315r}1UAubKA~TQ(6|2G>dTKp{ zb1;rUboIwmaSt2VVDN55%hU0UA$MOdGX)J?g~ZYV9}4EmZ4I3*=9M3=Di!V9^5s|~ zlS2t?q8KtTlM9-7>f}`*$ISw#)8uVp;!ny8RCqs&xu?^xe|LXG&;5a?FO%NI($zS3 zx!AsM8rP*ca^gVXle@hoxW*l?EAz`91Vz34;#!=%CLE$mz34-;n=WQMp6k<=;-YGb zj{S@j;D^IYVFpq?3RGaqrQT!l_ZzbQV#Mj49Bwz5iSMt(8BnI^BsiMj@ zhTUxG*S)n>uzY_rE>wfhjE2#6M5g~)s^9?2fpjrd`El0dn^p3LYSwWaC(JI0r}xb~ zx7;C+B-wml?vWvCkW)smOa#{Yn$@Yms$_HKC$nb{^3`9<>D#}AeU`3qj%g1aR7TUa zhCS?l{sPIWvp1qq>y!!2)=9hd7MFWw$Dg)x^~XwZQ=WeWcF-?15naiJL*4Zo2S_~& zcCPf(K+89=(>dpxG`QriP{3FmUpn6I?xs=Sb>UiD?m&V?!j21{-nE{&cAcF`pU2=~ z>^|@Fjh9PdL-JDjWXqVGB?>g^H)7M)fyXAS)?o0b@MB=QRpNQUe zO2AOw7pQ-UYOkCKR(hj^DHOUYkVWHy;S@Mka{kK6^l$=^khtL{9{Sp$DZTnzs(`9ZtM>T{d9)V!Zm^cWbiR zmD5dMC0D|ACVZ~?Rh#zC#$x;Lo1-S~1ocwz%A9|Dfv$kpCbeo9W%+V*`Kn929?aM+ z*~j0EsTK+8xOmlc3ll$|y>D<4;hLwUUub2bfG^MC_mi2eRUA%nI!+#DS`Y6JSbv$t z^uBuppGsu%amk)?I2oQ5eB(7;kD%G{_z$_~4sS}APNqD`P5jV6=(SF^s>klT6uI%1 zF`j>2Z*aTZZMVcc6$`_SAz@~-Z5w>NvQsA0gg>()kGmPym$3M>MBK@ozGi=WoZ${z zmf3U3>s!`dXJ=8gPCkZr%#ZHlL#R;WuBaXA6nt~X`LI9xE2TRuzC4!rqI_I$rMcgw zeQX*})7^V{95@_X6X~@~h1F0G`76WN<7j_bDl+v0Kl3O`w@jNG@3!zUt1-lDiv=7X z+QDb6I-C-Aa4kmaMrj^P|Ei+~72(eJJP}r3c{hG4Lr5Jj%QXw>u{!1(ZVfyqBvSV)|;+B7siZDK8y%{ayJMMr2WP`*jbafWvz@w`yuxFbrI~ zR_<#gtH992W^(?XCH+V9Bk!Z3`ge>v`P}oJ6$N#uQjHJX=PKQDw@KfuVvLT~pfP8? zkAV;WsbX_z#NlrcgnG6@_>-5lsvdvsVa5AIV6R))YnE7+rWPzq37b8#js}w!1HNvf zv)xw#S{s3vyx~{fBbhb#M!;L)^@;`qne-jEJT3gI_VdcfNxgW4q>q_Q2?@C|lZvVO zTAn2@@$AT%uRTwv*S49EF-_^k5zuZ`xMr6)aG+FMOEo@YS=PN%#T z*q7X3>}vR|vZX-4Hu8(=KQhbSlam3meKX-Ar~w7r9bM8&rwWhKX+*LS<~hZJvbyY`loSAfy*hR67;D}A_d zIynyXtX56i@aLCXrw@e#3RC-&633iP74(lI%B*m=JI=`ZRGt5j&~|@%)>7*HJGOk5 zw9$LA)99Q20mhrv+An_IlkI7;-lIJ-ag>)Pm_^mHenXA@yN$8Tao%zm*28?KM_i(O zcligGc|N~+I=x#dd1U*c?Ox{Q(X#d9JOPP)EG#^S@?O?^RH%60dzibQkuv6bdtKGh z(5)K%QMU|`4=C(fliz=*hxu~F3fRnWOhFl*>2(w`JL5wWjP}4&bQ@+O9xGXEJ*5b* zmUg+H>!;5H&xzug@^nk_oC%M6du(WW=(A2??o3RQhzvT>&%@W}k=2*d)!Y0!seC_g zV7(n1^|9;Zy4JpDAF*2PQ^Wi8BhrHj+am%Q9DFyP=1u4>7)gH#tvd!Yn30%Kuiag) zI&pXKjq#b`0@_XMu4h`+_v7b#5D!tRm=B8$!G-evYDCsojoX%4!&C-80|6U$xe5A^%=7)tpQd$0uN$qtjsoUdy zd$O_vXtaOP8IIeb!pD|Lnah?{OU^R zl(OlzT7jJF6z3p{Td@bT%aCSnhaGp)`Ly4;48Im<5L2CKLZ}aXGjKkJ-hv)CJrW|D zuF-#buajz;{)N)cgGlGbce;$?qgeH-7&+Jd(yaZBEMA;^0&%xrUq}y%P8*+jcKa60 z#%k>&Mh%gJv@Jf~jnKPZcbW@K%5228nCc6Ox0&yf-Ww|s6vBV*L>y|e&O4K(FLBQe zZ|>Q|a~YnMy$(V5EQ^$^-;NGSj9x)qN1cCHV%-oH($-J1WWDl@Eo?n7*cST&!(1KS ztf>6O8*bJ#*2C{q=>Wa|iR&2k%|?nzcxr=8?bW)61MQzH?>JCg?k~I`r*C@wxrtne z!Lj68Ux+S~{Du;G{F;&AujvKvO-QoC!Oik@pbbl8MH|*r=ldDk_+F@9w^7QJ7-)ZG zji+-vnn;-t$Q+c0y+3ezhA~8oE6G9$=BKJOx+VHk_We8Wwqr6JB;Qe}(8#yxm2bXK z-~ZB7c6$G?>X(gIk+L5vdfsrdUo?sR^q}qbVOuo*+}HM|hE8p{0s;lJM90}_Y&jXWH#UEoEnK!R`Ra?Jl1Cp76?K$HR?i+DC@Ag_JIuUx zSY15!%n0WQmr%)e_SVvjDA`v!cLaR&N^^`^1c7$%hKD3VB(Hwjmh&wO>oyYX?WEcWrFva5ghVnz2@ z??l1njd0p)KZ$5b+!P(g63KS|!_IE3IBM^)pvL=DuDu6@5l_#_!S*P* z)3X=tjdHom7(%DVRQti~+MXV9b=;OvQG)}DC%I{3&UX3jJM*P-w&k!Z|D{tKOI;Zg z{f_tL^1pJpNMn2Vi4Bymyq13*mm3j@E^ZylO&%I$KCn^4a*ICAwMbfr1N<)#Xbohu zb6Av5bY0`dj|#;ZxoCyswCaM#&v3UhSl_zc+Mz2O&B$1RGJctzLn;3{x#Sj8V$;_c z^R(M_s?nkc-nBbCOg>a@EFi%uvsyEt7`kiZ>DBzV6M1K`YxW5>#d&{n`!ik;GBsW& zzTM}E$BrK1vqoWg_ZgYE!+ZkQjhtjC>!&aiiu__YQ`9S6z?-7++=Qtr>16SukvKyd z31`wsP>gdVzgQQYTJ7(#30Bav$!g!8gMKJ(b$G;G`mj?)A+CmlM%T9Tcdi|M;k%=5 zyP(~5gR>ER>(-uZx^;hP%K6$JZo*_|co}*kqh;p~=kCV4Me1HpZ>BW8RNU|lay7~L zt?;3X!y@l(j_~23_xXDS*Ii;e)fv9gcSC&6X;z-FkCUmwu#Tvjj{V6){3F*KA1QjZ z9~H=zI>&4^m3q^G-BvgS$7|*>0!wJ2I`}f${nc=%h1#{#n&C2`By0w?D zkx}TOE-aF+9(?UW^R>#*{fKUU=Ia5`t}Pbp@Ko=kbFVTy;FRC+>NNIoryxAz1m~dZ z9c*FlHt!U{_|<51E8s3iCd|-xp*OG>9tks%j5El$3SmUD^%Tj)=hC z;$Dq<_D+V-RyqbG+nVAce(8RV9>aq3J9*fj@I7^A@$fjl&2xQo-T}WYdkkYuSH#M0vVlv~`z~z}8OWBu4BJ)+K+1?*jbPQLSc`RKAJnN{!t( zhxBS|X|INsZn=93Zx}PP{AhNI1g181g+`>6RLuGn4qFZ6$7F7`&W^oH@o4{6dZrVc zKF%s{dNV(ae1pVw;kO5;?`sf!){`Z6zDAld5jLeVGq|~8D9xxS4YRjBGS&YzqC@T* zWMmdMsLFpZYZhWl7m&w$KAiKJi@(^zSB53mYc5Qi$T3+74z8VPzjbi@9eY^Y_K|%& zH!ST;TIHmUU?dKn(oZ@a(|>H8LRpoa`zh2ydDMcWUOalU7n7b*&TRVR z6Aum7Teg!2kAc=R_r=yT$Op2PM=uARh4q5guw#FORRv`2g#4kpbnfZJ{Lm@?Bb`Xd z@XucOmHF&{efgpNPh40)@;5nv{lfky0z6%?|A|PD?0Pf64wwK?&TXpkCqt zMn$=bdi5HT2N>llDry?w3cOFY|Ix2z6iZDB*kxrpO*jU~&nLYk(VA;!cN% zZn=LGf7c4HLbm<^9Y9S*Hvi38|C~YdUvL}@w;FNkVFMcjqu579xMh6z-PfY0LmJQg z$o^Nqt)a8?u-eE~r2?Ele@jr>;mOGCcWaD$^FH*OOlN(A&_ZT%S-$egyT){bX1|g| z+u^1e?p34hZsX}+TTl3c_QBckm_nV8vGjk%#{*cd_cooNP7qIH>&u{_DULbk(0bB+ ziT#fn5@JPx0~N=w#>fQ9Q7dS7TP7(Z8tLxqjI#n@Ed>R zmX8`M*Feg89vb%PVeXc+Yh!1Rbo%SL?S_Azphtv-Rsd?->D~D@lFjm)3Wpon?!8Xy z=X-3PFd*|K>PXJT;;t(g(XVxyp{?ACk6t$6QcTgiok9U-G)9>Tcf$_a8ZU zbaeN=Op99gu(6Py{P@PiQf*0a8T_NJe98L^zcEr}WN*zC<}R^NZp;d;UV z^c(A-aop%};pVC7!7SW2NN(<{z&Dm$ou1m>-Y+)_4Yg!v$aYS0_`5o%AXm@Qt~WUt zkLt9^US-z`JvN0+H(q!o^(M{YY#u>ZM~EsaZdD&$k6;wZV8~ywV2yvJ+)ovHbZ>~= zMs&YMcws?kes21$EE=b5NZLT+Yj}YCmluxgZ^V<_OJL1Ji{YIUhf9kR2)Xt9%#Yka zjH^S8%^``O(tSv-QmJ!;yyn_e8a$ssykJ$uh#=icUMv*;@A z8FtL0i+MK=ycx{4dzQ`E?$dnOT4^#`wA|M68tycVQu7wx4XS(bnL?1^@->nZR*!#+&E$m?uQ zf!S<7gI7K0KeSC>qRDd(KngcDz!*wYns+JVH9{N{l3h;=!K-O@5QlQBtnT2Jr>*rj zEjvO|Op>lRXFc{q3M2|pacZY_3$%XD{^XHNog4Aobmo7YpwBl*`V}?!Q%tx7A4i z`N<8&XAOU!O<89*IPjf`v&1;)>m_cex<*}PU^m7A_0Vap+%I!UY{Fpc?ue0#GH@R^ zg%5lcAHVi!?3(VhzfkMtT6OhyE4@!XPiYxTJ@t5o+^xP0!4Evu&iiykHwcYp3Os$G zX^c$ei0FFy0c94rQC|M+CF*nL$nnG^|0f9&(?@@~!$LZ;Q{+u&Z#tv7e2#Kh$)^lyoU)JeAc6mYVg$us$yGzi&n7U-Qs) z^#LhPC4!08UZK&=t!v-22RKLV^Lv?Jfy&E10~_W^72){s_A67TmbG&Y&ZfDFn{$Hk zm;isYJ?s91!J{476W<`0jp1+12lllQJOnG4hAaYD4oG~BUh_`MZFBgk$g;Ako(?+2 z%dJNc4Xxq+fh^}5rTJtINxY*xY2cEZazzH}mn~7;-m%Z0lUJ2VxVlOW?n&8#O^Au7 zFpkgYEM|7XMMPEq4) z0b20e&(7*k8kK~88u;WI+HEOPad6uv;bWSZJAwYYcAux;`Po&sCDy-x&Hk-T$*tLg zO>WYk%~P6;)HE)$Bh~Np(WM*kJofE@Cp_gn)8O7)^Ex{I_`XYM!9uLiwCC})!v}wM zdB4q4z;tt9(jQr;XarrkOFs~yt_MG?`&ws5gsx{!M?|xqw(_%{^KYo3$pWm}tQ-jm zz7_#_t_F^^2tg*9y~T&*LXvZngRby#jNTG?Wn3D}`O5IYHwa%1$MNc$?E*>#S;wD! zgM@js9Sf|yZqcgdw@U^u#3itSRZxF&qf|=<0=hdfc9-}QjJpHuEziNz?e^1+N2)_x zEXDfwxIP&Pz4lc3^f0X}4Azcr*0>z>Qf|j%zg@eT+%5fj$HhrK_**YQhw$08HusN5xOdil>u2RK=u3%NPlyz`Hfq#Kp)~&3p zP=+09_ao{W`E~3MDKd;*ZJdAUx=Qf%oy;osr>ls)5*7$!zQh-Js?z9ERDP20QNLi* zTEq3}fU0%G9rqXHZCa9H;$jSgXpRnF^E@@@5_4=0U{klO@jVluT{jreY-X~&HNE91p6yLZU>!5$Tbo8o2UmEM1?46HK&A9DA z)^BrKU4M6PT5)Q1uHb)82dmL<5U%{l+7$CJ-q0@wX#!d7T}6p3G~wSMA|;IDA4Z-| z+lA+j(dFj9is(~0=Z@ayQhM=$?z*yZX`AZGH@NN4@yNH8uKP921z2MTs9edmcs?zWJtIdDxX>xLC>PDFC*!58L1!jSfUFp|lWZ>j@tQl((3FF7CW(Mit`y040T=-an@OPEB=Dvs);y_GCoOaii<>`kvLHlFYdz-|%6$LzV9dHLY! z`+?lkoLW9yjJMd`WUjFA40zR^spEe?^yKY@BZ?Ylgy@ZbR5!LXCz{A6%LuAC0=UD9 zIug2PU!X2!Z{a`u%EQS@d!yo(1AKT^IX{sjJEGhZsX6ygt<5w%-rg;_J#)K*W>wkE ztnC90?*QSxXtZ}kM^AodMNZ`5+{mxRB~)(gbaG>@7E&2adzpJEO@{AXIZr!sZ|$2* zWMbQ;vxUxo;w9c$Y^EoGvUdzvG~+|t7{M2L%tSlMQ$~J34WEk@pRA0^2(VGhOHZ%U!cPi z1#fB4hG{73cXu74kh&kllr@PB?SnOi4Zll`H%u!p6yJPrs}-lRfLHm9ep5+>{7}46 zRjpj-+tX%OcCqwkA)eEVQtbDj*z?%$merPyO|tIqKHebOJaZZiaP>tt>V3--h8Hvw`8OFG1HDVFZ=Mg0RjvmrEo_?Lf=WY zzZ=n`Zj^0Sk51S;dLgO5=azPtE6W)wzle7YmSuLL+rxzGUo)dwY4SgDP#D8+t~qNu zzE($c^oalE7k3X?SGtojMK6CaHmKYXB~-;{*wsC&{4{-hS6VuA_fgL180%F&Cxt%H zmZUy{*%gIkcg*g7BX_Ufnt3`y|M*kp+g%s$J>WHi(?@-STvXkCKk?Z!X{)!!@=4cH)?I=#QEm|2*8?~%!kW)lU<$6J- zvjf%bi0t$+cu>d*6eFcsO(XnzPqR+~Bska(vKO*yjC+muoSr|nW`r0n)%JK^&!?Do z__^sI*od8~N`N@9^zjQ79Q~no}AKHH<#RWu!g@20y_*ed)l9Ceh@xPLiVE%te zNy$I|{_8(d{y((;W`Oa(OXGZ3uc4x*1ml0d_y1f?Nkt9Xf58}DDr#yvN@{BGK5zx0 zTI&CKkCEwAaNL~+m?Dln)PNxFBJt4jbiAn27I?^AyfWDUyas>hj>S>HR3Zv@=yB9~ z&ZpuUV4{fNhinY1KXxlxGLFDc$FtvEYW@ABMRxDTLeUw0p!a9I`Z4^rFUOiCwmo$Z z+*ZHU_#W=VqsN~eMs?|Idb@nj4L^SqyQ{9IWF1|{t*ZU9QIW^D>@KtjIq4}WIKwaR zTEa=8F*eoO$%22ZIo`+N?=KSSe@d~(XX2QZFNOPJhjLoV;E$6tHCN>G%KATW&v~2E zs+R5^6Er*CBb0P+X(X_u@Z@y(8{@j*{xmFR08%b#z|r=o$K#H6^F=8`r^ktB2OjlS zKE$dwuyZR^HSpfez8`aKN8-gReQ{o?EjqKz5+Wy)-ravy)D@l@F3;N+lb4~imP@X; zr`?qwcQB+Jty&zSvu+c!SB2>V^Gd|kC!*|F%$9QHH zcGM~27^`lR+MSfWlyA5zI%1`YZ$!@W?k=*3I9W*w4W5h?C~=N#dRf19A+A;5YoFMns^$n>t=T0GZ1d9^hNJ(>5c@{VnYJNjAEx z@%f_BpYs6BQ=kME8n zbl0<9OEmF45oIXcmhYYraen;M`U?I#>u@1~KAn*bEsin@-ypEw++o<1r&J-6;_zH& z(?IC8A!v^JT{?}CIQvdZ+o{x7BYt~$?96}OmA^?p>aDg(sL=3f-mT&ntrjUg%_S@q z_z=^{MCaM?tmuxXo$8MY*|pBgbcpK}N)?H*Rbd#9G{whr>^)|GvFhsJm&c4kvIXau z%Y|G;nEGGp9N5W+P^g^>dF`nqcetaYqg}S_O{2Ma{?J(+ln^U$M1i2 zJ#FW`J$$^m@H4_VKw`w(k=mheNBk}AZN~av7!GBMz3ac3<@oi8$+p)mUe=h^eM;x2 zPWh^Q+VM>4#OXH0!=-?7SMp}UAgT>{b-b-K<*KRKqttluK>9D-+qkDyD%=hmV)}5> zb%prQ%-mNs)P>uNo5Nm58efoXHL8D*$$sK!Rhwy92mgQUy=72b-MTf3h7bY-f(3VX zcTI2)-biq5pm8T5NP^Q?aCf(EoZ#;6!QEYRlf1I!y!+d?>Yh6F)xPKXv5M;IwOBpZ zoX?tL%x8?bx{3EV#b=D%O`ZBV49J2~I z$h#nx$#>|fl21HfVa&Oy%vg}TFy&=0-$5`2AW(PxdXk!gBU?BTV^f+5x=<$P6ouze zB`LYjPdGB3jX}ta+X?NvLwZG3l9OUJ8Cy^uGl!6cCFPMitkSNi)MrHIwCjk7>R6K= zOi=*=lW zfaX*wh*T&%@$@N$86qg(K+jC2ZYEt=h=N>nk*2Y6m`jRLRKbJX~}z0G)=#0&GFnmaeOs6 zg0)8gf3qD=h#0AuJ#?y_r|-Z~uvvvGcHNp2Gdvdb=~oe{b2upeN3Ksw)g5gaKLPB7 z@w(M8TZv34l-QwQX2hpUuM@vK7o{mIuXA7xiAlj^_b1HGtgtC@>ZY%}&bk;_L%G{Q zcF+D27s^2hKok+Ny#!t;4W4;Ur`<2D3(T7Jf1l24#1BEY7Gw_`Y!Zh*={yDYe4cmBJ*#7?PZABm4&i_%LQ ze}?4qz7xx5>0%DnVK_E{B*$9j26}f~F@tI&L3ZSpNVrWD#s*|~QhiPRU+-vm@|v#W zp5tGUYmo=P6k6X6e#Nw6CMXJAZsVEc_KLfUwsXNKg+9o=<}1ktt4HT%%eecd3R@SQ z?pZqA72!2>#_^S6v0y|%aDxb?aMAFlf36rdj-fv6w^1>%_Tl`gRd2tTn+hljfMv#U z1DiiKbZqSJYx(QX5M6VD&C)5y>}mVMq7a zHQ+%3Tw|^xC5apEL2#Su#4dMthpPrDD=ud@z(P!_UiF*## zI!odgpv0Tm*5}JXQFAJ`iUDd4dSCV_2`h$+9le3^CB=^9Z zsH<1Z<2-F1<1jnhn7n~MdS6q-=hZJn5LbZB#DM?K{)F##^W**Cbar(Sj@@V)$_$8o zDcdb>RNu%T02b3$duR54i23jcAzIFv6Z{@8GmikLRs81Gy1MS*x{ECgGgvOSn$Ipq zCnkqZy^ed(>6S;;G9lbLvq~<>J?nt0u=)8{C!1DEl9|1u>9-VD&!QI_3-02=$5WEl zOBp=o%c{Pnn(C9CF+A#SIaVvT7oYkE`LSnr^DBUe>Jp4QUTm9x9#HSw3xvZBtIO{4 zaynU>u#WJ$f?==JCMDAH?!O2DT5z=81-`@h#~)sk+u4IsB_6uh z3OBmXIO-7n`1jz+L}`%%MW(s7Hi6z$iykg-M}wZtC_4&g*QSnTZ$7^Dj5{L{1{Arx z*VF5Fw)^x|2J29N&*W|G$B33s%K!vQJ36rRRuot&^wW?a9-P=a){c)s`n$pBYWay% zGPVlpNpzSpUtB+(vEJmaO1jKXAS-+ChO>ogpruF;_9@9;RSp?k$I0MdrRJH_f9Mc^ zllO3S2~$ZsJwr#mk%FWm*7y>)b-S=sHd7YG@(rmcThq>eb#Qzk2TRskBw)udkUrgi zLix(oUBTssho!;nz?QRF^K_cfGE9J*u+%ac>as|t$AItrC6z`*cf>cL{yZ*rdGMBF z#S@JiFcE<{$1oswoQ{P=De3yGL5BC)ZLA)8*r-}*>1mR+t*tgW?O~ZQ4<_kNqZJrP z@g2s5?EcPwYSfyI&SBO#RR74-_}Gczim{7tdu0=_SnZ3gD)HmQQotGh5gVJxy@7I% zxy-1HR<4m=wApItfarIa^!+)8vcVhA0RW)cZTpz75z1RUym=}o(+q8dHU-$0Y-nf1 zS67lDDhjKpF_g!cOvJvjhw}E(bxsn+e)y99uV1czhG&2{7yLCc)=R@7AgmYUIBc-7 z;~IFljM^k+7rFl;RSNKYn0lzR*v^O>3P}d(w$qMgCV;$o~j9#JywYqn$;ptRq2m<<(g?3{7ys}?w=!V5PR2PXL{SrhKFr#9^CiQDhQ z>A5<8<~>9Ynp9h&k_WaO<26tk;3m%;KIgKrJinmhC0pXPq0$jG%F>44K54bl^&?>!=3?HyH*rmtn0Y2Kmr@D z1P#r<_(JU{JSuy`NAc=bbOXOM^|6=&Vr^Sr=%3 zoFqCmRj=eUV`;Fy!w^wkI`S~_w~mA^z8NZxj2Yz2jxYRZGxf==!#NJh!E*BkRQdol zy)mV|N|EzA-94kc3$wW&YN!(A3s0-BGQC+9?~_~*PPQD^akw+n$!%IrsH{78Zf`kd zTTXVNKzk0+*jtT~>Ol1}uo>2!uD!i~Id^_@*LxIT9p&s>!t8g9yipm$%)8Pxtq>@D zptC=};1?k-UAmZho?NfJ{Vek9N9$&loddlDfSIF!_Hsuq!{wQyW zV`CVo#ccC!JW`ncDu=XiIkNu1lxjrS)kK-hfol2k4)X-+MvE0)Ie{lNWTJS`3ACl)0pvYoUXtfeidYT;3b$?_&D|ZZ9#X!;M4j&**v>F| z(6Fu1z+SqdM%0pG8Q3tnicFt>p{G3#eTV7k|H!dLG(Ed<%YL{RK443h$QF?*hSUwf zd0g}x=W|hUiyThr-3~tJ7=*4z@Nn4_IxF1s2?dhY)S4z7FIUnk!TW~Gzj1bGtRGA^ zYPO9J;kyYvn6H&t8O^UL;iJm}axz^;K((_V1GV_K_t+N&l%J=hXTOv%p*`zi)n#3t zQm{?*zx_3{cIq`ZXNU(sT^zbJQT0BheFkVBE8HVCp?{BM#s>4`lMh#Ce?xc*{}=op z!V`EzB)H!l01@Dk(c$6$;Q#)n|NdnFI7-f5>4^1{0aP_|pop&GRKs@WZWZ@CKFO4L z+fMl#0SJrqqbdHr0u+IaO$>y|j;Lbz<3w_Ymrp*lj*1&`98JlrD5vM?zN{m$w%4rKbqmbPdeuAClQUAy+UcCoMf#YD^_MOX@i9@6@0!H2mv0*D# ziqlwV=edg)@RiN7GW1ncMQ`h<@M!3Sp30eBY;ii1PZXy*Z>z+Ae~0NteG}N`BO~`l zP+}*4f*@I(fxQ6O>cN2l(%6r!>1})@GDfNNP)opXrB~7M`{q~G7-IkLFI)w> zyP7_~W4F#oLDCO>g4Wzl_sspLL*TO>>6Qjjcb}|?`*9JAG$PoFpGB)HkKV)-bCuay839)Rq}V z9u&%Z_ch?aVc(YLJpa1EuNqn=5MJgg&R_O?#lBUl9~!r}6kq4S(&b1O{X9UM7PT^s zt@=I8QIgYyC4U@>21JvAMK3AId4{kJm@Zdj#Seh@#gH!-f5tDLThIw7>+o6K3fC)^ z{OKC_Qxl#>(@z;?8&(q;=pk+j)m7Hpk2$g7-hscJ{tPJ)S0r9At=>pvEA{Xi)xFQ1 z`AD#C(5C*tuwlSrm>|hd-r`&DKk!5o16j>{IXn~gHZR$><3QLdNWrSqn3;|?4#gGTiW%)bCg8_%xl( zn)=Q4Rg~i?Kdm3hy*}nd8nGnfD(fC5kDzltx5XBSe`jd{bLuRw7aZ_ZI`UuDVpIe+ z#({aXY?`dHcb(*gN@6t|2l-FUUp2)6m<39bp3yR>aR!8~ZYtLn5tVf2uXsrvGP`Ze zbx{7DG<-_%G^Pg34OIP1UHM|*WMimCPYdDrpl$_5S3@ACN4~Xyhbhr^qi8m>aJ)3| z>iNg-e=rs#&n8baQwkj}Fa^K#Zn*4yhZ)n0|a@HGsIcf&-zsO ztu|oDUernk$AmdpEPXZ^d81(ErRxsLTKCSiF&oLdJ;&)=loeA_-IH0e+sF}bnr#5~ zQV|JeE7H9022}9rcJN6VsmszaDKV$Wx47g-e={>nypauTE(M?sxCq1{1$5BUN7|%| zRR&3y6sKS-x?9cHaUrHEFoOkTFO!Cimu;!5yK?28d>#G-Z-<@?Xi?j`j+qW|HRjT) zl;j9nZkIFL*EM)MamMx?ChvmyrScknpJ7g>360mZvMWXty-X!IW9(^@2^pC4*O*{- zf6o|VBFV{+?`)t_tx{rNvkb!Q1IX$;l}%A^1JoQ@pSb3u0mc;LX5FRF+Mo}Vb2Wkz z?pFL#nJ%VAtK*OcRJc3Oj0PTA|S_Z<|(qO|5ClVDxj95 z8@*EO&q3(fV>yXk3%okt62n}T7`Miz8 zF`>jxv2dBTSR#>9!m&LPjHnG}+sTYpE?K)E4(;F40TC+D3926eI`QBqEUw0PJD zI@_=FttymzDH9blel>NLl8rI?Yx?p&Ifi5%^Wz%Egr$Hr+4J#kY&N8c zw=MqnMvV$Ivf%Q{WS3+fh?DtHmGTk*ayA8f)7@==89d<8AW*gJ?vwW&#>|d}4%Z(c zlZ#%a0aTMRUnT)*lUZL?0TPq1Us``ghzRd$tgfznZOT)Jy&vrD6un0o%l}fm&zbZJ zw(csxGLCpX)y$a=RE$Q<=}Pv%=ewqQ)^kzAl7Kf!rb{Gl!V5Q6F{Ll?X+>;>d@UrT zkHS>0ZDoN*V=A*|mzm2BBM<~7hyl7LTN0@=5*7L4W_g<|%Q7i7)Lvi>5nT)6+=C9p zn~Q>+p23roV6_2=lSyHRe;tBWLfOdL>zBkF{q=qUt%SrfMRF*tT>T!cFW#p*zo5$YP*sY%16({YyDVY8-bh7?#=zI{xdIIEx>d9H)st&%- zlwje(qg)|nH6$uWtEi2laKfNeYwF27ys;Tlp*w3+uv zw;s)X__4TylhqJ} z^Y+`LgYUrAX1Y&eWCMkrTZz`|BeRQ|IzB9Og>U2!yQ?LAT;(|)g5<8vj($lusV3pJ z-&HlYEWpG}X)<|zCrZ)awlR9FCS!jsIGEWVbWuvpM}s$A8}pKpk>)^Ssi|!TGc3#R9m`84lbHkUV+EzQi$q~0qpoJ z+fc=U{zgexK0VZ7Q>7%C;&s&U36EEQWh$_MXKW~-OcFC-08PpA!89@i>^|9=+OxYH z*{3Qua8C8^JB));V(I2!1JkK&ENw284JXR@{VSYK`@OnKrf9!LHxyAL4d+jVU;?HWwg5Rqh zl~BRiDAZHSi_}&4l@Gs_9)?7&)K^0BfYt&N*_3Hs!LUrTJ9LT_o8qc4(mmBM1Te5S zG4Rd5Yq+H^{{$z0p#(P{-qh`V=qzhV5dFi&3L(Pc7hBf3+!FNXhv@&A<&OW7|NDI- z`Tvdrf53mU{|7f0C(obyZ#Fg_QdV|W9@hWWfB%ofe<1(o^MB<3{we<0`s3*z!tK8! z{$3)9k^f}=*sHLde;GegM5|$EsQPi>R5(abo@5&1V*Hou{WF&b_dcEW8G@atv6QE_ zGez1H<1BktwnZtBX2)l1la8pf1B2?G%M;eAO64~5|>u_{sBsKtKrKe zVhVd_D{x-?sN>UzP-c)NWv=bC4E{$iM`ATZSW#uH-wtq6?OQ{7GS@%tEq)}tA2$H^ zfnpVXi#f^br;7W-;@`emr0+b3!$9*WkiEj7Vx>-7(`!K|U;S+<*4{N)`9KzEJBgyK ze>uN%rC0NLYd1yVQ3QFh1u9PSiSl8RyDdqK|icK^5 z#u;vVpvz&isF*Vb#m!dEnzpxLKD|)ef1EEm%zinC`ef~o<$LkC0$H)9D|-ZzHPQPqJ)$w>wzbWIIvcs@SMg~Q?CYE{ysMZs{s<-X z@F9H)h_MHZL(C}Qt!a_6S`wuUNs*}+waPg(AD%@L%rw00hz31_}wTo7@#t&m%p;j$j_Fn+YQpH_K6GNz}b(L9Te;j%O#Yf1JYTL(K~A*+fFx?b#A8TUTeJ8 z#(yjDO8gLckZEvUrC&x=*g8WEJ^05MS~=Qc&c1(BX2>?hqc^_^VsaM#d=Ip<;vQCO>_`VeDFccGF!XK=c&Mt&&RAfKB*5u!X+Y_tRbb!3mK+j z>H!MAk*2p@=*&AZe;BYJy?=wGSiI9?;a_jwNT9NSJrrc*dO5;V=_cso`MlWHgFy9* zJGXZL8s!OUvb4Z6B?}6RbSa3#BH9#VIaDuUym21#%)qV7>4e&DTbe8%`&|#*rc?;4 z3HC#mJ-3tG$tF9H9ll}C^=u)7BI}w>HRX`eKd#Kz$US)!6Yc4!1{qp)?zoVWjYMvT z#?7euv3$kC^j{A8G`9xvYkguEGpd>Z3c|F3q~MU=NX58sb6a2v6F)laDs}vns_N9j=7AO=PV@-d=3|1z50OXUr?D{8<_`?p{1o$-v?Gz zKEz;hm~NQRpQSd$Q+`&0YYMtC(5Bc;_Z8o>4Y9@2st6sZo|*+R*F0kgX9y)l1VqH4 zEsa=E9((MX`LYoZAExveW!A1Kk(;dNWV*|tQ93}1f0|X=y(h4TU!?Il&9DA66GGd4 zcG)tf;%p1<`L+zhEMd|KGC1jxa?g2qM&LD#g@uk@f0BUD=O(z2yJk|3j+e|%D2t=b z!-RH1pe!D>EuC(cVWA@)nVy}mNB`togaXnW0*{QW^OM@C6v;UF!qDB-RkwgPRWa!b zp#oFXf2`XucmtWW52o5Ycc+wey3aJm5cidGB>g&nq!VNkbYDJanpGxG_n4=)>HkFc zIMgbQCE=r^au5@g4LH1olcnf-n{WC?jLNHn6x*JzMhmoXl~28v5F*>uhC=rAFuURv zR1Nt%%+A-_*7MSjS!ugcisdTG?XzEGR59V^e?GZCd}H)1MocUHc$hRj6DF7ct|II+ z7b=;xcIv%3e)zT=+H5ti^juSiI{89_cp4hI8?mP# zc}S1DsTZv*calN%{Gb?M;M`nmJC=oOoN*#2CwjmWkxWdtBdidafWY;kP+BwU^@#jh zfBnAsc|TJ=o?qIj4V&rbFR|DNXW4>r1R#oOT6(=}*9ENQBW2NRH##EL3FT`bQz&@i zlpBN)rw#WVM$RhT%?NGEFf zvKV4swh*!0Vf9&PKD*d@BvyG&y8Q_)e?yS>k!>Hc`9OgpO>#e&5b1beD{jp{wIhJ8 zx@fe0Cw+(eJIsB9RQdbsPNSR*iZ6^kQ5{bf{SJw$3HXfxmL*F033zI}rwI+=>$pTf z?lmA}7t^1=Iy*l{X@RCk&8r%liOo9D5`S@@>7D5r1AzhYh!#rZ60#_=U_@xdnpoXGbv9g|BB!AzwO`{ri#Ltn z8g1Hm7~Cyg=KJ*^H)zXjXbJ%@e;Gau4SZ%Rb51~I=3t5kY+^0=W3+cfmTA4Pvj)zK zk+M7Dn#}_Go*f=@zr~0J*&K1<@oZmg^J~7!@Bn^r;zGxMxr_-bs}@bKxHJ)Prgxjq zc)i{4N;{E(+Vu*U^ZvFCKrb|rAz0}ihfIF~ro~<&6L#2vcKkH9CYnHee}dlJj~cJ9 z0{{w4WEqO7^==aMwe+DpH(Y&WoK=kUN1(7&jj_Q@vTcHMAclq{?M_J)pphBNT52Tv zPb873zHQ!&)mdyl-56yB!Gc{EX@CQYN9;}zJ(3MF3LF(pjvi^U z%*kyK$*qs=0hZ`mbq=U}e-kz;#jf6p1VJCv@WQj)K756na+S=Z5A2$K5t&0LaTAbJnS~X|| zEx75_FKy>5TX+0-hyyxifnPE8aR_ga!dy-X?ETPF&vCX#jo(;s{ghtvph6=37jB{r z#dbskPk7k2wFi;70_Ee^WMj@$#yx8x3!i?IUC!ropb9 zM@&4v!;~&of$FWJe>S5R5mj-0cQ7z5xR!R&wayrxpev#%k*K@B_zv@Q**pBpS7jp) zmB}V6fFyLF>Qh?)A_IEF(|w)_2@R{qHzn2-y`sZ*x%@&Un1`XZWRlqD@2_QxcNdVKs^ULM!AM}4ewS7;K ze&YXsA^~9Ge-PlGApXGuApfD>`&lQ1f$)zpFFp$G$ByuD8wwF_{Y$*_H|zIK0jq z?ma|TJ)4gJ4cj`-p9TUps-flc^Iw;=j7$`+wMIsFQMTsB1-CTm;(HHDw(KZR*fqRZ zEbK3^N;Vtw#HmR7&d+4mb&gIDi}QXU(m1I*e<{aD1{V^?!HDj9VJ}}z+0AO!b1{+j$fA0ThGj93dgIa)8G^{vJQld&1! z4s%IyKZ@T^E1US-q55Ut%H`a_DVZxaHkk5++e+H-K=-0MlzaW;(5b1jbD7tnql*vh4L`ufD7a0vS1k zZCrV4<9R1i){Dpa^RF}D;7~L*AXge=09{rYgp;;(brW*7Y9}Kwjs_yVMBiN<#QAaV zsgpi++5w)E8FsgSQugt)i880{FM(cAWdO82)DdSteL--;5+YspRNq{Z;^5fWOm+vPKURDC_eEnKj!-(gt4bwzwiMWMcO#sdvDdI=Yr zwAffJtg&7Gcy`6u zx4p1ik(>;F&)tYqfh^lsvP)I2yLyo`Q{hrmBy&yw$-0xU77Ua| z#Udf<%-GVw3$eZ?I>$;^_t5=^z2w-tWrpx^gDIC~x>)yR_vSiFgSZxA`J~TlFH#Jo z4eSq54zfUW{q$>pQd<*)ADzbI+GQz64K#oEF>e~qEm9r5( zsLB(6-La@8R#*z@#kW^MktG1VLwSxn^B^U}9kA8cR;!e^!a);FoK5wYKcc0cUlLoARIfijbtggAY7{@Zy;r=dAAS16#GOnIX zr;#@?6z7t`ws=ZuRy3n+=?H8}_&)DI@<_O3sR%Z|=9zwIY0_c%4#VfcqU`}l_A#+8 zAsl|mL?GI`mPl`IjKuP(>tV|QW||eqnSW$=&UdWIWCmHEwCd;re>CKe@^2DhiK4-O z^=Z>)g5@PUSE9wu)bPmP;Vq?qZ{-b!#9N$by2xYl33_~zBY zl3+EU2wuyqdHUkT3)QO%zcPD^RRyHETyj%-VXOJ?FlN52Z)b&2vDq#3ExKzu>`+PX zuoTSr5*d^~z``Q-tQtdlDYTZB#xEHbrYZzC*ifl+cbOAg=Y*e911Dz@o|2PadP09c zJ2&Xa%h~ba=em@#4bRqze^X;1@5Eim9L@1L7?4SKRxw2omV{^;S~HaQ&RHCtyX97= zvzsD&{5JdwUvXqsYZh|688)?QSfy5;o)?V<(TLVhv+SA~ zx-Cn1+e;NiIfa$dZs^>IFUD?nlgK~3t#zjE(SlX-kV{w)oF@nAQ4kr&h&u)J_{7wV zmW9Q1R;{dix9@e;1O)GxN}Z<^$iYVQnM_~SRP?Rvku`U`Qn;1vbqEK_JavEO{$RDr zuyq3WZ1y}U#;}M>5GYW{q%Q={|MD3(>sDt1<1w{#eO`Yb6SdJrzJRw#a1~?zd7L+o zHT5$N-GR}s?DoRF(|mKQKYo{Tc;C62aFVl^KexB5NYMO^W8-bu*UM}mo79Q{tpLMl zEYjFMW+eM<CLo z`=5yaK>U~WFYq7IU-`el!o&Ue1xSDM|3>-^#{CWefAjxV`2hewh^v1-1x004u!AW$ zu#6nuex$_4J08t!!@>C7I_5bX{2$l+<@}9ECZ>W3iW+5qa%}h^qjiN`9Q+asyF%50 zLgJrXUu0q4lRky}s{`DtI{wb_uqKL?mO=5mTzlt|eCLi2?X#{igi|C-WU$ZbuM1~D zEeg#7RJ?>s#veXTYRiAzd=+K#p@$GgjDx~^MbT+KeRI1QQ}%hM{8F!ON;v5dsgi+k zf^DJYJ*0l}2O7KtYzEeJU&)Bdk08Lph`#v!0Q--C(5%ixP|5x$AasM_i$O|b2c+c- z0qWxjy}<9d0s7i2`QVkT0Ad}fFP?K~A9l#x=2ENd7>=(FMPh$F-ClK}CM~eYaGPNl zGgkmFdbYSWs709l1S_sIu~VncT-oBuSBO#@y-iObpWig)lvHs7+IqAPyGB~iU~oSR zfTN3(%#1e2#&!~!4Z~eLD>(&0=e$?}y<$^Lr60r@l6NF~``MO9xVs$tJVjbbAHUsm z>{(r$)<4?zA31+AW6tk&PrWd#U%K0yN7IP}3gC}9*CV;A77I=4 zb;Xv<4c-gQr%hLVe*JB9n<=f)9?*b{V}Qz&U`G=uog&7lie5ulg0N$M>mD3%fJadM zxAsCx;V+A8SbmWIXrd##`K>%?uveI)b*vhlGfj@`Y0`hfs%BE*)|5tj+MwUg>741) z$rPNSv2k2u)Rb(6K;AE}uoSSKTVTO@O>J!9_bEcDYLaBIz%m7^N>(Gb4cbvBqCfh= z;6ZH3MfQ}d%IA_&JmWYX2S;66@yf|r060dEvYad{_yD!nb<8$b$<&cDeEtgkd87Hu z!o_=|WY~Yf6U{KBMgh$!r-j{tnXthl;*`zoEGdairsK-G44hbcc_ta+L2@pZ%n zpEu1$wkJfEJ3i_MrjT#YaH+Sg&ZX0zf5FB309ejot(>sRj>}$xPOZzx%}7tNr_UmP zwE|8Vb5?bA>aJ2hG;FLnbq`;8VhJ;WwX@ufhCG27D`oQigh zj4}n}F`4u-JM4YS+i;`7IzaV}T8edhdYg*E0eAVncg}MoZX?Eaz*kti7vEtDD;66s z8=`;h?h~+dQO(SAJSoV#tvlKY!W0`o>%vVJA)>FLTEBTROwoU+f*rDdjHz7x8g68>agmZB8sOA8e7Fz98ZRg|sfxr>ZGOj?fbRQO--Q`y_vy z)hQZL-4%;pqgz)czLC>oI78cZK04!huh&TjC#PC?XOqAvB>z)};WP*FoCn-woS97` ziQrAsYQ^2zDy{MsE~XO4peCLAM0BDvI*KpUA?`tJp62|902#iLjnj?FI2?S%={Tv! z?iw!GscF2DqFvx4xYWJ4zrRb{fVzL>JqL(ucLe@~laHyFqz~8y#@&I^!#NR%Ij&Ss zW?@9#kBZ!_A8sb_AlUvxA;>}GUL6CM8!))uUyr*Y+!9aqZHw|5bK(U}{q!AaC5w}d zSid9_a}zKyxU|~6$Rf8mIA9hYkFaFe!ad{@sdGP5NTRcql&K|Y2MXlZ=o^3fs+o$< zFN|4D?HoNz=;f(U#wtes+09BSajFB4nK!+k^(=tY06nzo;Gb<|bvT96pj~2%N9pIn zPp9S17lE%UY*YmWwaKb<@<%!>#a?iKhsitHyqp{&KVt)0dYqvg01RlW<7A3H95+bl z3R&+>RY5jvIbvem$2<*QDs+EN?A`%Z;q&VDATzx`VP%7aVNdyM!bhFgVU9DrcO6XG z<8z<*72YuD6Ygdc1GnAyaLu7uYwA-JGRv{i58i}CSt?8ana6(~5NmKE!(yPG{xqPFGeI6B#$Npu5WWrzc>vn)7(w zDLI@MUhaH{Sz-d%JrrI6K87WgX4ni&>b>#9-G!?ek@KW&j<}OE2)QAlV%TX*@kF)# zF%s%&*FH52A6RE)p1ptay5bA^Kyj+Svi*eYEMU+rw?Ayp)%9)s`~g$-rScBg$GBOw zc0OfmOjos>@}J&{bJAL~lshW4+VI~8wZd?(pE}nR! zSc!FbcF0lt6Ye1`#;-@85D`7WAY=Cnqs<{y$qMiGX(6G~fuxQ$~*HTnQD`uR8! zZH$$08#!IBiVP7>oJd1#4+{>28muW*7Pv1T{kg{$TZhUHYSlQVyKAwJOsYesry0rD zP)|MiYh(K?F$k$AmMVaHos$H6?jp^)+(@g8)x0g|tGj==3S{PU&rk8RmS-kBgAaWH z)+a5*X^3=3JEddc<~pe<`X4^yEPAue%;(q34^h+Ee#+Z3F6JTReb)cVIz{p8u0IlQ z)3si=7{kVVL);zCmIEfITz7+-B9!xH(v?Zv3M{KfpPg&Hx$UdXG<;4l8eP+3ve54^ zW~Iar@#%leVWMDQ1hyCYpEXlscS{SCqEvr}**;i8qUm<#fGs=K(qNG6W4Ynf{ zNRd>hHu%2zov0>Bn~MgIRfJ<#H-;=^_S^U*eGt~k6M2K@1aTyNOUw~rUN8EVgzl-; znO#+N3Q1o0O|1)7KgSD>Pm_Vfof+~zV zeS&|W?=T$;u;-cMmHjC8x5hJkX_)s0&lPIZ2W{`}t{-x1QuU{0rva<9~McKmA|X*m!t;;eSr9|HXg*{}b^ai2n=!75;~P`q%g$@yVa~{|O>8 z^4~82|BnBE+P{7vSH+6@>HV5fVFc#*0spCvTSxse$Bfl*@P6k2o;>|W^H(+m6%Zz( z*oUammrsrjGb+g0#j#pd!4%jlMh>eS|3m}a=KRYP4f}i{#b~E%De8E6GsAnFmw$h1 zf`3(XH*MMassCT;jga@UB!?}?Q#zMdRpr$4}?Q#brv z6khm!QP>w2=v+7_zIF*%4Xo)t1iw#6|NHqCyg}NqQ8`{naMn`qVNL`IW0I!{*G7LpTc+H5-WLy)Zh1}V+jc-{T}A6*CQD&_(4w#G zy$h~R&}KwcA$_7|>p)tL=k~bco(2JXJasJ>b#Lvb6@Fihzn(s+}KuBk(2o z|JEEjjrHMUW1a;f z=5_=*-oiMXwT~u9Lq7UO-skfn_KSB{@lYn~4WTWyvGF6m)#jWP!DY`YCcw6O^!cvY zVSm)S*_q_kRha{Q97hLdvs0-Mm|s_wgrX}zmNo}P4E>Kh<>MDdaxB*y6}@J z0ALgjI>o-K%X~xVudnoOqW-?B-};eOK6o&Uj|S%!RV&XOQ64F_%!V zRZ-x`W?{AQ|Jkjv*>Z-`HFO|b^nWiFQHG*I@c|tHBPrMOy0ootDn}C~=9N^(;|lF^ z19fT7I-^&$N?u<^w?!Zq6sY&9J5z2DDbGXaU1{tlfMxf>l5LU=G$>MaoVNUO3!_6d z<1}tu-^3W^Z#0u@sB&wMeJN%inid1&3Wq1cSE`{*ft&Mjulir!3+;>DGJmLcN4We( zA$Xp>o+o{Zo_1Rh)#HqmU%romoPvgq_WCAa_A(m=*C*Z0SgK1#FrFppjCOlpAmWuN zcFnDkw$(CWzEdbO`b)nqiHPob$kG&s&y z>MLyxagL9gd7JVoaz55MJ%0`5qG|^1$-7?|O>86m!@wE+j4nulaTXP;@bk|!TIFtO z=V>XF(vJ{#g;7tJC79gpH;rz=AmB=cOecj*qb8yLb&ZH=S5YpnT>!$&dR13s&9Ea# zGsl_swED~Xs4wB6x!tJ5+)_RiLZlP*w$TYt~gMqp_4;HMVH zYVPMD2x7w<+0xTOA0s-%7ZkYE-Z=#aYc%prN(*~z|3B=#byytBy68Q@6N0;kV8PuT z0t5&i+yVp-?ruSXySux?;0eK92Ax5|;O-jaCRuBpC3~N{&-Z-i+4tOi_xs08Pfu5O zS9eu+{pvMjd5N?zdw+RO-E}r5Oo3wo#K;4Is}^ti&)1E+iMi7qfuu~c_k|Y;o{SlW z>Z+R)ovw?oce!`Cpw%z5HbnpQQo>zn1p5A*QxKe#&VN*L$mtNl8@E&&zfk8?_~!+&F>+x2he7fQJ-T(TY1H5>Yvl~Bglu7f3)S+0bWHufBPzS{T%+Dlfw zHC@xIl36~QwM+^rX$>Wdkkj;;w?3p4)Y|Ta0vDd{p!Qq04Ku>hM4FW}8ENOYS5$TU zGQj}faVhLkF#(x^I3LjU+^7<=q=l8TI9F+NRlY&isek(vYpmfY2S3}2Thj?P=0I7U zyQA`iBwy>R7y#j+;?r4L2PG50lJL6ES&#+DLic>d`n&N@VecY3M}%_e@Y2(%@TBS3 z4fv99pZ(Asq)>%Y@5JmIxv6$P(zi&!J%O*vs(Ap^;Ozo$)x5DUguc*)LYsl{G1%qN zk(8XDQ-3{h**+wirT$txd*;+3K&%lLG%_C4?|rhfGzQ_Sm4p=PubGK6Sf!Kh>!0wb ze&1hOlr8;)nH%T6*vbc;XQ%Pid)wZtdM@z}!+tAVOIKl52TW!9+5@-uUqz{(56OlF zR<{I#1nPE??sWqr?ogzfs)SE6I0xF!36ztNL3*}krSSD zN_P+A1orjZE=nINOl_~$rb;zm&ZAN5+p0P3!RznO{!cx;3jv?wXItOMH*(ylx-fjP zh?UWvmX<3Ir*&tZX*IeN_T*ZrsEl*q9Fi^(*qQ%^`=OaDQWG3(sJF`L?x7jzFd4;i z;D4NT$AN~jc6G4vmh*1tNv}Yh7Jf7457qmd!TAgvSrG5efniA|n95p9@h zSI#9`m6s(lPCkLswfsVX??8I3xhX}>=*-%EIzoB4JicnEhZ_=10A!fyINg5LG=C`FZ#v&0m?BVPdv zY$~<>04P@Ce(fdRYUDOixc1~56K?Bzs(MD5PoZG19%W-~)xG!fN%T-;u3mD~%zujg z1K=#pSD21Tvp`b|cw@96AZ=wlcUyZqLX@^d@brU^d4x%5)Y5?6b;8BjOwLI!>q0E~ zK-)Y!_=nCM{1=^hB>7LBxl4m@*|0S9KUH!4?T7HcCnNrO^7r}wzcKj>;J?8CEbPDY zKNs5%{%2$1{x|>sGvr^8|Fi$M_J7}h;eQx}@BchP{M7&)4)NFY-+yBOj`WKKIChSh zG6lP#eXKYo&XIp^tx7=LFYFKhBkbd^`}~#tMU`SO;g9Slo{M1_tgyvm`*kWK7Qos@-RS9S_3B6OGP@<|Q6d_A|Tt+@LUHh9tH!*9y}Q`PKMAI2ZlPk;0)^ zYF(F(+Y2ZDpnj6EU#S0^pNO2}rpAp;F=>CfgJPfkoj-Ut^*i-n{-pkYr2PN0H8>)V z>3MJKPQ+B>)i!14HahfkFD7M1p6Lc|43v}+G1~o=PP@;Wpsb;D1(%QG6KB^;ecM3~ z0GI>*La-&~j03oFXSLyyQh&zFGwazUU13$3g=u=T+SbbH1Ar=64pc5hHF9inLFD?( zhJm$~`W}~q!z(O-c2EPTl80Xqn{(n}=>{1Pc%ASma37Tv8k3$E>WJx|Xp!$j4_ai5 zw)~WjTbnTn@zx|;CmB1dOw20ZVRUa!+%`JpuyJg~rJ&-QfAqO5ri% z+Q9%;F;%GOsT94aKqZ;=v0_UR&*C3uPI&9e!T!72PN<9o=CsyWNCzI5EPI|`(a^JA zdoE$Q@-&;BlNf^L9e*IPhg@fTHtx{Kk@oILFtUzZxZ2D_Bijr@O@IR-H~hczqeq!vf$z1IdE1zsA0pTHLkFcX3i@oDAH#Ia4Y&`RNJ0rvVWV>VX-Yi zExvR|!-$X$`$gtY1SM<>3hptjwbj>uY0S09dJ?Pkh5lEA^6jk#U`6K_NUjaLxN3d_ zZ;700MbHunUSV!Hi_!iTk2pTrzRD$2o6hDX8*$={Vt*8@cG7lZVw+LaPs{QUSNWfo zds? z+~OID-}$q90@dl4>((4Ny>OLuW|r9&fg2u4vMp6XvubFTL}!|pqftIcCHRxtm_zXRg}t_6h@*-gE+=TP?+IbjCAnp= z>Bu%wVn?2;^2qg;OCRov%%mYLmvb3B~E^234 zw=4;CNr}*3Hfs`GZe%k(0ET&3^Nz7PzxOu_5crq=rls!vqrdeo69xCI*d1$k!5T#b zG$XrS#C0E2DOKs%dtQ=pq*wvrk|dk11OWQ_1An9zM*i&siDSwaLFP^04>wfp=fqEg2VF-`p=TR5D)_CPg=ShY9 zDr4$X0VP=qh2r`|GJe=JCv@WxS`r8VlOtkU*wy{X(u5OHi_5yVE(AqREogClL*o!^ z@U}s|BujipFLh~A_*+39<0#!}MrZHDtZk#&b(wM})(*V4n0Awrp3j!{t$&XXNPZ|1 zUiPTy&_l2E!t<$oa>LyFL{oWP7p59u)u#E}E5uHR;A~f;r6%DyE1t!`k@zBO8l&8W zie_anWZ#^|lR#1l&YKjR1T%nw`kYlPV>u>ou1;lP0jbo$GBCkLXh z2Tpk%`P`Q#&-fRnm#dd=A%6)&S(hJsTaq@#vidG!wiZpct?jO3D(f8tUe{awWdDqC z;tmR;%Zz?lozD8ny!MXy5|G##F-;tOBlF&%mD%J}ahTD5*cb>2?!7HrAmoV?y{J;Qq3E4_aZ_eSfwJ^kOc*?Q@(koxP(E8TmD3wB8BDVog>98XI{@Avk zB&2rD&Ic4$tj|%9#bWCJW#+z*by2KhIlyM_!hEej$m_hj;$G)&*=1U!JT3VF`6VVfKEfG(& zEP$4B`0cW$;tr_@26_1iQ*J+<>%rb3R0KIk#V<(PesR9Iq}kJo-EMK&ih?z^tg6y! zN@hP3uGCq`<25_t7UC~SMeD%Dfo{7SZ++a|!CS6Kj&($=P`)oT#6vmbo`v&h#?{y= zXUHLIz+bA|9e=fl4%@9~l{&Pua*vOg?shjOh>UYfEPiCnf;Q|QgDh;K!vihVezNl`?R zlSEnH7u8ki4fixnyu6c!Vv0LK-GRpTIZ7hey%Zzow|}RhU*&XD2kNLYwVmSN2`Wv@ zz7p_|z1zhapL6>{X2Hg&JH4BP`$nK~=Njofc*h3~c(P%4N#u7dkyBm!L1>D!^7MQt zj4k`5)rJ<9x%99q@7qWuD~{A%tiq9|fg#3?VbYdS!u$}|@{ZhD(Mvw3!h*<+S)%i# z3G@v;eSiKwR|+!+Es>9v#9E)#R0#fUdGLRa{C)oaZ%qCG_{aRu%Es|K|Fita|G>h@ z{cr#8e~SDI@_*sq@;}@UK>vmRAHn}AW*huZz5TEJ4~K{V2mAOh4&XoXzuG-#!$LCf zi>VRA&QYcSP1xfcbsEO98##1Q{FIVQZQ(vMjKgrl6A&WY!2 zV#-+9u@pFl_Wn?Dj{ov3076O$Z_iMK;IA$K?|*dx*#7APutEN)K-ax=-0oA*GD&PY z$|39L&V%y&TM-dPFI6*MvaTO40H~WGUtKRJ6}bNuPxMyJ<%YOoj%NrR(|dsYN}48i6*C}!IZk)IJxeAh>;Mk0)diAor1 zDwD7Zhr%>1F`jFtwbbzzweOn=P(a!(^#>x_Q~NVkh!GA<+m_Y~%CpMSXN0fAUc1_) z5$V%zxvjdGlcMJ_t?PK!?+C&MUwI(ROn;+Xp3B;#DX@Bl8^Pm`PfWq%mRapMqBr2v zNl>=Ht{U}_j;~BfC~?)}F-ls*N>|3BjAD`S2p6oko=Pp=ax;dxxlj!0)nc)CX{gV3 zHZ!^IotkfO2@;LyT4kGtQn1&89nohsMxo+F_nsT4$kfEF2pWZNAEbGH`vJfMSsVc+shf`K40fdB0IH@DCROjo5Hn=ye-;ybf& zP6U%y&-k6twN9?b9kSA^;r4?YlP+>m6(o!niL&5CV(RNr@jSxJRqfmD`PiRcnc&{D1>)(F_Kir%dzaMtw_33B09rWW84=};=Nxbf1vc(<_R8ei5O%9a%1=REi0*w0?|S%K30;DGMg>bjP4m6^ARN{ zEUiI1{yxqmpv$PCPPc8jOglZKKE(y;BBfWicszbx=mU@ok<^Ea4Rl$>wR z8RN!G{hU3)+pExbvYkt-CaH8$BpNJN)r{QlL7E!Xc~`zifqTRqv4_1v6l}h$sS`UV zB~I!>ddh0QQHx0ug%MfkcgjiE$7S7zi5y!{lh6;V#NU1<%zskSF_g*KVJJ|`r%6Il z(!Hu8Dpxu)ToZwVfyxl1Ah%KB#D%LseKE2!$>FL8su^)50U61k8WbY21d zY4GB#tn>*t?<+gJPiq_#3#zBU_FcS&KBr6FWSv@x0xs{uziAw4y(!rY()`Z+G{u6J zPQ^|d6OGEahJQ6wRi7C7shXb`cJy~OiQG4`!sINV0!-Q zqXQ+IfY6J!Y$-S2DfM!CZFWeQOvF@evEGla{~Wom6MuOg&siFUghl~ri$tbmypLZ- zjysp4l;CH>6^w|9H0sg%Djr;2S_mp-Xtib!3vcX|iK?G>lNdG1VQqd&bs@A$WpycJ zRpaYxL}@#Sh9|mWPI^8exns_CE+BLPKew3C)T_J@C;zdXU@ui=3Xka=9>lO{$3%T1 zMntTMz<Rda!)@YmMdZ+OB~f(x8?`wFA2FxFX?O& z=pHjExt)|x3Zivh#M@OatlKXh=z~3s-&9~e$u2@Biseg~#j&}_{)+}F>fy@`N;`Q(_hWAfe z#I40nd#H*ZLg>EK^T%ZS63uG6gtwFpwOiNl6ac`?WBpy7mJnVDu zi9V@XIrP?t-kukkH0%_D)H)&30aJKaVI6x{yUowzNiy;97d-eIw0Mv6<0FBcvs2}| zb$_Qc?Mo#)x@$vq+9i=U?Y$i*d3r@IRvu-=^*`^|A761Yee-E)zMxuamjV|Rsbh5s z)#R$hg(zwNSQ(4taHF$Dg40xP+v#rDBa5ZrdpD|Oh( z&IcYjEeJE~9~xh+!PnbzJTG!W(+X}4opILYiTZXUH1j+pE70L5nX{tMAPDMd@5j918kwSPUS+ik<);BD&ty5&xhDwh+9VI4+LMd`IsPJ@zT zO8RT%MGS@Z$m)gnbMy?xl}>!HrRb!l@n=PW4hy%`-Uq#{;!G6Ay-StUL=F;C*yn8E zc7E&XxG0sJDqZ(?v&V54T0x`EQIFHdF!l_vN*7*E6WZ$zzZleB}b0#G10AKH=}6kH#5FlHh)egqqQ|VI%qh5?Mh~Q zb3RjDqhm-Vwau@b2up20P=B>;X_U|f759GiSnez#c7<3g7JbJGX1ZG)IE?fpIKM3# z%*i2MJH6ZzfhQ?vHkh_8&a{kL@^-J$^#RbJ^)-t;kyqU)KfhJe)?H)lk!YC+X+P!N zy3Ks>WNSpo@#}&DNLHoZWZ{j*Nb_gevaQir#(cXg0?4UC9a@14Vt+2#aiAM66A#`z9&`B(P4at ze?k8D1pK1q{{!bEAb-Nb!NVZ^XYt=*AAPR_>@S-CU*o@HA|R5p{&f7e^J7Db`Jwj5 zt}&!Mvd?8#!Refcb%=X|`;Vf(-xT_ZWGlYFegY5k=LPb#xa6i)8=gkfjTD`H$2S@| z%EV8|0`;Pm6@A(y;ONw+)w-Z)g^Fd~__WBujsEe#o13R|HXI3QiPjnnhyX=c{b$^O`Zq9cE9k&XGXHn7xbFe zC&5po%`KuU`f8@C=VX&eqXj?iRwzwhzn4J^{04J0|9`CyzO_2S_-M>MX5pl1vYf=c z^OS2xl<$qu{e+z;#Pa9%&ekv6o(H=l`+ZvG>Xa+l@bdjfMEcArhf2_|C zzn`(#7J}h?!GiF-&n8z!kpaf*UidgWi34QCl?Z+%ZiXu(B?6CF3J(*YPZb#$=SM-t z8{Z#H+ke3EjUG=Xy2kK@kVfbF#?ctVaF2{#&;D#WQZ!$gj+DT#5P(E&rm~S_P!7H= zt3-%_DV`u!Ia*;SdDNWi5~i|a2X%=e)%6oyeJW zQ81I3M5NJz8;c!_=K4Hf`e)lQOrdRxA&cL!Z;u)xc z3T4;Z>S65S0wx+wE!md$xtKB)Gm8pVh#ahqTCc2`z}+lg+^NXw%%z}?VdIv?Sv?CM`z-aeBkjlD)r1J;hr?CzDtpL9GeAB- z8px54+Tk7mVb|Jd9dDaHxkoyh2Vsg%n8uZC zbVt6U69e=n*8V9mBjrs8Xv-u(?q>h~rg zTEvV$)hx$PF**dZU+b-02QF|uYbfUa(Vq|=9~q7XJb&8QRb$N6sQ> z+;g#)*e_{ymK$}-vew)Px$gN-#LH zz)Y3^8^KTCBpUjr9@b}A0zSsha=FNA>xCW+T^x`*bI(!FTFo7z9b6h5&sW*ru1dGz zzXrj;B10VjW;_6XB5y?#Wv{FQs0;cQSN{Bscqcw0bt+fv(Nqjh!H-`zL;vNdQp%R4fSnCQd9zd z9yk8kP1tKO3E)|CdC5oHt#V+N=u|s)p0qljM1mo;IKr&F<$sZynKic6>9VEBWG|e| zrh;P8^orE0$Hk74y>4gl?Cfthi1{O>vJal)2I3%nk)>M4y??vBKd$}i0id9C#6c!K zE&8CKGM5DEjzANOGCjBoP7Frd0`L@ zB03V&wX9exJhu46RwsjQQ1+SrXY=apP5SMjB;(S_+VTEL$)ZAO4dD9L|~H`0uFl%Iyj_8nSzmeiG(D3!Du_rxewRKgJ&F3aU3$RyE<_IMh(!x87MCj z*NGFXU%F9jHpjbsj7=H^Z?7`*GE=s{B-c7ymDXp4O(gq5D0M02-6k+omU0#<0*?pt z0N81M=6`af_?oK-$!-Sh)XZx4sV#lt$;*Mk^BJTa?D%Lxncz@G6u6WBWHj>Eg?|Iw z|3mUO{P*6*)aJi0^!HEsNBUoO&foKYv2p!~|Hj3^&i-%y`)A0%0RJTd692@1nSV$B z`v?{u0TJd`|L;H69~SNr3_QXQ3WR}$hebq!M}PUb`WN*tCKfz7t5OVtfeN;$onOs! z``XSGHf0JNYQ$V|N)Fr{F+=~@FYFF=j#QjnKjMJHd}m3x|2V);H843Vrs#7v11xrI zCBq}Tnw7u$d_O|O9?NQTVQZPQWvBMMTWyZ-Okv+VBpEJzI*=vodSJ|A^7{H)p95_G zn}6xp5`W5Tf;b`XnoW)q7(6wO3T_Gr*)?5lKH}yQ2w*uOU(Bi*N2tbHYl)* zT6l!qZ!6C$DsaMw+?B0(0*CI%6l+SFqLAr72%w7!hT+WP?v0#lwT~AACI57sIDfK` z_dkzgb0y==y%wybGixRya+1A%q03yh`0A=#lgUUt(wcgTWNJ=b22zH~$TM5NTDzA) zRK=QnBHoA4q#l#oZBu3r)e|I=l0Dm8Jm!=2?^}?4EskRQNdFyQ+q4zLvz5uN>7I4A zMXz8oRq$NLXdwQ+mJW8velo4%O@A8CRGoI)c5}T)Q&A9&{%5G9A}T62ESRdbv5XV4 ziN9CkEwG#3*Fx%)Sq!Qw&#;D=vtq~y?7>+(iI*v+o{gCD8re`cR6?oKJ%79+?%&>eREUo9`(`!9kFBXW8T{e6xb+2+U@?22NiX}X8Y5X16ZqWMm@xf zA8hHmWzu^|&3-v$^#Um<@_!#sSsvP4Iqn_HJ!Ez0P>)m? zUNg+kX@L<#@ClObgnXZ5av)o3nYL;v)6Y{_Ot-$7b#LmT*tbd+Py1LEJ((QT85~l1 zZlg{nXe{o-j1^+}euA^Lw`EKF)zJgMtbNLw?pnfJ)zDdu&sd&gX@Al7ql1CVdvgK# z@QYLJo?H)#2I}^i7ma4$8xUJNgYf3w-KHnJ_@@ro7=9RW+RFyO;^nV6Z5&e&XBx+oA5gf%` z0>4K3j>ABdNP*L_!|o(I(f3c{&uQ+uvT^<_)_<`xUjojG`~1g7sejpsXoOiIZ_3{g z880&b6@$4)!D&orFr7_`o_kX_pW|+JySu?p43u|87!FnD}QtdJ72HsO`4=hYK@u^rTBH1-tBgso1 zU*3cee^WG(V8BLdKs`p&2V-mPFxL>w!Tx~-;;-~0CeJm}UJ530=H~k@(b#v<+bx3o z_gIJfT6Y>gXRXn*V|Hs%9cbo$Y%1_DGM`sRhxejIe}CQm;yTB`%mX}mDhVS}vRC>x zCGcJ9i=z#}@@}(*mrpVW3m+#3Ql;Yivh~k(F6fAy=SxZ_`+>yfPKhrg#BT4nu-5_0NQqc1scl)tToQZYO;;%H|uoZQ?4 zp@5sUsIUZ|66h4R?0!skpv}(oc-+t@6eo207=N%2|GBO8+e@Yo@-%&0>#twWj_pAB zmd=6gR7HzG$J3W5JXlyeg79h+I(h~U2{w#&j9DTNfLzcgaMyjBs#g~61HjVV8{g(R!4eE^SFfQQaMob(#=Pe;P^P)GYwI*V;_tf zvO9Pc+ecvMMYm!zxev{mh@v+zO~`t(**dH4eV6?JNFeK;ju0##qiI)v0I)s)yeA(3 zRmYr0VPI_sk7=Vy@a|Gh(8!0ogt8^TO@C)qY-aR$UEj9Ooz}_SY~KW|AUMb`*Idr7 zd$;+ykTO?e@Hn-yQSS_Jg4DA_>&|EFX6#;bEcDC8a%)0WQ3u$^PING`hMt(6ReCCmsZjrBg-v)n57mp`hQ(#Sn!OEOrC0#5_N6u-N^dPU;4b!FWS5BUgV!r zKKnpuSyAQ$Kkq>?9CiD=&#IC^SZ>o;nQMkQ{RXS>w3I%wSso-DY1nXN50)TChw!~1 zCLVT$km6qiw+=}Z+%Jqe?8NCWg>?7jqDEZ1Q&lH`vpw+wM=>~~49u)CK7XY1e9F+L zTe{8cSn5BwJtaNZG0za3;=1E6(@?Mq1g*Es`|a5=q2gciM0~c9-78F36)v6;I zaA&$+WVa@=em=dQ?-8b@`EkzyXk=a>l0&3s-sL zG#sOoRp{_$J#abK3WIeCy>Q&UNN38*c;ncYo$ZTA=F0z<;6afv(YJ;4rQgcq*=g4e7{% zU&eFlZ0m4D`|H>I0Do-HqOA>c#_wOw_M!?nF5UJb$LgL^lxR3EKeo|5CXNslWtAFr690ulh z{KrB-{KbqrhYcI)xtP6wY%T>mPN!k5it-onfVjLaN)E^PpGm-en2#g;4*#$i(2-6Y~&%(oH)a<6mA|=zSKR1x?Ca3<;J8J%=+0%gb0JJ-!+t z&BvG#qP$6C;-xA=pm@|(iApNWI3`MDRMoDYhHWLK2LsO(NI zi}<$3*3eFXJLCc2%L(`X_HIn&-i6h|-l`i>C*4=UcFb3_OMWxc0aUoEJj*Ofeo;FY zhv-F}gxflbuE(MOku-mN5Mn~fvbs&=uD=2x5wpZ;0DQ($QW%^%Y(DJ?R?3wgukSYnnV0tvZy+&zF*i z^^;GK8^dOWip+VnMvO1XiJ&brbA3Y;eR$(%cz+{!(5g2kYL;5qT#r8UY1y}63fRA* z>f47SB1>>T9w6?qXy<|0C$zG$;pf%pj+)0xA#gUYu+Z->)r?CW zW_)S{Y(6fwl1_pamjXK7M`K*1rYpA9Q@VgM>YeN!>?|uGhls9%{d~VYHfknt-PjwNfZs>^f)jaHhR(_MRz>2MzOeq1Onxvu98PVU}(s_*~Xu<+96fz9^2))?}@y<5VrC#);SjHe?7IGMBnKb6FVo^ zCiPY5t3{u;L#m588S1%1x8`Dd-j)_ql7Gp%E*qjWEOIh3>?nT_=;LSS(&}RZhqX}f zY5q_`Lj~XKq88)B)WW=>jXk-D!;I7R2y3NS1Zf8Aq4}`no-NyCTH<#-rW)m5iL2%A zX+-;8$cnxJqghxBQJp}QblScvXSS)SlZZ(U@2A1r9Pem4+qXELKb*-x9&VMPx0q&QcO zp$&#Hg*^n@ILQ;Hddfet3}qE2G%bJ_!&$9lY!Ev^{hvWwfxBC7I07>}L4O^D+(YJ7 z*%s*N5~m8x${Rv@pK^7{_77if4OMs7K<192eZDJeqATqVlI^*ccpPbaD+>kmIVtVQ z^(!HQ70yQDqKezO`p^{~?dvz@-W(W!e13>)s^u;`8=Y?NFg+tax2iLVr#+XC4B_o}~z^ z`}L@kMtDNVy>J>029a9BYF!8tE0N-Hk24lyTth>SWkLKkML6%~cva7rwSo2WL8tuD zt@oKJX5c^`CuCr$w7jf!D34JxLcd{PrLCPAC2(D4C7_yqr`ZPiJq$QEM z@fIUGI=b5`)Fl9@hwecSN>;C6iPoz)^` z#uO{QFMq;12Y8hCb^)R1lopm6zVE)awDR8%?RI$> zn}TkXa{2?3BaOxn~@wWv$DY0tg#el*hOp}P;eP-jy+dguRRW&Ub28 z29S~=t$*o6J9r~({$WrI7T~bw%4p-w+G>rO=nY<10+Ao~=jGDtI#6I~vE zJS5rfxPcoLV_WqBV8nSF4_da$dI8=H1-0;NQ;2Ml)FjGUl@vuT%vWi2^>L%(@(-lA z+%z+9wwd8h}<@+4E(!Z@t{|bYG@E zWD(iQeR@}Hj=sC!;B9A&&*9l)_vDYELrL5%8??$BNBC(O&w5S-I+YD_i-H7zbA{ElpSI#`uQ8uEHtD*b_PdV-Jpi(B9{>dv zKJm_C-ifW7st}p&DjM^#_e)=yzy>{yHoP->XdbT3sbj_CjYeHEk_jP!F&Ys=Jdd&g zEU<53ZJ+eL{6i*GGUA!0w_lOEiBT7`p?`vALfQWs8Mppt$=~O{e`@|OPA+!N-}#UI zC;zc>{+s{)De^DKf2Dt){~p00!Tp{1-#;RQ{o?=oGyN9=9O8eh2f$de+{lE@C9$m0__x`b;}#T@uT0&qLC;giS;tCPm3BCZ6mMG$8{{6gV%e)NnLQpWF7a)>w3k2EBVH6Lf2Q6V=$5 z0ID&k71VVkMQ#IA&mTca7{Bo-Nx z){f0drCN)!Tp?FR+ycXZe%)R#Nc&UHs14=dlUcUI*3}!v^RW+7p~uFC0Rs_uWH2XW ziSDkIUj-sQsIwimaDO_zUo84wxB@rla*^Xc36#j2gwLfhNxNivxp2|NBBa#q=-@R71OIFM`spQ6nUfXXP>hj+wWn7bqNG?H{y zq&k)jT^xzqP$!AzrNU6>{jnG6_iP0!{1pRw)4th?ZlE0x@qZ)Z?iqB*l|5T`^Ey%b zt1Bk5wwUP5?(=aonWsnDa_Lu5D1rT6dS!By6;e$o4YEnJx!k46g}j^3$&LL6M{L+( z7zd4M+_RLmyN-$j-O3U?qRh4+Itr5Pi?PSnDsm?l?;Hb{Y*;F`D6mpoqlIx_UhhhJ z4N16Z0qxh$ynpV7ypsf4BWMO8-eiJa-W~z-q2Z5?AKMA17VS1AEK8)CMIB^qlJxGg z4(>5~)&d^@v)g^tJc7;E#)w^bQtKr*q!bRb?k}SDqgvaR3VDgkQt=QT$ra8cfFu1u z8pW9*(h!fHh=dsmoVj^xYLR$!`MB8gFBy1 zy(A4C&1|7t6JQlE7Pt*9I3^Y{j=89VKJ@%pKhMw33bZ@7v2o><_~UdxIUBpMB6<+&|zEO;zSd!!YXf0g}a)xA>2e7CHQ>6C`7Ny_GIJVlhWEONum zo80t+*PwTx%1)&>soo*?2CG%1q9FM<%GnGGw3Pn%0$MQywMqFm*;EuWJ5?wLrL=|T ztYpE3&SQTJb>O*<*(Bo^*klx!ub#G1lq{S?PW2emxk32}-!pc7rFW3)I$XYMp{_h= z4@u3%9eE66fn(bw8@eV=Sv!Q%2BV|$I`GAdd`y+?wjBRze)_F+ymLD@Ih_TpK0Y z?u1iRVK$Ed&RRdL7cdL#B^-#oDPXt+*i{zbRzSjYX(J2ldg3lp%{`CEKad3ocxNN};Y&tmtbk#o1L`3ceFp#8H;o=>uOd^S2|?<53y$KLqN^VPhz>9xtDJ*)6giW*B*cM@*6$@#MhEP>N3p8(=nwi-wUSF4c#vZJIy-6RC1pgw= zRw702xIc!%1=5ggtM$N6YZ0rlPA)tEBy@+A8ZmEnUTWO5ti@oUw)YGdkt)ZtDvJ^* zrw0_-*Qq7J=a!zuyA@KPzUI9?-Rpm}xG39g(ZP)c>oPXBhnhzdinWf<$tc9O)D!}- zBJsxrHU%9*lk=aMwM%n$uo;wuK!#H&S>{OG(rLS0)C%sI3xPZ~HmV~EsUBF^uge=r zRh#W-8C#!kNp~?;#1`7^CqDpC{MO5bHA`E+sR4~L*H*5LI1ak468o#|IeUL=E9S;4 zy7t>sS1BXcZSxu{zvifX$36GWL*266Ci-Bk?7z={|J?jfEZo2A|G3yVf64#E@o)b7XUP96{0E2l2o?$EZ}|@v z4hA0K(Qo;mU>-k4K>U9t{?l)6px^P2TuJmh|9!_lY^0c96o5bRPdp&5rqiL0(vkC* z9MF#tA0xv43V^>E|0=~`vcZdfFZ?3{6oP?$ZY>r&wwNK#in4#~$zS;okc|!FtN7%R z$P4)YKZ}7&X%QZlmTTt%Uj zEB4|$4AQ!QD+&6H2;sDLtj?o7`c^63Uwnr_OfNa-8(uH%~>-A6 zVJ&dZDgLkazA}F(u5H~GhXf1mO$hE9+zIaP5Q4kA2X}XOclY4#?yjM6Cy*DCea_kU zo?Ug%tGacn-gy~6){n04Ro!#VUh5lkjQI_GOyFhf`M7PCAt~MFP3?fq(1R!ixpJxu zMksAhgxp8tA7oG;2QOev^_60K3}l4}6XYfAxpJVbn5};b%QoP(17V>XJ|F;`$UTQw zn{L(m&|g_heUt@h*4n~E88CmU?!|IJ;nggV24zZcCx;!~x$%`!Jdj6~C>Xr`*C4(A z4kEMpxYxZxUuMr19+z_nr69k4>6OXJ_+Q2n;ZF6{833^}`dB#tT172Ic}Wz?t3}6U zf96;!Hiv(qDKwl~QcO>KXse%PM-$Yo>zm>(QXW?64^CJqU%4tzRjvK%IAYBnKN#M(}EnK~tnT7IN04ca&6Y_mh8bsaGbufzXFS%RcSO zM^j@hKyPmDt>Xj$c4UiW^J3~;K5F`%RfnF!w(dgqMME|N z<744AVd0hBz9BguQ0eI&QbX(Pnu?C7%|ub4wU&5a_BB$IqB(T7h;yJu_W`YaSEYT$ ziT6&+j&fq2p-#C?*~j0I{E`+Mxs+d}Y;rJj&a4@8n&3HuzmZedX0LHd52Lp?P9WP~jtOjHRSCVIrYEwAq8>NuST z63z01QR9Ro4 z@m|}2UojwMhgAJQ?_f|oX=DdZS5Md7LSqH=db3=P>|BXX#mhT`eW*lst z-v-MMq1Gr{xq+_VJW*P1Y5QPrD(-)Q_;O35*nal5#JH$BRjkMI9$>>PDwkp8k9E;k zy-mAqHoN`6cxgb@J+*--4tTC>2uHe4bW(hD5v;&~d4(d37_a1j2)`UBSKY8n2DmOf zEB}mxTUqOA!jfvYtmVL99d2t1V2mWNFfmBiysv??|gsI!eirc z1hj0-33ZOLDnH2m@lK3phb!v-hJsC!h`Y;Vd3~iO{>CibK0mLlolH)a)NZLR1CmdM zISD_Rm=i518yI9uF2y+pGTKdne9 zdwwsvD@BiY$P82uq!l*`SqurK&*^U7E5m#i z_zWf|82($dPmN-l$(MhaVmrENF)7?k)z1QiB$QQL+tI`D?LYY?6;<|5{#R%Ip{nCe zZHcQ}gme_dDz00SM-1!o4r?(*!T5&UmwO!eI6lfFzQ80)DD#stQ}>WDJ}crEyL;XV z=^!SkvO^BP_RLQ(z?M87V+hYQjyOl?MZo8FcPEUp#cCIp6sgKx{Nz$llPM% z&!6Mlhy|clhrxev3*%k~+D>`A@-YY&W<&JY{xt{kR;H zF>5hyYl^dbcYby_!#N0?ZRrgevh2Ifa+06<`DIdw5PAw`Hz@a>OM+Eua|R*T%;;M3 z3Qur9ttmK}XbH)|#{piW5sPvSQ~MF)YXr}4Iss^&kMVz)T0<%tqm^@Tk4JT}S`A?v z;6uefIIz8UyA8M^Ov9(_YL=kQ0k}>dM1-7C4r65@Q<;&KyDXadmIj?wW1N&C5?Wu8 z3-oNwYLZ}hZBkiuvgE6}x&}{mu-U{c94pacj}zh{C7Ru->(ti2Iwg3k)c_%+`0L?> z)RF)SZS{ZAP{$CqFLf$ewQfihDAo@o;3aeF1>J6|2}`F-oh-`sp%? ztJVtjBJ^pZs%1obY18yXiU^G0Jn?rNypBh9`P+jo1)ias=4}aFMMe=x*I0cc83cx3 zuF@ETMPdl4MC(HZh|SiYkHZzL4-0uXFdTuZ3u+eZZWN`rpC~zI%tE0*++!>0@b#r2?<=cnTA$k0kw*N@n^E zeO6Q8`x~x~)^PkckM(_#U2NMd$$iU3_w}PWjn0$Ak(LCgGF9Q3BYnNML@Lpoz8wF# zsA7uHbol)4#JrS`hB!K|5i0|!d5q6M<1kc^$tmz3#a zhrJbs8YKEAs%(972rvjtT`^=I#|#+jkB4o`qUE;!DqAvDIHLSh5tNtWT((rn!x+To zLrtpIU#`*>c%w03p(0+>mp=BSarNnCdM=fG_3qo#5FA{)VX48tjtB~v%RdsS<2!$R zo(nx9;zHfg&peVS{X9$l@ivoP!Posm@X|upQgx991?56u9?50=TQFV_6@)L)AQYW} z|GjL)B`24u_IkImaC75heVEDiFBY5NzxCGt4E#0!|F`Bpy=VEy{$ECBCZ?bHPrvv7 z{(JBr$o~ufC;j)&zaIh;6dVfdr~iK!0vsIr6(r2h6sN!We}B^dzsbKa41d^vQD5x8 zXn*$q{!oY(3BLnJ10fwZvu9{@vll}2&WE9jhozBhkcl>fTj8NIt|6~FFzevdY z%L9z&VdHvzeS21Ub;Vann4bIw#<)}icz!%h)*;4(-xr@(8TeG6(SsTE%P!2yUn zxH|}FNe;JDE_MrhYMU!${J4Mko=g;h zWDT`yz^jk0IgU%lkf08eKWIOYlv1^{eTOhqS#25fe#dF=A>FIpr~}Ouo&?O8djU<=C>tsK{Qt;1gR-qHs7<+b(^h-X4b*$N*w< ze=`R)GyND)Q2$*6wE}-G!*4;`Zc?YmuHw=G!Qg+g1`q$T2G`JS2A)F)a>F2o{n2pI zLC=QMt1kiN#T-mjZ0_D|3J&=yb-J_Huk1P%EJz-oA6Gs?l?0Q$W)fpYV&*V@HwD2c zxRPhYiKjD(wx+fwGTp2UCCx&MX?jVDiAf_;$z z3-%#zCMdX#arw>Wh+aLSC;c5_BX-G=CtqNE__00pO$V|AQFC~(sIi$zTuO< z`-X`uhF4GNgQtH%{e7)3WE}cnHE(H+wL>dde5AzsNl#g}j>hcX!XUD{Nt<~{Hm7u@ zdIsoHOG=Y%5(;k&c*F?tyM>+e8hwB=sRgRX3aF7vl5gUG+D2s3q7-3L>P>0Y%)H$> z7Mqh&Sis32gOI0ZI%jBPMC4;Fen{%W#@B4FAekPf96o=n(d-BIB)%GA`3fT}RO1 zI{Fr5ExCVU?%HwG)~WW#8(MKf-wwTfF3V}-fD}JfjI+LJU954YKN`U{^_PN6tBrJ5)ByhQ1X8QSEKvL6=nottr2lWFI$4zzHZ7c5ig~% zv%Y#vZJI&D58~BhE-;R^ATcLxYRW$^PJStjX**sdmi4(z`7`zL*9oJt-~#DjQ5?#A zcIGT8cz)nfw0!h(b~xr9Xf|^eL zVQ#P1`@nYm6s0G;d^ap=7Sq*Sz1;CQ!hFJJ=3V256X0XeTHzH@-HCc{q(=SG`U&fk zgxR-5%qdo`?;wGvB92YB@?Dm}(%Gk;M(4;A@#~H{RrTPx4xbN+cqj~`B0zsYjE-?Z zjx`KCqI*=@XMyagNex2tw+x+Xo^ui(r?=w20a@88qMB`{A9ua#GF1E!{FMVsx-kqn zT8v5Rb%fHBw2xY=4xhNzl)db#_;PzZ>=SJF@OQdwJe$#G5%=y*#IrfpwubmM*$ zn%*}B=ToBaMY~aZas(2vPdTd3I&^<6s=rR5+I!tc=9HBGjs$c&TrbzPF(&25q{CG!`0EjwuY|(Iq^~vPTg^4T+Zun-3dx!+WkF&q-5Z zIWkPk!IDZsw`(3w-$Cvdu%Pf|MRGpph~4#)jt|f0PAj9y6`+5nrKJhhx0zgLnW1gz z(N%sN$T8C8yvdF}oS?U_OUg0z4CHUHDo*ZE&b{`rOff&a14 z{e%B8F){q~|1vWF&j0zh;6IT675sDm-yi%B0{TV%{U`kw0ul@y3L5m6{tE#H4GH<* z+5o@!e`WtB|MErg+n~w)pnw9Mo1Z>cGyXIH+o2=)(32Wx#=8mM~9XQCaQhzbKVP zRB%=#^#Bw&dRIJ&;O>7qZf*VXoux3v0D7zc7ZrfGUe29&8QehF61j2Qz~$SAZF}at zX?uz4_B_Y?#;}OqOeE8yhM7z^;Y+W_ug(er!w-L9C&3l^JrUNX4Y)YYk4KuIXoMYY z^Do+PvSi!bi#ELBqSjUmVHbXS`!{V^Qm5kzVgjk+6nOO=acL=J=Ir=9gL6_Mlag% z_1}NBVX>duFc$)p$kXK9wQyV^4_hPyIFWT_VPi=Tl^qtrEA2MqE<7)Dg zc9R^YSRH+cd1K&NGqmg&fJ-p;p_p6#PFL=0L6yg|nfbBcmiBo^U$0Ohq5(Jhu=rgh zV#cyM7UObuq)n3+v+xCdxn^xgcz*NwD87HUAh$-ZxFMa5NgP{id2qk`mTh835odyP z{>|HrFLBNV-p@nvBM0;9xO2)P2Eq@I#L%7md38XC5c%{BbQPuO z_oG@@S*4AZ1!qTqch!W6B5xN$@WFq6dB&~*X|FR6xP(uwZ0ub#OC8Qc*kC}v(+q#x zDt5Whp*;q+y7%N!p5h^R+D&#p2QF49)}T^i0IE}}+g>7SKkEzdJBX7E9;u1ry#5Ir zT(5Cc%Y%vbjo!9NSsdtiGlQYmR7-m%u_%+yYzSrze4_4b%Az8cg0J!~3zTb84KP zz_@~v25XHB?AbL>=|6@KrsI}Y0ucgZ|l;|OgwLvUzcNZmv>k5BU)hN+Z zYFC6>LS6$7U%$vXsl7bNs92hBc3K&fo7S1`v1vb1_vZ^II|av&6s~5ct|?3J@m&iQ zr>Gy@IVYR;H*%wa?>J#c$`@0piUVeV<5#qug zK60YPjCpUZ7+8KYmH7@L32J}V_r&RNK^*EUmhPloeiP{~;XhvQ6*Fe8nNZ6-CO{ju zT)Ep_K??Tjp6Pkj;k44LU`bXfjCX$u=&;WRCt26zB^C# zk#Wt}Hqa>}nAKrlOAhap0P9;q7Pjo6HIt<-#jz!CTw(BCUaQdYX^($>e}z31lAgW( zH`7_NE8N;MeAk6ah+*Zk6k>g2$&jVew(cQ2GPW)1F6LhplY6=FyfS0n7Ra+l5X@Q1 zJ8~xneuJWkXP3~b9txi#)RTr>HSdvQfGgR8Bt1n#x}zkhjWOe+!Wkwl}r! zS1b~&V<{pk2$uKYG%;akp)cFYd(S2;m;|LT%}m=^EsI^all{)Td{v=oo3U!I!0uF~ zR8pLAO&1S-z>N5w%-nyvY-{QyjH0o<0@k)jG72O3LmBXs4y@iQzbzXlBS4dg7C1sAyb_-fH>E}D@ zh6FR78NgPs+?px&NDl(!oLHjml;w{Z0V=mhsF^*p&tPTXZA^%}Zi3ND>*hcrEJnnA z@_t(uXns@Q7LIQa4E7m)@yYCs8L@ddr=xQ6inh=$ZPsfjop?%uP!=;%n9MAQ+G(6|)dmB-*s4o~0LA9s{S2h!L+eN-?25{ zkuV*?n{YF(k}^KzP*Is$-bCf|8jcTGD-@ym$N1w!r>?IR((ZT+m*Y5TFiqqlP5V## z3R5h8n5%E9cb(*OFZ3h==LbIsWzPksC>wuE7xo@xqIa<4Q0CscX;hYd}`Vz@kuk=+WJ1|4Qj0t}~CV%HJ)@zFHll`@AGt5^Ah? zT%4{y?(F82M2Tur{^7%X$D_>6drR`(mq%tgcfk#JK(-~O`D3|pK1ZPaIHVW?A*PSD#bz*p)Lps=A3_yxeX3{*1DQBu}e%d4u2Gzr}va|yTzKg6u(17Ojwr1 zhg~klBcWyNA9!Y|Tb=FjFIY7t{ZV!m+gTP+v5Z?B`|BIGI2}CTa3c(`%m074@57=^ z_Kcxt1F%MH+Mfk>zKv-kjP~bH>cG4dYeFX)5O|&5X@04+FAj2pd2-TVC7vEXkgPp2 zM0_Be!fMBAsutzj&p}ofVM6wVQCu>Sx$DV_R+(;OuTJ)d{7^jhWD?<9zk_IyTZ;S= z?)l%SiR=%m6~4|%YOM*R%DaCU7T?Gx%%fs1d7d`&CDy9q72A5WZ?&O*1=C+n#ch&A zm(NJRQ&%(<5;5!oHth{WRrMpb%{4%k3{eq!z1Z=56&|Yt%w*>VuaOj*s@46dTlQq^ zQe7R`z(sM;XRaMbi3*vdnZ0NeUr>EMA0JFp?8Fu+x9~Nb-N%!Rvh6!x}Tu znO1IoDYot&<_%Tt71gc^uJCXp7;tZSiS?c+dE%SVYBBmk z>n#Ifwy^xChZuJ;DSmEKPu6j3|^J(qaT0d!8?URYnQbTwUgPm^~>=c zsP9u#hmy3S`3EW?oaTQD&(b5r4pa@UwU`t4xjUd6zOo7XYfiZ3&Bt za&H93Ch6n7@|bL3L&HIyfP(4=p`yD9=1UAMe*uQ4!fxphZ3KVo09`M)2|D?P`GE~} z8|yyF#SL!p<9Cq7>j`w$6hw1|3nJ0*($pS2(YPpUxw)7vuR}Sc=MTYPT_7SLu%KT+ z2mYw)=?6owXENyD zm}zK8Q4lfEzk`3!zKUNkRql~n;^$+2lq@%bANqAh9@N-ERbC`3GpBQ??PXq%iGPh? z{MGuwZ~VWFzh3|Ox8^^;XM9ipcm1D*j`=13iJAVl{{L^mf8hF0`9Jsneu;mAf&u*t z|3Ab_0QBGUpP`^$Qlej8|0Dky`K1Bai~bJ{^RoZjhR}bzYBQP<^=y(~?vp?a+UII{ zTc4b6qF?@hNccZ50R3wI4GHy!d*EdgI11{doJ}?%;~D>_>Z#4>3jtfSe>n&GUp!#` z(G_fmv9#{nVP&Y8d1ETIu8i@`ReLN{`w`gdj8Th^)84~3$LpH5ZBNUIJx~muOszLZ zfz}HH-l%^iFHOO!E|a-L;OzU8cu@4qgUmJxGdGugq}I*Hd37x~-Osg5B2L|ylU?bT z)#_u9IH|R2q1d;3zk{F{mbZUuMSK6VE!Y6ISKs*f$~DinExMFs9q4>agE#n? zC(iqvb}Ob-yI08gu97{mjy+Rb^X>$otvYT4cQJoDc?~wp`h+-$dphv;++=WCl`=Sc z7^7P6B&kO~?$>jqQRkMX0#=b>L>_xV+jUy4&$=n|s`hefkG62F$=zwzsB^Q;8}_m}z8 zU_yVoQu#gkcDdptnH%8bd7p%>JLjT80sYR$dyb{zYZx8}gzhTTmV<8x&U>%8etZ?T z*q*7ECkO_8mHqBRf%|yuarw|ZfLu*_Yv~+9gDwSHQTB{-hAA`5R1ahM~%Z%Je zl!9a0W>ku*eN1Wxg7EZa-jc1UGaQY%8a{u<^xdURR{^QHG>s5oN499K?oC@2FIgQO zCy zCT2*qcZ05xiu0sv1~;>~xMW_*!UKMxgo4EVNVx#YtZh9MDu2fy@F<(#S ztC{)YQ6fi(kRwqwu|%A?-j1*WCF6hoCJ3)>LDGrv#_E!-U#cg~wq(Av$SR@mVB|MR z>{rK@YG4q&?!9m|91`Xw#Qv2?`_YyeRf9=e#+XPgor$Q+9-E^-|X}1xnhY zv17Dq{645nR(j!&%L%4%aT$NHbtxot7hFFz?vKc8cfsUy5HvKdEX={}*?`eL+Yxk4 zyd-@za`t1Ye!4G6C~b;Js5nc=`3{o)Kq{mu7SG`d;7~ck<%q;(N$u9wVZ=yGxv@H> z%Clo+$u46mY0DG)><_bAp(JC zCIO5vp=6iAeJwK#zGflV6Bm>cB|0e50t+-}s!t{Sjci9r)t!)EXSPOGMS^Lb|*0KaCo&*y|Q`&&=K5tqT36+Fc7)RHHLW zD+ttdeTus&rV}Zo=5~2g?+|87F$Mi;$52VXvQiV79F1%El!gntvOOB^;%n!%7W*kF zIk(bV|C0>E4#R&Em%ikcA~GR*JX_*IN0sd*7C|(*O@`SdIS>;?+i2RfD05(Q7`5MTcK^vA#M3k zmId`qb<=-?G?Y;aHL1B)PZV7603%*&;xX(;=uwm{+QsaXAxA#41L6YR6iuMj5~AF8 zpth8TV0?ZYeSF6upt^3-sL``VUUS#Bn*>;z=iku;qiaD8v747xe~YeHG%Xk3kQSGD zgu|V;&WAdVVP8!8;g)b!V=|jN$(+&8ZnDi{fy;k1wd##3Wo%NwOkzoisDKdnRZB@h z<@iT7*rdz6j-~T?j8N;$WM*Ukwwl3w`a`w*1mevw)+gTxKA)P~3gZrksfv+9WYOL4 zAk_CswS$RmpF0DLgWp={7s!%+Fy~r|cT3_yZK}rp4sy6qcSF_Je)V{o($y412)R-4 zcB_B3U7ba5-|~_+t=IC(%ZxjodeZ=DB+#kMIItsnXIXtQfnmVn=4S3@q8`>M362U? zPqvmm(}76_a>h&HPxSzAy6*kEgvJw_nh4tz!`LaFEb@XC(oHoD#SjgMQutojvlu(s zRBc8kTo%7?+ZhRA`az9!oDmtU=x5WV?3#bX-J6gfYH)@q*xtFA8wbwD^oV`6ZQi}t zT@4qMDBIm5^3c9me>+WLOE%!=Ug8R6V$ZXl=(*SYU~;#dAgghGRkqW;?3a#OoA)$z zgG>Y4RsNwXe$X-`d~4G`d+($HS-I4jVlKlMa*Zz3mI4hkRC9T(ftZ{dL*5*O2?RqD zWC3IaY$5!=)i_RjbzR{g!9D^FM(+W&(1rhkHxltTbN!9q_>JHAjoJHA RjsLIle*p63nBf4p0RRF?OW^ Date: Wed, 1 Jun 2011 17:40:31 +0200 Subject: [PATCH 051/334] only create scalarium.php if there is a config directory --- php/recipes/configure.rb | 3 +++ 1 file changed, 3 insertions(+) diff --git a/php/recipes/configure.rb b/php/recipes/configure.rb index 12eda31..49788cc 100644 --- a/php/recipes/configure.rb +++ b/php/recipes/configure.rb @@ -12,5 +12,8 @@ owner deploy[:user] group deploy[:group] variables(:database => deploy[:database], :memcached => deploy[:memcached], :roles => node[:scalarium][:roles]) + only_if do + File.exists?("#{deploy[:deploy_to]}/shared/config") + end end end From 55a312321029f3f0eaaae58b24b889827ec861c0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Daniel=20Hu=CC=88sch?= Date: Sat, 11 Jun 2011 14:42:54 +0200 Subject: [PATCH 052/334] Detect package.json and run npm install when present. --- deploy/attributes/deploy.rb | 1 + deploy/definitions/scalarium_deploy.rb | 4 ++++ scalarium_nodejs/libraries/nodejs_configuration.rb | 10 ++++++++++ 3 files changed, 15 insertions(+) create mode 100644 scalarium_nodejs/libraries/nodejs_configuration.rb diff --git a/deploy/attributes/deploy.rb b/deploy/attributes/deploy.rb index 8db59e4..d7eb681 100644 --- a/deploy/attributes/deploy.rb +++ b/deploy/attributes/deploy.rb @@ -45,6 +45,7 @@ "RACK_ENV" => deploy[:rails_env], "HOME" => home} default[:deploy][application][:ssl_support] = false + default[:deploy][application][:auto_npm_install_on_deploy] = true end default[:logrotate][:rotate] = 30 diff --git a/deploy/definitions/scalarium_deploy.rb b/deploy/definitions/scalarium_deploy.rb index fc0f911..d5b162c 100644 --- a/deploy/definitions/scalarium_deploy.rb +++ b/deploy/definitions/scalarium_deploy.rb @@ -89,6 +89,10 @@ group node[:deploy][application][:group] variables(:database => node[:deploy][application][:database], :environment => node[:deploy][application][:rails_env]) end.run_action(:create) + elsif deploy[:application_type] == 'nodejs' + if deploy[:auto_npm_install_on_deploy] + Scalarium::NodejsConfiguration.npm_install(application, node[:deploy][application], release_path) + end end # run user provided callback file diff --git a/scalarium_nodejs/libraries/nodejs_configuration.rb b/scalarium_nodejs/libraries/nodejs_configuration.rb new file mode 100644 index 0000000..e0b9ae4 --- /dev/null +++ b/scalarium_nodejs/libraries/nodejs_configuration.rb @@ -0,0 +1,10 @@ +module Scalarium + module NodejsConfiguration + def self.npm_install(app_name, app_config, app_root_path) + if File.exists?("#{app_root_path}/package.json") + Chef::Log.info("package.json detected. Running npm install.") + Chef::Log.info(`sudo su deploy -c 'cd #{app_root_path} && npm install'`) + end + end + end +end From 7532a94e8103d5ca5dfdc6ee1ff39b52cd0e8c80 Mon Sep 17 00:00:00 2001 From: Jonathan Weiss Date: Mon, 20 Jun 2011 11:12:11 +0200 Subject: [PATCH 053/334] fix mysql client for 11.04 --- mysql/recipes/client.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mysql/recipes/client.rb b/mysql/recipes/client.rb index 1158524..8ada75d 100644 --- a/mysql/recipes/client.rb +++ b/mysql/recipes/client.rb @@ -4,7 +4,7 @@ package "mysql-devel" do package_name value_for_platform( [ "centos", "redhat", "suse" ] => { "default" => "mysql-devel" }, - "ubuntu" => {'9.10' => 'libmysqlclient15-dev', '10.04' => 'libmysqlclient16-dev'} + "ubuntu" => {'9.10' => 'libmysqlclient15-dev', '10.04' => 'libmysqlclient16-dev', '11.04' => 'libmysqlclient16-dev'} ) action :install end From 81efe285be4a3bb1bc9b4730d6734b3302523762 Mon Sep 17 00:00:00 2001 From: Jonathan Weiss Date: Wed, 22 Jun 2011 16:17:44 +0200 Subject: [PATCH 054/334] Update Percona version for Ubuntu >= 10.04 --- mysql/attributes/server.rb | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/mysql/attributes/server.rb b/mysql/attributes/server.rb index 71c415f..bc35892 100644 --- a/mysql/attributes/server.rb +++ b/mysql/attributes/server.rb @@ -55,5 +55,11 @@ default[:percona] = {} default[:percona][:tmp_dir] = '/tmp/percona-server' -default[:percona][:version] = '5.1.55-12.6' + +if node[:platform] == 'ubuntu' && node[:platform_version].to_f < 10.04 + # this is the latest version with packages for Karmic + default[:percona][:version] = '5.1.55-12.6' +else + default[:percona][:version] = '5.1.57-12.8' +end default[:percona][:url_base] = "http://peritor-assets.s3.amazonaws.com/percona" \ No newline at end of file From 2a05688f0e6a0742d2578811d52fabea326d2e15 Mon Sep 17 00:00:00 2001 From: Jonathan Weiss Date: Wed, 22 Jun 2011 16:20:53 +0200 Subject: [PATCH 055/334] display Apache response times --- .../default/apache_response_time_report.php | 55 +++++++++++++++++++ scalarium_ganglia/recipes/server.rb | 5 ++ .../templates/default/conf.php.erb | 2 +- 3 files changed, 61 insertions(+), 1 deletion(-) create mode 100644 scalarium_ganglia/files/default/apache_response_time_report.php diff --git a/scalarium_ganglia/files/default/apache_response_time_report.php b/scalarium_ganglia/files/default/apache_response_time_report.php new file mode 100644 index 0000000..c98d16b --- /dev/null +++ b/scalarium_ganglia/files/default/apache_response_time_report.php @@ -0,0 +1,55 @@ + \ No newline at end of file diff --git a/scalarium_ganglia/recipes/server.rb b/scalarium_ganglia/recipes/server.rb index 2882381..3cd9552 100644 --- a/scalarium_ganglia/recipes/server.rb +++ b/scalarium_ganglia/recipes/server.rb @@ -56,6 +56,11 @@ mode "0644" end +remote_file "/usr/share/ganglia-webfrontend/graph.d/apache_response_time_report.php" do + source "apache_response_time_report.php" + mode "0644" +end + template "/usr/share/ganglia-webfrontend/conf.php" do source "conf.php.erb" mode "0644" diff --git a/scalarium_ganglia/templates/default/conf.php.erb b/scalarium_ganglia/templates/default/conf.php.erb index d2c2f73..880a5b1 100644 --- a/scalarium_ganglia/templates/default/conf.php.erb +++ b/scalarium_ganglia/templates/default/conf.php.erb @@ -196,7 +196,7 @@ $optional_graphs = array(); array_push($optional_graphs, 'mysql_query'); <% end -%> <% if (node[:scalarium][:roles].has_key?("rails-app") && !node[:scalarium][:roles]['rails-app']['instances'].empty? ) || (node[:scalarium][:roles].has_key?("php-app") && !node[:scalarium][:roles]['php-app']['instances'].empty? ) -%> - array_push($optional_graphs, 'apache', 'apache_worker'); + array_push($optional_graphs, 'apache', 'apache_worker', 'apache_response_time'); <% end -%> <% if node[:scalarium][:roles].has_key?("rails-app") && !node[:scalarium][:roles]['rails-app']['instances'].empty? -%> array_push($optional_graphs, 'passenger_memory_stats', 'passenger_status'); From 74a6dc6450b72cd19b6a790c9972a48a1d7a8f44 Mon Sep 17 00:00:00 2001 From: Jonathan Weiss Date: Wed, 22 Jun 2011 16:23:36 +0200 Subject: [PATCH 056/334] also display Apache response times on host view --- .../files/default/scalarium.tar.gz | Bin 67816 -> 67804 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/scalarium_ganglia/files/default/scalarium.tar.gz b/scalarium_ganglia/files/default/scalarium.tar.gz index 0668849646fa399bfc42e4b3e4343fe06567d93b..dc79663894f81926c7d5deca560fca6c9282013e 100644 GIT binary patch delta 35043 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 PABX=7KJkYp0N?=t)HZev delta 35043 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 Date: Wed, 22 Jun 2011 17:52:29 +0200 Subject: [PATCH 057/334] update NPM to 1.0.13 --- scalarium_nodejs/attributes/scalarium_nodejs.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/scalarium_nodejs/attributes/scalarium_nodejs.rb b/scalarium_nodejs/attributes/scalarium_nodejs.rb index 6c09009..e35b019 100644 --- a/scalarium_nodejs/attributes/scalarium_nodejs.rb +++ b/scalarium_nodejs/attributes/scalarium_nodejs.rb @@ -1,6 +1,6 @@ default[:scalarium_nodejs] = {} default[:scalarium_nodejs][:version] = '0.4.7' -default[:scalarium_nodejs][:npm_version] = '1.0.6' +default[:scalarium_nodejs][:npm_version] = '1.0.13' default[:scalarium_nodejs][:pkgrelease] = '1' arch = RUBY_PLATFORM.match(/64/) ? 'amd64' : 'i386' default[:scalarium_nodejs][:deb] = "nodejs_#{node[:scalarium_nodejs][:version]}-#{node[:scalarium_nodejs][:pkgrelease]}_#{arch}.deb" From a15eb2570efe8bf755aae6c95392e052f106af2f Mon Sep 17 00:00:00 2001 From: Thomas Metschke Date: Wed, 29 Jun 2011 17:37:31 +0200 Subject: [PATCH 058/334] try to install the new ganglia UI via github and automated makefile --- scalarium_ganglia/attributes/default.rb | 12 +++- scalarium_ganglia/metadata.rb | 3 +- scalarium_ganglia/recipes/server-gweb2.rb | 13 ++++ .../templates/default/Makefile.erb | 65 +++++++++++++++++++ .../templates/default/ganglia.index.html.erb | 7 +- 5 files changed, 96 insertions(+), 4 deletions(-) create mode 100644 scalarium_ganglia/recipes/server-gweb2.rb create mode 100644 scalarium_ganglia/templates/default/Makefile.erb diff --git a/scalarium_ganglia/attributes/default.rb b/scalarium_ganglia/attributes/default.rb index 433f30d..ef021cf 100644 --- a/scalarium_ganglia/attributes/default.rb +++ b/scalarium_ganglia/attributes/default.rb @@ -19,4 +19,14 @@ default[:ganglia][:web][:password] = pw -default[:ganglia][:nginx][:status_url] = '/nginx_status' \ No newline at end of file +default[:ganglia][:nginx][:status_url] = '/nginx_status' + +# gweb2 config +default[:ganglia][:gweb2][:url] = '/ganglia2' +default[:ganglia][:gweb2][:destdir] = '/var/www/ganglia2' +default[:ganglia][:gweb2][:apache_user] = 'www-data' +default[:ganglia][:gweb2][:major_version] = 2 +default[:ganglia][:gweb2][:minor_version] = 1 +default[:ganglia][:gweb2][:micro_version] = 2 +default[:ganglia][:gweb2][:svn] = 'no' + diff --git a/scalarium_ganglia/metadata.rb b/scalarium_ganglia/metadata.rb index e108fad..a28cb8a 100644 --- a/scalarium_ganglia/metadata.rb +++ b/scalarium_ganglia/metadata.rb @@ -1,7 +1,7 @@ maintainer "Peritor GmbH" maintainer_email "scalarium@peritor.com" description "Installs Ganglia Server & Client" -version "0.1" +version "0.2" supports "ubuntu" recipe "scalarium_ganglia::server", "Ganglia server" @@ -14,3 +14,4 @@ recipe "scalarium_ganglia::monitor-fd-and-sockets", "Monitor File Descriptors and Sockets" recipe "scalarium_ganglia::monitor-disk", "Monitor Disk Stats" recipe "scalarium_ganglia::monitor-apache", "Monitor Apache Stats" + diff --git a/scalarium_ganglia/recipes/server-gweb2.rb b/scalarium_ganglia/recipes/server-gweb2.rb new file mode 100644 index 0000000..33f7865 --- /dev/null +++ b/scalarium_ganglia/recipes/server-gweb2.rb @@ -0,0 +1,13 @@ +execute "Get newest version of ganglia web interface from github" do + command "cd tmp && git clone git://github.com/vvuksan/ganglia-misc.git" +end + +template "/tmp/ganglia-misc/ganglia-web/Makefile" do + source "Makefile.erb" + mode '0644' +end + +execute "Execute make install" do + command "make install" +end + diff --git a/scalarium_ganglia/templates/default/Makefile.erb b/scalarium_ganglia/templates/default/Makefile.erb new file mode 100644 index 0000000..e610470 --- /dev/null +++ b/scalarium_ganglia/templates/default/Makefile.erb @@ -0,0 +1,65 @@ +# Location where gweb should be installed to +DESTDIR = <%= node[:ganglia][:gweb2][:destdir] %> + +APACHE_USER = <%= node[:ganglia][:gweb2][:apache_user] %> + +# Gweb version +GWEB_MAJOR_VERSION = <%= node[:ganglia][:gweb2][:major_version] %> +GWEB_MINOR_VERSION = <%= node[:ganglia][:gweb2][:minor_version] %> +GWEB_MICRO_VERSION = <%= node[:ganglia][:gweb2][:micro_version] %> + +# When set to "yes", GWEB_VERSION will include SVN revision +SNAPSHOT = <%= node[:ganglia][:gweb2][:svn] %> + +# Gweb statedir (where RRD files, Dwoo templates are stored) +GWEB_STATEDIR = /var/lib +GANGLIA_STATEDIR = $(GWEB_STATEDIR)/ganglia + +# Dwoo compile directory +GWEB_DWOO = $(GANGLIA_STATEDIR)/dwoo + +ifeq ($(SNAPSHOT),yes) + GWEB_NANO_VERSION = $(shell svnversion .) + GWEB_VERSION = ${GWEB_MAJOR_VERSION}.${GWEB_MINOR_VERSION}.${GWEB_MICRO_VERSION}.${GWEB_NANO_VERSION} +else + GWEB_VERSION = $(GWEB_MAJOR_VERSION).$(GWEB_MINOR_VERSION).$(GWEB_MICRO_VERSION) +endif + +DIST_DIR = gweb-$(GWEB_VERSION) +DIST_TARBALL = $(DIST_DIR).tar.gz + +TARGETS = conf_default.php gweb.spec version.php + +default: $(TARGETS) + +clean: + rm -rf $(TARGETS) $(DIST_DIR) $(DIST_TARBALL) + +conf_default.php: conf_default.php.in + sed -e "s|@varstatedir@|$(GWEB_STATEDIR)|" conf_default.php.in > conf_default.php + +gweb.spec: gweb.spec.in + sed -e s/@GWEB_VERSION@/$(GWEB_VERSION)/ -e "s|@varstatedir@|$(GWEB_STATEDIR)|" gweb.spec.in > gweb.spec + +version.php: version.php.in + sed -e s/@GWEB_VERSION@/$(GWEB_VERSION)/ version.php.in > version.php + +dist-dir: default + rsync --exclude "$(DIST_DIR)" --exclude ".svn" --exclude ".git*" --exclude "*~" -a . $(DIST_DIR) && \ + cp -a $(TARGETS) $(DIST_DIR) + +install: dist-dir + mkdir -p $(DESTDIR) $(GWEB_DWOO) && \ + rsync -a $(DIST_DIR)/conf/ $(GANGLIA_STATEDIR)/conf && \ + cp -a $(DIST_DIR)/* $(DESTDIR) && \ + chown -R $(APACHE_USER):$(APACHE_USER) $(GWEB_DWOO) $(GANGLIA_STATEDIR)/conf + +dist-gzip: dist-dir + if [ -f $(DIST_TARBALL) ]; then \ + rm -rf $(DIST_TARBALL) ;\ + fi ;\ + tar -czf $(DIST_TARBALL) $(DIST_DIR)/* + +uninstall: + rm -rf $(DESTDIR) $(GWEB_DWOO) $(GANGLIA_STATEDIR)/conf + diff --git a/scalarium_ganglia/templates/default/ganglia.index.html.erb b/scalarium_ganglia/templates/default/ganglia.index.html.erb index 52d21b8..cfc4085 100644 --- a/scalarium_ganglia/templates/default/ganglia.index.html.erb +++ b/scalarium_ganglia/templates/default/ganglia.index.html.erb @@ -9,9 +9,12 @@

Monitoring

-

- Proceed to Monitoring + Proceed to the new Monitoring UI +

+

+ Proceed to the old Monitoring UI

+ From cb9bd8cccaf93a312028093dd5c93205b7b65944 Mon Sep 17 00:00:00 2001 From: Thomas Metschke Date: Wed, 29 Jun 2011 17:43:41 +0200 Subject: [PATCH 059/334] add '/' --- scalarium_ganglia/recipes/server-gweb2.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/scalarium_ganglia/recipes/server-gweb2.rb b/scalarium_ganglia/recipes/server-gweb2.rb index 33f7865..b0ca5c7 100644 --- a/scalarium_ganglia/recipes/server-gweb2.rb +++ b/scalarium_ganglia/recipes/server-gweb2.rb @@ -1,5 +1,5 @@ execute "Get newest version of ganglia web interface from github" do - command "cd tmp && git clone git://github.com/vvuksan/ganglia-misc.git" + command "cd /tmp && git clone git://github.com/vvuksan/ganglia-misc.git" end template "/tmp/ganglia-misc/ganglia-web/Makefile" do From 88efbfd36ed63e217907e3e75872eddc70447e66 Mon Sep 17 00:00:00 2001 From: Thomas Metschke Date: Wed, 29 Jun 2011 17:45:46 +0200 Subject: [PATCH 060/334] provide complete path --- scalarium_ganglia/recipes/server-gweb2.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/scalarium_ganglia/recipes/server-gweb2.rb b/scalarium_ganglia/recipes/server-gweb2.rb index b0ca5c7..633e5eb 100644 --- a/scalarium_ganglia/recipes/server-gweb2.rb +++ b/scalarium_ganglia/recipes/server-gweb2.rb @@ -8,6 +8,6 @@ end execute "Execute make install" do - command "make install" + command "/tmp/ganglia-misc/ganglia-web/make install" end From a826f352da19c27097ddfb25bc9c71a65dffaace Mon Sep 17 00:00:00 2001 From: Thomas Metschke Date: Wed, 29 Jun 2011 17:48:29 +0200 Subject: [PATCH 061/334] divide in two steps --- scalarium_ganglia/recipes/server-gweb2.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/scalarium_ganglia/recipes/server-gweb2.rb b/scalarium_ganglia/recipes/server-gweb2.rb index 633e5eb..a68eafb 100644 --- a/scalarium_ganglia/recipes/server-gweb2.rb +++ b/scalarium_ganglia/recipes/server-gweb2.rb @@ -8,6 +8,6 @@ end execute "Execute make install" do - command "/tmp/ganglia-misc/ganglia-web/make install" + command "cd /tmp/ganglia-misc/ganglia-web/ && make install" end From e166dd9a0bad95aba1b5b16c3439bde2e7f9f25d Mon Sep 17 00:00:00 2001 From: Thomas Metschke Date: Wed, 29 Jun 2011 17:58:14 +0200 Subject: [PATCH 062/334] include gweb2 in apache conf --- .../templates/default/apache.conf.erb | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-) diff --git a/scalarium_ganglia/templates/default/apache.conf.erb b/scalarium_ganglia/templates/default/apache.conf.erb index 45011cb..55e5426 100644 --- a/scalarium_ganglia/templates/default/apache.conf.erb +++ b/scalarium_ganglia/templates/default/apache.conf.erb @@ -5,8 +5,22 @@ Alias <%= node[:ganglia][:web][:url] %> /usr/share/ganglia-webfrontend AuthType Basic AuthName "Password Required" require valid-user - + PassengerEnabled off + +Alias <%= node[:ganglia][:gweb2][:url] %> <%= node[:ganglia][:gweb2][:destdir] %> + +' > + AuthUserFile /etc/ganglia-webfrontend/htaccess + AuthType Basic + AuthName "Password Required" + require valid-user + + + PassengerEnabled off + + + From e5dc469b274a26018234b44760a743103c11ff8c Mon Sep 17 00:00:00 2001 From: Thomas Metschke Date: Fri, 1 Jul 2011 12:25:48 +0200 Subject: [PATCH 063/334] add reports to new UI --- scalarium_ganglia/recipes/server-gweb2.rb | 40 +++++++++++++++++++++++ 1 file changed, 40 insertions(+) diff --git a/scalarium_ganglia/recipes/server-gweb2.rb b/scalarium_ganglia/recipes/server-gweb2.rb index a68eafb..05060ea 100644 --- a/scalarium_ganglia/recipes/server-gweb2.rb +++ b/scalarium_ganglia/recipes/server-gweb2.rb @@ -11,3 +11,43 @@ command "cd /tmp/ganglia-misc/ganglia-web/ && make install" end +remote_file "/var/www/ganglia2/graph.d/mysql_query_report.php" do + source "mysql_query_report.php" + mode "0644" +end + +remote_file "/var/www/ganglia2/graph.d/apache_report.php" do + source "apache_report.php" + mode "0644" +end + +remote_file "/var/www/ganglia2/graph.d/apache_worker_report.php" do + source "apache_worker_report.php" + mode "0644" +end + +remote_file "/var/www/ganglia2/graph.d/passenger_memory_stats_report.php" do + source "passenger_memory_stats_report.php" + mode "0644" +end + +remote_file "/var/www/ganglia2/graph.d/passenger_status_report.php" do + source "passenger_status_report.php" + mode "0644" +end + +remote_file "/var/www/ganglia2/graph.d/haproxy_requests_report.php" do + source "haproxy_requests_report.php" + mode "0644" +end + +remote_file "/var/www/ganglia2/graph.d/nginx_status_report.php" do + source "nginx_status_report.php" + mode "0644" +end + +remote_file "/var/www/ganglia2/graph.d/apache_response_time_report.php" do + source "apache_response_time_report.php" + mode "0644" +end + From 0ca25ef72bac4fa7b1bbbe653a2b918918569838 Mon Sep 17 00:00:00 2001 From: Thomas Metschke Date: Fri, 1 Jul 2011 12:49:45 +0200 Subject: [PATCH 064/334] overlay config --- scalarium_ganglia/recipes/server-gweb2.rb | 5 ++++ .../templates/default/conf-gweb2.php.erb | 23 +++++++++++++++++++ 2 files changed, 28 insertions(+) create mode 100644 scalarium_ganglia/templates/default/conf-gweb2.php.erb diff --git a/scalarium_ganglia/recipes/server-gweb2.rb b/scalarium_ganglia/recipes/server-gweb2.rb index 05060ea..c73c247 100644 --- a/scalarium_ganglia/recipes/server-gweb2.rb +++ b/scalarium_ganglia/recipes/server-gweb2.rb @@ -51,3 +51,8 @@ mode "0644" end +template "/var/www/ganglia2/conf.php" do + source "conf-gweb2.php.erb" + mode "0644" +end + diff --git a/scalarium_ganglia/templates/default/conf-gweb2.php.erb b/scalarium_ganglia/templates/default/conf-gweb2.php.erb new file mode 100644 index 0000000..a01db74 --- /dev/null +++ b/scalarium_ganglia/templates/default/conf-gweb2.php.erb @@ -0,0 +1,23 @@ + + array_push($optional_graphs, 'haproxy_requests'); +<% end -%> +<% if node[:scalarium][:roles].has_key?("db-master") && !node[:scalarium][:roles]['db-master']['instances'].empty? -%> + array_push($optional_graphs, 'mysql_query'); +<% end -%> +<% if (node[:scalarium][:roles].has_key?("rails-app") && !node[:scalarium][:roles]['rails-app']['instances'].empty? ) || (node[:scalarium][:roles].has_key?("php-app") && !node[:scalarium][:roles]['php-app']['instances'].empty? ) -%> + array_push($optional_graphs, 'apache', 'apache_worker', 'apache_response_time'); +<% end -%> +<% if node[:scalarium][:roles].has_key?("rails-app") && !node[:scalarium][:roles]['rails-app']['instances'].empty? -%> + array_push($optional_graphs, 'passenger_memory_stats', 'passenger_status'); +<% end -%> +<% if node[:scalarium][:roles].has_key?("web") && !node[:scalarium][:roles]['web']['instances'].empty? -%> + array_push($optional_graphs, 'nginx_status'); +<% end -%> +?> + From d926a9dc4b875325416587379c41800546ce437a Mon Sep 17 00:00:00 2001 From: Thomas Metschke Date: Fri, 1 Jul 2011 13:19:54 +0200 Subject: [PATCH 065/334] fix syntax --- scalarium_ganglia/templates/default/conf-gweb2.php.erb | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/scalarium_ganglia/templates/default/conf-gweb2.php.erb b/scalarium_ganglia/templates/default/conf-gweb2.php.erb index a01db74..4520609 100644 --- a/scalarium_ganglia/templates/default/conf-gweb2.php.erb +++ b/scalarium_ganglia/templates/default/conf-gweb2.php.erb @@ -1,7 +1,7 @@ From 07dc1b0ec96476476dd5cdb4b806db060efe0aef Mon Sep 17 00:00:00 2001 From: Thomas Metschke Date: Fri, 1 Jul 2011 09:29:29 -0700 Subject: [PATCH 066/334] if file has new lines at the end it will break the generation of png images by adding this newline in them --- scalarium_ganglia/templates/default/conf-gweb2.php.erb | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/scalarium_ganglia/templates/default/conf-gweb2.php.erb b/scalarium_ganglia/templates/default/conf-gweb2.php.erb index 4520609..e500810 100644 --- a/scalarium_ganglia/templates/default/conf-gweb2.php.erb +++ b/scalarium_ganglia/templates/default/conf-gweb2.php.erb @@ -19,5 +19,4 @@ $optional_graphs = array(); <% if node[:scalarium][:roles].has_key?("web") && !node[:scalarium][:roles]['web']['instances'].empty? -%> array_push($optional_graphs, 'nginx_status'); <% end -%> -?> - +?> \ No newline at end of file From 585b1eca4775c576dd4e12b257702b4c79568564 Mon Sep 17 00:00:00 2001 From: Jonathan Weiss Date: Fri, 1 Jul 2011 20:26:00 +0200 Subject: [PATCH 067/334] fix generation of scalarium.php when there are multiple instances in a role --- php/templates/default/scalarium.php.erb | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/php/templates/default/scalarium.php.erb b/php/templates/default/scalarium.php.erb index 03cf1bd..1956fe0 100644 --- a/php/templates/default/scalarium.php.erb +++ b/php/templates/default/scalarium.php.erb @@ -30,7 +30,7 @@ class Scalarium { public function __construct() { $this->db = new ScalariumDb(); $this->memcached = new ScalariumMemcached(); - $this->cluster_map = array(<%= @roles.map {|role_short_name, role| "'#{role_short_name}' => array(#{role['instances'].values.map {|instance| "'#{instance['private_ip']}'"}})"}.join(', ') %>); + $this->cluster_map = array(<%= @roles.map {|role_short_name, role| "'#{role_short_name}' => array(#{role['instances'].values.map {|instance| "'#{instance['private_ip']}'"}.join(', ') })"}.join(', ') %>); } public function roles() { @@ -41,4 +41,4 @@ class Scalarium { return $this->cluster_map[$role]; } } -?> +?> \ No newline at end of file From a2d1eea3989a374430345ad742bc2ed1f91904b4 Mon Sep 17 00:00:00 2001 From: Jonathan Weiss Date: Fri, 8 Jul 2011 21:54:14 +0200 Subject: [PATCH 068/334] handle translation of device names on KVM --- ebs/attributes/default.rb | 23 ++++++++++++++++++++++- ebs/libraries/block_device.rb | 17 ++++++++++++++++- ebs/recipes/raids.rb | 3 ++- 3 files changed, 40 insertions(+), 3 deletions(-) diff --git a/ebs/attributes/default.rb b/ebs/attributes/default.rb index 85936ac..864f10f 100644 --- a/ebs/attributes/default.rb +++ b/ebs/attributes/default.rb @@ -1,4 +1,25 @@ default[:ebs][:devices] = {} default[:ebs][:raids] = {} default[:ebs][:mdadm_chunk_size] = '256' -default[:ebs][:md_read_ahead] = '65536' # 64k \ No newline at end of file +default[:ebs][:md_read_ahead] = '65536' # 64k + +if BlockDevice.on_kvm? + Chef::Log.info("Running on QEMU/KVM: Need to translate device names as KVM allocates them regardless of the given device ID") + ebs_devices = {} + + new_device_names = BlockDevice.translate_device_names(ebs[:devices].keys) + new_device_names.each do |names| + new_name = names[1] + old_name = names[0] + ebs_devices[new_name] = ebs[:devices][old_name] + end + set[:ebs][:devices] = ebs_devices + + skip_chars = new_device_names.size + ebs[:raids].each do |raid_device, config| + new_raid_devices = BlockDevice.translate_device_names(config[:disks], skip_chars).map{|names| names[1]} + set[:ebs][:raids][raid_device][:disks] = new_raid_devices + skip_chars = new_raid_devices.size + end + +end diff --git a/ebs/libraries/block_device.rb b/ebs/libraries/block_device.rb index 2ccf092..c218d6f 100644 --- a/ebs/libraries/block_device.rb +++ b/ebs/libraries/block_device.rb @@ -137,4 +137,19 @@ def self.exec_command(command) false end end -end \ No newline at end of file + + def self.translate_device_names(devices, skip = 0) + if on_kvm? && devices.size > 0 + Chef::Log.info("Running on QEMU/KVM: Starting at /dev/sdb skipping #{skip}") + new_devices = ('b'..'z').to_a[0 + skip, devices.size].each_with_index.map {|char, index| [ devices[index], "/dev/sd#{char}" ] } + Chef::Log.info("Running on QEMU/KVM: Translated EBS devices #{devices.inspect} to #{new_devices.map{|d| d[1]}.inspect}") + new_devices + else + devices + end + end + + def self.on_kvm? + `cat /proc/cpuinfo`.match(/QEMU/) + end +end diff --git a/ebs/recipes/raids.rb b/ebs/recipes/raids.rb index 78ccf77..c54f014 100644 --- a/ebs/recipes/raids.rb +++ b/ebs/recipes/raids.rb @@ -3,6 +3,7 @@ execute "Load device mapper kernel module" do command "modprobe dm-mod" + ignore_failure true end node[:ebs][:raids].each do |raid_device, options| @@ -76,4 +77,4 @@ owner 'root' group 'root' end -end \ No newline at end of file +end From 387d869ba3163b1ba43e3169738b1a66e77ce46f Mon Sep 17 00:00:00 2001 From: Jonathan Weiss Date: Sat, 9 Jul 2011 11:22:42 +0200 Subject: [PATCH 069/334] increase default global HAProxy maxcon and per backend maxcon --- haproxy/attributes/default.rb | 6 +++--- haproxy/templates/default/haproxy.cfg.erb | 18 +++++++++--------- 2 files changed, 12 insertions(+), 12 deletions(-) diff --git a/haproxy/attributes/default.rb b/haproxy/attributes/default.rb index 76b0c92..823ec0f 100644 --- a/haproxy/attributes/default.rb +++ b/haproxy/attributes/default.rb @@ -9,8 +9,8 @@ default[:haproxy][:queue_timeout] = '120s' default[:haproxy][:connect_timeout] = '10s' default[:haproxy][:http_request_timeout] = '30s' -default[:haproxy][:global_max_connections] = '10000' -default[:haproxy][:default_max_connections] = '9600' +default[:haproxy][:global_max_connections] = '80000' +default[:haproxy][:default_max_connections] = '80000' default[:haproxy][:retries] = '3' def random_haproxy_pw @@ -26,4 +26,4 @@ def random_haproxy_pw end default[:haproxy][:stats_password] = random_haproxy_pw -default[:haproxy][:enable_stats] = false \ No newline at end of file +default[:haproxy][:enable_stats] = false diff --git a/haproxy/templates/default/haproxy.cfg.erb b/haproxy/templates/default/haproxy.cfg.erb index 77fc98d..5a5ea15 100644 --- a/haproxy/templates/default/haproxy.cfg.erb +++ b/haproxy/templates/default/haproxy.cfg.erb @@ -47,7 +47,7 @@ backend rails_app_servers option forwardfor option httpchk <%= node[:haproxy][:health_check_method] %> <%= node[:haproxy][:health_check_url] %> <% node[:haproxy][:rails_backends].each do |backend| -%> - server <%= backend['name'] %> <%= backend['ip'] %>:80 weight <%= backend['backends'] || 10 %> maxconn <%= backend['backends'] * 1 %> check inter <%= node[:haproxy][:check_interval] %> + server <%= backend['name'] %> <%= backend['ip'] %>:80 weight <%= backend['backends'] || 10 %> maxconn <%= backend['backends'] * 3 %> check inter <%= node[:haproxy][:check_interval] %> <% end -%> <% end -%> @@ -58,7 +58,7 @@ backend rails_app_servers_ssl option redispatch option ssl-hello-chk <% node[:haproxy][:rails_backends].each do |backend| -%> - server <%= backend['name'] %> <%= backend['ip'] %>:443 weight <%= backend['backends'] || 10 %> maxconn <%= backend['backends'] * 1 %> check inter <%= node[:haproxy][:check_interval] %> + server <%= backend['name'] %> <%= backend['ip'] %>:443 weight <%= backend['backends'] || 10 %> maxconn <%= backend['backends'] * 3 %> check inter <%= node[:haproxy][:check_interval] %> <% end -%> <% end -%> @@ -70,7 +70,7 @@ backend php_app_servers option forwardfor option httpchk <%= node[:haproxy][:health_check_method] %> <%= node[:haproxy][:health_check_url] %> <% node[:haproxy][:php_backends].each do |backend| -%> - server <%= backend['name'] %> <%= backend['ip'] %>:80 weight <%= backend['backends'] || 10 %> maxconn <%= backend['backends'] * 2 %> check inter <%= node[:haproxy][:check_interval] %> + server <%= backend['name'] %> <%= backend['ip'] %>:80 weight <%= backend['backends'] || 10 %> maxconn <%= backend['backends'] * 6 %> check inter <%= node[:haproxy][:check_interval] %> <% end -%> <% end -%> @@ -81,7 +81,7 @@ backend php_app_servers_ssl option redispatch option ssl-hello-chk <% node[:haproxy][:php_backends].each do |backend| -%> - server <%= backend['name'] %> <%= backend['ip'] %>:443 weight <%= backend['backends'] || 10 %> maxconn <%= backend['backends'] * 2 %> check inter <%= node[:haproxy][:check_interval] %> + server <%= backend['name'] %> <%= backend['ip'] %>:443 weight <%= backend['backends'] || 10 %> maxconn <%= backend['backends'] * 6 %> check inter <%= node[:haproxy][:check_interval] %> <% end -%> <% end -%> @@ -93,7 +93,7 @@ backend nodejs_app_servers option forwardfor option httpchk <%= node[:haproxy][:health_check_method] %> <%= node[:haproxy][:health_check_url] %> <% node[:haproxy][:nodejs_backends].each do |backend| -%> - server <%= backend['name'] %> <%= backend['ip'] %>:80 weight <%= backend['backends'] || 10 %> maxconn <%= backend['backends'] * 2 %> check inter <%= node[:haproxy][:check_interval] %> + server <%= backend['name'] %> <%= backend['ip'] %>:80 weight <%= backend['backends'] || 10 %> maxconn <%= backend['backends'] * 6 %> check inter <%= node[:haproxy][:check_interval] %> <% end -%> <% end -%> @@ -104,7 +104,7 @@ backend nodejs_app_servers_ssl option redispatch option ssl-hello-chk <% node[:haproxy][:nodejs_backends].each do |backend| -%> - server <%= backend['name'] %> <%= backend['ip'] %>:443 weight <%= backend['backends'] || 10 %> maxconn <%= backend['backends'] * 2 %> check inter <%= node[:haproxy][:check_interval] %> + server <%= backend['name'] %> <%= backend['ip'] %>:443 weight <%= backend['backends'] || 10 %> maxconn <%= backend['backends'] * 6 %> check inter <%= node[:haproxy][:check_interval] %> <% end -%> <% end -%> @@ -116,7 +116,7 @@ backend static_servers option forwardfor option httpchk GET <%= node[:haproxy][:health_check_url] %> # Nginx doesn't understand OPTIONS <% node[:haproxy][:static_backends].each do |backend| -%> - server <%= backend['name'] %> <%= backend['ip'] %>:80 weight <%= backend['backends'] || 10 %> maxconn <%= backend['backends'] * 3 %> check inter <%= node[:haproxy][:check_interval] %> + server <%= backend['name'] %> <%= backend['ip'] %>:80 weight <%= backend['backends'] || 10 %> maxconn <%= backend['backends'] * 9 %> check inter <%= node[:haproxy][:check_interval] %> <% end -%> <% end -%> @@ -127,7 +127,7 @@ backend static_servers_ssl option redispatch option ssl-hello-chk <% node[:haproxy][:static_backends].each do |backend| -%> - server <%= backend['name'] %> <%= backend['ip'] %>:443 weight <%= backend['backends'] || 10 %> maxconn <%= backend['backends'] * 3 %> check inter <%= node[:haproxy][:check_interval] %> + server <%= backend['name'] %> <%= backend['ip'] %>:443 weight <%= backend['backends'] || 10 %> maxconn <%= backend['backends'] * 9 %> check inter <%= node[:haproxy][:check_interval] %> <% end -%> <% end -%> @@ -288,4 +288,4 @@ frontend https-in default_backend static_servers_ssl <% end -%> -<% end -%> \ No newline at end of file +<% end -%> From 6027d8979ce75a78f90b89a0588a9d0d07637eb5 Mon Sep 17 00:00:00 2001 From: Jonathan Weiss Date: Sat, 9 Jul 2011 11:27:55 +0200 Subject: [PATCH 070/334] remove old syntax --- haproxy/attributes/default.rb | 1 - 1 file changed, 1 deletion(-) diff --git a/haproxy/attributes/default.rb b/haproxy/attributes/default.rb index 823ec0f..306eb08 100644 --- a/haproxy/attributes/default.rb +++ b/haproxy/attributes/default.rb @@ -1,4 +1,3 @@ -default[:haproxy] = {} default[:haproxy][:stats_url] = '/haproxy?stats' default[:haproxy][:stats_user] = 'scalarium' default[:haproxy][:health_check_url] = '/' From 0ef5666ac490acbf28ab006cab2fe5f5c66514e8 Mon Sep 17 00:00:00 2001 From: Jonathan Weiss Date: Sun, 10 Jul 2011 23:11:06 +0200 Subject: [PATCH 071/334] make EBS mount of MySQL data dir independent of running on EC2 --- mysql/recipes/ebs.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mysql/recipes/ebs.rb b/mysql/recipes/ebs.rb index 3e261c1..3d570ee 100644 --- a/mysql/recipes/ebs.rb +++ b/mysql/recipes/ebs.rb @@ -1,4 +1,4 @@ -if (node[:ec2] && ! FileTest.directory?(node[:mysql][:ec2_path])) +if (node[:mysql][:ec2_path] && ! FileTest.directory?(node[:mysql][:ec2_path])) Chef::Log.info("Setting up the MySQL bind-mount to EBS") execute "Copy MySQL data to EBS for first init" do From 35b9ccfdd7226e595d61fc002ae4ca42b7fe9226 Mon Sep 17 00:00:00 2001 From: Jonathan Weiss Date: Mon, 11 Jul 2011 20:54:27 +0200 Subject: [PATCH 072/334] make nodejs app restart command configurable --- deploy/attributes/deploy.rb | 3 +++ deploy/definitions/scalarium_nodejs.rb | 2 +- deploy/recipes/nodejs-restart.rb | 2 +- deploy/recipes/nodejs.rb | 2 +- 4 files changed, 6 insertions(+), 3 deletions(-) diff --git a/deploy/attributes/deploy.rb b/deploy/attributes/deploy.rb index d7eb681..27597aa 100644 --- a/deploy/attributes/deploy.rb +++ b/deploy/attributes/deploy.rb @@ -46,6 +46,9 @@ "HOME" => home} default[:deploy][application][:ssl_support] = false default[:deploy][application][:auto_npm_install_on_deploy] = true + + # nodejs + default[:deploy][application][:nodejs][:restart_command] = "monit restart node_web_app_#{application}" end default[:logrotate][:rotate] = 30 diff --git a/deploy/definitions/scalarium_nodejs.rb b/deploy/definitions/scalarium_nodejs.rb index 114b102..7d1d33e 100644 --- a/deploy/definitions/scalarium_nodejs.rb +++ b/deploy/definitions/scalarium_nodejs.rb @@ -32,6 +32,6 @@ :application_name => application, :monitored_script => "#{deploy[:deploy_to]}/current/server.js" ) - notifies :restart, resources(:service => 'monit') + notifies :restart, resources(:service => 'monit'), :immediately end end diff --git a/deploy/recipes/nodejs-restart.rb b/deploy/recipes/nodejs-restart.rb index 7af6727..7c43d57 100644 --- a/deploy/recipes/nodejs-restart.rb +++ b/deploy/recipes/nodejs-restart.rb @@ -7,6 +7,6 @@ end execute "restart node.js application #{application} via monit" do - command "monit restart node_web_app_#{application}" + command node[:deploy][application][:nodejs][:restart_command] end end diff --git a/deploy/recipes/nodejs.rb b/deploy/recipes/nodejs.rb index 99a8a7e..1259289 100644 --- a/deploy/recipes/nodejs.rb +++ b/deploy/recipes/nodejs.rb @@ -21,6 +21,6 @@ end execute "restart node.js application #{application} via monit" do - command "monit restart node_web_app_#{application}" + command node[:deploy][application][:nodejs][:restart_command] end end From 6dce8b0a75b6cba7eab5eac30b5cce8f3acd73e4 Mon Sep 17 00:00:00 2001 From: Jonathan Weiss Date: Thu, 14 Jul 2011 17:54:15 +0200 Subject: [PATCH 073/334] ensure memcache config is present --- deploy/definitions/scalarium_rails.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/deploy/definitions/scalarium_rails.rb b/deploy/definitions/scalarium_rails.rb index 52ad321..2107cc9 100644 --- a/deploy/definitions/scalarium_rails.rb +++ b/deploy/definitions/scalarium_rails.rb @@ -11,7 +11,7 @@ mode "0660" owner deploy[:user] group deploy[:group] - variables(:memcached => deploy[:memcached], :environment => deploy[:rails_env]) + variables(:memcached => (deploy[:memcached] || {}), :environment => deploy[:rails_env]) end execute "symlinking subdir mount if necessary" do From 87833c3a7c93f3535aaaae141a3c066c83d76ab0 Mon Sep 17 00:00:00 2001 From: Jonathan Weiss Date: Fri, 15 Jul 2011 16:40:02 +0200 Subject: [PATCH 074/334] remove bad default --- scalarium_nodejs/attributes/scalarium_nodejs.rb | 1 - 1 file changed, 1 deletion(-) diff --git a/scalarium_nodejs/attributes/scalarium_nodejs.rb b/scalarium_nodejs/attributes/scalarium_nodejs.rb index e35b019..96fcb32 100644 --- a/scalarium_nodejs/attributes/scalarium_nodejs.rb +++ b/scalarium_nodejs/attributes/scalarium_nodejs.rb @@ -1,4 +1,3 @@ -default[:scalarium_nodejs] = {} default[:scalarium_nodejs][:version] = '0.4.7' default[:scalarium_nodejs][:npm_version] = '1.0.13' default[:scalarium_nodejs][:pkgrelease] = '1' From 2ec7accd019283fd1fd17c80582e48dfc5be5e1e Mon Sep 17 00:00:00 2001 From: Jonathan Weiss Date: Fri, 15 Jul 2011 17:54:48 +0200 Subject: [PATCH 075/334] make node.js restart really configurable --- deploy/recipes/nodejs-restart.rb | 11 ++++++++--- deploy/recipes/nodejs.rb | 8 ++++++-- 2 files changed, 14 insertions(+), 5 deletions(-) diff --git a/deploy/recipes/nodejs-restart.rb b/deploy/recipes/nodejs-restart.rb index 7c43d57..122c84d 100644 --- a/deploy/recipes/nodejs-restart.rb +++ b/deploy/recipes/nodejs-restart.rb @@ -5,8 +5,13 @@ Chef::Log.debug("Skipping deploy::nodejs-restart for application #{application} as it is not a node.js app") next end - - execute "restart node.js application #{application} via monit" do - command node[:deploy][application][:nodejs][:restart_command] + + ruby_block "restart node.js application #{application}" do + block do + Chef::Log.info("restart node.js via: #{node[:deploy][application][:nodejs][:restart_command]}") + Chef::Log.info(`#{node[:deploy][application][:nodejs][:restart_command]}`) + $? == 0 + end end + end diff --git a/deploy/recipes/nodejs.rb b/deploy/recipes/nodejs.rb index 1259289..c60f796 100644 --- a/deploy/recipes/nodejs.rb +++ b/deploy/recipes/nodejs.rb @@ -20,7 +20,11 @@ app application end - execute "restart node.js application #{application} via monit" do - command node[:deploy][application][:nodejs][:restart_command] + ruby_block "restart node.js application #{application}" do + block do + Chef::Log.info("restart node.js via: #{node[:deploy][application][:nodejs][:restart_command]}") + Chef::Log.info(`#{node[:deploy][application][:nodejs][:restart_command]}`) + $? == 0 + end end end From fa567086c698a06ad4d7e4fee78cb166dc036449 Mon Sep 17 00:00:00 2001 From: Jonathan Weiss Date: Mon, 18 Jul 2011 16:32:37 +0200 Subject: [PATCH 076/334] add external IP of instances in /etc/hosts as $HOSTNAME-ext so that lookups work in Eucalyptus environments where instances sometimes you the external IP to connect (depending on the security group) --- scalarium_cluster_state/templates/default/hosts.erb | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/scalarium_cluster_state/templates/default/hosts.erb b/scalarium_cluster_state/templates/default/hosts.erb index 87fb7bd..968e5df 100644 --- a/scalarium_cluster_state/templates/default/hosts.erb +++ b/scalarium_cluster_state/templates/default/hosts.erb @@ -8,10 +8,15 @@ ff02::1 ip6-allnodes ff02::2 ip6-allrouters ff02::3 ip6-allhosts 127.0.0.1 <%= node[:scalarium][:instance][:hostname] %>.localdomain <%= node[:scalarium][:instance][:hostname] %> localhost +<% seen = [] -%> <% node[:scalarium][:roles].each do |role_name, role_config| -%> <% role_config[:instances].each do |instance_name, instance_config| -%> -<% if instance_config[:private_ip] -%> +<% if !seen.include?(instance_name) && instance_config[:private_ip] -%> <%= Resolv.getaddress(instance_config[:private_ip]) %> <%= instance_name %> +<% if instance_config[:ip] %> +<%= Resolv.getaddress(instance_config[:ip]) %> <%= instance_name %>-ext +<% end %> +<% seen << instance_name %> <% end -%> <% end -%> <% end -%> From f18867770ac812e2aeb07e1b7df42109c6a61073 Mon Sep 17 00:00:00 2001 From: Jonathan Weiss Date: Tue, 19 Jul 2011 12:29:24 +0200 Subject: [PATCH 077/334] When we detect a Gemfile run migrations with bundle exec --- deploy/attributes/deploy.rb | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/deploy/attributes/deploy.rb b/deploy/attributes/deploy.rb index 27597aa..f19a7fb 100644 --- a/deploy/attributes/deploy.rb +++ b/deploy/attributes/deploy.rb @@ -19,7 +19,11 @@ default[:deploy][application][:rake] = "rake" end default[:deploy][application][:migrate] = false - default[:deploy][application][:migrate_command] = "#{default[:deploy][application][:rake]} db:migrate" + if default[:deploy][application][:auto_bundle_on_deploy] + default[:deploy][application][:migrate_command] = "if [ -f Gemfile ]; then echo 'Scalarium: Gemfile found - running migration with bundle exec' && bundle exec #{default[:deploy][application][:rake]} db:migrate; else echo 'Scalarium: no Gemfile - running plain migrations' && #{default[:deploy][application][:rake]} db:migrate; fi" + else + default[:deploy][application][:migrate_command] = "#{default[:deploy][application][:rake]} db:migrate" + end default[:deploy][application][:rails_env] = 'production' default[:deploy][application][:action] = 'deploy' default[:deploy][application][:user] = 'deploy' From 1acf31898bf8d0be154b3e3e9722b27d7bb92d9f Mon Sep 17 00:00:00 2001 From: Jonathan Weiss Date: Tue, 19 Jul 2011 18:22:31 +0200 Subject: [PATCH 078/334] nicer attribute accessor --- deploy/attributes/deploy.rb | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/deploy/attributes/deploy.rb b/deploy/attributes/deploy.rb index f19a7fb..909eae4 100644 --- a/deploy/attributes/deploy.rb +++ b/deploy/attributes/deploy.rb @@ -19,10 +19,10 @@ default[:deploy][application][:rake] = "rake" end default[:deploy][application][:migrate] = false - if default[:deploy][application][:auto_bundle_on_deploy] - default[:deploy][application][:migrate_command] = "if [ -f Gemfile ]; then echo 'Scalarium: Gemfile found - running migration with bundle exec' && bundle exec #{default[:deploy][application][:rake]} db:migrate; else echo 'Scalarium: no Gemfile - running plain migrations' && #{default[:deploy][application][:rake]} db:migrate; fi" + if node[:deploy][application][:auto_bundle_on_deploy] + default[:deploy][application][:migrate_command] = "if [ -f Gemfile ]; then echo 'Scalarium: Gemfile found - running migration with bundle exec' && bundle exec #{node[:deploy][application][:rake]} db:migrate; else echo 'Scalarium: no Gemfile - running plain migrations' && #{node[:deploy][application][:rake]} db:migrate; fi" else - default[:deploy][application][:migrate_command] = "#{default[:deploy][application][:rake]} db:migrate" + default[:deploy][application][:migrate_command] = "#{node[:deploy][application][:rake]} db:migrate" end default[:deploy][application][:rails_env] = 'production' default[:deploy][application][:action] = 'deploy' From 156b6b590a3f5539d68438d1508faf52b3416c1f Mon Sep 17 00:00:00 2001 From: Jonathan Weiss Date: Thu, 21 Jul 2011 02:50:26 +0200 Subject: [PATCH 079/334] always update the SSH public key --- ssh_users/recipes/default.rb | 1 + 1 file changed, 1 insertion(+) diff --git a/ssh_users/recipes/default.rb b/ssh_users/recipes/default.rb index bdb8ad3..3493bea 100644 --- a/ssh_users/recipes/default.rb +++ b/ssh_users/recipes/default.rb @@ -15,6 +15,7 @@ else setup_user(ssh_user.update(:uid => id)) end + set_public_key(ssh_user) end template '/etc/sudoers' do From 01eb44f438893c063a04e80ca00ad2f0c07c8aa7 Mon Sep 17 00:00:00 2001 From: Jonathan Weiss Date: Thu, 21 Jul 2011 03:52:55 +0200 Subject: [PATCH 080/334] only update the SSH public key if the .ssh dir exists --- ssh_users/libraries/user.rb | 3 +++ 1 file changed, 3 insertions(+) diff --git a/ssh_users/libraries/user.rb b/ssh_users/libraries/user.rb index 73acf31..e98207c 100644 --- a/ssh_users/libraries/user.rb +++ b/ssh_users/libraries/user.rb @@ -56,6 +56,9 @@ def set_public_key(params) owner params[:name] group 'scalarium' variables(:public_key => params[:public_key]) + only_if do + File.exists?("/home/#{params[:name]}/.ssh") + end end end From 4f6946fc50d713c1a2c1e2a4478a697189f02cdd Mon Sep 17 00:00:00 2001 From: Daniel Spangenberg Date: Fri, 22 Jul 2011 17:04:41 +0200 Subject: [PATCH 081/334] Added nginx and Unicorn cookbooks Added ability to change rails stack --- dependencies/libraries/current_gem_version.rb | 25 ++++++ dependencies/recipes/default.rb | 7 -- deploy/attributes/deploy.rb | 11 +-- deploy/attributes/logrotate.rb | 2 + deploy/attributes/rails_stack.rb | 15 ++++ deploy/definitions/scalarium_deploy.rb | 25 ++++-- deploy/definitions/scalarium_deploy_dir.rb | 2 +- deploy/definitions/scalarium_rails.rb | 4 +- deploy/recipes/rails-restart.rb | 4 +- deploy/recipes/rails-rollback.rb | 2 +- deploy/recipes/rails-undeploy.rb | 66 +++++++++----- deploy/recipes/rails.rb | 1 - deploy/recipes/web.rb | 55 +----------- nginx/definitions/nginx_site.rb | 40 ++------- nginx/definitions/nginx_web_app.rb | 85 +++++++++++++++++++ nginx/metadata.rb | 1 - nginx/recipes/default.rb | 2 +- nginx/recipes/service.rb | 2 +- nginx/templates/default/site.erb | 2 +- nginx/templates/default/ssl.key.erb | 2 +- .../definitions/passenger_web_app.rb | 36 ++++++++ passenger_apache2/recipes/default.rb | 9 +- passenger_apache2/recipes/rails.rb | 44 ---------- rails/README.rdoc | 0 rails/metadata.rb | 2 +- rails/recipes/configure.rb | 14 ++- rails/recipes/default.rb | 4 +- unicorn/attributes/default.rb | 5 ++ unicorn/definitions/unicorn_web_app.rb | 17 ++++ unicorn/recipes/default.rb | 5 ++ unicorn/recipes/rails.rb | 33 +++++++ .../default/nginx_unicorn_web_app.erb | 68 +++++++++++++++ unicorn/templates/default/unicorn.conf.erb | 40 +++++++++ unicorn/templates/default/unicorn.service.erb | 73 ++++++++++++++++ 34 files changed, 501 insertions(+), 202 deletions(-) create mode 100644 dependencies/libraries/current_gem_version.rb create mode 100644 deploy/attributes/logrotate.rb create mode 100644 deploy/attributes/rails_stack.rb create mode 100644 nginx/definitions/nginx_web_app.rb delete mode 100644 rails/README.rdoc create mode 100644 unicorn/attributes/default.rb create mode 100644 unicorn/definitions/unicorn_web_app.rb create mode 100644 unicorn/recipes/default.rb create mode 100644 unicorn/recipes/rails.rb create mode 100644 unicorn/templates/default/nginx_unicorn_web_app.erb create mode 100644 unicorn/templates/default/unicorn.conf.erb create mode 100644 unicorn/templates/default/unicorn.service.erb diff --git a/dependencies/libraries/current_gem_version.rb b/dependencies/libraries/current_gem_version.rb new file mode 100644 index 0000000..73a75f4 --- /dev/null +++ b/dependencies/libraries/current_gem_version.rb @@ -0,0 +1,25 @@ +module Scalarium + module GemSupport + require 'rubygems/version' + + def ensure_only_gem_version(name, ensured_version) + versions = `#{node[:dependencies][:gem_binary]} list #{name}` + versions = versions.scan(/(\d[a-zA-Z0-9\.]*)/).flatten.compact + for version in versions + next if version == ensured_version + Chef::Log.info("Uninstalling version #{version} of Rubygem #{name}") + system("#{node[:dependencies][:gem_binary]} uninstall #{name} -v=#{version}") + end + if versions.include?(ensured_version) + Chef::Log.info("Skipping installation of version #{ensured_version} of Rubygem #{name}: already installed") + else + Chef::Log.info("Installing version #{ensured_version} of Rubygem #{name}") + system("#{node[:dependencies][:gem_binary]} install #{name} -v=#{ensured_version} --no-ri --no-rdoc") + end + end + end +end + +class Chef::Resource + include Scalarium::GemSupport +end \ No newline at end of file diff --git a/dependencies/recipes/default.rb b/dependencies/recipes/default.rb index 9583131..ad2d30d 100644 --- a/dependencies/recipes/default.rb +++ b/dependencies/recipes/default.rb @@ -23,13 +23,6 @@ retries 2 gem_binary node[:dependencies][:gem_binary] options "--no-ri --no-rdoc" - only_if do - raise "Could not find a candidate version to install for Gem: #{gem_name} - No such gem?" unless gem_available?(gem_name) - if new_gem_version_available?(gem_name) - Chef::Log.info("Installing new version of #{gem_name.inspect}") - true - end - end end end diff --git a/deploy/attributes/deploy.rb b/deploy/attributes/deploy.rb index 909eae4..04fa2e6 100644 --- a/deploy/attributes/deploy.rb +++ b/deploy/attributes/deploy.rb @@ -34,12 +34,8 @@ self[:passwd][self[:deploy][application][:user]][:dir] || "/home/#{self[:deploy][application][:user]}" default[:deploy][application][:home] = home - default[:deploy][application][:stack][:recipe] = "passenger_apache2::rails" - default[:deploy][application][:stack][:needs_reload] = true - default[:deploy][application][:stack][:service] = 'apache2' - default[:deploy][application][:sleep_before_restart] = 0 - default[:deploy][application][:restart_command] = "touch tmp/restart.txt" + default[:deploy][application][:sleep_before_restart] = 0 default[:deploy][application][:enable_submodules] = true default[:deploy][application][:shallow_clone] = true default[:deploy][application][:symlink_before_migrate] = {} @@ -53,7 +49,4 @@ # nodejs default[:deploy][application][:nodejs][:restart_command] = "monit restart node_web_app_#{application}" -end - -default[:logrotate][:rotate] = 30 -default[:logrotate][:dateformat] = false # set to '-%Y%m%d' to have date formatted logs +end \ No newline at end of file diff --git a/deploy/attributes/logrotate.rb b/deploy/attributes/logrotate.rb new file mode 100644 index 0000000..35be044 --- /dev/null +++ b/deploy/attributes/logrotate.rb @@ -0,0 +1,2 @@ +default[:logrotate][:rotate] = 30 +default[:logrotate][:dateformat] = false # set to '-%Y%m%d' to have date formatted logs \ No newline at end of file diff --git a/deploy/attributes/rails_stack.rb b/deploy/attributes/rails_stack.rb new file mode 100644 index 0000000..527fb28 --- /dev/null +++ b/deploy/attributes/rails_stack.rb @@ -0,0 +1,15 @@ +default[:scalarium][:rails_stack][:name] = "apache_passenger" +case node[:scalarium][:rails_stack][:name] +when "apache_passenger" + default[:scalarium][:rails_stack][:recipe] = "passenger_apache2::rails" + default[:scalarium][:rails_stack][:needs_reload] = true + default[:scalarium][:rails_stack][:service] = 'apache2' + default[:scalarium][:rails_stack][:restart_command] = 'touch tmp/restart.txt' +when "nginx_unicorn" + default[:scalarium][:rails_stack][:recipe] = "unicorn::rails" + default[:scalarium][:rails_stack][:needs_reload] = true + default[:scalarium][:rails_stack][:service] = 'unicorn' + default[:scalarium][:rails_stack][:restart_command] = '../../shared/scripts/unicorn restart' +else + raise "Unknown stack: #{node[:scalarium][:rails_stack][:name].inspect}" +end diff --git a/deploy/definitions/scalarium_deploy.rb b/deploy/definitions/scalarium_deploy.rb index d5b162c..e1553aa 100644 --- a/deploy/definitions/scalarium_deploy.rb +++ b/deploy/definitions/scalarium_deploy.rb @@ -57,7 +57,7 @@ environment deploy[:environment] symlink_before_migrate deploy[:symlink_before_migrate] action deploy[:action] - restart_command "sleep #{deploy[:sleep_before_restart]} && #{deploy[:restart_command]}" + restart_command "sleep #{deploy[:sleep_before_restart]} && #{node[:scalarium][:rails_stack][:restart_command]}" case deploy[:scm][:scm_type].to_s when 'git' scm_provider :git @@ -107,10 +107,25 @@ end end - if deploy[:application_type] == 'rails' && node[:scalarium][:instance][:roles].include?('rails-app') - passenger_web_app do - application application - deploy deploy + # Need to be uncommented in production + # XXX + if deploy[:application_type] == 'rails'# && node[:scalarium][:instance][:roles].include?('rails-app') + case node[:scalarium][:rails_stack][:name] + + when 'apache_passenger' + passenger_web_app do + application application + deploy deploy + end + + when 'nginx_unicorn' + unicorn_web_app do + application application + deploy deploy + end + + else + raise "Unsupport Rails stack" end end diff --git a/deploy/definitions/scalarium_deploy_dir.rb b/deploy/definitions/scalarium_deploy_dir.rb index e70d74c..4802c2a 100644 --- a/deploy/definitions/scalarium_deploy_dir.rb +++ b/deploy/definitions/scalarium_deploy_dir.rb @@ -1,7 +1,7 @@ define :scalarium_deploy_dir do # create shared/ directory structure - %w(log config system pids).each do |dir_name| + %w(log config system pids scripts sockets).each do |dir_name| directory "#{params[:path]}/shared/#{dir_name}" do group params[:group] owner params[:user] diff --git a/deploy/definitions/scalarium_rails.rb b/deploy/definitions/scalarium_rails.rb index 2107cc9..c5f8fa1 100644 --- a/deploy/definitions/scalarium_rails.rb +++ b/deploy/definitions/scalarium_rails.rb @@ -2,8 +2,8 @@ deploy = params[:deploy_data] application = params[:app] - include_recipe deploy[:stack][:recipe] - + include_recipe node[:scalarium][:rails_stack][:recipe] + # write out memcached.yml template "#{deploy[:deploy_to]}/shared/config/memcached.yml" do cookbook "rails" diff --git a/deploy/recipes/rails-restart.rb b/deploy/recipes/rails-restart.rb index 8a20870..6a7283d 100644 --- a/deploy/recipes/rails-restart.rb +++ b/deploy/recipes/rails-restart.rb @@ -11,9 +11,9 @@ next end - execute "restart Passenger" do + execute "restart Server" do cwd deploy[:current_path] - command "sleep #{deploy[:sleep_before_restart]} && #{deploy[:restart_command]}" + command "sleep #{deploy[:sleep_before_restart]} && /srv/www/#{application}/shared/scripts/unicorn stop" action :run only_if do diff --git a/deploy/recipes/rails-rollback.rb b/deploy/recipes/rails-rollback.rb index 9a70173..16aa94e 100644 --- a/deploy/recipes/rails-rollback.rb +++ b/deploy/recipes/rails-rollback.rb @@ -9,7 +9,7 @@ user deploy[:user] environment "RAILS_ENV" => deploy[:rails_env], "RUBYOPT" => "" action "rollback" - restart_command "sleep #{deploy[:sleep_before_restart]} && #{deploy[:restart_command]}" + restart_command "sleep #{deploy[:sleep_before_restart]} && #{node[:scalarium][:rails_stack][:restart_command]}" only_if do File.exists?(deploy[:current_path]) diff --git a/deploy/recipes/rails-undeploy.rb b/deploy/recipes/rails-undeploy.rb index 1bf1075..54a19b6 100644 --- a/deploy/recipes/rails-undeploy.rb +++ b/deploy/recipes/rails-undeploy.rb @@ -10,35 +10,63 @@ Chef::Log.debug("Skipping deploy::rails-undeploy application #{application} as it is not an Rails app") next end - - include_recipe "#{deploy[:stack][:service]}::service" if deploy[:stack][:service] - link "/etc/apache2/sites-enabled/#{application}.conf" do - action :delete - only_if do - File.exists?("/etc/apache2/sites-enabled/#{application}.conf") + case node[:scalarium][:rails_stack][:name] + + when 'apache_passenger' + include_recipe "#{node[:scalarium][:rails_stack][:service]}::service" if node[:scalarium][:rails_stack][:service] + + link "/etc/apache2/sites-enabled/#{application}.conf" do + action :delete + only_if do + File.exists?("/etc/apache2/sites-enabled/#{application}.conf") + end + + notifies :restart, resources(:service => node[:scalarium][:rails_stack][:service]) end + + file "/etc/apache2/sites-available/#{application}.conf" do + action :delete + only_if do + File.exists?("/etc/apache2/sites-available/#{application}.conf") + end + end + + notifies :restart, resources(:service => node[:scalarium][:rails_stack][:service]) + + when 'nginx_unicorn' + include_recipe "nginx::service" + + link "/etc/nginx/sites-enabled/#{application}" do + action :delete + only_if do + File.exists?("/etc/nginx/sites-enabled/#{application}") + end - if deploy[:stack][:needs_reload] - notifies :restart, resources(:service => deploy[:stack][:service]) + notifies :restart, resources(:service => "nginx") end - end - file "/etc/apache2/sites-available/#{application}.conf" do - action :delete - only_if do - File.exists?("/etc/apache2/sites-available/#{application}.conf") + file "/etc/nginx/sites-available/#{application}" do + action :delete + only_if do + File.exists?("/etc/nginx/sites-available/#{application}") + end + end + + execute "stop unicorn and restart nginx" do + command "sleep #{deploy[:sleep_before_restart]} && /srv/www/#{application}/shared/scripts/unicorn stop" + notifies :restart, resources(:service => "nginx") + action :run end + + else + raise "Unsupport Rails stack" end - + directory "#{deploy[:deploy_to]}" do recursive true action :delete - - if deploy[:stack][:needs_reload] - notifies :restart, resources(:service => deploy[:stack][:service]) - end - + only_if do File.exists?("#{deploy[:deploy_to]}") end diff --git a/deploy/recipes/rails.rb b/deploy/recipes/rails.rb index 8d540a7..f737788 100644 --- a/deploy/recipes/rails.rb +++ b/deploy/recipes/rails.rb @@ -28,4 +28,3 @@ app application end end - diff --git a/deploy/recipes/web.rb b/deploy/recipes/web.rb index 3022a41..2b0b4e8 100644 --- a/deploy/recipes/web.rb +++ b/deploy/recipes/web.rb @@ -17,58 +17,5 @@ deploy_data deploy end - template "#{node[:nginx][:dir]}/sites-available/#{application}" do - source "site.erb" - cookbook "nginx" - owner "root" - group "root" - mode 0644 - variables :application => deploy - - notifies :reload, resources(:service => "nginx") - end - - directory "#{node[:nginx][:dir]}/ssl" do - action :create - owner "root" - group "root" - mode 0600 - end - - template "#{node[:nginx][:dir]}/ssl/#{deploy[:domains].first}.crt" do - cookbook 'nginx' - mode '0600' - source "ssl.key.erb" - variables :key => deploy[:ssl_certificate] - only_if do - deploy[:ssl_support] - end - end - - template "#{node[:nginx][:dir]}/ssl/#{deploy[:domains].first}.key" do - cookbook 'nginx' - mode '0600' - source "ssl.key.erb" - variables :key => deploy[:ssl_certificate_key] - only_if do - deploy[:ssl_support] - end - end - - template "#{node[:nginx][:dir]}/ssl/#{deploy[:domains].first}.ca" do - cookbook 'nginx' - mode '0600' - source "ssl.key.erb" - variables :key => deploy[:ssl_certificate_ca] - only_if do - deploy[:ssl_support] && deploy[:ssl_certificate_ca] - end - end - - # delete default virtual host - file "#{node[:nginx][:dir]}/sites-enabled/default" do - action :delete - end - - nginx_site application + nginx_web_app application end diff --git a/nginx/definitions/nginx_site.rb b/nginx/definitions/nginx_site.rb index 687f0f1..60d22f8 100644 --- a/nginx/definitions/nginx_site.rb +++ b/nginx/definitions/nginx_site.rb @@ -1,37 +1,11 @@ -# -# Cookbook Name:: nginx -# Definition:: nginx_site -# Author:: AJ Christensen -# -# Copyright 2008, OpsCode, Inc. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -# +define :nginx_web_app, :template => "site.erb", :enable => true do + application = params[:application] + application_name = params[:name] -define :nginx_site, :enable => true do - include_recipe "nginx::service" + Chef::Log.debug("The \"nginx_site\" will be deprecated, please use nginx_web_app instead.") - if params[:enable] - execute "nxensite #{params[:name]}" do - command "/usr/sbin/nxensite #{params[:name]}" - notifies :reload, resources(:service => "nginx") - not_if do File.symlink?("#{node[:nginx][:dir]}/sites-enabled/#{params[:name]}") end - end - else - execute "nxdissite #{params[:name]}" do - command "/usr/sbin/nxdissite #{params[:name]}" - notifies :reload, resources(:service => "nginx") - only_if do File.symlink?("#{node[:nginx][:dir]}/sites-enabled/#{params[:name]}") end - end + nginx_web_app do + application application + application_name application_name end end diff --git a/nginx/definitions/nginx_web_app.rb b/nginx/definitions/nginx_web_app.rb new file mode 100644 index 0000000..214e9a6 --- /dev/null +++ b/nginx/definitions/nginx_web_app.rb @@ -0,0 +1,85 @@ +define :nginx_web_app, :template => "site.erb", :enable => true do + include_recipe "nginx::service" + + application = params[:application] + application_name = params[:name] + + template "#{node[:nginx][:dir]}/sites-available/#{application_name}" do + Chef::Log.debug("Generating Nginx site template for #{application_name.inspect}") + source params[:template] + owner "root" + group "root" + mode 0644 + if params[:cookbook] + cookbook params[:cookbook] + end + variables( + :application => application, + :application_name => application_name, + :params => params + ) + if File.exists?("#{node[:nginx][:dir]}/sites-enabled/#{application_name}") + notifies :reload, resources(:service => "nginx"), :delayed + end + end + + directory "#{node[:nginx][:dir]}/ssl" do + action :create + owner "root" + group "root" + mode 0600 + end + + template "#{node[:nginx][:dir]}/ssl/#{application[:domains].first}.crt" do + cookbook 'nginx' + mode '0600' + source "ssl.key.erb" + variables :key => application[:ssl_certificate] + only_if do + application[:ssl_support] + end + end + + template "#{node[:nginx][:dir]}/ssl/#{application[:domains].first}.key" do + cookbook 'nginx' + mode '0600' + source "ssl.key.erb" + variables :key => application[:ssl_certificate_key] + only_if do + application[:ssl_support] + end + end + + template "#{node[:nginx][:dir]}/ssl/#{application[:domains].first}.ca" do + cookbook 'nginx' + mode '0600' + source "ssl.key.erb" + variables :key => application[:ssl_certificate_ca] + only_if do + application[:ssl_support] && application[:ssl_certificate_ca] + end + end + + file "#{node[:nginx][:dir]}/sites-enabled/default" do + action :delete + only_if do + File.exists?("#{node[:nginx][:dir]}/sites-enabled/default") + end + end + + include_recipe "nginx::service" + + if params[:enable] + execute "nxensite #{application_name}" do + command "/usr/sbin/nxensite #{application_name}" + notifies :reload, resources(:service => "nginx") + not_if do File.symlink?("#{node[:nginx][:dir]}/sites-enabled/#{application_name}") end + end + else + execute "nxdissite #{application_name}" do + command "/usr/sbin/nxdissite #{application_name}" + notifies :reload, resources(:service => "nginx") + only_if do File.symlink?("#{node[:nginx][:dir]}/sites-enabled/#{application_name}") end + end + end +end diff --git a/nginx/metadata.rb b/nginx/metadata.rb index 1e974e7..4e66a89 100644 --- a/nginx/metadata.rb +++ b/nginx/metadata.rb @@ -76,4 +76,3 @@ attribute "nginx/server_names_hash_bucket_size", :display_name => "Nginx Server Names Hash Bucket Size", :default => "64" - diff --git a/nginx/recipes/default.rb b/nginx/recipes/default.rb index 671390d..0d400e3 100644 --- a/nginx/recipes/default.rb +++ b/nginx/recipes/default.rb @@ -50,4 +50,4 @@ mode 0644 end -include_recipe "nginx::service" \ No newline at end of file +include_recipe "nginx::service" diff --git a/nginx/recipes/service.rb b/nginx/recipes/service.rb index 8c2d935..da791ca 100644 --- a/nginx/recipes/service.rb +++ b/nginx/recipes/service.rb @@ -4,4 +4,4 @@ service "nginx" do supports :status => true, :restart => true, :reload => true action [ :enable, :start ] -end \ No newline at end of file +end diff --git a/nginx/templates/default/site.erb b/nginx/templates/default/site.erb index 41061a8..4585d3a 100644 --- a/nginx/templates/default/site.erb +++ b/nginx/templates/default/site.erb @@ -55,4 +55,4 @@ server { return 404; } } -<% end %> \ No newline at end of file +<% end %> diff --git a/nginx/templates/default/ssl.key.erb b/nginx/templates/default/ssl.key.erb index eb01f04..a8a4b27 100644 --- a/nginx/templates/default/ssl.key.erb +++ b/nginx/templates/default/ssl.key.erb @@ -1 +1 @@ -<%= @key %> \ No newline at end of file +<%= @key %> diff --git a/passenger_apache2/definitions/passenger_web_app.rb b/passenger_apache2/definitions/passenger_web_app.rb index f807df1..b68af0e 100644 --- a/passenger_apache2/definitions/passenger_web_app.rb +++ b/passenger_apache2/definitions/passenger_web_app.rb @@ -16,6 +16,42 @@ end end + template "/etc/apache2/ssl/#{deploy[:domains].first}.crt" do + mode '0600' + source "ssl.key.erb" + variables :key => deploy[:ssl_certificate] + only_if do + deploy[:ssl_support] + end + end + + template "/etc/apache2/ssl/#{deploy[:domains].first}.key" do + mode '0600' + source "ssl.key.erb" + variables :key => deploy[:ssl_certificate_key] + only_if do + deploy[:ssl_support] + end + end + + template "/etc/apache2/ssl/#{deploy[:domains].first}.ca" do + mode '0600' + source "ssl.key.erb" + variables :key => deploy[:ssl_certificate_ca] + only_if do + deploy[:ssl_support] && deploy[:ssl_certificate_ca] + end + end + + # move away default virtual host so that the Rails app becomes the default virtual host + execute "mv away default virtual host" do + action :run + command "mv /etc/apache2/sites-enabled/000-default /etc/apache2/sites-enabled/zzz-default" + only_if do + File.exists?("#{node[:apache][:dir]}/sites-enabled/000-default") + end + end + web_app deploy[:application] do docroot deploy[:absolute_document_root] server_name deploy[:domains].first diff --git a/passenger_apache2/recipes/default.rb b/passenger_apache2/recipes/default.rb index fe0739f..f6c5206 100644 --- a/passenger_apache2/recipes/default.rb +++ b/passenger_apache2/recipes/default.rb @@ -43,12 +43,9 @@ package 'libcurl4-openssl-dev' end -gem_package "passenger" do - retries 2 - version node[:passenger][:version] - gem_binary node[:passenger][:gem_bin] - only_if do - Chef::VERSION >= "0.9" || new_gem_version_available?('passenger') +ruby_block "ensure only our passenger version is installed by deinstalling any other version" do + block do + ensure_only_gem_version('passenger', node[:passenger][:version]) end end diff --git a/passenger_apache2/recipes/rails.rb b/passenger_apache2/recipes/rails.rb index b24bc50..6c44db7 100644 --- a/passenger_apache2/recipes/rails.rb +++ b/passenger_apache2/recipes/rails.rb @@ -1,46 +1,2 @@ include_recipe "deploy::rails" include_recipe "passenger_apache2::mod_rails" - -# setup Apache virtual host -node[:deploy].each do |application, deploy| - if deploy[:application_type] != 'rails' - Chef::Log.debug("Skipping passenger_apache2::rails application #{application} as it is not an Rails app") - next - end - - template "/etc/apache2/ssl/#{deploy[:domains].first}.crt" do - mode '0600' - source "ssl.key.erb" - variables :key => deploy[:ssl_certificate] - only_if do - deploy[:ssl_support] - end - end - - template "/etc/apache2/ssl/#{deploy[:domains].first}.key" do - mode '0600' - source "ssl.key.erb" - variables :key => deploy[:ssl_certificate_key] - only_if do - deploy[:ssl_support] - end - end - - template "/etc/apache2/ssl/#{deploy[:domains].first}.ca" do - mode '0600' - source "ssl.key.erb" - variables :key => deploy[:ssl_certificate_ca] - only_if do - deploy[:ssl_support] && deploy[:ssl_certificate_ca] - end - end - - # move away default virtual host so that the Rails app becomes the default virtual host - execute "mv away default virtual host" do - action :run - command "mv /etc/apache2/sites-enabled/000-default /etc/apache2/sites-enabled/zzz-default" - only_if do - File.exists?("#{node[:apache][:dir]}/sites-enabled/000-default") - end - end -end diff --git a/rails/README.rdoc b/rails/README.rdoc deleted file mode 100644 index e69de29..0000000 diff --git a/rails/metadata.rb b/rails/metadata.rb index 7e63f78..2927d2d 100644 --- a/rails/metadata.rb +++ b/rails/metadata.rb @@ -7,6 +7,7 @@ recipe "rails::configure", "Re-configure a Rails application" depends "apache2" +depends "nginx" attribute "rails", :display_name => "Rails", @@ -22,4 +23,3 @@ :display_name => "Rails Max Pool Size", :description => "Specify the MaxPoolSize in the Apache vhost", :default => "4" - diff --git a/rails/recipes/configure.rb b/rails/recipes/configure.rb index 142f04d..6255ee3 100644 --- a/rails/recipes/configure.rb +++ b/rails/recipes/configure.rb @@ -1,10 +1,10 @@ - include_recipe "deploy" node[:deploy].each do |application, deploy| deploy = node[:deploy][application] execute "restart Rails app #{application}" do + # TODO: Add stack specific restart cwd deploy[:current_path] command "touch tmp/restart.txt" action :nothing @@ -20,10 +20,8 @@ owner deploy[:user] variables(:database => deploy[:database], :environment => deploy[:rails_env]) - if deploy[:stack][:needs_reload] - notifies :run, resources(:execute => "restart Rails app #{application}") - end - + notifies :run, resources(:execute => "restart Rails app #{application}") + only_if do File.exists?("#{deploy[:deploy_to]}") && File.exists?("#{deploy[:deploy_to]}/shared/config/") end @@ -37,12 +35,10 @@ owner deploy[:user] variables(:memcached => deploy[:memcached], :environment => deploy[:rails_env]) - if deploy[:stack][:needs_reload] - notifies :run, resources(:execute => "restart Rails app #{application}") - end + notifies :run, resources(:execute => "restart Rails app #{application}") only_if do File.exists?("#{deploy[:deploy_to]}") && File.exists?("#{deploy[:deploy_to]}/shared/config/") end end -end \ No newline at end of file +end diff --git a/rails/recipes/default.rb b/rails/recipes/default.rb index e31e788..3431b78 100644 --- a/rails/recipes/default.rb +++ b/rails/recipes/default.rb @@ -1,3 +1 @@ -package "rubygems" - -# rails will be installed by the user as a dependency \ No newline at end of file +Chef::Log.debug("The default recipe of the \"rails\" cookbook will be deprecated, please remove it and don't use it any more.") diff --git a/unicorn/attributes/default.rb b/unicorn/attributes/default.rb new file mode 100644 index 0000000..c54f605 --- /dev/null +++ b/unicorn/attributes/default.rb @@ -0,0 +1,5 @@ +default[:unicorn][:worker_processes] = node[:rails][:max_pool_size] ? node[:rails][:max_pool_size] : 4 +default[:unicorn][:timeout] = 60 +default[:unicorn][:backlog] = 64 +default[:unicorn][:preload_app] = false +default[:unicorn][:version] = '4.0.1' diff --git a/unicorn/definitions/unicorn_web_app.rb b/unicorn/definitions/unicorn_web_app.rb new file mode 100644 index 0000000..a64ee60 --- /dev/null +++ b/unicorn/definitions/unicorn_web_app.rb @@ -0,0 +1,17 @@ +define :unicorn_web_app do + deploy = params[:deploy] + application = params[:application] + + nginx_web_app deploy[:application] do + docroot deploy[:absolute_document_root] + server_name deploy[:domains].first + server_aliases deploy[:domains][1, deploy[:domains].size] unless deploy[:domains][1, deploy[:domains].size].empty? + rails_env deploy[:rails_env] + mounted_at deploy[:mounted_at] + ssl_certificate_ca deploy[:ssl_certificate_ca] + cookbook "unicorn" + deploy deploy + template "nginx_unicorn_web_app.erb" + application deploy + end +end diff --git a/unicorn/recipes/default.rb b/unicorn/recipes/default.rb new file mode 100644 index 0000000..4de4ee9 --- /dev/null +++ b/unicorn/recipes/default.rb @@ -0,0 +1,5 @@ +ruby_block "ensure only our unicorn version is installed by deinstalling any other version" do + block do + ensure_only_gem_version('unicorn', node[:unicorn][:version]) + end +end diff --git a/unicorn/recipes/rails.rb b/unicorn/recipes/rails.rb new file mode 100644 index 0000000..8ae80f1 --- /dev/null +++ b/unicorn/recipes/rails.rb @@ -0,0 +1,33 @@ +include_recipe "deploy::rails" + +# setup Nginx virtual host +node[:deploy].each do |application, deploy| + if deploy[:application_type] != 'rails' + Chef::Log.debug("Skipping unicorn::rails application #{application} as it is not an Rails app") + next + end + + template "#{deploy[:deploy_to]}/shared/scripts/unicorn" do + mode '0755' + owner deploy[:user] + group deploy[:group] + source "unicorn.service.erb" + variables(:deploy => deploy, :application => application) + end + + service "unicorn_#{application}" do + start_command "#{deploy[:deploy_to]}/shared/scripts/unicorn start" + stop_command "#{deploy[:deploy_to]}/shared/scripts/unicorn stop" + restart_command "#{deploy[:deploy_to]}/shared/scripts/unicorn restart" + status_command "#{deploy[:deploy_to]}/shared/scripts/unicorn status" + action :nothing + end + + template "#{deploy[:deploy_to]}/shared/config/unicorn.conf" do + mode '0644' + owner deploy[:user] + group deploy[:group] + source "unicorn.conf.erb" + variables(:deploy => deploy, :application => application) + end +end diff --git a/unicorn/templates/default/nginx_unicorn_web_app.erb b/unicorn/templates/default/nginx_unicorn_web_app.erb new file mode 100644 index 0000000..8a13a39 --- /dev/null +++ b/unicorn/templates/default/nginx_unicorn_web_app.erb @@ -0,0 +1,68 @@ +upstream unicorn_<%= @application[:domains].first %> { + server unix:<%= @application[:deploy_to]%>/shared/sockets/unicorn.sock fail_timeout=0; +} + +server { + listen 80; + server_name <%= @application[:domains].join(" ") %> <%= node[:hostname] %>; + access_log <%= node[:nginx][:log_dir] %>/<%= @application[:domains].first %>.access.log; + + keepalive_timeout 5; + + root <%= @application[:absolute_document_root] %>; + + location / { + proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; + proxy_set_header Host $http_host; + proxy_redirect off; + + # If you don't find the filename in the static files + # Then request it from the unicorn server + if (!-f $request_filename) { + proxy_pass http://unicorn_<%= @application[:domains].first %>; + break; + } + } + + error_page 500 502 503 504 /500.html; + location = /500.html { + root <%= @application[:absolute_document_root] %>; + } +} + +<% if @application[:ssl_support] %> +server { + listen 443; + server_name <%= @application[:domains].join(" ") %> <%= node[:hostname] %>; + access_log <%= node[:nginx][:log_dir] %>/<%= @application[:domains].first %>-ssl.access.log; + + ssl on; + ssl_certificate /etc/nginx/ssl/<%= @application[:domains].first %>.crt; + ssl_certificate_key /etc/nginx/ssl/<%= @application[:domains].first %>.key; + <% if @application[:ssl_certificate_ca] -%> + ssl_client_certificate /etc/nginx/ssl/<%= @application[:domains].first %>.ca; + <% end -%> + + keepalive_timeout 5; + + root <%= @application[:absolute_document_root] %>; + + location / { + proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; + proxy_set_header Host $http_host; + proxy_redirect off; + + # If you don't find the filename in the static files + # Then request it from the unicorn server + if (!-f $request_filename) { + proxy_pass http://unicorn_<%= @application[:domains].first %>; + break; + } + } + + error_page 500 502 503 504 /500.html; + location = /500.html { + root <%= @application[:absolute_document_root] %>; + } +} +<% end %> diff --git a/unicorn/templates/default/unicorn.conf.erb b/unicorn/templates/default/unicorn.conf.erb new file mode 100644 index 0000000..48e1e1a --- /dev/null +++ b/unicorn/templates/default/unicorn.conf.erb @@ -0,0 +1,40 @@ +worker_processes <%= node[:unicorn][:worker_processes] %> + +user "<%= @deploy[:user]%>" + +working_directory "<%= @deploy[:deploy_to]%>/current" + +listen "<%= @deploy[:deploy_to]%>/shared/sockets/unicorn.sock", :backlog => <%= node[:unicorn][:backlog] %> + +timeout <%= node[:unicorn][:timeout] %> + +pid "<%= @deploy[:deploy_to]%>/shared/pids/unicorn.pid" + +stderr_path "<%= @deploy[:deploy_to]%>/shared/log/unicorn.stderr.log" +stdout_path "<%= @deploy[:deploy_to]%>/shared/log/unicorn.stdout.log" + +# combine REE with "preload_app true" for memory savings +# http://rubyenterpriseedition.com/faq.html#adapt_apps_for_cow +preload_app <%= node[:unicorn][:preload_app] %> +GC.copy_on_write_friendly = true if GC.respond_to?(:copy_on_write_friendly=) + +before_fork do |server, worker| + # the following is highly recomended for Rails + "preload_app true" + # as there's no need for the master process to hold a connection + if defined?(ActiveRecord::Base) + ActiveRecord::Base.connection.disconnect! + end +end + +after_fork do |server, worker| + # the following is *required* for Rails + "preload_app true", + if defined?(ActiveRecord::Base) + ActiveRecord::Base.establish_connection + end + + # if preload_app is true, then you may also want to check and + # restart any other shared sockets/descriptors such as Memcached, + # and Redis. TokyoCabinet file handles are safe to reuse + # between any number of forked children (assuming your kernel + # correctly implements pread()/pwrite() system calls) +end diff --git a/unicorn/templates/default/unicorn.service.erb b/unicorn/templates/default/unicorn.service.erb new file mode 100644 index 0000000..da4bced --- /dev/null +++ b/unicorn/templates/default/unicorn.service.erb @@ -0,0 +1,73 @@ +#!/usr/bin/ruby + +ROOT_PATH="<%= @deploy[:deploy_to] %>" +APP_NAME="<%= @application %>" +PID_PATH="<%= @deploy[:deploy_to] %>/shared/pids/unicorn.pid" + +def run_and_print_command(command) + puts command + system(command) || exit(1) +end + +def start_unicorn + if File.exists?("#{ROOT_PATH}/current/Gemfile") + puts "Scalarium: Gemfile detected - running Unicorn with bundle exec" + run_and_print_command "cd #{ROOT_PATH}/current && /usr/local/bin/bundle exec unicorn_rails --env <%= @deploy[:rails_env] %> --daemonize -c #{ROOT_PATH}/shared/config/unicorn.conf" + else + puts "Scalarium: no Gemfile detected - running plain Unicorn" + run_and_print_command "cd #{ROOT_PATH}/current && unicorn_rails --env <%= @deploy[:rails_env] %> --daemonize -c #{ROOT_PATH}/shared/config/unicorn.conf" + end +end + +def stop_unicorn + if run_and_print_command "kill -QUIT `cat #{PID_PATH}`" + `rm #{PID_PATH}` + end +end + +def restart_unicorn + if unicorn_running? + run_and_print_command "kill -HUP `cat #{PID_PATH}`" + else + start_unicorn + end +end + +def status_unicorn + if pid = unicorn_running? + puts "Unicorn <%= @application %> running with PID #{pid}" + return true + else + puts "Unicorn <%= @application %> not running" + return false + end +end + +def unicorn_running? + if File.exists?(PID_PATH) && (pid = File.read(PID_PATH).chomp) && system("ps aux | grep #{pid} | grep -v grep > /dev/null") + pid + else + false + end +end + +case ARGV[0] +when "start" + puts "Starting Unicorn #{APP_NAME}" + start_unicorn +when "stop" + puts "Stopping Unicorn #{APP_NAME}" + stop_unicorn +when "status" + status_unicorn +when "restart" + restart_unicorn +when "clean-restart" + stop_unicorn + start_unicorn +else + puts "Usage: {start|stop|status|restart|clean-restart}" + exit 1 +end + +exit 0 From b3b509587e48ff6a5332c150787c5baae96da2d1 Mon Sep 17 00:00:00 2001 From: Jonathan Weiss Date: Fri, 22 Jul 2011 17:21:53 +0200 Subject: [PATCH 082/334] nicer service recipe for nginx: only define service --- nginx/recipes/default.rb | 6 +++++- nginx/recipes/service.rb | 5 +---- 2 files changed, 6 insertions(+), 5 deletions(-) diff --git a/nginx/recipes/default.rb b/nginx/recipes/default.rb index 671390d..4b27bb2 100644 --- a/nginx/recipes/default.rb +++ b/nginx/recipes/default.rb @@ -50,4 +50,8 @@ mode 0644 end -include_recipe "nginx::service" \ No newline at end of file +include_recipe "nginx::service" + +service "nginx" do + action [ :enable, :start ] +end \ No newline at end of file diff --git a/nginx/recipes/service.rb b/nginx/recipes/service.rb index 8c2d935..f81aa8e 100644 --- a/nginx/recipes/service.rb +++ b/nginx/recipes/service.rb @@ -1,7 +1,4 @@ -# Cookbook Name:: nginx -# Recipe:: service - service "nginx" do supports :status => true, :restart => true, :reload => true - action [ :enable, :start ] + action :nothing end \ No newline at end of file From 9cdcc098836a61e74d700cd9eb838620200c7e61 Mon Sep 17 00:00:00 2001 From: Jonathan Weiss Date: Fri, 22 Jul 2011 17:25:19 +0200 Subject: [PATCH 083/334] use correct restart command --- deploy/definitions/scalarium_deploy.rb | 4 +--- deploy/recipes/rails-restart.rb | 2 +- rails/recipes/configure.rb | 3 +-- 3 files changed, 3 insertions(+), 6 deletions(-) diff --git a/deploy/definitions/scalarium_deploy.rb b/deploy/definitions/scalarium_deploy.rb index e1553aa..de1bc26 100644 --- a/deploy/definitions/scalarium_deploy.rb +++ b/deploy/definitions/scalarium_deploy.rb @@ -107,9 +107,7 @@ end end - # Need to be uncommented in production - # XXX - if deploy[:application_type] == 'rails'# && node[:scalarium][:instance][:roles].include?('rails-app') + if deploy[:application_type] == 'rails' && node[:scalarium][:instance][:roles].include?('rails-app') case node[:scalarium][:rails_stack][:name] when 'apache_passenger' diff --git a/deploy/recipes/rails-restart.rb b/deploy/recipes/rails-restart.rb index 6a7283d..36de4e8 100644 --- a/deploy/recipes/rails-restart.rb +++ b/deploy/recipes/rails-restart.rb @@ -13,7 +13,7 @@ execute "restart Server" do cwd deploy[:current_path] - command "sleep #{deploy[:sleep_before_restart]} && /srv/www/#{application}/shared/scripts/unicorn stop" + command "sleep #{deploy[:sleep_before_restart]} && #{node[:scalarium][:rails_stack][:restart_command]}" action :run only_if do diff --git a/rails/recipes/configure.rb b/rails/recipes/configure.rb index 6255ee3..fc131e1 100644 --- a/rails/recipes/configure.rb +++ b/rails/recipes/configure.rb @@ -4,9 +4,8 @@ deploy = node[:deploy][application] execute "restart Rails app #{application}" do - # TODO: Add stack specific restart cwd deploy[:current_path] - command "touch tmp/restart.txt" + command node[:scalarium][:rails_stack][:restart_command] action :nothing end From 4a83cd20c3454f311323971e8744b148ef694161 Mon Sep 17 00:00:00 2001 From: Jonathan Weiss Date: Fri, 22 Jul 2011 17:48:45 +0200 Subject: [PATCH 084/334] fix nginx_site definition --- nginx/definitions/nginx_site.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/nginx/definitions/nginx_site.rb b/nginx/definitions/nginx_site.rb index 60d22f8..93d19a8 100644 --- a/nginx/definitions/nginx_site.rb +++ b/nginx/definitions/nginx_site.rb @@ -1,4 +1,4 @@ -define :nginx_web_app, :template => "site.erb", :enable => true do +define :nginx_site, :template => "site.erb", :enable => true do application = params[:application] application_name = params[:name] From 20d2c21860aa713f0ca69bccdfb5e2dedd4a2602 Mon Sep 17 00:00:00 2001 From: Jonathan Weiss Date: Fri, 22 Jul 2011 17:54:19 +0200 Subject: [PATCH 085/334] remove whitespace --- deploy/definitions/scalarium_deploy.rb | 4 ++-- nginx/definitions/nginx_web_app.rb | 12 ++++++------ passenger_apache2/definitions/passenger_web_app.rb | 8 ++++---- passenger_apache2/recipes/rails.rb | 2 +- unicorn/recipes/rails.rb | 6 +++--- 5 files changed, 16 insertions(+), 16 deletions(-) diff --git a/deploy/definitions/scalarium_deploy.rb b/deploy/definitions/scalarium_deploy.rb index de1bc26..403f48d 100644 --- a/deploy/definitions/scalarium_deploy.rb +++ b/deploy/definitions/scalarium_deploy.rb @@ -34,7 +34,7 @@ end Chef::Log.debug("Checking out source code of application #{application} with type #{deploy[:application_type]}") - + directory "#{deploy[:deploy_to]}/shared/cached-copy" do recursive true action :delete @@ -121,7 +121,7 @@ application application deploy deploy end - + else raise "Unsupport Rails stack" end diff --git a/nginx/definitions/nginx_web_app.rb b/nginx/definitions/nginx_web_app.rb index 214e9a6..88eda4c 100644 --- a/nginx/definitions/nginx_web_app.rb +++ b/nginx/definitions/nginx_web_app.rb @@ -1,6 +1,6 @@ define :nginx_web_app, :template => "site.erb", :enable => true do include_recipe "nginx::service" - + application = params[:application] application_name = params[:name] @@ -29,7 +29,7 @@ group "root" mode 0600 end - + template "#{node[:nginx][:dir]}/ssl/#{application[:domains].first}.crt" do cookbook 'nginx' mode '0600' @@ -39,7 +39,7 @@ application[:ssl_support] end end - + template "#{node[:nginx][:dir]}/ssl/#{application[:domains].first}.key" do cookbook 'nginx' mode '0600' @@ -49,7 +49,7 @@ application[:ssl_support] end end - + template "#{node[:nginx][:dir]}/ssl/#{application[:domains].first}.ca" do cookbook 'nginx' mode '0600' @@ -59,14 +59,14 @@ application[:ssl_support] && application[:ssl_certificate_ca] end end - + file "#{node[:nginx][:dir]}/sites-enabled/default" do action :delete only_if do File.exists?("#{node[:nginx][:dir]}/sites-enabled/default") end end - + include_recipe "nginx::service" if params[:enable] diff --git a/passenger_apache2/definitions/passenger_web_app.rb b/passenger_apache2/definitions/passenger_web_app.rb index b68af0e..fe34a66 100644 --- a/passenger_apache2/definitions/passenger_web_app.rb +++ b/passenger_apache2/definitions/passenger_web_app.rb @@ -24,7 +24,7 @@ deploy[:ssl_support] end end - + template "/etc/apache2/ssl/#{deploy[:domains].first}.key" do mode '0600' source "ssl.key.erb" @@ -33,7 +33,7 @@ deploy[:ssl_support] end end - + template "/etc/apache2/ssl/#{deploy[:domains].first}.ca" do mode '0600' source "ssl.key.erb" @@ -47,8 +47,8 @@ execute "mv away default virtual host" do action :run command "mv /etc/apache2/sites-enabled/000-default /etc/apache2/sites-enabled/zzz-default" - only_if do - File.exists?("#{node[:apache][:dir]}/sites-enabled/000-default") + only_if do + File.exists?("#{node[:apache][:dir]}/sites-enabled/000-default") end end diff --git a/passenger_apache2/recipes/rails.rb b/passenger_apache2/recipes/rails.rb index 6c44db7..2ed3cb8 100644 --- a/passenger_apache2/recipes/rails.rb +++ b/passenger_apache2/recipes/rails.rb @@ -1,2 +1,2 @@ include_recipe "deploy::rails" -include_recipe "passenger_apache2::mod_rails" +include_recipe "passenger_apache2::mod_rails" \ No newline at end of file diff --git a/unicorn/recipes/rails.rb b/unicorn/recipes/rails.rb index 8ae80f1..f768ec1 100644 --- a/unicorn/recipes/rails.rb +++ b/unicorn/recipes/rails.rb @@ -6,7 +6,7 @@ Chef::Log.debug("Skipping unicorn::rails application #{application} as it is not an Rails app") next end - + template "#{deploy[:deploy_to]}/shared/scripts/unicorn" do mode '0755' owner deploy[:user] @@ -14,7 +14,7 @@ source "unicorn.service.erb" variables(:deploy => deploy, :application => application) end - + service "unicorn_#{application}" do start_command "#{deploy[:deploy_to]}/shared/scripts/unicorn start" stop_command "#{deploy[:deploy_to]}/shared/scripts/unicorn stop" @@ -22,7 +22,7 @@ status_command "#{deploy[:deploy_to]}/shared/scripts/unicorn status" action :nothing end - + template "#{deploy[:deploy_to]}/shared/config/unicorn.conf" do mode '0644' owner deploy[:user] From 8e693e05e4f573265a376c260e10b642d07df4fc Mon Sep 17 00:00:00 2001 From: Jonathan Weiss Date: Fri, 22 Jul 2011 17:57:01 +0200 Subject: [PATCH 086/334] remove no longer needed include --- passenger_apache2/recipes/rails.rb | 1 - unicorn/recipes/rails.rb | 4 +--- 2 files changed, 1 insertion(+), 4 deletions(-) diff --git a/passenger_apache2/recipes/rails.rb b/passenger_apache2/recipes/rails.rb index 2ed3cb8..3e88889 100644 --- a/passenger_apache2/recipes/rails.rb +++ b/passenger_apache2/recipes/rails.rb @@ -1,2 +1 @@ -include_recipe "deploy::rails" include_recipe "passenger_apache2::mod_rails" \ No newline at end of file diff --git a/unicorn/recipes/rails.rb b/unicorn/recipes/rails.rb index f768ec1..231c36c 100644 --- a/unicorn/recipes/rails.rb +++ b/unicorn/recipes/rails.rb @@ -1,6 +1,4 @@ -include_recipe "deploy::rails" - -# setup Nginx virtual host +# setup Unicorn service per app node[:deploy].each do |application, deploy| if deploy[:application_type] != 'rails' Chef::Log.debug("Skipping unicorn::rails application #{application} as it is not an Rails app") From f43a88438f8c9bfadad0f8faa00e17f83afe3cc2 Mon Sep 17 00:00:00 2001 From: Jonathan Weiss Date: Fri, 22 Jul 2011 18:07:04 +0200 Subject: [PATCH 087/334] re-add depricated attribute --- deploy/attributes/deploy.rb | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/deploy/attributes/deploy.rb b/deploy/attributes/deploy.rb index 04fa2e6..34ee3d2 100644 --- a/deploy/attributes/deploy.rb +++ b/deploy/attributes/deploy.rb @@ -35,7 +35,8 @@ default[:deploy][application][:home] = home - default[:deploy][application][:sleep_before_restart] = 0 + default[:deploy][application][:sleep_before_restart] = 0 + default[:deploy][application][:needs_reload] = true default[:deploy][application][:enable_submodules] = true default[:deploy][application][:shallow_clone] = true default[:deploy][application][:symlink_before_migrate] = {} From 4cd3c37d94b3532c9e3f0815915720365a9e56a6 Mon Sep 17 00:00:00 2001 From: Jonathan Weiss Date: Fri, 22 Jul 2011 18:30:10 +0200 Subject: [PATCH 088/334] fix name of depricated attribute --- deploy/attributes/deploy.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/deploy/attributes/deploy.rb b/deploy/attributes/deploy.rb index 34ee3d2..459ad0d 100644 --- a/deploy/attributes/deploy.rb +++ b/deploy/attributes/deploy.rb @@ -36,7 +36,7 @@ default[:deploy][application][:home] = home default[:deploy][application][:sleep_before_restart] = 0 - default[:deploy][application][:needs_reload] = true + default[:deploy][application][:stack][:needs_reload] = true default[:deploy][application][:enable_submodules] = true default[:deploy][application][:shallow_clone] = true default[:deploy][application][:symlink_before_migrate] = {} From 63730d181175f7a814a7826bac45baae09fe46e9 Mon Sep 17 00:00:00 2001 From: Jonathan Weiss Date: Fri, 22 Jul 2011 18:30:21 +0200 Subject: [PATCH 089/334] whitespace --- deploy/definitions/scalarium_rails.rb | 6 +++--- deploy/recipes/rails-undeploy.rb | 20 +++++++++----------- rails/recipes/configure.rb | 10 +++++----- 3 files changed, 17 insertions(+), 19 deletions(-) diff --git a/deploy/definitions/scalarium_rails.rb b/deploy/definitions/scalarium_rails.rb index c5f8fa1..1b1317f 100644 --- a/deploy/definitions/scalarium_rails.rb +++ b/deploy/definitions/scalarium_rails.rb @@ -1,9 +1,9 @@ define :scalarium_rails do deploy = params[:deploy_data] application = params[:app] - + include_recipe node[:scalarium][:rails_stack][:recipe] - + # write out memcached.yml template "#{deploy[:deploy_to]}/shared/config/memcached.yml" do cookbook "rails" @@ -13,7 +13,7 @@ group deploy[:group] variables(:memcached => (deploy[:memcached] || {}), :environment => deploy[:rails_env]) end - + execute "symlinking subdir mount if necessary" do command "rm -f /var/www/#{deploy[:mounted_at]}; ln -s #{deploy[:deploy_to]}/current/public /var/www/#{deploy[:mounted_at]}" action :run diff --git a/deploy/recipes/rails-undeploy.rb b/deploy/recipes/rails-undeploy.rb index 54a19b6..25249a5 100644 --- a/deploy/recipes/rails-undeploy.rb +++ b/deploy/recipes/rails-undeploy.rb @@ -18,16 +18,16 @@ link "/etc/apache2/sites-enabled/#{application}.conf" do action :delete - only_if do + only_if do File.exists?("/etc/apache2/sites-enabled/#{application}.conf") end - + notifies :restart, resources(:service => node[:scalarium][:rails_stack][:service]) end file "/etc/apache2/sites-available/#{application}.conf" do action :delete - only_if do + only_if do File.exists?("/etc/apache2/sites-available/#{application}.conf") end end @@ -39,16 +39,16 @@ link "/etc/nginx/sites-enabled/#{application}" do action :delete - only_if do + only_if do File.exists?("/etc/nginx/sites-enabled/#{application}") end - + notifies :restart, resources(:service => "nginx") end file "/etc/nginx/sites-available/#{application}" do action :delete - only_if do + only_if do File.exists?("/etc/nginx/sites-available/#{application}") end end @@ -66,12 +66,10 @@ directory "#{deploy[:deploy_to]}" do recursive true action :delete - - only_if do + + only_if do File.exists?("#{deploy[:deploy_to]}") end end - -end - +end \ No newline at end of file diff --git a/rails/recipes/configure.rb b/rails/recipes/configure.rb index fc131e1..5ba6e76 100644 --- a/rails/recipes/configure.rb +++ b/rails/recipes/configure.rb @@ -18,14 +18,14 @@ group deploy[:group] owner deploy[:user] variables(:database => deploy[:database], :environment => deploy[:rails_env]) - + notifies :run, resources(:execute => "restart Rails app #{application}") - + only_if do File.exists?("#{deploy[:deploy_to]}") && File.exists?("#{deploy[:deploy_to]}/shared/config/") end end - + template "#{deploy[:deploy_to]}/shared/config/memcached.yml" do source "memcached.yml.erb" cookbook 'rails' @@ -33,9 +33,9 @@ group deploy[:group] owner deploy[:user] variables(:memcached => deploy[:memcached], :environment => deploy[:rails_env]) - + notifies :run, resources(:execute => "restart Rails app #{application}") - + only_if do File.exists?("#{deploy[:deploy_to]}") && File.exists?("#{deploy[:deploy_to]}/shared/config/") end From e580e340f0a9e26675faba724baabbbd3564db6c Mon Sep 17 00:00:00 2001 From: Daniel Spangenberg Date: Mon, 25 Jul 2011 10:35:59 +0200 Subject: [PATCH 090/334] Stop other rails stack on deploy --- deploy/definitions/scalarium_deploy.rb | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/deploy/definitions/scalarium_deploy.rb b/deploy/definitions/scalarium_deploy.rb index 403f48d..a5e0083 100644 --- a/deploy/definitions/scalarium_deploy.rb +++ b/deploy/definitions/scalarium_deploy.rb @@ -111,12 +111,16 @@ case node[:scalarium][:rails_stack][:name] when 'apache_passenger' + include_recipe "nginx::service" + notifies :stop, resources(:service => "nginx") passenger_web_app do application application deploy deploy end when 'nginx_unicorn' + include_recipe "apache2::service" + notifies :stop, resources(:service => "apache2") unicorn_web_app do application application deploy deploy From 6d62d5b2dc7584980b2d7d9dbe1cf6d01e9ed2f7 Mon Sep 17 00:00:00 2001 From: Daniel Spangenberg Date: Mon, 25 Jul 2011 12:38:16 +0200 Subject: [PATCH 091/334] Added uninstall scripts --- apache2/recipes/uninstall.rb | 4 ++++ deploy/definitions/scalarium_deploy.rb | 4 ---- nginx/recipes/uninstall.rb | 4 ++++ passenger_apache2/recipes/rails.rb | 5 +++++ unicorn/recipes/rails.rb | 4 ++++ unicorn/recipes/stop.rb | 14 ++++++++++++++ 6 files changed, 31 insertions(+), 4 deletions(-) create mode 100644 apache2/recipes/uninstall.rb create mode 100644 nginx/recipes/uninstall.rb create mode 100644 unicorn/recipes/stop.rb diff --git a/apache2/recipes/uninstall.rb b/apache2/recipes/uninstall.rb new file mode 100644 index 0000000..1c301dc --- /dev/null +++ b/apache2/recipes/uninstall.rb @@ -0,0 +1,4 @@ +include_recipe "apache::service" +package "apache2" do + action :remove +end \ No newline at end of file diff --git a/deploy/definitions/scalarium_deploy.rb b/deploy/definitions/scalarium_deploy.rb index a5e0083..403f48d 100644 --- a/deploy/definitions/scalarium_deploy.rb +++ b/deploy/definitions/scalarium_deploy.rb @@ -111,16 +111,12 @@ case node[:scalarium][:rails_stack][:name] when 'apache_passenger' - include_recipe "nginx::service" - notifies :stop, resources(:service => "nginx") passenger_web_app do application application deploy deploy end when 'nginx_unicorn' - include_recipe "apache2::service" - notifies :stop, resources(:service => "apache2") unicorn_web_app do application application deploy deploy diff --git a/nginx/recipes/uninstall.rb b/nginx/recipes/uninstall.rb new file mode 100644 index 0000000..cdccc6d --- /dev/null +++ b/nginx/recipes/uninstall.rb @@ -0,0 +1,4 @@ +package "nginx" do + notifies :stop, resources(:service => "apache2") + action :remove +end \ No newline at end of file diff --git a/passenger_apache2/recipes/rails.rb b/passenger_apache2/recipes/rails.rb index 3e88889..051e471 100644 --- a/passenger_apache2/recipes/rails.rb +++ b/passenger_apache2/recipes/rails.rb @@ -1 +1,6 @@ +include_recipe "nginx::uninstall" +include_recipe "unicorn::stop" +include_recipe "apache2" +include_recipe "apache2::mod_deflate" +include_recipe "passenger_apache2" include_recipe "passenger_apache2::mod_rails" \ No newline at end of file diff --git a/unicorn/recipes/rails.rb b/unicorn/recipes/rails.rb index 231c36c..77ade71 100644 --- a/unicorn/recipes/rails.rb +++ b/unicorn/recipes/rails.rb @@ -1,3 +1,7 @@ +include_recipe "apache2::uninstall" +include_recipe "nginx" +include_recipe "unicorn" + # setup Unicorn service per app node[:deploy].each do |application, deploy| if deploy[:application_type] != 'rails' diff --git a/unicorn/recipes/stop.rb b/unicorn/recipes/stop.rb new file mode 100644 index 0000000..1075f36 --- /dev/null +++ b/unicorn/recipes/stop.rb @@ -0,0 +1,14 @@ +# stop Unicorn service per app +node[:deploy].each do |application, deploy| + if deploy[:application_type] != 'rails' + Chef::Log.debug("Skipping unicorn::rails application #{application} as it is not an Rails app") + next + end + + execute "stop unicorn" do + command "#{deploy[:deploy_to]}/shared/scripts/unicorn stop" + only_if do + File.exists?("#{deploy[:deploy_to]}/shared/scripts/unicorn") + end + end +end From 19dd9d588ee77812045c05e2d5cfcef50586fbd3 Mon Sep 17 00:00:00 2001 From: Daniel Spangenberg Date: Mon, 25 Jul 2011 18:33:51 +0200 Subject: [PATCH 092/334] Finaly added installer and uninstaller scripts and configurable unicorn.conf --- apache2/recipes/uninstall.rb | 13 +++-- deploy/attributes/rails_stack.rb | 2 +- deploy/definitions/scalarium_rails.rb | 7 --- deploy/recipes/rails.rb | 7 --- nginx/recipes/uninstall.rb | 13 +++-- unicorn/attributes/default.rb | 7 ++- unicorn/recipes/rails.rb | 10 ++++ unicorn/templates/default/unicorn.conf.erb | 2 +- unicorn/templates/default/unicorn.service.erb | 51 ++++++++++++++----- 9 files changed, 77 insertions(+), 35 deletions(-) diff --git a/apache2/recipes/uninstall.rb b/apache2/recipes/uninstall.rb index 1c301dc..528649d 100644 --- a/apache2/recipes/uninstall.rb +++ b/apache2/recipes/uninstall.rb @@ -1,4 +1,11 @@ -include_recipe "apache::service" -package "apache2" do - action :remove +if File.exists?("/etc/init.d/apache2") + include_recipe "apache2::service" + + service "apache2" do + action :stop + end + + package "apache2" do + action :remove + end end \ No newline at end of file diff --git a/deploy/attributes/rails_stack.rb b/deploy/attributes/rails_stack.rb index 527fb28..1691918 100644 --- a/deploy/attributes/rails_stack.rb +++ b/deploy/attributes/rails_stack.rb @@ -9,7 +9,7 @@ default[:scalarium][:rails_stack][:recipe] = "unicorn::rails" default[:scalarium][:rails_stack][:needs_reload] = true default[:scalarium][:rails_stack][:service] = 'unicorn' - default[:scalarium][:rails_stack][:restart_command] = '../../shared/scripts/unicorn restart' + default[:scalarium][:rails_stack][:restart_command] = '../../shared/scripts/unicorn clean-restart' else raise "Unknown stack: #{node[:scalarium][:rails_stack][:name].inspect}" end diff --git a/deploy/definitions/scalarium_rails.rb b/deploy/definitions/scalarium_rails.rb index 1b1317f..3020f90 100644 --- a/deploy/definitions/scalarium_rails.rb +++ b/deploy/definitions/scalarium_rails.rb @@ -14,11 +14,4 @@ variables(:memcached => (deploy[:memcached] || {}), :environment => deploy[:rails_env]) end - execute "symlinking subdir mount if necessary" do - command "rm -f /var/www/#{deploy[:mounted_at]}; ln -s #{deploy[:deploy_to]}/current/public /var/www/#{deploy[:mounted_at]}" - action :run - only_if do - deploy[:mounted_at] - end - end end diff --git a/deploy/recipes/rails.rb b/deploy/recipes/rails.rb index f737788..4e2b462 100644 --- a/deploy/recipes/rails.rb +++ b/deploy/recipes/rails.rb @@ -1,10 +1,3 @@ -# -# Cookbook Name:: deploy -# Recipe:: rails -# - -include_recipe "rails" - node[:deploy].each do |application, deploy| if deploy[:application_type] != 'rails' diff --git a/nginx/recipes/uninstall.rb b/nginx/recipes/uninstall.rb index cdccc6d..c3ea0bc 100644 --- a/nginx/recipes/uninstall.rb +++ b/nginx/recipes/uninstall.rb @@ -1,4 +1,11 @@ -package "nginx" do - notifies :stop, resources(:service => "apache2") - action :remove +if File.exists?("/etc/init.d/nginx") + include_recipe "nginx::service" + + service "nginx" do + action :stop + end + + package "nginx" do + action :remove + end end \ No newline at end of file diff --git a/unicorn/attributes/default.rb b/unicorn/attributes/default.rb index c54f605..2dc9a88 100644 --- a/unicorn/attributes/default.rb +++ b/unicorn/attributes/default.rb @@ -1,5 +1,10 @@ default[:unicorn][:worker_processes] = node[:rails][:max_pool_size] ? node[:rails][:max_pool_size] : 4 +default[:unicorn][:backlog] = 1024 default[:unicorn][:timeout] = 60 -default[:unicorn][:backlog] = 64 default[:unicorn][:preload_app] = false default[:unicorn][:version] = '4.0.1' +default[:unicorn][:tcp_nodelay] = true +default[:unicorn][:tcp_nopush] = false +default[:unicorn][:tries] = 5 +default[:unicorn][:delay] = 0.5 +default[:unicorn][:accept_filter] = "httpready" \ No newline at end of file diff --git a/unicorn/recipes/rails.rb b/unicorn/recipes/rails.rb index 77ade71..1e2f569 100644 --- a/unicorn/recipes/rails.rb +++ b/unicorn/recipes/rails.rb @@ -9,6 +9,16 @@ next end + scalarium_deploy_user do + deploy_data deploy + end + + scalarium_deploy_dir do + user deploy[:user] + group deploy[:group] + path deploy[:deploy_to] + end + template "#{deploy[:deploy_to]}/shared/scripts/unicorn" do mode '0755' owner deploy[:user] diff --git a/unicorn/templates/default/unicorn.conf.erb b/unicorn/templates/default/unicorn.conf.erb index 48e1e1a..1bc3ec7 100644 --- a/unicorn/templates/default/unicorn.conf.erb +++ b/unicorn/templates/default/unicorn.conf.erb @@ -4,7 +4,7 @@ user "<%= @deploy[:user]%>" working_directory "<%= @deploy[:deploy_to]%>/current" -listen "<%= @deploy[:deploy_to]%>/shared/sockets/unicorn.sock", :backlog => <%= node[:unicorn][:backlog] %> +listen "<%= @deploy[:deploy_to]%>/shared/sockets/unicorn.sock", :backlog => <%= node[:unicorn][:backlog] %>, :tcp_nodelay => <%= node[:unicorn][:tcp_nodelay] %>, :tcp_nopush => <%= node[:unicorn][:tcp_nopush] %>, :tries => <%= node[:unicorn][:tries] %>, :delay => <%= node[:unicorn][:delay] %>, :accept_filter => <%= node[:unicorn][:accept_filter] %> timeout <%= node[:unicorn][:timeout] %> diff --git a/unicorn/templates/default/unicorn.service.erb b/unicorn/templates/default/unicorn.service.erb index da4bced..42777ff 100644 --- a/unicorn/templates/default/unicorn.service.erb +++ b/unicorn/templates/default/unicorn.service.erb @@ -1,5 +1,7 @@ #!/usr/bin/ruby +require 'digest/md5' + ROOT_PATH="<%= @deploy[:deploy_to] %>" APP_NAME="<%= @application %>" PID_PATH="<%= @deploy[:deploy_to] %>/shared/pids/unicorn.pid" @@ -9,6 +11,25 @@ def run_and_print_command(command) system(command) || exit(1) end +def unicorn_running? + if File.exists?(PID_PATH) && (pid = File.read(PID_PATH).chomp) && system("ps aux | grep #{pid} | grep -v grep > /dev/null") + pid + else + false + end +end + +def different_gemfile? + if File.exists?("#{ROOT_PATH}/current/Gemfile") + dir = Dir["#{ROOT_PATH}/releases/*"] + previous_release_path = dir.sort[dir.size-2] + if !previous_release_path.nil? && File.exists?("#{previous_release_path}/Gemfile") + return Digest::MD5.hexdigest(File.read("#{ROOT_PATH}/current/Gemfile")) != Digest::MD5.hexdigest(File.read("#{previous_release_path}/Gemfile")) + end + end + false +end + def start_unicorn if File.exists?("#{ROOT_PATH}/current/Gemfile") puts "Scalarium: Gemfile detected - running Unicorn with bundle exec" @@ -20,8 +41,12 @@ def start_unicorn end def stop_unicorn - if run_and_print_command "kill -QUIT `cat #{PID_PATH}`" - `rm #{PID_PATH}` + if unicorn_running? + if run_and_print_command "kill -QUIT `cat #{PID_PATH}`" + `rm #{PID_PATH}` + end + else + puts "You can't stop unicorn, because it's not running" end end @@ -33,6 +58,17 @@ def restart_unicorn end end +def clean_restart + if different_gemfile? + puts "Found a previous version with a different Gemfile: Doing a stop & start" + stop_unicorn if unicorn_running? + start_unicorn + else + puts "No previous version with a different Gemfile found. Assuming a quick restart without re-loading gems is save" + restart_unicorn + end +end + def status_unicorn if pid = unicorn_running? puts "Unicorn <%= @application %> running with PID #{pid}" @@ -43,14 +79,6 @@ def status_unicorn end end -def unicorn_running? - if File.exists?(PID_PATH) && (pid = File.read(PID_PATH).chomp) && system("ps aux | grep #{pid} | grep -v grep > /dev/null") - pid - else - false - end -end - case ARGV[0] when "start" puts "Starting Unicorn #{APP_NAME}" @@ -63,8 +91,7 @@ when "status" when "restart" restart_unicorn when "clean-restart" - stop_unicorn - start_unicorn + clean_restart else puts "Usage: {start|stop|status|restart|clean-restart}" exit 1 From c160c16cd3c456cd25b1fefa4fbfe19f13c06b1f Mon Sep 17 00:00:00 2001 From: Jonathan Weiss Date: Mon, 25 Jul 2011 18:58:28 +0200 Subject: [PATCH 093/334] replace hardcoded monit restarts for nodejs with attributes --- deploy/attributes/deploy.rb | 1 + deploy/recipes/nodejs-rollback.rb | 9 +++++++-- deploy/recipes/nodejs-undeploy.rb | 8 ++++++-- 3 files changed, 14 insertions(+), 4 deletions(-) diff --git a/deploy/attributes/deploy.rb b/deploy/attributes/deploy.rb index 909eae4..54e7484 100644 --- a/deploy/attributes/deploy.rb +++ b/deploy/attributes/deploy.rb @@ -53,6 +53,7 @@ # nodejs default[:deploy][application][:nodejs][:restart_command] = "monit restart node_web_app_#{application}" + default[:deploy][application][:nodejs][:stop_command] = "monit stop node_web_app_#{application}" end default[:logrotate][:rotate] = 30 diff --git a/deploy/recipes/nodejs-rollback.rb b/deploy/recipes/nodejs-rollback.rb index 0e805db..ebe277b 100644 --- a/deploy/recipes/nodejs-rollback.rb +++ b/deploy/recipes/nodejs-rollback.rb @@ -14,7 +14,12 @@ end end - execute "restart node.js application #{application} via monit" do - command "monit restart node_web_app_#{application}" + ruby_block "restart node.js application #{application}" do + block do + Chef::Log.info("restart node.js via: #{node[:deploy][application][:nodejs][:restart_command]}") + Chef::Log.info(`#{node[:deploy][application][:nodejs][:restart_command]}`) + $? == 0 + end end + end diff --git a/deploy/recipes/nodejs-undeploy.rb b/deploy/recipes/nodejs-undeploy.rb index df0eb69..84a9670 100644 --- a/deploy/recipes/nodejs-undeploy.rb +++ b/deploy/recipes/nodejs-undeploy.rb @@ -6,8 +6,12 @@ next end - execute "stop node.js application #{application} via monit" do - command "monit stop node_web_app_#{application}" + ruby_block "stop node.js application #{application}" do + block do + Chef::Log.info("stop node.js via: #{node[:deploy][application][:nodejs][:stop_command]}") + Chef::Log.info(`#{node[:deploy][application][:nodejs][:stop_command]}`) + $? == 0 + end end file "/etc/monit/conf.d/node_web_app-#{application}.monitrc" do From 5f403c9405dcaa17c4d20637c98e1ea53400cafe Mon Sep 17 00:00:00 2001 From: Daniel Spangenberg Date: Tue, 26 Jul 2011 14:49:56 +0200 Subject: [PATCH 094/334] Added ability to change between ruby versions --- ruby/recipes/default.rb | 5 +++++ ruby_enterprise/recipes/default.rb | 5 +++++ 2 files changed, 10 insertions(+) diff --git a/ruby/recipes/default.rb b/ruby/recipes/default.rb index aa529fb..2c7aa86 100644 --- a/ruby/recipes/default.rb +++ b/ruby/recipes/default.rb @@ -24,6 +24,11 @@ action :create_if_missing end +package "ruby-enterprise" do + action :remove + ignore_failure true +end + execute "Install Ruby #{node[:ruby][:full_version]}" do cwd "/tmp" command "dpkg -i /tmp/#{node[:ruby][:deb]}" diff --git a/ruby_enterprise/recipes/default.rb b/ruby_enterprise/recipes/default.rb index 489081f..8aa6f60 100644 --- a/ruby_enterprise/recipes/default.rb +++ b/ruby_enterprise/recipes/default.rb @@ -26,6 +26,11 @@ not_if { ::File.exists?("/tmp/#{File.basename(node[:ruby_enterprise][:url][arch])}") } end +package "ruby1.9" do + action :remove + ignore_failure true +end + execute "Install Ruby Enterprise Edition" do cwd "/tmp" command "dpkg -i /tmp/#{File.basename(node[:ruby_enterprise][:url][arch])}" From 39a4777766833b72dee974c75395515a58104450 Mon Sep 17 00:00:00 2001 From: Daniel Spangenberg Date: Sat, 30 Jul 2011 22:41:52 +0200 Subject: [PATCH 095/334] Fixed undefined local variable or method `httpready\' --- unicorn/templates/default/unicorn.conf.erb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/unicorn/templates/default/unicorn.conf.erb b/unicorn/templates/default/unicorn.conf.erb index 1bc3ec7..e6552d6 100644 --- a/unicorn/templates/default/unicorn.conf.erb +++ b/unicorn/templates/default/unicorn.conf.erb @@ -4,7 +4,7 @@ user "<%= @deploy[:user]%>" working_directory "<%= @deploy[:deploy_to]%>/current" -listen "<%= @deploy[:deploy_to]%>/shared/sockets/unicorn.sock", :backlog => <%= node[:unicorn][:backlog] %>, :tcp_nodelay => <%= node[:unicorn][:tcp_nodelay] %>, :tcp_nopush => <%= node[:unicorn][:tcp_nopush] %>, :tries => <%= node[:unicorn][:tries] %>, :delay => <%= node[:unicorn][:delay] %>, :accept_filter => <%= node[:unicorn][:accept_filter] %> +listen "<%= @deploy[:deploy_to]%>/shared/sockets/unicorn.sock", :backlog => <%= node[:unicorn][:backlog] %>, :tcp_nodelay => <%= node[:unicorn][:tcp_nodelay] %>, :tcp_nopush => <%= node[:unicorn][:tcp_nopush] %>, :tries => <%= node[:unicorn][:tries] %>, :delay => <%= node[:unicorn][:delay] %>, :accept_filter => <%= node[:unicorn][:accept_filter].inspect %> timeout <%= node[:unicorn][:timeout] %> From 5f5c8c9c427bcf320e92bce39b45bb66d94a7295 Mon Sep 17 00:00:00 2001 From: Jonathan Weiss Date: Tue, 2 Aug 2011 12:50:47 +0200 Subject: [PATCH 096/334] keep no backup of TARGET_VERSION file --- agent_version/recipes/default.rb | 1 + 1 file changed, 1 insertion(+) diff --git a/agent_version/recipes/default.rb b/agent_version/recipes/default.rb index dbbc8f6..486f098 100644 --- a/agent_version/recipes/default.rb +++ b/agent_version/recipes/default.rb @@ -1,6 +1,7 @@ template '/root/scalarium-agent/TARGET_VERSION' do cookbook 'agent_version' source 'TARGET_VERSION.erb' + backup false owner 'root' group 'root' mode 0600 From 783ed4a4f46ba95c0b6102f068eb2ebd7c1a2a69 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Daniel=20Hu=CC=88sch?= Date: Wed, 3 Aug 2011 11:22:29 +0200 Subject: [PATCH 097/334] Ignore RubyMine directory. --- .gitignore | 1 + 1 file changed, 1 insertion(+) diff --git a/.gitignore b/.gitignore index 420ead9..c1b7682 100644 --- a/.gitignore +++ b/.gitignore @@ -4,3 +4,4 @@ */.DS_Store */*/.DS_Store .vagrant +.idea From 0211aecdc2f796847b60e096c605e721990f3586 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Daniel=20Hu=CC=88sch?= Date: Wed, 3 Aug 2011 12:02:52 +0200 Subject: [PATCH 098/334] Generate scalarium.php during deployment. --- deploy/definitions/scalarium_deploy.rb | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/deploy/definitions/scalarium_deploy.rb b/deploy/definitions/scalarium_deploy.rb index d5b162c..ab77629 100644 --- a/deploy/definitions/scalarium_deploy.rb +++ b/deploy/definitions/scalarium_deploy.rb @@ -89,6 +89,18 @@ group node[:deploy][application][:group] variables(:database => node[:deploy][application][:database], :environment => node[:deploy][application][:rails_env]) end.run_action(:create) + elsif deploy[:application_type] == 'php' + template "#{node[:deploy][application][:deploy_to]}/shared/config/scalarium.php" do + cookbook 'php' + source 'scalarium.php.erb' + mode '0660' + owner node[:deploy][application][:user] + group node[:deploy][application][:group] + variables(:database => node[:deploy][application][:database], :memcached => node[:deploy][application][:memcached], :roles => node[:scalarium][:roles]) + only_if do + File.exists?("#{node[:deploy][application][:deploy_to]}/shared/config") + end + end elsif deploy[:application_type] == 'nodejs' if deploy[:auto_npm_install_on_deploy] Scalarium::NodejsConfiguration.npm_install(application, node[:deploy][application], release_path) From 88d6534dfb4c6e3ac146783de48d6dd531b8c5b6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Daniel=20Hu=CC=88sch?= Date: Fri, 5 Aug 2011 16:42:06 +0200 Subject: [PATCH 099/334] Rework inclusion of app specific apache config snippets. --- apache2/definitions/web_app.rb | 20 +++---------------- .../templates/default/web_app.conf.erb | 8 ++------ .../templates/default/web_app.conf.erb | 8 ++------ 3 files changed, 7 insertions(+), 29 deletions(-) diff --git a/apache2/definitions/web_app.rb b/apache2/definitions/web_app.rb index 2bfd6d3..4da00ee 100644 --- a/apache2/definitions/web_app.rb +++ b/apache2/definitions/web_app.rb @@ -26,23 +26,9 @@ include_recipe "apache2::mod_deflate" include_recipe "apache2::mod_headers" - ruby_block 'Detect includes for vhost' do - inner_params = params - inner_application_name = application_name - inner_node = node - - block do - if File.exists?(local_config = "#{inner_node[:apache][:dir]}/sites-available/#{inner_application_name}.conf.d/local") - Chef::Log.info("local config for #{inner_application_name} detected") - inner_params[:local_config] = local_config - end - - if File.exists?(rewrite_config = "#{inner_node[:apache][:dir]}/sites-available/#{inner_application_name}.conf.d/rewrite") - Chef::Log.info("rewrite config for #{inner_application_name} detected") - inner_params[:rewrite_config] = rewrite_config - end - end - end + directory "#{node[:apache][:dir]}/sites-available/#{application_name}.conf.d" + params[:rewrite_config] = "#{node[:apache][:dir]}/sites-available/#{application_name}.conf.d/rewrite" + params[:local_config] = "#{node[:apache][:dir]}/sites-available/#{application_name}.conf.d/local" template "#{node[:apache][:dir]}/sites-available/#{application_name}.conf" do Chef::Log.debug("Generating Apache site template for #{application_name.inspect}") diff --git a/mod_php5_apache2/templates/default/web_app.conf.erb b/mod_php5_apache2/templates/default/web_app.conf.erb index ddfad84..a5eaff5 100644 --- a/mod_php5_apache2/templates/default/web_app.conf.erb +++ b/mod_php5_apache2/templates/default/web_app.conf.erb @@ -30,9 +30,7 @@ FileETag none RewriteEngine On - <% if @params[:rewrite_config] %> - Include <%= @params[:rewrite_config] %> - <% end %> + Include <%= @params[:rewrite_config] %>* RewriteLog <%= node[:apache][:log_dir] %>/<%= @application_name %>-rewrite.log RewriteLogLevel 0 @@ -40,9 +38,7 @@ AliasMatch ^<%= @params[:mounted_at] %>/(.*)$ <%= @params[:docroot] %>$1 <% end -%> - <% if @params[:local_config] %> - Include <%= @params[:local_config] %> - <% end %> + Include <%= @params[:local_config] %>* <% if node[:deploy][@application_name][:ssl_support] -%> diff --git a/passenger_apache2/templates/default/web_app.conf.erb b/passenger_apache2/templates/default/web_app.conf.erb index 2d8da71..a61acd5 100644 --- a/passenger_apache2/templates/default/web_app.conf.erb +++ b/passenger_apache2/templates/default/web_app.conf.erb @@ -38,9 +38,7 @@ FileETag none RewriteEngine On - <% if @params[:rewrite_config] %> - Include <%= @params[:rewrite_config] %> - <% end %> + Include <%= @params[:rewrite_config] %>* RewriteLog <%= node[:apache][:log_dir] %>/<%= @application_name %>-rewrite.log RewriteLogLevel 0 @@ -53,9 +51,7 @@ RewriteCond %{SCRIPT_FILENAME} !maintenance.html RewriteRule ^.*$ /system/maintenance.html [L] - <% if @params[:local_config] %> - Include <%= @params[:local_config] %> - <% end %> + Include <%= @params[:local_config] %>* <% if node[:deploy][@application_name][:ssl_support] -%> From 5c262c2c8396eef20cf457668f4006e6542f4f07 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Daniel=20Hu=CC=88sch?= Date: Fri, 5 Aug 2011 16:42:25 +0200 Subject: [PATCH 100/334] Include app specific apache config snippets for ssl vhosts. --- mod_php5_apache2/templates/default/web_app.conf.erb | 2 ++ passenger_apache2/templates/default/web_app.conf.erb | 2 ++ 2 files changed, 4 insertions(+) diff --git a/mod_php5_apache2/templates/default/web_app.conf.erb b/mod_php5_apache2/templates/default/web_app.conf.erb index a5eaff5..b6c2c93 100644 --- a/mod_php5_apache2/templates/default/web_app.conf.erb +++ b/mod_php5_apache2/templates/default/web_app.conf.erb @@ -83,6 +83,7 @@ FileETag none RewriteEngine On + Include <%= @params[:rewrite_config] %>-ssl* RewriteLog <%= node[:apache][:log_dir] %>/<%= @application_name %>-rewrite.log RewriteLogLevel 0 @@ -90,5 +91,6 @@ AliasMatch ^<%= @params[:mounted_at] %>/(.*)$ <%= @params[:docroot] %>$1 <% end -%> + Include <%= @params[:local_config] %>-ssl* <% end -%> diff --git a/passenger_apache2/templates/default/web_app.conf.erb b/passenger_apache2/templates/default/web_app.conf.erb index a61acd5..32b8e0f 100644 --- a/passenger_apache2/templates/default/web_app.conf.erb +++ b/passenger_apache2/templates/default/web_app.conf.erb @@ -104,6 +104,7 @@ FileETag none RewriteEngine On + Include <%= @params[:rewrite_config] %>-ssl* RewriteLog <%= node[:apache][:log_dir] %>/<%= @application_name %>-ssl-rewrite.log RewriteLogLevel 0 @@ -116,5 +117,6 @@ RewriteCond %{SCRIPT_FILENAME} !maintenance.html RewriteRule ^.*$ /system/maintenance.html [L] + Include <%= @params[:local_config] %>-ssl* <% end -%> From 212be1ff96a63b19932da48c7e2c25fa81d0540d Mon Sep 17 00:00:00 2001 From: Stefan Borsje Date: Sun, 7 Aug 2011 14:22:23 +0200 Subject: [PATCH 101/334] Disable STDERR of logtailer --- scalarium_ganglia/recipes/configure-client.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/scalarium_ganglia/recipes/configure-client.rb b/scalarium_ganglia/recipes/configure-client.rb index 5256770..a123ede 100644 --- a/scalarium_ganglia/recipes/configure-client.rb +++ b/scalarium_ganglia/recipes/configure-client.rb @@ -33,7 +33,7 @@ Dir.glob("#{node[:apache][:log_dir]}/*ganglia*.log").each do |ganglia_log| cron "Ganglia Apache Monitoring #{ganglia_log}" do minute "*/2" - command "/usr/sbin/ganglia-logtailer --classname ApacheLogtailer --log_file #{ganglia_log} --mode cron" + command "/usr/sbin/ganglia-logtailer --classname ApacheLogtailer --log_file #{ganglia_log} --mode cron > /dev/null 2>&1" end end end From 7ab2bcc0a02418c042a98b032b637f05ba89c1d5 Mon Sep 17 00:00:00 2001 From: Jonathan Weiss Date: Tue, 9 Aug 2011 06:00:22 +0200 Subject: [PATCH 102/334] fix maintenance mode --- passenger_apache2/templates/default/web_app.conf.erb | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/passenger_apache2/templates/default/web_app.conf.erb b/passenger_apache2/templates/default/web_app.conf.erb index 32b8e0f..9571356 100644 --- a/passenger_apache2/templates/default/web_app.conf.erb +++ b/passenger_apache2/templates/default/web_app.conf.erb @@ -47,10 +47,11 @@ #RewriteCond %{HTTP_HOST} !^$ #RewriteRule ^/(.*)$ http://<%= @params[:server_name] %>/$1 [L,R=301] + RewriteCond %{REQUEST_URI} !\.(css|gif|jpg|jpeg|png)$ RewriteCond %{DOCUMENT_ROOT}/system/maintenance.html -f RewriteCond %{SCRIPT_FILENAME} !maintenance.html RewriteRule ^.*$ /system/maintenance.html [L] - + Include <%= @params[:local_config] %>* @@ -113,6 +114,7 @@ #RewriteCond %{HTTP_HOST} !^$ #RewriteRule ^/(.*)$ http://<%= @params[:server_name] %>/$1 [L,R=301] + RewriteCond %{REQUEST_URI} !\.(css|gif|jpg|jpeg|png)$ RewriteCond %{DOCUMENT_ROOT}/system/maintenance.html -f RewriteCond %{SCRIPT_FILENAME} !maintenance.html RewriteRule ^.*$ /system/maintenance.html [L] From 68df9670a5e61c0be5c2e220610015d74eb1f7d0 Mon Sep 17 00:00:00 2001 From: Jonathan Weiss Date: Tue, 9 Aug 2011 06:00:33 +0200 Subject: [PATCH 103/334] log the bundle command --- rails/libraries/rails_configuration.rb | 1 + 1 file changed, 1 insertion(+) diff --git a/rails/libraries/rails_configuration.rb b/rails/libraries/rails_configuration.rb index 23a01ea..5b8848f 100644 --- a/rails/libraries/rails_configuration.rb +++ b/rails/libraries/rails_configuration.rb @@ -37,6 +37,7 @@ def self.determine_database_adapter(app_name, app_config, app_root_path, options def self.bundle(app_name, app_config, app_root_path) if File.exists?("#{app_root_path}/Gemfile") Chef::Log.info("Gemfile detected. Running bundle install.") + Chef::Log.info("sudo su deploy -c 'cd #{app_root_path} && bundle install #{app_config[:home]}/.bundler/#{app_name} --without=test development'") Chef::Log.info(`sudo su deploy -c 'cd #{app_root_path} && bundle install #{app_config[:home]}/.bundler/#{app_name} --without=test development'`) end end From dfa9c48c274916d8287e483d760f36e498676b7d Mon Sep 17 00:00:00 2001 From: Jonathan Weiss Date: Fri, 12 Aug 2011 15:49:41 +0200 Subject: [PATCH 104/334] display bundler errors --- rails/libraries/rails_configuration.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/rails/libraries/rails_configuration.rb b/rails/libraries/rails_configuration.rb index 5b8848f..c5d8357 100644 --- a/rails/libraries/rails_configuration.rb +++ b/rails/libraries/rails_configuration.rb @@ -38,7 +38,7 @@ def self.bundle(app_name, app_config, app_root_path) if File.exists?("#{app_root_path}/Gemfile") Chef::Log.info("Gemfile detected. Running bundle install.") Chef::Log.info("sudo su deploy -c 'cd #{app_root_path} && bundle install #{app_config[:home]}/.bundler/#{app_name} --without=test development'") - Chef::Log.info(`sudo su deploy -c 'cd #{app_root_path} && bundle install #{app_config[:home]}/.bundler/#{app_name} --without=test development'`) + Chef::Log.info(`sudo su deploy -c 'cd #{app_root_path} && bundle install #{app_config[:home]}/.bundler/#{app_name} --without=test development 2>&1'`) end end end From 96357f2985b019aefed43f29f8ffab76daa14ca6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Daniel=20Hu=CC=88sch?= Date: Wed, 17 Aug 2011 11:38:57 +0200 Subject: [PATCH 105/334] Update Rubygems and Bundler when deploying. --- deploy/definitions/scalarium_rails.rb | 2 ++ 1 file changed, 2 insertions(+) diff --git a/deploy/definitions/scalarium_rails.rb b/deploy/definitions/scalarium_rails.rb index 2107cc9..2fcbef2 100644 --- a/deploy/definitions/scalarium_rails.rb +++ b/deploy/definitions/scalarium_rails.rb @@ -3,6 +3,8 @@ application = params[:app] include_recipe deploy[:stack][:recipe] + include_recipe 'scalarium_rubygems' + include_recipe 'scalarium_bundler' # write out memcached.yml template "#{deploy[:deploy_to]}/shared/config/memcached.yml" do From e71411a236b15261763859271644d74e3798bf7b Mon Sep 17 00:00:00 2001 From: Jonathan Weiss Date: Wed, 17 Aug 2011 12:18:51 +0200 Subject: [PATCH 106/334] remove not needed attribute default --- ruby/attributes/ruby.rb | 1 - 1 file changed, 1 deletion(-) diff --git a/ruby/attributes/ruby.rb b/ruby/attributes/ruby.rb index caae5fc..b2951f5 100644 --- a/ruby/attributes/ruby.rb +++ b/ruby/attributes/ruby.rb @@ -1,4 +1,3 @@ -default[:ruby] = {} default[:ruby][:major_version] = '1.9' default[:ruby][:full_version] = '1.9.2' default[:ruby][:patch] = 'p180' From 85ca6274f3add30ed572124a555334a1d797ce86 Mon Sep 17 00:00:00 2001 From: Jonathan Weiss Date: Wed, 17 Aug 2011 12:25:59 +0200 Subject: [PATCH 107/334] Revert "Update Rubygems and Bundler when deploying." This reverts commit 96357f2985b019aefed43f29f8ffab76daa14ca6. --- deploy/definitions/scalarium_rails.rb | 2 -- 1 file changed, 2 deletions(-) diff --git a/deploy/definitions/scalarium_rails.rb b/deploy/definitions/scalarium_rails.rb index 2fcbef2..2107cc9 100644 --- a/deploy/definitions/scalarium_rails.rb +++ b/deploy/definitions/scalarium_rails.rb @@ -3,8 +3,6 @@ application = params[:app] include_recipe deploy[:stack][:recipe] - include_recipe 'scalarium_rubygems' - include_recipe 'scalarium_bundler' # write out memcached.yml template "#{deploy[:deploy_to]}/shared/config/memcached.yml" do From 231d161ef720378e3f7ce8d90c83d056a03f5b1f Mon Sep 17 00:00:00 2001 From: Jonathan Weiss Date: Wed, 17 Aug 2011 12:37:55 +0200 Subject: [PATCH 108/334] include dependencies in deploy::default so that packages, gems, Rubygems, and Bundler are always there in the correct version during a deployment --- deploy/recipes/default.rb | 2 ++ 1 file changed, 2 insertions(+) diff --git a/deploy/recipes/default.rb b/deploy/recipes/default.rb index fff8453..503cc70 100644 --- a/deploy/recipes/default.rb +++ b/deploy/recipes/default.rb @@ -1,3 +1,5 @@ +include_recipes 'dependencies' + node[:deploy].each do |application, deploy| scalarium_deploy_user do From 3356f85d768948fbf7ee3832878c7f6ed18b483a Mon Sep 17 00:00:00 2001 From: Jonathan Weiss Date: Wed, 17 Aug 2011 13:30:08 +0200 Subject: [PATCH 109/334] fix typo --- deploy/recipes/default.rb | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/deploy/recipes/default.rb b/deploy/recipes/default.rb index 503cc70..10dcc50 100644 --- a/deploy/recipes/default.rb +++ b/deploy/recipes/default.rb @@ -1,4 +1,4 @@ -include_recipes 'dependencies' +include_recipe 'dependencies' node[:deploy].each do |application, deploy| @@ -6,4 +6,4 @@ deploy_data deploy end -end \ No newline at end of file +end From efdee4f393783ca086064915cecbdf74fc0f7f76 Mon Sep 17 00:00:00 2001 From: Jonathan Weiss Date: Thu, 18 Aug 2011 14:59:13 +0200 Subject: [PATCH 110/334] increase default MySQL max_connections to 2048 --- mysql/attributes/server.rb | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/mysql/attributes/server.rb b/mysql/attributes/server.rb index bc35892..0a092bf 100644 --- a/mysql/attributes/server.rb +++ b/mysql/attributes/server.rb @@ -40,7 +40,7 @@ default[:mysql][:tunable][:thread_stack] = "192K" default[:mysql][:tunable][:thread_cache_size] = "8" default[:mysql][:tunable][:key_buffer] = "250M" -default[:mysql][:tunable][:max_connections] = "1024" +default[:mysql][:tunable][:max_connections] = "2048" default[:mysql][:tunable][:wait_timeout] = "180" default[:mysql][:tunable][:net_read_timeout] = "30" default[:mysql][:tunable][:net_write_timeout] = "30" @@ -62,4 +62,4 @@ else default[:percona][:version] = '5.1.57-12.8' end -default[:percona][:url_base] = "http://peritor-assets.s3.amazonaws.com/percona" \ No newline at end of file +default[:percona][:url_base] = "http://peritor-assets.s3.amazonaws.com/percona" From 006ab12ec3b112caa113d5ce308532e227f1e737 Mon Sep 17 00:00:00 2001 From: Jonathan Weiss Date: Thu, 18 Aug 2011 15:29:34 +0200 Subject: [PATCH 111/334] increase default MySQL table cache --- mysql/attributes/server.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mysql/attributes/server.rb b/mysql/attributes/server.rb index 0a092bf..1b8cefb 100644 --- a/mysql/attributes/server.rb +++ b/mysql/attributes/server.rb @@ -45,7 +45,7 @@ default[:mysql][:tunable][:net_read_timeout] = "30" default[:mysql][:tunable][:net_write_timeout] = "30" default[:mysql][:tunable][:back_log] = "128" -default[:mysql][:tunable][:table_cache] = "1024" +default[:mysql][:tunable][:table_cache] = "2048" default[:mysql][:tunable][:max_heap_table_size] = "32M" default[:mysql][:clients] = [] From 8c246fe9dece98b614e28cb448fa6de16220db3f Mon Sep 17 00:00:00 2001 From: Stefan Borsje Date: Sat, 20 Aug 2011 13:14:39 +0200 Subject: [PATCH 112/334] Restart Unicorn using a USR2 signal to enable zero downtime deploys. --- unicorn/attributes/default.rb | 2 +- unicorn/templates/default/unicorn.conf.erb | 17 +++++++++++++++++ unicorn/templates/default/unicorn.service.erb | 2 +- 3 files changed, 19 insertions(+), 2 deletions(-) diff --git a/unicorn/attributes/default.rb b/unicorn/attributes/default.rb index 2dc9a88..7714b89 100644 --- a/unicorn/attributes/default.rb +++ b/unicorn/attributes/default.rb @@ -1,7 +1,7 @@ default[:unicorn][:worker_processes] = node[:rails][:max_pool_size] ? node[:rails][:max_pool_size] : 4 default[:unicorn][:backlog] = 1024 default[:unicorn][:timeout] = 60 -default[:unicorn][:preload_app] = false +default[:unicorn][:preload_app] = true default[:unicorn][:version] = '4.0.1' default[:unicorn][:tcp_nodelay] = true default[:unicorn][:tcp_nopush] = false diff --git a/unicorn/templates/default/unicorn.conf.erb b/unicorn/templates/default/unicorn.conf.erb index e6552d6..3b8ba26 100644 --- a/unicorn/templates/default/unicorn.conf.erb +++ b/unicorn/templates/default/unicorn.conf.erb @@ -18,12 +18,29 @@ stdout_path "<%= @deploy[:deploy_to]%>/shared/log/unicorn.stdout.log" preload_app <%= node[:unicorn][:preload_app] %> GC.copy_on_write_friendly = true if GC.respond_to?(:copy_on_write_friendly=) +# ensure Unicorn doesn't use a stale Gemfile when restarting +# more info: https://willj.net/2011/08/02/fixing-the-gemfile-not-found-bundlergemfilenotfound-error/ +before_exec do |server| + ENV['BUNDLE_GEMFILE'] = "<%= @deploy[:deploy_to]%>/current/Gemfile" +end + before_fork do |server, worker| # the following is highly recomended for Rails + "preload_app true" # as there's no need for the master process to hold a connection if defined?(ActiveRecord::Base) ActiveRecord::Base.connection.disconnect! end + + # Before forking, kill the master process that belongs to the .oldbin PID. + # This enables 0 downtime deploys. + old_pid = "<%= @deploy[:deploy_to]%>/shared/pids/unicorn.pid.oldbin" + if File.exists?(old_pid) && server.pid != old_pid + begin + Process.kill("QUIT", File.read(old_pid).to_i) + rescue Errno::ENOENT, Errno::ESRCH + # someone else did our job for us + end + end end after_fork do |server, worker| diff --git a/unicorn/templates/default/unicorn.service.erb b/unicorn/templates/default/unicorn.service.erb index 42777ff..6c24905 100644 --- a/unicorn/templates/default/unicorn.service.erb +++ b/unicorn/templates/default/unicorn.service.erb @@ -52,7 +52,7 @@ end def restart_unicorn if unicorn_running? - run_and_print_command "kill -HUP `cat #{PID_PATH}`" + run_and_print_command "kill -USR2 `cat #{PID_PATH}`" else start_unicorn end From 8a12f17dcbbb8d615c2badc74ae84578afcffc08 Mon Sep 17 00:00:00 2001 From: Jonathan Weiss Date: Mon, 22 Aug 2011 12:27:08 +0200 Subject: [PATCH 113/334] fix cookbook of template --- passenger_apache2/definitions/passenger_web_app.rb | 3 +++ 1 file changed, 3 insertions(+) diff --git a/passenger_apache2/definitions/passenger_web_app.rb b/passenger_apache2/definitions/passenger_web_app.rb index fe34a66..dcf9ec3 100644 --- a/passenger_apache2/definitions/passenger_web_app.rb +++ b/passenger_apache2/definitions/passenger_web_app.rb @@ -17,6 +17,7 @@ end template "/etc/apache2/ssl/#{deploy[:domains].first}.crt" do + cookbook 'passenger_apache2' mode '0600' source "ssl.key.erb" variables :key => deploy[:ssl_certificate] @@ -26,6 +27,7 @@ end template "/etc/apache2/ssl/#{deploy[:domains].first}.key" do + cookbook 'passenger_apache2' mode '0600' source "ssl.key.erb" variables :key => deploy[:ssl_certificate_key] @@ -35,6 +37,7 @@ end template "/etc/apache2/ssl/#{deploy[:domains].first}.ca" do + cookbook 'passenger_apache2' mode '0600' source "ssl.key.erb" variables :key => deploy[:ssl_certificate_ca] From 62201d5e6c62ba82491dbb2f04ea23af8740c308 Mon Sep 17 00:00:00 2001 From: Jonathan Weiss Date: Mon, 22 Aug 2011 15:55:14 +0200 Subject: [PATCH 114/334] fix Nginx webapp --- deploy/recipes/web.rb | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/deploy/recipes/web.rb b/deploy/recipes/web.rb index 2b0b4e8..ec19d65 100644 --- a/deploy/recipes/web.rb +++ b/deploy/recipes/web.rb @@ -17,5 +17,7 @@ deploy_data deploy end - nginx_web_app application + nginx_web_app application do + application deploy + end end From a01f0490b84be2ee4fce4c21e9abb2252715dfe1 Mon Sep 17 00:00:00 2001 From: Jonathan Weiss Date: Mon, 22 Aug 2011 16:34:15 +0200 Subject: [PATCH 115/334] fix cookbook template --- deploy/recipes/web.rb | 1 + nginx/definitions/nginx_site.rb | 1 + 2 files changed, 2 insertions(+) diff --git a/deploy/recipes/web.rb b/deploy/recipes/web.rb index ec19d65..06a139e 100644 --- a/deploy/recipes/web.rb +++ b/deploy/recipes/web.rb @@ -19,5 +19,6 @@ nginx_web_app application do application deploy + cookbook "nginx" end end diff --git a/nginx/definitions/nginx_site.rb b/nginx/definitions/nginx_site.rb index 93d19a8..019a5aa 100644 --- a/nginx/definitions/nginx_site.rb +++ b/nginx/definitions/nginx_site.rb @@ -7,5 +7,6 @@ nginx_web_app do application application application_name application_name + cookbook "nginx" end end From e7d9c5e4197a5e4324bfce5c52fb8c275aed1b24 Mon Sep 17 00:00:00 2001 From: Jonathan Weiss Date: Mon, 22 Aug 2011 16:52:33 +0200 Subject: [PATCH 116/334] allow all MySQL hosts --- deploy/recipes/mysql.rb | 17 ++--------------- mysql/templates/default/grants.sql.erb | 10 +--------- 2 files changed, 3 insertions(+), 24 deletions(-) diff --git a/deploy/recipes/mysql.rb b/deploy/recipes/mysql.rb index 3617d13..360547e 100644 --- a/deploy/recipes/mysql.rb +++ b/deploy/recipes/mysql.rb @@ -11,26 +11,13 @@ system("#{mysql_command} -e 'SHOW DATABASES' | egrep -e '^#{deploy[:database][:database]}$'") end end - - ruby_block "get hosts list" do - block do - if Chef::VERSION > "0.9" - template = run_context.resource_collection.find(:template => "/tmp/grants.sql") - else - # this is a bug, and should just be 'resources' - template = @collection.resources(:template => "/tmp/grants.sql") - end - status, stdout, stderr = Chef::Mixin::Command.output_of_command("echo 'select host from db where db=\"#{deploy[:database][:database]}\" and user =\"root\"' | #{mysql_command} --skip-column-names mysql", {}) - template.variables[:hosts] = stdout.split("\n").delete_if{|host| host == '127.0.0.1' || host == 'localhost'} - end - end - + template "/tmp/grants.sql" do source 'grants.sql.erb' owner 'root' group 'root' mode '0600' - variables :hosts => [], :settings => deploy[:database], :cluster_clients => node[:mysql][:clients].select{|private_ip| Resolv.getaddress(private_ip) } + variables :hosts => [], :settings => deploy[:database] cookbook "mysql" action :create end diff --git a/mysql/templates/default/grants.sql.erb b/mysql/templates/default/grants.sql.erb index 1b939cd..160e78c 100644 --- a/mysql/templates/default/grants.sql.erb +++ b/mysql/templates/default/grants.sql.erb @@ -1,9 +1 @@ -<% @cluster_clients = @cluster_clients.map{|client| Resolv.getaddress(client) } %> -<% (@cluster_clients - @hosts).each do |client| -%> - grant all privileges on <%= @settings[:database] %>.* to root@'<%= client %>' identified by '<%= node[:mysql][:server_root_password] %>'; -<% end -%> -<%# Remove non-existing servers -%> -<% (@hosts - @cluster_clients).each do |client| -%> - <% next if client == '%' -%> - revoke all privileges on <%= @settings[:database] %>.* from root@'<%= client %>'; -<% end -%> \ No newline at end of file +grant all privileges on <%= @settings[:database] %>.* to root@`%` identified by '<%= node[:mysql][:server_root_password] %>'; \ No newline at end of file From b152bf87fd9953c5a72eb9678d85a57245cdd338 Mon Sep 17 00:00:00 2001 From: Jonathan Weiss Date: Tue, 23 Aug 2011 12:29:48 +0200 Subject: [PATCH 117/334] Revert "allow all MySQL hosts" This reverts commit e7d9c5e4197a5e4324bfce5c52fb8c275aed1b24. --- deploy/recipes/mysql.rb | 17 +++++++++++++++-- mysql/templates/default/grants.sql.erb | 10 +++++++++- 2 files changed, 24 insertions(+), 3 deletions(-) diff --git a/deploy/recipes/mysql.rb b/deploy/recipes/mysql.rb index 360547e..3617d13 100644 --- a/deploy/recipes/mysql.rb +++ b/deploy/recipes/mysql.rb @@ -11,13 +11,26 @@ system("#{mysql_command} -e 'SHOW DATABASES' | egrep -e '^#{deploy[:database][:database]}$'") end end - + + ruby_block "get hosts list" do + block do + if Chef::VERSION > "0.9" + template = run_context.resource_collection.find(:template => "/tmp/grants.sql") + else + # this is a bug, and should just be 'resources' + template = @collection.resources(:template => "/tmp/grants.sql") + end + status, stdout, stderr = Chef::Mixin::Command.output_of_command("echo 'select host from db where db=\"#{deploy[:database][:database]}\" and user =\"root\"' | #{mysql_command} --skip-column-names mysql", {}) + template.variables[:hosts] = stdout.split("\n").delete_if{|host| host == '127.0.0.1' || host == 'localhost'} + end + end + template "/tmp/grants.sql" do source 'grants.sql.erb' owner 'root' group 'root' mode '0600' - variables :hosts => [], :settings => deploy[:database] + variables :hosts => [], :settings => deploy[:database], :cluster_clients => node[:mysql][:clients].select{|private_ip| Resolv.getaddress(private_ip) } cookbook "mysql" action :create end diff --git a/mysql/templates/default/grants.sql.erb b/mysql/templates/default/grants.sql.erb index 160e78c..1b939cd 100644 --- a/mysql/templates/default/grants.sql.erb +++ b/mysql/templates/default/grants.sql.erb @@ -1 +1,9 @@ -grant all privileges on <%= @settings[:database] %>.* to root@`%` identified by '<%= node[:mysql][:server_root_password] %>'; \ No newline at end of file +<% @cluster_clients = @cluster_clients.map{|client| Resolv.getaddress(client) } %> +<% (@cluster_clients - @hosts).each do |client| -%> + grant all privileges on <%= @settings[:database] %>.* to root@'<%= client %>' identified by '<%= node[:mysql][:server_root_password] %>'; +<% end -%> +<%# Remove non-existing servers -%> +<% (@hosts - @cluster_clients).each do |client| -%> + <% next if client == '%' -%> + revoke all privileges on <%= @settings[:database] %>.* from root@'<%= client %>'; +<% end -%> \ No newline at end of file From fe1f01e118ab08596615ab72648baee7912ceccb Mon Sep 17 00:00:00 2001 From: Jonathan Weiss Date: Tue, 23 Aug 2011 12:30:23 +0200 Subject: [PATCH 118/334] use the simpler grants again --- mysql/templates/default/grants.sql.erb | 10 +--------- 1 file changed, 1 insertion(+), 9 deletions(-) diff --git a/mysql/templates/default/grants.sql.erb b/mysql/templates/default/grants.sql.erb index 1b939cd..5c4e55c 100644 --- a/mysql/templates/default/grants.sql.erb +++ b/mysql/templates/default/grants.sql.erb @@ -1,9 +1 @@ -<% @cluster_clients = @cluster_clients.map{|client| Resolv.getaddress(client) } %> -<% (@cluster_clients - @hosts).each do |client| -%> - grant all privileges on <%= @settings[:database] %>.* to root@'<%= client %>' identified by '<%= node[:mysql][:server_root_password] %>'; -<% end -%> -<%# Remove non-existing servers -%> -<% (@hosts - @cluster_clients).each do |client| -%> - <% next if client == '%' -%> - revoke all privileges on <%= @settings[:database] %>.* from root@'<%= client %>'; -<% end -%> \ No newline at end of file +grant all privileges on <%= @settings[:database] %>.* to root@`%` identified by '<%= node[:mysql][:server_root_password] %>'; From 11172f8d2ee62653a5f71f834a9ac47732d8fad9 Mon Sep 17 00:00:00 2001 From: Jonathan Weiss Date: Tue, 23 Aug 2011 12:31:03 +0200 Subject: [PATCH 119/334] add comment about legacy support for the grants template --- deploy/recipes/mysql.rb | 15 ++++++++------- 1 file changed, 8 insertions(+), 7 deletions(-) diff --git a/deploy/recipes/mysql.rb b/deploy/recipes/mysql.rb index 3617d13..f865e52 100644 --- a/deploy/recipes/mysql.rb +++ b/deploy/recipes/mysql.rb @@ -1,19 +1,20 @@ require 'resolv' - + node[:deploy].each do |application, deploy| mysql_command = "/usr/bin/mysql -u #{deploy[:database][:username]} #{node[:mysql][:server_root_password].blank? ? '' : "-p#{node[:mysql][:server_root_password]}"}" - + execute "create mysql database" do command "#{mysql_command} -e 'CREATE DATABASE \'#{deploy[:database][:database]}\'' " action :run - + not_if do system("#{mysql_command} -e 'SHOW DATABASES' | egrep -e '^#{deploy[:database][:database]}$'") end end - + + # this is legacy and you should not rely on it ruby_block "get hosts list" do - block do + block do if Chef::VERSION > "0.9" template = run_context.resource_collection.find(:template => "/tmp/grants.sql") else @@ -24,7 +25,7 @@ template.variables[:hosts] = stdout.split("\n").delete_if{|host| host == '127.0.0.1' || host == 'localhost'} end end - + template "/tmp/grants.sql" do source 'grants.sql.erb' owner 'root' @@ -34,7 +35,7 @@ cookbook "mysql" action :create end - + execute 'create grants' do command "#{mysql_command} < /tmp/grants.sql" end From eb75ded46380495822cb22d04de0563e62039627 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Daniel=20Hu=CC=88sch?= Date: Fri, 26 Aug 2011 16:36:10 +0200 Subject: [PATCH 120/334] Ignore exit code when starting or stopping unicorn. --- unicorn/templates/default/unicorn.service.erb | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) diff --git a/unicorn/templates/default/unicorn.service.erb b/unicorn/templates/default/unicorn.service.erb index 6c24905..2912c0d 100644 --- a/unicorn/templates/default/unicorn.service.erb +++ b/unicorn/templates/default/unicorn.service.erb @@ -11,6 +11,11 @@ def run_and_print_command(command) system(command) || exit(1) end +def run_and_ignore_exitcode_and_print_command(command) + puts command + system(command) +end + def unicorn_running? if File.exists?(PID_PATH) && (pid = File.read(PID_PATH).chomp) && system("ps aux | grep #{pid} | grep -v grep > /dev/null") pid @@ -33,16 +38,16 @@ end def start_unicorn if File.exists?("#{ROOT_PATH}/current/Gemfile") puts "Scalarium: Gemfile detected - running Unicorn with bundle exec" - run_and_print_command "cd #{ROOT_PATH}/current && /usr/local/bin/bundle exec unicorn_rails --env <%= @deploy[:rails_env] %> --daemonize -c #{ROOT_PATH}/shared/config/unicorn.conf" + run_and_ignore_exitcode_and_print_command "cd #{ROOT_PATH}/current && /usr/local/bin/bundle exec unicorn_rails --env <%= @deploy[:rails_env] %> --daemonize -c #{ROOT_PATH}/shared/config/unicorn.conf" else puts "Scalarium: no Gemfile detected - running plain Unicorn" - run_and_print_command "cd #{ROOT_PATH}/current && unicorn_rails --env <%= @deploy[:rails_env] %> --daemonize -c #{ROOT_PATH}/shared/config/unicorn.conf" + run_and_ignore_exitcode_and_print_command "cd #{ROOT_PATH}/current && unicorn_rails --env <%= @deploy[:rails_env] %> --daemonize -c #{ROOT_PATH}/shared/config/unicorn.conf" end end def stop_unicorn if unicorn_running? - if run_and_print_command "kill -QUIT `cat #{PID_PATH}`" + if run_and_ignore_exitcode_and_print_command "kill -QUIT `cat #{PID_PATH}`" `rm #{PID_PATH}` end else @@ -52,7 +57,7 @@ end def restart_unicorn if unicorn_running? - run_and_print_command "kill -USR2 `cat #{PID_PATH}`" + run_and_ignore_exitcode_and_print_command "kill -USR2 `cat #{PID_PATH}`" else start_unicorn end From 9fb8d9f8c8e81f43f57c76ac50f6c8d76ebb26a5 Mon Sep 17 00:00:00 2001 From: Stefan Borsje Date: Sun, 28 Aug 2011 15:25:00 +0200 Subject: [PATCH 121/334] Added X-Forwarded-Proto header to nginx config. --- unicorn/templates/default/nginx_unicorn_web_app.erb | 1 + 1 file changed, 1 insertion(+) diff --git a/unicorn/templates/default/nginx_unicorn_web_app.erb b/unicorn/templates/default/nginx_unicorn_web_app.erb index 8a13a39..6543ed2 100644 --- a/unicorn/templates/default/nginx_unicorn_web_app.erb +++ b/unicorn/templates/default/nginx_unicorn_web_app.erb @@ -48,6 +48,7 @@ server { root <%= @application[:absolute_document_root] %>; location / { + proxy_set_header X-Forwarded-Proto https; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header Host $http_host; proxy_redirect off; From 25f080f3ce7b1b9be245bf1b0bcd2abec6d29662 Mon Sep 17 00:00:00 2001 From: Jonathan Weiss Date: Thu, 8 Sep 2011 18:44:42 +0200 Subject: [PATCH 122/334] re-introduct the fix for mounted_at Rails apps --- deploy/definitions/scalarium_rails.rb | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/deploy/definitions/scalarium_rails.rb b/deploy/definitions/scalarium_rails.rb index 3020f90..c5eca42 100644 --- a/deploy/definitions/scalarium_rails.rb +++ b/deploy/definitions/scalarium_rails.rb @@ -14,4 +14,12 @@ variables(:memcached => (deploy[:memcached] || {}), :environment => deploy[:rails_env]) end + execute "symlinking subdir mount if necessary" do + command "rm -f /var/www/#{deploy[:mounted_at]}; ln -s #{deploy[:deploy_to]}/current/public /var/www/#{deploy[:mounted_at]}" + action :run + only_if do + deploy[:mounted_at] && File.exists?("/var/www") + end + end + end From 12fee1c207e90da91b4c15e38833c738c290a047 Mon Sep 17 00:00:00 2001 From: Jonathan Weiss Date: Fri, 9 Sep 2011 17:35:36 +0200 Subject: [PATCH 123/334] better Nginx gzip configuration --- nginx/attributes/nginx.rb | 23 +++++++++++++---------- nginx/templates/default/nginx.conf.erb | 3 +++ 2 files changed, 16 insertions(+), 10 deletions(-) diff --git a/nginx/attributes/nginx.rb b/nginx/attributes/nginx.rb index d219eff..4fd3456 100644 --- a/nginx/attributes/nginx.rb +++ b/nginx/attributes/nginx.rb @@ -13,15 +13,18 @@ nginx[:binary] = "/usr/sbin/nginx" end -nginx[:gzip] = "on" unless attribute?("nginx_gzip") -nginx[:gzip_http_version] = "1.0" unless attribute?("nginx_gzip_http_version") -nginx[:gzip_comp_level] = "2" unless attribute?("nginx_gzip_comp_level") -nginx[:gzip_proxied] = "any" unless attribute?("nginx_gzip_proxied") -nginx[:gzip_types] = [ "text/plain", "text/html", "text/css", "application/x-javascript", "text/xml", "application/xml", "application/xml+rss", "text/javascript" ] unless attribute?("nginx_gzip_types") +default[:nginx][:gzip] = "on" +default[:nginx][:gzip_static] = "on" +default[:nginx][:gzip_vary] = "on" +default[:nginx][:gzip_disable] = "MSIE [1-6].(?!.*SV1)" +default[:nginx][:gzip_http_version] = "1.0" +default[:nginx][:gzip_comp_level] = "2" +default[:nginx][:gzip_proxied] = "any" +default[:nginx][:gzip_types] = [ "text/plain", "text/html", "text/css", "application/x-javascript", "text/xml", "application/xml", "application/xml+rss", "text/javascript" ] -nginx[:keepalive] = "on" unless attribute?("nginx_keepalive") -nginx[:keepalive_timeout] = 65 unless attribute?("nginx_keepalive_timeout") +default[:nginx][:keepalive] = "on" +default[:nginx][:keepalive_timeout] = 65 -nginx[:worker_processes] = 10 unless attribute?("nginx_worker_processes") -nginx[:worker_connections] = 1024 unless attribute?("nginx_worker_connections") -nginx[:server_names_hash_bucket_size] = 64 unless attribute?("nginx_server_names_hash_bucket_size") +default[:nginx][:worker_processes] = 10 +default[:nginx][:worker_connections] = 1024 +default[:nginx][:server_names_hash_bucket_size] = 64 diff --git a/nginx/templates/default/nginx.conf.erb b/nginx/templates/default/nginx.conf.erb index 736e9eb..9a2d4db 100644 --- a/nginx/templates/default/nginx.conf.erb +++ b/nginx/templates/default/nginx.conf.erb @@ -23,11 +23,14 @@ http { <% end %> gzip <%= node[:nginx][:gzip] %>; + gzip_static <%= node[:nginx][:gzip_static] %>; <% if node[:nginx][:gzip] == "on" %> gzip_http_version <%= node[:nginx][:gzip_http_version] %>; gzip_comp_level <%= node[:nginx][:gzip_comp_level] %>; gzip_proxied <%= node[:nginx][:gzip_proxied] %>; gzip_types <%= node[:nginx][:gzip_types].join(' ') %>; + gzip_vary <%= node[:nginx][:gzip_vary] %>; + gzip_disable "<%= node[:nginx][:gzip_disable] %>"; <% end %> server_names_hash_bucket_size <%= node[:nginx][:server_names_hash_bucket_size] %>; From 9aecb0f9018454b4f991adf4fd8b3adf6dee3979 Mon Sep 17 00:00:00 2001 From: Thomas Metschke Date: Wed, 29 Jun 2011 17:37:31 +0200 Subject: [PATCH 124/334] try to install the new ganglia UI via github and automated makefile --- scalarium_ganglia/attributes/default.rb | 12 +++- scalarium_ganglia/metadata.rb | 3 +- scalarium_ganglia/recipes/server-gweb2.rb | 13 ++++ .../templates/default/Makefile.erb | 65 +++++++++++++++++++ .../templates/default/ganglia.index.html.erb | 7 +- 5 files changed, 96 insertions(+), 4 deletions(-) create mode 100644 scalarium_ganglia/recipes/server-gweb2.rb create mode 100644 scalarium_ganglia/templates/default/Makefile.erb diff --git a/scalarium_ganglia/attributes/default.rb b/scalarium_ganglia/attributes/default.rb index 433f30d..ef021cf 100644 --- a/scalarium_ganglia/attributes/default.rb +++ b/scalarium_ganglia/attributes/default.rb @@ -19,4 +19,14 @@ default[:ganglia][:web][:password] = pw -default[:ganglia][:nginx][:status_url] = '/nginx_status' \ No newline at end of file +default[:ganglia][:nginx][:status_url] = '/nginx_status' + +# gweb2 config +default[:ganglia][:gweb2][:url] = '/ganglia2' +default[:ganglia][:gweb2][:destdir] = '/var/www/ganglia2' +default[:ganglia][:gweb2][:apache_user] = 'www-data' +default[:ganglia][:gweb2][:major_version] = 2 +default[:ganglia][:gweb2][:minor_version] = 1 +default[:ganglia][:gweb2][:micro_version] = 2 +default[:ganglia][:gweb2][:svn] = 'no' + diff --git a/scalarium_ganglia/metadata.rb b/scalarium_ganglia/metadata.rb index e108fad..a28cb8a 100644 --- a/scalarium_ganglia/metadata.rb +++ b/scalarium_ganglia/metadata.rb @@ -1,7 +1,7 @@ maintainer "Peritor GmbH" maintainer_email "scalarium@peritor.com" description "Installs Ganglia Server & Client" -version "0.1" +version "0.2" supports "ubuntu" recipe "scalarium_ganglia::server", "Ganglia server" @@ -14,3 +14,4 @@ recipe "scalarium_ganglia::monitor-fd-and-sockets", "Monitor File Descriptors and Sockets" recipe "scalarium_ganglia::monitor-disk", "Monitor Disk Stats" recipe "scalarium_ganglia::monitor-apache", "Monitor Apache Stats" + diff --git a/scalarium_ganglia/recipes/server-gweb2.rb b/scalarium_ganglia/recipes/server-gweb2.rb new file mode 100644 index 0000000..33f7865 --- /dev/null +++ b/scalarium_ganglia/recipes/server-gweb2.rb @@ -0,0 +1,13 @@ +execute "Get newest version of ganglia web interface from github" do + command "cd tmp && git clone git://github.com/vvuksan/ganglia-misc.git" +end + +template "/tmp/ganglia-misc/ganglia-web/Makefile" do + source "Makefile.erb" + mode '0644' +end + +execute "Execute make install" do + command "make install" +end + diff --git a/scalarium_ganglia/templates/default/Makefile.erb b/scalarium_ganglia/templates/default/Makefile.erb new file mode 100644 index 0000000..e610470 --- /dev/null +++ b/scalarium_ganglia/templates/default/Makefile.erb @@ -0,0 +1,65 @@ +# Location where gweb should be installed to +DESTDIR = <%= node[:ganglia][:gweb2][:destdir] %> + +APACHE_USER = <%= node[:ganglia][:gweb2][:apache_user] %> + +# Gweb version +GWEB_MAJOR_VERSION = <%= node[:ganglia][:gweb2][:major_version] %> +GWEB_MINOR_VERSION = <%= node[:ganglia][:gweb2][:minor_version] %> +GWEB_MICRO_VERSION = <%= node[:ganglia][:gweb2][:micro_version] %> + +# When set to "yes", GWEB_VERSION will include SVN revision +SNAPSHOT = <%= node[:ganglia][:gweb2][:svn] %> + +# Gweb statedir (where RRD files, Dwoo templates are stored) +GWEB_STATEDIR = /var/lib +GANGLIA_STATEDIR = $(GWEB_STATEDIR)/ganglia + +# Dwoo compile directory +GWEB_DWOO = $(GANGLIA_STATEDIR)/dwoo + +ifeq ($(SNAPSHOT),yes) + GWEB_NANO_VERSION = $(shell svnversion .) + GWEB_VERSION = ${GWEB_MAJOR_VERSION}.${GWEB_MINOR_VERSION}.${GWEB_MICRO_VERSION}.${GWEB_NANO_VERSION} +else + GWEB_VERSION = $(GWEB_MAJOR_VERSION).$(GWEB_MINOR_VERSION).$(GWEB_MICRO_VERSION) +endif + +DIST_DIR = gweb-$(GWEB_VERSION) +DIST_TARBALL = $(DIST_DIR).tar.gz + +TARGETS = conf_default.php gweb.spec version.php + +default: $(TARGETS) + +clean: + rm -rf $(TARGETS) $(DIST_DIR) $(DIST_TARBALL) + +conf_default.php: conf_default.php.in + sed -e "s|@varstatedir@|$(GWEB_STATEDIR)|" conf_default.php.in > conf_default.php + +gweb.spec: gweb.spec.in + sed -e s/@GWEB_VERSION@/$(GWEB_VERSION)/ -e "s|@varstatedir@|$(GWEB_STATEDIR)|" gweb.spec.in > gweb.spec + +version.php: version.php.in + sed -e s/@GWEB_VERSION@/$(GWEB_VERSION)/ version.php.in > version.php + +dist-dir: default + rsync --exclude "$(DIST_DIR)" --exclude ".svn" --exclude ".git*" --exclude "*~" -a . $(DIST_DIR) && \ + cp -a $(TARGETS) $(DIST_DIR) + +install: dist-dir + mkdir -p $(DESTDIR) $(GWEB_DWOO) && \ + rsync -a $(DIST_DIR)/conf/ $(GANGLIA_STATEDIR)/conf && \ + cp -a $(DIST_DIR)/* $(DESTDIR) && \ + chown -R $(APACHE_USER):$(APACHE_USER) $(GWEB_DWOO) $(GANGLIA_STATEDIR)/conf + +dist-gzip: dist-dir + if [ -f $(DIST_TARBALL) ]; then \ + rm -rf $(DIST_TARBALL) ;\ + fi ;\ + tar -czf $(DIST_TARBALL) $(DIST_DIR)/* + +uninstall: + rm -rf $(DESTDIR) $(GWEB_DWOO) $(GANGLIA_STATEDIR)/conf + diff --git a/scalarium_ganglia/templates/default/ganglia.index.html.erb b/scalarium_ganglia/templates/default/ganglia.index.html.erb index 52d21b8..cfc4085 100644 --- a/scalarium_ganglia/templates/default/ganglia.index.html.erb +++ b/scalarium_ganglia/templates/default/ganglia.index.html.erb @@ -9,9 +9,12 @@

Monitoring

-

- Proceed to Monitoring + Proceed to the new Monitoring UI +

+

+ Proceed to the old Monitoring UI

+ From 0df46683ec9cf72c965bb03f140eda187f5134da Mon Sep 17 00:00:00 2001 From: Thomas Metschke Date: Wed, 29 Jun 2011 17:43:41 +0200 Subject: [PATCH 125/334] add '/' --- scalarium_ganglia/recipes/server-gweb2.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/scalarium_ganglia/recipes/server-gweb2.rb b/scalarium_ganglia/recipes/server-gweb2.rb index 33f7865..b0ca5c7 100644 --- a/scalarium_ganglia/recipes/server-gweb2.rb +++ b/scalarium_ganglia/recipes/server-gweb2.rb @@ -1,5 +1,5 @@ execute "Get newest version of ganglia web interface from github" do - command "cd tmp && git clone git://github.com/vvuksan/ganglia-misc.git" + command "cd /tmp && git clone git://github.com/vvuksan/ganglia-misc.git" end template "/tmp/ganglia-misc/ganglia-web/Makefile" do From cc86ad5090bd185ac98090a3daa297a5484e924c Mon Sep 17 00:00:00 2001 From: Thomas Metschke Date: Wed, 29 Jun 2011 17:45:46 +0200 Subject: [PATCH 126/334] provide complete path --- scalarium_ganglia/recipes/server-gweb2.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/scalarium_ganglia/recipes/server-gweb2.rb b/scalarium_ganglia/recipes/server-gweb2.rb index b0ca5c7..633e5eb 100644 --- a/scalarium_ganglia/recipes/server-gweb2.rb +++ b/scalarium_ganglia/recipes/server-gweb2.rb @@ -8,6 +8,6 @@ end execute "Execute make install" do - command "make install" + command "/tmp/ganglia-misc/ganglia-web/make install" end From 5e02d1e0d653b6a200c024a23f601259aa518bf2 Mon Sep 17 00:00:00 2001 From: Thomas Metschke Date: Wed, 29 Jun 2011 17:48:29 +0200 Subject: [PATCH 127/334] divide in two steps --- scalarium_ganglia/recipes/server-gweb2.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/scalarium_ganglia/recipes/server-gweb2.rb b/scalarium_ganglia/recipes/server-gweb2.rb index 633e5eb..a68eafb 100644 --- a/scalarium_ganglia/recipes/server-gweb2.rb +++ b/scalarium_ganglia/recipes/server-gweb2.rb @@ -8,6 +8,6 @@ end execute "Execute make install" do - command "/tmp/ganglia-misc/ganglia-web/make install" + command "cd /tmp/ganglia-misc/ganglia-web/ && make install" end From b016533470cbe983a61e45caa41d09c634a1e677 Mon Sep 17 00:00:00 2001 From: Thomas Metschke Date: Wed, 29 Jun 2011 17:58:14 +0200 Subject: [PATCH 128/334] include gweb2 in apache conf --- .../templates/default/apache.conf.erb | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-) diff --git a/scalarium_ganglia/templates/default/apache.conf.erb b/scalarium_ganglia/templates/default/apache.conf.erb index 45011cb..55e5426 100644 --- a/scalarium_ganglia/templates/default/apache.conf.erb +++ b/scalarium_ganglia/templates/default/apache.conf.erb @@ -5,8 +5,22 @@ Alias <%= node[:ganglia][:web][:url] %> /usr/share/ganglia-webfrontend AuthType Basic AuthName "Password Required" require valid-user - + PassengerEnabled off + +Alias <%= node[:ganglia][:gweb2][:url] %> <%= node[:ganglia][:gweb2][:destdir] %> + +' > + AuthUserFile /etc/ganglia-webfrontend/htaccess + AuthType Basic + AuthName "Password Required" + require valid-user + + + PassengerEnabled off + + + From d92a14d707c943f7c79d083d05fa5021f2548cfb Mon Sep 17 00:00:00 2001 From: Thomas Metschke Date: Fri, 1 Jul 2011 12:25:48 +0200 Subject: [PATCH 129/334] add reports to new UI --- scalarium_ganglia/recipes/server-gweb2.rb | 40 +++++++++++++++++++++++ 1 file changed, 40 insertions(+) diff --git a/scalarium_ganglia/recipes/server-gweb2.rb b/scalarium_ganglia/recipes/server-gweb2.rb index a68eafb..05060ea 100644 --- a/scalarium_ganglia/recipes/server-gweb2.rb +++ b/scalarium_ganglia/recipes/server-gweb2.rb @@ -11,3 +11,43 @@ command "cd /tmp/ganglia-misc/ganglia-web/ && make install" end +remote_file "/var/www/ganglia2/graph.d/mysql_query_report.php" do + source "mysql_query_report.php" + mode "0644" +end + +remote_file "/var/www/ganglia2/graph.d/apache_report.php" do + source "apache_report.php" + mode "0644" +end + +remote_file "/var/www/ganglia2/graph.d/apache_worker_report.php" do + source "apache_worker_report.php" + mode "0644" +end + +remote_file "/var/www/ganglia2/graph.d/passenger_memory_stats_report.php" do + source "passenger_memory_stats_report.php" + mode "0644" +end + +remote_file "/var/www/ganglia2/graph.d/passenger_status_report.php" do + source "passenger_status_report.php" + mode "0644" +end + +remote_file "/var/www/ganglia2/graph.d/haproxy_requests_report.php" do + source "haproxy_requests_report.php" + mode "0644" +end + +remote_file "/var/www/ganglia2/graph.d/nginx_status_report.php" do + source "nginx_status_report.php" + mode "0644" +end + +remote_file "/var/www/ganglia2/graph.d/apache_response_time_report.php" do + source "apache_response_time_report.php" + mode "0644" +end + From 877d8e6de57b75979ea96238f5064e17adbdbd80 Mon Sep 17 00:00:00 2001 From: Thomas Metschke Date: Fri, 1 Jul 2011 12:49:45 +0200 Subject: [PATCH 130/334] overlay config --- scalarium_ganglia/recipes/server-gweb2.rb | 5 ++++ .../templates/default/conf-gweb2.php.erb | 23 +++++++++++++++++++ 2 files changed, 28 insertions(+) create mode 100644 scalarium_ganglia/templates/default/conf-gweb2.php.erb diff --git a/scalarium_ganglia/recipes/server-gweb2.rb b/scalarium_ganglia/recipes/server-gweb2.rb index 05060ea..c73c247 100644 --- a/scalarium_ganglia/recipes/server-gweb2.rb +++ b/scalarium_ganglia/recipes/server-gweb2.rb @@ -51,3 +51,8 @@ mode "0644" end +template "/var/www/ganglia2/conf.php" do + source "conf-gweb2.php.erb" + mode "0644" +end + diff --git a/scalarium_ganglia/templates/default/conf-gweb2.php.erb b/scalarium_ganglia/templates/default/conf-gweb2.php.erb new file mode 100644 index 0000000..a01db74 --- /dev/null +++ b/scalarium_ganglia/templates/default/conf-gweb2.php.erb @@ -0,0 +1,23 @@ + + array_push($optional_graphs, 'haproxy_requests'); +<% end -%> +<% if node[:scalarium][:roles].has_key?("db-master") && !node[:scalarium][:roles]['db-master']['instances'].empty? -%> + array_push($optional_graphs, 'mysql_query'); +<% end -%> +<% if (node[:scalarium][:roles].has_key?("rails-app") && !node[:scalarium][:roles]['rails-app']['instances'].empty? ) || (node[:scalarium][:roles].has_key?("php-app") && !node[:scalarium][:roles]['php-app']['instances'].empty? ) -%> + array_push($optional_graphs, 'apache', 'apache_worker', 'apache_response_time'); +<% end -%> +<% if node[:scalarium][:roles].has_key?("rails-app") && !node[:scalarium][:roles]['rails-app']['instances'].empty? -%> + array_push($optional_graphs, 'passenger_memory_stats', 'passenger_status'); +<% end -%> +<% if node[:scalarium][:roles].has_key?("web") && !node[:scalarium][:roles]['web']['instances'].empty? -%> + array_push($optional_graphs, 'nginx_status'); +<% end -%> +?> + From 439a1a0bbe3524c73137ca7f9be71eb88215be55 Mon Sep 17 00:00:00 2001 From: Thomas Metschke Date: Fri, 1 Jul 2011 13:19:54 +0200 Subject: [PATCH 131/334] fix syntax --- scalarium_ganglia/templates/default/conf-gweb2.php.erb | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/scalarium_ganglia/templates/default/conf-gweb2.php.erb b/scalarium_ganglia/templates/default/conf-gweb2.php.erb index a01db74..4520609 100644 --- a/scalarium_ganglia/templates/default/conf-gweb2.php.erb +++ b/scalarium_ganglia/templates/default/conf-gweb2.php.erb @@ -1,7 +1,7 @@ From 0b861055b5641ee1b7d3332f46fa969e2f0a805f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Daniel=20Hu=CC=88sch?= Date: Tue, 20 Sep 2011 16:10:08 +0200 Subject: [PATCH 132/334] Call bundler with path option instead of deprecated path argument. --- rails/libraries/rails_configuration.rb | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/rails/libraries/rails_configuration.rb b/rails/libraries/rails_configuration.rb index c5d8357..df419c7 100644 --- a/rails/libraries/rails_configuration.rb +++ b/rails/libraries/rails_configuration.rb @@ -37,8 +37,8 @@ def self.determine_database_adapter(app_name, app_config, app_root_path, options def self.bundle(app_name, app_config, app_root_path) if File.exists?("#{app_root_path}/Gemfile") Chef::Log.info("Gemfile detected. Running bundle install.") - Chef::Log.info("sudo su deploy -c 'cd #{app_root_path} && bundle install #{app_config[:home]}/.bundler/#{app_name} --without=test development'") - Chef::Log.info(`sudo su deploy -c 'cd #{app_root_path} && bundle install #{app_config[:home]}/.bundler/#{app_name} --without=test development 2>&1'`) + Chef::Log.info("sudo su deploy -c 'cd #{app_root_path} && bundle install --path #{app_config[:home]}/.bundler/#{app_name} --without=test development'") + Chef::Log.info(`sudo su deploy -c 'cd #{app_root_path} && bundle install --path #{app_config[:home]}/.bundler/#{app_name} --without=test development 2>&1'`) end end end From e3097bbdd8b90ca5442f913d5a5f300fd78e15d1 Mon Sep 17 00:00:00 2001 From: Jonathan Weiss Date: Fri, 7 Oct 2011 19:12:09 +0200 Subject: [PATCH 133/334] ensure correct permissions of custom cookbooks --- scalarium_custom_cookbooks/recipes/checkout.rb | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/scalarium_custom_cookbooks/recipes/checkout.rb b/scalarium_custom_cookbooks/recipes/checkout.rb index 43aa450..f6bce65 100644 --- a/scalarium_custom_cookbooks/recipes/checkout.rb +++ b/scalarium_custom_cookbooks/recipes/checkout.rb @@ -45,3 +45,7 @@ node[:scalarium_custom_cookbooks][:scm][:repository].blank? || ::File.directory?(node[:scalarium_custom_cookbooks][:destination]) end end + +execute "ensure correct permissions of custom cookbooks" do + command "chmod -R go-rwx #{node[:scalarium_custom_cookbooks][:destination]}" +end \ No newline at end of file From 88411e558cc6603331656c534b2cef48710c3917 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Daniel=20Hu=CC=88sch?= Date: Wed, 12 Oct 2011 16:00:51 +0200 Subject: [PATCH 134/334] Only fix custom cookbooks permission when present. --- scalarium_custom_cookbooks/recipes/checkout.rb | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/scalarium_custom_cookbooks/recipes/checkout.rb b/scalarium_custom_cookbooks/recipes/checkout.rb index f6bce65..52d11e2 100644 --- a/scalarium_custom_cookbooks/recipes/checkout.rb +++ b/scalarium_custom_cookbooks/recipes/checkout.rb @@ -48,4 +48,7 @@ execute "ensure correct permissions of custom cookbooks" do command "chmod -R go-rwx #{node[:scalarium_custom_cookbooks][:destination]}" -end \ No newline at end of file + not_if do + node[:scalarium_custom_cookbooks][:scm][:repository].blank? + end +end From 0150687a42859fd4b954cf8b37306d92acd36f4c Mon Sep 17 00:00:00 2001 From: Jonathan Weiss Date: Thu, 13 Oct 2011 12:44:21 +0200 Subject: [PATCH 135/334] nicer check --- scalarium_custom_cookbooks/recipes/checkout.rb | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/scalarium_custom_cookbooks/recipes/checkout.rb b/scalarium_custom_cookbooks/recipes/checkout.rb index 52d11e2..ebd2118 100644 --- a/scalarium_custom_cookbooks/recipes/checkout.rb +++ b/scalarium_custom_cookbooks/recipes/checkout.rb @@ -48,7 +48,7 @@ execute "ensure correct permissions of custom cookbooks" do command "chmod -R go-rwx #{node[:scalarium_custom_cookbooks][:destination]}" - not_if do - node[:scalarium_custom_cookbooks][:scm][:repository].blank? + only_if do + ::File.exists?(node[:scalarium_custom_cookbooks][:destination]) end end From 767467d5d39693a1a56f07680c255089aae3e40e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Daniel=20Hu=CC=88sch?= Date: Thu, 13 Oct 2011 14:56:56 +0200 Subject: [PATCH 136/334] Include cluster name in scalarium.php. --- php/recipes/configure.rb | 2 +- php/templates/default/scalarium.php.erb | 1 + 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/php/recipes/configure.rb b/php/recipes/configure.rb index 49788cc..00ca1b6 100644 --- a/php/recipes/configure.rb +++ b/php/recipes/configure.rb @@ -11,7 +11,7 @@ mode '0660' owner deploy[:user] group deploy[:group] - variables(:database => deploy[:database], :memcached => deploy[:memcached], :roles => node[:scalarium][:roles]) + variables(:database => deploy[:database], :memcached => deploy[:memcached], :roles => node[:scalarium][:roles], :cluster_name => node[:scalarium][:cluster][:name]) only_if do File.exists?("#{deploy[:deploy_to]}/shared/config") end diff --git a/php/templates/default/scalarium.php.erb b/php/templates/default/scalarium.php.erb index 1956fe0..1288a0d 100644 --- a/php/templates/default/scalarium.php.erb +++ b/php/templates/default/scalarium.php.erb @@ -31,6 +31,7 @@ class Scalarium { $this->db = new ScalariumDb(); $this->memcached = new ScalariumMemcached(); $this->cluster_map = array(<%= @roles.map {|role_short_name, role| "'#{role_short_name}' => array(#{role['instances'].values.map {|instance| "'#{instance['private_ip']}'"}.join(', ') })"}.join(', ') %>); + $this->cluster_name = '<%= @cluster_name %>'; } public function roles() { From 2289fdd0bb4f89bcd8b570329cfba7e657d1bf51 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Daniel=20Hu=CC=88sch?= Date: Fri, 14 Oct 2011 05:46:39 +0200 Subject: [PATCH 137/334] Add mysql development package name for Ubuntu 11.10. --- mysql/recipes/client.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mysql/recipes/client.rb b/mysql/recipes/client.rb index 8ada75d..5770d2c 100644 --- a/mysql/recipes/client.rb +++ b/mysql/recipes/client.rb @@ -4,7 +4,7 @@ package "mysql-devel" do package_name value_for_platform( [ "centos", "redhat", "suse" ] => { "default" => "mysql-devel" }, - "ubuntu" => {'9.10' => 'libmysqlclient15-dev', '10.04' => 'libmysqlclient16-dev', '11.04' => 'libmysqlclient16-dev'} + "ubuntu" => {'9.10' => 'libmysqlclient15-dev', '10.04' => 'libmysqlclient16-dev', '11.04' => 'libmysqlclient16-dev', '11.10' => 'libmysqlclient16-dev'} ) action :install end From e5e39c5afed4aa79c1375162534b195709df5047 Mon Sep 17 00:00:00 2001 From: Thomas Metschke Date: Mon, 17 Oct 2011 13:10:04 +0200 Subject: [PATCH 138/334] add redcar to .gitignore --- .gitignore | 1 + 1 file changed, 1 insertion(+) diff --git a/.gitignore b/.gitignore index c1b7682..d48468d 100644 --- a/.gitignore +++ b/.gitignore @@ -5,3 +5,4 @@ */*/.DS_Store .vagrant .idea +.redcar From ff6c8a774ead8c7e284b8bc5e21fadd1c7f4daae Mon Sep 17 00:00:00 2001 From: Thomas Metschke Date: Mon, 17 Oct 2011 16:36:51 +0200 Subject: [PATCH 139/334] get gweb2 from cookbook file --- scalarium_ganglia/attributes/default.rb | 5 ---- .../files/default/gweb-2.1.8.tar.gz | Bin 0 -> 531592 bytes scalarium_ganglia/recipes/configure-server.rb | 5 ++++ scalarium_ganglia/recipes/server-gweb2.rb | 25 +++++++++++++++--- .../templates/default/Makefile.erb | 11 ++++---- 5 files changed, 32 insertions(+), 14 deletions(-) create mode 100644 scalarium_ganglia/files/default/gweb-2.1.8.tar.gz diff --git a/scalarium_ganglia/attributes/default.rb b/scalarium_ganglia/attributes/default.rb index ef021cf..2013671 100644 --- a/scalarium_ganglia/attributes/default.rb +++ b/scalarium_ganglia/attributes/default.rb @@ -1,4 +1,3 @@ -default[:ganglia] = {} default[:ganglia][:datadir] = "/vol/ganglia" default[:ganglia][:origina_datadir] = "/var/lib/ganglia" default[:ganglia][:tcp_client_port] = 8649 @@ -6,7 +5,6 @@ default[:ganglia][:user] = 'ganglia' default[:ganglia][:rrds_user] = 'nobody' -default[:ganglia][:web] = {} default[:ganglia][:web][:url] = '/ganglia' default[:ganglia][:web][:user] = 'scalarium' @@ -25,8 +23,5 @@ default[:ganglia][:gweb2][:url] = '/ganglia2' default[:ganglia][:gweb2][:destdir] = '/var/www/ganglia2' default[:ganglia][:gweb2][:apache_user] = 'www-data' -default[:ganglia][:gweb2][:major_version] = 2 -default[:ganglia][:gweb2][:minor_version] = 1 -default[:ganglia][:gweb2][:micro_version] = 2 default[:ganglia][:gweb2][:svn] = 'no' diff --git a/scalarium_ganglia/files/default/gweb-2.1.8.tar.gz b/scalarium_ganglia/files/default/gweb-2.1.8.tar.gz new file mode 100644 index 0000000000000000000000000000000000000000..702cea8308f24eac8085657cbdb4342cfb9f3d7a GIT binary patch literal 531592 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%0DUz%+VrN0}yJSx!_XUM|}` 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�w+R(8R4YHn-UyOd<+dE2y~(jm>{9#3r#RNz~TfIrO*xhQ=`8J%>1Zn zW<(?8O7+wlKr73VMmgF*rJ*ZPr4hnc7!NJdV`q(ISl6STgK_@+C}{tK{DVOevM6k9 zPa6YfdOH#R?P8;BAC7MyZrMKEx_!89`*8dA;RV}SC01r=`@nW{WP576F))zZZY0>N zv61Zw)~@ZWVVUi0OR)dXZZB-Nw==FLZ33Et1}Ejb?U8OY3xOf#y8{+Dw>6R8R-9>~ zw<+Rph&)T-Sk64JkOBZYM)4`MET%#e<9ZH317==bv{+)U>5I9v{%AM>|B2yP;y^2w zC@Nurc@UIUUo>mQ+T|PHzHX(ibVcmdq?G^>wU#s)^PeN>GwVXeQrfA}tvLmEU0<8o zq{guAUYi(JO9ohgw6J5rU8-bux*|&uM#8fkZx_cPm}iWsIb*P5VnL$>?>*z>fGjBf zxDG21>0F!+RalHjsALW|6FJ@rN+Iu^HAWP4sWL`5c~#Zi{==E~{=&D6G~lou9#5A~nJ;PK?Q&_)bs?Gm5d>5C)yN z?P$eC^AiQ7e|aszUV-3JS>6WS&O!GkH#MFmb`b`F^>sVjXp)8A4m|R9WP(ec?e0w$ zQwG1{T~X0Sq&={^c4HMyn9w%dbL<7n>3?XEG!a)cq3ACa_R@jLD~wAZ3Nke!&OBZ^kab`Z5EPo71VrGW6z*050oE~!FiQnM1pLa6L?)(f zFp21IOAU^5V{4QE*khTzu~qTrs3}ACCS{0#{-LE6fbZN72V`-G=l*518tMH?R*VFG z_6U$unN(h2Z2`z89sc9RahchgSw})=!1XO^q{xdTqbR`sV+RH61Xx35`5$Ph#CZ+& zc{yj3gx7QsE}fGq=Ca4*5JXm%u){du6#l zykRP-N5>Cf(nTgMo#M!pz+k$2z;zU8i;@E{A-ynb^#s1hhO9@2nMoPx)cIyo2kU+q zh)%Z+SSkZ32hAK@NoVPZ! zP3SYfTnEK$#BX7>&-`y+dftyD=2Nrq)yFcp`rFa5?v!=?YuBw@6AKApM<@ns0u0=A zO^-^HHe`TKHOEF7&9R*h&O_TjYQFd-niPq|KnTj%B>=Sa*Smc6+6^nII{->kqHVpI z@ldRI3H2^mOwqJq!-gg5j5}2m>(cy5oSCS2JBjTgEFzWC5P&fU7fG>1;7_PsS+Lw? zY0qK*D&_yURp-PQz;gCKZS7wCuXuY)YmNV#ipS0WZAguT!7nt%xu_Pm@6Oj}l# zF;<|_HZnvnIj^(Ef&d+$8|OwfNekFL&Z&`-FmH}%xOdDvkXv{Mc#_D2fmJUe+)bg{rHt9Z$0ih@go&04wD07gLT;1fvJ4)E7D(f9@$?kz?d!?S3tdF=0)ZLtXi z=?%W!Ca432aA^|7)EM_Yh;g5+$Sh)IxHxw_AuEW_QkHp_AzL!}u4W~Kikqo#;O?4i z7Ymdx*nbigjP08)oqG=>qe{FDci4U{ZUNlkhxiQ6$Dt-23{isIfEdS$?6ojoOo5RR z(PS4ZtHDOJlJx{HF1eM8co{W=%F^Vs>2*{)aW!u4l)i*rhAh$(d#c&*s(IqNV3#K^ z=(FGz)uE8$V74VvLyU2!L{OxiOK1v*3Ck1MOQErs7XvoCY)COA39Ln-M06!$i#jNc z0A6;dlNT&>n^!+mU2c_TxjMXM$SPDhYt_C}Cvl1aJ|EC3@)MCmCr; z3PQ2KiW*8=18l)KJPexEkxdrVTmXG^09N7)l05j}e#{%r9$V2)f5!5{Q(| zj^F&5O4iDfu5n7dc5gnHLHMcgq`N}&R3MI6`9Oxs`X`X>P0RUP6l2#_P0dUB7IfW z2W65?*Z`2iMMoF_hpVZ}n_gD4(aIA|t)Q2ANLx*AhZo< z*SHqCx)%Kl#y5+6OkEupvOPgWWGn!p9yX8{Zj3h`%AG-F%H6(7rqp6V<_(xkr%)sORx`w6q_Zb38~LHyl5G59Y8ID z8d7iQ9~{D3@6QCJvUna?;Ql{ z+(Usu@HbqK6_?*?i$M|%dniB6|zb4APd}neBF9CU~eAV>zlkD zzM^64g^53lczQ$0Xq)w+hjMeonM=>oue@H|6y>Xx+mxyfNJ1;RPid1l^5tN4_BdZv0%LcTB3Fs%Nj4E1DZS)kfKlw*5K?>N}EZ1D%Ahvt?X)Zi~W?KwP#x8=Re!Y6GVS0kN>%#rQLh}x5jJuFH`aq!+#g9-DC)Y z;D-{C9Sko3&Gyw zXf&f>*dTZd`2ha_s5|2XK(H`K=Fh?$gnHGX86${9z!EjkJ8Cbw(AWU0%^h3_ct&ZT zn!3Z+v&u3Pa=qFJ#nGm8dmP|<9CntKB!#RQLu?d=1(3d-A45o2u=#+am7B!~6bD!& zn1l~0yNa=kC~q)#SxGuNB0_>={8$Ks@P&Y%3jx4Dh*w9-RhlzaR#bX~6Ji8nWPm3) zCNp_tIaaT<%TZ=+z=YOu89)tecJE<61K3V^J{9LVk)xEZW4PBleQzLWQovh;=}=zM z*7Cjc=VmWa&gXth%eT0J3)IV~6oTz9_S98?0<-0;!$a#ZX z9h2a0?Fzv+Y6kmTv1WEr4FuQC8v~B2Mg52f^HPK&f}>&ikevHRD@pJI;efG4i0~7M1ISH=%b1G|bZpY$ynn=Vk`%Y^VRfdI$fcs||20 zwUM#qO%JCa+^|?a>c{0&xs;MR&GjZkh?($!Wu+s|d@70f=^`tW%S}n(t4-;%JEc(P zxeDWBK3{WHsbu7oSgk=UTlK=?1MG2`JlX1j0;0GfFxFx86phU(eu3(2N6rRfsY7t& zhzN7wx?V)c8i#vQq*FFXYoie;+ki#L>WL`UHQe!!y>$h~g1b*D!!>+3)r9^`&gYJM zB^hfWVX;$NTpr#eV5D+AutB^t`s`kNKDbHhv(M?Z=Y?bQ7f0B?4YNl87Ko<-U5DNf zhc`aoLrn)GHre)0(N17wVC~p!5^46R&9AfEhhH{-3F6C&h1z2teHT3?R0ufTF`^ZxbWkwL0ImkTsEfydy!bT z0TD0U*3#^LnU2$EUB!{_@eu?NrSX656*3wSYiEs~g z%$uU8I{&|k@c?Dd|5mU6Ukm(GJO8KPnauMaeZXowz~0XTa7ysH;sc=5HC~{`3+!c2 zh39|5$g;87J@@~%mIbZ8`+s|T?fjpL$9?`Ur)jnkKpl=qZe$A75&ciuNlE)%c(2;z znwq!3b6u;P^LQOCZ|2=vP zzr8Lsq9C@i^ggaKN4KTz+qHm?@lus=)exLzXBrSh5O<^?k-d71O}*PK9^9fpr8JT) z(k$8lfsT`&7Px(yy!pxL&s~ucG|=%*bUT>!>b&*6dS6dK>zzU?Thy-)wtUK-3iv4*#pQ)vNz&Zf~yne@w~a;r|7Us|YnftR}}~Wo!c&@TdX>gki+C#hOkeRe{5fJJ;qN(Ew1w|y!QW@Y zX!Ni*eOfZL1ui;ohi~DtwK>|`(NVS8lMI+ntp^hJ$&?g0rWu+N4xin`GRk+J+*UFf zka<=>=2?`v#yszZ%(E9VchZ2jCXSlxMG5urjQl5og+{d^tfpii1+0L?mr_KMC`5Ew zd~J?4Y*B2!D3t^=a+$7e;V$EgIMN@OSZHwSfx6$Hf$zV(!(fi>_218>1V9n zxN=4RhK=hXSTwJn4QvnaS^C_$WZ>v-p7_iMiQ1$f_)=4>++?<7`}T>q#5`{@Thi4v z@s?yvYKizYsSTU83k_pOp4ze@b21y&y$cOXyBn6C)P^nEr4gIdA=;G@n$#hgctaR5 zn#`8W*@bOpP3oA;ns`eVb@PV!HmNryBP+@}pXK`1?fSLI{mu1B{n6zu()DwW>zlik zc(4RFlQDt8BRgvXBP+&EsfCZDAE%*V^Za-pVc|KaBFR|P6awIlpT)2eP45UXr)M#25xonreBiRh$0l$cRPoY1w$+0)t{T)jv<-CAHFG%& z90U2qmxrAP&p9@X4TkUf*)R}_vRhYyU7*$8H^!mkDcjX|xX5xOBgpL^tvHRAe-LF) zeXEnRX6$k(rn|uq+_)OletDb z%RvxHBc@kY(|A$Z*k1Osi* z`GE5~xCg!q4@a;T1cck-9H`d7A-@q^lpA-JKt+X`7{d{6NLtHbJ0pTA2QNh)kq}IK z^+mAaI(QTNdl}Ek|6Y}h_3GUm_EdFk2ek@ggL`}NUpW*SFLzN>=@NVOPAU`_4^7yJ zb36){qKB7^DjoJBZDztn`ir-kVuRtxR`{?%q+)Ls<;o8f!8qkrVBqc+1<6hdIL5}} zEx?kBc9Fh%+vIdnRM1>W9o2UehDYg|l9(9F5}^d^U1mtxLYYvIg^Xz@jI8N&$yrzq zUz|LN{YUWpaxheMhko#X8ZcmIHn~@S*tJ&mNH;=0Eb4WyXm_ISCO82(7zD8Mus1|g z*9~U@7{Zz4I5xDvwhN3ILRK_FI9?28mPw=wNdUvnXn89u&hJ6iAI^hQR=DrGf_^vk z&hx+;_RedCcllsYmVa5)|6!JF!0MkJgG z^jeoyJgsc3!VTCZH&u55bLiU^^s{PEZgY4J=nEz$ zN!VU+(Wu=2bK(YIW$eG&+T-5%-^~ka_Fq%;R1*J@nExWq81Q{UF%EZAd_zr!i{zmq zo#2r8K1{)j%<~EmeWW=8R}4eT6h;Ohq$NQg0`xq(b?^dN86DiugZ*g(S>>9yt zK4D%OkI#S=M-=B5;p76~cp_>hcvC=wM0`m*Zvqw~!Ry(Al;@Cvrf4Lbl8eZ20CmPg zPZF?t4dQN(yl_ooLR&YiQtQQOT=4*mD>d@iM=_M?P{(?Sgb`@ob(8bNIC*S zES88C2r=Y2dBR5aX^E-)_?5+r0)6?PN5)T70|LReZbZ zL&4b?3oh#%IQ)*x3aOXgaTSDwvvM-x4yTsvH~bY7qB8yjy+ zfL}2^5|oWpe*KKQHgl;&*xyPtJD628N!|jKdcV;p>fO9QY1d4C501H_1MSAcWq3V~Q`?j{`l5VvLk{VqjDS%JPB-r3_Kh_WlG zQHyu_TENd7K=2;d#Q_I#T{Cc)fea#xm>no+LDUd3a{?%doXKwJ7=*!OG!!y{1j%8z zSzAB~&EO0Y!LXtn8!8@6wjl>G32c`IFWhy=2~qJL zXpmwT6Jf^Z>yqtI<>lMX3HLD8yl-(N+|%56V&D8oZ@gh#cP_{yYvK{FkiB@OyoFg> zq@y7kYT7IFXfl9-Q z&|A}j3CoyfQU>jvCF=AaBF^scFP?7yi6#2Lo#TCZc(a2RqPMJ|q;v@c=X30)0&3-H zF;JDT*FoMn^a2{D6-y1t#Nfwte=|#ERHi4Ud#gn{TU`WFS5Qdh6cRBUJ!Dx4En2LV z0l^|&VNTU?Em}*FIH&&Bcp{F*%LO~FsP^D!r)4V-N)r(8)MV|NisO(C0Af`NI(}}o5Qt* ze_OM|3iW?RA#e4QhIP{MUt2-v=fQt%Yp&tHPRZle|E*=mb}p4Pg$*DVAj9l8((D6+ zjA}0l314Sq%d@^P8@=40XDrko9{Jjrqt)?m4Lo{WRWtylEt6ervlrfuxl8pTe+8-6BAXr_- z7wl_ODO@eSrTGvGVk2pcAxV#ycYmZ;c2rZ+A30O;p9gRMXiv|=-Wy5KqOg1u#&RDRTCOd}6X09W2^v|7itFc@1=WO{-GBS_pt z8md8HT-m>f17ACAjb;$qSFp4?Sab#N>?ZW$s7y_I>*!HFH$yo z%3x?Z5M+*;nixqg{zQ>8VC0It)K@AcCAdP=EWj)&t~gE=R6Ll-F>V@Ut%wQCVR=Q& zh8pbdUe6QnZSfk|=jEId2y6=u4d$pwT&ZF%4v1nrZnUzBxmFdS3_w!OxUxZmb&J)H z!`<(UVOWGZzz@JElQn{r)59f&Z2jFvc{&Dc6(#!(85CD-DU_eII210=+T{wjREtNk z_r{~BRQ|UM@UP|LKQ#OBUt3#h{=ZZ5c;tU5^#>z(2)eAzP3Jp}xkLF*EpH5Y1$@If z6Cf<$L}nuh#BVhVhW-&o)3KQ7Rdyf3`KH2FF9)+mw377d08()ZiLpxpy;`#_oya0IN_k4nQ=z zxWM(b;x{J})1ZX5RrpOCnjRyW73JS(EtLe3pqt#<#~8Uj2lExLZRm%pMyRO?Hm=~3 zz?Mo90-GE%a7Qu%2bdH5UYuu3tzJ5@a_+xN3xzm0$O;`X*-@k+`N60}Pzs(@EED}p zE?ywh7Tmb-an3RhkR<_ry)hUVI4Fez4_rEyhn#jcD%pm_YT_w9ctDrpJ1*MZM)}cI<<&5)p97Cw_%$u!}W0>>lw{$p6EJ$xieR zP%i%K!UaD3pO*Hv8vj2PkH`NPrkRxgb{2&jMxNxMCR-I5w4rDGFd7IAlKUxRIyjRI z5!5*2&oY3Z!uH-7Mi?guICp5w=@RBb(YVO6COcbX#gSFpgvo{-SgiaYCP&5!lO=>>nyH@-NUEi`eZB! zU!9@XCv?$-;(qa=b0Lia=(wr7;D*UAL8GDOoEE9?&$U&|YljF3@N3B;deA>+hZirJ z)e&iG>a}~$>CN?K`sQtK>YW#xx0qv^xDbgtm2eD#24Mw?WdKPYi_}LKmrzr0rYRI< z|K!*|dQ*5&@8a;{4n}<=i?=VD6X~_*HG$%v%Z0HKdP7`;cb?{-!_pEwi9N4j_K1T` zBAV>JHI!6*S9tz|?rt~ff8+6mtqXkm-vtY5=l@hZ?(=^&n`Rs1k~)4aaJGZ8gtG-; z@J&}MJpNHjsf2z)duH(BWJSQDfg_%g-$Ej9^HXY#l{ZOC=^%#SiHNmrHphf%p+N<3 zH8cnZh2yoj9&T&sXX(eKkPL&&LP8K1f^wBY)q_G6UgzMV?F%Z)(L$UiVB1t#q`(h> zadCs6U<0d1Kf&F!d*DwTvqrB3R0%w5NDoy~me>W**xMzw*isOQGtQOJsG2TN>{j_> zfc2@IepyUX(h8~+hgH@n>*BRIo^ z1+3t}1sih)uyb&Hgaamvqn#8(weXbhN3{?D1HOVKPy{Q&4HV%@S_~<|H_Jt!B2ZQh zoTVQx!nKNAU=C%*WWtyZZWIcB?z0k=8CxPbe#Gvq{RLXD8V zG1OP3ySU4fTWt*Y?)A-1F<0(@gwnGdFm1~DaaUG%pd)us)jm(|fJ6bV+~rz9q7uhd z-pp@+H$ooBCjn4-h$NB&Hm=C(Ji;gD5MBX=R$Aot36CkA_Vg}j5ICjitjw2O1toxn zxM zhy}2Ga=fky==LB1-DDX7ddS1>QMLB>!wZf=Oh3qlA;?Nl+xBnZa@_zeQbjsW7rD%b z_S(j=tm#h%b&F)OY9;2IymhLj%oT@I&g|$|e#VB4YftN6xB85eSBU^84GBgOtr40o ze{UdnIKst%NAiX%%iIXjCS+j{`XL+~A6G3}&C<-WbaWIgq~2SSdtmtAG6OpE zD9K&b(&p+%;@dC#5msDYXwnJchg@NtyMd4pv-?1*tGgj9Sqzzn@fll;TtB0-R*nsE zigRl*9WD-F4H(m-N@a;ct}3~(PbSO}b4q&I05BGH*ioum0~BT?Z5o*{*tPQ%uq%yx z7fD()VZ-Q*aYKLJ80sfScyZ^HZz7El)YMa1lz8^2rwYIbRRgOkrIfUetS@JK855)h zB6cdSPf7)mZJP2^!JlAFQadO`8V$&Rs*;MzrMlNzt5(YYn>Y!(BmQH&wWYnq7yq$l|2Z{}oBv<#V*F_>kVyw! z41`LN?JIJxCw5sFn>$y6q{+5jf~BklfZS_&ej*8bL`)Kp$6zE95Sw*rN?;P_*NCxI z`9vxaWOQDi7MtaQKXy*!N>fa!jUq(lc7hT&5u=0VObOD#Uht1JXO3~Gv2~Y%e(+g$ zK7o2rYS2*yR>-8zE10D8iR8jZtEr;G1D6>PjOv#e z%jF&@ii4qHP=>`?9HI4Li-=DXTZXclB6|eM=LA~MvU!`&UQM)-vb0it=*EF*28j6* z)SyxJR9SFZ;EI#=mRNI2+kkLY);^4|TB42fOIC%Ka!(g%Fw3?ul_}ZL;8wZYU#i_@ zMm`>K?>@K}6b%dF#ODpLwBVIYC^|@X!U00OIV+D5;>lTYm=I6CN+X4MvN^UF<)cP$ z>0G5jW&*JBX9a|YDG{2))7EOElT;8*!h>VKIhEZr!jkxR3aoG3seY@IpcPMaOztLj zjq-4hMF|@*A0pg(sMAgEyCk{CDJG8B{SG7D${)(XVMfrV6}8IedZ*(HX<#r%4vx31XyIwR4ACzpCyuv@oY7dUhCU#@ZQ8!F>K16iAJ42W{)e_Knd_xxYj z+EP3Jr{W1X|GC+RZRP;<10ZTekOhtwfuI@?M4Ryka4sPf2dt2Bp0{>h?xp9YAOm|- zBmwA?$Ch=FF^Ocws>4@Z_%BT=-2NVLOxIxcJAJe8I%88RJpaYDYj>Rg?F$z8>^~Q_ z*6#mP^0?3c6(%EnCL$yk1{&R0eSmAiFr5G(!p?qnCWYZFX7}Ypft@v5%=B0U&vQIq zlUP)e5v8F59tU3BEe@e2D}mqjt{?&FlueNQq6m}^h`3W4hvDIYlHA}|HO^xX;XEb_ z0!l8E-F8`b`H?vWd;d1^JK=9zd{G0G2A}iu;B;3!f$)txo7ahml7J@>{_g5-U|aA^ z*nON$;Lci7ZI8*MpBDXuE{Sa9EG2((^IYi><>XK>LZg7V9@3pyO0y6hbHsq)rTXl1 zdW^>Nn;TE;@0;H+JEaSTOE#kF5S}NAdG1i+cEWnG2{(ert0QUY(#Cg0HC8(il78Ms z*%LWAJ=CT??@)}Z>?K*Wg88X{f_Ht0YH@^w@2vODpsOy|_d+2>yee3^rjowMpGGn% zgrc;k{I$9Yk7}Nx{a|3bfF9;p>iW5~*9;ykp98~9=|ia@W)?wQ0VzR$J#M<*52xgE zG$C$wnf*c*q1f!zH9h7TMQ~D#$?V0AhXuX_FVBrHQMBN&EP4L?NW`VcMAy0kn*S2? zgF|&y_y=E&4FNC@6Cxf8Dd-|%;3ghy_+wqLsYTalhq)XrgA;;bCJcy+^w8GCd5a1B zGiPF)tXv^2UpPjR^=f|4n0Y`vbhH()r7VWi|-tU`0D#A9692;4&ET9w8 z?R6NoXI_u0FV$aB{6X7}BMOg@d!VxZ zFT!%efRzNGD>N{fCH8YahO4y0(t#Hdwix-3z}-;p`jGNbcRU~2BG83>1x{1(i(sst z1IwTrrf6D>Qv>{3)OnL{8*VW(9-0_c6??=-RM`s{o5*gto>n3M-Cgm2+v4r*e*EWJ z{NE{g-1ooJJUGuu42dh^=*T;i#9MZ7p8@ZKbT^k{R`X!Eq$Rch1JxWH zG!vlUg(z$&>c$Xf0Lna%Q-FCG-OPJ;Whpphw5x|O0sxhb9jO?N8HyRS#6SkXA!FDz zD>KCIf1requ`&l!TO};A|5FSC25XJM-)s|t8lPDr1slv9CLok$(f>dIXPEGSCgWU{ zYP4*jr#YUwQL9ixc-~{L_minum~>CloRw$W8wfyU&ZKNFzdqIV4Y?xXhV`bA4iYsa zCKB(%N$Ff1a)Q-iV^6Ti_2uwGW5gnYL8L1)WAz9`QCK>&D-vpNVqwRF6H!fkh8<#7)@nNuR3~?cb)7)w%3b-H(HeIRe`3Z_;alsqN<5*E^o#lcN3;}UDmr4fJ zo#HKLi(Q+c^Kana(^Vq4qO9w51@ewJL>PfoF; zCZ#PJ!he^XH)`gF0uxT9gsj{+ux6K=gsC@T*105Y|GBp(mVN`BL2R21l-+PBiC_`Ba)Q6tAYUNoQK$PJyk?V~7Fc_UGukFIX zic~IIB7^gd6sGPLI8))RfA!M0uRUX9iK>E%Q)Z8qxAC-fEIZM2(Qch5A?pPtrqNF2m zOB2G3tlkxU3!@0Cn@7x9|4Au~G9*TvWbZsqmao0ECE!($4!<1`1qUUNnl{X5VwQ+! z27ocHDH2hMcwgb0sZ5|^Bk2Dq`mYoib|;b)fH#DP*p?PU1hEZKk31P8Xg@@`q+w8k zk%ROyc20_9WPJjBDdQ}{!hDW$MYZOr7H5+f)4U(zycu;3+x%sYL&scg>ERjscrG`N zeNYije__C9p)$H$N(bYfHCGwqlDWvNQnA2N^1=YhpR)AeJ~wu6bJ7Nlfc)6Ut3-n; zTGi^-qS?+GaLzBy4XND4(K^2Y!98SbAg6`-qOk zx40ZEa@+KGg*bM#lOiZljx~hwl%ejNwWvvcES<$XuVC7FmgT%kvp9F2PGL@wV{;FP5hG&^LH7JemHk3ilyxo{lrQj|w;*;o&l!n){}v<1MjwvJin5Wt zDzMn0?m3LtH)Cv-!OuBJ&-%GNtFNp@awT@lbqBYHA}h}ja?XHNC%*9(xfhzJO`>=| zvE{T@%?(1;MY3vYr_fb_j0zhZNU_zfEBlc32^CldB!cegHgtit&ZBo!u2aqcEB-HB z(dOHaAk2(Gk?gB2^4h3R#5x-Vc7P_BC3Gz$i_r|XJRQsAjjgBz1j>`JMnN+}66Os|ZXAEO+Lto41wkmf?T;olPhjmVe5n)vcqDkx^0HO_1(kftP`vqgkt%wLDJ+5UhV}o2hFH>76X=wFqv89`(92Fa!OKBdk%|472UPA~ z62L^5Fjj6b#gSp$@tq^fvcqWTlJAXLYdA)0+9Qpq_h)eZG|0J=o=xBQfFp2Ji0m(0 z29B%1z`z@)_l8R24ldP%D}~1F_zyC4yn9i#?;+pIx;y=f`iWavyr82DgI>C#hLyl& zN!->*^oVWr2qCvJYoxJCalE7YU_-jei0WWz=(G!AWY$Hk2V58S)&+ghpk#er{$Cfn#n4=4z1_@V zBI=Pyf?rm_OHY+#nrcmr7odGSul#FCr?jatwZ!%^MCi}Cne*+%0IdNsW4ckVr24tn zi$<4wE~n2ZTWpvJnu#YIP)YBnHGTcbKf=&&oRRhJql05>i9!#Edz5HVYEWxDTlR&V zY~*$Pw=bLo3RM@J^UZ`!r7o9a2A&G2q61cs8QV%vb!N7Pt-G ztI%X#L_2CG3DMDNhjQw6PKJg$1jCcfcGOI;Y&5ABw6L}KOF*MEOm(|zF6@g&R;L$d zNP*ndQ+UHvehM++8uR#6m8@6@4N|C(fPi)ycpuL=c^Jpzp`r0-qu|Mg?2`p>>&5p1BsW2NqoW9Y~k5#X1*Dp z8D=vmo2Q4x;4GO%>w6NMdtANs+2*2Em5#zgB{WTMo({9u)BBw;TXEfy-h6)r?&i5~ zd=uZfG3#a~!I|$AH$kl^G4TEct=bvg+Crl2$m$Sy{XCAgq zpJh5>#$%_KPEMc-cuFjMmhe$m%j%o#gc_N1-SS6-i-ybOZaRMIoFwIU-iG%^Ig@XV zD7)Jh&AJru--W&OG@E>wFXduud}!>Df zyThZ<_9o2JP$+S8?{$(Z-jw@*^JSMrQOu8at|3JnY`juT{4ZxB&U8@{JioFr)FlVD zMf9t@q(MxaUEdjX=7;Ftj-Pb)Y=>?2zK*`!+zc=4_!MRS!XV?5tbOO`s3i}hj8(gk zAj76CRF-5twB5#{TsYP^g@ec=C)9k9o~(;_)j<3{lai03wKyNw(GCupW$NvKn70mjCE{W8e2vOcWP^XoRS7mjyuc>V3;) zXC7JyE$x~_$;;VDlnk_kbvl>-GjF5SObn`Ve}&87x&+u%2YAz3bW4O4)U#$ zM+X1TtoycdC$py1J0Z1y(9%Gk3ASMTPCR|)W!%G`uzDSp*CI(Sl>0f+Pp&@q43yhP z7fLODa0}Z#{P3!e4qw>Nm+(1sViQUTf7NbIxcI(u_@hIzbCzCj%m>;R1pjQ^(ij-4 z;ukxE3Ar37j+R@$T3P>tDw1ddPtS|_goU!~`meD)rn(FnPX^^WmeZ)A+o~wi= z=QCQ^GAEsO$^11-b)77&r~oHK7Ie^+F)9aW)nzIYMzH0qo- zXNe-C@nV0v^KTbdZ`x!r&YVpcE>*|oW@+OeSv8ihH3Ur(exddkC)_L^e(6K+X=`-o zF2yv#Q=x=Ph5U&xFLORFh>3e%Wy{yT`lZ^ZtyP#fGH z>Po7?ms%9p+?kVmfH;jD4oBVgkLWk-M*{TSF=X-i^e9l|fprYQqjB6Ud|v6S zW4(S|gmOhlan$}OeVO`%_l2mt$G|HTQ!(#KvI1w+)<{KNXCqrboQATOFPe|a|AG)} z0?yxwJ}+*@zI?0 z*2W<*pDDG&FeT>(f6Avr5q=>S|k(eSY6ptY)XFhWm${62uU1a(G^%J5P4(3+u-~gR{gES2z#&x2=8k<2eh=U&Vl@0$1Grw$V&txAZcFv8z3e! zH%z2Z`9`>uPrfrtA!^xyH*WvtW!g)^*P2V#J~wbdBm1}-eO)oBM!lWCgTzd|Sp&A; z4Q9te6GN0OqWGAW=(Y5^pNgnSE4zbv2Ykt7ckmW8x25Xnf)rW{OFHY1>e>Becws(Y z-nXg#RLSh{XX8pu`um}g>CgkAJ6O6y=}I`)JQUzZb~)T_hUqg(Tn2L;ZKII((d^H#km#?1wu|X>oi}^V#{3pIM#eN_(v1BQTnEa}$japYk~0&tWMQK} zhHOr}_$oa2(w|Nhg%SEgxi11buk-oOo4Qwcf_YHce>vsG0#Qw!jjKVJ^cznCvbigE z2vWSQx>d`L{#)vaCg&Qk6?5f8vgbK7zYUc5y2!IdopX;BEN`Lr#4OI5=MsxqHif^q zwm&H61E*z#vN~3Z<|mwqA%}m>CUnf*A$>u(^%6WVeLU_63`Xa;FR%Y~q&}iIrBuR^ z{)TILinxC%EE688TvoVW*@jFq$rpr#5`|d0M;Lm|(-jX4bELNovkoh?e)&kN!q0J| z>m7`8lVP-VSj?9GZMszCuPPS2|C?kv*G2)0>S1y|byR+g#&7$X0_%TrqP9*?g0klh zXbPu^-es2B*f`xRI5^pO-vBa*NnGciqDdYHRFO+Y9 zAlU}``}IGJ=r}6>ANtm6^*3MFi+0h%D#Q+&NPHMlc(t|C?a^~={;VToLHG>Cav1ic z``@R{|3+D5^Zl5&f*o^7Jjgy2WXqASYqxUO8{dqm_6VXEi*+C^rT(DA zD%4IQ<5uzsFqv)f|n#u_bJtQpxU%gTs}sO{&kQWUMa zW-V9=q@)F&_*rCEU{6?Bwi08$;IqYw)Uh`h_fUPGvo+1oCCxyt+wr}YOF*S_qLF+a zYh1o2-~Y)YM~mJ{%Thx5dB3rgqteqQuB;`N!{g8rZ%Z-JxXGu6_2DncXuJm1Se4qg zUiR7%i@%b0;g7ZayN>*DXy@DhEUAIdlC8bpI~}z9EFx3yGM7a@x}Hk8%otPl1Ht&e z%SN?V(v#4Nuz#t$xOJbr`mpg{!-FhP`H%A zHq$CM(9asUp?(u=YvQmN?gE{ib{q3576ow6%j#n$_aF+0fM8!_DDGQC1()aGI`}wa zaE+h`<`Hk(pSED=W)F_6gL~V?DT0%tI>$7)fz$vsxNPjEZq%Y)07V>uksM<)<$og4 zGOIhEiH!7k7x(BF1Qgq_C1tBHd7@g$|D*UiJUih;d{OFh;l(icTaXgWZ}0ntIuO_M zJNHQQSR;9aWcYB#>wMGspnsCNHeCIeszPC(3h|CsLz?Z6<<&a0F?^4m(kaPp=5hIs zZddqbpVze$F9(m!RQr*;JVl{CnNj&jx4#z?^ynq58ToWtxQIug^YhZWCP)hVD!XHF z7gK8fa~@S0>_mP)p~;R~hag$A{M&*j6YX<>#3{*h&BpqlOq+f6jgl0HZR3@^;rKH1 zmK;8=NFp*_%0Wt7gEH0BU7ip+Ev%@*UdxbF)K`lRUN}9**kVkpl&oGq658?UQ z@17^G#Hor&pmvMPqrne$D{pjm@27XDa47C!QhI|PJ(F3%rcf40_qS=@J8$b4CGI;R z8LTqpl=Yy%jv}wHrbwF7I>b|vv{Fz$+icu3q7@HDAYEwOA*ofg7B6FkO}97B#?Hy0 z-#uP@RF|OP?D_J!0JC%aE2RjJY!-wL;Jc10O6qZ>wK^Ym~xf_nq-iAKph z7M|#v_ISEHk8U^vQLS2%IWpK9G5srW2*ms^U1iUX|EJc*IPLQBQ|r#J%o{u$+*tqg z{+$};(FU#aDEsYrsW9v4BQW7bp!}D|ZrRRnUl+T4JAdUm#if7$=3j&zxw#w`rNXq` zffu3cftBtvJ&zBHCplOM7Jj6;jf?D?7vKFjUY5}nd?0e}^B7{LAnUi7$CAOXFPQuA|6hQnU=8Vs3$SU|hX&1s^)Un)f=pr9Q<<9|Ou~LN@ zp-56cbIs~}o~_RyDw{o)E>JQL_u*Fm82y7L)B7RUza{^a=bD@E3OOk%SLt8N;WY~9 zAJd1=eWm8w5o(vtj(i1j^6qx}Z#17O-Qn>5o4yaucg4x~B(w=KZ1-FY%KqYv4j5kV z2VS&X&VK*)Gtd_2N!`-co1nSQwF;KY2LnVQ*$fPB z%Ebn?ex=xAqYM&0b{SG}n&i0k?op$Iw3@!KM0Z>qeoVyYuN|h|O#L5UC$Mz={VyPl ztyi7u0|YlJ2{v!UEvim-pZy!>{L`0nfrVF3-lqt}OtTQF?Yz5**&*0@Yy4Nv9f9aLl!6r^N&}0qmqQkMg>dD5JF{XX=GBxp3ecbEq4^tEe5~Or{&gNv+Qe85g>u$^YNY4>`o`)x` zc=EUHzWdeDR~F)C#!-$qL)_LXR8qqF(aV=4Em55|N(zM`Mk81C){?>o4&;d6R>FJW z`2ah(ZyE-5imT10dH7%LrfsjyU5|3$=e}4a&Ys&*I8Dy)BiP}h)EbuSJbdeDAyrY80Hv zdb06yQR^RzMzBPgl-0z;xu=AK8MIKFBet8e!9JYh!=~VhDZ)Tq` z4y#~c_vPi{(u=fkQ~fl(MCTnz4axJaoAgky<68u$ivX!VFUJRowVI1xmd`gQnk`Uh zwXihcxDP%Rbu#V#Ng(LMqx1WimiJRuPG^^+5uIw@v;?ItDwnkX*KQ5`?bcrvz1l`&Us-O?5=AR*3?aU2c2xSo>*dD}Zd|Muc=Dw#n!f!h5V;!-`75;# z^t4QoS8lb927(&gno=-rnS)5VJ-+suRE4s2milSyfUqW=IPFr^*ExXE8>Q7O8PARKtq;OT4cZ^XP6VX#8Rb)wvZmD!dQpcPuGt&+_Pk!u$PK z$+P>fY$o#zgP)vZoUTb6wEowsAwthj&<_vjslhSbh zL6!64_+^h21!{UzzP4;!w&BU;!kVA9yBU>IgW;*gSmP~)v1i<@LC`SCCaFq1P56TW*{ zufRH;#beTKB}mcrXD?O0GJpWSZAzWZH2(x8Ysa}vA1<6pzhZKuLJ4|Kr8d40U4E5#<&m86 z#*Cbcvc*;`i{r1hs+I=j5&12F73FWiN}hxb$AWoCpgECCfu$wOO6{tAn&PCA4~yE` z=nqDqWQGoCXlrUR10<3t$>=>ioA_#=ET_oG z&H6Fss8zCvy!%m99K5#N$}|9nV*LDVqtUv%*dJ2Or#DN`)<*um!$QTz#QTx!tNoFw zOVqgQyX{YQ@~KX56FE7#on+aF`Qjvy&zn)5F6vmT=JMox;Zk`w3;yb$kOM*yU(MDk zPygBF$%*CF3GYquTK^GQyWfhRuu}^Z1VYjwfW-$sc%n`H!qB5I3;STcKF8%>nBS9dGW?;gFCvWQ{QMsrpABhRPMuin7P(pq zJ{6QNb)KKc(ji)6BVhgUzgLQ%y+tQ@l@#8`_x}|r8dqWMrQsS=O>ZvjC7wlnoyty( zj9~FhQzi@<5G=(|7(>2kyl;y2? z-c5~L>Sb)g^j7tA&LMTU6isCfZkTaAPy6wO(}sa^YT{So&E&nN*2NejIyv4n3nzAg zCHbedtyK#+KZOv<-A!1*A)G&=-VB^!l6(l#eBRSt$x+B}xWqPaME7;aW&%f^L%zGi zP$8z5Doj)%NkOxe$2jcW2RN~ko4b_C{3}+B{O^A5|LICS^(}rR(ubsX)g=uL)Ojs2 zFp1Hyr_j2N_E`A+4Y*k)4w$k&N*|94JisCfHxAM|WbDA>*D2kbUns0e44NbxTu_6* zi2wOzJgZZmQsT3oqKRN_7PIAYC8qD2WE`sLLkxun*35RHy!lrHUlq&O@<xdnY}Y@-eRd&z$o)q>@Wdd;FypQPg-?N?~tx++vB!D5 zCMaz>bneRj+l?^sa6v#?)KsUIJCgsq*1C4y6ZL;Jl_kf1c+Hq{3d16ybi~E2sV6;4 z`>Uq8KFxn>X^4Y{aP8`qRjp$_^kAOc*khRXT{lLYP;}es#yL`1;cXX5czRuRJ8);1 zz^3i?>@X9{0Yi{q~ zB>!p_wu`NiLkylK(zod4;T_z>`FjPhit%?U9y@w{>1cTu{dJ&ioi_*4)z*$UAkf@Q zdHCFPuU4MV+3<{7$3g&8fJgX=YXsZxx1Oyn7B-{LjJ{iCwWE>=KJt}MRDMpJyqS@_<&$UFoQ?T} z@&}{SB4U!pfrs+h!Ef;r*m?|@z{fUf^Upy~INPVIevfc0=^qBUea5uuX!XRQ%^ja7 zhr1Dwo#1$oeHRG0{aq~}F|7A*o~oQkm!h;Ms6Tanm9t_!|CktAVE$i{rp;g?XPi!F z*B33WU%h6!l#>`#kw-rx7P|}5QUi8ZS}|j?@fO)4$@G8lzmAp}iM1T+#c5@i)8CVg zvm9Eq5pNkGH@U>PZ8dQDPowI}gj4vb&*KEECJZUW54B`EusMc81R4V|FP{pZ{wrN3 zxNIy?G24<0P}^29w@??Yk^csI9c0LSvo4T(S~vO0@LB89K+m@7$U5in2>K&mxU7yqDYQ`P1k2oKC{#!I9o7rhl-5Ka?{u z9fr1-6pP1%T}-$>!62zRNrwu4-)9`^Jf)4-!g3&y8oqTo{2{utFjXYCKz#Vb%OP}A z2`YVVZ~s?xH@M|Z=8$6Ga>ElV^`4R9R6Cq{g>Ay;R=BYm2GZYRxPw2-NVJ1PPeD6{ zeReBR3R4G_u@!3KFE|?o7AIKV>D5=nFv;rtQ5C{l`jMG?qt8xz|22fzLlXhVC6v5d zJI;E6evGqvY)z!1<}z)=R3D?blTpGP>n(QJqlDa@wW=2Qql85Z0dPa5s!K?bZCVp@ z+ruwW6j;z)+mr;-G%p@&2=4z^L+a^9AwREFJ2#iiH`~03`d0EDVo$!a;jd2K*wtKN z=!KG$M2KXt%o5=J@w;PHV^4XuA@FrPc2NmgDr<`+sAU6Rkpi&q#_YYJAAu?)mG?o>=~Ir=Dl`xAMyRju=B=1Cb|+7PF5 zHu+TlJjrrf35iVH^AFqw1MhzG9VWi5Y{(u9;T+Zun{RBAjvdw_^msv}Vb*aFNR&FX zf9_4!L(5>#KDvY_HOll&hFR`NmLQ-ib|SZpg-V(_D>I^*MfEa`=JOz)Or&S4 zZ>rmV6lnFLLLDYie;MU9Dz(08pLOwcD*^0#I?jeKv3$8=Yo2~?VhFH-egU2ClCH<( zNyk5KZ(G!KT%S!>TkWJ$>1)>?Y|d2|)N$+=IRK>j(GoU*wD-eOYC|uFJ@6RqwhCx1 zXd!EY)kBGL|IRT=(%eSY9wYWdvQvW}*7X7Cl#S6d)3Qy{%9YAmcNrNLR zHXe!8KL*fiyQ{!?2Ka8gvq5+p@~f{y4({%L1co|!n*(T4`X)!1(4Wkz)4~DN-oCbd z=J{3$g?_|)ZEH${i!AvY2mzMPO~d-s+9cG#T0wg!4WiYA0@>SHhkM;X6s(T|7SWHO z9T-s1byPr-+=2F*D{g3OM|(Q097gldeITyL0wi6JT4GHY^b_=9W?i+y42#up%p>2k z(b&EZbTtZi!fiWe`izBqzqYD>thz0W@4l;u)thu%_|%Z;g{ZI>H|(iu@HR&z!B9;+ z=&cff*7trf1U56ayf-*T3`E@S-+~`5&mBG z5;nUh1>Of^@CW6s`e_QdNS*OM2qbTh{%N4Hvr_ zpv{sxov*ME_=Y%Nf;tYhLDC%e6x|{Ai=?ZrTfuT`uABM|mY{nkskO$Fd{|a|+ez!k zF|CU=rBJP_l&P%6+eNQf5%gmgH?PtIdtx(kNB z*%&VX(3`ANS>-TsS0ujg}EL8-ZTGH@(BM1 z7_Cz11c`1?+%kB=FSbp`P z*1y{fh@Ha7m;<8Kq4zB}+N8)>wh5h;*a{d546WS+>Bo5cY(>HBVP+=<{Gv_+Sx0l_ zmJ-LeAYfsrVeSMG4Dmhv2tl?FDV+i?N@fET?qylNm)9ULB862wde{Swdep9vu?7$n z{qn?IL8|(WPRaEx*x}9<--NIPd{;G^v-RTC+hZU=A2rvKDcX$IEf}4LOlkYxTtuCU z`<_YK4piPC#*p{=p;^DWbIecs>D{I`z$CO;q(1k9!mY3N#;auWOK-{1Rc^TV`9ijm-+1;j9NxCoF}s!fI_rv7RKeMD-941!;g|WS*XC7=JLBy@V6MB~%_{2D+j}8T-^$vn zOVWBw>N;uZw#EB+Q=ho)QXDMd;tP-$_`E~*(hB6k@6dzRBzlN)YJuW85{a6Pyy$aN zb1>rgic}GF=d!i4L@hAkD|{EbCg62;y!>%&WFl$#J|hot0P*Zq!)Ifh^TKi%c(iQjmi{TYKfKJ58AAweKf&#UnX z1PqY!fV%fg0q~BjQ)8W*B7D3Lq!Lt~r}nUw#+Qh2g>Q$#&V(dBOMk?ncRfCgzNhP; z5Lrf_^%8y2vh&b6c53ui6)vdB_$Y?X&SP#21~tf9^DTE?dz|c-DPoAnX_rzfd|Yv* zVE0CM4zV`Yc7B9Hth(H8?NP2$XI*Z1%`skY_C_ipcGW@AKE_CK1R7S5pW*9$q)*~; z3>UYHVyM|Ie_WVSY?Kn>!mv*d)U;Dv(Cm(Mh9#k|9wWWw1QuOp5@U5uTQBcFRy1En zgOlxJ-%3<(DNRBCK#oku^r@QcN7V87A1%LNPtTP5KKBenXJqKG_YiZ++dh3?R7y(y zEed_VZ@6~%M z$jvyaUecV;>sA_`(X!ufE>+#UN34Gb$De&^1V`Pe+qa!VRp-*|R^FV%9TW(7DqU>S zL4A}_0s^|%J)k}{pZjxozB}XDZr6>dOK<)v@}p#Atq(}o*P9#Sv-C9d*gNOsrZ+{% zNxT4bhvwOXFW*uJ0-kdeAY|`wWRj0T--YR7nlBmNF34XoSYG~Uv+M?%k7!J{?R6<27l=bgqE$lguEL@INz)ZattBO+Ae%%{S={=kn zrimq$&);XX=s(Q)uyUA)`6kmy+-2s43RF@1-iC&P>((6Sd~L4JV^Nna>fgNHi{CKJ zjo3u=xcR~(l}=+_xI+?yYZXjSF-UpuV>tr$LlZENxaA`0P>%nA3;2 zenYMRe=8*6peEXf(Lb*G=$&i*2PEAdaC_e;ds#9%d3~~5m9o|rFw}Zf570j#rj8)5 zox1ye%}V%eg-~Ar60S=e`mL9etZS{nn7hy2u=RxiUnBY^6pq||AQW!9Yguc(3fEt0 z+%0d~x|M1uJ&gjx?iE3#;0*1nVNY<|{&3YY17hdTXxeQc0^a=iYiN&jMB{9Uss?-? z-Ha-KfMg;2>{p?u32D%qZv8Cea+fwg`WjdeN8eIY)00CVkV)SZzy@douZ?_cU&n3O zH=x6@m+i8*A_aE7s84@2LMyI^JaeDZze}Lblt2)Nk0U+j7#nx756sJTFDK&=BpkjD z-_h$s&&yKQ7DUkdx^QuE$gLcmoA>GL(da!TkM$5jpv`DCfmE;ZhkjEHkVB_u156C} zokl_KS_>)~Kq*r2#cRY$%YlC#>|xw_F5P3kM##+G7J;g=1vl>}+o#{{A0K5d!*?r? z4~h7ohda%JWv`t)rDf0MA0VG|27xum=YJLV|E0ZSNJ4Go9zjv-GmnLnW7hj%Z+59c za^7vPvqV7e>``|JZ5gkK!`rM*KZ1QX_J{N&4tqg5=Ph?vqV5^xN7Sdc>&6fbWYLvm z19~Grb~Fo-vRt1u)@C_^AM3H7wuV?_oZt@ZwN?S%51kb+t;<8FZKY)-8KEu<>g<4G5+E) z_dSCqPw?5!E`e0Nf*@Y2 z`(AL2*o!s-VJX5Z7du_45Xh3YRDx8lZ7*F+%jP0A{twBzz4jxWKowMX_TJ8m6>0R!XVBY)rrqOH7$8@)_>YYN3 z!wG7%Q_rs>|FW&5S@83w-P6!pRD1eD+6^$wK&@X7^|@EE&p@vTwA~NpAy$`-sO=s$ z*n0UMPndl^{CRtjHEI=b%dk$K4K88S_c*~-0wZSTwadpC-wL(4?4n4~hZ$MrYc6+- zB@hNrqleI=(WV?ks(zLm8kku*Uq;sZKrVKHHlKxsfq8_ztHJ=8uuH{?f(fC`?GBBRBXX|rQB?p1n9D4~tVe6SZ&(kGN zvczM6LkbSmJ%hlC(*$c0Qp5>B$$9&p04u&;E2T$zp8=09s+%F0_ zq-CCm3&&4yZ6-FE-twiMC#XxEFO1D+-7i5TM9{a`Mxi5jL-9*cj|$XiFzf+M zJ-h04k^;$S+U%irr#YEJFM0rJ1-7EQQ1b`IhtV|f&2gj>%I+ole6L^(2I)1PTU`)4 zQEGrn-0TMwoVJ}VV6S>9-p1n-o{UV9LXediN2gW#ZScM+0V~*DjnJkp*b{kHE^wUX zb3e7%8tLnDm?8vz*cFF)ul1-S(Qyp7;0q*bP2o+cD0)QSdI^X)i!_ID%n5qk9LsF^ zLmM)5Fl<5XU#WLI* zsUQA`eG8n0b&s9iFHy%pH_=&8r@oBaf^W!k=Pg)GjK1r@3jUnWIhq>kw#rH;fRI_6 zni@@|Xt{10B6$Ma+jG~wNP=F%PkgM760aX?{jGD3)X@=SoG^6lyg&egI7IHGHJmI@ zHeH=t!gN+2z)3NBHO5zwM*GLXI~~cgCbZvyuk#v z7u}nAeL)5Go@gQSWzP--6kQUBQiBuOi*;J1CVD>1pumXhxR0YyZ#mYZMTMzV$Thg& z)*B!euidu&OYM3xEK!Z!04S(S*mKCOJ?s(2KFr<2fvjQU4KUbe`EIcyx((+_Poma5m|`-+P(tVPU+s-?Eqm^ zq*g=us^~A}z6n$Tc>M8V(p;ScjE%&yU*daj%x>M>TUYpY4yQrAE@Mw&+1K--!lnA| zaP111d504E=9ti!dK7j;0mI|JIW|ULcgDmbH}|JtV(<_z#yh)mMu^@u-MRCAOz4z7 z+GEPxYfNNsseux`e1-()gMf;ItVJn7hodcXGxS=@&7PDhc&e*(-ofUtK0{MXECj$7aAtD`xbN zn}O7=Ea1E2%YHwKaK>h&T&7(mzG52>-`-^M>jH}4?+gLG4d@5S4z~ZLqyWlgSyHZ7b#@T{Bk>%X**#Zn*KvR-wd z-3t}=MfIx)L}$YG%Y(-luP0!pG5YSCmrYseb@wwIfUio^w?RIGbi3B7{Op1~bR zxJk`~&DS`jy|ncRU@V^*u>*k>g3qomVSS`hT(8U6fsz5h>H?OEtoXl%_7xt**T9z- zXOM&wV5D0PuDWdfgfVpkp?LFlG8UlLfs{DYpbtsU=4FESc zsmRAp?Bg!*eA7CAxL-SGt#JGL|9cA__h^YHv-lW7{TbuzOFeKs2xw8)@|F$&`I|-E z=myR8M^L#(s@ry%yTtu^2`m}tZ5~>?j!Xk14jNGVzpvxKxBrCU`&vuD_|(Q2-{KpT z(wf+Q@(;$RK7`yJ8K)(Xqyhq@{$-F_{bj)u;BN>Z`Btgt0@&{Xem$;!PyfE%a?0ug zNJYZffr1?gZSpC`04r0~Go>rD3VPz|s5 z@97`l@(%KN(pH6|C~ysD(xg)7ABO+Jn31uXJm~Agl0Mi;^QG_QDWSg4PGx=;d|C9Q za3?%a>^8-1hFW}=4>A_p?t{K=ETgL?109844?MvBM>4yqPet3yXUbne zR&;>dBM(%}BWVueeBx8F>QPm{#!3v=Lx-9+fKkXadj>E+^rg`aupLioujShLH=26n ziv&dLvd&%VCS=U#rBi>)$IxjAknLU(a%e?qNa|I*2%Ojeq(qq(sR^yXLgwuWQ2)O^ za6vo@HopLfrxoxaMu-8V^aH88U9(lk#nJJRomQ>=T9#P3_mnHhvw80$B&)@FA&p<} zA-|cm{Jym5Z1t+70Co}#9zmWLkYsp1EJ4Ib4@=1XB#%^XAWqZOsnrLa%G}1n#FXC; zyt${|*yPuk@tbWs^=j~nr$2g|OdtEv3X!+S*oNt2NdB&7ZL*@3kIz)A=k=n5Ep6KM zzcN}{Vh$ZT#huW%tQoTxUHN}TG_}8f5h}8M?ZjowWV@(RW{{@UOJgWdBO8NC6Lzlu z(@;xpToc|iU!VAy_I~<#LPU_(b5mzCVPpq7N$8|?wj(~qGNrTMFJ-D!x(-V`OTje6 zW@J!075NI$@xpk!?sZ9a^otaUX|uhu^rAe$`L6}3>?&h}Wxb!@*;+9ib@Ao%kzzT>qZMin7?n%|w)>2fmy4tRRK0PI9KdsY)5EdAS&21IPm=s% z>ER1sG(`^a?W+)wBN)(UMJVcz5?;$ymR)f3xBh}V$tc|T!ef=D>Y3i>{mnw{ef!daHU$Mxk%QS z8xnE@#d%d;tRs>~nOZGjg_$$HXZv(G>MOf~@aNA8pQoN#B>eY}@^ja#l%_9s;&jgD zi}`F}5u9f=PXY!nkco=VB!@wzUyZILFSJNzVjIM)G2>b{bM1VfC>5teNEmGY=RNqW)NJuRR~oMo=S_dL*oP{@K)da#V;jHTa9JSbNey4mU zp*6H3+#4&@vL>NZjEpLF4R;xcqB;BdNS%6QmAcW#q-$2j8`@Ajq941HiT8-nN~9P< zB@W;c>V--=GtN$EnF+%S=MTtLLM22#CALYZqCy5}$25doUKRMmcE z$GqKSe3-B<51L#&U;6N1mYiNoR?s_5B(VD!sYQ-$9V5RNZ*5HzV#hV5?kl?iJZ3{Q z9Yb6RpMRSMR;0jU09*+JQ!%$(juHksZ(nC&=Gg6b4}I1?>JQ(%e=F1v{tuVl(CoRU zW(iFUy$Uw$1rssR&Uclr&Eq@+cE#V=pZ_TT!(HE?cI$4xt`(j|3Zjd@?MxJ?_FvBiSo+=@g~&vR)C3Xpq%Qm}6I3<{2y0Co=L+|K zSLP;|6r9iGIT252q6x-XraZ4w#_|qP+OJ`iUfydv)y&+8)XPe_I2^T5S23fl$jq5vr*OR z$Zw2-X;Lrq&-eaqBsF?0Q`~Vp&fi8lqTims4ufOOzs1Y^$`e=rj=hjnLQ}=@rR{CX z%hHwZSg=&NF=QrIS>MiYe_EZ5Ah5mrU`&Jexk}OyaJ;D}yAbXNm^;1lgzA3c36$f` z7%dAOqp{kb!MaEi%Wrv~q%cq! z0m&tv-WTU<*W)j%9_gBSi(gv$l;RuZ&wvp(>0$99B}|{xNiGN_jiMAOWq+GRB>@*j zn2dA^VSM{Qx#1)|}RgI9wV6Bkm z9Z1%Z{H&^AIH0@ zilY8^idm5DFr|gbVrbd0eMf8ssvwjiH#P6oSeY zZky{qK@ZIi{~Ec)aR!L^S0Byu^2}@1k!viNH2?k}B;&|wLvbs==ftFCx*>cA4zuH` zkJA%<+Gpqs9(&cg^lg8}g5`M;2|;qQLIo>1-YN&h0CPgPo5&l(XGSz5MCVf2QImsH zaFWUxwlB$oXGByC>C*$k;L3gp#VB-zQ z?9yM)(dTCg4>Vekx?Gq0zmDN$gN09uc7e8-&e@{+68LaV=;BXH2cPpXZ^jSaOlkeIQ6TzjfR$tyfttIHD z5rN=-;kodTSIw$Psb4rtl?k&pIbsd9;Ucb*&h?#|`nB;x@ehH?B^T8s+K4)wq5SC+ z^5v9|lq2b1KD@Eq3m6HMlK&$q)6V@@{m>#I5ULU(P{X?U8?C@Ut3@jt~Y)b@8|*3sAP(P2-PHFX1F7QzgN?g8|m{{EOrN* zgcFToH?>~GCAsYPs)>D44ETQlO+d20lF7%UzBiFC1%G8wM3e?9I1X%hs>v~{fHJ#@ zkIOx;{Cfpdm}#8rm7s6OYS5J$kB2C5qF7M+g6FGOAH29}b_2+>oy|Q*$GclQo4cBO zI=bLhO*Q*Lg`0f25*EHr0g%X592E}Ma?7Bw>^Q@nu(~G^9Tt7Jm<2*>PF>PL=6(9K zDc7aikUP9pvjdQP+e7X-BLh~z^hu7@9+oLh|9B4I!F4oHfoT~slWT1xo{}yz$-!ov&bS~&4k-p(+%3W*HwjFCJbQ^4@745N5aV@X?AYYVWq6CF-RRFKVyI3%=0 zgS-K9h*)S2P((DcqhGckQM#06hJ-9}qG3P?H{A|Je3-1jNuXI=0;cdXA^r}t@KA>r z2>sZ7=A&HYWKWYA_9E#qbi9Em9FV|FUJzI~az%{@jvMcZc4@~h%sz>z)NG50MuK)j z(g)_NcB~*w=n(6Rhc?Q^`vJ7Ih!p~H2 z{(?n$2S=S(T_*$-HQW%zMO6lvCA~6%GL}chA{ocMa=L(1>0MdcMdC2xVVDUdBSC!% z(gf$gi&0`A`p~1!sr}HHnsy~c82ng7o@=XymIS9+8OdW68e2qxP2jvkqvWXKip2a_=02($hG1}=<gHP!I}UZ+W3^O09z=1iVr2 zMUZW}13_yXis<-O#e7jf*1dEFwNpRpB&fgmlvHs1-P2IeYJu)BwJP4ypQAafOyyy^ zVYr+cKY-GOZV4jsltM8;#vUZeUBq87MFs^?kQ4@ZXDlRi{DL#d8(i41rAT84ech$A zIMAy8APw?hYmXAYwUmoZZkd5I@|qgdHbhXCg??YhS&WfGQV`Q^0dna9dAH6QURJpx zCfz_>+Oa@8im{}Ae70~x!x2Z7mSDs}v6PH_E0_%pU9HPoo4Z@%JkwcjPM?VKnP4uVv9AvH9{qntV#*^h;K6 zC2)%q| z#D7>G*}rO3&i4B$AOFLg{aYIWR6hP^?%ah7>)i1_^Csedw$IO&#{cjmKM?`+5sd(1 zC*R5Nvt25?ZvfEPgMYB48pfia8M0CC3mapIjAXt3J#zaOGx+3+4syy+Zyqm@D^Ri` zB8rJ2x;&=GG%~4q$Zdy&C5Q`Fagcmt{EHzF+F>gUDwH>jiB-8whC;$cM|@Z#msNTD zfK_DH@2qL2?3ly5vs8BhEz@>X5y!;Juv11MtIYo87$hzFw{4=V$gPB8F>F@R!L~Bc zQ$e=p+7UtqNQ>sAF)lolj@4zC)=;;xbkNLVaus~0_!+|%dYWMaQi`9JExu7*M~BC$thH>rB(};o7s2L!6g;7& zJRWuysEwI#yrWc(Fp7819JqE7sODOeauRq24Gtu2MgqPcL>2%-mcC3l`JiJ*lWpZQ z)N}q|8Kpmytg9RqXtX5rl_RF&oJsa2hqerxvxTzaOq(pIXbFe$Z9H%28AngeSV950 zp_A>e3`_{oKU1;<2dV*L!JUU%HseqZi==327PO#LGpAgLA|s(9emszn6|`j>0`Zu9xVQZ4B#{dIF(8sf;iZx9FIQsnsQzp%BAiSTQpWDIC` zlPZc*KS1c4Tx32t#M0RnIRQUvp&dcqu#DY#TZjzmG9Y8$5|l$Q0?-X#c~NbfL0?|r zaVkF~8HkSHIg1~vBYCKw;5B=jU0!X0L z^)$#ciNac!Y>v3gTURqRTL{aTOK!{hTKy(7J28T2Qpn$c2%N+DCDQ1P9VUgFd3WF` zo(1VZvaKwyPe9?0iiRH}i-KmcplUIx63v$*0PZ=JK$2PRLKJ}3DF7**%Tv9uF!wEK z4*@~QiwUF`6!lU%QAiI*0@jxnqQ!wP?4qe&+l0ZwX3Jp;V=GQb7OMy$J*UjI#1>UZ z0@cL)Mad!719hy0Nn&&T{nog1MJ%Lta86T=Gy(EoN=E$nJ7`s(s}wohvNXL}Ze|Br zjE`4-)YT1FbH|J72&7Vmuc?vw5^}YeUaW}sqAw?o!9{RIECJ1UDbLZ8K0_K;I;z?1 zr7~mLz^}u$nI33pU>)=d`%qu6u0`}Yk=U50phf05LkoQkW+qM_ccMl`>WX6yRU^`! zE_`F!{qTGC7{H;F3fDR|q0D;PX=)I%`o$vn0Q8=&<6FCWLtU-Mt!(Y?iTAXvXbtrl z)rQ(vgt`}j@_uO@&Mvqk2G~X@%f*cx$hMKVvHTgTI>Ho;bS^=fP-W%Vw#zyG zuu>igZo*2J3PA!9ediM@%0?EnnOZHe3SL4$!4!>Ka%^Fz7?)2088)$`3ho(*LPgW2 z+=8xzohjKycX9~ynT=8LNg}(J6}d!ShE>k7h{snoceS^* zFXI7cZo29OY7Jnwrp&M9yNqoHsNRcA%5pd|8XZMY+i+M0Nh*{k>MVt`l7O$QA)B!e zX+5%(MIWiw6+v6(Q{8H$s$ni}#}q{6)2ODxIvtIZ2u%whLK-zmn~8$IWFlmWT$)*& z6ImtCLw9qHi?*PYC@eSJ&_T7bd@>G5Gp6x-aQKXswKAm)bK$6NJ*TdrNbKevlWa(H z6lI2#q(mucIUhJiFp5y1=m9CZr_8ijM5e09TrhGbVKLb*m~bHgEkV>vP7iscM#aWK zq4>0B2l8a#y%gD-^fKQgj4(ZnAgh(&5TEry`*OjE-hyUYMBuh#M7nwuRF_PvcPeV# zjae5I;zN);8x4j+x4P#~$3`pIBrW~j(vE`f`;(XAsMM}k|Yz+dFgvF} z6p{4ejWJ|~Duw_-L*Yr*pK>3wRyQoOls2c|1tNHJL>jr*XVB5M()_ZC9qi6O=H{ zS_B$vE>};$m9)nJ<~}VMu%no#d6bTy!53AQ@w48El-M%i783y!6DhIdNr~_Em3E|jCEbIyozsn+Emw?w|56+7z+Ha3HO;*2UW))~XP436rNnz1 zWNh%;baBXa$;|O8c#Y^QyV^otjjvLn7XjZeSxzZsruX07($&`46JOf4ytTawdLsW%<73{UZe|wij@pV%la9Spgw#(^q9(}v z-9m|IfCU-R%#OX%MORLyzf+&jdFDi@QD*@^tZEapWHC<_Pn6P0R#XmOt}}~!&q;to z*_lcaQB@rq<1Xw-FrCwN)hc~ZZ$S;qj>A;LyndC71hJh7Hj+2FUBX%fxZ43N!khHa zFFHJ#wGxOZ4F;qb0%YY#<8bFL-p zmslIOgPT|JVst^JB;pI`D-`9Wzx2u;`1t^tX)%z`+`#E1(jT=Z7&hki0h!Y;KEt$r z_PeCa0#LlwiM{f#>(!{50wk zb@M0g|K2V?dj2QLXtJb(DR!U7_)R2x?oi2|TXxBwlI-cN>7mzrmyf4ynn!RG(hEv%nc@5%pPFp>YiU48=d|BGsIAJ80&>>Bm~Gzh4gJf%$Yn5=vPZyW@& zOyxbv0!bHHVpT2mn+aC(k!2-}V({t!2OW7RsXM6C4uLkA=Al)H1w}im*_csG?`mDq zaeS*(@SI0R0|s;C)|n*o6V4io7a8G0F@d>I#7opf3Uxt!l*@~v+PQ4R*;{`7s_Hbr zv6`1J?^p#xrOgDprZ|JrIQ%_~cVfwAt?exxO9-S=)Z z%JidWJXgrLU#Y0%ePid%q?Je~hY|(X+jK5FSa0R^hcG^L=4xo!t|4L0#bNzX5@@%p zm2GV_a|8M_E6eKtyPn$Kr&{VfyA%8a-INu42oZdtjW4cG;G^4#0g+SAytg8P0x+KW zkkGhXok-%hrn$@;@8yrX{DIH~DdtJ5rjxbM()0^H~hn#QBkB zvLs^$q6|-6^yjdq5p&zKd1b{vd58VOT(yu1jq;*p1_XS?n-XF=Wk!4u znSHBV)vThiC@O<*(Jah*4Mi{|ArfMdp- zvdn!ekJ%WnAfwfDxikZBAafs!yttqTV;g;lna94FMtA2f7^}v-I6NWllkx7N8rC$@0c`kh0#!x`nK(F>PWCZxXbVI#li|3cC6|>VA%9 zBhXX)wqRGsI`KiDi3gP7P^Rdb87p(at(+LHSmJjsVs<3OWQp3JT<9Q+re@Z1MPvnp zNBV?DvaV#*Hvf=EL|4JzEY6wz8z#(xzp35|7eu+HgdK_OI$w#EWHc<<;t^iO2aMHJ zB?^N$xxo^v2kg*MJ*S)%`^0TjR>h!TCiweMk!sxD(bLw_Dr)lb^$OTc?178RK1rJW zYozoXWl-{+cHiCSG7utP`0%k%m|uMp9IWR)B_dwh|D@=8`B)E(rnD&t>!ZH~t8H6&1{9JNfS#7kP>Kr! zK`NaQsL?UpK#|7%ZG>{-@R10a8v|1FM=c)!Zu9ff)Z`lFw9^c{q`B13QWtXr&P3F9 z5!W%06*&ZEdunG*#GQPwKfduFJZ~Bu2tvmi>LEVCh_>b-J zqsM=Mux%Cw5>9@Gavelc;)KzUIKhn%JS0M16u^VjsaTjbFzl1{&ob@kV{Dmj-FO(f$T4!5%Wv& zR`mgm$lD=$n(IKn1*Nxm5d?YhxA;3wdGqmj1QWqS?&@13Qs_z;?7WfS1ic%UtN-pd5-C0~Q-tHgM`18~!6-iYvCAd~H}7 z$S&pa?lz2!GZRJ3p!bu($nJ~vP}iwdzw?08Asd$54C&=c=o!jY>l)pu;p(Tb4hh$n z_^8~6WCM?{HHT&8t-MyCAyMoN0ea`n0!764vD|I7FR3ZsOv>0_s-ror=o49<8F0A*95@3Bvy61R4yKa1Wx~0fI-8 zqt$wAtre5FWo1+51|$lc?RK+Wr1O?RM_0-$0#tU)Dbve*XO2&(vdpUWR^|KTE~tt5 zAJXE{9fd{l4f;HI5K$>P6a~6LE-JRH;a2}qA+Y5H^QV?cT@(Fk6i5r6479v`Hm zpd5nXnnuAf6?!x_-`ZgW0LOsuYCrz0!Z6a2;7WQPR05c+!CTpBP9^7ZiEvn>WCq-7g zf{~CM;BKlJhx(^x;AN28Hu>MaPo1rENeD1*AIOg~*H$r>Ml{_8#7V-yA3QkOyeX4H5^1Z9z!h zZXHrqmQycJn|M-hMVP}Iv482^(BTsA@gM42o;~2k1*Uddc9N&hE3l`{fnq#mrmc)s zBx8JNliDGv==%E+zgaQXD4 z^1ds?`SmJ6uX)%Le@_cU)>2zF+%SucaymSMlR77dGpe$f{zgz;=d$vA!PIUl&*$KT zs1MjxEZW88K3AXv5pL0LLD!qPZ%Y`>nZxB&Kc7lO@zPN4x`{FX9MfF&VTa8>yt*!= zG*DLphc?$U`DY0{*Lzan6O9~CNPxE^W!Z3uhFO7ccAuN5`q<rW5cBWnAya z>UXkwoi7A|UHFfWrR5pSO-yjs;IWlblWLhsJkIJ`*;)x%eF1sfX}aRYsk*F($6`p8 zrFMm7^D6;(!|Fwel$!9#b%cyr7&P5ONXF6YaDzUnMEJCF(c?aGAp`QQo&+(V;Ey$S z)MqR<-1cCjL5ca7Y_QR-nELljOr%dLHx5AVQ5+rFUT+aX@U}Ac5{py1ziRM(C73dM ztBx9+72yC;S=kS=%-TlZuF2Luo_<+LlhHe7_IcJb7u&`&j3`pz8fHX8L3j3wSYd%J zPBU+QMBpyFnSEbGxpyQOu@&({K@V|O^zWNQnb?fz{AVQ3Xy|3QpP+@tIYP6p>{VUnMbt4im0#9>)Y2nt#EDM0fMG4gD;S|6ikp3FaZ|rC`<<9f>y|3z&_vFh*~+@ z?8uv0*d2M~gdHm=%_H^xK_;TOW78!QzV2a2FcNqdiY60VYm zIGyfKB-e`bj7BqBAMqfbC>9HLlP8;A$wB4BsF(WeQ*STT-}Kh@(LrGubDWi-1k%&i z(ax8K)ytA1l8l-PhgJZCv+{7(c&BvFu`G;-b_$yc=%Fpo9!l^+)HWuy;OHS)YTOq# zM>imgN7Eu-AW?Vb3kFT(;sq_cVrbJBp0A{q$?ICh(RPx8$9J4nv`X0lFgre83m+q_O#@D>Y5T${{?l{+jZI;QPqo7zD=d*>0np>kFHw$x`YDc7HpwBc`- z_zu6s(Z%hg*=kZhSB)rfpNsi;CkP4zaZzDOw&!byh6`YFVbLLQHRezu@Z?*qlYlnL z@X&&L)k2QFQ5X;SNUCfQ7y-^sR%_@juV`n#KvRqS%XmU$1SF~iMQ&<{_<&v_?CKJUn!22lNKz`_^Gyj7nD3LD-(hj6< zoYzO7zysOP-6e)0h)&Iv?3P49T2i6T`}U1VF48@sNZ;5>6}l~3_N>0rZu~LSS8huT z-%xfOU7^tpq7n(_!r<4K!6GhfcjiWM$UM*`%Rg~8tF^0(;>ZKpn)IBiH?=AfGcRlq z*CL%%cdKi*+O4nN)-j(j_n0%LdwtwYNAvR{yD8?=amCz;(CQGd_oECeZ+mu^P!Ja@ zS9+=_@bxqd!>4pboZX@)EK;N1RT-gvHqoCh!Yh`xLbuv-6`?G=_1dkX+Dk>yyDqaVNV_DWV~h%$rrTUI z8drDG7EiBEodAw;tXdn^b%pIfB|ph7+(q_KWVIAYsb=*Dh<>vB^nll48-Sz)yo0x) zYXk7oy>hH$j6|3gljcliX`}&_z0e3PZ|u6pQKQa2UrF+;oW4Zu$ba-6U#M8S*Qbq;e%Um=RtYX1=8G8`AWxu0L z3$StYSk>Is-qyZMKm3}^6VQd!ZG7%3&sxQ0EJV*8QlY(4R3{$M*BeTc%OTV!V{$w# z3QCKSP%so;w^_g%PZJx&Dg!xN>Oy&Kw_WiER*JNNs-c99ckcCD+4>=KLpYO~&xVeP zkz<}13n}pMT1Na4e8^xOPyNPa(HsoyRZ#1w0zMjgxS3e|+Lo{|2# z&UxJ+@?0wYhg216t(>apOTQM{;uevmtfp!eG zimi5KmI9oCL}O$riHx+>p*bQbTfO=Ldk*R4&%~{xzOxE29q31s=T%2}MZ+eY=4;ha zh0v_e*Ck1cV_J3;X=C=0qC1gWL(3evT7{K^sN~zSgCkzb^W~9 zn*87vj4?|6pZN>x>Rk1I>S}8z?tk4bKkxtc{pTw7I%a9x(uzrwCRLmQ|EqZae=0uS z!md(ggau2BE^AxS`TkQCEfrID*=5&VrcB*+*Ig?sr%u~_?>%X(hp~IUFt3M((cV0bqG6`7c?z`>2-yVDH zS3mo}+4bZ8dH*LB)2CMSSDZC@(wvH&rcatYebW2)R2*0_sbZ&{CQnl4H)YpJyX-W1 z>dx?X@m>{^CQqKU({8&?+I8|2duFf>9gxTHe=s~&Bq;|D1GOVU8n9n=hQD< z^69xpb)EUeuiv`QLG|+r#k(Jd4i1=vA52oapFCx!op+hEE4-|l4nt3xJY`bFWbty+ zPLrqaJY~kmX4f?zw@c#FUw{9}iroRYou*HoUa`31*4LhH+5cO2|8>T%&VSOptT)s6 z!bQh~pZ>$`_dU{f@EsR*9CP^#$48zxx8}F4e>&mrf8KT9yRk1nxaL2OY%UzS_h0Y* z@?Yn?@%5j+UU%32w_WhUoHuUz`Bk$&zyGZd<-d4E>as69cW&Qd5A6B-H~!T0lk4|= zbyfF;kIp>zp8IZn;m`XY^4ra?tX)6py|*9eeY^V3XL?6wUG(=v&>S({a}6g ztBKT`XMI1r_a$e(cIUyb9MZS(txfM&-0{@;_kOcrefQS?`O4q!x$B?%oU^X~p}$Yx z*!{&5t{aHnmH7BItKMqgv}#4~KHqq?@ek+6-`;rko;N*u`sNGTelxWA=%$|1)y`joshbH-5{xk6gE^(oF4j=ZPop zf56Pue>m)q6$d={g*QHjt93c8)_x}+vOc+>`(2pLapvKfftB6H=F~Zl-7)j{+rNAC zv(I0AQ#mswGT=~oF<~M)$?Y}%xnsLL$-#>lR zLF=x5?d0oryXU@l2OeB};kl0hD0}{O04KC^pA9!&fB*H1=KOcfeQoc2d&Bz`*+nn? zApd?vli9ZUiPGtZ&Yk)nCw}|0&DD)huRbXE`rN)JOWB93pZMNBkKO;;>n~1Olbdp{ zoQ<5|Cy#k5f7Xl3W-Zxs&*Xjo_j7Mv|CysM`1?DjeCNblPMUdc-#0#U*80_(lUHAJ zZK}Qc`D+?J_Uk<_JEQo@)T^5||M15@c`=Rfy@ z8&2t)dhQ?RKQ`^E-<%RDd<8FH9y@!tNo0FaL{4@J4KK#PlM|Szud!Ot6 z(ZfC8edM-d@A$`i7ajlX@&C5s>=P23k3D1Hia8xe_WXP6B~KUDJb3o3Rmbh~!?$mn zdBQdJ%;YmSeD|O;S1-77;~T4vJnNVrpM1i8pL+Vzum0R>GOwQUhjW%*+O_0odmMP* zE{Bz--*Um9_gU~j>$;~x{lA=k@VBq|?JG-KAHVGPr<~Ee^O`+hyX^~=2kg?;clNIi z{L*h8e0#5!fonHCbot%S+)#RY*}6AJPP(bCFMMM6^v7UcBqxPp4h`t&`pk$L7s=_|f~S&KlUa>GP*fX+7oLXE&ez z@nc_{-(iHKU)$^U&Glb>YW6q3zw6M+FTMNvXK%mwk@>&QcAopl{NjcG^~eJqM`SKK zeCA0n-M(gO)3i(PZ~9ta_57LzKRfk}Gyi=53p@Yt%BQQ>U2xOy-u!jusk>(8A6@W2 zi>v0|-1PjKKi+vxddBP@9sivRet*<{rNMpY?a?&y;z;SOvyMG-!?pMB{mVaISbM?C z*WYsfKd&uVFV@5#`261IZQR^@@Zsmo%s<|9%*&ttf1SIwE&hGxu+uB;o9}2n^`=M9 zyKL6Hic-a$|7YCJy75~- zK4RG;hn%_habKCe*H7+0>!tJdS#`xJ`^5J@&c5}+S#|Yo?JxcL@x@o4_vDPrEJ$dIR z58U&eb+`ZQ^&6kN=kYcB9dOmM|7Gtl8=BWCv`i(JtJPdR@Rr}Mv z&wbxi=f5LAX_-5q@nVY04@H9UANa;`EMPO)vR0s7i3+^-<&gg{h?x9pGx0betW*(F z>XufRN;~RY;xANRE?3uee`pBNsVTibb6|X-Cr+ZHnUF((+5ZW^zi2b0E%OlG{BtBA zAVHpi5NLe2@iyH$vL{Jxq7UL8p@zL~=B}GYXl>{%OffDI4avuSNqCf05HT5&I8>Xs zjjfz_V}l!WT;dx(#Mrpel--w>*@Q!cFf2XO@$a0pU7fqqTb>A%;B&l)SeM@*iXLYQ-oYW zW$g#kDJKo@TN@3$v@E8grK5uC-H8PyOBIWJ@)Lf_iCZmUYqZ_5J zd?JgB>jJiZRdmx}$Io^q&)%7?8KfO7U-# z@D;)HhdtBQKP*8-1?Yy<(|^5A8D@kQwc35}WlQ}+z_|IbEql&t+*51%poJZ=AR#a5 z*7{(6Kd*>00oGHecOFLRW=`dNIs{y4+!JjsBP&o`Vi+F`6$Rrbpu?Rj`6mD~W+Vyy zkE(?t{IA9iY^X0&TAAh1;l`WF*C{0sb2SuRlf4_7SKqa%M-XmM_S53V(hWb@)TEEt zWFvHIwWYH(BcBM&hwF;Tx;$zrauJ*0Kuo>0&+#iZbVQGCO;{cA`!$wGpGS7Y+D8=( z3G$P^MZ4bcC($#xRF|`lB^=;Gbh%{Zd{~&Fs0e1Gh_S(0D;(zqRO&j^d8%{pZI?vV zg&?v!&c5}}U);lJBp^ADCDcI{T?+X|m2ec|qyJT({!m-X7Pxo!Mc!g-jrm*Jn@pQ7{Jw9sM~;hH2#>Ohn3zo?OYPKq@r6OYq2X-*%T9;MHXdUw z(@IrRieESKrwW!LaJ_1*uv`RyEd!v(um$z^3ClY_N;&|^z(zZI8{H>{#*P&KU-=MX zr`5Fic#O~LETuik1@XP7Nm-d!CDLS+Fo;|q4(~2eT-fL5(tmRO|L@^H6I<862rPA14R|JMAc4RHGh{`-y3{+7_7A)#O(z+r#o3jfA` z;1Ced2+%OUWxfI$BmfE(niP#i1YHFLgMmrLYJ^43E(&z^dqux)Y&K*6x+w}(6Q_W@ z`qvV0!G2GF(|%y!kWdh>Sv0@lALQ!=p#IE4eWgn@7E+PiZVWONBPYMOslP|SjcXE0#h$BAE#?a^_tH&?kZCL6^TpgXK_iW=L zo+h^G}b*Q>DIu}|3z zR8a?8*!`jTozpI#1ZJXWc;Lw=iHJrgcUz{XJ+CkyW+X6bRQqOi0wfAPs2o(!Q)C;+ zDBTa04mRX)x{{YJi3xz@7f!vc8&S{N{RD7E=zhwOMJz+uLeP=PhP31?uNsJqK=@sfJURo8Z*7e+`|?XS))EA3QbV>{HKww*Rp zvz`gfc;ZfwfY<9_rOh@yt6NI+tT%$ihom|>w)6%pi_T1mrj#0A{D>lc@1Ut0D-Y^f z+h&D1U)&`aoRO57aC7hHgYK4aj(!5>bC8Ch?J(sqHWuvCQkbHi^}CdShtuT1%VqA# zDM)0TaF?gMcqD{;#>aF*TRNkY9`Hg`J6`EX-#f*lTOggsKk2;-VPhoWqIH<#A4S32JpyfY~KPIo1K%1&AsOp!kDhE9WR zHA9us#RzN(k+b5W(n@9!#9hr>cJ5G1TjIDq_;L5VB00+|msWbekl<7|kVpm;hMzx% zQBJS5X3Sii(V(T47%kmWDt-^9gqmioHtMFcX)o`>+ccdgOi9NLlf{YIk>;_ZNr5gO zAR#f^7R=bT_3c=k8%Wv2o&7ykqJa~cG~@f7I&m*T1nYJ)*_0WL$1bNQ+>wqi#hXoy z{DM)6G_iQxlJd|?a)j07#6^at4K!eWET_z~0+rrPsoUlegMt?SRG}j_HA6wASgJHk zN@r~h6b|hJ{5wcl^p2@wRAt3cF&40EQD$&s1 z^PqJ$#F~B7La=H`QFBC}aQXm0yY1B`G@t(%WSXT-UU=&Cs3!wdo3S7^bG1CrURg?Y zq3Rbgw_ajhPFboZESI7cta9VHZj6&o`DVp3pQ0l!PHHVP0SBiscwU`)I<*qLDQ8J5 zqv0rXb~jfb^%k{Tjg6Z27?vA%Lg!@K*_CU~i$HZyn~3kG+WGMMLOPCD&3)0M*d#HhVN*j1mXM!* zuUXeTNFz@Me>OPGV}IGiuW`LBD1?hsmE$T29!kx&6e<}nUpiku(|`K zuKyE2o!@G=A)d23+iKY8Q{=b%=|E36hW|E1=%TDK%!k3}81rFXWjB|5f%7t2zxYMA z(!g+(__6<^>r@-vF!6Gy5-SWIOhzAo20A zbK^C?Swl#Nu14*Uy$GUt6l>UN#o3z_ccTs@(MRBpQvGFyQg|V`m6Lww z!}w}%OifXrXNOxtU*6;d!WYD0De{TAi!t{gUdj=2r!8rFad&9ojx{`V%oW^}pg!@j z%Cl&^>n=_L$7(GlMG5PqB;1+Ma>lZAokufZ0^GlLBOoopqi*S~yQ|*1`c(03VnJ}? zBEAK|_YM8DH$*nXTep=cA>W$yg;qLfRq;IMg3}#GGrf0Ubn| zAj{pe!8Vv_>Z*4t7PQ0Q-}jAbfl%5X+UUmZHA~A;}h0m^65Zh$C%v&YkwB=<5aoH1hIbpZ%cYgX!!m*x@k_+sHZ6Z7HeK3^G=xF z(c*a&;v_GvAvo1S#;WDEC{y)}B851%%j!VQsW2P;9!x?5VHyk)HP(vLA^w?#$);}6 zSiSWi2EAyF7BszePAfCGN;?wnJ6w5tW2LX_G&AZZ7e@icyS^Kuww)LW*%D2jZ6-{7 zFvhHQ>RC)_$jC6#h*5N7=R8h|NdT2$q)_sVS?oYSl-On3QR~$V$4IHr5`>j)^l=3# zDlrHtka+T@?8gIC5{8O06b8Cqf?AWEx^?Gx3L1L9q7)w{HQ25NlwEd4Y)-+hD-o_T zQ_1UMq#CJhO7D~o5wKF^vci3Xv)u3M zu<~}Qh_`jZsC&7~gK@0c-F9l0b)~ zzfJ!U{^R0cWMO9hk8cA08~n$~$;S1M`+r<4|MUKje@goQ3;qLx1^_}Wc?yRPrji&Ie{U9yA1faLm1$2ozBk6sUj&?d45o+nK021SPCJ@4XhIP z<)Dsov+k$HUex?^l9I|n0*$@4MuJisfg|eDAJ72s#5H^4FkdeBEW-vnLek77e*Xxv zucwQc*7ya-?cqE?0uT8bK{zu=YGR1?@fJiFbHo*x1>hm*TyflfhDPx$mNx38e@5q24^(s_Nev zELUoLixH(dWb*Vbz^PS~+ljF(&qHAwN%E!DEY#GkaAX7)4uuYj#V56TsF0FVoJv2I zuBufa-4OdC(Y6GQ1%?Id@wk5%9<{Z4&%jOSQ+RTJryzcmHOr-qV5bef0kv0)3qc4c zgW!0x8_RPiA%e%ISZpLw*);DDuWx4~mU_7!kC{D~)|r$V1n(x;9cff!GxpFbU|0iL%0T0P5Z-6tZp7ior8>^aj{OatrJ- z3XDL<9+jy*@B&YwRKO?|NFeo1a-7MyAMc;+c4Ob~kYoU8_lmCXIz*J6v!pJRF%uDO z3vcpYH^tueeEi1CoyF(lz*6*S}ai`g(0J!1G&8nTsdHUJ6cx75P>lVn_ z+WX9#x>?#11@IhSlnG_3;-+A>V)3DhO_0_vDgbA}NG!m^9AGuL!3nU19;e=8@`l?+ z*ac=vu+;U)F*aZ&(#Ntw`|v8a9%Jx1x?<5hdd}f#^z820(JLPT!45BT54p|r3eXl1 z!-&O#JeWW=egQLcACLQUnMkE|fDJS#1tq2^AN=`gX4;bVN7Y3e#sZ2njD-#Mx>pOS zVd)6srCg;yEo*0z7QCTEq9q@~LpwB2TPhgxsG6ONETsS&7M;fHusjxP`*;9-$%2vv zG!nqV+klVsE`XwWW5z@Koc3{MxpTO*x3o!qjWn7#{0PB;-A5a~o5-7%sJu#JuJhO( z2kArQKAlV$BQ+Ft2C1PHixztrPZH zrI=i=S0W@Sd3R7#!$78I(kt|NF|QF$^lL?Qo@a{gkjBlbJuBhbfE%e<0kt3)W6Zjj z^?V7t#zyM=Y3o{}ev!}D^~#@s?`zN8<&WPZ5=M`9srw#n8`&!ngL2-}x^)%iK3@s3 zNE@WYr*K@_DHZxQrOUWVfeCm}x2T?0A6oi&#eCIpJ&flySa@65mqe++3A)#44)|WA zz(1Yd)we;BjtP}oZaQjhXx`ygNl@^_v$-&x3`~vIrj*hlFl#YtOw2gdnCY%gv-=yy zy}19AaX%zCBabw4#X_+w#G;9Xtu(72f; za^c~}1|^wIO~8RsXYmak>(}Kt4{^ZVEASpNv9> zA!HF|BQ5H{;;^c34Q|V$|jkFWJaI%egaqukR{*-TAL$XPKA!tg;qZ%q}+|Z zn8>v3z7yMf0!~~CNalspPpIy_o!ZGNtZ=1lcM@|-i*dAShr&{4BEfw<-1Ds@8MUGFhGSpzNa8d}-$oW^k zR+u4i<`k58!B#|FMP1C|g3j7~vXwJ+50FFIN>opMn0+apor=vH81&OqHsV^v6>Y&dRm)GQ~NM zO?V@>2kgC;x>Pe`KEzv3N3cNwm>s2aFA*s|a$7Vf$BAS~Zxpp_pua0uu6E`8oI^q> zQ}@76fOM)2fFkZBQXQqK5g*w7E(a^al}CmLit^pN`Egr_J$6~pdP&)1S_eNN*==1%{!oa({}$fPVD$@VoB4n9F8s%^}6Vwliy3A zqez9_OW@$!D?EV(=M$fX+cjl^33HDirf`~yEAw!gvK70>4YwpZey;EZg3Ub&81xJW zk;maxjEv~(tP^y%zPpCjd=lrAGJ{EBYNv`<1kbCZ@291a0Vblwva03#!h}^@*FJeZ zHl0PWAeylZA+$@|X)!Q=;6!#>-8E_D;qJyz$0R>0LghMGWMccesAZrY9XCxociZf6 z$J1;%Cjb5uL;t58FqU9&3?Q=lyYky0fkl_31O>OUCQ(^p&y<3eyq)pvd7Utot8u!u zV7w^8mJ`n8B`YvkQAuzhG=MnBrCKVQb6|4*4WRDKGs8)iCNI3LjOH&3)<8GcZuif8 zl%Kd69hnNEJ;xMAWyX}2TR$WKHW$) z?Q!EQR-~;Jy-jP$U&tS-(;9weQ$nn#M7n;5h9~k((H(UYk<0KJv+mqBxQ}6lN;iGU zAqnSQ4a-^Fl;tbGA1k=1YS9||3t8Yh3aw5$$v+U54!TCkeE4nzOr6#6pn;`k+hi@? zVK5z%vp&&(IqtXm;G?+GFjgbd%%0<)w^P+pInKXzm)uCC zmcOIXpo(WLZIxa`wS~Yik+^s8+OjlB!x$v`UU}og{PYQtlE&k`= z{1^IP7UutX|JOey{kP`-e^vkc_ka!s4F(AV4gvd`%lG^KFE|Vo3G*jOvG+{iheM?O-#$mA!)-bVU^64$4t2_AZHpJ2y7MYsX!nfavI>tUhdVX14 zy<|laMScQ32=hSL(jQgQ8tFtt>+H0W9I$2(IP4zyeE7)hzIZ@hk5j3A{^5N;d-}wM zS>Lc?kd@+zwvX>ZQRbhO6ytDDD5|>LREXV;aOtO!@K`NXpt0A{X?Gizp{9U>$S_?) zX=w2+$OzDISwkq-5bI^OL4FhXO(XHFKjj|rgVkgu?OMd!3%u*u)Az2k%p+^AMu@qT zvcPBnL~5xLtii8~F8#V_4ZA@Cf5TYfPr&Pc@_`F7OX4f>giqzWqB%d#$ugE}09s`DgtZ75o& zKFB-IaH{<38W(z5A|3P5AJCsUaP~6;_+j4K*1N^|^|jhT^G`GieYMsR>E=N;!}%;Rd18 z_Sf$%MCtaexP_5+y$@zm0L8@Ws7(shWyn02Bbe^MQ0|dLNxNw*#;y(nO~*50eTc-$ zNNB#(I`G4;81;Y+Eb;Ip6w>=O9W$or$1tqQyai7zltiR2EJEBTUbCnnvSeTsLY0lr z9V(O|33v<`iW`~*+E*Rw&dNE>A2*d+3T`R36l08r4JfO*(~|hJ$_#0m)Ag$vHiUh% zcqAZryYZR1Bc8`Gmy%kjN>AzKXu+~`@rYc5ZQz#GJwM2eMnb5*f?*oNP z>}Y^4QJJ(r8F9{ZO}KH4#K00CM-fOjR879ITXor;_oLSmItq7`hq9Vvw(!n4?1f-j zaSoD^O{up+9c26t;o=hf&B{$p+vHJFfdyu|&H#TT5o|v7{_+A08OuF7+_KL4#IFL_ z9S7M@6;TFLBLdvJiLGKIY-ThITJ0{_?7&>ZWBwatGv5juRQdeyL@?@=>4g z<~=@HPbpUqhf9qg#a0@-7NV2ShKF4U5qngH7Cpv0VE0bCNUT@zSOG%;Du49+>FwB@3XB+vct5AX{aG!}3aeiIZYGL349Es3aMB5HU>5@>>V^?B4Tg#_IQHRU1$nvh*M49Sk!>UwbggRmVHi8 z*l1MDv%mYG46FeMSLsP4rwAF9}K*@oTP&fhJ0C-OL zWcY`xhVj@yT5<{nfVil#C$XI1WP~QO)8}gmo>n#nR$L=QBpIAC^_LCr+Eie}q0#)h zimM7mP9>c7ngotA?KWRr%eW#KHCI_TAo6vwSXZJ;lvm~*+)|s_dr!%Zap8Kc92483wFo?Sk!LMFx*DWg z&MnXH5OVnj=do5%NEtyP203k$#LLz;$*g#pP}4QZdDL>YX?7*u9V5*}4}9{`c+MkD zF2d6B$4H_L9ZSrW#qFku&!0#J)o>4uxn*)$VcCeOcnaedW!2W3HFFWd;X*j8V$Nu) z(Z|SRp(1!(fqnuk&#D<;=r$5hX-^5~_PY9YuQChG-@7m(&%LByv~&WkKjgRwX+Api zY(L199)W2oQ^$u^O#5D;<+y7L)#S>?P{uvM-{^cV?r#!xGhLYMa|_nk9tY$I2$6nL z(MzDcZW@)L(~U++EI^vJhFjArD5*?`+Pd$h=uBRb?B)5vQNiuu1Uq~(Zlmoqp4*l? z0V2g3dPfTv-?Plrl@a7v4g(7?A@SFYYok*vxmoE#%y6Z++)c*ZGyB9_HFfv4BTqJi zQdU&Uu90@TA+i*#hPx#gNs@EmzS2I0GMaMLc7YppW?U?{7zG+`KY(QdHkBPE3s@sF2#MUOXj^9^^0W-emQ9X|n*veohGDa-NGdS-o< z@VM|YLuB<|Dt-b=svj{Y@`n=&T+w#OC{h@JKthYN%lT~+`uIsvCt${w*gHWo=;87c z?YIL;dvVR!V?_#DdeJ%zWJ?YoiHlBnNAFYw1%9>@5ppwBEjZ=2Xv=&VsN- zmhfOX$HP}5uPiOhZu#w{11o{5W9GZw*bXno@=)5widzaZ6M+m9KGP@#r}P;G%>!ta ztGZVPuEJQxD5QZ>XLQo5^UfJ+EbK8J?`v8a7Cfnlt?e4K0(R|bgy`D^YkVIkZAzB` z&Nl)Q3+!d6W2>x8+RIg*%LRB@BVtp5IME$%FsM@@ouMR5iQ|YD^-ol?`O_|=cQtlk zEDCA$RRD#w!vBj=2sYX9=fLy(!rx4n<#TGEU3ox`+CV0jYxAY9( z9S}ve_>@EG49*+;UJqawkcH{fw+oq8$A0Wk7m^BMV&4{xZ6GKVK7%FyR2q^h9-O!m z21SQMG6#NmYeppJFc|t2w=G!3Wzv+FJYStEy_gyDtghH@9bGgoJ&L?hC%w2`W6xGm zp=3>6VU@L*HV@P17*vsgHC-iPVq2W`TtJVGRyYuV>trr%%?CS(U(G;DJ3O#^!o{K0 z^qjDqFQp5_m&+ByQ68$a`UxBv{x{ z*DC{S*L2X9m`nZ+0RIJG7k)SM*=W7}VAkLUmqCQq|KfjsMRX~(_8W4S{j|QvvTfTcXqalYu%szohLVRO zt0jG3y>u!3?GVRa48zBm)6V0hiv;vZ38=5-s`VI#u{NU+X3Hj?=HWs$Hlz3)k0UgR zy=>hhf{nqSY^YBwPBS2UIVf%b@*3akLd$7dwO~uy^5e}>Fak4uz>!3uTW0j3WqA8t zy~puLIBuwGfTg9xf-cu!?%N}cNb_UZyLeZF8KVu|gPbL;KLM{-Bfw}oN^A(Gxq+ak z=_njX#v%P7FmI4jD)+5Q<%{bx;(ZlGE$`DkdeM`-sO)Z+u*1bxg2(wtFD22znveq<6 zrKJXfjW2Q1VWps8B*YqTXSu0KQbu0WVbr#9VevWU^8Cxv&}%P_ON^4*j(YG#f7i6_ z^D$Xtr)m_NTXvBwB=ckG7r8ZA7C%9E)DFy+*{>FSW+xO6uOF7F7EiPW&rrHS5sy#M5rNO~6OuT{_bY z{tCOwbAW-CGubInrXOA+I{z3KA*_{( zUsXPeR5Qq^TECesSovfmBCRz<#<_hctmad^422hEJoFWKh=%sItY{fyx1tVDMTz3D zn-;J`Lf{2SCN|HPKjQPDd5aI0tfu0xV+{99r#p9wFx{3^6&|Q9hdi4!apl1KyQ_0>&axFL}Wka8H1G?qso%WuF^DpsMIC5HIb797e$GdTVBYB zODSQ-O?8L@6ET6OrBz<^XBK%T6OC|^pDe4pUJ7bC= zuOxSvfGAz*!@^m#hPl1@JL#{;ElE~;O}{FLO>3Kx<{l8n6S5@iM9R60De!N!Fx z+4efCB`rrSKrJ1Zepv!q;#LwVn{QLH>Qx)4<5Mj)vkL4;`|*zMLP^;zeM7r=(5%?x z$AnXRLZ5XnG6Mxn+W3p_%0HslMD!a}&=coBIkfG0QS?>(NWjE}+1>xkuK~5tWEFp7 zTU69aZ{*Ca8pgO&!-e^w&Axa@e!rKU%RsGj_Un|HJTPZiYL&Dw(@XJgXjuuP1*);a z3aDtS(s<*l7(p=wU%Il)K@kt!*eKZos3@*;>zJZg$QSm5k07c)|iR(@`3z_2Hr+s9UVtw=>jwu9pD|JFNCnr?T4@W ztkYv7HOcAHVB~m`@hf)G(JZkDPuYX<WAs14R(tm9WMzLcX$sI(#iNqQ2p7^3xj#m^F-qI^XsITkF2`Y*(*k!<14>% z#U@2==@#4soRRFJ&Wc1%Q9J1*IMtucek&wTAyq{iRaCBj2xjT2u*!_lV(HbOuumIO zivWHcq&rx0_Dy0Gs{mQ~dVjIl!Nq<5;p4|-)cnCOUIJc8GxngXt8>q8m#I?K5*FE_ zE&-PQVfKvJxcEFp05O_0amTylJiS>ScFJA&08(yQwfB08%OIP$&K=%!l!3+8st*Bh zrMZlw4Hbn&@jzc6mSG<5nU}@kn8o)W>_1YF3!iTb3AW{*yc{`ip8#;WGDN#$gPKw< z+)w(XKN#aj=^U9W6CjLrGb9mOFa?ur^l zE&yMeOf9~>z|e=ru7bKL8+=TCi+Tfl)>=RcOIG~+M}LG=xJxCz+&J{Op-32MJrl2Z zFVJsMQRhJqetTItYc+&p5rC8yMG=pNzxHQw@gX@DS); z+r44?gea>~*GS7+X0ud;8B-U~pFCUbB&osnvX#k!QpFfI8xMOoSe+Lqt3zewwxoO! zNPd8z92-ayh9H}B%5?6QNJy8QMrH)d^Hi57>iet)-*ps|LLjD4I*64>3MiFT`2w() z38fcwb&ZihNH@J4Wp8L0Y3P=9CyDA-QGr<%w|oz(^AyVvSap5!`U$YE`=&brI8XBE zL5WJsd#! zGugnqtY>GXg8?4@+K)(mI1O25=!mqi(8LBQdxrr0uq?GM|s(U zN=i7{r$|m~R@P97dsX7uhlI~(e(0yWx*_S5?-yirRmB#NN{VE+n}ktV&36!n2^IPA zM3gPm7o5)bq)9V*?g%tn4eL&CG2~$0eELQ%@kTzF1)meX_S|_@?{wsKc8};0Me(Qe z`E%Xz;g9BqG|bld%v7oo_x7#RytYw6Am@tnSs{(|BmleyfM+cDaQEJ=s`UoDV=@qx z=a1uqwXNm0SCs$$I{N-N7Rz=Iu|9r9`7u}#^goV~yw?fKt6ou_ofJ~>k7J(yo5kw5 z(kFk`PLcl%YzAf-(Idz?tNzW80hi2yBoY5F{21^b(f|K?ZT7E_jb^6*v7Z6{P5ys9 z{(JssWBZ@@U;mu+-0ni^>@e`nP8)-YEZdS|sb+ktDVAWNsH57KMi$E=Z3L-|; zPnAz*&cSMwT*a=6k}D#9lm*^bU=f1e9VTn`axjeGm?VY}HH}6@Cp=N3v88epWV$D- za+K$hy(c!Sv=)g(TUoViy{>nf#{KZ{wml%>+)TDp-&{{EKR&3fXo+ZZ8dj12`+@RG z{g>z?gYc2Ow(R&_O^gx0%MsX#fnpW8$Sd?r+2s{)dffs^mMK=Nvni%WcN?w{!uDmq z+iZnX-j8pctG=;#NTh7Vmir6N~+lqmDJi@ zZgqUG$SG7J$S8STmO92wnwD(3s^sBniAlTd(U#P(T!n}`uA5v`oO5~37kJz2pE(4p z$CC8A+71d2GC|T>WMdL_1ObcsZA4=W#6+;zYD;G)u$o2?@7HR~O1?yO)`MFIk2x!Va#4Dy0EXeWU z^|C|YYzrael~i+|H`1{IaX?J0N8l?uilXt7B19*eg+yhq{Y;NV7H_X#Ze`;&NY-#& z9uY-vQ?!ArRM_|)6AAZY8AOU+J{qh(EdTpt{MggN*K>;PQhvvEiD9T3hpVPb6UrHJFt*E zEiv!C4=)inMTG~W;)Xg@5oeEx0G5M@l47O1pJ5*g-USd)5j&3HEnxUH=EjKHr%d>Xf(PVtLsd^z-zty>s&s9ChMN z0|(DkGIodoLl*qca}vjD^-T0m>}$Tc2eC_M)U?)sST>;uc?*|DDN)84xIP4JnR&ka8L7CCA`7--xq%^{63yliU z(LZ;P`%unZ5{_%0GJ|CW~qDfvdk97*s*Z_x+s`PGMd{h z=(`Z8!YC_zFAC$Ye?X;jR!vobb(7Xh0 ztWZb$9M#{9+Y*^o_CC`VE-lmMAwyB~5TQPN7_m`wG{Fg^FTxgOY3rrw}7C3lU zkcwn8+PDx0f_F*Hv|T`(v1sovj-+^RNBkyGtkEyhT&MLcKoGdYFKT(K@@XqLp?au3jaZw#LSbj?^<1NiZ9_L6t-Rkn4UYo7nr5oec)Mmda{GHB)meu9{_*8H* zl2b8;i;WY$z4Am}| zlT$yi?;f>#(u3*(>z%C{>;;ycYd2xgo4NU)6Gnr`nvNaVQ*=N`oK>_s7_frk&V@HB z$z7Ucl^WJfV~XSx4QrhQNmGiXL{l{}g!Gb~xc6^9n(1alSz?dc?d(d=dEcOx4f#(~A z@lpPc6@33=IV(yU;00^NHBY4*ikMD-(u(plI-We>xD*0EsaDS?5ZL9MhfP~t!1VA- z;lJ{Eea>SC)8ws|ut8n(npWgR2x``W5rD=YgB2Ro>&|dpgsoe^foNjPkMt6zk6D$& zv$pFqyCcZG#Heql@xU8@Lf~){mRtiaLp0Q{f?%W4$bbb8W;Ljqm=FupfJWq(^^}rr zmCoKU#CN?(Dk1rcFZ^3^k#;taa)<0MS9oC&Y5woN63k{tadB2KULSH1%W5+2%sBE8 zlXUzKZSA}59j3@al&`d;HDpCD?&dY2=NuBi8lm0!YV3K)!!W)L)cHs0f?9bnza#0A zW|oq_2Y_W*5P){(%hL_Q&7ctLJ!O@Iw|!3KDx0N^X3gDXHY3U#X5-h-*dmd$xNg+- zGY7Bjr?(rJIa7FioXXy2b2AxQyMIqJt2Jo&n3;Ssr12EK$6(U&zEIrLZ>=Y>Xqb(9 zC{eYc<0ylckX2@IM|i#5xIC6u5R9W{N=fk`RX4I4o~D|T@qnTc8i7h-L<;sYo>jw3 z$sYzy%@F`oNo6A!4PGINlKuB}EO!hA}2l(9(%U z*mKqfHPm)XD}NLD30NdcR_`xd9t5w#;+HA9sx83lhhxB+QIl8O(vf$M*RCM(7{DpBTz-AMCX{v41{UvKY z=k*hmvH%cTI|KYjspG*ON4H_xsd4&cFwCW_V6EGVRK-o*pJ`LXzQHaR^*FeDU{k3w zPM6q8B{m61Go$6jdX)HAQ^HTPzr@xa2DaEaqRfoH%!|(IxlXL>gi()jm%IH-7ke-I z>5RtQd@zse_)bl1{$Gl7dTVwS3CsvoX}pDcKhNa${;=D3YqJ^rDJXKRUkLcVa0ekp z5P*6^iy!I5!I?GXJwI*k6QHz?xY!hC_H%jEO#~KPoI}ugCxNya2fAT)qP@!KEI4<< ztcuKek2=Nd#9XaaE&x<*2H`kU1B$B28)eI@1jPIw=gEuP1v`$^n@;CKPO&0i8dD^f zfG}#C#B&8VJgXl}IC88NC+x6S__g8^jt-gem%!yg{$B=%$>U=kSrf+7OG=mUwb*@= zmDCxo+~fItiX|qv_&9z7l-ioku~G?_;a<|=3Izzo2$1WOiigFDc`FnKc$>CZ6?c3g zrDTKv84L1L%DnNcPN`DfWhO2eMESQha)Qxwyiv36%6j!8LQJODfHU4ewh8_kb-#%q z+cr-{U6;?LoKGeajA!(q{&MFShVMFaW3qxAb`pw1%iY0&ZADeqDb|U57%CEO!4eoM zTDAZA@NEC(>EFHo|DO&12KaZx|7QLd@!y!a{wMz1KPCOQ=6`cQ_&@SL7}Vd#XM==- zhJk%W_Sam2U;Gaa4h0VZ0}1{&`hV!(09^$J9fwQZ$TgvU2A0eZ1Cv!06juv$%Izj+ z6LXG#Jss;GBES81{x8n})L$XLA^z@jR8kfr(BA{T{ce5&0uxuyw7n*eCUlmyb$%gB zhNx;DO3+7B^ek(>d$r^I7mQPcg^Yz}14E=|!--2N0jjcTZ)sPJ;pp;Tzq;m zb3c4fyFHpOdMZ3yv#_Jfq#%`@5NRl=?EeX{MuShf#=xAA`a!#lUCmQ%A02bA+VIxE z*`}Z$AM+e4;l89H(=+bb9YuQpi+KYet~0LH&>g-U=*@(F{n# zZ*Y|w)LekOp)u^s(PMHtqDpR`T~Ipzs0iU7SE;qv9Ca-W{LCsXZMZ3lR*cnkDk=i( z^iNm;>8Bn21hC)%6UZ&i#psQCxC2|j$UER+vHz8p(OI#~DFnSG!?7LIdf=AZcDo(_A*Kqe#T$z|R01RNRbp z+jmt{NnT}QQY(a^`W)vmu|@7Lx%D#4(Z@ND_jZWaY2zm#?vATe>KW139so>(oOxF( z5W6xgL^~}y>7udROiN({{aGt|)*LuP11stV_M+r*UM)*&RCM+=)OVdRjBE>+SAzB@ zV0>|2m*3SQ1>!L+)hI&&2IY%fZ9zjb8gv?3j#|cj)a;=AVnjv=@_A@TdMa#CP?V0s zKKtZ*e>NTvU@ofL3h0rLr@NDiZdy+m>qPHrL^}~|9=mm%)4r^e@L5b>@<94&{I$Vv zehdX~MfNE6?Lw!8cu+*%Q@GC(jHIQXeCLwpK`cz{mF6kfD`{VsnIM1WF>6?u%SCD` zT9s7`dXt#+rkeoKRf2&cz%I%G{tcyexkmh~ny5PkdM&x*B7Ny3Zj01@CM1eWI*6K* zGq+ZTFSL*yco6&UhyFxcImgy*dK+`y6g(;anJz}$I;)UQhCk9s^}d+7m-?VLp0ws! zLQ6nPRL)r;LH0JBCeHYmi~}Azvf0sym%MmMAHA|$B9;x!PbocxA7m>;bbbEpWlZRT zd-tOkpKzW-4vnCBG<(jl8Z}u}%Ah*wRg8F{HT9o>zj;=x-*uXbizc%hC=DGU%`#Xk z3*{EF=c8}#IC-d6P7{Q2G3PZU7X-!C%Y%c5fYuZ)Dd8A1DZV>2xe!@q+Ev)WJQHpP zboxnPWZ8b3|7I`u=?d4VHZ8fnM6+D6=}FqPuy9}=JiZ~L$8Q}`WKFVmZn*s;cI*;) zR#E~Y`G@f6t|gwdbDV9A#foD&dgAxeP%T6FB7B-DV9hr}4n^|R!#_sv*g&l#-dE6t zg4@XzE#?YZV^~tup+M$QJmDxczuV6Kk1hS$ByER@^FFEY5d2*dR>&ngs`M^cr;}5J zx$!{O0`3sx!OnhIXBlL2)|Ceh?IrET>*7= zyS0JhBWiw@wl8!i&)h=L#VC#&idF4*vx<4Y=*Nz}PE7h~bz}II`}6Xza$CU9lo})@ z9MrvCn%{q@Ovscq9sNy5uYsx9N(4?hdntq-?I=i(W?D&5iuu?55NkOArqR$IW~8n& zO{c4mY+naYI?HNQC%OloOmt=@4euVC3a@2t|8R86p=Uqn@O4El)OPKyYU-79oh$t1 zj-(SULSjcTsg}GhyZ-cbyiHd3c!GobXe3&!*o zTQ}F!Rv1FvpN+3GB$`wdWUI{BHZphu%vC0vN5((%V$zpoavYcC|O3 z+>r)qMCBL?tjsEA)-aT%F8}ps^?zxR?S1pYY2c%Fs7H)ew$0L=sS1lZ_O1#WTT|Xs z*1&Em$k0Y$c01{pBG)YNkm2`;S*}<3$@-qt0DaHd-?#v!Q@B;5Bdrv;H*rgAsx$eW z6{l_rUBM(UlrafAM)dR1bgCF=3YDy+T#(1vpm<)gxqbp9v$JFSG$QJV?2@}j75X7# zR_DCmcQl9A2DLHPe)*x5n$#9$r86tp+X3Lbo6j*s)j!DRJh-92yDgYRQGqMS%q2^l zg~Ct~As+NLFgAowI;5+Gvispaw@-OdY7k$JqHL`c^0E5hK0hl#-EL0i;(YGMPXLDV zv~^|MugGciTY$*uktYdA!RNr4+w4xp66uV23#oUmLa8t}_}nOn9KEd)8A;Ae(IC7G zE1l$}&4N?t3Q;y(JfqgluYB*_GqY{14uncdWrQ}vVG#%Mmnxej-!X0<%{sZ-Mp4xE zO2=&4E?b?SPWCA^rpkM#GctK*;NgNM%mgHN&*8-k60qDReQqm$0_ds?cXwci9V=Jp zC8XYiOzzd0Rqvis2kwUEN9_}m_puA~AXLkjKAl1Ex9oeC&G+1+L8UgW?{|BWR?PI* z!!Ft$&-mGk(d`r!`cTX);=)SwB-Ui8DCu#XNz3?4WE2g*f)ET>=9}`ow6dNr?2^Ejn(o zx8C-n*!n4kG9h_wi234=kk8A!|2K;zZ+ChMujaIxZ^e3I)k-HEI-_mUhlkUVmBDS1 z^dN#RYop2eKV!>(H~+D6FtYRf*Z6<4ar}$;Z?EZp`0t;Q{#*0ke@y=^{+s?A3<4Gw z5)%Bk4d6fY-@oF2V{xhcE&yjW0{JB-VUV$jVv+~OQCx@tjZK_f;&b!rrhaz>|4jq_ zH*NUK4;Gcrc9T|g=`?#pzyMp047-XmJV(6v_W*gd8%VsFpyh7) zr@(`U!(~zTCs-ahyd4F1(}W6Z>&B$R_`S7yInAnSxge&~M@CdLoeRRlgOrfM!AS{Rai%(UA(<(!!{k$zvPA;jI{pX!Zq#5!>{7Dyw<4-6@I} zN)Oeg<2~g436=2-avj}9II6nuKRC=fCiBu14(@dcMjH88ewAPIyMlR=V=tO_rG39N z3EC=&YyL<5?r*AZ3Y+1Q%Nb?&SR{ATrBEF`VW6T&IHoTCyJF-wg$k2x@I&uSsee~K zzgGWu@%J^Nhq0R=q3avgW_>L&OBrBdzAs?iWb%gem(<++SH4NN*|NoJ{e)gG8~)O$ z_o+1lxW0#994`h8=a!AD!q|N7i*j`NrTI1~JuQp;_8~f#q{az2B5XI|G|4VR_$)4d zc;+%Np8otuIpLPadHuAr+Ypsv6?Hp?;Um0|{8~MvPM!ohE;N@FD z{Q^l481>$!o#H(5`e^sGqLzi}XhB|h^eRG|){b9e-8%z$nVsBm{KhkrQ@i_Pzh@(s z?#x;JNnPt-YiIPwh(J?Y4&b2W+{aM{VzI(TwdASM`~)a9z;odB$9*cCrl2rXS7@Le z);49&%aWP#2Z9XpUTEN@-({Mh2upN`-*u`8Ot85unrt-V_c6Wa)r zNg~c#U?lN#pvsDU9hW5B?Z1nxvQM@G`!!`JLAXFexmb)dc()G)oLjmO&D%TVtv#OM!{3YdUvLQYS*jHQyzL-H+B1Me*e?QZr|yC^F948BpnPnl5*hlaWHp z%zu!TY;)+w;WgeURMRPw&NItTEHS6W+Zi$r;cv$D)dos+l)OVuC6P$@P1e0WHU90; zt=+b+ce|_Il;LVh>U68jG;1Z(Y|LQG1F-A^S$ zLe#8_pp;nU2Esm^@IUp6!WjML5von*Xa;wC?_a~rnGamiBqATAW zDxTA_gADr&yIK7anu1Z+MPv&-5^&k9RE>0aa3PTLT`U?`$<8iU)XTTE#*^jG=5=$x z;s9Sx$IRHo-B`fULbSYjqb+=)XcZl15^aB^X^DwQ3s?*C%hUF8aTP_sDl8^8ZOOGH(Z$QO5n5dL8P*;`Nnzzx_kv59l7L)7V^%3SSM7Sn ziFVa|jDilg>=d9=Q1(r*K$404*)cRXZzj<}*}ei=S8$3!#L_S@1hw%CamYBygjIcM zXjk#>0d>9pT;Ioycms|y^f6UaqI4hrbQ5j}ip(#_9u&wK=JrdiG}EC7(pfeZSA{x^ zd=1Ong5-ktVfIrkXLtd$B{`hE)U+JV%BJ)huF-};e;q6f|TqVVn>;h`DGa=saq zOLEQD>*Ah<>|t!(c9)7Rpc0X`dDT@eRWcp82fbx{VlEtIKaGR5RAU2oq}2df;WNby z)}j1vkf=zGkN!1hftM0hBSsWgEZ{gAinW5w%9+**?52QHZlD19N~q=tHI1LTLykVs z({s35;LJnMWM#>@?(e19Ye5z_n9qS~oMQuf^=fK~J;ds?tF-YevRbAuyGA@DAOa2& z`v_|dCxZ{#tzm!To{eHWr!lZdJGkT&vE_oX`6D%y!ZMHiOA_KS^=tE?e)EJCMS=QP z1@pcPf4X>F3orh;W`HDx1;d;uz-^|YpH}+`xJEnqNGUVXu$>4Dh~|bfd=_P}tQH^} z!PP#Lof=Bn?LuU(u#6c?q}3NjtIfU*88y@>_!b|Mf!DUjRh$-*LC`@8yE9JnYV%OZ zP1V+m^_hUJqNN`3#G=S2bQCnm;eJBgkvh}M7>y;AaFC_4+yK{4GqwAgYS;dyMP2;u zHgb0K@)*S)L+fyK97BG8o^45yKJKbg8l0{Yy|i} z1?MQ7e~vydSW$o^ZmIeH-u!4OyyyTdOBxE4oM8jHO-JbiBqjSn(hDVo@bG30^ry{_ zQjRP*L4|#kmdZd3)+CBu)OoT)k3@O)qE%^HfUU93MQ&wu=)wdaaH1&RxOXY2Wmz}7CENlHj z-lr0)h9@~4f8qNCLJ6)Z0XiLhJ9*9&(O~A>IJ|_c(7pXk$(3VWg^y`id7>~age!sX zAF{CegbMx-Is4>RnaWuV4e zChV4-G_G6ZXrR30T~KveBwI?PdKl*Pto;MMNMS|U1YXAgc=o?Gi3k(_dnDI)zqHYS z-&N47f2g2Ao@21Wf6+eo|5Zl)PyZ_3|5k8)&KyYcUlc<9zjgZe@V~u-so8%a|Fdwh zbNtKrZ~x=}{ZC2%!2hDJe}MnjFrObl^mmw#4fw~c*w;J#^@e926ae^dA>N>15P#1A z`%Qoi_$|UaISd9CSv{tRin;VCUc~Po-s`2jmR?2gt;YF5Cv?8;W7StyQl)J>Sj76}PR@}5~~nb!f#0q**;P?{cbJgD(rHK03dx;mTZS|jvHB-R~2i3!q*Qtm8K z=dNoFh7KobMJWeENMODlvQ&6sU|j792A?bM>0+{{UAgCoT@5>nj6=#AwLoE{Wz&ob zrCrBodH5>I$QpWoWR@bt;>TUK8<#FD0VYn6Q@CQ=;gyvNU*$3>?{Tq{HOw?a@$zU* zxNsz;u-?n?h1BB|y~fT=oI#l(2`5pmc+{>BL1lcml+X)teU!Ds~xYeh1wx33ox>}@?ae>^5z?~gH!v1 zrQY2RMFkBq44@jbET}hHwS(bZGIN46#L0#$d-t{9>~{C{$h}TQY^XVpIM3WLC+LT< zE>@#I^AA1xWv>-AVl$$(qt9AU7v*w2tKC-KsZbJ3;Fd^OL4QE+cjaBlJFAc`xAmJT z3YXR!lD^JQhOyH2JJd|?3K?>OZ3#y2Q9@t1j@Zz7Vj(Ja8q*;wk~47lJD?Gfx8P?DlWs*qAA%4&SDP5aKSSxY~6&U*iD`~P1T|Kne^{~Z6L|M{n+|Bm(_7XbDT)*1#H@cU~Rxqq7hz#$`Z`!xZ$`u#ou;Qq__o{#`As9y>ns$Ww8Bp5jK-%J6o zxu~^hDn_rRg8aHg;x7Jv22fqot)sWo!}=imDSk)U>FW+XxDURy)+sS^A-}6@gbJTo zmVpTpmB568!hHmD$a{TRNNpnNgwV)@lf<2iSqam2|HYcHZvgGuQJU6myx|hO{HyVo z&@{MyE5DfYSslB~t&-!fVhcEE&8pSjQ5H=)&3#1+iWg#xorZFpo^m)-W<^D^E1m+c zGXPcSuNeSm25EL8BSpwU?$TuPFhw^J_~GVo^^>LqJ8p>G6CBL8eANC^SwD#+nj}K@ z62IR|gY;aI_N}{n0>J3K(%y<}7K!MKTNjH_&rF{W^3hM)iBAXKWz8T$D?m<05+EZcd_eh_{I#pxJmj_ET2knaT>qi+> zm`zLkAg~xfUkxjc609N}NS_4_BZ#V&i^CkFR*$gS9CLP7oZr;VoC}Omco3H!VGFg# z=-*#mACf2hGXIf3L@G)f9hSpr_TP_*Tblx|xz+J9?G`*V80Zb@c&*EI`P3NRz}MYd zBUgxT@MnJ_e76^Z$&CKx!!yTuZsKYSR&50d9a~uveS@ zYF&w5m)gIaD*v>-&@fQ2kZ`Yt8~#^5D+&M%^4Gg{U%&Ng+o1rzEc`E7Cn_2&03CxA zjtrB9oE1w1o`MpHO~oc^^lFJ=f0ZT#csQ>gv}I`l70Cu(D`za0v&IVCUx{G$E5(o& zxF)DQ2l^6-IRrhcK&j~91@vdrc%?nqzyAr?dD&W-w8@~Ecju<+7-og%9gbv0VvysH zhO$Xas)s8?w{H7Lz7qPPN@!L z63X4;rZ@>N(|b#78FqIZyu$izo9tE%D6E3cv>{3cznB;P6RX~;n2LnET zjI}w=XNq(@eyl1&^(qnGL5hqGqskDZtfKkhyDT-4FhkN^#hlJ|Gac38H*CPoEJ-uG zYMud?WE(qlqJ?%|SBB8{ZW6XTnpZm-)4JR=Ut6nLB21A2gk=j7XI90P-c3QDu9r<1 zAy%-(z)+!}f9gpMv~mAj0Q8PM?nPf^=Wve3k1fmm5RX1wtV*%}^AF$`>Y6EF+}$Ke2y+ToNGTz5Fxl56QxERhO7`S0 zB=!W3*1X0ojv=vAhDU97R6aQUn26D@A#r=e!h!>Pw30eW!;4y+ow? zxSQkw5M@F&+ox3{4^ZVg@RZ(Rk`-4W0ZEATyhHSae@^4va#hDX9W=cOQ9_c7o!eG~ zT97OAErt(xEW0B^Qmw;2epzcri-FJ3KksjjRDAfn-xPm2Ls?%NRLN=+;gw*{fz-Rz zN)6s!Qo%a<*b;Jy7w#j zz1JU0FQ@e?tw)ZZHN*EGID&4;DUHmh=r7xU_|Wx%Iy8xgpzRRkCHoEAYigq`VwZPm zp1*!*3oP&YB#_y~Z#n)0^dt6OA>lzuKc1a5>V$w8M?mw_&OF)In3%X9?-xxUX?V;q zL;6!iJVUz&wX}N4vL4IU+gzrSM163H!*r|p5-e;9TWiq=m2ka$>QeE|?cStey1M2q z_Es3*E?@_)%NT)2;P87AfXaWg(+rylXomJTl(`(+cY5YyTj5n-B;ChfwHxiUbcGtm z>K&W#ge`lm4f~A`*I+x3Mp7nI^wzY_CzF?g_K!!}wiW0%hK73UzdES_KYV`T9mZm= z_yl(O{X$?T`R2;`%5SF^U&?K};y(T*KX+2w_Nf9*&nl&z4{}j6THEe^%;r<&9(!Uc z5|{Y#&Arj_Qq@#u24x-Gw9(QR`z_*tiNWNHc~6a$ZelLRJBvi#vT&sdr~O{=&V?DL z(37v$4A#pyIAf4);cvp1sV`ZaX;P~^)MEr_!z`Glyo(BKurIUkqkP7^H0?bIcbhif z67ri&-!-}54p`XFx#(pbkmXfHfKt8~D*|n2x7FWAnFVR9P_o7Y+3#t9ct@d14Zn$l~o zwtH`WQ6ll-%Lr~dYAE_z=bLYO&Pw;)54V$A$)bHn{IbQ~M@PrUQqX+)_{8(+=O|Hp zq#igCh+$DIsKs{U_##jtEAbVMU;L>$e@tD@xTw8gcwwt;c)ZN?Rd@Ifuw+mVx-siZ zuG2^EYG8bnWHB_0Fl%Xo(Qb5-gCQ~==p-PBVEbGZuPt7G&m;sNyUAkp697j9abH+< zL2H<>!CQHKcC?sys@p%W)AJp%$_A5`;t0~pe#yvF^gB~!=?8`qtcOIMNL@7gngkVX z3yv0f9i8n5zkBt|uEC8#qO?ugVRix) zVRZh+J-Q=mBUmvEr!5j2I@qTS7b4RW=15k6TU<>1=3Aeq?0hHofOmGhN+Ayhpnt}; zjdwxgi-!wTo*0Uny0{9dgdp~mgd~(_{8FX7Y@=x`xXpAWk#!dRo42sl0(3)p4FOY_ z>QH*FbLx^hWEi_=u7ZdmQc)TV0%#fqp~Ef*mO?pT(X+zj&dJa5E2c*MSF3ZXnWM81d{uS+YN*4sIL4smv3PvU{@P8Z=4 zY{^NGOWbCupjz7HaCSmC%7~!ptG+mXNcnW~!)d_g-6~eXIK z^V~O>F6!OP$V5kO1d-GGm&WbXFG6&qZx@%$?8TB+hcU{F`YuLBVW)J>H6(0O8WphI zduEjUTN8c)5`O|9geVNCsx*;hJScZRJ}e4Knd~^wxo{^h-nyo2E+xssQ1*tp&3|e% zONLHs=AkQlvU0^iEW{7dXJ;T^;6uJI{6Xu%vyJ`fac2mbf{CLFBHD)5L%^K&Gkerwi!Xzp1(Gi)Z`?QTqT_t$dT&g& z$>_3y<0K#14TUmoWd0?lU+ zBwh>Wdg*#|0dvg9#~Gh?eIn0?Q!0J}t^#26*d%X>(@^unu?6tocn%NriSQVdUq@Vr z4SQG9PZUP?tk${+ZP8yGww~L(nq0ky+Cnz3@Jt=61$&x{hfW#O+eVdiub`v^K}@!q z)VnZTO7{?-0r9L1;w0q$f$1OdCwhEeke&mFx+F>$VrMvG?T=ZtmmodgcA>wv@!acYGy6%r1&WW8mUIKU)-@9p7F|l#< zoo2NTIx>CGI|N)B-#a)Xf>XCdT6B0 z9HL-Z(rR!f5VR17i3o=>=RGhvHFHu@W?2#*aZ4jJvLKlzE-1~14H;h2;q6#fmOrSb z_#Sg7rcv4OC!lIfuA_M%vDW*Uy7jg*tG1EI?CV@RKGVX)n4z7vQVKO%OPQOfCxz|R zVVVn>-Ft9##V2HYJB8K+$zgZ5>BT1pvdD!2zUPn()6}^OQEZv>ou&2>J39*woK;F! zVaj}ASxMi54lG2Zu`!TdW@J9*Q03)Q_|mCDd8U#LYnvJzLmBr>9Hqnuz7rvWAk2^* z?wPSNH@is#INKN1wvM)S`E5_MbB_ninyWXg-hMlG59T|IsRF?;oN}_WtvH$cVsXRi zQBjE&Sp4yoiQR3}>2JBeVNb46dGAZ&zZG=GTjMJxOlTn;2y4_IXf{yLdYP;Wf*&cu zU<`KUQGII;%GFraTM!FNzzmQVZLANSgh1b8KQT`o_KLhbX8#HJbVN{YXMK`vXR>%Y z_EP(mm4RvfBL}OuUEs1z)2FCHm&3&Bv9j_Sx5@{kUN=`WmwGe90Mvmd=lhu@!a`HheDO$T!323X=X=p?(&aMIuBC2f$fZ2RuV0oSww^Jt%5eG z_Nyjvi@3pj;V0B=hwjxI;$v2{XL*`t$_)5J)g(g5P_)vLsB}4_q<&#tDd7Q z^NZuD9m`LK)U!C={@U9*MF)bTRjyTx4ww;cq7ww&#kwQ?-)z%NNIId-)inm=SFo|Z zM3cL*P7SZA?rO%h>6G<^$U8i5l$KZR!!N4X5awsT!)!*=w=~X((Bdw zTA5aY0t2v+2@H!qt` zdQ}bWd8=X-m*u!hK$hT{KD}l@$9RDKHD#@bEq;mDrH`C;orgN+`~N$ zPSZhFRuT>KfJ-UCawKg~tKJl*=Oq3UV2U^=i6X-nOGZaaN0&xMOZHq=iuV(+?5cKM z%Pt|9!;c1=cSV!eWf{IfCtDzp@Mu`2&Mon%J{--&Ep1sOOMv=z8kQ7}j?DR)j4re! z&-t;8`fj2~vSXq7iI_Sp8Yo4b4QkF#qDjPy(%0)1KS`b0ZQD`F?~kNC=XU6rB*_7! z#c_szbJw&!p&fR1ezPp8c`-J>rEZKuV9wZ3gnbv>+!X3dvse-tLcgVG%A;m2gBFH? zv6{C-6N58Ax3j3uCfTnp;5iUW-XSTt>`C_ySUmJCjLFnrlK=(y)-DHC#b4FUQ<2xA z+ttn=yA=x~Hdg-2Oq)Mhyr-q5bV(V13OEo`Bi87v$Dsp%e*!WIy6^F4AH`?X8gVpb z%H0f7SD#v8#heaq*{J6(4BRB8ckY-q{bdz_X$H0{mQWJ`JXepg-x`W)v&6Unx|Re? zffQu8SnZuT0pRqPy88`=NsI)nY7vYJc%q`4YRdln8dAPw5`r7z5fg>|djW4?2P>=~ z3!5M~#oj5DaMNXK!?d6u5km1^NX!YTZFzp+>%B_FoYMr_)s~f`gh8cX?81q74KKZs zkTRv9v@F1W2qR<{P86k}I#6f72^?1s*BbG7XjwzF9oMCa=|Rwn)1?Xn@Fh4GCU`>$ z^tpU;Oj7owCJJY``r-Cw#7cq3jLu8VSemu(PACSPh`_YF->Q^KIJ6@b-oxHNWpKeu2ZT|&zNv3J0&8H3{p)pI5H?5t=$>?WGf4yVw+(#VFgKe@F0u{8LR|dqEsStG{97{1cNuTRB2Nw!)KTDkhVp!+iA@dP zMU22+$@;%m?G&Pf3|^dnCaiZKoQXH9 zQ(CqPTM9_6*iWXJ9*1x7nnvYo7OO2#)ue@$6Piu8-~Mx9E#QmzQTcg@ZWw}?5Gm^DbLbPbhnJ)hDH24T zcHHm~^BmjuoxLUcd=oGLgJ9FH;+A)eDQZ6fZ)r-x-E0fLL^+_O+lwk0^O@T_9Y^Im ziA)}qm6S;;(9xl!kz^B;mEoCHQJbCsvJnH~2%#Fi>%_71!f%+_DAgQx;;F?wFjZ@A zK;mK8Q_(D;nxC2Y+mDl>8eM&9;xc&XOt(Dk`e7iFlNRL4@Ytj28Lz6y@{r9HmFf&a z?DQk&(!~6N1@ARjaAo2>Hsj7)p7u+!4$*SJ!JH`G$JH?BcWY>>HM3Q`M@}L80997Xe7dqt`QV}* zXYn`!G*K~4sN2{{J!}<30!mDACe`UHP9fTolSEAgGp7j3Mwm9__6f$6DeMz{FoDLM zSak^z#r3pnoMZ&GkwtTD7aC-FC3_A+^r+=UR)B05lLv~I7VVcOIh<_m;GNK|8bG*s zQF(7gU1?OkiVBr-LpR(oB#CdYv2;0^+Fc?^uT|lhA|L4&D^yJN_fUo!rF2$5lzKP! zDz!w~*F5%gL&D=F?~FFJo<{7xwn6Xa{Aia`6ALjU+2N$=9!kO(>nc7hhy1m2;~z=}4{*#b-TPQHmP>{iX?>!*E+NXFc2*a! zEAN{}{o?QCSED%6k*yUfTjEa>8ttU6T6wgCA=66Koo8KX8lE9*ez2m|@`kml^G$x- z@i9hNjk29ktS}k}>sdx|>DLAR!SkJk9rggG6zqX?EZVJ+__|$%PuoqqD?Hx1fH*zFnjB>HP$dm#wPWb*lGc0MR6sT5>K-3qr%L%L!{JCI)U5O~k}Ed*cTrc#M!| zgik!s^g+hg&dC@8DJW_Lo3N1~KLHE#h^G*^l$24um{Vn}bev#MN8e5(-OL6x(_%)X zZu?uVMAQt(qZc816yeD5NLz`6B!*bu*Me{?t%%0Q*(IU~bFfG2V414~!>ba=!o^GM z>5aqIR64VrfJfRtHhPdmA$S4JKHbX<3U`xuH z%q1!_+L^^&inw?Gdu&e0cNA2w{5+d^_2xUoPNAO4a(3^&K2Va!RWwvbmtoGt(NKH4RsX} z76*SK3-!(dY_Jrs?N@5%*~gXYUg=Ra#5 z1BtpUjq3)4B%+?Ox6B?+xV}^I%baM6 zq#!WbD*~V25@?rmhvktPmpfyX4Xv!1%mYW7-7W+XKdivjC3m1IP6Km2ClAOAc2v4X zS2I646L+vm!Rk4$aiBtHQoMzpR+k7YBJE;qv28}(<2mEvD_>4V#+RZ*?t0Sf7-+%Im}JRFC4c@+yis%L-pQ4j37IB=dL6 zDj84@2?{mJ@InFJg%Tb%T}aO@To7J>DLMyf6+?YJ~ciU9GF zOr3{;qmLbQ`8LnAu#ZFQ+;c%i3!@ce@Lj0skoL|eEzuY}Z<ISjq@sOI`^ zC$jv#+dXX=%=PsL3MbN>z@&#R+tOse3`GVd#3?w~_c|GCv4_jCjNIXy+3ey$Y>vjT z8f+qnE+eD=1SEC0VwOAU_Dz3sM1wVHScESRzWbOrBRz?2ff0v?c_s@RF-khPGdpL7 z%QX8?~Qu zbv4k+%Xi;slYAja?dVvE&K|UzU$U!Hw<7RT3euRuKr2goqOQ^AVqN>B5x(OzFPeUa zjF>(oTKq`TkOx@;@4E<3Mn`@8O_#1`Z+l*0z+2>Yo!z5Z3tVHk8BPtwlMJn__&O(O zb}~-0rW)%>ug}elNQhIcXB0D%TuF#RsVsv_k4jiGOW;7;z(1pevveV=NbVaKZM9## zsXfV}l>e;1n$#Xd0M0HgwFV*83J6aVN;QGva3*U_^?3S;Y=MW7JSuxIhB0M$U@1BPe3VoC=yvXDWHsw+^C~i()hh@N)m6)ksTvp3{`kL<>$H~a2tg@ z_z@cFOPvJV5R449_^F!XQyRKYd3oja`U?qmN9u(`48$&E_;Lz54B{2#MkY-;UnE0d z$p4)V?Wne%B!nR!wU*gtXXN6Bcfi}AQylI2 zknBU5I4acN&&Hb!Ky6w(fxm2^8IgCv6qi_lIc%i(3BZ?*3N3~Y^!7EwRgctKG!-m| z+)KQ+BoD2tiV$4-OeY2Fi|Fqed>su{NHmbc!oTSU1wHje# z7%M!3n08UFj+kw0!kk0%J^UmkHZm1D@lJ)XECn1bylz%wCH}HpwBWi}9`U=QY8*9K zo#d1}&rbl}vo~G76Q}s(t_CuP7Nvp&5bcv|5Cxk1)}U(pKV?ISu_9MU0k@Z(RsF?5El%QzE`@ZEN%&Onxo+-;F zT!{7l39wz&n9|vVoP}s!_J4e5O8G`VXJJfWlsgf|bXPU3$6n}r0#x%^cD!h)H8VcW zO;pa6q$BnsCY$0H55zzjyE-LVmEtNf^D5RGd|dzI@I&rx)`-)DUHwchL>W{lm^eFe zZCCU>qfZbImS#$p#M6+z5#>bKGTx^HLU)a&>8 z5|%WkM8cTV4x;XDt^2ZH(Xt17R3-z6+In^r!Jz>j9)fVwXFR%oe51d zOD>IZrhxe!IZubagf8#WFMN<{RSenA14*Kv5-ZyjBh^hx+i53qR#(wg1@Od!LZF_Y zEeQ7$P?pXpxSZYaE{4^(;W6sY3%~@T3t!;E&NruD&a1uLqjoE&DkBv_atgCFmK4?%{0^(D+$>>z7Ezk z+U)NJ>0+^CkR*P5R+l?QErR>V?_eyR{8ioipuZm6iTgUNB}8wnk#M%uY~CBnE<^^J zhDjb8$R0pJsZIq{(~L+`-h-4tPdu1@^sK8mHIuPjXQ$>S-@Qkkf;m)9j79Y%i6?WU zd@1QF<}q zux){Cv6SkvlUk!)O`J|aXddM|hB{ON1Kv@qqFGczO&Fx%B&)9d)b}>p&h-@~Y2^W& zyiGBZ?{!%~DPU*Hegj`(;oyW5QKbj9F!^odY=d@bSxb*9uSl%+umMyH;?(79iDjXR z04)MdETM+bqmtZsc-QN)=4NJVV~S#fR1dD*MHz#U&cPN3n6|@@BiA8c3%YK_X=X?Y zf}>%xj@w{0n^+H48oo^K%!QfQpCkEIpg^|`n)RToWEwv->Vgr7V#HAixg3=b5m}|k z4qLQR^v{nK<40kkau=<_FGfLNCS8W)3uyacfb$s*(vSsvC1ixHmm9k(eAKKB>b2IO z)%v0)qamX!7onN_1_-03CNfW6P#RfQ5}W8kN=hMogZ=I}x#=xsV4;&hy`yFvii@t)H*HXeWh5L?+~t&KKQwa^-_K2CpU@)Ejl! zwMxx3Or@#yl7cen&OF+>Z*N2_h`%n?d|)(eaYd)oH%sTvy8KQDWARn^*bFVQ&N88% zbx8^rYhJ$U?0T&^1zB;h#*;^9McV{r133)%6Hq6nMi=)JaEGmH&7Yor?4Bu3>V0js zq=X04jN6GPxw~S>G^(EQF>PR=96LIy87qx_P=bP9nxgJ>%}z_EZbSIwpe3}=0wEs} z;2+-2g{EtI{ScoX|1Gp8I*#mSGZcWo+uoA@7^4P*iHb4Dt*EjQW7Edq1i=ICv{LUB zp#rzq#BlVn6h}4Lt_~WHS|M1ED%9rqjo(AK`AP6fBzPVAZRl74@(Q;8HU?#Zn*N4iS)kjNuG&q?KDg&)T z`ohI!FWHER5kowvG^~=$ra&bN3FG?m9%EgC>ksNzQWRe*j3oL4<1uy!hN=40k9KT% z57|o?S|c@%k2+H9#2bz0^|(}_yVHV^2g6Sz8pDvb)%Fe4JS**Z@kqdPD#GGmiG(E} zE3U6h_P(z|Mc^?h&-5}ilHp03e+^S#pbu+giW+w=#h_ksRJoJDWzozq>!$dc)n9k3 z+hA6zb*2f|^l8X)!)7JQh%)$dv%OI^S=3jTWf%rhZg3xxq+3i0LI6RZ{aWFN!{mhZ z5HlqUZBl(v$YYjVDM;m)elb50gQ1`~A(eyX3Rsi?%A`xEp|Q@D&`~CoGTc(WDWxCA zpF>qpRUj3_RbM7&z1iw;(hzK!gOZPdT!sbdTH#>|7RfC}e*NTGMc>$hR5%dN6A%)kW3D=v zce0Y;eVPrfw}KTxYiyxAh0~-baD;g(w1;zrlGd5x z6XyzQItn#G{7%jcV;HabGHhA$iCzp|Q&Wk{yLesA!5D3;SPoKz7cn|?%dZidxoyx( z>A{35Tb$uyf-B>s+~&sYGpLjr`m$EHK&`r}!3cu>f#>2~4veHZ5RbO(aoAMwQyzQa z6Bsqo=So_1%&>7|$*>9shR`f0 z7DIIdd8?iz+jFdA3h92&31=9o99I<7s?_-LM7u8R66#vgfuC0&VQB4_Iu^ad$mxgj zt}z6?8@E1Ad6MOoJePf+6FN?Zvyn3wBu`(f^OVzkrHs%l5wE z!X>!7y9IYAcyRY%!KH8~5G1%maCdiy;O_43?oQq$=d_*f``p`id|$uMy>HKq6l2t` z+O=ivxz=yaHUG=6_%+<=xHZU~5T-L9)nvOtCiF|hxAwj&XBmMga}Su<*~kxVpN^ff zIjHMCc2a-vdJ3-zd-kDNLcg8q2G+-k4jfl#hP-LGV|^%L7j5xxF0dz_*ZLqQE%9|% zQeclcVmL&Hno@~}$-O3Oq4b>+g?mQL;zGqHTfpqJCSdmSohz&d_Iq{pRt)SREorQR z#b%tUqRL6Cur@%qx&_I=6=LjO{S#sbvqw8sUVdgqZKakWWt&uIw7ght;z>`c`EkT| zz#9c3%#V6s#V^zy6=G~9CEHb@2EJ6h{kX2-!~|;uMOFW%$6h_md1zboO8%Ym{ zp|tDSN0CxNF0wGO4=Gkr%0QLEZOXuFHx3yK%XY&ZjT`HwMNJcgm3vtxTus!Zo5$xq zV`EOvBdy_qWuIgm9UmyvZp+)xmpe+O?iC5Icx)hiTJ3J-7NHb}+2n;4gH$GS%5X5Q z8bVEFaUk>s2L@b*mz!k0-;6|3w&1%1iF1KL(YjW3ah5j&Z7J4=W?~?hi z$VdDsxX6kzmQ$t>TCV6b1Za@a3QD32ThSqU{SsvlSUJ-ybWdL1KU!qVvgU8fiUdG>w;Hym8q!YButuQN(xXo z&=dl9GgxMV&<1ZT>B!$#qy=9OFsD%-^NoH7kROQ2avwz5WyrRf>x9H9DsCXFxHRk1 z8}M{#oOomKrsYg?o_dBFyS^HtD$eY<>Y%^3N{l-w@%U)Wslqs|E;k5#zZ`CC?A6>7 zCkiXHS6!KK;hZlQHslUBtNvQi#anW|#ojvN49R34vreF{ba+C%dz=Kb1lCu2q!6y# zKgE8lk=km_^4trOcJf^QfG=Vav+;H5rui*FQ;l(;r7o?4*8355)!cLIGPzivD&Wfk z;!sf|jyXbCva@6ht*Lg`Re_h#is9wiN<^xXzTz>Wwq%SAUSfW7mEq*P2*;Uu&TvpA zynnGX*>^y{-VP#7W-qgA)0Wpg;&xbGK|{VkLd0ohe+?uPCc3kBEvU3lbq>o1IUy%@ z)}HMaw_at_c$wLOs?g=68}~FD8PD~ztwjo%NUJ6|Zl}+emypX=g^73~&E2Fn?qBEI zxZJKr8QGbL48rM%g?yB8(VO z3F|JNh$r9$g0v1wNVWO&mCQl~hcn6X`Pi8d!NZ{R$Co%_#?slVGM^XkgL#LW+h^<3 zMAnXE$kX=t@hsQSXdKHb7O)Xki}jHAZ4GAbJ1i0^h83GtI{M7-oLWW?6quHgs`Ib7 zcqBuXJ_kQ(;3e+?Q!8-f7{3GHneUEbGA-iHwY1u{SIVY$&rO$F)dsp}F&fQ`GL%a- zX7*;eAA38EJ85rbM&G5gwn2fbq%)^BIo5yH+AJP8l1WDNHcpc{DEZvGkG*|VyI5G^ zJI2I!V&%hRLfz7L?@X+0G4{YNDe`0NH~V0_iL9AO^IAtO-r!zraZ}H$Lj4W(+30~R!%a}&_{4%luE(SASvm~4OOIgoEv^t{&L+jey<(hW(^0H~qK6Jz>RePjCh@c5#Ze3=0K)XDq~d z4o~V9f| zxjinXJv=ArXhO$&Jq~Y+Q{crXMI_F$oq-EV>GMHIk&TZkx=5a0l2(%GtnmV3*qFE& zpJtFG5wox&U}0NuC{J#`P@4a1 zJqyh)Qg9+ShWtYfloh=AQms70EJJu`HrguFqVmPP{T-h`A>-uV^HldeOaFZ@S#IMV7~*G&3w!_Cln`&YE;5=yrclgE66n^ z7?H55@Vkhj5pcc+VIKKEj(H}KNf4aUroQ*7w4LFrPyr!A5h6b#sy0#X33#?6@liWlMW9c9>oKNOpT8yG zl~3BG7Xdrp77HZl2)v&QZ@jUK@L#C^X8z;)kIZbW|E~Z0m)QS~`fo@mP;iK! z8lP-`QUHO1fcb6HpX$Gfp-@nnFi4n%6r!rpg!O@r=%f_v#&$lLKa0Py{wV4BQ~d+v zclnQ>>K|Ybf8P3QQAcDHVg>z52vi{wCKg~v=HC{7d$&6mX%&%F%BzUQO(AbdbdiAb zUuB9|97A@g=nPLGNjHcADzA9qfo?%WA?_=K>pbs^m&GJ+K>BtvRakVX;+g2NPGazL zG5NX_n@$~1n=i07{WxHz7uS}23#+WWQnFZrZ|%2{Ah(}uCl4Ikd;>j|lc05}($*-@ z!{tzV*=RFT4-205zR(6C{Ve^qow3hLAC2}(rksfooP76*QmTJNlxDgP6C^X+;St&I^0{c2UqjB_ADD&o9(E8BBcjJ7%_kHq(xhj9NCKcdDDO#?r}}l}6@CjUFUusQlIkn?5@bm3%I>uh+3}~lx(m$9Wn}z%d~a4# zV+!@Lzy>ZFHsrdQ#j!6$0?d%B)_uio_n=f5k^mejEr#p|2>gVt5yIuH@>5IO4q-kT zoATY!z*T-q8E#X7F!C2}xnhDU4uh!t6MQ3`A}+0p?NaHM$*Hr_AuVGJm(ohAmRQYP#kx~;=r`XB%veP5f1H> zXXd@dq-wDzec2K`A0929zR3ilw<;bGP+*WCpy1HIumAf~{}~42$D0s8H~yXev;Hpu z=wIs3%)lsgQWjxFzf6P5b32FVU*gZWAioJr|J4tG|JWnsul0ZFepi16fd5%2bO&i`8y(2*8Xct3Ssy)bEa{s2=ztiK`w{rp+?>z^c`JIdc1Hx{30 z#i~)przv!bSk|W4h42LKw8VS^Lvz$LH)y#`D{i1vl^vHZ97Jw^N46hTju`ITn`{%N zD-DmZWL;U0FyL-HPgg8|T4&l$G?&M@tCNSoRVzC7^5bXn3+EuLLl_D*jULQ33{7Ix zm$sXi#x{7Fnw!g*dU4%sN4e7!EmK}HP0W^WPSRV`!=p-%XeC+S2Xqw1=HyIDuT8hQ z{!%f%gm=^b^GV_0r+Ugr$+1Zl^XD%*L@_)C(tvxDMBuYQc?I%RSvk-%5K&VSb$^kR z<&9GEM9u2c327qc`uqK$R!+>xchNe|__6!NQA=?G;CK0OBy@jVrNm!XX5qE+-hZ|Mqr>zCYzq;^04hVmC1alkbx`$dV#cSPxM@`WLg98dR zmePAevS0SutR0MtyW1b~Aia)2D)MqAkId^)!=m4cS2^_b+p9t*Zh$_%GC2duNsNLD zpITr9Ro%nipX1*uK1XOvQU?nxoq&dkRT_Pyb_jyOoKdoZwNurAr^=6ZSdaY#j6~q^ zBN18U$sY6$uHWH-2JQT*&ic%tHu&DCsW@e&K96!TwsfOviArHYmTH6RbdItCtM8{M z^u2a@?AM^%l&O$9bypBkI+;vqm^FWLnTX5EwBuf~^JK9>gM1^yxA0lTDXFOi?L%Xu z!y{ZZ%3NxaQj)K+uV@E(pUklIp>tw)I1*X*XOwi9HZ(ht{745XdXK0)iD{vP(V!K; zk-L!#!X`&s_NcE;6!%oOCavL^52uy$ra5v74((fv&eh;R^7~TfI%yns1DvLB$NS{5 z1fHN{a#Lcb)qJyEr)KzAOQN;od7iG;AK!EPj?pNCGSx_~lLR*~XgtMR-C=S*IovVF z8z(wSh*NkMgIl3+?8$<)ZNN2hSTuDap5ezUqR44Tf>L3V#Y!^z!%;)S$R84Yh?pfm z%%>6px=`KH^Qq}DWQ}45nD`N+n|vgK0Y|bG#}WqIjnhum6&Khk?5U8YZ%K1*C^~V* zo)9((&dEGgHe<%oWX&jwqSE8#iZET}N_N-EBr1+VQ3yVde)7r@9XbA!&~weCtm5aL zgun!Nk#Nex}(f~TK~rx&Wv`TB@1rxDbzG;6WPBnlG0sqFd>K1c>>JW$XuBMuDL z;TdnE(L(_tNlLsTPTJqZUB;k}Lm&e+t8a&LC$nA{@zYd9&gx?_6_&-}ySyaFyWe>t za!?H)7e}AfCEx;i>_5u;KRlV6%mbo@=B+ z8`{%@-02ey22G-hj+^)>~z(EU>^cJc0eY*EBXw&4f?>u*mJG*vpmEqTuy9Hu>%+rdA*Y4^* zCbFnvmIFX}830vPypkE>O0c`pLdjlcKIh$7q)+i(;8Gi@6)PPF?fPO1O+ZV+Jda8a zY>F5MklU`j45**Ao~ue^X2#X4>X+V zNYT;#!WEZHEF0%92fhE|3*7(Q%COnu(IX~a>No7#6b;;nEdSD!Ksn_p?Y@NT0~}%G zxl7VN`ACKDM4clq@?K3{)(lXZQ0j@GoWPa#q<{dN{*i#QnLYmu)v%16RsVDz_7>xk zDGbihopMDR;Z!+XZ>jsrh_*f4pi+wMlm@N^t(DAW*`5pm?H5?(FOz4 zsRNH!e|dSKy#+t!UG%BWkxjh>y1*i|5_oJbHF!fV`~mb@?JQG1RzS>cp{VC&P@?1m z##OkcJ~Y++G5tG)OF(c6^P;X&2Mhw$hhm(l?*M^$M{$=qdW*r$Ahu^7gtsZHo`w(n z!N#|Fn$n>SahW2-l3d{8Jg{RI=#S93md&+J$9KmMZ5qmZj2cu{(%a#iDR7aT5yRog z_EMwLW6~TM@i=&iK4Q;go7$`{J4DK;}K#$ z(87THm#rq={QF`rrHa57XYttY0CbzdKgsd`^1NwZeyQ$v?s(*MUjzJz0VJijx%@|Q z8aSr9*v9EKrCiTa3W|zeAhh2B{i3<(3AIx8Va?PU61<B-P@ic9io7h^L9Z1Bex-5x-Dw z;UvYzk`=xqCo+n*1w?pP*EaHaT%LsGX=%#)!yyTBr-W^B^*OwsptiS}5V-&^e&&|D zGO54x1c4T&3+EL^`b7O5@MqseeD+hQx<~6W)el7fFJqW2$e$X{=Z$*QOnd-hXhG;M zHoE2IrUgf03H1(07GXf%=@Mb`AtWjOO7c}3x9AxUg- zeCUX*Rby0m>UtDdWk#Xk%hKaADJxkD4bcE?1;r$>AhNT599zO1(dPFh31sIwrW`?L z76($i3FV@iNwGzH2^9EvMGkX7UPVOp!|#BNzT7^fA>%&PSYn>(>`(km#!8+slexLG z(_Ll`REDtF$Xm&`qHkFb+0!+XEMHGxxu7@lRW}~R1GB5g(h|XRBOKbsn)z%`XJj$aIr$5^sLfOJugVeU+bo$SW2R+yHirtB?)a+ zx3?lCAC&=s_yAz-cK%Hud0O{I7zyk*iDU)$ncuaPMbDIp0l%p!-(a@N|G)H6mqRsr zw`zt&w_NL7-cD7F_}#qtL*WWBK?PDyGLx20q)!6>E90&Ix7mM%{|zmFK(evje_I0j zKjVKk7N$Syf3mZ1{G0#(74|=x|1|(ke_a3f*YZz)z5Ww8Bor7l=+CVpKiB^S`xy>~ zf`0SsBfqWxi~Lg^S_leN0f>gqtnWj@Cama?S%pE$Vi%QF*?~#MZeVEd`#HLLV)EDW zPk#&mKtKXO!GA6P^!ArjG#CgZIMnYS_)RAi;>Z3Wh4g_@nWzdr=jbFXl^qisihmme zSliDEjutN9?yJGHat1S;npjA7hFN|JF9;y^LO{rnS>u0b(Ydgi8N{uZIxts3kyC+fwT891W8ekiUhg?$v zaw}~li5zcjmtWroZkkVi(Y0f}9UFR~u+v+>+O%f)*&>GIoocY^!(oXZTud$Lem+pK zf;;B41D3lIt-pYIWtHDH4&FFE5gk&i`6cyKR`-Tw(Cx+1ldd?f=}nQbA0nt2TJ;&_ zhBRt+iG-r+GQr7oN}!gbnL0m@&!`vcZSc3dIfSKp(} z>T;`)TrKG4u6EzOjUmw`ma3=)j){_1txhT?uH8&%Ebq`~1jhAU|NJa}<2bO{Xa~oW zR%sY=g$54CP@hL9x3`2k*kpuop_@VK=5)u@GiUqyIs!@`fl~F}A{<4uDb9;=*oAPM z3D}MxR;850lB7ftPPDnWfg7S|%F*bO4Y#Ga>mzogh|-PR6N_iX+0@r{9+QW zx>-@c#(c5GZO%by{iBkAa9B-Mry4|2+QiqhaETly1M$z;4HFt7@9P+2i9Wy*x_Z@Z zQ(-e2-{#cyeZV#wRGBtk(c_WF$l<{Dqrk)1X4O(e0w~VZ+|Y1-2gpblV%#cF?4Sp- zRL({Ef4Jz7hb&1d5{>TE3`AIhe~QVr!|~ko%LPk{&2sVPCX|}3E0k}#*Z>bkcf>Sb z09D@4Qq77(_UGOCEL%v87iFs$bO~BYRo4+$P_lphVF_h3_YOyDl*3Bl8}G$8l`>ZD zYcv+*fxfkp%e)u`08bzpqK0Z#2~PZudA&BDj%n>ujaij*8*LSHsX2w@H)Xk%HIB3RdX?yX zk(P#p?d-pyK$x^ona`gvxQ${u(VK%|jGF8Q&4nJkAx(0-z&Rl6aFzISY+B^*VDC># z24`fHzoE&VGOJ3j8px-_#lSmuklhfyRO(fQ?#uh2YAl`K;XH}kw1mfG!z9F%lkGD$ ztu`yPEp)+F7EpriJB@YWS9+5YS*v!$F-VOOF&$>!%7Sqi@RY9#OUCG0btsGRd0YIr z2hE(|>r3qgFx|B!8m;gSa~6HBSvbU$K#=l`buh~G?6`z(ujRpW*Q@Qu`sH|PQNG1s z4nb~|Y_-xNkaE{(Nqo$fe{yXTUG2n`+FlQ1`ceIjSxthnE$UbhAA}}7A>X$rY40y8 z0(BAx?%Hh$D9UlH3w@nmn>kYWS1U%t9_99^E9Etk>fYDo-dXgyO$^EnjDhKf)UbbC zK1SW5X6Q3Vvg#q%?es6kdxsg#7Ss$FAnGfIq>^ z=#aTk2PNeaa#Ei(=1#zQv#sZMzyOOT)7sHcHO<#)lKl9Ltv+-6by-9yoxBw277?Y0 z-0m!4yHnd}&_29-+Ok z2b-DsY0vIs(pBG_&g>g1o}IV)gOL`@zGcadGx_Z38ameDzmMZ`u*MC8?-w4d+TZFR zBD>g_4tHFlf#MY^kn1#?lLV%A!qG6%1P)a+PuF-ypG4BX%p%Of;ppluE6obX zcnk-MqA6PHg+0-^bj@fc%_@W04XV+XnxYR9Myi7?>Lgi4=V99c67 zz31y`9_z>E(yt)uoq-@Jo^P8%4tmJS%eW)nUs26zskF)FG(+J& zZyJ{XqQwWWa)cMBt)wA*KWPG|cgVKU;(R`9;uW}Qstmq+eY{>OFDVtmUj^a4NP6}G zlMrfV0V-NgrWx(PM9M27@~$JlQ_`)J(h|9fKxnHjY_6x|=_{!UF^-v?!;+b|8u>c$ z)Xg1_f*u{|!FLlQRI9c9%}OYB^cXi>VpG%%-drMRS}C6ke+x%RXLcfN9RTUNl^>xg zyV5Sf>>IGyLQa|C;C&;)I%2*UzNPUncJ(4_<}K>8yj6HTMljjDuL$($K= z5`+&)%1On3Lea+ARdt>$O6C@2D0vH~RwwklE;;B8EW0%k{^(8r@#D?RrtspYH8Ac{Rrh4t zq~@i@f}~^xJ{0GoyV`-Q53}neYAUJ9Rh>mP*yOzbv~^0|gZ6>E+nVcE8S1&mx%kXf zQ&%jjiv6bEv_)(A`irPIhzXXGxqymDU>c&-$jKb!DU|NQp# zl*Ngd^X68e;(Z{BL}dF=yh$rMwaDL-JHA)+fjD31h4zTty76&Hf$YHqZ6g3D48P%+ zJ$}Iq1X@@OR1p$D2zwwim?;R#P0l8W{*EduxTb~b*Pv6guexU?pXM%qyVj;9c4K{0 z^5X}vPqql}9MreM@!a%G%dth^2%<}h){EhSd?gd?YB)99)vXyZ((sQgi$q|zx-7mx zoq;xb$#-dfwq)TK8N9{$_-0Ts;uEgLIGX(KWa*Ge6eN3ur4}h^7YlZcY4K^9Cc2~k z6Mck0YWUee0-2*E;MEGMe3JioW>4YP)2vO?KrA@MD$d5nxa~dAw-3=MTuSKMpd5GI zgqGQalyoH|_?pyeD%t$!AirVr?|^*eJeylHT45N1iu$Vj>{8D4EJ)=D5^no~^jN1$ z$O$GXH9%~qOSDJbT!v|hP3}^)Nz@KwTa@KURMZaB8>h6H#ay#@rU>e#gSWe55{OaL z#AzR%W_&b9Q>Wrr-kQs_%@2sU2QLFn?88g0G-pPn_*oZ&7sULzY3sgrF9|QkK`gyD zKvNKPO#L;+^Zp+byZC4LpOK!K^}nM7|DUe^%*_5r{%2!l`8WUnE9`$8|NmTi`LF5x zmr^`5$j@aw1pdtbFuzX@`+NQ;(f1)`W>>Uxh{~*D5%%qv5cvWBpR+2fCx2!C|G2s| z01WiU{z0Jr4F8~DkdUCiXa9eP|6h{}NEGyenP|*DQI!+I9d;WRe-Hn}uw!gvW)yu) zsurklBh7w0J5AZk-Qc!s;p9Kq9}mchc30D?d7D^KkF&U`XyX1yH0ATBVi)efh+`7-#JTlD0d3|t$j z<<>NEW%otB-~Gz;(I44!o0SWB<4Py=a#2w(Tv2>aZojP1;Ymdo`Mqa*Lpb|Id>GfF z%9dCmQ6b+a*%IZ=_~&1kvy!1JtNDnFViyAwmHZz_AUFY`NU(b!ASI{-iRe@}gBQ^+}8Y1eW-&dhx||#YLaRem>a7^waz8;ITxrhU3h5 zEomzveJY7>ptTM!^kp4(w(Vc*3%hE(3v9Yn4-cGkGOtC=V1nT5m#7rwe=)vd5Mfua ziQI9NX0lg(j|a-sB(Cr`&VCxeY(!CbYDIjeNYxTyBR2D$--1nvW`UIbr-oFpfbK-`XS4NTB z7&#Dv=EJe>X*Km?{?3$Sk!B2Zv*Sq&Zu3y8BNSsdSDCBm`!a!@s z+M7h>y3Ot$ggXsFWCEJiRE`9$#6N!gydxDnYn9|Qy4u*x`k|`exX-Gab$!_n9f22K zQ2PcC(;DH&O`lx-GFgX7Nk&#Gk|+U{(Du2g&>BtH3F-`Ctb35&MKO*nR}xkdi<*=u z0!(d%$N46$$lom4Wb%}W=&jv)jdIQggh&vXLs8f+5Abb0^l`q0j3f|R?h`DLN{Gei zN-*=5<=F(ldUGMEjp60EG8{A#bwXTo(M=`?GWlm#UYUCM<>U+& zn~UkvAXeNLnEiW#i2X0xFbHC!iN7xH{5l^z-@-X8nhCLZ82j1>em%_s~%!DH-~olQ=f z026jZ=Gl$!0QAHHZMItQ{sCT*Qvi#c?9?k;G8`t>9)X1z&x@;*u@a7-^5rz1%ZaQ9 zOvi!3qS?2QZZ^(GZ7DKJhCLV}I^dW;W3%{mp=&%IuoE;^Rn|^$PtR6UnjT|38X)v- z)NLkNmL-t4@u|>$(b~^BKar zfSHZZ8mc;YE@a?oyxdWv@q<2NNMBZ`IM8TDSGW%7jqcGi_TKfT$wf&iv=+ExJ_HLx-+0aDgC}#t3>F$hw^L4I zA<9P;>85du*r`c!T_ebu=4J;<^Okc6iJ{rq9t$3;ULHg@G%@9YTR}A>S45B~6>F5- zJ_jXEkj7A(u-0v#A8=}2SL~50>4d;>85CauDoN1aBlN~Xp_UE<7R0PiDK;ijQ56zi z*O)KMSUX4V`e?|yt*REBoD=-2SJV~64FP^3IXJCp&^0EOLRd(G_sS>OfG3v$S*AJy zp@Nf=D}H;a#JolOiL9B+j--rB^S1 zd1rW`y4}_KWE9x=ZtJRe);C+5P3#BKtxfl{GksYMrY5HmnM|r*N@Omx;}j2#iq5`? zTlX1`@%d!_Vm=`Hrtur{2NYWhpZR4alB@u0dIF{LGX*nNW-c13J zJ=wkYFtqx#{N&V}&w%1mbb!RNoC%LPA8#pTQJ!XW{v6D9kbH_~4`-GysA_88Vew6{ zzLvP@qRffh2dR?{k~0v`XXflr)uGf?9%yO!oa@&mQaqa?##(5L<5^3kZ+(;0*K?>G zh`s}KYiCXCeRKJHB3#@fZfIw;@p??Nf|rB+(EyU)HqC0xF7i0HEa?hmE(T;lr&6pX zU$##nxbTJUKEf-Y`&KSr2Ef_>ptB9w^Teal)>zSY~udgG|SD(nP0k!8}`9?Tm&Uib&r}X%RE^ zg2Diu|2Qzpil5^KTE02_q>$@cT{=4)9~V+YC=_YtZ+KvzfUtPJ zeR#H8Q^Hv};r$)4>tF0sX86%phYyol7AQNZUuWnFZ&msN=8&MD1@lb5CMe^6WZg?u z8#XJDEtKX5Se0dF)h1{+sdRK)b?X^bznMx+(RHLPa5^2D4dM4v2=q);6jxp+jFH@S zIVJ64%R1B@J-&P5m57=+d|7Cc&NuUdT@ZfDf_iII|X zg-$b2wjr+^Bj}A4Ea_B6P5xI!*V9|O99QJ2R56(2LP7FIDaucvxZN@9kjr!O6Pjo@ z%{jWLpAX64$yw4%nn+d5)sU;+#H+(TT<&E+eK|xLwNH1e;GCVyXI-h5)>N>rt&$%n zx6mBjX{sKvP*cH)&nnQ?QE9NI$!FFV+<~RaDjw4pMN@$J9|Pb27uY|;|7?u(9RHmF zz<w`DxR!9gLRp?+@sZT|mH z{zqjJQh*|1)<*-Pvj`j5`Cwp@DP~r7OpvmQ*nh4*|A&cxFbGg^NWjnEWk3e}+%YKh zUnc$oe$D*z1^-Fz7W}dtb*QY56T(r?<=7>g?GpFL$9u< zAx0RdU8flam{sKop?Z5O`8!+|iE$lZxcWRxi@nhJbve9#&JSNdIbR0{-P?5Ya!xQt zc2De=Oz`wE^p$@p!AiH2^VT%aiXTXgA#Dg58=w4YC~lz4j+Y;L>H#UM-IH`&M@!AH zrZbwAt|J)!4eF3!H`!&6v|{@{)6+mlsxsW&RV`1;ReT1wJgI^WM`62jE7V9S(U5de z81y6kl=q@l;K|WY8DBJ_O~Qv%0Cin*F>i|~SM#>#_!?I68}Y2BlfB@>McOZ98pLs6 zy@yWN67!@dMaQKypj1Eae(sy{AWp2Zow~~R;X3QqLCKiLdYQ zk#7+y(j=@5!c0cwP#r3Q>L);>mRXKWhIXLZJymw%!phi3X?bW}N>8%znR-zCRR}*& z%VrjFpfAH?oOP0tZmuw_8+nNgGN+_%PF^m^)BF2zM6xnOL8v(&*qrfLxV`wSCKXAv z$`*M9%_!NGiQD*^mK<;TTE@0B_prV|7x6BHKY13u<8!C{k+I_z%MoYt z9<;^*SA(r8!t6?nTW3sQ_>TsOYQK^5;Q{_^>_k~_YIvB#sdCwnv4=`ZM|UaPGWo z97s#sHJl6>DHYGBupmOKgtD(3NzMfWI5Ma`G_<|z#kBANP{YWQDb8Pa?6k{4fv=R0=`BVs@&kySP2A{k~&gI5Dt)Cv^=*E3~q&OGbJ|fTbdYG zG*nkcud`K~MY2%MDIOQT5}Mn8vs>mMV-XK;qSys1JfRRlJ5OH?`$T$mS*U_YvQ-@O zCaOZ;BCST)vRrM)*m|4vmQNvOz7VRC`)sw`&?2DgqxH&nKrNK$a_WAOEM-4t3~N0mF-!1@ow1!W3kLW6yU6Zf#0vGkc0135 zyf}Uw7lD~w!j84WwVu`Q0Ik_o%Jj1v&(>xooe$O8I+2&|gAHr3)IE>euf*!!Jv$m) z7h(D8U_CgA>icig?K~l@k-ZuPzNjKzM6Z0@V<`#N(4-n|k280pb$BH(Zxc6=sTF}g z>a^Z$K3~(N6F2wLxn;XSBy0>g!VPsH(?GY1QZHQnqDQL7U|70UA4zAbB5m_7-KJGj zQ}Sy)M9IkYhlj6Cfe)%7nx^-rNlz79JRe0N2+ zp(qhJH||;~bN3eO)nL0+$W|eo^OA1yVL%#gfwfUx8g|q=@q0VSh4EXq%h<{en&p~A ziR0}rjwD=GgFLtLXm=-v;;GJ7K5MoXJ$$i>gYP46kl0$&uXCD|Y)Xs-!_K^M-`Da9 ztarh(Y+i4Jg9W+Q(Wc}g1!R^i|xHj+qpHS zn8XOl#c^xJf~iWFYZC4&UhppvW45{q!f$acV-*VKB#E;kUyXY6A10Lg?g?jGS_Q5M zGv><2_Akcdmd46|v=CA2nmbH`inJYt?*JxUeguQ+n!)v02g%@p<#+N?ZGn+PxEAvz zpWK|G7L&~E;}*wyA3!gUIE~^5O=s6w;1q5u!ki~;0jE-y0kf}4JB#IXXY_U$Q7anD zqCgv>MQPLkRYC(EoMH3%vOuD?I;YpeZtF_v8O)=Ydw=7U%ihVW)RmApaz7^U3I4v9 zVg=QM537BSl8Kv~DXThF_Hy26$3;2s2BEBuh6&y5C&EN<;YV4TBJ&MX2Mk?D)_bKT$E$91f(E z$&Pd*JU(-w?#6&z~`8+XgW1o zu9WgXEI%Uc77Knd1vy@)j4G?35tCS3*i-;o4WhJP!J`8cxx@P(dd&9^__1EC+T$MBBm;T@Y} z?A0BxtYWXNDiA)a&&V63^3Ux2qD%K30Acf%aJx~L4`}ZSL`&tkf3QBqF){t390kTc z*1t|D@aUU()Hi&d(8%lA`ifVyTUq6D>-i2Mp)QR=V8wC%37=5vpkw!h<$k86hAxLG z+|&ps8b<9ftS=kv)z1>ig0e*aYwnSzKu9ZWC2EOcRaP)H^UpNAZA&?FdRtp{-!e9N zwO9ONB$>`p8OxL8G`16;@}p@YTevL)nEr@kaS>HkRwFv5V;J^|Z&p|}(>U1jbfI*V z%W^SA3lBauQUhXALstf3$WrHGd=LxUxfK{}O&zoPZxhDrAs^8dixR&KQ#hb~UNpx2} z*B90LLYMyVlD=%=Sdk7ibEicH4?x-d}X; zRIZ*44sqd{%Vma@h}rMHA;wBU*>+9z*|PI|mPJ$6?QP91!+>2kGs#ZGb7iu7Pa%iQ zypM^*Hqsm|@nHM~`Q!%Ts<54ZYh#u(ucaaJZUVj4?~;Y^1E_bZz=RZj<`$+pnWuM- zZtV~+hQ_OPA>QqrIvg0`3G!HOYZF0XhC~oz;hMq|B2UX2RNpq!tz@`!kDj67e&5RC zEhEAjHGyoPh`BqCY1Y@S5Hz~OdG_ar%mft6l5;!lJS0}U;x~>k5$^q48SWt(05Eas zdSUllvtyA7e%v;F{2M1lAeTRd;V-ivnMzTOUv;pib+#{t&BW}eE^VY$L$ zDe3@zGWC;!9;(Kk}|FZtee;57%{{{UQHjY2?KNBPCzxn@P zVgD2LU$A~#gZ{710tx~W4E)CyzF#SR5O4@cIH=#Y{7UgdBLAwvCn04P0zzRZsQ6T) zp_7qQunQ~d8yMO@#Bi%+n$xXg69#PS;8cB))@fJMM|A0lc$a$~(uWr6m_ty*NMqxE4hicT=Vyv1za z`62@jNRWxy{tig**i13v1OTj)K!>$}!1NB_JRF&<}La6RFOw_lQn@)bqk>HF5AC#1yP?f|y8 zYS0yI+ckp+)PRNiu29~T!p z)9eK71QgRixwxXx6~${lE*{ zKf*0Y5KBbC__Q@#Q&H27O>Atg`Du;x45t>_lhNcJs`bbL&2D%0-N_h;_#4(TTc;TN zWvM>+D_-x|;3^)XB-S>{q46_OK2VV`?DziMDcdLju)t3RG_AGUamcLac-$o6=4SXT zDbSVjoEl`h-l{9}L{t*tE`+n<+_z?c;f6S_u()^T+*=7CCv>G`5g*|RMcs4;*x3^c zMm>S5`-+ocu_yW>>9B^zHH?Gui^7UO8t7p9RKZFL!6qLEw@tp^Tc?nJ(6{}U{lAg1 z{y(q$@|*o9{-2qN?eF5hEKL9Q|Nj#EpXmQ_f0KFntFwTFfchEA{Tb!u{G|W}4gdp% zf&XpepA^7Qh*3$HpoGxSF-V0K6oJ(g%q;B6`VPKPnUx*qzr6q7tAPF9uaN%=@PdK= z%{4MJAqcA81IL$UAaPxtiA0 zqIlF|Lcz@B>M|=@(WaH=ockuo0BWk7%gV8wFKjxRhh!xgZxvvRgAD0l*FO)NPb_^0 zl+vcp8$G|9K=NF%bD!z0x)7C7gU5fLAJ=ki5V(N0Hh@%l2=iGx0E%G@_;!>;O$r;-c_t})wywrqwg z*#LNv(T8=gX#Q5h@)ad*V&60^s}?0CW3w#v?0v-*h z6k3%*T2qfl6}?1&IW+*yo`q%9sYgYio(Wes!rQIKNX|3I>8bt%Tv0X|vg{FYa;hLP zHwf5I{qB4b?kIM$mCagIdnL&8^c-ojzN(VX&rp*p@`>Nb5JV%Mrf(j7)8c2yqIx^x zU6h#&`Upr~Oq7~kyp$u>bAH_3`Bs^H?jPNnf<-6xyU1>A9UtQSsO1R$6RV48Sid8hj8FAD>znVH`%+ zG(0T?TytwzW-$Pj7bIPHrG3T`x_c0AEV3Bex-Xwz7#UovrQ}l%gb=OCAx@dr0ueYr zTRO7WpL8g4kSpv=x!d4b9wom&hVX@6D*O(>bFA}?4^Gyd#lcGB)MAMFVh2+Z&$JUH zLpP=%g`>RrJi8vEeu-6b0(GPr5kGKe*pq8yofR#}G9=>!0+6$Xj^A#*8MPygq(%j( zM;JXa1tk`yxMP3j`&3c+=wcAofXq0T_#Hq(HzW8Am96j{z({V_MAB-3r44GCfgH*Z zHU_%9)Gu>fyJJJvXwDj{(HKGarN`OiJ3w>VqfV}wfb7~f2Q4j_gP~}1*yAx&)yYpw zQ`YmrDBX$I#3D3c8Ma$_04ybim6!BH|L{EKMV^>!NH0r?oYeojy^7Y!Rwc;kk+beZy}rfcC_1n1eW303MQI zFy8?t5TnMbCF-(wV42&tk;=XEnv?LIWVpFF`7_@Eh_nDd#w6xtMCXKBe=R=nN%Nw` z?y#gJZg#&R>s8}%pNoC3uSpXf_u=}IlC06txvA(4$pj@#hjTeW4|GV-Zzx+H08{2<4 z|A&$3r~U^kGczMA6Y~%7`{Dmtng6Z-`7g1*_Wz&&fYFbCfbYiu4h{|h4haDP2?P1#|C=9O2J{;^SlBnPuy9Cl zzYGZu0TBri0S*-v4Gk3)4;L2~kMPe1@}qNshl9sLLc+p9M@GjX{Aca2R6vpc(miDV zIP9NgK!0_XkiV&Zfc(9D=MVS(;|!qwQW^yHo3H)WBS2{LJBCrs0n7sbA6x8jtvswXjC-x zN<}+Tk-zORZlnO8h@e6L(F-VcBX`eKSS#s9`-t#Uo~>hPfn&E%*Mf5_-YnrNF$iqa zebGFyU8aqPoD*-=(C71vhUCLHL3%HmI=qM}VEBL_BITELmzzm>uMhI5I*qgZ$)`|N zw0P4@%k7`)nr5tsfwx+_0kwU1l7jEY!9f6mNWZ^;l#lIIs>6wn>d|u6SJr%NG~$)B zwGg*RaRG3}LZvfnr5EsNHO1q3M1Nq{($&}~h~CKdC(soC>b{8Jb3p8}m{x5=dwzE+ z5a;fK-3y<*{8p0vBYFu#rPWRU9@`Fu0D~`Y<((RO+U%7xQv%5bep-vC@kL#bXlrh1 zHLF%XqLXrN0>I{Kx|-$ zX>FXn*M87lpo8dj{h8&+{N}Rh)q3d6o&ja)sBiYeNuF4#Gor$yBoL!G(B#(D)+B~n zAb+2O42B*&N1_d7fJCYgog!i_ zUMcv2?W1e3{|Odu&0nq;R4R9QeDm7N`_D$2QoHLFfg=O_EFF_Ih^*<-Y|zQen`+5L zd$X!t=_9@emy5>GGpQJ(lT(<6@Toa60i0j4(PYrzOwm9*W_R{*24(BXYm+6>q9qGA z<;=&en>C^?1b?)Jk(0R6o19r^g`myXJ9}*^;i{Pht>{=CvI^qt;1l=(=Sk~4 zIb(aW@TEIMxE2%CqLpWZ6p)b%wJ@j_9<^DA<-_6mu#q!@)ZLtHagiF1O}X3v#V%L7 zSzm9oCCQwrZHQ$r(KZ9?3w*N!FO?JHy7l^SaitE&vbmt+l9RBUXMYgZVD;Rvs_xqX z+#dDY$lXYHA!yjhUsnO6oFTiWChbses6K46E$s+L+bahu@e!$SO?&U^&WopcC~8;2 zeZXPTbB|XAs7u@WI%KNgB17ujiD3cW^VGl2TP$v6Af96EObq(e=}^YlvmM zEGkc_Aro{hMrD_3X1NT^q+~|94f?U!W4OUcqgKs>a;imFMyG%;fXw9TI!vgFXB9r$oPU_ZWMyZdQu@6uTUX?h zZq$JJu6>;)&2n@^0-U6R4H#_>uA%M8vXk%>lO_H0fd(sDG#5y*v@S2iG^vC()R*d6 zdzR2r?g`dgw&!Gw%~?u8?G4jkPq(&0LJOY!JguD-}o0U&jn^f|9m?&~ABWlzt(=kboh;O{>?c!gAmME_uaAClz zm{?uN4a1}FSnX$Yn4QCUd(;d!QZ)*_cvt&Yj*kzin&J067q#NM?5&32c7k5hZi!yd z3k~}MB*ttn#&u{0w5iUuWy4J-7 zbh!z<#=g4tRAMD528>@*2-tCHX`MQ3kg`ckPfi&4ry|T~_b^Yn1R7nhWRj_^#UvXD zyR3K$YIXI!m5qg$mM6_;56)l{2RJI_(Mn)`HnY+yjGBORhFwqC{$-%DRzHZn2=63bw zL`#pVCSJ1G=e$`&o6q8Cwz_V|nk6>Yb<$lARiHXj>|?aztCCW2g%Eqgw|K&uWO9 z$z^IMOUrR?YYlCa^P{PDFN$d!-x#EsXht4FqRiwa{_MwpzCbist^4tc;2NTEO$tbW zDJ`4t;nF;2XBR zMRb<*%Sc4-FyZiclC!%mx;^*~Sf$spc`3Tn`W%*AmT5UWqa*5zc?eoNF6~a$7V#vl z7xF+zPJ7Uq>JD%H<4I_u+WOKwc4Cp8b%pJ5#}(*9da1jy4@rFGKjM-%6n5n7tdy{H zLSJ($e-Q0u*rwR9l)5*mtyn?!hhDJ}&TUQ32nf8UwOrcuGQi~uP#Lz-wOtjj{qP+y z6L9z73~qh{>G>vqh~qINt}9h3JBeU1j{lLoRreroJ%V@SJD@7Loav3=z*Z8CHP-CG z?Ce~(17MC3$Xe{7{p7K#h#g|RJlFYLB%g|%wWOoBq(P%)jAy&Rj*lv2zY(FnekfrI zMbI~1o^JBY@wIBn_bKwqZ~#+4tiNVK$$&$N;#^w@h-&OBHiX(xC&tN@zfJ19w+DqO zRxtD?1V#AA8Bj;7Z&?=-V6CbE0iHC++@KjU9>w%(rIk+44DOMuK$|u@)FxdGXZ!W$A*Kwm z$s*h(mipTKw0rQWx0c04J3%@G_1Qt$WVnfDTB@#35XOop)BI9F)B8~hYU?lgM}{RF zc$~09*cPd>-wyqtI9u;^`h;kAmYU?Y0Sxa+)na_LEF>8!en{I1$4(EB9#iQd$F2kf7$LQ(cPvVfFd zs;kn94ZeNoE3j{)0AGPWDp^ZTH|((xH)4?3+8-|uPfZBN*tjn17{33SzNM#fsv{km z8b&RnxT4Le)a)lqYrw9LN0N{c94B&~+ZN_=oJXH_8o2z!>zB}}A{mRHr#4E1#BdqS z-PTqPZd^sK6@tXB`IW>+7265p%Mxie1V6WZ5L6@VbW-IokFf9ULzb#rSf84q2}HYq ze6I(G8&5d6$`BFefi$?v_e`N8{nly=t6i9)WH@4D&#QNZ>Fg;#-_hCskJ>-M|Nre7K>r#4Gyl^6_>KRWI5>XsKg+-KzyA{ZU&#MO z{}KO#K>uU@hk*Pu|3gB+!2Bi+`ZxTK3atrjj)Mc**6+hqAe7~nDY zKXlO`aLcI%2feFN=WDx}o>QFMv(wz0f*ZFw8&GV4XGov?bzJ{846vXf`6wtz?=fS^ zMVPmRAN`3y4*A=~NlwNKAcLaWzQmJb8PQ0UtH7|)8^p@7Xi<3UR%D4E-tL`nWE#B5%4u30ot#O-uR;Dc=1WogdEXTO=rd1ra!IoL zP;^F9RdsVjSCcQ#msc3|xp4kK(8y*g?w*<#p`3m%@9gF`jD6m+R{mX$+8SOkP^XBU z{Ig}VF~e>{Z}+ye$Rp|n%#^RsJ;AvWy>cDgHc5^Gt>KgQAYBw=?gcL`Bxm>WSEMTL zRNPM$#!4;t3FG&6P8UsADmEIzz>O+Hh=8R^^<2iwu3G)X5gC)(V#%-*W0>RZN-7Gm() zJNY{3PTQZ%R@#M+H^KAe&(VPt9dbMccol^dFbnH9qmegadxZ965ld4o%qJ~6Ws9$m^~34XaJd1OJEh>S)O9hE`30E38wMYZ z=5ELQ+y}MV_$A*}E_^w=Bb{>81&t+K$s08ANos?5_94_IG8=TmMUf<-6L2D$-!6w{ zOH=sdqbY0sF$vR=k-#E?aI?#LOs334&R>gzrf%^@_3h_y$ z>|`&rZ24!TKnuBO#3A9s_WT(pJh&ViKY6v6&JAB}h#>!XX(02gMlUAWi{gFjHjk}q z7BWTuA);K4lbpWs$F@GkqlS*Z4OJU8Zz!fP0eU7Tyq`QmP=r>7}t1O<_>7I@PH zFeB1Qqf+DRR7;rUcmu*L#BbMm*|FB}|{R!uGP;=<9mQ@#Vb ze9G|r9o@vq3ybG8rixagBl3oav!Ups8u#<2mYYqmqpL?2Lu_!=_v%R`w!z~uTD)*m zg;(fbcdpV|?BC!NN5&Nb6SytQBNfa^5mp`u%Ly=uEkz8LFCfdo)NZZ$_g+ zakRSq$5Zc@w5d8ot0s~}mgE$t;)`tZ0<@{FdSW)!OW)nbbVk4w7OD)YIFjw)%P-Y0 zIaAt9Ta`cai*<@MQ@#;zWVPm&UY;1OouYJMTNk2TdQeNLCC_U(_a9jl57=Fb#~wm`<~tU8q*d&TaQZET;C}UPi3l1o{jo5r-w~>y;`j|rDgq+HyNASu z+Z+IH=`gF8yhpa;1{^1MpZ&bAexn9a9o${M71!&halw>Q4nN$}aeleQR zPKM9$70tXhP=;;+9<3GPdKG^OQnCWoOGhoMv! zQTeuoPk$&Yo!`Y%$G~{kSZqOiz)QKvnhss_b$jO9MA`TpqWP0(sbit0-wst@IQ8b7 zWWTMWh5n3Fz22jHT8mX^%*dB^`xC&W+eFC z_TR{gCWqL`vgzzFGobKZ@Ir;3^4>Rj(SCcVJBrVmY4aywn0w8;jq{*SHBeL8o9J*^ zd4I%l$i7)YrMWBgH=Pp3MqT}yT6-VgArs9HLBCiZu9dsLG%&G5y_}bfa`)kEkSEYKeoYPw&4b>}`enF7gnsLmVR|siaMQvDL#>?F((<<70t^sscLMIE z6HC)ePNy_Ik19Bf$st9IPUTwcWy)`~tJ|ZE)g5FY=9)1oI~I*u;kV{r$UT<6KIkdw z*F$WI%%p3c7EaU`hE{(|Us_&T?p`R}F&b|VF$(J#;m@MMOi3Zfl%!$N=T5*N`k6aO zBoC%Ij5;xNRp|!NGmpc#geXt1{0^wZJgR?I^+LPl@1zOdY^;xsLMw?3Cu94TKLn~Km`r4XFxU2>}Y*k5vlE$xJ< zE8B_ihMzXkRcyuaf!CI2u58vP3!?pbRTkKr3vTPmeqlzITH)GS)6z9H20Sytai1CQv_R>c3K*K z9`%kN52hOiH56lK=vTV@c^ckr))^Wg4^lf~U9il16xw9#;Zlc~bY*P-YGz=QK8k+Tw zhReK?R>t$sRnH^1$*b6Ke%@wbAA=)S2Y?T8x7V|om%U8O(ZmBS3oMJNNC&fv@jS`e zHlup)L=s&+&hXd6iAT&pDH@z>KNSy4ZvKZUuD^fz_rf3lLi?}r|DO~VrVRq5q)W`OAJQ7=i$U zhK2zDRr>R*U53_s&>GX`hCs%YMiZeiu{R`mG#UUd9|g3JDu8~y~9+QR{@xn_IhE; zFJvz>?48L%glCRopU1lB5SOl+ZlM@kPwldqMpb*>#%|XD@tR4hL}~Q5 z3MO=c@e5T8#$BB#&^OAvOU0)-sEhEBt6#>)S>M0YuL#SN&GaO_({996P`zPaAZ=Lm zzFN&N+`I_#Tc8EX4d~tJX^^EewrvPT?KfLDe?1(s0@cy>jsLdRt;UMDB{YWEOx*Lz zJzJaKyhavfJyL_h?M;ZHnb$~7qb0u;c&}J7-{_gw+~;o+c;QT@>#Kk@3_N24VIcb? z9A79U)Ou$NPPirbJgI{}3Ddc?Ti9qR9fO^aF2cOc8q2wfQtJm^N&^-$C<769LO06r zCcGm(Qc7K4hv z8q>3#!LWOEk(Dhv2fmx1Q^*iU}1Jla|<&8FnQBySzVZI-81PwaxT20!{Yp>^_UY?&3| z6l5$%3H(>mxa{Mq9`8ea#!QLBsAb;`#+(|fZXnu|*qwRCZ`M7+4?An$uqXA`1|2#< zxXf_6Xbp)I2N@|)RUT3$0FiTfauah{{vQ!7F=hEwNMzNG4xM=m# z?K)M#4UwZ3B7mSbEA8<^uz@YcL#Cfav(rebnH zLeU*`)}~Xg2t+N~7g6fkM(iMm_(W>#fg#Vmowy!G`{QhDE-}sP#!{^`w*`-sQY4 zqY6Z<6lOdr3=Ix?gbQ4G;i!Fy44X_-P2tFloB|yh$n^*rs6}uNNhwFjhS^lHc(9_- z!_7?>|4v0AiAuggWBBaHFfcvIEgxeIj;Bj9YHe86Nr+>)TruCCAMON(5Yd~);NaV1$937~?DRu%*$M^uu7$6XiYTCqUtC|- z>D)^o(#t-dCeO`>Nf&&m3=3j|C$`W?dp5xd-6eyF#z9}>(7~^Ac;j(_q;pg>I`_`Y zXlrNkg7+@e_>9x?_g3_w(bJdgK=61C(C+|g^9&aQE%?n%A}8jMM=2pzT!$ZiBN#cHRyzY-2i{|t5-3^1;?CE`Tlj2%GvuFV(pL=xZQqE8sRahN`|eE@1>o=h6BmS zomTqBd@;RuS#hejxhDAww#kR}EyfocMdh0O;vjVt6u(rQSV`+S*a$7yQ4xG~ogbL* zp9Ds0B|wkJu7w{6k~I^eT23g>3j1?_RQN0NP^N$wBLC=Cm}VQ}=+d z#)Kf_k4oz^Ivm7Q?wAPAz(Sv(wTrgwhuqa2S+0&`V_~%1O5Qz=nv9x`qNGr5r;eyE^TErSn)ocfUX6Of{Ve--~UP`{}V$ zi-vDHlefw>9){*7nhJfDnBVT8zFX(^d>?-r0ur%p2tGkqQ_G5HI$K{zd0-cJuzm0i zoc`u3-GXeSA2_L*Vyq=fvUMw{9YK9a^5LvVAp)_Xl$mOh-*hseqEg##oaRc~_0ep7 z5q;a|jH|D7V$N8%EN{^pBlR$V2@rjWf@e~J1_2X-DKX=%X1RII0(nhw{Z^&g<~_p- z>-+{~=rwzh!1@>`h% z=ej%->e0atePc@96!L3j75P=Z10JW6g$zUrWFCf7J5;H7P1&hcZmpN9Iu85}2>iPj ztiGY>V&FYMg*jc~+WI1b&*VaGC#bHLX{`Yk`i=nEYP23&A3?Q4ucu?4(O z*piC9QkZgYs9XM$lcA2fO0rbIj&lJ~25NaGOIfP6>fbL>pV6cCIBw+j9ZigSJ)-z)YIPg^D*? z#t=n6N12G2#9fZY){Kj@&V>?^0vc#AHi$pGYJ?(6B&e8Z24Eh5IGo}9YuxaUN2$LC z_7Q<&DNQjK7_BXXP>#P3zPkxWb=dDi+E(#@AAEoQzc`@rPvrkO*yx!U8ULI5pZ~}F zKO@Uu^8f72zw-Ya?EmKfe}(-oqPDj`=P34*>}Q{@3&WiJ8EK6rxZd z&Vdso!l?Qi%+Y8*9g2{dmFRzn5XAn6ld`~B6dgnIaoohayp#Oz-p?Ot$sYxQ1+F;z z{b}<5l}g5zH~r77Kkn~Y|GQ70G#`q_?F8a~X8rNUe#`nl`3TB5?5RK66cF^6*vt3X zz4$I3B`peX-Tlh?|7Vl`O?a#D^FRHZ{O<(dh=t-bx#?{_44baIKOpNkK-&D)i$a!~ zZL*6IwMjq^73n6S-Ri9zkUn%H=NvRXas9B`cM$L$0D8)kw`hSfYrj}`xK(>cCgtgo zPIO0;S6*yxlG3QUzj5`0Z3AVdO2o-WE5acIV5w`&g|Bt?ZUdHg(iuxXL+WG{sYiE9@0T-g!MJLFva;k6+inX{EeDE$cA}1X7P9iQJq`!NyGCG%E=#;|8^%>bf(7tV!Gd8ibqMVjTmB_=XXYS~dv_8*Yhue8Le#ugo_8{*KQQKkJ#LF2Rp1ooIz+3M-N zGiE<#x{TKBq#foeteMO=IM}bPFYV}D%Ccb*QOT+0DwI(v4Oqp;%*zU8G(6eo6u}}q zQMzMj(cZgb#*3eoj{wt3IH-$nF^ssqPdd5z;v!p)(>J7NK7enXx5||44HfZ3Oiv&3 zRf^jAgSe$-?ds>RYo^C3^%(TLR~x51$1bbhZw<9&IO^k`F%3mtd|5o|)o9nMx9!rd^X~CRF$OQ!$N_=fQPHB}l{du_wx==8u{1VXGmGtAF2% zhQj;o!U6QoUhjuXdeB0KBE97co+ekNm%=xvR&_VGT25Hyt;=$vGht`g6XChy>t-Ka zS0ROaHs+%0cjEjedcN5pK*c?at@fDi^GVJvBzH}1tlM(;`YWwO9Bn$ZMNik^B+IIs z(8*ojRYF~==0@Nzkn+d#V#Ha|ep~k!}~y=&CKzT3@U_zoE6 zWXirk?fCJ$nNKbL_PlATdHsCede?9Rdp3X)O**o=US8|>%cYGX)}9Th8etz@H@7ZSTz5yG z?L=Y8eE&B6_-1w-+bHt^axPtXz#4DZe_#TM_O8a!9(VoJF}p2?M*U>Q%%`!}mG*Z0UpS#xBht(&$!a>ed{gj}ZoV z@V=2vE?#UXd`s8H1teFHL7NC7b~g%Jqn#J=xj|~E3JJ+pHc@1jQ9*x;__M}blq77;9B-LZF%|qg|kn~dguIp%h9J6VfX+XBBbBB!Vli&4BmmHBW&2#(5rc8tk3n)8fq|DkAud6bpf6h3@WNY3!4LHvHOr=?@S z*2fMFLwftdd3^a#R~Fv^wCWAp4oTh$t6P$bxU{(Jt9TPl%TueFJizqnm@{(hK`w5b z#OL-KU9cC((g3H3*kwuEPN&;D%45ywgC^(w2ry%d@^bBluPoOBW!lTxT&Cw7{5*w8 zh;10?n+I;j`$0#Cm}{k9qaC116<_lVFyXH`=D^(>G1T`<=rRdwu~y5DM(s9-fjj9% z_DwNHbb$O3^5Ij0(kRZ7!D$RhtkePCB?gflX&s#Vh4)$lh@_{4x@;wM8qhzJ{?mVz z^uLQ-^97@BQ>@a?PF57gm&wp<2!4DP{8XBzWEaZzF+VKdQM9Bh>ME*G@unW_q2O zqXZ0P-nzpFXv@VzZ^Zh`UEm$A&xL4aMU@}_G(p+b%}@w)#$~e&HQ3vtv-0exk#Ht- z@t0`1a}9k1Uv<;k$FVHwhC+ySjQjeJ-S?_L_o0Wq6w3 zRF$y*U3u_7$NmZaw{bGIv$WASGX7_E;QllIXJTgk3;#3z|G&ci7xI7J z-}68CPeA{T|3M)BCT9=vYu^6v{0|NV2@du*^Z$QN1Ar1z0Fp4HLhJiPRSKhJDw0l3 z*rA_y7(}xe+INxts{aQA0fTx2_SbX&!I_9rAbzg=;S&XU{&OV}5@umVRJ3SPbOSrz zO%c}raufhEv5>20D2(rS2>{FAB>)b7NdW8;gXHSC6^#Si1J>}PQ{c~-zIB|I>H!4%WZ< zal@;JV^uI@`-H(!`eQ5XKDt1&LwM5z`|xj&m!Eb@?#c}bUAE%XM$T9f)yH}D`&OU|sdZ5j3ujBiYf zDzMjJ(u>Y<{#1DrCvq#6=G_U-AicVTs}IEy;b7~ql8+KNvkfi zk`(Q(_3W)HgMD4Ja|v0rBn?R{4H7s6v)BNsgALw$+iaghn#vg2fG9I1$tm-=Un0a~J9K{|w zt9Z&fiB+1unn2dilhA_7zYU^mT^;drbM6$q^M6k97of$__L4v#o#H@jAJR2`i-a6NjhMl-okJ8&Kxm=S`2d7%%h7E%hlX)MK+BHz%>27}+KQ z2`XlNE@_%4cVf<%XjL)#7wZykvk>G&4Oei}!3CpgY7j8pL(Ej{TJ5-5;O;-7za-F$ z@iER#k2C~f9CIF9d1-fTlm&DjgT z+q!NKsZJkRbSS5Ft@NLBxr1K1buCu?>>h4kB)GEs&a2?4y2P3fJ(9Doz(zuz2paky z&*z`#mdBeKCX`={kRJdBPa@&cNq^3YJ~^={qcHSG3@!~S!zXxax?DMWtbf6c`}Hg4 zr4GI5&``R_C?mVGQCq2;9quNF#$D|nN9AU?38@PdHM;hAE^Wq`| z&IDIXcDq$5_z}qAc|KQcG=1#WeJF3Db1UQe!4!B}uLT$j+lJEE+6;KBxHa%e3%j?J zgk*|lhbzO-krC(ud~NE;DFz1tV1{8NhSv@{MIZevMG)wSX`wVZUBP3bn)59y2g+Q+TwOl~BC?8%sU z`Kekm#9cp4tCi4du`Gp1g-ur#=>B~4N#68zyjj3>l7z>nl!M;Kmnt0Zw2XkY8G5YM-4NX8sW%q`M1ce?)a@LKYcPJ zvmHdl6xuK&xS0?;G-JQv<-diPUrBA~Ra}md4Qjb#-ow_pU{G+q zEScm(?6{2umM!ntt(@u|8{4BM+H9kr_AQ$puiY0swB}ocz|S*8!&c1yE&Jck*4AzS zl%vgN-Bh#+E%mYX3w3fVj*UyVprdMH4q{ybFEmQFrIr@*nJ{}e=|lS`&11HsXWZ39 z*oP4rtEVpe6!+bS8u=e5ah*3$@0SU0N1Fq)2!krNwU-!V5`qEmfE*}7VI zsIxs(tyLKQ*xK86nXQ}eY~@~DQ1k14{dE^7)whtG{AsF+!a3JjN&G@hROM^=%5sFH zZ?u&8*HFXj73`}d4%?Y-uyga(z*kqtCj=4dx4S1wdUZ#0%>pWjc6<4hmx*ugEa>Sm zQ={R*C?h@;=UG62S4I>r6G3sf?k}||?$ol0x!z(}4OAhN!V+CCPV0)C_F)=RBw-NbT}a3-crgz7$>`EWEXX`>Z|3%9X>F4}{D#XPwQL zhUt~6bku>G5nlgsFF=T3V}wqm&|;&f^M@m@5WlFb7^l189ko2-O*MR;SIE=B?%5wJ z^6&U@!YEcJS>A4D3#i;)`5vH+r07ForbSBeGguy;$)%P$yZsyD$SpV1rOoP>Y25{l zqZR^T^L_49(WyN-Bu8ugtrQk8L-gW^^fwrFZ8b5EVcm@0l2vdNazr{JWK;17=QgpO zxUU4HP5x4zUrw#<2wb0Q&jz29UUw`G^Hta#@eQhx14@e?3^QvL91>IBE3P2RwT4$L zTh7zc8J9V7gB2kWn8aS^``a%+Q+S>BHj6Nj8uzZ2QQ+E(ilf~yFShbnSHwgpWtQu> z8O>e9+-e4lIz_;wj3M*5nGQ5zP)1li7pw*14u>b0JSJa9Qe1D1M7|yfu^NW3*>h zQTX%s{h))(Eem*GO-)W=29NrMW*hI%u%);6iBocr#m3sck?me!!y` z4@O}(P<~)x7}vEa;w1qia~&7Gfu|XbbZ7-S)2&uN3=JEY(-OJJ#wt=Zv(^-bDJEk& zn0z3@u!d0h;keG_JD^r`J)Jn7OU*DRr&+_+O??bRs92DopX_DFW+8C0Iqb{D``p~6 z^fKMayhrts#&6Qa`=inHIlz1Dr7O8=#9U{n9=o)9Yp+Ik$y=}3%4Lzqw7jM!lj(VV zOR`(cHb*-@)h~06aZcW7xeRp+ZDz6(c1JSO_#1x7t6!|Nm_T*#Ct8+1OYZ|DylL@|*rU^S}B3Ut<3Y`9JypnE(Gn5da7% zI2a_vpQ-?UoCm}o@c*~;|8LoUMKtJ4VLMV5bc1M-&t&JmS)EET$RI!S|35CopG9Ip zetz}m7loowAd+YNKi(C;TsEwd2W#BqB;aF>C6uS4 zX!=>|KmB{DzgLHqH|c=YVv<&O=V zA}U@jMF7XF?UybCw03IhE0&hNt*RRs$=s`tPaMA4Tb$zEQ=?88I4Rw;A-iB!^>}M) zdxKWG+mbI#PB?gdCAF=2b^%e6?@+fEFa9KM|4QpbXg?Cs*TnDPttPcw!+8EUR=`J} zM$zPK!kTHTU-vbA2oGy(cweV8PJcsXzfO1S{WF(V{z5r{di~5qlYshq?VpPHWsjq{ zebsXauI*}22RCld(BJHH*PBBBZd}zRjZdXk(-JktIk^q*NgFQ_^yeSG5fJmMKeSMs z1MLP{mmfKISNRE5nDy$|B&{-PyXSi>tZ)tKKUiRKFlF27O5J_k;4a{sYr(`cii(;&#!6Azbl|K&Ue_2c z{((W8v@KNmO7NxfJq|}3%}K_6p!w~SO!vn=jQg2u;8GKtyS-P=qq;F2M*_Vm<&{iL zN?zIro%-RLvXxElsmbT!#UU#p8@%v*yQ8!@vtNRK55X{hWcfvCAw^KopGTIUu&62L zNO`c-d!Q%hAI8Anjh8to{PeWkYj=FLys~UBO}r_c7xNI}d$oGwy&`pQZ@esr<@c(A zPZsW8AKmhjuQ3y^Tp;-A)2Gi$QRDY1x3X`J_Cxbl0{9iB)i*|dPuH*2t{CTjtVt#D z&@pp=X9nNR{Z>X4>qFntxNQK_cYuoZbIj=Nm2CA)>Cp9()GAZouPnWv3&XE0y;Q5S z#zAjg;^W18-HAbkAzXOpj9rdJ4odo-5INp^_wXkIj`X4VIaHaG9dC&1+q5e!IctfN zv^K)*QVwL^)vd|X;*Hvw&x^g!@z&FbX}v8oUDe&8Ntog~DMIt^w6}{&KOWS7T!Q~N z&m(UiUVBtmF;l&~am^MRf1mZ6aNlKRXF%>tzvjlmnXA}NAN%IlEv?bu#RRPlz9|P4|#xZRgay;A-wKvPISXX2Z304O3<3%ouMGTEg0nODMt_z+7y3%Qx9?-?pCM z9?VVFUq7*~4{R{RPin?@DVhBg?E4NNxFvd(ny%bxCNmlA^POzP)w2BbIpuMxz@|2> zDMCbDYQJLMmwd2)tep+S`8$Ady*J`Z+8c^HM=an-iwA#^QM;x2@)qNL3j;r`%Lhwf zg)^}Y!K6zXSvhs|70a3zdpveJwhl+Bz<5N0KPIBu4(uJ>;QsPqWlD;cW^j?Ffh&nJ zO~wybWyh6@XKlgGwY0J%N7AAtv7V|rgG59`R1dU)A8Dz(;z+|z+TZ>y$1XKfGizX& zLP7aXEf-(4X`Fq*lgBx@c}PphW$)XO{-cpfv}(q&GpRNo?eY{*qeSx~X%nFoJ&yU! z2<;8X)bPuarQT1Wz6PeqZ7dRt)FxlC#*46ap5-33OLYU!N5 zXL&LSl!G{kHviUPo~pzjINi$H+T?v&7h2C*Jn9UEE3VVIkiA~J5!e)j*c_ZQH0Y+05ldc-VQ%#vj>Tg=SNOcq+q%oZ~$v;&4R9YKvOF=9bd@-cpHeLAu76nw0KkZb%Y~xg}6Y0)lbU$5m#QnM0VPvwN1IpVj%U z69ed`JITAVTa40`p+d(rxf>c{FMU0q9lwl3_k93pXtLd>6WqEpU|=*}aRwZqZ*_VL z^N&2)neIg_Bl6S}h3a)A?U_qxVi|%%G;+vqs^_u8Q^5?w>c5tn3U;i`In0DhEar{}J*AZdP0Z*L!ZL33H$ z%KX_O{_JqrotcAcx4-vxKecJ;?xeto^#L&S7c~DWvITitIu%ID+p<7=Y^3YFA>d&x zQW|X^UO~2}{=~l)e>i|I`KHk1Kr*NbB;zWPyvn)q#YT$|S3i#5-ha?Du70XAJg%>H zYuBUaq`%%j_$c-MWN1)a#24jBjKR6NA=DN+>ubItQJPut=S zqN10rM5Nx4reY;okfbsJ%k=M9_LP4Y%O0NnM=ZOI8ITrI#^=9p|L?)T|7-Zq-0Hg( zjkV?fPVx`H-^>3&$3(~cTmPMjg^vC!9Rt(v`0uYQbpOPE|1B0QD=h*CjRpN{7fwu6 z@ORp{--k^ge}O@OdYUOZ008Z5A|N0uCLr)x*4E0%#M}@7a0Z%7{H};Hgf>vxN(%84 zR_$k$-S}rVcs2SY45M#BJFEtRLWXkPs6v9EabQ}+WK9%&^Sme^q27A)U}`9F4s_pu z4Y66PGH%vA-E_3m?Ml5oPUg=_I_3^uu>s=Pp%XIRLIBZSVwl%89L#LpE!bB=ZvZ(j zxH4~YpY%4zy}4JKmlevrZH& zz#V+=z0QDpSd@8K57_<(8TuH5Q*`M8n{6~LO)uy(M>gFX;1d~Df;SA{iSGD&UQM$x z-Zj-QIHxof0w4r_xZxB74Px)9{)C9cGU)&*j_FJ1NY7h@TG`-U8WoyTGWvthxFG&1 zPHL~rH$$q`SK8KIKa^V!YDTPO1!pMkn|ee6i?klwdrdvhpZsHJuX1f!-o!k#(*sVy zxnLFV5~DJXuMuy+iLc3Y(%cd_@w+u?q!D{`I<@|Q2=Ppv9q2UvJQB)4$}M?{}cp*kGu#lz{|u6H|}F(jacVfx=C^fA+U*v0j|G^ngopB1q;gO z90WZ@U?K`6?_WniI0#(hulbpF5Fgt2%V(NiU->L5V~98eRQ`NfVnvWQU@hrz3Dhw)!((dOfuv38B&mWiSNibG^3|lzPw3@&w-G!SZO}HIU2;DuG zl+IW{keJcDD2Q6Uz&8Bu(bhy*h@Um0IP)-y`H!QO^B|hTVF_agzr(@{41E3Cf?*cM zK?2#+Z{BO(ecBzTS3)P1L^EnJ3TXs=11HfptXE&HtV+U+GSXL|YggU3h`cCl&f*Bk z5%A{SvqfZm%xag$K?92(xZ=0s%i&|zRlfypo!ex>iANj0(7&?jaYf}$&yDVd;RWpl z#uJ3!+eVM_3e6^r zRRD>&IM!VBM;_}mvpiIB#;la9q^k%?Z2VxtuF|fmEpxMn8QxKi%2LQnC~Z2K&hDd`>gUF;_<qS!sZt73B9m{*xr`wgxBf=-RUAVrj9f@f$f*yd zPrQ%250ls-|8xGCIGngloY*kh@YJx-Fz&Dd1vJGvg&Kte1%gs=30etVNuZ*eB2P(i zsejR#qM0(bN}~MtlJ6x8#XR#_ri&)#vqjTQxxq7alVJ;-IZKsbX33^~#_=X=(*gBk zb^7&@#t4Vs9H<|Zq+T_(jcTJY>-Qy!qqRSF1=FTLEB*=StgMq5s^AiotA2sa!PSb@?>IQ zK~9=Wl}aj25=lx--KhOkds(}vZ!?Buc4XWM!^ zE)TmJn}wsPop9P(+D+PvrZEj4O+Jl`R=j3&g+qmcWr1bt>hfy!dB*w6+6CQSlDQF_ z-EhyUeyvC%X&*yZ?d(l*VnSk9=^Xa`{U!J2+oH%^;K9r(jC*nignQ;=@r%Xnivy}< z{6+*|Fd8}K2}35Y2OHz+$e8YnmPG^9AxF(ewiHnJx2D_t*J-d6)w zMIL**!?CZ)Rf|;#*6z;MkHMEmb2Oz06?hu@EhJ83YxT!wGYi@}q_s4G>!XXUmafjPw%T6Zq1fi`f9cN*%ani=GZrNx5+>5#oN~TutAM-4o@Rl)tbb~L-3nL6 zMzBmna)y>B;uABARgdYDm77V;iM|#X7A>(bRXZ-M+pM!Y$~kJgU570XTf?NK*JAKm z_gm^+pN-B>s;4$HsO{Mwrk+d~q{h{VZ`?P>9dR6~SQlPK>pW{b17Cq@?A$=C$z>9u zA?5gf3(<&wZ0m0e*8Je8eo?mQzl7RaYSnmk-qYH-XLD`2i@l3}FmbMX(R`J=6-mr9 zeipvIqVi4I+8*B$-)dv+&GDraMhJ!hMg+kb-HTr|Et3PA_&lL?BOqJTO3_ zO9nrPJc%jCz z!wDre5!UsDHv{>1?RTWBk+s^4?;PW5X{9`st{rXB>q!fsOooh7OaqJvjehm8nwL$J zQ>JUnkEQFCq_h;;RINmw#hdg;w&Q!vl*uXuD~}ejXRG&95qG$e>;fDY_T|UNC-d$|{c%p2`zEN8aau#DgS4 z{Hk{=j*Sl2K$nC4sENt0wXD{Mi}Gd`_e?vlSH7RVEC>qtkI@+UoW82>)I!rw+-u9o)t~9q-aWaX&Q5yq+o^2f(1J*M@y|KUnxO06(*+SH9 zpMa>3o#GB0UVRciWVB~TV6Kb+IA$Q9L75O{hiidkg~H(hm$eX|tKho&`$qy?4>aWK zs;7W?Q50!+zS`McgaGk=Fm|c*H8&^UH#b+}78z9nXU!PO`A&$q9p!|w*dfp}A9DX3 z(@y%(dSHp@JK`Rdxsv+jib7e7s{Qi5VUU0S00C0cFaQ9AOff+|MQ5P1bgd$#0n~w1 zJv=Js{3BogQswMo{P2B(BC)yYEE1{wtm(ShSp+11EY#`!>|+667g-o7sG{o0JXPWZ z_pAUClM@waQ{;FQJ&pK=sBh=-``umb{MVnl-`il&W|nHdPpo~<+?i5);M*U~P-8gZ zIq5VSOYw+k)M|A+v%CKexf{}TV5hWt%M4mU_zmCEA@BT%)i5^DD0q!<7i84k zb?UV+p!P=@;#XjU_SXXU2+&9KZ(V5XpFV-oe*rjttnbL+Jr8RIl1jSWgznI0Iczq1db@Qn?5PGZeK!!E#$zi;{@Jv{&zFrMEaY}VE9&lIoa~lP9 zl}iHjGQ6zZ?tOJSWi=O$IJ`_i$$rM@j*TG#BUZG%3{w1jXe{soiOi^x{_xnDAl>Iy ztb3Ppl1je|Ozfw5^9=c9W;a4;t&!LX7lO|7@)(QX?jow9H|m7fbkKKjr(bXF#|xSURTn96jq-!_fE#rtvuVG2MI_Skq}&`5 z64+t`==r|g{i(OO6a>V{@=@G4$ji_~v`q#+Z);g8Ig*n+?$F6U_*ycY;(@9Yd;4+ueIXY z`?48~qp_sg2Fhc;m8XHG;DAuZ9GeRE;~DgG7{O^X``09lkS0>UIQ`PZ&B|3WB*cwQ zuaBu*kw_f2oHI8!H@2IxBs%?}7-GXl9$#PI>8snLndN9;5#eWBt38KZ;b4OCG&Z~U zSC?k>811@)tRdcts9X9OUMf4@Q-2urx}Dvj*n^48PQ5;8E3D;jFZXA0nCYk7{GKeg zPJ6?s6l)SJmfM1SBttg5tqQz^mQad8FN2gLs#(XyM`BSXSrHWc==~1$q9!}x+^dmH zI{url%bgeTbTIg$E{&sOwgpKYiJOHmK2?q7?r!;@hnjb$BO6C$#j9naJ!e6*5( z-FVV_0<}i3=IXurJ^QrhPJj4woobi%!}*#9Q(NTbA$U+o)ldH9Qzk=aW*B z*2~_9w|+Uy7&g-~;)Tt%+AU1tK3fCjiAH^zp^tDOJ$m=3T=%-KM69RNtM-HiI{=;B z9K^ajcqWkf832dfdm|?!q8t&yD?>X9S!*3G_Ixc0jRE9UH!xppV2>z-j`0)8Rlkpi z|68>uC_Nm>1b+M}gKUJzt1cY`0v?sT1TjN}B! zRo{Smf^`PyqfYzqD4@Zw2SohJG@Ip5I5a=M0|ObiS*$SMZ5#i{4xO3-Jjh_9jjYWC zZ73=@17i*|N-Y#o>jYu4o@s$F zd~y>Kv;f2xCS`r+mDefD3+)AATx@YTDUeF#^qr5;=Ca?OD2?kcV?mChPoVJc^-}X> z4&UZH8dsH++1(@=0S&p!9f7O!+$TvmQ}2|-uvUagHl-W4VN%*qEU*&yxB>k`;KW{J8>o zX#szXp0DoQEbI>-ePh{-By?NkS0a}$PF=7E8F_0{gtQ?oW3%VMUW*oMBHi>?!LG)@ z0pC(x<6AC~Ko^jaPW=tcztEtSLf@ZR8!j=fS}2TzcLxU-bc^(qo0~&?Cj0p1a*0IX z2f~nULbX_@r#)UPY`g(=;LIFIv^;dY+p56__PY}#^`F1+1cg|kvnQa;T6~*NL!m_Q zI@Y=r>n`ev^{RC@fN0uMFf0t=En$Fd`RFIz=z{+ofpgP$t58wI*qs@JJ{?N1?4 zx{^`T8?imI1z5s%)P0p*5--A^EAK&0x{kK+^Y)VsEMmb+&J&$su0l8Amm{W-p$rVt z$QZVA;(O?NF7@N)`9-(HD{VGxdgbHbffUa=N6kYRVfUJ3vJfqp{lQ%Y0 zz2_-jzb)%k8R+~PJ!nz*hc(AMC#W4_f-O1;l;?P*(`a)fGO%ATegvCXtC}khPaxTkW2C!sktakoYKA&%cPzvMPnGCDkB;*HUeu_ zl1@w(J*i;v1mu|m<6tgEl(E=p>FpV25w6ggwE?5IBihGEBfz;X?Q(e1VfG z!#*K%YGAFfp{0CK2P@iQaLtc}qtbw;-ul{%x z0jb(lVz=8_ohZ{J-IlK57-5>pDhVTc*$O5TX-NXr&tMPNckpRJ4 zMU6kM3%Pi`WX|#Q@SEF13aKkt!L2rbejcXD<{>qa#Ie(?Ge#URs|WvrFX<x$U^@M&iivz?6Qq_OY?WcTS}h;4YysRswxI~O*9blb(N13++NAvl`%)<} zu=V2GVYtBSr7dSq?(?9;D=xDKrWOv-$w21#0QI+xzBuB95E}v5qrR4qSUV1RV z{2vL(P=$c}4Vb#9Ink1{)Ah4zP!HTp;huG_8%} zAG-i83`$_`6}>JW9A0oX7JD9ii==LXE*d4wpAgj08<00@A34>=b_0V)V(sib$H*~< zr&3K8bGcUFKE^Q}-Tb2Oe@Gy@tS?^86&0IfQNxpulC?f07T0q0Z z#u5PE31qRVZjXzE;c=bZB~r*h_R&6mNjs?;j<{l5R1nBQ`qA*on>C}yX80p0Ta3Ud zC%!voWpOxwmlBc@2Utuwu8WJ<@uB0C-!aHfes{oLV`}CZ3z!cSi-gxY>>IHd!5fcc zGt_?6rzg6#EYMO$P<4?kY64kzb%BNc(!E676psZS?g}m@&=5#_SBNNDPzHoo4@1); zR;^Mx&=jF8JJ3z%E*UN__wBRw{Ega;J1a+2DRm1_c0s_e$Mwx}qK^E`^QfHp(>$Hb zuY=y4-Av`J_&}KmEdCpU_H2!G8Uwp|o%X{{_E5b*qOpKYaz>t(h+P z{?8Ns@15|7zd4VozTlNx^m|50Oh{U=g8!S({}1Q7{%QZw{tN4W|M$ed0e^q}?^k-J ze_j8}$N>0CPyf&S-~Uba54ir<9q^~h*WWDj1&06u1p|isAL)OC0R1Wh$e+qzf6@O& z0*4@=`y=tU%@2CW=-;wmDAjsIm$o?!3aH&vF?O+vXn#-r`?=r;Z3N#q-zuh57 zjZJFWv0`obzMrg_XRoN5Esq0@@2?#tFYDDN1WKVYr`%)Vs=res^JBSY1ri^oMP?Zc znD*CE8&?DU8cC4FsudV~Y<7f2IM4-4JACYOu^ODg8vKf<#>5mqEFyxo`hwKY7$-xy?G z?mk!6kQfP9L6!cS!aDkv%qrmvO<#*DyS1EAUKdQ&u z7QSyWIc*nbep^?8sOMYNC`wU24XK*CM2mS2l6d+2nv4YmBVB{Ks3pyE@7JHM#Q3!) zBHQ+%lV&`%tOJ~t0(6aff;K&S$zUV|&|Js2A>1=IeBGIStHA?i+8PnI69&~m+<9T3 zm2C2EQc+YZek=6^FqiG1AAry&4TO$wO@6ueY=gefuX+>7%!itm_Y}ev8RT3D4nOUF z71Ye&+WA$R>or2?R>&U}Y+%EBiCpx34Z;IrA~iLM4Z=%2-ft&OVW?kCiieRoo_!mI z%7J=fT9*RXJ6(HfiI4HwV~L~Dc$zl1hVAzlZHS^J|rff?bPdqms3KHas3hc0OLFn-7 zI9Xdv5e4}*<8XcmQVfPDP)>_0*!m0p`j)1<{qSYU(H11^NmZnQHj^|<#vdiCu zhjv!QYhgdDAu#9Wwd6&tY)EvFv$uQ_gV8auRK-rUz<_1SJ0K!#HvyC`*_**-;rEMifr0(-_Y1%fhA^!Ov&6!f zDX-RZ3z@Ab2x(OMl)cyIXVvVatgWZY(A{ zJ@mzXyUt$@tf`R?`A_ox%^dwjZnPF)+Xxa$L3-lST!VPC>eosesyuhsVK(>{|T z)nY_guyw!g$hW7Ge%PUgE1f$DgBN%VD$Oc}gQ0h2_ZgsqlSYD|?<)LFMi%`p`wysK(D1pHz zb1TezfAIYokzE^eci|5h!Dv-|AOX^3i(rlcn|IU+s4_XhUf=CM(&ak zUu;sSQ3vDHVpehgJJL)|P~(M0D?PhCx#hl13DO$Z?f?C zjs;2>D`#0<2gr840_L9Y^hl|P^qFx`&0H<9gsmHVg_IGV`N~S-!@i< z5mxxdqI))EYj`Hspsh92DTXCJ>vWk^WgSo+jU*bDOxH{fP74rFk`)9_#HxYdNf6}-nblJnAhCm{AXlCUiD$RmA}wIDsBB+fHk4fEG1LR1ub zd(X-mT$m2fibrK=`LrBVEl)^IvW|o|a>@5VX_Av?J;bh0ybz6|fHi8@qP zD4-e3Rk!{u+iZgV0EL1V31+J>FPI@QSe#>-r9|$vMbDdc&z-WKY;e$+AwjgT%?pMO z`~f&_{_ON9E6H34X*0j<&`f93*_Jj1EjToMHxGG?5*LLf9vC7E2YUTK@J9aq&i{KB zum02ikL`aA|5;iY82;bO|NNDO{;&9tf%z8}{3HMKKl4BRx7a@*{`;N(`F8@SzbPdc zI4A@V2qf@-)PDv61qK5L`fL7YU??bXh(7~B{|W=?kRb@<_@V~vkkS0MJ~26j zjHr4w3& z&FXX#i~Iu+vfAB9Xf+^$ed1wuZOu;xIq**Iv|NEXppONrer$0U~ydxx4zUrdh&IoEBQF+Joant5n}j{KsQ?m^#fW9*CEOsMd!6K`EovIfz z6K%Y{yu1geNj#X*ZIZ3)=_`fkkwmDus%v+wC<~i)gimfouZsj6r(+`PvXB*NZ6uk>PolIaTEgavIR|U?pHVyZR6ACk zc^|dyDJK``>s8uSd;`9d-_T+ql~FAj4ZN~jD+@4K-tW|Ub<`uQl}lZy(@t4woJ+LD zf4i+2i#$~B4b^)llHy7{;K*|i2mb){|N0J%u!Qqbw#0BTWi-f`QH%Ec`up3{3?494 zD?#I?Ne#Z9Qg333*;1I*`^%C=Nk>XdPqYI^F|nz=LPNy3Yz(2gu(eQH@`V1g{5=c_ zgrT^?G!w|Z2n{HQ{rKE&2WH=cb}MIP_*v(&_{Mr{oAEW ziD>fXqH`_(rZcIc0g1s#c`G{80sBC&@oH&m$;BZJHd2|<6-$3(NYZhW*ukb>-{ka6$zSeYaU~Egfho|3+L-YlkBad~( zGrK9zKntH9iwf%6uPL)#`vXAGM{}+khJNlf=ZH{f@!f$tVDpHZMMYoDfqCBQR)DsRSv`D>W#}FVD$UKjNARq7TQ)KkMjT z-gc3=tkxqn#60q52NwOSZvj2{TBWx{Rgee6&5=1#2!#9LN5?O?9Jcb#CPl$extYHyTfg7mJ9{^alO?T3`lk_z-uK)@dgKzr z-A9^OGv6)oCf_X-u*#hA>*v4-^cv;FX{&div!i-r4=JooORvb$;LDZ6i4BfYd#~GO zV^T^YAtQycx)DqAI`E(4aYuaURi|f_tUPc%o?OjutY@r3b0sY^%QUMAGfI?lS5IPl z(sZ~-%x4-w{0R`@;((P2jo^)XGopNq+sR;|+SXg8#;4+FeFW_6oqPSjIL=K)uY`=# z?=&IqD}>+0`omxd=N$#>t>r((eT}5hlyeXnU#v9q)Qpa3c5v}D;w;23?lZft!sNpn zsWkQQw5}cISt;BZx{#Jh9d2pc__RD3J~oBEJJcoPu}yv9`YA4-jCXojY}yYr&rKUh zhv&|o5au%EecUPiy5=2mo@#M!D8V0)_0`a*IywV!)ty2PT~gU6!~MtV2%jZBz3Dl6 zz&7n$lekvO4TkuxetK*wH)GAa03iuwHP=qe2wVrSrh=qD6;;k|!HEn1aP{eyj^ynF zdXb;PxJXhjt2H&()v>{-Gif614cx*WFe3>y+5mTrIp4H zQ!$o>XOG5&1fNX}9Tj6Kt;U9Sal~~zjx4P$DCN_*1%17QEVfM7 z@>Pra?7yI`aCix)M2;B;K$!aZgU>^FQ9c%q#;SU1;+=gz-&22Zop974A0S0qxWcy; z4@9X6hvXK)xeL5MSu3p>jdNMk&X3(j5y5-!@rniqeuIi_OQW8K%4 z=Jp@`?XgF4;W^tg8Z+hC_gdtoeE9igQ;Fbv3+FZ|_uorHRO@nwz}C&bw&oX|%frRvL8B6jag9*>6XR=!ENnUB(Y&AHGPZ?QHpQsq;+&4@W43*VX@m=t5Oic? za(@WCB}~Vs{MjN&n~Uc*a~K(VNjZXJECwfqtq7uXnP#pu3VXqG5I!MBgkHtML))8r8gh$Cr;?sTh{1cEfOZJxCk z#4`{j(j;n^V6K};?NXYJ?5^^e(4wX4=p}z6j-z-xG$tS&r?jqWm?@{YZL8EMMw=n3 zUO{k>G0RAzh(r&`m-xcL>vU{iuruUZ=oPkQ(VoavY#f<^7gLD6!^PDj>OZcHq13S}NQ?IkUN*O^Xwis?!v+26cP~?q4 zhXId-rYn2tP3P)2$nsh)J^9hUuPHRNe$P^ie-{}XIA3rqTF-a%J|A{W#D%hJm~|{! z<}*kB?IDX@(a%FLWO?!Da!s)%1?6H;KFLkOXJB4{Dts3NfTBC--@A=CX z|6A-I5dRnc$N66{a1c<4-|+uG;D1msV31#s|4;l63Jd`T_V1>F3Fwd^#m6~L9kV?beNE@?89Bh}DV=W+5!p`=E-`qfoRQvpIZeY_@ zy}b_9KH}oxuiSu?Zs#rNBx2>o+3g45WhIp40NcAbG79Pv>y!*3%<*a6`JiR8Ha5xn zRo#Hi(9<9urF5PQrXT%Sr1>jjfkt&rcm%}08kABe16ZZ;Z*Ji3U$_DBKez!dcyQ6T zo!{KR)!ARU0lPoAfh!GfmWO}C4eb8G4eX13@t*h#j81r2OL^02md6mUrwg@c3c758 zkQ>M25{i2+;Z}Immp>`2_Ix+DI2GE~x$5li6D~q9;zk>hc#J~GT+zT}Sjma9ZPsQM zxu&bos_Tp>Xt^50{~^S!*(dS+tF37~TU$lQfXB97QfDz|qD#U3=gh8nm%<b0@4|D0X!bRoh5KJ&lGw5w*94;$X6XRBu-kM@!X z#noxH|D)pKgyW2=BnQE}rF$GCqYtvX&OQLnvbdzCP78+TY_NSM%~iV{+n5%#1M*Rt zHhhpWav3EG4rDMTvk-z=OxMUsKY%5VAS4j6G|n?YnPc+Zz<_o@=w2hlEv5Nduh%uk z@vmBP>fNN2?a&W5TsG{vsdtmzQZiAm>F3lA`G56V;4#0m^Y1KvZ_1R_veUas=GDZz zH9O;eU`yqW{7rc39mCN$@U}Kz?&FqL*CF#?=$XcEuc)zmgW?NI8*MZ*e?+4x2G!)0 z2h)j32AuNofv-O-os_M_Qlf<})djPB-dmCqsV_=Xr$kGwTNQ2%g~mIA{_W1E_33B^X<|m%vtW$9xWNHY6V>2bGS>yH*lsor z)x0z8Jy!dD?*`k=oGmdT=-NnvrfJ0Dc4j&vQOD4Or{>tC_M{zX+8A& zPSMm+31e3*6^$MuSbnDGO9(gh7REwJ(cgT&?F3`GS8JMBSyjN--M5AvNRT{4<#pri z=QonjtN7EF{{sNxL1cYgY+4iP->j*q+#kcH*(vTM+nGwYXibmt0XR$)E^V4BUar^a zk>Wfz89i&k-C%2jCD$Q`KpD<2QEZJ0;Q!R=o`>+5b~aq?$Z}38XB=b|no(+c&KKo>{!@5czd8tkGV0uzB$$yJ@Rm zJpxF6iBKzN_JH2n=!Xd*&W0&^8?Cz|iHJB6_c_y!Zh^vgsSf~$>x>nXdhM5lHemtW zgjJhe{XHgnMo}wr>92K7-p%mL*xNBew{?3!roRWG&@~QMw4Ifi%UF?j&i%M0r3%>! zW7Qk}F4VMSRBnEo>QrfcN2Y%xk_I{^h4OQ+ z{$|GsrKg1M0+t$oj~M$}O|1U=vRG-DiPC9FhT(*ZyK^!nifM(Q;6mq%>^+kedEf6L zGlRSEo;xtd3d7>1!Xz+mn&%V#p#3xNq)d!4yvb6dgx1hcGMKgPP)`GLo)un6ClEFo z=KHZmEKcKN$wof=ughyhls?Z9foL%Ne)AiIdhoVF;WU!st z6INmEpLn;k$#ok6SBIGgh)=S{u=L1y+|hV)9$w+1{81YTG3^xGbd zEEATe0fr{6&WF#~-0*|!3cud_FsM_#<7hc}n4`8G?*hB8<2vwT1G$vCkiVTZ;d4z; z-0mOg{%N#WcH$;R3*@9B$~?XPfb4xT1pG5t#kJ10G;PYyKEc-4;ld7t(Oj}oc^fH8 z)>-akQ0E83{>YyDvPp1l9{^2qE73oR8~#t~q6b6jMbNp)ZM8vE`PU;7n+1gVRLrIC zGvE^)M_hqtew?AG`4ija8KFppstQ9d zb-v$5#Oa=8v2%meN(oQb>3`ENe=~8dsR?T2qB!ig(21u+0ZZ1(S+Y$ithri9NT@qh z42C|6;zSDS4wyNXdOd_Lusf1EzT!ouUlOL@Ob0sfJE%41XQng~U; zr-~yo(gb|Azp~8wM3gf5YP?p0w%GPSkB}pxp!Xc>Aui3&ZHDw9Kpp9c-C1*EW}L~Z zx^w*NK^}TkJhE|J7p$Agd1zQk=tN;kOB+tsj^Q7y0(G7*y3B|aKU6ci(`Ia{6rGb7 zvOq+ob#uzEpS_Ko*@x6`fF>ztcB6QSf#Q5N<|0B6X;S23vUG`_`HLUD?QyY8-Mgk? z=TXIOQBBW)=>&L`4+JvYv4TNCelmt-lk)ws`jTQ~OT$5)h>YS7s;a*Q>_-fta1D&B z%5LQtV+`X6(ICGCH1&!3nGIzJ^C{WY9d_y42Vm)L5{)$#!GivpNGzf(tru4;KH5fp zK6cytNFMQBFa-D~KokH2)CDy77q6afC=^S9LQg`}BmPy2HL5OCT*-!4o*_NvY+ghD zS5JF_h<{V1pjw&SXj{0HMSEqYp&>;^Ku7xk&_X3FnyK{4FZ1&;zerUW!wvuWjXWrE zMQXf=*5=Mv;5#e4o|FG;00Zcsq|ZN`{TKM3|7-f+40Qjx{)36`5B`UNf$pFD&wq#g z1M)xl|JnKv5C~vU$p1wD8yEx>2n_ra00+ZNJZQy+C=4bwcrSl#LNLzinL`)?K)_=ZOIlS>r1t zbEQ#+!-~_Xm3lS7v9Y__|2ZskJ27J|C{TLl3#e{rZu&0X)#Dgm9^yPV(Q_&d8*w2x zAy7{RJRT4A1Ru73WxGl$;`0VvAwn#!X?YL)&d;$EK3x6MH>pgV*FI}K8%~y>4}dol zsQK&Lgu=TMovE!wFN9{Aw~Y0KH(!tRL5AH-!H)a_Eg!*s&0;Ks2T3AY>-Z;aMx9{1 zyvgAe+xa;{Y=pL-Sf|`^;Iyh_v?;WG+R-G+C+awN5eE|T%F+lCVxUAGIX+Lh4g&>P z70LtUBJwI$5hpr2ux=Zl5ub5CftAdYILq;L&tJ-V6z8S@Q`u>NYxy~^zkNYmS zZg~JrtaN?s5u~QZ#*H`M*1w9bV;-5JA4-zu8mZU9O?N#AU(`)Q!!(30a2J}esgD^x z5MXb&%r6d%5DuVE-lC78Z&xZBDVwRIFave5tJ}69aoUO!51fHw1%=aYk^`|DjSyA&3jdIS_QAQ;!V%2t^0Pn zjz>F*%#|OhB=1~1-x2GrcG0(8@gic198*1=Ts#ABlnPI&SB7wdhj3}6dNKZ0#eVco#4|_+QB_Lu z2xHOW7*Dx(;)M0RFXHu{$HL7}^NM>=a`q^ZvinDL%pzBt$R_uu>42wQijxUG{GDB| z+FE<=p*l^X(ViAPgct}+5)8;VN5D*Qmt#rQ6{g*8$ns6zNPK-cyJTUD;YCV8?#TYB zRQN^uO?$YdTnxAvmF37%Xj0#ybrLy_LEm@PGLM9vGS^h>GY=S9Z{P7ubI-Q#-nz}gNM_3 z_ET9AC3|PuhWBd`7=kEKpE97|&&Ns*nDq0>#*S$#=@&wo%Ud6f-oB9TKGup*P`g>4f6VZ+ zA03_=T&~D3o^Rwj3ac;=H)CeXf^A9z;l0onVcNRduGfn$=)*ihO`7_yE&p3(II|$W zX?2D=jLt&b3Zi>vuxsYf|K!jGm2>_$paY9##H2FI^wTGy8yQ;peQxc}94-8_3&F#Y zs^03A#jEWB@2y?Ft#&)%_8c>G#?;fT)qKkAL4*m`;PUo-Kp+k{T#vOhjDO#e@;b)6 z9;|&uG&{j|spAk$2sz1nY|8X0XTC*)xPp5xRdSHQ8`s$D(^lZ{JHf3`FX4FZiCGJY zCzgl3U9aH`X8ZNHoBHHp>b?yvj|0;X7a~6QMREPj2Eq5;x$rzo_oTrKR-2&*g_-0H zlV^{2qm28mquH8~0<{={+Q|6qET&v=##1w15Z9-12i36npm&~BQbcU!`kmS!NIGoU zt3F3$>e%}FY_t5hC&DncgUQOipSweQWy216%M$;Qk6tPU`ZC1TPNmLaVAN#KKe z{uS0X#zc*K;#epXHES2$&hkXWj|D_V=*^`p2U-OtA2vR zqih2H^V3(^&8pt5idu%+mDPRr_awm)y}d$4F{0R3JAq)E8{mfd_=3YAHN;PQ=V;hZ zOW#18uxIU4Sq&h7fZ#i{P|?R(u9SK@&6SnSO`Gh0NAX<`JAvjaJIiNnBWcS zZF7!*xdE^C!*R1&jnDYz6k``s^K_`fsNDsrRb67%SXNAU_ELt-Ojet`aUW22v8!fH z>+!IUJl-Ij>$35T!OZpyegM*2Io?N3dfW`Z&pgXz5BT13Fgvi^_a9smK>TE-N8-dg zpjAMi>4|i3e7Ucvpcvp^Dl}o&PKE%HE{0?EN(8kCFC4}Kr!*Zf`86^Ffm+cYqPY0- zwdefmbM44EEFL)7Ib)}-cZwsDLE-|F1Yx7)SX&tp|8mSgNZxPyA(W{`n8 zP5TK@Fc@b6tlqzFV;s(FT9b198*<&$i*x)oS(f4y_V6V*V=1jaUXbr}~b?$_Jk+OGC_gi4hL+#Wn`$I5xnJnf7F_p7_tY0; z6vj(_dA*#inr#N3m}%dCmlG-lkOlo~1Hzufm|9=g61_?hXtAX}nvW{gdP=N6gizUQ zx;RpMsrvvx16~_(-za$;Gq-s06LvcDzn{;%l7U>WI^CANEqnO`JT)TT<1<@jF0+u@ zJ;QO+_h!7n@|a4$?3Y79wPyyJEqlAjf&u<^i@tukN|g7KGg}$W!kq=;MftS>i;Uv; zYcanGZCJs3JN@n1MH_D}16$XmR%gcFtu5(umMq%EbqgUFOGRAz;Aacw&tyxTEc;hA z3ug7|YiCot3M(xf8lCX5Z7qeqZMA*?D*Z$WNRNwQ$)N~e&dKIW({2K^*F)u;@Z}%w zk#yr?2l$%zeDIr%SY~-XwVqFZsogF;qU_PkJLY^$)ouuD-$=G(c$1SUN6afap{m#KOPwiaQEvU~DILG#;- zLJW`05K(^ld$HL__cRd~(|!5SD~WH{_-qwAqb_kbF+0sU)8_-r&pJCG#Fone{=uf| zcX-OUK2w7QigEmD^p)rxr5%l&) zujS9|&^f`3`Zfn`t3>6@P4aWZqAa(@kUSmbY!aH8SNF5`89$clpVb<$dw(VtXdvZ@ zm@Gt%Hp3CqPy|Bg2sMhjWLF|I1-O-{-iiQezQ3)L3i*)s;iG=L)qHX`Z*F>yT9o6{ z?2kcX3vK_#vSaLXuD54q0wx%MgO8dE*evNAIX_dZ4iN@m?Ktf2%52o z3>&OR|0yr&17O*R3rh_5SiYow&fO7hr6oAll#jL0o)c1U@7kbP0ovr#n7{yDK%u{% zHh><44y2H&)ZNJJ>l-;@B_#4RPRZXa^KRyWU{YIW(baY5{xf1l?bV%Z&;lrq0jEiR zQ4~^Ug{3sHFx+^dHmx$e(R4RoMSVEM;lV&kwpmh+F5ssX27`WBzaeG-zC#^3&DR}K z>Bdis!UaSOx5MwXW;m>~85$Ww(yxS;Kf{`Gg?CTtjpyo7R{dtR3 z14~xgsZ~R{^#*Un7NJ}!HHU1RugZqT{-kIZL@7Dc>%V(&vv3*PX$kcu&bO8prr<~8 z-OmD|YCW0ETP`!WxwoU+t|z8`uMbw-+zGl^d5MH-vI#f*Iz2^?+$l7RCuk=gW1d&! z=tC<%42AVaQ=)Upo}f)EPZsE{#T2U*Cfn5Y1RGN4Q-cyqmuyilKh)p37J)S;EU3Q* z()j)I)RRT!CoJQcfxTRnG;hY0RL(k=A7ZbQ=sMNqzLJ3*B+`bs20!j|)wP_pb)KC) z5;kMFJY>wI-@p&LQPT~7XS5QwZN~#!^5G8C(T$pG?!1M3~M1los8s6p?hK}bkzkDN$i&?8L=23so zRilxM9xRai;#fTG!Ea@@=jD{sWMtBEPG7%(i0hN;80ZrW1}U%>0%Camen382=-& zuWx8)4S_#tSzC8%IX*N3H*lJRl2euW5ZGJMp|Lob^K)=LbNlKVTPQJw2sshZ*p$@TA-sdv|>27`vrMHz0xW>8rD(WpzX-9)1uK&V!@ud{*cY1TXqb z(Q^ICj1$L$X7P-&sCW{gp;+}kLYX3YkN=K*-UNm3l*``8c1DgTTcia|s}=2wnl(tiHiTdKt)%MlZO@7q19@kkp(3`P zBS}L|pW-LxTr)@PYKAw$`-+cl%MH;9`mj(ksb2P)CTrXz7>E($fs7<+omGY7iq-MW z+IY{K4K-ebTLlgBN~(--yy#zO8xqxQXc{WW)gk3&28CP^T0k<`4We6GLR*~bD(mWE zk+DQO62_*fWK320k#AC_UpG?h{r#Wn+CvcrvXbK>=&>UyBYq4jN2WFx`hN?KRv%S@ zEh7W=)^@RdEG){5&|i_LSQ&X=-|*px4$O2pL-gR&9ela5p>J0a7FPw+9CkM};bAv7 zRpTpdR1G@0P9*+804t&pWE>9~Z^jR#?9Xh@WOJdYIh)s{r~_vx-G5g&HK~MT66q?h zbS|3$C1a1K-?06IXJzub`$I{Wt5ldvL08xFMo}4kY@qB)D!ZMu1um+#3 zVJ&Sh8E&M(G1I^P0FX8(juvaiQN%tfmQvRdZnWj&LjA(|be$--7grN6#_^3e2#w8~ z3Hw5UE*2OLy+(p`E0;Y@m(WufWc>)B zh4{&J)h8owrz{#&7`O;mSCsnpUELDnR>qtbA}MP_K!TyZ3_87p%A9dha*S}U781k$ zlzSUNP@k)-wxg7yBe~MnwT*ptN_CK|8^7%(hzbZ1v$$<1Xxf{t@AA)TT^FHTsamvL z6_1}4U}|e3hg`uV8^$uIjaG9YO@cP8^Y*l-XnshUQ5&&RfoRaal^K4(n<}eyDBUY( zJ}FzDR_}T${hs~HiM$y}?Bf!AwZmK1a$MKBzkfws4dZ;7Fit;yC$VHHdfFY1C;%L#3Xhlr8yvJ53lIl52|x{>4hwCE{_oG3*` zx;?Cf#;M~YHO=){?fOMdJ=>N`etdNzI# zqRlVvON*o|0zW^Suf|oxNh4(b>wm|!t>taKFPcQwqfu#Xx?1Z?!}FsFQ`!-52h(X| zrMl#U5%WGnRw#L{Zn0oiV46t|^%c}%9#0+qa_-x%_pW5*cyI<9615r=-`YDtod^-Q zZ5K$mOciKy z)uaZ+uq>loeBjP3IZgZZpv7pVe-^c1_YjbK^d}tqw6?fRctO0C!NRQtF92hv-NgL^mqw~!6h@evM77)?p2tcJM`1KS7Y8<&<)YmqBk4i zeRjP22Vd8a(cx?sE#mWOD#fAW#Q7DrHdKMwJEBnQo~&Z`>1X234@+{CO8Z-x5Npx( zi3O?M`(G7iItO^pa+HTgxz`VTG?MXf_v&;PkQjh?U4ck?f-CjW);@8$9A4(Kkw^ra zG)yZtqVdbeMHs|(Df7=Ig3Yk_P&aA?a()0hmWS@_-c|z=_CdhCMTeq;iw4AbAg?GM%@*-H#Wwd99h>jNAg1?og^l!C8ld;38Ft$o%W_U< zFJ|{DFA5<&!F!*NwbCuEajc4mEzgzhkRTWC<Ce-ojaY07A0&pFF~T<}Vgoo%B|q z6XRgwwNEXCp{|UcA&f@-=zBC)@Qd81h$x);0FagcLKm^N*E3M!T%{Y!q7jzrV@~c} zT(C#O7HUy(sV6YjKCDsPsZ#gz?AqcPrKRtkbMa-{hhI7N6;PYB1;$jI?Uvw|-6z6OxyuioE`1wPfx^hki9X5Xr3Uo+hFo)I)E5 zi^pW<=~yM7`!d=ps$a>3c8F4GW9waTqU;v0vR^yY*b#8%c@!ey#LDkP9kdhkZo9p+C1W8r^58}oogs^E4d#1w!MN;?_zC( zyM5cLd4j)m2DHb~0G7I@g}9t_DzPYk+d{1xZlKwKqCb;>!d^!y9X|LaEN-r;UIn>nj~ z|LX#W|H%aq|D;_10qnoV|I#y2GqU}EoB#dF$Vm6E{4WE`pZqWLKl$JP4*UNn{`WtN z{{jI80*3$w`-A@l0tJJBf&ha0ef%%{FE{}m62xyAP)J=Hdcs;1<{!~h{IQDms1DiH z@_M#0Xx%wiiLf z{~PjG778CB6Vs0L4z0ay_+R)@B6q%5!x5`lt^3Qve;E#bZ_u9K>`rj~2Pr}Fw>`az zLPAXi+{JbC!;j=dO#0yC3g(YwE758C5p83|DK(%_zF%=3&6Us`;|iBCityYL6cr5d zD2W?IU(kx>7%1x-X^ea(eFg8xYL;HY8Kn(Rxn+n zf8ZFg$y|*+5wt*9j_cl9STrP%VNIBp`k@Ae{$vcRleF`GJF!f9l*RmOSQLHqeH=;H zC~7_1n*3MB5gLeNB0_IB>!l%RMx2x<8HgU&e963OYYR#YFC=ZH@i4=d#EaM?F4 zoe))lT(LWg%_C?!sW&RFHOhf-eIIdIy)mxfg&$~@TS0Rp$OdYEuagUHVFo{v&4?~r z-)5Yl$~w;yxPy8mb#?GQT3}bevXwT4x(>?0l9>8OXHc@Y=kiH2J}_?3DftL;=7ys{ z=-r9>e8z-%j8F^nTrT)I8j1;JTrrev?`yI#>8h zSdJL$Aw=D(V43=6(V)D{y82WtBg}@z9jH)9LDsFx_>Q(O|UC0P^Xm*pq<6^|>B)+*g}LWg)MIJwyue;OiXJ{8Br z!RWjVKW%Pfs`Tg6S>4dV0%fMR`dC~kv*x`4s8LAr3D zdt6T~U?igESwK2b6L;kh5R;m-YRJWMvoN{kLKV}FxsrB3OhJvJlsqcC zi-OQ_6-3e1um_TQH#Jz-)x`X33aDsY5xq&c5z|BXEbMF#Zc73!N}nr-RDZnC=svfF z0-v%ifubu+RZMqH%?z%|Tk`PyeOz2})uyFM*8w4q+U`bP6yVJC)v=*(vFPGQsg;U` zT|mamMW^S`>|*njN#u)Vr(P3!1Pr7mfZ~Ta96B0<70Bfq zQi-13oQmCEi)9?OHHzR}6R|@#;BPqyE~MHt;^#ZizGmlH_U~sT3MylK8yXxI zFcx14`8n_G!^@or;4tHB-aGAyja~CIeJ`f%tzQ4)Bx+iCqaK68Vtr#%M&8RFOh1ii zyWG@ueqUOrV0K=a+ufu{ZA8d@j}%i8bToVSBEyib3?3Ow8_eeMID|J(Y|(rH>=A5E z5J6nibYvemx9k!wP*|Y11`@oB^mAg?g+oK-!RlIR9XHLzY^tfAiwkRlK3oa<0}x|Nm5cp9=We$ct3qYLp(oMPss-@ zc7vz}(E^fM2lT7=?voVG%e#3!kRi1>G3;FucV>VQxC*D+B0N(TORB4V)fVYiaP}>_*4V+?uoAA#a@Cb409ZNH&kh;*B&6Eu)HCprz#=6 z_a$ExK;CrFex_k%m{oEhx5d^vUE^(oQ+--2rEUH$o zO~Byb`h@v9*(BX0NPqw?E@tJ(RlsJX*mToBt94oUWF>3S5_>p)mS6DELtbO%W{1jp z(Cl-^9jP-|!8Fj5e908&Xv$dk@#@21wHZ*-QELddf_nOb8h4DMbJ3_jKo*q;t`o@) z;wt*BtmRbgPv1cTk!S2xa@C6NW+)z45=wq89&fw5KT}OzQ*4#5bHb*h9D{OEB;81$ zg86uvAP2$eTRw1J1a?%ZRmZW*X6*@E-_)4TGn0HN|n}k3%kI#)tRYvY3>$x7#<3eC$Hiv zwKwI3Jrj)(U1*!3P(zDsV{tU^IM%F;FY#QhMJbDIoj)&B+t&IMhu^i1TiVwcwXh-2 z#h9{uuZXWmX*)3qmwU@oxi)30sr}@78&q&Y$+}Ab zb#6;dp&t&kbb++ep2Pk!50c?g->fz!?M`Ca^6i0gtR3Gj8$^eVyo69}&x(P>0LSFJ z=&=gN`WqAx{S~pP^mxL2{-=yM+{7;(7dTs1OeU<(QPUluj(fsibteM3=}81!kOHiFrF9|zy(wH&D;f57)TqT~mA?l)3x znuS4quNgP`OxZt5Xxo^OXwklW)>w3QjV%l>u7{=om6ix?CQP-cYawnpYZI61moYXC zf63Qg-e|$+2`xtB=}WeXY*1OXye7+)fr2t%qOw%q0L-&p)LDs|Kl7HUSz0wFlEEN+ zxN6p2q}s1S%}l@vE*akb8SiQ$rTO5#DZmPXjdmv6jVu%;gjQVzh6&Se+!br*Yk+cG zQwItvS)5-4%#}BC-w}`oZQ`TSYug@23q`T`f*R^jp?CY=w1n@UEn)L#O90&x6)nPK zlnjTuexh&L`K12`7fL23pHPDo_oFSwQRzfE4V`Ko@_Nx9YYdadI9)LyVIKz4d!{n- z*(QyI%>HRTzR%*md>#kOW^1~pP0W3wpm=79AMOK?QmAt9RWLsm4;L_J5MN=(`r8iC*KZOYa7S#$+iR3+mMorwrq37 z_A$c-nhuN|=xIh{3UU`Q58S4YRnIz&e7P6#iDR`@Ya@n7F-;Emz@7NF+>;3TqcgSG z$T$ySs{JUns1uV;_o3Bz)xtX8!_r*GwSWdvlyFA(i*R2)a*J4!7< zIOK%mloK|%uCAUKZm_dW!og^id`V^50RfXMVvwSp(VwB?DKO~gd3~+~U#6~?@dT*R z*A1U68Gl+i6jO%C|M(^~D^x;x|1v0!Z);XIY{20@HNVAO%eRYCQ5Ot_PZv=#vk{w6 z+BxtZ+I0CyVTT!A#x}(;w^PR$G{OO# zPya0RdV)A`R;t`qYRS5qSQ5IeyT<(ixO%re5kY>}i205X-b4`;Pdw)k%GkZB)R{gK z@}kC#s!wwQ`MO#uaeGJ@w}N@aMxLu@thUU}u5HOI@k61|C)3rYKOqrYK2D*>pcr_l zzVR+rNAOzbPk8Zjm({YYydPVA{Ei%o^x%uPgtM!-LYYfcoHr6ZH2}N|;AsfB_zTKI z;{NOX@(00BdS{zv}rH_rzK{)hhaAIm?%K_UL- zH~CnC#K(dfPS400uA!3D*okLf6G51f$_=N zL}yobf1wBeF@>UgC7*-LaJj{=S7YlFGyNYVp#F|7|Nmsie?BGL)l6cQwkY)G56S1? zpW_UmnKBfYT{s@T;PMnK!kCmtp$bt7_hvjP6mGW@luYFP-H3+J| zfQ>2S5x%_pm=jJ!k3ORJ)&K74}9*=v4gCL=&^UB z&Ik{ouX;9|OaUK&C=ws0H;; zUlQF^-oWFJ8*>R@!z%8zD9f~A%E{=|fk6Zq|7$H`ZfTNsIrD%^RBL0W>zZ0xb&)Sx7RPYdvf>V`qhJ$? z+ieIQlS>MkAnOiCZDX1s5f+Qmux9y@1`Rn7qLNuCqpFpBu^ynSHtpsMFfb4gcr|>E zY-os|sWu_!(z3^cXDiUx^H$Iagfo{SKJK5l%0W)>Kya)h2 z%NtDc&AHP&g*8)*&pTJM5R+*u12fUuR(JC(jT`7QE-=*f9rE~23Ve+bfbdx1?~*#9 z+1hb1Emvb&n#1i(jh3(HJE+y~vC(Yo_YeK+AJ5^`mz=Q|XRjt_i| zpWy0TvB??kr$T?x!sKASR`~1Uacn+NPtbsH5l`H_hsg>hy-0~}_glQBwCVG0X8 zO|$wQ#)PA72chQmf)K~E39__z`g{eB@*(Xx?<`rDnPWGBOT*szPb-hM^u5h{*lD7V zH27`NQ5n5=lg8q(mswJ2kCAZxgC5$YQbgqp%RiR3vfB}oNr2VV#be+-XVF#uB! z8$JlEk7hgPIivsK@)sB5%w4n za#3%z-M#gA8}Ur!Yz-$JUh%}|^6+%?T?z>Ux`MLdNhv&Oir)}QF^)XXJizTgqZ>Y@ zb+2js04y90kg#$!TN*<2po{DkKjRVFEx3|Jo<+8{trxK2l%}AA14$JufiFk+%%~PQ zKa;=K8{hA>)VA904ZVDSybw9Iqs6J})V7j67;YYHFMY1S(Abx-rof?MdK2ak{DY4mFL}o_gXFe1U`s_WkJa0E*U;h2BirnO@-X7n z9m7ie>5p0!I!@<;kvlrN7t8%ar$-qhj?xv4L$(TqqllBmy;izLn?(J4Zr~rP&9{27 z0iSR4HM);b(4^%!Vzs(3HqjDeyoR*#T({jq((IK!0FAHNZk~AoHM1$99{@hP084pL zqr8@YW&T+|Kd`joZdQHorG{L;%Qv2xl}g+6qXLE=oXZylErpP_UhKH({F3d-2Rri^+qd-0&)eY1f6BY$l2j={PwP+2UYm!ZA$z(!Do|_$^iVmmTv|%^(U;a z`S$rx66BZap?Qy4iaV|q;wC4hwKO-R_)Q{Kx0A_yc%>2hE}jJ6{XB*}{S}TYJn^(I zSoY~GB4oJ;UWgXb2@#S9GPVAg2jrFu;G&LA==z{bk zRM7-ons5Zt$dTpgUG+qnTVJZJ%bA!=%EuHGpY#)~kHZKnk($QW`O1!aKX_guYaj{J(dMyq<&1<}IDo+X@;69G@)X{Eb+7{lLW-2LM z4s$TP_EYx_8@9DmG-}JS?KUYy^!oYbxqdbmU20O9XrDmDDkHoc2-TbKOJ@nP;w-vs zN`xY3B@dD+;g4}m(0~@_!9>k1*jz4MPa%bO8Rl?DOW8(>wqLJKqeD!ptMh0M-D%^g z>K@v2R>_)i6G=Gpg7&n#)=ym>N@{Cv%oIOiRvOZx{{CbHbZQY6LRf94E(;FKwrI5&fKcc31cs;TRXi1mtPk<&(GW6Qo>#G$AA$&+W^V#)5AW(s{dQP z=R2&p*m8X2Hov#*844at)w0ndTO$07wXm3V1!TmrE7UfqKPm2!av#W?I*u~k^y&vd zNNYr{0qOZzQ1!WGHyRPXy>GM-Pd<)Lo)1$#&9~6DRyh$Yr{p%yrGOA#lI`i{wA=K) z^rS@-EoNDZx}iP9Bnpeab#hT$CZ?sjpbFO@?Iz9{CC=dMpi2;r7@WlH)IsavIab*W*c(q)-Q)*J=Enf1vY0%9{{)?du2Ro zC9N;Yjrtk8TTl9o=e-sQgH^Un{Wax_ljS{U?I}A%5qs9T4HcW&3Lk(>*MkeK(ws;t zhv&kw^`Iq~RT_1Zf|$%q1g-frW+`nWw+^+cRd=374OdTmy>WXvM9!D*6?TGi^tA)w zcnsuv9HNGCu%Bj3AVqP5F@Q8eYW^l;*1P-RuE?x1wGAfQr`ZI;wFHO~q$)M%t+{&8 zx8;R-Ii{tGq%b3s5)NePS%KF!efbR{EjIndwk7O&3hpux8#5K)uFPcTU^I zg4RaOcWAF2=!+Zb`FE`&R?GYcg4fqNoS|4Q)3_?vnLY|}9$+E+QbjZ^?w^_GlJuOSK0Dr zeT@ST$=q&KWwm8~bF>-Yyzol(#qj>E2jkI-2%lac2>Hu93sY!R!MXkLE@&s4s*!=NeRRx?BdBi#L z5kwZT_Tuc0=fIL$T6&e&VQ3Ka5%v)jLW;xvf{WeKf!g*K2|qreH;Lnjv8jGN%Dc_D z6NyVKJHBDByhNA-;aC^W5nmhxy$%KJM(DA0nrL{C1;Nk_EO=EL#lX2oq4*Gd5bf*a2gey#-o(RN7X@A{u(bvOgf?4 z(0~^XZE53EPi^o4kn|sukze_(8*~0Ix-mqSBWo9QAu~V$em2*#j{PuN540vaVU;Yt z(&7W87cASy0ooU1g zsFO;OZ(#%3MP|_=7h_NwOl#N9e%?J5pO;o##4Z>IRiIZ^2Am3zf$3U0<+)X!}gU zZbzcEps4R{X8`fW;yI^~UTR%?xEzX;zZ4WH-S6=dsXqUoDb09Gwt|Ut`?W@2uvQ4L zo+{~}$z5FoC)#IWJ>o#=jszej|cmH&HB} z?NhGeLw$NOXovWT-JsI!6rXIibs~Pc}A2S!9NQ&D`2F`~PGK%BeH+g^+4nPRF zg|isndp)IQ1Rt9sRS8s#hF2NykZTqUoll5aP@i%ZXqm~j!-6wIpDbv(Iw=`?g1F7m z+FJY!1AQ$z<852n6YK86%jQgoVmeb@P>Dkw)24`GB+udCi3cX3tHW6pREY6@;uMm% zu6(zeRJA%V^oIW;k9Eo&IKu7S_7v2CpQ`+ZTi}jK&0@BeXOK4$Pgp?M!n|kle17&4 zyk2xmRDZ6~7p2*7ym8L@CTaefgfY#^^#KUF5Or#PQ21#TB9n9BWqgG+nXuucTipPX z=jd}p#6$5tIuZadKE(l?Y8rXQ^s08uow27SHwrI2(08kQ%}aip*-m&pV`Zm^Zn2$t z+4HW?RP~1sPzfsSLI2LtYC_VWE1Z$6bKF*a^v1QW;%#5em)Gm*kZ8A$zx&hHs|9rq zVgJcgB8OvryQIPGUZm2gt@db*bTX&=IX#s<^=0wkngC)52NMcUqT6l5UeJhI+3GwdFF@?~H=7)&2F-x6B57t7C zy$q|Kx{R4Nk4pql&+sQax|!S1W%&0{v5wJ%BQ4ZDD;t7G2o^kQ>xUngvNx!fc!k^d zNLA9qldsVPErve0-S*ID?#WknyLM@G)DYFVWOv&+hSqUalTT&Jwyr$7gkNLAU9>#f zI#LG{wHy9Ww>j^@`6fJbU6nILX!=@RwejCd-An}~*<3HDCPLnoYnve|+|8U< zxU};0X`5f)>JD(|Fj}2CVUzM6;&vxU_!MMt+!(d%BhXlCQaPp4PsEh+tjHZl4mT#< zC~iG(){pGFg}x_Ghv&*Nu7pS_3qP!TI)4D37BRu`XC}NGC=X@@7;}+eSGnTx^3}{ zfonAOyKm%4nC|lPlH+uXS#8}xgD$UDT~Da_x?NctKH3cfQ>I+Ds(iL|N)4jitU$54 zo#Rl0S{EDu$Q#!i9zb1C^=~~skU*vi3|3$|2#}R!c*14xy}$Sa|Fe((OuzNNfd8x< z4QbPWvut65>p$_|e~bMC;=c;OA1W{ZX8r%~Nxnbz zU;ab>7ogt>VE(fHAN*Gd{*wRo*NKRrU`W3OK!4*u2*}^_f3}1_s<&boP%fwV<@E$& zQGIF@?0kPgz(4c9g2DZ50+>JYzy41D@+W%yJqd`6G9_>O3qM}+>(xwe#as*6{W}zR z9QSt~;lKNV@fTIlU52vy*Q2U1af_xjYJFLg``eB<@Q!0(=*%(8Z!kArL$2Y;ZH{uTwTzDeN{g>@K6=0P^B2sYm=%Gz4-mEN$J;MKR}^tjSC zjl6JYPI04KQE!Ml=A_oH183jq`v4$+ujtTgLuL9y7IYBHyMJP0^^Rx94ozCB9%vyp z3hEf^@Do19xyu2k{i+$&-Y*>JCe<6~)H}Vs;6VV?rt3cV7^|D#XuD!ah>ftX3+KR1 z2CH2qi@lFNru{{VdhFXl14lY_URfI68WN=FOCL~&Zkx?z4`qJ!er{d-%1*o4*^zeR zAgE{HXBG*L6YNF7dlf{@E++|?6+(o^6j5H4KP$=XonYzRF6t>@Io>|$q#XZ~e_y*- z9WY3M?B7%-m>ZS|_fg?ED|+;TtY_DBx%QR};Ob(h0TnFN4C5mFg=Y4}({I zw_Lw&#eHrMGe5Zug#|FluEC}Sh1)`ev~U3m8a}+vbxr$qT|>1>TTOdSbnsiqHn2cm zba%P2JBe~gZ2PQgagDEO-C!`T!R%+Ubq)ICakuX;vHg$fGu3C*Tw2EPFr(YF)=y?_ zN;j-dj`AH)sZ+%P@wneEAc}#E{xTwPnOixvOuPBZ63cIMTAXH_N*AgvHjBTaIflZp z7os|KTUtfWWYXE;fnTjZnQ^DQN%&RIFF;x88`#v2=fbmjVI|UC-|!@pbA`kB)kj=Y zpPq7j01VfS?;9622mGsy?$I;1DgCM+@Jzp~j}L5SZ%=1pzcW&{tS>{RJ#HCOV>43| zI64u<#tw`1ZGLT{;ynL3i<4DSQo5jQ=?S;kN-)tRN9d8HL)>$3x!M2lb!G=nzDz^> zrNBV;#N1-(IEf=v*omlySTf$iU{^$ulHuT&r)yW3d@i!NwruC0=0&q3RUjj}Mkq2A z^(uu0b!w#!49e@#2V2V_X+h&8t7}pgYG&V5 zUF&?3TwZ@A=deeE{eyai@yz&*eSuapGk`jQ(x8G*`EJE=0ly(MuV~ehhR0Jx)Q!6@ zllit*IL!#JVoteZ?@8+2|BZNF(dz#20|38XSiX@hLvdR>oFQr8+?j>w$B@0@yda9)mF_QmtnB=Q{;* z`jUxLj9S70kZpEG(XZwNR=mE6+`bVOehg`to(MqTwZCTcJq#Y6P!Zwa_G(1$nClF_ zBVLv{9=-h4RrQ_<6U&+-6Duzhb3XtX&!oay;t3pXcpR#iI2=(pENMMDx(w(^srS|w zRQdJ{EIH+jMO@U5m#+LEC*UUT5E|m4VLD>(EHZpG(*@ic@QG)JZ@n`%+H2oMi2!iS zBzU8Y$T{V(C*|Km?pO%+C4{8Khz^UjfrHG}>VVx81IY$B$SoFIov8H5ZJFJA3fne+ z^)4m#r_`Z$*71(;N}Oyw_4hTJ=<5M7r_#H!hm32wTs@AOOeDD@SDkveZu@8?(qmAg8_E{NSpCO?e z8X8q%L)}=3nwy+jVPWlS@b;_FX`*V`j09n|YkRidcX#mM*3A$2oUw;p+|fvhZQ^S^ z;>T{Mg0^FR?2{!)X!4R|%tkCamZlLWTB5j2BwFCr1~4ENTDCxwJ9JD-%Kt&i!8_mZ z3_g?89bmJ*B{MGVF-9(f?25Z}P0HxYezL@veoN2t$4BW%rDe`>OI&5`B(xw>Ld-&9*1ssMw#I;eDZ!l`C9^tsxThzR+6K4uyC*rbl zPZGMOKM``-NAqXZ4XPq{6~Aql(2X1$taGQ<(8qQ+QZIGnj~dcBhc&2M!qW`99r5L+ zT4CqGJ%$Ql-^LGPn8l2S;%IktFAh$xJ!ySN3XgBzS`j8 z-;+npt>5f(_S0I-n=wBbo@!6?cR#`nIb!KVG3*s!_fBl}X%B8s9onVk_rO@PMeozO z@r8A6r%JeTtyj!=^l#fZ5Ax84*9HtD+-`{G z!|X5}d5l6`dcMsI83!cLnAe7Q9P0&Q40)S&Dd&9HiI41%xKKY;>&$u?L4GGlM_N-T zp&*_vq4Nl@rhdw}$*WdDYtOES&Al z4`l+~p@dZMfpAT8Du+ASg2CT@s@-yt%Pg(>lNx1Qa^P%IX{nfiF!yb1X<^mGH#V5$ zoBYn@s|EBho2(ROlYsWxp#r)i^`}JQt#H;izeqmc+J{P$PRHrW(IX_Wy$=BOQ*zx< zQoB!gph?JQOT$7rQb7x@3vqW-sap1)LTY~qe0H)CPAGsyDJ(?{~z|g1RkpHeVj^3yNDJwwz3;z-^!jP z`&O1T#$XsT%#58DA!W-RNhM1PmF!xjBuhysTiGgvqEg!a_s(J)V|u^K`~7{t|85`e zd*|HqJm)#jcAj(YJ7tdWUPaS$)KI!tMJ;~VS)5pBNd+i}QJGkS4Ug*S4o!bO zQo?GP>mk%~Hkhdk8i5yL=ZvszZz$mx+{t0;#vsMO#PFP!Qjih7(8C zOPr;*7B0K^8*Afh{^!5r{70|9w*UJdI|72<`Jb{E!Y3x z{4axnYL>Tj*`g&(i@8_y7GJ%}9kTQvAx7Tolmw@aGg zH}4pAKTS$`c_!(9OFY>squGGb2=01(uV`3hzuByVeKG=e9vmAq92E8c8qd^8DrMsB zSu;V*_VM!GIkCa%Lx9+;P0Bm7KjO1DvR_YnCUn(6InJTj{M|$?qs5LO2BDp9pL$V3 zSIyUtce*q`5;Lql^yZv6K^wW}BH!23%H883WrKOdwFqMXoy1Ikf7N)Gw)%=Aty{gqe<8CxJx;QTAZ?0->Ma4@vJJ2MY9#Kiubjv z_#Whq{?@c>@7c7&&uLSf=hywLTFQ&D)aPFPMO>>3%Wmhw$XfrT;~f1ezZfjfwMI6r zwNO~0CK=(-4?A|dc9%Dww)=RF(EesVfe-C%7Gti7Ev{UjpH{Yw3fh#_KiBEonechD zwz|6emO$ytsY5{zL$1el|0uDwGy(H?)}qj>zE=+)4k+qC-IV)kxfroBMs4T2V;mnT zySq!>av~z%ZIQ#-oXqhSz1r%-V98(O!Q7^1;nx02Xme9+dX(F@(_JN;H8+nL%XO%> zg)RyyW*1X6{9GJoRA%V$l}8yTHYYo4UgHoysmqE{k3%XfTlXkLv1Zs!cC%|cm%+yofilOZHQ0B` zkpnVVpQAteo3PJpC*BWT5=-)&I`t`_>|(aKh3DfP+)Z8Tcj7h)t$wl+(fRyPM`o$8 zW%H=qzVrrzVA+1{xP2I_I^O44`1s{WTr2;_ypZknE@4$4-amVR7k#$0@&wDvsFT-j z*y8Tr_fEkY>@>gg;vQeXSC~UhEC&x_L_7BO*R8&~R`nspIT~>VSuk0sqhY`o_;TB} zNt2Srs)BEJyPk^q-on0W5N`YJ^0iYB-zM7bF=!(9IN;<)@y(IBT zgX&%v7d|~ROE$*k1TjIiFm84Gyc?G4@&flut`>H#5!q$;DJtz`hpqoHR_=?z5xHww zujptiKdl*CboBK_smTiOgO(p8BJYcY-R@Wkwp!0P_T+WXeV81rH_?USR$^uQ z_ufWXo5qU7>c}cKOujy0f4KVIjyEaeJ@(&fJiADW>a;Rud<6bt4Khof`+oUkntN&Q zCEnjXyWXJ@c7xwLgiJWA5 zcloPQ(PNvYeXlW=7UK3f=9SV9cKd7YX?WE9{CTpo$kh;~rs2#awh~6vvy=MA_{;LX zzkHDU_T9j+UU#WE))Do^6^D2hEIiz1}W&NlZ>%Knl z^q26o;egfmt_}|>V2!`sS{^WTqr!1iW{u?F7A=dVb{rf#q6x|@2$b)!-E6rw=vM(3 zLfmTV%NbQHJCTFVjhsuiGwYQf<Ll54vSnGdm>^NFm zH<-k6@{z8k-+Nz89TtnO7hOdGM?LZ7`PuU2R+Wkq2|Ijm9FMnIx|HS0x?O7unxH15C(D%yD?cz6* zY+s*licWBsaj#+1nt#)EPDJQw7wcHQu+$%45Z61$*@r!^y4B)Kn*%k{bLtbkK1(id zLN)p=Nwd!}2z@5|~s42xa#*kSA1DZ+Rhs6x4d&*DLKL2@oMW?7Nxg__fDoc z@EPmM5pMn>;e=-y7b8EoITI<)kLam&-N?jZtEJaS{J&WE`M8QY+@a`DgS@~ z6JvC!;bZAHRre=ihi)|ad5q;RZP>^YGq_^)?$(s!3FEdK1rM-e1xFJe1){FyL_}c( zixW#~!&a;+s$%BYC_ z65-ZPg|&UJP1H1>yclKo_h5c4o3H*J+YuLV<ccfRqJA;#x&Hj!t+MJLF(pP; zt8*WECY%@BQR>OfY#Ysv-)FIT&89ZOFxzlPZmL(ejZU65st3`79j{;Z0d})bw_`9+ z-q&tX)tICC-ITj3nqyqbcl)lx3h-Y$&7$;R32b~g$oALmIx=~Y`PsP6BIa&2q;IB% z^JNW3_cdFhPSomD*Y9?H*I&zBdr0&%-{c17%WatAA-(WbZ(}z__Pu0p&3*S{`Dr&} zYp4D8iv=|7gN(kAc1`y@+U?(FF!X#xX7ewGimm%yzIZ2=B?xIsy?OFU))qEWoe=MN z*ME`m=cLFV0Rz&RL*ae?LO<>Y8dM_Wx=g;eY~#mI*o9pddCU?~WyG?0+sdpZhcFw;*TR&d~(l)rXP zrq?O2H0=S=#QKW%{Eq!r@#lX&HQH5tZGXe)K-vaBgXl_`*gbNW8Qcn3yFdAR*4(bS z@iVL97SpyZC9wzN``^EabUx-WASPEUY#nRX_9TH@(1bzl8Ph|tkui(*ER>k_*~r{9 z_Lpk@P*jiWv>_Bv5)C2ES5oLz{eg3A42$$b$5k{6o@Z1KI>-7*JJf?YX&?@V&uaYDKD$tSD|+vp?jTyuKW$6HT_+jQDil?Y&$)wxFAba7AEez86v z&TzeBx&#m<%sZOEJ*~6cr5`N0{=!LeEqkxyx-#opz2dH6ul7F0fCmWPK27^Ex!fDM zgwK2S#ps@nuRUI-v&4Og-I1lAd9Eh+%B-)`E=asyYE{qo^3htxpM&?S4^>Cs84D?j zcxvURc=r_NGi8Cj!Tc;IKX*a4dbaMED6$;G1txp5m1XnP41A8Sx%XIHScoMZc5zU} z11V_rOm`6@rvJc_aeozyUVzE%ZjXfy9DmmyTNnCen#F!Z7N?L|%)p9fs_9@_qu;{0 zhp>^A*-)U|#HEV6HXNoK;{5r7mgz-_H`UyG&+H7jWK;WNlR015_wVgxdillCNuC(D zw{N&a&M4t7WFvCm)-G%OcV0QYbj#bQdnuKCRe}6#po3~p3eR-wC^F{<7n)eb-E+N` zRTlfiH^lzT{-)^I%*4Ruo=T7UeCYYe%L3I5FJKkyls;$kDcqkUAq@c;wg3%3ik=Ex^$ zH4}%nuhActPHNF+@RG=n>l5Q!b8^#tg5V+Ck7K>cedCpdF=7V`7F?Dggtp+X=@;FQ(Fc9=Ivw6tNnFEwS6;=zLdNx)Ry*iO+o(V z;&;W8k%pUKcRxC**rPMfc(dVB_B3F<|`)w0#jrK7te&DU-J z6jic#K*~aO_c3AI`kx{~g@)(y;zoYzzKk4(foCcsy{sEIZpB|yKGx9mdL_#T!nW~| zpSyeg^-EtET&a1d+Gz58--~+g?9&_{OA`-0$U3HRVlsKKDesN$uHBROFFiEKNPDni z%ayOZ#pi~Cw{D3PR8_Al2{iYsHY{>$7P>jgy0`6w$d@y0jn||^hPQEv%Wmd>nA3FE zur1XiGxNc-Ot!HXLMjDrZa+<22Do<;p!xx;P>A!n9QI3zkkd1Ke+yrNB#Zx(q&7S7AuzH?jaYj3Yu(|M&vMfr5n z!42Cg>|zi5%Zhy$+2wVcpHX*wvaO2?S$ps`UwF7gT=)^S-r&zZh!95KS?4=1ih2L_ zdu{Tr()$CW0u*nAxR~|9Uh(YfvsZ#-psJO`}jj(XF$on=&JkU!M=S)MEH^vy8;y?6(DKM$pNT z2c`07OY_v3ckJx%?eG%8>BT;9+kG?EaK+lq0o7J_Y#zc>8YFqKm<{Dyc0aalmzC|_ zNXTf=e2%H9KA-eM`+$3*54Ta1_O%?jMSTL*o#zy8UP$^WwC#pn;^Bv+rJ=7$qPIPg znqEBNm|oW~4fy_A|EE>rq@+RF=MnTdoBEA+yN`V1Hj7Rfb8G)-iPe_oYQI*(A$TC> zOa%sKY_*T0(Qk)H(+l^QJFx?IMn{;31C2>6UL3f0ih0ihA*y9$I>F?EGmyD zf8wwD9M3n_q5X>iGcs~B?FC9Yqg+G?UG0 zW^EbhczGwW!}PLW(tTcK+&9r73@2fOB>S$^+^;H54rV96@eS*Uw{KqW7lXL=2wl2^KU~k6uNddp;wW8IKhCZx z7sEf?ac)&_$fo^k&J^~@Gzm9IuCL%M^UX*M`}k>PwaB#vD?yPV!rgc8<(y6TA)elqZls2wVxFN+;gJIj>l%CEf=i?Gl zlQQ(>9-Fvw`LWFp#Jwcg2VNLzZ4rj6)=kFt_#5uD?dn|U72wfdH_^e_AZW$@_ArQ^v`g&9P6$4I7(=Y4y=1aXD$SOqt*uRgn zrzOAvv-Guk*yNEA%}<+}6%GZptJzllVko}d_u1@pJ2K^CdsR+~m38H%bm=J8F9Mtb z-!!YeZOt*Saf*oe;#@*AtYA#aJih zN7|YnE)h9Dthizv(eWF(#H=JPI zv-I<;s(a#JSh|go<6fgemF9f6lgdy}T|$PlKW){yhZuD#g5!m6nuLx z1T7$c*2KmT_2ylV_3`VjHDY|ePN)o+jxYz#C#uDfBj-8$OLufyWu>E)w@TbVnGH6E?fzqpCBr?4q$RpohggPv9QR@Lpwv&hGNzcr4# zx%Ix?@y<}MPppwSUaznO3uIb{%e#Um+1l7H*|d!p*6BTXRSi2}z0z{Eh(h3GNB>uw zOJy6?OyW!i%`fso~C^STnsMpYZr#}$psxL#aJUmpMZ>l;B& zn|&eSI-c3sQ=-i|ihL?w7YNIZwiw^eUVFJ!=(VflO81neo)gi~hl;HCIF+|9%Y{X> z+>?DYj90p4ES=EjD#aR=;1NblBIp_Akp%eq(`h!1x0^m#4@AoO6p6X)dZwR;UBP-j z>6~`o*7YA%c3iqzhJ%L3pJ9asZ^=l%hR!2Y3l)61@TsnM#kYawz8R+yBP6$2Gws@i z`Rw+|uzuXX_3ZbqKE)S~wPWoTNev}$I&_C|=#%Ux|!-C4|d^k^ZhrSO89&!cQxdj};qP8>J$7%wqkAYt*8{(15a!`~QYzOLU*Ep!*un0fe-+cH6EPGq@P$Jgm=`z{M6|v#9ykmwIY#%2|=*h$+9QSF$Se+M8T!Go0g@N59v%W)xoDfNeax;<*Q`E5j$TalgG?2qP))RVJh4R>VtN2Vo^D>!w!lbMTDmltE{kq<1-wVUimu{`R zLqOl<+xC2DwAGY%f+eo=M$WgysHQWg`|^eT+OJ%{lZM>SJudvy<_*5k=w9wv@Ub9R zMzw;z2Ul4#qH67119-He9%1L>iU)@)>uD`@ct~*V*Wt44{^T7$m3A1MP zv)SKIDO=y(u+LZV7ejE;$QK^0yGNS(kLun_{ng`=WlTW|LyNgp1eS&FYL$NT+AWa3 z)6dJa@fgc*WgK6o}=-Xj0t(Wj& z1!J|}#Ki872y0N{T%>vcT6Of;{=pL;%`T?2=wS5CPYbf@obnDEhkniK(ei44w%jOi zFiIlAV)YsA`bUPk69o-+U%-#&(z2a|j#Mcw+T-W#6={5SY<$hCue*!Wn2HWCA!x`cEw=!@d%7uLCCT~zTR+&b>scT;K2R;n@gjsgdpw(B4Yn267ilO zJR$Nx{%!Yb>(0VM>?Y~}V7~SErcnurUEl4D9y;kX>g>(3w~ce`iKtWg#c=LjoA8zT zul{w`*0+4#zL&pIBA5I4^_ZT{t&$rhH$yOa{rk=*6&7$a8SFGR6TTYn@GN1Ydx_j5 z!TZfz2}e$yqdmC7$E_2+HuZ8tKf@c`7z2vmN7mn{`rv<2q35G@c_Fl~V~#;4w2If|GTjl%MKZI@2h4++enKYY+V*f@ZxYMaaC0Jg+f`0`zs+qNuS49>FIcN^I3y z=6CfiywLn`FI%X0_hTa@2dv9k>Er$Nv0e2y`PM*V)GvHmEw#<6==w%I%Y+?lzZkgq zKI3IY74ANX=+tb;JsDpwm63GmD7q!gvC1>CL{j{#rbqsd669B;z{DB7fU&`GzHgD} z?+q2#mE@z&mS0DH?NNKA)v+@b)ntYH=4h35^JQ{D*+Ezdso|@lkMnha{%`%*i?5&z>oJk-Uhv@V8--6ASUcq% z0+OF>G*~I3jD!FD)b4$(&dmM%gvGT%NyPYXyV(dxLNv|v1bG6DTdHW6LZW}$trA6E-oT)l5j5|wiFWVa5c&2Qm zM(=zKTg#?rtGiCrEgxDgw{7Lp%i_Z!m)=bNbn?Yd{5bQAA?D-YFy^_4-wui19gLs7 zS4EdX*zC}v-n&}I*PQ*?@QdML?NP}$T&*wqCt)L;_cK*-}FRl(bP1H z{Pjln_}3)ZA&>B;E+fi>mn}MM*K3>N9}nydom6a}k*Xg8*9QOE`rkjc1&HqXAJS6O z>wnTPaQ~0YpZtG+&-FjJ{#P*X`5%jxFfX2G{cp+A#Z1ckfFgImA!$lXRYd#U%`Ch2TJJ(BDNPkCt`0Zl#vWN7XYAU|ZezFHit-zmiKn|F-D zkKZ=FXt607v{JX($01kBy54`+>eeELG0Kq`pWaA$@;u8;^L%TZ^oyZ-m1bz=K^;9!CG~-e&o-y33Bz*S?)pit^RRfAP*ii{ zCl_KxfuC9Orn^GMRza_VuHQI`bd#20y|m|2kDISIa^*Le>-jUw_D3vTee0eei!bfjc3?xOW)Yj~BmG1QnKC zQH;9ct)_5gWw-m?-L)l&LtRN_IPnK~!MK$n`vg`MoRug%%rJVI@C>DpxWb~?Qdr#f z^l8uMTPoeo>0NeFuwHy<-JYvEH(hP(u!`cYI@t3j$~IRE{Avt56XfiUTD}-eWYNh` zKQ&~DjgjrU_z!5AfyI-p$BT2+47PS43;Rz122y^Km{oXk$eR1NQRIi~NDj}Q}-N`7*6f8yPSx*c*ib2MeUeA^!F zgQjF#N-GGjd{ZFkhB?n9ocQfHqu#c*%=nK_yTtl3;(T91t0!HVT&mu1VjdVO6>2^` zGw9U6$HD99Ph>5&!}i-3&oX)UktrSFW6+UVjM{#eH{S8I7dzZW)F6(Bnu~3YExaV$;tY`|R|MH9UOHKKq6DyDYVsPHZ()_{l z%q83>R;5!l{a!=A7@pcD$i_C9Wd!;=Z+Olc{%*o`pKzjU`HO?sf_f^}>3%BJIuRd< zbM89s@I+JJCBVkl<3e9x7TWPi_TqQ-7ePpd`#jJbAywbX8)b)e+#nskN4H94YYL8cz{NQUVQd0MIQP`dC zg|zQ!Dy~?5qLt(DxlLU0w>ffeI*99h$IwMYBwsxbECw z$u0g5QO)d^g9SI->UyiZm8BXdeO_^~9~5^v>lrHhljirFn@hjMw^hd`lzlY1@F8Yz zjsYh6$WGY!29)8wjWwPfwxNSgdV-9ln9Zw(xOZ{6X43!tzE;-;Uv|aE zPB~Y6QT->%e|U$w1R$e-6x$#!?d20KS#)G?@v{!MYZF7#;TFYl`ZuylA`l-&s=B>8 zxH&f6$SXG&8E8_}>@Ct!Ih+3I{u8d#Rm-${!u_6icKV&rT6FtiiDB#3XTpvW>?1OH zEzm1c0&XP{=6;eMp2yp<@bd?|?my4jab_FAps;SN*F;u_wolY7V>U-k`p@*cEw%0Htz`_{uk0S*~c-51(>$&l)oap zN5jeRfTf#y>~7XHgJvzbr6H?-l*rM09Smvx0r9csj@B|xUM_3R%vXzjqC>?X5q@n#r%CpY<4gNQupV@Y762B@`uVKGimtlgx)HlC%+fxm=PG{z5 zt3@6W#N27WYs@!v=GnF9K}BUKtsC+Cd-v}-mqh*EQbD!7-PvFOSU>QgeK$cWEELrjDmNO3{^j zWm7f#vS+5ZgTLF~(BGjOd$l0dD^<3b;M8#4sLQ%|yoK>=b+sMqi8{Xu#p^G94`%;j zaK!Eq|Zr6&; z2Pfj(i@5o16j$9JzSVqs66^4n*lxL@;TS<>|PaStJ3{w_O(h0FH{10E%+L^1xkz42!zGr1>aDf zNvuOIZ3*W>_`Wco?`t^RE0U;RZ(g^h!L8Y2`<^0c&hLpPKAX4oJT(!vjZSkOON!R& zX2;lXdziz8-BposvO#z9?y4*NS%-VHJM@d!xLXusRsAciYl_DUgs#P@9Tr%63@Ltp zNPORlrwJB{*5SsLU!pr~KGYT+&p&XrFVOd5vK@P4Y$Bt@SX!CQj!ykZ2ksc?X0Y(q+ARExZk9Z7q?foa5}86n|13wH1Ndx+FU4!HvSg0u7{W8T-2v zfrPjrz66E!YL7f26O3gOA*jTyeQA!Kf*!f6w@P_)|Bye_Ycl@uQ;~QwXEV1Amzsmz zqNmqd_A7>Ut9JABhKE1mMe0>{ckHleNiP}{lg6$K^(fgK@8+F~;xZTEx_pS^LZHJ- zT~Wh|(obv+ToW6Jk zm}R`{{1Md8oV%4h+e|FtZfsq9+P|krZgfm^x8}!)xVtu1UOyVYz;tn?uXpATHe;EF z>_qxo9%XE}Pc_XpPbWjo z&wcQG@JMh>|B>6F&>Qt;F~>?@wd?1mNMG}I5+H?1LJbzbTo%s*_`|s@0{3zKj^Thh~I(q#3Z#^|F!uEW`=AItV%xMKo z=fVurIikY0)J>|yR?nHkr2cUF?iw9U^OLS85{vZQ_+G3D&t3JPwQFbWq8rlJBOkmU zJ-q|2e*0*!TxZFixTsF~&&bh8&!i~Kz{V8b{W>*LPj9Q#D>ys|gv1w*9k*&zX2^7i zkB)mKEzFLni`w%x-_JWdm+N)*Pr<$Er?ki~CfykpOu>lW%U7_M;D;cL3k;90=| z$FUf>7(aPp87E-G#6Zh!CDmj0-D%}yeH=UMoDZwvl2WgUD7B3b4H2-txi=yRulMY0 zG|S3>y=qHXb*A%XZ)t1trC8|1mdycekN2~44H=KFf%w;yRPXoN5Vvd0VNB~*!{FOU zMV)t!j4!aCIG?Z9iy7PKW+-2Bo$y)aC|}rdIm1ej{Sb~*%vpB z5j%0_$_RV8CT`c=do%OgVhDUWD(;!q!=_h#eD9Xs_(8eP=k3hzl`}D(b}Q|v+^k~~^@^#Ubte$R7wjwEbYBB!mcXYi z$bHqI>K8+PN-by8zWjUgw`=E&vDu+$hEuj+^$TH)dAT#emz~` zCIfbiO)n%Gt_|<+&wFrDs08=gI4_k~Bj)i3*?`)DG`Aetrwt)jv{*yxRvV&zAWw$J z`ZnK9dpP*=89Ovs zzt8I@+v*L!7<%nw)(w4SZR~9R@VLb`UH#aq;A`tbd#|3A&N>+n@nJp5+$ z3~f4-`TW{RC~mXBrUe%@{eK^6*=bL;?1A(Ot_)_%Lb9%PEp7=U3w`| z)^cGPU!6^=j^%Z^r5hcpd6a;u;!Z|NagInHzb|B9`|@eQ?(FD9`lilS7C7f=qiqA6m&IX)d6n!xu zXmIVdnhAsU!$OA542)mn7vCbE;i3I`YH~8qNgz&-U)$9DxPRq#vI^xC!zIzq#MQF< zFK-{4D*PYaLONsp4~?=Hw?bkZ#8nY!aT6>WDdz6%{;y~QT;(I?b)A3zr=%1N{Qge{ zD3pat$^zvQ(lSt~KkI*g$ECCj5HgFnkPr(*2m(qUqJ@LIA-%CUSD*we+@qteX<({J z{$=Kj!b9*_PaFaXaYUh!5b&p`y$cdSfDo_{f-@3=L3%^fOf?{A6atCCBY`qF0jy^4 ziE%(99Y8GJD1tLk4ivh>5w37201bu+OGHU-QHcxM8^T|r#jkkO~6$>4e4kLLfwe63ZxTCYRX(CQhmgAi<%WoCy$!`qZreLJ$Ij zLZwAvPzfkWDa?=vXABmNbwVKlzM85+bT9}phyapet6rgK>&blEn1UyX+`m=xtiCh6MA&5B!<>3i{I)Ih~Rwh57JXi4o zoG+e$Lt&iAMdHN&yW_9~z@;D^AbfT>08GaLVD}u{rbvJi(6mU@IRKQQ98pNz+$P-N z03RUaRv>&Rhp8txB*7Dhfp}r3%E+yI+5?P&IC^3b1W@tp>=0NC0Pl$)2=I}}5hPY5 z^_QrapvMv2NhTJe3=tr;CkWxA&<|D%r0RtR(h-FL`f2Y=i>rzd5}m)*S#p==W9ghu zIUxxqM9Ku__JxdNc9;IW^h1nrSRYW)0rxkTuz#p`c6J1;DX|)z?#*b8(#1fQ|MaN* z_gysOKO||8|5wC-^x{8hY1o|jPew}iPyWZh<@yu<{fYnnZwDju#D6n<(?1^rl9Byp z97wMH|8p!zX2JaNAT>AX#DrvkegDxB!PEq^2@!>Sue=<&-!b3AwoT@Q9UYyad zzYud#aehwRMV}FWEq0uul5YI?H}_|5EIF6Ze}6nVqs9O0F(s||Ptym1bO(F>F9-nX z#D6fTtn}RYPeuy*C;t08u0QeLpZM?pb^t;h|IPAE|5N}tg^5;`tufn{ko z_zL(5HQHmQ`RgxU23JZ|0NAwz69ZF*bv%+9=8oQB$(JhXI!AtaB`~rB&z8Gu?*kaj zG6eoH28FM(0tz<}H1`tJaY#7P6`7&jkPH$~aS0i5322kkxh9~-7O;jX){)>1jKmDY zO$rb#z>R}m5D!r|mG&s=m0@6DI-{eZYUYzVY^54*ZO&#e219ja9Az&zt~|BPNU`@( z(5a|R?v0uqWs)A50{qST=fxZe+`O7ulZyjvnQgT^E@*`139E*cnloG3FzZ@f8jgtT z^BJwEdCT|uThwc$(T#2QmW&yUD35lH9(4(gZ-cB5%lRPHC+&zx8_P+J4@$E8CQr4ercQ2m7Ce}^7B^J0k89Oa z4*T*OmG2&@T|97deO(S=H|FQ6*0r#T4oCCBIzI7Tdk!Wf{5aIt2w!rg{nwh<P`u44e?K!deSoWp6@W`u^y-~Z!yi}zJ2~pw!>Z>=geUBtt~uXqmrc@E}e0BYf`*8 zW#rZIh8iP@Eee-2PL8|_ijiLN^Tfm9Fpc9$8h)@lT>T0#wy!S5s##8}x~lWSB7Q73KDLhbDeY>{m;!IvFy55v**2mNfc4v*m;y6Pg?^gZ;2%h?Aj+Yza#ZJkO*xlfh z8yR?O--iiX_VC7+JhKGcU`S*QHnzrA#9X1z+;o$#@$vBE5btxU&7a0Oa@q)bmW|`c z>J6vTwQ%=@>RKOWL4L#vp8Xu7xTd}Nv)p3==B+n7jtBm9^k2NUU;n11IbYSW_j@mY z%2{ch*V3}(=e`U@sY+{3Uv48R#U$HkU#5TtjNOK>N=@-UKcAM2gvq2P z)Kr|67OpWm!Tz+xISkFlxq@f^4cA050k?1o;~ev9(F+1zPn2CsAAZL}M;DpHo`vZ( zd=9y{M+Cu_f994eqVdWd9xVR&`W*Ig3F{zyOE1iKg3HwYZSjEDD+a-!M%7zP%R3?l zf~4Ez2zv)(FN7y>2#I~DIQO;jMD5j_lN>x^4|*qIQJRTj6(a~4+c8{wM#ZjfZ)|(4 zwkPw|rAarodvB~=!Q*aWUw%@_p#Y|UEAMlUi5VPp$v!QGk{K&Fp5v7AJg>V?OEXE$ zrf_F$z7nIAOZ&^qQJkZvPm7&bvxzz#@UC6P`t(!n7zW-$KJiDDpP4` zRup%hO)sTa;;2V`^X(@Z>=B8b$xkKr+7~r{s`^gYShFHEqP{V{C$dwgJR|l}M0}3e zdXC5&efC;{eIa>gU~%S2gI$muOc#=YTj_X&hIR0>FQFp$)Fsv%vBb;hA-^PEjqD6* z)ZC{%uFrl;T2d&M*MyJ5`6;>|xwlg0gqp&T#hsLZr4gG7nKxcoHGwsAC*&+%A$;0< zkA=RB7l$TCzswm&(-2I3aFijp>m|KWHcsEN-8Vf{^gV~`o>y&ro-4$1i_=$$>(YTf z*i+F19v0|J)`-D!fpUR0j8cllHv7BqgcI7P!XI_-vW{DNGaJR-G#R|{(OA7&qwB!P z-X;1sYID2K2&?ahXtUs|2WsusEY_Fz~e?ozFGml@ZUr5fx6 z!i$)@{60M!t47(fC*N-ggqMX6E>gd!;M%f}KZt+3O8JVFGRqEZIizwGE$6V$$E-0^ z`C@j%`8q{80WS&LbX0kUu;JZXp3FVp9N+nwWw5+bxU6yY?n<-P3yBfM4;3>q#}&%o znI_2{%s+kTjghxgakUS-ba3<#N7U7{)aFJN@2@bQ;q?dQKfj3f@xEKc*K@U9JOKAI zv>?y>4Yu#l(&lE&n%P(MuJ?-i6MlLlm<{K^F-b?$KqFu6K+u0;JpBLdq7(nwqk$>S zea{#pO|Tdsd1{`*Vqh#%n9bajmail2v(YwO?V!0)4$lzgCQ%5!da17{gnAD6~ge)i&+To`IcFpRObN zaaOm#T>I|O^W9X}*5TQzjR|VVyYgEs-b^;H7s)8A-(kMmeM>;?$r?8g$E@n)*RS7t zcwwIgHB|WCJbJ(U*(>9%UpJnJ3m*;QDjeW*T+c(0I_D~fO0N6%;R9Rp!7y&AirpgS zIu|WDq<42V_By}|U#wnQSFazV0n3b*^Xht@hq-z#c?n-@XqeF{$U)8L^8I)9>?=QB zxKfHa0kvd3D}jAH?v>N^^TVr_!Ol(5Zco_^7rxGp$><>iaSm+lIiRnC}sSE!_7 zcGMEMF6J%8#=kawp&Qa!_^8?_B5bLvivGljJqG$?lCG3XtQRbz#WwEQpZ$32U5lZ`>{9M$9$tBWZz9g+*d6BTw^8qVUhIzRqg&1E{kNgtOIKvO74YcY)PxT#hRvGkRYUyn^p|H-`H@fw}o zE4L}1g6)KUYAtwZAAuO)6keIQH|xuyPZDpnD>DM}SD?-g88xI97FyYF(EVy-`DMim z%Xn{b`?SQ$_z8{=Z7^9Ssl885K||hWn{VUk51KI2>P#&)*zj;g8vc#u!=Me;_Fedc z!fdBLH=9EU_4bTM6D=g4eepgymIT=ywMG7?V8F8NKeh>+8m@8yP2)d0+|l;`qIe`6 zhj9KE3<31M|B#fN^Zf@f`JSelhguVKE6cAW9F*sO9%*T!N<&e@YAMnjMk^r$sI-xMiJfju2c_1hU zWgbgueW<>>I?@@X?T15}`WcuZ{9F<84m`VdLX>m6a7Cejy+Zg^5eRL?vVu zBw-3rDCG+-9-uXxgQJ3ph8DRk;FmJbjQ8%|l44k#lemPuygY~l1``Eph~j-Q1h|hV z2G2{upn=3Aa46DybMQCZ9_vX^=Ha1q!OeXNEe20!6Zn$e2ktH|AqEwnQBhxi;i_(K zQ?>B~6Qtw9wee=Y?#QXnSApuhAh5dvacITj%&=HAg^NbcSOOOBjCBVGPl!Gofx>{l ziS_mM6?8Cw#b6Lf9Svn3phOIXa!`tkzZj*!I!wb#(}V?8fdq}jp}dd|S~&2N7_iFG z>Bgr4w-kJuzvGDi6^_-%B8Ar6+*O3j* zk2HkcY1ta}QR%tUc{cCKdawB1*DlpW@~J7k(f#bx-qVu!^X$c)?RUSeJk{Z{c)iyJ zgMz-~4%hWBuZ|vh9?h_r;asiSA^)BqwxGlLGlBf=i_ZM-@A&=$nE(Cx{^LJ&%`^WK z1MXRg^S>x{?ez@*Bj0~4ikv409#K}bra=e{+W2#ki{nz>pA2wS zZLYc}Axv$@F`8`Ge6$&tFPGR0g;X(UC+rpKzW5}}r1i?`C2uFXa&&l?Ec$94`)zEb zYux)~1wLNL=-iz{$2aeEs^ecr2#>5bT%9oVR_wNBpwnh)q{YdCz;&7Dm)_lJ^CC4n z)Attc!P&O3H|`cN?XmSi`_N-%1CMbRNBx@F`<2yPa(UB(iWqg{Pj2b zC^UG)qF00sL~K2vU8dhJqvu)e6s&o}F=_k3fZ;3QNoRDg`XSdp=HBR85!!p{N<_Aj z^9QEaJUq|t?@8OSSuVS1lccRcy5Iq+@>3sU`*-@Bl@0eTndtX9y2;5mPf6~pKAUxHjy`2uz9w+}1AbJ}fpFZftWdob(F7X?M;KTh7} z4)?D2d4Ti1HNKH~AW5?FxYpB^FIwdHiT9XjG^*QtkR9MLKdBq(D6t`{5m}HEF|@X? zn7v{tPR?hkj%~y#<{^*Z9iP2!t!&+`TH;y?fByN@^5U5M=m&`jk)}sFR`S-Vr1+N)9olxZQvaG!vb@y=J=YC(mJuUIjwn}{COr^C zPHZ?i>d9}X@j_p96=S`BXN+?q)4mn!@`~r`x#ha%KEF!PL3zV_ zvL}vhb7H7g+WIStfoIvdgXkc++aCDf0hy+p>&Y1Z+uux>#vcZ{Xy&Y^@wXS?K!}{30MSc^Qt4~Zz z)6Fk?%fXkizS7+IxZ_ofbI#EX7;Q<$N) zK6M`hzOKTXT>Uia_<9*{0avqIXU0`{Ka6riL2h7yX)6&)%e}Jd2PbRe;o=l zT5J=>Wy;LbQM=+vNL_9ClaQ)fy(b~hA2q!~Yh4t7`gG+1wVD}y=B)YWYw;)CN4t3mxw9aa;2@IY5r7pi&Z zp_hlp(&d6Y@|H{@!6KD+AP#7Bu#nnP28Ji5d$UvDuX+oLo66rW5dR^ZkqB2&tfS+< zdHxTTmZqBjOG-=svH!p0`Um1aHM0HZ<>h5(X9H0HYe1C0-N|V1UubA(KtOch~LOpOeyML*(xU4~hBeeK&Kh(XuLowbsVr=LO9UeqdDPUnQc%>AM5u@&Dx@i@yE; z+vk5!*?HFgB>vd{-*WwP^FP4;cL?kNW^#Z@1MYy8l@)LY5fKr9wX3SB9zA*#@Cd*p z53qbOF;T!T0QW@KU;s=O0T2U2LsA7-S67nP0BYW=ssd2mjBc)Bn414d&bjI&CB2g+ z0k;B%5y|6FY%RmT+fPJM{KN~^O32C(_|<$(e&!-Y-(Mx~xNTDfKi@tOi^Ux?`BgEj z>s7NT?fPNO4Nt7}9CW%amO&OJ-cD~x$yt(;=P)U`=>YTje5un$#{;W3y}fBDTzx-i znZlbs$D8=oU$k!Qi(d6bP5DZq%qz*}YkPOBc+Xw5()G%Kg0o%M3vo{xklC{`$|qfBct)&dvWID=GUY{{LI9f5QG-T3Q}Fcu-tioSU1Q zbMYc+ktaAfn6#>6YHF&drw6zLQlYP}FWL<~RSq}^QBhGb@K22RC&tag&B?*JdiCn1 zOP2wSL@4QiG?DCo-HdCVIN@Dz{9cBCxBVX@+kZpNhIQm}1rtsQDn<|Y`*eJ`Z?ww*Do!*`@vY6rQ9cS z{Ko^y2IH*tH>8$7Ej!LxpHuUY`%vzf-fNB!p_dgQS5`Wfz|CURfn9ah)7?d@{TnDfS)9DN_ z5R&A{iAAPUSHJ+7i9l4%&9n_oOu;lQQ#mR~O5=$letSav_=T9MLc|dps8HNkBrlQEu*79086YC_)fu zl)D0$YK9;n;qC*O@h3R+njYYUBLMS9a!7c-kzyrV) zDMGwZ02fhc6alD8;w_DKX37PHA$E(5IuMjSIlGGkK!zLm-4D9)*Dz z0!ZNy8$k4+dbyz?^S4E&SAw5DIWx%s^Sn$|nXO)aBq(o`1HqZX<0-)qe-W_mB$*){ zNt~iqEI_#Ka0HQCz;j0w8sNQxD%#x{E?`J{pbRA{4$&Zp$<^Sb6ldz5$iH9`fZHS> zMS&iInU5Sm>3ZVuSU_qHNJqFQnlMYjDXoE@mHb{4V0B^>cw&+zQd~;m7x;O~Olgz( zOVnEw#(}6~qVnM7?gQ|{3yE_?W4))<#~zMwb;4l*KLpr}J22*h`b)l@B32)TM}W!) zxURoIvmtmwD%^L9R6v+cNP;MqR6MUMm`AJ&r~rw&|392IG2s{%5CYPhs0D6V2b7~P zDY+Lwi5pUc=p6`<`8q zp&6ito;W1A7%FM!4DcTf%D@f}1ft+<3aF*y=0vtfaz$C`?IaI96Dgc{ZFfYFf5V8^ zcF+K3RwEaa2~sEdS!GA!HBAwv94cYwh=x-WLU}%$5=!Y5DU^b_w9F|d6GP!4QU?4t zO$?q@Alv3Hz-ccTjoWYH$C$u>-RYiI>SEi970RBsWoS7<;lmY+E;Lg+&7*bA> z$P8k+CJu+iDLWz^C6F`BiBw9HBGO~|S=5lq5Dri{6y(mVpHo!KDkW1ucH$JqPSHRq zr)5A>&$nY|7f3=Ws7;;W4p?t0%;aKPh$)XLc*(y3w16)}xPtRFa*-V1m#~hGKp<#_ zbtjjJP8aS0MwpqUGkw}LhN*OU!0-VK;utVm0)sa=5L5k?u$eUY0fQbfbaaHfq0qo+ zP0It%jxa%&ONp$=c&Jg5>r&N3Vcb0lA~ON-NHh>Z&ng1L1voI{pH*n@Ngxn|i+_OR zxnziv16}|dCH4lxdSKK?IY4+xDljt`QGoE0+ycZChZZ0&#R1storqdtCo647dTu8L z^#P&*P)!6O(olZlA1Qnh1p*!fsAvE(k|U-;6Py^3FHq5$IJEo)+DQW-HSJTwpC~x| zfxRHrw3GNNoggyWn;Z(+W6=)tlRJO6=7zeY$nq}-yQCpyroK$EbKzQK;;1Uk&t1~k zHix^U@spanM0W@>l~e&>suXRe&SD}d%$epiX#}OPbvB)3BbigE08Fx6=YK+s%SiKr zIp}H3E@!st433+0*i2oAipevokO~~J2v0m6ywr85@Di)cFFH~{Fh_KxaAN_{kt+NX zq9cv?^DuF?;K)S^r2qRoqvIABymw@$~XRNxkx5+78@yL zRO&zVfLi;1i^b$INMVXMQ|mO8TK|eU`;$M`rANV3RnW0e)(FL9X)F@Tf~$n{ zy34?M*8k|mMDtan4vMB16Q}8ul%_$Tq_p6yl{})>&+(N1+Vw`ts+(1*CQ`X&E1w6v+r_MCa43{;M$0;P$@=@$8Uq2A_TpGihOF0nDT*g@TtV zj{D19A+3Kb&>(r({g>mN9y()oBa!`c1SR!J_As#VZLD67}tNjWo& zLlglA;u%p1(K+IuUhIZ~%i4kS03c~Wh=P_y1By0~B#b5yo;H+}9Bn9?Kr&LafxKx# z$w6sC(FT&I%?b={C^%e8lnsI2`bD-gI;e z6!iQ+^c0IGBt5O72}oC^XhYJ`C)$AYl!+!JJx!v`Sh{LN1N66ah&C*8q0W+3h$i%c z>L;@hr(l3s7wog_0_?&Qufu&9Lm0vsbl)7B~&bOD}`p=om*23vq2b_*I(}AXE(hGyrvuiqRr)%5`!T*+p(?Re% zX1*|r->~(C5&V|HFM#5At)4y#x~5Mb1zr26kAkifm>&h{=tR1D2_=~YJ@^HCqEZX!KPbETKtvr-a3?x?PX&wg0beV)(ouCP zFbvWgJWX$5<)(rn^M#I5Q-R@~JslmZ8U4SoSsm>3&AZO&~=M3HxML@t82-e7wqynUTBuvK{QNe-VmCs!S zrFKEoU^vu5jmgZ<7C>PaFf6jOp@ITGmR&#u7%~638hc|jQH$T+E z4a(EtjVscZuE|jW5no2xd!lI%`xL9A0>vXxcsv%jfDolqF7Ha;pKAksr2=)Ogv0t2@+(K9?MAY#S|dNxM|1t>BaNt=OWqoV?w+TKpj=4e4K zFlI^6;EFp6Lw|xhKNx+BqXr}GIHLW|ZSM5N9qzeMs7!u+L^V@GB3*&Gp%1<32MtJf z9MX&Kd$xHY!L4-kUb4*#2o92T6@~&TE(Dnc?1;kQ2@n(>;(!E52akbw5P^Vvo2Lmd zKRFWaFzZ$M3?#ov!HmHjOWUaAX^02uf?UW6O3;vv7Zwf74HvYJsdsv`VCl|-=21bc zHVc_WBSqGs7OHXg9!0h1!0=PFGN>6WTLQ2q6T$+$DdRjvhQj(tP zP(dP4I0PEGV9*97kE8R!EgXH3WkL&h;Yf-s8Ct+oZdW>A%%q7@q!X{e|HdS`S;8gY@Q>vJ111?i5pgVfHN?&rkwM8qjz* zI2ujQ_J}xW0{@NyE{x%KtdJT5-oq1)`;88ejc{QE3wMHKgbQQ%okcm}+5FBxvBPAFkZG8l$QE1X&h1(0!~ZdgB2(x>^NB(xwPY5zWvUQutPy(@}9sROrQ)%I+3wFmIuq3S8!m_caAsZ4bZSjzv)0Gg- zYV@A})s9h%%ASU(NWcq7i%b(;fzhrazM^o8A2l))pR{D{-q@6 z!H~+4)B9IsL0y=YZ-$tSMpPOspGrtG7bkuOPW*4+BsmYdXpu9}BB#)jF%hwnJsk-T zC2!8$3^}urde1=WJugxcJ%0r!ekP@ODpE79cvPTj-B&G+48MtQ>jHjYl zekN-9x#Z7gG?gmMM2-22sAuQ}72cWbz)-P+8ZWgNiMLcf$&{G3;lJJ~O?QLJE8(Xe zk<)<9?{Oeg9tKcIibGcbH-(aB7!cwyt)%tJ*(_8=03n0}*q#4o4o>xA76ZXOewyNz zz!YB;qJ{E-z%jtc3~~-)@96}T@k+@^NK-fspJK$E9BYAd9?$wUod<)W-|koxxC2{p zzCnZ>R)`W+nrPkN8Uk=juN5>(blwzpzenBN-SnaqHvpZJhV3^x3Wrc5{QIfBLiNWT#2f02)TttZJe0AW!uQ+#j|4oG=lRd2& z)FBC#rvRD*%ng{v68^j0?aYo)Ib8V6Ue2#Lb5a=syjo72;(+P(;Kb(pu zB=L(FdLl6Sq>iQxIa%p!+317yY0Cuq ze_keF2dHF05=1#qMNt$1Fzl(?3ecH!fIldvH>b_z`h2rpwiu`Okp&V&d%rfXQtyNt0XxRCZ#)@H#^MiRKatD5F!X1jdB8N1N|YEO$`y# zLkTg9E*eSpMXrmIydF$%m0#((EpimT|EdwC{8vMH#h; z$gx1*T#*nQKm{?$F4!6fBLbmd#UPO+w`Y%pfH{kukvJsS2&n;jO-W5PMV0{&LW3Xc z;sIQM_5x@@{6J%96oCND9NfSo;YkfscLYBNy(9(w{KQaKmnByRRG&-^ann7Sra9U& z0~I|Ua7%b6r zAb3xA&<7ChiJ0ARO6f&F0|vi6qo9G<`%Wcc2DFb@dzQnRS52nXm)IT|y8vF0rtwpv z@A;WHOVkTgn=KpK74h>wpQEe`%m(Ps0BH6Qz(|tUOmOnj2sQkI+CH=VH?)st_4$o- zR;&KACP071G-f~fT{7nfSb)%(35h7f-~zP%dt02=e_%ku&(issS@kJ4Dmz!~cyfZ$ zDJz?$CRF3SsF>tbyL0Cia|a#;1>*YvV%8hL*7pTHC2U5@G_X*RUkQlyD#&jrj_B?#{u>)j`)3>4o z6cA?E6FpsNBUfDa|VD4VHq60_F1XZS+86ybrX?>ylTr8$Y;N2M?$&nMlwl-!-OY=%ZNGgf}) z5#f9WNL&OX3Vr6AL(;m<+-03P>p0ZSlZ+o=6DYo!VLnMI$SY42VNDBX#@7_Ha-vOX z5lG}*L4rC!3a6wgbIji%jH;C6E6LhR)UV&dGskNxOp`$-cb=IK71}wkXDFPJnx&&s zGhRPP&U|AcIYZ-ca3?3?ONaT5oI(mXU7Bwp%@mCSJ>Gw_Hzjp}`fUZNXY*SGwT=eP z1e(5G@ZIY4n-18tD1h%1C-pKNjplH0j1%3~BxWshlcsfZz0(Yvr|}&a(Vei& z?CQ+#ttcH3lbg0L>U#4riWIDpJoW4VR7~bKaZ$Li&>K$r2t-LARL*&Y`#W%OpXsQJ zicK>;RR&A%MM_-`mWI-KK|A$c#LN(*O`~p9yi1NJkTbM}P;z5ML4s zP!?*yHTwDBP#8QoxkgaVKOj|{J(@${?(X0&PdFaJI`9b2>H+0O6a)8y%zr=^ zX>Auq4(t9Od;hl9Mv^TGqkU_hB1=V=BwG>)e5eM4o5EC;*TlvPaP{m3v{oV|kZnn+ zsZ4=soBvt%#k$!0c7NYqFVHWx$05!cnUXMe9VY5(BW1>MM8t@39tBnVG48%x+AWJ% zoJHY;n2P!$vSGbkYiN>6R~K;x*XtZz`R#))8C5y z7Oy~3P;Bv0B&98r08bsW6wK%gbcJb4M`825y3!n_+-w~%A`Z;_Mr}>Ou8I3P*A`cE zS{y(V7tL!5KVed;bJT7GGnM5&lm_hBQ?$ z^eitJS`I8bC&l?li*m)zxg_LVW7Ao;EWwd23{u7q9!os?W_l`?K489%_Z&;z6y2^B z;`0vEc@Kjbvy_krFC`xf!tN&+O!`?og3T|Z2BrC{);)VzMI9&}xjRl#$a%=bn>&`- zYl>qkdj89kKN}~HI354t<0hLcMZ@9do@h2XS9P_#>gsB1wYc)*^2#eu3aff6Hv3_k z6%sDSQ4mz9XS0{JK8SlgDOxP_n_9k!?Yc@s082&b6 zS+giAZfEWhd6v``tIt~7#j!;jV}?eiV8A)XXQQimE6#LI* zmz(zfclvq$0#+GsAx0^rJxha8e*)(@fJ>QdhcF{rH|$>E_vB2xO@m=Lh|;A|m|dho z*N_a;i+Gd@1a){3rvc{ty$Z(>M$8h1ioKv3rp-95Hk4yTIJ`!02t+H0730CEA455) zI1Y!|HQ~coL$rn@B@Wc<_X&*xA$5V_2u~wGJN+JDP-0;49>X?!At!PR$1zFW=~Bgd z7_bYbl9@wniE;mx8^!x0_#fy_6a0{zpT{Be{`{YvN?>w0dxYnAUv2NaIoN?WuajPUhLHH-;AOC@&_C85z7P20)~5HD z;!c528&3B!Jw&QORDxmsrMdj9+5Vp1jKc1F40;G3!~k?#bTM-z{p>J8pk)!3*7W!l zKVSH`@BlZ^g8*~rC9sGDVzG&s8A!%)lwt`g1+asq>-AoWch~&%5>;rh;`DQA;Q{QI zjP)0byvsKDHINYtC0&;7OsvpLhSe;HdNDiX1OTS%WHJttt06~nb4PZ|F%tma!XW(P z#^D8|0|^+^JYGC#5mHUGZKL379A{ZH)Z@S&(`<~FdcI4n3?syT%*Ozsw*(vcZgL9y zFF2bFIgf0ogGQ6tc+$;ks*(D_16bJyiwLCVrqu?_=;hz`_Bt?00!Z7k*fw@q^Q~}90RQQID_Tm;WoQIxHyrXI zJdXiIt7DIDB`B|hhy821NzxFVOi&*v7Hnu#L*VGGJ_^U-Kx}r#0VZbQ-wAc?E3X$i zlUsq08`eRj;Wj1?Un7Xc4RgwFGR6_Kj+;6@1;E8NEokzA!u_HjezUQ07Q$-Dt&$B! z#>O;P)weGcUU@)kM5hGPLt`RS&h`z{AY`({2?kO;0%$@2mCyUhX-%9<9_#F95)b^t zYF+OCIPLIIsBO9L;Tn!$o&i5a^N7VW@k-W$eNuym^68ZAde#USSOgDipXb4I1RJ3< zj)2+iMl~K?RW4bp+Ncumi(dwO%Z~9oP$Q#B#!M^z*580SF@7XzX1$URbsP9Cy#N&6 z!*A@|->TLdK@|v}(=d(jmZB*!Dyi2`aN*Cy)E2})a#``%;8|gmb_UB_O~uAW4Sp9F zx;9KQao(a{ecD#Tm){UJg3A5Qm~bry6_jCtOP%BP(&@BUI(xMureVo=#aG0fUJNh0I&|B zakBfuesui_vhyV0Uqs5QxtT`Ub}|^jtN@4BXpqt|Ck(p4W&q{cXF4i5rI@TvZ6>B_ zbv{(Q0dgn)5u%2{$b*)#Z9uCMpOqm}M%)JS!=0#!aeP5b$yY)rpq>B0Z0R&f`mj}# zaW~qJE-(uPUc2K-#NN&NW?+n(Ds;-{I+M4w=wGb#8S17QxXCGJM~sr1H25cqY)&J% z9Dw@5V7tQJlN<=KPl=Zung#*FGY~gs!yfSlRTelI4p>Ngn1_A^{Zem%^j{RD$5|Mo zwNIJ^SCJw-6ulu%+&6Iw>zO+;M?8#^dhqE}@J&rNSy;?Crslxqxx3B9?oefb!{;S< z1m@M4otxzA6A?Uq+t^&h{Wl|07uV#OqJMbriyNX8lB$Pk!1Uc0#fXbR7Ceszn~1Kk zg;w?X68t2DfP3{clG}9-!o@!4f8iR%9}j)fx}`TAB83x7F$L`k@OzU$SqDyF>j9^#28;Y>P5pYlVR+( zOt*!>R0iT8A!Z{K&DeoCJ%CuQ6TtHlv-5=$rz9_kK7`2MO5?UMxm5DVsWE6H4AN25 z1zMqN+yo?R&@a#gF7EObbajE3_4_Cqkr)N$g^VV(Ho+K{3NivFDd6FN=oM}iDj3bB zErrkz_qO+53q}^#GeWE#W_XP$1emI6FeAyd0b&qFU@#PFi=3rl(xhC{=-b5Ja6zJI z2+3!{!VK#qEhg0^&Ji#wq1ru|+vKuqZd;No9T~hR;G#aZn=dTs({J<}fitF_E4{+K zB;pH-7(BcZjPo_d0Pkx^*7*9qnZj{eD7aZ|rIS;DVGaHd|LPWjMqD~RUaPj=ZXN!t ziEwy~VNQ{#gc|*5STm=&8GOGSyud)JFuvtFAn;kZSrefj>E?(wRTKHWv%RBoX7^^{ z*OtqEt&dm!|LQOTObFEW-KYSj$p70aye{~tlZua}#}`SRGC0)5Wxni?|Io@B5&whMq)?FvZ^m>k-0!j}Ii zQw#YTmAgb!58MmxzfV}cfG&XBgYfrZJct|}K$OinM7+UIBWB}~8UYFlMi`!DlFnov z9jdb6p@(xoy0I7c%tOB-Q^$3>1nkm?a8rnveNZn|EaUFXLQT=5xG zYXr{BW`YI7PWfgqDO**l5i)>OD_Dk`R5+@j1eV%qw&7tsJd1}YnGxKp7wV}Abv1zv z8i}HX!q@YhVbPUs9^vG$*ojz`@IQdMc%Mrg*gHf zG!nD@*CYa>1)8%qAk(j(P`oi^5BB6?sX1L*AQAL4k-ri(3Q&+R%+^%g)nsg1T=a*P zo#n8mK0v=Un5U4-TN|^-3#Zm$GQzVJ#{J2-XxC6Z7d8z!8XHK+c=)%CTyPc$!fZ`l z0dDSFf($W{Jo@6K;A0a@SjU$7Kg8|_a9{?L0d0NcZ~7ANMqs|fsL$5f{Q_{RF#6keWFU!hxkf0R6I~M z7BOB)2Ih!>S>ba)?f5%HG14%GZ7dP4nCi6@NJ;ZpNwB%2X;5>f1S%x#0_S8fl4zJL zT?dj@>D3?t7OWSf7o;SF78AW_LMetP z50#lf5x-3UJlC~4b%jIcbt7>1=z0;dO!TkD0ADnglnxv4By z2{0F$T0W14ks#S&pNmnm3^CMFL^)h7PGl`#h-OI9C2+bhZy4Zt?!sj9YjLd5ToKC6 z(I#CdIHu4XH0!m=5R(&VlSgUXDH1`BkY8msKO@^i zlI~&mX3rFCG_`w1jzR=);!YaA=~=BvVq75W$++(wJ|iP%0+K8;&)3yO+`YivD#=V> zz%poK5~mk5Sflp`nx4XwODc}kJ7hUbq`Qy;cyt=WL$TaQw&$rRN#CGm4yUGmTeyrC zl@2TsWE`Quhg)j6=O^bE=J4?o4kb2dVC1<7c|;+iVU-PwTm5-)CPtkzCZ&|Tl{(H9u;N|k)<(2m8Q`i3c z+3L!@{P$~oisZj|SD4yUwp_Wl?Ea0(eV4s*-|w64<>t!j%yQqn8F!g6k)WHBAzIwR zJriYYt0gbG@G=3i7wNBXh%3rEXIvvvA5UnxEJZcbAs5M2bSY_wLB!^yVJ79S=(L5J zVLd8(Yv{PGMpYdib0Q=swtl;%Wp5biSgN_9G}+q_*=BNBhB?5!UDXu3s^9y~_}}B> zzyEiD1Ve25HT1u5+pj#y>3<)$@9+Pw@tIx!OV-jB>J?!C7~>IdCUFFCoY}RwbJa_3 zfDjf1VL{1R1uzC~wu*U`aKJt0XvD)*_}HK_Nbt58&KD3EljYhqiKT9Fs^`L}Q*>nX zBO>~x)*zL#Bved3U{?(9H|+8ChDB*A29sGs-ymrc3G@YVJlHPJ*^up}^?MTPk4QpE zj0r^4@9Ns~$o$&`kWG|y3 zl-L?y1kZc;^{?R=c!Tcd7eaWdyFUi*Gq8o%atJltN^5|&HsLk0f+Q8xS_;jwuot>k zBG7I#6g589i`1bG=T)w3*ZsX8CRan!BuvOgros33Rg4r(iB?j0%h#y$62%!1Gd1)l z5reI>(Sg|7JPfK;quEN1F8UC4C!|q=gE$$Iy@5d*kxZW0uloEj;c`S$kzg|%5c{l1 zBYM*i1>Q&3LFHiuAth82nf7>|L*3qs7*Y+{Wr0QuL4%>{B(cS#ZwRU`H9W6)IA?th zHWh5WeFb$`n~I(dgmO+L=grMjQ)8OsCLTmtR~yy~nh%8sB8ixuuf@o-mMlg>7Y8c5 z$r-+?D_nc+ZD6>A8B;_JCR;htflx40Gwdc~v?w>moyO}}Hk zrf?2jLFR$`=slqc5MUd^FSY*h zhR3#~26wB|D|;$4%Hk3wr;&8U#d=~BC6Kt2mARxN&FG1=Qjt3`88Nfd5HhN<^5?*- z5Mz9ab^v!>L6;E)i6yyRB(O?AINFSkF!D!kE6#j)0J{*|GOaJ}Ij;&uO{>$>p z@)Oto`^nSQ`}i+kV|<5^Y6xdXu40 zvGbnLND8BoP#+K6SR~ktW#*|(qb0)Bj&^a@V48^KIcsZHL=v{EC4F*=mtVn95e36C zp2^nf29I+zv4J`w+$%J2LvAQctJhFLroU8AB1v(#!C*!$?( zz29jhpDZR&G)Q$ZV+{vk6-N*oLeo7Gw5a1oMN;WQ_COjv>I(AA!3HL&NJ9obF$WA? zU|`sw#6^$B#yqApku!o`@#78g!gADhmrQzd+rg!Xcg+QtqGmDn2n8apQ`ijj99Mxu zu<;{)ds25j#XTjl!4qHXGZ_s`P--S{l)Q$Q(%Dy*#Er_!7#MmNA}X8|N*hzL?Tj`Y z`jR2I=-GmUXnY=}?uMN654;j5ktmFZB`Y4cFSSEW5ASNP9rfGM9?*hOzsRk2}6 zRHRhS0|_cy1dDKdj?Rf#n4%5fZ{ANFjH8B;$ZCzn%Q}?8{ZpeVX0RQ--7f1+upM)k zGHA?=(+HqOVT2UAF%b{&d8O+_pE_|uh0N2qgJ(bp*iM=z=z&0oS+=Q;e~q^O#wK-A zXU`GM1_S~dC?jBILZF7&kwVNUN6s^0ZFuD@Nh(riZ8a8lDb*QXox(TPFg7L=;^5;V z)V}dp!9zb(gZo1Yfx1-AB;+GNQ>Q>p<@lQGD%mr(ox@Ci3`2RemB8$Qy@eLvTbqdM zxqIbk@jV63xGV@yVW1l-7WNg=0T4c*e~31Nzqp6`{p2du0097vi8@JzS)JjzoL&#J z@Pn)={}u@qWkW1h^cNPZkzW`5hGZVqqQL7OE?I%HAzG?aK?+>2;E`V|vLwSIWoOBx z6lXX>x!L~~H@i*#mTm1HuJ@xe3A698z5KH`uDdlysEi(;`r0<|{6%V#+$UZkj2u<_&%|&GamAbJ>+sq2(nWLhh+(|w7 z?z`X{-E{7~ir@y-(Mc>{qyfAgR+gdXC?KXFD8-C6*ya@bGA?fzpc{csw<^%BjwGaC zmBbd+g^o;wt-^H@Fg4*yJ$z%+y9K~vlCuO_TtH693oR<*fJ+bNo5Ef_M2^0c42oQU zelExtUUV+x>76m;!umGkCCu}8gurQk&^v-=m%AgrCXUHpJ2Rk|&)oO3ZhP1Ws?(Xa zDwQ^n9Rgh7x?p2d+^VXaZ&wPeBJWo&Xki3Z-M^=;nsPt;s6flGMyRe8{iZye)us&l z7^3c4hKx|QEuTjknr1bnlwX`~iIIql#oQD!?oZLaST6yCGCxMW5p7%142rFgJ!}F| zF|L2kG>d3i(b1hwXEGF2?b0|JBorcDjp^>^AbaynqC_4t!(vcvvcmqNyh+i@h{4~@ zq_j(N%t|V*m;tAI1EKrRm;du4qgHahaB?F+MX>z0)oRr#l|}>m=U`4El@#M(>PVnKE-53L)i^FC1+c(U zvR_e3c$jcF3rz4ZKA*4&Oq|I8Wof;2PjUSbC@$AkP9s(#x0V7CCC}JcVpFMoi^cA0 zN9QkTFaB5j@Yjj|u$;^P`*ig_{=?V#*!UmA2s7mysrZE)QT84i{QK3(F-;|%pexCf6fYzB^5CfcNi$SaGIRHDG5 z9}dqah$QR9+e*)d^v!Q*4BK*;o_*%dPM&#+O`(rj$_be{a$As&h-*HL&~At0oGbe# zbFw7W7C|jtS2ciD+D}HKYwZfbith$xBBGF`m>f#M3A03z4xO7$g7ken3jP^hhGIw1 zkTDJ@4mZSD5)3|Q`kDem2HVg*ppf( z9etm(1?2llt!x5T9~o>R5wOQhfs4YK^Ef5VirgWX6U<0kG1VK58+rCIqMMMnrqTF#)S4wtp!$LSkjrgH7d#;tI%|HV^ehB2&&kFe&8EW81yOW>X`xv zUB-BjC=!rNyvF`ZuuEk)em<48g?mXx`P6u{4h{k_@Q0 zOggoMKAth1fiP&l6lU*u;6qA}0odSubiKy?VbUG8GZ7CC&0HB}0LJ-?HJ!GZCYYY# zJi$41H8nrmg(Mp(JTL4yHcCj^iJK;7%Re2hDxY}=JB0F{UBk^x=?utO#8ng22jsiq z@a2jK8coI{j21dW@7V5?uHEcH>=eXMrTjnHd|>6|LIs^Fcf5EgE(f}yfP07nvJ#wW zqp(Y$?m!u9aYHhss*)Rv3s3kn$lYuuJx-JUrHJ<}<xL6c zaMx&Y0>sJCw6RlR#~cEKt;q679UCf{T{ey=25gvF#&47t*j!i!Jyo$&#o%;^4&d`c zQx;)o`@miHXIcVk_z;F-QSwGi-4wytecv$c#HC$0MXqA?lCj_vbT%ILe!y1rBMgSc zGjd*pJ+~-4*`~|Mc^(h(hIJmYS*rKpVKP$Br$Yj#>A!>I5o5T7!dxLyS+IQYqKY1v zdB9K#BZrot=OR+O?@Aw20pH+B#vyDdY1d6snV&|Vuv}KG+2iP3B>f(F7Afl#DVGq^ z7MY<7b4bY|w0|jmDdvplQ>nwzF~wt8{J{7qoeu_UywqukQV*cq3|?yB0xK-aVVZNu zlJ}S*3og3Uhme^EKJ2`E^FQD19qzpB931Yydh-)(n)bSW`{v#2o&8ta@N~s`y1NUH z9vhE-*xSQL-y4r!Zyo-O%{?`X?eA>;$M(-#`|x6QrNB~2K>z_GE(Vz(RsuUsc;UMj zgkqGq>pbEeo#Kt342!(_OamfeDTGE$YikOWGLO7tC8V<8DyB3Q4lAz5iC##fs7Q%R zu6a$xwFyi9m)Tt;Ket1za^;wl-x7i6pgOM<8! zS!xv31*ZVb_cklSZuUUhtp$~1;F2nf_|GT&XRShn9iTztP%7V6I4*+V@{p9^gboM< z0P9(N-n_)<35whM7Jhy!cs_%-vW=%mZbAQ8@&mURO9uE~t6+gYzk+>@dT59iZ1XUZ zqtN?x{gC7mTzcIsilPIcvCljIHGy*|o2@RfTa2pg783>)qMW&>%zzmL05UtH87e|Z z?;#C8GmwU4*d+z6+MxiRHnh?LaGhJ=vSV*pUPFCM`6TD*&PJV(D~?ydAzWQK3Rxox z8b~I>2tHzt#svS+ZOj1-9^NQH34E1&18#@Wh#I8Oo&9TrD>&0~1S-!rXkqgRrhbG- zxT1T4P2Y#Z$9JEMM#%@CneWr+BD{?AIjGq$jL0A+hH@e#=H~OsK!Vz-FdtM5K9cEh z>}33rR62bX?sr=Z^fSU9wnR;gN8}9&jIHk%9@TIbbuo>S?dneLLUb4i4;7mvC>)=) zpRF*$ZU+?g69=WqR8M|aKM;7{wjYCM`bGOW3(uv@%$z7}#BK(|%x&q0VFfD0YVxM@ zh}KA46_4STlrvdkl((d5?FsNEa0h%0$cGWP0}14;oo@-!YH}lq<)}Bz%JGopd8aZP z0|tf`8G=Hf#1q6Ga&^K~i{(i6#yrTkbfRER{balbwETK-Qx`HnAsZ3ePElxwbU}D5v1hWH>;)7&L z_VUL_9z*vax$?kS&(XBKRd}9!!z?~c3?7!6&T^2vK=1}-%Fo^n(FC)S0di0lDa81> ziNPpY+0tv=PFTtqdot`tsUZ-?$Y)VcaV|_Eo*7AK)!|x%mOkM-b`pl2_>oHD^BaSv zv-S}l9ibWOEjcn-bI*#YnP@_*myGQy+A7|jTS}Z;lZ`st(UkYfZ752XY{asqnPbkz z<}2P^#vJ^6O1*buY4kXA8fpuL{8J?tRqUU<{4p~;>=q$pG_bA0&YEk?S@sLxa1~5E ziaDr~(1hgTsGB3=I2)v$lU7-*Z3O9vyFQ+&iMs`j$ zv^t4;M+7l~SJXnCY<4F0n)D(ak#;9#9Np9luos3H+VweG*>j(qQ zTGe)$=~RJat~T@%aFhg*2W}(C6=zRD+lf;1JOYW z;b`DnJA#f3O2Kcw`!3+GN6RNlwggC1oZ;ZpC*>MVrNklRU>f$LU_+j79T8^^kimzf zGFGUYe1JP~@g-^YTf6zJA${Si&+6;fxcguL_m|)A=JG@R_bqO}qH2ZLpS3OT{QjGI zz~;OF{d@ScZ$N_DEiMs;_OE{j-u3t&eDzz9M)Lc(2J=9h?H*KeQMIX20wi&-VH9H~ z_RSa{vH{Vdt#33;C*w%i{h+ZVB^D>R_jKcEH!sz3PGc%&--5U?X1gXWEy&ahQZ-z@ z7*g7yE=Hn zHJymW$eG5Vt~h84pH^~;EhblotSxtQ%%Pq480}k7*o&&eQ}$>6D5=vMBL;+}g^|Zt zDS^dIaOybh)5$4^TN?2#Y}lA->m~A)kfgIPD-il(ani@}r7)-R9{WP%0LTe$mg|w) zd-Po=u31}q*m=AA?x$C8iu5=Dw|C0!OvM?+W^5UsVVq_Je#CMG5bZL2qxR72W0 z_98eWV~$nDVp6taG;9DHxKpnpK8WmSEZAwk~Fzde* zx_~6T!r;uk-l1i9D-Vk`mj;icAsV+LlZ%b!nD4rwS*zR-FdVwgDmGTd$d%MAJit!) z0e&me@~bl_)MJy=X5M6E%IPbr>px~ThzgFH0|7U?K{$TzId1_)!ld0!f(B__&yg8o zbeCWQPJIQD6Pz|F7Sacg_3A8J*E3%@vA!)a%W?w|OS3>KmKXpZ&heN4VL+b0uM5co zdD>CVSVtm*r(f81%G-HhEAouH0mTbCU#)#KZ7X*(ez-lNVztq>*+R|NtP?lMv8%Vs z7HP`;-UO`Z0(?y7TdGo2775(3bG1YipGRSFd4e5W$75*{pfRoK!a-fTRivT6*;i{C2FPZ`!JX7Z-GlR z5}p@@IzCD66fBdBvJN+<(D>!_dcIM9qDm#p59=5XOEUgAknmzD*So~O|6DV9cM*v~ zQ#SN$$8zPZWlJUFbnonp_LpBO$?b*RjGU5ShbCMc4U8zPCA>UMll~-&tX}*(<1LS; zrbgN@M&OYz%6E3sA33W>8+yt`(l1feEjfKBxu9#XgZvwQ|qCoz^0 z*`7_e1R++S&ryU_bj98aV))jWF??z`hBfR@<26%F1oPx;8V(J63ZBzsz1}cwC|!C|Kz0Kua~N^W`??V< zHymVzF(CAa3Jzwj6Q@Rrb=iDdMQA4OVqvM-2MCjns>w(iojHV0*AXgAv+r z9GM&1tN2oJ0v!@sQ54HA*RH~<2$3qsN)a2bmt2wN!IVA!xJg+4d`;Ne46i`$ss+KZxQk6;JjB|$LKU3F7oJvo&(+GCZkZgZxojVMV5+)^Zjk*anaE8v1pn9YP~#0F|giR$WY#aqg>BQ&%0=tx^n7@5Bw$k%!m9DSpzE)=0sJ^X?VKY>PsX8ra#j;dP z%dzW~OE1u~z`1!~!n9XPH_&rvY_r-L0m{xg;~HA1qibCT*IA8*AxsNe)#poC^!bIk zEwO8KY)T37lbybyww5{!N50~Y$B_s*xzPY>ueTBm%HHrtJ$U8hc}$H!H~9QiUUROTB| zW~On7n)tQZCeBLEQeG-d%V4QTP!$en%_*WsP0${o&{1 zA6A1kSQ(1&*GI3)uwR|8n)W7bRhKY0Uk*aJy`XJup>Epvd}EFLGX{RVbVoxMV}{nY z`w1ragB$jz&fbqd9_$=;wzu9MzT4jsb5h8~F@`XrBpQYh^7tL1epd|khDnfA(Q6pt z3Q%bDVFc$Zmi}nLM>)G2o%@pZNHpy6fl&iS`lEfaKGz0BK;)JzcofKOCsq!c#&zUA zn^fCVqVDWpF8;_Usm8f{Vs2z(TNItJ@>6J^R5#=2EXPoyKjZ94aL)(O{23M)k0HAe z_)oNXLFPBFnvq~MauCq-52_|n1>oOk+mwYxp?E=VHiou!#RV$IJ{*iaBHl z{x;}cs6D{Q4ZzQnF4VkMB)QVPh|orrQx8NOQWQNp(epe+V9-sJx6%-agb55Vr*V>GRrOZg?!;Y^GP$1s(-qs%g=p%;ed=Av3l9KZ)|)}DEd}>5 z*7d<6%oB$xX4Vul%WoH+k-U~V%p&>DFEj`k4tJ}K3La71g`u1mk5qsuw;L?l$=!); z5!CCEgfZ;1N`fk&yfeGPgq>zYQB=YhVNX-b-UkcPFviNjn?rCgq-Cb8yBySLEYjO z7Y9eHC)|3~MgSUT*{eB#`>jR)BK9a?xv2h1aeZ9lMzG@Hx0KDLmI<`fSujE$xpD#C z^|P?-dk2S_XV={LjONlKVG?g;kyZ?@dTFrS;+dD{R&R@0ZdKjjxz#h1>AsmV9$jq~ zmfIA`qo2fe^tln<9+?^0pFCmg&? z2nk1wZBg%#+fAk@kG2tg-`He>O}&@cCiFYg*k}9Q!QtL(X$>lXYu&hv-xQ}TTEu6X zcjUHy*xlRy57E?`ufX>1*1>^UK!F5KVI^k=T{X?u#iXjzEE=#1e>ol=XU75%MONfh zS-ZYY@U=0yJIo*7z1c1urE65}9q5-F;lb;z{lmX^Uhlnp_2a9Z{TWA@4uJf)?g-_^ z_-l?7L5fFbzLBcuUvZ?giRT+8@p)fmjBvI5=iiIArtXQA`Ygbr)&aeJxRy^OBB_b4 za}pC_bHyFZ$NwUJp;#(p^$a{echRbfP+agH1p$aenBY=3vWwGPc|YPcrE@|H*D%Y* z);&qc9G_|{O1_%xXI75*Z|rKwN<`KbDoF#1gn2MImFldQ5fE;@XxJsOsvMYozsxhG z{7mE%ST zbo}sm>C^G>)A7f84W%$GBk~vrwo}pWIRshI3cN)yQa_hyRqIQD?&xs+hE>I1} z^jvegLBWU9YQ<@Z?^zKa?D>ligFf+Xt|qSp0N>V@j*Uy4%)5^tE(OOgHUSFt=f~LS zx0KbQy4dFI14K|9SE;|_>Usc_w=<|b5kdilVDDffdH>f!19~j(HK3mljoT=E z2H>enqr_xiF)K(}N1T(uG$}f@FG3+hIYrrw2=Q89&^w0J{+B^#F|E$4sxNmLQ$0A(Moc#5gsbFxs5$*?e}Ub7OEUjMX)uFr!p&6n{K_x zF9gj})IqZ&pz8uCh=aMML1luHjMIKp5y1u#R4N)G`t=Rp50fjP-o&Lq&FZWfcqOQ_ zPtL*vG?0ogm}ZC;YaF5!2oTC^?d|bxxh4%#~Df_L4&K1Md#IdqD$xYR~BVpPJoJZF-rpzm=gv&v97_Y#j4 zEK_3`G>ox2Q4y2AA?db4voo@xM}Sxiv}FYfp!aq291F82MQ|v@rKMtAN%4RJ8_J5P z{7ZU3H?~Nmt~$^dP)-I~$Xodqnq8G!UELTKY;fDgnT}(@bRG|+?pkWlfT%c%a623h zpA<&MQzhBu7Dvgb=8i^in4}LVdO6*&tV?%^jfbuzYZBQjnoG8rGKP;eY1n3F)j{iqYW`CX4$SwWM`dmO7# zN_^-WD-9az58>_$otrKXd0AXH5DEvOKDMtE_3AxEm12cVEzWUCFa@{Yd3 znr_wF3)Q;TVW^SIfIJego&zJCaqrJf!MQQ=q0D}Ij6h;?2N<5nN7RmBK(QP%)HZRT zVkpTIB#$H%VaG6C1}$iU7w8+(5s_Z3H*10U+vOxw!%pC^-{=XnVyykH4} zy^YZ4u>rgcs(~Zov{I?PtHqu+ebUJa_am;gGBKm@;!QGuzla8D)TelGXXu!KDFV>b zN*JGMH-gDXV1{@s5*^(YF7V+2&p9;m4|xyaZ|2(i9bPrQ_<$T$3{#|K%`9o+mgGeh z8&u^-asUoCkYFXZm%;|c>B>6n2I$`>^$ zO+~7bo$;>c!58{uX|oS2!jY2r3pbBNowzSBwQX@O!od5e8_M=}qxb#ENtn zWIffXXN$Vlo3}vZx-v;C%Md!JpY)@28n-yJCnjdc=St$Ht;!v6kl;v50}5tjzE*qc z%Z^wsg0u9zLWB@a(-5Kil{R>W#r|9}#skW(1QcAKb6}G9dT8Jn+~F00xLef<*$B!L zI?0r^B$~uUJt0$6T4|e8^eJ>ycq0r<1sDpwGzIO;X-$f-or%-{^RcVDkdb4mQNo#o zegqc8c#eJa0L8?7shJBBL4oqIK^UWdvU6Ljpl1m;YF@{zQUVb0^cm?2qe1hMmMN9Q zEnkXcH9{`9w^`OlW7(n%#wtm$9HBAmd2qjxFIXY<@3gQ_$RtUhglR96eWVgUJ1rNm4_A@u#c=0m4@);`{>$k%fiMUD{DKkqv7^=sJ8;@Fb7>zgiuIOmdX&^gCj}CVnR$2g^8;wz0*rpD5Q7? zmtL@~s$y?=TshKE6NZUJ7M3MfP$Xeu5`;H~v|w&(Z#KTYjA%-{BvWD&Ooai4R3rq= z*4FSCL?1$mey)=mS5r@E74EI#(e731xX)~w#5ua|4PP20)1zEFi~D?M>+u(dArX0A zdqN=OFB*rQ{g;L!^;-fs0@@)J`jU{7eiuh8B%P%% z!5T*;nGKk5BaW{*Zio^IlAjNyO@Vzval%t^tpUxzSwgAILmmCMi0~I-O~p?usl1H; zOHGmWMy8T0nqqpTw^yNbMASHQxIHv(2y=A>jRW-J%=Lst1HOeiy!n;WtTtdc!|`(> zy)nB_>Gj7Dy^WCePnWoh!=$^ol{-;N9oW=}wbf^kT` zP{oL07Ej`!A(|VdI;KK6AZsZMr7E*Br-Aft^GC#V2^s-lmVp%;5(=k33|38RP2z)w zy8;_hSgC-sf!F4Di#kZ7YYmp=Xd8N@+!lqcIZ0HRCD(DvjM20WBUn+)5#i27GQAr{ zA4UvxNh;Z-RTc^ZM=X*5OX@c59z}+IHT&+j z*BJa7t%$b#qM<)}w63Nr$Kb~QkS|18?mfofLx}DK+grQ4aAipFR-T`3R$Eq>7EeC|(n*NE z8o`t0dcEGN=|^Y*`D7VGAhcSo>RPo*@m)?gE5TpU4jYT$V-(f4s%VM^U*&deVaNor zCL8Fp!C%RBO{}?g9IjOKL<{z_acHX#rBTdcI__Fxb0^}Ru(P5oM}$4l5_TDFHE0&N zK%2g<&=J~JiH6*>)OXHOzh?<4RR5cXn{qGF&Zmf+jjcePHJe6v%57D^h|05@y!L_B z6BUPmo&moVrhBmjKUDt zmoJW2L@seavuHh4qaK;{g^HEnqz5-_$9c8oTDD-rHGDmJ49Urd6yq-#?y=Osx_(XJ zECSlcErmekd$xI0fyxAY$ZOr2lL~p@0l=exI^=S4DY;>>j#T-%+Ql$mGxAZw!aJZE`G|d{%MKR;00s6U56%C|o2Jlis~*{^|OG?aZaHta23 z6zB#<`1T)1$60Xl@Ob>bKx$&{l}k=!sfp^C*Q^*;7OXPsJ9qt2H5VbV949}?)HN=GYzT{ zR;o5PQLS)-wL*e8KcU*uakX+%$7wA$|I#^mblg5pA8u^EsJ&P_P9J?b`p3pe-JY(V zuMGR@o$vuW5#GU!?Eq)T@Oi<@fMb-uc=Yv$@N8|3U#rIt>o026Rv}bAeNtoiW`n8J z7geBzVg5(|sGWR5QW=19T>C_RtLmr%0gO-9>r4Lafc$g;aDEi5_TB7a?8v)~nZ#Z< z&J;%87*CkZkA^xltcN85wl3KFF?jXn;BfyPIp>=^-rNkFlLEmJF+6IE`MXht{9B@k zv#>Y!QZ2s`%)N}57R#DPm@Zot8W zEul2b#e!=XKBQ*$7g>^W>{)gIES8E>OK_o?=^3XLpWS|9(9Ktw8t0nDf#HakBBN_8 zq|%?U!6Vv6xWJgYldbEQV6^N8zH#AcTUI%@tFp8an}-njltRW*SbURzT!x92SBkUu zHX!@5fPCS-@|yx90G_rRw$IlIcK}G_@b7PTP@*7#)2hzetuUuhP}Ri4RAiuNE^*j% z#7?2utUzj32+OUXiiKg*C2cNkWChxv^&aPo{Dpawui#A%_nreEYO#uvpv@OT5L7pB z`_{uLIFj>gDj|9qWZrDO-g$|z*?JxPxcBaj4Vk`VO^xjs&eG2nrS8R(%kf=Y0lVYGsc&FXQbVkBsG?=v2zb)^y92yEuX zCKzgah1n5GS+SK!F#Ti_Y=|jz(%RbbqVapmk^`X+NI4iplma8{a-IY)DLs=!)-zjC zUW3}%5Q>b-3vq4lG*L{}HssHRxV-JA^A?bRjZ-C5QhX9gZf2b?W0^f~fk)u@f4-M+ zCyvoN0p1$GpA0Dkip=TIV5>aR_;AuEFNwK_TEX;l>2Ea%)(KMRo`rd7fw#IYN|uel zmR>=*if^g-LvgjjB%K^1!bQGB3a^rYQ2Tm<3zEfDDm0E0$|>ORMH6!_3{%ct3bYDk zM=+v4A_BrqZzyo=BM9iXcC_^8M-Q7Pb^6Z7?c~$(V(EE2$&d`1!Ue^OΜ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 )eQh+o`^)(`gD98O* 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

*ttsV+m=a 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⇑5fslubnqQRcUsO?ZxY{ILL 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