From 64280579f26a7129141542dfc7216064d7f8160e Mon Sep 17 00:00:00 2001
From: grimsi <9295182+grimsi@users.noreply.github.com>
Date: Tue, 6 Feb 2024 01:56:38 +0100
Subject: [PATCH] Implement user management Implement dark mode for UI
---
.github/workflows/build.yml | 56 ---------
.github/workflows/docker-build-push.yml | 92 --------------
.github/workflows/release.yml | 114 ------------------
.gitignore | 2 +-
.maven_settings.xml | 10 --
build.gradle.kts | 18 ++-
frontend/index.html | 23 ++++
frontend/scripts/prefers-color-scheme.js | 12 ++
src/main/bundles/dev.bundle | Bin 2090720 -> 2239804 bytes
.../kotlin/de/grimsi/gameyfin/config/Roles.kt | 6 +
.../SecurityConfiguration.kt | 25 +---
.../grimsi/gameyfin/setup/SetupDataLoader.kt | 59 +++++++++
.../de/grimsi/gameyfin/setup/SetupFilter.kt | 31 +++++
.../de/grimsi/gameyfin/setup/SetupService.kt | 11 ++
.../grimsi/gameyfin/ui/layouts/MainLayout.kt | 49 ++++++--
.../grimsi/gameyfin/ui/layouts/SetupLayout.kt | 47 ++++++++
.../gameyfin/ui/services/ThemeService.kt | 25 ++++
.../de/grimsi/gameyfin/ui/views/LoginView.kt | 17 +--
.../de/grimsi/gameyfin/ui/views/SetupView.kt | 27 +++++
.../de/grimsi/gameyfin/users/UserService.kt | 37 ++++++
.../grimsi/gameyfin/users/entities/Avatar.kt | 23 ++++
.../de/grimsi/gameyfin/users/entities/Role.kt | 18 +++
.../de/grimsi/gameyfin/users/entities/User.kt | 36 ++++++
.../users/persistence/AvatarContentStore.kt | 6 +
.../users/persistence/RoleRepository.kt | 8 ++
.../users/persistence/UserRepository.kt | 8 ++
.../util}/UserDetailsExtensions.kt | 2 +-
src/main/resources/application.yml | 8 +-
28 files changed, 445 insertions(+), 325 deletions(-)
delete mode 100644 .github/workflows/build.yml
delete mode 100644 .github/workflows/docker-build-push.yml
delete mode 100644 .github/workflows/release.yml
delete mode 100644 .maven_settings.xml
create mode 100644 frontend/index.html
create mode 100644 frontend/scripts/prefers-color-scheme.js
create mode 100644 src/main/kotlin/de/grimsi/gameyfin/config/Roles.kt
rename src/main/kotlin/de/grimsi/gameyfin/{security => config}/SecurityConfiguration.kt (66%)
create mode 100644 src/main/kotlin/de/grimsi/gameyfin/setup/SetupDataLoader.kt
create mode 100644 src/main/kotlin/de/grimsi/gameyfin/setup/SetupFilter.kt
create mode 100644 src/main/kotlin/de/grimsi/gameyfin/setup/SetupService.kt
create mode 100644 src/main/kotlin/de/grimsi/gameyfin/ui/layouts/SetupLayout.kt
create mode 100644 src/main/kotlin/de/grimsi/gameyfin/ui/services/ThemeService.kt
create mode 100644 src/main/kotlin/de/grimsi/gameyfin/ui/views/SetupView.kt
create mode 100644 src/main/kotlin/de/grimsi/gameyfin/users/UserService.kt
create mode 100644 src/main/kotlin/de/grimsi/gameyfin/users/entities/Avatar.kt
create mode 100644 src/main/kotlin/de/grimsi/gameyfin/users/entities/Role.kt
create mode 100644 src/main/kotlin/de/grimsi/gameyfin/users/entities/User.kt
create mode 100644 src/main/kotlin/de/grimsi/gameyfin/users/persistence/AvatarContentStore.kt
create mode 100644 src/main/kotlin/de/grimsi/gameyfin/users/persistence/RoleRepository.kt
create mode 100644 src/main/kotlin/de/grimsi/gameyfin/users/persistence/UserRepository.kt
rename src/main/kotlin/de/grimsi/gameyfin/{security => users/util}/UserDetailsExtensions.kt (87%)
diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml
deleted file mode 100644
index 1cea2f5..0000000
--- a/.github/workflows/build.yml
+++ /dev/null
@@ -1,56 +0,0 @@
-name: Gameyfin CI Pipeline
-
-on:
- push:
- branches:
- - main
- pull_request:
- types: [opened, synchronize, reopened]
- workflow_dispatch:
-
-jobs:
- build:
- name: Build, Test & Scan
- runs-on: ubuntu-latest
- if: "!contains(github.event.head_commit.message, '[ci skip]')"
- steps:
- - name: Git checkout
- uses: actions/checkout@v4
- with:
- fetch-depth: 0 # Shallow clones should be disabled for a better relevancy of analysis
-
- - name: Set up JDK
- uses: actions/setup-java@v4
- with:
- java-version: '21'
- distribution: 'temurin'
-
- - name: Cache SonarCloud packages
- uses: actions/cache@v4
- with:
- path: ~/.sonar/cache
- key: ${{ runner.os }}-sonar
- restore-keys: ${{ runner.os }}-sonar
-
- - name: Cache Maven packages
- uses: actions/cache@v4
- with:
- path: ~/.m2
- key: ${{ runner.os }}-m2-${{ hashFiles('**/pom.xml') }}
- restore-keys: ${{ runner.os }}-m2
-
- - name: Extract Maven project version
- id: project
- run: echo "GAMEYFIN_VERSION=$(mvn help:evaluate -Dexpression=project.version -q -DforceStdout)" >> $GITHUB_OUTPUT
-
- - name: Build and analyze
- env:
- GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} # Needed to get PR information, if any
- SONAR_TOKEN: ${{ secrets.SONAR_TOKEN }}
- run: mvn -B verify org.sonarsource.scanner.maven:sonar-maven-plugin:sonar -Dsonar.projectKey=grimsi_gameyfin
-
- - name: Upload build artifact
- uses: actions/upload-artifact@v4
- with:
- name: gameyfin-${{ steps.project.outputs.GAMEYFIN_VERSION }}.jar
- path: backend/target/gameyfin-*.jar
diff --git a/.github/workflows/docker-build-push.yml b/.github/workflows/docker-build-push.yml
deleted file mode 100644
index c745f41..0000000
--- a/.github/workflows/docker-build-push.yml
+++ /dev/null
@@ -1,92 +0,0 @@
-name: Gameyfin Docker Build & Push
-
-on:
- workflow_dispatch:
- inputs:
- branch:
- description: "The branch to checkout when cutting the release."
- required: true
- default: "main"
- tag:
- description: "Docker image tag."
- required: true
- default: "X.Y.Z"
-
-jobs:
- release:
- runs-on: ubuntu-latest
- name: Release
- steps:
- - name: Git checkout
- uses: actions/checkout@v4
- with:
- ref: ${{ github.event.inputs.branch }}
-
- - name: Set up JDK
- uses: actions/setup-java@v4
- with:
- java-version: '21'
- distribution: 'temurin'
- cache: 'maven'
-
- - name: Configure Git User
- run: |
- git config user.email "actions@github.com"
- git config user.name "GitHub Actions"
-
- - name: Maven Package
- run: mvn package -B -s .maven_settings.xml -DreleaseVersion=${{ github.event.inputs.tag }} -Darguments="-Dmaven.deploy.skip=true -Dmaven.test.skip=true -Dmaven.javadoc.skip=true"
- env:
- GITHUB_ACTOR: ${{ github.actor }}
- GITHUB_TOKEN: ${{ github.token }}
-
- - name: Docker meta
- id: meta
- uses: docker/metadata-action@v5
- with:
- images: |
- grimsi/gameyfin
- tags: |
- type=semver,pattern={{version}},value=${{ github.event.inputs.tag }}
- type=semver,pattern={{major}}.{{minor}},value=${{ github.event.inputs.tag }}
- type=semver,pattern={{major}},value=${{ github.event.inputs.tag }}
-
- - name: Set up QEMU
- uses: docker/setup-qemu-action@v3
-
- - name: Set up Docker Buildx
- uses: docker/setup-buildx-action@v3
-
- - name: Cache Docker layers
- uses: actions/cache@v4
- with:
- path: /tmp/.buildx-cache
- key: ${{ runner.os }}-buildx-${{ github.sha }}
- restore-keys: |
- ${{ runner.os }}-buildx-
-
- - name: Login to Docker Hub
- uses: docker/login-action@v3
- with:
- username: ${{ secrets.DOCKERHUB_USERNAME }}
- password: ${{ secrets.DOCKERHUB_TOKEN }}
-
- - name: Build and push
- uses: docker/build-push-action@v5
- with:
- context: .
- file: ./docker/Dockerfile
- platforms: linux/amd64,linux/arm64
- push: true
- tags: ${{ steps.meta.outputs.tags }}
- labels: ${{ steps.meta.outputs.labels }}
- cache-from: type=local,src=/tmp/.buildx-cache
- cache-to: type=local,dest=/tmp/.buildx-cache-new,mode=max
-
- - # Temp fix
- # https://github.com/docker/build-push-action/issues/252
- # https://github.com/moby/buildkit/issues/1896
- name: Move Docker cache (temp fix)
- run: |
- rm -rf /tmp/.buildx-cache
- mv /tmp/.buildx-cache-new /tmp/.buildx-cache
diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml
deleted file mode 100644
index eedd0ce..0000000
--- a/.github/workflows/release.yml
+++ /dev/null
@@ -1,114 +0,0 @@
-name: Gameyfin Release
-
-on:
- workflow_dispatch:
- inputs:
- branch:
- description: "The branch to checkout when cutting the release."
- required: true
- default: "main"
- releaseVersion:
- description: "Default version to use when preparing a release."
- required: true
- default: "X.Y.Z"
- developmentVersion:
- description: "Default version to use for new local working copy."
- required: true
- default: "X.Y.Z-SNAPSHOT"
-
-jobs:
- release:
- runs-on: ubuntu-latest
- name: Release
- steps:
- - name: Git checkout
- uses: actions/checkout@v4
- with:
- ref: ${{ github.event.inputs.branch }}
-
- - name: Set up JDK
- uses: actions/setup-java@v4
- with:
- java-version: '21'
- distribution: 'temurin'
- cache: 'maven'
-
- - name: Configure Git User
- run: |
- git config user.email "actions@github.com"
- git config user.name "GitHub Actions"
-
- - name: Maven Release
- run: mvn release:prepare release:perform -B -s .maven_settings.xml -DreleaseVersion=${{ github.event.inputs.releaseVersion }} -DdevelopmentVersion=${{ github.event.inputs.developmentVersion }} -Darguments="-Dmaven.deploy.skip=true -Dmaven.test.skip=true -Dmaven.javadoc.skip=true"
- env:
- GITHUB_ACTOR: ${{ github.actor }}
- GITHUB_TOKEN: ${{ github.token }}
-
- - name: Git tag
- uses: mathieudutour/github-tag-action@v6.1
- with:
- github_token: ${{ github.token }}
- default_bump: false
- custom_tag: ${{ github.event.inputs.releaseVersion }}
-
- - name: Github Release
- uses: "marvinpinto/action-automatic-releases@v1.2.1"
- with:
- repo_token: ${{ github.token }}
- prerelease: false
- automatic_release_tag: v${{ github.event.inputs.releaseVersion }}
- files: |
- LICENSE.md
- backend/target/gameyfin-*.jar
- config/gameyfin.properties
-
- - name: Docker meta
- id: meta
- uses: docker/metadata-action@v5
- with:
- images: |
- grimsi/gameyfin
- tags: |
- type=semver,pattern={{version}},value=${{ github.event.inputs.releaseVersion }}
- type=semver,pattern={{major}}.{{minor}},value=${{ github.event.inputs.releaseVersion }}
- type=semver,pattern={{major}},value=${{ github.event.inputs.releaseVersion }}
-
- - name: Set up QEMU
- uses: docker/setup-qemu-action@v3
-
- - name: Set up Docker Buildx
- uses: docker/setup-buildx-action@v3
-
- - name: Cache Docker layers
- uses: actions/cache@v4
- with:
- path: /tmp/.buildx-cache
- key: ${{ runner.os }}-buildx-${{ github.sha }}
- restore-keys: |
- ${{ runner.os }}-buildx-
-
- - name: Login to Docker Hub
- uses: docker/login-action@v3
- with:
- username: ${{ secrets.DOCKERHUB_USERNAME }}
- password: ${{ secrets.DOCKERHUB_TOKEN }}
-
- - name: Build and push
- uses: docker/build-push-action@v5
- with:
- context: .
- file: ./docker/Dockerfile
- platforms: linux/amd64,linux/arm64
- push: true
- tags: ${{ steps.meta.outputs.tags }}
- labels: ${{ steps.meta.outputs.labels }}
- cache-from: type=local,src=/tmp/.buildx-cache
- cache-to: type=local,dest=/tmp/.buildx-cache-new,mode=max
-
- - # Temp fix
- # https://github.com/docker/build-push-action/issues/252
- # https://github.com/moby/buildkit/issues/1896
- name: Move Docker cache (temp fix)
- run: |
- rm -rf /tmp/.buildx-cache
- mv /tmp/.buildx-cache-new /tmp/.buildx-cache
diff --git a/.gitignore b/.gitignore
index b199ffd..4091a91 100644
--- a/.gitignore
+++ b/.gitignore
@@ -45,4 +45,4 @@ out/
/backend/src/main/resources/static/
/docker/docker-compose.yml
/.gameyfin/
-/frontend/
+/frontend/generated
diff --git a/.maven_settings.xml b/.maven_settings.xml
deleted file mode 100644
index 2d0b3b8..0000000
--- a/.maven_settings.xml
+++ /dev/null
@@ -1,10 +0,0 @@
-
-
SJ!C z_L>(0j3pU)vRQU6RHo7CtRo$cGH6h!RFD)+h?zNGa<+^U>h#Y<7KEFl+kZjDe0cqg zTL5bIHoj*-5i2P9Uox2p>wJ-d?XK{Jf@^RVmQ+_I$f#LqQByJY0b#88f|*Z3FQRpd4Y{21xJjTwkYX7M#5^8{bSG)iLAVo>H4M;a zEaaN4ri)%Ik6t_BO#)&2S7Ln1 4HpUV`$)Lkyu4DE8eC3OhYm#IA&9AB;#z!v_jU_U5S(>Y&g;c zA*{yHnGXJckqglb(@Qgzs~B=|{}v_b7VZEMwS84VbeB(nS}+w$dVMTetyyrpK|l zCofOeJQhXF=Rklt{4mbTD@~u#T4)cVn~5Le%k#9*``&rao{Z)$hmlEgfJ_Z;#1-}X zH1hT=ps+IR>y#6N`2iywaCR*&_=>dZoHYvI$Y>m mxnL?|E#~?k2DXd>l^s9&E(P(1nnYk8zC!C zb@z1N+0VNx>e-iXYA*X=Y;I%=-#;(s1h|-5 Mjl5IU!GVClvVws8 zA7)nv |tifXyWeX_&;zv3pb1ZVXFUcrpW(4 zCbO%H+5d2X|IJnZ|Iht@6u@NTI;p4Xy3U0bFs<+fUfEVws+E5sun}Ze0XP$Qo>|*i z kk=bj=4*f<+9rL~IT+i6Hm*e?|JqPw6&~ z?!St~Vuyx?24ROXBaIG|gzY7EqQ=E=#9t{A%q7l;VOUGJl3^ugT8P3JwU;Oh&1DWV zP%?jr?~#g1d%F7!oA<-j0|;Cc7GihwJdjkZ)D1j&!CRpm=nzzht8DUnB#5-S!=|Lv zb9R1r6_)>s$w1aXO4+^AWuu`eVI?5_NF})Nke1Jzh-G?(#*h0YQ15m##_uC4Mh8Je zw8e!AVGlD89-hgjL=R3wAaHZxf@qBue{-7f!XEMd5$Z#E kC` MxCHd0~# *9QGq z=32P%LgddqvOM{8xH}O`UcGn+w1}%Z(bRcfnm SUYNEq_>6^m&vGXKNG-*HtKfepQ{tx%3KH07 z7Ullw Zquv{{aAFDTdm?#d)cI~%}uYZ(CeQXXZ zj4@F(kRgIAQFc%QNpz>QoF)34Wv~i40*xiTSaZ~w{Dl$>8>8x5T3SwM?>t?n5}-Dm zdCT{1Tx3(!)B8E-!q10Zh*(lR%$t`Z4csN%Mq$1H+@YP_=YYR*KJJ^+f
rlSeW16}qjXOBLVc+sRR6s~k( z^`bR^71(4M&E3MBND-tS#YeAYY~W#3uU|Y*QIPe&e;xaLo8aX=eUtA4Z0U0+uG53u zX3pUzan&LqLS&`yRO@#oQhJJs>XA1}t20y#yGmmtI+C#Y$>{h8uAu{QJ|Cij-I;Z@ zJ0)3wU!PlVPg#3FuLqu>TNrX)I2Gn!zkim1ina_k1L!Z!l36GUoV>C=eBwNBOp3u~ zT_Mr)XI@0IWU7qv61!d{9U_hx7=C1PW<`sBajOjtAKrbk9pbpImaH=A?$;24g%`7k z(RjaWwdyK!OrECS{lQS)lq^zwVUlfOL4M*dY%=jkuy;H-KQ*%@QDsllb6Y%MlyPc- zok2US?f&rK*s~2yx!BAsv9(_Zl`qGQL3Q33N0IkashO#}ZGV&{3kqFSHseuGJ%|~C z@VOWq?A~R_W0OU*U&b8iR2R)EHhDyn@>B403=s)e4jtgq=q7V|)zV_vVuMMaUmbi^ zz)Ak9N_mjqv*Q`iBlz#patONcZ4D0r7_f@{&42I*&j|2~@)ex*HWj6I=clH6d&aw) z#pt?GT&WL<_)vfK-c)yQY4{=^1otObpeo@G;o+7l^Rw$D^`)CGvXgxa2nbw7A}*!0 z`hp*~*headjCfs$xyDINk@|87acFdlBmcKcxBRn#>JNuSEGpLDodig|l58%(+n%zx z>+uO+e^PF2MTa|7klqJvkX{f3fmC~hZ=YW3;TnBpR=eZh6#2pv&!oWGq>UQ=g^%5F zMN%#DVn<#N;(Q3)Wyg zCTxThheOsP7AH 0n7lSbqizI4iZS#ImC+1<9gYKIzxA&cKqAuY@*L#vaD zgm;+y_5`N^d{#FbI>Q6e+vWQ0!5h1{dMo3FTy)gH1-h^T?7Y-NK{^!hwNlx7_xv$y zD3khm*%axoA4%|D;r$1+1U>x@C&u(Eu{@isCkg+uVWjKAt2TdjSh{W9(9ko{@)$NK z{@4zx>>ZP$k+?+HKh=%*fiw0;=Fv1+`z(Hr5He2O`Ke=XiKF_d zibnCby;~+(_#Bbv$SDEf5cc=DmOYhr4ZZmsoo+sypsqf|W$f3dJE<3eYTDa3PNC`? zQ&M4$igT6QV{)EnfmiqjPbDkagmI_&*5PY(vvamF;?OQ2sVY^%Y;??8m BpKOx4&!fI3v@(u%SHTopUP6fwBr+_l6UP7)No=p^ zM<`^HzPiq829=IaK^w 4Uu3#Pu}4Xbrqr2plM&d@0Mp%Ux(+!N`u^2+jUMGoFv! z*tp_)Z-zIo>(BZC6wWN~UAeE8WQ16Dt#J(6(u+t-S}&`32KG}!2#<8R9qK;AY9p@K zHnci)^w#~Q_#)3$RGK`8V#ypa#xBy_x%~?wcj%j)A;|_hcAFflHjh8s13h*`VbiKv zWQ*v9#}8G{ZTaAHBOiSb*MsD4RfTqoUE3s;Qb5jYZV^g=B|%y>!~(n9Hse*j(yHHW zov3z0Cej;~<8 I~KuzktBrif1iOF}ZrKv(vp$O7ZGU?x1S?*rx-_8cKXI#RVV>asHh z)@B^2Nb?C$Mu589)V7f1K;Ze?oXydeg;h>KIY%F#U=R0pENXUw7S9ufiL5Q-3_L)2 z$|2o-oo3@coT6;|X#rI>v$pq?;DMbgbiKiY(eAO6dfOvH)f(Yh03A9H*6?&4MoAeH z!t91<=t%7+>^a>kVuw4cEp*Gyq@rzWpC JQ*>s3 V(Pbwjjakb+NEk zX^hBc-AelcG=eM1L^^p1v$ 78lHRT^Zlki&Hy zGUo)4 gb32J300Re$(cliR6x&9925V`!E{U&9sYzxvY!~;^!SWed|wl zT`M3dU2lmO`TR4Qrqf`xnmnnXSMEr4Oy0+%XE&Iob97Dh${R<*e$KzTJWB)a_Slbg zAf+9R;Uuf5`Ov_fw|R@yF@o@FwiCVFsBZ-b@txr)sgiBmui@ezoH-uEI2*T_ME#{7 zBJXGPFMR{H#bf#b)A%u$+IS1O)#yHLb8U#frbl}D-C11D9E^G0b98oUJXvfrB;z;< zG0tWeV{VAsPVwFqXK(ctk)9ndsy3=wllrbJ^PKJ?igo^_yU6t*+}lF+K;}|Y4#@(* z*ip9@`UoKtC;IT|2eJ-%^^o5SZIi N+ize z5Q=)`B5Aqz&lmE-F<&T(&4N`6s*MAzE}>^fc*~10Cp639+7H&rG0!UpQ#QXCl#Kla zy;c4AsGwi^nQOw%o5_MA@QU^q%*ZSnenF)S(`mBNf&ZG1wP`>OH7C i97bf zDcZvUfmcJzZAehjM0%-bM;qH`C)=Z}8qZS|LE_@Eseq{9Pf!cByjzV$y6FN6baeI` zPpnz#z3NGe6!;E4g|UlOCQ%~QT~g|j03r&LxL n_y{XccG tBa86B<$wiP2^oncAER$+x Z?`F@xe2{VsRkif1b||A)qCs&Q`7Wbj6Xe z6)%WLNDW*G08PYCQz#72hcC~scZc(L-;csyw=qD(!^~F;;P@Todo27NGv80b^&CyS zQl4cQK+tp@cYnVigb`q4br~eUcyZq#!TsFs8}QV#wtbmU(o<~?1faeY6IvX5j+qJ( zMq}NDc?a09{w37)Fn?oq5$btWrVgVQc9~qM7p0B{?y?P6bqUr4g`*0x9f$0jUulg# zpg+KU#_ke1Zte|p@o{nR)3TB;m$MFHiD&TJD3H=;l=_ANWwDbOt`2RnqH4W>1@?WG zzvLZ^p#>S Ffb#3z!h^O5T3ppkl} zvU34|2|D&GVVm0YV`GHEwBkNl8>2Nw9OlZZV4gsaw%>fiWEbl4W??%<6=YwS?{h@*0OFS9=;)jf!SUswl`i^>b@wg!%hFbIU2|`OCxUIH z%JulBd5jx)`(4rx|=6k=xjfdD)fxMwzLwTzID^S@f0kbN8a->EW7n%G#4Fe @MlKT^ zALiHFPhbS8kiuE6EWBNpbG#Cf*8}M7`O}{ZN4uKWS;0E6-yQ`E?o$hS@WUA#^<0zR zj|%o-zD1ad>*lqJ&4g9ntPL~GYw+^axo6(is}6YqvulN-N>7{isuUuD))K(cZ`0ND zO2C6y80F19nz12AT~O$2n>q73zU>Og`SD--lT~Si>fpSR&CPfU>OuVMHT2)5pCtp_ zaFkpee|W8LUeq5mJceRLeu`}I9AQKF>RNoc%^1O+>!J&GiyEekBbx5p+2poxeyZ$j znSDv&9R~t+K1T4#0ZU{j!~iiK-d9k7Vg#0e@M&6ApFmrheT7$fh_?4p8Igq*AOV>F zL%wkDyQiwtV?Uve+0WoE5?-8|&ivcL9FY8YAs~#=nB-$H(>%}fz9_XTjDvk=j|<2( z2BE$ei^Q)LJNR6RT &wdTVw>OcCkADF_=v5n|us@Uq71p*afaM?XEcWX^;|0ub zII J%;p)8 O4S$T;(4eY8YrkmwK>{z0_BFVy@ zFWRk7h>riIcdjSO19Zh`f;|K({eg1H(Qu==f!X!z@{P}!Z!cabCL@GKVqydP &vjvC4q!9d5T>P){nBXQ)Trt=Vbg jiFU7dcI_KvY>#&Z9s@1RYgU-FmQOy?y)s<^z8E=~kbzgx>9B;BoNOBv}QQlxzR^ z6)L)Iahb}=uH3as?y_Q=s|+UV_ZIIO^nJ|CMg6nm%$4!`Ue3q~+Wkc=exP~&{8L)* z6j`>6$(+><=tt_E*H`A}0#fDM2T<>ze|Mj#^CcYEKQVG=0}n(lUDM%t{G#kSC4bv; z6hiVUgY~pZn<;uq%Sg*p-oa1J&OtZ{vq)ll$1w5Ly}c;yxF`~NOz ernm3P*;xezS8}$q-f#~9aK!AZr5!-aCH2I+=28BE8SIw! zn>}2)hp%6U2BysuhxUem34~6EbPR&3Sdw=7-k_)Xt*jl@%|~VG*;)>%Wxg_dr#(p_ zIb@UAQ4|5HerO`;Q7wp7M!L}D`l_6tCBTESggXP~^>$5>7*G0bg<<6V5tasae<%r; z$Sx76t(A1AX{$tiG3GUje4W@8M>UEGg^Ya_$DdRkuRHyjLNpxR)Qbe&%YrS31ZpGc z)vke@9F=CW)b-Xm%TWD-Mg7(D$j+RaHB1$36l?pg$G=EC%#Cb10LeOy6yLnet2&Q7 z)d1F|uWaz%N7$Kh1$wrXkn%!?>BG4QPkIOZR>?0(^DkLxBWz|0_|kx`@^mXhTXV@; zvE0`3dNQs#u?^)d2~=l}h O?M);k7l z`-mB1dR>b=xRIIv`YcNM^)CA)_}bEBe+ATH5$acn)A9G)cVR+%=_B^vZorgACED#! zZ9~YKFeCm1rOnfMBt<)HT-$2fJ6l1vda7eekTX9q&2*JHQe+?=9>na$?>KeTiFo(x zI(8vn4rcDyV0le1x|F$&D|&Hczhwg0iR>eZB%K4&dH=I2Y8z+ru`$mJ+HOsiZFj}b zxz|FWM~B9m*omZLds}v`MPMhjankTw!HnIGqG+TXwi?RZ9#E(Zq*KfH);6dZb_?+= zn-H|Z$upB&Kjs@kauSk%5pBG251C{0xRtkD_uUDE34fkT`>Zv(r@cD3WhVf(h@;}` z44)G{)`*6yZ!vuvT{zPaC)vf%IwS8JD9=HPoF0!}VUhQBRD*d+7xHRCe3TLwU2|rS z@gz;ERoG#Lj?svN)aYqOWdF#pVik$P|8k=j!JfBL@bbjcbUw!9*cweWeF`45UIhCE z ~i){ z788NfRq4fR-u{`ix}{76Wp+t&rXkHNXH-<>_)J%VKSsQSyT0Je|5SI898#9uL&tkd zXqNb2EUr1mRysW6S@$gyY`$#%+_(zaLGO&sNC#LUQwH1L@c@{~t3SLQ5w%GybE?)7 z(FvSREK(Xo=8)|XcY_|gsrwTHC*FH?wIoXZP&D3%LjRiD4_tmpJsajsDVlSQ%zPRz zQv>VEUOB8@r9pevMaMZWY4+b_3XOIpjH~l#Hq5g7b1fIP)hrJ-lvidLoyB)){>v0T zR*!`G`mRID$G~2#hzDu6=^tle#E? j3AU;n<9n`K9+Arj^( zB|HOo0XgYVhAPiB8_PGm=15TfC8Vcxt>UjahUQF;bF&}Yny0m=;G-`4-X?ntAsY@H zppRniQhG^QsED0xbr|&}p9eeNUoS2D2Y2Vzt ;0SMO2LiR2Uj|;+=SnaH0U!SYB z+~wJ`0r&a$`Z}Cjm)5H4F^58D=!o2!7^At-fZl>4x43KBA&5-%WXKP)KWWQ`Xu;vN zMn3}anLB6H?D1Kx&6`;XT9sb(4RDn7<#PnLZw=-NJ)v=omO>nD143S#^^dibT9xQD zh}symf-5-Ls~W?a>Rjf;g{j6-Dnf_9EOpH{c0rPDBi1Rl=vH^%jsG!<$*RJrBo6hF z0Ja!>7s` Z)e`ms1S*Ei=qQgYiQ17 zx;Vv5$Y{1(6!y4*I^ @b-aI?6X59P>*woBV u>nka2V4*o<*F*|0s(Z6 ;u)NzJHkwOZ|N?3|gr~ zTN!U(@ngb{@Ml@v(K#D6Nb8hBCL{ier|fjg6z#~}34N`qb*4@_Qn( t+ }U1CkI>E!RRzx$2CMXvz%+#aW2>tbmMD5UQ6K@!%`+by$oU`v)gKF7GuoD=5fOaK zS{NReYP@h|$tIF$sBvRVq?AXzV9T^fbhhEYBAw^!GHkn+36SC6Wm7W4oKrR8%|Tz- zzdU2FCW119>JmvT@s5#MIr4ajB{N<{vYZ1)YMpcN9I+vAD?=x40F>#!sMF(+%J{tt z&as;k$D*>PEuf>I-8oo=Rx+WIil0xvE^GGs9#K~`F96T+8O|)`n{Kk(U(TVE;-3nC z&rGjm*C(cRjB+$B)?0Or!(I5HtWw )qKh8eJuB(H()gHhmQ(}mZH2E03)lkktLVgm` zjrZ;4Dsk%oOSRybiCVPjW4kWUMfw(2yR1%~m%ni>Ku(w^&D<2Q&W*7Yf)?$OoeeF^l(hMAB^f(JWXu3 zj&ls!^Uu-nkRADQtn+UKu9;uGllMx`9G>XSjMSZTR;n{GJxKaSoyn)A*PX1!D$;u4 zO$~{5K*i^RfFY%ubnWIL9lmHZs&!f<8&240#kOm~c{huVCwIjCq+%-sL&1RI8U6{8 zqBZ6OnMTpT(-;QKMj3g+A#gJg85})_{ZSo$uvEHKCfdVws9gv(DX;>adkFr-&6VDY z3D+U=Rh-{j&ULdwww %vdI zFS(jSHWR-k5`wBx=ruxvdb vB0D}N^c zxJ0=il~Z)~I8dg>{JdZ3Nb*0kYG?TIIfQm~jBz;-t~^?Le^<+V$?NLHA_EW*{sbWe z(956@KFO=O7E#t23janWfDVIq6m?w=qhXXnk2m9v-sb9aXe&X29rk8OaER6BolM^U z>f(<)wGpnq?EUB(`WAGJt8r#1Gh8w)&?_05^AUJ0lXo-{=2`Tav7O8zHbCaRPdm8K zPc~Xv;kB@OtE$N5A_y=kE0EZ*CJhY*3}uE~26K}YR^V8w*ogP@e^tK)X4PEAZk(%e z8AgN3;o_>fmbRoa><_bfaxFrw+%~ECbADD|W4~M`;KtD9fU_Bpjm)pU_mmR$o?LSV ztJARGAD5M=bF@{ati|ZfC|`sZ PKr*KWz;Q9BpsAW6I&@@Cun@IhyCTUA(H5P=C9lG1&EpJi#&b-nl%x7tsa z?3kxz<(xhIiFjwl@}ya3cjboxp7}6dg^~`7Iz25TElve+&wT%3NXcq(($mrvk|47L zKfP#ROFPs;CBL^uh73 ;ASgH1*kf6hVB1?YQC28cWPd$Pf6M@-jiVMii8 zrUZS@C<<`3Esq%nA(Pu5zwzGmEWW~jI70fwoL!^$!m@6!IR_%yyDRIqUYH6Ih=fWt z*X!JHf<6wS`tU6hAth!4%P5T|mW=`p`v2A{&8g^q7x~=iy6qLancIy`$}KeKa2`7a zf*?1&eM7?uv?C6krU#u<^a=^(0LrJBSe+QBf{8mqhzQ2(FeY*kS`A@dWc+sa0fJx% zo|aSbl(QqLBe9A)9q1VN$ia~PK^3FD1s`NKat`H$u083>wYv&HP@zv#$>ogVl@#MU zA)YZ%c7N-9rK4CF$|!)`k>&V6kYmngc>ex}t;Q(FHwsA#+_S2#ZwQsdeE9M 6kcYnERx}kE$Xtz zsqlIE887A?UI`wcxb&J6fDDf4uaW-FUo(<%QZ1*)eu)Z#exssN@Un?SShx7MuTwe{ zp~*G-PgOi@-%MktK9r{4U3W#%f}|M{A(Z@r=IuxFGMwO!nX~NsfU3zM RfC;w~>I1BEl zDw`RNN<*foyqdI|-m7Otp_~bxqFL(!bSim~X;?Qd^rNVA==AI#3))YFz-{m2^WTKy zGDnQps)E8CrA+E9?Z5XFvuQkk4JFBCat(0GH+4wxnJ7aD0$pInttwD^ZMusXMRiIk z&T*a~Il-v_Hi9Qi*-?GL>PMFUz93js>&$ 8h$nZdk8S?HWFp==#_>}tnL9N45C)$VQ#4{Xv z6<7786^My{&yPPM-`XmWI8C+lXHMV|`;D%RvabaB3@}|tM|Pud! 5wR)abw>6epQq-06`1Q!O7jkC=<09T%0Xb_i z+!y`N4Gw$6`UuRpEOj)R#a?^GO(4Ckv9cNz*jJ&{ys8bnj6iTCe9wiT=}YJ3n++yh zayM?Em)R*P3r5R$-81qD#>33Zdb4D1P(JT#;kos;+{ezsF1?Y;ZwSn#9$0dDqJqX6 z{|WCxQTiOm$9v}Q$t*>)O0W#a?0lexog8YxmTW@uo2pg2=A>I~wm@ME)>cjnKS0YK zDDun7!*6_9=0b_Fm1fL;-QW6E(*oaf_VEY2C)}+GEaRp3y`#=@262rf!>$JeqE&6E z`$rY0AJ$N$#v;$J=zdi+2D~I`wqWP7(@acpI)i&0%#wYmZ7Ov?6cxCQ*eJ{o`FGT5 zJ&cEq2c^7(Dm{E%p%^Ia$1k}*5vB&GfJiAAI4l(bMTI!zslJ^&{T4CEd((1^HVoB6 zpnr2RG;IcSt3c9%1bjJUyAI6W)YIDtOreREWYMM{VFf+6PDXwBm%Jz3W($WuD0;wZ zo10=j{g?j4Y=IlteULHD0$t$~_WL9rXcZhixY $z*5ri zuQu4tNM4h*`EHkpu1`+KIphS% lcp|M;>Uukb=@s8dJ4OENa7}2RMH% zkKuJ_UAbRT&rM17uS4fKegm8(011SC^Bak*YxV`+cdPSS0k;O~7g<_LD_F_ZQkh*V zQCK+jA2=vxDU19>Yq86xGJ(diI)YmsuUZNr$KSZ5k++l`#3u<|b!V;>BVv8_?D0jg z@6Y+CH6U1VK({0 dJWmo#7vxYfjLnjDLo#z<=k-qnifSk^|>~Rin@hmMj VVBjegH#4#HfRab| zg2XtrLTnZGzrSCE;3oUEspjdKa@wD}^N(XTX927IkHou%x(_Yg59qQfs3zs9)yR8R zNY_0l&y@+VNl5sS(Y`RS(J%zGVO0nf^&`%a13Jc-Ajp!zK65b`avSvCIDQUNqL7sK zD#}->P5#Ue-RK=@;Gb;(;{LbFn$Shz#DvFBYyTE(C*5btH^bx$g jb7AMQHlfdfILDBz~`z=KTe9X1*l2B!I8U ~m(b-}sz7$Y9m&g@yKB#E#Mdmuh1 KL&LUDDd}IM0{Ifat(|2DO}^84V0aQ zJFa~@b{*)xOpAjP5@be;S)CkCqAxzYE&N~l1MfB2fOK%&cKR4EFmJ#9y2~THoM>QC zu_=hAGQVxv$Fu%#C}bypW)Q~u82R&${$wj!8lCuAZDaFB;ITSPfr)p&&rzX21?!Va zc-NtePbC%!BH~|_LS+9bMaa1~dFGIh6Ue7+ue<|jDN*89&^!NUv{q5OlbFH4-TTQ$ zz{Yb9K+7Fj?;C6B;OL?2UXcJW&o5SVDhU73o!J-$ikQD71kp5TH5G;q(bXWaB(R2} z*h{PMCfG#G!YOONgs~Ja(dqE 7kg8#^dP89fVbh6*H_Gg`2CYEc_ zX7%h2{aK@7n7?w)BVsU$NeV+mIbkxapq@?wC>nBUI@G6GnB!sd`hnaLgnpFbBK+|$ zP}R3rhK0vbM)a=z5r`>MQ)N8Ka7kD`mw+nd`OI_rC3w<~V6t8Z*_XvRJWV+XABD|( zzvutFO2}>6GEq29sOw)uC4#f6z(t5Vi=azELfF=5^p*gJDWb%=d6=(+HRjg{<*Wk^ zK=a{W4~=+*M^@OFUEPZP0rjfe2&fPBb#1!sS(X{6`%%&>pgFeX&|RkOS9MQzZz$__ zl$}T G%Y}RP$Ai?Al1a0o!~z@?`a{B8YPGB z6yiV%11T8?50X?kDRRhhc%3#lPU6827<`rW-`i48)X2IKC07hM*h~o84yi)aObgm2 zw`MDQvtC8U@ScSx9Oi=9{=`ObGx0Uvdqho0on$&lQ91x^cof41_gx_7SkwPAuy6dw ze(*Ym`pHM-6JAVvn&KNbk{?k&UtM4(G;U)PoHECzp_-;=ppQO3s|x4JtDoT)U}h_h z4#}J4n$U*?-lB0zeVaFC*%_Lawo!sqsa}G|erD#<%#2d3oA{xC)HLYAp%cf$;i=O% zGXIluW@e{h mDPN(ZgZ(+LN25d(r)` ~-=(!NW84jTIrZ457!(z)d~O#Qs5R zcEES=5VV=^SDC`O&)~=Lv1dN$;6 zlYfSyHL9onR=$j34y9}T0J`5FMV%Ud5P7Za(IYMtMTN~vH?d&3apDp`1;-OpAb}wN zI&~B)%Ol`L>a6<_P3prIH^hpCq6C+odSs8`42F4;j=`}H9~13%=D%%xAL`j2n9~w{ zQ#I}+JP-G^;PKZ)c-y_%KM4wUK1xG6Nejvi$RNOy%li4!YZNta4=7#1`!ayRXFf`* z;W6P(AkZ2;F^Ey=FRPZ=`X7;y2Pm)3)m`s~9l+?kJv&^E_xe*r4wc}QI>d3bk9u+$ zcfvj$BV~rH$@N+iEWbG>^(12Cau5nyEVh}|2M{>PDVTd;F5itHs)%jx^Zu%OR2jpf zMJ4oHliIkY>7K&)1u%WPfO|lXpIcphBb0ynXkR?9wVuB*&px!fS@EYL&bAFA;1JhX zn{Gijw{;1VrPr4DIkiHks`lZi3B%mD5l`MkHO9LK;@em7WM<%QT&pL^JUnC zTei~P(qH|o5u2|Zb>aVTNdH>!i6|Df;G5T|z<20eYjEqzZ)y0AUi5;2H!hl>h( XHrMs1ywT6$+l&c>0AAmOtQ)3hupdkc{2pzCi!D zupHHUHPq&q|FkK8^W_wdy}h}O-SYmvNBH^a9M9R q*i0IQ#qgm<{xM!P#U<&v^SVkIEZmF`s4 z%|l>S89s7^=XeBGifX(Mzn)0kL3-h1PLSXIMdNS(FkIS|s>p9ppN@KbJlpMB+z6ql zJgQT}^FwO>UjRBl#lP(&-g&BUHyP0*RXt3&zE}gQEtL3tKA!Bti9C}?qSPx^SXn_W zfpc{xILpz0xRyp@B|5u88!d%ZHKvgbI-f3N59KjPDzRgte)Vp?dsBtCf&9alKDq~X z{bX)ljqQ3vs51}4BqQ|V=vF%^t+ sm=_f zYnp?%jV-Db !bdrNkqw^4(CgaHyXtGeP^e0P>Iw5s*%|kK!bXyva#m^oFVdL5;)1AT6xx*?h`9M zUsv >$ML6yeR}sK&y7=@e=5!17uET5 z?eLw*&i5oc+vCmjK;=+66DAI^E<+=tBeqt52tCG3a_za^O2XHTO3CTWQP^Wsd&3Zm zydmKC6Li9QMxUEI+r&M3Ga|<}!(6QnOZ>0)Os^vMhdZU+151Aq8Gi{beM6`-1vQ0g z@Z);v?0CG?06p8eeW7CX!ESbR3uiZyDO$>~d2%4oB?>_jxL+PoXg!?A#GtM>gs6^x z{GgJ9WEeza+|+b`zxvDU;Cpw;cIWal=6^ViUpXV+(0f1YyF}dQx1D=#hz|IiP%_0p zK@=MpqamjnYL%{NV@U+l`8tRYlsuBzTwh0gw(`lXNju&KXXeR%cI=NGU9vY*1gQiJ zmbEbI_fhrlv&5Iddkj+ELgdBPcQNLFwbF~Uc`eeJJIe7OnWvjk7=ATRr8QeB1EvZq zh{%WHgq8xh= HcH^ERN9 zyM4tVI9+gDp&Z3P*pKy)lmJSaRUUrC>Lo%teK PZUqEc(fMSejsJ?dRKEcCTP?7cpzI? 1@CMfW#{L-Oi}Xm95=eH6^$2G~uM$(d&gX+;f)i`qXkq{x@^Quz zoRa|dk^wPxn;ZfH+o&^S4JGP4m}&L$?-j&*AjU;%e$yenw_5Lz=Pc8InLacu$q>&( z{WY^F$3tT6$M|NuZ`M 74b1&L|&a#+h1JD(bd`!Z@aBpJ^KFz0sOeM=5Onq8lg%1AG%Wr Y*vxZ}E-+BL70I_(|| zL5J}itZ7vSASWBK>m;buWV6-$GIs+E)!>p(OxUml0TBc$^I2PeH6ym{qr<@Z}xci$*mjS)IU*HqTb9Ilv%Y6YI z2%?sbx((7`pcVjsN!IFW*^g_H2sI;`9&nb2^mgdg_G42ILJt!MI4%x-j2VLHhF9X_ z$|Vg=MQt?HM97CxbwHGO^OY9~{v9gggmLbh`{q02JigR;k##TLcjn$iTQ&>Y1=75X zmI}J{$h}-|QqDNKX^3yIabyZxSX>^8g0vG?$N8F@sL8f}K)h0n(gvIWvz@t@w~|4l z{=#X$y+8ijI9&wrXK>tao;LbL?IrU3BGj2dY!L4uqQ6}v }-N$l9^ zWld N!lFXsK_nva-*ZM6A^dsisGXU5@?Ea=8>N?+ z^G2jIcb5E6sX;>_hTaHGF+j7LV07s3bkUvkT|aSu*Hn}ZodQqB2gYQZT(xMpUrD7h zlLs1egzQ=vyU{K_c&@aaOFLFG>A$&i6UL`yg>Q6tF6+L dC^8F&om2$_kS?0B&b33@#^B$Y)G1$?M9T3Fj9cL?D=+VnpyO5NYYy8?2DTgAVG zeU~m4za`a~hiftj{61LH#zLY{(L@ihpU^{pk=G!4XigYo;uv#@SrmOQg86cv!rFo* zJs~{iyjbR|u{xj8AvM(w>uj~(EW?1ZjK6t!gNN^6;b{gtKiy(Ax$(y14cTXTOtnBm3eVCSa@#?K7@ zf!y81bmKzpdr2?cy?NgC)Y_>V_0{Pfy?d#zUKnsM;l1$L_tHP!)^NI~F8z7q@qLcG zNu1}YZxp%xk;E-se>V5?0mysFu0$-om#k}?z esj!wig2r!>sk`$=Zy?EJj7oUT@K#fsn8dCs;*^y zvDow;jU76 Cp=-B9ulJa|C+VfV2JcG$W~KQ(X@6aB{7C9wR-8VP z$?v57#j(GZ!NZioqme(!LO kN%FQGK|k=<4fvF2>vZ%U=F!eF?Z?BfZ<@*Muza+m#1Hfb z{HILozs2j)r0RVLKQ_<$vn;(g4|-P>cG$y}nyxt=$@7rbrxJxBjW@%kwH|@4ZHUT@ z7=a@kNFAu5V 6*NeJY+cNW{YV63ux~k~1kY@GH-;(Djgo4AH)_5xhyZl)!lIMK z`6+?DW}}@wCr8@k7q-ZMh%^8AumAeTKdHyR|0ngndHELVUDh_Es|2E6eC9jJ@-y$2 zCO`k|oin^oh8j!{W8OOM0B5b0!{wHZ)0OKTjr<@m8tw{}9xuid%ViuE5&PgqGlqi% z 0gMEEcOlOv>7gxw|zmAG_w08R@u@5g?Jm!6>qKCgaFIj9! z&gcs?g{2X!j(KBz;KIS&k7<=`@U|I@O9e|sVJP^~uvs{Yxr*!QCV&VFrxhsyS#)0c zQMqJl-M|;%m^irZ{^P4%FVBNKSJ?S92zJRlzRRfIh3Kb$qi`LgS4(T}1nFn)ElN)w z$zzrs&R__mR8d2$Xl6PArTZy~9wM93&C)85b>^+m{XQEXg7JE5Emu=zS >D`gi!uDQIek6N?0fg8zO;G|GGC2%s-NJ! z*(S*k!~K|l`3dgFKOb5pc^~b3i-tUvPUsyEZ71xwafT3BJAgdEZB8l3iLfKVJ?bPr zZS{kUH}S0@mW&U{9wM%U&4KqCy`LZZDFu tJpJ8!%(lb!`{<}Z^JauLvbZOeD4#7c;4t+?cS>^cl8H1IuaBE) z%FY7LLIlLECfQ_*(Fj@Z=mr;N;Y>a%b6**MuEUb_*U>^JUlGGhidNtM^<0||)$#cI z|Gq__pYvV6JkMU|*nan~`Q1ShM&1QuWTmlh_4M@GJ>I_$ ^I%$G`DL;9W;s`~}Wf%q(%??8}SMoVX;K@1JW zhO(EA4Bs3quv+vL5ye7ms|czmX-Rb8RJu4Y<9bE5;}4mMrju+O$Ia9{7W4`b?}7T+ zE%aMqt-l`B`W2-0djPdfv)%>HxWdqX^)}wpqC21v*&Vx#;Tz_mVOGH&4bUO9TdEVT zPIs0`4_6hVh!#}t%dLwSA+($T 2GM=}R3gpf7)R zM|8AGD3X!Zg`Crz#i;v(9CPuUoorX>zBwWQfjc`oayFT+q6Y7+hPzyJDzpKAijbnp zvBXI}OWLWBdZ1QJt+_H)>+f!&51;-$kbYqUeb(>{=ewGxvu71wCZ-BUueZt)1P~++ zD?8WaMSz2S%Jny;7?^%EpYGIsU9INwJ~vq00rxZB$$5mIB{bk{4jOJBWfGA4^91|e z=J_p9I;m|N*%$YruavZazWUvN9n-*z JXKd7=OsSBsg-qG3 z%k6=d@wM!%rV|BG#yfMIlZq`9{%D)fw%vr&01sz_2x|PI?tgOwef;)sg7piV=nEAu zAbnROo$ZxFgkgQh8E^btof2T*5UqIIKR~Nd5d^GtF!?Pg3>6I}>KUzn&7@q^jU(R& zRG&;q3P5meI*7CRYRN^)W+3}8ciYqb>_+-Ma0Y%<)L%Jlc~a0q`Sf>pAkm?;PideW zs>o($>?-%T6Y?dsf@DnzB`weaWe)EuU~`yg!d`GSzip-lQwDT;=r1TOAP+MZT7qe|dl96571DP*k9okoXG8~6V zL2X3E1Hw7A*;MgXBL+5d7({ArGE-bX%B4q^e#|poJY%(ELXX!8JzXc;Sh?MGe!iLg zJ~(|HMZOlzlZGcSPd~b2Y3h>(0EQVu4cr5w;=|Z7W;<3G`HXOXpk}jhVA+jEjn}Hk z?<5Aw6da?Xg;fcQlG~|?9&Wel9E18x$= }# F5!!cEEjDWZEb(80NOO vVdHoVZvcwlq8B*CV^F!5_8-Be*VP# z_raO^nOS}{ppQzPAbtG(j=2St*#baLV}DQ(0am0JRycWaVXJ4B+IwG-JccnXTqAHG<5Bh{3n5W zR`CSs`B!&9`*>|BakHLHcs?*?-W0~_{J1?P=9Ur#SjxA@4GtPIW|h0aSgkFu@VBjr zO~@mO#imNG854?NPfzPGIUu&M+)bg|fId{op9$xG7fvcXDR_eNT@wm!YBYSH4$GPB z)U2pPR)vSde4XL*CG09eC169w$NbsAP!r8O%+(b_v$Z=e2D7nzY?gJLvtw)?FYyh) z!zd0NL*cf${p<;a?|?C~^Dmwpde+ba`TV0hk}$d}Q&F3lsDPl*(o?9~t(1tdiy=tc zZnj&0?KcaIHqfyt;{&do9khrd^f6DZ>BNFD&H@T@Qm_MF&C|u$^9W}$y4@r{8_9>y z{$eQO#E!lg%NHtIFkk%Yj%JfJ%du9h5<*^Z!U%?^3r4Y7RTbIPGZ&1ixU#4+$3u45 zpcJ$7gptr+CB6k=^I@!{$a>?6tC2>TIXH5EXG4Wan#K1{^gVv}7sHtqQJj4xm`@5? zD4+iB4&=lEWZj}8wJP(v!I;fZ6A$ym4W*TMXxPSEp@xRB$R?N#cl9`wSQe7KDx%Y) zx7 Jp0)z7yfvErzmO(L2#r_DJBQn{CE1*3u?8 zAlCef6Z~K+eD{Lq`OCir&aa&4d)Dv-=KCi4i0v|6%Rt7=m@xCK!BkX$)}{5xMC4Md z*;}?Vg!M8ai7dlSKw1!Pk)w01kBtz2bAs2(D8WIq4*}a+($!q*8&EyCJ$3Nu6Mf$Y z VVpp+h5x-h wC$xK~ zozy+wjHArHb~7FR1OCWioK7lFE1=ij_0EdB+&ow8y@?a<>1lu3N7t)xOaR;dGU-S4 zdaC-HMQ+IKcmgekMFCO$DB~2akleMrx8$QEPO847sr+7EtLt!PimN8%w{H&ZT;0lB z>bm7e;Hk*}cHUTv{c=L O+Pe7nm(Tz6pIH0t(A#85PmePH-~Rpa92|W4{o70*p8n@QiML5kG5w!&q<*|P zB>MFFWrj}=|MN{Wyw5cmyVSQ_yRw7x`HWtuC&~4TqoE%k3fXvBN6Wt#zk27qJGj_$ zPhKzQl24KNakt~gU C&OtzCcu8c(6tnK zdWysH4A1H88~TI(z~=srM(Bm^N1S^_dd(c6Eu}x;6 Kk z#2YgCkP9(U-*2FrO)`l&>~^{4fcxDPEYTIZsB%1|z{3&bVVb2Ixmg|*8k0AJ&>quy zzA6G>8%fxFS+n=d(-&0sOBP+KYWS6z`$$zkX*dmXfBxM&=iA}zY_!kpV$o-K$juQW z0|uqHgc6eC_auRTY$MIeiX*E+Ftv!su)Krip;#vJK_@qgzS2Xy?2q-VKTzqzrr&yD z5zANny#t3|QOyq*@U;! 9 zzuMPhU7En@lxd(F85kSq=sfAQ6PL)V5lLs*e$D@XG>iT7@7_7r`&cb_W4N1*4hf~w zt7Mhu)WmChfhMfM^*C8Eq^|%h&&hs<6{tU0R|TSMJ%Ss06}uV #w!i7rsMc|T(%O;5Uh>v_p!`Tsf{it`& zzC&DpfMVrFV;m7;-y{nj?l16W2GJsKLra9RVQ6!d%QbU^kk!ohIormvy#0bI8clU; z9a7Qu*f9NO1-RT%iM7yQi+Lt?2jrnTvn=gd@hLczA3iz7??dEG7N6)5T~u*0_b+~S z^@?`Uk^w-#l2d23-a4%>xd~!Cz#ZrSE5$5-M)SSFGsA5k2{>hYAnBc6AM)|2jHK9u zFgnWN(u!dK!zDlR6NO;MTjXS`ZdXxPPM%uv7jp8PeTV)KBFIs(S}feo2H z7>TQ#gnx7zDz_%wh->f^XEJENuNRzr(o^8K&_7kjEyMf)dfwC40&(@-8IcaOO}9`? z_wms%TZxkDm1I5#mkpDQ`>`^>@>Mza*Dxa=#qj|%%9Y?PDp*bA#g3Vo_?Xp@P0=iK zc`d682tO=ylOf^5D=TrwbN>hQgLp@O)j#~xbAw)%H-X*DlIxye>tuW=y3h?(ZIxeo z+ aBP04^>7|Y9-`) zR_2;=<=Tz{dp}?&HU72Mb81_JUT)aUQ@sN4wXf97GBfg{^raZWKcUzCo>g=8ocd6c zKF{mNT5G40ituZ)!G7ut_WV45N%gA=9BFyF|EfY=b|~O+R;lr*p1yUf7+!cep3e|C ze5WY$j^%+4%{p(N{McNSwR>)GsHOK qNxDery%P9%lEUa32JZ58>LG;u++R+~m(uE*gAE3LG z_BZ7BgY$Cn0Jc-wSt*pQl?X02gN;0&l_KJ#4OC8a1?!R`J&=}&7Iol-wku>0Yj{r{ z79KGRrKvZi=ylR_h?Td0Wo$G@Sk;@WCA3f)>ivN^T=|~Sak3wosfU(#Yh>U(bMG+Z z-_k$Co}Morj$~WJ856imCrBNjY=0WS!laiX^^z$!Ccc|z{kbbM;Wmbu2^m90!pQ)` z7HQBC#CZfxhB&)o72J;FiMB!bI$0Gw?O^av*q-M {Yec$$< z6`RjHi2p&fnFZc{p ETH5<8h6KG@w-edSR}o+jSWcL$g0D?I4;Da%3 WH{ICflbM{4I@jRQnnmYFF4yBQj zlSp89MAF)^?vMiaP?{afwu<;A@Ozzq$UWhbYdsta0GwTaJ{(DZ%*kRKm9t$FYg0yH z!9#p@JkM4H!EU|b7MZvvxERJG$<<@1^6k{KS00Q{=`~hXop4^H@xoEC<#L%-WMo#% zs%PaT_`#wW+qoV@skgPmj^jsq4q-RLN$2MWwH}`<9UL(J`03$D^y87)(tt2V=@i8@ zx9?9f2aI`tydzDWl(86 oX=XV&-7RQ3)SISAhVx-AWn)2$ zrqI|Dyy5Jlk=d>{*<*1yJzc+3Z}%>B>J{~aBK7q7;gM#G+G>!x-B=7br8z0GhUr+b z6Fp@Kl^X4)A~P~dmt4jYI;*|R!B^3AosB1wFo=?Wgq!*WpiVovI?G&M#{5X)LqY*8 z=_AR%l~VIj;JcM$^-$ Uc;a;H=w6Oim7w zF<5OZuNF1Dt6Ngm6+DVxryGSIQkpPk=yhg)1wRpPyZCi4wVlz|X$674J{%X3r)SZ% zgSYRqiyYLwo@MfW)#%4>`DAhL3H ic~iy#3do zJRJLLvBg&vmb2MPz@|&F@C`QR_{qwD!@xMMMF?4tK@BC*+V-d<-xzQ$cez>MC@>(2 zJ7&u@?qRsn?qe);NoPA zmd!+P&`qC-cWAS&M~NAS5bu}0R9SLq8Bt6M%i9G7?!<-ET~@~4{_{k{+VQ=A>8Ph! z6Prl~KCbXR|HJy4-(0(|HOpF* RTcgBh#EmPjBmCp8ICh}z&+^XpYH zx6iWc_J)P8WL9;BRaJXNH8PWbTjN6BQIKVle2meHRYGM78rhszS&p*X&e_6SiENpy zifMPXo&_ETbbM(y%M!CQ0>z+27;Dt4x^qW2ttN1z-&%98HJe^)X05~GuzI-8ck=5> zcQ1^)@~|xjBVkLdmJAaL^{|`xf`NJ2-ZYzwL#~s{u3=2 H=Q9c{hf8ZKF`2C-1o!wOPKfA)fL7)K4{A{4G}T0 zuB5!^ts*1Mn@t3kez0S#3Qjb~rWW(s5%;THVu8dqcbSP@aj{C`6Nj>ur4(g-VPX+Q zJ?3S`8Ss_4+A_a-8{Zdyuq`OETP1$JoNtG|t~2iNq%G&xu{Q*h=~%E DPb@rNfXOG%44=8$~xl@CIvf8P8MG@D%x(La|THAtu`O?PcZqY=_oGP~3 zSS)8KpAL;+<_n@*K^p=bT5)2Cc@3h=Wagt~*P8B3@%>s8-(LmhlkBU073-?&Y^y%U zGFA~19)Yc4 =Z@R= ze+}cFyL!#H=Lc=sHYTY7lXNOi9-)LS!@`JhYBiXzhV@7bWOHXy(YQ-QjBj;>xlEL` zCn*KI?ChX_P~VLKp)(k+F@ozGOQgTCFrT1t{(W)#<|+c8 2oJ43eSSXQKg{xn>tAXwx$4}pGv+>m}cT={yQ4t!63c#95S_;>yJ z!?EiY#qDJx>5vQD)na~8+JZ+-6kM3vDIGS`DYx^8B%Cu!$EilS v_2T z5vNgq9vwn1KaSxN-G9vIIz%X1WlOi=%f%b7zS{NVgZ-B!KaG)d%E$ESm&=Dok}a~i zf&oZne6!ABG-;BAGoihW#|Exdfzf6F4|Z918Hz~*Ya+dDnr;7(BQu_Ay%kG^_zv0_ zs<@#vXF>#-9CqnS?5g+k{?>l3R!KtH{;QpTj@Z4K7zExUiYK~ K#X>>k6NTND^Xm1TQ^a)j|mpH_5Pe z3s#nd+O&WyO97+)Xg{y3XQMF7_rRW+sTb$%2mka#i~TQoN-l?9ZL>eLcsWB6JSKyG zJ#nUWnDI&^&?!ReQa<)K4;>v|IizNpdx5i$J7dnjPm%iP%)4y(!;FH?{tLhD?P+y* z=fLJCp1%%Syg|{m##M`^*WI=)-+8uu+qXX%Uu|BfK1IH2OZ I(Tc z2>9T*?gPoklOmshj@}o)ensiaqS&{8;Q1}{-s^zcn|tkNL?%g^E)ndkpo2)PBvIJP zruxw#hl)if={m7GhAugvwKVm#3D=lHj{F_0_i|>F;FdEYH_le=EzqVY6Oxen@UU xnY>KNL^5oGgvNw9sS*@_=`jS3 zbhJzfYdvFmsa`Cb`K~6DO<=5QhZ#|O9y!BgGeB1vGbx8d;m T?`zAF2C!)?N?O z-FnoX+3AW4$|?mRjTJ{2)kINJ(jX&l`2dU*V%&sVtSE97^4Yan)>S5WJ*byuMD5`C zGVNrm`EIf+<_^7?yNQmnIE2N2A9`2*3T2M( M!K;vzPkX?e_dF0dzTtm89~h zp+bALT(4x97`m1fqlH>WfW=bVUbun^M8)Jx+pdtETn5o{j(6Bf9jdsQMb;RS$X-mU zx*Q6-`Q%r7&we?F-|=jJEsIZ%?W_0OGufY^F=3a~NKbLyT4FgUrrS|}Z*G<(EG^Rz z(SlVyMBSaUQPy2qnhrL+GvJx&EVL0=8@t0LOFJN^29QjYY`Hb#a{V`E^82x-ui|iZ zO@yn@3NYuuCd)*9NuaTLX;&=W*LoQx!adxu4RGae+ WW( znAUf=?UNI2DUMJ>U)q*`Vh=W8H2Afv@h|4=FA(19s_0gq7F=Bq`Pvp zo`I*JmbhF8CAQmKmHe$|5X(-V8jpy|aQTkF`#9zjeLoFr7X8&0(w%j9?_u&s!LG03 z@p+`{+U@onChbjsuyNLs2YQAOYffo78 zB3)35752GR9jg97@#dhrL8N*vMG>%?V8BGh?X=rZ6y2AzNO6#+8QSr*a3=$8z{JxK zTYBVnyo7%36#f0oeR471s%vpaNuM*qM;0DG9m`m>sMSM%4!U*L?crT}Ht#D!xM!M- zsAC9?(gGHWz?oJvVr};U2eE0i+BsFcsFOar^wqF3Ix^HPqNRt;ID;-rkC| biP$qcyrqhqx>+jAd_)04 z%%luG8Rr~-w}vxU+0X@IY60CLP`UQ lt z-BZfpdLJ*Kc)s;;?4ZRVZ?kLz 0;VE?)uJiqEP}I?vW=InVikI21q5t#hcmyPC;Dc&^Mr2S@d{}ztYiozE50|`#Xi -Xf z47X@lk;W6C%xB8fAEdcyDW(}aHLwIokEdgHLQFZ%t>AJbt%@1Sta6!L=$)0XQN}3R z)p(*>G(;sBcPj_s!_hfui&xX6j@2^mo-huS59j^u|2&*Xwb%(h0v( (F4RT;)TU~B9_FN-hN<2U`N@CTPGs-;z z+mZK|+&SbxnBK!P`2LChfUzH~3T`|O!fD8Eq7TCFskd=K`|SLHM|v$z;Hz=AXr}H4 zwA^9L5Hh!%X^Z}r%T&@ccGb?q`ra5Zwh2dxkUWgQg|S^sy)u^l*`N;QW4Qr;Eo6&w zJhI(Z1eG!d_Y 0uUW-#9s#RCRQh3LOJU4b|$wHACjl%N|GDI+S1a;Oh zujxzBESX}N9d{bMGd`z-d7cY@n>;wWxz~^C&dzim^dgTAPkj5Pt^jv0a{XElTkC%J zgZcW_!(*o{Hn}YX%t>niw$0Iu?vF5E(0XX-jLnX3@ie?cGt&&?d#Z z+O9;lTsRtz#qn-T L($Z0LGx z*WdrkKm0X^lDX}~dp~u4^eqof9^y3mpqU$`Ub6?0?zijt{Pehgcba^}5-*I4{D8$h z|H2Ok=D1qeX)Eq{d&~8MCjNeXYa!!@B_Tbm7wLyza1SrZ8sA zJInO7{cs$^mTmo~lG5)qE&SYj$m~N_??c;pFpP4~@k~Acc Fluh?CrVz9CkX~;DD>_;UNExciM#X=BT5i+TlE{T0da&vb_Et>Zd38 zndfBxAczcqZ{LTN>g)Y~(Fq=hgTx+E^Ht%vG}?4e&&hUv#w$j|4WsU^6D?np-`j4_ zpC2BHer&WYr<-WyN_sb>K)4A#b=457p$hWooNqcMJpxk|q$8uEN0VYquU!lRDQKF4 z1wGk+$sN2~Vf<8F41w`-fy^Zdb8EJ((RQO+@#6u132n@_8|UA?)z|;|YLL%BfwXlS zU$OPRgPl+05A1yU+?t)*Mo!~V8VkV;T?3FEh9j-NvziVw#;jR?kvR5B;A;-*qAore z!%K54dL6Rn2mU tXj z
^gHd8O^kUV0+`glRHTi!-i zP`{Ci**M0Ud;->(u*&jIh|QEyu#40Qtn_1flh*45=lEtDE{CR0S8yNix1IOCYZ?2N zDe_Da{_BJCE2hXxC+W9g_OXW-k-VatDXj}7oE|P#&l#jN~zyEQNDPvzY4ie zo}qV|oO_1eX?EtH_?M7@C-46^fd5GPkk@ed+ZygQ?`j4;a0_^DxxfxK7Mo7D1F@mL zTQcj(Dl(^Nk#>hmW1NfY6b+GPQ;z3|_A7pX`I7H1ACLzo?q} z2{t_kV7`M OyS^AbX6krP#E<2X99U$-&>r0{}@?N(@FuvO9( +#`5`^mEq;c`rPcHklwR3XKSSx<;`#|Xuk5k=DLq%iT@q($f1mGM5Ye{j{E~#QRD7G-56-%)7~4*q=X1< x (WX1>DQlpi0xkdKhFPuevlsV%2V{E*%1fY$K;5^ zht|0fEDeOFHv>0GX!#2d8@a<_#AqOynm7xXHWw|WNL5g5%5a0IA)3+1cBOtt#)oss zjHbbS=AjFanl-Cw#4^onwOPr3%e=$u4*fqdo9c}ee<2PZX&(x+9Y3_sAJi5NF3 ^KAK`QIMz;kJrz{Fi8zAYDpIIGrunE-Z zf(B{U>&((AhvjQzz78`s@AtB>M|a0|Ovmzg4OHWQNtul2d6`5~#KHV*)r0DkOG!u~ zfA>D1Z<)w0lUe>K@ZLY;-H2^`19+eFs4s7{2C_@7JBS zi*TBYgT`h PCudjsZ6ZvED)YIqI;1n4p=Xrcm^fh)VQl*^uVak*iT&k3_m@(A=PGC=( zthSO-X<;x(YaH1yBf+z%0=6ZqE;dU^^b3t2!ekebw}1fuE!D-=0KJkQ_p^HlE)&}R zF8c^RB|@)?<6JMY3;uvUe;DJ9P9DYS{LaIFV+S7#m5ohAX`VvbhK$oC$nI2v1X$b6 zXtW}9X^x=d8Ih9xZ9XKlom%vE(1`C!+88(DJl8hh#*+<$v ;`hIHr-3#)q=>FHvbZ31$^5^VE>p5?@*wC_+H^MxTnG8UJre~3V z04fhm0hY%zlB|O )hs<4ZAe-p3Im=Qmnoq)}F&7n+^9yJW?D*^@;B zu*kt_Z`PMmWkT%2ZRw0uvH`VozXyJW=Mluq#w`ROg{aObD@9VP#!X ^sSDVp} z)YiR@B!PNP$uxvAGQ$EwgN?R0nl*ykrw3ixjj|~| hyPiBm7%5 zzpvZo`EO0`W~SViO2>I0NBKCv(SDnul}Qn@1xCY(gzvh xe>UVMllZip5`c2k{QXE=mx{b<+O6dFPp0FnP|JFWgA zNc{rs`+Da37b5tqgFS%HuG+`wIkVjD`U7pE DBh#zrKikLK5EWH2O*bcqD$n{o|+BaEED(TtWpo97I~ej7fn b0Fgls8r`BLo zIJ=>V3_ye%H~n S zSIpes=um%lq<_+Xflgxzx+dWU$NE-p0A)a$zX&%7$&Th4Poi^o77ptW@Ptu?t B?QgfTN32uG5$Rxn>rE}%HRZ3MB^< {7yG!MlWOoCUp)P5n>Ug+ gI> U@~b zR&>)b;&9wuC>W9MfBsfZi=X5C^=;5!4uG?6o^fz?uQeP5VO8X5lc{@KpQO1sV-OzD zS8`kkOQ#59aW+!$gjVJbv&-j$$+Wb~P#&?x4p6uhn=N`lu$j%O1azeS$QH$=-zR_n z#Pdh3WM6^3tGnjE5_K;f9PsvX)f#Cd3W{NiiA60NmvEE%f4)WS;v^gO7XpV2dBvOO zQ#f2T`V?hNnvq5$$(H5m%*S`!W^8bB)QokYQ%$9G=(rt8*R0*Q
U(>rysC`w zg%~+d-h<; !r)g)O!}zP}9bb&| z1NA4Y??1N2dv80UV=T XQ3`hoX-a3rLh`B`;3cIi ztl6)|Lo2UlV-r_vDcXT<0%Bc%sPcyPyYc=VIBpRofBgj1Un;x(OUlE0m1w?DFy3^t zmykF2T8m1atz5Z}^M1PH8?YjiQ1TS5E6gH@cHCLAt*5~PYy_3|xEYPcxKpYIfvKd9 zXPc$mOe1X=b<)D0&kGzFvRiUF(|*5d`p1FiRpp^C#LI#59wLW7tx 60ZSP5Pxn&+-m|Ge|fd?bU}$=13q0Xw4|y z^;m)?>(&Q3{UscF_X6l!4UpI6rM?&?*$F1?qZEBz=-DJAZ<-vZH&cdOi4h=iD(*EK z)|^JWK^Zt}VLC;lm8NLGj7uPlaz>_zGJskZe`zW<5v$XSemKC)0S?wiGy0Z|zfaY$ z?~u%!CAq$G_%Ay-Fyit~YnCW0*&gF;7hIPLfUWESr}NPqiWnXM@U1rJ8Xdki7>vz| zErD~Oflywy(4l(1nxqgx9sse=X=ffs@O!dtV8UJ>>%`_J3M~Aqzwv 2ZUBz7 z8CaMw%8N~$DX>;pC1i7z8&&3d%L_n;47MbMNZDiratiNmDG7)iD9aNy)~W^kf4k$# zziZpdABfAVH9x-;n=d^a@%eJu8l&9-QX~b_ExnWrMwy<=eQX1dWEq0|66+dPx5pHf zJhb&7fhCXQz@4`m&-~IdW<$iIDWOw#p=}@H6-YwnksYTF)e@uksvxhcpnm0$9!MX? z^6 o5BYvI!eN6OGtgIBT!Ve=TZT?T%MQ zH8#AmyBCM)%tX <7}YS>~?7jdX0n)G~=RVi=RFoHbxMDnZ#ERl#)TjKFy%$$@If z-VW!u*yiw_GUWTi`5%*sfATF`+Afam`#F{D?|5MBXN2Z@9rG`hoU<;D;&XQ0e(OPR zDh(tZMyWLdCSnW+V$B4 zE|MKr(ZO;64_pj(^>1;heLdhW&H?*7qVH8n-fsZkp@%c<9fiKNe`1X6D8>!uZh%4X z4n>;KF*b=kb_^bm)n2NYEI*q|c7-pB#Te5}M?iyWD#Nw{4I_O#m}8w4%TG%$^!a){ zr`;aq{?=VDUw<<9Uj%wzp_zVkkiu7@^J-rQoL+s<8nK`>O;K*+^ph;7hTsYjJlGmE z5iT=6i1#{-Ue|-wf3{KNT3k&SoSM~!GU&kph@x~bEwx4~b7}{(%o=hKhhw`K$Nz4X z_T{wAzxY1Je^;1mA!avD7x_ZrI`3gGQs
0&c~=7f6RfdmGH7Bc+GeTEq9I=+GWZqUk0hw=9v>-!jJYO|$pk2k>tXO!`8s zpNQ{ae)`ltf1rfx&D5F_UT9%VuHuWJ4>fbgR};TC5LGBp=ktneOmK!^Xct<*owcZT zC|T20AQ++|BD*d=DnqN&(}U$UKt}75{#zpaF9OB(h`V{d))xZrvX4FfE^oBYPflgo zjl2GGRAW=pkkLtm%@U5+fLSj_I&9o@hI!1d$Kc8xe^M*GZb&M#C1A3c%|a*MOTdH* zNs2&_xfUt{s{t`S|CXf7Z*nO7K>>$PAn>De*}f8qSNl33^6G=u$Q;ms+{i>+)9@6m zv}LCPA!y*+gP=6xh3+&6O8M-tnZX3 QF^Vlc4D@sy>lj_a!e;)vH`n~TAlnz=_x919UkTz@y&RDI z>Q-wwFR~EGE2dd=jfsY7(rBE_hLk?nh1tvwfUeb8rkGQlGlT}?-2m !GQ%1#$cf3WRremU~(4kU>6d@tzH!+t32>WCcpNB2`q zxN;=$7tT#j)c2ft`q=&;f|%*$wVCvFM4!P*&=Dn*>&QNhPyJ*7Mkcm16#!z`II)+z zC4)Iz9B*8@PTe%J;iOh)KGE?KYHiALm+Uxfw}*U-_Wf_4!;#moPbvLM935#Ne^B%o ziEE3Y9W^wemDMpI4pPzX1X@zM>zj1fm#tt{n~M&Kd8$2G$#`cXBGU}!{W=d_x$#n3 zACI y7@7INiUG8E7YkZx2`hN;y1HKS<)~V{2KI*}Nld zY0kned7Ri_z3GyEzVqqPik^(Of6D|y O-RLy~SNO4$Bb+B%a z!@ z13ut zNy~qGgT8YD%XQ p?}2pq^NAx&1uO Ts?#_+zgFgZYqPWtUJ@RCWD+bQV~Pf zpf>AKez`G{fMX_}wJH*DBc*b+L-?o5s$})OTGdkCVqA0K!jT?JVi| zJHYlt{(!cp&+T&vQUn(;mm(mj+;(M_^#IT#sSsdQ%$@a((OAe0e{LkY#Ckj2ueqEc z3^$X-Xu~GMBBB?iKdYvuVsmKNktJo5Aaj@dTh5RF&XQ?^^KZ;oc%lD<^iL*)*~Plx z ZYBLw`4?wIBl##Y`;XewkoWw zw9 1N?iK`;QIwC#;Fg>-tAZ6I5-T|zKOlR zk=y1wxhTgYYwrd8N1g6P;iD!G$8XT$6ah>}LvG%w^S @|*wa~rBgonbEEP#`Zz8)lW6DTCXde;{ssNW+j7vpL8}>!G~_$u~?N zZ~J)}zq6aIr O!y@t||dAsjBJs>`J{S)bWK}enaZ}n0(pQ3y&}Fw^tz|4eA9QRe^MEh&%E$UEvEq z?5>k}jq2ris-sp>Ivt$sjjEZZa$rc&8N74rf5ITfmEDEwoXzX4p~#s7(4%0;=ls_P zzJ79byOJbzeNlscz(32N*L}UP==GC_V}C7N^^**ecCs^HW<$_kEX+~BEf<>|&HxUy zbE45M+Qsn>i#2q*B&xMpEfh;w_hnxctznMz=0!DK7TY_EvUv+Ze{^gzad2K8Kn)WE3WO20XS-tH_=#+ufc%w1s zZwht726Hj8`{T_hCXBVrD_AziC}yoGe|f`<37C~AB}O${+L+-i*HkLm$bXsH_jjw# zpMZ^*=EZ@1-&XVFyoUo|&Mw<;FbJnQ$c$rX+$d9ExM;>SydjfDnGD9nQ0#*PM-U8( z(Yi}U&eC2kQVoHC9*V1ruDod$V(ib?wLlC=u0e*#Ai#C|cNYWvo9~ftgF!F1e>Yht z_KQPh$kf(vW=?i5(g52-@NEZ&Emdci4@b%$BM{)(Ioq)@7J|2OjIzqM5r>JyZ!^1* z`CtLeg~oR~)1@;aQrW?LSc7Y}vxDF;f|T97bhUM#;fpE0#?#c{Gh4w1uT+WMCsrmy zH*9|oq4aSb!GFN7`SjT0^jq^(e-E?c>0yt*dXrU$dM?iWFGodc-t0TC<2`?mME>i) z&c7u1qkG=)kzQ&$dxpBlHsBAad&e@mUpk4$W%SL``Aj0V?UcDWq6erPX&nJ^T#(V$ zOYmEmJ!GYM1Ix${^oy{3=;Sq?_qQI7J+yH9N~yS`bS6&xo(d>2A#W*{e@t{w*+h(D zZt^^@-6b 7wBrsncR4jE-7z)Kc)}A<{2!9 z$(6+J=i(y=+i +HwIs?F?{77hJ??oy+#cXG(+JAHh3q}(E#TTXys=#8n> zj1J~<==N3;B_-ILT_w?Of81F&!@0XK)_qNx>a=Nw)^P4YuH`Ax-o|bEW(1C~yes$e zWxWK`Y!;Mj>3yG%zURs(lm%UGq$C2Xx*B}2r9BF*~%fo3MgAvpT1k0F wo>=E*PmDUp5|%N2loTnmLn&M*Tvx; zMdgL;Ge-^=4|qG}M3k)F02^lfNCKz^&=(FxiTxbz0G`TB`gl}h{um?)J+e_UqJjyI zB`P*7F>q#R#D*<~aLIxwF&uPbZeXnRV3n#LapbEozPXj9e^2~??i$O@Au)gd|HC7J z76)0#1+ >NAoHSa$6p`7yUP9~~==OA`>0xX %|bTT5KvsrfEXp=?ZLuMYd?}L7J z7`CT%^A*U`e?1j1wI7@`3ihgf>V@lPe+7Krut>eVYWJ)I!EdKErwFab*U!H0LDxIH zwDxkhFfIxD=e&As@MFIWcJ@Ypm_=#UvE#_tn>5YV3)^5N%)AFXGxhkUv-x0q+%Y4b z5k7$D?DFAA@naCJC(8{=ap`0+<+9a~-1u{OKhsqcf4`_$70}3OzZ6F6p2I_(qLlbv z(Wq+ZqCq*g0I{Govz(21BgryhAqSA(N1>^HzkzVz%7bHP`AMsWp)-@Ltqc<_A<%-+ znHO3IW~6SBwdM42Kj#fTA9VaX)Q)GePh37;JRGUDP(V I66c^c!nT@h&0S(u zk4t368>^sG07BwqRMn3cA}BdzmJl7A>@KQGe~hI`MGj 0z{bm$)NIN z6G+kI{#o6O{3t!7NF6+;r jA~C!$AgJbrvQQfiSj z%FFgZNkO`s0}LS2+l`D&R>>|hV|c008WBYmlg5Jel(&$HVfKMwF|T*3iZh)iv-*Y* zf2x>nYD$rBJ$Aa>%~R;Lv-cCM2%|L6eXp?}4m-!MJLzI?FBzvXd|WHLpJvrRh&H@R zQ@wsL3dgb22cypI2Y*jCzs0-D<-IlUZgg_s<&8%V$DTgsEhiPF0ZV|8PD^CzRznlP zfaPpg&{7mfyX9&wll>9^n1Wmx9iu|2e};C_QAS4_aBre|&St6r8Oy;?mf0GzvD1av z`3W)8eg9!^nOV=u(1niUWe?{+_?h?6*R6E^#?@1!E$1J<$B#IT^60Q;|HypLylw7* z_b4~F`+4I3^`}P&v`~F&o}R? (MR#pU~@F>HB3#H}>QH=)pcVfG-vHwVglg2XC)_XP)^?1Zo4$*9hJZdum&6+d>yc zZ0lL->eTlA=+El#wuclx^AoqmfBAvp0nvxQM=hcIF?KzQ2F3={A1>W`r0Bbd@yUhM z8E+sEn=~ZT4 EYb>$Y<|kaTjqzuiH7W(E7$(9$uE^OjIIe^to23WEzB zi5z q|R*aFbbFz z&S OF UjHU`w%SHWbh4M9z0O^r+N8qPkWZW`~2b9XA7mtvzTos?++QLU>7j6 za69Ze>ZU ~^_9e`Izz>#JJ<8Dzcr z3M=8>7eo_-y+Zt8>A8OLm+lua?0oS#HFRx%zZyO~t&LBEuwNv1o^@J`4kK|9>&xt5 zcY22HjfN{4*ZZNJw;|8&DNaWmW`YOsAO9E8a!PoQhsaGd5nqfZ tF5a(#{|rbDzx-j7Jv>73qyZs+MYJ3|C83?_x3kC(bNuJEm=Alq ziJG%E568YgM$W8L!JgRLF?x@hajQ%e*9$S}8a-#SQj?w7e<`ZXR$tW`lB${7M|w6j z>X<}Vi0gu;>!80DcI t=A zztPqzL!z0jh~S)8G29g(DlnGWq+9EWg6A8L^^HnqG%;qu$$|uW_Offpl)eP1u*$)_ zg84L-<3%~uf2DHdk7oU`yHZf;hW7BzIC-I-)(`d})OHw_+u5o2#CqOPKaAGvdk=8C zDB6ZG^KoaSP7N&@*W1Wu4R;xfzCb5K!7P{K$v9ef;XcYTl2T6RGi%dhEzjL-K*kSU zdx{&rF~=-c)E$BHW<(TCCqL=kZR0^Q_Ex98|Glvue`fC-Uvrnk{1xrP@Lt|I?o?^v zja`P+Xg4Kn9@zFUUEwOMET&$mW?_?gq=hW1MnwkkVm_oGa)80mwzQ0lG6$38dZMt} zBCCO5g?Sv5vGZ!tAN1;+xqpp%Bfd|bftJI4+t+=U#2-mM4er6i-Acj@q6h#Ek{cdb zFtcXoe+Jlk)IhZ}H|QK&&3&^!p>|o2^fYZycCiM7F<;$~8>sF}3j|?N7Vzn5tnm`G zC42xUSRMR{xaDyX(!=%B=y*{u%pdQ4|}_BuEO^?yRUa~ *Hm(+;q^W&cDfA8%!u<2&dil V)IljAO;$=mUKNh{i fASr?~I|6eQbedrb0 z;Xus%C7S^OK@dVQ^xRH37C=q+%TFFXf0%9>1zr)HUg-Y7zzetP(bJXM2e+5~R6+QV zW_ppT5bv#C`{4qxmht=*pewQSH;G}d#Oi;TzV~C3eR2l;Pwc3V;*VPC@qhAhcgSgz z2=w>|KIOV1d!w|)jQQvcKcs-%R8{XuYdoWS5cij>2dLfdpFXgh_T+MA=(^W)fAbx- z#h7w!0!9VU8MZ4XW0v*NZB%t=ePX!YvPq_5Iq8}r4A*^s7{g*O*p#X}N7$fR*U~T? zJD+yH8inWQhYa|~>zivka*v97N&7fV7k3_xbX)A0arGYKnHE 4D`%ip16hs6(Qq;u5jDb#{Ro0dVG0b^Q;_g# z8{oIyM$ojOwQ({KGt_wsF!ao)Fl-8|eUsmM9aHH^-I<-5_dE6Wj4+R {g$BVs} mSz){PPaGbNWXRyj(t<6aE+uX$EWcIvqliu;iT} zG sy4WJaiPE5X5N7LLyoXl=KP*8eXbg4OvLoR06qT;L2 zv0hi*{uk6^E&%Xb^q6 ?w%I}u6Wv?q5 z^wcS88?Xw2#bB)Ts2L&BwPvYQtr|qN6dGi>+054)a?33;ZJzY8?MDhg>j`DQ$ap)? zIwUN=CuOl-_<`s9f9ZvM-)AkHrMdl&e Uy*F!el}Q!^|4LaswmLt=A^{I$b0rXqkN^n*g0a44tYY66fpyPsA8omwR3@o& zs_NEszoa4%=?M1-58qwam+NS)HZYnCf{ADLGFr 9%|H%^g_-cR7L-P*u znUB7me-HJ}Y_|(SECbZ9fulJ|In635M#?gZPs#w8K!UQ{awgJ?lQh}43I+E{9Pd)z z5?q=X5nD2IIY6FZh`T<(n9dN!BH|wBr`LB#jQCm=;jC-^Jo*|P=+C)Jt=seOS<8Oz z+J6Q6LZ|cOVk;Zqtha@31kY*}HlUU_b%w3ie|omF4gp=SWT2j}fZDWl3K#Y!nPRSs z2w10Nles%~TnVcesg_Q1ggT izE7e7}o-U2=+m%o`_DqRdvGg_|OY&Ti3 z9G7f%F6t`jHeCkmrCJ)g1*heY)B!;_ne-vHc(K_4uv(!)CR@C}V4txB3`7zO7p8e-? z+Frrl2!5Rm&1utMOc5o<%0sFkGAh~NO)c%?ysn!`x)->Nc6L*PE($n>X$zl4iZNZz zU0D){#5~fpPK|(ZnzATYh_x*Bm2Atulg<5B82$TyPX3t$dMku~p4 wgurii-~+18C;#%0i1$K}p9y#aq`7l; z-vj2MFQvH)% QTyPJ_lJ6Iqk_g#=}-tF6Ogl zd(7}&pbt|TkQipE&2|_D7(Kw&Bt2V|ykgS7E7m_tbKqa#pyE)2WUxmO{J9J^0JSLO zN>1XfTZqxuJB4wG8O{-LwqVU(^*3d}kLHXuHzm9&z__YL%`y<}uw>`Fe;ji&728oV zDK5E*B+Kx|Tj2a+PyRT7 6I-I(A2l1Ce?t z=a`Ev@zh1T)pWb$SO~Edb~lfCSD(j)kN29sDY&rS`<&OgqEus*>?O*44*J~QX__S3 zBI@tvDh#uToL==DNMIc9e c*LPe zHz$r|8P!v4-0O8Peo)zc275v2^W 2TafxzlA(Noi+bA$*=wi _#!hXjF+-1w@8vOliJQ}F)#qAW z=acm5(%P(iiF3Y#F! (vKiGm=BO+{GT*Hx*W zPsM8~x-Zrm^pM>4EBGt6K3u$*SOy@7YqE3ecg{4wx<2l$ zv`4n)8^{+-y_sKD(SQxwU`utiv{+Oxab7J-%=4AVR;n0Y%qeudTe1)gHpgVD?b10N zj4j-5>_ls$s 3hm8!q;c2^6y03Za%9X4+FGL|3C8kZ +qlo?!hk(Ct5O(W1jd@^2#$2E-rS@HpfkD$=riDl? 5wni$4i-sOYLGc9PaHZ- z6`^8p9rr72SB6_>6HSF;4$ u*kKIZMJF zUI3Bke>MIRY>R!iaypr%XF4P?ytZ2yS&RbM3{O^K+BHfBZ#iHgQh7277k$#H2TkY8 zZKY|fYSuLN&qyq>%JQNiWkyln)iuD!w$D4zXZ*gqa1FKk9 cPAf0SP~>-lJmD$#1(p^BJJH%p5QtOK{( z#qifshi#PJlW{k2{;@3mXP_rUJP(KF<|`dyAJIcz@0_)@*#aIJYAae!TE&m1O^8r} zU{xbKkP}9b)oRo)#pTS{vU_7jh2p+i22G@)DO|YQdJMo`mb9t-V;lD+dfNReyXz5a zf5#ln1R9sWX%fG*IPa$b-SB&9HO}<*&2Yg zi0i)U=}8t&y*$crLz;`46$nvS<+b6_E&aY^__qZR!Jz??f8t1dp}_b1+IGzP9@9K~ zj(_gix HK-|J`eC`iCdLoYDtD2f3n&v#U|l3bZLc71qS14BGf`j^`h99PDoB5 zJ;HL?rC4#{m+d}3HzB7LMmX$8C=E0O&wGy79^LS9+h$x|S1R~G4V6zrcRuE#uARzw z58#(@ws( `#ZGa!XFEeK3HU#!@(t>R(zo%2+5<#;xRi5qf4#6! zbf0H7FQC-6+op$+qr#atqBX({Mg=#jwQjqv+fwPq#oAXYF&S-^5l1zu2!NuN8Ck9+ z b@{bK7!g`A8^6)ua_^T$^i&ppf!C`DZ>!7 z$MbIGNY+#@DG9}A$HOQFML;PJe_DBD4t{OH6(t3ub+Bez2Om=e5(zWC=jXPDhM@q7 zP|Mln25b(GZ?6Hd=7%(Ut-|!~8_y_T-`{r1OCOiCC|~Y=Aad?)A(L+@9~pgj`2~Me z*8B+kmEtd#hRT>^ImUC|!@3p@Jt^>)fiJU(LGSTnl zsglU``UeG4A&1q;=jhX}t}qGyPV`B{Cf&$rbhMI?WL{)*w(Yfs>? zf|A%K-f;P1CavsAavaOx98AO2A~NN=uBs(4OSE{qH%*f!Rc~5L&=^|;B(l$QfW=!5 zt;fw&7-M^HrzX{8UoFh-f0TUOt#XGaJ+^z^+?|@iNvt^Qg3mX6n(6Uhvrf>tw3Si% zM)Fl?#rUCG1Mfkf15(~ycp49@GQeWkPSaHj-}@S~-5>yLO^P6J4`JY~Iu(j)n)Mud zu{HV4RM60F*PT>vDI@o~ft{2US;V!Nv@~PnbU9)fsK3h9AIs}be{es`4g3rLIdX#Y z);j&YSo-h**)hauqwwpc+KkqfcnGU;HyRhpg0;=+sLaS&rsB(eAuCbOIMu=GtX>2b zD7lQ)CE_j#oq{aUnup`aPz79P)-+7UkDpF~5#AC`&oy@@zpmV0vOTXDyfguLDADr= z(#M@-*U#A`^4Appf4Q^jvqzi>`pM;|+cUnW@sf^fd)FS&?zq;PEpSjxBg*rQ-_@wP zqZ(*m!%d4=OJ*-pNB%Gi$7zSjjNuemvZ9bkUmBx=PlG94796WAcgl44V`u62(P{W! zkL0@Fk50S58&Cuc#7JXV?j<>dMhKKOSiCAH!Ey(AITcb1e P}tx$+B zWf{dL2YkCfq;NUb`GXQ6(9UNvSg(WzP`V#`1m0J!ymRzE5{mW)@EJd^v!^S-?-Atq zzJ@UyM{_j>BGLphos)*JOQ&?fLEED#8Z8;pIU@VSX5;FNIc@iNzR5!~6LaIZp{xkA z@lCJi>A0d7e`Cce?DjW8lYUfJ^y})bpHv#XTc_}oJg8rbmcGx9FQ3kNn^k(XQ&z@n z#s3e9SLcnL6@Khr3=W@4< rcM(J5D#GZSuKUfBd|%i{#u^ElR7;={2 zVB5 z74m{u^urB_b1=@7eCnMdefc>b!Mujoy^mx5+kon_AMSl^CvpDz8_lMgx3 zhU?t$e{+pN_ cios wu|9D1zb~LT+=fa-V}Bz@Z;=ez#i zzpCypXuGKI&(oh0{j<(H-=|&w$1{2j|8$6D))e`SR_|_1>>~Bg$5{M>TZh9vet)ZN z6s?~O1ADu7093bd9J3twYoBi(05|fJ`Zxq#FE (rSj@T*CPHIPBH|L`a-!Ai2)Y?18tIb&{4tZal3(7#c>|>#aj5d%g3+ z(}!^B(;;Qt?d$MZxaBj@3zxnQhXz@OW2b-)a=3CaVcc^|f9A#EE?GvqhUMu7?G7X_ znhsm;f!#8ompW5>_#BdtW@#+Ke>hsC_}cXfsgFH2^0pBR(fj0&6%zXzkDru@`E%93 zK6}6ozaK9TtqInc+q9TZD0!nckpWI+YzyQEgJL@a%IUr(3qB_FTH^}SmgF@(WkH>w zH(SRIw~AK_AxkTXgU&bbgp}MA%$sFS{ia*)Y~dbcc0Rqa<6Ih%-i`ixe^m2$1NnmC zH}j$T#?}o(V4VTv3SBCJ1J@u%9jQ9lL_2;9<