Some stuff...
+ + +{{ myModal.getData() | json }}+
Some stuff...
+ + +{{ sampleText }}
- -This example shows that NgxSmartModal
works perfectly and is entirely working with any CSS
- framework.
Modal body text goes here.
-I'm a component!
-"Jack" is a template binding value!
-"Frost" is an @Input() value!
\ No newline at end of file diff --git a/src/app/demo/fake/fake.component.scss b/src/app/demo/fake/fake.component.scss deleted file mode 100644 index 5d4e87f3..00000000 --- a/src/app/demo/fake/fake.component.scss +++ /dev/null @@ -1,3 +0,0 @@ -:host { - display: block; -} diff --git a/src/app/demo/fake/fake.component.spec.ts b/src/app/demo/fake/fake.component.spec.ts deleted file mode 100644 index 438eb724..00000000 --- a/src/app/demo/fake/fake.component.spec.ts +++ /dev/null @@ -1,25 +0,0 @@ -import { async, ComponentFixture, TestBed } from '@angular/core/testing'; - -import { FakeComponent } from './fake.component'; - -describe('FakeComponent', () => { - let component: FakeComponent; - let fixture: ComponentFixtureChangeDetectionStrategy
set to OnPush
!
- {{ sampleText }}
- -This example shows that NgxSmartModal
works perfectly and is entirely working with any CSS
- framework.
NgxSmartModal
fits with any CSS framework. A N Y!
I'm TemplateRef content!
-"Bobby" is a template binding value!
-â ī¸ Please note that only CSS files are imported without JS.
-
Some effects won't appear (e.g.: wave effects on Materialize buttons)
{{ sampleText[0] }}
- -{{ sampleText[1] }}
- - -
- Code below comes from
- NgxSmartModalService
. It was set from the
- AppComponent
!
-
{{ modalData.getData() |Â json }}-
Learn more in - the documentation!
-Btw, you can check your console, I echoed my data inside too!
- -Look at your console, I'm linked to some events (onOpen, onClose and onDismiss)!
- - -
- Btw, the following options has been applied to disable modal closing:
-
- [closable]="false" [dismissable]="false" [escapable]="false"
-
- To interact with a modal remotely, you simply need to retrieve the desired modal instance via the
-
- NgxSmartModalService
-
-
For example:
-ngxSmartModalService.open('remoteModal')- -
That's why I'm larger than the others
-Even if I have no backdrop, you can dismiss me by simple click out of me.
- - -Lorem ipsum dolor sit amet, consectetur adipisicing elit. Aspernatur deserunt dolore ex labore nesciunt, non quam - quas - quasi, repellat unde veritatis vitae. Atque ipsam quaerat quam soluta, sunt totam! Aperiam eos est ipsam nemo - veritatis. - Accusamus consequatur corporis debitis dolorem eos error explicabo, magnam minus non odio optio porro quia quis - quisquam - suscipit tempora velit! Aliquid aperiam autem cumque cupiditate dicta, dolore dolores doloribus earum enim est - facere - facilis ipsa iure nam nobis nostrum pariatur perspiciatis quae quas quo quod reprehenderit sunt, suscipit - tempore, - unde vitae voluptates voluptatibus. Fugiat obcaecati saepe voluptatibus? Aliquam dolores enim est et harum, - itaque - odio provident quaerat quam quasi quis recusandae repellat sapiente soluta vitae. Accusamus aliquid autem - commodi - consequatur, dignissimos dolorem error eum fuga fugiat illum ipsum iure magnam minima minus obcaecati officia - porro - possimus praesentium quasi quibusdam repudiandae soluta veniam! Ad alias amet animi architecto aspernatur atque - commodi - consectetur cum debitis dolorem eius est illo illum ipsa iste iure laboriosam minima nemo nihil non nostrum - nulla - obcaecati perspiciatis provident quae quas, quasi quidem sapiente suscipit unde veritatis vitae voluptatem - voluptatum. - Ab aliquid, animi aspernatur atque aut, beatae corporis cupiditate debitis dolorem doloremque earum facere illo - ipsam - labore nesciunt nostrum officia quaerat quas quisquam rerum soluta tempora temporibus ullam! Blanditiis commodi - consequuntur - cumque error necessitatibus numquam, possimus? Ad aut, doloremque ducimus hic, molestiae praesentium provident - quas - quo sint suscipit, temporibus vel veniam veritatis! Atque commodi cum ipsa iure voluptatum. Assumenda atque - autem - debitis ducimus eos et iusto laudantium libero non obcaecati, officia quaerat repellendus, voluptates! Dolor, - dolorem - explicabo facilis id illum necessitatibus quidem quisquam tenetur. Consequatur ea inventore ipsum iusto maxime - quidem - quod sit soluta totam! Aliquam beatae cum cumque dolorem eligendi, eos error id iste maiores neque nisi nobis - quam - recusandae repellat repudiandae sapiente tempore ut vel velit voluptates. Aliquid aperiam consequuntur, deserunt - doloribus earum eum eveniet excepturi expedita incidunt iste, natus nihil quibusdam quis sint voluptatum? - Blanditiis - deleniti dolor doloremque ducimus error facere harum itaque magni nulla rerum, veritatis voluptatem? A - accusantium - adipisci aperiam assumenda beatae blanditiis consequatur cum delectus dolore doloribus eaque enim et, ex - expedita - facilis harum illo inventore laboriosam magnam maxime mollitia nesciunt nobis officiis porro quae quia quibusdam - ratione reiciendis rem sed sequi sit suscipit tempore ullam ut velit voluptates. Ab accusamus accusantium animi, - atque corporis culpa cum cupiditate delectus ea enim eos et eum fugit harum illo impedit ipsum maxime modi natus - neque non pariatur perspiciatis praesentium quasi quis quo recusandae repellendus reprehenderit sapiente sequi, - sunt - ut veniam vero! Adipisci earum facilis illo minima nulla perspiciatis qui quia ratione repellat voluptatibus? - Assumenda - aut debitis delectus dicta, dignissimos dolor ducimus eum eveniet ipsam magnam minima minus molestias numquam - odio - quasi qui quis quod repellat repellendus, ut vitae voluptas voluptates? Adipisci aliquam dignissimos doloribus - eius - eveniet, in iste molestias odio officia, possimus, quam soluta ullam veritatis. Atque explicabo suscipit - voluptates! - Accusamus adipisci aspernatur blanditiis dolore, maiores mollitia neque praesentium repellat! Accusantium, - beatae - deserunt eligendi impedit in ipsa iste laborum mollitia quaerat quasi reprehenderit soluta suscipit, unde ut - voluptate! - Assumenda.
- -Clicking on my backdrop - won't close me.
- -{{ sampleText[2] }}
- -Pressing the escape key - won't close me.
- -{{ sampleText[3] }}
- -How to use :
-target="myElementSelector"
- {{ sampleText[3] }}
- -This example shows that NgxSmartModal
works perfectly and is entirely working with any CSS
- framework.
ngx-smart-modal
comes with the NgxSmartModalService
that you can use in any
- component like this:
-{{ CODES?.SERVICE_IMPORT }}- - -
{{ methodName }}
- 1 && !isLast"> /
- {{ param.type }}
{{ method.return.type }}
-
- identifier
and the modal Class
instance`
- },
- {
- name: 'force',
- type: 'boolean',
- description: 'Wether to erase potentially existing modal with the same identifier
or not'
- }
- ],
- return: {
- type: 'void'
- }
- },
- {
- name: ['getModal(id: string)', 'get(id: string)'],
- description: 'Retrieve a modal instance by its identifier',
- params: [
- {
- name: 'id',
- type: 'string',
- description: 'The identifier
of the modal you want to retrieve'
- }
- ],
- return: {
- type: 'NgxSmartModalComponent | Error',
- description: 'A modal with same identifier or an error'
- }
- },
- {
- name: ['open(id: string, force?: boolean)'],
- description: 'Open a given modal',
- params: [
- {
- name: 'id',
- type: 'string',
- description: 'The identifier
of the modal you want to open'
- },
- {
- name: 'force',
- type: 'boolean',
- description: 'By default modals will open according to their instanciation order. Enable this option will open it top of all other modals declared later or already opened'
- },
- ],
- return: {
- type: 'void'
- }
- },
- {
- name: ['close(id: string)'],
- description: 'Close a given modal',
- params: [
- {
- name: 'id',
- type: 'string',
- description: 'The identifier
of the modal you want to close'
- }
- ],
- return: {
- type: 'void'
- }
- },
- {
- name: ['closeAll()'],
- description: 'Close all opened modals',
- params: [],
- return: {
- type: 'void'
- }
- },
- {
- name: ['toggle(id: string, force?: boolean)'],
- description: 'Toggle (open or close) a given modal',
- params: [
- {
- name: 'id',
- type: 'string',
- description: 'The identifier
of the modal you want to toggle'
- },
- {
- name: 'force',
- type: 'boolean',
- description: 'By default modals will open according to their instanciation order. Enable this option will open it top of all note it has no effect if modal closes.'
- }
- ],
- return: {
- type: 'void'
- }
- },
- {
- name: ['getModalStack()'],
- description: 'Retrieve all created modals',
- params: [],
- return: {
- type: 'ModalInstance[]',
- description: 'An array of modal instances'
- }
- },
- {
- name: ['getOpenedModals()'],
- description: 'Retrieve all opened modals',
- params: [],
- return: {
- type: 'ModalInstance[]',
- description: 'An array of opened modal instances'
- }
- },
- {
- name: ['getHigherIndex()'],
- description: 'Get the higher index value between all the modal instances',
- params: [],
- return: {
- type: 'number',
- description: 'An higher index over all existing modals index'
- }
- },
- {
- name: ['getModalStackCount()'],
- description: 'Gives the number of modal instances',
- params: [],
- return: {
- type: 'number',
- description: 'The number of modal instances'
- }
- },
- {
- name: ['removeModal(id: string)'],
- description: 'Remove a modal instance from the modal stack',
- params: [
- {
- name: 'id',
- type: 'string',
- description: 'The identifier
of the modal you want to remove'
- }
- ],
- return: {
- type: 'void'
- }
- },
- {
- name: ['setModalData(data: any, id: string, force?: boolean)'],
- description: "Associate data to an identified modal. You can get it later with service methods or from modal's reference",
- params: [
- {
- name: 'data',
- type: 'any',
- description: 'The data you want to bind to the modal'
- },
- {
- name: 'id',
- type: 'string',
- description: 'The identifier
of the modal'
- },
- {
- name: 'force',
- type: 'boolean',
- description: 'Overwrite potentially existing data that has already been associated with the modal'
- },
- ],
- return: {
- type: 'boolean',
- description: 'If data successfully bound to the modal true
, eitherfalse
'
- }
- },
- {
- name: ['getModalData(id: string)'],
- description: 'Retrieve modal data by its identifier',
- params: [
- {
- name: 'id',
- type: 'string',
- description: 'The identifier
of the modal'
- }
- ],
- return: {
- type: 'any |Â undefined',
- description: 'The data you attached to the modal'
- }
- },
- {
- name: ['resetModalData(id: string)'],
- description: 'Reset the data attached to a given modal',
- params: [
- {
- name: 'id',
- type: 'string',
- description: 'The identifier
of the modal you want to remove the attached data'
- }
- ],
- return: {
- type: 'any |Â boolean',
- description: 'The removed data. false
if modal not found'
- }
- },
- {
- name: ['closeLatestModal()'],
- description: 'Close the latest opened modal if it has been declared as escapable',
- params: [],
- return: {
- type: 'void'
- }
- },
- {
- name: ['create(id: string, content: Contentidentifier
of the modal you want to create'
- },
- {
- name: 'content',
- type: 'ContentNgxSmartModalComponent
'
- }
- },
- ];
- // tslint:enable:max-line-length
-
- constructor() { }
-
- ngOnInit() {
- window.scrollTo(0, 0);
- }
-
-}
diff --git a/src/app/doc/parts/events/events.component.html b/src/app/doc/parts/events/events.component.html
deleted file mode 100644
index 60a0ed0e..00000000
--- a/src/app/doc/parts/events/events.component.html
+++ /dev/null
@@ -1,41 +0,0 @@
-ngx-smart-modal
comes with several built-in events:
-{{ CODES?.HTML_EVENT }}-
{{ CODES?.COMP_FUNC }}- -
{{ CODES?.RICKROLL_MODAL_HTML }}-
{{ CODES?.LISTEN_EVENT_EXAMPLE }}diff --git a/src/app/doc/parts/events/events.component.scss b/src/app/doc/parts/events/events.component.scss deleted file mode 100644 index e69de29b..00000000 diff --git a/src/app/doc/parts/events/events.component.spec.ts b/src/app/doc/parts/events/events.component.spec.ts deleted file mode 100644 index a69136ce..00000000 --- a/src/app/doc/parts/events/events.component.spec.ts +++ /dev/null @@ -1,25 +0,0 @@ -import { async, ComponentFixture, TestBed } from '@angular/core/testing'; - -import { EventsComponent } from './events.component'; - -describe('EventsComponent', () => { - let component: EventsComponent; - let fixture: ComponentFixture
Some stuff...
- - -close
/ escape
/ dismiss
)'
- },
- {
- name: 'onAnyCloseEventFinished',
- description: 'modal has been closed whatever the kind of event (close
/ escape
/ dismiss
)'
- },
- {
- name: 'visibleChange',
- description: 'modal visibility has changed (regardless of the modal visibility state)'
- },
- {
- name: 'onDataAdded',
- description: 'data were added to the modal (using setData()
)'
- },
- {
- name: 'onDataRemoved',
- description: 'data were removed from the modal (using removeData()
)'
- },
- ];
- // tslint:enable:max-line-length
-
- constructor() { }
-
- ngOnInit() {
- window.scrollTo(0, 0);
- }
-
-}
diff --git a/src/app/doc/parts/home/home.component.html b/src/app/doc/parts/home/home.component.html
deleted file mode 100644
index 43d4ebb2..00000000
--- a/src/app/doc/parts/home/home.component.html
+++ /dev/null
@@ -1,160 +0,0 @@
-ngx-smart-modal
is a lightweight and very complete Angular library for managing modals inside any
- Angular
- project. It
- was built for modern browsers using TypeScript, HTML5 and Angular >=2.4.0.
-open
, close
, dismiss
, escape
and more for each
- modalz-index
computation (no ugly glitches or problems with a modal inside another)ngx-smart-modal.scss
or ngx-smart-modal.css
in a global style
- file (e.g. styles.scss
or styles.css
in classic Angular projects or any other scss/css
- file it imports).
-.nsm-body
selector after the .nsm-dialog
- selector because from now, the modal content is wrapped in a .nsm-body
block.
-./github/issue_template.md
.
-npm i
or yarn
to install dependencies then yarn start
to start the
- angular-cli demo. To modify the library, go into src/ngx-smart-modal
and do some code (and some tests)!
- đ¤ When you've finished, commit and push it to your forked repo, and make a PR to the official
- ngx-smart-modal
repo! Thank you for your support, you rock! đ¤đ¸package.json
. After merging your contribution, we will tag and deploy a new version
- of ngx-smart-modal later.
-ngx-smart-modal
comes with some parameters / options in order to make it fit your needs. The
- following parameters / options have to be used like this:
-{{ CODES?.MARKUP_OPTION_EXAMPLE }}- - -
{{ option?.type }}
{{ option?.defaultValue }}
ngx-smart-modal
in your project install it via npm:
-npm i ngx-smart-modal --save- -
yarn add ngx-smart-modal- -
https://unpkg.com/ngx-smart-modal@{{ libVersion }}/bundles/ngx-smart-modal.umd.js- -
{{ CODES?.ERROR_MSG_1 }}-
{{ CODES?.ERROR_MSG_2 }}-
npm i web-animations-js --save-
yarn add web-animations-js- -
{{ CODES?.SYSTEM_JS }}-
https://unpkg.com/ngx-smart-modal@{{ libVersion }}/bundles/ngx-smart-modal.umd.js- - - -
NgxSmartModalModule
(with .forRoot()
or .forChild()
depending if
- the module which you import the library into is the main module of your project or a nested module) and
- NgxSmartModalService
to your project NgModule
-{{ CODES?.MODULE_IMPORT }}- - -
ngx-smart-modal.scss
or ngx-smart-modal.css
in a global style file (e.g.
- styles.scss
or styles.css
in classic Angular projects or any other scss/css file it
- imports). Example with styles.scss:
-{{ CODES?.CSS_IMPORT }}- - -
{{ CODES?.MODAL_HTML }}-
NgxSmartModalService
. You can do absolutely what you
- want with it, anywhere in your app. For example, from a component :
-{{ CODES?.MODAL_COMP }}-
AppComponent
view you can open any modal with no need to be in the same view:
-{{ CODES?.INLINE_EXAMPLE }}- -
{{ CODES?.MODAL_CLASS_REF }}- - -
setModalData()
from the
- NgxSmartModalService
:
-{{ CODES?.MODAL_DATA }}-
getData()
modal property.
- To avoid any errors with unavailable data, you can use the hasData()
modal property (It's dynamic. If
- data comes after a certain time its value will automatically change to true
):
-{{ CODES?.MODAL_DATA_HTML }}diff --git a/src/app/doc/parts/start/start.component.scss b/src/app/doc/parts/start/start.component.scss deleted file mode 100644 index e69de29b..00000000 diff --git a/src/app/doc/parts/start/start.component.spec.ts b/src/app/doc/parts/start/start.component.spec.ts deleted file mode 100644 index 01270a2d..00000000 --- a/src/app/doc/parts/start/start.component.spec.ts +++ /dev/null @@ -1,25 +0,0 @@ -import { async, ComponentFixture, TestBed } from '@angular/core/testing'; - -import { StartComponent } from './start.component'; - -describe('StartComponent', () => { - let component: StartComponent; - let fixture: ComponentFixture
Some stuff...
- - -{{ myModal.getData() | json }}-
ngx-smart-modal
provides built-in SCSS variables that you can override easily like it (assuming you
- imported ngx-smart-modal.scss as explained above):
-{{ CODES?.SCSS_IMPORT }}-
{{ variable?.defaultValue }}
ngx-smart-modal
can understand several built-in classes to open differently with a sexy effect:
-customClass
option (see below) but you also can define your own
- class names with dedicated effect and pass them to customClass
!
-{{ class?.name }}
hideDelay
modal option (see below)'
- },
- {
- name: '$transition-timing-function',
- type: 'function',
- defaultValue: 'ease-in-out',
- description: 'Specifies the speed curve of the transition effect (available speed curves here)'
- },
- {
- name: '$opened-modal-body-overflow',
- type: 'overflow',
- defaultValue: 'hidden',
- description: 'Defines the page scroll lock behavior if a modal is opened'
- },
- ];
-
- public readonly SCSS_CLASS: DocClass[] = [
- {
- name: '',
- description: 'no class. The modal will show without any transition effect'
- },
- {
- name: '.nsm-dialog-animation-fade',
- description: 'default modal effect with a simple fade effect'
- },
- {
- name: '.nsm-dialog-animation-ltr',
- description: 'the modal comes with a left-to-right effect'
- },
- {
- name: '.nsm-dialog-animation-rtl',
- description: 'the modal comes with a right-to-left effect'
- },
- {
- name: '.nsm-dialog-animation-ttb',
- description: 'the modal comes with a top-to-bottom effect'
- },
- {
- name: '.nsm-dialog-animation-btt',
- description: 'the modal comes with a bottom-to-top effect'
- },
- {
- name: '.nsm-centered',
- description: 'the modal is centered vertically'
- },
- ];
- // tslint:enable:max-line-length
-
- constructor() { }
-
- ngOnInit() {
- window.scrollTo(0, 0);
- }
-
-}
diff --git a/src/assets/.gitkeep b/src/assets/.gitkeep
deleted file mode 100644
index e69de29b..00000000
diff --git a/src/assets/banner-full.jpg b/src/assets/banner-full.jpg
deleted file mode 100644
index 14d1dceec576f6f74d0c62a08795bb498768a0cb..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001
literal 40695
zcmeFZ1z1)~+c3Hwx*Jqby1P@lq~W1Uy1PqCQ5vK{kZuGCX;6?-KCtVtU<0rMfFsO0Y|QN zKuTF;=*Wg-^#o6wKt53%dCVgDY9g!>5b*!eS}Rc4Hn zt5*Qq1&u9L{?m ~-Ptqrk5d1%anzO4^H|yO-$Cfz>qN5iuEc zWKcM{T=1U3*cAXRYn{MPTCW> 4DT^N8(4kDKVW$U7+GK(R+m8ibht0PzQ3m&u*$KUTx4-}-shTz z&VS^?n)~kV^sNu~3eYS&EPF{tGdZ8B)TnfrIv(U8pkK!x5Sa7)*h**jtB3ZP;F$Ok zW!>m>dYt~VZk}i&RnpsYQ3W03f(zrqNE4TeS3m>Vi3LS0QvI_xZSgOTecd uQ=~(yW`ZEQ^VMQMq-p{NPPS@Sgz5*O{HQy9y#mjJV z@DdCW9VJIsboW#(yk_--T&kJ$RDt%?_J6PW$iESzZv)$It5k_V3#GJLW qDfJpga}C4!vS)C>)_yZ5 z*UzfF%Y3Zqx(uAr!LSQHIN$@Dg#ZBE*%h2ORXp6CJ>0=8Z2AUN-Q3kpot*5iG2|TG zEi4>89AE{oG%S|1cZKD#uj{JYc*8IxY}{dWV8uUZTDU5kI9O;%>u7+WAIyGKP<3^3 zvQ)Ql_i$D*wKW3^aRC{?32+4*029C+AP39=I$#}e1|b%J2jB_5VFAtgcRet7O;Ez# z-SMYv7^WUJ_U<;0*Tlhc)N5=>C0&Idb`gS+fMWq)|I!`r54x*3yW2Q9!e;#&Fic5j zcgJ7qfa;pM{?0(H+?0N2BwZaP|CMoc|5rxQ)ZXoPiL#Zu=kJWPgT2)63~14Rk(MyC zv-)Y0ANB&EvJ#S@G~m(-0HEgN +1MlU=sHK6;Hy|Ttm~*U4{y3 z4{PP$LBigg{IB3pH+%PMxT?3k81y$fnx}=CyOXPwiMt6*gKHsGtyJB9^$%DYh786q zu>nO3%O7O^jjaZ_a{DW`>Sp#o;Hs`>V!AL2*8#`O)yY}g+5&7`u&>%UTKzH~7OVgY z$|T|B?(XDZ@8oFpvkJzq5|{{ofMfoGLv5_A|5$+js{oYkH$H6Cz;FMM;pfT??pJ(0 zqG+$nuzoTHBhjFr;}G*21{ z^d7)wX$h9tgKuyx3I@neNKV?b-w@7gxE}cag##{rK}=ZB{|ULKc?#wMaEt+0e;MGv zz>5E}=<5GY*|jZDV6=aYLpU)|P4M|?H&R&YdIkMs+!DjG@Z#X>hxD*409&0SR9?eO zL7(9W{#k(D;-^=DVf-Qd97-? `4b<+>oO3G z2R_Kx89Avx@Itn7b@Fij69~!4)yB%^w}+Hghf!C#hJiFNO+4J4WGx&mTut09%s~L4 z;p6 DHVD$gA{_q~I_J5i%0GRRr3{i5k`tziMWMc2GVPf?sEG#n% zu%3mtyPVrS4JE~2&I;uh_)o~F)=sXz;`TOHzbu9QL-~8Zz@X;H<`$MF9@owj)ziY& z{V&k9eu4jtj&5ot>16NZ`Um6U{-7@*`?~ 5xwV@H_~F(*rlbo$5b3*?)Gj|LkP{*~$L1ll^BW``>JKVLRFD`Gf+T zK>)xIe83q8+(rW8;Fiw`Fa;NJ kr3c&5lg|^-Q8J`jm^=G)dY5y%xdQ3z~*h@%*MgW&Ia5S^>#Kf zv$Jp~H?;s)PQsMC&2K2lZOnx!wRx1-m7FCltZnZ3x>~6FDr=be+L;NMQ;Ld^-}M&s zc5rsEa5o|McCdGJ6Z96Qye2LPreR< +@Z59VJzANheneavoM*7BdcR z9&$bbRt{b+ZUF&i*oihj8#_N62Nw$muOK(OASWmJ&p-)sb2YaVgi6W$ kfd#l`C6YQ@GOARxfT&dJ8f$pT`qxcNA`n|QN0x>5b2AZ6iZ=4x}j>m`R#1b1{E z?!uIyq(4+}a8^?KP53XZ<=_C*>l)k5UD^|@{CBo>gDrsApcZaU9 kKXduN5#iW3#ZgZ~)QVz_#J|&C2=L+5hh zjDwTMjQ Y?hlDwJ zhVVZj!$#J1tK7431CJeie)fHJ3zwfMdmHlWo+oHx20OhGrgSs$v@oaq3AFhO>+_g$ zaC2JlnX>TmvGcQV^O&= W;s9w>UUbVD0So(-smYR==$x@;`O^yVtzzZNM7WsUMZu{+`P<<{up4ugaizg(ZKx zb&+50_n-J53;bh&e=P8i1^%(XKNk4^kp=#>F|=?57i?bOwhz3lL-F&nju>pm2@l}F z!@>XID+T!d1a^N1?stF(Q}77j8@z9V01Jpnh}QuL2^kp$85s!`6%7r%=kw )V>VCuny1~2M>w{{>X;I$n%Borh#*mp_rju?1r z2X^5H4~GJk1K*i|+?bM^kdIxQlZxxcO@YcbY9iiSH2e}gbhx0AKoh|uprK%+BV&R* zK%%&aNC0@_23cGUAG~ryfD;^7#Ysh2ON2u1{53}c>h8&IJY?$1B{@R E`z=flL=McwJ zqeQ?laS6`h1S!W=wGTn@*^L(^OkIZw5Fh4Nzop{Zi BX9GW~(n0wBOtoDuR;^5 )wwUu#u2+*43ky6iz0iAzPN6;8~97!FxjvgTbd2o!*1zrm}f{Q z PHyEG|6g2H^M?9?<0f_SuGIcj`{@ccxnLhA0cUgN(LmAv5f zdPNiKt*VdksOl$n6NmN5%>$S517&TE3$q7w3!8QktJ&wY&7~~?vP^zLB>3vuK5kpB zDWw(0jBhGTyy`{X&*&*Ux|M+)uk+T%jJ?#->}JNg8S^_CLRt$&N>}z$+O%FXT&Yr8 zJgLtprR>U{YM!*YiSiWO%Gy-87`ZN?@1jsjEmI>Bn6EEG{dck=$fq_xdA-IT5THhd zs(uC7O-$9ZeB7VXaEYz$*~F#_eAq<9rua>Nc51z9>mX(8u8hO&$Ss%ink) =r+kS*_Sthn*2;N$L#4N(fePAm29`AxE# z2P_xQUo`695yE$~VV#}8owR*k%Y8C^l=A+dd%8e~_I0;Fh2`Y%?0;t&7#zb^UE6kI z_RWn+mM3^cmlH3y7Z8(5j>kPd_Qvdd^~q9;Q+e^W^rdemvd8J|4`eO%OLYWZu_C=w zzNM@1_k2kVLbsTwj9B}~2)ne8USP%SpL|d57JmJ@e0OzY@+M#H>*0y`_eH@?q%83V z7#~tf8@pcb62B4*z -KIW!A_vHrt0! z^TE+)s^7fazEz$*QZa2AVcL12S#ezFMV9p@M_4%K=84Y9_QCvkz7P^(!`|GJy@Qj# zvkyFR;?Ru81V`sFmzW7-;I{8&@&Vts^Ff^>9nE91hi# zB*q(MyR7~x)km8BND+rxKBAMl)%W#NMHpvs2dhN7=k6n$I618E9u6dziJg)7o>-_r zeVE2 XbQFJ+jM)H8HruhrIZ#j Gh(|7xLXtr2@h)U1ra>{WatkYCXC7_rGCJPt6fCHl7UWjSI>1K1psJDQoNu zSRgr!JiuBz@H#@uY!i5`omV3&tKr|Nss7vzzU*%6MS5Xl*|Fz#$5VU0n1?IFsefY_ z2qOE5u*b)*b1|wn<+IN3H!bjI_An+r8mqKN&RDf)agfLo(rQ}p?(VkHa?)(yc^!Cd z5M*LMd#6utglj)lBN6r>yJH0Gd=(&Qo$)xq?dICt&C{7Cey?w5SWZOIzrQ(BusHdW zv;T9TQLIX95&U{J sr2M#?WfyspdSq>+VAm?} z(TLwSk~h4U%X*>3_KjGUkRv6b+jyn_Wm8kamfoiI@;Mpyb0^s|61` x4YP73}4YL=K zr#55s-xfS~TJ|}!^N}U-d!PVWyVcUV`NH$fqxZ#`eHFDk(pBTlLJu6aU7Bm!KHHaT z+R#5s+VbXA@8|R+s{RzR?8;f!y~(5=?Y=0<_!%RtBq`A#HiFh-UlKj>Lt|QojbgVt z|GV&TO%7?!#A>;l9R!N~y_B?cXnFi494M)&G cur($>k-EYedSkn!dK)m4ARJ~JX KO5%KPkIxg-a zFTwc-fBE}DBIyx}=WM#68VU*iNzqKrwPqPTT>mLMGGfMaa7nR{(mF;eM8yyrLq`ot zC5P8bX5=Ajc%trOfbMX?YsC=sSF-*MOlqLrm435jqk<%ItB$v{Az2InDB&ngiwk!a zDk|sA(gx>UH`M=zz+V &&fpLCOMlef2*J z@Jr=Aq!TwD2@>(H56x}IqQ|wgTr8{?&;?Bny}Ru0q4HDoFDP!dHpt@J*-~~7`p>9? z*pR6Axa!dDa+jjUn*5XTOX56Yx;eX|vIj|*CHs7Dav49Mq=o&*RKW@;ikkQk_Ww;y z@IMGj;r*R|{NEA%r`A6f_{ReOSl}NE{D0K~$lx~#6!4o11QECb$d07@@Aqyg#COqT z=m km4XyTEIYEGK4(*#D_a^WlV&I z=v!hr?PjIf@C{6cNDM|g>>$Y|$py*mo^r)8+iI<-#H}rxcO?*NDfLjZ!(6;N?0ZWZ z clpUS-G?mqwy}C{R`^b>v&8M2Yo|VrHt}p08`N!4CwU-gX%y zz5S}ZT|ZJg70a3WagLlq$6f9u5$-J$i?PNlpvJcRvcL4z=NeHuRGM{F@?&S}Y@rAu ziDHf%!^H43&Av{rz#xJq+YK&V#=`Jh+BK=ng!iD!Ju06PKAch?m@z)^(Jh&cRDX0w zfVa4}myrE^asSwMf$G{jB_xlxq1^I|sTO9Hcc;f*RK$uVme4C|yNCiD4#JF)E~ARy zzgktFr@NLBrQ6*uQ&V7K(g3P<>5o#su79=KSiaQ;xA}@(?UUXZ|Eo=n&w@eP2U-tk z-?vhYS#H{paiWWElWxmtFMC!h#0?gR1 zJme#>H7>n!&~5A{k4a zAZ{XF&NWjULqnu!1Srrmcz*{wKjk~)NTF&Wjb(9iCp~}3f~Xb)zFDww!IQ#b+QAwI z0=Ys%tcef~Q#G_a{qxhK_3#b&RYwMVD$$YfCvWB$EZM_)W)vi$1b_=uI7X*9gz~m@ z-d4{2;fLa;Xt!t?(@^B!${|s!K2*U;Waf;Z 5uVGpMxQiY+fIci )$4hoMA~ zs%g1>8pRuuxdX%0B?PZrSe(?%G*?G#R2gtIE!FIBq!FQ-_ZrS(irv^1TgFA|7d7c# z>Pw_37w{8KdTN9mMjuH_bLPp1gojTaYc|rS`H9RFGx`pu XjYJcBeylIZF(l}- zA-Lqg%W#p3FOhA1(fc4V0uRdU$17v|{An?sMnj!pG*%804e9s^n?4qy052k~R*?|V zL>*0vRu5+a=iVnq0tMe^rHMxqChF?S_b6^&P8Dg=*bRS4&OCcY!bXZWB&)toa|NK~ z%qMW?XGCkUyBI&1lOQgl8?x8vP=OZZBSb_npCNt_mVxe@@5eCFXre7F^t@D13Yb%% z%e(NpXI!Ew-{Natur7m>WQkCrLe}x5bWG2Zd1VceKt @!CM|ho&ng`r zn-H31($Spvqc6*NEh{Z(8MR)xXh&<7j?#6awj?Ni^G$k=NnlHOmP?Q4Y8OrPsYJ5g z#)miK*<;oPg(BBPvhRkG3YnTJEFT`R-CHVok*o1c4HYUy2p_(@pQ@qbfwGiD=%x@6 zPCsRMyRhQh%eU6|TobJOY0IU%Dlr%{HNtY#yOQYNM<+0>2Wxb>58--V_!HjR%uPFW zA7?yI`fvqIT`2ikh=0@#?EK npzA>rtf`bH1EhJ4w{s|yo? zHg&7%R}oTEyhpDl^RYXb0s~1~S;8KyRYzor4wK(?qG9@)E)sCNpUF{zJL;|<&fAJH za@PBI%R8vpm>%@?(rSgv8OqqLtdcS*gYB1(%i#eiGx5{!}p}d@2GGsFB zcsmK#b-&(%U3-PoVBp>R6*|hu$aTiF%;s&>hy(SK%r2318a(AP=UJRDmGs&OX#MDg zcbAGvSh=QnalUhQH!!^F9JsHc8*Z=aGpeo1$p>Y58gW=IHZUh3LmsO3=2LitL=r|3 zsRZ6DMYCHRi~_P*OWwKi)VeL{x220`65n)`coxL+$Yk{<#&78u(zsJd6c^h<3`0lz zYOVkZ$L!3aVTH>ZxHM{LPYX-~-)LT*45y$-*2F^zv=mG$j)-9$Mlq1yl1YHlUQyGR z{M^B_TcYHP8ZHCjq^6)j%T!8QRzZ8?1U%W8N&4G7Ahd9%Agu7Ve5aIl$vY0=GR{SA zpNJ&VG!IIN6opsMa&!sPAJHo2GCyH@fjII~?h5F%)5R0|GI@6Yj$oR=gE4{S^Ils^ z+v7MX;$y|Iq !sE{O&?KmSW1BjtuHmx z!|2F7N=y;c?t%f?Ci^Bsk<8fYfI|JeJs}gbH!50jYMLo*aCa@n9poQV@IUYNd=XDu zUWP_vt3}O)MZ?1&{hWn?$dko&zId3@v{Ff?_GGY47>LhMqebw2vG76p(5*e9md5aX z)T ZYEp>c1 z1?twPd$N@K6-ql&D#8xAKy3kZXw)L}`e!;QXIzerj=g8-h-Uf$< zxcBQI2`%(^!Cox&xCzcP6h=EFR?pacsRfKq5Ua%+SVF>u#vjw*d0MTS1>_ea=)9uQ zSgUq0Rvtxm`3kXE@410y+}TpzrCOBJ!M2Js5Q^LSc7D;xxxPVvmSu A+IlYhOYI#cK&nU$6T^$dU#0z5jfB!Tiwd_rNb6Vt>nWl zl{N{<{57*)sl2&;o>OgB!PKI#M>AHQ2z-_ f!Ei1Lui?Y~M1e-$0+H-tMx>|X!V2b_>%}Dai#^wi$?s1vNIx=v9WcHE9wI#L zdnV?T9-*IM!FQGn{xr$^)QDSLHW-hQgf9`}hb(8`65M+cu2GP2YwOcT48N)raf@Dh zPRkpZaRh9|r|4gL!|=KkQmt{+F@xO53KekBr5_q|w+!$Gx_u?ILq$Q0$ *F4kv0F510n#k{4Azwhyr18aeMk-_ znYBqol-0_k5mr+5#^4J5TLS)%-=EOpM_D)=F H?0W(qt||Kgg;Q%k-nEm~m%4-mK OZG zVQMV78kJQZH3AKd7(>~izre{_VQrYQ;n6KShL~b=sTB%EmM?7haS<4=papadsj1|B zU8_WIO(`Rmr6o~58<#sNc1pZ6fVMRjF8P_>H!hJbEJV|0tj^=%Hi<8eNls(ric{n+ zWK6{6g$`Kv9d|Os6Zq4brrL(6kd+LJih M|lG`^ZMa$KeIt z>TG1c5bO`cQaKjHmZI2rSeL# }Erh ze0x-5k?h2U_6i84eyYwNgz@YfT8MJrLset8XI58$ J3Pz)zx?F6*xo5Y=&waE*t9W7|?G3eyG nZZw+mtnT81Fqy z4D#a+cT=R0w|3V0HnFE?1a!M&iOk+2_m*c0hZF{k>h65azpu_OW`lc7CAHEpLSZWB zXtQ_xsreChNo7EPkJ^`)Eh+3+HoM~EbbF(u_b^3@Xm1qh76{%hHN-C32+E`}S)%5| z5c`@{-EFdsc;_^!YY8<3%~w(UL@cbtGaOe<@urhvE}E&bgviPZ5u5@FTp}Ary-rBC zBYgjjy*N2cF3csR#au5u g3F Jb}am!)z5hYXHXxsst9UnIf*W-jP*I}t+HED(eNpVt0R%nB>U ziXCugHHBDtIeXs;0&tEQFoZa;jT4^$STV+5KVpb6xyBYpfMi=xsrLv-6=EKvAS(eLw4Ew#Y`P$ybQ=2|nv z 9i9J6vY6zr^ir =TKL^{&Osqakq6Dw2YjKv+r8<99vlQlNr89B!X zKSw+i!_fRn&0#i|1VJ;S?^aUU?{!L2r@e=y*aS~Q!F*El8bvtkQj+W1+rw^l!j2BE zfCRkN)pnCcq}AlLxveW8IJnU(JuAMj*WB=8d^VsdE1_&@E&bB_8%K-g!F}yQiQQO+ z H$h-#G9dvB2S@I**exZ?zM#_vHk0 zAXc1MuKxZ5sD79us>NH0k*BqxaGw#(*@$`cJp;yPw`0f8E*U=PEbz>HZ+=sA33tqr zT!R=IvQ7Mapjt%IF$1+EH4BjAM>-;tBj;H*)AK=kl*(O3XLl5+!51*~k%G}1+pA4+ zB<;oQEmN}xW=SnUE6vb>x)*ldG+oaRXLb8k4I7AM>Eb>n?=a8Hgi#`52gz17uo4TG zNj^<(y&GlE(&(UCj&@@my`2G#WUlmpFjdc?hSLu-_BF)SiF_*HQ|nF({Nv)AB)0@I zby^$wXj`0S_(+GYfHGlQuOq8+mJ8iY1wA3eklpD?{mB%rNvwXg_ci6^Izz1)brp=# zGh&R+r;tRaGi8>Z*Ft+^M%3n5!lZhi-c4Q(f%Y}=y!2l5+&7A27J7-TGcV*Zy;L2z zsjioLIyU}vh-3clgy9u%>kWEh)bis=%Pr1YN=mKx`SR*iM-@R6u;iPoXOZ0l$bM+t zs?D)7LU;UWAok&%8MCTZe0Co!QkF^vvLn0Tboaw$61!x lF`+CB426yajb+|M8NVIHfOCjxobimYLVCyowwfQh`ba|@U70Gd5 z3)wOJ2;81Gc@C|7sIRVQwi5hC{Ji0NX@d!~#$ptDs;7P0OfT!0IZHt`BUIqvJ-6;I zeQ!)_K!<4Jod<=wWZ`Ca@qMoV4(A04^!NA3TQlL|& 7-bqWlXLyuiV|M%qruu zX!b%`4oi1vI!AOK;UjZCI@^j&v8nHF8uGdVtj%pTh{r^hb9ZCfW>eX2+00LE5kV&% z#W3e*4GLnpXcO0n>pb61Io7DxRarc*Z|(^kWo)*1J()|BUdP89Fg~^Qe&wx%-ta8T z>>Jx>7jg9)RcY|2-{3z8aG~j(sW%E(e*ci2JiGm|FPYbA@8TJ!mQ58OzMmxrqVviE zwOs!C_>pYC=7-b1G;B;$J6VgnkBk!g#aEtO0d*C={>n1tDg$XEM5G;O%dG-Ue%x?| zZ~Pe2*}FB`>oF~NJB-w|D(LqdV>4O>i^fkb*T2=Mv9AU;lmzg3)Fr9!mwcl#(JCRj zBq5=D`N8@#v(r;rPNx&;kHlr+b;LQy-7&8uBR`WOFxW$$1kwv`h2+xJo_DnjFB^*l z)p2)v?l?7j@Ua@C++lMM{G2}F{BcIFEWA7oUFha9TzluSGFRqg2Hm}Zn;&yt3CL0{ z8%Rg8WN^j$AUnP0ZRGT9{<1SOrFYKcHGTG>#r;;4u(k0AlS+H~l%%xfB0BUnqk5zg zp(>K3Jofxgj{ajVBg~st5Hr1)1*=$+Mk3F)kGhl1DBj)Ak`o5fTLYGTJsZ8t@-$QY zKdXu+U2>go`78n2fsAu|Re9qa!n7hvb;e7@?(!8%^$$!&O@_X%77S6WZr7k<){c66 z^EtGn4M>*Sy@}ktc(5NA^`*DwyTkm!iDmOQ#a>g4C$1CgThfsp9rSq|CZY^knZ%%L zdKsv$L3-Dyn_w&S?2Ha(-E-Nb c((ukrfLp>Ryz@yB!{V}s=9 zMrLfAPV@>+N1V1rCC7+Rt!C5vg1hmo`bEl{Cx;(4Q(U8KpKxq2E3QW~)cG$ut&k|` zH76zEmBiVzI969U7>^0R%G=_tHD?iSbeT6VUNdCeD^n?&*zc}bDX^vW-s`g(W$SOw z;b@&}-PcZx&I)<8Y2z~gYPgz6xA3Dql2lVk%Ev0Zarg#a&b^P5c oF zg2r6t1AqDP#0}NTzL_Vc7TKL%`wB>MoLmZxxdPH&^P1Tghv(LN^7Hp}FGQo+%YVcg zY|22Fv?E1XV9a3Zuxm+p$C^~0$tFkq?K9~{TztnR`xkuoDAdgTXeL(s`vZ=J%mb5= zT@}zpl3t^=fLHN6TP6MbyCqg5(BurC*Yly*o+Oh3&YR{^^9rD@Qu*wqn0_$?4U&xf zUhLU6X|?~T;=2KR`Gx-8krOdi`JvmBA~|IRE5f%@8lMe>yiNQcH?mACO*t*k9G{Hn z>VEjzj?eBvLTWA);A<-%=y=R%3%&2Fjg?zf+Bgcg-87L<#a~ahDqJ{R+(^c-mAtLZ z{D6k bw2mru#)WB+^H&aMV_3t;Zix zt=3apcPBNSX2mh;&3bxQt6-jTw_keUH@Jm&RPPE0BaqV8$HiW*h|)pvk8YEN)M=Yk z@)S63u8ujficP+s4rthLik-8nclB`5Gc0qgTc6M>+pbUO)zm9X+nQUPW+ECM+wPn+ zsCw2j+A&v0OVK_rA?q@TOtNrZG|ogY;~N|5sgAuC{*rO-Ycl=!im5xZ*_#C?RD$8( zm_dU(MpisBpV9F$;kfUeyq_KToebkrrRH3;K5=H4@7#-UYOrdD_sdQ@E30X|LTYxh zA_BRe$wTy6{YSv8Uj-adVw(g+VPeWWlG?{ $jxQrqjI0lx7$<8i|cZy3Ba+lza85;|GbO%Z!$%e22>`!7mM2=Iv7ys;qGx z6d1ytXJ0I%BbykJoN9Vv(Owt<=stvP9%x6{P*2LN%G5VQnX605TXX3(o{k@;n)xiZ z1~7XHBywovpT^>qtx(xfuYAs@kp<6eK9K5RjAGQ9&QD`M=Lmq-9AL&@c4iH=)Qil- zRe5}0^xSlWudiJrIXOl3)8+jrU28jP-?yAXzxaL3*os7MM>IDz?GY2Yl^5-&-m&LW zqY*^SGcDq$XiJ;P z7I%^srdJy_y6;X1l9A5Jwgo_H=HpCSR*F4|j@O6x1`>scv+Y}RCi+ell;3}BUrAm` zF_=;yo_e~E9M|erlcTboyl6lBkz%g~&a}iypPNMf>DmKSisf)GVCzw^^Nyy{@-jT4 zHo`(=-%=!jHR+5(?AhW#ZLR)&h8H&8$5>D8?u$k;Q7}-kY=;6Lz1r6Jyc%j=qX|5} z6r1_+Ne>Q56kM10fYbVzlX?naM1iJtY1tCX2;$dt(vTCg+^MqxR8Q2V0Lt^&CVzD$ zUq@fIKnA0uiHkt+=XUE_3oiR(3&n*?9*7U!JhMy>f08ha{Wbpiq<46Zq9kTX3>^ZS zi`62AUVM?FRZSYngFCGr?W=-z6wE`spK}+QhD2M8(MmM2dzT5uS=Y%tkw@@C_%{Pb z_*0H#uwIL kUWPK*Jlg5X)pu}z=sS{nTo`><5N-R6sF~Bo!PpP|@i(K |f_))~$Xc%b=bCJ(7dcT7oI06e&Cs%;`P&f6R z9CCv#%RS`cwTDEeq>CMWh=mlVk$G9(otLvRajXva=3n1mUC3ttW@v?#zw|ip+wA?L zMx+>}aEHl8|3VGD#fy>?pW}#lN&JZ=Y~70f#4A8+3B40;3R=aFA6(=?Qj@QYn`60V zeMWS7V(N@vPhZ;+ZGMO?hXQXIDy;fl;hb)Otn*FvgT3zxOY?PRw>R F z70Ssuy?2gFoDF18LdU0jR0Yj)xh<` #>|D3bSlR&Ghnwh&prK)-a3Wd z_R=tJjI+&Hq+vA-iuYL1Y=g0CJGNE}xn?@GNXlMyDWC#5d+;-BTe-`z%;!O)e3Uwx z%|V*LJ-`imH?KvK#2?Q9x|HW83*|p(IK!IyQq@Q zrx=LVNRlTPhD>>S5m!ZWqv8R5udGj0T`lC+2*DMQegzDRMx$3Qi7?Qli-#V_k&M^B z%AmiU9vzO1ylIi&2_rCHcl#i=t-w-J3^E@|l^j=N`@AZS=L`q+Efr;j^ZxEMB<91m zM0)nllg?b_yD!F+7#Wi_O0yMh-s@3P-%2QD)Yu t*Tbf%A*PT)EzDv2Y ztr0|#)>Ky1)WjDw(Nuxt8gjWp-*A1{Eq5kcCU>~$PRF0ATHzB|8oS22E86U4b7E74 z$C|-wsLi`hTI;1H7|EEdNu0N;4e0=X+W7um`^lYJR=4v4_*;z?+Ww`cJeV7dYxDH3 z^Hq0QgU=sIeI9tl@b#P2nPk*JQ8M+7ur7J!of%C@W`8Eni0UmRt}jO{(Dr+_lcV&w zDdk+Rn#SYx<3k5C>8dzNjSc9~pdq?5JU4l<)|WLp>s1++ZnHqMS4urgN3|-2)Z>)% z2VbTL`YVkV8x 1e3N{Y5WYB0u#|aGqe} zTULkj>7xzugYB75h;Drs8WyH(xaqOFC~4Dz(%{wg`w!e>_4pdvjzeN*+sU8}g-O*u z^BY8`DBM~0-&(&`!0`rtK*=PY&*mt;G$lI9Q}#aB{2=j=YEW~bMfG#_ TYRHpd; zuqyzCv_c(+Pr-x9%iFqk@J`0AR_i*qj^?e~RoY7LM1r_Pbq;VIH*8yw+?9UW?}BhQ zr&Q~35V!S?ny~Z(q3>*M7+#k&eNnD+5E4$oys$R4Ec;l_yV|HuN_}@uH)xLJo*ahV zglB}WvW>y(v(l@_q7-Z>dzM*Ed~>8pk$N#XTssSCL$w+{T-cf&%X)7z&n;Xq*F|)c z@Jmz#-NQK&uL1KFoKL%wc%83rMZme-K9s?&&97B1N#2;yFrK!xiS#Jx3n$L8M<%@U zNw13h^R{+{^RauMXH%hmfXHFkbO?p`=UUl_rSc6fPvU%`{GOZdEP3f8#j_=YV{Wg+ z=a4+opw_K)tkR(I?SntA$dZcSsI|@8HavRAMESk;>j~=o3*EF1)LUw80k0@!Dw;dS zGe4KZ?;41NGmzeP>Oq?;mu*ptY0Xj1tW1(md6TlK3cb?ivgE?QdNhfO#MfwrIUAtAr@PN=m@`mp|f8#0tX3G^4K?* z8<}wRr4P2J-w3_E)4$Z6iaf@EpV>vx*`bbcJ1WM7!upNfOU(t1#Fqh??oV&a6lwF8 ze0*-JwI(M^NJ@AZ?r-mmWxY&MtGtG4rx@hY%6W7Swbdx+V02q@uuHsGQG)q;>*4b< zNkvoLs=mxOT&LEU)t4H`^y>RpfDVIhNP4mFl0SVn-<`{TQMjflDc>QSm=XbE!)ELB zMY6m8#qulMj|T8J8CQzbx0`s~OM0F#)6Vax?8@kCT><--h+alb!nUw6HkJ9_HzIsm z7;x>hpgD8GwE|fA3;gofJu?WrcZlnp#&1vSD71LoV6{c!HZadS3K2}#uGM)wxa@zH zL&?4dF>K^Kh$B4D#(>9w_h+Q_7~M|3S&UxoBi@$pEDW&4;(hHmDQUm?D$LA)aA1sv zZjo~M&c+7dz?J__c>0iG??&@*n?1lQhJn-xZ(9D{#wKdkwuf>QSW~W7ePh*Xe`nfB zh<7hh%yQ}(7u8~VB9*67QI`K$1?7e1JvYT5xFAT- dTIUA8I}Bb@Pk1KK)qwEtyXC`@5Hq9jlppXHA|{tRZ}6X)JcpY98Mlqry!i z4b@uyNFXIC*OSi#ts^Cm_iNyo_9YCGRQlXpgYlKMyuGY9)gtV)_|6baz&>C zMT-2=De59FggKza1M~S~tlQE1x+SsCo3%09JJ6fnIK!u($?DbETVj_O@G{V&1o7St zQBqh@W>|9Wyg(au9L1#{D3z|X4{A4{qu5|%5tDw v?kQgM9o#7v~XvtK0V&I=hU$_n=$(0jCkuIcT7P0D@_ z>$L}tI-QB8n-U3hFM+s3+Bf*yuJhY;3_NS>(%+Slol2#uvK=@Mgd1{I6r|dS(j3Qv z_nbuw%xvhafx7q13Jl$nS$7E<@qF!C(R~wOs=u8y0J^7|+x n%(n%!|Qs-p45Y%a~{ z 1R^yh)!l;gM;cX*Xw2DzGvd9d;Q^wk_KzyrFO& zKbIpkU6ppgFx@IARdWFu3|)D&cA T60zq!ngGsiZ^0QTT`Kol5m dH9lFmSK#8~nVZOU-lH$4k^_ z;&?34KC#)wGpWT17Kg>Ni5|f+u0nbW%X)$?$oSb~Rk))UsHfEj(KK^Y%G>Ny sE))@bELcH+Q*^ Po<<0`p0haUOBVsW`8z2Gka?{de zl%cpxO~KA)`52MfYKKe)1{}qy2R3D&4Upv 2MXY>PE~0q zG8|q3y9h(sdejyE3%1QCu`Jtkc$`;2Kgx#MQxc6_hUOoW`qb1N*%Os=L#ML*fGDTf1;#kC%MrRzTg$UUzEYt{}np&AbL~rh=6P~ zEyOS93%(2PspsdTdAyFT@TSEE5mLPZD^*TYp$|%&w`b(x)%WfyBhTUp@#Wgk_K})H zy7|d+u!OKE-(4109G9T9UFh_B1@v8`UAyL&O z+w44XEEYq35cLpg&Tgp2mZ;(mZ^htYkozap&N_0<4>#5vLb>tF?4w+SHSREu7Bul_ z-^B@0NWmVJa46nD+k`$EkIIpk%_1-AzQ@(owrQ{L#EF-YrJ8Ker3>&fbBReE$Nr@|*)v@VVbOEM%ETU?8?iacc!lx3 zi&Szv_JO0Mi7a}NA9eYUDzz57WR;6-J3q~@CyzPX#|X>PIA7!j>m^h-`^tKf13rD9 zBbvQO)H)JhTgyndwexr3+pl}Bbrf*O=(}v_N#kRvjcIR*bt}%cyRlqsH JXa&0xt` zA>$Ak`BZz&(y_8i23#ej$;LXWJg-{hU5v}eFUEN9Z3~n@BxwUG +LB %PQi)HXVKzb6#y?4spU2 z@L@|0sER=$WnB*YL`+52gw*ByiThl0st;58hM*C%T8Q!Y-SLX>2n^AW!q&>~N7xOB zeZS `*kXYgKzTi@vi`!GjaVvx{9?b zfw~7LS~>RLc1oP9Tx@lnwjb#3ttmPrOn7iRJQZ|g`@aINGf~Wm!-Er_e82gDWh;!@ zi?%2&c$1b2BkBss`>YAU!7g`cgSw9oYLI~QmK#7cZK%FpAbLB#zaqc<{v!*W-kO%6 z&uJ*YkLeo6%qfhG4rLHADz#nS(y>^qRx1^X#bU8o^8Wx#IoY=?N+1`%cf2{=wRht| zEU`xH@jh81JV1ab7Uc#*7Dt7=8tibDaoWH@bviaDOOeD=Fyk^X@^z``wF(7_#bU8o ztX3-(ip4p@C8;0PIPKFA@f9>6f_DkU+ObCY+>B`-txWQX^MvWeJVC}*4w**+!1fS( zP_r?kh=442j+ZqpxfyB^!zJ)|h_S`oVYY;(iF5LQ4i!22k>mdWQ{4~`ryUJIUJ^Q< zlx}6BG_w;yx1YKt)SqTwPl#4zE?SdFa}Qgu%KoJt`BE}@R+}Lhf#+my@ZZ(9j!|Lz zQzWu!P^T)iRIe=x!BD#Xj2 1^)nVb5B%Hq!iph_`l_c@WEGxZ}^AsFYNyGzXJaN`QP^BKap HaI zW`uQJ-8pH8r$}0ldvDQ#W?D@`r94OAu>SyX%>UW|2mu2E20sA*0B`}rz{A9Yo=Oiw z{{RL43;Y)Msc(3WXbnfqt1iH|tKnd&F2v0Jik>33a8$?S-YJiWcPhK1&bMjum8#t= znnAonY8WOTFRU#mFA!|Bil$WXYE~;1ieOWCES@R+K^Y@6;8kPkSn@gY?OtBh5U7$TxsPVaUnT;IV#9C(qzIpjA#4c^D=s z({i)=7CwbeOnnO;!N}>kG=#~3bnKXf;X0_~bji~v`KUay g_y@sc>GJS`WW_j4Q6*CZ6NJTAlDw7hG?ZhKrz6La%A%sG zV2M5h1z(xkys+>`mRyX237I+x`3Hi?50h^Os}4s`^6s57ZcI6FRQamuyaDBxC_r*z zflR64KZq@fkAbb$D-;9Zg2iIBI(JyAp951rH;6V*ANCre4jv&Ysk}VN$IDe|1FbiR zRx4IV%b(?4X$i`25X@?vZ+0!<-z8N_cCLRBTNBIFnqCe*l|{Mb=TCFX&Eh(tV!Pd+ zO2@Hd*s6TI>jgpn;=lje00;pA0R}$+{{YMX0PHKS8sYE$r?JP{)hnuT*9~v>jio;S z03SA_&$&xt3>b(mOPwLaG|Na&!c&ecgrpAIoj(pfTK0Q&j!IW<#aQ*^1r5C^YEw~Y zPTM+9lSbds{)8&(@{cPnO@39;)prvX*3bgK Kp7E+X@BXUWg?bEoALagJd znM;nCjpPar{E&yir-vD)X#CalRC*k!C*ZAGkCA;~Gl_UUDD$2)TNTkIPN4_?0Ee+h zQW#{8!zDp|;aZIS#~OF2mzDxaxn(YT+d)HeTZE8^$pr7Z6nwfxzQbsRWPso8aG*zO zGfAfkA*7^eR0B@`0AOuea3_DhchO3RGE^v1cLaHk+H~d}FtSUW?Mb~ujv!nDkKqY% z3r> xD?f2|e^aLBEtLAck~ zP}3JhHCh$KnA!C!ihDrjO3wnYcF@TBb&@fBh~Fx15VvY YsPHs_Tc^8eVDC3&L%7sOQ6p82~vhbb<*?XpB@BT~#&}0C7=DK_XT^i^o<2(JNH2 ziQ&a9Hr5i76rW#t9EzVVlu%)>MH>^#@XHTl_Rp7dGSEfCJi8$ePIK{*91u|%v%jF- z4L%Z;$6P7h`Uj)88XoHEW-ps#@N$azX>ZG*2_;YpeK}i%#xau=z+~dw`#>P3p8AN z9 B?PcT$u|QS_8aB `Ie(n(_qu!Cz{iY<5tM_TLp$IaP2mz zsN`ve8x#mguKrSLNvR~0U(svXqg}!5{^p(f!*rHA_THi5g%>Qg9kQ*zHK;?G7dYIT zrd(i(l95*sDe#gxf^RP{&r)$DH5)R7*D4b!D+DoeWdnn9D0#wmL%hiziA{dcMO~em z#XhP%Gv~NoZ<8UpnMRIC@#M-OR_kkpJP?sd4_9tpO7J?cU^ZS!5@RIF$!|eCtGHa> z0dl0P$Vdr5{1hcAucKXWx$oBvaIcfuRzaL(*33@Gmr%jFU1YZvlIxY^LR8@#%1{J= zE5P?^zwyHipyIEUqtm{>3t!ic8~m!z>g)RP!+(`o{arDQ;hj>(GF*aE7UWwr3zH7X zaV;dR(uTshmB^4(XgC9|8}^T8nxNZ8ybodDho4yIS@0MxC#IRim)w_PkLa=+bwPJ) zJt@jLhwzA_@JQ}#>dlkm^AU2f
g$=tkT377@m~{&Hpe?wK zt@-aX4GXJ6Xv+xW={(^}Y1@jm)IY5re2-tdNVv;~k4bP6m0c$MZOT$Ae{gMSjNa4% zOB-_N?swzc!_Vv*ifNb`R&kHxGo-X1VjbG)5)-RwN+}K{54wdEl>#aSDmDFXVPDJk z@89+PZsA|c_V3^Ig~G&hn+8#EhnI5egDxjAIQZ0Uz` zk#fIJ3k nqJhuHP(PHTXF2fM^dml0r} zf|Z)IzVt0!`pWtnlC8#XojQ`_>kL^NI*W7fDY;QdBmV$%m{bVt@c`g8!-r?u2Lb6N zsb$NKb8}tR=@Gi~xf0lBLy05Ft1f$G#HHr sL!?oJJQfDFY zWv)3|U2UMlqEtw}lYwPPDJS5oZrx)YILM^SiDk +8 zhZLOxGQ7|ICf#4+H1q1eOEXS1pp$Mp{{WzB&6nZ#oBh`1b-tp|^B0FAJjh|#l3yhu zsLd!S7DoKq=~C39rK=CIl`TY)O0Db@Qg=RD>Y5wy(FE*!HH>EwN2p=lP?E&!oj+>u zFKagYm_45tC?-#mzTS;ZNc#=;_IPV?Ph{=4v)`^B&gWZu2W`h@tF8XSkFEb;H=( zTl*Y6jvmI_p6zh hY<)bDZDIBlDuCUVDz8#fq5A1AhSm2C z4|~n_7%${D@4sW6tbPYUdS1p~iOaQk*DKJ1tCQa-7nFrCv?fy?8dBdO281f7am&4e zCC{Mo)oqn |wv zyX$X%`}$VY98Gv`YhNd~!(A})L$& %p#YX z2bdvd**K{@)D@xarn*u2oniUDKiFUy{BRR96u++2{DhB5F|Q0Ol#(~u`0dlru9)V^ zaJ>FSjlh*X!fH&Q%26ZSbt@jo?i_XARql6j*9vQa?Ay0}ZKG4e?(C`6If34X$ZJl` zZ@!2Jn}OSXyY{ZU+NXaFd3*J?iKyiQwW#6e;lE~wFQf^jMLRh8bwkIy$=|lPQ`jUY zjW(~j$6N2;?RmKCZ4tol+1 wj}|?`z>`RPpjt-`5Vx_WS%bxgO}(!W!d5 z{oFhCL7++HuieMDUH<@gyX m9L-4$Mm1|gwNmj-%?IM^hXG< zDyQC)9Tfinsg9sLpJRglLv8tvcA!DedV!B(6Ru2`V8XjjW;4#Rm2wvl+Q?ByF`zsv zQN(HuuG!X1K5fS4`*GkzYV8!Q*PT#GTS(@qQi-4x-0jC$H|LN0E_SSzE|p}=;rZ>u z3$izlWDoNMFto;wrxVVG-6$(;DG6UHxogcsN^AQ607vwmXY+oqmoB??U5w8Zk!tm8 zZG+d{xjF0JGE|q)w_?Zef?Em(g!6N76xU2YBene3a@DwX13Ix`rtX(MPHyovh>DPw zfafit)g-7Or~|bHK+_SJ>s}b^@3@9zwl48SR;2`lgU>-)({oDqYY|ZG%;NxdBht4{ zG~2vur5~BrADiR-hgO?YUL)3+5pNMy#HDumjL7C5WTgAL#vv`jvy5HuHk6aON)a(q z5I^L|8+#;EZFM)M{Y|-g=SpT~QgIAA`s7&g+Ok~`d`MB9klScdktG12mq{Rms-Sc0 zg*EkagNR;DqAqjPyM2c#XfYk{TDQmrPBT}VSw(5^k;< u zN(uq&lc%3pH#*5K);(fhPV;*_HdAp!W1O)XY%d9HxUsTpKu+AlR_yN24eLyWJpH#M z$7LG7Y`MfCG9o%?nv~QjDxeBU2W|oGmUVLetb?YVU97H&WwIkijBWGVSI608I~}&d z$tnT0IaPkw_{syA@IKeStd-mgAXTI4>(V}ZMc!)><2&@G{;Kn~+=rWS#4yD{C88<< zNd2?Xr^4^-) 4zMvB)r;W*-etq&-wsA)}Hp>&Qd!r2xW z54n$F*5)1cHe57l$)7a~Q6`3pQqUGb2~Bkd&(?S|uaRC)jQ%l}z+xnsF@lI%q0flg z2|FK4;}KpUYX1P%E}l(WO-aKp*Si#lTSA_PG89+IZPr#6pAm=JC|XD&sXJ=XaJqFJ zSBq>JQKVfhYqZ*%OsMU+mAf3Rn21_@RDznIgI?WP@(V @XZ zw%b_oOj~pBw0v0cTX0dv(sod;g$9w+-jU_0#^B fT3czAJnKpiMvz%$C~Y1q4x`|t0z$RaoQlgU)b92S zUhi?VOXNeI45+Z(d6zjH3QD YVC;iTBGjLz+r-j^M6(`&S2*12!^4f6B3;k5*-lyeQ~+BJaNI<0BUSn1@s?xQJs z;futD6*2u) xU4i); ePFviah<4qJ+BqFYZRbu^v8uH1C( z{{RS?ljb&P(pMfu($k9Drp809r3+JPTTn;@C1BIaG>k{<8IH8%6v*{krbiM3mfNkd z&&QW <>qc59v}-O6-90t~MbSFXut#OIYA)sI056a)_@x>=Ou zQ%%PGkm9zhmF9VEw!CRlVm9Nhax|176;URMNCUg{oTYaHea(GfZps|bExS@nhjaWQ zWx> +l`v6AB5LR~>asZm0lRTWCmky15o zx)w5PimlSvl$aAP>RfkJ%Ynd$P=-=el2R%;w;OQQ3_sr=_Eh7n4*7n$#IsrLn3bLD zmDY2}j~Rx97Am(LaD=5hjnsAhcHtk(kbiyD$XGUgkLD8X?FXksv)p4%TTQ84p=(1+ zSpchQk*=72M{D`6<*a`3pGCT&>5oNRI1}v?l@V%;>cfSnD3=njm5yPxK_`9m%Z|5| z%xSd( G8SX^ch8fHFU8MYfuXq2YgI03zTHrGl&Gps*1 zvGyHoj^O4>u#4)5@}di>AAD;oj8CH%Ih)Eq%0PgxWb6L`^be Xs$ zuxGN&vl?4Oka?R?+yXh0RDx)#>mlgRRaNTUZRoqHwB;ypj%%C*(J*eTk^x#>Z -Xv-{(j4oK3ZIP)sFJ}Bd? zw&IFe3$E!!2Clel$Az}}9Z9)ic^Y|=?Y8Y7(vKkuN2C%}=s8X)C$s`ApH{0)wpFL= zQ;}Vy;F;_0HsVoihXt@F-uy(44>3{-ehKjuKXc~Bx_62&8@6NdgKo+oCE1c!=}46M z99(tEsPDGP9*7#)k1qRa^9K`#< w Rp!s<+uXUhW!$E z01orS>#J9YX;SWeH^=SSD{UikVJ6_*TZKUEZMV|k
;DDy1A zP!cWbQQn|3ve^BGu}+RypHr6Xc5Dnu4mVPUq{(zkyGbB$EjD>c{{Yn<8pGJPB}unO zla)1ZN{vX4+zIGpA2I+M$TG{*!abuJw@SI(p8QrKGPj%}y|h86ezW_AOU+BYw*LT> zUmq*wOB1IBvu Qmp0qTS&?P=Na*5yppx9GgKDjaqS-9oa=`4e}<#yRIX&>{ok)QYO z<-XPb05XBw$5=mBqC#puLkjYoa`8C{0dnF@Vd)Gd)A&V~V~~P(0csWDL|E=GnGSUN z`!2-+OQ|9P(A3E7)bS1Y>Oy;xkTrmGdK8{tTUzqGov=kb80B%T=p-8M;dRP>u{!#^ zXMP*8E*(R$KK@MSG3JkSF8cg2#Bv`~eE<&jiSlcw`SEl)a=Kek#zKI1MamiVX`w^1 zuC}5)glh!+#&72-n&_A2MUVK4f286M0tokY^@6auv(2{wYHaPaY4hWsaITv3eTED9 z6}RR&+Q;qv3h66Zt}80l>lZ8Us5^3XGt0_Cm{J*#$Al8!Ax%N&<}{}%)rJ+z>h#gJ zOSr~n;vTX}gwT%T$xF&|Qs${FfZ4AyhojtegZF(g;r^+etY4?OlTshYvP?e6%>MvX zbg>~m99Yk`w%h>nlsMW{DhM>81Z)2F&Hn(EqyGTd^>NH_m0u>`ZWiNeGA|QRB@D(} zt-Q3fhS_8Sr8J$*cx$E~k=p)ixoZ$(pnWcDIka4&N?t*9^+zr)u_2|l8fU<6L~__E zQCB?(R}Hy$h}*wcX5=Anw%XZx!74jz3S9yg@~3jP4+SY-2aOJ}#mHzeA$f#S>mgkH zi&e6BGI^*gL$ztHlzwMees7QV9c`HExe%Nt_JV8L rD~3vttNzl zQa3^=^&-!4IjNms$-1#+nFZas(azeuMx98nD~%`=tv!kad3Du66$){7=I!?f5}nV5 z7ULbqPnjqLpEj_|)CUsuE4_}}G8@Stg*Nn7mXlFY!0P>wTK=@%M#L@mc}kHF7Pbq2 zsX#)4KxK~+g)5X(@QK&fZwJk~iG1oST{X-i*(^6}>f2O+${Bl|Ks1CUJ|O_80j!g# zxm*4nvmcGl+)$vGWyx}hj}eOQTzSG1+fCF(2CaWzYqF$VdVzJhyLjrSO;Uh{+rp AHU+MOnOwksoAz+l8E5M+R;0?8EiXccm}D)jb8e3`uN7){)Y(!(ke3pX zKsKjtoa$y8L?^FuBp~N_l9dbAr81(+s*@4cycd*}iYTd|quQ-vxqX8;a&@xhEynRo z(%KhpxW$zn0n)?mg)9PFs)0(1RuV#jcxyJ!Z>Vj&kvMiyY0114cx^d4-wF1X`$_yC z7;?EmuqvS8uA$;rc0`LtSJPXSzULhN=^e>&5VRWCid{PE4iB41D73=0-fgp+TDem7 z!yoZw+ZLK}^_IfWgWl>!`s#0AGJs`C$0JEob6l-edcQ5l @P?2jeOrN%0` z+Z726vjQ7x@LB#6>ucum9dT>gp9i~FUbgho)ju0$c`R(M(`vZ*J~K1Wwx5!P78Im% zy!uvX4#`;uS>|VDa6M?sdTn&N+uW!>6)M!@sY$2dCz^zJgQ-|PH+r?$XF#&McwF1E z9&$U4w&M(~05FxPuCFBUrrM8%<|ZxGQlQ4U+wS(jwxiC7weq-@RPqAQq%8_;)jp2O zr!O2S{*2pEZ^E(&E!|jgOYvpMktGTBh0S?hlHUtKZO#EDJgEsvQjyei{_9>ph`p$P znRjpcQ1#QNIx%)#t-AwPMC3s?*X-URr5NRk_$T9O;jWe8zkaZ5<^KREaoYu(A+^uG zHT24CgsLQIZ94i(Dxg>`rBzAeu9kOwE0a%d-u9Pqg%`%Y^q(obWERqqRhZ05QJ&cD z20Q9m9i<8L>5hpTi26`6kE8ChUyS-Pnq7kHUxHjAkJyTNHE5ACF^_)ghFNCF?y6E~ z=Om}f;WSNnCMyk*+*GY~!qC#bGU 9Qa#!OD{!6ll=Y;z{D46{iJz!PZru-jgQdhP{w65-doC34P3d+Ts{P zZ1a$Sx0!8fO-L1UiPWB*TY7Vn*sk!V!nk6y k1Z&2&d<{{Z$yk8o-~%$po_!j$7) z&2arD_1^(>7Fxa>mOKVd)eKx(x-dZh03zzCuRqvezmVI0W1Xb_w|dZa_6ky(r3FXb zQRnT}4f*5#$(^p7{%cwP0En~f^uzKyU(I(d0(-r`C%ApBB=GL@YZCAJXCHqdw@xST z>!lx=)*qYW{fAOeT=3*%34vvZI29^v<`SXht7%<)n!#i(9FF9&?$@;fC`x5cbuAJ* z`5RBQ?18VYyopfcMPhGI b +evES22wt*-&dP}TWm^UZ84N(LcW(Pi2>O0 zs6acUjjKoYlL~BR<-?ZJnUfXdg|_Q!1uH_(s-;O#BoId9W2yZBxiLCdMLMMW_r8kX zJSSgj(>cODX3qP`N|J=BMyV=0tC2+2(@pmB?WN X2*nHU|;!K1gO}iRG zsG^qNX=Oaa;H#BXJhV4#GU0_g8pkGD=DT3Yt ^ z)q|-vJ2c7AI)iEOuS$g#$pIG|M=M2YODI<_i5YDT`0^cNR@u;(7a_{wNy)M%R+1bN zZjJM@($YsTEyoQuQ%#6E>CCB?E1XEJF@Fk^A{2&NNmZ&)O R^iw;au!lk$rmda?UPV#fsltA8^$E|m+lvuBKyKS;0YrW<4I;W+|ZIGD{ ztzIt|9Oh91f~Qs->!Y1NkB>^Q-cb`Lhh>iX)g~Rq9vU55L2*aIeJKQ|v1YZ`Te@v| zw%j9K`gMto{)gJH-owozVSC7fdLj-e!&Bt$rwxC*UR;ONS4pU=lCB6#|I$L3sKH3tN+e(xI z5&+>%bv?U{x?Q=)GS(D^<;Qk8QhrU3x>D*=NC&iP<<|a+TISwucX^`ud9ztkqjR%e zP_XLeMP 3F)WW#mkh)1I4bw&C%9GKz6wJgMXbO2nDBTjfuA z8MH+>#8w=AVIHG4swinHRX3$+sklY~h&1J{ebxKA+_~eo2~txgLrpTWm8DH2CzX`# z%irIqxp!5Xy5rVY0vVf^ Igc}ouCExkPA!t7t&2-I zZW9tKPDzlLZXmMcg?LCR@etRF`j^Y_g?n|MWIb2G&EFNrAjGy=trwWm7;VY&)Lm1k zN`qy73oQY@!^F`8qL}Hf)bQTmY7g$T;CnR8hOC#FHf#qjdIYI#L6YiaWAl_+Qj)Yb zq$rqAh0?ne_l;mut#+x`IR5}a+8#VekG_rWGZng 6>^CCQJds>^|Rqd zL#a`H#Q0>Cif&S#Cs8LMr&w-d4ah?;r;*ep)TLl88}g_HZaX#856LZmHQcp$%QAa| zcC33JgzWph&A_E0nCzsfYoY>_ssXS_Dm{Se^#1@&G8Zo=8*!9gqDhA)3+#z0TA5#m zCAP|vzYSukuIV7}tV_S?oPV3AYo!PM&anL7A63 r!F1 zA;d`?&OIpd`A~I%;O!wT{S>g Ap`TfSqR!n `n9!cj`>KC$wXU0aF>5&YV6#m$ DzK{OmRM&5ew-fQRAOexzA)!W}|xoYKLzd((5vtDAm3hQi^+FfEq zcal=$ZXrOVr9k&;=M$#5Ww#P$^6PJ1OeCwGLfT17UL%evYatxRl{KIwkSb2GDsE0^ zA8++^`guDJx>Na`V*A$k`X0u~-$<6n{{S+0Sf_P _Iz_(W3PeU+jNxr< zMtl^h4py}ksT4Z?(2f59NvD4|Yx_bs{U)9K-Ke&F{{X7Ce8$%bN3Fzxb-zq~w&Zwg zYsE 30Wx7mugGM3w0NC >+Wye3 z{{Ts6e>Z8X4t>?zMp k62QbAn>YIf_Q42Dckme_qA&Jz~HEPjLWA8 zN76ST)iPYQu;+}#=88Qc<-PAtyPpk8KY$acSBWn)&U20it-1BB1Ol0fN24jU4g4ud zNm>myJjmRjoo&ar*dE #CQCgL>FA+fq}WZBx6d)`<$mhw00W9!8~)Ztqr!&5BSeVO8H*L9gtpslq#-Cm zM+ATX1F&fQpmsZH=(1Zxh|& g#tkxy0`UzrV!no(k!}C;=g1H zA~ A3Rdd<1>>B2qm6Gt^!8A+pq#zF(ESC2zywZ; |AE?e4pH9(6Vg>qf5DdpuJidD}8 z54Nef_t}I`%(5_wE`7mC30j9Yq#A5|TS@#~{t}c=AG9Uw49smT-toMGGNRor&x)l; zJB1|iO44YgsBV=2p+Yp~L67>zZP4txT3LM$sEG4h+@dtK07P4Z2nWJ;oUVbeQhA$1 ze7^y^rhGC(S37IeYHhwnDp;1mJk6*c2Xv@zl@YDC`@EI?4e2r*LlNUPr({TRK?p-= z9K}jfsFZ*=B#})ItM}D)xtGa#8;ZAHGYeooEx;P3*tW&&P{2)mX+)(wwd6dtUX9-M z>i5p5-{T>>{q3+zFqqjw-vpXbq@RYm0^+Dh0VznWcy@n${h?`JZ&yrXDzwGF Io@qB2aZq{G#E9zjZZT6$ z_Aa1rLVhz)@vf(Ozf5zbkimLWoVHo6*OrXRcl_N(hONFwa#o|J-fcm~ok&}5B=aRn zBA|krgRb-4uJ5qheQ?n<;az&>f0DHt;`?QGyjmS3-KNw0OjM9UPvfkm1GPg^aGsml zT)}!h9rQDMbxy4?xeDqPcb<@aVPtM1un(0gr#6<|iIaTHu5Be59(6IaiIPG{J_{)Y zLOTF}Lun?Y0<|oSQoDD1+VlOP`>Rhr+Z8rry;FSSEEO60E+)+7asuJ+q;jH6w|s z^jtsV0NYC#Jjc49(^zDvK!S%aFcQc$A$G?UCPbk4MS@a48Cp%Rt9T{T4ZAb(b1oKo zT;YZOGm)3!N@RIC7w6Ms80ywHB13?3+vZG7zFkjet4;77ulPDdh;mw%!o^baD@%wY z_DLjt{dW6ckAGF{?bEMi+5SC^hDS2fak<5gx_J<{0*|yb`&JvJ%c$2T)A3B$;;FcW zeao9Oz-SLDIsDpw#r1#b+>AFKkh0U4+iE>w F~ z&2UPej6st6*m>ZtWAcT`>PVB^QjS6T`EI69#VLd zx!+YhKG8HMZBQLkk7u>rrGLZ@omnzT3jYA=Z$=GHNd0Wa3vv_fFHWx+zU0_zt0$5= zWHoe%kbeX Y%*-!cm6-OUPWhu+tR6YD6_S?(9Sjj#EjpMObC zS@nxzLm#?)b?)SS$r4-BQZpW_-*46QpJLYnCAz2lqsC&r%4$5wT{(@A-6I}kT{1^p zyE$I}01iTnAo-gbW*jK(LyH+95u-4Kw%ch>!3aV?NCU6|O;By!+wa$hX1Cv4ZT63? MHNw7s{KGT<+0BFN<^TWy diff --git a/src/assets/banner.jpg b/src/assets/banner.jpg deleted file mode 100644 index 1d6a31a2a3b1d91acbda32ef0670ca8d9c272d74..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 27578 zcmeFZ2T)UQw=WziA|N2rMTiPW6A`2fL{LCLKtOtligW>yUZW_zNmp8wj+996gx-5E z(tA%RA&|n||M#5le&>D9cW1tP=ggfsGygq#Hj~L_XRr0FXFY5E)^Fuv>S7l31w=|h z^4AME$bc956>@SiGIA;kipy87QeC}DO+`&jLwo%i4J|z_HT5;-YxE3^OiWBy=~!5q z8CkD0GBI8v1+FI}rz9t*WTc^{Vf^1dE}B5}S1!p=d?dYe2Sh@DiIo1*Mcbte5a<&5 zrGFfte?Kmf0MB=s;tC}d^)(R5B~nrnGSa`E7P!(6_zXlwPk#Njh{9zC?bj4{oEb$w z#r(X&rC8F;q%(}-e)#4?03{VO3oF|Vp1Zt!`~qU)5|UEVGEbf=DXTnFRnvW`r*B|r zWNh))(#qP#*3QM%&E3P(%lq?}z@Xre(6HFJ_=LoyZ{L$MGPAOCa`W tA= zdO#i$GBQ#!iofK!MB)JqQhGA-+ai~*D`-=^c4oLE`soUzV$9EyW=gJyIw+<$ABL%z zxy6=v(0_^a4~hQ&2^8>uB+>sA=zq#{F$20vdI^{?QhE>sMBvH@6U6>Le~=Nz2l{*b zt%JX9;BOoF+Xnu&fxm6wZyWeu+rYpi{z*30M74TcJW_E|eY9xObqv2Je(3?>a+Sd`&Mv0m)cMtBYz5mO`}}ot~i@Da<3}U|Cl=e>IlC^jI#^E5ZO= zNwFsw`r1C4#D?K83)Yq)lskl l8LQDry_U*;i8oBc+v&38M^%w_D+1m+u!Z&0WB z>jN7G-^{T)%i`@PD>u7p-ST6i5eKqv?l5vO8A4Isrr=sjENsoM9l!dDNH3tj zpuN;5pHSkGcLA!QhHWXX7h=Lx^mzA9Q38^)7a+ R3VBxK#`k>?PvH(z+j~OtFkNsN z%mix|z%#&Vj_FwJlb<)dgtpTxlVSxVcT8`>OP%&aP+SDArG=;kvyzZ~6G3%M#Ba{Z z$wwKG$K&d}-6h_y(A%PWI`<)G63u%8D$CJ-{3C~<>Hf^X#D(}OU`+~@e)?LXuI@az zZM;1{SLj$WSD#DxgG61{hQ7w%CS=HxqC0x~QSgvk^|eZK5@`~z>w*cJDeIlMCxQp& z%CB3`f=s}+`YgdmD)Z6vm1k4cdS8yUbVqD5!p>S>{jZJe?*;hZLN{Mi4O%Wh6|lXc zU*?`)@b|G2R%7+5E|OEl6@Jpb-Pd)S1134%-rSGNc(w9X4aa7#7t&vVyD2lPKR;|X z`!ID}+}#_#Cy9ISskM0LkIl^c=(hQXR4SNvqI*GoG0oLq{T9qVuS0e}C!b}ug3C5K z24|sqm1vc=2FI0Fa|Wv;p;yV*;kUOi_Rp7;MR3#7a{hLh!D$N&)kq^dyA!jo;xk{B z6%~k$x{+3zeQuZ6AY> 60T?U-(lhxq^wu?Ltf_Y=nld znTi3uB)@#opDk4-BXUM<(`?}M_^-j5ejlazX=RSnOt8&cF0m^2*%f>HP3D*9A5|#+ zyqau>vmqB#LM?p&cOu;UmuTnhWnM#Dl9HOg3Z*YVDm4_oDnlZ#_sRX{lzhA#U7~uj zeZ|%9mw30I7a^e!`9~v&-2T3J4nn=J5h}Coa}$!&HKo^UuPbCn*r{^+(vTQBudVw6 zq+zjfbE$T6eufsA>zS!iHeMdS ip^++ zi7j!L1UQKEJxJ1bgoR0Va&CXftwsdAtI!GqqcpWbw5OnF>AYC``~f2gONV_G_h{+E z`;S+Do GR4~S)Py^9GwwN!rG$+TNjw? z!LOH{uG&%N*&2i=IJb7R9;n r*FUiB_olirEn 5@s;@+0U=BryA+L-KEduzFvSToiPNzAeX4@q!+}tUU)4s zl&5}e92V%{g!LHIyzexlwYJKrt>nu#2Ao0vI+zAMaZNHTZ3k3#oHx;T;mo;N^EutG z;$4p|<@7$SK3JuXF{5G1mWj(2mwF`r%l=1lV+6iANQ?CX)GXyM6_RbA=CPDhclQGY z%ZsQ&3Z>c*`j{p+442cERv=z08#~%M<6e_7-=4Q+{Ds=t!Hu$~D?;?j@hQdE4|I2G zq9frH<&Y>CowzWSeaSL=;DVED*ww_ih~4jUW9ezlw@~)W(NoCf;u@T+@9S}YGVB>~ z&_R4fC0A|r?EPGoz%}@p<@+pAKnp7F;^(xyNuj?*JCsbAlzg`Qs)Z{YcMy0{X@h;s zUJP{6KXmvRt*!l0W+AXdL4S|`UOKR^j-(a=U5eFGfPOFKMph;5eM3Kzy#Ue4O2&Nj zS1t`j!4?g!6CXk55QPv&c(@iS6XQEEKLF!0n7lH)`(2am>W{Nx$Xv)Xm#O8N11zsc z3mMiKb!XDFrs}W)#w0cN_TGcucb81wp1 WU0Ybfn z^$pH;4(`hxU}gzFWS`(<@gk$*a2k`T-n@nF(6?{LxNNyXW%IeMsMtREKbDq#J2|Ki zDOcJ1oIf=?Z|o}-uspFWp3D~a =oII_364vN zc>yA^xB%U#u*^5IGa+`nkPq}Z9= +Wv+@-z9`q2bD9yG7_5S>o#{VsG!e3w#Plxli z^*#tJkKQ}DW;kWkZJl!_ES$d17GK M#xe;rh?h82#5Y7J%Eqs27lEPKw{^7a)3HfzfjH zyD%ZEG1r|PSC8gLqz_lPNzV*|Ij{BQ@~}!t;4~rYwtI_J$iI>x!$xW}CEDrpvC#Ww zjMLtuE5g2Mv-L<(ale{_$f +cgcH~$DOBeDD}O`n&wF3u zuZxQoTFRP1N>9ut^^TruQaL+Y#}d0?>`5z~&3;^_)iIhi_9-+*ED>hPmp3|JZR>U7 zuzTjc&{Sv%;bdWV8fS*BTVl?B82L~yW^eC??#Dyr91|mX1gR)oH(HHwbH_ZIevyAs z cgJ7fo@s*`6Is*;HaKUI41i(=>!G#y6C zh<^#h ?-&dhU;3vzu zt5J5dD&t^l?8b`lr$#n2;~6ZXJz4pan+sbat2lK<=-j2|S6LfuE8;-hHU_42^HZGZ z7+e+(=B=xVc^$+vrh9+){V(ZlEv8U(8RiMr4}IDuVSEs}cS1HURHXC+uGL^8*~VI0 zaP``Iqu<{6j%o*9B4q>0Lv8%tf&XB!S&D7!Yx04-e)fb{O%JFj*+{v>JA<=hWMw?V zDwx#m;w|jY>~!6nGW4YuumT8tjPTV9&=lbM9jp Tj=9Xh(S4$J2 z;bx`s?OPP@O-@$J#{! DS|A=mdAzmG?s$3%N_(rJkS^TpwMjDwNm8t z?TzOzPve-5e4L=qWSH7~J{A3stQrsbcUT~G<5xl%5Z+f@fJRJ`aax@aW;_e3bJu=( zkkQtk)8}^w`Iuwk-T3>GOk}H{V&V><%)S~Ip!f`|AhFu`0<