From 272c75a0715f8686a6b2eab8d95fbe643e7bf100 Mon Sep 17 00:00:00 2001 From: 1Day Date: Tue, 31 May 2022 08:39:45 +0200 Subject: [PATCH 01/27] Update SocialiteController.php --- .../Controllers/Auth/SocialiteController.php | 35 +++++++++++++------ 1 file changed, 24 insertions(+), 11 deletions(-) diff --git a/app/Http/Controllers/Auth/SocialiteController.php b/app/Http/Controllers/Auth/SocialiteController.php index c2418ce8..c91a18f3 100644 --- a/app/Http/Controllers/Auth/SocialiteController.php +++ b/app/Http/Controllers/Auth/SocialiteController.php @@ -7,6 +7,7 @@ use App\Models\DiscordUser; use App\Models\Settings; use App\Models\User; use App\Models\Voucher; +use Exception; use Illuminate\Support\Facades\Auth; use Illuminate\Support\Facades\Http; use Laravel\Socialite\Facades\Socialite; @@ -35,17 +36,29 @@ class SocialiteController extends Controller $guildId = config("SETTINGS::DISCORD:GUILD_ID"); $roleId = config("SETTINGS::DISCORD:ROLE_ID"); - //save / update discord_users - if (is_null($user->discordUser)) { - //create discord user in db - DiscordUser::create(array_merge($discord->user, ['user_id' => Auth::user()->id])); - //update user - Auth::user()->increment('credits', config('SETTINGS::USER:CREDITS_REWARD_AFTER_VERIFY_DISCORD')); - Auth::user()->increment('server_limit', config('SETTINGS::USER:SERVER_LIMIT_REWARD_AFTER_VERIFY_DISCORD')); - Auth::user()->update(['discord_verified_at' => now()]); - } else { - $user->discordUser->update($discord->user); - } + //save / update discord_users + + //check if discord account is already linked to an cpgg account + if (is_null($user->discordUser)) { + $discordLinked = DiscordUser::where('id', '=', $discord->id)->first(); + if ($discordLinked !== null) { + return redirect()->route('profile.index')->with( + 'error', + 'Discord account already linked!' + ); + } + + //create discord user in db + DiscordUser::create(array_merge($discord->user, ['user_id' => Auth::user()->id])); + + //update user + Auth::user()->increment('credits', config('SETTINGS::USER:CREDITS_REWARD_AFTER_VERIFY_DISCORD')); + Auth::user()->increment('server_limit', config('SETTINGS::USER:SERVER_LIMIT_REWARD_AFTER_VERIFY_DISCORD')); + Auth::user()->update(['discord_verified_at' => now()]); + + } else { + $user->discordUser->update($discord->user); + } //force user into discord server //TODO Add event on failure, to notify ppl involved From c97b1fa1863a859907b42fa970480a9cf924ed50 Mon Sep 17 00:00:00 2001 From: 1Day Date: Thu, 2 Jun 2022 08:44:54 +0200 Subject: [PATCH 02/27] Added Readall Button --- app/Http/Controllers/NotificationController.php | 15 +++++++++------ resources/views/notifications/index.blade.php | 4 ++++ routes/web.php | 1 + 3 files changed, 14 insertions(+), 6 deletions(-) diff --git a/app/Http/Controllers/NotificationController.php b/app/Http/Controllers/NotificationController.php index c48ea1de..b8884e7e 100644 --- a/app/Http/Controllers/NotificationController.php +++ b/app/Http/Controllers/NotificationController.php @@ -2,11 +2,6 @@ namespace App\Http\Controllers; -use Illuminate\Contracts\View\Factory; -use Illuminate\Contracts\View\View; -use Illuminate\Http\Request; -use Illuminate\Http\Response; -use Illuminate\Notifications\Notification; use Illuminate\Support\Facades\Auth; class NotificationController extends Controller @@ -15,7 +10,6 @@ class NotificationController extends Controller public function index() { $notifications = Auth::user()->notifications()->paginate(); - return view('notifications.index')->with([ 'notifications' => $notifications ]); @@ -31,4 +25,13 @@ class NotificationController extends Controller 'notification' => $notification ]); } + + public function readAll(){ + $notifications = Auth::user()->notifications()->get(); + foreach($notifications as $notification){ + $notification->markAsRead(); + } + return $this->index(); + + } } diff --git a/resources/views/notifications/index.blade.php b/resources/views/notifications/index.blade.php index d240646b..91ddddd8 100644 --- a/resources/views/notifications/index.blade.php +++ b/resources/views/notifications/index.blade.php @@ -29,6 +29,10 @@

{{__('All notifications')}}

+ + + + @foreach($notifications as $notification)
diff --git a/routes/web.php b/routes/web.php index e9555c66..168549f7 100644 --- a/routes/web.php +++ b/routes/web.php @@ -58,6 +58,7 @@ Route::middleware(['auth', 'checkSuspended'])->group(function () { })->middleware(['auth', 'throttle:3,1'])->name('verification.send'); #normal routes + Route::get('notifications/readAll',[NotificationController::class,'readAll'])->name('notifications.readAll'); Route::resource('notifications', NotificationController::class); Route::resource('servers', ServerController::class); Route::resource('profile', ProfileController::class); From 2e17cab2956c401532ea4c49fa94f33f250d5ac4 Mon Sep 17 00:00:00 2001 From: 1Day Date: Thu, 2 Jun 2022 08:50:44 +0200 Subject: [PATCH 03/27] On NavBar aswell --- app/Http/Controllers/NotificationController.php | 2 +- resources/views/layouts/main.blade.php | 3 +++ resources/views/notifications/index.blade.php | 2 +- 3 files changed, 5 insertions(+), 2 deletions(-) diff --git a/app/Http/Controllers/NotificationController.php b/app/Http/Controllers/NotificationController.php index b8884e7e..7853c1ac 100644 --- a/app/Http/Controllers/NotificationController.php +++ b/app/Http/Controllers/NotificationController.php @@ -31,7 +31,7 @@ class NotificationController extends Controller foreach($notifications as $notification){ $notification->markAsRead(); } - return $this->index(); + return redirect()->back(); } } diff --git a/resources/views/layouts/main.blade.php b/resources/views/layouts/main.blade.php index 742bcd02..9c3be625 100644 --- a/resources/views/layouts/main.blade.php +++ b/resources/views/layouts/main.blade.php @@ -112,6 +112,9 @@ {{ __('See all Notifications') }} + + {{ __('Mark all as read') }}
diff --git a/resources/views/notifications/index.blade.php b/resources/views/notifications/index.blade.php index 91ddddd8..0bd9c87c 100644 --- a/resources/views/notifications/index.blade.php +++ b/resources/views/notifications/index.blade.php @@ -30,7 +30,7 @@

{{__('All notifications')}}

