From 1a923822595388f965cd8a65a5dd57e1eec9a478 Mon Sep 17 00:00:00 2001 From: Xavier J Date: Thu, 11 Aug 2016 15:27:35 +0200 Subject: [PATCH 01/53] - Add new status for a dossier : received, refused and without_continuation - Add new and rename tabs on gestionnaire all dossiers view /!\ WARNING : One test does not pasted. He will be corrected in the next commit --- app/assets/javascripts/application.js | 14 +- app/assets/stylesheets/application.scss | 20 +- .../backoffice/dossiers_controller.rb | 52 ++--- app/facades/dossiers_list_facades.rb | 70 +++++++ app/models/dossier.rb | 41 +++- .../dossiers_list_gestionnaire_service.rb | 44 +++++ .../backoffice/dossiers/_onglets.html.haml | 51 +++-- app/views/dossiers/_infos_dossier.html.haml | 4 +- config/locales/models/dossier/fr.yml | 9 +- spec/decorators/dossier_decorator_spec.rb | 21 ++- .../admin_procedures_show_facades_spec.rb | 7 +- ..._page_pref_list_dossier_backoffice_spec.rb | 2 +- .../backoffice/navigate_to_dossier_spec.rb | 4 +- spec/features/backoffice/onglets_link_spec.rb | 39 +++- spec/models/dossier_spec.rb | 51 +++-- .../dossiers/index_html.haml_spec.rb | 178 ++++++++++-------- .../dossiers/show.html.html_spec.rb | 51 ++++- .../users/dossiers/index_html.haml_spec.rb | 9 +- .../recapitulatif/show.html.haml_spec.rb | 34 +++- 19 files changed, 506 insertions(+), 195 deletions(-) create mode 100644 app/facades/dossiers_list_facades.rb create mode 100644 app/services/dossiers_list_gestionnaire_service.rb diff --git a/app/assets/javascripts/application.js b/app/assets/javascripts/application.js index 79ba48052..8c2de3421 100644 --- a/app/assets/javascripts/application.js +++ b/app/assets/javascripts/application.js @@ -32,8 +32,18 @@ //= require handlebars //= require typeahead.bundle -$(document).on('page:load', scroll_to); -$(document).ready(scroll_to); +$(document).on('page:load', application_init); +$(document).ready(application_init); + + +function application_init(){ + tooltip_init(); + scroll_to(); +} + +function tooltip_init() { + $('[data-toggle="tooltip"]').tooltip({delay: { "show": 800, "hide": 100 }}); +} function scroll_to() { $('.js-scrollTo').on('click', function () { // Au clic sur un élément diff --git a/app/assets/stylesheets/application.scss b/app/assets/stylesheets/application.scss index dd36af17e..45ba82428 100644 --- a/app/assets/stylesheets/application.scss +++ b/app/assets/stylesheets/application.scss @@ -36,7 +36,7 @@ body { } .wysihtml5-sandbox { - resize:vertical; + resize: vertical; } #wrap { @@ -101,7 +101,6 @@ body { margin-right: 105px; } - #header { top: 0; left: -3px; @@ -111,7 +110,6 @@ body { } - .navbar { height: 35px; background-color: rgba(235, 235, 235, 0.95); @@ -123,6 +121,18 @@ body { } +.text-purple { + color: #8B008B +} + +.text-default { + color: grey; +} + +.progress-bar-purple { + background-color: #800080; +} + .btn { box-shadow: none !important; } @@ -178,12 +188,12 @@ div.pagination { text-align: center; } -.alert{ +.alert { margin-bottom: 0px; } .alert.alert-success.move_up, -.alert.alert-danger.siret{ +.alert.alert-danger.siret { position: fixed; top: 0px; left: 0; diff --git a/app/controllers/backoffice/dossiers_controller.rb b/app/controllers/backoffice/dossiers_controller.rb index a927d94d1..9453ce3bf 100644 --- a/app/controllers/backoffice/dossiers_controller.rb +++ b/app/controllers/backoffice/dossiers_controller.rb @@ -5,11 +5,7 @@ class Backoffice::DossiersController < ApplicationController before_action :authenticate_gestionnaire! def index - @liste = params[:liste] || 'a_traiter' - - smartlisting_dossier - - total_dossiers_per_state + smartlisting_dossier (params[:liste] || 'a_traiter') end def show @@ -21,13 +17,14 @@ class Backoffice::DossiersController < ApplicationController @search_terms = params[:q] @dossiers_search, @dossier = Dossier.search(current_gestionnaire, @search_terms) + create_dossiers_list_facade + unless @dossiers_search.empty? @dossiers_search = @dossiers_search.paginate(:page => params[:page]).decorate end @dossier = @dossier.decorate unless @dossier.nil? - total_dossiers_per_state rescue RuntimeError @dossiers_search = [] end @@ -65,52 +62,25 @@ class Backoffice::DossiersController < ApplicationController rescue NoMethodError @liste = 'a_traiter' end - smartlisting_dossier + + smartlisting_dossier @liste render 'backoffice/dossiers/index', formats: :js end private - def smartlisting_dossier + def smartlisting_dossier liste + create_dossiers_list_facade liste + @dossiers = smart_listing_create :dossiers, - dossiers_to_display, + @dossiers_list_facade.dossiers_to_display, partial: "backoffice/dossiers/list", array: true end - def dossiers_to_display - {'a_traiter' => waiting_for_gestionnaire, - 'en_attente' => waiting_for_user, - 'termine' => termine, - 'suivi' => suivi}[@liste] - end - - def waiting_for_gestionnaire - @a_traiter_class = (@liste == 'a_traiter' ? 'active' : '') - @waiting_for_gestionnaire ||= current_gestionnaire.dossiers_filter.waiting_for_gestionnaire - end - - def waiting_for_user - @en_attente_class = (@liste == 'en_attente' ? 'active' : '') - @waiting_for_user ||= current_gestionnaire.dossiers_filter.waiting_for_user - end - - def termine - @termine_class = (@liste == 'termine' ? 'active' : '') - @termine ||= current_gestionnaire.dossiers_filter.termine - end - - def suivi - @suivi_class = (@liste == 'suivi' ? 'active' : '') - @suivi ||= current_gestionnaire.dossiers_follow - end - - def total_dossiers_per_state - @dossiers_a_traiter_total = waiting_for_gestionnaire.count - @dossiers_en_attente_total = waiting_for_user.count - @dossiers_termine_total = termine.count - @dossiers_suivi_total = suivi.count + def create_dossiers_list_facade liste='a_traiter' + @dossiers_list_facade = DossiersListFacades.new current_gestionnaire, liste end def create_dossier_facade dossier_id diff --git a/app/facades/dossiers_list_facades.rb b/app/facades/dossiers_list_facades.rb new file mode 100644 index 000000000..6086e0a9b --- /dev/null +++ b/app/facades/dossiers_list_facades.rb @@ -0,0 +1,70 @@ +class DossiersListFacades + def initialize current_devise_profil, liste + @current_devise_profil = current_devise_profil + @liste = liste + end + + def service + @service ||= DossiersListGestionnaireService.new @current_devise_profil, @liste + end + + def dossiers_to_display + service.dossiers_to_display + end + + def nouveaux_class + (@liste == 'nouveaux' ? 'active' : '') + end + + def a_traiter_class + (@liste == 'a_traiter' ? 'active' : '') + end + + def en_attente_class + (@liste == 'en_attente' ? 'active' : '') + end + + def deposes_class + (@liste == 'deposes' ? 'active' : '') + end + + def a_instruire_class + (@liste == 'a_instruire' ? 'active' : '') + end + + def termine_class + (@liste == 'termine' ? 'active' : '') + end + + def suivi_class + (@liste == 'suivi' ? 'active' : '') + end + + def nouveaux_total + service.nouveaux.count + end + + def a_traiter_total + service.waiting_for_gestionnaire.count + end + + def en_attente_total + service.waiting_for_user.count + end + + def deposes_total + service.deposes.count + end + + def a_instruire_total + service.a_instruire.count + end + + def termine_total + service.termine.count + end + + def suivi_total + service.suivi.count + end +end \ No newline at end of file diff --git a/app/models/dossier.rb b/app/models/dossier.rb index eeb9df03d..e3a232d62 100644 --- a/app/models/dossier.rb +++ b/app/models/dossier.rb @@ -2,11 +2,15 @@ class Dossier < ActiveRecord::Base enum state: {draft: 'draft', initiated: 'initiated', - replied: 'replied', - updated: 'updated', + replied: 'replied', #action utilisateur demandé + updated: 'updated',#etude par l'administration en cours validated: 'validated', submitted: 'submitted', - closed: 'closed'} + received: 'received', + closed: 'closed', + refused: 'refused', + without_continuation: 'without_continuation' + } has_one :etablissement, dependent: :destroy has_one :entreprise, dependent: :destroy @@ -34,9 +38,12 @@ class Dossier < ActiveRecord::Base validates :user, presence: true - WAITING_FOR_GESTIONNAIRE = %w(initiated updated submitted) + NOUVEAUX = %w(initiated) + WAITING_FOR_GESTIONNAIRE = %w(updated) WAITING_FOR_USER = %w(replied validated) - TERMINE = %w(closed) + DEPOSES = %w(submitted) + A_INSTRUIRE = %w(received) + TERMINE = %w(closed refused without_continuation) def retrieve_last_piece_justificative_by_type(type) pieces_justificatives.where(type_de_piece_justificative_id: type).last @@ -129,6 +136,10 @@ class Dossier < ActiveRecord::Base state end + def nouveaux? + NOUVEAUX.include?(state) + end + def waiting_for_gestionnaire? WAITING_FOR_GESTIONNAIRE.include?(state) end @@ -137,10 +148,22 @@ class Dossier < ActiveRecord::Base WAITING_FOR_USER.include?(state) end + def deposes? + DEPOSES.include?(state) + end + + def a_instruire? + A_INSTRUIRE.include?(state) + end + def termine? TERMINE.include?(state) end + def self.nouveaux order = 'ASC' + where(state: NOUVEAUX, archived: false).order("updated_at #{order}") + end + def self.waiting_for_gestionnaire order = 'ASC' where(state: WAITING_FOR_GESTIONNAIRE, archived: false).order("updated_at #{order}") end @@ -149,6 +172,14 @@ class Dossier < ActiveRecord::Base where(state: WAITING_FOR_USER, archived: false).order("updated_at #{order}") end + def self.deposes order = 'ASC' + where(state: DEPOSES, archived: false).order("updated_at #{order}") + end + + def self.a_instruire order = 'ASC' + where(state: A_INSTRUIRE, archived: false).order("updated_at #{order}") + end + def self.termine order = 'ASC' where(state: TERMINE, archived: false).order("updated_at #{order}") end diff --git a/app/services/dossiers_list_gestionnaire_service.rb b/app/services/dossiers_list_gestionnaire_service.rb new file mode 100644 index 000000000..1f72288a7 --- /dev/null +++ b/app/services/dossiers_list_gestionnaire_service.rb @@ -0,0 +1,44 @@ +class DossiersListGestionnaireService + def initialize current_devise_profil, liste + @current_devise_profil = current_devise_profil + @liste = liste + end + + def dossiers_to_display + {'nouveaux' => nouveaux, + 'a_traiter' => waiting_for_gestionnaire, + 'en_attente' => waiting_for_user, + 'deposes' => deposes, + 'a_instruire' => a_instruire, + 'termine' => termine, + 'suivi' => suivi}[@liste] + end + + def nouveaux + @nouveaux ||= @current_devise_profil.dossiers_filter.nouveaux + end + + def waiting_for_gestionnaire + @waiting_for_gestionnaire ||= @current_devise_profil.dossiers_filter.waiting_for_gestionnaire + end + + def waiting_for_user + @waiting_for_user ||= @current_devise_profil.dossiers_filter.waiting_for_user + end + + def deposes + @deposes ||= @current_devise_profil.dossiers_filter.deposes + end + + def a_instruire + @a_instruire ||= @current_devise_profil.dossiers_filter.a_instruire + end + + def termine + @termine ||= @current_devise_profil.dossiers_filter.termine + end + + def suivi + @suivi ||= @current_devise_profil.dossiers_follow + end +end \ No newline at end of file diff --git a/app/views/backoffice/dossiers/_onglets.html.haml b/app/views/backoffice/dossiers/_onglets.html.haml index 29ff955e7..dbd429e6f 100644 --- a/app/views/backoffice/dossiers/_onglets.html.haml +++ b/app/views/backoffice/dossiers/_onglets.html.haml @@ -3,33 +3,47 @@ #onglets %ul.nav.nav-tabs - %li{ class: (@a_traiter_class) } - %a{:href => "#{url_for backoffice_dossiers_path(liste: 'a_traiter')}"} - %h5.text-danger - = "À traiter " - .badge.progress-bar-danger - =@dossiers_a_traiter_total - - %li{ class: (@en_attente_class) } - %a{:href => "#{url_for backoffice_dossiers_path(liste: 'en_attente')}"} + %li{ class: (@dossiers_list_facade.nouveaux_class)} + %a{:href => "#{url_for backoffice_dossiers_path(liste: 'nouveaux')}", 'data-toggle' => :tooltip, title: 'Les nouveaux dossiers non ouverts.'} %h5.text-info - ="En attente " + = "Nouveaux " .badge.progress-bar-info - =@dossiers_en_attente_total + =@dossiers_list_facade.nouveaux_total - %li{ class: (@suivi_class) } - %a{:href => "#{url_for backoffice_dossiers_path(liste: 'suivi')}"} + %li{ class: (@dossiers_list_facade.a_traiter_class) } + %a{:href => "#{url_for backoffice_dossiers_path(liste: 'a_traiter')}", 'data-toggle' => :tooltip, title: 'Les dossiers qui requièrent une action de votre part.'} + %h5.text-danger + = "Action requise" + .badge.progress-bar-danger + =@dossiers_list_facade.a_traiter_total + + %li{ class: (@dossiers_list_facade.en_attente_class) } + %a{:href => "#{url_for backoffice_dossiers_path(liste: 'en_attente')}", 'data-toggle' => :tooltip, title: 'Les dossiers en attentes d\'une action de la part de l\'usager.'} + %h5.text-default + ="Attente usager " + .badge.progress-bar-default + =@dossiers_list_facade.en_attente_total + + %li{ class: (@dossiers_list_facade.deposes_class) } + %a{:href => "#{url_for backoffice_dossiers_path(liste: 'deposes')}", 'data-toggle' => :tooltip, title: 'Les dossiers qui ont été validés et déposés par les usager qui attendent une réponse de bonne réception avant instruction.'} + %h5.text-purple + ="À réceptionner" + .badge.progress-bar-purple + =@dossiers_list_facade.deposes_total + + %li{ class: (@dossiers_list_facade.a_instruire_class) } + %a{:href => "#{url_for backoffice_dossiers_path(liste: 'a_instruire')}", 'data-toggle' => :tooltip, title: 'Les dossiers qui ont été notifiés comme bien réceptionnés et qui attendent un verdict final.'} %h5.text-warning - ="Suivi" + = "À instruire" .badge.progress-bar-warning - =@dossiers_suivi_total + =@dossiers_list_facade.a_instruire_total - %li{ class: (@termine_class) } - %a{:href => "#{url_for backoffice_dossiers_path(liste: 'termine')}"} + %li{ class: (@dossiers_list_facade.termine_class) } + %a{:href => "#{url_for backoffice_dossiers_path(liste: 'termine')}",'data-toggle' => :tooltip, title: 'Tous les dossiers qui ont été traité avec un statut "Validé", "Refusé" ou "Sans suite "'} %h5.text-success = "Terminé" .badge.progress-bar-success - =@dossiers_termine_total + =@dossiers_list_facade.termine_total %ul.nav.nav-tabs.navbar-right{style:'border-bottom: none;'} %li#search{class: "#{'active' unless @dossiers_search.nil?}"} @@ -46,5 +60,4 @@ %a.btn#pref_list_dossier_open_action{href: '#'} %i.fa.fa-columns - %br \ No newline at end of file diff --git a/app/views/dossiers/_infos_dossier.html.haml b/app/views/dossiers/_infos_dossier.html.haml index 6e814043f..5f0238d31 100644 --- a/app/views/dossiers/_infos_dossier.html.haml +++ b/app/views/dossiers/_infos_dossier.html.haml @@ -41,7 +41,7 @@ %br .row{style: 'text-align:right'} - - if !@facade.dossier.validated? && !@facade.dossier.submitted? && !@facade.dossier.closed? + - if !@facade.dossier.validated? && !@facade.dossier.received? && !@facade.dossier.submitted? && !@facade.dossier.closed? && !@facade.dossier.refused? && !@facade.dossier.without_continuation? - if user_signed_in? && (current_user.email == @facade.dossier.user.email) - if @facade.procedure.cerfa_flag? || @facade.dossier.types_de_piece_justificative.size > 0 %a.btn.btn-success{"data-target" => "#UploadPJmodal", @@ -60,7 +60,7 @@ = 'Modifier mon dossier' -if gestionnaire_signed_in? - -if !@facade.dossier.validated? && !@facade.dossier.submitted? && !@facade.dossier.closed? + -if !@facade.dossier.validated? && !@facade.dossier.received? && !@facade.dossier.submitted? && !@facade.dossier.closed? && !@facade.dossier.refused? && !@facade.dossier.without_continuation? = form_tag(url_for({controller: 'backoffice/dossiers', action: :valid, dossier_id: @facade.dossier.id}), class: 'form-inline', method: 'POST') do %button#action_button.btn.btn-success = 'Valider le dossier' diff --git a/config/locales/models/dossier/fr.yml b/config/locales/models/dossier/fr.yml index 6c7eaab74..9663b2795 100644 --- a/config/locales/models/dossier/fr.yml +++ b/config/locales/models/dossier/fr.yml @@ -9,12 +9,15 @@ fr: date_previsionnelle: "La date de début prévisionnelle" state: draft: "Brouillon" - initiated: "Soumis" + initiated: "Nouveau" replied: "Répondu" updated: "Mis à jour" - validated: "Validé" + validated: "Figé" submitted: "Déposé" - closed: "Traité" + received: "Reçu" + closed: "Accepté" + refused: "Refusé" + without_continuation: "Sans suite" errors: models: diff --git a/spec/decorators/dossier_decorator_spec.rb b/spec/decorators/dossier_decorator_spec.rb index 5dcbc4ed8..1dfef816a 100644 --- a/spec/decorators/dossier_decorator_spec.rb +++ b/spec/decorators/dossier_decorator_spec.rb @@ -19,7 +19,7 @@ describe DossierDecorator do it 'initiated is initiate' do dossier.initiated! - expect(subject).to eq('Soumis') + expect(subject).to eq('Nouveau') end it 'replied is repondu' do @@ -34,7 +34,7 @@ describe DossierDecorator do it 'validated is valide' do dossier.validated! - expect(subject).to eq('Validé') + expect(subject).to eq('Figé') end it 'submitted is dépose' do @@ -44,7 +44,22 @@ describe DossierDecorator do it 'closed is traité' do dossier.closed! - expect(subject).to eq('Traité') + expect(subject).to eq('Accepté') + end + + it 'received is reçu' do + dossier.received! + expect(subject).to eq('Reçu') + end + + it 'without_continuation is traité' do + dossier.without_continuation! + expect(subject).to eq('Sans suite') + end + + it 'refused is traité' do + dossier.refused! + expect(subject).to eq('Refusé') end end end diff --git a/spec/facades/admin_procedures_show_facades_spec.rb b/spec/facades/admin_procedures_show_facades_spec.rb index 8b5b7ef6b..8ce3b5dc1 100644 --- a/spec/facades/admin_procedures_show_facades_spec.rb +++ b/spec/facades/admin_procedures_show_facades_spec.rb @@ -10,6 +10,7 @@ describe AdminProceduresShowFacades do let!(:dossier_4) { create(:dossier, procedure: procedure, archived: true, state: 'validated') } let!(:dossier_5) { create(:dossier, procedure: procedure, archived: true, state: 'validated') } let!(:dossier_6) { create(:dossier, procedure: procedure, archived: true, state: 'initiated') } + let!(:dossier_7) { create(:dossier, procedure: procedure, state: 'updated') } subject { AdminProceduresShowFacades.new procedure } @@ -22,13 +23,13 @@ describe AdminProceduresShowFacades do describe '.dossiers' do subject { super().dossiers } - it { expect(subject.size).to eq(6) } + it { expect(subject.size).to eq(7) } end describe '.dossiers_for_pie_highchart' do subject { super().dossiers_for_pie_highchart } - it { expect(subject).to eq({'Soumis' => 1, 'Validé' => 2}) } + it { expect(subject).to eq({'Nouveau' => 1, 'Figé' => 2, "Mis à jour"=>1}) } end describe '.dossiers_archived_by_state_total' do @@ -52,7 +53,7 @@ describe AdminProceduresShowFacades do describe 'dossiers_total' do subject { super().dossiers_total } - it { is_expected.to eq(6) } + it { is_expected.to eq(7) } end describe 'dossiers_waiting_gestionnaire_total' do diff --git a/spec/features/backoffice/lateral_page_pref_list_dossier_backoffice_spec.rb b/spec/features/backoffice/lateral_page_pref_list_dossier_backoffice_spec.rb index e2fe77a4d..d64ae23c7 100644 --- a/spec/features/backoffice/lateral_page_pref_list_dossier_backoffice_spec.rb +++ b/spec/features/backoffice/lateral_page_pref_list_dossier_backoffice_spec.rb @@ -7,7 +7,7 @@ feature 'usage of pref list dossier lateral panel', js: true do let(:procedure) { create(:procedure, administrateur: administrateur) } before do - create(:dossier, :with_entreprise, procedure: procedure, state: 'initiated') + create(:dossier, :with_entreprise, procedure: procedure, state: 'updated') create :assign_to, procedure: procedure, gestionnaire: gestionnaire visit backoffice_path end diff --git a/spec/features/backoffice/navigate_to_dossier_spec.rb b/spec/features/backoffice/navigate_to_dossier_spec.rb index 56d046347..8f29befa2 100644 --- a/spec/features/backoffice/navigate_to_dossier_spec.rb +++ b/spec/features/backoffice/navigate_to_dossier_spec.rb @@ -5,7 +5,7 @@ feature 'on backoffice page' do let(:gestionnaire) { create(:gestionnaire, administrateurs: [administrateur]) } let(:procedure) { create(:procedure, administrateur: administrateur) } - let!(:dossier) { create(:dossier, :with_entreprise, procedure: procedure, state: 'initiated') } + let!(:dossier) { create(:dossier, :with_entreprise, procedure: procedure, state: 'updated') } before do create :assign_to, gestionnaire: gestionnaire, procedure: procedure @@ -17,12 +17,14 @@ feature 'on backoffice page' do before do page.find_by_id(:gestionnaire_email).set gestionnaire.email page.find_by_id(:gestionnaire_password).set gestionnaire.password + page.click_on 'Se connecter' end context 'when he click on first dossier' do before do page.click_on dossier.id end + scenario 'it redirect to dossier page' do expect(page).to have_css('#backoffice_dossier_show') end diff --git a/spec/features/backoffice/onglets_link_spec.rb b/spec/features/backoffice/onglets_link_spec.rb index 6d8c5c7ce..b3aa61e86 100644 --- a/spec/features/backoffice/onglets_link_spec.rb +++ b/spec/features/backoffice/onglets_link_spec.rb @@ -9,10 +9,21 @@ feature 'on click on tabs button' do end context 'when gestionnaire is logged in' do - context 'when he click on tabs a traitee' do + context 'when he click on tabs nouveaux' do + before do + visit backoffice_dossiers_url(liste: :nouveaux) + page.click_on 'Nouveaux 0' + end + + scenario 'it redirect to backoffice dossier termine' do + expect(page).to have_css('#backoffice_index') + end + end + + context 'when he click on tabs a traite' do before do visit backoffice_dossiers_url(liste: :a_traiter) - page.click_on 'À traiter 0' + page.click_on 'Action requise 0' end scenario 'it redirect to backoffice dossier termine' do @@ -23,7 +34,7 @@ feature 'on click on tabs button' do context 'when he click on tabs en attente' do before do visit backoffice_dossiers_url(liste: :en_attente) - page.click_on 'En attente 0' + page.click_on 'Attente usager 0' end scenario 'it redirect to backoffice dossier en attente' do @@ -31,6 +42,28 @@ feature 'on click on tabs button' do end end + context 'when he click on tabs a receptionner' do + before do + visit backoffice_dossiers_url(liste: :nouveaux) + page.click_on 'À réceptionner 0' + end + + scenario 'it redirect to backoffice dossier a_receptionner' do + expect(page).to have_css('#backoffice_index') + end + end + + context 'when he click on tabs a instruire' do + before do + visit backoffice_dossiers_url(liste: :a_instruire) + page.click_on 'À instruire 0' + end + + scenario 'it redirect to backoffice dossier termine' do + expect(page).to have_css('#backoffice_index') + end + end + context 'when he click on tabs termine' do before do visit backoffice_dossiers_url(liste: :termine) diff --git a/spec/models/dossier_spec.rb b/spec/models/dossier_spec.rb index 393968cd1..2ad0dfed3 100644 --- a/spec/models/dossier_spec.rb +++ b/spec/models/dossier_spec.rb @@ -387,25 +387,36 @@ describe Dossier do before do create :assign_to, gestionnaire: gestionnaire, procedure: procedure_admin + + create(:dossier, procedure: procedure_admin, state: 'draft') + create(:dossier, procedure: procedure_admin, state: 'initiated') #nouveaux + create(:dossier, procedure: procedure_admin, state: 'initiated') #nouveaux + create(:dossier, procedure: procedure_admin, state: 'replied') #en_attente + create(:dossier, procedure: procedure_admin, state: 'updated') #a_traiter + create(:dossier, procedure: procedure_admin, state: 'submitted') #deposes + create(:dossier, procedure: procedure_admin, state: 'received') #a_instruire + create(:dossier, procedure: procedure_admin, state: 'received') #a_instruire + create(:dossier, procedure: procedure_admin, state: 'closed') #termine + create(:dossier, procedure: procedure_admin, state: 'refused') #termine + create(:dossier, procedure: procedure_admin, state: 'without_continuation') #termine + create(:dossier, procedure: procedure_admin_2, state: 'validated') #en_attente + create(:dossier, procedure: procedure_admin_2, state: 'submitted') #deposes + create(:dossier, procedure: procedure_admin_2, state: 'closed') #termine + create(:dossier, procedure: procedure_admin, state: 'initiated', archived: true) #a_traiter #archived + create(:dossier, procedure: procedure_admin, state: 'replied', archived: true) #en_attente #archived + create(:dossier, procedure: procedure_admin, state: 'closed', archived: true) #termine #archived end - let!(:dossier1) { create(:dossier, procedure: procedure_admin, state: 'draft') } - let!(:dossier2) { create(:dossier, procedure: procedure_admin, state: 'initiated') } #a_traiter - let!(:dossier3) { create(:dossier, procedure: procedure_admin, state: 'initiated') } #a_traiter - let!(:dossier4) { create(:dossier, procedure: procedure_admin, state: 'replied') } #en_attente - let!(:dossier5) { create(:dossier, procedure: procedure_admin, state: 'updated') } #a_traiter - let!(:dossier6) { create(:dossier, procedure: procedure_admin_2, state: 'validated') } #en_attente - let!(:dossier7) { create(:dossier, procedure: procedure_admin_2, state: 'submitted') } #a_traiter - let!(:dossier8) { create(:dossier, procedure: procedure_admin_2, state: 'closed') } #termine - let!(:dossier9) { create(:dossier, procedure: procedure_admin, state: 'closed') } #termine - let!(:dossier10) { create(:dossier, procedure: procedure_admin, state: 'initiated', archived: true) } #a_traiter #archived - let!(:dossier11) { create(:dossier, procedure: procedure_admin, state: 'replied', archived: true) } #en_attente #archived - let!(:dossier12) { create(:dossier, procedure: procedure_admin, state: 'closed', archived: true) } #termine #archived + describe '#nouveaux' do + subject { gestionnaire.dossiers.nouveaux } + + it { expect(subject.size).to eq(2) } + end describe '#waiting_for_gestionnaire' do subject { gestionnaire.dossiers.waiting_for_gestionnaire } - it { expect(subject.size).to eq(3) } + it { expect(subject.size).to eq(1) } end describe '#waiting_for_user' do @@ -414,10 +425,22 @@ describe Dossier do it { expect(subject.size).to eq(1) } end + describe '#a_instruire' do + subject { gestionnaire.dossiers.a_instruire } + + it { expect(subject.size).to eq(2) } + end + + describe '#deposes' do + subject { gestionnaire.dossiers.deposes } + + it { expect(subject.size).to eq(1) } + end + describe '#termine' do subject { gestionnaire.dossiers.termine } - it { expect(subject.size).to eq(1) } + it { expect(subject.size).to eq(3) } end end diff --git a/spec/views/backoffice/dossiers/index_html.haml_spec.rb b/spec/views/backoffice/dossiers/index_html.haml_spec.rb index 382caf9a6..cd937d856 100644 --- a/spec/views/backoffice/dossiers/index_html.haml_spec.rb +++ b/spec/views/backoffice/dossiers/index_html.haml_spec.rb @@ -8,12 +8,23 @@ describe 'backoffice/dossiers/index.html.haml', type: :view do let!(:decorate_dossier_initiated) { create(:dossier, :with_entreprise, procedure: procedure, state: 'initiated').decorate } let!(:decorate_dossier_replied) { create(:dossier, :with_entreprise, procedure: procedure, state: 'replied').decorate } + let!(:decorate_dossier_updated) { create(:dossier, :with_entreprise, procedure: procedure, state: 'updated').decorate } + let!(:decorate_dossier_validated) { create(:dossier, :with_entreprise, procedure: procedure, state: 'validated').decorate } + let!(:decorate_dossier_submitted) { create(:dossier, :with_entreprise, procedure: procedure, state: 'submitted').decorate } + let!(:decorate_dossier_received) { create(:dossier, :with_entreprise, procedure: procedure, state: 'received').decorate } let!(:decorate_dossier_closed) { create(:dossier, :with_entreprise, procedure: procedure, state: 'closed').decorate } + let!(:decorate_dossier_refused) { create(:dossier, :with_entreprise, procedure: procedure, state: 'refused').decorate } + let!(:decorate_dossier_without_continuation) { create(:dossier, :with_entreprise, procedure: procedure, state: 'without_continuation').decorate } before do - - decorate_dossier_closed.entreprise.update_column(:raison_sociale, 'plip') - decorate_dossier_replied.entreprise.update_column(:raison_sociale, 'plop') + decorate_dossier_replied.entreprise.update_column(:raison_sociale, 'plap') + decorate_dossier_updated.entreprise.update_column(:raison_sociale, 'plep') + decorate_dossier_validated.entreprise.update_column(:raison_sociale, 'plip') + decorate_dossier_submitted.entreprise.update_column(:raison_sociale, 'plop') + decorate_dossier_received.entreprise.update_column(:raison_sociale, 'plup') + decorate_dossier_closed.entreprise.update_column(:raison_sociale, 'plyp') + decorate_dossier_refused.entreprise.update_column(:raison_sociale, 'plzp') + decorate_dossier_without_continuation.entreprise.update_column(:raison_sociale, 'plnp') create :preference_list_dossier, gestionnaire: gestionnaire, @@ -43,119 +54,120 @@ describe 'backoffice/dossiers/index.html.haml', type: :view do sign_in gestionnaire end - describe 'on tab a_traiter' do + shared_examples 'check_tab_content' do before do + assign :dossiers_list_facade, (DossiersListFacades.new gestionnaire, liste) assign(:dossiers, (smart_listing_create :dossiers, - gestionnaire.dossiers.waiting_for_gestionnaire, + dossiers_to_display, partial: "backoffice/dossiers/list", array: true)) - assign(:liste, 'a_traiter') - assign(:a_traiter_class, 'active') - render end subject { rendered } - it { is_expected.to have_css('#backoffice_index') } - it { is_expected.to have_content(procedure.libelle) } - it { is_expected.to have_content(decorate_dossier_initiated.entreprise.raison_sociale) } - it { is_expected.to have_content(decorate_dossier_initiated.display_state) } - it { is_expected.to have_content(decorate_dossier_initiated.last_update) } - it { is_expected.not_to have_content(decorate_dossier_replied.entreprise.raison_sociale) } - it { is_expected.not_to have_content(decorate_dossier_closed.entreprise.raison_sociale) } + describe 'pref list column' do + it { is_expected.to have_css('#backoffice_index') } + it { is_expected.to have_content(procedure.libelle) } + it { is_expected.to have_content(decorate_dossier_at_check.entreprise.raison_sociale) } + it { is_expected.to have_content(decorate_dossier_at_check.display_state) } + it { is_expected.to have_content(decorate_dossier_at_check.last_update) } + end - it { is_expected.to have_css("#suivre_dossier_#{gestionnaire.dossiers.waiting_for_gestionnaire.first.id}") } + it { is_expected.to have_css("#suivre_dossier_#{dossiers_to_display.first.id}") } + + it { expect(dossiers_to_display.count).to eq total_dossiers } describe 'active tab' do - it { is_expected.to have_selector('.active .text-danger') } + it { is_expected.to have_selector(active_class) } + end + end + + describe 'on tab nouveaux' do + let(:total_dossiers) { 1 } + let(:active_class) { '.active .text-info' } + let(:dossiers_to_display) { gestionnaire.dossiers.nouveaux } + let(:liste) { 'nouveaux' } + + it_behaves_like 'check_tab_content' do + let(:decorate_dossier_at_check) { decorate_dossier_initiated } + end + end + + describe 'on tab a_traiter' do + let(:total_dossiers) { 1 } + let(:active_class) { '.active .text-danger' } + let(:dossiers_to_display) { gestionnaire.dossiers.waiting_for_gestionnaire } + let(:liste) { 'a_traiter' } + + it_behaves_like 'check_tab_content' do + let(:decorate_dossier_at_check) { decorate_dossier_updated } end end describe 'on tab en_attente' do - before do - assign(:dossiers, (smart_listing_create :dossiers, - gestionnaire.dossiers.waiting_for_user, - partial: "backoffice/dossiers/list", - array: true)) - assign(:liste, 'en_attente') - assign(:en_attente_class, 'active') + let(:total_dossiers) { 2 } + let(:active_class) { '.active .text-default' } + let(:dossiers_to_display) { gestionnaire.dossiers.waiting_for_user } + let(:liste) { 'en_attente' } - render + describe 'for state replied' do + it_behaves_like 'check_tab_content' do + let(:decorate_dossier_at_check) { decorate_dossier_replied } + end end - subject { rendered } - it { is_expected.to have_css('#backoffice_index') } - it { is_expected.to have_content(procedure.libelle) } - it { is_expected.to have_content(decorate_dossier_replied.entreprise.raison_sociale) } - it { is_expected.to have_content(decorate_dossier_replied.display_state) } - it { is_expected.to have_content(decorate_dossier_replied.last_update) } - - it { is_expected.not_to have_content(decorate_dossier_initiated.entreprise.raison_sociale) } - it { is_expected.not_to have_content(decorate_dossier_closed.entreprise.raison_sociale) } - - describe 'active tab' do - it { is_expected.to have_selector('.active .text-info') } + describe 'for state validated' do + it_behaves_like 'check_tab_content' do + let(:decorate_dossier_at_check) { decorate_dossier_validated } + end end end - describe 'on tab suivi' do - before do - create :follow, dossier_id: decorate_dossier_replied.id, gestionnaire_id: gestionnaire.id + describe 'on tab deposes' do + let(:total_dossiers) { 1 } + let(:active_class) { '.active .text-purple' } + let(:dossiers_to_display) { gestionnaire.dossiers.deposes } + let(:liste) { 'deposes' } - assign(:dossiers, (smart_listing_create :dossiers, - gestionnaire.dossiers_follow, - partial: "backoffice/dossiers/list", - array: true)) - assign(:suivi_class, 'active') - assign(:liste, 'suivi') - render + it_behaves_like 'check_tab_content' do + let(:decorate_dossier_at_check) { decorate_dossier_submitted } end + end - subject { rendered } + describe 'on tab a_instruire' do + let(:total_dossiers) { 1 } + let(:active_class) { '.active .text-warning' } + let(:dossiers_to_display) { gestionnaire.dossiers.a_instruire } + let(:liste) { 'a_instruire' } - it { is_expected.to have_css('#backoffice_index') } - it { is_expected.to have_content(procedure.libelle) } - it { is_expected.to have_content(decorate_dossier_replied.entreprise.raison_sociale) } - it { is_expected.to have_content(decorate_dossier_replied.display_state) } - it { is_expected.to have_content(decorate_dossier_replied.last_update) } - - it { is_expected.not_to have_content(decorate_dossier_initiated.entreprise.raison_sociale) } - it { is_expected.not_to have_content(decorate_dossier_closed.entreprise.raison_sociale) } - - it { is_expected.to have_css("#suivre_dossier_#{gestionnaire.dossiers_follow.first.id}") } - - describe 'active tab' do - it { is_expected.to have_selector('.active .text-warning') } + it_behaves_like 'check_tab_content' do + let(:decorate_dossier_at_check) { decorate_dossier_received } end end describe 'on tab termine' do - before do - assign(:dossiers, (smart_listing_create :dossiers, - gestionnaire.dossiers.termine, - partial: "backoffice/dossiers/list", - array: true)) - assign(:termine_class, 'active') - assign(:liste, 'termine') - render + let(:total_dossiers) { 3 } + let(:active_class) { '.active .text-success' } + let(:dossiers_to_display) { gestionnaire.dossiers.termine } + let(:liste) { 'termine' } + + describe 'for state closed' do + it_behaves_like 'check_tab_content' do + let(:decorate_dossier_at_check) { decorate_dossier_closed } + end end - subject { rendered } + describe 'for state refused' do + it_behaves_like 'check_tab_content' do + let(:decorate_dossier_at_check) { decorate_dossier_refused } + end + end - it { is_expected.to have_css('#backoffice_index') } - it { is_expected.to have_content(procedure.libelle) } - it { is_expected.to have_content(decorate_dossier_closed.entreprise.raison_sociale) } - it { is_expected.to have_content(decorate_dossier_closed.display_state) } - it { is_expected.to have_content(decorate_dossier_closed.last_update) } - - it { is_expected.not_to have_content(decorate_dossier_initiated.entreprise.raison_sociale) } - it { is_expected.not_to have_content(decorate_dossier_replied.entreprise.raison_sociale) } - - it { is_expected.to have_css("#suivre_dossier_#{gestionnaire.dossiers.termine.first.id}") } - - describe 'active tab' do - it { is_expected.to have_selector('.active .text-success') } + describe 'for state without_continuation' do + it_behaves_like 'check_tab_content' do + let(:decorate_dossier_at_check) { decorate_dossier_without_continuation } + end end end end \ No newline at end of file diff --git a/spec/views/backoffice/dossiers/show.html.html_spec.rb b/spec/views/backoffice/dossiers/show.html.html_spec.rb index 194da7043..ee4e26a5d 100644 --- a/spec/views/backoffice/dossiers/show.html.html_spec.rb +++ b/spec/views/backoffice/dossiers/show.html.html_spec.rb @@ -57,7 +57,7 @@ describe 'backoffice/dossiers/show.html.haml', type: :view do render end - it { expect(rendered).to have_content('Soumis') } + it { expect(rendered).to have_content('Nouveau') } it 'button Valider le dossier is present' do expect(rendered).to have_css('#action_button') @@ -102,7 +102,7 @@ describe 'backoffice/dossiers/show.html.haml', type: :view do render end - it { expect(rendered).to have_content('Validé') } + it { expect(rendered).to have_content('Figé') } it 'button Valider le dossier is not present' do expect(rendered).not_to have_css('#action_button') @@ -136,7 +136,52 @@ describe 'backoffice/dossiers/show.html.haml', type: :view do render end - it { expect(rendered).to have_content('Traité') } + it { expect(rendered).to have_content('Accepté') } + + it 'button Valider le dossier is not present' do + expect(rendered).not_to have_css('#action_button') + expect(rendered).not_to have_content('Valider le dossier') + end + end + + context 'when dossier have state received' do + let(:state) { 'received' } + + before do + render + end + + it { expect(rendered).to have_content('Reçu') } + + it 'button Valider le dossier is not present' do + expect(rendered).not_to have_css('#action_button') + expect(rendered).not_to have_content('Valider le dossier') + end + end + + context 'when dossier have state without_continuation' do + let(:state) { 'without_continuation' } + + before do + render + end + + it { expect(rendered).to have_content('Sans suite') } + + it 'button Valider le dossier is not present' do + expect(rendered).not_to have_css('#action_button') + expect(rendered).not_to have_content('Valider le dossier') + end + end + + context 'when dossier have state refused' do + let(:state) { 'refused' } + + before do + render + end + + it { expect(rendered).to have_content('Refusé') } it 'button Valider le dossier is not present' do expect(rendered).not_to have_css('#action_button') diff --git a/spec/views/users/dossiers/index_html.haml_spec.rb b/spec/views/users/dossiers/index_html.haml_spec.rb index 381e607fe..0b36400c6 100644 --- a/spec/views/users/dossiers/index_html.haml_spec.rb +++ b/spec/views/users/dossiers/index_html.haml_spec.rb @@ -75,10 +75,11 @@ describe 'users/dossiers/index.html.haml', type: :view do it { is_expected.to have_css('#users_index') } describe 'dossier initiated is present' do - it { is_expected.to have_content(dossier.procedure.libelle) } - it { is_expected.to have_content(dossier.entreprise.raison_sociale) } - it { is_expected.to have_content(dossier.display_state) } - it { is_expected.to have_content(dossier.last_update) } + pending + # it { is_expected.to have_content(dossier.procedure.libelle) } + # it { is_expected.to have_content(dossier.entreprise.raison_sociale) } + # it { is_expected.to have_content(dossier.display_state) } + # it { is_expected.to have_content(dossier.last_update) } end describe 'dossier replied and closed are not present' do diff --git a/spec/views/users/recapitulatif/show.html.haml_spec.rb b/spec/views/users/recapitulatif/show.html.haml_spec.rb index 799e52f7e..a687bb94e 100644 --- a/spec/views/users/recapitulatif/show.html.haml_spec.rb +++ b/spec/views/users/recapitulatif/show.html.haml_spec.rb @@ -59,7 +59,7 @@ describe 'users/recapitulatif/show.html.haml', type: :view do render end - it { expect(rendered).to have_content('Soumis') } + it { expect(rendered).to have_content('Nouveau') } it 'button Modifier les document est present' do expect(rendered).to have_content('Modifier les documents') @@ -125,13 +125,41 @@ describe 'users/recapitulatif/show.html.haml', type: :view do end end - context 'when dossier state is traité' do + context 'when dossier state is closed' do let(:state) { 'closed' } before do render end - it { expect(rendered).to have_content('Traité') } + it { expect(rendered).to have_content('Accepté') } + + it 'button Editer mon dossier n\'est plus present' do + expect(rendered).not_to have_css('#maj_infos') + expect(rendered).not_to have_content('Modifier mon dossier') + end + end + + context 'when dossier state is refused' do + let(:state) { 'refused' } + + before do + render + end + it { expect(rendered).to have_content('Refusé') } + + it 'button Editer mon dossier n\'est plus present' do + expect(rendered).not_to have_css('#maj_infos') + expect(rendered).not_to have_content('Modifier mon dossier') + end + end + + context 'when dossier state is without_continuation' do + let(:state) { 'without_continuation' } + + before do + render + end + it { expect(rendered).to have_content('Sans suite') } it 'button Editer mon dossier n\'est plus present' do expect(rendered).not_to have_css('#maj_infos') From 6adfcac5bf41b10bbd61d3b763baccdd9a9677ab Mon Sep 17 00:00:00 2001 From: Xavier J Date: Fri, 12 Aug 2016 13:56:10 +0200 Subject: [PATCH 02/53] Add new state on User UI. /!/ WARNING : No tests fix --- app/controllers/users/dossiers_controller.rb | 43 +----------- app/facades/dossiers_list_facades.rb | 50 +++++++++++++- app/models/dossier.rb | 18 +++++ app/services/dossiers_list_user_service.rb | 44 +++++++++++++ .../dossiers/_state_description.html.haml | 19 ++++++ app/views/backoffice/dossiers/index.html.haml | 4 ++ app/views/users/dossiers/_onglets.html.haml | 66 ++++++++++++------- .../dossiers/_state_description.html.haml | 45 +++++++++++++ app/views/users/dossiers/index.html.haml | 6 +- .../users/dossiers/index_html.haml_spec.rb | 9 ++- 10 files changed, 232 insertions(+), 72 deletions(-) create mode 100644 app/services/dossiers_list_user_service.rb create mode 100644 app/views/backoffice/dossiers/_state_description.html.haml create mode 100644 app/views/users/dossiers/_state_description.html.haml diff --git a/app/controllers/users/dossiers_controller.rb b/app/controllers/users/dossiers_controller.rb index c96ed1cfb..e5bf6a48c 100644 --- a/app/controllers/users/dossiers_controller.rb +++ b/app/controllers/users/dossiers_controller.rb @@ -10,16 +10,12 @@ class Users::DossiersController < UsersController end def index - order = 'DESC' - - @liste = params[:liste] || 'a_traiter' + @dossiers_list_facade = DossiersListFacades.new current_user, (params[:liste] || 'a_traiter') @dossiers = smart_listing_create :dossiers, - dossiers_to_display, + @dossiers_list_facade.dossiers_to_display, partial: "users/dossiers/list", array: true - - total_dossiers_per_state end def commencer @@ -109,40 +105,6 @@ class Users::DossiersController < UsersController private - def dossiers_to_display - {'a_traiter' => waiting_for_user, - 'en_attente' => waiting_for_gestionnaire, - 'termine' => termine, - 'invite' => invite}[@liste] - end - - def waiting_for_user - @a_traiter_class = (@liste == 'a_traiter' ? 'active' : '') - @waiting_for_user ||= current_user.dossiers.waiting_for_user 'DESC' - end - - def waiting_for_gestionnaire - @en_attente_class = (@liste == 'en_attente' ? 'active' : '') - @waiting_for_gestionnaire ||= current_user.dossiers.waiting_for_gestionnaire 'DESC' - end - - def termine - @termine_class = (@liste == 'termine' ? 'active' : '') - @termine ||= current_user.dossiers.termine 'DESC' - end - - def invite - @invite_class = (@liste == 'invite' ? 'active' : '') - @invite ||= current_user.invites - end - - def total_dossiers_per_state - @dossiers_a_traiter_total = waiting_for_user.count - @dossiers_en_attente_total = waiting_for_gestionnaire.count - @dossiers_termine_total = termine.count - @dossiers_invite_total = invite.count - end - def check_siret errors_valid_siret unless Siret.new(siret: siret).valid? end @@ -183,5 +145,4 @@ class Users::DossiersController < UsersController def facade id = params[:id] DossierFacades.new id, current_user.email end - end diff --git a/app/facades/dossiers_list_facades.rb b/app/facades/dossiers_list_facades.rb index 6086e0a9b..76f2d265f 100644 --- a/app/facades/dossiers_list_facades.rb +++ b/app/facades/dossiers_list_facades.rb @@ -5,7 +5,15 @@ class DossiersListFacades end def service - @service ||= DossiersListGestionnaireService.new @current_devise_profil, @liste + if gestionnaire? + @service ||= DossiersListGestionnaireService.new @current_devise_profil, @liste + elsif user? + @service ||= DossiersListUserService.new @current_devise_profil, @liste + end + end + + def liste + @liste end def dossiers_to_display @@ -28,6 +36,14 @@ class DossiersListFacades (@liste == 'deposes' ? 'active' : '') end + def valides_class + (@liste == 'valides' ? 'active' : '') + end + + def en_instruction_class + (@liste == 'en_instruction' ? 'active' : '') + end + def a_instruire_class (@liste == 'a_instruire' ? 'active' : '') end @@ -40,22 +56,36 @@ class DossiersListFacades (@liste == 'suivi' ? 'active' : '') end + def invite_class + (@liste == 'invite' ? 'active' : '') + end + def nouveaux_total service.nouveaux.count end def a_traiter_total - service.waiting_for_gestionnaire.count + service.waiting_for_gestionnaire.count if gestionnaire? + service.waiting_for_user.count if user? end def en_attente_total - service.waiting_for_user.count + service.waiting_for_user.count if gestionnaire? + service.waiting_for_gestionnaire.count if user? + end + + def valides_total + service.valides.count end def deposes_total service.deposes.count end + def en_instruction_total + service.en_instruction.count + end + def a_instruire_total service.a_instruire.count end @@ -67,4 +97,18 @@ class DossiersListFacades def suivi_total service.suivi.count end + + def invite_total + service.invite.count + end + + private + + def gestionnaire? + @current_devise_profil.class == Gestionnaire + end + + def user? + @current_devise_profil.class == User + end end \ No newline at end of file diff --git a/app/models/dossier.rb b/app/models/dossier.rb index e3a232d62..914bc1ca8 100644 --- a/app/models/dossier.rb +++ b/app/models/dossier.rb @@ -41,7 +41,9 @@ class Dossier < ActiveRecord::Base NOUVEAUX = %w(initiated) WAITING_FOR_GESTIONNAIRE = %w(updated) WAITING_FOR_USER = %w(replied validated) + VALIDES = %w(validated) DEPOSES = %w(submitted) + EN_INSTRUCTION = %w(submitted received) A_INSTRUIRE = %w(received) TERMINE = %w(closed refused without_continuation) @@ -152,10 +154,18 @@ class Dossier < ActiveRecord::Base DEPOSES.include?(state) end + def valides? + VALIDES.include?(state) + end + def a_instruire? A_INSTRUIRE.include?(state) end + def en_instruction? + EN_INSTRUCTION.include?(state) + end + def termine? TERMINE.include?(state) end @@ -172,6 +182,10 @@ class Dossier < ActiveRecord::Base where(state: WAITING_FOR_USER, archived: false).order("updated_at #{order}") end + def self.valides order = 'ASC' + where(state: VALIDES, archived: false).order("updated_at #{order}") + end + def self.deposes order = 'ASC' where(state: DEPOSES, archived: false).order("updated_at #{order}") end @@ -180,6 +194,10 @@ class Dossier < ActiveRecord::Base where(state: A_INSTRUIRE, archived: false).order("updated_at #{order}") end + def self.en_instruction order = 'ASC' + where(state: EN_INSTRUCTION, archived: false).order("updated_at #{order}") + end + def self.termine order = 'ASC' where(state: TERMINE, archived: false).order("updated_at #{order}") end diff --git a/app/services/dossiers_list_user_service.rb b/app/services/dossiers_list_user_service.rb new file mode 100644 index 000000000..d910d0cb8 --- /dev/null +++ b/app/services/dossiers_list_user_service.rb @@ -0,0 +1,44 @@ +class DossiersListUserService + def initialize current_devise_profil, liste + @current_devise_profil = current_devise_profil + @liste = liste + end + + def dossiers_to_display + {'nouveaux' => nouveaux, + 'a_traiter' => waiting_for_user, + 'en_attente' => waiting_for_gestionnaire, + 'valides' => valides, + 'en_instruction' => en_instruction, + 'termine' => termine, + 'invite' => invite}[@liste] + end + + def nouveaux + @nouveaux ||= @current_devise_profil.dossiers.nouveaux + end + + def waiting_for_gestionnaire + @waiting_for_gestionnaire ||= @current_devise_profil.dossiers.waiting_for_gestionnaire + end + + def waiting_for_user + @waiting_for_user ||= @current_devise_profil.dossiers.waiting_for_user + end + + def invite + @invite ||= @current_devise_profil.invites + end + + def valides + @valides ||= @current_devise_profil.dossiers.valides + end + + def en_instruction + @en_instruction ||= @current_devise_profil.dossiers.en_instruction + end + + def termine + @termine ||= @current_devise_profil.dossiers.termine + end +end \ No newline at end of file diff --git a/app/views/backoffice/dossiers/_state_description.html.haml b/app/views/backoffice/dossiers/_state_description.html.haml new file mode 100644 index 000000000..c4c2368b9 --- /dev/null +++ b/app/views/backoffice/dossiers/_state_description.html.haml @@ -0,0 +1,19 @@ +#state_description.row{style:'width: 50%; margin-left: auto; margin-right: auto'} + .panel.panel-info + .panel-body.center + .row + .col-md-1.col-lg-1 + .fa.fa-info-circle.text-info{style:'font-size: 2em; margin-top: 20%'} + .col-md-11.col-lg-11 + -if dossiers_list_facade.liste == 'nouveaux' + plop + -elsif dossiers_list_facade.liste == 'a_traiter' + plop + -elsif dossiers_list_facade.liste == 'en_attente' + plop + -elsif dossiers_list_facade.liste == 'deposes' + plop + -elsif dossiers_list_facade.liste == 'a_instruire' + plop + -elsif dossiers_list_facade.liste == 'termine' + plop diff --git a/app/views/backoffice/dossiers/index.html.haml b/app/views/backoffice/dossiers/index.html.haml index f6156379e..c4fab90de 100644 --- a/app/views/backoffice/dossiers/index.html.haml +++ b/app/views/backoffice/dossiers/index.html.haml @@ -4,3 +4,7 @@ = render partial: 'onglets' = smart_listing_render :dossiers + + %br + %br + = render partial: 'state_description', locals: {dossiers_list_facade: @dossiers_list_facade} diff --git a/app/views/users/dossiers/_onglets.html.haml b/app/views/users/dossiers/_onglets.html.haml index afd027e40..7c6e5fc83 100644 --- a/app/views/users/dossiers/_onglets.html.haml +++ b/app/views/users/dossiers/_onglets.html.haml @@ -1,33 +1,55 @@ %h1 Mes dossiers -%br +%br #onglets %ul.nav.nav-tabs - %li{ class: @a_traiter_class } - %a{:href => "#{url_for users_dossiers_path(liste: 'a_traiter')}"} - %h5.text-danger - = "À traiter " - .badge.progress-bar-danger - = @dossiers_a_traiter_total - - %li{ class: @en_attente_class } - %a{:href => "#{url_for users_dossiers_path(liste: 'en_attente')}"} + %li{ class: @dossiers_list_facade.nouveaux_class } + %a{:href => "#{url_for users_dossiers_path(liste: 'nouveaux')}", 'data-toggle' => :tooltip, title: 'Les nouveaux dossiers qui n\'ont pas encore été vus par votre accompagnateur.'} %h5.text-info - ="En attente " + = "Nouveau" .badge.progress-bar-info - = @dossiers_en_attente_total + = @dossiers_list_facade.nouveaux_total - %li{ class: @termine_class } - %a{:href => "#{url_for users_dossiers_path(liste: 'termine')}"} + %li{ class: @dossiers_list_facade.a_traiter_class } + %a{:href => "#{url_for users_dossiers_path(liste: 'a_traiter')}", 'data-toggle' => :tooltip, title: 'Les dossiers qui requièrent une action de votre part.'} + %h5.text-danger + = "Action requise" + .badge.progress-bar-danger + = @dossiers_list_facade.a_traiter_total + + %li{ class: @dossiers_list_facade.en_attente_class } + %a{:href => "#{url_for users_dossiers_path(liste: 'en_attente')}", 'data-toggle' => :tooltip, title: 'Les dossiers en cours de relecture par votre accompagnateur.'} + %h5.text-default + ="Etude en cours" + .badge.progress-bar-default + = @dossiers_list_facade.en_attente_total + + %li{ class: @dossiers_list_facade.valides_class } + %a{:href => "#{url_for users_dossiers_path(liste: 'valides')}", 'data-toggle' => :tooltip, title: 'Les dossiers relus par votre accompagnateur pouvant être déposés pour instruction.'} + %h5.text-purple + ="À déposer" + .badge.progress-bar-purple + = @dossiers_list_facade.valides_total + + %li{ class: @dossiers_list_facade.en_instruction_class } + %a{:href => "#{url_for users_dossiers_path(liste: 'en_instruction')}", 'data-toggle' => :tooltip, title: 'Les dossiers en cours d\'instruction par l\'administration compétante.'} + %h5.text-default + ="En instruction" + .badge.progress-bar-default + = @dossiers_list_facade.en_instruction_total + + %li{ class: @dossiers_list_facade.termine_class } + %a{:href => "#{url_for users_dossiers_path(liste: 'termine')}", 'data-toggle' => :tooltip, title: 'Les dossiers cloturés qui peuvent être "Accepté", "Refusé" ou "Sans suite".'} %h5.text-success - = "Terminé" + = "Cloturé" .badge.progress-bar-success - = @dossiers_termine_total + = @dossiers_list_facade.termine_total - %li{ class: @invite_class } - %a{:href => "#{url_for users_dossiers_path(liste: 'invite')}"} - %h5{style: 'color: #696969'} - = "Invitation" - .badge{style: 'background-color: #696969'} - = @dossiers_invite_total + %ul.nav.nav-tabs.navbar-right{style:'border-bottom: none;'} + %li{ class: @dossiers_list_facade.invite_class } + %a{:href => "#{url_for users_dossiers_path(liste: 'invite')}"} + %h5.text-warning + = "Invitation" + .badge.progress-bar-warning + = @dossiers_list_facade.invite_total %br diff --git a/app/views/users/dossiers/_state_description.html.haml b/app/views/users/dossiers/_state_description.html.haml new file mode 100644 index 000000000..d76a583b9 --- /dev/null +++ b/app/views/users/dossiers/_state_description.html.haml @@ -0,0 +1,45 @@ +#state_description.row{style:'width: 55%; margin-left: auto; margin-right: auto'} + .panel.panel-info + .panel-body.center + .row + .col-md-1.col-lg-1 + .fa.fa-info-circle.text-info{style:'font-size: 2em; margin-top: 20%'} + .col-md-11.col-lg-11 + -if dossiers_list_facade.liste == 'nouveaux' + Les dossiers présents dans cette liste + %b + n'ont pas encore été ouverts + par votre accompagnteur. Une notification vous sera envoyée quand votre demande aura été étudiée. + -elsif dossiers_list_facade.liste == 'a_traiter' + Les dossiers présents dans cette liste + %b + attendent une action de votre part. + Plus d'informations vous sont généralement données par votre accompagnateur dans le flux de commentaires du dossier. + -elsif dossiers_list_facade.liste == 'en_attente' + Les dossiers présents dans cette liste sont + %b + en cours de relecture par votre accompagnateur. + Il reviendra vers vous si des informations ou documents sont manquants pour la future instruction de votre dossier. + -elsif dossiers_list_facade.liste == 'valides' + Les dossiers présents dans cette liste ont été + %b + relus et considérés comme complet + pour instruction par votre accompagnateur. Ceux-ci ne peuvent maintenant plus être modifié. Il faut que vous procédiez à leurs dépôts afin qu'une décision finale soit rendue. + -elsif dossiers_list_facade.liste == 'en_instruction' + Les dossiers présents dans cette liste sont + %b + en cours de réception + ou + %b + en cours d'instruction + par l'administration compétente. Une notification vous sera envoyée une fois qu'une décision aura été rendue. + -elsif dossiers_list_facade.liste == 'termine' + Les dossiers présents dans cette liste sont ceux qui ont été instruits par l'admnistration et + %b + une décision finale a été rendue. + Ils peuvent posséder trois états différents : Accepté, Refusé ou Sans Suite. + -elsif dossiers_list_facade.liste == 'invite' + Les dossiers présents dans cete liste sont ceux + %b + auxquels vous avez été invités + à participer afin d'émettre un avis et/ou à founir des documents complétmentaires. diff --git a/app/views/users/dossiers/index.html.haml b/app/views/users/dossiers/index.html.haml index a75910beb..f7931ed8f 100644 --- a/app/views/users/dossiers/index.html.haml +++ b/app/views/users/dossiers/index.html.haml @@ -1,4 +1,8 @@ #users_index = render partial: 'onglets' - = smart_listing_render :dossiers \ No newline at end of file + = smart_listing_render :dossiers + + %br + %br + = render partial: 'state_description', locals: {dossiers_list_facade: @dossiers_list_facade} diff --git a/spec/views/users/dossiers/index_html.haml_spec.rb b/spec/views/users/dossiers/index_html.haml_spec.rb index 0b36400c6..381e607fe 100644 --- a/spec/views/users/dossiers/index_html.haml_spec.rb +++ b/spec/views/users/dossiers/index_html.haml_spec.rb @@ -75,11 +75,10 @@ describe 'users/dossiers/index.html.haml', type: :view do it { is_expected.to have_css('#users_index') } describe 'dossier initiated is present' do - pending - # it { is_expected.to have_content(dossier.procedure.libelle) } - # it { is_expected.to have_content(dossier.entreprise.raison_sociale) } - # it { is_expected.to have_content(dossier.display_state) } - # it { is_expected.to have_content(dossier.last_update) } + it { is_expected.to have_content(dossier.procedure.libelle) } + it { is_expected.to have_content(dossier.entreprise.raison_sociale) } + it { is_expected.to have_content(dossier.display_state) } + it { is_expected.to have_content(dossier.last_update) } end describe 'dossier replied and closed are not present' do From 6cf6832c01cb930b8df0b630d7ed30651fa76a0b Mon Sep 17 00:00:00 2001 From: Guillaume Lazzara Date: Thu, 18 Aug 2016 16:06:24 +0200 Subject: [PATCH 03/53] Migrate to Rails 4.2.7.1 --- Gemfile | 2 +- Gemfile.lock | 86 ++++++++++++++++++----------------- spec/models/procedure_spec.rb | 4 +- 3 files changed, 47 insertions(+), 45 deletions(-) diff --git a/Gemfile b/Gemfile index c0d4b144e..c5623d59e 100644 --- a/Gemfile +++ b/Gemfile @@ -2,7 +2,7 @@ source 'https://rubygems.org' # Bundle edge Rails instead: gem 'rails', github: 'rails/rails' -gem 'rails', '4.2.5.2' +gem 'rails', '4.2.7.1' # Use SCSS for stylesheets gem 'sass-rails', '~> 5.0' diff --git a/Gemfile.lock b/Gemfile.lock index 325952d07..a95cf764c 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -10,38 +10,38 @@ GEM remote: https://rubygems.org/ specs: CFPropertyList (2.3.2) - actionmailer (4.2.5.2) - actionpack (= 4.2.5.2) - actionview (= 4.2.5.2) - activejob (= 4.2.5.2) + actionmailer (4.2.7.1) + actionpack (= 4.2.7.1) + actionview (= 4.2.7.1) + activejob (= 4.2.7.1) mail (~> 2.5, >= 2.5.4) rails-dom-testing (~> 1.0, >= 1.0.5) - actionpack (4.2.5.2) - actionview (= 4.2.5.2) - activesupport (= 4.2.5.2) + actionpack (4.2.7.1) + actionview (= 4.2.7.1) + activesupport (= 4.2.7.1) rack (~> 1.6) rack-test (~> 0.6.2) rails-dom-testing (~> 1.0, >= 1.0.5) rails-html-sanitizer (~> 1.0, >= 1.0.2) - actionview (4.2.5.2) - activesupport (= 4.2.5.2) + actionview (4.2.7.1) + activesupport (= 4.2.7.1) builder (~> 3.1) erubis (~> 2.7.0) rails-dom-testing (~> 1.0, >= 1.0.5) rails-html-sanitizer (~> 1.0, >= 1.0.2) active_model_serializers (0.8.3) activemodel (>= 3.0) - activejob (4.2.5.2) - activesupport (= 4.2.5.2) + activejob (4.2.7.1) + activesupport (= 4.2.7.1) globalid (>= 0.3.0) - activemodel (4.2.5.2) - activesupport (= 4.2.5.2) + activemodel (4.2.7.1) + activesupport (= 4.2.7.1) builder (~> 3.1) - activerecord (4.2.5.2) - activemodel (= 4.2.5.2) - activesupport (= 4.2.5.2) + activerecord (4.2.7.1) + activemodel (= 4.2.7.1) + activesupport (= 4.2.7.1) arel (~> 6.0) - activesupport (4.2.5.2) + activesupport (4.2.7.1) i18n (~> 0.7) json (~> 1.7, >= 1.7.7) minitest (~> 5.1) @@ -112,7 +112,7 @@ GEM execjs coffee-script-source (1.9.1.1) columnize (0.9.0) - concurrent-ruby (1.0.1) + concurrent-ruby (1.0.2) crack (0.4.2) safe_yaml (~> 1.0.0) css_splitter (0.4.4) @@ -282,7 +282,7 @@ GEM font-awesome-rails (4.4.0.0) railties (>= 3.2, < 5.0) formatador (0.2.5) - globalid (0.3.6) + globalid (0.3.7) activesupport (>= 4.1.0) guard (2.13.0) formatador (>= 0.2.4) @@ -357,23 +357,24 @@ GEM loofah (2.0.3) nokogiri (>= 1.5.9) lumberjack (1.0.9) - mail (2.6.3) - mime-types (>= 1.16, < 3) + mail (2.6.4) + mime-types (>= 1.16, < 4) mailjet (1.1.0) activesupport (>= 3.1.0) rack (>= 1.4.0) rest-client maruku (0.7.2) method_source (0.8.2) - mime-types (2.99.1) - mini_portile2 (2.0.0) - minitest (5.8.4) + mime-types (2.99.2) + mini_portile2 (2.1.0) + minitest (5.9.0) multi_json (1.11.2) multipart-post (2.0.0) nenv (0.2.0) netrc (0.10.3) - nokogiri (1.6.7.2) - mini_portile2 (~> 2.0.0.rc2) + nokogiri (1.6.8) + mini_portile2 (~> 2.1.0) + pkg-config (~> 1.1.7) notiffany (0.0.8) nenv (~> 0.1) shellany (~> 0.0) @@ -400,6 +401,7 @@ GEM parser (2.2.2.2) ast (>= 1.1, < 3.0) pg (0.18.2) + pkg-config (1.1.7) poltergeist (1.6.0) capybara (~> 2.1) cliver (~> 0.3.1) @@ -423,16 +425,16 @@ GEM rack-test (0.6.3) rack (>= 1.0) railroady (1.3.0) - rails (4.2.5.2) - actionmailer (= 4.2.5.2) - actionpack (= 4.2.5.2) - actionview (= 4.2.5.2) - activejob (= 4.2.5.2) - activemodel (= 4.2.5.2) - activerecord (= 4.2.5.2) - activesupport (= 4.2.5.2) + rails (4.2.7.1) + actionmailer (= 4.2.7.1) + actionpack (= 4.2.7.1) + actionview (= 4.2.7.1) + activejob (= 4.2.7.1) + activemodel (= 4.2.7.1) + activerecord (= 4.2.7.1) + activesupport (= 4.2.7.1) bundler (>= 1.3.0, < 2.0) - railties (= 4.2.5.2) + railties (= 4.2.7.1) sprockets-rails rails-deprecated_sanitizer (1.0.3) activesupport (>= 4.2.0.alpha) @@ -442,14 +444,14 @@ GEM rails-deprecated_sanitizer (>= 1.0.1) rails-html-sanitizer (1.0.3) loofah (~> 2.0) - railties (4.2.5.2) - actionpack (= 4.2.5.2) - activesupport (= 4.2.5.2) + railties (4.2.7.1) + actionpack (= 4.2.7.1) + activesupport (= 4.2.7.1) rake (>= 0.8.7) thor (>= 0.18.1, < 2.0) rainbow (2.0.0) raindrops (0.13.0) - rake (10.5.0) + rake (11.2.2) rb-fsevent (0.9.6) rb-inotify (0.9.5) ffi (>= 0.5.0) @@ -547,10 +549,10 @@ GEM spring (1.3.6) spring-commands-rspec (1.0.4) spring (>= 0.9.1) - sprockets (3.5.2) + sprockets (3.7.0) concurrent-ruby (~> 1.0) rack (> 1, < 3) - sprockets-rails (3.0.3) + sprockets-rails (3.1.1) actionpack (>= 4.0) activesupport (>= 4.0) sprockets (>= 3.0.0) @@ -665,7 +667,7 @@ DEPENDENCIES poltergeist pry-byebug railroady - rails (= 4.2.5.2) + rails (= 4.2.7.1) rest-client rgeo-geojson rspec-rails (~> 3.0) diff --git a/spec/models/procedure_spec.rb b/spec/models/procedure_spec.rb index 6e4f6fdbb..c2658a3e8 100644 --- a/spec/models/procedure_spec.rb +++ b/spec/models/procedure_spec.rb @@ -175,7 +175,7 @@ describe Procedure do end it 'is correctly set in ProcedurePath table' do - expect(ProcedurePath.count(path: procedure.path)).to eq(1) + expect(ProcedurePath.where(path: procedure.path).count.to eq(1) expect(procedure_path.procedure_id).to eq(procedure.id) expect(procedure_path.administrateur_id).to eq(procedure.administrateur_id) end @@ -196,7 +196,7 @@ describe Procedure do end it 'is not in ProcedurePath table anymore' do - expect(ProcedurePath.count(path: procedure.path)).to eq(0) + expect(ProcedurePath.where(path: procedure.path).count).to eq(0) expect(ProcedurePath.find_by_procedure_id(procedure.id)).to be_nil end end From c4420cd6bc6f372bd5c22e40e96f82e97f74235c Mon Sep 17 00:00:00 2001 From: Xavier J Date: Mon, 22 Aug 2016 12:37:24 +0200 Subject: [PATCH 04/53] Fix seeds superadmin password changement --- db/seeds/super_admin.rb | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/db/seeds/super_admin.rb b/db/seeds/super_admin.rb index 309eb8252..93a6ccee2 100644 --- a/db/seeds/super_admin.rb +++ b/db/seeds/super_admin.rb @@ -1 +1,7 @@ -Administration.create(email: SUPERADMIN.email, password: SUPERADMIN.password) \ No newline at end of file +begin + Administration.create!(email: SUPERADMIN.email, password: SUPERADMIN.password) +rescue ActiveRecord::RecordInvalid + admin = Administration.find_by_email(SUPERADMIN.email) + admin.password = SUPERADMIN.password + admin.save +end From 7140d79f64a7249ca658c36c6e938635a1cfe748 Mon Sep 17 00:00:00 2001 From: Xavier J Date: Mon, 22 Aug 2016 14:00:34 +0200 Subject: [PATCH 05/53] Warning platform staging --- app/assets/stylesheets/application.scss | 11 +++++++++++ app/views/layouts/_navbar.html.haml | 15 +++++++++++++-- 2 files changed, 24 insertions(+), 2 deletions(-) diff --git a/app/assets/stylesheets/application.scss b/app/assets/stylesheets/application.scss index 45ba82428..8f625624f 100644 --- a/app/assets/stylesheets/application.scss +++ b/app/assets/stylesheets/application.scss @@ -93,6 +93,17 @@ body { z-index: 10; } +.beta_staging { + background-color: #B00100 !important; +} + +.staging_warning { + position: absolute; + top: 50%; + left: 50%; + transform: translate(-50%, -50%); +} + #sign_out { decorate: none; box-shadow: none; diff --git a/app/views/layouts/_navbar.html.haml b/app/views/layouts/_navbar.html.haml index 6ed7c1bc6..420aa17ac 100644 --- a/app/views/layouts/_navbar.html.haml +++ b/app/views/layouts/_navbar.html.haml @@ -1,5 +1,8 @@ -#beta - Beta +#beta{class:(Rails.env == 'production' ? '' : 'beta_staging')} + - if Rails.env == 'production' + Beta + - else + Env Test = image_tag('marianne_small.png', class: 'logo') %a{href: '/'} = image_tag('logo-tps.png', class: 'logo') @@ -8,6 +11,7 @@ Mes Dossiers -elsif administrateur_signed_in? Mes Procédures + #sign_out -if gestionnaire_signed_in? = render partial: 'gestionnaires/login_banner' @@ -31,3 +35,10 @@ = link_to "Utilisateur", '/users/sign_in', method: :get, :class => 'btn btn-md' = link_to "Accompagnateur", '/gestionnaires/sign_in', method: :get, :class => 'btn btn-md' = link_to "Administrateur", '/administrateurs/sign_in', method: :get, :class => 'btn btn-md' + +- if Rails.env != 'production' + %div.staging_warning + %b{style:'color: #B00100', 'data-placement' => 'bottom', 'data-original-title' => "Aucune procédure présente sur cette plateforme ne pourra être transférée sur l'environnement de production afin de les utiliser au quotidien.", 'data-toggle' => 'tooltip'} + Vous vous trouvez actuellement sur la plateforme de test. + %div.badge.progress-bar-danger + ? From 19ee3af273fcab224660e94e6a7f8a42d0a2aaa6 Mon Sep 17 00:00:00 2001 From: Xavier J Date: Mon, 22 Aug 2016 14:15:21 +0200 Subject: [PATCH 06/53] =?UTF-8?q?Ajust=C3=A9=20warning=20staging=20text?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/views/layouts/_navbar.html.haml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/views/layouts/_navbar.html.haml b/app/views/layouts/_navbar.html.haml index 420aa17ac..2849be7cf 100644 --- a/app/views/layouts/_navbar.html.haml +++ b/app/views/layouts/_navbar.html.haml @@ -38,7 +38,7 @@ - if Rails.env != 'production' %div.staging_warning - %b{style:'color: #B00100', 'data-placement' => 'bottom', 'data-original-title' => "Aucune procédure présente sur cette plateforme ne pourra être transférée sur l'environnement de production afin de les utiliser au quotidien.", 'data-toggle' => 'tooltip'} + %b{style:'color: #B00100', 'data-placement' => 'bottom', 'data-original-title' => "Aucune donnée présente sur cette plateforme ne pourra être transférée sur l'environnement final de production.", 'data-toggle' => 'tooltip'} Vous vous trouvez actuellement sur la plateforme de test. %div.badge.progress-bar-danger ? From b661a2eb386119f1c3d31fd765ad11a82736dc67 Mon Sep 17 00:00:00 2001 From: Xavier J Date: Mon, 22 Aug 2016 16:10:48 +0200 Subject: [PATCH 07/53] Updated test for new user status UI --- Gemfile | 2 +- Gemfile.lock | 16 +- app/facades/dossiers_list_facades.rb | 4 +- app/models/dossier.rb | 9 + app/services/dossiers_list_user_service.rb | 2 +- .../dossiers/_state_description.html.haml | 23 ++- app/views/users/dossiers/_onglets.html.haml | 2 +- spec/features/backoffice/onglets_link_spec.rb | 28 ++- spec/features/users/list_dossiers_spec.rb | 2 +- spec/features/users/onglets_link_spec.rb | 102 ++++++++++ spec/models/procedure_spec.rb | 3 +- .../users/dossiers/index_html.haml_spec.rb | 184 ++++++++++-------- 12 files changed, 269 insertions(+), 108 deletions(-) create mode 100644 spec/features/users/onglets_link_spec.rb diff --git a/Gemfile b/Gemfile index c5623d59e..e9897f411 100644 --- a/Gemfile +++ b/Gemfile @@ -132,7 +132,7 @@ group :development, :test do gem "nyan-cat-formatter" - gem 'parallel_tests' + gem 'parallel_tests', '~> 1.9.0' gem 'brakeman', require: false # Deploy diff --git a/Gemfile.lock b/Gemfile.lock index a95cf764c..c7f277ceb 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -115,7 +115,7 @@ GEM concurrent-ruby (1.0.2) crack (0.4.2) safe_yaml (~> 1.0.0) - css_splitter (0.4.4) + css_splitter (0.4.5) sprockets (>= 2.0.0) database_cleaner (1.4.1) debug_inspector (0.0.2) @@ -395,7 +395,7 @@ GEM openstack (2.0.2) json orm_adapter (0.5.0) - parallel (1.6.1) + parallel (1.9.0) parallel_tests (1.9.0) parallel parser (2.2.2.2) @@ -510,13 +510,13 @@ GEM sexp_processor (~> 4.1) rubyzip (1.1.7) safe_yaml (1.0.4) - sass (3.4.16) - sass-rails (5.0.3) - railties (>= 4.0.0, < 5.0) + sass (3.4.22) + sass-rails (5.0.6) + railties (>= 4.0.0, < 6) sass (~> 3.1) sprockets (>= 2.8, < 4.0) sprockets-rails (>= 2.0, < 4.0) - tilt (~> 1.1) + tilt (>= 1.1, < 3) sdoc (0.4.1) json (~> 1.7, >= 1.7.7) rdoc (~> 4.0) @@ -569,7 +569,7 @@ GEM ref thor (0.19.1) thread_safe (0.3.5) - tilt (1.4.1) + tilt (2.0.5) timecop (0.7.3) trollop (2.1.2) turbolinks (2.5.3) @@ -662,7 +662,7 @@ DEPENDENCIES nyan-cat-formatter openid_connect openstack - parallel_tests + parallel_tests (~> 1.9.0) pg poltergeist pry-byebug diff --git a/app/facades/dossiers_list_facades.rb b/app/facades/dossiers_list_facades.rb index 76f2d265f..576e4d55a 100644 --- a/app/facades/dossiers_list_facades.rb +++ b/app/facades/dossiers_list_facades.rb @@ -65,12 +65,12 @@ class DossiersListFacades end def a_traiter_total - service.waiting_for_gestionnaire.count if gestionnaire? + return service.waiting_for_gestionnaire.count if gestionnaire? service.waiting_for_user.count if user? end def en_attente_total - service.waiting_for_user.count if gestionnaire? + return service.waiting_for_user.count if gestionnaire? service.waiting_for_gestionnaire.count if user? end diff --git a/app/models/dossier.rb b/app/models/dossier.rb index 914bc1ca8..051438c48 100644 --- a/app/models/dossier.rb +++ b/app/models/dossier.rb @@ -41,6 +41,7 @@ class Dossier < ActiveRecord::Base NOUVEAUX = %w(initiated) WAITING_FOR_GESTIONNAIRE = %w(updated) WAITING_FOR_USER = %w(replied validated) + WAITING_FOR_USER_WITHOUT_VALIDATED = %w(replied) VALIDES = %w(validated) DEPOSES = %w(submitted) EN_INSTRUCTION = %w(submitted received) @@ -150,6 +151,10 @@ class Dossier < ActiveRecord::Base WAITING_FOR_USER.include?(state) end + def waiting_for_user_without_validated? + WAITING_FOR_USER_WITHOUT_VALIDATED.include?(state) + end + def deposes? DEPOSES.include?(state) end @@ -182,6 +187,10 @@ class Dossier < ActiveRecord::Base where(state: WAITING_FOR_USER, archived: false).order("updated_at #{order}") end + def self.waiting_for_user_without_validated order = 'ASC' + where(state: WAITING_FOR_USER_WITHOUT_VALIDATED, archived: false).order("updated_at #{order}") + end + def self.valides order = 'ASC' where(state: VALIDES, archived: false).order("updated_at #{order}") end diff --git a/app/services/dossiers_list_user_service.rb b/app/services/dossiers_list_user_service.rb index d910d0cb8..5fde39d81 100644 --- a/app/services/dossiers_list_user_service.rb +++ b/app/services/dossiers_list_user_service.rb @@ -23,7 +23,7 @@ class DossiersListUserService end def waiting_for_user - @waiting_for_user ||= @current_devise_profil.dossiers.waiting_for_user + @waiting_for_user ||= @current_devise_profil.dossiers.waiting_for_user_without_validated end def invite diff --git a/app/views/backoffice/dossiers/_state_description.html.haml b/app/views/backoffice/dossiers/_state_description.html.haml index c4c2368b9..e1cf22e9c 100644 --- a/app/views/backoffice/dossiers/_state_description.html.haml +++ b/app/views/backoffice/dossiers/_state_description.html.haml @@ -6,14 +6,25 @@ .fa.fa-info-circle.text-info{style:'font-size: 2em; margin-top: 20%'} .col-md-11.col-lg-11 -if dossiers_list_facade.liste == 'nouveaux' - plop + Tous les dossiers présents dans cette liste sont ceux qui + %b + n'ont jamais été ouvert par votre service. + Il attende une première lecture et intervention de votre part. -elsif dossiers_list_facade.liste == 'a_traiter' - plop + Tous les dossiers présents dans cette liste sont ceux qui + %b + attendent une action de votre part. + Cela peut être par exemple une demande client ou une relecture pour validation de complétude. -elsif dossiers_list_facade.liste == 'en_attente' - plop + Tous les dossiers présents dans cette liste sont ceux qui requière une action de la part de l'usager. À priori, vous n'avez donc pas d'intervention particulière à réaliser. -elsif dossiers_list_facade.liste == 'deposes' - plop + Tous les dossiers présents dans cette liste ont été + %b + officiellement déposé par l'usager pour instruction. + Il faut donc que vous confirmiez par "accusé de réception" la bonne réception de toutes les informations et documents demandés avant instruction finale. -elsif dossiers_list_facade.liste == 'a_instruire' - plop + Tous les dossiers présents dans cette liste sont à instruire. Ceux sont tous les dossiers + %b + qui ont reçu bonne réception. -elsif dossiers_list_facade.liste == 'termine' - plop + Tous les dossiers présents dans cette liste sont considérés comme cloturé car ils ont tous reçu un verdict final qui peut être "Validé", "Refusé" ou "Sans suite". diff --git a/app/views/users/dossiers/_onglets.html.haml b/app/views/users/dossiers/_onglets.html.haml index 7c6e5fc83..196d9571f 100644 --- a/app/views/users/dossiers/_onglets.html.haml +++ b/app/views/users/dossiers/_onglets.html.haml @@ -6,7 +6,7 @@ %li{ class: @dossiers_list_facade.nouveaux_class } %a{:href => "#{url_for users_dossiers_path(liste: 'nouveaux')}", 'data-toggle' => :tooltip, title: 'Les nouveaux dossiers qui n\'ont pas encore été vus par votre accompagnateur.'} %h5.text-info - = "Nouveau" + = "Nouveaux" .badge.progress-bar-info = @dossiers_list_facade.nouveaux_total diff --git a/spec/features/backoffice/onglets_link_spec.rb b/spec/features/backoffice/onglets_link_spec.rb index b3aa61e86..b88c9347c 100644 --- a/spec/features/backoffice/onglets_link_spec.rb +++ b/spec/features/backoffice/onglets_link_spec.rb @@ -4,7 +4,21 @@ feature 'on click on tabs button' do let(:administrateur) { create(:administrateur) } let(:gestionnaire) { create(:gestionnaire, administrateurs: [administrateur]) } + let(:procedure) { create :procedure, administrateur: administrateur } + before do + create(:dossier, :with_entreprise, procedure: procedure, state: 'initiated') + create(:dossier, :with_entreprise, procedure: procedure, state: 'replied') + create(:dossier, :with_entreprise, procedure: procedure, state: 'updated') + create(:dossier, :with_entreprise, procedure: procedure, state: 'validated') + create(:dossier, :with_entreprise, procedure: procedure, state: 'submitted') + create(:dossier, :with_entreprise, procedure: procedure, state: 'received') + create(:dossier, :with_entreprise, procedure: procedure, state: 'closed') + create(:dossier, :with_entreprise, procedure: procedure, state: 'refused') + create(:dossier, :with_entreprise, procedure: procedure, state: 'without_continuation') + + create :assign_to, gestionnaire: gestionnaire, procedure: procedure + login_as gestionnaire, scope: :gestionnaire end @@ -12,7 +26,7 @@ feature 'on click on tabs button' do context 'when he click on tabs nouveaux' do before do visit backoffice_dossiers_url(liste: :nouveaux) - page.click_on 'Nouveaux 0' + page.click_on 'Nouveaux 1' end scenario 'it redirect to backoffice dossier termine' do @@ -23,7 +37,7 @@ feature 'on click on tabs button' do context 'when he click on tabs a traite' do before do visit backoffice_dossiers_url(liste: :a_traiter) - page.click_on 'Action requise 0' + page.click_on 'Action requise 1' end scenario 'it redirect to backoffice dossier termine' do @@ -34,7 +48,7 @@ feature 'on click on tabs button' do context 'when he click on tabs en attente' do before do visit backoffice_dossiers_url(liste: :en_attente) - page.click_on 'Attente usager 0' + page.click_on 'Attente usager 2' end scenario 'it redirect to backoffice dossier en attente' do @@ -44,8 +58,8 @@ feature 'on click on tabs button' do context 'when he click on tabs a receptionner' do before do - visit backoffice_dossiers_url(liste: :nouveaux) - page.click_on 'À réceptionner 0' + visit backoffice_dossiers_url(liste: :deposes) + page.click_on 'À réceptionner 1' end scenario 'it redirect to backoffice dossier a_receptionner' do @@ -56,7 +70,7 @@ feature 'on click on tabs button' do context 'when he click on tabs a instruire' do before do visit backoffice_dossiers_url(liste: :a_instruire) - page.click_on 'À instruire 0' + page.click_on 'À instruire 1' end scenario 'it redirect to backoffice dossier termine' do @@ -67,7 +81,7 @@ feature 'on click on tabs button' do context 'when he click on tabs termine' do before do visit backoffice_dossiers_url(liste: :termine) - page.click_on 'Terminé 0' + page.click_on 'Terminé 3' end scenario 'it redirect to backoffice dossier termine' do diff --git a/spec/features/users/list_dossiers_spec.rb b/spec/features/users/list_dossiers_spec.rb index 22d0c1060..acf68a384 100644 --- a/spec/features/users/list_dossiers_spec.rb +++ b/spec/features/users/list_dossiers_spec.rb @@ -8,7 +8,7 @@ feature 'user access to the list of his dossier' do let!(:dossier2) { create(:dossier, :with_entreprise) } before do - dossier1.update_column(:updated_at, "19/07/2016 15:35".to_time) + dossier1.update_column(:updated_at, "19/07/2052 15:35".to_time) dossier1.entreprise.update_column(:raison_sociale, 'PLOP') last_updated_dossier.entreprise.update_column(:raison_sociale, 'PLIP') diff --git a/spec/features/users/onglets_link_spec.rb b/spec/features/users/onglets_link_spec.rb new file mode 100644 index 000000000..4e2220a40 --- /dev/null +++ b/spec/features/users/onglets_link_spec.rb @@ -0,0 +1,102 @@ +require 'spec_helper' + +feature 'on click on tabs button' do + let(:user) { create :user } + + let(:dossier_invite) { create(:dossier, :with_entreprise, user: create(:user), state: 'initiated') } + + before do + create(:dossier, :with_entreprise, user: user, state: 'initiated') + create(:dossier, :with_entreprise, user: user, state: 'replied') + create(:dossier, :with_entreprise, user: user, state: 'updated') + create(:dossier, :with_entreprise, user: user, state: 'validated') + create(:dossier, :with_entreprise, user: user, state: 'submitted') + create(:dossier, :with_entreprise, user: user, state: 'received') + create(:dossier, :with_entreprise, user: user, state: 'closed') + create(:dossier, :with_entreprise, user: user, state: 'refused') + create(:dossier, :with_entreprise, user: user, state: 'without_continuation') + + create :invite, dossier: dossier_invite, user: user + + login_as user, scope: :user + end + + context 'when user is logged in' do + context 'when he click on tabs nouveaux' do + before do + visit users_dossiers_url(liste: :nouveaux) + page.click_on 'Nouveaux 1' + end + + scenario 'it redirect to users dossier termine' do + expect(page).to have_css('#users_index') + end + end + + context 'when he click on tabs a traite' do + before do + visit users_dossiers_url(liste: :a_traiter) + page.click_on 'Action requise 1' + end + + scenario 'it redirect to users dossier termine' do + expect(page).to have_css('#users_index') + end + end + + context 'when he click on tabs en attente' do + before do + visit users_dossiers_url(liste: :en_attente) + page.click_on 'Etude en cours 1' + end + + scenario 'it redirect to users dossier en attente' do + expect(page).to have_css('#users_index') + end + end + + context 'when he click on tabs a deposes' do + before do + visit users_dossiers_url(liste: :valides) + page.click_on 'À déposer 1' + end + + scenario 'it redirect to users dossier deposes' do + expect(page).to have_css('#users_index') + end + end + + context 'when he click on tabs en instruction' do + before do + visit users_dossiers_url(liste: :en_instruction) + page.click_on 'En instruction 2' + end + + scenario 'it redirect to users dossier termine' do + expect(page).to have_css('#users_index') + end + end + + context 'when he click on tabs termine' do + before do + visit users_dossiers_url(liste: :termine) + page.click_on 'Cloturé 3' + end + + scenario 'it redirect to users dossier termine' do + expect(page).to have_css('#users_index') + end + end + + context 'when he click on tabs invitation' do + before do + visit users_dossiers_url(liste: :invite) + page.click_on 'Invitation 1' + end + + scenario 'it redirect to users dossier invites' do + expect(page).to have_css('#users_index') + end + end + end +end \ No newline at end of file diff --git a/spec/models/procedure_spec.rb b/spec/models/procedure_spec.rb index c2658a3e8..0cf700164 100644 --- a/spec/models/procedure_spec.rb +++ b/spec/models/procedure_spec.rb @@ -175,7 +175,7 @@ describe Procedure do end it 'is correctly set in ProcedurePath table' do - expect(ProcedurePath.where(path: procedure.path).count.to eq(1) + expect(ProcedurePath.where(path: procedure.path).count).to eq(1) expect(procedure_path.procedure_id).to eq(procedure.id) expect(procedure_path.administrateur_id).to eq(procedure.administrateur_id) end @@ -214,6 +214,5 @@ describe Procedure do subject { procedure.total_dossier } it { is_expected.to eq 2 } - end end diff --git a/spec/views/users/dossiers/index_html.haml_spec.rb b/spec/views/users/dossiers/index_html.haml_spec.rb index 381e607fe..c6424b4d0 100644 --- a/spec/views/users/dossiers/index_html.haml_spec.rb +++ b/spec/views/users/dossiers/index_html.haml_spec.rb @@ -3,118 +3,144 @@ require 'spec_helper' describe 'users/dossiers/index.html.haml', type: :view do let(:user) { create(:user) } - let!(:dossier) { create(:dossier, :with_entreprise, user: user, state: 'initiated').decorate } - let!(:dossier_2) { create(:dossier, :with_entreprise, user: user, state: 'replied').decorate } - let!(:dossier_3) { create(:dossier, :with_entreprise, user: user, state: 'replied').decorate } - let!(:dossier_termine) { create(:dossier, :with_entreprise, user: user, state: 'closed').decorate } + let!(:decorate_dossier_initiated) { create(:dossier, :with_entreprise, user: user, state: 'initiated').decorate } + let!(:decorate_dossier_replied) { create(:dossier, :with_entreprise, user: user, state: 'replied').decorate } + let!(:decorate_dossier_updated) { create(:dossier, :with_entreprise, user: user, state: 'updated').decorate } + let!(:decorate_dossier_validated) { create(:dossier, :with_entreprise, user: user, state: 'validated').decorate } + let!(:decorate_dossier_submitted) { create(:dossier, :with_entreprise, user: user, state: 'submitted').decorate } + let!(:decorate_dossier_received) { create(:dossier, :with_entreprise, user: user, state: 'received').decorate } + let!(:decorate_dossier_closed) { create(:dossier, :with_entreprise, user: user, state: 'closed').decorate } + let!(:decorate_dossier_refused) { create(:dossier, :with_entreprise, user: user, state: 'refused').decorate } + let!(:decorate_dossier_without_continuation) { create(:dossier, :with_entreprise, user: user, state: 'without_continuation').decorate } + let!(:decorate_dossier_invite) { create(:dossier, :with_entreprise, user: create(:user), state: 'initiated').decorate } before do - dossier_2.entreprise.update_column(:raison_sociale, 'plip') - dossier_2.entreprise.update_column(:raison_sociale, 'plop') - dossier_3.entreprise.update_column(:raison_sociale, 'plup') - dossier_termine.entreprise.update_column(:raison_sociale, 'plap') + decorate_dossier_replied.entreprise.update_column(:raison_sociale, 'plap') + decorate_dossier_updated.entreprise.update_column(:raison_sociale, 'plep') + decorate_dossier_validated.entreprise.update_column(:raison_sociale, 'plip') + decorate_dossier_submitted.entreprise.update_column(:raison_sociale, 'plop') + decorate_dossier_received.entreprise.update_column(:raison_sociale, 'plup') + decorate_dossier_closed.entreprise.update_column(:raison_sociale, 'plyp') + decorate_dossier_refused.entreprise.update_column(:raison_sociale, 'plzp') + decorate_dossier_without_continuation.entreprise.update_column(:raison_sociale, 'plnp') + + create :invite, dossier: decorate_dossier_invite, user: user end - describe 'params liste is a_traiter' do - let(:dossiers_list) { user.dossiers.waiting_for_user('DESC') } - + shared_examples 'check_tab_content' do before do sign_in user + assign :dossiers_list_facade, (DossiersListFacades.new user, liste) assign(:dossiers, (smart_listing_create :dossiers, - user.dossiers.waiting_for_user('DESC'), + dossiers_to_display, partial: "users/dossiers/list", array: true)) - assign(:liste, 'a_traiter') - assign(:dossiers_a_traiter_total, '1') - assign(:dossiers_en_attente_total, '2') - assign(:dossiers_termine_total, '1') - render end subject { rendered } - it { is_expected.to have_css('#users_index') } - - describe 'dossier replied is present' do - it { is_expected.to have_content(dossier_2.procedure.libelle) } - it { is_expected.to have_content(dossier_2.entreprise.raison_sociale) } - it { is_expected.to have_content(dossier_2.display_state) } - it { is_expected.to have_content(dossier_2.last_update) } + describe 'columns' do + it { is_expected.to have_content(decorate_dossier_at_check.procedure.libelle) } + it { is_expected.to have_content(decorate_dossier_at_check.entreprise.raison_sociale) } + it { is_expected.to have_content(decorate_dossier_at_check.display_state) } + it { is_expected.to have_content(decorate_dossier_at_check.last_update) } end - describe 'dossier initiated and closed are not present' do - it { is_expected.not_to have_content(dossier.entreprise.raison_sociale) } - it { is_expected.not_to have_content(dossier_termine.entreprise.raison_sociale) } - end + it { expect(dossiers_to_display.count).to eq total_dossiers } - describe 'badges on tabs' do - it { is_expected.to have_content('À traiter 1') } - it { is_expected.to have_content('En attente 2') } - it { is_expected.to have_content('Terminé 1') } + describe 'active tab' do + it { is_expected.to have_selector(active_class) } end end - describe 'params liste is en_attente' do - let(:dossiers_list) { user.dossiers.waiting_for_gestionnaire('DESC') } + describe 'on tab nouveaux' do + let(:total_dossiers) { 1 } + let(:active_class) { '.active .text-info' } + let(:dossiers_to_display) { user.dossiers.nouveaux } + let(:liste) { 'nouveaux' } - before do - sign_in user - - assign(:dossiers, (smart_listing_create :dossiers, - user.dossiers.waiting_for_gestionnaire('DESC'), - partial: "users/dossiers/list", - array: true)) - assign(:liste, 'en_attente') - render - end - - subject { rendered } - - it { is_expected.to have_css('#users_index') } - - describe 'dossier initiated is present' do - it { is_expected.to have_content(dossier.procedure.libelle) } - it { is_expected.to have_content(dossier.entreprise.raison_sociale) } - it { is_expected.to have_content(dossier.display_state) } - it { is_expected.to have_content(dossier.last_update) } - end - - describe 'dossier replied and closed are not present' do - it { is_expected.not_to have_content(dossier_2.entreprise.raison_sociale) } - it { is_expected.not_to have_content(dossier_termine.entreprise.raison_sociale) } + it_behaves_like 'check_tab_content' do + let(:decorate_dossier_at_check) { decorate_dossier_initiated } end end - describe 'params liste is termine' do - let(:dossiers_list) { user.dossiers.termine('DESC') } + describe 'on tab action requise' do + let(:total_dossiers) { 1 } + let(:active_class) { '.active .text-danger' } + let(:dossiers_to_display) { user.dossiers.waiting_for_user_without_validated } + let(:liste) { 'a_traiter' } - before do - sign_in user + it_behaves_like 'check_tab_content' do + let(:decorate_dossier_at_check) { decorate_dossier_replied } + end + end - assign(:dossiers, (smart_listing_create :dossiers, - user.dossiers.termine('DESC'), - partial: "users/dossiers/list", - array: true)) - assign(:liste, 'termine') - render + describe 'on tab etude en cours' do + let(:total_dossiers) { 1 } + let(:active_class) { '.active .text-default' } + let(:dossiers_to_display) { user.dossiers.waiting_for_gestionnaire } + let(:liste) { 'en_attente' } + + it_behaves_like 'check_tab_content' do + let(:decorate_dossier_at_check) { decorate_dossier_updated } + end + end + + describe 'on tab etude a deposer' do + let(:total_dossiers) { 1 } + let(:active_class) { '.active .text-purple' } + let(:dossiers_to_display) { user.dossiers.valides } + let(:liste) { 'valides' } + + it_behaves_like 'check_tab_content' do + let(:decorate_dossier_at_check) { decorate_dossier_validated } + end + end + + describe 'on tab etude en instruction' do + let(:total_dossiers) { 2 } + let(:active_class) { '.active .text-default' } + let(:dossiers_to_display) { user.dossiers.en_instruction } + let(:liste) { 'en_instruction' } + + it_behaves_like 'check_tab_content' do + let(:decorate_dossier_at_check) { decorate_dossier_submitted } end - subject { rendered } + it_behaves_like 'check_tab_content' do + let(:decorate_dossier_at_check) { decorate_dossier_received } + end + end - it { is_expected.to have_css('#users_index') } + describe 'on tab etude termine' do + let(:total_dossiers) { 3 } + let(:active_class) { '.active .text-success' } + let(:dossiers_to_display) { user.dossiers.termine } + let(:liste) { 'termine' } - describe 'dossier termine is present' do - it { is_expected.to have_content(dossier_termine.procedure.libelle) } - it { is_expected.to have_content(dossier_termine.entreprise.raison_sociale) } - it { is_expected.to have_content(dossier_termine.display_state) } - it { is_expected.to have_content(dossier_termine.last_update) } + it_behaves_like 'check_tab_content' do + let(:decorate_dossier_at_check) { decorate_dossier_closed } end - describe 'dossier initiated and replied are not present' do - it { is_expected.not_to have_content(dossier.entreprise.raison_sociale) } - it { is_expected.not_to have_content(dossier_2.entreprise.raison_sociale) } + it_behaves_like 'check_tab_content' do + let(:decorate_dossier_at_check) { decorate_dossier_refused } + end + + it_behaves_like 'check_tab_content' do + let(:decorate_dossier_at_check) { decorate_dossier_without_continuation } + end + end + + describe 'on tab etude invite' do + let(:total_dossiers) { 1 } + let(:active_class) { '.active .text-warning' } + let(:dossiers_to_display) { user.invites } + let(:liste) { 'invite' } + + it_behaves_like 'check_tab_content' do + let(:decorate_dossier_at_check) { decorate_dossier_invite } end end end \ No newline at end of file From 5b0e01f117a672c952e1eb084283d724de2b1a19 Mon Sep 17 00:00:00 2001 From: Xavier J Date: Mon, 22 Aug 2016 16:36:25 +0200 Subject: [PATCH 08/53] delete filter procedure for gestionnaire --- .../backoffice/procedure_filter_controller.rb | 16 ----- app/models/dossier.rb | 4 +- app/models/gestionnaire.rb | 8 --- .../dossiers_list_gestionnaire_service.rb | 12 ++-- .../procedure_filter/index.html.haml | 16 ----- .../gestionnaires/_login_banner.html.haml | 23 ++----- app/views/layouts/_navbar.html.haml | 14 +---- app/views/users/_login_banner.html.haml | 13 ++++ config/routes.rb | 3 - ...142045_delete_value_of_filter_procedure.rb | 9 +++ db/schema.rb | 2 +- .../procedure_filter_controller_spec.rb | 62 ------------------- spec/models/gestionnaire_spec.rb | 30 --------- .../procedure_filter/index_html.haml_spec.rb | 37 ----------- spec/views/layouts/_navbar_spec.rb | 2 +- 15 files changed, 39 insertions(+), 212 deletions(-) delete mode 100644 app/controllers/backoffice/procedure_filter_controller.rb delete mode 100644 app/views/backoffice/procedure_filter/index.html.haml create mode 100644 app/views/users/_login_banner.html.haml create mode 100644 db/migrate/20160822142045_delete_value_of_filter_procedure.rb delete mode 100644 spec/controllers/backoffice/procedure_filter_controller_spec.rb delete mode 100644 spec/views/backoffice/procedure_filter/index_html.haml_spec.rb diff --git a/app/controllers/backoffice/procedure_filter_controller.rb b/app/controllers/backoffice/procedure_filter_controller.rb deleted file mode 100644 index 97f0bc57d..000000000 --- a/app/controllers/backoffice/procedure_filter_controller.rb +++ /dev/null @@ -1,16 +0,0 @@ -class Backoffice::ProcedureFilterController < ApplicationController - before_action :authenticate_gestionnaire! - - def index - @gestionnaire = current_gestionnaire - @procedures = current_gestionnaire.procedures - end - - def update - - current_gestionnaire.update_attribute(:procedure_filter, (params[:procedure_filter].nil? ? [] : params[:procedure_filter])) - - flash.notice = 'Filtre mis à jour' - redirect_to backoffice_filtres_path - end -end \ No newline at end of file diff --git a/app/models/dossier.rb b/app/models/dossier.rb index 051438c48..120d56f35 100644 --- a/app/models/dossier.rb +++ b/app/models/dossier.rb @@ -235,12 +235,12 @@ class Dossier < ActiveRecord::Base #TODO refactor composed_scope = composed_scope.where( - dossiers[:id].eq_any(current_gestionnaire.dossiers_filter.ids).and\ + dossiers[:id].eq_any(current_gestionnaire.dossiers.ids).and\ dossiers[:state].does_not_match('draft').and\ dossiers[:archived].eq(false)) begin - if Float(terms) && terms.to_i <= 2147483647 && current_gestionnaire.dossiers_filter.ids.include?(terms.to_i) + if Float(terms) && terms.to_i <= 2147483647 && current_gestionnaire.dossiers.ids.include?(terms.to_i) dossier = Dossier.where("state != 'draft'").find(terms.to_i) end rescue ArgumentError, ActiveRecord::RecordNotFound diff --git a/app/models/gestionnaire.rb b/app/models/gestionnaire.rb index 5f9d2baff..68d8f30ee 100644 --- a/app/models/gestionnaire.rb +++ b/app/models/gestionnaire.rb @@ -12,18 +12,10 @@ class Gestionnaire < ActiveRecord::Base after_create :build_default_preferences_list_dossier - def dossiers_filter - dossiers.where(procedure_id: procedure_filter_list) - end - def dossiers_follow dossiers.joins(:follows).where("follows.gestionnaire_id = #{id}") end - def procedure_filter_list - procedure_filter.empty? ? procedures.pluck(:id) : procedure_filter - end - def toggle_follow_dossier dossier_id dossier = dossier_id dossier = Dossier.find(dossier_id) unless dossier_id.class == Dossier diff --git a/app/services/dossiers_list_gestionnaire_service.rb b/app/services/dossiers_list_gestionnaire_service.rb index 1f72288a7..2ef534620 100644 --- a/app/services/dossiers_list_gestionnaire_service.rb +++ b/app/services/dossiers_list_gestionnaire_service.rb @@ -15,27 +15,27 @@ class DossiersListGestionnaireService end def nouveaux - @nouveaux ||= @current_devise_profil.dossiers_filter.nouveaux + @nouveaux ||= @current_devise_profil.dossiers.nouveaux end def waiting_for_gestionnaire - @waiting_for_gestionnaire ||= @current_devise_profil.dossiers_filter.waiting_for_gestionnaire + @waiting_for_gestionnaire ||= @current_devise_profil.dossiers.waiting_for_gestionnaire end def waiting_for_user - @waiting_for_user ||= @current_devise_profil.dossiers_filter.waiting_for_user + @waiting_for_user ||= @current_devise_profil.dossiers.waiting_for_user end def deposes - @deposes ||= @current_devise_profil.dossiers_filter.deposes + @deposes ||= @current_devise_profil.dossiers.deposes end def a_instruire - @a_instruire ||= @current_devise_profil.dossiers_filter.a_instruire + @a_instruire ||= @current_devise_profil.dossiers.a_instruire end def termine - @termine ||= @current_devise_profil.dossiers_filter.termine + @termine ||= @current_devise_profil.dossiers.termine end def suivi diff --git a/app/views/backoffice/procedure_filter/index.html.haml b/app/views/backoffice/procedure_filter/index.html.haml deleted file mode 100644 index d616eb6a2..000000000 --- a/app/views/backoffice/procedure_filter/index.html.haml +++ /dev/null @@ -1,16 +0,0 @@ -%h2.text-primary Filtre des procédures -%h4 Sélectionnez les procédures que vous souhaitez suivre. - -= form_for @gestionnaire, url:{controller: 'backoffice/procedure_filter', action: :update } do |f| - .input-group - - @procedures.each do |procedure| - .checkbox - %label - = check_box_tag 'procedure_filter[]', procedure.id, (true if @gestionnaire.procedure_filter.include?(procedure.id)) - = procedure.libelle - %br - = submit_tag 'Valider', class: 'btn btn-primary' - -%br -%b - Aucune sélection = voir tout \ No newline at end of file diff --git a/app/views/gestionnaires/_login_banner.html.haml b/app/views/gestionnaires/_login_banner.html.haml index 0a4d33e33..40651db9d 100644 --- a/app/views/gestionnaires/_login_banner.html.haml +++ b/app/views/gestionnaires/_login_banner.html.haml @@ -1,17 +1,6 @@ -%div{ style: "decorate:none; display: flex;box-shadow:none; float:right; display: flex" } - %div{ style: "vertical-align: middle; margin-right: 10px; margin-top: auto; margin-bottom: auto;" } - = current_gestionnaire.email - .dropdown#admin_menu - %button.btn.btn-default.dropdown-toggle#dropdownMenuAdmin{ type: :button, 'data-toggle' => 'dropdown', 'aria-haspopup' => true, 'aria-expanded' => false} - %i.fa.fa-cog - %span.caret - %ul.dropdown-menu.dropdown-menu-right - %li - = link_to(backoffice_filtres_path, id: :filter) do - %i.fa.fa-list -  Filtre procédure - %li.divider{ role: :separator} - %li - = link_to('/gestionnaires/sign_out',id: :admin_sign_out, method: :delete) do - %i.fa.fa-power-off -  Se déconnecter +%div.user + + %i.fa.fa-user + = current_gestionnaire.email + + = link_to "Déconnexion", '/gestionnaires/sign_out', method: :delete, :class => 'btn btn-md' \ No newline at end of file diff --git a/app/views/layouts/_navbar.html.haml b/app/views/layouts/_navbar.html.haml index 2849be7cf..718624635 100644 --- a/app/views/layouts/_navbar.html.haml +++ b/app/views/layouts/_navbar.html.haml @@ -18,19 +18,7 @@ -elsif administrateur_signed_in? = render partial: 'administrateurs/login_banner' - elsif user_signed_in? - %div.user - -if current_user.loged_in_with_france_connect? - %div{ id: "fconnect-profile", "data-fc-logout-url" => '/users/sign_out" data-method="delete' } - %a.text-info{ href: "#" } - = "#{current_user.given_name} #{current_user.family_name}" - - = link_to "", '/users/sign_out', method: :delete, :class => 'btn fa fa-power-off off-fc-link' - - -else - %i.fa.fa-user - = current_user.email - - = link_to "Déconnexion", '/users/sign_out', method: :delete, :class => 'btn btn-md' + = render partial: 'users/login_banner' - else = link_to "Utilisateur", '/users/sign_in', method: :get, :class => 'btn btn-md' = link_to "Accompagnateur", '/gestionnaires/sign_in', method: :get, :class => 'btn btn-md' diff --git a/app/views/users/_login_banner.html.haml b/app/views/users/_login_banner.html.haml new file mode 100644 index 000000000..f467eebea --- /dev/null +++ b/app/views/users/_login_banner.html.haml @@ -0,0 +1,13 @@ +%div.user + -if current_user.loged_in_with_france_connect? + %div{ id: "fconnect-profile", "data-fc-logout-url" => '/users/sign_out" data-method="delete' } + %a.text-info{ href: "#" } + = "#{current_user.given_name} #{current_user.family_name}" + + = link_to "", '/users/sign_out', method: :delete, :class => 'btn fa fa-power-off off-fc-link' + + -else + %i.fa.fa-user + = current_user.email + + = link_to "Déconnexion", '/users/sign_out', method: :delete, :class => 'btn btn-md' \ No newline at end of file diff --git a/config/routes.rb b/config/routes.rb index 66e600ab1..9c582b394 100644 --- a/config/routes.rb +++ b/config/routes.rb @@ -142,9 +142,6 @@ Rails.application.routes.draw do get 'dossiers/search' => 'dossiers#search' - get 'filtres' => 'procedure_filter#index' - patch 'filtres/update' => 'procedure_filter#update' - resource :private_formulaire namespace :preference_list_dossier do diff --git a/db/migrate/20160822142045_delete_value_of_filter_procedure.rb b/db/migrate/20160822142045_delete_value_of_filter_procedure.rb new file mode 100644 index 000000000..f541aefc9 --- /dev/null +++ b/db/migrate/20160822142045_delete_value_of_filter_procedure.rb @@ -0,0 +1,9 @@ +class DeleteValueOfFilterProcedure < ActiveRecord::Migration + class Gestionnaire < ActiveRecord::Base + + end + + def change + Gestionnaire.all.update_all(procedure_filter: '{}') + end +end diff --git a/db/schema.rb b/db/schema.rb index 86f0bac18..80b669500 100644 --- a/db/schema.rb +++ b/db/schema.rb @@ -11,7 +11,7 @@ # # It's strongly recommended that you check this file into your version control system. -ActiveRecord::Schema.define(version: 20160809083606) do +ActiveRecord::Schema.define(version: 20160822142045) do # These are extensions that must be enabled in order to support this database enable_extension "plpgsql" diff --git a/spec/controllers/backoffice/procedure_filter_controller_spec.rb b/spec/controllers/backoffice/procedure_filter_controller_spec.rb deleted file mode 100644 index 4f8aac276..000000000 --- a/spec/controllers/backoffice/procedure_filter_controller_spec.rb +++ /dev/null @@ -1,62 +0,0 @@ -require 'spec_helper' - -describe Backoffice::ProcedureFilterController, type: :controller do - let(:gestionnaire) { create :gestionnaire } - - before do - sign_in gestionnaire - end - - describe '#GET index' do - subject { get :index } - - before do - subject - end - - it { expect(response.status).to eq 200 } - end - - describe '#PATCH update' do - context 'when procedure_filter params is not present' do - subject { patch :update } - - before do - subject - end - - it { is_expected.to redirect_to backoffice_filtres_path } - it { expect(gestionnaire.procedure_filter).to eq [] } - end - - context 'when procedure_filter attribut is not empty and procedure_filter params is not present' do - let(:gestionnaire) { create :gestionnaire, procedure_filter: [3,2] } - - subject { patch :update } - - before do - subject - gestionnaire.reload - end - - it { is_expected.to redirect_to backoffice_filtres_path } - it { expect(gestionnaire.procedure_filter).to eq [] } - end - - context 'when procedure_filter params is present' do - let (:procedure_filter) { ["3", "1"] } - - subject { patch :update, procedure_filter: procedure_filter } - - before do - subject - gestionnaire.reload - end - - it { is_expected.to redirect_to backoffice_filtres_path } - it { expect(gestionnaire.procedure_filter.size).to eq 2 } - it { expect(gestionnaire.procedure_filter).to include 1 } - it { expect(gestionnaire.procedure_filter).to include 3 } - end - end -end diff --git a/spec/models/gestionnaire_spec.rb b/spec/models/gestionnaire_spec.rb index ff8762702..dc5841a82 100644 --- a/spec/models/gestionnaire_spec.rb +++ b/spec/models/gestionnaire_spec.rb @@ -35,36 +35,6 @@ describe Gestionnaire, type: :model do it { is_expected.to have_many(:preference_list_dossiers) } end - describe '#dossiers_filter' do - let!(:dossier) { create :dossier, procedure: procedure } - - subject { gestionnaire.dossiers_filter } - - context 'before filter' do - it { expect(subject.size).to eq 1 } - end - - context 'after filter' do - let(:procedure_filter) { [procedure_2.id] } - - it { expect(subject.size).to eq 0 } - end - end - - describe '#procedure_filter_list' do - subject { gestionnaire.procedure_filter_list } - - context 'when gestionnaire procedure_filter is empty' do - it { expect(subject).to eq [procedure.id, procedure_2.id] } - end - - context 'when gestionnaire procedure_filter is no empty' do - let(:procedure_filter) { [procedure.id] } - - it { expect(subject).to eq [procedure.id] } - end - end - describe '#toggle_follow_dossier' do let!(:dossier) { create :dossier, procedure: procedure } diff --git a/spec/views/backoffice/procedure_filter/index_html.haml_spec.rb b/spec/views/backoffice/procedure_filter/index_html.haml_spec.rb deleted file mode 100644 index 3f4a8b442..000000000 --- a/spec/views/backoffice/procedure_filter/index_html.haml_spec.rb +++ /dev/null @@ -1,37 +0,0 @@ -require 'spec_helper' - -describe 'backoffice/procedure_filter/index.html.haml', type: :view do - let(:administrateur) { create :administrateur } - - before do - create :procedure, libelle: 'plip', administrateur: administrateur - create :procedure, libelle: 'plop', administrateur: administrateur - create :procedure, libelle: 'plap', administrateur: administrateur - end - - context 'when gestionnaire have already check procedure' do - let(:gestionnaire) { create(:gestionnaire, - administrateurs: [administrateur], - procedure_filter: [administrateur.procedures.first.id, - administrateur.procedures.last.id]) } - - before do - create :assign_to, gestionnaire: gestionnaire, procedure: administrateur.procedures.first - create :assign_to, gestionnaire: gestionnaire, procedure: administrateur.procedures.second - create :assign_to, gestionnaire: gestionnaire, procedure: administrateur.procedures.last - - sign_in gestionnaire - - assign(:gestionnaire, gestionnaire) - assign(:procedures, gestionnaire.procedures) - - render - end - - subject { rendered } - - it { is_expected.to have_content('Filtre des procédures') } - it { is_expected.to have_css("input[type=checkbox][value='#{gestionnaire.procedures.first.id}'][checked=checked]") } - it { is_expected.to have_css("input[type=checkbox][value='#{gestionnaire.procedures.last.id}'][checked=checked]") } - end -end \ No newline at end of file diff --git a/spec/views/layouts/_navbar_spec.rb b/spec/views/layouts/_navbar_spec.rb index 3c3156d6d..dab6e8493 100644 --- a/spec/views/layouts/_navbar_spec.rb +++ b/spec/views/layouts/_navbar_spec.rb @@ -52,7 +52,7 @@ describe 'layouts/_navbar.html.haml', type: :view do it { is_expected.not_to match(/href="\/administrateurs\/sign_in">Administrateur/) } it { is_expected.not_to match(/Mes Procédures/) } it { is_expected.to match(/Mes Dossiers/) } - it { is_expected.to match(/Se déconnecter/) } + it { is_expected.to match(/Déconnexion/) } end end From 42943aad19543edab580ee49913e562ad644164e Mon Sep 17 00:00:00 2001 From: Xavier J Date: Wed, 24 Aug 2016 11:40:53 +0200 Subject: [PATCH 09/53] Explicit the use of lien_demarche attr --- app/assets/javascripts/procedure.js | 19 +++++++++++++++++-- app/assets/stylesheets/procedure.scss | 4 ++++ .../admin/procedures/_informations.html.haml | 5 ++++- .../dossiers/_pieces_justificatives.html.haml | 3 --- .../_pieces_justificatives.html.haml | 12 +++++++++++- app/views/users/description/_show.html.haml | 4 ++-- 6 files changed, 38 insertions(+), 9 deletions(-) diff --git a/app/assets/javascripts/procedure.js b/app/assets/javascripts/procedure.js index ab110a53f..875e5f504 100644 --- a/app/assets/javascripts/procedure.js +++ b/app/assets/javascripts/procedure.js @@ -1,5 +1,10 @@ -$(document).on('page:load', buttons_api_carto); -$(document).ready(buttons_api_carto); +$(document).on('page:load', button_edit_procedure_init); +$(document).ready(button_edit_procedure_init); + +function button_edit_procedure_init(){ + buttons_api_carto(); + button_cerfa(); +} function buttons_api_carto () { @@ -9,4 +14,14 @@ function buttons_api_carto () { if ($('#procedure_module_api_carto_use_api_carto').is(':checked')) $("#modules_api_carto").show(); +} + +function button_cerfa () { + + $("#procedure_cerfa_flag").on('change', function() { + $("#procedure_lien_demarche").toggle() + }); + + if ($('#procedure_cerfa_flag').is(':checked')) + $("#procedure_lien_demarche").show(); } \ No newline at end of file diff --git a/app/assets/stylesheets/procedure.scss b/app/assets/stylesheets/procedure.scss index 9edc53793..c35fb74aa 100644 --- a/app/assets/stylesheets/procedure.scss +++ b/app/assets/stylesheets/procedure.scss @@ -1,3 +1,7 @@ #modules_api_carto { display: none; +} + +#procedure_lien_demarche{ + display: none; } \ No newline at end of file diff --git a/app/views/admin/procedures/_informations.html.haml b/app/views/admin/procedures/_informations.html.haml index 6be1a248f..264dd40b1 100644 --- a/app/views/admin/procedures/_informations.html.haml +++ b/app/views/admin/procedures/_informations.html.haml @@ -1,7 +1,7 @@ %br --{libelle: 'Libellé*', description: 'Description*', lien_demarche: 'Lien démarche', organisation: 'Organisation', direction: 'Direction'}.each do |key, value| +-{libelle: 'Libellé*', description: 'Description*', organisation: 'Organisation', direction: 'Direction'}.each do |key, value| .form-group{class: ('has-error' if @procedure.errors.messages[key])} %h4 =value @@ -47,8 +47,11 @@ %label = ff.check_box :cadastre Cadastre + .col-md-6.col-lg-6 %h4 Formulaire / CERFA %label =f.check_box :cerfa_flag Activer l'envoi de formulaire / CERFA + %br + =f.text_field :lien_demarche, class: 'form-control', placeholder: 'URL vers le formulaire vierge (facultatif)' diff --git a/app/views/dossiers/_pieces_justificatives.html.haml b/app/views/dossiers/_pieces_justificatives.html.haml index 69a367896..18fedcae7 100644 --- a/app/views/dossiers/_pieces_justificatives.html.haml +++ b/app/views/dossiers/_pieces_justificatives.html.haml @@ -7,9 +7,6 @@ ='Formulaire' %td.col-lg-6.col-md-6 - if @facade.dossier.cerfa_available? - -#- if user_signed_in? - -# = 'Pièce fournie' - -#- elsif gestionnaire_signed_in? %a{ href: "#{@facade.dossier.cerfa.last.content_url}", target: '_blank' } Consulter %span{style:'margin-left:12px'} \- diff --git a/app/views/users/description/_pieces_justificatives.html.haml b/app/views/users/description/_pieces_justificatives.html.haml index e440520e8..df889d102 100644 --- a/app/views/users/description/_pieces_justificatives.html.haml +++ b/app/views/users/description/_pieces_justificatives.html.haml @@ -2,7 +2,7 @@ - if @dossier.procedure.cerfa_flag %tr %th{class:'col-lg-6'} - ='Formulaire' + ='Formulaire / CERFA' %td{class:'col-lg-5'} -if @dossier.cerfa_available? @@ -27,3 +27,13 @@ Modifier = file_field_tag "piece_justificative_#{type_de_piece_justificative.id}", accept: PieceJustificative.accept_format, :max_file_size => 3.megabytes + +#state_description.row{style:'width: 50%; margin-left:20px'} + .panel.panel-info + .panel-body.center + .row + .col-md-1.col-lg-1 + .fa.fa-info-circle.text-info{style:'font-size: 2em; margin-top: 20%'} + .col-md-11.col-lg-11 + Les documents administratifs ne sont pas indispensable afin d'initier votre dossier. + Vous pourrez dans tous les cas les compléter plus tard si vous ne les possédez pas de suite. \ No newline at end of file diff --git a/app/views/users/description/_show.html.haml b/app/views/users/description/_show.html.haml index 463ac15e8..df4862777 100644 --- a/app/views/users/description/_show.html.haml +++ b/app/views/users/description/_show.html.haml @@ -16,8 +16,8 @@ -unless @procedure.lien_demarche.blank? %p - Formulaire / documentation de la démarche : - %a{style:'font-size:0.9em; padding-left:3px', id: 'lien_cerfa' ,href: "#{@procedure.lien_demarche}", :target => '_blank'} Accéder + Récupérer le formulaire / CERFA vierge pour mon dossier : + %a{style:'font-size:0.9em; padding-left:3px', id: 'lien_cerfa' ,href: "#{@procedure.lien_demarche}", :target => '_blank'} Télécharger %br From c700701b366b8f4552b6214e462f0b7ff8eda66b Mon Sep 17 00:00:00 2001 From: Xavier J Date: Wed, 24 Aug 2016 12:14:25 +0200 Subject: [PATCH 10/53] Add lien_site_web attr and lien_notice attr --- app/controllers/admin/procedures_controller.rb | 2 +- .../admin/procedures/_informations.html.haml | 2 +- app/views/dossiers/etapes/_etape1.html.haml | 6 +++++- app/views/users/description/_show.html.haml | 15 ++++++++++++++- ...094151_add_lien_site_web_in_procedure_table.rb | 5 +++++ ...24094451_add_lien_notice_in_procedure_table.rb | 5 +++++ db/schema.rb | 4 +++- 7 files changed, 34 insertions(+), 5 deletions(-) create mode 100644 db/migrate/20160824094151_add_lien_site_web_in_procedure_table.rb create mode 100644 db/migrate/20160824094451_add_lien_notice_in_procedure_table.rb diff --git a/app/controllers/admin/procedures_controller.rb b/app/controllers/admin/procedures_controller.rb index 1f6539c6d..a6e8f7fec 100644 --- a/app/controllers/admin/procedures_controller.rb +++ b/app/controllers/admin/procedures_controller.rb @@ -187,7 +187,7 @@ class Admin::ProceduresController < AdminController private def create_procedure_params - params.require(:procedure).permit(:libelle, :description, :organisation, :direction, :lien_demarche, :euro_flag, :logo, :cerfa_flag, module_api_carto_attributes: [:id, :use_api_carto, :quartiers_prioritaires, :cadastre]).merge(administrateur_id: current_administrateur.id) + params.require(:procedure).permit(:libelle, :description, :organisation, :direction, :lien_demarche, :lien_site_web, :lien_notice, :euro_flag, :logo, :cerfa_flag, module_api_carto_attributes: [:id, :use_api_carto, :quartiers_prioritaires, :cadastre]).merge(administrateur_id: current_administrateur.id) end def create_module_api_carto_params diff --git a/app/views/admin/procedures/_informations.html.haml b/app/views/admin/procedures/_informations.html.haml index 264dd40b1..c28e08a77 100644 --- a/app/views/admin/procedures/_informations.html.haml +++ b/app/views/admin/procedures/_informations.html.haml @@ -1,7 +1,7 @@ %br --{libelle: 'Libellé*', description: 'Description*', organisation: 'Organisation', direction: 'Direction'}.each do |key, value| +-{libelle: 'Libellé*', description: 'Description*', organisation: 'Organisation', direction: 'Direction', lien_site_web: 'Lien site internet', lien_notice: 'Lien notice'}.each do |key, value| .form-group{class: ('has-error' if @procedure.errors.messages[key])} %h4 =value diff --git a/app/views/dossiers/etapes/_etape1.html.haml b/app/views/dossiers/etapes/_etape1.html.haml index 9b3a10025..b6353413c 100644 --- a/app/views/dossiers/etapes/_etape1.html.haml +++ b/app/views/dossiers/etapes/_etape1.html.haml @@ -17,4 +17,8 @@ = @facade.procedure.libelle %p#description_procedure{style:'width: 95%;', class: (@facade.entreprise.nil? ? '' : 'mask')} - = h @facade.procedure.description.html_safe \ No newline at end of file + = h @facade.procedure.description.html_safe + + - unless @facade.procedure.lien_site_web.blank? + .center + =link_to truncate(@facade.procedure.lien_site_web, length: 40), @facade.procedure.lien_site_web, {target: '_blank'} \ No newline at end of file diff --git a/app/views/users/description/_show.html.haml b/app/views/users/description/_show.html.haml index df4862777..294884e26 100644 --- a/app/views/users/description/_show.html.haml +++ b/app/views/users/description/_show.html.haml @@ -1,6 +1,19 @@ .container#description_page - %h2 + - unless @dossier.procedure.lien_notice.blank? + #lien_notice_panel.row{style:'width: 280px; position: fixed; background-color: white; right: 5%; top: 80px;'} + .panel.panel-info{style:'margin-bottom:0'} + .panel-body.center + .row + .col-md-1.col-lg-1 + .fa.fa-info-circle.text-info{style:'font-size: 2em; margin-top: 20%'} + .col-md-10.col-lg-10{style:'padding-right: 0px'} + %b + =link_to 'Accéder au guide', @dossier.procedure.lien_notice, {target: '_blank'} + pour remplir pour votre dossier + + %h2.text-info = @dossier.procedure.libelle + %h3 Votre dossier -#TODO use form_for diff --git a/db/migrate/20160824094151_add_lien_site_web_in_procedure_table.rb b/db/migrate/20160824094151_add_lien_site_web_in_procedure_table.rb new file mode 100644 index 000000000..3635b2cd9 --- /dev/null +++ b/db/migrate/20160824094151_add_lien_site_web_in_procedure_table.rb @@ -0,0 +1,5 @@ +class AddLienSiteWebInProcedureTable < ActiveRecord::Migration + def change + add_column :procedures, :lien_site_web, :string + end +end diff --git a/db/migrate/20160824094451_add_lien_notice_in_procedure_table.rb b/db/migrate/20160824094451_add_lien_notice_in_procedure_table.rb new file mode 100644 index 000000000..218805fee --- /dev/null +++ b/db/migrate/20160824094451_add_lien_notice_in_procedure_table.rb @@ -0,0 +1,5 @@ +class AddLienNoticeInProcedureTable < ActiveRecord::Migration + def change + add_column :procedures, :lien_notice, :string + end +end diff --git a/db/schema.rb b/db/schema.rb index 80b669500..a6e5f6713 100644 --- a/db/schema.rb +++ b/db/schema.rb @@ -11,7 +11,7 @@ # # It's strongly recommended that you check this file into your version control system. -ActiveRecord::Schema.define(version: 20160822142045) do +ActiveRecord::Schema.define(version: 20160824094451) do # These are extensions that must be enabled in order to support this database enable_extension "plpgsql" @@ -276,6 +276,8 @@ ActiveRecord::Schema.define(version: 20160822142045) do t.boolean "cerfa_flag", default: false t.string "logo_secure_token" t.boolean "published", default: false, null: false + t.string "lien_site_web" + t.string "lien_notice" end create_table "quartier_prioritaires", force: :cascade do |t| From dd03b96e0c911d92707aca2ed29b0ffca2e41ac7 Mon Sep 17 00:00:00 2001 From: Xavier J Date: Wed, 24 Aug 2016 15:17:40 +0200 Subject: [PATCH 11/53] Disabled link on rich textarea --- app/assets/javascripts/bootstrap_wysihtml5.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/assets/javascripts/bootstrap_wysihtml5.js b/app/assets/javascripts/bootstrap_wysihtml5.js index 7537a1656..479404c3c 100644 --- a/app/assets/javascripts/bootstrap_wysihtml5.js +++ b/app/assets/javascripts/bootstrap_wysihtml5.js @@ -3,6 +3,6 @@ $(document).on('page:load', wysihtml5_active); function wysihtml5_active (){ $('.wysihtml5').each(function(i, elem) { - $(elem).wysihtml5({ toolbar:{ "fa": true } }); + $(elem).wysihtml5({ toolbar:{ "fa": true, "link": false } }); }); } \ No newline at end of file From 3ebdab23a9cb320f15f32a13592ed3190570af22 Mon Sep 17 00:00:00 2001 From: Xavier J Date: Wed, 24 Aug 2016 15:32:41 +0200 Subject: [PATCH 12/53] Enable french local on rich textarea --- app/assets/javascripts/bootstrap_wysihtml5.js | 2 +- app/assets/stylesheets/application.scss | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/app/assets/javascripts/bootstrap_wysihtml5.js b/app/assets/javascripts/bootstrap_wysihtml5.js index 479404c3c..4f1ed7bcf 100644 --- a/app/assets/javascripts/bootstrap_wysihtml5.js +++ b/app/assets/javascripts/bootstrap_wysihtml5.js @@ -3,6 +3,6 @@ $(document).on('page:load', wysihtml5_active); function wysihtml5_active (){ $('.wysihtml5').each(function(i, elem) { - $(elem).wysihtml5({ toolbar:{ "fa": true, "link": false } }); + $(elem).wysihtml5({ toolbar:{ "fa": true, "link": false, "color": true }, "locale": "fr-FR" }); }); } \ No newline at end of file diff --git a/app/assets/stylesheets/application.scss b/app/assets/stylesheets/application.scss index 8f625624f..cb7b0123c 100644 --- a/app/assets/stylesheets/application.scss +++ b/app/assets/stylesheets/application.scss @@ -18,10 +18,10 @@ *= require leaflet *= require font-awesome *= require franceconnect + *= require bootstrap-wysihtml5 */ @import "bootstrap-sprockets"; @import "bootstrap"; -@import "bootstrap-wysihtml5/bootstrap3-wysihtml5"; body { background-color: rgb(255, 255, 255); From b16c5d7beaf74557b9a2044efcfa592363915954 Mon Sep 17 00:00:00 2001 From: Xavier J Date: Wed, 24 Aug 2016 15:51:16 +0200 Subject: [PATCH 13/53] Renate site web link on etape 1 page. --- app/views/dossiers/etapes/_etape1.html.haml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/views/dossiers/etapes/_etape1.html.haml b/app/views/dossiers/etapes/_etape1.html.haml index b6353413c..70c1e11fb 100644 --- a/app/views/dossiers/etapes/_etape1.html.haml +++ b/app/views/dossiers/etapes/_etape1.html.haml @@ -21,4 +21,4 @@ - unless @facade.procedure.lien_site_web.blank? .center - =link_to truncate(@facade.procedure.lien_site_web, length: 40), @facade.procedure.lien_site_web, {target: '_blank'} \ No newline at end of file + =link_to 'En savoir plus ...', @facade.procedure.lien_site_web, {target: '_blank'} \ No newline at end of file From 39df032c8c51dc5472091b1848fdb32cd22cb018 Mon Sep 17 00:00:00 2001 From: Guillaume Lazzara Date: Wed, 24 Aug 2016 17:05:38 +0200 Subject: [PATCH 14/53] Translate type de champ values --- app/models/type_de_champ.rb | 4 ++++ .../admin/types_de_champ/_fields.html.haml | 2 +- config/locales/models/type_de_champ/fr.yml | 20 +++++++++++++++++++ spec/features/admin/add_type_de_champ_spec.rb | 7 ++++--- 4 files changed, 29 insertions(+), 4 deletions(-) create mode 100644 config/locales/models/type_de_champ/fr.yml diff --git a/app/models/type_de_champ.rb b/app/models/type_de_champ.rb index 4292aa8c7..db33a1a9c 100644 --- a/app/models/type_de_champ.rb +++ b/app/models/type_de_champ.rb @@ -26,4 +26,8 @@ class TypeDeChamp < ActiveRecord::Base validates :libelle, presence: true, allow_blank: false, allow_nil: false validates :type_champ, presence: true, allow_blank: false, allow_nil: false # validates :order_place, presence: true, allow_blank: false, allow_nil: false + + def self.type_de_champs_list_fr + type_champs.map { |champ| [ I18n.t("activerecord.attributes.type_de_champ.type_champs.#{champ.last}"), champ.first ] } + end end \ No newline at end of file diff --git a/app/views/admin/types_de_champ/_fields.html.haml b/app/views/admin/types_de_champ/_fields.html.haml index 3b9c5c6f9..649be960e 100644 --- a/app/views/admin/types_de_champ/_fields.html.haml +++ b/app/views/admin/types_de_champ/_fields.html.haml @@ -6,7 +6,7 @@ .form-group.type %h4 Type - = ff.select :type_champ, TypeDeChamp.type_champs, {}, {class: 'form-control type_champ'} + = ff.select :type_champ, TypeDeChamp.type_de_champs_list_fr, {}, {class: 'form-control type_champ'} .form-group.description %h4 Description diff --git a/config/locales/models/type_de_champ/fr.yml b/config/locales/models/type_de_champ/fr.yml new file mode 100644 index 000000000..2c53daf98 --- /dev/null +++ b/config/locales/models/type_de_champ/fr.yml @@ -0,0 +1,20 @@ +fr: + activerecord: + models: + type_de_champ: 'Type de champ' + attributes: + type_de_champ: + type_champs: + text: 'Texte' + textarea: 'Zone de texte' + date: 'Date' + datetime: 'Date et Heure' + number: 'Nombre' + checkbox: 'checkbox' + civilite: 'Civilité' + email: 'Email' + phone: 'Téléphone' + address: 'Adresse' + yes_no: 'Oui/Non' + drop_down_list: 'Menu déroulant' + header_section: 'Titre de section' \ No newline at end of file diff --git a/spec/features/admin/add_type_de_champ_spec.rb b/spec/features/admin/add_type_de_champ_spec.rb index 2540a2fcf..adbf661f9 100644 --- a/spec/features/admin/add_type_de_champ_spec.rb +++ b/spec/features/admin/add_type_de_champ_spec.rb @@ -40,11 +40,12 @@ feature 'add a new type de champs', js: true do context 'user fill another one' do let(:libelle) { 'coucou' } - let(:type_champ) { 'textarea' } + let(:type_champ_value) { 'textarea' } + let(:type_champ_label) { 'Zone de texte' } let(:description) { 'to be or not to be' } before do page.find_by_id('procedure_types_de_champ_attributes_1_libelle').set libelle - select(type_champ, from: 'procedure_types_de_champ_attributes_1_type_champ') + select(type_champ_label, from: 'procedure_types_de_champ_attributes_1_type_champ') page.find_by_id('procedure_types_de_champ_attributes_1_description').set description click_button 'Ajouter le champ' wait_for_ajax @@ -54,7 +55,7 @@ feature 'add a new type de champs', js: true do scenario 'creates another types_de_champ' do expect(page).to have_css('#procedure_types_de_champ_attributes_2_libelle') expect(subject.libelle).to eq(libelle) - expect(subject.type_champ).to eq(type_champ) + expect(subject.type_champ).to eq(type_champ_value) expect(subject.description).to eq(description) expect(subject.order_place).to eq(1) expect(procedure.types_de_champ.count).to eq(2) From e4cf25b677ddf96f91799a40c05ddfa0b7df41da Mon Sep 17 00:00:00 2001 From: Xavier J Date: Thu, 25 Aug 2016 12:30:15 +0200 Subject: [PATCH 15/53] Download all gestionnaire dossier with a button --- app/controllers/backoffice/dossiers_controller.rb | 8 ++++++++ app/views/backoffice/dossiers/_onglets.html.haml | 1 + config/routes.rb | 2 ++ 3 files changed, 11 insertions(+) diff --git a/app/controllers/backoffice/dossiers_controller.rb b/app/controllers/backoffice/dossiers_controller.rb index 9453ce3bf..d3a450bbc 100644 --- a/app/controllers/backoffice/dossiers_controller.rb +++ b/app/controllers/backoffice/dossiers_controller.rb @@ -13,6 +13,14 @@ class Backoffice::DossiersController < ApplicationController @champs = @facade.champs_private unless @facade.nil? end + def download_dossiers_tps + dossiers = current_gestionnaire.dossiers.where.not(state: :draft) + + response.headers['Content-Type'] = 'text/csv' + + render csv: dossiers, status: 200 + end + def search @search_terms = params[:q] @dossiers_search, @dossier = Dossier.search(current_gestionnaire, @search_terms) diff --git a/app/views/backoffice/dossiers/_onglets.html.haml b/app/views/backoffice/dossiers/_onglets.html.haml index dbd429e6f..2d88d5b7b 100644 --- a/app/views/backoffice/dossiers/_onglets.html.haml +++ b/app/views/backoffice/dossiers/_onglets.html.haml @@ -1,3 +1,4 @@ +=link_to 'Tous mes dossiers en CSV', backoffice_download_dossiers_tps_path, {class: 'btn btn-success btn-sm', style: 'float: right; margin-right: 4%; margin-top: 7px'} %h1 Gestion des dossiers %br diff --git a/config/routes.rb b/config/routes.rb index 9c582b394..c0be6950b 100644 --- a/config/routes.rb +++ b/config/routes.rb @@ -152,6 +152,8 @@ Rails.application.routes.draw do get 'reload_pref_list' end + get 'download_dossiers_tps' => 'dossiers#download_dossiers_tps' + resources :dossiers do post 'valid' => 'dossiers#valid' post 'close' => 'dossiers#close' From 0120ce2a3211d5309c208cae0389bb7f9a311bc9 Mon Sep 17 00:00:00 2001 From: Guillaume Lazzara Date: Thu, 25 Aug 2016 15:21:25 +0200 Subject: [PATCH 16/53] Add an action to set a dossier as 'recu'. --- .../backoffice/dossiers_controller.rb | 9 +++++ app/models/dossier.rb | 8 +++- app/views/dossiers/_infos_dossier.html.haml | 7 +++- config/routes.rb | 1 + .../backoffice/dossiers_controller_spec.rb | 16 +++++++- spec/models/dossier_spec.rb | 40 +++++++++++++++++-- .../dossiers/show.html.html_spec.rb | 39 +++++++++--------- 7 files changed, 92 insertions(+), 28 deletions(-) diff --git a/app/controllers/backoffice/dossiers_controller.rb b/app/controllers/backoffice/dossiers_controller.rb index d3a450bbc..2c19239f0 100644 --- a/app/controllers/backoffice/dossiers_controller.rb +++ b/app/controllers/backoffice/dossiers_controller.rb @@ -48,6 +48,15 @@ class Backoffice::DossiersController < ApplicationController render 'show' end + def receive + create_dossier_facade params[:dossier_id] + + @facade.dossier.next_step! 'gestionnaire', 'receive' + flash.notice = 'Dossier considéré comme reçu.' + + render 'show' + end + def close create_dossier_facade params[:dossier_id] diff --git a/app/models/dossier.rb b/app/models/dossier.rb index 120d56f35..c8f9c454a 100644 --- a/app/models/dossier.rb +++ b/app/models/dossier.rb @@ -87,7 +87,7 @@ class Dossier < ActiveRecord::Base end def next_step! role, action - unless %w(initiate update comment valid submit close).include?(action) + unless %w(initiate update comment valid submit receive close).include?(action) fail 'action is not valid' end @@ -130,8 +130,12 @@ class Dossier < ActiveRecord::Base elsif initiated? validated! end - when 'close' + when 'receive' if submitted? + received! + end + when 'close' + if received? closed! end end diff --git a/app/views/dossiers/_infos_dossier.html.haml b/app/views/dossiers/_infos_dossier.html.haml index 5f0238d31..0d51edced 100644 --- a/app/views/dossiers/_infos_dossier.html.haml +++ b/app/views/dossiers/_infos_dossier.html.haml @@ -66,7 +66,12 @@ = 'Valider le dossier' -elsif @facade.dossier.submitted? + = form_tag(url_for({controller: 'backoffice/dossiers', action: :receive, dossier_id: @facade.dossier.id}), class: 'form-inline', method: 'POST') do + %button#action_button.btn.btn-success + = 'Notifier de la bonne réception' + + -elsif @facade.dossier.received? = form_tag(url_for({controller: 'backoffice/dossiers', action: :close, dossier_id: @facade.dossier.id}), class: 'form-inline', method: 'POST') do %button#action_button.btn.btn-success - = 'Traiter le dossier' + = 'Accepter le dossier' diff --git a/config/routes.rb b/config/routes.rb index c0be6950b..228950579 100644 --- a/config/routes.rb +++ b/config/routes.rb @@ -156,6 +156,7 @@ Rails.application.routes.draw do resources :dossiers do post 'valid' => 'dossiers#valid' + post 'receive' => 'dossiers#receive' post 'close' => 'dossiers#close' post 'invites' => '/invites#create' diff --git a/spec/controllers/backoffice/dossiers_controller_spec.rb b/spec/controllers/backoffice/dossiers_controller_spec.rb index 19d5c280b..87943c6b6 100644 --- a/spec/controllers/backoffice/dossiers_controller_spec.rb +++ b/spec/controllers/backoffice/dossiers_controller_spec.rb @@ -119,12 +119,26 @@ describe Backoffice::DossiersController, type: :controller do end end - describe 'POST #close' do + describe 'POST #receive' do before do dossier.submitted! sign_in gestionnaire end + it 'change state to received' do + post :receive, dossier_id: dossier_id + + dossier.reload + expect(dossier.state).to eq('received') + end + end + + describe 'POST #close' do + before do + dossier.received! + sign_in gestionnaire + end + it 'change state to closed' do post :close, dossier_id: dossier_id diff --git a/spec/models/dossier_spec.rb b/spec/models/dossier_spec.rb index 2ad0dfed3..7ac092ab4 100644 --- a/spec/models/dossier_spec.rb +++ b/spec/models/dossier_spec.rb @@ -323,10 +323,10 @@ describe Dossier do dossier.submitted! end - context 'when user is connect' do + context 'when user is connected' do let(:role) { 'user' } - context 'when is post a comment' do + context 'when he posts a comment' do let(:action) { 'comment' } it { is_expected.to eq('submitted') } @@ -336,13 +336,45 @@ describe Dossier do context 'when gestionnaire is connect' do let(:role) { 'gestionnaire' } - context 'when is post a comment' do + context 'when he posts a comment' do let(:action) { 'comment' } it { is_expected.to eq('submitted') } end - context 'when is closed the dossier' do + context 'when he receive the dossier' do + let(:action) { 'receive' } + + it { is_expected.to eq('received') } + end + end + end + + context 'when dossier is at state received' do + before do + dossier.received! + end + + context 'when user is connected' do + let(:role) { 'user' } + + context 'when he posts a comment' do + let(:action) { 'comment' } + + it { is_expected.to eq('received') } + end + end + + context 'when gestionnaire is connect' do + let(:role) { 'gestionnaire' } + + context 'when he posts a comment' do + let(:action) { 'comment' } + + it { is_expected.to eq('received') } + end + + context 'when he closes the dossier' do let(:action) { 'close' } it { is_expected.to eq('closed') } diff --git a/spec/views/backoffice/dossiers/show.html.html_spec.rb b/spec/views/backoffice/dossiers/show.html.html_spec.rb index ee4e26a5d..e02a9cea3 100644 --- a/spec/views/backoffice/dossiers/show.html.html_spec.rb +++ b/spec/views/backoffice/dossiers/show.html.html_spec.rb @@ -119,28 +119,13 @@ describe 'backoffice/dossiers/show.html.haml', type: :view do it { expect(rendered).to have_content('Déposé') } - it 'button Traiter le dossier is present' do + it 'button notifier de la bonne réception is present' do expect(rendered).to have_css('#action_button') - expect(rendered).to have_content('Traiter le dossier') + expect(rendered).to have_content('Notifier de la bonne réception') end it 'button Valider le dossier is not present' do - expect(rendered).not_to have_content('Valider le dossier') - end - end - - context 'when dossier have state closed' do - let(:state) { 'closed' } - - before do - render - end - - it { expect(rendered).to have_content('Accepté') } - - it 'button Valider le dossier is not present' do - expect(rendered).not_to have_css('#action_button') - expect(rendered).not_to have_content('Valider le dossier') + expect(rendered).not_to have_content('Accepter le dossier') end end @@ -153,9 +138,23 @@ describe 'backoffice/dossiers/show.html.haml', type: :view do it { expect(rendered).to have_content('Reçu') } - it 'button Valider le dossier is not present' do + it 'button accepter le dossier is present' do + expect(rendered).to have_content('Accepter le dossier') + end + end + + context 'when dossier have state closed' do + let(:state) { 'closed' } + + before do + render + end + + it { expect(rendered).to have_content('Accepté') } + + it 'button Accepter le dossier is not present' do expect(rendered).not_to have_css('#action_button') - expect(rendered).not_to have_content('Valider le dossier') + expect(rendered).not_to have_content('Accepter le dossier') end end From 09236f32aa8acaeb55642b86e8046a6140e70c75 Mon Sep 17 00:00:00 2001 From: Guillaume Lazzara Date: Thu, 25 Aug 2016 17:46:26 +0200 Subject: [PATCH 17/53] Add 'refuser' and 'classer sans suite' buttons --- app/assets/javascripts/application.js | 1 + .../backoffice/dossiers_controller.rb | 18 +++++++ app/models/dossier.rb | 10 +++- app/views/dossiers/_infos_dossier.html.haml | 10 +++- config/routes.rb | 2 + spec/models/dossier_spec.rb | 53 +++++++++++++++++++ .../dossiers/show.html.html_spec.rb | 21 +++++--- 7 files changed, 104 insertions(+), 11 deletions(-) diff --git a/app/assets/javascripts/application.js b/app/assets/javascripts/application.js index 8c2de3421..e9049908b 100644 --- a/app/assets/javascripts/application.js +++ b/app/assets/javascripts/application.js @@ -42,6 +42,7 @@ function application_init(){ } function tooltip_init() { + $('.action_button[data-toggle="tooltip"]').tooltip({delay: { "show": 100, "hide": 100 }}); $('[data-toggle="tooltip"]').tooltip({delay: { "show": 800, "hide": 100 }}); } diff --git a/app/controllers/backoffice/dossiers_controller.rb b/app/controllers/backoffice/dossiers_controller.rb index 2c19239f0..826794e2d 100644 --- a/app/controllers/backoffice/dossiers_controller.rb +++ b/app/controllers/backoffice/dossiers_controller.rb @@ -57,6 +57,24 @@ class Backoffice::DossiersController < ApplicationController render 'show' end + def refuse + create_dossier_facade params[:dossier_id] + + @facade.dossier.next_step! 'gestionnaire', 'refuse' + flash.notice = 'Dossier considéré comme refusé.' + + render 'show' + end + + def without_continuation + create_dossier_facade params[:dossier_id] + + @facade.dossier.next_step! 'gestionnaire', 'without_continuation' + flash.notice = 'Dossier considéré comme sans suite.' + + render 'show' + end + def close create_dossier_facade params[:dossier_id] diff --git a/app/models/dossier.rb b/app/models/dossier.rb index c8f9c454a..ccae17f45 100644 --- a/app/models/dossier.rb +++ b/app/models/dossier.rb @@ -87,7 +87,7 @@ class Dossier < ActiveRecord::Base end def next_step! role, action - unless %w(initiate update comment valid submit receive close).include?(action) + unless %w(initiate update comment valid submit receive refuse without_continuation close).include?(action) fail 'action is not valid' end @@ -138,6 +138,14 @@ class Dossier < ActiveRecord::Base if received? closed! end + when 'refuse' + if received? + refused! + end + when 'without_continuation' + if received? + without_continuation! + end end end state diff --git a/app/views/dossiers/_infos_dossier.html.haml b/app/views/dossiers/_infos_dossier.html.haml index 0d51edced..3947d592e 100644 --- a/app/views/dossiers/_infos_dossier.html.haml +++ b/app/views/dossiers/_infos_dossier.html.haml @@ -71,7 +71,13 @@ = 'Notifier de la bonne réception' -elsif @facade.dossier.received? - = form_tag(url_for({controller: 'backoffice/dossiers', action: :close, dossier_id: @facade.dossier.id}), class: 'form-inline', method: 'POST') do + = form_tag(url_for({controller: 'backoffice/dossiers', action: :close, dossier_id: @facade.dossier.id}), class: 'form-inline action_button', method: 'POST', style: 'display:inline', 'data-toggle' => :tooltip, title: 'Accepter') do %button#action_button.btn.btn-success - = 'Accepter le dossier' + %i.fa.fa-check + = form_tag(url_for({controller: 'backoffice/dossiers', action: :refuse, dossier_id: @facade.dossier.id}), class: 'form-inline action_button', method: 'POST', style: 'display:inline', 'data-toggle' => :tooltip, title: 'Refuser') do + %button#action_button.btn.btn-danger + %i.fa.fa-times + = form_tag(url_for({controller: 'backoffice/dossiers', action: :without_continuation, dossier_id: @facade.dossier.id}), class: 'form-inline action_button', method: 'POST', style: 'display:inline', 'data-toggle' => :tooltip, title: 'Classer sans suite') do + %button#action_button.btn.btn-warning + %i.fa.fa-circle-o diff --git a/config/routes.rb b/config/routes.rb index 228950579..d1f05b3c1 100644 --- a/config/routes.rb +++ b/config/routes.rb @@ -157,6 +157,8 @@ Rails.application.routes.draw do resources :dossiers do post 'valid' => 'dossiers#valid' post 'receive' => 'dossiers#receive' + post 'refuse' => 'dossiers#refuse' + post 'without_continuation' => 'dossiers#without_continuation' post 'close' => 'dossiers#close' post 'invites' => '/invites#create' diff --git a/spec/models/dossier_spec.rb b/spec/models/dossier_spec.rb index 7ac092ab4..19c46a4f1 100644 --- a/spec/models/dossier_spec.rb +++ b/spec/models/dossier_spec.rb @@ -382,6 +382,59 @@ describe Dossier do end end + context 'when dossier is at state refused' do + before do + dossier.refused! + end + + context 'when user is connected' do + let(:role) { 'user' } + + context 'when he posts a comment' do + let(:action) { 'comment' } + + it { is_expected.to eq('refused') } + end + end + + context 'when gestionnaire is connect' do + let(:role) { 'gestionnaire' } + + context 'when he posts a comment' do + let(:action) { 'comment' } + + it { is_expected.to eq('refused') } + end + end + end + + context 'when dossier is at state without_continuation' do + before do + dossier.without_continuation! + end + + context 'when user is connected' do + let(:role) { 'user' } + + context 'when he posts a comment' do + let(:action) { 'comment' } + + it { is_expected.to eq('without_continuation') } + end + end + + context 'when gestionnaire is connect' do + let(:role) { 'gestionnaire' } + + context 'when he posts a comment' do + let(:action) { 'comment' } + + it { is_expected.to eq('without_continuation') } + end + end + end + + context 'when dossier is at state closed' do before do dossier.closed! diff --git a/spec/views/backoffice/dossiers/show.html.html_spec.rb b/spec/views/backoffice/dossiers/show.html.html_spec.rb index e02a9cea3..657baeb83 100644 --- a/spec/views/backoffice/dossiers/show.html.html_spec.rb +++ b/spec/views/backoffice/dossiers/show.html.html_spec.rb @@ -138,8 +138,10 @@ describe 'backoffice/dossiers/show.html.haml', type: :view do it { expect(rendered).to have_content('Reçu') } - it 'button accepter le dossier is present' do - expect(rendered).to have_content('Accepter le dossier') + it 'button accepter / refuser / classer sans suite are present' do + expect(rendered).to have_css('.action_button[data-toggle="tooltip"][title="Accepter"]') + expect(rendered).to have_css('.action_button[data-toggle="tooltip"][title="Classer sans suite"]') + expect(rendered).to have_css('.action_button[data-toggle="tooltip"][title="Refuser"]') end end @@ -153,8 +155,9 @@ describe 'backoffice/dossiers/show.html.haml', type: :view do it { expect(rendered).to have_content('Accepté') } it 'button Accepter le dossier is not present' do - expect(rendered).not_to have_css('#action_button') - expect(rendered).not_to have_content('Accepter le dossier') + expect(rendered).not_to have_css('.action_button[data-toggle="tooltip"][title="Accepter"]') + expect(rendered).not_to have_css('.action_button[data-toggle="tooltip"][title="Classer sans suite"]') + expect(rendered).not_to have_css('.action_button[data-toggle="tooltip"][title="Refuser"]') end end @@ -168,8 +171,9 @@ describe 'backoffice/dossiers/show.html.haml', type: :view do it { expect(rendered).to have_content('Sans suite') } it 'button Valider le dossier is not present' do - expect(rendered).not_to have_css('#action_button') - expect(rendered).not_to have_content('Valider le dossier') + expect(rendered).not_to have_css('.action_button[data-toggle="tooltip"][title="Accepter"]') + expect(rendered).not_to have_css('.action_button[data-toggle="tooltip"][title="Classer sans suite"]') + expect(rendered).not_to have_css('.action_button[data-toggle="tooltip"][title="Refuser"]') end end @@ -183,8 +187,9 @@ describe 'backoffice/dossiers/show.html.haml', type: :view do it { expect(rendered).to have_content('Refusé') } it 'button Valider le dossier is not present' do - expect(rendered).not_to have_css('#action_button') - expect(rendered).not_to have_content('Valider le dossier') + expect(rendered).not_to have_css('.action_button[data-toggle="tooltip"][title="Accepter"]') + expect(rendered).not_to have_css('.action_button[data-toggle="tooltip"][title="Classer sans suite"]') + expect(rendered).not_to have_css('.action_button[data-toggle="tooltip"][title="Refuser"]') end end end From fc99dc65d608d11c4cec6f2444be7123ece6e7b3 Mon Sep 17 00:00:00 2001 From: Guillaume Lazzara Date: Thu, 25 Aug 2016 18:02:56 +0200 Subject: [PATCH 18/53] Send notification emails when a dossier is closed. --- .../backoffice/dossiers_controller.rb | 6 ++ app/mailers/notification_mailer.rb | 12 ++++ .../dossier_closed.text.erb | 10 ++++ .../dossier_refused.text.erb | 10 ++++ .../dossier_without_continuation.text.erb | 10 ++++ .../backoffice/dossiers_controller_spec.rb | 56 ++++++++++++++++++- 6 files changed, 103 insertions(+), 1 deletion(-) create mode 100644 app/views/notification_mailer/dossier_closed.text.erb create mode 100644 app/views/notification_mailer/dossier_refused.text.erb create mode 100644 app/views/notification_mailer/dossier_without_continuation.text.erb diff --git a/app/controllers/backoffice/dossiers_controller.rb b/app/controllers/backoffice/dossiers_controller.rb index 826794e2d..76230a9d0 100644 --- a/app/controllers/backoffice/dossiers_controller.rb +++ b/app/controllers/backoffice/dossiers_controller.rb @@ -63,6 +63,8 @@ class Backoffice::DossiersController < ApplicationController @facade.dossier.next_step! 'gestionnaire', 'refuse' flash.notice = 'Dossier considéré comme refusé.' + NotificationMailer.dossier_refused(@facade.dossier).deliver_now! + render 'show' end @@ -72,6 +74,8 @@ class Backoffice::DossiersController < ApplicationController @facade.dossier.next_step! 'gestionnaire', 'without_continuation' flash.notice = 'Dossier considéré comme sans suite.' + NotificationMailer.dossier_without_continuation(@facade.dossier).deliver_now! + render 'show' end @@ -81,6 +85,8 @@ class Backoffice::DossiersController < ApplicationController @facade.dossier.next_step! 'gestionnaire', 'close' flash.notice = 'Dossier traité avec succès.' + NotificationMailer.dossier_closed(@facade.dossier).deliver_now! + render 'show' end diff --git a/app/mailers/notification_mailer.rb b/app/mailers/notification_mailer.rb index eb609268b..3b9ee8bd1 100644 --- a/app/mailers/notification_mailer.rb +++ b/app/mailers/notification_mailer.rb @@ -11,6 +11,18 @@ class NotificationMailer < ApplicationMailer send_mail dossier, "Votre dossier TPS N°#{dossier.id} a été déposé" end + def dossier_without_continuation dossier + send_mail dossier, "Votre dossier TPS N°#{dossier.id} a été classé sans suite" + end + + def dossier_refused dossier + send_mail dossier, "Votre dossier TPS N°#{dossier.id} a été refusé" + end + + def dossier_closed dossier + send_mail dossier, "Votre dossier TPS N°#{dossier.id} a été accepté" + end + private def vars_mailer dossier diff --git a/app/views/notification_mailer/dossier_closed.text.erb b/app/views/notification_mailer/dossier_closed.text.erb new file mode 100644 index 000000000..57e7c03fa --- /dev/null +++ b/app/views/notification_mailer/dossier_closed.text.erb @@ -0,0 +1,10 @@ +Bonjour <%= @user.email %> + +votre dossier N°<%=@dossier.id%> déposé auprès de <%= @dossier.procedure.organisation %> a été accepté ce jour à <%= @dossier.updated_at %>. + +A tout moment, vous pouvez consulter le contenu de vos dossiers et les éventuels commentaires de l'administration à cette adresse : <%=users_dossier_recapitulatif_url(dossier_id: @dossier.id)%> + +Bonne journée + +--- +L'équide TPS - tps@apientreprise.fr \ No newline at end of file diff --git a/app/views/notification_mailer/dossier_refused.text.erb b/app/views/notification_mailer/dossier_refused.text.erb new file mode 100644 index 000000000..1c061ad32 --- /dev/null +++ b/app/views/notification_mailer/dossier_refused.text.erb @@ -0,0 +1,10 @@ +Bonjour <%= @user.email %> + +votre dossier N°<%=@dossier.id%> déposé auprès de <%= @dossier.procedure.organisation %> a été refusé ce jour à <%= @dossier.updated_at %>. + +Pour en savoir plus sur le motif du refus, vous pouvez consulter le contenu de vos dossiers et les éventuels commentaires de l'administration à cette adresse : <%=users_dossier_recapitulatif_url(dossier_id: @dossier.id)%> + +Bonne journée, + +--- +L'équide TPS - tps@apientreprise.fr \ No newline at end of file diff --git a/app/views/notification_mailer/dossier_without_continuation.text.erb b/app/views/notification_mailer/dossier_without_continuation.text.erb new file mode 100644 index 000000000..66d0604c2 --- /dev/null +++ b/app/views/notification_mailer/dossier_without_continuation.text.erb @@ -0,0 +1,10 @@ +Bonjour <%= @user.email %> + +votre dossier N°<%=@dossier.id%> déposé auprès de <%= @dossier.procedure.organisation %> a été classé sans suite ce jour à <%= @dossier.updated_at %>. + +Pour en savoir plus sur les raisons de ce classement sans suite, vous pouvez consulter le contenu de vos dossiers et les éventuels commentaires de l'administration à cette adresse : <%=users_dossier_recapitulatif_url(dossier_id: @dossier.id)%> + +Bonne journée, + +--- +L'équide TPS - tps@apientreprise.fr \ No newline at end of file diff --git a/spec/controllers/backoffice/dossiers_controller_spec.rb b/spec/controllers/backoffice/dossiers_controller_spec.rb index 87943c6b6..13c22edff 100644 --- a/spec/controllers/backoffice/dossiers_controller_spec.rb +++ b/spec/controllers/backoffice/dossiers_controller_spec.rb @@ -133,18 +133,72 @@ describe Backoffice::DossiersController, type: :controller do end end + describe 'POST #refuse' do + before do + dossier.refused! + sign_in gestionnaire + end + + subject { post :refuse, dossier_id: dossier_id } + + it 'change state to refused' do + subject + + dossier.reload + expect(dossier.state).to eq('refused') + end + + it 'Notification email is sent' do + expect(NotificationMailer).to receive(:dossier_refused).and_return(NotificationMailer) + expect(NotificationMailer).to receive(:deliver_now!) + + subject + end + end + + describe 'POST #without_continuation' do + before do + dossier.without_continuation! + sign_in gestionnaire + end + subject { post :without_continuation, dossier_id: dossier_id } + + + it 'change state to without_continuation' do + subject + + dossier.reload + expect(dossier.state).to eq('without_continuation') + end + + it 'Notification email is sent' do + expect(NotificationMailer).to receive(:dossier_without_continuation).and_return(NotificationMailer) + expect(NotificationMailer).to receive(:deliver_now!) + + subject + end + end + describe 'POST #close' do before do dossier.received! sign_in gestionnaire end + subject { post :close, dossier_id: dossier_id } it 'change state to closed' do - post :close, dossier_id: dossier_id + subject dossier.reload expect(dossier.state).to eq('closed') end + + it 'Notification email is sent' do + expect(NotificationMailer).to receive(:dossier_closed).and_return(NotificationMailer) + expect(NotificationMailer).to receive(:deliver_now!) + + subject + end end describe 'PUT #toggle_follow' do From db511b15a82f73977a006980aed24faa684698dc Mon Sep 17 00:00:00 2001 From: Guillaume Lazzara Date: Thu, 25 Aug 2016 18:03:05 +0200 Subject: [PATCH 19/53] Fix typos in notification emails --- app/views/notification_mailer/dossier_submitted.text.erb | 4 ++-- app/views/notification_mailer/dossier_validated.text.erb | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/app/views/notification_mailer/dossier_submitted.text.erb b/app/views/notification_mailer/dossier_submitted.text.erb index ced433b16..bc05f0e26 100644 --- a/app/views/notification_mailer/dossier_submitted.text.erb +++ b/app/views/notification_mailer/dossier_submitted.text.erb @@ -1,8 +1,8 @@ Bonjour <%= @user.email %> -Nous vous confirmons que votre dossier N°<%=@dossier.id%> a été déposé aurpès de <%= @dossier.procedure.organisation %> avec succès ce jour à <%= @dossier.updated_at %>. +Nous vous confirmons que votre dossier N°<%=@dossier.id%> a été déposé auprès de <%= @dossier.procedure.organisation %> avec succès ce jour à <%= @dossier.updated_at %>. -Bonne journée +Bonne journée, --- L'équide TPS - tps@apientreprise.fr \ No newline at end of file diff --git a/app/views/notification_mailer/dossier_validated.text.erb b/app/views/notification_mailer/dossier_validated.text.erb index f2a555ac4..adf8e4d08 100644 --- a/app/views/notification_mailer/dossier_validated.text.erb +++ b/app/views/notification_mailer/dossier_validated.text.erb @@ -2,9 +2,9 @@ Bonjour <%= @user.email %> Votre dossier N°<%=@dossier.id%> a été validé par votre accompagnateur. -Afin de finaliser son dépot, merci de vous rendre sur <%=users_dossier_recapitulatif_url(dossier_id: @dossier.id)%> +Afin de finaliser son dépôt, merci de vous rendre sur <%=users_dossier_recapitulatif_url(dossier_id: @dossier.id)%> -Bonne journée +Bonne journée, --- L'équide TPS - tps@apientreprise.fr \ No newline at end of file From a179c372cf1cc46d480277e453c58c9f9a60657d Mon Sep 17 00:00:00 2001 From: Xavier J Date: Fri, 26 Aug 2016 09:17:31 +0200 Subject: [PATCH 20/53] Ajust text --- .../description/_pieces_justificatives.html.haml | 13 +------------ app/views/users/description/_show.html.haml | 11 +++++++++++ 2 files changed, 12 insertions(+), 12 deletions(-) diff --git a/app/views/users/description/_pieces_justificatives.html.haml b/app/views/users/description/_pieces_justificatives.html.haml index df889d102..83e292f91 100644 --- a/app/views/users/description/_pieces_justificatives.html.haml +++ b/app/views/users/description/_pieces_justificatives.html.haml @@ -2,7 +2,7 @@ - if @dossier.procedure.cerfa_flag %tr %th{class:'col-lg-6'} - ='Formulaire / CERFA' + ='Formulaire / CERFA (complété et numérisé)' %td{class:'col-lg-5'} -if @dossier.cerfa_available? @@ -26,14 +26,3 @@ %span.btn.btn-sm.btn-file.btn-success Modifier = file_field_tag "piece_justificative_#{type_de_piece_justificative.id}", accept: PieceJustificative.accept_format, :max_file_size => 3.megabytes - - -#state_description.row{style:'width: 50%; margin-left:20px'} - .panel.panel-info - .panel-body.center - .row - .col-md-1.col-lg-1 - .fa.fa-info-circle.text-info{style:'font-size: 2em; margin-top: 20%'} - .col-md-11.col-lg-11 - Les documents administratifs ne sont pas indispensable afin d'initier votre dossier. - Vous pourrez dans tous les cas les compléter plus tard si vous ne les possédez pas de suite. \ No newline at end of file diff --git a/app/views/users/description/_show.html.haml b/app/views/users/description/_show.html.haml index 294884e26..b6fd592f0 100644 --- a/app/views/users/description/_show.html.haml +++ b/app/views/users/description/_show.html.haml @@ -37,6 +37,17 @@ //TODO a refactorer = render partial: 'users/description/pieces_justificatives' + #state_description.row{style:'width: 50%; margin-left:20px'} + .panel.panel-info + .panel-body.center + .row + .col-md-1.col-lg-1 + .fa.fa-info-circle.text-info{style:'font-size: 2em; margin-top: 20%'} + .col-md-11.col-lg-11 + Les documents administratifs ne sont pas indispensables afin d'initier votre dossier. + Vous pourrez dans tous les cas les compléter plus tard si vous ne les possédez pas de suite. + + - if user_signed_in? %div{style: 'text-align:right'} From 2e613289e04cda95e866ca5a8f7f6d7233b17a10 Mon Sep 17 00:00:00 2001 From: Xavier J Date: Fri, 26 Aug 2016 09:17:31 +0200 Subject: [PATCH 21/53] Ajust text --- .../description/_pieces_justificatives.html.haml | 13 +------------ app/views/users/description/_show.html.haml | 11 +++++++++++ 2 files changed, 12 insertions(+), 12 deletions(-) diff --git a/app/views/users/description/_pieces_justificatives.html.haml b/app/views/users/description/_pieces_justificatives.html.haml index df889d102..83e292f91 100644 --- a/app/views/users/description/_pieces_justificatives.html.haml +++ b/app/views/users/description/_pieces_justificatives.html.haml @@ -2,7 +2,7 @@ - if @dossier.procedure.cerfa_flag %tr %th{class:'col-lg-6'} - ='Formulaire / CERFA' + ='Formulaire / CERFA (complété et numérisé)' %td{class:'col-lg-5'} -if @dossier.cerfa_available? @@ -26,14 +26,3 @@ %span.btn.btn-sm.btn-file.btn-success Modifier = file_field_tag "piece_justificative_#{type_de_piece_justificative.id}", accept: PieceJustificative.accept_format, :max_file_size => 3.megabytes - - -#state_description.row{style:'width: 50%; margin-left:20px'} - .panel.panel-info - .panel-body.center - .row - .col-md-1.col-lg-1 - .fa.fa-info-circle.text-info{style:'font-size: 2em; margin-top: 20%'} - .col-md-11.col-lg-11 - Les documents administratifs ne sont pas indispensable afin d'initier votre dossier. - Vous pourrez dans tous les cas les compléter plus tard si vous ne les possédez pas de suite. \ No newline at end of file diff --git a/app/views/users/description/_show.html.haml b/app/views/users/description/_show.html.haml index 294884e26..b6fd592f0 100644 --- a/app/views/users/description/_show.html.haml +++ b/app/views/users/description/_show.html.haml @@ -37,6 +37,17 @@ //TODO a refactorer = render partial: 'users/description/pieces_justificatives' + #state_description.row{style:'width: 50%; margin-left:20px'} + .panel.panel-info + .panel-body.center + .row + .col-md-1.col-lg-1 + .fa.fa-info-circle.text-info{style:'font-size: 2em; margin-top: 20%'} + .col-md-11.col-lg-11 + Les documents administratifs ne sont pas indispensables afin d'initier votre dossier. + Vous pourrez dans tous les cas les compléter plus tard si vous ne les possédez pas de suite. + + - if user_signed_in? %div{style: 'text-align:right'} From 0eb2acb959af7c5536ca3638df2c7381e1987716 Mon Sep 17 00:00:00 2001 From: Xavier J Date: Mon, 29 Aug 2016 11:02:02 +0200 Subject: [PATCH 22/53] CGU --- app/controllers/cgu_controller.rb | 5 + app/views/cgu/index.html.haml | 167 ++++++++++++++++++++++++ app/views/layouts/application.html.haml | 12 +- config/routes.rb | 2 + 4 files changed, 182 insertions(+), 4 deletions(-) create mode 100644 app/controllers/cgu_controller.rb create mode 100644 app/views/cgu/index.html.haml diff --git a/app/controllers/cgu_controller.rb b/app/controllers/cgu_controller.rb new file mode 100644 index 000000000..95bb4ab15 --- /dev/null +++ b/app/controllers/cgu_controller.rb @@ -0,0 +1,5 @@ +class CguController < ApplicationController + def index + + end +end \ No newline at end of file diff --git a/app/views/cgu/index.html.haml b/app/views/cgu/index.html.haml new file mode 100644 index 000000000..70632182c --- /dev/null +++ b/app/views/cgu/index.html.haml @@ -0,0 +1,167 @@ +%h2 + Condition d’utilisation du service « TPS » pour téléprocédure simplifiée +%br +%h3 + Editeur +%p Ce service est proposé par le Secrétariat général pour la modernisation de l’action publique, un service interministériel du Premier Ministre, mis à disposition du ministère de la Réforme de l’Etat, de la Décentralisation et de la Fonction publique. +%p Il est opéré par la Direction interministérielle du numérique et du système d'information et de communication de l'Etat (DINSIC). +%p +%p + %strong Secrétariat Général pour la Modernisation de l’Action publique + %br/ + 64-70 allée de Bercy + %br/ + 75572 Paris Cedex 12 +%p + %strong Directeur de la publication +%p Laure de LA BRETECHE +%p + %strong Responsable éditorial +%p Henri VERDIER +%p + %strong Responsable éditorial délégué +%p Philippe VRIGNAUD +%br +%h3 + Ingénierie et hébergement informatique +%p L'ingénierie du site est assurée par : +%p + %strong OVH + %br/ + SAS au capital de 10 000 000 € + %br/ + RCS Roubaix – Tourcoing 424 761 419 00045 + %br/ + Code APE 6202A + %br/ + N° TVA : FR 22 424 761 419 + %br/ + Siège social : 2 rue Kellermann - 59100 Roubaix - France. +%br +%h3 + Object du site internet + %a{:href => "https://tps.apientreprise.fr/"} + %strong tps.apientreprise.fr +%p + Le site internet tps.apientreprise.fr a pour objet de faciliter la création de démarches administratives en ligne par les acteurs publics, et l’instruction par plusieurs services des demandes formulées par les usagers auprès d’un ou organismes publics. +%br +%h3 + Acteurs de + %a{:href => "https://tps.apientreprise.fr/"} + TPS +%p Les acteurs de TPS sont les suivants : +%ul + %li Le SGMAP qui héberge le service TPS, le maintien en condition opérationnelle et gère les droits d’accès + %li L’administrateur au sein d’une administration donnée qui crée la démarche en ligne + %li Le ou les accompagnateurs au sein d’une administration donnée, qui reçoivent les démarches des usagers, les accompagnent le cas échéant dans le bouclage de leurs dossier, instruisent la demande et décident des suites à donner aux demandes + %li Les Usagers qui formulent les demandes en ligne via le formulaire qui leur est mis à disposition +%br +%h3 + Déclaration CNIL +%p Le SGMAP a procédé à la déclaration CNIL de TPS. Néanmoins les administrations devront procéder à une déclaration complémentaire auprès de la CNIL si les données du formulaire qu’elles ont produit comportent des données de la nature suivante : +%ul + %li N° de sécurité sociale, + %li Infractions, condamnations, mesures de sécurité, + %li + %a{:href => "https://www.declaration.cnil.fr/declarations/declaration/donneesSensibles_DN.display.action"} Opinions philosophiques, politiques, religieuses, syndicales, vie sexuelle, données de santé, origine raciale. +%br +%h3 + Données collectées et responsabilité des organismes publics à l’initiative de démarches en ligne avec TPS. +%p Les données collectées par le service sont définis par les services publics utilisateurs du service qui arrêtent, sous leur responsabilité, la liste des informations qui seront demandées à l’usager. +%p Les organismes publics s’engagent à créer des démarches pour collecter les informations strictement nécessaires à l’instruction des demandes formulées auprès des acteurs publics, dans le cadre juridique prévu par chacune des démarches. +%p Ces données sont collectées et traitées par les seuls services concernés par l’instruction des demandes, et précisées dans la notice d’utilisation de chaque démarche publiée par l’organisme public. + +%br +%h3 Traitement des données à caractère personnel +%h4 Données personnelles : +%p + En application de la loi n°78-17 Informatique et Libertés du 6 janvier 1978, vous disposez d'un droit d'accès, de rectification, de modification et de suppression concernant les données qui vous concernent. Vous pouvez exercer ce droit à travers la rubrique + %a{:href => "http://www.faire-simple.gouv.fr/contact"} Contact +%h4 Données de connexion : +%p Conformément à la loi n°2004-575 du 21 juin 2004 pour la confiance dans l’économie numérique, certaines données de connexion sont conservées par le service aux fins de protection contre les intrusions et de poursuites judiciaires le cas échéant. Ces données sont conservées pendant un an. + +%br +%h3 Règles relatives aux informations sur les entreprises mises à disposition par les partenaires publics du SGMAP. +%p Le service « TPS », opéré par le SGMAP propose l’affichage aux internautes d’informations issues de deux bases de données distinctes gérées par quatre organismes qui sont : +%br +%h4 L’INSEE : +%p + %strong Insee (Institut national de la statistique et des études économiques) + %br/ + 18, boulevard Adolphe Pinard + %br/ + 75675 Paris cedex 14 + %br/ + Tél. : 01 41 17 50 50 +%p + %a{:href => "http://www.insee.fr/fr/bases-de-donnees/default.asp?page=sirene.htm"} Informations de la base SIRENE + %br/ + %a{:href => "http://www.sirene.fr/sirene/public/static/mentions-legales"} Condition légales d’utilisation de service SIRENE +%br +%h4 INFOGREFFE : +%p + %strong INFOGREFFE  + %br/ + Immeuble Le Parisien + %br/ + 5-7, avenue de Paris + %br/ + 94300 VINCENNES +%p + Les informations transmises aux autorités publiques en charges de l’instruction de dossiers de candidature sont définis par le service en ligne suivant proposé aux internautes : + %a{:href => "https://www.infogreffe.fr/societes/documents-officiels/demande-kbis.html"} https://www.infogreffe.fr/societes/documents-officiels/demande-kbis.html +%p + %a{:href => "https://www.infogreffe.fr/societes/cgu-cgv.html"} Conditions générales d’utilisation des données d’infogreffe + +%br +%h4 TPS fait appel à d’autres services opérés par le SGMAP afin de faciliter les démarches administratives : +%br +%p + %strong> France CONNECT + \ : informations complémentaires : + %a{:href => "https://franceconnect.gouv.fr/"} https://franceconnect.gouv.fr/ +%p + %strong La base d’adresse nationale : + %a{:href => "https://adresse.data.gouv.fr/"} https://adresse.data.gouv.fr/ +%p + %strong TPS est un service de l’Etat Plateforme : + + %a{:href => "http://etatplateforme.modernisation.gouv.fr/"} http://etatplateforme.modernisation.gouv.fr/ +%p + %strong Il met en œuvre les principes définis par le programme « Dites-le nous une fois » +%p + %a{:href => "http://www.modernisation.gouv.fr/les-services-publics-se-simplifient-et-innovent/par-des-simplifications-pour-les-entreprises/dites-le-nous-une-fois-un-programme-pour-simplifier-la-vie-des-entreprises"} http://www.modernisation.gouv.fr/les-services-publics-se-simplifient-et-innovent/par-des-simplifications-pour-les-entreprises/dites-le-nous-une-fois-un-programme-pour-simplifier-la-vie-des-entreprises +%br +%h3 Droit de reproduction : +%p Toute copie de pages du site doit avoir obtenu l’autorisation du directeur de la publication. +%p La création de liens avec le site « tps.apientreprise.fr » est libre. +%p Le SGMAP se réserve le droit de demander la suppression d’un lien qu’elle estime non conforme à l’objet du service « tps.apientreprise.fr » aux missions du SGMAP, ou plus généralement aux principes véhiculés par l’Administration. +%p L’autorisation de création de liens est valable pour tout support, à l’exception de ceux diffusant des informations à caractère raciste, pornographique, xénophobe ou pouvant porter atteinte à la sensibilité du plus grand nombre. +%p + La rubrique + %a{:href => "http://www.faire-simple.gouv.fr/contact"} Contactez-nous + est à votre disposition pour nous faire part de vos remarques et suggestions. +%br +%h3 Propriété intellectuelle, droits d’auteur et copyright +%p Ce service relève de la législation française et internationale sur le droit d'auteur et la propriété intellectuelle. Tous les droits de reproduction sont réservés, y compris pour les documents téléchargeables et les représentations iconographiques et photographiques. +%p La reproduction de tout ou partie de ce site sur un support électronique quel qu'il soit est formellement interdite sauf autorisation expresse du Directeur de la publication (voir ci-après : Reproduction des contenus). +%p Les marques citées sur ce site sont protégées par les organismes qui en sont propriétaires. + +%br +%h3 Logiciels nécessaires à la consultation +%p Ce service est optimisé pour un affichage en 1024*768. Il est prévu pour : +%ul + %li les versions 10 ou supérieures d'Internet Explorer (sur windows 7 ou plus) + %li toutes versions de Microsoft Edge + %li les versions 19 ou supérieures d’Opera + %li les versions 8 ou supérieures de Safari + %li les versions 45.3.0 ou 48 ou supérieures de Firefox + %li les versions 40 ou supérieures de Chrome +%p + La liste des versions compatibles a volontairement été réduite afin de garantir une meilleure sécurité sur nos services. Par ailleurs, le service TPS peut fonctionner sur des versions antérieures à celles évoquées ci-dessus mais sans garantie par le SGMAP. +%p Certains navigateurs peuvent bloquer par défaut l'ouverture de fenêtres sur ce site. Afin de vous permettre d'afficher certaines pages, vous devez autoriser l'ouverture des fenêtres lorsque le navigateur vous le propose en cliquant sur le bandeau d'avertissement alors affiché en haut de la page. En cas d'absence de message d'avertissement de la part de votre navigateur, vous devez configurer celui-ci afin qu'il autorise l'ouverture des fenêtres pour le site "tps.apientreprise.fr". +%br +%h3 Conception & Réalisation +%p SGMAP +%p   +%p   \ No newline at end of file diff --git a/app/views/layouts/application.html.haml b/app/views/layouts/application.html.haml index 7fb7c8008..95c642ffb 100644 --- a/app/views/layouts/application.html.haml +++ b/app/views/layouts/application.html.haml @@ -36,13 +36,17 @@ .container.center %p{style:'margin-top: 1em;'} %p{class: "copyright text-muted small"} - Copyright © - =link_to 'SGMAP', "http://etatplateforme.modernisation.gouv.fr" - 2016 - Tous droits réservés + 2016 - =link_to 'contact@tps.apientreprise.fr', "mailto:contact@tps.apientreprise.fr" + \- + + =link_to 'CGU / Mentions légales', cgu_path + + \- + + =link_to 'Contact', "mailto:contact@tps.apientreprise.fr" diff --git a/config/routes.rb b/config/routes.rb index d1f05b3c1..6445a1710 100644 --- a/config/routes.rb +++ b/config/routes.rb @@ -36,6 +36,8 @@ Rails.application.routes.draw do root 'root#index' + get 'cgu' => 'cgu#index' + namespace :france_connect do get 'particulier' => 'particulier#login' get 'particulier/callback' => 'particulier#callback' From ed8da1552c87fae0a716a0333f63a1a1e7ee879a Mon Sep 17 00:00:00 2001 From: Xavier J Date: Mon, 29 Aug 2016 12:07:30 +0200 Subject: [PATCH 23/53] Admin can be declare a procedure for individual people (no SIRET) --- app/controllers/admin/procedures_controller.rb | 2 +- app/views/admin/procedures/_informations.html.haml | 13 ++++++++++++- ...58_add_for_individual_attr_in_procedure_table.rb | 5 +++++ db/schema.rb | 3 ++- 4 files changed, 20 insertions(+), 3 deletions(-) create mode 100644 db/migrate/20160829094658_add_for_individual_attr_in_procedure_table.rb diff --git a/app/controllers/admin/procedures_controller.rb b/app/controllers/admin/procedures_controller.rb index a6e8f7fec..3c5e013e8 100644 --- a/app/controllers/admin/procedures_controller.rb +++ b/app/controllers/admin/procedures_controller.rb @@ -187,7 +187,7 @@ class Admin::ProceduresController < AdminController private def create_procedure_params - params.require(:procedure).permit(:libelle, :description, :organisation, :direction, :lien_demarche, :lien_site_web, :lien_notice, :euro_flag, :logo, :cerfa_flag, module_api_carto_attributes: [:id, :use_api_carto, :quartiers_prioritaires, :cadastre]).merge(administrateur_id: current_administrateur.id) + params.require(:procedure).permit(:libelle, :description, :organisation, :direction, :lien_demarche, :lien_site_web, :lien_notice, :euro_flag, :logo, :cerfa_flag, :for_individual, module_api_carto_attributes: [:id, :use_api_carto, :quartiers_prioritaires, :cadastre]).merge(administrateur_id: current_administrateur.id) end def create_module_api_carto_params diff --git a/app/views/admin/procedures/_informations.html.haml b/app/views/admin/procedures/_informations.html.haml index c28e08a77..7c14e2941 100644 --- a/app/views/admin/procedures/_informations.html.haml +++ b/app/views/admin/procedures/_informations.html.haml @@ -52,6 +52,17 @@ %h4 Formulaire / CERFA %label =f.check_box :cerfa_flag - Activer l'envoi de formulaire / CERFA + Activer l'envoi de formulaire / CERFA %br =f.text_field :lien_demarche, class: 'form-control', placeholder: 'URL vers le formulaire vierge (facultatif)' + +%br +.row + .col-md-6.col-lg-6 + %h4 Particuliers + %label + =f.check_box :for_individual + Cette procédure s'adresse à un public qui + %b + ne possède pas de numéro SIRET, + qui doivent donc s'identifier en tant que personne physique. diff --git a/db/migrate/20160829094658_add_for_individual_attr_in_procedure_table.rb b/db/migrate/20160829094658_add_for_individual_attr_in_procedure_table.rb new file mode 100644 index 000000000..abcf83c05 --- /dev/null +++ b/db/migrate/20160829094658_add_for_individual_attr_in_procedure_table.rb @@ -0,0 +1,5 @@ +class AddForIndividualAttrInProcedureTable < ActiveRecord::Migration + def change + add_column :procedures, :for_individual, :boolean, default: false + end +end diff --git a/db/schema.rb b/db/schema.rb index a6e5f6713..c06938ac8 100644 --- a/db/schema.rb +++ b/db/schema.rb @@ -11,7 +11,7 @@ # # It's strongly recommended that you check this file into your version control system. -ActiveRecord::Schema.define(version: 20160824094451) do +ActiveRecord::Schema.define(version: 20160829094658) do # These are extensions that must be enabled in order to support this database enable_extension "plpgsql" @@ -278,6 +278,7 @@ ActiveRecord::Schema.define(version: 20160824094451) do t.boolean "published", default: false, null: false t.string "lien_site_web" t.string "lien_notice" + t.boolean "for_individual", default: false end create_table "quartier_prioritaires", force: :cascade do |t| From a69433e8deee4f6bd89a1cd945f3e5199a3d2244 Mon Sep 17 00:00:00 2001 From: Xavier J Date: Tue, 30 Aug 2016 11:18:43 +0200 Subject: [PATCH 24/53] User can be begin without SIRET --- app/controllers/users/dossiers_controller.rb | 10 +++-- app/decorators/entreprise_decorator.rb | 2 +- app/facades/dossier_facades.rb | 4 ++ app/models/dossier.rb | 10 +++++ app/models/entreprise.rb | 6 +++ app/models/individual.rb | 9 ++++ app/views/backoffice/dossiers/show.html.haml | 4 +- app/views/dossiers/etapes/_etape2.html.haml | 44 ++----------------- .../etapes/etape_2/_entreprise.html.haml | 40 +++++++++++++++++ .../etapes/etape_2/_individual.html.haml | 40 +++++++++++++++++ app/views/users/dossiers/_list.html.haml | 12 ++--- app/views/users/registrations/new.html.haml | 1 + config/locales/models/individual/fr.yml | 19 ++++++++ .../20160829114646_create_individual_table.rb | 11 +++++ db/schema.rb | 9 +++- .../backoffice/navigate_to_dossier_spec.rb | 16 +++++++ spec/features/users/list_dossiers_spec.rb | 12 ++--- spec/mailers/notification_mailer_spec.rb | 4 +- spec/models/dossier_spec.rb | 19 ++++++++ spec/models/individual_spec.rb | 8 ++++ .../users/dossiers/index_html.haml_spec.rb | 11 +---- 21 files changed, 220 insertions(+), 71 deletions(-) create mode 100644 app/models/individual.rb create mode 100644 app/views/dossiers/etapes/etape_2/_entreprise.html.haml create mode 100644 app/views/dossiers/etapes/etape_2/_individual.html.haml create mode 100644 config/locales/models/individual/fr.yml create mode 100644 db/migrate/20160829114646_create_individual_table.rb create mode 100644 spec/models/individual_spec.rb diff --git a/app/controllers/users/dossiers_controller.rb b/app/controllers/users/dossiers_controller.rb index e5bf6a48c..4193859c9 100644 --- a/app/controllers/users/dossiers_controller.rb +++ b/app/controllers/users/dossiers_controller.rb @@ -84,8 +84,12 @@ class Users::DossiersController < UsersController @facade = facade params[:dossier][:id] if checked_autorisation_donnees? - @facade.dossier.update_attributes(update_params) - + begin + @facade.dossier.update_attributes!(update_params) + rescue + flash.now.alert = @facade.dossier.errors.full_messages.join('
').html_safe + return render 'show' + end if @facade.dossier.procedure.module_api_carto.use_api_carto redirect_to url_for(controller: :carte, action: :show, dossier_id: @facade.dossier.id) else @@ -117,7 +121,7 @@ class Users::DossiersController < UsersController end def update_params - params.require(:dossier).permit(:autorisation_donnees) + params.require(:dossier).permit(:id, :autorisation_donnees, individual_attributes: [:nom, :prenom, :birthdate]) end def checked_autorisation_donnees? diff --git a/app/decorators/entreprise_decorator.rb b/app/decorators/entreprise_decorator.rb index fe34dbace..6db7236fe 100644 --- a/app/decorators/entreprise_decorator.rb +++ b/app/decorators/entreprise_decorator.rb @@ -2,7 +2,7 @@ class EntrepriseDecorator < Draper::Decorator delegate_all def raison_sociale_or_name - raison_sociale.nil? ? nom + ' ' + prenom : raison_sociale + raison_sociale.blank? ? nom + ' ' + prenom : raison_sociale end def effectif diff --git a/app/facades/dossier_facades.rb b/app/facades/dossier_facades.rb index 059462848..f44f1a9e5 100644 --- a/app/facades/dossier_facades.rb +++ b/app/facades/dossier_facades.rb @@ -50,6 +50,10 @@ class DossierFacades @dossier.ordered_champs_private end + def individual + @dossier.individual + end + def commentaires_files PieceJustificative.where(dossier_id: @dossier.id, type_de_piece_justificative_id: nil) end diff --git a/app/models/dossier.rb b/app/models/dossier.rb index ccae17f45..623cb9515 100644 --- a/app/models/dossier.rb +++ b/app/models/dossier.rb @@ -14,6 +14,7 @@ class Dossier < ActiveRecord::Base has_one :etablissement, dependent: :destroy has_one :entreprise, dependent: :destroy + has_one :individual, dependent: :destroy has_many :cerfa, dependent: :destroy has_many :pieces_justificatives, dependent: :destroy @@ -28,6 +29,8 @@ class Dossier < ActiveRecord::Base belongs_to :procedure belongs_to :user + accepts_nested_attributes_for :individual + delegate :siren, to: :entreprise delegate :siret, to: :etablissement, allow_nil: true delegate :types_de_piece_justificative, to: :procedure @@ -35,6 +38,7 @@ class Dossier < ActiveRecord::Base delegate :france_connect_information, to: :user after_save :build_default_champs, if: Proc.new { procedure_id_changed? } + after_save :build_default_individual, if: Proc.new { procedure.for_individual? } validates :user, presence: true @@ -66,6 +70,12 @@ class Dossier < ActiveRecord::Base end end + def build_default_individual + Individual.new(dossier_id: id).save(validate: false) + Entreprise.new(dossier_id: id).save(validate: false) + Etablissement.new(dossier_id: id, entreprise_id: entreprise.id).save(validate: false) + end + def ordered_champs champs.joins(', types_de_champ').where("champs.type_de_champ_id = types_de_champ.id AND types_de_champ.procedure_id = #{procedure.id}").order('order_place') end diff --git a/app/models/entreprise.rb b/app/models/entreprise.rb index ad3a8ee9b..8218f75e4 100644 --- a/app/models/entreprise.rb +++ b/app/models/entreprise.rb @@ -4,4 +4,10 @@ class Entreprise < ActiveRecord::Base has_one :rna_information, dependent: :destroy validates_presence_of :siren + + before_save :default_values + + def default_values + self.raison_sociale ||= '' + end end diff --git a/app/models/individual.rb b/app/models/individual.rb new file mode 100644 index 000000000..324438c48 --- /dev/null +++ b/app/models/individual.rb @@ -0,0 +1,9 @@ +class Individual < ActiveRecord::Base + belongs_to :dossier + + validates_uniqueness_of :dossier_id + + validates :nom, presence: true, allow_nil: false, allow_blank: false + validates :prenom, presence: true, allow_nil: false, allow_blank: false + validates :birthdate, presence: true, allow_nil: false, allow_blank: false +end diff --git a/app/views/backoffice/dossiers/show.html.haml b/app/views/backoffice/dossiers/show.html.haml index 6a99e2f16..6eaa95dde 100644 --- a/app/views/backoffice/dossiers/show.html.haml +++ b/app/views/backoffice/dossiers/show.html.haml @@ -7,8 +7,8 @@ = @facade.dossier.display_state = render partial: 'follow_action' - - = render partial: '/dossiers/infos_entreprise' + - unless @facade.procedure.for_individual? + = render partial: '/dossiers/infos_entreprise' = render partial: '/dossiers/infos_dossier' %br diff --git a/app/views/dossiers/etapes/_etape2.html.haml b/app/views/dossiers/etapes/_etape2.html.haml index 2e8f161e9..3f36a3c2a 100644 --- a/app/views/dossiers/etapes/_etape2.html.haml +++ b/app/views/dossiers/etapes/_etape2.html.haml @@ -1,40 +1,4 @@ -.etape.etapes_menu.col-md-3.col-lg-3 - %h3 - Mes informations - %br - - unless @facade.entreprise.nil? - .center{style:'margin-left: -5%'} - Vous êtes authentifié avec le SIRET - - %h3.text-success - = @facade.etablissement.siret - = form_for @facade.dossier, url: users_dossier_change_siret_path(dossier_id: @facade.dossier.id), method: :put, remote: true do |f| - = f.submit 'Changer de SIRET', class: %w(btn btn-xs btn-primary) - - -.etape.etapes_informations.col-md-9.col-lg-9 - .row - - if @facade.entreprise.nil? - #new_siret{style:'margin-left: 20%; margin-top: 5%'} - = form_for @facade.dossier, html: {class: 'form-inline'}, url: users_dossier_siret_informations_path(dossier_id: @facade.dossier.id), method: :post, remote: true do |f| - .form-group.form-group-lg - = f.text_field :siret, class: "form-control", placeholder: "Entrez votre Siret", value: @siret - = f.hidden_field :dossier_id, value: @facade.dossier.id - = f.submit 'Valider', class: %w(btn btn-lg btn-success), data: { disable_with: "Recherche en cours ..." } - - else - %br - #recap_info_entreprise - = render partial: '/dossiers/infos_entreprise' - - %p#insee_infogreffe{style:'color:grey; float:right'} - %i - Informations récupérées auprès de l'INSEE et d'INFOGREFFE - - %br - = form_for @facade.dossier, url: { controller: '/users/dossiers', action: :update } do |f| - = f.hidden_field :id - %label{ style:'font-weight:normal' } - = f.check_box :autorisation_donnees - J'autorise les décideurs publics à vérifier les informations de mon organisation auprès des administrations concernées. Ces informations resteront strictement confidentielles. - %br - = f.submit 'Etape suivante', class: "btn btn btn-info", style: 'float:right', id: 'etape_suivante', disabled: :disabled +- if @facade.procedure.for_individual? + = render partial: 'dossiers/etapes/etape_2/individual' +- else + = render partial: 'dossiers/etapes/etape_2/entreprise' \ No newline at end of file diff --git a/app/views/dossiers/etapes/etape_2/_entreprise.html.haml b/app/views/dossiers/etapes/etape_2/_entreprise.html.haml new file mode 100644 index 000000000..2e8f161e9 --- /dev/null +++ b/app/views/dossiers/etapes/etape_2/_entreprise.html.haml @@ -0,0 +1,40 @@ +.etape.etapes_menu.col-md-3.col-lg-3 + %h3 + Mes informations + %br + - unless @facade.entreprise.nil? + .center{style:'margin-left: -5%'} + Vous êtes authentifié avec le SIRET + + %h3.text-success + = @facade.etablissement.siret + = form_for @facade.dossier, url: users_dossier_change_siret_path(dossier_id: @facade.dossier.id), method: :put, remote: true do |f| + = f.submit 'Changer de SIRET', class: %w(btn btn-xs btn-primary) + + +.etape.etapes_informations.col-md-9.col-lg-9 + .row + - if @facade.entreprise.nil? + #new_siret{style:'margin-left: 20%; margin-top: 5%'} + = form_for @facade.dossier, html: {class: 'form-inline'}, url: users_dossier_siret_informations_path(dossier_id: @facade.dossier.id), method: :post, remote: true do |f| + .form-group.form-group-lg + = f.text_field :siret, class: "form-control", placeholder: "Entrez votre Siret", value: @siret + = f.hidden_field :dossier_id, value: @facade.dossier.id + = f.submit 'Valider', class: %w(btn btn-lg btn-success), data: { disable_with: "Recherche en cours ..." } + - else + %br + #recap_info_entreprise + = render partial: '/dossiers/infos_entreprise' + + %p#insee_infogreffe{style:'color:grey; float:right'} + %i + Informations récupérées auprès de l'INSEE et d'INFOGREFFE + + %br + = form_for @facade.dossier, url: { controller: '/users/dossiers', action: :update } do |f| + = f.hidden_field :id + %label{ style:'font-weight:normal' } + = f.check_box :autorisation_donnees + J'autorise les décideurs publics à vérifier les informations de mon organisation auprès des administrations concernées. Ces informations resteront strictement confidentielles. + %br + = f.submit 'Etape suivante', class: "btn btn btn-info", style: 'float:right', id: 'etape_suivante', disabled: :disabled diff --git a/app/views/dossiers/etapes/etape_2/_individual.html.haml b/app/views/dossiers/etapes/etape_2/_individual.html.haml new file mode 100644 index 000000000..0b1c37ece --- /dev/null +++ b/app/views/dossiers/etapes/etape_2/_individual.html.haml @@ -0,0 +1,40 @@ +.etape.etapes_menu.col-md-3.col-lg-3 + %h3 + Mes informations + %br + %p.center + Les informations de bases + %br + vous concernant. + +.etape.etapes_informations.col-md-9.col-lg-9 + .row + = form_for @facade.dossier, url: { controller: '/users/dossiers', action: :update } do |f| + = f.hidden_field :id + + = f.fields_for :individual, @facade.individual do |ff| + .form-group + %label + %h4 + Nom + = ff.text_field :nom, {class: 'form-control'} + .form-group + %label + %h4 + Prénom + = ff.text_field :prenom, {class: 'form-control'} + .form-group + %label + %h4 + Date de naissance + = ff.text_field :birthdate, {class: 'form-control', 'data-provide' => 'datepicker', 'data-date-format' => 'dd/mm/yyyy'} + + %p + %label{ style:'font-weight:normal' } + = f.check_box :autorisation_donnees + = " ".html_safe + Vos informations personnelles ne seront jamais utilisées dans un but lucratif ou commercial. Elles ne pourront être communiquées à de tiers personnes sans votre accord préalable. Elles pourront en revanche être communiquées aux administrations compétentes afin d'instruire votre dossier, conformément à la déclaration CNIL effectué par le service TPS. + =link_to 'en savoir plus', cgu_path, target: '_blank' + + %br + = f.submit 'Etape suivante', class: "btn btn btn-info", style: 'float:right', id: 'etape_suivante' diff --git a/app/views/users/dossiers/_list.html.haml b/app/views/users/dossiers/_list.html.haml index 3f788cee0..e8bdcc86d 100644 --- a/app/views/users/dossiers/_list.html.haml +++ b/app/views/users/dossiers/_list.html.haml @@ -1,8 +1,8 @@ - unless smart_listing.empty? %table.table %thead - %th.col-md-4.col-lg-4= smart_listing.sortable 'Procédure', 'procedure.libelle' - %th.col-md-4.col-lg-4= smart_listing.sortable 'Raison sociale', 'entreprise.raison_sociale' + %th.col-md-1.col-lg-1= smart_listing.sortable 'Numéro', 'id' + %th.col-md-5.col-lg-5= smart_listing.sortable 'Procédure', 'procedure.libelle' %th.col-md-2.col-lg-2= smart_listing.sortable 'État', 'state' %th.col-md-2.col-lg-2= smart_listing.sortable 'Date de mise à jour', 'updated_at' - @dossiers.each do |dossier| @@ -12,11 +12,11 @@ - else - dossier = dossier.decorate %tr + %td.center + = dossier.id %td - = dossier.procedure.libelle - %td - = link_to(dossier.entreprise.raison_sociale, users_dossiers_invite_path(id: invite.id)) unless invite.nil? - = link_to(dossier.entreprise.raison_sociale, users_dossier_recapitulatif_path(dossier)) if invite.nil? + = link_to(dossier.procedure.libelle, users_dossiers_invite_path(id: invite.id)) unless invite.nil? + = link_to(dossier.procedure.libelle, users_dossier_recapitulatif_path(dossier)) if invite.nil? %td{id: "dossier_#{dossier.id}_state"}= dossier.display_state %td= dossier.last_update diff --git a/app/views/users/registrations/new.html.haml b/app/views/users/registrations/new.html.haml index 4e780d97f..17054c523 100644 --- a/app/views/users/registrations/new.html.haml +++ b/app/views/users/registrations/new.html.haml @@ -29,6 +29,7 @@ = devise_error_messages! #form_login + %br = image_tag('logo-tps.png') %br %h2#gestionnaire_login Inscription diff --git a/config/locales/models/individual/fr.yml b/config/locales/models/individual/fr.yml new file mode 100644 index 000000000..88aba8e77 --- /dev/null +++ b/config/locales/models/individual/fr.yml @@ -0,0 +1,19 @@ +fr: + activerecord: + attributes: + individual: + nom: Nom + prenom: Prénom + birthdate: Date de naissance + errors: + models: + individual: + attributes: + nom: + blank: 'doit être rempli' + prenom: + blank: 'doit être rempli' + birthdate: + blank: 'doit être rempli' + + diff --git a/db/migrate/20160829114646_create_individual_table.rb b/db/migrate/20160829114646_create_individual_table.rb new file mode 100644 index 000000000..f93c6a8ca --- /dev/null +++ b/db/migrate/20160829114646_create_individual_table.rb @@ -0,0 +1,11 @@ +class CreateIndividualTable < ActiveRecord::Migration + def change + create_table :individuals do |t| + t.string :nom + t.string :prenom + t.string :birthdate + end + + add_belongs_to :individuals, :dossier + end +end diff --git a/db/schema.rb b/db/schema.rb index c06938ac8..5cb43da5e 100644 --- a/db/schema.rb +++ b/db/schema.rb @@ -11,7 +11,7 @@ # # It's strongly recommended that you check this file into your version control system. -ActiveRecord::Schema.define(version: 20160829094658) do +ActiveRecord::Schema.define(version: 20160829114646) do # These are extensions that must be enabled in order to support this database enable_extension "plpgsql" @@ -213,6 +213,13 @@ ActiveRecord::Schema.define(version: 20160829094658) do add_index "gestionnaires", ["email"], name: "index_gestionnaires_on_email", unique: true, using: :btree add_index "gestionnaires", ["reset_password_token"], name: "index_gestionnaires_on_reset_password_token", unique: true, using: :btree + create_table "individuals", force: :cascade do |t| + t.string "nom" + t.string "prenom" + t.string "birthdate" + t.integer "dossier_id" + end + create_table "invites", force: :cascade do |t| t.string "email" t.string "email_sender" diff --git a/spec/features/backoffice/navigate_to_dossier_spec.rb b/spec/features/backoffice/navigate_to_dossier_spec.rb index 8f29befa2..972c70f58 100644 --- a/spec/features/backoffice/navigate_to_dossier_spec.rb +++ b/spec/features/backoffice/navigate_to_dossier_spec.rb @@ -29,5 +29,21 @@ feature 'on backoffice page' do expect(page).to have_css('#backoffice_dossier_show') end end + + context 'when gestionnaire have enterprise and individual dossier in his inbox' do + let!(:procedure_individual) { create :procedure, libelle: 'procedure individual', administrateur: administrateur, for_individual: true } + let!(:dossier_individual) { create :dossier, procedure: procedure_individual, state: 'updated' } + + before do + create :assign_to, gestionnaire: gestionnaire, procedure: procedure_individual + + visit backoffice_path + page.click_on dossier_individual.id + end + + scenario 'it redirect to dossier page' do + expect(page).to have_css('#backoffice_dossier_show') + end + end end end \ No newline at end of file diff --git a/spec/features/users/list_dossiers_spec.rb b/spec/features/users/list_dossiers_spec.rb index acf68a384..85fdc963f 100644 --- a/spec/features/users/list_dossiers_spec.rb +++ b/spec/features/users/list_dossiers_spec.rb @@ -9,8 +9,8 @@ feature 'user access to the list of his dossier' do before do dossier1.update_column(:updated_at, "19/07/2052 15:35".to_time) - dossier1.entreprise.update_column(:raison_sociale, 'PLOP') - last_updated_dossier.entreprise.update_column(:raison_sociale, 'PLIP') + dossier1.procedure.update_column(:libelle, 'PLOP') + last_updated_dossier.procedure.update_column(:libelle, 'PLIP') visit new_user_session_path within('#new_user') do @@ -20,12 +20,12 @@ feature 'user access to the list of his dossier' do end end scenario 'the list of dossier is displayed' do - expect(page).to have_content(dossier1.entreprise.raison_sociale) - expect(page).not_to have_content(dossier2.entreprise.raison_sociale) + expect(page).to have_content(dossier1.procedure.libelle) + expect(page).not_to have_content(dossier2.procedure.libelle) end scenario 'the list must be order by last updated' do - expect(page.body).to match(/#{last_updated_dossier.entreprise.raison_sociale}.*#{dossier1.entreprise.raison_sociale}/m) + expect(page.body).to match(/#{last_updated_dossier.procedure.libelle}.*#{dossier1.procedure.libelle}/m) end scenario 'the state of dossier is displayed' do @@ -34,7 +34,7 @@ feature 'user access to the list of his dossier' do context 'when user clicks on a projet in list' do before do - page.click_on dossier1.entreprise.raison_sociale + page.click_on dossier1.procedure.libelle end scenario 'user is redirected to dossier page' do expect(page).to have_css('#recap_dossier') diff --git a/spec/mailers/notification_mailer_spec.rb b/spec/mailers/notification_mailer_spec.rb index 48a3e25e5..44f5d68ea 100644 --- a/spec/mailers/notification_mailer_spec.rb +++ b/spec/mailers/notification_mailer_spec.rb @@ -19,7 +19,7 @@ RSpec.describe NotificationMailer, type: :mailer do subject(:subject) { described_class.dossier_validated(dossier) } it { expect(subject.body).to match("Votre dossier N°#{dossier.id} a été validé par votre accompagnateur.") } - it { expect(subject.body).to include("Afin de finaliser son dépot, merci de vous rendre sur #{users_dossier_recapitulatif_url(dossier_id: dossier.id)}") } + it { expect(subject.body).to include("Afin de finaliser son dépôt, merci de vous rendre sur #{users_dossier_recapitulatif_url(dossier_id: dossier.id)}") } it { expect(subject.subject).to eq("Votre dossier TPS N°#{dossier.id} a été validé") } end @@ -30,7 +30,7 @@ RSpec.describe NotificationMailer, type: :mailer do subject(:subject) { described_class.dossier_submitted(dossier) } it { expect(subject.body).to match("Nous vous confirmons que votre dossier N°#{dossier.id} a été déposé") } - it { expect(subject.body).to match("aurpès de #{dossier.procedure.organisation} avec succès") } + it { expect(subject.body).to match("auprès de #{dossier.procedure.organisation} avec succès") } it { expect(subject.body).to match("ce jour à #{dossier.updated_at}.") } it { expect(subject.subject).to eq("Votre dossier TPS N°#{dossier.id} a été déposé") } end diff --git a/spec/models/dossier_spec.rb b/spec/models/dossier_spec.rb index 19c46a4f1..583a47410 100644 --- a/spec/models/dossier_spec.rb +++ b/spec/models/dossier_spec.rb @@ -23,6 +23,7 @@ describe Dossier do it { is_expected.to have_many(:cerfa) } it { is_expected.to have_one(:etablissement) } it { is_expected.to have_one(:entreprise) } + it { is_expected.to have_one(:individual) } it { is_expected.to belong_to(:user) } it { is_expected.to have_many(:invites) } it { is_expected.to have_many(:follows) } @@ -105,6 +106,24 @@ describe Dossier do end end + describe '#build_default_individual' do + context 'when dossier is linked to a procedure with for_individual attr false' do + let(:dossier) { create(:dossier, user: user) } + + it 'have no object created' do + expect(dossier.individual).to be_nil + end + end + + context 'when dossier is linked to a procedure with for_individual attr true' do + let(:dossier) { create(:dossier, user: user, procedure: (create :procedure, for_individual: true)) } + + it 'have no object created' do + expect(dossier.individual).not_to be_nil + end + end + end + describe '#save' do subject { build(:dossier, procedure: procedure, user: user) } let!(:procedure) { create(:procedure) } diff --git a/spec/models/individual_spec.rb b/spec/models/individual_spec.rb new file mode 100644 index 000000000..e0d02e03b --- /dev/null +++ b/spec/models/individual_spec.rb @@ -0,0 +1,8 @@ +require 'spec_helper' + +describe Individual do + it { is_expected.to have_db_column(:nom) } + it { is_expected.to have_db_column(:prenom) } + it { is_expected.to have_db_column(:birthdate) } + it { is_expected.to belong_to(:dossier) } +end diff --git a/spec/views/users/dossiers/index_html.haml_spec.rb b/spec/views/users/dossiers/index_html.haml_spec.rb index c6424b4d0..617cb3276 100644 --- a/spec/views/users/dossiers/index_html.haml_spec.rb +++ b/spec/views/users/dossiers/index_html.haml_spec.rb @@ -15,15 +15,6 @@ describe 'users/dossiers/index.html.haml', type: :view do let!(:decorate_dossier_invite) { create(:dossier, :with_entreprise, user: create(:user), state: 'initiated').decorate } before do - decorate_dossier_replied.entreprise.update_column(:raison_sociale, 'plap') - decorate_dossier_updated.entreprise.update_column(:raison_sociale, 'plep') - decorate_dossier_validated.entreprise.update_column(:raison_sociale, 'plip') - decorate_dossier_submitted.entreprise.update_column(:raison_sociale, 'plop') - decorate_dossier_received.entreprise.update_column(:raison_sociale, 'plup') - decorate_dossier_closed.entreprise.update_column(:raison_sociale, 'plyp') - decorate_dossier_refused.entreprise.update_column(:raison_sociale, 'plzp') - decorate_dossier_without_continuation.entreprise.update_column(:raison_sociale, 'plnp') - create :invite, dossier: decorate_dossier_invite, user: user end @@ -42,8 +33,8 @@ describe 'users/dossiers/index.html.haml', type: :view do subject { rendered } describe 'columns' do + it { is_expected.to have_content(decorate_dossier_at_check.id) } it { is_expected.to have_content(decorate_dossier_at_check.procedure.libelle) } - it { is_expected.to have_content(decorate_dossier_at_check.entreprise.raison_sociale) } it { is_expected.to have_content(decorate_dossier_at_check.display_state) } it { is_expected.to have_content(decorate_dossier_at_check.last_update) } end From f07606a373b1c32464009782af65fa1364416284 Mon Sep 17 00:00:00 2001 From: Xavier J Date: Tue, 30 Aug 2016 11:42:33 +0200 Subject: [PATCH 25/53] IE 9 alert --- Gemfile | 2 +- Gemfile.lock | 3 --- app/views/layouts/_ie_lt_10.html.haml | 4 ++++ app/views/layouts/application.html.haml | 7 ++++++- 4 files changed, 11 insertions(+), 5 deletions(-) create mode 100644 app/views/layouts/_ie_lt_10.html.haml diff --git a/Gemfile b/Gemfile index e9897f411..74ec148d8 100644 --- a/Gemfile +++ b/Gemfile @@ -82,7 +82,7 @@ gem 'mailjet' gem "smart_listing" -gem 'css_splitter' +# gem 'css_splitter' gem 'bootstrap-wysihtml5-rails', '~> 0.3.3.8' gem 'as_csv' diff --git a/Gemfile.lock b/Gemfile.lock index c7f277ceb..a9ac8e9f2 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -115,8 +115,6 @@ GEM concurrent-ruby (1.0.2) crack (0.4.2) safe_yaml (~> 1.0.0) - css_splitter (0.4.5) - sprockets (>= 2.0.0) database_cleaner (1.4.1) debug_inspector (0.0.2) deep_cloneable (2.2.1) @@ -636,7 +634,6 @@ DEPENDENCIES chartkick clamav-client coffee-rails (~> 4.1.0) - css_splitter database_cleaner deep_cloneable (~> 2.2.1) devise diff --git a/app/views/layouts/_ie_lt_10.html.haml b/app/views/layouts/_ie_lt_10.html.haml new file mode 100644 index 000000000..07d0581d5 --- /dev/null +++ b/app/views/layouts/_ie_lt_10.html.haml @@ -0,0 +1,4 @@ +%div.center{style:'width: 100%; background-color: white; position: fixed; top:0; left:0; z-index: 100000'} + %h3.text-danger + %b + Votre version d'Internet Explorer est trop ancienne pour être utilisée sur le service TPS. Version minimum : Internet Explorer 10 \ No newline at end of file diff --git a/app/views/layouts/application.html.haml b/app/views/layouts/application.html.haml index 95c642ffb..aab4cbe64 100644 --- a/app/views/layouts/application.html.haml +++ b/app/views/layouts/application.html.haml @@ -8,7 +8,6 @@ = stylesheet_link_tag 'application', media: 'all', 'data-turbolinks-track' => true = stylesheet_link_tag 'application_split2', media: 'all', 'data-turbolinks-track' => true - = javascript_include_tag 'application', 'data-turbolinks-track' => true = csrf_meta_tags %body @@ -16,6 +15,12 @@ %script{type: 'text/javascript'} (typeof jQuery !== 'undefined') && (jQuery.fx.off = true); + ="".html_safe + %div#wrap %div#header.navbar =render partial: "layouts/navbar" From 16c1fe31c1b95c6d300b8307660e6ee7b2a43daa Mon Sep 17 00:00:00 2001 From: Xavier J Date: Tue, 30 Aug 2016 13:29:40 +0200 Subject: [PATCH 26/53] Update CGU --- app/views/cgu/index.html.haml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/views/cgu/index.html.haml b/app/views/cgu/index.html.haml index 70632182c..7e8525f5c 100644 --- a/app/views/cgu/index.html.haml +++ b/app/views/cgu/index.html.haml @@ -58,7 +58,7 @@ %br %h3 Déclaration CNIL -%p Le SGMAP a procédé à la déclaration CNIL de TPS. Néanmoins les administrations devront procéder à une déclaration complémentaire auprès de la CNIL si les données du formulaire qu’elles ont produit comportent des données de la nature suivante : +%p Le SGMAP a procédé à la déclaration CNIL de TPS. Celle-ci porte le numéro "1986658 v 0" à la date du 30 août 2016. Néanmoins les administrations devront procéder à une déclaration complémentaire auprès de la CNIL si les données du formulaire qu’elles ont produit comportent des données de la nature suivante : %ul %li N° de sécurité sociale, %li Infractions, condamnations, mesures de sécurité, From d438e9a3295420782367d34c7ab0d998facdb3ac Mon Sep 17 00:00:00 2001 From: Xavier J Date: Tue, 30 Aug 2016 14:14:18 +0200 Subject: [PATCH 27/53] Ajust landing page --- app/assets/images/landing_background.jpg | Bin 392961 -> 0 bytes app/assets/images/landing_background.png | Bin 0 -> 320295 bytes app/assets/stylesheets/landing.scss | 8 +++++--- app/views/root/landing.html.haml | 4 ++-- 4 files changed, 7 insertions(+), 5 deletions(-) delete mode 100644 app/assets/images/landing_background.jpg create mode 100644 app/assets/images/landing_background.png diff --git a/app/assets/images/landing_background.jpg b/app/assets/images/landing_background.jpg deleted file mode 100644 index f7ddc8c98fe030cc5c8275b3c82c810a65d7044e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 392961 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

ngr~QQ;#a1S+iaK^k`-IBY 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%0AT(t?fNJelHW-EMr!@n#7%>!v@t8}7H` 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¨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¬y6e{;*O`?vaayNc#eBsXB`hhqPeOC8-S+f7 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%0AeB`75W+ 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 diff --git a/app/assets/images/landing_background.png b/app/assets/images/landing_background.png new file mode 100644 index 0000000000000000000000000000000000000000..1d67e71a121c3a9ee8705d2375a27cb2f7e6d53e GIT binary patch literal 320295 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 D{JB5FYii}eE{rBl27J(n`!V?y})YbU>RjE%Z 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�^xH)H+c z&~5uBZ0ox2+PUz{Y^FLPvF^}suHU)O$?xc&t5)byd}=|?kzC8H$;CbGA`&-EZ-w8y zKiAD{w(e$jwq^5osIRScXZZY7P5NL~WZ?V0Q>>p?@361jG~4w2l_|R>AItsTwMpJ$ zSx+urtzXAJExq)h&dF}EXsIP<(4qS!{qIkDiu?yn&^L+;-&iw!%hb&|CUf7f zfBThPW2JTE>Y_>ePCvUG_^otS>i=IQvfTCG#HZ~yFqr52e$&To{{L@1JfjzVChca5 zl`H2uLF0ut7xBMIz01e-@$)j0_H+1((nJ%06ZB<;0-+jQ;X3cQ^kuk?vnMa~D@@+4AYD?bCL_&I0&a zeRqwse7xwk*P-9+|JR&lGne12`1W_^jl8gfpA(I4&lfshx4nAG_kSr*#ec28c>PV{ z?Q{Q1jV+|NPtlJ&r*_kx|MZ*p`voV>taZ)l|<*l>Yhu54gyNyr3tK4_qJ*X$Q-T7YrR`aE7?27l3>`u$c9h;i` zIxqjg@4`R-^fJx&UC6T$%i5y4`)ZdbQ@wvnUj2-_eAVuUud3^P%!F1AKlqq-=WLyE z`MYgO$Fy@!^#yZzf5{%ZyY%0tj;&GWHrMa#dvv|MfBuBd(4Lvjo@Qs?9TTlhT|D(} zobh!Bw$E~hHm!L7^(*@^=HrhO&IYSJ{+$z=onFt&elxVvsadCJYgE#crcj-zL!VZL z~$wPF_1( z_bq-t+tlxWx4zo)Eb{O9xi@NC?ux$uq4T@_zWH|f&2{Sa_f7ow{jQn*bn}z2Zx5aA zZ|l9^^xIYa_jUJY-_+OtDe|*!j43Us?Y8;$_iq37q_-u$4}66t6z%e>zx+OJYe2#3 zDH=u@>Dy17DQh*K_rKCz7kg&IQkQ-|T~moa*9^ZVi9T+7{`~oj z{Fw*J_MZ6n{Bv#D=SI7yb9)}vnVs(v{Pb0)) z)A(l>(p&XiJ=ijcS!v-vwclMrm8VP1H6o)^R&5T7^Pi^S9oUxr^d7_0U&)SM|JDbu ziRieZyl%?LB!$-3O>6}{hrXUpY5nv=>$S+KsHe)Vheds?GBUkikf0}>j>FJWG z+TEQRY^&yps6GAhv?$Yc;UmqZ0ZAf%N@BUZ>OE&J`xAKd&H8^QQy3ke26`tl2zVZhp%^zY+)*^=AzsCnUq({mxU32TT>Es6&Q|6q_xNWD{leP3% zx0%=flU<2cv(vY#osu!V&>r??1xM5mW5@Qo+S%Hh!!-YTBxp_OM>!qruicbC=wcP*rofLt6C+v(n<0l_ZFz7kz5!BIt zd~uH7{|}srQ}z^RsQ%9R)i5Db((4@~v)M-p)c3jH z^?rJx^3Gn{JGD#q?4F}uySk!t`L30>6~Epy|8@NOtMGG^>v;5ndnIrEbZRs{=6X;2 z-PIY@2XoX;mCSo|Qt*|{Ql0O2X83JC9^qITmwx$Ui`Dwg{Z}HpcPPnRt(@kWdVTGR z&z^k$GMV=GIoRA6Zh38dtbT6IMZVmoW2>{(UKrn7eeuP-@{et;W^-%SoHMqa|LM=- zJz=*?nhPA>cCEsJWtXZtq805bjBCTzK7Q*znTN-p453W1y$Al`!ykVV(^_iU%u7emtuXJ zW9HiVTVT`LY_U#R)?c?oxeR)3Uvpf0E@8Psp2zT%ol={0&-A5l@{I4j+1z0!mRj^S z>ENOev88tx8mzD1b@%kFZ`1c3)PMDPc8}nyHJ429-@IaVb9w(#%gg)tu9TOx-w{at z5r4hiGSrHHKP%V$e-nnFW{O2UA_v6cZZKkGgzxUwgUHJ=2J)s)A*GHyYOw(Jj@?Xu}lU67E`tLukdAD2T zUqZ!XUjN%o^JC1@)0ygp7`MvKiruH7uzFI_u7&@eToGvcs`s@_`}U>!{FE0#ItEon zwP%B)WlLU^rX;@3X-`;JXMN_CiA?mfYtbd57cUsT&rL`OS{#4dpzTI(ecbEszH8>K z*`fS~^8?R|$SHRUf+Rfu?%BOt|LE?YpDv5s(-zsDtyA_p;)0i_t#h&#>$i(%HKQhO zKGwoqlzKyxEiQFexHlW8hU3&itSyeox6Tlxm)i}m{j{BJIE+%s@~JkxDAUId#HDx?-kj`vxhyxY4z$^ zLF!-gubW@5_U_axz2x%0&giTdhr%q5?@P`|Eq;@?P-DL%Yj6Chu2Yg=CdbT{yBB8n`Y>zxqHQGFKgM!rMuoaPqyNpIpN7X&lmbHlkGSE zs^94Fv;JsS!mq=u(;f$l<#-BgT_j&*(74^tK`edYn`4`P&3azFKccf~CA`TuwQIV)T|=UKu&6TCAXrX;U^uk&b8{*>+eYbPj8|EQezWz%cB$7lZ@X>|Ro!T7po?S7jF zA3F=vpL=y%?^ji5=v~Q}{K;7HbYWFggqZU8^dsGd|2+4s4m1CKJ^t=vm+ttpVb;5k zCQsewV#O`8CNBNX0S6^brT#}7G8UYFbZ3=K|0COP&AT|AQ-3{uJx{tnyXksxz|?QW zmupn!@wADYx@j7)uIA5=6U84rswPJKoS%N=thkz8bE0Kz?fwa6Yx^#qefu`^&Eor4 z&!_zJv9HwM`8XxE_Wa|y7AaS=zHj>fZ+E%H0&~Ur3zW)pKj%H;uijoiH`MlFQLkP; z|E?ELwrVVmtl4|uvCX3X84a9&3Yc^>R$mM^{cubCuAtGQemM*UGl*YTY{=IVWTuCIKcSoJZ(%PrS*BJPOo+7}--uYAHs z|G+`I% z8Gng>TpjGaQSN6Ci|LHB!Rxi^CU>^1nU>mGI;-9?HL}@1bBfB9$)X=C@5H>k(|(t^ zev@DRw3v0_*BXzlIJ~Hd-AI3X@~Q1cbvqr@@2`H8J@t90>``N{hmRYAT7Rusd6d^{ zYJvahLrjr1>Z*SW|2zs0RnttGb9&_or5GD_4$srvJV7C*hhoE=);$s0kuX)~xTw3A za;5hC4WA;f{n%8pUu4SK8=197C$9F5b+Fr{lV7NR?p&>~H2KkFLfwQ(QJh>=Rj}>y~&=_D;)$oc6DWyY`2b zdqkH>Fqs6Xl@^rS$*(`e?Y((P#NE6bNldT%<(d|x@h<(gNo)I^M{}kmx9$>oU1Z&n zS)#FpuXNG*v>^S-pRaW11WsvB+S5C!`u@sG*EW3$wOVW0J)g*EJsV-!9l-!DIG!*P4jPiQYlG zoKK~@KaJ)vS$u9zu|cD`cfpO%u^bC67Tcr| z!=G}uY~KdwrhR(cp(zuWxvEJmcby%e67}(!Xu4j_67EaSTQlrnlYi^o8w{6QnK)gY zcZK)sbe)#DZ~anTE3_OvWgn*>ThNe$NL(zx_!U zpWWQ4acS}YmY#mQ$j@A7eU}(q{dXkyl8weS&!)l+zw%CYJy{s|amxhXk1Dfovs;|_ zeQMIjE#H<-d1BY!zDR!N{3fxJS*s6<6}N11Y!z$OE0KNKoz`p_wA`cqu%)ihG)HGy z%WEQy8^tcZ+_Oq|ePC3^s!zG5>z4C{N4cmkJ)*fu!}VXk&gXQFdC7wE#gbEJuTJdT z^D)P8?z`}vc|iw~?<^`3FrWYUN%y3sDS6i}-DzCQ#eV1hso#^U&z^ie_dVlUlda~} z&r`a!3WH^f7t8Y`u1J2u>mKI!z_6#1t8msC+pTY}rmZyDppvriLys;*XlM_REasW3}gR zzL48;dC!g`d;gf~w?A9g{%iWoS2r&+J(ewY$h{pZ9A1~7y|dj<*CO8VVORCRJ^s_K zN>_$0I9Jv8>O;mSnI+Xz?CYbRoJkT)I`Js#cgbo$-+Nd2Y_#)5GoQX(S17gYr`|mA z1U)s=XR|)~OzMBaP_&l6aG(4($;qbAA4;CR-Ss)$XM51cPvyGrxW7lf_o_S>|LpmD zwFD-A;fjwT6W1EQ%F4g8*YjL!_LNf^CvugKc(>qgZYY0MtPo}Ee>~yaX$#Vx%S86$fXM}7cMEtK4)tm z&FcPTGou#&@vcoCYcD)w4gdZ5kwE^2u&bKQcS?7*R240hW{kn7b?r{G(!HXK{KBg9{Rri1p1 z^H+9gsO@tXU-|ah1O~+eiBo*#IJndn=iGer$a3-FtV4$PqCzG;Ua&8*?P^(j=*yi< z)4%OFJny<}C6}g=mR*Q?>y*7Q0zt+t?CNi=nM-n=4G*vG*ya6I=Wd+*(V7x=4*w^4 ze_|f$>dR*DDfqH(rSa3KB*x8(j9&$PZ{=xTlIK3Vy6oFW=0c6_F{}ICH1?cdEz`}n zZsUpb*@r3;j@;|kIcLTHrGIjJ0lWQ^ejT@hy#oaQb1nDC{z z=37CcPGtBbSB*T4%;~q7T7I0c%!<&@F410^SP|^y{C+~^$7JJVX@0TONve8JZGqGYDgUo2*R=Y!Yc$6h8OHZcl(A2lte}en+;fgu2=5`9f zAwE<3bT<92G4HCJwC=Lg-Og=^Nrh`{j%8R+<&;Y;3;LwQJn8w8vwc5VxHvV1j`!Sm zk2n=?C_dTzu;$C`WkqNAUG0DSbnP#@4J#rx>7QM{Ytt5YI}QCnu3dKb)x7S_`t){* z$?TWL^Dq6;I(qy4e$9tpGkOXHEN_XGf8MyTTD-MfrTm+J#pR!$1U8+O`#O!OENDvY z3|X5PPs8=OtDSz{dHHFN!eZrlX-Znj;?1+3*0fYis}yIld24HX_oL0if~lLH%`@W7 z3wYMnWc9q3J^$>zMdvO^9j!h5fi?S;-1!;vmOVK9xzIHGND|Xs>5p=S`N!V+eiNT} z%q0EFooDhfzp`VNeOVB>Av0yWe4gGr{q@gZX#bw>we5ClqpDx+cOT*Ez3SijZKQRY zrX7ktf10Uv;*G3ZJCA;DytDoM#~WMIj_I^+-y^%_!4)S@leE0uv#;EYmiC(y{PXLd z)(>Jo)4S6nj+tz3O1Hn$yE$ONqtZ#`o7m?a=GXYNbwQ$8vR~|piQ>gi&l{ht-V)Vg zP?i)eFUG1NTPbqc%;8f~rE8tg{QeNOLuYl*YwQu-=JlWPz2_SF+~9v|VGBO?^nQGG ztnNXquY;`50hTx)hxMN~Kkq$Jk#bjeb$0C5qu!7BwA-bM9|W%p{XTzX_!AdZ zr;lk7x>+TmWusC(Ri_N>bL;J|R6(4;&3SOSAJyCA+bb+3r zLDQuPMWcG;s~LkUm#)0zW+(r9(eb}2kFF-NzMWCMN2Tuf z$=NbH!~Q$(i&`z+)v)Sf@=GmW3zJ5Rpc@7Al#Vd``_<*B@Ac#5Bv;PNjjYd4Ir8qF za>qDkMSnoWYk#k5-(yDtg_j!L{SXZm*b>Iy+>;dEUa0e0VR-gkq{f$rk8@)-2PJ#e*GZ}P z99-%CZKFWZisqLdmbF5GU28M1aBhDY^;AmHOXThA!jh?hOGEei!DFfFF05O-Q7P5x-gT(y+_vYc~|FH_V7rK_d$Icsg+iFcp04&GxDWzZ}bcrC?x zmP$+iX^9HCTZ@C7vfBLOEF#N&xy_#*JrKHnXFux?Uc1wGPkFmI~?%Iv8Mj5-@JdP*m^A$|LR*xFBqS`4$WD3iF@X>V~VkBrtG)r*=#ti z#Qd+{x9|6P#W)w=h%?>fe}*|}wF(>etaQ(twP(dVg05)AYA)H@@%3TdnL~ST-)P&| z#rsT8@i@=+n;QAMHFTH6OiwB`amqaTb*Emwf#e{nC}`_zpmivnf>ev`|O-&8Ri;`i<5iox+bzuxy_wYT-!UfWWHKZ znfXomc}8xsl8Y1f{w?@#`fuI8U){C4|DUtcShRmr`*+?`cl(#9zkc@BZR?d8+VZBI z-)HPPx%hfJ|Icd?R>GzG_Pg)2IVmo#Z0`Mi)v-lg{^oxtTz|E5XO`clYBAO|fv>Xa zc29HasJgS@&b!4S*Hl(sPt2CN(GzHwo&UNxFe&e@Ug~#KuUU2G>FaG@z2E;Nx@2jq z{KDn;PYX=Ey2)2%R?WQgiDkO)Iegqp-@kh&XYkJ*`}p z79M)L9VePB@%w44JTLd&dcmA`i~j}kKbq>CBUOUT2(LG}*t^X0~JY z+)st~i=PJ16Z+q+7F6|}eE%Bevy>YTd#I-*j|`sADR6A+7|g&&L>0u7DZ%i z-kaFG&veaE%Wbafh4ap9Ml;X6yY9n*g@`RUQq=o{^Zamp`K#p{yTpXxn&S3iFmcT48d1+Ng_Lsf}8E6O(V&j2k{Ef=0}dW+`jv#KpG zH^ztmmJUmOo_GD)%@1bc4^{-c@?UI!)BM5GMPj{a7lm71Z{7XdGh*5bet+G9mtBvt z->uqk>{Vsu`5hupPUZG2@m>9jJ)-1EUiZn6)l z$0zhSYm+qRIlJ0P4z6M>+@H?3GN1MT^efOu!B6ui6{T4!VVX1>~oZyXmzZX>gK0JLr=cq(ba>CC|7pkNqH{DfI z2%mlMp}?^=>tL~6$ClV+tni)a&fW5IM-BJQpSKr35rV8v`}2@x3;S~c?KNfTl6rkl z=T){CY4b}6E?Dwr(UyDB8J7}I?Gm5NdTbNNY0-)2Hi}jkcxP_!GR%`o@>=-s;rg_9 zLNm9ds@BSP`$uM|ZNK&fr*GRIHa+-(R?K%D3cida);smF|nCtgM!pue|zT&{wv|Gh#>gPC5BA z!Rl|fP0!K1TLMqpUN1RvZGi)~`%|;314(y2Ry0oC8naw^_oX}OYd1FPJo4n7IbqG= zY>mg0wX<|*O_i>!oFcW^BcbzX&Fo(>Tta)l&dmNY$yIjgl%*B>cR#c9IrR3sXwhaq zu8(|P=W6c;D4e(y$8&jpmiX!~ujamKdmGEAw_m&H`LnF*Rk!7CCoZ*I^se(*oXQHp z8Fo(}Nx6sWw7obq?RSvM)d%~s?O#}ZI{im#%J-vp48Ai29BFBP7NVKKt(W5z@a>b$ zyVqxAk4f!0e{HEVU_Ty7ixXoc_62jpGsu`>Maq75VPZV%z@n&h`qiDJzW{ zE4eml%vWH^Pu?qed!8oO^3wlX&YovEpY1IY^p$PX`)^*4cM>cFx<@@l8jvcZE*$uVcDlPYQh|zfW)5{K@{amAi4{b%hVFY~$YSJ>z}- z0qa#e{VMyb(@#5Ztve&x>+x|0zn0c2kC?r;r9Mpko)YG>lTT{#gelyCZ(q*|Tay`Z z?ZMJLZ$CZ~^L%zQajjdO(6)LM%Fgy^+%q0Ts*+&%amtzJafgy%d3uCDpza%6wdcOwIt*Egxa%v z9qQ#A#lC8-cxO0oX2*Q_`j7in!z$0pdn=xgN!3ie8NZ;FYwxz0g2dXsOTW8B=S`ny zyLQ#J`Em|-!~bU9SKgUi?n2+P>a!MhrStq7 zf-0A~?4A9<@6Tr$)r}$rxyP!DC7RC%LT2M0v)ek-*Dq&?13HP1y)n{($ zSIcxWZpnFQaCze5S$v-ks~PQfXBM4OZg98w?MO=R5;_2tS7 z3vS029SvPzE26ee=YMmR+NHybew>-X`c$iOh2E_5tckoQo-BRi@j&a|kMr!|2@lCJtCbioXAJgrg@w7gL_q^Q$jdQ7?YriTkjF_Iz@}&0G{n+yj zn=U*Le2~yvF-iQrbD-GU+_-sNtJWCpxMm!{S5@X6eq6KC`+%T*(Yr%WUYXo4V*2=Z z!8sR#8E7sg05@r-| zYVZ8x`Tvud)IM;rEc&Q@>FW1S?;mZL#U{J&%RTXnefCC3K~LX)ph$cS>u{FV#q&5O}dcPW<$Kp9i|a7V>ldp1Aah>FmXv>;(%N z&&x7@6=OJUZ$>@sc|G(uyfZKLlP#NIlLKs=4>%^3JP2>^_7t zzr8fk;_4IE=@Z^I+WM$pD1m!QMByct;oC8R`=2JUpX3UL~d-_(wB1TLC})L zEuVf**!^f-Pk~4@SAL|(Jin@0J{)Fm&T71_yt?_ELs<33?E2ul^ER>WY+J5-DN^ac zl-0}9l4_@1F0M=HT<3Mj^V+pc)n`Aa{7)~w$wQtrC@=95R9*PaXI zc^=%7ROH*aIs4YN%L>{;S2JzWx7v$|++w%+#&6%d;*!SX%@c~&X}yemVzGd6j~n-` z>OB2~?i7jgfV69e-Q%6gKV`%R&i&PIv&!>W>xVzD;yezt`#!iXFd?2f_j)VORtt&b2OX>5 zrun&-{MLr=_`N5`C=wME^e%v*JY}Zm_vz7fm*y`Fnf%DVx}^T--S1pa({ffHmx%4- zk3O+w+2h{CF9aMDIsF=?~4_p*KCo`D0Uy$QcbW_i~N+ z=}Y<_ebjW#jyZ1sqI@RENJ{xBjX(XmfOxHEab$xkd-EL{I7qW8B^N+ zRp+^?boI>-=9)Z`-;K>JZ!xugiP8v)KEYnB+xpr_&zAoqxsl{agIja_fg1Z8tvs_5bqy9jw=XH>mz=tNd~|c3*u} zzpK#oqWj)b3omzG@%yiNwYB4AxYqQf*B94v?Ueccq~}$CUB)qI(HVYz_P;(m*?DRB zeYAOHd(wO5lr0G%-*-pEIH@jP)75_GtANG1JKN9SPyY1Gxu)KjQP@ItLAk-KEtiEu z_uq_j__c_mO4D@t)AV_4@fFKIe`B-_x_ID8oVwR8J=cGI1y^3VMYXdmy}|eNTjsA< z4P6Ce|{8akq1IUVLx`+rsq5 z?Q@cZinw2IsBvDn*KPM-bFcf4KK)JI^oK9}W>ije;2RsI)age(b+=1Q`~A^NRkyNz zcY$8lu6M-`gBpDdE~mfz^Dl9yc1QockyT(mdD*N_nTdywI#k6@G2vdj zCbWtvsB2y5vG0?0*DYD~{nfRu+uE;=%;IDRuVqqX*%JT##Xs-1iLN_L-)uD5e=6$N z&Y5ciO|r$?_&GvP<<>>b*?R3${no_alRqUbbj`fAxwm=CTcM~oX5KBD?MJhsR_ZTq zy_hklw0(O;+(d!&F4IF_?}a96CGT5*FZ@>hnqA)2kC%S_=o$8DPh+Qhgu09RB&7v+ zq7*r%>|T26pW#vKpI08p>{Qf#^SLf7-u2PSQ?Jfl?Ori!zgmDDi%^u?>VIxN!4nd) zdM|7|cCU6n__{Es+%u_ROn@CMw zF1@3Boiq#{-F`Tqw<}4qU`t`|-gt!?i`c)qmu8E9|7_7^BkZx%{=vK_Cqg^^oRdH9 zv%hH5rwE1kiABoyTla5U7PXo8+LYQG>SxTi3M@ILJzb)>J;}dnjXh zzx!}+%lc0?t0vl&rZ4`na)bN)s%yo;%MT~o8dsU#-n-}D)k?WX_RnYElV7Tw{cX16 z!$Mu##b*?s)^0ku_x{I~hocPapX}}Kp28T)qg|M?z3X`bliG(Ort@{vMFV@~Yn!h4 z8cmp@K8^Rb(3>m&H!XFRecUfK&wrcArCZL{Ot}iPE9JSwUViv|Q&L{<>h@P*=K1fp z>F9L*-F3BmSxv_E@~8m6dLhL{Vaq4E@A&iHTk8^HM#>4!lT8{UrY7OG%Vy@ii%dy|1`-3QUU5({#POb(7u1 z*^46+C)UntpR&fA?Y`-$HH{k|Wy`;gIk@WJInRVGimLmXSSqJG3BUc&P?X`iCMIR_ z(Lx1TT`q}<)7UhYGrzq2;<)(y|GQ!)ecoXeBsu@r^4~{78ajC=o7{SCXOr@F-n+s( z>6-rxe@|%#Q0&|95&uZ%XOS)2=Dby4|?gguVkW# z&ZfTbpQ(xQd<#<^oSm`p(3dZB9=(+8dYlxv@4|gw(8-#!IZkxVI%zri$?V(wJ|P=7 zR4jRKar)5~#iSP5>PuUHe~~^uIhuFRR)q|^*_*?BZ1d%wOsi>3Sg0nRyXEdJ>$jKV z>r>_P@;Coa`nu=ezu)iuZ|2Vbd*y=K|D!vlS^T40Op{ODJ!*QV&`=;?A;wqTH!4jXH-Up1+HpaADg}mHdpEfhTzb*LR zT26&I*~eQX^BuM@J`DP@kZIPb1=6(>XYGGQW3xZ(t~2raQsUsp7zl2fwB~ z=F$GX@Jng^8E{_;6fU*`6P#AJF4fZevPn~Ko%i7fe{Y!T3S5q`(AhRodh5rwOKEGg zB`2<#@OAn7aE|N0c??ob^~8^TnskD%W}%JEtN!kD!KaP|ESR2>92ApvMl1E!(hWzs zzSsZzImdRx(m<9|YELWKpRWA!JgP)1wU9e|)7`G04iEQPFI7LfN93mID?R;&a6|Eg zK`6&dQeF1W&%4^cT}gG*fwh*Odu?7@EZBP`c_)h(UuDc4_Gd1} zI!EN)79X}zalGqp^|$HFlrJsiR)>45BHP?5pPfk+owR+f&CW-T-Nx$w3%p9_->E(K z@A+$ubdLH;iwr~lv$jo{8(mx{%$c%w`@g^QcmJ(1n`gdma#M_A>~{}NEup%53umsm zSo--J<4^tLU(8e#0Jmbm}P^=j))Bd)nmz;~)-e%68d&hJs z&&PYKE(I1=GR<(?%3(MA(8Jo^}X}qrDroDdB*G)@gZ?nYtEVvc&?dZul@d~LM zVq#B6y}s1t$jes6`)#*cp1ExQFhp$g?V_sLpvvcB%1v+}i zm_L3xwYTpZ`w?l=cfw0s&d0m+p86F&`;FY|2kdt=y&UIjPnX=`anQ^5ik-~2Ez>sb zJE$PI{i%N{x8*2GS^l0OHMG6*fal~bzMkB)NHx1i>o#Ba<;0MEOFlH;c@L* z@l)NSmM=BlZ)$k2F*p6s1r|@ST4A>B>AeDxZ%#PB+j;c$8@VZ$pV!=b@=RxI`gSe7 z)9*Kz?9^kMH)npJdE~12qW5v<7QNanBH%R{GU+wj@Es7$!8{&aD=>(}6YyY!=2*4FfeDJ*CClgXr( zz@)EuK%t~@k@1^8=Y#_amQs)QgofTPYjsd(kxGC0>P_Km?V}fFY%8j$mi-&_Q^}uYA8||MNR+s@qsH*082B=_Q8d z@Aog;BHreNp^3pY`$0`)AcrP`BBp=j!qInd!|kO zRVdn>6Y{<5K+2-#1IZ@Rsox{mav~iT6n0F>;ZL6OOZSvC)26QM^L(=Xy660+^TlZJ z-jI0yU{=1#+;nq!yNlPAX1F+9eHj<%7IVY+;{@0JuWSyUa^JhAB`NgKr0&Woryj0X z`>>ib!~WRqgI2pA*X~ZXxxM)8MKjAN4b9b?Usg;y$$5$Qo!aGyn01=@`D{0zSKq0t z+j%}LB3kwPx?9tOa;F@Nms&ja{wb5RSmh_upZVsRiC(<*;9KBZuTtwzt1~U@L5)3w zM*HavI?*?C*jXRF_&3jR+b_Fs;%;?|SpNnsvfa>Nd~Ds9da2W^{`2trEti!$u3CNZ z-Z|l8KfPI=>8`Q;9U-c}!QkJg4X4?9%s>CL*xoR2@;wpn&G#B|8$99@kJjCozq9VZ zHjnEOQ^Q(k_$#!`PCC1`vgJ}w>(VLZPK>)VZfANhWj6wdJ?tj!b4>p&6~b zahd6Exknef40o-0u;uB6iY0{~^j<5~T(5C^oW7DbPcvSFDQJ0oP1YNO9OGkY^68q5 zi`To~Tk5*~#m3DCO`HChEJ))!($%=wQC{KBDc9V*<34Ym?Xb8pySTNWpTo$ zx)~8C&sHA&Yjf`92k-BZMmt%(&U1d9Y}hAuwomTZ!PV!!ADv{iX~hQnH!ZC{4?Fj! zD^8tQ-E?R3-NU-I3j;ipRdii$OC@BA?y5Wse6)&Hs48uS zWxI~pO0A`PL`t5qUO0Vn&CdGoy9;KoD|{oAI?YD<#mqoikxPrC_PtTP|G4Vx?T>K= zX^sre$)8R?-?GtRR&}phZ(+$kk6q<=Pp9qK9{+XTXPsx~Z#M1xAfg&=|6T9bBqob> zoHGt=7hK?b?~>ZJS+&1XzF0If)>?ehEwQ%N4On<~ZR?)iiY>C%R)?dQTPM#_*(RUy zrTvR^MZm)UI`8++6<>BIZRz_LT2Uvy+$gS==I-x$d`kMf(rvZwmjSEZn}}am+I+kJ ziMM<296zof8Ej9tI{mKDUXt=T{@?etLObs4+aYgqXyN!Z98 z?~Q+AnWCCLefr$>l@Dg=tGeE! z`0X(zD%$Y>iG`k`#X_%&*<*UkD zzjHf#+|$j_8GYpitwB2tmdv|r?{T46Zp-=Ht%qj2_0>JTkm7ye(5mWdpTl?72hWzO z&b++l?#BE()00g16}>TDD5tO^U~{FW%Wa>^srUKBYrjX7@w_=Ed7?(LMt2 z1RjL8Mzh^ce0d;YkNpl+-*3O>^$0YHZp`-8x!10^X5}us__itMdHv4EZ=Ch*GVirT z95>zxXf3_)>WkpL%=p8{vt}l}o*WYr`RY%|iQk)7`AsuYY6-say;9@pZ=bYJR{blD zow_+H=Uz1rZ7uox)Na=+EqUX{`92PhSNv-zEM@l26D#czI5e$GfnP}ehIBB~Tjzk= zS5E(PD=>EyuuFSdS*5Myw|R2ypMu^ERdPdHg+4zh@F?^@J+o8F!@%K|=_pEu6r2Xqy(uAKk zPK1jsy?%XrWbe_H%2Td9HQC*h-+r{l>Co4H`FzRy+V6vG#1`GXb1$J~k~aI)duNyP zM>ZQaPr3K|-~MG4*Cm!bdHkq$X4g4;orIanS3UkW?*A*pB-i|q_tTCija-$YG3&BE z85q0ib2=YWkm~H-p`IsEuYX8k_nDk*$Pd5LYqfE8W3cKHMUwfiivg?kq z&X1H5rS0#xYiPY!tC)A|{O%)vrIs>3O>8{K;(FNhcmDg=(}i|@h)mC(KKr%ZY zqN-X`S7aZe^-O>3FO%Kw7j4qtOm*u2Jx}{@w{qddjWW9DKGbA}O?k4f$}V!z*}uX2 z+P{2>t4ZmL%(a=?FPY!{bIqC=-x*skzHN8Bvpa=z{m(mg8x)k-W39sGTrctezM#hK zqJQ?qG`q{^_?J`Z8H6Kf6aZ`TE}- z=Js`hGas$YKT_fFH%;pMvm)MOM}He?K2AS&G(EZE*ty3aowu#~erVILB)d5s`$GPf zUgXtYU*lJF=eYbM(W3o};+AJlf1G(i_N)F`)+WK^hN8Vnys!3LoDt9Jc|9{PNYAa{ zVU3*XCBL7?YZP}pd3w2N@9|@ryYf1xezw<`lW$+=qeXb$O+HoaVJxrx_O;KxB#rZZ8+${OmhYN=EHqIu&hY)^t%nvb zs5)WXzb^RC=U)QhXGFFq$w_{nH2LRe0ncauMN%IgahxVuGiBbV=QFQv{(s_6-uzpE zdoPv#EEX;did(v+$xuCXopXTgXZFW0_PwsUrgbdv$a4(G|ODj?O9j-?Pf5awcEt1@lv@4b3a#YsC8XKj;e^G;*_Sx&QUq zL%S)*_5|s3zpBnSud@8ow8pIdtLs)4PZx?l>lMp=He>Pjia)m>6guZF(mAL+uPAs= z%_Z-s3hyQBPl(=DX+HgB#{X4&d1lV%vG){Ne5B%g=KYO23v-q7mNX~L+4H!n@40%2 zTg-TEr zho7M7paJ91lmqiU686qX{r~S%gVJ~X>Mhkz7$X)f`SCoCE5Epk<#K-Msx=?vzMXnD zYk#O|tfa63BS+2jL)HEQzB@(kYfSlCzeeEHf5(HpN^|z=l->HKH0AWt9fI!HKd8H! zb$$L@o_Rm{px?v=m!><#6@KTg?AlTib6lzR>G~alJ2iY>O3l4|Xns*m(q0vp!nGgj zIE{|ix-wn0GmbZOR>yPx$%itI6PLb@Qggn3`RCa#*M{{YhncpVXnEKbJD=O&hw<&(9y5On$UEh`_OQI8!@76vyPkVa{NjG))>IQl;U9WTp6hx>MEs2Twa&lQ zyYfX$S8(6-zSp}-?3OMp77Sax=HBbnt;<4tIXms^Wf|>T_xJ5BHbY7u7(oXO4u@3vP||2tt6`S7p%y|Qqk4C`nR*}22SKW|U} zxu5NvGY-sF4XEF&T6_>+_#?XpG|DK*6jou+bbLASdhY2lYVW!KZg1g9;`PWWCbWK6 zE~q(0L>NI__~5P3hC{#K-jkkwhIl=KOlRHC&7FJeZQ0C!M4dbb^}&OkEU&&^-*~ic zBP<;u^z8}I%3 zU-3pOb7;y#){C9p_}%Y8>6>HstwpEbC*Id*g*P1fefGYR_ywZ%Ea++wy%!o%Lqgcn z%a)9NKZSNRKvz`5mfc|IelX^EQ)aI`{ri0Pwcq}|ejxS740LEyZr)PuB+$4Xc3p5Y zKdfabTOGP>=K0Mz+Do^K-oGl79l18{{HwWTVY_#&>U*?U?Zafysb`ZLt*wcO!p7~c z3D)r`vp;H_e$~4@bc1=sth;G*bH%&Y7|Nu5Eql#7?SkvC%N!98|1Q5OvNah2eo zu-&cEdUk3gbL#e((%U<#&oBGbEpfHXV0PNpH09Nuvzs~pI5B;VpRs*2F-4z2W4u?w z_M2%zRna&9p1Hk%l~H4F`RY=&GCt5?V8p|}tKT<#HYcVGZDm<<@NU`-U2B`k4jXQH z-pnojk*-v{B^-2SqxPZFO9Vn590l*28$!3A-|wIHwI;0Z=P#BuAL?q4or4^`4JiX~ zkq`c-zqb{+ePSZp88ywWNgk}rZ~p)IZs)t)cco>=!;%C(*Tye&G@Gnbo!g%-He;hl znX(vHtCOk-$DhLr0axz*-@y6zHs5lMJ^!}_hg-!d1Yp1qZv`U4Ute7n^>MvR?Cs`z zRk8(!n)%&D_P+Hx;j2F_w#zfw-^#sQ@%ze*{agR$pZ)J;zyIac{;cor zS3mpC%}=RY`}g`i(^Ws7tJUSMT3=Eyv5IUiA9e zFSjJ(vrlhYe(C!(>(KbWF^NTD8rvmqpI;Um|I)AWue4*r-k31%50Brh5&nJ4|Fu+h z&c=uhJFKooF28Z*uZhLNQHw&_^me@68vS&>EF zyZ5bmu%}+nrP0wq#D3?@w+a@~48OOgOWmq5ezUVY*G4Mr@XJ+FJio4nuHU`(Q}w>U z`zbc-+7@S)mKFzp)&F<;*R0wfPYrU-{t55<|KelB{gce8i~rm2y6bkea6z57{H)Zv zBj308{dM0m_4NmsM z-qt%F|G)6V->nl`*mg74zyEX6Y{smo_0MK`t^GS^|NYzV-|LpAh@3vUrm8|BY;O1I zSG(#XpQyMegvg0 zdOQD8@A@yB_WX-)Jm4Q%p`B1aPw(=rd(A6)s>KghufOfcvAK5Vk~5c60_T>WUsbnW zSpV7PO4C{EmE+gE&;9meS<>^Ss&nUsE(Yu{tBMR+9WM5d>s(<$VOXhk>EjTac%9WJ zb3)Gw@}2#mUR>#SH@2mC`t#DbPrl1PXYFyRxbmX?appJQi*eG8_5b(8_AckHxLa20 zTYZ+fd!Fj#o113ohFzWVE$0%?^e>(_V&=U+bgWGMvuIU|-rgvv~{obtV)wSzyT+hrpgJ+w0%8O>*7!t4~y?u1rr=-)%24>swX&Rnbzt1KsH#4(XXC&gXvn z*tKq+z4&KW)1-ZKpL?@ZJ@4H(Oa0hsi7?YW-{YQVW!OBF4&GcWcQei7?>;8Iy;AP8 z-@o}YrE-P=ct5+4U6!neSgYEgq1{?)PMYe)^f4o21TNyLvXXeD}7+kJn^gyTv_uOXPi<_ZJzj ze|L?$KXJR0$DTFE8fWVkh~Kfey(R9s0>9T@b+&tp--sq#&zhlqoiRg7^RT+z%AnQ- zpLZ>uvFr@Xj9q1X(Y{}I@aajsS55W(R_?@jedCrRSJq}uuP6|CuN40CbF?Evl+oO? z2SQ))U0!i8^!pzfnb%J8+iz@$)4kcg?2T+@eQvUf=+9kuU6lFQSp9t4t{z?z`uFwW z(lxuEGRe$7w~F=m(v_@pcfa_W^xjfqp8S=r?w`A2d4GjlSC^k#Wbp9x^Y&H$-_-_H z+zvm^ve!2`%bEYu3@K+WrF}EbC-DpKm-TqQ#(Vy`^6Tz-9sUmuWcpTZ?p}Rkz0~?k z;jd;cyfW+Efz8LO>{*xR@?QJP)bsp;cK8$nJNx&n`Ip{o|6MVQ``gbK+ln3cOC}rN z-}da7`2$O4v$Ox^8n#cnYkow~?A-KYg+gs*&vl-ymJl_05V`MPm_Wcno61JNvkOhv z)CcQloT)6WEETMNAAj}XSFV5gKREdBt+tE#UiM-&x8fwK!&yxA z_uhZ!|8e&Et5|1s1!KqNeO|$fl+GDnm^$6|hWGwm=@)uWbDxV_-e3RurT15ZIU(WA zvmf-vy}liN&vW;?`R-R;|Nm;gGW~YU#`fNTGwXLxzuI7!T4uig|L)p#(>}j?nHf?l zc;vf&_5axKjx$bHu*jd>`RL6asSWr14yN19J@EeAqd8TDm7+E;>#tYDO6|E?khJez zn0fQ*_3zv5ms|`vne;7)_qhJmpHCT@doSegIFRc52 zZ&!Vc+$wqRdx<6WC? z<;Hy7JHz6~);BRB*VjMz{(ale@F~%T%T7K~{dR`)&%BklZJ*1RNbhL;5Oh~m_&ar3P4yy?O|!*5$<8?TKvKC%tmf*h&xJy- z0)EfdUapr?wo%dJxeojOSj{KP|M3QAweIo%I)6fN{qKZ(A&-71eqHv;dl?(cwK=l$ z-StEH?V|T)dA1AuSUG32SNznK++j~xyOypwQ#^6?8t2a;bCrGe@v*M-Zhm4tWy0LP z)#j?7SHJkWVO!vXkEevRp4<5JR{Vb_C>T6GcN^i#FzoJf6zZ|}~#JtkeZU{TMmuqZY=m9+b&_}biz#Sf6KQt4W&GZ$>)8mGFOPWUS_j(PONw7TvPtM$L8C|tt!eE zZae?5d|oM%a$rVl?it=_OQebKra>UQx> z@v*-)%|Ftp$TX$SUNS}J<^7iW=RJ2d^ZJT|ch$XUG)lPFq}B0#dBKdo^{spI%iUJY zwhV7re$eZf<8Se+mm?n77u-2mUzg$W@xd>(^P*f2Rv(z|qTaUVy<+OU__?{FheIq_ z&7WP-Vcq>Y=XzqBdzAKtRhyr6e7^m5xm;NCtaps^*NdKP^S`p6?V7*FqxTCMFRkNQ zzkN;fomE?&WcFNa{NXOUz2|&YNLwHC@rAt)8b8Nf%I9J1v35J0_?6?b(zEOf3l52P z#+7z1dJx8H94x^!Wx4t_h3=N--E2XN3x#@O@840J@hbO&Mt@mvQi4&<%3piR=SQ7g ze)aKT=LbISiBa5EHem+FYwzt3Ke=)Lry$>A7F{j9UA8Qrc7B@c|4n|1YByIaS5r%u zp{>3B=Ie%iUaYyZ4KId2G5`DecH4wWMf#6loj;yp!4*HGBK>tI7t~BGxub-$sbvR-8JfEX zaOmZ~)5_Hv*|M!Cu8Nwl&Z$qF`}(D|Bjdk+-+t{6K2-BPB84n4}GIsh<^Zni3!1KA8_b(qV*5Fzi@9VreUpoKP+d9*lnl(`u zKF*eZ=X-R9+UBf#PBTB)&i#G%)RCP%w)^kz{lRGK{ll#6b*gBV#kAf-Vbu8Il>!k8|b&bn6#q;YzmgcWfpR)GN^0oK+rTsT&zC14e?H#|o{h`+?b)GTu zm(!j<`hL)jS32HePFBk2`^&Bh?Xo>4QRlqhV)nj0A?eePzuxxNT`6NmT$t2%rRN!Q zuHL^V|KUX{OTERqdwc)yFjZsNzf9o=&%Jlw8-Lt(-#R~-_21{q&L`$nX>5O=mw!`L z!uroIfmyc48Xmv1E%`lNbMMXS8TSp-Z`g6YuP-Z_KX=1-nP< z(x0NY|J_w}+JEMEGq=i(3xnf!SuI;XU1H;(+)0mTBz-VH8X-0B)mzR#?bActtRMJ% zdFE36_@eXIA4OrcRr`;pE4|p&kaoAQuDYV;P{+@|ANPJd+dH)fR8q4tsVgw(8a+ys zUVPq9V~_M~hAlBa?+Dpdu07zbct2XG+LK%A+RJULRMU5v8m$m>+pqiNOg2x?^*1*) z7gjrSc9rajN@m&X*R^u{mVi%xaupi%c>MowL-XO|5 zP+8y{`wN>YzV&Rm{V{jy#nQKFTRsOSTz+(Ky3{v~-CJ1%-F#2yPnA9Adtl0W<0~9l%blo^PD6pHeRU{Tee5-Z#jzxO9Alxa%8{)?IDFcMblWuzfhWZlw=g$4BviGTaHZ4R0fIcvuEWWN!61a4}G?C zEAQQ|6JC*LpDdWaDgXE+rrqMd3R;b#otH?S%9wgr>&@2#6X$8MT-{vs#b(L;3p@p7 zN9Al5y%lTvS03?kx4!0vFvUL|O;t@B{#lvaS~t_uB*Qa=**0;)GiUC;uWHqrt8C12 z=9=VRJ5WSAMQr(JCw_;r-evy^J2HQR@aCi{zz_9N-YwLwQufod9EB>pC&$k>@O%4pwS86djz@|6YrntQvODkRhQBuV|43VvmVVy2>%gwy z^%u6QSI&0nkV8#AtpMOt@UH*F7&n34EglcuK-+va%`%a$Wn?%v-vvub+ z_aB~@VzR!tXZyFyllGQy{m;B2s?7TLyYaqU$33NWeUj($ivP~ZmwNj5wKCIz{HW~w z_op|S-aNYEaeVBzB>q?XJ-g}-t^UI?Cu?g=&bnQ>lNQ@VZGSE;5-Kps;`IIl@1GQZ z+x8`TzwGix-59S$UF*?84|v z|F+mKO#bNpuibBP@21VYKG|Ea31Gxm8%W%OG~TWvM`$^recuW;&*a3`OjH zTZ4+vJ~gUaW+f&1@xX=qa!W#fJvq9n>4cS#qsQwTpV&DM-eF0dE_z=fChX)bpK0L= z_RJfP$+)CFbF9Am;^4dQ6&q`JzjR+5Zn9KYXps9J7XFE?fP^|IM0kt-qU(&HKjsIs9Q( ztRKVw5R*N7mYJC3&uy9ztai5eu3uf{qsuover_-L-dG^4uU1x}|8i-M-;Q0cH?wT{ zbcCs{&uR1J0FkSA`Tu8k!%!JchAANMbs_pFQK{HFu4dv+c@Ib*|>rMiA5&k}FnK5Jem z;qHH|>AH%=9ox3Uy@hUjOJ6?QnR5HyvR7xP-_f;A<5{S;z@+O2|6AF__mR!!YqqK% z)7h84zBnFCL9aO;`KoE3PrS|D-eEg|$o5^eMCVEr?OulCE(maDiXqgj>(U zuZC(AyBZZt{FV1iUn4qk+HW_#8wpCUW&X5CnwO;fm$@}Td`7SNB%ZBbzS;g=n8@QQ zBivOr<)G!4Z<1&Js(RhK_{H*@VfXqEJ(u{a7dS2Z7MH2`bSI0LenpReM7`Ftz2BV9 zulle;ZU4g;Z)SU^s&8B`ofc!k8=zL5+vu5JW_y}*{RZdVk5d1p`_{Hi$(bL|B%h=D z+V!&S@$Ns9>K;9O_fPwbn6d38)27>f=gssa|8w-KD4Q+`xxbYAj!i?vbDoII1)tCT zTsQSm+pXd={uR1eQ&KNE9C)EvyGLnH)!`)%eoiubZoD^S;pHut*HyNh2>2($@uyW_ z!utyyOIx?E=-P7Q_p5(9*6Bxh_aFIYDAnt&^4|O1b?zy7f_`(pKK*LT#Wd^bTDQaI zQ;WT?2S1rCe=|-}Wo^k%5BI<80#|p5e?Q?{`P-w~`(C-m>=(l4H8SeL^SZwm|0reM zGQ0ZtLfyoI!`7cqeBQb2vsBxL4QUHKIYORJ-1F-Qhr_zu6+gG-EyL`yF%#PL_Rh&%0i&RN57;y+`$pf3cR#W|n_|WL;?s|1U$;8C=$u+yK;)W@H?&tOJ)U{JcFPgpQ!R}%UN6i$uYH8)`uz6v zy?trRXaD|uD<(U7!I3+=-U;b%Z7;v(IQyS*X2tPIJs+(CZf|*ehyU}DU8?)Pb{^ii z?_j&{eWo(4xNp~{em=9~$lUeIUCN*M3fU{X-NO2>v*E1B+uY|~H$2ln@5)KD{jo1R zR6_E-?dG0)@06X6#tPlrTYvCsc)Z+!gOYm$4_#ND>Set6{TE-U7g61XpRE(#EIIuD zSUE?`n)NG=Ki_S-tN+M90TZi-Z~pyg+7|G|LT=}>^4B&mKJnL2_$Ig7_V^9M&vP&G ze0XuPzRX}ri@4vHrSI-<+<9l=&2`>$)Mq4LUt_at#cZdK@|V_c>9aLv{$DkbJ8{;{ zM+0k}h<%5X5%ObC2&YvhI=sBTo_x^Lu<`1}BziFf^e9*WyM|q04 zNA|Xz?lDvx}RjElYRuyY! zc9<#|$t?EV*>o&@-RX^~`_wKQ|D6BezLCFzj9JapsSMKp@=}6K&%EspUKJCvC-2(! z%v)O}OnfvVxb5$zOPg4IQ+?>VJM(X}ykzG&)pOe|jXleQGtYKvLF3Y^^d1_iGoSDQ{ELz?IXhXZhd$zwa!U6+@fWT%9AIp)i*ALeHYxj zGy22d>~$BsI_C*XZiw2{U&&V{%=znh_3Z^d2G_nQ3sujpO+Q>VS(*R*{)y_p)FQ6# z)sfF{ZMfJgwGzx?Ec>>8_@A;*CG^MYHonD|ooAXSF;=gCmsa>eRsZ7llHA~R zfhS6LR{rx+<=TF1%i4sT_?vq*-R#*b7Q|1=@1NeIlb@MB+dco$7jM_U8-J|{dEa%~ zxFwupZkoo!s+oa{S1ioqWzE+}X;r(|`$zX=v(+zC5$)xo6>@CrKBnzovUl0N$I-V8 z*E{Xho>G--+n3#ck9qx<{Iy@AKbwD0>T-JWbxmo4(Mw%E%e7@eWo_m4vH$Bf=I4If z{V88?X<$s_>FuRi(Y|^&R=m@Ww>=|KYoa8;F#B0e<%i${h6TmjUgbK+uPpt2t2S)u zHOqF=3DsPF#hDW+V$6cbs4U2{qJ;7F?+3le9QLd+P1#u z12^ejuy{GKuH46R|H>C%^_M$bP5v9F^v3YWPWF##^`DpBTy1>zz)L-+zfo?2a}D>L zjD+b%cE{L{xp;Op0(8fcv<{Rp|&5KzTevUS=3?$ z7L^pS%ubvU>Q??DJ}TSb*EjZucO^^RvwAe^uJ2eKbp4yq|1TF>|k#rdn&RYwul`797AG^?t)%g*6q^S*K1F;A#npxxcdC-l!#}(csIyBfUim z-*?BwtklSUC6iyn@lY=}Q7_B!RGMDH+0T#XOKc6f%6qR*>i!(Vb*~xaru}RPG=KNU zWfl9>%y~@PJnS|k{nI?c^ERw1_@5ZZA2Wf1lj{Yw{36@uwzY4Uy`u4?pZ|UAgV}$* zw4W+om(O6i?jzW$q!hVidDTH%VWry~qGy+E_iK5O)?0P;;Pm5?_nwAd&H2*tP$RC$ zWplv8+#8qJZRYGfn?C!4OMSVp;Phk3>ogwJomuB*ePO!2eg8t`@~gic`K_E%)OhOU zI8W}IpZ9LZD~81~oTq1Sh#kq}P`;(8XuLFUd-?m-*S;9`Xy32@Bht3n?QBJr+IqL` zXI)I%`OCLU+}2&~?zB3&j#>ZG+G9^xU0MSFZ83Gqoe~^jXS_w$#6p_SH12x*!*YYV zUk)a`=OryYm5;k!>CjgA6#R`-xlh2$L@C7~T>k%_?~0ESd5ZRiDXYJ$to<+Nzvk8o z2gXz1PPNV9Oyzs{HSe)qV#~9N#sAwsyli_Hd+wMEv!WV9+;{nfrE$AIe)%Er=k_*} zl>WMU1(CW%JFO?*IJ50<--EOtKXyv3wK(kPv{|+0oWX_JLW@_NF;{h+>lV6IW#PFQ zi~Ch}7#;VYzk2ym*RRLj7tMTf>POFp9WIQO{~7b^5)6-ic=>N;cJ@2H)taBhk9o&* ze_VBFcclD}e=aG4yd|?&_OgGjX35-L?QhI}|7QESo0s(u%xz!pDPa-wthVL47Msb0 z7n>Hw%_+RrlWo1NR6_T`Ol@nmInJ|RPSWODXSl(eEA+MJ#fVE^6>rZG{3Z2p?uOE3 zN#542;txU|w6gm>d-L)9`OxEkC%z7oGcdZm;mzaax3f%Dr~J4)#d3FoZlCkSY0*4V z4mUh*N1q9*cx1O>-_Z^FAFQvvd$%X)X4u~Sx9{od`+uxqd7qG@WTGdsyAwi?w|QmF}vY^NY7#<*@oJn0Uec%ACJDUnRCwd_McV zrg-j+PQR1&mR->q`!8;l&`Q@>^w8mSdBL>4lkrkhllYG=ocVr2Z9(bj=hYbr>{2(@ zxw#k_ox5<{{@;pSk51Oxg$KX5Dj(n&)_c%h~#_Z%dMST0-YP22PesK5qt5Z*%o)s~7)@hNeFSvG2`@C<(KbGx! zog7z1&%YA*%vL???ClG0zP}N@U3*}4%fG*pJ;zpmvo%_9@$mespErfq{$kMAZHV0O z=J3m@WZ_+xlnK_~E_6s7oh|(H+yc|`!tW)uYB$!Z)ScX4ZT>rWSAXK<$2|A`ip`q- zenkl5>$*Mj-*e5Xdwh$@@7>1#53{CnAO2vxjk9R;oDj1e=gSW6*>ir^GW82D6+OOv zyu5tX-bFSacBtOxvZ+lw|N207&7m1F5w=d+-!hB27x(eIB;Pvt`Ob?@|Km0)S|Pjs zX{H}C>A#GP{nAF8r8AWpsdEYHwdaxm*#QEA8vxg=H&h`s;7GAyfjMav*VsZu3 zExAo)mhS%?L)d;BwH)i8dD-szA>QxLe)+}lGsi1U>h17gKL2&1ZKzzHW3`~tuJPsa!Tsu@xO;_Kk(Kcm|t=zLrU&L;q=6UK8p3Q`eaqnHuZ4SeC5Kwl8N=7{a5E3Gf$n>c6q17eJY0*TYJsk9Q$SM zJp-P#`;4|&Jq_AX(o<3@qxfj?#jw3z`L0)vz3`VipgsRS%j)n~n(O-<8IB)2$etqH zDR1!U`QBp!s&iWoWUH^3+*e13wI<;yXe~4ZCk?7*To8&n8n&)b!4oUi1XSEo z;_aHvUp%8|4rDoQT%}EefE88b*KON_56^p=bhW< zqaH^uzWv+s(tBk|k)*2pt#y*9mnZqCGmW_pnU!395NeqEhjyrw<5 zbvCbQ`{kOtN4vRF5=Fk(?hgvf4|`s#Cc9|eiKxRK`HLAJ*D=|vJ@~X;YQ~%wx1JS7 zq#jSYKkD#0PtCp4Z5t+_}^E z%&zmiiS8##UZ1^LdrmRIZSF+pwGy5OcmL$K?fK$j;Q#5=hW;wvoNua1M`XO$Rrdz% zogJfkj{CpKCoA_;C!E*AwJ*6}Z$u&~3IYwiE{ z{O_68TL;(cCFI552;Lq3z?G@uiGDp7%fBp+41<-4d_kvPeTO7rXot|qhB@1999TYoFey!rQU@YWBnS_0~}9L`AVDEa-cE@E!&9<@VEU6cKG zxh*(sC6gdg!sgrH)%wZn;OnX7lZ1N@ZPlrj3;ZY9xOU;~)cV_B`kOsV`y2jDvf5MS z_V9a>pX~>MOkHJ$v>L75>+|zI)`S>1N?#}vtO+R-DDc>1Riy|1#mtW_)^iX|5 zd%r|D|E=#2ZGZD#-SPj(SFQsK$`8+d&e6Jb=l7VK1+4+9N~szd&*mA5>iJ(QKYWfs zS6I)PhvnMaxYF9*CgEg`%(pKhQ@@wZ`}*eVJfrt4bt`QzH!I0K>@|D*sJrCO$6bnN z!n9KFwKCj$?R1PIzfGfLa-;sSxGjchdc6uoC-*+DU6gAv-?&$2#$^5YYgd>1YxF%? zd!W(I0GW?!Qc) zB`$J<<3L}l=KU*faaLU)*^Zr-*yMZDION82yX+LBL!TbcvfbUCw0!0yL$*^g1=lJ& zGZ^2*3l}_+oFlNVe9gj+T}*Z>97NUG-mKL+H2KjFOCE0ytqq=9r;l`de{ix9-lx^d ztp8#)7kBu3$wM}x3zK;q_tr-pHvd>B_Tg*X9Z4^-YrRZP8Ln$oGY+sm4cXAK`r2e= z#SD$dQw=wkdMfn)h#Aky|r~tf;Nxh z3SLg%U^UIeXUB5csb=MWS3kJC$*7>^==v_FSqe)_U&bsgU3XFWeA3+hRf-?>_gdOs zJN3}``hj+PyQ3Cm_nOp$f3=(}Sd)J}{JV^+h}W~9N#?7LFg=~();)K@$$iE`Okc`R z-23>UW7B^zsS~ohFR1tGv47a{X<_;&$2GOG6ZRyjw;h*~x2t7bK9N09XW=K)W9)UF z=60K9{ypg8eSWG~+$FKuUHpLkTT7R-jQv$p_SQVMx-0p+{Qm=;_KBjCWWNc2)A-<` zyj;&>@fx*roogC(ucqD0I^3FUa{EvDg`COPWzHVhDahVwS3SMNCH1F|Gf&T@SzP(b zvu5nEJ864F3T17?^_Bqp^_1s+kp6^>EPeP0J zPxhC;J+N3%uJ_$stL+?mzkf@zZcE?3`^M@cYc(IshsDpkJ>~Jf{9pHvy$DFXZ0qF0 zyPa*FYsCz~iUmRT6=n&l@rG%AZ8p~#EMxaxWr+G21sc!jZ#)p*C%yY|%IA#2t0@;U zU$|)WTS~LN4hm24_-y(m{pd|Yr+KS+jtl5I%{@F{<209>n6tU_{NFO$^Je(IYE#=f z;p6rR{?evdo8=4cZR9PD*5%KbxFR^|Ra;xk{rWG^KjbP{RvHbJJ0_w z`)uf#>e>$4>U?mk`kVM5#-cn=l_!$a{M=*{k+&<>*6!#-LE-Lw~>2dm$YZy#KRKD-2K0H1bUjiXAwUi zTfD#Tn5<-S<(E*76B+LoXth_gvc(HXZQ-zAcR?#C&V5gP-UCKXDQW(3$_NNyZ&wynLg=8)H|nh&pzus2nm>Sd847P zK!vp5_1}7TqnoT;TeY^AD@<73c|JLRR-4_~Gw=R>3x2rkVY}$0Z;U-on-!ZbYnJ%( z_q+*d^yBim$N@-_-PvTPZ~4*5n@l=sOp!Gb*-AwdFC!UOZ;-baU=gL2sva_4V>? zipGaR1%mEbiSJ(;zgOF)CvZ*LrSi_gN!Qhu#C%BNu+-aA#HzS8P|;~a9`kXbuQN@A zvc9>hMt{o5vuhQrOl5P5o|^1`;fZ&~?X_}A6MO%rD6EZIs38+x{6J}cqOhCN&YK6O zeikv9vG~la1ImnTs}^r$D!zBL;=!z%O8;F_3NDTrHUD|`Xgt1q?q2Hl1G59G<~%=A z>%Ft*x`oQq>K-oEX zxHacobKi$a|C{Hhu6h2UyZ^kzQNwdva}rMKr-de6N1gj0^Sb*aJR>n1zb#oYdX@UovqXK?lh=k@=MKRErl`G{3cvr$~* z}7)%IRrm~Fe&-`DiS`j1~^t{4>R{nprhEM{_2h&r1@ZNb*3Q_{VjZfP@L zHY2&nJ$%nNR|5Zq*UVT{%`G`cc1&7+1J9izd&rCli*C=*QO~u zUkF$-F1a*A|A+Lie@#K2b)GdRF0#M*y@21}RN0CxVWQjD5WR!vGdH}5ydm=EzL@F_ z`5W#InTr`>7yr25v);e%+N2Vl9x)5)=U0v>f0y}~Vba=X`a$FQ-<$KbjO_R9clOkn zZ^ik~etYG?x>Z5##XP)-F&||TBQ{2_$`*-fO5K^zpNz`2S#E~w4)W?HDy%SEKQZf#*CB)K5A)?e`Nm9d zeiWzd)qCzt>0QC|H)c2V8qF>~x4N5k>2j-#3E{Um>-PH?6ddNbv@dPvGgWR!xwq%p z&$R{rm~{HeDw{cOZP!1nKDgZJ{QL#k*Cp!XlOrTKYj*G3$j|?9sovUCpQjs5+0V+v z%JjcjV8R2(O`C+Q%v@7`%Iqq8QBsh0VW!IW>HOWY+6PJ%?w?}0cYa0utQCh@{+zP? z&F=Na?8}7>FSV7IZj4`VvA*Pn``*LVE6dGnO1YCS2b4M2fBhD>@p-GedAiNiSF+!3 z`QE-1Qqd~f#ddf}^;u`n{qig}yQh4yV%Zk+|MkzhThYs3oW1PgR~uVe6u0@3Bqd{{(aWv2k4jc18SQm*U_W~$$n3tR^v%k8 z<{17Txm+{L)i2(U=$Nwe5rg5^35(qI|MDhI=QTYhl3H1|wCMW+#?ML&Hk1CF?%Cku zm#3xQHs$%u#VIFLw#||9+!I`MQZa4+%b0&x((@j+S)N=m_4BcNE`O^hoLs+sz6{Iq zitN5Ui#N_=EWC9%X?}C6ylYL#<#+5CSms?=`Zc4aDCLF0vK`zfpYKe*9X4Zk?9v(Q zb>!x0l-98(RdMwnY*)Salgo6EdyxJ~={pY>%lBIStvY(6-=fa_e;=o-&f*7;W-(th z?s3RJ_At=9O@2nwE7r@>K~Gfg*GYD-o+H0t&VQj(m3y@W??gS9er@(TTl3<4lhw0p zuGC)bu((i@r*3X>s+`v=?~QVo9V=gP!JQ0dt#5HNoOuKD9{oG!tNZkHK2PHZrY1qt zHCgQbUF8+dG8ddB&d2??bE21kFTu6Q-#F%b;$bIua)i@R{$1h11>T4Fxa|wLD zO#0-FClfMqjZ9Xr-v2!C?Y>iPN!_ANbA2;xcpnRF*;Mf5+f1W%#%q4W`>#<>usGBd zuec&E^Lk5=?UMS6i3$_`bSNAZ_$0i?^h-rX`Mae1#Xi5;($1FgYW{xN?4-^k(y(}8 zx9F^t#=3K_|Ct^={7kZcg=Oh0-qqK!yK{cp?4MO_+{XX#SqtylDVMIU5fx34=v=g-{gUaF zxg30Zq(dLR5&2c!wn8u zKGgZDxa!80iFLAnZ2kB$9nRk|e6G%-CHAQQ;p*zD9_0nGjNGp0b3d*8u)unv`X{&T zbFC9uuJ;ISF?U!o+nnV!vzgZ8iMw6?8j7V_`?Ob2m^jZ!X7Wj+w~nuiL~Ap$f=@2n ze(3FQe@?SAv(ts&w}&}uFH8CAX7YEMy~(?)Qf;eq)z+Wc;qvj5k&mDm&r@}o5U%%J zYXxT|M_fs^pTopH)q1(*FPrmcry1$Zo3-HXo}b~|cj~|YOFp1@H&Sb!iiOL($G%S= zy)EqMY2&pA`sWOb0uJt2k^EvcWW!uBb1+>PwO^t7u?vo zf+tp_{P&kthog2LS^Xt-MN{X|V@cOL9PADhUsnt4x7gKZ{QB9;bK>XuxO;?eeUShC zR-)|_(^7dI*ALm=FJ}M9jflHGDgA*1|AXmz3o1EhU5n|q?%n&c-RI7t+4?tqbY9i5%jsgaZoRA1zK3<3d9OR)MqPh=%eMH~RDS*! zvwG(gxtH*K*KvPjXLxw_J=3Bby~lSB{JZTs^HtO-PyThq-_oZ(<7T;guKlfVC&z{5 z{{)_zoa4B5KE=s?f_ZG!QkNjEXTQ#UeE0Xd`UAg%ro~olYxNmc1$N&MOIoxh5$_r-q7m=eI0e*^~R~ z?R?Sqfqk~#lUDq)JO5YgbXnmU9q|uBXG;}xzvU=)EIGUG@g8?ooh?^xPqN5-uqON3 zt9LVQmYb|lv^t*He=qF2qh7|gl2YS(M*Sz87iRV@{o}asPs176Z-Hy)6fqe-xg2%k z`>YS8ciWbipDTY7YHA@BA}A z#kX%YThy%UF6UJ1?!(Rkm@Mv7@tdhqtm38E_DJK>xaR@W+pkEKR5^Pu*!*B$ChOf< zPQ|*}Ty|So=gup(fA7`YdUxx@qN(7zv%Z|;h~4jNjw@z#^iF1~JGJ7C>iiZS`~8nT zdu+QKWSRe2)6M<0>FmWPH?K|4Iw_ETnOFA7o!xEc-(T_T%$|DVgO6^83_HV=TNes= z)S};57P4*8JEhZmz;yY=8=w14^Nt-(IXBBiZl8`n7fYQXi&V^M{k)xd=MK+0wNtK3 zPrR~u|Glymai($|Y#LF?tXH$oF@KrBUGk;qnp1%P-8msit3>W;w0-J6mae9wbvAZJ z>DFGEm#<}(esXy>({9e5*S{A`;g>pXE45;3RL}1h5z?h8X?<+%x+~KOf+1`SOl3EO<89$ko*L=QE^f7G7iBwCG zm$qvU{FwO9?ZoAXDc`>C_bC0Svd7vnTN zM09e4G-Iw$k^8azSbFBZdsC|Z#x8i`C@OkLxwG%Ln{?idzmDBizteuWrtH32%~Hzl z-L&VP@GIF~t|lJ)7cPp(fl&B*K6D%kSLo^ni-{Gyq@r0rM0;shxn!AjAnvmA464rU(~*kt|M zO8o2PolER&J$G|?Hq2kxIqh=wBI^gfeG|;M512><1ZG(5)oVJ%FSzTAe)_{%i#6|a zvoJA9rDas4nlQ6IxWt(`_07`vdiq}ylzCL+cff1XjqJ$# z-isfYoW5{fY+i@8N#5ss`<5ynL_uyX67tWBPZGm2PQs zT=jm&#c6Jr;%bv!G>?mCa!>kV{V#2Wx!l4s!#AI{tGB*si<8fPR~lwG@ke9+>hl|( z$xU{vx>uBU!FdwL#jCk{?Q@T%sLM`wIIN)a`NG+Kr<1u%mDeOb6WH;-vbz3B)$Pi4 zUaM9fDelPBUbL{rvNe5no58+i=Z`Pmcco4G+1>n-;JWYKiF@t$DHk<&34OabC!`|& z;oHhir!%YgKI*wzR3{skZsj!mqs?0|^Q}r<_LAoM+(n+-e4a5kf1K;Iylz7ngMrTd zL~D^wD@*>_a~?O?Kd#S>b$j;y&*o*iz4DNm8~=PKUIEa$Awb8BZm(hI5cr;+2?(00=iYO-*w)@)=~X|fZ(Hs`{#<3Taz8GEfoKOQ*u>j%f) zFOgEr)s=4|T_$|I_gbUyhk8$yW`gmj2iCr(o90*DJ0Vn4`FZa2IJwJw$6>Fb)nnzQ2T!QXQ)S=%p~|Kz^@qK94;bDnQ? z(R{uAz54Fha3%eV8e!YF-*KD}L}j9o_tPE|azW0>e`a zvVKj94@}s8CYn)FWcxXvxu$`<{e`nP)XhJ-f67_wgXe#2pFhQY>#NWAq-qaUx!vX1 zzHfc}@2%7Cvoh85vKXEJGda3^>Cvp)+3u}8T&66?n8gzJzIi$&&cFA&T!$XVR9mMX z>y$1_cT27JH;yjl<}%!+yS8U*#`6#N67sgqy^th%R50yTq1)Yk6`!}~&i`<%$86H` z)X#nA=bl=i6Fen^@7Uqss(m`$ZL1JI$JV+YwrTT zXCYBDf@Q>v1kdsRY>|?N(>lvLN5s#-hcUBi<+|=w_$V>@<-B^$(NGp8uKq@#U<}#uo>RSotKx>{ouD zC3))meJ-X8>bA}AKkoRj?)>+yPQf*2G~Y?M{OIj=z`Mnz^Z8%w){KMhslGBDvTV-!DI9cc<*wz2*DZh~$W0?5joY^|@ z!ud7t*37^1ytd_D_3OEr??v1+X6C9*59HXM^5wgsTvhITfxH}@@3T|=YrgZ{zhN5r zL0aN!{2KR#Gaql?sa8{5TDbhfWUurWY=@>cKCFqHe^w;%+(o{%fm{-ww$9wsEqGhC zN9@wB>@P~G$v$n-^Vgo=;cs(Sc=qYl5_^s?m0MkUJ%P_CzOBaWiII7O`ue=XGmhI$ z^qzX2sqsELllPsBe}A7=ntw^YYkPgyy!%y=e(4%gKlK+Du`hj-`{DTSkORG8LWa%x zrX~3kI?o>3mL$sb=H!~+&#ZER5xzS#AUte10U=a=Lqi{$=2^zF=1U=5nY@JU%=>K4><( z=)QYx#~9om%Or~=XFTdHRGOP}$^Y=zMYk26=S$;xZ*F< zcICSTa>ZRAKOUZN>}B57x7ME{;+~$!I(WDA&%K#mb=h}5zt`vIn6oqe%iY})?q4QW zFMDqIlbCu6qZ`^zI*oLz+MbrhdpKq$0!*ct!O}(-pRO|ItK-#QvoY{ZfllfA zzC9LyJNC`Xe$zI+aKFCZfpX^fsU7?~&TX@=;fXv@-}1V?xBQUy+&tO(hBWaO4L(&P z4Y7rh&(0cH*){~{Pjd3nuS(oDKS}qxh5kLO@ax;})UFGCb8pVm(w*_gxBs~o5cK%C zcMpfjx6^yMIyNvIKmTF!f!cjZdNL;eG|u_zm+T&-*Md8YR9qX z%c|t_?(CkCdB5qozw-&xCH}{xGV^WhKKm>#?)p3VczFWzIvazgn-Ax)))xKw@-kf| z^RswmQP0U)TW%WP694v<<@5HfbJ}ILd|JTqnN6p^G0Q%CUHb2s!-miIt1MiH}wUs#fH|CH+YsCHR9e;ELGz5OQ zJ2?C*>@kz!Ip;Ge*8I>9zSzd+QOeKr3V-m-k~@|&C%V%`qP#eI`|q#E=Jc*t=hS## zcIji>+si9LR6?ar<(${9e7vG_hu~GMA1T3CyuLl&y8PCu`%I1dnOVN=STO%;s`&MX ztLCnDxz@{j?q8_>vGpaVowrY%@Oh!8>C|b@6Ibt^n)$b;^O0Bn6i%+k$=$aM5`rxQ zCFZQ%{wB}%{wMFHvyLC&Y~Q(Z;icFPa__qgO;;Z(bO`MN2A(+n>kS9XoBXL-E#(u4-di}Af8eVlUr3r@fO zDp&csF>p`8Z-bXJE!?yeY`$uJGkBN&Z{2nqzvp*a*Gy8KIF1$=;UvcD9{obVOZQ&MKJVHC11Y0*P?>JWenB}Wm#lN1z>s#Lcu38`5 zcW1isuhq+~Cd+%>Pkvx3b%4A0o!5>_22JOK+s&s2UgxlB?R9g+Z!q&9hPQ}|#c3oR});hL)$~`U#!ABdU7AAAtNT|4f z_g={R9pT?=|LpEQ&loPXhVy<|_k}C31$o-7Ws3dH4t=TpGk2k8_|3K9->Z+6EO^tG zr?`Rlya4N*E|u+`OMlPV;C;`0i!#HVG|OMU`ORiW{;=x5>}a@f;_1C*{tc%VJT86I z*z$elsl2_rc;#<~EXrMdNPw^PyYW3)DKXQ@ucIuZy9EwOr<%K@zE;g#;cgSN)8E)8 zR;pF>h_u?y)ES}APFWm0U*WaZu;|B!gTH;g?|Cepdipw3<9$XZE*0Ol=l9~JSJtm- zt(sig&wbEj&a8*)?k1Z)@cJ)us90Z{sdA^m`y3OV+3D?RK_~wF_|cld(=u~P_x+r* z-crrG&M&vCId#9zS}x1c$fgne%2&0>vMT)gQ%T296_z{r^p%`5R&ANumLtM2yKMGe z>wk9*mId9OZT)Vlo8{XI)4Z)+vFDV&AFYbZKcL}d`|g<8mS+-2pUFjTV#*NMV|(bK z+S0S1pGuxG%zener$Aoz=-!pR&-%-fe;X*(e+Yhhq^>qfxaUKbxc)ZPMcH5FZDlXl z+%IT$@RXV;y_rvfcSJ zyyGJScep(cSzEoL)MoluFf@K6NrzrZ+V)VXks9<>3hNdwOk)+ znXg4mSE!x6HR(XS?X7a5Hw>y6=_)7hUG()s0FN_!;b zxDNO5ztzcjMhEG|sw%?Avmx?cn)~ZaGGCRQEx%`s&(HUjW3u2Q_ zoVN16ZudlL-$&s)1#dl;>n(I{WBwM!`Cn4VYG1O*<$<1d{cii|i5pJFXnijDe`{f2@59zd0#ENVF>mEmoTV;Rk>yj#WbAFs@V6_@~@RX`n_zgFhhn2ch$l7yQSY9y0`f3ZtDZfF1fwD zyS_4Z--fpDzu(MCi!!S@k$3Wo_Vx|&Va-1@i+tB>@;Jz9|Cv1h={{ML&5R$Popzk| zmwjEKsq5k6?XNnEmp*qZ^mbl0Tl(Fm_H9RMH=7<(pEWU~xpd`*V|I$`OiS)(Jz9F* zrsrmTNtflk2fmTTY7ceJ-_qHC!I_+I7B%9$SM|0nkOsG^LxSfIQJ0A zl&!fkkx{zebTX>A4{zXmKHKpOIMuCdguYSH$ zi`6!g<&ruyTe@-5y-QUJcZADsW*=tLa@cPwQnc7z?uSjxyLI^y${j7a%eLj#|Mp*| z_9@u!b%5yNHdk|zE$n%nJ*OHZ&;0((?W4?7_KC|b=5M>d)ZFARzu({1*tSmaSoQat z$`7B0s8wZb^liQ0_IuM=)_b?MYlwVtF?)M`^1M$nN-KmUFI5@&pOgN2V9U(-u5Sly zBtG3Z>@H=@9(J5ZCT>aC@7_-JA-I2ME z*;U=Q%{Gd=;3JT)8$12VTiMLxd?gRx%3tzM5b)72R{yxXDY=%jMku^!bBgazzQS{L z@3rHKHvU-h=3M&U&tKg23T)iXUi6+VnyfnYWcJ3La)0D%c@mZ~aV4G0e!8wrGV0j= zZGK;+tk~4~-*ee1-)v2e6>s0Uj-jyZRJqCJZCzHEuiMYqf7)Qffzz`~pMGV}tTkS% zu&Vu};tso{ntRoAdcD_J?5bR{Udk&YVG)OS^aFF%O)oX)KU7{5`@Emya89(cgzbg$ zNvQ%|&yCLhJoWm3Wss-7Ze`oFjJtC(JL4?4>Oxj@f7rh|{qVUN|HJDQST4PGJ$-J6 ze6RD~uA9&7rwZPaE^j=3r0SIHj+TR=3zlq3b-bzQq>^nAlEN{y;QhWw>yG^Wu=(D> zo1gpS-m#d(~>^Xjn6c>kTW@Rn?>` zwMTb-=U5ri{>aU)b^Y0oKkgdNeB|eC*Z#%vp2D|90b6_w%s%^FU0+f0Uf=mxh2x4# zS&1GoEicyCzMi9;A^Uh^-h7cT8E>tM5Dv*#S4wA2xqf!1!4lmsj1pgVv={eIf2HxR z%_mo5#n*HB&mYNj$88sBHMzI&_mXnq?D)on?W-5e-Sb7i{iN^1keT8K${7FL{hfZG zz-b~!zF%zBF|&s|)*INHE&H^_;X%05feZ7@F9Rq{Bc_*M z72Q{K^4_Z#dc?+tccCOl?akSu*Rm=eO=U{{p>ut9VrL|yM%u9p-Yo1oE_?Thgb0l3D_(uH{Hi&_R8+Wr8}IGKR+~2jUy$qPfAx(q z+2tb33*}A6j0>h6=S)sW*zfSeXvu#6$C)vnDO-&BIX@lbo|0P?)S&!Y+Y*)xmFyt`})VB)>CuZX}SMCA9`*3_GR}x z-E*>>v$^D4!aSQ4nb#NmmVOHBiQRSQfOO_3k0|cB-_}LHmypZQI4Y+ov*`X7TW3u> zmzzq*%a8t3zyH*3mBHz3ZKHjD2fRO)A9q&%wXwhZGtMqHU3+ZvgFuPx5FbYgAg zy<2Mq7W}AR*D_u92m5+f;rl&PE;t9yayY)`s)3KZM9}IZ3(q{htnuxmgz}H)5}{^u z3eC43yS&guI_3cT2L4Ugo(3ncW1fDwW@)jAZ-cmPMTcg^$2)h7XWo8(fV=GMuKj20 z-uIo3Uw>e;T>H*#GNp@z^)D!Ax*j{eW!|JF=XvVeU+%hhVD>)S#&WHVF~5I*Fx%u3 z^?lonNsrx|I+fB6G|w{Uwo>xTb~tpEaY1L-CWA%df4=O#_%$Z<7mr%f_lwWOxfgUB z$}B%0yX%C+u?M^NxIANQ-T&uti?yWr58nJoR`qILu2Ij`s|9`4SpP2jI#=IK?!t$K zXKOFIpYQr6`o1!{f^m8H2@4+8`PY`!MEQoVJp7ucrIOEoj^^fL2GYz-+F2#vdv@Jb zeDrGigWS8t6Yg&~x3o1v@X^hCPku|aYJQ)tmM}S?ak+U(#J$LSelcCO9P>(!+*1f! z{a|X^_k#0s_RDwrRKDJM#Gy#Y#JZQiY;sA?nmOE0i({{UTKMMByk`F3wN@b$dml1& z%SN60lXGp?L?IL9)H+-13;Ve%9&3h++f=(-lw>&z^RW9yFQ2rB+4b-S^PX)H1%kbd z%o7z$mb=!6emlKi`r<22yQX))X6o9y+aTjZ*~ZdJMa>6-X+h4=Y|(^i~U z-2EiE{=(T?2;P@Q`#x1+MK<;_m z^CkLj7b>eH+-}cYJ~!#cUj{k9oaEct)&W7FGYS6duqY^GpNm&yZ#F8}_u|f-hwV%o z+tQBOpA*deQE<8IZ*r?K_w3XriQi7QtJ5A%zSYcVQg`~|GM?lAE~(Yjo!-5pa__=L z7aobpJ=J~kP^x$KEeWpD0+-Gjmy9<8Qr6{J4Bw35}%{FX#qo&nR3gl`RO|=PVM}A+N!TS%1H0y zjj2ZiHCHj|MK8)Px;;Vk;=k%0PvyG4sl0hO!KKn!wEvmL!H1VpE-cr2^~26#LYjU5 zQj0s2{KK9b1h%WESa0>b!rxeZyzrf5>J{b<7qi0V?mxx8_Wsn8)o;RPP7S_rK)Aqy zx$k<x@usjpuZz4*;=W$*K!oJ(i-#xn@BCQC7IS^1vrO@-5Kfyb-4-Tu!w zU%k}j?39OIbKkRZ+||gA)pjc7c=vZn&~pCCE5mmspRG*lIq*R6=#yuOdO6ZP`|T~( z=Y`yuJ@bBK=A_L}&-2DzIQFM!CvSe)hjomX=a}0`?k|tCXBO@iIA`LufOo3ucbNm_ zlWG&^?Rs##+TuZjpmXJi2{YLzb6=^`k19RyV@%Ar6w$r2^~K_Ar`jHUZRecxC4n=od$QJ+O%GJ|`qzKHF+U(gR@OQ< zPBCTYQvn&~BXcX|U9L^xQEb?1apsBa>Bol+Dl+72t3~>*Radtf^;U&e@bBzbxn@4q zwS~3qcDmee4yM_c7auQ)p7D11tpiV5cht_y?@P@T^DI6Zm38QNC)@o!+MD?Ge)9+9 z2R&dEogc&gC70pvu4Q*vYxg&)zQ8&3T)ah1@bPxphjFo* z*{>&Ai7e_Dn6`J%9N|;K&e|f3T$6des{NbewXkF6Cc9Xv3i;PdYYca^nwbd928_*E(Xj8wsMtk3s1*RPT?_^oGl$pQ$SkippX{W)rs<-i* zGS3Cf(@5LxFf&1-wEVoJm+0iCvlp%&U;lRg=F^T}8TG$hf0i?Qca65d4^{yOgSyhv zv!7fxbSx@3v|ld!*5A@R7nWTD*Ufm=-T1Cz_9pRt-YWMgtG|E0eBySJe|01O>o4mb zT#e*TF@ANVy5KLj*A9J+8+sNS^grrM?(O*+#?3eB_*b3D?PnWA-|gQW*CzDW-^R}L zfuYIDr|TouhcB#|`1E+T(4k*TuABe=W&VCu^gE3mE*rl$1id$QD&-CMQW9MpzWvW1 z?)&cr7uD@atG)dF>z@hjk?SK*n`T$HB`oCcUn!K_WAwO*Rj2mTxvi3)L`ceb)xT9Oz?(>-*V7$yMzt6?d*m*+mXR~*PTr)$L*j`@l z{i9|t$K2P^8GHYnaLQJ@q&J=Qey8-c)Z70S=geOu(sKW@Lx9XDiDgQ)EcQ2#2Sv)| zlwFv=qU<+&v(eO>Rp#~oj5@2XY2lddozO&+qkxkpzD9&Pn^ z>tFFbI%8_~x~Plt43ZV>d(K<$t}thOza-pTO6b)pzp6{O1x#Nr_cwQ3{3wyP(E0g2 zM)AzHk|UMTIk$Ymm(Ga4v0(DUIkOhd&+06H)c>RQN7m$(+-EDw@AB{ZrkW9)m45K# z`N!|(80R)Iw;lcKxaM=jbdC`Hh1QvKi?<%y?RX;9O!R$i9);De=~@-2eQcj!p4*lN`QqyxX&&U=shOjw2yGFbT*au>FkUGEKrv1k6J?HEGe92Vab(?+u zmPi{rx7p_xo_$o#{WPu8-xw*AiEa(0HkjPaH@yMrR1W($k%V6PC9 zJSko~^H6_6&Vi_$js2UIg*VOf+~e6A?&cr)bIZ(6RTI*!?)odUubJ5Y?)is5yI8*c z&OFLy{Wxdl<*b?C{>L=_zRdmma_+f+`m7~~R-L~+^^#UwH-#_p&A3BlN>v%?J z-$v&B!t?H4zo7avcdAJ5lECtAjykK@H33a4E8Z38y^V2Rm}ec_1j-wQufZECz%8wZ(4=N>(u z|0{X>zRfSpw+0(=zhHS8e}4PF+6DK2)&INy|NZla%EB9X1$S_Zh!zP>(rk&nUH))t z#}`efKMD$ll6;4lH?yB9iMaW!Kfl!4Z%g^_6Hi_-{=9Wyi&)shd6J9o^nKqW$>ybY z(`MiMN$Q!dd57Hf+23-REv)LJULQNy`Mqje&duw0cm28AvU;AX zx6Wi6hPS@OB3G;v`xwqnw|y3NDC@75$=^DYiF*&%WVr4*$i2_no!#?BH~TckX@v<3 zl31nHSG(^JNWAxQvcb0A$&Z)bn-R{ibg72MudMy1UKVEg->e@WT)FeE{O#+XwD+8f zd$mz*hUE1lCpX?;cx?GX`M~Ah0tPZi^SgED7&rd$GMci`;^my`_^&GqwOVFK#{FU8 zv)21~b+^^mWA~0vZn2lii_AW|HTU`wT`Bz*L!So`QQ2+xx8$GQB_hPJUTjBc&D-VQ z4=wdv&F8=n!BbfIW{oy)&xQHbukUou*xYx27vCb^2lJ0DYd24Ry8YqqJ?|b$#9F;b zulz9G=>YRyMe(KcHwt{Odi=@i@rQT23^f_Je{uOWuR3G;gKw^#yTzqXAJ%U_)}_rE zFsq5peRAoGy%O^jpKRc>)$PA@$(Q%u)b4g(i)HLH6eqS-aK{zQkNS4xWF)V#%)N>0 zdrk@*jVySxV{LTQtEjIA59V&+n)dDbr)9h|K8v^Ptnx^4jIMj0eqgGVY;xOVrt6Ov zUJX9^A!reQ$pNWLhkwkjTYvZR8{sVnr##Qw+|FFUnttx6*tbijd%rBH<#_gLlStq5 zsslUH9(OfW$$hRZZ2M>TOP2r96!=lAz;N%}67dJ$r=2^nc=!6I z&6T`Q`Lc5!*)Di!$$Tt**0$OGd(W9B&i%UU!U|p2V2>ky@6~>`6t_HJ-*R}b5c9DQ zMO*ij95Z#l_qNKH&Dzpt>qOHh(zCN;XX*SeKUZaT&s*ZM!kX*e=dD-tUMO*#8@+GQ zvU~&P=NJ6Gr)8cMky`V8jpjvOA0EMq7b~wW%$xdBFtpR^?rq<;WIKuQs;xh@*Dnd2 zTyTlm^at;;nJ?$xyEa4EAn&T1rsw9j{uSFVE#0EN;r*3UwpMQY12kA_y-%Idh&)`< z*|<9SbitVqljn#Hfc=k4${TF9?N8g0``Yib8gwR35yQy}Ene zozC(C{UAvpuY0=|SiJsOo?d_J=H%etZB4zk*6$Nbf7)EXT^mq$Xu^+q)(@`VH2xfQ z<7{<@_`B}PxL%FRKFc5MY?Lil&==Yfvwq>3%QELyTTJ+|Y|H&!@4g1DyRPz~%=eo_ z`-hJ~IWguH_;2rC+xlof%Uf^k?I>nC)v!d6};Fg#McUaz?R+{L6XCMRW6St=e70 z)gSVT)j#ra;M~9Bbyo`d{+$+IR(ovoqStxO-LK_t#w!cDU16H{bYtF+k9(%QvVC*I zLFoQojyv~O?w@yg!sCv5(}u?~=c+tvN*_hHuK!|rzVR)~Jky`~1@_Mp_3v-AtDJkW zr?O<c2s$&LSvpVi(>&I;aBqJO&d>AW5D4z_;P>n*=z_JQ}- z{A;Uhn$q3RGS=?jU$$6(qxe%>VM(s9$7cr1teI%=IA_tyy#1dFch@)^vd^%r{rI=- z_;0Pfp0%-W`&Y^pU6_7Gy;1$=oLPl>&dX}R*D zLgSi+!b=Zcer=m4nfg+Dk)i9|IfA#oTAtUIpXSEfn4a}mGNniq5uO zbX&Ik@#C&-VQx=0oxeXTg>Avdxz;=zB;!5p`I!z{AE`|5KmW7R_ut#Be>=I}@0YcZ zl5OMjy!?rA@5g7)YyMt+D=Y2F^W#Q0XvA@@N1zdpxF6SJc4JiU9Yq5SApk-+_xTg$jzjprx+Yzw%~AuBuOxYi-d+b*>d zHOn{4{xlFdylK*RjZL+AoAgBPKK!`sP))G3lyT*iUU{YK&)Ytl#oy z!J5bM%`W?kwf74g?B4Xd+^yx(cBaPrEKK_+sQpz_{+GKeFk?&b!dEBiTOEa@Aghy} z2_&4?x$??<{^Cn}!F~t%zj3`|gNAV7@t&@CYfROxLc3o)%wA{kFifLQeXIJ``B^V) zHl1L7@;>J5qImrYXqIOiHr}}b20r&6L)=gd)bx)uW}2tcGmH-ygJQP z=bOBADym7u@a_vTx!(NyEz)ztE#CY8zFksHZ#>Z7>JV7*KcZsVEl?6B2iFO*bRGIF z&bZ42bO0J8z=$J1NIM@limdyyAbwjA>Gc%tf5b z{;3IMlv;(pUK71GT>HztwMG5kqo4Ukl%Cg43=e8N5YOAV=)=F&=?k{RF0*c}9BmzjrzJjr-o`tr5||mSol{2F#D-b2^xN&S*~By()%Z^NjX$7x*1~SpG8p zr8`E7aA-VWFUGX?^XFG@mc_13Gq%}#)%oZ8CC(fR<{#$XclWjE`*+R{rl{8oved0Q zbo&DT=G2U`et!PeuaWHB0%C4{r;l!$wZ5Y6+PZU6=fkg<#;;k$`c+regroYL)xYfU z=TB^>O?xt5|MLEjC84F~gJ$YIou&E9tL}ZqhJDGKmW0NJ&)zgGUb$!H`RP}0ol$== zuYdQI>Blpy`;zxbx*xTErQBaCm%aVw`A>T>vgL#CEeCc*oq2wh=~(sYyXI9=e||?^ zz4`dCv}Ip?Z1J)gXCLmgzWVd$&5yf^Px{^~yJ~GNa(C0Lv*H_mq=##9c0F*V+3EY6p5jT#mVE81mCw5^pNfUr{hx8a{`sHV zj10L^_U?05-F;~L!E)-fD?1I8MN4+wom(6=gUTFUd8dPI(^UIcAeaNugWMa>E(kxZ=+bc)Ok}#LAh7qLvZ+8DaBKN zD+*)8W3)R$bK;dx?0B)N!L89II^_H1($ey~&J!jz>~y*D*~eCR$`Rcucb>nRKJh_M zn%2J6uYN6x{#xzJcx~4#Kk=)NOC*_OL?8dzuiLEjx6N$*tW<$ZHa^d;awVSs|FrG< zv!c#TzfND?vrDREb+qWcKXr2FSKnM6^(w5iyfiM>NUSyN{A5?txC{BeE)>_C=ymJ4 zS;+HZ^8dKCdF%b3remb41Nn@MKVIHEy`f6ttbf_^;<~`Qe7~-;cD>%NHuc)#-|erS zE{gwqQI;jXe$|@F|0?;bZ?FIN-g$e}!j``^|0A~kGQYb2oL+sjUA5utua14In>XLk;#kED z>nkR5VU;#LMsrNp<*zinaZ zyZPtyiQGH%_vhzYQ$_dH$8GL@<9`*UJGXoJipM|Zi`DK~xo&-x#=hHEr~eMT`uFj( z1#2Itp1zE)nEap0u_yM@m)HO&%if^!l>yJ1e)C^=a;++lMV%vc!-x7=Yge&Pxh!w> zJT#oK`&OI`)2u_Y4ZR+5a=rV<>hDb53bsj(gOX-0>)yx#6@h*LSz6PqVSaBzt36^u4Os zyZ63)+;A=0yzscxp>xZEMYc_TRd-{Z-Cf>&juTgg8+zRd|M7)aAz`;=*$hj$ts776 z-z~R*!Tz>Jm3d|TbbXDb>XQRCy7WJKJ>Rq=%cjol=H7Md0vY1tzC604!1Mg_^ehv% zpMN@xB=ld!y`5@1-*=Th|M{z{YUA$Si%Sf+@RZAxU%l%1`9sw;KYAYBFXrz0H0Rcp ziwBGMMfq6Hjt!mOyE*XO=0nESezLJPyT9K3p0atq827CQ3*}yXE8Mqd$@$yGVNag( zJl!&9?)TM>^EZ^gRICq9Y2bXksXskkUgC4=)#`tTe!g6^%aJh-G#7+iXQHwXWDEQ_ z$(4Up{EzdFg$`-)ZmAU?zh=eRE@p|7EY6>-cz>sFWQ$4gy;AGBAL{OP_C+$W5=1w`Czq9zZ!H4s6yz|~w z70N_a_6oOcl69(zk6mc7Zuey;!@IlRFdq*6Y9t>X+|%y-u=n|wik3~Y3tqg><7GZ4 zsi}T?fsI+upGTjaO=bL*uKccCCz7Ch{q3r=&r7VF1N+2l^rYvg)5|ETFbG@U3)d8)=&PB z@j7}_*Hki7AFJSbF(#%U5pm4GpJl_a(^oHDj?7 zTyr-mu9KH*yXyLX*RDefC6fd8@wFe$y7?~D{A=yCYZo8=OzGKF^Q~!9d8^R&!;z2H z>~hh(bGZ4pLSS0!^N*iD2VdQ_Fqb1PrD$=!AP zUa08-?y9{}0c9r~9}BI2u`9=96JP(!lT8^x&8rQTechON!hN#m9m#cbSN{#ZdFT9F zx0`?MJs0*^Njl#tQR7@+ajLjcsCL65o&zD@=Io2B{j z^BmoFJ9au1o{d~wSn%;RYjKfV#5%#aJK?9hvljC#UvjE6v8e1_X|UU}MF--Ha{jQe ze&4z9)y(5hzsx)l8vIJh&|>$mh&?R zErp}Dt2VGV#xIWLJsC7DBd2;p)T_A-EzNOnUe=p`>KD6rBev_@$=^N84~w*ZYkIG^ zeBmmyrg_=#PMj-mcx}2M@2}9(Z;9PIbN8;gd_lZo`v2=IBV9jNFMc#_9#4tJyT594 zex1H&p|oc~d98SBIdc|98F}EoAk*vv*L~aORL^_fy>{v9uCwA(j+{Po!<=o`oc$rm z>lAP8`D9}-`?%~??R8GO6n%DH7wi2f_WzG$e^SM3kKcPNM9*~mGiiVBzdoRBf6uD( z6+->-9Rj75p?4Q(#GU2b`tL(TZ``u0MtmaI+-{yUIkoK6_WIDa{Q`46Yqy;ISNDwX z^+SpC&$?H?+SR}OOP1G*kL|B!T7BC+)$3#U41vBqt|_ZH9M385-DoYoHp_2D@%#Jp zjNY-{yCW&~c5|`Q-1x`6y@zJEdyAZ#;*{ujUfLpn3&k`_y6j@-D5den0#{+ z%X7nJQ@+%FeU}xxb@naa@AdIB1?QxH+sS6Z*_6Pexzy-ON$e>F&L0&rA5PvmV`zHc z_qe(tqqC)S@y9uWeQsYT8s%6Tt$MRXGm&e*-S^_$Pg$M`Eem2S1L|hwWW5ObXS42h z`p$TtD_!X+?v|efezs0y`FLda!yC)9Rz0=(wHy0Q%~w`9{n;6iw6m#ohAFq`rE`AX zzD9}rQVlaJb5hD@e0g{0#$SEMj~NX=ozMKyjXV*x@xh|vE!97!Put?N)O)wJ$$n4w zTbC!zo9{FKzJ}inhbQw)G*pz&f37_IS$cYEU(G(3;H8iJxs9!&W77MzZ8O)&l=PWD zjoaLCJz-;}gWF@7f_>#5XN&F93jDbo#esivIo=39dH22N@8^Y<%MNcm)Uxb@SMsxM zXJ#h9lkUyk`AWiSU1FDve4+hM%SFAl<^NCIQ852|mM`o~&i2jsGSb+_1@2BOh4ncotSpyYI}C& ztmV5dObiuzpxs+xH$$=QW{H{p2~B;kM;gU%K1^r({qV;A4t1Mf{U{+g19q3U2ut0L z1J+?K5hp9$E>v$doiExi)*V~BWo`0Zmuv%5zvusLc?9{CHLfk{HQDoghEo3z0hw|E zk^B4+E|<7YS2eAVXInSkNlad2GWq>4W0tMfEN_nASu`ncX~R(#m8DzUE%rP)E@AxG(?EBY2TM- zr~3Qz|FpcnbBpDfW#$IF>n)xe`yAspbUnAnbvE<0OLp>ij#j?Dt>7r7s$gw$AYDQF zej!`A;>~M6-^S{M`--p5F?R@v&Cv?5oAE0#t#0n$-}TR?-_)w>J^sD&-jB6LTLnMq zAKE3}dF{Q;ir(Ym@Vn2EgYI7>IND5hMIQK>8j-=3(dhD8MQ6jBYdUlz-7IICl znVxO(eAb0uY^#+|^6Wg+_d|X13vZKs&ujbyR@iSmF~wx>`Nr4#mo9k{-|g+X?bK`Y zuZ*wP2_2U(ZuwgDYO>>T4;OCpSd&|p6ZIsXJbfVJAofz_&$VL>@evBE`d8}}#v3yt z-B#Rq-X)!&|$}q!W#{Ilj+kBGfdx2T@{;yfja$Qa}b~JmOQ*8Fg>%rc`fBrBfemfkTmuLIb^r(LI zi|8%iPTHp3ynge|3afyujJD%xY-ZvH$6rqCn-yeh*7^HmVTs~{a1Gf|(OY*{ZYt?b zcXM~jyj=X-?e4r!kM-3Ou-paxKZ40V=7DTVWa7m`VWquJ-m%_uueMz~^shs5-{nWg zcG{Js-4@Dy$H?t+_fT`oF{5<7w*`NbRaIwi<~S6^v0qe7_|>HkD_km$^oLddn9n-@ zP)m}fZ|rgYeGzdx%XXc6`Ea`Vk4`4`!e<}j?%DjmR9V5z^4o}ghRKfePba)AK2*Hz zdryrvf7}Jj&7YC42XEXj%*e9!Ze36He)H>!F>CownDSiT|LW^^wIIo3`^|4`-LJIB z%PuNo!Scd?nm&f^8H>Kgyw)mQ(Qx~#*6htI%R3H49ZIs~-1^nG>6f*d&GE-9#_wkQ zl3VO}_te%C<%%)(+xP#4}2!Td8(VawJ1X{BE2$9V+;&hOBTEOE7) zo6fHJjp<+Me)>7*vYI_VJsCs$l(|E~xf5BYaUQzx z%5J^zUdg4l@G=&}IFPOq(9yDAJKIXUs{dF~u-Zhf_C@;7wwC7<*v4g5X202YG^bqJ zH@)|M^1X>pbM2Mw?@YV4WzLxv<*MHIFV72Jeqy9wx35a?=+P?;Cf|35Udwoz-nQH# z^;EUVtK}~q1>d?aZMJXQr`Vn1-@iB;b3gTPS5#Fuer~lpn(2kg2fy!MG<{!eYk2V` z*DiX_%)1A3eoZMpQ=M`3^^WDMf^UXt&vXfYc`ozh{3qvjT~b(guVBhqwd^y?%{R%u zy4(CPc3-E(C-wR1+wbNWefykru4YEB<@e}WcPnjb7V~(|+#0{eI5*+lm5lB4lUMy; zrt&?fFK-)Lxb*VZ&OcURt91_8Pd)H8>%@E?r_)M8D$l(&r%%id^y0d8{oS4!mz=oP zY<~Hyby<0)u7=o_Z5cv3+t;)S_#ZjWbitM>ckXA~qgx*G^}c+f5->k`(fibsNn+ip zhxKl$A8nd&=#%lI7$Lv3&!_yP9$va|Ez8?#zTP|Gt`moG>=zRcQtjOohLw1`|j+eL+Yp4{`a zIMYzotoc^6>x3=ar&}zm1^=`bSUppGKC`3c67#V?o1bb$8}9e;V|w^>Q`NmvJB|DK z+anT^8Hp2X;0ighCb(wmRMuxf6qZ-oy@iiPvjQ9tUWU4*A(L&+ox`E60WvWU-!#q z&gP}Yn|DXfpL>M+qoqgi{%8T4-&_Zd+g4uq#_*^3+%_{sZ|=P(_t*5P7rznu7wrBa z_>}zoM;XS=^Oz&KepkE*>ic_@1-Wv8vLD#bIlzDIgPZm&*9EbUgDPUuRvn#~(`z4A zQ50PMBQ;dLHDlpT+jnxC)@PsF?sj@X|APprOHrS0Ed069_`p*+3-Q^fcd$MCZ*@~H z_noD7s`k77i;wtx**Pai=1r{m(;-_l)5d=7+z+V^GTC9FOFH)^EzIcQbUb<3xuP$! zbnTTMgZJUrE?he_rR7zy57#OU&HI&p2L66l%UwS`#L;BY(4K<_euazDr$2 z0{?Bb3r?2oezXC#V%pE!IN_XE^)4H&b?0k^9Y0Dqe$25;&8a){i(~Ef*Q$py`1-khTcj~0Kl zh~9T*)B5=DH)U^~oaMac!iqSrQ*zOfpEq2pc=vtx&CfLxZT(I7HI|=T)7-LXN^h8% z#NG7n^^@P+zMg-x%!X@qu(Z$Q^Giy5r)_CDRJ!hD%3|Z3)L^rZ_YOKV-4%0s{_(HI zZ>yQY_oZ}S3x=({bw+wdbilKhPM6Bg9jud@vnKLnzZsK{K+bxPVw+-whY=eXYsr^g@4Gn#%addC^2o-fyb_Oq(}+h25YecqRd8Na96 zta)|Hao;cIbKm{cuB}h{#EMc;{5ZlQA!BaozpFJRIQh@^n8lh8KL?lP=m|bqwDK%l z_{`^ZRaIxcW#nz1Ya(B6ykMF@MaO|KX@6CZc|O-U(gjWU+in(|xOvlafsfp-AIa(2 zD(fp9r|)cHIW4t2yEtdNeTvULmu^Yl%riCm0?W#)_r7WDUB3F{mpQqddj!Mor*<27 z+s$6PIeGD9TRXcG*UXrTj!xTc_PqT6C)dJtk9gi)4O({n;-7uH(~a}?n{2mqm%lGC ztz1AyUfj6lvd}*5`)6#~7QZoP*?a17UVDOkyd4D!_G6cV6S>~6=y;yqI{R!9K<}^?E?O?l^amJTft7Zo`RffI#_s)=Y z{mzK}A?K{>_oZQJ@2Dj(_5S}`|1ZCH#<$5$ipwu?ctkN?YT)4g7`{n6S8(pv#O&Z_ZQpDQauT&e@1wGOUI8b zmKOd##q-sA^lU?uRC;`tWXq}8CFa>Uu6?%im$mEHd9SzsSz>W1{bu~n>Rs{QI~!`u zD&0Qso&5K8W{qOS`p@sOu{Q*Bn9{d4>}O^Vt9P>a^NQ!e)g0{QtmsYaWe@@q1u|MKmm2nSRD`L6&hl`4Ok4t+$u8;Y7>F9Uqf59xN z`*(%?t^E`(f4(&AL-?f{3ZYP!n?S0^EcZryH^^vdoH$CLIdX>*9Y&HKKvV&S#uw~g4);Y&}_VHzQz3A z7k|B8?s4f;-JhqLx0Q0--|4BotzQ%T)B11w8}YgJao5WJ9~UY-h_x4WPwB(;_0RT9 zRlaWyFW(@H#{DxKn0G(iTle$LyZvU&YyHf#|8DiHJ9VY5%(li$Fs-_qLz-u?t%o#2O+8maAR(=kboO z-MP$0&R*z99q|e0-$RzDvtiRr|J86@`|$7cOe;6ylj;731MMbzX8WE#{=dnpPzXyP zqm>sh?t6s<&TrNVH@k`V;dAAL#_!Kp3qL6-6A;20a^ZOlse@;DVX+(^}8t1z|D6mL7{`lkb)Ca=L?qry3 zO56OAv-p|L-^-vR>|f6mQ%6LkH7Y1be$U!{`q}H+ZCCkE@A<6GY*{Xz_ zO^bZ@*8G_;D6m5rWNKO`65(e?;U6k2C28O1ZQh-__V%H7ue}6?Iro-Z-JermruHEc zS4$`O?^DT#nP=cg+((HoTDA4$=z2^32yqUy7 zz(VfZ&AjuG>t!--8zH(^nW5t$-nZuk`L}D ztHpjiQR{!hX376q2ke^<#A|)9le0WBZ+j5?t!#mc(`qg7z8IKUZX8x0vXZNR>=1=*&;LxLW?_Mf>?@*d^N__2n zJ@-97zlQ%8a(OuEf02yloKqDE2ljSbbT^ta-;U~g`X}Uckjsi6KkQ$#P5Z-d|Vo z{;SiAnR%b@UB9~fp8ZbkG|h)o;_I%r+E<^R|MJW3Kb6|=%BSu=HS5m`+spQ;u{=>W z$y)c@V+8xvF8%Va46&*56McSi>Z$r&VV_ku{?s^MZWvJY=)n9dV%Jg>^+F@}tJh5p ze>f?4hHcEJI_2~``>x(w>M;M)=3hQxugsp#{3I6Z5u>@;Bkt7v-*44!A6S0G+ zOAmMEe5$)wXZKS0s^%)qN2+$;J-Pnuy8L@ZeHOD`w9z5gnl7X7!M!gRlr4T0$9s6U zuig4fD~|-uzh`)R&GnlbFP_^qS1gxh(l`02J$+s0?dN?0U56Z{^YLuL8gR^4jzD>3-Se?;+K42wl)T+AT&!@u1?T_@>{Oh^)ds+6i z$C}OFm$Lb)V)d_2s?s%fl{Koz|7C)*UVT1O=C*B%YoGt;zMiDCY~9+TpNIT^wm+J5 zKiAOlO^rg1rCj}geuaSA8F7)~KlnA?mWw}JFI*91YY^-bAi!9Rr;PQFU9y{*f< z@v2?)QdR@eUhzn#xq<8F^6p;SUAnpdS9ro^^cN-8I+4 zvP;h_GnjSQgLnS4$G4t%Mqd8BM|m^P_vFG2{!#r$c1PrHI%#&gZujf9_@lbpn-`zj z;gK40I$}!UjZC+?sqdeZ?XLZ{=}u~g<_Z7yKQZrrgv|NB`A+)x<~*}kareVxW<5Fc z>~_x4?`$*giE_GJI&xP%uJF~gNB7_IE!lgPZ%XLo-LH(61X&qe{5iFzbe+~R4+r^{ zy9Y|Q-AjM%C42Pq<)=Si#@g9yo|$8CHQkT9OSx5XziP;GmalI#@0@+!v0-`d<|nzG z0xw#31s&h=wEX7EY1LDF&&MU{PZPfC$>2C4oW($<;G*E9*n&Kl)p{G2LjM z{pu>S;49Ui7UpQLKc1}od+PJe2dzK8f7$na;o;BW^AZE|ZB}o8<@=|7%I6UFBewB5 zn0Kb z^2tA4*856eSycbWH9=dsKCdY0bhlple9!C6x5_t8?fq@~)>n1@ubt}iTyt$A%^WtY zsJLXk)>lHmJ9nFUf7BVj^L|}spIqP7$$s_=ym50*S$j?Y!!JT!Lw@LgJv(7@znqPzFVxezkhDl zd3eC=_b$t8`?M#P%jxYs{oUq#SF-xZl0+)2^KMoSie$F6Wy6 zzCJzf&b@Wvg6;SID$lv~HqT6kZ&RIqy41Xi{%PH=+ZOfOeP-6V&fn`-W-k}Bbo=c! zoA1w8zxnvG{+7=+|DS|Dja+v^`|Gu=?VIf?Wy3zLO3&FF=k|N+Qaj_Rdv7cI|K0px zPtb*78gwLQf>mQg(_+iV`EFZYeRbz@3uIe+|%|JFCFcAkh^_IZux?M=5cm-IZo z8xVi-<;&Vv>9)7F-jG;Ty(Rwh$>MDnB4)qW{1+2(dr7U7OZ2U!jMjUP{)j#kc_dBe zs^Z^_#UkMkm#8kS`~L4^=e8BI^^PyUbzpkFe&qj$onOjswrpC<|Mtzphx4}m-E}ue zLD$QFUVPHMi*mi2kALj=cy;2w@@chm*K9t1-2GIjeAvV7vqQiAu{kTXg}eG#R%+9l zOYF_x81B7Q{` zOJUTU{PG#{Jnhr}deq&nhx7yPIX>{XZN0Sr(w>Tv|0nkBEPvO1Pw-!QmFMG6Y=2K* zKK$YD&uf1Se&s(?{t~_N{oS|MZr1<*H|g%-M4tBZ56o7x{(WHd`|I`PtABPLvlA-o zeG1uz2Bt&_+e)3(`omVIYhOWs>e zS^wv_;Dy77BOdRFNR#~Jxznxw#G@Yy-AAwg-@){MBh%kh?IpM7N_KlcDL<@qZQW_7 zuuR7IqZ1syR&G39w&z2+`oZ{p8%*3^nLB1IV%6l#iT~Pvq1aC<^gq|)qkq?PtiE!| zL*SCS-chx)msm4BG8V}i^XsTgZJo*;_Bc*}!z^>jI{}@qkJKua*Rp1|9+;M%A0zhU z6w+nD=6j-_}pm5)|*TGDG z#iug&Ge4S~5W=LHX`rvllFp>MaIcx{6!E8D->p73Yly-nW!5 z^~wnANwBZCm+SOY)&5M$b+@m$`9!_3iZ*7G4>r`>u8@uc#B5&hm=; z(%gV{p(CsQeM;#zxU$;FNbisdr|_MJ2C6+KPu_C|``NP;*|-ad%$={?vdkxF`u2Is zPv;eR-LRjM5^+FT-L>jTaVx{~EsRe0J}OTuFE}Zlz4fzs`bu8js&n!uX0vP-_Y0gp zchcg2&p9e?U#Z@yBbxto{>Rvd)1LU|oqpbyzUl0tWn!-HXI8(OJLPg;%3khM%V%Vq z3}L-?dCiwaJFeCgnzy_(f0gUG*H`eD_rKEq1nWngSBi>?-<3aDnZD=Mlq*M-@~=97 zjDF0*8P&cgzOs&!{fX(*nz#>nWfgJS@4H?FhN-h1wXW>5s;_b`_TG5V@8@)dZ;xW1 zSO!*aUSK!ne7n@bzn14>7HBsb8ztOY^Jnh0G>N^Jwf9~wxRBs^=&#BbzIzPPuWl-e zE}eWmBu@XMpJ?flqSgD-w#dqw-CwbH<*ttP9gB}PyzO)SA9B2E`|~M*Zy#w`JX7(P z%3-nF@X?VcX!Zg#znzzim;UL#n7_Ejxb@R2cDJ_^*xG*{o?JAgJy?3hqzvcATk(63 zebk%u{l)=-o?^!x^A7%&a;)q67+mAUVLbOje(okcCn-*+B~xwPgB{)<)c^jt!jIpY z#pV3{7v>VzJvJ~b<~{UUV9^_{gC0wNeT!y!V$)vEUw(1@Ta_7q&6eJHn`3gRiR-?*6ka!d8B_B}!()9nL)mi~3k=v}b%qU@)84;sI{`S~;Z zNoZ4=ZMe`Df7K5+`!+APzSK8;)^mx*Kih9=WtUamthll`?xxD78L8a!e#h7E?JxU0 zr*G4Ovy7*6&K~WPI@)!)cB%1V-uK2FdtOgAvss>D_J*(gCNsCE*RRmy#u^7NHXU7U zduaWI7M)wWvv#al{ga7hPwvM}djx+@{5E^nT!HfbUvkP*yua>ED88c4arjF3i=X#$ z%zA8B9X93Mef>-57EX>MZ+spE3wo?iY39}cQv8)Ezqj?K!pR+udaNf;JI-HNH~Cwp zi}dtq!O$L#c*+n>zx-~blto;9kUbeqM){aY5?nv`^ET5(ROZC>#De6Xn7F!kfERQs= zeq;3Q)_RZd?Nhe=3+ zcH8j2#HNc4nnrb77M6)ib8Pe7dbs(8_tD_L+Y6d?Vs@XgI#k4;cy!Xq@8-8EGPfz{V&_!m8gzC_UZZ`ugX=+)DpiI8J=%j{QFJc*iQ3YWfrInORw>T31Ns+;Tg*NZV-Iaf4I zR(*}-Ca((;o7qm>`PWN}gs;H*CF zWHfiDv@R3Fw`C3NFL#@fWq&Z6OyXUcWIdir;@&?7yK<}(UjGm2lD*lNUlRNdm4X|i3% z&(kCNT83MU#LsMH&6z>-Dur|3PErW}Idy@@EbVUJ$-eAYzj&-(=b*_iKA+>PhIf+S z_A3s-*EoO9R$35Lx%Ht!%kMjrA0&U6J8Q=74)gmH7FcOCZ#KXZv+4g_bdEbrv9-ke`-DT{T0u4E6weepA07*2syv% z)Ri0Q{H;sdG^QO=xFNe&(dDYKn&Y~At)F%;d%omunl|$x8&2b?-;VAMI=9G7DB!qI zS$42nWc1EIe*Pzxx4ck4sF#znRAJs+uh$`tPo{YHnpLIxEt-(I+YVvG(z`?~`N><=x0w zJmr(7c#q~0?%Z7x+3M9_x1O%8>)U_n$K*=SSlbiw-cwI`ubT|z!*1|?9+#I~R4H>=4J$jU6fRDJ&NZKXG}6yLn#|NQG5>;H_+< ziro@xz1Q)Z_Wx6Ukr$6O=HI`@v0CoM_1C8Z`5wPl`!HQdBTl^6SLMUq*3=oN%ROcX zndN9W&ehJoSQcX`)gyQ7+S83Ur^?4_-1Fs3Tpe}3{VqedLGdj&lLH$Ud?+wKahp5U z^|4yZ^`{>f-P&=nV6Jca<{Ji=7tP;)<&sj5$uUXeJ;ztpM{k_D!hTn`A&+mYMnw6E z(~~~_Em+`NI`!iMGrmIqFufbs#NM7yjhZf_|9)xwPWjB3(~DevKTowutFW}pU2)4W z@!l4R+lQVd-RabK+xKvL@ZqR8CgDG2c|Qm|ySy#jyUgoEJZOmh0LwZ~gKu{Y*5z!B zTzNjGwy$;m*R%;+GyU_eOi$;Ra=-t$nC0H<_ikyk&K&>$HU7Vnb$;p#BPPx*vt@OB zG8YBB+F&)e?%V%A(_4<4Kl<%a_j2*6!uV$odgH}kYUp48nYqF6>${KFPrP3HX5U1w zy5B+vcQ@@h9z1#Dwae@GPqcq_^ZLztf01v=pz#Q`4~$F;Jv48&JgfTRIB9cEr1Z3) z2~XT+sb{Y(JHG4Mq*UFt`&aGOv^Kpi9y_5B6yFI^z7_qIL(SLcOW#-FfcM?sFu6%3di{pOt3s{;0n9 z!0dy&TPmXVOl(*od5HIniK2vMro`)`-R8c}zs2cK%n)39{L!~v6_Ty`Kc^Qgd$mg^ z<-0)9oWI^1bc&yF^xhB*7Asr6A&N)(>&=;64K7WEKPN8z81q}@I>S0)FHZ|Ar;4vV zE?M0d)PH*Nx_8;vdi~HpxX+|__L{oCey_JZblP40Hzh9KbK{kIui`nijEX8++`A{| zo34Abj@KD=k0n?)&?wt>EU8=BUfh>z=@&S+2b}i?# z{&?#D^qa4FVz*tVe&!kb3yCp0abkik1=DzWvsIFXR-Me*VUisBth#k)RKXNB{jawc z``t8EKDg_uAp?tp9B z@5}%8x^wG|V(Ri0%$z&5^j`H^MR;eNWN>6!btNNnXXN=8O@DL+8s?gO_bv>PoRSw? zv-b1#p4Pm~%f<|fZx8C-*9d(6U1`%Le%tt>tjm`cDD9tQA76W`S9O_0TzBwnrWC$d zY0*=M-ih?z%e1x5N?!VL{u&>RbC*9)u(|&yIumAKlUZ3UF-+pL+SVQoPD*wy_ z?Jpa`E$1v+S>rfQz^}*DLwmPb>5cr2C)w;RpLVrxdOrV8?BAw43=dtbZpY><`Fne= z?#tbLHx*c1gu=cX>^$wTT%&JGeX3fFd(w$6*PE?3b4>bwXUM#mJ9Xzl-a||M>dzEU z7Q2w*ByjM=j`jjsZwcjGn~bAu;+X;blgbP^@2Sn;zGl8>VY#5bbb`V5#e4WpW>@{2 zogw;7<-pU3rjl*dPdMj)=UC``V=dE#XC50&9DXQqYnO9;-FbwK-OOEJoB!|Qg-@1D zEDoM9*}1x^cLHy*n7Gs|-b-?KYfnb)t>t*)|4%!=PLK|4z`z`D?+C1Y(MbZL9Qge>6cdV z$64pqa!O8^E2(U|{_YQA;-L|fAp*2lHkY>oY%VbuusKoBl(*#OSbI@pJwscRl5D!ZP8rC+&xzguK!e7s(7^KW96q( zuOE-Ty|(vje7*PTy|%eq-c(BpzkBbw*-kSawC1s~o~M!d@ovf2DYjve+AjiJ8N#Nz0d6Lnrkl)X`W3wJk9L9+IHnS-7ndX_gHZp zy`6MN$NtuVRm#VbR!-o{Kf3JBwr8d}_pTm`&Sl8Xy!&X1o8A3@n##IP{ZnyT;ZKq$ z%SwI^7I~Cjx5U#jr({bIKikwrOV`Y^f4GSE@bZ#`JB|5w*Vw*lF5KH^=9#{}+~i*P zBUSM~e*ZpgW$2x}D{710&Mf)Wy*s4M{y+a?Vjdu?DKncT#PwijGiRcfPqx`rqbVJR z{brAj*|@zt6fdzQZ0Yj_yPnN@RX+U{=enfQk9($kdbu9bmfp_ck}Un&?vr9`?|P1` z6x9$f(WvB0ftwcYI3_u{_}UlK`&WYEUL6zl``h@dvU7Xt!(#9GdfH3erHW&_*YVnG z`jl|81nnsCEnIbdTI+eax$~!ZTzP)#+KNX!+!+;FuvJKl!oz`QxIJug#k_J9BJyT3{`u;J{YL5g};fb>glGr`o?F4SYm&_pZjOEJ{fp1#(s*0CaF4(d##YtA%KKJd31$%BSv`H{@2onmC+dIE>wrtjvC z!I$=3+C7Q;`MOsB^{&(AJ?CYfQ|g@CacfKQ-7l4D|Gm#Y(bk_?#+Y^FlJkxF)3ep~ z`ahnwr&Yd_Ay{kalf3k)4ZNqUp6tox3;io>w&#kfYhRYJ^WIkvk1n;D?-U%Khua z?+T#<9CIz6a;%p)W%90R#eA;MrR=&E8#yi|H`F$UcdHBCQd(ody=ZCaNz-$4V?Ag1 z*=7c=Jj~=>I#I<$^5UX5yzf8R&AYLChS~Cmoo3TJKH0b}nm%*tgKnuV)@>ic|6G)O zmb=BZZ^agGg=KNM9Y6DQzPQQ0Hwf3!)(91UYn|9u{`kg|#gBugl`*I(@QuXFM&N+3K|~taUzo zyRpDJee>Cma{l7IPpyp|BvU6Yy7;i8{nDRCiJJ~5+{B-W8|!#_H2>K%V~+lY_1o^g zkyHFR&o%p7)_=wC3)kF#5P0^$T8pdwn)`j)p}S4&JQB1I>LjY{xK>kckki__>n#I! zu6pD8z9TaWRrth$UZnqC!@B1B>lti3$G_iXJ|1XN5+a!F8p(6%N7SLmvUMi6rm3zx zetDu(PElI$8XeD*UvI|jN;jV7cCGf$-N*i~vx^ctUp<}a`{0dwYSN{J{Lz!*i@J}l zDEyLYCHDCH^K`Qvy_@g9_$*p<`q}m8`I9?>lbhHMMfP%@sQLEgsbaRQ<)l2Lvr)HV z+%(lDbG~jUzxltZ(X6+&c4kU>dH>D>vp1YpeaclluduhQ&x7ejK&sR*S$-8uR--5=a8~f)xOSTI0ymlk1r#2-e%SzZ@$HOiu?N6K7e?D&u z{fGybG&Fx~%$xDdZuw(pjrWg!s@~o#xb6NUnGZW_g3C_bNO3;+)B) zG&Yae@u#T1Tx$N5*WoWSY#r`c$#8$wcpY7^6|$11Vz$GVS+jyy-dy7|Yss8Nb)m=C zdHwYEnr3MG^cM4R>s9h|PH}1cmAbw7=8mg9%Kj4*QuH;JnMiPF$i^SP@y^3xT6F5f zALV8fy#v;k+T<>pboIRL$Ksj)mL5H(pCc%ieY-kEG5+~(i(}>~0TWNgWXHHq^gVIA z`kZL}?3UU;D_J6r^G-k3tXXu;M|!QDKlkH9i~Fs7BEI~5%zAH6f%IFQR72a$mQz=9 zf)9mh`RG^J^`&j+ykE_;CZ*17i{)3RN8!9pWlCPJ-`16#XXkE2z zO7fMZg_8{4SI177I8BsKXwsf%k9gA5oNqBJEDzaw*?o7*E|XcxuhNhTW*&UPaJ#ZS0}gWnJ0#ULF)o46)q% z>3gw?`F>6BSdWg%t zY|C%Ul-#AKcP*Wt=r=n(?9eYm>5McUseML*VgFR7TsL02Yx0E;U&BQc3znQN{*lFe zq+(Uo{2yB{K97Ab@-)!u)(7J^hM9f7f=0^v2UmH0O}Cg=J+Jt!j*k8Bs$(TbSb590 zd{mO~I4bdfyToeSj@$w-H7Gb+%b8l7o5ksO>X6I~j|Z1zUGJ}$aWw4zmpvakVs>l^Y`Aq` z<-RQ@$Mk~4*6YcfKPsH=!{6m9b9b`lotVjjYma<5!!T!aV(FrHCttRG>e^YzYrn)* zZ@N8ymAICq(y~3Z*LJUu(LP^!e`Ue;TX{cu@9SLi5iB|@s5MvS&>Qu0&ic>)mgv_q z`gBG6tlH^ykHx@n@^Y>7lkM}e8aH0FjBa?jso~2~9nm1Ag$pOn_pUpx^z7>9hUv20 z)%rRqz3=4Cbb2*2EGbDmr1_#5cWEP9(I z%@vpWYyZae)y$IJ8zky}&+Sg}tKSmn?)NvwM75Gzu=eN4;Gf)Yd)5R_XgA*xbpb_IdONi{$FTw&2_MO+Q(74rk6!0 zt9rN2v+yK6_V4B36+DevjK7Y4Wn;|F4$yEl@PCtW#NYnlN10nY)~Qvkx8y(cPEXoL z-u>^4_a}Z`tofz8=0DE{nI$`aaV6$1Ha}JOP=jAHGNZA&GokFz&wg!|h04c1%u@Ea zaW`50r9`iy?8IV;?8&d2Ha^q&_2#%?<$~JjsfwJt-^~;5n`|S<(kAk)wk+9Osp5b z+1~DW=3u!q=UnxhIh(j%2VcrrT`ZODedDgu+~ZUDobIc}q($7FG{OG-0+UOYOs)Ik z+3dyfhpN8GQ`l3V@L1Q0caj{x*-h@ISK<*R|G%o5yj>)` zRJnIf;5JsLPo~AojvxQMA#dqxp(g(uE*sJg8z}ud;U(?(r>NU?gYN7?dASJl#}+oP zGVJEM?GjqWZ<43fXe!O8uFvuEd5*|)iB-#9WiC3)6Z^_j>_CG0Li=0a?l1eC;}+Au zapI!BY3m`Y(Zqb|Kg}WC#=>ynmV~u zBzM!Pe#@(~?6tS3tSP-Lc&H?k%YWu^V78r}He0ZqB{OKeg5GeSN2|KL2W!P)_SL#oZ=P<6^(mX&)+??{h+Dl9cS* zW4+(n+D%Q4OMX~=CTmSsnMP~X_vJ;ainN++u5WKvYYfh?oW567@P$sN>13A7O6~g0 z%}zI8f3II|7@AV|0o^}!EfSpsDDmN)8(cPwc=zgk3Jk40$R zlk=@bI*Lzber1Fn<;kj|HBje&sF-pcP{+;m0ziI+gg#c zn)`}8{yYuU){QG`QdYPY`KmNMetCk>v{ycPx*cBH@qW_&Z8I27oc&(Be#g8+H7|@C z*Pbn~Tvlwm^l9kE$-=v~mF>JZZ;yzy$)%g0IkPMNFxP+D=e#wpD8=FZCbQcymNr@C z^H|nh(vV&3d+Xr+S&c3C%=ZRg6fj&MVGwk2Nl^2oaM_ok*G|WOT{rvGcCqjIdxMPv z6M5oSsF(KRZhk@Lx_YEK2%_hYx|NeOW2DL_qkV7#SSMF-^{A#qH zKkA9o359K!-dM~Oy<*E5v%{`VWOyJmEG=(b~O#dO@^z1V?g& z%1plt>ni4@>WURE`u}Lx7H_HCOe3+T*&QD~op+5(O|mUhU-ckGi^Zoj_59-%yMrsW z{X19c2TCsGyqohqa!=yNo^oIA)L^l^eTw_-pZ^tk(_gzY)-`Y&V|VAI{Oi~C-^+DJ zMJ4=cYuMMD_Gf|LW#{gy)0`6%F3mf7%u20(jR0RRQ@vVa%^vNC>C-kEcvsIeX;Cq` z*0$Y!%eh%PEU#<#7MXN)pY-N9y#C!sv%lB(e>z(FHF~{uZj@)f_tD~~&o$-tJiq;? ztG8^qbd=4!BN87P|2E(JXd1J0?2KX{TQC+P^9%7Mz{O z^z5CTeVLoPNaBtsyXO=wbp5z~OLOVFj}wo6U3Fmhx#X9#B3A3i>!;})(k}LD{iPlH z;K#h9HLtFogG?R$Wm&S&G`acGkAF2=CZ6$2UZK_Z>EaIm;?rC93E2Af%vY6oe<{D_ zA>5uEeFobRXK8RO(}~jf1>&0?-G-Rd(H+p_b~y<~AYpY*4;qvprnIh!o~Y^mublwsHZu1s?KXU~)rt^c#8%h*ROd$r+VZow<@ zDe)~EA3Apb);TtL*{8KR*^BR->2CU*IW0@b;t84Hx}sNYMOW$T|VGP_Z7)$tWd zYa9YIYt7_)miWqETzN*O_Yhn2{h9i?-<3Zo?{KqL{xfm^9r@zCpUv}iu3qg+)o_=t z`_6HqeQ9N*M5h0}O3_{>g)QeUWK2I`wej9+K2!TC6Jp&HT`gyd2QR;M<&V$3?N8jJ zzTMhVbDV9jNLZK#drp(UbmRXf+uQ1oA1-Ld1amS*<%#IIqsHgZd4s&szY^NOc@4RHT{ z>d|}KYtvPG=X>tZJ!*Z(X45jQRts6>T`qA2DieP77X2!X{IYd_hr_+j=aWB1d#c%Q zfA|0Jy87ovr+#a;u4LPDddV6Vm(Klha=Mc|POQGWEZmGAF6~>$Y->^7OlwEL{tA~KgPI(V^;RRVnnd$G> zE}6Q0`zw#$eQH5k)qjFh0#`(De0IHAGd_5)*7;demcBN37MIi8BIaqo-Kl_YsZPtY z{bsoz{3~nD7fTsF2!AtWW^f(TG0T6i%sD&WuZW)eckN?_6rrW(-d4toAL$L$-qNz+ zQb5J2`$_Y7Te^jm_F1o=>T>SI`TJUNUGpnzU$)n*niH538}M-F0$wR;v98B&DnDJZ zJ~&~y{j(;0&1`|9A{Fh#yNlmUyt-q{gSF8@C%zeqp0k;}%k_n?Y<9t7tNEYvJ@*-2 z`L=7D?aP-tE6!#XI>%l5ysSoB-u(W`=pL?lPkHrk-7Wtbv~SwXS=Ci_CJmD|)$P=< zQl95Nk<&E1+dc5)%f`!=XEz-x5M0o)`;K4NM~2ms%v`bW%pdJdV%XmBQQWOr{+3VB zlF!p?JG$AHemub1czyD-$XgzpnI3XK4inq>ZnI&O(DUztueCfM96IDt^fBgx^8Jp< z>%#0linz1gvHkcj`>;0`f3n!YFKaxNU9Lr6nJ0VEAj0dl#M`!_y>pUuKWXXmzjf`{ zvy4^Vmgl3tlkmPd+yz{9zfbe}9h{Icd+!^;+;>|#uIFW6d^w}m^>NbSq;T=v_x5M+ zo;amhcW-r-{+8by|DRPB-})R@}nOA>P&6w%Oja@`*gJ zndUj)jN@Aa^dg(j+&tyEdv@5bDX(|@SZIIgp_1H8rQWlKn*S?Rel0zF{Ql#RXsgS` zE6)0AMy+zX^`v+U-}W=9e6>2q_QV?ApStFY}??1O*otq?7XFvYvk`}UwY4V?M?HM823q>;AuW?qgJenVo zVf7Z<}D45?Kb{2p&qzkc~a|Q2pnWCe6Jl?*Y&^hng*(>d* zr1ID8)P3r{W?50mf^UNLX9NXv_dJ^R^`1rEgl{zmc5U8e8F_8a#pONSwkO>G_(gV1 z?)+>mR(`d1#eSZricj({vVV^L*{AIO(*0`g5vvc!jneMhcQt6a>-~EA=k?Y5PoBRz zX8+kK>gYeirRfPF(J=A(k;(M_20)i3>zRomqrwrJudN!R7Z zlk!<6N8Za{k@Q06qoCB5)agwg57s{{oXsBcOxur-KQXA2ahu82_UXo*lee4i4_L90j_YT}oqzUvSe{*!{C7b@OIp%jrXz6;#J#A+zZ)N2aZ+^P# zTcG&!KJ7TU?X$KX?a({7>Vf2xf{^a@v)<@72AFTOT0TFT??V2@tI3P~=dPA%TDg7R z;v*IdpKdSn3Ek?O+|*Ip#JYz44u9`2nKPE!ruVm4&(unq6mE0rJxBBT8*6PQaVA~5 zyu0YDoxu8g(qCJI&eg?!u(e$0DI9+5?8kS@+BNRhzgK^gOoD6e=VTv}PNZgyW>o%c?^gLXe6_joUvtY0O5@Z@?nt@ZCp)b0!IIMuTK zmPu;p?i;H6RZViG(la+U|CuTK`PKzx-Sg8|QZY7;5PoCNzzm%-_;KXM8#zvOOPrrwEi+C!3 zkXiJl*Jzdeg?T6Dd`#WH(D;s(4Zl9?W4&(2(jITae_PgD-m01KGfd5?IC|M{vDa&k zO6K@~&)`42Eyhgu(3*=9atnF`zt6drC!po-pti)Y=xvHnXRoJ5>k&0pn~cVkv$t*d z6wjt|=&sOJTCaVE%j@>6J&)E`lzPwW-nOIUY4v`uV%PIE`db9M{zWu=wJWLO_$Z#3 z>-hGt`~BYcXM-88@upFJy=^DbL~*w+ygt#{eGJ*<(%Oe^_WR&XU21_ z-dNQSf{M+zB6W{XKQ7Cqv#@E6;ofIk7OY=vDZlmMwsVUQOqibcU(dR3wo%xF8Xp@y z%XbSe%3ppz(cUz`{K6I2$i2%Xr<-u4Y<>FmQke6-e{*lW<@@XRbx+_|ONqlz_e7p~ zTJ&%EniDr59m+kv4z*W=bfdoN2m1uPp3(m#D#KtkZ~S_*p82V+ET_Hs_ovyKd9S_U zvCU0l-vz$XnEAdd%QIBH1FYqeukDKd;b@>&e5XiuCi8yj`DO~M<9%|gD>VLPKUsxt7l}{*weri#3*vm| z3;TDL%$>jGVOXW_$5sDrQ{O6WGOt^pdpF^7POR0=84eG-w<_$*T$^I({??k2si9Br zV&sie&iiIYR<7(8lt5#H9k52G+4Nrx6bz0pBiOXm8bTQ zS+9J7fZ#RDV#2zlw`>f48^ooos*!DY{_?LmDKW2hryQ+N_C6|KGE2|v-m=msX5B9* z8MZu_U9p8Ra&E*cp)DVEt`&Lee|3%eEX$kqYzvFlcUAc_)As()V5-`Xw=?7+xH0(u z!qtuo@1{*?Yh7sFQn7PiBgbkngXw2Z_%glZ&5z@s+!ic$Kx)q$|2-?NvMRkjHl=LA zmIb0wyM5z7>z{3{bKe~$(3WxMn6$LM{jIu7KDm?UTd5zsHa6}#5d;KZhO2~UsQL!_|$_ftkx^N zSMiviU3^$iJnhnjRa4jOxGefeT1h4@^ZF{5#Z7_Xf4qKduk+f`{zucq+;pDb`_->J z|Jy}X@E$1r_H&AB@YTTGT7lX|OP(9fESRpK`^us6W^vxeGV?1tn7^*#6}$CUVav-L z?z!rJZxt_@yJ^?@=PzEpc^dK{sOnWt)ti5@0`F9A*o3;Ae0=nJ&14RBwv^;cmeU`c zZJ5$5dw5l}&r}Zwnc0$Fr3=41%+^=2*mYd~;^UyF6ZFm>o_4OZb^qme&u10IrfmP@ zT=@FVSI!#qBc-eFU9r@!ET0wPFvnM(-&577u1)iu-m)E?*$34`IcNRPU>1MN_%U;K z%q)-PN&9qXP4TSQS{V6F+v&xt-OJKF(=J)*Bxsy-`MxP7YkR}_|5fSi1{bV@OOsT5 zU+M}c-u0`Tvj2VMa*=mi9=4XdcYS=eeuj4P)3~lj#Wh*ZjrSg?N`LFRbyOf78jN2P`eW{r4bK|MpmwPKUuNxQtywF+S;ql0J^2~jz zyM3c|+EjR71`9p$wL5CU@;W2ri^217(KXuZH=leT5vTE~i{V$$Wu<=SxAL;#UtUk2 z+jGk~D9iiBmw#MWb}v;f{CZ~JvkbMmd&P|#qSH0)&WCMun0d}`&(!#hF`G9koGS}S zPf2H*KkvZLxlHNwlA{B{j%q}jE|3gU!8wNF79r{f7Z-MUBliB35R=c z?cXC`WxK~@ZTObmmukAVEuYfArJ(j^-LyxC->3CHkP?0#o|}Gh_P%X`F&T3m-26XD9pd+}swnpA|9JLf)lT$N6;%wf@PBTU~g3-p-Oc zR;|7BKc=tW)jt1~XKj7auT@q*=0DGz6Z!8nbNaO7Y1Wrqxqnw4pJQ05S1We%xah_S z^BI@DX|GxrhNW%oSpwKMa+SN*E^XHcuh=yP-awHQ;mowN44a{M<0?|)q(6!2S@ z)&4B=`ss5Vpq5RKv?ASKRbO${@cYU?>H3`z5ACB5*VijDrU*S;$Cextw&rnG z?$fo)pXr}@ukNu*;hS>Np(cKP!}kJAcka|QvuyZjpXuhM;QMJ$h)_e;@r7s3YW1|l zhxcvwkJ@V3@MM`33#VoLXZ_0uA1*rAIseNSBmaPAp2QSW!MHc9-&Ld~l?3=3HF(|U z#QP{O`YgV!CTwom`7;x(+RT!chI;H%&6!%ZlWmohN7jM*w29oQY)^cpjt8F0Qp*3U zCv@rON{#Jqan8H4+$SB1OAcC^&$m{TcZN5;m%3vfv?gYm&&RyILHV;% zURF-MX*~11iu6wHr(Z?1KYCX0?-$8F_QFxNe(v_k|1V8X%8J>w$gY`{ZCJZ@e5 z=a#cx?Q3#=Rx&d;k3}v^caccy{Y^I%nYoQ#YZu>Ht-5UeQp*!NuY6z3cs`;^)624@ z-GoVM4y)|jn3vP~u4HUHoZ1=YA+t8{&Si&~C?$^_#R~o&UAj-#gX`(IjvK9eU`=gIW3oWCb+2GIGy?S$KJ+vv-m0E7uPLX z5p#iUr`Rm+>@#bYvu^m~x}aWHOf>b^%eBW>3%!;9wel>>ts7#qtvWoPcY5EjO)GpU z=sUYc@O7C`)QUSFCw(^z&j>!a-SX$T=PC-kTdRFu`=lFhxqd?-c-y`YQPb{!o%Bq% zI`;Rvqe-&j3eFp?{(ngd=3`v9czN%GyK@#VUGsJ;*JORBDOJ-&R_HlivfL!FcfrKI zV*k$v%)M_oc&|2>Sa8!l+In`n^*QOOs*|3)np{!*MeyL%#~&i)J-r_J|2<>MB%0cJ zeg3Q_Wl$m4_}_pjLL{=4Ro={D<@}^Sw-TKr{`o&UZCO66?or3LTqE{>|Nnj8fB4d@ zW5=xIl+X1%Te09t%AsH7f6i>^ThZs|be(V6dG|BYk5(8xa}!G0esSA9z3@n@%~q|~ zX9P<<=e@=mb!5G%Uhf0ba)lQ+HQ&z&tFK%5UyJR-(`)gw&g-Zb#3 z@r~0KJzBl%`jw;e-iz3B9ZKc=+<)6OM??R9c>Ml*3le=_CiVE(RLVzu`+DxZtJSR~ z+qKSp@>5Lyta~w$>boV)zru_=99g*zXb=3idb zVb=8gr}FvNtUsMU&*R)@a_p&DL~Jlqdi|vf^Hcx-eH*j?;l+B$z+ar|f^8OG+g~}C zmaI+jOtg&1we`C+;YwQj(q4`U@t50FIFG2FSQqUW{KJE}-g9Hnv?R|q-n=!2&*x6s z6FO(jqi3=^e@#}+&ON`T(tdHGUH88Rixca&TnhfDE%@X4d8L3g;+Iz{uhB?tGCVPn z_qoojPXSBSSC#yi|MPXvs!!_97N0hG+zu036`fXL${}qc$n(g*$#G`Yyu?XAq?>C;y*IJbx_M+ZjwZkb24cz`B!|kAK}p9w%Jgmuy;nUnn5=*@UZ%mYE6J+rPK2{xG$wmjeXLt8?cqayovkIu zrm^#-RMyBR$ghUfmodtsDIDbyK=#wETaq3tRhIXY5e_ z{Jtsj$KzSASPQeSxSOunk@2~ctt?n9O^xTu5#?K)ivny{>0aHvzAyg#)%3EcjzzO9 z_4CEfclbzWUjNUdn=sGmn0`jq;?lK8r>i+-zP&lUA>!$onNR0ODP$*f<@X((^6~Hw zFAJ$|xsysLVPNKRsM`!wUULHREo}PAWWo%K6iCf8ie@ zEUVtyazDHDDQ{!q^Apzh4i>p=_1sre{Nw23{SW8bzWWhZclGP!vh}S`*|%E%TDPI9 zf11v|)0=0x&Q!f_c`NGu`)}@vyw3j)Y1aRl|0rDM*Y z{CO+uyUKcBw`U#a_p#d8dr;=F)tW!^KM6Fxoc$;!)a>_#dS15~RlSZ*f}1y0a!pWJ z&@1|uJ=J$Q*ZW_RwXE}Bef-w*ewsInbeHna-uHhrd=}4pe7ygT=H5T)Kl8g5)vWz9 z_nwW|b<=wj?}snaV*d=Dx&LuoXhPYyw!T%?d-mu2_jeKSDVFhP*ACETnN+e|amzdp z=U*p&Oxu{0m#ZnRm@T8baJ}0E<73~Xn!OdBWFNC7uC4j{w7sKhhI#%u^_$$uPaiWT zTKt{Xa-92DR%hw^8Tu~qcV8Sa6q_aNBkA9NW6QB=;XbR@N0i?@YI$$t!k(RlJMa2m zoB71Q@={3R={u?C)b!nUeF=e~kEZ>5Q4_H};hfP^i{;bP z&xJZYj&w@kY!#nUd~i-p$$87?Px?<5-FrXPxcJdZee?Vyd*x>H>^fpusW>;eE+-`8 zR<_RiuO5fo<=GD_9{2it?#`o`8poNBnJroW@r20PHv$LPvu7k4K5MnS%)_T_^5Lrc z`i*RhzxJO?m~%e(VfeYIOA6O#KG(js)nxj`&qj0ooFo^V{eHL4SIA}BuTMqySO0ue za3%Sk*;zFkcIU`jO7pw&jUo$LPIWwQFkRzjKL4|CyoUbkO@_};e_noeXY87at9cui z@svSE0;aQE;amNGGSef0)rX_nuN2DZ>g@9R81#KBpO~2G4?W9Hk(gg!F27<)>6{vw znG{Z@|Fn#U%2(J@jN^w^6+TL!7u*#n*UWoWG)A& zEZoHQG=9g|xc^njrRQEwXWJd_;mrJ{BR=y`*m-ge1quSSKJ(ml@7JH_|ziauL$IEuM^>*O_&(*s(bxS7gdX>5sJ zwS5oY374JscGy3%m0!vC<=n#(Yq4edONxz-uI0?kGc-MP^?xJx`BmqXk5_$ez5Ki4 z`gzt>Pt9~Dsb=L~nP~9)R43#4@A-c&vrTDdoGqM@pJJ=jvObW(Npn%~?Ld)tTAThj zv9s+DC^{9)Tw zJ^5QY<2!TK^>k6QTO1#b82`J;dau`F@_Re$eLfKhm1)JHMK;bH>%R7RMklOg)MS2; zfB)5if;Q_}_sKa7MZ>EiKvM5Oo+9Z``0|_fymVs0~aRws3kea z4vBDasH?wz}P&%C}m)%kqlKZmP(S~+&G-4y2kW`2(MpVry0hfc2fcsW*YjsNv~ze1#I zLgs&JJAGEhODDGUOW|$R$rJy`a(|wDYi4J)3zr5?a=6BOw^^5o~?67`6UF>sY zS>5Gg`%6{3_rEv1mOOF0iTFgZZA)%lp7n#hS@E;rp$!jYYlB^mdYFDX?)3Rh*}Qid z;^n(dyRS!;tbcjEQ+d~6o9d6-J0I-3JtL(!FJt2VDZbAHzns;X@9$(B5yn2s=!ot?C(X-X! zyAOQ_HEbWucXpT^Zuzd6$=)bjbNl~Pw!%NcuV>w2vHtVv$g`8X-)Jv8v|rIcclW~= zde?TDY?rpbm;O7w<>vXH6~;ebUp#(Sk!5Q3X2G|om0$CG`X2P{xXg@?-#J!0JxuZ| zXg|8fMBRe_%J0L4Wyge>nl32y;LG(DQ5cXFv){&j`|)AIUZ1!V{QtT1c~4zlem^G5ILaMLK*XBrE&-OD-blR%nyQ<2l-A>MBpXkz0bGIBYwX0~j-~D6i zGowe>6P<6%=)UE2`mSEadwj#n$@vUEl@}D!45W;YKI5?Lo#>U^-uKCO*Ux~~Qj=#j zl3!PUKIDCGhH>9!_E*oZZLah>4c!8#$B}VQJJPYa)cb7b7C&9pJDVmqosUs#D~x*n zI!Vyi%l-SG$)|ryX>uGrfBB0~amd%+S;t>m+*Zuq81!SZj>GHyleT)QO}=(oN$;P> zGX>uFmecH2qJyIzE9w5^)Ly=3<-3o|mwvhO|JA&^{%Qw))tc2Unlx|o;wg)q47JV& zH!t?SvGvDf;~zgK<^OsA|8sr)31b~ymur`k8$F*Nzf&ai;^q7^ua_KMVY5c8Lbd0V zc!j9@jNnzBT7Nz_Wp8|A`)}&>)dsG=ZtXp>JNA7?4D$u&iPLN}2H*-Zi;bs3Xdlzpbml-HC$wfxvqujPGThMh&&B>c%uH) za=_&0&fK$-K8D#Yub6s2;)d&@a&PzYPgj>r zJQQl5eLwS1_y41tC%oDs<@mI`%I)5xl_gjC?mn9NZnaP88NZMBGvZJCgiibP-fNn_ z{bF0~jh6*kF5118)RI^|*K3YHqy0~DUZcZbOiNeH{d?)k1*hqAPR;NUxU1Fn$2&Qx z{KBz0n+_}!V$xj4cEeNHKfU9%%=WCmuCs2La)n&;&e(nK-;$$ylQ!IOv=GU4(CqyF z^sCX{J8!nnGnF%2>Kr*`d3XBmDQ#uUnZfNAD|L62ZLyqUc+16B*oME$|Kq;C zsv6I~50ZHput!O#@AQ{h$J$@oPTLv0_3`?hAN(aUV>90rynWI6_1yJ6@3%h=pTDqd z`=5W$43~fZZ8f*V)pq|H6Hn&#i{^$^oV*<@rl^&hd#Yc@dd{RU`*mf^b(f9^yA_5; z|Ctqh$H@76So}hc;62NKbeV;Izho%Ayt>A7O{&xOzKK#hU+n*|dPnx(Dav0U&0Ke3 zjaxpmO1JKub^D6-&*VD)-|H7En>@Mt!|YjnOKAM`^`EEw5>PtzT%>1p=Im1Y_rmLM zKU=l`)1Ae0=I_~m?)WYj$-hg*PMfClmA`V{@@`W9)~oMNYR&p2_nG5YTg|%mR+m!+ zn=)KlK8de;(fnyc<^0IF>Ql#$%+i1IG^kGh8MkZvl7E|TO<%h2Pt}@v>aqW37YA0F zvg$o!?0LEV*e}{-#r zJt3ELZI=I8Y8YCed;PuZl7ESy4Xgiom|m^^*KWLHX@#foue{~+0{^zQ98YGsH_3fT z@3E}@tLYw%ToWtiOxJySXd%nv)}>Kvx98trSZC*CyK2goEBPlL%|FIsWi)-o;{HjZ z(VSNw?|OFiPQd-8zTs9W*qDX+JB%KbX& zMBPa>H~u;>MQLBH(7fieQsbIaqg?54=HS24ZhsH6+^hGNI=2Py>30oa*#q{I4t(d@ z!@7Ecs(52uHhr0lrMPPN1CuZQ@~b=iq$C;vWi;Nu+blcnAdoi@b% zcweB;Y8&sKEZx6LFPv9ce5YokO{CS&?$_^sEdHVMp^jan`lmPNmD`+uy*EEN0;o#ywh`RW~`Nolo_0%Bb~~SMTS=?;YL0gy{h*s?oLIm7mU3AI>CJ@jo{E+)p#`fIH-PL0sgIDJ*%M z^HKjl}Bz|77{MOMQ~t!-5duiP4rB zn~b0Nw%40=)#&sn{k>O^pLRmdPPg&Y=c^yit@e)&JvW0u6xD<==|189-t2eH{Xy-7 z38&t?pDG@2iJ&bv(hnhDSCzlOIjnyuJ4L9>Hzw?oz3XH#eX zfBbO5TF%V}H~T0H=)68r-(A4fY}sj5eq{Zj-0$r6#Cxdl9-4}ZtG_QPj?6x~{#)0coOb>Z#+*S6OUA4COHE&Jh#YKH=R|5Cy z&l9W&nXiAf+D6;-e0XdWuG7vT9c>7yq)_S2AK5vVbH;)D%?J8LE0jHA*KWUQ&a!mU z0>0ZEia)1psND8c>QLs}Ns@|peBW)joo>u>vDovNU{oJ><5M}u_dXv5-pLgUIUkzB zy1@Nzd~T;X|8iros)`%hx~(meNPg&UK z^>JJld=ma?2}jtKpW8({C%gUpIV+!U&PK<&j@^H1H1n*5ag{PC;*I}#nCwFy?7jbf zGiQ@~rb)fyhl)!!ZVtEZzjJzEirVS`@cc9Z2xedn@l6Xa9;HOC;BWrYya_wIsU_q1A$iC^`s5lWNa z*>58gS-H;eo_j)k84Ist_RpxV)id(=OLN|t%(^MT_`h!B*=HQvcORK#Fe)z6lu%Q)-Z$ z-+kppkNR6SdM{a9%d%8)#ZsA5x63UVH7uVRK651c3e-wMv-`a(4TJ$F9z`mlG%TK2~ z`zf4TmASN>!>8s^c~MQM?3};P?oW-MIZ0kYB3^rAkibzz#$Wp$*k{RHTw?!Zjh~>l z=9XJO@3z16ys`H867|U+m~#Ub=q&sh$Mqb#VH{sbfzRpvFUeB3;()c{B+F0P3zcu3 z%}BEEv)b7pzHt4Pic*WMCc97H+NUX3`zj_aGwQuy$19%#Pp{In?IyF1x9m2Hfi^(vC;2cy zU(LVV|M~k`m2IZy|KCz@44m@BVx>jdDzjBdo+=%Q6OR<|ojVvcD>ssJ@gG%dk^6rl zMgHs*qvtjm1g@`HDXT`ee+gv#}(91M)j%T*^_K(th6UrY)Pwlv#7}>Y`BWu4~|JiFN zcX4cbckiQj^~BeDCojc&o=V#5{7ZA)rmOVD(*`%-F3sw@uo}i%D;u|P-DK3_?#Z_TmP z8>{OxDgwLqJv%g8^O*3h@))u6u`wm;*@bWQ@2*RKcVTJB-)VN=pUQ079C-8oA+K1y z?SZepZT$5wbJ~f5jLE#aC#2`(C0HKHS1y01u`|@YRn0u%!jrnfJ=g7y{TA`}IO%J3 z{6(E@@TJ!~E@Uq}6!t$Nq@Z8P{?*FO-H%K+natOHy1|zFqNwG^>!)U=J52lOD(G3S zT3o9eFu}X1=^M*?Goyb+?DtQ--#l-9Abw`C5GN&dLZxez*qF% zqbo;zze}{H+D8?n=be74SKZnDLDlQ3+O3Pb>$DS&NKaiH*!;`uzzx>@M$fVrFWhog zciwRkk5e(3JzM{mG~d^HzpYudQ0GndV5jv7p9pful||C z^ks2tX_(y8`xA~y<$e)6TD-b8Qb{+aBgZTB@lz*e`dV=MZNV;*<^!1$cY`jv`nkY(t2t*SEy*p##^nTPrV)8 zjxU@x_q~hpmy&14?aX%=)hn%kv1m4z{tsR4*LC~;f9qd5E1q?MY5eXWwfQ9{pL+_W zGxJ9tTYYZ#-DMX2agp;*1_r&q8NMgw;<=AfocA`ruZmo+yY!1t-1#Mot1VwnmD66A zxp;zHnRnQoCnXR5o!{YBneqR_Jd;~m!pB|zb}aoHzUAY}A3?KTx5sRFzq9_-|5u+~ zx4imndYI|Yy6)<4Qz8O`>mloUP^x%r9giP#Ij5LRw%;kGp&`E7x5Dnqq4^O7>fav( zMR|GNogx&%b>^nn(c)!idZz8u@ZCO_nJZjm!F49R^-D!UC%6`tq^{c$bZgO-y!Odo z^M4j;9$tPr)*?ah&S58syI);zY~=siwB)H*bl4rOX-%6Z29>u?-SlnSJ=vS-bCNYz zSX^YXls#d;xOCGcjiXmrGH0F%;L(1lcC%?d@%<+1FjY*!$sHBTe47H}4)civF%~kLglS(WZUzpYq+=c<0?YS|mK} z%|p9~KPPqnkx07p=jWpX^J*`JUwL>c_r#;$>j^aGK|2f@IADF(b-DXQZ(`Zh88?#NxZ~EGe*J4jxHPc%^d3IK<);gWa=p}&~ z_Lp5(ST9~Awe{tMj-aKBnRRvQLPIjQFD^BYubwN$b-f}aeN)4ty=|Yq%-plIB6rb( z-rI4{_wUyDu-dUJ^5s_RoE5qvh7+GKkv_{*#1BDZqn{UmQ}j^<`KrzGQSyg*~wgiT%VJ$CzaoO-^w zV!3=!*6D&eH7X;oLvbm{NDzzIwuy(<6hAMUE^d}OjqCOl7L`qN7_ zolL>e*4`giHf;$^;tw=Aef3+(&faPJgW9xD{3_q;_OORd@@lcfq9wjwSH;3^*RGp< zC?xDoQFZJ-zphK^nL!r=vh!bv_}%xI|0(Cfm1}`ZjukEUcq#1tBJ5pR_1Z6%_a;r6 zt#3SK1NW4-7lUFyo~)TIe>?cU*-tgrZ6e<;$0XjL-WI`_x>09IwZjFwhpX>6SzA~B zoUXF5?wrKChnp6^`L+FC&SBxN@qwW`bM3dE(OY`hH2RVD{XU(Q-peYZQ3{g`I_0gra#hm-O=ZH z*>6H>?K7i#`HC-2^VwS;Swa&Sq)(5V{BxLN&)in?1xq^ixpV#$P5u1%kHFgXkHxOO zPz~1zO1*j8(NOzoDNjTt|E`=*y`>x1Y+b4{eRcNSsZC+mE?p|RFSuMg`-8}Zv~QMe zvntinYisb;bFca>+V`Tje2`C zTl(mZSJ#gkNe91Ne$-6ogz+w?<>!iDEx$0?$SyqR^sissT$#CccCSphTlYS?8nA`G z;OV}YH;XSt>D^s=XDyrNr}95HC;m%+yL+w1rO#=*;x4UhZJe=hL;BVkXD)PY-)OKu zwetRgb+@{zPwl<^pely#`s^30ZO*TVGN{|E#?WiaRrKoOqCY`4r}tN`Yu~p+>Dcl= zMalP$*8lYR&dfJm?AOhurKheuvs+gwFwJ_+fsHKvf4n68tIkz)${@=Z)yS|86{tvlh*Y#?d$o{~?YkqC@4EHK~+NorxTGlnRA!U)nD=O=E~f& z^SHsIYUa47&mX?AIX=?moRPK`no;$r=PzbSp^x;gfzqOksqRk zSNsJ{QY?-9tEw3F=b5GF!#}eMc0K!jC+PU=MdyC}URUiqGw-NpYUsA@cdGC2x^}#t ziBaU<%f!03pT7zhl@fc;&3l&zxw?C_r~VRDebOJZIOlQc`pYZBy?#En500!a+-4v5 zp#IiWoka$}>u>p%))G}%Juqv$DMj);eUwS4+gKttXH9R*VG;UY-O#djU2lZn@(#S~VtpKG!*WG@RAhhRk0Xw=Xx zYR-lqJ*6!Bt-ZiP&Z+l*-~Hl+k7r@T2d+5#lg()&eIx05mi^v;_m_THcQt!q-I<<4 z^>u-DRd?qsAR+ZCd|*437yA0Q$UTuo-`rS#a`eQq5!XuxUCnvFz2Wu3a}s7g>Ss$dstxe@3rL=#w*!dFJ#@Cw(ZQ3 z`}S;%+I#Ge)fQ+HQ|8{AdEj9I&*!gtXSTHqtodNKUs_|2``fA)<+B`5<+BU_&;W&% zM){$q1baIMjKUS+Ox&8g&3|85b=~Q#*WJz4iq+p=R>>;}v&F8KIRD_s@!dinF8^5f zWA08OlGFirg$;M*4~d-4)7&k(;bWPGpn&Mc$}~rZ<)Qp%+wRVu{^7@KYoQO5fAoEr zyOkL8*cBDTpY4<`et)mF(w|Fh;^n86@`jDyL1lFH#PWThauK!2$0btV-5`3eo_oGN zG1Ep-&FJcj=hmnzA!AmrEIlm*1Yq7^863j z@7vRU*DR;(_m7^kTWjlUYGWORf86B^**)>q`y~E1;UQaU-hPky-nB&bD9gV>mb#UP zes8dEx%*J!)z@2B4?h2R;OAe%D-tuzIu~zvF2x(6zx4Ud*RjbWQF15bI(I*wb^6Co z!AZGSUZ*!-Z~nA2#_HaQ&!P98PB?Wj!^Fw5t54g0YP70XX?9@ydr5`kMibgDEz*ct zU6oq8dYY%qck`K7k|a-EztcBAOTw5(>$CSCr!|SXCK};?-JU+O4Pm`d_F~_XjL!Qn z_i6MUs+=6VI`w9B&!v_GK3l8J_3Vi z_k6b68xYnKl6AlPUgJN9+5=}DZe9%!__=x8Zkhixme1_F`)KC5>Gu5W6374fxaUv* z?Xk!9W7ePLo9bW3P5B(4zRap-^Ep?WyNaKFiOt^Z^XD+jy+(%j_xKv`37v%)yM5V<#>uMV`WI4`TBjZ_LJ2*2^VzM zUj4On(fb8EcRl;k87tHMDev`OJKNn=@4uci7EjTUK7FECBe3DvY4P=+3+12LEWUhI z@6N{_s~HWPH91VL+*F=V+^5-A;$UBKF#3<4{3)f_|Fa(*-LhlbN@l+Qc1%6|f(r9q z`QC3Vc>Lw|eJ-Z`>#jdvc4qo)gWD6$%^#m<)YjAf?$Z2c|Fhi}UT;6VWHM*3+3eVg z81LIBN-L!Wz3100=8)JXop>SB?dS?NF|WlOPqRxVyk_Hg$R5iQSIN9FRp3i%9mnIu z*~LE(Dlyhtwq4DVo@ajigTcD?KD{M&tH0{i#6IVjYA;zj&vxo&_sU~W3SIpdvYc=F zbbW!U8mn+(=PSOyitBg#X@9w;9&!7vT}@<=yXw4G;>PDEO?9felG~cc-D=#vu5Cj2 z71&t-$IdUB$JNX5p}y_OL6#S%ON9AWJ_x_`e!{y6Uv6_Icy;^VU9YcwSO3)A<#&!; z?Z}<@ZZB5|?51rMQ{FH4C)&DM^Dq?#?Ju|TL{?EJ58l?`# z%-8go_~H7TYL{Qa^H%RW70mhZ-}!HeMlW0H;__|Xjo+QD@jeu@T1ms(ZQaD*vHI(y zRdxTHfGTZy)eZM^57q4B*!*;t$D*q*TQ4q%*XX}0lp7FtK5g>`r^dNX>+O3^y(#)V z{T!>>@zY0xXIy7Xl#t%+9HA$kXg8OA*H#;o!x<(Vf9u-w+0ub*B1Fmq?RL0!+^ zNmF*6Idgd5UH*E%Hu3Iym5i!cXAd7<9_N#^JMyTN?zP)LqU(3np1Sxt(Xue8Ds$_v zCL`PP;jVk!R(tRFx%*Q5laT21FHbkzZ~6az{c(diciIcr*OvL&e~YfrJ6Bm&)okGO zGXC7}M@|y?*IygVK7V+UojR+bTv6`o7s;C{J|DHwk>Fo)LAC#3gUvog2b*`>r{sIi zo&NGtKz`|=iUYL^`h6X{cCdccIKJA{I+1C1-1ge3zPql?SNkBxqH-l#Cv6Ms&);i0 zC7AZ;Tsd4}#Md16{LRhY_pfV?-O$d~UQ%(bX|_n)V$S#R%T>Ol`&j%wG$X)p*TeJn z?u8$dyXt=}IUA#U`1$in8eR(>0 zF>T-w$1lu)v8y@_5x=4*&km6MEIQcFZp+j`Fd#JxIct`aQkzYTPE*HssJz4yW_q>ir=!%Q`y$a{BemyCilH8+ye)rx#e~$n1 z_$u4`Uh@3>{=ZlK{pZhjUVD|h{LAt5JujY{p9w5$uX<5-)j$4P_U5EDy_>4f>{(>P zx4-A-d7DkQa}G&aCbQdl?%ezM=dbsdZN4NHm8Y)zdeJjO@!S93e_E5i9sd7o{>7`m z|Am#_$Pa(Gf6wgZlg=}~ygGAVvind_wXQrx}%iaHLJ^$kNUEzM$S?)D8?2?pRk)e2ts6jR@7HF0xp+dLocAZ^Y3{93MUgGb z0?WVd4tuM6Dt6+JJ+5Mrvx02&D&&r#yPe)RJ(T(KWDc8PlUHxAKiGR( zXxbHl7s1-k!e%>%_`EvT7ck}3j<8)G0cH-F>tuosD|+8EdapjZcHdE?!gkP@r{BQ4LbWUtif&I0J;~EQRJrdH_x~sWCL@X+0 zb&1H5mil|L$#bhLt@RR_rX3GZo$4nxcYjpEhE~h-ysc87Y&<@$d+~AKp_en+{(o+& z+B`!^^YPTCSL-UIWVT7K{d}_jQh40Y&7zwpKL|dRH?{xw_2>V*7)7jA-@R_Ck&7(2 zuqJ(O*q&qH9bymi1unGIeCr9CWtVFpb8(+()06{2UiAy#|0*%>`+LT2dkjZVh2O4? zwv!psyB1}*EB|U}c)lifna}RGW@j!eynnYmIeJIpraz)j{WteIc$|_9xtT5Ebor(5 z+lR3sH&(pu4HH>%*R4P$`|X*!$a={g*CQ`1ZQCjnFk$`7GuNvQuXtmdbN%6dpGPl4 z4^`Ooom!#$($?4`IQ|bivvK9~3r>rk#)yeVeK70cKGvsE`CQ}7zPh`MZ1ykLKlv+Y z>*1)#vI(k|-OM5rIOAHFoz_1;zCLkh{(=+o$6EueMIHoC`KWcVR-`31MvOn>;lbMvnk$7zc1(9 zUObuo?mz0*goHTcLRf4*N5lJBe&dn_q6FJ^ZPrWjo-iCCdOv-e6LE* z(^HQws~u#eS2-L?2d14tM*11 z>P06T&g;LjC6+HC6&FSIh zUBB8nLEX;-`pO&9_xzDOIz!C%-o_JKn^jjG5su>6mQb_qyYID4wrjTg zcl-ONPT8~Z+RJu-oi%Iqq9*HPZoU+=Soq(8(4R+{5+m{?clRGJpZV$klsEgI&3@B ze9D)mBe$!USK7T_cjWPF+vMjH_n6KR4|;ra@4Sni-+JcF|Ee!+(Ae+duzvlMuusnn z&P~0$v1XRdv-jJ6ZJfsQYeUVHx>bKpO+OlKwXQy+)oK35h7_0TmY_@CG2Bl}*3G@X zG00GF(Ui~oEM79dcW-#k`Ox6hJJV#@U#7>3jRLG*-MFlLULeli%gy+G_=Wz-pYXceYSZJwY+ZvXY0l(FHF=wZi%a2 zJ89yf2X9iJmkYCgHrnNNB$Vgl`Jg=~e%NfktiMz4yi&h_$!a;xErRzlZFU?z6?5v9 zUFAI~`K${{+DW}>DZF+I9%?ap-IWu66%}b>A39}gQKsJZm8+61OQK}lCI7PA7v*X- z<6U%U?T@F~Ut`|~@J#XKD%IR`+HrETve#3~ui>*&4;6{;bn(=2-FfH4D#mx)`wI_U zTs6gbSHgv_Q`W~m693%Q8sNAj;v|>C>;LIGe^d9`9ouE4YY_0qDy&4x;@a!mFL)h% zQe)?_O)nB#oyxdLWY*=GJ&}T;E3e&jE?w}3$__R0bY+Em==a-u9QqLCATsvp| zsfXaMoxPVrl=-4J?|6@ClvG9jzUt`cocxvb>6UMcUoUtP=e@yohx}rZQ&U}K?OyYg z&C8fw{@3=e+s^m}w$3+$vz69N&^CXhJKc+UDX-YwmHZP;KP7&jYL|JKX=z!`_NV8f z+iup1ygnSRQLyAo$rzF0(WYVhjXV0M?0xpvCk zSdpijUYwh9Bx2U(|Fw<`8m~X_JzYIDrmsbKg!ZJ2B;+#s?`5!)qFIBY(As zo?H=NHUHK2goo01@_4LNL!uVG$qRfw`6^%Ovcr+}b2k+*xLR-vEeV;vDf;};iW&Ce z3x$8rWA^&VntJuG{ny}?a{o*kzbh`-_%@6?{=)?Wmx6dPEpNtk-|LT7?+uzQc3ZD< z&VkuXxo0OF)l|Nx-?qT@g-J!YWVWo`Wjo*Wh0f7Ia?GpdUfShZne^)ETkk@{_$6oJ z4AQa(q4T)b!HZw~X+ z850i0aVJl#{t}^a?ZE4cJo=u|kEZ;N)zu2!FCw+Xb$-pQX}sRgHG~t-^jv)z^fxXv zZnDv@YwDY3ryMQ2ymZ&4ADkbfa%PsC-=Dp(v-D_0*V#`Bi#j?OS-PJr3EWe)uWcf; zjB1CCpq^gcRdG%8FYEQzn{5|5`8Z>N@Kx#UkB-W0JrM3%XDDQNGW_xEi2R^h#a$^S z8~egfX|S$!`uVBN#{VJf$FK`C{KG}uw6`l2#T1&>PENe^b;9+>Q(sQKtZ{1Lsp(n^ zSZ^td#op)HKJR4o@ztDrMf{(8ebk?Sw`Bb+9Sg^2Gx%k8>-g;a){?!^z5ax;mfg~l z^|e=P)qaad#P2?J+~)vGom!*pul3c>c11NTHOp$P^QdCmI(^c?mFus??C8Ij)^&$V zm&^NlO84}=kF)f@t~qmL8hPE{^X{`W_L#o))pO|xyI1wt-~dqj9$_*~+`CO9Eo;lt90{}rD8WjOjn zl`B6|a5$= zoD3Fdl5w^Y(Y|xhP2dy9%E?O$OzU3Oe9eCPsUk{m!=h>pshgV_1m5PZsNKGMlbQ2J zMepytyuY4u-443AE_IU7vzRvjFvmBIhd*ZA)IFJI$`B>i!K~I(d}>+EQ$Yn*%_Fx< zMeZ$G+^4!L%3oc3e&^-VMAf;$d*oVwc$;sZw5%R9^mrhbY0LaC>|8~GYZ?obj9Ym>jsqV3|K7^iI$MK8^IqJdc|i+)t;3 zE{)+W{~GO>x_C|Q6jwzZZp8+XATC*vx2fGPBEFkBS%}a+llSETyUD4w5NWv4`C z%y_KgoIHK6j#K2y^>w>AuB`XoGfU)`#+SY&fvXo@I9$3@O+EL~>hsr?^g7Me@4Vl1 z`lwjbQpe&`HyFM>nH^(Qez|yJ`jr%e+o_4yjk{&O)rvL8z83Fx`q|C-$BD^i`=sT^ z+TNV9SlMb&wM6vf7Hz4sN6oU%J>tK|%lUbIOw*=aqHK@rZY=8QdmH?5k8z{A?A~Bw zu}?W0>RyXI4@p1Pufugy`NJCnz9Tn}rY?|;%op3Z_r*qmW#^dYxNj4D6irrDjD;@OD_~I*kuHsQ1B&Y33%2?&?XgOR`f%Z>1khejE|IVg0{e)-abh$&I&f zT#wjts>yTB(OX|OYr3fB_hFzoUfea@kaz9l9Fw_iVvk?gP1~O-GwIZF z*OE=kuE)4O{uzCl^{Mpb)WEFSTb@kK_TAa9VWBc#Lk{k6*CjxZD?2<;f5KAj~At95%XUUJIz zH8XvF`H<^U@z1?yW^6vBbhWa(yFxeZ&88pW+!b3*7m7)DB^VuD#r;M6(~^bRTiwgA38fXE(>pGjQlhDR_@`C0jEZDXdzoMEgePvh!Zrug ze%tBx*M9njTa zi&$KB`mr6+Nav5jE%F7c@7rlL{s+wDR zb&t;Rt;#=^*DR6_Z=Mt);xgCtQ`Tb>l?X8|Y0X6@0oR{YY9%t&h6$VR7h*aYwI_r{ zB!*+}veOrw7tZ<0SgNC1pxSq6k4E;q_@GD2>>^IZyX9WY=8X4ae7fB6y^X%-3>Z-18 zpIsG)JRA=tb8fVb-PW0LswjHx!^#_%>asR|nea`CYvt82r883mg5ykADPCJxHQ|0# z!{X4-rMJ@Ag`qPTvW%J@n_HK9Z~K!NSvO^QO6@W$-#&wH=iB$WPI`6!T2FI!?#}nq z#8pHp=ENGld%yWBoAWh^MM6=s*XOP6e#SfHcF+mWZH_E_*Co^a-}%)RO+2`LpFv;j zf+f{S1-G3lHTkt?6?+s~xo`NNY1DP<&5l%Iu4kHIuS|bk5xn&W*3zA+(+Y7h# zP7XVDG`H5`oYwXiZ&hV(OrE{AE=_||-mdrYBQwo^&(2h)oSn;BSvu?Z-icdVFJ;_t zEIbqDw^_6Hx7nY@hV1g=bDYi3qrTtRSUTeI+aR z{k9$E@*5v~3tKNYb^ev@X6M}=-I}ztaZyy>qvtXEwbxz0cRDBV>zOd06AQMy_3Zt1 zE^yDHKG&BYCRDaOy3v*#WO0SRV$~v_s3$e2?IQ1${5zyQCC$URvN5S{VT}h<>PeN) zGY&^;7VO`2bjqbqHi}!VUWlnv6BJS#~_nU3(^KTIcqD`0?Y!=jNtt2OFEkw!-=6 zcr7ySe~^wluEYU4ORXZ9X;!kC!GXy>UR=*|s^il7UK~sLy0$Ih#I%iP78qts5S(9S z@@(&y_sKmnSJG>a8Z7mbF1?<==|#s+<4+p72c@>3ygF_562+(6#dh?3eylBaIP-N( zuJ7u?)+Z%d*Ue2Dou@2G@7}GtdC`Bp-4V-E_~cs|eqEMWlA+Dc882b(*(aUa`n34} zr}z2mKRjD{bJ3csE3DuCRSLf-%O(&Ny67)E*TPS0XFKxiDgIUaoG6w2^62EL?NcTd z{lBCeX}9|D^aT}d*=n`^j=iUvCg$Dwy-UP??*Dn``NGaPvpqC^^`Ug#uZ2(gdS{62 z)zFaGBkJ@on=_b^H{;3%*Y85tA3Zt#YRPixr9W1chb=!dw>9j?+*caccn%f$rJjCe zalw71L9?Uj3JKYYIcqnl-rZp|;YewmWAAdQQ>M?^uI!I_Co7}kCbRNh*O`<>*Ka(Y z)%@FyId0pwYcJn(Jvsk@KcqzHLzSjWD*s%^l;|#xiI2U`2u}Onzr!v5!i0W-3CFH{ z`nB}MtB_x^Y=?JnT&{aB)UrzXLPA(qzUKMTdRdY2`$&fD5A{xNYXv+4{z)rf^_-4jixn5O+vP2~Fh=F{Is#3#GT`jGuQRn42LfD7-uPo6Iy085G`Ci8A#>H#2fAvMU z=}K9wpL|NZ|E1GE|HmD?wPE4Sw{8A0CicW!om};1cIn(^&KeG;E#bB?U-Qd3{tIk+ zIiKaSP@8+V(!J{3;>otZIf7N6C}-pa@JSud?wNgWb&1})P7Tfko{D`Bg2PND-fb{o zcdS2|-6Y0r_@BT0aahKsX|XK#F21onCHC<}4fAOW&eHHb$DeNTyMDq}+Sj^t+k#aBAr=!-Vf%>Sj=oj=Yvn||p>oPF8Ae{JpFU&?i8H^L zb4>TVfBeM#o^ozo7Y{|A%Coq$QFhw1%#a|tqw{WlF8=mM;@13s9Ks^Y=dPGCzy0A~ z=QZ9_tdH2p07 z?AITwr;?5f*<{OKv!MiCsIN z(`cN|v;6O?(pZ@|G3L!%4pbkvyQ#ya&?h$iwDe8o?@Xma+ztVG&(AmYRLWKMJ(=rp zo42FcYsX>Re=WaGPo7cH^?OdWU8;Vlt?~6Kr#lzUJ0G?0f(y6EKD+lj+oNWz+^N1e zN^E_Gg5-VA3SDvIDRJk1>W?0m)a<#)RMe)IWH3u-cce)RIK!_HM=JI|lF zzdUNjq0iSd`{N@bq7J^Eua>}M@8j_Ku!eh*-0tV|zZhkS+h45DsYv>l>w{dyc4UB z8srI|j+u5p`%CG?iV0IKE*1BBe4m)S_6En%(|?{T3woUQ3S4%|IaucVbd}sXW1+y4 zJxpO;Z`1TTu6G6Pyjz#HKWOg@{aufq@Lu~nrCWhV?_Bdc?f-3irle~JTdWa}&%1Kk zkt_P>{lyJaukQTz`S(SIqpQLmlmswjyY_{>()l6x{rp15?BY1)ZMWBL4s~LZzs~aW z=E*<$g&~uzp8A^#32ScOujPM^vvt+-q8IM-J^gO3U3|{FKqGbQqvZ=8OQg9!OtxC~ z`sgd|bwTHqw3(ipc!d9Q{e9fQr*{dT$nQ1J?=PR?&wQj$Ey$Ja{%=+7&8PnQhE+Bm zT^VzJ%Hlg~zX$F}S$DQ@c}N)FQjeNbu5WE+TSfl7T2j)#T;r7JqXiOd%p%XWubr3_ z0;(4c8p8zxen%{})w*?c^Xhe5)3PpaWwO^}S2C-e7{lPzFqOY)$%c6s^LpR=S6|es zU0N1e5p>Ee-cxE}g#Nq3+6QM`v370|IzQ`z@xi>y>)gEyzcTJvw7RsN=f(M{Vau~F z^kvy+t($uE5Xbi;7pptHgtdDa9%Vh<>{RRje_`XEsO-0o*G~OV|7enb?pLwISuw|K zm3t;?@A~AlGuTp-FY?sUVAB;UR%^DHvSpOBozZ!AF=^SceXpb5s2%-Za%xiKr|#}6 zk9IWg6MXncGo@5%>*a;3?+dK*2spM=GWA-MelGXo-}@RKC#hfSVGJq?zx=^b_{Ue4 zEzcj{l}%0%x$tSm24_W`hxuX>)ru>mH-%>k{d!gLY0+f&u6Mfj_P&c}pHR*`F)2Db zOl`4XnAOQ!?%Gc_vrg3AW?*qiFSmS8x6l{mC%(6}wghgHFFYN|yXjP%!pm!QotfS3 zR$k5LHgqdUvYLfi_}<$YJfUIE)c5}WAOHFtUs@56QU2@V;mh0ay(yV%51npxkgIO{ zk{jgW{{6uxKc()QGQP9zw))SPoI2I&*pBMm$4*U2U79OabF`r-@b;sG)m@G!`ab^j z47>c~2a9T&ez{}qHTBE(Wq~*N0*$8sexh@6`u|18k7h;H+DQNOjC7Y=Qt{8YYEDwm zshv~B&KpgdYW>nj^6Ytu{#~ao&GtOV_w=9QvE(_YlWryzYCMkHnY>S4nfb74>9y@? z&G$^cOkJJx^}x)hRcd>#C)n;%IsU2C?6$&<<6A9@=B_AMa^_ZY^!=@8FSF?zl%A5Y z4L4kn=5es1rI72o&-C+C0;^|-Pk%peM~2^p>t(J|cywpMD-s=JKibR~^4z+W#ZEUP`CI!>hh7jyGw=(JeX|9j8*)U8_+z%ef?HVb=-U zz!eJ4Z<874iv05OpZ1qoOwq)U?c|!j{+|stYCcOz3eswr=iixf{7m(!(rd=cT1C6v zdk;q}(SGU`chK*gy_)mRr2^M@mU)D;rrIsu^lnK)df(F4N#*r5U8iQh7K)CY+-m#t z?YAh4-a?*xO=|UZhYUKcimb#M-&Y1cVl9*}Hd}bnc=EA%Ma=T=7l>JibZ_6fK&Vna z{N+xM%omlDl_I;@f;5i=>wWralV6dx#NdBe2e(D?-LF2+j2dQmp6axj`T1<*%|+k6 z-j|rXdbnkq)r&`kx!XkYB^x}$R{mbYI_Ji&%WeiUQ{VK=Et{wlFXOdE?5w_a?MmLjVtCqF08*E&=r1a?$f1-8Df6- zKQV{fiG(vNUUk2w^K0(gofBf`-m?AMl^6anFm08YPZ#G~#(AGqJC%-bI{b2t$*rmH z@9vJt7dpS9&pSdt^(^o4w0jj<{9KxsP8yosIN9dLYw`H1#Qx*urbp~WR-AZw>hkv2 znW@i1PiGr$En3;XsA}VZt(NB_5}Ci9S6Yx+3f8>F4Wf&c6=K{(8uR zY4M(bpnKjPJEj=48F}i=SXDEPi#@e;Rm|z<-Epl&St^Ua9IMrNkoaHx-QS=I-be1$ z$?|cW;c5)DnrWAOC@Adys@b0u#C>d!71S;{;~$Y@^Yr@l+Zf_gxd$Ecl*jaX@Nz=T@DC&-ds@Isce{Qem5Eq|Ck6Ni_jsx4(0AJdQr`Tj~4S zejPPSan2WO&)j!!nIhGny>(B^hM-CM5j!Nm+x2z_>fPU}%T>AZp!JfyOJcIJzhs>< zp14o{>9sjq{0@ij>{@)+S)u-4p0`7HfkW7v6nAR&OxGHpM{+)a@bUy3s zi$dM3OV95(d#~nh`z_|jMZZ)u*;G$Y_}C^k=aHq=w>YW(?7J_8v?nT_+F|l9^j)B1 z+a0HeSJW?mH*AYdNL`iZFSdJq>=}K=e+ecW@h_(DubIdtBFW8VulaOVP)61p--CP= z;VU<;^(f_*XWQ}f56kvjlQt^&JMCz>WOvpwDNvFrVJBa=(v#RqsrlY!iwh4iY2V;= z{&?l`>peDGHQw}B?CQE}RsX2<*TkK5tg5cZy=3ykPFY$rFV=W9y*q1LXwtC&O;JOC z$5WrOGKzezXWU-)B2Vu7m7sauQ$&-yGgS7h78 z$-Ixn-#%R1%5!UVOk?myBPni8kHXnAjxzt5sQqh`UVLf2rNO-q z_TBPj=B8^E($|J-4gf9W*;i1yF@hozD;^$Vu%+|?R3&*e|Yx-T>1 zvkZ-oo!es_`|7Omk{dLjDj{h?nIQM8WO36u9)Lnd(b*n@&Gi#p4%~?|} zeG0jA{L-$t(m;J_%+u4$jn(le{(?We|!MB-nlM7s$R$Xs8w&C zow|Bp?l0k|U0jS|H)FVWxgA#Lyw+6|)48H?&xx&_^Is_+b(mlBdyRze@pUm#R!cUm zF075s(cJU2Xj4x}=gaSM|0fu;`PiPjE_veAq&RMg9laMXS@Uw3zPMBy8(g>ZZN|o~ z7sr{NifO-_uCrG9x|qO`md_`JB(;C7T@dOo%+`8qc2cYKgI9MaPJPn#$tz*jyY8@A zUe6b2NAJk0Z#&rKmt0ZfxUg_FgB|$T7;%;>8B4EiE($u-dP8D$@9m8@JhjcQ9!jh2 z56kC|u-)(aLN(R@&g&k|PeSsZMc1d@+BjuZQPBKl|GuqRd4;ic593v@pI>aPC;pu( z;P`ggo~0V1k$#VlGcR=UjGh`V@ZIz9(YZ2h8Bh1$VNvrwWpnDK^3!;ki3$o+Kdo8f z+LIlhRDHISDjVZOSu>a3i#PkCK=^1g{~yzF0@zVpbY0*y#!1CEa0ze{(`-Z7(3 z<)yjc1%~H8xr5B#-8{W?U+I2Njs5#iMXqD`|6}vvCZo4sm$jxuEKpi;^8~N5<()Oo zVLAUz8{@qk-nptC$=#^oeEX@!6~UfY@{3n#JXm-AgV4dxyRE-STuv=aQ7lt&t4f#J zAJr>|?hK4x=R?2ah5O+K~7eNp+5+5IW(%q`2h7H|KllW=$MG=n*|%1ce+ zgXT%Ji@v+%<>7QqwA%k&L3!n-D(8aO_m}&=#@o)bJAD~?&7IEz7l-N?{cxRtqrDsN zC}sOBXZ@A=XVpHBl}?u?$XYRtXID5$;P`>Dek|Qw}i_BNW_>Um^x|4GZ3&PlFUD$m9Al|Mc)$HJ)Qr0CRFCp=v| zo}|TuWzQ6v&+Mg8_9b%D%lz)2e$Sl#mgEYz*0JYqIHq*7NBii$KYMhhUpo0}UGb+g zTaH})I{Dj4=au#odN@_rPucwG!4&bG8nEuW&VG@&PAuGnX-yO)e7#7_wF*l8xAZ};b7*ZGM(lea8* z{4%n-*!!pbp^laEPYZrNJ?bty?fduoHaqS;#_M}dy!iCms^Z5-WTeT-uN}{_;ZV+!HJPK&c2@Bzj(8% z)b&SKqaxac|GKVUW&Y`FqOd{Zd-Vm^Lux0uWNw;qt>5yOaPG_1Zmw0bFSkDtjOa>@ z3@N|5zdqgJZHpaqckY)IDfJcSeUsaFtS!jW_b|^BUiPI_$9~<$wr$QD?KkRHf8dkv zci1&weEaeeg`+FRw`B) zPRUE^a(7l_Rgns36O%eQ->`GjM1L^=DI#yKjpQz$aAjN-5-8* zUy4~7UH9r)d)Mb%r`L(buJ$#(F=#5r`cZHCz&oWStK>b>-=TOB7ucB zK0m&`;l1x6^_X|lZWr-JY}Ig2Qj@*E_|3$s7mNqpEmy=|PKk+5aygqnu|upeb3t!H zui2*^_ZL`1wTk8ax>T2?Df@NmDR=G_SK`)fu(>FAHT3ANZ?Efqt@(Ro%X^96#{#Ey z*LD9fZWR~P+T^66pR+jrexhtpw&DwoQ!~8^e+M@yypqNb;kO#w=dVPS!BZhlIK`O)`6;S);Tw?I3(9T(}>uUyUlwFoAo7) zy$_bF{5cCfyW*c3<1cBEDXZtM2@Z@3V_)9$(S)t1u{dbnx}^FQYaO>t6-YiBvrd)u z(>&J|K?SSN+a&B%ZLNAUIr2{FTKg%VqPZgvzY4owwYW-Zz0&K+Pb=j6D__m#e{)jj zeNgc><(ZfEZ~GV&q8@MZQs?DbubZ1*Ki<>)@!hvjyyv=D)wB$>scWhW6D5pVunz zUERZfYBsm&wCi(xPQCkAAoJZ&pC@2Owr*BY%zQP?`=?%({5$Z+KXRgnf2t!RgUi-h@Uw0Wag_a8`ev${$s6nqA^sj+BRKTS@!2C$w|xQ z9>3Y?(=BxB<&yW2d%s64J8c&k*JvU)d<%-{(D3n%?R6dvD>m zelBp9Gw(;E1*|>6_g1crnfCly=g+(TlKjlh($qDR4L!3Xblr}*=~C76RUgTNW|dD_M_TjOSN5ONtN6-)Pl+?rl;fh^HK`q^w7i&YYO_9wfB&a)P@?~QN&dS1Vdj0$ z+V#&(<9~7X?EP}hhtq?)PJPlkAE2jdA~wr-MQ?TBbZt-DCq}mWKG-A#PVoEr_}=0x z{=A`C2A5K^6dt{jWS*{=O$)BZ|3taQSJLZ zZvwNY_{+_|)=!F&eE3r2yPo|*ArD8zgZ~Azfi&34+S_~wl}_W#gam|vqj zd4_*jLgei4KXk(%73*wXea5t7{^Lb5hyNNVMfJbQHs3`%Z_b(L?>=qW;Ng|K(_8C3_w=Qjr_nKyk3Un_q4vsHel@;sq8FU&j^eEs?Q`iH51TOJn+u79?(;cCfA7cSL` zFM7iLzxz4&*f+i~3w><*?dX)_oo_nrr+Vv!f7SCip?h`Hz5oAq$oFx)Oy@8={nmGn z*L&UEi#ZFwzY2P=(j+KDNx&t~VfWUK$FJnXa?_iNU3+*Zie-PY`?UG|Z#~D2HtHGP z99uUBF`RI2X}XoLciZxqM~UF^OVISieqV>jpZI=@dUsm%7dL!XF@5L9y-%h5LPc$_ zp^Ny_>DzQB`RKmhZJ;;N$NNkfE8ec&vRAk$eqOWAi@3c8RhRZInDcpk z{Gs~)v&4A5-q{kNBFj7b(-b|s9eI}3Pb5*TiBp>X&4?WGk9b2JZ2 zi=WnR<|*t7n3Zg{~Xvx^J;xOF6c4sg9+;R^8)#kS(&+5^(!kITL6l)tg5UgO%o)vbWz zf@v{Q-5}a zwnpt;b#U>W>eYe4hnE~Y5u~?gW%V?_J%2v&r(UnSWc@8+($wv2r=nygm=Vx_RO?-?&@~^#NHo% z*Pe^KnWb9N<92iDhqwa)Uo*v-A5?t%Ha~)4sxJ2|2i}{j!`7@i^EfN$)v~_|TZ<|k zlxuexEiL%D^5BP#BHQq1bwM_~i%%ENYd^~NP_wk-e6yHFI=9-FjQ+~DlJk)H+4n*j zMjPczUM2ROw%&Ttc8bBKOBI*)T`vvWb~(%M>4 zX7E+95hW-y_-T=qADGhcxoVIcy4Y4$iCRm{)R9u)L)? zuVRk=iPs*#Z>#ERUfTNqom!OZs@&-lR$P<2z@B33{HS0_eN1rO5o?X=jR_70%hGIF zYp0qn`{lXTM?SgrQ;+LXnH#(X-a1Qfys2yxXglh+A>e+Ab-Zu$~TPAe--(}bnWGImd#HiOm=gWE;X5< zbmh(izsZX8d3TtLs*Hj)UnwD#oG~egGCihL%mzmlx zA9`?=d_5U;VJFA@m+tHp`LlW^efqSg?$b4+gxDF+bbGdJHYr|ue-6{P>X}UY&eolg z6>IXlc`sxC@!P`5zf6u@XS%`}cH78o#be!-_vak_J0o@F>WWWACi8tg_lmu{_{%kU zs>#d~_OoNep9_3WKlW%x+0^KYW2dFEGZa5$9Qvc`8yFzR_RTm>$H2nz;<_EN$K<<@ z3g^sQJazjqInR@EhrN5gP5Kvhqf^}I7-zD$??RLG3p3)2+w?x0zn#0vAbs9pp~Pc$ zvvz0Zm#JmPEO0$7{Vu(zs8s6ek<;t`O;j=ow$b-cn!P%sd!%p1g(cGG{-ZAG&9X?0W~B-;>rK-KkuBra@iX zR$kok`pGrbM{T-(u32}P>47bGkN6bdVwIB%vZokMYuGa-{oAQ0_FnFf!p~`+iww9T zvbSVWT|}$?{O^fIiLV)cq<#-Bex!G26YJ!oi=%eE`?R{q=DdRE*2iD(JddlFSr$M4 z@bvZWYxX?dx#HX*ws&819P4^ER;F#0P0csq`FuR`$Dfjfy7MvHG_GrH`N$G*##^8J zp|V;6ll{bods$m^qiPn_U;0?`;<8+Y`cmhMl`j`uvexA1nRK}HqUuV;cME^7G&Snq z{M@a7dTYwIGf86Gni5uDeR9^Naz(u@f8=ZR)wz=C-#RWY<4G2)ExmAA#!@fY^(%AG zw9^v|$|n@g>#5%>&$#E&RS9ERNoyIwS=ZRU%+=Xo{U}tOEoFs$?$)cnuYOwoY>u0< zy=kE8vQXtJPq&M^eph{ZHRHC%tmk{~Mk${7E%v?US*$k8j;_TQ|LA&0t?j(HpiuFt z_Wv(T?&WJzR@UylI%7&Ro6lsst_;0Xah2zade>Zj_4UlsW}UsyBfcMVP~l~IdTHyL zJ=d~s?q)nxr?X-Dl)n?*lvz#loF9D;oUqzYpH;Ky_>#-hRLyzM8n2rZ6kv7hvHQy@ zx*;VtQ32wj9^oPp*1QlB*@CdZm^j z#Q5j9o~=J2wXZQLW?g-m$&sH{%@yBn{V<&uz_>~Or~2dA8TSu+{a!xbP<@qDx#oiE z4?(rv6YBLRY5RR>ZJx!Flc_T8_a#@E_n&P{K0Qx#vwi8hNxSpfvJ2%g%ll3r1a8AN!GgN+dJ8Bt+3>Jcl`Kqo9tgEef)u^G9Iki zyZh<-nA`R-+_^2*{BJVN4|9F`Xjm@1=FjoT8aq0!XSAwUe_r^tGfXjFeyM|!$4pZx z_vwX+{ZkDuExCBt;G1V;%bWFL>sN;6Ui|4X)9<^??KIh`32uMC+WuxccJ;T$il@)? zA6(0CGw@i~A{xc9_?_UTmHYRJP11g!{kB?I@x)(S?Yn^sY?U3(Fx9e@o)Y7la_f)R zqh7V2c0Pwh91l&&-mIwdm-Y8SUdafx*F2mz-@R9#Y9pbq@FsB2ryZ_;w>cH|Sn+o( zw>rP`=KRlA$4%6mcf57mubL|)FqE#oYEA~kkSF;72lKCiYj94!+q} zzW7j7WXksrtC#Mo9$nM=$}8>OYs^2^)4w!5zFX1WkbR%2pZ59m`SU(iOjc~c2f-mKs1 zmW8uj=hWZ1dT2`d+mLma_k79OBXjx@=<4cxPY0_R>O3m_5|dn*JV5c+?iU$Ivp)Tl ze)-~QXa_Ufqb2u0KA38Ml;P(o%bkMLvp-%jIpVlVYKC-W_R0Ayzdvy;%noT=A)x2h z8g8_+(Bs;}U(=t~7X7ai{445nZk^_%`LcU|Ox&ST_wu{zk?t>E-(M>gl|4{8tJM4Y zdfXBH<)^nM&5Jp(dQR4hqkp4LT-r6S|IzY2kAy=!ot{6ceHi?FbIp&k&y736nB+k# z*&4%zI&%BAF)y_5d^_vce6PbUL7QqqWK4Y{ZMGIh?%5$O)g+@Uv}@0&kiHpgFI`kk z-Y$<(jBDEyA7nFCU4QZ;&yEELx88XfyJf#tbkC9b(ya@QJb%8!?OtSvzLs;Gr^3RP zbu3RO9``L>e{9#2FHZGwJAag{eb;)b=x$uxv_$HQTS{8Gq+| zZ+x|5-M9R!Jfi-`wH}{amLMb}$R zvp>7~lefN|S&?Y((?53)%P-V-b$;UTH|g%G;+a8-cdBUOGxJM3I^x#}T(9H*EPi=c*tVd!UE3D=Ehsq?4_aIF;4H_A z+QU5`q7NU@Sg|9pgKhP{_{(W`h05lrdsmt?Tyj_?lrr^Z-u)ArTR*OUaj7dMKJt6f zpZsm_g}#Z1*W8~zU1EChBm>83^YvRJ&SmSwML)lOta_z@T{_eL84gwETlT-mZoaoW zI$AOG{`Xh!XSCmv`xo0%@u%cV)RfCN|3s^5J1il&JmgdU(~^CW`(Hm@-Bn^?Yc(aMrl z{Kwt+UG}F71v?&D z)C4f?diaT@X!HHw3!c`sC+(ek=(nuaV;xX*9e}n2K+B?$*!w0k9JJH?;X2km;A{4bAbzcQotp8DgvpBX_<^Fclo3c^0%uXG`a z|4B~z+xb%-*qh8``(5Dg=KC#YUx@!7=hc7KuMeC1xAgsu&3n(q?E!C*`w+#nK2)h* z``+5m_p4)`?khc;{rX9T+J}pr5fA@fd_UoII_`t4KD=X@_0}(A+x@)~dI$7X0`g6q z>k|Zj>ASpJ0}Yc0?Hm=BkN6WmyFwEccy~5__Iuw0T<^c{V?K8ud-y_)MhbDC2kjgY z5C1yfsF?`bQUp4F01_Hl$piKi9p285(7b+<<=;Wjsb}o>W5Qu`DOe1LTlAomCCfDA z?jLKRyI$|T(>gsD$1w;0DwRC%?(-mAIOE?dp1Jdhu)l$`#)Rptn{ChS-Vb~3wN9I| zOMY#G`~sWXhYfvpoxPAT;~e`ASv@De16=v`T=;_uD$CGVw_MQDXZ!C0mz}Q*lmgNP z8>ZZ~6=SuSaljpP>Y4j4X+6khYODbQ7d)_AaKh?$j9z#BR?GEWE1!Rt{mb2mvg++m zj5Yp!R0IXFVqPgC%p%A9QOV*+jisr@(;^=jxP?q z_k8=Y{pgC|i4%hnr=nn6y!Knt6nV>^v0U%BU)uHG<6vzsQ3({3gAVMUec<+u-v7I2 z?)nBzXYlC7&Dh`2AbM{H1OWbW=)AFchg;7W6jWv-14-%Nv zcRE_3{F&*WJ?F3ezL0grS++Z$UHAtFDE>Ig52h01vWjq~_QQ%ffmPcBpWNE_``6kD zm#UkWerNOxtB6m3vUvZzhS*vEtDc>^NKA+|3w=0uSN_Yf9T92;%?+aW%n$t7Kzt%P zu9ndH{rEn6y}88e;bppa_&1w`JkAp#8|(QRm8)~*4hhPy{aR(4@!uD=vC^P%zW;+T z{@==Zmx810i{74JKQq{*vETc_bge!8ISKnuvtR33<-B;_-``?#yvM%BtY+NF_ITI2 zbNh=dUOmxv(k+Pn8MN;9#BYuDTwdD++5fKh(CPnlYtPh;&xF=@)|Xy#j6CZ2Kcu}X zWg+LO%1Hm0=|AVrKU=rd!qrZNGtuwfJ~wlP#U-|V67N3$u6}K|bW_Ze`F?votjzva z{Z4d#37lIJl9#Q>Rlh!_H=juISPuDx(0`9 zD*q3(PMP@+WS-+Zwf3GU_bg<|rw{tmopZWHFpJD#gC`@txgj_}E+c}39hVkp3mA5~TTPO%h z)DOy)7ir5bZ~qyU1Lu_&zMvF^y0l{y=JrZ63Yc2iXY``dW$_aN_}RLXp__c^?ZZ4 z{IbNIt`nKuKMLBE3gk+Bz14eRXPE!G=s-Q&a&24tpQTmTOcuTIshS!iOr*uIJxfk!RW#7_m;r=3Tdh0~lZsA>X%U1F(wU1bT zXwp7yy+5aZGk-N_zx5?%&%WSeTnG8*#1t_^CrT~PyrAU&uTLUs-{&V;_Oahe_!KC; z&g$yUb$1u~<=(2h^+@T$zC1JSM|m@NRs?Omkh68Azq(2Hz6~9+`!(J^U;g~UtNzCp zkN)WF*Qh@>+2kd&lK-c72S4k)@8&+u{=)s)<_$I`hf{9sezE@4cb#uPe%e-t%56Ni z>%La}HOITFKIiT3`<}i0AlKg#*@H9QmCoKcp&6;@IPl*4!3O8L%@Ia%_YB@$yD{g$ zjhM%u;?^IZv0nG%an~EU*B(}y@gI*e?s03@sNUI8^3_4NWcOYJwfoQ0k6l{Jo)TZ5 z@1r^Me$6kDvafkFda9;Ozi)i(!tJOX`=#T~NUjrmoi3A7vp2aeIQf&3^R)N8$CZl= zpNa2|QujIbw|nFN@5{ai{dt=v`R{kB)I0fq4t8II&TO~b{`6<%pG_Qxe+zzI9Hu&1 zDtKk?kJp8w|9(8)H(_?D($D2!9~|IidbNG&f_Gm38{TNI)t(6=Jr#OH7e(&AzoHen)fl++P^=`KrzQ6LGY~t{(zhAXC@TB*ox7$xT zGT(oG)J#Xkz`fJTZKg)+;x&82H42||yj?oyZ_A_2Yf`2PMSEQo-4v^7`o2oTH8JCpzlHX! z=ihoE|LN0*vvdN?9<9`vc__}kv-{FFZmwEBH`TWt99y#@17p&;BGz77!m~kfwsd3h zoI5KcbswcXy*KfH&!2Y>qOQ4$a8ArCQ5!X_}>QV)H`bS+B%AqnPz3_rw3jrtFIRq z|8m46g+SOht+sos>E8X^;q|+vge>-M%zq09{W_s1?{I$Iwjz0-`E}L2R z@0X0qzc)%>)~wFcc=-Iz<@R>NZuWaM8s%Hr?2sFPAHH+Qd^=$^Z{Gq5x3rt`E$tJZ zL@Q=&eEgY5)q*>=znnj@;o-5!2{tVo-*Rcks4Q4`a*>~;^d74#k$X;6)a?H+Gw<2y z3rTMxr`GSWS}P&=Q|R*yS?-L@^QZJ%o=&T_H2=A;WWWBm#Qogy|9=TdU3r^#BvCP`FGWtvoFu&;nftbpW$8WOHM1w>dSxr&hOG-c>iOe7U-y0N_XdecDQY-iK)mnjVMnO z-bW>M-H$#A9!+b095my!mBro{bH%3J@SU<_iuZpJcdm=G8(FqW1r`0*`LEn7CU##V zYPZJA(EKmEmTyv2=V#JdovmN}Sku;1bmwxws&|@sTB~o^E?zR# z$kFTRjVBW`yTZM!{#OMppMJixaB|Vwlf{lv&Zp`GPjw#q-L1s>bnCl|AI?nL?YOw^ z!M|X$DOZE-PJ5NyWe?mNHz{~skdgOIUDhux&($MSwAxcS?y&`|d+jJw zEU(cAt|ZGm_S=#Psuk$Rpg=g~yrx!*qwmx1YyL0;MZ%YmKh1|;e zc&^gHvG3|vwJi}pEEsr}u^J4mV?e|G!zy|8?8MythJ2W=vMu{o6YIUEaFvcWLj^{uSTiIukf&D;EPN z+sU%+&3Ep7y`ki^@DO*%)pfGbu`@JluO(b7UZZ{MbL2Oc#rYfGrSSeb=f(H9XX{+k ztmDR7>k{`Bmae_*yZF#Mxl(??1?n~zYv%OH2k2~gCzgHCGOW@)$bQ4Fu)^%6Urncb zw{Bgu`p=4r4L*n7$-U3%_;UZ>-VfG`^M&tAUb9&D`T8ZfrMoQut~Ry0$u7~;>F7D% zn&Y6n`j^U^=VsMPw8cbE;5S|K=3U;DYnp{0YHjWO12`ho&A+Cve-t&fP*;G1g{jd& z0YW{PtGMB6v9QWphE|{0?&oY$AFLLHma6`3Vg11LYY(%p=Gw?*;u3SK+_JV>N6J2Y z$<;kycgu2-dbq_`-Eua3ke7F1G z>)&18ZN5|N_k%6G;_jsFlA2J5=CaJWWZDu^wje!na$KqDpJ2Hqh9`NA*2IY?Pq}Fo zz4P9Zn4j{gPN`nm+Uh&!ywGs0%)MFhcGuIXPs2WktgqZ_V_v_cyoI6U-oMC1a}(yc z$OMH?S3hif@b(?2fAcqGCR>%sSEv8(oAuv#R*-D){XPHYHaV}^o?US6eCyq?WwRHm zXdF!nKlqNTJ9_e&H zy+y@=WsZs8Jj>MO?dGVwNi~X^Fn#{^$*fbJ78huo&$g@F5iT}aJYt*q-&q@f#K(p2 zNQhq8yjjrV#2o*pQ;*&VYuRpFZkMqA+N_`4m$%Ldna*-A*NjuRMP!$My>@P?>iOTL zo8&I+D{geC+8=fDvfb~6SF25*rmw%g@KLkg^V-5)lIyv42V2JE2fsg%-+1ixqw6Vm zwAXH*dgI2rRU3BKtZO#d?Yw&%$DUs8`9k-Tr@zjdpvG~D|L^iQs?Vive*bB9D{6*2 z7bvMbn63C=*OF4Vy#>PO<{bO8?Di|Z9**F5pKh%@x97~&i1OFV{29x?)}M;``PgQc zQ^GB`2X|85-BO+s7kr&p>i4d@dZHUjjPI#WImVW1wAI&FUn3)Ny>D#Qp9ztrYrNAg zRo+sHI6lvcb5mwv(N$hmHpTt}H~&m2bdKDWw&cr`%p*pV8fM;S>=C*CcS~AQ>7vtl z%j#_Mr%Ypy+N5yenAD-{(xsms6mINNP>DO};m}Tz67`{w7UL&4zlZ z#TgA-yWd@X$~bpjT*~8LX{rZT-u`-MYjst6PS%Td&wj&7r$UA^*EO`>bd_HCIyqJB zOmTLF+)}v>&cVUfGfZ;}IIsOWJi#FMZlu%ZC+}DL?JF}ou=zBXzgp@{*VK=~$oWa( zgSSG$j%{-$3$`ykaQFBNCA(JU zPZy`$tFudORJ(p-;T`_KfLE*ko_3a8xWM6e(EN&ocA@O8w(%_sbCcx*v%lX=7j;VE zD%qc4vC{ee8}G=#dyTK__2F*zJUH+&F zT$=1RW;!#?V4{~~Tg`&~A1&Axu^&Si^> zU!QU^{$yDk7@qxJlTGXM@7Xs0mc6d}d-n8|wY&c7-cG$068BkheWciYn_aBa!w*c1uzDoApm^_r|T2 zn=Y%k*Osk&(%VbVE=Tx$eD}q<&z)ZM9t-K_y#L;p@gScf^J@;Lj@jOc zz00@mnf9tnyuTJz-%-EAtzy2XLbl@J?HVjgG$;)oxUSHkFk|PY zwzj{Hg(to?pLDZQJNxhGk;M!l7cEXLu>9OwdA>4?@yFJP>((*N{*@2%CLI44Y@xOG zN?M+F*BR+kb8cj4te9)m&v$97_^Y7ifWr5)zB(-Hbg5*{{_JcW?DtQj~EINekVs;jp`8nWk^<__F2r8|7UbCyl+57(VTDao_$_ z{ph6kY}dc9V0O6v?EUJfR2g{x2$DygPVTe&(z7q4Qeh z8blnN6c1f)a@#YpO`V1RI?vXD*TQOWur9+u6}Ua;@e zhEtn^_n5w%dFrg!XEryhe(5mItiK-9FCRPkS^dTRuy67Icb?B%(0-i1KXPt>?^>%r zqI)b>TKt-C|8Tp)pE{jGx;y0q46m3R$-csH^rj2*;Rn&W&u=n|`CYnjwWeya)Fa80 z0-oo0e9!TE{aEPVK?ASm-EZm?%q_kbeO;k?W$JVG)^^?RQT+4eI7F|W{)+Nb!7FFH``*@i zv7`3z>C4NVZ=c!}(C1t09Qi$`x=>?woo--W-3$q-uDQ}ba=HFQCDg{Z9ksG4urUz1 zy!^T3+oP%fw0ZXK;@bH)?Aw`ptNORE;ZB~ETv#XqPJa3Q4zpIpE=du5+8r+Bq`f$3 z#oC;l&K#Hi9c>RxSO1){SEGBT*uvU;i+hJZ|Lh3tIwp1AVDhUE*V#^3nn+BYef{tc z|K^MAEDFb%!VkQaD(F{?H`2QKGIGX-raRXKLM3N##qw{?HPW)#5w%=U%TD*fPhY`R zHMuc`y9HiaD+jE39aT18D`2v5hR?AtRUh>O7Kcf9m6Qk3)t~sAggws!o zPI8gg(#tyWgf%Xu`uCx1m&}VhVuH8dy6|YmKFRf0w!OM`H{!n8)2&l(RV`@fpBuJe zqi3!~+-CW#TS0H8ru1@55d6hAvqs%#jyKC&zeVjO8eF-GMb?Jl$?N4mh4R(xUt#!U za?R6U&-uJvgLO~Dw@z}J6ef~fPt0pSF25!_byFv zj`hRWD;@4^5z~JvCEkCu72KTrXT~J3nyaYNF7iW^UlgB+$@)p(p7oy5n8amqFXqg# zn-;RmPjf7cHb`PS=~_{Dbbpk~V+GFZW+#hoX`h?;XV*TX+WAY0j_F)y?|gXX$32eh z)Rd{7*E_F;_L?tGsBH@T`gZR+iL;!|eAjy>#k5xi%}=?IX?{+MpE3VZ*4@wEOLb#8 zXSw@p``wG0DbKm1Sz)gA)s(pIoC6t`RsW=P&6YRHaJ;KD?FU2nM^(A2&rc=a{k3tr zhR|EDw|eKh<3D{#Sn%}ynmxzX`>3z6^ErE}>Ee;5#l^`Sy?Zw7IiD9N6j7$@9}>3v zVCml`vD^Ju@-OUMu-Gf-Q|bB&t2&g7&Qd4I^5C~bwe-XFCad$-P1Y_x^iSi*w12^k zU*@DQbp0m8y>VS!_mY>11$>5|W+wc+>i*$Q)!_}!jqg&{Y}oC(L&k}7WeDfrRR{h~ z++hFuY~lR^#>FLiPN}VTZCh5>I*SGF|9DKj!aeGsMtgd_N2y5o=C_S2maQ+{^C|J* z-=OnthZWyGv15Ar{A2O9qqAZkt}*$=y=R7`Q_Stk;^O&xobt@QTQ*;Q(l9Y zL*<`+mnXA4C_nkPjQQwQ!^By6yY}XoY^tsN+twd+BRA$1qgYU?Z86JPJN;{Ijz%k+ zqxD}_WEB54S$@BIO04^0!9Qs`rhkb{EEmp?Q9d>K-TjAev#hGm&6}SV`FJs#+3|hy z4i6n1U4jyp`E6&=lJw7+UCYdT`qJYoJ^4v)w`VR1nzF=kUnda(j|a z(5XpL8q4k;zImAEqg{0PlhTE0vCA1BO!#{L!p=|c&*-0Db9>_V=UJ1d-#uRHv!CPPs)?=N zznB?qu;sY6+~h%V;nCp4kI#=Q9@y=Bvbwras=u5&cmIjg>HEK(TIhT2^UNvfjvW7I*3>`WW?Oyb&S|ezcSRV? zWdGlt{^M-)1F>bZp1%F%#j6J}Ol+wjKbcB|=hEZ$q4*>E{FYkAMQ zk36r%%b1RDlb>JxR%5OH^}M*3_l2Hax|}o9v?5*B%uG}8LO}WCodtJFj|jaLTs=kq z$<>lOGxoHeUEP1Y7hF(*eF>^E%6lDTSHJq*|NW%zHzD)8!7bM!^ICcswoG;skUZt) zm^SYYzmDJxvrUS57lc(i1Ge8)y!J_Gp|OpO?wt6g28zyKg-qUj8<)2*?7E*U-}HbXy5Gr? z!9V2A8PQno{;)08ThBNP^8UW?VrmuJg-6k^W-i)ri#2_5(yeDl^iE}aKG)wZcJ2K( z!~6Sv1V3aith0V0Z)0{fkW22<54P;Ds(aM;y2U*@Y1jH~2fu~Z7CF&LqE;G9R$M=r zaN^&Jle72fEXj%dm8$%c|3{Fd&TrsmCq#hm&AQo z#v{M>u+qmh_C>EwX0rY$J7E{cwaal{Fqfr|#0~L2-rn@Y&#GMM+T!P{zA>KFd#ZG* z=~?lfH51N%T^w^r+qdiR{6>eJGxi@e{wsO5>U^o#lt<+mO8U(oCkFkDi(7s4_s{>v zZU3|RMXq}{zPQcv__EU}sZ-nL-m|s!ep_}JV-7b~*3|kbYo(lTSv-iJJ;$UZ za^cjUCs_`4hUHyL{Ha#|C;r;&t&@+OowN6Raf;W^9oIJI`puboW@U`p4a=rGcLGD6 zF7y9%{*Sr9E$5hOdzI_=cE6d%X*e}H&HVMr)=$TtuHS38`u$6xmDjm7@4tTj%Cpu_ zbk4SwN1j|zQY$fCRl++-UFSulNLEi%%=GUQj5EzMpZ+_d^ss3m!=JCy?*0W5Pgk3jPW@caW$dna{>b*Y{H;n3kL@D`bvpZN ze|KGw(hZvty7{I_YuAeh-(pVlT;IRtfraYkW6R8HMH#1m|G$U-5}Vk{#mj&5FJ=z* zIUAMv?>MI+-}N0&4&VJXeaY*sbL>`@9*yA^mdJaXH~(Mgoy(I$T~|#my5yO;vo7k| z$;gc{d;jk9o7XWJ>?wHmi|1fuy}*2D+BX5G*NL9fuSBnH5d74qt`W3u_szcr0TKU{ z_8cwR-ewRZcQs7S+*4{lZ|%!}3)>gH%04xzjYsP4y=4XVZK6hJ`t*+UuI%N#IeSH> z?7AD34Gw!n%BJ(b$UQZ|d)wo!F2x)7&&O!zx1)F|IO^0 zS*mg0Kb1Y2v~^*@&P6fau1ViN+SkiTIR4Z-AXeZKedn-7!VNvck^^sdI=#qRwYmS* z3qIM&+eA*^x}9Eo#PuGN;z%n2+D z>qyf1Ao^ao^h?laUCZhf}Ky?*_L3N7$xRJ|tCxyk2d7x#qntX`ddM9e93 z{mK_d_M7bAKEd+LhigXR7gBybI%z7Nu$xb{|KzD924QbXO_dVQ2G8KjT@Z77$@Kf2 zUv(~Ql~QUidTPjjT3fLuwmk64qa$CxwlRH}HSgAvspU(`+Z=wbjmZw%vtBr)>-_&G zx6ExAb2-fJYVDbt@?_QH7Z0X0&bu>9$ojYLv+c}fZZYR|U7iUX%yZP<7wTJgp1`~9Sf8j)lo@e&{fK|1&dvE3EKd5T*eA&dXZkpTO&JA01 zZ6>uaU;TY_)AF!tozK@YzO9MNov->})tpak0%wC;9&>#? zZ|Xf+!g_CflFc4NW$dHY)9g{^H~06G0e|@p>_0FB6tYlJ{#k+;I+HtgZ`LJ>2up2VZTND zHOsoTh!Q>VyfqsHy}U21Q;eA@H22|#lo^Shwl=-25nD`l{(ZJ%M%w4qPdzu9Z7JAT zG4YB*tEZ{sgT1<9<*j?Yw|LuYNZ40DNLV@V(J9l(TT8{Wg|7d;JjHma-}=9MH>Zdm zT&x>oHLYi5jbM`Rk)$P4FP3F=)WrU(E|r;g$SK)TV4wOu$yXr}+wZ8oo?w3c+vCIS zi(j*^oBQ*$M*aHd-K!x*Ff3E;mtnf_FM7?Ep35r>Hm9_imwffTm3h-P{=uxOiMk6< z&yHw*?N!b9dCf-kcV8F3`_uQ5E%95OY5V)TN1g9Z)Gs;nF!0?>&!@Ls1vh*AvREG5 z?R(%QbGz|RJ<=(GU-)%>(_=H9pUpfoJ_XIR`94QynZLYunQDpiz5Dmt zXLHn_FPHvQ?{}+s-|-Wtr^HVAk@-A-*X6$Sae)%>KcKKs+D0oT^bkO_$j+Ve7dyVlOS?T5Yh{WN!OIC!jK^0}bZu8l9h8ZsYT zyP7r5XI{M1%;~Hj^&ju6&1JacW-4B4e%Gz{Yt_!{)=6hB$nCwhwX{EiJ?mzSceKii zsQ+dQ!cO-dukY2H`TuE3;o6?VZ;HMyi|*Y%`RgwKnHR-axy{3GcWv07@p|^5?^&TC zf5PsnDn%`^{HZ6vb-wUuBYWTD9?$1B@!u|bUh~{tvo30?>DsQ|DYM+Krbrj5{rjqZ zRVV9e!RynXV;d^YF5WTQ#k_W|$m=$5&lUpi-w#CPkD6)_y=CarD=zx?a){Phdv z&vh*l_~o9n_po)dWNF{QqsA|tZgzFGZs!#WGjq{D;=F!q^%urA1+FYL(`Nt4T?PBr z9}7<`j&hsB3dRJ*Pt5l`Qlb3&@nhNCi<_*^CtQm;&^3|6 zW?`%9>HVIpAz2giU;JBfZ^s>LS*>Sg$2;ffJ+Qhn>08_VrRVqW(Y?whS5#QAN00C1 zvfUR?{wuDZ{$Y2{_G30v%fh-Q9c$lVAGeT~Yj5=t+4m35p8h*E?7R1)Rp&V_E^#_C z_v0=7uE*61Y(ItXt*-j3D5t_(KJ|0(^@wi$z`7q|C->dFWyZTBy*b< z_sq)5C+*Z|wpff_*sr!Ww(4xsU#e6c84iaO9V_RpP`oc87ju0_z4~X(p9xzu-pC0$|IWLzU!-h# zP^ACl(AJL}=IWofI{h}C7b8_6T^YP{%_S>-(FME9)*c9cx?@V$wp@+i=o!mi|M0B- zoD=`~`iuwa@887Ch}ZPl<<#0VNpe|Gqg1>1wG%A)7pKkTN;BD@n|pZmnnd44z5RvU ztG&4L=3Fz{DCK_r+tgQ&48YA0SZnUVTxEs*&yRg@xbRjx<7al}a*>%T_gxl#>H1(< z+OjCtRxmbX8QB#<_})bES7=*L*tgd6ZuJR6ZiRl;(Qi3{p^wJkG8)ube5a= z-N!BAs`$c3T(;{^+}%BG&Ou$}=`*iBU>4$PKBK>;FngW6*n!RM{cFbt8mdzs^eP-F{jXab z^(ebjp!krp=YwBetCxM5r};hV(%16&XPXWM1o!{?w2M1C^Y+m_U~Ew zwEHoi6V-IiX)m~&^~_?Ys`=9`rSooi@vx~I7EGFOebeoTJEy9TMv9Bo{mc)GUHe)m zxl$|V=|*?exE9+}>bD;)>-k|Pb=>>R>iN?Je(%^4x_U*;{@0KG<}LWr%NTbxY7@AFQn zx$vsCIy`z={#-4eYhL!Pr{-VNe%<+NF5fpBTqV>nGVOQ~eQ-umn2%G6gnm}*w3Cb3 zoDx|N8*QDoxzcQ|_5Ww@*tZ+ZU1rcC@OaZPCAq7gDt4Xwr5y8ku5Zz?x33>^J+W-qt-XXZ%0lS;iLQGQ{^gW$(4pAY1^ zbH9HzdA?;^;kC^2gb8N_Zd~rqYd5>np}fzl@QC4jw&!<3pQL+LeJ$J65bq=0eDdE( zo!gi8Z<_h-%0Jcb6Ab#qcBoG&d-;w1rHX5RCC#Tnwd<`wbW=h7Q4OPdJqTW@BP2T8l&ngTS9;m^`>_fG4)`Hys87TTPR z`yiHLA@?%5b+UBJ&dn#MY!=?6K&X22#m^T~|Lnb# zeQDO-cCG~zHeNW9{UR^6I5}s+H^n3K_8qcV>peZ_-{UE@N2cuM_|5TMs?B`XvJb9N zcHx&IB{yWAYdP?tW-IurM*K~QTarx{ zm7%9HpR*pi5oOj?wk?nKLeYn9QxrwM)D3e))vvs`s}}3%78_ znVanrdmqu(U+MnFZIWO|t?#_;H`3RXNo?T}=?i{Px#{ndz|LJE9UBUNr`RsLbZ~0= zxzin=!KG_mGK-LWM`dN>o<;3zoGg3)%-QwX^7$4O2~DxY#Xl(LU%hbXMl6$6x*V z;%DF6tPe`>Bwa46I=N{qe<}4k_g>>HjgzkG&7Z^)->yuU>3A;Tbk?(a$JZ{)EXB^) zOgHhA+$yWq!FYb}qo==*2))``#8as02lp5M=XfBkOZB$HS79eeEK4jG<5Zn?8_YsaC7Ceg{B7v=Az@BSze-W^d@e6Qh; zY5dxoC+!k8^3LwKakYC*cW9N+o3N;LX_-P5#cv-zTv+tHqN4nJqr_8#n{fW@^=oUzYInBIsGsK>ckhq)ICtB9 zU23)XTCYhTjRjLC)Kz)0Pu>0V;e>y@OH(7(UlUmNqBT`_gZb502CH7&{`S+ddfEBl zUu%LIR$iBXYBE9H;L5HeiT88nPd@!y(&;_hDVAqB4}ZlmR;0fC-01->d*Q{(ehwzz znC|)=XE$*+y?vgZ;gyj$)vLV1&g+>Z$J+P#?Vb|9|E&42dv43>@ZIcpZ@6p}y`9mr zQCq|zFlDWg=Z?!qg!Z(v+kY3-iZknQ)~&t&Rw?KCPRlLEK6Bn|D{npKB6O$mpNwNo z|HAd+qEfeu1aBYmvH#@9b2+&>_>s|VX355%l^?g?%Sqi{zW9x#`RjiF(??qB8`Y+L zy5{@cVVR!ioOkUX`UTe5CkWneiC@yLeYv2d{D!`UO#Y$Qvlq+!YB1Psz3241-wD&^ z-B+Lfp1CHEq=Q~sc2mLy$CEWAb?eyOZ-1D|C+mh~AJ!=bl z()=aI*R4DBJbY3UkM2iv4e>o2+E;(>v){D+SBt^##9k(Y+}q+3R|0{6^pB?&b+Gs)5)*@%P{(qxKnr{Z=TlF ziKo|9?sL4zAST5m746~lF{yo#tM1WC`=>9TNAj4GeMO6~M} zx7GFHuZh7afm(Z3#%y(PTV!yz^vkw2-M>%XHsofgbDlK);N`1Uri%am=&&r{&Awp# z+u#3Y-6x)l6*(TfyLjFneB5f`#c}1|`~T1X|5d!dVcN}O3$NLlKGx=SVBH>7teI1% zo7p=%=7m9n>Jgb8=1-jJe_)eU*E~> zt;fEC3-*07jL)Sc_12&5jN2dh;LNUcuj0u*0`rP312jFuJ%85Dkj(g+9~ThfRe0x; zvUvTKPt!f0?8)%@EaM~e{7sfoPD}1(=kC0pDM}|>Jj2db$w#i6eA@Qg&S3 zzWR70YHQT`Ys(Lmd)I#RX7h{6-cnMR%DcVqiE2yHx$6f*glG5c>EH2e@u4kx7r%Yp zCKp}$mSeqwk<9ltiHlpS=DC;Gt4@A&}5Qv95XWX<*2;mqAVuXe3TJvr^G@%zo! zq$}nul)D|}`?PvO+a|$%?QAzfPOo~_{}}8!c*i@Qy>XJ-6vlZk!Z;FM{-5;D@5_Fs z&`j4CH;scnUbt8kzwl_->6&nkOj}{q)dt#4Pp&XUH8+U(as2aOR{XN{gIB7ms;myb z$H9_Eu^Yt=pY(lPwsdCkFY)~93l}bJ+x5$DOL5l!m-`MDo&Gof(vkGv3>lf{ogCaqFj5H~EjZ=*&ry?aMnjzkbn~2XzbINN?HqTkq$*eY;=Pz1*;W(Y(jz z1-IH-I&+`iG(BdtN2%p+E>COM-;O4pcc;H!nH9f&BG>=R^K`ZztmXe&)oY`rYxC#p z3{$~J*(d9EIa`)!@PUKpN4V01sGrw)@)ggtTRwktde_UCmsYCxm-TO)TfFJ>y4D^4 zPFy!MdDHbd<<80X0{z>#*2UhB4G!ZtICpknu-CDgQ+i(la{j!vEZ+W_)EcwhAYfEx3wSNZ?V*<^51#8 zd$O9wm&#olN~PJ7g513G&xv!yPvC!R9ri0*?C)Wgd;8UFF1|v3@4mkFV13#BYb^!8URTbn{qy7DYMYe5 zZ_3>Nf-8XUpWMhjh1|a}wE?oUu3)?EXF6EMApGa?`$Q6kHRn)a2D~z3^|^ z&!ETNRttXkrhc5Gm}0xmuKaMRtlqr%^;{cH|C#o7vux6ND;M56g?}G(DoK^_fpPBYu-cD-Y@7QH&yQlwM-rL}oeFPSY_0o;{ zbD!-uxqm1TT{ zL*fbIsC(8-4=?@MyMJLuJZ7+9Iu+U21EDNV4{AlH?T|q64YCqsn~)6qa8Hn<@q2Z> z^TmBQRA4bgzJZ}p_EWv!qla9#+Bb+FduA~w=A^`QrbhW5ha(^U9c*wfg?I_cA}q#0 zEPT)3c+6M#wb`qiNuMWeeWiHOw%%E3Q{Bzxw)gx>RUG5-DLyKG|l5{CzS6$F^xfB&Sm zNS1gf+lw|H^R?am+H~{NwCQg*ruBs=G&Jn)o3i`vF31D-~KiusH}%W=r#PF(xhm=r(! z8&Z}YyZQ6>^51`Ne}9~Z+h4c>qM*-VZCTyZ*>mcr9;p8QY0_Kg7k_;l`kjbLwn%3F zh!x1Vb0_6yxjv!Au$g5Qw>VA`=7_U`IGAZwIH2C$j*#E)w_gj zIf)2Pn38{zO#1r2b9UZL{pV(-R1myA_3bs^u=Q8_#2;%2RIr0ef7v}P8BRo}!2{>r z6LwdhJk|{(&7NJLRLkWz=dTZo(}Tap7yEZXSDz3OG51)R ze*d+by-uJ^`Ac5n***Nu&nACYlJRD_XP#j4X4@u%FLsUUesxNqoZk7s{VMUP+ud|qod?p1Pir{?Vt#6JwCr!3&r}^EMNE3U9m6iBfS6yIpg>*jC@)H|O2xt+vj24= zwaxC!Gm708|93sxqU`6n)9+88_Ktd-Joo><^`==IEca}gj^0VO&OT!w@AU8a@75aW z|4YyBsg_yP2#c-*&jk|B`eZBoT(bB+v+mydo2jRt8r^=kY0c%=X=i7zFBaMvyMEKr zthskhZbxpv{OgQa%KWwAr*n4RNGy3d#MX~Sofh^mk_jNy2TWvlovcLSV>X(PR zU%mRL8m$|CGi&qdTX*xW<=v~f{Os*bf9_M&Gnn^f9$&P<;eomHf|R{W=jLiI4O3&| z`=_s8%c-NDT6>atqPoD3Ucn!VOz(MJ4y1iQ^uKnSH_!Jdr75#}tFArzzg1=7{;2l} z7t$j)7asm!lp$Z7uUYOpQ^@`KWS3bM8jEk{q=ao;rjzkywQyHuzQUdOT<#;svOZ68 zEP9f=bLXXLZ_T1}zps?(oO@bE;Qf|Hoygs#lkfg161gk*-2%LMMnT|*9mkt(vvZi; zPn!1X=9OK}SW^0YkJ(KB*JsT*H|`BzZ@wvPbz$n;k9x0PCQY+l|Lx}Siw&i#rtR#! zmt)rc+?XYBZQA6bRjaSt-41Ghy)E}-_^rqJlm9&TzFD{X+_A@=*WUDRs*6?&jXPHM z{iogDH`}&kR!5wF8~pjIU1Z6*j1>nRs&oJT3$oFCdsSs|-tP6A%i_O%|D*VN^2du= zTQ?sQjaoR%zP^2T)5O3aL(6?%r8A~aTKHmj)3Fb_Pc;8q9oZH(-R{>mo@rUqk1Yg# z?B=kTcRl;L@v*HjMf>i%Og?-g$JqSJd3F9Gi@H;U z24;7oE%0%-5Y0KNI}gwB(Oo@te{WulH2`7Ju<2qs-vDJ56@dw)>m%Hf?ca7ke%L`gWt5P5nFRIr}$!(+j`7 z=HRXCyOg#>uNS-dxMJGZ_U&s5uUD3@H$A+y*sAW-v)gIk9wxtcIJs|HeAL3i;>o$; zk8`Y+`_}jEi#qVH>Sm$3yTh-O`EOZob^bl2{pZG%?Mt>Q)XjR6JL^qune+?QeV3)r z-G1X(_U3Pxmd1yAz)ny4NneD7Dt_*5};J<~>)%nm*Or znT2dhSigOB>fCi(o@gI=61h0%@bc${*WP^F9Je#w`t;{=|M&x6Ds9f*db7Oxt^A=) z|9AWLK4)rlc)-gt$M?z7lY0Z%Lh^*C7U%AmwXX2|@A=--QtjsJp8k2qxbS~`2SZK5 zjAb<(U(WU~V$%92%VzenHLqFk>ax-7WX24? z&+ywD8q1ms`*>NLo(NFSpx0sBiF3z-+c0Y`eDcSCnCJg_ntg{ zsB~W5uAB9C8dGdz4XzugJj=eebE4CY+EwK|lXc?Hes;<_8&-C^-O^$HDHY{pBiZ!s z(ygD@oIV_Aw&R+*+!skn-oF=Z&-5opR?alg-{2#hp z?aaREzkW~KG>hrY%_oYp*X3>Em!H*{82;`3t@nAG&)C`et-pJ!ZM*!YMDyjnWqZ~? zZ$Hixp&yiQa4L`8piA%FkyeKX&lMFG=NU;FyC0n6a$wGyxP)itXOzo4-22bqtm*NW z%+ItRf1R2BApVfa)P*Ny4jC8EEBu#XY=76tURH8;&&Q+2zZrhtJoE3z<9DJ*#U*DN zyjJHnPFwuDfBMe=t(nH>mS=k928(gIJTI|%Tz#k}_}s3YM|nSM=IR9RzI@*8@F|(7 zdmZ;dp%1Ff9+Ta>VY}wLdGg)+eEQdyUO)Bw)N5&- z-1%yob4s{vYt=s7D|~E~}a zg`)%5RYF2AYVcJlUr|JJix%0K;>v)18}{agMwQx)yYFKoPA8J7Rm z@7n`ay?0C1`OinLy?go{``;t^dhh=}zTa}+B>IiiO@k@30yiYo8$_qxy~ohc|4Cel zm1#d4)2DQivegn-9^amtANDE7d`mAh`lcDJkx3}E0TfW`x`@!h!5i)I^q5%rRv+#J7EG$O)ggUgIPu4hAg4`q3sQJeQV zneke4Ls(6$@4Ty%#kBHbG*7R5ua~j^J%$lJ;VK{sU-L0lf|1_-ptEv%08*P`DNXd-GVU* zZ`W?P-J2}0yUyzMHLkRypG%HKdG6#0h@BKFb$j88)O~W<=~3pfZIR+zSM1r4vLyHP zQ=81iyQk%ae@+p+lu^F9pY^bF?hnbol~qlR-vw9uh^5SA`}|V)&^tFXDc+6iQdF0& zv8M5sp6^EE4vokJ@nV4vi@6^At<0+3`0|eYUk< zLPPf3wMzY-PeqTvHfugvd;7Fi&-cT|d*h^{lb-y8C8(VuomcTHa6=D5i38{)Dz zvH!66lU06xm;L`AALo6QsM@onzhCtDMSGV61%_JTHP>Rz-|UUvidIUp3GbDwN|sgEibwL+sDTZ?;o8q51$hFcctpQyrh#w zJKIvfE9}lcB>zv1DN$t2`}dpdtWP;d|9lblX6p7x>8P!@COw+5uRJe*^F#59FS|Z{ znLRxur+!}kri*tCI8WR=^GEtlNqnA1E88h{#Si~@<9_U4((TvJwPNmLw-bjhZ8=%_ zY0il!E9a~_yf4V|hVU`f>UBSR{>Og$6Tj@!t~rbO&TD4hQVjn5Yimi}UY*Z2@3+=G zTY0VapU<5CE-W*+H)ra-S;yN}!}Gyx4_kkV{roi3o|eQ}|BkTj+rMgm&!Hc)-(H(E zyMBl1-bT&(6fy4&CAYT5RP?-@%JgKFVk=K>>m8#*yL+5iPiU|6{1dNoYWj;)YtNi( z&zV>4uPn3W-+Jv1J2TbP3v+i)zL>?SeAj2H%H`^9ZJzG(UskPi{n@t7G&;RiqiPOAcn-e)ns~zh(a2OOv8lU;JfWyn3R9@S5%CFK-Fk zb?)`A3a@K&Z!bF8<_pS&zv!%;^;pwQv10GCqdTPjo?LR7b?zrc1-(g3+eO0`ma+sl zH@kYSs@`(iuD4LMQ(#T!>J!m0uy&DhoyC2ApZJjLD zrFU0r@nrt}jL930?=gyfU?0)rk1x5qHtewd24@eib=tQ!crR4468Bnf|IgQ@w-FLa`KWnYlj;mwsCHR{wX@(bZLZqo!1fsNB%5>?ti+d#!p!vyA=) z7OjV~!s{MoA9|d%_mkuKyNBdYZBaVqWi`{EY_CoIU-4u@(A)qTz9py`Dm^9(?iSxc2SOLL77+XL@rnNa`z8Nw z-2b6>?p26m;Jv!Y<+U5MJth4AN@>nq^?v8CJpW@15>jUE%P-q=f7&V($^Ce>a@)!S zhvl6bcbfa%cd%Q=w_S@p^N#5K%bs(m+AMFEYJ1tZcJdmh{_kCeF&8$j)VY;A*hqzQKb0_*bj;WrY1pwj6 zrj^a@+Gf2b_g(r^|F6;#O;W$NNr-%UDsyYzuicu*_EyI{-^TiMho43Ea?_62zDCo2 z$~ucZKYVUqo5#oB5d-szsiA#kIFfJ>GLLRy0-LSg^HBUQs)%txjf{ zoxb0{bzxRq2b<$(JU(>)^__c%-_}<=c%W#>A$&1lpMbv61DPkgX0JbSXzyf}Q&MgB zO9iJm*POSERFb&f_50Os?N^@s_0RnGHH1k|vY#M!K>O*532Jk^H@ReP?$OJ-opaEX z^~d#Fi&igF`@THlsHQcV2pFY0Z5H2Onz@ANz-S z?`$$J?mYN6aKw{tb?Te3mNo1d^D>gZ&veiyQ z{`Td6A0Jy}KMvaGe!aYZ^QW+X++vqG^_~bWx?8*B_|nk6^K9jnx@(k#n2*V_d9Lv{ z`xkRh$zgSK@3bFzFNAGaFDtHB_{YZdp1bjj>F&<3jVhYUWNw!;Cx4M^oh!u?lFoMg zKTGRnzC$1RxRkF4^;#}&-&(<|=U95H$S>#Mmp2CCJsbO?^943--fp3?BT@U2QPQll zdqN)X`}`*Jma+P}z=)OKH#j8AtyNT*|M+dvUR&+e6=zmjeqFDl#_Mrx-Nvw;&*mux z!N%i0q;l-&c(VEwclNTR$FGbQxi9@E`$dN-Uh-n)rGVtl-NkzZ)_yKMTQk?sTv|co z`mfbK@0g!$jx>u;S{r3>c6NmS>Xci_XIr6>myZLvztIJJ$7yn>wD%ae( z63=6@H@WczB)v`gVW`S-S;G9V?zQ{6=l{=txrF2RUXI3c#0pM z`lPk>+Zy3=`ArN_OZ+RAHcyiMa;RwI3AG;+{O`%GJYXBqU3*->r&M|Noe1Inn)XWt z!qY!b5tmN_?C3 z)7E{Sxh{e?&F9b1bM?)Tf;)#dkhKmHyo^5!XV4e-+!KtcUq7#Yy6nEwiqGCy#^14IJ1;b~ zPVK4qac9#%kxSn`O|*P|=D^AqRlnZdKI7k~dRzPcq}sW{8biC&Y{&BzKJ*HDJig7lxMuE_yu*ht8?@Bs7@0k^u5a7~N#I5$qb$IirhUZkz{^lih9 zdDkQ6e_K;+`f~?+)W;c5%WWr_f4)1ZyJYdP2hKmDlU=NK$eigta$)L)7R!*LPp88S zG9d?^0uB2JI9hzmN5M!=b@9wI=!wh z_X*G3G{cH9^vtp&sI!B^+qP2U)g#jTMCQjVNSR9W+&V(U$VD1Y(n$Ij7}&sa}?lzevg*yXgJ zY7d{Ld{NxlZp~2;TpMNfoJXQMWzs=+*G>z6alW^wUb0%v=BVDzuq#C8^15@sYE)Uu zgcO*g*u@RATVjuiPCvh-Y&*|ys^9SGa1Yy^p9iy!O$^Q0cYNOoaq%Sp&V8KZ=k1&hWl@P?+EU zKsN0--Jw&A@m7fP6GYaZJiOWVyo zd7aPhB)bWjzpeJJ*~IPh=kbU0^67sp|DVjrOJ>~eq`0D4$kVdbqFs0EH8;tnypO-0 zDq&<+;{RzNwc<|lZP8uIHul=9bJjmzt79Ll?H6*OaFxcDvQuvmV~u+n8D94_nO>V~ zSaR>5t9JgLwjF7k;&v_Dw&3^bR|(oI7w3PNa-_*sW5I2g->XZk98avCe#AbXb1L)M z*@qNt>%HQp?BbAhH}VWVvB2}&pCetR{B!#lOtv3dYcg?bshujzgxAXtdCd!UFjbBF z{+PLDZ+{DGPzAf}>VmZ=cUdm!eJYpIec-F0zo&HAk?1>i+9$T04Q_e#&T!R2Ppz#^ zGRkk97OYlZ?sxH?)b(i`_tL)j{`#}6-j8F7>Jz30)zbHo`@@g)zboODZ26$T>7M?; zW6x8;EmgNRcQ86#+}+QySK2f4d*i>(uXiWd@=e?8`M`bejb)DwS9!Z?T{v|6Nb$9% zx$xE**ry=i>&ViN2hVsvuxvXwC^cc#LK(z(>?A( z$Cp39v-WR$byA^Nu8h6?$J#$Lr5SzY1AN>Z8nuJJbMBigxpBi=_rHhbJs;+KTh0%N z3%K}x+Ixqm?BAP;TR!(&e{+<7uwU*A)5GvXn{yoFYj^Co=iuU1|GH^;{*LR@k9e{< zd+F(KH|MO;z5Cg=Pwx$wR`e6?DypAd+^00=G&Lp4|lbGL~cC(Wp~5d zU!r=yYp++%UCFrZBJ;Np|MNBdd!F;l|Kcd=J#4Go6Q+0NZR70~AEqrk^reDL&i5X- zzx1rM{frXFW`B9cus%Keg>#|IvcIM4TsA$5{$-+OB3AkCr{5pD%MlM{-)K91w3O@Q z30@%ZleuI=vSI6&qTrtolh^%;G28bk+nQtgJl=(~g}obk7nj;OJ}&z?&t3D#j8l>i z+-?|mB#5YL%+EiVpSm%3$$O*9fW?2S+-84>HJ=%5V)i-O`O7q0d;4_rn(1xYE3Us_ zZh9+uf9apf=PbuRs5?zqnNhd=!`yezi_h?IUyYiT9Q0c&*T0=>_VV*LCB)C}-DkLc z=ItHRMC=b7*_oFh?{SXRYMOMnT{O9Gr#JIfkH!PvT@IYT^;fC6_y0?s z-h*+>`+|NwoBQLtr)DK0AO`SE^Ay)Ajb(2Gs&4I1NcEd1`}IkisLxcN`MIae@Bh3P&A8|B zckf4C!HG-cI~`6gDRr{*tnt6l9gyy_W|z?^g<~miwnwg+Yklg;W^K0L%dRBoGs(c*N%&H@n4(c^%KYo4mOC$fxt{)@zcoEiZjroKlPa7H^J-^*&ww?-`5Lk!`b! zt{uP1)>tEc{lS_!M)k*%TO4;k>;i4u2`y{O;D?$i%>gkEP|-EuF){@b^2a&P}>Nq<@L z%z~4p&W5Sxz0pkfoI~lGUB8`~Q7-fPU3_?RROXAbir>F5JU$z1ev-G=bnk&TlkEII z2NoWFSbEsb!L4rQ7Msm?^4525`=b`Qdy3C@UN6T@mi7kvSMN&9Q9pjYs42b6PspI+ zH=FBK#yvYEf4AQAOZ>ZW-JilW%QK>z+fJI9SoVnvr*4VeO>3n}Tr)U<-Ys)q7zHUpM?>+08zEi;2 z00xhF>u$`}d=q9+WiE4J+MHrO8=f5TyV!`ox#o#6E8<=I|xTMm57Ec0Z4`SX-*U}o%F z>wO2iYP%XjmqzW4TK1hQce?x%CI5dMu4{uGYKG_qH#*|LN1r-3Po?=djMxyXCv) zK(OXVb%7uAI6h1@+`r;Zh*sVGZ@qihI#`=$eE5E|(L0RwZ1_zN6T{wFMK7l8k1_3$ zvy+qP=GZ6s`m#x0z@*1_mWQp8)o*q5{v_eZDt)Y{Z3)-ev&%|%$W4_!zs}wBWviK; z!8!fP;`_quHGXgA_z~r6sW@4F`TnQ8eth@cpMJ})i6~mOUz){N?3lIWSspFj)7N-* zu`)~lVoICDlq068v$9C3`*&3NW+Tsz&D)k9eE;Zbs_op5G1HA^O%=}(V_)R-<<;%d zzqYZ>8{?Ee_k7ZRopUc={%K|B#^j5B0yYQsi-kSCmRw!LT`C?PW2?|%Z*FmZX1qYT zkC-;cInJD`!VIeQAE|3r{0&oM!hkUdTg+$s`)l^ z@XDOaFO8ReJ-2b2t^T53?sVNGt1Zgy46asYPoid=N&K-j;fH7WmXfb)etZ576j_sc z{6{6vW}$3>nH`zQ#X9zVOpWt98^R)@6kf)Krp?LwIh|wQ^NN@g%>owNH#w& zp6q2ZUxNF2rp1xJi6_q_KRHoyIV&c7b#+o>eu3+~7RQ%v$$MuVvM68Y_}(Tun=)f{uSKC)3c?O<`$F~hFC z@veXN`n3)dH8VUBZgytI97jF+|TuD((z?Y zZ4J&pW~wyi_;SP?^jx^?c~upoUec84dF!IO_g$!(%2~2=UD4c)8+u!V@u{&w6soi^UFyZD+6K=8fmtZM*)ZD_2!rQ*_bK zPA-X4OByUWvp%b-oz8f#dh5uykNN!v@=jLQC(18)v|!8myY8&jmD#g6-v9s8!4SRX zE_wY2Wt_Tv^>6bmQ$(t1pwix-W}f`|*JFyYcy%1*iGf|KEBseWg zi#2ag3)|0~e0BD=C}ph>-}L!EC*KNQYi$25+FxSX@&1pOCU4lL5%F+aa&EoTsnFA( zvh{_gpH9w}Krtg!z&t2^Jmi4IEsjEwWa=d3r)!6*YclP&xjo;O$)qUSnertvF)5F$2 ztYQ`)_f9*Mr*CamTXKGT_NDDBGa2u`yYq1SG#%eSjSHT^mT^JLPR)PP+E{jB!k0O6 zff8F@l@iyw!^JLU58u$9GGXhFU02LbMs%bMc59sb6<-+7kjR>M(V}| zOR)*+G9PTUP5hV}^IIC?H+FemR*l#CJk`tYQ?|@)uKAOtIIr(s!~E>$AF1-2273j+ z|D5;r&W$UrmUU-upIY%}pX7h7789?>-mhjYTw`|ZvZMUZ*+yH%Gg^<|RNLwA&Nc7Q z^gEUO`;yuH&z>tk7nH92X_I2%)4vKIPSyOZllqYyJtpPTjfsiP2}c$?dA${z zcBN;=63<1fCe1n9R;6y|(cxr&&TP5onDVWhPuo*1t;5~L-tjuUNPGQ5Z0A&tTa3)N zSMwcvmA}g5Z{ow{J=Gmw#F~H4;8(Q17VOVcqkAFt$K^i_33f-L72nHrPfXotbz5xy z)CsZHjZ=FP@F!F@fYJ*GUbA4~P{x2{MnI$NUabw;Aj|Ju?| zEk4&SOFszmpWO7x>gVen{%=YP6x&#vyK=04Tz0jru3?FI+BUg+>XM}$wMJ^O(r(8m z*lk_qVskTl+FIzwyj(+#aI0Ckspn-R+PQ% z6^GJskDx>d(M`-CvNlx72Ez*+i?E(6zI$x}~)$c8dJkpB;pIsJ8 z<+Ba4v3(@;i9e}wv%A5|uMA2yvcHcTetLd9=Ej>D*Ro!|%&f5!xwO;S_n7GtGoNN& zE{$CVcZ8&6vc>nPpZIfU=1Y~Ag-YqKtlfJ%xnC$OTeZb~qpH!Nt=BA#{BQPe_`3hP zsb=c5lZ%%APUZMjvji0MpmOfPX@Q11ooUNsUbx)J5L>MG?D^=cJ_xY0Vx|cqW z4NmPjJ;5$M?~>J#d5+)rchZ(o@%&IZ@pMl;S%j$sDz&Zx5_w_pQ5~UeA1u|Btz*PjJB;5w@;#j|wzjFXD-rpm+S!0!}F| z+r+e2dAn+A5EiUWO1veU!Cq=0wYRu&GeE4DNx4`M~?M!#C^l!3lf4=X- zf=_eqci-M4d++qWL(B)ZZb`LQ7Mgl|U265?C^@DFCeDqyTSK%wwxs_u^DCa7e!Xm7 z-R(-<_PyVE!d6U z$ws;V*RCTT4`*NRiavkXbA}%y*M8Z%T9&$+MG+#i_K5Gk{_M8?^V;j({Vi!0{wEhq zsgbBW9$?A-Jbm8u;>4&K=cR+z%t@X1`S$*oKPPhkTg&)BRVTqpw?lHlG>?-KUOgH2 zTA6QWOPhF2dZzgGy?}!LOwlbV*^{1sST{ptQnc`?Ig1$=YfnFXC~fyi?`c!I=4*LQ zzOV6b*N*w?-beIbo~Ao3D!An(7vq&(g@t8J25CFO?xaTN{OA4u+*83XdWN6h$=2l3 zZ-pNFICK5<(oP?f-FzevG3;m%_DwkNc+bpapM9S#Ze|+K7PB__b>1xNUhsn5^H-a) z1vi@Jv{im*5PyDQQ+o(k^ZJXPoeQ1(K1Uqm>&))@TD)!1s;RHq>~keFGnhXwVw?Qj zrDJYZ3rG6mIgfZYS?=Gv*PCbNBsq`B6zVUhW%(EZ-J~qbdi!|p=E~`l2b+xu4>Pm$1!c^Ow$5l77Pj4059;GyW+w|*MnlGO1 z5ipXuzV-8+r3yb@MWr3p-|=>z>ANqPn%CBcu3R|j+l52VPj0;zWqp$C*4OVh+O8;{ znq0TF>+_W3ifwgjCsux}uRfwSjnAO$<>$wjE5C)GTWa1FE%QX%2)KK5^9n&)%<=KOl0;$0bARrdT|;cV+#`qNHp{l=*Csm_)D zlYTsBjY+e~%taB^Y5ef!;1HV8QgL$bC+k;yd%uXs=J?et(bhT6&$K2T4Q{WVSM4O{ypMP3-PN18#@*X`CUBm-Ecw{1rg4uZul^HfJq6{MkL43{HUH!#uPK`6 zXZQZ|>^Z-C)wT0`>?dEfNPT)wtoZSnS1yx84xKx-!)TGvfB&Vr(`I&1DD$NSrw8=`;OhpIm=+O>_BBuXQ26GzHdhR8o5K|j|CUqpA{$d zq%GCb^T3|)3psnC^lC z-YUHlFYZ;}@qNx8Tb*m4B{U*(khj#FqJ*q#~A1HWwa0hff_y=pn1;>6H zOCPig)38T<3kgeE+=7e1;p`3<6eZ=GN@I;2`bOc41EM`kra4ylp<` zZ@dt2V{P^x$Nkf_>q5D`jvKt2blcJNfZ{)Gv3b>Id$NCDk*X18R?%d;@T67hsm|-r zBFD4Uwl{cRK3@1931xdU!4%-_`|>=5uyD| zey?N6f=2xpaqq&DRqs78+QZ*yX5otXMD&g=0HEoMKu zG}WQ*$iM2`dk@XRlB>#I9o!*vA|zcze0M`gx6fnMIODLW%J5_JDo@p1j}n9x988V+ zt`1g#Re6nz7AqQhz4yKPd};RSB@Iz*_qh05Z8MLa+O(tj-QA=~R~7tL9Fmp1Uwy8Z z@os~BxyPE7!E0JNx6HnKUu@%ce)G@IZ)h&Lac8bEcdG4TiLdKp`p#cJyeIC(!zWug z!f&@1J$;@Suqi72cXGK_`RCHe#P0&EH%02V?^qq=ptU^e#>vUc)mgbGc3+V8Ec9ay zjom$elU?auKFJ9pH$v{kzJG96@ZSpOxXEGPyjxE8bNrl??k=akr(h9x+=n%(cdi({ z6?Dl9Wl-zsGV%L)$}Hr9=kGa2>c1BsGA+~J+G}*q(I(Az`yaPY7XmJX?Rb>;TJhAD zxzPck{WrW{MxWY0aZ@JOG~V`;;?vid z?_H;~Yu)eFC;#sJSlpk#tY~`o&PC~ot#5RHUV5`UKH%TGM}cd8m^=(D59(OQ`H*#+ z#;G?U4^(P@bQD##rrlk#H)+?`qxB-(`EU96ywkg1x!Xu?SHuK+p9Q@)H=kZ_?`v~> zU+n6D$65R{&Y#+n&UfnJnd&&F_a2Y?ZRB>z1MX`&IAEU0y6?``!8Z zTke62GoQS=_b0+jhL!0)3uC2=u2_?aT;bdeNxCyWM_Xyf9bPi)pz);{n|+=xe<$@U z^mGAR<=fNWf3e-0SlpFeI(=h3bG=`x$&=UX?INUhW_D_7iKT7O)e z5x>~ze_+&-`MnOF-Up7SHd$|Lt1R9>)&I~D$@gzMxZRImEG_yOJx4-#wxS0wS9R&u z3EaJ(H>FzXOSbBr)vRN9uD9x#+=;D0HQ{<5m35qdw>{k$a>~cfGe&RI+?aLqrhGqr z|CQ~0zponFif41 zS1fjAU(}K{X1h$XA6wn|x^-5{pBF-f&C|XyIVLvm{02JR5{3A=Dp(GapdZcy4G*jJzJY+7fM)g|9X7wA=|ps z)2CNNZf43iz3%=;ep&pTvnx;XB|9{WuZ?c!_*on$9JOuFeM_eurduYwH#A&d;^;5` zRVP_!{*z;ZJFNFCPFXpxgDpeo-u9@!mB$v@=tO24*n6@0)EWO{W3m@#eEj`usKvqD zpFI*&pMK9>eJA0xPW(EV_G2Qg|I&0ye_O>I{*}CFf~5ERqQeK)uRF=xX`uKnV&B{6 z%RTy(PisteD$C4E=F__oT*8xCup?Gx#{8eDlXVUxHmLgxOi76D`Y&hRn}6b|X>pv? zHdod5N2k0Vn?vG70kpAW16$c72I2f>MS{2sU!TBYcG$z4|mWW-gNIf z(%z4!RmKbCoL#tk>B-&evY%Xix;1E@jZQ0>R5zfMy<&|xj@lVc%Ppb7yDPHP*%<5giKcDz(TGzy$s=a>U|K(|>qx3?~ zYu#^t{^b01WN+X+&E=e*PN~QSJu2U?=w~%U?uGO`{~4D&TBSAJw7+zi9Jx{}a*DHZ z;vWADuFR^-I}J=?ZGIMhH!7k?gFIWNxR-t)(AKby(CkFm9SIl0#6*`_BUtnbafHWp7+Y<;oHwjoqV~a z|5P8=$jwiC)5#k;;kp0)G%Fn^=_RkH@=Y+jzxnstg$v^BX4uz#&3~2u(Kc6>zrrBe zpw0idbKg(SlB<`3Y_Aq@tID3QP>jE+?;U9NwnF>+_IJ&^)lX!mZC@Hy(C2D-e$GA3 z^IJBk^9Uxr^)#IRth^|{q~6vp-QU2Qi{o_rBXfZtdK@R1qdxoYZlCf!`OX_T=aRD$ zANQ|2-p(;ymb-4U)+EbVtGKDvsy_u^SMV>LIpz7I!@BwzXXl=OSQQ=OpeMW0H#zX@ z)Xzt3&PzQi?KS>&;=ag?^$*-jS9&-5UN=mid^-L7>8{W6T@JR-x4&DexIp{Uk?5xR zFOEdME}WmQc1e&i{L1@jQ3AKO^UOc-8IGctANKiOlW`QzkzzFQ_&R|K*J22JjG!l=%pKK*n{ zTAx&|NyVZ6>yDpe+omcz$1e5HRmRz(vCHCP_v&kRXg5Lz3-)s|Rj+MIw41r*&rv&t zT)n$zcJ0`q^7Z#$k?GfVY+F1}?~U3?uigFPLgp8aUD=meD#*9}M#bS1O)rb=Ew=vg z5WNyn+_`jjMBhe^3I}bO>CblrNcn%RC@ts6S-9VGhs)t#5!`Rv{k312%O|=P?AE9> zmASik>niK~HJ5fr2`*_568%@X(BFGz=8~O;$1mM_5qWdD6w{-+F8{jb1H1hne02ZA zR`+P9pkB*XgZWB2s}*;=Q}nTq4b^QA(fOB|KOtW8-=c?I()&$kKQsJz`C7Klv&iL> zkE->)=PihwA;Rn@SM}5-jd#13(j%Me3lpC<9%*RW>D3fzINw&awdLa9<4X!IsPRSd zyFHyUqiJ=iIse+GpGRdl>wCXjG(=`}`o;+L6(pKJ+xD0SZtsWZ){P5(s@*v?W`}Uj9e$M>aXwlwnHgEPPiR$Q##MTE~>+;`MwO1}~HNABF zcCFogn>7UsZ}>L7uzStJ@t|uWsp71!)aMyV zw5x6Zr?t)R#`G&4-4z{QXTFpBf1>0~>Fb-D&m$(= zbM4i)rFYt|O3hvJBkO7uWB;jIkrLm1{Z*P7vv}5&aIVcbRCYVzl%0Q!f4M?@-hr#% zKeTXv-oIdJP5G{>cn9U1{fe{N-W{FwHY_NlqT!t2@*?|Im8mg%s#%_GPnghrOTayZL*Ad39R;Hm_>qeceg#AD7SGZKZ$8;+*w zcdF~>Rf(G04B@}-rs&^VXV}(VyQSvGk~NI`55BkgU#88!+?n-To7$}9&&{Hr8&*nN z+I{+wenzuTb+6^tfG>i(-H%OuAE)?R#@TW*m(|nVfsu!v%&R;&@6qAA6RbX!-0Nra zvRiy4c!p8=+D|*Vb&j7|oOxfT&XUEI^P@0FO*PA(vbpvmHu^JU+GLY*Hb>kOy0&_K z7>_5v;?5$WO@^N&4(-;y+*!GYx&Hlmws{H{bTnz>E^g;nZ%`)>K_ zK3_jwv+#h;x1C}S9T-?FG+ZZ6T9@9%pj2ZcXg6#2&TFid!W({Us=o7n?sfi2b&vo5 ztN(ZZ|NFC_7M+_Ebv@8^>AQ^do0GWKS?O(Fb8D^95~I~gUawak6n|TCX6i4C_$+~0 ztGc?Tw>fmbkKVWX@Y$)KEqdx!-^vOQelGRk`;$JCciM6P`USe;e_G#ATp7Le@`C8M zou@>bdG=jCcI45m#ealX`s~%pnp?ia?_bQGijBsM!Ul}OKjv~6XkJy=d{o6(t@Voi ziAf$c%g;~Pww3Lq;*5v8|E%nH`Xlr_D>KlsJ9WBF*b4nQ#+-52FP5ZSC|**7TpODQW(5mG7$s`|Ka7aWT*1yk7_YODPL%x^8H_bm>hQZpW$V zV%&nKw4;=E%3Lx#d4I9I`o9e?oGP~}M?Vezue13<^r5ngEEkwMP44+yA7favO|$og zK=?-$wcIn(tL?A#eH7)kFBSXnOGl~g=c7fN*SA>wFLjpU{iGmPSyXs!yI8`F5Cz{q zuObpocQ{5pl@(jGr9<+k@_ni483(=69(^v}v*^t3Pe(qxG27j1Z#t{CIg!!7a+7gm zznjCMN9$h6zh5ght<-M2+F#RGZRftqe0sNP?M=(x$(hV0x_!9|{5&>CeQp)|7<1v+ z3fs#OQE$T)mt0E|d8M}B`pWi2UgB?;x7^xPa8dPK%+Fd6Nsr$wA1dz-)T znDSkWSy?m9$aVG4&SNTq^I0CaXy~RCuHWdlYEzb-Y05pblzYoIP7E_p6`Ag^rES}d zf)me@k2zXBbN%eNx4rP2QH@glBaaPHJzIcT8YDj`Z_!l z_;b}RNS>SZ{H3ktvowRcqt$^QG(N5SAjN&m`gG*ks%wVVA3wbiqh0rU=~+L0*O}X6 z_db}n%exhuO>vNKjKzceK$AuX=>v7OB) zW8G&Lw5oOIHLqdxIAAT4^{2Y--Lew%oI4Ww**_jzevCdJa(+dHxoQ6LeZ{`g-bJ;S zWP;B->6F}=Vb)%@GJiV9?Ztkt=kkY%%rj>FwE6UmFL@3s^MWt(t?bpDm;Nd`&cW&}oXw3htLwT*H$LWyS z>7Q@xTUXXo=K3%t$?}?5MOqgB5tCEXH!t|TC;NEr^k;I@v)nswpJR#hcDQv-nB@rX zz4g~Eeoi;AnkD^eS<~wEXI>X)9bfk5g_Nh*vD%ZTlGb&*UoHQ6{?_fPhp8_koC?0) z%|3MI!+JC4s;PnI8LLC4FVmRg7VVUFHT^`^#y+!|kK-q1*(fZm*rJ~r<>DR z+52JF_gR-tt-m$5F(sqx%sXC=15>}PU1m0|EYK_1^cbV**XvvIO{U~ecy?Yk_3i$D zzw0Y>>w7LI=&3K`I`O|uErAJw?mIb5u0H#1k^SBB6^b_$?RclmFBX*Ze>Hi2k^0|> z-)1#d87kCU{Ru9Vzte40*!p7L>C28g)azXCF;7;iJ@mNxZdK;Y_*d`uo_bi~`#^;8 z-tC;GfXQE`U&-E@cuPflzkcR%Kh@XS5WCbqTow$NFZp=y^skNja*wAKUfQ^Ch5WtZ zuE8DQ`2Yd3*$)9H~Ui0RU3)?sItrx%l zJ3W2N3!cmACJ#0@IM~gTzWwG=P1?S#{%cq9N1*FU!rwZ@J#XRX`9X7+il9yGMc^qMfmiX@No6St$$XY%ZQ%!=j7~N zaWn0wFJ|wxbHAV5cjkS}Qqi#MU3r^7OrKrIn*KVtW&N-7nVuT!CpSNhKc%~AHFzhHZ-}scXp^%`yclzspg;1d&9Px&f|}#%*>YI zT+vr+^L6)$``MR6XC2=-Z&%ry=RfbOKR0$iIPZ&dV92b$R-aFw`j#@s{iXeH<9San z@AF#81H zW7cq9<>;}MVO}@pJm0-bD}U2gjl&{VPn7DWCl=3Nydm0miw8c6)wKX^U96@!Ev@o!eC|Jc;>GU%Suo!0w6U7aq|iVCynn>#+N4>g&746444g)!gnkKmNKZMZ`VEg%n+t0y#mFL!^% z;fvK)Y=U(xjNE(bSyGoLLX#*o^}`A{6z+#$ffav6c9y959$+zIod0mH=a0)!=VJFK z#Ks5PRRh*v4_+PTJv-OS)O)Z0KK9#h&9+K^4QZb|m$OEMNvxuNiu%JEEa?HwhYg&2 zq#N0s?sWSZ*Ur@oZjQO4^VP0GOsH)A&Z5hi5f5q|j@jRv-N1V9{a=h6-?`9Dv+{}_4oao)n4chj96cE1#!T;IR^|K}-}nBLES9%;E8 zB}kCMX+J~bTQ}|(npac#zF24W<(kiqn36BBe9Ogcw|#F-@L2mV*>r>1>(UvGxh7Kg z?~1%BGW6~a_1YUJp11!%_X8z}?`tBM-i9e})wyE(vu4fLI-zd;ea4L3d+z^aw5Y_9 zWE<~yAE+_%ig(*wQu^6lYJuxF+dDN@e(`c?FZ=E77MF&4ci&X`TWjuj{kr+e`?LE_K%WW&HnLUT5E{oH@^V`plcVf7h0AEjcJX zMRWOMf2idGjND~^?|i_Fy>4Fm(>b#+;t1lCKTIrAXVbE_-dg!_F6*Jr%Wmae z=S`>m&6;a&9bddRW|{u>?U`CrUw5rG-LlokA20dx<1x3 zbMx%~#{aQ?87E?|IJMyp=fN7@-0Y>51*@-l96r6;q{l)1-yV}#R@;}`r$x=p^Wx{Y z^?a|%o2~vTkGzp%e7`g(!)#Z7_X(HB_h>g>O`7*?b!pbti*3_>e*CGUYyS1h!#x*N zzl&*~yXQ73=6Ff@_S-jS^MtRnTwUEaU-jYj49n}Uzh24PF6`bUzvF6A;9aRU61U+KkHa@KKzTFzvpx=QiLF-ezgyJ zEZ0s)?s~lE?dsWnS&P+m6~EuD==-p{Z^Q0szyA8&Qeco%+%Qj<{pIDW3k>S}5-M%# zIQDC9y_9gl>4A+W|Kh+`3L0)Ed$rGJZB^hs_aSeK(}TTF&%C|(!p_!bx@Mx(pGB8_ zx?gIXz0R?m{cwrp3*|3FBdJPXFq~Ep;>elgYo zo8PQear`>P!v5}-lNZf=kC$g|db5PDsp{kf(ffb@#?DIoxu>_RtlQ+B{HY&$>o2o5 z6>{!X6$!74-mG@$OX!l=+j*A`r%cK^o40GH+%mqJ2_F_ez3cz_cWM;hwUr0e7_E_# zVdH&J!L$GS=kk}hir+ee##!gCA4`4uL~7QZhf#aK91qpsD)=Z*AYi*d-hKbH%!}`r z#z{LG&w3!#Q(nc)a%Hd6guO49OESH5>gah@{IYD>Id9QdKY0#XG`+Mt^tQXse9JNO zBi3^LmzZCAbXPe@ZJyY2x3}c)%Ptdc-khKN_wRPquATa;W2^ppyXAb9Ka0K#sGYH2 zn5nD#VN0y~+|6^ReO;6@J5);ee$G{&@Nn^!*C+0u!nQY0DskGMhyTn>XV<&joDzR> zv-xedL!VDynflHA)|0v4RBHFiZ`NGUeIWX&^XI(_RnK~6^r&<1`K8u2?gYlu3X#!o44ycQi5<(#JaX4>R{aJ3^BYuz~3{GMTSyr;rRqPB5?)ojh_ z8}?j(zr4<0>Rx{=$5la>^J&H=yLV?g+*lT}v(Rht{nv}P-sN@NvTkdYILGq#mHo#m z%*^#Rzx>m`V&|WJdEeLrSAXPu(Eok*dEM*pTnqn7gns!s zvNytG`ksPBuDP319IYp|?<}2rrMK{_L80FK#AC77PZjSgJ$nwx8xOv#Ch)$$|NZ9f zC&)zuGF!gUfn&?XUFT-qo0RVzG`IECug1#vXVd0otv%?Mu=jM;+D3*LrhLvL{V^%Ul_j*&~ zPo43W=;bWiX;x|NBYM+%)&tvjYb_?nJnw)0d#!SBZs(2u-f7RXz2_SG6NV*Qcq z;wja3|I(03j1NXkVio&)CfClyQEkjPa9eP~tk1!Grq81G&fIqS>bWi7@BQ9pQeEe^ zLnhI%ukTpdi8J3BEz7EBF5B#yRd&JPc+D@{L+`GAd?|bmr#0 z^`)o!S#I@nFV8L(xfGpyX6fU#7g+UEew|;c6#Pu+MER;^SLSm+`HdWJ`*j%eXZ=Z) zU(1c`YLs$LTfiZu=Yizrr$L>5n@y%J+41PwYS&rkm&aHteh3TjS^7HX!_$(s36YB) z?TtS3{N=aADPr1lMfY(oelfRfw}tnfEuwmkKa18Gh=#tY6;a=(8R#>y*lkCV&AhXh zi()yo6TjDpWtvL&o+y3#uJZ?+^-9~h%i4FdZ&~+y@ytW0A zhjKX2sBI^6=67a&3%|h7uO?K(z3MpI2v} z6`OpgwB?{_%aK26t?Pd5^|$@K`r-O{OP}1C_TTh>$}MZ3_T)`-A|A=S-?h)XOt$dd z0T}o%I3Bl+~{Oak2QMWhc$@KK|cdRa5mAJ&c9 zG8$sUC9}r)Z4RGJE$`-S_xzv5a%-R3g1?9ien8*lfobx>H|F(R&R>6P>YTr8FM8}c zT8@Ep@69_KOxd*B@`_6vb=6Y)u>%IMlqn{fg%*UOJ zK?Tc!a)p5P3xi@WU+aDUI!^V&I`dba|8F8!j38Bb%s5ajyy45Qz4IF`o5S-IA;u3i z&>)4d8M_f7m5^4J0i$q5KB%ShUAW*ES~-A+d*9^%)BF5G&m8cmL6ds#dw}Wv_c|uO z`#2f_m}SC)*&HVOHK#BW6=nz4yCtk2SRd!THm&+MBvx!a{r?>TSFdUDt6uOaVCg4d=RKDPAP_b-|Ahwq<_d*;qUs#$Qw z-vM^z4KvSQ{`F8%wPk0Szu=06|Mz)4x+=jJy!US1smDBAD>Z-ttTZ?{9?$?ya-F9$|TH2q@#*N=q9^`7h_q?Bpr*46#w>{d8 zZ>#2Rdo8+cm+qUolg%BxjHMB4rxhIjvwJS*9zx?d$SJGwyGnzX`SY@3o2_@bIayZs zw%iSCuU9mxu672cD#aLgT-|WwrYeN}p$s%2X}zuQCQ&J*E|BTkyMM0oZ~Vh`xcAiW za(~8y$L}>9OfpHk4$gUP#%KIjz|!hO%crjsKbKF4{13_qjrxbx0WGvmtZ&K3JsS5NU5`f)F_<~mRP z@e^h?i+!I;npU`#RWr@n(x4Hux2FAjd3|sG{h;IfRL}T(cmLY>O!Wja&(`EB@i#sS z!Z-4+Wp2H{_M2Ng;Hmyt-LM0q&x1n>c+no z_H$gV=k{Dq+2z%II`P%k`rk_*$REF_IkSQD&lVPwxxt(NpY7ZBU4h9p;`g!AO%u8& z%=W6#eLMBhr2KP_zH|NPkE~taV<9KpaG+oMX#n%{?$BB5A_~$4_uS7^nqXPO_WG(; z@AKDJGPYk@5Ng8k`KOWZ^x0S5Z3)`Hr%YnikEI(H|5R%^(63b;`8rF*;>EV0=KDfI z=bo)Lac9`T(U|3>`)>P=o0+D;-#fRIy_|fZ$LMVM>@5m%UDH&0a$n0kwZ^d@bb492 za8q!fd#|9}ljS!vmgMdJ*wHD*nciJ`#C~eXq>|COg-6Em*IpIBdQ+C6; z^shnTd!pZLQ}yUC_x#g0cizQ{jSFjh=f&IRUYl*AcAiUErjJSEyzacs70+%=ds=+0 zwfXym`=5fJ%3pk#d1^^V_;k-e?RlpIja;^P3V+&o4 zb)N=XMO)=gUH>X~b(Pfn|NHtpXRIz-)i-yQ@husn=do+Ad2{~QRgn2H=IgtVi*stv zJvHv$@btG>X+yb++_HNQFZJJe`h0EBx}A#aI)7PPhQ1edkmC%=Hdz_}b&JAzVXcl& z(;iRSUJ!HHZ5ChY%LjXpKTh(rRqR!L8WyeA5EvFWMehB<&T!k~ug>%PBy63roU=A$ z|NVZe+6ker&eZJdC|8Sfo>#f~>N2|(|6UxmD%)Z_IdIq9tC#BU@O0Z1Y+aJ4>%^gV zzm(<5TtDkuTR3Dh&)oDlxPEfrtGl_b)l&aX+s}TgRQvb0*;o6!OB$tC8_DfmZn=JK z+3fO}bx#!Heg%9oj@Bucu9$T;?8(bJYU-RHk1sCFDq+9KANpDF{!01NPi>CLt&-B} zxb)8Gn1#>pz!S~f#bWElX1hs!+0CANym9%b<3)DKGQl?HUzPo>Zs=%iezni6^lAok zx6$P~xzqyQ@QsnH7cY_Fy~S&*-@E*c&x6H65ij@7J$t#y@K=wS_qw|;FVqKb-+lMR zWxJ$%TNC~MUzs;AFZguK<8-UA-wpA4qPNd|v>xn!zdCRKp zl9S8k<-YH0mjAP?cAk%V&v6N6zN`IzKX1$09JlP^VHH!Wy(T|0np&C<{cZ!TIL?0h@u%EoyOayHq5GGYvRkg5nzB7k_fm$5@7uijri=Oy zDjxfJIaMl#Cn;9(dFcG?XL;MdpYg5|?|3);QxL8wUt`;-vvi*`t8UvL)_jc&CqSqoCEI+ z8|BqLTst(ehm^>Ezx(naORLjQ}$AOM}ZHTTjz;YY1^_)EuR!J>D~kjDU*ck zCCvO!oDb!0wHCkYB(bVUqn`JVm%_ZcTc)d)xJMm*t`_SV5OHr>!AChq1*5|k+IIHT zH1XFf|M8FT*yFHZY5m1Ap_P~BE16`QM+%%5S2nab6np3>=hHokvO6#2>Hl4O(w)Qa zq{H-jQ^n9dG%G! zf&llzCtbb*(rOwg)CI+$)GZzwG|$ef@S*d**4+Km2K$iAMfI=6lL^91YJj@2$+fbV04J*iY(UF$4dp zPj;W&e;(&pDP?oNuCn;MobY;<_3RrbPmekOW7Tod_a~Z`*DvH|pQpXD(0@+&k;=f2 zVqZ%(`6L%Ui(8kh*s*+`U*-Rh@^wx#;*KmgP*z*0+!$E1$6Dx*cF(K%ua+K)QR=yu z&!KUzpY`9Pz2|?n^xxvxDVSONZu{hWvjlvmwhHoJmDDYLUHQ3Qr(*iSvX@!HhZd(h zUP%hMEI;Q_(7z+4^SAF1&Ar^U>-T}r0d`&6g3sqq-M6A~0blmyfc-kFADwjikTpB# z$g}(;z~ zsqd>v_ZEJbQC?){fBMS8_=F0_IC(iaiH?gJfz?|aU7gBya(^;%X^1JYzv9TE9RDuj z$-_A5gnF9xpl2_r`F`NMOTy8JPh}xJ?8~#wtT!jVD)4>&cv{-&9r2GpNhKFO zIjCRW(|No+{!+$ezxq0gZN#p2cuPj~i<)mBd z#lx|;w*7i3JbTZ%+-tVt`7z7+n_&)e{BcUs-f z)VsTn{hIP9tR`x{w#@5GIUA$`l~U8UOjo^;^XU03$IQ^z zo0<)ZS_HCM3|2WOiyYFN+FXC>z~qLxYMJ7(3psUleNC1{rc6@%Eq3+-JLm4q%}X?` z6na{IKFoNrOZSm`l%dl8UF&`qZ4^5{pRsqgU(p$W?k<_UXKR=0`b> zf>n%9+dp~!*t8&VTEZs%xYUcgbMHx?s_8!ve17A}zn{WPr!~LN`k^`}eAa}gcMosT zzg2boRQW{vKOwPyTy`k)K3yEm@kP_VQgSjs=Tm0}pMs+ooPWo?5BqA_eqrmA^}P&- z{bo+Ht7v<=KI_x&_pNP#FPZJMehb+NebahtD{nSwLfa3Ijyp>H&tqCHT9@i2uG{`` z%HzI@C)4X!r5|4YO7h;9XHUb;4%vNlmsaDuw6Nz^fKuXimdI7ip^6*s)$1Dcugt!6 zNAP{Uq+1w=O2lQgmRHr+a)aL=l`m5k+C62#o->m_t$Z#X^-U}JrJibw-u>;I55L&O z1%ErVu|)o>h_*;ZnwH((;GM@_&h*^uxhLfP)Z?#yPq@s%e=An#u zt$N)LGS-=O-ZylEE1lUc_}+@+WIVRGn&qMJJ=2!8d$L2fyJT1&UT`|SWnY!ED#x=@ zrw`SwuH9vOrgO8{)GHUrZT8+!s>xWa{r9;1{Eu^Q*YEr2*Zz&|(5jEK%A>B?X?=B_ z#c9m;uD0dos%q|i-Z$<#H)ucH_G+hC*D?O>I$XUQ|1B)v+qq!IpZoonw%tsem?7}h z^`*~==eEs1Ihj5rW_s-B`iAfH(7VlpF zlJRZ#wqGY6`z`26aK7c8IV<>hn$UyG{Mkt#mrPDmiTV;8dNO0Oc7h+vlw;dWM58m7 z$1C#${oAs^yz%YfAC0W%%w|uV)x)ad;(nud+nMF3xnJ!x6S}bPynx!F0+U?9eg7YA z`{oi>bCPABH6v%^d*>T>eZsHLIP2o9n_u!~(Z@S)&t1Cv)_GUzq-!~R{Kqcbw>7>m zkZAbq65ICY%-2o+t-UN4$J5=riOc!x{XG2}Q<}G3zw4}XqdcQ{RdMU{**mo^3yL&vUl)o1d)rc5zR!|lf1 z9XlKx7rxlP#ZPT#%dMo$%!-Q-nH&Z^vr?>9_q`FT-z-JA__%V*X zS8ud!Jm(1LUDCa^>{a&7BmW(^UvGXS6ZdoK&v4y2-k)8&@3A*Ie_CR)q;{j5MiKvM zJtqrJ;X@PkQ+J>EW%oZT;y1?*cMkES!-02J-Fcq9aHf{;)xTejuKjg?pl$MUqKvY` zJtd19_pfd5UAOv8#?RI{4v9~8ENeZoXGTPf&7alJm3=csJ*F|NisYR9Am(x#Q|2|k zQ=8?{gLzeUzxzX^IzA6 z?cs5IwuE_+>;62S#9nRN=?)&23|1{F>Yf1d4i~H6IFSYT}<*KaE ztkXOxJpJ=g_4^ZpAI{q$b~N~=*Y;(f_qDI~nIO--`>AWxbK6&EX81~d&-nAbQeCA+ zPT1`^+k778`YG{-oNJPWwsyzTfRzHqL}Cu<*Qo&U6ccJ+R)^~sD&uFl(fJhVO3|5i-CyXtLs4ZGM+ zYkV2An%~&jF>+Sq@4we(wxnovxxM}Ctaqv{Qzt*$-WM`qazWIyM)%Eu7yXW0{lwpN z!}8W6-7~K>{jLaRZr-rFfz4@u_sLtEiUWU~UTU%|JkvHoSh!C5(j~hh?ms;@dx}bH zg{9+HZC^TdQQd2{MBV)Kg@L_Wr!b~DZnC_cwt8~aU&YeziaL`t_ON{0l%V*zR;cIX z$t(5q?-!Tp`K^2|bmsa^iA9?~zEf|VR`I0&lWo;uXN5J43TmQ~Z`^nORNef(`C;lU zuUqTwp7l%)`yRJDw$|pxxgTezKj--VKGm@K%d#99>z=v$=Kfky7T;Z#w69^R$u|3q zf(hScE^d1t_^kb~+TyTb$Sym zin!e~e(htMH-%kZayIjV-HUmLR^9HdoBpw(k7v~`^~(wi4y`}YoHgavGEu3rQZezO z=*Zse?{jT5Z2z8)E$?mR+qzoZdunlTUv_uZDqqtq;YGIn1xI&2yJfTL&&yqXm7RrI zTeIB%UD@~Iht$;7QE5*de_pxB(Vlwm>E>UpJHmAKoj5h&)@rMdrim+*WVXe7wUs>D znenG9{-b(t`tin3e}cAqFV4{ZI?rUvxx6CfEkEs#uI^dIqx0>7e{AF){+R5G*Is{D zOgCJ&&s+cOjKAQ$QBbeZ*O<`=-YO?Yb;^ z-dgaM_f_D@@}IiDy-K58W2P1b@=bM5RqWoq(eYdL zrX2UmdrO0h0_R`3bGEzhm)TNx$q4ul4Sh{n8?$*JM6UmHsXjc2G*lWAova_g*h-{p(=w z>(DYIBQj&rR{y55O6lv7@r&QzSs<`!=|cYAyv%~tmk*qr^ge8w$X2~Q=X$NbZ{V2` z5Yox2`*Z1gp5-PS!rXmdoFBe8{>biiL5b2VnM}n=w!YSTu_pItt$noTQ|z6m4Y9orrk;1tce_QM z3RGTfeDLZHkLvFV^}kOfP26*Pikj3v&db)%HwrC_xc2B!A={2E`E$4u{}ty(cOTm# zd46K!$88b`;+}~@flZdL?zyhN^Kf_npOjlub>8jY)UYEV=&H+uh_ma|9L$}!31$cd z@7>71^S|3-z2aw5e_!i-Y!h?Kysc{S=F`)iMp}!qu6-ALo`32eFN=lV|{n!(05|6y>fPTlJ_7XR|q7u=m^{$|hpPd-}>-J9+{bbEI!r}1*<1XxTi(~-U&y(iU+Dgp=CG(wMmyKp z*@<2DY7FTMlqJFWd-I1Ka?F+xP_Ogev z&%XFq+-yNk1>gL~5|h*>&*V0_A6?lL`0Kp1RMEmuD$9D+YAk$1u4r8R>3L%FZN)&} z^Y?up$a21ro#$`pc#3InpOD46`4dgAroKwwynVZXh&$7XpjNXbA+ldTKAW^yOyczh zQ@gwWzM5M<%Vdv`_}`Vvk(;yg=beO!HD1*RX0o#PDHj^dzNh~=a1P^N2dS*$Reas< z^VdrV3q0Td-|tq?;>DtA5#a$`*XRFJ=$j!c>I6Fr;Lg3U!*BP$KX(1M_ebBiVWl%9 zZoU7$J!g;g7mc|2r7n)SbKmW&dnh4uYoUF&na=N!>VMzw#~b#W`aAtT zrB(ZRxMkX}Ywypvek?=ePVe%m-8pMse((O;`|6Fr{@}hjCyqNmVURTojD4B&ZaLc{ zb@{r!g`XtFjMNIZWjxi2jY+(zl>hBw<+}gR-$(nLj4Qn2I{o8)t-oKdPrvf~Z^o;; z2VSwR;(K}CK1zp0_tIb4Is9?zYrY)$9gwre%Hy;>XnNS6 z5tE~juw6~cS<7SOejw+^^cVkENiN&py>0)7XIl~uzmRn=mMJyu?-x0A-}YbE+9j5D zI-f4C%Q~Eu_eizpx}g2{LZ85I$I~wHxlc>T^zh;m+VFpVef`0zi>|*OcU?94#gMC1 zTd^aZr)Gyn^ka)f=dZ8GU-SH>zE5s8UqkHTFHcX4ALAE)X>ZT_=){Eot}oUv?r3W| zSSy>puy%ugX1bvX_5k^Bxm0UwLki@V-`y!t^_8ZMAx{j`nnA>&W`aFe(nh%ePlXjZQ%|GTGzg6gpSzCpAKyq%tGjQ)_&usQ-D!=3yPI%3#$O{C(>V zeaFRY^L)?gO#QalMCaC@YfGG%Q+Qv+Z+abEcPr|KTX0D8E17n&Z(FCWXRQ^{@1OIn z=-sWIcWrf#y*?AWGeTT>^Q9dVzPVgg`K;&g`sUQ%IClFXJvGu`8K!Uc4l`~(74 zZ?zM<@LZ$YpVOOv{hVJ*kAACT_Ko?ptLKkcV~N;ClNG9w>*j^edwiiUc$rdGJpcUQ zpEX-vhfh{px%KYnc{+ks?D3~orK>2qTLpYx#p6 z34*`A$S0}wyqag$AY;9Bb?g`Rmtr$HkKNpVPyK4Fsj%}s*;Hp{*_p-ji~r7>`nm5O zxsgFD1L!i@TRA1vw? zaG8DTo8R+|MhR;Zog#9z{7R=^*SOVn`1{Q7%VbU*J2vM->`&!|?i@vy)}iUFvZ+4Y zM&Gx1PQT9c;jx^%V@y$=Zr}=kp5?EfR4Nwt?hs)47|Bt2wOr2Ct4`{b$V{P@Yn+nP z!pij$dwau{$4r^{>)N9E^NkkH*krJxREe{9>jE|1H+vXLwf30FZ&C4?w%E>X8_V04 z$=6P0l$=gUVVG`aot=L0`;FB;AGc+&TyZ;{d2!8BWmkrkhAk3nB3{VY_5{t|JhLP% z`QiHc|33S_Wzf4h~7^V{cOp}i-J~7 zPPvOtEk63<=bpnqXUU$r>TldL~VjGV?6|TuJi0F|&ym-D|s%Dc}(#m}d z!mosiwnV(>Q=Ymivg`fPjbdK@?#Uuz7F+s^{P}gdvgbGo@7F%uv)N1a&AW{&7Hx~4 zW|ngCQQu?ncbRwW6)XOy`%WlZEq>@-+0Q>FeSvi)*M5hyD4Loni_}IKI^6oI`6MX! z>6{Nzuld<>c1&s&{OTUzGc(WP6Jul7Gm$F!V;r7&`|mCNm2Rd!wKhp_r9Egh)q_~h z3-)K0&ONH8mwRHGTVZ$TS>3mPimoQt=sRwkW&X>o1xHMFt%_w3!bzHR^c zlM;f3-`?%o_gt9!)kU^ViCK&6CKNA={$d-ns^e(TuWsHj!*wspuguH(JoDG%_TSb) z$vXGdW4~Tpx?#8dgr{OGr%T=!w;cNZg+KlU%fCH`O0*TX%+)Y+TKRjqPqJ)t%ZBO> zhp1EfFP5uvJ}&k9*<qa>dg6jgs2e{6n5Bx^b}9O0VVa?~Q`BAM)-T`ZNDv@2><+2cHVL zpjR(0i*FNH^g>efWzijxVwbbQS!bBjIqcq5iXZvvRl8%J{`>B0!bMh9Wx-RYzmB@T z=fWL-)@_i*%NG6(rgLZY#a_L|``RV?R(59Y>bc8)@`f+IJ1wAc@lU!eTVJ*HJh zSIY5rtBJFxK4zV2P}jBc^WNkOobzY0^c`8r*(Y}4tMMGW_zOE)4j5G*+3$1U+~+j@ zM;*NkCL!9nHVYWT{{7py*e20SvQOw)+3B{>*&HcOd+s+bbh{OL{Jj1fpIf|7KHHiu zGI{d|u+$^2m91+}a2}d0 z*L0e*X{KbMed)2%iSvH3&s$#>Jk>QYOjTvt$ueDodj~fETKD0{MXmIpk{zK{)35IIO1;-=DQx*&KH|^RH9sako+o#IvBr)C zyu8a_OEN{O9TUH@x&8^u%ro-)?fj2M=De$L+$Cr(95OHQr|F{5ACh0)?z$aY_-j@1 ztEYMu&*xR&KlJ#beCteM{o*^v`&Oi`Rd}`c-J@`KEuGCJG4G{*PGSg}-Bxm>@yz!2 z$FbKWPnEWOzc?+E+bZ#?iiOTAPU+%(?y>z5f1kGtKB)Zs-*frFH7whc#UkFlU){^| zmMOPjYwpEIXQq7K_gnn>@7H^hs}^tl_&6rlvNYD|75kD1@#&Ym?B3aX9jtnF!R$SI z+$(kdM@bvjx=xEeV`_G@_13bp{kOz;r><#{`C+H=f2FnST>B4V_E+q<=UFSWt?QkHz+_I$hVNpYKc*vp^H+@*C;rYPrC zT5D|Ny{9>I{_UFmL}cY|tJmAVw9ij2eyX^`@x(f{r?XlQy(txM+&|;MZXpe`t5)e{$k2n`0?^6ElQFYjwpUSLhq(zFXP0tnXyWR+D{6jMHXoud(&`?wOkq%~Y_j zeW%|ce<$8GD^6@GP(1sDk*UFE-;1lex9~nb6v6a$ZR^aP84bzCb=G1pR-c^z$FGT7 z?2_=a^H*6`WUW7aw2=3x>Vf=?77Oow-gSS!hS;(09VXLUnb$7Lz5A{tD3~c<%=y=r z?~fL4e9^ScY1RYXQ!DTOa<$wzZ|PC~x+5wx^reJdoZ6o#S00%U`AhVok}rj5&*RR~H`#aR(zO1|O|BoDvn|y*=k8tc$LHnw zC2z|)r`x0j)@}LmU!3XB$sEV~L9@PD^l>im7Aw?SzvQlZH&f5kh!gYkq+VV=8!F?y zSmCUj{;$2JQjdg>?bVl3mS6t#K6q-&jpf>x?BZ+ERUB=f4dt?KZ_GJoQ7kFF#N^oZ zTeEKcV@p07d;9#XDaV?Eo=xcXUG&AY^jFukzCRD<`Sfeo)JFMvyeu}=OVd`9y2Y{a zvr@&6#}P|^hMRRH#?38Eo9mmZY_falPFtBT%5qCD=POKz-~6-7wf`(@RBGz-^>unO z@mngpU37QAgSdv3?RCH1N`AJTmnTdLGcv-~eUb^KYY?sJHDSTL?=L)E=Xl-wdlj^LtaUi6n`US8hz%zXBTZ8;DJY&kAyVh)>-1n^)oK>eL_#2G8bmikFg32F-us-gLo?`Pl0jHdB-jFW&JbSeSk0n|FbFx*JX} z`P9Xv_fzj|3g`U1h?0@I5V!cD8Co`0_Yng0Iwo$Ze+ z8zUz7GK()_Uw2&ZX2+ig-^~ABc-Fd(C2z`Z_bRLZ{!UIapI%*bb!AGM&b`9y>t)Yd zt{T3X6?DjZ#qC2ne^e{O<{X^vBoA=dzZGJBECu`b0ZQOIL-RN&l!=e35&yTI=SpB`Q`(^sM?bpv< z$~>fdHq&>?{?f@Ean_uS{rA~b7jEHVd}?=f#cuZ-&c!`{0uMERk7YV)r>z+KYRbIn zxAY^U1FTIR$zIs6eQUwLR|7X*C94mzZ!qoqx}ojIQa2maH<@{c+~P4{qV3m0Op; zYJ6{WR9Z?o%HZ&yhoa2|UzvY%sW(o4<#;Z$FCpIi)6~DuH{O5LcWRl|mRlle+^Kxw zc1t;LWq53EcHPR#omDBAE&uRj{_^07O;35&_GHdUpSP8@xV}Kb&FS@Dw}!_qQE%&h zJzgf<9ThAluAZ^-MARA9((eZh9WTy&#?R4^q{t`y%Jx)BI+Ofl2SZ-#HQer&XG`aG z{$u4{TN_$_uekT8%A9G(HnAMDZhg$LPWJ8Ih?el}`r_BBf5#l_U>9WU;Rf0^Lw(S1K;MNp;Qquab4O7%yVs{fzVuX*c0%MH4#VDFLhh2 zpL3MO^#I@h*Z%d#e#F$4*_nq*cXhqZa@D$2C%=L53!m?2RWVJK0KSLDMO_CcZ0p`u z>>R!N;Tw^)yREpTgqpJR7VmSMU0po0TjG2D;yVs+x5N5C8ak8dRj*o5%3l zeT%o@w&aUWf1OLzN{UKvIqLf9J8RG24a)j08FVh=w|voU|KIDk{TKRtBkT9}jFguW z7rvHEapN%S{?}+XvHLLhEw7~u|MBNO6_YwH%knyO`PtywKWE*)Ons8N+Em!a<45$F zXz%;CE>t!i?O{BW{AsJMdCv2Fk==i$hnrt~o*5i1v$|zI>)dsxcF8}z6e;pw{BHim zi*GiG*eB;GoZb3w@y7hQ|Ms1}leBA2i-NVzkH!rL4O^`qWxo%o>HJu+(J-NY?pTU`*LCX;)%z;oGp4)pR!=j@~`@l2{(Hsi{wuhDKxcNi3y4(ov3(H zuzBr|!W8a5NyXV~q90CVa{qp^dEXALV?3r`bC-xGE3*i^GQX+5t=MbVv9!iJ;;-7w z{;v9e`PZChEnT4>vto0knZ!76eGIlUKRZt>aNAyc+rvjD8fy3L*193sIG1xq1Lq$% zmPNL8nU$sc5=x?2E<9i7Y}5DP!u`m6%ZNVX|JT&B18=YGQ#x`nKUeib*!1JOqAzxS zaJ;|8_2DK%jbD{>KkrS=3rXh9JpHG5v2VIY;8lt23x7rXJ|2|nPPwhxX_S9Ue8rys zM~<(KuodjjpLyWBLV-osZ#l!T#|cliPB`GhZN#%f&3)GOsPu{7*7<1Js+X*BtNvAe zk?Dj@LI2UeoBM29%}jK=*xm>=WjDxWAG89rJj-> z1E%GqMKfR2EVNOun15l$7Ri>?jLE+32Q94i1?`@GTa_WuWl^N8{&3p9>2uTf!nYBSwEw4LWg}ZOp^~u|GUY@j>CU*0j?v|G|Us*p+So-Cu z$K9y+v(I@>pYY>k@sq^p#X8e{W+ch3tC2f(oQHQ}^i$@AN#1GRUjKx)9dTp0H}{W+ z5%bK2cMBFgU_P&8p;5dv_=;xxXiI-j-1>4v7=2D{u#o8DA=hD_t| zGrThMfUwz8n^WTAU+&Cbldi9IBH7=|`%KcpFyZ7=mG5lwLi;q|Z(1YvWrNy+le3LZ zKUJUm?zLp*p_S=k_ey*3n?Eg{Hs5GhQ(@f>|6?_;(k3>TUH>vq#A%&|7y1F`Usul{kQf!id_(=Dckg7-j-AH751t}-f#Hu`~2-2!B0PL zmG^RZ_Eeza6yHI06V4*p9^RNe`{VNkcU;i()acD)yVa;Hwn?w7cJilLuiI}$>`kgV zU;ggF@poEIisu;9U6=P~PD^fVsaYFQIx)0g`ckb3>(>aUTh%RFgyx(GnaA>#ojdL0 zy36fP%IoHv+!slnc)j_w{~wK8uE(D1c)ex$azr=ysjRNqMjO>^gZ@+hUFIC$?zEcO zxZZb*?$!C8#_qgbV$+|fWJFG$*Z0rjc8!a(v-Ocj(bi%Qmav|Z>?q!%nfCd{l_}!K zO3K#yXxc6KySV7?g2ctWdSz-KE^=h>tkx{mSrl~g+*jMG<;QaxGK18A>nzGXv+yyy zTFyMpZ>>T467Hd_2en>@G3DNxwaS$vb60F~SB+D&@uGPt*WDN{I49h3ZuU%O(e?B1 ztZy>gI&JgHnvIs9Q!YQ4;x5xRVj-R>|n7Y7y_2y-^a|6y9MwNMO zKbKULXcYUz%YBF0R~ui8`l*G<><4%D*-W^c=DySF`nq-U(|5Yg{5{pE{rM^Rr7O4X zSZ)~bbl1MDH=@}Oel;F<`rPo*XqwKJ#FtaLAE)@;y|DE$i{Fpn*XzJPCFW4N1>_ZTeR4d{lbH{327c?pre(IA5VQJrqoqKlqon8EI-O(6-sl%`QlP`-jy{Ibot2g(&*%lDo^e|4p?^|H? zs;#-X8+uguE~WG;mNh1RZ2njzH-CQA{)^9E-}xukbM5MxNgXV&UtL$9vsm`;&R?-> z1Lqd1->&@G%gJMSLEq+E@S4^W(P#3nJbbM3qt1k_UdH0jyMG$8Cbza`zH-q&xphvt zSF{)Vw9lTuX8Uq3pJP^<>+M~`9yZVGeET1{;~N}13|*b`&+JhBVYvQ6VEysEGd5jH zoEuoY;7tmzL!Q;4SDyPSzC^Cs-8l8NQFh%f5%b7Wb?tomcAN7rY+68FkCHA^!8S^j2=Uzql9 zp2+*RiuNS+R{qHTyfmd~W8dWu`NBUgvfL}#8nT-;okP@gf}Fty-PbqP^%S?%1+z5@ z*?e2V+ie|hdG7vA*NC?Ms@S~|Ki4^auzmhAH!@_OTeT8@dgCrad#CUGVr#Jnx_HmijF@$E8G%XJ%Z_%~-6wX40``KjxMQ zWgT6m(ER7rgKr1k^I6qtMDsJgmr-2Cvh4UzJC5&{W> z;)+!^a(8>UrCHeipMG?WwY$psT*DeG-D94gt2alwSe~<0+Ir^Jo&)!m-q<3r>HjCk z6=$a#)SPK!ncJ`N`GwM+dcUh8Kl|!iIm7F;Va-}{lQ!Jl0^K*v%vwfzc)3W(^)FamUX&hbRHtA1SbA+Bfdhz>aR{Kxk ze}C#Gu6j8C&pKX(iUk|0_TTg_xRlAH$M~U%uT~(vRft1zzsdL1Yg=kU+!MdX1*}(5 zS$^(>zh0L~ZHW1K-E;D;UslaOzyIsh7e&WDt8bSQN-?jz9`R#ZYiZ{0Ou;{=b7tFJ z?0ajreM(}IGt<`;%|@ouzaRdtS@Lwfy*MM=3F*0~FF&%e6x(~qRdl(m8^e)fbvmm= zoEk5%xp>r;o;?))G&V?j;j5+lKHLy}+j{KCRE8@PMAJ&2M(NarzCYsnY0CkgMCRhU z_9&4%Pw%B1nYnVtq3qJ?m&V+MM#t*}*zLF6SUhXRws#jczI2_;#NyOmY4xS_k9VEu z;w=efnN#CK%&#mt(j;+GR^+S2BK5k}eGskVRZI$!d)P7Fi{o;Jv^o$Ru|0I}R5dQf^7nC$j zPEPX)o2?yg+q3l9wpR+uJ(U*9#YdR_t1?B+Ox^weH8=Mr-*cz;^z~K*K3}O_9%G*; z$+xIW{>y!ibM04bW#t$A(#+k-*>r2S^{w^4d}Y#$zfUz0Xp0N#e{{$DRiG^6FJ?6_ zXNEeFkDp(@V?NRHYhgiky?%Z7XZQch^pg9&NHOj_cD}SCllkoQ{rlyn1UGT!9+SU( z{j|{eB-6(}7G?%V89WW&owiwUMmoZ?S$lfrWIIE@JFm|_wOOIrV>aPi*wfovC*E|{ zGcmssf1*@B#d3+k@$lSpSJJYB&qq#wY^8BC`F_{Kz|Z>mHphKAMrB3c7V;`#$w$e2N$PN>wkNvMa8UK2_>{|Co+~S%&EGi!0AZFWG_g`P@%*ziyhkAL(D_wsXe^jvi zxL{}VGg)bqCEU{wzpFi!vu4fa%y$82cbr0q@ zQ=%W~vdeXvfcxSpnJzr9!k3E5N#8vcv9sRlTmH$5mlJEQv)t=CAQ^b+yQkl+%|dTH zGj67De0F2u@eqzZf;HbGG*vxYeb}Vw-a4cI{N|AG)U*@)~ z58sz4_eHQIF)1m&*PQ&O%lYDy#(F{dUYYo=*ZxZmJP7$YNo<1{PxOrWReKB;e{M63 zJGI;J4X-aXynd5-FkDZ?#qPPry~};=OL_yj&3x8aG{67& zqw0Rk{BAF)b(d8qvopQE^SH?VsNP-PWlK|xio3oPT+ln~;d-t-?pyqc)0&$Sn_~4v zj@s>s|6?`P{Hga0mHV3Syic4mXW7l2_d@2&>8mhu6CyK+ws)P zd;jpsA75I1|L9($M|(1UUD~qr>5U~HXSAjX&*qlf%X0Mh`fsjkd$$_gJL2E|T&uTw z=H+@Bw^=LhOg}Q?WK7N#ixUFxr^?;cJ}t)of2KkE+XIe^`s-!(`Rx8ZtNzvAlTIh^ zuw`CuD?9Z%bdA;3Nq^)**8l$P@6+&oj`>_eqi4@6dY#V&*p=&k*-)oa$~LchO*hSIganSI;Wl`}kLhm&MQU#`K0P$)>q;ww>F0d8?J0RR8_=Z=PRSzNYAk^_=9> zJJ)BQo4z({$%{AfQ;Rh0-GADOUf-F0Y2MG8+M`Yn_ni#5zs>1{*`coXbG-Uu-%hzy zs9oIS!hYg&q*rwG`Q@^2L;c)uDQT<8n98~fipHhCxL5dxO`6T({K8-UjtK5_Lys$^A z*<(Z9*`JH8W?NfFZnhNL(Vg7>+3q;MjPJz&>pc(Ood3(VOvCu?>Qk4eZJ2vv$;0Ko zuK&9OVrTdH^JZRQKjHOSBKII8^XXW5hl;KJK`QxEiatrr?!D5K85qm-cUAB&EAHLx z8~%ReS^sMC`-|^nW3}r~dGYphb~|-j^gRx&OOrk~^)YXSQeW1Ysx+h2{l`Ssvz?Wa zekb$xwFEcAZL4LM9{xV0QGW36QBc=zQQnu@76t9_QbBVX)nIo{9X6i;Zt?`^{Z#>$g3k@Xu%dE$6h)uKm@gTHCelOkCXM z?a4-_*17j=-<1{Dmu|bi)HeS@S-#*K{p)8mSIu5~!^AB8k8Y!5hQ;I^&kj80uu=cL z$^X&X({g{@UKacjdi-~8^IN4$np|4F7NygTe(M>3xcX(w!Q3-DmY7Qj#0wsG`Ycn% z^6t4j>;CmN=V#mh^O0>-y`QAG-SL5Lo%r;gXf5d*D$<>n@jtBoyU+eGWz#dQTV3R$x| zabx!G9nK4Sl-RPPc&`;_eTkHQw#=$JI_SgNzDX;-WFDOpWXpK_@)o%-O6~Q&H@?aG zwDf1koc|m$(;_}u)W{??>Fmn+uU^HQTnm^~boJbt9gp^_eFzp>(eq$m@juBQncEks zm{>7?pK|#DmvUQS-}aP%PfK@wT~Sx4$kKXzwWDBWqMcR$p5%q|k3HTP{5DnKc-QWh z#7*@A*T2yIkYA`3yjO{P${W7n3 z=ilH+|D7>y!Qaot1}ooDd@y&**~ow^eiyHGwppG!C!ZP4eeJQ0$A>j1ePng#M(t{U z@7&93$yxew{fDZ3+$^&u2W9-MP~u>x39n{|7XI|N)d|J(k7j8chcW0Jvl*V8rR33>OB2ElFi|esp>NEA5*Ke>wY^6+r5rjC|9-1Uzz(BhHpw%dF5jnp*RV3k++4_*{=Sxj)v0@cJasOTUpvwYTw9slQXx@RBf=NnSTzp{y6^#2^yZhtp=ZRDKg z`(FJnG3q*cFK>%;RQA&4&*s{fMLn1wRDMW`?`(8=CHT!nwZtJ!^Eceo5Ienk5 z&Hd_giqYrEniuRUJ})MBbKkXHaIJ5G2?sEDKGcmD{|MzCYWm7 z`u1qWB*E9La}Q3~SUj`;ga?bw$LA~g8Vq}$>E;{`u3uPUGX2^NrNMVUgTC`(GnV+;Kl>Bh<5gs5o*r+kzcXR}U5?F9f~H)Y;c-52*3aaR*;#T9 z`(7?*3HTfPuuH#6tujYN@yCopZts~Z&ssP*c5Mvg+x$Ogf$6>ESi-uw@%#s zs~~sT+(g3!g9#I)>uv5=wO$K!<44+?43==wZ`J#aN%NRrX^xlmS^$(=}oD zp}l)HSRQ#7togtB!S0GbM_Klb{zyCr4);TI9y;>+ih^^{F?yQjP$YRkn_ zA%9(d>{y+_(zR7EtbPl#pljQ4zW>*qP0mkY`BxIQV`bXhv8`o#FsQCQr zx*5RxWT~RA;>4EuQmL=bJPW>c-}0VX?@`fz?<0Hn&%aO+z^A)H^RUrlJ@vCmoY_wo z$+)L>OF#c-5d7k}Uxbg?MvWh>jhVAeRCY`{w*JY?O94|A{wU1%+U4^<M5x#E9T^Ss!anXKFS)-&AiamD>-+Mf<_uX(~F6%gMJCob}UB^uDiolbkOIGD&B{6>|^>3NET>XbfLTPcEzh2j- z#pSAYpO3y$|6Y3MfZpO=%MBKU&ieKJgr<>N(f>(eLgruh9C>`Y#o@SLo#yZPZ}hIG z)`V<- zc(>4sD39FM;RKGm52x979=`8~>k=^ejwejl}syYyv#?JZ8x`Oj*zY+3`T}|} z8x9ycF$g;4-h0leU)#Snu}Z!=k^bti^6_pJ##SHYKDmfDGhX{-ixo<+ zTsP2_d7d5q%2CGGX>#o1dCyu`%PeO*_V~9Zx6h2XcDJ6WJbY^-)|&D8|G(c0;?F;{ zuRU~TgNbZJiS&ZM8xsPbetT_mRzM|RV9Dxv<)OYH( z150+X{I>lyRkOR^de0ZrVE}&U}xYA(y4tQ1j{rpRBLZqY4;m_iT+|gRj24)d9xV|(+j(#4*Ab5zn@U} zb5U@5;(x^!)}6j5GS5VQnO^bl7guk|r^Qe6X4c8tnp{>t$38vsV{l%xW`JoyyQS6B z$%WRrGuysh{I=+?-{zJJvp(8(3$9iBEOYDYtQLtkTg0dD5?kmj(W7Rb*u8mQ_l{_t zh?s9Pl@H{cdQ`skjPI?P>&`IEEqcWqvGZDl*VFEA8=tH-oOvfGS$O9Q{k9*ehVzep z+&GWD*Ei35{l+3i#*>!ITPt_2-@aU}VAo~O`l2_@XD%EMbk16@K4s_J+u3I8HhCyXITX?vIHp1-%t#S=S_;Syh;kvqwE=vRl;Jt$mj#J5Dvs{av!|U$Y&*qC-T& z#T|2eb4^c`9d%Qm`Q_fG!ndcV>z}b~dugvPcx-xZ-94S9b?+}v=zXhoJtpE)y&hoezCpgXV8+(kw(iBHmP!J&iN|x z+GJL6$;)897s|mr4B`hMq_zufp)T#x6K|DQ!Xx(nI= zg!su_UdMk;f}yg?uy0jg?+u>iU+sIN-JLxiuYFIm+C2A6XZEmkznJ$MJ$t_{>u~wFV8y01 zo51AB(MuL&uh%PK`FkzFHQ|4)Y-7>hjaK?~u`K)dy}woe_xt~v$E*LC%-Pz~pd*yM z{ZaDegTFT{>^$wXNo=}G{geeUvu0Hmtf){a(SH5ek@eKqfah(OmL&Y!5y5lrda>5e z?OSA37_?gKg=8)&YgvOZ(;;`}(Zq>wH{JIqeV&F&A3$NvB!%C%`{v8GqC&qHROHcrPE)(+_7GlkQKhgaLJ14 zzYQJ&{+r z`d#=pP;JZRnD?d=SG@T-^X1GFvmEO9pM-w@BKPF^vg|T@;YO#|{<)n#apryZ*fZ_* z1p-dD%oCfQlIkq2aEoWzPpLx-e@ba{W^9|AmF?nmi>Y{Kv=ZOf4Oxe`+z81?d>5Ho zFO=Y!5mIV3JHKVaw!;olZ#}NQ^x0)u>-Kf7{f_g!hrg_N{lxtlf2dmM5sk^G>X!+4 zIXC^Xdd@4meEk-q<)Uvlz3R2_?0$ITOtooz|Gwb&TPzcL%aYu0^}3h-xv}4*^vb)f z5g}Y_XMAvw(cxOvmo-s;OW}@n-<+2Ts#e^xb+>Jgoq5&l<-RqEGTXKb>b7zfcm1f> zi$DJJOTO?AL6%je0q=L-V!rx%k=!QXy+QN4b}jxD|6}#$1NYJ%)}7XRH|N*oguvMJ z*?JKQ_u53;4}a5G9-1p&ynEW~n7s3=GCeF7xVB|@Z+Lo_JF)np+}ab}M!E}syxiII zXJdzhZ0<&f8XGgaqZPfLmoua@qpy5xnBQgeTOV5)t+Yx%kyx}p z`b%Yw*W&wEZCq-1o0*E%3PojfNjT>A?@M(4uiu?2CI0@I`jhgLH!QcmjS}zJdid^* znIE*Qf8G%27m3w!?%fcusIu7I>F#p2^Xiu}FUe;zqx#O10th%RAJ5UFZ!PwQund7gkcb6cheg`Im0&tux1#1V{W`?d`Cx`xQgR?$lprSh@LK zn0vvtX~!&P-vz$N6v=w8`8a9?K-*KqNQp|0Jf#REIyPgG16fd2=WZ{k% z*{^3rub(_k#NTX*Yx>7mO72^}xc9#HUs9j;`RnTB(uQD`Pq#cb`W5aFt3LJreZ||e zEcfh1eQwEYjn4|^b33wL$0d&?^yK{`Piyvt{>h*8^1aB*_aWajvOl`*`w{y~_D7Ae zxUOb!W?ggD=V!SW%2%E1d)CYOLCJ;t(<8Pgw?7Lvb;?gTxBdAAMc)G~c1(<0MT-nO z|8q$GlKgbQ>EzwJ(@k!cUEXhC{Oif1Kj#DFo?iqd8_<3(*fEB77L7U|(yoUp8vL5} z$LrS_HO?#%0#!jy+SE3hoBSVb=Uj2n5MH~;(kRIzB`XUE@9C9l1o zqpO||O0%Gb8RTHW1SYi)K}?Dc(=>KGD)DuCnH(-^_Wb=%y#xG*8yqGWCk7ov|-orfL0A`Yc=6(>^iJy1h!fT~I7S*x1h* z@!)U2pcNDPNv1#eSZ;j0Kc&+W`BZ*Ju&Ty##e}8Lrze}Qp1yh0`R(ctu1?vW{ze26 z#stU*;>ro9Q}*9r{+rpI-1y!9_lr4&U_&8B<02d1yB>IS`@QR>k24PRt0pvl?|=IC z3IVIYac?KoD77fBZ|0_%@51e->^jnOPwj(O*0+CbEIJ?Rm{;^&LeCLc41MriAt2i% zXzfj}%+0=&YH!>6DoEs-t-O}CylV5uE$R178|57q{A9jVAcQ@TA))=@|K@V_7rBqK zX16V@++?FtdhX}+>#twk{ZjPnRd6T!+2sBD4jxl{EdAz85&o4pHJ4X~;|_ynt2~2J z0|OI>Lc@W4%?AzT#TFd5PpZ7xUOA`y-|y(OpR&eRFL+dx^JKJ5JL4qt^l#tI#OoX$ z4GrI`&6(%w*PiN;ZF^z*<=)o9UH|1*&X&LVtYm%tv&|9ju1tFQ_gi|H;!ZaPMiv1F zOu}xH!{*z(y{}(yh+cQ7ZvXESBKLK6H{U&5r@vz{12@zD<^%e?74J>w9*nY0ymDT- zK?74dv<;eQZzM#Y2`~CNZ zz+3I-ES^h0f8KT3bW5VU{kiVLW%|0gvIo{4(_3Sv7yb27&JLfolX;$&PF;W2uQK@F zR{Qy8(WmO8pKd<*)2u9JZ$QVg&vBc))4YOTZe9INUwro4rf?Yvpl8Qk7fh-dc9Mv%fgnGElm*zD)PM(zMgZdp;M}tr6q2+Pn4I&v`}9_Iwb> z9yJ0E42|14Om5{K4Xew1@kaM%ax{y;4uuci{ZZc=epYV_<5?s6&-Pv0syaEoC$*I~ zT0Z(dSILn6y!vf=x9^N~q8`BlZ`ZHR$l^j+2NFJT&Jgpg@wIaC!&!1Civ#L%b$vm|J`Eo!2I1-=l#K4 zSF|-O;@2GhdrHuK?P4D5X}gOa6zuF}y!HCuOS5R!Mf-hZReER7`BxMWdGKiAc2T!m z=T_@XpZ#ISoz{;##Mk*bTw2Cw;}@dOef4zw;=ZPCuKd?q)h*Xqz5O7+ba_N}#9Fh5 ziTn7suiEY17`ObzgKyJMT779>B_F!!^M<(mL)TkB#ccdPgPYyGyEb&K(C5WA>$XIN zch&{jt?pXi)4uXm#WIDJ28W*qYL{$%RJQu>>PPF{Y@eg7nXfMY^elD# z)SUex2fp9`wer-g)Bm==T6FVeOTBpM#<<+6;Zxm9FIJ}ZYhFKi|JJe7TVJK6NSK~$ zy>={!|pa`>;{xVtTk7Kt=eU>=*nWZ`AZiZ zVdo0?wx#S;quX_@f*&hN+_(hzlLUg4{bbh{Cj|08^2qL0D>qoT_HBRij=5D;&lW6u zG*fFf)9h0}OYb*+`%-tN^-`o}!S@vlzU^)5o*&Ki%=*>x>&Y9U4+i#6lhxw4{rh#9 z_0-FaN0)DHYU1j!I`I1Yo+Eo+C&o9PoA~Kz%+tRWDxaKEtF)S)@*O+2N27oGCwgaWcS*xnS9^k_v`PnA$sijwpzDt^NW7*VN7~%sedn1tGT=| zGjQsPMzfU3ZUW_}tu@TL7GIb;#a+pI@$n~LPOu#ppZE4yWr(W$wwv#_B`*3E^-e0$ zCg69#g1fh?mwX92cz5ON;DaCfUK#h!DgRI*yKj}9?W8+%`TSm8zWrkF`r@sPiSCQ< z2d6Fi%>A>-a@VcGpWDRGWu1EMEj_L4h1rU2Pnfo(?7gt!)17khUw*K&0L z@*eB|>9<}re|nj`XuZ+$Z%?-bNqhO#mBnn6E*HDO^4+yC;P&mK&sIH`bF>SeJ?GS= zt#9~b&h5WkXkB>V_BlJYs`OH+(~_^(?%DphuCfJOHQ*#1A|Fie`|zz#=0nh%w~r>> zKULqay-ag!cvnNO=#je`3FSPuWUqfxUjDzPdhf#A+fuI4ab@%TqNKNo`1Uwnx-^^5 z%3AiQ_2aUx*0`8Y|F&^4hxwkrbMe^kyH+-ptJ2?IYHqTfbys=!;}iL;kBS+tSZ8XU zFu#($_Ly2t;D@S3^8TH*9qd`{d=k$z*A*YL(cN}EGD~HB^L_QjCqH{l|F=tEr@~Py z_0p;LPuJ@&{cJOH$Fj>^!NKBeXv*)k!IVu(?e9zm?m3{Se(d|CQ{C>AGfjbjlMzc=by_8M( zb?|MIZ&H8P?wYyYd6Ao05I(b7|cKCEE~o|?X3(-zyR_}pY& zclH^NLw+wUy}QuC);uY8?)LSE{Z9W5%kSSQBlAXX^_`W%ZW9+=*!Aj(Ksrl+L(Q@S z+b`?%ca;bEil#j}$NY*T;I8JvJ%@wRDm!q-3|PX!bAidc?O$Hyf4HzXOI&KpTU>)M~+7pOOM*PHaZcES9eI_Fl~ z-CKUUv0$rU|Bh{8d_ntXd}uX4`%-@S$2q}^?_b?{;NV@8UAL8IhPvNc>0Smh{mIte z*TJ_dwp6Vc3yy^RjoD?V)~h{O`#bh|!}ZNQ zaTSLbFD$*Cz-n_@*?Be~l>CF3a@5DT_f3v+ccV0T2pZ9H<=)Dcf z>~mw^?@em?f9&F=OOJ}qo66jO|N7f&!voP(zjw=-4c&dag5 zaPDsA0sZ}3_Ne6-9@+coN;2!(c#WzTE8_OtZ!LSZtK`-@nMc*f_^)y;L_pl`&7~^WHtnPrd&ca=OZrjlcH%qdgTux%cl|-ZPJW zZ@uOH#g}pmZ7=s8U2pR%{A2e1Xa8%ir||!&%k2Dqt}Nvqt!^Lfs{FohK6=&e)ysR&mS!F}ALi*V z8t^USN1n5+LdpBmv(w%#l5~F>{3UGaliz8-_g%E#bA-iq>2~+z)zeI3zi;{RvE)u( zQzcgo`}Vur4}=QeUN`Uf?}h(AoU8xWHt$y4=Fawy7v{Rosk7>Pw#$F}{bGSXy52d{ zy{>=XU7uO#-hb!j;li@@Z{@GodS6>S@16bnm-lMdzu&g(v%USjIIr2?5n+jywc&ta z(eG|sk#z6IQ#<5c_dMEM`*cOj{rVe=?QYM~v-Fq08<22OIosBD)AHbR>+8d}?Y$kY zqp7j{z;dQ*Pmeb4JLb72fYEku+4~odDsM%tUwI&Dj^C|Lk@vsP|6KL7cFFO~-p9MD zmaNGsS^xCEd8}NxzN$%(%8x()?pnL2`k#7GBBFQwHJ_E;>x=@QpUZ7F&1?P>eP3kn zo{S^=<3CqF4GWA@wJ#H_kuSLZce0grjObk1vMlA|t<8<^#n&3Gjhh(e_j&35egD7A z{Wjgb+}gn=)^a}Iy7mj#SG?TVwE6#y#?L`%tM3WlxMj?J;HSV%3X;tTC zS?UjG&o383LO%+yOXS&tuieUy1G{T0W9i`PF-U6vZJK4q_!w?(&hZ_E8RHm@C6uW1{LyXR)# zy?$-J_KCE@{!dnKB9EVQ2;RGX+v^W20`KiDdmb@;{Tc4niueOMr!ijcgWn$41KtzY z$-FsLf8Kr8v6lyIokH_1)SffM^`%-}xR(9yu+w^8(JQZyzTEKlo%ZzW>sI|e#xVEa zvzoYD&6B@)+?rgZvF_#b;vQdj-3OKbmnSZm zF5^~tUO>Z@?oFMKI{79muLEmmVBw* zb-dYRmgV}#5jT@|@}2&v$7WakTsiH0Q|5Blzx&cF=dZtcit&_*$=4m*mK)1!9I&_; z-S_jS-T8g;KV2I4wz}1qM_>J}Q}#1m>gb!dyO&|D40{>zuM zE(Xi-bG_Im&gHkdH|Fb=i3ci!6O#<~hpf00nXtOyv)^4_nGCzg5KTjg)x5zUr3?#f zqctSnto)+Qbc3(JT24B@d)>v8a*^xxBoo*1aZO*wd0*qj>Njl*U)|qWeD>M813Rsp zMSicJHS7NO%yOIk(&iQ?zn=CFxt1!k?Y$(|tylaHUcSDp_O0-Cl)vfXrshYlS_)U5 zKYH4_kiFkcg5%KBxRt)U-<%hFd!w=Re%jr|4`W3_XHHuZ8@GRX)t;aaHH*G{S)MiZ z(<>WXgACAu_kluy;7Y4K--G2W_Dpr|3gvwEA)F^7t97b!O4XwU$x^9v-P)fYkL3*x zt?@Z%$Z8~d=5(X)a$)B4aJIWv6DoNLbF)7u>7%t>os@)YsQV1-|PpZjZXocshP-jsK}-ABrx9zK`|MHw??0 zeYv+Y{!i$VHD(tB+1vZfW@#Dhn&$gm<-)Au2}aq!>$cp>%zD3e^`{*#I+v@(??`UE zHF^2}Z;vMa;@zryz4yIh{iclBOSfMC@h){--9J2R?6H$oHy`YvQC;G1}|T#uI2!@G@tW!)^T)HIZvPKY zU0G54dP_(5(c+CDQxEx&p(IsNv+eI|@wKP$w_Fszw9u{!Eo-#n8qkE@%jqjK0i z#Jk?{iduveKC%jC{cX!tw%~V3zsyy8opUojuZh1O)Ae%0Wi|0@evX$XXJk#Rvn-Je z4!Zj@?!xIuaThEPZfY&w6?V^R>6@o}e#yP%dt?{AWgqkM>$Sa)>ixvS%cU%3_g^Ty zt6lM0^I`R>%O-Oxy)4&-?@BBW&g`#}ie1ac(!a`^y;+vy+KlHvDx}<<+6%PPRYk?i zJ$8h}+Gfo9w14^P2=k9|*R`fE=jy+$v3YTxVN%T3moLw6FJ|2qI-jqG|LeThmz8%f z|MhY0=HptA6GgUcd!IG8@!n^SOn+{>vWBRqpEAD8y!AEe_v@Ei>ogb4&$P96nDfal z_2-lA&CfU1X6^P0dVf1}*W1kdl_6C=(YKfVpI08|u}yt9*WNhwJ8!N%bjjR%vomIY3D^q{Tutf+yRGXteV=rC_WkGjpy5J1g;^-m zev=1xFP!jY|70`w`_iL}{clT^zFM%H`D|Qi3=6OJ_P|+uS9C>XN+#U?{_$N!-ZKeB zZ^mzX=6;uYoY(#$QtIWZh!=_{W?ugq|NLO(%g`mF_ph&?>%6RL|H7VKIfY+xLMs9@ zE2ZA0ZQgNwv+#vS)nfO1L@GiaT)OOU{o$?6trN=i>t%RK6RyqF7qc#l-feNV?B&xx z-)`Q2@;0GBZfDIlC!H0`pZ5tLd(QIp`ud$Vm7SMYY5%WFeeN`U+K;Hfyysh={}pXa zUjMA*SJm0oM-F_wxy^6gma3O`A1&Or+1=8wBdQaey+#k~%9@qbU|9`Sl)%~c??)T5H+%K}f>)^g5_NT}7-)^3h zS67qy_tU=5yPjS@b^Gb})9dHjpS%66^z-M>U;q4REtTQ8cg$n?;}$Nn*UyvYoPW7z z%lyx^_1S+{)r96wzHaSrZ-2hB>hw0twV(HgW>(Ezb-mcGxb9Tu%}9H`P1VumVHFpx z-YwqJJFoihOXq{eO6N z&*ew?m9fiX>*DUIz5o8`_x;4Lm+C&*#c%eDo4y}^Q&T?b!SucleVe8?rKEoQWcBp; z)6#SD)30mW+r_{C^K<*Pzt?_0{SvqN9rx=czqR&nIQ0G9>*{OkZ@tZq*M6^VUw3+& zWiQMhtK&|;)O=M_xTQMo`JeavIl|3Xr_QwY|MTO{!S5EA{{6W0)Lnn-$4_DB@2~V) z{%Y%nH=JX>Wj z7ca5Lv7zC+^oJWFILC|O5)b~ea8&G{Z(B{EN(LpZie?7J_vQ~aY7!_LbuF_jh512Y>6ny^(}_0OT-mB1b14@PY!Y;rKGB zHTXj8y}HAJ-+$lSG$z7l(x3oi?DrK!w-D1M_xu|gzW=_tIh_cfnR5tysAHC!O+;GQ zGoOL+{rAo3=ZWxHzJS7mzic*Uu9&VvFElFb8JX_APd`787@sLP9Qe&!k<&#)^o}N6 z2ZqMcgv-FhF`95$1RO?7Tu?81w8Uj(5f~ID?t;H{=aSf zpIy`U_+>l^zw~6(?-O(J)h`pElFY7L^E&Ti0{M&AW`M!s%-q-SNIsaMIZ~psjw>R9(IpkJ9 z_kG%C(ObHIOKus?sNZFF9=-DVQNhHr$3AXua1u&gyWkts?z?I}&p%(t761PxbVAkY z1s}ueqpQ}2vTXmpJ2#`OZT+_!d0`L#6^i{j94NuNYyCaF^*gTr3%?vWV{28SMUCZ& zceTE9?+=$ub^7u)EV%J~tk0`o-}HKZ#WvlOoQB>Ml@DuZ_};#@imMN$Uc3^%;I@40 z|Cha&<~-9{#(dk~-#>91-@|9mtV%>}`nr=(a@Fn6D%pPdV*Tl_S|w%c`6n%xeR}`a z^na@NvP6EL*Ps7CwC?$3ch=p`5`F6qZMe^^%gcU$jo3p^#?QxpFTe2fwceLo_dTB5 z#Lh!+90nLOGTk#>9njT`;vj_u5@nk!t$yu%n0Z2Vb9T$LWi0t&XI0l-yuSOc-reib zj4w}>a@|R4_)(m-e4%{*lXHzVx-LhY-@fpwbj!s839Gdx-z&2X zc;-E;F`aq*;ysodk&W^XYl>);`znoik5A z>|@-`+jrx>pS-r^`K(_x7BAZUc8h+C_MNz{I$z)1+BU!aYLeW(tl4GT<&PbXn{sE( zw8U)@M;yL{1^551yUjPNyy~xoll9RX!7F|z9oVx%`1v{ed;d&6)Ybf3Ytpsk2U;LB zIILxz@q5j+tKJXMl2e@61(BzpGk?4f_m#Jc*En(aYR9X6ZcXbCl~{59-#fo$YSW!K zn@v{7PW_GepKB`>bFfhV_E#gDJNMg9<}B3M%JlSbBhzDE){Ei~KR&cOGkuo#Uu&^` zu6+I|si%9nKL0f8mAL**`fd8M12r6TFI>|o6GKU~42&#xyBL)B*jI5c_=D2MJHRe> z<5k_A{{G7g7T$W8S0noCuHT$rH5cB$mb*3igF$S|$vwh(>)RgwdZxEVwBTQTyxgIy zKb{$Ex-C3Ke_Hp3keHe^rEY)ycB$`J^!RU_`@t{EH-v7ug^};eT4t;#Qcjxzoi&vh_Usr9|n>H`o zMt#|rz5l-J%@eELpPy;*Q|(NeweRM2g7>O)Tc$BRknS~j-x7B2!gsZEzfgjOfr;aa zOG87suhyg_1=Mza&GLpc<@=(HPyF1Kcb_*azp(rI`_`LBf@fM^xN{}q-KwR6yY9}b zlX1AO;joX>+P8Gy-F1f#1<%Re{XTZv?9?6qe+gXc_1m#euD#K%%ersh-HKITGiUhC z6LHONn>}$^e7YlgA;`=v@ZsNqss0yHGC^a%-h}rjWfz|el_=cu?O6f;+f|`|X1!l) zJJaXznjPWg>#uXaEwldO-fS@QoPKWE$FFa*L~TCRm`J^v_h_%P!M>FfpM+P{?yR|B zcRg|U`{OIm>8l-)#t4I$hKBO9+A|)ZMM#X8hjCN(oo|YtYInV>dp_~5T|S~ChWSUk2WOWpvk!kHw=!1r!@do>51;$&@o8Gqv-XM4>jM3w-uk_G`S96? zV~NIcXyL2y;UP=h5Aoman-?5FbC0~I1LNamOs8huh*4fP{a5X-ob9vb)$HQxUDtd) z{eO)f>+J1ZUHPWPmDL73&5rTPyQ2+nyuGq**Y$7xIzP=GoI9MT`EBRrZ0)@_P6U2D z%w>b#-+J(v)8NqW$5$;?QTwiTOB@adKAF6uRC!D3`?rqX!4tD@eGFSI*|sJ9$P(oZro*)$Gu7&`y$sLdXl+pYxGCC z2ZasWK0UbjC^O~f)2xiGyBEr)C2pJ1zU|Z1_uGQ^Z8?9lL`;V5eQ8jf{_;cCXkox{ zCBC7d{O{`-LTH)CBVqT&9T~ij_4s@8wpk^v$vjc+&;Rgcpna9y3zNe&4+F|M{yq$q z;Pv``A#B5~%botq{eOM@ef{C(9pY7s>t^^rdw9A?u4->x#+$IjjrUsf!W*+~=lRHq ze$Q)N9cTR}%=+&9-!(RsckVt6_dfV$_UzRK{|z|#zu(%oxOPhu(}UwRvAnzbHgCp= z&4sKS74RMttGH{vwnOdegfB%)4Yn*(FL$V^xq9)+ zleZUw58V3x=$v=(_w)Pyl}Lxp&h43FzBM*Lpk~2=ip4iCYUJndz21@Mo4?Lv*Q|Rr zd!sbo=4NQi_8YyA?KiEuy?9Um%V%Hu>$lEZ=JEedR{PT`;j&#Xx4-{gs~La%Z3X(; zmIKFy6dwHD_-ghg)UcHgKH!+iIzeAomvvM7ub=tmDX-_1{WZ|}yHw)mXO;?9lxoU>q45^Cz=w6UqQMTR#dPC$ zv5xQj_1vPmX4;-skA{rXXd$p%8LMsixlBh(fn8JhD=eL&TphP-08%CWv8mgmdbu?Rz7FMI> z>S%3+rPdv-SdrThqs$!5zv6&YW+){oZi9eZ%j7rOP%Thbbu0wOkNz z3f@1f>dFUU*wDcb1JD4NPiSxesFB*Zi%a92?6qH8uloo8UzPrA+OBIRPo2O~d9TDbI3|2upX>!*_8gGhm}|Ic_u~2^pWpwG z3O9lJ6z-ggsSeSfXIWp^>sfm^ek-pwwAp%KzOKW8-{;ra7xjZ0q#q8l+QiOYo~eA} z??Gv%qY&r9&9LCu^0hzZ?hoxZU6L31@;|^NvNRnI?4EYjYaw`?$F8g4{cYb3zZYLI zdy2MOqN3N~U%659p7_N_tstKK^OK2X&;LJGOIW~s`OpPFrdyY*{9eJ^P=r3(28tSR z0U+>U884WDpZGHoWcGCgR5(hHN;lOM&0_K5~eQ@Uz`0!78b*~T3KtwoZG&sRgi-#E5 z!Fl1Ia$K>ulQ9b_FZxA-#p=E{@)XK@jd+Z?(%!_H}~F` zuK62${Jh7Cz~UT40Q{}UVWI^@>m(&!s@+x5b3U%2|& z?=`!c>2LSjr})KwyPI|Y%j%I|Yx}R`YHRMd+iUH|A?&Yrh z8>;`l{Pu>Jb%(+#v$lP?dF^kz-R(N%=J?d#moJ?Sv%As#*!KEuzva)bRU)zt=BMU7Vb2 z7O$;v>;F&3RjZm_F?~q04Y$6dZLq8%;5mEKy3m*Z1lOrzPI`BVyJ3e)D%7*3GTAPC4W*{e13u z|NMyiyWgsvN$b84QZ2(%Wy$tU`1=RLNw+j_RR8}WQnh&Xg}?*9e@9(UUEFJ(xq^A- z^s?>i6^br)`n;`v`Z#klfA!T{4sSmd_{93Xo4)VyftP&wAg!zsyYc?A&a3pEZ+Xo%>JW%PsrYXFfQ${J-J$ zd#%+zy*odT`uZCG{&4eC|IN+H(8yXLw&MK$2dhsXUkxih4&-ZJc*lEqzuotKahdPC z4d!ZP?6}c3d-v-L+Dxvy?#W)y{F^7P*8O_P{>v*qN8D_^ynY|U|5a^QbJ*hl$h@gd z{23bkXQK97QJ>E#tk=!U6L0+A+jN($bVAmmh8l0ii}&nR?|fj*Z(m_|>rujgEuUr5 ztlLiC`n@6c?4iqdj=R`r%4izi#dxVQ{~h(IjYuP{QAmpa?OvwF%I`t(_i)M z_~h~KpU39Y8KS0P+pllCm6yN%SFrWJPTn7ta`!%THGf!l@9VYWH_lt1x;J5Ie%`LY z3I8&Mb_=ycmqz^5IPGT~cV?bi;!>v1H$Met%`JkAKYpkN4gK$Z-F^q!baCiqoh4QI zc>d!});^KdLz3_bQY%H&d9Qf%Gr+V_Id>0kf7`V@1j*=yzN z$6nvR{yXPxqPgkLg)Q42zka==-7WC>^s@33`F9>J-TJ5MV%?V)uK$%fop*_{yWX?= zuWP3H_vgOasb)4dHaF|fIOo~6hxYNuWf>pe%Gd9A$!<^8w+GgjZEi>T??0@tEjqX8 znpp5Gu4P9UN?vcdw`bkrl-&LQouc(G>1|*CywbM*>6Kf`DfY2kR(oEQoVopU+oQu_ zzc2s4KmEAUdHr|)*Tl3QUEO~+>F=r<%YrBMf6Psv{^tIbF6rUV|MtDQ{N}0FzghL= zKK&2cUH!DqR`ko)w|BL#>xFfHUG&)7Ki2&G?XbGFD;Yk$`|@|kzJ1y+cHGRJwfz0u zr-zg)^xr?uNwp8%SN1D#-M&I@uC>q4%jxn>+4c9x*+=VteA*mu_T9gw=AwV&wlawTj8c}=C9AXS9lxW*>e5$ z4Mj!s-)(8-J9h1~RSDZWKRLGEzj9Nk^Yedu_8;!s_jQ3reP#W(9`&2txA$e%i(lIF z<?fZue!k)%D?7{mbIz0MCFiHq`5!in=1M*z&OP(p z;e-{MDb~Fft!Zn_*)6+1Evc&h8Ta0L>*ATW0=*qyr6sFRFTJ6`8^7XQ+uUy(mD`rz zo1d+9^Iw60l+@o>FSW1lGXLsv{_Z}T&`(a^i?=rS=STnCH@jIl{P*j5UvEu6&#Jlq zY{~!dwbM__WQy8EWX4WEn<@8s>2E{vw>Onfy%mhwwSPI2<2=8TrQenvTefA^!qsL^ zUar_X@AI}vOYa5l;(i+beQx-_U+a|LX1~n6s%OJh6Q6TGY{P>4wz=Zxr9-P!x2>Mq zH~-GMJIj*(?q0e>{b1qAu)NPZ&(7Jt_QtwrpEvw>yIHi#^6ZoKRVC4z8qaaB-}ODy z?8C=ZHK~XDPRYOjIIDcg{(IBk-+i5|JiqyoVaS%ZB|f{}h2;Bgy*YDP(lsAZz5^Ar zVzouuJd!!+B4vI;M43M!ar$UbX3O(A$8UUB?rAt}9P0{<|uMcj?AZ zNwwhRD_5TVTW7aWw!FUL$;4kDXMEi#dwO+p^xNCdZ@#xp`#W?06~osnch2`cJ@@m9 zm+#u=36(!Dz8{slLNed^LFTK=la}$7{r;r!Z~Eu;fd`LT9)G^Q;@rjOOF!$i+;FRI zPMi}}zx4c>r(W~BXX)9@PwxADxq6o8?aNNp#~Ld5^JVArUY~uwkbUiQe!fz<{lAyQ zx$+78T)z16<*#)X?wS^o_TRtEvp>9C%J%IR*_f!8Gd|P^o}IRAN!VQdr;pD6EwhoA zJN>e_>wouipL+9v>XTom++G*8?_9m?)`I!JFV*fSy>R?od97^!^QYSr|J++xQ}J={ z>DuDL zX8HV%`@#D2hc2v^c=}4}$|J*$=zw_UoOYf$H`j@Ut)-_MqZamepe))%gee?J33O(}h zn#j@b^L|9G|2+NEi}T;Mo)bKI>Uqf3*q6H}U0xNl<$UXT&VPS;O`qm|-K(-}ZO>A* z@LOMg*ed;tUX<~A=O6vQzZL8Kj(=NGd}Be$?Wvc)|GBFgt5*8=mxSi_r#H+Vrzgj` zKliAeUnIHdqE~M9_N*gTIaO7a_wPGDf4T0Q_^)Fk`_0!~z47app818f+u+~&?({!(kw0LbeuwGQ*!Qbp! zPg!sY+{mx{prM0V**mu8bL*L2y`-bB!}kdU$JI=9JzpDmTm19yT^WzNGYYpjR_^8h zQ?c0L?&HVK5ifRytzO*Sx$BY5bypw%BCE?&rfyG;-?4qsGPlqT&oeg#=mZ>GVr(4W zQ9Wnh3$*Evd!u(>?{DE!}s|!XIh7JV zipy=g-Y(3Nuglf#|Gl1{>sv-zaI8ql1)X>0kGlVqeF)lOymkB08mWCE-&?-a&WV<4 zn{(Ro3dft*6Hm!4=AOk>V#UcH%o@CvM^S-G0^{o0v4V0PkDdiJU3nEAsfSt-4%v-LadvbauJ=(s=S z;5ydN7R%b6=D0avHB;5Y&u4!KcoevIyWbVQE6Zud#dI!QZ}F=z#(ehk^6&Py?cDZy z$6n2C7J-pXSv9ez+Hc?Wtebi**wFUvuQT`G{#yO*Irpl4>|e^(J~;0q9y7i9L*&~- zjtuOLV*ZymWax<2cwSz~-+p+*b=Ftv@iEh`#?Q}lj!vEXqHcF~?3%Z`CO4e22##BS zY&+MoEg}=iqV5W?H)M`E`MF=I#2iG<9ip(EZhNXReiQ@bG=_`F&e$ zkiydYLBE3!DC(~}zx?=bgV0tmYW=kQLHBJwwv{ z1te@;%>DlM+aO=xgFIWWu3VOP@AZz8i#OaoHcw9Okk8!0RktoiynP_>xo2nP&+B2w zPfxyeVe6}dj2lbN*tT^xt*~lzTYhETlVyFZ^Gjp4f45pDub#O0&#tvPPhT9aT(fPG z-j~<=9(@1qSU#tt^zG+#o%yqNzc;S_dT8gR<9A9vNysJN&eB|Q+qYEyym--%65-}* zy{XJx{r$VnuVd0UcYDS1;uYuOyN<8A`Q`B0A6l}r|JB6WwYtw;wd>cJk`IUG&bhT} z;>jzyRjZB*x%qF_tn8Ehu+L%VwT*TEzZ%Y)zUThDSJv|v zvs?Mcia*z!|M=M~rhltn-F2M4@ErH?6r#s_}%dU;PTKi_V z-kN&vbNbD+m7kZb%3dOT{;S7xT|zOud4a}a((x6i}}B6&;4AKeEIF?ikw$- zY=i%ri7dF}_}eq?-JvIsKX^X>)5jE)x3FDR%73fxD~Cr5{PwhOKNtIVV$(-`mOcLG zKDV=+=1 zL_IT1c$cSR$9Agw_4mNzADy1h|GaeRuD!j_7nl5-_d23`{-#$ILd^Gmt$T5l(N+5O z5;42_YnClMQTx1SxI&u=_)nSWuaPsiJ}885jU>|SiX z?VWDXcf8^D2cO>syMv}g{QOvcy`}g}|GC}2V$L&`m3viO`MF`o+8x_%bS}ShxSx3E z-T4N->>cM@`#!VRmi=nppLH?)#`Ea6>pc$Ncb+%peFfj@i2L(@hwqwuB5T#>9=k(U zudWE}&#$n4y7l6__T3*9be8+SEROsBp-(pakL$xX#Sd(LmgO&aKjY=*>#z01{9gq; z*;*3wqxkA`EnU7vzhjp3=WKoJ|MIiWzTl6ie_ts-`uoxDYl*y}Ip)vq&Y$bb+?)TZ z`cBTW5u(#|J{3TSAV>qUE;6#*XQ%Z>i?CLvi08I{$dqcI`!-i1c8_n*Ki{WiBIozot&wf;D}AVvbd_uMpS!o$ z|Gx8MLGk0I%eF_nu3oV(d!^asboZEzOTR68uk%Xe*?a4EBGdk{PP#QK`d8WF`uHPd zhCF}&|2R|i^77H03GlUOb-fIX@8chPt%B5WH5H8PJ8ip47Iy0wp0e(=NO<_N&$Q!p z%EwgQ_!%ExESakJ&!^NdV?p-}=hz9KTL1L#`{DFlg>82<*S?se37zgqF`63;F1OxS z|F7ZjU_rTz_sR#8#Anabmot3s9lFuDQP0Qf!P*I#J9Y+)7`g-Q2tk+Hpn`cL}zbR$hw%XxDL}Sys7~7z<7Z3WIxcGNz+zQ|Q zr>)qv0eW8(e<{s+vN?8Tww%XgJ8Z@GC!{LSuF+gDGns@@as5S04qg!}WoMH8o5PpN1L z$v2rc+loQs|L?mBeS1nje0G#&x4R$nvUK@^i8fUaew&z;Jp6rmuDey18Cx%3`GZS$ zuFq1ts$5mm(=TE%@71E+pCA6=yUKWQ@s2%r?kw$ouurFE>BT9NmskHhAHvpObk)N! zc1HPz-OITzC9?+Xz5h3FMcJ$v`DMCKvqf&_uhtIluL*hZPJio03!}i?UC$XNoZ4{d z=kmqdzWt1!FZv>`O@Gz?*RQ3YUjC}@+JEkH>-`Hs3V+LHG!?DO-YU-ie7=ZD$?xzv z>x(|NK2vAkEjp#dz0YRRNm<4_ed+sx;D&ETqf6HH9AEJ5 z`jp7vgZH~rFJ~N|XSJ__WnJ^#TGqTg5s{wbv-j9E-D2yW>R!1#Au&|ZM(V=rtuhw^ zto@V^r5Xf0@H%+Ty|k_H!@}G5R{L;G$%s#u-OP96Sn-6{QEw|3{rdJ|lViTfzt8LU z-CF+c>RRV_lbKGo3oibxz4h<$4;yk;-L308sL;RR+Ch=aWgC7kkv)0Q@zIsOFO>xk zYXU;oU1@z)!B?{2O5>t?2j=F9i1Zy_eZKy4#h!Dflbf1X)vsKubC<1jpT_p75_{%o zOjsVc-JHvbw}j8*`GkF+D%Ll&p3Ajbmek(b#q)E|qlE45BK_`m>tED7bm(U8x^+E# z?|1p1nr~JlKi6d2?H-;i>wR?N%3U*8`^krd_gk^q{k#!kooOQKkeQjX&zk>^rbXDC z!@u|Lv@+6MutMRK!@=#VZ|^_k@b>TObFXD3@7&$x+%rXQ%iA9_9~ZAFdUBwzU-J5Q zzvo=+#cEd5trt8yC-AQ3N%6hU$zjiZOq<$Qo>S$TS5YlrZkHeW_L_37v{6sD)x((k zcUt!{H3hT&yu&8@d8U@bvOM8c&DK+2-a4Ys{`L97LABBc z7k6eZPrkAEd2QdX>vz{$vAv22n{eG&nJ4u7yC2WbbN{zkVH++`xj%cA&8s;N1NZ*w zd*T-sA9~(*Zu;$gwQc8{Z?&J#=9cyUx8`HU>F9EafVAZ6qI0uj_gAw!gwD6?_Z8Xu z=H=I?L9*IrR{K}WzWuvv&-QnF7Hzu~)IM*bz4G0c4qtbL&y`R(d*ktW{&I=Hc7d~9 z4;=PbUpQL4>(=orwqK`Q*Z&ps^ZVP-obs;TSAW)Rd+^vHo@>3RLZ0cJf2Dq5?F%fF zJHB1L=J9<0I~(hEEB2Sh*PlxCU0vw&`vb=_@6rdE)2v_Z*>uscdee@7Tkf87Kl_m3 zgT|LR^1T!8YA#s$U{6bFo%hd9<-4Kr8<~5puKd_s_Oy>V%bi(vKA+F;ig~YpzfLo~ z{(V!~pM8ZlTrGvQJ|`9Nl<|MHw3)Kj{`T`(wh0SOuDxp6cqQG#U+hrteP*>+xtBv@ zcV9l|QTkjme2#tXl;fXMRxj*}dA$3=y(QQ0b}n3bzH_(sR$I{vb9=+|R!p0ByT0-H z`S5zaA2aT)Za(Spv~bSd`O4nx|78DMH558;E%g13z{T+Ui?2+1{MN^+>dpJb(N{Ak z^zZ+_oA-I`l-3*<{w#U#|9tc0oRYYILgzPo1zVT@yjxhP zxPGde_wVXS>1%h&E#r%N{<}C`tiJ8Yx$Uq1Je=tg^^Rf5d!FpxN8g@bcXRK!y{5na zI6Ld^yOG|q+pV%r+p+I@>!1G0MnQW2{k+wOyUwkj|K4hq_SqKU^raa`&U=)XefaY1 zckjfjmTt$VeBXMp@J;>oHzj?=wLf-mY`*)??^&N~9=lz=uc`3_YyKa*9d}Q)+A(+f z$@7;jLl0&=y**cB*WbiHezN=3cfWlVv$5m(>#{coUimdn4%%>g{?6LD-ZraGgvg3+ z%gR2zGtFw_dMjg-lm%&W``Ig5zWe#_%DOU7HgU=OmznnW&MBX1x5~TYdF}ZzZ}+rN z%?e&{9}qOlQOWc#Tm&|kt?=P8OU=jPRo&+PyKX$?zQf1z?CA77>s=?VeV^)QuPNp) z{^F(h-c`)o{@oY9`E0i94n4h~(AbW1x3B+Q-y9`3)#?JPWBilTOLSv9tWcVC4t84wExOauV_3Kt`?gv=UTCvduEjH)vsq&-|Mmolulf?a>4ZG z^ZRzZSAAN%g1dI#hrL~kwQB>fdhgK@D__lh&b3l%SHdi})yG5U{rz-h+2>HMYkV>x z`k!9BU2k%#e0QKg^!w$m;uWO_?(M9_Jqez z&F8gC1ii9Z<-~Svun#FXa$8$WV%x3_)8{s=_GPu4+g@{V|3dDW^Ym)9@2hWJ`7~|8E-&%pwokJzzdf|ryH+)(+givb zv*K0&V?g|mGu1iT1x8stq6ODD>Xu%;er5kfkJ}Zp_GR;IH{F+&i{d(SWTiuGV7&MZ z+f`q^7@yc!opbD+p&xss{z}Hrt)K3c{=8FHzOLBzI_vEnD|l@EAFuBI9{t!<#N|Tv z+AyipPcByN`|v*X`OoaTK2t(={@uO#aJpsQ6|OEdnd|m{pI%%w>r{w7pJ}qgoVJ}2 z2QL@w)(h`m|1jmuG`&mJB2}}_S!Py7(_Dujetn zey1>TcDQ%yUa4g-18XndW6Wp28@&6Q;oN1s{?+=omYVskUp^=IircbRrVnR|`Q4g$ zIqZS{Hf7dXcP^^T|E=Zq`H^?wscVaJepYl|UZ=&dHb(QptfskkY)JxfudAe<-3hZ< zd?>`WWSt00v4hgnJI7=EOKTS&Sn5`_YVvezoseqruS+($TmQ{kRrl-G|GC?4tjs;~ zx$D%Bl@L3(>&m+N|pBxw6_^ z9Y;0S)Y=6-IOe_Qs0*LY@$h;7yPikL8r5!n{AsO(&D^g6&)3~86FdE|?8Sl^ete?G z*L+@mV50kS?fvrv6=VxeKB`&&^7D%yahEqMXb4z@7aVge;|=JS)w|<&>ayVc<&U55 z^KEv2#J{fOUWvlS6;rOneVw^8Frln=kI1BNRd>E;&Z^q`V~^JUy3DtG`p%pFtNFH1 zw&m3GvlqVdaQ&Kd<>b+Ws{LKL*&_SxE9FXk%%?p{b3(Q>$mQU_sWay zyX)|(;>F)}SFb%fBm1`G-FfAsQyU|e>GyL@IA-0y8{#4HvY=E)4qSc$*s866<&qEOWrQF$y@#@ z@ZO~@zmESZuA8sBZrcyZ!m!}F*ynZfymj{atGH_Os@vx5wMtvL+0$m;ocXaosyAIx zuRpcE`SiOPTkmKuSb6@|LaX^tK2Lj{y8Pm<>b={)Ot~n1{@7%@{7-eC?x(rWRroV) zpMFIe@Aa9}`?k$~xqH(2(?{9&_L=*BT>oCfuYRq=OZC!Y-pXe$mrr9att$At>vBdk zV_yBTA7w&(@3y5pe|b@PXP^81C?|E9saLBn+m-f3y!d?YxpR5bZmHF8j&?k{aqdcC z%EC+eR|1n)7Ee;!Y&hrI)MmN9uXmrEx*z`KMsQdC)$c2py{cLNUSd`3-g&2%Ztw5j zV9Q(KUAp_?^Zy>tug+<^eY$SFpMBx8$$L8YN$8z_lkN@90|K)_-BYg4BTbqBpH@cea{%zx9hkx&uO`ZPEW`WHyRXOQA zl~dch1a9~5>$dv4&rUy9>-u-UrFookGI_d)*Jc^{Rg^ z-%PBBihWS${_*IEi}F(&(QLkw--|rrY8GAyPN^=*sQkF)`Twgc=Jn~BJpEc*cr>|O zuGI15%PN(b@4bJ26pPKdlp&(OFXLr)-qWQkyDRp+e^ImOK--*08|HlCn%Y0tW7qy< zcX4;oK(6?GI>`YS9aXKXPd!@w{!7^d*XzGcbk{KRNhubs@O|$u{zq!xgSFgWs$=h5 zWp(V8zvN-aDmP6t;YHa)?gioD`mqL=Tf<^?O06YdELw2ev-0DVlYH0CnjF%KOAlTA znPXd8M`yNeAG`eo9BKqgs-ec}jxvLgjs=xXz=|QOYnz`%OF&+6SH_>p% z+O#(-L+{=^5Uf}IWa|69H-jBs?3s6|t~M}8yy|Ppg83OGJ08sIaaqF0Beij5_a?r% zKWDtux-iG>_tKE0177Pj7ya6EFXY(j!&Ba6{#|uHFL2+D>bgXWyT;pBH+=WWi}GfC zKgF1J|C1_?TPxUV&S&ZWlsl*uQ}fPa#{1&ei%S=FUwhohyy91SyUqLkb)4L+^)^#C zxoet<-jOT6T=-V7Nvo{Jwrrlo%g_ZT-A`<xRc0tCEN88rFs`~hQqpijQsrVE7 z-^?>RSO2$9|HF1sfv_pIf4=YcW?e2aCCE;8#j6$Ts;^F+ArxA)`*7h*<^`4YR^=;o zdD>>BMQuE=XGg5Y%^i26#D899Ent-{QM`YBhU}y+Z^nB82UOYP`BNva{m(dE*Cx3s z`fH5xzv))bWP0Acu*f=fWG>5=Uq_ERKB&m~a%bm*H}hM$biQ=|v2xgRt@3WS{g4j3P60x1Mt|*4WYSa_JgdJA2)mssgQ@c5^J*{Yvg#SnU1w#PJ_a^EJaytxxy< zF>$Ht@_n;TCjArnx4uuB{fBJC$DQx4yqxhcIok92oE`C7EAQ+7`!MhJu0G+{mJY^p z8W|B6^X@FWBJ+sjMC+U&cQ)25kAFHD7a!^J`dt`Z;J!Zn__AB8&*w@>Nij#CJXjQE zetrJt_gWX_)0GQfZ~r`V-cc)!FmF$r-*aCb(O*9C?sDxNi%*@Mduz|-D|@%u&fa+Y z<4M(OG*{hf5L2IcQ${?w)%|ftnQaG zYd){IS9Gh`b;aJ5c9v7-SQY*FYEil~UqN7Y+q~+QmAqY>mz*#Em(#O-(Fw^S=>qQ% zfsn@cjcy$Bw-=v(zUzEp^yPK$zua)lUn;p=@%whO_aXC(VjE#l4n`_Fe} zeUCfadTn!Z+?3*eqrCT*w`KM|`mWg=UsHMV_5MBAZtgzSZ^itjB+sMUdh3hb&;9PJ ze_G^}d*?;0!qmg_ndMUFoPKrwjm6}?Yn}52Z(8QR-_KXH+PHJBnN_{Tg13EH(yU8r z>k6bxk8j>nF)K@c|G#xMpUxOBHTk>u$-B*NZ?jXkYwQ1vFyAO|oo}ZfqPy?@&h#}m z-`<_+#Q5t@p__K~HP(9n8OLWf*lz57q&ln{cXzS0)cDyoo%gKCnj54Zuxp;W|sE)omL4)i+)~qb}Xnj`LTOp z{@jwB)k|x$`1iGc^V|Go2Z#67^9PPEx02YQXa4F(p>Ftm&AWl_>dz(q?A`rszwH)B zlakxlzb}}(Pk!g;#@DK0HI?>Jrl~&qRm%Fe8c)5M8FI(+(Fe(g=Y`*HT+C;cRp1!_kY=g$j!HVg45f-R9#eDy?CbGm5)bdz5o2Z zJa^Zz>(@V4l)Af}U-IC5!vE5AhVwBGuZ6|!x!-G568kdDeBRw7-Em!~7p|yton3kQ zPuxbXdhnW4(BU=pArF54zxuO3t$!|bg~);VN)Nd0`RB3ui~GsEvD+In$?IXaf^O^q z%lJ=6=YKN$x$*L>mrmX8jrU(TeOKI3I?p3^KDSbQK$rNW^QSehR1}6PZhq{#?eo-g z^Oti6@6$28z+n}i@I_=+G^^$QUtUYa?tk9$KCo$*Mfp#q+nKxM);{z8Q62l@-y(+( zKObo-@AdEhnVBthVt<~fO3?%#@o0IuOH;1<#>U9LXjw(w^E*M={m9=!vv@M@2>b>`Fh32MLetFl6*Nd{|6Y7o#y?|5??Ob>YKhg(QO^`Rn*<+XOC{%9 z)muE{pSfXz_Y^Vz@aomS@0^>mj#+)*_u?p#gsX;6zRh}X8NH|Q$K!A7W~Mt=uejou z&=vY6>R$iyV_!F2y0SuQ!|$ArSH9-@@<&fSQ}{Hw>iG2<3+pK>%a%C2^E{)wZb|ny zSL;)in)$zP9hcLsS^RkG;saBxeSX-z&iuG>$z#{jTA7D+(^k!q5h;q@oqX^~#L{*X zn@eApZaV(?=-cHN`jlUowElj$XHoHnZ+E|+_no4;-k)6F2nHp7-tslu~ z>Ff>t`8()V`_$yh;0?y|2iw1QvA35+ZsG2C+Ea5T&g*I9s^|JIcAit_`ltD3v7ZVT z!^;_eue}j%>s%aB8WQ^crsL*Us7`qan$2a4*KU)sICeunY1|Ic*K&wqaX z^Zl9$PoHb8JiMS?VZpZkxA6!6O>^5^ee1h-_x|nEW}bfiv+nu4eRm!GzSdjmtgMxp zcZ}Wew4aA%q58}s!9Rc37eCzm$7Cw^`ItEM6}t*{2A$SRbIxYgYYFzxlm~%g<)o&7XSTmXzK#d}nx9<5vD0UH$SuJ)1d7uShx{ z{5yA9_x&%|3$04rCtJU35x0J7QEX@bLnfk>&vSlq_1edMogWP>Paoac{rNp#i!E<| zeciuFyBWfM@r8e!YOw50Lh-MB8L37=^ukrkZ>;`ziFZ98r zW8OJ4w%w%%-xTz&TEw%jrmD(wS&8rJqFUD0l8M<%xpU=g-!1t5Fsb_JuhN>A1&ph? zuB|`HP++*}l{CZ4M{|O7gua$6l*_y#pS7h|??k1^EO$xYQu(Luy~pxQ>}8j2|KoOP z*M#RAS|(kyO|s8?vi5!9?B#mj|6S6nooK--ZBx31`L*1^cYmu|X1RO)l-nj9`{9pC zn8213&lB(OQ;^noi_0?4OLW)Bm%IGo=pARJ<@`YfD!z*E%4O#4lFByOb?c6sV}Adl z&lzvjeFb-2u$8j^Un=fyRb6#|quc+Al;~}r|K_OgyT8h<`rp@=Zo&D_YnR&GyzRZb zd}(!2_WUZ#=ieg2N;v{1KJs=P3) zW%F6Tc~w?7SE-iIu@JWwS$adGbjyV)>y+>MhbnLRR95#pKDq_+>^nZ!gih7mALe&{ zy`{$6-%t5MuIJUu)$X_!@^oMQ_ezCG@^PA1}V z?R8O!$}1~O?tlL~`HakkZ&PmW-s<)$ds@T$D6iIUBHONW&8hwpyCpO_;#JJc-z$IZ z+yDQPZSiWiJwI($?b9m^slB={d3RXA{qM`lCLCS6bp6ZS?z6USQ9N!Y^&AKNbXT3_(^w(9Jc%EzC#E`R*p(!TCdcF3E}$zd-oH1&6W zcK6cXKkHui{>RdGaenCW9+-`S-d`bK$EU^{p3Ex*gY)3@o{m(*(JOC64!Tfeue z>fPz3YfenRtZNs4diRfK$+?fu3GNf$*k64A)uFe?j!#Usa-)ORFJ|9Ext-Q`>OJeRXPvZ|A?{=TGfZszX8UFj!x zn7)XqS}M3?pMTjuoie{Eb7zS68=So_^!JwGqcWe@=_aqIw4D+yFY>wlHM6tZRU^VX zdXC+d-yeTm|MFa#)o*>NePQ{jkN+O6`*J$7T6X*IReyKH+S}eauKBq3{>zIimS4R3 z%4A7ZO!l#U&o@6O+gneWRxBX=$>aWJo>exPOE!jGER?oBJNL;BE%v3NbLLIfne(ag z?}j!r|LQB{XDZ@8Sicng@7K?lz5kWtsfqQ=GjCi?>64%8cQAjhN{r3L=Yh`7C-T3{ zlvNkg2s`^gOT%EqBS*#?Sg$Y+oB!xlLYPt#JRv8#6s*#k3|} zs(QJ@DnG99ZpeXCXHV%bd+eO+e&2T2FS&OYFWZ^L+^RWKQG5O5XNOA5r6!-f-*AX- z_kC|EyM1fhvdHkfscrkM)*iag@1He$m4AJE=<=}gh|lTQW8UU1e7|QUQ;^j0`?q$i zXnUM(11YE&7+LD<8!y)f{;T_`?9TD$|F?TA8*^1(Ut&2ra}nEZedELNeU_4wa>9>Y$2Uy#$&6a?yCLx3w716X8%x)QWn^`y ze*XGu*ISb&PnFf@EMhoye!*Iat*cy)ZOy$Pw%ogCYtGNJyppBz1zFjws~)|wf4chW zivI99$2%_iw#DYIzrkZPM_n#z>h9`w>v`H=#w5)P`g)Y#`I&Nh^8Ndpdkv30t(xFm z-MV?Dv6nF0mZP7U+?UII)au@5d{tOESN*)^lJGSzrZtxQT~T}_a-*}&T<*#vug-|{ zmsRXZ@-DDErRnfE*LrGfbZy>>-7?#G-L90MeD#Cfa*~1DsyEiU60X;0PTs!e+{JCn ziv*sPHOr-1K00%(@>bQBxQlb&E3GhIA#ZjoZgbgWqcsr|CA4QtnP(L~dc957;-RT! z(W^j}Xscr3=2dfU+&Wf%_-DV>|A^=7SM3aqTYF*Olb$%=X&0C6zV&R*-KP^%=jPtc zsh&G~*P#ctOV+;HeoNwNchLX1>-M*d!fs#uo^gBO9A1mJ8dAAu)qV8VSSOCyp65EI zt;XLIv2=|xBikhDreCh@p=Y@HjQT#WmTnRYeBplb;opuu>(yU`tujrpl~v6qck=a{p9Xd-XV;SAUs&=$+PiquJAI z0}gC6%9Fpht#jMotEawK)#Nh%i5Cx_Q(hf5r|?S0uT#afVd)0hGTt(!?@El1OxtBK z-)fekOTC9`O$yT$-@@J+xyK*7&bwy|jJKA`@O(V!QB}71z2K+xpPRojEA{wq(Rr+%{#)t3 zm9gc^Sed=EVveqEDZ9q^T)*fG^W~KGTV`};e6?@gSJpH^InXH}{7K>WPWw{D z8l_ozD_ukXh_2pHIg`U~CFjxB*uV?zGQR(68&#aY8@FX&T_^M7@GY|kMH=gp?kwO* zt-p8H!^-(_4gd0;+rG@p^3izxy+NZZ(Kdsfy_EZ{%EH2wGwU=AE!#b`&y`=FvEE?T z9Fh6{>L2(1+B`X|bnl-<-(7pRyKk6O7ifJnPk7h*a<|;IdNZzQzUBJt)3jT1%iplN z4S`ksSKKRkF3uOcP;9li%2`HMPIjlJ-v7+GdoLW5d>3T%l2PJCEZg>inQ4`apEmD1 zuteP~v;Sk(QJq;I9!?J5e`nQfpG&{RbFZXZe~f!v;LBwqizwP?;qrQTFu zwS|Y2zHbUVJ;@|larq;KTn`h=ty{NN%dIj^%;S_^x^&;%&-p7wrc2mf^}jfEaz(x8 z&sFz7uJV|BG5Jb#_~k&>C#P9v2&ONeU+}Mr#p;Rd%Qw>u@76rZU)*(j`O}R3&gH8f z%=)qF52tVPhRGG=o8J-#2`UG!cD-fe106jPQ^H`^@rblZ-D8%4Bh zHZ+}7SavmE#rz^DtBBGyZ%I!uRQYg5C6WM`O_`5-))#w{4%lg^9E-$6Ik!Jd z=FVL8dD29EN#^y>KSw-Vy*6CAD01JXj6{X0mw(R6JtJ;$pfoMTR_^4{_h(e=UJLy{ zdBAcWPl1}6+eJGqfn&!+qbFxSJ$vTk9BM3PLIwjU1=25_h5!`&7JLeDv?_ceC2#m!$ds7znQb?&b9w&Tx#38~MQ z`ZVoR+{J%iKXuKV@xq?<p{Cw1R&9-wfPYve8#YP>YWrzR z>6=MuB9c3`KZoB>CNDEam2AFE@TD|P>=%1`BU%G+xD>gd%qGd#tD zxt_+${9K}`_s8BTP35ls@&$U?tN%<`oc%=OdwSlBedidb$-LD0apzv@BWw9mE$i(+ zR(9$b-?A#a_3iZv_bE>2mzxyHI)$y6e@btz@v-N{wMV%gM@3&xjqO|Hy!665#!KSG zB|FLlJ6t>?ScGPquw@xFM(EtM`sXIxGHJtdJJ#pfCC=#voXc%HKiL1Xtk<}_%FS2K z>UgM;gs|eQ?Wf{zxy{>L=~?AyKjpI0_W57#$xdb$Nm}IpC6aHM{e|@PGxw<2&i@?} zw{(R`@!gVhA9YKkL%({&n;d*P%Ts-B-Oi^rle_ztKRJ3${8sMbPxq%SU02UjaOw4# zZ_=mYw~7ls$q1>BUALLpdh51Rs)sw~bbd7qw(iTYvAiMqdgitL!K_!6!qN`?juYOI zu+G!1*e1ZLPw7|1)rzdsA!5E((Td+MHO@LSDY$E6Pww5XatjKdH=ax`Qp(JEy(#oW zPMPfEM2p3dD}TPvpZ?|a>PM48pJ}SBTgiLr`zN<4PQSAaVuVf=DKMXj4}A3|qW{gt z>Jzq)m#d}5E;fFACtpiY^W)0<53Q1uF7wvDjY?Mj8fPRH6Iau{Dds|b(0pZSxt{dR z?fT+w+m~2tc1t{+kTT)B;<34^!ira>hgr&mp`Pi8vWban5; z6;Dn^u}z#WwEAh}(%5P0d7pdKj>sC;eYrU+_V)JGzM(H&>m8nq}c7;H!<-3J4N^6TYiPtm)Kvo7JJ_ltJW;@^3AIm z4;Os7YUkDb|I22<9YQbP-(R_ivAUxB>O)P3i ziIox-ubfmm=Z@Cnru6^&G*V^T-xoVtZ9C8B@+vCxQB#@W!n~=>vXRTyF@LH|S#;Gl zy~5+#m3HU434a;iuB+dcA><)+|4#MHKgU~D=AYPKQp+^=No4El#Fv?+_H*CN^EAx< zb&}_v_OBUgx#wQ&zOUk5bI*S1n?;9Cx!>Mm?ATGaij(=0;`Jrh9nIclI?JA4)EN{x zQ{Ir-Im)UOo3z^7KF9}vIe zN$gieex_6DCV?WpSnQ`0RXRw~0I!E=+x$B2C zj=$eyoA~+U-}tDE)-a>c)@veu7tjSm#6oW7~jY>>D3 z(d7~mw_^`y%bp=T& z&DqAw0ywlQMn{&DB z*=bSj#=?vjcd{jq6k9&gu}x!LaqIDqCp&f|A8+W+k9T%EqNXO}QfCpirKxMm?+><; z4`r@IURGKQ1HY9bd-L-LQvc|cktGh(wkMuqcJuRSi`-k0P z|1)W`AAR{^v#rKHx%9H=xtH~q{FY2B2sdblZmB^@`;rWyJIh>|Npm3&+mk{=!D09jw{5Yc53}}5P8Y9=EN#3 zfx<`p(?hl|4$@##K38|`+tbh5VTpW`We&e)i#t`R6Pd3gd{0ePca1F9GUaVom!0|F zR=(!jAr8ItsZD(oJhVA)7R}QQ5C3jq@UnROm&lh>b&O?yoqe7>$05t*($)Vf7=bL?QEr88gJ2W#8p(-pVuP6sZ%ui_ph+RN-*WU_RwQl{#Cu|<=w zRxW*i^P<&-o!?#@n0=I|a_Re3^&fiF)L!g}T-y^;AK;-KD!IBK z>~MV^bK#out*G6aFF2Z`Ez{eMTj-sdTBQ4QGIOd`iW2*rt-L=jcdG;Nt4(n z=3U)xvA)jaQ3UIg?Qfp-9)Fr}dDZ3o6H8uMU*k%Zo966a%)i9=YP#sJ4Ym(;?%cIo z{ke1Lw?*ft<(TetoK@C%uQH;0;T-1|VXKyHvOUG^>TLh$%IuA^q|K#wMf3f;^6OEZ zj;*WgvlsJ&e+ABtd2#032kH7{ocAto!&iVdRW}&UqP&v*;lUSKi_=e=%r-s zb5o}O*Ew}`N06s@t$(fd_k&s!Z;7uhkTa-EH{8#Cx8~%IyBwd^O-h(o6I?E^Zp&8- zKJ8}mR*~*B14hSS6j$dT>dI?hnVpW4_D3B+j|=Vrg}W`q}u_npIoFG+#>^+CQ{? zn*Xb#>DczWm)H8AkC@qScj*Z8m5`l}dpNE$W!^pPaMt-!YJ!uK1>a1Y@Q;Z)_J3Q> z-MuO5gi` z|LXhIeu&4`{I=bp?Rka&GNVrBJ{Gg@n;~Lw<>!5le}a{-_AZg@i-?rTUG!&%VkOt# z-TQj>6|Gyd; zWv*Gl>Z=j3qQv68`0^9)bW-+4x}E&K_?W`I=v!YRRi^wmxSf9>Vo!q3zUz_qw!D3^ z*@k@`taDUo$_vHFVam#*sM1QXGx*-=BaIdRBAoYr;aPAR@bHD5!KfG!3^4E=x z4%WIBp#DPxxFd1EU+Kc%{r}$ofByfkXQidIumR+j??!XA1(KhO%E>SyLu={f$iC9k}+} zg{(~`l?>K%!WL-8uHAP~qO#4ge79?s-`;PMPZ#KJky>`=Q|RhdTcR{hovXFH<2kXY zuR!Lc=cHRcY_4k$c}L&L+G@|1_rxXB*Km`6%9Hh}TYrZ}+bnx~rgLdg_EPaS8{64) zmaln}wzYCinB%@AX>ZA6D>uK=teg^@-lY6IWHPH4W5`|hf@{S}t3K~O8s+9>`Psk! zX-wKJ*CXEAX+p_sCnfGx)qXqmnWx`myH$IVZeL!Zzsc`6&sJBfr;{2@%B&W=bDkr< z+@Rm=QQs-e)kW)%nHMHZjlP=q#rA5vA4AV0{mkta_ESU;TJ8QDaywEOY3`77tEo_@Y~UUT!SWxDT6-{p6Bo(nE*_B_#2F=^j6 z$E(+Nu3G+U*AchfPBNGG6^W=@p5`>Mzbel*C0tld>t3q8P2={kR@Hl2+ryaDX0E?A zVRusLsg|}i%mPPNtp7B%uW#+OqYk-Vl}A^3-@K}(XZst9Qil^9A1AF@;H|lOPFCq$;nho$ zzsgygUHRga{d0%L&TAhzyo`&d#aUcBb+)1|=&Am>tKZg3SxeVe-wvNL{a5NF!=-bh zy~->2A}88t>Yki%D=MAEU4F7o)}IBjQlF;EJ^)&ITU`}aSs36EZ4Cr}mmiB0Z_b@wkzwG#D2+sv?Q4+WPVhn#^WiR%D3_?KV8|uaa=C7<1WjO zGq+_|=NDR+)d_4);Cb@Expwj%&-~RoE8nSpz2*LBe*e)6s|t?F8#=yl*`@V)8Lz7H zset#FtMY^Dr^~JUvWzQuTKWRB<$bGGU%Ikm>9Z6%XX#V=)YN<``=SM%?rYReo&4*|N$1rERMl7Y z{o1IOkeM{+k;cCXKeE0rQ4d-6C4SHDt4}-(%q$E-<+k?D2&px&xD=MU+cPZm+qHmG zJAcW~oc436*(H{94^CBwe_=hf*5YTiUh=e3-)-IB9~33|X4hSHJtdcVsd{0`6wYwN zo58az*?T?re0KdgSx5ceBzIpHOV7z4SM8emDQ=tZ9_LAUrg9fAC0$M4!)ZHx^F!m8 zzfJtycdtHsH16#x!#SSyJM*u|t=^Zl=?Sl~v4Wn>NDVmwt>oCBJ&QN1U$c>iFnKHkF#6!kD#BD1LIO z4N?hvdQbHK^Vg!<3ihJux9n${7#)7E<-8>N)Y1ss&_1ix%O7c;t%~Wn>u(w=^3eU? z6q&_e&YyIRwli%r`ePS*ZBLT#$&gRWpI=;Q^u+#aPV}{(QIk|XgC@PczHIX8rRURM zAGk4j$-9^P=AQoc>Aa5n%g*U1KA*nqXIMWaI9PA~MaA4!?#Ro$9CpgtJAIX2asMid zF0-#$t9bkTmFXe`|9}Z`phZzQ$4kJZryw`zW(pxpLw77o?iN)_IK63 ze@TD6{&4J0c(mysL(cTb$n$sV=SvmG^G0U6&-X9Ap?j^a>ecbgn9i!j!rxEr{(s^0 zdYMO;CmkyPnD6=g!BV#G;adt-W_VSPBn_bgxX@zbzU3ob# zU&}rBXW`qcxmObY-Ai4wU2spl(&;JshbHrG=2tHEc>AkoUGH(rx|X@z|IU8<`Q~CU z&&{1`YKGH3eOz*G<*i7gFO&9sJH5NS)g)duyP9*)eb&F#k;2^bZ%=&l*XzL)-viK5 z$2ze_^<{Jatx>X&hqnsiCpLuby_YGf+BWIZmd)Y3Hd?MoxzcMY1KK-SuTlILlSG~o-aDyJR`@Wv%r{6Yvf3NE0 zdlm2dx}F#RPYuuhS;i&U_j7J`{%7OU7jG}QHtke@(WIaU|6ATqnHFvnzx8N&+SRcC z;qjAmmT}qtf8qUlS;hI~-^>iZo$9~Gef4@!Q@O_UU#A{!pU)h+L}sm`p8T%wU1eFm ze>%I9PON%7o&9U_9B=*l2c?GmA2U6l?*6fTN%4nCH})*DIa^W@roUx9Pu2FS!s38! z;ZGO*+GFuCTy@I+~~NU);MdST63Y;&e&LRog#yKY46>Yo^KTrzehn zUJh=pf!l0PyQ$&Oe+iR&&1A z7S)`oT>5YMf%zBity|1F!(lFicE6>3dDWWFn_gf43$b67Y0gDE3Gw<`Ik$zS^R|WF zT7RWZZ#C4483(EbHcWkOyTZyB>XIMK97k3)O`jDO_xNZX>+YI&AGGBPLxg`k=9Kx$ zcJ$k|8s`6dj+OWNJ}_4*xbjxCx!l_NfjQIDRq&SY zA48TmAO0oJx+Q7~Yw@ZyF#ld^{rqJPcOFYN>@0x8x3AV3>d0S+ymxiy68nfH)2BUT z-~92h+K1nQ8x}wRo*jJs1dGpuRF*aWd^#{aiJzIN?zyYEJ&y~=wY zo!7k+ruBF6;zifr*5!EU&4ucM`Ujln5bOiHg*F`i9sAL$5SBP=IZLeFkM6jx{cLsh zob&Cn_xmfByYJ02e6h4Q_13w&c8`93ew=t9YOQ?N)2hRg58u8i`6>7O=gAG>FD%)G zZ>WCQadQc$7{|rxoW1*J&##}2Y~O+N>K`KR+`oUkI{*2KaGqcDc>a98eZX=SOihgl zQ&~m*lxYQ)&?NF8T)AO=Wk+CY-F~}>qMeJcSL{(gTzB#K%UX>SoOW`2kIKGh#NN4c zU$k~zrt0^+3#MzC+A8&t@W~jeTto&$#g`S`Pva2cG=BE#H{#9a;>n{DW-S49Om-%-sABnHL zQZ6Dad+>ALINirdviZz`vAEtnj>T9jGTD)Mp2i;R!% z*FVpGc>1Ba@(1~;+wb>0T^~Q!2D8K9aAD^E7 zS>AMO&Gn-$=7Zg_mup3@ z`%A8fOMcKV`XF~+-itQoxqH+kj?61sP`{&X0`rr1%XaM9rL!+KPBeV;>sR|vuU@^w zY=7i7s~_`MpMLy!*^K(#I_vWCxN~LyTeq^y{M^31T;lRJVU~I8?k8{DvzIsh`^S$< zUfg;8+iv>V!?Q~A4gbl_Tl2BRZr^Wjfq?zd=epO6cRz}|*KTjRKzy2c!4EU-YlT~m zyyt&Z_&FdZK1S^GZPmVK^QFz6*s8yOt@Zx+qi??!{irIH6+Uopvq@2w=XTxjYq{@F zR+{JbYEIws^K8)M^Y`>C-c;Fd%b&JMX3FZ>k8U5`BUQenKkX8ydAa^2cmD4d2Kstk zx33;v-Mw_r7rBz-D(YQ9t!IDD+bA%%;yYt0^ZSjfcV{14;kxnP|BAhTeQAv6JsD_fJ;37g zKv`hJ;or(znoh&=?|v;tn+w8WY2PE~>e!zO_IsbcIwCS@m42`Llx;G*oIhRa`WUbN zpylYzzu%vlvYqfXw6)az_v_QrAJ60ee1BS8SXXpL?(OO%v%>u_pZJ)11Jb<>_nQ*lGGj+^wy**3X;n>wJf8`GuobdtS?5`0#sD zm(@9Kjw$Y%dmeS(*VhuBKT=}$?OFeye$?dbU z=hl5cd1$4a!Utm$U%B1yY|3OaTKNlR_TBHi7k`+(OB5oPN?W0pPdpVqhSE{4@-_uCq_J+hPK?OMMkVA@Wv zWBsdzHT0)B8@!;fH-<`kS^?k2<`s%Uo?w_hNWy?PQxOZPaHL$cvTBYjElQ+eNPfxxnxuq8L`&&%a))nnq(=SiYJAL!IeD$~A*{43_B<0II zOrQ2PAg+Dg^w8Q#KaJ0aZJF0G{r2|a6Td@MKb_KV|7270cj?LhFFxy^eZI5e|H7h_ ztJPQDiqEe!ugo?4^!a?~`nvc{3&Wo@+GR6UUXd65|2O{dtG_G$`F#Dmm9-}KkCyU2 zlX;zpu+wpnNSUD|5Ho3hfd?+ND%wz`K$yL@`X zyxQ9A>1Ou`$LbvC|1!?Goh#F==QvhhS;+Ic-J_j*V*PxRT^28AKMaU0Eh{p*68f_2 z+j;5r?=}i;a=-LFb??;UvqV3fKEC+*`NyjAx%XFWTEDVfFTXU;(C1z0J%#j4Et?Ou zJ6+-)ueqD|@xa&WX)e4L?`O_Fp`^Wp!CJ1r`8#v8`KzDoxf|z2PDw9uYhwTRWV5mM zye#p#kN>$y&1?^Qo{`S{mD88ugs{q#&?AXg&k3f!IPCMB?f&Jk+9#P8vh%WUYDm=v z-VV@OcWPnD?k$YhB^_Un*C&5Hay@4~ee z*M&UKuh{Qt=k@Q&(&B`8p;_m><1gG-mAS~?c$b6yS5B|u)D^{}A0{$-8Gt z>`SGsOK;h2TeNhB`;n_Rx6V4Tnb%->Z0WW16L#h*0iy}tteRj@7sqR^=#Rb z(qC%dnynzmTQ>2&*17-h6hBY0Ke<22d%kwwi_b5(ca_VZ<6TzyAyN-L7_&n{W-zS>g-WEPHuF^k!+UmP}o~uqxIVW&WzWLF-66eZ&1t$!B zzF40Ozr-o!y<~OB`@4D@)qiX8*M8i&PucRa*oQ*4T=kcRCqE^ac-7ANwe+LMuD6CW zzAcImygv6-m~Y&|N{{nicHY}+UtP(M?A)pMG$MK1v9@CsvC|&T`xbsfcK4;tU!;Gz z7dtKZCGwZK@#HVx$19KI9`LiYst>OfUmM!vemFtO=;YTuTffZnnO1uHZ^!c`vnS5& zyC-eJcfF)ITfTGGlw`qHA^VpfkCa=tJ>9tO@ZQ+UbtO~2FxRRae|z!Uq=_bam*z1a zbA5Rz>cY*}uZ$+{&Q|h>Q2G02m0^+F|pgakNtU_9^ckIWlzK0-@dRlyyaOXre}3!<+}c>$B&ro z=U)1;ZngfTy6T>9VY@w++fUek$>K}i1t#@h`8_MA%zT#LC%;7eKbu3ESytY;*5~t; zpEUMdY`erQHQD5(ng0^c6O;LtnB?@&JDyf_fAZuna{fYZ6)UoG?z!C7ykBwNr9Qmq z>c1uH;ce0x2lxeV?92ThU{rSlRy{rNS2sBJQ8D?ds9V_?$;1m241L&+Tei*r$-Vu- zl~*E`+F#bZ(b)9*rHHfT?&C!+|GXO4ZVpde@J>{DTb+H1_$0ynsv<9D--aY>xf@@y7zi__md^kJ_Bu6jme2et5-d`J)Sde0o~)e$M_K zq5mq67<~Ksh|Bv)!;RHW$30HHSZ*Rxb+|C+Xq;uJ=IU*^`x8{HLo<%Z`fI!{>0uT~ zH)*q-t7s`PS0uhnCVY0g==ZdvPoC_V@l8JX-`po6bK*D4D!=qQZ*QL&5_`8W?fX+5 zHHi~}O3wqPq+4j7JHO1e|4(|nK37iNL6_&&n^)|65j?McPQM|ae%EPBVQoM6qkr$N ziP&(sX1Tdm+vC8G4!7>#m=?DwBHd8NzuQ>N_=IGIMo!c7o-J&y`ICE>M$e1ttUGq? z+s#I;f7h=UpS$G~eP{LGCsP7mtkgSlbqPmq{_n4!CY=;nzU8uQ>i%Af^e4evePdSs zJ;+gcy0Tw<4*SZ0^`{MAdaO%v>3{oVeSWuJeaxTII;Wc<_H!rd&5RL|J@t|QYh~=w z8@nQ6#Er`;1J+LscI?w_y}a4~=*Ngn{ST{Z*$=xK9-6r2;qE@kX%9pFK0L|@nBy~H z+iuI~8>?%p64!)EUB3L;$=dpahnDlF@LLPr@AX^!nCfl&uEJ<3pa0hOl&{-%)kfxl9j-br?;;zvY4o2CbP@uQiPJS!S63W^-nGLl)m!)mD<&E*IL12RgwN7>rZYt z!L z=g3!WI)5m@DE9ScjyS`2iq<)kwVms)xgI}$dC}&b{hK$bdKa}UG4l3%S-kYlnuOxQ ziNDSZ)(TJOe7kPO*>ADB`4b*n&&hw)T+VtqZ^FdID#{WM&YwHqm0WhRV}tVPqFoyG zy|R-}TBI!g*B|@x=+QrxmcE|b{~hHlIvn|8=lrX$Z->jzTUNL8yUv+WLM&(tG1tn{!D^`^t;Y{fm_~{Frv&=biGdn60`} z3x9mNt{zsL*Ogr|+r;6;@2gEazFa=IOkPn0e__G0(lRrh6!{~Qy! ztKPm*rrG?(yXddKjn#~=?CMZ^8dI>|`~S~BEr+Z3E_)wyuKV(3f9oolo7ZO^58uA! z{qz|c9~*S)XK#GWS@hw?rSex+j(e_tUw30$c&*R5HSU%tjx>FmH#e_z^`m!f>}82R zkL_6a*lpKr)yK=eL9}4s5|CpOmfq zjqZ29ZQt&`*<<~xKXX2=n=$1-$6dYUvyMGDpWbu*uCL+mZT4ln$7CiJnI$Q89b2cG z{5yV&`1z*-?*+wQJgfT{euA^|Zj6CtVL*+Qe4*KgH9MF?me>2tmp(G1vUANb!}Aty z)%`_Lum7$1QDas6X|JQ-p7jM&@{XOBDP7qgyZEHxuE^YtqH_S+O?hilVl8Zt(SB9-z5gDWETt#5f6LZ-@=S{UDy$YdhiBK(w>1Z) zXR5K6oZ7hBVf#ltk>u%fe(cd+@ZKcRN7zVd{w-_&DskzfyCZl#j-0MHxflQPg#1_W zSJzzczj!V9{&~Da_3x$U0$xpO-}Ysz^G|%+=AFg=C8=+X z-bK#;DQ{j}Vl=HxI=5eQ-D6q*O;P(MFPh&sara(@dE6Cxm#i~m*L}J7dCI*z-lxTp zdY4mKUYRw7+r4@LA1YPbpsKKV$+p+mv}WAY)t+j|lX|$WCQtlzj(pX#=p~KJKjxH_ z_s%(Q^Gh+${?Xd&ukJm{xMT2Xo2Xt`z_mAS-?e#?EOtMQu{-)=Md+-k-qP;I+`i(# zzK@q53wq|BZMM8?dj6Dy{h=LIJ&tkOx?2xrbTYrJstdmJ$U=U@p*4ArPn|!e-fMYC zaqZNn{T4R%^C#N3rAY3b^8YI@pYxnA@dYX;9#r%{^mX%;yk$2%b?V`VZmD}0u6a`L z7CCkPGMy6>x5-~JwT$jJ`0@Yi&)|*Im<5_|etDvEPHl?vy+4^d#pY%sbCea)sDl@KSyqS*;g>-z&eu! z@d*y~DsTNQbM0`O0+H=+iH<}%@To~$S6rq=QvrqoN-*&{@E%Mtn=WgWNhq-3^Z}G{YN2Xo%{-bUwW1RW;&72*p z^uNY0FkbguTTT3gqCr1;5&c z#;bI_D(x-KUiW%S{uKE*afxTwB_^0IOzik*{Y2c%nCGMME0vqsZ>>b01iGuAdGaRh zch0%>@|&xI3m@0`&&k^^9kx|*`Ap}%=j)vKOgt5T=@^-{FMOi#{ifijeQAr1RW%1c zHs({8{J1#xfv>c9>@QY6@u`t~3YL6gS8_WyZ#w?U_T=BKbMBsaBRN?x$yHJ{GWkV# z_1Sc98Gau&$DFHWlO{#an|}D~pX|0^Kq=j{9nz9g*Jin-R&Qk zbaL|EEDXGAVY!;`^h?#+Pu{O3SL~c?y3+mJJG-j9t~*C(wDe8%o6Zp1GEd&jGK_r6$9_qYZ$m=R<%{>9xgWLPsh8fo&DriyWnp*vW0CZO9ow$< zF_uqp=bI&6a`eFrPURQd3~M9%E;H6X?x|aIb#A0w@x7nHRyln+CvL9w3^A-zHYsAz zzwnV;X5yrW!D^{1{LXkT?7hPNz4^d&y>Lxw`tv>OCsyvqHY`pAty+ zja5J3IN8tX`{nYm6Ayn@Ui&Nc-h}Vcdhr*})qnLFO^utR+ zH4`SgS>@~6d5ODcZvV}CGgoqY#(e27FTcL6eeuzA&Ae&J^`d9=U-HM!S>fDbr)GEJ zrtkghEwk^~hg~UcI}`uF;#bq*w{K3T|1z#>%9h%FPIC8_qzK34>2BAzZLh2xxpU&o&1D|sAe;51GbgEKp@~R6Dr8Z}7SAARO^gCnCS)eZ7)_>r$kK7TK3}bzFWaw$?6$Le{iV(;q6OV8`0;fmO6+1 z%QYtcM~2DOSDL?T_0E0uUtOwv$%ZEkQ+*zp^v&(rvY6rNjko_N8GfDU)tG(9rTo;* zwckx%3ZL8^areSK?kCGMZin^TW_%J!ePbl)_P*9|p>L(}Jl!SYGc&AY43-%SX16T< z)>eL`{b1ooNm+%+u$cww+ADRJzxaRhrfuSzX+3H`pH&`n_Pw^?ppyMs2D?k|7{B}6 zd$_+?ErZXLQM7jT$LeFhmz7PCFmn75aN&jle|q`+Z*uO{&keKA&8X2AwBz!c*rL|( za_=U6b)&ydwXu`4uc)uD)W4urviI`SwEJhn&(-)UL_g-STiWY9uX9Ps(>;6lD7>wo zbM(jRlS?lxEy|OBeB#`D)~e^TKJt~c*8Mor!rwU|C8F}ak=V<-C5!4-{PWv=_fW#I zHM2S2Cq1tcUsT}j`)a}4yor++9|Nv2ZLU{`yRTV!JTD+` zMUacx-u#6U8Oet6)BZ0z@i*%I0dBS3s_lQx=6>;8Uhclv-R-W)IuE`4b@Q&xzU}ho zEUW`{fMwrohtvDd?X%Xk&p?b?KP>stvM{aB@I{!mIp@ufYv2D~CLKGKQG@kveDaCl z83{9HPV@V+<3sn~i_@m-)ah6$udS?i5%;66St%a3}5ma#ytE`=Q+WcWxIuTqk+h?x8a6!{0*(LwqBBXeqhoU z^&4lNR2=-;#k?_Q>Ixo>*DHH6Elxd?ICV(SD>8JGv(bX%W?S}dvy(aD*!3{RF?#Z; z#2SNyoGF2Iu5;}VX3voocw*1H*hG7GYRzE=%U9})cU`)4ZDP^9r4B0}{XdbTzjlL9 z<)%aYhplJ7ee~lv=Y-RZ#g9~89Y5v8GdJq!oZBmXHhfe}la}F4pQ69M>D8gl)>8$= z4_o;ef0Q{K+;iodFwgo*(>b@|jy>ITNKJiR=;!a>EqJzMEi3VPTD^O|)?wW~mbD7D zy`m1DTB&<@lYf7b&h30G)dx!C3lC5lKz|)i`XX;R);I@W}KdE z;+W+3zhhg-!)RwM@69f21s^|ByDsjY?-!)KZmZVEqJ?YiW=gnRzIX9o(r->l>BkWr z2beG4;|x7u*_!-g-nXgEIrb+sw|0fje5`q_c#ir`*|yj@PizVlCF_>>bFvtHPMN>- z{>t-de;1t;%bs&}exXe7Dc#2Q4^uz;-abG7u+jIO%5%;qmmF`J`m2ad^GJ%cUH{>k z6T-J#{(mfI;<=QWyQ_YG;s}``a4?VgOM49e+GW)Vp?7*xOER?+OCiKd$h)}%)Mxxw!yWFTeduxUHx>1 zg3G?#^Q&!c@$DA*IfJFp-Q7Ml^hsf8*(;;aT~p?YHm%BGu<{4BO}Oya#-I0bu>oy*KErmoXqP1LY-kehzu(6fpA7`0#iTUt`@%lGue z#U)B7e~JFeR=uk)TV=4J_dRpf!5B~Co)%VU9xJq+KQ(Ja@jctHnv_b zEj}~hl*Nt2)1|F9q;?pVX?~As>InMVS+;WV)4n+HL@PE9>M-QxS_ z9V@M>)O7npEsU0ou90Bz2}oP+kSTo{>TLRU$f`4JLk>y;BJ3M#ECZc?3J&UdMD(!J!p$^pk@+*G!`F*0-EEM@U1+OgTu_u~n#9LtEQ@zE3h zUF(yz{dHrC)zjE4wlA_LSN!^~^vm8_RzooCx4n%);=`C=I6T{%-Z_s|l}-j%_=M^^8ZE?v3$%ge5Er`(LMTyXpxmH3C`Z}v?E3)34vhudRwWi{I!hV@~OC5GTT5`L;Tv4rW z+V!?1{$|s2Z!9;hFTZwS@73b28L!k{+9Xfim14%K#yNM%$H!dk-@Cpy7;dU|sWdHI z+&w4!Q$t+OA(?;|HiyjqyFA=KBjfaql~-Q}|0=CJZ+q#8G1tEx4`ubIy;&aQvHea) z636>~^*#MhD%GmaUwLx&_j;c%NjjnX&pocLx>OHe1K{%@mt)HRp!(TI=5!$@uR9v% zq^BEg+hG25Zrayue;*wUqr4L{ruOciIju+AiZ@{XE=~9CJ&IAO7cHXo>_4ooIhCOD zTHZ}H^zBl|wou8LeFkMGPcPVP^3=og%Yzk9#n(thCbJ%I+alhU6Zylw;E+bREtP*@~;?^U)25EC3Nz|=Y~K%dsVY2#-&q_SEnA3(0$JT?2U%>>DE;(-=kdLx=vs= zv%ax)YQEj(O8eYb%KXA<)ob}qw;k|EdEWm_fyZFRyJHu$8$;NJTJZE+QSuRpKj6G;uFkS?7Qq%^4ck=(|$d{rKBtD zdT``F=kf=8Iu^`Na<)|szs0HAu4CS~qG#HBQ~Re|E|&1ftlehHdoZo%n~~J z@K^5A`q>SCD%}qUYQ6qe^m=>Vl(q3On`f18l@wRL<@5OQq?0_iCaUh|{&Lau|Ks?{ z4)HGy=S;Iwx88Os-`6%iXIjwXU4L#y{oPe<()MM}w(0v*gWNl$K5kj{C;q?G`zNt} zUly;sq-@zz_td?ns8T$3R+;nuiGIrWX3FfePRJsbb7`9CGK zgjHs3&DxcUM|0R7dEN7DDB1p=$uemFd6$)nyXR?iU23r}eqX`<^gcrsyW6`UUejfd zms~rol3xB|@9KDY`=TbpWnS~X=6Bwm%Wt(&x>xO9rn{D}Ut&aOteeTjO@bBoMcZFT zmnB@darEq&;tj?#6;5Z&|08A9CA4}+ZjH&qBKF!j?RHYdTaK(%lQ1}T^oZ@e^<2lE zFz(ei`016exw|%Wca?_D%m&jw&RH){I)4(F$p0rWI45DH`T1noj~gzpUm91ZbzQ)brnv(EcWS+utnFRok_EJ)^hqr|D8PVYrHUY`vRkI1vgWbc`2N0&}go% z@VH+_&`8YBAm_vmMdh=$^P`T=?zQhym-fn0>=O1kSM+y!uX}#nhWRrV^u*mb-R0in zcrrlub71uavrXPS6-FP*8waiS>!8ueaS(74tDp)+^@bfr=NE8+(lk z(mrnQ&Tn7Tdgp5XyB*G}qj{BM%!)RJ{C|CYedwIK`YzQ*FSdp4*y8E%OjCV<)0&Q> zKh>OfZTof3@z~82Ucc}u(|Vo>_wmN@P5+Bo*L0bwh{)*Sn#FT3TQ)U3>~JF8nZ-JaP#wY)U8^D5Wk`7H^a_p@BO zt-ox)bVFNq^Y0a}^wTGo$^Q6dI#*Y+|Lvd7^zwCoPx!B8t2MgtZqmbbPrlz4{#3m} z_~V*w_WaBh(P25gx4D=9RGX2xHR09f)sOOJUsWnRd2@v+cE>yQxl*fl#nqnVoR)jM zbgp}y`pmRTXJyZI%T!sjeJQcEyjwKq?ea_BwGMomQ~lreYP@01wT`y`;8?Wk!-h(G+DF81-uRbdJJ# zJ!&&KYbS?^ytD5QHv7Jm!Iww0RzGRihm<(>d6{u}{)#X6q@DStpV=p&9lzjr=(le% zL0v^T*XR0AlC&*8Uv#rxUal>A=8|o%3*5GaoxJY7=kGmNz9&8@4~?~}U&iY;tn`H;rnTf3BIcs(*eD?gaL20#DGG%wXtls@T&NBbg^>;EqjAmD^ zJ{0OvxwUsfs7S5mee+w#)n8uyGEe-kL%gclmg}p(1k7AmbxBHHUH|*rB0uZQNxp%z zr>KUmm*x9cm$b&tLel71i0OrQEi*$FRP8_YKK9bXmB&&Sp5`yS5VH6|K%v#U(e$>CzG(t)4z8>tjK|$;5!cH#x4N^<0#dG?Ir%bk z&54PdL!bYNi;a1EWWC&--;?Hish%$Fw#mRJS@p`#mF=fiefqlf63g<9bEf7lToZJA zZTjie>8a*dwmr7uFTdVCjd#MyjvZ$goz#uL{%z&fODQ)js_i#!O*49$KR@KwudCV7 zsZ%EF*w25e$!zQ=Fn6hK^6uc=+S+s9HWjj|Z`z!uI_cc}d%QE;U#s5R8~gX1OiA5W z&bB`xpI(*S{J%x_)wMUPL)YIbG8Ys1_`L7xFXnB+=l9LL@oR=k+nO5N?y1|N&0gJT z?5}#6bK&k}xopej>#Mf3)m7L3kG7ru?C#<6ka}OWi#k*Mb6Bf3=)Ue-koIWmoBbPR z?DpUO-*3W%_;Z}L%VR!PNB8R_-)h=#+p+o9nxhVK{3^%i?$Zigy8c`A#!tV5(|fnQ z6hG=+Yqor+ZvUl9&l79~YZv^sk6-_2V)8bNzh`D1Eb3Z${?(itJEvVYZF(W6H0P1p z-Bs;hcB|@5Uz)vXv%%@Q|CW}#-@MAzr$oM)W^%miq{yF)@`NW5zkHtdehP5-n!j-c zOLzX)Z+$uZA%QDpdD^*V$p;(?yzVSj8NEnjwT%3dnZIlO)av)G=(v5*-ahPiO(56S zAGg;ZIzCTi?XLLJkkF;SPpjRr+wpy^r1M{w@T$X;A5GC+Gy7Litsm!yI%bix<}2-G zeZ8XjZ?0Xu@03yM%z0Or^xXN*XFB~@Pr;8>I+};49JzP@@Sj;vpEdW1m#0y{FndN!4y5RG<;{8o+Enf>B^{Q0u(cb7c zHCB1XjiY%g-`BW>y}SBRs3v~X+O6lNTr<0^F1&5?H5N|GWto3|UOnpg_V$Ste*(WQ zW?r+XS7iI1{g3{Bc<=q`*`22^KXO(YpY+|`@?qbCJ*FRX?Pa`dj@NLV`*!nh#P9H; zu6DbxE-&18)o(A!zBuvoj0x(o9up>9WN`P{a5+$Fx8<^Z3pyFwj~}`6L+baGhkjff zi`C+eMEve?c%6B&Dd>i0tG4dKt#!LU26?gH=T!dHc;|}v)$oU<=cfJ5OuA%td5wCX z$?Y=rE1oRVy#%%kO7DE-z9;%c@$BPf-@<%TY$tz8ZAqj9Q#xWIHO_M~Ak-#Yz2Px>WhZOKily*hJV#O7Zfd?!+x&h-@Nb7~&D zZoTc9&aTCexSum#4_C3v+2pBZU;JaTtG`9WT)`v%)P`zuDd{ zdB1G$Z|miE3|_m=v@{mvcbqTkQFP~;^A&$>h1t_z2R_>UYVBI}RG<5viyp0 z50!qdJ#4%_v`uB(?0L5)WoN%yuNzYSc5P_1+==k%pS8~X4SkTqFTHxr{E8nJ)^3V9 zs_d4KlH*_Z(%GutOnTGzNsLZq71_UQ*M_WR-}<=gq+S%`Ist3{BiF^hL_XT@vrFma zvH3m!?auAHR(W-PmyWsSqF*U9tNQMEJnWRe5}CVmNnURB;#In#$z{!b6TZGHE~;7~ zajE#z+B+LBAADKi{$Z7;*4#()|4(6lB$>9QJj!-wVsy?nzI%d4uEYh+((*m|d~0vP z3MEzk(moaAH*8I3LXIDJ_WQ&qscjzKFG@sRxqp6I^<2hxzLl2a?*N~9rzclwzX@&S z&h)9&YpmGw(Y@B`vxD5nADMq{zP7%y(D%E!kmU#E*V`=0lESwKc2|cnX9pe6Tlv-c z{jG(eS8mPQFStbfwCb)&+PW$CHq?GhbDGUvBq~v!_x$Mgo0B-Lp6C2L({k|Dy>rtO zR(~>S4r^Mcna+{_IqY-zi6vfrK3U!GZ*WygKNZ}orT)QDHpDH|cdO|CmZmFhdQusy z<*$mX`bXXU8i(TOJ5!6cAmD@)H*)LV$za> zU0=3bvT1Vo7=64cTkO;QqdI4f!H{uM47szs^1V zG3U?1JolJs?m4`Pnfd9`^iTT^h*+lX zxP5ZRmsbL;>FwtnJr*_WJ#guIcy7Z$HSH z94vJ*b6>QqY^kI1M%SjG;CSDv-}CBp3$wShK2f=+D`L*-+ZEXH_T0sjy$8H++vYC+ ze2{-z>|@6NNX_-@!XEkh>+8??BbMGbaN2k?v z|2%^R{$q2*HJ`J)U9)SucYJrH#i^$^PA4`OzMPfYzd!EGW1TZ=FKX0I-ssa;G;{K# zKpoqaxoqz(L;};UyfwDG`q$s`+qF5ub*GKDzA>D)zDwHjO5wcB-M{=o!(J`evGv3) zv65qAkK^@A{we-U$_@THt;p@AlVsBG0NEQmq)%;`7sqWYnPfmnR@Pn-!T{4-MJ^H zZ&`7wA+Y|Ac3ys7#`QGIEnMGUU*`^+sC&w4Q!s<}Einl@_2Z9|tR#!?y|9Q`w)yq! ztmrIDcaKdo&Wrin%CM4q7s>n2JZImz;5h%OpFZrJYklDIRO?$m^{iQ&SldEA?cRGZ z@ZiqXFJnTs7QC(eb+o|b&4-~K7?5zo}AKc*^L z@jRX6oLemZbk%E)lkfjnP4zzRxP|=-4|}qgQC^;9yV&6p(E^n_O7Y*bC66ZtawX3% zJ|jQ<{FlhD)1~%loei%$`PWeT+~vm>QJU8$nZ0>Z6#CL`>dKfWTH>2*9Nm?+zxrI7 zc4^|SF#ae_iK42%EpwFKm`+?_?{~jZf78DmQ6k&76x+_*X1OnUl9&7HhNpom?&|~x z_I`=qwe;Jh^)-l^z?RZ-~mqoKd9il1sQ4qG}y z|Hb*+e`jhk8#T*hE(+^sUXskJ__L&7oy{WiSA1?Km;Xv?nN}5k^P_9dlYbG@`j*!C zTLt($J#n+`*Y~$qe{Gi#e{tEir2b&!VeW{u$Y7h^%I?=e->)B=T_xpT>;K%Zyjwcu z*|dLg{MjXE_b^lIcudYYp?+E}a_b^rBh9yJGjm=@ojiPYj!}GA zRekjQXXdJVQ|9c>{&49D!>NOnA2>oR__k(kF~3kU<@bfkuYa!ONiBXCP%iu{q=>Kl z(En|Z?k2|eJwEl*@%T1{$@VfD{r7fONgvC2wSUJ=5p|!C6>1+=+Pl8LdQQZ&VZ+7h zsrTY8ohaC$@>8>P@&)&jeb%3{PK8fx+lMZr&TO6}ejSGz@YeG?ZQ z(XBP|H@XygXVOK>@5}$$(JxKr{Cheh{O|eK-Dn`f^z_-TQn&%9)6}8Blo5W=P_9t`Z#U_UAu~*BRfAx4a zPjIn}n8c#US{seE2NyrwArajF`le{1x?p(fRKtGO;G^DIRD>2^PPPnH z$)BhdK4p8*n+;#BK3N{O4BNK!SJDZE+>=bkw;sOS7V=-};B&q><8v3Tc-cR#6)pAE z4Vt=bt&^5pi&oelsSE9DwJD-MYY!;cr=^O#mM@f1Og{1cg~ZRhkvn76MC5Jfa0ajW z7H$!sH(_@27xyj7=g&Xg;gGjQIrC9xon+sO&D;IIMZVNnD^|T$((1ZS{kI7l3tnur zK9FY1wO7@)!gqeq>@R&Y&NTW>nzMA?&yc>r&I-Tif2(z$DqMT@%hN~7Vg8*({#yT2 zB9phBsR;8c+>kO?IN)`C#&<(uyFAZ|wxp?-!*kc$?OCv1Yj^Pv@3UK{#w|TzGbN|q zBVJ0kJNwsH)t=)%t1fQV{f^71zWOc=>)a@JhxbL_@huvg_AvYJ(=B`vbG9Jj z@e;db{@bpu?(UKGKQ6Ph@yr>y?w31qr03XNFY=poNz-T2tmB3vw=)b1v-{R9SUY20 zGv69((^sZ&Zytwogv+xuBlT(i6l!#3( zy0U!nv5-af?+&rdJu2G!zQnFfVW#-%I}fu;yVh^LpZoOA-ep&RG%E_rTyVAGTP8m_ z=u|{e&m!gve~!MXiu-o`$()!I50BTrolvyh<@^Mca95c#*E&|0>dLHkpjceuf~l-PwQnPs2WUUzOk#2pspxcVgDb%R%F zvKKBmd~x6V-C*AO7xnkkX21AfwS2O$@z?sk8won0|F7SC>tA}Z%9p?Pdi6EQ_mNVI z^=9rdUFd)1xJIr2x^TxNA&KO#1shY0?y4HK*gc8WxTkHput_4g@3o}KH0kTbet)x! z9Hw2^SoFm2LD=5upU&B)`Sf-cZjh3lZ^#yFDEDb!^s}X$z2-g^7hnJU((-L0^WLTj zt?TBgZ~toi&t(1b_}%6b@yUxGI`0YR{a~q?sK-k_>tohH+R|&o*Rl8A=U8}OJ2&2CWn$W!dU7sL*0=Z)Dd=LUS9rwb z#fx8>PksA1V_yfh7xSFq4qJFP;f`$KIjd}z(;NIEK&I ze%F`Zn)KZNoL{%QjJMH}=Vdkv&lZG>Oy3e+R}+1|Ms>Q^{J_Vn-m2_h{`|QsfBFqm zw)d&;T(%TUyTAOD>hj};&kM7y15f_%$(^9Aa9iDi?L(dD_43`=x2cw}Nh8(aLB#C3$-1^v&6yPA&Dc`k-1=rI0@7igHPY`VY7Jnymh{uPzt9 zoS-QmwyyNM+nehS2UlNOu>9!;%U6MAr|Mf5E43<@g;;cUDnC4}D0tHCrJ&y9D|Rn} zzRtDTlKT5(iI89M+6yv$68u>gXU9*yZldPtnYM0y`qj6JwN+Z`F&3^RGex%**rpzD zkbGMa+L!q1_xyAH-Ky^L0h4n7u9~tfUL`vC%Tu>s{?XapJ6;j9ALHQ5mdh`>Q!i{T-KIQa?&q9)r{aogs*e3w)X7jfcgenrQ$IB4 zhCI9YII6b(ltC{8gYbS&7srq{QpWo-=WYo*KX0z@%kRZ=4y^gp^P?)<;&Aysoh5u) zala-B>s;>b4{FaaZ?;Umc`Ajy*7~U}tNK-Ag{8BPU)g=SrTKMsN%1@7SF3#{tdhBL zGqRYutJhw8{^pBP`evu){W2Tw{$YMEXq=M& z&7*olk?l*vIg3Iiy-o^LYqHs~`KbMVZFBM()A7`_rB+}2&0e^^k~r@@P3dx7hx zcE72fD_7NS={E9(!}rFpG*@UB|h)i7b3s7qTlN2oOj3BkFAJ!HdpS- z?u(YcVv|cB%SKH0I9<1Kw(H+=xzoFB)`$KUpBm@j{%UV;-PEIzx0fyduGIVb_V-+0 z39H9{ecsiJi>OH1!Ajn|s%e*a>1gPP^jxg1~e+c@9;Ij}^ums9!I+(})9lR~dXJ*;o#(JYyn z@~QLt0nzs}wI6uIh>C<)1x%j%>V5CU|BvRH?Qfm>aphrq3GJosVq42i-Y)v^aUj4$)`Tt+nU;nTB@2}=hPq@T{5e~*f7_qc>hS^BI;3Cb z#yf6Lo!n?4`MqdXrfHO6SF{~zTXj=jA^ zPW$!pOB(kMZaJ;pAkU`Pj3V8J~iq?>~QAztZc3yV(Rc+tB^8Gf#P@`0f7bHgn?S4Bb;I?|O?m z=U=+3t$%0h{vY?g9@%+M?YqyUALhGN=hXf>;)EGG)}_-v?&PXcGk#*tds%P)Rc7mWrSrMBSLMIl z-^F}idf}P;(;ph@EN_^xzjD~sTQ&V>OHKg8-Qb;9_+H*A4O7c@o%QJG=HIopec1^w zlT?@QR5~)fE=ZQu_(|Wng=Se(HP?mrXda(8=UEAV&9&QhDcsMU7yC?6J{6QKmYVt6 z|H#@?LPzg^`#Ps~$ejzo*|+=Uvp=FM!`lA%+)kgO_+#nrNcHzeRsE#6cPutC ztn+N+-*~S&uD`Q>YWSn|Z`mj5Y2Tjv+mr8G>Ff%Y@?*{0_D#OrXSY{+`BsPa&!;XH z&s?l~!sP4fsN=e)uNcKkB)^QG@@zk~SIR=L_e zwSBtuN6`96w_y9A{dXTOPgfF%e;Vrat3N9%oqJQ2QO4}=|99<3dc?PDrsxf;@77yg zxz|^DX~jPizW)8ULtmWy_7dIcs}<`5@5}z3EL`#K^Un0w@AWoJ?CD&6>TAPigA~1K zF5Q(`haVjKK4Gp~_0mIEo;v5Q`_fY7|IbtTwELI6M)_7EtMe{0|9PjG-#TahzUMYO zw@qL6PIyzz@_4VT^fzHLpDtedXlpy=^QoUtT=;5N$(YIt)OJ=mdmPP^6)xUe8vnCB zM&7Ib`!Byb|K6{>KUZzdSN2?bygqAn#_gKP+5THMS_LH?e^sMq{I9lDe6s4XHyjI! zH*d}hoPYgC1i#|_tDm=8r{2}b+F~g=B{#e~_@4L6&x`N*+04JG6*X;tM)uR|L49|^ zi({sKSy|ORwaM<=mu2gw*Y5wgPr!fATlv4$JKbw{S(jGbj+rwH)*?ILt`OiS{fEP~ zP!ef3iMhH$GIwzy;O4ZS3}7UWzG^`%k)1*Ydf#H8yNlWx%Z8;Ud(gm z9h`7$l6zlt?Y;$T1g9UlEwJU9^D)i8-!FZ5Wb{V*^E}fXQ#1E((fC>s${jdWIqa`( z`{#h)tvXkZs9PJps@(fzchA(^T!Hhe=J^}gAJIJZC*&yKve~=`f2-aRKar-Huw_kf?+@h>4itE(-VFkniUec)GqjRb@lRJ*W#YND(eZ{ojdRSvCaAqs~d9tmj6ETCe&R=T)!%vuxXq{Dpfnc8fbmya_zFXl1fU+!e9Z-EY;dfBSu5$JH0?f%li+ z-mLp}$G1D1*^l{7T^(M(@s@A<{kOSn>R;Q%e%_c|e<|Z~aZ!=kr!d!BpKj|0^B&s# zN!IhytlWs(pH?m1`#tn&#zbC@l{bDjcCY<D{O|;wMBuq#ZZ9lXG;sdW zV(HuU_tBR(Jn7rbnX9_ZtY7hUZT`Hkav$TFxcY!O_3t(>U6J~kw*WGOUm?tN?QDM2 z#m+z9SS*e)r+=S*FnLbq-`nBWMG>b8HO}`r!1sPW&z+m_vsY#uXjebrwf34ZmwnAa z`wYgjpWjLy)4AWbG}s6fu-laq?*0i=nR_nZ&tbQsjMevF=IeK@PDiYZfA4p|Tlt>s zMq|W;0#c}96|CTADy!Jf9=bdeVGJVtA+dl)et5_7=0jcik#m^mG~p6?V9Rmi;a|Cs zxyuk?iaZF2g?(VR@P@;`?+RKoBccYY4-kTl-xU(tzgGv8&LZFgBoDp!JHYq8-2Dv? zqP)Z937Gi3<_6h&?;WpZ&VtVX6JqSKX0+aOe>7r7BLBuoThHeJOPxJaS;hal+*eYN0`*TKi%I<6@BW`rS@0ARR{wNBMn=AUdkdoPPan&d{z{v>v41-S{%`p& zoBhfPVi!sQcHlG1n>TgyCMH8g59GTX;Cp|6g<-5HI2;@8XE@B-H;*A@|9APG!=cDE z8>BG%!OU6l@4Nhs7wa}b%gYVSs}!N8HE{k(WBJ4X=l&YUSXr=nxXSoOXO=#`yB|vN zDnix#;{>SkJF)ihCM^EKh**e=WKgTe~ HDWM4fjk?{l literal 0 HcmV?d00001 diff --git a/app/assets/stylesheets/landing.scss b/app/assets/stylesheets/landing.scss index 6574664f6..7c22bc774 100644 --- a/app/assets/stylesheets/landing.scss +++ b/app/assets/stylesheets/landing.scss @@ -5,11 +5,13 @@ #landing { - background-image: image-url('landing_background.jpg'); + background-image: image-url('landing_background.png'); background-attachment: fixed; background-position: top center; background-repeat: no-repeat; + background-color: rgba(11,107,168,0.2); + #title { h1 { font-size: 65px; @@ -22,8 +24,8 @@ text-shadow: none; } color: white; - padding-top: 6%; - padding-bottom: 7%; + padding-top: 3%; + padding-bottom: 4%; text-shadow: 0px 0px 10px rgb(0, 0, 0); } diff --git a/app/views/root/landing.html.haml b/app/views/root/landing.html.haml index 700c56814..0e2e9e1ba 100644 --- a/app/views/root/landing.html.haml +++ b/app/views/root/landing.html.haml @@ -7,7 +7,7 @@ %br %h3.center - Simplifiez toutes vos démarches pour les rendre 100% en ligne. + Dématérialisez, réceptionnez et co-instruisez toutes vos démarches depuis un espace unique. %br %br @@ -23,7 +23,7 @@ .col-md-6.col-lg-6 %ul.dynamic_ul %li - Générateur simplifiée de démarches en ligne pour les administrations + Générateur simplifié de démarches en ligne pour les administrations %li Ne demander que les informations strictement nécessaires %li From 12ebab66ccce18369dfead1f67c8cdadb23b8d65 Mon Sep 17 00:00:00 2001 From: Xavier J Date: Wed, 31 Aug 2016 16:07:11 +0200 Subject: [PATCH 28/53] Administrateur can be param the acknowledgement of delivery mail object and body. --- app/controllers/admin/mails_controller.rb | 20 +++++++++ app/models/mail_received.rb | 18 ++++++++ app/models/mail_template.rb | 10 +++++ app/models/procedure.rb | 18 +++++--- app/views/admin/mails/index.html.haml | 29 +++++++++++++ app/views/admin/procedures/_navbar.html.haml | 3 ++ config/routes.rb | 2 + ...60830142653_create_mail_templates_table.rb | 11 +++++ db/schema.rb | 9 +++- .../admin/mails_controller_spec.rb | 42 +++++++++++++++++++ spec/factories/mail_received.rb | 7 ++++ spec/models/mail_template_spec.rb | 27 ++++++++++++ spec/models/procedure_spec.rb | 32 ++++++++++++++ 13 files changed, 222 insertions(+), 6 deletions(-) create mode 100644 app/controllers/admin/mails_controller.rb create mode 100644 app/models/mail_received.rb create mode 100644 app/models/mail_template.rb create mode 100644 app/views/admin/mails/index.html.haml create mode 100644 db/migrate/20160830142653_create_mail_templates_table.rb create mode 100644 spec/controllers/admin/mails_controller_spec.rb create mode 100644 spec/factories/mail_received.rb create mode 100644 spec/models/mail_template_spec.rb diff --git a/app/controllers/admin/mails_controller.rb b/app/controllers/admin/mails_controller.rb new file mode 100644 index 000000000..6101ac8c3 --- /dev/null +++ b/app/controllers/admin/mails_controller.rb @@ -0,0 +1,20 @@ +class Admin::MailsController < AdminController + before_action :retrieve_procedure + + def index + + end + + def update + mail = current_administrateur.procedures.find(params[:procedure_id]).mail_templates.find(params[:id]) + mail.update_attributes(update_params) + + redirect_to admin_procedure_mails_path + end + + private + + def update_params + params.require(:mail_received).permit(:body, :object) + end +end \ No newline at end of file diff --git a/app/models/mail_received.rb b/app/models/mail_received.rb new file mode 100644 index 000000000..b8611eea9 --- /dev/null +++ b/app/models/mail_received.rb @@ -0,0 +1,18 @@ +class MailReceived < MailTemplate + before_save :default_values + + def default_values + self.object ||= "[TPS] Accusé de réception pour votre dossier n°--numero_dossier--" + self.body ||= "Bonjour, +
+
+ Votre administration vous confirme la bonne réception de votre dossier complet. Celui-ci sera instruit dans le délais légal déclaré par votre interlocuteur.
+
+ En vous souhaitant une bonne journée, +
+
+ --- +
+ L'équipe TPS" + end +end diff --git a/app/models/mail_template.rb b/app/models/mail_template.rb new file mode 100644 index 000000000..116570d83 --- /dev/null +++ b/app/models/mail_template.rb @@ -0,0 +1,10 @@ +class MailTemplate < ActiveRecord::Base + belongs_to :procedure + + enum balises: { + numero_dossier: { + attr: 'dossier.id', + description: "Permet d'afficher le numéro de dossier de l'utilisateur." + } + } +end diff --git a/app/models/procedure.rb b/app/models/procedure.rb index 73f950cef..0bef80a6c 100644 --- a/app/models/procedure.rb +++ b/app/models/procedure.rb @@ -3,6 +3,8 @@ class Procedure < ActiveRecord::Base has_many :types_de_champ, class_name: 'TypeDeChampPublic', dependent: :destroy has_many :types_de_champ_private, dependent: :destroy has_many :dossiers + has_many :mail_templates + has_one :mail_received has_one :procedure_path, dependent: :destroy @@ -15,7 +17,7 @@ class Procedure < ActiveRecord::Base delegate :use_api_carto, to: :module_api_carto - accepts_nested_attributes_for :types_de_champ,:reject_if => proc { |attributes| attributes['libelle'].blank? }, :allow_destroy => true + accepts_nested_attributes_for :types_de_champ, :reject_if => proc { |attributes| attributes['libelle'].blank? }, :allow_destroy => true accepts_nested_attributes_for :types_de_piece_justificative, :reject_if => proc { |attributes| attributes['libelle'].blank? }, :allow_destroy => true accepts_nested_attributes_for :module_api_carto accepts_nested_attributes_for :types_de_champ_private @@ -25,12 +27,18 @@ class Procedure < ActiveRecord::Base validates :libelle, presence: true, allow_blank: false, allow_nil: false validates :description, presence: true, allow_blank: false, allow_nil: false + after_save :build_default_mails, if: Proc.new { id_changed? } + + def build_default_mails + MailReceived.create(procedure: self) + end + def path procedure_path.path unless procedure_path.nil? end def default_path - libelle.downcase.gsub(/[^a-z0-9\-_]/,"_").gsub(/_*$/, '').gsub(/_+/, '_') + libelle.downcase.gsub(/[^a-z0-9\-_]/, "_").gsub(/_*$/, '').gsub(/_+/, '_') end def types_de_champ_ordered @@ -79,20 +87,20 @@ class Procedure < ActiveRecord::Base end def clone - procedure = self.deep_clone(include: [ :types_de_piece_justificative, :types_de_champ, :module_api_carto ]) + procedure = self.deep_clone(include: [:types_de_piece_justificative, :types_de_champ, :module_api_carto]) procedure.archived = false procedure.published = false return procedure if procedure.save end def publish!(path) - self.update_attributes!({ published: true, archived: false }) + self.update_attributes!({published: true, archived: false}) ProcedurePath.create!(path: path, procedure: self, administrateur: self.administrateur) end def archive self.procedure_path.destroy! if self.path - self.update_attributes!({ archived: true }) + self.update_attributes!({archived: true}) end def total_dossier diff --git a/app/views/admin/mails/index.html.haml b/app/views/admin/mails/index.html.haml new file mode 100644 index 000000000..26b258e61 --- /dev/null +++ b/app/views/admin/mails/index.html.haml @@ -0,0 +1,29 @@ +=render partial: 'admin/procedures/head', locals: {active: 'E-mails'} + +%h3 + E-mail d'accusé de réception + +- unless @procedure.mail_received.blank? + = form_for @procedure.mail_received, url: {controller: 'admin/mails', action: 'update', id: @procedure.mail_received.id} do |f| + =f.text_field :object, {class:'form-control', style:'width: 40%'} + %br + =f.text_area :body, {class: 'form-control wysihtml5'} + %br + =f.submit 'Mettre à jour', {class:'btn btn-success', style:'float: right'} + + +%table.table{style:'width: 50%'} + %tr + %th + Balise + %th + Description + - MailTemplate.balises.each do |balise| + %tr + %td.center + %b.text-success + \-- + = balise.first + \-- + %td + =balise.second[:description] diff --git a/app/views/admin/procedures/_navbar.html.haml b/app/views/admin/procedures/_navbar.html.haml index 6a382894a..f2d67d181 100644 --- a/app/views/admin/procedures/_navbar.html.haml +++ b/app/views/admin/procedures/_navbar.html.haml @@ -20,5 +20,8 @@ = link_to_unless(@procedure.locked?, 'Champs privés', admin_procedure_types_de_champ_private_path(@procedure)) do = link_to('Champs privés', '#') +%li{ class: ('active' if active == 'E-mails') } + = link_to('E-mails', admin_procedure_mails_path(@procedure)) + %li{ class: ('active' if active == 'Prévisualisation'), style: 'float:right' } = link_to('Prévisualisation', admin_procedure_previsualisation_path(@procedure), {style: 'font-style: italic;'}) \ No newline at end of file diff --git a/config/routes.rb b/config/routes.rb index 6445a1710..673bdbb14 100644 --- a/config/routes.rb +++ b/config/routes.rb @@ -114,6 +114,8 @@ Rails.application.routes.draw do post '/:index/move_down' => 'pieces_justificatives#move_down', as: :move_down end + resources 'mails' + put 'archive' => 'procedures#archive', as: :archive put 'publish' => 'procedures#publish', as: :publish post 'transfer' => 'procedures#transfer', as: :transfer diff --git a/db/migrate/20160830142653_create_mail_templates_table.rb b/db/migrate/20160830142653_create_mail_templates_table.rb new file mode 100644 index 000000000..8cc41d792 --- /dev/null +++ b/db/migrate/20160830142653_create_mail_templates_table.rb @@ -0,0 +1,11 @@ +class CreateMailTemplatesTable < ActiveRecord::Migration + def change + create_table :mail_templates do |t| + t.string :object + t.text :body + t.string :type + end + + add_belongs_to :mail_templates, :procedure + end +end diff --git a/db/schema.rb b/db/schema.rb index 5cb43da5e..c377a367d 100644 --- a/db/schema.rb +++ b/db/schema.rb @@ -11,7 +11,7 @@ # # It's strongly recommended that you check this file into your version control system. -ActiveRecord::Schema.define(version: 20160829114646) do +ActiveRecord::Schema.define(version: 20160830142653) do # These are extensions that must be enabled in order to support this database enable_extension "plpgsql" @@ -227,6 +227,13 @@ ActiveRecord::Schema.define(version: 20160829114646) do t.integer "user_id" end + create_table "mail_templates", force: :cascade do |t| + t.string "object" + t.text "body" + t.string "type" + t.integer "procedure_id" + end + create_table "module_api_cartos", force: :cascade do |t| t.integer "procedure_id" t.boolean "use_api_carto", default: false diff --git a/spec/controllers/admin/mails_controller_spec.rb b/spec/controllers/admin/mails_controller_spec.rb new file mode 100644 index 000000000..acb973e24 --- /dev/null +++ b/spec/controllers/admin/mails_controller_spec.rb @@ -0,0 +1,42 @@ +require 'spec_helper' + +describe Admin::MailsController, type: :controller do + let(:procedure) { create :procedure } + + before do + sign_in procedure.administrateur + end + + describe 'GET index' do + subject { get :index, procedure_id: procedure.id } + + it { expect(subject.status).to eq 200 } + end + + describe 'PATCH update' do + let(:object) { 'plop modif' } + let(:body) { 'plip modif' } + + context 'when is mail_received id' do + subject { patch :update, + procedure_id: procedure.id, + id: procedure.mail_received.id, + mail_received: { + object: object, + body: body + } } + + it { expect(subject).to redirect_to admin_procedure_mails_path } + + describe 'values in database for mail received' do + before do + subject + procedure.reload + end + + it { expect(procedure.mail_received.object).to eq object } + it { expect(procedure.mail_received.body).to eq body } + end + end + end +end \ No newline at end of file diff --git a/spec/factories/mail_received.rb b/spec/factories/mail_received.rb new file mode 100644 index 000000000..2e6ef674c --- /dev/null +++ b/spec/factories/mail_received.rb @@ -0,0 +1,7 @@ +FactoryGirl.define do + factory :mail_received do + object "Mail d'accusé de bonne reception de votre dossier" + body "Votre dossier est correctement reçu" + type 'MailReceived' + end +end diff --git a/spec/models/mail_template_spec.rb b/spec/models/mail_template_spec.rb new file mode 100644 index 000000000..5a6d937eb --- /dev/null +++ b/spec/models/mail_template_spec.rb @@ -0,0 +1,27 @@ +require 'spec_helper' + +describe MailTemplate do + it { is_expected.to have_db_column(:body) } + it { is_expected.to have_db_column(:type) } + + it { is_expected.to belong_to(:procedure) } + + describe '.balises' do + subject { MailTemplate.balises } + + it { expect(subject.size).to eq 1 } + + describe 'numero_dossier' do + subject { super().first } + + it { expect(subject.first).to eq 'numero_dossier' } + + describe 'attr and description value' do + subject { super().second } + + it { expect(subject[:attr]).to eq 'dossier.id' } + it { expect(subject[:description]).to eq "Permet d'afficher le numéro de dossier de l'utilisateur." } + end + end + end +end diff --git a/spec/models/procedure_spec.rb b/spec/models/procedure_spec.rb index 0cf700164..4c67b4b9f 100644 --- a/spec/models/procedure_spec.rb +++ b/spec/models/procedure_spec.rb @@ -5,6 +5,8 @@ describe Procedure do it { is_expected.to have_many(:types_de_piece_justificative) } it { is_expected.to have_many(:types_de_champ) } it { is_expected.to have_many(:dossiers) } + it { is_expected.to have_many(:mail_templates) } + it { is_expected.to have_one(:mail_received) } it { is_expected.to have_one(:module_api_carto) } it { is_expected.to belong_to(:administrateur) } end @@ -20,6 +22,36 @@ describe Procedure do it { is_expected.to have_db_column(:logo_secure_token) } it { is_expected.to have_db_column(:cerfa_flag) } it { is_expected.to have_db_column(:published) } + + describe 'mail_received' do + let(:procedure) { create :procedure } + + before do + create :mail_received, procedure: procedure + end + + it { expect(procedure.mail_received).not_to be_nil } + end + + end + + describe '#build_default_mails' do + subject { build :procedure } + + it 'call the fonction build_default_mails' do + expect(subject).to receive(:build_default_mails) + subject.save + end + + describe 'accessible values' do + + before do + subject.save + end + + it { expect(subject.mail_templates.size).to eq 1 } + it { expect(subject.mail_received).not_to be_nil } + end end describe 'validation' do From f03733f3ff2ad7209f7c4b6ede2011ce443c4f89 Mon Sep 17 00:00:00 2001 From: Xavier J Date: Thu, 1 Sep 2016 10:27:22 +0200 Subject: [PATCH 29/53] Mail for receive dossier is now send. --- .../backoffice/dossiers_controller.rb | 2 + app/mailers/notification_mailer.rb | 4 ++ app/models/mail_received.rb | 2 +- app/models/mail_template.rb | 27 ++++++++- app/views/admin/mails/index.html.haml | 2 +- .../dossier_received.text.erb | 1 + .../backoffice/dossiers_controller_spec.rb | 23 ++++++-- spec/mailers/notification_mailer_spec.rb | 10 ++++ spec/models/mail_template_spec.rb | 59 ++++++++++++++++--- 9 files changed, 112 insertions(+), 18 deletions(-) create mode 100644 app/views/notification_mailer/dossier_received.text.erb diff --git a/app/controllers/backoffice/dossiers_controller.rb b/app/controllers/backoffice/dossiers_controller.rb index 76230a9d0..dde387679 100644 --- a/app/controllers/backoffice/dossiers_controller.rb +++ b/app/controllers/backoffice/dossiers_controller.rb @@ -54,6 +54,8 @@ class Backoffice::DossiersController < ApplicationController @facade.dossier.next_step! 'gestionnaire', 'receive' flash.notice = 'Dossier considéré comme reçu.' + NotificationMailer.dossier_received(@facade.dossier).deliver_now! + render 'show' end diff --git a/app/mailers/notification_mailer.rb b/app/mailers/notification_mailer.rb index 3b9ee8bd1..5f4303042 100644 --- a/app/mailers/notification_mailer.rb +++ b/app/mailers/notification_mailer.rb @@ -3,6 +3,10 @@ class NotificationMailer < ApplicationMailer send_mail dossier, "Nouveau commentaire pour votre dossier TPS N°#{dossier.id}" end + def dossier_received dossier + send_mail dossier, MailTemplate.replace_tags(dossier.procedure.mail_received.object, dossier) + end + def dossier_validated dossier send_mail dossier, "Votre dossier TPS N°#{dossier.id} a été validé" end diff --git a/app/models/mail_received.rb b/app/models/mail_received.rb index b8611eea9..232260865 100644 --- a/app/models/mail_received.rb +++ b/app/models/mail_received.rb @@ -6,7 +6,7 @@ class MailReceived < MailTemplate self.body ||= "Bonjour,

- Votre administration vous confirme la bonne réception de votre dossier complet. Celui-ci sera instruit dans le délais légal déclaré par votre interlocuteur.
+ Votre administration vous confirme la bonne réception de votre dossier n°--numero_dossier-- complet. Celui-ci sera instruit dans le délais légal déclaré par votre interlocuteur.

En vous souhaitant une bonne journée,
diff --git a/app/models/mail_template.rb b/app/models/mail_template.rb index 116570d83..d51c8dbb8 100644 --- a/app/models/mail_template.rb +++ b/app/models/mail_template.rb @@ -1,10 +1,33 @@ class MailTemplate < ActiveRecord::Base belongs_to :procedure - enum balises: { + enum tags: { numero_dossier: { - attr: 'dossier.id', description: "Permet d'afficher le numéro de dossier de l'utilisateur." + }, + libelle_procedure: { + description: "Permet d'afficher le libellé de la procédure." } } + + def self.replace_tags string, dossier + @dossier = dossier + + tags.inject(string) do |acc, tag| + acc.gsub!("--#{tag.first}--", replace_tag(tag.first.to_sym)) || acc + end + end + + private + + def self.replace_tag tag + case tag + when :numero_dossier + @dossier.id.to_s + when :libelle_procedure + @dossier.procedure.libelle + else + '--BALISE_NON_RECONNUE--' + end + end end diff --git a/app/views/admin/mails/index.html.haml b/app/views/admin/mails/index.html.haml index 26b258e61..a910f76fe 100644 --- a/app/views/admin/mails/index.html.haml +++ b/app/views/admin/mails/index.html.haml @@ -18,7 +18,7 @@ Balise %th Description - - MailTemplate.balises.each do |balise| + - MailTemplate.tags.each do |balise| %tr %td.center %b.text-success diff --git a/app/views/notification_mailer/dossier_received.text.erb b/app/views/notification_mailer/dossier_received.text.erb new file mode 100644 index 000000000..42db34458 --- /dev/null +++ b/app/views/notification_mailer/dossier_received.text.erb @@ -0,0 +1 @@ +<%= MailTemplate.replace_tags @dossier.procedure.mail_received.body, @dossier %> \ No newline at end of file diff --git a/spec/controllers/backoffice/dossiers_controller_spec.rb b/spec/controllers/backoffice/dossiers_controller_spec.rb index 13c22edff..7769cc888 100644 --- a/spec/controllers/backoffice/dossiers_controller_spec.rb +++ b/spec/controllers/backoffice/dossiers_controller_spec.rb @@ -2,7 +2,7 @@ require 'rails_helper' describe Backoffice::DossiersController, type: :controller do before do - @request.env['HTTP_REFERER'] = TPS::Application::URL + @request.env['HTTP_REFERER'] = TPS::Application::URL end let(:dossier) { create(:dossier, :with_entreprise) } @@ -125,11 +125,24 @@ describe Backoffice::DossiersController, type: :controller do sign_in gestionnaire end - it 'change state to received' do - post :receive, dossier_id: dossier_id + subject { post :receive, dossier_id: dossier_id } - dossier.reload - expect(dossier.state).to eq('received') + context 'when it post a receive instruction' do + before do + subject + dossier.reload + end + + it 'change state to received' do + expect(dossier.state).to eq('received') + end + end + + it 'Notification email is send' do + expect(NotificationMailer).to receive(:dossier_received).and_return(NotificationMailer) + expect(NotificationMailer).to receive(:deliver_now!) + + subject end end diff --git a/spec/mailers/notification_mailer_spec.rb b/spec/mailers/notification_mailer_spec.rb index 44f5d68ea..ff411562d 100644 --- a/spec/mailers/notification_mailer_spec.rb +++ b/spec/mailers/notification_mailer_spec.rb @@ -34,4 +34,14 @@ RSpec.describe NotificationMailer, type: :mailer do it { expect(subject.body).to match("ce jour à #{dossier.updated_at}.") } it { expect(subject.subject).to eq("Votre dossier TPS N°#{dossier.id} a été déposé") } end + + describe '.dossier_received' do + let(:user) { create(:user) } + let(:dossier) { create(:dossier, user: user) } + + subject(:subject) { described_class.dossier_received(dossier) } + + it { expect(subject.subject).to eq("[TPS] Accusé de réception pour votre dossier n°#{dossier.id}") } + it { expect(subject.body).to match("Votre administration vous confirme la bonne réception de votre dossier n°#{dossier.id}") } + end end diff --git a/spec/models/mail_template_spec.rb b/spec/models/mail_template_spec.rb index 5a6d937eb..dbbe349ef 100644 --- a/spec/models/mail_template_spec.rb +++ b/spec/models/mail_template_spec.rb @@ -6,22 +6,63 @@ describe MailTemplate do it { is_expected.to belong_to(:procedure) } - describe '.balises' do - subject { MailTemplate.balises } + describe '.tags' do + subject { MailTemplate.tags } - it { expect(subject.size).to eq 1 } + it { expect(subject.size).to eq 2 } describe 'numero_dossier' do - subject { super().first } - - it { expect(subject.first).to eq 'numero_dossier' } + subject { super()['numero_dossier'] } describe 'attr and description value' do - subject { super().second } - it { expect(subject[:attr]).to eq 'dossier.id' } - it { expect(subject[:description]).to eq "Permet d'afficher le numéro de dossier de l'utilisateur." } + it { expect(subject['description']).to eq "Permet d'afficher le numéro de dossier de l'utilisateur." } + end + end + + describe 'numero_dossier' do + subject { super()['libelle_procedure'] } + + describe 'attr and description value' do + + it { expect(subject['description']).to eq "Permet d'afficher le libellé de la procédure." } end end end + + describe '.replace_tags' do + let(:dossier) { create :dossier } + let(:procedure) { dossier.procedure } + let(:mail_received) { procedure.mail_received } + + describe 'for tag --numero_dossier--' do + before do + procedure.mail_received.update_column(:object, '[TPS] Dossier n°--numero_dossier--') + end + + subject { MailTemplate.replace_tags procedure.mail_received.object, dossier } + + it { expect(subject).to eq "[TPS] Dossier n°#{dossier.id}" } + end + + describe 'for tag --libelle_procedure--' do + before do + procedure.mail_received.update_column(:object, '[TPS] Dossier pour la procédure --libelle_procedure--') + end + + subject { MailTemplate.replace_tags procedure.mail_received.object, dossier } + + it { expect(subject).to eq "[TPS] Dossier pour la procédure #{procedure.libelle}" } + end + + describe 'multiple tags' do + before do + procedure.mail_received.update_column(:object, '[TPS] Dossier n°--numero_dossier-- pour la procédure --libelle_procedure-- et encore le numéro : --numero_dossier--') + end + + subject { MailTemplate.replace_tags procedure.mail_received.object, dossier } + + it { expect(subject).to eq "[TPS] Dossier n°#{dossier.id} pour la procédure #{procedure.libelle} et encore le numéro : #{dossier.id}" } + end + end end From 7a81b18d660d68d6a04a6c52f22b8f28a3d794f7 Mon Sep 17 00:00:00 2001 From: Xavier J Date: Thu, 1 Sep 2016 10:40:20 +0200 Subject: [PATCH 30/53] Initiated all Procedure mail_received --- ...itiated_all_received_mail_for_procedure.rb | 41 +++++++++++++++++++ db/schema.rb | 2 +- 2 files changed, 42 insertions(+), 1 deletion(-) create mode 100644 db/migrate/20160901082824_initiated_all_received_mail_for_procedure.rb diff --git a/db/migrate/20160901082824_initiated_all_received_mail_for_procedure.rb b/db/migrate/20160901082824_initiated_all_received_mail_for_procedure.rb new file mode 100644 index 000000000..225745646 --- /dev/null +++ b/db/migrate/20160901082824_initiated_all_received_mail_for_procedure.rb @@ -0,0 +1,41 @@ +class InitiatedAllReceivedMailForProcedure < ActiveRecord::Migration + class Procedure < ActiveRecord::Base + has_one :mail_received + end + + class MailTemplate < ActiveRecord::Base + + end + + class ::MailReceived < MailTemplate + before_save :default_values + + def default_values + self.object ||= "[TPS] Accusé de réception pour votre dossier n°--numero_dossier--" + self.body ||= "Bonjour, +
+
+ Votre administration vous confirme la bonne réception de votre dossier n°--numero_dossier-- complet. Celui-ci sera instruit dans le délais légal déclaré par votre interlocuteur.
+
+ En vous souhaitant une bonne journée, +
+
+ --- +
+ L'équipe TPS" + end + end + + def up + Procedure.all.each do |procedure| + procedure.mail_received ||= MailReceived.create(type: 'MailReceived') + procedure.save + end + end + + def down + Procedure.all.each do |procedure| + procedure.mail_received.delete + end + end +end diff --git a/db/schema.rb b/db/schema.rb index c377a367d..3b12345df 100644 --- a/db/schema.rb +++ b/db/schema.rb @@ -11,7 +11,7 @@ # # It's strongly recommended that you check this file into your version control system. -ActiveRecord::Schema.define(version: 20160830142653) do +ActiveRecord::Schema.define(version: 20160901082824) do # These are extensions that must be enabled in order to support this database enable_extension "plpgsql" From b56883db165b31794317fef8d576eb993ede21f5 Mon Sep 17 00:00:00 2001 From: Xavier J Date: Thu, 1 Sep 2016 10:43:49 +0200 Subject: [PATCH 31/53] Clone mail_templates where clone procedure --- app/models/procedure.rb | 2 +- spec/models/procedure_spec.rb | 10 ++++++++++ 2 files changed, 11 insertions(+), 1 deletion(-) diff --git a/app/models/procedure.rb b/app/models/procedure.rb index 0bef80a6c..a99204e3a 100644 --- a/app/models/procedure.rb +++ b/app/models/procedure.rb @@ -87,7 +87,7 @@ class Procedure < ActiveRecord::Base end def clone - procedure = self.deep_clone(include: [:types_de_piece_justificative, :types_de_champ, :module_api_carto]) + procedure = self.deep_clone(include: [:types_de_piece_justificative, :types_de_champ, :module_api_carto, :mail_templates]) procedure.archived = false procedure.published = false return procedure if procedure.save diff --git a/spec/models/procedure_spec.rb b/spec/models/procedure_spec.rb index 4c67b4b9f..bd720b25a 100644 --- a/spec/models/procedure_spec.rb +++ b/spec/models/procedure_spec.rb @@ -164,6 +164,11 @@ describe Procedure do let!(:type_de_champ_1) { create(:type_de_champ_public, procedure: procedure, order_place: 1) } let!(:piece_justificative_0) { create(:type_de_piece_justificative, procedure: procedure, order_place: 0) } let!(:piece_justificative_1) { create(:type_de_piece_justificative, procedure: procedure, order_place: 1) } + + before do + procedure.mail_received.object = "Je vais être cloné" + end + subject { procedure.clone } it 'should duplicate specific objects with different id' do @@ -171,6 +176,7 @@ describe Procedure do expect(subject).to have_same_attributes_as(procedure) expect(subject.module_api_carto).to have_same_attributes_as(procedure.module_api_carto) + subject.types_de_champ.zip(procedure.types_de_champ).each do |stc, ptc| expect(stc).to have_same_attributes_as(ptc) end @@ -178,6 +184,10 @@ describe Procedure do subject.types_de_piece_justificative.zip(procedure.types_de_piece_justificative).each do |stc, ptc| expect(stc).to have_same_attributes_as(ptc) end + + subject.mail_templates.zip(procedure.mail_templates).each do |stc, ptc| + expect(stc).to have_same_attributes_as(ptc) + end end it 'should not duplicate specific related objects' do From a48299353e76730e97f789614db52aacd4048d21 Mon Sep 17 00:00:00 2001 From: Xavier J Date: Thu, 1 Sep 2016 11:00:06 +0200 Subject: [PATCH 32/53] Fix html interpretation in ReceivedMail --- app/views/notification_mailer/dossier_received.html.erb | 1 + app/views/notification_mailer/dossier_received.text.erb | 1 - config/environments/development.rb | 4 ++-- 3 files changed, 3 insertions(+), 3 deletions(-) create mode 100644 app/views/notification_mailer/dossier_received.html.erb delete mode 100644 app/views/notification_mailer/dossier_received.text.erb diff --git a/app/views/notification_mailer/dossier_received.html.erb b/app/views/notification_mailer/dossier_received.html.erb new file mode 100644 index 000000000..9064120b6 --- /dev/null +++ b/app/views/notification_mailer/dossier_received.html.erb @@ -0,0 +1 @@ +<%= (MailTemplate.replace_tags @dossier.procedure.mail_received.body, @dossier).html_safe %> \ No newline at end of file diff --git a/app/views/notification_mailer/dossier_received.text.erb b/app/views/notification_mailer/dossier_received.text.erb deleted file mode 100644 index 42db34458..000000000 --- a/app/views/notification_mailer/dossier_received.text.erb +++ /dev/null @@ -1 +0,0 @@ -<%= MailTemplate.replace_tags @dossier.procedure.mail_received.body, @dossier %> \ No newline at end of file diff --git a/config/environments/development.rb b/config/environments/development.rb index 66984e511..52c597431 100644 --- a/config/environments/development.rb +++ b/config/environments/development.rb @@ -37,10 +37,10 @@ Rails.application.configure do config.assets.raise_runtime_errors = true config.action_mailer.delivery_method = :test - config.action_mailer.default_url_options = { :host => 'localhost:3000' } + config.action_mailer.default_url_options = { host: 'localhost', port: 3000 } # Raises error for missing translations # config.action_view.raise_on_missing_translations = true - config.action_mailer.default_url_options = { host: 'localhost', port: 3000 } + end From 1c5cd471cd41326ad781f33fb0d41ba4f9cb8b9c Mon Sep 17 00:00:00 2001 From: Xavier J Date: Thu, 1 Sep 2016 12:09:44 +0200 Subject: [PATCH 33/53] Externalize in config file SIADE API URL. --- config/deploy.rb | 1 + config/initializers/urls.rb | 5 +++++ lib/siade/api.rb | 6 +----- 3 files changed, 7 insertions(+), 5 deletions(-) create mode 100644 config/initializers/urls.rb diff --git a/config/deploy.rb b/config/deploy.rb index 4350ccd30..a40a9c2b6 100644 --- a/config/deploy.rb +++ b/config/deploy.rb @@ -68,6 +68,7 @@ set :shared_paths, [ 'config/initializers/features.yml', "config/environments/#{ENV['to']}.rb", "config/initializers/token.rb", + "config/initializers/urls.rb", "config/initializers/super_admin.rb", "config/unicorn.rb", "config/initializers/raven.rb", diff --git a/config/initializers/urls.rb b/config/initializers/urls.rb new file mode 100644 index 000000000..bb49d1437 --- /dev/null +++ b/config/initializers/urls.rb @@ -0,0 +1,5 @@ +if Rails.env.production? + SIADEURL = 'https://api.apientreprise.fr' +else + SIADEURL = 'https://api-dev.apientreprise.fr' +end \ No newline at end of file diff --git a/lib/siade/api.rb b/lib/siade/api.rb index 620c5f627..c182ab8c8 100644 --- a/lib/siade/api.rb +++ b/lib/siade/api.rb @@ -38,10 +38,6 @@ class SIADE::API end def self.base_url - if Rails.env.production? - 'https://api.apientreprise.fr' - else - 'https://api-dev.apientreprise.fr' - end + SIADEURL end end From 6a6ac7872a27a4b75ebcfae6f735ae0782da78b9 Mon Sep 17 00:00:00 2001 From: Guillaume Lazzara Date: Fri, 2 Sep 2016 17:10:55 +0200 Subject: [PATCH 34/53] Force deep copy of procedure logo --- app/models/procedure.rb | 2 ++ 1 file changed, 2 insertions(+) diff --git a/app/models/procedure.rb b/app/models/procedure.rb index a99204e3a..317f70f44 100644 --- a/app/models/procedure.rb +++ b/app/models/procedure.rb @@ -90,6 +90,8 @@ class Procedure < ActiveRecord::Base procedure = self.deep_clone(include: [:types_de_piece_justificative, :types_de_champ, :module_api_carto, :mail_templates]) procedure.archived = false procedure.published = false + procedure.logo_secure_token = nil + procedure.remote_logo_url = self.logo_url return procedure if procedure.save end From d5ad2569190425683aeeb6efa95bc4b431eddba3 Mon Sep 17 00:00:00 2001 From: Xavier J Date: Tue, 6 Sep 2016 11:07:26 +0200 Subject: [PATCH 35/53] create route and controller to filter dossier view by procedure --- .../dossiers/procedure_controller.rb | 34 +++++++++++++++ app/facades/dossiers_list_facades.rb | 5 ++- .../dossiers_list_gestionnaire_service.rb | 22 +++++----- app/views/backoffice/dossiers/index.html.haml | 6 +-- config/routes.rb | 41 +++++++++---------- 5 files changed, 71 insertions(+), 37 deletions(-) create mode 100644 app/controllers/backoffice/dossiers/procedure_controller.rb diff --git a/app/controllers/backoffice/dossiers/procedure_controller.rb b/app/controllers/backoffice/dossiers/procedure_controller.rb new file mode 100644 index 000000000..1f55c5f42 --- /dev/null +++ b/app/controllers/backoffice/dossiers/procedure_controller.rb @@ -0,0 +1,34 @@ +class Backoffice::Dossiers::ProcedureController < ApplicationController + include SmartListing::Helper::ControllerExtensions + helper SmartListing::Helper + + before_action :authenticate_gestionnaire! + + def show + smartlisting_dossier (params[:liste] || 'a_traiter') + + render 'backoffice/dossiers/index' + rescue ActiveRecord::RecordNotFound + flash[:alert] = "Cette procédure n'existe pas ou vous n'y avez pas accès." + redirect_to backoffice_dossiers_path + end + + private + + def smartlisting_dossier liste + create_dossiers_list_facade liste + + @dossiers = smart_listing_create :dossiers, + @dossiers_list_facade.dossiers_to_display, + partial: "backoffice/dossiers/list", + array: true + end + + def create_dossiers_list_facade liste='a_traiter' + @dossiers_list_facade = DossiersListFacades.new current_gestionnaire, liste, retrieve_procedure + end + + def retrieve_procedure + current_gestionnaire.procedures.find params[:id] + end +end diff --git a/app/facades/dossiers_list_facades.rb b/app/facades/dossiers_list_facades.rb index 576e4d55a..ae376bbea 100644 --- a/app/facades/dossiers_list_facades.rb +++ b/app/facades/dossiers_list_facades.rb @@ -1,12 +1,13 @@ class DossiersListFacades - def initialize current_devise_profil, liste + def initialize current_devise_profil, liste, procedure = nil @current_devise_profil = current_devise_profil @liste = liste + @procedure = procedure end def service if gestionnaire? - @service ||= DossiersListGestionnaireService.new @current_devise_profil, @liste + @service ||= DossiersListGestionnaireService.new @current_devise_profil, @liste, @procedure elsif user? @service ||= DossiersListUserService.new @current_devise_profil, @liste end diff --git a/app/services/dossiers_list_gestionnaire_service.rb b/app/services/dossiers_list_gestionnaire_service.rb index 2ef534620..a4ca81d98 100644 --- a/app/services/dossiers_list_gestionnaire_service.rb +++ b/app/services/dossiers_list_gestionnaire_service.rb @@ -1,7 +1,8 @@ class DossiersListGestionnaireService - def initialize current_devise_profil, liste + def initialize current_devise_profil, liste, procedure = nil @current_devise_profil = current_devise_profil @liste = liste + @procedure = procedure end def dossiers_to_display @@ -10,35 +11,34 @@ class DossiersListGestionnaireService 'en_attente' => waiting_for_user, 'deposes' => deposes, 'a_instruire' => a_instruire, - 'termine' => termine, - 'suivi' => suivi}[@liste] + 'termine' => termine}[@liste] end def nouveaux - @nouveaux ||= @current_devise_profil.dossiers.nouveaux + @nouveaux ||= filter_dossiers.nouveaux end def waiting_for_gestionnaire - @waiting_for_gestionnaire ||= @current_devise_profil.dossiers.waiting_for_gestionnaire + @waiting_for_gestionnaire ||= filter_dossiers.waiting_for_gestionnaire end def waiting_for_user - @waiting_for_user ||= @current_devise_profil.dossiers.waiting_for_user + @waiting_for_user ||= filter_dossiers.waiting_for_user end def deposes - @deposes ||= @current_devise_profil.dossiers.deposes + @deposes ||= filter_dossiers.deposes end def a_instruire - @a_instruire ||= @current_devise_profil.dossiers.a_instruire + @a_instruire ||= filter_dossiers.a_instruire end def termine - @termine ||= @current_devise_profil.dossiers.termine + @termine ||= filter_dossiers.termine end - def suivi - @suivi ||= @current_devise_profil.dossiers_follow + def filter_dossiers + @procedure.nil? ? @current_devise_profil.dossiers : @procedure.dossiers end end \ No newline at end of file diff --git a/app/views/backoffice/dossiers/index.html.haml b/app/views/backoffice/dossiers/index.html.haml index c4fab90de..b6473abf4 100644 --- a/app/views/backoffice/dossiers/index.html.haml +++ b/app/views/backoffice/dossiers/index.html.haml @@ -1,10 +1,10 @@ #backoffice_index #pref_list_menu - = render partial: 'pref_list' - = render partial: 'onglets' + = render partial: 'backoffice/dossiers/pref_list' + = render partial: 'backoffice/dossiers/onglets' = smart_listing_render :dossiers %br %br - = render partial: 'state_description', locals: {dossiers_list_facade: @dossiers_list_facade} + = render partial: 'backoffice/dossiers/state_description', locals: {dossiers_list_facade: @dossiers_list_facade} diff --git a/config/routes.rb b/config/routes.rb index 673bdbb14..13e67732a 100644 --- a/config/routes.rb +++ b/config/routes.rb @@ -37,6 +37,12 @@ Rails.application.routes.draw do root 'root#index' get 'cgu' => 'cgu#index' + get 'demo' => 'demo#index' + get 'users' => 'users#index' + get 'admin' => 'admin#index' + get 'backoffice' => 'backoffice#index' + + resources :administrations namespace :france_connect do get 'particulier' => 'particulier#login' @@ -47,9 +53,6 @@ Rails.application.routes.draw do post 'particulier/check_email' => 'particulier#check_email' end - get 'demo' => 'demo#index' - get 'users' => 'users#index' - namespace :users do namespace :dossiers do resources :invites, only: [:index, :show] @@ -85,8 +88,6 @@ Rails.application.routes.draw do resource :dossiers end - get 'admin' => 'admin#index' - namespace :admin do get 'sign_in' => '/administrateurs/sessions#new' get 'procedures/archived' => 'procedures#archived' @@ -139,25 +140,13 @@ Rails.application.routes.draw do get 'address_point' => 'search#get_address_point' end - get 'backoffice' => 'backoffice#index' - namespace :backoffice do get 'sign_in' => '/gestionnaires/sessions#new' - get 'dossiers/search' => 'dossiers#search' + get 'download_dossiers_tps' => 'dossiers#download_dossiers_tps' resource :private_formulaire - namespace :preference_list_dossier do - post 'add' - delete 'delete' - - get 'reload_smartlisting' => '/backoffice/dossiers#reload_smartlisting' - get 'reload_pref_list' - end - - get 'download_dossiers_tps' => 'dossiers#download_dossiers_tps' - resources :dossiers do post 'valid' => 'dossiers#valid' post 'receive' => 'dossiers#receive' @@ -170,10 +159,20 @@ Rails.application.routes.draw do put 'follow' => 'dossiers#follow' end - resources :commentaires, only: [:create] - end + namespace :dossiers do + resources :procedure, only: [:show] + end - resources :administrations + resources :commentaires, only: [:create] + + namespace :preference_list_dossier do + post 'add' + delete 'delete' + + get 'reload_smartlisting' => '/backoffice/dossiers#reload_smartlisting' + get 'reload_pref_list' + end + end namespace :api do namespace :v1 do From bb199820111cf8185bb36eb5cc2273bdcbd188f3 Mon Sep 17 00:00:00 2001 From: Xavier J Date: Tue, 6 Sep 2016 14:07:07 +0200 Subject: [PATCH 36/53] Change onglet url to dynamic gestion --- app/facades/dossiers_list_facades.rb | 30 +++++++++++++++++++ .../backoffice/dossiers/_onglets.html.haml | 12 ++++---- 2 files changed, 36 insertions(+), 6 deletions(-) diff --git a/app/facades/dossiers_list_facades.rb b/app/facades/dossiers_list_facades.rb index ae376bbea..0ef6a6baf 100644 --- a/app/facades/dossiers_list_facades.rb +++ b/app/facades/dossiers_list_facades.rb @@ -1,4 +1,6 @@ class DossiersListFacades + include Rails.application.routes.url_helpers + def initialize current_devise_profil, liste, procedure = nil @current_devise_profil = current_devise_profil @liste = liste @@ -102,6 +104,30 @@ class DossiersListFacades def invite_total service.invite.count end + + def nouveaux_url + base_url 'nouveaux' + end + + def a_traiter_url + base_url 'a_traiter' + end + + def en_attente_url + base_url 'en_attente' + end + + def deposes_url + base_url 'deposes' + end + + def a_instruire_url + base_url 'a_instruire' + end + + def termine_url + base_url 'termine' + end private @@ -112,4 +138,8 @@ class DossiersListFacades def user? @current_devise_profil.class == User end + + def base_url liste + @procedure.nil? ? backoffice_dossiers_path(liste: liste) : backoffice_dossiers_procedure_path(id: @procedure.id, liste: liste) + end end \ No newline at end of file diff --git a/app/views/backoffice/dossiers/_onglets.html.haml b/app/views/backoffice/dossiers/_onglets.html.haml index 2d88d5b7b..55c4c85a4 100644 --- a/app/views/backoffice/dossiers/_onglets.html.haml +++ b/app/views/backoffice/dossiers/_onglets.html.haml @@ -5,42 +5,42 @@ #onglets %ul.nav.nav-tabs %li{ class: (@dossiers_list_facade.nouveaux_class)} - %a{:href => "#{url_for backoffice_dossiers_path(liste: 'nouveaux')}", 'data-toggle' => :tooltip, title: 'Les nouveaux dossiers non ouverts.'} + %a{:href => "#{url_for @dossiers_list_facade.nouveaux_url}", 'data-toggle' => :tooltip, title: 'Les nouveaux dossiers non ouverts.'} %h5.text-info = "Nouveaux " .badge.progress-bar-info =@dossiers_list_facade.nouveaux_total %li{ class: (@dossiers_list_facade.a_traiter_class) } - %a{:href => "#{url_for backoffice_dossiers_path(liste: 'a_traiter')}", 'data-toggle' => :tooltip, title: 'Les dossiers qui requièrent une action de votre part.'} + %a{:href => "#{url_for @dossiers_list_facade.a_traiter_url}", 'data-toggle' => :tooltip, title: 'Les dossiers qui requièrent une action de votre part.'} %h5.text-danger = "Action requise" .badge.progress-bar-danger =@dossiers_list_facade.a_traiter_total %li{ class: (@dossiers_list_facade.en_attente_class) } - %a{:href => "#{url_for backoffice_dossiers_path(liste: 'en_attente')}", 'data-toggle' => :tooltip, title: 'Les dossiers en attentes d\'une action de la part de l\'usager.'} + %a{:href => "#{url_for @dossiers_list_facade.en_attente_url}", 'data-toggle' => :tooltip, title: 'Les dossiers en attentes d\'une action de la part de l\'usager.'} %h5.text-default ="Attente usager " .badge.progress-bar-default =@dossiers_list_facade.en_attente_total %li{ class: (@dossiers_list_facade.deposes_class) } - %a{:href => "#{url_for backoffice_dossiers_path(liste: 'deposes')}", 'data-toggle' => :tooltip, title: 'Les dossiers qui ont été validés et déposés par les usager qui attendent une réponse de bonne réception avant instruction.'} + %a{:href => "#{url_for @dossiers_list_facade.deposes_url}", 'data-toggle' => :tooltip, title: 'Les dossiers qui ont été validés et déposés par les usager qui attendent une réponse de bonne réception avant instruction.'} %h5.text-purple ="À réceptionner" .badge.progress-bar-purple =@dossiers_list_facade.deposes_total %li{ class: (@dossiers_list_facade.a_instruire_class) } - %a{:href => "#{url_for backoffice_dossiers_path(liste: 'a_instruire')}", 'data-toggle' => :tooltip, title: 'Les dossiers qui ont été notifiés comme bien réceptionnés et qui attendent un verdict final.'} + %a{:href => "#{url_for @dossiers_list_facade.a_instruire_url}", 'data-toggle' => :tooltip, title: 'Les dossiers qui ont été notifiés comme bien réceptionnés et qui attendent un verdict final.'} %h5.text-warning = "À instruire" .badge.progress-bar-warning =@dossiers_list_facade.a_instruire_total %li{ class: (@dossiers_list_facade.termine_class) } - %a{:href => "#{url_for backoffice_dossiers_path(liste: 'termine')}",'data-toggle' => :tooltip, title: 'Tous les dossiers qui ont été traité avec un statut "Validé", "Refusé" ou "Sans suite "'} + %a{:href => "#{url_for @dossiers_list_facade.termine_url}",'data-toggle' => :tooltip, title: 'Tous les dossiers qui ont été traité avec un statut "Validé", "Refusé" ou "Sans suite "'} %h5.text-success = "Terminé" .badge.progress-bar-success From 62a0b84048bbbc89a2cc52410c48f713a9fc12f1 Mon Sep 17 00:00:00 2001 From: Xavier J Date: Thu, 8 Sep 2016 16:21:54 +0200 Subject: [PATCH 37/53] Filter by procedure is activated on route /backoffice/dossiers/procedure/:id --- .../admin/accompagnateurs_controller.rb | 8 +- .../backoffice/dossiers_controller.rb | 8 +- .../preference_list_dossier_controller.rb | 19 +++- app/facades/dossiers_list_facades.rb | 8 ++ app/models/preference_list_dossier.rb | 1 + app/models/procedure.rb | 2 + app/services/accompagnateur_service.rb | 12 +++ .../dossiers_list_gestionnaire_service.rb | 2 +- app/views/backoffice/dossiers/_list.html.haml | 4 +- .../backoffice/dossiers/_pref_list.html.haml | 4 +- .../backoffice/dossiers/_pref_list.js.erb | 4 +- ..._add_has_procedure_to_pref_list_dossier.rb | 5 + ...ild_default_pref_list_dossier_procedure.rb | 44 +++++++++ db/schema.rb | 3 +- .../admin/accompagnateurs_controller_spec.rb | 6 +- ...preference_list_dossier_controller_spec.rb | 1 + spec/facades/dossiers_list_facades_spec.rb | 39 ++++++++ ...st_dossier_by_procedure_backoffice_spec.rb | 92 +++++++++++++++++++ spec/models/preference_list_dossier_spec.rb | 1 + spec/models/procedure_spec.rb | 1 + spec/services/accompagnateur_service_spec.rb | 38 +++++++- 21 files changed, 287 insertions(+), 15 deletions(-) create mode 100644 db/migrate/20160906123255_add_has_procedure_to_pref_list_dossier.rb create mode 100644 db/migrate/20160906134155_build_default_pref_list_dossier_procedure.rb create mode 100644 spec/facades/dossiers_list_facades_spec.rb create mode 100644 spec/features/backoffice/lateral_page_pref_list_dossier_by_procedure_backoffice_spec.rb diff --git a/app/controllers/admin/accompagnateurs_controller.rb b/app/controllers/admin/accompagnateurs_controller.rb index 83f9a6c94..ef47687a8 100644 --- a/app/controllers/admin/accompagnateurs_controller.rb +++ b/app/controllers/admin/accompagnateurs_controller.rb @@ -23,7 +23,13 @@ class Admin::AccompagnateursController < AdminController end def update - AccompagnateurService.change_assignement! Gestionnaire.find(params[:accompagnateur_id]), Procedure.find(params[:procedure_id]), params[:to] + gestionnaire = Gestionnaire.find(params[:accompagnateur_id]) + procedure = Procedure.find(params[:procedure_id]) + to = params[:to] + + + AccompagnateurService.change_assignement! gestionnaire, procedure, to + AccompagnateurService.build_default_column gestionnaire, procedure, to flash.notice = "Assignement effectué" redirect_to admin_procedure_accompagnateurs_path, procedure_id: params[:procedure_id] diff --git a/app/controllers/backoffice/dossiers_controller.rb b/app/controllers/backoffice/dossiers_controller.rb index dde387679..6918c4653 100644 --- a/app/controllers/backoffice/dossiers_controller.rb +++ b/app/controllers/backoffice/dossiers_controller.rb @@ -123,7 +123,7 @@ class Backoffice::DossiersController < ApplicationController end def create_dossiers_list_facade liste='a_traiter' - @dossiers_list_facade = DossiersListFacades.new current_gestionnaire, liste + @dossiers_list_facade = DossiersListFacades.new current_gestionnaire, liste, retrieve_procedure end def create_dossier_facade dossier_id @@ -133,4 +133,10 @@ class Backoffice::DossiersController < ApplicationController flash.alert = t('errors.messages.dossier_not_found') redirect_to url_for(controller: '/backoffice') end + + + def retrieve_procedure + return if params[:procedure_id].blank? + current_gestionnaire.procedures.find params[:procedure_id] + end end diff --git a/app/controllers/backoffice/preference_list_dossier_controller.rb b/app/controllers/backoffice/preference_list_dossier_controller.rb index 034ff1fb1..0b9e564b3 100644 --- a/app/controllers/backoffice/preference_list_dossier_controller.rb +++ b/app/controllers/backoffice/preference_list_dossier_controller.rb @@ -3,6 +3,7 @@ class Backoffice::PreferenceListDossierController < ApplicationController helper SmartListing::Helper before_action :authenticate_gestionnaire! + before_action :params_procedure_id def add PreferenceListDossier.create( @@ -13,14 +14,17 @@ class Backoffice::PreferenceListDossierController < ApplicationController bootstrap_lg: params[:bootstrap_lg], order: nil, filter: nil, - gestionnaire: current_gestionnaire + gestionnaire: current_gestionnaire, + procedure_id: params_procedure_id ) render partial: 'backoffice/dossiers/pref_list', formats: :js end def reload_pref_list - render partial: 'backoffice/dossiers/pref_list' + @dossiers_list_facade = DossiersListFacades.new current_gestionnaire, '', retrieve_procedure + + render partial: 'backoffice/dossiers/pref_list', id: params_procedure_id end def delete @@ -28,4 +32,15 @@ class Backoffice::PreferenceListDossierController < ApplicationController render partial: 'backoffice/dossiers/pref_list', formats: :js end + + private + + def params_procedure_id + @procedure_id ||= params[:procedure_id] + end + + def retrieve_procedure + return if params[:procedure_id].blank? + current_gestionnaire.procedures.find params_procedure_id + end end diff --git a/app/facades/dossiers_list_facades.rb b/app/facades/dossiers_list_facades.rb index 0ef6a6baf..39ee69c4d 100644 --- a/app/facades/dossiers_list_facades.rb +++ b/app/facades/dossiers_list_facades.rb @@ -19,10 +19,18 @@ class DossiersListFacades @liste end + def procedure_id + @procedure.nil? ? nil : @procedure.id + end + def dossiers_to_display service.dossiers_to_display end + def preference_list_dossiers_filter + @list_table_columns ||= @current_devise_profil.preference_list_dossiers.where(procedure: @procedure).order(:id) + end + def nouveaux_class (@liste == 'nouveaux' ? 'active' : '') end diff --git a/app/models/preference_list_dossier.rb b/app/models/preference_list_dossier.rb index a6a57f985..cc0a00a4f 100644 --- a/app/models/preference_list_dossier.rb +++ b/app/models/preference_list_dossier.rb @@ -1,5 +1,6 @@ class PreferenceListDossier < ActiveRecord::Base belongs_to :gestionnaire + belongs_to :procedure def table_attr return self.attr if table.nil? || table.empty? diff --git a/app/models/procedure.rb b/app/models/procedure.rb index 317f70f44..2489f53d2 100644 --- a/app/models/procedure.rb +++ b/app/models/procedure.rb @@ -15,6 +15,8 @@ class Procedure < ActiveRecord::Base has_many :assign_to, dependent: :destroy has_many :gestionnaires, through: :assign_to + has_many :preference_list_dossiers + delegate :use_api_carto, to: :module_api_carto accepts_nested_attributes_for :types_de_champ, :reject_if => proc { |attributes| attributes['libelle'].blank? }, :allow_destroy => true diff --git a/app/services/accompagnateur_service.rb b/app/services/accompagnateur_service.rb index 119560418..8a254e06f 100644 --- a/app/services/accompagnateur_service.rb +++ b/app/services/accompagnateur_service.rb @@ -9,4 +9,16 @@ class AccompagnateurService AssignTo.delete_all(gestionnaire: accompagnateur, procedure: procedure) end end + + def self.build_default_column accompagnateur, procedure, to + return unless to == ASSIGN + return unless PreferenceListDossier.where(gestionnaire: accompagnateur, procedure: procedure).empty? + + accompagnateur.preference_list_dossiers.each do |pref| + clone = pref.dup + + clone.procedure = procedure + clone.save + end + end end \ No newline at end of file diff --git a/app/services/dossiers_list_gestionnaire_service.rb b/app/services/dossiers_list_gestionnaire_service.rb index a4ca81d98..6e3cda519 100644 --- a/app/services/dossiers_list_gestionnaire_service.rb +++ b/app/services/dossiers_list_gestionnaire_service.rb @@ -39,6 +39,6 @@ class DossiersListGestionnaireService end def filter_dossiers - @procedure.nil? ? @current_devise_profil.dossiers : @procedure.dossiers + @filter_dossiers ||= @procedure.nil? ? @current_devise_profil.dossiers : @procedure.dossiers end end \ No newline at end of file diff --git a/app/views/backoffice/dossiers/_list.html.haml b/app/views/backoffice/dossiers/_list.html.haml index 8add886a6..64390423b 100644 --- a/app/views/backoffice/dossiers/_list.html.haml +++ b/app/views/backoffice/dossiers/_list.html.haml @@ -1,14 +1,14 @@ - unless smart_listing.empty? %table.table %thead - - current_gestionnaire.preference_list_dossiers.order(:id).each do |preference| + - @dossiers_list_facade.preference_list_dossiers_filter.each do |preference| %th{class: "col-md-#{preference.bootstrap_lg} col-lg-#{preference.bootstrap_lg}"}= smart_listing.sortable preference.libelle, preference.table_attr %th.col-md-1.col-lg-1.center Actions %th.col-md-1.col-lg-1.center Abonnés - @dossiers.each do |dossier| %tr - - current_gestionnaire.preference_list_dossiers.order(:id).each_with_index do |preference, index| + - @dossiers_list_facade.preference_list_dossiers_filter.each_with_index do |preference, index| %td - if preference.table.nil? || preference.table.empty? - value = dossier.decorate.public_send(preference.attr_decorate) diff --git a/app/views/backoffice/dossiers/_pref_list.html.haml b/app/views/backoffice/dossiers/_pref_list.html.haml index e802bb638..30731efcb 100644 --- a/app/views/backoffice/dossiers/_pref_list.html.haml +++ b/app/views/backoffice/dossiers/_pref_list.html.haml @@ -9,10 +9,11 @@ Actuelles %ul - - current_gestionnaire.preference_list_dossiers.order(:id).each_with_index do |preference, index| + - @dossiers_list_facade.preference_list_dossiers_filter.each_with_index do |preference, index| %li = form_tag backoffice_preference_list_dossier_delete_path, method: :delete, remote: true do = hidden_field_tag :pref_id, preference.id + = hidden_field_tag :procedure_id, preference.procedure_id = preference.libelle %button.btn.btn-default.btn-xs{type: :submit, id: "delete_pref_list_#{preference[:table]}_#{preference[:attr]}"} %i.fa.fa-minus @@ -36,6 +37,7 @@ = hidden_field_tag :attr, columns.second[:attr] = hidden_field_tag :attr_decorate, columns.second[:attr_decorate] = hidden_field_tag :bootstrap_lg, columns.second[:bootstrap_lg] + = hidden_field_tag :procedure_id, @dossiers_list_facade.procedure_id = columns.second[:libelle] %button.btn.btn-default.btn-xs{type: :submit, id: "add_pref_list_#{columns.second[:table]}_#{columns.second[:attr]}"} diff --git a/app/views/backoffice/dossiers/_pref_list.js.erb b/app/views/backoffice/dossiers/_pref_list.js.erb index 2d421e10f..e15e3f068 100644 --- a/app/views/backoffice/dossiers/_pref_list.js.erb +++ b/app/views/backoffice/dossiers/_pref_list.js.erb @@ -1,12 +1,12 @@ $.ajax({ method: 'get', - url: '/backoffice/preference_list_dossier/reload_smartlisting', + url: '/backoffice/preference_list_dossier/reload_smartlisting?procedure_id=<%= @procedure_id %>', async: true }); $.ajax({ methd: 'get', - url: '/backoffice/preference_list_dossier/reload_pref_list', + url: '/backoffice/preference_list_dossier/reload_pref_list?procedure_id=<%= @procedure_id %>', async: true }).done(function (data) { $("#pref_list_menu").html(data); diff --git a/db/migrate/20160906123255_add_has_procedure_to_pref_list_dossier.rb b/db/migrate/20160906123255_add_has_procedure_to_pref_list_dossier.rb new file mode 100644 index 000000000..e80588537 --- /dev/null +++ b/db/migrate/20160906123255_add_has_procedure_to_pref_list_dossier.rb @@ -0,0 +1,5 @@ +class AddHasProcedureToPrefListDossier < ActiveRecord::Migration + def change + add_belongs_to :preference_list_dossiers, :procedure + end +end diff --git a/db/migrate/20160906134155_build_default_pref_list_dossier_procedure.rb b/db/migrate/20160906134155_build_default_pref_list_dossier_procedure.rb new file mode 100644 index 000000000..bb4545d69 --- /dev/null +++ b/db/migrate/20160906134155_build_default_pref_list_dossier_procedure.rb @@ -0,0 +1,44 @@ +class BuildDefaultPrefListDossierProcedure < ActiveRecord::Migration + class Gestionnaire < ActiveRecord::Base + has_many :assign_to, dependent: :destroy + has_many :procedures, through: :assign_to + has_many :preference_list_dossiers + end + + class PreferenceListDossier < ActiveRecord::Base + belongs_to :gestionnaire + belongs_to :procedure + end + + class AssignTo < ActiveRecord::Base + belongs_to :procedure + belongs_to :gestionnaire + end + + class Procedure < ActiveRecord::Base + has_many :gestionnaires, through: :assign_to + has_many :preference_list_dossiers + end + + def up + Gestionnaire.all.each do |gestionnaire| + gestionnaire.procedures.each do |procedure| + gestionnaire.preference_list_dossiers.where(procedure: nil).each do |preference| + clone = preference.dup + + clone.procedure = procedure + clone.save + end + + base_object = gestionnaire.preference_list_dossiers.where(procedure: nil).size + created_object = gestionnaire.preference_list_dossiers.where(procedure: procedure).size + + raise "ERROR nb object (#{base_object} != #{created_object})" unless created_object == base_object + end + end + end + + def down + PreferenceListDossier.where('procedure_id IS NOT NULL') + end +end diff --git a/db/schema.rb b/db/schema.rb index 3b12345df..7533be06e 100644 --- a/db/schema.rb +++ b/db/schema.rb @@ -11,7 +11,7 @@ # # It's strongly recommended that you check this file into your version control system. -ActiveRecord::Schema.define(version: 20160901082824) do +ActiveRecord::Schema.define(version: 20160906134155) do # These are extensions that must be enabled in order to support this database enable_extension "plpgsql" @@ -264,6 +264,7 @@ ActiveRecord::Schema.define(version: 20160901082824) do t.string "order" t.string "filter" t.integer "gestionnaire_id" + t.integer "procedure_id" end create_table "procedure_paths", force: :cascade do |t| diff --git a/spec/controllers/admin/accompagnateurs_controller_spec.rb b/spec/controllers/admin/accompagnateurs_controller_spec.rb index 42889eb1f..285b43feb 100644 --- a/spec/controllers/admin/accompagnateurs_controller_spec.rb +++ b/spec/controllers/admin/accompagnateurs_controller_spec.rb @@ -15,7 +15,7 @@ describe Admin::AccompagnateursController, type: :controller do end describe 'PUT #update' do - subject { put :update, accompagnateur_id: gestionnaire.id ,procedure_id: procedure.id } + subject { put :update, accompagnateur_id: gestionnaire.id ,procedure_id: procedure.id, to: 'assign' } it { expect(subject).to redirect_to admin_procedure_accompagnateurs_path(procedure_id: procedure.id) } @@ -25,6 +25,10 @@ describe Admin::AccompagnateursController, type: :controller do end it { expect(flash[:notice]).to be_present } + + it 'default pref list dossier procedure columns are created' do + expect(procedure.preference_list_dossiers.size).to eq gestionnaire.preference_list_dossiers.where('procedure_id IS NULL').size + end end end end \ No newline at end of file diff --git a/spec/controllers/backoffice/preference_list_dossier_controller_spec.rb b/spec/controllers/backoffice/preference_list_dossier_controller_spec.rb index ecf6c25f0..06ccf9b55 100644 --- a/spec/controllers/backoffice/preference_list_dossier_controller_spec.rb +++ b/spec/controllers/backoffice/preference_list_dossier_controller_spec.rb @@ -36,6 +36,7 @@ describe Backoffice::PreferenceListDossierController, type: :controller do it { expect(last.bootstrap_lg).to eq bootstrap_lg } it { expect(last.order).to be_nil } it { expect(last.filter).to be_nil } + it { expect(last.procedure_id).to be_nil } it { expect(last.gestionnaire).to eq gestionnaire } end end diff --git a/spec/facades/dossiers_list_facades_spec.rb b/spec/facades/dossiers_list_facades_spec.rb new file mode 100644 index 000000000..c701092f8 --- /dev/null +++ b/spec/facades/dossiers_list_facades_spec.rb @@ -0,0 +1,39 @@ +require 'spec_helper' + +describe DossiersListFacades do + + let(:gestionnaire) { create :gestionnaire } + let(:procedure) { create :procedure } + + before do + create :preference_list_dossier, + gestionnaire: gestionnaire, + table: '', + attr: 'state', + attr_decorate: 'display_state' + + create :preference_list_dossier, + gestionnaire: gestionnaire, + table: '', + attr: 'state', + attr_decorate: 'display_state', + procedure_id: procedure.id + end + + describe '#preference_list_dossiers_filter' do + + subject { facade.preference_list_dossiers_filter } + + context 'when procedure is not pasted at the facade' do + let(:facade) { described_class.new gestionnaire, 'nouveaux' } + + it { expect(subject.size).to eq 6 } + end + + context 'when procedure is pasted at the facade' do + let(:facade) { described_class.new gestionnaire, 'nouveaux', procedure } + + it { expect(subject.size).to eq 1 } + end + end +end \ No newline at end of file diff --git a/spec/features/backoffice/lateral_page_pref_list_dossier_by_procedure_backoffice_spec.rb b/spec/features/backoffice/lateral_page_pref_list_dossier_by_procedure_backoffice_spec.rb new file mode 100644 index 000000000..2a0c01147 --- /dev/null +++ b/spec/features/backoffice/lateral_page_pref_list_dossier_by_procedure_backoffice_spec.rb @@ -0,0 +1,92 @@ +require 'spec_helper' + +feature 'usage of pref list dossier lateral panel by procedure', js: true do + + let(:administrateur) { create(:administrateur) } + let(:gestionnaire) { create(:gestionnaire, administrateurs: [administrateur]) } + let(:procedure) { create(:procedure, administrateur: administrateur) } + + before do + create(:dossier, :with_entreprise, procedure: procedure, state: 'updated') + create :assign_to, procedure: procedure, gestionnaire: gestionnaire + visit backoffice_path + end + + scenario 'he is redirected to /gestionnaires/sign_id' do + expect(page).to have_css('#gestionnaire_login') + end + + context 'when user enter good credentials' do + before do + page.find_by_id(:gestionnaire_email).set gestionnaire.email + page.find_by_id(:gestionnaire_password).set gestionnaire.password + page.click_on 'Se connecter' + end + + scenario 'he is redirected to /backoffice/dossiers/' do + expect(page).to have_css('#backoffice_index') + end + + describe 'user navigate to dossiers list by procedure' do + before do + visit backoffice_dossiers_procedure_path(procedure.id) + end + + scenario 'lateral panel is masked' do + expect(page).to have_css('#pref_list_menu', visible: false) + end + + context 'when on click on pref list button' do + before do + page.click_on 'pref_list_dossier_open_action' + end + + scenario 'lateral panel is appeared' do + expect(page).to have_css('#pref_list_menu') + end + + context 'when on click on add attribut button' do + before do + page.click_on 'add_pref_list_entreprise_siren' + end + + scenario 'preference list panel is brought up to date' do + wait_for_ajax + expect(page).to have_css('#delete_pref_list_entreprise_siren') + end + + scenario 'dossier is brought up to date' do + wait_for_ajax + expect(page).to have_selector("a.sortable[data-attr='entreprise.siren']") + end + + context 'when on click on delete attribut button' do + before do + page.click_on 'delete_pref_list_entreprise_siren' + end + + scenario 'preference list panel is brought up to date' do + wait_for_ajax + expect(page).not_to have_css('#delete_pref_list_entreprise_siren') + end + + scenario 'dossier is brought up to date' do + wait_for_ajax + expect(page).not_to have_selector("a.sortable[data-attr='entreprise.siren']") + end + + context 'when on click on close pref list button' do + before do + page.click_on 'pref_list_dossier_close_action' + end + + scenario 'lateral panel is masked' do + expect(page).to have_css('#pref_list_menu', visible: false) + end + end + end + end + end + end + end +end \ No newline at end of file diff --git a/spec/models/preference_list_dossier_spec.rb b/spec/models/preference_list_dossier_spec.rb index e65b377fb..f84082084 100644 --- a/spec/models/preference_list_dossier_spec.rb +++ b/spec/models/preference_list_dossier_spec.rb @@ -11,6 +11,7 @@ describe PreferenceListDossier do it { is_expected.to have_db_column(:gestionnaire_id) } it { is_expected.to belong_to(:gestionnaire) } + it { is_expected.to belong_to(:procedure) } describe '.available_columns' do subject { PreferenceListDossier.available_columns } diff --git a/spec/models/procedure_spec.rb b/spec/models/procedure_spec.rb index bd720b25a..2b52bcb13 100644 --- a/spec/models/procedure_spec.rb +++ b/spec/models/procedure_spec.rb @@ -9,6 +9,7 @@ describe Procedure do it { is_expected.to have_one(:mail_received) } it { is_expected.to have_one(:module_api_carto) } it { is_expected.to belong_to(:administrateur) } + it { is_expected.to have_many(:preference_list_dossiers) } end describe 'attributes' do diff --git a/spec/services/accompagnateur_service_spec.rb b/spec/services/accompagnateur_service_spec.rb index 1c0dcf9ab..c939ecf27 100644 --- a/spec/services/accompagnateur_service_spec.rb +++ b/spec/services/accompagnateur_service_spec.rb @@ -1,10 +1,11 @@ require 'spec_helper' describe AccompagnateurService do - describe '#change_assignement!' do - let(:procedure) { create :procedure } - let(:accompagnateur) { create :gestionnaire } + let(:procedure) { create :procedure } + let(:accompagnateur) { create :gestionnaire } + + describe '#change_assignement!' do subject { AccompagnateurService.change_assignement! accompagnateur, procedure, to } @@ -29,4 +30,35 @@ describe AccompagnateurService do it { expect(accompagnateur.procedures).not_to include procedure } end end + + describe '#build_default_column' do + + subject { AccompagnateurService.build_default_column accompagnateur, procedure, to } + + context 'when to is not assign' do + let(:to) { AccompagnateurService::NOT_ASSIGN } + + it { is_expected.to be_nil } + end + + context 'when to is assign' do + let(:to) { AccompagnateurService::ASSIGN } + + context 'when gestionnaire has already preference for this procedure' do + before do + create :preference_list_dossier, gestionnaire: accompagnateur, procedure: procedure + end + + it { is_expected.to be_nil } + end + + context 'when gestionnaire has not preference for this procedure' do + before do + subject + end + + it { expect(accompagnateur.preference_list_dossiers.where('procedure_id IS NULL').size).to eq procedure.preference_list_dossiers.size } + end + end + end end \ No newline at end of file From 955c984a88571fe821e61def6bf6cbe78df723db Mon Sep 17 00:00:00 2001 From: Xavier J Date: Fri, 9 Sep 2016 15:05:46 +0200 Subject: [PATCH 38/53] Gestionnaire can add specific attr on dossier list by procedure --- .../france_connect_information_decorator.rb | 5 +- app/models/gestionnaire.rb | 2 +- app/models/preference_list_dossier.rb | 31 ++++++-- app/models/type_de_champ.rb | 5 +- app/views/backoffice/dossiers/_list.html.haml | 14 +++- .../backoffice/dossiers/_pref_list.html.haml | 6 +- ...st_dossier_by_procedure_backoffice_spec.rb | 17 ++--- spec/models/preference_list_dossier_spec.rb | 71 ++++++++++++++++++- spec/models/type_de_champ_shared_example.rb | 11 +++ 9 files changed, 134 insertions(+), 28 deletions(-) diff --git a/app/decorators/france_connect_information_decorator.rb b/app/decorators/france_connect_information_decorator.rb index 206361fe8..27e69987d 100644 --- a/app/decorators/france_connect_information_decorator.rb +++ b/app/decorators/france_connect_information_decorator.rb @@ -1,4 +1,7 @@ class FranceConnectInformationDecorator < Draper::Decorator delegate_all - + + def gender_fr + gender == 'female' ? 'Mme' : 'Mr' + end end diff --git a/app/models/gestionnaire.rb b/app/models/gestionnaire.rb index 68d8f30ee..9ed8990fa 100644 --- a/app/models/gestionnaire.rb +++ b/app/models/gestionnaire.rb @@ -35,7 +35,7 @@ class Gestionnaire < ActiveRecord::Base def build_default_preferences_list_dossier - PreferenceListDossier.available_columns.each do |table| + PreferenceListDossier.available_columns_for.each do |table| table.second.each do |column| if valid_couple_table_attr? table.first, column.first diff --git a/app/models/preference_list_dossier.rb b/app/models/preference_list_dossier.rb index cc0a00a4f..c5af12636 100644 --- a/app/models/preference_list_dossier.rb +++ b/app/models/preference_list_dossier.rb @@ -7,14 +7,21 @@ class PreferenceListDossier < ActiveRecord::Base table + '.' + attr end - def self.available_columns - { + def self.available_columns_for procedure_id = nil + columns = { dossier: columns_dossier, procedure: columns_procedure, entreprise: columns_entreprise, etablissement: columns_etablissement, - user: columns_user + user: columns_user, + france_connect: columns_france_connect } + + columns = columns.merge({ + champs: columns_champs_procedure(procedure_id) + }) unless procedure_id.nil? + + columns end private @@ -65,7 +72,6 @@ class PreferenceListDossier < ActiveRecord::Base def self.columns_user table = 'user' - { email: create_column('Email', table, 'email', 'email', 2) } @@ -75,12 +81,23 @@ class PreferenceListDossier < ActiveRecord::Base table = 'france_connect_information' { - gender: create_column('Civilité', table, 'gender', 'gender', 1), - given_name: create_column('Prénom', table, 'given_name', 'given_name', 2), - family_name: create_column('Nom', table, 'family_name', 'family_name', 2) + gender: create_column('Civilité (FC)', table, 'gender', 'gender_fr', 1), + given_name: create_column('Prénom (FC)', table, 'given_name', 'given_name', 2), + family_name: create_column('Nom (FC)', table, 'family_name', 'family_name', 2) } end + def self.columns_champs_procedure procedure_id + table = 'champs' + + Procedure.find(procedure_id).types_de_champ.inject({}) do |acc, type_de_champ| + acc = acc.merge({ + "type_de_champ_#{type_de_champ.id}" => create_column(type_de_champ.libelle, table, type_de_champ.id, 'value', 2) + }) if type_de_champ.field_for_list? + acc + end + end + def self.create_column libelle, table, attr, attr_decorate, bootstrap_lg { libelle: libelle, diff --git a/app/models/type_de_champ.rb b/app/models/type_de_champ.rb index db33a1a9c..3950d37ea 100644 --- a/app/models/type_de_champ.rb +++ b/app/models/type_de_champ.rb @@ -22,7 +22,6 @@ class TypeDeChamp < ActiveRecord::Base accepts_nested_attributes_for :drop_down_list - validates :libelle, presence: true, allow_blank: false, allow_nil: false validates :type_champ, presence: true, allow_blank: false, allow_nil: false # validates :order_place, presence: true, allow_blank: false, allow_nil: false @@ -30,4 +29,8 @@ class TypeDeChamp < ActiveRecord::Base def self.type_de_champs_list_fr type_champs.map { |champ| [ I18n.t("activerecord.attributes.type_de_champ.type_champs.#{champ.last}"), champ.first ] } end + + def field_for_list? + !(type_champ == 'textarea' || type_champ == 'header_section') + end end \ No newline at end of file diff --git a/app/views/backoffice/dossiers/_list.html.haml b/app/views/backoffice/dossiers/_list.html.haml index 64390423b..f9fa09309 100644 --- a/app/views/backoffice/dossiers/_list.html.haml +++ b/app/views/backoffice/dossiers/_list.html.haml @@ -2,7 +2,12 @@ %table.table %thead - @dossiers_list_facade.preference_list_dossiers_filter.each do |preference| - %th{class: "col-md-#{preference.bootstrap_lg} col-lg-#{preference.bootstrap_lg}"}= smart_listing.sortable preference.libelle, preference.table_attr + %th{class: "col-md-#{preference.bootstrap_lg} col-lg-#{preference.bootstrap_lg}"} + - if preference.table == 'champs' + = preference.libelle + -else + = smart_listing.sortable preference.libelle, preference.table_attr + %th.col-md-1.col-lg-1.center Actions %th.col-md-1.col-lg-1.center Abonnés @@ -12,8 +17,13 @@ %td - if preference.table.nil? || preference.table.empty? - value = dossier.decorate.public_send(preference.attr_decorate) + - elsif preference.table == 'champs' + - value = dossier.champs.find_by_type_de_champ_id(preference.attr).value - else - - value = dossier.public_send(preference.table).decorate.public_send(preference.attr_decorate) + - begin + - value = dossier.public_send(preference.table).decorate.public_send(preference.attr_decorate) + - rescue NoMethodError + - value = '' - if index == 0 = link_to value, backoffice_dossier_path(id: dossier.id) diff --git a/app/views/backoffice/dossiers/_pref_list.html.haml b/app/views/backoffice/dossiers/_pref_list.html.haml index 30731efcb..45825b606 100644 --- a/app/views/backoffice/dossiers/_pref_list.html.haml +++ b/app/views/backoffice/dossiers/_pref_list.html.haml @@ -22,11 +22,11 @@ Disponibles %table - - PreferenceListDossier.available_columns.each_with_index do |tables, index| - - if index%2 == 0 + - PreferenceListDossier.available_columns_for(@dossiers_list_facade.procedure_id).each_with_index do |tables, index| + - if index%2 == 0 || tables.first == :champs %tr - %td.col-sm-5.col-md-5.col-lg-5{style: 'vertical-align: top'} + %td.col-sm-5.col-md-5.col-lg-5{style: 'vertical-align: top', colspan: (tables.first == :champs ? 2 : 1)} %h5= tables.first.to_s.gsub('_', ' ').capitalize %ul - tables.second.each do |columns| diff --git a/spec/features/backoffice/lateral_page_pref_list_dossier_by_procedure_backoffice_spec.rb b/spec/features/backoffice/lateral_page_pref_list_dossier_by_procedure_backoffice_spec.rb index 2a0c01147..d9b97d581 100644 --- a/spec/features/backoffice/lateral_page_pref_list_dossier_by_procedure_backoffice_spec.rb +++ b/spec/features/backoffice/lateral_page_pref_list_dossier_by_procedure_backoffice_spec.rb @@ -4,7 +4,7 @@ feature 'usage of pref list dossier lateral panel by procedure', js: true do let(:administrateur) { create(:administrateur) } let(:gestionnaire) { create(:gestionnaire, administrateurs: [administrateur]) } - let(:procedure) { create(:procedure, administrateur: administrateur) } + let(:procedure) { create(:procedure, :with_type_de_champ, administrateur: administrateur) } before do create(:dossier, :with_entreprise, procedure: procedure, state: 'updated') @@ -45,29 +45,24 @@ feature 'usage of pref list dossier lateral panel by procedure', js: true do expect(page).to have_css('#pref_list_menu') end - context 'when on click on add attribut button' do + context 'when on click on add attribut specific at the procedure button' do before do - page.click_on 'add_pref_list_entreprise_siren' + page.click_on 'add_pref_list_champs_'+procedure.types_de_champ.first.id.to_s end scenario 'preference list panel is brought up to date' do wait_for_ajax - expect(page).to have_css('#delete_pref_list_entreprise_siren') - end - - scenario 'dossier is brought up to date' do - wait_for_ajax - expect(page).to have_selector("a.sortable[data-attr='entreprise.siren']") + expect(page).to have_css('#delete_pref_list_champs_'+procedure.types_de_champ.first.id.to_s) end context 'when on click on delete attribut button' do before do - page.click_on 'delete_pref_list_entreprise_siren' + page.click_on 'delete_pref_list_champs_'+procedure.types_de_champ.first.id.to_s end scenario 'preference list panel is brought up to date' do wait_for_ajax - expect(page).not_to have_css('#delete_pref_list_entreprise_siren') + expect(page).not_to have_css('#delete_pref_list_champs_'+procedure.types_de_champ.first.id.to_s) end scenario 'dossier is brought up to date' do diff --git a/spec/models/preference_list_dossier_spec.rb b/spec/models/preference_list_dossier_spec.rb index f84082084..095d1083d 100644 --- a/spec/models/preference_list_dossier_spec.rb +++ b/spec/models/preference_list_dossier_spec.rb @@ -13,8 +13,10 @@ describe PreferenceListDossier do it { is_expected.to belong_to(:gestionnaire) } it { is_expected.to belong_to(:procedure) } - describe '.available_columns' do - subject { PreferenceListDossier.available_columns } + describe '.available_columns_for' do + let(:procedure_id) { nil } + + subject { PreferenceListDossier.available_columns_for procedure_id } describe 'dossier' do subject { super()[:dossier] } @@ -250,5 +252,70 @@ describe PreferenceListDossier do it { expect(subject[:filter]).to be_nil } end end + + describe 'france_connect' do + subject { super()[:france_connect] } + + it { expect(subject.size).to eq 3 } + + describe 'gender' do + subject { super()[:gender] } + + it { expect(subject[:libelle]).to eq 'Civilité (FC)' } + it { expect(subject[:table]).to eq 'france_connect_information' } + it { expect(subject[:attr]).to eq 'gender' } + it { expect(subject[:attr_decorate]).to eq 'gender_fr' } + it { expect(subject[:bootstrap_lg]).to eq 1 } + it { expect(subject[:order]).to be_nil } + it { expect(subject[:filter]).to be_nil } + end + + describe 'family_name' do + subject { super()[:family_name] } + + it { expect(subject[:libelle]).to eq 'Nom (FC)' } + it { expect(subject[:table]).to eq 'france_connect_information' } + it { expect(subject[:attr]).to eq 'family_name' } + it { expect(subject[:attr_decorate]).to eq 'family_name' } + it { expect(subject[:bootstrap_lg]).to eq 2 } + it { expect(subject[:order]).to be_nil } + it { expect(subject[:filter]).to be_nil } + end + + describe 'gender' do + subject { super()[:given_name] } + + it { expect(subject[:libelle]).to eq 'Prénom (FC)' } + it { expect(subject[:table]).to eq 'france_connect_information' } + it { expect(subject[:attr]).to eq 'given_name' } + it { expect(subject[:attr_decorate]).to eq 'given_name' } + it { expect(subject[:bootstrap_lg]).to eq 2 } + it { expect(subject[:order]).to be_nil } + it { expect(subject[:filter]).to be_nil } + end + end + + context 'when a procedure ID is pasted' do + let(:procedure) { (create :procedure, :with_type_de_champ) } + let(:procedure_id) { procedure.id } + + describe 'champs' do + subject { super()[:champs] } + + it { expect(subject.size).to eq 1 } + + describe 'first champs' do + subject { super()["type_de_champ_#{procedure.types_de_champ.first.id}"] } + + it { expect(subject[:libelle]).to eq 'Description' } + it { expect(subject[:table]).to eq 'champs' } + it { expect(subject[:attr]).to eq procedure.types_de_champ.first.id } + it { expect(subject[:attr_decorate]).to eq 'value' } + it { expect(subject[:bootstrap_lg]).to eq 2 } + it { expect(subject[:order]).to be_nil } + it { expect(subject[:filter]).to be_nil } + end + end + end end end diff --git a/spec/models/type_de_champ_shared_example.rb b/spec/models/type_de_champ_shared_example.rb index 5ce94d7d3..e4ca86e0f 100644 --- a/spec/models/type_de_champ_shared_example.rb +++ b/spec/models/type_de_champ_shared_example.rb @@ -41,4 +41,15 @@ shared_examples 'type_de_champ_spec' do it { is_expected.to allow_value('blabla').for(:description) } end end + + describe 'field_for_list?' do + + let(:type_de_champ_yes) { create :type_de_champ_public, type_champ: 'text' } + let(:type_de_champ_no_1) { create :type_de_champ_public, type_champ: 'textarea' } + let(:type_de_champ_no_2) { create :type_de_champ_public, type_champ: 'header_section' } + + it { expect(type_de_champ_yes.field_for_list?).to be_truthy } + it { expect(type_de_champ_no_1.field_for_list?).to be_falsey } + it { expect(type_de_champ_no_2.field_for_list?).to be_falsey } + end end \ No newline at end of file From c5035ca81e32445eaa1501a0358551fbe00dd723 Mon Sep 17 00:00:00 2001 From: Xavier J Date: Fri, 9 Sep 2016 15:55:03 +0200 Subject: [PATCH 39/53] When gestionnaire follow an initiated dossier, this paste his state at 'updated' --- .../backoffice/dossiers_controller.rb | 2 ++ app/models/dossier.rb | 6 +++++- .../backoffice/dossiers_controller_spec.rb | 21 ++++++++++++++++++- spec/models/dossier_spec.rb | 18 +++++++++++----- 4 files changed, 40 insertions(+), 7 deletions(-) diff --git a/app/controllers/backoffice/dossiers_controller.rb b/app/controllers/backoffice/dossiers_controller.rb index 6918c4653..7c1187471 100644 --- a/app/controllers/backoffice/dossiers_controller.rb +++ b/app/controllers/backoffice/dossiers_controller.rb @@ -95,6 +95,8 @@ class Backoffice::DossiersController < ApplicationController def follow follow = current_gestionnaire.toggle_follow_dossier params[:dossier_id] + current_gestionnaire.dossiers.find(params[:dossier_id]).next_step! 'gestionnaire', 'follow' + flash.notice = (follow.class == Follow ? 'Dossier suivi' : 'Dossier relaché') redirect_to request.referer end diff --git a/app/models/dossier.rb b/app/models/dossier.rb index 623cb9515..e94ffa375 100644 --- a/app/models/dossier.rb +++ b/app/models/dossier.rb @@ -97,7 +97,7 @@ class Dossier < ActiveRecord::Base end def next_step! role, action - unless %w(initiate update comment valid submit receive refuse without_continuation close).include?(action) + unless %w(initiate follow update comment valid submit receive refuse without_continuation close).include?(action) fail 'action is not valid' end @@ -132,6 +132,10 @@ class Dossier < ActiveRecord::Base elsif initiated? replied! end + when 'follow' + if initiated? + updated! + end when 'valid' if updated? validated! diff --git a/spec/controllers/backoffice/dossiers_controller_spec.rb b/spec/controllers/backoffice/dossiers_controller_spec.rb index 7769cc888..bcc763f42 100644 --- a/spec/controllers/backoffice/dossiers_controller_spec.rb +++ b/spec/controllers/backoffice/dossiers_controller_spec.rb @@ -4,14 +4,19 @@ describe Backoffice::DossiersController, type: :controller do before do @request.env['HTTP_REFERER'] = TPS::Application::URL end + let(:procedure) { create :procedure } - let(:dossier) { create(:dossier, :with_entreprise) } + let(:dossier) { create(:dossier, :with_entreprise, procedure: procedure) } let(:dossier_archived) { create(:dossier, :with_entreprise, archived: true) } let(:dossier_id) { dossier.id } let(:bad_dossier_id) { Dossier.count + 10 } let(:gestionnaire) { create(:gestionnaire, administrateurs: [create(:administrateur)]) } + before do + create :assign_to, procedure: procedure, gestionnaire: gestionnaire + end + describe 'GET #show' do context 'gestionnaire is connected' do before do @@ -223,6 +228,20 @@ describe Backoffice::DossiersController, type: :controller do it { expect(subject.status).to eq 302 } + context 'when dossier is at state initiated' do + let(:dossier) { create(:dossier, :with_entreprise, procedure: procedure, state: 'initiated') } + + before do + subject + dossier.reload + end + + it 'change state for updated' do + expect(dossier.state).to eq 'updated' + end + + end + describe 'flash alert' do context 'when dossier is not follow by gestionnaire' do before do diff --git a/spec/models/dossier_spec.rb b/spec/models/dossier_spec.rb index 583a47410..21ac74bd0 100644 --- a/spec/models/dossier_spec.rb +++ b/spec/models/dossier_spec.rb @@ -219,6 +219,12 @@ describe Dossier do it { is_expected.to eq('replied') } end + context 'when is follow' do + let(:action) { 'follow' } + + it { is_expected.to eq 'updated' } + end + context 'when is validated the dossier' do let(:action) { 'valid' } @@ -244,10 +250,7 @@ describe Dossier do context 'when is updated dossier informations' do let(:action) { 'update' } - it { - - is_expected.to eq('updated') - } + it { is_expected.to eq('updated') } end end @@ -260,6 +263,12 @@ describe Dossier do it { is_expected.to eq('replied') } end + context 'when is follow' do + let(:action) { 'follow' } + + it { is_expected.to eq 'replied' } + end + context 'when is validated the dossier' do let(:action) { 'valid' } @@ -453,7 +462,6 @@ describe Dossier do end end - context 'when dossier is at state closed' do before do dossier.closed! From 30acd9bb3eab79d30e7d6d31742abcad41f3d662 Mon Sep 17 00:00:00 2001 From: Xavier J Date: Fri, 9 Sep 2016 16:20:07 +0200 Subject: [PATCH 40/53] A cookie file keep the last navigation tab for user and gestionnaire --- app/controllers/backoffice/dossiers/procedure_controller.rb | 3 ++- app/controllers/backoffice/dossiers_controller.rb | 3 ++- app/controllers/users/dossiers_controller.rb | 3 ++- 3 files changed, 6 insertions(+), 3 deletions(-) diff --git a/app/controllers/backoffice/dossiers/procedure_controller.rb b/app/controllers/backoffice/dossiers/procedure_controller.rb index 1f55c5f42..bb43d4584 100644 --- a/app/controllers/backoffice/dossiers/procedure_controller.rb +++ b/app/controllers/backoffice/dossiers/procedure_controller.rb @@ -5,7 +5,8 @@ class Backoffice::Dossiers::ProcedureController < ApplicationController before_action :authenticate_gestionnaire! def show - smartlisting_dossier (params[:liste] || 'a_traiter') + cookies[:liste] = params[:liste] || cookies[:liste] || 'a_traiter' + smartlisting_dossier cookies[:liste] render 'backoffice/dossiers/index' rescue ActiveRecord::RecordNotFound diff --git a/app/controllers/backoffice/dossiers_controller.rb b/app/controllers/backoffice/dossiers_controller.rb index 7c1187471..2497f1199 100644 --- a/app/controllers/backoffice/dossiers_controller.rb +++ b/app/controllers/backoffice/dossiers_controller.rb @@ -5,7 +5,8 @@ class Backoffice::DossiersController < ApplicationController before_action :authenticate_gestionnaire! def index - smartlisting_dossier (params[:liste] || 'a_traiter') + cookies[:liste] = params[:liste] || cookies[:liste] || 'a_traiter' + smartlisting_dossier (cookies[:liste]) end def show diff --git a/app/controllers/users/dossiers_controller.rb b/app/controllers/users/dossiers_controller.rb index 4193859c9..891bf600b 100644 --- a/app/controllers/users/dossiers_controller.rb +++ b/app/controllers/users/dossiers_controller.rb @@ -10,7 +10,8 @@ class Users::DossiersController < UsersController end def index - @dossiers_list_facade = DossiersListFacades.new current_user, (params[:liste] || 'a_traiter') + cookies[:liste] = params[:liste] || cookies[:liste] || 'a_traiter' + @dossiers_list_facade = DossiersListFacades.new current_user, cookies[:liste] @dossiers = smart_listing_create :dossiers, @dossiers_list_facade.dossiers_to_display, From f6ab83f8bd0067b3f4e412b89b96f21db1c303ce Mon Sep 17 00:00:00 2001 From: Xavier J Date: Fri, 9 Sep 2016 17:29:21 +0200 Subject: [PATCH 41/53] gestionnaire can be filter be procedure on dossier list tab --- app/facades/dossiers_list_facades.rb | 4 ++++ .../backoffice/dossiers/_onglets.html.haml | 8 +++++++- spec/facades/dossiers_list_facades_spec.rb | 19 +++++++++++++++++++ 3 files changed, 30 insertions(+), 1 deletion(-) diff --git a/app/facades/dossiers_list_facades.rb b/app/facades/dossiers_list_facades.rb index 39ee69c4d..87a72b22f 100644 --- a/app/facades/dossiers_list_facades.rb +++ b/app/facades/dossiers_list_facades.rb @@ -19,6 +19,10 @@ class DossiersListFacades @liste end + def gestionnaire_procedures_name_and_id_list + @current_devise_profil.procedures.order('libelle ASC').inject([]) { |acc, procedure| acc.push({id: procedure.id, libelle: procedure.libelle})} + end + def procedure_id @procedure.nil? ? nil : @procedure.id end diff --git a/app/views/backoffice/dossiers/_onglets.html.haml b/app/views/backoffice/dossiers/_onglets.html.haml index 55c4c85a4..cb69ef779 100644 --- a/app/views/backoffice/dossiers/_onglets.html.haml +++ b/app/views/backoffice/dossiers/_onglets.html.haml @@ -1,6 +1,12 @@ =link_to 'Tous mes dossiers en CSV', backoffice_download_dossiers_tps_path, {class: 'btn btn-success btn-sm', style: 'float: right; margin-right: 4%; margin-top: 7px'} %h1 Gestion des dossiers -%br + +#filter_by_procedure{style:'margin-left: 5%'} + %select{onchange: 'location = this.value', style:'margin-top: 10px; margin-bottom: 10px', id: 'filter_by_procedure_select'} + %option{value: backoffice_dossiers_path} + - @dossiers_list_facade.gestionnaire_procedures_name_and_id_list.each do |procedure| + %option{value: backoffice_dossiers_procedure_path(procedure[:id]), ('selected' if procedure[:id] == params[:id].to_i) => '' } + = truncate(procedure[:libelle], {length: 50}) #onglets %ul.nav.nav-tabs diff --git a/spec/facades/dossiers_list_facades_spec.rb b/spec/facades/dossiers_list_facades_spec.rb index c701092f8..625643930 100644 --- a/spec/facades/dossiers_list_facades_spec.rb +++ b/spec/facades/dossiers_list_facades_spec.rb @@ -4,8 +4,12 @@ describe DossiersListFacades do let(:gestionnaire) { create :gestionnaire } let(:procedure) { create :procedure } + let(:procedure_2) { create :procedure, libelle: 'plop' } before do + create :assign_to, procedure: procedure, gestionnaire: gestionnaire + create :assign_to, procedure: procedure_2, gestionnaire: gestionnaire + create :preference_list_dossier, gestionnaire: gestionnaire, table: '', @@ -36,4 +40,19 @@ describe DossiersListFacades do it { expect(subject.size).to eq 1 } end end + + describe '#gestionnaire_procedures_name_and_id_list' do + let(:facade) { described_class.new gestionnaire, 'nouveaux' } + + subject { facade.gestionnaire_procedures_name_and_id_list } + + it { expect(subject.size).to eq 2 } + + it { expect(subject.first[:id]).to eq procedure.id } + it { expect(subject.first[:libelle]).to eq procedure.libelle } + + it { expect(subject.last[:id]).to eq procedure_2.id } + it { expect(subject.last[:libelle]).to eq procedure_2.libelle } + + end end \ No newline at end of file From 969e5f020a784400f130fe2fb6cae1095d6557fd Mon Sep 17 00:00:00 2001 From: Xavier J Date: Fri, 9 Sep 2016 17:39:56 +0200 Subject: [PATCH 42/53] Fix bug clonage private fields --- app/models/procedure.rb | 2 +- spec/models/procedure_spec.rb | 10 ++++++++++ 2 files changed, 11 insertions(+), 1 deletion(-) diff --git a/app/models/procedure.rb b/app/models/procedure.rb index 2489f53d2..1e8d79bf9 100644 --- a/app/models/procedure.rb +++ b/app/models/procedure.rb @@ -89,7 +89,7 @@ class Procedure < ActiveRecord::Base end def clone - procedure = self.deep_clone(include: [:types_de_piece_justificative, :types_de_champ, :module_api_carto, :mail_templates]) + procedure = self.deep_clone(include: [:types_de_piece_justificative, :types_de_champ, :types_de_champ_private, :module_api_carto, :mail_templates]) procedure.archived = false procedure.published = false procedure.logo_secure_token = nil diff --git a/spec/models/procedure_spec.rb b/spec/models/procedure_spec.rb index 2b52bcb13..47356f165 100644 --- a/spec/models/procedure_spec.rb +++ b/spec/models/procedure_spec.rb @@ -163,6 +163,8 @@ describe Procedure do let(:procedure) { create(:procedure, archived: archived, published: published) } let!(:type_de_champ_0) { create(:type_de_champ_public, procedure: procedure, order_place: 0) } let!(:type_de_champ_1) { create(:type_de_champ_public, procedure: procedure, order_place: 1) } + let!(:type_de_champ_private_0) { create(:type_de_champ_private, procedure: procedure, order_place: 0) } + let!(:type_de_champ_private_1) { create(:type_de_champ_private, procedure: procedure, order_place: 1) } let!(:piece_justificative_0) { create(:type_de_piece_justificative, procedure: procedure, order_place: 0) } let!(:piece_justificative_1) { create(:type_de_piece_justificative, procedure: procedure, order_place: 1) } @@ -177,11 +179,19 @@ describe Procedure do expect(subject).to have_same_attributes_as(procedure) expect(subject.module_api_carto).to have_same_attributes_as(procedure.module_api_carto) + expect(subject.types_de_piece_justificative.size).to eq procedure.types_de_piece_justificative.size + expect(subject.types_de_champ.size).to eq procedure.types_de_champ.size + expect(subject.types_de_champ_private.size).to eq procedure.types_de_champ_private.size + expect(subject.mail_templates.size).to eq procedure.mail_templates.size subject.types_de_champ.zip(procedure.types_de_champ).each do |stc, ptc| expect(stc).to have_same_attributes_as(ptc) end + subject.types_de_champ_private.zip(procedure.types_de_champ_private).each do |stc, ptc| + expect(stc).to have_same_attributes_as(ptc) + end + subject.types_de_piece_justificative.zip(procedure.types_de_piece_justificative).each do |stc, ptc| expect(stc).to have_same_attributes_as(ptc) end From 4a336b8af717d45614610e38532dc3d6e04a188c Mon Sep 17 00:00:00 2001 From: Xavier J Date: Fri, 9 Sep 2016 17:44:00 +0200 Subject: [PATCH 43/53] Config devise session timeout --- config/initializers/devise.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/config/initializers/devise.rb b/config/initializers/devise.rb index ee376238c..16112041c 100644 --- a/config/initializers/devise.rb +++ b/config/initializers/devise.rb @@ -150,7 +150,7 @@ Devise.setup do |config| # ==> Configuration for :timeoutable # The time you want to timeout the user session without activity. After this # time the user will be asked for credentials again. Default is 30 minutes. - # config.timeout_in = 30.minutes + config.timeout_in = 24.hours # If true, expires auth token on session timeout. # config.expire_auth_token_on_timeout = false From e9d4685aef56325b1e44b4c6cf541c4c7a93c376 Mon Sep 17 00:00:00 2001 From: Xavier J Date: Mon, 12 Sep 2016 17:30:25 +0200 Subject: [PATCH 44/53] Force use https for generate route --- config/routes.rb | 1 + 1 file changed, 1 insertion(+) diff --git a/config/routes.rb b/config/routes.rb index 13e67732a..f679c5057 100644 --- a/config/routes.rb +++ b/config/routes.rb @@ -1,4 +1,5 @@ Rails.application.routes.draw do + default_url_options protocol: :https get "/ping" => "ping#index", :constraints => {:ip => /127.0.0.1/} From 0ac23f6d96f44f7c9adea80e14beebfb182b866b Mon Sep 17 00:00:00 2001 From: Xavier J Date: Tue, 13 Sep 2016 12:17:56 +0200 Subject: [PATCH 45/53] User can invite other User --- app/controllers/invites_controller.rb | 17 ++++++++++++++--- app/controllers/users/dossiers_controller.rb | 6 ++++-- app/models/dossier.rb | 8 ++++++++ app/views/dossiers/_infos_dossier.html.haml | 6 +++--- app/views/dossiers/_invites.html.haml | 2 +- .../dossiers/_tab_objects_dossier.html.haml | 7 +++++-- config/routes.rb | 6 ++++-- 7 files changed, 39 insertions(+), 13 deletions(-) diff --git a/app/controllers/invites_controller.rb b/app/controllers/invites_controller.rb index ee82d2bf3..e729a84cd 100644 --- a/app/controllers/invites_controller.rb +++ b/app/controllers/invites_controller.rb @@ -1,6 +1,8 @@ class InvitesController < ApplicationController + before_action :gestionnaire_or_user? + def create - email_sender = current_gestionnaire.email + email_sender = @current_devise_profil.email user = User.find_by_email(params[:email]) invite = Invite.create(dossier_id: params[:dossier_id], user: user, email: params[:email].downcase, email_sender: email_sender) @@ -16,8 +18,17 @@ class InvitesController < ApplicationController if gestionnaire_signed_in? redirect_to url_for(controller: 'backoffice/dossiers', action: :show, id: params['dossier_id']) - # else - # redirect_to url_for(controller: :recapitulatif, action: :show, dossier_id: params['dossier_id']) + else + redirect_to url_for(controller: 'users/recapitulatif', action: :show, dossier_id: params['dossier_id']) end end + + private + + def gestionnaire_or_user? + return redirect_to root_path unless user_signed_in? || gestionnaire_signed_in? + + @current_devise_profil = current_user if user_signed_in? + @current_devise_profil = current_gestionnaire if gestionnaire_signed_in? + end end diff --git a/app/controllers/users/dossiers_controller.rb b/app/controllers/users/dossiers_controller.rb index 891bf600b..bf81eae8c 100644 --- a/app/controllers/users/dossiers_controller.rb +++ b/app/controllers/users/dossiers_controller.rb @@ -10,8 +10,10 @@ class Users::DossiersController < UsersController end def index - cookies[:liste] = params[:liste] || cookies[:liste] || 'a_traiter' - @dossiers_list_facade = DossiersListFacades.new current_user, cookies[:liste] + liste = params[:liste] || cookies[:liste] || 'a_traiter' + cookies[:liste] = liste + + @dossiers_list_facade = DossiersListFacades.new current_user, liste @dossiers = smart_listing_create :dossiers, @dossiers_list_facade.dossiers_to_display, diff --git a/app/models/dossier.rb b/app/models/dossier.rb index e94ffa375..e00ca94c2 100644 --- a/app/models/dossier.rb +++ b/app/models/dossier.rb @@ -307,4 +307,12 @@ class Dossier < ActiveRecord::Base next_step! 'user', 'submit' NotificationMailer.dossier_submitted(self).deliver_now! end + + def read_only? + validated? || received? || submitted? || closed? || refused? || without_continuation? + end + + def owner? email + user.email == email + end end diff --git a/app/views/dossiers/_infos_dossier.html.haml b/app/views/dossiers/_infos_dossier.html.haml index 3947d592e..8f97562e6 100644 --- a/app/views/dossiers/_infos_dossier.html.haml +++ b/app/views/dossiers/_infos_dossier.html.haml @@ -41,8 +41,8 @@ %br .row{style: 'text-align:right'} - - if !@facade.dossier.validated? && !@facade.dossier.received? && !@facade.dossier.submitted? && !@facade.dossier.closed? && !@facade.dossier.refused? && !@facade.dossier.without_continuation? - - if user_signed_in? && (current_user.email == @facade.dossier.user.email) + - unless @facade.dossier.read_only? + - if user_signed_in? && @facade.dossier.owner?(current_user.email) - if @facade.procedure.cerfa_flag? || @facade.dossier.types_de_piece_justificative.size > 0 %a.btn.btn-success{"data-target" => "#UploadPJmodal", "data-toggle" => "modal", @@ -60,7 +60,7 @@ = 'Modifier mon dossier' -if gestionnaire_signed_in? - -if !@facade.dossier.validated? && !@facade.dossier.received? && !@facade.dossier.submitted? && !@facade.dossier.closed? && !@facade.dossier.refused? && !@facade.dossier.without_continuation? + -if !@facade.dossier.read_only? = form_tag(url_for({controller: 'backoffice/dossiers', action: :valid, dossier_id: @facade.dossier.id}), class: 'form-inline', method: 'POST') do %button#action_button.btn.btn-success = 'Valider le dossier' diff --git a/app/views/dossiers/_invites.html.haml b/app/views/dossiers/_invites.html.haml index 788619476..8328ef5c4 100644 --- a/app/views/dossiers/_invites.html.haml +++ b/app/views/dossiers/_invites.html.haml @@ -12,7 +12,7 @@ Aucune personne invité .col-md-3.col-lg-3 - =form_tag backoffice_dossier_invites_path(dossier_id: @facade.dossier.id), method: :post, class: 'form-inline' do + =form_tag invites_dossier_path(dossier_id: @facade.dossier.id), method: :post, class: 'form-inline' do =text_field_tag :email, '', class: 'form-control', placeholder: 'Envoyer une invitation' =submit_tag 'Ajouter', class: 'btn btn-success' diff --git a/app/views/dossiers/_tab_objects_dossier.html.haml b/app/views/dossiers/_tab_objects_dossier.html.haml index a478f0dbe..b95c33a60 100644 --- a/app/views/dossiers/_tab_objects_dossier.html.haml +++ b/app/views/dossiers/_tab_objects_dossier.html.haml @@ -6,10 +6,12 @@ %a{href: "#commentaires_files", 'aria-controls' => "commentaires_files", role: "tab", 'data-toggle' => "tab"} Fichiers - - if gestionnaire_signed_in? + - if gestionnaire_signed_in? || @facade.dossier.owner?(current_user.email) %li{role: "presentation"} %a{href: "#invites", 'aria-controls' => "invites", role: "tab", 'data-toggle' => "tab"} Invités + + - if gestionnaire_signed_in? %li{role: "presentation"} %a{href: "#followers", 'aria-controls' => "followers", role: "tab", 'data-toggle' => "tab"} Abonnés @@ -25,9 +27,10 @@ %div{role: "tabpanel", class: "tab-pane fade", id:"commentaires_files"} = render partial: '/dossiers/commentaires_files' - - if gestionnaire_signed_in? + - if gestionnaire_signed_in? || @facade.dossier.owner?(current_user.email) %div{role: "tabpanel", class: "tab-pane fade", id:"invites"} = render partial: '/dossiers/invites' + - if gestionnaire_signed_in? %div{role: "tabpanel", class: "tab-pane fade", id:"followers"} = render partial: 'followers' %div{role: "tabpanel", class: "tab-pane fade", id:"champs_private"} diff --git a/config/routes.rb b/config/routes.rb index f679c5057..9f3d48777 100644 --- a/config/routes.rb +++ b/config/routes.rb @@ -141,6 +141,10 @@ Rails.application.routes.draw do get 'address_point' => 'search#get_address_point' end + namespace :invites do + post 'dossier/:dossier_id' => '/invites#create', as: 'dossier' + end + namespace :backoffice do get 'sign_in' => '/gestionnaires/sessions#new' get 'dossiers/search' => 'dossiers#search' @@ -155,8 +159,6 @@ Rails.application.routes.draw do post 'without_continuation' => 'dossiers#without_continuation' post 'close' => 'dossiers#close' - post 'invites' => '/invites#create' - put 'follow' => 'dossiers#follow' end From 60b94fc41b8394a3996ba89f66f5d5a9622ff909 Mon Sep 17 00:00:00 2001 From: Xavier J Date: Tue, 13 Sep 2016 15:54:26 +0200 Subject: [PATCH 46/53] Specialize Invite object --- app/controllers/invites_controller.rb | 4 +++- app/models/invite_gestionnaire.rb | 3 +++ app/models/invite_user.rb | 3 +++ app/views/dossiers/_infos_dossier.html.haml | 4 ++-- app/views/users/dossiers/_list.html.haml | 4 ++-- .../20160913093948_add_type_attr_in_invite_table.rb | 5 +++++ db/schema.rb | 3 ++- spec/controllers/invites_controller_spec.rb | 10 +++++++++- 8 files changed, 29 insertions(+), 7 deletions(-) create mode 100644 app/models/invite_gestionnaire.rb create mode 100644 app/models/invite_user.rb create mode 100644 db/migrate/20160913093948_add_type_attr_in_invite_table.rb diff --git a/app/controllers/invites_controller.rb b/app/controllers/invites_controller.rb index e729a84cd..3c550f6d4 100644 --- a/app/controllers/invites_controller.rb +++ b/app/controllers/invites_controller.rb @@ -4,8 +4,10 @@ class InvitesController < ApplicationController def create email_sender = @current_devise_profil.email + class_var = @current_devise_profil.class == User ? InviteUser : InviteGestionnaire + user = User.find_by_email(params[:email]) - invite = Invite.create(dossier_id: params[:dossier_id], user: user, email: params[:email].downcase, email_sender: email_sender) + invite = class_var.create(dossier_id: params[:dossier_id], user: user, email: params[:email].downcase, email_sender: email_sender) if invite.valid? InviteMailer.invite_user(invite).deliver_now! unless invite.user.nil? diff --git a/app/models/invite_gestionnaire.rb b/app/models/invite_gestionnaire.rb new file mode 100644 index 000000000..6021286da --- /dev/null +++ b/app/models/invite_gestionnaire.rb @@ -0,0 +1,3 @@ +class InviteGestionnaire < Invite + +end diff --git a/app/models/invite_user.rb b/app/models/invite_user.rb new file mode 100644 index 000000000..05ec141e9 --- /dev/null +++ b/app/models/invite_user.rb @@ -0,0 +1,3 @@ +class InviteUser < Invite + +end diff --git a/app/views/dossiers/_infos_dossier.html.haml b/app/views/dossiers/_infos_dossier.html.haml index 8f97562e6..19e6c8551 100644 --- a/app/views/dossiers/_infos_dossier.html.haml +++ b/app/views/dossiers/_infos_dossier.html.haml @@ -55,9 +55,9 @@ -if @facade.dossier.procedure.module_api_carto.use_api_carto %a#maj_carte.btn.btn-primary{href: "/users/dossiers/#{@facade.dossier.id}/carte"} - = 'Modifier ma carte' + = 'Modifier la carte' %a#maj_infos.btn.btn-info{href: "/users/dossiers/#{@facade.dossier.id}/description"} - = 'Modifier mon dossier' + = 'Modifier le dossier' -if gestionnaire_signed_in? -if !@facade.dossier.read_only? diff --git a/app/views/users/dossiers/_list.html.haml b/app/views/users/dossiers/_list.html.haml index e8bdcc86d..61121ff96 100644 --- a/app/views/users/dossiers/_list.html.haml +++ b/app/views/users/dossiers/_list.html.haml @@ -6,9 +6,9 @@ %th.col-md-2.col-lg-2= smart_listing.sortable 'État', 'state' %th.col-md-2.col-lg-2= smart_listing.sortable 'Date de mise à jour', 'updated_at' - @dossiers.each do |dossier| - - if dossier.class == Invite + - if dossier.kind_of? Invite -invite = dossier - -dossier = dossier.dossier.decorate + -dossier = invite.dossier.decorate - else - dossier = dossier.decorate %tr diff --git a/db/migrate/20160913093948_add_type_attr_in_invite_table.rb b/db/migrate/20160913093948_add_type_attr_in_invite_table.rb new file mode 100644 index 000000000..a71813a9b --- /dev/null +++ b/db/migrate/20160913093948_add_type_attr_in_invite_table.rb @@ -0,0 +1,5 @@ +class AddTypeAttrInInviteTable < ActiveRecord::Migration + def change + add_column :invites, :type, :string, default: 'InviteGestionnaire' + end +end diff --git a/db/schema.rb b/db/schema.rb index 7533be06e..837be6fb9 100644 --- a/db/schema.rb +++ b/db/schema.rb @@ -11,7 +11,7 @@ # # It's strongly recommended that you check this file into your version control system. -ActiveRecord::Schema.define(version: 20160906134155) do +ActiveRecord::Schema.define(version: 20160913093948) do # These are extensions that must be enabled in order to support this database enable_extension "plpgsql" @@ -225,6 +225,7 @@ ActiveRecord::Schema.define(version: 20160906134155) do t.string "email_sender" t.integer "dossier_id" t.integer "user_id" + t.string "type", default: "InviteGestionnaire" end create_table "mail_templates", force: :cascade do |t| diff --git a/spec/controllers/invites_controller_spec.rb b/spec/controllers/invites_controller_spec.rb index 4d8cba09b..e528188cd 100644 --- a/spec/controllers/invites_controller_spec.rb +++ b/spec/controllers/invites_controller_spec.rb @@ -13,7 +13,15 @@ describe InvitesController, type: :controller do subject { post :create, dossier_id: dossier.id, email: email } - it { expect { subject }.to change(Invite, :count).by(1) } + it { expect { subject }.to change(InviteGestionnaire, :count).by(1) } + + context 'when is a user who is loged' do + before do + sign_in create(:user) + end + + it { expect { subject }.to change(InviteGestionnaire, :count).by(1) } + end context 'when email is assign to an user' do let! (:user) { create(:user, email: email) } From 0c9fea1c14a52f65f00b0a6dc818d0478d18c009 Mon Sep 17 00:00:00 2001 From: Xavier J Date: Wed, 14 Sep 2016 16:36:01 +0200 Subject: [PATCH 47/53] User can invite other user to edit his dossier --- app/controllers/users_controller.rb | 6 +- app/models/dossier.rb | 5 + app/views/dossiers/_infos_dossier.html.haml | 4 +- .../user_controller_shared_example.rb | 43 +++ .../users/carte_controller_shared_example.rb | 256 +++++++++++++ .../users/carte_controller_spec.rb | 264 +------------ .../description_controller_shared_example.rb | 345 +++++++++++++++++ .../users/description_controller_spec.rb | 350 +----------------- spec/controllers/users_controller_spec.rb | 64 +--- spec/models/dossier_spec.rb | 27 ++ .../recapitulatif/show.html.haml_spec.rb | 107 ++++-- 11 files changed, 812 insertions(+), 659 deletions(-) create mode 100644 spec/controllers/user_controller_shared_example.rb create mode 100644 spec/controllers/users/carte_controller_shared_example.rb create mode 100644 spec/controllers/users/description_controller_shared_example.rb diff --git a/app/controllers/users_controller.rb b/app/controllers/users_controller.rb index 982b2f72c..dfc3689f3 100644 --- a/app/controllers/users_controller.rb +++ b/app/controllers/users_controller.rb @@ -8,7 +8,11 @@ class UsersController < ApplicationController def current_user_dossier dossier_id=nil dossier_id ||= params[:dossier_id] || params[:id] - current_user.dossiers.find(dossier_id) + dossier = Dossier.find(dossier_id) + + return dossier if dossier.owner?(current_user.email) || dossier.invite_by_user?(current_user.email) + + raise ActiveRecord::RecordNotFound end def authorized_routes? controller diff --git a/app/models/dossier.rb b/app/models/dossier.rb index e00ca94c2..9306e2e3e 100644 --- a/app/models/dossier.rb +++ b/app/models/dossier.rb @@ -24,6 +24,7 @@ class Dossier < ActiveRecord::Base has_many :cadastres, dependent: :destroy has_many :commentaires, dependent: :destroy has_many :invites, dependent: :destroy + has_many :invites_user, class_name: 'InviteUser', dependent: :destroy has_many :follows belongs_to :procedure @@ -315,4 +316,8 @@ class Dossier < ActiveRecord::Base def owner? email user.email == email end + + def invite_by_user? email + (invites_user.pluck :email).include? email + end end diff --git a/app/views/dossiers/_infos_dossier.html.haml b/app/views/dossiers/_infos_dossier.html.haml index 19e6c8551..d04d0187f 100644 --- a/app/views/dossiers/_infos_dossier.html.haml +++ b/app/views/dossiers/_infos_dossier.html.haml @@ -42,9 +42,9 @@ .row{style: 'text-align:right'} - unless @facade.dossier.read_only? - - if user_signed_in? && @facade.dossier.owner?(current_user.email) + - if user_signed_in? && (@facade.dossier.owner?(current_user.email) || @facade.dossier.invite_by_user?(current_user.email)) - if @facade.procedure.cerfa_flag? || @facade.dossier.types_de_piece_justificative.size > 0 - %a.btn.btn-success{"data-target" => "#UploadPJmodal", + %a#maj_pj.btn.btn-success{"data-target" => "#UploadPJmodal", "data-toggle" => "modal", :type => "button", style: 'margin-bottom: 15px; margin-top: -30px'} diff --git a/spec/controllers/user_controller_shared_example.rb b/spec/controllers/user_controller_shared_example.rb new file mode 100644 index 000000000..efe90eb88 --- /dev/null +++ b/spec/controllers/user_controller_shared_example.rb @@ -0,0 +1,43 @@ +shared_examples 'current_user_dossier_spec' do + context 'when no dossier_id is filled' do + it { expect { subject.current_user_dossier }.to raise_error } + end + + context 'when dossier_id is given as a param' do + context 'when dossier id is valid' do + it 'returns current user dossier' do + expect(subject.current_user_dossier dossier.id).to eq(dossier) + end + end + + context 'when dossier id is incorrect' do + it { expect { subject.current_user_dossier 1 }.to raise_error } + end + end + + context 'when no params[] is given' do + context 'when dossier id is valid' do + before do + subject.params[:dossier_id] = dossier.id + end + + it 'returns current user dossier' do + expect(subject.current_user_dossier).to eq(dossier) + end + end + + context 'when dossier id is incorrect' do + it { expect { subject.current_user_dossier }.to raise_error } + end + + context 'when dossier_id is given as a param' do + before do + subject.params[:dossier_id] = 1 + end + + it 'returns dossier with the id on params past' do + expect(subject.current_user_dossier dossier.id).to eq(dossier) + end + end + end +end diff --git a/spec/controllers/users/carte_controller_shared_example.rb b/spec/controllers/users/carte_controller_shared_example.rb new file mode 100644 index 000000000..eaacbddab --- /dev/null +++ b/spec/controllers/users/carte_controller_shared_example.rb @@ -0,0 +1,256 @@ +shared_examples 'carte_controller_spec' do + describe 'GET #show' do + describe 'before_action authorized_routes?' do + context 'when dossier’s procedure have api carto actived' do + context 'when dossier does not have a valid state' do + before do + dossier.state = 'validated' + dossier.save + + get :show, dossier_id: dossier.id + end + + it { is_expected.to redirect_to root_path} + end + end + + context 'when dossier’s procedure does not have api carto actived' do + let(:dossier) { create(:dossier) } + + before do + get :show, dossier_id: dossier.id + end + + it { is_expected.to redirect_to(root_path) } + end + end + + context 'user is not connected' do + before do + sign_out user + end + + it 'redirects to users/sign_in' do + get :show, dossier_id: dossier.id + expect(response).to redirect_to('/users/sign_in') + end + end + + it 'returns http success if carto is activated' do + get :show, dossier_id: dossier.id + expect(response).to have_http_status(:success) + end + + context 'when procedure not have activate api carto' do + it 'redirection on user dossier list' do + get :show, dossier_id: dossier_with_no_carto.id + expect(response).to redirect_to(root_path) + end + end + + context 'when dossier id not exist' do + it 'redirection on user dossier list' do + get :show, dossier_id: bad_dossier_id + expect(response).to redirect_to(root_path) + end + end + + it_behaves_like "not owner of dossier", :show + end + + describe 'POST #save' do + context 'Aucune localisation n\'a jamais été enregistrée' do + it do + post :save, dossier_id: dossier.id, json_latlngs: '' + expect(response).to redirect_to("/users/dossiers/#{dossier.id}/description") + end + end + + context 'En train de modifier la localisation' do + let(:dossier) { create(:dossier, state: 'initiated') } + before do + post :save, dossier_id: dossier.id, json_latlngs: '' + end + + it 'Redirection vers la page récapitulatif' do + expect(response).to redirect_to("/users/dossiers/#{dossier.id}/recapitulatif") + end + end + + describe 'Save quartier prioritaire' do + let(:module_api_carto) { create(:module_api_carto, :with_quartiers_prioritaires) } + + before do + allow_any_instance_of(CARTO::SGMAP::QuartiersPrioritaires::Adapter). + to receive(:to_params). + and_return({"QPCODE1234" => {:code => "QPCODE1234", :nom => "QP de test", :commune => "Paris", :geometry => {:type => "MultiPolygon", :coordinates => [[[[2.38715792094576, 48.8723062632126], [2.38724851642619, 48.8721392348061]]]]}}}) + + post :save, dossier_id: dossier.id, json_latlngs: json_latlngs + end + + context 'when json_latlngs params is empty' do + context 'when dossier have quartier prioritaire in database' do + let!(:dossier) { create(:dossier, :with_two_quartier_prioritaires) } + + before do + dossier.reload + end + + context 'when value is empty' do + let(:json_latlngs) { '' } + it { expect(dossier.quartier_prioritaires.size).to eq(0) } + end + + context 'when value is empty array' do + let(:json_latlngs) { '[]' } + it { expect(dossier.quartier_prioritaires.size).to eq(0) } + end + end + end + + context 'when json_latlngs params is informed' do + let(:json_latlngs) { '[[{"lat":48.87442541960633,"lng":2.3859214782714844},{"lat":48.87273183590832,"lng":2.3850631713867183},{"lat":48.87081237174292,"lng":2.3809432983398438},{"lat":48.8712640169951,"lng":2.377510070800781},{"lat":48.87510283703279,"lng":2.3778533935546875},{"lat":48.87544154230615,"lng":2.382831573486328},{"lat":48.87442541960633,"lng":2.3859214782714844}]]' } + + it { expect(dossier.quartier_prioritaires.size).to eq(1) } + + describe 'Quartier Prioritaire' do + subject { QuartierPrioritaire.last } + + it { expect(subject.code).to eq('QPCODE1234') } + it { expect(subject.commune).to eq('Paris') } + it { expect(subject.nom).to eq('QP de test') } + it { expect(subject.dossier_id).to eq(dossier.id) } + end + end + end + + describe 'Save cadastre' do + let(:module_api_carto) { create(:module_api_carto, :with_cadastre) } + + before do + allow_any_instance_of(CARTO::SGMAP::Cadastre::Adapter). + to receive(:to_params). + and_return([{:surface_intersection => "0.0006", :surface_parcelle => 11252.692583090324, :numero => "0013", :feuille => 1, :section => "CD", :code_dep => "30", :nom_com => "Le Grau-du-Roi", :code_com => "133", :code_arr => "000", :geometry => {:type => "MultiPolygon", :coordinates => [[[[4.134084, 43.5209193], [4.1346615, 43.5212035], [4.1346984, 43.521189], [4.135096, 43.5213848], [4.1350839, 43.5214122], [4.1352697, 43.521505], [4.1356278, 43.5211065], [4.1357402, 43.5207188], [4.1350935, 43.5203936], [4.135002, 43.5204366], [4.1346051, 43.5202412], [4.134584, 43.5202472], [4.1345572, 43.5202551], [4.134356, 43.5203137], [4.1342488, 43.5203448], [4.134084, 43.5209193]]]]}}]) + + post :save, dossier_id: dossier.id, json_latlngs: json_latlngs + end + + context 'when json_latlngs params is empty' do + context 'when dossier have cadastres in database' do + let!(:dossier) { create(:dossier, :with_two_cadastres) } + + before do + dossier.reload + end + + context 'when value is empty' do + let(:json_latlngs) { '' } + it { expect(dossier.cadastres.size).to eq(0) } + end + + context 'when value is empty array' do + let(:json_latlngs) { '[]' } + it { expect(dossier.cadastres.size).to eq(0) } + end + end + end + + context 'when json_latlngs params is informed' do + let(:json_latlngs) { '[[{"lat":48.87442541960633,"lng":2.3859214782714844},{"lat":48.87273183590832,"lng":2.3850631713867183},{"lat":48.87081237174292,"lng":2.3809432983398438},{"lat":48.8712640169951,"lng":2.377510070800781},{"lat":48.87510283703279,"lng":2.3778533935546875},{"lat":48.87544154230615,"lng":2.382831573486328},{"lat":48.87442541960633,"lng":2.3859214782714844}]]' } + + it { expect(dossier.cadastres.size).to eq(1) } + + describe 'Cadastre' do + subject { Cadastre.last } + + it { expect(subject.surface_intersection).to eq('0.0006') } + it { expect(subject.surface_parcelle).to eq(11252.6925830903) } + it { expect(subject.numero).to eq('0013') } + it { expect(subject.feuille).to eq(1) } + it { expect(subject.section).to eq('CD') } + it { expect(subject.code_dep).to eq('30') } + it { expect(subject.nom_com).to eq('Le Grau-du-Roi') } + it { expect(subject.code_com).to eq('133') } + it { expect(subject.code_arr).to eq('000') } + it { expect(subject.geometry).to eq({"type" => "MultiPolygon", "coordinates" => [[[[4.134084, 43.5209193], [4.1346615, 43.5212035], [4.1346984, 43.521189], [4.135096, 43.5213848], [4.1350839, 43.5214122], [4.1352697, 43.521505], [4.1356278, 43.5211065], [4.1357402, 43.5207188], [4.1350935, 43.5203936], [4.135002, 43.5204366], [4.1346051, 43.5202412], [4.134584, 43.5202472], [4.1345572, 43.5202551], [4.134356, 43.5203137], [4.1342488, 43.5203448], [4.134084, 43.5209193]]]]}) } + end + end + end + end + + describe '#get_position' do + context 'Geocodeur renvoie les positions par defaut' do + let(:etablissement) { create(:etablissement, adresse: bad_adresse, numero_voie: 'dzj', type_voie: 'fzjfk', nom_voie: 'hdidjkz', complement_adresse: 'fjef', code_postal: 'fjeiefk', localite: 'zjfkfz') } + let(:dossier) { create(:dossier, etablissement: etablissement) } + + before do + stub_request(:get, /http:\/\/api-adresse[.]data[.]gouv[.]fr\/search[?]limit=1&q=/) + .to_return(status: 200, body: '{"query": "babouba", "version": "draft", "licence": "ODbL 1.0", "features": [], "type": "FeatureCollection", "attribution": "BAN"}', headers: {}) + get :get_position, dossier_id: dossier.id + end + + subject { JSON.parse(response.body) } + + it 'on enregistre des coordonnées lat et lon avec les valeurs par defaut' do + expect(subject['lat']).to eq('46.538192') + expect(subject['lon']).to eq('2.428462') + end + end + + context 'retour d\'un fichier JSON avec 3 attributs' do + before do + stub_request(:get, "http://api-adresse.data.gouv.fr/search?limit=1&q=#{adresse}") + .to_return(status: 200, body: '{"query": "50 avenue des champs u00e9lysu00e9es Paris 75008", "version": "draft", "licence": "ODbL 1.0", "features": [{"geometry": {"coordinates": [2.306888, 48.870374], "type": "Point"}, "type": "Feature", "properties": {"city": "Paris", "label": "50 Avenue des Champs u00c9lysu00e9es 75008 Paris", "housenumber": "50", "id": "ADRNIVX_0000000270748251", "postcode": "75008", "name": "50 Avenue des Champs u00c9lysu00e9es", "citycode": "75108", "context": "75, u00cele-de-France", "score": 0.9054545454545454, "type": "housenumber"}}], "type": "FeatureCollection", "attribution": "BAN"}', headers: {}) + + get :get_position, dossier_id: dossier.id + end + subject { JSON.parse(response.body) } + + it 'format JSON valide' do + expect(response.content_type).to eq('application/json') + end + + it 'latitude' do + expect(subject['lat']).to eq('48.870374') + end + + it 'longitude' do + expect(subject['lon']).to eq('2.306888') + end + + it 'dossier_id' do + expect(subject['dossier_id']).to eq(dossier.id.to_s) + end + end + end + + describe 'POST #get_qp' do + before do + allow_any_instance_of(CARTO::SGMAP::QuartiersPrioritaires::Adapter). + to receive(:to_params). + and_return({"QPCODE1234" => {:code => "QPCODE1234", :geometry => {:type => "MultiPolygon", :coordinates => [[[[2.38715792094576, 48.8723062632126], [2.38724851642619, 48.8721392348061]]]]}}}) + + post :get_qp, dossier_id: dossier.id, coordinates: coordinates + end + + context 'when coordinates are empty' do + let(:coordinates) { '[]' } + + subject { JSON.parse(response.body) } + + it 'Quartier Prioritaire Adapter does not call' do + expect(subject['quartier_prioritaires']).to eq({}) + end + end + + context 'when coordinates are informed' do + let(:coordinates) { '[[{"lat":48.87442541960633,"lng":2.3859214782714844},{"lat":48.87273183590832,"lng":2.3850631713867183},{"lat":48.87081237174292,"lng":2.3809432983398438},{"lat":48.8712640169951,"lng":2.377510070800781},{"lat":48.87510283703279,"lng":2.3778533935546875},{"lat":48.87544154230615,"lng":2.382831573486328},{"lat":48.87442541960633,"lng":2.3859214782714844}]]' } + + subject { JSON.parse(response.body)['quartier_prioritaires'] } + it { expect(subject).not_to be_nil } + it { expect(subject['QPCODE1234']['code']).to eq('QPCODE1234') } + it { expect(subject['QPCODE1234']['geometry']['type']).to eq('MultiPolygon') } + it { expect(subject['QPCODE1234']['geometry']['coordinates']).to eq([[[[2.38715792094576, 48.8723062632126], [2.38724851642619, 48.8721392348061]]]]) } + end + end +end \ No newline at end of file diff --git a/spec/controllers/users/carte_controller_spec.rb b/spec/controllers/users/carte_controller_spec.rb index 3d25ef4c6..8fbb7216b 100644 --- a/spec/controllers/users/carte_controller_spec.rb +++ b/spec/controllers/users/carte_controller_spec.rb @@ -1,4 +1,5 @@ require 'spec_helper' +require 'controllers/users/carte_controller_shared_example' RSpec.describe Users::CarteController, type: :controller do let(:bad_adresse) { 'babouba' } @@ -7,6 +8,9 @@ RSpec.describe Users::CarteController, type: :controller do let(:procedure) { create(:procedure, module_api_carto: module_api_carto) } let(:dossier) { create(:dossier, procedure: procedure) } + let(:owner_user) { dossier.user } + let(:invite_by_user) { create :user, email: 'invite@plop.com' } + let(:dossier_with_no_carto) { create(:dossier) } let!(:entreprise) { create(:entreprise, dossier: dossier) } let!(:etablissement) { create(:etablissement, dossier: dossier) } @@ -14,262 +18,20 @@ RSpec.describe Users::CarteController, type: :controller do let(:adresse) { etablissement.geo_adresse } before do - sign_in dossier.user + create :invite, dossier: dossier, user: invite_by_user, email: invite_by_user.email, type: 'InviteUser' + + sign_in user end - describe 'GET #show' do + context 'when sign in user is the owner' do + let(:user) { owner_user } - describe 'before_action authorized_routes?' do - context 'when dossier’s procedure have api carto actived' do - context 'when dossier does not have a valid state' do - before do - dossier.state = 'validated' - dossier.save - - get :show, dossier_id: dossier.id - end - - it { is_expected.to redirect_to root_path} - end - end - - context 'when dossier’s procedure does not have api carto actived' do - let(:dossier) { create(:dossier) } - - before do - get :show, dossier_id: dossier.id - end - - it { is_expected.to redirect_to(root_path) } - end - end - - context 'user is not connected' do - before do - sign_out dossier.user - end - - it 'redirects to users/sign_in' do - get :show, dossier_id: dossier.id - expect(response).to redirect_to('/users/sign_in') - end - end - - it 'returns http success if carto is activated' do - get :show, dossier_id: dossier.id - expect(response).to have_http_status(:success) - end - - context 'when procedure not have activate api carto' do - it 'redirection on user dossier list' do - get :show, dossier_id: dossier_with_no_carto.id - expect(response).to redirect_to(root_path) - end - end - - context 'when dossier id not exist' do - it 'redirection on user dossier list' do - get :show, dossier_id: bad_dossier_id - expect(response).to redirect_to(root_path) - end - end - - it_behaves_like "not owner of dossier", :show + it_should_behave_like "carte_controller_spec" end - describe 'POST #save' do - context 'Aucune localisation n\'a jamais été enregistrée' do - it do - post :save, dossier_id: dossier.id, json_latlngs: '' - expect(response).to redirect_to("/users/dossiers/#{dossier.id}/description") - end - end + context 'when sign in user is an invite by owner' do + let(:user) { invite_by_user } - context 'En train de modifier la localisation' do - let(:dossier) { create(:dossier, state: 'initiated') } - before do - post :save, dossier_id: dossier.id, json_latlngs: '' - end - - it 'Redirection vers la page récapitulatif' do - expect(response).to redirect_to("/users/dossiers/#{dossier.id}/recapitulatif") - end - end - - describe 'Save quartier prioritaire' do - let(:module_api_carto) { create(:module_api_carto, :with_quartiers_prioritaires) } - - before do - allow_any_instance_of(CARTO::SGMAP::QuartiersPrioritaires::Adapter). - to receive(:to_params). - and_return({"QPCODE1234" => {:code => "QPCODE1234", :nom => "QP de test", :commune => "Paris", :geometry => {:type => "MultiPolygon", :coordinates => [[[[2.38715792094576, 48.8723062632126], [2.38724851642619, 48.8721392348061]]]]}}}) - - post :save, dossier_id: dossier.id, json_latlngs: json_latlngs - end - - context 'when json_latlngs params is empty' do - context 'when dossier have quartier prioritaire in database' do - let!(:dossier) { create(:dossier, :with_two_quartier_prioritaires) } - - before do - dossier.reload - end - - context 'when value is empty' do - let(:json_latlngs) { '' } - it { expect(dossier.quartier_prioritaires.size).to eq(0) } - end - - context 'when value is empty array' do - let(:json_latlngs) { '[]' } - it { expect(dossier.quartier_prioritaires.size).to eq(0) } - end - end - end - - context 'when json_latlngs params is informed' do - let(:json_latlngs) { '[[{"lat":48.87442541960633,"lng":2.3859214782714844},{"lat":48.87273183590832,"lng":2.3850631713867183},{"lat":48.87081237174292,"lng":2.3809432983398438},{"lat":48.8712640169951,"lng":2.377510070800781},{"lat":48.87510283703279,"lng":2.3778533935546875},{"lat":48.87544154230615,"lng":2.382831573486328},{"lat":48.87442541960633,"lng":2.3859214782714844}]]' } - - it { expect(dossier.quartier_prioritaires.size).to eq(1) } - - describe 'Quartier Prioritaire' do - subject { QuartierPrioritaire.last } - - it { expect(subject.code).to eq('QPCODE1234') } - it { expect(subject.commune).to eq('Paris') } - it { expect(subject.nom).to eq('QP de test') } - it { expect(subject.dossier_id).to eq(dossier.id) } - end - end - end - - describe 'Save cadastre' do - let(:module_api_carto) { create(:module_api_carto, :with_cadastre) } - - before do - allow_any_instance_of(CARTO::SGMAP::Cadastre::Adapter). - to receive(:to_params). - and_return([{:surface_intersection => "0.0006", :surface_parcelle => 11252.692583090324, :numero => "0013", :feuille => 1, :section => "CD", :code_dep => "30", :nom_com => "Le Grau-du-Roi", :code_com => "133", :code_arr => "000", :geometry => {:type => "MultiPolygon", :coordinates => [[[[4.134084, 43.5209193], [4.1346615, 43.5212035], [4.1346984, 43.521189], [4.135096, 43.5213848], [4.1350839, 43.5214122], [4.1352697, 43.521505], [4.1356278, 43.5211065], [4.1357402, 43.5207188], [4.1350935, 43.5203936], [4.135002, 43.5204366], [4.1346051, 43.5202412], [4.134584, 43.5202472], [4.1345572, 43.5202551], [4.134356, 43.5203137], [4.1342488, 43.5203448], [4.134084, 43.5209193]]]]}}]) - - post :save, dossier_id: dossier.id, json_latlngs: json_latlngs - end - - context 'when json_latlngs params is empty' do - context 'when dossier have cadastres in database' do - let!(:dossier) { create(:dossier, :with_two_cadastres) } - - before do - dossier.reload - end - - context 'when value is empty' do - let(:json_latlngs) { '' } - it { expect(dossier.cadastres.size).to eq(0) } - end - - context 'when value is empty array' do - let(:json_latlngs) { '[]' } - it { expect(dossier.cadastres.size).to eq(0) } - end - end - end - - context 'when json_latlngs params is informed' do - let(:json_latlngs) { '[[{"lat":48.87442541960633,"lng":2.3859214782714844},{"lat":48.87273183590832,"lng":2.3850631713867183},{"lat":48.87081237174292,"lng":2.3809432983398438},{"lat":48.8712640169951,"lng":2.377510070800781},{"lat":48.87510283703279,"lng":2.3778533935546875},{"lat":48.87544154230615,"lng":2.382831573486328},{"lat":48.87442541960633,"lng":2.3859214782714844}]]' } - - it { expect(dossier.cadastres.size).to eq(1) } - - describe 'Cadastre' do - subject { Cadastre.last } - - it { expect(subject.surface_intersection).to eq('0.0006') } - it { expect(subject.surface_parcelle).to eq(11252.6925830903) } - it { expect(subject.numero).to eq('0013') } - it { expect(subject.feuille).to eq(1) } - it { expect(subject.section).to eq('CD') } - it { expect(subject.code_dep).to eq('30') } - it { expect(subject.nom_com).to eq('Le Grau-du-Roi') } - it { expect(subject.code_com).to eq('133') } - it { expect(subject.code_arr).to eq('000') } - it { expect(subject.geometry).to eq({"type" => "MultiPolygon", "coordinates" => [[[[4.134084, 43.5209193], [4.1346615, 43.5212035], [4.1346984, 43.521189], [4.135096, 43.5213848], [4.1350839, 43.5214122], [4.1352697, 43.521505], [4.1356278, 43.5211065], [4.1357402, 43.5207188], [4.1350935, 43.5203936], [4.135002, 43.5204366], [4.1346051, 43.5202412], [4.134584, 43.5202472], [4.1345572, 43.5202551], [4.134356, 43.5203137], [4.1342488, 43.5203448], [4.134084, 43.5209193]]]]}) } - end - end - end - end - - describe '#get_position' do - context 'Geocodeur renvoie les positions par defaut' do - let(:etablissement) { create(:etablissement, adresse: bad_adresse, numero_voie: 'dzj', type_voie: 'fzjfk', nom_voie: 'hdidjkz', complement_adresse: 'fjef', code_postal: 'fjeiefk', localite: 'zjfkfz') } - let(:dossier) { create(:dossier, etablissement: etablissement) } - - before do - stub_request(:get, /http:\/\/api-adresse[.]data[.]gouv[.]fr\/search[?]limit=1&q=/) - .to_return(status: 200, body: '{"query": "babouba", "version": "draft", "licence": "ODbL 1.0", "features": [], "type": "FeatureCollection", "attribution": "BAN"}', headers: {}) - get :get_position, dossier_id: dossier.id - end - - subject { JSON.parse(response.body) } - - it 'on enregistre des coordonnées lat et lon avec les valeurs par defaut' do - expect(subject['lat']).to eq('46.538192') - expect(subject['lon']).to eq('2.428462') - end - end - - context 'retour d\'un fichier JSON avec 3 attributs' do - before do - stub_request(:get, "http://api-adresse.data.gouv.fr/search?limit=1&q=#{adresse}") - .to_return(status: 200, body: '{"query": "50 avenue des champs u00e9lysu00e9es Paris 75008", "version": "draft", "licence": "ODbL 1.0", "features": [{"geometry": {"coordinates": [2.306888, 48.870374], "type": "Point"}, "type": "Feature", "properties": {"city": "Paris", "label": "50 Avenue des Champs u00c9lysu00e9es 75008 Paris", "housenumber": "50", "id": "ADRNIVX_0000000270748251", "postcode": "75008", "name": "50 Avenue des Champs u00c9lysu00e9es", "citycode": "75108", "context": "75, u00cele-de-France", "score": 0.9054545454545454, "type": "housenumber"}}], "type": "FeatureCollection", "attribution": "BAN"}', headers: {}) - - get :get_position, dossier_id: dossier.id - end - subject { JSON.parse(response.body) } - - it 'format JSON valide' do - expect(response.content_type).to eq('application/json') - end - - it 'latitude' do - expect(subject['lat']).to eq('48.870374') - end - - it 'longitude' do - expect(subject['lon']).to eq('2.306888') - end - - it 'dossier_id' do - expect(subject['dossier_id']).to eq(dossier.id.to_s) - end - end - end - - describe 'POST #get_qp' do - before do - allow_any_instance_of(CARTO::SGMAP::QuartiersPrioritaires::Adapter). - to receive(:to_params). - and_return({"QPCODE1234" => {:code => "QPCODE1234", :geometry => {:type => "MultiPolygon", :coordinates => [[[[2.38715792094576, 48.8723062632126], [2.38724851642619, 48.8721392348061]]]]}}}) - - post :get_qp, dossier_id: dossier.id, coordinates: coordinates - end - - context 'when coordinates are empty' do - let(:coordinates) { '[]' } - - subject { JSON.parse(response.body) } - - it 'Quartier Prioritaire Adapter does not call' do - expect(subject['quartier_prioritaires']).to eq({}) - end - end - - context 'when coordinates are informed' do - let(:coordinates) { '[[{"lat":48.87442541960633,"lng":2.3859214782714844},{"lat":48.87273183590832,"lng":2.3850631713867183},{"lat":48.87081237174292,"lng":2.3809432983398438},{"lat":48.8712640169951,"lng":2.377510070800781},{"lat":48.87510283703279,"lng":2.3778533935546875},{"lat":48.87544154230615,"lng":2.382831573486328},{"lat":48.87442541960633,"lng":2.3859214782714844}]]' } - - subject { JSON.parse(response.body)['quartier_prioritaires'] } - it { expect(subject).not_to be_nil } - it { expect(subject['QPCODE1234']['code']).to eq('QPCODE1234') } - it { expect(subject['QPCODE1234']['geometry']['type']).to eq('MultiPolygon') } - it { expect(subject['QPCODE1234']['geometry']['coordinates']).to eq([[[[2.38715792094576, 48.8723062632126], [2.38724851642619, 48.8721392348061]]]]) } - end + it_should_behave_like "carte_controller_spec" end end diff --git a/spec/controllers/users/description_controller_shared_example.rb b/spec/controllers/users/description_controller_shared_example.rb new file mode 100644 index 000000000..b11cb12bb --- /dev/null +++ b/spec/controllers/users/description_controller_shared_example.rb @@ -0,0 +1,345 @@ +shared_examples 'description_controller_spec' do + describe 'GET #show' do + context 'user is not connected' do + before do + sign_out dossier.user + end + + it 'redirects to users/sign_in' do + get :show, dossier_id: dossier_id + expect(response).to redirect_to('/users/sign_in') + end + end + + it 'returns http success' do + get :show, dossier_id: dossier_id + expect(response).to have_http_status(:success) + end + + it 'redirection vers start si mauvais dossier ID' do + get :show, dossier_id: bad_dossier_id + expect(response).to redirect_to(root_path) + end + + it_behaves_like "not owner of dossier", :show + + describe 'before_action authorized_routes?' do + context 'when dossier does not have a valid state' do + before do + dossier.state = 'validated' + dossier.save + + get :show, dossier_id: dossier.id + end + + it { is_expected.to redirect_to root_path } + end + end + end + + describe 'POST #create' do + let(:timestamp) { Time.now } + let(:description) { 'Description de test Coucou, je suis un saut à la ligne Je suis un double saut la ligne.' } + + context 'Tous les attributs sont bons' do + describe 'Premier enregistrement des données' do + before do + dossier.draft! + post :create, dossier_id: dossier_id + dossier.reload + end + + it "redirection vers la page recapitulative" do + expect(response).to redirect_to("/users/dossiers/#{dossier_id}/recapitulatif") + end + + it 'etat du dossier est soumis' do + expect(dossier.state).to eq('initiated') + end + end + + context 'En train de manipuler un dossier non brouillon' do + before do + dossier.initiated! + post :create, dossier_id: dossier_id + dossier.reload + end + + it 'Redirection vers la page récapitulatif' do + expect(response).to redirect_to("/users/dossiers/#{dossier_id}/recapitulatif") + end + + it 'etat du dossier n\'est pas soumis' do + expect(dossier.state).not_to eq('draft') + end + end + end + + context 'Quand la procédure accepte les CERFA' do + context 'Sauvegarde du CERFA PDF', vcr: {cassette_name: 'controllers_users_description_controller_save_cerfa'} do + before do + post :create, dossier_id: dossier_id, + cerfa_pdf: cerfa_pdf + dossier.reload + end + + context 'when a CERFA PDF is sent', vcr: {cassette_name: 'controllers_users_description_controller_cerfa_is_sent'} do + subject { dossier.cerfa.first } + + it 'content' do + if Features.remote_storage + expect(subject['content']).to eq('cerfa-3dbb3535-5388-4a37-bc2d-778327b9f999.pdf') + else + expect(subject['content']).to eq('cerfa.pdf') + end + end + + it 'dossier_id' do + expect(subject.dossier_id).to eq(dossier_id) + end + + it { expect(subject.user).to eq user } + end + + context 'les anciens CERFA PDF ne sont pas écrasées' do + let(:cerfas) { Cerfa.where(dossier_id: dossier_id) } + + before do + post :create, dossier_id: dossier_id, cerfa_pdf: cerfa_pdf + end + + it "il y a deux CERFA PDF pour ce dossier" do + expect(cerfas.size).to eq 2 + end + end + end + end + + context 'Quand la procédure n\'accepte pas les CERFA' do + context 'Sauvegarde du CERFA PDF' do + let!(:procedure) { create(:procedure) } + before do + post :create, dossier_id: dossier_id, + cerfa_pdf: cerfa_pdf + dossier.reload + end + + context 'un CERFA PDF est envoyé' do + it { expect(dossier.cerfa_available?).to be_falsey } + end + end + end + + describe 'Sauvegarde des champs' do + let(:champs_dossier) { dossier.champs } + let(:dossier_champs_first) { 'test value' } + let(:dossier_date_value) { '23/06/2016' } + let(:dossier_hour_value) { '17' } + let(:dossier_minute_value) { '00' } + + before do + post :create, {dossier_id: dossier_id, + champs: { + "'#{dossier.champs.first.id}'" => dossier_champs_first, + "'#{dossier.champs.second.id}'" => dossier_date_value + }, + time_hour: { + "'#{dossier.champs.second.id}'" => dossier_hour_value, + }, + time_minute: { + "'#{dossier.champs.second.id}'" => dossier_minute_value, + } + } + dossier.reload + end + + it { expect(dossier.champs.first.value).to eq(dossier_champs_first) } + it { expect(response).to redirect_to users_dossier_recapitulatif_path } + + context 'when champs is type_de_champ datetime' do + it { expect(dossier.champs.second.value).to eq(dossier_date_value+' '+dossier_hour_value+':'+dossier_minute_value) } + end + + context 'when champs value is empty' do + let(:dossier_champs_first) { '' } + + it { expect(dossier.champs.first.value).to eq(dossier_champs_first) } + it { expect(response).to redirect_to users_dossier_recapitulatif_path } + + context 'when champs is mandatory' do + let(:procedure) { create(:procedure, :with_two_type_de_piece_justificative, :with_type_de_champ_mandatory, :with_datetime, cerfa_flag: true) } + + it { expect(response).not_to redirect_to users_dossier_recapitulatif_path } + it { expect(flash[:alert]).to be_present } + end + end + end + + context 'Sauvegarde des pièces justificatives', vcr: {cassette_name: 'controllers_users_description_controller_sauvegarde_pj'} do + let(:all_pj_type) { dossier.procedure.type_de_piece_justificative_ids } + before do + post :create, {dossier_id: dossier_id, + 'piece_justificative_'+all_pj_type[0].to_s => piece_justificative_0, + 'piece_justificative_'+all_pj_type[1].to_s => piece_justificative_1} + dossier.reload + end + + describe 'clamav anti-virus presence', vcr: {cassette_name: 'controllers_users_description_controller_clamav_presence'} do + it 'ClamavService safe_file? is call' do + expect(ClamavService).to receive(:safe_file?).twice + + post :create, {dossier_id: dossier_id, + 'piece_justificative_'+all_pj_type[0].to_s => piece_justificative_0, + 'piece_justificative_'+all_pj_type[1].to_s => piece_justificative_1} + end + end + + context 'for piece 0' do + subject { dossier.retrieve_last_piece_justificative_by_type all_pj_type[0].to_s } + it { expect(subject.content).not_to be_nil } + it { expect(subject.user).to eq user } + end + context 'for piece 1' do + subject { dossier.retrieve_last_piece_justificative_by_type all_pj_type[1].to_s } + it { expect(subject.content).not_to be_nil } + it { expect(subject.user).to eq user } + end + end + end + + describe 'POST #pieces_justificatives', vcr: {cassette_name: 'controllers_users_description_controller_pieces_justificatives'} do + let(:all_pj_type) { dossier.procedure.type_de_piece_justificative_ids } + + subject { patch :pieces_justificatives, {dossier_id: dossier.id, + 'piece_justificative_'+all_pj_type[0].to_s => piece_justificative_0, + 'piece_justificative_'+all_pj_type[1].to_s => piece_justificative_1} } + + context 'when user is a guest' do + let(:guest) { create :user } + + before do + create :invite, dossier: dossier, email: guest.email, user: guest + + sign_in guest + end + + context 'when PJ have no documents' do + it { expect(dossier.pieces_justificatives.size).to eq 0 } + + context 'when upload two PJ' do + before do + subject + dossier.reload + end + + it { expect(dossier.pieces_justificatives.size).to eq 2 } + it { expect(flash[:notice]).to be_present } + it { is_expected.to redirect_to users_dossiers_invite_path(id: guest.invites.find_by_dossier_id(dossier.id).id) } + end + end + + context 'when PJ have already a document' do + before do + create :piece_justificative, :rib, dossier: dossier, type_de_piece_justificative_id: all_pj_type[0] + create :piece_justificative, :contrat, dossier: dossier, type_de_piece_justificative_id: all_pj_type[1] + end + + it { expect(dossier.pieces_justificatives.size).to eq 2 } + + context 'when upload two PJ', vcr: {cassette_name: 'controllers_users_description_controller_upload_2pj'} do + before do + subject + dossier.reload + end + + it { expect(dossier.pieces_justificatives.size).to eq 4 } + it { expect(flash[:notice]).to be_present } + it { is_expected.to redirect_to users_dossiers_invite_path(id: guest.invites.find_by_dossier_id(dossier.id).id) } + end + end + + context 'when one of PJs is not valid' do + let(:piece_justificative_0) { Rack::Test::UploadedFile.new("./spec/support/files/entreprise.json", 'application/json') } + + it { expect(dossier.pieces_justificatives.size).to eq 0 } + + context 'when upload two PJ' do + before do + subject + dossier.reload + end + + it { expect(dossier.pieces_justificatives.size).to eq 1 } + it { expect(flash[:alert]).to be_present } + it { is_expected.to redirect_to users_dossiers_invite_path(id: guest.invites.find_by_dossier_id(dossier.id).id) } + end + end + end + end +end + +shared_examples 'description_controller_spec_POST_piece_justificatives_for_owner' do + let(:all_pj_type) { dossier.procedure.type_de_piece_justificative_ids } + + subject { patch :pieces_justificatives, {dossier_id: dossier.id, + 'piece_justificative_'+all_pj_type[0].to_s => piece_justificative_0, + 'piece_justificative_'+all_pj_type[1].to_s => piece_justificative_1} } + + context 'when user is the owner' do + before do + sign_in user + end + + context 'when PJ have no documents' do + it { expect(dossier.pieces_justificatives.size).to eq 0 } + + context 'when upload two PJ' do + before do + subject + dossier.reload + end + + it { expect(dossier.pieces_justificatives.size).to eq 2 } + it { expect(flash[:notice]).to be_present } + it { is_expected.to redirect_to recapitulatif_path } + end + end + + context 'when PJ have already a document', vcr: {cassette_name: 'controllers_users_description_controller_pj_already_exist'} do + before do + create :piece_justificative, :rib, dossier: dossier, type_de_piece_justificative_id: all_pj_type[0] + create :piece_justificative, :contrat, dossier: dossier, type_de_piece_justificative_id: all_pj_type[1] + end + + it { expect(dossier.pieces_justificatives.size).to eq 2 } + + context 'when upload two PJ', vcr: {cassette_name: 'controllers_users_description_controller_pj_already_exist_upload_2pj'} do + before do + subject + dossier.reload + end + + it { expect(dossier.pieces_justificatives.size).to eq 4 } + it { expect(flash[:notice]).to be_present } + it { is_expected.to redirect_to recapitulatif_path } + end + end + + context 'when one of PJs is not valid' do + let(:piece_justificative_0) { Rack::Test::UploadedFile.new("./spec/support/files/entreprise.json", 'application/json') } + + it { expect(dossier.pieces_justificatives.size).to eq 0 } + + context 'when upload two PJ' do + before do + subject + dossier.reload + end + + it { expect(dossier.pieces_justificatives.size).to eq 1 } + it { expect(flash[:alert]).to be_present } + it { is_expected.to redirect_to recapitulatif_path } + end + end + end +end diff --git a/spec/controllers/users/description_controller_spec.rb b/spec/controllers/users/description_controller_spec.rb index 58d0f9f2a..b459d6341 100644 --- a/spec/controllers/users/description_controller_spec.rb +++ b/spec/controllers/users/description_controller_spec.rb @@ -1,10 +1,13 @@ require 'spec_helper' +require 'controllers/users/description_controller_shared_example' + describe Users::DescriptionController, type: :controller, vcr: {cassette_name: 'controllers_users_description_controller'} do - let(:user) { create(:user) } + let(:owner_user) { create(:user) } + let(:invite_by_user) { create :user, email: 'invite@plop.com' } let(:procedure) { create(:procedure, :with_two_type_de_piece_justificative, :with_type_de_champ, :with_datetime, cerfa_flag: true) } - let(:dossier) { create(:dossier, procedure: procedure, user: user) } + let(:dossier) { create(:dossier, procedure: procedure, user: owner_user) } let(:dossier_id) { dossier.id } let(:bad_dossier_id) { Dossier.count + 10000 } @@ -20,342 +23,23 @@ describe Users::DescriptionController, type: :controller, vcr: {cassette_name: ' before do allow(ClamavService).to receive(:safe_file?).and_return(true) - sign_in dossier.user + create :invite, dossier: dossier, user: invite_by_user, email: invite_by_user.email, type: 'InviteUser' + + sign_in user end - describe 'GET #show' do - context 'user is not connected' do - before do - sign_out dossier.user - end + context 'when sign in user is the owner' do + let(:user) { owner_user } + let(:recapitulatif_path) { users_dossier_recapitulatif_path } - it 'redirects to users/sign_in' do - get :show, dossier_id: dossier_id - expect(response).to redirect_to('/users/sign_in') - end - end - - it 'returns http success' do - get :show, dossier_id: dossier_id - expect(response).to have_http_status(:success) - end - - it 'redirection vers start si mauvais dossier ID' do - get :show, dossier_id: bad_dossier_id - expect(response).to redirect_to(root_path) - end - - it_behaves_like "not owner of dossier", :show - - describe 'before_action authorized_routes?' do - context 'when dossier does not have a valid state' do - before do - dossier.state = 'validated' - dossier.save - - get :show, dossier_id: dossier.id - end - - it { is_expected.to redirect_to root_path } - end - end + it_should_behave_like "description_controller_spec" + it_should_behave_like "description_controller_spec_POST_piece_justificatives_for_owner" end - describe 'POST #create' do - let(:timestamp) { Time.now } - let(:description) { 'Description de test Coucou, je suis un saut à la ligne Je suis un double saut la ligne.' } + context 'when sign in user is an invite by owner' do + let(:user) { invite_by_user } + let(:recapitulatif_path) { users_dossiers_invite_path(id: dossier_id) } - context 'Tous les attributs sont bons' do - describe 'Premier enregistrement des données' do - before do - dossier.draft! - post :create, dossier_id: dossier_id - dossier.reload - end - - it "redirection vers la page recapitulative" do - expect(response).to redirect_to("/users/dossiers/#{dossier_id}/recapitulatif") - end - - it 'etat du dossier est soumis' do - expect(dossier.state).to eq('initiated') - end - end - - context 'En train de manipuler un dossier non brouillon' do - before do - dossier.initiated! - post :create, dossier_id: dossier_id - dossier.reload - end - - it 'Redirection vers la page récapitulatif' do - expect(response).to redirect_to("/users/dossiers/#{dossier_id}/recapitulatif") - end - - it 'etat du dossier n\'est pas soumis' do - expect(dossier.state).not_to eq('draft') - end - end - end - - context 'Quand la procédure accepte les CERFA' do - context 'Sauvegarde du CERFA PDF', vcr: {cassette_name: 'controllers_users_description_controller_save_cerfa'} do - before do - post :create, dossier_id: dossier_id, - cerfa_pdf: cerfa_pdf - dossier.reload - end - - context 'when a CERFA PDF is sent', vcr: {cassette_name: 'controllers_users_description_controller_cerfa_is_sent'} do - subject { dossier.cerfa.first } - - it 'content' do - if Features.remote_storage - expect(subject['content']).to eq('cerfa-3dbb3535-5388-4a37-bc2d-778327b9f999.pdf') - else - expect(subject['content']).to eq('cerfa.pdf') - end - end - - it 'dossier_id' do - expect(subject.dossier_id).to eq(dossier_id) - end - - it { expect(subject.user).to eq user } - end - - context 'les anciens CERFA PDF ne sont pas écrasées' do - let(:cerfas) { Cerfa.where(dossier_id: dossier_id) } - - before do - post :create, dossier_id: dossier_id, cerfa_pdf: cerfa_pdf - end - - it "il y a deux CERFA PDF pour ce dossier" do - expect(cerfas.size).to eq 2 - end - end - end - end - - context 'Quand la procédure n\'accepte pas les CERFA' do - context 'Sauvegarde du CERFA PDF' do - let!(:procedure) { create(:procedure) } - before do - post :create, dossier_id: dossier_id, - cerfa_pdf: cerfa_pdf - dossier.reload - end - - context 'un CERFA PDF est envoyé' do - it { expect(dossier.cerfa_available?).to be_falsey } - end - end - end - - describe 'Sauvegarde des champs' do - let(:champs_dossier) { dossier.champs } - let(:dossier_champs_first) { 'test value' } - let(:dossier_date_value) { '23/06/2016' } - let(:dossier_hour_value) { '17' } - let(:dossier_minute_value) { '00' } - - before do - post :create, {dossier_id: dossier_id, - champs: { - "'#{dossier.champs.first.id}'" => dossier_champs_first, - "'#{dossier.champs.second.id}'" => dossier_date_value - }, - time_hour: { - "'#{dossier.champs.second.id}'" => dossier_hour_value, - }, - time_minute: { - "'#{dossier.champs.second.id}'" => dossier_minute_value, - } - } - dossier.reload - end - - it { expect(dossier.champs.first.value).to eq(dossier_champs_first) } - it { expect(response).to redirect_to users_dossier_recapitulatif_path } - - context 'when champs is type_de_champ datetime' do - it { expect(dossier.champs.second.value).to eq(dossier_date_value+' '+dossier_hour_value+':'+dossier_minute_value) } - end - - context 'when champs value is empty' do - let(:dossier_champs_first) { '' } - - it { expect(dossier.champs.first.value).to eq(dossier_champs_first) } - it { expect(response).to redirect_to users_dossier_recapitulatif_path } - - context 'when champs is mandatory' do - let(:procedure) { create(:procedure, :with_two_type_de_piece_justificative, :with_type_de_champ_mandatory, :with_datetime, cerfa_flag: true) } - - it { expect(response).not_to redirect_to users_dossier_recapitulatif_path } - it { expect(flash[:alert]).to be_present } - end - end - end - - context 'Sauvegarde des pièces justificatives', vcr: {cassette_name: 'controllers_users_description_controller_sauvegarde_pj'} do - let(:all_pj_type) { dossier.procedure.type_de_piece_justificative_ids } - before do - post :create, {dossier_id: dossier_id, - 'piece_justificative_'+all_pj_type[0].to_s => piece_justificative_0, - 'piece_justificative_'+all_pj_type[1].to_s => piece_justificative_1} - dossier.reload - end - - describe 'clamav anti-virus presence', vcr: {cassette_name: 'controllers_users_description_controller_clamav_presence'} do - it 'ClamavService safe_file? is call' do - expect(ClamavService).to receive(:safe_file?).twice - - post :create, {dossier_id: dossier_id, - 'piece_justificative_'+all_pj_type[0].to_s => piece_justificative_0, - 'piece_justificative_'+all_pj_type[1].to_s => piece_justificative_1} - end - end - - context 'for piece 0' do - subject { dossier.retrieve_last_piece_justificative_by_type all_pj_type[0].to_s } - it { expect(subject.content).not_to be_nil } - it { expect(subject.user).to eq user } - end - context 'for piece 1' do - subject { dossier.retrieve_last_piece_justificative_by_type all_pj_type[1].to_s } - it { expect(subject.content).not_to be_nil } - it { expect(subject.user).to eq user } - end - end - end - - describe 'POST #pieces_justificatives', vcr: {cassette_name: 'controllers_users_description_controller_pieces_justificatives'} do - let(:all_pj_type) { dossier.procedure.type_de_piece_justificative_ids } - - subject { patch :pieces_justificatives, {dossier_id: dossier.id, - 'piece_justificative_'+all_pj_type[0].to_s => piece_justificative_0, - 'piece_justificative_'+all_pj_type[1].to_s => piece_justificative_1} } - - context 'when user is the owner' do - before do - sign_in user - end - - context 'when PJ have no documents' do - it { expect(dossier.pieces_justificatives.size).to eq 0 } - - context 'when upload two PJ' do - before do - subject - dossier.reload - end - - it { expect(dossier.pieces_justificatives.size).to eq 2 } - it { expect(flash[:notice]).to be_present } - it { is_expected.to redirect_to users_dossier_recapitulatif_path } - end - end - - context 'when PJ have already a document', vcr: {cassette_name: 'controllers_users_description_controller_pj_already_exist'} do - before do - create :piece_justificative, :rib, dossier: dossier, type_de_piece_justificative_id: all_pj_type[0] - create :piece_justificative, :contrat, dossier: dossier, type_de_piece_justificative_id: all_pj_type[1] - end - - it { expect(dossier.pieces_justificatives.size).to eq 2 } - - context 'when upload two PJ', vcr: {cassette_name: 'controllers_users_description_controller_pj_already_exist_upload_2pj'} do - before do - subject - dossier.reload - end - - it { expect(dossier.pieces_justificatives.size).to eq 4 } - it { expect(flash[:notice]).to be_present } - it { is_expected.to redirect_to users_dossier_recapitulatif_path } - end - end - - context 'when one of PJs is not valid' do - let(:piece_justificative_0) { Rack::Test::UploadedFile.new("./spec/support/files/entreprise.json", 'application/json') } - - it { expect(dossier.pieces_justificatives.size).to eq 0 } - - context 'when upload two PJ' do - before do - subject - dossier.reload - end - - it { expect(dossier.pieces_justificatives.size).to eq 1 } - it { expect(flash[:alert]).to be_present } - it { is_expected.to redirect_to users_dossier_recapitulatif_path } - end - end - end - - context 'when user is a guest' do - let(:guest) { create :user } - - before do - create :invite, dossier: dossier, email: guest.email, user: guest - - sign_in guest - end - - context 'when PJ have no documents' do - it { expect(dossier.pieces_justificatives.size).to eq 0 } - - context 'when upload two PJ' do - before do - subject - dossier.reload - end - - it { expect(dossier.pieces_justificatives.size).to eq 2 } - it { expect(flash[:notice]).to be_present } - it { is_expected.to redirect_to users_dossiers_invite_path(id: guest.invites.find_by_dossier_id(dossier.id).id) } - end - end - - context 'when PJ have already a document' do - before do - create :piece_justificative, :rib, dossier: dossier, type_de_piece_justificative_id: all_pj_type[0] - create :piece_justificative, :contrat, dossier: dossier, type_de_piece_justificative_id: all_pj_type[1] - end - - it { expect(dossier.pieces_justificatives.size).to eq 2 } - - context 'when upload two PJ', vcr: {cassette_name: 'controllers_users_description_controller_upload_2pj'} do - before do - subject - dossier.reload - end - - it { expect(dossier.pieces_justificatives.size).to eq 4 } - it { expect(flash[:notice]).to be_present } - it { is_expected.to redirect_to users_dossiers_invite_path(id: guest.invites.find_by_dossier_id(dossier.id).id) } - end - end - - context 'when one of PJs is not valid' do - let(:piece_justificative_0) { Rack::Test::UploadedFile.new("./spec/support/files/entreprise.json", 'application/json') } - - it { expect(dossier.pieces_justificatives.size).to eq 0 } - - context 'when upload two PJ' do - before do - subject - dossier.reload - end - - it { expect(dossier.pieces_justificatives.size).to eq 1 } - it { expect(flash[:alert]).to be_present } - it { is_expected.to redirect_to users_dossiers_invite_path(id: guest.invites.find_by_dossier_id(dossier.id).id) } - end - end - end + it_should_behave_like "description_controller_spec" end end diff --git a/spec/controllers/users_controller_spec.rb b/spec/controllers/users_controller_spec.rb index 9d483a0a4..eee59c898 100644 --- a/spec/controllers/users_controller_spec.rb +++ b/spec/controllers/users_controller_spec.rb @@ -1,55 +1,31 @@ require 'spec_helper' +require 'controllers/user_controller_shared_example' + describe UsersController, type: :controller do - describe '#current_user_dossier' do - let(:user) { create(:user) } - let(:dossier) { create(:dossier, user: user)} + let(:owner_user) { create(:user) } + let(:invite_user) { create :user, email: 'invite@plop.com' } + let(:not_invite_user) { create :user, email: 'not_invite@plop.com' } - before do - sign_in user + let(:dossier) { create(:dossier, user: owner_user) } + + context 'when user is the owner' do + before do + sign_in owner_user + end + + it_should_behave_like "current_user_dossier_spec" end - context 'when no dossier_id is filled' do - it { expect{ subject.current_user_dossier }.to raise_error } - end - - context 'when dossier_id is given as a param' do - context 'when dossier id is valid' do - it 'returns current user dossier' do - expect(subject.current_user_dossier dossier.id).to eq(dossier) - end + context 'when user is invite by the owner' do + before do + create :invite, email: invite_user.email, dossier: dossier, user: invite_user, type: 'InviteUser' + sign_in invite_user end - context 'when dossier id is incorrect' do - it { expect{ subject.current_user_dossier 1 }.to raise_error } - end - end - - context 'when no params[] is given' do - context 'when dossier id is valid' do - before do - subject.params[:dossier_id] = dossier.id - end - - it 'returns current user dossier' do - expect(subject.current_user_dossier).to eq(dossier) - end - end - - context 'when dossier id is incorrect' do - it { expect{ subject.current_user_dossier }.to raise_error } - end - - context 'when dossier_id is given as a param' do - before do - subject.params[:dossier_id] = 1 - end - - it 'returns dossier with the id on params past' do - expect(subject.current_user_dossier dossier.id).to eq(dossier) - end - end + it_should_behave_like "current_user_dossier_spec" end end -end \ No newline at end of file +end + diff --git a/spec/models/dossier_spec.rb b/spec/models/dossier_spec.rb index 21ac74bd0..24fa351e6 100644 --- a/spec/models/dossier_spec.rb +++ b/spec/models/dossier_spec.rb @@ -829,4 +829,31 @@ describe Dossier do it { expect(subject).to eq 2 } end end + + describe '#invite_by_user?' do + let(:dossier) { create :dossier } + let(:invite_user) { create :user, email: user_invite_email } + let(:invite_gestionnaire) { create :user, email: gestionnaire_invite_email } + let(:user_invite_email) { 'plup@plop.com' } + let(:gestionnaire_invite_email) { 'plap@plip.com' } + + before do + create :invite, dossier: dossier, user: invite_user, email: invite_user.email, type: 'InviteUser' + create :invite, dossier: dossier, user: invite_gestionnaire, email: invite_gestionnaire.email, type: 'InviteGestionnaire' + end + + subject { dossier.invite_by_user? email } + + context 'when email is present on invite list' do + let(:email) { user_invite_email } + + it { is_expected.to be_truthy } + end + + context 'when email is present on invite list' do + let(:email) { gestionnaire_invite_email } + + it { is_expected.to be_falsey } + end + end end diff --git a/spec/views/users/recapitulatif/show.html.haml_spec.rb b/spec/views/users/recapitulatif/show.html.haml_spec.rb index a687bb94e..f5a7bd92a 100644 --- a/spec/views/users/recapitulatif/show.html.haml_spec.rb +++ b/spec/views/users/recapitulatif/show.html.haml_spec.rb @@ -40,6 +40,12 @@ describe 'users/recapitulatif/show.html.haml', type: :view do end end + context 'lien carte' do + it 'le lien vers carte est présent' do + expect(rendered).to have_css('#maj_pj') + end + end + context 'lien carte' do it 'le lien vers carte est présent' do expect(rendered).to have_css('#maj_carte') @@ -169,43 +175,88 @@ describe 'users/recapitulatif/show.html.haml', type: :view do end context 'when invite is logged' do - let!(:invite_user) { create(:user, email: 'invite@octo.com') } - before do - create(:invite) { create(:invite, email: invite_user.email, user: invite_user, dossier: dossier) } - sign_out dossier.user - - sign_in invite_user - - render - end - - describe 'les liens de modifications' do - it 'describe link is not present' do - expect(rendered).not_to have_css('#maj_infos') - end - - it 'map link is not present' do - expect(rendered).not_to have_css('#maj_carte') - end - - it 'archive link is not present' do - expect(rendered).not_to have_content('Archiver') - end - end - - context 'when dossier is validated' do - let(:state) { 'validated' } + context 'when invite is by Gestionnaire' do + let!(:invite_user) { create(:user, email: 'invite@octo.com') } before do + create(:invite) { create(:invite, email: invite_user.email, user: invite_user, dossier: dossier) } + sign_out dossier.user + sign_in invite_user render end - it 'submitted link is not present' do - expect(rendered).not_to have_content('Déposer mon dossier') + describe 'les liens de modifications' do + it 'describe link is not present' do + expect(rendered).not_to have_css('#maj_infos') + end + + it 'map link is not present' do + expect(rendered).not_to have_css('#maj_carte') + end + + it 'PJ link is not present' do + expect(rendered).not_to have_css('#maj_pj') + end + + it 'archive link is not present' do + expect(rendered).not_to have_content('Archiver') + end + end + + context 'when dossier is validated' do + let(:state) { 'validated' } + + before do + render + end + + it 'submitted link is not present' do + expect(rendered).not_to have_content('Déposer mon dossier') + end end end + context 'invite is by User' do + let!(:invite_user) { create(:user, email: 'invite@octo.com') } + + before do + create(:invite) { create(:invite, email: invite_user.email, user: invite_user, dossier: dossier, type: 'InviteUser') } + sign_out dossier.user + sign_in invite_user + render + end + + describe 'les liens de modifications' do + it 'describe link is not present' do + expect(rendered).to have_css('#maj_infos') + end + + it 'map link is present' do + expect(rendered).to have_css('#maj_carte') + end + + it 'PJ link is present' do + expect(rendered).to have_css('#maj_pj') + end + + it 'archive link is present' do + expect(rendered).not_to have_content('Archiver') + end + end + + context 'when dossier is validated' do + let(:state) { 'validated' } + + before do + render + end + + it 'submitted link is not present' do + expect(rendered).not_to have_content('Déposer mon dossier') + end + end + end end end end From 3014c4c5394ca6d8ce81c0f47bfd76cffda82816 Mon Sep 17 00:00:00 2001 From: Xavier J Date: Wed, 14 Sep 2016 16:57:51 +0200 Subject: [PATCH 48/53] Change word "Instruction" to "Examen" --- app/views/backoffice/dossiers/_onglets.html.haml | 2 +- .../backoffice/dossiers/_state_description.html.haml | 4 ++-- app/views/cgu/index.html.haml | 8 ++++---- app/views/users/dossiers/_onglets.html.haml | 6 +++--- app/views/users/dossiers/_state_description.html.haml | 6 +++--- spec/features/users/onglets_link_spec.rb | 4 ++-- spec/views/users/dossiers/index_html.haml_spec.rb | 2 +- 7 files changed, 16 insertions(+), 16 deletions(-) diff --git a/app/views/backoffice/dossiers/_onglets.html.haml b/app/views/backoffice/dossiers/_onglets.html.haml index cb69ef779..d19724455 100644 --- a/app/views/backoffice/dossiers/_onglets.html.haml +++ b/app/views/backoffice/dossiers/_onglets.html.haml @@ -32,7 +32,7 @@ =@dossiers_list_facade.en_attente_total %li{ class: (@dossiers_list_facade.deposes_class) } - %a{:href => "#{url_for @dossiers_list_facade.deposes_url}", 'data-toggle' => :tooltip, title: 'Les dossiers qui ont été validés et déposés par les usager qui attendent une réponse de bonne réception avant instruction.'} + %a{:href => "#{url_for @dossiers_list_facade.deposes_url}", 'data-toggle' => :tooltip, title: 'Les dossiers qui ont été validés et déposés par les usager qui attendent une réponse de bonne réception avant examen.'} %h5.text-purple ="À réceptionner" .badge.progress-bar-purple diff --git a/app/views/backoffice/dossiers/_state_description.html.haml b/app/views/backoffice/dossiers/_state_description.html.haml index e1cf22e9c..13d1cf58f 100644 --- a/app/views/backoffice/dossiers/_state_description.html.haml +++ b/app/views/backoffice/dossiers/_state_description.html.haml @@ -20,8 +20,8 @@ -elsif dossiers_list_facade.liste == 'deposes' Tous les dossiers présents dans cette liste ont été %b - officiellement déposé par l'usager pour instruction. - Il faut donc que vous confirmiez par "accusé de réception" la bonne réception de toutes les informations et documents demandés avant instruction finale. + officiellement déposé par l'usager pour examen. + Il faut donc que vous confirmiez par "accusé de réception" la bonne réception de toutes les informations et documents demandés avant examen final. -elsif dossiers_list_facade.liste == 'a_instruire' Tous les dossiers présents dans cette liste sont à instruire. Ceux sont tous les dossiers %b diff --git a/app/views/cgu/index.html.haml b/app/views/cgu/index.html.haml index 7e8525f5c..0983ef0d5 100644 --- a/app/views/cgu/index.html.haml +++ b/app/views/cgu/index.html.haml @@ -43,7 +43,7 @@ %a{:href => "https://tps.apientreprise.fr/"} %strong tps.apientreprise.fr %p - Le site internet tps.apientreprise.fr a pour objet de faciliter la création de démarches administratives en ligne par les acteurs publics, et l’instruction par plusieurs services des demandes formulées par les usagers auprès d’un ou organismes publics. + Le site internet tps.apientreprise.fr a pour objet de faciliter la création de démarches administratives en ligne par les acteurs publics, et l’examen par plusieurs services des demandes formulées par les usagers auprès d’un ou organismes publics. %br %h3 Acteurs de @@ -68,8 +68,8 @@ %h3 Données collectées et responsabilité des organismes publics à l’initiative de démarches en ligne avec TPS. %p Les données collectées par le service sont définis par les services publics utilisateurs du service qui arrêtent, sous leur responsabilité, la liste des informations qui seront demandées à l’usager. -%p Les organismes publics s’engagent à créer des démarches pour collecter les informations strictement nécessaires à l’instruction des demandes formulées auprès des acteurs publics, dans le cadre juridique prévu par chacune des démarches. -%p Ces données sont collectées et traitées par les seuls services concernés par l’instruction des demandes, et précisées dans la notice d’utilisation de chaque démarche publiée par l’organisme public. +%p Les organismes publics s’engagent à créer des démarches pour collecter les informations strictement nécessaires à l’examen des demandes formulées auprès des acteurs publics, dans le cadre juridique prévu par chacune des démarches. +%p Ces données sont collectées et traitées par les seuls services concernés par l’examen des demandes, et précisées dans la notice d’utilisation de chaque démarche publiée par l’organisme public. %br %h3 Traitement des données à caractère personnel @@ -108,7 +108,7 @@ %br/ 94300 VINCENNES %p - Les informations transmises aux autorités publiques en charges de l’instruction de dossiers de candidature sont définis par le service en ligne suivant proposé aux internautes : + Les informations transmises aux autorités publiques en charges de l’examen de dossiers de candidature sont définis par le service en ligne suivant proposé aux internautes : %a{:href => "https://www.infogreffe.fr/societes/documents-officiels/demande-kbis.html"} https://www.infogreffe.fr/societes/documents-officiels/demande-kbis.html %p %a{:href => "https://www.infogreffe.fr/societes/cgu-cgv.html"} Conditions générales d’utilisation des données d’infogreffe diff --git a/app/views/users/dossiers/_onglets.html.haml b/app/views/users/dossiers/_onglets.html.haml index 196d9571f..86e2c86a2 100644 --- a/app/views/users/dossiers/_onglets.html.haml +++ b/app/views/users/dossiers/_onglets.html.haml @@ -25,16 +25,16 @@ = @dossiers_list_facade.en_attente_total %li{ class: @dossiers_list_facade.valides_class } - %a{:href => "#{url_for users_dossiers_path(liste: 'valides')}", 'data-toggle' => :tooltip, title: 'Les dossiers relus par votre accompagnateur pouvant être déposés pour instruction.'} + %a{:href => "#{url_for users_dossiers_path(liste: 'valides')}", 'data-toggle' => :tooltip, title: 'Les dossiers relus par votre accompagnateur pouvant être déposés pour examen.'} %h5.text-purple ="À déposer" .badge.progress-bar-purple = @dossiers_list_facade.valides_total %li{ class: @dossiers_list_facade.en_instruction_class } - %a{:href => "#{url_for users_dossiers_path(liste: 'en_instruction')}", 'data-toggle' => :tooltip, title: 'Les dossiers en cours d\'instruction par l\'administration compétante.'} + %a{:href => "#{url_for users_dossiers_path(liste: 'en_instruction')}", 'data-toggle' => :tooltip, title: 'Les dossiers en cours d\'examen par l\'administration compétante.'} %h5.text-default - ="En instruction" + ="En examen" .badge.progress-bar-default = @dossiers_list_facade.en_instruction_total diff --git a/app/views/users/dossiers/_state_description.html.haml b/app/views/users/dossiers/_state_description.html.haml index d76a583b9..be8f477e4 100644 --- a/app/views/users/dossiers/_state_description.html.haml +++ b/app/views/users/dossiers/_state_description.html.haml @@ -19,19 +19,19 @@ Les dossiers présents dans cette liste sont %b en cours de relecture par votre accompagnateur. - Il reviendra vers vous si des informations ou documents sont manquants pour la future instruction de votre dossier. + Il reviendra vers vous si des informations ou documents sont manquants pour le futur examen de votre dossier. -elsif dossiers_list_facade.liste == 'valides' Les dossiers présents dans cette liste ont été %b relus et considérés comme complet - pour instruction par votre accompagnateur. Ceux-ci ne peuvent maintenant plus être modifié. Il faut que vous procédiez à leurs dépôts afin qu'une décision finale soit rendue. + pour examen par votre accompagnateur. Ceux-ci ne peuvent maintenant plus être modifié. Il faut que vous procédiez à leurs dépôts afin qu'une décision finale soit rendue. -elsif dossiers_list_facade.liste == 'en_instruction' Les dossiers présents dans cette liste sont %b en cours de réception ou %b - en cours d'instruction + en cours d'examen par l'administration compétente. Une notification vous sera envoyée une fois qu'une décision aura été rendue. -elsif dossiers_list_facade.liste == 'termine' Les dossiers présents dans cette liste sont ceux qui ont été instruits par l'admnistration et diff --git a/spec/features/users/onglets_link_spec.rb b/spec/features/users/onglets_link_spec.rb index 4e2220a40..f2cb8c7b3 100644 --- a/spec/features/users/onglets_link_spec.rb +++ b/spec/features/users/onglets_link_spec.rb @@ -66,10 +66,10 @@ feature 'on click on tabs button' do end end - context 'when he click on tabs en instruction' do + context 'when he click on tabs en examen' do before do visit users_dossiers_url(liste: :en_instruction) - page.click_on 'En instruction 2' + page.click_on 'En examen 2' end scenario 'it redirect to users dossier termine' do diff --git a/spec/views/users/dossiers/index_html.haml_spec.rb b/spec/views/users/dossiers/index_html.haml_spec.rb index 617cb3276..bb3eed747 100644 --- a/spec/views/users/dossiers/index_html.haml_spec.rb +++ b/spec/views/users/dossiers/index_html.haml_spec.rb @@ -90,7 +90,7 @@ describe 'users/dossiers/index.html.haml', type: :view do end end - describe 'on tab etude en instruction' do + describe 'on tab etude en examen' do let(:total_dossiers) { 2 } let(:active_class) { '.active .text-default' } let(:dossiers_to_display) { user.dossiers.en_instruction } From cd4848a91608f305055a67c560518741f7fd2ced Mon Sep 17 00:00:00 2001 From: Xavier J Date: Wed, 14 Sep 2016 18:34:19 +0200 Subject: [PATCH 49/53] Update Gems Devise and Uglifier for security alert --- Gemfile | 2 +- Gemfile.lock | 19 +++++++++---------- 2 files changed, 10 insertions(+), 11 deletions(-) diff --git a/Gemfile b/Gemfile index 74ec148d8..7ae9eeaf0 100644 --- a/Gemfile +++ b/Gemfile @@ -50,7 +50,7 @@ gem 'will_paginate-bootstrap' gem 'draper' #Gestion des comptes utilisateurs -gem 'devise' +gem 'devise', '~> 3.0' gem 'openid_connect' gem 'rest-client' diff --git a/Gemfile.lock b/Gemfile.lock index a9ac8e9f2..a5430abe3 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -62,7 +62,7 @@ GEM autoprefixer-rails (5.2.1) execjs json - bcrypt (3.1.10) + bcrypt (3.1.11) bindata (2.1.0) binding_of_caller (0.7.2) debug_inspector (>= 0.0.1) @@ -119,7 +119,7 @@ GEM debug_inspector (0.0.2) deep_cloneable (2.2.1) activerecord (>= 3.1.0, < 5.2.0) - devise (3.4.1) + devise (3.5.10) bcrypt (~> 3.0) orm_adapter (~> 0.1) railties (>= 3.2.6, < 5) @@ -141,7 +141,7 @@ GEM erubis (2.7.0) eventmachine (1.0.8) excon (0.49.0) - execjs (2.5.2) + execjs (2.7.0) factory_girl (4.5.0) activesupport (>= 3.0.0) faraday (0.9.1) @@ -461,8 +461,8 @@ GEM json (~> 1.4) ref (2.0.0) request_store (1.1.0) - responders (2.1.0) - railties (>= 4.2.0, < 5) + responders (2.3.0) + railties (>= 4.2.0, < 5.1) rest-client (1.8.0) http-cookie (>= 1.0.2, < 2.0) mime-types (>= 1.16, < 3.0) @@ -574,9 +574,8 @@ GEM coffee-rails tzinfo (1.2.2) thread_safe (~> 0.1) - uglifier (2.7.1) - execjs (>= 0.3.0) - json (>= 1.8.0) + uglifier (3.0.2) + execjs (>= 0.3.0, < 3) unf (0.1.4) unf_ext unf_ext (0.0.7.1) @@ -592,7 +591,7 @@ GEM activemodel (>= 3.0.0) addressable vcr (3.0.1) - warden (1.2.3) + warden (1.2.6) rack (>= 1.0) web-console (2.2.1) activemodel (>= 4.0) @@ -636,7 +635,7 @@ DEPENDENCIES coffee-rails (~> 4.1.0) database_cleaner deep_cloneable (~> 2.2.1) - devise + devise (~> 3.0) draper factory_girl fog From ccd9c0898d7bb941c723109ce2bd59258248d05f Mon Sep 17 00:00:00 2001 From: Xavier J Date: Fri, 16 Sep 2016 15:40:30 +0200 Subject: [PATCH 50/53] Fix test with cloud storage enabled --- config/initializers/features.yml | 2 +- spec/controllers/users/description_controller_shared_example.rb | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/config/initializers/features.yml b/config/initializers/features.yml index e91fb5346..22e2c5e0d 100644 --- a/config/initializers/features.yml +++ b/config/initializers/features.yml @@ -1 +1 @@ -remote_storage: false +remote_storage: true diff --git a/spec/controllers/users/description_controller_shared_example.rb b/spec/controllers/users/description_controller_shared_example.rb index b11cb12bb..ea3d42e9b 100644 --- a/spec/controllers/users/description_controller_shared_example.rb +++ b/spec/controllers/users/description_controller_shared_example.rb @@ -285,7 +285,7 @@ shared_examples 'description_controller_spec_POST_piece_justificatives_for_owner 'piece_justificative_'+all_pj_type[0].to_s => piece_justificative_0, 'piece_justificative_'+all_pj_type[1].to_s => piece_justificative_1} } - context 'when user is the owner' do + context 'when user is the owner', vcr: {cassette_name: 'controllers_users_description_controller_pieces_justificatives'} do before do sign_in user end From 9332c0f6ed00f16e4cfe901e024c8fec38b8789a Mon Sep 17 00:00:00 2001 From: Xavier J Date: Fri, 16 Sep 2016 16:29:34 +0200 Subject: [PATCH 51/53] Fix brakeman test --- app/views/dossiers/etapes/_etape1.html.haml | 3 ++- app/views/notification_mailer/dossier_received.html.erb | 2 +- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/app/views/dossiers/etapes/_etape1.html.haml b/app/views/dossiers/etapes/_etape1.html.haml index 70c1e11fb..f9de0d764 100644 --- a/app/views/dossiers/etapes/_etape1.html.haml +++ b/app/views/dossiers/etapes/_etape1.html.haml @@ -21,4 +21,5 @@ - unless @facade.procedure.lien_site_web.blank? .center - =link_to 'En savoir plus ...', @facade.procedure.lien_site_web, {target: '_blank'} \ No newline at end of file + %a{href: "#{@facade.procedure.lien_site_web.html_safe}", target: '_blank'} + En savoir plus ... \ No newline at end of file diff --git a/app/views/notification_mailer/dossier_received.html.erb b/app/views/notification_mailer/dossier_received.html.erb index 9064120b6..4bcdc394f 100644 --- a/app/views/notification_mailer/dossier_received.html.erb +++ b/app/views/notification_mailer/dossier_received.html.erb @@ -1 +1 @@ -<%= (MailTemplate.replace_tags @dossier.procedure.mail_received.body, @dossier).html_safe %> \ No newline at end of file +<%= escape_once (MailTemplate.replace_tags @dossier.procedure.mail_received.body, @dossier).html_safe %> \ No newline at end of file From bd89688346c9a07f7ea3989c2639546694d1f7d8 Mon Sep 17 00:00:00 2001 From: Xavier J Date: Fri, 16 Sep 2016 17:08:50 +0200 Subject: [PATCH 52/53] Fix test INSEE v2 get etablissement view --- app/assets/javascripts/dossiers.js | 7 ++++++- app/services/dossier_service.rb | 6 +++++- lib/siade/etablissement_adapter.rb | 2 ++ 3 files changed, 13 insertions(+), 2 deletions(-) diff --git a/app/assets/javascripts/dossiers.js b/app/assets/javascripts/dossiers.js index 0307b5a63..e65a0da9e 100644 --- a/app/assets/javascripts/dossiers.js +++ b/app/assets/javascripts/dossiers.js @@ -23,7 +23,12 @@ function the_terms() { } function error_form_siret(invalid_siret){ - $("input[type='submit']").removeClass('btn-success').addClass('btn-danger').val('Erreur SIRET'); + setTimeout(function(){ + $("input[type='submit']").val('Erreur SIRET'); + }, 10); + + $("input[type='submit']").removeClass('btn-success').addClass('btn-danger'); + $("#dossier_siret").addClass('input-error').val(invalid_siret).on('input', reset_form_siret); } diff --git a/app/services/dossier_service.rb b/app/services/dossier_service.rb index e086c3657..01c1fc6a0 100644 --- a/app/services/dossier_service.rb +++ b/app/services/dossier_service.rb @@ -13,9 +13,13 @@ class DossierService raise RestClient::ResourceNotFound end - @dossier.create_entreprise(@entreprise_adapter.to_params) @etablissement_adapter = SIADE::EtablissementAdapter.new(@siret) + if @etablissement_adapter.to_params.nil? + raise RestClient::ResourceNotFound + end + + @dossier.create_entreprise(@entreprise_adapter.to_params) @dossier.create_etablissement(@etablissement_adapter.to_params) @rna_adapter = SIADE::RNAAdapter.new(@siret) diff --git a/lib/siade/etablissement_adapter.rb b/lib/siade/etablissement_adapter.rb index b03c3d821..72c0052e0 100644 --- a/lib/siade/etablissement_adapter.rb +++ b/lib/siade/etablissement_adapter.rb @@ -18,6 +18,8 @@ class SIADE::EtablissementAdapter params[k] = v if address_attribut_to_fetch.include?(k) end params + rescue + nil end def attr_to_fetch From 5fb678e53bc3d54b5dd6f15a44d9a10bb8e83d6a Mon Sep 17 00:00:00 2001 From: Xavier J Date: Fri, 16 Sep 2016 17:18:29 +0200 Subject: [PATCH 53/53] Fix test --- spec/lib/siade/etablissement_adapter_spec.rb | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/spec/lib/siade/etablissement_adapter_spec.rb b/spec/lib/siade/etablissement_adapter_spec.rb index 82d0191ad..6d6257773 100644 --- a/spec/lib/siade/etablissement_adapter_spec.rb +++ b/spec/lib/siade/etablissement_adapter_spec.rb @@ -7,7 +7,7 @@ describe SIADE::EtablissementAdapter do before do stub_request(:get, "https://api-dev.apientreprise.fr/v2/etablissements/#{siret}?token=#{SIADETOKEN}") - .to_return(body: File.read('spec/support/files/etablissement.json', status: 200)) + .to_return(body: File.read('spec/support/files/etablissement.json', status: 200)) end it '#to_params class est une Hash ?' do @@ -74,11 +74,9 @@ describe SIADE::EtablissementAdapter do before do stub_request(:get, "https://api-dev.apientreprise.fr/v2/etablissements/#{bad_siret}?token=#{SIADETOKEN}") - .to_return(body: 'Fake body', status: 404) + .to_return(body: 'Fake body', status: 404) end - it 'raises exception RestClient::ResourceNotFound' do - expect { subject }.to raise_error(RestClient::ResourceNotFound) - end + it { expect(subject).to be_nil } end end