From 1f340e96faaa3d9b29860b488e9f45ce84a2f02a Mon Sep 17 00:00:00 2001 From: Kevin Adametz Date: Sat, 20 Jul 2019 15:55:00 +0200 Subject: [PATCH] Tree Travel Guide --- .env | 8 + .idea/workspace.xml | 1077 +++++++++-------- .phpstorm.meta.php | 2 +- _ide_helper.php | 2 +- _ide_helper_models.php | 97 +- .../CMS/CMSTravelGuideController.php | 7 +- .../Controllers/IQ/ContentModalController.php | 274 +++++ .../Controllers/IQ/ContentTreeController.php | 257 ++++ app/Models/Account.php | 3 + app/Models/Booking.php | 3 + app/Models/BookingDraftItem.php | 3 + app/Models/CMSContent.php | 3 + app/Models/Country.php | 3 + app/Models/Draft.php | 3 + app/Models/DraftItem.php | 3 + app/Models/DraftType.php | 3 + app/Models/Feedback.php | 5 + app/Models/FewoLodging.php | 27 +- app/Models/FewoLodgingGroup.php | 5 + app/Models/FewoLodgingGroupImage.php | 10 + app/Models/FewoLodgingImage.php | 9 + app/Models/FewoLodgingType.php | 5 + app/Models/FewoPrice.php | 8 + app/Models/FewoReservation.php | 9 + app/Models/FewoSeason.php | 10 + app/Models/IQContentTree.php | 86 ++ app/Models/IQContentTreeNode.php | 127 ++ app/Models/Lead.php | 3 + app/Models/Page.php | 5 + app/Models/SfGuardUser.php | 3 + app/Models/SidebarWidget.php | 3 + app/Models/Status.php | 3 + app/Models/Sym/Arrangement.php | 3 + app/Models/Sym/ArrangementTemplate.php | 3 + app/Models/Sym/TravelCountry.php | 3 + app/Models/TravelAgenda.php | 3 + app/Models/TravelBookingFewoChannel.php | 7 + app/Models/TravelClass.php | 3 + app/Models/TravelCountry.php | 3 + app/Models/TravelGuide.php | 37 +- app/Models/TravelNationality.php | 3 + app/Models/TravelNationalityRequirement.php | 3 + app/Models/TravelPageGuide.php | 103 +- app/Models/TravelProgram.php | 3 + app/Models/TravelProgramCountry.php | 3 + app/Models/TravelProgramDraft.php | 3 + app/Models/TravelUser.php | 23 + app/Models/TravelUserBookingFewo.php | 52 +- app/Models/UserUpdateEmail.php | 11 + app/Repositories/IQ/ContentSiteRepository.php | 103 ++ app/Services/HTMLTreeHelper.php | 189 +++ app/User.php | 5 + app/helpers.php | 60 + config/mail.php | 4 +- ...3_11_094922_create_travel_guides_table.php | 10 + ..._155842_create_i_q_content_trees_table.php | 46 + ...53_create_i_q_content_tree_nodes_table.php | 67 + public/css/application.css | 102 ++ public/js/custom.js | 295 ++--- .../views/cms/travel_guide/detail.blade.php | 4 + .../cms/travel_guide/tree-detail.blade.php | 276 +++++ .../views/cms/travel_guide/tree.blade.php | 90 ++ resources/views/emails/___auth.blade.php | 237 ++++ resources/views/emails/_auth.blade.php | 968 +++++++++++---- resources/views/emails/auth.blade.php | 34 +- resources/views/emails/auth_plain.blade.php | 31 + resources/views/emails/content.blade.php | 46 +- resources/views/emails/info.blade.php | 28 - resources/views/emails/invoice.blade.php | 40 - resources/views/iq/modal/content.blade.php | 44 + resources/views/iq/modal/site.blade.php | 32 + resources/views/iq/modal/tree-node.blade.php | 45 + resources/views/layouts/application.blade.php | 18 + .../layouts/includes/layout-sidenav.blade.php | 7 +- routes/web.php | 47 +- .../fewo/infos/2019/Anreiseinfo-1231433.pdf | Bin 0 -> 9628 bytes storage/app/fewo/invoices/2019/1231433.pdf | Bin 0 -> 10850 bytes storage/app/fewo/invoices/2019/1234556.pdf | Bin 0 -> 10850 bytes 78 files changed, 4133 insertions(+), 1027 deletions(-) create mode 100755 app/Http/Controllers/IQ/ContentModalController.php create mode 100755 app/Http/Controllers/IQ/ContentTreeController.php create mode 100644 app/Models/IQContentTree.php create mode 100644 app/Models/IQContentTreeNode.php create mode 100644 app/Repositories/IQ/ContentSiteRepository.php create mode 100644 app/Services/HTMLTreeHelper.php create mode 100644 database/migrations/2019_07_19_155842_create_i_q_content_trees_table.php create mode 100644 database/migrations/2019_07_19_155853_create_i_q_content_tree_nodes_table.php create mode 100755 resources/views/cms/travel_guide/tree-detail.blade.php create mode 100755 resources/views/cms/travel_guide/tree.blade.php create mode 100644 resources/views/emails/___auth.blade.php create mode 100644 resources/views/emails/auth_plain.blade.php create mode 100644 resources/views/iq/modal/content.blade.php create mode 100644 resources/views/iq/modal/site.blade.php create mode 100644 resources/views/iq/modal/tree-node.blade.php create mode 100644 storage/app/fewo/infos/2019/Anreiseinfo-1231433.pdf create mode 100644 storage/app/fewo/invoices/2019/1231433.pdf create mode 100644 storage/app/fewo/invoices/2019/1234556.pdf diff --git a/.env b/.env index fcd44b8..e44c26b 100755 --- a/.env +++ b/.env @@ -53,6 +53,7 @@ MAIL_BBC=kevin@adametz.media MAIL_FEWO_EMPLOYEE=kevin@adametz.media #MAIL_FEWO_EMPLOYEE=katrin.nikolai@stern-tours.de,gerda.fritsch@stern-tours.de #MAIL_BBC=kontakt@stern-tours.de,thomas.stern@stern-tours.de +MAIL_FROM_ADDRESS=info@mein.sterntours.de MAIL_DRIVER=smtp MAIL_HOST=mail.your-server.de MAIL_PORT=587 @@ -60,6 +61,13 @@ MAIL_USERNAME=info@mein.sterntours.de MAIL_PASSWORD=B7f8Ojt98v6tMz8W MAIL_ENCRYPTION=TLS +#MAIL_FROM_ADDRESS=stern@stern-tours.de +#MAIL_HOST=zimbra.managedemail.de +#MAIL_PORT=587 +#MAIL_USERNAME=stern@stern-tours.de +#MAIL_PASSWORD=bMzG8aYHjTCN0IsKCp +#MAIL_ENCRYPTION=TLS + PUSHER_APP_ID= PUSHER_APP_KEY= diff --git a/.idea/workspace.xml b/.idea/workspace.xml index 387d774..abc7dd2 100644 --- a/.idea/workspace.xml +++ b/.idea/workspace.xml @@ -2,32 +2,75 @@ - - - - - + + + + + + + + + + - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - + + + + + + + + + + + + + - - - @@ -77,108 +120,169 @@ + + + + + '.$label.' + '; + + } +} + +if (! function_exists('get_file_last_time')) { + function get_file_last_time($value) + { + if (file_exists($value)) { + return filemtime($value); + } + return date("Ymd-i", time()); + } } \ No newline at end of file diff --git a/config/mail.php b/config/mail.php index ae991ba..09b3546 100755 --- a/config/mail.php +++ b/config/mail.php @@ -29,7 +29,7 @@ return [ | */ - 'host' => env('MAIL_HOST', 'mail.your-server.de'), + 'host' => env('MAIL_HOST', 'zimbra.managedemail.de'), /* |-------------------------------------------------------------------------- @@ -56,7 +56,7 @@ return [ */ 'from' => [ - 'address' => env('MAIL_FROM_ADDRESS', 'info@mein.sterntours.de'), + 'address' => env('MAIL_FROM_ADDRESS', 'stern@stern-tours.de'), 'name' => env('MAIL_FROM_NAME', 'Mein Stern-Tours'), ], 'mail_bbc' => explode(',', env('MAIL_BBC', 'kontakt@stern-tours.de')), diff --git a/database/migrations/2019_03_11_094922_create_travel_guides_table.php b/database/migrations/2019_03_11_094922_create_travel_guides_table.php index e152c68..9a8c4b9 100644 --- a/database/migrations/2019_03_11_094922_create_travel_guides_table.php +++ b/database/migrations/2019_03_11_094922_create_travel_guides_table.php @@ -16,11 +16,16 @@ class CreateTravelGuidesTable extends Migration Schema::connection('mysql_stern')->create('travel_guides', function (Blueprint $table) { $table->increments('id'); + + $table->unsignedBigInteger('tree_node_id'); + $table->string('name'); $table->string('slug')->index()->unique(); $table->string('text')->nullable(); $table->text('full_text')->nullable(); + $table->string('keyword')->nullable(); + $table->string('meta_title')->nullable(); $table->string('meta_description')->nullable(); @@ -31,6 +36,11 @@ class CreateTravelGuidesTable extends Migration $table->boolean('active')->default(true); $table->timestamps(); + + $table->foreign('tree_node_id') + ->references('id') + ->on('i_q_content_tree_nodes'); + }); } diff --git a/database/migrations/2019_07_19_155842_create_i_q_content_trees_table.php b/database/migrations/2019_07_19_155842_create_i_q_content_trees_table.php new file mode 100644 index 0000000..cdefa96 --- /dev/null +++ b/database/migrations/2019_07_19_155842_create_i_q_content_trees_table.php @@ -0,0 +1,46 @@ +create('i_q_content_trees', function (Blueprint $table) { + $table->bigIncrements('id'); + + + $table->string('name', 64)->index(); + $table->string('identifier', 80)->index(); + $table->string('slug', 80)->index()->unique(); + $table->string('description')->nullable(); + + $table->text('settings')->nullable(); + $table->unsignedTinyInteger('pos')->default(0); + + $table->boolean('active')->default(true); + + $table->timestamps(); + $table->softDeletes(); + + + }); + } + + /** + * Reverse the migrations. + * + * @return void + */ + public function down() + { + Schema::connection('mysql_stern')->dropIfExists('i_q_content_trees'); + } +} diff --git a/database/migrations/2019_07_19_155853_create_i_q_content_tree_nodes_table.php b/database/migrations/2019_07_19_155853_create_i_q_content_tree_nodes_table.php new file mode 100644 index 0000000..5e06c92 --- /dev/null +++ b/database/migrations/2019_07_19_155853_create_i_q_content_tree_nodes_table.php @@ -0,0 +1,67 @@ +create('i_q_content_tree_nodes', function (Blueprint $table) { + $table->bigIncrements('id'); + + //from tree + $table->unsignedBigInteger('tree_id'); + + //parent node + $table->unsignedBigInteger('parent_id')->index()->nullable(); + $table->unsignedTinyInteger('lvl')->index()->default(0); + + //used site + // $table->unsignedBigInteger('site_id'); + + $table->string('name', 64)->index(); + $table->string('identifier', 80)->index(); + $table->string('slug', 80)->index()->unique(); + $table->string('description')->nullable(); + + $table->text('settings')->nullable(); + $table->unsignedTinyInteger('pos')->default(0); + + $table->boolean('active')->default(true); + + $table->timestamps(); + $table->softDeletes(); + + + $table->foreign('tree_id') + ->references('id') + ->on('i_q_content_trees'); + + $table->foreign('parent_id') + ->references('id') + ->on('i_q_content_tree_nodes'); + + /*$table->foreign('site_id') + ->references('id') + ->on('i_q_content_sites'); + */ + }); + } + + /** + * Reverse the migrations. + * + * @return void + */ + public function down() + { + Schema::connection('mysql_stern')->dropIfExists('i_q_content_tree_nodes'); + } +} diff --git a/public/css/application.css b/public/css/application.css index 0182942..dd4ffe7 100644 --- a/public/css/application.css +++ b/public/css/application.css @@ -97,4 +97,106 @@ margin: 0; } +/* Custom drag handle */ +.dd-custom-drag-handle .dd-handle { + border: 0; + float: left; + margin: 1px; + font-size: 0.9rem; + line-height: 1.25rem; +} +.dd-custom-drag-handle .dd-handle>* { + vertical-align: middle; +} +[dir=rtl] .dd-custom-drag-handle .dd-handle { + float: right; +} +.dd-item > button:before { + content: '\f284'; + +} +.dd-item > button[data-action="collapse"]:before { + content: '\f280'; +} +.dd-item > button { + display: inline-block; + font-size: 1.4rem; + text-transform: none; + font-weight: normal; + font-style: normal; + font-variant: normal; + font-family: "Ionicons"; + line-height: 1; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; + speak: none; + text-rendering: auto +} +.alert ul { + margin-bottom: 0; +} + +.dragula-example { + margin-bottom: 6px; + border: 1px dotted #d6d6d6; +} + +.sortable-example { + margin: 0; + padding: 0; +} + +.sortable-example li { + padding: 6px 10px; + margin-bottom: 8px; + list-style: none; +} + +.sortable-example-inline li { + margin-right: 8px; + display: inline-block; +} + +[dir=rtl] .sortable-example-inline li { + margin-right: 0; + margin-left: 8px; +} + +#sortable-3 { + width: 220px; +} + +#sortable-3 img { + margin-right: 8px; + margin-bottom: 8px; + width: 100px; + height: 100px; + border-radius: 999px; + display: block; + float: left; +} + +.card-header { + border-bottom: 1px solid rgba(115, 113, 150, 0.50); + +} + +.modal-header { + padding-bottom: 10px; + border-bottom: 1px solid rgba(115, 113, 150, 0.50); + +} +.modal-footer { + padding-top: 10px; + border-top: 1px solid rgba(115, 113, 150, 0.50); + +} + + +@media (min-width: 768px) { + .default-style .messages-sidebox.large { + -ms-flex-preferred-size: 23rem; + flex-basis: 23rem; + } +} \ No newline at end of file diff --git a/public/js/custom.js b/public/js/custom.js index 16c8f96..b35590d 100644 --- a/public/js/custom.js +++ b/public/js/custom.js @@ -1,6 +1,129 @@ +// Nestable +$('.iq-save-bar').closest('form').find(':input, select, textarea').change(function() { + showIqSaveBar($(this).closest('form')); +}); + +$('.iq-save-bar').closest('form').find(':input, select, textarea').keydown(function() { + showIqSaveBar($(this).closest('form')); +}); + + +function showIqSaveBar(form){ + if(!$(form).data('save-bar')){ + $(form).find('.iq-save-bar').show(300); + $(form).data('save-bar', 1) + } +} + +$(function() { + if($('#netstable-content-tree').length){ + + function updateNetstableOutput(e) { + + var list = e.length ? e : $(e.target); + var output = list.data('output'); + + output.val(window.JSON ? window.JSON.stringify(list.nestable('serialize')) : + 'JSON browser support required for this demo.'); + }; + + $('#netstable-content-tree').nestable(); + + $('#netstable-content-tree').nestable().on('change', function(){ + showIqSaveBar($('#netstable-content-tree').closest('form')); + updateNetstableOutput($('#netstable-content-tree')); + }); + + // output initial serialised data + updateNetstableOutput($('#netstable-content-tree').data('output', $('#nestable-output'))); + + $('#nestable-menu-collapse').on('click', function(e) { + $('.dd').nestable('collapseAll'); + }); + $('#nestable-menu-expand').on('click', function(e) { + $('.dd').nestable('expandAll'); + }); + } +}); + +$(function() { + // Drag handle + dragula([$('#dragula-drag-handles')[0]], { + moves: function (el, container, handle) { + showIqSaveBar(el.closest('form')); + return handle.classList.contains('handle'); + }, + }); +}); + $(function () { - // $('.selectpicker').selectpicker(); - // $('[data-toggle="tooltip"]').tooltip(); + function initModalInner() { + $('[data-toggle="reloadModal"]').off().on('click', function(event) { + event.preventDefault(); + button = $(this); + var data = {}; + data.id = button.data('id'); + data.model = button.data('model'); + data.action = button.data('action'); + data.request = button.data('request'); + data.route = button.data('route'); + data.target = button.data('target'); + console.log(data); + loadModalInner(this, data); + }); + + } + function loadModalInner(self, data){ + + var url = data.route, + contentType = 'application/x-www-form-urlencoded; charset=UTF-8'; + $.ajax({ + url: url, + data: data, + type: "POST", + dataType: "json", + cache: false, + contentType: contentType, + encode: true, + headers: { + 'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content') + }, + success: function(data) { + console.log(data); + $(data.response.target).find('.modal-dialog').html(data.html); + $('.selectpicker').selectpicker('refresh'); + initModalInner(); + }, + error: function(xhr, status, errorThrown) { + console.log(xhr); + console.log(xhr.responseText); + console.log(errorThrown); + console.log("Sorry, there was a problem!"); + } + }); + return false; + } + + + + + + $('#modals-load-content').on('show.bs.modal', function (event) { + var button = $(event.relatedTarget); + if (!button.data('id')) { + return; + } + var data = {}; + data.id = button.data('id'); + data.model = button.data('model'); + data.action = button.data('action'); + data.request = button.data('request'); + data.route = button.data('route'); + data.target = button.data('target'); + console.log(data); + loadModalInner(this, data); + + }); }); function update_modal_data_show(e, $ele) { @@ -115,171 +238,3 @@ $(function() { }); }); -/* -$(function() { - $('.select2-main').each(function() { - $(this) - .wrap('
') - .select2({ - placeholder: 'Bitte wählen', - dropdownParent: $(this).parent(), - }); - }) - $('.select2-sub').each(function() { - $(this) - .wrap('
') - .select2({ - placeholder: 'Bitte wählen', - dropdownParent: $(this).parent(), - closeOnSelect: false - }); - }) -}); -*/ -/* -jQuery(document).ready(function() { - - $('.main-branch').on('change', function () { - - target = $(this).data('target'); - if ($(this).is(':checked')) { - $(target).stop().show('slow'); - } else { - $(target).stop().hide('slow'); - $(target).find('.custom-control-input').prop('checked', false); - } - }); - - var $form = $('#lead-form-validation'); - if($form.find('#company_country_id').length){ - $form.find('#company_country_id').on('change', function(){ - $form.find('#company_pre_phone_id').val($(this).val()); - $form.find('#company_pre_phone_id').selectpicker('refresh'); - }); - } - - if($form.find('#country_id').length){ - $form.find('#country_id').on('change', function(){ - $form.find('#pre_phone_id').val($(this).val()); - $form.find('#pre_phone_id').selectpicker('refresh'); - - $form.find('#pre_mobil_id').val($(this).val()); - $form.find('#pre_mobil_id').selectpicker('refresh'); - }); - } - - - -}); -*/ - -/* -function trigger_company($ele, $speed){ - if($ele.val() == 1){ - $('.show_company_holder').show($speed); - $('.show_company_holder').find('#company_name').prop('required', true); - $('.show_company_holder').find('#company_country_id').prop('required', true); - - }else{ - $('.show_company_holder').hide($speed); - $('.show_company_holder').find('#company_name').prop('required', false); - $('.show_company_holder').find('#company_country_id').prop('required', false); - } - } - - $( document ).ready(function() { - - // With validation - var $form = $('#lead-form-validation'); - $form.find('#company').on('change', function () { - trigger_company($(this), 'slow'); - }); - - trigger_company($form.find('#company'), 0); - - // Set up validator - $form.validate({ - rules: { - 'email': { - required: true, - email: true, - remote: - { - url: "{{ route('user_check_mail') }}", - type: "post", - data: - { - user_id: function() - { - return $('#lead-form-validation :input[name="user_id"]').val(); - }, - email: function() - { - return $('#lead-form-validation :input[name="email"]').val(); - } - }, - encode: true, - headers: { - 'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content') - }, - } - }, - 'email-confirm': { - required: true, - equalTo: "#email" - }, - 'accepted_data_protection': { - required: true - }, - }, - errorPlacement: function errorPlacement(error, element) { - $(element).parents('.form-group').append( - error.addClass('invalid-feedback small d-block') - ) - }, - highlight: function (element) { - if ($(element).hasClass('selectpicker')) { - $(element).parent().addClass('is-invalid'); - } - $(element).addClass('is-invalid'); - }, - unhighlight: function (element) { - $(element).removeClass('is-invalid'); - $(element).parents('.form-group').find('.is-invalid').removeClass('is-invalid'); - }, - messages : { - required: "{{__('This field is required.')}}", - company_country_id : { - required: "{{__('This field is required.')}}", - }, - accepted_data_protection : { - required: "{{__('This field is required.')}}", - }, - salutation : { - required: "{{__('This field is required.')}}", - }, - company_name : { - required: "{{__('This field is required.')}}", - }, - last_name : { - required: "{{__('This field is required.')}}", - }, - equalTo : "{{__('Please enter the same value again.')}}", - 'email-confirm' : { - equalTo : "{{__('Please enter the same value again.')}}", - required: "{{__('This field is required.')}}", - }, - email: { - required : "{{__('This field is required.')}}", - email: "{{ __('Please enter a valid email address.') }}", - remote : "{{ __('This E-mail is already in use.') }}" - }, - }, - onkeyup: false - }); - - - - - }); - */ \ No newline at end of file diff --git a/resources/views/cms/travel_guide/detail.blade.php b/resources/views/cms/travel_guide/detail.blade.php index f26e32e..89c939a 100755 --- a/resources/views/cms/travel_guide/detail.blade.php +++ b/resources/views/cms/travel_guide/detail.blade.php @@ -74,6 +74,10 @@
+
+ + {{ Form::text('keyword', $travel_guide->keyword, array('placeholder'=>__('Keyword'), 'class'=>'form-control', 'id'=>'travel_guide_keyword')) }} +
{{ Form::text('meta_title', $travel_guide->meta_title, array('placeholder'=>__('meta_title'), 'class'=>'form-control', 'id'=>'travel_guide_meta_title')) }} diff --git a/resources/views/cms/travel_guide/tree-detail.blade.php b/resources/views/cms/travel_guide/tree-detail.blade.php new file mode 100755 index 0000000..af22062 --- /dev/null +++ b/resources/views/cms/travel_guide/tree-detail.blade.php @@ -0,0 +1,276 @@ +@extends('layouts.layout-2') + +@section('content') + + @if ($errors->any()) +
+
+
+
    + @foreach ($errors->all() as $error) +
  • {{ $error }}
  • + @endforeach +
