From aa3bcbaccfb5288087ebf138b01d717b9180c22e Mon Sep 17 00:00:00 2001 From: Meik Sievertsen Date: Thu, 29 Dec 2005 11:51:13 +0000 Subject: [PATCH] implemented maximum login attempts feature to prevent dictionary attacks git-svn-id: file:///svn/phpbb/branches/phpBB-2_0_0@5392 89ea8834-ac86-4346-8a33-228a782c2dd0 --- phpBB/admin/admin_board.php | 8 +++ phpBB/docs/CHANGELOG.html | 3 + phpBB/includes/usercp_confirm.php | 17 +++--- phpBB/includes/usercp_register.php | 6 ++ phpBB/install/install.php | 2 +- phpBB/install/schemas/ms_access_primer.zip | Bin 52246 -> 53231 bytes phpBB/install/schemas/mssql_basic.sql | 2 + phpBB/install/schemas/mssql_schema.sql | 4 ++ phpBB/install/schemas/mysql_basic.sql | 2 + phpBB/install/schemas/mysql_schema.sql | 2 + phpBB/install/schemas/postgres_basic.sql | 2 + phpBB/install/schemas/postgres_schema.sql | 2 + phpBB/install/update_to_latest.php | 53 ++++++++++++++++++ phpBB/language/lang_english/lang_admin.php | 8 +++ phpBB/language/lang_english/lang_main.php | 1 + phpBB/login.php | 28 ++++++++- .../subSilver/admin/board_config_body.tpl | 8 +++ .../templates/subSilver/admin/index_body.tpl | 13 +++-- 18 files changed, 143 insertions(+), 18 deletions(-) diff --git a/phpBB/admin/admin_board.php b/phpBB/admin/admin_board.php index df8a5404e3..721b2f5b97 100644 --- a/phpBB/admin/admin_board.php +++ b/phpBB/admin/admin_board.php @@ -191,6 +191,14 @@ $template->assign_vars(array( "L_MAX_POLL_OPTIONS" => $lang['Max_poll_options'], "L_FLOOD_INTERVAL" => $lang['Flood_Interval'], "L_FLOOD_INTERVAL_EXPLAIN" => $lang['Flood_Interval_explain'], + + 'L_MAX_LOGIN_ATTEMPTS' => $lang['Max_login_attempts'], + 'L_MAX_LOGIN_ATTEMPTS_EXPLAIN' => $lang['Max_login_attempts_explain'], + 'L_LOGIN_RESET_TIME' => $lang['Login_reset_time'], + 'L_LOGIN_RESET_TIME_EXPLAIN' => $lang['Login_reset_time_explain'], + 'MAX_LOGIN_ATTEMPTS' => $new['max_login_attempts'], + 'LOGIN_RESET_TIME' => $new['login_reset_time'], + "L_BOARD_EMAIL_FORM" => $lang['Board_email_form'], "L_BOARD_EMAIL_FORM_EXPLAIN" => $lang['Board_email_form_explain'], "L_TOPICS_PER_PAGE" => $lang['Topics_per_page'], diff --git a/phpBB/docs/CHANGELOG.html b/phpBB/docs/CHANGELOG.html index f4a3592ddf..42ffb42968 100644 --- a/phpBB/docs/CHANGELOG.html +++ b/phpBB/docs/CHANGELOG.html @@ -75,8 +75,11 @@ p,ul,td {font-size:10pt;}
  • [Fix] change truncation of username length in usercp_register.php - BFUK
  • [Fix] incorrect path to avatars in admin_users.php (Bug #667)
  • [Fix] fixed get_userdata to support correct sql escaping (non-mysql dbs) - jarnaez
  • +
  • [Fix] fixed captcha for those not having the zlib extension enabled
  • +
  • [Change] Placed version information above who is online in admin panel for better visual presence
  • [Sec] fixed XSS issue (only valid for Internet Explorer) within the url bbcode
  • [Sec] fixed XSS issue (only valid for Internet Explorer) if html tags are allowed and enabled
  • +
  • [Sec] added configurable maximum login attempts to prevent dictionary attacks
  • diff --git a/phpBB/includes/usercp_confirm.php b/phpBB/includes/usercp_confirm.php index fec308c9f9..24a94d728d 100644 --- a/phpBB/includes/usercp_confirm.php +++ b/phpBB/includes/usercp_confirm.php @@ -153,18 +153,15 @@ if (@extension_loaded('zlib')) } else { - if (!empty($HTTP_GET_VARS['c'])) - { - $_png = define_raw_pngs(); + $_png = define_raw_pngs(); - $char = substr($code, intval($HTTP_GET_VARS['c']) - 1, 1); - header('Content-Type: image/png'); - header('Cache-control: no-cache, no-store'); - echo base64_decode($_png[$char]); + $char = substr($code, -1); + header('Content-Type: image/png'); + header('Cache-control: no-cache, no-store'); + echo base64_decode($_png[$char]); - unset($_png); - exit; - } + unset($_png); + exit; } exit; diff --git a/phpBB/includes/usercp_register.php b/phpBB/includes/usercp_register.php index f6c5a451a0..591af76ad3 100644 --- a/phpBB/includes/usercp_register.php +++ b/phpBB/includes/usercp_register.php @@ -296,6 +296,12 @@ if ( isset($HTTP_POST_VARS['submit']) ) if ($row = $db->sql_fetchrow($result)) { + // Only compare one char if the zlib-extension is not loaded + if (!@extension_loaded('zlib')) + { + $row['code'] = substr($row['code'], -1); + } + if ($row['code'] != $confirm_code) { $error = TRUE; diff --git a/phpBB/install/install.php b/phpBB/install/install.php index 7db904f7b8..35b99804a2 100644 --- a/phpBB/install/install.php +++ b/phpBB/install/install.php @@ -333,7 +333,7 @@ $available_dbms = array( 'COMMENTS' => 'remove_remarks' ), 'mysql4' => array( - 'LABEL' => 'MySQL 4.x', + 'LABEL' => 'MySQL 4.x/5.x', 'SCHEMA' => 'mysql', 'DELIM' => ';', 'DELIM_BASIC' => ';', diff --git a/phpBB/install/schemas/ms_access_primer.zip b/phpBB/install/schemas/ms_access_primer.zip index 7b66a0fb479591a7050f936ecc6ad4877e3d0760..7da212ca37d6e2c9b43d8bb23ae35c22664f29be 100644 GIT binary patch literal 53231 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%0A0{MjbJd0TAL6!7^IybFnXRekbWk~fb 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 J^mLGJ1_0vt(-!~$ literal 52246 zcmbTdWl&ws(lCmQ$?Tw4&;ID~zhn&}*uP5coDGdlP0gL14IP}U z?982*?aWNh^$}fk#l1eR7LyrASq9lWg+hoiq)aGBV==`Nk{Q>fJN$+`D|+SMf1cAe zF;b3_4-KG?-mVDu3VfRnl}9{ZWgd6)hI63Z6h(xu7KpG?Y1_PD-h|Meaxx-!kkR#; z!*~FWw&Gox=wgX6ah-s(S``z?@&ajX(buicr-uH`}1{i@Qdixa}1DIpz>Br+W z9l7CVzw56SGcU+IpPxsR?x%iSR6hb2!%etbBro-khTTuMl*xeeaj4FCRh&l7`(nKF zgT3C{8-F$Lg3}kf+yc;MbBsmr zMOZ#Jzo%|Re~ZzqtZF6$jgP}s)vdUEt7=WbCU=dYVN$FHkVzDHZp#b|fmK1g#D4*K zWO&hdur=2~gP@&J94vjb-IsHL)tfcruh1g)hylqz(e2R>8I&y@>VyK{Gk*$G9G^4^ z`{~?e5Y-Un^zX&j@7_&h__>r%G-eT?y9!&CmJ;`|>BVT~*XxkE+#4!J+I+lFMPZ7& zzpjK^dYXT&@b~-*H6S)D`E^>ChO?M=(sxoHWJCG;?g1UWDBf}-QUNn-$kG0I@q_`G zMK$`!UqK1+%;sV7%I;Ohr8Oh=IN4!dhg_Jj2U@!}rk$W1hMl z_}w=$ZdP@V&nfFGhb9?dL#nDkliU`F?jnm?(e3%mn!ov4M= z-=CD9xzo3eNfhSfd1~)4pF$$sVX7d%IqVBGp^()LL+|qh&wU1$Kj8o!4M4Dl#TVv% z!;2tiYaK`%{W6J{#CC6r$2;;fJRV0@=G#O+$HV|@y{l?R^c_SL`Mf1kLb^ho2o3qGB$%Q#$AL_ieJ|gvwGPptKox~B*w6%Tg%>H!hJ1TwYNX` zQ{+AArsPTkYe%^TpFWS!k!C0}l&8n!`MMR>dUiWb5yQ6c8bht0BuOC$y9U=3Hs0QN zniFq2IC&!`k3CIMzzLFe7*BREdhK&9aIzf-?3l+IMbbC54@S8wv$kMg60Vg0wb@O={_#4!oG#m3%#aXN<84n;|F+SG?8?<#P5#E){>XwoLKJ@g(kG9y#5~ z0$7XBJw#_qu;fT|0!0gV*!>qL{+Mz>=f=Nwgm8rGV##09~;uft!zo(f>B& zAa2n=6TO&XJi_1Xwz4|1{g`C>&S)96DBPVb1Yu%KaUXwkI3{<-JxT9e&Dw~jsrMTZ zYnc-2=E^Kf%Hb{;eoX$2=?G-MV)Cr9lZxbM&_OX>QbN1di|p(H!-3{_H};Po5z3cT zW8DzXj5MfrA*DzKLJP44!$F3A^T)+f9%haH_B;If)*jLMg zpAqcuoF?qYDctsWHLDa{KPp>BG{A;J6aK)|r&0e|u^m*ZW7$@=9B&rsdJ8+e$gs9C zmUTAur#*ilj3SzBbCWb~AzZsXD`Tjr5`=?&uQWEywfLlm+Q-RrA&TEZ8d-oXh=xwptn_`k{er91C}!%yY1NiGE`^_7Z!l=R%2~{pbq3$|K{s!1 z`2v}<9a0kXAslDMqcu-N7y8Y=WD(P0B^0uev+L1_3@aeEW^s|^@dEs+x#FO5SA$`p z@#3-RhnR)~)>`FaSJO_jPB17whRlrgnMN;f@=NZUe5E*%{iU2ZWu>2WTgfOb3*mO6 z#1D6CP4p>az$y%xH6RR9AH`*mXG={qaL-hg+&#$fJ+u=1t)>}Aj9l&K4x6dWV?ExG%4F-Vs6cXxJtPGoB`bug^;MuMRg0 zF{Tpuy7#XRMNRbMnhZndgXI}7bDx)oaT2W&*(7%!l%jVTZk$Xn^(zX>uS>D2Atn-$ z_3vDW^{fhGNphR;{==JP-<^gQ6fl1mwT7= zT|KUhJ`9l1fv=uc-9ZuxC)mrM#5dnWVlMDAjZGc)6fWG0mytC zxG;gqRb4pZxWGEG+;S* z%pmVw`#>oN8y$q-uE5O1SF4LhrRm+yjWs8|KBkwGQyXBgc6nBtN<^q;6i;c_4eg>L zZ}Y~ksH-%}syAwQpxZ;cD;ikj+3wi{Js-c!-_L|I692pxQJvMXdw!5a!Yn&BE}9k{ zUe0QKffqA@W~Fa$w4|RRC5Ur=T+(SmKUt{WHrAjzTXgH{3F)?M{YI}D(cYteTEa-n z%*4P#>ztH=m4ua=tkzU?{haKOlw=YLiqUT(IIkHlpWhcYM!3@yem4@l>Y2v7wTM2 z#rf|sww>qwU*rq~PcSaLJ8Ft|cJ5$#`klkOk z?#{!p*OUCmDqzf&-&{*f&UaZPc52|ZLtw%m(!gyNP3#^gFv2w)YkJ|h5^pvgfKnIi zQS6Ik{v#+ykR@DVmPeN~COc}k6~;4}mYJvd10`i2iyy0k_!gspIz5p8bfUX#gH9 zujU})H@+b82`w^|n$jM4gO9ykSi?9-?5&?hzEmqdKMGI0<0i06xMK{lBEfGfDdBxC z#n&Et5^HyKxyygB|8}+8P}_`Jx5Ce!{{=CYzqwZPY*Fy$@fqV#%qA7(8)&|KgTu>H z?MCHCq@s-oqni6hI|KR3pa%7RcXn3~S$C+kOMtHm(Mgaa4uOPbPrf4(Zgl+!S@o^N zet`$F;82wBJ{3HRgsBH+=~+~@xSigd6lDy@zd#oXNAM#NWy|B(Qh$W|G|v`Nw&N}T z4WR?}sky!LdY*qS8b)=pr9kmK`Yw`}tA_OHNqr8kD#jU6aG{HRBN$R2PKikU2J+&w z_V11_o$1sanK{467H!>XCUfDKsmE8#SDn+kJGRD+&eR&9BpU{?LO@B)gZgosr#UM%VxW|yul)2@a*Di zk4U&t;|3jc^M4w6P0VSQ(9Cpv{pRl-erXzd9tg(ovtCL>JGVqkUG<*x`&8z?^CtTf1gTdkxt{dZUP<3ZLVRKP zE04mL-meuT1o(0q6l;(97e{XQvW$yXWdo82Dt4xt$){^P^tWwkQXpJZw)kn6Bk074 zb0hvPGwKU7ntI>!vmOv+P9E#7qPg+IIlZR7d48W#F@>d`S+QhQE3hmnEp_%fZEB6) zouw92cxFMUTS~X6`ISYell?oKLeR`W_ZU*t>J_kBFEr-$rJTvec&XbA#bW7O`e(z@ zl^jR0A^##$`70U2^pC2SaL;z$;rFl;lEihFt!H-A6_3uF{)TR;brYvw3V1o}A2V7; znHF;FD1{fY>sgP#c8U85!|Y(1d%r#Z`jC7z20?U61BP>crMjnn)Gv!vS+iMlSzey! z4?$I;M>7H}g8rFS;h?pr`AY7bzqC8!M7!uQ!bg|WL>!JzW$ zK)O0DAUF|i#~5PG*msU0<=%+#MCkn>H1X0@Af+sy>I7T1PKaFEFOHgy4iCcuTx#X3cJhnl<8&3Sw^=V z-?fjqIg5f0M1l16&VA%2|IfTzzBpdbiMq81uh~^i4+ZOK+qRFa22$YtBJQ$2hSB?@ zO^w&{>{q7YyVC_JH|Tn6##Ax$?Y=7FpunGlMv{65TARXfcEqE@TlC8 z7V<8g`{%v4OFW?ko_iAxuagMNf?4qyGZ?%ht+)tk3V0j&(jO;(x&g)MT2fGPV*ph( z!`E2aXw@$G^JzNg2&U1SgWe(9dWzbS_fLbre;XY#j^!i@D2#qSl*t8|9iLa1-)gEa zE^xTGx~kdP9aCVBevYjxD{sS66nV70f7UTWO+267D@8n4>Ps_cG3<|}_fIUYwDDH` zF@eUL-@ku1Zg5hksTosUDt0rb)bZ$Ij4(l?`q=B^fX=wy_kn{%WwEa6>ns+N&=c)Z zgdrkyic6|S@UVq#dCf_ehn&9^Q7D!8i+G*CtX%WB4C3SBdGvGd3NO8ztNMCu5wp<# zgqovu**mhX09$;kby0C;trdf*Uh>FwBkL3+c5zi{x%DuLVtDPha;+7ez!dB@6vN!g zz}h3Kx&yrlb+)G0FW`kUcWTinim57rcbFi}<9B3VrwH7V)~+I5owlYiblgwogM<17 z2s`E0HYt?M8ZYjgYA@C`;6BLufy6S|71ClMU%J|~RQ0kxOUWj8f8$3?Q^o0mV4sfL7 ztg&p*tPLyL5^@{|Uex8{qn@`DS>{8oJBW-Et=Mzqi=dqQGU%m4zCBp!c|opMj@F&W zjm%O*VCgFc{3e7`y61pc6;AOA0a>yWOrk&9Oj=S(u1vG%3lJH1k4Hb+|7CEdx1&Es zO;~P7tSsBiMvFTL{9KJR!v6Uyaz}!!okP@+pAwTp^vXQG7eCJ*Nji)=h>uM6v#8-D zRWN$58(BSCue@**X;7AMib059QRX=pRF<$CLC~f!j&=xW8>XQL?Hu}ZBiaUvnY#E& z^>aRc=ngYkB7847**aV=XaYf$bz*`9YI-PILdlK01m&0bS6A9gQV5C$pFgko2IULW z*L)~T&ezC=Lt$A&Ej+Z80j@mfhq;--2oPH3{mDeOJ4Te?utD-fYL3_P5H@IP&Px3v zOyD#@e9%PTC|dChXyHW1JVw^_@PXNokg#%gHPCT*ysVB!pOoUrvVxINKEvCJ{2UbF zf|b*(-He;qA^QPY^kWjviMJ*4FH#Bj&6)LIB_&LfhmNc{|H6bMahz(x|6=-Z6-0WI z;Pd^0P%lJ`y8$Q0LP3Q@jQas6yJSIUJX%wKS;24`PD(u@=4r@WSA*Hl4HDD*rfYDxYcDUDbSl3xLH_uG68i}z0BJ0EAY?pbRvo8< z)^uQCFb7KXSXHlam#@Rhga{uj{#aPwEop-3Q`CTZ_?oS%sQ*{bBO~LAZdgmA= zwdd`LjEts)SqgnkGpNzXLpwW(t~75o3Pa z^RyvT1x$8{teBszKBUs*ihj+Qefq^A#3$l=<@<35Phz_>&0>Y}c1jZ?cb*@uzeXL`V!{L!I#B96cIW z?aWZ$H>{rXoQ~{JCdL|&(C8!Z2l;;xGgw61zhNdwXmt=`9Z39(Um69T1IT19^$wVb zW`I3ZUTUZy&d5i%K`Gr}P%p$Pz=r0-sKxjb)D0OTgHxtu^yVLV0niEkt^5?MG~TE3 zxAJxjWCr6xea|C+wGODJ)(AfW#AFpl#?*f+k%H~2;AqtT!}|x({3|W6N!F1Xy7;$k zA&5TGdIxO8h1E;wz~Q{2D&s)Dbr4yF`K}JmF)a_WC??{WcCH|R21kz5$EcJ8u)<9; zHq;1%UeM8Wv|D1KPp5g&*0fe8ARdlb0v#X`FBret)%zz%LVfc5YV`m08jps{M7;rm zrYpS)-20c2vfJ;b#NUNjKt~iGIjJAc=)klr&>9XL6#^!Ip*ryIlI{WE4KxhgS^pmr zST)MK@Na5ec`%gQLH0lT@UNMoZx3?la*~;LitTyykG%kh)&broz}Xf!TKSl+1?8B& z2@U`MVO;9qc#x4venPVbFmXl5@Wo4lU?H5op#7xGhpU=(vb_KXNw9jF zrWR_&=C~|)o06R$QTHQgiCF#J1i#ty3S~VS{m@J8W}z~3CWM72 zlIkO80N~Gm_SaUL-9tzTyrCz={=`v|VPr)Vc^OCzYaC#T%zpO8y?V!2pO{+^l6}2pNy9&?~HKr^{%gHS@aNIo)%%`I+>M7sJJlHJ?mA{TY{wS|1^Qv?*JeX!s(9Ar) z)hwt49zb6nmA7@aQz!W+a`5(tK(n&Z#ij4&r~TIWAEt3(sOQhvyl>Y;xb(Z9_6^Ky zvpH|9ZYw-RmK&liCdFdg@(cm?(zl#(l9#mRHmFiUDDmlFiaXv)DSnDZT)A~E<%9f{ zPfz?~emD8mKkG>KKr526bo>$qT=`_gPC*p|#hSm{qbjT7ieiIG1q`dbiPc*%4L_-) z`W$8WYsjdl?7Jk3!d?B1$Z=tF4TMl?(|!8FnZe~%9;KL5 z0*#$BPd~;(yLnOay#731U~(6y7@K?-$Oo3eCG6z$I-lAfG)>=l@IW)}iAd~}#5Ax= zFDQ?q>0hayRI0dDTyAoND?P}z?aM-V7O5UBazl5#L8m(kbyzHGdH#5P?^bWAdCz05Dfq-unl+NuRh_h!k7a(&Bc9Ix6@+)@$7vl?Wgv)mcRxbA3vq)i2oAv56-7}o~Mx-j8**dcB5Z8NPim}SF*=| z*LV(JNO3U5EO=_?35<>O$Hk|wU#=z6Ev{p@RODe&N^rNss#W$wf>hhM%-ufTh&U0Q zTVfOw`ztF8qWdohBuDjAeG*P@JBNkZFOU_fe+UoK$Sd7ISN@(bXq{7br2RN5*c-_4 zb0|=AMxMiGgGc!6vT!_qOJ`d*+*tNG%Og3z?BW+u>1%h!gbSTIo`wB@E3*$;T+;B- zq8S4bHDxi$qNa*{2e0<&3MrZ4azE7p$Y_7wn8(^D&dS`}j}*nG?hi#`k4AB9#rPn|p8OsGwUrwEq$9e14(l4S2lnUl@`7-g zkUWGFcJk2zv$3)to}C7nn%Yg(38_`Jx1({;j1#PxNQqQu&N!J}t*1Dd0{n}?>MfaU z?D>bU>}PB`6^CN?Le**q!9R3xO3Q=4uPGiKKRrC(Ofkb>&<$uv?GP1>8qWZv}f=JbR)3yWuGWz?uL?aNE7Qc5*=Rh4Wwb zIuB~8d-f{g`bVGIjw-m=OUDJk-lw+xJZ--1e>ylsIx)3c>peK`0%G!1)Vz91S*q$krdMZI6 zua`7)NOD;p?_p|^HrMk;nWPuD&!lipi)5+h*&J4dO`4@vKc~frYa>$A=2URQO%7n7H9Sq!{Gf-D`9ech9 zLe`*uR|b_4z8cG2+!(BiQ@)2yw$OHm2{!w7$&5$Mrx%l)#&rj4ZTLLo?}G^1KSE!x zl&z*YqqMuiUk%Gw`V|4c{AkynkNzY7FT-~)r2d2(NB$jIfw)v2wc)YZc$+&Ig`FQW zp2UVF?PWhUq1)5Qu`q&q^7q}x$|V}L%GJ)n`+oR3J0Hf35hR-C zU*%X5Vp2V=ZbbTqsb%D@$*qPjOPAYzhO`_cks&(iV)A9LPUDeu-P#r$A)-uW4}a1} zUT4yO>R_&S_+L$R2{u{)mzbujW^HY}b=%x{+Bw7;u*>&PF3|bIYFvpVBSoJnQ%jJ? zv`Q67Bi$Zh`T3hfxT|8zEcn%dmf1X$xH!#9V5P-)FnY>CoRO$5o$JM9){=JN^<+v) zvtcki)R)cm&hl{PSeUQmyBspj@Z<1jL#bkRN{xfy&bQ(9g^&9cVG2xmLQLPz(%#t# zEeT}v;Mrc=(-xU6l5?UF6ex9|w>>dZ=i=q63E|1@1`NgT=x+JN7x9*OQbH26H`{Slc z1?{9j@0JqHuBDyw+3q^QB1}%&8WO?%FI)cixH4EZJQb7cPTV5DMT_G5vaFwx;}=b; z_p3Qal}!uKb6%E29Y0!NR9GX2*dm=VLiAjEhlJHc_@jlc5iavZJ;pK ze38J4=v|U5Eh602C6tq|ktct42?!ZC;y-ZH9$gP30!y@uQQP~F;$pO+gw5t8pSn%tKv{oMox!GK3a7S441JCmG$Kx@WeBqem zb_ViXTZ?&b&|8CumJsx|>@t6=N2hhozwgBoR(o_9QJH1= z_=j@wFy9Vw)K|D|Hg86Jw_`fMf^f85Y_ssYRA=NoOWT@Lqc*F%;z6?AJj zt+l0vmHG9hlyggK3u|+;YuL!HZVd*w{H1PS2K%>Thl=5k-6zCD$WcYWF=my)JU#*dT)cQSIzc)_iw} zqV;8g$m-HE_6F)?-Beez+15IuiNoI3%Bokf0Wu-=^=cy?e;lU$a`KZT#^~(MRD9mV zTk7j}Gi3q1eP^|&s&heoBlQASdo9xf7RvB<+qH$oxeY7?ak1Ja2Og|7JONLT9kKp0 zzfEY$>yd4HePCY4Bur(lR)(|h! zb~n=sgt%YEM6?j+3(qoulW%CqLZa``Z9#DE$W{G1T_k-{i&wxCu-K=CV!=Z6)a#ht z`W?e-QHW!h?{2W}Nhp?+DZ><>1w@QR?tEh*08p%L`x;KbdXtFt*nL2j!FV9Njf zo%x6Vd|5W7B#$8vr$W6s6`n_#WN*RtnswUpY``4c;LxB*>g#XPy8|~FjFbVXBb}+@ zErjCN5T>_X6^}H94%6%XT$ZRrEEmtO4|K#%q+$Y}cKqY`P}XkzaiQObdb7MiBY{vJyI_2A+ZIYMp@KEoR3EwXw0l%oz?oUM4~gnb~9d@uwKn&U%XLDVGOF@wz~ zgO85=z<)LF^?}hT5%gmUJQ%xn4)d#E%~2l5f7R~yks!7>hMl>?f5^7`kY80?M@ zobDx6^dt!;**|dF(d%hg0NQFTiA68gFt*WW$?5riJ|c)Z@!r-R$2wE7-<>gcG!_#4 z(uEN{2b>qe{BLRt)^Y{hhD|iTDO9&&yWC^2qO#vz8M!TtJP7*0+-e8Ha4e+>d7sVl z*E@z4ftJJ8=bOigXkK=9Hg;#H6x*tW>9p)j)@_nv4R@q>-sPLhh3SIB<(toYN30)o z)gFd8SN3ev(Ek(DX|aag*wF;!nhyj1Zxf;j2>)kN|H3{}D2sk~(~fhDBiI!53SDJC zw%soW3&Yoj{_bthytJxU zmcnrIt2ganv1+W@-p%F0jW4V_4J~hOBDR>OZ0Emj1v;cMWf$ zh0z5A!81g#L3|E$+D)VnLXU*zA4%|(R*G(T))DL%>43@d5f%tr9dSQ2*9W&}FxJZ9 zhf{1?Ei?7Fv&C{HIGz-~^}80F7?x+tiXG)n<8uOv|Jj&-b0!9CF`dW8RoS1%pMm{# zK}M%$8kPeItpa5xJcepW{WadmbOz=Cej~8cJ7+yGV%7jdCbepIpPG*8WaBPStg>w0 znS`z4$-z{!Dc02YB$dr^B6Z}cW~$CN@a@t7l5N5JXXf3rO7nWW82oHGKXKEa$+~fz#+7;YhT`#gnyVRwi0+WW8ciJA>|eMK0CJlm5#ax5TM!vzxD}8uh)+*imzJ}nuR?(a^rTI)UGRU>Fg!x&Z$RIn{v!Zu3{5zR z0Vn)VzGhed>$(3w3j`(7a{d3x<;d;3M&371(IP>{l zEAJ;u+WPw&+xioi0#k%tRm-g8tC`sM-5SVc;K_}UgWNpZb=LyrVd`_qVYUH3pOQ^_}wmczJs( z%!d5ge*14ddpFQ7x>kW_Hh>7@t9eRY@8W#b@ZQKa{ZMwr6NEM9GcqirS|o1^kPhT1 zT9Z`}Y5eL7jcBN@_8iEIAOsg0*Ylu=fG}A$NljC{f_=yACQKZ>hmyzvhxz?3?Ua_6 zcMvvnuepMrxl8jxgC_T9NqLXo-wTJ4;M@w^n?;$JesL3{Q6AiBXT}c=S}+!5{#^i# zV;F7%v#jyYA1v(y?LXfwLpbCh@9)nPXr18PjDJxu2t>JPcEKVDf& zIRCK1gLh!`w9~8IEUk%&m)mvPGmzLVt}R)!=-O0PHi60o8mx77@BFVOxwkvtnDG91 zb+fEyWpUqa>23RLXLz#jd*Vln3Pzungf=O=$~|@hP^YhJMdjfDzk2C0m&snH)HEn^~?Mv(RW{p^bhpCVT?zf5i!rLA45|kOAC(E5gv=d1JLe3UP$RyPyR$ z9sN}s*p98QuQwuKNHD>@Myz;$U$qu!Gbyu~fSqVnsF23fGNbWKClwjQ5_lln4lzV6m+0$NRh8FQ9Equ~H>hERe%I7VL{wCe2-&LMFw;f^MZ z+BDFRW*i}bOP&(x^b#WWrLcpA8cY-tpZCy8BE7O7dhFBi${-e1xz%LH(aIT#v8reW zlI{A>bQBV7A6d4I{^hl-^q}uZU4)rB`g<`WcBCsX!aDa`A;u zIz{-R;hW-6bV^J1r@xi8Zy$xmX9+f>@7r1bUakJ}<5X zS&L}JWJ@lZP5<6l($!T8;A*wXm1qx352vq(@qMBHNJm8<+Yyo&$6?s*R-OPW3Kh<> zNvTN0W`^9zrI}1nuUO*2=1U1)rQN5Jud)%?fD7%8WxZ1u`{b3C)JzY@c-7&hW0V%2 z%!%^RG_3P|sXoh-ej=7Nqd}nVR8&KZ!>3lOa{KH4K-wSlCHReSxC4{xTBV!pUc%_U z2(iwkD9XHO$HqgR`Yf#s;m*o#t400lt?&)90a-)gAoQ+qlk!_cLubR7j3+7e(H5jln9;MkrrkbW@KfRx^E| zG85pWIV0WzH;>GEfO6*;Wm9gT2tP(gc21L8Y6+LdEc zqw}U=Uf%3twz4z6(!N=!t+IJV=Vx7*juhh}?ZpC>j=06C%1m?YG5j_yU+FF<;tO-Y z=Px8SOK_)b+QrQ~5(r<0)>6{~&Dqls;_5%P%xvuK&PFPG9T?*HPKAh2DQw8jp)yMG zT~$D?!UfVjo)}3FRG?8UGmQ?-1v-Z(6g65s9TfL8kJUe+^lnpT~YT}Cm}^=j-DzTuC$B&$vY`~q?ht%3%ce?Hhx+KLB zm%sTP@pOw1e3-uC2zUr5lF9_h>waqQF8`HhA2z#o^Dd<46d(!qi3dPU_@Xd!2QZUc z!A}ACUlj5-4NcVA)lEn^{_vWBcLXuz9_m4FKilxN#0F@FP!5Qal>HxL`)?aKWPtGZ zj~f4&!@rE^f|>W=a}bLoNNVu4@$DKQ2W%VjTtw9E4RATQXaG_(FhjbusbC1kaV8F^E$4*B`nOxJ zUD$7yy}bK7J4Hd#0hCZV;8NRP;esXJ1*q5qYlT2^NjO|57XNk&|3^|kuqNQYXc$Vm z&;OEC_zk%Ex1cjA1}>?o9H~i3$?6=OoJkcWmZG}RQeo2cOjdIOoF}b}IMpd6zvlA! zG`8AgP!p*;_pr-l(iuz}fpH8hIQ2rz`_>vLJ zKvCti#fY2!G(CYo_T23qx}F<~9FStj#p z`jf~;8D8|0xKb7t>YUtrE9=TC<_LH7CFZDjcQvnOF7<(Nh7|QBjif~P?EkC+EEUAs zq8VU#WDEdLs1~peC!9JxEFugqKdk_NJRj0;7RfUoLVp?oA&;osBIZybHBvQ7NTFPYwtQ^^lZMNr{1X(2<`F`~052s$z%ysd0PnJEOcufv5>8P7Nxmsc zs|5AumoYh#T8NxnMJTIUrG1Y%qBc&SLt_^?A<-(1XdcC%0Lo!eyh6CvosmYgAzD!= zB6LLK3W~42=zmE%Q4*#iR(MP-a#ErfoIWaXS}@7LP*!d9*TDRoP*!pD*Wmo_P^AJm z$R4&HQJx@-eZAp$%G0kg#~d22S|_JiaP9U;K73?LMj7_7*TRAxK?A~s(E4nA>V22n zFyEsWcXt-xFS(@TiIs*{Xl;Z=VGGp!D zkRqetgyTF#Q>Hkn`&1amq7z3h0>{q@L-2~dk5_g;{8tOgx z*>w4rrH=Ex!vW3_fenB;0T9j{0Wl|fyJ=Gw`O-koDEueTI?0~2e{Hqg>)Z6x?Ku$0 z{x)5|5DiK20+G{ljTCKda<@o2=~oD<+`D_QFKF(qoQKgDtt_c?VJF_RoGwSprcorH zmu~NA7@NbLeCR-W+*kb;wTpQhFm~CpTh0-?#=1weN=DQL+H3M1gGkZ=lXy8lvhTQ{} zvvaqL$xsuT?Ih`C05g7Hz?eE4Gm9iXgFYjY?IeJQyqLwzy7GFLFD z%|Y8SA93JCA<#qPX#kV|6E&aDI?qmxI8lHlSe=!w9P?xllF$dC0zz6l89W0oX^w!N zn^Z$bMFWved?i@n@5s0)=rUehB$rpLo$21cQ$5*EkL#qywh#2R6;EhnaNggB`l`Tg zL~F6lWC*ewwy=2S+@HE;1_dC{&U)nwm3a=8gNUs@BNq+0#HP{UptV!%b`_vJ62Y>nb~2_&%^ah(O0w z<$kngT32H}vv6ep2{kFhE0R+K@62H`B)*~z>1JPYbHQ1{a$D-x6tj6-I~+aB+ay7L z2Oh8XMb~n}=YXu^#60*R5^;A_&f-#0QnC1cHc)t2KLL7+yRLL;BDY@l?BrsCN|el_ z4@mu6ws-`)uVxPu+We;W4B4_$YWP@_ZRW$h!6HQpTxr9PonHjO(<(}Ml=rOx3wv(4 zN3-@e%Q<3#vVoCf?qR*uh;0$BNvCe%jY-){PORXqs3F-6zcy}9^kqD4p%&LKyOF*d zzch>mWLQH=m1q_nfp5}xgbMC!Bwlyac(x5nyxwyQOrvJ>=X_RxP<51_MdFbgG=D*M zJJ3#+D}viSP9vKq9LA{nu5+qRrAOqo`Pt(IH9}S)$QLdm`3bPyOQ%&f|qgn&}OQ~8O0aV|j(2gbuI0pR7N-zgvA4>e>YHYh9YrAsA z;_oQmpVS$qC0BhG$DA7@WvWo|za!4eNnAXb9d1cW9J!GYH+WUXM{ku6==kbq7;BNJ zc<0!=v_L8$N{Xe$WI&M5;|U~jD4^{TG$@Hgp%7LjXZ zH+#~?PnI41eNGWfiWRUI&H)q!n{y-vZFAhWTmQ$_h|4EP`#&){(bo?c-oFb?%lw_y zp{*#NKvYSlLc6QUtu6O*zbzo=3E*bl0)+6r|BWAk08ao2vBG-0`~U|2u4Wyb!^e_5 zIP%zM7$$7~xsBU?ouVA@hs#A=kXANQohPlmk#aIwS7IU^~8wzve?4%u+zkfL8~^ z2ObBcPK=Pb^o-k@vGVPx^L{SyMm(UPm}cw=<#ub^lxh zKoF9%KZcHgn-_nd57K{}yCWH80XEef;2qfs!hb_+^S)p8myZSiPgDo9-}6d1$WhV~J3DTIfw#0<5y%^?ss|oZx7HLc8+8rwT2!;2^QdF)?k( zku;z-kjTeH@esP{T32^QYSF^refdL)${-Szr0$+twh%PI$6`=!Eu90o9G39~mkzRz zRgDIESDlLuv6&otf0?H(WYKOnPlEv6N+L+9`(I)M(IILX8LBDvD!j6 zBSvjEaYYl28NxGs;wYC9pftxr9Hwl?v!?;pe5;oKLE zw$I2rH!E6XC{)^cHTpK0{9^)GD`q$*SI&es>i~bdKSqL(0sjf|QKarit*-<8(fsd2 z@tx!B!?Bdk2`QklUc;ooL%YZ^gy%1#rqsUQ$SqvEhs+-V$j5iUP)CEqgzS}X;#&p; z{HG^J61O;o%eP6bJECsq*qkF*e55eqzs}c;z>d}Dt=!3f^P)PPkVm(fPqS0@$M)3L zJaUTl`rA5Y%^wf|eFfMXkG%nie-%aR_5(2Zmq)t!0D_(XMd}z6(rv)-p2uBJEKCya zN!{%8f?QZ@SR?a?DZ0?j>vmlH4~P;Ve}^Q^L{Bwh9S_bs6YhVLOg4X$Os^lnFhZ@+ z>UGAe5Ghp8|4s;AY2X6@A`JT=J^Yty`v2|xpDE$_+4~B7#9T@OAFr4k!1RBDhN;NGw!p{T-tqU?nIylzkj^x} zr-m?+>*?-3HQOouSYI8qa%{jagM6O=QC;ZnEYJ5jo8C0hKy-FeK=BF~jD)Tq?%6@& zMb}Z`TJq1sy#ze>zI2qN|1-e91M)^nZ=(LaVYPQ-sp(>U-#Oye|9_qP1VaCsM7rD= z?ym^6_sH=Ok-mSeq{%kg)=YypMIp^39d+}{?#vrIl>F3@vI6I`wp3`&4!i)73mNt}D>&Fj4=1*n8`sxYp+17k3Tr7D6DnySoPn?(QzZ-6c4| z-GUR`T@&2h861M^oFV(o-uu0$ZvE=sI)9!jn0eOBS`Wj_dU|z#`_nyAPA26IAi^r} zEfi)h8Ma-r?&4HgDXs2ej^{2wS4XbP-^;NOwLm01$JlCh7ESUUkE(~ISn3$*y7UZ1 zL8{MO4%xJ)iZgmxeZn(GQ&Kba`Ae0*4Z zZ$kMK>w{s)(2J{KxvR!50y&aB#@4JTo_T(v8hcW?Ce{(@6e$6`Wm&z4VKv#Brk2o7 zw{5L#KN^9781LLSGmnz!2{fxI#Bq0O?hoYUPfC@>)$7uEBWzka2F?O_+iBS@Ld~aoO#fxN18W+EE0-ANL~GPZ zy%9ve(rfEfAxFG_UWZ=;+O3Cn0M~_u2x#<0x{$FR(CHv8Im!1X?^Gi@goLxcD&*_3 zL|S;6xC17ZI7LogJe0z=1MwG_Y27e$t#O`;4CEpQ`DB->SbzMJftN5p)!4xGGpG~I&^@@uw*-m(*7$F74E+1i zjB6y}26g?UwGhH{ycxQ3PKgvf!4Z~q{mAc9vA@lHn$MvW$K66B6SYE=6;38E04Mt? z999wy*DDC8Wo(VGGpte=DA7VG4t^@2PJR9UjsyPrKUX`IAle_X!Hl>*s8A=hM9!P^ zwIhPa8n&pMGrgV4^J0j6<~PX5gYH4*q&Cf|4I;;+$auR^7m3q{aJxzPg{z+XIdZbU z&L!G02hkKmt7>hg07-_PfLYQCyp;rR5mzuuc~_?E4dNqoV&#~8JeRKeh+|WHDJ|5z zhK`y>4pAOnTgN8Ii8`4Qn;`ZZMP$Pa&^1jc%qf6Qo|%r{|3;y%qf&Wp_aCudc-qIH z{2mqW5l9*NFXM$Y&=G_*2@7`*yV#08g+LMc6v%Y*@%+WN4Y(>`Tg)2%-taXfB=|UK^B}QTL>&i|D(5xaTs-< zAu-v6C`{vcR}@JFzqx#g$_j}=vzX;$_Tc8ugJ5&9MMfAFCT!btuN~Z10TlAZ8ga#h-uYsF6aI}Xh1i}k3C`UA$#W7EZ!oah%&|OqMu?{laQayupQU>;vi@H{*crdx$n#_!9SPaI&jCr z-T&6zVFN`FK1=cdDTrMuB7u&E~ygrRn<^YUDq^sy*8}eH>oDc zW`4x23q|oDtOOT2deZDu4|JH79vRb7@eA%ay4)jJ}JcZ{$qEmjxVT{%!ggH$rrf~3pE@X0Sjp_g?E)oTsIKQ=>l z_|AYa+6SZ0JlIoB7?df*AeZ@a%n}6fPw6vv{bE?v5%-LsuZX(KL&8r0u&E$U%O0o8 z%u3v4ZecnXLv`!a{kN{+e*tqy#r=%0m9~P!gO9m((C5g9zEJ6}wSL5m8|;NU`w`J5 z|M2UvJ6?H!l!k%jQb~7l7fo#9Cp?>-_T;r;Zw(764Y~qM161zrOXh{J0_(kLA|0c$ zpM@>-lVqlzx^pegE0oxCd?pP`(&HCPtlP?@0H_xy|o(HCqS8^^a zmi>L+l`oa6ji`SO2l)7K;GUuoEV!ki051@gFw(r6i&Ky(0;yQ+AV2}i_@5J-0Ah(& z6BKOj@dL*Zo}UB=UoR`WXvWQwVVOLLieZLl-@%v+!K1@B%&m!#07_e*?1MDAb9(dvYC$i8lfZ+w&rTQ`s@FQHt3V@Oh z0>mfPM#FLiM0&jADTwE<~wO;b4_ z{+M{sTc8aTpo~}_M{E}6lNj>-iEbOd;-a6d07 zrzP>|JaCnC3Z1-e`MB?oEwECLb8FFGf6;~wTE>6BrBTKcb?Pe3kaaHt8s>jq&u>S+ zHHM$d!Y<{j`4U@PQVWm76Vt;sKxDFFvJ&tO&;!^pm%qx6(-X@Idz%5|Fue>mV)xxg zf)plCwzn0)Y6Z&z=`S}pJBY_|tZ^gYw>M5KD&slw1N0YdQ6las&3$jVch=~OGEw%r zzK34~Es15NkQMOmw$)9SuF3V>%05gbYBWr0bm}+A`SkD}EKq2%KcF zkS%+^(_0dwX-@DdbRPX6LGFJiDgby|XXDZ`BbH=^aGn$JphLvpn&ih=G|ufQ-K|QV zE@q|F(-XOc&r@Fy$9&CZSV?J9@VMrd7ZQX{G;g0IndRM{eTiXBg;6%-h9y2k4AY6T z*He~t^-o+_Yz=*DffQfJ&8uHMQ81#8+OESrB#9azn`bb~@o{{@e5y7!ginHxEz)Z@ zJN)JPoLO0c!5@*>DJpohuvf1)30ec1h#Rjc->}v1^?4&hoiG!c& zff^wb4ySnJY=$JyG!QpeIIhU%W))`L?<$3XjP~~QgK76eQ~U!VIe zrhj`lS46BQI0I6?WZO@j#{cp=0=pL)|JVgdaBoM>S$fb#w>Q5SaH@S_aFq$LnoP-4 z5Ic)p!)~X4CoH@^S^%;E?L+OXPZ^eD}I6 zq6dljR$PtGzLp{P*1$7;P@$+bFguER8TkEK;P0ExmK(fB-(k$y&_-QS>goHgI*(8_ ziZtUU2G4P}&*%*=lHXt8G<=~d z1R&-}(w@+#PDegHbYl1`it8FUe3=-EBSkZ+f*}rp{p6jtIgv<_LnyQhM=g=&7?ebz z!^NCPq0CjANTJ2$D2a+&a@+cs%sjD`;9;H}nQMgF9at?R3UC5%U&_Bpkm#(?@dbrB zg=$CaO(d8pw19VWliM9chIEC+E__d?Z%-j}schagdU>QwAuqp&;dx5wrlZYP#WUo( z!m#NQ(Sv+5k>X!BVV1#v-Pu;%oC^}0>nhnUUPe*NS~dEms@X-ASs`OwC~BWzT7Q*G zzf%q(b;Tb>>@tg0y*BPLGsT64r#Q#!_l*loWULe&4j4aXy!mMGLreX<1pklrQ9}~& zDz30U3*=k@bEbfkae*`zf<^dnLrRd~i6C<%hv!!=It4My3c)_Rm!o$n zLuXh)g^?qRR_nyc815I#5g17g8AH1 zX|dEj#NCiM-gn!loN2DUlbZ@{0XXVOWH=Ka=jGbK%WruMTVBGg7cG-SJARzFs*N*u z%oUB4khUCpM_}=SvEXkBzDfB*>g;zQqg?i?Pn%0^2a(EW(v4NxR+l6fLGhZexg6*m z`mp^_-u)B)!5C%xft+pEM;VqI;PMy`81p}VxKWj02mmq&l=`CBATeeTm;4Z=at~{C zoDWzFAlaq-Nl9s9f+Z)1O!5&l_DY*B-BD8C??X`t!${KC8LboH6?Ja43koP;%B$Amo3>boD zceIc?`8HByns@d6;|M5;uG)tb_k7Z)eo{MvC5pT8uCFYdc|x4J%9=)_o@P#{K#2X# zjH=ajpT0<2eM7)d;Hq(I1Q~lz#OLx)<5!9Vxny$%I2%H?!0_(9h)d!zip@Abi!wL?TVMTi$Zotu( zC`f4(m0<_L{H0kqL*QoOx|xJ?_>p2JA+ABOBUZ_2fKi*^E;eBT)VG=qPVJl}gqQ<} zSrz*qm?bFzMp=Sbn1qo~G#MN3u}ahf^0jl`Ee579=k>tFBtgsy+h>qFucFEX!r(LV zu%7!b!aLjbLqJw2{O!UZ4ZJ|j0srNUbuR$XCmi$do-1PsiZ-b`AEY|jY2m|jT-rtX zp!|Wc-gW{mG-(}VB+Qev1i#?X6QG>zI{k=W+@;{QV7waWo+@*77VT47*d9ug9Ovti zxEnZN_@QCivu;eSVAY75(*0u|4~DnB-BZ~AeWvCy&7Ka20!c{jnUS8 zNkN2Zl~0$KPzQtW{e$TaLENXf@VGBd*+2LgZWmU3cURKCbMNP52$-%XwZHT9x*60^ zFw@ES6vxJSRR1HArP%a^JD*vWropCOk$*`FQKQ`FWp9rBym>O&G$7rW9+EtCLvoU`mC>*< ziN9-Xx#Jlop9FkGOO^QP*H#xPepeM*2JKVUQ92@&igem!j%KpKf+tF1rzqVwX;=*x znG+V$$7#3(5mX<0>WbDdFfb$kQ8s143r7==SQ-fxWB>SV0-j;~&_~&UHwl?04s~Bi zYcV55!l09Nc&gRSMiURpaDUbWr9(V}+$bcbaOHhnBct3W%)tJKGYV1yXqpG}2%ikP zt<=~J56ic;7aw4-P=JeqOe02^O!yW?DhzXhp2$Oe`C3@%&>>aUSMiJ5R+}-HO)0|$ z6IrsRM^ISWhsj;rNK+fiXSJK{T|IfaWvfEk4aKA?feb;T6C!v zk7OTG>nVM4lz<=K%fI>Db_8ReG)dN6I2XVfwlMb*?1S<_zWP|c9?g+_0}=PK!?|nz zcOq$Ptxd~(`Zdjtufs55O0e`SKYvcJ%}(&m3lXUxdH9jDWQtrNl%bn-o0z?S{t*%1 zX>-k|ekPb)gf=Q z^D3l&y*H$pwEpyF_VMR7p?C32=PS+|Yyy+UT zd=ySx9%qVY0Hne%hBZ+$q3m~Gj$}>MKd@?zs~pKQa!xIwe7|btzXnLCFB`uTJF{P9 zC2AOG`{6xp41g!u#~5~M2k`Mx3jT{)FvsnLxnjb4I3-q^1@g=q{P{{A7cSQv^) zvWN^z5GS{c8;+_pBTnP>$fHZwM1UM&XmoQHne%pOV@dxk9@0a6@9a&P;n8xSc)4rz zr1d2PW}4%HDN zkn&!Kcda^RVXAew zD~HSXV;m740)rUFMGl(OHDQB!8+AcbCL-8F2HL=W8+8rZ5bDVVZJ@l3a!SOabmNu8 zwUe?<9vOrpm90i|^iu?5I4OfhIYOV9Nd&ng_U z$i>o6SB*|L4oth%Z)yqRJ0*$TsGxR|qjp+gcd|V^0{^q&f!wrPc@x{ZBywtr+FZuB z1KJ?C{O=#9VVfKY<6=ebncoKqSZNbd@{FRZ-DA1m$pvbv`OFb|-ebEz$Op#MK%R!< zPi_r0H~M~r09x4lZZ3#YtbSm2`Gh8KxgVUx>UHSm?+dH=8IbWBZAU$WTDSZw-G(%P z6Z)E$JchuKdo;DpcZ?i#MD~?v0_kuAwAuDQeqARSfcPII$fCBiF2;>1InXeQ%cj`C zk16z!6^U_AF*5{wfbiQiV^{1ZXxo?*84?Lkz86d+Nug@s0t)pntM59I;)Cx%+Pqu4*| z+vx)je)C5~_@#L}Eft32qx$@BcQNOckiUJB=Z9t@HECe03o~PDJ}hxJ+Wvavj(407 z^Qa-Ray;6{44CHbBSh?VM015{Is)jP{|>%+Kjkg*MYKPN-+X|=7i)~XKVKBgEUK%% zX+cUpkkZKOcVVf35&XW`Kf|o~tR9k3TW3l<4{ME9p)$oEO^5td_}EZ9(z;_yLZ(5u6e9YIi@7DwiXR`o9^AA#aWnMb&vxG^ZCG^vkO3Od97AL|;5nsv(q zljAl#a?;H95Fgp%>Pl#p2(p@dlye{v%CPTph&*vtF>SM<4O=b*`W*~B`C%##w&3nE zU~V_i-@#)Shek8?=R{ah-X!VV7aGdX{k$i*Qp%o%NT)`$>wvt2AU9u( zU{Ydxo1NU%3HLM(=0;(kW^~WN(ClUZ?M0`6plh&XuspZb5QXg)zr}8XwnLYJq`6Bw zG-A(UPcL%r!#zaJ}61*9qpMVyGTjMXWaLOZaCJgJzZC&0FD- zb=Gs8_xuw(*D*I%Cxc6cnyu_8mBKcR+FWT9FSNSYU&31Z)%w|=ThuckO|Sxwi~*k` zTwd}8mwBMFK+V!}bOL3BL~U9ufDA!X69@Wk9;JHZNw~YnXGOwR%zDd+cfH z0`cuh^{3CH1NZM|d^4sHKkhbK-uU1D^?(5I?O(G9NG)dNzaE3Uit*`%mjSQj*S_bl zU{Yt749vHu=QiV`{&VB&Qc_$bVK1AiOnp(*;;;7I%HM&c7K{3b@+2}2J%>?80Bl!;m+|4VtYyW)bR{f z!pF>v%m*XpZwcR(i?8zDNq<)!mldyfay`l#E)kO|UCWUB$%;3d{=Kw9b5OPIYHsI> zoTMd5fS;nhPO}qDtb?pviG8}H4(8Ct&W_J}q!ZWMwZ{yM*x{$JA%*uhGeYp}oI4_f zNrft&Y@7YR-0WkUiMl}KNFeDVP+=GA@6^bvH{A3Q075Kw?m-y_ddA5*)Y@@HTl68O zC!)=(dtbzzWOW z;6j3I)&LmDQZf0F^;#h55831YpMU6muWw~s1;hf4Uj@WX+b2IRl64yH_aywu?bE^2 z$Imxv?G?qdTj;FwS2f3cEB&l-bl#9j5SnivnKSDUWp}3tw9l2!%)RIPxnvh# z^gwO9YF5flfRiO|TTd52WKaC};l_JQFvs zICgkop;EG(<)$QEldnxN_Xf2y7BO5?0T!y9vV{lchA()=nQ6yk<5V|Ny~J%X*x6d{ z!>-1jK3~!yA(@+FKXb&<48F7w@~Xiwr)z{N-|Sb9YZcll5%-FytH?+*vp#CIz2zQ4 z^nC5IBxJTkU8^VgypfiV7c(QsABs(!?M5z5jX_^`;Po)t7|*OV>O7qS@G_xUxe{g? z8~Q@Kk86|rg&pW}{QXKrXqobk(p zlamt^3z65ltDM2*^csfTRtby={QyTK=#_%z8wz}S;xB;E0)5o*XVt8lAEn6;DB3!F zdcH}i#kcP>+1Ii1qCGx4n{^YlhCJ+{On|!FXer!^BCa_7Lgp1Ua}M4RT7aIqa00Kl zImWpJG`bw9y{c1d#mGwKO~yj&o$_b%m*#lb(mk!XAPjQfkfnKdx;63F!f$D6k_B3= z%%p1?gh9rtcBf51v>4cf((iP8-Q*0`w&pc){1wT4ppHVUQO42v1KsEAhEnC!Y2cwr zHME`GmAqx~!Q&}{ z)G6|uXN2)s%wU67@jR{`x?$)lZ6#01d5d7uiklqoUHK*#{UO;L3uQl8-oqluJG;yj zZ`}dGdJgmOxLoy3vIsInG70o4zgSbU9cp1*I0M97fix18cMN@} zci(|yzmx(#735a=_kJn%mpJ{EzMNs7uJn*w2}W>aom?o^m3AsRaO4F1o1EseMis5H z$F-BloAkR%c`t@v@6rDH2nJqY!xsdwR#q5G*5-1|k~UfVlH5oUj{ z?`lkLD>4DqPs;1oOYc`IZ`SZ_Iy~Dx9iJ-K63$jxa5w)b+C`LXv?^DJ+6xn1=4j`Z z(YRQm>J2~QlOcW4;qq`DB$@a2Iv1HhJEoiD)U2ST<$fmV4LD|vIh(H7Dg5D8P^~%k6cwr_@eaPt*CHxDJV8I zS=WR@c6$?aMua{EBbNAbCQ9lrV6-mehFTxVUXyKcH!LA3`%I$JCP{`3QIZ%J2LPjF zXGS3Uw1FFqqS#AeGyyK{vxDZG0UlGcs#O9Yhaj?N5M^~1BtZwMS(JO|^%azVmT(F5S9 zuRG?vkmx`EO$35azRy8*WZ_ppVmrHm4yZJs*~x!B301d?{?zg5`x$p7JWuk*M>8R2 zc+&5F$Y{oal3}r1g&JcmgYBatmdlrZ!C-6TVNk|Ib!hgX54_7#cAs0cg2u9XGuL;| za`S@avmzs5BvYP)xR1t;&+z~!t24{3ukeiR${sJ+BBzXk9;){tPZw1<2n;n_-g>)S z!`Cf;CVDwebk_Gb@(qfm#!=-S#YCG${zLfj^@jdyaYa2t{#OEIWU-ab( zG_wDzFaHnvvSW~iWsj*~!KAB_%P!5QXd~;yy(Fwz?oBk*o<4mWsrvG`8dt~i+*;WI z9!z+D+r=)`BZJ-C8{a+a-gc+G`CWRaX zgcvahEP4Ax1QpuukMxQOP=n0=2o#*E2r7u(4iSQ@sDz&&*!b-GplDn-%rQ%b{I`+( zX$UwqgDUe3CMQdv_At>w;SSJ|K|5e?dNPXe+{`=Ym%IfJi+>&;(;D`$>{Kx9^aE96!$fal}tI=Xx| zkRxXt2rHKk{#gDzMgaCUtAAg^k>?lm9B!h43dXeV!{?h1Cw5pQxxN(ba^)dF&8Ba( zyT-`|HT$35*Y+z9d9_F0*FpXG3G!_>=DE3@b5Q`7d<-IjG9#sp2%JkGpeM_K@n@?r z^JphI`t+>g+n?uON^SjB@;zT^9Xr;APPHs<&urE~ZQ0qz1PfTks7SW+FV<$Cbzzoi z0#6X{eXQejV5@C{0|02hi6LtGfy3oU2V_=GYvcuH&2FMV-V$u3LwCFYRUdgFb;ZvJ zlHs5$jYdPH;Zo_sT)ift=`cA5R66?$}$i0>({)Uu3<+083>&*Yq(LYt510mk&RmtVH z3SCpj`rdX=y*jevolEH!koACil@@+ksuKuh4R5R5#rqpSP`MRJerpws?H4vu^Gv-+ zTr0*(O=>*Vsw-1%iB*+Xt)uSoD&W5gt*nsim&9qT7VRGE*2t)fo02^cW=HQa`}`6Y z=LBT{1;mvwQ+mY$gkG;?fq+$5x;LJ4ErH+gKPtz|r9n1$)jYU<_G7D zC$$ZTaD~e%WxAt<&Lk7gMg+_f*JtxS*ql5#4Vh85Yc>i+VExW(fBd#gHmBsFx&8Gc zl>-SJpT&R04*#UJIZq3!fN%ghY}{@*DrbSjidQWrhh9Ls7C%hmC{IUOdmH==s`Mz2QRjCsj4z z^Beznc1yT1p9Fg6|M59MhRle>?>5FI9DPDH$0FiRJh>T|ZChl}8$X60!28d)b=u_Pkt03HW$J9?EBv_I3>KZxq>pR5U&WJc@Vo(vQewa{@ z_4!Z(TFAGIeLsm9I+AP)(IM!pX6&BA^bn~{^da589?P$9h@pjNgx{<5T>8bDkwq!p z3tkp@AsR%{#6yr`s>5w3M)?Q=%*bSwm>(c>J70@iVZaRhUW;2{APjO|i(3Qz7>9&8 zh0$Rk4XT6f3&@ecd(aR!&BbsLf^xBYkixwBLXD){QQRYf#$VRlZMICTt!WoQ#Y3$p{xdD6WBfo}l-=c}_lUkevS}^ME;M zNW>h*2!jv6)oS(7-67pXGtUWKFowf3qGg?^VaI!>+*AZTvSbV>#fL?9&QMz>LPd6N zQ{#Up2$`v$kW1x8&N>mU%lt0R|GQLI09B8{gdnODTE=J~jHb_gY$_st`FtSlZk4J( zQazpUH!=c&`V#%9Xv8JEhIoG`ip5OT@OL>jeuqpViz#X*c*?!0&B{3U2Et~tF!kdPEZf9TLNi<|5GCd9pjk|IX<>#>~* zHJ&sWD+^qz0*H#jaaSz80-+4VAXccOT+W4M{4O_%CwYSeBQv`UX;k+xIKQWjckH4d zA3tgpN>0o8_y&g^L{1Qw?(+Q?VR-*XSX)eqC3^tl85NzDkFuUw1)s!=KJf4j0I6%~ zJ5Rnn?mkAg@|=5nu2WzeJ5VrSGI}!lVD<+^&%Iz>Uq86ugIOa~gLie6!@x2Fe}4fQ7UNOoM@P z4kln585+|33InQOCjk{;3kZG{U_Wj;7&O2?kA+{p_^K$i0ZGn)gO9*_#082+pwxGV znS1A5e^B8}BgTlHPR|{7s*^c}McdEFK9##{7$EYwZxknjv`x#42IRT~*opbM0ECa6 z|BtQP$&ECG%_Bcmg(_A@*xA{xdNh3P+>#*R?1bCEW~=xN?o`CJ7PcOk*0sb(#GSGj zpZ3&q52(tjNE>@P9LgL98<0+fBFNh-Jfad>K>+Yf45z6gpZ*ZGJ1Kl(3|WwuL`+az z=xm@lm3^8?JrA_I!X7yS-a-P7fE;Dlz;sX$*8SRg!S`=N=?}tJ8RK5`h7N%~{y(oa ziOv5G&_D%~;6Z*jLi9eNkT)6<#Vt*5k=v$%>c(NUp@it)z{lC^2o7c3u$~ZgX)V2# zxxuDb&lwwG1*R}DW0s+z31bVRJVk`jGi#OOd}`Uua*t`dqOJ~7l#sb?ymJ8zgk>7$ z^t(mdvIV?ze4ur(v-7q)b82t*Ut5zyaf6H4H}q#8AD`th4aXRe3gk>#*m|1|FV7e# z%j%YuS@;GGJQlkxY~SM_RAO5Y4D=cO;Xz){z;HhRWVPJo{wtfK4R|Hu^E?rK692p1 zM9<^9{~J5~AB>%50>P-+l(@#k?QFh<9bJphT+n~p;Rb((T&-QKeC?Dm;utRJYkjv{ zxPy_%FIO=;OLJ?3plAhajn?iKA}1?O(* za=|P~MdW1%2bF}(k(MyPX|{ns_~kqwk-It}T{VQi@QE1CUzNRw) znxA}4Tmpwfd`%?$hrN7F7JP@Dd`-K&-&*;a40vf8`I=UF{{O)}inovwNrG~ygiQVs zM4b50G>#jbA~_>4G1&ez_?&ZyGyPo-F@p7Fp{^GR9@xn=$m;qv6JQ9~GC7`Qf}(G% z4~G9afAtt4H1Rbad`s@jfhmY5(bqt|08+g-@CN0;dFw%Z^)Vi}g*l*B3=nZ?4(MA1 zDhH_;ed;A1eG1j^X`HfncgR}7Npv0?_Kh8^n*KVa_@ca!B|pmKan0(co5(M|38`ns z4uN-GBvZ6u5nJ-m(UKOIB{{NZ2aoAck* zDI|nA2s*_*Tf5O0W)Rr@<*RpdmO?)!g`fJjYC~8ugoBE}Y!_{rr(yN^xo^GW(@NeyVdqdmJtVz5 z^QX{~UlH0bbK~oh)V1ai*~lB;)*Kqq`Zte^1Cpofhg|6}gUPk7uth96@FDEH?o-p& z!tJoe-JerA*3*u$OJwaoc1eXopcnk`IKXDguFSWYk1O({5$Qq=SrLHYoP4R<~^yR@+V`*9*nuXvhTe~oj#Dukt?Ma?uTX+4*791Q501swO zTXh=3s#*;cmM7vmTqin{G;k6n(ypzRCgUIw+|ZnaCy(*_EG)4YE@oIF_yxiNBB(O7 zFHv}iJFG?=seo}xi6`;}VnSA2ET^j~>4E{%tedUZm8gR1<0y_A-mb&!wm{LZ&!;IY zl~*)hTvUjeXwKQxVbeT`Ej-K&p7Y@S!5))MmuC zu9@I=!uC+5IhCWc8N*E>0qOFlS2h){Zd51tO&?fq&kzM2tFY^?*P02WlxkNWGN?Da zZ~tB{pe}q2BGV`_G;W~Qj|>{0|Aq2_%9}wo;tM?fH$b)De5#?UX!)=;l6%XYUqc#k`a5UMoj<*q zZZ}u9R(c&n_k1YKtj3zT%yzuKKAYZrsU;cBO5vk?+&C^jR;cx;P5UlC%*}ta`-6(5 zGu7S3)WFnsj}0%K#gX|XvxB;w?YZu%v9~HH8-W2q0rd;QdXlTo60}8Joq~ujN+zBr z7B|_|_l@apJJ>G>G4Ok^c5vF50Hh~{M}dN(kJ~5?y2jqUbOI(L z@xC+g-2N(S9n;cTi6`L&1a0WS=)OsJncNdm;5WXw&$s2Qs-wNUqE^#=P9gDr+9*ou z4b^ks9f#Bk(OIx_c)8*6U2}Z7w~?=zHI+tjqdGn3OK9p{4Nu>ZUnu|$rB3^z-KcDz zvZPi%yKN1$U~ssOzqKvramZf{Culc&!?BdvgbvzgfhC+^Q+@@_Z7bwBwGY{W%GQs^ z0rEz63#JJp1xELIvvc48>m?5()G#wPB_RDW9 zz;up-g^IK1?M{ZGsHQEU@en*r!zO$-n+Im`#;6Pe)Q= zab{`vWI}I_1uU>=ppDU*FMX+>O4v&z7sIeK52zv8>_7XK@}arg9|K^=C!ZHHMq+{H zFbRiwG)(izQXMp-iiQXPL*|tz{KVtBxORNOlr4iR9jw$+>jBn&zB!m2saFOWr*6>iZqY!$_u+U zrmBUL2K4W;!GOJ8+j67JSp41>`!oi&3BZ7t=$GlgB;{7rG}oG3U~%Mh-nb~ccrr{f z|M#m@t$LkI;B7*)0{D1*U+CvALl{&&qlc;I2qeX7>tAuH&kc0IvbkFFXgLsn1R07& zu%|(6I4ksVin2nseqpu9@WR58Ci(I~PhQ};N z9kuxLE?kC}kxGg88=B-D3EyI0 zNXo~TmTQ-=!hg*-(zP5L(wYxlp z`~zcOotY;w=S^(oRB_tjoLBYL2KJSwGoXoOhN%$lXh8{i*O0AQ7Wv~ARj+FM?UA6! zaD`hZZ}V1jpm>4jxm|%uCA3fNy|hY4a>M<1K$rV15pZC><7JKtT9>J!cq)x4JN0Rv zN0lyH*K0GJ(mk+)=aRYVt7+Ov+F@@(=jH9bf_t0wqxeM^aMiVsXn0$iPh;2yw|R4I z(T-N{*Tj!s+k;UZ8|OO?%cLhn1906`T0nmN83t}_TLO>Xm@an{aNlP2X@V;dee>eA ztB37naoX6yag+{O325eUx3*?*5OM5HJqWGvxw@`})qT0xQ%eq`9^N*59Bd^#Qx4xH zsbt8i-d^t48b9{&d7;}TksxhY zs$`5=oE%-Cx#4gt!7jrSm{EAk#_O~l?Q;((ctMp2pOJ4o%;GxE!D$R3X*D$%|1q8X zgxZ3v7gR6PTHEj@XJ)?d z9rvl>*X`IHmpN#R1Qq$EFXv0m%RKP=Q+S1fX>#ZFDX(4JH=YBGxJF|4 zk7qr{?o=yY3)B*sK67~$R>Al28?%Vl;S+f=>$1=0OJbK~;5*z-3_lJ#6}1+>pUJ*97_0(*AY$f(@kjTJ>fX30?EkGBEntbQs`h zS2I^xtI)Uh>DSB`t;RNi+g9HvvFAGhYXUd+aJr!J+y=9z_RtfI$zr0L$@+0UKC8`? z?7NNX;clzE@Y9*Ojt@IkATKieOxs>^7+TfuA{{QKfE`7X-!wO z*IXV;bFt2#>V^VotIt`-ZfPLB;#I(Fe#uiUtOj6wb40Jux+Y zP#x)`nb)Hw+DDsXX-4i;{NVtihez+e_fQAf&@IRvlU4p-o#^g|as#bRqA?Y@zvpPj zU?=oD-wiwFdn0Wf62NJgnup@a&Bxt{9CRCycPPGVX)B*^F}Vz2#me(y{M!?)bAA`*mkGlF*H@ zifJl9sXUX5FH^lY5LWoDbgm)4YtFFtXC^mnNcPcT^N_)O7wVWfE{XLvae%9-D9Sq0 z`OjJ`M;C;`>Q9ME9{AKG!xG2jr0ue_jB6AjN1Z7LF8-iWu(Wu780m^&-KrhCYtvTdz*TQ!BZeD@nXoU(N68NNa?c}&9B zOY@SH#8lyLaEKD>jQ|CKIP0wXkIz(Vt`BNcd`+VZb4(qZ&@6ohHC7|^EsuLv3>x<9 z0OOi!@!i(^z6XV+&QHrX-EFNe@%PzgA1-~H3UJB-Z?2n-y=xy3h#=t7Sxq;9<1 zPu~=A@5sB**zId}IBqOAn|5RxeY#PrI*05+?-PWa+*d&@HT6-Rf`_5bBweq>u)n=@ zZ_Uok6zX<}#AwZt5o{bJw96P~;I`XeWqpi9c&vO+HxMhIjNFtNrRP446Tl5E|3G8a`HA zTBlK6$L;YDDa-AlX(x!w)P;4n)>X?L!d8HfW1wGw24`x&%{l=!6yU%wR~U(>9hdLY zTty?=k_3Uv?lIktOEM%FAFeaQOp;7Yi(eZvR4JsoQ!!fSqY%y`m*)>+p{PG3xCmFM-BUBon4_ik-^f8gYU&bJ>Kz3;U>Q!L+nQ|}OY25>*%05)wNdrq7Um|&<; zd5mcl<1G&b_qM(nZ>zf*((CX(T*)dX`D{OOgzj{ zFqsPbJourgk-CS6!z|-`dW_ns(`Bl*b>PLgpVEifNX1Z^jmG!Ze>hTr>pn=X*p}zI z%}qq&zTY+nzsuieKB4oj43!8tEI_aKtDXeYy1AzMSe90YjbP)4^N0elD_DTv=_T@i z)%Dg zoUWy&hv*^mv`>hI&Rm={Wpl_hdQ^quVU5?cZ~Hw zE0^yE*>LC0Hrq<+US7j_*7y#8yOdvx4q!tA%4R`mxrBG^oo7P=-o_i!l-f6yjm}}U zOZ(qzgzmW7I$mvg54Q?3k8z=R=5(+O*r&SglzaBTVHjGkb92D^3Gfe-$@2oGF%2}w zBIZ%q$XN5xIdiYuQR4d9=uMZgg5)`Z=hyvXf{aY&O0AulJJKowWl!)G=50pP{nYCw zO6h?Zb$Ph`k6NU4H%hAgsL9mBY83N~HN5?vmDGiGHm`j7Lpr%LTBqsL*u_3q z&>0_a3AlZursD<7B5LGm7feCMwztb!cgfHv?M6|L;-}5QQ7J04H7aFKEGGEzSSCGk z7^U<(SlUbHH&$2~x($h8#~E z0_%@5>Zh&eJbeuke*0Z!RrJ~=Q%yYGPv{`vjt@~H2cuF)_;XAu{ z4xG(uTzEh_VZG`vWU806?}%)#Trm$2Rqr=<+*uYN=f}-f)>33VqObWyfuBwwB8=-K z1&Ewm6g|J{dDb=Xj(*iIJNT2kjk!=GLh~jUUDQnhSt_jl*4JaKzuXsxZ?x^aklgZ^ zO%&16MtPL0S`U9wWG}o|G#0QK+NKma6u6$u3xllNni;pjE`Cbd6nI>{kpw>Vf8l5( zyjhVZeY@1DPPu3;aOY-lZ*49vd1wP^;dmbH8&rei0ogv@EZv%9X9-B?Z+@P6L*eghbe zIUYXPny_8Khw6Cjo;510U$r_GvWx|=(sV6Nu$l<{&IP-XIs1eu4>Kp{ueS($w7R?f9lO>-Q9X2ks=zT z?OAi2(7H~$>7~E1U(dj~UzJT@?{NLFQH~sCmhx=T(^4D`dU!t7TCL(dmg~Z4uHxss z8%N&Zl8n-HnLAo+@_0y`tG=sd1I@$cZm8w!fKrj|;LeDq zC{JtyLl?^Sb7uo^(L&g=e|eHDJYof)aFtj}eM?6}Z@Cj(pp>xTmzW^a{3+4BPB9pw zm=)j|hj(beHPce;=5rtV=WuRyWd)7T`B}K;re_n@JoH7FdlUUhmp(RI{19H0u!8&= z?bw6yIKENXODL0()w3pPShnDXz9f19^)b{D_!C>7&GKheD`b|@oy`1WyR#Z(4y{W`AA2nAh5N(C5LQ^I zM3V`6x9ddY?E7-_l|wB~u(#3X$nyiK^s{zqN>6cFj)$3k%?cV4qK&md=?i%fNK}{TaoAAY&t?V<`u=eDIKNO#b9J@gHcBgr* znA$U-oY4v7&CH9Qd3Tmo`?{lfdiTUxpW$W zVFkQh$nxfWyFlq$a)KTx&hzGcmMsUm_nw14M`ta*K0m+e)7oRWkHvGA-wH5#fX2NO zHr>U#konU+cN@Jr((azji|@neRdz~b`MIpSpR1>q>-ep^nVTW@6@-Kpwic2ukaT#u zlDhNHk{~UQ{rqs?^VZsVapsd-51%mS|v2{2(Dqa;=(+$i}qz1VTci~NL zJb>_K>EKh~?t0WS*%yEnJs-{We&2x>x3T@mRXn#H>-n`0ce!zui@?hF%5a8AAjYHD z-rI1+@WXKTFnw$CzSS_|-W&blUB*)entjxmEB|xPSv5d*{QaLP$x~!uS*^VOE%s6L z0GTBjFgcQu@n|zxiLEnU1`EH8_D7)cVqg?Ui} z8+eN4w0{SaT~pDoK8e#gn%PqRjsjNMQC@s?-l=+r3EO)!TO`**+a0FJF65ne7#t`s zdf$OY`1R1$Bbl|qcQ*2(KXX@Rjmw?F_OJ!5c_Xvs?wvhd4>h-?tTLJ+s~X5`VOb01 zF?iR2;JkzLUa`g!YVJVEa3G^;F-7*TNaV3qdhew4u4+eSjryG}epfY{*^>Cq(yoVU z9LTKIyMbJxQE*4qDMTtlvS;EFN2y zcVM*j9rT<_<&<{kGMR*Qna%;Bb0a!>cL;LtT7NMCi5$kN%@Kl&@ILOtjmk0EO8-|N zj_Ge7#ER?;sl}S?_Hv+crr91x<#O;|6Y>SPg|@JA@Sqb7V(bt^#c()-sD}RRbBc2X z<&xs#8BE81jQZ8)Zuo?5p?QK_TMl3YwxTg=+Fn8j3wA;?+j*g9@GoBaHk*yytj*kg=JMXPsPHG~| zt=+aJk2n1B~!p=%E(d21fjF}YwWDA z27iZeod<}lo-(xF%BrlFJr035b@P>HmmLJ>WEHmc352eP zAq*Cr9-~in#oF$*_fzIx^+c{}Wk&gvD;1u5kE>IsoK+9oHv-z;H_yAW5{Z(TF+p7| zltJb~b0Z(V6FL@vWEh^5=`x**99LxyGv_H46ecy?nn7qMXJ0CkrY@daWQDogQ5a*5 z{omo7$*jY#$g#%Nwe0}iOwVPugft=Fpo`Gw-1STv0HbRYxl*Wm6MrcI;LuD9iul z31&=%yK_S`P}u+UPpy2?`QH%|sFeP>rtT5^nGl7izUx2`q!lP8a*UDvFTd0?zOnzY zSHi@8fh6t48uFh|S3Y9N-4iUhrJV+gfzUkv|GucTI800m=W~t|{}nCI^{GdvR8V7! z2Z)CM1p3V(Sim@R)MpCg7fT;{R8YGz$q0b$AGofY|L1Y%juYaXMy(`_X z_)$*v%w;ss!(RL``&5CZ?qg6)(nTd1+1m+Y^$bO8psGr58bCn>l#)go=D#SRCwW{a zuyvT$n-^3w-|QvMv1MdE0{ZZ0H0N+&mxE4B=f>o2GD;bAcI0sKya>Y0pHDVfLPCpF zPM+S0Y8~8($_3FOX|Ww8&bkZD5xN4-q0worH38$^4J#fG;u#z)w;CPFEsk#rU?WJ=ZjQ+NYtUN&mkQzE1YQE5_TOGf`h}Xfj+|DALA-UR$wlWc zI|%FEK5aAkp|0%R9z=OiR{id5hZ6cUJBnY0XMncKF(5z8jBxG($JRkKp3%IWbtmKw z$hVw>TYbXw%qr!(h`l7bfJ*Xs&lc)Lu}Z>X|t zU5`!&*8FMh^s}JDNU*27W*aO3%oO^#!Or)3p3L~vV!F}1fmr!0dg~l6A8xIa^L*&a zF&~Aqtmp+;JgGq-JLR#x z?J(LKUI#b(<{>IvCza)V%epA7OIg;c4;G?(JNisJ27Fu`U!~lpOGU6qexDfC> z6^$%#U%4|u>!p>_Nq_#NXfCD3FO|}GJMv4zivygML^<_x*6=_m9}WTxF}eN|~U>XT53pnC;34eTFgd)$sd9%nZ>F20H}Y6Qzc9z-F4YJR<| zdGDt#l}VSHM$5a zxt5^ARZo2@AA6r;(|t2@QyiDCpBpp%0qHc}v`$jlBF(ukyNdcvUPPt9?&Zq>N32OJ zbIN99YkLApVw1qz_VqD`=x(8k<;!8mQ8I9u8h}FCcgPvt;JSI@DK8#7B0!ZsZ!I*U z;0-*9W7at4Dw13vm7d5+xOVdbwzF-r+&MuCCqT=Duj#vo37T#hy;B!>$k1`HnB4i&6E&1Au_5DJ9N71zo?WN&qIjR<N z4&wHngY9V}2yW}cbt3tu+3PWg$L-?bP9z~i0_xmR;WX%(44YmDcqstC+19dG25&|C zygz(qC9MHCf_%JMtdJCH&x5E0i98%M#5FYkIt=_AkOj8@d*cWGECcUR<|)D>_}sok zBLA^tp!R*83z)ya?%)X^lX`6E1-xDzT^s%)B{W^aKtm+u6;=?~WH0jay3f8_)p;y1 zz1p20V|k19f<`3Oq-e^FH^J&*?Tc}tOL@)?%q%q89DjRF3*(}#`VHPH-C6pK)Gs~c zEXCjaF!`3<0TF&|*o_YB zpCVS}>Ucr_3&R=l?L67Qi`o3h)Q76$#*d@w?JyADisz(}@a^>SULk&{|DMRaWblva zVSvVuNr=hiPI!MySTS&2eOpDDs#DH|VA1QaXbTut8vj*AC+T}ONU5L$5>Hl=X4 zeFhS!6{~jq<}F;j)#CK&jNALo;{?zuyp`b)@0{CT-8@ER9xQv&j4%(W&2W%ZoXeK< zaaKw})N@vX5inc=>K+pO#Es)OG@kxdH0&~5q1t5B8?ja-g1rBBUR!%!94**Y_8oUh z#<60BOJ}pw;W8|D$cp-LA$l`9LEs7cP-!Q5C#E1+4VMIwT2yJFi^Im#&K+- z)b_dw<|ps##TYW*mFUIV>8cn~x$7+u)0x4D0RJ@%<_boDek!ZJa{C^WABXEcv!$DX zWM(OyFP!>LB$N)Jpf^?g8wBcbr&Kd8(%}NB9a&Wm`}c;N{K%-l$@Vxe{!Ie3LfDM(R2_Eq!n_K#Ai`&9z$ zOh&)`9OAY4lt@~DXL_XiDXPYjR?mZwC+S*Ziw`NaIo7 zm~1qGhRYCmmXFL;4Hjb5%d#@Wa)GiJ(Da7DTKWa?z~sQ03KHZoLlP5^$?xnw@GBUj6KMN8 zuf^D^vK9cmOkMy;s!Vh`Nh@3g6fKs&lINFan!U$odOC}|g1jj0#c*K~Vz!?Cl}*m_ zD(mLaN;_<4xoo|#JAEind2?EX`^hts2wffeyQumO!lqXA#;DEDD2eqTbmu)sjO7Wt z06{y2JkT+20a~}H0p`eE?8i4x;%?fq>{*KfI35d>^`H|DaGs!8qgNe}hVXU6#o`Pm zG<(rXa=rHk6T{-=={r1Oo4|GTaj@2XvjZ~l-esZqEbbQ$u6L8wQwC$_quUChJCJ{d zwrM@+5!e(zsS0^di4iY{AT~%?=}_Qg_{sfO&9kG1ev*BpA|ay3=|? zNClbSxAxlgwx6OL{N|e(KogjdmDA4DUNSrVGTSKday;hD(01*ACKyj()jrv_o7Ar9 z>}-bQ4S{%d-9B0x9d@<9><}`7(wwjhMJI81%*~vOjk*T}2>6QbRc=6KkJ1ytxr@<8 zmSzC=E#N}Ry#?~PtgaW-4O&We_sgdZ1zBBb_%DAUfKG?-?ip2Hi0s;AlKdJAsDkT) zlGQGuWYLQZ-u>LYPO;kaX0M^#E8*UIAQ{+hwav4e<%#;r-*UVi(AhMf{=@gt2O&^ zd@Z%z9&j;<;Q7&KyY?4*W`a5Yp(%mNNvH7uR3MIv7G(|0+Rsy{4gI6iCA&zc?7>h9 zl=xZ0nqu`Kv@Ir|%DC>2IxLFq(#xD9wv904VEwU@Ec&|Bt%i>m_gG?=sW96v{%m%= z@9M&oAO3~!d3 zuCq9LH)t2(9-X5GGAA67W$Mx{|XhE6*@Ahynh()fGl(bZ5(0OLIS*J%L%+gIvvCPozxFa1w-O?=@^ zF{QP2qbxLRK^gwbiJIKs)!d=Oo!XpJPK7{*cE&M1hI6A#fCp{3j+s6a^UROync)Z& zn=9UNE=AWf;-sBzhOBLE&~21cT%NXEvP46CI*xjs%Q&>GZT6oX`e>WY(^b~%myE!4 z^xLJx7T*32>p!ax`G&b}^}S0|=_c|h`W`npD`w1C+fWYG1RCC?5YxmXS!Pq!78^(r zA{qKyrx}Vb)-b=a-3!@07V)pPXYj&k@(?=yHm{A)@ttr=eqlhnPbSCF3aKBhMD3HZ zRER%Y2GsKWrTeZ5hua(P+w^f|4@jF@7@3-=5{^csIsP~no zHgO=HBtf26q!G84Mk;fh;hCa zU0~mZZjAmF$PE_HoeAW0R{&1B*;b811!m{?i%k270)4A5;)Bd)m1cISeB@ zu4}sKwejq&>M#Dg_m?_2UD@+eEFa$1OR?F_sr}qpU&{LSNC3znwl}^q8P_Z(yvRNx zKL#RP#gcL63*yIB6}a>W;!N&TFnygqj*`~;`FiuG`-cDD0P-D=C}%~6B?yNn zZ_mP)_WrYhkHzhYcXag2{6`scd;>qdRqR<9V_c0CP6M2m-EdZ#P_=-T2-nHj8vbA< z%pFZW%Q%4VM2e{PjXplPj#I~Yv8C?A=PvOwEDqw#JMU%ez5Q(+wLHGE# z;XnST%XQLvD(1HOEmD3}(_Xx4P?h}sUZZi9Pg6$8*nul}!w*#}Yk|syJKmRRX0t*D zzdRfe4uqp7zi@GS>LQ&))Z#bb@HNAyFwX_viqne}tw*WmG6@ww&*7srV2xv2Guhsh zBdaJ-7Bpd>BV|9Rdj|=j@gGHULch^`Ns8d|>*=1lb)C4Y&N9Wc#!`-n!=!gtgK#T_yRHZEIc>3}FVMqchNWfn z1H!&AMxI_L1p=Taj$J2=-QEX%T$d-jAR*LH-+t)ZK`k8S=4D#6+5Bk^W;Wa&%2n*5 zR^U{X&!NE-2S1YR-*nSz!*NOED9g2{j^z(oQ=frXrse5$m%~O#)HG7;*OeNv@b)0R z=o6QTL3YQs>;YB!vymo_NY~?dl;xxAjET(XL9UDP=h|hVawU$hRf@m#S%MEO#t&fS zy4+-njqeyiH{w*^gADpoh_BKjYf4OJhjCpjN*s&N4${FR;ubE}rBUQnsZ$J^J@{#d zsb@#P2B=U(5Iwoln`P}74~&q!p19O>fvnZ9k;4&yn6BvLJAnG`HfIlg_@vI|u* z_KxO+@qWz-DJ4R?eRp-Ep{Fdve?rAD8Av=PWyFMxj7}Ml*U*<25BDvyv~tnk@B2Be z#201kb6X>>s(&U>_r12B;;oSltC_boH(*(L`Sk~ZljPkwouB(uPRGNQewgD(!+m`> zp=#mMBVhF*3rsXlv8UF4M;owmOIo|#S!g8yA7jI2Lp1d1@8O;YJ745K4QXd$?LQQr zV97aovXWL6D8CK`c^lANU&O69hNX|s3hTSGE?V&h{%blK(o|J~K~0QN@};uWoBQnt zD(;3x*)ox>QHetAGDGTqyi_FGPRepk_4rj9;@kDXv-vBz`2G}O)a8P*#((T3!P72T zdU{3VKbc-1N~SBG5Z3Q=m&|N}kUaO(2g)BcIHa~YD*!nVa0lJUaM7F)Awt)!wYbm9+mPW`Qjfxx-yHtRFei_C+Yp~ zBe$1dRt&SmCbPI&AeTcwN{NpD?81vD`%pkQ1o4!lsaJ zFiP#Ku{k4y^zQEQNfrwI(u?&8mDQ+(RSV~%H1>KpFU^LrGEg{Cvk*$ z(G?1(otlGH}{ z|38#pk|(WA{w$f3-5;(di>S{eh|gb0CiE?i{p&tVF{-oGQ4GhG_q+n`2(m>Ir^>M0 zTXruaX*j#O;uh|lr^i5Q+EbrGJrJGTZTQ=7L%elR0b9L2gptHDcAuUv@zPeFlY zRZ=8Fat#&zv9c%QMRCCAz)n&13&!tepDxr3=F678-jAJ&2CBtF`}~y z^|T|#rl+M`vQDmAq-=2ceR|dNsGFsT26%Qhp>?TRsI}nce?rU!z+K=sGD6MY+2%xo zG6qn1NFM$DVTQasR&8=~(7&ZeDacO0Cxj1UV^x&$R$&eTN?UOT;GiIK(&IWrYLe^=8bE6Xj_k`iZ;rS@jcoo9rh zvpblYD#a>ThA$JBgnA+wAuyE?L@3M^Hy@sGSOFA5NuM-GxZldIEGU?3#kw3{$0jFV z>LKnj%e168luvaI7AD8KOl*@fW>fqEyBcT1QFcz6hMc9(APm7<8D6F>Mg}#P-=X4( zb6M&sj5klritY@^@>HG5<(538ZG&02GOA=~=zskan!(FdxV0NYWi5O^)tD_z=S{#o zOr@!IjZ7=V0QXMMRCEjIM^&dxwI^hIr_c^BK{zn_nMS-F-UxT$ja9vr9^Sbid&oht zfVjpts@Fer1UfOd+r4Uh@Ly+Jc8dk5LL4Y1Y3Ml+<7wy5C5lP!7{`d|{*Xyo0exQGk3=eSDb0CFZ{LX&`N^VEsSiywE(g z#wV*6Y-+QHE>!jyYDT90(qM2z9BnK1X}{!ZT?Ml7%cJ`1`&7LKEq2H!0kzy9`!f%dTB8EAmJIHIrhck zWtT%EpMcZzU@$V9J<_qN)1-A}l~wNs{g`%^5CabG0iJmW0%t>r5eMOYgFM2p&~=e{ zgh6~6`@j&rx4T#GzGL<-x3vQS>8?i|*=ARyHZz%Hc2}XFZ4<=ARO^GZI;q#nfanqI zxXo-ysBAnauhWV;M+^n1)3$n=J~#G3JhsDKrD}BsvG-O18|MpWa^+00EO6)` zMe~jw*1zK=cJ}3$VF4WD`$gv*Ol3Lj*+l5?Nf!Mh#zHphda=v52c!v)h_h01#WWz| zM;WSY@CFI#!0YtyUS4Dz2%wKs+dLsTfgHmEPA;siR4oJNadM`JV09NCOY!8j-eY~l z>UIg@WTY|}Fi>iD!_OCMO3*UZf@`SC8F;WCNnEaFWUIW^aI8Q>NTKlqTzpG=*f@W) zD`5*3?ZUEe;fTS-v0<$zJo=a-hgzR_Gk3c}#pN~Bi5F?jZSzYF`RSXBa=t1@w3@Ha z41DJI3GR-T$?wE}7HUriK8KVhR%EV`cKWYDxB&4>k3>SP4;LO;Rrz`Jzenh_dA^>5=MMFZ3>6?zO-`%VA zg8!miJVMknaxl&SYW|~p*UH1Wgm<0LRrp7lW1@uPkU`A3v8&KUS%450qwM}h!B#vs zgZF(mXU|iMZiC<_aai@*gR>oPc*KQ61b`YR;T!8f^~4@WYZHgY%FM=e;_p z^cZ{WJ=HFI-j*bC#S((npeBI|D(=Zbfi*^_R;H+XOgdaKEaAL1gzC`qt^+mK_%1e8 zBIrlvFga4^MGm*Ly;2OX@1O5m`5>jh&hQG!>?{j{zwEP7>JH=VnJCNp>$L15iyzfi zBS&_au7X6t#D%p%zY|iL3NDdG&$vC`10NqZ+aX&rRUwl+Aqqi$CRO-k0R4m)KO@AwS=~K^7&2&})!Q5OXC2E_P$yr6mb4V96 zvhw;iMfKwgU(vSja?CBvL!~r1c~bo9ClcJ8P77Gstb4qN1DMm_2u6^NNQ7P z4Mn8Jq@2RKcuQHBZ~dXG#p;Tx!jg0>Ol#d|fvTbTI9eHY=f|*}b9}qgZm*~nd~lM; zzqyp2lfPo!e}%Mb`-UBTAN1E2beN`fsZzbZGa2V1RqsRGOtqSK?Y3S8t%YpA$j}?a zZr%gJp&fN#Wzat44(I~i*H;7Rb+(f&ZVW!R+>WY4z5F$??)tU-24h_^5RUmEr9`0> zG#7A#@O)A3%x%@&$ocRf3f(kzNScww6Xd0_;daRi$_<~l0QQh-c`00Ky2rEl(z`C5 zK{s{r{@Sj$R)y^y)$>tenfwkZB+-4}lZoR6@#egIF7_pq#yfJz@JI~j+$zWGC)T-> z&YeDs8-Skk$k1LQN4Ed6#bM_C>hDzPL}&bS%b01pD8VT2ENaFNyPpI*u7G#mITsFr zA|txi;mo-svQsi_v2@Le?y?u%kgr?YhtK!BP@74SN;`-9y^bFk&{M(i*|O+$>qAzu*t@+iix)QV;|?a`Ne0mx@Y7G zK&Lf?0>VO<(=_R?8g_4Px*IZIu$$*RpS7^(B{&G>mV4s^_C*j(Krz1vRhjV%+ zyX^Ud{qfSkCvg39L!$wp@`x#>(D)PRk!Zu!j*&xhCfPhU3)|UgZ*y*AiX0QaHxY&>(+wVwie z9=0E5*#mDPpemO z;VC|WBy2C{uQR4cc&T)155GuUDOj#_>@9_#27%bolN>r~ObQ&2;}6()yk>!k?kvAB z(5E_CwiHiXUA04(CN0jXy`a4>bed1Y>@|O?^@Hm>!Pb@u@1NaYzO1RDqZ3Xm3M_0` z=X>p}C*z!6&?GXk*mOpzM;^7>QeTHpzBvmnxfnF+J%o5!dpe7R!mDU>erzSbX=7D> z>UT1KG4Ji_$kEv*2a z2mWQdPln_T_kgEjZc~yhUV}59?sJSPo-2cQ(G*Yo%VM_Mjp5301N?%W5Es>Qf4;QQ zn)|ViAq=C0JXr0A+hy~@%~lpajs4P%O$&NdX`9#1LjGV3Cf*6bBU8{xrXGS6Yz z#hpnqr3WQGQ286fND_&h97*qNOThTiqWDa3&ZhbXeu$w5H&jpI$I|*hev~;sdFdL8-`AO zhmz1fiOP6*U98=g<*;|NHQw{bY58X&LbQ1@g~t|mhH55)@m7pRj^?dk30H`m32{-k zqWv$bV-5yB*Cp3Li1vBiMK*#?c5Z@-s;uwb$AAUd=KJp%PN6ETlT+A(ubN#-!L5B$zE^<(WmXwkRY8AMRDz6ElQH$|BI?w4 z)KBmPaS4B%H3H)73osR^hAO*Des!LtV#c-++Q zX^X#-cS>A^((VAppM2#>9G%8b3Y=-QK@=vW`)YP+#5QTiB5BOvQtabrhW@l#`@!*Z z!;A9YYUA?@!NT0*Lid_s^Sa5=u}V7O_aRF1fwygi#noTRhF!;;zeLYC34cvCWOXswh9|!ou?P>GT?_;XjDtU(|8-Zetq%q|yV)K2FP7JaIlAJYG36<2B#~xt(379BuE~ zYNqFBVs41EPkBbT`>*OZZ???001ux04^C=C(g@OIHAUN5xdA*=h<460%9{>m2*b`N z=M6gF^V=pW41`iY#~@b-Y1DioV)M!RSpUll&+SL!#;|9e&2ehC1tvO=N!Dj5az^M| zOk|>u@ajZ9>1Mo&*E?!}n+hF!fZAkjcba>Escz2RK>Z8!R2`%?J>@&tG_=qqC|mA& zCl#PRu{JAA45J~t57U98j23K6jO}i*n~bM{ilV_Y23@B1k;(6ht^W)sLS&6a=v%zY zx5QeI!M9%wQ_|rVq~t;;AAFZqW*IIAD?j9XVPf1J<7IpEs|oF>>5^WJ47|hZ0<^`| zEUh$_%r^#p&yC6Yq#a;?Btu8CZaVoqt}r2DbKXc6AA<+bHDs?Bh3{E}H(o@M3AwSm zwa|AF)HXQX7;~-Kc$l2?zHo4FNXQY^+{=UIj{?<59U9WteJnjg4Xoi29Nmvf5+U~0g70_k+2(kcQhGGO*7F^slpd(Xb2CE)hZg3pTg zmmd6+2-Alqvg#``TtA{~xI?W#r<`5k0DH%)P-F^l1j697EuNh@3~IT&$FoSu7uM3H zp?k?5med&^UV228O;~|K<5jxEnZzC4LspjkP>blvjPav}1>H+4$c=xbuxW#&BVA1& z{D>%gFz0AX5W=aM3n*O#=*fdlkI{;$z897xd>=3-^R6GG3USNA{O+j_{r=3`iw(Wb z(>F&f$yo0Gs;hI~W4!oNu=|5{_YwoSYWIS`sb_&UX6}OsNgnH;emCWS-f{>6WAAhg zMmQYxhWhPj_W?-&`KoyTM^zA#8w zoGToO==2qdZf}G420q=xYM025ESFyI(_kVDD5G$>sYSTPW$qjpL`PYr#_s0LdX}!4 z6y-M(52@PwDDuoa5nu{o(y|hXnQ`bNWm(o2!cuT<5ZyEB zYA8&Lp5;+zw8IeOUkJye5Qm;+Q7>$;CvH$s>)Ol8FgDNpv6i4pZNy5i5|mLq##H^I z_Xz?8X3UJo((U!Hd)tiofJ_||y(5CD=##`)(y}Rn_Ir$E4^xTLc&7iuOP!iJt1ViN z2pXb~2J5#X$I1)>MFP#Y=A^mDvm?9Fya>0x3+OmiQ1a4Sb-hcREU>Ce0b`A95v_v1NmAG?PwE3a4j zqR~~_A6)0zpR(O)cRNY5&N@(UIaIo7eJh}btvr}yOBj_@i=OY%@KspAt!uNiQ}(C9 zh|3AFsfo8z(_OY(4f)`X{ZW`?S3-gC^6fGs*DI<1G)p;5#`#6WIdSnAnl=w7=coIb z+DEy^O;hW?h~hJ&Lz3V4=$VrNNuN9M6y2t)3z9(-R?NT%dd(IYCyeHk+2qH!SJA(3 zN^@cW2ZlG%toS8V)B#=X#lm3uj^SzRG&a?S?}p0OpE-%^(T z0oMK{x~LRF+^M3e5`3A0+^5?NxyL}-f?iH24&NVN&8t0gJiH3ld)Gu5AY&~ zQ9(%-CXfNwMaRH}OJeZCI2IEvEw{eQ-pb^od6o&c!!QoPTFtj`+&7gIP^Bx|WhbcV zX*^X4#Uhiw<@~|Q$T%4fJ5E=VS)LCFK|8rv=x5*LC2zavuFY2|e=XC$4UCm0oLB4f z)dF#Tvsu;64|SiwxhF%r!c!{^J}sG)mdOUctzK>TjrzqTn%jNWmOA22)e>I9&w)X@ zULGj>Y!6%2v$oLDGafpXd7a(9GO;X|7-~hmzL{O8-jUR8$50<`l08-Q8IhI;E3KKd z`PolF&^oL=zyf=&LEWb4EWfFarvxTiok7oTH(#03;s-`I(f~~tI+*4s*+93?9~Ag@1K^GX%;vY41nd%9K@ygCF1GNEMKstWj?fcu)Xz%Pyaa8l1Ti?WK2ON_HUS!C7y> zS5yR&45D12031}A5SyR?oNo*113E&}HL&*&c;3459$`uKq zB;!TN^$(yVxs917hB6-2auaR{6vh>H5zM0}A@B{rBv}#M`6lf0D-ZvF*X4OeiQ~f{k3Y^Z1 zrQ0HLZH3NR*r~kQ>m`(f1Ixo%m!oWm5^GkYR4KrL72&{t;1+2D+GzvYsRP<+0?g5S zwa|MrzxU36-In>fO%rG%%C0$Jm=6p0W6LsME5IXMU#t4#Pnc!cK02JxzlI!i-M9j0 zzS-_R*lU3gR%X0|5qh7@(7OlGp|++h5DL0}qocstlSTOgxkI7yK62Y+@-6wT4~vLd zoaI6Hj!c>8#5v`G&YTELaHBPEg+KOvILLx2(H$+@<_pn|FbbFU_ZH1IV`CT5>DWbI z`A&*9`sK6NhfEv}6kgb0S^ixJpMYCx56_$r^l)A`uoezq|0jj%ARx?%G`w|*3Mgzw zLuCGYivPn9e@wilN5;V#)ac8E4EYe?6h8mo@$+KKDQ22gz_R2Cv`s&wj!?LwjzBY% z)ysG-*34c+Uc_zXE%EqD>PnPlS-@odM=1$*f1Bj_c^6LR(Jm1l*+Ku9Qs>}X<)MCzp8&^F9ZMSg`6 zm^4FxKZU+<9JFa)LXI~emGIeKB?pUoYw;hR)~{>RHT&`!{k8Od_4G;*>Gff_2nEV6h?4 ze(XL*U>XDFtWGTv9U9? cG_qr`G}Qki3G?}1-N*Nz(0d8|*Zaf&0R#j@R{#J2 diff --git a/phpBB/install/schemas/mssql_basic.sql b/phpBB/install/schemas/mssql_basic.sql index 94fd6c515f..42193efea5 100644 --- a/phpBB/install/schemas/mssql_basic.sql +++ b/phpBB/install/schemas/mssql_basic.sql @@ -51,6 +51,8 @@ INSERT INTO phpbb_config (config_name, config_value) VALUES ('smtp_password','') INSERT INTO phpbb_config (config_name, config_value) VALUES ('sendmail_fix','0'); INSERT INTO phpbb_config (config_name, config_value) VALUES ('require_activation','0'); INSERT INTO phpbb_config (config_name, config_value) VALUES ('flood_interval','15'); +INSERT INTO phpbb_config (config_name, config_value) VALUES ('max_login_attempts', '5'); +INSERT INTO phpbb_config (config_name, config_value) VALUES ('login_reset_time', '30'); INSERT INTO phpbb_config (config_name, config_value) VALUES ('board_email_form','0'); INSERT INTO phpbb_config (config_name, config_value) VALUES ('avatar_filesize','6144'); INSERT INTO phpbb_config (config_name, config_value) VALUES ('avatar_max_width','80'); diff --git a/phpBB/install/schemas/mssql_schema.sql b/phpBB/install/schemas/mssql_schema.sql index 06649eefbc..c4f92fa8af 100644 --- a/phpBB/install/schemas/mssql_schema.sql +++ b/phpBB/install/schemas/mssql_schema.sql @@ -342,6 +342,8 @@ CREATE TABLE [phpbb_users] ( [user_new_privmsg] [smallint] NOT NULL , [user_unread_privmsg] [smallint] NOT NULL , [user_last_privmsg] [int] NOT NULL , + [user_login_tries] [smallint] NOT NULL , + [user_last_login_try] [int] NOT NULL , [user_emailtime] [int] NOT NULL , [user_viewemail] [smallint] NULL , [user_attachsig] [smallint] NULL , @@ -613,6 +615,8 @@ ALTER TABLE [phpbb_users] WITH NOCHECK ADD CONSTRAINT [DF_phpbb_users_user_new_privmsg] DEFAULT (0) FOR [user_new_privmsg], CONSTRAINT [DF_phpbb_users_user_unread_privmsg] DEFAULT (0) FOR [user_unread_privmsg], CONSTRAINT [DF_phpbb_users_user_last_privmsg] DEFAULT (0) FOR [user_last_privmsg], + CONSTRAINT [DF_phpbb_users_user_login_tries] DEFAULT (0) FOR [user_login_tries], + CONSTRAINT [DF_phpbb_users_user_last_login_try] DEFAULT (0) FOR [user_last_login_try], CONSTRAINT [DF_phpbb_users_user_emailtime] DEFAULT (0) FOR [user_emailtime], CONSTRAINT [DF_phpbb_users_user_viewemail] DEFAULT (1) FOR [user_viewemail], CONSTRAINT [DF_phpbb_users_user_attachsig] DEFAULT (1) FOR [user_attachsig], diff --git a/phpBB/install/schemas/mysql_basic.sql b/phpBB/install/schemas/mysql_basic.sql index 247af3f2ab..2d1b4a5142 100644 --- a/phpBB/install/schemas/mysql_basic.sql +++ b/phpBB/install/schemas/mysql_basic.sql @@ -44,6 +44,8 @@ INSERT INTO phpbb_config (config_name, config_value) VALUES ('smtp_password','') INSERT INTO phpbb_config (config_name, config_value) VALUES ('sendmail_fix','0'); INSERT INTO phpbb_config (config_name, config_value) VALUES ('require_activation','0'); INSERT INTO phpbb_config (config_name, config_value) VALUES ('flood_interval','15'); +INSERT INTO phpbb_config (config_name, config_value) VALUES ('max_login_attempts', '5'); +INSERT INTO phpbb_config (config_name, config_value) VALUES ('login_reset_time', '30'); INSERT INTO phpbb_config (config_name, config_value) VALUES ('board_email_form','0'); INSERT INTO phpbb_config (config_name, config_value) VALUES ('avatar_filesize','6144'); INSERT INTO phpbb_config (config_name, config_value) VALUES ('avatar_max_width','80'); diff --git a/phpBB/install/schemas/mysql_schema.sql b/phpBB/install/schemas/mysql_schema.sql index a914764fca..6944a3d8a5 100644 --- a/phpBB/install/schemas/mysql_schema.sql +++ b/phpBB/install/schemas/mysql_schema.sql @@ -492,6 +492,8 @@ CREATE TABLE phpbb_users ( user_new_privmsg smallint(5) UNSIGNED DEFAULT '0' NOT NULL, user_unread_privmsg smallint(5) UNSIGNED DEFAULT '0' NOT NULL, user_last_privmsg int(11) DEFAULT '0' NOT NULL, + user_login_tries smallint(5) UNSIGNED DEFAULT '0' NOT NULL, + user_last_login_try int(11) DEFAULT '0' NOT NULL, user_emailtime int(11), user_viewemail tinyint(1), user_attachsig tinyint(1), diff --git a/phpBB/install/schemas/postgres_basic.sql b/phpBB/install/schemas/postgres_basic.sql index d530a85317..0e1c84dfd7 100644 --- a/phpBB/install/schemas/postgres_basic.sql +++ b/phpBB/install/schemas/postgres_basic.sql @@ -45,6 +45,8 @@ INSERT INTO phpbb_config (config_name, config_value) VALUES ('smtp_password','') INSERT INTO phpbb_config (config_name, config_value) VALUES ('sendmail_fix','0'); INSERT INTO phpbb_config (config_name, config_value) VALUES ('require_activation','0'); INSERT INTO phpbb_config (config_name, config_value) VALUES ('flood_interval','15'); +INSERT INTO phpbb_config (config_name, config_value) VALUES ('max_login_attempts', '5'); +INSERT INTO phpbb_config (config_name, config_value) VALUES ('login_reset_time', '30'); INSERT INTO phpbb_config (config_name, config_value) VALUES ('board_email_form','0'); INSERT INTO phpbb_config (config_name, config_value) VALUES ('avatar_filesize','6144'); INSERT INTO phpbb_config (config_name, config_value) VALUES ('avatar_max_width','80'); diff --git a/phpBB/install/schemas/postgres_schema.sql b/phpBB/install/schemas/postgres_schema.sql index 737f2f1f8b..ac24cff312 100644 --- a/phpBB/install/schemas/postgres_schema.sql +++ b/phpBB/install/schemas/postgres_schema.sql @@ -488,6 +488,8 @@ CREATE TABLE phpbb_users ( user_new_privmsg int2 DEFAULT '0' NOT NULL, user_unread_privmsg int2 DEFAULT '0' NOT NULL, user_last_privmsg int4 DEFAULT '0' NOT NULL, + user_login_tries int2 DEFAULT '0' NOT NULL, + user_last_login_try int4 DEFAULT '0' NOT NULL, user_emailtime int4, user_viewemail int2, user_attachsig int2, diff --git a/phpBB/install/update_to_latest.php b/phpBB/install/update_to_latest.php index eeb282545e..6fc4d50f50 100644 --- a/phpBB/install/update_to_latest.php +++ b/phpBB/install/update_to_latest.php @@ -584,6 +584,48 @@ switch ($row['config_value']) break; } + case '.0.18': + + // Add login columns to user table + switch (SQL_LAYER) + { + case 'mysql': + case 'mysql4': + $sql[] = "ALTER TABLE " . USERS_TABLE . " + ADD COLUMN user_login_tries smallint(5) UNSIGNED DEFAULT '0' NOT NULL"; + $sql[] = "ALTER TABLE " . USERS_TABLE . " + ADD COLUMN user_last_login_try int(11) DEFAULT '0' NOT NULL"; + break; + + case 'postgresql': + $sql[] = "ALTER TABLE " . USERS_TABLE . " + ADD COLUMN user_login_tries int2"; + $sql[] = "ALTER TABLE " . USERS_TABLE . " + ALTER COLUMN user_login_tries SET DEFAULT '0'"; + $sql[] = "ALTER TABLE " . USERS_TABLE . " + ADD COLUMN user_last_login_try int4"; + $sql[] = "ALTER TABLE " . USERS_TABLE . " + ALTER COLUMN user_last_login_try SET DEFAULT '0'"; + break; + + case 'mssql-odbc': + case 'mssql': + $sql[] = "ALTER TABLE " . USERS_TABLE . " ADD + user_login_tries smallint NOT NULL, + CONSTRAINT [DF_" . $table_prefix . "users_user_login_tries] DEFAULT (0) FOR [user_login_tries]"; + $sql[] = "ALTER TABLE " . USERS_TABLE . " ADD + user_last_login_try int NOT NULL, + CONSTRAINT [DF_" . $table_prefix . "users_user_last_login_try] DEFAULT (0) FOR [user_last_login_try]"; + break; + + case 'msaccess': + $sql[] = "ALTER TABLE " . USERS_TABLE . " ADD + user_login_tries smallint NOT NULL"; + $sql[] = "ALTER TABLE " . USERS_TABLE . " ADD + user_last_login_try int NOT NULL"; + break; + } + break; } @@ -1002,6 +1044,17 @@ switch ($row['config_value']) // We reset those having autologin enabled and forcing the re-assignment of a session id $sql = 'DELETE FROM ' . SESSIONS_TABLE; _sql($sql, $errored, $error_ary); + + case '.0.18': + + $sql = 'INSERT INTO ' . CONFIG_TABLE . " (config_name, config_value) + VALUES ('max_login_attempts', '5')"; + _sql($sql, $errored, $error_ary); + + $sql = 'INSERT INTO ' . CONFIG_TABLE . " (config_name, config_value) + VALUES ('login_reset_time', '30')"; + _sql($sql, $errored, $error_ary); + break; default: diff --git a/phpBB/language/lang_english/lang_admin.php b/phpBB/language/lang_english/lang_admin.php index 17436a3342..915c6648ea 100644 --- a/phpBB/language/lang_english/lang_admin.php +++ b/phpBB/language/lang_english/lang_admin.php @@ -743,6 +743,14 @@ $lang['Socket_functions_disabled'] = 'Unable to use socket functions.'; $lang['Mailing_list_subscribe_reminder'] = 'For the latest information on updates to phpBB, why not subscribe to our mailing list.'; $lang['Version_information'] = 'Version Information'; +// +// Login attempts configuration +// +$lang['Max_login_attempts'] = 'Allowed login attempts'; +$lang['Max_login_attempts_explain'] = 'The number of allowed board login attempts.'; +$lang['Login_reset_time'] = 'Login lock time'; +$lang['Login_reset_time_explain'] = 'Time in minutes the user have to wait until he is allowed to login again after exceeding the number of allowed login attempts.'; + // // That's all Folks! // ------------------------------------------------- diff --git a/phpBB/language/lang_english/lang_main.php b/phpBB/language/lang_english/lang_main.php index defc3d36d8..d104025d32 100644 --- a/phpBB/language/lang_english/lang_main.php +++ b/phpBB/language/lang_english/lang_main.php @@ -1014,6 +1014,7 @@ $lang['An_error_occured'] = 'An Error Occurred'; $lang['A_critical_error'] = 'A Critical Error Occurred'; $lang['Admin_reauthenticate'] = 'To administer the board you must re-authenticate yourself.'; +$lang['Login_attempts_exceeded'] = 'The maximum number of %s login attempts has been exceeded. You are not allowed to login for the next %s minutes.'; // // That's all, Folks! diff --git a/phpBB/login.php b/phpBB/login.php index 4844be3c2e..c8a572d7a9 100644 --- a/phpBB/login.php +++ b/phpBB/login.php @@ -57,7 +57,7 @@ if( isset($HTTP_POST_VARS['login']) || isset($HTTP_GET_VARS['login']) || isset($ $username = isset($HTTP_POST_VARS['username']) ? phpbb_clean_username($HTTP_POST_VARS['username']) : ''; $password = isset($HTTP_POST_VARS['password']) ? $HTTP_POST_VARS['password'] : ''; - $sql = "SELECT user_id, username, user_password, user_active, user_level + $sql = "SELECT user_id, username, user_password, user_active, user_level, user_login_tries, user_last_login_try FROM " . USERS_TABLE . " WHERE username = '" . str_replace("\\'", "''", $username) . "'"; if ( !($result = $db->sql_query($sql)) ) @@ -73,6 +73,20 @@ if( isset($HTTP_POST_VARS['login']) || isset($HTTP_GET_VARS['login']) || isset($ } else { + // If the last login is more than x minutes ago, then reset the login tries/time + if ($row['user_last_login_try'] && $board_config['login_reset_time'] && $row['user_last_login_try'] < (time() - ($board_config['login_reset_time'] * 60))) + { + $db->sql_query('UPDATE ' . USERS_TABLE . ' SET user_login_tries = 0, user_last_login_try = 0 WHERE user_id = ' . $row['user_id']); + $row['user_last_login_try'] = $row['user_login_tries'] = 0; + } + + // Check to see if user is allowed to login again... if his tries are exceeded + if ($row['user_last_login_try'] && $board_config['login_reset_time'] && $board_config['max_login_attempts'] && + $row['user_last_login_try'] >= (time() - ($board_config['login_reset_time'] * 60)) && $row['user_login_tries'] >= $board_config['max_login_attempts']) + { + message_die(GENERAL_MESSAGE, sprintf($lang['Login_attempts_exceeded'], $board_config['max_login_attempts'], $board_config['login_reset_time'])); + } + if( md5($password) == $row['user_password'] && $row['user_active'] ) { $autologin = ( isset($HTTP_POST_VARS['autologin']) ) ? TRUE : 0; @@ -80,6 +94,9 @@ if( isset($HTTP_POST_VARS['login']) || isset($HTTP_GET_VARS['login']) || isset($ $admin = (isset($HTTP_POST_VARS['admin'])) ? 1 : 0; $session_id = session_begin($row['user_id'], $user_ip, PAGE_INDEX, FALSE, $autologin, $admin); + // Reset login tries + $db->sql_query('UPDATE ' . USERS_TABLE . ' SET user_login_tries = 0, user_last_login_try = 0 WHERE user_id = ' . $row['user_id']); + if( $session_id ) { $url = ( !empty($HTTP_POST_VARS['redirect']) ) ? str_replace('&', '&', htmlspecialchars($HTTP_POST_VARS['redirect'])) : "index.$phpEx"; @@ -92,6 +109,15 @@ if( isset($HTTP_POST_VARS['login']) || isset($HTTP_GET_VARS['login']) || isset($ } else { + // Save login tries and last login + if ($row['user_id'] != ANONYMOUS) + { + $sql = 'UPDATE ' . USERS_TABLE . ' + SET user_login_tries = user_login_tries + 1, user_last_login_try = ' . time() . ' + WHERE user_id = ' . $row['user_id']; + $db->sql_query($sql); + } + $redirect = ( !empty($HTTP_POST_VARS['redirect']) ) ? str_replace('&', '&', htmlspecialchars($HTTP_POST_VARS['redirect'])) : ''; $redirect = str_replace('?', '&', $redirect); diff --git a/phpBB/templates/subSilver/admin/board_config_body.tpl b/phpBB/templates/subSilver/admin/board_config_body.tpl index 83b9bb320c..12d7bc6a87 100644 --- a/phpBB/templates/subSilver/admin/board_config_body.tpl +++ b/phpBB/templates/subSilver/admin/board_config_body.tpl @@ -55,6 +55,14 @@ {L_FLOOD_INTERVAL}
    {L_FLOOD_INTERVAL_EXPLAIN} + + {L_MAX_LOGIN_ATTEMPTS}
    {L_MAX_LOGIN_ATTEMPTS_EXPLAIN} + + + + {L_LOGIN_RESET_TIME}
    {L_LOGIN_RESET_TIME_EXPLAIN} + + {L_TOPICS_PER_PAGE} diff --git a/phpBB/templates/subSilver/admin/index_body.tpl b/phpBB/templates/subSilver/admin/index_body.tpl index f8fe7c3c88..6e9f8d3862 100644 --- a/phpBB/templates/subSilver/admin/index_body.tpl +++ b/phpBB/templates/subSilver/admin/index_body.tpl @@ -43,6 +43,13 @@ {GZIP_COMPRESSION} + +

    {L_VERSION_INFORMATION}

    + +{VERSION_INFO} + +
    +

    {L_WHO_IS_ONLINE}

    @@ -77,9 +84,3 @@

    - -

    {L_VERSION_INFORMATION}

    - -{VERSION_INFO} - -