From 1855dd1ac8ea6222206d8a226c4ad21e17081ff1 Mon Sep 17 00:00:00 2001 From: MartaSien <86041155+MartaSien@users.noreply.github.com> Date: Tue, 14 Apr 2026 16:26:01 +0000 Subject: [PATCH 01/16] Update website --- docs/index.html | 294 ++++++++++------ zasoby.csv | 911 ++++++++++++++++++++++++------------------------ 2 files changed, 655 insertions(+), 550 deletions(-) diff --git a/docs/index.html b/docs/index.html index 54ab1de..77039e7 100644 --- a/docs/index.html +++ b/docs/index.html @@ -76,6 +76,202 @@ +
No=(hOwD#`N+!?QCwcMK5y7o+X zX6R8Nk+U%j(Lz@LQow>zzt zmtPd?aop|9oOGLY b4am72q zEhm(2Y*pHNyQ)mXnxXz#($D+MrC-#=bvN|&8LZ#hC;XhFe*c~@SLqezT=h%cWdEI5 z_vQ%y4fT|N`qz|yy8RAn!cwk>ZD{(-b@KLftLS|zw*6<8^82%Bzly^eP&MP}>gTe~ HDWM4f(F`j$ literal 0 HcmV?d00001 diff --git a/tests/labeler/infra/test_renderer.py b/tests/labeler/infra/test_renderer.py new file mode 100644 index 0000000..f3597bc --- /dev/null +++ b/tests/labeler/infra/test_renderer.py @@ -0,0 +1,50 @@ +from labeler.domain.objects import LabelDefinition, Dimension +from labeler.infra.renderer import PILRenderer + + +def test_simple_label(get_test_image): + renderer = PILRenderer() + expected_label = get_test_image("simple_label_test.png") + + definition = LabelDefinition( + text="dolphin", length=Dimension(mm=40), width=Dimension(mm=10), dpi=600 + ) + + label = renderer.render_label(definition) + + assert label.bytes == expected_label + + +def test_multiline_label(get_test_image): + label_text = "dolphin\nis\nawesome" + expected_label = get_test_image("multiline_label_test.png") + + renderer = PILRenderer() + definition = LabelDefinition( + text=label_text, length=Dimension(mm=40), width=Dimension(mm=10), dpi=600 + ) + + label = renderer.render_label(definition) + assert label.bytes == expected_label + + +def test_simple_label_no_fixed_width(get_test_image, save_test_image): + renderer = PILRenderer() + expected_label = get_test_image("no_fixed_width.png") + + definition = LabelDefinition(text="dolphin", width=Dimension(mm=10), dpi=600) + + label = renderer.render_label(definition) + assert label.bytes == expected_label + + +def test_multiline_label_no_fixed_width(get_test_image, save_test_image): + renderer = PILRenderer() + expected_label = get_test_image("multiline_no_fixed_width.png") + + definition = LabelDefinition( + text="dolphin\nis\nawesome", width=Dimension(mm=10), dpi=600 + ) + + label = renderer.render_label(definition) + assert label.bytes == expected_label From 8c420af0afd5809eb5c5ef6be753f4cabbbcb342 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Hubert=20Bry=C5=82kowski?= Date: Sun, 9 Jul 2023 15:10:24 +0200 Subject: [PATCH 03/16] add function for getting info about installed tape --- labeler/domain/objects.py | 1 + .../infra/e550w_printer/media_definitions.py | 81 ++++++++++++++++++ labeler/infra/e550w_printer/printer.py | 74 ++++++++++++++++ .../brother/technical_reference_manual.pdf | Bin 0 -> 951091 bytes tests/fixtures.py | 23 +++++ tests/labeler/domain/test_objects.py | 1 + tests/labeler/infra/test_renderer.py | 6 +- 7 files changed, 183 insertions(+), 3 deletions(-) create mode 100644 labeler/infra/e550w_printer/media_definitions.py create mode 100644 labeler/infra/e550w_printer/printer.py create mode 100644 labeler_docs/brother/technical_reference_manual.pdf diff --git a/labeler/domain/objects.py b/labeler/domain/objects.py index 950efba..a9a1cbe 100644 --- a/labeler/domain/objects.py +++ b/labeler/domain/objects.py @@ -108,6 +108,7 @@ class MediaDefinition(BaseModel): minimal_margin_vertical: Dimension minimal_margin_horizontal: Dimension dpi: int + description: str @property def printable_width(self) -> Dimension: diff --git a/labeler/infra/e550w_printer/media_definitions.py b/labeler/infra/e550w_printer/media_definitions.py new file mode 100644 index 0000000..20afe3b --- /dev/null +++ b/labeler/infra/e550w_printer/media_definitions.py @@ -0,0 +1,81 @@ +""" +Values from technical reference manual, can be found in /labeler_docs/brother/technical_reference_manual.pdf +""" + +WIDTH_BYTE = 10 +TYPE_BYTE = 11 +COLOR_BYTE = 24 +TEXT_COLOR_BYTE = 25 + + +def media_width(code): + if code == 0: + raise ValueError("NO TAPE") + elif code == 4: + return 3.5 + else: + return code + + +def media_type(code): + media = { + 0: "NO TAPE", + 1: "Laminated tape", + 0x11: "Heat-Shrink Tube", + 0x03: "Non-laminated tape", + 0xFF: "Incompatible tape", + } + return media.get(code) + + +def tape_color(code): + colors = { + 0x01: "White", + 0x02: "Other", + 0x03: "Clear", + 0x04: "Red", + 0x05: "Blue", + 0x06: "Yellow", + 0x07: "Green", + 0x08: "Black", + 0x09: "Clear(White text)", + 0x20: "Matte White", + 0x21: "Matte Clear", + 0x22: "Matte Silver", + 0x23: "Satin Gold", + 0x24: "Satin Silver", + 0x30: "Blue(D)", + 0x31: "Red(D)", + 0x40: "Fluorescent Orange", + 0x41: "Fluorescent Yellow", + 0x50: "Berry Pink(S)", + 0x51: "Light Gray(S)", + 0x52: "Lime Green(S)", + 0x60: "Yellow(F)", + 0x61: "Pink(F)", + 0x62: "Blue(F)", + 0x70: "White(Heat-shrink Tube)", + 0x90: "White(Flex. ID)", + 0x91: "Yellow(Flex. ID)", + 0xF0: "Cleaning", + 0xF1: "Stencil", + 0xFF: "Incompatible", + } + + return colors.get(code) + + +def text_color(code): + colors = { + 0x01: "White", + 0x04: "Red", + 0x05: "Blue", + 0x08: "Black", + 0x0A: "Gold", + 0x62: "Blue(F)", + 0xF0: "Cleaning", + 0xF1: "Stencil", + 0x02: "Other", + 0xFF: "Incompatible", + } + return colors.get(code) diff --git a/labeler/infra/e550w_printer/printer.py b/labeler/infra/e550w_printer/printer.py new file mode 100644 index 0000000..62850da --- /dev/null +++ b/labeler/infra/e550w_printer/printer.py @@ -0,0 +1,74 @@ +from math import inf + +from pysnmp.entity.engine import SnmpEngine +from pysnmp.hlapi import getCmd, CommunityData, UdpTransportTarget, ContextData +from pysnmp.smi.rfc1902 import ObjectType, ObjectIdentity + +from labeler.domain.objects import MediaDefinition, Dimension +from labeler.infra.e550w_printer.media_definitions import ( + media_width, + tape_color, + text_color, + media_type, + WIDTH_BYTE, + COLOR_BYTE, + TEXT_COLOR_BYTE, + TYPE_BYTE, +) +from labeler.interfaces import Printer + + +class E550W(Printer): + def __init__(self, ip_address: str): + self.ip_address = ip_address + self.snmp_port = 161 + + def get_installed_media(self) -> MediaDefinition: + pass + + def __get_printer_status(self): + raw_snmp_data = self.__get_snmp_status().asNumbers() + width = media_width(raw_snmp_data[WIDTH_BYTE]) + media_tape_color = tape_color(raw_snmp_data[COLOR_BYTE]) + media_text_color = text_color(raw_snmp_data[TEXT_COLOR_BYTE]) + tape_type = media_type(raw_snmp_data[TYPE_BYTE]) + + return MediaDefinition( + width=Dimension(mm=width), + length=Dimension(mm=inf), + minimal_margin_vertical=Dimension(mm=1), + minimal_margin_horizontal=Dimension(mm=2), + dpi=600, + description=f"{tape_type} - {width}mm, {media_text_color} on {media_tape_color} background", + ) + + def __get_snmp_status(self): + """ + This oid was found by using wireshark, however it's also documented here: + https://support.brother.com/g/s/es/dev/en/command/faq/index.html?c=eu_ot&lang=en&navi=offall&comple=on&redirect=on + just not for the E550W model. + """ + oid = "1.3.6.1.4.1.2435.3.3.9.1.6.1.0" + + error_indication, error_status, error_index, var_binds = next( + getCmd( + SnmpEngine(), + CommunityData("public", mpModel=0), + UdpTransportTarget((self.ip_address, self.snmp_port)), + ContextData(), + ObjectType(ObjectIdentity(oid)), + ) + ) + + if error_indication: + raise Exception(error_indication) + elif error_status: + raise Exception( + "%s at %s" + % ( + error_status.prettyPrint(), + error_index and var_binds[int(error_index) - 1][0] or "?", + ) + ) + else: + return var_binds[0][1] diff --git a/labeler_docs/brother/technical_reference_manual.pdf b/labeler_docs/brother/technical_reference_manual.pdf new file mode 100644 index 0000000000000000000000000000000000000000..305e9a01e7f9cee94d56f17143f84d3645206dab GIT binary patch literal 951091 zcmY!laB ?((8$hC-!(6} zsIs6$!PMMb!9XEM-z_tzB(+H2Ehn)g6=H kyas)D(N zk$y;JL8^X4P->cfc(kE{u>vSWic5-86LWdFGVUcMr6dR>BqSv~IKej2XTPJ$V;6yw z3z*aPvrIh0sW7ROJ>qPkz{xsh4 Up_R^HQLeLL;NNB(bQZq9`?u zm&<^cOI6j?-;I|G5kaG@VG;toT;>*rh@6Hk%P1IHm{{t=6SakfzQ2N@g|V@Iu!5nv zv5B1>H05x;k*PW1CTkiHAz#9DkcFvzp$&^j*<*_z8Taz}!_po~bs2wlx?R6}@`=J( zll)EA-12_=Y#x74^u>ec{-2nly+Hl+#bEA@7u%ZuT>Y)Ae)N~Z$4U0vMc1*IEQtSq z@YZzmkk>X*Tc^rQpIkZRLE+Z*885Of|8tHFd*Y**w@b!hziUk#zrYGHZO5vN(BGS1 zo_!+!F=xxna{h(4ROYp9uRYXq)Oz7kfu*Zfd|y$Sp&PYolJUgYo&-A^->vfRg2YcX zz07ZH&6=<;ERk)(hp2*o6BO^+I>ef`?v&b^w?WCz#4)6!p}PFZ|C7;6jvQwQ-+XoM zqJsGNBDwyc|8s)2T`39_%9*b2awVtu$kb)`LxS^Nc?8Qs7=KD0I40TG`88uw_-mW_ zw>HhWqV@mXi%&g%2fIVrtY)m6{vmJv^4Y&X%ksK@^86{*eOAxl$&)+Xix-s}=N#KU z$9sR5_LH@*UCwo%o58iT!=RAq`OTV)d0CH+A8R*Uy;mYAx8&2Y39K=~7p}y)d=@&Q zCTt|UR&-mV>6Px4ArpGqcmFzlZ^GlY RjncA-;R%)S-Lif`q9urKurNe|x? zc-il+)6Nf9VvS|JSC^gX5dE@ey2|mS4}k~x9oeV-%-rETdFAU1zx{I3U$Zj#^#o2? zRNSX?TU~nJLEiEVnG@ODa% KR+YxfoWcyw73Tc)sAf zkAUpQS2K !xY%gG@7b z_6phswRSO2nfs#APvSglrNA?lJ#AkWhtEC#`jJOAPd%$v {q zc8#aycg^FzZ(zIh^P&q=&PV5ac|J}|{WE<-=3iE`o1f4ARx;n1aA48Oy>r=LDcxBU z643XyTGedLf!M17Rrk9hkN!_ &||1cZcbN?n{4Ov32ObXFB1)Q+>+k v`ee;f%aZaacgpQUR~VKXDZQDxK8#4Fw3vS!|X zsmXk^t_1&5l@m^yZ&(<_#ddpbITy>re(|l)hAvw>u2$~G4av##O(l#)S-L}X<}y!z zI;W!f$`8GYYe#ltsfHj`IjD62s`%Y(Z1jUmQk+4wV`)i-YguYuiM~sIvVTEpp1!l2 zufC&eaG0?^w5&2Vva_?ZgEa$!OA_-^5{pt`vPPz6`u-X{*O&DacUbdz)x4HTU~;l$ zw`$L5dn|iANB`Q?`SaeV$SE%sTad}*b4=yt><1Sck26pgXzKgBY82YVX#73AuJ4Qt zYss-?7Y`f~bh;NMA5$c`dZ*ph4R^2I Nu6i?Thcmivr1)5jLMwH*0E3C zWVzU_5Zd`H-=^xHkFcab$m-{JEGr-1u%NCV88r1nT{SMh2>%|Vv1M)SujFG|+y;Ew z71O_p?5GLY@%mO+O`Tm#%nnWcFa=XYbI{Zr)Kbcav@(5DOA=EOOA-}~%#FeACs2$# zCYNO9=P8()TSA0NOL8*vQi~N#EkW(mApL;E^i-e3%KXw2{ou^J^qf?X09e#FKP6Q^ zv^dotss$`qtYB(t1U3oWCUZ_KNzBPlM|Kd%9;ky{qD?J8EmTk|vm{nOSl>NABp*pF zSQ4t%IX|x?HLs*t!PLS8Y`$|*et}bdMYMsQfdUAdTAJz^St?kV80uMA#_Ic~rer4K zkq<~LO3f=#Fg1mk7L;0?Us{x$3Thj>R+P90mn4>?+Sus32OB7uT7oL~AW$yI&nvO9 z(GLj$2|~g!B*aj`)DqlgwX@TY@K4H0O$Mp)%r#IjwE(xF!5JthA7r9}0i>-83Pfa& zf-Hb~6ie&DEwiY&M8O!|elRz)(Dzd?g&5_Zloec(i)cV3Tn>^cc73t#x=iS_jecE^ zR=R{N4)d(~qu0S;TKH!D+}x(0^A^f}+h-XV@%V2$ i2emvE!SMarf&Ciu`l? z=4u)JecR|Gu}&`ZRJHDle^=L?U)Gf@!qj)gWc}s?oi61|<_S;u%j{Y!IXS0V?qsRU zmzNuArm#FwxqT#0d3MN-hwDFo_O?q{X0l%W)Xf>MMeFLs0vOpnT@2q(abBTYe7LiD z=YQjs!e{s8a&1$X{Y&TZoTqQwUq1YNFKo77w}w|&=r6-IiFm)_MT?dnzw+Y8^r`zp z<(Gf^)3a_X=Z_L~_5I5x&H9yR=JdPkcvY_dq1=F3hne?uzYX8$;cw+qP&~tLs{E&$ zJ4KZodA`}H94M=qF2i*;>t-a2n$4=YyR*9P|8Fh$ 5bvUj7?b>QyM!74{%G z)$so{e+9{|qsB~e@3IfynOyFw`lm=KI`4bq$Fdufo)?MEJ9qE5(|5LXdppjw2!}+5 zCA;)RzPB3cNj$8{>0nK^m~d~Ncauw_VsG(On`Vi~y|?+b)84zkT62LfOD*@*)P4HT zUS9n7FUzLDbKXn|`GZjfud2*??}cBBUK9~&X)49G&3m!heOaHN7Yw<}>= ;L3tq5_@*z@e=n
%NZ;Zh#+aU@R{6FSEGcVyJm++td#2}FcjUn7 zpa!oAjIu_Y>$H^PYI=)<|7z`!%_#EhIaMJY^6mWISp_ApD~?47u$t+_&6HWQQMI$_ ziouFy>6PEsdrefCdn{*e$Q#>=MH>|RW&5K4GIbd+@lHC}-#0Dfe&w-_@7Xg?_4u5* z`Dw?iO^5%nxvSq*dLDD&XJ*B6t3wa_UK|#Cv`pr4WN_fCuN-f`cdN)uc1n68eK?4@ zHETx$kNVxxE%$9dFt3vka9{quw34ZXaeCU3i=`g>|1q&X^M82#w2Jq%B`a*Ew%KdP zTCG2(@i69Q?@Ir5t@D3GU3NIKvE{{#Zw)o=}SYB>379cR=(5k<#GWh;MeYdc%3 z^k;_G)}1Pw76$8tFRHV {O@Rq~ zX6H>}#hkZ1o=~%Qf&1;n?X5pzf;O$2bB^`)nof=+(fzNJZr)KXT3xVFW!Vq!>n#uO z1-3leke4w%W@=K-i|J7>c-gFXo_V!4`K|Rqg}V6kT35sFKX-Odvu(}!Ui WJ9cHJHGTunGwHzL)5y$N41uEzoHkYD))-6 zKEEO6_qF*`5+|ClZTh3b<}r_{W@=97vw6F2Y3`WG{yO9FjtSnYZWR4+npu62b3>o= zepW}}jl zbAcEEHw}Y6<$rNTOY5IYJF+Z%c_ryg>Z_co4nZ$2ZLQ>*wwteS{kP)wN53pY?!7O+ zmb{0rXU$Ku?4Oz|--mp7sqyLm$cei{luah+A`1Rpw^M9Mw>-u R8JyP#c3_xn*WzfGD;~KFp7v zJ@eY0yGbn%H+!gTG7;L`v-|9aZ~OPxM$S%s)~E0%QL?z5ZPn%VeQS1S^b~BCj(%x% zR)+idqd5hJ>weDBSP>o?eDeGRO}5i~vvoBmw();!70TImYi?f4lQ(PDMXiaty{ASl zQ~Y>@{)#t`u5MlR<&K@%we@R_Hr$hSebejo=EH;dj7M9#bZ1l_tNDG(rC;{{EY=6& z*$WJsK5ufLWzORk|5+&gn5MeQchfmJJO7>t_Scx<8L=$P(|iBwe)r9M2R SXI z^x9K(8G!>F`a8G3Y+%%8)LP8QocYJ`($bsqClu{UA{`D%#M__c^%r1_JnbG_(0coR zW8?GKH5w5|YPL-}cXj8+Nwp4MvzID-vu!q8XJ7GDNYP{V8s@u=0rfVQLtp&7TyHt| z4bw!fo3_s*dwaL1L>?$N-Q^J98ozo$)Ulh}%w}ucbGLt5bHbRvag)fuAN=wuQ{vVw z+06LUWx|=QHlbF{=OaqWg&xeVkz3;0wyxd9R`LG>yDYa8OHC5HC1uqgtY@td5dD2= zyX5)y{T#km+t<7G)x5BsdV537eZ3yFrDd*vAEg;N9ab&w+&c5MMaPN4c;S7*OA}5o zEJyo zUuA7Z%^!shg car$*JcllPy9}ZXglAbPRzOY4j>2-^+B3+h6@8`_Gnv6kh zY=X(y(98lU9Zy%xaqW85X?9Y~{BgkNC}-tmb!l4}-6r?!Gbtz!lns0>`|{} xWd$aarRL{Dn1Do63l%^X|LI}{b%mtC-Z@4dWjr>-g<_r4VqQ7~sQ fwzyey>MwQIwfl5zkpLx)$psG!=ZU^?G#yp1Y(_k`=`k> zN(s!_Q>A0QV~I}LTlv~|oD*Vnn=gIkGUUs-#HBPlNo)SDl11F=nTHkXUtF8iwpvk# zadqH@>BblL^yKuuyZL&K`BuSgTYQXOh_lSfe|PKX ol$8e__xmztd7ozj^w}S!qw1cjPUMe&v%(Zd*!D>0H{I=myj@2(W z8fKh*b?4|VlQ$)57v}Ch(JR7mFZQ3b&F 68)&fPfl zNo{}Z_v)8IrJVn? -qf;nmpez1%wI#k>ByFNqGl zl^wLI{&M}CSqlBnZ|t(I^%BnBrr~ukFFRF}|Ba6QW?qX+&VSNpKS{QhySbD(ZF9#* z-NL&J0m1&|>)3bX^E}kMFe~9Bqmx+2*^R}g?p>a>YX$Gx59Yh#J{j2GxZ(QONW}f2 zSxU?KOz-ph^TbVKiZ8QCE^_$3V`7>`lbq+d+z$~ARwnFT@e5`fta+8OQBTT5q&o6v zf0xz#B@9pWe)?C=` RgzwbzFI22FJF<=c)hLzTYfyD|R@$f6tbzIZHl^ z@IN!wxW`!DAM))F6`RtsNe6p9NEB?rG35X19onsIdA? ZW)8p1-fI{c-!+Z{J7V9P{Jm?`>P9c3H+qLb^jkDKo@GdhXN(Uc#Gpi7>K; z7H_>;wfU0R3$Aq>sXYglcwF7}`}l$D2f2g9j&=I=cW~vHe44vUrNefu-mf?2%#$X4 zU;cW5OIW8 i*U#oZWrg&@p7+yNmM*0@6RMVc@acF4huT zzt!)LB=fZoo4Iww7VFOnxOI0&DNpU`O_|FB-&=po(6F_-sdQt-Pga%N+g1s`XOgs) zUGU3o&yE-EN-;YW*Rx5Rl;l>tF20fH^0VmfG{?`kPTbKv$CLBnhI>i)?GNu?pWbqJ zy3g|J?~^a~x&4yhKc;$Zi&s(ZO*h*U|D@ZbD$U-hM9S<@iSyaGY3HpDCf%zuACyer zb!o=Nd484a3#xs}v`V<=u85l=bIbSti{N>Vvz;cdU`X7?v*wWSlrM7@UY+t{U4n!4 zwg#KEEQ&8ChFq-7Rmezw@G&t|I`&PQS9#9Sq>So`_*A0{vmwusoY{85PI~wB|C^JdAj=2n?HWqjTa{M zY>e#Q7L@k> Oi+15>8KAh{Ee};?o(>29escD^@kGJ?PbLr?= zBh}k}U~m4m6XG^^H?_HJI (!P1(-AYp%x*&yed* z5pWit+otHppO|1>6p;Djr;A0=@4yDr9{ydGL8ta=99U5CQTzSJpee!af?sy3$=tnC zrZta$qNcvupS3C~r(SHhoTT#q<_XEJW8&PbJ3Acff;gA$Yn3j2ICGh;X_D#d6EpWN zIC}h$%_Wt~U(4pqEQ;}$e`Rab)Vv|>x!s|D_1gax#(@oDThh+mI`L>hzxLJ(OJ+P^ z B^ z;u{@HvOO+MFL}4~;PvG1`nqpqCUgF~&(8CvLn*Ga E?6C-oiX5T*B zq9?Y_bD}W&bJG$Xg_zteS^fXK6Hf?EJ6@7-*!G9;bl!`{i>BlUmYuo2KIxp6Wzvng zOF8vFOkbw5H*>qY%jRvSE$h|_u*pt{N$6^*(|Z#w_`It&beH9(o4t!4%025pe2SZC zrMJLFnZ B?|e7&%`Edv|NB`%MtN7sYvn8Pg$a+lT&8rmYX$W? zw5jFo;B?#KS?l@#$;yW_CoPa-Sl)bp_O;(K0V X16BoR+T$>TSaBf)rMCLsz;x# zT~raYblP`uznQ!5^|f5QwlnNoe?wR9+~1M%pKC(cPd`lxpXs>PwfdpW2Ih3d2{#od z{(W7vhGS)8c8=!R{OEi8`fo4>a@MN|GN~)Caa*HlQoDum<@paUqJ=!=Q_mF!-|!Y$ zK0E38DY4I8&)OC<|E?|g`fA$q*~fo&Y`AcgC+*Td0m0iF4!IWZ4nELom-W_NDgFEA zC3BKQcd~ByBee4QMZ3T)KK)WU9bwx||Jh!BQ``FQpyeU^YxRE{v+i!(U%F6VvMbux ztGVVxB-@=`xy%LkZ{K=X8@qtn^GMjS>4MUiqt(4SCT0KoKC9qB@o!}|#izS79tJP| z5h*UCy7+nAzF29QSIr8NCr#%`G@HM5Z};=E3F>$swxW$^wpiW@sZZ)!TVqx^&E5A; z%lYKO9J$}$QVs4acKV+&cqii1*l?jVgmJBJ{2{$dTebdPt(|dezlmyt$I9BwIc9EA zn~f|_q&Ejm{U>v7i;NFfUq$ (>+f_?gJU*H| zOJQcnRT0qjO`FtH{b5h~Y2l!hnpuV4HMT@g`4-c6l1bw*w{~-AVdWiz%5T@^?`b~0 z?>N^&Z!NC}*WA- WRW2;HxpKgg%|80l9@b^qIoW+?f`~INXpEFm# zbKRJ%V1Cxm^}+jTC2n7m+2a(i7`^?vXj#hfUwT#t%au;dyAa ^`CN;OLLQ1g<(kp>F?cg45>9pL?7bc~h~VaAClcnGvS%eA@!drd!Gs zf4Ev8@Z+!5+G&Tsc)h$5@g*-iORn%!f-$RuA5Vh(k@cTe*qqUJ6HaxqxcYy>Y=$#C zrG+CVUca&6$@NQ&=T#lPJge1fpLc0$;xWU;``GFj{%t&1rF$+%yi7)DddH;2#WsBV zHidm=4V;$w=Bhbgf%< >Mxa V19@%z5qoq$%YtB0%=Cdb;(^YL*G zJ##%gYQe+Jp?hQZzFnJaUn<1aT3RP?ZtJRU|B#wTXSqMV*01ig`;nv|?y*Cc+4sw| z>8UraFn-IPp=1>O%j3v8$5qkAk9{kie%SQ(g)W!4z~YJ(Us@Q; dtOJ8WIe zW8WBYa?9R6?*$ob3tvcn+Z<+Uel;~?tJqmSo8s*jre^ymaGXD{)@HfP-s45P>HF_b z&Du3;z5cI!e?d8F(^ZAgrAz(vAN*g;cC~m(v*Jd_IRZ)ITb@q%VE*~XUHQtug~dOo z$+)*gJM-;#Re6!|!8C58#oJlNx>Ew y=nJ+ht>C~FCPC*pL8Hk#cS2IeSte} zh|Xt r)owLRbI`b>w?jcvjkYG>=5nxAw?^Xi@d6DMDNyMMdX zl9>@ZX7o(xEEPI*>9~~W!Icg6Gnd6Jd&$r?!9nrs58G7j>(}P|5t=r6!@A|QF@5h3 z<|_pY)bRhjD(CL?^ohY_tM)VZz8t%uc=eAg?}w(4T;@f(_YO$8-|upl@C&K?eX`d6 z_G W+MQ<}&%u-L^#~mfd~PJ0q^pv~|7gbEe~2MrV_5dM19Vo93SP;9%6LmBmMv zPArmI$}0XPavPuaFZMkP1y+7f 6<>8#url;sB6rr z_gFf?Go+pS*KFk}OV>0gdGgtQKe}ROm~p4p&c>s uXU-%p86*81`5Yoo{I#vT XZhfS2M&!1AGW+yDA{r&{FTdZl_*&4e{E9!4t1E7CN O{<7eb8 z9!bNL{+GokSh?i2=B5j_JKd?jd^9oi;|imt^-{;)|FFM$N2F9{W5<-Xx>C+^?(iqM zFL^FB-Lw1kjPcB*Yk#Gd@CK; $v zGv}9IKAKlw7FGZKSGeLI=l_1q7f p)N`Z?~Z%_M~#>6++?cTFH zr>ExPyR?-HUR=HS)98T898t@o%mE9mA8d5l{r-Pj$i33@i|tB!&VPu$JNa*Y+si#y z)27>YxgB|CG2?K_8CjW)%1+1Lb=T_meNEo~+dHB8N$Vr#>z#b!ca%LI?_m{|3Q9@Z zT*6~}=wJW$biVbP&It;8HRs$}P`ImKW7etHo5Vk;JlDBl%X=gClSuY!=gO|{>oZnv zlRUi2_;h>Ht4jg5mOe^l$km^w5|kN~mS%n4OlWK81!ohHg_4g#W{1^>z6tZ_JTvog zyVhPc{qEaN? mKoG6? 037^JdN2pq;Ox*w=O|x`!nmxf<8-V}i$?3rbdVQuOC)Zc^Kz>$ |@>@j+F%kA}dr_{p8)m14^o5C%c%xtF{ul@b^TCz+8^1 zkk(-Cq}R(F|2~;$!T#KKgVFZ)cFP@?J;<0 FwjFCT z1?#$7L`!>vmAdvVSoLXc;98*qDO;Nh-8 Sfq zR%%Huy{TL67b~8)!@1|cS;up!x8I5UyXwNVSwZW!bNEv4+cRIAo>;WtOZ&OK*%OXx zwBNr!Cvxh^sh2k>h`+iM{X@b1#Rrk+yREKH$cVb~hBqi%LSD#iU*i7yDS=xH=1>0d z?`*EB^AzT@-=_Lb`4}2I 1;4e!+c<_@MGA+_Isu)fz=_$+N-%Aq6k4Q%#kus@Tn zPWgT8Zh@)jv6CtBw~uX;yqm9i>FCXXgN><2ioPn&xV30bXzFi0&HXwlo>$h@-k$t% zQq*ia*G|7<2jgRVm6%KXBXhNmgji{qM5u17Ec(ivTl~ed?YFs3|GW$QvhI;T=0_LB z9(jDX^5|sQAE&&G_iETZ3ATP&V{k-yd-LV*`ak7tWWP?^cJ%C +tP*p(0?#ArDyZpqFi zo4-#MzM@clz$vl(UV!`m2}|FF*yYQW@SOkPp=#li&@VQbOYGp0`Hz3*@7%?)ef!iW z+A~f)e`FMAd3SY|^FE&gU!NTncslvT{olM(#J`1@f4P10^8uq}AuG2>hHThp{{QOK z?gL`SQf)E>C1!FQb`@NAK-ad+(CbL--S?Aogz{dir?dBIKjPluro;5*=vt;Lk>?Wp zPQ>n;ebV(BThOk__1kq@Si)B^zp-8I@#Ow>nY;669IX6McALv?qFZcyv31<*v`w=F zPTy9IvExwEmdT#JMx@P8Y3{RGkCr6NefP}uSi|dgwU;78W-d tyi5T zJ}@TV`rx`{VN=%ew30C0nSahs->c&G<#EkC&Hl+h_@%$zzwH(M#*Q(+ZQi1`XAT!{ z`kNPa-cwainz>4B@p7Sby@;1*dbA>5ABZrvPChIxRm3f?yWG0< G^0gjX zeYr~Rj?~Vr+jtKJ@d-Ak?Rc8Sw?HE3x5cStSN4g_)xS}mb@;Z7-`pLcIW6b!y(yIX z_0;u-$f65w+%o$WN=iCvn>RY0*%YuR+_RW{Puuas3)40Cu)g`2?zZIL@wkka$9IR? zG3LbGJzr-~xZ+LI+;C4n>wR`k;zq3w0tSCq-I{EF^yu&Tx^=8QHroT8?Jr8WZ);}y zn~}tHYjfJAOwDgPZ82LPZr&?XlOdxTxiE9{k5s;*B|+cWZoKsn%qfvry?E8UQ+M6l zek@-QnzSJ6eNslw3XccOV(ZdBuPV#pVsA6^D-(IT PwtQdr)saA zto$sK<9I8y=W@N4(*HtUsr`;KuKoY_;OWiB)~PE`+sWLJ(bt}P)%p6%RqwJc-?Uzo zaN++N$%)+e9Mg|U HaIeAqQfVhg|psrdR}0XXmUH! zK7(U =3k-Z|h%S*^H`$V>zZjz2-YN2)QvWK3nEKzv$6Y zt&bCojE>6gyYfpv$SJc%WqXs-qv^rIQnE@fSDguQyzQ%UJ7d|q6)}Nx1@(TKA9iT4 z?|Szo`5w>GcBk9YS5@n;R84u_(0tC{k|SrqiE!PiEd1A07e^SxTWoN@Z4zJc!TWuI zu~7exLcyG!(f*%Z7rSxqRtV62uiibiJ#4|o1MFYcu5DqEOG)i6Ycp?qxUy=G)@8=y zOfM6;*_-%JBrHoaRk^~=)}4MKSJsK+edCz`B}*giV&M#pGk5F?W=z?e9DF61<=)+Q zsxyxr;g&eV>#Uf|eRuu8zwIIH|2Td=`@KEzcb!CvqruJXZ8^^!gv=g`rnX%A_3!BB z9U0zRmz_5$x@F?E?zG#P{c~Ll-v=5k{BWsCtl;;YFve{{EZ)7x+vgltZg8*_dQ|AQ z D?bRmJRw!gFHy28Iwqq !f4ooST&5?^d0|0e-|KcI+j~6~9p_zs6`osktspjYHv7LXN&a`Mo&++PyB4r5 z*ehc1b?3F|#EXwFX*RwLEp|;coOhxp>)gtf=f8;f7Wgmmdplq1iSDCv2hHM5->QW} z3z?G+m`bvI;j&(MDnHIGmA~O!4BzriQ)O98Dt0<|I5-_Hh?u@8R{yO{;oc`VZeQ*< zUiaN uYdjLz;`BBMNEZzj|W5S zrkz{99E;n*6;t2(e#7VbGjlWURq| x^Nx8~YhU4*l+U0sNBAmZ$n5g4D8Wq{kN$=&vr#$0*eEsO#P }r{MN?8-?aRdqInN2N{?5OCw{O~Xjaw_C>q@>KYOV>- z?G;|d@=jd0AXR$iZl2kKCre&Dob&mYnp>34O0HLvOs)2QzP$2RS*u=!p>fnHqo7Hl zZodkSDnGilkfES`RpUbj4`Iu*`=t&{==!K@Z@gu9c${y0->UT=Q};zQ_4gOBFt03q zYIN}!Z$__>WXE>XthFlQ$Fv!IBpPIL57zUP+>DR2?vmX7(Um!^Z(%OON7Hx5=9a#? z^6;>Ns5R5xkE*Pp*9t>gmR0;dWOdA>l}#q|!-n!XmEJ~zrcRrsj;EXt@LI3&-~wOs z#$A(VR6Sl3ob%#l{g%vGULJ{Emy@`-S)5B_?GwFHcI5|7*cGMpelmx|h3oSg|9CiF zmXAI;KR&<0pyS)@&58XPA7hU!_;@;Qwno68?Aur8SDwA|AT6Jp=Z62n4d*#NZdmw7 z{QLQ)IkR5nZTJ50ux##a&OXiU`z3dI$o31I-CrVem0hDwp8Xrw fk*YWM4y~0)b z*Uz3<>`geowLtWIYw7|muOru4vk&e4zyDXf@V`I2M~uz>Pq!{+{5vPhp!Dm?Lp|YK zR$sCeoHAwCW~|~YU0U|;MxgG){~JZpSgbO=q8Co}-Sv|H-QKnDyREha2}oYp@x?GD zKW)X+lZKb1vi5JVoY>O&XP(ii4!ym>eacx4CqFrKz5KUr@`bcFeF5)Ej@O1Ath{*s zLHU9VqZwumVSaNj&NlFT@04LNhsjKDcf|YXCtF>Qy-6~Ns%XhC4i_0B^ z|80Etzw)K=QOEiGztW!Ue!R4|UGvCK&-eU?qu*4on$FTI``!2TUw-T7OO31AZ_G2D zydij(6#q6Jl|Rv^ojT*JFP^__+2uCRN8pFvffhEV>N!z0VrR?a7ptCcTyw!#qWjUR zbFBV`9Ui?WuYJ(goe MN5`mk9|?8 zw(a6nzSZ2HYtOFkN-|sg=SKM~Th VYTjdz|k-+O^qz)_?7f6PsMDL^wW}>ThVQEa}^_djHv` z#Rr!s{%D>R^)7_hOJUN&HNhO0OVzBqCrvnd-md6rU3Jo-dp54==BGK=f6yt;_uS#r z`5}La%2DSU*2E~=-7^nPb2n>r5!~!ne?iqHC3JdT_yyt2^rz}ynWm|ne)1zlF1K-g zvs&hRyUdwPhvSxSf6h1m*&p?_(W!w>4XduIxP9%qnf$Ol|LBhM=3j5_I>SEc=`2;@ zs}Hp=T#KIh%cSG(_p{<3f2wG=d}c~H+4$>b^1*}8--VZ`m@m4|{CD-&jeDbcBW?3~ z)!1gbFY2z;)1UI{&$mPisXuP64%Ru#I+NCk^Q9T;9e!Jpz436Sb=AfDp=++oEjrus z MK3IE@nON z1cAz{?fUa=%nTcQWZ5=zif!_k*!`)(->OFW!9!`2O&kSp Pi|)NYSAUFg=_s{H@?+$QQ5lL>E+B9w=PW*c@d@QsjQ;f!1L_d3F8l% zJ!h-=<}y!iD0{)Ea?>nR*KyANB)0#mmsd~HW!~u7@Bd6VGL5&DDbi!9Q}vJLdWlyP zPOS3y_jB_X6TVy9I-eg>lhMCDvG!=!`V)d?>)2a=E~tI`@JpGF!_OO!B7Bc_Pq987 zs %^Fepa%C%M-Zthd=+#=Wsl#aLhP;$w#5Ge71^1!R1_Ri Xsk5|HZYXayzZkONPy*L4m*=-quipRX{^{Rtw^N^$wzf8$blKis z87w5cIN|z}jU4}SbML2o47)ll`rWI9{A;VX+CE!hpWBhY@{+f-<6QOVkeDh?VdG_W z=M@>2nc9W_W?UXFwz N*ShX!>;5jaN> adM&5 CZ`|YVx+lbv-Y}Yk7H_hF8XBo2RnYcvZ->VMDW!!X9Ld~N$+?vbwx3w>Sp<$ z&rVC1)nv!|UXlJCQM2RGnJFh{ajlTkHcHSwnYBVH _079V))9zDqeFp zTcFJqnP0k-BNHx6n-tXa=H9b2YbGuBU(~SU>6)-D_e~xs?eI#mzV v5{mXni %ZIR%mhoc5Dd- F+sq#lnCS)JQBTPsv>3MY5b^v8ug;VEa9cvb3}hTOgT^v&<& z)*si6U7Nf)9^C#uH+`0bZ6f27DbuI4o-y8C_2c3EmG6p9Tv_u{`K!jKr0-^(3YT^6 z86PqfIWqa`v3I) fM>ZqHIH zd&%IPFgyHg(;2taocjIESudYYzHP8~?%p*Y^?Q%S1sU1bYjL`6KDT>oYJ{g#isst9 zHOG%npJA5Q`~HfskT~maKcUA@yw@#`&@+1Fd241@z4 &7a=iSD3=&Rg(g__OBY+NF@ z=*nd~U%ZfNVa;NC+~vX1S7$7=j88nAzeTy=XfVI?@+lYX=UCpH6TdmR%;U<{pY?Kn zQ^WOYH6qki!j=T*F5`M&$yWcg;`7n^nW<--Uz7+edB&?5@PYq#K@sblLj`IxemQk_ z-<*|GJ%#HI$F`hV?yp^AW@wfC5j?@kb);a;)mtaq_393VuiuhvQ6_Qn*kr~{CyiMX z6i$i+Cr_7)Rlc1p#LS$*GNCV8aJR?3NSV){m|1mB6wUhI+!)OvfBBog!e+CCS-m>* z^i)#2t>wcWN^SC)#5*gPJK{@+QpKw|MbjH|CvOkv4FBU48Or^PnLn28!psH2>fdWL zcImH~teDZaqb}3t*ABZIT+g@`tv_(0Z hDt+=pfs!QO#3p}4T-R6>J44IiBx $8tLGPrM zbEWTCeSar$flcRJ$@w^4o7=qdoX5^Dj`e>%Nz8u}7sr7k9a9c6MVN$a<#{2ytw5K3 z{uzD!*HgZ%t=!AEl%-Db!I6zYzl+O0I^LG#5of>8bxn{v%`#nk#k(%^K+DdZmoJG` zW<59Acj3;H{Sp#3hQ`T9+V^|JXg*7Qsq~ShruFHz%vs*e#&2GE6)ZgP^YF_Wjc!wo zo}-^a?tC+==M0+i^wp-#0&a;5nBG3#W|H~&|DMtlCvy++2U@vJ_4o7p^;>zvsoy(i zr9|!t)o?kq_x-lyMVC+HGz;!%igyW-dHiuUySJU5okZWY0Mkcjm-(&TQ*vhwQ@>h9 z&O0-QpZ{0wOFdO4({zFThvoU1Z+vyx7>Xk2SjW!fzplJPn{UPm=86DkOG%jnI{Nc8 z EVP#Y*-S$7l%dhL> zT5q?&i22J_C7P{x#Kp3Fufi0@`NwV;NX{|HC|dDw-ieku&xAX#F67K9e#*FDYQ1Uj zYc_}d{&8x%zMN$-U9(#COJjH2*_&5>SKB{6rYUO;?USU!sP?&xBjb;tggMZI5KWVMgKQZM`vv1rg z^QE8Pmo7Ao34P*S=aif2lcYak?PYJrr~LPL4?FMJ^!a}6rgibouks#TzoO~Nc)9Nh z-*xNCd#il>HzhrKe?l!(ZSoe^*fYJ_Th=xHX-taM=(GN<+>%+u_2B%hju}A{QWs29 z_Al77WcPyz@oUZH)Z~(*-`(C#ZzUAB_@9J?LaJaq9~2uNwJ>Vnd^foMv8J_NF0x z)+xu_v!ZGn-v9oxtm&TGfgfMGJzE~#4mvJ*+``-BL-2~erN?fb-P&4duV!5*k*TFB zvr_2A{@5AHpLwr%%~j;v-}Wiu!EX^^(Fp~QB~SPFzd5r0(wW0k&u^JHw?Rq5?D|f@ zZ%e%-eS)OQ%(CpBF3earT}s?keeaUs-jDhW+-XPmeY(0&I_<~@-9sySKE5#7zjMZn zAZvvaIhU%9B7;l!w|A6G;6A|p+GF{9*TcIjGm_SuzCSy0Z%@eT-5gp5 4z6PZ%52p zY 2KQ(J~5{*c`dCH2< b{53%v7VTmJC<>VF^fQjho89sTtp|M5KgA02MW;qO1M>fS9nv-p=K z8+X+rtNZ^aYJ0I=lrSh?uInv0KWFxSIdlHG5sYO*+uxanp3UX__{K}2OXsDI&bQCA zv$&_ oE82@4yB}0HKA1CmVcR18Rl?gE?_7<1^}k@L^@ +{?zW?#;k{zsb#HqD zlpdVha#&2eQ2bh3;zEJFf3?)&g!FpvpZ%BgGxzIG+1bnwHVY|D+OmCCSCeE%)A_SM znf_X*hFm)9EyHrV;(GEWt68rLr55sWPZQz@=l58Wo3`{FKTBrs`x7@$3kYXi@d>vS zmx=RFtV>yDpwa30%$;*$r}hl(T76Doj@Lozf{$LF{VTk@?9^@xNq^s!_Zwey&pFw6 z_hi0yZ_a` cG1cwkM9$!KDWKN%ktmF3r83a=JJWo z5ZL(frpSh+iJAEw9m(rvdTx??eSfv%8|FI~d+qP 5&J zOT2a =uh^e0z%D-v7bFN^il_hi`ri zJEUeC`=B`EmWD(yU$JC&%Bd3v?p<7Bdh7nh6?uHG*aLS=nmAK^-Pf?Xbg{SMyIwr_ zd`QRR;hoxP4xDbaiTyM8HQt}IX;nnj(opYf$ArY^tXk!Kl9NgCZpx#~Z6c2u&OCnm zbAJK1FxSV)vJLZc61_sYO }40
*4v$; z=bkHfX| 8pt6!VUO}wEUpuePJ8{59AyN b@H5tB<;-G}4SkyzFivp1{#PP@gW0945B@w}X|hnUfn|ZbyMWI+ z)7 rTodNj7jZMy34o3MmBCs-4GPu`K;pTlpU=h!ub`SRxQxn!FQ$j^IK;{v7eJ% z3oL%@w(Sntthh4Y+4{Iu%laAjwrqCUxI>IVT`IF~trT-;Zuvv08s`g>wpp+*Y_ jk$DTI_tqK2cHOhk!y$|L)W`fvGDmc5H2T_IX~#d$v-HaZbY(<9+Kg4+i8u zi7YHxDyOmS+4|Kc(QEgeT6ZFV!8X9XaEapcud0{6KK%A-=`scX+RJI0qOA;HrKd_9 zSo4C>X3ye?9bL{TAH>~@=YRV)X{qM!?1@&A<{=wZS55o%eRXg0p73J}7t|Y1%UQ0? z@N@;=)pgHLUo?Cd_4f4oRS9c;w;i$DW&h@X9EZ!=Qtkwi RvkbIW@v+Z)5<&muZU&mL@(2a?CE%q$t<&2zlsqc@s zlpUyiIs4V2;ExKfhM{IUi((VX=C!Vi3ORNAk@iEQPbcCEnAkpq{>(MIGUwF)eV20? zzJDvpFiQ;TIU~oKyC%a;U7P=3b#(`u%Zpt}|Lk=bW~jX7wA~QP?GR}^X~BAjD^YV9 z1S <2#Ys>puTsbV-UGTZ>=|{^$mgZ;XR(*Kb9{6U- zq>Z~C^FI-)dU*Z1#E;P9p|`gFczN6Y{FgaTw9hmMh>5>HIQ2>9^##r~f%;`H%9lTo z-MM=1ob!`vxEAew9vG2rtj-h1@uf9oVVcFEgFANRNsFh}%M`zVd5Y!KSM7knMcf}G zwCmn{< uV8>+}jpT zyj;BEL42IGP?)Y;&c+4bSR9!+PARc5n9O>T^?=a(;s>r+E9z*;WfJ9h+27_a}bZ zssI1r1>^IgMh+PpD^%{>d2OARc8lvx{PK-|rk}j^hCeyaL{F=1#hHjpjoTM`$lOqg z7Pa2_GS@2e;-=(%dz^bjmZ)s+>)zd=XM4OWd&ap(vHbBI$~RY+#Kwqv95R`#Ezo(p z_XTH}n6lq?!6zGTKkAhVPCA>q_`-{}6K_&$oqS5Jiv8ZVcC*GYk#kcN-q+4h5Yy$2 zuk;Se46&S)5OCh_NmKWZubK`AowzvGu$-3LT6cTyW95$}a#xQ%TGFDpE6eE2;i(2G zO}k9$rF0a(Y+2mV`%-qUx6QT2MO_E{omAX;?@m5-;JkNvTIfvG{XgQgx7c3ReZ6+G z&fm>#9tv|zXH~f#&<&nB?fZd=Zh1eOG{g(U8h@Nfm!1- za? R^_9ho>kfA1{<$0A$FlB*-lHw2m$|ImXMA$nq=aUXdsUm& ze<&AATAw>}HcBt}n#B32dFmoMHA_#(74V6eJFn1Ql6I%qQ8OYkDWFlyt>tm>?DCUy zk~bXx_)E6oo$q(MVqMWSZ< =yf0bQy2=~S!#+%QoQa1LUO1rwpGQEcFI1{%r z^9Q>FH#iRn->Y#vFaPs>mwYSJ{TpZ4nrkks;j#Fg=;k%QuJXog-N$vc2EQs+hx}|a z+hWE0&Mb37X6kR3dC_7DUd@lKAIy2io)=l%e5X3G+0m5oGn;qbvXID=Jq>27yKe;q zEIz4tTURJTNyd2c@^Jb73E9geM3$fYJ~!ycenY<1j17^NmNwzc0xx5CTW6T~X66Zb zEZo1x%Q)~n+nq_hYF1|JZnV#w{Kv^=&icD@s*^s)?D%H7V|TmJ4#{gjZZENOGUmDe z+~#pTyJmjQNuCEHhWp(0x6Qd-q7d?9#*Ud0*A`T#sBslVaQ^KP>P?< <#xb@uj`-P;@Y>fNA`kg-lKq7rS^JTN;X`% zd52Z6>D9ij^DQBM%zHC Q+NmdB`JCIZzA@(R zK5p*Tk8U2VEejZ#_Bf?{dvJH(4M( E#4m)w!a}#>6Os351sYwwa5SL`BprCkMQ^O z%}*46?Ed|guXQEM(e!r*9)96G#dO>7h?;xZ?|^w9F0Fm~_}s0{R+|o3mfA`8X0|<@ z=KS)|Duc{5o6CMZ>FQd p9rty#1}lEBJ9p~l0j=wI?!0%5 z`4>1}jdO#73(v)6TnEZJw2pT@NL0MD=EXv`0Gl&kubx!Ylzttm9QRK_NMV9Ul>5!4 z_t*RqIoo&aPe`}+-OthuevXmX9<>S2d>Px3&m2%AD6M+7ec310+kvk#a~?Rkr8=x% z(tOo-w(3h8|6LsIf$L8n7Wnw$LUe&lmR;|jgVWx;SD75-_vYN9IdZNnGuY-`jmhb0 zes;cG@xYG86}MiW^YM>vP&9KYIP>9dywu851>2|ciL19{lsnGa-(z^40&(TZah9 zF8aw5G-<6Q=jERB598I(zm1!CWK&F|@bdpr2OHj7Jz{ fy0- zTjOlBR_B#--dMROKzgHI@x~RdyZ28p`{n$$-q-tS(Gt&!hEBQGxG$# *oo2*l#~*_Ah~zSG4 4`S#e{1AH4gtTJl&vZown zPnvyq>CWR_Pq*ve=yy_6EDmal7Vr6UI_j-T>1^9*{e4F>i_Xqay&9W1sYm6*z0Nj2 zX1zx-&AD9)$CNBtOb=-}h%ImEs(d)>C$o>!?HY$Cx38~E&eV1IA|b94Rv2`sHSy`P zOA+NJ%H=j?mSIPl?^oVG{w3&GZf{xPrQ&I>mSR_8v)o=Q?DYR+dnH`-^Hk=~9pYEw z&TkT7)O*Mv^5E~EIoS%Cb*h^qcir7*K0E0*pX;18ISV(X8LaNp-r|t@Z~w=tOF2J# zWc<_h7yMi<6Shd=z#X&5X%Cmo&AGqyuBYDb_cPz+J3g5=^#}K>UGf@tqF3d}YrfoL z7(27#W$OgvfFmUnYi@UHW@yD2ob`O3uK%#s&iJ+JMAON8A8EBXiv(O0F630nURp3C z{SAY`J@xNLIKG^#Z3vur-?b$9!I6)Q;dXcXm|rP8KW5W?q~tTJ__^&nzpZ!83KreJ z?fR>gsc-aK9KRnpDUw?0eA-9z(4)M?4xHzX7bmktmrC<*ewlf8>w(Aellp`61YOzr zFDm<;nd8e|&heP(xyiAce}Yw~P1NP%_Pz5!=Ka0Dytkq*Oi^BcP)F|e&SMMKZ+URT zQIE;vp^Em4>O-;mt>Q(ciJbbn+s+jw=DD}d*5m6EwPQ6kf1!Kp-{zoc8z%K#-q$_N z?4(V|j4N8VPp8`Rv%1VP_DLvCxwg#qaK*}B?0c_22;E{WG~YkFFJIx7!ZGJ(5AVqx z^*Cj7_ITjsjJaCDF7Lc~ySQ%c3wFNhoozDF{=8IT5aZdS0Y?|?^z(huk*Y7ibmsC| z*PF$x;^M2EpRGJu@Zs&1 Km8Y5}v#%1dru zfA}E2qtrh6-pn4;@LeZ;7@Bt6omKB@=%&B$M%?2m@7BJ}=oK!^ee-lZkJ@zplrt}Q zf8R@JYx^2t7AE@d;Lc``9ijg{S3TLLb=*&m+tQ>ixWjJRi5KUO^hZcL@Ny+CwrziV z#lNmd$k^C={y+KkOTM4A^IrXI%{&{0iw_R=ZP|M1< _2WY}R|vRh;E)({jQX{4XCb)&H+GDbzPe!_dy<23xOsP3+43OMQ;b zE}1>!#qM?5l{uR|PIq#PSN^C{NjJG_dF4UngrZ2H+xsS_R|*#8=r<^HY_$JWbLtA? z+Q;nAvUYneUXfsLaoA?nCGV}qrt1y2xNLOzo%mzo-l^>;?&)ngvipe9*$bC%$Sjc2 z{-Y2#d8de370aY+C6D-pXWep6&b$3Gi>)}dZu@S<#rIFx@>MVAJ(P6%rOdV~+~FIR zm~x9dr#)yE?&N4Q{pq8+^?=GoErrdwN7g-Rb?8|i_xpXdxcJkjefOoW{x~4V9KEfH zG4$7~>E4s{va2=sB^Ey5v9V;3IcA^n`^=wR8JEr}Jl`(8pQ*LBdzrJ_X?_(=CZ`P* zbN6b=Y*c<*9mlQQ>!&C5D@uA!W=Glsr-DNnt2b|5_Wb@!#@naQM&3_-wCh{HZSkLG z({=nO`_vZbX@78iX3=9f Ng6vtpe{{2awf!#q;F!+#O!2SgI~aSqt13ThUsxsf zxPq(Y!;_@^owXLv4|TWS@0fYT;HoZP Bvj0zTHsdwxq@{*G*Z%5unIiH0NoI>=vGgMU!u*W)%)7-Z zllM)Y^y;Yioq6#uxgYfXscL)>@U8oPmzd?#?N{bxv^f>s`YYCObHm2ncVf4)%-UfV z@MrSY1>dgo#~A(dm@0kpo=)hj2iI11&ay9RlzjC3l=CuIkAey7w;LSNJK$un&}BXE zVa4|P2Ti)mXGiNDGu^0v%_1^^TY1-gJ1Ie-!?S9a9MWIyut3T(Uuf0BJ?eKkOL9Z+ zKU#Kus(UxMf?ZJw`MU}4eemjfQFf0F;l4$8R)Ln0I@Y>@S6I^C* zoM!K&CwwI!bFXtn_@RrF4eb?+bJsYjoImtrBJ*1QM# &^$Jo@xm?ukJ=dMqVoYrbEoAU*Z++xF{^ zqNd!vy!@^Dj#-z5W1m_zGgbM=g m8Si99>cYpC4kLR%oPhx-cIqT23X+G&ObHpZ=nMYT2T-LO^-2Zp| z&-qmfC+(YA`6OSR-8s)=Wm3PO`nPs@@7k_co_h;si_8vQWVGn`(q+#iXSZ+Vk$$=B za&6?d^>IJmrrYl;HJ+)Fz$aCEVCh!2Sz#W!B8Petq(T#{w@2>F_H(zXZdEf2>RmD^ zQS+r+Kl^$8`bigi&%Dj)Ej<~$yXDB61#^RJq8`L$INva|u;1wUI-{YYj$!4FCbzy% zT~-s{@0|IddfQXE=+f4ZCt=ra&OZO6_9pWUfx6-(%OeY>{Q4hgF0ddvesYzG&9dWy zoc 1o<`w&n{arG#%jB*4gNk)x^R^vQzMCpP^I_WC zO@}=H)YiQ=b~$+^((r!7=Vv;f&m7#**`=^S_kWkDpsKv)!L7YpA6xm|d%c&F(V$oV z{C>&VA9e0+`5wdEBF P=$$wWZIw_Vq zo%1G3q}==K9P|8lRxE2ja=}3(^1c7sPqU0apE!5z6u)h(|BvrKq`H}UZBzT(lWWc| z|6k+(XMe~3=b=xosyj~iSBgG8`Rb9?Coh-2XY!KxHhaU`y~P`v_;)4y&zt&mm7w2& z)M<=`VILy2R(&w4(pQ%hn)#JeGm{sNA2}FrTJBJ|m=_;mcFp641^>A$wvf33 zlZ|vwZBussViFipZ}j5IxANIK&xAgi-#EQ?{h>9_GuIaQa=evKj*1f1csWn{_jSuZ z>*O3JmfzW`YR{fu{H^xb%=8^co~_(+>G$0uPqjZj+*kQa>B!2{&L;Bn>wZsMm~=Cv zSktk%Hg$Qn&!>$sW>PDk 6#^frU@~27=LY_UEnsy z=Bc?W+X9XacdkWDJ)`#2p-Qo)o9XgQt8kB5zl}c&6y~ncFOT^e;J&G)NTxD=$pYJ7 zPriz2ZrDE0(yDU4x}Vbb-R`OjbE}^-OySvk;AzG8bF1HPx~VIozq7*X;IH?+zJ34H z_BF|GjdT9ueVQ*cH( !DL7D!31Gd}xNp<>(R>pwbY-Yr!9+mrp@ zbF%6hxAzv`Gk$LR>9n lVY)tQv!@?;{cwZv^wmioH6ivz7PK{l~m(<(~Yj+i`8}1^4!U zSu3~w&Nwq!WMfoQS-_+Xn-*le>gD2|8E@B^$y{>Rjrsg<&jXjFziha2F`@I;e|>h> zIc9gu_V12+*7tb( YJFMZ(jh zsRue^QC8b<+E%A!$;lPBvbfUD_N_mDGOrTEs`MM#(D99Pfi~ zd7CEb?D6GLGWvSy_1}eSOkHg*KKY(vv}gUSy3nR-$!4}$x!P_Ic@I~=o?Ee^d7DO^ z;@y)eUCR!9s*iHzy8L?geSsx)%wH!3`s^v4ATa&;#QQhYmHpD3OF}o_S@!ns8J qhwEqgU$F90c9@_zF{)_kc2B|gkJul-=bErtXO4mC zC)eD(zLeeX?5=n(ZT4)|d)v)+`Q-fg9LIUqRoP;~XM(;dXxvXTH+0SAb zy$kBCcobPrmAKtdy79U+|HRb({^ 8hmOT*`>`L?JGABI!n3rMNuxWl%;|``zpMBM~oPNr6n78%C zCnnd|>`|KSd+z6ld8JPI_U(36`IS3;2^$1$3)XfuJk>VPtr1$HlcfIj=w4Cw*DJV> z^tqYYd`byBd-uD>#QDaa;juq98nL~z|1XgCxj=MN`SY9e-`(fl9Bj7#*@sZY9SgW? zH?a5X6i*jB` A ztwe@dGyna5%4cY25;G-KCR=ej`{y4#G29X#WK9hw `c})8g z=Uv)RAyu^D>mT!@Q|Eg>d1s_9Xl5MJF)>$D^7XrevwroPO^@W5_36=~Yu}>gJPzLJ z|MS0_KyBisBet4tkN(*3U0FU$6c;>+G5EpL+rxNXArYPSMDH%iC`jW;|s|HOrAH0bB~wH9kA% znO=<5{bn2J^214}S&FMOsrKH6&F?0tNE=K`@0MvemK^n#XI_Qz=|w-*A9=m;%;!_f zS*!y;S={&D9XmTC 8j+JR#!M4si`CGGBFnK5bh4WcH0HpPp}D-)>*EE~a;{ z(EN3m&AQUNv}bS}JgFaAG|A~zUBjArOBr9)FtRT>#ktFFLcLnt!v8BzJ0D1kf4VQ< zMofb7kt&~A%;z;pd(vNgHeOtNM&>8K!bE3tBhBY;ryX}To`1D<`T3n&)jYiVj*2Qh z3{d;O)!2SRSN(0=@gUrzEqbIAro{X>Isu%FU=grJR4A*~2&YetYNbSaw!mlUj7V zwCDp5vm!?wow!#wR;}6eY0W*mRsnZMW TE1z6j*8QdA$*b87H;n?8-2baG-&6Qlvi8!)LGpQdDu0{=f1YZ4 zUbHS;?mEl2i&D$Cdfb03;5yZ~mPOTSsam7c*69)%&pOV>2j%!%p4!gH-lTHin&Zr- zvYmcQAH~ja`Q9DU%B1=Cdh1&K8n;sdY{FAN&-w4cx>fVomjzSY>qOtSPZ!h?o}t+g zc%bTn-XRa3-+r2N?kR6wcid}J`jmp--+69te7R$*)S*dB8k-F`Cmo#ov@;{1Uq17@ zwx`!eZE4|cJLGN)z6kmx;Jl1yvxdw;&%#f)9=$)kTOfwb_w$z9lQ}m!91dnrI-sf; z*cUv>Vj|PwiBpaWDlfWL`=xo!!J5+j6I`x4{s{5v*sx0Kvu^Z*==$}o9Fx>^4}bj= zb+}fiE5^(G>N|VX+#em1FWXh|tHpfn zR*wAegKe`|f4sZEc=AVbIMb&WGP2v)V&^|ARw&tZ!Cd*|zxC(eMdTe4nD~S3{IO{d z+4Xd6W37_!E7t8i`Nwcwi1dP!ADHzN&dpl8Z%N+sZE;_(m u!wwrd@4li>bPwc GwIc0|j<1?XY^t_vVu$L)B@H6-U}tWhD$aUZg0q{`asoUAnmY`R_~ID;ZV CJ{O?iO0=1@5OxH;V8tkmvlAATP>&%EP8@6?sY?N0EOuhR-Vos;qD#qv3ioHw{FJauS& zUE}K~hgkIub&re6e4Q*{S@qIYN2%$0qdLF#^`sNM+NmDB(OYls_04+zChG6C6$|v2 z)hw0CW@qVms>85dm9b{EuBIw`+gkPM+y!0Al0Q y}K)YdUFq$nVGFeBEsR )8*bw%nx+3TY*Rt9CG%8rv-V#`v*r zT4;4!`kCmB`}Bg1U5{P7w``@N)rXWI^`oDcMLPb^{(Wunx(8Y_-u_LuxHQ4arFZJV zdz&UP*0nUhGktw&ntSKQn02wI&TR=hyxafV&1-B-%5B{J)o}-fFKW%s4Vt|n=@+-k zCA kgG R`a|NPhtzQ}CfKMO6C zj!aC9ykszg&*AL;wU--jgr0nP-PvM$N|i`y>ZR%K-!s}2on~ET=6K$1zuWBYGaub= zb0=PWk#~i)TX0(F@d+nY?oIHS7Jd5L^&Rd{OKqOmWS1QEzVS~_?!WPqxVgeNb8fY- zTU3zB68e75%c*+ab_t6 p0jzP zq)kt3uha|I9E}RAjUjc7M{jrsBu+2cAi(m^w){5R>02F6H-ql_WuE;1&FziRqet(2 z93P&J{dnCrQtI^jw8J@q0vn31Pn^eM>X#t)L}TK)8LQm6UhOs6$dRY8dds^T+rF(l zam~)=`HSc`KMq^&VTgICm@442DSC_a{nI%YzQwKH#ql{>>a|Lq`1d0PHZBq(^RBGF zx5jTn`UdGV4`0PKw`=E`#qOMa^nPdM(xj!P;!_Xh)qFUeu)BNe+K>D%YK6Koo=L9k zpE8l ~CetXFsZzy!CDC)F(@yq?^e9E$h0` z{iync%Y^gCS4*$xx#U{Yddt|$Yj*x^)1tlk)=B1>5o>ltC^olnN^tGEq@og?KXF6* z jLQ>!A-~XmAaWDDk{A_){p2XHOnPxZn`aa6{F1oSyJzvI! zsPZ~{uS>c6_jfm)dhHPQFnMYX$JK*xzE6HXrNJ>@$93X5kIo;5LX7^Lx__dkl6`rE zXknb0WqVrJiK30#t QyyuJ@#8U;Xj4NlMn1$yk1KDsMhR=4@`EFYp!iB`pI}^-QIOayY9bae(>tY z>^iqUv8N;pH&&mu+N>b_dSzK_fvf2Lo%)F@B~F {_Cp7{ (DK&I66^M2bu%-i2@*46)dZ1H+$_sJLR!&OC{cRgF{cPAtL>XS+B zaq2UD+gHoj?(nKrQ?cB= Gf?*Ht;V zsbWs?>Q%~_m(Lq>KV0&KA>_pGmA93>|7Yy52;Mr!EOf8`#*?fExNm)OVr}DJ{cc}; z^|83shcgQM&PN_gT*}J4_;^xmyTfeR@E6jjq~93)y`Uz0?f|=+e!Yiwzsnxa520n3 zj5GdEQm*-1bT;Gz_u6~YBP2_DG&|-!{Z*|eU=(rt%5IZb?heNP4=rXFe7SM|dX?si zmh}^J%5Ke$n=qyG*|V^w_S@DkORu>8vO6UizV^irPNfcO?IWv;_2tDH!|n*G-}=HG z(KfS>bGOm*8+SsA%RIu`_55u9t>1Byfg|#PPF7x%y0^!Ahwj_!inmL*vFG#5{xai3 z8}~8!6pqNt|2C TzkmBC9#GO4z%s&MfmE@1%gD@|dklpGbW2slT;O _lh{pFsr*OBDVZdG)Mf|#smQcWtlm= zQ+gV$4o-idpuu!1puRRd{6%`zPt~~(GfrDKmR~NGcS-qBq4Y}l_|vJ6di iP8du0?kyH8K8jom}1~IOX;kxoGz?mHVfbvgv4-EIw?U(b;bjc5{Vt;L{c{y_y_n z_Os>OJryrD>Sz9W`Qzoi99P}luI2TP^Z(468+Yd2i7PR#b$@m~eBAu?flgSYOF%4l z^s?rsOLFd>lo!tQU}5%G|9K_$_K9ew NK8Wp2sWivVB?Yrr3}?aqs<5qnt{O z%wso?Nr^>1nfT H*w*|FHd)SZ4T)A zBd5DsdrN=(C)cu>4XmN}+^6QKGO)L6=5kp5<^P$fwtT9q<5Zz#8^5mWsxfP{TvV`i z&)n6j?aithSEg>6)m_2;a$5aq!{g}}UHNZnF{fYsB+H(kQMEBaO8P^t$$!?|{qdc1 z9y-cSkmhT;A6Vocw@G2oO69ZHb!vC7ohGQoW#tyJ@Ud)`a)3eosrShr*8Dp#-zB!- z+ZJ!}uYc7FZb)rB-gEo1!PKOjru|d7mnTW`XSZB%JfR@?_|o5LCee>|@~w61qnlZ6 z^<_g1>|&N=U!3hcb;_C LU->?`ynn7)&Hb%M(JrAN=$`Y% zJt4QGemseiejPJEDRmR`mt*(YPnWOKy`AM(H0#Ch-*0a>UKHQAaQnt44>>KKX)7b& zUfhuXeA1yEKZ_W1zU1_MeSPk?${b#0w{n%(vsx1)!kI4zZw*k E`EzMgK`_TJp35;7_aa<+ zmJ5b%br-arJ#RuuhIyb050jli%QlxQ9M^ KryNG#im!=Y=m0AO8j3}_3yWT(yH7Iu1|UcRXuLr`LpX$QhLqe z6CF3sEatp8FRG{c&{9#$GZDErW?4?+*nR8zmm@1*2eD{>2;bfrvod&H{c@w57BgJe zE*4C7H@Y1@hx4qFTxN3g-Cs?Motf^&$#=2|y}#_?(){iDqdjx#5*D34duDR{l?920 zJGv)Y)m0Uz7igWjHve Bz0v2+PSc`} zu !v`Nj`EAaN*|GgzYW%p}Ac<|sy*I?B?Amwj$qJ3YO_$s+`e$5^oc7A)1ygVh zU;4sKn;zrm(O0gV+q1(pP5p?Hu47n0Ldhway{{Pj{L7Y3w4P+)Zn*5Up@QVpy-lAL z^d4)L8}xa%Y;4?fazlbv@#38qb?rP?apj#d$% vt+HB@F{A0Q^XD5|o~ek>*pz*%TyDM577NL1PvYytZZuhFsm^ujxqP+p z?(K5Jf>YBMH(l?vc;BRCn|}Dxx1Zdr+9V!+VZMGx_tx1bS({5`mY4?DKmOrTy6m9$ z>p%Yu`cpZcC+gKb+a$~S@1oW<#k6_fmA2HsoxHEc$))0A`&G6#p{M`LtuEL2f3|b( z{HUB;iR*%2TwAq&^2~)>t)?GRbF2tsvs|dSqvWsZ424@9_kM+}R@+n2q<(1C{}AUE zhUz)WYAFr&Q@iI1ZTqxbcXs+lnRO@i8N}QCQr>SaKegv}!ZqoI+{ynk-d{hF7itw! z_T;kDS;@}i)mA&dI_=sq=l3y@8&UJ)%2@XumrVO1SNr|G_toWQx+|IMs%ny)xBicm zo+T=jbN}lERpXU50j398_pWn$v8Dc?_D}c7_1nFwPL|Et+kW|5XV=bG4;(HTGWFk$ zwAz=nZ+D=7$K~&O8qrU99(FE{F2B^I%pyFMf7K4JymDQ|sQc0~?EEhCZrzC8xOMve zbCX`OEmKMHiC!fTyFb8f{ev&3B%SorjrCMo5-&MzY2Gl+HIdDnx8}4{Wmf=a`bCE2 z*;cv!o@#ZGhTZmSMOD1cey#DCIQP@^#zy|bI(v$krE9u!ADq{?IrDE@#wjJP++81E zvEJ59?NwHqQE(#s$Mu|~C*~a?%VJlae7VM1^SDFj%eVEJZ^VpvoUHS1zMMYuz*OFf zED@jELE*LQW%j;{UY(_X_(;>OSdH1Yc&!fzc~ogl*8R$NqfV#j{B~0t>F5KGy$s*@ zGAa5l{hlZ-|8tYP_lhhF@5UA wU*Nb8hW=y?U|T# uf zN=u2?Itopv7d^b_5`R7<>r$1rjs4+Z=iV}fqtUnXs|AGCB_9hf%Aek!`ATB_?(>sP z*W}b6lH~myR?zagb55)$ce(77luM=)x9#@+njo#4w)wtEY3C&F8^&_q7cuOaZX+eD zUGu8K;_f3sm)Q;#=iDSFyRz7ot#FJ#=c^a^CO>k;JToTKhREiB?>>FC&z`ou=MDS& zO*5OG&s{94Ao?)z_InSJpSvcr#6-PL5z$$D#c1C3l(o0!9k-OU;XbhI>a%dEICl|W z^9hR6K8iFep8O#yZ`k |=?Sm0Xzj_}?o);ClTebDt zxuxq^kNC~Bo4(@Vk4@(m*8a3|5T0dqW{)Mi`H|}@y(a4`?f25* vB(I6!9}#-q 3~T-L zF4OzA!xPQ>drz7uzfxM t;w_B z-(}uhwKi_{jWua2P6$j~UFvshmZSfjdfSROKJz!ct`<<1sxgYaQn&bQ%6bcyu*bhH zr}ldMaWG*q+`U)h ;27f}^YCCJ0z9KEUs_qjk}ZDYi#S z*Dg`s@VV2Cdp_rm$o>frGcr}SRfIlYXzo?4zna5}-yqJ{b<*~y^^5YhYHwT6{D438 zKd*X9chS!)2cyhFO>VJ&JM{9+N1u7;9A{i(RG+{b>f0A#9VlM%yk2>|dWauG-TP8@ z{@bi`*SS}gEZH)peX_~pJ1W87YV*AVLmrF249uP{-c!B)8>@N5+ULGs{-}IC@Z#p{ zhND`3oBFO?i@N=}qi@3Gm5+K@mQPsc7sj6b?m={Y+vNIhk1PD&SWJ(W+`VsAP{=`< zJ9n;CXl?D<9#Z&H(BOs$_q!EAn~&Z+bLtgiT%L1=(Zv;S4sYb$Ugtmkz$O9Dee##5 zvoqb_tGxF7=|6}1?z{cZamvmt`Tj>{<9s0&fwdWq+Yj*OTs8}0UOYWme5ddlvloZ9 z@8z~jy5~7tcgt11m*>y4YJGeuv2~r_vfsHooY~j0wE3C2bAFR;;HuquIdnyM=@-6a zSr@S~!_JS^wJ$DgkdD~hDV58{X4JFOeSLXoLw0q{cjYP8&v&}k@cQWMoL+GuWJOJv z%KMnRQi|?D=}+sqA3Z R5+LI2qeCQHxG+8*|h;qLa|Le6_KI30{nCHnno$~|iL RfI)7xyag zZsrYX#cJ-=^8%)xa#)ksHnq^hS*KLiTP@FBwPMNCWizt9R=nbHJGcDP5ta4v;Rfx} ztQCB>A5 Eb!TlXM0@qI_E z`m8fH$(2r$*nWTd4qa|7sp1Xh`qHyo{n(WQZaw}Taa!H$nu!Xp&5pglU+#a#dfS^J z<4uhAnd7JC1wHy)?&Gj*>FV4EnFsg(e^3?GQY=0}QLFC>m%|g|O?pY%*Y^p3jxfLJ zWaz^0>S|wTb~enNQ@wES)QRD9EZDbYF8(TT!}WaIo^wmu9`~}kulicQi0_teD!YPt z(DWGj?) ctRUn}^#OKRlG &}~0a6{^j#M1fVc29K qw(~BiRvb5J~!>7F2 z6Sl8VpFQXFoogMp{O4ZyW*jraQ8V vt$Ra9EljOWt|^k;spV$h*Z4(-hj~ zD*4*y&iEGhj>CC=#7^Gh$J^?zCIu|2alSsu#MwWaSFrFD?_F~~SC*|F>BT=Aj=QSA zeJnQj?(BqWku@G^bA4=2+ciJUyY#gDz?_tQSuqdPWfP@udo)JsI_)|uxBJPyQ^&n{ zg9@A~n`?uL!`FRoo3T~P$>D UG^7@BEj=KIn1n@V@EsG_u*#@__N=lXb &^== Ke_60#>v5e=)Kq2s-;-BhJVTG_Ed zQTUqQqA$h|UnhTdaq#~+&CxdOgv{ToH&33(6ED27SYaur<@Rek3~Kos)$K|`?kp^O zIX6x>_w~n{)7txzZ?6)R7h5b`ZuoFX)!OR7?HoTm1n2zneexnJv*Ccmh4r#U_Om8! zj4UXM5ctcKwj?D$sC{~jzzoJ8iAwL6P0R{t =X0)D@Ov#iY3?F`%)PAU}ETW zHD%Gla@NYST92a@J>2Dtatls2uJL=Fvee?TG;hCJ%H9h?uQJ@t)`c(J`SOr-;nO7X zQ (53OKt{ci%Yfj zlE>$|?sW)xCeoAmbNZ?o8`%ohUec33v+dYnrszY*9Ote5dhF#T&WDXxc7*($&nQ37 z=s@dc KU(he)+2C6({b#|B~$WdD%Syw%Q$ASYPHTeowydvtH<2fWgys zod(P~pP#(A(LDRtvhxZX7ai3+&2aC~Py5)Yd0)+%FS*~czpJ r`bED )3aJKV!dq-Jy*}xUg)*@k)X<9n?p`#u0)j1$SHV}XQ-)WC~Nz%CHY_O zORfU~R`W|gD(-4olN)rzO46l7dPY}v)UUbO?EH&^8+OXBt^Km`#kxbryN|u9Eh?W} zG5h@P&v$p3-#xkAwrS$zvR`cTUc9{@xl7VTda=Te51EB;PhUwocIs=qk%! =y`TEe&X(Dmt8CNMp^zJJ@PDaVf~1isgN@#RnD^ZdilvX$f> ztg$_5wVc~wl8(}}i$>>q-yLPMC|}}a*S3C70&84S;veP-tml)W_|A7Ib{?qcs tDVB(HbK 1^C9Uh|-V#d(LK zk;IW*d0T{66$(G)-fO1+oHM;<<{4G7Cw5W(3%hRxTxoN9F5YjrvzKjEc}+&so^_Y( zKg$^WYh_-!Z#A=ypl+e9wd SXRBB z?Z@;|zOoZJwiyvy4ja9mI%C$=gEud0J#Ee5X6TKLT4s7B*zDfFOxfg+#MiphQzy!c zDK)z{dKw+P9;x8my)!ZK4c8UFyg%t{3TyW}&pmu^t#E4C==ajX#e|z& Wa;dj4 z;E2`{ce@Z~8{xNGtS;9is wFY;vnwVgi>OYv@D+Y`p_%CawDLb$A7lhMaQnTNLhQ59*sTBkkFDNdVo z)p*X#=WA4t9yuk^eQ&Yfu}*LAw2lV0+BW6D=Mu>ic(W@5e>>bi{Jp7*vGVgQ?v3Rv zhiU`7)EZkP&*eP$s~lN%rL{itL*IdkUcZ8tyF6pM{3((>Lx0M`jZytsoE+1u-hI6I ziutn9J|&$bL5X>hOL~iR-%ko(cHqr4ee=mmxBWiNW5}BL-~G$Hz>e~3k~cLze><6> zXm`N##8JIk33Ig&tBdB>)<4^zZs=w-Nw2jq{fG3&S@XS~76kF#{1Loz+a`M}#~C%e z;-_=#)~~e_h+g{lk>O(2r|PzBs}K7w+Ipk@WvjTv!rjubZR?~=ZCgHWikkS9>ENM1 zd(V_>u~r-YKC}PnL$71*ZeO0{2mENxekWv %47p#0#JLJvcc1xZ~%7=8Cqr8y{@Hajq_YN><4su0Nr_?B?k`{+418QNDM1 z;>qUM3k}Nmu} !|hJ5t|jhnF>0H}{^H-Vhj+{R9vS3s(Y-cL`TBK5 zZ7Yp8jw=lKK7X5Arfni>;}B3e&noz^UH<& f$b zejdHAUgmvTQ!?yyj!K;^(-i^1#9ondosfCqOH)F(-M!tu%Xo%u;>s- n=FB&X&iM5&eILJmvz`A=uH^?8 ze-_?(_w awW`ZR`w}S*#yf3w8W>T~}|D8kFQT zam`Nab5B3-w>h3t{XlBM+uz;Xg3~ih1V1dY3kdnY%+&8-U~|{Hw< biwN_oyV?zWp~`}@crA|GBG#D zkDJZ@9@#JWInirc!i8f0sQ1TG(_JoCXRWT0XaDze|36vwL)Uo^s!r Nxu#sqpvd z>YKNvy?-|!dV1hW9;?r!*NogBw(?mA&X&15cfRw7YkOs0Z@*NtEruuC`s&&35sNHZ zc;{I+aDJKL^iD8XS? tq$<0|ztu=ABu#<(zac$K~Y{owz%EN;);oL`-D-Zyq?eXNH@G%5$xGYW*A1!%ZH_ z-`n8doAf{}SmXA~TJP*^LHFnP;~a0Z{xUjtLG<}WyZpnSlnZWo)=MS?$h7m^Q*0|d z!7TK@uZ$xp=DA17wHn7+N8M5n@9K89V@>0;yLzj>ao*$iT$|O`7Bo$~F- CBnlb+e$GlhM>_(3_ZZ+8tpie%)SR1Hy^SX@5g?1D%Cq+UPs2t1!-K69=6 z%;lf1^H21c_3}>tTNSrIf@eAHmK`l#eDK%DFAN;I< W$)06vm zXML%=71s7_qR8$xgRHsD_YRp>o_i_VRK7lsJ>6UQM&8c{h8!Q(tvPUb?KE!I&ky}m zF7V{9v7J{K|Fb~o_ioi#qZ YW?cnK8K8xE#1pW#9=#uo0EU|RfVHC=q;dV%5#$2<