+
+
+
+ @endif + + + +

+ Reiseführer Tree @if($id == "new") anlegen @else {{"(".$model->name.")"}} verwalten @endif + + + +

+ +
+ + +
+
+ +
+ +
+
+
+ +
+ × +
+
+
+ +
+ {!! Form::open(['url' => route('iq_content_tree_detail', [$model->id]), 'class' => '']) !!} + + + +
+
+ + +
+ +
+
+
{{$model->name}} + +
+
+ {!! \App\Services\HTMLTreeHelper::makeNestableList($model, ($tree_node ? $tree_node->id : false)) !!} +
+
+ {!! Form::close() !!} +
+ +
+ + +
+ @if($tree_node) + + {!! Form::open(['url' => route('iq_content_tree_detail', [$model->id, $tree_node->id, ($area_section? $area_section->id : '')]), 'class' => '']) !!} +
+
+ +
+ +
+
+
+ + + @if(!$site_fields) +
+ + + + +
+
+ +
+ {{ Form::text('uri', $tree_node->getUri(), array('readonly'=>true, 'class'=>'form-control')) }} +
+
+
+ + + {{ Form::text('name', $tree_node->name, array('placeholder'=>'', 'class'=>'form-control', 'required'=>'true')) }} +
+
+
+
+ + + + + @if($tree_node->travel_guides) + + + + + + + + + + + + + + @foreach($tree_node->travel_guides as $travel_guide) + + + + + + + + + @endforeach + +
 {{__('Name')}}{{__('Keyword')}}{{__('Langer Text')}}{{__('sichtbar')}}#
