From 0c0d271f668e491650f410d11a8fc4f64ba87b59 Mon Sep 17 00:00:00 2001 From: Aryan Kothari <87589047+thearyadev@users.noreply.github.com> Date: Sun, 21 Jan 2024 17:01:23 +0000 Subject: [PATCH] Static Site Generation (#122) * remove hard coded dynamic req * add staticParams generator * Remove server action declaration * Add output: export * Add pages deploy workflow * fix syntax error * allow run on all branches * run server in bg * use npm as package manager * switch to npm; add packagelock * add frontend working directory * test run cd in node step * move to frontend before bulding * set cache dependency path:w * cd frontend for dep install:w * cd frontend for dep next build:w * Remove static export step (handled by next config instead) * remove tests workflow; will be added later --- .github/workflows/pages.yml | 128 + .github/workflows/tests_and_ci.yml | 94 - frontend/app/layout.tsx | 2 +- frontend/app/season/[seasonNumber]/page.tsx | 10 + frontend/app/utils/serverSideProps.ts | 2 - frontend/bun.lockb | Bin 143721 -> 0 bytes frontend/next.config.js | 5 +- frontend/package-lock.json | 4784 +++++++++++++++++++ 8 files changed, 4927 insertions(+), 98 deletions(-) create mode 100644 .github/workflows/pages.yml delete mode 100644 .github/workflows/tests_and_ci.yml delete mode 100755 frontend/bun.lockb create mode 100644 frontend/package-lock.json diff --git a/.github/workflows/pages.yml b/.github/workflows/pages.yml new file mode 100644 index 00000000..52a66289 --- /dev/null +++ b/.github/workflows/pages.yml @@ -0,0 +1,128 @@ + +# Sample workflow for building and deploying a Next.js site to GitHub Pages +# +# To get started with Next.js see: https://nextjs.org/docs/getting-started +# +name: Deploy to Pages + +on: + # Runs on pushes targeting the default branch + push: + # branches: ["main"] + + # Allows you to run this workflow manually from the Actions tab + workflow_dispatch: + +# Sets permissions of the GITHUB_TOKEN to allow deployment to GitHub Pages +permissions: + contents: read + pages: write + id-token: write + +# Allow only one concurrent deployment, skipping runs queued between the run in-progress and latest queued. +# However, do NOT cancel in-progress runs as we want to allow these production deployments to complete. +concurrency: + group: "pages" + cancel-in-progress: false + +jobs: + # Build job + build: + runs-on: ubuntu-latest + steps: + - name: Checkout + uses: actions/checkout@v4 + + - name: Run MySQL Server + run: docker run -d -p 3800:3306 --name mysql -e MYSQL_ROOT_PASSWORD=dbtestpassword -e MYSQL_DATABASE=ghworkflow_testdb mysql@sha256:566007208a3f1cc8f9df6b767665b5c9b800fc4fb5f863d17aa1df362880ed04 + + - name: Install MySQL Client + run: sudo apt-get install -y mysql-client + + - name: Wait for MySQL Server to Start + run: sleep 10 + + - name: Add Testing Database + run: mysql -h 127.0.0.1 -u root -pdbtestpassword -P 3800 -e "CREATE DATABASE testing_ghworkflow_testdb;" + + - name: Copy data into database + run: mysql -h 127.0.0.1 -u root -pdbtestpassword -P 3800 ghworkflow_testdb < ./archive/latest.sql + + - name: Install Poetry + uses: snok/install-poetry@v1 + - name: Install Dependencies + run: poetry install --no-root --no-interaction + - name: Run Server + run: | + poetry run hypercorn server:app --bind 0.0.0.0:7771 & + env: + MYSQLDATABASE: 'ghworkflow_testdb' + MYSQLUSER: 'root' + MYSQLPASSWORD: 'dbtestpassword' + MYSQLHOST: 'localhost' + MYSQLPORT: '3800' + + TESTING_MYSQLDATABASE: 'testing_ghworkflow_testdb' + TESTING_MYSQLUSER: 'root' + TESTING_MYSQLPASSWORD: 'dbtestpassword' + TESTING_MYSQLHOST: 'localhost' + TESTING_MYSQLPORT: '3800' + + + - name: Detect package manager + id: detect-package-manager + run: | + echo "manager=npm" >> $GITHUB_OUTPUT + echo "command=ci" >> $GITHUB_OUTPUT + echo "runner=npx --no-install" >> $GITHUB_OUTPUT + exit 0 + + - name: Move to ./frontend + run: cd ./frontend + + - name: Setup Node + uses: actions/setup-node@v4 + with: + node-version: "20" + cache: ${{ steps.detect-package-manager.outputs.manager }} + cache-dependency-path: 'frontend/package-lock.json' + + - name: Setup Pages + uses: actions/configure-pages@v4 + with: + # Automatically inject basePath in your Next.js configuration file and disable + # server side image optimization (https://nextjs.org/docs/api-reference/next/image#unoptimized). + # + # You may remove this line if you want to manage the configuration yourself. + static_site_generator: next + - name: Restore cache + uses: actions/cache@v3 + with: + path: | + .next/cache + # Generate a new cache whenever packages or source files change. + key: ${{ runner.os }}-nextjs-${{ hashFiles('**/package-lock.json', '**/yarn.lock') }}-${{ hashFiles('**.[jt]s', '**.[jt]sx') }} + # If source files changed but packages didn't, rebuild from a prior cache. + restore-keys: | + ${{ runner.os }}-nextjs-${{ hashFiles('**/package-lock.json', '**/yarn.lock') }}- + - name: Install dependencies + run: cd frontend && ${{ steps.detect-package-manager.outputs.manager }} ${{ steps.detect-package-manager.outputs.command }} + - name: Build with Next.js + run: cd frontend && ${{ steps.detect-package-manager.outputs.runner }} next build + - name: Upload artifact + uses: actions/upload-pages-artifact@v3 + with: + path: ./frontend/out + + # Deployment job + deploy: + if: github.event_name == 'push' && github.ref == 'refs/heads/main' + environment: + name: github-pages + url: ${{ steps.deployment.outputs.page_url }} + runs-on: ubuntu-latest + needs: build + steps: + - name: Deploy to GitHub Pages + id: deployment + uses: actions/deploy-pages@v4 diff --git a/.github/workflows/tests_and_ci.yml b/.github/workflows/tests_and_ci.yml deleted file mode 100644 index 209e982c..00000000 --- a/.github/workflows/tests_and_ci.yml +++ /dev/null @@ -1,94 +0,0 @@ -name: Tests and CI -on: - pull_request: - push: - branches: - - main - -jobs: - tests: - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v3 - - - name: Start MySQL Server - run: docker run -d -p 3800:3306 --name mysql -e MYSQL_ROOT_PASSWORD=dbtestpassword -e MYSQL_DATABASE=ghworkflow_testdb mysql@sha256:566007208a3f1cc8f9df6b767665b5c9b800fc4fb5f863d17aa1df362880ed04 - - - name: Set up Python - uses: actions/setup-python@v4 - with: - python-version: 3.11 - - - name: Install MySQL Client - run: sudo apt-get install -y mysql-client - - - name: Wait for MySQL Server to Start - run: sleep 10 - - - name: Add Testing Database - run: mysql -h 127.0.0.1 -u root -pdbtestpassword -P 3800 -e "CREATE DATABASE testing_ghworkflow_testdb;" - - - name: Copy data into database - run: mysql -h 127.0.0.1 -u root -pdbtestpassword -P 3800 ghworkflow_testdb < ./archive/latest.sql - - - - name: Install Poetry - uses: snok/install-poetry@v1 - - name: Install Dependencies - run: | - poetry install --no-root --no-interaction - - name: Run Tests - run: | - poetry run pytest - env: - MYSQLDATABASE: 'ghworkflow_testdb' - MYSQLUSER: 'root' - MYSQLPASSWORD: 'dbtestpassword' - MYSQLHOST: 'localhost' - MYSQLPORT: '3800' - - TESTING_MYSQLDATABASE: 'testing_ghworkflow_testdb' - TESTING_MYSQLUSER: 'root' - TESTING_MYSQLPASSWORD: 'dbtestpassword' - TESTING_MYSQLHOST: 'localhost' - TESTING_MYSQLPORT: '3800' - - docker-server-buildable: - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v3 - - name: Build the server image - run: | - docker build . --tag ghcr.io/thearyadev/top500-aggregator-server:latest --file ./Dockerfile.server - - docker-frontend-buildable: - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v3 - - name: Build the frontend image - run: | - docker build . --tag ghcr.io/thearyadev/top500-aggregator-frontend:latest --file ./Dockerfile.frontend - - - build_and_publish: - runs-on: ubuntu-latest - needs: - - tests - - docker-server-buildable - - docker-frontend-buildable - if: github.event_name == 'push' && github.ref == 'refs/heads/main' - steps: - - uses: actions/checkout@v3 - - name: Docker Login - run: | - docker login --username thearyadev --password ${{ secrets.GH_PAT }} ghcr.io - - name: Build Frontend - run: | - docker build . --tag ghcr.io/thearyadev/top500-aggregator-frontend:latest --file ./Dockerfile.frontend - - name: Build Server - run: | - docker build . --tag ghcr.io/thearyadev/top500-aggregator-server:latest --file ./Dockerfile.server - - name: push images - run: | - docker push ghcr.io/thearyadev/top500-aggregator-frontend:latest - docker push ghcr.io/thearyadev/top500-aggregator-server:latest \ No newline at end of file diff --git a/frontend/app/layout.tsx b/frontend/app/layout.tsx index 940eb185..e744fa37 100644 --- a/frontend/app/layout.tsx +++ b/frontend/app/layout.tsx @@ -10,7 +10,7 @@ export const metadata: Metadata = { description: "T500 Aggregator", }; -export const dynamic = "force-dynamic"; +// export const dynamic = "force-dynamic"; export default function RootLayout({ children, }: { diff --git a/frontend/app/season/[seasonNumber]/page.tsx b/frontend/app/season/[seasonNumber]/page.tsx index 54815f29..38e18ac4 100644 --- a/frontend/app/season/[seasonNumber]/page.tsx +++ b/frontend/app/season/[seasonNumber]/page.tsx @@ -1,12 +1,22 @@ import React from "react"; import { Card } from "@/app/components"; import { + fetchSeasonList, fetchSingleSeasonPageChartData, fetchSingleSeasonStdDevs, } from "@/app/utils/serverSideProps"; import { BarChart } from "@/app/components"; import TopMatter from "@/app/components/topmatter/topmatter"; + +export async function generateStaticParams() { + + const seasons = await fetchSeasonList() + + console.log(seasons) + return seasons.map(season => ({seasonNumber: season.replace("_8", "")})) +} + const HeroStdDev = ({ value, role }: { value: number; role: string }) => { return (
O_|`PoSEJ-TA$eSO5h!yOi}ewP~07M`l{PyTk) z{FA{6dAq09;Mc)wt2n@GYX z->8qp_0Q&CitQWg;X9yKo3_H(jeE)#+o!JvYV&2(cv5AQv+jzvgn#>4HmC2lho$?5 zGah$msGFZZ>Jt$jHQ*?2G(VARi^ #XL}$x^Iy?H3F=b@^DbGJPHG0EXk I@LM9Q-CJ$$tB{}g) zFSMDzSAJRTn8lBl7I(>R8YO#Z@zH|gni59Nt9O|!N_5|I_R`bp7gyK27v`ofvOCK& z>CKj;lL}*QPI+RPVmU=jb==&k_oNSYY57IS9)0U}-X?C%Y5o(vwhgc3#z`z%JvqYU zOo)I *XIbJ#VEb5%K~E;crG+&Xuk!XC-%g@rkf1Rh*NzuF$M?8)U=u_`q>|-UmM8xR6#K*$w uh z(_OcD-+A+j6kCQGMvp(@>ip{X63g3WF8oE6Po%U)B}8r7_{GU$TYu=S8A`|JmAy-F zjZyI{?74N G=6jFW-|w9rkeWYcpk>PEZ()LI{<4!?bN0BJ-_LmQD8ED^ zN4RPyS5v~7+{hU(MWf4Z1k|a1Y2hi9@$l8&vpM)-V`cWlg+3E5ZB}`oAGOo2Irv-Z z9-SMH&e;n!eB17RA>+-*{b|xy7Vkd(*`-|areUh^m*gV_w*4`8ZMWLW8YtYm{vmk- zP3@J)t%_qsHy#&1*=}_A^}3m+6PDF4yzb^!JH01lcca$@9{XpvzL@Xf)oC=*oz4?i zu}p63M%j6;TjubxJ2h;cHZad|GgtilN1`V8stgN+B^F&9FEvU-d6A9Cx)-Ok&4QxD z6Uw#bZMMwpTkaP U<(R>v>5opPN-yMn|t})AI40 zYPpj3ncouzrQ63$7Uo_*Rpr&@XJKc}ZgGZQvdzsO!S``V*oP>GLBZ?I-P4+8%n5v! zd968W+QZ~oJQI4Cc5izbvoK08{o=KSJRPUCj|ddo%8WX&vqoyeyG(Jh{ E4#$o6zh7BIS@J;5x*%uY(+%E7}=?sv#poj+_bZMAV?RV??D+UGy)Pc8c- z>1XxG+KsnP?tpVCZAxoG;+1>*xEnt2wJ+fg4or)0IX0>6Rri>QK3)&LFBVLWlpJWN zeV&mvdbY&*ZCwJ7wk^1leY I6OvA)A z?Bl}DW$ZUd&v|U0Q;~RP ED<+j-+F )-sTKL2*` zRzc&pOL%rkzb5;xLjHOlNzHPJ?Sf7&=P#s7$xRH}z05l5L&tkPE-B;HCkl6-9l^8X z4(;0sSJU_gi8z~Qt7YWG=6d>g8TPJvsd>T9kxlI4^U@81LI>q1jHsO_xTN;AywnY6 zUBwYzek;F;(e7E?=r?@*x=R1*-O}yz%pPVRv9VB1sUC3JZrA?6;7P` 7Pr8GeQC2{Hy#&Xo2?J9WUOoLVc}&i| zdm8iuUL0>fjkg^s5TX6F{M!NkBOA``jDDe)v1&(J)1DH`jqhe^gt$6u3+1jVd%6Br zb(FKe*0dAK{CYc%a2J`2i>CR7llAYhZM^2L+l8*9wY1lrX4`SHyE KKrzg@g?VvPbp{WM4}}>CD*T5D;_ZTsPiC~fUHN-ozNRM zpWWWu<(1!fu|qOcUgXZ3%R#BhUtR=E>bd&3URr$|n{ngk(v?S-q`isb6FYR`tHPN$ zi+4?{VpJ3*%EynKVp!&!vPMuYBrx?ZU+iYn6pOAS$Cp+`FZ=0ty??P|
Xz?ld`T+{~9)iJ8Jh%(>p=y6D564T;BHCK%gtC zVyDv5q-n+4>Rf?Z6>XO37uoP&{V!|;#oY*~4Ci#zgGYB7JC*-CApBOSs7LXUL-JYW z%YkDJ;M0LH5-vnmjQGJ9^mBoaT#Ox&6(jr`6d%*b9WMVTlYb6Y98-0Oe{J}J?I-?0 zjwK`fRq#chYClUvsuJN}gfFv!Px^hh?f(IMEh>JDeYo+@0f!hr#=|NXn?T~<27D8W zPx7$*cSh>g0e>FwaqgghlFuq%06I<$_@v*4%eMkP_TMPVA*+2r{2Ty2_8(cd!{xUE zALk$O|GRdRa^hbK9Fz5jzDYljdVhz6?+AQN@DJ~#Snhk&B>Y_9tNsiAbKvU$A7h8E zVA+WOIk4!-{>3sGDiVG$@Ui{K#dj*K8sVP@KJMS}4s6I+Z3E#;aMEbj|AHR^eA|D) zuLQo`zu-^e`gidM1K;vr_%8?kzlmRX^uO!B0N^kB7xAA5zWKl4bHWQia{pp=?%_lw z^UnhK@KZ$`axo8*EE(Z%2ZBEEk%St<-Txi}ANOC_28Ou93HKTD3O4j}#qfKT>coC74Es`j@)>Z!xVs{;Npjq#KGza>%yq@FME;dh3A zynkl^e<|>B>`;@{J|O =9`03Y{%q+;K}bYRH{-*oJs&(EyRVZvVze0lJXX;#-B21xk# zfsg(7PuGtq9K7)SkNt<&aOaOD@QHuqvuY&%?ZDRq|77nTuK)YM$MZk(P?Oa;MEuLa zk9jJ |&!aoLlynms8 `{@C|@Z(!*^(5Bw;s4}8KSI#f7+3#6VU@X7fDV;}DNI{|z>@Q;pIJ$qnX z;=hgZkN0mhlFvx}{U@oH4?m`3{AB$9p7G}r!tVh-?!Tnnq#yrW`~OZ6zWT)f?B7^x zxcqS7>wtfpx2QSX`SS$$OMuTR4_pixiC+PJ%*OqP^gk*89TL7T#mD%E69eIw0ACOM zlk{-=Z-nrF&Tq)YI9M^_ZyxY*{$TrA^^N+3A4&Pg`S(xwMHK&^&cANp>p=YE{7vG* z7=LA?-aHY;_~ZVCc_jZ=Tr4B?qJggu{+aXe`|phK%P9ZYe#~RF4+(z&_(tF#=N@v0 z%U>qSXg|&yR=H61kM^fie6s(rx&}!6Y-0a8|1#_1_g@*|tNw-mD-LrR;d=nz0Q!%l znd|)OJE?yT_ o0coE&-1wrar10SCs zkPEj`8mspa!oLQ5Pm2FLpUmZiKYj9l_J1rV>yWwbfBR1OZj*<8w;7uM`0Rr1V8sak z#AL?vKS{H~#X6*ZEAaLHMgPl5GTxtYP>zTD{Ivu4`b_;#;-cjK7D&D4z*hr4tLugc z68^X;4F4ql;r9O$;N$$md57y~GI8)5B>t0tZw7qiqLF+?>hC{Ey=TCm34Bar9}u0t zXEI6%pIeHtfBn<`TL^qDruc{3f62htqvFTNhReSP{Dr{BeT!8t`XTLCmHzYk#WGfm z@B@L*-2bd_u@2!M2EGN=e z@|C}E%kJWWR_@= #6Bq~0gshfw{8oZ aM0DPSPWbTvvUvaUF)Jp;~-v98u3C51diV=Q2 z@Ui`*-2{K9LHLtrG5jNMICGHjEr5^hCw@sjtN!DG&%FP!8UyijiQ*IgWFD~U|1 8SAofo Kofe_zl3v`HTIAb7#2yKLIAM8P$I{ z_N>N0{JR4m?|&qIk`Ge9G*a&x@L>xadjB?@zkwnA&%oCKKJGi1NAiE^oT;9+IwSt! zv>mmHpH;xO0ROD68xj}cR{|fJ@W=Wg<-bG19|S(!LWlh0*s&T1;VZ-7k-vYzxkK_< z_3s3H;{TuU4+38w;wR(xJHMoy#Q6&N*nh0H`>%XqI6T1-dg%T;1`3C}|3&~G*B|=F zYq;w#2lyC2wg<;=xcp|| j9s{O^{LR?>`B@1o*H8 z4DFw+a+&>i1K*g6fArtG`@c$ve{~%i&5Gg=rw<4}8~95pKC62V21EE7x{URQ`==yR zKGyk_5q_K=4gblII1)RneL(p33mD^1`kv_g$~Tq~em3wIf`8=W+9f(z=T}Df?ZAg7 z4Dm6K NIV;N$&^#6Dd9VmSQc`%9uXTz)R_iGS1>?)d)zz6}*W zj@@wmn;ZW5{p)b~$AFK|U&tfZ@A@9gNq;p1UytHrKC62W;Y-8AJ8Ypt{wDx`xc#>X z25%8l{KLI}X8|9EV8}nlIC5+kubgFXUnD!;N1Gf+zitnz#?MV#L1-@X7o^9?l_F zjPQ$r&)j~J|2qv*Pt=rg|045_ DkpxP{)Io>{u5aI=l4g$ n?H2nAM<~>{qF;O*n OF4iIZ9^m8tN9O-<=Z_pbe3A8ox}+cR`>%}n4+lQ;`?ullf4RWd zgZMFS^gUdDC-C7Bbg2CpFNq7k|H?=`Sr|O#{hQ?fii>5WUJUT@{WnPyWR-st_&EOL zzBODvxAmXfPjp!IZwP$m_WzDY%1NC2flt;yjvoi9@EaujkH9DMAM=Jg{}w{<`b^_L z-1)Nw__+U&cnJO`{6EJ3G4P$4{12C}3NKHX_n+VSCFR6VD)807KlVG0{c!uQ2Kev_ z ^7)_u_rBr!Hvm4~fBAvS^AGrOz}Evl z`o(Lw`*- Me%JOP*hmK=OY{W~#Rz_}G5*{ZHEe0{CzQ7>XZ#;yh% !1!$01~STVwvSo&xG*bl52;hzIO-hVK5G=hxO-+vOm0K7cH`zJ{g{Cg&&gw(V6 z3xBx&w*epbFQP|~RsUuGlK&a_a0~jQ|3?4LF;!0DG=#$^Y$1Q}N&fF-NWFu=$MY9S z|Bgq>N&WYK@lVQshlH=~^q=1^SRFgmCj4;VllvF)Nj|IoYk^Pt@1N{HQgHLd^@sOA zR?prT8;SEa@b#F+Z@9l-PlY=pYyokoiSbXsFDw}G9}9fu{gc%;5Pl8t$^MCXtd1e! z^RM{x`Wx>4qYwPK(0<(aSiSc_)j#?_8u%DL=AjL@{beiu-S6)|fsfDc82d!HhI@Wp z?DC)g{TDCrhui-LfDex_aX230|A6o2%6R_Aabxw~2UY**|I5I~^B1e*j$AY{f4%`9 z#~<5`dBYt)B{# _b+J@b?2B=O6J;@OK)7{{r~9elg8z z+fkeF72Fx^A4%o0x`qgUIq>oM12s`&xck>-;JZ@oM@`gV#fX0i4;sw}_{hVxGu-~m z0=^FL>A=Od6J7ZFOC$BZ0N;p;|CfZn6cWC+C*$`+JU9Q7^|KN9v%x>=;Wga$UjjbH zkA3$~{BK|RpZniG;lBpH!N2e?>&2LV|1|#Hz}I0Kzv0fmhrq}4BhDQhL!3vf7#aUj z-i-YN;~$O@zAo@_{8{x&d=UOB;KO6~(7zwV>fAvM!Y>8B3h-I&x4-&t1wQWIgwJXW z#QzLf{J8)A)AqXqAMd}Y$Et7U_Gbbg&yW9f{`CT%{C @z}JKL zM}u$dLwpayiV^>!evI{t9E_dh|4xI{a{)f~Kl;Wwfa{1ABmBd_*QNM)_9gkh(;)Sv z{r~*;L--De6(juhz$fz;+dtg#y8!$J5I@nwGaM^M>h}X5Ug5@}U+hCKQt%rQQq4So z;eQ;|$2>$ UlaTjz5**`s6+T4fRFnZjy<-4>;u1(A$;jT#{9+lICnXJN2JOL z-xK%?!9U)+aPDyrlb;KG_!G)F0pQ^p!g~NKM*MdJUl;hu6M>6WKKj6z@xneM j2?{4uC<%y$h;5RB3*(sv7uKInp$s4z zBIe7&B?uR+{UQ5*f#_d{A@?W5d_5{35#xg~AF}_37@q-Ej)-YPD$R_jYfR-cBkn`+ zSUfbJJgIVKME`Kx8`6dCe+Xe49A4UnpFNVN^LH){mglh#YW5 z!-f9W!iDwY;6jUo3-dR?g~p6nFCH$$1h~);vHoVbFn 1mCXo#49 z2` VsP5cj|;xTeAN0WLH|oIjs20fvZvzQTomzQKj|E5v%ea3SwITxkCdvEGlN zQq~ab|D@_8qW%DtM#S<#3Ne9cHvFIvzm9+p99MQgOmn~ows#CBD8#QkRGJylA0L&E zh+p}s^sf-BjHT)!qJIG@jfh_bsWc+`nMmaeQTd4YRhU8%DjyN+i&6RFR6ZikM@cGw z3YE_aVtiAn`pn1$`HECNBKn<4r4jL~GL>dVtfxwqs{xLM^g=+?GXq3_mVju87`H8z zW=5=MPn9nN#41h{Is;<43x)1j2!@FHD=GA$@)0rL9}w?ddjN6Wr2)c!v~&vhV*-pB zF}}l)kM)mH^|C0;rtml*w)-TN&H+S2M8A1dem)@T6au1dDOG-f!pjtvQFxug3P9Aa z0z_U7AQ~d3?*U@geF`670t^xTKc@2Q08ytN5P6MM`3tK2C6#^+I10+!0I_}tAQ~d- zby4_<%16ZfFMwG88 kV-Qn>Kaq|%s2t^mcxbf!jmdzM)dCu7wZ1+9L*Syom7AP?;H&s0rtOh zG@~C_IZxv{`rkR4v7g}i84VHlr~jR!8T-rs&e4o>*Z 3nWgDDJXb8HxcXiADnHe%G&F0T$Y4a4q5Zqd&UMS{Tb?Q2 zefY}y!Suz75%pX*V%|qZc=nA>>6R!BHoNb2;bh&^<-rgd(Z#);7~ODTm(AfN7s{JY z&Wzu@B75@WZP|7sc5Itz=;WzBxu0uNKyN~QgxsXaMJZesQi~3$=5lcd^{h-Y 2-0v#Ro_Q-r%>BX}g|18DLX*z1_ln!6 z9qfJWXu3V^`}4)KpLo<}98ldi@x=lVBJpw%Q9ye9o1&hl(?3oOI9d1VGOxpnGiqaH zI&$ab9GoZ-dtKng_NWPOnoi1I={#rr>_On 2d5oL4z^6-DaU@0?`Y qVDIj12LL^>JA__=vedqV);+&=TGS7sc{GzbYT1h;|#2_)wc9C|4 z&x!cfjt_xm;r053#o;q8CarH-zhBQ__PmI})OizJH !fd?hPi zWUm-svSg$E#Vr5c_`2GZ>qoEd+MBMopqbx^Z;i{xId8sx6**HlFD*RTbFBNil#lU6 z$4}FJU$t79fDnmyG!X@)8yD=SHSn}Aew?`ZhUb8`!dqjNSQSxj(b@wtr%Y7F$>p7C zdOvlOqh@Sj?AR@>Y$K1oGn$~&c_`o5Q22C8WXBOEUFP4x= i$TRc1ux zMU878iwiUz?DmY?_R_FdGp|Y6N;Y-2V}ri=t@ kXv3G~nICp*8$}a;#M3;w%0@7*ClZ|PIvZvUW^_Lk0pZ&3SrCH}D z_D!LFZoO}tyX(Gxs}b*VFD-~_^5d>w>3{vex6iq%QtJAj<#zb>dMh~`WzxlWO~mMd zx3haMTh`Rp@yK^=49Jku4vCq4tu%Z5-fN>r{FruPn!`k1jk|dl_S*MvUly GFSI2f;dwLIqNW8dL5Tl=H)1LU=)M`bELPaloao~Z>VAJ06{ckL@K1}9) zm3v3;N9sb4{`z{8&g5{O?Y=Ry=WLy^Q$~C1m7`w8TN?EDW`PjVW&Zu1-oE=s;=Gji zl5&r0#MXaS_Ai*(X*?&c<9ygA|CL*>Uv6&OSZX}Kx%p@G>e4AiY6b)KD+&(2+%`=z z=M=5ns6h*#orvyO5-cG7wMAyEk;a-EpZ3mhD%NmTu%2;wvc8>KXVID)`ty39w5?oO z#&dPC+RGb@UWbj=QaAZ>?ey$JNgkdy97`&kwgn$z(#3aP#ON|NoCQrjk4lW?d%bR# z+A7(tr;pr >0u>v3VLcK6L;6EACg z!FLKI-tj~fklwOkeE!sFSE?$lRQ>ri4|@FApldS0X_?6+VSQm)t-4qtL8aWECu6>` zH<#Pm6?OYhZEd;Jzx}(|f xN+ry$?Ke$-G@yGZ?fzFu?{!aS2>(!5F7dgr!F;(elP>-iN{pT& zcUH@1(4p6NZ)*wX)kh)WVo&DGkQp(JuJvJOa{Zg-pY)`hb|qhl8Tb6kvRRWxsx0Dt z(e7j;nXJ~mD0tzF(M=#k`T^ge5Th@AU=wRcZ@Q^ELu!T|_lS#T3G=#a!q%JJFHQC9 zHJr0W!zY!iWO`$Uob{JdWsQAoB|E Y7bkx{*slb+6z>E`w@-utjb{^o*st1Io%208ib&+P2Yo2k&=GjGni zBc7A%=Sw(SGwBL3>z=%%k{zn~BH)2{BYUafd)@n)Gtv|jjx8GRo6{cn-k>!mWWGrP z@1ppqtUJ=RCyfqzCI p{ z$Hv_=)zt~=kNfzAT_G#U=di)ny3spwzYP8?S(H`Zt~s{(OtQ9!&4)C59*Ok3-rpGO zn3EO %KLJZqTher1&U@vvf>M&dl)=^R;%<;(eA^I(t6Y_+F&Iwp=%S%zF@m z^AjiT4PrzTkiNfWuw_|#%KCnesNnDqE9xtsK0egsbDjUzSjhsNGPCsDzNBf}UOEJa zX^QThcV)!ahVr@Qg%Ve|eO0}hGSm0rZ`DLsoLP6^?%lM`$Fg5_qT{n%mX>T%w(1^5 zoBZZ|M()Yb-rl8-H(T7*mL%?K;MqEE {I~uQM8%uz1O&3mrqc^r64! zn8d96aa3p7#|bZrKRU iA&ry?^ zbtU)A;XV`mU~#VN(}tDfwr*`7V|sUqL-~0htt0AbLM}58^oZr{rxzMJN?Tt@TxT;l zc6)GfP{n;O`_`ZN$su#_H)4zzbtRc~Q=Qbu4+PAsUvhWa$XolDm96$aUpbhpt)1we zLjTEAdyZ|^-IT*)+Lab+aJaqJeVy2AzwWza@dlc6?)fZUwVn8`m#pI{%(@D<-*sHu zWj-Kr;c({KDVa}&K207Y7M489fIHA^m%t4Hmr-vP78^x7-@9|uu(8 EUC!RG zO5vJvJv-7?hcM|%G3zcYh#F8&2zsa&G%M=plidf#RsUS0>fprJ717vh*LzT@ecJp~ zZ^g}`GRaB{z1R~5QfzZmqBNdM+&Z=Pc>KYM_}ev!SDIOO-@-3qd%LSDWl!_ a zdgprnjwxc|#r@0U>&`yPv-aAx=vwQAZME8hG0s K2TvjRSFJ4B{Vh`zwl>{-fLFh$8u+$L>Kcc<})CgYNlm5*}ox$G{VQl-b2awOV^ z?d5iL#Wrna9RtT`-T)JNI-Z?KywjL g-H$&!YTD@f+H;z&r^51)ACE*a>B=$dew4Hb;QO4w7koRM$5dQs+!`MC;=>68 z_e-K%m5SbQNMBp{{odzg%MQ m&Wo1JiXW#a*Xr2yRWP6`cK6r@wKy)e9t6580alJpCkL= zme5z-PoHMrKG5e#uK*#^56pjeM<2ibfP;pY{OU7WAs@FqH9N`Cn74ODqDe=(r=68u zaZ=Ql*k+0Tg(pL2adlKUylV))RnN72M%eWY6}t=*w>FEfWYSe6!2;502FemmuZ67N z_vdBWjG53=9AL3!>?2znnMpt9jAZ{1WX-G7o;SZT`$g5MDPg*iOP-y3NS`C|cAw_; zW3DGvXEreDDlzMBEt>9E{> @*0s=+PsQ_wW|BOQ(NPO zLWA#(n$JI9jMK>fLeZA<-aoo*FP?vRi;a2QaE%b7Z;~FrytI&8c+IrjY;UiP1s6CR zPKIs@;D~y}8Q0l0^*o3Ap#o$6sYM&5)(ZLNuIs4TU0|G&k$Io}!{8Bb-aZQuBK@mO zL;>kv70=&af6<+PmI}9TQ*O zRUUiHvHrY3PWO?YydEbH7C(QmlW$CTgI(}4wgUI9Dp48tr#mv~sxs>?kx{+n-7InC z%>iwv(^H?_7Kn}f*c`uFY|FkU2TBaB W97Nw`@6Z-zVGB*Vog= zwt2mA-U(Z;QuD;UsZ8;zGwUu~VkPNpB 0~AUXHwl+c$?BgwX^e-s zV?C3uCbRCT)bV;z0taIJCi1D6XIWWCUw?ix`(mzeeBvaxn|8hK0gVF*9gbI|@3lDf zO&z!7_Eg!%Mq7SyyK}*2F56!&vtrWKV%F`F4cXf+yrAdtv-(&3>Z>e!TUz)2h?}wH z^v*R}Ic=d$U7bH4-0}_QI6$|qF0)*tm8;d2GvRf7zJ(|6w$hJp@ZA=f58BMSG5H$b zpM4pzSU@Y!T2rajvp~h~q5sRE)18xhu1{}PPg8O~E1F#4E a(aa8Jhe0 zXA7j{m9OSpxybmNI>viX^1D3B(^ZW0a<#6F+uc 9Zo|@= zD{0A@N{*w<1>*(e^YGmk>0f*YN{s$I{*XoIcxC5{@l85u#T|0n(odRoCQH5z6j x{d5 Ab88 C1u3IzRy8JNKk>0k7QJ`x;mfg3 zp1O (x&Ys_}QX3)R0+zsB|B+OlOILj3)&H6~P__2CB{ z(hvBqhZx<(a`Sd?k<_BymApx3Q(Hz&d{AEfxw_K1VCCH7Z)QKf6FTo*c=qz7wSrDJ zemG6)OR{;R;WUloCA-3{7dI2nd}#$CqH9D%0qJgQ1+^s`b98-2?_9ay*$3mOoD1!J zM?$wATe-XSNbc#?bA<2e>|Js}dg3Fam&XIgZggLM^}$xoj-0#a;ia&l%^N0NV`kl) zW(#MV2Nteh<=0wSuGX^S7HYmFa!5#~rO;~s9r~j)%f{cHqiHG|Ast#R5!%1cSjBq6 z)!4SV@A|VIcqr?R#&<;|UK3{BvQs-2j&_^Ai1T<}eBLxCk*b=hz9Prd$Ig~9-1uQ* z$6m9+`l?Y`Dyu&Y6t79nIsfw0{Kgx{>Z(0vUY2g(IxTd7Nf-BcV)VPR+3(x0oRJ&n zIJy5s-Jv9>>l1qQWUEagLs-7ZDksk1(+`B_$tGW$$>rzJe9p2( zW2|!ut}zm?DG>#vE6dc^-b|XyGpUTN_3i@YtaX9qyan487K=vvuijeNo-8 U zlQ-p7zghIFp2;sN47rX>#b+R*YtF12)^VkgdtX!DnOP- 2k!)aUANSQ&BN?DjZ&>*?I1UTv!q-!EBV zFPwh2Tk?)zhT8Z&fmN5Sbh7exzJwr;ZTzZYb(PJHvBL-U-(WuyW{_3pa}J0(V5EBk(@h`vYl)r5B| zqCtr0;yXoR^hqIixWv1XDzyCDcod&Vtvvj`A|^f7joxPO%UilX(`1{^;S~S3mkvLA za;*E#$@^R19p`)=|5@l*T|4a}f7RX-AVhTWw<2P6rR5{N_D?i6p8X@~ KbHc0mg@qO^?=-8m_WOjL j7z3u7sy=KZ8IV~_TUQu1Occ#hX3rxCp%(|xK8>~VU z)?~j3Osl(Eyf!# wiiG7Dp~M+;h2zKSHA~&oxKPeyhXP7eO6tz4F)0+x9Qj zeBC=M$e>yl-$9XhF?M3~K&`aLU0T;47H@vwI3qOca(uge_uJP;i~amZHib;T+U39F z`^Qr+q%8HDCs@4M<+^WujA_gCs*z3)&iN$!J~+X6f5zxv2O 4k5mwzOTV4;ZjWf4aWb=gH21 z@H-Xlph4nY%B)K-m}BN-?HJmXa(U{D8KrLdQ~FNHUR!-iXu^bDCfiCPo~$n%`9tPM zzF^U=S0gJ`mbwHV9UI`aF2_Xe+Gw?^W D^%G;z+dJ?{iBk?XH zqJZ=r(Z0`Sd%HgIJk{jGtI@vvYj~cxyJ*?R?_9ESmgl0PPCM633tH^5c*PPI)3 &&d1seWjV$-y5A zQiaM2N0PNpFL<7t5;W78bB|PhEAR5x4$F7dOgxuspD!e1w(EV>rcwI?1U8 &?-Cis1?V)WuC1VN&6h9xCp?!gQy{#akfON5QR`$*J6YuohnOh_JePDLK z3|F9Hs^@18Hp%LkCZ3q*8#w$&U2jv2?0GT$VCju0lY73kRdc;WR&KgU`>d^d1T@IF zxiIS*mN#m@P0MsDG_1~+2yvF>-Jvh(*cmC1u-svfm!Z60#_Q4Mo4+pBdA%=wiOY>s zS{DaDEiN>WN?KRh-|8LA-^Zlu%B&mdlzT%uV2@skxSA{PnNO{4H7-6$*Vo?-=M&K3 zmAufgRPUy<{zs3e8?-W%&(5?rw)9;7xl&f~!O}A`8v?t%S2O9lG3$m;6W(<86{n`& zi~xS0g`aOM_0!ilnq0Shz^H1V|6yaJ!n>>UbLZDQxgS$4pM26h(m2R7GSI(RGpldQ z{g;Jj1( A9>Hte%H<6Q^scZG=)uS^a1Oc_>P41uLrYkM%E!Md7rH3341P9*xA}Vob+r* zUpD8{sg-kU)^1pKC+@v&`Giw!u|Yo^4yRr?{AM}d%9zAOp~p^Ev~HQzUbFc&lP oxptEe~(TzXWd@DPMZy!eie7+qc^RNIoy|2g*dcGYh|YGa#JoUY2!#5OM7 z{^spQao5rI&-&xfv`e2!Z~I`qsp3+uP3xD{$`>+5NBfB0k)-`B1R fl)Rp+qLat#U3uU+CL=b3Z|gL}T@yyR795hhrd!kUqJ#Z$*|F`K zttBDa3l{NN=Vzuc>3TEkUN-TUwP~H4x-3*>T>#gEKG9|8H?Z}z@zi`O`MG*k!pWZQ zw3BReJkv+KG|oO~J64)E@X%AvP1lkd3`~z2#a(Bf5BQ8ojNTbsdn2}Od85HQ*O?VY z0cje_Kg-9?x}L#%X~~(}5ywV yfSx-(byjEYUPh5 zc=jj#;7ddS>0`6PMVzNuEQ}1VUvOyfW68XZ%F*37pX7-@-Xjv$YqLk<$EL7%16kr5 zeY>Bpd2Z%#PtdjC&NbeNbw$TYzgL!>WYWbwo*13KyD!% f---P(B^=%ouME^;>Bk< zV)XvmgHx++J#kt&YdXh~E2gubO)q*l%S+0JcZP1i`b>BG5Z((nUKb@-_D7dF?GKnM z)^woUD67~!t@Dk+&5SXFcxE8F0Yns#o@x?#qi4$7qJ5hyI@WJ^5j4=d?`Gm8eNm6v z4!4#%m*?lXOef|U>^^SzZuY*S$0>BvlSb Gb_ nHy3*RTcMN3G>C~KCfMJ z_j>K(b tEq{_l0w=c@2ai_MDRwN#2#_P+G7*f?}?xKHTTH=fs@T`9h`G>DCJ-Wvzm6Br}u z-w+}SNSE`N>*%ul-L%Ia=6wpgFi>+wdJ3=c^eyIxtvb&>i#4BLmBc4{?od?L4&{vg z-hG)<%J0W)=I&JNuNE07A31sQcP3rz6Jqo*m7AY-@;+&Dk-qIAW_{nc#xGI%scP*u zg&uc{RW`+zg3s&6A5WM1aclp$>@n|)5@YW4%1-MZ92ggwmR?_E%Y1$aBcgzGoj0df z_xkOVdFe(EZWaAebKG=dwWEPw?0L4c&)TntHgE2Kxw25nee3h3+x^Spd`q+P6+Uy$ z3<$3~sg$X{y#)6f(hoQ{h|xEu4@@`Ht+%zeV6TkKv#(0J&~dnF%v@9JjMX7>?>-5n z*3ITRAo#H+;}&m?>NMX)lP={Z3tvypIXSr9zuSU)4G0n42qFqd*Bll2({ard)r|eU zMHM{@R$8^|kF<>Gm>cNhJ27;h@`#TLKT7?T*q891%A34RZj0snZ0+jPab_apkImeD zL-r)Tdm*~3n03$B%d>4iY__KBgPx}MDaTy)q(Gffo5g3)yR@};ZQm9DPN+pZ;Oupo z`9-5Vde6_P{%P~Y(A@Vcy(7t}c3NUUCX;R?v+kpZdWE_9d3}QZZ!2CYaS6`%f6{R7 zP2BM Z`)eKoCg21vTZ9A?3@!0eHQxgzO%SVB0A`PUhxU-+{QR{t)_rmrzP{B&JI`- z)9o-}Z|Z5!efh>qMuHIO2fXJKqmQY%GIk=}(dW`ix0XIPyNf)HZ#V8SvM GlipGOO8h99O(hH44k#Vg4=&=N8e$F(gL6@Hn~j qhNvtf6t(ydG?Okp9&6`_|A=H z4=R6SpK#XbZRlL_IrF<>ONzqt3i^(;UnsBW2O**xLqq}T%f&dm7aXzWoN)Za2Bpqt z53Xvg-L#r5w$RutO1wL=`d<9`kSC!#m$|&o{~lEl`{ L;8o%3hT*F0I%7(}Ue#diFgR;k~_2X6-D=2X-E1 zg$^t4tQNy}Tcm&2G3##WKH J8nRTrjDtjtQW9~lRAsL=x{%F3H zOo80y?b5G4@CQ0sk8)*S7VX>F^Zd#Bmai7g*CUg4MZGT$bf|b0Tep7g F9~8G=ast?yXxiv;P9y zxef)3kvCSkjQXY~ylB)9g?`KK%%;Yk?pBL)eaF3aZ_7}=M`zMaVAh@eF3C9m@SbCR zQ;(%CQ1RMr##O8Gg_Ad3M6@sOQ(a^4jFGQrj}~#z3mWlBV#=$X?(9kv--;X?Gq&u* z70K1ww>~rJZe-RqFfyNaurNQPOo#95w)&NKp74!u{Qhc{%alV;yOJYErYlLE3D_;9 z&~fv}`9|8s=$DV?{2%t-11O5FQP)MHfRYgeBudUvkSG~MKysFxL~;-$2LZ`BXC#Aw zl7j@v2uO|s5=3$m1XS+oe}A0nTXoK@vv1ux_3wRIRZsOyPtP-J-p;FMdNB$=VIFo- zpP)}IIpO~W^9IAczuX<`7}kV}dr7-?CGGCC8Y&%;3W>Hjo>9MfT%f7rN6Gd*s(WNZ zSvGjb>fXzrr4q4^@)c8abh6A2)x>3|+F;%gxHo{*(L0ZF+qgOiJ#8%W&GzSm_d*}j zsD5`Yy_6D-)+1nPM#^w VHo$RWYE zeu?>p?X-~}h#LnZlzgQe!JWL49a=7Ewn}BX+6)+rd6yO!e+!3&@`qZ&J1HJ_E$kbF zOiGH JQ!)%OkDt5S!6Oi}+rz6*hjG;y^TS$?YHWLx#;t0xIrDfQ@H4ICk)??c%Q zyT$@knRDHH7VcsTM4~I`7VSRvdA}xz!4C6=!M&%yb@?4|9-6Y29P_Gt8Zl34+hLU8 zAhl)4x_sIWV2|KU8__K*AtCkQC3|jl3X2zK3G|-REGW4OZ uK!{i)vJ#XoDmpx~1kd5pYy zndUWwLy36WK $AySPrNWG{CldkpKD_m?Vq ZX4dN!6MYpqdhr`CjHRj1<;MCzN~<02HM#vV3qKJ2`Bd%_*k zfA99vXI2|Fqnv3W=vd^+8x8lKeK@K2MqaH7+@<)wur>eq0w+G9Bma#@za5rVrh(?W z#%)2Sq{CS&kB>veDQb(4%QmM ^k z;oepmB#{r=d1`lA8_p!Fq6)AllLH^Fm)y}ILS?+1TiY~?l`efI*D~C1g `6`hH3g9%hWoozHxBxM9B6G^WedQHC&1zY&Wb(!bE|@v;EuUdl-^4?3$i; z@Iykq^|X{p%~u8jcE_Uv5tSoUc_a)UNVRDYF#VjTgn8rP-t2&**uJ=csKE+`R6~>2 zT&Yf_=AEqH5Af3LE;sO~#_ln7SdQ)@dId<`|J}Mw9bV7$y3>X;9XnpK_d#9vN9dgG zYQ81Fy#gi@2OD)7W8x>|6I=3GKF$d_Ra>WD{grNVHq>)H@?#9Ja}FMLw%rcAIVSh& zF8Ez2mNmaSslJDlFRxR#!ef{>5$>gL^!Q3(j3~s*!^zR9-W2Bj7mb=(z@$MR8R2ur zgh0o!(0p1)(z@o6^LI|MVPxT_EP)Q* rf~x_?fDGO!7w~MovnYdU9vu_h)n%s|wlcC<$L~B+2p~HD%>J&>=^8 msVcs;jw GSRd4Nz$hpZf>JW0t z!FiIAo4m6MWS+hO`V?b{v4qOH_VTZNj;1=F(%i@@nLGJ}db_iAvws0r-we2y@GB+4 zoxgqUzR4wQ2P+gGn2Y6^&JxJ1eO?FrJ$1GhE^+c37<-?Gz7@>%5jW4bh_le2fy4Q? zn4f@po)QYXFwC0?_tKdST9mOh3xtI@&?U|159Ku`-O$bXgG%au-`+fscO>SPK)8nc z;qH)3We6I2ZOPc}@ZMh%C9 Uv zIO;YtWVOlX?(?@qTVE|2xOV({c0u%k!AK=d^IJr7x@Q~4*S4~n7AIC{9lKh7v*BL6 z(aP-I{7=+>w00fdBnLl9Q5n43r1jx^?!zYLMS|1<8k2Q1uV<#Mlh&t)H^Q1(4^}73 z<@@z$5-fFEdbBB_wyi5~4%~}~-|$F==1}{&%?sgBOC?o9*D-&WZl|y8eK;vP%<_Y+ z^87!ml_+T#JRIc7NQ{25OR)taI-cVxNMh0XV$l)8ywJJlRYB(6%fx?k{Fk;c|CYp2 z#`}5fh!IkE$;C@PE_ 9o`E<0 =Bb)x zB7;IXp$hXBz`d+_CN+fdC{eA0 *mNjlv1Rmoh>?7q z`a9$E=uMqMaNwq=OhMwtbX9d~RRetc03D-T733!Ysp+5hNs*+h;#?inriC!}S28&> zUY?bh1x-{j+!zvZP})eUN(gSe=ke>uxT=in^89>(g1x3~m!hUqX{ZzsUFBPJB?Uv| za&4B@zR&2RKDoH*Tg2F%G@c$r{@uM{+ j=* z4 )Sq?(hn$${qhkp+r-ncVg}EbbS)WpQ*D&jzLL%2BC#u}^x!jdtj|-joogAj zvfBaCmACXt3WmtEDd?Oj2*gj7M9rD>6NYX26i_ia2bFHJ4bgH0UCu^e{uHx6-kbg! zSxJQb?Wh0j+b(onjI=QKd!GUpFw5g8Vcs&h_u>8@ocUqax@?@8Y0(4%&sgeme*QDh zTUzGPUdYoUNrj*0_9*jCReg4DAV*Q}tx*t8%cT?>sH1sg-*hf(hp%ttaPJL`{RMH? zSCgAtVWU>;VreofuT*Cb6T6Ffwo}|@sc9H9TP5Q8pWWXIiyF^5O;l3jAn>SM#8VRD zIE#8!gD4KGZw1^NKN;#9RV$HzD|VO6UOe~-Qk0dOTDPk Gn z^PPH^;1nv1%yyW!>i_0l2>H_@R2t5Hr-$ff)24TON5#XgJ%*$z%n*&AlG}@Xx<08T z>AO!ybiE1F2M)Ale11`*t#KiSJscRus`9@N^H#&X{5y;kR`Nf}sm$%~S?|i$aSqdz zs3jf>hId(XN#fRFF|_Gd#`P)673>gm#EJT4SKJP_v6>W|_|2^Q^6VfS8|Hlv_vR7G zL_7Q7B%R!x_^wOvShqNPJKY~$26aSGlEnDLae`s|NcD}Ek_w~uyUY4_af})WAHBUy zBL`ol@>GPEguu^-KES=pHSQ?KuBnA13Ms9cX-dLVf6dc!Lc+%C5!?g%$jY5k-tt^Z z+#-}RbZqys9BO@wx3Xa4X>XZger#Jn^PEBsR^J-9cd@Jr%Ufo9SzBD=!(UFhlxmD8 zlVW1-OX%OFyJ_h1r#_i}W^tB@JG0 dVH6TUsGg?oKG zqE7<3PK12}i9S+Hh@a|VCTEMID=ppn(a(d5x=zX=SoxSqSoq$MjN$wrdt;G{yH>ZT zDQ_2*YkYoigU53jR^K|fH%6DN*qxuB$>V^|*;N*qQLFK?H*fI?28wB4saMpWNpfwT zO6CZSJ|Ug>1p{eA0gDNO-!*@*t2E@zykt>1H(}m-xYr1AN+m_CEg7+ITyQ@CeE?P5 zVUsCN2W?C>P-@(lcKAZokSpotvMhBc-fU&SXP3}XyvwOx)tEfemR^6Za1EHZ0q*7K z5tCk%l;Dqe@=ao&|5k~my^Q`NDeQUV%VM_4dvXGc^Bq_R2L>Slk}tf@&Bn~UlrE5_ zPW=@4kMC`W5A4I+jT+(J+@=&uZJOKS9~a;KZzji-%##bN2=AV(yO*5$@b#?;?(IktVRg&xXDIu0CK;nJzBzFC zSaXYVXE1>Hr`LRwh#heNKil(r5%U@!u}`umtkWK*F3@ZxZy^yR4bM*7LAU7sAKQm! zxVPe+&968kA92Ljf)dZ}n$g$uPrf!?W7Mq8z@)h4yVjG};l0OXT>LF=E35$d<;97x zVnZb+xnIo=HRJj% 9o=&}T#ilSRrVE% 4Cv-(6GamEd0clT42K zY-y%EO !P2*8a*V&P~7~Y58Dx 8fV)Q#4B zgs4B>$Lm)SxfN^JyD@maZE&yRtR7Fs6q1k|$vYNpvOX(~Jn7GDnmBxh==bcj)@MSo zhy5BoP*9L4A7rKN;Jh~QJQL8aAkeR_c%0N9osi)RTvyw5XxX?b$bIb5>#WNtf4fm- zUNYE`>?}RuHIZiJ3+zO_qr%W@ICNB@fy6B)rT210*h<4f&2UFL!zC#M%d#b0zbCaQ zdJc%Lyd76kFhmw63?g5RUs&1^i`z?|6r}AVuhTlNi>r9p?j-bk+e7SZCdIQ@ri=1` z`aQ}f^}*!br$c@|O{5ncJktijx1K?5Bv;-}xVO>@yJyXWYsPn@>txrLp8!{qMLESH zu->5XwSfJ*tpU|@zSCBvFMYX*q7q}wwB^Yk!oPe>b&>qk(!?ty9SpDUC%8AecrH*c zhRQ>&Vf%LoK3%VLeMbE+%2lpLBGFEEQ ~Y|mvsD86D5 z#)#+H(yE8fwXf>i1^1Rj`?lQms-BA^KYdf}-ILMrwDqs^WG;z)*+~4}U-nyir#nn@ zh=(727h4y3esh1HO^rnD(8pq;)HC(^wY4t;^LE3%_>AaE$Gl8Dla8}izP^-RG#@^^ zwKbDn_U-? = z2{z2Jyo@Gm&*a{?*H8R)Nw>adpt9r3HKbaRO>nhl;V>46g>m>FTV>v}RTt;;i+z2! zHI9?tOd%gNfbtuxzP)hoZgu #2lZ`f0!NI0qfuJkgYr)D9Pgj(UyJtdNerahO^r zIeljEqaM%Gu$dzw=Cb4WJ?Tut&&rs?=*|}4$EkgAZ%f!KWns0SmJg?VSOS|KKRgv{ z+C!>j{}!(+spf`uaVx`t=?VS|1TUJ5hQHx4xH^HYQYJM&a}>WbYDm?bH{XHPw;%59 zs_mdi5;sy*-LFG_O`5aq=(+E*tLsrl{lx&>n@Hr-_AD%J5zRcXqgMU7<*R4G3Da-5Xsp%e b^vVn6mzEjI1oNH`+hr-0RW5bhmX)4%f`{moLqBMHRMr~w SwoF4q N`J4LV}xHKzm6HNq?J5Zp^kDZxeA|Com`6YWd*cPWD#&tf%_X#88!t6m;s z=FDlEqnJLXEdSfZ$^69d7o+0Kx2@^fLxHl2ZJnZByibnc`-@??*Y(2R-TN8ll%{XW zpSra(>#21=1a9TElE?ZDOP0=QMa^x6E??HCVvgiP@mj~taxd@iHCOf&gg<_#;Lx>2 zs|%~|2;A#CK c} z>suDx03}*=43);~rO1TyZx!YnFz*+*ckZ3`;uzi*id=0!L6Sb^mQ+S8p1Siv?J^d* z8Ru!HgGXZ8s5~ylA~MZwA2}&Q0+FNTZJMI`bG73)n^rM)(6QcCzN2vOkE8iBa_V4= zsEx&0>OWbNNN9(u2{oo@x!Lu-6-BbV>Nx`ih&>%80z{cb$y|5C+u7G~9DnR+<|Hm` zCKXG*fqBQ^-j;RZAk 1x0cLH5s4FvKeFFmz^>1$vTrSoqV1d6xx)qD?o7bFcW(!3lPGHr zZ~VF?WL)~pEN+pPFvVE (Baz6DGe&dbJ8sma zkX79^I)~MF67CgkGePXyGh ;h5TLoCKfB0cM9&s*z=HE@Ee%%=M{1dqmE21cmDVy@2ML5 zs2Y8|iQ`lW@@bZEuTnGu_gq=Ke>9eheSu1V)9#=AK6TD4_VYYtn0FfPow`6+o@XA! z;c}P9*$meSbSx-O+fJ{{UM4!wb(JEvijJXC7E*nzITDYfhCM|gY2+}Lm+H|qt<9}! zaFW#qUyq@-h^vB}ttm)7|3`w@wI}5EJ!ZRklF-sj R4%X)tAqb0tIy<<3 z5SV=fTZ+o27AE?IqGZ }4ocJlcYTgWoKbPQ#MEr&IRV z9C@*(l6-lu-1> ~cA^;gk)2#Cz~J zJ_zRh3ipm87k#tx85Q+3akub)B$>N-^qMkLr+b=O!@D6aA%N?U^)1KVEj9KZ9SVPl z=nf6XQFi0wWf#Pa_n(tuZR-=myo+#el4D1`LAWosy#iOhi(lZIJ2Z8vPlc-}S4wsg ztwu%EN&O8yS-vqdBu*PDtJpft(rzm-O-Bj#n!6K!88%(`1@kV!y}LOgA(xS7^(a64 zB)_jQAnSeFN_mS)Yw~r}zd}`cWP>A3%;c@;5_8~NR^P$C%H`FFF?6m%p_32U?M?Uj zm|w%Z%WyBI`$*S;_9r#<>{L{ST%iFcEW8NU<8hHY$UKKEnZNq@2Pd`fPA|S!OjCdO z_ZGohq>AX7r(|5RA05P^mg!63?IqAQ=&B%Vye^5Tlw+bT4+xL3&sN^W+E2F{&~y^Y zZko_V%AY>fGRgZyxPd!)`d PY%S23IB>+N>aSLjjd$?7Y3m_5L*( zeo@(wz~I~P `8@Mpai4pb**O{za$ zG%bt_QOpl=bDxZ67dXS}`yKA>>bvpOGmbj{&+cq(kKrx54c;x+v-^5w#!ooEl|3Os zT@;s#Fb|2j*IFjZCHx1)ZNZ|VMdOBYNWjwkXBwtdDVP`9=U)}%_iS-`o!+mVF53oM zsaOoZ%1`xFiq)7YF3Ypk)A$V02rJ8d{j!ysqN?NhU=Q>2oaF4E@2rID40$hkP?Trw zpti%Se1BX?!4UZXJ(?*8LAK64>mI@QJ I-&aW_1{fPe6&^vXwD<2_-n-g(0f@jFhAObzH247$~HWfF8eR_BOG zmycM<8*E|TZMfHiA$i}K+~@>tnu&g U~ zw}rUre@E0GlA5PF%HS$j;UrcBb5ce5r*}!87tW~~ncpgVCu{f?x^{Cl-*(~NXsvnK zX^VI>mpCTWxc5nnbd?mbigt%bPlxP}@9_n$4t<&GlIH6XD_xrSn(pH;=Pp;SI-&bQ zfAe!joCn1#ZJ2it?u{& |4F`YTSvQYKAS!0^PDHBHSM^xsoA zzfn}_o*YN&98>Vk#6I^skq*SKsQK11aW@U--G_U}aXz3tHF|vRTr&UA!^88{9u~F~ zGqXGjyP!(={IY%a11-VO9vtjv+`A&9`Qg&SPvwzy)GrTyVR-Ds9 I$114|iyp^$^72%F@0D}UlgFH>4&tjV)2l)AmD`wfIC|0LUxLfct4bhL zoe^11sgdvc5Neyf%J&fN-O^Etr~DI~p`Ke;O)vJ;gWiDK35lVjF!)`L#W>}E?XWpn99Mwnqs|Ab?=jqq zxgUj^o0xg3*PV+XLlzkv_Vei@teYN&x6AJsW60l9W%=Ac>~OlYzF{wq)WIU0sC&0$ zlbQOxs9+t>@#NfV`2OuD-2354{4@S{5xYg6Kbw+X%!hM_KUXreYc@m7X$-eDh$@ZJ z^omO`IpxXw=0ExRrIYQ?b1H{VTFoIToJW!A>jbs1`kuhOaq2u&WCL80GYS3_pGj-y zH$1qgQLK9z?ItdMY-SNgGqrj1D@S4|khUAXc5$KpW5JQ5K%o-oHV{M3=wfRMKi@os zdwuyx7#z(rMM!kX@_zUo>g(t~Dq~fv8ei-F`$|yh?%?8&-rXnj?5`4KaeomNd6R#y zq#qX+W4uJPa3?NDwl;*-7dn=>D#(Kr;uR|-sX_%uTD7zp<6Pb^g>uRy1kpVrtC|;j z?q?z*e!7iT6w^5Csu+18upiMFZd1@f^*L`tQ19@jtkgpwx?0Z8uB2dyT*KVKH1hmJ z8)Zbn+3IH0@nYm#1MV>EOWyAd8j=z(O5QETKQ ;LF*?l@tt-Ee!C9jGvHpY`@Ry;VN~$JpMzw zJXJe!xE^zPi;%yS-7}B7)^^^hbd1B0Pb {b2X2Ot z*{!Bv_3JWhyT9T^|4?+eUq6Sn9ALC$B&4E?bbQV%_`-00+$SjSNh3x~SBD*I9L#$O z_wrc2xTRYcPDQs(jxr$jgLV5JEmDfZZRWepIG0 x$eZOkerrvJT(RgP{LMLFQxogH`CaXD(H$8~nTVJ^fO@nE=*@L$utJQ=^y> z4Jr|`hinasbg0!sECOe@r|Kl1F?FUU;BwNu-ZRVT#B7Gu_XgaX@N0U>jk@cYNZ_Od z AK@PtFMR1*nCrt=Dg7AjLAc}?OFOd? z3iBeuz4r+ThH0|#QASKuZAIqhqt4Tj`8tyyPd5BA%W#!VYn8z9@U}YQeW#m87i**W z3y(X@{bW|6_g78T*A&ZxXO%E765Jbmtp7=n)12Swsh6O+ <@R5!wIi0tK8A#U5e z$IC_QYG-0+bZ_ppQ6l8T-<#L;Wrlg7ezdL%vK>pSYCYpGb^A1ye&G;}S#q<5{vXND zIg@Hm-VfH#hj2FAQZAr+pr3Zub}A33m!+gC+w4`_Mj#~Ej+tc7qrkjqaBuN|O?|C7 z)oqcM`{CX}cD C!!<_V{bM$=Pl?)p_5_vgQ zt;89ap9*hRz6tkM=ea5i)?6wyHvT-6ABh}h5DUNm_Fhj=c1NggR|~F^UMs!mqq)1I zj|fg3J`Fe$;AqH(_?&hwq5Y906>`!Kgw+=v?sd(zv#y?Pe}!T*@|D*12ubwjhb%oe zJK~0m3L<`I(*7spTnZTxLRf#djl3#|5*Wp{sb8W+;^PwEFw1JH)rPm1V8Fct%Z_~% z`-i8!(iP;7I(czJ@D$yH_0Cg?zEKWg%=V82l_o47YMb5G_B9VxqN96J6Z@5r`nGTY z2~Or^ix~;jrgODCV8XqXnzF0Sej(#M5k#--O(w0AgS9%7n3?@}ede_?KKneJd8E-y z9QE5VxFe|*K|rVEr>!ZUC7VKc-=!{J0JU%%%zF#&otDd>&|s&!nNpxD&WFwxDtFkZ zaKL@+!NaAwsFFF4Tf w_SS5|bNNsnl+un1T (14$l}B80M#wXmLY z+ tm?wC6SJ_GN%7glX9r8Uz byA^9s%kJc0^;WxgH4AFUF>V62HxI#i`@ozoi+je3 zM@=NOZ@;Q9KHQ5!KGDpPK(<#hha;)e$N4zB4__xHqqVb#mpK>pVw|=}?pHe69hQ(A z8NZ61Q>{O8rFNfEGD|CzN)QbFcsU4Nv$*m?{qkKEWYwCyyH8sxeOOz08|01B#J6(y zVvPGai1v)8rlR+e$xwcd89$0wM#Q#A|D`psI-dSSM7@8fcIz`uKVDZ7gFVbk2>0fS z3SywjqR+im39 3UTnuwCgOw-ea@h(8v6hOstOBuXNbbl(_;DXG z-0P{ruinil`D&EaQ)!POg}?3IqL-fVscYf;uG<<*D&1I~_fJ3gCKS6A`qgiJvlV`L zaid*Kd1I$S+~01%*#Np$dNtpm{t>SVvhv9=S;u+hM{Jt2$fDmY6n>3iwDUJ@2HyB! zG)sI &2eDftA1i2H*z?o&856q z@AwXdfdk>rbrI|4@LH&^WOMpFbn1t}41{#32fY(|)hzE3rl^b)T!68%D^;Gu7J zcCoqG5oI#WOA4>ASt`e|z3l34pa^m(tMu T6v10{?(@0I+LxlQ zBLUxTs$%~&OksgvKPHEJT{T&F@Thh0SMQAl;uL=k#E#*W3UCTyx--+OugKQmJNy9) z6HET0gvqr~%8uX$5zoWpK65Xj^bl#PJjoB-?XY|);9e3E;=^?&x1vfF{d|9(^(8tn zpAv?3qyBCD%^r{b01DxSz_J1H?t2E=-X+m3X+B5zLR~9`UiRYNg|r;S=ujKq)pAA& z_ujsDO4iA|udv^M_uFLTw8>B*YB;8tO6a@nBFU~-4BL*a$-to1-4wN~UMdxA(v%SC zhcbe0N+x1|-- +~p%qpEQ->!$o%c)Iz@M?3!P_K_vip$v5% zT!t^#@!iKgo|EZ)W2nkUT R^xc7bC-tZ>yWe{NMIPl(DncpxWxy)^3$X8x`edG}$bE8Wk{VQfayd8!H z?$sSMc%nd(=tDjKZr((@``H5v^%P@gB9Z_asSiXF>k1ZjfqTUHuLzGr9=j(OqQp+1 zAU00*4|fnB5HEhXCjwn_yUO=I+*@ap&^jj*gU;IF^dy-;c>ks(Po2_Jjxqcfwj$X$ zBgpoT4l>2^)gMbdX{@?<@!&$bX Nmlp2jrF{DB(OHhxPgTsl z(-!6iIYiC(HEH~W1iPZ;TPOA(^q-HfAA1b!Nh>veW#)fLJfiwsW$zJsP1|gb^2I$e z_;DW{+ tcX!3QqJhCXlPTX~sRuiy@?vy5;q7WF=42^a zWCvd(llHzo9?rJ1%XcO&JcZigu5zG Hfz z?I($qZT%U)Hi>z`J4sqijEu8pgi^96=QW|pH$7zhM_N2~3oDKaxgV7oxOse36|5W` z#2jTB*oS!;;odLJ4XqRC?|XwDwW=CD>Jj;_D6^Sl7=Ter%iUakmx@m IS0)hKt R34a_{+c|Qd*<%l=J!7){oEDpsTD&^ao$Qc z^(za-3c}CdSm55pl-StayL#p9p3K2G92|9-`T>@otvP2VgYAg+@Z>-8;dN^*qbGT< zmF4v#yA6H`QcaUx@U;Al7(s7|;(bH|t1m0uOTLOo_QQ0-BDF60NPZL%ncj1L-k5Tb z2@89H>@kD;Nm|w~IcX6q^@((0$zthds?Ix#Rj6f^{e};IKQ&ZVfFJ)t{rO%MWc*uI zUxt-ZlUUFgRCM3`J>?kRZO {_2boxp2lAwki2Ni8~JWTvLk7_d1iLhJ&B@a={mFK`Pkq7Z3IcM zNWJ;~#30GBe-704a<#s3!M#=Ecm(8s6E(*jZj6iV{6%ZWl@`W&9xg1j7EW_+OEQ -zs8(a)N?qn{>L|2^=Gr_oqDk~~OW8Op^_uOJ@+j5}hRblLcgrDh7)zo4FfY_k z^Ho6}eb8ET7>v_T)pD$QQ~m+Q`|clY+&4n#2Ft3X>F{I)@O~_Zy3xv|)ub9?Nup;X zog%i+h#=!`7a%1Dsdp2>*Ee3cms|V=#fBMws}<`lH2(KmW^Z?27r%SlkKEnwH$kc8 zi-i=|^s$E`+1Y5yvcjrQ=Bryuvi^+Ln`Dhrhh_)j23lBs`QToDpA-BT!#P=3%k#Nc ztC;(V%6H^>j1q&+Md&iH+DV9Jn|FuaQqLZgbDgx==Nc`@HBdca#}}KdMmd{Y6(Vhc zc^|;Nb`r-`as747&EzsMH}*?Lg2$y|TjjTJMMS9S8LG`SGa}yK7ek~i%?z;#Xzia7 zrQ@mb{N%Fyy+I4-855fvbj|H*dEke82i=_A M2-K!WFn!K0Fw~SXf86mGCtbR=*@L3VpkZrMBfCPlv;XqXSFFYraiSc3JugRh zR5zISA>51dzT?Y4U=P1BS0sv$va05dACZD5`)p6onpFAC{UzDP@kMziH=St=l^FnZMOKBS?;gB!k z6Qbfn9J#Q04*99+nEVF}G$^g_kwws}a+?}Vno7Ot V}^O>^E%i+THu zkYww#WyCW?NB#tHr(3q}oNibY{@U>KmPc@}m3baj@OBY(3>FGSxYXwdhi32iD!5hy z2hvF0YLaXx>TtY$H~Q`I$oZTa1Ag^K=Z)W@FPvmS3!!H`7{!W&w?Bx(y*IUvjC`q= z`JaViejBP%_BbBXdu4&~HtSWh3nDRc)u*E$i32arF(u#c`tfj~PJ8%tOG>HZ^%-?x z|D9|KbJ2(8AOZJkX`Q?oJef|+QMvTn8^({{`Mkw-nm#J6+Lmtiex~K=edLo+XWEw^ z+3fpoz8HvCB&>|deBm~Gc|&fX;Zj){x<+`lUP!{d>|7fmD+t}cTkkHkBbK-CXomQn zTApE3)spttc&2e3tB*dM@{AL$>#N*#GRv1COi-uCaN=X6{iUxclbU)DzTcFBd%MxB zYG$d|UVIM?u8_bh_^dp3LvX;j$g0C8zoYk+Pfo7@v$U2t<_S}ZA41p3o+AFkFYOfc zd8xJPqG{ond5W<5O2fS!D=fpI2G$}*HkOo2VV$bdo3urY-d`G$l87iVHxAdImw4T# zD`WNERDJM-FjEp;xC8gy9p*H3^10VL`3ySKFs}^UTeVuNDBP$(sEBDI>tsFj%BI$I z_p1*c{)bw k9=`W|+RQ;8xjGmMVz NCN-a&Ry4{74J(5ar*Pz6YOXZs{H*nDN>0WDT T kbp;o#a74Qv^zkU>U4=SA=s*y(JmpW10zn`yatIl{?txNqmP8r&uC4D&vQd#40< zoLO~F$W`r<$4~FI-I^FWWf(rJS+n-dX%ZWG7QyZlji`}$Q|+}8Ww(c08j_y(UTLt6 zDZx+AM|u0gg>x{k0^Hm8a<1<3)3WH-R~;l1t>z>epQEPQPgIn?Jq&x1mYRg2G>sFz z&ioLitFk+m#U!X7@ovV)m(O( 1@}Cst&{{d~MB zV?-9PWAdBCCBg;S#3+T)Ajm*9B=@aEa^s^A*^;l)<*lM8SynM$DEDi15MRN(ig0h+ z7 cld0h%b+pKF` zdyh(XKH6wvz7s0G;ue*aS?(_EQ&^19vHg8#$BF~q4x <)RN%d!4= zx>n$JaO`!w7UQzip4{qDu7+V9-NxYkvWZy0x6)+MCCo@CIK%~60 Cj2X(zy1qAtDyZ2F18o$=mx8_Ow(cRE;n4r3Nln)Cy;QM1Pr2e`L#M=J+)V z@m)X;OG}-Z+Q%S68CK{wFjqOKz`c=pM3&o!lij~*n8>V~66L*ABdyvsh7tOSxQ;y5 zKaF~pK2Kzzq?u>zGx=70m$su}3EN5b!@886TB*|Hq6+j|!7HyS+#4{?8&sG!;2kN) zY;PC3bJOUxWhsd|!^l=odv_pNZ-%8@NQcCh27R5m zsp0M5YH+WP{AA&mn5DOi4CdVY4RQ5m#uHLOK9~>o8vZy8x&NI!$J(qWD$$dOCJk|5 z3CjLqGIySnUpiwS5c;Kn8_kIlR$q0v*Ox2ppg`gF(q&CT+40}jQgJVC^m|EV3Ywo* z(oIf_66D4T7P!z!QB}tGgP%R@U?CFr)7AN`E<9ELh4zTM?IX;q0r!&GRAsMDt5Sw< z4ye7#LHBoii5Fan5P8HowJG=mHPT%>8RzKFC-=9P%zr+;)T#JT`SHg{C|SfKWKrZg zVx3;-KLJ RUYxdt>Y@E{~p9Y +}mZMav}Bb>)Q z&^*YT>^9A1=69)Ib%;Ggd}ml$IO_>}=f~-nr1GMEmQxB3%zXW4T$`0gnnff36bRd4 zld>Wc`%MMGygG32?x~wHTNP6V8tX;sYRF7N*B YX+*eSW^A`=STdPlCS2hGyM( zwQWAH=O^dyuxgzC7Uw-G`4@_)V^>#^2AEeD?tL+P|Ie#_%82hODYO{|QL|((IA%L+ z1M+SR`Zb_W;^8-L#n_kAJnd5QElJ~Q-VO6L$F7d^PTUn|o97QdmWThIKo9OUZ(IDd z>(XXOBq=ShR ;JE;%%evu`sIHp4uoFRLfVI-4NMkD)NfO_vtP1OB #3<_lKPCV=P zEx5B$9=%-r`%QVR lL$;9kWM&YQDqWh9;?!GVR^KirZ<+>SECW4gLnhjgrmk=u3Dk? qbZSd6px7e9v*rGX0_y51TEy zfW(f4pNwEv e3AI#ki-cu~++bpa8$V`Y;4ympDmPbhcajTx~S#xtCs4q(IyJN>G-25Mvi1f&; zXVvd@k(`e0;mfZ%-0Sy_>*Uh5ZzIe#Hp7)nOI+azR^49x`5Ix%?aAU9Q?hsVa&lI$ zjEK~!ni;$lYC@48edU|7uw%Zn6B%FHmXHa{!2<40AKT_pZ0O+T#K{$2q>1`9)=iA( z^!xnwS7{ryy38+5)O4W^azBvOL^)&-)KH5#oNDgmW{|tsI`>yb>-tv1bFhSa>6F6- zzvnoMW0X8~h|8tW@Fmc& FQkips0#!T{%JV^L_S~z+`QA6g~D3&+1sJ z)8&tk3C%Y>@ sf?k7$Y}WsJ_&=NUdffkk1fcnm2!3313jx8`#K!7B zH9Mg9+M2zDP8|@+P!SM7o0Bi}_`3YRPvBpf8rj-enIa(k1TzKezd)wQ|9su6A@me_ ze8oR6|LZx_z6GD|>a~B@Av8ZMZ0wAo`jO%zK>f%1LXWS@bprpp2|&xxcTxld46y7R zfZ>0qWeECij%H4FHm+s}vJ?minEz($2UI^3Cnqx}a6mmy^&j)#e|Nt9|7|)bD{Cuf zsEH9F4_rw5cbk|0?(+l6&& *JyS^&I=xvgX9 bU*?d~N^hej=2!k%^rn)P7VCE}DVgvH1Si{WjM% zzfRyff$IdW6Zr3*0JPt7GJD}_2L2Edrv4wtqW?N(_%}XR`|mzauD{=Zj|8Cg$lA%y z7W(a*5B7DN!v7a@^?$a#`v1cF@8E#G8$AHJ#*+B_KiB>Ty>|n=2Y!798ixh`kaq|8 z{ bpqE3Tqkgyz;y!G30x;|oxpVh z*9lxFaGk()0@n##Cvcs>bpqE3Tqkgyz;y!G30x;|oxpVh*9lxFaGk()0@n##Cvcs> zbpqE3Tqkgyz;y!G30x;|oxpVh*9lxFaGk()0@n##Cvcs>bpqE3Tqkgyz;y!G30x;| zoxpVh*9lxFaGk)vQ34_V^irYrPwx*HLQak*Y*w~T&PFyiY&Lc#&&{oD%-GZ%&CEn7 zxi~1DtUS!@%vmUTD2;5aENtz}!QH1p`Fr^v1$qqi;{)A41>EQNU*+mKbbpz){}_b; z^~nQG1NEEN@y|G@KOJZq=sxbB{uu}LSp$s&T?rsO{%0K2FAVfv&@})8)Gr)Vpgvuo zacBS?Xap!we=N{A=-%)K& y)paLZdjRW`CNBCDK24D#F*#Uhoa9bw?R{&J3 z|CtWlw;KWK{}P)1IT#030T=M{pK&k#nGO#;_W(e}_Mhp%t>Y1(K69Y=+W#|-06Y!@ zK%eFK&wB~M<6r>faQbH)xX%xQ7XWfN|1-|_pT$58`cP0Xgj~3}M8MqsU(9!CDyY8D ze1yIqG@qdP0?h{~Gbm>$S13m)Hz+5luJzzeHGo<`9iRYE2q*#+14;m;fL<_dAD|yF z02l;(1`Gj)0V9AffKk90U>q<3m;^w5olgUxzP4robAWlk0s!jQYZ0&nSO$CptN>O4 zYk+mYcfbbV2VfJh1=t4c0HA(bTLDnNSZ#oIKnI``04=*+fE+*`Kn@@ecnnYgJOL;I zo&r<=ssJ?rxSbw?7C;*SEyKD1Jpj}PB((f80+;~I09F7y0NmmjffK+5;0Evjp! Fy1i%g8 z1Ax{;e}FbX2cQek0~i6!0OkM-fF-~RAPJBH$O7a5@_@$x1;7)45 3Kh;g(c>{n7JPrUuGBAtcYqgJB>58$7-Q zLo6^%2mTB|4j>f(?Khy!kre>i96{SWI{>szgSKHV05^aaz#HHL@CEn*0sw)4Aix_y z7$6)F0f+=d0ipphfLK5r;4Od*eC_}kLfd}|P_INl1i%^K0 z10Wrc37`SvDZyl}01rSG7?%ym0nmZh7yyg_Hb5wN-4DP49&-Y?0NemJFwPYW^#KNe z2jIPr00dzC2S7f+2#^F`a|XNsj~xN_05`x(fIHw7APnFO@CSqdf&jq)FMu}y8VBJE z0R;_;>C68Z{y%O1p?PBhfU<)6tP2P4gFXwI*U+|z3jl4KH~`Rk1=Sr|&%mSz$N(e& zsQSOwKP)i34ZsAT18xFP0Vw}hbKe0bRk5_ayB7l)iHai8fH2D@aug*a2!enCoSmKB z9hjXNChW3^x(2S8LA?s*ELXUQIV&RiiHf2qiUGxl7_SNRUh#k5>OOPM%$~6F`TWm^ z_Rcw7r>d)~tE;Q4`}9FN0I3O5GbF-VBDF#~2#L=T&c53LiDmG*z5eZkU)suENVJ{Z zk=PfHK >M4F9s8qz69ry`w>REAWF q`7q zAkl7wkme#$&%;QR1!dF|iSnZCssHnln9nv#>TC7|_C?B$F!m4X+W|;ygTEuyAyNO% zL1J5+k9025c}Rp`fV3EiJ}Q0J@kqxZjY8u0%4yTz1$-M4_5M<%caYvjdL3yq(yK_D zkm`_LLHZx04M>#BdZcHO)*(HO^aRr5NRJ{tg7h%bKap-nqVC*^bPLkWNH-y|9ycOg zk8~Z 2f5t+hs^sB3+Gi71A;!K6?cc^LfwTYmulE%aLwCx((@0q&txA zLb@AiCDJ`e4 8=g> 3)veGW$IfJ7gtEm9k#_cV8r5L^kL}F oACSI5GI;t9*DU{AB$mzcb|C$#?|;Pa9;Dq! zzaX*vpOE-0ahUi#e~H6u(j<@B<$R>`jc2U)lm~GLGuqVcn$J@ve8%8`dE{$9oliQv zr;PZVk&LnkXCCkQYn012rX1)mv96@gXZRaJV!K+OCyZ^y_F+D+EAd-_RF2dRX)qFf zc*2cxj9+V>^_qQzzAD?7ePD+Lw-fHki#3mYuzh-EJxjeabe;M}UHu4&vZ0=JK^}F7 z{E!CoyW*a@y#vYMlQ80UL!u5-9>?I9a_Wh6G!on703@~nb*DRisRu{l_ei88ka{5P zKpyECZO31hOFKlEQ6}rj=d$w#AfJAkVMjR6=!;a0RD?7QIJ7C05p4?nV5?oB4Jt%l ziB1FYOIpVxQRcKwBavvEjzgk9NLp;y#z>?^`!oWHZ9}^>7>RU;<98U+P^2OHcL(x~ zI a{ha v8y dXBb|eE67HuXkrrvJM&9Z8JqEw0;rCRe zqj9|eDT>5=Kl08%nvFC^!-*3>Dn|+;l_6CkE!Tc<=`*;&za~RYE$VlAY5-zk{n9a! z!pvA0pKFR?ep#PWE<5s}p#u-hon2JGOd|?X*RkCZ2c6sfq*nkb93YSm_}dCNOP;vv zje~1m?`=Yk0;CxrzxdYHo%s0&HG~x87vvYFzX|o&w7N6zZMAX_Ac~lH->rf3-H>o~ z&)Yu>9GF{J0+bT?lF>vG-!02I&Hw64Ur#*nToY%M;;(M}o{i!CzPo)IAjSE``C$A+ zK$?Ks%}3Pr?zK2r3P@jM;om7pgv_14-(9m;g}3B^x5E4)Ae8}f2q3i|=jMKJXyiaZ ziUBBuC#%2gdG5xawhf;;`^LO9Z}Ff%kObb+FW%XH$kGj0lbWi~S;&P})SY?o;NL zY3ILY9@%>sa3~$rlp|zwJkjf|+vBg#yZ^Mj+*dV@KT=!ePX;RYq<+0%`d3#zl$U#U zaXzXFuQl!u1QYPw+P<^@8o&70zyuXZ@KpF z GA#ae|!y0GN{-<9*^wK*cx*Xs@Ze?Ymc&uCJ zYY*wvZR#Zg=|^hiiC}dwl1x0h^t=v>zg@Du5z9e4z{cb$iB3P`>py;5>i-2YC{pe7 zZ$Q|lO>W%r?ga;YQY?@{a&YF~WX@GrcIm?>hu**GTY-q&>T@j;196W@IUtllqnSn1Htm1U^MLeKkdFXiYai2R?0@&1+V%&HgZk8$0klduu&s}1 zyzv# BZ@lHKyxc!Ph5CFjAk@SG<6ru= z==zTAB_(X_!g}@~FLywGNq#X}t~+q32YGjW|5AD7qmUbw7l0feAZ(xiF1h>4cV3;} zE-$wTI1p$~KS0_8a?{K~Tl1a^9NsA1w D|bL+yltLfGquf e>Tm z216Hw+orWD+ad`>>}a+XGquWD-$tU@*h_}*iS>H?fNz$Fj+U?)Y}-^UQcEZfTl>Yx zDJv##I%*+xM@)!~UU$T^UGQu~e;att h8FhAACO=0KP^=cJFK|%fFm~dz*qts!r> }Xd-2@_5 zx&F9-n)b~v##|lLSkwEOAO7h@m;KWxT*E5D8wghmwP(&NdtlXd6J`jckT^Sl!@f{B z{Ej0QoqteAK=i0t-}=vHbwJI*T7sJKmCTE7*gB)p$<5ZOat5Ngcj{6y&rAgc3dUpXYqI=8K0g6Ewz!E`YQFWb&`iJ@jOw z((6n}v8Fa_Rrg)Z7gs+C2;~NiKNb-7`VDJpMz+p9{!9Z>nEq1i(S>)ucIeL3Za~lz z*mQ|hAns2Da~^&^*7W)l+Qk7u`%pz5*3_ 74iR>?z-Vi?MO`K-H#Ip-3p^Pb3oiFFh-;d=N&abMP#!{tEoEri)vh z77kyKdxLNdX&2`Fq^W(s;jGvVZ@&Vs^AqHtl6B71?twU=^mVhI`F6h>wtsW9@FrUI z2O!km8B^Xo;q)Ii?vQdsqL;K&620l3E5B;r?v2HOz~- SI{ zw{4V{dl_=5O*`>RiB9UX{ _mz^^GgCXmV7v4mo>i}VmS4RsU41XKA2@vhSIh0d~s3(SV)~9rSkD()) zwj2N)bYI$oJ%Esd*Js|ddE8Goe+IvoeXazNr}{PRr|M% V6XMyKJoT>6`oBfLG_NonMc zy_?n?UDA9xAkZB0_A($~qVCs&g7fy4Y+4}@=v6_^=YY`Ts{Qvv@4PqsNoC)PY2PLt zt~BI~ae=1YE}G8%qwC{Dtt98-&Z-q|pIe=(-Fs>$;9zW|%e5R3YRLI(gRdPka58%q zdFv0~9}xUs_uqB>e| RW}zlEeZPy6!SyR%>NvmZ z(WZhU9+&YY@RP=F`=Qa o_v=k2BAZ+3;l!IZiZd0=p-aO@@?|O39R>;9Qr`(@N z&c|={$K$sYOuFoJp#}>_iKY@1P|F^prVal`Z^T2S|A1Qk`p_to+Nz_}2zcQEJ#RYU z_WLnE1&;VGy8)p^8r*s8?1fj3pCAyiiTCwXv$m60d|KD?u$xwz^WcquaKvbxJMR6T z9;vupaNxlq8V(3;Ncpzm_fPi?fc5_fIjxY>_!wn(f|s@#eC5jzlmdrNT0ca20YQhX z`+nmZU)yf`zX1q+e@Jo^ARHt2|Lli0)Bo1C8W3 2QiI7ke{2H+| z_7YAQ>PPchtclOs!B${%qvd7;LJr#RH>=a6PUj=$Fd)CLw00#RwAVu?#cDe(UOxml z=%r}9;`0F^2ZIVHOzU{=ha8!-jd##qgzatx4qNX2Lpo1*woP~TEZ9nN?Vno>DPUb- z^3^Ryyg&X}K)^Gmfr#1p!}9=n?UQp0CbmEA9YA!icNiPda%I8N6z6)EpPy5*qvK1Q z%OHTkHZ6+=lJQU^c=7a}qkWs7W4ub+w@1MnTl?}`@1OqrS+7ku%XtM5`ft~-=<)Ok zSKa*+ApO<2{SF{(?Jw5UE}QZ3e9kdo5vhs6L=3wlu`b$S)ZF$@E-3 u+S4ta4|;|~_E zT_xqnT=O?T*rr9{2Y!6%waN-Wv>#F)ij?_Mv78p4hgx)eXi5SQdNq)>^DLBe89zA4 zfBMn I z(-ge*X?b92=VcG<0tC84eRG)Yg15tgL+`2WCGUPb{gvnM1P 9;UuZSqG2D*sd2Y|5ubg3S{Hr{spIw@x$ zxwi4_bo*3moax(k^lIIC!a~6jx$V)A2R5E_<;aTFM*zZJ0^KPK24lWZB4=CoO-EcX z_UjRXBYKeMQ@#Gt5jVd&A?L}TH4Zp96cF+@;2Pi6U7u@B=^zFwTsunV2;fkw7CiQI z|NRDyqrQPNT1#i%>X&o2F2@ *V#@+3U$Q 5!~yR+L*yOZtcTb8JJRXkJ`_m^Xav}a-X=gTJ`Mr?3k6Q{t4MIC(# zWs$f2zW7JK$nrJKfI~|T-a?UbZ0N2`w!5?U`ma9T%y~T_?7@-BU_6ve9CY2T4hMhu zChQI>DgSKykKjZj0Zt@xUR*nJ#qtIICPGa-lovsf`u6 zF*j^`^{7SF|A7~vipg=N=8RJc4Q5TNdLCYS&()=q^K#idq<9r{j;%0n=+#T+Z+V}3 zpu$x-{y;QNBeHGx6=jd#@+n8!0r{|q@Lw^aQLC0;Jz~R~kIp<;aAcHm7#C1bHnmo{ zH-QRc8zpF0QuD9x`uv#Xhp-28%tAS~yosf7hB%KURS6})J09Hd) aTv28gRz5EjV~Df z=Aq*^zc>as?5Chs3P@YXVB3--_YOOCNn=20Lx7WthkSFv`BBa5UO27S#q4wRcffWm z6{!tilF@Tm=|%lp>_< @K+V=afaP(p{^G D51d{$bUxCkaGqYU2%R-FX2xluo;o zH+|B(`v%T-DTBfy``#$^`4Tvs(@uMD;nBSg8&IB?yA3(5kmKA6zu*bhXZOm|i5G0^ zT&H S#UyN+recVFKjKG_;X?G3j)ggA(X(!dv zyCnqF3IL&f^Q}3rdDp?~I}_3u%O!Sk@ 2rqkI1Nbr(iKF%72n4hDq0t!?^l z)q=$jBd%=Ns)>NGFEnqz=ala+{fHwvH3TD>Lrp==mTMI~1~uxzsM?X&J@M=)6~mWN z#yP^|J6=h&(_z1#v+SNPEPk)E4E80GWy`fR!cK6&Uh@4TOO~!U@UsCT1L;}gMk!1F z)?w@3Kk2~@cbE`oY8BB~8Dy06`|v3nAFaHWUXAoQc;2AK9(-Gi<&UK 1%X))rOU5B1|(o9gJ9YuYf z288puZ^}OX@|PuNPLy&)4>ke9v1In7k52k>%F&EQXglgGgHJVYEgRkR@tmT=lqHuD z@HaqcdyD>fxYMNlE`D6s2YRqC`u5lMdS{#1Xq=Kx)pbvHUFLs!J-FtGj#g*`2rX>W zZ9n~E=EF^uw~qBo%-#Xvc=!H{0jn?fJ@x@`C~M$g#vcz>1Q$Fq`t}=M?A>>~mME-c zK5*Ek2QPkc#nUtY$x()V8#u=U(io7oZ(e%b(|5i6jfS9{69A#LyyvZ%_q=e)T6%+` zqeVHV0zz4D>u_y;>$>t!O=`>SEG(lNInEj%1U1@_eiIk=%D?%$d{CoD46YqU3}{sx zI2 H3xv44+!<`%-biA_pf=SQbRB +;KG?Jx;`S1B95nb z147Fe8?k8Bx^o7%&^VC6Gk|d3aPW~|bltx6y6z@q8z9v9ExT&o`K06Id(Cpb0)%?q z_Sn87Q|n)2bW+>VyzvTh?j6syez(zOjPq&8A%KwDeyx*_-g5nDqc=hZy#Qf-zHioH zZsi-louF~ha)SV&3}&uA?T4=6scPPc7ApSpJs9PbN8>(h1FX#H_T}PBp5A;7%3}f@3u|bO`Iw~8bfZo{A>0bn!M{R4T0`d144;5{dn-M30Eys{sCGDZw~>& zKKHljH5Y$=&0*ZN$CiWK9QqGz; R9eBf9=)TnSuPw)6oI@+@3)lPN;XBLV|1vdO zxrq&N9s!+e>fB45acnsdug0Noqt}NL{&?J9o6~0dS _{18p`==_o3MC8ke;k z+ns)*iL#Fvi$+(pJKg`- Dykw)kFf^%f Mtf0{S+Ip?UMb1c9i$_8rA^>LopJ4aWXy)@@h(|L|Q3UX@=-~ZVB zyvlIJ?!!cG5(##mg*x<8*P1%>b~`xW>^*1mi5q?&^NBHg$N1wAl|ngxx=o?I&TYCc z?bG}eCASxkf9ADEt{65+%MG58L*xgZkn=b<57Z8V49?vBgYVfncOmX?#E2cnU{G5G z9L~h^mv`;C>)39LEKuVy244k8J3w|Hu(A4#hgLIQMF?gE&K{(5)Wg}cbDo8+1P7c^ zZn^8$X(tw6Yl$m6%$YEo0&i9R7|tS?^~k6%-ktrZmH}EDkVG(vH~P=m`OJlR+qtHv z<8M6Zp$W>l<)w;N-#p%kYt UXf}jse_QBU{ZvUfQi!O*; z4lPmdR@|s@4%<`L^ucFVp9>tle!2>fHsI~c{a^j6Lz_ji?@3W}-m~qrLfF@3q^-X~ z2oB_Jh^N5;BaN5zdcETveJ6AMl)WB3>rby8LT-()ZpLvTYwZva=k>Yfb5x|U@Nf4& zyK~Op8M|ea4R0xz1?Q*yVZ7gdM#;1bOFmfw2>U6lr88uZUrDstJ)1WVYIFl*ov>ka zRh?V=8{l*T*G+~DJ@?++rT-Ke$gWohj|+O>tRXh5@@#F$z HdI0jzP9MDZ*8QUp-8XQ~0HiY@dGG&y(ejImBPPVTed^2L98h74IdfpU ze@FIYIpgdLZ#0Odwb--$&Kc))iu@sKM(94SZE9o1`a?s|3Kv!?-Fda$*kkYbX|81z z?nJaX{SaffJ>Mx-Tj%S)Lul*;t;M;wFjYA}T)TE_$3 zKYu8#O{Q~j`hpnw#D?eJd-)&VaRj6lgI?QeyzJ|A-uq?yc89b=BJ59~vN_+}*tl)a z;AOAsa=<~?xyp{NdH;#8yC!;fG`ZfFmaD&ilv@BXl;rH3r(_*n{#whkmrT4?$|*wI z71Td{;3qswKPMOd1lN$qtebu9neBST1xMb;Xa)#Z70)Wl@4UXv-`M9MHO`Ej-)FLY zGf4WJ?OQ(5KJ|I~2qlxZZ}8g|zh4dZ`!^O%;*5oR-TM_3=2odE9y$2=_cw3e%hhFi zLU;?S1t6RUpZMLacc1d&qSFKikYbFQ0e{$E7W{Acx!+GXbpdBN7*DAO&h^QbXsg^> z(C3&4nTbs_PK(J)+p0|wH4A;}(w|1R{jT-}6S5r;_VJ0Y#?HH>>)e$l1n;ONYh%Hj zfxjf1HLbmBneZmF&`+bPoW{{1FYKCf-4l3^67R(HL)TiXPrZq)%LOm!OBshls~(v@ zYC$p>kNCqU@nwsOVO 0PUujDRhu{Y@tg=_Gp! hn<5sH77q=v5+q$!QOQlBHKMf zRaL1Z2f1NG@lrs3QI{d?1qF#{Djo