From 9f4973be5864b1fe64a12b7814fd945f62b7100c Mon Sep 17 00:00:00 2001 From: pahenning Date: Thu, 23 Feb 2012 14:54:44 +0000 Subject: [PATCH] =?UTF-8?q?Behebung=20eines=20Timing-Problems=20f=C3=BCr?= =?UTF-8?q?=20passive=20Adapter?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit git-svn-id: https://fhem.svn.sourceforge.net/svnroot/fhem/trunk/fhem@1279 2b470e98-0d58-463d-a4d8-8e2adae1ed80 --- contrib/1-Wire/00_OWX.pm | 119 ++++++++++-------- contrib/1-Wire/21_OWTEMP.pm | 36 ++++-- .../Schaltplan_Passives_1-Wire_Interface.png | Bin 18047 -> 29208 bytes 3 files changed, 92 insertions(+), 63 deletions(-) diff --git a/contrib/1-Wire/00_OWX.pm b/contrib/1-Wire/00_OWX.pm index c9aba2842..501707374 100644 --- a/contrib/1-Wire/00_OWX.pm +++ b/contrib/1-Wire/00_OWX.pm @@ -6,7 +6,7 @@ # via an active DS2480/DS2490/DS9097U bus master interface or # via a passive DS9097 interface # -# Version 1.0 - February 21, 2012 +# Version 1.01 - February 23, 2012 # # Prof. Dr. Peter A. Henning, 2011 # @@ -366,53 +366,62 @@ sub OWX_Discover ($) { while( $owx_LastDeviceFlag==0 && $res!=0 ){ $res = $res & OWX_Next($hash,"discover"); } - if( @owx_devs == 0){ - return "OWX: No devices found "; - } #-- Check, which of these is already defined in the cfg file - foreach my $owx_dev (@owx_devs) { - #-- two pieces of the ROM ID found on the bus - my $owx_rnf = substr($owx_dev,3,12); - my $owx_f = substr($owx_dev,0,2); - my $id_owx = $owx_f.".".$owx_rnf; + foreach my $owx_dev (@owx_devs) { + #-- two pieces of the ROM ID found on the bus + my $owx_rnf = substr($owx_dev,3,12); + my $owx_f = substr($owx_dev,0,2); + my $id_owx = $owx_f.".".$owx_rnf; - my $match = 0; + my $match = 0; - #-- check against all existing devices - foreach my $fhem_dev (sort keys %main::defs) { - #-- all OW types start with OW - next if( substr($main::defs{$fhem_dev}{TYPE},0,2) ne "OW"); - next if( $main::defs{$fhem_dev}{ROM_ID} eq "FF"); - my $id_fhem = substr($main::defs{$fhem_dev}{ROM_ID},0,15); - #-- testing if present in defined devices - if( $id_fhem eq $id_owx ){ - push(@owx_names,$main::defs{$fhem_dev}{NAME}); - #-- replace the ROM ID by the proper value - $main::defs{$fhem_dev}{ROM_ID}=$owx_dev; - $match = 1; - last; + #-- check against all existing devices + foreach my $fhem_dev (sort keys %main::defs) { + #-- all OW types start with OW + next if( substr($main::defs{$fhem_dev}{TYPE},0,2) ne "OW"); + next if( $main::defs{$fhem_dev}{ROM_ID} eq "FF"); + my $id_fhem = substr($main::defs{$fhem_dev}{ROM_ID},0,15); + #-- testing if present in defined devices + if( $id_fhem eq $id_owx ){ + push(@owx_names,$main::defs{$fhem_dev}{NAME}); + #-- replace the ROM ID by the proper value + $main::defs{$fhem_dev}{ROM_ID}=$owx_dev; + $main::defs{$fhem_dev}{PRESENT}=1; + $match = 1; + last; + } } - } - #-- autocreate the device - if( $match==0 ){ - #-- Default name OWX_FF_XXXXXXXXXXXX, default type = OWX_FF - my $name = sprintf "OWX_%s_%s",$owx_f,$owx_rnf; + #-- autocreate the device + if( $match==0 ){ + #-- Default name OWX_FF_XXXXXXXXXXXX, default type = OWX_FF + my $name = sprintf "OWX_%s_%s",$owx_f,$owx_rnf; - if( $owx_f eq "10" ){ - #-- Family 10 = Temperature sensor, assume DS1820 as default - CommandDefine(undef,"$name OWTEMP DS1820 $owx_rnf"); - #-- default room - CommandAttr (undef,"$name IODev $hash->{NAME}"); - CommandAttr (undef,"$name room OWX"); - push(@owx_names,$name); - } else { - Log 1, "OWX: Undefined device family $owx_f"; + if( $owx_f eq "10" ){ + #-- Family 10 = Temperature sensor, assume DS1820 as default + CommandDefine(undef,"$name OWTEMP DS1820 $owx_rnf"); + $main::defs{$name}{PRESENT}=1; + #-- default room + CommandAttr (undef,"$name IODev $hash->{NAME}"); + CommandAttr (undef,"$name room OWX"); + push(@owx_names,$name); + } else { + Log 1, "OWX: Undefined device family $owx_f"; + } + #-- replace the ROM ID by the proper value + $main::defs{$name}{ROM_ID}=$owx_dev; } - #-- replace the ROM ID by the proper value - $main::defs{$name}{ROM_ID}=$owx_dev; } + + #-- final step: Undefine all 1-Wire devices which are not on the bus + # TODO: IF WE HAVE MULTIPLE IO Devices ??? + foreach my $fhem_dev (sort keys %main::defs) { + #-- all OW types start with OW + next if( substr($main::defs{$fhem_dev}{TYPE},0,2) ne "OW"); + next if( $main::defs{$fhem_dev}{ROM_ID} eq "FF"); + next if( $main::defs{$fhem_dev}{PRESENT} == 1); + CommandDelete(undef,$main::defs{$fhem_dev}{NAME}); } Log 1, "OWX: 1-Wire devices found (".join(",",@owx_names).")"; return "OWX: 1-Wire devices found (".join(",",@owx_names).")"; @@ -566,7 +575,6 @@ sub OWX_Search ($$) { $owx_LastFamilyDiscrepancy = 0; return 0; } - #print "Reset ok when starting search \n"; #-- Here we call the device dependent part if( $owx_interface eq "DS2480" ){ @@ -577,7 +585,6 @@ sub OWX_Search ($$) { Log 1,"OWX: Search called with unknown interface"; return 0; } - #--check if we really found a device if( OWX_CRC()!= 0){ #-- reset the search @@ -750,7 +757,6 @@ sub OWX_Verify ($$) { if ($dev eq $dev2){ return 1; }else{ - # print "Searching for $dev, but found $dev2\n"; return 0; } } @@ -793,8 +799,8 @@ sub OWX_Block_2480 ($$) { Log 5, "OWX_Block: OK"; return $res; } else { - Log 3, "OWX_Block: failure, length=".length($res); - return $res; + Log 3, "OWX_Block: DAS 2480 failure, received ".length($data)." bytes"; + return 0; } } @@ -890,7 +896,7 @@ sub OWX_Query_2480 ($$) { my $count_out = $owx_serport->write($cmd); Log 1, "OWX: Write incomplete $count_out ne ".(length($cmd))."" if ( $count_out != length($cmd) ); - #-- sleeping 0.03 seconds + #-- sleeping for some time select(undef,undef,undef,0.04); #-- read the data @@ -906,7 +912,7 @@ sub OWX_Query_2480 ($$) { Log 3, $res; } - #-- sleeping 0.03 seconds + #-- sleeping for some time select(undef,undef,undef,0.04); $owx_serport->close(); @@ -1123,14 +1129,16 @@ sub OWX_Block_9097 ($$) { my ($hash,$data) =@_; my $data2=""; + my $res=0; for (my $i=0; $iwrite($cmd); Log 1, "OWX: Write incomplete $count_out ne ".(length($cmd))."" if ( $count_out != length($cmd) ); - #-- sleeping 0.03 seconds - #select(undef,undef,undef,0.03); - #select(undef,undef,undef,0.05); + #-- sleeping for some time + select(undef,undef,undef,0.01); #-- read the data my ($count_in, $string_in) = $owx_serport->read(32); @@ -1195,9 +1202,8 @@ sub OWX_Query_9097 ($$) { Log 3, $res; } - #-- sleeping 0.03 seconds - #select(undef,undef,undef,0.03); - select(undef,undef,undef,0.05); + #-- sleeping for some time + select(undef,undef,undef,0.01); $owx_serport->close(); return($string_in); @@ -1408,6 +1414,7 @@ sub OWX_TouchByte_9097 ($$) { my $loop; my $result=0; + my $bytein=$byte; for( $loop=0; $loop < 8; $loop++ ){ #-- shift result to get ready for the next bit @@ -1422,6 +1429,10 @@ sub OWX_TouchByte_9097 ($$) { } $byte >>= 1; } + #print "-----------------------\n"; + #printf "Sending byte /%02x/\n",$bytein; + #printf "Receiving byte /%02x/\n",$result; + #print "-----------------------\n"; return $result; } diff --git a/contrib/1-Wire/21_OWTEMP.pm b/contrib/1-Wire/21_OWTEMP.pm index f488b7d84..2183b0214 100644 --- a/contrib/1-Wire/21_OWTEMP.pm +++ b/contrib/1-Wire/21_OWTEMP.pm @@ -16,7 +16,7 @@ # Martin Fischer, 2011 # Prof. Dr. Peter A. Henning, 2012 # -# Version 1.0 - February 21, 2012 +# Version 1.01 - February 23, 2012 # # Setup bus device in fhem.cfg as # define OWTEMP [] [interval] [alarminterval] @@ -81,7 +81,7 @@ my $scale; #"family" => "10", #"id" => "", #"locator" => "", - #"power" => "", + "interval" => "", "present" => "", "temperature" => "", "temphigh" => "", @@ -169,7 +169,7 @@ sub OWTEMP_Define ($$) { Log 1, "OWTEMP: Parameter [alarminterval] is obsolete now - must be set with I/O-Device" if(int(@a) == 6); } else { - return "OWTEMP: $a[0] hat missing ID or wrong ID format $a[2], specify a 12 digit value or set it to none for demo mode"; + return "OWTEMP: $a[0] ID $a[2] invalid, specify a 12 digit value or set it to none for demo mode"; } #-- 1-Wire ROM identifier in the form "FF.XXXXXXXXXXXX.YY" @@ -287,6 +287,12 @@ sub OWTEMP_Get($@) { $value = $hash->{INTERVAL}; return "$a[0] $reading => $value"; } + + # get present + if($a[1] eq "present") { + $value = $hash->{PRESENT}; + return "$a[0] $reading => $value"; + } #-- Get other values according to interface type my $interface= $hash->{IODev}->{TYPE}; @@ -323,6 +329,7 @@ sub OWTEMP_Get($@) { $hash->{READINGS}{temphigh}{TIME} = $tn; #-- return the special reading + $reading = "temp" if( $reading eq "temperature"); if(defined($hash->{READINGS}{$reading})) { $value = $hash->{READINGS}{$reading}{VAL}; } @@ -371,6 +378,7 @@ sub OWTEMP_GetUpdate($@) { my $interface= $hash->{IODev}->{TYPE}; #-- real sensor if($hash->{OW_ID} ne "none") { + $hash->{PRESENT} = 0; #-- Get values according to interface type my $interface= $hash->{IODev}->{TYPE}; if( $interface eq "OWX" ){ @@ -516,13 +524,13 @@ sub OWTEMP_Set($@) { # # OWTEMP_Undef - Implements UndefFn function # -# Parameter hash = hash of device addressed, name +# Parameter hash = hash of device addressed # ######################################################################################## -sub OWTEMP_Undef ($$) { - my ($hash, $name) = @_; - delete($modules{OWTEMP}{defptr}{$hash->{CODE}}); +sub OWTEMP_Undef ($) { + my ($hash) = @_; + #delete($modules{OWTEMP}{defptr}{$hash->{CODE}}); RemoveInternalTimer($hash); return undef; } @@ -645,9 +653,17 @@ sub OWXTEMP_GetValues($) { if( $res eq 0 ){ return "OWXTEMP: Device $owx_dev not accessible in 2nd step"; } + my $res2 = "====> OWXTEMP Received "; + for(my $i=0;$i<19;$i++){ + my $j=int(ord(substr($res,$i,1))/16); + my $k=ord(substr($res,$i,1))%16; + $res2.=sprintf "0x%1x%1x ",$j,$k; + } + Log 1, $res2; + #-- process results my @data=split(//,$res); - if (@data == 19){ + if ( (@data == 19) && (ord($data[17])>0) ){ my $count_remain = ord($data[16]); my $count_perc = ord($data[17]); my $delta = -0.25 + ($count_perc - $count_remain)/$count_perc; @@ -660,10 +676,12 @@ sub OWXTEMP_GetValues($) { } $owg_th = ord($data[12]) > 127 ? 128-ord($data[12]) : ord($data[12]); $owg_tl = ord($data[13]) > 127 ? 128-ord($data[13]) : ord($data[13]); + + Log 1, "====> OWXTEMP Conversion result is temp = $owg_temp, delta $delta"; return undef; } else { - return "OWXTEMP: Device $owx_dev returns wrong number @data of bytes"; + return "OWXTEMP: Device $owx_dev returns invalid data"; } } diff --git a/contrib/1-Wire/Schaltplan_Passives_1-Wire_Interface.png b/contrib/1-Wire/Schaltplan_Passives_1-Wire_Interface.png index 611fb3facf70b50c81e0c3924d6d1c6cd0dd4c62..0cd477b1db6a0889e66392cc44069f5b60cd1145 100644 GIT binary patch literal 29208 zcmeFZbyU^+);GEUB}EVrlx~qmx)JFP=~9sH?odFaOF$awPU#e+q`SLgfxx2ce%IdT zocBD>IPWv=``;aRyld>Sm#p~3H|Ct5m@8OGK@t<45FG-6U`k7gsX!n|x(6Kh4-Mp_1mUcC|#J0i`_&o?8F--+tq zdEn!lqHWps%&vyLYwz+xs3j7bGQ_*pT)*78<#l%XOo|!@emRi-m2y4!vtP^WHuwwg zo+0AH|L(vphd(|0?Dr5nwXr^6g#Y=O;vE8bVts^w0iOKcqiVumee~x4e)a$J!}RS5 zg9hf~$0i#MV8(`Li*;%ht_h4^yn7O_&jeoiL2q@svy4vxpU?k0_n)6vz<0$D*0+=s z{p{HuxgOJQtSXQEY(&9I_mhb2kKwqShI#JzB>G4nNbi~!CnY5W(n4wD9YK?@F`jF`dt=FOhRzOqXWir!vV^(|%yY!io$Fdj$V3 zDZk79YG>$Fsa_*EJCjb$FjjkeJBQXQku@-(+rlA*CXElwjwp*Q8=et;L6nv%u<=ge z(AB(d;4U*=9tT(T(I3$jANux0f+Bqg3l-JvY+uX9=3sLm*>osP&}CoK$jFF_it6fT zj%>m+It)JwRL%VhXzkMGP`dB#cmX&sEiJ9f?s)Ig(ml8k1qFrR;9zxi^#JUU%(H_9 zew%rokW6Zv;8E4iDrssQQ`4>XcF}l!c?|OCj4J%3jUA>pE7|lv-*?P3Pcv_{f=gRK zDoGOVNyUy)i;q)^iW1<`8aOjCG4Z}W3y+LEoU1LXudfdeA5av&{a|8pwmZRa^>crw zD!M|%b-DI2|EEu%_My`CZ`E#u;)sU;kP<_hiKW+j{6POSY zRP!^vc9`oZQF19n8~*{LOBksjpOBCcE34hsV5+&f`N6@#(a}*TKGW%?OL&G@95a`geScQG(pY%@|qeUhxIS3_|a0?YMY+7MHhH#TTudr>La*x0P5K<*mWMb*sEVa+2DaTIVr&MqzvgVIAFOOy{5$Z>+} zbeZSWAV1!9N0Pk=c&nxc1>1FRvIHzDD~$)kh453*g{(T%i++!SibAwmFLxhf5HJ@z zj;KI}X&)5F=WR0iI+F za{?AsMkta`gLqu*Qf3`34Bux?hFH<&powdgXw#6zC&$LB8pvLj$|rN_H8}0uT%Hhd z+lCCAL_0p)YJv!KHM5B0dkhl*TRJJ>r6J9j$Q z4-G%=y`DNY-B^mezWX#3Xx^NA6gHkj_`5N|Rogx(H}pfuXh3FMTwFmx0c>r5fB#DR zx2w3MdcRc}4JU1@)`)5%pfhbP2rWi+0KLItQ0a= zUYqM`D2Y1>h7es8dy3B@ z)rQgW){JEW4Td9KpRiS~2O^(6`97_AM5eGP;iJu2R_f1+Ec*ga@TE*+ENv6*zS$_- zJEgYGTJECfg?KYbvv zB{BLwPP}VVVYa?^E?eJHVT&lff>C4+#p~09nW=%kc#~0tIYoVi#xQ@+xby9zqD#VV z7ZRN}76-=jMJG44>5KZ&t)eZ)W!;OekuAyRthQo#zO4+}rfSH)M0VmPFA+C1%Dizd z8B{!Uw=gukCPKuuTTI+HMxOR@#mgL052RIUSQTGjNpiEUJ}dBHw=~d0p?FszeI?_u ze10Bu()@$*z2k=n>5RHX=T#o+|Qt?tgNi3XKiD%81}0AXLq-xPu1bw?KQj( zuo#*mUz#YatRku)r?~z)O%8-KWoNoNZ z2!`(Jt~YnCJf^5zBi&})Us{)aRZDV^kK_7nP!L`)P%x?*fSo*LZ6$AgzBIcuR=hRj zd$T{@+gll)<5pQGJI5S?Lip?%wkUB7Nv5QP=d9cDBX=G2njV&Hx1M4$Q)`lDwPVp& z=Xv#~6Z0L#lImLOYVvAOJ?A@};c(Ayr}-y0>9-e&tMS2^!RlpN15)YsbLTZTkI1rp z|G<}`nzKhq>?lLY$;01erGv6r_Pq16?y^T}4EW|ht9V=vzo`*1h)O}Zm)hDyDk@fm zi5D{Rv=no=t9};kk@XdRtpQ99b)ZQ_{SDaflQ-ZSKE_AHW{S_h)9+UY(T$vzCVNsa3W^Ou)`;FJ)pOJR)fq?;DV!i&; z*@~4>acrMv$#?`0Y?C)Y5R9 z01b#L5X>vJ)BbtkEs{SrAzXS;*Rr;S)_c{T~(>LFv9b@95S~%wuDDV|!R!zw7MRw6|`54$lw&dA|~JZeKjBUE-wuJPNnXP%Xn7Cs>RQ z5B&jRuka^-|2J>mOciT69xgTmkYGJinbTra^}8}+QIMXjM%1#NEE~*YcXzk2@0|b} zoBc|ApjCn@%ZOgIT1*^YtUH$*eJ@7vn`2+(MCXMOwJVv1wX2ATIesuYZ?tKk4OvBe zrdc>IPsC2n6`RT?Eg>Rpqxm2y#Y()mO~1aEuPpMUf8vb#3o&7k85DX7@d^g1w;?}| zVbf;@HLdwRD@#KL=GWt-s`5OvjiD}8Do@Kh`}$;QudlBqEhmfFI5@H!i&a!rU&trH z7CjFq+~0Qgh13fVEG##DKeH>szj_SF58zLXW7d7Zee$#C_Fs;jp&`edS`d{7C=d!=aYia z_D}l{arbG*FVpQXZppQDbjWxe)>k@$+}+*1uVCM~cV|&udl`d^wbidl@daPfQLGnL z8PG&1q|AH2D&X`th6b}4Np#VrN|Ki2Ki2-Hk*0BXBa9H*qLf+{gCptz-I-|h_RR^G zQT0RYdH*P0A+{yP0rT$8kbdaPIpcDon%}W#fJ}a8Az#DBScTg5w4xev;QD8;(Jfq0 z$7{ZGJ{P;2?4cJ7#~N18)egfchS@2jzw~XC>ee4uPwDG4T^trBydHEf5 ze2Gp5S9Ub^6OL#@?OvKzl5}1=UmjKo)@_yj<;(_3DAwqEGq=1I^V+e`u7su2{cUX- zEn_kU(i_3@`uhL4=LLc-9D*p^<)~HG@->l(9duNR*LnV2^)@QEp3$biFi40SR_D>V zEo*5Rr5`Z$_|jgLO;~zfyDYRm+4?YW*>u0vQSy1JUPIxUjQXjdg}QagIZfBv- zGj@)aQ*o}|dh4V$^}cSXJ0L1rol4avdtAS_v}NpUag5(iDMQ5_q(1SKNGamf>7FT+ zD=ge_i>R}_7|WeKBaX4zP|Fjt&Af08%g()*-MMv6F46aO4>D-*sEO%>$bB@5O+583 z$P4btTHexES60SIQOC!}W046JmzEyP*Pqz7-sbuvVEDcKW`>thpUEN?+r`+Od}&FG zh);*ck1Ih~pYMoqMgCI3OHEHt9?zy30aArs4x3M8H?^|1E-5LQVHP9Wy{2l3bKS3Y zm?|?!P<$wPKCIj9p+=7VH9p?M(=(mNo>EY-+4KCM)^_O(25Yik`y3J(BIF$fj$k`q z2P(jYYD*1K)P%mcp$`aN&mu=#6lGwe zFG1J?wq3jAleMJ_U1&T%Y`q_JF^70OM37Ba)6ihitt1jp}%uA6NrE=-s=v4TpjL{;M-65gFN1t*wEh z;|cO$P8At-D$}Ekryb<3lW&`fHNQ2pUcYvcmk&=!ohn=@dY10u4)_}>jp5%VAV>fD z@}#S)Ysu>blOiB9pUmgt{qcJ5P`Yqra494V2(Ln*yveU4+hxr42eS3qc{Nm!`q@<()*ui4QXLGg&jV{oGg~r9j z#ek@`wzli@!@h)J^Lmqkq*K_As%Xz=Ork$=B9O`N;MmX4*<-qC$C}lByl+0clC{L{ zTiuyg;8Td~jaL|TPZViLii!QXycx?=j3nd?frdb|IUg`if)yX!jMHed&W9Tzy&pF{ z(`_=P&r@7c4!&4q4A{OANwSA1C>k0XL4ko4dXGgcgLDFlgMApTj3@ejUL*5o^Za?_ z{{GGM%||I36~N!F-1B)Qo^EtMCnIa}j>2~Mv7Rr&7Z-1Y(yA!dIUp||+l!KBtwyXE+p5m_Jh!xAOzH;$ns5rsdO-)|I z8LzfT8{9xC!{U+;8P=L#_a}@WV%99wi+TrM`$e9LKapl{q)05Lvnt*4tdE3%A$(sao<9VLVErby?}K7l z$Gs$mdWJ@NhCAJ{o^omPMwP4jW_Z2AvEiLvUG&zDG5pi{!cB8I;acO*&vm~o= zPxn!T91ooar?4iOP?JG@A}q_DJ9-HJ9^DnRtR2>H88L%*($Lp?o^DOq#pz8Nm9 zCVHDN_vp8|@D4W!G#k^U87ct|j_>WLLbP#WS1{LS;j*!PwImT!4Al~}=d!f1BdIE} zFBF9wHy<@uR93#?%z(aqIGV10mc_Q&s7g#?~= zl10h!QJIBAHV>-BG^d={xUe6_M5!!zBUP(@$Q;06?q2S4{l%$LyNHfSFxhf2u=kv& zIw)LnIioFAoS%sQS!fHE)Do_4gHyqk!B=F!!!qh^jrYDhH7P7>wiSK-$uq=r_JZSS zIFasty>n*1Meu{vYWX8r{C7K*xaIPdeSND06=5izR=jyi^Pil(sVLNyl@8lHjR+UN6dfief>f__%*(%e>o5vY{v*B^tA!3xw1hHobeSo*r zOOc%?$ZPr1@XT0o#+I}?5$cfPY(7;)fAjhjkwig5Oh;V1u{FiJOnYkd>Bvg^+dlff z<35-yY4ZNK^g1Eyo|Tmq5d0Fjv*=_h5Fk3>@TnyQ&=G0LnNpxK zvB^tm1YonUlr8z*4;h}o^xEy$x?T>DqGVvewb_i3B=-c?+fdB}jHaWZF>doi0RJ8w90YO- zJi@OoFSogbLm-SISn)!!y&rt2U8d>Y z>PkxGRx_2OqbfBR4@Wi5r+ zZ1Td_d}dk}UOHg&&pn!4f2?ldATmiyzs0(ioKl#7TBvK+1>wKtRCw3Wzg86{;f96hprQMg55nZz)eF z%F8xk=^gAUoHJ^hWr;w9bC(ck74jL?P$`L<`cQb^yE|7D$otN@h82>J3l<$%uDraw zwk?+?B|k?_uijiqjtAze#wvPK-}Ma4mKY^Rz+6W3o+NZkXy#l=ANtmA2=}|TtPpSE zY?(lFGoPon0gT)B`r|A;^pNGj@QLJGb#(~|iTH$s^MeIXu#X~11<@Zp0ty^D21YWc zW&G$zq7-iGB{}?72K5tB)d+d}o&9#ZQ|I^Dtev&SfGPsfOO(N!oSZ<*Tsv|DbaX)~wb1_UN^}gBB}=K^D>rHX1gX{pAAlxj z(IVuY()#MGFC~5n3j@(cHl9)Ws0Jcp^ggOl=;ZwT{&dQqUbosKZTldeog=!+%ZL}}DHWB` zWZRa+=;))PZZcfagQeD1hmGF=Moi2s7M7^3|LI}zxe`6isK89%s&lp1@b>(w6-H3w zacW^?v=$YGeO0hq`w&71FY|BzbYSV!+HkV6DplcPWc2P2K*zfB2EfRoyb#iiY8H{~ zs+y{oS_LFF0gHahw{K?V=2}Z1g={ZiwoAf5^zz0my|Z`jJ|!8UO6GUfGh$PDc3V@d zTOZTC28z@%q6v2$h=}(y|C~J;df679)6O_a4M10`3aAot_HR@T3B}6f2&5IVxFfIz zn*KUD+!7vfSq(X1NEu6cv-s%9y(6g8V^@cojgD^nXsuh&^NgB)%O>14)Kz#r4b&JN zU0G*~f74@OWn_gBCiq~+w_hJTdGZ8y25bmLCp8eiBzWFp&wC=;FdC6p`-rL-Q$}&z z>F7fvUX50D_3ZIkJea0S)2qA%X``Y?PeZ9&&KEs*Q-1bOGY--mjFAZsq{o+i)u_3z zycIvixc9jW`#P&R@KWx``gI86FdazBt_Lf;6b4d?RCt>>64A)Cx=PLXE5h0fgf4h$ zB_k)2|10+o=u3spPF2W5IS*6#csCUL(yzyKGdaY^R<9!7-Lt>+rokM-Qe>8Cx$pJ% z2u-e@b4xy=sHf18u#V>bn{(O#l0)TN6Do8|J18S$nD{@{1a4}2h!^hKFG33Ar8xNK z|Libzg!UEAPdytv$Qju)Q$-@9o;cBue;fZ`{Q8fUs}Mex>3vj#^H_7&Pi}{y&w^1jbA&&@AK<}24*lefaZAo@-e_UtGcTI6YNd` ztt`JeTd$1124e&bB?Rk_?{cG)i?Xk}oL-a@(@Strz?Xy&xl1(JF0^3s6G^aSe*+c= zt)%BL6KvUk9GsL<&(zYw(`i(>rU;@W3w95XHJX;~UxQkw`*DO-LdT;#1%sgg%T7GC-SzSqIQ;p+Tw>H8ZLP+c^O5A`h1&+wXBD1^3%ce1ZqlTtn*#hKKUZT7tOwmL6dCE+W!V)8MtP*k4L{vG;+1u@ zof<42d*H{-AJ2bIuC(Zlp#dLeU}4D{d)jOaKo+Qe1O!t4ooPS1Wqn*00A%HdB(`iJ+-iq+R29iL%QOEX@OkivOi4`+gtwb zF{?snMtTYgZ?5iGt7$j1P_ng1}k)3I;ufbvmkxYENlg{(E z&q@A(RRWT)4#;lny|L-SzNEOgZ&1I}$(VmM1s0{cy1L7gtt!2jenKK`hVnp?GJ3Oy zAw(d@L%VXh0!VU;tUZaYvQJJAXM<+!oyX>ETfL#PoR@$H6GTA<4~r&-#~E?(?}C|F zujq9ui!&f=U0Db^q~=fd)t(3yoVq#5$ebKf2hNjs@Jj7}UooXT&WqqJ1pX60b5za0 zDxuKymS;`2tQ5cc1{tiRo`rS}JBm2+>QWf+oUF@r>cwc`c$9trxDvL=-eQ0KITZ(d zSNky-pg&=5qAgKS`a7CLnkNfS(S9K|V96D*%l(T8_{%*>7~uEt{uqwZ`*!C6fF(wX z@D=uDN_dbVOIoET;_Xz!>Nkmj8~#a~x{BKIYUsHY+c#i70q1}`U=(~2+Y1=IEEA)@ zs+JO4+u`Kb$^@C(6OR_aN96tea<%}saYC_qvReh1KVW@IC@n1oo2IR7WWyqmMh7uE+wWHsEZElF0!~m70~}zp%&` z>`Jid04zRSVp*ce`$3R#3C~&ot>Tn6!s2FU$3R6L7JCmFP8!*v2dGW;MP3)_-ut!a z^|bMTub#zOGhD=T-qt0Ky z=!D`>iUTnSCJD+>DfIRAUnTAXhD-Psrt0Jbixj@Q04B8@uEKLf4ur0EI}IS?qFsst zi%(gk!8h4w;%`efr0f*!6^YVwGwuCD1#1=X)R=%fPu*4! z@B=AtX?U!78WT*)9PG8?t_cV9|GJh1Va3tI9H8)?=6Z0OW_SSoT=cc*@$`D`SDI*S z(RdaEpFhh#fhh`G^fMM&T6{d0*TtXNaB<2f34L%|At;6C>m6Hf&*s*;BN@c$COi?6 zAg#`Sf$X1iC?qPxuMSLq)&Bx4pWoo$Aln(3^paYB=QoS}V*-xJ>FYO_K2QfZ9n4<> zOOS2zDL%!A^`7X<%gbuda=H*4)Ca)RMQSLHdIWZ4u!Sqi{eaDAA?xI_9o2U(Fo?gbmngMl}?|t@mpm z^&S2AzN_k`0}oEE^&A&HeF#)kB)xa*dCUzJ*f1O%U&oWGQ6U+paF!bwFddzoylyV+ zjg4sl3Kz=SdY(yErd8E7JRJ2{Q>F?Z0rGlx2#|MV$n{kcS2BbS zv|>&gAKtxV9dR)PrMLjq=ll8d^K;+38~0=`>u-Wgev~1ZcqsLN#vPv1N<>74h)BW# z@Udw2df+zH+&wMlvsi93bE#2>XVgNHll95QU;6N&lQRges4(Kf?@kE=+MFG#8_ zEX7eTXD|1J^sauzUTmhTpK1qi-V5Znl?j3n75*B0GIW=KHpRC)O~=R5eXWCNK)}?W zyZOamaBW3t%w-4FePskG?I;^f6V1 zlQ6eZ^HR86toIn=R|;PZ82F4A;G_3|i3Tg90-T&F?Fq|O$#(2vid=nk`~64X)5s#= zXoR$ZSmq6+p&H}9_}06tA^?x*lYk|Su|`KJ_^WZu#$VJ{i!=@QI8cBp4U`eA z39KRcH>1}cqRP8o40jcysumSZRlmPQS%{J@y;ye?MLoJSom$hz(*FFvg7Iw3?@0vc z-gJ%rf~@DjpR<)*o5tk&up$OWnku&6HmSv8uq4Y2djO@ae%h z-uaIsb9zG6;ICq%+tMUVH9Dwpz6Neb5MjJnxOb(G_PE(G+CmzfO4H5S;>b*hj^{SJ z+8b#A@QsDJ$icvfr;%VT=LajMSJYcYJ2e$8oG4tSqsmWo@*I4j!J`m}6RFJ;3#IMl zVMX7YA7D#3D&TD4xc)hN9fTJYcKzI**8)#-E!%S+0>bc8kk!%Pct0{u`|L`01os0Rur!0SUA!$*DQV8t$JhERSm-{IJChE?RI9L>&&vV#sl9x0=B6?ZKb5e_~N z>z{esEft&WI%20C>q*bgw_)I>`@;s398Io>bRgPP-ZUVAerY7GUGV15d=d`(;2!yo3ippgH-RiIcLm~3c@b?W)K@RY;Hqtpn|j7xDj;U zEPV3oe3kaZHfA9koCd%S>8aR&sQ`fWgtl*gip>RsV}|oh0MbW)p_$|D3lVGfebfFO z;k=(FA?zkAd-;C{pVEw=4zg4y4o?}EJg!tx$2TM~BrSZ`6TtOT=y(DCA9C;okVoHh z_a0Kg7hvM~GBaRe=GRn1sa9(Q(ObEgV!4QYO;O$1K{#Rc^;SxbO)P z1VviJs@(jTkytYYR;Fu=wHO;hUSAbe}8p zkxX$fAp=HyTmY5W(ucTNS>IKIKB5vplIfjop2;G!)L-3A@Fdg$>oPNn9tbt%jb`V- z-)0(TtkzVV@1|uBf}BChmEq`!^is<$lf-lXvz**qg(Qxh=JUl^+ZBg;p!?PXT^d;S zB_xn3#2E1-N%-TNfiR@$$EMj(dS-V)DLvA;#0(4@f!Kz&Ho}u8`+)o$aeY|)=jiA; zkKHnmZUIk?N&!SP;3#r-bYy2^TRFKzKtKQ~xo=AD^qZ#p`-^RtT7c&s9FUWn+qCvA1i}P*r~GI` zK;wtKJ-BWFbg2WB@HY1L8h!8YY!(`5XlR~@3J3^*YXR*RLoPWG$Sk}kOP<5$<^n#p z=`z$fqCMP8UQ|new-5A)8bcsfKrRO9?Eeo9TYt5h{1@*c@G^&!3AX_GF_u=I9>DrJ zB|K+PAzi(O=7s#N-?|t8s0JCwKnNvy{rdIU*%??6Xh4ksTqQcXgR?W-B{uy1jlaMD z#(;W>HZVizEveRnTp1T1Z;@pKzN>_Uh|doUe*{e0r5yDSu^veaI1TW~s^+(D7)UI(EE*dP>zIOEEEjRd9J_2Z( zcqZuK~-ZmzA30hy04UFPmPaOH#22i}YG zf7qQ-i#qe(+S+@)=Se3MWwcZQ<^n$_XwkX)I6B5h1aC@U7Qy;I?*Z%(&}8ZbL8VJC z!g9#cck^dr%x|zT+ai#Hv>&IA`9`SeF#MzEf#O{?1URArKZaU{2J8o0uypp^y>G6K zt$QX=T5lS`^SSy%8!v8Z=Pyw#Frc+If*wi;IVhC60ay`qIh+QePt{ZIc5sa!5MnTw zIhUFM?El^`@hJ>Q)o`usuV#ZE{N}ylyZ$QuuIwTd+c7RFsMq@2rEMMC%%_YwjxfdIubc1X|i%-k!;TSCu z`T&d$gmfl=(#zq zG?N~tdTnKw6j;X&nOIs}_r)4KW5fbyPeKMuR$MWprRDe(+~uJ9psI(0^pTwT9q%5o zx7xo9);A~cnF7@AkC21PkY-|8)T4uqR6&|XUOjb8U>*iA89bh`83t?uF%bfh0iVp? zmR26`%#S@+jDT`+tq)+Qb9?=;8{x8^^}0Fg)~>?_pQ8g&m~n@}eDpLM+G_P8Kn}|5 z95{v^?xOXQjhlPRuAC4DoVSMJow<5XVpM_}iv~~0w-4OG@X`PxB8y$lL3gX~0Tdg+ z+|Q&0BFg@E+ItRx%Vxfg)&Ra$l910MIm|lipMnmRsea>cNDhcyPDHBvIs#Qg{SRj_ zz7=AEPjR3KY7)Z02zex*+H6V>3JSbf$M{P3^r;c25*@?1FbawrpZDegkYP3H~y{VH9n2saZ^r9>p5sI0&*5J9EyR2 z7Z3#^OobjQxR||9uMe(@%gdGM<63}+1XTEdnQ4G~DE_<42)rHw=M0szB&-*kwCLlK zzI`j#13*QD;S&HV1;BL4>iPc6e?KXS5a@eq9U1`Buz3cXkL6P6f%`Ti19BX$JH_bq z@CE1uX~#kbOmo?wPfl?X8qW6VDWz}U~ zr{NHIzxYj?VYsYm!Zbt0ol>6+XELg2kN=WM_c&Q1zp#y$hD{|2Cr?A#r3|> zd#d9*Q|ykftBxdOk_q}!FEKPQtUA;&#!rbpeE1M}wWM=KX^Hv&-C>3!s$Q%aotiq} z^zmrETmtB}g4rmtUW;^~O%=%eA&y6)2##8k^&YXBs~;T>`hf;cHaYNj^i&8U1! zP6j+QVEwqxL_#trOZE5-e|`CnmK)?^FP4`)JZ=jO&aI3U*_zB=s!hVjLg47H+$2PGnNE@TaZu}kps58h)xQ`XL zDfeF;Uq^#K!uhyBUVruK6(D6gehPCywxh}^-V-A!WKF(%3MZD7D5I_BYM98${TAyi zCg^j7$!Y#>RAgm%RsN{e)mabtXTRAPg?NXWo+Z|kdm_wji0mB$i;7#w>m9V3Jtb*= z@!fr$?^S^X5<>vztoN)m22BX4`hHOTrx!qsHWsjVPef@I)4VqO0rUk-frUk(iYyBY zOX8!k3xqz<*))~v>88*_a2)0a+;;7{?R2AU(<*=+zh7gcs{XhbT3)(iXhn`rO_9^! znV|LeIak_er<&abk@C3Mxvoc#`kJ}V6)Ka*^O1IlKEX7W6PWd6${ZmXmLP?u0-hCs z^p>+0Ab}jbJTPAyd&@C-_X|5?DQ)o;onu`WnZC5uoPOlGJ8En2E;zST}D+n2JF{qj% zjibST*?_Pl(G_iMN!s>p1EQHdob-Wr(6f_l2Gh;&hNVb2DI&#}C!cI<%8bj1WqRT27Mvtyv{ZD2Zxban8y~fsH zNZ@0}(?=4NU2BB?;4H+%#F<%Hf`WqX0*moXI@8Pm9?Js>cz_5<`B_I{MDSY!aQUSP+uX{`3-qM|V~c?B4ekJw21G1@$uKASP{q9q)X5_x+%nWyJzznLs2qWfLuEwR*91 z;aal&-y2l_)pa@|-1y1SzY)4U`LZC^H@9`w{VVC1@R5aq0^o9M`wmW2(*f@UdR7e^ zJA-z}a72p(CpUcKbTCRR6F^6?YNUJ|w~+mz*r8xEw6%)ho?g8v{^o~;e(K0M5eF(l zC?{afqF5Nun3&I)7PlLskDeUtf}cYe_9X|LpUq%X{aO1g=zDsyMP-;`w2m3zMUh$y zArvRa2R4?MXG|`YPFKJ>_16s-Fso;{(kZCdY-k+(_a zYOvDvx)NRzj7e7?D0(9csNp|k_|}Y~$U$L393FeyC7_36eXe=G>BGb;d<=hl`mNUr z!082u8ijjaLD%!IEiuPoti1T+MW4stPQAqyEwn7Ow74VXEQECg`CKiRp`_iPaBy6> z;%@+()F}PVhGYV}&%njmmMt2EQDa02Xb*jL@I*8sj(AS%N7bLmc0!eIbF~|#}+ z-P0ggB=8*P(WYNX-9#r>>vVIG>_9UcDVc+cDr8PoL$4PmH7~JFQf+y<>wkg1mM{GI3{f2)qZpa1UkSecSKzn17S7 zt_*xehM$723?b0t3A{qZ21|dY>UNBTpZFg8l%03aMF=}x4+CY*HDX5k-nf6mF3{_H zLMoR}^baMt-1j3h-5Z8Ndun0<%P|9;Y~W`>tmUouEOU z_^~NSUWH5X_>#Ek&HwD4>|!ZSQGcT`A38IN#DT=3~Db zdUXZm2smn2FVnX+G{hk$mJ=)&~loltzX* zU`jy|X41sA=8sDT^dxd`8skPvQ9SkUgFQXZUVZ2ZK*RL`upV3kT-Rq~8yOv~Y(WBk zLk+%?6i`EV_BEJp0oK}0`PLA`0>UCa|G*L3zTa^S?gD87dIcvnW(nz_mQ<60VKW@bvt zPgg-nwxPMoaAQQ2x^!?mIlV`hLc>o`T{j-?3SE!i*Sa3sD^FbCb+;lt3XA5;ry~y` z{F2@MHe&T*8C?pFpuWrX7Tdz@ABXuw6BP<~#>Ow`?!22q>K--IS;t-Y=Pr>6=!{Y8 z^!hmRcn>fUq=^i(sQm5jG#lOJI>g%^Vtk%Di6ph0yed8P`kc57)n2;vN%%sD>zOn} zK(7_skehMCy`<;t-k!6quk4_F9M;0F5~33FJ5)E#j?MRMrrUHXrTwjg^P<|A#*G~N zrzAx_^lwz}s$Cdj)fEmnc};x=n-EUaQ?y5>$2bW$i7n7tb*sYds+cZRcKEar2qY6C zyM1p)E+Q9)+WpL~H*RNjS_Y8ndqJLmu;=b@sfl^XD z?Imv&gJnYJU3@FA+4tVS#CuIx>%<>2*{V^NNur`K&cg%ou&^kuMFnrqsb6~RSA*D` zv}eV<2HUwK$&6QQ4~sQ|nvzt$syN+qBglGWCY=Pz2ne4Oj~hpIDx645A~=Tqw1AF= zjAbHaa=IivM8YpVGbni)*$|<3XgJhr82v6$yiV=>hsKU*XW=LM9Ls3g1no0UH|3Ql zf)d%n>CEyxu;gSG+i~a5$LYPJA)^|K&4jM(2b=e;FQEm_{jnmvT982( zMQ;*1@fbQ3JW1V*jSxBr4R8jOr3;lu7?0cOve)4yKl8!2AGRv{RTZZkHMvW9)_p8f zR_s#(DL)2Xg7ZdmdN!YsWnXm{uP1Dj$!Wg~|9_hM@^C2IxBsDyNXk}-&|{Cvke%-+ z*+tf|w#gc@jGfAokeB{xx(zCr)Tx9OPTFU#Zaq zGyKMoTrGlEV&{2J1Pa#9BQx;HLJnVVce*mAI^n{)XPZ9H5aeI4%C~uGvn29-l)Dg= zKIUOQTOE!eE-$9KE8LCm5$1bmpES7Cxx{W-xx7?&u&~duD_$$?`uWR!(+yK)?!DU` zPO1uTuI2V=tVXIop1(zmz}Dt$#LkdcXQ!fU4hQk+jtqn=$BF4-FDW9g#k?pD=cp|i7G{%acWB41S>SZU#=V2KRo8Fl7$96MX0h**SgbSVltq-zw_Ge= zmC8gh7Ke8HX*rgwO(sA0Nwbt&Z^xT-VwQ z7oHlqN=z31JMz!>dh6Yx`pPN4HLXr8H=e&&g#6La@a^Yty-GUS!Gqmwp*O{{m=?|V z-qxH7QU(G(pjK`yp=|qL5r=m%N(SCcMJg2kEGX^Dt{M_QSBs={ZJS(aakP@KZ1_SX z5@%TFcsUhxuN#NqjTPSlZt}Iq!l#^^9O$#9ZF0-H zsTK|a50KiPP*%34JH^Y(%gk)MJHiuEzz4$*+TR7N(%5Hrfirz~)@B5|rlOtdIm&hN zvd#`jWhKNa_Vo6WzdSt&^bE`jWx;60+}s?zFEm_&f`T4De(dh|1yJb#!|Fo3;()RK8Fk_eAgpK>_01+}s8IK~)9ycEjjeiLT;C$ieBvMig*?NUCstdDrC68>V!0b!zer7GL^3@yY2+pkQ7Zzy$?k9)P$i=0 zt3|s&)#TT7%ii!UeR{qPzd&2tFC$nB8{hA2`C>=PXlS%A6Z^~R>v1aUds0j?Oin|i zt?9d)byXAhg4ywG=!~e`p4O~DEmIn8z(lnL>{Kt^?lUid5}2A=+P)$8fF5%tD+@;I z;Yxf9-nbN;=QfG7XY}Dxq~3m%Qd+BzRmnR>3e=%l4vTkgH|@I0wf*7f8UHk|Y#mIDTn(;S?@emPF}P~dA_oyZsWz*&5k)f8l5)|QF!!jr^XLvM_7t=S z9*dbh9~^T)Pi)V8QGWAY^e#4{wy9P|G%ZYD()sIOP^pe;coKGWP;x}_T&-vF`lWmZ z8dgu!CE8`YBg3I_N!r8&Db5)D?wu3aJwwGV!(QhCT^60V`kiZcH3eu8J^_ct#kPP5 zx=*SIcG1xODdD0KprM4hn9lu*cJk1s&4i?l7odBDs3to%cMpK5larG->dJPe)Yg>> zeqN+lfPfwX;dH&d+76(>TuA$yc6RgC_j`1r?jk}gPrLr1ry}1%FT}$rKlW*qE`lHc zUj&&{Qeq-ZZkp#2Rqx39(;TlXe-kz;)Hluy7O}K7t`eTaF?j2b>%M=&c9+q_$rNoM zPuwoc7*tvakQQnaZ>uVVE~GDHrF{lxLN;}@O#KUgxHvbSMjhT{npASwf{(X0t{Ug+ z4HHR+jxiyXJTaK7XBhoAe^6=7Krd!I`V@59eEqQ|r3A znNrNSkMQu)l;Rj7Pp)D}{VADJIeX9QZ_U6`%_8i4Pjw-S8^1~Fqllk+Sl72NuA8NC zJ2tNTf^Lr)@G(S$g)b?2y1R=&Zl zB+xk}+sKCFlGyk5SLGKTw;Y<`q>L1rD!XjQyajU#r0gsd zL==SJ0J-eDK2PAR3}pspmU=Fgf(T_S$n(yh&#JD*fBJPbn6j*L97&UzZPIts;btjC zE1t~3EEQ&kGoIyl0a1^uWZ{9sll;yExHn`Tbv9!U|MBD{UBiBOwgF|Y zwSb1Y%96N+j`^TO`n~HOD%vcyLTp|Vuv&}0zP;IX830xFzCvfHdfRJ z?5uS}oQ&m`Go<^vu)x8^WkF;UPuD9nDFsamo>Ql?M~MRb{J^2PJy<}=Rb^qWL^pxc zlG46%>=#$EQS!#j-2;oIN1zPIXR=pbXYd*6Yr9x7XAF<|XD&Z);Zb-JV9r7FiJnhA zmM1+U!+QOAqDd+2j3QsWNDMcl=Yvwaqk7S9EUj+VUq`oam2edm6(t5wvyZG@{n2p! z*`{VG7Ejz+xT7tG6;9t6)m(}8d4SGzh>>5t`6(NNpVmxG-;l+ed3@AR^wFiG42S{N z^q&ehj$Mn5IyV~X!SdjbzshZ=AguJ-BZIc4Fwi_84j0GaaqaS&cVh^SUVx@;_FeBi zshNB4ee~J5goON?UiRKko0#THoI_W%-TN>rVQ9%0PoGT_}7<}=`5jb`|^Cl^L|1w`aC|aMdLJ7p!J-{@X5upeTG)KX)Ohh zg9a)J+_ZdpIk=si926v8>0nj^eAzb&d15|Bqum{^I~iX`= zK*s)hcKEnj{=b%&;=eLXWB*Hk-&!5q|mvEU2! zPTIUip}#GIGH=o@oyzy3)YM4mkCMZ3b&vlzw>?$1!egX#hDAXTE2~R2K+VHtBNA=m z2d~>yMx`1T7TcmfN%pu7zXpn)?`kIp$ZpsK*Sy?*xfo)q$<(>Kiv=7c~bfUip2GmR(OPuAD9+MmKq# zgOuS}2q8LL?xglbEt1Eo|0_L+s_ws+-|S4UV=N~xJIv&bJ-ADBD4WVB5V@3`>ee#} zg9|T?Y|)Q=59B$`YnW3%`0F(0+kCWK?fzOns-pfB${s`CGOeCe$Pj6owD|h>XCB4b zr$z^iImOqDqgu`9@=2%JrCv)W<{}aHBs#M`;Q+Jk99Q;0rF|#ZJPTr~3Bg3|nbz9N z9=Y`+d%5(y-DVk)$m)+~_l+isbbAEGi=0Q8Y!nts@Lnry*@-W$UfmpjO~}c_WVfg2TIaT;10p(UCm~ReZkXJa4xPz#sl(AZT7_El|Loq z$Z1_|DdkF)uedp9`;#cmd>$P}vBjD-ajBb+k0FSv?T*%`f=<~SYk&9Vgjce-(aHBA0unv;<8iant%`-Hmz79W-L%TX@BM(xu@h^SER^5Jm z1$VrvO$ zem#A${Nk2U0p-&=20X7xqiUAO3)o7koKx-&#BUv}Ds3I6X%7t{;Ctgt#(&m!yp9OQ z%wi1j$A7UX=5#$1-0C%KvcFyPqW`00PtwsEus;A!K*DPO1Nm+8eT)ZJ{q4DMay5C3 zSXGhXhpWx;+`LsIw3Vs|eМ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 literal 18047 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 hLXQDH{r~(&n4_AnhD7wLPhnqGTtwzYjv`v