From 3b88ab323bd5542e3e9ac4b9d64096cf096803a5 Mon Sep 17 00:00:00 2001 From: yostane Date: Thu, 28 Nov 2019 00:18:50 +0100 Subject: [PATCH 1/4] Added more details to "Building Swift on Windows" --- docs/WindowsBuild.md | 49 ++++++++++++++++++++++++++----------- docs/visual-studio-cmd.png | Bin 0 -> 63763 bytes 2 files changed, 35 insertions(+), 14 deletions(-) create mode 100644 docs/visual-studio-cmd.png diff --git a/docs/WindowsBuild.md b/docs/WindowsBuild.md index 143f9833041e1..1b67b4dd9bab0 100644 --- a/docs/WindowsBuild.md +++ b/docs/WindowsBuild.md @@ -1,19 +1,21 @@ # Building Swift on Windows -Visual Studio 2017 or newer is needed to build swift on Windows. The following must take place in the developer command prompt (provided by Visual Studio). This shows up as "x64 Native Tools Command Prompt for VS2017" (or VS2019, VS2019 Preview depending on the Visual Studio that you are using) in the Start Menu. +Visual Studio 2017 or newer is needed to build swift on Windows. The following must take place in the developer command prompt (provided by Visual Studio). This shows up as "x64 Native Tools Command Prompt for VS2017" (or VS2019, VS2019 Preview depending on the Visual Studio that you are using) in the Start Menu. ## Install dependencies + - Install the latest version of [Visual Studio](https://www.visualstudio.com/downloads/) -- Make sure to include "Programming Languages|Visual C++" and "Windows and Web Development|Universal Windows App Development|Windows SDK" in your installation. The following components are required: +- Make sure to include "Programming Languages|Visual C++" and "Windows and Web Development|Universal Windows App Development|Windows SDK" in your installation. The following components are required ([Find the name of components given its ID](https://docs.microsoft.com/fr-fr/visualstudio/install/workload-component-id-vs-build-tools?view=vs-2019)): -1. Microsoft.VisualStudio.Component.Windows10SDK -1. Microsoft.VisualStudio.Component.Windows10SDK.17763 -1. Microsoft.VisualStudio.Component.VC.Tools.x86.x64 +1. Microsoft.VisualStudio.Component.Windows10SDK (Windows Universal C Runtime) +1. Microsoft.VisualStudio.Component.Windows10SDK.17763 (Windows 10 SDK (version)) +1. Microsoft.VisualStudio.Component.VC.Tools.x86.x64 (MSVC vXXX - VS 20XX C++ x64/x86 build tools) ## Clone the repositories + 1. Clone `apple/llvm-project` into a directory for the toolchain -1. Clone `apple/swift-cmark`, `apple/swift`, `apple/swift-corelibs-libdispatch`, `apple/swift-corelibs-foundation`, `apple/swift-corelibs-xctest`, `apple/swift-llbuild`, `apple/swift-package-manager` into the toolchain directory -1. Clone `compnerd/windows-swift` as a peer of the toolchain directory +2. Clone `apple/swift-cmark`, `apple/swift`, `apple/swift-corelibs-libdispatch`, `apple/swift-corelibs-foundation`, `apple/swift-corelibs-xctest`, `apple/swift-llbuild`, `apple/swift-package-manager` into the toolchain directory +3. Clone `compnerd/windows-swift` as a peer of the toolchain directory - Currently, other repositories in the Swift project have not been tested and may not be supported. @@ -37,7 +39,16 @@ git clone https://github.com/compnerd/windows-swift windows-swift ``` ## Acquire ICU, SQLite3, curl, libxml2, zlib -1. Go to https://dev.azure.com/compnerd/windows-swift and scroll down to "Dependencies" where you'll see bots (hopefully green) for icu, SQLite, curl, and libxml2. Download each of the zip files and copy their contents into S:/Library. The directory structure should resemble: + +Go to [compnerd's windows-swift azure page](https://dev.azure.com/compnerd/windows-swift/_build) and open [Pipelines](https://dev.azure.com/compnerd/windows-swift/_build) where you'll see bots (hopefully green) for: + +- [ICU](https://dev.azure.com/compnerd/windows-swift/_build?definitionId=9) +- [SQLite](https://dev.azure.com/compnerd/windows-swift/_build?definitionId=12&_a=summary) +- [curl](https://dev.azure.com/compnerd/windows-swift/_build?definitionId=11&_a=summary) +- [libxml2](https://dev.azure.com/compnerd/windows-swift/_build?definitionId=10&_a=summary) +- [zlib](https://dev.azure.com/compnerd/windows-swift/_build?definitionId=16&_a=summary) + +Download each of the zip files and copy their contents into S:/Library. The directory structure should resemble: ``` /Library @@ -54,7 +65,12 @@ git clone https://github.com/compnerd/windows-swift windows-swift ``` ## One-time Setup (re-run on Visual Studio upgrades) -- Set up the `ucrt`, `visualc`, and `WinSDK` modules by copying `ucrt.modulemap` located at + +- The commands above require to use the Visual Studio Developer Command prompt + +![Visual Studio cmd](visual-studio-cmd.png) + +- Set up the `ucrt`, `visualc`, and `WinSDK` modules by copying `ucrt.modulemap` located at `swift/stdlib/public/Platform/ucrt.modulemap` into `${UniversalCRTSdkDir}/Include/${UCRTVersion}/ucrt` as `module.modulemap`, copying `visualc.modulemap` located at `swift/stdlib/public/Platform/visualc.modulemap` into `${VCToolsInstallDir}/include` as `module.modulemap`, and copying `winsdk.modulemap` located at `swift/stdlib/public/Platform/winsdk.modulemap` into `${UniversalCRTSdkDir}/Include/${UCRTVersion}/um` and setup the `visualc.apinotes` located at `swift/stdlib/public/Platform/visualc.apinotes` into `${VCToolsInstallDir}/include` as `visualc.apinotes` @@ -71,7 +87,9 @@ Warning: Creating the above links usually requires administrator privileges. The ```cmd md "S:\b\toolchain" -cmake -B "S:\b\toolchain" -G Ninja -S S:\toolchain\llvm -C S:\windows-swift\cmake\caches\Windows-x86_64.cmake -C S:\windows-swift\cmake\caches\org.compnerd.dt.cmake -DLLVM_ENABLE_ASSERTIONS=YES -DLLVM_ENABLE_PROJECTS="clang;clang-tools-extra;cmark;swift;lldb;lld" -DLLVM_EXTERNAL_PROJECTS="cmark;swift" -DSWIFT_PATH_TO_LIBDISPATCH_SOURCE=S:\toolchain\swift-corelibs-libdispatch -DLLVM_ENABLE_PDB=YES -DLLDB_DISABLE_PYTHON=YES -DSWIFT_WINDOWS_x86_64_ICU_UC_INCLUDE="S:/Library/icu-64/usr/include" -DSWIFT_WINDOWS_x86_64_ICU_UC="S:/Library/icu-64/usr/lib/icuuc64.lib" -DSWIFT_WINDOWS_x86_64_ICU_I18N_INCLUDE="S:/Library/icu-64/usr/include" -DSWIFT_WINDOWS_x86_64_ICU_I18N="S:/Library/icu-64/usr/lib/icuin64.lib" -DCMAKE_INSTALL_PREFIX="C:\Library\Developer\Toolchains\unknown-Asserts-development.xctoolchain\usr" -DPYTHON_EXECUTABLE=C:\Python27\python.exe -DSWIFT_BUILD_DYNAMIC_STDLIB=YES -DSWIFT_BUILD_DYNAMIC_SDK_OVERLAY=YES +set PYTHON_EXE=(your python.exe full path) +set INSTALL_PREFIX=C:\Library\Developer\Toolchains\unknown-Asserts-development.xctoolchain\usr +cmake -B "S:\b\toolchain" -G Ninja -S S:\toolchain\llvm -C S:\windows-swift\cmake\caches\Windows-x86_64.cmake -C S:\windows-swift\cmake\caches\org.compnerd.dt.cmake -DLLVM_ENABLE_ASSERTIONS=YES -DLLVM_ENABLE_PROJECTS="clang;clang-tools-extra;cmark;swift;lldb;lld" -DLLVM_EXTERNAL_PROJECTS="cmark;swift" -DSWIFT_PATH_TO_LIBDISPATCH_SOURCE=S:\toolchain\swift-corelibs-libdispatch -DLLVM_ENABLE_PDB=YES -DLLDB_DISABLE_PYTHON=YES -DSWIFT_WINDOWS_x86_64_ICU_UC_INCLUDE="S:/Library/icu-64/usr/include" -DSWIFT_WINDOWS_x86_64_ICU_UC="S:/Library/icu-64/usr/lib/icuuc64.lib" -DSWIFT_WINDOWS_x86_64_ICU_I18N_INCLUDE="S:/Library/icu-64/usr/include" -DSWIFT_WINDOWS_x86_64_ICU_I18N="S:/Library/icu-64/usr/lib/icuin64.lib" -DCMAKE_INSTALL_PREFIX=%INSTALL_PREFIX% -DPYTHON_EXECUTABLE=%PYTHON_EXE% -DSWIFT_BUILD_DYNAMIC_STDLIB=YES -DSWIFT_BUILD_DYNAMIC_SDK_OVERLAY=YES ninja -C S:\b\toolchain ``` @@ -103,6 +121,7 @@ ninja -C S:\b\foundation ``` - Add Foundation to your path: + ```cmd path S:\b\foundation\Foundation;%PATH% ``` @@ -115,6 +134,7 @@ ninja -C S:\b\xctest ``` - Add XCTest to your path: + ```cmd path S:\b\xctest;%PATH% ``` @@ -136,7 +156,7 @@ ninja -C S:\b\foundation ```cmd cmake --build S:\b\foundation -ninja -C S:\b\foundation test +ninja -C S:\b\foundation test ``` ## Build llbuild @@ -147,7 +167,8 @@ cmake -B S:\b\llbuild -G Ninja -S S:\toolchain\llbuild -DCMAKE_BUILD_TYPE=RelWit ninja -C S:\b\llbuild ``` - - Add llbuild to your path: +- Add llbuild to your path: + ```cmd path S:\b\llbuild\bin;%PATH% ``` @@ -172,8 +193,8 @@ C:\Python27\python.exe S:\swift-package-manager\Utilities\bootstrap --foundation - Run ninja install: -```cmd +```cmd ninja -C S:\b\toolchain install ``` -- Add the Swift on Windows binaries path (`C:\Library\Developer\Toolchains\unknown-Asserts-development.xctoolchain\usr\bin`) to the `PATH` environment variable. +- Add the Swift on Windows binaries path (`C:\Library\Developer\Toolchains\unknown-Asserts-development.xctoolchain\usr\bin`) to the `PATH` environment variable. diff --git a/docs/visual-studio-cmd.png b/docs/visual-studio-cmd.png new file mode 100644 index 0000000000000000000000000000000000000000..aefe732e57e05e6c9735bcd2061b5007d82863a9 GIT binary patch literal 63763 zcmYhiXc$ zZrki@-Tm_#e9IQykN;h2z0lXUwrr8UKJ&ZRrGy~e z+*!W zk-$9RG*<$T9}Ps@av({@BN20@2-b3OWG$l($qk1EX zI!diap))1Hd>|K9=oX2df+Wq(WMLj8x#P^kglSH)^a&9iq_Ry=CmIPC)H#sF9z9#r z%rxPrO3=o9G+hYB!`!KEg`Im{-#fs)Vc|+RON3jCvdwSX2U+8+ndS}XCX4-78tva! z8pN<36@6Q4Omi?d&Z#;F|2YbKx8r6b(yermtZAbg#5K>|c%W_R#PM^X%XOQAdiZh3109qWW3y_3aA}oKbUs9;sEx z!|)~#p+5}@{tYvuSbkVYHO;&UJ=@~J)mV76Jl384Ufb3{+HVtTb%h=^4|hIy=fc;y ztqa-<;g%7lLk29)jmaBRQ12Y?l6&Yyi-KMtLM}>y#l6MmTsmYI6w+Xv+6G(9#Kfwp z4kQTC^r-=LG!SjQ9ZNTZOO ze-yduRm-w9n@)0(yVLFQO-4gG<)pCWBh6A_dGbs{KU9~~vrEYlf_waTUMi?DA@uUVyWaNtcFP$^z1f_MS+feUjFv3=OBltg(XoY>7(xanjija|h%S zG4-b;%N0TQHlrJ>D6=h-8xl<@@)=tH$6tAE8)rn}*3I*aDG@tQlyshp47BdG=DIr5 zswTbqwg;CRrfX^jLKvTK_WLyCx4!#AE;tq{+yk1M4Rr*HAAM9d?cPGoqK2Tk7KzD8vR$yy07eS7o9qr zUfE&Un0R&lDIWhC;x1YspRTe2^QD}B=2|B*My~7(T;jcVv$NC#3t+|htskl{FY#-t z6eHVbpNs^e>&biA9WD=be1x{1+YYte3?LGvFCeYN8PQ4;xUPO(f2uu+JGv~p8}km| zu%cS)(y(VFEZO^O_geu|9Bu|v1{6gN1N*6Mr*pVv+<*OaKP~G{I^nu~#=y$n}_31B9^w$!w4?KW2ADpA_%$JSIUzz5l!hmN{TSYw?1k$IOFyQQA z&gXF51$*7ts#67#x;ba+hw!+LC0S#injpvPtch=F?C_zRlox;Xo&n%HOB7uG~2XNOVTIY5BuaP7ph! zIow}aPFgu(6X7K{d5eFQYBe`moE=C=!I_Y0#ZkQ0_l4DNRXRr8Pp7>}yc+>}F~8x8 z>v;QsG%hysDm0zk#6z#T4VYUl-{Sq^8|6r8V>xkHi?+s@PjbIogs3b$Ynh;pHC01j zUjk9f(Cm@&%-}zvBC%0L=|f5lu*=@TLVy5N&~8%fHIvtyWB5k?0UHLcy|$sTWF6gG z^)~`KTCMXS^>9+`CC!n-2v6|=h$x&8c0rffK6js(z~ze$7IgwSx(o|VLtx+$T6t5S zX6KAHIbYWK>G$TgfeiV}QPV}WF|2WmUP7wu*}UxwdXUb>J)c|0=57UD$jD!P4C~kh zSW{-Ox8;3Q?SqQ)kAaeg?pNYMF(M7M5cfH}Lm2}rYU17SDa+s1bMGK<)@&S@EHJO2 z6?li5SwhnG}>g(ryk^)@^+qVYT$BEAf1LTxNU zx=<8bTs_(3fxZ|2S(B;p)Uq~lMTT2pL*Tx-(M&mQMl!`a-LS35 zlYAN}`C_Zto2U4cSMn`s^`%)SBP`&$9$y^A*Z9(pm)T-Mhd}EMAQUIfl`R{<=6y3e zF>1sJs{tuKf+iBu-6>ErHRx7hg@!WD%H=7o3Ya_KS0h&sv6;OLQc`SLg%;#BO67J; zWTx#m0LtU%mF!YUB9;CkRIdS8M(!zn28ppDPxqOIva$ihIcJw$502wLN-fmpB{OWZ zBaZi@lMge;bUqZaW-7e(_CIS3B9P<@OBqrcTR|h@mGgKOXJPaaW|YW^L$KFbh_&i4 z_sF%c1*ChTIBWCTk)6>-Kh6zYo*T`wfi)m!4wVvRr*akkU(fxasqJzmUG;S!aQ(er@{i?V zLb8|wVdG+bF2SP0wRMw5=#Cpv6vedf*=Bj-oGZJHxYoJSDI>cJGQbn}l3#~@SPA{Z zQLpu*o2B_khbir&qD1~94TN4h1zA1CoWN!XTv>wL8bA2~J>;hmcB<)W*<=<(!O=Gb zNY|3sYtbRSo~3Mg4SU>DzCJPMf!$zsZ7^Fp3-YPTa`A)YyKlk*@)W~`i~O;yEcNWH zB1uHUxfD*;8^Xh`#EbXA=wxmpP$Yd^N_s^Zo<=G>vi zVSehL@gcGUJ{NRsfS8{Kga0<}C8+^a@wX#a?_@(&pg)+Z{WsZz&N)z{2+}FF7$DLE zc-u^URkhfqTx8~`b$FmY3o-<^MAz3}pLUPnDr#5cwfUn+8yqLbd}@AVvDPj5=WJM` z3^Q-F@o)Ypr)P+L>ify}0ue|h0usdcx%iC+O!IoVnY=uw-z3j8u&&I}16K2|6X8d~ zobexSuh4alLDQ2OEcr;wGD#BI6`vKS9(+jQtNRIiSERAAm++!wAwKFIy*??U!Q{FX zWA0qFc6Wy~hym=$D4zvS(I7Rg>L|q-`-+(CLqTP-@42e%oQ4DsN#d`V5v$w;A!yE- z&TwA}2Qz2d=t;}*`cL%8l~vAhh1?oFb+6(WHAk&p!p6ns?YT;f3beiVT`y$gpMC`7 zE(6#iIG3UmqkjErR`|^zV&EMfA!#YHWmH9+n6(7fo3r&9`8m?7{~eX2td$K`eu87F zN0xV@=_=4|T8oI672z3{*}Wc;dhBHHE&|ok!A!>u=8Y6@3F;4|t|YCXTG~}oGZnYy zMQhs&P6vq_cj&IDcyX8GTufq&UAKoUJ4|t%&SI&QYwVa?1k~iB1K#+8((<8GXswOe z)U{~J{(kevdqQ>wzXL|iximoyxXYG~D(Ny)#ZkpY5n)pYmcQpzPJS?z)TJ#YbAZXgi?Vaj#G!caBf8^z zpg-XThqlj;l+fpRBy;$IT3^&jT-NWnO52QMfi>216iaLTkZT)ho!EsE4g3Fi!F{}) zW2%z&LLGKhwZxj-iA)gY<2z8_z0KMg_q+6sf86qa&ogX&pTu=c=1N9xmda*!C!t*E z`FIFOnlpddlUhBQ5bKT72ToV|DP^`|lT`le^4qiyHGHs^Fcut@cia0o$Qx!PT_-}dg*xTu) zWrLPh@|m5qH6(rwNyPlnQ@+pW#B#IM<1d(g$Ljcy)XPTCb$Id5NK_34?ngOGIa7w~ zvh#030-&)&Wq_QM?#-{u=mcpdVa$E@D41dS0J(cFb7C$4NC2K_bxQpAQ9;MdFIdXa zX7^8~W+y83AFnp*MzjvbAc)K*<&>Us>hPK_qV?nQ=1+C>iDa~98-5?AaNc8^;nd^Bd&g=4NyReWl}9kKJdfRB=_p8+R+H6Q@n z$6~Ye&`$z8_YGalOp1Ma?WL3=_}ZYP?k#XvQp_KpSiWIt5p&i4*z$KAeV zUw1_qp&1viyy|;ad1KmA5;VX58?CAV+9g8fchA8)fC&P`IB_KFG-dl6>n| zrY}LHO!p<3pehUQ=ashhr31kj`A~~}%cw$fQZWJedCVoZ3XB^KP5zk^0#Dt76buIM z7~}_9$Ic~gg~)d4o#VxMa#U+p) z3))RrzAr`4(US$sRk&;4!++#GIEfuP=t*Ft&@CDt8;n^D(qs&CQY#j`M>`)FbOe(d zmKUWDdnnI+IU#(j+0Yy3hRpUu#Vx|*M*4sd8OONSMr7f)@t_Si*Qdoux_1Llvah`= zX@k(R0Ghm4@M*jB49v)#Ntj~=>_GwmZo|7L3fHEH6jb~bh{ud3sqdrdY4>wDdkf=b zKI8KwvsTsa+nqC=k8gfo%<5O3m;xoQHWM8&Gr611_su5hyY6N)B_TQ{Pl*svX?HY& zprWH>FPVHLSJR4-mdx8P+qLRFQm=F|^zCxk9jbyKx&wzX{tkBC{q9R}^psn-;HyTl zH?kZSVCzsDJd@c6tr71O`}%|=%I8`)BKC8tzGQfg6@Q$u4;n21v9r@Gk4UuadHTCU zOQr4B3uX%t1;6x}zsar2hCbWSDv&6#T(*E2ndj(5<#);TVZCa!s!pB(w#KPA5Zb+6 z@Zs||1w#~VFTrQEV0OKt)pqA}swo)$$-!&jE(s`xy}a_*vZ-7fQojzyp!=SR8n&p+ z|LpX1!3MQ#Gs!|)1H$sNBEK;1Y)UG|X?*goHp$!k)EfO;v}rtv0d{zeA2!f5^oDm( zh8LtMvg-4ebwvgKOHEeoEKyjV+2>TW^?Lc-qeC&d-fdz7pDIl>#~VpLI}lr`b7kEG zTt_EmHC%DQafJB`gkG(lfBU0xmZLT)k|Vhp!uuFu;ixeq-dwY>(D);B4X}Plwd9T< zkQ5_t`M24t=ROhN)OE}MH==GZZha&TCmB4mzjtEikzVx3WAyC9#K3L*unQhNTC<`s z$SBB}CK`I>R0tb-Q93Xx7{GVx=PV5-`e(rsh1HSo3r@K9=!eGGSG{-WHLtijo@fN7 zihs;nrSY&$TCZTQ@m5DY2CR`kzLsJV7MiYJ*ocw=PjfRy>S7K3Yy+U6mM^Az^Y8O3 zrnr8kEvT&H+@_SQ%$!9<;n2j-X=}@spi%Z|O{>PB-0PwG5#B+Kl_8 z^O4II9y}xi8S>S_PLCq2`sI%tj@C0r?x&du54gE23;CeZI6ru7rYWA3AbcKXQeb0P znLiBR-?S-xwxsrqIM9D!K^^5T`=Cc%w9*N$UnuIup3tGq_2IhYWIG5qMW@H2+iXq) zgn}txHElduzdASfSR=5svb5{4ZlQ@RpMO6xM+ePc(uxWMKT!P~&_ZXoz}(jP|7;r| zH@{}I2+EztALKCaI|s%6hK#zSnW{_fdsLKfp^))f)lYrKC$gx#47D_Q>E>y;+9ubh z(cID!7;3+{8=9uWCBD@z@STDI?K&&9uo&)}O2~>6%-+%9;t6XoUE$rWEw$1TDm?(_d$uLjdV-CHN6Sy0dxJ>K z!53nG3U=KxG}`x5w8teqOna*DB!6}vQ1EUp)hY8S7ApKQ8~@uEe&0_??^lNeJp7^~ z4t1gCc~#K6N9ghdv~60hekd)N8=ZGQewmkLoS8z24U1|Yx9z>2qEl%YauB#*57TRp z>3yZ(b>ltkwmXY0tdvpv^JHJVPkcDt>t`mmAO#Hs8Xud2tDUIccFtJq#IAQOQ-g&D zwsG|}%o1qKC7WR_*?a_j1DpKY=)q*kpq5WI_ZpJ8KFW4$TbwL$0FUX4x63xAnIhP4 zs6NN{S8}dtf7>DGu67rdw?}b4hroqceNvMpszWi`@LYc_QB6H?GNFCyisg4{JsEH% z2<~?8L(o~X@D%89EO|tmS}gDk7*16%q3YZJ5bdB_te%H9^5%m5&uWL;o+LSCrWW}J zDIMyOiLvwqYoFEA*V{EuC3et!-5mBA?uH1(Yz+Y?HA|3RnPzx zjNtx6M!7aIUfIF%XY%!Co;Z~WW=aFJK!F|^kWMj&=0|HP=u0Vx3CM}?w&BC+p*!uM zdYMNZ>)s5}j@|@>MX?3n{KiNc*$K8LKz#J~Gauz|9XmfXdS$)x|BHL{2_febVC}lC z`}yNN=Lf)zlYnXx)s0!VRk5vU8#{7o;s2h1z{eWwuim46~)HUb@DBMv#61xbR{ zJq_M5)|$9AIlW=RHz+{%b(St4)Y7+lRjvpg5%e5z_3tzqHKxVnObYsM6S|^e%iRi_ z-ky6K5`E9z5KP+F#VZ=Um~28h{4L9E3hNNkCiBac0>{eGSGi$l3*%fdJ+v{(E->fK zaXo6)KF9`D^c$)5yR#+YWK8EC;>dQ7dZ21=rOKfDhQS>Z>Kw;gqJl_KlNwi&KQ+fp zt#W7S09{(c7pBEZ@5mR^3Px6>+mc|fenn0UCRwJ zMWCiR31-4XY}x(A0CFFBtMrI3Iz;m7@dM}SEL%gzIV_Ua4@@jHncw%(VFhgs@9D|1 zTGuf9vG*@TaQ8P(W_TWzsrShz3+mzAPe4ds89jsq)Q|L=K||218vb!Y@+0G~oHBX$ z6*IC|hq(hDwwUn|9lL8YArmG3YWDV`%GN{o0_%EJ!ln#4drO<&;G?){3VNLu1>ZUR zzme8`kpXUogh(nNR5=q>vj0b^0<|T*oW|qB&zw48aIl1X*l-m6sLK29n_{?2S_-efR)^$zT`%A2`TR4V=HnS}13PI{;a=zmr2X;s`FB8en9tu`6A`pH zAF5&U_Xp2E0tj(mVjsXz2b)7K2ifrKASM@2x_?c`sd7D^W9@tZm&gq}H0y(E>oNKK zi!})M+)t1E%yqrbV4Ur{5&O_nQk#r9g zW(ivVCK&J-JL7&bi58%+o6#>Y`yA3=;677TpcS8#eiTu2)JoU7Hk7+hn_}KOcKR_d zU;8bjw69GFXpvk96h%0s6`5t`ymS*S>6EDliGH#30Te7n1>;^NMql*5`qje6wXPw~ z*Syvl8W5woTBPK4PA31b@7IaH54j--T72$T;Ast zX9IsTiauFDk9${BqCWydvzq}$-fBFMJq-Fo)(PdD9Qx&8RDFDrF30D!crH=O?v zUp{+1z<#Uom)@S4Y^ZQRoG<@%E)lxrX^P~&i$8aL1x+yCgE^D7&>wBW48 zgV>E!SpBZkNJ@=%Z$K98PC#y9L~V)aq-~la;Voe7&korSJKW-4W(TPPGxFJ|s-F@@ z9Vzw-k}Q~V`VhkXo&!I9jLM$u*oKRylKk&pU9V*D-tQPuw*_IxjwXD25FA=^E z?qPrTo8PW}2o>#;emg5|`PH`eu_rZgV2FE9I^K=x>KR}?b8#kx6(KjW|?m^x#GgxdWtB|{#ks8O>E79+-s>i z!Y}+;tYgLd1ffR#D|lJLRW3QjIlQLQ>#U;TF}#+=dGOrq-QGx&d^ALddHTLZ_nYqu z>i-TO{9X(9Ze=_lU5bGbL0y~Vj&#Qg!3soIS&dEdUmzv|?}?ZzmL2?NqPAt5cv+FP z=9r#k$t*=olZkM8*B!(_8-S0@1E)u>5k~Q(2n1~yKM@F@-AjbmI*V+;g+hbnhj{UjXaVs?-Kf|2$$;x9sJ{=nsRsFMQ0lw|s%G33|&k6c+r| zG7wzWN)cOg4{WB|ohK}2>8zAVww4XP6Q{_(@%|tqean%AzsB@0&)5aTDrtGA*C*WR zsmnWkEiY*IUPH$lr-eENu}GTf)QRA<|wX( z$i}-u*E-qghRJ^c%YcL^P@B{-nlxcDCK1kS(M(vsQWYj5|gIPz97Q>0%5q4^PM02^)S9Qqfakq2=*`{Eirx5X7TTmcjvn% zoFx8Ke7*3xru$OeNHKa{YKwhpP}aSfuVgsu0Qevks%eE2cfMaUP9%!r!I-ga z#7K{gH?-s#Knvkt23Hymnkx~-t4Bao}*6e8NosgnwF(+yZDu-^*s>3bh=PRk=VGVeA9T3Bc2xCzI*{7lWE_1yeGyGRk~7 zR5gm7-?LcTbxkw_(fG%|@qS$DF92f9=bmkTD^}^)Nsja+%dByOtcdJ_&n{~w3-qxn z9HR5y+PAdH&=saAw{R%~6Dz1(1CDM3ta#L~&%7X>1odzhj9soNaDiP-r{#?0w%xpF z6IU$6IQc&uCmYwFIt1S+wIeq}?}M$P$`wv27|M^n;WV}cFCIz`86+5nVQ*CVz)g~S z8rfQ_%m>NGoA#rw=DevNlbQ!foFB*GX|4rjt@mWd9806+Ih7#gLbHQS zLqY77bN5*!b?fw3`Q@^mx+i9KSvo^it87TO<$`-3>9zLy_#{Co0j>$(oZu1A^JL-* z`g=`oFmD^E7t30U-Hb0)1Xp?3zkc8Q{?Qc|(efbj%TxVUU1-%VL9r~)<1`yH5&3|9q@;Paw9;jjb#M1%aeaH#!PoU z!^g#=V=2W(M|NY$(f`wSj%QA;SI4Z>X7oSp8B0ijcTtXC0bM-l@m*n&AS?C*jO9mF z%I*?ilRY~wu@!?PPnkI>2-_dB=+vWC^KYxS!kRnr!(sa$M^enwkC>fh9tcQWzP&z` z^i;5CWnQW9OTM*s4CGpR8$LJvVhw9grgDz!pjR$5n z38HH=WKulDAX81aLSfwb+9@oybbGskVos`0-NBoU+xq!Xxw;PkguI#S#a^hXzh@%h z{Kp|21~f|(A`IAC7uhwpN%13V{02qD!;#*wlCC^Wjj`daT~ms;ew`7?)pGO%8p%yy)|QAD zJZqdp%Q@}t^kvl7jbrN_Pf+UCY~V6Z1vi`6P_EaGbGnp4j_k>eW(=CgVJ|LyU~{6! zoQYMItx8Iofwp+)LnXa%f6wHc#~LHqg=jCkdbiSbGJHLKszrFfgFp>>E@Me4jxi2h z(<>jsp$a~NP{9l8U;i}yN9xBja~eMuO6d7xkyRz5oy&39no*Jb&WYsQ^#KG)G*Sta zJPg?uG}pgYVVig0^$>b|_;Q!~6P0$?4{hLjMFBtPZf%ha{f1SQD@n2|;_MxX-#>c<1bfCv4^=kBH@ z0t2RpcT+zz8BkVceP-|HFqRf#2Oywf4U({`-91YDkvIEyRxQ(g9ft2BGWT0fa6s|o z=R^>C6xCd4sVrLT?>R4lfPf3)DJg7t~~l?q|v;&<`-e>9@mnZ2=s zQPGsFH4cT--^a;$sbS6aHl zE~1qpd>135sf8pdlPy6p>yv<_FMw#kbMbfjHlqTkiiqI^VZhCA@D2 zZ9?fJ@B(q)g4)E6r7rvFztc1)q+$CVPxk`rp8g+}iTJ#D-4-~4*ufxMOb*Uo1Di0u z$9}f*Sx!`tuda)ejgDVBd`Y7siAIqUf=S5;(JNZq;sI0-}K5lzU7apPpn z+Ek^of3ml>bJ76L(FO4pn3ZJA!!7QKr#~Ydc-EL0h9wo=YXpX)kzBSB^yAQZN`yu)B zMO^G}nE&|Sd?MVoox6Xf)%{;j6JmR!U2UGsz?^+*{qIe#G}Fg>g*Yghf7z6(>`D0B z`DS4E)WOU6{Uy~4Zkxc@^%^8H%}knNHs(aU+9P#iZSroi@RTMqAOzRKX&gp$@}+OU*+ zZV>fNG^rXN%npKd3IY&cJSwzhRI&;|QW`MxRbR2CM0YV>WEIq~zO34aCT4l8;MTLy zDoR}*L+Id~tUi`UX#c+2l4DuY<97Ad;vfOJxccqK!=004eZaNFY+Dj@aycF-ez%uN zYAut7>V?a!*DjajuRs+!UG?ta6Gtq}J{9Qa0dGFB8mX#L`sV==0HR_Sq$#|D_#O_%WZV2K?NkLicUTS;B< zU8u1QOJ=Z=>&og{H&cG0uPABE0p=vf0l^MlFZ@wtW?ah*Oq#OVvMs5xu+8&MzF)#` z3I794Yk|i&?z2gMG%|P@0l=2Z-A;^>dn}WZT?8a8ve{605hT9opKB`Zlr&?4{>_4i z_+|yVg9p1;=Ci_*`?ksN!irEen~I>o%d|C|cHP(GR@h(qNsW2KDl$YtKGy&aYS!97 zMcx&pZv(hoeOYB!AlFDB^JfL<#z3*Wmge%vB;{U0&x`$tV1&lTsPG?`dR^li1 zEh#M0uQX|HQ{ng`r{T(^NT_+PRzRSYj4>|aEQV}DE$(Js^+<^*9D)rLdquh3Q!tl4 zJe0mX>ZAD}|HP&HILX~F!|R~~U4M#`CX!Q^lc$&Q$|dIVa{T&B5I1SwiWIl@a85~_ zOry(0L`~JdM1J!8H4JR6pH7-v_QRo8CJ7!Z{fI6}*CcdJyhb9wAgb`220(Vi+M7r{ zl}z=MJ1xIbXDi{G?kn}3K?VK%7wI&-QQ)ws{UPrpHN&1_#qu zeG*-{i?+5YBjvT&oR*Zq>-?9a=s1%_blDswg{G`s1dR5!jj&yq#;Ac&8TX~O$DgUN zCT3TLLe#o_E}%_uZ>!yakc!&E>(^sOssv~zd!wpfS&mwb*t)Gk?fi^=z4B#Qi*jZg zkvYNlS#RAqC;^L3gQnhfPM}e<7@nR=xO@(iFunZMKY5ykp)K!*h>=8~o7AVbC~WHG zdn=OcyU!fRJaO$`Gj`zO~^ReE#cglEpet)u?x~j zkqQ6VBxtAyUTu{*T&#N-w1Y%DX_Fted>bY+&U%A!ybRTdxdWrQTMvYu6P$G)HJa(B zW@SBtl*q!lzI1EnG86d}M%T?a<25X&#__&uvhdyHFMvt8^s;h%X+?qg2$4#ce<39H zFDtO@r1g_f(gH;A6tU9Fa*`N#%`p?l;B5Zi%osFaayf>Gz^jze=p9{(G1rpSZyEc? z1S!d)dQIi9pASh2&vK+v_dK?@r9liLqcN_R`E%CSe@}rxdZl}sl z^QqhCcQ)jSKb`yl)?wW?n*14`wAc2$i6sPw{2x(<%>QZyVu!cMDnKN@*k+w(Py$>6 zyBFZCf<6H{N)xI?+b@vDoU-sHyQ~Jq&b>V;;ACeHI)OU_=cVr<{0 z-vB=C!OEZheo!?AB(OHB90TfzQqf97fMT_Ym<3H<@0@@k`hqM;QJX`?0|B4_c*90- zhVgyYpIEgMPR!NewGuk5Q1hs1Jw;U3{f!@;fT5fXQ1Ftg`aLWHYyyArDkYK14Q%s!cN; z^@gbyp_E#C?-J3uEs0er2^ocw`-b}Lg+*5ZjLHmfCRcDvO=P0y+M6yqJ*of4nPMA? z(0m{!SmaXk*f8BzB^kP5u{YrSK`Ld`@xGO!=S2KmDQXp|0%vaA99!~t!7a(wlF&am z#}Ix2>-8c1VIM#{wnp!ao<7lPPpel}Vh-jGdZqs#wTI`82xh`n6`k#3r=*-SK-+Yv zNiP)}AlBxU9!}${*1#R5MSl9y9cMjmK-u$>cp2o_SM!G5|;y08pp z%$8n}&QtpD?fSs41e5@kXFH(FLu`Rhi^{x|=n*vvbGr#sPcUPJkJ&l=x3+ECjFsav zP@6?)r~Qb{9UaEEm3c}iYuo9u#ci1(+&rM`QQhl+Jwt_b6L51k3we=0lM?P9LKEeW z^f;_rK9&d~2Ihipr`?NGtB2PHq0_oq?foD9m#$UG$=-`aFtXkDwud!Wt#bhuYvW*9 zgH>}rX7`aph6TIMXJlUb5f$uSH=mIhomA6HeplPyVc6`@kg7rch1@%AQek$N>Rdsc^$#u8rkF#^+D0q!!%frpQ(G>(6CkWrse+5*KPhj zE_?D2BaS#xIKbabyoYlP)U%gL{yC{7H{$Rx4KbehzSSA8;4G>4>85c+=aPhZ4<5HY z*-K{mQt<}Y-5Pzb=b>{J<0QDAr+LfwMH%lyN+wHwWDo`(N?V2b@`KjkT3_(0q}Q%j zAf6yQMAoGRzddh4#c@+3iu^#PuYEj>P6v2q5e)X^M=u1QNgCEG><13(klUW78a8{& z#4gC5q85vKUp+LX%H6WC1iimsQI3oYO@{xxR(&z4*>~qrixfL*F-P>gg|Pv?Lv7pc z_XEBy@eMw);l}r^=I|4op2mIfb7UG4P+;TJR@yq`S1P=p12OT}+)M4F>P2~3LKgqg zN7f9XdE0FChkph;23b)uV#oTZFW(nFGxI~fcVmyM*Lh3ga5<}!-PyK~w&E;!K6V%8 zNE)p$CaCM!%4$l;3n=9WAoXQip^%Zot-d0Fn>tcEkjJY|FGe0@icj9-GMjNlFwn0oU6#P~@xZS+GeRT$hzQ`?Z%3-Xxe#omV9tw3E z{g%I*a|^GCOacUiznYL~%GpW*Z+$ z00mR2JhiZnVGWz%H2%nt;X;jv=y_TLtVs*y?j`o@K&BVGCb0RoF?htKI|g9D#MY5V zCFj0Z;k+Q?%^?$o^p0SE{nE3#?{LpvbvT9Juwq>eOdd};g4=SUR@*VA-Yx}c?oR8W zZ7$iCiD09&V3C@t!2+B7o{*wW(YK>ZS0~=YCG<@1#X2EO!o0FNN+4D1c zXnO;zdI%O$pvkMMp39dyWz=6+Fp2@14e_1tXO1){-w^ISWIEnegjz6DH@JF;QeGGr zU^@BuHuhZ88NQFMq=<=&>Ht@Ti>laKf0e{do?191KOrD|?Eg(;#gK@9(!%Q25a|x194!cjkUUB+- zf{25M^>#-s1EB7a~nJ%PGwiepQ1S0B(i$fAA z+(LIhTOI!4Wvyn}ZXgY3kvMhe7+4hHspOO^Gk>uT@dw*@w*2AZ%0k-}A#=!#26^Fz zhKVuWaZ6SwgBBC-{&g4Qtj9xpLP9fRu>5g9@qli~R}SL`4S7WGbE(l4X3i{?6&^Qt z=0Y-;QxUx%ToM`G}GYJLjyIB5A@(T{6$V z_wJqK*D<@8>lm*UE~doScwTFfVHHUv#*>u7EaCH~#rrG%w#)=NPbr zq8^D>hF<{U~njI_QnsA{6o4U!jKNzzw-PSHE7^n9`& zc{h9SvXw>M4N0$TwI|t7OET@Rm1M4tB(W} zmXHZB+t5xeD);JH?(?}_BZWLW6Cq9T*6$W!CHN*!0D+PBVsX$a^7~D1Ks)nfZrnv9 zOl{dCPi=hjH=Go4F z6qg-w-`)E4c(#_P%}T?H+$?ILcRFgJC_iSYJfW}+j^2^Kwo7y7FSE@4u3+&{Ei_U7 zNm3v1uAFbADmDL!~88Kx!_vQ8x#&`kOmhmQCfdjxt&3ajMNTy(+zT zmk|`iO?q#ilrM>lId8(^=CrvtE|lgdgJoc^E(mg zPjC|Yw(pU_ODbPFZ+6xeA9>bd#J!B^8iF<9;Z7Qg68m_vk^1aOl6RAL{d`7INC0)F2swN$4|vw{2(*bH&fH`iL20*U ze*-wun>d-J&YhD8>W)1P^|v%AXACP!J(z{=RF6f}=ie81$o!bafQm`4tK4EluRTQX z_#Q`5SipA<7DnS?MCF zmktT5yn*^d2%{_Paw$(RyyAjKZki{{``qZw82!PiuYXy&Yq3mH_fUVyOc8_CmQe#t z1fpH;-rGRe^=KmASzDoRXcO~F;q#;vTZG$H)t)UQ&bP20Tx3cuDK6k_p-q~#s9fP4 z|Ea*8+F_5${dho?iQK72zMX~0oo=z< zK2k7+W;2gYEn-V|%|+Pa=VCrBXMm6!?)U9;rDOEuPUG%S!@iVgoD&5iJERIXPOD@o zLHy;l=a42@jA2;98nxG`mbrn&tUaDAz{~?yYC9GdCZVb{HhXf-6fx;O=f`eCt!+cF zO5yLts+{gocfoS+OS;<;aq_rRHS$>KGDhpIvwd~*f~U=0?>4xb2pBpM?$o25k6NI- zPmsT(wNk1EG#SPp7y6Sg*2QiUA@z$VDu?lsd4H~jrkxc52C$Cys29F)v~eCOEb3p$ zQ#(L(bJTLYe?qlc@W|dwL}Y-J8z%z3P}Wq_D!PL%JO0aJyqUav7B%-&RqS4gQHaJD zb5*}C*q@dcM-rU(K|gfiG4f*YN^Se53-`HSP}_e2s!bLXSLMIrAtdWR%8kER5QnK248Y)Z8fD0uFGR<95*n+ zi)s;_k?W_uCb#ecZ*Q+4h6rlR)J)@+2urM0IeS9U6Zm-Q!*En&khW9@{fH!noOx~x}pSWWv-MsYe>A^ zYg_Bb#emUv&B)R|NBBv-`GkPKRWMG-9aO_r@iw|Sy=D_GghPT5F;4ykO1fEsuT*o_18xpoFL(fj-p~S`n zR9KK=g5b;&Ry-|#mBHWZyr*HKyVu5aeXMsm2HEewjFW$>j1fWQ70~gRpAcQ^lL(09 zHl&%Mj4aptt(R6V8((Y$gObLbZs8pY>z!_n+;_%ZZ41qY{XfdyJ)Y@4j{C19bqSS< zoR+JyuB&pm#2hE7TwTd@b)Xz3isZ0H%wddlr3jVE7#mkbW!w9eKJy~+KyjecFAC0 z{75BeJQ<=J_B?W`Y^&3m-Gd~`yOoYCeNUMy$I61`9g^L~0X}(-qtE?5KDO{##YW@U z+~{ZWMf!LYyW3}n_vBGi7F09v7b#DbjF~_%rET4?gyk8OT=wTF#75{++yc0z^ryr@ zagnBb(k!-=I0O=ZGg?nm!*W{yZfre&Uc+oQ;}{Mnwdq6>Tq>sR!42AqqkxB;}uG} zkN8sr<&?`#ko&%)n~ZvHDMMO^@K{<$$9qPt*j0xl&gzEsERHU6VVpQ|fOu#)MllNAgUNC0N3A#kpAWEW4R2XNhy=Z!mWSAX zoR45=WN{FR1#fiRQWch$1c9kqMQGBuNaea*Q16qp9!zAW968GGje&~x(juN0_K64%j#0g!bnS~r)Pqcv~O%bzap=%UV;M3!6v{iu<7o zuUng1NdsV>g?Edr#DTS+hv3VHaPmr!v~nS3uX_w1H_;?UY$pY*IqC!~O`^t{&)np% ztXw%^XOZvL?Dv8tXaV0Q4tI2FrM?*(6vcU~;kD6LvH1(&(jQ_vMt&Br?UqF=IcPuO zBTA5UVPsQh-$uo6j{kD*eV|6^n9g@|iaTBM_?$^BG0@?s^}tp?q!Zb2x7h>7t0TT5t;EyR}h*V4zF;PzP*&(Rf1uJT;l1}0>E z@JZmH5&~Bz)=-Ku24OVpJ{lvW%ZC=Gj_)PHq?hy&uJf_-2ME!Fh3xRo;SysV@KMj| z`M}oIm12i@))Ut2E-uBFKEz6?UyKYzFAKaz9b_qrJ6{xF#S|f=OC1(0c93T(SW|I3 zy^Mcf<6nKH`Q-Bbw3)1%t)Uw71@c;LBYD|f z{`n=xuX%mCy6fD$qUme&XOeB#wP5bwod1T*@_GO-Uhog`Sbgi2ix~EmbPKoi`uc^P zKx}|)fk_}Oy!1v5^rTYPOGQmDDlP98Qj>&%7!d;}Pu+36n}TwzyVcZe^;1}QzRR$s z5h{KG7rzLlX%Z6zCAF$e<9e57{31>OV@N5Y2JN~Pg!4LRzb*e^SkaI5qgTK%8yHs} z8%}>zJl3?evA+3-8e)(grWb!Evi-L!iv#gv1EFzymNMltnPIGT%G47-a4|~j8TeN9 z*d@VIW>R6o_k~y9*1oX+#uENW;~P&fjDT5K5&_+I1uaWG;@UE+=sU4?e`u*APdDy8baJDHRb}J3M(MYX z&e{9OTGX%6&!{Hhc86kr{lq2BoQkInyOwV=6Y~Y%=ennZYEG*EHqkww_Aff)0Q{ML zu2j7I1o3a3)%$_ye?6kK6t6&QGi4aW22+qxaog$It`OEwRInCG-|%t$IrFEKZKC|!++iL_-)LN zOB)|fMQjv&+oTIqEBnGN0;`AG8{>UWCks*queHEN^>YV{NE?nEs1A z%y{g%I?@#=W+4tBzrhHw96Q!t60BuI)O>mFY;t;zXUo&$icWd_lE%0bnF{R6oBy4&G0e&ogNIa0);?M7Iq_-n_u2lTV-vVVQ% z{{fSl+?Gr&W(Q%Vf-f6k7|^@#b9)p!0x|?~%0v`5acDrVU5^O;8N1}y7Dy0$*KIe% z>oRLITAHK;1xF#CV$XiL5s&hr1s^_s#nZv>QOYTh&4j0>K{nF1@n;^BhM*@Bj>wSxq9mTDeNPh@91s7^P7diV{jk~_-R=x9hGH~MaRmm zVd~e@VeN(^9fdksCON`8Ivm4K`8?8=DTf;x6z>8`pGqI2Zm^u}rdQ{ihSM@}QI9Rl zZ%%W-2yOun(xtEKx0>R0mg9|mg;l~(uZi@5NUHdhFvr16!^IT38@MK0^mw`KO6Bf% z#Rhr;r~$G1I{OOA2Mms@?40&|itwYEAkt|X=ITYw$h;@<;Zry};9_~hb_zFIC@%eq zMNmM@`%Zf1FXIJ=G&?K%xaV)4t{h1obKZ~z{o-;;n;pGIPg+`?tz8V`^HB3WwyQ2w zwI5CVp0Ru~!WVuWMdM+9ZwdqA_L=GddHtBPNlV}2XqvHgjX|M8FIxC|;?dsNt>zj5 zN5^QUQ*djIe(b0@SZb*2Vjy(Vg1X>MLyM6Q`VlSc^Dc07L`#OokPhsIgBqm6JOW3Q zB_S4X@}@^UjDHf%#763!c@#AWJ7u4FaFqpt)ykF{3a#=6g#SVk7g8LpOzNke={84f zM#6c?WR#ul$H@QoIl&GMvvi%~3G&m8eB&1JVjkbv%F>`st>E+<_lovHT9Q*tF|y1m z-P{H5gq)^huh!;Sg!wJI;veOZC6gbT_LyVXrNV9!g~ofF>{R3W{SlKP5^3;8wVAeR zeFUEf_5P^=#ba}5nU65sH7&np?%UYZH$Pb<+BdoTEJAS*o20uzP5FM#hEEKWjjJ1R zA~M}bcnomo|BMMr<>NtbSDxcH!cUxm;n{t2dEv$Kx} zzD~2H)w0{>13QD78Rz&1<0^xxsX;iiyLP}*ui5nZpD!B2r*Sn_SG>KzCR54Q_=hOw zld?3EJmG#{_cRlQo|8W^YoKZLGCd+XJSpaz9uxP;()w{=UQGPW3Aw=uh1H3NpVF`I zDjqm*>pA1w@5z^JXJ2f;offF9c)kaS!`!be8hYks0cr0Gf5CZ&<0-PfEk_0(U-ft5 zl{my%9mAC6gbssq`DJ<2r7htz-H@*R95)wXFR+o&{WZG!MYeip85Vfa%9?u7KBM9< zk)d}raWxBSzG@GGifboXjW2jZXVz%=fyk-i;wch7sL^mTr|CKa*iLTN8M-oY8!o+0 z4?rL85xG%=Jc3IPW9)-Ids>uQ;QB}qQ-Yp(t!RE5waLkfHqdDnV=LDbe|lUd?|7Va zci^n`kVdCg)&r(ad#<_v$H&cuSmDQHOq^2Uy@C6^|4x3uI)qa3-Ld}fC*J8g@%k*k z+RVmOmD(Li#qDqqtIw)aA1kv$wvD=J@T14HI}R1v2=3}I@>*MZVC_1pokYE%*_fsQ znbTp+i||=%4fc@8Nql6GE#B1mg2di)4u+}L=nTYF2766LwDIXp3tM~-%Q|M2 ze&&tbW+z)`4!{x#EqxW?G&EKvx}V?S75p`edt7==W3UQr2)Y4ZI}#u>Y{A{T8r-}e z=`w!2w0ZAH^lhx(P-FL@BN*iDEWyrv)$OQf)ZuJb-{An+2M8=sm0O?XQVK!wmy6;T zoTwkZu1A0?jT>IKwmLu>c{+{k(!*eFn5VV*mei}(f%5l-qIog<+Oqz&iBrhyJwbd6 zqY5DIBbpT>|LLEQ9mmfb;#h&rKiondns?~4n|SZRVW~7d;7hiHlgj*<+qhhsAlbnX zJ#vaki5{rylL7H^>lvBZWbBXRN>_Go{s+K!GLNUfg7UjnxW&!38rJaN#i zH(WH8V*MpcI{k?tdkn;e@nfuhBEFkT8QlnFA(c!sUtUe#<5Zy zQ@_-%?U`&w;8wS|wWjL+-fQLk^{OvBfSWjt1NbH|F~%B7ub|f>?U21g0p}ZH{ILRG zL0NE`L-}z%owQ7qWfC0?fYO`a_YJ4L0TU+t52J=>7-!s70FnWK`QF>cH5=SG9{ z3KI%>!(ao&jrwcT-^>Fx!JtTit+bG(d8Df@lAmOD9V|&4deu}X3VKL_``<&G)+;%9 zz74FNkv$q^WFM<|8hgwru98OThgqAhmAwIYPGXGIu|VEA6^ti@GN>w@Uk*hOieG9( zkcX&XNV*A@Q$l7=SG7^!UEyN6PcNRgv=euP3ecN<-%SwXaHjG56Ux8VS@A8?sXB(buZL2*;XX2w5j937Vp>^l<%kyrDY0%V*UVWI z73)*;zpwqPIiYh77FNxOHH9@SU#ZAGrv4&!LYSSheCk$YZYXKixVpv zT(w7c)$pNm<=BZoBi72LNsV<*qn#h;^&f-bQ2(wNZr#)`7B96gn2G6@D;E(-$C7lp z7)lx~AnQ+ES5^-1$uWI~{p~)MD&KcU0{8^fBSupwp$2-P(fuA5#)NO{^C*CEqo9k@ z3YvRF_;jR}H-!V z7PH+q)q}8=n*GWR2A#|Gz3EBte6(k$PFd2PLrTkiO!@J`l%W&@_aBJ9he+KU>S9h2 zrKngncik4wk8<@BL2sKX#U+w~yI-v1UkD1S%tM;kXh*)Nswmq>Q^_Qrs z$m|0}kYB7Wy{dE5Kb(<)TRh)cXL0_WE3X6}r_`U7h4|NsyNMtD`L`_r@y&d0tth;2 zh+_@0F0g+eWtXx!Rm=StD<)xHAb_9#{Z>e&Z0OJlvp~(zVXuQ9-2Ns%Q47d03)Q$5 z{OxQ=yNG2xP?s07a5JI7j>SCbUtL5_J_v*2kX^5>{*dDJ=BH^MzTDTD*~ThGVO~)C zRY;>CStPlV(%~S@sZ0l6HHd#&&~~;dE3p|`1PoKl@~LZO?uYTaahsusK>@DZ9Kmu* zI2fgqno07C;Ya_xjF<+8jClO5%sz8ysPoA)y5(H4k4~Q>afoxRKx}7bDE%(eKhEDg z$Tp~PU~k^O`XVG<_|9M`6LqT(;75k+&c zzrGxaO+=JeHoZ6yHe=O;efQ|vSzq@f=kM$x%|#~~g`A+9&5%U(_}Ha7*N4R7+b-{1 z|DF(K?bD?e>RE~1lg#h@S|F}!KL|`4v`+m^49<+uyapm8TlRs5FPTxyUsAJdTiz8@ z>nJxCEnaiY-de!Ip=M)V_pmX4KjL31%G!q*Z~4kT0bBF~!f`;S#xNSUifiSd4ixHi zp8tL^_yPOL73Ywy*Z6=?|0pDH8WBIV4DQ@lT-+SpFxO zOYPNf!3qZ1=n9VQuY?n(k7g)-=b*S=dc)2#r=`%pRJTN!eX!_o%<3J~e6RVJmzNcF z_V%HnfYDMVN?V<1$XO?KfKN?F3EkGNHX>tx(S3(UM*e(aH4|bEp^CQgdveh0QPkuH zOPSzV05?E8^`B+&&@81try=q?{c+iuh+U}{5yFA4RtYvHgvL)63F9R}mYdkE&Q(sx zd{RVaM~#D($WkFoJF)5azmA_$G3%7SAk@hQB{_9JKL)7BKX zS6w>&^H6Pz8YZGwtnQsMGvBqjl=6w#fRxDb04!Zlx$Ya~7QD>Tr*aDuPFD8gsuKYq z$muOqUxRAa;WTGBK1WfW)fH`JLY|-y9~vFH<2B^ z?hY+BshW)E#{u`^h@NKOiSIm$S0m;H5BAu5t$WPE-KWx)llv;&!|=+I#3c}+H2m5W zQWklffMoL`6H}A@X#HXMFxZ!4z|7pNvnRUwK@emS7sv#iV2@ha`k7Aa!wUnZl+aBZe zD1v?)^!D4XP7yI{XH|ZC(2P@>;v7gX6weJ;J5D?&D=7;eJ%pb2IX3$(ZwuEl`o_sP>|3v&OLTJ@xnTe%)9L}J;u<{Vo zoOmHwP9`KD%5C63ay3O>Sa~<7Db<{wg z%2o|_isa7%ZN4==VtDxMClEC)N3Tz7V(RxTqHpQqFA+QU)gq8TbNXbI>94*nQ#ZI) zCxlk5(FO<1Xl;2N_7_}$O_Mx)45j}X=XHX{@V?{b7c}qPwjA-AG4!fX$d>wB(gsei z-NVGKL`(C2 zQw1-~V~Rk`&j?qeWg61{n>W^+o@=xBg9oyIF6c$(ZruPvf1(rbE{{ShzAwa4WfJ-p z^DR>!b2G_kp~QQENy?#*Q+;XozMBz5A$MNH;$}y<&@Rumc2vErhCPG;{9r} zlICkCvO=Oa>3)ZK`OU@Po#x}LZ)aqn_ikvQUDt}!F|Lb+PX*LkwLDqHHIcEH1yuRy zTC0h{8oy(;iTkFp7&>nmHz6eg=N7Z;d-fuOBY*QNe7Od+-Ze2o+{%6jUwtZe# z5{@9ID>W-;85t=a!NJE>JXR zLb>FliR@!&I%95CEZUl}Omi%g6mlyq+;JTn?N1lxG3OlP9jHUy2$&>PDw<2)+hfVr^zfubfY@UBlkyXqa_fm_R1b z2GF##qZ*2z8i=TZwG+YO1eXtzf-6ml+;t@2Y!ft4m+@dpll&RJ3bT z_>(+-^^vvj**udsxMN_epVmof)W5KoVo z7$_KsHHH~?-$NC2-Fr=Ufp1TcbPJ_-Nme3$l43V?U!?=9WRD2xV?PkIszC2FCQT_h zT#-BuwDZ?(+)#E_pF=P45xnOj_cdO;4Lb8X$WM*|Z_DL2aZ*mN<>26f}Bw^&PgPYcylGPWwg?`PfZe8cgn z0ncnI(%%6|3XY;S)Ui+?BLRUs)L;LIyKgYdX5+|_KOpt!x1f(uX%^kmjKj6UKLNq)leEdMGF>uH z7YwYNU0m^0m`V|2Y*JU<`$OQC)t1%fk&6Vv7(GxrJsQrf% zVh4h3KFU7ZJa{+Z?V)n{+A;}u*}nCh&+@Yc_ve5s6BVZA8~+6^ zcP@SfO{_Z;$29Rj@6$K~MgQ?Ttj^iCmH(WToztPtwDnkfM8?a+$QCVtZGOv_7YTxk zCNf6u-hq}6ixj_I{9}KeP)XcvclL2-?~uD!biaJD0dtd}6^_`zmY!_nC`MIKWJSv> zxQ0X$2Y7E+N94SmGz_s;6_Zw57ZK&|eTRL+;{q|lk#RE1NwjRDSYFuw^9!;|aAh*` z=L=w1$mUCw%SODLCK{KHoumRzGYuc2Yu?1#*hKuYj+WNsWZb+zDDLAAiwYY&uo^#C zq1haBuQ#E*L2y!FYc!wm$Ec@H%UmyG3xzo)m(dln#S59S-)j&d&G&2>#vzq+!uJaY z_q-w#<#WXGgzWK)^x+lLRS=NluC}BnuN+r`A#0#5-!;lCH}c=v>w8}^HWmxp8<>U+ z{p{*$6hM2CD~242v0X~@8ULsb(i@d(W=NDMddfYHE8Dh(e??2p}eS+;x6gkyR=B~9h{(Qz#jr9_B zg?FDGSirB<(I>_h)V0ERpho8BF;ENF-qS@(K^5F&z8Elw53#y$xp7XgBg9J=DIJ+e zu>F%Uc~B@}INuL+kPeMJntIWoIo>_J-;TL6bI^4XA!j4TeRxfb`ZUyqB#A53675Iz z{&OKmb8+4FM)}c!26hS>1niSHvN+Wj)ji|;(5|i(!Wcch17@(8&lhXJ6}TL*OK`-G zx}isvQ1IKz0Th?yESgUTKWXNr4qwCb^Ee?qKfCUxAP@2y6SEjWX!J%iOr=k|5GJMi z1l4ndGE_@c@@UM{^U=?SYoWqAw=!;E0z0rKzCCEnYGVrI*UE6)z*~^NwBF!yW5Z>8 z$$EbAlV?~SRxOfQ^tHH%guz;I1hcSua%QkU%`7^rqE>Q&MUeMl8it(o?)u*=MmABb zzH1gJ*oMhMA!(B3)^i%8((P#PFfd#$RHorT^do==xueBO#{sykWI-&orsC<9l2 zM^)L2yJ6$(a06g$80J69%&YU!b=1GJu|-%-95db#AAK$6eU-IY8+X!66YGg}xS{(=V1~wXrvMF86F0~oQe>CyII=OQ42zC9f4rxE zOTRg6Fwb-3*xOT-t$*Pkl^{9~4S0W8T~Gx%bgtgV$!+17w1sZWEUjk@FQJRIh(qzK z3VF@gX#$GAcDe=QKiCx#gVUSVfk%E7kbQBtF8CS>g3Qy!;M|c(@u`|_byMDE-b%zD zF}rML?azCy^hZ34`~2_)YZIp(5?AHEdC;z&|7PS1lpb64W4?PP{RX9{*l#$NEbt^p zdZyr4a$)iEuwUl^C8EA7G_zrH;h(f2Wv7OULJK3|n_BgSgtpi(jvO-L-#2k<} z70;gHBVu|Ml`$MXN~3Y&rY9AH?vkPu?G6(07&&GnrqOehz33SN(uDH;+vVx3R``Zr zLXUd@p}x#{qUs*F}be@wm{WdezS*5%!|PKR!Mj z=)0zGFOBX^Z+pZ8E*eX(-M_^aC~c{`k|f#5Io5tLjXuhWg&c?IB3*?9$veWZ{fwi= z@VI(YuB~I7ZDp92`3IBN`1d!}qLU`hcXS4Nxdgw3FInr{EyL< z_e-+3FAbRIH0{N8pWxer^bg+EOq|UmUc1N-HQyGL@i1^BYcU{Y9n2c#n^g5l2ZN(l z8>Rm=VkEVQM!6MtIC(Gm0!} zGMQK#Rz#7<1}3C?Js0JeC@n8^$yjmu8r4CeA+TvX6F~4e8+S8Mx~_Ppg|+(tunq`=BYV|en-HgF3a?T42R8ABMC*fZ%A@wPtxNBCfRi{L zr?JjHE*bnxRLPrS;)&mS+cpaij;zF0)jxXYWOv@~ra1pFWA0e7?i1Z)%^DWb1mrX| z_pUkV>gqbE?b`C^o-Y9!t#xa&9+f{LzCL#z{c{EG0xb5t&rhtaLdYlxyCDc@T1M)C$NNF zS|tl_mQFVqmb{r@o{WEjj_#~-WZe!(i4dv|CTN}5QH+EU7e9$_CoXV(WaIv+2Sz1X zTJvEMB-@2}=_YBh_!a2RkWW}k^Rfd!1rxJchaV?CCE*}2wAgZ3f-Hu}WFI%#@ zw1C}b+ns|-iqDtVA*Vr3ZeO?&=3!Rmr$`|G0lH2q*vprb*#ur9dAzVG(mtG9|9>D8 zBH;FDzie_B<|dz`>X<)JxHT`Qz6sQOt~%fUisTe^I80KAjWxxuJ)KV?sLezO2^Qs2 zldIn)#7z^ttn3Bj`WZ$Sad{vN!%^tUKX#!^V){L!I1{qP5v^GMWkqUcQ=EekesTd) z6tG$y7S$aJX-Nx1)s8jNF$zoQefS!~9P%XcLhScdy|fGMI*iDgs87zMY{WQr3#(fx zVmtDy&u{V8oITa}G=$eN9rp0@q3O0<5M!`k#k@;fqhkoE0j$+)$V!NLXdbMB*rhq; zBHsZ9J(UjCz5B-9aYLluC$TUEoY7jrJ$nqo0#_(&=H4~-r`5Hdx>BZDwho}&-OSIB0(p_jsWpU+Wb=oSu(B~5yA$te(j4;w`UiHWn_Dbyb&om!BysM1Kyn)j?EzHr7 z0pyi$S=f8IcC_%^aEdN-@&Lsg?9%`>LbYnakiB)e(=G;B}#=I=A0@DnNpXgJltfE4y4yC;l4X5Or5NLhqxe@ zEJ?n6Ua&J&Ss0T~Z2?m?hCDs13x*X`RHSA z2nx4zRQp!UbZ_Axx;LRzkNu=s_kw^1)*6}mCwfNGx-n$i_pbS3FK~{Gefy?4EWp?W z4*tEPugMNuFW5fsEt_^H1VD^IKYQ@YmHWB~`8_Je31%dR!<5|AX>de-%6_~{%McuG zUM`uQdGywzl5s3$Ox_zl$i(Nl#ba4Q{cl+W%2&IPSF=y-v|6w5EI){cPT7NLf{}Db zqIh`sEfOh*cx#Mz5}p32E~fW{dfYBp<@CuIGzGcSx)tsd!Mn>krH+#sH-sdrq;^AL z`%UqJwEW1n(}UVwrSSRN;8x4kS2~@aHKzBdj@=0QlzFk-x;&>io7v_SVqF+rPjlSv z8k_!({d`+x|1EN7uN6zV#?8kP>6X6Sxx-(`%;iVQu6vRk+m!E3eoBJ%wW4Y+U<9QQ zo9=QL+Ew7mc?^R*I9~AuXMJ#Dw>-y|MPgkY*di+{7TfVio!cVHK8VnU6CZTH zbkYdvR8_EiU$#aSSd*t*$!0P)^Q|AefHXG6B;Sjq=@%P+3NhbevnoDO+7L0G{?D^Nw4HtS+0KLT&u@FQV?AZJwJ0HIG%KwcD8um{2Wd z2-NE1fWDrulMR=ZUOx(&an+971Gfk=>r)p`YtzLabW?IXHO!61h7-vmzgcuAuQo%r z5nlaqiZFxjHZErsovAVH;^wBRXw_Q(IKaD7Vz23cRE3(>1`5dR_d783CzlTQF6f?* z8)j|g(QH;aKG2ZX+sfy5JJScRDyHDdVP+rhKg>;2-HAU>)r=7Ct%_XkCq?Ghyj1rC zr&nvy@f$q9c_m0AZ-EMB$F;$vE50S!>=Jf~k(qI((Y(N1Tm}hiXgXC|O{-g;t()D( zTQ0c@;yKkHVfXF+?3o!T7Bon>*<(7)N5CdwT8d~emADr;liKx1LsFAwOX%HW*8*Hw zxA$r?^!TCx^(3b2oR;afBA0tXwj&i*%^Sx44Mc>VINVc&s(47-p~Y!{@I>=iY<6MQJmu50s%kMN^j@wOH~q-vc{-PCM+nomT0 z%p|M&sNbzLU@8l^Z3O10k_XtKr4O2w{XcL!K<+#@hv25c+cZ|*bAP+w8m;LQk!i(F zX5v8ahh!bMbP*F`G$I1_ndsdhrIQ)H>W9idLD$lcExKu{M_IF(xADzB1$9m;6zpyl zZjp-v!5SZu5x&+L{wVta56oP8_sWK~8_W!8jbixG!`< zBYo#R1kR~_Fn6UH#!!QMxv&I)6@Vdm<@9s+`BEnczS<~2uEz=jos4vc*Ywt#4tNv! zc0tEXt*dC&%aPEIoV6V=`SL8qt&DM@N4V2>%e{g>6JMV2-2U2dnb}sCwR<3>18dS4 zd+Zm485?P-1>tsHI6A)9dM$iVtee8jo2T@$>9KAh_V=(?ztmN8UWwo9noQV$kxtdi zJEh-!cHUC&pR=NAi(6s2?*9KqKG*2%H3y-%STFW{lb-{x>X>QAvh}I%8^xU+j^NHD zB=2>?+_6UM=Wwr4(iXVIT%3f3N6rV;#PkFlsm%jUPL`?qP-o=P#PjJfN4bI0tsC}W z@81)3%a%8b(N#O@P5H&g;&i%l5gG7TN%>SOdGsa_HG1ZLc2-#@tlPD~XZTb1g$Xxf z+PK&F<2S`1ru}AXwBKj<3A>R~T&nRFW)Li>%eZHMkxx}I_kebZO8<@aktRLX<EDh%7hIn-*8}QO+QBJH@zLJH|`Zsy;XepABW>5pq zB{I6Ej%IlKR0>Ay;1QpquGvRzip`7ctl$+F$1l3au+s;c1GBZRY4lEiT`oG|pTOf* zZ{YR$aj&z#$qts!-}N`e1L|jfP%*>@v!|{#_s7vTqwn(_l8H^SpjQf=JI3#mFE16K zPz&Q8)RA7cTUcn^l3~~}qn5{6nxBq$YWr)vqZ}ULSSWjtw#M?mC$R||J z18QUlt}+{)n4&faMo2G?&Cd=wYk|t=JDL)7NVqNwv*7a?Y~)wcmA9^y3}P+w{W)NZ z=(EG>9rn{`F|S90-1P*Mn)C3L&a~rNqK*5snTK8im&BC3qv4 z{Kb-+7q;sO-6Jo?k~_mbKL{?)n={DF%sp0Ez&?wVanIhdbc20JzX~~&bT`<{WV}u_ zkb?6JwD#LT26kVrhd(^x<5GDL^9d>zJsM;VXj&V`Qqo=t#`J!sgufqxp74i?-SYj^ z4HE#zu2)z~Q1GZhd+9#ry_I?M@>slCguZ!ELeMVfTdv>XPt(IPZ4q-x2*z(=LjO_8 zpV<0Nn9t!B4@jp~8cAgVA*hXZRCWcb;_lH#UX#@9pE#}6UJs$X##+)wt&)~gk7bs> z9ISsD(*4*h;{ZN95z$FCX_4)N>rJv!{5)Y^1)T079p-cib@UVh41w2vtvYrk4t~cIUJ!)edLPIX;*| z;T;^}wB48d%SvV%X85tbxbDY5t9AG^9sDnhUK@$kNB8Y&(^Y#2#LDU}SQ-vIMm2*K zsWCsPcUt1(5PGQx`qe{9C|?^|b$(h9wJiS*@pGLk#)fPb*+AZ(RpE==r{h{}tr|FpTBV%%xp4)vgzv3|~YToS}UC6*W z$j6wr&%a@Qg#*{>>1swx%3-L!b3;NvLfkbt7pj|5H*AjeTDTaqFm|QSVVjZRu7{uU z^bdNJp5_rT+eP0;6e(kCEz2{UT7J`X7{ZhK3UFbw6IYq?f-T9{P6JabOBDEHzmQN$oCqt!fy#$ppLt3mw}P5 z^vIXGz;PS(EL3_~?LN|?%6D^`1{)}dioO<6Unpa?QxWHpG-Rb!0n{B+v){ExII+nz z?`5y@6Nd@OmY<V_JTu@E@tRm4rLc*&8^4cnP^?%G z#=Rr^FE<_`HifS~f}z9tV*pt-9zT@^YKo(uMgfhZU**SqTh$5@1P6Qw5x{8E6!I=B zgyLA=8kYBe$vuZa-3B&;|4Z)4c?5V19HF_*Xg=k*Hp~F)|1fxXsy~94UUItK%d_RR zod>^Nr%~d|)@CJH*)CpRrbb&vB*de_-UMo-7u#p}ef;qCb|TNv2P^LEcjg{KzOc3S zUEWP@-bg*4dv-pZpTxw7;a-YJ#RVWVSv*fv(2hO0l`&Z`_UGeuh7Eo7xmW z){nqF73|`n_x@vIs{5s6;x#wp{LFH4&P5G#f@O-;Pe=Qcdg4Y6@oL!t>KKRyG$p0LwLPHcvyv49JFC&B!f;Hb1v)euTq|MOM|?@T zn&LfgXJkbUBp|ar^&WoFKyM!AhUsM~RfVDt^>4L4zU9$V;$XrgOFN-Z_!3Blg?$4* z&jZyEBjmzMc2mLr&BD;os^fbM2MUN~Otn(FC)Ww)pPACR~?=G5J9C+fwV zq#G$K!zuOAUL`~&Tz)x$vfo{gIw;}23^16WLW*d`9urd`dI1YDRmsu7=4L3pLp!_J z*)+p;w`QPyUzRQy>%^BR)ljCRSVT+S-eBX}yt&;f=-4Ig=LjmerH-=TsJGx0W0>)- z+v~`fC{}TBFn4>&18Zoqxk@X7EY`Pi$lFR5rIG8TQ{c=5AnYp=?49Jd3?zhi?r{$x zD)OTtTkNl)b^E-Gb5zy!x6Z5%tmKxV$-BR(AbVvAPOjyk_`3y<3}m8LAP|tu+eC-= zn{tTw3Hilhf;!mm%egPVA@ExTMdkQwnr1cXdPt`T>8O=~e^Y|`Sf>9KpfRCX;Php- zxP!B_b-7yI+B`EpoT%k3H$Kcijvuf1)9N@eKs?ltbi$HbvlnQ@R)p^w`3=*sWXc)4%HMM2Uu!W-l&^vR|tE9LMQnZRJP+?M9~CKgZD6Nz{+-GFdfQa z3?x)LJ36rSGfn+9y?A{gokk?NP=7LWp(9kH5BT>A#V4SaQ23M% zEAL`aSlLmmJaI_;l?PXokL7RhCgFKj%lX6;@? z6RD-C8|bU(=3+mnx5%a;CQ)qq;69U=`1t#5aNvdRt?e$QTd7E_vXAJaR+vM*>|d?s zTXFBDR+Etq=LXP22Xs*;nZ$N7I;odMY4scM7lg!jL_{C;5NHr3eKxDw1fxyBnRG2Z>~%X!y4`S%(X<{fSu zEI_fUSi_Jzvy~{ftzY(or=}X@-`MXo7D#FSY0>U#l3n$51i+82wdk0*H*lU z+EEUlBCkNp2Y+-Hj25x9o zs-}-UP_$~uTF*}0&6AN{^8Q0D@vQ5);3O>Q@VftI~?PaZr@!O;zr?bZiU z)kB>gX%h{oXFrx2b+|P~4bX2w#SdU^SmR^yP!~OMK9O*)Yw6fW4woS7CX6!I`@DQh zCLYbHC69IK>CMe{pI=zFh1S;n*Owt{3Rj>Qr-i})Du57F;$?U>=W@6Vt zC*0VzPMZLMvSio5>OKK}OV<}PJCX#{d|Yxd4XQk7>$#atIbt_E0Z3FA0q3NKo~L}| zB%=3pgYb;)MzpIxW?h{&{V?L|rbciXEz%j7vCHQcUTw6Uyfro*;66~Ys07SI77l(M zz}L^-byu+t#W>ep}|tzUd3y$ zeNf{z>$d%%pYQ%TQg^*Y(oY;W#tLmOX_~Z1Hs&?~wR2;}A&{**SoaowQ+2)L6?SF4 z60)J};xXa?@WNs4euKgI(g}rpWR&*FtPbceBze2>1kVu@ovlhBQR{;LHfUF!J#eM4 zoBmA~LdblBtfaBj!+y;u@%JHJZCabG1%=(3JacsK_krS+K(72h zK+-xouXe0p>s>EBX>9($=C;cjNMUHp&7})}_;2*l|Es+4mvWJ4k9!`vPf?tdWjlz3 z$5!82n??OA_*5wdIt+8jorAGsNA2Emx>+~oPwmt~cumKQ0MpCG3YwrVm}FbqX!il( z_YIijO`j4@@pmKdC2PZa>t_6DKHQ0c_qeevB{W_$o^`q2~^3U7@ zW%2jaz{RU^w=lHAtVniEZKq3y@l4&Hl?#pW-yoCUI8(u+qrpwcW)~lw)X1+aRI;)V z?dPfToDh{!iUmRjmlf#hH?z-y>J-h0X8kU<03vhVxa0a;(@JZZIiU9c=QWpjS|?5? zx-4pE+``UL#@|_G{OZ+X5oWlz!Jx}Pf*;na^*bDQSB{;KL@*NMn5gxgzxba=-NQ8 zJdAJ@Z@qq$(q+@@R3peE!rvNyU(Lpdvk@9ulQQWeg6L7`k`quB%HNzvo-1Lg6+reQ zT!j0YPK)X`+kcothQA|y7Vd2I-7;i)dO*#%e2}!QdDaOYD*GU{TRK&H{XZKm-Pgyy zc}wi=`V-y<*9Z7D?%uchzFB#a?1RSoLl=WWN5|`Zo0!)7;x{S_IKH#fW|=Wmf#`>$ zMl5icnSj3cN`nCqxD2i`z?ov4%gVTD(K?80mx&52!vsx#&EYbC4(YBbEo^3y)Dilz zZ6zkA6z-XzWWw8Pf|y4k&$Y5s?ib4? ziMfL73wyq~rTei(Q|C_D{N{Vo1$k@+_>A_3p0X$H8$sjDHFkM&H?)NCDl8Br&V&xG zQm_*~85m3q&@ivTMz?ywLU^UthR|5XlL76YjuBWnBjW89*^1Y|)TW3i`Bh>bJF6J# z6yHH0N3)pVOwps5JaGV-*B@-LT=|6)tiQwA+B-UUbn2lN@Ex_>n~O@afRd6zi|>d^ zbEDn1H%F>dx9un8%o0V0%cPCXMWJuy*OY>umL0>uekrikM)xuFm@4v?{pl%~UtO_r zlm{uteHQ!z?XQ&`jB65HRZCd=8VyE)5AB?Iq#5xoA= ziI9c#X#U;Gd^q5IKI8kga_jZIVNLS54Xe@>PgJc~WV1%z!l~sBscDIkBU>`M9Y(vJKWn66$e^QoCS&r zjub&b)aUB_e)s+S?)!QE1uo$FeBR^rHqj25$aY<}^yIJzoiUoB@@L*c<2)mEc>PS6 zlS!5wI<$_6ACc?MpU>4I@=5c4H@EKm?>Tr>czB4R5nd`YU0*j!Va&bMHWXnQpivel zNPxAB-Pe@++g>5F_Mm>V49422zp~B zJWZT%@7{9{Jen#j8+YVT(tHJ^0}`;^*Hgiu8C)PW*ev3<+UCZd@#B9$KRfiZneHns z;HrjarVNZG7U zEYo%Djgc!2oNXqz>u@F7tJ#_6}#olYUKG{rcVVsCCSBc`*ncn{wZ^ zCiU=D3%A=OIs7fZz1nh*mv<6)_m5}GZA6Cze8eIIdtVYs;Fr@8Qlvvt)OKl zL36|7H6Pz8f#Wph(Nys0WGzrV+kx*!95v!8nsewiiWuIc2fuYAU?vI{ylqe(+D8- zP6aU^(?zG%k~c-*)ghOFUXpvd^{(F!-&XQ*v(eFRrA+vpGMsECl-kVf%L)v)9W}Px zIi*pVcd$AyjLzC}0Q3qmiMJ!W4yNqLk#niNGMYwmva|Hx4}2s8Sd-y*Qbt%IfbP`( zwx=Q_DPl=twvf+wE`hI6%#+<@OKtM)B;I#QOJ!h~MwBo>(7$y-;`2YM1^(d+%3GaC5LrR}4;OI90X0h$w|*oYr^EGiqCP?tEDc zzVz*;aVloV4~&w^5wprw>`rQE7Fb3-rh~*5JPC3={m{;w#o6!I-ErP@)TJ+Q470;!_IShGaFFFg z470#3ei17|ny;K*?}Cn+WO2X~2NwU~761)XF}ZONZ{H7qR{sfslV9()fh7bPJv89Y zCxF({X9(?o_oOVOTTN5ko3l@5s{~(y%Y2iPtWr=fu!(zSAoT|km1`E`2WM) ztB1vA%Ae8JFR+)0&%sLDs9B&=Tu>GdVeKHXj?|anN7?v7S>qb&NRwX`a<243Zf;Y; z<-$f6cZK@ZVyy}$+|sE`1!D8YFxopG>s;C(49*3JTju~`C34<0oAzG_*hYUf3dPEa z5`AS1$4WH+vrDQ&Gd$Jn%1+1Jan)4YgW@URbomg0O8e8zo_w&>DJc3dlXewjRi;@Z z&wI~*!Ibn3zmO}nSy(1?QkocDdwZl?jJL+fCaMa4b#9~E@4Dm!X{HC4v> zCdynHlLC`Sb@GqKK!neHI!uQcarc4rEdQ~fW!)rE9ES4#9a z97ks>C9b3%Rt?-bxv65tSX3~7r`R?z-QjUb<*1FLQL7mFE1mw~UUeMh#tGuncb}YdJ(k&Tkxw4Ii-piojSz9I->M0+&YG#}zIlDOByQ2g z=Z-5q3V>1(eJpZLP70cbnw+{a(>`06q^iWUJ)C-4bF19FV64_eve?iVM^BNd$obnz zUL9%Z=5^R(`z~oS!={C{w?XmkOs!((D7#n*9;)eMB{{J^sI$N_t|Qm*yvbj1S9TKo z)rUQh-B7TfJ+!yhMJk{Bg11k0)XN3Yba8HwIwK<)Aya}L z$5Fk#l#?}K4xz96^ga3(>RMEhy5zQQU2L)xe?pX#3USl-F)uTe*`_ieVYDB$mK>6p zYZ$QWi0L(aXi=$^5c7WCE=HaZjCsBW^%aecmULEoRSj{MyL{fTb3MPpzcm@GEk0f# zi3>h|it$}Sv%1Mso%BGxjKKStb~VJAp=uc_i|3G{smrU zx+!AAFT@Uo8h8X?lqci|og5SkHu&y|rR|!8UKgUoJJ|Mky8s^DH`fz!fjT~};gHf3 z3Bq{WU};%3oxR-ADNw=byc-Zm2h(%ecGO&qj`Seb{N zv~hGwn$RitH{kT-Y>CX>byu8!sh-pR*JASf*xiT4T7ZTWdsoIRcy1_A*s&T}acbU- z=k4+CWX9wwbrYzQL>>8Hy+}!mvHXJ*yrmT!W^{BmODX^0ME*_^1d4Et50fVG?)2k2Gz*PV zlpUKg>~YwywlJ(>zx-$3Z)bv7k$e7-Q%>O!ea58A2WU!BG~ zRak0Ut=?m>xLaqH;v}=gXYRbq#~#gqwQh!M7DO4QU=!dfJ1#*0f(`(Pa&l(`)Na8f zyqgo^v!v)gNO~3)LYL#zpuNclc&#=ilzgQwm}_@hjlmyYA8VvIN2GTRq*$lBlQcuU zvcHKncbH5kgG5P|5OB+pvDba>ejIPF3er>Uism27(<68UJhpD6^?=Xaokakg=Sd1| zl_Gze9W?ciEXiJLmrWwm8f^)>o4s2<2D0y#aZQ1S{7D<5FQR?-N`oh#5r2d(8fq-G8A#i#dOYkio_8m{J8&0#xjDP;Mr$WiKC5x={M<;)bZG5b5fV-7l`ABH zX6i+$L5cfA#(OA|Io6NX3io899I|W(B?l56caMK-o^K2bEG$afIU?*o37olicP3lP zx5jkSm-P+xq}y7=tkgB6&W37K-{0L8Ku4IT;9Gl!Gqs(vvbo~y`a-HvaL>}DGgM9G z-_|*Wm`ey=Pxd0JfC_rPYc8LS^^;OwR(n;8>5~|6khd5c7AFG)_5bT_oq9MB?mL0ImoN032m_rK4fQ3~b zvN5syeIszAsnapApFbS9JRJt?ozFWw`huA}DgZ^XWG>00Ru|6ErAtSl~gOZ!a?Au=X)h-Fb98O~&@K0R~0vV9O5j6OV8mye}Xw+irO% zvgE#EPL`$CdeoQ=cNqoCvHxlM-8cGj_%nBd4bd_89A<&toOZ4e&qM!;#$q;0}^eMj=n$0t)qqJR46l|^-}7eX zxR+%|*3XrBVl#8Fp{TUpbIY+6*kHkDt=y}r=PsW^3cpQ-s@3-Z^c5ajM09!&6F8oH zn3hWM5c(Xp=XE$f>~P5^P^=FhPmfUO2M*p!KW=Zgn(5_*y}blDrFKn{L41Xlk!gZ9 zR1#CAMsV09{|zq9^e#zHRhmswry7Jp25{r^gi^8bT<&A|SWkwwEGorxvLr|9Eo`DU zt1H}2&39|yRJZby2S4SO*TX*khkyUHM{`>#F!7Gl3+9pdZ?0EAHj5ar#*q_E3*44q zdf=mk=*k-@znnTVH6j2{tR^1cc$4o91?Umm*YiR|{n-^Vb*JP%@xSTgNw|F3 zeRQcJq;EE^)y6?v+6#?pIxT^ZC^ckR`Ld?+0){Iz9qHXPuX?f< z06Nrm*q=B3b2VYX^zjAMxLVWt*D0WamWBuaRlE4HhX?1{10N?lk7&8*Z#i-BPh`k< z)$meNTzN27G%M*c@oza~bx2p4<)@Q@T`Gk!?%BB)UY!JJc9Qr}sl)-x&UJwab0NxgrYtDdo>U#YR7E64?#-{R} z<}zGyIhxLW^YC=jvQTq+CV%d{3^?M@p8Z$PYizTxE0j*Obc?kd3UA8{wy!Fkt&*R+FOQhJU6G6#$>K@x~GM)hTP z-FN*6EoBy?<;C9LgA}zW%2d1ju&g~jD1Q&}W7a$~u%hdP)ZA)Stdk=2uFNB*I@(VK zw>f&sNgXwwZ|5TEu{t=CNzZq0@iH*CuUI-7`sYf?e!VyjO-i2Z1}z2KhLKj5Rz!NA zFli5sotm3p=eFGu`I+@FJd~Pd7mZ9?N{`uga{q5$rHuoI%oC)wWI~_N7!Cl0=J=qk zgB){XM6gtCl{^!;vcdidCL3=ZWqqFyU!Jd?!F*#~U#d;M?Tf_^WlW|>O)_c#|RXQmH&k7mVrJ1eATA_+YR=v!AH7Lu=H77~`P z20q_iUfEd=$cHgb_mBPBBccVhaP(WS8^30Lh|1xryKnQ1^!7|d^W>bSZ=KYO5AP6U z^y8S6{!2jnbFdT{KL@P4MwP}kdWXNFJvD7LQwEcCVChTZY*3Q^O~*6mm%)Y$wu z$5p_om`@56rkI#B$}!^JA61?Wn4sHKRrnIf%}-M^n{pAZ8~^{dT*Fog{bG={)yfr* zBO&W|K3m*GGPTG19d~EpJF_UZ)@WZ|U(CPIxPFwW+!3D(-`YC+@0F+tmznCpl-t!a ziKFQ+An+%`wWoA4_bP-T`$X zSXX!O$cNa9=||F`YVgMGwSe!jX@k?WG=Z-nF2~HXqUNNF0l#PUmE0^nhkdb-udw_m zZt1`~BzLF+L?QQ$A^)zZsw zql+s4AM;J_lf$XXjGw>iFcS&iT*3r{#Ae3};WdsczBij(LM#H;BJmyUT?ZuFJ!z(2 zi^0)mZ0+?I1~e0ZRihIV;>>G559Fa9MGmju`$lF9TOH!3EsGs5>Az3S z%9C@EcRJ#`=!a=^i*Vfs8DU+61{@8TZd)YRhxm-N_y?}G0Y)nv-MqrjU7@*b7gzIt zm9CdIJ6va$ayUa{*UJJ!xzV7;Z|5z2s{plr)Vs;12jf~Z(;rO5R%@MVpw!gRxifaN z)rhwg0cS| zqJ&h7OlH48iTlpXM~t{1m^W}9OA!q ztXBc>TY#E3M)_)OAq)e0n@a_O$|j*^G6d+70DxyAo0?Aa`PX8u8u3}DfS+Y!Gz>8R zCV4g3Td)xX+M8!;U|;v`Nlj@um^ft-29W+GCWnUnwedK%k2p z+VCx!fg*;!iM)S1RTc+yXmiK<7(TfN#)BD`pYWd7g^k+J0CTg8L8O;u5%c$<7GDvj z^LT#ax4E^dd0O?G>3z?Ra@?rr99CCVOLh2fcj2OzvfEdx$7t$9;3*Z|pK6;6=Olk$ z_)9|mOyJasVR3-K*?;7>UF4Qmgiq-2V~^oy(bqluU<(8KgwR8^L6f%h;+CCFt!3Pr z2d5Trq$hl!7uf4}IfoWvXP^Azs55di#=x)&z53Z8zg;VEbzd-!>r&ED62)r|=l39+ zhpWsq#fqmkU~}I*9MolmsdJ6aWN~4^s4Nu z(@}plYs;FdHKSIPr5m`3m0)(G1%_M0Cp-zPVdRXRjczN9qgX_3U zMb&aS;DrA4C`SX|JQ+BWn4ZM{qO|>G$s@O)O@hFPRUIOW9lnQoqZX2DgTA(@cvqAU ztz>HB!nBUT15A_+y0au$E3z7VUX9_xPpZjXw88;@U;D8H|H!H93!ATIh=^|iMqkgT zc8~%XYsKk-xp=cNrsCV!!s;6@Muy(NLJWU za7$sbL>q@!D2+BZLa>1P>>I49UTP05YQ7CVP)1yqGG$~(qCWnRui~-3tLAp zVb6zDi>GlS_lo6S+6CQYR|l?{LXUdA2k-cCzW-L@%oFEcWxtUqGwfXWYYfqG9hZKN z>K?!z6b&99%nk6HjK*;DbRFfV$Rhk0evIOJ-qKa;&g)AC(WeXN@AqWp1Gmd}!xIw* zvFmn$Yf<%KWif-{gw7+H>eC6l>UxD4eD=1rFAVmd?pmtWbTp>~CKbNByZ&h^ZFfu} z4M=lNjzvg3IwO(pB;vO?75O&Fh z-79~~*+7ZjToLc#eEs0|CqdopPo;5ysm4zb3~QDlaFwz_MJJFB>+LlgVJrz+pOHSNj6UqTQtT&sxI>FjpMk_=OaZf@+` zS=z|Nkw0pwQ+1|2vUs$JYNznbK1F#}%1I@q0`jpsO|cKw-qPm^A9M%S!rEy5xU2t%=Pgw$+&i4-am*KIrPG%H-0YXv zC}fJg+4i7zilNffcwS83vi;J|!?;aEWJxAQyKsW^G6Lbid<-_#rHLPxvuP@8g>ami z>*;QJA?M}XRtjG9-%INo?vlbf4xiLy&@ZHxAd(oj=kd^B{*afvlA$iJhEq*}_$-|$ zXPCRIf_gDmBnP!!*8?9mxpkOm(Pn!$M?4IcoKxPX;lOoU_>e77l*;kx?9M2r!fdA9 zF8142n4qL#0w+{x;82^4Mm=;^8nJ=%E4mv#i>0&~%xW&J`P?Qb3K6jTjL zA1_?lM}?t#LcE?o`uNV(LxG zTH!TyZxSp(I$f zL;C;2UxSG%gfBp9U<)PW%s}I{VKfNNtLs?vz{a~G4$ifIA^hyaIWa_emKRzZI%4?B zq1>YV!-zY*L*=E)NbUy;%E27^WNrSbvTv!^T2dUnJ4OFWA$$J^*b@2s!Zmd@%WB+Q zYp>Xj0MG$TG=klMPTJRL+03LYh6Y>Y)J{~Rn!wvtt-W?s;Ica0bH| zr;mRX8LU1w!n7(P9jw&ci1OE(oYc&EaUpmnE{N`_*sE;Mq21OESuW_i*GKU%XC}zE zzopH~|4f%!EC^Sz!6Xn^Ur3!+Q>Tkiu6gdr6ma`-vmWT%;VNE6rzCD)chuu-YgA50 zq&qtYGCO-vv+lJPMjNuV{A9`L8F2TkT%9z~fP+LgQI??^UUKkK9F6^kpInG%*(MS8 zbt?}eS6I)Ej4ncL`@1tErQHqKCTc_<1yk4Uebpm-=PWXs{%Q$w{R)g51t*UsT~;(R&d{sZppwn?o$^ERnR#{W96*}D%ceT5PVHaNYj?sVA=8dIV1Y?oh*{ccQ zqk->;LD3NVkAi#0#fHz&=rO?4wQMAp$hO-~Bm)PyhbfP_(VO=}*SxhOq+0Xb;-#ze zTtDfiCYMsYF<&^d3z~vnA0wYOTO-A0p$FK+a9*sL@>$W$&>~k$MQ(YK*8TKOCG*_i-fkj;c5dRDe10?ILQNy9 zZ4sjYS7eA+-%oF;!)!sf3r(hHy%3g$Plj!TPwKQ-=X&)twz9@Hj~pr(-EWR`eP=8| zv4Pb0-SWIz%pYk*e4f3%HXq|z!40MnBKrsiR+8m^ktXwy98bK9JB<6clnU5fDPAl9 z^0pH`PRkAGHs58pA^PSF) z&L@=m>GLP@E;0`01s|!ba8`>hb*iQe+NNTvntprY60O@dq2o)CxYBX|QiGi}>)ezM zB(5_13W5*}1o{K^_O(s(sm=n_uBKXfmEt$ew`_~U_7JYPw{Ir-@4;Kv7T?N<^q!nh zvms)g$(G7@3U;WCQ*+{&+6YkvjjRC({C%OL=cq| z?;}%k47J6wJIMW~LaL5ttCrPjbmBaC)cx^tDmGdwV@WylH^a)mDBJINOT*uxTy+(a z1P?9ZMow<(F*lilpQp0k}` zSG5kdE8U9-+pF~RMEa5T`XKlJp_eXQGfa&eMy3ts=57NdCQe0Pwl}m=(Fps}&t>jPwbD zrBiB>1xutj<+1`xSrNuYga-in`KZed?3UL%Nq!a++3s1be-SaJp|1d`8;=#ZH+jba z!6`Q6q-krTY|iaxC5@Nk^4kxYobOAyB?fE}_#EiHUe<(`nCh8qHTBZ@dqzj{n0oKn zeXMWe5u5ag+$Y>taIX3CX8Y-+ELXzzfSaJ<`+Er?_fK!awi^hqV0ZhQnD#b@R1&-i z01i*vz}bx<%#MQED^#ilrlba=^qHQ;SKVZMFTAx%a|alsR=B!hhdV?e-B^BWG0GhF ze!9{WD=Rh>n(4h0Z~g~L!W*DT1AJ5eL-u=VtSR~Kr`qk4;#Y!O9hU1coPA!%Rs)63 zC$bt?rpbqU92RwYEvgRVpMq&eHm$8&eC&kne<+VN1nP^FdvMJFUN-d}aX7~BPwq`)+_oG z*IH=&__CVj-g{REetY&)`q=LjH8~-%KD|uAj2K(bI*+yLhYg*^DD5E|dth`Q~ z3RiAk>&~g*=bid`&S>gFq3*@pFse)=_b=ay^^4v(O!k#m6JvS}8fQw4VH9Mk?tAUK zqMPGHo$;+_hVkIV)Cq%oWLd^}j)UYN66U>mHSBoJZs?xF$2`xTy*V!<(O-4c&SX1}dfQp2ax9+>=e5p%bJ=Q{X zO#hWeU9umaCue;Abc&`kMz0W+qGYY!$Y(zbX@Z$L&N`n#V#Ten6=9J@4x zm*1Wk6Hs#{v5s!Of9t~9-S55;1p<5zvP0@*{Mi4DRcZfB;CeW@flE|>COqBzdJE*C zC2rV-wkSDzuXMdd?QQsv8>>a?lG=YBj!H%PZz@y$OoK6V0CROj%)giM^hRE~<{g|6 z?9BWC9ep9W`b>~mQ;#v>lLy@qx;dn|uSs#NWryuf8>1*V|P6$WEW;?nr zS0Nq0NQLomnnvx8$(h)htB{V<)-xKxZ;iZ$ysB%Hx#VeU*01wi)HFYM^5~oWaz3>M zPnwu;JB@e=kmKVoyeD7-XS6px3K;wOZoRE+Mru*8dv*uz`K7R_;s{|!@Nz=W-oBY9 zI{uU54F9UEM1yX0DG`J9%y%SDwYSYoXUTEz^gA8@+@Ul!ZxH?oy7l8)5p`CD1jTae z^W*%wp|3P`7nUCI`9tb8)1&?t(|8@y{$}rz&)HYdcMI*P;B19+t_C->-@!QE)}RT< zlN&qlMb-9}fYm#hIiN%as=#5Y&4Gw%w7eUGF#r4t1+{HB&`#7>8^qEf#7M{0c} zed?j(ntqw2U_r*}x~t#;hY(wiLH0ebAXk z*v`iKDl}?;b9Q)I& zNJZ`kWEs~te6OfRL=?HRUN_${BEn?Rm77edW1+L`{a+cM`$ps&(N^dZbZ&f!JFjOX z_XC@pFI>}?q#xsWFPI4B-O(L&pjMb}FU7&;1^W7`OC#*7T_Tjp`D)E(U%rDF%pn?c zM$#2fu%-94!2RnT_$nxU1{Yn%__MSw2zvpl$S^9CK7M$8ul~{BH5i`^FBc*XE;J02 zLCD5`Td32kse#^Qp;K(0Ty!8Y;+v?_*e@?*84cyK7Uj^5n5|z0r?maK`8UnnW%v2gL-gkova0ikH`i3qgkU2?L>yH8LLz za}4_(cq89dIy>EWTwy%dt%;;Yov#h6p*@iB@IQh{`;9)`v-oj7XG?EOV=Y*&B+1lb zEpxOH6%p!(!B{R=#c8PkLeAxL=A~8+jU6K+g6=|w=CQiDPM=F}>wvQEQWdDw5@~=R z)X~jk#}RwAfXbeVxzf*sjJn5=)GS%=j>S2-q?ujUyycU+5@$|)@VF4*lIi`TW>D~N zxejQ?Y^;FlZ9HZk4_fGtN^K8FEv-C3lEt~B&OBP#6piKIG1QRsnbOVNyL#XrvGrR@ zU4bpT8mby6j~1=I(X942-B|5!8(99Bq@^~YYOKrPop^6>wyM&4XmSYmMav986B??K zH_GcbY6O3giOKq{JU9yjG6R+-<_XiyA`_D}x+h0NZW>@rI@LwOLpqNnlC-5`8uT!U z&e-KzT1Yn?k4&y;W<=>022QIi-Z1zfYJ-_aF;@t@Cb!?KCsGtJU zZ_z;}+^cmC$qCq+zIFI9C|)qUX1Ctzo5DTlyYtv9Hsl#dYHBdEZhG;J&K4C#OwQHj z{v)=v^x4d)B|9}MtnFN9U0jlF93eH>sUM9j5vg&#KZAAj)PuJdu|;q0dUm%Vvk~K_ zhM}I!K`gRleaN3sKI*<5HO6#fg-VJ(&;#q*Ll(eoM1I5?o;W$f*a7gf=!gO$hzTsB zt|o-7cZLC-!p;?C4ho}PduyRAX6(Qaaid|vTW)1={3&C0ZNcrF&%4fum730|f4Rf~ zb1!X{(*`YhJ%9^0Hj22LwtUCNKrmaWWpjpQeqWfc9 z?}YDl>A4t=d`UUHm-BueHgSCkKb>|KI{E1H^EsH>CBLf?A=t>`&doP4!JCPH{k`3s z8GcT~Ordz?ccWFGa^WwQ@x(9FZ<)&d3d)?N!Yf%4=7{FCF9s( zl-r1pTkR-LWkGHg!3Ov|qf>l|-J$`VX2f4@x^EGH$ravlq!qF^^y0`Z$<(J=mR!A6 z?mjh*M~%h9&EGd}O@h@c`xQr982ZhwFtOR%Q{)Dn5`~{zc846Vjr{RlCE7l$?u_M% zudz;P9W!%VMU)l#adxBaAdhifJ>*Mi!_lOYSN^-h$nD|f&s-VUs!V5SS&gsNfKifa ztTCG@L7toN|Ie+x@xg5}j!xk3B`PH83mGor!Grj7wG^FOlTMR$pL?@3Hgdiu6pO*d0J81wF9H*F(4y!15iYCt zTb|t9a8jL)3%dSPTO*=$r$|O-9_q=pE`Pli26wue_TO^qDyigscbanqDl!m zXB7GyGpJh}0>)QEn-(lO;pc?DuYe?*%!Y2cNh6cndPB@rE2@m(w5(sJv+b4@j8|H`-twh< z`&aUzw87X8W^NdthNf;if+V zCEri?2X*W`Iji(D^cqjA)#8Iv&6-K)14X5J#*e}7kZ%9g(2#E%o89w!zinJ#T_tY4 z4>Z!^x+zV}(3`41XDzu-mUfG{u{!58NG+}B+>c?znQYa8QUWo)xXLCG#S@A)kG+D zy8V?kqJoqP2^+~I@U1%sjf|__9vM?{5BpTVtcxNx&gs2+%u7`jCwH3m!|E7B{~rMR zOA~u@$Iq1SZImrE`fhruH$?N*@~K{Irp0!6gp1~i9gV#2tfsnjGL!rOHcCj6^2X+C z(_#lE2ta+Mg-e}udu@AlzObjwqxc2^!u>Nv=SAdg$@t67N82kUTleD&<@W-5CeJUb zKl_JrDz0xZe={T+CqrX3j8%d4+A<7_gEcl9Hw6$72)!jWh(Ku9l}LO|y8N~g2Us3O zQx|eC7nJGBcpbrBNcAc0m#^QH83^^7Y}tGK@O~4c=tdQkur6BWF5D}E?ZO`~Uaz|m zteh*kJbT5x4E4k1=_dKI(vh@ih`uSkCTK zU_@jdz42u>K&MVB@M3nMoxu@6G6-D`>E$hK!Tf-Gr4nNoOzLp|M~QNMM0O2exfImm|1D9zMJV2xaG=t71`QJBEl=+mKC^e&dfqZti^_TY zCVW&XQl~p7L_SK{Odo%>rq)Z@uo(tU0Me$m^r1Botq(*%7rp{G1S z-Tsmm{EGYb|8!#iM#MnC^!^RQKXN~{ zG|^u)K@FE$P>Mb`y+o>UC8A&L!4X-a%z+!>6}uU4Bh_>1XPW*StC_;$>6>buag+}` zYhMvWjb$a}q~-O^2j4~3Cg~?M*lJ{so(o%>dsEXNsee4(@-1x0TAsALSXIlrpkJx& zRI{V8m8$`xAhtbCssQ|_nU3p`QDnsSYFgy}yF-LNovgaftf);%dc=l`h6hAfmV;_>=eNplrHNzA}QLm}BJlPeXJypxg zHVkXRT!r8ZPhC*k{qX-rck2fnYOQdt@+mAz#;@pZuJ4t?xLP|vP~RvUs+FnUPmcWHTzgFKONpaTB#q37_?I(p{TA*Uz@c?s%N7FM*xU@T8bw7- zGLN0mGTkm62Cx8&+LbyhO{oHg}vwVC4&!P%CcXi8+FGPhMdsw=c zoO^q*Pd!YeDQ0Rs@v@p+gcxeP7`@zCnUv%7Sy`nQ?~{0nzkXt_h_uX|eairueH^x_ znCd!cAAoTixd@Zg>dE1^%l~-RqV>{xhMy?$nESEslpgVm9mCUnZ&N*{@}#T0({b10 z*v-WyiYN4K9KY?3BY*YSJ0dkn8is82CaDdO@U%3CY7H-Ub*Zs=zQ52#nsHv{RARzo z0rkYX)r@hO*+atxQlM+dY6soas6x9$mL>~^V>J?q(0%c5bSpQ!Z(uPU6zJ0yTi0*a z*gi*By(ss?U06|wdfBA6^}0!BPuz{JRB%&RJkc=cXW+Rks45^4YoN8SK@#6{AL z5RP!}^Q~|VY9`Bk`AqEPmQ9+}LQuR6BdE7FBfYq4GmEnXIr>QZ#a^cr{-14&Up}pm z<~%Mv7yrQP{Mz^sz$i|I%fFvaMk5dvkH4Ms%RlwAVSl^5Wc+(e{({rv=*>z8_{W!V zhNZki^vp)p&e=aD>LIgUhI6vF8p%{y=G?Ho-W4hGM;ZCKKH&n|NEb+$5T_6wW>>k% z3j^aSo2VA7L6*YWX?CIR-I*O5rLp#Bo;^8XUq9~@?m1bntsJC%{OtF0IYIcxuVbD1 z=89sUM|7Bi*OOIM6lO=T6~<{Gm5p&YpY-1x=o?~h@UctYb^N!m=0$GX$&XK2e-T@R zI6O$jtXjyQ1&}vzItAGbQTQ;dhmxcqeJ@1#S@ec@75mr3db2jhdQsEUM|mMpF3Aa} z_L4y||8kn+j5Z=mH)uVx_ZgzQELAX4DANhwvp2pj@7USjEwP+^7mXqwDw>68>FFjF zp}Gq11(Q-SCHj2);sE&k&yvOhBUE#+{JPQh8O3LEAHi6~ADB@yo~PU(+XnzFyr4qi zzPzBs{Q0z*Q&QrKsiIUDhDLSaTzP-3OOlODBJgV5zS5av`O|n3UvqS=#y7q*6BtXb zDo>ZGsi?hi0o7p|?i%nSY$RSYtOF#0n*%}T7c^@yYc9ul0MPEU>SG)b;N|W}e_v*ZpR;9sCUQ}?64rAXk<$25VCho`Ytn(M$=ipZ{t64R# zgzRxSvPm$Foe;4j>u4U#y%$FCilwOzNyK{?F@Ps1_2C5U7TSBaJ3~mS*+;B^Khl7! zH&5~cQtpr5Ib2-FWb2LKcDzgWcZ=XwpN(8C2B!)aNxqC(q7z67h{8oVbe(L$tfXL$ z8Q;2b?0(Wy5Bu#ChZeDS25pvf#>**xDcZYc<8M#i659*zHET5n(-_&+2_q(XWBb-d z(FP>6YnTb3Hc63Cz-Hx=6KE-j9KnlsNFdGP#cx}mJR2-^P*mx#7ofaeE_)fBzZ8a z$OPJ*a}2JY)0H10xpVs$c3N z6RVSOle!Oh zGsFBI|3s~j@!B0@CP0&{K1PakkKduw-GjI!XK1-o3m&VN&d)tVb?Md;<9NFy#Vz(Z z_d#FW2M@(%FMtP8*#%B)Z^>!zp zos4*4*ygS@B2&=h9K(w5_uaQOv|)ka_xSXJ5*Lh5-})g_h7-(|nl;X4)Wo`Q(7BEm&*@7;t>aGr!= zIRnvORJ9SJ@o_G_(-Qizf6NaIQYt4ZANBh9LuIm~{yU3s7 z)ub7#7}%U)e|SNK2DWaMaM{c%>w+@ei*@5AXvri{u=RYBeyGu(E8eRU$N=qlq`|2k zkLC^_f%z8wdW=<_?szF5_i)D8QNw*jUYz_Axx0vu`Dr2Iic29$g+SSU>sE(D>npfl zWZr>XI}e}^BM23(NXeWgTSJo8a>OBHktjE6{*$_AT%~<=>y1*rX^q=ME#z=?Tg$<9 z{rLzkFN33|cLggb5ZgU-vx!wgemh#0@(%qqbHx8EH0k*I-g`BW@QYDu63S8JK)zVDaylp~QJ6srep z>5ck$=OTQ<2^Cgpefg6BH=*PGe{&N)SAL$&V{aF1hN$f%%k3H3d}6Fkxv_@a{uH6J zmiy_p(oW&T132HTb3ZkeVhF-)@Kjq?#Q-U2iShr`_2yAY=l|b#re%(!R904Qm5xkP zX^ttbpjlc|ifyCgo;p#v5aJ3bnU%X{)@W|%v{<=oZYiiK?pyAPD=4_&0tm8m(f51* z?)$p0b1u%|U;f~H&Kq8@=ll71)C|mp3OF5De!=<>5VORgG;vf(Av=*Hp|g?t776Bi zK)VJ>s6nT4(3q#%ZHEYAsrp{%=`buZ7aFTGa-VkvFC zhW&M%2SL_8rkL%Bw`aokkQQCiuuqh*C?EFd@87Z%m%iwoKcbcqVL_B>unhcB1|%IP z8C(Fed&b0vNha_>+aJ~SqdRJkyMjl8KmLk#mS{FZ@LOTE(Ah_#lf2vFTzNtRAZUE1 zP_uC3D{Ca2<{qZG*07~T4V#YWkS1@n>zjLo)3m_JNGWA2BLHN%L8?vl;4ZHV6#-Bg zS)eGct}O`w6X_csa+#Wjh1&CJC)cc;XC&C?T@g{{sZ(<7_Y(|bA``%p5Az0;P1JN-zCa^ zoL?B6KaQ5K3TYX++g_wdU6)bzF}|;r5FP&L=-L@qQ~$|ix=yKoJGtkuVMGFs6;zd- z&i}TcV+guvrnN#I7&x+ZBoSU3urALe!t^qlW-AZ(gc)NSt>E^&gwz_)Jn$e@B->u<zL3w(~n39y_TL$uU+XDP)wtCf)mc^XYx$No6lX)nPY(-jY4GI-$#M z0H{~W;5sy(Jw)ttrssAc| zXAvayl>Ij4hV%_M@42WFrlq+Q6E%vrF0GdLh?K=jGBvHi7dr8#eiqCkHdNxcZZ2?<7AMI@86ikv)~#(_X? z?0zRpA1N>31Z*^UFt7Z*+EQYRs%k;{30=LnY8n!TQvPCG{@!~sK1w<9w~}La3L?@L z2ZX%?bk_e9tIg(+{(rIB_=IQd5mVL6m6OxTyYMDocbM#1udR6-Q~D2 z`^~~w588U}_HbDg9Bvukp?H1f#P&(8)Y={wn^Q*?_tenYSC(_=4^=K;=@OaFx$7D=IV3HcnwBg1IKoWxW^KfnOh#Q9?R?fIBx&ZscHZefg;Kt~O8T za2Edfy(enry&yi2H6v{7=Kr94S{lE+5L*vP&ki3hu3a8V9JYyoh$#>P_VRD=_QA47 zW_P5dF=SkQ@sQ$nM9w#hC}Kaa+qxTPP(aYwq!TaTIGmW^ltK0#2S#0DAzGzE?Jej+ z)nOlfiVl-zkv&mY;POuKz3CTYUVa9qApCc%T4v`x|6CO|%nf~E=T*oLrm8d^6QrOI z4)^VbpU3?k8O)=P4nk>{YJyT|zq~fN+SjG?>{IN6hW|5YD}2)-+TwOVqO|6=o`dMP z%A&>{{N{`ZtMcVQmEG4cPJ;rY0xeCCRyEe~v{`j-)J_;StZA7*LlbD+@1*2{bVwS_ zcL|`$iw_&ZvOrjtSYcM1KJ6*m7Du?T*G~|OZgt(kR_*3@#om&s{Tq;%#v-}Uyk}?V1 zP2d2wR$QA_->||;7kqEIrZR@&opaa#Tl_Qn3j+Gu^;oJc(ab=1;VFbASp-7rAwzZ9 z5$_-*GK3KirN4!22!4D`04b}osvz$wu+OdIjC9`=Y2&`AX8}waKPv@|u|EkupoE($ z9bYjhv__R3l#wBoY4*yh@p=ZOICQ4n1+p_wJlij39+rwlrY)fpYxOF zRIakdeA;BVScWPVA$TT5<%!;5S=rJU<>SVTz#-7|2Og56iGCGYX|}*l?=#a46C7Rb zB3@uk=WjJw@uv5KITfkvQ6dt&KD{S-Mtk!IeH9#yaM{I99l~ zA`o;5G2fLolSh(;-h5bJFeMn{CO9>E|EM}w&TZvt_XGSYoqp8cc8sh;w&{({@AY4t z>F~ioVW{uvTtZE>*hS?FaJ_^tEqSW#uy$MQ`HwnJ>bsMk5gX&LP>V!q`7dwyD+%^{ z>fa%c@w_Be^t`EPc~E0V$Nl=%_QT*6sWDaZsA1u`TFO}oqd;GjW>p4PU8>4s7e{WO z&(_`V({PmUzPvHKCr`Xxxaq05I2F#Rqa>@r{mWzIlc}kRk_X^+JTv7nN89( zbgHRvRd)G@`De#XwIk7E`(M$ir9##x)d|aEE2mQi4Q>y|+J2M=uT_-t@-U$MA12ri z1m{RwusVA~WfZYjgnAMrTNNAlr#@yuap(AtI3^YMGA{c)KmqqvbWa6yuI2q+9H!%6 zq~er5!av!+jW-C6^%eOXvcFK^=ce``#tsAd7S0*sCTFzy{oxQjQ7U{ z#*IkOF5}eK{^M@QK25;GmSUp;*(l_G%B6E1A0=C_J$bKpCT#pTi{1dbscVk6z7(lF z1Mo-uDZ9+JtIb$RzLn4A7X?Or^dOVNhBr><7gmlvjp@x+HxZ|YjXgZ~bY}QEZk3z( z%==25ta<~6mDy`FL^H_D+2*E54&|qZbbncIvD-r!@lw)ALXA{)SgWo78$6U)HL1rn z?kEhKqcs<5E6=TC9xgnf?4HrasRI+un{wdX=kN)AFWlaFbbguIk3ca6P@~fAKI8Or zDw6*q@m5JjlW<8u(JNO86UC>*C$^_wM&f?f+m5pFV%3R$^j-ypQje}&>!$(#lCt^= zOLqKcPtRw~S&@~yaS`ZCn|5Pe_F)Xcg&I5RWXX3RITj*Z5T)Zq1*`<+qmDK0lADabO^S(B+=J1)bfd z2^wil&)a?{TC;}g&MWi}Cm^Syo`}Dm4ksi1mq(4Cf7*<6lzZT!y|(u!GO!QWRew>m z{A}439`H^pOZ|{)d`Bxxsu2~m1heGH*kE?i&=g+5h<-JeT5K@p2V)5;HTK-Ko`A-Y$DpLLqkR$d*37QijU1D z8Fr-W-;S{o-er#iw`AsAfOyp8J%^65Da^U-kc1d6aftWwVQ~Lr1oMyz7Vl7=IBeIU zGBi-Q&qeW><+7F64fbDS6m>zh__L@dmS!yEkS{~&^|Ce&fJ`|cp5wQ8Pq%u zj`^;>nvqQCUz1jYU5GI`%x{Y?I{?OtIIMcrwrd*Jt!f469Fu-+4c zxi7=8{x7PkO@zsLE@&6!Yy91VI-Wlb!sJuFATBjk!S<`&(+s{if2H}Y``n!9ysvLI zZ}oa6rN~1Z^{(i{arR%=Ln!C|NihuG1q-ya*JJ$!xc9Rrl8|DU7qs%ujB$X0N_fk6 z#LUOgxv(TfkBwqKohn<#3gb9T^yZ8nTDT(JXK#4v=>|I6{W_l6_8KoPRGxh4f5Itu z(zCI^`F=qAYE8Rsrn&&D?Di-ztL5;=x_X9|MED8fqL49zSPx~uB$$SIp`n_EnqJ-f zqm0_}^+!N+x1$en9^I#Fm_QN^a@h1dk=3k_SMzKn2q-R+Yr9F4~@4%_zM}n zK%({96Yrt_(%@LmB^Kuc{E8!@hO#E^%@KV8+uZz$#=}VWOB;OleeW?>)TK=-hFqvx4a|Dlt(OIaL41I4&MLc7Fy@sD^mL)uV(CX|95o4MDbycu4VOaA=L|Dvz-X*!UCWY{Q(?rRJy}HZo z?H`HUfnR$)3N^Tu-(CGWK>#_m(;M$hGkcIHfV7bwZH;}VFcOQdd^@#cG$z7v1@j*$ z>{ZaJDmF4he#yZy#VS?1-}|M*MtF~^(|Q#z8o+dtrOrOS;buzCavCrZdG2GV6+u|z zc`!IHpRmu}ZOu3p$?W4A4K(I4Df#J+`pn1hsbv9tm+4X1qp!OQxM-{1Xi6gspfsEK z1WEHakG`+{Z94P8fU&e;%1Vz!j({(Q8my1@_Q}(SjcL4i-u6O(ueNeHgWBSjb706R zdUY50k#{RS9{e}ehFyrCGjfSZ^UR%8(P;ZZc-W@3+1mq3gXSonyiQo{vy^tOE-SZX zg9UPLQN&&N>VpRDUFoxzuT25Z-%Hi@jg3lrO-ep7x7g$1&q@)w4HK^IiOE0yQ1)>N zHNi6DzKmn4BewkkK;x-#L7J5*HT+~ai-HO~Vvtt+GITmX!TYvW`GoHS2?R!{muhDkM?@Qixe7&@QwRDtsFJO1F z$;d#)AuU*@MR;;9Hhi_(`KHL92eji~@^dy_9{pL0f-lu@G*IX~b;!+tZLjE?Fs)>D z*k4p{e*;}TeLa%6SSw$r8Kw^2a-342_5CX865(>wq4R#4vnDKxf23Cu@X*`2x{HM1^Bpst z4nxUE3GAE^v#K_QxjVPXO#rOHKU;nI=-}otN{4h5XfWEd$IisyDi4?zA@%3XlK;1& z@Nzk|`;+|ntg=k?^rCQSpRJGBXU3MYTjsWhZ8+X>Zs<`Toot_*v%L#A!X(uABX0DF z{9u8p2ddgE$_woGN?LbW`V+n0HsWRgEK`((O>o;ZUL6YTuodpJArmhRU2Pg zx>Y{R)Q#=q4aK_&+nEVH(5Y6oNpxL%P&TMC7Xtlo)gt~6<1Cn;PSy+6asSUb#>rqm zYoE}M0L%8*B}YF3Is-lQUwEvW9&rUwG1R5Qw{l<1Ij@I%@w?m-xsx{XxnFQZYu1LC z4XiO^2L@h%PB^S8G3CE{Q2w~5&(odwY~UAt{G?`PH4J<^!`>~zKQNQ}6kgJ!Db)n{ zFSX(Gvb~A}EoR<1=`C|Bh^l{jAT8RT;xh?DyXVZh54-B0_iL9$+yO8*H}~vIqMpmV zE%#g2oCz`uXoy|4?cAG8)RmS79yTvNt+OGRB*eUN^$;6ZL{Jv<7*!M<&j&&n8=q8jU}Mz6{fP>MvG5L%}6z(t8V@Eoh{4qWq8VI$dhDRw_=(3-;W=xK|Qr4)C0&P*J;{_-p1h0xj5}WmUn){H0$YERr1Z)Ua4(zalE5g zVf0?AdGG9G&)tr@NoWozQtAXVb4B@GSsaCm;-R1avWOfj*7FSYG4?`6UqtLLGtk&p zfpYjCJG|9cg|c%Dtm0t27C|ap5M40`aYsEZ*{Q#6*lY4DCxU$xbHO#n&x*6}Qi`jT z0=55x40j^5Ghva-PvcdOOC{fbMv|qL1N_ihUuR(Q45R1ovL^qa0*lP*&-R~v0;EDt zDB)NWRSNxzQV%}3dRcSJUd=sF{90SAVEn7r826aUy_tS3grTtp`6}kO9$D7Ib|(m{ zF-c#KGSZX#!d0L6BgpfY9Huc6tvOxRKM8MICCViFG0v6e^(FcMj{ppf@y^*cOp31Z zbAv%r=R@Lar6~x{-}WPwewPXB(VUYb9YU;yHE5Qty|%ntW*bsDQ2mUYJV_kiS&XZ~ z=gi~o2kO)@+GIv`igLlogc$E^S~jA{L*3Hh{Fs&{#MNMM_8G@2kDH?4OHozbQNK!q znk_nE$9DP9%%i@I_1w7|R8gHG0zJ<9{YY?W!QFq$-X%Y{k!<)pV3y}ajf+?HmyIH8;v_9XG7=o2=&bkzZn`Nd4Rqo;Z1r(o8)f%y>`D9c5(kQTf zC{dpOwH?aE`zilX8jQ6r)O>Gt;n-Z6b?&89$KOblhj=$TgLY48V4Mw}G8 z{|Qt&Vza1Y{4cv&kHaOyeLK={ogh`ih;Ev;gSvJv<9_-MmufpCWo8{98&l8VwhsFh zhZ=Y-`pEhKZIPM6uC{3#?P%{lQf#|$|4y;1WGTbvf>V{6X0N3zhq~5Rmh%?r@weBhfk(cHAkiB){t)wG6uPq(qnHcwry2d3wbtvKLz{s-8-w>zhVd&g^r=Bn!J<-HNWVx z`1h5z$;qRcjfTeN4+iolx~x@Inx@jxKcT_ey+RXR&`g|@W+dm2p+dk1Ec<)9cYe-0 zaQ^J1n$xHL#Q+Oe@kVw_PSqAZ+D?)SpCVAB=7Q!S{_P&lB>_zbggrFLQ0P*aaBaN+ zIK6Lm&$ca2-k)RM(m&S)NDeqC^=amKh>IyYzv`aWn_Eng4%`2(#E!M<={nqh`T#&3 zec-D-`p357_M3ER3(^Idt77g_8n$kyOHD3k|lg#<6hV3_U$94_tf!#ggs@!(x9<2&B0z%@F3qzO{PCXcY(t2*a zkd90WJy?bj#Am8GJUA;?31A{AAPwvDVRksaUFDqI zg@}D7$Gb!uXexxKWOPk8Yao5($<%G6&ycQzd3jZcNuF+R2pD*iH@pupaXx)onB`>; z1bp1-@Xcvja)UIi#e1^eB>Ie-$dhDZt1Xuao>7bSKsVu>Fdtjv{%BUjNfZx$(_5v# zR~`yKtN5@o&+NowU}RwPCB@iVAp;f)S!FdRu5y6;HO&<(Rc=itRHk%z8Xt)^hdb+R$=p16%nuO;O-_=m*taqb%Rki zQ`)n8$~?wx{qnSM*1}cX+F?>7;RAN8JMeZ!a%%rrmbC|GHLopwlM8yBbJ&BiJb>-t z)X9S*1?IFltbp0tH$N#^fj}6#;QVn7 z>@iV=IC`f(T#(lx>{<8I;zLtT)vOa}GgvfJR-C;aMbpp|FJWr~YW*b}tft`9xm_>Q z^R@8rfdR7?``V8_ z8L0CZJ=L9U;E%Xn1}45sJY(!}P+v{@*Yq#H{;LQEu?2>G>9F`Nlh1kmIkOp-62_5R z>DnHbjn|S&oIkATds;XK{0q{C%sP6w5p6<|Mp7d=%~6Z(r7T=`iu!74I8bx#`H2@k z#FLL2C>-;e9gzTA8_BOxQ$~;$9?Z*-Zs|veLsy(Ekf{+vA_5vc$V;7$ycI}brIX+@ z!eNr#2DcT>eR=rY?-$_P8<5TADn}6rW$>eqqY zKhmNXjO3o8R*qKQ!f2`m)<1j0e z9L)|%OzNy~v(~do%oc3Q#1131@EdC{V?7&l!*Hw`2w_PwEnZ}8PWS*hn?m`7JAaNq zEoJcE$vLlPDFg70cfl941y9$EMgo7<+nZYcBNx+L!?S``jE4*JoeZ)Cx9Q&}owWkI z+0DXF(8yJ>!X%Z6KF%=n+x*tCP%&jru^fxZ#EB+xGc@*~Uq1fv7c*{K=ijm*Q^ewr z5?^2pfzlOY`)GlJ=S=zSMBW16)MCaR(QT=axRx}0UK>RgA7%|*ev3gxu{2#LT^j1^ z#vJL5`*)kiw_Z7ck3e{}-O`^N)%Io`gUy}X2nX8XFGg0V-twsN^=?nd=54n>fJ?@+ zR}QU}HvNT^DD6r*huZt}Rz|%fclL#AAOYR5&<@>Xh&I7HrdUBk28PI40+{kr6>i{k z&RlSVv;Su4Vw4^g#IsK?wQWBb?;3Kk5TmBqD^$Oh>3s$PZt|n%qQsq#Yh*)i{= z-vxo1f#;(X_f!1h)RGdFQlX23sNE^jy5r^yauhG-ukC1#xlr}OPo+4+Qz_Qdz3XWZ z^J3tscLS!*iP=T?=Q!yxJ!>a6p`x;OPAPUmQvdF-R*wszcXprCtR(j2!Kv4`ip>3< zIPVUc&Kx4P%QGsW8dEfK->5+>`FM|Kee&c799YC~s;!QHgMU?(B9|mxv%R`PeHOM? zxeH84YbL4+Ti5;cgemL8I6nQm{rs=K84a~%OZv5W}zfqv2!~Ju_+%|w=zY-kg_4MGFj)^k>CyL#>@zqBF?Z+;1lvJZO z19v7QpIYtbAsFi0LV~ioLP}XwC$`>_bwffC+dVIUa9sa>COjfl*#!I~N;p$G5hdBd zV$srIw=r^NJaQ&5);nMBIaYaL%x+unnrYZA?65U=0bhIAjW$@zIcc7WXapHOP0c{n!vR)`e2Xh#SAY*sh< zeKggk#Mbyp>)LnA+`2b)pDG7B92o4s@XR9B&n2cE3%Dc$FsiNLFeON99rino(*U0ob89@O#B`45oR4^&Ex9LXE5TL>I1-KU zPFcOWa6!MFXom#B4Bk>k3Sr$Rw>9slbtG#Zab%(1tKe*-UNE^3pJ-g)Gg?|+UHBq; zI`lh@rPH!O-ie=bdR%C^{=nQ$I#^I2)_rW_8-_r>)Nds{orB9p$!(iIR=a5A-fOZg z7^@|OU{Ukhk$djXln|A=lHZEA&+2RD3w(F3VX>ibx_oCXemy`ySa@Xf5>Rzy{y~|@ z>Vail)S_LKZ^QP`wN#&duhgK%NQ)CSb>5$?bv-Sp!9Eu4+sEV)Qkl5X<_9DFKTZLI zkzQqgS|nS0G@YDZ%uqxGm%K^;%kNaf#Ji}am0wc)+k?9G9Rfu*254NYUE3{pJ?=kn zUXAwpA;RjIs(&hG%cn+=gI$$Z!+zPZtHu8<*mj2zbcO#4Fg#8PcC*PGLxya32B9c$ zyr_SDt!c%N!%N5z!J+0u4hySAa}}VeZ)ZIIS$n7r{!80y% zrSY?>kBEKp~Q#wwXduY^d6ls-_2)JkOlRAB3FE*qq(Pu5^!K}%FFj~*z3F{J_(l^;kWak!- z$ch!FLfnnk>7%sbV{Pp|N!U446*A(r^ai+6n7W>*Nnu(}T($-PMVm|CHk+}b%44_e zOM)nUJD8V)fUQEcJ|}0PMZ{FTcaLG|K{GFZLt|XuH#L}=$JyIqoZllVLr#%R6fn|9 zyG+boiw)r1RPJrmi95MO{ta-i*kyl4-Reni5R-p7!0@_<2uKB*O;f|-5>ARJ8N(M>{>-E35<8GE{-R5n_{*xp>Xpt|5Y~myx5ct|%6>>eG$B2f#^(<3RnR ztY{XpzepP%)XRQia(=)##IdJw%2A)Y`U@$ib^H5{@~N{Q+c%Uj%T=3`rS%IL{lcFf zO~e2+^@I|3t!E`(Tw69>DjC6PT*f{3pepS0NBs@=S!R=tPmq?4e=$D|)+&$nHw2kn zp`L-qLC^;N?+6p*-m8j)U8}K{;1~*9QDHnV^Hdb(gK2h zX4uOd-%Y>1?GgmBazOOZqtWC%@ZlKi>V6eT@%OJ3-EyW)O+BtiOCL)p?=Moo$mwd8 z*KW3RLYaM;{_N(w0L_g50YWNQJCG07YNe^SA2%N#JRf|jH+gsV=(l`>FUqFLxli92 zQK3K~GrE7T;XfK$3QKJ_8V&FfDAt>dbLO+#W4nm2wM#?Boy5UnDqC@zp!@VME#Ovm z2M%1HKTTF+wC$NpkkNMFgy+aF#rG+Xf+~TJ&$x@bucg*HfBO?kZSUH{KG0DNIjK+Z zhIx1=6U~q8m-;&f@=i!KD1#;u(YbU}`=6eF!kv*mPinHc`zDtI9wRPB$)7$DOWMcl zOT6n>r9M)RAipF_;cLSH6RNt4C-23a$+}n6!2uMx&!}f%U^Wws)J<*l9{Dmy9Fsjt ztGJRyi7T_9ECv=wRS>N#ymX{avkTA3jDG&MDK4~veFG{bpV_#zxSjnTw)WBX<_rer zsy~>`>e8PDzo0+5i6NM3O5Wz*)mwD)=6sj=a^mft>hSvo!#GXo+65@N6Gnf`if^$Q z2z21KIl(Ss+;~?b4`c$Jq_|F`Xl;(W!(f%9F0H@rqupEGHNh1Vjv& zjlvX(FT4-lfBM%g41t*h6yKRYcI9lp!jmnX^6|wil6NIzAbeRT??3k;DDA1<(VF_# zH>z<=m?!c2q1YmiBnLMUvnux-Xl}bB0}q~%!o%>ZtPC7ndKaei9|+DZ&QNew>Oug0 zu&H+G=sn5nQCfnQ#{UIRuHG1XVIK*47Su~J|K_3ZsIG>!m`of{UH0?8f-~K&mk-9{ vMih$~(OCBDbbYY`r(flMqhO< Date: Thu, 28 Nov 2019 23:53:32 +0100 Subject: [PATCH 2/4] Removed a repetition that I have added --- docs/WindowsBuild.md | 20 +++++++++++--------- 1 file changed, 11 insertions(+), 9 deletions(-) diff --git a/docs/WindowsBuild.md b/docs/WindowsBuild.md index 1b67b4dd9bab0..549f2fa85ed3b 100644 --- a/docs/WindowsBuild.md +++ b/docs/WindowsBuild.md @@ -2,14 +2,16 @@ Visual Studio 2017 or newer is needed to build swift on Windows. The following must take place in the developer command prompt (provided by Visual Studio). This shows up as "x64 Native Tools Command Prompt for VS2017" (or VS2019, VS2019 Preview depending on the Visual Studio that you are using) in the Start Menu. +![Visual Studio cmd](visual-studio-cmd.png) + ## Install dependencies - Install the latest version of [Visual Studio](https://www.visualstudio.com/downloads/) - Make sure to include "Programming Languages|Visual C++" and "Windows and Web Development|Universal Windows App Development|Windows SDK" in your installation. The following components are required ([Find the name of components given its ID](https://docs.microsoft.com/fr-fr/visualstudio/install/workload-component-id-vs-build-tools?view=vs-2019)): 1. Microsoft.VisualStudio.Component.Windows10SDK (Windows Universal C Runtime) -1. Microsoft.VisualStudio.Component.Windows10SDK.17763 (Windows 10 SDK (version)) -1. Microsoft.VisualStudio.Component.VC.Tools.x86.x64 (MSVC vXXX - VS 20XX C++ x64/x86 build tools) +2. Microsoft.VisualStudio.Component.Windows10SDK.17763 (Windows 10 SDK (version)) +3. Microsoft.VisualStudio.Component.VC.Tools.x86.x64 (MSVC vXXX - VS 20XX C++ x64/x86 build tools) ## Clone the repositories @@ -38,7 +40,7 @@ git clone -c core.autocrlf=input https://github.com/apple/swift-package-manager git clone https://github.com/compnerd/windows-swift windows-swift ``` -## Acquire ICU, SQLite3, curl, libxml2, zlib +## Acquire ICU, SQLite3, curl, libxml2 and zlib Go to [compnerd's windows-swift azure page](https://dev.azure.com/compnerd/windows-swift/_build) and open [Pipelines](https://dev.azure.com/compnerd/windows-swift/_build) where you'll see bots (hopefully green) for: @@ -66,13 +68,13 @@ Download each of the zip files and copy their contents into S:/Library. The dire ## One-time Setup (re-run on Visual Studio upgrades) -- The commands above require to use the Visual Studio Developer Command prompt - -![Visual Studio cmd](visual-studio-cmd.png) +Set up the `ucrt`, `visualc`, and `WinSDK` modules by: -- Set up the `ucrt`, `visualc`, and `WinSDK` modules by copying `ucrt.modulemap` located at - `swift/stdlib/public/Platform/ucrt.modulemap` into - `${UniversalCRTSdkDir}/Include/${UCRTVersion}/ucrt` as `module.modulemap`, copying `visualc.modulemap` located at `swift/stdlib/public/Platform/visualc.modulemap` into `${VCToolsInstallDir}/include` as `module.modulemap`, and copying `winsdk.modulemap` located at `swift/stdlib/public/Platform/winsdk.modulemap` into `${UniversalCRTSdkDir}/Include/${UCRTVersion}/um` and setup the `visualc.apinotes` located at `swift/stdlib/public/Platform/visualc.apinotes` into `${VCToolsInstallDir}/include` as `visualc.apinotes` +- copying `ucrt.modulemap` located at `swift/stdlib/public/Platform/ucrt.modulemap` into + `${UniversalCRTSdkDir}/Include/${UCRTVersion}/ucrt` as `module.modulemap` +- copying `visualc.modulemap` located at `swift/stdlib/public/Platform/visualc.modulemap` into `${VCToolsInstallDir}/include` as `module.modulemap` +- copying `winsdk.modulemap` located at `swift/stdlib/public/Platform/winsdk.modulemap` into `${UniversalCRTSdkDir}/Include/${UCRTVersion}/um` +- and setup the `visualc.apinotes` located at `swift/stdlib/public/Platform/visualc.apinotes` into `${VCToolsInstallDir}/include` as `visualc.apinotes` ```cmd mklink "%UniversalCRTSdkDir%\Include\%UCRTVersion%\ucrt\module.modulemap" S:\toolchain\swift\stdlib\public\Platform\ucrt.modulemap From 16d604efb23f3eb3840a363132958fb210713ab8 Mon Sep 17 00:00:00 2001 From: yostane Date: Mon, 2 Dec 2019 19:52:06 +0100 Subject: [PATCH 3/4] Fixed text given reviews --- docs/WindowsBuild.md | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/docs/WindowsBuild.md b/docs/WindowsBuild.md index 549f2fa85ed3b..098500940b105 100644 --- a/docs/WindowsBuild.md +++ b/docs/WindowsBuild.md @@ -1,17 +1,19 @@ # Building Swift on Windows -Visual Studio 2017 or newer is needed to build swift on Windows. The following must take place in the developer command prompt (provided by Visual Studio). This shows up as "x64 Native Tools Command Prompt for VS2017" (or VS2019, VS2019 Preview depending on the Visual Studio that you are using) in the Start Menu. +Visual Studio 2017 or newer is needed to build swift on Windows. -![Visual Studio cmd](visual-studio-cmd.png) +The following must take place in the **developer command prompt** (provided by Visual Studio). This shows up as "x64 Native Tools Command Prompt for VS2017" (or VS2019, VS2019 Preview depending on the Visual Studio that you are using) in the Start Menu. ## Install dependencies - Install the latest version of [Visual Studio](https://www.visualstudio.com/downloads/) -- Make sure to include "Programming Languages|Visual C++" and "Windows and Web Development|Universal Windows App Development|Windows SDK" in your installation. The following components are required ([Find the name of components given its ID](https://docs.microsoft.com/fr-fr/visualstudio/install/workload-component-id-vs-build-tools?view=vs-2019)): +- Make sure to include "Programming Languages|Visual C++" and "Windows and Web Development|Universal Windows App Development|Windows SDK" in your installation. The following components are required: -1. Microsoft.VisualStudio.Component.Windows10SDK (Windows Universal C Runtime) -2. Microsoft.VisualStudio.Component.Windows10SDK.17763 (Windows 10 SDK (version)) -3. Microsoft.VisualStudio.Component.VC.Tools.x86.x64 (MSVC vXXX - VS 20XX C++ x64/x86 build tools) +1. Microsoft.VisualStudio.Component.Windows10SDK +2. Microsoft.VisualStudio.Component.Windows10SDK.17763 +3. Microsoft.VisualStudio.Component.VC.Tools.x86.x64 + +The following [link](https://docs.microsoft.com/visualstudio/install/workload-component-id-vs-build-tools?view=vs-2019)) helps in finding the component name given its ID for Visual Studio 2019. ## Clone the repositories From ba53abcdc109e8be1369dbc4cb05ea5af8514211 Mon Sep 17 00:00:00 2001 From: yostane Date: Wed, 18 Dec 2019 22:47:23 +0100 Subject: [PATCH 4/4] rolled back adding variables --- docs/WindowsBuild.md | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/docs/WindowsBuild.md b/docs/WindowsBuild.md index 098500940b105..b98d7d7ecb1fb 100644 --- a/docs/WindowsBuild.md +++ b/docs/WindowsBuild.md @@ -91,9 +91,7 @@ Warning: Creating the above links usually requires administrator privileges. The ```cmd md "S:\b\toolchain" -set PYTHON_EXE=(your python.exe full path) -set INSTALL_PREFIX=C:\Library\Developer\Toolchains\unknown-Asserts-development.xctoolchain\usr -cmake -B "S:\b\toolchain" -G Ninja -S S:\toolchain\llvm -C S:\windows-swift\cmake\caches\Windows-x86_64.cmake -C S:\windows-swift\cmake\caches\org.compnerd.dt.cmake -DLLVM_ENABLE_ASSERTIONS=YES -DLLVM_ENABLE_PROJECTS="clang;clang-tools-extra;cmark;swift;lldb;lld" -DLLVM_EXTERNAL_PROJECTS="cmark;swift" -DSWIFT_PATH_TO_LIBDISPATCH_SOURCE=S:\toolchain\swift-corelibs-libdispatch -DLLVM_ENABLE_PDB=YES -DLLDB_DISABLE_PYTHON=YES -DSWIFT_WINDOWS_x86_64_ICU_UC_INCLUDE="S:/Library/icu-64/usr/include" -DSWIFT_WINDOWS_x86_64_ICU_UC="S:/Library/icu-64/usr/lib/icuuc64.lib" -DSWIFT_WINDOWS_x86_64_ICU_I18N_INCLUDE="S:/Library/icu-64/usr/include" -DSWIFT_WINDOWS_x86_64_ICU_I18N="S:/Library/icu-64/usr/lib/icuin64.lib" -DCMAKE_INSTALL_PREFIX=%INSTALL_PREFIX% -DPYTHON_EXECUTABLE=%PYTHON_EXE% -DSWIFT_BUILD_DYNAMIC_STDLIB=YES -DSWIFT_BUILD_DYNAMIC_SDK_OVERLAY=YES +cmake -B "S:\b\toolchain" -G Ninja -S S:\toolchain\llvm -C S:\windows-swift\cmake\caches\Windows-x86_64.cmake -C S:\windows-swift\cmake\caches\org.compnerd.dt.cmake -DLLVM_ENABLE_ASSERTIONS=YES -DLLVM_ENABLE_PROJECTS="clang;clang-tools-extra;cmark;swift;lldb;lld" -DLLVM_EXTERNAL_PROJECTS="cmark;swift" -DSWIFT_PATH_TO_LIBDISPATCH_SOURCE=S:\toolchain\swift-corelibs-libdispatch -DLLVM_ENABLE_PDB=YES -DLLDB_DISABLE_PYTHON=YES -DSWIFT_WINDOWS_x86_64_ICU_UC_INCLUDE="S:/Library/icu-64/usr/include" -DSWIFT_WINDOWS_x86_64_ICU_UC="S:/Library/icu-64/usr/lib/icuuc64.lib" -DSWIFT_WINDOWS_x86_64_ICU_I18N_INCLUDE="S:/Library/icu-64/usr/include" -DSWIFT_WINDOWS_x86_64_ICU_I18N="S:/Library/icu-64/usr/lib/icuin64.lib" -DCMAKE_INSTALL_PREFIX="C:\Library\Developer\Toolchains\unknown-Asserts-development.xctoolchain\usr" -DPYTHON_EXECUTABLE=C:\Python27\python.exe -DSWIFT_BUILD_DYNAMIC_STDLIB=YES -DSWIFT_BUILD_DYNAMIC_SDK_OVERLAY=YES ninja -C S:\b\toolchain ```