- + @foreach($notifications as $notification) From c5096c88ece622d0892b3d9dec974af9b65fba15 Mon Sep 17 00:00:00 2001 From: 1Day Date: Thu, 2 Jun 2022 09:14:18 +0200 Subject: [PATCH 04/27] Update Versionnumber --- config/app.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/config/app.php b/config/app.php index 7f38ae77..4eb2700b 100644 --- a/config/app.php +++ b/config/app.php @@ -4,7 +4,7 @@ use App\Models\Settings; return [ - 'version' => '0.7.5', + 'version' => '0.7.6', /* |-------------------------------------------------------------------------- From 378187aea0811ab2d7abbe18331807da33c1899c Mon Sep 17 00:00:00 2001 From: 1Day Date: Thu, 2 Jun 2022 16:11:24 +0200 Subject: [PATCH 05/27] Referal System --- app/Classes/Settings/Misc.php | 5 + app/Http/Controllers/Admin/UserController.php | 18 +++- .../Controllers/Auth/RegisterController.php | 35 +++++++ app/Models/User.php | 3 +- app/Notifications/ReferralNotification.php | 59 ++++++++++++ .../2022_06_02_081655_referral_code.php | 53 +++++++++++ ...2022_06_02_091921_table-user-referrals.php | 35 +++++++ database/seeders/Seeds/SettingsSeeder.php | 14 +++ .../views/admin/settings/tabs/misc.blade.php | 26 +++++ resources/views/admin/users/index.blade.php | 2 + resources/views/admin/users/show.blade.php | 31 +++++- resources/views/auth/register.blade.php | 11 ++- resources/views/profile/index.blade.php | 95 +++++++++++-------- 13 files changed, 345 insertions(+), 42 deletions(-) create mode 100644 app/Notifications/ReferralNotification.php create mode 100644 database/migrations/2022_06_02_081655_referral_code.php create mode 100644 database/migrations/2022_06_02_091921_table-user-referrals.php diff --git a/app/Classes/Settings/Misc.php b/app/Classes/Settings/Misc.php index beaa3a44..e0404f7a 100644 --- a/app/Classes/Settings/Misc.php +++ b/app/Classes/Settings/Misc.php @@ -37,6 +37,8 @@ class Misc 'mailencryption' => 'nullable|string', 'mailfromadress' => 'nullable|string', 'mailfromname' => 'nullable|string', + 'enable_referral' => 'nullable|string', + 'referral_reward' => 'nullable|numeric', ]); if ($validator->fails()) { @@ -69,6 +71,9 @@ class Misc "SETTINGS::MAIL:ENCRYPTION" => "mailencryption", "SETTINGS::MAIL:FROM_ADDRESS" => "mailfromadress", "SETTINGS::MAIL:FROM_NAME" => "mailfromname", + "SETTINGS::REFERRAL::ENABLED" => "enable_referral", + "SETTINGS::REFERRAL::REWARD" => "referral_reward" + ]; diff --git a/app/Http/Controllers/Admin/UserController.php b/app/Http/Controllers/Admin/UserController.php index 7c293a58..963069ad 100644 --- a/app/Http/Controllers/Admin/UserController.php +++ b/app/Http/Controllers/Admin/UserController.php @@ -8,6 +8,7 @@ use App\Http\Controllers\Controller; use App\Models\Settings; use App\Models\User; use App\Notifications\DynamicNotification; +use Illuminate\Support\Facades\DB; use Spatie\QueryBuilder\QueryBuilder; use Exception; use Illuminate\Contracts\Foundation\Application; @@ -52,8 +53,18 @@ class UserController extends Controller */ public function show(User $user) { + //QUERY ALL REFERRALS A USER HAS + //i am not proud of this at all. + $allReferals = array(); + $referrals = DB::table("user_referrals")->where("referral_id","=",$user->id)->get(); + foreach($referrals as $referral){ + array_push($allReferals, $allReferals["id"] = User::query()->findOrFail($referral->registered_user_id)); + } + array_pop($allReferals); + return view('admin.users.show')->with([ - 'user' => $user + 'user' => $user, + 'referrals' => $allReferals ]); } @@ -258,6 +269,9 @@ class UserController extends Controller ->addColumn('servers', function (User $user) { return $user->servers->count(); }) + ->addColumn('referrals', function (User $user) { + return DB::table('user_referrals')->where("referral_id","=",$user->id)->count(); + }) ->addColumn('discordId', function (User $user) { return $user->discordUser ? $user->discordUser->id : ''; }) @@ -307,7 +321,7 @@ class UserController extends Controller ->orderColumn('last_seen', function ($query) { $query->orderBy('last_seen', "desc"); }) - ->rawColumns(['avatar', 'name', 'credits', 'role', 'usage', 'actions', 'last_seen']) + ->rawColumns(['avatar', 'name', 'credits', 'role', 'usage', 'referrals', 'actions', 'last_seen']) ->make(true); } } diff --git a/app/Http/Controllers/Auth/RegisterController.php b/app/Http/Controllers/Auth/RegisterController.php index c4c3ba2a..580781aa 100644 --- a/app/Http/Controllers/Auth/RegisterController.php +++ b/app/Http/Controllers/Auth/RegisterController.php @@ -6,9 +6,13 @@ use App\Classes\Pterodactyl; use App\Http\Controllers\Controller; use App\Models\Settings; use App\Models\User; +use App\Notifications\ReferralNotification; use App\Providers\RouteServiceProvider; +use Carbon\Carbon; use Illuminate\Foundation\Auth\RegistersUsers; use Illuminate\Support\Facades\App; +use Illuminate\Support\Facades\Auth; +use Illuminate\Support\Facades\DB; use Illuminate\Support\Facades\Hash; use Illuminate\Support\Facades\Validator; use Illuminate\Support\Str; @@ -78,6 +82,18 @@ class RegisterController extends Controller return Validator::make($data, $validationRules); } + /** + * Create a unique Referral Code for User + * @return string + */ + protected function createReferralCode(){ + $referralcode = STR::random(8); + if (User::where('referral_code', '=', $referralcode)->exists()) { + $this->createReferralCode(); + } + return $referralcode; + } + /** * Create a new user instance after a valid registration. * @@ -92,6 +108,8 @@ class RegisterController extends Controller 'credits' => config('SETTINGS::USER:INITIAL_CREDITS', 150), 'server_limit' => config('SETTINGS::USER:INITIAL_SERVER_LIMIT', 1), 'password' => Hash::make($data['password']), + 'referral_code' => $this->createReferralCode(), + ]); $response = Pterodactyl::client()->post('/application/users', [ @@ -116,7 +134,24 @@ class RegisterController extends Controller 'pterodactyl_id' => $response->json()['attributes']['id'] ]); + //INCREMENT REFERRAL-USER CREDITS + if(!empty($data['referral_code'])){ + $ref_code = $data['referral_code']; + $new_user = $user->id; + if($ref_user = User::query()->where('referral_code', '=', $ref_code)->first()) { + $ref_user->increment('credits', config("SETTINGS::REFERRAL::REWARD")); + $ref_user->notify(new ReferralNotification($ref_user->id,$new_user)); + //INSERT INTO USER_REFERRALS TABLE + DB::table('user_referrals')->insert([ + 'referral_id' => $ref_user->id, + 'registered_user_id' => $user->id, + 'created_at' => Carbon::now(), + 'updated_at' => Carbon::now() + ]); + } + + } return $user; } diff --git a/app/Models/User.php b/app/Models/User.php index 3767cf4e..84d87f76 100644 --- a/app/Models/User.php +++ b/app/Models/User.php @@ -60,7 +60,8 @@ class User extends Authenticatable implements MustVerifyEmail 'pterodactyl_id', 'discord_verified_at', 'avatar', - 'suspended' + 'suspended', + 'referral_code' ]; /** diff --git a/app/Notifications/ReferralNotification.php b/app/Notifications/ReferralNotification.php new file mode 100644 index 00000000..1f48df37 --- /dev/null +++ b/app/Notifications/ReferralNotification.php @@ -0,0 +1,59 @@ +user = User::findOrFail($user); + $this->ref_user = User::findOrFail($ref_user); + } + + /** + * Get the notification's delivery channels. + * + * @param mixed $notifiable + * @return array + */ + public function via($notifiable) + { + return ['database']; + } + + /** + * Get the array representation of the notification. + * + * @param mixed $notifiable + * @return array + */ + public function toArray($notifiable) + { + return [ + 'title' => __("Someone registered using your Code!"), + 'content' => " +

You received ".config('SETTINGS::REFERRAL::REWARD')." ".config('SETTINGS::SYSTEM:CREDITS_DISPLAY_NAME')."

+

because ".$this->ref_user->name." registered with your Referral-Code!

+

Thank you very much for supporting us!.

+

".config('app.name', 'Laravel')."

+ ", + ]; + } +} diff --git a/database/migrations/2022_06_02_081655_referral_code.php b/database/migrations/2022_06_02_081655_referral_code.php new file mode 100644 index 00000000..e29d1493 --- /dev/null +++ b/database/migrations/2022_06_02_081655_referral_code.php @@ -0,0 +1,53 @@ +string('referral_code')->lenght(8)->nullable(); + }); + + $existing_user = User::where('referral_code', '')->get(); + + foreach ($existing_user as $user) { + $random = STR::random(8); + if (User::where('referral_code', '=', $random)->doesntExist()) { + DB::table("users") + ->where("id", "=", $user->id) + ->update(['referral_code' => $random]); + }else{ + $random = STR::random(8); + DB::table("users") + ->where("id", "=", $user->id) + ->update(['referral_code' => $random]); + } + } + } + + + /** + * Reverse the migrations. + * + * @return void + */ + public function down() + { + Schema::table('users', function (Blueprint $table) { + $table->dropColumn('referral_code'); + }); + } + +} diff --git a/database/migrations/2022_06_02_091921_table-user-referrals.php b/database/migrations/2022_06_02_091921_table-user-referrals.php new file mode 100644 index 00000000..2734511b --- /dev/null +++ b/database/migrations/2022_06_02_091921_table-user-referrals.php @@ -0,0 +1,35 @@ +unsignedBigInteger('referral_id'); + $table->unsignedBigInteger('registered_user_id'); + $table->foreign('referral_id')->references('id')->on('users'); + $table->foreign('registered_user_id')->references('id')->on('users'); + $table->timestamps(); + }); + + } + + /** + * Reverse the migrations. + * + * @return void + */ + public function down() + { + Schema::dropIfExists('user_referrals'); + } +} diff --git a/database/seeders/Seeds/SettingsSeeder.php b/database/seeders/Seeds/SettingsSeeder.php index 31ada4a3..69abd413 100644 --- a/database/seeders/Seeds/SettingsSeeder.php +++ b/database/seeders/Seeds/SettingsSeeder.php @@ -465,5 +465,19 @@ class SettingsSeeder extends Seeder 'type' => 'string', 'description' => 'Mailer From Name' ]); + Settings::firstOrCreate([ + 'key' => 'SETTINGS::REFERRAL::ENABLED', + ], [ + 'value' =>"true", + 'type' => 'string', + 'description' => 'Enable or disable the referral system' + ]); + Settings::firstOrCreate([ + 'key' => 'SETTINGS::REFERRAL::REWARD', + ], [ + 'value' =>100, + 'type' => 'integer', + 'description' => 'Credit reward a user should receive when a user registers with his referral code' + ]); } } diff --git a/resources/views/admin/settings/tabs/misc.blade.php b/resources/views/admin/settings/tabs/misc.blade.php index bbbddb2a..a126b927 100644 --- a/resources/views/admin/settings/tabs/misc.blade.php +++ b/resources/views/admin/settings/tabs/misc.blade.php @@ -184,7 +184,33 @@ +
+
+
+

Referral

+
+
+
+
+
+ + +
+
+
+ +
+
+ + +
+
+
diff --git a/resources/views/admin/users/index.blade.php b/resources/views/admin/users/index.blade.php index 959e12a9..d22f4d11 100644 --- a/resources/views/admin/users/index.blade.php +++ b/resources/views/admin/users/index.blade.php @@ -47,6 +47,7 @@ {{__('Email')}} {{CREDITS_DISPLAY_NAME}} {{__('Servers')}} + {{__("Referrals")}} {{__('Verified')}} {{__('Last seen')}} @@ -90,6 +91,7 @@ {data: 'email', name: 'users.email'}, {data: 'credits' , name : 'users.credits'}, {data: 'servers' , sortable : false}, + {data: 'referrals'}, {data: 'verified' , sortable : false}, {data: 'last_seen'}, {data: 'actions' , sortable : false}, diff --git a/resources/views/admin/users/show.blade.php b/resources/views/admin/users/show.blade.php index a49e7f51..32202fde 100644 --- a/resources/views/admin/users/show.blade.php +++ b/resources/views/admin/users/show.blade.php @@ -244,8 +244,37 @@ @include('admin.servers.table' , ['filter' => '?user=' . $user->id])
- + +
+
+
{{__('Referals')}}
+
+
+ + + @foreach($referrals as $referral) +
+
+
+ +
+ +
+ + {{$referral->created_at->diffForHumans()}} + +
+
+
+ @endforeach +
+ +
diff --git a/resources/views/auth/register.blade.php b/resources/views/auth/register.blade.php index 30396d5e..ec6e44d4 100644 --- a/resources/views/auth/register.blade.php +++ b/resources/views/auth/register.blade.php @@ -91,7 +91,16 @@ - + @if(config('SETTINGS::REFERRAL::ENABLED') == "true") +
+ +
+
+ +
+
+
+ @endif
{!! htmlFormSnippet() !!} @error('g-recaptcha-response') diff --git a/resources/views/profile/index.blade.php b/resources/views/profile/index.blade.php index e6ca8edb..b471e14e 100644 --- a/resources/views/profile/index.blade.php +++ b/resources/views/profile/index.blade.php @@ -12,7 +12,7 @@
@@ -33,7 +33,7 @@ {{ __('You have not yet verified your email address') }} {{ __('Click here to resend verification email') }} + href="{{ route('verification.send') }}">{{ __('Click here to resend verification email') }}
{{ __('Please contact support If you didnt receive your verification email.') }} @@ -43,16 +43,18 @@ @if (is_null(Auth::user()->discordUser) && strtolower($force_discord_verification) == 'true') @if (!empty(config('SETTINGS::DISCORD:CLIENT_ID')) && !empty(config('SETTINGS::DISCORD:CLIENT_SECRET')))
-
{{ __('Required Discord verification!') }} +
+ {{ __('Required Discord verification!') }}
{{ __('You have not yet verified your discord account') }} {{ __('Login with discord') }}
+ href="{{ route('auth.redirect') }}">{{ __('Login with discord') }}
{{ __('Please contact support If you face any issues.') }}
@else
-
{{ __('Required Discord verification!') }} +
+ {{ __('Required Discord verification!') }}
{{ __('Due to system settings you are required to verify your discord account!') }}
{{ __('It looks like this hasnt been set-up correctly! Please contact support.') }}' @@ -72,9 +74,10 @@
+ data-label="Change your avatar" data-max-file-size="3" + data-save-initial-image="true" + style="width: 140px;height:140px; cursor: pointer" + data-size="140,140"> avatar
@@ -84,10 +87,11 @@

{{ $user->email }} @if ($user->hasVerifiedEmail()) + class="text-success fas fa-check-circle"> @else - + @endif

@@ -95,8 +99,23 @@ {{ $user->Credits() }}
+ + +
+ @if(config('SETTINGS::REFERRAL::ENABLED') == "true" && $user->role != "member") + + {{_("Referral URL")}} : {{route("register")}}?ref={{$user->referral_code}} + @else + + {{_("Make a purchase to reveal your referral-URL")}} + @endif +
+
+
{{ $user->role }}
@@ -107,7 +126,7 @@
@@ -123,22 +142,22 @@ @endforeach @endif - @if( $errors->has('pterodactyl_error_status') ) - @foreach( $errors->get('pterodactyl_error_status') as $err ) - + @if( $errors->has('pterodactyl_error_status') ) + @foreach( $errors->get('pterodactyl_error_status') as $err ) + {{ $err }} - @endforeach - @endif + @endforeach + @endif
@error('name') -
- {{ $message }} -
+
+ {{ $message }} +
@enderror
@@ -151,9 +170,9 @@ value="{{ $user->email }}"> @error('email') -
- {{ $message }} -
+
+ {{ $message }} +
@enderror
@@ -169,12 +188,13 @@ + name="current_password" type="password" + placeholder="••••••"> @error('current_password') -
- {{ $message }} -
+
+ {{ $message }} +
@enderror @@ -187,9 +207,9 @@ name="new_password" type="password" placeholder="••••••"> @error('new_password') -
- {{ $message }} -
+
+ {{ $message }} +
@enderror @@ -204,9 +224,9 @@ placeholder="••••••"> @error('new_password_confirmation') -
- {{ $message }} -
+
+ {{ $message }} +
@enderror @@ -245,9 +265,10 @@

avatar
+ height="100px" + class="rounded-circle" + src="{{ $user->discordUser->getAvatar() }}" + alt="avatar"> +
+ + +
diff --git a/resources/views/profile/index.blade.php b/resources/views/profile/index.blade.php index b471e14e..bf31a1c9 100644 --- a/resources/views/profile/index.blade.php +++ b/resources/views/profile/index.blade.php @@ -100,209 +100,209 @@ class="fa fa-coins mr-2">{{ $user->Credits() }} - -
- @if(config('SETTINGS::REFERRAL::ENABLED') == "true" && $user->role != "member") - - {{_("Referral URL")}} : {{route("register")}}?ref={{$user->referral_code}} - @else - - {{_("Make a purchase to reveal your referral-URL")}} - @endif + @if(config('SETTINGS::REFERRAL::ENABLED') == "true") + @if((config('SETTINGS::REFERRAL::ALLOWED') == "client" && $user->role != "member") || config('SETTINGS::REFERRAL::ALLOWED') == "everyone") +
+ + {{_("Referral URL")}} : {{route("register")}}?ref={{$user->referral_code}} + @else + + {{_("Make a purchase to reveal your referral-URL")}} + @endif +
+ @endif
- - -
{{ $user->role }} -
- {{ $user->created_at->isoFormat('LL') }} +
{{ $user->role }} +
+ {{ $user->created_at->isoFormat('LL') }} +
- -
-
-
-
-
-
-
- @if( $errors->has('pterodactyl_error_message') ) - @foreach( $errors->get('pterodactyl_error_message') as $err ) - - {{ $err }} - - @endforeach - @endif - @if( $errors->has('pterodactyl_error_status') ) - @foreach( $errors->get('pterodactyl_error_status') as $err ) - + +
+
+
+
+
+
+ @if( $errors->has('pterodactyl_error_message') ) + @foreach( $errors->get('pterodactyl_error_message') as $err ) + {{ $err }} - @endforeach - @endif -
+ @endforeach + @endif + @if( $errors->has('pterodactyl_error_status') ) + @foreach( $errors->get('pterodactyl_error_status') as $err ) + + {{ $err }} + + @endforeach + @endif +
- @error('name') -
- {{ $message }} + @error('name') +
+ {{ $message }} +
+ @enderror
- @enderror
-
-
-
-
+
+
+
- @error('email') -
- {{ $message }} + @error('email') +
+ {{ $message }} +
+ @enderror
- @enderror
-
-
-
-
{{ __('Change Password') }}
-
-
-
- - +
+
+
{{ __('Change Password') }}
+
+
+
+ + - @error('current_password') -
- {{ $message }} + @error('current_password') +
+ {{ $message }} +
+ @enderror +
+
+
+
+
+
+ + + @error('new_password') +
+ {{ $message }} +
+ @enderror +
+
+
+
+
+
+ + + + @error('new_password_confirmation') +
+ {{ $message }} +
+ @enderror
- @enderror
-
-
-
- - - @error('new_password') -
- {{ $message }} -
- @enderror -
-
-
-
-
-
- - - - @error('new_password_confirmation') -
- {{ $message }} -
- @enderror -
-
-
-
- @if (!empty(config('SETTINGS::DISCORD:CLIENT_ID')) && !empty(config('SETTINGS::DISCORD:CLIENT_SECRET'))) -
- @if (is_null(Auth::user()->discordUser)) - {{ __('Link your discord account!') }} -
-
- @if ($credits_reward_after_verify_discord) -

{{ __('By verifying your discord account, you receive extra Credits and increased Server amounts') }} -

- @endif -
-
- - - {{ __('Login with Discord') }} - - @else -
-
-

{{ __('You are verified!') }}

-
-
-
-
-
-
-

{{ $user->discordUser->username }} - {{ $user->discordUser->locale }} -

-

{{ $user->discordUser->id }} + @if (!empty(config('SETTINGS::DISCORD:CLIENT_ID')) && !empty(config('SETTINGS::DISCORD:CLIENT_SECRET'))) +

+ @if (is_null(Auth::user()->discordUser)) + {{ __('Link your discord account!') }} +
+
+ @if ($credits_reward_after_verify_discord) +

{{ __('By verifying your discord account, you receive extra Credits and increased Server amounts') }}

-
-
avatar
-
-
-
- @endif -
- @endif -
-
-
- + + {{ __('Login with Discord') }} + + @else +
+
+

{{ __('You are verified!') }}

+
+
+
+
+
+
+

{{ $user->discordUser->username }} + {{ $user->discordUser->locale }} +

+

{{ $user->discordUser->id }} +

+
+
avatar
+
+ +
+
+ @endif + +
+ @endif +
+
+
+ +
-
+
-
- + -
- +
+ -
- - +
+ + -@endsection + @endsection From f6eab834fc6e87179dc27cc14c36d786c6bef1d1 Mon Sep 17 00:00:00 2001 From: BuildTools Date: Sat, 4 Jun 2022 11:39:23 +0200 Subject: [PATCH 08/27] Fetch servers with product to reduce SQL-Queries --- app/Models/User.php | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/app/Models/User.php b/app/Models/User.php index 3767cf4e..53a5eaa7 100644 --- a/app/Models/User.php +++ b/app/Models/User.php @@ -233,14 +233,18 @@ class User extends Authenticatable implements MustVerifyEmail */ public function creditUsage() { - $usage = 0; + $servers = Server::query() + ->where('user_id', '=', $this->id) + ->with('product') + ->get(); - foreach ($this->Servers as $server) { + $usage = 0; + foreach ($servers as $server) { $usage += $server->product->price; } return number_format($usage, 2, '.', ''); - } + } /** * @return array|string|string[] From 204629539f5d0988e4fc44ed36fba6a838f5ab10 Mon Sep 17 00:00:00 2001 From: Tobiletsmc Date: Sun, 5 Jun 2022 12:22:26 +0200 Subject: [PATCH 09/27] Clean code and fetch servers with product in unSuspend method --- app/Models/User.php | 19 ++++++++++--------- 1 file changed, 10 insertions(+), 9 deletions(-) diff --git a/app/Models/User.php b/app/Models/User.php index 53a5eaa7..38b9c103 100644 --- a/app/Models/User.php +++ b/app/Models/User.php @@ -179,7 +179,7 @@ class User extends Authenticatable implements MustVerifyEmail */ public function suspend() { - foreach ($this->servers as $server) { + foreach ($this->servers() as $server) { $server->suspend(); } @@ -195,7 +195,7 @@ class User extends Authenticatable implements MustVerifyEmail */ public function unSuspend() { - foreach ($this->servers as $server) { + foreach ($this->getServersWithProduct() as $server) { if ($this->credits >= $server->product->getHourlyPrice()) { $server->unSuspend(); } @@ -232,20 +232,21 @@ class User extends Authenticatable implements MustVerifyEmail * @return string */ public function creditUsage() - { - $servers = Server::query() - ->where('user_id', '=', $this->id) - ->with('product') - ->get(); - + { $usage = 0; - foreach ($servers as $server) { + foreach ($this->getServersWithProduct() as $server) { $usage += $server->product->price; } return number_format($usage, 2, '.', ''); } + private function getServersWithProduct() { + return $this->servers() + ->with('product') + ->get(); + } + /** * @return array|string|string[] */ From 7ff3540ad87f3da78c0968d0befdd17fa7aa0100 Mon Sep 17 00:00:00 2001 From: Tobiletsmc Date: Sun, 5 Jun 2022 12:49:53 +0200 Subject: [PATCH 10/27] Undo change in suspend Method --- app/Models/User.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/Models/User.php b/app/Models/User.php index 38b9c103..a8242c5f 100644 --- a/app/Models/User.php +++ b/app/Models/User.php @@ -179,7 +179,7 @@ class User extends Authenticatable implements MustVerifyEmail */ public function suspend() { - foreach ($this->servers() as $server) { + foreach ($this->servers as $server) { $server->suspend(); } From 33a39fccd964ad3352e8fd5931292f13da6c2d18 Mon Sep 17 00:00:00 2001 From: 1Day Date: Tue, 7 Jun 2022 10:05:19 +0200 Subject: [PATCH 11/27] Switch Modes / Commission - Sign-Up --- app/Classes/Settings/Misc.php | 6 ++- .../Controllers/Admin/PaymentController.php | 38 +++++++++++++++++-- .../Controllers/Auth/RegisterController.php | 7 ++-- database/seeders/Seeds/SettingsSeeder.php | 14 +++++++ .../views/admin/settings/tabs/misc.blade.php | 28 +++++++++++++- 5 files changed, 84 insertions(+), 9 deletions(-) diff --git a/app/Classes/Settings/Misc.php b/app/Classes/Settings/Misc.php index 1b37777f..415a0615 100644 --- a/app/Classes/Settings/Misc.php +++ b/app/Classes/Settings/Misc.php @@ -40,6 +40,8 @@ class Misc 'enable_referral' => 'nullable|string', 'referral_reward' => 'nullable|numeric', 'referral_allowed' => 'nullable|string', + 'referral_percentage' => 'nullable|numeric', + 'referral_mode' => 'nullable|string', ]); if ($validator->fails()) { @@ -74,7 +76,9 @@ class Misc "SETTINGS::MAIL:FROM_NAME" => "mailfromname", "SETTINGS::REFERRAL::ENABLED" => "enable_referral", "SETTINGS::REFERRAL::REWARD" => "referral_reward", - "SETTINGS::REFERRAL::ALLOWED" => "referral_allowed" + "SETTINGS::REFERRAL::ALLOWED" => "referral_allowed", + "SETTINGS::REFERRAL:MODE" => "referral_mode", + "SETTINGS::REFERRAL:PERCENTAGE" => "referral_percentage" ]; diff --git a/app/Http/Controllers/Admin/PaymentController.php b/app/Http/Controllers/Admin/PaymentController.php index c7cf8a1e..9ba7bbac 100644 --- a/app/Http/Controllers/Admin/PaymentController.php +++ b/app/Http/Controllers/Admin/PaymentController.php @@ -19,6 +19,8 @@ use Illuminate\Http\JsonResponse; use Illuminate\Http\RedirectResponse; use Illuminate\Http\Request; use Illuminate\Support\Facades\Auth; +use Illuminate\Support\Facades\DB; +use Illuminate\Support\Facades\Log; use Illuminate\Support\Facades\Storage; use LaravelDaily\Invoices\Classes\Buyer; use LaravelDaily\Invoices\Classes\InvoiceItem; @@ -179,9 +181,19 @@ class PaymentController extends Controller } - //update role + //update role give Referral-reward if ($user->role == 'member') { $user->update(['role' => 'client']); + + if(config("SETTINGS::REFERRAL:MODE") == "commission" && $shopProduct->type=="Credits"){ + if($ref_user = DB::table("user_referrals")->where('registered_user_id', '=', $user->id)->first()){ + $ref_user = User::findOrFail($ref_user->referral_id); + $increment = number_format($shopProduct->quantity/100*config("SETTINGS::REFERRAL:PERCENTAGE"),0,"",""); + $ref_user->increment('credits', $increment); + } + + } + } //store payment @@ -326,9 +338,19 @@ class PaymentController extends Controller $user->increment('server_limit', $shopProduct->quantity); } - //update role + //update role give Referral-reward if ($user->role == 'member') { $user->update(['role' => 'client']); + + if(config("SETTINGS::REFERRAL:MODE") == "commission" && $shopProduct->type=="Credits"){ + if($ref_user = DB::table("user_referrals")->where('registered_user_id', '=', $user->id)->first()){ + $ref_user = User::findOrFail($ref_user->referral_id); + $increment = number_format($shopProduct->quantity/100*config("SETTINGS::REFERRAL:PERCENTAGE"),0,"",""); + $ref_user->increment('credits', $increment); + } + + } + } //store paid payment @@ -431,9 +453,19 @@ class PaymentController extends Controller $user->increment('server_limit', $shopProduct->quantity); } - //update role + //update role give Referral-reward if ($user->role == 'member') { $user->update(['role' => 'client']); + + if(config("SETTINGS::REFERRAL:MODE") == "commission" && $shopProduct->type=="Credits"){ + if($ref_user = DB::table("user_referrals")->where('registered_user_id', '=', $user->id)->first()){ + $ref_user = User::findOrFail($ref_user->referral_id); + $increment = number_format($shopProduct->quantity/100*config("SETTINGS::REFERRAL:PERCENTAGE"),0,"",""); + $ref_user->increment('credits', $increment); + } + + } + } //update payment db entry status diff --git a/app/Http/Controllers/Auth/RegisterController.php b/app/Http/Controllers/Auth/RegisterController.php index 580781aa..03d982f5 100644 --- a/app/Http/Controllers/Auth/RegisterController.php +++ b/app/Http/Controllers/Auth/RegisterController.php @@ -139,9 +139,10 @@ class RegisterController extends Controller $ref_code = $data['referral_code']; $new_user = $user->id; if($ref_user = User::query()->where('referral_code', '=', $ref_code)->first()) { - $ref_user->increment('credits', config("SETTINGS::REFERRAL::REWARD")); - $ref_user->notify(new ReferralNotification($ref_user->id,$new_user)); - + if(config("SETTINGS::REFERRAL:MODE" == "sign-up")) { + $ref_user->increment('credits', config("SETTINGS::REFERRAL::REWARD")); + $ref_user->notify(new ReferralNotification($ref_user->id, $new_user)); + } //INSERT INTO USER_REFERRALS TABLE DB::table('user_referrals')->insert([ 'referral_id' => $ref_user->id, diff --git a/database/seeders/Seeds/SettingsSeeder.php b/database/seeders/Seeds/SettingsSeeder.php index 3b06c069..d6db5c3c 100644 --- a/database/seeders/Seeds/SettingsSeeder.php +++ b/database/seeders/Seeds/SettingsSeeder.php @@ -486,5 +486,19 @@ class SettingsSeeder extends Seeder 'type' => 'string', 'description' => 'Who should be allowed to to use the referral code. all/client' ]); + Settings::firstOrCreate([ + 'key' => 'SETTINGS::REFERRAL:MODE', + ], [ + 'value' =>"sign-up", + 'type' => 'string', + 'description' => 'Whether referrals get Credits on User-Registration or if a User buys credits' + ]); + Settings::firstOrCreate([ + 'key' => 'SETTINGS::REFERRAL:PERCENTAGE', + ], [ + 'value' =>100, + 'type' => 'integer', + 'description' => 'The Percentage Value a referred user gets' + ]); } } diff --git a/resources/views/admin/settings/tabs/misc.blade.php b/resources/views/admin/settings/tabs/misc.blade.php index df566c9d..b0c13e0e 100644 --- a/resources/views/admin/settings/tabs/misc.blade.php +++ b/resources/views/admin/settings/tabs/misc.blade.php @@ -202,16 +202,40 @@
+
+ + +
- + + +
+
+
+
+
-
From ef6a655ce09714245b79ac2b6542c0f0de3bd061 Mon Sep 17 00:00:00 2001 From: 1day2die Date: Tue, 7 Jun 2022 16:19:14 +0200 Subject: [PATCH 15/27] Add referral to API i guess? --- app/Http/Controllers/Api/UserController.php | 34 ++++++++++++++++++++- 1 file changed, 33 insertions(+), 1 deletion(-) diff --git a/app/Http/Controllers/Api/UserController.php b/app/Http/Controllers/Api/UserController.php index 62ee244e..de60fc3d 100644 --- a/app/Http/Controllers/Api/UserController.php +++ b/app/Http/Controllers/Api/UserController.php @@ -8,6 +8,8 @@ use App\Http\Controllers\Controller; use App\Models\DiscordUser; use App\Models\Settings; use App\Models\User; +use App\Notifications\ReferralNotification; +use Carbon\Carbon; use Illuminate\Contracts\Foundation\Application; use Illuminate\Contracts\Pagination\LengthAwarePaginator; use Illuminate\Contracts\Routing\ResponseFactory; @@ -17,6 +19,7 @@ use Illuminate\Database\Eloquent\Model; use Illuminate\Http\Request; use Illuminate\Http\Response; use Illuminate\Support\Facades\App; +use Illuminate\Support\Facades\DB; use Illuminate\Support\Facades\Hash; use Illuminate\Support\Str; use Illuminate\Validation\Rule; @@ -227,7 +230,17 @@ class UserController extends Controller return $user; } - + /** + * Create a unique Referral Code for User + * @return string + */ + protected function createReferralCode(){ + $referralcode = STR::random(8); + if (User::where('referral_code', '=', $referralcode)->exists()) { + $this->createReferralCode(); + } + return $referralcode; + } /** * @throws ValidationException */ @@ -245,6 +258,7 @@ class UserController extends Controller 'credits' => config('SETTINGS::USER:INITIAL_CREDITS', 150), 'server_limit' => config('SETTINGS::USER:INITIAL_SERVER_LIMIT', 1), 'password' => Hash::make($request->input('password')), + 'referral_code' => $this->createReferralCode(), ]); $response = Pterodactyl::client()->post('/application/users', [ @@ -269,7 +283,25 @@ class UserController extends Controller $user->update([ 'pterodactyl_id' => $response->json()['attributes']['id'] ]); + //INCREMENT REFERRAL-USER CREDITS + if(!empty($request->input("referral_code")){ + $ref_code = $request->input("referral_code"); + $new_user = $user->id; + if($ref_user = User::query()->where('referral_code', '=', $ref_code)->first()) { + if(config("SETTINGS::REFERRAL:MODE" == "sign-up") || config("SETTINGS::REFERRAL:MODE" == "both")) { + $ref_user->increment('credits', config("SETTINGS::REFERRAL::REWARD")); + $ref_user->notify(new ReferralNotification($ref_user->id, $new_user)); + } + //INSERT INTO USER_REFERRALS TABLE + DB::table('user_referrals')->insert([ + 'referral_id' => $ref_user->id, + 'registered_user_id' => $user->id, + 'created_at' => Carbon::now(), + 'updated_at' => Carbon::now() + ]); + } + } $user->sendEmailVerificationNotification(); return $user; From 5d533535216ad760197fe6f69452ecf23c0c7dc9 Mon Sep 17 00:00:00 2001 From: 1day2die Date: Tue, 7 Jun 2022 16:21:03 +0200 Subject: [PATCH 16/27] fix ) --- app/Http/Controllers/Api/UserController.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/Http/Controllers/Api/UserController.php b/app/Http/Controllers/Api/UserController.php index de60fc3d..a9f8f1bb 100644 --- a/app/Http/Controllers/Api/UserController.php +++ b/app/Http/Controllers/Api/UserController.php @@ -284,7 +284,7 @@ class UserController extends Controller 'pterodactyl_id' => $response->json()['attributes']['id'] ]); //INCREMENT REFERRAL-USER CREDITS - if(!empty($request->input("referral_code")){ + if(!empty($request->input("referral_code"))){ $ref_code = $request->input("referral_code"); $new_user = $user->id; if($ref_user = User::query()->where('referral_code', '=', $ref_code)->first()) { From fe2075fd754fa1e844c33b970b3152cfe4991809 Mon Sep 17 00:00:00 2001 From: 1day2die Date: Tue, 7 Jun 2022 17:19:19 +0200 Subject: [PATCH 17/27] Update default values --- public/install/index.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/public/install/index.php b/public/install/index.php index c15dfa63..562e4a3b 100644 --- a/public/install/index.php +++ b/public/install/index.php @@ -143,7 +143,7 @@ echo $cardheader; + value="controlpaneluser" class="form-control">
@@ -159,7 +159,7 @@ echo $cardheader;
+ value="controlpanel" class="form-control">
From b8d3378b02ba439b033b2aac08c45082e1a4ca1c Mon Sep 17 00:00:00 2001 From: 1day2die Date: Tue, 7 Jun 2022 17:26:17 +0200 Subject: [PATCH 18/27] fix typo --- database/seeders/Seeds/SettingsSeeder.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/database/seeders/Seeds/SettingsSeeder.php b/database/seeders/Seeds/SettingsSeeder.php index d6db5c3c..e37a4d25 100644 --- a/database/seeders/Seeds/SettingsSeeder.php +++ b/database/seeders/Seeds/SettingsSeeder.php @@ -24,7 +24,7 @@ class SettingsSeeder extends Seeder ]); Settings::firstOrCreate([ - 'key' => 'SETTINGS::USER:NITIAL_SERVER_LIMIT', + 'key' => 'SETTINGS::USER:INITIAL_SERVER_LIMIT', ], [ 'value' => '1', 'type' => 'integer', From f03869efb022cd6dc2682ef22751c81a0f60bf62 Mon Sep 17 00:00:00 2001 From: 1day2die Date: Tue, 7 Jun 2022 17:30:38 +0200 Subject: [PATCH 19/27] Initial Admin user should receive a ref-code aswell --- public/install/forms.php | 4 ++-- public/install/functions.php | 11 +++++++++++ 2 files changed, 13 insertions(+), 2 deletions(-) diff --git a/public/install/forms.php b/public/install/forms.php index b737b031..70562a0a 100644 --- a/public/install/forms.php +++ b/public/install/forms.php @@ -269,8 +269,8 @@ if (isset($_POST['createUser'])) { } - - $query1 = "INSERT INTO `" . getEnvironmentValue("DB_DATABASE") . "`.`users` (`name`, `role`, `credits`, `server_limit`, `pterodactyl_id`, `email`, `password`, `created_at`) VALUES ('$name', 'admin', '250', '1', '$pteroID', '$mail', '$pass', CURRENT_TIMESTAMP)"; + $random = generateRandomString(); + $query1 = "INSERT INTO `" . getEnvironmentValue("DB_DATABASE") . "`.`users` (`name`, `role`, `credits`, `server_limit`, `pterodactyl_id`, `email`, `password`, `created_at`, `referral_code`) VALUES ('$name', 'admin', '250', '1', '$pteroID', '$mail', '$pass', CURRENT_TIMESTAMP, '$random')"; diff --git a/public/install/functions.php b/public/install/functions.php index 82df4017..10baf2e7 100644 --- a/public/install/functions.php +++ b/public/install/functions.php @@ -139,3 +139,14 @@ function wh_log($log_msg) // if you don't add `FILE_APPEND`, the file will be erased each time you add a log file_put_contents($log_file_data, "[" . date('h:i:s') . "] " . $log_msg . "\n", FILE_APPEND); } + + +function generateRandomString($length = 8) { + $characters = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ'; + $charactersLength = strlen($characters); + $randomString = ''; + for ($i = 0; $i < $length; $i++) { + $randomString .= $characters[rand(0, $charactersLength - 1)]; + } + return $randomString; +} From ad8c8b5ebe8135d972feec754a7c294edeef9766 Mon Sep 17 00:00:00 2001 From: 1day2die Date: Tue, 7 Jun 2022 21:58:04 +0200 Subject: [PATCH 20/27] fixed the worst error ive ever experienced --- app/Http/Controllers/Admin/PaymentController.php | 6 +++--- app/Http/Controllers/Api/UserController.php | 2 +- app/Http/Controllers/Auth/RegisterController.php | 3 ++- 3 files changed, 6 insertions(+), 5 deletions(-) diff --git a/app/Http/Controllers/Admin/PaymentController.php b/app/Http/Controllers/Admin/PaymentController.php index 8f4f4b67..67f9fbab 100644 --- a/app/Http/Controllers/Admin/PaymentController.php +++ b/app/Http/Controllers/Admin/PaymentController.php @@ -185,7 +185,7 @@ class PaymentController extends Controller if ($user->role == 'member') { $user->update(['role' => 'client']); - if((config("SETTINGS::REFERRAL:MODE") == "commission" || config("SETTINGS::REFERRAL:MODE" == "both")) && $shopProduct->type=="Credits"){ + if((config("SETTINGS::REFERRAL:MODE") == "commission" || config("SETTINGS::REFERRAL:MODE") == "both") && $shopProduct->type=="Credits"){ if($ref_user = DB::table("user_referrals")->where('registered_user_id', '=', $user->id)->first()){ $ref_user = User::findOrFail($ref_user->referral_id); $increment = number_format($shopProduct->quantity/100*config("SETTINGS::REFERRAL:PERCENTAGE"),0,"",""); @@ -342,7 +342,7 @@ class PaymentController extends Controller if ($user->role == 'member') { $user->update(['role' => 'client']); - if((config("SETTINGS::REFERRAL:MODE") == "commission" || config("SETTINGS::REFERRAL:MODE" == "both")) && $shopProduct->type=="Credits"){ + if((config("SETTINGS::REFERRAL:MODE") == "commission" || config("SETTINGS::REFERRAL:MODE") == "both") && $shopProduct->type=="Credits"){ if($ref_user = DB::table("user_referrals")->where('registered_user_id', '=', $user->id)->first()){ $ref_user = User::findOrFail($ref_user->referral_id); $increment = number_format($shopProduct->quantity/100*config("SETTINGS::REFERRAL:PERCENTAGE"),0,"",""); @@ -457,7 +457,7 @@ class PaymentController extends Controller if ($user->role == 'member') { $user->update(['role' => 'client']); - if((config("SETTINGS::REFERRAL:MODE") == "commission" || config("SETTINGS::REFERRAL:MODE" == "both"))&& $shopProduct->type=="Credits"){ + if((config("SETTINGS::REFERRAL:MODE") == "commission" || config("SETTINGS::REFERRAL:MODE") == "both")&& $shopProduct->type=="Credits"){ if($ref_user = DB::table("user_referrals")->where('registered_user_id', '=', $user->id)->first()){ $ref_user = User::findOrFail($ref_user->referral_id); $increment = number_format($shopProduct->quantity/100*config("SETTINGS::REFERRAL:PERCENTAGE"),0,"",""); diff --git a/app/Http/Controllers/Api/UserController.php b/app/Http/Controllers/Api/UserController.php index a9f8f1bb..a25b9873 100644 --- a/app/Http/Controllers/Api/UserController.php +++ b/app/Http/Controllers/Api/UserController.php @@ -288,7 +288,7 @@ class UserController extends Controller $ref_code = $request->input("referral_code"); $new_user = $user->id; if($ref_user = User::query()->where('referral_code', '=', $ref_code)->first()) { - if(config("SETTINGS::REFERRAL:MODE" == "sign-up") || config("SETTINGS::REFERRAL:MODE" == "both")) { + if(config("SETTINGS::REFERRAL:MODE") == "register" || config("SETTINGS::REFERRAL:MODE") == "both") { $ref_user->increment('credits', config("SETTINGS::REFERRAL::REWARD")); $ref_user->notify(new ReferralNotification($ref_user->id, $new_user)); } diff --git a/app/Http/Controllers/Auth/RegisterController.php b/app/Http/Controllers/Auth/RegisterController.php index f96a8cc8..ea164fb8 100644 --- a/app/Http/Controllers/Auth/RegisterController.php +++ b/app/Http/Controllers/Auth/RegisterController.php @@ -14,6 +14,7 @@ use Illuminate\Support\Facades\App; use Illuminate\Support\Facades\Auth; use Illuminate\Support\Facades\DB; use Illuminate\Support\Facades\Hash; +use Illuminate\Support\Facades\Log; use Illuminate\Support\Facades\Validator; use Illuminate\Support\Str; use Illuminate\Validation\ValidationException; @@ -139,7 +140,7 @@ class RegisterController extends Controller $ref_code = $data['referral_code']; $new_user = $user->id; if($ref_user = User::query()->where('referral_code', '=', $ref_code)->first()) { - if(config("SETTINGS::REFERRAL:MODE" == "sign-up") || config("SETTINGS::REFERRAL:MODE" == "both")) { + if(config("SETTINGS::REFERRAL:MODE") == "sign-up" || config("SETTINGS::REFERRAL:MODE") == "both") { $ref_user->increment('credits', config("SETTINGS::REFERRAL::REWARD")); $ref_user->notify(new ReferralNotification($ref_user->id, $new_user)); } From 9ad3ed931b9b1304c111da4282e2010b4ed72eed Mon Sep 17 00:00:00 2001 From: 1day2die Date: Tue, 7 Jun 2022 22:02:36 +0200 Subject: [PATCH 21/27] show referral code on admin user page --- resources/views/admin/users/show.blade.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/resources/views/admin/users/show.blade.php b/resources/views/admin/users/show.blade.php index 32202fde..338d1fc9 100644 --- a/resources/views/admin/users/show.blade.php +++ b/resources/views/admin/users/show.blade.php @@ -248,7 +248,7 @@
-
{{__('Referals')}}
+
{{__('Referals')}} ({{__("referral-code")}} : {{$user->referral_code}})
From 2bc5e91c2538baafae60f50c00fba6086a1f4772 Mon Sep 17 00:00:00 2001 From: 1Day Date: Wed, 8 Jun 2022 10:11:55 +0200 Subject: [PATCH 22/27] small rewrite of activity log // log refs --- .../Controllers/Admin/PaymentController.php | 18 +++++++++++++ .../Controllers/Auth/RegisterController.php | 6 +++++ .../views/admin/activitylogs/index.blade.php | 22 +++++++-------- resources/views/home.blade.php | 27 +++++++++---------- 4 files changed, 46 insertions(+), 27 deletions(-) diff --git a/app/Http/Controllers/Admin/PaymentController.php b/app/Http/Controllers/Admin/PaymentController.php index 67f9fbab..8d3a0d23 100644 --- a/app/Http/Controllers/Admin/PaymentController.php +++ b/app/Http/Controllers/Admin/PaymentController.php @@ -190,6 +190,12 @@ class PaymentController extends Controller $ref_user = User::findOrFail($ref_user->referral_id); $increment = number_format($shopProduct->quantity/100*config("SETTINGS::REFERRAL:PERCENTAGE"),0,"",""); $ref_user->increment('credits', $increment); + + //LOGS REFERRALS IN THE ACTIVITY LOG + activity() + ->performedOn($user) + ->causedBy($ref_user) + ->log('gained '. $increment.' '.config("SETTINGS::SYSTEM:CREDITS_DISPLAY_NAME").' for commission-referral of '.$user->name.' (ID:'.$user->id.')'); } } @@ -347,6 +353,12 @@ class PaymentController extends Controller $ref_user = User::findOrFail($ref_user->referral_id); $increment = number_format($shopProduct->quantity/100*config("SETTINGS::REFERRAL:PERCENTAGE"),0,"",""); $ref_user->increment('credits', $increment); + + //LOGS REFERRALS IN THE ACTIVITY LOG + activity() + ->performedOn($user) + ->causedBy($ref_user) + ->log('gained '. $increment.' '.config("SETTINGS::SYSTEM:CREDITS_DISPLAY_NAME").' for commission-referral of '.$user->name.' (ID:'.$user->id.')'); } } @@ -462,6 +474,12 @@ class PaymentController extends Controller $ref_user = User::findOrFail($ref_user->referral_id); $increment = number_format($shopProduct->quantity/100*config("SETTINGS::REFERRAL:PERCENTAGE"),0,"",""); $ref_user->increment('credits', $increment); + + //LOGS REFERRALS IN THE ACTIVITY LOG + activity() + ->performedOn($user) + ->causedBy($ref_user) + ->log('gained '. $increment.' '.config("SETTINGS::SYSTEM:CREDITS_DISPLAY_NAME").' for commission-referral of '.$user->name.' (ID:'.$user->id.')'); } } diff --git a/app/Http/Controllers/Auth/RegisterController.php b/app/Http/Controllers/Auth/RegisterController.php index ea164fb8..5a805987 100644 --- a/app/Http/Controllers/Auth/RegisterController.php +++ b/app/Http/Controllers/Auth/RegisterController.php @@ -143,6 +143,12 @@ class RegisterController extends Controller if(config("SETTINGS::REFERRAL:MODE") == "sign-up" || config("SETTINGS::REFERRAL:MODE") == "both") { $ref_user->increment('credits', config("SETTINGS::REFERRAL::REWARD")); $ref_user->notify(new ReferralNotification($ref_user->id, $new_user)); + + //LOGS REFERRALS IN THE ACTIVITY LOG + activity() + ->performedOn($user) + ->causedBy($ref_user) + ->log('gained '. config("SETTINGS::REFERRAL::REWARD").' '.config("SETTINGS::SYSTEM:CREDITS_DISPLAY_NAME").' for sign-up-referral of '.$user->name.' (ID:'.$user->id.')'); } //INSERT INTO USER_REFERRALS TABLE DB::table('user_referrals')->insert([ diff --git a/resources/views/admin/activitylogs/index.blade.php b/resources/views/admin/activitylogs/index.blade.php index 2382a8c3..e0eedc6f 100644 --- a/resources/views/admin/activitylogs/index.blade.php +++ b/resources/views/admin/activitylogs/index.blade.php @@ -77,27 +77,25 @@ @endif - @switch($log->description) - @case('created') + @if(str_starts_with($log->description,"created")) - @break - @case('redeemed') + @elseif(str_starts_with($log->description,"redeemed")) - @break - @case('deleted') + @elseif(str_starts_with($log->description,"deleted")) - @break - @case('updated') + @elseif(str_starts_with($log->description,"gained")) + + @elseif(str_starts_with($log->description,"updated")) - @break - @endswitch - {{ucfirst($log->description)}} + @endif {{ explode("\\" , $log->subject_type)[2]}} + {{$log->description}} + @php $first=true @endphp @foreach(json_decode($log->properties, true) as $properties) @if($first) @if(isset($properties['name'])) - " {{$properties['name']}} " + "{{$properties['name']}}" @endif @if(isset($properties['email'])) < {{$properties['email']}} > diff --git a/resources/views/home.blade.php b/resources/views/home.blade.php index a8d58c88..407b127d 100644 --- a/resources/views/home.blade.php +++ b/resources/views/home.blade.php @@ -144,22 +144,19 @@ as $log)
  • - @switch($log->description) - @case('created') - - @break - @case('redeemed') - - @break - @case('deleted') - - @break - @case('updated') - - @break - @endswitch - {{ ucfirst($log->description) }} + @if(str_starts_with($log->description,"created")) + + @elseif(str_starts_with($log->description,"redeemed")) + + @elseif(str_starts_with($log->description,"deleted")) + + @elseif(str_starts_with($log->description,"gained")) + + @elseif(str_starts_with($log->description,"updated")) + + @endif {{ explode('\\', $log->subject_type)[2] }} + {{ ucfirst($log->description) }} {{ $log->created_at->diffForHumans() }} From 0071c2218b9ea1df89faa77ab7994d7660c1766f Mon Sep 17 00:00:00 2001 From: 1Day Date: Wed, 8 Jun 2022 11:01:28 +0200 Subject: [PATCH 23/27] click to copy Ref URL // Badge Color on Profile --- app/Http/Controllers/ProfileController.php | 15 ++++++++++ resources/views/profile/index.blade.php | 35 +++++++++++++++++++--- 2 files changed, 46 insertions(+), 4 deletions(-) diff --git a/app/Http/Controllers/ProfileController.php b/app/Http/Controllers/ProfileController.php index 57709b62..dce3e96a 100644 --- a/app/Http/Controllers/ProfileController.php +++ b/app/Http/Controllers/ProfileController.php @@ -16,11 +16,26 @@ class ProfileController extends Controller /** Display a listing of the resource. */ public function index() { + switch (Auth::user()->role) { + case 'admin': + $badgeColor = 'badge-danger'; + break; + case 'mod': + $badgeColor = 'badge-info'; + break; + case 'client': + $badgeColor = 'badge-success'; + break; + default: + $badgeColor = 'badge-secondary'; + break; + } return view('profile.index')->with([ 'user' => Auth::user(), 'credits_reward_after_verify_discord' => config('SETTINGS::USER:CREDITS_REWARD_AFTER_VERIFY_DISCORD'), 'force_email_verification' => config('SETTINGS::USER:FORCE_EMAIL_VERIFICATION'), 'force_discord_verification' => config('SETTINGS::USER:FORCE_DISCORD_VERIFICATION'), + 'badgeColor' => $badgeColor, ]); } diff --git a/resources/views/profile/index.blade.php b/resources/views/profile/index.blade.php index bf31a1c9..0c454bde 100644 --- a/resources/views/profile/index.blade.php +++ b/resources/views/profile/index.blade.php @@ -105,7 +105,10 @@
    - {{_("Referral URL")}} : {{route("register")}}?ref={{$user->referral_code}} + {{_("Referral URL")}} : + + {{route("register")}}?ref={{$user->referral_code}} + @else @@ -115,9 +118,8 @@ @endif
    -
    {{ $user->role }} + class="badge {{$badgeColor}}">{{ $user->role }}
    {{ $user->created_at->isoFormat('LL') }}
    @@ -304,5 +306,30 @@
    - + @endsection + From 9ba8fbbc4e291ca9c02d01018acd7dbff83b68c0 Mon Sep 17 00:00:00 2001 From: 1Day Date: Mon, 13 Jun 2022 08:59:16 +0200 Subject: [PATCH 24/27] Fix Server slot product editing bug --- resources/views/admin/store/edit.blade.php | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/resources/views/admin/store/edit.blade.php b/resources/views/admin/store/edit.blade.php index 4e16dc42..90590c45 100644 --- a/resources/views/admin/store/edit.blade.php +++ b/resources/views/admin/store/edit.blade.php @@ -48,7 +48,8 @@ @error('name')
    From 810e2e85086ce3345b52f7ed75698bc1ccdbd03f Mon Sep 17 00:00:00 2001 From: 1Day Date: Mon, 13 Jun 2022 09:21:59 +0200 Subject: [PATCH 25/27] Update Logo --- public/images/bitsec.png | Bin 25555 -> 0 bytes public/images/controlpanel_logo.png | Bin 0 -> 96827 bytes resources/views/layouts/main.blade.php | 2 +- 3 files changed, 1 insertion(+), 1 deletion(-) delete mode 100644 public/images/bitsec.png create mode 100644 public/images/controlpanel_logo.png diff --git a/public/images/bitsec.png b/public/images/bitsec.png deleted file mode 100644 index e7ea69b7c2feff5d61c00d9caf3163fbf3953767..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 25555 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 ZY=k4Du#4`VTkl3zJ)x;sAa5D`zW`~bWUv4L diff --git a/public/images/controlpanel_logo.png b/public/images/controlpanel_logo.png new file mode 100644 index 0000000000000000000000000000000000000000..8a68b5fbd7c9eb5949713891ee898d7bda8a8eaf GIT binary patch literal 96827 zcmX_HcRbbK|G(-}Dzj8JDWx(mvPY35Bzy0b?Cfz}m6e^nB_Zij_PUp{vP1T`MqGPy zZNKxre1Cs<^myc)^M0Mz>-l=V*75$ub6K)WbeCW-7@6GD$0{%waUAq>;XL@CKdCw^ zFxVwQD{1K$PAaleH{@ib1>nL00-U^Da2U)zB{j}XO?B{kU?*A-{UVAoIOdP_OO-QE z$35z^KRHw%et zrra)5YECHSSM1<<)^St&Ew4tj(>jN)_jaN=h42QipBQbcQ^%zF>c0`TsW9Oyn9vVK zwA8o@I~BZ`JErfP-}5+b~kE-YsN{{%!bo6>MrkF&M6Pr_|s;?)oyOB zwoa;6iiVCh9j+^^IYG2{^i%`FqNzeAIy)6{Aq{Ojb5m~63JlSv&~Be_X2ILuEF#d zh+b432DTeDb( zI+rLF@Ng$RX@{cj=<{Gj-20)O%YWju&SbIBJ@jFM-MxSL#zikP_CG5Kl1ACHyX_%e zi3zFuoo|m2n&k>dzpt|*!%bx$^Oj#x?pRDZ&^g0@119tE?EFLe*|Su&|CQEWE{9Q! zpFQ*FZqR>@M)2{sS0jlY-=MzgTk?@6<}J#I?aO(WkC*x12{_O=zcC%>7b50*(`xkJ z2$2d8d7AIN)k|#;DgFF^Q(jXEbiN_|o1xHOE0X@-*>lpDUoga6xGgR9^vtz~3m;X! zFnkS|&#;))oxST!R|zANF8iqb^2**dPvToV7qfrre7|gSuERy*U6Op0bJ>^jvdE_pp3B#NJ(2q0&U*1OOJ3xa&u6S24n;D3 zX08Z+`XT4H?$z@$GVm7)F(fU_*Ze0x#bsz@2xNX$CVr9nMdGje-@C6aZCzG;V*RPT zt78`C%ppRX8p8EN^JDTK#@V9T%bP-b*UrDoFb#!=(;yWX?p!N6Q$$-t-xDtEPum!3 zoc%-Vn@AtSLNHmw>+dEu@X||OlwMc7&WVO2-rbsXb|@7x)DwFi#9psHuH(Swpy@zW zPFsCtjB+KEqG4mTbYVCI z>X`XEy#l@LUkiF?zIc3D>wWfjsQ1a=v0T2th`&95%W~avu{{s160H2J|Gir563Sb1 zCbtc5Wmry$5)Q*c; zA>$r;PxZXWd6x6%&ZEwkk*x)A)LpI94>$}c2n!7}2^FAmp%v%V;3Mbh5VU)Mv6d2W z6x6opHhSHD)wG3Ik#E%2bC6V^NKhW02dC!^Y-emcH&fLf$oc2`^XpO}=R@cfuJlAF z*4dbc>vVIz<0Rp%;z-w~)oReSEt)UedueN*YB%~4(G*}p^-}d^kLgApDv`6lv~hb# zZ(R>tk%x2bMA%u{HI)sUy7i>JVm7JyiRnLj_b&6@?~Hci?yg#R*N?un^C69wOl>Vv z-K0c4gi)>{Gn;*bKeZRV2X?8cv*nZILs~OE8aH+}=x|{b^A)f47WA|1NXs6Vq3u-M z^xeX}-tC{IKv1N~MmPE8j_nhxngfmjkcWie1W|he2l-n$G zEmNft+Y{SIt+a6Clvpe7#IlJ$b5$Hm6HA;-Q~9v2R(oBIBrRtzr!NchoJ4UrefysH z9klq__zww=YELg`U)<*{;oIO1ENUwXF8bV>62GJ;aQo7g2jSb+z}MPKTUg`#$#_(F}SYS%C?T!s4;k>^HaY|_oMFjQX}UqT+5#NpRZYY zo|+2IM*H?RC4MDV*2ufXTpZlq6$RgxfU$bASh67^JO?_ z=jNEzc@ zO|DLE=3%Bnv=gzZY;$qftRwqo6pJ)?~_dGTm-y z{l&_E4!KUXJ|Cxu_nAe`GoBX>WC*O}7S&&-O%wE<4Bn6J(L@)dRb6*j>i&K3VPZkK z-+t_AISabEYIjy+4}~jpvg;htcA`d<{Y&dc2k$50>3#SQf9TKO5SN%27g;s>`A*by zSgVZPEUsL>_MqfdiO#~gJoTukkl%_w-o|+5_P%Q2kLwk~_ghU@-NAirV9cTrABUyXkVUu1``=UvIDPHxF)L zRurNv`xo`Ln}u^?%(a1BzH>J#R_F6?vpBb>iWU@G_b;m?b#SuDRq5Sd;#^Xc&*DF( zG}RzyVK0kjWiFG~z8>8XXAvzIx5&J*j}}?5!n6+Izh&*)QOJd6h!1uQrIsAvt(y{x zr_5fKO`-eNhuKVr#*ki?;>#WDsL`~MmO40#+d12r}!_S@16pAFFl2Q{v~|2bcBrz4q?N&!w<_M!<{rC(XL! zZyP@kT@qfR+$iaYYbV>4AYs7RM)wfKSBUjyz-adxQmG|pZ z9xGw?JFC26SofC`WambVkJAS$4DBoIv537rYX6pbnT)=dOYJ#T%R_c6Hrm%+r;$hb zUVR%LuKi-J%hBd#7Vxn+B$<8tikDZY_R&I=_Xy@eD_%~t3SmElLD-k>_vs5hA6q}v zWN_218r?2vAp#}Fi>s|b0gFzX{+gYMqHbevn_2ZE>shgrZ#m2kcNGueBpcG9vVM{6 zt+);8pwvVCsSceKO>Oj7)hkVuEqKqO#6@ehDgCK`X$cMTA8{NBq~7 zeB1P$nwqjcC4%H?g19PB>=f=k3aWpi}m*Y!O?yn0+u- zX7+=RT(BW>dTM9N+grYENU+RwM_IJhPGNX1%xl|B(Dl&0GomzA)EURJcK~jXaEEXM zK7}aOwS=0Zz7P5cbcmEF2iNVn$;c9Fe@be98fps`j-cJ^g*HDij-e#$hOTCY$DcYr z)JbkVSzEre!PY*5=&k0f-b+0aK^z@am3k#DxEE01L#K|`k=QpwyC3y}Q|rEo%4%Sf z3PuvlCmIjpu`$Q!3V6U`V`OI$4U%SPkZhNG&nLwODd{IJIO5!swql6fZqcQ{vw_mD zHX~CD)O!i%Mf$HXrHQU&Eb$B9f1j0ENEsfi?XGn}JBP!7L0T&XYpaam%nwy?-rmQq zj3R;@4hBvA>(Jre{)Vrx%DuaWiCL-5;=P-rvZ`1_%WClk{+no<;lSv<%$474lE2I7 z*O&HpvAy0Qg2mF??^sFt%QjF&=_x7Ic1_{(_Al*61|$yBuLFDI<4tH`u#XR0x$U-N zTC3vCtopm)^|$vgO;Iw_N%hfkH#f;nyNQ17u6b#UiEuO26FS-?P6+ngu$|M_-D$qq zg)i&EJ9k;#Q`1QKku&rX!EIP6K{B|tzpecnzvi`zC?JVmvUa=eW-z=bi9IlYTrRQ` zsK6*rl>>Mj!_D4y(+#P+%#7XJT`VE8fvi}m?bU<`d~73};~u^-(C-hT)7%BALM57% zpq<5jyq|_d`em+Eyxm0C5OuR|`i;HNM!zcTd+Eb{>{BTaGBFfs-aq4ZuyVM+IAqiL z&!r6Ov*FU8=JIRF-y6CyUjlUFaTsf|z-@W!h4A@sae31VXP3O?rNr)#XiG$#-PMn4 zP}vQtT0ZRQzZ)LT7jQOa1}iSVZvXN2F8_|3I{W{UYKpq);cbSNNP8yPwTX zL;GoLJl3|X?s1a;d(q``RIixRbl5o`a`4ffD8ff2Smmw|O9&kOQBl%kD*P^XXE)B@ zTzkZjK~p2eQDIh3VS9NWTjG`iznZ_HSnhs&ow*FjvRrfElwVd*;B<&%#?@I|FMMBK z;7;Ctu;Y?u^m;z zqHfF8|Aw|3!{j-WPr}il? za)B`=ds4secaa=g#mCOW#@O6ad~C<4)t7HVrf#UNp+qIw4O@=Z!lfmSa0{QxBozw( zoEjK&n63 zg9$6^-;<>rSWB;M8^-;rV>Fd)^qK^f zl$VPo1VkRG*?*HhpB?DW(#VF}XTu`IaRa^A?&oQaDx=CuT`u7g%=fpwhL@~e?W#6)%KDYnCYw{MJR7nPd6Gej;c1Voj20SO$aSGXPQ zyt*4fe?K-#wlP7Rmt?J+=9lC2n7hp^!ZW5>N?&9TGP0Z?(^F5q-B zw^At!?WZHMu;I}Yy4t1t^uq$A`nqOXz^P{lPEFi98DT4GVqm|kEEmPVT(tAM{ibag+B;K%Ph{<@ z8t00E-QLMSpks(+m7A=MTQj%1&Xh_K5y9eRc44iHWM-R-Vj@3U%Q}*XJYEJ~Z}~5x zs&fE8o*d9ISL~*_fU;hn>)&XawGU|C7PJfV!uTvzwvfpLoXZr}yrkav0ZFGIeJ znZA3|kF~MM0-o}MHc^PB#_Fe1izz2>?NwC_Zm)g6Wrly#zu3vyiJfF3Z+8#b(Cn}^ zCbV1f!{r^8U4#Q94#KGnkKt-W3zAC`oBCZsgbnGyq@4fbQp9hUQ^<%f?nPR!!T_tTLXqvVDosfRnQR0|RN%3Y5DXozJY(Dc06I%_&=?AUK=azUvrr-n}I zpjX9hZ?(g=;}zM%pEC`V=^s|oKd`cF`gv%Vj2%2bI@t7g4KfV(s-rGV=Uq*8txCPd zcolf#F_c~KkTHn!R(=t5mK1(JA(xu@VQO;SbYpt?lM_+xVWgx>L+q}P`ITStqLN`> zLlq9b^u0s~xBj9Y(%$J5_3^HY*UJMI$rgZMr|_tCq5aM4wzMe!ozIc}Z1~&a>~Ed4 z&+<4iB-(d|!^K3~(?>zRw*;~xLo)4c=B3C(9AlN+Ar3_0ed8_`aL07WlOO(!QcRAT z?p2MDkNVdPuV-tZ^g%I9!Bd$$45Pn2KW{X{9@sI>XyR=WCArqVlos7fhqA|6AIF&w zA}x$pY9jK*x2t3V|AYAsDnKd=)CR<`IS~EaU4iad4U^P%OiM6dS`0V$T@h-S0!u1V z!$r?B1fE7Et@-7F4l2_8xG#LI<-28PO*m$D;KwKFGq75lPmo2W7sq5?UoXnh&?wj| z0RTQmk;|U<-M6v|T8m-zQ(}UR|jp9_MBk5^M$&(h9H0dHK9bRK|%9Id&MIV6M4LK4IvVuP>nN z{1C)IImliPlxl)y8Ug%bw;ESBp=(5OGY)EN-a1=rT*QGK6Bn;{_r$$zPyHlpHj!Q! zdDxStKauX1R=T)Hki!`YNxo-aRGID9Nh|f+`%&U;e_UlUaJ~Z@&*30}r_f4^6^+n? zBw%ZaqxGmlmA|POeOzf<_lHx47$|h^F{Ds@9iZ@yp5@gAIZ~z8oX#NeQTC9I|6n8b zsnJ0U)TUxw0qzEOWAS}-DBzz*KUDeck2{tOU)k$bRLw>L(8WS-H!i`NoX^2oz=e>a zi?#%~)m{#ZXpip!(1Q`n;4Dp)NLeJ{$TXyrxeV5}PAo04*K z;u{Zh+B*u7zfE=)x0Sr7*_ZZ`nh9#1fYfTFk!xp%3bhh~hYS|Y#Nv*1Fn{%dVvU{+ zBZn3Tgl%01w6xLljXLP9h+XUVoy!%sye)86t@+#{H$X5T4>kwfR&0(#=9b|z3W^}H@^&(Bpq2dcASu1M zU!ur*y(v9e3po-I3@Mg41k#EXH&o$fc#x#W_^qaJ_+jVo-)6^;ev}8o6a@a`e)zl{ zpR@gWV_SnB#SLPef|vdNN|OMoPtmLc2t!5$LE-|q7*@Eq*gBh~ybZFDT~6y+w?r2z z&0t2scc%;F)2>K+KT~;zHLxyjEaKRAwkeYo_gsj`w@G*Tl}1qR*$hazLp0Uj9%wCJ z>Lh`C8RSYLUSa-bJv|T0e*cqZ%7aC*GjEf-vI3;*cgzNJR&0)U_@0B2N3HWmXm86i z0o!K*nkkt3W@{es0GwNVo#Vc}GTT{Lj}G$am4$wgqdqQX5I{^)>bJz`SP_2ZiJ|kN zR@VdwUl_tIRK7CPEQFJ^)?Dsh^pCw}DaLK+`GtuVmhe+VGJSuGaj# zpRwQ%51`(@EnXAHoh4&=1{9mu8!4Yhz=hEx^mZr!iuS_QW}XV%vE49_vpl4Ugk9(s z3@S}_XS_A?RCYT6dsI*kr4Jxv52{jgIID6Y zIJ7B104J~f*{bty`t?p~f`6}m*1xq!iKH-xFV48(4e6(8hRbACd0{g+)87*LX6Iq! zMo{+U@ZxW&jbU2WsI`dsYd7IV?&#iTKt?*OZTfbY(V7|E@Q);+G;YdeUlL|p^t!7eK?K>z`j}y^WS8siP ztywA%P+nTapvOlGGn%h*Yd**T-kL~Rw8vRxf3)e6!+_K!sDcSn#eqtzglGHPWeg_T zO&}uPMWqnMR?OmKMA$W*O!t$APSgW_CyOcKV^sl`X*-=3csXCBJ4@#HOm@ ze!MH9-HafH4kX6NtwCo+kCzQ8I9BaK0#{={XYvrw9!U)&QZYO$F2`GI9Q@_is_ruh04N0@g^6t$8daaJ)04@)WC= zSC-!*RbGv@T=~7N8i%ZzwE++^07&rFHrs7z&ul>(OJ7)%+1>Q}0w`|$DA-v2Xx&j= zhYOvfVUGZX_jK9ldYzKKSKq}lYDO{;f|Wo7;;CaqO!PX%%n2B80cgJZb;EP>J-m@E&Z}Q|ku~ z=&qAwmeX!H;HHB4OAx!9LLBbr0)M{%s<1;)kyi2>R+%j{%h#wn^T1$CGyrV1{3@ej zuFiL3m6(|lg~S6K7LVRN0ws=)yE_JrDFR6px7pI7z1>llZP-GmfroY1PZ(@x8v3lN z-s_28{n#U!P7-Z*IgZ%$*b~z5C7uJb38j>p?<)s7ncDW2Yo?jj@je-|FMxM=LwdgV zwX&jw_wyhv*v#FLL*e28P|x@0GE05@9e8!Ij=ceu=}z+Ews^dqC}NhFps5^4$JvpY zT;2YkO5(_;U%SNB-3xXwS^Q&!(4mbUQ>;(kQFR=p=+_I(GIQ! zvAU*;7l<9lcn>l2w}5c}eNi-6`2E^B5R?@D(zQn@ETQmYQX;;HLC{z z9t#XH4&yi)D7`h)x#Zz!Zg!ADIe9C%16242da?mD27|q^2R^8-y})Ky*Pr1^KGQt} z9|7K}zy?8%*ysz~K(6TDHBd>XrJWk39BYCR=Tn^IW6#r6RHH|cxQ==*7z%dkd6+_K z%03IJiTlTjbANJEdTjlUS5|_AXno{WNM!dH=S?mk$Ad_-5Db_~+4NFb6E; zP?B|X`JgE7n@hQ~KWB9%eVKm{1Or7tZIs*T%bxD79oSHoT|`b5$kw%&a-K)0mf(*X zW-Co=^qud*d_MsV`)Z@0=Fj&p3o@}E-fK?xOc8XXK)e4unlU=R!>Uj+-h2sfYglu@ zJhbGh0eHaoCdg%cwR1hY2Bd$btPeUm?xuL}{ee&pQ`NwMkzY96!`0kuQn&ZR%>FMj zFD|U>@}E@5DTPvi*tOqO2nf7~=Iywb9;M`U@eH)^5SVAmQI;$MQed{Y@?2`?28TOzqBwu{NZ#abf9LRYfD_9jk1eZPW zAR}jAX1BO%Rt($@?q_Nm#Jsp*Se&b2@3Y#s*g>IJmH%40s{&*|P)9SN^lRArochS> zJ8{44r+YpVcHxbcgB(o_7d>oCx(;TSN7v9(IUJ1K5X{a(SxR;+!KG3=<)zm5Xrc`{ zAz!RL%oz^xAG^aC&U#tGB1x$<9QYbcXI# ze4XwcjDa=(vG*pG;jTNOT>_eHc*uvcW9DT{DK4V*ahwUm`@!CxW+yx2Y3edJB6Oj! zCYROaX?bw8EMEp@B$kjap}e{_hUW#g^fTKgMgV{^Rta|J zhFnIsn5{7D7u_IGCX9k@4>JO|7!7sipBwg5d3Cnsh|AzWlt_?bVv>IC1L`HDnr-oz z*9L|CVctnF%mBeh4mjx5Po?Jj>l~al`F~RZy|kWdg7&pA(Mj)YK=DR5PY@fgxV&3i z3SJ2jKBo^!Y5btt9On=fH%8gBtoo_{CeSBE{U^$)VUyeg;u6mdZr2jz!O{Dzro%5F zde$zE2UdVh%8;Pcd?4UJuzyF0>q!5#Z2p+% zD&64Ud022@9rTguWxMH+co? zCBKg_wImzU14L@%xh8D{vj5z_ZVXhWa}m+``F!hEngryPV`lc z%ts9+mZ=V2T>uGl(9~dryAC{>NO6rly8B+=64$d#U>k?p>#QsobOEw!1@vmm0+|<& zR!f}%mkBq68mhjAFO6Eu!WW;<96r+FN{v_AC(vl^BPX@ci9=(@U5fi*ed(bH%Y#qb zjXBGlkVYOr`}Upxp6lP-;$HMJR}xuykl|Fx53FSI)ijEd3-mn>>RzFD8!vw zj0@UU0`WaCGw|gK!4y8EF?L~nZt_IT0n#QK?t*VZQ!cT4^~sHW+{exYR|c9SgLos| ztS2@rPx#gOHz>5BWORtK9#Z#^j=NSAkUN-YvbzC#5Dv? z{mGp%o>Jr8reP>N--V5jLs}$_u^Ea{dzF(eQikl(-I(hl5R;Kb2nz#!^k)e%5Dj$@ z2PL}wA><%b)_#ksp*W1C>_O%U=p0+Fq;1o? zR=+gTCG3%g_B=+x*S=6jxiuz;70q%0)wkKf{i1=p;Xo}w!sfOzT6`EYjpYV))#^B; zz@$7oCQ%WP35T%=KS;kr5X`sAd3spbs$z2z1pkg+rNgFBbwe3Pemn zOy0yxd=}6Zcnq!`6wx< z^ecl|n~_Eci$vMgZY+q^ILm0Su~I@0*Yb?-;B&D4oap>pYtW0|JXBVwGE6MFAUC;CbEW%V2==gjWwd?G2B3e>1wTZiCRv*6m6=Jg5)|yzt5NJ4I4qV0|h%78r zvH~~oz1^ES{-a8%3{75|}OkFj-Luw8NWw1EljK*vYk2F-1<{_~ypZqKFv>p40BJqMhv zey0>Pbb9XV-szy%mt3s?*sWCn(*@smFR@kynxrC255U1!bD};sTY_oYabmU8y8817 zG8l0n066*E4yyurx%Cc}D2$NM$x<$)laETSD8jX*%hPM;XxYtH)NQr{G@@#ucE2w% z%l~wf#d_E?Ufd6k=jm;G&rgDYK!krvrd>hkXR1*DmLNOa$T1yN@35N7_ZHz))TBqXdoBMqDB37C@26(G0L!Ka=oWh@O&yNUIc!eP{^9H@p-4#7VIz`o zKQb_SHOcDoo*HoD+IvALW)opXl^|2EJ^R9%zdv@b2R~C6cr6uDrO=IyXi7;fZO2C1 zI$c+c_x|3rA-f1AOo13gqjKhT!K6AXoxO(_))HkPvWJleH%+f>)##xFC28*9tF49u zGIWE<|AVPQrM%CZdE&;(x=Fyhf=S4j|KXcK4YX*WnYJozqI>Ub<(nrUv>1H_-NM>V zI@MDhnBEobT2+s%RwpP_`F9^nfgDV?NA zSH6Cu(USx$)LL3#cvJ$RK@CFm$hbM`=kn|F8;v{PPHdq1>mpFVYt-0YYqDMSmSTT8 zdc6;3q#%aM5kb&(ryk5nJpN=&8Uy= zRj8y-xxmhc1G34?5P}0JShY%BIkHEMy;>ZLJv;(K5`D;Fghrq*h!DCX9{L+to!~hS zmVjbH(NfEQxvm-H`fWo`7bs)}Ne^70EF%0rSRfc7_-bdBnjg?^v}{O5Q4pVgLw-a0 zii8SnqLwBq0&O!ql)(tmMIFefYQKFyn4CFyZSSu6v?t!LqlOzW8O+@wjmdQP7% zgwG`V3gMvwxCQxb06xC4)u$WhrpH!)Qcgyl=!vgogmTg=K(j!kg12z$cIHC(p(`-+ z_zTdmyozi1#$r@?C&z22$vFLZ9S!y?oTb*0T4IAt5vvX~>&~BL7sG zHQQ5!g{BLa+O0}L*rtdBI<+crig^u+^k3fpL&iv}!#%lzZx3{ESjSNpPB;!CSJm(*@=CtFY%;9_YmfA1IVi&AFcu^IXjl-tK5a-WoRoqv^Ds2 zYg-psqzeSiCX>Af(h3;g+st^PgaBwS31|}}f^O2-_+3x{z>F-)akJB)yx1#^jz{Fq zK7_4?0B1?)jx!t)`#M4;aV2`E`b6gp&Tuu;pko76*;oZgosv&9eg!r{4Zf|aaTM@M zu|m)wl7jk#8^$T`H_(80QC;|vj1Oz7O?_lOnb7e?kQBm%E_@mWQ`3fhVSAE9)*5eq zQHe58x8le0Zoe<6&eJ#K(*`zzo}l>N%i`_!cC|Oe8sh2#sR=gv2pg3PvM)#}p5K)Y zTkAP#a#O;bA@Q$-SB@uPj?N)go<;3cWjML8fV=t*as(K1`ft{}+Ui?)(of<2ebmkp z#0n!{ai{873?B5Ml*PK?d%J4gIk|50GysPRpQzh)P(G2y!j~1~5um*^D4pD-L_5s0(+-G=rwCg8`8v{O_%g}NW*W1J z&`I728p3O!Po|Cnp<>pJOQeR-tABVhG9piWhTf_Ni8fbzVCxBm@Vwjdqr~!6Pj2G= zat-?I^{ECPR{=bstakGrW%c3LMs ztXZma(}_9_&q+%{1kw`?ta~;Js=7jJ?q6J6+D(prO~`y;JG&-9HP>chjtyPR4vK9T z&L3w0x>k^cdFP)V(O((r0WwR5p20Euz~f^rliZeb2}Ni)3~k8ws;Tv0?0Xh zi9c)DA3o9H(vPEvxKCg}7=;!X+b%gAf65^>=+lw(Y3W{r3@i@dQ*Icgs2LYv{Vv&r zv|vTyBr?{%31K;S<|eGCZ>3Oev-$5$1jw9yb3y7_%dMWfB9yH{Kaf&0<^K8vKSD2O z*jTLo(xGaG5VG4zV1_uX4!oBzGpl)#C9!tE>Wbk1A0NX4>xDrC`lpjwVs|p~pn+vW zJq>&=)FEAs%y+v3-$j34S$qn4Vw+JDZdmi{t@e#llL% z2UkqIPn}lCW~LFeHc?~VLyCf9uG?Fd1=S@0XbOx#k3P?AKUYZ1&F?u#hu z8dYbw7j@N#yY;GE4hsvY8Nn@~$R+{3M|Iw+$2YKIs!tc^U+Lay&_PV%%kmj_o^~0- z?xq24zd%JW>MnB%u1{P%Npy@_W-r2b9Z+4KEsB!WThq_O$at!NCs|Y+g#DC*$4Mqp z?4RN!X7kh0IVWb-(UHAWTlzQyRc9JlFqk(aWJM|V$FP@RBq`trJ`!Ps$_-37gW>t4 zSq|zbxMN3OG%=yM9|+1Eqw92)&fZq$GKS*J5*a7bD$qMgKji`wwHntZmt!Y`jaa2} zh=UmwH!R&gB=aAy%E?H3S{PqC~Y(wQIUT^ zVn+4E9y77ERP=m66`+Hh5v(WG%q>exh?5WV-dR2IOr9y{j!^vkv*S-q6b55DqDP;y zjtR@jpye8QWgUtp?n)A%tcS8tU)rVq%Bo-epgrp{{G4g048X%-71H)c!aNH32rFws zx^SxRZ)@LaqL5%NgygUE85du26@@ZZ;s~I^0AbManm_P&lKeoytbF2S7O7w|q+fT7 zszwJ);u=pHgcp3@foh!Ro!SEGfxdpT?8e09Q@d{mv!q<@UcVJUFWPS->9Jb|3gFsz zIl!Dmr!KY<1g{oZ^csa;Tq?8xX69gqyeJ-4eS!Eov}3{ML3!7IR#+BkdE>2sX3wMu}V zvJ-SNT~zMLiRK*4v7eCe)$v5}xoU1r!7_vIwsqaskn(&WiEqk9X$|sX;PpE*-&eZ9 zz!emH)?`g8J0>oz_4kJRD7-6yQJ_Qp2%zTWb(E9vHa=0aQE&ov&p*}PC)QKjE@$nn z%Z9Z<+_M1r5zi;Ac=hV=Du!{ zl6?1a1g_5if6Hx_Mvi1+pCOv;PoL=#C4_;HdM-DtxZ_#(&QI?F^%ILE%$r<@c>iOe z6!2RktP6?z65Qz5aY73_8-TzvKo^G_E7UFF0iI5VW>bld=mlc9B9CBLFv5}o^5^N)9K*~mreCXLDTOc7@XFixBgBX zbBRz8-v0^J6HphW7fI22stsDU#-@O@b#;()QirCB?ZkeXg0-oED@wBt7T=@IPhIOs zsPDf@U?!MFY5C`?-Rz)QniG*v|MF_;d80d^a%DI}sLP%$g|wrErN$=i(y{)cjaVEfAPpS#+_>C|8NjO$3Z{%wEB}iCRInKs)YEYVxfIRe23J9Cc zckV*%yU1_on<$WykIID>oVtfYI#X2rs#3|5jZhRDH$7x#XOJ@qJ%pZB7*2m~vL}a& z6`XipE%#q4sS!Qf;(*cudUx=5L10exAI~UsvD)!zRABq@@nF>kk7(FI8e9eyTd&TBfgdiQWp9vO8*y`f-&| zY=RB&fj1rqlIs#*E6o@Gb*XwHQ!0r+YSY9KZ9jB*IXSDWR>R7a2JY)d^{Xy7qf?6AZ*(T!x~EXTnK3S-pR!LY`S2JJd9bg)MEERt|^Qz z)tJ^uQ0>WlL380w-)b!dA3ULbAV@ALT_TPU5Q zF^>B9&vsDr0cKHukT9M8m8{>ex}*m8_AeY3*7BWnm6BZixY7fW7f04W8GfpVwlCq7 zQ^eMFTjrq9VNOU&8cGzo@UaWrjHy0YaZ4I6>9EWu9i*gia<{f%8WTONApZ~kVTUdG z><*EGvA>UCVfEm2c~99!_UYw=q6Qa_d8pqA-n}(Yc6{T|a-W?HDe(BIm?M4^{#P6p z_6w|b`dUX-qaM7=7P9c`FDJD6A#Z20;n;Bqf_h~qbtwl`F6=`3@D@A5gYR(xH+TyS8XjVH z!}D31IpIW4n|;p|qlX+0UEqy1mnggu1UIPV7Gfot2r2ow7G0XJ?;|r$0) zwhsHjVk-xFq{il_(hfFIYrJYDpB2V`J=zwVYH;Y0}+1I#~~ ztIOU|3iBAy(i2rFgCu~VI0L@({!2BSW28ea4XMl41g_u_PhHaFY2gVAt$-#3%uY%GR-=#< z&&)Tr(ArIBGuI1Gj1Tj=)#$Eb-di2PJ?OCYUNFsNCpFg#<{AhTMhC8|t}QzkJXtAp z!f>?`o*mV@B$DWtQ?nNZ)3wp!KoPg#KoJ>kFAvtTIBLZF%I}`8Ee@KPJ&SWTEHzO* zEN8Ub97z%(9-p9zdlS$vSU&YWtJ+!HQT+cG2T#aN=Q}iHau4mL&_6FYyx~G#D-BL2 zL-A@MRnp=m^!4zkEXQ-p#Cvk2L)dV(%Dw5wu#&E$(>#MOv8mR1It_@wIXWej_3-j1 z9LH0~lpZf{s3Rb@_wD`Bydpq@Pa?S7)833VQ`0zPae0T_=}LJGmxg6_O}j+*zO5XN zJistJ9>5wCYQ${MgFKEhCWjJFyuc`K%QdEuJ+IERDRdiekS=n590}b^g)vF&-ppX! zq|Wn`BO{+Gg-(ML(}ZUBRO7?4!-)nOfXPBz{?yNNv1FMa<9s#%R$eidiho zXJMZ+o;9i_qLZ@yf)QvfBzcFw4XyD#cGOziGcljtGc84F@1p*~AA0eP!xu^@tNJ+k=+vtTY+Y#}dM4cIVqj%lIv_ z6(Luz<6xu`5KI6FHg*42G&12FHkWV?&)Mxx(>W&~e)uTHwE+ouO())%HbEH*LfSzq z|GQ=4>xTe}nv7p1t(_G+k-(rj(O?<8WMZ$9W(qLN|CAOY%44y%KJ>dD4)|jK$vn-+ zEr1YOW!f|`alZRd0~pqp{Z8sP*UBibPusw~)|y0M0L}n&qapRcg&Z@u9Y_9Y;Pn-7 z0+upVrmZ|m9PayepaBkZ0f$+s)2Gcwz=yAfwm`?hayeQG!#g$06eOHBW3u|QfNX&F z5(IiPnxjqP^ckv8=;^cTQx5-5e0V6cc&X=ZDbW80-w~|mlK{VmcUzG&ANGH50e;1e zBhEnwe^h4BxwLz&l{-z$^Po6uD%aF^#sYR`TifO3!9c=v{MG)~Cxiy``I#x&I$>7h3%O0S^@R|Tbt zLMYM{X;MS)Q6Zp&CcOlZ5;~!GNWKXK-|zl}xie=@ea<;!u`rK!Y{> zga>Y=6e)c?{^l05S zbY4(BbS7VlcZQVh`y1>`e}!hP&t+&dLc)My%jAFnua*`F50IM$U-n&;F2P?g2Y&C-*VE`e>WZM0zbV)1S zdV9L=CzV;T=kv3|x{%fG?rnn_U|3@T-Ci(=MAa^1k>J<#C$}ftJ5mv`&E2$l>z$ zh7PP&K~#^qj@Fjv9m3A2W~~D#k_GS*KacFiNma^z_rZbNhPDttv-@`tzAq z)N)xr%iA}`C*=Ztbfd$yPx3!M*Y;y&{@YkQHMpi+;xq*JlSPltC0FJm3G`r~I2hRQ znP)wTiFJ3NN+JH+ zXD_|p3`PLxt^GG6xL4nGiF}zCg(`CBS6F_`(3;({bCx~QMpeSArN4=q~4tg!ObDqlTkqqm1~Dq!-QqLc)5wp?ls^SGsJ>BnXU@t73|?E~LG zhNbRuN@dK6VKV^WI!Iq2Ezl%9q9YP%Vo2h1|LZyoZ0l;_v$-a}>`7yN-#&SfqjAE4 zOK%6hPay4$YTPcmpSr#ZMxFpL%un$gM+oD#^%1MmsFl|oBKe8om=y{vtT6Jc z9%gYe;}h{ffGNiNiW*g?Bw?nM^0aPO#k|UkVl>C3kTi3@Xl%3F&_{@_hn5 zs4Kkx6ztaujCx7&ll814(Uk|@Gyv6`7_@{2WH~wljTr=TnX!fkG6N?mbG4xyUEV+i zJjE}c2lrarvN#}DdRR960F=941L*(nv*J2$J=9p=5Jy#d8vzwX>nUsCOn^$T$(8|U zpAP(v{sRg$k45-bmbX#?i2_IPXm8WdGEetrxGZALvIddSdMq9AS^xXn5B8^~2u8`* z@`9-TEG1V~mdmjAItMEpR^q>}1-3K7hWc=4Ex|{7vl<&BuVW}crQl+HL1n(jBt3Sa zO(O%c+gd;;c#(tk`_9ujA^toyD#n12!EYFmPkG+0=Vr$w#Z(^elMJ-9ITk$-H}!(` zq4J@6Lm0<~{1n$YO7my7ZDvoKE`k+*Xe-THH?p=-%>=@DsjaBILRv%K%FVq^8}P5j z0v>o(hk|LWmJ_J5SUNcg0Z2y-pr_y`!la&)`=DF%b#Uqnk^Jj_1)t74TcCmvMz~wuJJOa<1q@D}ik2(dFkb^p-_zY$ha2ANPC= z_;)t?>uZdV++*F0Lq!dkIcu?3)%3{EcQ8Jw4TzE}$&4*t!M?mUZ_CZke)gbr42iW$ zgND=r=#?z((X`?SG=?kQjE&vUvVar{jaXEp3PbF%KY(5?*z_I81#0l41^YcwYMyB< zFtuEVElHq~X4T%|g4o-7ORp=x-%!MW5p$%G_s`^$VCN)zP!jaS~m8ZQi?y za+DqX2E#NdS`H1eh0Mcj;lu!_p0Fz{d|QZUs%qjE$QzPz%Q!+x%7XIuKX?LK*y-_&CH4=eF@+JqM3NoL!50frb zTk~D2Oq~_>Zf4YMRDg*<>!1b_GL_{59!C1V!IHwc*|~U01f@#gr8yT-E9_2Je5y{g z`6I~Kjf{+jxUc1f9Brd0_>x?6`^Rd<~;iZU2!4f4kHY!WaXg={fESti{>8D3lwg6g~j zm^;}NtBXBGH+V{G3l?En7AeteD6_zIdg3&0wZrsxN}_N|8tUd@TnR)w4Me*q4(R6x z^rujei&xej`hQAnqbG7fkN7u7@Ze0AW{Ngty2ms$dLy6R--pb7rmAoIin&a#gv@qW z?!L-MwDfU(pukr5fSsG1Z(KYguJlaZpuqEUBluE}eoHV{H!I5Q1gOlYg^N^QbwAX& z;y4*x(bw6fzB8%&HN6?(&veY;flqoQ3&)+kp!RfC{z3;OB}lA2ZT%zCcS_-_pF6DsZ&=&&=4;?@L^N11ft6XXgbf zT!PpO2X=#)NjAn0$AMiOj7lpds$w&`mZ|m?kPP|)V6R^5J*2c`5N}#Q6zEJ5m08|{ zTIC-(l)e9C>aQ1@m;2X;lagKom20NM6-4OJb=wl4ReUl_&(#hLOyRj6JbbxMcFK6Y z>!5-peIh>EjBVrVAsQ&#?HH4mrv~|@Hw=q%^977dQ!`nLDSAKfT1kRz1mbe z3{W~f{-k^KM}EYH@P1X-wf0c3Yz)8Rc>cBU5h}2P%qOwdRe{=9K9@n!9*Ary{Xh`H zT_+lo&#&wW9&J;$L%nGw66kXfH62Ka1H%}#%R&WTr>#tm#ZzMiWTVfFkS7&IZ@8V4 zwXQT01GexIY(YW7$*7|6>2Of++()XGd@&9lovs~NDPt* zsHR{#QqO9v&6!mFv=}*a1<=L@7L`0qsh4<y|qUhXnu7mCyPPN-yTpm0$kT!OL$<=Pf77*YwYsw z5p{9rEj)EWfLXV<^{E9FZgyY{T(J&Cl6@=HnH0OHN(!fYy6DAtI@W;{G*2Y?f+(%(E)>7nx zu3iaIICyXn_(D(ysuP~cPTY>c{zeN5{L3xfA6_HbjEd%)x~{bI0dBbN1YS*!vo`ai z%HU#_M)MeI_``BtV-J*U47mGepyigMfJ8SVNc&o_H>e;B@`;%xrqIr{2l>M_Jy5My z-ktsvaOJm_KfKX>DD6^E&J|A$nl?~YB?hL(PO6WF&|htk z)Cy|ANLN~I6S6cfUa1qc&li(ZP5 z%;HMB%VwK<&o_!333BqZqNj!X<1v-g>=?hB?x&hTB50rG*@@Jr>wm9tnD9VUuP|O3 ztOl6soWmieYQ73aP5orCm$i8~mC!Q!OcHru>j6V7if~cMx$29!!gJ}A;v(@`zd1ZT zm&tJjEh<%uE*GNKy&&QltYgcdgsRKjivhW25oMn<9PG$D%O1#ER4JwOW6RdTS?blk zS%Qh0(H})$3myzkbKsZjWrX)tj|N?dT7AQ)Qx?i8=dHXLq1pK5ff%%tIaqRiTQ5t- z@Hes!=sB$jXHzCHGWFibGN2T(pPWK#`J42uPafi^>oq$9b?;&v=S+6gvJ_3Pf&pIG z_uDgibQ#nD1<}`JuJh4xNZM*z&k*7OWQzf^RkGg$lRa{)b$=Qzr87;4B zF0xrR%fj?3E9!|}e_%F@f0c!Sxp(`>m!S}zCicSyA**c~L0=wRhjtcH2E1Sme{eKc z5NlmFXmliVESPLmbO~M`qQez`YBJqt)8isvrW#tij(KQ*`s{Iw2yUa^-Tf|+>xp1g zf|5z`ddkg2S0QK~wfO)^S-8MH>1NklIR7FmD=QIDRtYG(2@-ibzVItYO0mJDC{qj4 z=fW{><5}idp+HN0WuPNhL>^<3j}+Bsahj7I<6_scVhc!j1Eh{(ouaMTr)IgQN;k8U%(R1XQ`N)0M7pvt-X38 zczlV9fgtk24O~&ylMHf(| z21FwbhO`O|yG7imDnx;#`ANrlPBx64-TF#?hQl*ZVo%S~3d}>=q1^Y}sYVgt*RDPg zXVT?L)K<$p%x+8(U^@0g9b_EP`i=7-^Y2(c4}~!L7&yaV?tjlS)QPI57XC`{d5L;^N6=E95DJncCgOM_MBmE~=D45Fq7oLbCvrn+KoBHod&wYF#7r&xLJsT&)^6T`pG|mmh25}T+cXJj&#lDPez%uKIOFz zw#c^QSq5JU9w=rqJWM#f+RRgMC`o_g(8WBX@_mP`jK4_YbWgv{vMz-8QJ%b zCH!if3&K~|+4E0{gFk<9=v%)x589nk2klM+8~H%Xx0&>6T$ScBd_>(=Ok=CQzrifiz;m-W zy?2L>X;d&F1)m$93Hp|8c#bkvQqV9xJ$2gXMnAMD)9G{QAlH zqjEM#a9{}1zckqG*{(~Ju7OzIW<8Iw@dc&dTf8IEpu0g&WF0u@8aRA#XG6uQ3zR)r zbBii0`#s9c3l$^rm`0cDW(jF}SEI2#9+00IF5_e3+lWSL#4WFtdR(|XzS z7|;YRTerOx+L(5jltFAxiO@kYo-1|Z8G@W@iMQrNpkh4Ua-KuahE^vNkAO=`Sn~`t zXfrNEmHei31Gn@ zwYvaR)XX0^@1a|B*P&v$AlpGiSB=TPpsnSh{3sE0rT%1YnMqh}9a{?tc)(F7+W8rO z-k8Na^C(K&SW{Y&itj)>ylCxImVpg@pk=zMJ8r_l{2J*F)x|(=f%+^X0DRmSP_$1@ z5C5 zOvgmJBY$Wr=?V`eRKA$Bgj*%AF@(vNL=l9KDr#R8LoOu%!`s({wN6)n8fwdrf@Wi! zgyE37Ucu7d(ifjI2P}fn&%Xg?XzN@n?tb!M%p9oF%#V2*9&O(Pr}7l!Rdz;I^CQ5N zeCcrW(a{E1y``1=caC;8UkaV*-v%9QrHAy%zQ|eD_z<(W8jv&%YhG|YBD+9|VG%YX zX`+*`2n6dY0xfFfuRGV)X1-B%wDmq$k;jh4pc(q%pc!gl!v(hg9n_cF;>t`vB%2<3 zCL7~bn8oHzY=s0Mxvrp@D^8M}(#!NeCp}-o`Yj$nADY3Q4PQ_fZuwf!?2v6&TPry? z?RgaWAR9)gpw&W9yE2;vT@%%zTjOHTqQOFq#yllc#F0{)O4m2)ObYwnarV-kJ7~*+H2>)5b2)l1sgPyef#7lUj3Jmx->M!g2vcUFr~ffrf%oQTRxKy?q;tW*McI0$MIheNC)5BxPdG zdKmITp~2OVUc{~H^{Pu%3%i#{<(@X>IREW)o>Xl3OL+~lX2I%6VPNCS8%qCjfjbM>8Vy&lA1zo%AgbvCDF$g{Gsp5Zuiym4n$eEIr4z^_syUqGRpKW4R-z((K9X z$`)j5m3(o>wkI%DXx4`}dItbpv;m2~NFZPs>;TYJ9o7X%Z#Pm=c|1 zA|WF!_0y#0n)^x6B5HoFkIov_CWbG93Um8e;`S3h`zrpZynUDNm@*!BN(d7#VYQep zCl9wf*Oi!IemDmD;9S3P`Y8p%l9#GayMXpeLBz(~-$qEygp3S^56fFogny%}zGVlK zZyQ7c-p66NN6t!N7x2*>7mu*!Dz5iNwZx`^Uk18?Fvjc`-12Gi z^9fZK-PsjZgO|I2?)p)5SJ3_MFl<3{ekQok>8uK&7igu8&T{E{#qG}#fgRJ@m*x{d zg&9n0e<|cr^DeRU`sQ27AQ+1feVOcjXn`w{lvMxI-AfV0pVCNgANU#?@nVo` zv)O6tT!dO8P5T9NPd)p`E_FTKDwss+mutYJOhGlAL?F)RgD55b+_N$F!>ZU+&>k!` zOB2i!Ao~W(%CObLqS!kjS;vT+ioWFLmj3V$8#hku9DZy)q3hBoYxv|baEvK^OiId~ zRv{JVFu+_Xx4wC4c*gb)m?A~beZ*fy>hW~gC~e#RJExJaD&U-xc%`-O-K+kH!C6ag z70z4wftI%pqZ9DfU=jf%A4@*u@~wzk@awJs=0^iwNU5#P#lPfzJ5GHYicZx4GZeEH zx`Go!yYtgHZ=mY8q`@4}mx!Qb*(OLpQ2VlQ%!`#?`8a8c7RBDJ;tKO?@0DY6s9B$M znu=_ru%p2Iq(BC) zs_hi{!u$o@!EHR?@-OC4veK)~Ax;NmLuJ=BNZ3>VYgUfeT3Ip}F45Pya5y)3X&jve z$Of}0VbS~)p75KXe;%B^uzyUV?+r{e8NT4ZQmm<&0TEAUHR%F}(T34CaQXKWzs-w5 z%d#w=_j0vIx0!%+HAOud|=L?{XkaEV|&`%F2{rN00@M6Gi=1~6|_%iaPQR09m=#7adfExej z=jV7s^NcoLcL_ENfep-ZvgJpalRCie!}vy)lRxZ5f9PTZuPfXVX>j_5F=nsDkUxyp zD(X@gC?$d$jqBLy^8uTR$oPOn*nER^DGErt|S)*5#6Kngn3SzW)!Y=VIqhx8} zdLN>)5#=DL_^XcAET><*t$)c&ZLb4OXMaf7&*1|Q-JNw7*~y?RgIG?$hqvn{Z$XV~ z#gQ_}#}#?Tpn2Mn`-v1g6_3q>Inuj=-(2CHyIxafXnAJjI+Z8fs{4t-%mb*>y~Wo` zc>>`k6z^`cvh4UG+*U66KpAZwow|!*_pe-$tlOs*R!#h){gHVn5)Tt4ZCYf1reUFfh1=rHKwy7y@pL(yMOW^@Mw1JhO+FWsqG*I>l2vD3e?G2_z zO19?%Jy^QlA0z~yrI-)+N5~IVeHZ z+DqPkqk*DS5)@K@)XK9-*KVgBitSyj{EqNwE3XXi{CvWD>EkIMz(K}DJ(R51)2C0Z zfylyv$RN1WYt5p*{N4QIsl2TWr@3WeHLzEk@Y$il@#EN=Z>3+v zS->5fDW}~;0_8!TP2m%nV`VWky_K@b_~rzI+0hN|ecf_$KpjQfqGBx_TTbNdPIv7z z;@?%ij5C8f_*KJ>8}KC z?ST3?%i(EG!3XknE+I{zWPE~mxMHqR5wdlMQx|#FouXFl^&a~@EB<8Bvkv=-MHIt~ zf8Jy?T7unX0hZ+-NMP1xV_y^w=b`9R{5+=NmVf64l}mG^uk@p(;7S-6Y>Hx%P?1_+ z0_ydq5wfY!dzL9Z#;oGF_6V$pjU{>{{=hJOS3?fB%M5(XMLBRWZVKur0hK+&sm*qQTr;+JZ}#*?qFKeA zt`lYXue_#0D6;qrdU0T-0Jir1T;ZTWdO)C1LzxwguD|)y{hym@56wncQ3my`)vJOc zFI*^_idOR%IF$KEX@IKmNz#9$ICp#N3YzF9kYlA^_yNs6c6d-K57e#NGshxG0`_xm&x0GMuZ8%EXR_`?I|fBUo+;6D{U zdzMo;+e}HuZ9F&e=f~6*?-@~CXL0%7aB})Xh|P)B6_?sMNmScI&TmO#P{}OtBM=s* z#(av~a_hGrQA-4)A;r&p0e1TfqI$XZlc?|h&A}br9frEAfT~;lU!v2L?Y9+xK&(z9 zS5mJ;G21>veQs07BaH2zD?RRhS4!-)z%yikab$l?6YlJ>bng-~19>?>Y%rJ-na*h`TU zp?aZzNtj*_eD>qke?e?-f7CnjD(<+%YS={}jbJ{(%jOa`7 z(-kBu6E9XvVO?n9KAotWSp(#scuJxH9@EM+rsT{B71ya>*lQ@*ziDKi_54-W#>4*x z%%CnC!(4Esr%DZLW^oloOW&Aq_6`#b_I2H(P4c*d%mNIJPt!k`#bxT(%WDArxtF{6 z`8EIV-@G+e3-*I1CEJ_=iD`%mfZhyqz z+`1o3khmdbt7B2JlJI*CZH@Zuo}tRs8=J-@d%`Z(quiR%vJdCveHQb_FL;%KJA7F&$VKTG z#O5=J37tc-G%i`5>nh%T5M?=^eMiQ(Jap)sY85@C`V-SkSZdjV%v>!3is3<^j5FX4 zGy-zl-5)-rsgUmwFF>xJcMUgTU)9YIA3cY{hHkH>cJ#);&bB|l+R$K5)>Laq3gQap zE%O&n@|uXmM}nIXa)j?B$Y;MgWzB-Nx_+m`%Wq|M;D&KSZ?fRHijVDbAH09yJ&nR` z{>$vys1X$GUOtfAGs<%J{h&X9CWh-++*om*Qwu*QVfX68Xhp?17C zz-d~K#c*28dW+{?lFwD$8#EBN_*JX(&Mp64o-CxuY(z2nSp7L{O1EH5%|lFe(mPaXT!M<)yuxohm_OxL2# zN3&pSGh7XKUB2S{EzTN?!tCMtc9#?@c#c6XMBa_qBfX67lgjW5XW^fXGlm(~X3Qkx|iZi*-dp+34m3Brum=GGQTBfVio4H~U%bB_ z!j|`GtNo+$-k{PA9HjVeaJkh)(V!ffAe-$m+1e4pgo|Uk6M5Hhm?R90EP$tEEmUm0 z{GA%$kE#9zuB9OhH#!YSn=OkR{n0R$e08Yx+u*SnS8G6`d&ix8 zhiVT(__6D`!OB;3Oo~N_JI_aO2eWM#N#|=hNLlh>tCi~=VCFRK>|*A3krvpMMj)FT z!34Uyjzehly_xC*(NNSZP)+I*AT2$%%-5^=rvH<9zll-2IwXLrcZ+ZFhhpOPv*Ej( z!{14WwjN-|DN0=?KK>31ss^N%NkrIuOJZ6KA4-f*qfnnMAl&&IoApFEq+Ls8uFVzP zWN@+UWj7P&fPk95+?%n*q?W`#0=Psa`MZLs8v8Gfu?YgIQlTp07*!_z30aGe3ZB#TUCG8&jPJNIPPBFi zNbfa9w`ww-&yGGe&FZRVIB92@GIyg@-@$I1+*N8{kqUvx=3vAkbV(l`wlOLw>5CSu zZOzTD$`cqm1ekDw#XyJWc0$}Jj>hSemGDhD#Ge5u8<`RC3w?m{ikKqhbnGhk5lUY~%HVN|zW*nZlFvop zm!;V6n3xbxLIl;9eJK$san_P2dBppPA4!jRap)l${|D8{Bc&;$^|O|}+^U#n_5sv&?0l{pAr}c# zk<@@nYW@vGc|b(U4XbAU6UaO{NgylmlWx_*jh==4ds*dtzp1z+UpC(WBP~4Vma#1<}l--yCnHF#|2BcFeU zPIh!fk=r?}%egh}5R;RbvO`Y1sjK|?zSKk~8JPgPC#mlLun0?bU!C6;3zBq)Yz+4$>j)> z80#|6?Cf}&5HAefLd%5pR4*h5%vxCfmfD;~Fd`3VlgaP~kq`kipPmWV$%maVUZ4uh ze}CU^*>!z;88G`9AS0*7zOmw3+Un5?kfe8){k{9c5PLg^+=3=PM9Zk==ui?mppB(P zrjrTB7jxUlV4oS9P_^gp90qDX=Ia|q9&K|eBJEx;%bn%HLydiR4VCe4Nj$qx(QXYT zB?6Opyfa_;t~zL}OYTmd4Da|6^+B^32*|3L-FWNSA#w_6?ViD9NXyDYhVuD3gkP9@ zDKp_T#cf;nY-cU}5BIAuC2fdHG=0k8?&%Nl{x)~lVNjxyz?n_NaemSStETV;i+kfX zlG_eZa^OT!;wI%ZSiakH%X4dDjL} z2Kah)R8s9$#ZKk~rL_QoxCJd<;Io+fAgaUY*7}*yAWe|> z9N1lfxJBJaP3^6zmBYjW(WpbYpQj~PxlSgKDi)78Ae20O<4iJKC+wkK*`BVCExKj9 z380du3Foq4Lh2{D+=-&yz!6REBXy|6p%g9m$}+BwecoQc=#4!O!fnl;J6B-=`GPKY zTNi}&*w=VtYbu_*oyD%G^9NrJ8!lWpf}BG$j2^w_##gXubqiGv+skNC|MAG>0ytX$ zL-da3(=|V7Olk^TPMJs2u_}{fy%0r}JaK)7_v+Z|WzoDOlh+?x!VPPu6xcA^eV+4Z z@a{v@m~04nZqmemud<|VBD~`o6HY0Mq=;{$nzI{*yzM4PlzY_R!=hvEb{$!@*L<6e zY=ICYCCip%62Kj$nv&MTpaZQ5!QyJ28L)2^+d9Ckb{n7{+L_xE#=tq(iX6sMt| zCShhGmLlm1eE7i7QkV2amQC#wZ^5tcqc%tbfevv|G`O7p6}!K*>afGE&D}d(mmqE zg@`7XKrR=xKce+-Qow(1DftJl1(}#(-cY>_ z!mYTf1tO3}O+FDuaV&4z{<7`K^H%XAZQ}nOh%?{50wv|Yw{A6;$loAu~IV@JG)!xy|a@otkvmqR#RZH3Yndu#rndcw(#1o9{^ZM z2gkX0$I(@bO#s&dCMuAxjcb{+xX@TRlA4?e%uq-#Dg);kgY z$MuC$@=#2w1aa#h@Y+QUWc>Vbkm%g2(tu)Kxl20A^J)i+QJ8_}s@cthms_be%L3!( zgLGPLhA%8{)ocRpgExyqm==xp<2cE<9$VcD&75hRV95vSd!6_*kQBivOFPo4e2Cbv zvpZe0$E`oxw;6~-V%yae#w_tLgFH@Pjsg{md9W*|SSy?doj|s$4O~dOP{YPz#3JeI zBKC=+kI!0LY$S}~iwLaR(ZqLi6Di!lxU(cenIt0ZRl_$;?8@pRC?;Swq3OoDh!{n$ zcqthQ4C7>wurgWJ(2l2MFc(Vp*Qd}`q@~UA_Td@|Faq7unQtYM3o>4-Rj83fuzhtX z<_!}!MM(yJewFnZ12=eF;I;R4hZtuK{_dxrK7Qw9 zoIYlmD^Y=6|61c?0rJfrZnbW*SsaWR@}*c07CZK>|4xDg5BB5JqS=XLw*qE#1&KiM zBfB63v`4@}CUZGD>}6&!f%^lTB(nc}CVmIVlNRFksW8+}O-^JRY~OVD?g@=*gxQt5 zCk%A2k~6aWx-Xj~&(q&~mqzy9Lso+D#KdhWWH zE$}r8=siE2L$yUi&ge^Bia~>CE$_zjYk3JKKRCxJLnvy>6?}e6-%APAA*85>Mhf7?Ph!-oa zp)mQOV>H(g;Ok=)FP13BgZ=!h)hA{}a5Z>qGeWVj~}OdMuI++eqtvrFAD#Y;)m7!~vDr)izh!A6Zi&1oO^??w{+~c`Z~7 zV|42CnIeHiJ*Z?3>mw*l`;Z0`_erdaBZpquSmBP8+#%*oLA1>M(x~{*xk~dzMR^%@ zP;R0fE+YQGtGmo>n^)Y!?t*NQ@^~8{t-12|6lnk|f`oth68el1809Az-m0jv;CRaH zV0rpl!?9GJ4odsgIA%=I2Jl3hyL|m@UcsUrGB)&c97D-H!1LwIO}_;}SS#LlJ=l@J z@K!M*=JU(|o>JZgPeALNV4Jm&V1luz_h4&L@T<-v_zRJ~j9O@rDqTBZp&PhxPzzkKD1yBqy$KzXwxmw4KL= zsWE}OP}Ny-lT-u>7?RjaDL-B@$TwQHAzp0h0tr#%TYKs`%>b*+ z4SH<%`t}d}zwudfAq2}Ze3_Gu$ky-DYXC8->BmCBd0e91U6G~mL(Furp=ph4_He{t z>-uJ`#kOoks<=uo3+_%_-s>pX;rUxgdrQ+RL~moG>y!;DPYBgJTuJy8wbMqm5J0rU zwXvZ)>U+w$Is&fNPXfUh%~{6_Z|!RiE=mCUU?-p?hsi}xuP?gN9{hhUul4Ykv*2y| ztk`*8K-l9JdjqxH+v{D2uoPn4G|Dh?y@+B`ZuhV4YdLqb$mv(DFPy6=dQg@phziNn z&po&r!RU zM7W$&m_@WE9=h0ZNhN@IRve+s&vD8WP-5DWYtWYWY4#pf(Um@;hc}5dC4JY6R^thG zH>%ikr65ZQQF%~_q5aVTdR|1gQhsG2yp;an7;F2J+Pw$X%(#&ulMwK!d#3x4*tgrM zw$?SJa%3sQo0%?mtPA>yCfaJ>z4YsW=1Dh6ZbUCn!`W1JK>DLZh)62c2X|Y4a~(7j zKn?a!S8gVmaO0>cqZE6X_ePQ0gZjqs#e_0@OhrEPi0mU!qJb>%rj_MvP3Q)B90Y6i zbd{;S7cQSPuo8U~Q7b6z^pHeri!+#G=*q~bzN$uCxpRzc!LeV*o4I8CXE^3oPgOjB z5R=D`3OTG8dizj0&^Rjw7TkMUuV?Q&yi)s`l3Bd&%ho*+z#>vXu~W{laG?=6cL>$L zNa=*-ZH&lEpIJ0vTAsbRperOVq0@lLp7L2L5CjWiKSc={{6Aa4xlIG#mct|;?GkjL zm9Zc1R^a=rc3SsK%B{?*5GfXoE*z*(8G~ zXJtB^M3U&!rPxeOUPmtrr~+ZXa^8jBg%Pr$wY=KjvdOT`gX&^d{wEP3Cj4dCNV+91v+Ewwa7uXuR>= z-rUN}!zz1?jZ>==)VNG&GGG6^7>l5T-SS&d1+QxYD58ohg15~60B12Q485nU6%`tD z2D$pce&r`$bW9JXIs5KfFLEdc<9B0c-0$2O#)#-v^%DWt?p>=fo0%deY%kr&Si~h- zeg?Y}((F6I0nyJvi+W)NT0@TW@H9P6u@_H@uo9GWSV8Y4=+>Xx9N~sxHa4Aq&1ASL z(LiDg(W2&!qlKjJiGM<*Zi!iGPl=b-QA$Huv%%&S<+G=ve+smrf!>0)$~()J*VY&r z4YO?96u%qFlXp^6(Z4>u8++#HE6cTo#QcPJBmi^;>{&6`+y!Qbb%99%17jaF6>bF% z%==$=(~CVO9$s|91}IQjJ|n;%4R(nBA%Y)roNT^%ieu0W zc?t2xqWkB8#fwyuDg_S6MFn35D`|tgUL1R$#Xi*0pNQaT0*xlHXv$z(xhNCPD>SEy zh(AOa(^et9c_CkK)*ZY6@&>d`i_Ltcqbo>#0AFHM&cx*I=L*uimzQzjL!c~vg7tz| zf`5>YLliopHy4UQ-V^_MSq5CV3C8Q2KGbg~$M5W!6E8M?ObsF2`vDw8`)wN6$@=+m z6eWSxs#8&WMT#pLTdK8oJxC}jjndFgpmeE0K`1r)S`V9m$SeEt=hT`xkEL8;Z$m_k z_^5$&5zy1C;wY52^G&VS!Eg6A@gJpZix9$7bu@5k@pe69;|EEsUI>c-rIZ_>1FxQJ zDr(Db!~Ec!uyMCT8v-f=u5!e~Bq=4|rGqMKu`++i-L@>a!%KI`5sWlHjW8wZRvNjR zUOyV-7O%W7@<@Df=bUBzheEGj+JGd~SneHl-(sC?_pWSvC1#vDTLGX!KPA&+GU9KD z5^j|f(oUT0MH+e$axOniR<92xz3PwdTJzx&;^E3d_WKru<}YSrhiIi|YaAgq)&iiR z=WpdV90~jWbGjX&)+E5LEeFuMu|3$xO1y5E=hR-)<1EACE#W8o>$|zE_ufUQ1ci7m zIk8E~-#jxikZ*b-AWPXYbx{i{**)7f5ATqVYNg_blsID%F>DaCu0`f+17q$m%l&I| z9=W=R%dbPJUEeqe?)_v>+p^{4KN+F*G34gA)dYeDHB=S z=Kkxy1D#P>&gW)}*e}69fuv}rX;R9|Eug&YhXgYDJRVHYVsOfTugVp8Smtc5c*(zQ4>gtp@Iol{=HC8Nd$cR`!VX{}?9l43n;;pVy- z1^b~g6Kh_ffpQG)ij#*Qz=`VEQDqPvr)tR+PZhu?L>g^8DpD%Za%3ptO-zRf*5%XM zBrrkB6L0n}ZA=sWDVU5rWI{_T_%7pTcoKuH!*FG~MphoRZkWP$0=DW&;AWp*+Jn65 zCjc!j*U2tf-{9s1UXwpsl5ki_Z-*w<4(sNF&%zY?wx|xaX10MGV8vYeBRpKRreYjf zNI9|r9#1)dS&OxyYS^at7?@*$=+qt+WC4OM-7z%g#>B%KL!RuKdlkgGKXFrdc=%p` zMX}ig%D&OQ!n@m|;(7I(4PiUYN+{y6tPGBi@qdmqHc3tfmiw~U9c^egpcR^jA+G<% z+v3{%?57;g;~LG~)&`2^esdWDQH>t!pyXNy#jEfY-+@Ya__srx0z8OXY?akQ@ao*^ z2L9h9H6IpSt1cCyd*AlX#5ulQY>ze!Tie;; z```Z}HI?M5?6*;yIRkO9?-90xAZ=J{pvnZe#H zg8czH%4a~$vBYXWShuGU|C@XI{AnS&NUO$QhlM7BQi&z{g5`4M-Sgm+eUzu&!fIo) zS17Yh7)T~{pb-90y;ew^axexw3XJ?AW9}c|{?4}YHJ0k}Kao~PxfSFlfJnI!5ro#| z)PX#B_=now9t<<^|A)_Gmw_e&N#P;??tvgz+U;kh0w~SkUaDGv`kp#_=vUAuQk!B} zp|RJ7vQV0;{r*q>H+wYrn27M>HB@d!Z{u6Aoq(w*YPDi5Gis~^B*#|zuACCH3f;yK4E#oAm zv^joIstl0O3RAWKfC2QYcPe1ktux6!l$OF5d8w^6;wu8qwGm=dNmGRYO*`-``LdsK zMG7Kb1(sezO=(RzWrxCtWWE`m2UF6~x;MLvVaGwrTXXGq> z41!>KXem5pkQwU&E;72X@%2PN=^D6SsGh`|OhrJ~7m|ib1d;|SZy@L(0XERBArOi* zgQQpOI}REhDS8^pbGpNoUNalnJ#q0dcEY+{~&mf=1v= z?Tgu?2^0q)?65oHchgD;e%e)St&rZWb_iD57>*(Df}T2r6xkqxEtAs=VH6}LXyZ1y zq2sn~{HS9oGa96qmHnVxpjX{6(*$WJfnzJg?Qt?2KyG(K$TaElrlE0~S zjx_mOCIj6>_@7H}8yLAlb4^Ht;CMHOCJ5X zyhS{g1|$Ku_)0`JyRYV8SMEE)=9+h6V<-#QaaGObc|IL1g?sb_!d+&csL#ydIRE;^ zEAFB1xduZtJV*G7H85QG&PfaT^=cvi&K@@?76Nck4w^$J1|D0_JN7=`k1;y8T<=Nz z2h#pr!_E$h&mG#?fEu6)M(7K7HWbs31z1RyB9V5xDIE)u;V{==QjNw=Y-}4H918AW(E~%*o7Jkph7qnr#U!{J^k}`X&^0~eC|vz;Bz_` zN6{`T#~^FzOlY(mNj2QZS^%YFB`8%TXGN$y>b?h6r1ZJ@lu)WixwX!9HzK4@Nhn{SW`yN1J`))1f<4jfK~icyEj`jpfD54 ziGT3?icLr!Pawz$pb|kyKX{zL6)Jj|LiC%>?A+=n>0+qP2ANH2S!UXf;5r3GApYOH z7P>NJZ#GTJR{oEw_YP<>+5U$gmR0Uu6)pmz(ssoLL=fqnT?G^=(nCj(BE9$Kx{9>0 zD1=_5N+;5!qtXMR7imEtgd)9!mhhV=u={=A`3s&*IWu$S%sHQPW+wHH09t7t;qMdB zWxo?Z)lnd*rg=Z|Onn7Is>pCYTV-I2E3ZJeCr!y$#aCG2j>?v{?22lhF83h$ z2hRBZL$F0$#;3bA6-a(j2VTVyQ&Oky6dXSeQu=b14Kw!Gy1;Ry-`vN2I{@q_6aV+? zxfD}oh5R8~OFqZpv7*v&_un6{odS%#DVHK9+>bkUeDuJNOG0P?`wcR*;9{u^uTOwn zXWVwZ1*NxTW%MIQ$6vwZ+Su=2fbM9O9|&oK4Duzsd;uVDuZ1Ra z{bSAN1OtA^TTR*W@uj`WIi2FfFulqdS!jK>6IhTX`8%dDCpM+A{U3Sf-;Mog31Wf(xp}SgoN<6$nZo`B3#ocA%afCGHG#vgt?+b^$wP+;kGAbYqXF+R%Ns44^U_DyyT~YLb&m#JpB@I zT*V-443@3-9Tk;o+4=<p-8uC=uiUnfXN-c{=sspw#rLZvB9k*IG+kIIGF@MKI~_ zwqj}8^Vt(wD)t{|dN0ATP;d!%Bp3^}4_Py@eH|^XF3$UT zfHmZ^h`!&BCkmIvDv%~1GS)J0EXZ7FjRsOOHzzFik&5JcINjiA#*P}Ijk`a2 zYXNkC1z>vVGTQlqn1jL(Q(J_IM^t)Uryl_6)+?%cUc0BLN6xmjC8^e2qQyrS_!RhC zM;iVBW&;GNB(;i;9^!oO17&0VeqOxM-nc%14i;A_eLH11o8cXrX&Y69+zr4%4>r2q zo$|%>darYg5D_N+_}3P`M32QB7Hq)?Lw%v_*+h>3NZdB>&4w0#1f_%$2n0S@Ijr8h zG2y@t59adn1W=?#?f2JX?xvrfx42dmCNlw*B)vN#?O+{XL-Ycn2!J^O@*g;_OQ0o#TmW?dNulUAzj!v>gB*&J zYsFhlJs)icEccwaQzhG{v_uuP6TLgHLn_8W_$SF4X{IT-a8cq=i3)Kcmd3^_#B>7< z5cYu=)~7|9klAv(PM@UV9zEje$7XVeSpvvo;b&T*ne|tCZB1$Tc;L4JeV+$dVXkO{ z7|1Dp&r)KAh*0;#)UA50$^CYg4y{J=ph>?1qGaW&ZL2?S0e=c86D(TkwDCwV@JkKg z!s+&`K}w73`E7N-hmcLq{kS^0*Rsca(ex`l)IqYjKbv>a&*bnkoY$sM-)GB<=nzEA ztIb{hbHD@<$KwF&N-0^%^}o^^`#YScbmX3TkyR|t{kUbi_2P}KDS(=sg*8nR-K+vA z1b1WSv2X&j%dopC2-J5l-)0f4+*)0zUEV#V?xR;XpZU>WeQ=8(SQPBvc=Dr{MTNg7 zLcQ)GrU9zVwVsNE4Qd=9IJr9A^h06e2OmBfDCq3(guClk$}eFvs{+@WukGAP#o7HN zkJUby=_SZ<-LIn9W(BAd)!iy+qV zED%AF_nr0;t|`-w51#?ZO~@kLlM3>AjQ*@RExD6_Q+tWZNL=Vb?AI9ZS6A_Mu@F)G?9#d zjaC`ifzmltBJAJXcRF}=d2jZZuYV7D0+=$X405U0ty-J=cRT{JqN!ZjQf2(h^m9Hm zoh>a}#yw*_+TdM5%;vVZH$k9nnk(>L{|kT{0D_?b8)==HP;5z5s81W*-2s7?#0oKo zgfb9|r4{Jr2Pn|y$#J+M0+lC?y&ZCy&NmJHEO+pXSzY#ItnXf+-|30CRRXkhIxApC zK;4=TDtr|KDBv1c;S_5GycBE+>lxzCLyciC1jun8rbrb)xd*(>Tf8hO7ZHqg(#gm|RnRkCSA3-Dxvsd;K^*}QrouI;my7~ImGwlr;xK&E$`yUf5em# z;jR{GsrCHy{W%Z%F#Ov5 z`a;lN!$-tyQ(gAP_6@EG*Vbe(1i!|;7%C$cmGnsEx<)^jw5WClQb`6p1jtO~%H8Su zzT;Sd2ZZQ5aL_qGOQeLwrBWNFQv@5_g#m`#Ui>h&m40yL2_mGZlqS8n(%zWezpX9v zBN?}Fc)-OQ5A#(E{RLcDJ+bZ%eTlRTC}hL7SS?E`)2eQb2`97$PGo*Pr=Ggx0T@ta z@OX2~n>orpw84q&qut=8lr`qPii8I~_GVRGYVGw@3DSyS;6y&4J$)rhTg``ViH8+i zV2v}>7rea3E9!P{J3Xb6|1Y8Q0Pf*C^3R zc@NhTna#5%FSEmfRe+sW>lZuUe-o_ye&JnI`C;^jz%^9I%11s1yygU;94;of2qq@`fK`8E47&UA!s%;-8Mn#mnbe7>61F$>~Bn z7lbdJC-R}WV+E3=SFb?gzB`TV$J5gDn6=}~?H{WT)#Wa=q#8%>t|m?>)@q2VU&1l% z9NYRAQZ}WcMMQzyA#@BG;a7hq_~v7coP*2{5A;`}4DeJ;1t_?~(i)Hew)^+Psu9>1?2q z5i9wNxAj=n30L9oAPF1#ENM6R+47+ahIl4VgN}oBA7;W{eLJya|2<@bpE7VNpC}@r zL@(t)x8#a}VH#cn?UbsCNxm8PI5*Ge6jBVn^g%aV>zWdVJ-U$URRARxAOiEjqy;}Z zJmXYs(Fq90r!Y$ zR%3DtsZCl911?KN!na8cc7M^ZuZNl9XW-nnC`kwM1+kUWdoTzcG<8-6gEW81Q%;&FB zi@Bw#>ozMQGSqT;ruX1nrfA)5Ya?jE-%^r*Y*>j810g6m=I&&VWfZ}WCOtRSa(iuz z^S;z-#OILJ6r%)K?$iYz;4|&$(jvVV8g4H|y)Pj@WscP8ZcAeh!TAS7qc5YWAK(4;SLt7`|Cc`S{t@Z@;&U7Nug>uap0z#a1FYtgQy1NG z*sfmw@Em7@1*Ps3N8{4-Z;;7kx*c(_hqQgMBVhS(i@fcl{eO)KdamdeUi0Fp% zFxDYE4vieg6t9wGd(O#^fY#toarUnnwY%W*6U3pD7jobDKIdMPN}K*l+le0*D>_$KYo`?kxYpu(UgD~du-4dRzK)Ty=&q8@ zdjcp5{$nXKBx9pm4mD(YXcN&$2@u5Wh-7oq$hSRe8-6PAJH|iNuZqU3dTFvsXgF}T zQRz6fO_}Oxn?Zh_I1I&yQc8jlsD|0NjOwS47au~skLD*y03kD@=^t$F`fGDNz%*Gx z3x*CB5IYUGEY{U2BOjdh8pIFg(*(fACV3yXHT6Vh&3u2%kgNVfu5Dq`+AL&Ny*R#Q zQ+U{~ltFB#^lO0P!Da2$D0dR8`3|>N>q69#t%^g9_GMr4X4|c4_h!y9IR#R=YwK)cr8hKi20pnO=S&X&2K5mR8C~1t*aKP zHf%;)`lpTsH->U9h@Gr1qb&)0R-HKw2C#qycweV|5pE2iF|>a@u8y2JNK@_W5AzHjEX6RO@KI2l3&WiVw{vSt;WA9UCWo70rv{M7?J??h!n&XuPDARD}lm*<)Uv zEwBkTtDTsMWFwfP`q!L$wnpm}jW!%jCmk()=sFqE5OtjUrYhj>O_S}heiz8>QPvxu zqUCr!jP%{|)kF(9S_s{!!w`6fe{U%*4p?yzgm{s>yl^;<54YKFZmuYS8@yy1wmk2) zUl&GD9CB{|8RGjgorw?gP=-x-q=r=|LH)>c&WoXWjzxe6&OYACC+AA4X$w4Pp__Nz z0OgDb%Wq#;Lg;ErE+@*vv|;GL4let`)mZ7+l-%|q=m2fwII0OI5|K}_{Um}ss;D-S zDlxC_T$BW{JXrmn&oUUwR?y`NorAc*;Gk``vEk+SA8mv&?tP4`;4jV4&(o!gK> z$Rx$w=fKd(155)}Cy_nsLfY}y4>uJbQ(63%g0?7dB|I5Fv))5K1cPkWr>&E^C4t=n zZj8hc8XVNCYOq{l$VBy%+}WW_3U24&Bcr*Fth0d{o6#O!iQ5^IV8sd?41^44r8b1) z1TI4EmG9{&zn%5+&vl1|Wct9wVeA6%55#{u$mxFsG!spezd{L;IwK-D0S3sud^l!v z%*ns-B=h~9piM7}O;$=;d%#Q3h`e97g~d*CI6=|2%jf)6s74WoS>>xzuvJ5=!CiO% z;Oi>=T9(2!+a7hSxOf}tb+jw4-{}kI^j*_YPh0*1sH;{U$$s_fr(l$j`*B>R)0#!L z1tzr6sREUcb&%1C7AJHat7?uANZYH@PJm%7_78% zjT$R{z3zG>3Is2f+HZ4?a@+^+tDf{3E4+GOpEYu1GuQALOhUTM=7jIG1PeAv&VQsg zvEdxQ0rDEOz+SL+G``q~a62WZqdO0|Q!N)3T}9rameOPkC%kX?USQR5147W&A9}S+ zGkKk`v3uTj(+GF{cj7e?;NdgSB}BK2+fFi2iwg>dIw1t>SFfOAci5en9!{va^3t?M z1l6!l1Y8pA`N?@8WYx5uNGl-eUl~5Hi^!b=04n-bYc#Fk-k$NvSQ;0*;Ptqt_SCQC z=esjQ$kLtr$u?P19SpQ4iBa*vx3U zC*nL}ZL#ekry+S3LOj3^7fg9|Y_}O(*Gx}#hKfwl`@mQv3xo&pPOks3>abfp62=7uZ8 z8sWcIwT(uu-3DWUGgKbZr$hA^AoO%%E2j?PgHjI>}Q7XCsXc@4$DKO&EUmR(0B8KT^W7JpCE)vC(#r^lqK@PfxK?KSCtshC*syi zi6Is^|IWqWjw1+)j^d_Qf{Ta6KQ>Z%)9g$;QzoFT>5rm@8HQE;-ng^dfPsoh0-m4Fa4DfKAixH3-(8HO4(SJT(1~qBgrZ~ZCtCZQm8bK?s_t@H~ z-lf&Nx`vS2P&6JQV3Z7oNLbS?|FjyIyFf4h%wo1?mzK4__!BDMcMovoD?IucdVDhu zMnRxL=4$F>-|h)Aua3q^&%>e?q$byQmD)P7OEt0%w#!{DuEhe8&&*C88)mN-8dn)O zN5#o5Yk8*P78rK0&z=<1MZcID26F#4+O0;o-~1*#Fd(I8Y75b}<0W?ntohO0VBMX3 zF1#*bDmk9p^YIrctALYFfL*kew-9L6fAa{J?KYQP!VcZ3(l)FLGTWM&KW!_$tjmIB zS7hX9qIHp>K0FaN{y_>xy}ibtu(AcpL^jwCho9y~;`&?40z8M!s~uZgbSzwEPjUmb zdRVV&Vn7e?Pi_uPOD0DUn9C}APk%(%EiM(%83t^inB*h?u%l&^jJ|&ADFFam?yc@3 zq#BQe#XkdcCcj`n%m^@d+M>MGX&vaQn3?k5=YS8Coi)UG^zUf|+HDVmyQ<@0i!L(+iF+|B%2YZQBE=HYJ3=UZMabA6fF7Bmp{ zAJfJ{ZuXthck>sxV^8#p;0P{F=lMG>mDVkhDO_-3dQ+X_RjBETiX8siQGZ;EWr?rHHa$IBjn+AFh}Brwt@g;zgh{GlcW5+#~n7QH`SCqe9r5EA#MQdcvV)0A=!hpDQ8s`8-sL9JZfgA8A~k>>I$FO8(MR zS6Dsw)_dO%&r0$?vT*SxtpYtRc-3v}n_O-h#)xoEJ>~pQkZ$qXm0~MpLMpwVud|C& zSWsE@EebZ(%75{pG0>_?&w~p>Za8|Aq7;YR4zRbN$#gHXUrjbM@c6C?mWJer>U|zch-%~q$wF<}V!@PURsq}QxovU@ zPaI9K=vAXC{z^cyGB|2o5g28B{1qHFI{v{e=(%pTC=Nh>eYv{>Y-!m@HL(1GEtozZ zn`^1Jp*!0uX2>%+ia!$DF>YTB>>;!7`HI|?^|L8`10#BpzsMVw5ARn6mINGD8gh?J z#hin>REvELTQ<4dj{OZVMhf?U>!Mk%zLfE$&LXqhfaJmc%K;y!DG?o@f0UlLuU?E5 zEPr|*Xb%n|{@-6=2rOc)xba4P@N4g#{*I(#>u%0R0bolzh_!? zcvi)2Z2`CvRR8j&%Qw{$1P85|hS6@mUYnK|oo zRpc&sw>gcaZ{G*7o}jpzOf1#d-b8kLg|`gx#BLtw3x0H9<3W}2P3L;?s=jQ!C` zVXikm;4Eu(U$x8G3i2A11cOI;E#?qL`TiZK8<&Qf5-SAVzrPav=mqZv@@-Nh&8}ci zg>*|F*Hq{P;#%r~2X6Yv$a&EcNM1x}g&{xez#_(|Ek>&Iq6H``ey;^a?@E6v2Ry8H zZ#2cQG_5KhyG08T3dc&{yZ;<~LvW770o`R?M6_&9FFhUTgi61NDAOU+^K0pfX@dVe zt6RduL1Xr)eE2CX)b%+boIp{OAuCwO!a|^PU}2dL{&g>a4(jRyKT2lr*un;d*$w4L zNBrbZcf|t15qdY_?Tlm6d&=Q4p<=d3E?FCq%e;(z_K&cBr&7FXEJpsGH%xv9qDeuQ zPEtmdSB{))Jrc*btQr0A^rQP*t0DiuyZbSrmIbHB7oayEG!ub}8Z*)}NY(g3)e+PIy!gNU@W|F~1#3@E}K4SbjYH())s6Jdn6=E}{3_ftTqt?kpHr zHoup`ibLXL?5yhHI9-r}V;A;|Mg*9#JcVCQ^G$zxv4r+JSV}5M^L~#+)#VKFpKf0A zSP#AJinB2!SyP0b2H>ERI;PLO6e1!TpCFW2aQ}Yuk?2-Iq&c^`;_SHfUtKuK+2oeE zA4BE6(~>_&N)K?$0fpwFT{qupE6zqNE}PA+zN`Q2I(NDCZmA>GgRHt$0A^ii)7?*V z=>snN*U+$>n)q4Eevh$LMf8{YIC;F0y zs^>D1({X-OBzm?sQ-bp{_Iv#f(2?WC?_G4!SY(F6oy?zQ0hKVlc3TH%I$niHNAOfV z1fs_8e<|7-(0xJ+VY~Zi4=wH+X-S@K%CIAYGuQD^*s9_CLM^VS%RiEtm|z|OPo~@g z8yXNV>|+%LaD~_`-|i-ixkQ^hU@4G;Z}hWqtrbq+aeEg43Z*tVH*e1LIyz<1K=V9p z81w3|%ePZtFK>F5ukF2EnWHE6W0m#p%)ts-D@4OmgS9m;kY}h*T7!8`l%jR?CIDFl&&nWLoI$~r$!4nztydl z2AjLlVUCzmW>u9td$5F^np*42G_t$&)-()bK-d>LR29;?iuB@ec6|U`SnuSmRakqp z2^1LIV$*C?%h$AH{|F9AB)na#%q>-$ODLVcOch1(#&)**wOnK@(r?kyWie8$YQy=bS4fLIoXI08~Z2}PS)Mf zEi&Z__*#&eTOy#T6N~y!Ayi##VQYTvCW;*u9dJ0?yK3w*-PdM5v+!`y25Q4b}awpsx9v7tD>GF5J3elFJ=`*x4Rb@h?Xnm-_LpatKjf zh)}6_s^KdRc;=mJ?0{Z6e?z9v)bq)H#OoY4a_fBRUeT@GnLq;dC|y&=!#2IA#5Ys8 z#NU5{lnp1}>82Bqu!t_!Oqq>|00MEi_m#Q1UcTW=hyr*EI-Qb*>-6ifBEg%>XzBlDuKX+1Myn ztc-R2MF2ETHB{Cr6J`ynxh@M;P>sJ{T?yDiyJe@-S#os=XTG1aI8mQ><=yKOBX0~` zu{+<;@Nc+?vIootI>EF zt;v)V9b_Pj2-saX4+Q@kaHh0t5Z~mVOJghNB`BSMBY;Ib{7)1@ajQbqCu>AoI9+Xt zexQvc>AMx!%HV{3jFKL5`=O@di3c`8lllIS_mU>kqqjLMrVL#wx2-fF_8DW^@VQd-5y%PMA=toF7Zq#6?dkjzAj`YSyGHw5gL zLf_}RC$dHiGjffMM+k6e0Bz}UNp8@u{GX0Ck+qhOfr;=N(Emg8tHd-ne>zvX=Ze!% zS8E;pe&59%-yr_UPEWdab|d~OmjK5F2wB=dBK)*3S35 zj+a$1*#a$NiVu3OUFt5nR=rc^r8bw~7Skx98S)$GeclcOL)(zt`oXAkcLi7}UHLm! zagie?Vs3u(@9Acv1^j=zsfdaJ&OQW_hqN9-osAFh>cUl}+_c~QzdOqW@PU(%X3yXtI`-5o!Sdz!M%00km7h2~;!vtf*o{FJO%XQ0==; zGPJZ9a>`nmQsdq$@6B;9*oEX?djR&$5Fl^?KdF`P6H1=&(i-2%7A|X*BeK`79e7eL z@W(wRU(|GgB?dw4Rh0aKnWeSk7eG%K%h2JE;_w%xm!^2bhGLcSsn+mlEnf$-b4Ly- zc~*YB{AOHL!;XVXTiTI}3JOJS_x=2axx@*TX01AS5?RRl-A{;Hu*pmy1)56lC8)zf z$vtx(7+j#);8|UV(f_eJ2510-JluSsas{)MgpcU6W{82aCB$q3y-Q6{H&zWM^2sP# zZ$iB6-X${$TXNv|W|&^{{j|ecFk->{TmBe!kBC=Ruz`jAoS&LH>b>FtSR0WaIpPo* z(zs5FPU@!SyvNzyXJL&{ia^s-EA3D0Hq7W7H-wePC2%@dB+lp}o!2V7DJ@*{$=aXb z{lUxS@RtbuCS+4*h3D3MKO=;GupB82tD&-IQM-{{%-BdHuF%2TDX@4+kJniq0SIX6 zb={(^LwYDaE{|%ew%tT)Su`_Jaa84DF<~RgpPJq-aP3mFL=OjnE7azn$!PB6Q-g$K z3;KxumS&b8l5a6UT|FniPtDIoFRTc#QJcw{QzbQZ{>|G6E(P-Od1~%+jTE^ZdjU*; z^zh^V#gTGH`;*Kadfe1+U+Ng#2CQvPe1HN6=Lf_00I!22t}ly02HKnB+lN0#S^_PZ zW9{t}^V+BMuo3#~%eGlJj`x+8-;{9V%`(v~CuC4<*Wi{|HKSL?LF=s@4pl4h@eOv) zK)LU3+7=2SIodQE4(n>TJ{`+nvgI!JdRTnZ_fEj=4#9K zCoVz=sq32D@XMj|dq8x^bCwDxL&I2nk0aB%WqCix3JkL=AqbjR?8^AhG zfqD{_FZDV$Z6xdvwK&nJJpKVR{44b6!SCAE08IiZJwQ`tfIIC8g7~t{SI^et^B+GY6! z!Wf&IGnbe_4gdq&K5iGSR(iL{+~`CZ>E&M>)ER}B^EF+s#qv!TyQ}{g-(21Ck{;&O zsgwsgybMt9Z@#s)dZ<+X9_rDt-bb#ImgW*e18KegXWIuXUBQ04@()H*XSSJ_%b;Mi z1FoivO$_n<^8PQFaFDvFaA9V&L;eLdJyX0=OYe$`Fuy~)l zHgC1@03abZ`pCZU4mBVbR1%DPYsH7=+9!^%kNGZJbT8J@8=Qg`$c@bxv!ql3^fFcJ z=sWn*dM$z4G6+Ywei(&cOdy>52L}pf;a39i4vvwozn^&8X8PAG|JR`e_b<1FPK)u4 z>FZGiBly4c%Mc^o3D`50_T}Cw@xighVg9edj>+-u--8J(0z@HZtOSAfUxmeH*qRsZ zRv`zXF;8mNty2`Xmb0k-KiKFwH+P6t8nW1J%Jliaj))pe3Rm66!iHRO-7iv!J;|Fq zpm;FLZzCSSuk-ktSP}r}Amd+^q}^uH)NP}am?G;VKWATn^`PGWCNj-Z@w@rC2Ozh+ z*QnnNml`jc>##|Ou4?K4xvZ~%f2#;ebf(Be-(h=TOYT)x8|HZwe{wh~N=u_>$6l-!pwr^pF+ut6 zzkq}FLt0uc_*;~lCc9CAyjSb%vu7d1=wNg6_F6?FY68FsUiuI2k0{iIjT|hSwqjgVJiD;~;gl3P59xa5((UmCM+I4DOU7KKG z#jnqNvN_y=eO&z*C{^sElj)CYQmXe-trzfdWq^R6bZqt;H+2M8ZK=puGVt}5eyI?B ze7rhkB`uOL%T?s`AoC^4$gzHnB0v(GZRGgy^{hQmARBDTG8;l43u~3!5tmQZ>+=02UZBUq7G)iB|aP{M$~&ya2<2a^Pa zylQ1Mtk-52qBU_B*@A9he%vP%HOyF>6GZV+GPLF)g3TIEh_}_L80qm>5OhafWzO3? zs9?0nnlcgJu){x-^Db{#HR?Q^t@PPab@3NRV;&H#}I5fGO|_X)wUwN z|0j-#?a^P|z)CYGU1X0tH5cWrB|dGv6yucHc?TS!Og`IrFN8nsMZcrSps;5>X)yk;mAovta;O%w-2-H-xR#cX2$ad9t?HD&je z5CFneS0bjSTF#%^)AGboixVfI8N1hM}rux(FV9?M6@V9*CdhK&?%TV23A|T)Fcg^H|@aPL*sGflE zVKMk(wu+l#Mg}K?*rjT+vq{aii80xW!098Z6jQapjjbRarg6RVr2m!(5nuDAFMJ?~ zCHTxEjWzM{ksf^z2*eeYWdKi^p3|H8=|r0dKqky9$k+Xek?>&rN${nyM)df<1Q>hp zs#su$2WBaH9QHN>#QXg`K`aK2#1Kum^y!z{;(^)7`~VQ8^%v&O_(>>A#^s=nBxNu; zuWV&KZSci!gt%5f#Ey?GFQ>zHg$Of*sNT3E5N0HDZ3s4=z?55NEt#@(UoeCTedU`$ znT~vCT|1rJvN_8jchEe%qF2%I$Z6ah%zwe5Zg=5VPB`S}HYnM2Pt!Co0O%vV^ij#n zf4Y@?Y1rS<5~y)#LovIk`rV_EzmlofaH6J`5ACVSX@lV_|J}qJTqQIN?tG^09a1du zeqKmEFjW+hfW4+*g3oK;x3gHvC;%M}_O!7BIx@_&SlB{B`#Zc4c*`EoV+DE-GCY@3r?Y|Nkt>**>F^%0+kd}^Ho;N`dy`LS_Hf+{0(a48L?B#nY z9k0^;JJbAs`yR}+Gf>LFqD(JxwcToVRoh6{0@bVK3>#fmDh>)LY&cvy!ToBQ2A8Lp z`heg#3zh414&8UFcEq)~<}cG_=HuiTA@}sJ0)BSqWdrrL*#mPxq#H1NUg|81wYBq2 z>B40u2On&Gt~LU(gw<+8FKt0+UDCutByGuI$LL-j9u?yT5DOr(=#+K16{pC2aFmky z<$$?pxv?uQTM`1vZWw=IAjFc-UW)kzlI&|%&})lkZRF7nB9_704~TQLSvm~7w^We? zbM7v7<4M3)_l^;N3OEF?Rd1N~4GcCd80-|Uy8salG1;wL2wHl-Fn$OlAaKKv3@cmX zSw6)h1Gn<`SFRVrpOqL}$@Ax65_nU?0h*8#vkmw;9=_R2}`W3%WNPu+M$cvsYO$=10cIyh|ReFt`%Vo9*io zMi{g$yPmlpSw!y29exOT6p{+a5Ac86pJ?iQ-yeSpP`*r{F|46UL1^y+Kjo?rD@CGu5u6(Adq14cN6F$gq7K&Y-Umq@xX@_E720b^95fD%oy(R zMuEhy%jRU(d?Gp2^M9N)XdO0}497rH&XuU>!^WE{|xgj>N6oRiUwUfGu2V45D0-UmZ4p2Xy1HG%j||A+ zm1vqaqYuwo9J5Vv6>uK-7Lr?)G85SaK)gSA(eUN)(sII9OjQspTc2p7ynjTKOa(>L z;28J7Ir4}!W@oq!rGn>3U9+GulaTOTDX=(tTjcUt?^yb*XSbaNtY?)r_s=hz&xHg@ zYzD_w()@a@XBmhQFkGlW6NXZyr`OF>LN zw0Hcimg%-c$${GFaaBI+%3CkP${X0rc{d_LyUz>K%v`_z*AJl=(-&Tg3#q8h|9!=( z$N#^X9oM&RynFV?S*y2A@)yet9GcAj{A^!|**IHCI5R#rKM2ObVWMd8Kr*-yhpK}&7ZFt6a1p=yI)(jqj>(Gb@fa?dZ zv6*_fuuG9xFblO+tr<#AZql&x=sG&qFT=G@y?G(ZBo+wY@>FTHz00_7ELi>dI(2A| zMnT<_Jzyxw+uvk+}){yj%3Q&=WJ624~6J=Wm8QDL>PV&GBQ1MMJPI*8JcVY7+? zV7bp6`P^)KL69t}VKWkAGmwH=-*8g!0Z*18LBZZWW%8EA0ZUxVo*n*T-#`*zobvJx z@v$rpEZ}ADM+*3(1lRqAS8|+No-$X@iQ$>ZwPFgob9tG7PvouJKi*F9Ra2=uu(ojR zw$sW5PIinnF_x86y6;wZK61+68xP(ERZq#M5BPBoGEvqIvmly?Z{1dnXgzu#Vm`Ib z-FLjb+s><%2jFgC*>xyqx1&=z2kiJGEm)7YyXa~`xWT;wyC`cN1aYnAnQiy$_jkY~ zBz14mq#F*QIyjBVV+l&4GAv|ur|<@u@r>gHj=tI;y=VLGOK;!~YJMza{+3~>kz9E# zhu>RO1&mULwlc>#XiSe0pVB>G<;U##ELujB90Gh7R(T7HkrvhrUD8%_u?sRsD%z?^6bjdA(8k_@=6RcON{(@`3U{8IOK_p(s}ExoDjnZr3wHknrI4 zTvtc~6nwTLKgtzPLSZToFN2HdH0QeSpv&w%4YO#1CEArWwzsp@XrPo5Cll%uUA_Ms zXt8mN`jU$33*v~kgIE?m_s zPSC;_J=lFH8V9d=IN5|LYxn;^;xfIn*z+w3i{g^lUa(J-&NY|d%i#(w^y1e# z`3>sz9`~wWevA1g>!a4PIm~C;V7KET#h@4Rn0W8>N+{@pc5`9W=i-EMjZq(y^XKX1 zv^g4{@^3*aDsoGSUe!oIA<~NL|C@{Y55(axwfB7?g(SPORw}C&lJ6{APQX{sxs5q-syP^YOZPPYdkL5%y_dnI?khUUL2w``iFzPBuEA3wB{P&(;z$1@>=iiOca+LDGx|};eEUn< zn~u18Ne^Mj#zRTewBAa|NaE1$643~uz7lv4ol3ywE(@}PM;FG(?J^Abi!xCYR@N|z zHmJc9j&$BzM6MU9w``}p6s(-d5I^8{idC>6tssvB-Pd@(Az>Z$wI9Ap3q_K_>DO z!UF->{N`3`TAia-8)5w?{8WYSw?5iFzqQD|t%a3nLhMQTg27cwlX5R5#L@Ozi%pRk z1>>bC7^DG&+TSLOMVbiW(68WbdLdS*{C!^N0vX4eNumfSh&qJ8{mF_6Xf!jq`$-m+ zddy%xcOfv~g1lD}zm6!*169L}Rfv{B2Be)0F4ms%4BEyYVA>VwbEt}gw2}keRzC-+ z@-_3s$+{^8SHwRA5`EGe52!*n8n|+x&6TYN0Mn&0yvz@&K62>@)!24oJf*{ zSIYV|Td%umzT*{wyOXgl3*E=pGK_M+O4Fpv*mL^!WY4;#Wbv=1j^nFcdzz-#2Zp|1 z*@42*sDYQah7W2SEl@4-9fVDZjAk>d3GPWirYIOx>&LX1)tFS|_01E=P+m<36P zv35)Qm_mbeu^|^($VNtiv7Y45f3RBbVg+L$<#AJW7juIM0<*niSo0qujqyP23mY*i zU|FyvAP0lhLszz=;fTEsRe%x_FtE9g7ddEUF#mnMYj#6~{U_KZ40WSy| zs8s4=jPg|`SqT(hRXXTSX8BrZyw}&X2ViY`P}OkU!7atv^3V9l`r`$;2bhI9F#G9K zuRV=1zNRua^9?a|`%5BHx~5fIW***}_47Xm4=Ss#z41vqeAkYOJef4%hfcB_x%l-E z%o;1jSR0*^3VJ)JW$ei}GPrj8hqS=ivmyDPKZ*_8sX-6(wzqNdq;GOz_O8+=Bz*P_ zlUA$Uh?-3Z+UDXmb+ug*hn@(KhU_vxr$rQ+$@(BnHMml*_OXvu?ng}+RIX8!2oqn~ z3S#f6BUEJ~ORsydL-A$G%tcie)i?RV4zFRCByK>$#-gt4hi#@&SybK<)>qdE9dO+H z>OH@SFQR0N!G)4KlK@u&`x4Wam!|9fxu|ZK}||X!Po4aWLEGv;W0MoN_K#H7S&R_F6wmT zjM!fanQ2!iZ^7ktKT1xO7-@}|OZ04+n>p{jSXysek`RD|@2}O1DfXZu^DICIp*!Xq zT1gh0(T205ujJ4`T}dvzmf=VOBU*th<_Y^GfCV;ud0hXyq>Q!Io@{DkWdV*G51rDl?AvRAv_eb(71npsH#-j<05Dzy(Q)&LhYcR&Kw`x z7za1RmyaA6S zfadD5GH$OHk&-WrVvS%{KjrieS z1HpryOcF6Shd#WsKeE}LI(&7~E77taQ$1}1Kp!(O3|tt+tPT40gWUUb+x3KoR{Pgy zgMAmsyLd%d{KLyTy?Yx7S7$uFbrk4*V4%HeS}b~u%I0nAtsNd7))H2Tazb~->&hgh zOBlhO;YQEE0bJsDrxTti&ufVa)B@*fu)G-*Fr&hbhAxaGMW6tr?+mW$;&O6NJEE-~ z-S+2UBeO-^kqX>x5{p6-3zo6s+~2~Gho%!5GU{!HK57HEu8Z(2P_n{_A`e{ zi|Y1Gzp~pRw!Tn&Y^st|6ujC_NZ--T$#80GjW^o4pO*1oSm zUk5ko&Z41i9z8bFfEH5IUgNIH0Vonsf!`>wHL}yeZ1?t>==@qu)^A?FixwiM$h+Z+ zbZ0{v4LM8(KZron4`O!h!}}?>w5XFV*<8o%XRW5l2MeX2pq`ps4JNTo6yf%@)lRss zH>s*#xhD<$jlh~yT1#3-?E(eCpvFhD?i)uY*1m6XMeDtcQ*NAU2ep41-fCaErJL%B?X*JeyKj4cobkkh76(o0)ZH$jLxTs^Br1j05i&WdcBtdkJ6# zCkX_7V~R{{eE)wd_%Q#g7F#tvR2Q>}3(-`9yDZt;HjtUWoUdr9h} zn8(l1hZST)S@f0|IH@Nxn_bvf05zTCTl;oNW9~!>aO5YeD~SqTRXF|v7TbbJTcxz@ zt~@uZjWvh$kE-ub7A=X-9NW;Pdw*|&lC5YX;MTET`?WuJgUI=5j;$KSaW}sCh|MG^GHr1A%<& zl$oRMRBJZo7uAc?+A_FOl!raG!Ew&-stW8RTP%LN5G`fmf$}+;BKwPG-N}i3mT(}| z3A=-BAH}2W$PkU{H{B(WHQ`OFBt)iY6k|Fg=$lC6D;HWAI1E5DibT{gV#+AzxU!Uk zSiT=Vi3F=mtq%%JKIXa)E2Get4^ftU9DHV2+mz6ewhl$hZd;=JjL|n`j-u()*HTbb zpx;*ajfGOvuGAk4R$HR7tjHp(?P*7)oU%y~2PfOS?ti?#Jx`H?Mz{Z9?(z`qZ%GTx zIgX-9`5QRRs@%i9+|YWu8IF#(>W=!<*@il)1t1~~mp<|~L?UWa-78^Ull1{#??Rek zIS3aO8IS~Wa$K@+xDK`;)b2%D3@#XMRd+^m<2-OtspJjfR~_|LIF+FEFLi#v@k?LcfJdWSa{vJ-79m)X|{LLXj31-+i97`S*B- zCe4#`H->IpEqd(QG)d!V$cfWhl2cj@Q6@H z-}E%yjBP5_D!wBHM8tNfSzJcmp#{RE;Hmsj>^LnL5yb7<##CcF&oJ}$irD5eWSLOS z&T#`Gi*y!CS(JIGZgDCi(Vjf<#3|#E3;((ec7%x)S>c(uwwSDXR22xBg6Gc{`rMWB z7L~H4-oS%t`W$<{rliTe^4m`*j0)^7!&n^I@!LiVDzr4^MSN~z-ywAjJ@X6!T!cS6 z*^$i;|7N6QY6E`U?&_BczNC zcS&)Qh-fxxu!lmXS(WyZ953$<1zV7p9R|^V4eubGkSZEvo$h3ScLe96N<3(D=a{ zoWbEa`=4%>>}L03W|ljF%orLpmBKx2RPJgPB#@;%^%I?syf?<`x4O0SNg&m}ktpP; zX5_+x?)L5`JPp927_V}lOL|Sw!!$B2yvz<{UJ+bYb)mCn-SRClnYlBp+*nXcKPyQ@ zgf-B)JJut|iZ!E15vH7N9EKm%rQ@7d+ZEi5t!~r8df3m1gw2l>ZtIae&6Fp<<%}vd z=ok_B;WGaSG98LWr-(HBzjnw4J5+4Rv=wPT0VbO{xzKfcj5XVTad@lvCdkqQ$O-TW ztF7l;rftmdfNHd@sq;ZRPH-9J9{yuHckUTcg0sKc%KBVb`Su+Sq?wi%5X+JG@L?q1 zC8DJ<@>rW^r7Lt5x9iKwfGKN~p0D;%I#^K~|3ocB&FC601wPsP;~d+4eR&v%<4I2| zkj5ExZOB)wcG}LzVI#*;r@Vf%`sYL325u~1&hem^2CC0kXI}51&3k&fr0iYQ$bn3*MwpVY}E=LQnX?%W6F=4XC0DL{8nPv6a2rq1E!0 z1K^84XZ2GQE|+c_B{?4K0gE;J6%lh7#eMi(U@cO<#chIuDB<;9J6a*8XJjYER@P!_ zB`01p$n&t;{`ofYUm_|Kr-tw;D=FC5+x|G&2(4TTZEGhZ2Pe%j7NW{k=5QHE zPryjG6&_VEq1uu$zg%es9vt$e8CKl6Z?Hklc~?r$5<%Iekp3S+gMc}a^BvrxeSEUwqq zsEB8p_6otHtjCaCT9zd#EoV>aJA1`v$ z^je4BaOiD-7q~k2!sPtVro~*-+uek)mOYBoCC|8JzkbB-jnyu4jHtE#`(iG4TJusS z=&2&@n}-ghZ1UfyOvQxpofc8-)LaCROhnqk<=>6Nt_5(e^lM!B7;8GGKnA$wP#QU; z9^_;-3l7WPgbUz0fl-e7H3uUKQ7vxb-rLA`_8>BT$*9I1?7`~r-lzZ^&_9oYZ35FX z`@#Xl9mt7p=?;gcK&$oX;Ri}50Y_HDw!PyJmaccyzuUe+hZ(?;pTzfUXF;Xi)8ZTs zhkv|Mmt4++*7pst(lLJo(5UQg`WVN9CLGL3rCAg>j%YD(~ zvq+(L=O#X}B7*7!cn|wTy7kdaR(&#qFSgI}g;bRBlJJKLrG;X2cu&!>QnM12p(OAqS7-X57Oj-l z4EZzQd0{0^<{8abC1V0^ElaIMQ|Dbcv5l=ZXof@4*~=U$Z2q{~0FI}3cZZIAIq1Dv z^O4DxVMinN@_P#X46GC(Mgo&?3`G&Ix|ybkZj+aA~07JBY<^OP+b zJN)1QoDLo@m->Lti<5WcL9s=DPu7ulI7^C6vH+TGv0NLt{?n81@mU0h>FjWdrfATM zG63$HfIqdO5sxM~LEck-`RwtETTS93O&1M|hgQ#sFo=_NSlCq9%BtOHVBDUN4Uk^F z*QLXIGHm+%){vk|^-4M1;j>Dg3uIlHzway*+pOX^Tp1jK#=G9stYovkS){&6Q=SKa z2w}DB_9M!!y2 zRDJOD(IS*|kIDVYA`~&@tTuGJ4N zI-{V)b3}%TEJD$Izdo3@=oVk&e##3X2~dFw5z+caFN$Hf$cXQtD^jqn=PS;3zIK6R zvEVhxR+uazsmtvo)NM3pX_%AQ0&v(I^J#_A|-yHMiG#|tUJ1?`U@P7EQeG-x#eG5?tFDM zIGDm_L|JInkx08ah1(L7Y99&ZYv~>kY5cHdEyz(=G=pSopYR&~I;4f=H1Lyzf z|JgwjOwr|spdjiWl#L#C|M_&5G_S4j#I@O4RjJN_gg4d{|K}%<^K0Pi1}eFhLB5_b zaG4tPa?Sb+0p`26eMO}h%G90XMY}py-_DT(7JbwZ5CS|@W@DAT)w1bgjc?Q_8h|w! zLc7d=73&&B1Kp8u9p+)HG||!Va@J(dijqk4)x6L)BPRYi!J!l<({i1RdL*GZ^(CwD zfXxQDz7v&yS}7RNj>*u(zCGln+;ub$?$9jf15nVnufk%k(a-p3Ts&v`nMQFi<|F5q zZY7@~^YRiQyaasrX=8ayw_CuS0|sGL7Di3E?>0+n*R}zq-f?FVNWG-P4<;af(@!Ph zhp(SU;NOQSWl4k2FBdi}2B?x;H&c(obN1yqB>Vj(XTZ|L2PhgK0#<_%G{yI-44{*| zxfU5B>-Ie4i-p>1!G!LekBIBq?|K)Ua0&B}&jwm_kw_0}bo>eoPHi7*d1PZcq+ zhL7O`IHX`_wYw2Ro3S^`rxuQfW&cFcwt>~|v40BYI#sidQvklB*SP^3?7R(rX;gXL zmo8ADIEIh7(x!nmyw_tO3pIryL}~4V)0gW|g~I1Bse1mnIzjm%0ncq)tj-yc>jLXb zVm1@$L(6Eo!w<@~lPc-sAcV+>am043Ra_;29-yKk)Z(15A`*L|UqKI$oj~jQLs6 z@7{wmHu{@kD9_!($fRAUvulyGAN07BiC=Pn!>5CV*E=I%02!Ll@Y}P*x&1ka#O8rS zs>)rNFaJ)Hi)%t2l^!@M^VNJ>#tnDKqZ&(&dtZL;;0N%iet#d)ggmObrw=&6cWlqs z=hu)LN}0nEd=h2$uTbjz#ID*^ty7E*!*O86q@1_qUrIqi!i2Ke{_D$}G7ZZ+H7am+ z?!zjK^VQ`gCt7a0X1#Icwzc(B2^P2-2LPBAC2llu`r}J#3AQ}HpdTk%;bwc+Lq~7ReaLuHT0tAQGOJ0n%3&HHNQGajjg#@qSTi+O%rHf7lchglz`i13fr9^a2b7Uha7X z=5I@WY_JouI=@eh2qX=nQ&#d!v3iG-l!D9rfX8~0L7?BGvN!Qvl9nXw>o6Z$c^FYu zRs>~p#kN|^fxlckKd4|{-}f#3jkJU48TP( z1ka(NlL;WfEnM2ENl{j}oM+69Z)stNa;0`O?DNq(3bUkvttgPq%}^RD19=DjjH=aZ zN6ZRp334<#H8J7w4w|0iMjM7Gqk4@7q8IMmr8*rLjxUn2Nmuy_36aZudNf{`U}Tqc zUC{5lR{O1rR`R-=L8wne_GKOa3czzgY)GRC8;#Gf#8;slS1YVC%W+sVoBR0$;_bZBh~Bpr1hJ_{kj4F>HdGPJIw;~yo``lA_JD< zDjkQ>-yqSffoU>NA-%(U!|5np=YiC==r=hU_6d9f1Z)Nb@C;c^gd>z&o4wi8`UtX| zLlaRyN9Xe1YssI0>FIyOm1uz81%J!l&T%VEdj$^Whv-j4Waps2moCWt3`|)<(f&26 zbpLyV`y8%keh?{M3b|NEPePW4@LHS)ut%@`Xzj&menCJFOoisH*{o%B&ztN}Q&^Us9K@SnvGGx*fM{H6FC z%ONP>n=ZzsrbOQ0>Y+DO3k2y7SC!j(0-PE+4CKp#v3}55lWvceKb~kz2sa5ZE@`g^&>N>A>aSW6IgSY`7llbdU zs4BnQlbwGx(fL4OW)`@q0eg&BZ=W#VlITjh^m0$SSaRoj%}VX)nRw0owa!gYjPbws z+j|N%9EM-alHPT2N0rWLM10Jmq$y_)*joR)aou541&SdUHE=QRqwsHT$;|b~`t8;S z1_v+R+5Uz*r>4nw^V~b)O({on=gos}U^La2mmzP2 z!NI?itYJinZ21#B;4qR8a=4*rw_MR?9M0VWYT3A!4+sPraX;qW_~5gD>EIh5p1`xy z>=LXatVZ(lbqW%Z;q%wQl=xm<-Lxz-?W#)G%RgPSvMIP6^mZSF_2V;$IZoaZqLv8Q zs!IXcg`S|F9&VueS0oLswyolin_^k1mq05Jd=9Q5Hi=cxFs1W>TyN2{l`oy(%)H2F z0rhJR>0_pP<%A!HP0@UR)cU5P@(L3dSBn4f42I=NoV(SgQ9qK;CWVH zQbokb#NAvvUQ^IW#U{OGLB=y`RS0Qu^6Y(rk8Kh*yre~9a|&hYad&4RS?yr(r!+oR z4%kmB#+I?eP*PDkK&V769qh?34$<^1PC=LY*Jyt*3&a!aKB%%a_Jnuur zF;w7ibSt&xtWJ8>4=Zcu@uhA}3m}5yNv*P%biA+N@U9+7+JcVU9NsJ%mD&3oe^AQ| z2j=p(JL`$;bAd5zH6?3kVdU^9L82jl4m?cD1&q%4c=j=FIS%YsTeGePtsFxPLhJVT zWpKe_pllEYoeb=27g!&*Th?R5S5{T%20tK=8_-THkz!P!(U+L`Y?H>>UU>g#Yn z%x&(vTsw3saR2&Vem_#i_OKK5%H0HOw66?yWqEAS|@u4T!T_i3pNg*2>Vacu&Hw2CZeT4DaB zTiUaivm{Y_r$HnoXUA2~-Jur>mE?aN-d-Iq?I{zIqf@4i)Tk4=Gz+e5<>V;6-|SSw zIu?ng4TO!9Fs25>WI!34_8Zf)t4hREUD(6JMd>T*Ekkug_E`+H!)~~Gi~`nJ+#g4g zJ3f0u9?0r}DEV>&1duaS5DWgws~uKx;5al@jrl4LqfA%v82jPxz4ogShCy}bh^GIk z*CH~$fC<;~(%r5h+dh93()z>O>{jCgA>50Y&uPU+6 zhX_Gy&*wC}p`f?`+&tL)6IHb2&oVMJ?bzUiR|kvuKLy z1zt^;)izYz0mw7SnwsaYmmB;}cbf;scYmYKAPv5gG;3`Fq6MvRC@lky@PVfLYO!=1 zwbjTuUb`>^Liym4ee=}KVs7A#gqo*2nm7ATi|%#3l7>{LahL`(`~%aMdoH{z?Z&=V*>2?`4i z(R_RR1V!206ECh_m`s+V^~!&B%AgG&Tn&q29~*9CD0krrW={LuNM!HJz#$aECx&?m zZxMa)cstSj$;jd>zg2>6=j#b(XRmpk_E}e|`0YTL)-QA%d^n#gARa_s20&=5Za@5H zU0BU2FPE*2NmixdaK5KdPrp*N%Cr{&RFi*Q5stZY47Czg*9@;7?&aH-TH4I1_r1(0 z^fZT@gj)fJsI+VR%y><3{Sr>RH%s7>KTf6oUd?V&%yCTCt7Nv0;b31y&}MYc9`jkN z@otwFOq`}U#OK>KAnRMA zw7!Rr;I^_fI&7@@9H@wRPKhu7JT~ed5y{GNAnUhj1ajUGi+v03fj1g1ytX_a(4exn zV}jeNO1lTRuW~sm=1a5C7qC_Zc*{>D*3r#!z5g{(2>t}ZZ@kGC$`&e!;ro5D*!am^ z5924a)L5DiS47l)cwoC&3v-c^(^HuA^uQbh}Fi~>y2t>m{#fJ6N~bL2%@>FRk14|3+sr!=i> zXIlFgJof5W7l3;i3&xuM;CLBNcavu4>C=rC!tVAf&cDGqtoDyv;-*&pw^M%X8^?jK z7D^L9z!2gIMR?E8HT#2uxVRPJEaHJxMjwbQA_{5ihHWF|WwtRLQ%c}`Ewt_?l5saD zSUHkUQVn{iJL8RDDahW>sptzsQ3UX`dLWUC%wM7rEhHj-tYe-~_4GZ5kBBto?6Azx zGLCuzN|jT#iniJ+(4q7qfBcw__uywIJ>OgKoy%h__u&Yruntw^I9Gd83ovVKaT0y5 z{AhNR?IE;Z0rBa__`SSZX`y9keDKWR6cx7*pToW?vLNS-foDJ$UE#LvnL#Wsd(0(3 zKviG5*$i||SxCc@j#@$aZxR5218UKm1P2g&9t>|8cTeZEzgA-#3yO+_7o+J86aT_H zC=haWxe}6wP(BIfm++oG5D*&71Nb*grTP&8RRRrj?_W&#oGfaPD14@V*Ttp2LKSBC z;Yhau8W%a+&W$rtEBH-w`Qy&@x^#W_>j7>FTfkQO3A#Bo0J5P!)asEzPv!t=os6mlv61uI<*_5;c4+kg96VkWV`7>mX962U-_V;RR z&)}facwi!17|@5GPTU52G(&)}RBU3{T_knpm$)74?vBmjS!{1bdW5JofugE-O_(anb;oLu~UzJu=a3450^v3@kCG_k2K(%av z!weheI6i3!sM%4v1mv)mXP4stZX)b5F zaZBYt-`_~Lvlpnb4KuIM#f<~K;;9BZ(EU5>i~hAE5fyWx>7BeKfKflJFdVqv1rdl= zA^*WxCK1Que4K^J;pn~|9f*0Tu^^+3S8=QhG`;uT)bwqj^;-+1rriPcP{#iLN4Y*@ z3A)}@>bYlN_sRWncN$jrNThM0pb)3@9k{zM}Dl$3Oo+aj~1 zLr+nI`f54g0rIgivX+RUa^; zX%M?{7;eR3#y>}Bkgg)(ApV(=^k9376qb#!p% zm=$<}Z$W`^o&;gbdB-blj?Y$a+F>6O$-W@#1M#EQCbEVPvVjzb8CD(}RvA?WK+r1# zD4i!~AgrzT$H?O`I&)v>3CU6>LyM6#uFc&Q>;};me>uNqH4;qKO>=jz@%2F3-u63H zPzW}LY>LSF!3lUHRawq_mtTpNs`vidTY|piFgPsCTHcb?`uIqAf0AW=>+xx0;R0BF zu=`9Z&ks8Z5QHacnX}q>JysDnbba2oYek72u;X*kjfFtVj`FB_IZp$xd8|qc|2GQMRR?eIHR}c5oXL402 zy$o4?S>oRODXL`qdNX>j1HdUOsMHAT+4xIVBj1G*PKd9dVhkR4ZHqMy#MZf1zB@s* zfoXKETyZYbKf$S9@=#%lx0^0FcTARolRv^$6|ao(*qc7)%wDS-C!>0sW>%4&Hi z-+6x=5;dd5(aR4s+|Svi5lAGNbxqCTz6<57z6-_tWUuKb3Tr6uHmUkNskjuukvpDHv1rDG`&Bd&ntO zd8*Io%k8iUffm@sU^MV~gQvJ*Isr(86RX;UQ7LZK-!@;dZ}rV;DOyXiw!52HqkM^{be( zL>nr|c}knhyg(nWPW_&Nml`yfD;K~o%Dafr3%H11Bi4%YuGt|UwkUwVN<&*WZNT@m zC8!MH;3f-jDSeNF+k-V{*=Mvjk#_nWGbw5%tk>zJL|58-*&yH`;$hw&+f`xe+AI@F zN_^KhmrLrGs32Bg^DsXN={)p^=w(+sevC`jT}@H$CUVsfF$qhwm1w(a)K?tlX>>jzecyb%q`Adel~?$311~4qvPpJGEG*)Vl#>mf5R!aPFWXV%q{^!W z8gQw}jFcy5E&bZDF**5P`8n`$dU|VdO1}3=`F*tXl$#R+=lJfFu!4T*W3B^&96jWU z*U;Q)XU+`2jpg*k#eAR7E-SE5S#JE3PDsnEVja3h8-#HtxV;DPsm@-L*f7EHy5R2M zso$26^9%f%nh=9g26@)0Fdbejx^JfFj)lyWkeRc}-??ZDQ^U&FI^y0mGgsLL1!k(* zDLNXARY^%U2MiHP6D~D&)bkoDHy7)h?#%0Kqx0slIF#B^|3upK`YKy>#-3Os(Hsrl z9I#^Uz5fa-rfH+LUW77n{I3uCCUihMSCg)z^~mLhE7~rPop;f!VFdztZDUE4x zZ#paWp6%k+DHEIkC!E`>DJ_3wkdtfsXNdQzUeWQ0m2UOuH7mia7*Ai^xd(#b`}^%T z>H=o5?{rTZl-8o@g4T0(+*n*yc^AQGx&)>;jPaiMb<7mt3K2R}DW{~gaO!tD#c%PF zjum7oWk0!FQXDi`P7LjdC6Ll(OFrcJ?^9wzO8e ziiTdUwmfBg^Z1ftcxb+b3H~21-_YBAb9&sln|o%i@9IoB7v=hqaZ18MOo&S&Vl3<* zj;c=c{ZktBD2TX1b3U#i+*lF+xVGdDYCr4F>g(2sbd$LDYXl2={-@7B9CaPqO7fR# z&c>kgXP=sU`>Ay$a;?D9jIrGVhbFi)B>WW~Zccb|uhIr2HI!EIs(HyjkqF+T5+fJl zezQ>e7;$d*ckZBzo=>bCnRGIMIxBGgiQHc3`y-J{l3}9IdP98f^Ymk8OL}2PFG!yc zidx8iuKwA3A{5Zu8JXoIQj3INs%u>6h3ck7u4k~Rkn^8PxZ0@C$$19F*eeV+^RY|S z78c{erv(dbg<;O#YH1gvyXs#tNX8FE9gTJK&eKuxpSpF3#-nHNW?;cycmfK*VLXUJ zGwVHBpXB>wM{iZpnjDp~l6N-hNL0%a)nd}Q8Z~M7|JyfGwzSrpd*lAy%-U@s4|&J~ z_Cqs;#3DEr3_!$HJS0Iw2}bBa!*|n6o!0|V{JjvDMWmW^=jp7PiJ`W-pyhUQ$S?_X%c=0eHo;m zzTrIt6mx0yHbiD$NPO`=_Ed=?tFQzozi|9QHP}v#H(Ne)Q`5 z%e{~XEfSV)K;M{u_ym91tCR{hguqG&W)0GS)#>MZb{TKBPDq3?l|nQe*7u_!H?8Qo z>R%Lum4j4IRPDm~eGkAIgVG&qS7vsSjC39E1C1$b=<>MKxi56-zn$d-h?a_TE~Prq zXkV20gI%P-8>KrfD2EK88$0d2u*U0v9DQ!myG?>(VT+ffoGc)Yjhq*{1K(dr6Rq8Q z0v$%dV_gv9J!D2l!GGpfylFvCs!3E$v-ZJFWOVD=tBs%()=-MBV3H3*r$dd*W2 z1!27ln}k0ceM-XhHkL$-8fg-~8SEO0|BIF{?oR&9TKf>#!3r7Cl{jdooV({e zEsq$B7$j75cE{yEg1wV4QMg3$J4pM05*gh&eTDyEv!78ZF2XyP56~s9laKa#`*~pj zvV{`f<87}@eIvw_>?gnlSccdj{^kOQb4l7o@bW7@>rVTgKU;I5qB<<#-E1bQFT6XH zI(tlLZtNJA@RQtsA+CK^j+TJN|4qIVOn4}Zpj-4yC^8zHdXlk z5_GIS+6k)G1sur*PKdM5+zK96V#_IifcWQ9RqkLl(8t}EEz5JWUhE+NUDfZBRW**w zUuY;tNa3%65fe^Xxa(ShEfFZOK$y+XqZpNW0A;wld$wca>L-k5B^C`%Z9U495V{NB zZi^5dZDu<%nO^76bAQAH!DJWNY1KxGAA#|(xr3(-#pWMbByPp**hqol23g2{ttoc< z;Nsnlj)!{!^iLt}<}bi~&abj8%l6OE=VKSNPf;S(DwVB_3XF_b#ON<_9BpJldr}qt z`{9lL$NN0TlqD*p8@_Hzva=7pzSeIKj^hFoR`$h_f0~afXW=!TF*(-mEBZSvTBQEm zSN!x{l@|Gyd?WlQ?&Q*?P5M%H5m zi6Ib5x@DCbk3g_^j9sDc10+2P+%j_3r0C2k_F$WdYLn6<`_{U^k_Et$6*YQzdkb{- zQs^(rzdvGp|MTAIM*9xR2Q!Y|Oj$KYnP}TvO`<=>`#8Yd--Edet2nj%c7R<+aUS&% z2GpKLq?7oy(8aDCDLk#0fD~ODEH%EJ4ym#K;aHLD+r?+NOuU{w>Hka+SX_qmb{za=7AdNVWuyJ z%s)FYe5rA}+&bG+BXs`UnsgXQgDH#H$={<6KefdZ@V!;z!|!dql+}95 zmNqk$BK;ba6}K+>WX$z2AxK2nZ$x+xweWH1j|`I{_qJG3W}pi%=THNc-u`v(-0_Rd zKz-L@22$HCD6m1d*sC7uBo~dV0aPiyuMAB=P3l@|Jeob(Ply3twsW06y{VcVQclDo zQ9jmF514(1hJac;9pb7YIl?o1IE~SDB#qFC6l^!2{3VK>*dl2C$Gg*dVmqx8z6M%* zBZ;~58@&+ruk`qGm;Iunz??zi#veauCS?E;25YXz(_Jisp%mXY<~GuHt;|wmSi?Ny zy{%sYEmA5&S9lN4ha1bqk8qG!FpdPrLTCY>Qmmx4_+?iBSK(%J!ABHNr~C`Zdc4G0(w2KObC zF1RRoe$ia7&`l%a`Uv+<{A4>-q~{ny;%nexFt(?Ma3GN@M;}aOuma1=<=@{ge35^E z?gr8$?HW@3Fl#41zr9xqT4PS6tF-g(=#b8Ujgij_mfy{%jG6e+=98~cjI|_H4=Z$% zbN0Uj?aDoi6%HN(@fakGEH#*)u~BG}<5#Y_AjNx2;};oyxf3NBVgpx3uGDn~K^`Pg>nqds91RjRSfTJi^$XY5MJyoB z>AoI6SDE-AjVHjM7b_j%q=m!}+)Pp{9MF6;5YwYNJ9p=Pt;GuolVLq+`@aicsA&?u zQrGwj&jl?}(uDk1=NV59Jl;dM*L@;PcZ!HBERrkM-5Gyjr7pM8oeEZt7t@f4bAGeG zg#~>^iP}hg%Mx;FQIa%E+zK#dk=uilSyEl}8Mq@F+O10g7+!?Esch1v&_bnmKZNmD zc0n*nM+O}=|HTBAeZ2y!^>whB%vBFJ@4{|MV*Gx$$b|mdob3?>Iy6;*#kZd^cyP4< z+qm%Jhl2o_W%Okqe#?J-FrJj5Sw%j-Hu$FwHfV}&fT@$$4SL1gk@{A^b}8??FiWG* z^iuBb`?&i<+Y+t^>{lv9>kIYsI4NqfZ&h4w7|i)(izRWncRj*8BnIH;gmj>4+9m84 zw|B0XurXm4`c`kGBD|SmuOz-1Sgklibjb*@8=LsU)d&yHOy_tC9IvXc~q zlMv6)lUykf^WgCQ58RThTZ^_Htu1*ppz9c-1vox!erBO38xHr>+;=htTZ-h|q`<$U z%b&VLq$~iwK>}2NFmiK#agem$1W#-W{o$F^eB!pXl9( z=gAkQVL;3xch7l!JP~aD(bH=+@-2Ig=CV7OJC(Oiq`U3W+{2f9ZYM6iJ?RP`0eHyS zBq~(}PfFznS^@tBN4LNSt~!~;>Yc1Gw`KVCyqdc^{sL71XoCbZ7o@(^e5Gch|IZZZ z(QqP+lq2Qq8v$a*!9!2pJ@^-`<-02*JVP0^hYj(*^tU5NG^wUb$4-*t?}dcro5(&Z z$A!U1OMl)e2?$>teSb2mJz|wDykznIB^0Oeb6Yeq?(Q%>x#lO zok;@}qp`ZL0dcLQ*6wS7ueB~qIlVav3@nI|vwue_jojpa_uD{uvN8puMdjacQ0k$2 zmH#+C;We_7H@h^s>DvnI?Kwl`Nv|uLIYXVCT+5F1Qp3P=IU34qBqUXZhZ{I)j}aFF zn{pdVzY#Aw83AunK8r5+BO%66>Dj=Zj+7Y*(0DS=3FqW!f18wwIgf3T{ny8;6T%+H z^Zu2EDO_}Nz+Z@ZrxWSS+1|6<1T^LC^>LMxty9%N8c;khUHZna=hzBdmBtK>fuai2 zn)+}6!RW{dlS=S$cTQF>VL<%TR0U=fwVNFgS6{tN&qRGf?fh@Cn6#>5Kp}QtgUKOl zE0f%`hugquiTpc~EcveyOQ8aHJ3Mg|*xIuXVhudYxTLZ(=tzL2JeqLpJv6C@fJ@cn zrgtkXzt0^#Wy2@t_ac6~-U~akKF)u#9r^E7**cr0&IiQ?!bDde!1J`fD`~6_XHV@* zc}j+2Pl7qdE-FAh*-jOJt(EgNAb-whZ)-8{D?3FNU?KcXD*)wsOr@yai6KWzPdz{; zAW~-^^;gXL0Sms_6`TX0;PJ#V0W;Y)6iZkDmRo%Y&-+s-JF=fDh7?*Vrf14Hp#oQ8 z;-}#aj_RO|6`Z2awsXeerE?TSWh2@_E zJsE zb)j>!Sh2s$_cD{nDVZEfED}VVXRFP9&Sgi(GNM80`TE+wbSHZfVuvx)+3-0ADEW7) z9=;6R$l7V`|JlUMd=x}Dp7>xrnmZV&q(Q;|uG>KQ&i7&xq?UWlR-a6NXnao&$@?J) z{(yQAu|pLYt*69=6hO@TRS(-N)O#MZ0WjFgiaI8@N5dd%Zp-syt~29=hh5VA0FG=2 zk2Oc>>FAjI|L>P2HSo(I_=Vaor+R^s%F{sdU%C_FC5=?l4rBE-uuTD+R%Lb`D=#PN zq)JdEUdB*g58z>};7!fd zRLK2<#`7n|mv3l5q`$aFUiGl}k>y%W;s8OA4GTO!bpYa2r5WBZU|W8`0!K{a{hl7f^{N&@3#*e z_yBb#G50^YX^en-M+B8>&vWQHRxau)r|JwA>-C)Vqb(i#v4dhHgib5pHe}Pxu(>}( zoW)cFMIO_qiBQxJsLsWy?93M*lmJ zo!z?)rZYRyI~dDg*lDO$Rb*VfW|6)4O8(Ar+lg3gye3DJ1g|-|2_eqoFM$z_fTX5B zdKWEk!b+Btt`$+Ua7@?U^GTb}t=z@&7kZU^4XE0cwWeBJ?uF&#(2Y=H&i*&~iQ}Xe z;E2H598JEeF0)8Qx;#e21w1S0Im4wYWpM@=Rimz8PbgOaJ%1eQM1MFXSByvX!g4`W zi7V4y`_?>Fztb~%m6eX2^`9pzUQi@I(6e`1RRgwF^R&Q8AlpWeP+`domexJsez2d=AKC~0>Mfl0RF+u<=*3B~wFgc51;Z?qi8(9k0;8y9-1a?J{I-Ob}xokOAXF`9Jz zrze3KOMS@}k-d=qygbRnO_sny2{;22Ho+v9-%$g)ewA+b;T^BOt66y}_R#z7i%b3* zKM?}9dBLuOAP#Jh*EZmd^yInVxS5@a--`drAosp`xQh_%X2QBY{T|OC-#&=X-j4^X zi-qE+F89W#d|vzzATUv@EuyhGd7rvPEsq~@p%I{0S(6_{<9Z;w(IOezdcwEHFp~>Y zRstz{Oo;Q1+@MiLVHU!2;7kCvGdPyOA6{=lG*sr<+?fz(;s1apX6Eiw-Pu>Jr;+*B z75x`KcSMECUnMr*5iJ3_5|yG43fnrr@24D2XFu2c>}`FLNl7s2LWjih9l4QypcTAh z?HN#`78)(CgNkC;f&vM0$(0Cqos%pcS3_}X(*wG@Ksq!#F);1Muh96;9KYWLZj6%J z7@A$$iWXz3A%1(-KsojHD_|w?R8+!wA!I^o6?X`1_< zmEoXOeXX+@!jU8}JS=xjVttPOWYlw?4TLWjHI;&BG90LXHlyTHLp^zeu^7_OD<_oo zwUcMdS`UsZGIRuE0)VI5evD0Q)GyTaowPa^YB=?ABZn$5_EbPq?(>HJ^7WvI9JfDW zaipRv-w3iUBDOVctyM?;(nJb$(=9s}Jlyx_2TGjn8%OQL|w1pbe-`6g^YgiTtcEU+QyC zD$B?Y7&`TU5}9Z@u-0uympkz`ST=Ox@2ouZ>D3>%tCese&Q}{M`!F~mqKfLNd+&58Jq+|Uc0C=g$i}Hj{=%NfN1H{wT;9~Ky1|y` z<%T7*@3@WN%~yBgu8G=$c;^up-im`aH1~BXQ3Va1a@JAyJ=6gqJFP+xvO7%n*sCIt zs&cFWz4Z2z?TmjfEQHzDV2kcfv#?=LRQ=>|;fvBj55W^Cl>5zti!)qhX~@7&9q zx|v0J{jVv7F{J;7pLF%LFRHomGk0vc%RR(}i9j971+jvnaYYa!@{|^})g;VI`=`Nr z4#gXJ6+vJgR%$_CdTYKg&%BM=aL-WhrLB|R{&Q)uw%Se8lMvCQM2>nSpOKKw+1>)v zGN_^J&hb0Z!{pUP89;%^UYJMm-zoyM;Qtug&D)o!W9P|2Uh%4e{Di2hv&bRN#F%Vh zmpfo~kvfzczpOo{dVulrjQ*csY7aLWn)DZKe-4TUOfgJ})Zqvmww_Vzp>_T}9u^|N zOwcL!IW&(zdhgZN3zr*mBii4-&DX1P;84~S&|g?Z@}G>l%h7<&c(%(w0(0r;z1vC( z+LHX{8KF@MZayi53u?%*vzFv-@j(c$??2{DpZ)2Dkv~V9}y7! zuu{1&LIn~ftU$%cz4g^s_C50g1l&<(#$VMXLvzkm#2s^8j^*<-qxkq^GIQM%yGfH^ zT5Rv&Xs{P9#Zt;mAm5T&DhQb;qZE~fsK6q?ZcP4^w8HMX_})3-VX8|%5xzqXnY@UP z>kgXKm@`zdpjBOVw3SDje-(-FcMk!Oh&UQF7hCahEu8%W>{L@_?&Vc|C}@=hK!S-$ zXrp^ihYmpvB@`HpWDVzz@Ackjgw?k#h2k5a&jQe z7X&-q^lRzts`-z>gLQyj%x1BU1c$|ooGZ2)J!QpLW-o&$HNN9(piER%HorJa8|7vm z>U}`is#b+|Yt4d+H98b$Lf=iK&fDihrMS!+B%V%6|I?yg$Pgb-+6A*iYy4&7XP~EB zN6~RJwl+Tr=c-~*gXpcu)I>i2Aq8bHo(ThU?o}i!l7mb`w29ZHC^4X zpWQx6P5FuBJ%m@Crk=Mrv{W)!x$Q$*>T(RDCr5%v+pk;A&XouvE^u*HJ%s;fYPBl? zDhxcocu$m`Ea52{ekCn<&0&uVwBiS?Lffc+b4>H0SHJBna}d;#h+Qo^?F_5N4a{lP zw>p&MQoz38ufFSAssFWNHrvxo0K~1W=%v2dB?Ahd`=pqERR04l+XkojGmCXsFIrgC zfLJ^$L2g9E>VLH?mfP)`fIu%5|5;TZ(6+C)q&XhIy3$)rb>Zt~^aQ!#`Z6F^vRhmf z2rDOCjQH|qghxAwIs6yGq|}|`bJFMaBESAMEl|#YVFT;n zt9m$5eYD#8YHCr*VJZTSwAJRjG$X~hZ^m6ieCl#T2y0bYO40hOJ3*J}dD#eJQ~lWo zU&B}i8}T1HwI}RrP#cNwj$E%>WK+2zx{^kq$Sq&E{^9*&tF?3pC}Q-iSuGEqxivGg|Lf;Fg(2(hcewHpkD*FBQDkaObaTmp9;rj+T; z@p;nn|MSDj*T9%4$sGoO5{;IkFp}W+f;tRQ7a+Ie4JdxET_a`Rb0MiFg|jOkIFZ?s zv?>)s4+v9h^n+hoq`K?qb{}zm2?Ol@6LUy?y7%?kg}p<%3480mCeVgQB%Tr!qr9fS zT)jZF0T`dEwwBV&Qtc7XGCsv;Y3TovMi>NEa`oos(^Aiz0fjZ%i#L&pKh0-ZujEh; zx{0bKZguTAI1{?gOyMJ3)xg^_J$jddZTQO9w9E|0y?%<`nnE`bZJCROa9M@ z|DZEL`gVMGpC1W;oyOBuJ>>e)mXR%3G3Ol2&%iWVOkkcr!^tWe^`=@g-+N(|2Y{*H z$$$(LY#_XY)-%%4T&l5%EVI%BadC*am31JerVVmqV&@ zonVS4_37PQ?6=x0F6!Ju{A=w6rpWZHS=nx&|4MY+Yj|N(V8aPINWi&UnKmF5JKnwp z>dX2MX!`Wou2LXE=}wTm=*s%edIEtX^D{?*$9vEf2r`qbhzn3czg7R4i_FL(Weom` z&r;u?9-bpc3s{_-fxAuyrmYWN<^Si4@H1v((JJ@(!)`$y8#x6@A%(wK+n7>KOftSW zeeeO`HIR5WFjio6PmuvmB1sP2Av-|`*>oIL8{{%K93cgJ{}2pY4bi(@G1BenzLO{742i^+EYV3^??LVpJ6nS%X~ z6_ZF_ti5(CYwA0IqRN`K z$8}X!L2zXeB#Ev8$yu_(%fbqXlG8{M5Rf1_!>%y6fPjhw5m=NUaR`#5q*1cKkfS6? zLmY-Yf8QDQtG~)BtMuG^`}BFb`|0j8=fu7B-)%e-3A-6-^2;Gt3*4v_eL3V=*&_|QkN647&D-jK{jzDq_ z_MaLNNhOR4+xH=R;o|z;@hDNd&99zj;I2??y!&8@;SxuKFayR%)p0RXjYC(y=D&Sl z<-$g)MTg&Ny78bNkgbjb%ummq&OwehX!^vF$$SasJu?{g$KKs!Tz60UWM;_$NA9JV1`#yM;ST8pD}0| zWBzI$_mfea7|RI>#6uDH$m=GZeqAX%wZFbv4LX`AZys;!n7k%`HMjezC;=E-I^s-t zFf1)@Oj??0QmlDUduVp_Z6;-=ddm+7iE|;&5S+iTGzdFk5mws|F;K&ihp|?t*8PZ} zo0?e~xZ{6hU}dF|TH~202s9INFNki3&h0n}`CQocH%zqi`R~PTvC1JHIf$2lxCJdN z+7WC)kJR;kZE^Wrz9lc`o&VTSoVCGL;_@)T^P!Z}rt1yfwW|fPEyXQte9sWoJ-TR909`~_?5V8Ba7;1*TUic{6WsZN#$760W~KFb#j z#QjDFZ0xSV=U+6z$XMVbCY3j*G8h#mLnlbc{uNZwzL4zI;xa!z5gd$*Y3=-Yd)xTPn{Hmn-+Z2z$TBntVr(`^il>=U_F&dXSTiqb!) zK&p0zAR1K5X4Jp40rQy><~@GuNg4K_0ZQI8#Hqcb@VLrK_^PngX6rbw47zN#(my%d z1euyVI90vhx%T~zT-Me=eA@il6+iZIsJDsAH3$nj{^315{!J_1SX2HGO&t};RLaw9 zdp&&9!ygP5X=~I~T_o5CsCrly#!=efl*uv`^Qe--TTCF>h(ae>a0PkOh*ta!OjH#& z)sfx~i@$3({}2AK1KWJ|7_==|^cjHj{6$FlTJrlZ*f45ArR%bLh~cfwq4BjDm?1PI zj-Rng9XZ?uGGVR)KU$^M!yY^L81VTWss!LJz#6mz3VA5Y3Di zO|6D1RVNNU7z-bCx>B8{2P7+uIK^|sj78()qbz4&0bM{>v!E*`L|5aR+Sfw4eit~R zC0)N;6^U*}ZoZK_4@>Efu{8ary(cB0Uuou|Nh&;I;&cuKVt)qwdtNB}Pe>CX|1s=x zIvrfUgJx~E0-D%{uYPwtszF9+X%$DwI({mJO{O4GYd-D&B*4oQ zWC*|f|CX;qEzQRLJM=tMK~a66C}*>>QqeA1QOShgC)@w~p1EF3T4(N-n=g>OKr@yv zFJ3zDH32+7`R`XA>FMP%jlnH5h;76HE|d#x>+L*RQb}!^-D7iWXx{1kUwFP;cKyt} z%O5R3f7yRp9fyGgZJ-~n^y+F?|6JGjKi*V#xq_#)+d2YTt_;#YPxQ0I{AGNRJN7WG zQdsCs&~yXQ?uZW7T`rSVEvjXkU)+AW#1KdZ*i84SIL>#2I!6C|Wz4bfPpR>WmKxcb zZP|SAgK`o3Pfm`sVz={NM62p;(yA|={!>{0{}Q=;l*2o^;*1DlUKT*Q3|#Uh5~ek+ zbMr}@j1Xgk4smh)$aQZ#-XP37jm&CEO8^$jz{UQ{MN29TD6npror1lcgS*6u|Av~1 zwp&FE`z|c70zUSk2l%fUEy=?_*ZT2>h@$4c!hyF6)fopK#G-3`u6Yg3YUz%%RsL-1 z$Q<(*M%b9JzXeR|@V)+%JX=~1v2vIGHP{p7qOrsn=x3&X@}eeEev@VWBbhB!wf3Sy;Z3Udu3L!? z79do3wSFy43TVrN-C27r`Lv=rlZV9#QkXxIs(5+Hwy%CyJ_lS39=KX&!7A3*18j4*#(MU}^tOj=~n`y|?s^ za(T;tHFfr5H6o~7XqCsn)3LaA<2QuiXrZ7`&hq%Q#iDd62M}6W3)re$S?KR)bu`B) z%L{a|ssXI9P2ktS;{fQl%?P74DEm>HH0(D0IT|OUh zd41({@cm2^`Xk~f8p#{w55T;yGBD@pZ#2^R1vpR~;U5x%x z&~Ru@@97`;6*Q0nHWni^G<-M;jTdqbY~s{B*j+uE*YVcE6*Z0EDT%~~71Hjf>&!t~ zK1+hgJt=vios8BPj6gru?ue4o&6{|P`fiXdSME*h-(2)rlkbdwLi6_-{nT4V*F^r( z%qqivv@c$$y{TaRi`j;F-w7Xd-g`HelfUH_yUk=NS!xKMb5eR*tr@G?_?*d1TsWTL z&fqVP653W|$Qx%qxZU|Bs!gPI&%S0S$;E1wct`Qe^lO)Uq=ChxLNO19z|8j$8sB}J zdGUeWI#Nbf?$PI~`1$iLbCg1pRaA5bTg7$=_U2w>=1jy-f^QgG>)wfanh&?1N+kEp zEmcmKCFkBViIS$I!GgzAdnLN?uC_mHTM~aZZQ+jjOL7r26XM9$y{$9!I$Dn+kbPn(HTqJ#g6Eo(M-R#6)Uhw>1+;=T z{}!!%SkCSz7v2bU$?ge0`nUl)`C9!rt$0WR!l`g|0h!9sCJ`%Ku){= ze!UymXDA4q*?bKpWKpS|`qyF-2V1`&(vTv%VEDPYoX} zuzNzg<;_?+H?aUAL=SK-Z2p;RoBsAg~+ISitgd^eT|LZ%AcXy zehxhsxM%jUXiaN58z;`BWUQ4aC+b0={1eAi%mkx{O>T7+Jwg+1phOUj`CnXcsQ6?- z9C%sqJXSj+vV%ISGEU9ivDvj;f$GDuw9;9?*K0VFiX-qdA)T`{QDQgR>&(R(HuLR` zBbDvNDCk#P7~PuRJs;!Hns~xA9TY5c`wFi3iD$3DGmU`8F(0B{hQJr<>$jh25|_~p zqkI`LmhsLZ$Kv3(yeRs5_3LgUI-BUN?^}w7a>j`@Qb&T5!b9%oG5>fXC*c}XUW97X z548+DmANGA{N4~duP-9brnrCGZ6r#X;*Iiqa=D`gSeKq0M#6$vNx_0R2oDTyrbOs0 zV#DZ~S{7WBsZyIpu;$^fJro`3k$NXhQ}^Uw{gVSPPWrs9?S-S_UMkU;eV1o{vs_7; zDu0b?y9N@=noewAm6uX%tGiyWEzdttMQ3gtSsC{3CbHiCnfhCvLs2Xo-yAF$jZ z``>j!#?YHYc6`ldBMHMi{*G$QZRSQT_mgh*4(<_ zB%0NH|B+kOC68+ep5rY2A7-mpJu1r}DkBiF0$I2P!5O#@FMNCHrPR=bpFega2=7zN zfs%u?2Asf-7Z_DhqB)CcXt-;sFLq|1PUB(OB|q+R%sg@GR^2knQ=1*`z2PxTY0H=EZr$_gh5ct!ez+*~k!bJWc4peahi6>k#`=kJH>pU9OZR6kv6r_+76Lq$ zX&y3EybHfRTC(v+@<4w6=8$Hd4TDU{sTYp_3>fso6vs9I+@7OP@y7 zB0g80&Q0LZpvOATtNT6NVi3u7s6!o|ubj3CzfTU>*03ZC6^}eXZTkUAY@RI5gpBEe zMgF~&#M8IJ>E(r_FaOw9r+f%lYGIy=$FC_m zTO<2J0!Lvvx?91r@> zn6bCgXHX}Rx_qG)2=#>u2IQhi8H&b{Q=qwy&2)J=hgu?$+l4&WH8>lxMW+=wHJNNiV3hsE4p)Ca(t-3yWvd%jkO+b?6N&qb8}fRI{9mbVjG%sczE!#eGX)UYju26wf9>(9~|j~l629w zUlNfp9cZ%{W2l0oM{M5Ji-x1l7*4*8Yq$pYCV1l(h~tq;#w-dlH>m5L9?y8_VqVoJ z>ulVL0bBe6YPrq4O+0TiJ#-zaQj*}2`Yiw=g#V2nM;rDfwHUHI+Xt8-YNCk=ml&FN-zc2XCJ`=!EN zvT)UWU#ZWg7^)T#qx#~*F>kGJ{iOO5#e2Rk=e}3|9bgSoKoF96V<~0!v2wnf;jOdv zG1H5hzk(M*45N6gzs7c{@I6=F>6$ELY}|{QB0hUrcRvpt9ayBGA6R6WhN7%Gd9Z3> z0mo-MK7qCn@TEI$_Q6xq+c zIMi#X$84C>bW+)8;CPJYcH^viY0cBA&?_a=9Y58zrRkrXxWfujO7WZ9q|30$R-;D{ z^ElJ~-U-m9sZ<#-_F7JY!>%vQ3&bcIc3uRa+`|gVafZeB&~VU{#6^W$wNefpl+Ktb z|DHP#g6+wv*nJrYR#vCrB*RL)ll2s7xP#5_NrOLK@^da%s#_7nE!|M`p8Ha4U0b`f zOcb_6xw9g}N56!|NN3}VT-$fCnESq;{)=vblBSO@_r^rJmh1}#jUl?UL^LmSJh6SQ zSDrqz=xyyC1ho17NnM4wo4)7O)a0^2nhge0`(@(%52A2hVzH@Um zYh|l$P?t7N$>DDC`pPMwbkWi@sGeP@SoD@EgnWX;5ythaHLwW_22B$>KSca$cfToBvfE`Hi{ z&M1rcHZ5D+_}7c|8QD|Ek6tdMS@vG{9xo@shP{LRL}0lR*fi5|*%v1Bw|u5ox1&y2 z>t+a0SPQO^KHkKr06T2hCEUq^(z#W|{2~ZtSD1m@kx*B(92U9#4&|i>z@fRj%BJWl#HzI(}S(882oNmw-{@U z?y^g^m%^+HVyapKX&W9-&S23V3a#uwQR=WDcbxl4DON1sF29fMUiWNi2s1geLR6mO z>H@i)RBtx$oT^OV2WEisj|CmtP>Fp8|GWul26GGRPg>_H7eSKVr8_1cUuaaBdwMOZ zgCnS`22v=POXpGi5ZHYyXKnundT)*AlL30Mp;Tja{~)b+7t8v?R!SPMyKR9isE-BK zr=<^A3i#3{@THyFI8`c58KA4tO=su9R4|z&16oEdfM!IRRXkcrZ{=KfOqSfb?yTh9 zGr2HQO$)-bsd=OeSDWQm&Wj+jAWTy5gW6d2esc-_L$V7A`E{}2akODNJC=FDJr-US z29sm?I@${VQAaz)Z;7%JMZVC7B|LOk8FzYcuHIUKmYq7){UpYkUrQVVnkLp%{gZ&c z$=rvN-mI!p@|rnC{eGmvQ@*V>b6Q|tZ%;0VoVTXZD+F<$KzT ze)e{M2qay&D5t|NFG7KeX`c#rs)(IOj3bA^H)m_0Px;ruvB#bNL&^vP(6ufVke$bK zVS2Jv>DwvcE3RCVra#TlP^hsPt%9VoAIFY#U49*yXNRzpcYLhVSGo{w4|_18r{<{`y9bOmq6|ag-$T zg`Vbz{y*&ThTq2I-S3?He*OPo(9@DOjBChNj+KZ&R<;~D_VW!Asa$=ZObdMfFiX~= zS>wZ}9nHYtKsac#;;)W$JOW8qm~P;o&#sr+V|5*IEp!J3TzAExMQ;%lgGSC zvs%}ZT~DHZ1}N?)eYSkj&*ebF}QE11=OsxTxYzBJcA?6r0} zUjD}CF$+3J3Lhv!26*;KTUqRffF}mwYbO8asolT6DHdJJn#}8?z&;+CDt(u!UQbJj zh_Zmq0M^rkc1;JLhM~&t<7TZgxvY4>WNi(Jp@2)l^C14jojBh|eRdFKJlquo8 z8eb`>+%9I+tT5gCpYO(xf)^5)yk_7Drp@3z>Kp_|;73gFv2gWk$h*z;%RvC;Q&h8c z8PQP8N|ZqoRftTc;*e+8IcQRRu=Yk)wt!)8{z_%`Q~(V}B=SQAt>q5J?#zb%JhJ|v z&-DKgnT!BurV>WuE(6PWZ}q*mbjkb*x2||n?nGA$*7lQje9t>B(>=Q03L#|fSfByK zCzQ_@q`dL|MpDV6nIC@^JYP9OeZNnO#5jPsS*vWv~TxaVs7oHK$;hKGW+xX&#N z-PX2K#ieutj@8_*VzZEs7bU@(rFY%d=+RMnAXDi_e5^;ac7RXAQ57W8MsI8LJ%Ao! zK|BJ9s{n~O^VgBMhkmQ^cC}@l{*f|QgSOKbe6b_tpdnLlRf%Xz8Ouio8z)|y7#&Ax zsla^WDTZ%LM99a|i8J-5DA@->h0{}(@xH4OMiRAi7qC*Bgf289lnb0)h7x8)kKHoN z1!6h2I)b_ETP7t(wVAkUHTr~swdNFy3z5@je?qxHF$IG zJ+Ltu%Dlfk`j@w7F{C1aAM!U;8Sn{I`b$bm?KeGvSL7k_Gi^09n6T{c!Oxom%cn}B z6~Ll688e46{( zJ!n_sM--Pi8f+DIhXk)l?dJfr+C+7?Tk-TLG!0&#bu1~F$$oG*F( zx?v}ak!-*NPowa)V*E}$Wi2NBE4WkF*};T%=8sIME)QZs9c>XIC|x>>m>zNXQX@!^ zoNN)UOwH{oO^sCM8!}6#Ha}b1Cn)H-AoDmt{2hyJe)e*OEql*c?WBzo4JVC|j2K0` zWfv?}Y-SogcS>GP8HyvWS4I#4$t0%YV!(aIrk-KlyuC`>+Kh_c7z(RW+jY+sUz9QC) zyi^L5b3@F}jq9_=YYb-SLx^3I4{pa{|lbtFc@d zk}gi84O#O*7QQrw-JS^c6=sS{25co|zy~BB{hPgJ1or3kHH)Z>V;EyM|3S%b1LLm- zZ?+5L$D~H^-j)PjR9!E!fNWYZmRWtlO<;lfkH(b`vCIw93eQi?bU-Rn_sPTZBRnwB zv)&FqEijYvfh^;v|2vS?PrkL?Ry;>2TDf9!!Q9uyt;U3443k%rzQUCXHU82~jYBg_ zl<8T-ZL*b8IJeubMF;Elv?9|IF@|~SD}Lua1zcYU&C%U94G9hhn;r7+Mxb1J9Q6ot zZ}x58w`LtJ%~n~Zf(qxmvZDP`B+_8I;-E++_yQbnppV!9-W^>W zVQ1nux@Rs#{={7W0PodC`PQg|-CZE$Hhc1pV7OPImSE})^Fjsm-Y0!e)>-@kAx*X> z#cT{5d@Uu01df_lz16T+H5xCf$)3UhQ3;#}vV~fDg@9FO@r3H0ax#l~gHP6!^(;dB z>W*uwa=k0Pl2+q}R$p`hpjn*+pgGmjx)%GE8g|;66d&#sr2Giul98kU#{JKD1$`|) zc8?)b>#1T$Kq%}L<#`+9{kB#&7t4n(o(xXm+JvY^U4I`P3?siuyhP zeQenKvPWwz-(neswwjqa5~MG{B-q|$k$t(MGadiUn9oAKF?a`=wD{{28*^drw-xpl zh{`&+YCKz#B>aS-&iDcO?UHJyTE zL|}B%D}}ozdBH3<=UL=r{RBcTEOKGD{%x;kKKP$`@! z9hXc={pv)EucSIXlq{I4R>bjhd}TigcbP+$b6Zyttv;UF=P|S=A(Q(&#sAdCxc2#t zbg0J0F_mO6cD()gW~I`>U_&2?8zbO6Q0c))ZlS#xtg4&q;|rBVBZcPz*&SgND-tf_ zN!$FoY&LwV-vep1(4uZ5!7NS}<6{`0om*>XBr+r?AolK8^ILgR$;p)EVk{F&-7ILI zGLrW`c&h5y4zf*1KqLSXoLXf0(U6=CbxEx-K{6c|<~RHf^z%WrOULBtxekWY*QDjW z8rB;m5M($x!i?%ZiT4(7@7h+^Of9|aX?VCn7HZypyRbh=ee7g|CCy5t#EWDJBtHSY zp$?e=;euCalLp*fipSPI7M&a?uU3=1b!aDv_?^EfkByjc2WOkB0ZaWxFK-0h1*Fty zs)wu(%S`%fDMD7?o>3>u-j~0X=C>I_cP$E~o##M@Wdhu(j+p2}OK7RE0`2J zI$ZqN7aDU$yvk*Ae>D=nCa=A*+ExIrZ_qxKcK+G0W7%3xLBFh}9RLJX3563>TrpA` zEiiPHg$`Dgb*=K!#yUfTd@}>n9OY{q+(G0Ut(%`0Pj()Dm&GpFw6OmI1_a~+RWv5> z(Cx=4epdxbQY=WT=PFlPe+YB(O9Ux`7RxGJz9l*8`@={oMJVr0kT{2`<3Lb38%`-q z@#l5EI&{;x@x7`a$8d;1OcFSdpvcHM&0UiA@Y*+^0j!8$i$m_iGQD?^U|U^ih$|tP zkYX;kNlP|vhc4`!QP#ZYfnluX{%T_B=t2C~>zCoWT1mi(7LG>wHxB)tPvY@jsz_k0bBOLH zwM5HFIrrNqBdz)?9&p3#{9OQu6K7vym#cEI+PjQ2hY4EtkJ>kB+12 z)QV+;dQDV|BhLbL_UcTV&G`%1t~8*ejvv`tptHC^G$^zhHKQ{d%g&mb%JOeu~hZC|=-Wx5(0J0+p8K7$^%o#timbm-LIDhinnc0xvgo5<6=K|hJuz(Fn+O;ys z)y#Al={g)G^(d<|$m|@%y`N0Iz)R)+s9f5Fe)B^%1#dT+wQ_uMoHQ#us5zWv;(`5> z%hwmFtNHMY&8q*55^M$EfZB@s>QRa|PKLnD#~q5%Yh>2Q=^%9`Kv~G@g`JiPxn`Nr zJ{M8F-!+Vox;QwQ7Vu!Yp6K9sb2rb+XphUMmN#gd9>4SQGrA3aRUTk}h8rDcF6B~I zNvwR0O*@7%rAK^;T1p|QYt1${PhQ@*qam1|gdF^nY_QXVyYp=?lVVy&5@}IUk)ZfX zMW0^}m+0A9`Z1a0*H|1@ZLc#-{es^~eiQ+2Cq6YR2pu7~jLI>!yx zXcVgFe);$3?D&c@x%Pu+r}$2X-BS~)k-_BO@(@R%23}~Y%pL$;mIOa}-{-zA`UcWx<8B{|;LmL5Lz z4(4ZyxzQ@Dvp7t&k+ohb-qJTm@D(jz9mWWPj7q4@t7PYPowM@?BN{qT>aywo|p$HNP zsAwf9S=5*z7~59KhotTPg6G#886FyM$*hk>1si-vdSj6M2uV?BGtP<2bNGYAzIe2w$X!9Tm7 z@;Hnt{v9w7WTkxiK|cyr^a9aFj8XrnD8oWz3t`b` z_30xk^ba1YU8U3jrvTE1|z)8TZs0W9JSf?SvX4GtUW9;r}lgDL&O1*HeI zVLOgl22m31V8C_D+^L5}@7u-?qHMO+7eT{cwrWLqxDbak2YD6?y4Iyi~QEYG00Yj>?9& zIjt;sOT>3AnGtb@WWCdw0X{<|R(^WWRXTnQ+C+$Hm+3Vm=IZG!+ABS%^832*?K+OJ zQb8?|tMQq$HHb@6;WmC_zA!Gtv4_;;kYu866B;h4iAXqF!=KbLL*(Aw9UCawY_x7- zs5Ga=Y4>k+veBag_jrOoFI3{ExN{!D3PeF;2PN_hR1}ET-P-CKFC``JGWx|fn70{278mh?Q;7> zzWdmh2A|I}=o+i(Gzq@U#%}Iub6*(T$Z;Dq%~N%jdg~CWguYqIQ;6#Xw(UdDj_uQ1 z(0W(C^~RpwZ`y=O=n(x}dgYP-qghW_`mauRCyTf-VbNgqO9&%Ixo0~!os+J|5+2F9 zEc3)J?LD6hVvda9s^Rs#E&@DymDSSugD^}?7P&L9jzh#iIG|ciY1|TP3%?K7OiM{|$$RIkqmm}%coQB!jtJgH1CDA4GP2%`8=-mv55?BE zFN;?F-n{*NVQ4ab>KJMy7E=FGf9v&a&;9xz>&@TDJNF$+?gQ1xraXTOsoJ3>C07P^ z9?mkDXtUP}Hm<(2U3nvR2~{WSaF*MTFLm{e{d}HkwE!$?JW_$K3zvYwA`3mxbs-Hc zYMk}H_n3yn*v=(7*LD(UClP0WrQ`Cu8oY|11jf`rDe54fltxS}PN(@HDLU6|{pBEW zBjOF~*%x#O-tM^Vw%N|kwVgt>NqGb@)^I57E^L=L%>$eEUt5fH6}JorPFo2bB2=J( zy_3O|7(T1>6o*^igd%4F>0tmGBoAKQXRiN@Oj|_b;0+s@U9;j7?PT^9$o~D2pi{1R z3=oPy-?XD_J~g5;%WZ8s=&D^GdmqEaqzei;vF*wySFBE=2&1{M5v4J@ro`{Ezy0Pw zGb?#ck#HBDb3np_pfw#NbLiaNeWQcXwlnm;n=h3LiXQnt6bqSAKZSZEdQP)KrfIua zSl!rrw9d<}b!<%715Skhf+WSL$^I3q8dqlpAF^BIFHa9Q!lIHm6?`4s=Fb@%{|V(Y z^!VM}!%W3V$$;*@txPAm9DRJsU68q`P#g;3|ky(1MTiIjXa zGxIe(*I?4jaCozEb$h{EaV#2D=Qp6)PST_q&zeoR(x2q^1_uSwx;%uD)E#_+nw&j; zcWb&T7fQYKCcXKN2lr-cX*1t4ORZn~8KrO_`&F8JUw_x?^t@3+ze9NyY!%rLkXu^o zLzoVNfQdVXlsa^Ur?W!q30973Cx0p7;MI4YoqO@ag(rUwEKhm(yNN-&M~g7p9oJ_+ zUW=@ibI4DSolq_!tsF#Z=el;p=^)s9N46<9opcGk%+8|V>waJKcpc$>fKF4S*4^=c zEcXLS?T2^KN-*;!gy*9M8cs%-tZ&#R%1fqL%zXKrslU4P^?mu<{NL?vqvBW=JbpLP z5qPB-9*ZaB_<1~1YE7ho#u(vNf!yNAX4CB#@5>K=EbY+Eh**ScU}stIX|*5I;fJlL zxRWK?E?zYAKHO<5<29Ch0Tow(gRUcGhuc=KBRd|7ND`&rlGK~_Gn$y8LgV=d?c|^M z86^Y7pX!o4?8L@3h;VM(mE#_8?lFf{k~H{wCwgSn)I^@O4vFh5c7Oeaos-od?yUYQ z5Np^RqY=p^msU{~&=-YToygVT+P@UMdBA8(ev0-O?u1$;B0P!&8?Jy3jZA#CAI>H| z`}&L0gT~o6AK1^Bd)^J5%oJ+O(21qb4Y*-_54C-zBse-xjmwzBV!v}Ocm5Q(m)#~u zzdx+wxq&d{^B_(`ut9CCT})8Yx*v<@OlH40D{E=}m2C?8?izVkwZ7cP;->sLG`Iaj z=j9av4HC=SYtx+3kT+Z1Kqk}n)9c92!`{0G5OM= z>IkKh!K)vlx_{$N=V@73(BI5lTW#tt_Lx5n4k||KjAtS zcbfRCSJ|$EeQ^MrU2(BdsRLSiYhBT?l^qr-jstm5onySOfR&#dIopoHk!j8(-w*Qq z-}AMnT&dTC80cGKe+@j9a##_R;{6Ys;_id^`XOhnohfR63udNfg3N3}E_Y?2EXB~| z-Mhpg-N?f~&xPWGFUyEyw&#R`8nRnepJ7E%>92P!vdPlHn>}&g12j^HbP`G;$kRye zqlF@m!9E74^lBjN0o^Y&jJ?-!FLy4S&sJYsnzz|2@&)&SS9rlgxbf?4$V|&Gf_ku7 zKzH2aH_d&U@cCL?s}p{=^T4SLc3i|D^jB~LNgM)4t)LM&oaHt%y`;^k^yHz~kf=a< z?emoFjkx;cjHt6=Lj0L>GV(_Hf$@uksCqGcja1`iQPg)0!o6YtLS)~~_+A?!JyQcV zV7DO&Ka?460?W5MnD(92>kq53WBTO2RQ!pHDI}PI%-ei_SzF#AFW{DMqnuE;SgO=U*1zTx5+2IGm(ZJJ%nnZiM^^M+-IgeZr!j9t0zzf$DWlBofH zx6O+pprd?34D&hQi9pK~{{l1T zKv7=$L49mSLRhkPWe(3+yi>=U5jsuH~hl#k=u~7tQTd zQp6e)SDYLY-_6=GsoCh8R+Lx1b;EbkFJ>ikF8GK>n~i#^EzXV?TDY!rpC-Za!C(?g zNYNfOn~F4ivfS{~`!V1?9^1Ll3O8_3@$o$_QQf_NC(aEE_Po$5GMh`y zmunKds5xYCId-bpt)bP(v4x!h*#?F9WYm5H?3t#mz4=aIyJN+_>PMy39i!p;=3c?t z0tE8f(6E*&y&MjULw?~CPjcwW3l*U)fbL~y4Qh&rkg z=@6it^sTs7^^>If@hhGVjs{yl1OpC}F_`ZY(eU+PBUY6vT3R4|9^SKN8=j!dHrd5RjTm zBvhSQpL^}nRPA@~0pruP@++qrPi&k$n<;av(bI``?O*2ZUIT7?#)*CqCduH+r(FF{yklk!*Qr&dCQ36-U(gsEg4V$4fxBHDZXl|NKUbG zeTS&*ERif$VWQ8-AuiCY%vd~hrNtJv8?^eIvA#i(b`QfqdO?cr+Uv`xIL!aLQJwvd z4`Jo`XpU|>8b9( zr^))s(ODb$de5IGGjz+@%n|R)k4XoW-_viz)QMx_VT dKl>8$f*;1*juo&3f#y+vD&6~Eo`UJ${}0W1Z$JP5 literal 0 HcmV?d00001 diff --git a/resources/views/layouts/main.blade.php b/resources/views/layouts/main.blade.php index 9c3be625..347b4acf 100644 --- a/resources/views/layouts/main.blade.php +++ b/resources/views/layouts/main.blade.php @@ -185,7 +185,7 @@ {{ config('app.name', 'Laravel') }} Logo {{ config('app.name', 'Laravel') }} From 5e28d81ead177161c14b096ecefcf77f1caea5df Mon Sep 17 00:00:00 2001 From: 1Day Date: Mon, 13 Jun 2022 09:23:58 +0200 Subject: [PATCH 26/27] update favicon --- public/favicon.ico | Bin 107051 -> 15086 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/public/favicon.ico b/public/favicon.ico index fc80d88dd6baa88285d96fb70fb1c1690af83ef2..fa49b96a861a95b0648c156aa6c0b3f11f68709e 100644 GIT binary patch literal 15086 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 From 4e63d5348fbfc71e9c0ed1e1af642daba0683a3c Mon Sep 17 00:00:00 2001 From: Dennis Date: Mon, 13 Jun 2022 09:25:50 +0200 Subject: [PATCH 27/27] Update README.md --- README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/README.md b/README.md index 62b77182..bc0e2735 100644 --- a/README.md +++ b/README.md @@ -2,6 +2,7 @@ - PayPal Integration - Stripe Integration +- Referral System - Email Verification - Audit Log - Admin Dashboard