+ + + + {{$travel_guide->name}}{{$travel_guide->keyword}} @if($travel_guide->scope) + + @else + + @endif + + @if($travel_guide->active) + + @else + + @endif + + +
+ @endif + + {{----}} +
+
+
+
+ + {{ Form::text('identifier', $tree_node->identifier, array('placeholder'=>'', 'class'=>'form-control')) }} +
+
+
+ + {{ Form::textarea('description', $tree_node->description, array('class'=>'form-control', 'rows'=>2)) }} +
+
+ @else +
+ @foreach($site_fields as $key => $site_field) +
+ + + + + +
+ + + {{ $site_field->iq_content_model_field->name }} + {{ $site_field->iq_content_model_field->identifier }} +
+ {!! get_switcher_input($site_field->active, 'iq_content_site_field['.$key.'][active]') !!} + +
+
+
+ @if($site_field->field == "string") + {{ Form::text('iq_content_site_field['.$key.'][content]', $site_field->content, array('class'=>'form-control')) }} + @endif + @if($site_field->field == "text") + @if($site_field->settings['editor'] == 'off') + {{ Form::textarea('iq_content_site_field['.$key.'][content]', $site_field->content , ['class' => 'form-control']) }} + @else + {{ Form::textarea('iq_content_site_field['.$key.'][content]', $site_field->content , ['class' => 'form-control summernote']) }} + @endif + @endif + @if($site_field->field == "media") + {{ Form::text('iq_content_site_field['.$key.'][content]', $site_field->content, array('class'=>'form-control')) }} + @endif +
+ {{ $site_field->iq_content_model_field->fieldAsName() }} +
+ {!! get_switcher_input($site_field->search, 'iq_content_site_field['.$key.'][search]') !!} +
+
+
+ @endforeach +
+ @endif +
+ {!! Form::close() !!} + + + @endif + +
+ +
+
+ +@endsection \ No newline at end of file diff --git a/resources/views/cms/travel_guide/tree.blade.php b/resources/views/cms/travel_guide/tree.blade.php new file mode 100755 index 0000000..4f6a8f8 --- /dev/null +++ b/resources/views/cms/travel_guide/tree.blade.php @@ -0,0 +1,90 @@ +@extends('layouts.layout-2') + +@section('content') + +

+ Reiseführer Trees +

+
+
+ + +
+ +
+
+ + +
+
+ +
+ + + + + + + + + + + + + + + @foreach($models as $model) + + + + + + + + + + @endforeach + +
#NameIdentifierDescriptionNodes(s)UpdatedStatus
+ + + + {{ $model->name }}{{ $model->identifier }}{{ $model->description }}{{ $model->iq_content_tree_nodes->count() }}{{ $model->updated_at->format("d/m/Y") }}{!! get_active_badge($model->active) !!}
+
+
+ + + +
+ +
Tree
+
+
+
+ +
+ × +
+
+ +
Filter
+ +
+ +
+
+@endsection + diff --git a/resources/views/emails/___auth.blade.php b/resources/views/emails/___auth.blade.php new file mode 100644 index 0000000..bddcb51 --- /dev/null +++ b/resources/views/emails/___auth.blade.php @@ -0,0 +1,237 @@ + + + + + + mein STERN TOURS + + + + + + + + + + + + +
+ {{ $copy1line }} +
+ + + + + +
+
+
+ + + + +
+ + + + +
+
+ + + + + + + + + +
+ + STERN TOURS + + +

+
+
+ + + + + + + + + + + + + +
+

+ {{ $salutation }} +
+
+ + + + +
+
+ {{ $copy1line }} +
+
+
+
+
+
+ + + + + + +
+ + + + + + +
+

+ {{ $button }} +

+
+
+
+
+ + + + + + + +
+
+ {{ $copy2line }}
+ {{ $url }} +

+ {{ $greetings }}
Ihr Team von STERN TOURS +
+
+

+
+ +
+ + + + + + + +
+
+ STERN TOURS GmbH | Emser Straße 3 | 10719 Berlin
+ Tel: +49 (0) 30 700 94 100 | Fax: +49 (0) 30 700 94 1044 | stern@sterntours.de
+
+ www.sterntours.de +
+
+ Geschäftsführer: Thomas Stern | Registergericht: Amtsgericht Charlottenburg | Registernummer: HRB 67111
+ Steuernummer: 27/545/30703 | UST-Ident.-Nr.: DE192609253 | Finanzamt: Wilmersdorf
+ Datenschutzerklärung
+ © 2018 All Rights Reserved
+
+
+
+
+
+ + diff --git a/resources/views/emails/_auth.blade.php b/resources/views/emails/_auth.blade.php index 72eb046..3a6c12d 100644 --- a/resources/views/emails/_auth.blade.php +++ b/resources/views/emails/_auth.blade.php @@ -1,214 +1,766 @@ - - - - - - STERN TOURS - - - - - - - - - - - - - - - +
+ - -
-
- - - - -
+ + + + + - -
- - - - -
-
- STERN TOURS -
-
-
- - - - - - - - - - - - - -
-

- {{ $salutation }} -
-
- - - - -
-
- {{ $copy1line }} -
-
-
-
-
- - {{ $button }} - -
-
-
- - - + + +
-
- {{ $copy2line }}
- {{ $url }} + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + + +
  +
Wenn diese Nachricht nicht korrekt angezeigt wird, klicken Sie +bitte hier +
  +
+
  +
 Telekom - Erleben, was verbindet. 
 
   
 

+ HERZLICH WILLKOMMEN BEI MAIL S FÜR KUNDEN DER TELEKOM

 
 
 

+ Hallo Herr Adametz,

 
 
 

+ Herzlich Willkommen bei Telekom Mail S!

Mail S ist der kostenlose + E-Mail-Dienst für Kunden der Telekom und + bietet Ihnen exklusive Produktvorteile – egal ob auf dem + Smartphone, Tablet oder Computer.

Mit Sync-Plus haben Sie Ihre E-Mails, + Kontakte und Termine immer + dort verfügbar, wo Sie sie brauchen. Richten + Sie Sync-Plus am besten gleich ein!

