From 2d3a43fc0c49f23bf7dee392b0dd1f8c799f89d3 Mon Sep 17 00:00:00 2001 From: Diego Torres Date: Wed, 12 Apr 2023 07:43:14 +0000 Subject: [PATCH 1/6] move start transaction code to a global level --- src/Ifsnop/Mysqldump/Mysqldump.php | 23 ++++++++++++++--------- 1 file changed, 14 insertions(+), 9 deletions(-) diff --git a/src/Ifsnop/Mysqldump/Mysqldump.php b/src/Ifsnop/Mysqldump/Mysqldump.php index d5dbc68..0a2f2b7 100644 --- a/src/Ifsnop/Mysqldump/Mysqldump.php +++ b/src/Ifsnop/Mysqldump/Mysqldump.php @@ -433,6 +433,12 @@ public function start($filename = '') // Write some basic info to output file $this->compressManager->write($this->getDumpFileHeader()); + // initiate a transaction at global level to create a consistent snapshot + if ($this->dumpSettings['single-transaction']) { + $this->dbHandler->exec($this->typeAdapter->setup_transaction()); + $this->dbHandler->exec($this->typeAdapter->start_transaction()); + } + // Store server settings and use sanner defaults to dump $this->compressManager->write( $this->typeAdapter->backup_parameters() @@ -484,6 +490,12 @@ public function start($filename = '') $this->compressManager->write( $this->typeAdapter->restore_parameters() ); + + // end transaction + if ($this->dumpSettings['single-transaction']) { + $this->dbHandler->exec($this->typeAdapter->commit_transaction()); + } + // Write some stats to output file. $this->compressManager->write($this->getDumpFileFooter()); // Close output file. @@ -694,6 +706,8 @@ private function matches($table, $arr) */ private function exportTables() { + + // Exporting tables one by one foreach ($this->tables as $table) { if ($this->matches($table, $this->dumpSettings['exclude-tables'])) { @@ -1216,11 +1230,6 @@ public function prepareListValues($tableName) ); } - if ($this->dumpSettings['single-transaction']) { - $this->dbHandler->exec($this->typeAdapter->setup_transaction()); - $this->dbHandler->exec($this->typeAdapter->start_transaction()); - } - if ($this->dumpSettings['lock-tables'] && !$this->dumpSettings['single-transaction']) { $this->typeAdapter->lock_table($tableName); } @@ -1269,10 +1278,6 @@ public function endListValues($tableName, $count = 0) ); } - if ($this->dumpSettings['single-transaction']) { - $this->dbHandler->exec($this->typeAdapter->commit_transaction()); - } - if ($this->dumpSettings['lock-tables'] && !$this->dumpSettings['single-transaction']) { $this->typeAdapter->unlock_table($tableName); } From d3fcf932159276a8c85040272ae7f5409edce51e Mon Sep 17 00:00:00 2001 From: Markus Staab Date: Thu, 22 Feb 2024 09:20:09 +0100 Subject: [PATCH 2/6] Faster dump by less tiny writes() --- src/Ifsnop/Mysqldump/Mysqldump.php | 21 ++++++++++----------- 1 file changed, 10 insertions(+), 11 deletions(-) diff --git a/src/Ifsnop/Mysqldump/Mysqldump.php b/src/Ifsnop/Mysqldump/Mysqldump.php index 0a2f2b7..3841042 100644 --- a/src/Ifsnop/Mysqldump/Mysqldump.php +++ b/src/Ifsnop/Mysqldump/Mysqldump.php @@ -1175,35 +1175,34 @@ private function listValues($tableName) $ignore = $this->dumpSettings['insert-ignore'] ? ' IGNORE' : ''; $count = 0; + $line = ''; foreach ($resultSet as $row) { $count++; $vals = $this->prepareColumnValues($tableName, $row); if ($onlyOnce || !$this->dumpSettings['extended-insert']) { if ($this->dumpSettings['complete-insert']) { - $lineSize += $this->compressManager->write( - "INSERT$ignore INTO `$tableName` (". + $line .= "INSERT$ignore INTO `$tableName` (". implode(", ", $colNames). ") VALUES (".implode(",", $vals).")" - ); + ; } else { - $lineSize += $this->compressManager->write( - "INSERT$ignore INTO `$tableName` VALUES (".implode(",", $vals).")" - ); + $line .= "INSERT$ignore INTO `$tableName` VALUES (".implode(",", $vals).")"; } $onlyOnce = false; } else { - $lineSize += $this->compressManager->write(",(".implode(",", $vals).")"); + $line .= ",(".implode(",", $vals).")"; } - if (($lineSize > $this->dumpSettings['net_buffer_length']) || + if ((strlen($line) > $this->dumpSettings['net_buffer_length']) || !$this->dumpSettings['extended-insert']) { $onlyOnce = true; - $lineSize = $this->compressManager->write(";".PHP_EOL); + $this->compressManager->write($line . ";".PHP_EOL); + $line = ''; } } $resultSet->closeCursor(); - if (!$onlyOnce) { - $this->compressManager->write(";".PHP_EOL); + if ($line !== '') { + $this->compressManager->write($line. ";".PHP_EOL); } $this->endListValues($tableName, $count); From f1855a9eba7215e4cf8a7976601746a2ca1cb346 Mon Sep 17 00:00:00 2001 From: Markus Staab Date: Thu, 22 Feb 2024 09:21:31 +0100 Subject: [PATCH 3/6] cs --- src/Ifsnop/Mysqldump/Mysqldump.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/Ifsnop/Mysqldump/Mysqldump.php b/src/Ifsnop/Mysqldump/Mysqldump.php index 3841042..9958d00 100644 --- a/src/Ifsnop/Mysqldump/Mysqldump.php +++ b/src/Ifsnop/Mysqldump/Mysqldump.php @@ -1175,7 +1175,7 @@ private function listValues($tableName) $ignore = $this->dumpSettings['insert-ignore'] ? ' IGNORE' : ''; $count = 0; - $line = ''; + $line = ''; foreach ($resultSet as $row) { $count++; $vals = $this->prepareColumnValues($tableName, $row); @@ -1196,7 +1196,7 @@ private function listValues($tableName) !$this->dumpSettings['extended-insert']) { $onlyOnce = true; $this->compressManager->write($line . ";".PHP_EOL); - $line = ''; + $line = ''; } } $resultSet->closeCursor(); From a381f8298eb47167fe424ece02af17bef35d2140 Mon Sep 17 00:00:00 2001 From: Diego Torres Date: Fri, 20 Sep 2024 03:09:22 +0200 Subject: [PATCH 4/6] added some tests --- src/Ifsnop/Mysqldump/Mysqldump.php | 6 ++---- tests/create_users.sh | 1 + tests/test.php | 13 +++++++++++++ tests/test.sh | 3 +++ 4 files changed, 19 insertions(+), 4 deletions(-) diff --git a/src/Ifsnop/Mysqldump/Mysqldump.php b/src/Ifsnop/Mysqldump/Mysqldump.php index 9958d00..acf9d52 100644 --- a/src/Ifsnop/Mysqldump/Mysqldump.php +++ b/src/Ifsnop/Mysqldump/Mysqldump.php @@ -1145,7 +1145,6 @@ private function listValues($tableName) $this->prepareListValues($tableName); $onlyOnce = true; - $lineSize = 0; // colStmt is used to form a query to obtain row values $colStmt = $this->getColumnStmt($tableName); @@ -1183,8 +1182,7 @@ private function listValues($tableName) if ($this->dumpSettings['complete-insert']) { $line .= "INSERT$ignore INTO `$tableName` (". implode(", ", $colNames). - ") VALUES (".implode(",", $vals).")" - ; + ") VALUES (".implode(",", $vals).")"; } else { $line .= "INSERT$ignore INTO `$tableName` VALUES (".implode(",", $vals).")"; } @@ -1201,7 +1199,7 @@ private function listValues($tableName) } $resultSet->closeCursor(); - if ($line !== '') { + if ('' !== $line) { $this->compressManager->write($line. ";".PHP_EOL); } diff --git a/tests/create_users.sh b/tests/create_users.sh index 124955e..7dccbbc 100755 --- a/tests/create_users.sh +++ b/tests/create_users.sh @@ -21,6 +21,7 @@ mysql -u root -e "GRANT ALL PRIVILEGES ON test009.* TO 'travis'@'%' WITH GRANT O mysql -u root -e "GRANT ALL PRIVILEGES ON test010.* TO 'travis'@'%' WITH GRANT OPTION;" mysql -u root -e "GRANT ALL PRIVILEGES ON test011.* TO 'travis'@'%' WITH GRANT OPTION;" mysql -u root -e "GRANT ALL PRIVILEGES ON test012.* TO 'travis'@'%' WITH GRANT OPTION;" +mysql -u root -e "GRANT ALL PRIVILEGES ON test014.* TO 'travis'@'%' WITH GRANT OPTION;" mysql -u root -e "GRANT SUPER,LOCK TABLES ON *.* TO 'travis'@'%';" mysql -u root -e "GRANT SELECT ON mysql.proc to 'travis'@'%';" mysql -u root -e "FLUSH PRIVILEGES;" diff --git a/tests/test.php b/tests/test.php index 49a6f4f..f806b29 100644 --- a/tests/test.php +++ b/tests/test.php @@ -162,4 +162,17 @@ )); $dump->start("mysqldump-php_test013.sql"); +print "starting mysql-php_test014.sql" . PHP_EOL; +$dump = new IMysqldump\Mysqldump( + "mysql:unix_socket=/var/run/mysqld/mysqld.sock;dbname=test014", + "travis", + "", + array( + "insert-ignore" => true, + "extended-insert" => true, + )); +$timer=microtime(true); +$dump->start("mysqldump-php_test014.sql"); +print round(microtime(true) - $timer,3) . " seconds" . PHP_EOL; + exit(0); diff --git a/tests/test.sh b/tests/test.sh index 7ad2225..f829f7d 100755 --- a/tests/test.sh +++ b/tests/test.sh @@ -113,6 +113,9 @@ mysqldump -utravis test001 \ > mysqldump_test013.sql errCode=$?; ret[((index++))]=$errCode +#speed test +gzip -dc test014.src.sql.gz | mysql -utravis + php test.php || { echo "ERROR running test.php" && exit -1; } errCode=$?; ret[((index++))]=$errCode From 77d9d99795190dfb7f285adae76fb41522ccd93c Mon Sep 17 00:00:00 2001 From: Diego Torres Date: Fri, 20 Sep 2024 03:13:45 +0200 Subject: [PATCH 5/6] big database to test speed improvements from #280 --- tests/test014.src.sql.gz | Bin 0 -> 2232590 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 tests/test014.src.sql.gz diff --git a/tests/test014.src.sql.gz b/tests/test014.src.sql.gz new file mode 100644 index 0000000000000000000000000000000000000000..69c8b3411c953f5c7f1fba9f72df4426e11fa5a4 GIT binary patch literal 2232590 zcmeF43tUs>|Hr`w>Q7NoyoBiNr#UMWB}_=#EG@j?yk%S@!Jkt>G;Wy?u(2qyET*l7 zGh+6~OQmuV6-;Cj>ZDOqQSc5p2Pz_$aU1ON-yjtf6)y;9`@9Y>&htFm**WL?d_Ujk z+1WYoFL^_c9)te6wcO~XPnQLKI(~xPxS+tL~N$|hD%P5<6 ztA!u^*xUI3j){6M`Nnzr>wc5%UY#((e8c?de@)2<-;pRCGAr78)QLi$YG=vspYI6$ zxx~HhW8tpf)tR(bnco4pq>Jm+LUrpg!R`m)^y+Fy;9Q0JnSgO7nu_p0N zWp=r`TA(QssBWKkiDJo!9Ckh%_no}AjM_s6?kg)1X$+_j~8!Wk8B4bra zSeh8k4WYVHu=$!$Eu|?gla+p&>k`dR1u9Rq%2`usqt+HyP%A{NtErVcHBmIBoK-6l zYUFcd+CFX+Dmg;!4o{I;!c#O2O?`!|ZYZcLEh*G!O{b7*DmbImwBm+%nmVOG^&2;w zC0V7k)tIx&>onImnmVCUU9LJ`u5uC9?G!f3`l?GknRP66BuzDOkY>-13O|ilST{#= zZLP3wg|M-XTuoN)VyS5=r=JunSlVOL?qBAox$UREEL0w1)lFh4#G0}K<=-}}I@JYD zeKL(!rIF4l^wV6`x(utPL{sIbQF^NDST!*$)mouaSxVMa%~59ymE}6ex$3FD?5X}+ zpefT9{4`axhL@BA)vqjN`PA!vSMv-0B&)k?v~Mn9mB)ChFA5u6G-WodntWEBz)6|N zRHzD6`NBG18>S+jrH*3N*Qs5E%G(@uDyza*tu9Q|G!!V+tQwkHESTL;qp2oqVpX1+ z4eGDlmA6w_YPqJ-Q(dDy08gdX2sWCVnpDkSn(KAy@RjvhN|mSZrs}Mxrhuhz5i%z< z&QZ@$7m>AIxvt&d$0$x0WH<>7@A&bI=xC5`qLlj*NiUawaaRm!E( zl8AbT|FWV__}vzatSVWrY^vNV{wf%Gvt)gPI*1wlZ_(lZ?iAGy|Hq2HE*RO+I814E zisn=;(Z+#k8eK6*VlEFls{cK9DNdb40;amjjx!~a;(=L92bOV+EJish0U zcZ!0M|47VBO4e()R5)B!S_Lqp?F-0dciL1ASJhSltmrhF(4K40B+6D!Hac8YSyeKlgSE}&15T`{XtYq*Q=@1ZbFOmAQ|hIScG@aOTfN39 ze^ViC{7_wgyy1rCcz>h*Q%EO_UKwF>v{3wR*t_dTO)fZR)2s5US2FC54vwm?>gPG) z>a1yDo7US5m`5rf+IZ~086HOme_Q{(xu@M#@dsf=>urWr9vivk40EaQ%cFxg)!X*> zoPKrIjIaq`+fXV^Ud`Bcw4cK7)?i-!>HeM`SH-i!*k9XBsC<8PM$XZ}TU;BezEcGb z@bteriyn6BYn#cHUr{ouj}8{pR}F~T8@^Q7<5Qr40PhGoebn zka_Sg8yAJ_^+=ok+AVdZRxel8d}TA9`IX{$)x>o+wqZXOiF*4Q;&d^X}{}%I4d)cGvXs!LWs@<9FV8|A%MAT=Tp2;NdsDEj{cV%|ka7 zO?oL~Xjnm?43D!hyBY!)dM4ZyFAP8UyNyeY?Dq_hg%x|QX^&Q0YUAba%cts&w&{&` zUjC-sE3B6^baTPcjO4JP(#9bLC+g|PQ}^C`+scfWw0+;!=V^CRQ6_)r?s(;gAK2ZU zgI!a9T&4Al`wzeQsA9?+9=c&oaP|@3b>;78#q3fCp7l&<5HDmMylLa2lKn39sEOIt zXR&{n_Gq=G2VY)OwNj=#+BRR_5c9Tfr*}R_yLI{pSKsfS_%<>|e>>{? z>SF8gmb)9in4$BWHg{K3^&g$*w7t8&Hsu+~4<3H=L04U?8|#o|io^SqffGFw zip6Kc4sNk=k;_(Qc>Eo+OA$CRQ+!(IS=!QrFV9$kVw{GB{ddEe2vEf%pJw!6QJW*?bUd*23k z4%*|&ySh$n^Em&OmUStc?!)W*x% zlLb2CwE6PbD{tw#^3Lb9+IqD-u2g57HeZgKv`S~3rkBT-%Y)-Zli#^=vvM(KQfS7- z#^Y5?&ZMvhkLI29g-Wf;??3$J-HID?9(tVN=`&;>->iG9MtoKgxF*BnXB(H2R>huI zuIhUEf%fKiUsF};?B4dKuU+xb_1Hr;E&f^Y@J(O7lJ|&Bm(4EJ+V5uA!MAshO8Vi5 zd$$cecaKhrJ@WY%z5Y|+%Cl(WG_*%JZkM^vvaL_=?vW?|km-Irb#tZcCiCDQo(Z>O zc4_y}qG;Od72Vc#;(|!DdFLoXT|aBk9n$WF$*#v%4iqok?UL+u?3;nJK1y)Y zd1mVqxO-ZnF9yG{xZwNzm|bMz{508<%qN*~Y+{j8;X)9$k!T zYdh_y4eYf>XTi3%vvEmulQn7&_ksO2A4OLGBAo>v*k9A9Ey^1#)LO9hao#=pB>`0r zKctU8dP|tRd);2Ezdj$+>;HDI-#hBBEn_zP-|lbzu)g`nm|pP--~M5D^TMwi;uE6( zaJ<>@Yp-p)H>!KYxbVMv|1^2`_i8VGb@$S3G}kez%$Ya(@@BG=_ltG%+TyZi2-x!S2Rf7iZiHY@3qhIo%#%Lei2tfbGh8))AZr}k24KWit= zb&4wUKR5gG=Cbzr9?$vnb!~ATD=E4m@~boC-P_b&uhn$-{f*}8tjb(@lM`@*@8&vJ zmHCbKT_3WNb~Hr3f0n%aceR&WP508@X|ArS-}o4JvH4o?4h}?R%Hg3a!NmcJ0N2I)cT@;@AV$r<^}!t-lBKDTyR!S?X{ z+K(@3RkFDKK7`+|QZ!2lK zv3tajt)?f8KaUu(wa4^sTO!76{m+SRe?*Mm+I#v-7b5Jp_BruVL&TJ={ic&F+0(c7 zKS6q%J$I|cbQ5>B>()UhOg?9OZ5=Y*bPL;itK|vPw0DiVv#m&<_B;1(M0fUZQdqzG zca3_mN07ek_uK66Kel+q>&qkN-KO^#^~%;Sr++tdTf^+%How2K|L;G%{@cu5{db)h zx4U23dq%z3)}(#?&b=4Wi#?8%-mm^Wqu%WCq@(?YOpWNxwk75Cv!7~Y#E}8% z!i@bE=~BPosYZR+_M~h5HcyS{!+x7|t6$nwqrPlMQgy#`QzQDasU&5;`l&|!*i%R( z^C8nB`mx_5^)|PkW@OHuMzSz>ofcuv{(xj<9z4ycKYKc9l=acK6u#-@ zywNSG$I<_e*l@(U+rA!W{_C~j$k=Xa>*u>~|7cImq*coX9bD))&|{!W_K&x|7{dM^ z>05LA4~$-BGe|#}yM7SyGJ82G);#zFBTKe7X`A`x4^d7%3ej(mt=JrlT!`Ppa&X~J8MGRwqM!IAk>|`{Y9Zb4r zzS${aIQw(bE%P)dBQiUTRBe9FDT2&ql9cB4PDUfx5hPOoA=4v9u)iSn?r%Tc=oR*t zB#Zv8(<5FvMIHR!XO$a`rgby#IepalO-Ao`8`#rzl>a8954yeF(|c6XCL^bA!+Hjf zs@P;Sz1u52*N+OzT0nAZ`CX&9q0b%p8XV>?a5RvjrZ4fBt<_1}bdkumIe(#HPN zXHI#Iy`8kVzxT`|ud#QMw)S5?bIR-N-$=jq|8?e(*V(&BN&QdEobm>H4=Jtx^_fTB zU?-A}^zSiiiZwf#bfW*5Sx2ndDWsGAr_Y))mc5^JuD|!JBV*aAq{9B|XMHdltUBF(zVhx6qyyubzyF@a)FwX*9au<_NEDkv;p3p1V0>Nw=t;BSvrB z9PvNx06Kp3$;}Z8QqT`!RW^AId}B&or}Y69V=NJR&k8t$qcRj$}Oz^*iO$d z_8HQL16*fEOl0SgJO%{MHhPPFj>H(Sd3MBG z>bagWKF%nlo2=(%ihrEZ=iP4f{FRavXB674tY;dfBF-qRTV>A^l<@+i@NP9d&r$pZ zM$B%Cp4TZ!0wY#8RnK}#g}^AHoAG~ojLBP(8Wt?xnHm-*E=diGC{3lLZ9cXlEo}XU zTYtXG?rt)|V*T7H@3DKDjIsE2?veM{y-dbioR~XhD%;G&-s1Y)BU9OZO{Q4%m^Wn_ z+uUTj#h7_Vrm+W@%(a+4Z_4}ZfhMjN-t&&U&mL^zWwCzVln>Z1n|NFNI`7B_?4c(9 z7ANLSabgcUR{8b(y}igLObes=Bc>a_VzSO+#Qd$(jYpb9TTGchVutanCOiwT`CDfg zQ%vG4BIb{nY5bbW4vVexx6U+v!z97t$ovtrjK`WBuqd3rb(XP>Nrr{df)UQf6HJa< zj99SM+4xP9e=Mdf7%|&;qDh{G*MhCHjVGC0v4~h;C74oeK27j$^()f^?^REjCYY)$ zdw1IM%6ZfF_M)0JSX3-1oMSx2q}#xLA9~F-e$V7T1IK?@IM;ZZN&kU!KlGYs{DFz( zK>rU5=NV5o`R~AuA9~Fz@!fg=Nmhl*bY4Tq1OUqy2;xED?Th-U_AF&O^Em2 z4f9N<4;-`b$cO9&CUXZ)UpQqUd!dQzK<|Y|7P4JTyaujcIOQX@n~C?pUl$(vh`q?f zf8dFQQ(V{|n* zxWst9$$tlJboKh5@i!)~4@z<^{Gai+Cbol4x_T`&jy8FFP=#yZQsa##?+xnb=EX4n z-el&W@ot3-;~z}s51Q-dwal1j;y%dVt#Fy~W|RL7+UVxB+<1%0%0WqPh0Bd&O#%m< zbn{wa9B1o*ZxqDrR zKeY*L<1kBIk?Ak!U3bb~U{+V;FX&TO=`ZM8XB-gMPjt4w z%Pfzv0sD{MD^x{=&I@+6dZ7KmcXs_2+e?=#F4meZ4~UGMY<1~s;qdO09MZ&@tNSn} zU7GR!XRXe=tDnuMwCJIMmo`axR(03XUK4%n@QFCUGkR#yCB8Jzs;)TAL3G*S6N&cX z;m}Vn{UROob3yI(v>7F-AHSV*l{#$F&9nugJ#XJW8<5iH{F+12jcYC?Nu!6Q-bz~` znmzgUg@B9Ejh|gglm0U-^>*4?(chDAUkPZ8Zd`lmh_uh})QYqy(QL=tR|AG}8iOyL zkkW^zR;9&={&u`w959*F7;@>PG8@5T`NxQiU{{oT@Bb z`Sq?>6L@LvSKD8Zjr(ZthI?BrJD8iZXZh`kjjK~$PD#6*qgwuneUOO1=${kgp74X8 z=qNh&&F61tjz095U7Wui^J&($$)hjZDlW#&SRRnS?c(UmlWrWJ(b76kYTU={^T~Vb z5g#b+*^M#yDFTqyTGbzA`QgG(lxs@L{T8wK$Nm=HR1`!BUg>W&M^qVXB@tCdSkX^pp8b!@8yxS8nQResWjw3TvTbuA9146kc_zQw?h7m zbGj9BJTB^1$X{`yTOt3%buUwWb~?_fEF|xWUsTzI4WhD;D{8p+}N~9`18xz)^V0Mk~hT-y^*;|JELf)`rE(n7x#fH9rygC9n2pQ zkS4}`elvMzTnlF>EKJbKcr8y^ypA3rp;a?YE<-S#`p4K>{#H8=D>`$cm@`_%Y# zpZDelr+M7xvx9bzn5_=0X{&^~u;+A^Z5_m}Qiq$vx80s`bNKe#Za0VTxb1Uu_)hi3 zkefO0X}{J#p&8rSK|7@#mwKiH&$7*fh)XpN9u`q&9Q;beq;A2lMy%}?{8~h6H|1wz zk4W4aq6WVd{APs9OTm*OVqOZK9FhN0FfC#*$$zR*LSCA?bme!uCO&O}mcI1sUL^nh z$In{2_ zUHZxsht@Fh2Pb?N>mhDN0au5UW?H6fEnYQOt;p1U6IF5Zxo-c!6QDZQ6i zoRn@RE=@}BEAEw?ZZ3W!Iemb5R&x44v2SwvVDX0J^q0lElGBHZ#mVWz#HGpUWO1*( z>92_2*qc65JZo?It76~1=@jvXz3H!sckNAoLoD8#K2}`1mwCuW+$$x0g7}RT=Akz? zxTQ}N`=+E%5^qR3k>Ii-WGyddMMx+we?oTA4Q~ zF7$Qr4gQ9SJqo*-;=+%6L9-qsE04|@NJ|s@3n=j8~SKPF-HvXR6Hv-Iu$LJFMsY$)ZKs+OKI(Hb#kt+8_QRce4HAFLM{! zA6}OmYR@{fp6izW4fo-Jk3c4Q#G&SgG7eAA`-yRQX5JyjVduPyjKlQW)J6vX5h4E( zA4i~1^o2!)womy1kD_qx>I7d;(HHP(UoisDSYi(}KrOkPf9?ICgeig7#mQOPtTmmy5Tt3Tqa0$qGa9NY_ z;35qZDWc`WN+$oaHn!ZpARt56kRboKaUOV!Z(>YEOd5K;$lsR4C>?8ZoPBXWurZ;Y?9jONme=&bh zjcJ@$8-L5`JZCR?8BHG=%A7884v<&VE-?40ycpX^J^WA0YDHYV3D)q{p;m3^)B9A_y_UkeGUv|8x}jxSAL3vsI8TIqSt z3YuOP`l=kO00;qt9DyWg4ku0FiQ8}UjBft}&0;m8gfC``j zqNyOgT7FtGi)N!j0Y-o)Km||%Q~(t~1;kT9jXY1Xh~}qCM*&8FCqM;I0aO4LKm|lo zL0Gl?l*EZfR-phRz!RVXr~oQ}3ZMewsh~!FR^meQRE41cBft}&0;r%36=({q&mY`G zn$Vl{Zp@$&UyE3xapOjB&vSp{wGD#7G#ln(WqN%`rTl8iF$o%A54b~zsiC;!Z^=)B zNi;v^6=k|2L@q}I>;ZRx8W0Q+3o$leXnc~HK~YJTBudbiMrKl#VfBg%IT~OOxC7LH zV1QVNu>nKllgtccC1Od8z=r0@%ut3Y6jgFGz#ec1r~$zMu@GYehQ{{K44BL~p+usY zwCcjr#P9>FE+(u0^sMj2DzZ_2C9D{%tIT5Euu*LnR>!DMdp2k*<@J-*(L!m9Rf4dz zyy1|##Yz#XjuV!Y-&_6Vsd$4WOH}?Sta4FnE559IZ1uI zpnfPzs;ktbs`CmO7O_hGRC|OqJ2@wvu8*uXZ|D*JCG|b>FNCU258pXBlW7);gk7XxEKbF%@H{z@3HH-=WfjX1CokOImclbW4J9!T$%N=2Qcr zs;5NPmsU?`7!v+1^#gJ|he%b|@ZHpp$h$aaMK_n$BsUPKs&uRmsgM_zWJ)3h-D!Q9 z!_feHz#X6l1OvoEj13qXpKNBJ2&s}^E6J8{1r*vGW}MOy4X_8?0ct=nKrF=AfT8gT zW(LX%d6uLvjiy8aMt~Du4>00-~t^pgM5+fGGr}5tK$y8as^A2oS1)a9}~;1b`Gk zR`6(n;{}ZvFlMl*pM^yY=pLYZfbIdh_ax9g0DA%K1+W*u-UsInAaDXe3LqLHX=TjFQD06K|;%vflwjgmfVL8_-hp|Kjl`U5J1vP6` zAG7YQ>Xh%WBn9#os}>~ACM;(Q5@!>Zvn7eM3Cnqx#My-9%q1?2vj>4;oM%L*^kg|J z(vKxqq!$ZuVVq+K4CBlrE{t;sVPTxRz~2OZ6!=l#M}Z#&eiZmo;76YkKMMXP@T0(w z0zV4;DDb1ej~Y6DRGrKyIc`jPxA)Qcr^}QI%8vOx2fg$8YPNvJRM#t{C7h=&AZZAa zs33<7Qs^Lq5H8^20xmA#KGOwUT(rPN3tY6oMGIWCz(osOv@rCG7SEVY3~UpyP2`}k z7zl+0z7AhM245cxrdfxK`&Ym=0ow#@lV@R@qyv-&P#QpK0Hql`D2=LokkwGH0Qm^y zBan|kK0Wlv_vG~ z2*@-V6AiEj+yQDpFhDHC*npw2{WAk0izX4UXqt->>d?1VpFglPzoAhXuBNgCLP!DMdp68s-Dsjp#;E`DR5YO>e-u`^ z=qkRfvL-ZSzWRb^qqgFw{7%?}hO8gTlIkioO=!qPtWrPK9$n?10>xxjNxAZ8p?t0S z9|4sb9@bD_U3o*AE85AKL)MRm8&bVkMpm0Q^a%fw`X2cg&Pjs7J?E2u#qAHH-=WfjX1CopYLC5Jq?M9!{Q9X?)G825*8v7?)O0Xc!XyE%gI(Jm(a_ zAdDZ8cX7^&ZZ54!Zg3?Sgi%@@&|n`POQn-{a&kpC2vn_*a|GJ-@K4qXNc9ObgmEK@v&GH0_{SDMtZDfG0o&Pyti`6+i`qQ^7Oww*d15 z%o8wAz&ru-1k4jKPry8{m4HPE79m)KU=e~vh*&7$A{HVRK6NYviV=7^;OUqhf~UiW zg8vErC-|QNLkX}zF#^RniDvL5Ibdl46$MljP*FfdpJgZjYz?rr_QBS`W(1oNY{o2v z3xo?MVqu%H5F|N}R0!ym^RTHrgu@JHF8De4kaa+LC0Z&JKJY9Lr_R#&&M(chV zb8dch${zL5S#M3Aek-|GnCWH#0?9K35{$$ci6I~eD6EZdB}|pFe2uz5RI=`;PY#wv zhh8eB<}W_iD|Cs?t*;Iz4X*uDSMjka+kSXoOzr8#7iQ@yKOWxeQv289^KXPMOT4A6 z_bz<56!w0mLE9ZuWF7>MQK1(d5(C{ScQ$LA{N4fDRHw46t zgMfgwKrBQoG?a%%L7)JE0=^CcMLJ*+fJFcn(J`~>TC}bru0u*2bcmh-a6+i`00aQRZ70{UKdWE!vBR~O0fG0o&Pyti`6+i`q zQvv8|psTe-SF4hPy$JRqq64A>q61=KiMSoHu&%U3P%dFz^3NTcdO3g-db#AneKgJ` z_t7}F-$&zgxsS%V_~Lyu&ZXt&Cf7zEZn;W0>|1`}P;HCV`Ow<9!z;?~tyTwbhbO7&y8A=QgzX-#s2Yxr*JM`WUbIVK51(Ov_)@Na|g1QLmBB+a?E`quU>SD=5sEe9qMORk8w0_B$ z9tRlnMV^}PUS3D}U+v!SOy}cjP6@8&wBu?HzOLfyD!#7D@pTnnSMhcAS-!5~+BdF! zna)YfIJ`%$RkSd_^ARgF2J||;{uFJyD%;>0)z{M3xo@Vi?+iB znMPwWmCAZWrCeGfl5hlQfIZ+2Py>PiVj;!`42|ud8I%`DG#P%HfUMbd2L+2hIV4T+ zwYl}x;iSQ}e=a`vFFSHyOzr8#7iNX}{L7APjds-4QtHk(-U_d!h6)Z#t~6EO2wj$V z>&F&w$+G>259GIiOD0dMJ$~ifJ-B3RLgbYTlS5aO-}?D*%G%n0uAHA7+R!8XOTtnk z&p6#2NlhPlkMS1G*qr^lm zHe(`lMK`3?0S)%yu~a&FCxDj=K+w7K6a}Jf#8Qsx;78 z2*e)E6No(^_JG)H8?grfC!zzQ1ENE_q646FfX)Fr*M8_6^a8y=FVG9<)epeC>&i=5 z5((>)e{T5g65hqzX{8tbrEn(QMRJyHKfJFcl5<7*`Ow;yP|o{UoVw~?i_f=0a{7j@ zPHc(f^t<)l;Z{h_{i(IBkep2v&bvs?IKr|xPdZ&EDvNV^_%>>so-F!;;B1K#jn{H5 z$Atetok`x#AsU)f$FML0C4j%zt2{9Eb=fW-h7mt^0WYb)Una0j>p zl3~#1Jn7H~qz#ZZK-vIl1EkGUAZ@S-%?9BU;qy-ToJ0fF15}Tvr+NSp1_51xfFPh^ zAi@kj76Q%$IFo?_NkHQPjfZNeG#)rVod3ByKM*cJxB%e-giE^+F5tm|2bZBlxInmQ zJ6w=KYyq(a#1;@+9w4@$L4e@ML~ulKY=D+a zs`CmO7O_hGRNBf~^*;rQ$*huc<@*e$iCnr~Q zgP35+${W&L(N0cF9xTBd`ZCq^3TX*PKtlmWfG0o&Pyti`6+i{VQ^9bs_rTr*dk^fr zr(o}46M*7@`3AZ5F2yp=}r1Hh!9jDj-y6f*;W^b`Q;0i-7}c#s~byiCMG#6me@;nT;$=MLlo-4k?A&^;^U zMI~7h5D!5-M1ZYVKn;cw48T@XD8N>0o2>>=D?qIvFCsc1I)FmkE($GRYk;k_8@2{G zA>f3{dwS8F_AW8~^xAj}(t`fcudtN^E+!5XN17z=ago=`LmCz7s<10esvk{|Dv(^1 zl$4dA88(4KKn(~59UUGsRAB|o3_n^ys-XO$q^_)_u~r`5s6aDp0*8Pa5DE|;F*aae z#H;{QB1{uo%#l^80+E2GF|F2c{I|thmDO8`0)|N|9K!ktvPxR6a!aZm!s&v0tAk2md<8` zs`@0^xmsGA@l0n$ZqGdJMWpHh(?yYcGV{EAlO~?CTxCY2YT?ezIgtWWni#DIQ1rSW963zpEh@2( zE*%mjvAo9khWi?Qhduu)3NQjZ0V;qBpaQ6Xs4CdP^`Y-@;1@IWyihPN`m?ZTX z?RlKGA?X~wjovoI@eO|eg8cqqY>tdEjuPa+7iW9Wivw+AxCYb2ynAo8L7u*W_Bu}6 zkTj0oMsFM9*ap9UVSfK+Y>vNeR(5ZSp%j#NZs%UdeVM-8o?pa30Y-o)Km||%Q~(ta zR0TY)8-2M0U&b(;0<-zi`jpt5KwELPH3bD20iFOAKm||%R6s}-+zPU-EOFoqo$OEF zdu+>!8YL+Ts&BEn5!4V%-6^@Z@}R~@WI>7+tFoZROVm`!y_Hh&;PL=tnED`NI8h>% z*E>=MPNi@}ug}97i zZ=y1WJ+#jc87O&IUKgl)I$W>$%6bow#tG^%9UPsD&P9BN3fifH@3}MRqaFCy7zS4; zC`vIk$P+ifzQ!pVrpD3l=y!u1;0(+84H+@17^Ztd+K?@Pa|d9QsDM%6!huQ$FCHqm zqXGk94L^e8*nC;$5pTdtI}F=H-~ey{@NS_3y;8vqjdxn;hhLvA?Hzy6>D1Jd>VMS7 zHodgO(z(~D^U3`=N4C&1zWaRHWc&0r-&4k{oTrC5A@x2@)MHLi9^|Ucf2r4rvL0gr zoV&hfN`nI!LOwk7GJ4s72QoWKZme^V?cdpkTcAZP)7~R($QHo48@L4E0B`^d1W*Bi zRq&>vA>Z19+cjU7fhi1#{MVKnzyaU@hQ+^x3JeN&s@L5O&QBBPr}?rB5OCn&fdL2= zKm||%R6r~hh_bCHL9sajwuWA4zAOV%z#pImr~oQ}3ZMewsGu&28^UVH%2qPJlsZtI z-u~-UbinScK-WIvB@Wh6vLq{BQ$EZUS<;MX)u z53>YQm&je2XA4&n4E(w?Gq=#E!Yun7DE z*066UDiUr3Lt!|93OYvxqHITcaeys{8xor%Welgt?fGcBX9=Y`<#5(sQwJCY?g617 zJ|I$JfWT0R8N$68Ler=~rpN)B3IpJs8t0_Rhb`4U0T3W z$nrJHG8>jkZX;CJ)(MqW9G1FVqmq}*s;4m(0!@9QMlCO3D)OaN&)@9+cFGOIKiB|% z02v?@JbNUZecEnD?x@*ZI~492q3IUldsP?*9-? z3$G&4O1WiBw!8kkGG7iiFvmiYhQ~(t~1zko3Tad$~?Hncw2WxFMOCP#k<@dnp zFyQd~wjCb60pCDMH>iN1DtMW`+@4>=SjR=-0V6bDmVt5LAy5ZY02M$5P(jyKfdgO0 z;BnpP%TajH2+fye9&ASody9@6 zXuyDh#0C-@D$qw2;F0n6JThLq)-`Vgg&XS}Xq%lq3I!Meo&Xg<1yBK0&_z^mEZc&z zAl5m+7KKL}f#r8=7;oYUmP3ZMe0plhk%WiU{lfd5jk#4R#5$KN(9yEo-c6kr5+0#pDMKm|}iXR9D3HYdlzPzgI%*61O^ZoAV#PFDlm8z;OX@zetNy>#^0dWoB&%>&2o5nxNE$no#_+o0*bWQ9GS!^Jzk(vf^b0HdV&%lv(GKFCDNWXR{rq3nG8Z zJma-;{KU;&izfTHqdM*7lVs;=X>GSx2_L@5IuQI;jzDD0+j{=MUPk;)b0;m8gc(E#Q;DcMZ z<5`TLXnZB3X*L5pK9e1N=-3<(Rfq^GfC`|3Cs)A}ux^VOcr(8(BQ!se4FoVa$Y4N2 z1yBK002RD&6@c^mJYdJoxtRc+G)_aZDIMu%lU=>72-&nRgk-fk4teZ!WJq zG>|v(1VF!_9Rv9c6+i`00aWlpRFItwqTq8T3g(n2?S2=y-|x9#9y4GBK(7%BpaQ6% zqg4QYU`Ox+o3SXzo(*}6&7A{mVFVa~0(dqe2|@u>@F*47QF3FQgKYoKM&Y>{p&5$; z)+%EQD3hQ}J~?F)ZUbI8K-Ew|yHyYpn3~SD0Lu&WOfkN{gUMUH=+X@lmRjU2ARo{xX90sH_mKqx>YL?lEcY)>R? zE8kGphx-xc2%FJ){o=NB@*;PynJV~tQ;_qw(3M%Wq72E{=IPyti`6+CAZH~>Z1(I~=y zahFZ^r8);bXSy&xkiw0H5nu$6%b^0Oz;IOnj^c~sC^p}h3dC|pAeLcOSe3rR9!7u> z5DE-Y1^NLaRZq?R`J!p>m*!cl${tmBOE^IsLAiLH@~7C;f->NFr;F^E4{W|*^Fq>Y zWg@*9?A$S44A*joYr(Y;V7rhCkYn-%{|Xcqwag5^JaO?u5tR3Wl?Q{v;0QbVssan7 zaC^~-4CTXk6Hh!UVHWxX$t7cvToRG#MMtIu@H)g^g2rAXmwc|tC3D-AvNNZNiPFCJ zA_XY&pdtq>Q~(t~1yI4mRR9Ee=Ya1)-ABfOH)9QfdJVQYdKrX&sGx&YU`;F=Km}02{VHfIXQ-Kns-^bPrNPnu+v2UthD6Dh zDqN{NPK#9rFHz>JaBs0%p>SjJ1hRXp2RODmbZtwH?cV!1woT~T7986@g}9vKbp+-duOu$#m`7aBv6n9a8M=45zb=uxGS3zg5UHz8 ztYXj4%C@2x``bow9b$8e7=6&x*_H?^$lGh`fPR5HLYRn0h|CzHFf@1ZNlFa&U~G26UPTDgf-a6JWm&fi^b7X27(3hnbmaEJT+`-TS>1yd=mSFm#>9Bf2Blp%58u?27 zppkFn_N0%t=NB@*K%om6K@oRM$GGc4M+7&4L=Y#S0;m8g=%On4o;!m++JS$KfkIa@ zf})Su5`6;4ggT)Dr~oQ}3Ld9|Z@90~ci8ir`~WZmE4j3*7I&>|Y;;u{&i= zxL8!}@nWw#clI&b92~~X% zp?e=ux9e7|%%V-5BI7ep6?zj6`+K%wX0f_o|eL~t~5NXO0CJiwU&rY4Th5=dS+R6unx9uiaq zkL2fp|J$|rzdP*t&DcD^nL(%qof|5E3ZMe0ph*P)7VaPz>9`r2hkhekzkyi{W--X! zPytlXAu0en@FDELF3dh|#^!b50|Y)A=xp%Ap#rD?DtJ*U0OWUh=W`0580Fi1vkV}c zfNT=bd5I`E95a~kU4N)lZ9jFzY|O#;#`M^+?}!IgLD@m^5of(UsB9o5H`Y1G_U~*v z!z=WrycwJ0Z=02k000s~XQLCw$3YK2_LRg~+Hw3QBV@x!F9QL?0eQM5}OteYyifz2q|J6zgv;${@B z2TvU6rmZMalx}Kk7LO(t$Rt%ObX6u#AX}kmxze#}TY_sv_kn8{i(7+h71jb-N*GU4 z>;_FE-@2>qS(Kxg%*tvw`(6(Ub(#)8aO1pZWirm7TnR6lqruxv} zQ=u12*QEikGCN?pC~{Bc!-2*`Wd-Z_#sp;rdzdAd&WYTanOo>nVHa%aXckAH>Ilk! zSZ9CR%xn@0L^Xmuw1gJzzb)QMAa%GfA$pDO=MeNNJQ}iw3ZMe0K<`z+jdc#R&CVW0 zL4mMF$Z2(*XPFr~6wXXoXGS0EgkqbH{=#-#SLIqF(RG{}NP}uW1T>LXg8x*vf_P_}Y(g|?Vh=3RXFbE?26D|^l z#O6pD!zprmz9`#~UL0V{;i5_3EKzXhE^6JcYv^FOIz*3Hhp3Oi4#WO4&vtSR76GV- z)We+e;ONi3T{?_6@q{5l9rdtB4VBM{t~5+8EBYP%{uDD3P<)9+@qJu>m3xcq^Om?p zg3o0Y-o)Km||%RG^0{*a7OH{!$N%*Xr^t5rEmOIq6;g z)~C}ZSR8e)`dHQImm`Vb_xun2t(S4h5SL4F%^26qp#rGjX;pyl@OphAgBgWPOh_w+ z+-gWL2NggC`m6%vT_SMarS@EfkxxcOCR~t2O0KI&Muf}q`g>X4;6vONt`B{O1HYJo zg5DaTpy`g_ATSP}f^i5mCfo*Y0~J68U0ek~cIp?5wr#j%^BuwKxG&R}+w+SUD8LBt z1gHQifC}_Q1#a}#TsJ^W`Fe@^YrZ2`&(OO#oos6gi~u75Dh?GGxC(+|a{_Ed*;W)3 z^xX);ti7fV`iI{IQW>vr7Au`+d;bWe3OJ$D~cZk4c+f)tX656}Mv2 zT88P#qO{XPQYv9#!9xfP3;vC`uwYlqRb~fFJDn|i?&%KWRH3)O9WlAI9%c!qE|J9K z(&pY{yv~W-nMs`LiEKxDaeys{8xor%Welgt?fD`!8K@;}?8TPX-~^BZq5$F{h5-zS zm>RTuMigL6rpWORHh7F5Xcjlob*c1XDFgpt1NZ@CfKY%)h)CGEk#O|W!u62RiLj@KtmZB6gc9_&XaUN5dpJHiPp3dDdIVGYHI%%P(hEo*whQ8)uo ztO{59PfW8UCL%S?lvqsEU`t1{JICx4Nj78J)t@TV*Mdu=rx|l%{n&-t!;t zv$AoM4$*JYc^*CJ*;hB$z*B-@w1?5fmbD*o?=@7d93LSlmzU_oDJtxqhANw%mM_wL0ch)=Bz8i5nb*tN{ z@#u)&JUVh-=)f0hSS+*+wdXZTDNS7@ zP^;!>8bliEZPm=}KD-@nTbBE5K>&lr-rN^Yo9ue&w-$&*?~j8`C^>ek*L2}q8)Ev-D!Gb zWz_udxv$X;lThB($@C83ZPE>c$k#r!Z1Y3HfDjudgc$vfevfqyf)QW@f`tOGMkxTU z-ghT=dD8B8aT_D{7OdGO@N7%C?0#LP z1zc83n$7d_9&b0qvbWhf)2WfaWS%5cb%*JK$lo&0c&!{iakHhf8Ih{`Kviryhn<;o zA_b;2Gp41|uHL62w@?onc&4)=w`ZRA@=3CDwX`-PRMj_W;yKGzW(Q0cMefPW^CD7} zz`SPwlq@K_BhFM*&8FCqM;I0aVb{R3Os(%zsF4 z*@5XT*Xl0X$YJ6RG;x3}hl`I#n36JvLurr#A0u{7my?2&L8TYtA8gPuexMFN&^*x! zuq9LE_y-%n47Q{LS*rEUKC=ptM_6z22zPi_f&vWMDQKr%lXeQvgl8JGX9mUUC$ARg zmHqhKuTKnX1_iilQ!fE#Ee4nsE($!cp{d{?jj}+aa^SO^>`zx(3F58FhKSy7&HB}X ze_OGBwUt(+-zM(wzl`6O$lq41Uu~ro>sMQG&zb&}LL}UE6;1b(g zTA2|Q`MWFgEK!laFP_tznOpc=fWQv-BVI=X{|of-qxsK@!xMNDPXPZ52J!%apaH=K z2^=cu5-I@f*DyfG*EDvQC;xuSwcq=h6Mk0ust1IwxzWdFPuW=Zh>g#4_S$@#2jJ#_ zn|DRHIcA@jed0Tqp{an2WCqCS@Z@PNns4(!o&zL%K%xt%04jhAI$H&x-WVSB=9}ko z$^}c@BEbLz2oVrSr~oQ}3OZW_L4e&D2<+y$bDfmoFE`I-;6uQMWj}ZK!UrNWBQ!$= z?Nk9+ZXmbCwn1)dAJDEDyAK`}*lAp_(?DedK@ckFEERM(0F1}QF7y}|*Nok_HfW4c zN-Q{1Z~)NMpaQ6%(^LTFSw}F>49coa*nKdxxL|03p=D?cE%-cqzKi(0ltHBz;~#9$ znSQX=HE#rRu|KC=>||IHmXrs;2CxA_f!@nNRnB1gMQSG2uXWS{dFMrc_U+PPB}qza znz)Iwdv~?Op*5p-r)*ysjcsFe%d zYJBFYLT`UNA`)!VEIrH;OkE<0NU+`cyhyThB46}J)%#TB7VgZP6R9@d{OCXh@(TpA#A~r|AwF zq{ZMOEyknMV!%GI&-28Oe*wi6!lOVc>}*ouX#MGe=8Oi&lVKQnG62eca!@w->e+A` zxJ?IS83+KWu(L^p`qTx@84X^egCqT1pvqSn&j-$o&w)e2A)x|2RzWdi3)hFf!-087DAk$;eF(}sPTn9cpd^wDOP|yWJL2(zM_2Dq|44v7W z(ZGsgQ0U_TTM_WlFv25zUe4Juc~YMt>wXz??)!j^qz1p7s&6MvtxgenJ6Y0~BZbk+ zFv2=yGkeZC{V>ioEXPc5*Wf*Gja; zQDom5eH$f9YK6YlRa&8MwUt)rTWy6b7F8vOS+`j24;$+#&ab++x{KPq3*K!8<#J@n zjyzG7w$cpBP3PrTxi1#`x`8A6g21u&5o(D9j&-%PHshJjiv0JO2?dVblbPq`n>6vx zF*`--$Kn#HAIls);cElajnD+$@6bJ< z17Ti}%Af+Mz+hDXfZGmG>^dCfmyxyC6lU&lGXu&9ASI}rP=O(;AS>I7UhHoh#dV0y zDPr`Y1ljY^1WR;=Pc%J(12=>q5r+_wF%V%$CeBR6fiKSXpce<)#&8eD=ExZ1C_!j~ zB|66^n&we3e&-k;ApnsNV*o}&Oah*GIy9Ujx95wp9qGjZwj6FqY>t$HCRn1=e4=R{ z1vi8s5r+_wF*adHCdA~#AE_>o>Y}Yw7jJfmS(*}1B4rb$W2}pmR&Xu27F1w}DhPc3 zX?dP|o*#T*j{bC0Sky8z{W%+?^+NoJ)gyJnpW)9$^k)sdxID;~7VW<+-m1(#x->XC zz_pKfi9;*m@7SHPeJzQZg?k1sQFd>|BYN!kbi~&-nxp$p|K{i_ zow)lda(Eeb4zCVLMylwe%cYGhr+gRzi6W8f7b<`Xo>B#`(UF$RVAFDSg`9NFxwPSi zjBntEUBMp_4&jIJL*l6bY3~?FN!H0J$(nO%BLyY22rWVdPytl%6e@U`zTBQ)#8}5g z0Y>OFPiW4i4L5`q5r?1xr~oQ>Vima2mpkxf3?3H+7@-qAq4{PRxFNKNfCLpl1yI2g zsi0QKRfri(tD+_v?WaG)50fTY@v;J2Vri?A!>q|-QHzzQIKOIt*w_}U6s0vyEUCJ; zx({Nz?>>mF_&$j3C*nIKT2Ynja9yRDL|f&)SnR9C(k?SwM_eXt;VC^?&KBy&l3S=3 zi`UBWgk>G`Oo_`n_Dv!z>p0q!xJ=rW{sd*xUSoX0?MWYP&o4v)M(Au$C~nNv5mCTt z1s)o-VyFNrfC`>K1yAtUa1o;qCCHwim2E{Y_P51`utaQ5XZS?(-5zkmPBA`003sj8 z0Ef zdPkWK2w>okfj{mrd3Bs{@yP&}cM=jGT*Dpqd>Emt8371j;E#bnMr48tpn~?PpcrJq zryvUgNZIjj0|YP}6FTd7onZvn0ih9JXip5)0~8og;1>i11_BuB1o#!;SEv9gc&rM* z`33B_>w=zv0DdCmCEg55EGV&1f#Iou^>dC&p;%+9iT1Y=t#NdE`>#{c0WC?tP1s+B zE0xEQEp4$%l=&*$Gk7glZcLs)wnA}ll^f_z7yCGjy@UN7Cth~YI!3nlF7|h9s_eie z-o?Av-(*ML9nvpHrmf`PA^pnsr}Ogn5*POC>Ts|*?S-Ortb65d%dMvvk#)}h4+rAwqZ+(nqHX_A-7U+aCmcXoivVE#@=Cr2c`&Y zajAi2h{v%tzqwnYB<8yu|faT{r-{*IH{(PTYee|?ueR}uSS#A|MOU@?UJMQ2< zX}I&UJTJ@N_{;K7O1z83yI42&F4i=@PaW9ulU->a%yr)JZy%;b8aB;QudwG;XkTN4 zAdm@A00pT_fll3N&#TnF;bMazBy}dV4?Bk;T}juZPFE@_(+YFzlu$5Jz1Z$4*LJwr zAP7mG34P&5WUkyx+IHRd#dxWZmkLP|D1ZXFQ^0FfsrMR{LD(NTl-`x^G&DpX_T`;+ z-f2(XciIbhLzk&V*g7j(_I8=-B!e-ax3NJG1jvL?`Z>L`GXLa!b*0@?p>?{_*dPdG z0u(?&>QX=lXnJAGv#atJdzV2|_B4lAo`*N-JC@U>nJ&$AX`aq5%~MtQLV8=h#1~?a zx_OZ9T~}bSdz`Lnz7PZQ01PMvR6;>2;lPjc`a(UX{`52VUxndS16xm91=0EVnc}I(;Gy zmn!A4)TsJ&7fa7~`kEcfEscsCrSLnRmIQJ2`AmpB5qS>N*`8MK+r4bq9+G4M@=*#J zr4kBKkOC}}SSSsG+9PYWZwNQraJg<(OZGfA2m+Y^1yGQh6s$mwiXm25J8p1ExYCxlZtO&kRVTfnqaDm6B-K@bGYgwv7dXVHkF5uFl^C`xIR(o~ydqyV`u zhGW6)&VAA5kqCcnxLh~t34)Oz$X#elts4b%T&cKHMR%nJwnTh+t#*%D>vn0_AP8gv z6hJ{rQGgyXb@hlcQsuTsI~X9V4q)s?TaLRuK@^1U+x4@b{LS+mUXSiM=KyxjwsBlFkL042rtyD~{-+5hUYio^x(_gB4_0HfOIv7ln}>O6S8sL?^U_}5G25>hqqr6+?KBB(kKmioUp8_<7 zXbk10F^oO3dKTHRsIuW_BvjdCFWCzPW1-+ZM0tr54sU#Aqr%qp2tQSSq4rY||*Wp#Ta}fPxHlP;Ya(vWo5K0xID&SHhVz zClb6l5l2w_sYft+Uyp7zbgQ9p6%;^$oGB=fh3l1{!i2YZRBv<5_6N)*VbK@WYV=rg6hI-i3}G-Xetz@>2&B4{Xp0(nxgmmATh{@UZn%Z+K7~(lq*8tF7MNf~D@_0?YG`H;YOZ>E^0t zDz_=_7HasMDo@#@SYdh5@mA5MY0~zN_xrx!I9?>E@^?Bsy+vg$S(EX7ms{kqG%9kG zHL5<{#nL!muHZZLsx;-GKDVS?C)DsI#|fXH%HOT3Y^9jWUxUqu@K#>J+XehMHyK9; zA@s?2BV7>D|KdPK1PujHAVUgV@^ZcMJf{+}5l4|9-uq~27g9#z(cSH6j?OI+hmWuNE1EDyJ5e@v z>{oE__3Ha{?BRAi_phNqWC}#M#6%xD8;5Cfu7`)xB2U)bsvhlD6?gCm3-__1018B; z;58bYRnXupg&LfBx?6THGjdIs`*GYEfdVLy3k5sne;0;(Z6=PgEw1z0(x~u_hO0DO zm0!bEjw#19B`X`U_D`3!m-D~u9$5w<7=1?gX5&V^P0k8xen8VUBX3 z4Wo+cW$y3yt}C!0Zr`=OV_v;^NN_t` zSsV7(4pY{a6*O?m%qOr1A5 zMq&Co($_I*x|{a>&eY%kN@Gp`2k-1{uMPEf=G6B4Pd&W0<`1C@YmfAO*j+ntq5IVA z+Uk%ur~jj#hui-)bgrUj<=5_)boU?E-P?I98w5d~nXp24|1sVF?3{By8w4SRGvSTM zO|G3yB|HDQ^vR~%*dPe9$b`OgdFanqq>%nRbq{x^9i=2n$&^$|>P8&*SZB&OkuX~2 zc&#$gAR4qahJqxe0C%GN-HCW&Z_pDP>r9C=8!@&_#n_Aaxu9F7bemBo%2Jt#3v^tG z9es~#V@fKM{iw1z?g->bmY|xFzlVujVd!eO)MjskPp}K5n(w zUlv+*#2U9MsIfNsi$g=JjuDDrqkFg_xJ@%c5qxNbBG@@X5xi!&B3P9zljX2V9!s@K z9?MMSHpSh7YJ%S?+O#N3G)=H?p!C%(t6l5nKl%9WAMG&p|Kpv?N8M%TzW2wEfB%_p zSt2&rP32jl+F&!3@>td=<*_VP%3(3{GH$BBjLZ9hBi|1U-uZ)wP536`0=>;=dYlb{ zKqf!|6eKqV&q%yL$qST8^8)4BMNRoWyV*n#CUXy|+rQ3{6dfR&@ zHV6WlaD{>+9s3mqGJ=e_k`Zix12`lt1-vemq_0ag8Teq+`Zi-|mRoh!1Rtc~w5DMx z-yH^F@VXRiJa6ZiHP}E#50i{Qk&i5H!W0G8f>kg_3d@vO>=%Xf0lclL9^Z8l4iXu0nTjpAFx|H&8sd;fcF<#-R6RY?hThE z!0(t>Z+1V_midZ5CIQZHudmY7`}bvAFH3+k_xcYWww~%;wI(J3j&~79&BVi8#8ESG zyo)$&CN2=v==x?+$s(O-M%Q=??F)|MMWrpee3eFNRorJ0Y52D4LFFOEYRewS$)d8B zETM)GZEi`qPOnN+)+utM7F|(>qN;vhR;;w-%4At-k;k&!B8LUn?F{v7fAsDD1d?_qu`nfJzT&x;)7^&P_!9)uZfHxBL*{q0!e{H3!W4d;Q4Jr zc8u})25r|db6(OaFZo~?X))45K`K%ZKxm3r7p3S8QxI693AdRfU^g5vwAEw_lMECj zngaBNNvbbIE}X1#;piJXWDV+9Y9|yxL6T5_$#f%fN#v4alS|gLAKj9Fa=yCN?lEiK zE)5$5flPn`D3~4!=H0*LsW0C(^Z$L|{I@^z;Abzi=YQibn|A%--=)H*9-S8vu5d+= zD}sr>A}GTgqXi|c|EQhUZT&}*kR(%-BuR47h>yV)T(Pd;#vY{M=3uhk9HgR9QN*e! z9IuHSFK#<=+lkJ8PaM?>csG=S8(#~@`d-qjq;#LQ%GuOIL^$x9a+}_^SKF!c- zgvECANQ znYAt#8w7z&7!L)f*A-ZZ+;}2K)uHq<|3JZHP%uZm!k$;5ea*!NK_C;xM?v-W4N5cV zL;8#_efV3j13MF>Ak7#k*KU^#cF!5pEOn*c*5P6oksv1$ibAa25U5dfD8I})%)g?a zcDP-I#(-J7Lu#{o{HBHKN`sAEM1q`1Fbc8rC{P16P)jgs{PRrji9M?co9djdY-6B8 zTQ61FJzb`Zh`f$nM1q`1Fbc8rC{P16P)jgs{PRrji9D-8$B2$`igb)JbpDR)HQC=^ z9QDm0kVYV#0_o1=!Q_!FlLv;ui5LbkijqGg@`nzTdK*}P#Rx1&2~r}lDS@jLS1GR2 z$)q55zX~xaV$#vYq?4Izc!Ti<8v#xFRjoRB!C;%0t3UogUDvC1-6c-_pyM}xmV2Ec zGPvycEj45|`=i3&f`#s3!rzgu-+d!pziUUjetTQrwZ1b<_}iPGFC#vbUNwLE6g5!8mX^SpSqASdBt4=0M)>c_87j^Pj-c~)RJfv7{iIeCGGu-7k z<|`@J#Y=QW8H#E8EmXd&Fxc?xF2JuVlwVhfNreEkQHZvO1bFMjrc zMPGTN`^UB4S@oH()&KQlU-+j79EtxehHt?|GkS+XfvhRuA_Es0MqFedB_=H;+B^1# zZ|t5mJtN&~T)+lFAQPYf3KBuVZN?_O?LE_z5*q}8Oqg^ELN{`~hO32KElkMOLYnSf z?@}q~$ppPldtRmX4VO;M20ovt)>B^v~ROn?F?m?R25*`ghI z&NI(hSzTBDlU->a%yr(O$+=1&TO4ZbE9lqMT65fues6Dhm}c!TUoqB32CIzjA!BWL zFw9sR9=zf|G|WMpZFLTJ(5_nJ9_FAe4rvDpIJnk>)>a8$#KHB zsXR+Wx$9O{wz5I7+|umm^p&312{bg=XbVqUc-q1zYv1;oc|X{oG}BW(kv-Lu_1N>d z$b0g>$}YtG++|v74Df{*kO%U>Aok4dJaw=_%NJrm9)JO*K+csA2coPUh%>N!CR>Kb z#Cdc?TR=xNI-;2#mk0tun1oV*hZGqrBHF2?ASTX3syt~@Wg7p`_$Segf5@@q&apW% zk^SMd#A{ih6-AkPS)7MmdD895{DVl#!72qQKz(S!_9zG2qi7n_*h4&cwvmk^T89EC zm?#D4M{%&?pPd#8V&Xhx$fj)wx6cp+yy%pIiBOOL?;cK1oSv9%Z-j!FI4?nlVdT}w zt4S>=ND&Iqk5(d`L^?T1(#bK?)HlnmI*V`{**M1a>7t;mUH9vseyMQf%>Utd_8)qF zdNk+uJ+~hEyDIGxz!r9=4w99n}3sZNkIl!UZ+f zMt^Z=Xcbcc5Bh-j3o4p@-tlHpiI}3l;$%L|UqSe4=N8SR$IjL z&gNQnIga^C%5{SdSAm8?ie_VST=`kL!^UyBEF#%|hZ&2_+GO)X@Odz@q?)y*{ZHSo zza{PcujVd!eP5mT!!&EwQ5WhON|T*ZkZPrX>2K^gkAVRLgFU(5YEOX_4KDfl59`ba z)~B7jnC6W%N#uy&vcR?h1yFE(3dAu*E7#ju1K9GGFMRSG7GigshQ1|Fl>(d*%44Sg1B}7Dshz!&wYLh&RU0@RF z=Jo1{yk5=g`Q*TT>I66AzfC@i^r{|$U8WYll!H}!i8>$lT|<8`_m zuSA~6kM5Xmk3Ck6`*ph9uSA~6iOG4@3rW7T>7SH_qZ4Rr02CX9WL^1?bGDAy}j|P;z5gVZ^2S` zae*Z!#nsJK%~Wm^%!@T!^H+cAQO_0g5VNd zzu2ddJx`_%7IXF_x^R<`eA&X)j2VO(+`KSP! zXkam2qWi>oDij5=r&5Lb$O}j@ju(X%3KBf_xMc<)s+UD+f`@`n6>O866Ay&QHY*L!8>J+g3mn1 zj6ZoNIu+V_smku@GG(ZPdYjXgZ49uBNRSiqL?L<}1@DwO3O@53GyWu<`_SZ#4u1AL zn!JhFA3IGKF3Ph(M`I_p{^OAm_G(EjB3Orl#PtK=HEFE%b6AT5Z zO#w~Iv@|WFf1$Xo`)EK(^G*5~PE8*};+(v3)~LtX;?V9fYu%#uXXL|k++~x!)!R2H zVUaRMF@}OvrQlMfw!5d>)IaacJWxe`rS9u z^}E*X?QQMT#4CRbt?uE%-_@Jl54B~!;y?7R^&N9~u)a!D@86egb@t|GLb7rjguifn- zb<^yB>V18F!>K>|!Jin%UWp%P0%rmzZ6=?BsVcx{neCbFNw$Pi5Q@G=e5+cr=b5!G z7aIhDOn`#apg=_L1D_e`1;&=qDDXrt*fi;F@0p&IZZon$5Xb~5NC^rIwt#7;RBCKu zgCLLz!c$NaefK7{T?j~>v?KsZn3Ph&puP}SeSx@z>>VY0gHdQ7e8x>}@rT|4iFHq8$I{vqG)kYYFH+Z|HuUiR%? zR_tE!?G}eLjsDhZtGBmcsXIKVwdS}R{odZVMtiI9Vj9|5dL_6W0GKmhg3$q;{(+TiKvkZfSOO`by91gc>#~a+EcyKHbIA z^PRqC$8wACJIB=?+Dzx=dmEF_DE+Rorq%;aOr}HBBi>M8hL?#F3M9vPb zds5_Z%}~#_=ap;OAP8iF>?nvmK!aqKW(T;5p+LqI(9yt#i5L(56ngNdnz+E0{FC!h z0HZ&~0SyK6rC^SFG;L@eHdVrcQ&=t(3}hHI;TDwme~}<#f`$TFQXstE6jd?4W?a?R zp&)iurqhlBHKi1&9BvMGig=&#rHTghggD<@S#K3IqOMB*+M$p+JTd$U|?+ zPl2i!Rq=Hwh;_`?q?!g4^)2dKa$fcn$VG38vlw49((3C`5bcn?=UHDYo8`(n2Gl)C2meclpANwEwDWAc(W)@*DBKRIaQuAPS+~b@CC>5 zqS6+fh>F>_RSzl;DOOuVRLt&j9P^cw>qJz{zN#9gYZYp^+#-)fc&+Rxid>;Yzr*Cj z1{vF4Q2B6h5n7E#K`8X^n+hx#9no5%^n?PrP$1cn{viF4uk`0u4(@0NH+Bc)UL#&V z8GHRWxE$QnQJ20aOV#gTa>F%P`|z$Bfs60JD@NAxV;5BDztJ>_&#Nn=>XXP9*kq6T4<$SM>d2s(^I! zb%O;_5Ji$CEd^GzSl7{F6&P`+ktA|WlGrUK+1sD^0aHfu*1p7+(|>Aj`zIgmXz%;L zS-*DR(knRw{vGq$`#%nET)foY|Dm_`lRx`IPfmZ&@_}G`d*4US_IVd-UO2A1uTyh> ztL_apQX>fUO;x%#c9mw_A1v9K+nK#Ha7@RpB#T6-cIWTr=bGm~@z1^=DURm(`v0`- zm8SL1|Lkcn-FN2yG?nh;KO!)d5eO^^D^{lR8}hw~KmsH1$$xUQJ{51)(~ieAlXg5Z zYsbTnGqxUETk=oN2LiHYY*|yTC1OM@S?WfsJ!P(K@{`h@M$5g7QF%YTF6^)w_5Tns z!a|21C`fJ!e%mO8exn%p=EcXJxFy}MuRFIj?78hQ=g)Gli#Od4$!%k%+a3P>g;w{F z>9$%k&+Y8p7q>dqd$2llt$S!S(rKF$QQ^MgKXk)h+^o5(naXX7yMJVTFR@-;gM#Qg$>az* za*Z6}e*s7m0@8F%4JQ6u;v*r;O(9wCk&gWegAMNC9`2z)APNHI+U=6T?m1(crLNT5 zI$UW+b`c430u;tv6sn{4e^Q6k8FT6|>oETcd?r$844Ab$q&B<9Z(69XG}zoOb`c43 z0u;tk6k_L5loP5b^9j>v>P(|fSGF-wp{}U6Me*p znnEdMQeiGliL(mah^gpC?6h;-Iqt(6SdL7I*j1%#{t?>UYKaepghG-G6yPgN7GELa zWyH%#Wl#;KTeFUGOp@xDP$Wo55^_`u%otGdoZy4m&txeM zwZ_1Ohj;WFe*VKcbDHzJ*||$zA13;Z4i4C@o#vS6x7i;a#EE{R*59SpdjI-Re%z`o zwCad;uYYJ&V{P;ohYI3WaiZU-_1D>(pW$9#rK$Jt%eICGYusg3nS1>Q4_i<5u3F<3 z*!BCoxUS#lR2rpKai8S{$MK@l7TusmSCHW@hdh>-9P(J29r9RC7L~PRy{&psc}THZ zF!gVmvQCj}+2uIqD=F6vYIFq|3hMeT4`0@tp`LBeE7v;MAP8gv6kJ7t=Yr{>aOWUu z1cj1G0t%9s0?D3d*1BA`s@Wh2WC9e7LP6}QREh+Zl34-@l9YlK_Ph%1YpywJHV6Wl z00pB`5PK>$RfOQ&j{hRjuWY<^j`m;A@(yxxjY;>m* zi~>4s&}kzHJ8f`KlI)<=L@mGku9~F3t8$fbl&g%~f=HqJFkGnNY86-Npy2ux1ea*S z&9rIMl|qfWp5$=TpGlDZOgp7gW0S!aFtI@p$OI_376qr*MV<++L|{e`(D*??Qc*Ay zlUWCLAnZV++JOkm$guSN>_<^=|3<~n&WQtdwYvRt$op9hdFMGwM&7|gxV3cqhM-Bl6HYU36eIHZl%8)eXD5jM{~pJrvQN`0#915K*9JZ z@I+tG#?72$ZsuqBJZS7wj7p4-HjIurKDoRo^lG1{bD@E_6!9Rry%x1IQm~4 z$cUh!V4@WCA1mqk#&>>k*PIzE{w4H`C+GG(k9_Un-Q8Jt{g>BVV-+4<>M`|eZS!*V z#~-MB^r`jf&Wdzv;x)hdORe?(^`W8FUVm9=)e&pls-VW&7$+q@DX3^RD#sO5G#iuS zmbU2fRT`yLA)a^kkYcrEkK<%fnRwpWu(VaDSEVWI1oX~|DVmMRagX`rv7GS9W9jtC zV41I;J^imPJ6ya%&nxugp&TeU{m$u#U=Bmgf@Cn%+=SQ&y;sV>Xt43Jc#6F&jv#@Y zHzq3QL(v9_q!=lduoSzOe;K|;@`d+dT;2!7F*s9jri@NOV2P&eX{bW1#M}Y}Q%3=B zt@GCUbiK7sTuDavM)VixFD9nHIKy8DqLC0CiFRWoHK?!B z$kf=z9=Mo%E(|um$to2XH?lzx$OI^uEDB-|%TQXVugon_kZ=kD<=X9%!R|R@nx(GP z+d5onMs^Viasm{lyC_5-wV^aok(ryAl9PK%E;I(r+8t7x-QzbcR96~oZWp_V1UUf; z(_a*#=TVdilY ze}AFXZ7x{o-q5BA58k!DV_v=4{ZL!xEB-^_L2rJBdwrFr-oG!~>WmD^sxtTb4<5Fj z>Rq)aGMMLf_U^0J#H|iiXRdXh>K$6;xV^oteVQvP)lB6!#od&6+5Mg zWJ}d#3)PkXWLMe;bDek8b=?uM=RpHBpqPh(iBoVJn$poVrPwL4Q%;?oQZIjBa?d@v zhF{-a_uVw-ck@rqSFf<=RcK#x&0&KekO@#QehND6d6n8XTsk!y1c6L|f&@}fJ?tEY zP$w|d)N>}al$qHV+dbvl4%bXI8w7z&fP#cl5KND|mxS#V9X2{_D3~|}ljZN^-@%59 z4Y$A;_`(l9-duL?%)6H@dLj4Q@2LlV@#ueh)qm`cHD8|be^TIv(M0aP1(q~K9+=s_ zL22eD6L;FU%LoONKmj+IxYNd6Mkts%3WDkW5~n`$$S*AxX+@Z1tq5s+DkPO$>YDha zE@DUwxoAEH3Xbeb?`qk-%sBaN3{C#y6=A zEO~uhfyM4IYuzr5x|I!rKqf%JxGBg{&#ui;2M5Bk*|6LpcGue9l4c!doE?DmL-}#5ve2p{*1i6rRgJaLUmPlkTkRj_r!5@er!}u0;ip|c!cSYaNHvTQmpkEQgyES45szDiV)@oLK+hoBpbyK*3Z}aC*yk!dDE)I}X1-Ku7TAdm@AFr^e!M_;L- z{7{3Lf1qGO6jbVM9j-KEpj^9MGT1$5OtaMNA`;{TCI;gifUD?J! zg|=R*vU}J?B*+O+5T__auSZe9DCNvx%;nQ?3PUeR6TKwm-^g$xURt_}Ccdlak&gWe z18GQOUy3mljEe$Xo47V{Z9>7cQxKZvR-K*pPeCGZ2q=dlQh*r}O)Y*@C`bYd0!t!Y z3^)`?a42Nrf2FXc4owA^ZZX|rx`l$Ipr9w($pHU2RhdS;P%s7xKJGU4_H>*2=bgF7 zSyAY$d^XY*WrXXu!@SDqE;VEhx_*srXYamh&Aj+k=34iu-hM_1 zb(>djc0bgX`HKJ0yD{ zr6N(5nVX>ChADVPy4SeCU^{DKgCLLzP>=)^#GXp!P$a>j5N~qmo%e%BH-C2J7eD*J zqObhzZ=~AqtoqE?>i_yN@BF`@LqQM$kNi4kFj5pgsB)F~4{5%O}5q zL&1$u(4^;e>v6qqeH(uZRRQcIjDk>93^zx;!k$;5ea*!NK_C;L;L|Cn)V|@;sXOg? zY!C!80Sc0a0#EeSncssq>aRKdDH(*F;-scerM%7u!AM zS~ds*nE(Z&Qs8!J)U9@pS<41NAQPYoT!H5Xb~5NID8muPd=(9?nRr;*bXLTC-tWIHb`o3rb zq73?=(+6FgKInQrs@>Bi!1Vmd7Hz1zT?%cft}Fk^uCx#4I`8|kW3lD9Yf1jR@=pnZ zgnab+@=+H`U^ALtNSSU@V(&GHC)uYr1HBn&7L!;C(EUn?drgRY5%(rc+&ig!Mc->e z0E`7012hy2qX55Y()dj=E~A~sy?s3jVs9nwln}}yl$~0kY=D3#alq02ZbbKs1Xm;p z?lvj4k5^zz{>k}hU(vpfs(mFasTmghrpe_uMZJuF8u#|~D2TPp#;Us!t1edEDYfb* ztxg-iY0~*kQ7_}4M#6m^3Sup@ueN@&2OBOn+!Uk$-EVUH1TXCP)?=?6ymj02^PfB3 ztNzE3`cUxut22~mwm$UvuNwJvpguNtNIYjf1W zEl=E%?k{ob>$>h}=rHGxF!Dwvya(*oPV*|GJ3QFoA8zD**E-zD+nYba$m{IgSFM@n zj$37}b)V`zSUt4z_O|wEa@<3!!`4&1tJb*7s$w$VthuV0%593fEzdjN6wYk>qT{Wi zO^dRgQ{^cKEwQ2u^Hmz9RdJu?1;_Cs(ag4c94Cv)TC(0&J*X7TY^ztLDeDxumR*ix z!kKMzE%I1aTI8`Tx5#68$#KHBsXXgd)sTHyjN#J~emDGX_}!pDPzpjzP1dZVDBnKK zdW9B_+(?n!K=6jV4S5?B2upz{`brK5P}l>QNBJRpC!W14?08~^d15NGsDnreQbHgK zkiJp0n8#dmQo3k$+OH>6(qY}gxTL-w3bFGjBAxh1C-^|}&r>puQ&BR} ztD;v$nF zqNsgG(GiPk`in{3@>s-B`;MX`J}ao?6FVyh4o5K* zdp#It!l}RZ;>FlChl7#k%(c^m|J7wyrlU!;Kd}v zB$G%AQd<$Y0@pDKfZkb_6vV`N0!fScs945RTG%_G**K8`zE1pxgcr*v6igEZF>&5B zeRGPRi^x;_rmXnk$Gl;mAofY@lQ(XkBwLapTTYin8yei0GSpMM^LH7a+kfuKpO^gZ zf!}}ek>CBS`wO|VRGmeu=DX^Cv~|YGzKX2lzcl{EZ=XEkd*J_H$t`)FOVB3rZVBN{ zSa@kzHlfR3+{WQHjx2BE$R)9Z22I)1(rv~jz3n~IlWY(KGC`IU1WY@nQe%_B#s)zk z6QDqT6nNJaSf=cHI5%Io`9iWy0|hsBiI&?{+^(WODHI4wL3LF4woSU(xKVFAV`76K zkO?xQz$#r|0mq-Q`H>|eON10*DF{^Nhdnf{c8^)>c4^ok2xNksD7dsk3S}$%f90#c zCCyop?)_n%`M~mY54?@>nL49Y0D{Lc$SNT7~8E&E^1Q_ zC5IAy_l;5Dsc-x^J#sb!{0O@dcFTc+H|P&miJ}rkDo&ncTa8Kh1%M_IXxG?J`i%Y_kZ%y zsjt`8ynErl|EQ^SXX^fU^UjSWJD)Gz*2D%uAQPYMsQj~&N4+IS87|@LyF`x@zsb>R^}GR%3pmOaF40;rIh} zk3Q95&Y$I8XV7f-w_J7wJA3z4Yv#G*R+($vr+N=o53Rhtt$mst_t462?KH14x(D^Z zog?(X3rFaI+cHP!f%hG@p6Xq-#$8sGxz`_d1!sw=29D{Bb1m{%R$An-EVsyG5mOBu z)ftPa29D{B#Z&`Fb;e?0$Z(r@55}gX!O)CUy zJQSof1;HhnGJff!MTBwUr_KE8F1FS#uH29 zz?S@z^VOX=gm4I9(h`n>nQC64b`b<^2SF$&2zF0u2cf-VzrtWUW7;O&Y}}}4gCLLz zf>0pvtIyaAuoqx2fPzV-Aao)9Nc3#RZz8gj8d+u1$hh^tW<*_W%iR%_#VG-5= z+oBWK0lV5FtOK@OC$0l_rA1f=?0MZ*RkpH0vE0(^==7BeHOx`gsQPplOV4-unjOn6 zjSAs+9Cc+I15@I|^K_Xq)Iq(?$#*0Yq#P*JOI7xiC<;9fl!eVPDet1{qA7ct%UajCti}K0y6?0BlE{7uG&tEv zcxlQ)Qx;iJ5Id0}ok?d|q_eE1reCd92Rlst`k()>&U~Ot|8ke%^{DZ-CC%Dl&Y$HT zm;N@CztmdqUmv&H>n{tfI%17m4HNE0^t;a9{0#T{A#?5;cUe{DUjLvuS2a_)O>wv7 zdB>YYCBivn-zwU)DC;>@p0Y_Hnp0Mzv?}hiyx=%qR4SZP_GD36OV-<}2bG5uqB&)= zRq|L4tK_j%tK_kyDeDxumR*ixz7pYF#V355%ClZo6)Im=h~+9qRD@0loe)wjD7Zli zJQu!wDB?uXW49fJaHSao<=X8MyNCoi0SXj_si}prdsUQQCL-ovLC-{XNNskH-?UI& zX|TCng~otc%Pt~8PJjYMVXA6j>^zF{%S6QdE999-g|=R*vU|Er8S0?k=5%En1MDIa zC6sE2g#?GV2IdX35a*i2)vd(>GCUw7saxE=EXbD1!LP3&J5KOmb9d%Jesnhl( z&Ctau^1*1!L~knkazOzUjF$rMyx*m_yT|*t=>oce9;(&36AV-*1cE+G$>8be9@3oBanOgMx+b4Q-ko{{4kkcVzHTTjneN zL+@JOF|Xbn8O(D#d-qjq;#LQ%GuOIL^$x9a+}_^SK26+exbHV(xbL^DKv36j)K4s? z>o?{n7Sr_`^%INf`i=RCb1m{%R$An-EVsyG5!3Y>^%INe`i*^NLozA*Zo(mnLz0Aq z0`Vy5`PC=RFV#Kr?5=cYMY{L)sD4JgpTcM2GgE(rt3UV(lgU?z(HEmH8d(u32-TJU zWLMe;`nq#l>nie3&R0wJJhRs2x|I!rKqe%Rf))0>3hisIIchct0+|2>P%vH!PRBKf zEwE5mnNyfpr-Xt^?Hewgy3?M=20deW?2bPAJ30Rt zMVbkUS^63j^xO0LE>&s==AGGE=Z(BU82LRS&DvqkpXFX>xa^%Bp@j`gVr#8A?nb}2 zw>Z?=SI{3F4!LMoMa8s3F4~xwcF08=6Vvuy+b&y`+30Vrwt9ODmb!~Wn#K*vZHl`^ zHO~4vWwJComRlMXIm#MUpYCGm`A(k6m_STmbD=jZMPWU#JX9;I-Ej_Q>s>)V2 zD3)8A9i2XLhG+2$>hTK-=NCkZNzw|Cw1ErG)nRGdY7?1~GKq*L} zO4uHKyro_W>1})=2IPUD7>L;DgwITiB3cwdfgltFw$O};_CpD5KP1uT>sDGX(SM32 zTu=Z738f%*+2=i!uX-CnXd(!SkpCKN_&q1b?^$Z(-@%p(O;9ij1+mA9Xn9B9KjhB| zp#aAzLP~^`Pyhu9r=TY)&C}b?n6^nb8#l5+5XgkdqW~8rLQZ6)Pyhvqr=Vv02BrC0 zj$pS7hcfZOBt9MroUSx=rQK7ZWrHA)2~Yq938WynL{s)OLS-DtXvHU&g0Skh=X9eK z8u+}kvbye(XLqG{_1?)cA6u?-!{z%;qRdl z!e8eI;qMxESykp<|G~r7Q@yLggRtW_Uie$KNHJTjevB&7AQ!-x+A_ zU-J6;87nL^_8dU8ya3ViO#(P;IZV=29j1Kc%L)S`XP`i5K8X}OBcV|cM5C|(47h*sjfB~g|N_bTze0b~0`RZVWb{=1d0eO&Q z7<{rt`%!nh6#C}R@7eX#H(t;0da8KqEbkdZ_V(`cX$>8f(ZQX~-M_atbXI=P=zZT1 z9`qJAxGSp`di`zLJ0gR3Dj(bI{h;m6SGqrbH!{fZc2#B9cYm1O;0$h!4DQ_9{n6ou zQ^D`8@t%teg4GS)VAWD@cPP6tGHC4X4pr5}uY!G5{n@n*Io`%@Z?HQQ-0gU?s6>WceXB6TW4@AdonDou z9MZRnGAs;B_EuV6a-8s8(YFdS?DUnM*KJi@(YFdTtX9cm>C;^-J>ThTb}Y9vDr8|D z#{ryZ2e3V_oNqx8W~gTq1cGp_Qm{`|7`{p5a1kYfK&==%1!k?wb*oyk=dnQ$$OI^W zg6X0l_~nMIqto@xIqXDU=;BwQea$sTy~3Wy20_}e%VVR!Q?BiB%~UV8vq2EZ1So)l>82p| zM)h=m3g!eRMxjm$%v!fgqi(f(*dPdG0u(^Ov{Mj!Sca<1)Wo!W!xU6#ovt)>rQO2@ zK_C;LKt>c?*zv6;-#DaE{M}cdJO0PFekPm_v`9a${Yg(dEgalE)i3I(Y^LA1@m%~Rj?l3uH{{1hQyVM(FumaD{00S6 zK|%E8rdIAd-0*z|?ii<7aYuV)xRdt;8YS<+xqUsp`;cV1@V^{y7*d=Z7 zrcMb3AL=gZjuPuBi8U@@f#vBEB3f*`D2br}3X+rpPxL{KdyNYWwzH;ZBsK^FnQ%1) zw;7xCw)ad=N^B4WG64#pAo(c3Qj0DfXZ*Fr`Dw;Lxpuo`uzSv!W~nRnwhkA&hy*zS z3KRwT*22)X;&5L@>ORvQ6aOTf@Ayp%)s+UD+f`@`n6*2kHoJ#iM1q_E1&V^4YhiUq ztAe`EbjQR$@$;Q*W1vD?FICw+U8W3mP;Ya(*hM7B2~eOY$h;OFiF9G2?lS{2@lWg& zD0SU{^wFEvK6-RD1wGo@j*)`c4+A64JE)_W>Aw94^%gTcP+p;hH$mleMszuWLmWYAR=Q~WxETQeeqz1<&$ z6~Dpnt?{0#x^r)_a+|=i-%X2zmHk>3!peSq$7Hgc@X2H8^vPl=Dic@sTc;3L_PeQE zP}%QU)8o=j#szwtj}3xACO`oc2th%EqA~m)5LKJ0i~0L91!x1W)&{Z%ohDpBK{8Vi zdyvEBLeZS0isn2sA8ZN@>MM{aB2m1yM3MLqAF4$1Q4o8O14%ok`sCF0_aA$t=g{B% z;;t`#Zp9tX1mDQHeNXw<9=1Q!bMuTpd3!ou_@~LBmiA%-w-=+~BTWcXwh3V{-I_%c zN~)KdD#*1$*Rmd&e)2)m7v#wbuLBhvHXdp;bq$d;LSJ8f&A! zI8+d~YDu$pnDb}3*BLb1{oz5Ud6m&!YRGK%AFxLT3*8&qG&}tJ3$1Q*L1d8mivQ5N z)_2USH@hE-4EAMPoxS-P?)6og`pDo^@2WNKvZ~Cz{)30Dr}iuAWwPv5$YW^?Tf5}2 z+--T@@n%uUBHdioOwshm!upPz#PuB)m5S@7JtVM~wnS7fZDIJn-*(Ah_na}!QdjD2 z9j-KEpqyPqf}8*aiUPGzUHNUx3(J@km>xMRxYk+04yn!V@tYQ^D-AZctI!xQYuQC4 z$O%xOC{PQ-vqDeH?(lgOpRkkSetGQkC7)Wy(+o^|t9y^zDhO_8QZk6NU${bKvIGs5%fs}$ zcS=0Jr@x@wQeWx%|NefRu6WMrFCMP-8vgvxTmIs{|DE}(ZExRn%fANy^p(&3_ji`P zzvn;xanp;se3eFNO^`(PLFFOEYRewS$)YmhRIkT;CFMH3Dot4@oa(hu`LbfAj+Zxi=a+YW#YmgiT)dCT`y?kD!zw!n(ZxzbutwNcYD)qJwSDG3337yC<@fV8=Mt# zj(iw3voM1&m!{$=M4R2?H!W0G8fe`(_L4KF zw*P~3we^p+|7GdU`#KAE29E1?G*#)|*j1Wwf3Rd{ZfEw+z%gAtyNCoi0SXiaYT=k> zg~-eBOeD;oazB%3X#cltW1vD?FICw+U8W3mu)oJt)AvX~ovT0oK;5HHtxtDWq+2`8 z`Lo>X44Uo!mbA#g=q@#6Hv13Qt)1po;X#{bhkt*e)om_V=-v<+9D3LKj(PQF_d{)& zuS5pU-uw*r`YKJme_wWFu*O|hmATh{@UZn%@2c=1l)uzk?_VFc+UqY1tvX_jTNTt; z8~w$h!PUv4l0~|?s+r1din}e(JKhv(*rZrtdC~D!(WXUN&#Cg1LJdn>5^C^GoEump zup9WKxNhJyf!)9-e8*(6obbtG>Ga89nXjI0&nwqDTr=1p2xI~jKtak-5blyd{b%lz z%L#xP`=J>2LzfFvC%H;CmmzJC9O&41MP zrO!UF=qsO@`<_($onK2YXXk%#=iY5+O*Bm7l32p781dUYzs>9UZJq`Qv3Qn&p zu*kQE6}<{&->{Kp7P4t(!J*_((wzqi#z{e6)zdxEo|SaVO7LYXKONZ;kYin@I>}%R z=xuBe1Tp~%pde)_h+USc&^ldd>PowZ4T2y_CVcW;ZS8ZOoVxO#>`L=~X!!N*b>Gb& zrlXAv;&rrAm-c+AOqNbxvtzlXQIVsp zQT6FAmY$cvj@6buj*~@YEm?1?9u&+ST&~lr(v)?IT+1%UF~QuyD=lF~o^Mlm)~l*Q z!Q8>;bz4>0$_B-9OS7ZXS1QoZjFC?+Mn1&C*p)F$L%~ET2%r2Qs%2UfZdyd}IB9}M zoUwWMjU}A1loYW`N_)qCg~5iX7E!H8qT1W!E?wjY#5pW)ttc5zhEHyWhtjQCM_q_& z5!KrBDg+5aP;Ya(Ml>2`*I>(KB0(geBiel&6hL9ZD8$Z?m~KoNY9?MuK0sC5Jx&*2 zhyi&329yFSp_rAhZ-MT4Nl22U zPm-GL8mx<{W{pKk3i54Zjr-KE2zx?p@Nv{cW^aA_Zu0;M89pB zulNtW8yQ>{{qD=QI(zdYgUr4DVb=y%BayW8<*QOP3RT-8kFkV#jRVV<%{vBL7A zWL~X`H_hsMo%b!g0WEWRJe@*IYZ8jC1<8qzm2CBPpukHtqV`B*q&PISc2@!n z;r<2`4T?rGDBf3yWAmGyk2-L?r2AXtGnUPq@i*^1IMBc3_4PAWSZ3@waMtv=bdzy` z-sWS2Adm@Akg^nne&GH5EkDrydhU9qH>_BpE;1)1!^HTENIe(sH7=l02thEBw6x2i z6ifpJr{hmyrs4b3B#H^}suPwcB^tTV$YpXHxsXw06d5H?3Tomm!!UQ)-h=e%Cml5@ zYEsmsPyhu`aAOpNhVCWZ*k3?UEMq}&QXJfE5>CCOcj}$t6XL#vQz%Fd3Ig98d?JR~ z!$xi1IQ>~^O?vGipU{S$6g?@NLP7FSaQgCty%cAPvoQ(MvQ9D>1A1GRi4B54CO`oc zK*5brP!oGW=|=u2e+H-$3)Q6_({CEX&e_vjUoU>*hu^ySp{Mq3>+TL!)igB5t@^WT z8*;pj-QHk#DA-pO8Fo}|o#j1a$ll(4J}ojZdfzwP+1&kmdqZdC_rim=>>b^`g$?e? zs)b&EWbpC34ewMww%PkZ+nujO2F~Et3~yIec76AU*^$8-@42cw_jZ4DxZzard*MMS zyRkc1-QW#YE%kPXvdhkw%4F&EH9MAD8WqFTn}YAS+w#1yGT^M|RHDj&@3Xw%5LE^o zmbN~qJfv7{+2at+I~$R<9`luy>-6GzXT#FgLgmYfm6n%;^Uf}}G&?$drRQ~91@q3% zR|oYrrz_hSsL<9+Rd!F8DT7@^f}8*aiUPH8+Gd3>E9(>nst{F3kSbK6ou>}+g&2?r zU_dFL63V?2wx21m*gZ~HHD8E<4DujvYC9u1T=cC--o6za9dMwj85E3(0?)%+!;K4O z(~*gpZCYoxWN4c}`wrT7kcUtJ1!7VVy}Fa&o=-GIqbZvGS~*ssea$sTJw0uWX!}Iu zNk1rn0?{ex+g7YJi~d89h9V!qO6?miox0PW#|A+l6QBSJpkN#n1i##nb(F}BBXR&Y z8ENAw*LJvOsu$bYAP8gv6hHwKjFW=s!!pbyOsCUwPGQ!%T^e<(-NOb!AQPYf3ZP)T z6vSSI8t>m`B4QFA|CvaI*6B)9SK2*n5Ck#-3X+S0ch{;uc=w)X=6?S1fBN?7dEY<2 zcHgGGr3YdA~hEO~0rb1zkDLl-Kw1G#fcpFQ^aT<5E=FTNu7 z9kl!oihZwGeh07uW^CFcGmQa#0Ehi6QBSJpkTrj1fnnAAS^*x za!p~$WV(KM<6Go6zERh#z#Rg@Ae?j*c)pok_Ox`Hu}N=x&-5f41R=qhuv02EHW_RI z6B`79On?F?fP%@PAo@%yYLCfKd!Qz}uAhxp{m1#L|Fpc}%{N_)rUzFM!X_~&IDLNi zGUGNmL*!SWFOUeuxb#cFsHj#M0}6LqBG-NrdCTk-lozT|jm8C8-hnV2d$ zVXGsiU@Xa~qM-l^px}BG963{9nKJh)qT!Sh4dV&L6Pk3M&^#2zD2!c{Ci#`7>W)^0 z0r@WmVDm}Pjm0g8OwgO^v%D&ulBV^PyW`hCe+iHi48IyQ1L*BvULIoEpg#YD_OHEvAqG6d>6hxa( ziuI96v1C48*Oa5+-NCz)Any*TMQV{+sZ2q8<$I{s`|5Q8*;pj(P33hLt}S$XlUiGtXk;xw`K3>?k#Kx z4>o&0XuI>3?vLMXc&GBQ@SrNYzWc-M24`?xMso?k4c+XYcxi>QK2CJ5O zyF=NH-NEVxZ)-wCv58aA4*!?4#5L09C~H)Gx{IafJAKWL<(5W;9CnnRm&MYe%U5Zp zMfE%J@4MQv$8oZ#tR+i4YjC+vuS%O1)$hc=?@G%{juXC3UrJf~INTg=jG$1E zOccc4ui=;^(=m~RD-zXqkJH5$Vn7~%0i}RSNF^LgC5%0SGEW_>(DH>COiLcng&$Sxv5PJjYMfm$ewS)nG{$AEc`={-RwI+NZXfq#&;BeWfX0w{oj zF;NgZ)p^e}roY4=hO-!F^kuTqREnlj676)Z-A;%25T8Uh-3mqf955p>BN@j&Bhem1 zfc6-Z)n*GCD}Ugd*=0|2aH!K`FHu&hz_`(1^PAWp2xI~jKmim? zCk3a^?_S0cn9d_0=D9$fWH1Kwwk{JJ1c6L|0w{oj>7^j{unaR2)AEgFBZGL+Z)EUcyy!PP z7$*7+58_0>!LapLHB-4wSl{nkMVl50>idK($9yHC z`hE+QFDpd#{fZ^{jgt}|ov2|CG3JztF)=e^rAEyS1@fohDMhXY?=;iv4NtG)N&S#Q zB89w$iE`jrNzXSP`5(8>`NgJx`NP8lKM39Yjm7^{{lD(|BZJLndR)56xIoVaK_C-^ zr681U&Ehw3`Jc;9RwE@d^W`<>Oa2!plmG$+P%sS?czRmGPpd94*v^`sk?v)KAY3aG z(B?GhG2vjG!UqKfP>^gC)NJ1n?mqdNYmRz_J+Fcdg7B%C@PUEY8p>HDZV2qK_(1^_KtVE7uqFTG ze08PWQ=xUb(%2vfBQqgbp`EAZ3o#%Mz<^RfC8QE2q!LCS^$F>1^%7r*!6fEE{}S8j zZ(iK%Xm?gVaZ9?t#Hl}7G0W}kZSB+K#I4e-9p?O5?sW#uc7ID`u*&EzHDosX57@1p zk->&G%?|(mLaWpSMvo81q!WrhdYR%dU1hI@ULrry6VGFY|7T~?L3 z*MIP^^;Bd~9MUxUTdS?!-h!o(L9I2%-RSrB7Kd8<3i`vttcyB%EOP~x3cu(ORw|sY z(kQKp`z$Xw#PiqgahxnFYsq?BC7!=luS!$ag?(?k9OC(FUvixAZ7R=tRVALkcB?8| z8Rvo(YS^gAQP!yBqyRr_%1{UOHm57w7^u+JOI3DH7rTfAIROe31!`f6%?iH>pHv-X zF60zotS3YGFopGDqO`^9i_;hiQi=j3z%)4+waEb<%W3df=HXbTk%kNOKo61fm?=O4 zi~xBQ`SWckE|X1h$>%{l3zbj+1)oL%5?}<#BjwMSe$gGHdWHfhfC7OiKmv>adAI-> zv#x|$7qc#YX()gKp(sECi~u=a{*37t-7%_XD1ZVe5R3vOz*gxR{@WD$UtM@U@q8w; z=aZwu(V<2OM8OyCzp(l4Z+`La2U@-oZ2ronhdti!tJm-U=8|9CwaU10%GCR@*PD{9 z0Rx|BI@+S3h{ltRBOD5#018B;pr>W`GGjoXQ$RjyB7SEJ`*3U9|K<-}pU=JHm&fWV zs_VM*FB@<3hxE5m<87S&Hfp?$*WX5rxAFShsPQ&Ve>*~L8yOad3TmwJs}X+OvJrmV zvPC*^MY1a_!ir>DbmEF+S6hS?$(HNH70JrYW*RlKmY$czBBtFpW+Yy2X?Aq_O3&+r zvipWV^L+JedtUjdVibHagoWII0w{ojWT)W6a6^)#u4Mm|4nAQbPc>W!rO>KL2&Kj> zl)}cRCT%F5$x%G9yQRF{4Pg?(q)!tjksIU&xd8=2P=MVnwe4;?wLtzJJ}Sa3gj-Mm z1yFD`1=!tE+3tqG34xPP0;e+^FOC;g3kpV~0J~et+TDT`+Iece5Cif63@8OuLMq`j zSHkv={R)GvUJB{?LJV#o51g)SW1vD?FICw+U8W3mP;X-wksv2PfucYyWLCI(eyr_D zw`Lu^dO!1Ks?M8&NvshmPKQX5B*FKO?;i>Tp&)i8$#25^O9{d#*_`!qT3q19pQsoqub#@~Xa?&2Zi z@5!PPadp2<3UPJ6rQ+&-4=IGz{rXD8)&16}qI%p;U$bMmrBNXd_iv|99?K?ib-xV? zL3O{&j0^NOpXqVwCN>BHnE(Y)00nZPph3|Xevp>wEj8x&XQX?LDK82n2)45(fKyDPo+8H$Ih42-lm7c(1N@YJF zKf7tCL=Xsq!4@D01VNsqAlA;{4Fu8h7DO+$ds5a9IQ(a?Ej_R$?eizk>USOa>xv!! z)c(`Oe?I$wY34tC<{$p-U$;Ma$Ewe?)&9qyWtYW5HW zxPSt&Dd?-pKRKUTChvltr?-`B&zOGhdP2HMJ=?gz&JN;1IzR)(fLb_Jb3@J-+^Vw_ z9pQ^klReL1Gi&{(U%H-^Zd0!?vV(Y#4$wd`pcYQu+z>mRfI6|MYqfi@5E2AjoKOG- zP#|Xt`aW5Y$5p=i);e6B7;7=sLID&&f!rzR&(@SZE%zTXC1>=ufeLMHv3B5{57Xv3 zPkmVV)Gc*)oLm(xuG_3Fjho1fv1Gq~3I^W*<}*}p3Ozj$M7 zMBh4OY>nz$%g*;01M~V%tsVGyZ*6Et?WL~z_WrKZ{h_t}z0UB?hX?wcwSA`sE_nz3 zu=tsQi(Lc#jkSNc(B5}$-oPip?zZ}_a~BP-eHn!Q(=_@_2+p5Y|ilvQxx~WR{#;($g`-3Grb33zl{@?b_2D+*9 zOwj#FHOUO3(@oAEq8P($vZ!=rN)@@0g0K(6PAD5!Ob^q=25&G$7>v`zmePP5$L>Tu zxJ^@=Ml&KxRckW@yBtVtFaf+FcvP1NRcZw|!AVKSHb!zOLk(8>QIPG`58$5=u)(r) zuby+yvF>+cBk8^G^L{s1`kvQ+R8=G9Lzh(ahm3zS$boF>hNnKWXzE=Hj?@i&ZD8KJ z|GoF`i?{E2?{jyH#X^Z-8M!ou?bM>+WO#l*#Yq?4NyjaUVHeFX6hHwKqzDE64UvVu zW?POS72K<-V%SA4i(wbdFcd%m6r>IXvG38I)MItM1FP$7T{5|Qk&NQk)YakF6sKPk zx}h7oZ$v??A&^SmX3G(`do@+wAYxFZxMg}MgwaKk;ZOhtqbcZZ+_^wksJ3?LH<|Be zN8mxo(-ms0;$5$8G4lrX1c3|(b0~mGFWu>U3#!ex8v?kaD0v&7l^i$gB{(Tw<0L?d%^^ zTWiexAO_?C7*GnRgj7PoR>CXFj`M>`d7xA|gCD6AgZ>`^?bKGm16-CS-WRbBmt}+p*lHiHQerauVDS$%vWSN(mKgflaPkFGKJJ4 zdEB(kajc-IQ6;G18;;`z#f_OC$ext$m8>ucX{eT^NvkD`OhQ!t3eiG)^)(C6LOW#6 zU1Ac)W|w43D`X+n<)U+Ko%N0-Ccz)Td^k&V=EF{GmYh>WzEA)K`CP zCAv>2fPxgKz|%Y88U`W+LBwe3VF|ih8!}L2pl|^NP>_NYv<&|&3H7fa{Ksg03vnCc zKgNFy1yBG55eh1t>f@!=J<%2hP$2{=L?ZQ5Tf6nuW{r-wLlDRWC=fFR14o|e-Me?q z-`)3xrR%ev`)p8tyl3$~?atHEhKFbybbq{CCRI3%VN-@B^RSC1g@X9hMj>yqc|_2G zfp*iI1Xj`W^wsj>cp-O?@lq@p|RSH}*B-pKYv~>z+h;()qYDP?p2uh&<3ZUSV z6#Q?~js-gA2muIo1tOM9HqjlgM-Vnd@=7%5D502IK)4PztDoR6@~L!rsV|XMeXoiyvZ$LApGkwmMx} zoxfCBV=l9Ky7e3)666FZP!yA2qMz&0r7StSl(~^(BFCHvIVOpOG8=C=6o{IF&{VhV6pgEru~8MhjA-aYGb<>7 z0w{ojF;K7}_xMb?(dH>tI$de(BuNm$rr*AnY4 zB06X@jP(6R6~9}2yYnq>L)7=1G0OMr?OPjc8tMGatFYL8YlA}%QN{1-GQ~CD?-QeZ zzd^+a-*53;)il`@fjWPenzlRM6Q=XGQI#uG2-Nwz!t{pYxGHJ+{5|-pwE3K78U-L})y|$bZrNea>I|PADfC4Ch z0w}lz1%ck4ccP7hIx!@F(vX~>Bd8$nKn3|SDpB%>{DA@}NHGeK04JOG_z;d$bjO%} zp#Tb?01C!V0TSTZNhLs@Jk#%h{jqtEy!?>lg_*xR_PJj!t333k_etC1Uuo{N37}6E zedf4}nxK28+`p!i9~Dwi6dde|*n#=ZMpArnh0a-Y4Wo4$6hHwKK*4w^C~s|&XsmqV zm;|3VCU@H?we_T)S4a?&>h2~9NkWp4P!OdcxM{7_FtQ~jpIs*6v&)oiNkzjjc^h5R zR0M$vKq-KN+ovEP^@iPUllR>XIzrdor~@jlYh2gDbzPIaWG~qZ1&O7=|3Gc#Vb_%8 zG|soC$O}U&k5-=M3QzzAPyhwDO~E7D;?3qfU12gh=PlxYVISJfWtCwcZDm@w%zO8P zKUMyIT5I5Zxps!vIqYGjw>@y7eEzV9KuDYI^#+C>s(Q|))wUWpPW5(awBdoRw$1o` zo%gh6etpkhB7?FyUSG3zOHW^ZtvfO}+dO|?&&7{wPZ*zjDl(|)Ij^mC1~#U9yUVoU z!GYTL!1tfC6sU#F3Q0LXcAVR}fXO;}E?b-~ ztAlfb4Q=&{2*=}OrDSF4-);kh9LWds~3ZMWAZcIU}TeeT10ET5?!I!^MY_j1-OVfx zyYb?%90Lmn$qjM?3ZMWA?uY``8Bf9*>)9-)V>#V~EvGxFCzu42k^%)#FoFWs8QXG7 zm51WE&X}dKERD6XC~(xGK-P(p5~KtaOdtiUGuBw+xuSX#3))1tppA2C<(#rqm&yhO z$wUF`jN`fT*v*=-8?Omd$XPE)Zjc*L00mGmF%+=QIDTuaTU}{7e~Gfntg(5z^i$%^JDZYLDaEHsAEo-R_8BO)|ks|o^E}*JfOC6h)9qVpg>We7BVXcdVY+q5@Sk_ z@5N1Ths)z_F$W)5_4>CSdtmj>(wB-iPW5(av{gOlqQc+EV19kiUu?B)#)$AYGU&^% zbsNj(c%#DK@Zf~;xu?8mo99P`zu`f;x4TSR({ny5{EZCeH}qUMP#YEgo{0>GONgUN z;t>+!sFHZNggC4u&YNhJ>jYY1Z~0HXBFmB1NtT+nJKif;KQ~iQ!)=aZ1x1ajT$w^@ zkvwh^((nV>lhVDC6_exUo!}>mD0A19sMNAFsnD#y`(^pkHzmtVI~?x|&icE^B#v#F zNgUe}lNh#?a4kCUEF#yvmsH0#8fV)mIYy-&Yo-15`Fgb)}C#z#T)dnL0p)>HbI&6D8575P&jr9?_OLQ09Pw@yt;kP;L|D2O)&(WORl zR^Z+zUm9=AZc;o2I>!mrITB2Qi6IsWpa2TSMnOz96Hf*1tL7qIU3@LON%0ieAd|@k ziKG`vua1O7(o0!R6$*lz)=CY^R@W5y!!}PmUAQ8D3M`HjV{ya`ti&4afhK6e3=9RM zDF_{VrdM6!n|t3E_NgAaaQVZ*cRzY}zw)t1=Kb>zKKI_udf$0^8+R^9i90Isyeq~1 z0qzfQe*g-g01BWWQ4~~Et>Ko#NP|5Ck#-3ZMWApdb+xbgarV**v96rz=fvWM^DK_$XT*cuqRd z(b@4}+UYMljpfzPzO;I}rPYu-)xAoisPZ+YMFu)|ktU zL*5+sn#f>nFt5U5ANDYysI+9e?LKec+F(;CFETt~Sn-tmyUiK-f zU0RE?FE=vCXz;ytz|!8g{0Vn)WYAP@@%H6qxz`32c3;y@$B}|t%3r6+rbstQ7ABp) zR=7&q?ZQ>k=E}-NvV~Nai_W!m);pG%?2>G0g-i?wju#X+W(rdqEId!}klR>zp5W_l zW39ASvcy#HXzMIGr`jkJ&=6B6rcO+qPyhu`00l`v!On2c1Wv^5oCp_2O~d$HfpxV(}X_0P3UX*=S4?a>?^R)b0^n9Gvt9%B|nG(c>o5K z0xBVukV+WGO4!o6TcWYnn1gD5OiT9s?u$3E9< zyO}7MCSXHNz#gU}1Z^?s4FUyF00mHxTolCa+t8?MOpUtG3*uPRTM$i(S%pc4li}2P zAyN>WZpl1MyRWgd`$8{>S`oh_6hHwKKtU2x5bZOGlm8a|2nICPmX107J$Em9^f%|z z>|3XI=U#LC4her_j^82S?^Va|?rXx|(XQW$(Wc*s_;+vA@jE2^z3TYAF8saf_`NRt zjXHjZgulgeRmtk|y|rO@scF08y@K^~GhdMjP5j%a%9Sak7RlqLZGsd3+9l%H#3J|| zE-MzQ>Gw(LUdbZUR>#rKbtS4HiLPLVnfqn=(l^7hyXz8N!3>3I`VHHOXUgwIEqFU> zL5GXK!jB3&Pyhu`5O)f8g)fZ^WZF$L4b`pLhPM-MXB@np4-r+ON^OCH37{a>&v~(K z{1)7o&8hKMC-qn;u~6RFLizE+)^|=E`O=|({M%yJh6}wdU(5b{Vcj3~<}aPpzhJ&c zH%o2pWQQP-2~Yq9iKL*SY7KX6KJC+`3Al{pUI)#sxZ?)}Pyhu`5LXJgWAmx^ow!lM zjhY+ZsNp7FotoSrH>i+MkVF(j+YjWFDkrX`(L}XIO6&9ezQ(MvE5hyd+qTfUiCCE5d_OI@%L`x#{lJW!H7I>F(mPj0WFz9c@{L-Pbgv zqqVP*W{G60kcCv2i_W!m);op^It6{8V4ZMv!F3Yh>Vk`es|(&MSz&s^alD{dcxGCG zs%WG7Tw$tcWBS~pbE=Ipt+ZAmG&AifeY!lLwmMx}oxfCBV=l9Kx;aE7$O%xOC{PQT z6__7~T^7t!6mO<5-k>nnn1gC7KZpT&00xu-Dj}7SN|-E_FuDla<8+nV`0=SRh%!(C{Qh`nQnk zq`KHrJ@!@L)b0bf)P^`vP7qv)H8t|=$U7-SPyhwDNr5N2M!PPR?c|z~&b%UB9Y+X) z9+xCsPzs;`3WP#ItjlD|y4pP@%GTk|yoYTZkrM<`0xqBc3ZOth6vVnrrmB$Lr?;4g zIr9oJ2oeoa0t%o23ZOtx6!<$fN5A)*l2baKUu4IKjG+Jul9Pfze^t7n=JOwZ`yW=R z*4{V&uHSXMbLmGv`uD%jcx|u#f$zv)`iytwKfRsz;XSn%f0Fgi|Fyix|C6TVEPlK9 zB7$j_%)_bIhvQ16Jn#!w=>0EMKl3kJr+2HX&uko}{9UC{)cf|>ENzD6QRQ!VkZ*At z^5(eLM3ujh!HTEc-)+v==i7VL|2snY8y?JXJNtH(4}W;8JY%K1y>IAYw2au>xBQ9W zw&3H~XER@st70333R2-XFoa%zL8ZXezQm6b{>U#*n z3uc0#CkT`RN&yrIpMuyegWIvI2-sg{P`X^Hy_VW+%OMB^0Scf13ZOs~6nJ_XcZTm$ zXi~^^byEMLdA2U4*HWkQI&$7S$xj7<0w@q01zA;Vq=pny%%toR>Kvnz_f8PxZ8m~H z5GVyuAT|mDnn;t#RMC5FGT*N&R9n0B><|Pp0Scf13ZOtF6nIzVnNq}YmZtNUD67mG zo2N@ZRc=&UTU{I?666FZP!yC6sU#F3e1n=yex<<*h;PP*{x5P2h>)lORMvjDr?MTHV=o01UUf;6a{J_ zvjX$u_%92hUrS1%D~TqX$Dnklo*j_4%z2lS{D4pOg97nWP(Jvx0jERU?{lC;+3~L) zyL6!JhYwEot#hiYyC1D>HRO)6{uXI6Mp%Eh_;!!5{$3URUbp`C<)*twSbs+ge|L=* z{;qU;``=%p{I&iAfyW4#)eQ z>q|2C%krhdvj1*I_1Y;u)$5OYb^fO-gCC!5w^szuy0C%-gm4p5E!H-Y3e>FS(QpL7oss(L#ee+(`H;=GG5Xb~5fPz$}puD=|^{r`V zr#VaWoyOebGet5rm{s3Ardr(g&^Or;PY?#amr`2DQ~H<9i&M*l$y+AF$$2OkF9qJ8 zRU7uKPIHz{kFM<&i50&zh17wET=&VB+H!cy1c6L|0w{ojRHGoE`OVSl(lqDyv?9_5 z-KM0@%VS9{q+m8GiLwT9=i8L*}rGh96$g2|ItX# zHhQ*+t!EppSgrJOvw5y9F1&~E;5Wwt!9AuOtmtTF#q^|LSCT2wp3J=#3`)@bwWaOG@N zKx@dG<6hIO7;@ZR*V-CZJmn4#YJ9u27Uz)T7Ex`Ev`(_rlwis2MwLjm%#EVhE~~_` zAwZVym8>vLwo6&a0%SzB2yaCwyuC*^OKs(S5d`Rl0w@qE1qWMqOEkhS^JqJ9mujqd z9LMW%Bw|Di|0@)Tfr4OEfFf{(x5nn_(%$3R&oLq zKmim!ZGPMkS9#IB=6 zaoJI-tTC6_Jl*LiBA9IHvPe@++H67r z6hHwKq&NlT0&X;k-7$sij-Tu@#u2*jiA45EJ5kz+8Y$*?Caexjk2En5;za?@$CP(I zB0zFi%mu zStw0APU>GY&(_tct?Up4G64#p01BW03StyQzpk27DgZ4E{tNsU_%EOU3ZMWApx_e} zgre;yUo{u$>NHlrK52J0neW#Xs;ymmb_fEQ00mG01yBG5LlpQ0Aw*%NdrGf#M|*?& z2LTckKmioogo2jV-4cz}r?;5%bcM;eqtW@*)^2^ZnH_>aCO`ocKmim$!6*uXQRRM` z+-UQZDxI$6+X<8^XUO?M49Ej8pcGIEsf1L*)UJfF+fOy-pxP>c9|QBOp+JW#G_Ur- zw9{W+H1FMA)yCYB4&BIT$jTd2^bT2hV~XB8^z8O6&vLH~D(t?da*MYwFEVHf7!(t4%->`}>ksEXWH>X6++qhqII9W>Qj=6cu)g#>9DTw&c+xx4Ndt zAGUc)lUM3txFY|Ns18;Kj2$ zKQzwSe(D8dvU>d|_cGf5h_-lhax^)hlL74<=xG53Pyhu`00rZwpyOP4nRddPB3&^m z`+L2vQ1-9BvGt{|zkB(mwL7~s+Nz#&X|=7!jZ?kR!C!2(ZN~5Gyr(tu>wCfjx3O%F z*VnAw($kk889e1Z+dO|?&&7{wPZ*yI56ZMPJ?FKx&cMcWZ+B$i4fF&9p|SyOWo@?C z9vzld)Y^M`f( z+4l<8&&_;AkTO|?)FOG@v`vsQ+2aMpjhP<^QYM=wt(Gh@Z55pQ01C!HL1@!jsUcC*7ZNuFc3AwN01BW03ZUT5D2RPoCLwuLZu2-@ z{2&J80T@sUsDxBPDj}6{Y?Ux}3u=ZuP^wJe54F|l((3%B${KT-&C{(hLB73L*q;-;N})rVwTOp@)%wOtkxIs#4sfdVKPqM)L+Nix|Pf!`6o zW8zhf-FotnJR}dH018AwK~Ulc?KF3B6YB=03GgoWY&1yCR)3SzFAlF50=7*#QyYrIU$iJ@-`fzV{nK< z3Zy`aP$`HtW{P`9frNPZc+$j4B?B|QdFiPKa;Gf(R^zs94-I_$w8xvfeNPyhu`00k3G!NJzul6YQabm=#l@7EQot?Up4 zG64#p01BW03MQU{;8b^5?iR1h4ZQM&lPv+Jn*rSnbYz_w8TpWmoSHyQ5PwaGeOV?R z+z;A3mt>)i&fYIocki$6`Nks6@4q(Hy-K5~@-?PeS`E3;!3?*vZ&$fu*uz`p87tlG zeM1k~Zf{>xNHO$aSgvyyX)@}4du*1r$Y4#gVvBEgzQt|Gn-dxA^X>h}a>B6UDff4q zGr|L{#o3pe?p|G{sPXNJ43ZFdM$cwCeaOYyOS33%SUk`<;m9D)=ccdko_rTFMXJnx&5Wu_gD z_dC~@WbT&<$*sFUH%o2p)W2Z9haG}ICO`ocKmim$K^!TFek*mtuRHuD$||$Q=IPQ; zl^fO8R#%#iLqvj{00oKywUAkX`B6NV1+lM?#Nk3GU*|U{x0su49-n@W+^Dg-T^u43 zC6sU#F3e1mUx-5uYM@{%Ua=NrSf2p#@TxRoh>(k`{wUt9ef}8*aiUPHeS%LXc zT$cs0>!^vX?&gVYDn*+z+LVz|Pyhu`00mHRGYUK#a*xlHPt*m-(nK_#;z?bT&~=Na zpsgHqLje>(L6TC?u`16rK_{n;=3PQ<-bH^x`V;=vMfTEwks1yK0;Qn5YK_z|5wHDW zo2Mjk4G(#C7yUL#KNy4pD1d^Lq#!Wel6m;fr@Pyhu`00omt zLG;Tqca(JhX*UP^pFM4VFwI#y-TSj@!=BYcj^As--z-awZ*?$t*h6t}`9VvAZ|I@I zV)v~L<_&w;bJg*CP567w@q119d(H8CP567=@q1198*}_#6aMaW#6!Y6N#bCwOdQ(* znK-s`nK-r_sc>z-6Jp)9NFFzBb4>O>^`um|w%-Y{?p8|{nYKD6`=1h$-gl&u*p^eG zbhz%4-^&g`AQPYf3gS;e=txQL*Pr>HU%T(u%XbfKxbn2e`vdFjM?cj65brw9dBppp zC*~~2b_fEQ00mG01yBG5iJ+h&y71=EZ5cIKb;#OV*4{z^6hHwKKtX~j2+UIyZ#Ea{ z>NHlr{?+m9Y%<@kD^y#%^z0A>G64#p01BW03KB*^RP8o?lL@PZSu)MKaVUTSD1ZVe zNCpZ*Q{A#tdW$(vSE#Z2#<-)=`PJ5LeYKe#fcjrH80oJ*%seIcE%fo|a#Wj`h z9QT^YVDB}RZ*#`J$iUfmP35~w8yQ?v`5v&e_bm?(f(pB@sodi2%gb`FjSNN#gu|l& zMWrR%ZTETm)&`qG;bHMy)il`@=_F};C-{k$nzlRMD_B1_^A(xU#I230T$w_e7~ATd zKJN(YdzHddCuzT_X4chYr;i)V|D3`#ka@rj8RNTpa|61HI`%x*+RBJ0Tjg4CpXp*kIQMN zjVM7Y|K_cq|01uUTia?(KlD4rv)_5;+dJ03@s)c%`)~hvV%N+UfA|mUH|P8@boY-w zJMZgHej%&>$!{I_Zx8&J&9&t_-tMUQe=U!7G!@gf^8SQ%>7rpMT~lct3k6UB1u05F z@R`P)3vN6C^Z8UEw|u$fo0_+LIq#fzsvi^xiGr-@isH?m=u>&|ujGLhvjWWv)vvdf ze!1$|{ZqZG(iBy`#t{Zvn z>>=Cj?Q04thCPh*-KM*X%Q6~#Z(Z}<=9yk|94S~QOogrRoV7!q-9;vGY}*{i3W|iO z;uW5IcgPpK%p{I&iAfyWR>#rKb;495@0aCE-;@YZjjXYD>R&LAMGnXB5GXa-qMJn! zC(odBe)m9D>3337yC<@d4H4dwI)V473!)JR_hx(d=&kOrer00mG01yCSN3hGV18M1s` zA<{>rk3y0@T0S9sxOlyyQ@RyesJ)a$VyJJ9^b)}_y*YUT1 JwWI1Y{~yPqoW%eD literal 0 HcmV?d00001 From 91408c95b54ac2ce10ae6f34f18fa52934cf1410 Mon Sep 17 00:00:00 2001 From: Diego Torres Date: Fri, 20 Sep 2024 03:53:49 +0200 Subject: [PATCH 6/6] trim breaks sql that spawns several lins, removed. Closes #282 --- src/Ifsnop/Mysqldump/Mysqldump.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Ifsnop/Mysqldump/Mysqldump.php b/src/Ifsnop/Mysqldump/Mysqldump.php index acf9d52..106e1dc 100644 --- a/src/Ifsnop/Mysqldump/Mysqldump.php +++ b/src/Ifsnop/Mysqldump/Mysqldump.php @@ -299,7 +299,7 @@ public function restore($path) $buffer = ''; while ( !feof($handle) ) { - $line = trim(fgets($handle)); + $line = fgets($handle); if (substr($line, 0, 2) == '--' || !$line) { continue; // skip comments