* Re: [PATCH] doc: architecture view with drawio to svg generation [not found] <20220524125252.389606-1-ville.ilvonen@unikie.com> @ 2022-05-24 13:57 ` Ville Ilvonen 0 siblings, 0 replies; 4+ messages in thread From: Ville Ilvonen @ 2022-05-24 13:57 UTC (permalink / raw) To: devel This one with a large gif can be ignored. I send one without and link to video in diode.zone. On Tue, May 24, 2022 at 3:53 PM Ville Ilvonen <ville.ilvonen@unikie.com> wrote: > > * Initial architecture document view a view to high level > stack of Spectrum. > * Stack view is generated to svg from drawio using Alyssa's > drawio-headless in nixpkgs-upstream. Cherry-picked to > nixpkgs-spectrum for testing. > * An example to analyze the details of Spectrum dependencies > interactively is also provided. > > Signed-off-by: Ville Ilvonen <ville.ilvonen@unikie.com> > --- > Documentation/architecture.adoc | 39 ++++++++++++++++++++++++++++ > Documentation/default.nix | 8 +++--- > Documentation/diagrams/stack.drawio | 1 + > Documentation/spectrum-nix-tree.gif | Bin 0 -> 6007123 bytes > 4 files changed, 45 insertions(+), 3 deletions(-) > create mode 100644 Documentation/architecture.adoc > create mode 100644 Documentation/diagrams/stack.drawio > create mode 100644 Documentation/spectrum-nix-tree.gif > > diff --git a/Documentation/architecture.adoc b/Documentation/architecture.adoc > new file mode 100644 > index 0000000..40003a2 > --- /dev/null > +++ b/Documentation/architecture.adoc > @@ -0,0 +1,39 @@ > += Architecture > +// SPDX-FileCopyrightText: 2022 Ville Ilvonen <ville.ilvonen@unikie.com> > +// SPDX-License-Identifier: GFDL-1.3-no-invariants-or-later OR CC-BY-SA-4.0 > + > +== Introduction > + > +Spectrum operating system stack is based on the principle of security by compartmentalization. The high level system stack is illustrated in the following diagram. > + > +image::diagrams/stack.svg[] > + > +=== Kernel space > + > +In the stack, kernel space security by compartmentalization is supported with linux kernel that includes kernel-based virtual machine (KVM) module enabling the kernel to work as virtual-machine manager, hypervisor. Kernel side hypervisor supports virtualization of hardware resources - computational cores, memory and devices - securely. Userspace virtual machine guests are managed with cloud-hypervisor. Linux with KVM also supports portability to several hardware architectures. Currently Spectrum is supported only on x86_64 but ARM64 is under works. In addition, hardened kernel is to be enabled. > + > +=== Host user space > + > +This section provides high level overview of host user space tools and libraries. > + > +User space stack is build on musl standard C library with added safety on resource exhaustion and security hardening on memory allocation. > + > +https://skarnet.org/software/s6-rc/overview.html[s6-rc] service manager is used for services. kmod, util-linux and busybox are provided for essential system administration. > + > +https://github.com/cloud-hypervisor/cloud-hypervisor[cloud-hypervisor] is a host tooling for virtual machine management, written in Rust with a strong focus on security. > + > +Wayland refers to whole display stack providing communication with compositor (weston) for desktop services, including libraries and drivers for direct rendering and event devices. Clients are implemented as application virtual machines (see next section). Minimal host provides only Wayland terminal client, foot. Wayland, a simpler and more secure, protocol for compositor could provide support for legacy X applications as well but as of now none are provided. https://wayland.freedesktop.org/architecture.html[Wayland architecture] is well documented here. > + > +=== Application and system virtual machines > + > +Security by compartmentalization in Spectrum is implemented with virtual machines. Virtual machines currently launch using terminal and support only wayland-console. Wayland graphics support for appvms is under work. Please refer to https://spectrum-os.org/doc/running-vms.html[running VMs] for more information. > + > +Reference set of virtual machines includes system machine, netvm, and application VMs, appvm-catgirl and appvm-elinks. Please refer to https://spectrum-os.org/doc/creating-vms.html[creating VMs] for more information. > + > +== Details of Spectrum dependency tree > + > +High level overview of Spectrum stack is limited view to the system. For detailed, interactive view to dependencies please use `nix-tree` under the spectrum repository: > + > +`nix-build img/live -I nixpkgs=https://spectrum-os.org/git/nixpkgs/snapshot/nixpkgs-rootfs.tar.gz --no-out-link | xargs -o nix-tree` > + > +image::spectrum-nix-tree.gif["Example of Spectrum live image interactive analysis"] > \ No newline at end of file > diff --git a/Documentation/default.nix b/Documentation/default.nix > index 02b3c31..8b969d4 100644 > --- a/Documentation/default.nix > +++ b/Documentation/default.nix > @@ -3,7 +3,7 @@ > > { pkgs ? import <nixpkgs> {} }: pkgs.callPackage ( > > -{ lib, runCommand, jekyll }: > +{ lib, runCommand, jekyll, drawio-headless }: > > runCommand "spectrum-docs" { > src = with lib; cleanSourceWith { > @@ -14,11 +14,13 @@ runCommand "spectrum-docs" { > !(hasSuffix ".nix" name); > }; > > - nativeBuildInputs = [ jekyll ]; > + nativeBuildInputs = [ jekyll drawio-headless ]; > > passthru = { inherit jekyll; }; > -} '' > +} > + '' > jekyll build --disable-disk-cache -b /doc -s $src -d $out > + drawio --recursive $out/diagrams/ --export -f svg $out/assets/images/ > '' > ) { > jekyll = import ./jekyll.nix { inherit pkgs; }; > diff --git a/Documentation/diagrams/stack.drawio b/Documentation/diagrams/stack.drawio > new file mode 100644 > index 0000000..23feae7 > --- /dev/null > +++ b/Documentation/diagrams/stack.drawio > @@ -0,0 +1 @@ > +<mxfile host="Electron" modified="2022-05-24T12:19:30.186Z" agent="5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) draw.io/15.7.3 Chrome/91.0.4472.164 Electron/13.6.1 Safari/537.36" etag="8D9FBMK4C5lWSHGzQpql" version="15.7.3" type="device"><diagram id="C5RBs43oDa-KdzZeNtuy" name="Page-1">7VrbcuI4EP0aqiYPTPkOPBIyJJtkdneSnUnmaUtggVWRLUeSueTrV7JljC8ZHArjhZoXbLdal+5z1FJLdMyRv7qmIPS+EhfijqG5q4551TEMXdcM8ZCStZJohp1I5hS5SpYJHtEbTBWVNEIuZDlFTgjmKMwLpyQI4JTnZIBSssyrzQjO9xqCOSwJHqcAl6VPyOVeIu0bvUx+A9HcS3vWnUFS4oNUWVnCPOCS5ZbI/NIxR5QQnrz5qxHE0nupX57+WD/h+xfn+vYbewXfL+/++fNHN2ls/JEqGxMoDPjeTU+e7/r61e34/vvPt8Xz8hX2//qmqmgLgCPlr47hYNHJ5YyIvoS/wTQpcF4jaejlA5kQTrJv6Ri+xnklWbnLYi4MhYJhhKvtGs5cPm8AdZfCJqHwadV3LtKehQlJ54macv6mD4OSKHChtEoTxUsPcfgYJsNcChILmcd9LL70Te2drlMuXkDK4WqLOMqV15D4kNO1UFGlG36reeFY6nuZkcx2lMzbIlgqA4rX803TGXbiRcH3ASj1FqG8R0G0io0Xthva3Y+vJw2m3W8bTKNFMKeYRG7XW4eQLhAj9KSgNPt5KC2tDKWhHRNKswTlHaRBvMyy2D1FPwpLed5ZjFPyAkcECzDMq4AEUGKJMC6IAEbzQHxOhVOhkF9KvyGxFg5VgY9cV3ZTiU4ePwn1GPgIS0cqciVStcZLFJJvEtG4HY9zsagbtuSWLXwmf6QC+zwnZI4hCBH7PCV+XDBlsep4lvQhXrNeGiNHYZoP7BI39KppbjbFDavEjRvC5PSOmMDvN0FaJojVa5sgdovrgB8xMT4H+BL7YMLkoyu0R0XhuwtEIhYkDt4fhYI3Hsem4Y5hmlbMOGVMXixV499adjAOAlfsNX8x7GSI+WE372CMJhRIkpzQ+lraKhltb5V6FVOk4DkYuEOZSmaBcMtTtaPawaNYMVa6gHnxQD4OIHRzWXAZvm14KtBJZRRiwNEinztXQaZ6+JugeJak7HhnH522wGIfqkrbuWqhHX2woyEO6BzyUkMxgTZW1+LUM354ewrGV7fL4XDQ5Xr47+T+IGnxR4LgzhDmdOl0R7xqIHyUwkJdQtYOH5ZTDh+DhqJHJdLl3Xm7SC/BGovl6hywtmukYrp+TLDL2+12wZ5EbD0hq3MA29F2T2y9d0ywD7F1PiTYM3lQHO9x48YmNC34JFIx/+IsSDDYPeP7x+SA8z/jwItPziK0m3Vmu3VMpAcHQHpfVCOOcBcnR+Clye2jAPkAX5SLTgpxy6qBeFN5XyXiepsXHkwkILy78E8Kw9Lmu2pDdtQ1Wm/zniOAPANwa8ayNVv4pz5fi1hvMvxtrKsyLd1uDOyqXOtsTmoKJzD7A3ikkxo7Rw9zMMi3UP+kZkdDDZ/U6IfI6faNIIgyhioiCAjD048gllYjglStFg1GkDavQ6DY4b2wc0Xb7u1Gu/LevEG0y9nbA5xBYaa8E9UWiPII4LLffTD1UABZydG/702bYk/h3tTUayYHe9ybis/sL3fJKpL9c9H88h8=</diagram></mxfile> > \ No newline at end of file > diff --git a/Documentation/spectrum-nix-tree.gif b/Documentation/spectrum-nix-tree.gif > new file mode 100644 > index 0000000000000000000000000000000000000000..bb367556353d034e3317b04e3dae5340b290cfff > GIT binary patch > literal 6007123 > zcmW(+byU>P+x^g~AkqykxO7TLr;9YWbW6LWf~0iUf(S@=EFrO!l%#~D2unB8CC$RV > z-}m?5oH_H%z2`i4&YZdD&MP%l2}x^u{BrCo79jutKmY&%02lzk0RRaAC;&kJZx#ds > zARqt+0^lG32?9_c0R6wEAP4|~05AvuhX6<jfPw(%|J8$F00aiWU;rEjAYlLs2B819 > zDF_Zg-~bE`z~KNA4xr!w`hQ3uBmhAIFeCs+0!So)LIUXj!Gll$1O>oQ02~D%Q2+`B > zp#R4Sga#mJ0EPzOXaI=@P-p=C|3sl6015%1FaQb%phy6U0-$IB3V@&>5EKG}!az_s > z2#N$jQ6MN91O*^a5CjT=Kw%Il90El`peP6w4S@nMC<q3Hz@RV~6b^$TVNetdiiSY} > zI1~hjLf}vs914d+k#Hyq4n@PE01^s9LLo>f3<-rJp-3bYg@mG!Pyhu5p`Z{H6o!Jr > zQBWibib6rrC@6r2g3wS18VW;0;b<rl4Mm}$XfzZ65Fh{n0T3_%0S6FB0D%G!XaE6# > z5Fii&0z$w*2sj9V1R+o$1R8_@AP5iy0f8W35Cj~8Ktd2G2m%d305AjyhJe5jFc<<3 > zLm*)Y6byleApkf61V=#N2pAjzha-@11PYEo!w~=y0YV}mNCXUtfFlt|Bm#v*ppggw > zg#e)t5EKH2Lcmc7Bnp8-A<!rUfJT7O2nZShLnGj51QLxvp%G{_0st@|00RLqFaQGw > zFh~G{0x)O*1As6f5C#Imz(5!{2!jM+P#_E%gaIHJ5Cj8(U|<jo9D+eYFenHH4Z#2~ > z3<!pSz%Vcv1`fj@VHgw)gN9)MI0gjAK;Re{90P}AkZ=qNjzPmQ01^X2VjxHi42gjw > zF-Rl^g~Xtd7yyL<p)e2>28P1GQ5Yl&gF<1@C=7tcfY2BS8UsUP;AjjIjX|L?Xf%cm > zL!zbfMqf!mM@5)l5C`i&L9yN7;^F};0PlZe;Qx;aK!^c2Ku<EPtWrX8AF)f9*IM^P > zk+Sh;?+6yE#8U9sw3pYt9Y|tSaAn*TDppHjS1**VsJ9zV=e4fM-W4v@%oKjN-d@q* > zFqS7Ba>TeNQm$L57{@MyKsrs8X%z71?1>_v2s#qI>3R4&#c!nDo=fyi2SyE!;|R?W > z@9Kpn_m$xU^^Y}6-+hkvMn^t=Tj>nO5I@%Nsa@-dCZiDrM|fa|z{zCAAnu-<xM@`O > zk+iKMTjRM(Va$BrMR$Lf>K9p5e}Az*Tl2Ozm#<CiaG~k_#&UI=`0+|-7!C`6yTs|n > zz~^U{HSLoB{*D!42GCGXuRZ(cNq?Br+6<0Uy5cZo+RXoa{%r}B$$ew)xVt==8?n^J > z+y~rUZ2ax|#?pm(0M4GTe!_ha&kw=F&sYs1X5X<2BNqm*g;L5&SUaY>OvTDzKJ2VT > zu||T|qd{qo>oMTc^7UBWrk(XT!2$3_yy%SMMuNn4`9`Aj<<3TuJU-VZT$$Qw6W$e_ > zVH>R;irS3Q_M^3n(tpt3N;a~u*h(|=-rY*K%Dh&WG8I)emcqD~+h@XRcI~s=JGmUP > zKa4p!<oGOCIOGN#?K<QIKX5tbhd*|9EQn@CI2Ok9?>QF1Wx1V-Q?;C(N-``EPNmtd > zdroEfpSYdNixd5vqTC9J%MkDChf6CNdoX*}h!4Zg@2Xp-5c`PMv+wUJJFxHeE4wMA > zU{(F>{s&c^Vmwt11B#VZ$X~MWT#&O`SuTwz@5<`t#ZNr0Et|{Vt6Hb#3(0LSMQ_xr > zj(T`X+TTpQE9p3TT_N!0&ScK56ODiH?FT>xbMGd^R0?*Juq?XwkiI&o?IYKQdGyoD > zRSESoST1@DFh(8J4YDS|JcqzRRl-9&d5fOIygv`>e+iDm-j7OjRf&vBtt`GDlO{N9 > zn2;w66zr6Hu8Evdr8yM+tu4Uk^;^eK#%ubGrAy;@6QnK!*D=#%4`q|Cc{yiamT)=m > z+&p@@;QI5?)uQLD=GBt---N4Wzbnk>)ygM=$JeW&G|Ls=DL|}vskfY8zilK)kxF)b > zc5soL$#BbQoyoSWx%r#pcI3O0pXB;|r#wCP<!)78&Fy~mw<EuU+Hu#mgO=G`sl)b_ > zn!DqU<4@mZ>^QCCs*2dPug@aI$I<`BUXk6OPZ?_8U(7fp-Cxds9KXL>jv{-w&T2}L > zXx~||NxD7wcKqq?q)PyEdVx>Yeth{i3G>i%71V{f#bL!fy!ru9y9eWIuwv7If8aAu > zgb;_b;;=xvOE|bb(Pro2Z(P+3d%1_P{<1=|qXfJ-R?R&W3$6_yoz(Rw5&ZFNqz>R- > z`l*vhv0rSDKbH40Q)@*y;uMx*rU_(zA>Uc-DHVK9?NbIbC3~jCt#1_5wsM)&#TtdL > zQ#EF&1o=+HnTIb@cT1=WMLvl)(|ATVe%&vor<-6O{)~PW{7O8{BhjO{i22{(E9u+G > zL|DKEGX^{;i(Q`>0or6DlZ2?!3nwSOv1O$p8hWjFmh$-*h+U{vO;c<tB{u-{Tu$<} > zZlqpHjs^#pHr<dxsNR>-a1L%mE_K5+&$PPY68`r?>Sni7$&jZeQHfVA-gv(qj@j4w > zgNTMeAhrnU_)@Ymu2E;bf0;ACIK`SPMqNGsWi69B6owns*p6}=yd!4Fo3P{ayc~_j > z65;GVQPGZk(h&L-R3Q6r2%}AO`!o-;=pcVbG!aTXosTP1uK09#BIG4y0hzhu-VxnP > ze=d>tOt?D=>&kt)75dq%cx4c!*Hg)v$YQWe#cTcHsW0EpiwgF@3%2wUzZehW^xGVi > z8HguyUr(1w-&g2_y`BzQN0vjS_O#N8-;_T7QvnHd)-U_6eLH#-4KLa`d3;OaU=UXd > z*RxRnxu;j3*;wVcH6cUTI3w3crRDa;-t715*@pSX8lOkcjV3`ekdTWUBGl~DV`x_# > z)4xz%P2M*&>d=0%v^u>6UYvUcj$sq0>gNr-ee)&8qw6FM5;%ulqC6(tUoLIR?j!73 > zMofkjXX<KP_+Soq+SM3#4NY*vPW$Fyt=Qw4JO;1dmcP&A43MFegDU)VDRGNyo`j_z > z6I?CIc$W5L-D*60k5J2qB^j^u@2me&>Q!HsQ<ybsV(s@x*f&e;te~=e=e7jnR;@~@ > zV;UJ1;5x6gyyh0FtP0o?cA;A}rD#dRKH3T)$hNYlZ|Np65Db5gUL~fv?jdY)j}-c~ > z%5hVa(RqDxYp`HCRDH~{M<Ub(^C0^(GfU0VWE+16k$l{L&64A_RSC+jBb3VMmBv3y > z64%&#OfvTqQhJj7#cY#R+;>p*lV{3{s#iIxM=faRxAuT6frU`r@Z-<xX<wyRLBNj= > zua`Aa3m?p+yFX&u-TA*|Z)i9))mK!zG`-5jbeqdoH!{`eeDmA)_#5OXspWskpVPTt > zs*LGn8ZiG*u+ml_Y5ILEqZ6q%URiqHq?j|n5fShkY3RU2(^^I?icnMFzY-cReW8l_ > zltf)?JpOy6ZuEtV-QB#!zuVdGmu2<|3;cSu>jUW=v@xfZ7V^!7q}7mhxoKV-ZaRiJ > z%+g^ur2X*ml41wTKvkK*z~RTbLZ*zkKOQb|oxb=CsJ2hd?HihImY*Nbf@jWx4ks6* > zcExP&9{HsGi$lg+JPLe$Z|J_TX|~z3JK^kkoh?zlt6|!{PAlMKdGTwHT3g+BFHj^8 > zGnpu(gdTIjST)X>>EdV9Gj;|hR0?QyRwp#Xpr*gKjERi>%UOw8-`_HrxWF|?j&q(4 > zdMP>fNX1fM{-bBp<*a9c=)SbcT)dIx+nMH?i<<ZM`xazUsGt0o^`Gw#?6sxlXKOB- > z8txBWlcW~^@?U-beShRVF137BbJe-hL1oMOq4W1htPM>kRY~w^24s>S!eY`FqW#-X > zO*hUDUSNI&j>zY6Dbb^pRcmC$L+<`f(q?IX6u@^B*)sM`o+o#1pX$`(mF2D8^m=bd > z&Cm6Om@R|$k@I55Fewd&TQOy+fdb1KzKo7V5S{orgYXfa%6*bvs`T|?ZG=Zrf=Z|V > z%JC|u6La0G{cxJqh2D|ty8S)=aM6YtF*p1~ba8l5RwQv~_RFv1WVzs?Mqst-xuiuu > z_oFgTSg4unx_iCN2btMm*}uW$5=y%&%6(}LE|ETN-XWPE%}V4Q8Lu4oRf$Ug%hYCr > zp+*bq&z?>cj*MVu#(LjTPTwLcvUi2%Ov0gzp3b`}_;j?Mnc^;a0}dgazTC~Olb4~D > z)J}{v&fGskO}3q0IXdod`A2!13ABW;mpkKM2b<A`SkUT`wr~>C^8MZp_0@BJZ}Wa* > z-8oIzH<1%uyZzzR#>Li(W2oO!z$mKO!0p7|EkMHU6K!;$L^Md`En1cMSdn;V+c)yc > zdKR<obSda{GeevRiP_&KtNBX?TlL52;74b;{k$Z}{Y$n&9eb1?-Syo0VbzJ<faJ`E > zq(mP7(4EB3Te(>N@$po^jkkZ5ky*T9Y%!s07vKs<ft)Xce$K>I>-elR`K2|w8tD1) > zXT;?ZCUDW%Y;4D65JZPxM=gV+7ikk!yln73dnPv6-FX>dRE=<+xgQN$62Em%E3!0* > z5GI**@)q_|r*)@z?(sp<!<-gwDFMgc73;Gn5%D48b|mBWAqz3^bI~E&-HKHnba46c > zST7@tDI=M22wuEOMm*%)G=X3B!=cy6iG0=`<&|>RPqf$Xu%fD*`jd?}iu0Ky@gQa^ > z=5iG-GUypDmO@+MQ1pY?J|l&tBJks&&$HHu-_*$x-YGUlPUDfB<gZc!BH^MCxQQ{` > z)L2R0AwcmeMfu92HPlY6!fePZGK(TW)DW!sG0~L9%c(FfQQs?BKS^iXR<|kLZ!X>U > zCSAYD_RV&B2$!9$YDN@MMvQSrKt)Cvk=;`WtZ>k$_u4nvC$JSo%x3WQ%b<tgw%?_@ > zYZu(NWR)axmOma9cNJ`g@QUg6@hvib%X>)zk90Mla2x=|6%ED0eMqk0%IUuGUwsq~ > zS7QXXGY2k%7}m26p2bf}WKTiNE_Lur;Gle8GZZ-fn!_jhCL?|>CzLKX60@5VXPmp~ > zo4Y=jv9g=7Taj+iWV35zc}Ad8S1Mp(ul_d8<q5SrSF>N2t-T}X^M~m0gn`s|6p`jb > zUx+jFN%z3|gAUXv54~~=zO)pM3I`5fvnsd+Q}h>3Bd0`y0u_|U=ym89u^es(l2Aj( > z3@-;I$EYs`pQ&y*vm6TFDH<ONhBDC=xKk90iMf=Je^DeZ4#)R+d7EWF==kV+G0A+f > z8xCB@=l#R1bMYl7V9W&}0EeoEKi^9Wf#%`9O=n_{0aJRNhPtg@CoE-@!oHWfawpz5 > zn7m~V$~HEuhr}6`x{j)rrBs9ke{{5SG#j|F4o(j&+YYK24BNLSTfyLG4K=wG4*G(3 > zVjeEa792D}@UyOdg!PJs&VI~h`&m{_?bO*4_*2Q}!YXrmJHY>SV6KFQKt+NJahV&U > z6zNylwD;0+*u&V{Zx1Z!qb7oPWh&4MUz}y*_7S-<D)AD|AN@|`<5{BhvRcEWnwU6- > zdd>so7fAZt5&WjW{N?jvaz|yNw}vs!h>xCvC|x%RPgl=kGiNhv5l*sUwxg4<c<0DF > z@aNC7y65zsoOI65U;Fe^*HjA<FTDElr8My5B1;5PP5!Q$;+@zO!a=`WR^R!#O8WD` > zFP@Hbbxsv^S%s0lXK7c3L8neOa}uu%XFu`ZeG<H@7iMS>m1+>fm^MiGH@wVhkk0z3 > zJ!dmnt}1bv$`)GuaHF7XYOFtPIu-3zSQ3;`9t(e)N%S%CVm;3Ul+c;)WrT;+rf^mA > zH%`PsT34E!OA3lKH8?Lcz}lKz|9jWnHF+{Le;^66jDl(-!!I0E`ApMst`hxigErEG > zOvHmp%j)(TiGF<vzl+G1l&FI<)TLB@IS}<sEis6@bWt-3gL$?p-4$(2r3FT|7T=N8 > z$Sc1_a3e<CAE`f2{gd|l%%D=ruwK#l-B#=Cm#yC!THF1>iEUabS8cFC&Z#}aGHibL > z>ymJls*C!tV_Nq-Z&OE;%7)C!KmHxlSsg8V+Gk3F6<co8m{J&tO8We}j;*+k1^>=H > z2I<Xm$^8r$>b~}SWL57SSASdE^+Mb2$QO`5xYl0=lhuXY-i6C6akT(uc*ku#FUFar > zi{)eL8lJu{*}XlNdmx!ht<k*`)6H0wOSRa&O4LJh(9NLHLx=9><n5sk=;2`O;X?QD > zGxk2??d7TJ0c-S%OZUDslRU1-?eoi{Ov~e4lmNKRlBNuMOn<zV{-M#{r?uFpgYKjK > z_#-wnvZVe8>}ixbdzaSl&fUBIZIXc<h5=jYfmwee&4>Y;_D;KB1NH|4?$RB~pZ%CU > zb=CU&F-l!V0pK^h{krI%pBM*&r3XXJ2A6;Tj7<4qh*^|=bRcVMXk#?n=_NJv-gGE6 > zU??qnD5HHSb8#peJ(SBhoG(3GXf|9NFkG5FT(03gW&i1Nc6gIu<iop`!<nv-`k#^6 > zBjN2M-xo*P(IcIVT<=PMfJ*wkG!mU*M!mL{?-qZ#9Q<-49d+j&okstfVH};69-T8A > z)!lGTf2-lW*nVa!d7%I1oF`|#Ibau7zQ^ctfF9eAANe6Y-mNiyX*PZxFy6K}h9(_9 > zVjRaXM)(yv+>=h=F-`38YR5Ag@wN9#n)M1EOgwrtDIq;c7C1?rGpPjYr5~MSV49@l > zn`AMce8xA$95}_AFv-C*#alfE)|{%x9pX8h+QS(4{iqzj$^I?T@%!b{Z|VErsfzVq > zr1+Z{#Rq<k&c~0w&Y9LonAYkT)#;el=KG_&G!4}hx=?<1pZe?m{h0jyA6cduE14M^ > z^BLO&y+>8U&K<+=mS$l0Gp<at?lQBU=CdCHXT5V~eL80SmSzL)XFXqy*vp_CG*OY} > zsOUgc>?5P&&w=|JC?cjgxXj#v(p-}HTt?trCg0rG(YY*_xm>3Ce3|(i&G|g@`SQSd > z1mAqc=zOKid=1k=t;|BT=E67gg_gjD?|cibqYG^=3!O}hKV%j=G#9(f7Y73uhxrzV > zMi)n17RQ*DCS;aIHJ8TCmr#LA^L$Hlqe}}Im!)N<<yD#GCC%j(^W~ku<vqUT-O=TJ > zm*pd-m6J#FSxkzN44l_FE4Ljh=%tm1`xStB6<c-{*J2g_(<))^Dsks3>GG=C`g4z+ > zRSMZPN{cn>PiwTfYxJFKjLU1x4{NN<>+DCM0o?TG{wvRN*SR~_d6(DuAJzq#H-u$3 > zL@hSN64}XX+M)Funn-1Rmp^ZqHsxhE<t#Q012+|2H`Nk1mB%)famLQxD}X<3ys_9a > z__Sq|yJgb3WwyL!@vtSsu8pahc=CAL{?oQ&?zVI1Hf(v@^<mrn@z&QR1^vf=y+8f+ > z$^Gls`4{KG!}j{`C+3}B_1{CacETR-L}4s;qFs05J9iRmcHp@?Da$*_TDzYgcG4|& > zGhBDGJ9l$ycJp(03zv5bwDyV~cFPiZS<cMxsyXfW1><``GR*t37W>Fg`}d*ywYmH4 > zo%@}xg5Mt>bnqW^jcwF_I%twT7|1>7m)##eIv7nn=<YoD{rIr&)8X{P!BoxRuf)Td > z+{4M`!_}k11?Hna7Dt=>M=PC2JF-VdV@G?-M<<_-PA!hlKOHY79&hI!qdSiua*u8w > zpWGj9;&yG~uWT+Z%&nUJ4Ol*Tj5#4^Ii-+0rL;Vy8`~p1+#6nC113(HF{i97XY6uk > zAj>n(pfhmZ8F$wi@5&iJ=1h>~pD;%5pQz<Ov7mnvdH-H^{gYn#CyV(f&vLFPcdl%C > zt{QX>$vc1Db*`~;u7x?*VY$%OUZ+$3JATgQP`X#qc~QE2QGRq$@^E3pa%nq$@z(9q > zj_lI0>(Y7U(&6~h33KT=e(K3`<vo7sm2~xy?8<NDDgblkOLpzgavd&r9hr3X!R<7* > z>)Nu1&7o<p7=N6ejNQRN5DRm3mV0w4dy>(0gIT^wmpjfDxXshP#kRc7WVx-7yRA&R > z%?-L`KD(~M+~&*OA++yGE$?cA?%Lh%I=k+=$nL%ipj$1`)!OJY{<|Mt=)t7BpK|C4 > zH}sg?eaAR@5`&(yydV8`Ka0`6AFn}Q>0RuHt*?$>ZwEan>pkprJsf;{wzu+d!h#XR > zexMy6|D1GjmWR1LW<T!20H@lk@}YQ-n3Xeh))XTjG0BG0>aHutQt?^zWhAo!2~0Ad > zaOw0mAt@Z1xyoPlIFu7{4)5z7c(ygZ3I=hg>D88ue31!!z@>k)qf@97cO;tmW>>FN > zGe`D?4;ezCn65;tKNGrdP-Cud(0KJNr@GG0?x7)_HDoNP>+$y&gw6S8p&tn5siK<? > zO*=jA#_mnUPnNoUNsceFXlre{<B6oiNa;>(h7)+?IvFMZ*^cB0`OlDM{&ScrP)`!e > zp}%nMs3vRk{`KT?d#(`kF0ZrtrTG4A2gfn~QC5@tLZ1i2Y(n;x+gA5iIhMyAJ_lQq > zhT6@E=64>uiw*uOx$SM&$D6%|a>wn`ekX^cZ4MX<S^qg4yXCT*GrN>V+)6(@L3u0! > zP_29#sj{E~9*wPF1%~^qOo8ZmacvKFH^oSr!Qj+M74nv0M}g!Os80DQ&SJ$E?>Dv{ > zDm13yrz&)Bi#=2s-u0cTGQHpQc*Ww6d-jSg4CD!U7N>j$;rMLpsrEc8Tu;p~w^(@C > z0QFKxov(TG3><piOD31)-czqGGOjG5881Oh0*J4Ki)cyyEpE_~I_?wEmbuz&(3ZpC > zis~p3a3FP*$W%lzx{^3L$VuED3P@ix>-}GD<aD3tZ(Ob|3Z(`yMxH9Nk!<ab^GqeL > z_G^O|RGkLunqD1-#t9d1pbq_w28K@&-*hd5@WhO)qd1z3-X^Jt%_%&pd@a+OyL4e- > zZvCan#JH^FkBRBGKVl}X&qo?fovXtP*c`J;xTZ5NM~37yS0coh`9A73S@<9Ki(3X> > zZ8fjRE&YKY2)8&|tWqRKDXe3q58bOCsX*i2ggq~9v8md*5PzE>zTNURNluG;HGa6U > z#rCuICqgd4-{x1P-b%`n_Fo;CW1dyqDz9p*25GKWX;MUsgcvl@e)uaM!AWmhl5Rh* > zSrn+^H=&o}{uJZ*wx~%2ORvgXKVJ+(M|%*`!x;_BePC1iTt_2pn%_j?$52>HRdZg@ > z;xusX8n@i^Hy2bR4Th;ds&^oLP0;LLSi3UAz-Rhk?-;AjcYixV%Ct>xL;mbPv(-iJ > ziu&9`<v9D?U4~5NViGElbMae~rOHquq~)`>xC;UBaS=;CKd0<;@qTo5moX}AC4@E1 > zSvD%^sqfbA=F6+nvNC2PR*>TswSP)(hx0vdeZ<W|nIl0dk^OU}81dPgE#{#4n9ea_ > zu_w&_Ut7}u>1O<(k^6Wy`fBAL>Tjnv*vdhVl^|PLl{sZAg2cqp6z8g*p?60GR!Q+l > z5#mk4rM!djs_C5}Fcj~Z8I5AyjZ<9A?~h=;?qNCnjZFcPCk`q<VSz;}VyFCw4e7Qe > zxfmp&@=OP~P>OD@lRaRq@?ens9%qjdK#o}><^ahP6+;F!J-1824~0~%N&v+md3VsF > z4RMiA0S^VM3QN6iv^;C!6Ff!yp@dS|)wgpR1IX4O2(eobt}W}5mx#>0tFGHT9fdO% > zpoE{0{K{W{jP?&?tuB-}wd(gVsP(yq!T9IAH*YA-*zf?Oy3cOxI1ii1h(j!SEdA(} > zvEU!Ee1fr5#g4_3$l4dnSn|Y0yd@M`yQObthzP4dnb=L_UE*vZX-&KllO_toHQg`| > zB8<YKLQB3_s183{0uRGNrz9NK!{`1N6wSlQ%B^5fPH8KTJ-4o^!XfWWk|iHUX;c6g > zX3eJ((k<M=^(5n8eebW=vZ`>j7E4J{Omz}qI?sMCVYs-#eCQ6D$6dz{SKV=~Sq%oG > z*NE|Ii&&$0z$Q(>I^SHd;@(I)MautS8&#{y5$|{U<%bs@<P5=fEiB;)(EYJcm%?k% > zW+4@zOUB=#R$&)U^yeWBR~WTHEnoQ)o0f`59G8{&z)D4?bT#qkQVi2TB|X={lc&zA > zPbzBi=Y`&4cfE9Sscy=*$2G7`dSvuPcTgW8=h{uQ7BW>E)%cXFrMAJk=QPeMwh)7x > z8wnVoY>C~tmkrEAo_l8>YZf^=AJJC^|D58AosPG)v-C6;x1$D<Yr`g6ZaI_hZHS8p > z3n-i?sZC)aa(XBI7ADEPpotS2GxA-5*KBzA*J6NP`A-tenrS|p)l*ltezy>mEEn3l > z`BRA6#~2iGH+MngA|H!I#{#uK#L6Esu_9C6MnpE8E@w(U$cHd`eLcljhV3~bu!<0D > zbFZaRb6?|2nMk7H7k6!D<(q?5Dgp3k0uBLd?j@DoT<~Uo(!+wlV)E66c^wg-NA7g2 > zgXAKKg&hL-5tLxqT9Xwjj*GN5(t3{~BU~-%pnf+fLVD9@GLAAE$iz*>%n}=-Q%S3V > zdFp&pfD1>H_^1VjT?!vm@ziwe(3A&gp=3DN3M7;94wM6{iA1E;sUI@8Y_>M-#Wg?c > z>P2$`13Ix_Z91*U;`ds`g7~J8d`e9(u8HAW2tWJGWMWek#qdO|KrRJVv5sAK%4*Up > zPnWoA!b9HXgI|1Co?4Jvf}#+eBv7igicRP55|Kw`oZc@}ytFdQaaMnsoINHaWOaHW > zDPH>se8xP4!$M6otY^r&_PUF3N9<lVmIydyZqgB>VSiE}tX!Z+A-F3yJW+%5-jrgs > zw_E|gbTSC8!fHlX9{Shk$h+*0Q%}&bq$PMFtg|ib%x+iCWX%G@&JYb7t;t##l!SA= > zfnrZ~L}3@24){>G#u7^`_7njvrtb1jLze(qDo?UdvYNRUywQ{oH!j}s>_k<f>GH)o > zBxGq=M7q(TCN#1WLG7V9Sra`Y?UzXje`hyXX?#mu*U7?#NZ%JIs`pVFDI(%(_t^Tr > zx75^lReqG&FMn1r+nUHX)`|yY{n)2o`d}c=wuVUV$l(hfNSsimAoPo9%rc4Y0@ITN > zDLc-Td#6`oxWT07&s4UDfwBf{`o?6(u&lv4Eb%`ZWq`b*@f|_1(|0cHFoFPJn;=*> > z{|jU8;c^iaGvtRVh|O~Ex7<&?(IU>(b&jY#mq?n&ip8j4HHYOMvm29%w|7>4EbPdE > zkpYW1qu!0Hfp-Bc&)W@tAGkJDd+3{!wOUDG31s)sf__CPt0%Lf287zX-4+Q+Ktzkr > zBd}kyk<&cbd{u)7Q)Jx5Rb$mW(980RuFFl)XI)Na0zA)_{0fk@+<4(JubvQc)3*`f > zwpCZk*R{!$|0CUs4aGmeI}zdLk_RwT-{?(B!NR0m;3yJ?!mq!xC~#>WwUf}HBXF;| > zAKsPoV%J$lllxyk7wHlB-GawGQGg3+rX&?#a8}4v?>=KA{m@G0HA$9ER3F;V!;_s( > zt`N-Sj>p0)VgP=D3l?QPAuw%;@UD&GG<{*M2*NDye$~PW&0Wg`0BrvgDZXeKP&onX > zM7Se6o-mjLtsZ)m!l8~WT4+sar4QuVfP_VrL>VQd3q)k3Ipsh&BG0&FNJUglJG9P0 > z!bQEfwGk_COU36(v|^tdsRvtau)oYIu`3id5PhMl9;#xKifhy;yiccB^;sYJ`3<Rx > z@p+k9Q3?3zfPod?#~8SOMsV;g!J9h*OL!<B3fl*fN@PV)?;F7n2_<xIYRedKjxURd > zE#t&tCsYb0Bm|g3DfJ{+zA!|8C1%irW3vYTZ2C`#R;usr2=p?r{rk%OuOnW*k@yI2 > z3BkfPW##&Z6M9T9f$35FRvQs3Qbwp-hWXD8Xo6#Ntt!TnmPP!E`}Hi^A5<RfjF%)$ > z=%q(1l|N|5i{px*#9J+BV(s;eg`4^eg%iiUQwk0D!Q+p9?x&mqMm-M{8S?lQ7qBRl > z>+>=*_NDAuQFQ8Xg&BFg?^ER4)PY`Uys$Qeahr}v=6GCgczm8;2B1pRF|Gt?8nyR| > z@E|jD#{55rP61}?Oe60=5AdhC!#oorVSp9h?HWQ4j5B@K*IUJ0tugpFL_pFy%J_X| > zTlk2|2$Q%KAK+dcF8T{y5w&AYFg%h|>C9>G_e&$?S6871YpupFMV>$H8ugS-vOS$# > zt85t)N(+clCS+Y3@Y)Y7>ko8c7W?XSQ^NUb#X0ivsOIV2Z}EhK<vl(Nr}?EF_{CKE > z#e}qQXNJXqLj@00r66^99EAJ`QgW=3ZlI0eHCLF|v^uU8L5pMUV{8GA^3fn4t*>E1 > z3~dBlgyP{70yMX^jJR0``vqJ^5j5Wk?yUt(GvX-XNM5ijFnm_4PYy*>{_t<<?%4TJ > zq8!IOQY7@`<s4}I35PCj-B(%qFi?xgi_8)|BV~iZ23<!yJzFJdG#8%|caY9xQF5C^ > z1)dgRun8=J^--QIDWKsmBB=nd(nefli=c_HO|9_we4grMOv+Q{W>}S~9pJH|!iC8J > zJz5+9=v7nvB~rpHjqboaS3)$>tJiU>NKA&BO0W<)3QKsX7{EmgZe^q@@Wg&Gy}-lP > zTWt{c&{sBjVRWm)*Ag|N*P3@LYO|<s5U(W1@G_B>_A#o-bfW3q8+OyxV2=+tGBA?l > z&*0FP;`Zn_`SEam$oG)C)=!RcAN=bH57crQULvuwV;D0ozrQkX{L@4`7-Fo-4`B<P > zZwi`t)4dM(DUo3F>Q<3w$4sl??Wn0I6HBGCn*xQL``RO|QMyZICu^yNJVo%cs0ell > zEHgMzxHXNph{%V_^f1aF9A=yFk`)4e+0U*kH0GTJIH)kfZ(B@hp*HtX{s$7tdWNrk > zvok!uN1l>bgwbJ0!<mTNQ6%W^@mogZJw{1?P)U#45;SuxbS3MZ2_SY+!sOfr<@BxJ > z^G><)4E#Q`$8rNZU$eV&a_a~T;Gu)Rc`TjPZ|gpHopwt&;i*M`_AZZDn#2Bh!X{yy > zEU9K9o*e8g5AXqf!mPY%jx43`!u~4!t~;a+o`&xjC$BnvlfE&`41C&ZD@)cPEmbkG > zlpI=Tg@<&BSXDD_>Y!+@7Af(1ss}ffz~Y-npy)}y0~xsZR3uEETtr6V5BZ3uA4ogO > z%%6dhdeOn@?h%5aW)L-ICU%?<$lS&2_}@$d%P{s99rG_?w9o0IZ#)-w*U6C2qN}^* > zu%FE(QyF7O4vbb*qVqzYJ-D-T{1EE#VFb1sSX&n69C7pzX1(zG5LOeWvs&IB(Z1`i > z@&RL6Kz0aiv&0_T{X%V1Fk?%w@WX2Od<69!k9l)OL9(>sE!Xl_7)koem3{v-=`(m% > z@USD*D%LWw*lv;JWTS;Jy-5Gl#-h*G-=7kyQk!K@nxd8J`>o(H`mcy6jl+uNq|%H$ > zpMH5On%qi2tW)SoTxMp@5MeYB^raQ?GAkn`I*S*_0ZQo2ZuL|st8I4;K4JYnIov?U > z`n@7yLjl8gu5~KeXpk1z*`FcuYekgrF!$mb&%k<K?XW}$ws$^2G`1?en^PPUx<|4h > zqWTu2G@1EmEWJXHHKSD!{e_Ukk0fxowzA}HoO|5QiY4C5jmT&r{F3}ATHB%E=#w*n > zV)DTZ)=D&>%k!`SNwZBtt<M!i=)K*r!phVbc&hdARKQ;(zg0xfJ;J~WuTFF0%^0or > z<x_*2N;0h}zujU51SK(T6kRE0r;{~(XR7zYV0tguJvQ1dJGjeuAZLFoHlH#&do$O_ > z-h;lC?vjvW*)HTYnA4un+}=96Hg&+)p1SjEcv~vhST=X=%Q(EbRlMa7_6}=MhY#L= > zy)FLwl>YVYeEj5#1JM+zPm{x^%fHKq4#5w9SD1F-)$)&0Mx{F)b|(Ht>o`7hbsUM_ > z!30q6#Bw^uai;$s%<lqk@|r}?`RpVOkfyLXC2Tvw?5W*PSGYi*E8cCVNA5<%?0zlX > z#p(VN*}@s29{ZMhJCk`bx6|J7fpCD%-Xf-=w0K?D!zs_+IWO^bGU0A%+FtBjOiW^H > zNwjlP?jF|IUX?xJH)^NHfidq!lG2=<B$oG(pLWX(_M4c6yM^{#o!8AH_p_R|pQ)DR > zCvInrIX%-NbT(+lV%y`X+V`m6Z^e)4@wV=uc8J)2mp``coVFdIWD~&r(lhd9iPmD= > zHZ1IuL;S<R*khORQpZVtmnpFXslxckqn(6hhu}2F3E9KR(!;r?LqGnV`9z1}Ra^{L > z{`fx?629vhltBV%eUxrA?iw@0*1$f|l+*gm-p(h-5alHDkvM-V*Qk7wq~ZNKr>uYL > z@&Bp|=&^N<waQOt_7^)3Bk*bF>{&lsFdX4CBq_GuFzf8AK3et8x@{tTI4ba;2)`0_ > zJ6}G)%c%q(=sX15Hru;XBn)@Do)FU1V^||hAD4Lu$_?3D6V9F(T(>Y&X6X)|{Ox>K > zw|4Z7!hX;~B9tDME|}dye){7-XA}FS8u)d{4^alPEKO7>#0u{@_Dh!WCBE9z%GwAp > zJQNHmRPPpLS@B>Ww|JU<!Z_P{sOt%GD}SbaMtuLyf7OG9ERN90ljd%p4`PiW-)AFb > zAzXZYMw|D&R(>z$krh$dKMK43mp}hyBb*u2H|`&-=~yQIrX3HUa1G#p`YYVp9X%*m > zjuiwLT33(N3IvkokLqvSTVl@d(>%jiBbMqT)F4`Q<YAw#@w6m#9@<j;GjKVPQ^MF6 > zgiaB<0vC(QMWJ9kT~;ssByuhJB2yGDXVrTF`imfN1P&jeUjD^X?Pw~lB25V|!yjG` > zMFrvTa4MXaNB$oe<-GLDy^sbkRWIvaS?ozazakR2dN0s|Xd%!uin8F3a5fy4v?1_A > z8{WJYH(f2gc@k|P|LoPuRYH6?FFc%(4TozYGys{J)QfzKB+y$uEwJXtpq^#~l@pxa > zMd?n2Lfroa>0I*-Dws@NKM^NnPRG^zQQngro*?Z*wtfnZ_V8y7gFrm_;Nz}R*D)gI > z{N>)f^yg;FA0s)!V7x^d@~t_WR~AbjMPG^)bm0}|u_y19=I4P6)4#>^ex%CV4ROLN > z?}|{rq8HAPFl_noc>GVbwxMH}T1I>6;ZV3=@Qv+Z6X>IV2sq57%P&G|a%3C+6;bit > z`#4z4W%0rPf*SpUAYfWHU}=DLL<@bvi5?IL=nFy*v7m>=(PlSfT08HV8S$_%1X?;r > zdPYKOR*D~u>VhUhy-x@<ci!63L|dl2HSYxUPGD<ZKX0xjn97^N_@P35yX^GHae`Jq > zB2Q}dYJH}g1G^~*CkYC@QP=~m5qjkp8MGPNNu(^4@5|kqL(*&GKK2B;NAU_)_(z{* > zN5&~8k*l5H)t*K1S{2O_T>i^byKul`o(ipXjF?}+_LOf`0|+gvjV^xc9j}0b9v+r{ > zPaUsxS&~0jOoh~~tHjgsS!_ZkH<aP@Qugsidc{Kt&kYeUwW+OFX#!kgwtwBsDkC^w > zF~y@^$CV0gQYQW~($=qzcyXU#Q_`?m3e_B<>ywCGQr4@a6brm1lYiyk)Yrryb(!8_ > zsg`1fYkJ1F*y8zjs`}j(|8l$E)!E_xmB8wcP=crYu<H|LOmj4ii0i?%(B@#ubNw0^ > zUEzAwemnp4^uJt#l1%i{!qo2>$LPZ*$KjiCW-cyMkjtEMGO58gjA&z+&v71Tw##s# > z@`c}19`B-uWI7qdpW}!l6E*gGffW5n(q^j&33_DOTo!EQJyk_+N6hY$i<-8sU!{if > zeq-J>!+Pns?SO9tUsjU~Wwke4=CH0lMlRW?dBT~b^=dr$TjQ%?FcH6PoaRM*y;(?Y > zj18M3)%V_r(C_Bn?6HaWP1c~B4g+0h@+F(kG7LRitJJ8H=5;V1h0l}3^XRp&p_Hek > zPw8|WpTsy=*j?HfSEDGljJ|Qe<xRPqTRGCr{cboiFxLE+#Tj;)zMPp(h*o=Z+mw_g > z6+_KFB86{~xMq4?=<{h#lMF(tY{nrvT_v)Iw<DZgNc}bNCM#l%Hf|<t2Am03jLjp5 > zzL@0G<E_ARk@>Qz%@gRFLaAJSv!0~#!c`H!^yQpLX3X0USK}2yrKu@0CKDpbpo`l1 > z3H^>(;^ev?+jA32Y#dTU^`8n=hAR*I205EdTvL7vQ0^5wL_DR+sxVuMRDWK%-07vQ > zSQMXppd9wlJH$=a*uZ5^S>lysY;zNrW&+bywr|2?2oUTc;z3h)lSrWj`<|$i&VA0W > z_SE$&(^4L=C#Pz~lc5>#so<RBD#;BjM!n&!!8Ep9se9cv&Bng3q8xn8<5t>~r+7K| > zS4g+(OVe2#d0jjC)bx`-t8%ZCg{S43DT&soAw}`i18Wu^EGIGXkY~y*F;!3ftu~_n > z1lq9NzW*&ut%lDdJm8b(@m(vR*=&~z?EK5R*U4)-C3>N8vf{tU3Qdn9D8^r#D5phk > zSMxs0;pj_2qeEw4#HpN~o^jf;p?wU+u5drDKBTlP(NDK>{KM^jO|NX*L1Xi$yBg$% > z#moKHg`>M81i^~baUGeP^vMv-x3;q$aqaehBN+bsQ)HOR{lCGtU4iFIN|=tz|5B#1 > z{}w;XbzE<iB|Y5yX^@je?=|OjpijH<zP-W}!za(1F@te6Ia9qvxvU7;M->ExFd-T( > zWFe?{Cqb>)3hb|;$Vz3>FR@*M=grEkKN!PU>K*<q=sJ|j1d=32Ntj+Q;i%u0p{N&q > zrceqevF~Aj-Hx(O_HR^TtMOI;X3&I01f0Cc+<B~PAEAu@M9B5OD^G^9KE{1%pH&6< > ziqav1`>yp{+<6-dZHJ>Q|EDJ(pU%xF?kVt_O|Ekl>#T_(FG;j7dfDB=2_+Gcl?NZn > zIZ{p{CRKf?q-I7~pnZcE*>=<un!7KYyQhAfa1N>I)u*JwGB`vkhBQ6v)o~Ya-?gu^ > zN4Bd;3AIIVB5R4J!xQ9k8WR2hG-4P+3*3Ysv5U&{-7)K^Qm!jU70|72J}}2lfhhi} > zMR}ed0k;t|b!44Aw<FVet!PKd#i_%eN(7x5b!-&0kAL~^Yf$a8S84Rwf5;s)-o93N > zzA+IF%BE=LlV8{W!<8WPlq~{m6vcS5xltwGPpn(Lkq2pr0LfGJHx1Q)_UUDR;j1Tl > zv;&Gj#{8{oapwyk!;hU;+ww_#(IV?T!1MJjge!HLy-IpVZTBXdubA>Bgma)ktb<GI > zy)&)G9<ogK-bvdxmL@eny4+oe+v-5<O<R1juUj{>PLWCNuSFcbCihoeV<~BkwrU8A > zdu}5RuIbv8#wvTNr=01MEj@OaO)ggzI@5(2gAd*bc9U3BGczWJcd4Mvfa(!b5*qau > zX-Kulqbjqf`-Y?a{k5bKB(sbk4I=Ji-bMO7v0<td=%|mci|IJ9z9FU_@pgSJ^x{xM > z|Ejn&vM#>Hu9|k1X5ps$va!CA&&ADjVQH_ax%Hlp&Ud7C^){{LM>UJ5DUaEPuy|{O > zOO0pTzS*MURqJo_Bd@k*lUX(|PR1M853jH-(&eF?OF1Jx9SbI9k<H(S{1G1(vX(Z6 > zn>%N=j_$r^E&p3@_R}IBVZXx@tWou>$Cnih)fJt=6=~^yyd9^50j=rI+0}aJI$L1v > zrxVdc_WD$h*tjXL5vWu2VnYACvz2C?4RE0@6>g-^G}c(B``t3&X<VD|zG`D=J%b;8 > zsP3mLZLWoX({%D;BeD1V?N8oTpRaR<2AD=@NJsfkwNBx*u*@yK_j8q0ckgVT#G$Uv > zslI)|dv7brLqiqzmD70)60JaD{9;7!SB$xk*{<jIM2~Tq=R=%ra^o6tnB+uk;QNf( > zct_!Xl9LH(b@?(MO(wd1KAd(4lvYStUfIlcW?p_M6JgrZj=P;Imc1xfNP*m@W&SA_ > z^Fmnjy)*ooIn%IxUM*g|f9opFfA?YtaW=K-dGU?C-{9Lf&9Z6BxaO|oKkB|ohSK(3 > z^D{M(=5S3>Sd7LU-@H9W)IUqpqV(ZtaQx`V`95M^)%C?d*1mB2MxZ{=NZazIDk@a- > z7r8JlL=Yx>YQ|D@ob@;$CH>E%9yyJ*Q0+cyHAkz+<9I`V_ceu&c-N{r;L}#rVfEwT > z=-wRK6Um<b67tM*Cw<dZ|AzK0vZCgZxBTz5(@eb<w?k*(W*Lr8RoQc}H-EK(l1(63 > zfSUWTz>zLK2WZW-39d*^Ay3SRuq9Q4$Or3q#^DC+&}7R8_csIGH2?ivA^OiEGxC}a > zf>}#)8v9X9t$(gh4<vQ|7(q$l{^7zz1`EnCGj%g`n6g-SSmmsOZDEjKr(ba3pxvfC > zEEtiX{|8|N{b+(IUHp^(zVn||XzO1kf!iEz#yT^p!0GSgV=B$97r82dW=f3fUPO|} > zspQoGrfPqw4c~K`Iy?&c>$oFyA*HS3?Z)d<dZI<=28^Q;C1~1BctsHlVl;>wyqep# > z7ml+z7fMO&l4lT(F&%J-(^_PeP+-|xd$OD0x`-3FYuI-^OYrgP)mxHn{cGlB2SS>Y > z&u;EmT%gP$wans*Y_)Ux8e>x&+0~jxdfZTx8r^&xRjWqLd|aD+T_IKigH?Q!e0=*= > z0*idYv{k|x6XH--B1GC``vh3Id#>Phh#Av-g*lIzIRzZ6(p{l6H57Melp19<uh2)% > zDG#v97Ybsc9`VOfqFDQGw5DX%=C=Cyz*w92VU$RvDJHgg6>@)E`E|9vCpA;bscfv~ > z*4RMsGDq&%O-6EEK5-!{)3BC_M#xh2AAy$8)sis*cLnC#L_ToHJ7gF`N*|RfK(MvM > zw8sR%ahf$1A}B3!c^4?rIw~gxH@nGd=pJfZ_9hivHetx3M;5330?AwsCA^o;eCU}$ > zIEY{QbzmH)z4CXwj8wc|+c(Stm+KkV?1K0kR>2W^8dwxolcy!GvDgzi1;cr8^AvfD > zRPU9zGyvj8MXXz#YXxN<<vbaPyc^j3TIPxAA`V^r+h?tFiP>)v;m^i|!h5k;Uw&6o > z0bxQY;n*gF&rDz&a_$P(RFLa?RUQb?MOgF}+>cw^LkkXZa{O7qie<6XOKJPol1pBu > zw#U=V(vC}BCmx#)2vK@aqLg^D&il&g2ZcFbAD_{NN&kj&YKRPH$g3qKMH6!+*G-kg > z9)U$m#L1=^n^v9<ol5*Bkhw{zv7!~4Hq>hL1r@eam93y!@@5KeN3#Tan`>G-Ov$<= > z!x~&3jmKriLh9Ggl8D6vlGk<*=L=w})aeH4VNG!XeK$BJ-Xs!!eVh<^3a~r{OhFmm > zV}3TyOq{#srH*|*(Ja9sOFzm7!rGj}LA~JIoa>=|2;&iD>NVfe;gYA^fy+%{3V~9s > z$Jk7390~%CivEl?s*qAjWqFx5rOGfiUTlB@7oZ;QXHBvHO}ed*45RWRu5{<5@l=#5 > zF?^eA?>x-pb~{hW8cdpKj!R{wtbye+U%IYL&i5zP4`iO|^o5_;1nOMsgKzGWSmxWr > zC?t$a5I&;C+{dVfMFa1?sJ8tV@rXiMo?==N0ttZ){#9)07V7N5Jy*S`v!;Lm6fF)g > zAQ<L1Gt#FDh?bj7_x{&XlL35kM=bPB=p|JmpOLK!pupD>8WCCk$vY7{Alo6w!Gg6| > zQ@KxQm@s%RvbTb~1?o7cjQi#0j|^D;+lhXZK_6HVmj-uGBy&)|1=CAOYT!#)Vur=y > zqye1vJ6fvACn6#O&Fmp*xCCaFFtfD(6r23=nRfl~qsL=dnFiPfCZN$ZqE08m0Vk5- > zima&$#^nm4d8gb@lZfio+?m~MeD3_m+_|?E1v3S?%+80lTSkQ{<^$^jExoh@>#y9g > zu#sUri`xP}I4WBdu|FVi^S4o4-P9rB)}d(?DcIOM;hVZYSE0CE0nSst94c=tbLC5A > zP~4TP&IqgRl&_{OT+W5;h<v}S=UV1dOzWOv*>{0`GUO2k>`XDA76iZ{0-Jj>;7aPA > z6(dDuTxGVklJa>w8<tPu#mj4;hp>A7X;)XfGU_tz)OV&!m{8Nq-3O~a?w-P#5B4gH > zN|b}<S=<!HyeZGjm-y?!J&6{+oV>mE#(v8<RE%TP$}E}&kdR-`gJ*hT1;h6uH08B` > zC|LJ>$J;e96Xg!BXfhUVtF0PJiK~iN+rW`h*_y7Z>c@et3f8L3>02OWpie9tdsDUd > zC_>MS(<xQqd?=dfpuD#=bfBUb8&H^_JrsZKFcP}shTE+o`c4iX!owPpK#`l;G#c2q > z;dYP^E?Q(a0G>j;!Vb2b6w8s(_#u4BZ9n;k$Nk4g>5Uo1MLzV({Ji4aORi!CqT!AV > z{qGAskNGy{QR`y-o3a@;?QrVBd`|FxQLh}_K2@j?=G8KjIa%b03?$^N5yvvcmE)*j > zgQJ`1#pvm7&e?7ZE?5DZd|meu=y0CDxz0|7wD>Wxr6D#<d75>m@im<dzj8S@MXKZG > zx(b6?4#?_=x}6W(Y{`HwXQLyY;tjiM`_Z|JG6i7XL@cmtpggHy-I}WS$Rp&L$+rWG > zB?`s9f3g-3m>b5&O+~|ve4^CZ8<!c8L)mxSG`9U`&h^2B?~VO3RAnw$a(6>a0G9!U > z^GXo!^B+f*QT!IBwau^ATN|;3@tDaJ$`h-|9K&cyEjrPnY!1%MEjlMBtsJQPk1xyw > z`+v;M7t^K$?>w}WeKKs-6!No;pi3vwb-A`LFsaPmGY(Y!`p6#KK0zbOnW64f?APH0 > zJx+BGP6ZS^1<rLeB=4xhJZL`at|bc5xCv2bdC(V~*4CWT<ef6SGGy<VkdIl=Yt(AA > ze<cMjWLk-+Xkt0*WE($a^phm3{a#1g;BiT5Tz{d(M&dbIf%}Vctwx7|P06%%`mxC> > zv)bbNk8So4r!vwc&qPf@uDp6JF8uZO^4vzxgSk*@=>ilTzM|)$!VEKa*-#giQ0Bp0 > z-yw9Zb9zl|OF!0=pG73}tFW*@1Bd1j=$@NVScFrF^cfDmXqR>E<5}<6{w<=6?T|9j > zs0O?^5lMgJ*+JvXEtQunCdXSR1pa9Sl9&~Wt2xpny29#)gD-PMYo6Uy+5KBzvo8Ai > zSq2VnR1{|4KY2%8Fj_0kB5DB^Rcvl(u3LWG@JkQD<y_~aS>eI(@dItI2m8;uSMSeX > zJrjnQYO5t7**}Y_e?zLreR%!zgL;ux-V9kIlP3#9y|3f~tsR4y!&!^3E?7~yR>o9I > zT(}-8tn*5Q?ii`_lkJ+cKA9<tL!j|f$#}i7iAp)cvkTQWCYWT@3oWh&qx6e6YiCxJ > z3-V9#DR?~WJ738EePrX4p`<P<SJY_1D)f_!{&3gSe81oFt&#LXf8xoR{#Ry;1ut{7 > z$k#{Sf_aSC6b<W{FYKf!jSa=@vtmS~Fv6C!e`=r1JYyhk=CZf)@pkxZYL2!ZQ)9C! > zw+3MSuOv8l*i~Ix#j?>VyJ#Vkr+-@Ly<VSR8a)32iwmy_NT=&`7Ik>RJaTz>;2fCR > z_t}^kC#XTlp~-7y)XuWm+l`2GO=NCaq;T$^6pqNi>M~I!!BH~D45d({$0+p<$8+yQ > zTtFU|wbmk;1%SEo1@7hFE57e*jBG6TPTkD852c&Odz>Wxz#(S&B@%yJ(1U_M!X-3m > z``fa$4G-<x!1Osq+v`AzrwsMhT^)a-5H1YB4}Elxp9ld1wnA7eiW=@d9dOh}d3qjN > zlL=+<O%0ij#MNU}i&GCN7yTUDgwdod(lFMkQ#JK~h~NAl07pQ$ze$@kl&dsM&$N?A > zxlHTy6-#-QYx$FNxs_9SmtXmm-)WXBH52Qh?5G{-eA`jCUrcy}POvO+uN@Oxgj@ZB > zDMUdXaY5DWAp)>e6vDZm>ySMJI{Affalc?k+_^?giXXDMnZwU_QR@8!mO|J$a#!<i > zD*Ehv3#GS&J+uKAG~G}~1c^GPR*Hc?bc(d{aiJfTr=pGUsjo=QtNm81S0eXr7UpN} > zjw?tDM3jP4bc&3>`4p%+s~?+;+`1Bgovyd#B=#&UBApAyHZFQ+C>QQ_Z+pUIH@AQL > zWGIF#W*^p_q4m{xX|Tc;xOm)vhPvnfcLR~16es{-lKL%7fdpjeL71Zn!Mlh_LB4B2 > z1KC5~1ppgDWYplhzAxXEnBDzNffxdS6Ukz}C%}V07UF1u$1+3;lLp=apa!?KWs>Yj > zNkA!>cSI@x1eMCZy*m(dY-+&dcBs3H4?NphUw!CqdXQg%G!q+U=f<sP&`j^!{?Hbv > zdk`o=yUQg+XsJ1Byg80zNw@=l(mQ^VhRSne(#{cIYAC0yr-;d@gi{~gx?ztBOL++3 > zI~MdpxWd}Mh|;NTTq^}<j_3rC`WA?xhz?+CxIxmIS=4ZV$d&AWC!9SfK**$h|8b@* > zxWW|Rz22jW|D{GPGDKrO)?+jOr2=X@xOcvqc)RC^K4MI6DI@@)7oaCf%M=vn6m+K7 > z3EmVyfDR=|3I%{G#A-e0cRL{67N|ZFc%~HGhoJjlr=IAcD8Vm`t8cQ(7W8@hQQbtm > zd_<H!q2KFCWNTSCCbCE!9kU7{=H(WIZAU1*CP+Z|t6keQW>EvlFDO8ske^omzJCiI > zAd*TuX{GCP0_<nOq)Y)oXz|B|)2}U3{E^Z0Yf2P$zqm;G_v>FpixwG<@<;Ka6jJ{- > zPC@dJOO%ZYYHf67lA?lEwv=$ZXwg;xH>48OlS1wn%8jj9auN8eoh^)0G|rq!@t3P4 > z{*+#%xP_Fhr~hs#@wd_cR)mwRG)dTEH0neptu~3Zw~<qXC=xi8t#~WRm`!9jC9ucz > zpT~*}$M~}~<)d7zN_;`Zc&}BGT5{=b{betSy|P*D64cAr??x&bZy{Cu>z)G3GXY%O > zYtNQDTdZME{*@$&Ma!uT=hnTOcW>Xnfd>~poOp5L$B`#jzMOe;=gDzDmp+|(b?eu$ > zXV<=+d-sZ|6;Bvt`=2cZ?B)XTcZ-9@d$xf5yGJ4EEhPS2Nnot$A7QALT_NMX`I3U~ > zAA7b)LV_fuh@zr0kYME=kSuCN0;nde2*5IGtH?sA6r)gzRutP{yqOYQPy&fOlw!n= > zqyRt)%SuC{6?@44a8M}>6|fOU9aqB7w2BgxLO};hV+Sf*5}9a%an`dBsxCBPC5c-U > z;{eL??z`nYsD44ho>I2BWrC+PA?2R-pt4UsE)-OdMfuu`YQ!w-8}Ph}g7i><vrbF# > zNc<$Qrxl4LQFG7oO!~)-2v4)<9xhHKGR_qxwMw^@4lGo@Ei@riJuiJEW6q19az%k8 > zTDgae4sZF$9tk9|C`2CHi9!im#O#Q~inss(0RSebC#n!#nZUA0TTuXj8_BB(!wEu7 > zR=pkNQ=lCwcJ0-oJ161*h+(HN_M#+g3Gud>EGw$0mx@|8fdo*SC@Ptxx>sMN@Wp7~ > zrT)#A-+=x99oS%i4;C2Vg%xhNV1^%d_%DJdPB`L=D~32@iS4y`V~ji2IAo6d{n+G@ > zK`t5PlT~h+;+0``+2fe&m04t)Nq!mUly&ZT=ABvg`DUSW{+Vc=jZS)KrHfwL>87DZ > z`e~`74%*`Aeo=yz(Xgs)qI(i(haplnvS%~@ez64s{9-Cape;rrO^YbF*rYOsww_F{ > zjAbfAiU6c|jL#1Lx@YdX_x`7`fp_{#>kxD6iKU9B$ors;lt_u9#QDv9Be3hqDkZuS > z<M$-ZOF@XCRk%W6FD@cLLR*mVE?Y0F(%rlr(WRJRC9%;q`?Qt`19+!jLefa@y?pwm > zltw52Qh;8W`i1EiQr_OAC)A<$JAuGQn}T(@MhnvAtc=R4^m`KAqLl<Nr{#0bmpW^H > zbN_OM{)y3lOZbT!w~;Lb<`?f9-osp>go*KmAzQdr#n_jGEwsZ^0PEir{%5ZM8YC$O > zESwa?Rx^yi#uo7^;elpDuZu*-J1unK3t<>T8P1S~HM9r|ZJ0wH?vRH)^x+Si6P<fZ > zVH509fVpk~1j~qLE=Z^d6Yn7<Ro%l4wUPoE?!iPZ$w!N~2*OM<bRgT1f^hkX6#ELJ > zsR>yqQogFl5R1s0GMs5^@>zhnesL{Ifhh=Wl-567L8-sohZH?ZKoA0efRxOHN9g(g > zM;VYrAAdygKL6kX5NeUS({#~^W<#P9OEZcwY~fXtG*NmOsgycth(b~LRTfW_#B4dT > z4Yirj9Fst{RPspzwrE2n{BgxwETA0^($N?ziIr8dYbka}W?4$%tONug07$4s7!`*k > zHcbQwWSNj<FeJ!|JhLL2^5Ywi=nKo#CPd(}WK#aYD#Og`obut7d?-{;#+(X_>0Bp; > zDgv%a!Bd`p@mjr9^N)9x&=xO|mkMtPM2Sw6q7}91MYV%NjBb>p9rfr(C5p9Dgsm3# > zAe%u{=c170O?b6S8~hUJytl<oYvq~3Q&z{7#8Gb|Rq+t~=Hi%QPDBc<u<7Lg=+cUz > z%ET`d8EHF8N``t)#1>HqodS%KH8T8UGX}gKKc(VTPE0PSzK{!G*rq!1>GX91`Nt+4 > z=u)$VWJbSm(L@@;4mT))C6!|<%QztrFn#MI$zy8+*~Sv5um)XnvC8$bhu8$NgcDhP > z-)I86k+V)je}dU;SvhMItF&Sw@2kfzIH5YMD8O}p@hT}0a*MHGWeQt>i~<s~Jf;>l > zBV5Jby{14Srp(qLZk<R1T04=Vl&7Fk@ltLx7|_Cu&9{H4>TkcJn#r{0HQim!YzUWK > zkdBwU<u&hlpQBOqu9v;-b#Hl76DimxKmu|6g%%=^1Tq-w7f))FdVWFwfpIj^9~Qbt > z8~EcFt9-8&_v!DJl9(aLwP-<7aO8s!kbuT6ctqiakcP<;&{q9rzV(%hJvK1lf7G%~ > zQONHUhWd~BPB1DN`l<x+N24Q3Dq8kQz!aQ<6#=)&!CVN{I9XvP2*>9hztF_I_A8$< > z0HGe{snvu3YpZC<=N3`Wu$BcXo-6|r2|soPFz<27N3xTdW<+pbKH`cp0~wfrl!Ejm > zP?(^88C$j(LjV#006v3J%d;|98G?`iCAdPqUZ(LIC*Z`<z!t~yX$+K?1yFpJ27gNQ > zm0~VAtUPP^j}|e5L^9-*X>!3>)9R#$fS_S$m0D6eu860<^{apXhzkh;kbsijD98uK > zmptxjC_^9WFB}4mW=x~nv#mC@XjiS-(ylhOnVs#UO&i+R?zXm_&24ded)(l*wz)Yb > z-fwT4-0ep9y2I^mcE7va^R{=q=`C-3-}~JB#<suV4Y1VYTVXuqjln~PaD{`cEC^5c > z!&FvqhHuv4|5`ZTigWRVL!9F$Yk1^(!|ab6M&l#@?8cE(@q_zg3#Gsp*GOIRkozm* > ziUTV}mQ6wvewQ`~eechK9(1AaP`yJp`q7b|^yNfn!iH)3aULigY?4pY!kId)L)4By > zZyf+3CN#E)6ZNX|m^V)^%hf3~;isd0LKq@-aLm5T=EVK~fo@m(+_hZyw_}Ta#cX>j > z<BqD{1fH1^0g<M0*sfzQG}$Xu`r{!VdCBLd=##hn<uT9R%FitGCx1A}L5}f*ABQg< > z|6$EdFCEk`XZ5QGJ+*~nGuKCjg{$E%33*Pqb#<Qiz4!e_H~)L#51;rg1P|GFgZ8qB > zUGTKlO&FPv{N~G@@V;UD-lL*V<cBDX-QRMg&bZ|;f*<=z89(y9&r0=+@r}qQfBWG- > zcIO|9{$;Q6+r=*S>w}&8TfPX|#V%5!PbmcO?doam>QC<ePx=h-9}-WY7z$oq<3Q#` > zg!b(M`wavCO#=gN12gagJun12a0Kg(14|GDNl@SaP;lS??gT~91yeBJWUvKQ@C9oy > z25E2xP4EU`um^eY23aum7Utz%59Lr$^k8N;0#D;)F9(|sXJBq3qVV&KP~!L|3YidP > zW^eS6unD=a+EmW-EN%?D&{n2!=7i8U!tm?*B?u=%=enzy_96)&O5KX@4)HJ#tt0sK > zun+z44|zkq2GIYo@9?UxIQ|3g?oK%lkvIHk5dm-PAQ1q21N!do@SIKo@d@kXulzU) > z6LTXGnWGUqaTM7v6e*9H7K-sGunrv%5MePEWl=8pa29Rx7Jo1J2#&nAu-%M<BS?|; > zo)8U5PYkK>7?YzHd(q?^?hMm#{w9t&O3oSolQ5!eW4l}f_hh5z91j=0@f(M)7Qt~G > z$#Lj{?;a#T(BjB8Mk_-mK+gv8`LZto?SV3Mjq2tpH!P9Xv@ibpQPcKOQpjK(=dYd$ > z5E@T$0cS<fDn&y^YXR3!UAAu?GZ7*GBOMc<h~g3b7?A%Eup;}96A?1~4umr5NF+P) > zo1zRPHxecHZxdnC9(*AQPEylGV-oQ170J)oB(U-9W!ao?2X*iWe{d*m&?s?GD1(wH > zk<tg7vM85QDS%Qbsgfz9GAXUHDv$Ciosuh|QY*1?EBCDydrK-1WO)1vIFP5D6vzl= > z!WQOaG!O*4hGQy{Kmn#8L|{V0$N*&jYQf9&%U`%42+ZnW)(|U%A{d|X;6%eLw_vKW > zunfno;rzo2X9WlpfNZEyU}l95H(@L20ssIY0D=GkPV15Q3UXd<GPFQJG?OC6Ktb|y > z3fDschJq9T0FT%QoEQQDVr>c*iDsyRBhXRMH1ktDQ)29)H5H%~K$8wfGtmyvOKvka > z3+FLuX9@t|H`n4prU2t|E)KnG8^h}r%kezX6Y0b;J=wE8JBrv0gFWDB0WkzA;Lak< > z2qveGo+L3hrb_+}MLq`7o)W+nwt}?yj#o(Q77$cE5@<-CE<#i36{w_z(ySpnk~~0> > zMi7zEz-jN6Y3*80p^B;$p^3Er>_H0Fk+fXJzDfZ?%nn1gponJ0sBEqx6rw*#Ws)Y~ > zT3|AqifB>{PcEnkdM4!~bi%0aA$1O9Mv2r(XGPB}VnC;^O?re!eY9hM^i66d*a{2r > zRB`c+%_r^9J<aq?J!(DCbWPc`hOp)z5=1l+Kzr~Cp6p7)0ARYNU<@MRd%TVS6NJGI > zBhY+vGZ2IhrNFFiK?(>p*7kx?lORto;!ybVtP&Ho;))EErxk{xG9w3V{AE!aqcHEq > zbDT#a@J15?z<wY?3^qcOQZ)eNi8KOr3ld}0{=uyNGFH!m;u@2v@KjI1VpWC9R1ak% > zE|n8(t1RF$K`!mIj1^V?5A}OAr%oG@gB0^3;EHQp0U<D=Paq=+%&LG?hZJn9DU54@ > z4kH4pObO0L!w`TR{z5bg2zrR;9x;Lw#=tB{i(K1CCe)|2=7b`;m3*>-UE%UwlOSH_ > zbyMxNV5L&KSR)(9a}IUSJliy5HJ0c$wqre3hFB;-XXU~O#7<r*(v0O*un$M#=!9BC > z6m8)ngtS5~1R(#xl`3Rbr8HV*qZRT4i6Vr3&?Af3AvUp-?<SyVm4FK(g_P`JNaC-N > z9MqOJAZSbJkwT>uibX!EwpCQtk`MwxB!ZOKM<UFXeXRCkX>Ewc!;eOUMmWGmT*a2Y > z<QLpPN5aHsm1WESpyGW>feaGBDkNl2?jgwjfegCTW#!{DZ1Vo#v{GJj0ZTywVhk#P > zjQixQasP<Z%Bhm_D9N}$UZXZ!G+_+5fDC+eLR<+<IG~7ZVFL&<DpbW-Cghvsqj*Zg > zq{d(-bCPqhf}DU1A}ORaO80bA_a7qRSAKy5_~UigvB}tsl^&2Mk*yUiFe|ZFEVDN( > zxwk99(tEcTe6@FcyZ0+s(0s{Pe9QMK+1D%E_j}QIecg9{;rHFJh6@7YtxmEm{Y45& > zp<(|cY<^)AG%UZ)^{JEsCh~<MV)iP^qb>8LsrZ*82slo*AVb_h0W54{4&r+xLkS|_ > zAz%wK6~H0?P%8@dq7}R%YjR5xG_1lfM{|H8Bv@xMTn8ekVyD(hx0*+I4#ln_072r$ > zuXJk*UYJ49QhEB96qo{S)MhV?6?!t*ge#(gD~vVTMj$qTiJQk1SOO;+G<=k}FOGOd > zCT3KFLw^$BI613P$_IJ|rh!;P3T_xq5p^ptE^Gc$0_tI>`a*OWVmkpR#8l?700xa` > z!xywbAofRE<hWatt0~|ZU}oblrNABhSc0_^2nHD=f+>U?k9y#cHRLdbeC}gWIhC<P > zO;x#-T^TrpNY4DB9cE`P=)+{+$UblFKV>XNUc^HxXf9mjE|Q6jqQaGEBx#ipD<aJw > z0!3E;wxCwBsE+cejkxdEz@##4fsYRaYE#K~-N2T_Y$67v3lzjgro}yEX?6#x7TiG! > zUN;JAA#h-c%gU41<g@8|m5auMk|s$3=wXtA#MLHAE>y*rfa!`#BcKZxNxn)(8gxzO > z(=c%7LqX9nzR5{5qzw2YMAF8IF!~m>z(pGDQ)DF~h!m?dz$8H0B5?Li;;1or*_da7 > zSG)-&KtfZd4=Y@x!!ClO1Mg|Y_8wZgB3^n@Vw#*5En*XD701+iyYZE!da8?qm8trw > zuNrGsLK7y4fqr$j=9Q&3BXV#;F|49=@T!Kv^{k^%lPCJ)Ol8#8Lo4QIFNhdy_5$Mn > z?piO}Ad$*USZuU&xM!sfiwjKCDRO6rg~v<kp>;w>2}WTQ$Y2XlIHz7JuPJk)DMFL; > z#uhfCd7ekJNI?>sidnOm<>E#G<i~l)s;BJrS3m9{rQ#mC^RrZ9h4HE;+gLU40gn?d > zb>><!@cJ?kqspQS&gS)`?g512lddNQCK}YGX814a5$0Z1wWupT(FHcfx*~9ux<~_r > znBpF+im5dO8@=l_$n%u3y1m`oyx%*%-<yTR=@easKc+6s>MWX9mJEjKo-`yU*iXz} > zH<>)iWKY8lsB9wE@to+QQ&@DIWtq&31(JA76d$D@)=WOul0T6)R9fLooMg%WrbL<% > zSIFu^JthU1ZlNS@Hwsw6LY~4*Qal0gfuj?$FMj0~1dPD`fm-lm0vd%b?7<ysIhFFm > zm#nBSfjn8D04n_3L6hmm`QsojBB>IQM+W5n?12mX&cz`OJwEh3qBmP4t(=TSRfblJ > zCY;cGH;)tpDt_6LVj9=<Pnl06sXlbY21JV}@XX7jm{dj2h*m#&?9JoDjbIwq>>)!Q > zeArG=@toQxaV~u0SA8-4(lz~kEuGWTchl*&(?k8?rc%`Fchu$g)K%ToS^d*JJ=I$s > z2eldj%8Wtqs52{wG^XHxDJM1)KokB{D%?RuB;iJw0w<7wT@`0ls3M5}Nle4ShPpkX > zZ`@VC&WS0C3MwXdHB<ziPooXo6`t)yWxzcFCLvw;2Qkb}Z-QWgQmT$x3V#(N0$8DT > zx;aohvoJZqG-snz#hRBVLkf@}*L6I(ZKqu{%zf&Lh_`)U9?M)G_aFKg2^9V(7Q`)d > zE#MX8fEI`jW39}Fr$JPc<}4)9Bmvzg!ZA9AfMbmghbJ{T;(dZ33X16>lOPI;9Sc)_ > zeRe9C^lTGEQ`R_sDad3r=n&9A9!K+iG*a^~Mv6fm0wYxZ<5<{U=w}P+9j_1|!&qfB > zsAA*7lawnKyx3d5&3>w_`s~#nO@#=?zGYuc1^_1`C*6(!Q>g&|>s}u<7ZuSi(<CzQ > z>5kAY8XxoN!tu%O3|;WrF3t~s(+FQ8&98Cq?(gJL3JWn3pN^N)4xrZ35&IMHV~+bg > z(GV}O@j<b6HEqv#$*uw$6(KR9UZ3i0HxnuUAGFq@t+Cj|)S;j{_t*aSQ#tK{fB4H0 > zYiM#KC<v6FV;Mtl`E$dw13)wdEye<7-HEYZN-sE={})9@8fR$xBPUx;P7TFf8MS{m > zz+c)i`;={uVq?Q%$wT;wfBwBu{^|ezWs!y8(nucdHvq!kzk&V+{u5}>V8Mh04c>F8 > z5aK|D3?B}(_zxq)j0ZP*YzUI$M2Y_vb_|(Nqd|%vRhk_C3A1BCmLF@zq<L|rO_4ie > zCVc79B+#J|Z34|{6XQ{yCMn|N`LLi#l{Zg%q_|Y6PNYnWmh8C|Dp-_Zh04?kfT6&4 > zw%E36YfGTL1PK_X{pAtwM!gLACiH6%@Ib-;2pi6ecyHpqi~lwb{CIHW!jlgxzRVc2 > zW6h8`OZH3|wB^jCH<#{w`g7{gt4EuDjT*LU*{o^1j*a_n<=vurxAtutIPTfQYZt#w > zJh^e@$d@~B4qZ5N>CdT0?~VO;_Tbx(+jTzHCgG32mRg@2o;Ba~JK0ZHJ=(qc_TlB5 > zwoiX-^Yquj_NPr=dgsBHUv&g_2ikq8;iubR_QVDM*MsdG^h*+TC6tzc8g9s8haP?i > zVu&J+NMea5o`_<KDz2DbhAh4aV~jG+NMnsQ-iTw4JGm$$QDlK=-cD3~^;1njnt0@l > zN$SXCiBdU9Bv@t{)#QsjcH|aZZ^=d1cU67~W|(4*NoJX5hIi$eYOcv<n{K}8W}0f^ > z2jh74!HH*{RoV$)PfMc6XK`ckXwNSXx&z^Zg%+Ab5?<;FX{3@)O6jC>R*Gq+nr_Nz > zikH@eQK(l5`PGnqhKJEpDUnp9imFm-s+d!P>QSs4Mb%YEv(DPms6R%TRjDLR<yEUZ > zts2sh$_7;{Nm|8JP+Cs?!&a7Tad{zSSN`Y!9fAgG2QGKvc02BS<$fz}y5y>BF1zTi > z3vavezAJCN^xn&@aszEU;JNwY+poL-4jk~j1bch1zXjWyu)qrgj4)z%Ar#+&0^${D > zPq$%gv0}fp62(I6iEK*(q-fmnYW$^)vVM!v39-TnK8!NQ2dd0+&I;+}56^?y5(PPu > z1?t`=w)8w7!~PNEb7A%bom|iMY(X((+bSAiT!vQYD2APW4R+XKkL@+tW}l6A+Gl>M > z;yt!Vkw6lpNcDEyCtFqI76|}Bid-MnEw@h}x#FmggK6@r+KO|y&@FHyL5f9nBSE!6 > ztxNz!;2#yl$pl?9v`GR25jEE)1C;^)fGvR`zR(r`Bmlq`^+dT*&y)0>(JxadkOV6U > zZ6QGtl`kdG?n$)rYU!t^zPddKxxV)l6Bb0u7PDTtmMw2(iS46{e-D26;(y5Y_~xIF > z{^I3leDOcFY|@H9w)EaJ{QlgcKr1!<Qi>FXPC<sm*zXof(4Tk;1G1ipOlRq9An4+U > zKUVaN6cC)kD0=3K1hB(U2CRu2IFSUFd@Ok4iCfR4fPg~P?iXCRpzgNNo>FK*WK$5s > z{gfa<{zaisT!7(6ZehV2c5p8y`~?bCxR)08Yzi|R%oHTJ5keWt7Kp;yqPT_@2WoMP > zT;x>wx(LQFiZM(sYQ+}dMvCD7A!HM9lfr}s0=EQgp@VP>fb>{Z6fS6DAq(Mx>7bR7 > z39zFe^V>-u|7aDHOd$aZ;6m3bWQ#>2p&-x$0P+qZ0g5C+b^l;v0{l0aO~UPSqr4+m > z&h!+Dh-xFL^p#p%nUGe7<SEO#6{#9>4?XfRBW2LUKW@Q+Q54H7_aK~FBtVJ?JcW?K > ztA{H#Fv)*x0SK_W<Ue%z4>x>nm4ReOsT5ETf84_jQ8?Wm-B!-pWdxiVaf1{{A`n}s > z@tM(_W;GFlO*ceyAVBj+Q~rTHYH2A#2kDa68fLJEAyjD*YpBc~>M(~!6ru^0XhkW? > zP>jY*T@BLcLN|KRiHbD;q$JJgNKIN&kfL;@DsAaUUn(3I*+L0zAVn1FAq7(CupYli > zX3x0LM0eDpAnhPSp|+p}K^5kSK$$}PiuDU6*n$*B6&+`E*M|L3;ikXXLdbq`k53wv > zJyH<bQeEf@DfEmJTqT8C4JFnG6^0Wt`~{-!WYGiW)ujrh*<*AE#lqa96-pTDFP6Xx > zO-R6KDf@*hLPjJljDmo^Fi(ZXun97Ru4-k)*c8SfKPi9~Gq*@WLGVJrp%%1IVb$p- > ze5V)!9?ei8Bu^4Bt68g3rn5^0Z6rtQG$kO>ARV2egdj8_MrCVXV{EQ-pUb2#LU+2< > zt!{^0<O&7YqZN_=@P`!0a1RN1b0C|%MH!I5iqS>H6=Xm{Mz)ZI;7Q?~2`R+{RQZqo > z2?STMRDdnc_zxi9jUfdoMJ5jdU-`cC9Sfj`IJG&L0F+`WQZV3PyPM0C-9rK6t&l)| > z0f17dvJA&doOR7);F<iR6$;?neieX(TG)dOpCgOgCb<xht&=8A$)6N9>E47K?;>0P > z00IEu#+|g{zy-<W9$kUC(@H@C0GPt;)OimoJXrz){)jz%3}l83c_2kTa*_j6Tkl~> > zdjsuW*-i}SILmoQbFQ<U=Zsw?@Nb4&AjK^LkN_maEdf_9LmLfy4=qTchY3I$d4TrD > z!MGy|k<N?%0t{=95CUdBPpkAsULl0ae(bBa(5+)~I+%MzpdO|5#V-SZ06{m3r}s!< > zMcQ!aKixS->zSXYe;LH6BAU>LaV%tiSy=fc!PP%p_LS$MLcEmKi7sq~sTng<PQ!Nt > z2?Xr@km_hwZb1oiO!G!s{cO>3jJLY0wr=r4=_tl>iq}fi)*7YeUF&<_U6d}r{|#`p > zN$Vd_wnZBv@sFHtc)YaBNPEQ@On&ZDB@c0h1bj!4?0WM_4`Im!E=cgtsW>6og)Or- > zd}UWe^A|usNU9S4)PZb*6xAyT{s!5QTl@kEs+#e{1CAq$`|h8=oMbMAS(ui`GD<i0 > z=RZjQ(c%OE8VNDi$(QZni$W>=D-~`s2SgD{3&T^pRzXM`%6X3kT$$xB*{?(r$jXCg > zH|s1%NI|-u5f1#ZLLID-KWH-WkyMM#*D7eX@WQXX!c_5nWxV4(+IYx6{-k`Jd`cIu > zQRY$}^P7)+=Pl1t&R^d1qX&KEC6D^fXGnf}CPh;F{0mO3dLU0FMJ*7h?(g1jk*fMd > z$xJTT1Wb=ezes?s2T}^{8gXue2{gs#0(|mJfohJ6K+nR86KPlaZEnPv?5~XI<Lkxt > zxUZVaOfUM-lOCmx75-ls+ts(aV%0r8HvW*%kG~|avI&u`c_@oC@0M^K_E`nd3J9?O > zc6qS`hBXj(H9zqaRb)U^J2VjY=M<_lKdR*s0Eia?cxJi-S|5XegYj75hIoB}HT8By > z`1WQ%=YlVYHvR^KGf0Dwk`@Li1qLSxofJ9$FbWZX1X3VO#WZC}@I(VaI1x}`>9m1V > zwl{&cPOk$5v9=KRFabDb5NVVIM#T}gaD`Rqgs+nX<8cp;lK?c8PCF+~dr@I2;W-d7 > z3K9?mLO2-vWDsv7Ukq1+FtTB<^EyV?3Kk+qv-1!(HHZe`g?0!%nS%hFG!dX=7EQ)Z > zg;8ThbV<2nWJnf$x8eqpU=jxyH>y>JQV;<~m|VZ~g%2@U7Lo+6uoRLQPL%ln7ZtW& > zWu}Q7kxO7FZ%bz_Z02UfwTHndjFKXQ!)T1h7+rV;9tFZ7Bcm@0u|NURC)0>C`+<yr > z!i*wfS(HIEO0^MFa5B+|9ysF|HnTq#!wNg-5mIDD_QoimBM`-Sjq^y4EFzEfh>!Uw > zB7tWl&H^kDF)Po~5wG%3K=E=#LUd9R7RXW)%LI^OVN3dGEW1Kr5E&)-^(4RYBninY > z!z4Jmf=97rN)^c!0XZxo*>E5EkM0vP8QBp5HF(<-7l!v8>34dcmwKg_lj?_l>vxkn > ziIYJIltU>m9VL`JxsyMMlt-zQO=*))>61{|lT!(d3Db=?(=wzXA27rJKA6#!_p&ln > z$&^x=c`xG|TX~k=*gksIAuyAbUzwH6#c9ZeTohs<`6iKhsh1&gk9+Btf7ybDWF{NQ > zCb|ZgZPJk_VwhuLm=u{Lh7*|CBa>S~lYx1dmx-BpnVFjjn0?tMaLJip0-ERNCZm}r > z?3gu*a&I*TP@(CXhv}KGDVsAWkF}JN3JH?GGLc?Ek*CBgv)MMh>5(LPn>`^*D~X%Q > zX)FwxB+Igx74a2Gf)&HWkJ;0Uzj%UU8I{{9mPF~4+?kYQsh!=ql-_A4i5H&WIiBfB > zp5NJ?;%T1h8K3VdF%QKtPM0+KNsVtwE^f&t@L8S#>YmG36kN&wKnjAD;ux0a_>3Cj > z7taZn1(KbCk%I1sMV1Mi8G4Mdsi7UZYaCh;npK=Dl9(PkCOp<~F4+^@<RLFHKbyFm > zS0OvOLMyr%7Pb-|E;?rF1V=RilZ5Asl?jX{N~C)TqD6|N({-eQp+t)FHl{h7U{wZ6 > zaBO%%W1r+t9K!`c5GZd00D)tr79s`Awt)%YLZl#mQ}af;0|3;NgJ98TsYV7$@NTWp > zrU3u|E_4ruc5Hu>1OY%zMph_qV<CuCJ3!=aNTjAt)TW;_TmL`?Q;?FV*^Vm+kFA-c > znHq3Qs;QmIMK}1HHQI$_;7c0Po5(qxxrv+tDUhjpEC$j44xr?zAi+O0b`m-^W2KrA > zGbLOe`GAE{3IovwN^lS&s!sP;5K)#B8R<vwMPCDU5v}k}B2x;sY7nlVj>K23cGwff > zS_UU$4^n_gQ^EmzBu|lsD~I%6$94~Kx^zE!okA*?@+qJII-u)`uk*>C`<k!yO0OVg > zl=|AQ_bRXj>#y{Qu>5MU1beWjp&K9=1)ro^_MioVmV-zGGI0}vJ=8P$g<xXJfba!7 > z2rvp^>Znp91r}R%kO5Xd_DK+=1mUE8U?s9raC>+m0qtN<DzpWH27l7zvsp@~Vt8#0 > zJFxbOv@cVFgFy<LfI&@!Y=Ovsx1u`|_!p&MJuCMAtb36J5x^F3BM^E6JLG^dRNz9T > zV142t1vwNLOAD+`^b*Fljgnytl0c^3m$iBESx;kDT@`2mK(>WpwjKLb2=rDpNuhKp > zA$GZ3m^!PED`%Vvxsw|{plXFk&<iuxHB<FoNmWb;U_eNxNBMPM8Q}^Vwgm|H54eU& > zzO$$4L<(I)2J~eMSLQ6UyQ>p&bcED3Tp+3Pvvx_4Q_e$X?=&^^#RbOeRUENoCYGtT > zV28JWUb$p)Q&0w12PzZ53S%HV2qC@c#RV`r5elFQW55ONC1w`J1)}hGTVSXjAy26a > zy(V#9Q6M)I@e6jqtzHImacf||mJoUeUmg+v1+bNi;<N?27)m(tqmwz4bJ4hxOSuy) > za1?C8&gCNB23I`gG*e|-?S?cM(?je)Xd7V*oPYp7<w8gJ3;Cl!Nx)NS)DBM9Gh4tr > zyaPi$m9uz}r6u?aGY6~+FvB9#T6|GjGHVYhgg=<3ZXq|p7~{4y+eTU1KQ}bBd!YbP > zzz(;Nyw~SdSXvXM^)_DH#L`B90DuHvs)2)}1o#QXRq6^7<Ty|(w;JQN{G<c{FgKPp > z1xOGH31C2a5ngx0rbrL~NuYt+w~G@&Z;7Hc@2Hs<EXnC3!INysn*yr9G!CbQ1heA{ > z^R)#JXN7u5W{rZ#A|nY>5X#Y{PyPV^WfOuwnG;_;R~T*u1X4iCA>md?)?qLlUTa4R > zeXIp*x^;vEPNxL~&NPX2M|))Fyc&ut#bk$E0Ip;ZGG3Tm5@5UMCP>IE5Y$|(<%FUe > zCQoX$bpsIvPjwG^M|(fV6&7a}P4_I)TZQwxIS$cF4L3EqdK4TmNp3|Gc(=}f)C&7_ > zcQffV(-M;e1;JLMutvMENt>`o`>zuH&<u;w)`*@IJ<$<e(I4H>5G~Rf4btiPu)&tZ > zJXL_cr)fd-7hHe<?BEJYAZk;v3K*nrX(b6;u%`JF8xtge@G(KhR|ZbCwM?sS*ryPs > zRSW%KC<vHZQZs_cmZjM^(iYAC(cu}zrgeP?*aj971X35%4)S43H8&k-4;-k}8@Oyd > z1#Oa%Q=S!q{}2JW+<#pC7kA8!t}xYgOrbRK3sk^-eUU-g2W&2sQwtQ=y@fPdEEzk* > z9#^Bdk9?s+ddZi4K9!8wn{9)oG65Ktx`A{-wg64yq;j?J5TbidT!3~TCqF$~5G|w= > zulsi^R;&gzKjvW%6vR)abrBMf&Z<}nxb5347o8cw1sKNKWCq$ySaKA63wGe!8G%gg > z+;-aBg)n9kt-Pm>Vuc`QOjtIF0mcyNOl0gU&GyidRv3NJZCY|MN2qvCz3p@_hJ`ja > z0cLd&T%fzj3n~eWgmxJJRq8v0DyQDPy^gQci<H^W7|PiXZZ?_?;S;_l8O%fxy9KKA > z3+)g$$mBnGF{O6%Q#m}yAHzEnfVLQf0MsPB2yvxyQ(*Iz0Om~|OU8<Q2h$>B<7cQp > zVAaG9;z$YLv`!P`jD^(k1;9w^w?Tl$>ShlUK&LkQ5(MPNRQeLb>Znc=JQ5qm%jPuK > zhH6W-;&HRG<tRfUqc=&=<b`5jg*q5%zUG6W1Zf)>$z~93F68*R7vP9A;>s7*E#}mO > zLufwOEx0I-teTKK5)w|~jZP+v?&y*JC7B#?Dk&-%Ssn{H+Z*6b4-w`u>XHKaL%pQu > ztzsy|^c5Icc6=iL>LY@qiiwhELM+-?k@%&N4{7U6hw5B0ElU>|38^f<P{1gfkm@uQ > znZ7CpSr&WIks_3kr7#698IKA+P=(jvRaw$mt?eEi(j?vOSk3Jh%`E|Y)!82I+g|S9 > zZtm$W?(6<8C(Q~8cr$3}m6Ui%?H~a|)S%?(KAWVUjWsXQ*zQzmpz6L?{5kIjs*Kdg > z9!7LD3BT|A`67lQtAJ5l6}q^}70Hs$@txiAA5SSRvd)3kqC4>*MHt^G60SR1C4Pe> > zeyO6wxh9agA&-fiJUXHt(!gyduZ|1yKYyA)FZ6hl!3(dJ5<m1wpWrLe$X2wP8?W?H > z-z1PO^;J**K4mAIDmg31>FdM^q0kEUw#kqja*#Q%oUwi)v+gEp|LSQ!ocBCSyZ$1s > zYMVI9qQhCDU*GG%sL<8^zy_r)126dK?(Ktr?uXCrgb(iaqIrm4_=@lDi~snJFZq?f > zoy8@g01xp5%K1p2pY;AMP<l~UiF%|D`TPDa0*|1dulfH@nhToxW*PBEua=RGf|G5j > zP;d3SKO<Dn`@cUZ!xZyt^30u5{OB`sDbn`ovG>1%qsLFl)b7B)*!aM2{k?zv*)Jpf > z@-c74RQ@^pqPn72VKOFSjWZ)6ECg~j5>>EM=wE&}W77Tr@c!uEmYp9WJk#)V5&s(k > z5WhD6+4}dZ;6H>36)r?*km19F4HG(q7}27^U-lA^s#wt87JC#G0#F#zo~@H9QD*#= > zBuPSh|44SES<~iCoH=#w<k{2bPoP1C4kcRD=uxCeiOy8o)ag^GQKe3$TGi@RtO!Z^ > zV`%H;zYU|f{u}!*Cd0C2@6jx4Ps-VZX<@!4yKoCZm^jxm+$15vma?s+Bv8PyqhP|L > z7H(1ybnUM)n#xKY`|I8o#U%ye%?h#d<;)MuZj$nqCa2Oc698D907%SVgOjk5%TO=? > z38A-?1{~M-Ed`nomU)dZ<iLbmSOeJ7F5%vVYo(Am`-_u=m(^vLDLYt6tJ)7YC4ejc > z8@z9XTy1UHgwX5R<F>{sUkx%LDf=a5E{xgEmj71%L&>ZJ5?F{NktTX5L5Ub*&?1E% > zlyE@`9jtJn2`$tR!wVzqP{9p73=u>QM{KY}6h%ytL={_P@x>Eej1fi%Y0PlN8FQ>r > z#~Wqb@y8x*{E){F5gZc8BZDN;L?oG1vPm4F^zlh5leE&wE2FFuOD?s{a>_4->=Mi| > z#q_dFrW)d^l_>oAWeVEjGRPk{)6-GK2fbp;AU$<@ur9LdY{->1f8heKUtCFmoqz6W > z<;6r7HS5ua1WUq~%1W%0PSI}RLW?>n5-C(6F^X$4^xh;zPzpzNNYG7LJ@L=~h+v%& > zqbbDt)6IL@;N&G*4e~V!Sqs`^3^%6$^%f=KTu@O)?RoT<QlxP6P*f*U0E&KM1E4w# > zsnB(|Y$L3eR5v&&6roMPV-~zOk!99dJYB&K(>IrGmcm=a^~Wnp7xecRavPdr)dY=f > zNG1PHaxSDK3>>L5iYvDGVvIA^cw>yy<oIKdLl${tl1oO)V=W5g;-z~i&_s(Mq;T#Y > z37q?f(1xUt0EjIDhDhfidNymY0Dwq<<y)rM**<&xD%vH4reF;Sp9M48u!rv9Lb!X% > zkfPDZ{JF;!NgCy1ld;N0NNdHQb8iAt5~!!5dlZ;^>?j)Df)(W?U<IN7t+^_L<%72X > z;=ANr8zZJDD2=HV2`<C$@W0VY=oSt_`)F!PC08zjzw5pm=YP2P`kykis7SEENGVNh > zyAdM&ADwv)_@2zwR%mR~IvN{^wCfTqrh66`J#UD#Zf~uzB5Tx@)3e^T9(%u{kLtCz > zMu^RtCSY`TSAbV&th4_CZuIDrKbX8mV;?*Hg<Ro66n~T`g{#e7>s<SPxWAlOhIp($ > zwg?b_2BZ;*CB$PUV_*Xv_&^9o5Go6lU<ECBK@4WlWK4Ne6zb8zWO?uxWGIvZYT>3* > z6zWrMas@&7<PHH9WQD&7&_QgW1Ug})6|^B(Z~k#Z6-nWH)Ivi4w8&r_0r{sO_eel1 > zYLNsNYJ?QA;bF5hA%VN7?H5a6#TD;zkS&mcS)BS|J^s@WC7h62g_=SV*kLFYZlQll > zaA6zY$b~{tAq(|L8mP`jFi>^zO;EUFo4PWQTxClNhIx}4306WirjS<&@DCI#Vv7K{ > zf)jFEWJ~ISLKT84Q7$Y<BD<o*K>?5^iHZWa3?egx+(HOB3}3NgX+;T4A&MJ$6AvE( > zoH2|dnB*~)6v)vKDj>@ii?rqClz^!S5h`0$^apVI!NPS}D2!vQCJtGcfMzCb43cQ& > ziHvD5WlBLT5@FwgG~+Oo#M2}#>D_)bcu#!hQ=j`(3I+N9`A>ibRG|3WO8eNs6*mB{ > zW#iz=FMv>wx*hZ%Zh(TD%zy+|Fb^SHNJ42OfV?swp%rU^i@mr49j>@yaAR?YwE&e6 > zDNyPb6QG}6l7JlvL=SR}L!=Y{K$qf)^d2M>P5Y2gi=lo+FlLF}KRAk=)I<~^Zioa| > zHZTtNh_4HpXay9BM*)VK4+zy<06n;Ji`SH53-_1+@HQbvu$~ooAL-~#qldfDC?uva > zxy4np3cK&QL6wk8!g-upS1IHTa?%pcA|sko;Qb<@88ypuGFMr;dNh5msORn!Qp=c( > zMNcPnnLk`Hfw9`jPIWt~J;-1hDfpBwmaCg!qF{^v;=uGgxB~zJ05FBQF$6lUn8HaF > z;uU|uWla*e8x<sTTJgP<csOg?C-320)1o$bc5(#=kWiWd>2<dp=<QE!mJlVl0xnvq > zta1L~9|JawKnXO6$F_7P{E{iZX3}qe`TO4`?Ki;w9Wa2UWZ?S}_`n5b@PZwjU<8M$ > z!L+ikgdc2S2u~Qp8!nTEJAB~}XBfl+9<hQ&d}0oh7{wvp51*9K3v4D!SN}l38`J0} > zHZ^ZBQaItP65_Q4#B?lfPy(PVqlGANVP$9Gtc8S#Mta#u2@y~ToZLjNUnl@xObl*< > ze$lK+hUCV#xKyShbYmK_aTRW|2Le8bM<h`Hk}Pjpvt<xq4{jQSk~dst&1%+5H{IgS > zMJ?s3JS2ru;Hu7T{-6nQY{-Hr0eNOl$PK9lD)zKQjX569j(c2ao3L^+qMC>_BSZ#J > zHRLi%=vg^y^kp70F(gx{^9mvIWnV}EB<+0VF$*%VR<si$uJER)q$w&}MB%(2VRb7a > z04{|vOFm?lk6E_R>}NxyUr?xr*NjX%Mgm)Is+Jk4?aMHEvIJ@q8)&=T{cd=R%%Ab5 > zcfIX>@1iip9SSh(&5+Qj39Qo=3gtIf+E7n>kmBDEflI<oV=uUXCaaCQnFK<+5S{{D > z6gJ^XDK?M<!-%dSspUdu9BPkpv8^HhFDZor;+%j095s3FYXc<27I3+WtqVY?#qb(M > zfwtX(;K4<!J?v2!GHl_sH_wdFxBJpxT-Ln^5ptu%6-$EC10e^mEGZ@ca#U&56$-dT > z8>%{;x|y|C2v_)6FsHeNOvVnTSuaEE@NfK?PwLU(^unG~@|D|ytzC|;a1~$=U&I6m > z5z08*8d_N09X+@TxqDu0ApwqLtMB*7NM&0du>i!p7Hiuc@*W~T$<PdI1!>$#OFkCJ > zue|Q|%u9R;c)$X=6W_b%eeZqWk$L}K_`@guKRKxDY9=;>-I{{6VuLJV7m5?3r=hSH > zatl(7zJEzL3z<)t!+qJJjczah>_ZlLA33{r_6>0dx1}9vGT@l|G_?3HT(|y$xZ>IN > zKON`ISLR!j0_c;pWZ@xOASP_-p^%sW9@2<e(}IwQtq@`dB6B_lbQ4=Z0Ns%xP(c;U > zGZ+KBv*+`N3dFz&;G;CE2+q1Rf540pj6OG+zJdt0>X@O5zz9>j!Tf_XD65PX`k~k} > z9|dr;LD@goaT6uri0Z??Jd?FzVx&Z>zR6n<DR34XgtT9{g(&!*N+Af&GOR2cG>h;G > zd})PS07AoJh@{b#`!kgfETwhosxBjx*-I0Xkf(Hm7`mgq;_E{{{KE?hK0q8qLM+6K > zDJa$pvXDXumx+QT*n;5y8n^_|rK-A_D2RXrsF~;R4ZLwg3GlVyK!BsMhkFpZAZvw% > z8;%08B;A4w*U7~8n7X<E4TEcwQcQv<n8fpP9p*SMw`mAc$i@7?tfp!&iu)lXNP;PF > z1)KYY3BW4zi7YY@j)EvGXM{$yaub0l5Hh$M;xHoxC>v*7r)-o(wa~(K)2*@atAbd# > zyHmzw(>t+PyG{J8!)t{|_y<Ygh=GI0e6&PNlmIR)#a!G&)gprcPyhf(N6&Jtgj~qz > zlB%=lssu={i2J(a0!CpZx+uuS4d6n<`=o+MEp<c)^75@W?1(Zjy?;PRg-ik@z%vB^ > z0^d3sgNv9XP_O6z__|{x#^5@*Ak#_Js*6|PpML;3@gg6Z#0^kX9{%9N%7U-klP?5v > zrxjDN6f?1`j4&4KO04ustprQ1{7SM6%d#9xvrJ30Y_YBMu(NbawS>#HluNoSvAML% > zy1dG`#7n-^%e(Z;3fl=%+mIU>Og}NOsVL09#EB>A3B%k=!)(kWxwRB~OsSxijv%!# > zvP{7=6U+>?4>5?Psu6|ph<Iw4GlG}|VlP8%P1k(Qs}MxkoK4!S&7F`<2iicTXouEV > z4$gQf%V`ST(aoM9PTS;|kBABUlb{H!2myMpsk}Yq%sqBHPV2l*?0g8^%uep?PC(pF > z?+j1zY`4$<w8M-L5S5rGhJ?!TY)|*>J@9-_`JB&vicg(b&ItO&n`n!NSU>;lPXJ|z > z{}j*wbxr;3$qZ_^ydXVUgpT!t4hXGB1eMUBP|%4{P^l~++@mk3^vk?#%f19r4-HYV > z{Lm65(YHiV$P`f)Jy8lv(GiW&7KPCnT~QaU(Z#$`9i`D7wNV-^&CkpU&g4tV?9s6t > zQW-T;6Xj7R_0g*cQWA;GD4kLtyAvw?k(!WF!c>rRJIy?#C*7k@F&)!@vQIKSQ#2(R > zGbKdhOjCTrPo98NjgeEEcuw03km+1a_H<J|?bDH2Q$Gz<L6r(XolF`T)cJ(cG#yg& > zOwTX>O~;rhR79OrN)-x8tyE0SRGdIWV=R{qB!gI#uB_n+wIGU84bHfeP?SQCifB_! > zwTS~g(D0}US8WS`@eB&xM0;4ATt(FbjW|`6P~H4hdni9b`-QS0P&*Y64b4-l#L*>n > z(j0BlX_eM!tyXNkR&7<$Y~@zDEKO_mR&h;IYTZ_H4cBw+)^s&jXdTxgxroZ3G|DuT > zR6~&o@iN4m)fgEypP&dJa#tk<*m4zE1ycwzkTh_i$RvorBSQiOC<PZevLtv|;EWIj > z5QA>vgl}0GNW=(rf@;%2Ef@ugAOi&;790fG00;tPK?pKXzF<iL0H|4-{GfaP > zXrlx`8?{-(Z|bs-=(3Lu*^w=SDVPx;MK^~ri<Z#SOMO+Sjat@}TB@zuoA4NY9m=7! > z1*6Q`yvVztFfOh@6;JgEjglRUGe)abidG;4;1Mmz^M^-q%BHEDtSKM2uv;~BIkA}n > zk~~|pX^)S9AK}WuwI~I*9gBN#gRi-`?MYmm09CMoShomOhUhN(8M}crM!MaCvRMns > z(axv5(+v&NwLM+b-P6=v-B;zHDHwxXq$7{us33D8N0AMLnI9B-i;SRMDYzzs;HUuT > zEt7Svh~cq7D~%x2z6H6A<2|7!EVraNUfZ=e!y%@_+F4bj-B`Q@qCo(op;OlX71A91 > z1u7tg5Bi@R5{#ZD794Y_Uy?L48jM*x8UXOMH_?^8yR|7u!~9d(f>5ipxWWzeS1Ita > zO%SDD%9VO}!`QH2{EfmKBj5mfC-i*OdV1RN-C+6DU=IFZ@gxc2@h*s3x*u8<tx47| > zM2O4?n^Ks7NaTp2s>C*ET!9pu!MTNdC<Op2gJeA;%W<t(JR_C+Kl34jNgxX#Zi(|d > zi!ErS!8IFexeT3>09OU!<oT?(1vqvXgGZbh=E6EMijJmox}hYV;1~riAOn)5I+@}C > z$>=M~WmTFXp5rRK!I6R_TrbcXRq<koQV>X1MTl46fCNUkf5<q@kqle^m;lRd3ANo1 > z3}sgIoG&gN*mWgXb#2#7?qp8><bd_$P;S?$W!F(YWlRR;R7PcVRpnM@<xRd(*VPq9 > zlL+hsCsi4>Ly4QY$rM`%#w*j6gF(W8ksJHdGT)Gdl*JBFDupJB5H{%+E<hG)LFS2I > zqA5BEO~W5I0}eHEK-ux8EOq5rUS)HJ%<@%$Ewn#20*Pf3LsyvskboXBbPzg<g16u` > z+KFJ0UEU4Mvr^+hX~8pP@j)KE!5nmt0$CM#HJ>R!fQUISm>MFf3E5A3rFJkk3{l#Z > z&_mP3Vvy!j4-RRPuFZmKnRWUFBoI8>(Y3^-8AdtVE=Yn1pqlRgaA}2V1K=6Exv_;I > zi~v#OK7=3zzlEiaa2+6kCC-Ziq=I3JLu#cyIXl_6$pZpg;OT~n$(Vq+k_L)_Q``ku > zvvwp!@6DxJ8lPG8UMc9`!sEolBbPQ#<o(GER8*Uknt<86yU7r(!u#ruI4S25&@GS* > zt-Tp80G|89xXLNwy55UlVCo9i57Kqk>g;OEp3jlKY|Z{oL<+%K;~~zHu~FLsB%lX3 > zP=Fk=vPgMfO=u1@`m|Yz8{)LTY(t%%p+->&#*jEb<+_CcP@@c#N#GW0AcUsPX3WqA > z!AVNrIXjnyfs0q67Wh@eOEDvGhAAl2m3!F2j$jt!9+ZRs9u!_HUnIhiVK$XH(?2GR > zLNL>-?B<nqULxYI>^pQ+_1weEK5qRMzWm;A|K2^OxQ7j>#4Sh!ru(4{0G?Y&sJRgc > zn9T&S;Q~oux_=>UHz9#g-HVXwhwT9yN=fdlAqATWADGCgRyYeXuo+Y=2&t|M`Kc<c > z$w%C&Do;sP0+HzdR>6N`GVviH_1NkK;6jZ^Me}hE%^l?S>9WPMlbDJn4xpd0$t|>A > zn+cfP<Dxq*c$Ar<#=mNd1laM*fg70M0_VUS)02ztO1*@dj3#fCCl?!6c#XXnt-M%P > z+oNm+(qvOU=W>2!KHqac5A;4CbU?>ea3yp-PjpfL{&Phq=R$w<Mu+7>H<EnGMNM!a > z-h4z-NZXdg$s@AAm(_?z$@DPVKUYA2ID5p9==7tBzy86gs)LAjz>WxrbwimygqZc? > zJ&)^l2)f!?&fs3o0Bk^$zp%eA=X61b^hG~*B4wA>h_i`|7)ij3xIuzHn+PRHpJ2PG > zcJPH(QGzohkoBs<gxG|B4#Hc*4}}<yAUGQKA*`MK1+GwccCU_(x(G{hh*^)bXuqUQ > zI3k2dNpN!rayObFBp4-p)`juXrB%(3&T)r#&HjFPi65u{7xODlRar#qoIS7Uuuwvy > z3CA^`z@GTdD3`heTbl^^oX|}=t-=E((ES98i-*%v|CoaHTUHIlQ%kOFlJEIGjCh|9 > zdJS^jC{xr21G8V4^^8UeK7pc(2MVLV?5OXIsn40;jFKWXiXoj6w^;SaHjeW|&6H5L > z3>JE`=kK#md)_<gxcUi}caPZm;z$l#fQ!8WtqAdbO0|~?Sw-@nc+f}&d<Hc}k5?{M > zy?c`nRy)4X+M{Huq|So~Oh!+3M5laYcl1b~e9X7}%>Vk!m-NoB{LLSI(C2*9C;e1D > z^eV+KE!DxMX#M-zdem3;(=YuiEea9C6R2OML%sbAiG9z!<Ot#D`)>HXKYofwe&u(! > zk$!ro5ZmQ%H|Kwf=_l2t7~Sa9`Ksjk=<j}l|MGtD&nF71dL$wLp)mjO2O0Fg38P>C > z-A{@}#lx}pX!ip8^uPbAuz&pD{|S02fbjQkpg@8H4<bzX@7}?J3J=<QDAA!qh7t{8 > z{8#az#fu0Xdi2;aB*~H{Pohkz5@ke%BUi$l_;8~~kPQ#MRA{p%PL3yYE}ZFeU`vfR > z2Lk<gG^op^2qOYW7_pr#s;#QpifAuEf`n0jJp`*zY(laK%^pNMQ0+gqZo|SI8@KG- > zvvt$nU7NS<-nVl9(gkc+FkZrX4f93pH!$PDjSD|M969mi#f~pS#w=MgWzLo}gZ|og > zv|`egO?yTSdh_betv|Dl?OHbM*|uxr|5i;~_if&}O9MY0JoWI`UiU)u_^W7JDGCCt > z+6kC#!lZ+9{<4*X9NF$Cy(4xk79?3;JI(q7>oz?XG2~0uHX7D>fKlnwZY6j5yhQ9P > z(f*>ubM{fk7g+wJXVG}zWkeT)1rB!KS=w=Dpi(4lVoO@sF$Z8>79m)mcjFzkTmq!1 > z*I9b@Xwec{qOE05R#?f{&Oi42l0;VsMHQ2eKLQz~kV6t#q>)D=nWU0SGTCHGJvtes > zlv7e!rIlA=nWdIYLdla-K-nWjL=|yiACLkuWX}{u3Dl-kVvZ$AOK8e>k#quaq5u+G > zX!VaP69ACFC?T~XL7=20w21=J|9zPdMGJAE38N-W+8{?9n0eMF_Dp)`kB{n<&@Ehy > zQ|UllOn?MPg#vNnT2dsCL@Ufy=SrXe0I<bD&dEw^M_X+&P#HiJ^@}D&ZE>p>^^_z9 > z83)<oTo8ON6m0@PY*CQ4NFaKnQ@2RVMN8Xu%ci&gY!R%VNocs%B<-TBtc?SWLajnw > zdTSL{S82u7aa#f$u)qToT(H3hCy6h@3p3oX!w*9ou}S#eGSIwW`NFI_Arkb<J+%-O > ztuGh1H3flu(Wsoo8u|jQ66R?nRy(yY+m<`Fy!?-b*?9yqynkuiRw+^R^9vWj{^Cj! > z>@3&HMM)#Tv^`F%*NPNL|G*rVgclAp>dCT6w47WXj%{*5ut}IUgDY+Q)-PtO>;@-E > zob5`~O_%K6ElRY)=r5&cLEaQ&_yexfVRMxptT^giR+;Hd5x8=IJ48y~dlP7R;R=wF > z-WE>ZqCnr`S^f{W1b$w40;5BA3l;WhM|I<8J^ps!>P^AQPF><y<BT%)o?{aKN?g40 > z$0MJ-@<J-Syz|dPAHDPfN9E8Ih9Uq28TV|#iWUGUz|KMv%&YW5QUDM@pg<IKkI4za > zn#30KN_9{av37r>1OX&~ME?STOHVDj5unu9zkzJvR;^%&Ku9441Vlhx5+Q>oge3`K > zNlIstFx}&b(i4Mt|E(ZJv4;d&p#)kzMFHg-9=f~-zQc7PgKc18_qGrK(H&$92|xfD > zA|i#uO+`#K1OWLySSR-lDu)WpAuEzq#CsIcPf-{M1%;(64;rKuQ-GBN=?2B}N#Rur > zkRSc-fvJmh<R0cj)6oioCJEF-Ag&1GMci;K5W-O)Zn$7mY$1Up)Wa29P!;!rkN^P8 > zY9JiQpd09h6eHeZ0^<7;8Te?FTa+P#@`;pDfP$t<y75#Mq!U73u}FVNp$skALaPwj > zl2iV}4XQ%QEh6C$T191q|DcM#sM4<;@daPM5e_klQ%vI&XE(|0%`%5+%x5C=n97tU > zGpXs!XhL(E|JkhOHm|A8)(k|Lz8PmT$!Se<b`zc0T<162$xU{?)1BUoCq3tBPj$+3 > zoKX6k6bi>T$RUAgb4!m9YLOmSM4=$AP{LT?))r1k?q-l_*)Jd}5O;uVAPYTAJ4k_} > zEl6%%b>fQ@CJ8n1+2dKUxrgYqV+(<71yP&OU4U4j2?=BfG&Q~H7G4ULEsSDsSsRNI > z4El>!B=l_oHCj@+kgZm*3vy9l8Y!BZg?iY|A6q~X7ZOUrw=IpSXA6tjyd#Bj#B2&v > z{Y6#NqX45K^**a}=|yf4gf@@?kWxUA5@>PIrrypKMlD&lUW3rHDZ!>V)zIF0v7!Ww > zRWEFf|3DNbzzOsGA_17aMFLRRH6@H;6J!`gXZ2FjwNQa@(IT8j_QtWb+yklxg{^GK > zBL&?_raQ5fm2GkBnp+G`3JH}DSWerP)cRw!XA2YK^dd~)(I_j+5gzfTXWi>!H@n(h > zN%OYr-S2`oyvM7aC>OHTg-jrcw;*Kr{GrAvGQ<@U7!yJ^APNL6qzp)4#Ync0gg**5 > zze%VC1A|g1TFEi51v&6YfAK@4q}RO=@h^bG$dE$uHYie%0uZFYES3&9rNgsHL_l1N > zl)@LGH&TFBD4c{1FC=^#g>QsSH@thqkQGVb6ne+eHC2T!j`vuvKS(i!TW~;CnjpnJ > z|0dvL(;?wTE|vft7jj00{18p){jqx$K#zqq@*o%nqKjed3I*7r4IA7mOX=ZWS48<9 > zWsp^YyLM%g*g{n$9^;AgYF<hGX_g$hMdw@*xq)l}(5Ye+ORW|KTL1xmqch{Jq(DE3 > z{E5CARR9n?>Mi+p`cb8j08B4(=1$XU)O}KjE4c7tB(TnYljcCBYjzM>-K&1Rv<1Iz > z<S!nHH`u}+Hn9WN-C`p<*~(tFO7>|r8AbJNG}Vq<;W}JDDFHwZ)kqs)^<a-!Edf%< > zsLmL=p)EMezvEH@e(|!`wTRACX;A`X*OEKW^)o<5-HK=1Qq;#no3U79)S0af|GDU7 > zr?X7;U*8U%9$R#lvjPE20;r;dXqC{?(q0kWQq<5)A>`eVn|8<Fnx43-M+uHJb+$<n > zxUK3tJ*MdAK)Nk%a=)#x$~o*>{%xWbOW|`7@GN;;p>TVkn+vTd?L+n!trju8xcVs> > zftKFyfkaCp!2O!(2DjV@T)MShSC2iw?h#u|0Ri<W1G~5OZmOR=0W~Xb*#E)1<^1k< > z(@g>ky>)D613vJANA}+bZ}`I_etP89SroJ|g_l~nR8a0RJJRC@C@grsN8EsY(s(03 > zhw70jjq*SWMW$}$S;D42;y=E93(kjxzNm@<D@vTlw#>4F|Jd;(69RkO|J#EU*GfPD > z)R)mmv9$7jO2j}YP^w=L8OK1Vht+E4d;qd9$ZH`M6iG3LEsz1oH70WJkNCc)w0_bQ > zFjMqp{EJ2wgcE9Ig+wB9<}_ylmD_9YEyDarISbl7te;7k4^jZtTJT;__(K~^k?4&S > zm-QY4qR|3yN<H`jv4mVA{lg+5;NjGt=D9@bA;c}L*Fne^qBz8=^~61hpr1$p{cVIp > z*g~SY*8~(+L_~oGav<*E);;71k9iQjOvS#W%vJzXIMowAC1E)+;W;&7Iz1sg-BT3i > z6BRC@6JjA0W}y@+;fq|M7J?xcTHzFKVHK9)7mDE-l3^H{AseD${~M;E8-B(<aRM1o > z#K!%cgYk)WB$er`PTOpPuBZnoWK=saon6=hDYT0rGR`dwm_J}vVinF5Fdb+0jajjR > zSS+2>q*T8pjojgkPbop?{DajURRXxfKac{cU4$Vr%PP8vjr~kn1Rb;`)f6DyR<K95 > zRMhQELFeQlx_wl>sTDgc)X=?6E*>Ie{6Zj7MsYdK$UT<gsMd?6$1OxbJ%r*!;LP8= > z+$QKDw9y<PwuLFS1xRg8*c3`yEZr+gz{==MhPA~G*;-CT%N0>YJkDZ62o;({9V%VS > z*p-6ZDaSvl$0oSKKx{%7HKS22<YP?|aqSS}G~>=ZWWq5`|4nRN+%d;#K@Q>kjoPWl > zVR>P9K$kC7#f{|15!zkix#Ua2<nk0=Owwdc+9Z}No~;~`0wh$EsTU#TSrSZviXnw8 > z#R|MQSge%ZhP{{vJ_N?SSVaCq8z2GSX-J+$!4IumDOM%BJkqxfgaZMA1n69K9N<69 > zS=U5C6bPjUc9FeY#9MwCM8FBx#A5;sC5^Ek3vrSUCIKr%(oedVvGAR^ECd;_&sNaU > z`T<biJx%<WMV6tLdO1>_;pH4H#P5|sl_`aM_1^_Ki_ZAZ57E&a0hm)dVyqMh8QjWI > zhUL}R%hJV4A~D1-EE-ZkRjl+->2U?F2?a})*zSSE{|}WI7XSeQ1i%Z1#67ryEs2?q > zU`tEnCboQ-0<@-}MUtRRjgI6>b+%>_sD&JriT&staY70JAOI23A5x5GuA$$q^_me@ > z*G<xAecES}%;bIQ=YH~MN$k@UTq5@bi@d4KbPNe~SV#0gNKBB;(=<$c{0M~l$byoD > zgu=xyhRt_4sASm&ki11JSW<QMPILj!-Z^GV_GgN!=!!~2ezNF`!YEAU5_)xx8u?~| > zo=b9gmbsK4Nk~UWNQW+Y#MKR{Q(VN-wI(7d#Eu$;sR-!<W(1g=1d-Mc7Ud{`T8fn- > zgy*?Qlp3iArO87)DUbjKj&A9fvYwWrDNM~z|45h$P2{LdgkGBFXi@yiQTRe#;!>UN > z5)t~6uK^QSh|?H$VWAT0p{k*wCMu%Jp`tb_qsC#R!Xen8sHDE(rLLi+X6mG3s-tSE > zr*i71b}FQXDya6xJ|UeFELJS4#A2)sa?HhoJ_xK@A!lq8N(|Ghn#8PzhlUzxZux45 > zf|HzPXn`_@te(VBS*m!@>V_U`NO;F{%?L^c58usajACoHzNCw4Yqxr<ut5o(*u=OB > zg_C$ns9@=*L<y(}MY=+ayOyh?#H(F43B1AtyPoTBy6IA|YnIOIka$X$&gT$bg}(gK > zwSH^DDr~TE>%uzh!^-4=LhF)HD8*(;|HT3f#tQ3%-i5}(gvNSokm#zAq+?20D6S5x > zN8BBBv8;(EN5evF%*yP;!0gQ0?9C305dN#b0%>y0DZQ#hzLEr$a!t=>M82lrzVhr% > zbjr>$1(a5Y(mpNF+KJPm#7mHpyf%fG)CtlKMNAkio#Lz2GHuyfX}>Oo=N+xndeWM{ > ztgiWKRsia8h-%%Ms@;<6s4nW>J}TdSYTn|l-<B$2z=+`LZQmm9-x_Y<Chp)a?%hHz > z;70Ca>{DXA2Zs_@SVWey2Fd1*?8!3Y#O|u+#wuO3Tgd*ZgL>RE{)dIMYUr}Y>LTkj > ziO6IWYc=uevz9A$kZ!NiZs{5;|L+p+GoIwMs-%t}EY2$L@)AtVGVk+3uab~glkray > zoyCoA6_%!}&{l1~=7>`gsJ&KgkB%>pkijO%oA{Ch6a|X)riE`B4EqX7Nz_?MkgJ-$ > zsnk*}Ljb8SaLd;2EB8dBzOJv^no5|K#eOwKLHNQXT!hZTr`*aXutjeLTQHS4?*(h{ > z2A_m5ZChI)T|m;5h2+)EnNEGA2N@{bXn;%Zc8wIYj9J#*$KFE;O9ID43jicRS=vP{ > zM1c+?N{YCevfl24l!>iv?2)`pricai%rNX$$rAewUy#Ao5GhzxF(9pltpEW400Bt) > z3Hl^~N`*xY>&O&@NVK#{|L0upJZ6sC!B(4=j2GkOKGH?H#K_gS3SVqy6kPGg{P17i > zhYtt94%by#Arw}%g%jHw9go|6l)>Ze&QstWwMrL`SStl{@FsKek7RHsgYqWND0>bH > zlfItywnQ6T+|&e1=!jpW0Wh4p1DvRBlm5djYZ{vRYe-<`KU9&8H5~mUZ9GzqRN~AD > zeeId9?JdMmKdkMXdhOZzETq^6x$-ETat*r@Ex%6lJ+x;?lmh6*YdA+)OSnM;%17*! > zo>15WQBsgVZ~>x_(0V>?M7VMdvX4?s90vr8H*+SYg%KN-!j0V4T97jubq%il!g{Ln > zKfvGvdh?+8kyPHq|1a<}q+FXf%ky#Q5-;&u5&l{*J+9=E^hld@;~uW!qBP^GbW1z# > zN<Z*PyL3vw^h~pKP2)68>-0_U^yI>HX%wy$?+UH}0E(2%7TnJxXH`Sw2-sPRC*Fe| > zD>c0ZijK6Hj!3~v?ad*@N@-Ez4o%%s>SpNL!Y15~MS0^v5u+Wt>Dz$u2=dLqZAN<d > zoYjn+CM19)8VxU!0y5?fUjGxK`49T~LkW?E4@(<hd*FkV)j&u=@d1E-+;v`GVnLl8 > zV5J8qT+vfX!5`%&R@HUBMKx9<<p-Zd-CP@O@LYNT4iax9VGtTGx<W{;1sAXu>jsEZ > zFU~(qLHZy7|97xQ)kVPOp2fY5g>9pD8{6AkpW|&~25^l*m~_kA1j=v!LU5nlaIXc* > z;f1vNPKjdjiGFe@leYzrcX^{X^M<SGV2VvR*x|Sj5@ZGFxxyFQh*l_oXn|iomu(Hx > zkuBI7gF%Ztqnm+g9(m-Tn88|DUPMG7K`qEviLDoZaRL1`nfKLV*=iXpjDZvw=0HqA > zDUeWbeu)az9DGdytkp1lbwRMK;)kWm0)ZY<-%^2tAG%BtDQrP}%lL^Z1d`oX`AKGc > z6PTYR-$D>&jzBmF%IngF^N!Kpk(XivRx#Gm50Z6WoQ_nU!AI($Nf~724wu*jaCnA? > z%8>0B|I$UImZ2a=<afO&SVzzv8=)`K4T^O{60->GKiFVe*nyy(Ihl9(7BEXBl{uk9 > zZL0;MkN?A*LrR?=pn@czCVNl>A1tM(cczE(d24#7Lu};=wYyFCz5N{4q0hLr1-o>1 > zJ(Sia{1N`N#VXd_Ld7s;ly%2po3a)c3g%oocD9Zr!R^G75=6mtql>qNNC2#r19>8` > zQ&m!xLO=CmGe!Wgi^(sT96yx|O&J}II2Ah(<hCCaWI5u#$z2;vfrAY<P~oA{;7I($ > zim-=z$niR<D^0br_O&h4+o`*?`-9RPRp4mBC}6w6O;+87dNcmf7|~o?+<S%coW=Cb > z|I@iu6tqJ{)umjZo4CDJDPj#{IAXL!0ISC$zxOs01i;0GL^tjPR3YWVKMhYldwL|m > zT5&<fQwDG$!2OWSt~WBu|C?#m-OA=2cvDvpdV11}veGmC1ux!Y@~LFL-jn?U5Wx3x > z3{sbc2@GRkJ+FlW0f426*`l1qhJhdHl_J?E?T|}S?BRr-AjEmuLsy}f^8Er5%*jnO > znMvWjElfZ=_=7tzxw+iK0*KH1dC>q)-Y?8q6u?@EIUkpu+1x$2e7S>KAyq5b=3Y*7 > zMKI>tj}Ddt5FtsxBsFLIEWn6Ov;EDN)%=4bjDnQU&_RH`7F;=FKB+_WAKHrq|D1I# > z)&ZH}FT~yN1REiWH)pg<*{Ll9r*K_hOZX7$9F0cdJ-DsOmPZv%tkG|_eOs^(6jh!N > z0(wHU8WPk4vnPjS{=@WhCG@x6&p-v-?%JgvMB)ClOy@LD>%ULiH2(v{zkk0378FR( > z;K76n7a~mP&>+Nu5*a>RIPfAxj14n(<oMAd$cP?876h=d<VcYdNvcfAa%DxAGhx1z > zS(D~XohWni#QAflMxiZ%`V30+XiTF^hbnDqlPS`uPNhEWX|*WUq$VFy8Rc)JlyU@r > zO=0Elm%Rk`MkZ+YD~YXox9+W7`HPg@f3}i<B|GKoFIRf``eiAB)jza=|G{1yNlJ<Y > zQUq@)@rSmqy|Sb*>rLqI78lOHGPg;R07(KM2@)?vtKjUvQc)JKLThX7FD?k!xl&@Q > zHd?jzZYiiG9Kl>AV>FTBl-sOuy+XY<R)|<}S=(t5XjXFeS1BoI|B;b0Ve(H~N^X(T > z;&02SUkX}*oo#(!sqP2k<Ntin71}h4C_wTGLdzZK0?X_md#wA#GO+CFj-d7GbBrt{ > ze3@%Fg`{BTAjSxipcRmc%dQ~4N>mI$0VlfWGG7)OEwf+xBh52|(4s;Vw4@+~C9(Jm > z?4Jl)BQ1)0Bs$5Vv~01*mUf<u@*mAkOXwuWwA_-*F1`E`%rM0q|C7uz%{&v$G}T;_ > z%{JY96V5od%u>!e?YtAuJoVg@&p!S96HtNZ1nZVABJqbUgOa%Lo(UxJ=bkO3_~#zR > z?kOXQDix^bpiH$SV@1AFgsn<SCHTsgEi%1lFH#dNXi>24aRZ531On1EN^e2J9(N?L > z^&ZI}Z3PKPX$7l{C|DE-tj1g^_8&|sWzil5Ue%G(2{ieq6$zC6XM(T(*%i_*G=Y?h > zNgMs@o?R*Bg0@JNtrQAcx?MF~N^Jq+qGkmu<IrpWi8b3%^ewj0bG!Z479?zOhdwQR > zy{C;x{*i)=gt_&WQcwkY);cmC6`0v+_sWzlf$<YH<t^H&|8k3M_kxy;d8<^du|_$& > zhgh)qa>c)r1-fU`f{;jP(So=znCB#X*|Jd(Q(TlS{M_hE!f_P<;xbA>j&{{!qgB>F > zuwLQd+<RQ{6xJ30S(;K}ZJGKaIt5}&%2uMZMemdoNC3+~1s|O7!VNzh@x&Eh$nM1* > ze;o42C7+yfI2$KT0wg53R<eUImLh>o$ZBVb)1;UiuBUM%`Jj6fNcx~sP>VoGR}@G> > z3RcD=OLomU$5kLQlz5#CEr0oOAX28d=NDU~Fx~AoKtG+!HioC(AW@BP<@POF**$mZ > zG~;9oSrI!vHno_C@3c+);v~6S0(h^i^mDu@SRgic|ETkU!oQg<t$3aHCUrbqkwOAm > z@(o_zvxUiUF9`%3$oG<<042B$bNbUvM!4`g0Gx((1L<HAKA4+QNT7WVF--!nHxMO6 > zpfPEA9t&*+mk%OfH6cvhK!!t>i{Yv)07wn&j8}^Hbn1oxfT4|0BgE;vFoyq-9t-Ct > z5bIIVcvBbyd4A+W<PBsCB_yJaIKw!DXa-7Bg3=n(0vEOks&a9Z;~eQ&M?3bZad*_? > z9{JcuKgRJS)?ro3@K=ymv1(|BJdh$6!a6}xiy>J{WY8G-pIiy8R6MMtW31!IO1`R- > z1wmvcNeRkDYBG_jT$W<|@+w#MOO%kj+bPqc|42g4av+p^<QYxYOI`lQlV2*^DoYm3 > zQy%k>#9XCyLW#*-nQ|el%3U)3l}i>qQdU}`<RyR6%!D8kBCkT=ExGbaDdlZ%egm9B > zE>{(IQU#t+(aKch`ObRA^D6etCqA>H&wlcAEBn0XKm}URe-iYd1`TLJivmZ5((|G7 > zl&C)!T2Y8H)S?pw=tVP1QI398qX_NjMnf7=kCqgpQDG99nv~Lzwp1ws9ne8r$`=3t > zKs9a|sYpu#Q{y$%PCms@O?*1jp%#^<N!@9fkXjL;a)~T0L@7v~@>Hk(M23lK>E+g# > z&L_1o32*#I9{*TYvz`^LX>Ai()!J6K|GpKjW^LRyEm_w)(KSzaO-KOu=C(`LRj+9p > z<zLGbSTh;+aESenV!OmlGBI|qfYp;?e_6G<MHZdtRA=Dg+F8$j7POILYiLPZTGO6( > ztxy^2YQbdGpUP1puDz306(?IS**2yug%fTa$J;dd7N}-4q?5YJMk}$6Eu%&4a+%v) > z=Q{Mc(UtCWKifD~`Nx=}9BeG3i6%;JcT0|i8Y~HWOoM>8m)OE&2n$(WRjT)!?Tzo4 > z^ori^UW9e%)h~C`%irtv_pg-9uX&Ft-ene;OZUa)v<!>hFlm>-;U#Zm8;7^Prt@a& > z<jPb*dQuOQ^us*m@Q6cfQV^e5|HLJBsfw4nVicSBB`bZgi&H$~7T>tTHqLR4c?@G8 > z)A+|YCb5o(+~c3fcqy#qEp3~M65x)Bwk~OM*OHvlo^;8zP5x~{gO+8bzShYkiE?nO > zER!fg8LC88^H#Ln+BNe;uXtUOle?-$Dp^Ux(53F4`P^qdD%a0}7WAME2WSZ!v$6O+ > zteV){NHGmFP>t5of4}75$Fd2sf}Iwn6Aa60PIyf0t?z(T24FB{I>M1PFeWKk;eTY7 > zZ%@iFX9-<vTi@DGhQ{@-dEIL<(aEULOiKdDaggB!pp3>lcCs6k03h;d*w5CIT8b?u > z2qgdj;sUdxzeKWOSNq8p|G9-bwlvSDWzU%r<phzaswP>#s1@yqcNJ5VW>?7jW#p-l > zWi#Rm2O%Ve)Rsv-F5_BTYyx%TB6mV=;fmw<@YVD#w>uu5A~hbBS){4>w+G&!Eo@M@ > zcXN`Rjq65Q`x@mbSNWV)-g1|(e6Glp0>2NU30sLWKBRO^qzrbgUm!fulay?LBeIE` > zmlxp*t}D+?JxT%3+?O(^`9N%b-U;tlAe%s8`3lmCDIg&Nz_U77ypDjdCu9=|h;t>u > zTZVJJH`Vanc|o-P#(g0Gr<*|g{YqvF3E&i`KwyjWUdM%B+Cl*`YXjFNQuW{gAOJv+ > z!pkr@O15l)3|i&H|MN(>h1+GmAX|8yU#%_>&m#f!rXRh6bN-LDz3LY>Zwwg%F9lAq > zY7|El*h$QJ;ft$9!vtw3ky*UsAR8aZ$rp0*i+ud%D<ApGC;s$}yc0b~AN$Xje)Y4@ > zeD71=`QPWh_PY;$=#yXga9)V^P$U!)y}2yfE;lC$QgBwrwy`tCzm!X+Z=z1YHn8j> > z*w6n?i2(KQ&8mbV(83f1gbV1$6(Rscc*b~Kfj3BFMbLtRWTexCMj}Gvh*+YVXbJw_ > z%ni7pFL-A>K0`2`hXcEW6UYE9NZ~AQVG3l>%qnAvlz>9uEdJ0UUC!(wT!DTH;spER > zAV?ue%A$PA|3VBv<9~btFP3l$wqPKp;0bRb3R}tsQ6*Lu@CS8c1+Nf1Sc0pjgyg_V > ztaR<=+RzQ9iw)mU4(G760*O+J#`RDJbaDz|rXcWILm+N}1A4?U2<aX;z+mo13jl9L > zB83#TK=KlUXgJ07z9n7$MGLg#dq4*=`XW*S0NWbTfx?JHOfT?O#OtI$0hAC4ZSe23 > z;93w7Ql{-<wys3%0dyh{H6X<mkpLE}L<0V1HTn<~0iZSPV*+q05f@2T9<XE7#qA)) > z71U*E@TwWvWsz(FJ(9qaCh=qDWeZq=6eZDI>;qri0{|k%^b`OI#(*s@NRz&2OK#z6 > zM5zsA|7MYH0X^*Em&gw4O6F4V5nG5R3Tj~*J#h;_5eQ=A9=Jee+~8X#jRQbLkU)kl > zqDCMJV-mpvA`1y4PX<zoW>z9{AzZ;B{efWYAt6<RA-RAMI}(v@0Sbb~)nKh}X3Zet > zkPdf}C*4XXdlD#vvX8O^EtKHl?js{L1V0Eu3jFE^v5Yao0*Fe79dtuLi~}w1W7t}u > zG9*q%Tp<8l;W_G|e+1%-$|4D>@)ErWS8O2wS|Km$0eR#NEw-QtpVD|9Py>%{J!AwS > zS^+$^fa~@mLKdPaV<!Qs(jJNjL+V0G;^J<ct$tpk6*NHtw!kYR;)1jeGcm$}3PYD5 > z|KunIWC|caEel95Tj4jZ5DL`N0b$Wb-h&G`p)AIu6(&Ld0z|7yAp)X60yx1iJ`)M& > zZ}JoZ1C!u59OD*}U<@{a4AM@kekeP%2sEZZ?0lj!&J803BMP)CE=VEs)}lBHt}sv} > zA_Bk`z;igp^ESBgCTwsFB%wQ{ayqxj28+js_|9(7XiADp4HfApg;GEV6p#qiKo4|} > z>@aG;B0#!M0zM5a4pWpUpy#TD43YqaBw$j8hC(l*DKByZ#vvmSMggSeY8s;zB0vd% > zMln<+0x*;|TwwxuW?L}EAU<?lLNp`a=y+OzEnH!9D)S$#GizLd44`FPIy7Za|L}P@ > zCR&hy6*%pCvT2rFL0SZ&TRzP!F9ci?(IHeNLpPLLq(DN=QVIY7>WTvieAGN(iD;1X > z9%|+rfss?#=Xs=HUKT)VT;WjefkJ%-THKBmlHe9Dk^;uTXSk*~q~;fRr4+V6AB)9- > z{z`2;F%UV!9wa~#tVmg^1<^#sI=BY_N+FqwsYIh7E(GsJxs(F{0PiM%@(xTO++hl6 > zPHl?CeCk0`{sCb&;9P)|Yre}`B;^;lrXhb-0vPW<&ISpjpjP~&DI23zUo}<*f{03` > zCVfxVfG=>+PyE8q{I(BV$M0LuuUy5|T*I~e$aTh$Y+T<pUD;J$;T2u$|8-sI^<Lu@ > zU%gdbv4SY)<KbF?Ha<qIa!CrREku|t%n~+=n35d2X)=e+I|6oK2SNcNfJ@ecf#BoW > zx@a-L!yeodBMvqxH#R;<LkpsS3pPPywPTwcq70@dIrDH?P*!E1!&!LLV8QJ>5NkeY > z!!M)5Ms}xXR|i9iwl0*!DE)yiUXTT`@)ra)IGQInxF7<MKmqd2WhHhw6V5FvqZZC% > z8YxdG3Zx+h!#jW@I}N1EjL84ULNJ9eLu?@mU~xJwrr365i=y^!E5bL-b07*NLmrMn > zR5A&;Kwx!fX(`1n3>R@X=RKz&Ijkol{DEYFFfas2t1R~|x^*Jz{|pTk@JezLK}*+k > zD<?otS9MnxPZU%E=z&t&pkjfP=FlPv{Ayh`>6<zfmwHrI03#5OhG<}yVpb(uCLjr} > zbCrC>7Aoc+FmF|5C11uxtZsK!6`*-H6=QT}M<)Uib$7w+ffR(-^&nSPT95r`SDCDr > zQl>!fzN8E`AbDkF0VuIp!J--mLRJ5xA(ydONP!&_AP52g0cLiQhBt2JC0q#QXx^q) > zPUs@1mt4GYTm+A3MqvyvuV9I(Vfbri{Gk*AH~<2mR{qPB4sjV1qG7g)Xlh|Ycy*Pc > z^<A_LcC-{2EenzCpn=;r5gSyHq{o(6q*B;rZ5BcvbHx?V{{~XZQXp>k8XMzUMV54V > z$tJh;Z%&SNvsjDqXp6hpi(7Xhq+pADqhgnn^q5lYbfXB%O)nu%IzRR{azl*$fsAjX > zJ8>g3Q$z{Eqk+=HET<AYaN}COXo1`VKIG#&_F@VuR*em007;>WG&c~DGlmk`7D|Ua > z%vcD|Qg+^AF?EP9<^p?Nhz&F_H&RqHAcJ`_0+pu_KbBKF8)A;@cxwf@k!_?20Z@Eu > z(?@n^k=elwl%RmNXFkWJGqrFq1JN=jA_4YeJBt>KP-hd?m?hR$VsCURM?;daY6@nS > zEK)Rvx`jB9Cu-+rZQSM-1i+c2c5|EuNXq$S&bT1D|4;+>ry$OfNcq-&>6T>nbL9H- > ztBwncznGv48ckBypc7i5?a=j7V+!cjATZ^1swhIaR9B+lb*}CfFj}l+xKR+bf<Fcc > zlHj40<rX%e+Dzk^ScP_h_=~nwRt_}~`DImEdUNhkI{AWyTH%d0I-}Fg9=<0-#jXqx > zV50A#VQ`11BYKD^`eJ;vARr?FB;bAVYXihZb_pd4UUUj#6*2-~1FDsllrRCdfD%ik > zTF%<(Ml=B)I#X`pP#G94qH!RgR3F9V78vgrwBT>ZfD+392t;{PFNq8SKmh`eEmkN2 > z{5qE2!CFLV0**$IBp_Cs=5Nf}gYWRH_ZOxG|AGsE009D^ELY78wq^DV8>c+w=ZL2< > zR%k^J33+2_6F?{RT-z1ax@68qT;Kv%D!MT~JG8N*AjrUA{Db!t>6~Ki_pX?o=2c&x > z+g|zAxug4B^Od^$wYsHyU!~&uv>Upu8@#>yx~Dt5v)jC}8@<V!#73*C?1{;^8%^39 > z$5@O1*i5(3?5gtnqvGVfEsDMqFwG)Nwz`bW!mXROpcLvG%naP4!UQs|>I~DUKmT)z > z723itoJ$ZI!#A9DHQa{ZMCr;4)$YnqRxQ;=9Ki&l9k7kX0U(bt%}ch6O3lR5gh`of > z9KH+;vTXQ#&-zSIJl!Nrn2twFvQ=+1{|hI%g2R`5!!?}ApPWE}&D!c{o|uZhKh > ztW270$=obY!tKho?Y30Q%Xf>+{JFR$T%c#k$)ViMfwIltT+Zjv)mSaXV;oE*jg#(t > zmrQNI*6Y$BluK$H&jG#iKyA?FOYZI*>v{>%{EN{eo#?uY(q;9=BkRyBy-SQqz`*y? > z_k6tUJjnfAzHob$k_)r6b+brUyvsYixBJz<yVYm?yw$tbVcogiRn~8P*JFLWaUIxu > z-PV2G)rZ~4bp1=XT+2()`tF;a#;n=fP1?oWzUOb+p`F^ve7*tP+85T_y^Os2+f3Rl > zo*+VQt?bJb+)JX9)jt;vLl@5m|9Z~n9YN!q-tS%I;t;#E>C`aYuDry=H$Bf6ZE*CQ > z-+A2A;;sWfz26tC|M>ix{vE{mM3Ml$;SHza&&0?tY}J(<-#>mp?H%Mt-qwaMOrrDN > z7#<^1UI=wAx01ajd~QqFy`E|z-vr0t@dVqqOy$=E|EB6?;rrTosmx}c%3glVVP3y8 > zDa-YYKS?g2O|HU8p6cnm>aSi7V{X9=%pQDUQCKBd^3K$T=I=shuT&)GN$I}=-ru2w > zYPhXRLbesq3z~$u?Da0hGuz=k-SY0?T0#BNv+K_P{M6;E&x7VUFHO`X{?c_E(Q(|; > zOV82y0uYBTz82HR`K!;n|HRZepTF!u?iYO^2K%yl57s(9{eu11g<bWFz4d9G*kRw; > zU!T{f-t}1@_g7!{Z-4h?pY~(F_IV#8kW3?-hn7@QNhTtnvw}z?LM1`2r_`&<oeKGd > zs*}tbsq{~m)x9RxL%$uu_#XoK1yBH0rL3)k@REQrErK9wfun(kAW)FQ0#PsPgtmmI > zJHHtKK)W5I2q4HL@#XKI!Gi{W{o9fx!6sY&ez^hwgd!P)2>snspd}(H0QM5z+fwge > z#3>XLOsQ4ypF)f-7m|8;PXd4hq)h&^CjkgfoiSlDbm*_3Jt;sGlmd!Tqk=6S0hDxU > zkEF?8D1A<`*OH8s|AYq>0>Jpoo-MQO&Yms%D@hWJV`0jjOSi7wyLj{J-OIPH-@kwZ > z3m#0ku;Igq6Dvj>cd_HgkRwZ;Ou4e<%a}9kZQSx;!F&H)NeKBlVQ0|4HjK)vS}y3h > zAz>N?T-sn~*-h!jW@<3xJr1L8-|Z}VH*SNrM(cddTkdY*!vD4UYLCpOfA?%9aaFWc > z?$5T6c)!)|VD^Tj<wkE_&=nU=eAgStI6tFwf#zLNXPRA!g7h%iGu=*GTzAia(0TUH > zMo9Q`&jdiU1X@9#abX}AU#(}*J#Iu{9v4fwBSlUNu@agDB<6OYha+7l(?9M=U}A#z > zDA3@85pJkc|AiMyqEl5VBGg!K|D@H5Ek>TTQvwOVrP-5EMk(c#R90!_m3s||<(6D_ > z>E)MThDljtzbL@cFQrJKQ9}SA;8RFaFbP1ASOr&?LUp$EOPoo}na~uhXcB-D-u<G) > znXN<-(H2{{#0gY$*&+o)tt1hFJy^*}B36M8S}30Ykb~T$NmQy_RSikO)t{tjco3=y > zNHLxg3AFhpfvFO7OPp;YkpQNk202{<NnE7fFI#l<%cBvI5!^4WC_6=~cOl#AOSbJ< > zDYh^fdS)q#aw;gHE^+Z}nwSDQZlNPJw1qGKplA@hwL~GVr(}iYk}HZPR7yt*x+LpB > zblE~~|7b~IS_Y(bX{1C1^%(qXrb!?ms!LOh5mBP9V%$nZWO1P}w!es+Z$bz23vxnR > zj6v5e4@Vqly2M)i=d&Cqq%urHVrtgUYWdvOTSRIp=Fvzet@P4NXJ&NMP)9BG)KoV; > z)@KT^gPkjHf!2xy6u$aT6s_!b4+X0+$J}Y=?u3!7pKX8yEBD}6qt?IJ(QjL=6c?~g > ztt3ziDM{E8g^35jjU5-_)lD>ZW0x(R-~wsaN_IKj!-a<%0!NooWK4owc?L~4+dsDC > zRNYslgUw&$2XS3!ik;~xo@i6uGWSSYKgh}$No?_4z!R`Dh7w$qRL~Y=@KoP&S#RC- > z{{*|^_fHv`_*2RR<!Roy^_%-s)mO}q{|_l!j8y&O_Qjq=XJsHEMHHm$HbwKw;Z~D9 > zq;T>}gV#&K{F?VStZ8BloFGGvAV;=>{DK4UvBd^llpBM%LIG0|+k@=1oC&N(f1~N& > z|60-#51L0oH98;{6nL8kE(n6C+d%fh(xA?SL`xw_OOnzO5_>SoN!-#`x8xE;unh5t > zCrctiiWn3n3eky1gklqyNW>~4k&0J*A{M2{#4cKqi(lNL7_~^oD2~yLWt?Ify_iKb > zx>1d9WFr{c2**0g@r-s1BN@kX$2ICPj(^M}9s3B#K?ahLf}Eow@rcMq9`ccf|BU1! > z{U}LBLUNLY#AG5ZSxHJBgpV#s0;2kby7%4Y7ygg}IY>5zXBlJ@#F9V~0ERIRf<+4D > zxXKh(5fOJx%uE|olR?~|1XUhn6A?&)ELCMNG<8G^A5@4jPx34u#zvZ}M4b|x>5naJ > z3U#CaU@cb$OJxesBMBfKLYk>Bh1g;g;xt%MsA$Y_8nK+oWSAQi5CyHpWD9XpQ$+a5 > zj$e>MRYUwm0{UstC}4_XZGqP>CK1bXdTV3h+GRxSfdEW#!JEIj*+wUJsEs0^9@E)V > z1iCp2PL1@MPm~BLcT%=nOhH+$SgD~15-^3_qHtT7!aWjDkFv1BER%|<|3L~D1qsw6 > zq%o-{R#GAbTclAtQB+8!tO}N`R`I94NGepdTGcAHrCw5aDomxCl>n60G*W0s5J8y` > zpz#n%J84UkgjBV@`t`4X4QyqeCfLFn_OOUG?A5TN0D3q`WnNQ`aL9&`TX=3Row)_t > z<f6E<jl)5@W9(Gg@VJ`1&pu(BjxE~YBPkfmATB(coqmduQdv*|tBu4zT)QACNMRFX > z5a%s6AdZe1<e&hM)j_^yoLx;SxGiC>T*&4d325zk_IXf)V&hE$`N((J`2`S+a~cWo > z(j^T_PD$+XAN7dVAf&|(+CU3HE?BBmpYb4QBXq&3{I3=wa>WLs|4^^X>GvMAwTm5Y > z6tM94!xj@*Z+mUS9|d^l9`+DtOTwcY+yc}eKv*JWv2)o<bxgV#(GEl)S4ytVrAAf- > z4f|9aHkj0CeEvWJMn<f;54Hjcu_=gcorI7a+Tut_>fsOhn%E{g`N>d58eyYM<tkhG > z%8ntE5@-<-aBX-X(HYSaTiG!@O-oOS+Z3Qi8j+HsDO~p;g(T!f7gucaU)}tsm@#%O > zYvO6QB(gI%y_qMO>WR#FLFbowiZNaq8aZHw$)59+7q7_6VMY1HP}9YVh-`W;SaI|{ > z64r(QAi!5QL0nTViY7I=^cS|67#B`zXRd@gBC)o|M(Tm<|C7RO45J{!794u(vOpEo > zT!W58R$7JxoVr#C@TaC%C9qCIt6$f2MFKPg)`<Bzs%pO0J>psyn9VaL2J;SBEJqd$ > z>q!dMHl0tE(CKn3!4}@07`R#G>A2$Q9#P2PCyQJbBn53Pm~sn|vCQy>JN)5!nKHyD > zPVtI2d9nYPK=xWOfzvL@JGI-b<Tivox7pY{WPlHI4ANQsE(m}c_lIbR))srjNSz@s > z4r>98kd}|bAh!rHg=H0z3ks;Uq}bqt<tCw&o4h&IAsvT%LsXONSAyd7q4E?&^kE{Q > zB)_0weSUhDbYjQlt^i=#3sMHoLGE;JKtewPSl6B8|4&6R|JqxAF@eu6C`T!G5E*== > z+1W-&bCJ-<=CCt`B(Os78gY4B{+8m$*@Fw^xy1y0L?q|6guUYYM;jWX`JY!M^BQ-} > zdtD;*#Hsrq9B@$^#!KPapZ&T(FI5k7|FH^(p0o~{Af&lN7tqwmzY8pgau?_0@xBJD > z^BK!-jJ!i7`Eai>(UK!OnMqD+a{J%Er1!_~N%D8U{OCWw`Zt+=_OBoO=6ApR;opAx > zztJGt7k~Zr|9<|@-~aaaf7~a4;WvN*cz^(yfCi|51=xV`=SXzrLqV_wrjrn)AWINq > z8d^Xn<AwzJ(?v(2OlwsNsDu^NVogPo029~_|59)ddvYzMAOUqI1qRh91p*e+@+b9% > zf>g0*l2U^&;tmQBJgk6FJ?McjwM2Rs0bS=3q>unW5CP@U3PZRBtguoR7)zuhO{{<| > z0zoVUG#Btz5a?oe%Jf#EM=NN^L~TGTlCWY20W*x&El;(AU*S?qf+?GzF$N)pc*ui8 > zu?Z5z2`BXnZgmpY_GxMqc2JlAz7i68=MZo>Z;WOr;c^gU@Gvdq60HyczVZ-gh7n3Y > z5XQDv>K1kgfB?iYa$Qsk45L>8;D{5$CbD=<N^pq=@r8mIN&yfA&z6KSVJMmQ569*Y > zTF`|UlZvaTC*4Id|Db(#6*O$2a7<=#|JHbo*!WixmyO)mjoyeQTH+lgQ4+853sa~d > z>VyzRf){ClS=ez4ouN)?;STHM8`8lP(Sb_z!D7gvBjqt0|M(rTqZ8#ZJnpzQ?o}H* > zViyTQVc7L{{74@F;x-DYA=I``u9A@vxf~p+kop4@D>fmJ^N{}lF9w&6NOF-n(p>2X > zbnW0Eo{^IC(U5<mPF`bh6WKm{f;czXj>v&zM`j-8ctWTnKH!05weWf;7mrLKaJSG3 > zwZKCMQ3_ij7dTWTM`mzGqGZ^If8Y3(U>TNDvW;R{mS%aDfk7r@#6*+fj9Imae(`6Z > zCKy4)mV{xKg@KoN5o-Ye1PIV3|1H@tbD0-z*-n5Vmvo_*hoP90RG5r}hJ&dWh)I}n > z85T!@T|HB9K=U)xXnD_wmY^A$qRAIzIhv+<nqrA@5Lp@sX?v%^k%D=0$AJ+mN0j(z > z7_C`+wh0>Z!5q)C9tmQQwD~!Jp*GI(HzN5w(?@xB@jSkHLc(D-Vq<&mD4V%4Jg-S4 > z)Tw&288$YAobKhC;rVpANnzh<dn6ej;3=LC$rLxVk2;i<Qh9wq#DEWIpZm9f`sslA > z$)EkVpZ5u%{TZPCNq_`;paYtqbXA}TD4_qzp!oTq2r8ioN}(2NpcRUt7uui@>Y(hm > zpj(7Uc(fM*SS??qmyGG5{~S7@8rq^F8liPGqJbo%Z%IeqhoWf|qB+`rI(jDx+C-X( > zlX#VIUHO@)d89~cmZh1bOxmOkx1`Mxo9bDeeqmfr`f$c&rRu4reGzh8%AD@_rC-`U > z<2jqvNF>#_l}l2jP<o|q`lg4~rf@o^bV@a9>7k2}qI{vJdRnJjGMPJyM19JmUD_9e > z`l18)7nz9`2PZVtIB<R%sgmkfayqG&dZ||OG+KI|{1|dlnw!8`Kw!F&RBD}`dYhOk > zB_f%d$vLX0N~N`_BXwb%>=~trHlD9)o4G2h`?#IF3aU=Bobd^iT&XYlr=l>rq8X~J > z8=9=nimcGuq0-8t|IF&5&niV;Nv+qat<lP@)4HtN3a;HMuHV|M<7%!DN>{vcEi9)1 > z0YEKwQLT|_qFJ;jwF0kog%f60Z%O2s<m#;e`>z7~ppLmRGkT&rxt1njuyvIL7Xzqq > zR1goLR7P}43CoZ^N=3s66lLMCZe$d~^On%47I)>S>|>;<nzAapC6&6eF8i{I(HO?J > z1*^fDmvyVYdJtUDaX_&v3IGHlo3mS>06|bcPv@Qgu(LXL7x&N_WU&dcp>!}CB?Z9+ > zvILS+U?U;BJT}6IG&u!BsBY|a695nZ001uvf;BEe1_00*zn}>jv;|~qgbDc%Q?L|n > zW3?x%w70PZ|FRUc&H-&@3lcs=wzYz`*`)w$+qPi=w;RF*WIF|0hd%3Zm1$~yO9rV^ > zySbbT87<qnpc}e$p?!!J7Nt9{c;N<Iux$rH3ZD`rWPvVN@mh1Cx~v<orQ1boCc2iP > z5N^N;9(O*S1~cc91x3YMAxdU2!><XkLNCKl5iv8m`z*;)W_acqZt#R?_PZX}Y7y~K > z7MoS1Ffw70K+hX4(n~~ShAhg0G0dyEd9|6+m~fu?xx9P7p=-bRyT4PbB^yMWo7F>i > zS2&^(Cl{D7wR#U+vzpj3c%u3s{)ANtyujJXA0}iQa$76vHe8yZ1<4hd{7V?8vA_md > z29gkY|Ljl@5`3FA!E2#GN<}vT!dVcShXl3Y3e>YaWZQd5J40@8vbG1ov`NAF@fNXx > zJ?+6dwhD=K8^gc3Ak<S2I1E4;3;?~SIX*mN9`c=*tCcvpruBKQ)+)x;TE^jut^te2 > z13Sj$%EoEz#^?v4Yi!13e8zCB#&~?kdQ8V{%*Su+$8k&+>ub6kge=dZ9}gA)ZNLQ( > zLuXy2G9+^#Lk6TSac`v1JjWJOki15x8&%na6#*A^-8;v249IzG%8B%7VR0aCRyd^4 > zDwzxxFar^#_-9g3P>GoYV*p%FxK`4ZF%KpMd`QW;Cme=GGMii$3Xl_<plV)p%gzYR > z|GB)&WYEjE^sp@x%)_i{#1_U>L9!&9R}HanAzaQOtiR@*&XcMomi0k#2pkg928z;S > zp`ie`&>^YRJPff+O8gITH%~?Pvqmc){{c|{5Mob^IyJNt_QlWd?9QFBd=KJx;+3B2 > z>=zD(5L5^R)B<B$aKf#ZU0aYnqOr7))-mig9fcEmu(LRA^1*h2VqvjhWN`;3&2mzZ > zTmly<Z*dzd3>y|E1%(p?Z=-IS^U_j44@)FUJOiKdnU%$QrWZZcn~Tm=ebr7%x`k{{ > zR6$g;92$4l5j1-zJA)B6MZVnvOdX3UiCNZmNoh?qX=|nsW{1^>xi6%IEj9%e|AxYA > znx=1NR251<ftScl<u(vnpep)?O(F#?v8*rbv_#1U7OL!0w@|%reZ66!*>eF_iT!QT > zluP5}*laCLfw`zc%9->_&UW3}mul6n9owO)nzF@@O`A5y^vWSC8u!o!iHE#oiZDL{ > zl3Dk38D}R8Y#ZVO6UjZEwQZc8MFF3MV6-ROd0`wJwwy0l5PfGsk8?UinKLBj&L?+# > zz7P`C&2m@#9tknYf5TomiB&$WW1rzv39&##l3AW(HXQJCWNLgEblwMT9G&$Z4uoIr > zeGj!MePT1LUre81ajbn@$`oG57Czw@{>K%L;T*2viHfqPyx|_+;iR15|0Pc1A#UO+ > zj^fs;ec-!9AGNUaMsC_PXfD!49Fu7i8+No*CLJ}E|M7x);)raW5Cc*z%o5F8cvD67 > zVHwNfs2t@YUVk~WC{~3muEtzK4s^t_8}49L+QF|o8NPAoX2iHw4-3qb<6lIy1T4X^ > z6&Q?&d=*MS1_co~vB4m77Z&tpu)nYb?;Augb0%kgOQMYxBhv~er8BsgePj`hsy#HU > zZQYdarm$V<nC^}KdkaxOES1&i?32R=AtI{<AFef%4IGO%aU+$I00CeX8`5#-_79vO > zO9TWOHQaQu2n3J%GN8Uh5<LZ)5CN}l(V31N8O-af-Vm>zK?fX$|4?kirPC0FV~-h^ > z!Uu^#?Y$e?;v10rm+)4%9FlllvFmPO3nLK#Kbr(M!s*F01p%4s2qDB22Eox0HpiFX > zJtsLw4eloL8Wv)eP7Rc53gPg3><E9Fm!9wp4{;JsMcgu`7@M;(CGprAqy0*;4Uf7N > zM6bbZqJx?j-PNKvYp576sL~+`OoZC<YqDaq@EafVRtEDjU-M6<n!6{R#s{0jNs|>^ > z@6&m-+-clFFP-Q)+`LMrKX03v9yZSDssMyQd%qKps<z6hp&G>Qb$TK}^hq!DIV+N{ > zNt0x1^c~+4yK)aT<~ChieNjDdQm*2AJmo7s;&OlDb07C~fA<tB$NzS}_iyj^Z4c#e > z-}iv;_kpjh3o1uAnn{J3_{5y?PwuZzUiX48`F}6@J$je%s_`N3_$N>D2)ll$d-#w( > zq<S^!Hh=opNb{(_`hlhTNOP*2%KB3(7-zrrT>|@FQn>@~#cQ9fvj6)I5B$RKa0|cr > zG>RB?nV1JV{F#4$mFfI#Sy-rDvIr;XQqBC>?_{o@{oL;*Qx>ZwZ|vIH@kNHKLC>l4 > z&hyV%tKFae6wmac%B#3P{<}Jy?{A&MF{<m27c;CE0CDf%Kz{@O6*Tw{z(0Ei8@96r > zu~kG{4ecdJVDOj1g#R{n^awH}$d4UMCOoN8WXgdoN19w2lmDblm@{qG#EFuo&YL`Q > zs_Y5$XUm;JeI7NMlxWbULti3o3iYYdsZpuA#9Gwq)~a2zGW9BQ;6kZiotiDHH7r=P > zSJk%V3U}?<w{_XtrF&OzUcPDf`t9rXui(IO>yi~((xuLi2o=+OEVilK#drZ<CXCte > z;LU~SYW|#AbZ5YkJ)1u1STbptmG@FMs(SV8kceB_t4I;Iy<fbOB<X0I_Hg3GjUPvz > zT={b5&7D7o9$or$>ea1Zr!5@&cJAH1e+M64{CM)^t!rO?Zwsk|(Gj+{UhqBf`R484 > z$8WzO!RhmFC1GW?`arU03wMf>Pcnf9T5vi402IqHDgPuB?jc(ylBgnvFbXa|4?hGk > zL=i_MvBc-lGciRKS7fn87hg;WMXCm}MGD2HU?sufPO3+WBof#JK9TI1;>RFYD-ekY > z*sIE)jmnTBg8h1v0Eh&bbPYx=x0LKjB@%eg9x1G3l13>KNTSS{%J_0hk#0#~6emeR > zV9Em9X=w@otdzo*;npLHj31>aXrnQH+`=_6gShgxEs{{6l-1yr^A|dK^XSez_e`Kq > zC;us93Ly=$jkn!$+pV`>eshQ;E?<Q;R#|7ARYqEG#Wh!5cdc%r0Xu5&y>_H%NT7Q* > z7{#Dpe>JET_QX6=NQ9haNQ!6^l5dM3#Vm6_A^%G$1GxPFwMT+hl;t(u5FIN;P=xN` > z;#mnK{l}Ih&i&<F{!9WFxcC13=N1K!C};v8-fa&dE`o%2!hyU^=$=+4+;3ur$k1e< > zHpJByT?P*#R|59b3(^*m4GK2kfeSwPV;vX%2i_>&1vE@oTZJe?h%DkT#?V*;`e&hG > z<7{ZlMl-r-qE9<I=%qn>8tJH=ZaQhEmF{qAtD&x1Yp=To8*8zzCY$TA%`RK&u+ygc > z?4%I;Wr|Uv=(HApZc)PSjUs60moouKK*@UIW<wJ+_5NoIB!INVNgO3XGe?v-*<!$y > ze&IxmPaj*g@n1@r*{Y3xaV2z<xEMpWt^d__yKS~tcO7ln6DvKz1%E-^Nh(qoNp;dq > z7i-lB*r_prhPJ>60CGmBVw8S9kAT^hq>$VrQYz0^^I!6IvUE2^&wYDeoSfKlkCNcK > zc;1jtKzZgX1$}diQ(8!|Q+JMtp;a^TSzZ7C2VekoWh(&|(0~U-pm}^1vk4%f9`+zb > z68r%#Io-n+QHa?;S|Ndk6yzQaY=u1pH4qL^Yzq^*#}tqdLNd&(APp(S0`Ro2R>4pL > z?C8jQ?xBEU-GX4)0+uZZX0s2LNqPxH;&UuGM0BNaWD{V;p|(&Dj|K6ElCg&ZG%*G) > zkl~60xfg>tAc_fY;98@KnFOe~AO9b+0$${ZnF8uT22T9qi@jrD1?5O1;D{xQTkPT; > z!x%FzkWoFNKuHoHHkOW92tyar&_(!1sw7s@l9$BfatN47PIl6h1%w-poOBW1xMD)T > z*a8_s;tC1MCvKH;1(*b;H(S&xZaE^IBKdeFe>hG8N%$qPb}6S%O=b#Pz>O4a=@nKM > zvsp>-MOQvK&DPW|C9Qy_%A&xITX2C`S^1sn67ruK@y&Rn`-c>8=n*|30RTy8+-hv0 > zgkH8pJ!c}+-IQR9O(4^FLBZzej_D8e`GlNNYR5T4qRverApl9R8&RY%!~Q+2H@ZQU > zs#sM~YIfA4AC=W6K{`^Bmj4t#3%msf#!)CBP_c9OP-C+ckf2*^V5J@*m@DL1C?wS4 > z78H<Ez*?5U0%eRq?GZ>(@pzA0NI?o)5F)}{7Bg26tU<VeC%{bFNr8B<suN6zz2f;n > zcCd7j8T2X>Y3M;7ZeeCXfLIh-Q78@^sTEgjP=j1Cg%=JaUJP+-%oadJCtZ<QVx5vx > zxA0Yvu+?Nz@C95GB3BQ>OoN6^r-ppyEeq)^l0B=<>%P`H*p+s)qFvkUV#hkvlJ>N! > zHEn8H3tL9Q_O-Lc?P_%!Ti42Vx3~SRZ+Y8V;@VcY8wq8l>`|wIlwk|4kOX{KsjRrI > zVw4D|$1Ma<i{~wOaQ{=VZg2ic5YmCEC*3n$ZwjRmCzV2Tw^?sXtZ5K?%@sbt9j<YE > zyWisGmYFjvNqsdk1yXz}0aVP?BEyN4|M()iq?9Nr1e&_Nty3)j>E-C?>7;v{Q<V8i > z?>#b1UnSs+U+;xUg9iuUg-V#6mHNjvi4p}&5k)u`#SQ*UwW>Z+a;rZEa*)9zQXv=F > z$Vbi&QYR3J37!yT5{QE2lBxh4dT<Lt_2C4$Ff;XF@Po+`Dq!){&FK1(3si(xnd_y1 > zq1LM*u8=^08e$7Jx2j$eWKex|gyc-#!VY+jnJp4vUxPIB9%aBFjaD|!Kl|gXDBGhz > z+WZT-GN_Ofy#MQ?Q3k~)gZZu#bOXWcF##~g@r#0X#lLFtW(5SOv2jH6FWMYqeNm9A > zNU#S&>?M*4{ll{p;n^f>%V%O2+t@xncCwWn<WOpXZkxD;Mz}CugODO{5%{j;E;33k > z{74gp`Y<Ui^~(fIBEBHmpttMk5hX;gC8Y@5M2WJ!M0<o2Xad0EeDh8K0ItT;Tz0Nd > znSdbV`@nch01!AetuIN!Pc3P;V~|&HeY>Q=nNsLLPR33I009B_V%F%~>zHy43UPvp > z(|fk(?(=mV0sgj>0?<d%H)T`25R(FyrqJ;Olvv^g21%)KjH-%gw8sr0a=?|obR;I7 > z=}(8c|Nj<v4-S-?KZnj(eRR~DDt7h0oJE<PGYAr|cd&{c(P|FWZnL$Dq(KoY&fCKt > z_44dFWkA#+Qq>N`k3CH6es>Jp$3FObP}<df7n0ZWULUh-J@IpA$loK+Ua^;guZ_H! > z-*X1Zooz_i9Kmnsk2`w)>bJkaExmt5pL*1vKEJrFAL(7c`q|6g^tV^N?Q_ri*S8+` > zzJD8e3B0+Gh_y>o$&yrp2bsh$e=^N~KJT^W6WT9-HPt5!YIgq;(@-D!p7B0ckm9$8 > zbKm(wv;K~}BBt+A(tf$YAD(>kd8gCe{`ZGf{qetl{;z22e@%#z)0Y)FqP;Vq0=&Nh > zRR6%_*t53dj|LnLx#PQpF+lEcy!uEgUc<a!`z-qFzYhdKF44abB*79K54dTL<ns^} > zG(quT!RL^R^rMXzOd=XYHvP#lqT8{Jy1^Fo!5=J-5d^{^BtlJ^JRz}&2!uQdG{CfD > z!n~@YUtvPQQ;sLZBN`HmDLgv_fjk7Pj=XyjFC-4R>npOmLL_9sEqp*}DUL@=yR^%~ > zxQoIHL?biYES#Z;M+!ETxG~)WzCY}}K*T;k97I9%Lqn9lLoCE$BSb}X#6*O|+Ka^B > zLqtimL`p0~<TAgYQNHuD!JE*&=-b3mG>cN4jV#H;wdua^OGQx(MSufEpl~KrbpOTg > zlR;ZN#TkhXRGh#WIikn7vHQs=-{>($EW%?%#^?~jWMsx>9JT^vLfVMNFH8<iGZ8VI > z4Q#}YU$MsjS-@9g4s5g;Z4|pbqr&HSL(H2%FYGlA+(V9X#(0!R3Yo`xw8x6V3Q;1C > z(Xklg_{3?n!=<<gHQC2k!5tV24=4GO006oGY?KjE$OK?Way&k;aE=$$KJkJhrwE=+ > zC_nFL49>ZTjl_xqiAJG2m6SBPR$0b-bjc5F$(NML`x6cfthxaK$X!Fcbrd@&q#^cW > z!=DtU`hY6w*aRQhf`phDj4&d|TS^5W$W1UWEIdQL!<g+@7L@52xhu-5RR6=r6A&(B > zkdE=Aj*!Z3{D-3ymx1^XG$DifILje16SrieGf9HC+(J4#k~Wa6mheb}AOpYwfGI%B > z<H5^|5X|;@IO&PYglJ4OqBEl^gGt+jS^!J{csVIRuz$FoqiV-I)D6$enn%3E?ZZUU > zJk3co&DCr~)ojhuw2Ihs%}Pv7*rZL?yv^6F&E3S!R_w1nYzfDyo*5j7R!A>htVNKR > zr<)ito%F}=8!`Ecg6H7^?1?2DvWEd=jO%2G0n8U486VLhuY*{YZqgp^`xkUF4E3bS > zeR(Bknu*j1$?=R%T;z#j5~l$}NSydiXv$BG;RHZS%MijFT=IyC@&8ZBD1{tps!Ab+ > zbHN+DTnPn$g6C1D_In>EIiX)H1wtVSPT-v`Nw@GkQ1A>n^l_34eZKcZC1GMG1NE8r > z%fTGepC9RvnZ(f|jL973(SSpYhLD0^dagXu0sv3|eW{Tu8Onc{0*u%)gV+K#8-s?Z > zw8)#7M*~telY(;*6N$7E;9#mC1p+NtBMI<QG#Lmf030CD&JHCLU_lu!$e2TOm@@db > zdvJy5f|pG|2<fpkZz%|qu{LYmAv7zUnArkW*a85EGmpTSf(VzGAuufff)az$ghM7; > z^ScdFkLv*f>N&%dDmC?3(^^}PMU8*}DO9RTG;eAyEs%_fIsX$<@R14HqklNmG_8^? > zpeU-lDai;_k<q2qz*DtK2+OLM2^drbK`J|KqB1z6h@sGWfHOQ>)P$=w4lpX?oDH(7 > zr}vl`G{YhSqc&Sm)?pnI1&9J_{iTAqRyMUXyQ;T<0iGUoB+z`v9_-P5g-L$(R}h37 > zE_kn2&>IzE2h0JmR=}4n&>kvS*ISqZ0Nb+XnF7t>f;y^Le;|cTz>4Z5A3xcMc^a{N > z!KE#z96s_1hVqC~KmzP6gD&Z?iGU}JlQ8O0NLJ7U34p4QTLPTbS<guvQox&aBMI*L > z8~`hlgWWPGsZI^rCw6LC+yO8u$b!LPSbx|8j3pGDjsF`cI9OW!MY$P}oXe9WI9RuG > z5(Utk`1yqngNT_G3tI>PSGczxk+3AFhxU?K?QsQ=eKG0zl=T?eQ}iB^_^_b0m--|L > ziGe7MxCd5fT#HkHG1vskRU~wh0+O79)Txn%yf7soQHi3tnGjsi4P2q!unS9qF&G8P > z&A4>ZxzvH!hTI5hyFpXIs8k`w8~xYbrAglfUb?f5HdrCEt0^oSDuHl?G9Va%S*K9D > zn*}JVTaYz-D1|NfAcEP10(+DQ0H#DEUN<^II4i^USYALImhw$gefg=NN{C1KB?)jC > z4T3U4^BXmdsU7O6duXAh8kkz(-$ZK#C18kK?f<r50#hm*2sdD|f3PVUu_`;oCJng< > z3b-j-IG9_IUY>#=>}?=_*xvRnh%8f&B=8aWMVYD-i7jo2ni>ZPw$<kav~(l1NAVFU > zz#urw&Wy>q9V#naC753@10)b%9a3S7u;K45h(9afN6V|k1sGSD00cYKa@kD5YXt=W > z07Ao6EoKEkMHhh?mMFkroU^ZA-~h}V%w81<ceuRy*flWjyDE+;T=g;@>be4+7&7k5 > z^(~e(ez_?a-6&YK4gtH((?ij;G28S_-qg+BL`_JZ%|@1FMvi27q~u4|<lN-sOzz}M > z{^Usp<*yNrHjsh<*iy$Su->qxd*Xs=v;POY8J}=!Fb+!qh}b77(1MAXA=7}8P9Zcm > zAYjM12WNX_K$|X@$XtjU&Z}s*khmoc1+XKvWdyq%CBP-O#T&b+WzjKO<8++xS}xw0 > zw#C7daOSW&!5g5x<#i6ycHo<6zPT%m8_!*+QV=L{#;#vbTk=USB}g=JA}A&J9L>>| > zRnZ%8ZZ3R^D0U*ql-Op1f+h^ri20H)37DaXhGOw^oRb|ej|K@@ekvB*2zB}e-KmsT > zuw9UFh1AsuGJsVE+b4<c2YqUsZZ^LL8|m>X>4Wu%<{=-RPN%-%Lz56j-Q_Xf4c?{p > zQKok4W& ^ permalink raw reply [flat|nested] 4+ messages in thread
* [PATCH] doc: architecture view with drawio to svg generation @ 2022-05-24 13:56 Ville Ilvonen 2022-06-03 7:15 ` Ville Ilvonen 2022-06-03 10:54 ` Alyssa Ross 0 siblings, 2 replies; 4+ messages in thread From: Ville Ilvonen @ 2022-05-24 13:56 UTC (permalink / raw) To: devel; +Cc: Ville Ilvonen * Initial architecture document view a view to high level stack of Spectrum. * Stack view is generated to svg from drawio using Alyssa's drawio-headless in nixpkgs-upstream. Cherry-picked to nixpkgs-spectrum for testing. * An example to analyze the details of Spectrum dependencies interactively is also provided. Signed-off-by: Ville Ilvonen <ville.ilvonen@unikie.com> --- Documentation/architecture.adoc | 39 +++++++++++++++++++++++++++++ Documentation/default.nix | 8 +++--- Documentation/diagrams/stack.drawio | 1 + 3 files changed, 45 insertions(+), 3 deletions(-) create mode 100644 Documentation/architecture.adoc create mode 100644 Documentation/diagrams/stack.drawio diff --git a/Documentation/architecture.adoc b/Documentation/architecture.adoc new file mode 100644 index 0000000..2f89e68 --- /dev/null +++ b/Documentation/architecture.adoc @@ -0,0 +1,39 @@ += Architecture +// SPDX-FileCopyrightText: 2022 Ville Ilvonen <ville.ilvonen@unikie.com> +// SPDX-License-Identifier: GFDL-1.3-no-invariants-or-later OR CC-BY-SA-4.0 + +== Introduction + +Spectrum operating system stack is based on the principle of security by compartmentalization. The high level system stack is illustrated in the following diagram. + +image::diagrams/stack.svg[] + +=== Kernel space + +In the stack, kernel space security by compartmentalization is supported with linux kernel that includes kernel-based virtual machine (KVM) module enabling the kernel to work as virtual-machine manager, hypervisor. Kernel side hypervisor supports virtualization of hardware resources - computational cores, memory and devices - securely. Userspace virtual machine guests are managed with cloud-hypervisor. Linux with KVM also supports portability to several hardware architectures. Currently Spectrum is supported only on x86_64 but ARM64 is under works. In addition, hardened kernel is to be enabled. + +=== Host user space + +This section provides high level overview of host user space tools and libraries. + +User space stack is build on musl standard C library with added safety on resource exhaustion and security hardening on memory allocation. + +https://skarnet.org/software/s6-rc/overview.html[s6-rc] service manager is used for services. kmod, util-linux and busybox are provided for essential system administration. + +https://github.com/cloud-hypervisor/cloud-hypervisor[cloud-hypervisor] is a host tooling for virtual machine management, written in Rust with a strong focus on security. + +Wayland refers to whole display stack providing communication with compositor (weston) for desktop services, including libraries and drivers for direct rendering and event devices. Clients are implemented as application virtual machines (see next section). Minimal host provides only Wayland terminal client, foot. Wayland, a simpler and more secure, protocol for compositor could provide support for legacy X applications as well but as of now none are provided. https://wayland.freedesktop.org/architecture.html[Wayland architecture] is well documented here. + +=== Application and system virtual machines + +Security by compartmentalization in Spectrum is implemented with virtual machines. Virtual machines currently launch using terminal and support only wayland-console. Wayland graphics support for appvms is under work. Please refer to https://spectrum-os.org/doc/running-vms.html[running VMs] for more information. + +Reference set of virtual machines includes system machine, netvm, and application VMs, appvm-catgirl and appvm-elinks. Please refer to https://spectrum-os.org/doc/creating-vms.html[creating VMs] for more information. + +== Details of Spectrum dependency tree + +High level overview of Spectrum stack is limited view to the system. For detailed, interactive view to dependencies please use `nix-tree` under the spectrum repository: + +`nix-build img/live -I nixpkgs=https://spectrum-os.org/git/nixpkgs/snapshot/nixpkgs-rootfs.tar.gz --no-out-link | xargs -o nix-tree` + +https://diode.zone/w/8DBDQ6HQUe5UUdLkpDuL35[See video of Spectrum live image interactive analysis with nix-tree] \ No newline at end of file diff --git a/Documentation/default.nix b/Documentation/default.nix index 02b3c31..8b969d4 100644 --- a/Documentation/default.nix +++ b/Documentation/default.nix @@ -3,7 +3,7 @@ { pkgs ? import <nixpkgs> {} }: pkgs.callPackage ( -{ lib, runCommand, jekyll }: +{ lib, runCommand, jekyll, drawio-headless }: runCommand "spectrum-docs" { src = with lib; cleanSourceWith { @@ -14,11 +14,13 @@ runCommand "spectrum-docs" { !(hasSuffix ".nix" name); }; - nativeBuildInputs = [ jekyll ]; + nativeBuildInputs = [ jekyll drawio-headless ]; passthru = { inherit jekyll; }; -} '' +} + '' jekyll build --disable-disk-cache -b /doc -s $src -d $out + drawio --recursive $out/diagrams/ --export -f svg $out/assets/images/ '' ) { jekyll = import ./jekyll.nix { inherit pkgs; }; diff --git a/Documentation/diagrams/stack.drawio b/Documentation/diagrams/stack.drawio new file mode 100644 index 0000000..23feae7 --- /dev/null +++ b/Documentation/diagrams/stack.drawio @@ -0,0 +1 @@ +<mxfile host="Electron" modified="2022-05-24T12:19:30.186Z" agent="5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) draw.io/15.7.3 Chrome/91.0.4472.164 Electron/13.6.1 Safari/537.36" etag="8D9FBMK4C5lWSHGzQpql" version="15.7.3" type="device"><diagram id="C5RBs43oDa-KdzZeNtuy" name="Page-1">7VrbcuI4EP0aqiYPTPkOPBIyJJtkdneSnUnmaUtggVWRLUeSueTrV7JljC8ZHArjhZoXbLdal+5z1FJLdMyRv7qmIPS+EhfijqG5q4551TEMXdcM8ZCStZJohp1I5hS5SpYJHtEbTBWVNEIuZDlFTgjmKMwLpyQI4JTnZIBSssyrzQjO9xqCOSwJHqcAl6VPyOVeIu0bvUx+A9HcS3vWnUFS4oNUWVnCPOCS5ZbI/NIxR5QQnrz5qxHE0nupX57+WD/h+xfn+vYbewXfL+/++fNHN2ls/JEqGxMoDPjeTU+e7/r61e34/vvPt8Xz8hX2//qmqmgLgCPlr47hYNHJ5YyIvoS/wTQpcF4jaejlA5kQTrJv6Ri+xnklWbnLYi4MhYJhhKvtGs5cPm8AdZfCJqHwadV3LtKehQlJ54macv6mD4OSKHChtEoTxUsPcfgYJsNcChILmcd9LL70Te2drlMuXkDK4WqLOMqV15D4kNO1UFGlG36reeFY6nuZkcx2lMzbIlgqA4rX803TGXbiRcH3ASj1FqG8R0G0io0Xthva3Y+vJw2m3W8bTKNFMKeYRG7XW4eQLhAj9KSgNPt5KC2tDKWhHRNKswTlHaRBvMyy2D1FPwpLed5ZjFPyAkcECzDMq4AEUGKJMC6IAEbzQHxOhVOhkF9KvyGxFg5VgY9cV3ZTiU4ePwn1GPgIS0cqciVStcZLFJJvEtG4HY9zsagbtuSWLXwmf6QC+zwnZI4hCBH7PCV+XDBlsep4lvQhXrNeGiNHYZoP7BI39KppbjbFDavEjRvC5PSOmMDvN0FaJojVa5sgdovrgB8xMT4H+BL7YMLkoyu0R0XhuwtEIhYkDt4fhYI3Hsem4Y5hmlbMOGVMXixV499adjAOAlfsNX8x7GSI+WE372CMJhRIkpzQ+lraKhltb5V6FVOk4DkYuEOZSmaBcMtTtaPawaNYMVa6gHnxQD4OIHRzWXAZvm14KtBJZRRiwNEinztXQaZ6+JugeJak7HhnH522wGIfqkrbuWqhHX2woyEO6BzyUkMxgTZW1+LUM354ewrGV7fL4XDQ5Xr47+T+IGnxR4LgzhDmdOl0R7xqIHyUwkJdQtYOH5ZTDh+DhqJHJdLl3Xm7SC/BGovl6hywtmukYrp+TLDL2+12wZ5EbD0hq3MA29F2T2y9d0ywD7F1PiTYM3lQHO9x48YmNC34JFIx/+IsSDDYPeP7x+SA8z/jwItPziK0m3Vmu3VMpAcHQHpfVCOOcBcnR+Clye2jAPkAX5SLTgpxy6qBeFN5XyXiepsXHkwkILy78E8Kw9Lmu2pDdtQ1Wm/zniOAPANwa8ayNVv4pz5fi1hvMvxtrKsyLd1uDOyqXOtsTmoKJzD7A3ikkxo7Rw9zMMi3UP+kZkdDDZ/U6IfI6faNIIgyhioiCAjD048gllYjglStFg1GkDavQ6DY4b2wc0Xb7u1Gu/LevEG0y9nbA5xBYaa8E9UWiPII4LLffTD1UABZydG/702bYk/h3tTUayYHe9ybis/sL3fJKpL9c9H88h8=</diagram></mxfile> \ No newline at end of file -- 2.33.3 ^ permalink raw reply related [flat|nested] 4+ messages in thread
* Re: [PATCH] doc: architecture view with drawio to svg generation 2022-05-24 13:56 Ville Ilvonen @ 2022-06-03 7:15 ` Ville Ilvonen 2022-06-03 10:54 ` Alyssa Ross 1 sibling, 0 replies; 4+ messages in thread From: Ville Ilvonen @ 2022-06-03 7:15 UTC (permalink / raw) To: devel Any comments on this? We had some people joining the project and asking for "Are there any user guides / architecture description of SpectrumOS?" so I linked to this. Best, -Ville ^ permalink raw reply [flat|nested] 4+ messages in thread
* Re: [PATCH] doc: architecture view with drawio to svg generation 2022-05-24 13:56 Ville Ilvonen 2022-06-03 7:15 ` Ville Ilvonen @ 2022-06-03 10:54 ` Alyssa Ross 1 sibling, 0 replies; 4+ messages in thread From: Alyssa Ross @ 2022-06-03 10:54 UTC (permalink / raw) To: Ville Ilvonen; +Cc: devel [-- Attachment #1: Type: text/plain, Size: 9799 bytes --] Hi Ville, On Tue, May 24, 2022 at 04:56:01PM +0300, Ville Ilvonen wrote: > * Initial architecture document view a view to high level > stack of Spectrum. > * Stack view is generated to svg from drawio using Alyssa's > drawio-headless in nixpkgs-upstream. Cherry-picked to > nixpkgs-spectrum for testing. > * An example to analyze the details of Spectrum dependencies > interactively is also provided. > > Signed-off-by: Ville Ilvonen <ville.ilvonen@unikie.com> Sorry it's taken me so long to review this. I've been having trouble keeping up between reviewing incoming contributions, trying to sort out Jonne's issues building on M1 (which require a lot of intense Nixpkgs work), answering questions, my own priorities for Spectrum, and my travel plans. It's a lot to get used to all at once. :) > --- > Documentation/architecture.adoc | 39 +++++++++++++++++++++++++++++ > Documentation/default.nix | 8 +++--- > Documentation/diagrams/stack.drawio | 1 + > 3 files changed, 45 insertions(+), 3 deletions(-) > create mode 100644 Documentation/architecture.adoc > create mode 100644 Documentation/diagrams/stack.drawio > > diff --git a/Documentation/architecture.adoc b/Documentation/architecture.adoc > new file mode 100644 > index 0000000..2f89e68 > --- /dev/null > +++ b/Documentation/architecture.adoc > @@ -0,0 +1,39 @@ > += Architecture I recently organised the documentation into sections as suggested by the Diátaxis framework[1]. This document would be a good fit for the "Explanation" section, so it should be marked with :page-parent: Explanation Just under the title. [1]: https://diataxis.fr/ > +// SPDX-FileCopyrightText: 2022 Ville Ilvonen <ville.ilvonen@unikie.com> Just checking, do you own the copyright, as you've indicated here, or does Unikie? > +// SPDX-License-Identifier: GFDL-1.3-no-invariants-or-later OR CC-BY-SA-4.0 > + > +== Introduction > + > +Spectrum operating system stack is based on the principle of security by compartmentalization. The high level system stack is illustrated in the following diagram. Please wrap text in documentation at 70-80 characters — it makes it easier to review, because it allows attaching feedback to smaller ranges of text. > +image::diagrams/stack.svg[] Once again, I really love this diagram. I think it does a great job at explaining the stack. There's one small error though: the reference VMs are for catgirl and lynx, not irssi and elinks. > +=== Kernel space > + > +In the stack, kernel space security by compartmentalization is supported with linux kernel that includes kernel-based virtual machine (KVM) module enabling the kernel to work as virtual-machine manager, hypervisor. Kernel side hypervisor supports virtualization of hardware resources - computational cores, memory and devices - securely. Userspace virtual machine guests are managed with cloud-hypervisor. Linux with KVM also supports portability to several hardware architectures. Currently Spectrum is supported only on x86_64 but ARM64 is under works. In addition, hardened kernel is to be enabled. This is also a good explanation. :) I think it would be clearer to say "kernel hardening will be investigated" than "hardened kernel is to be enabled", because kernel hardening isn't something you can just turn on! It also needs some small grammar fixes, e.g. it should be "*The* kernel-side hypervisor". But I'm happy doing a quick pass over myself looking for spelling/grammar fixes when we have a version of the patch that's otherwise ready to apply. > +=== Host user space > + > +This section provides high level overview of host user space tools and libraries. > + > +User space stack is build on musl standard C library with added safety on resource exhaustion and security hardening on memory allocation. Optional, but it would be cool to link to something explaining these security features of Musl. > +https://skarnet.org/software/s6-rc/overview.html[s6-rc] service manager is used for services. kmod, util-linux and busybox are provided for essential system administration. This makes it sound like manual system administration is required, which ideally it won't be. The main reason kmod, util-linux, and busybox are there is for boot and service startup scripts. But I'm not sure what a better phrasing would be. > +https://github.com/cloud-hypervisor/cloud-hypervisor[cloud-hypervisor] is a host tooling for virtual machine management, written in Rust with a strong focus on security. > + > +Wayland refers to whole display stack providing communication with compositor (weston) for desktop services, including libraries and drivers for direct rendering and event devices. Clients are implemented as application virtual machines (see next section). Minimal host provides only Wayland terminal client, foot. Wayland, a simpler and more secure, protocol for compositor could provide support for legacy X applications as well but as of now none are provided. https://wayland.freedesktop.org/architecture.html[Wayland architecture] is well documented here. > + > +=== Application and system virtual machines > + > +Security by compartmentalization in Spectrum is implemented with virtual machines. Virtual machines currently launch using terminal and support only wayland-console. Wayland graphics support for appvms is under work. Please refer to https://spectrum-os.org/doc/running-vms.html[running VMs] for more information. When you say "wayland-console", do you mean virtio-console, or something else? You can use AsciiDoctor's xref: syntax for linking to other documentation pages, which means the links will also work e.g. if the documentation is built locally. There should be examples in other documentation pages. > +Reference set of virtual machines includes system machine, netvm, and application VMs, appvm-catgirl and appvm-elinks. Please refer to https://spectrum-os.org/doc/creating-vms.html[creating VMs] for more information. > + > +== Details of Spectrum dependency tree > + > +High level overview of Spectrum stack is limited view to the system. For detailed, interactive view to dependencies please use `nix-tree` under the spectrum repository: > + > +`nix-build img/live -I nixpkgs=https://spectrum-os.org/git/nixpkgs/snapshot/nixpkgs-rootfs.tar.gz --no-out-link | xargs -o nix-tree` > + > +https://diode.zone/w/8DBDQ6HQUe5UUdLkpDuL35[See video of Spectrum live image interactive analysis with nix-tree] > \ No newline at end of file (Minor) Text files should end with a trailing newline, per POSIX. But this is also in the class of things I wouldn't reject a patch for on their own and would just fix up myself. :) > diff --git a/Documentation/default.nix b/Documentation/default.nix > index 02b3c31..8b969d4 100644 > --- a/Documentation/default.nix > +++ b/Documentation/default.nix > @@ -3,7 +3,7 @@ > > { pkgs ? import <nixpkgs> {} }: pkgs.callPackage ( > > -{ lib, runCommand, jekyll }: > +{ lib, runCommand, jekyll, drawio-headless }: > > runCommand "spectrum-docs" { > src = with lib; cleanSourceWith { > @@ -14,11 +14,13 @@ runCommand "spectrum-docs" { > !(hasSuffix ".nix" name); > }; > > - nativeBuildInputs = [ jekyll ]; > + nativeBuildInputs = [ jekyll drawio-headless ]; > > passthru = { inherit jekyll; }; > -} '' > +} > + '' > jekyll build --disable-disk-cache -b /doc -s $src -d $out > + drawio --recursive $out/diagrams/ --export -f svg $out/assets/images/ > '' > ) { > jekyll = import ./jekyll.nix { inherit pkgs; }; > diff --git a/Documentation/diagrams/stack.drawio b/Documentation/diagrams/stack.drawio > new file mode 100644 > index 0000000..23feae7 > --- /dev/null > +++ b/Documentation/diagrams/stack.drawio > @@ -0,0 +1 @@ > +<mxfile host="Electron" modified="2022-05-24T12:19:30.186Z" agent="5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) draw.io/15.7.3 Chrome/91.0.4472.164 Electron/13.6.1 Safari/537.36" etag="8D9FBMK4C5lWSHGzQpql" version="15.7.3" type="device"><diagram id="C5RBs43oDa-KdzZeNtuy" name="Page-1">7VrbcuI4EP0aqiYPTPkOPBIyJJtkdneSnUnmaUtggVWRLUeSueTrV7JljC8ZHArjhZoXbLdal+5z1FJLdMyRv7qmIPS+EhfijqG5q4551TEMXdcM8ZCStZJohp1I5hS5SpYJHtEbTBWVNEIuZDlFTgjmKMwLpyQI4JTnZIBSssyrzQjO9xqCOSwJHqcAl6VPyOVeIu0bvUx+A9HcS3vWnUFS4oNUWVnCPOCS5ZbI/NIxR5QQnrz5qxHE0nupX57+WD/h+xfn+vYbewXfL+/++fNHN2ls/JEqGxMoDPjeTU+e7/r61e34/vvPt8Xz8hX2//qmqmgLgCPlr47hYNHJ5YyIvoS/wTQpcF4jaejlA5kQTrJv6Ri+xnklWbnLYi4MhYJhhKvtGs5cPm8AdZfCJqHwadV3LtKehQlJ54macv6mD4OSKHChtEoTxUsPcfgYJsNcChILmcd9LL70Te2drlMuXkDK4WqLOMqV15D4kNO1UFGlG36reeFY6nuZkcx2lMzbIlgqA4rX803TGXbiRcH3ASj1FqG8R0G0io0Xthva3Y+vJw2m3W8bTKNFMKeYRG7XW4eQLhAj9KSgNPt5KC2tDKWhHRNKswTlHaRBvMyy2D1FPwpLed5ZjFPyAkcECzDMq4AEUGKJMC6IAEbzQHxOhVOhkF9KvyGxFg5VgY9cV3ZTiU4ePwn1GPgIS0cqciVStcZLFJJvEtG4HY9zsagbtuSWLXwmf6QC+zwnZI4hCBH7PCV+XDBlsep4lvQhXrNeGiNHYZoP7BI39KppbjbFDavEjRvC5PSOmMDvN0FaJojVa5sgdovrgB8xMT4H+BL7YMLkoyu0R0XhuwtEIhYkDt4fhYI3Hsem4Y5hmlbMOGVMXixV499adjAOAlfsNX8x7GSI+WE372CMJhRIkpzQ+lraKhltb5V6FVOk4DkYuEOZSmaBcMtTtaPawaNYMVa6gHnxQD4OIHRzWXAZvm14KtBJZRRiwNEinztXQaZ6+JugeJak7HhnH522wGIfqkrbuWqhHX2woyEO6BzyUkMxgTZW1+LUM354ewrGV7fL4XDQ5Xr47+T+IGnxR4LgzhDmdOl0R7xqIHyUwkJdQtYOH5ZTDh+DhqJHJdLl3Xm7SC/BGovl6hywtmukYrp+TLDL2+12wZ5EbD0hq3MA29F2T2y9d0ywD7F1PiTYM3lQHO9x48YmNC34JFIx/+IsSDDYPeP7x+SA8z/jwItPziK0m3Vmu3VMpAcHQHpfVCOOcBcnR+Clye2jAPkAX5SLTgpxy6qBeFN5XyXiepsXHkwkILy78E8Kw9Lmu2pDdtQ1Wm/zniOAPANwa8ayNVv4pz5fi1hvMvxtrKsyLd1uDOyqXOtsTmoKJzD7A3ikkxo7Rw9zMMi3UP+kZkdDDZ/U6IfI6faNIIgyhioiCAjD048gllYjglStFg1GkDavQ6DY4b2wc0Xb7u1Gu/LevEG0y9nbA5xBYaa8E9UWiPII4LLffTD1UABZydG/702bYk/h3tTUayYHe9ybis/sL3fJKpL9c9H88h8=</diagram></mxfile> > \ No newline at end of file > -- > 2.33.3 > > [-- Attachment #2: signature.asc --] [-- Type: application/pgp-signature, Size: 833 bytes --] ^ permalink raw reply [flat|nested] 4+ messages in thread
end of thread, other threads:[~2022-06-03 10:54 UTC | newest]
Thread overview: 4+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
[not found] <20220524125252.389606-1-ville.ilvonen@unikie.com>
2022-05-24 13:57 ` [PATCH] doc: architecture view with drawio to svg generation Ville Ilvonen
2022-05-24 13:56 Ville Ilvonen
2022-06-03 7:15 ` Ville Ilvonen
2022-06-03 10:54 ` Alyssa Ross
Code repositories for project(s) associated with this public inbox https://spectrum-os.org/git/crosvm https://spectrum-os.org/git/doc https://spectrum-os.org/git/mktuntap https://spectrum-os.org/git/nixpkgs https://spectrum-os.org/git/spectrum https://spectrum-os.org/git/ucspi-vsock https://spectrum-os.org/git/www This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox; as well as URLs for NNTP newsgroup(s).