Für Ihre Ablage senden wir + Ihnen die Informationen, die Sie uns + während der Registrierung mitgeteilt haben:

 
  +
  + + + + + + + + + + + + + + +
  +
  + + + + + + + + + + + + + + + + + + + + + +
+ Name: + + Kevin Adametz +
  +
+ E-Mail-Adresse: + kevin.adametz@t-online.de +
  +
+ Gebuchter Dienst: + + Mail S
+
 
  +
+
 
  +
 

+ Ihre gebuchten Produkte und Services können Sie jederzeit im Kundencenter + ändern. Verwalten Sie in den Anmeldeeinstellungen + bequem Ihre Benutzerdaten und Passwörter.

+

+ Wir wünschen Ihnen viel Spaß mit Mail S
Ihre Telekom +

 
 
   
 

+ So kommen Sie zu E-Mail!

 
   
  + + + + + + +
+ + + + + + + + + + + + + + + + +
 

+ Rufen Sie Ihr E-Mail-Postfach von zu Hause über Ihren + Internet-Browser auf.

  +
Zum + E-Mail Center
+
+ + + + + + +
+ + + + + + + + + + + + + + + + +
 

+ Nutzen Sie E-Mail mit der Telekom Mail App auch + unterwegs auf Ihrem + Smartphone oder Tablet.

  +
+ + + + + + +
+
+ + + + + + +
+
+
+
+
 
 
  + + + + + + +
+ + + + + + + + + + + + + + + + +
 

+ Sie nutzen ein E-Mail-Programm wie z. B. Outlook oder + Thunderbird? + Richten Sie sich dieses hier ein.

  +
Jetzt + einrichten
+
+ + + + + + +
+ + + + + + + + + + + + + + + + +
 

+ Mit Sync-Plus haben Sie Ihre E-Mails, Kontakte und + Termine immer + dort verfügbar, wo Sie sie brauchen.

  +
Sync-Plus + einrichten
+
+
 
 
   
 

+ Alles für den erfolgreichen Start!

 
   
  + + + + + + +
+ + + + + + + + +
 

+ Verbinden Sie E-Mail Postfächer von anderen + E-Mail-Anbietern mit + Ihrem Telekom Mail Postfach.
E-Mail + Postfach verbinden.

+
+ + + + + + +
+ + + + + + + + +
 

+ Konfigurieren Sie die individuelle Speicherdauer + Ihrer E-Mails jederzeit und bequem im E-Mail Center.

+
+
+
 
 
  + + + + + + + + + + + + + + +
  +
+ + + + + + +
+ + + + + + + + +
 

+ Alles rund um unser E-Mail Center finden Sie + in unserem praktischen
E-Mail-Handbuch + im PDF-Format zum Herunterladen.

+
+
  +
+
 
 
  
  +
   
  + + + + + + + + +
 

+ E-Mail made in Germany

+
 
  +
  
 
+
-

- {{ $greetings }}
Ihr Team von STERN TOURS -
-
-
-
- - -
- - - - - - - - -
-
- STERN TOURS GmbH | Emser Straße 3 | 10719 Berlin
- Tel: +49 (0) 30 700 94 100 | Fax: +49 (0) 30 700 94 1044 | stern@sterntours.de
-
- www.sterntours.de -
-
-
- Geschäftsführer: Thomas Stern | Registergericht: Amtsgericht Charlottenburg | Registernummer: HRB 67111
- Steuernummer: 27/545/30703 | UST-Ident.-Nr.: DE192609253 | Finanzamt: Wilmersdorf
- © 2018 All Rights Reserved -
-
-
-
-
- - + +   + + + \ No newline at end of file diff --git a/resources/views/emails/auth.blade.php b/resources/views/emails/auth.blade.php index 197a1c5..c310e01 100644 --- a/resources/views/emails/auth.blade.php +++ b/resources/views/emails/auth.blade.php @@ -1,5 +1,5 @@ +"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> @@ -7,7 +7,6 @@ mein STERN TOURS - - - - - - - diff --git a/resources/views/emails/auth_plain.blade.php b/resources/views/emails/auth_plain.blade.php new file mode 100644 index 0000000..496d259 --- /dev/null +++ b/resources/views/emails/auth_plain.blade.php @@ -0,0 +1,31 @@ +{{ $salutation }} + +{{ $copy1line }} + +{{ $url }} + +{{ $copy2line }} + +{{ $url }} +{{ $greetings }} + +Ihr Team von STERN TOURS + + +--------------- +--------------- + +STERN TOURS GmbH +Emser Straße 3 +10719 Berlin +Tel: +49 (0) 30 700 94 100 +Fax: +49 (0) 30 700 94 1044 +stern@sterntours.de +www.sterntours.de + +--------------- + +Geschäftsführer: Thomas Stern | Registergericht: Amtsgericht Charlottenburg | Registernummer: HRB 67111 +Steuernummer: 27/545/30703 | UST-Ident.-Nr.: DE192609253 | Finanzamt: Wilmersdorf +Datenschutzerklärung +{{route('data_protected')}} \ No newline at end of file diff --git a/resources/views/emails/content.blade.php b/resources/views/emails/content.blade.php index e110947..16e28fb 100644 --- a/resources/views/emails/content.blade.php +++ b/resources/views/emails/content.blade.php @@ -5,40 +5,33 @@ mein STERN TOURS - - - - - - - - diff --git a/resources/views/emails/info.blade.php b/resources/views/emails/info.blade.php index ffde2bd..dd12233 100644 --- a/resources/views/emails/info.blade.php +++ b/resources/views/emails/info.blade.php @@ -7,7 +7,6 @@ mein STERN TOURS - - - - - diff --git a/resources/views/emails/invoice.blade.php b/resources/views/emails/invoice.blade.php index 22a0b6a..d200e52 100644 --- a/resources/views/emails/invoice.blade.php +++ b/resources/views/emails/invoice.blade.php @@ -5,31 +5,25 @@ mein STERN TOURS - - - - - - - - diff --git a/resources/views/iq/modal/content.blade.php b/resources/views/iq/modal/content.blade.php new file mode 100644 index 0000000..6e2c863 --- /dev/null +++ b/resources/views/iq/modal/content.blade.php @@ -0,0 +1,44 @@ +{!! Form::open(['url' => $url, 'class' => 'modal-content']) !!} + + + + + + + + +{!! Form::close() !!} + diff --git a/resources/views/iq/modal/site.blade.php b/resources/views/iq/modal/site.blade.php new file mode 100644 index 0000000..cb5a511 --- /dev/null +++ b/resources/views/iq/modal/site.blade.php @@ -0,0 +1,32 @@ +{!! Form::open(['url' => $url, 'class' => 'modal-content']) !!} + + + + + + + + +{!! Form::close() !!} + diff --git a/resources/views/iq/modal/tree-node.blade.php b/resources/views/iq/modal/tree-node.blade.php new file mode 100644 index 0000000..96b1a8b --- /dev/null +++ b/resources/views/iq/modal/tree-node.blade.php @@ -0,0 +1,45 @@ +{!! Form::open(['url' => $url, 'class' => 'modal-content']) !!} + + + + + + + + + +{!! Form::close() !!} + diff --git a/resources/views/layouts/application.blade.php b/resources/views/layouts/application.blade.php index e15dfa0..88e7247 100755 --- a/resources/views/layouts/application.blade.php +++ b/resources/views/layouts/application.blade.php @@ -39,6 +39,11 @@ + + + + + @@ -66,6 +71,12 @@ border: 1px solid rgba(24, 28, 33, 0.20); } + .dd-content-link { + overflow: hidden; + white-space: nowrap; + display: inline-block; + max-width: 7rem; + } @@ -106,6 +117,12 @@ @yield('layout-content') + + @@ -122,6 +139,7 @@ + diff --git a/resources/views/layouts/includes/layout-sidenav.blade.php b/resources/views/layouts/includes/layout-sidenav.blade.php index d436356..72d7629 100755 --- a/resources/views/layouts/includes/layout-sidenav.blade.php +++ b/resources/views/layouts/includes/layout-sidenav.blade.php @@ -125,12 +125,17 @@ @endif @if(Auth::user()->isPermission('cms-tg')) -
  • +
  • Reiseführer
      +
    • +
      Reiseführer Tree
      +
    • + +
    • Reiseführer Seiten
    • diff --git a/routes/web.php b/routes/web.php index 8bc6f0b..158dd0a 100755 --- a/routes/web.php +++ b/routes/web.php @@ -134,6 +134,17 @@ Route::group(['middleware' => ['auth']], function() Route::group(['middleware' => ['admin']], function() { + Route::post('/iq/content/modal/load', 'IQ\ContentModalController@load')->name('iq_content_modal_load'); + //trees + Route::get('/iq/content/tree/index', 'IQ\ContentTreeController@index')->name('iq_content_tree_index'); + Route::get('/iq/content/tree/detail/{id}/{node_id?}/{area_section_id?}', 'IQ\ContentTreeController@detail')->name('iq_content_tree_detail'); + Route::post('/iq/content/tree/detail/{id}/{node_id?}/{area_section_id?}', 'IQ\ContentTreeController@store')->name('iq_content_tree_detail'); + Route::get('/iq/content/tree/detail/remove/{id}/{node_id}/{travel_guide_id}', 'IQ\ContentTreeController@remove')->name('iq_content_tree_detail_remove'); + + + Route::get('/iq/content/tree/repair/{id}', 'IQ\ContentTreeController@repair')->name('iq_content_tree_repair'); + + Route::group(['middleware' => ['auth.permission:crm-tp-pr']], function() { //Reiseprogramme Programme Route::get('/travel/programs/{step?}', 'TravelProgramController@index')->name('travel_programs'); @@ -211,6 +222,8 @@ Route::group(['middleware' => ['admin']], function() Route::get('/cms/travel_guide/content', 'CMS\CMSTravelGuideController@index')->name('cms_travel_guide_content'); Route::get('/cms/travel_guide/page', 'CMS\CMSTravelGuideController@page')->name('cms_travel_guide_page'); + + Route::get('/cms/travel_guide/page/detail/{id}', 'CMS\CMSTravelGuideController@pageDetail')->name('cms_travel_guide_page_detail'); Route::post('/cms/travel_guide/page/detail/{id}', 'CMS\CMSTravelGuideController@pageStore')->name('cms_travel_guide_page_detail'); @@ -291,26 +304,26 @@ Route::group(['middleware' => ['superadmin']], function() { }); -/* + use App\Mail\MailResetPassword; -Route::get('/send_test_email', function(){ - try { - $mail_bbc = config('mail.mail_bbc'); - // Mail::to('info@adametz.media')->bcc(['k.adametz@kagado.de', 'kevin.adametz@me.com'])->send(new MailResetPassword('asdasd', Auth::user())); +Route::get('/send_test_email', function() { + try { + $mail_bbc = config('mail.mail_bbc'); + // Mail::to('info@adametz.media')->bcc(['k.adametz@kagado.de', 'kevin.adametz@me.com'])->send(new MailResetPassword('asdasd', Auth::user())); - //Mail::to('kevin.adametz@me.com')->send(new MailResetPassword('asdasd', Auth::user())); + Mail::to('kevin.adametz@t-online.de')->send(new MailResetPassword('asdasd', Auth::user())); - Mail::raw('Sending emails with Mailgun and Laravel is easy!', function($message) { - $message->to('kevin.adametz@me.com', 'Kevin Adametz'); - $message->subject('testing Networktrips'); - }); - } catch (\Exception $e) { - dd($e->getMessage()); + /* Mail::raw('Sending clean email', function($message) { + $message->to('kevin.adametz@t-online.de', 'Kevin Adametz'); + $message->subject('test'); + }); + */ + } catch (\Exception $e) { + var_dump($e->getMessage()); + $fail = Mail::failures(); + dd($fail); + } +}); - $fail = Mail::failures(); - dd($fail); - if(!empty($fail)) throw new \Exception('Could not send message to '.$fail[0]); - }); -*/ diff --git a/storage/app/fewo/infos/2019/Anreiseinfo-1231433.pdf b/storage/app/fewo/infos/2019/Anreiseinfo-1231433.pdf new file mode 100644 index 0000000000000000000000000000000000000000..f3a2f1da0d6123548f1236960752496d8be60925 GIT binary patch literal 9628 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 Lz{{(qhXDK+5xPa8 literal 0 HcmV?d00001 diff --git a/storage/app/fewo/invoices/2019/1231433.pdf b/storage/app/fewo/invoices/2019/1231433.pdf new file mode 100644 index 0000000000000000000000000000000000000000..59e906a81a311bd6aa3d341a7ce2311e93e00b68 GIT binary patch literal 10850 zcmch72T;@5_b*5fy%!Ne?pb#wB z2LTjPwnN!@csm1x^!-sDu3iW~pa`1B5FiA#b4I_2-n;m*`?q5;?LfWp5en1QH8{q&ez#l6?03kz!pSM5K0j*d@25kb;+rbEd z0*d|O6H@a=i$_}y5K;pHCI6s_03p9dXr)4C`u1)Jhd+2UK|s)ryJ%N5MS!5+y+U){ zFzO;4UG0>-gMb#og2KYWz~8^Y5U`+#q%crY3?wKC5w-&ShbK2C+<0OkgbpP-c8DMp zP)O4g9V2C+)t|uu|H1T!?T-Eq2qcjE$4?AL3~vli3?KBb69y1N215b^j2?k7L@^xD zV_^(AG?fqiQO1B`s9>n^pd*4r*r8m#y;ST_2q3qLl!!10A}k>+0s@JO2#fLwi*N}G zbD{Zky&eB27MLr_11;mnPo5j!|JcWy(EojB{*NPrJ{?E|dN+O@kDLATLZM&%fD&l2 zhX0}F=KW7KYOWqAbUcLAJkUO=ARN3M5da|_gqJhQ1tO*1nki1}rFKcl_c%OHkKZ}!}Dvn9;w-97L%;Rm>QKCppyznkBvp6c6@7N z5sOKip(axJJ7si|Bqyd3%vZBK*PuxWIlz9>bPH+1_`O?p_L=}v9msAkMxso?DamTP z<)yQ334QH5`VpRZX)b5jLJ_seIL;9ue}kKmcerD)qfVvowm8lEtu*;<$vHO%5NsOH)= znMwZ!nj9aOv^og!Jok}QE{uQsrqC2Z|EyI0p`UJLy3q(s;j^b63oH5kIUS)h6`>J1 zYqR^p`8Ba8tOLmU#g@gyuFl z$K;E7P3k>$1M|zMZ2fU*WW|Yd_vKfDnokNoJTWI@z)F#=A`?w!&JdH#+L2cbP2Wo= zAKiO59Y}OvEG7DbgHw;C(4#AQ9ck^)kUW_OTW)a)KMS8Zg`vWvvS;OY0)O&J`tcuT6yxh-gCVOb##h%DWC+gxq;#7tZ%_LN$R~ z8I6+0{34ndr6NogNt(C9`_-KLsCk|(lE;)M+FBiNu&T&8s%Tjb$OW^%%rCG9i3rDyCSlU<; zF9Gbtp`*UO8OQ2yRkJ18W6_>_V_g)(V^K9#eYeQhGovA7EYw=`<_Wg+rqLR7gOvKw z-P4GNpR3Eq4ZZJ;*12siH@lIlRo7QZP8{DG6)~Tf)*{p|b)jnY3=(`f5YD;!Bqt{} z9s{`Kq7^$K2?cnYVg-454dY!xew^b{ zy_jLuVWg6p2&Z~s!J^MdHT^|3aj%)GXAl~hLRCg#GbPB}b~g-FtNyC(lP>hECji=4 zUVr#C^-<0{mtMT2;u*s@rvNC?3shN#w>qnuQ`V4bc~xID_Bw!K6G+bcSThWnjKvTK zof#u9?$~wcscU16xQ%V1N%%CJ<8FMQxp`8>jvPLJMHSJ9HnOfS-DE(jw<(xuX`XOAkUrcn`K;h0$YEqlKk;uvY>yq;LmiAh1)KtZ@fzp zk7>+Du4#INy>%W_jgEv3TA+7NYV_8L)F=*6}lTCpgV$}sz zQ618{KWpmb1&o;Dr2I~iHK&$eirFsud~)PRaOETyHo2VFV`cr4`Sx{rLkC70{377f zSSnne2NaXJxxw)K(F|NbIz?pdjzJk)zdVLwnFgH_fA{73V>`v@&7}7R)A+BC$(swn zin9^S(=lAK5|*)1a}e3Vts@PI!10;J2(bx?=0I#34f}4;gzs{RV3~4Da2T7FAtwVu zqK5!ucdtL#LuYMiA^a_T9T`~MS{+#IUUd=fiMlQIqgY1+QI0#TDb7iUSPpn?+cj6o z%c%;#?=K~KYN*>UKtoq1oZC)izk(VLSNEt;375zBN$~RYf8K>D_%%6saX-1$Y+{T! zYl*ISNkNgGIO9YraKpfV-F+1&y8Ba+s6(3renZ=vQ8{SOiA9anG0nt}GnxavklXl0 zUe^@{{iIn-w$&b`&vTow=1WNK#Q5C8!RExe&CNaOyM?y<2&?L9NZX9?yN!&~KCBg3H-Vb7Il3^+h}8>~zBwx>%+Cbh~qUEr2$- zBv6#nHhjCXUb8Jz;no5*MECP$-`L^1rNB6i>1a)Tj-b}JXQ#NJ5qf?9UMbm2l+MeS z4y)oRuY98`U%WR{E%bW}ktw%h^eXWSIscIx`gJmW*LinwQ6w#_FLze?t-{ZWT87Im zxV6mw)#d5J7m~EM^WU*`W;JqiqS=(WG}!MTy8O4hhRHv_J}@fsqCq@#1aBW?q|DW= zJpaIz1-spaTOM9y0)`V;p4Y)0zbN|6us`d5dEi#aFw_S*bOh(^&!kmRr|aNt*UqTb z%yGN4aowGmxO6I744{9HiYvL-xS-@*@vVht$f+Bbt00?x{aXPO?bOO7RXB=0h$o(K z%)bX-A~@6cm5M0ULUwzjTt(h!KV;1lyw>6Lgtz2m_t4l%spG=Uho@k5+q3+|CvOL` zz96{VPt)CgHtgAwPpf0~aLr>>kB4EJpRSBEyOXnvpZ?F$d-5|DAv*m|95a*giNyjh zMjpS=84z9PZ_!tC!s~Zq8##j}037_SSo7KRE}X;?COAT(2~;Glf?L`tIiCkq=bzc$Lfc)#~&AUQtaolBu{#g_{zf9_n)_3 zz9*%P366zy5XV$SM6mEH%xp`Cof_t5$+Tn0d&a3EkB&Gf?Q>a79%je za!`D$YuGcpis7Z~Wh%2d--}Jm&Wd-Yt;ncdL5?0(7s$ftKBkK*qxZDKVG z4XiGhI=t5@#-^jd;s{-3{dAWM%V7cADv|$kb0;fC2(+h%Pr(}&yx|BpHL}W=(q4Zx zi!><3-mNf(e9*gO*3*Jk-9XMiaNQr^^9H;Bi3)$uLT;cvK*-479`!3Jxgnyn0X;iU zbcUja9x2)RA%4MsAq|8_00QOeUXZkjmbkKHgq8P+syTG5W=9!-v z`HYLsa|ZqzncKLkDa45k4vMKy@W24>=rP3Gm*~IlRc+8ER)6*9@h81)ZM}ZsfdK&l zU+|%uV=K4{&Iaq|Fpt@pfrl92GYsNFm*t*5>bkD80P4sxjHYYMxFyWKE2m&SnBu-C zMw@V?MxYA?PD>1ub9NwZyU|3IeU}M?uYraAmU$DVB#AAvdS2LsMI%7{IOlc7kzFX= z*AF;v-`if_vORN*WM;&ulYY<{K%K-tiglJ4d(mVj#_zM2L+t6N7&t?E%LH>tEvFMn zo#4|(NN`UpZ%UvT*OVpfTZZ{>a5CGL&h7&&lY;5)g6z&T>X-(#ynFBvJhSfw%f*x* zWdySxr@x9W+O<9ADDs-e=AD^p?epIndns?PcNFca{Kgbv>}+ZTTfbWZiTJ0oVkETFDjTm$F{etzr0#=xQxfhU<2+J?AbC{XfY8A?jU+^!sd=g+lyzpUHtRPn9fLxGb$BF{ z`u#%xeu%G`O`?Qpv9xxMA2r0}Oz5i%v1G=kk9e=VrkvWlaRy`<3w^d%kZ3dt`+_nY z_S`zd!m9S$FKqf4iyh)$qvx7JZvqeT%ft zLttG|vMmp$drPrwYvYgW@mH|-bm2RLpZX_Z@)4Un?)8a%C%&bZV%XTbd%H0n6|qLI zdz{WaDoEAJejbE#KA3O-crv1V61eChc4e z+ZM;8Qw3eRpCRA2xIRxM!%Hwh~(b*T*yAxOoU7cHk1u;P8x(N^-MdMlOX#lPe(HN%Y1N_ z9(gpqRTQuEO-Rd$6(hQoNu9PjBqQ2nCPz)rBOU><61b+GY03yS9vPx!D}CMj&4 z;9DNg%OU0Yh=%H=9%v9e5%8+gn7-w2n*-Xj4<3aX*T(R9)(oR#taT9ql49e8p?<%5`t_LR-LdD-*(>69`_hOS% zJgp@@pZ(l_h+1ZcY6OQp$&ry;GpDj=L16Y!?40`RtsJSOjjlSi_0XiH! zOIMxaXDcXADFe@hV9+$6*eId!OI$;T)^9mf zOx)Zgbyl=vZHbRGQOBOQ>e9k67s@?K%QL`&IRjHRBz3`N1;F&5)w9p`L!2XNmO?Y% zW=a|=a*!G@z=*Eb0I-FlnNj4;0z&IVzcyH-1`515KW%S6L}7?!zp z=$}yi3gSM-7i&;m)$2?Ra{f&|} z3wF8*1u+g!^EzSo)2Pmtt>@@!XG;N@+PpR5_NuEedf3qO#&&4bT4c=a>igmOZTZPE zsXVn2pC2}POKEOC(X3H|`d|rt1R)ptsbDl+NyJJqwig*w*T94mXMgMIy%~-7Fm)bi zDwx37!BUr$_Y?}>V7y8#rI?=J8?K?-X0(=j$gyhxhU%*2W%rdoNt8jr%k0ap0$N$` zl!>3lZL>h;&uE13vJVkP&?l4PKgtG`aj-IW-EZ+SOua5ZR;gqad*m-o;fPg6@iO2z z1V@olkxk$mn|_}v)?N;^ik7^dBe2xi;TRr|i_O2Pv@ew!-ZLRLP@aE1-yXhU7+`j7 z=tfp1a#f_!uM$51oiquv+*c^WLCj9HG zF2zR3Zd25OMOHE>`XD5)G?Pa@t<(B5T$T0bFg9YYo{H_m0_4sFhB5YRWp_kwoEwLH z33fJ#KJCC^N@?8!3v#}emV*@`*@=YleW0m{aw7-4ynFynUD&x;nT$^`E-df}S8|lQ z+l;Dt{^&9s4Eu0~m57}{!z&X=K5KzvJa0`%;+#!paC#==IkSPgI*71{q(?*_lv@uB z*2uFJbZ3U}Nj42jf~NeZni`-_tJS<@aRx4lP2!Rg9dqe>{p+1<5IHG^O28ddQBh&i zTTEvBzTiQ@&hN2w!_`jd>H+bPQ{&mc8hJwZ{JY-*`nBbX0|_lqd$tkSlKU?Y*Z zzkQ(;jaal>-IoWnh3}s}QsPj#J>sPLev3{qwxF)-Wz=#^*C2iNE#oO@Eju2eCPSNH zslDz4fuI`8A@PSN*0K>v`>=i$3EE~^RPV=)F$t|mH!{GF7lcGcl8C4}v$k7w_Q3r3 z@~xmK(AoqbTS)|F-u4bHg84Iac_Y3lP>n}CoB9K`$#GF!5bXd~hmnUyrR!KCk0@-o zfO?Sq;jle;t^_1KaUS7gxsXeZNA2Md&~R#uIdK0wY}@TQHuP?ZaLen;r~`qlz7axO zue8vKq;a#YMSaq`c(bfB-lq*OmJt&qW?w<0udR&a_v9nB986?j#dOsv28!EvH})Fz z1TD10>Im0Q)bDgLH};FqbJ__R4;Ltx|bC{O-(#kqFp$mg&_BPlr8}jB-!QI zL|r`Shizn@=6Md;1ZjzwMQI^SSYp!izC+z;D;d6K-O>j1r8MW?X^z$MG~umbu**WK zJi%zBr4I;@2z$ac{Y`wb#L|VBVO9xDr`qlFgl$0rfC%th$)x28VbV}}y1k8~gxHI!O%~J#u zQqwax)XyrI&O;&FUWm8*V>AxT+3-fL=N9CFLemQKVi|H)M9X`ACAok%#LuTCIzHlG z6Pt&wo8eIR6706A@plRv)`9sqP}5fB*%p8l*i+|ni?$JKQ`PWFdlOW8A^YUvM{)2d z)AeX`rgTHpn*fqd!n47bnte(9l)$&?d5tulX_pM7za>i-p`7z8dl<>SaQHuNvItpO z{6Yl}p2LP+Y7;W|N@&X7lStuhn{A~OXLel%GC`(dlCU^Mh(6UJ61gwarsIAz5k42u z7L%voTlku*ULI$7#|r74L3XHM(d<{UV?L3Xcx#Hf zN9H+18}L-nha51GgAjAT@mC!$5r@s8TO9-kefzE#ePoRU-BRyYvJdzzqlc@bAj*pU=Z}WQD-6YS zyl01gEGkAjjL5XgjY&dwZ@R^2zCvv?k5dmbKlTNybp^IZaGhb^-c_1@!|yuzBI)SD zKjvFBAmZUed=?wV# ziCODBtfV1kfk$L|Wa|GU+Gm%Np5xgrt~h7t)7j|Uck$YiO!KDnx3Q;f2r$yM6ITj` z?>3LWGvBd^rhrkD2-6(V6dJ4)dwUC!RJaR&Ox`{eZ%CnE&;f^rJyCjL>%ON8)vcMB zKOnHW?H6g@mkc8ds#Svr~{(%iqZjmLch4B zX5ySV^+f(>_*z^^KRyyeVBb6@;`;qgcI$8J$nc@q+v?ETOlWQDHgD1B$cSg6g-BC< z(Twf3D(ZHt{4&M@Q@iDF=V}H>v3>0TU5@Zx=7MH@yiqoRTIV{ebtx0Z{4LD(lf`?J zGhU8C*tPzi1-A*#+1Jw~`UX!&?Y;VKbdhBi(?{V@uF3He)%lkA3_3j588UgomEjr0 z+y2)-n#pFMGjVEj%&N~a*zt9v;FGp5^f$tZfD`l^=MnD=jilWparDT*j5g<_X|d+x zV%A|;{JmM7_SEUqC>NE>A~qB=NvhMW>FJID`AwXy#YztM9-j1vQPzAdbfm($Odn;m zPtFbu`M#y&j=a7vZ7g8*Et`{Y)6B!7Zo@r9_b2U{eB=pK@9*~~zlxdvPxlDuo%VD8 zSAF#VYrfqZqEot1)pN?3eH#en?9F85cSC{11d5eE`^)N}G4@o-QSA z=u-h{@HEKk9^92a>(Y9NF`K}PMHa4V=zS5erZ zYE`JLZyrM$kxDj>5;*SrR!Wj^k%lZq-M;EqB|y4!R+npm7Tq2J8V?p zVG`;ad9W)0tlzcYZewUab2RHhq&h3W^Zu!#?l*Q5HDz_!R5*fpc%0W-p4}SMAn1!D zBxG9pN&ie05kI_b7NHd(9ME)TNWg#TwA>^guS_>}_P%blf;@L!4{(}J_Q=h_^0$o- zN)v?H2bFCkhtc)#>mbr4ewc?3Wc8Z@^d8@Kk}-lqn#d?a!%3to;?}EL%)QGYmRPr**F$!W=0Bv zN>!Dm4fAR=*een> zD03?UVo69&n$(8_uHtKQ*ZHu&Iz>bSNF$WmmTT@sA*Sg(l0XR!fIO)oR^p9{VuBIQ z{CMW1YBY#B*kdj=^z#J!myM*{a(@jp;d$yt%Z>eBgV4Cy`CTmCTxoNKyy|e9z1?ML zkNxneQq|!o+Yj@`p0$c~VX5ayJM~m)PtQyW$oR`ji4I;tA+gpx9Tb#N)M;l%I=O#Sc*VxIFacX=$%oQE|%d$VO1MmP`a_fd__FM+9<-=e{# zDZ=HO_Z72xvjg_5cD)Q0c;MyvC3!%h%CTQ~RN@=3Yj9n;p2wbo4B!_|-2o6TU`!9tljUyN$PMV61U zwfVvp$`o@2E`(cXu5|f$Uo&{uB~MI2TQT~_4&KyIH8(g`55o{otodmU{W<2-&vvSs zOP(#<;!03$W*h*g^o=}mg^<`pNaLP#7O2(7!y=#sl%OAv6$yFqb$<5UL-YB$aAy_OF)^1TdZ19@MD^$JC zc#^+jG}|uoL4=Tf)pb^`tsM@vO)>8?QoJ(Z4|c$+2EbG@vVy=GvZ?NiO+QG>w>BC z9t=a`nR;)xEjL8TyWNwa=h)38_B~&$Sf!F zl&;mhFrWfg_R}-pB}~o5GUPr^vR2b4yqYWxlaqD<97O@eJ`c0mNnCsC=?(*PywmUe z#r9zo{2_!p=}8ygwQC+C3GjFW#rkU=Hr060GSw)ZaX4I^0S=$n3C|!KuUA&P3L2hU z2vcWY>6(N>L&jetmHnHVbDjj)wOXLu4V8u)MHi9{VyH(z34T|>Jrhj+AxCm5CL0P> zE2q)VEPWvz<{tihHr?AzM~sG(-Qe*6gFY`Inq=>@9;=o*JO^`u9&)>Ose=)G9h3E% zqvOeL({2C}p);c6ke7y5Z_dwB%1tzOOWLt4Bx)`mhF||AR5wQM9nPBZ!y&AUh zam_p(n<9BzUCS7-zB3Rr!3N7_as7>=LAb#O8`lT>m~RKa^5T`=<3%z|xDGWbjLGb{ z_Fe1(z42;cgUoC zd@4?SNCo5#Dt~l%#u9N#ymAs*^UfItHOG`OfcUGm$2^aM&X;4Zb=X{xPqjwy^uXL|Bs@*bhV3~fm7-K(buZ>yVL zQ_jzSBb9!H4gUvt^Pg>F|AGrt2W2hnXGDr&la3^~7r@LSk6TI)aWg9;gtC8|CO8TX@|DBv&Yw zlf67u>$5K=uNt*>m{)WCI9_vW0_=?EJQ(|4l=SxOsqH|E5Wx{rn3JB!VuE z{e>nff^N+FD-Ha2d0^4MuN4_ z?a(y@akEE4hTh&Nbfxe2rbjO)Z{W>&x@mw^v5;{P14-D4ii?3jPWF!C!V-=UgruXm osH6ngQNlq)3?lbGb6DLJR{ciqCxi;b26Ei_{DABP)_@jV= zcihl1QUY51863!Orr);P``96nK(4Ew81@(*7;YGz=wAm6Aci!C7zPAA0%Hhc*rCTD z3|Tal7yVJffMO_PsB)ttf<)M$oIKo>ZBPgxm$IY~2rK~-0||k_!XSt^FG%P%2y`3G zr|n_?Ke51^P_AehS3kM0egD0W*P;LW&io%o27Nk^2=s3JIv&^i=Z-?ZdIQDKV)g$+ z&Gq}AYE+$EQRsLGs=A_mQbyQ$*dqXfS_pSX)Lozu1SD}CZEqCXZ#RH{PP)k`a;=qm z>4LZZ&a75?A|62~nbA`o-;2q-qz=kO8H?f9d|X7SbazUkOZJu1Rf2DIXSj)8k~Ds~ zg-=BoPQxxWJKOBvAAccEd%A(GLvPo2X`(}B{FN1+78_BnJPCAA2J5h~s#grJFVA5! zYciCFf__kj$BA=d8o<2n6g|f;WTq|&CCdERZAD0xC^*G$S+Bcm zeX#JP(7T^Q{$<*)#cxY2e`sk-P^@JgDRC};rTyk{y1=lTh5oI>A(K8zWaX$zM#xX1 zwu`Wwj{$v4=HXma0pVS8Dft9vxGV$saM=V++h^=yDQW#9`ZVirXNC3CZtIoZ-hxji zpMyt-hs7;+1KmzM#g%fRKQ87NNzlJ4kSq1pE=e{RfXRP#(_y`Zfy&y6%-imNH%R0{ z!71~?G0@QHv{5CC?0X4->v2Lvk3JU>fn$c(+K$q84kZngW-|1skIhVl6``$!n%k#UnM zy36iKi4B!2i}3VD;KQYH>jjgn@!|D0b|YcsA6rbKd&SeUm#^=h8S@dUrHl;t?%rVa zlIb;ejTbl39zwK@4924>8JBe-o?JenLbn-vVadRu<4Yp2!QpxC064)A_nEcAw z*1qrQ?q!AGlQtBaG@&(`5re>so9VfE9%E6Zh}llCZ>SPBC2|H#tf}qaG=w& zR8sr{l-vkUZ|`TX{K=cj1L<6z{RIkGbDxf11ia4XK6w19AdHxiyBL#$W z<*2nY0vV;@hD77RhW9{{7X1BszAVxilloC`Q-3U#;uyDA-d}j}*B?;2=@8!BR)n~Xr z%)wb916+f9U{6&#g}tvUC0bM+Pg><^CsQANr)Oz=SI>(drKk5$QhEAoomhc&5{=Dj z!GzwoV(SlpfYpM~WlCgcr>;-0Cpkx_CK~Yxu0vJqu-^ zv{2hdPl=}@ob-@r9Xe2Owqmr6fcY#70cX;i?6`$^J{#gsE2-p`6k? zZ7V#)Id66_IUUv7+ccBhFN^iM0y^31 zSh)QVs=Tl=p4WX#5u+qi`Hb}L?4Fd#<)jb1@jmIc=7wX3;oLeU@W6YuyJAK%%#f*` zTBp*O9>Djyt0Xr=Eih|CV))BhxF~%+-3m2(qsaIeRxkB@rprjv`z5S1A<6A10w1Zv3%HcFxfjlqcFH4ifV!&_wD;H;XhRf`bzRYXQHusY# z*%8cxJgYeuZ&q%Qta)DKOjn%_uD`MhmX?$1?#l4mU+Yg}KF2#}(ViU|9Q(3*=i_*C zOS7NnkJ`=K)~Q(}n-n%wQ#i3D#l$VOOfBNJd8R>?(_=-i)2d6&Z>D;g8fLd%Mx;7p z&&ki!O;>VOg*~@~#J`rkE0AR`K4)T)XrS~&%rUo`Q&?u9;rZ&rodRjd0)Y<$uG=?z zT@#6q)n69`>~h{5de_gIZo9%*L{;AL%`MwE3cWH5nO-Y0xtH0SoP;B|;fdL%Beplq zkwu#yUg%X-#$=wh?Z{(M*HKft__o?;CNk-<5 z-#|9*x8b4v9wWEDC(Hmno9bFkWdn$y)>W7skDUtPZIaHOir&aL+Yz?p@11@f2!!_0 z$MeSM3o%kMvzRWiqxyiKG*enPZZM_q&m8yOyvmBzbIqdI3Nj+KAt((=6&DTpu@Vld z0}VEZ)gK=SM&NR_-!Bui1U#C$J?0b3`{~EFWksuW z>YFb4P=xIq+i?|hCrEFKJr3`Hj9penW-@n5>%!UjyTGy5hST(*wZzV|&xfCq?#(uQ z`Z5t6B2C4~yD|l1Q$IcW{OqL0uu4je=eRr18`_lgVJWz?y;UmED&gb}z`=JCye8Fo znm^2b;Cm40Pr|oHdSF4T=GYImQ8(QuXyiZ75p10D>lIM5d~f{ClT7OV^2x^I#dBxZ zoZ&|pO11?N$!5yIWVY6?vkG`0a>%{UNj>DiTOw3Yd@4wm!?)*LscGOid|_fL07zTD z|D306iTfvZ4HVjX4LN_~y5HdQ8oU3A3jfGLuAx0Z(7?wQ^(!g4CZe+e9UC`vhN6ld zDcX1=e!+i1b%d)g0_9|90}xbkM`K7QcSoS0k(0ZEySLMyg#Q4b*U7>Eg({(cRK>68 z;cEYXrVorxCVnaWBe_9a?}YkSe()fu+%i-0eDT0;1C0LMy!dru^o!ZR)5Z=RcV&dHlN~}0X%m1B%HO#E1>J=ugoOW% z-0y~cGV?Pw9HhwCG>~jAm;~Zc@CG*EKw=7Pp?VFsRN0(u(+U*#H`wS#U!|%SP2Sb& zW8f>7X2erTAcQG1CQ^$zpJg+l-@Oku|jqY)IU z?su00w>|>NIn^DtQ3F?D-(tq#t!8D%GOfiFC$(l#%M2PZs{yEe&X`Hrx4BRE{S)rT zHS0?(>tp*+7AA~JsmCq8)Ny=+*vGMvr?ti+e4g7GByQdcev@QaaLjkA87)Za7|%u` z!Ur0eWBhq|Myx^SDW(ri$gS&J+IF$w*%NKq=`Bgr5!I@h4@?5_jelg%=TRO?3#2_y z9uLpmvi{7G>pqLaGdb4q!e@QxjhwB{ez=p;q7lN-(Z~R{gp+)=>8tUH|F$funy-O( zl#kXVjS^+%h;6~r*2KOt9s4u!wWrYP0$WQFOE!&8SO9&7bw_JgQQ4jTN**PWoGYLG z$NB!5n#A~)A&CH{S)>qQ{Ggg1k)2}_X`mW&-B|PeTa!x_X%98D^l}J4n1n*9*WPyR z1bP`;#fll_Noi(yQ%k^)1;5`V5l>n16z!0^BdfYP%zzAHrB8SF7Y;|^oKgnE`Yco6 z;~aX`6L+tMO=7=#x|4*_zTB(RQ&15Ua3icM?i~i7x4+Nwo5~nFB&kB=wGVf#aqkrj zPX;#K^wu5iAcZz<99B7RPQDE%e9my+^htS!NYFGh;n2J3vbOXgCl-0R42$ZyjQuCd z6kmt6Q+4xFFXruW=Wl3b1#k9z=^BN}g{*M9RK>nH@G3YH!NJ+u-imN7jx?BQcQ|n^ zCQ~i^xf}FDZNC)PY9ZfebbC>;ZqASChzR!y$zn{y_=(F3C4*Irx5gs8>2~#o+2_F` zntPKuRj2djWYy#EziP2p5yjdrt<#^?0_S`RRN*;N{x~4! z@04^`z{g|FTdNKa%Ke>Ycfx9aI*#O2LTp3F^k+)CYJGEG=;qBq&{zL;-eD0ns$`$1 z!M)FjA|KR*zY%v0wzk^PuQ7~B43mo4W#fDdg9K@R+p>E z+^Od}ia&hR&K0P`X&-A|p=7vo45~!FdcQw(>x;P?-}ulAc8a>MaxHg!eJ9sVq~P+O zBHQ+s5Dccb$_k2saLSWm51?;*@&gD)WbfV1IFOv^1|WJ26Zd(}*IJ-$luJO>-Sf8> z1WsDrJG3UO$wG-GQ{#JhFCQVHlliv@%u#1PXz4x3_$qbm0 z$DRlUJsj9>_V+|`!M;>URjA=ek!qo=Iy5B;5$r;ma)Bk9OED^%+`!3) zajbEX&K&PG>~HIRJF*R1%3%x?HIf;@phV5JS{xpC*)uACUv%}7wx%|{1Lp?C%LIvGZ&PZ?<4y!_9pQ#01vSP)cyLCknK~7>RL>TjkB3%wT^;LQf{oXg zE4T(-%$Q($#@Vmqx@{+QFH>eSC53y~FNMoxdq(gI6QD2ERosek-$};OC3*1kF;`g8 zK7G%cX$8^KEf1^Y)cCN13kN#37BPKxF>YOC@dMi1-lt7(FUErmufmOTp2YRrn4PUNl# z`C3}*A$ez|^G>-U)Dv6q5R81=MFpd2jU!Qvus%&0y9CA@IQm#lY)`7M!PK~+i4a0V zJ9BL^o+GHqGSfw30mZ}!Z+|)629u?1DaV!`1gfo?nf{`vGgca5QfOOv;oETQW})a& z)CQ}>>@kfXe)=B50NOb!dR5q?go~ZB<$}e-FgBBoe5#z5=bH6y3|FKijE4c&E+CAI zihP8?(CEilp62|0i*WJFX+m@LO^*KIsK~5~659gF{%!aTJ*C;1*{0xSeP82CeP{AQ zp^IGgF6FRFjkyqJ~7Y~}An?>B2f5v}d*fy7$&t*FP5)y*2y z`I}lpmt?W`x^BqXdqKHN!Zk|QPtP1D;xTSa8In+^+I1Xm3?emEcUSsfEe3xdZ&j#~ z*s2ZNHA{;Jhwlbv7Nl~^CAC<7HBq_svmXaBT}8$A>8-@g5e!3|sgkykCsEEEa``yv zq`I`-dkF=VZ&{JE6|@|;5aKOJ81E;V@-XKcfH!B4p^0xdPZvg`V+?b$U4s?vW$)FY z%KM(31w&w;j}CU3^%AF{SZ-lhe>Qaw zduhKdWI7)#HF6T-Y5w*JH9obgop1G#A!hfZAFvJQJ{;)1d{F&NN!Tub+KT}qYxku4 zBXPsV>vOtfmC?p&g*-2-U(X{(NR7XP2WKn{))~t!0aOP`tD3t7A5D4m?O2;&L_Oh?A7R>rP_THbeJyof zk2j8iX_DKC#0pqL$T&;`0cVX!&iny&rY&Lko`$6fc#%+-b+ax~!wt?;&R~;S-0m~G;U_pDKP!?VYe77}?VbMwut?H3A=Z3Ia7ki% z|AR3ubqC>AqbgquNWT)ow~U&wC`va2B*0!e7MV2;SQ@DWm)OEl$vNz!dxxTsLFUWB zx>Tv^uti_e7NX;xH+Npd@lgUlCTG^rxFwx2kUfl-%0)S5m9#UFf8+3ZUTYS(F!znh zBw!i`cBVK)F0Av5F|iiy9ZpuKOJ zLA-2|2>z4-A+{4_@%{W=%U#HBr5CH2aQDTI)9H(2bv{(O1&+5fcMNV|UT@nzY3pR* zI_I>~tUhN>c9&pc2rpKJY9kk`j?A*vW0Sh3dva^+=6uF&zSM6P=8JcUq$Gu_TrOSa zPCn`q;Z94Zp@OSvDnlzVrUe69H>^l+hsdm}bt&5VK1^x9-JBg}!T$5Ay5<5yAsPSG zo;Rzq!6p+jsbqPSh~0y3?vjfMqkJ6pZY|c zhXX=NO9@!5m_B!PWw#L>W_!2(pwG|xlCCf}#WWi)-P;*a23OZPR;npuDCauS@{Cw& z*(;$TVKoU!bxqa%NxZ`@DK*W#kym`e@Iq_3W#_K@x_FWYrH_>@ZMCm~wvDJ_fXP(GCGP_G? z!RQjvS}>3ZpY>BEQQa*#a68>(cOZ}LaxqqDPMHz5=b8t_5I0LGk5k$~4(R9BRpE}Q zW1Vt8gO{T6y9kgN{5z%*A(v~L=?xD*AcK1&8P%W_snCkV4W8V=fdRKzGojk5+)3*V z6%=EG+&sox<|gxpC#rf#ksVE6ZI0j$mh3uR{6RMU3dc%|50Y@EtaZ$$gSiKzlkWEZ zI2Ar_*^GoI>>rZEUi2Id+PZgHX(J2GCia7&w?~H$RA%d=Q|R!WCduW97WyXC* z>c}UdlToVEEGn;3*a@`5Oh&C=>n;Zq14rnWPeNAp4WwK`adpTcOjajkNs*?*B9=ke zd>v^mw$#ZJsJqH%xojvF(nJTWiHT-kxfR^?xe^YScJAcTFiYNgIx^4`=0j=CgX3L& z-t%O6}C>#;#_S%PxW1KWUHULJy!if4@KZRm}WZAW3 zZxw)M=(4H1J;EPh|K|;ZzM3LX6kV+SqtuM92LEp^8^99c690ACkR9#2t4ZNYVV?g+!CG`yiltpb(t z%4A3)R!+xNghc&VPlyBMs>@JR?x;*Xty}N?tjh5U-j)P@;NC2vTS~KL9;`n^thllv zr9y2S_H@RP(NKTJHkeboo~tP&YQ$l#iudtz)~f{KoA9Rr>`fm^S~`q3*{Fhp#MG8E zVHW^cms6L`a_>&+VA`orS(>lgqay|Fb9T6@k{WC*7{Ss%%ws9XZV9dy@WK@oG%EO_ zd#r+p?%yyD(Fg(g)*kB<@|`)%*UCjJ(TyFiRlYC2@#KRJ;3%2=nX{ew!{twkBSh)D zC5@ze;Zolzn0t?9bZdQeo-;Z~8<g)T2nk9NVk8sMWdq ziE}q^I$|(q3@PhhsLxwL3;ejDnKea#ogrZ8(aO1`$I55R(F<^_;)yimy9yJQdKTzG z#9HCGTJV9Zz;E)Q81-5!uwn^qP-9`6~$`F!bCw>q9Xa= z8PlWoAs?kLFF%wJ@gNw^1bCLAUU^65CDt@T#P9W1x{Gg+C@aZ1^z*1!+bR%OD{(0R zB1uUPYSsFEFQUtzeBj0T?hq0VAPZ4!oG*V6hM1spjRVJ212QFhZ;>n)=MfHYW<|5a zm7zh*?lwz-zPB61r*I$v%Vh=#=YHu-%Z0P1PGnf;xEe_}T~Jpnr_$eOYjal6ZrgvP z_;hcO?aH*KeW~~ZNU|?(vx+L|)oUgEecy}BsQK2`1iJe>t7wb`O^Vky8EUfm`;<`-`(JZXXQzbGhAEs)GMT19^i^n_b zC1SC-32`fPI=j#R*xl`0e7F2l>$aqHu}bdv5vSebvNVsDcL@bqoo6r7WOfHU-#NuZ zf|}kXo9&p_G}p{Jw{h*w9~9}|G-^1kuw>@yFMGybXAIj25KPtjW>6k1G{2v&$s6>x zP~i#xDX5<2LYtRohQXsUeq;>VfYCLyyI4+DS8ZR`4?}cX^3m-1aLgtjZ$7P+6~<@1 znP;%4;-gzBpd9@5TlxF;-O=6ba=N-|CPz&B2Kr*rnBr88ZzJ;pW5&XgGN)PURf@g! z*k$ey;#`!6zhLcct{Op2N~^KxM20G;wTnGd+$#4py6=P`V))@1)+(t%F#XpK8&ipT zVSIu-a{<;CL%2(N5^?YNH=WHWbe3>|8yp$Gi$+M zs!95j5E1)(rzzRSCKIT2?0l~EO|NW?UjECYZ{^}}Vj6)-eCjni$CuQz8CQkH%yBw` zVHUEqHwE>F&zu$~G9lZ?)1P{e)Nl7M79z=bX%pnsIE=jTSiK+UsM$(WvDLg|x6-sS zUIFeWBt!)iY%;7bIO?Zq`N1r0aN`oK6gGO;Oj;NTEc2c-;oxm<#55!^2{O85`onBLi$|`_KgOv>=H!~57tk6rk2Gbnh zVmz5Iue{!2-kB>z?%>92)PBJ)Pg92#GD!B5N)e-nV8~_nCpH(=W8) z_o0EqGe{+$+PaKRUz-Lql#9M%e~s|lc)bYf0dS1>ML_!qvrpi@tTKFA{^`O|_$zZS ziDpw*A6~1rjoN)C{n0kau&>?=cR`wXkK=ZW`bvB|Q~vfFHcgVd0|Z*|59RxxN860r z0K`O&h~_;W8d{xcZ*xg!;mCC<`@+Dm>1Y^1Rp))}2-#KK#n(DE91W}dyfy8!%S$Ns zLm5wxo~2ab!9n~o!>6J7R`o>Y%*}N~D@Fn%SPPr|_thUO6NwsRXn!_yX9UC-D-@BxIZ}OL zn|I^sprzfcs?*_cIo1fo5#O=LZ~XQ~ZfYHY{qD(v)XJ{62)KRwCNpN_om$GDy7YcA zLlWEKL6zjJePoiUF7N)qxqo$%{px=EOM&Rm4zho&9{t&~^^cQ(c3S=8)A$gaqiX zHiJQ6p}($0(;)xAC;nG?V02U8UwuQNLfSaFB9Q1#PIT?iDG+hJ zM}qnu9w>CB?~kTOcLxvP^?AB(fK)b