Bug 483437 - PSM doesn't properly escape AVA Values in Cert Viewer Details tab, r=nelson+benjamin
authorHonza Bambas <honzab.moz@firemni.cz>
Wed, 29 Jul 2009 22:23:27 +0200
changeset 30839 2f90a5c89bddd5104ca6b11b39c5b506ed736735
parent 30838 ad3c5bd01693d52baac8cf0165fbff3e97e9d17b
child 30840 ffcc4c3efed0cf32d9ed7af837cf0bb758d99de3
push id8276
push userhonzab.moz@firemni.cz
push dateWed, 29 Jul 2009 20:24:33 +0000
treeherdermozilla-central@ffcc4c3efed0 [default view] [failures only]
perfherder[talos] [build metrics] [platform microbench] (compared to previous push)
reviewersnelson
bugs483437
milestone1.9.2a1pre
Bug 483437 - PSM doesn't properly escape AVA Values in Cert Viewer Details tab, r=nelson+benjamin
build/pgo/certs/cert8.db
build/pgo/certs/key3.db
build/pgo/server-locations.txt
security/manager/ssl/src/nsNSSCertHelper.cpp
security/manager/ssl/tests/mochitest/bugs/Makefile.in
security/manager/ssl/tests/mochitest/bugs/test_bug480509.html
security/manager/ssl/tests/mochitest/bugs/test_bug484111.html
index a6e25b9d59c8e758dbce88ed703609da8009d919..ed2a828a379d203dcf83e134b1a52f583c0e4fef
GIT binary patch
literal 65536
zc%1Fsc|26>{{ZkaXKWE6Tg7lusVwIV##lm^bhT+u+U^X45i`tUD`cxA%2HCdNLp}n
zi59frrjn9Md`sHg)UB-TZkOMTY2k+Y_WHft?;oGH*LlsHbDlZpIcGl4Gv}Yr2O^<N
zLl6W-5V7kBVk>xy$RP*;5iN++hd1blS7PsL?=EDl@cnjHNE0H0eprT`6ye`ED*ylh
z00000000000000000000000000000000000000000002+|3@2nWAoDHkxjM@*QUq%
zzV$w9W9vf8Uo68c-7RlgR9d841X~=W?xKcL8PrrtJjH`zPf?^0DYd3qrX<rNCedV1
zawDFEH{v}2000000000000000000000000000000000000N}qRMHK$GMmYpwa9wG>
z3>uF|b6rD55MKmQPz#-ddEvU4wghppn9S&L^EhmGrZ+=t2A}E1aMN<~<uQGj!89I|
z&BE0%6=5ss(WB<DgPGpmG_6GpE|1Cb!1b^R!ac;%nu{1dzHAPS6QpIw;P9C4OjjC@
zp*4-q^JH_FydWYr_TyoQqele<1Q^n3ZU!FwAVXKSkMJKj+KJhU*`l(D92S9&z#<5o
zbRtSXQ8BGeGA@{`#E8ioe%kOxmOu~}M~1WC7)ezYGslc^Dj732HpN|3W%0hNm>xa>
z)9pRhNDa|tvDV<ii$eZ!kyv<I-|HZVBgF7H1PhNr!^4q_&km2bjYp6RE6?U>CoA63
zi*me_8F!uUrIc&9-1o3wV|;yw2KCy>txWOUDiZ(L9%<ia1!M9n{&;mu;_elr>9-B-
zJ@ze1tje#&BoEd)Oq#!E_WC;|2BW5~GmlwdwZ-<3yozkDBBG<HKi}A7%8v20$(LtZ
zl@r7+WU1WlIxQWE5(x<5AGet(=+|7ub5$p!B<=JUMiZUpp3G-03Jp>3I^|#QU!S2;
zG_B+AyE%b>(F4oIl_jTkq019ukDYb-Q)1zr4WlAzUOs$P?jCG=^<@}cp}U}DuhR`1
z-<EZ0rO$1yx+*MtQWu@G*hH*Vd&7+`wZ;dz;}MOWDXZl8qgfNS-MMvHA*Z^tz$LbC
z;Nl3OHyDQT+aGWM;k^TBxVu99_DGXL5oGeWH%I$loamaR5rog;arj&w!wo^kAxM~D
zKEagn(U^j$ztW3YYgp_6mX_T#BBq6tFm=&(<xd|oWCYTDe7zYTyQKZ~X6Wa03g-l8
z;haDyL}Uc>L7re4BbpNk|BTc@`t@P#;$$2%HzAvvipK8e)xkbC)IiNyOPKEx_)??u
zMVQK!tk!Kl98z!($t&?#iG=)rs(0wE##Ug)&e|4>2`57m+OnAqrS21VEw)QuQS@Wc
z*2)0MSNiEn*{;ZnU9Y`V-bztU=AYNC=2ba6)`aPq{X{abPjR8L&8@}#7>8?<dwyCu
zGvw{BON;L=nNF{nS4Y~27W59({qmR`Hd4@WjnQJ_7?D8e8DQutZ1Un%m>GqZ9c*@6
zu$$2BknprJeX;^S%HP%g52j~odZcHCO)NV`EZgP{{wrP?+C4q)$C2t{cw9%tV!cT@
z-FS(5(>CR{@^ic9m?dx03A&vbo3+;8g(tIoTlVHHtahs81Vf!lrG^8$<-^Y1Kk!@I
zgQq7P)cpg;9Ex*pUN!6U4MhZB*ub}17#6C7>_ht;;L{HT;Z$!hoD?iS3>FO9xE4kd
z9Zr?Y@OC%gGCf%R<E(#V;M9JRAz1yUV+<80nM-`5%jDJHHb-7~IB}X9%j#AY$^5*2
zG}~-yAUbE?^tJ}yZrbrON}ZjZ>d$#&H;z1OpX6=1sVQNPQuDn$_C4h06pz30Nerpg
znhsV^Hb+gzs`cicUPrw2djO|s@uR5ccf#MD$ujCXPWRRvnQRc7i;w*)RPBPRg^oek
z(=+Im!RB-4vy&%0vU^dQ8l^-`cx0`<9shY{zQpOq426!X&c|Prdy)=a{OwhXqg26&
zCpC^E38gb{$TJKaTCN_-=sr?QFZM#G?;)StI~EUVpA|OM#kk?7hFOmH8D4_ey0$GR
znro8A7tWP-F>ll>a0}|F%_zw2%t-AqIJ3ulZcsp^W1_q8UW#s|Fetv^E(;?>_gfmG
zeGV;}!c+zGv<F*@%i#DkI9jfsCshRTK@fC!CvO#82~!j`mifo!sSUOh9i;oh(eR(%
z$0Zt~Ab4C_DHsjs2OAB;{j5aAOvz*nGZwrGM^)d|VeQLMqx1e#y)1%XD&2FmZ$L-;
zm3_X&2M<#YaIBwu%(Gm>c_^jQUH9P96eHR~rA2Fxxah8uU0*8RywRGp{mS*R>_nXz
z=d&YQNc(c_-mFIhf-av^$`PLzzdkEH_QrGOC6!(7%w0#yIu<rn-6nB!4tN)+mZ85F
z%FV8;o*UKq!aBaluthY93no2mlxPx{!XyNfI7&bU7_tQoY5qQuj;9V=u3IwW9X+;K
zedeZ$lrtgiH;#0jH7eF5IaRNiIqUhO&Gvk=yGahyjC7+E&g8XP)Ee>&a!yB#KNEap
zD^upR`p=3I+Zs-F{qjDbyZY&}{07y_YrAqAm3OpGd&<osUpTf`p896fF@jRA*qy4g
zsk;io)STH0za73N3_{+go9#*y4&32<1d~7ziZD|hGr<LcB>K=KI^V+tH#W!24Fg#Q
z2A+X5FS;kggG>uHrg`^n@(QGR`?`7iN_=W*%M+d2&_~o2LpH|)`SgJIshMz~A&8k^
z^Y@)la5&P?=OljLfrV2A<@-L0_P;tQ!QEWK;BW=s5Tb~*+JxB1+eBN>vDURZZaISb
zhuI;st!Asu?9A4g`k2l(Z7@k9Gs#Khf45En000000000000000000000000000000
z00000008(OAw~FH4Zxtc8o(qhf{^&38bEK^g8zwX0Av%YNuO!}qSc{_91NL})+SNl
z99dB%=U*T1GR=slUfiDKd-aX&szi%JhkD+Py?oa2&WT0NKUlYu%9k)xU$>@Hr%iO!
zT}cmqFH!h@iTJa&LZqyzK<BqO*%Mh0_t;m-`AX$4%`8f<ir!eV^svmz*{d81cU3us
zc809qeC<7JoYR|J%d0zOVw9h4C{p(H@DXLC>0^^IJz++gg4hq3X2hqoaq@um48BZN
zV`;@O%I4o~>$sGjdnTajvAN1U>DQ!X4-fu5!oGF&c*i^`Gd;S^>lt|yuVyN4FOy!D
zD8KJ*JndELgNq&49%gp1{dmXcFSyy5TT-oAyuECVaomFw@ja_mQwuH4moC+-Pjf$+
zs!usa_Hy^JN%5-i3M-BGOetNkCSviCgVt6%i2ci45Qe+Pg)l=)eW(yX`*-kjR&yRA
zEeP^o1&i{BK<`br|L?QhjmiD8+=Z)O&$=HnG81jvJ5SA*r%;T%{e#!$hsqw+wNJ;U
zY9uYx)17|UViqIlu550JMHVG=>+Z=x*OXTWnJtj4GpLz=S!3H%hq@n-&YnZ6vJcE!
z>eqy3x~@$OW(Dqc%4FWEv|7ndn=$*^%A&pdr>DmI;11mxl(IQ%?21-A4!Lj%)v<Ei
z^jd!E{=qVt2?`Mbc-q!ER_}de_$M6PCUNIqv3V=W*;&@U3blOpqpESn^x0ACq6?e&
zp}w7go~=iWE?uoEm(>o5eDdRspt$x`JH=7sdofayn@>j_P(GdQsHZpj<q}F$qPTWW
z1L6H5E4SE+){ug%4Tk62XYVW@ueG1GF+RG;WbJ0Z`!!)3KUXRs3{e_ElwT-=AbpbA
z5jA0Q;b5f{zH*#CS<c9K;c>npHJbQMiPj&3kr;!hViCk>!OYwGA*mSsx2Iexj+3dl
znTe^fFuXDIKC6QzPY)T?&2w5?xyQ$CM_V;EC5hGN{jT)v@NxaBb~%#y-IP|{J>8YK
zSz+it`Zkld`@^3fn3SD&nwP#Obk<*LZOr_n*qfP7cSD=#=hF;T3W8D{Z(g)rT(5ED
zPsKdy<K@v~(88r7j~~iTYMMLo7YP&ZfZ}cCeqp8dhQu94&!1GY=m&pI5>2-eggC*7
zj}a`<qDeP`uuiZN7}57SA{2x<q`2W1o5=k(sc`vp-0;h$pSOS6o;*l<@&N5MI1E3&
zV5_S)lfmK%(@4ME&Ezl!*{%7N1l0)L-fn)al@gcX+P}+ejz@%=;IoDw_K^GSQ5tY-
z-}e2EG{7ul$82mUQ@HiIM3ydg^t`uSMR(I9I^S)!_Qu+P%XLrP18V5pf?H$M^J2nB
z{etQ^uFvWmf4NMFc+9VxG2v9iYQK7&VtUFXQY|$}ch^xhPV8-_vRRHCzxjO2+kjf5
zohGe5w~uO7zZ|*f?70WcBx8EWgK-+6lA$d(CcopYd%t9m3IK#*tzICU8f=Ass9f&@
zneexYJ6OGe?@CbqR5^e`#!N6{%E!t9A6LKgs6$Nw$CSi=@5p!*FwT9w^G2$!c8ev`
z+^jM=Wp$VFBfnc(T~oHmh>>d=vB<QS!85k}W%oM&TzTEvdEEOi-b%(rsc;F~y05BA
zPl@D)k9nMs5UYPq=3u_w#5Rk$(!^t>k@@b?xial(7t@oEI{9~AYS+pWn;)B*{A}aP
z*x2l?ng*Q6fu6X+HHOR_A0R#x%2FzW_7Refk6Grb|5SVLg&F**A-;cJ&smFVE_p0(
zRl6$I^W1W7seYzY$?nL6h?mrcn3x8G__T^pc8RpB<aOta`ebwYWtE#X<xehOdNh2|
z3$^VNYN*Rp^J<vry=iL}rbgYdyB66Movf459NK8m(w#D*ZtUjr*{{P{#o|)^6UzzT
znKLi?byE=4>*!Z&Kv=0`Sj!C%hx>uidpJ*sesP2U{x|E>0RR91000000000000000
e00000000000000000000000000001>*Z%>EvZMt7
index 6238f5da9e5c67c28c4fe8a31441645e57b02941..5309a0e32bf0eb696b431a0186a18fcbfd5186ff
GIT binary patch
literal 57344
zc%1CqV~j0bz~K9~ZQHha+O}=mwr$%wZQHhS+B|K$d)~=B^I<agKFLk)%sZ3xFR5fB
zsoG!uSyiiQZ2&M-0{{R3AOHZ61pokq|9A-i0{{RB@ZUB7i2vAt|9J!c&-P#6gZ#%v
z`d>d!vGq9s_-}yz`3@A|e=`Wc|J_IY@#DvjA3uKl`0?Y%j~_q&?*azk4?h7T36l(o
z0;vlo4W<h=4~-3(1+fOI4q6E04^#;B{o}`fB47YO0ER%I-wYIB&{Uz~q0g{@Fra|I
z445D&NaHaR@`d?}Gm+<{CwE7!vl2MsK!AWCfk6IwZ8N%ukycG%LnRS1_yE|B0Y)r#
znrIUAKrUaye6$WOphw8CF`4KgE$iF^*0FR_A%Cz*6kQnz(XYsi_@v-xg61{YuvVY&
zlBYNk$BUS1($<h-M&v>OgO|RS&VNa;RasI}b&}}K>U1eBfas<^+aP1cx!!Y}_I^Jj
z<==vmK~CVAW%rB86DZCKt;z<O4ZA_DNSrjOYFzH8aWX?zGG7B3(@5zX*9paX%PyP>
zAjk8WUFrxBYt<65vUNmK$sKX;QUo7^^mp>yL2vDFB$;2QNOZKK+1!frB9~$u$u=~S
z(e28N;drnpKpxtASn7G7S#m@a5!LTHtPiPg*6XDsG0<}xQ#jVfuUEf@(sUKfYyV<&
z9b1679(fH?uVnnw6Qj4&M(?RITr5p`U@3fun0NpaW#F*_e|L*iP=2R7nj-c9jL+BC
zz`31FF=+`h>a5~F;(ZK=2|^GR98I61v+;*nD4g4fvDAm8Tykl^eSKvlECu*NMD44F
zNi~GhmtpCQAKz&>4{t4sNy)!=@bz=_+nPRsmkm#?l;~D~J~XuLs6Itp_0n&fJJaPN
zH8OE1gg_B`#iMW-qWKxqm8!PHu8vV_+2#;=z~k~RWLvyfn#bgTou#)8nO6nDfkhf`
zfRO|$th(VaIfMHl<fs)2M~r9})l@@rty-LzH2>)n9|aUG@rY0b_V13QPRF5l#e<6S
zr5yK5ut5LY!b22mlHr6BPpiBUb-C`1-o)v{Io`MOJ=VFQ48QIuG5LY_qV-)wi0iH-
zmfG@l+2xMHx6@3f&#rh)a!%6AGZMT#)30B^iHPB-4Gwg76&RQe-$g6CPVvgosoX>N
z%dv!q;1@@FfDysuaOte8-iG}^RXI^cUJtT850QW$$>w#<KJojqvleMF5=|fATTr$+
zS<Xfn0q2&zh|%kL3UoNN<2WY3@Po%Fxw!gPU7JW{N~5WIJMgE2@Qpop#lKjQ!jFii
zK6knjAbaKG*F;IRxywwi6HIM|fC1nPUCdY*nK>CajZ7S!|KAb{pOdZS70&a09*!qg
z(C4(mv-*bkCm}(uu}`)y#qer9-F&!fI~GWU_hxpCD9xHuOD<Ht5D-dgFSlvl6caHt
z;3xil%H9k7-}&DCQ}9UYuUq`9Ij<jWQUB8JG(S0RM)#2h!2Kw^+V;L`ISSVJKL<9Y
zYsbsMRG0eG{};`El*6a%(w|;7(AADOvB*mrtn7T+8yvB9!TGkFu4<?aKU($x`yva!
zB~JNull{0g8-`{f6MCGP8*S8wBN|~kuo6#+^;1^$nI}F-gbMB~;`K47uw9ZSw4|ye
zod&6|)x4J>H@#BlXcSL07fENR!*rsFu$rW5kB=pJAOC!OO1UR6R3=%L(U|F05ur`6
zXfp>LdM#`kIjP^Q*63;4#9JbsUqmYgU}ANa0-yh6I6wRN0=Qf{n+J6r!VEn_SepW=
zxOT0%54dpFG@T9C^Gb+t9b_^4Dc*o_LI}CmOJ(3gF$ZK=fwEBO9((~grG{NUbY<($
z{2nWwX1D?=sDVsNJ8PMW;g;(_Ux5lr$a>6VJ`vuG3v0A}I_6U`tPKg*_;{^aaGFoj
zHP>YHg3?ni4My^O*1nxlOc;C_k@g47!p3FzO`qm)UUSLw%kanBn`CMPK}I@X<rGU_
z(7R$;d0y)I`vNXlqGvAGe#EJ3Urs35ZJre5yS*G1I9%K$cxo5gFeH_98rPh@R()G~
z58JtQpz_TYh{8UDB5c?QswK20h7t{^qJ%~Cz(P_RIf5MTwy!A}?gFZ1qcI~_&11ct
zpy(uwpoSrcM#E=7bi0At6y0ypaN_U<{^<L(hCO#B*?O4rr!icz*`~p({P7$uDHM+C
z)a2|#t2I#F1M;V$-iH%Z-`7-ok0|H|#_6UA{J2Ercb&d1F~7SHX9kC+TkSEh^nyrn
zB5-5!!Wh<i+8j}IRwg~$Cihq4@?jY&{v?oc`ekaQ>kGm-?iO{ED+yi}(*V)2##Vab
zU^Ayzx?P-oH|{<AbshI>utxQu;Ym2x)mTkIdIOw}n<V?$X93+ruClW4SFEXCx~*1a
zbwa)yya82<jHj!74ncAW5*<U&53r^WRnYV6CV>8fM&jBS*w%{u9N|egdx(0q;`aQ>
zkg!g*a%dfCUD2k@Njcv;AOFbt4_j=x=il73>Ch3V=b`PW=4LkkQVrX6WYaS%_}MkE
zH^|GQHN}<V_rgEbl->eJ!Rdl|26VOgbCWECFHVHVWx`Nv436`WE{~3O8nvJ*tP1GD
z?)Vp3YiK*`V`QlT{#q155RwPhzjw0m1!fBOe)9)VX7MPl@D#BjSy$mQ<@yZZn6b7w
zPGt%zR1(|_V&)Ug^d_DBH4RN)W`pb`toiVyn3?>S!^CG7;cW2%h7A<Aln=FQIPjQS
zy{Fd00V#fI8y|znm%R~7uT{r*mJZSIPXj@`BWYGiBM{ngH!C7x;8l|PS?^zVl-_5%
zo~*i?s++8joR}37ZE<D~p|EC@gbB1pw1y5D8N!ifeljgnXJwd0Jj3z^u5X&oj>~(}
z5!h$T8qxbv8`3qrpcsD1XhcC8y3k0Zkzzrz9_i>C;y$N*Uu06P$K72V<3(gzPDIkZ
z#Rl&1=G)wtsrgi-fJ4|#d4&(_D^XH7w?o6OO@w3$JjfTXzWjJz-HvC)_;l>L;Jdjm
za5j#|;q41%@ciU($Hy8o&d0SSOeK9ep{iH5x3qQsy`<cLq0fZvhSG7kbOPEgM@CcU
zKUVaub>~rOcG{oZqn$oLgVQE|7X+C3Wyh^!XNJjP!~HK04CjI&uXK(G;?LP{|3n9d
z%7+Jg)j1f&MUlF<_fYyTA?=PNq8}*Fq=+)1BS`lGKE>@=6gUK-nx`OShmpT|g5nW`
zlnHML8E=0?-$QmPIxc<m^2IWZsV=fZD9qv`B%OLf(B_jvrB5|PI$M4YQv<Kml*llS
zz`{UP!54GNNfw12F^|1W&J9FMy-#(T8E(Sk8|TbbdxJ=bqzhXzv0}7st(S1}tAKN|
z#<|di4Ee)uQ^b}n)8pTFmEWo#o@Mq}1ydx7(a&;9(<AwSApni1*KiW1Uh)hmc~_Se
zP*|fTv}I~vBHOV}21ZzNDJKGbriuOOmrlF1LkdHlzJ`6^7lc_5qwVxB$B{c|2P0-&
z7SVJ<LmLd_;)M+mF>{(8vh6DKiDzlKsReJ&TNITPF>+vlfExw%JI8bRRVPB=2UqYo
z!u&7Q)Zs^DtaAe_M3HSKwg-h`V)!6x{ZkEehGy+n%3wAMO8)Uq=WOSu`Yp}?Y%QK!
zcX7Oz>&o)-z$y%z)`i*#{ee}MOMOisn+18UD-obhamlurr{nS*0KOT)m7$#SjGr=q
z<1wvbxFxF0;@JL+9=8Q(fBy^DOYc(5t2Jd7u^GJs*E7WH5Q`#cj7K;|I^{XBW~7F-
zB8@Dq%KAq@sU~qpcrrHOctId1#yuS|uDv+dI;QI#Gb)&B^@PA8NNW`yJZZwfD-olG
zm*QvM$?(MfM-`8`XM(M$M~X(T>J2f5KyoYAFgi~LVy24Dy<#w@exO)p$rE#>&2I1M
zYG*Z`#>(wx_FfZg=_5K8Cx7{MX?-W#LIZl4d8x7hTQ(|vQoI$ZS9Lnu;5G{58+0po
zD`(j7aIB=@sbWoeZMnyZMG#qvge3Hc=CzuVH5>O+u1}<M;wKuT&>``hCKUdM5b<3z
zht5DAU4{W;9suJD5UAC`nK-AxwQZja%#}ag#Uk#dGqb`xsjY|`NPG&x1RsIH&E+u$
z;Q1p{=+OA;K*do1(<tK3!F=_^%{5@T+dJggNJZ$4o*TUk|73Y%SQ5w5&XpQ?ez}ou
zGCfE*b)hgS(lG_uyZm1h&U6)pjg@^)iSv(XsO@93kA5j~F>Coz<o-FdX3x&0bwNYj
zB}$Fzbax@Z5J}$Jt_6IOQF}>@jDYGOo9Es(dzAbX=?Em@6)k4>H2-^gYRs}kZ5)U4
zx`s+oa{<e6Vvxapb5?f+PovL1#Sgd#AbGCIPDKorn2X_gf@?Siu#L*gtq4e+D?Lz1
zkEn|Ncy;E2vsX|E%4OZGez;TA^lVVkzq&k^ru=VLuRtUlNhz38=%1V`yh)1snf$nU
zQ9;pSkZI=iYkbuhE74h6wVegJ48OMT)l+A;e@~t-O5d*Lm5q3loPQRu#q7(n$s#bm
z+{DMnvL)PG-YO1S;U69LBr{=OmLyU4Qd>Nlav*Z-*xmtd`Vz~jj9^(BXr=i*D9hg~
zYn^S>{%-Fa*j*u$C6T6t`X8?Uw?Qd@0Wkmo;D9NB|FdT%e*E}9$G?m&P3*EAwq72R
zO5Y9`z~^=KpUN;t|BNondpXbz*fzBQ9&32gG^2!B+9lv6sNQkc-?C6Q+L@QRG{n4G
zL2ly8ft|tL8sMg&@Wi?njMFSDa3Fi(FLIKWSInu))+TP+0NOz0VP=6*oTxFLn>ood
zIrVENNb%(EyJUsZW#_H73)&tUVZF-T>)-;M6Y*J@zW&$r)|wU;*V(>Mi$+XyzwlIj
zQ#~->*bp#RhW+(pC3C^TnCq=#N`uXTgKv(<d9gDJyqW&WUT{e=1~!+GG9DTs-RLKd
zSyCC3#WuD}m0X9K)0v=;p>Gkl-r~r?c<XW<4G3mF7Ng(hi)=NZhy^r>KpVNHcy+VO
zGgBj|=7GV+2146*BGtumAW>sU+nunSz&!fn(32_YyKA{>A<wO2IG>)=8?Pzf947-@
zq-GJ(EYw^KNrmmtU%I_Dhwb}mK|Vz$$F1IV<&ul9w|kwSDlWq{xr}nzF_zA=o%<Wy
zgqq5w*T2pWC{3~|y8%uloV=LQSG|w3{Dq|6y*I*{mQN#inov?_&<5yYRzOML7alZK
zJx3$L>MA<;b?Km;KNSWwun+TqG-Y;jVCDqWK=+|e@wQ0H%qIqslS>6~W*tb#oq7ep
zWBhJD1)c&wh76Xw75E_UDRk>q6KT;f0>g2v^1yU<?DZ6`e`@4Z&ETys2#GK6vHS<d
zprgx4;6!;+YV?=+2@%}GD1-L=30$jd9LWg@HC-7N3SAU(CFWLikT5(S!0#ae273t(
zOap}g$pwX_U)xyG2U!%L_Zwbtj@RDpT+>X?Ga8%bSE0Y@Z@wzw3VyLJ3n01RBhsc;
z?yCKT1m56*d?6i!7q?$;iXETXj5_bed3_cs+UAv~n-Kpvx+52QpnWq0v*qvG;)8YK
z65P`2R=E{~YJsL|Jb66XK5IDcf(Jp8(MxGKosQzgh$9GV0u$e2uy#V}{(G*(fAfhM
zvI=wF!{(^TK$rRYaKbCYPQ8`#^gP8xKI69`s_5AS&*c1(o9we=^2qD10XHMVqLV@I
zx7!vj^)J<!H7pX#1lkPtxwch#UDQ95nPO@DQ%&UP%I=Nib_KZw?Xy}_#9Zf>l3wfj
zxQ7HPrxGo;z+WuSx?pvs1V7w)u||NRY?Vk%c(@9Q)8$zimsQd{6n`<r4;PVcm7T-T
zKDmug|5cDJB`HF5P<s*Io4gl<zgJ(GZKu%afw9d92*L*R;P3~%-om?SYK$WCyn5G;
z>V1ckN?UBYv0IQ-L65`MGMp8yZD?H<U+wcuw~HJPf4w-zvGjl6tVq^Zj50H)S2%6k
zL>EWy+g<D<!$6b$a_mjHgnU+rDl|J(ES+&2?&NgL&T)K&AYtoL&~4w{@UomgSe>op
zL{?2oqymPbyU+g(CwiTN_eQIayJR>_*@!7Aw>gBqDwp7?bnF%BEgJm<{+Gd}yYZ+z
zju3#W=<rE%ut4eU_3vCP2FC{Fs=GSJp$!z!N5(>+bYE4U2>G4Lj7vS|H(;hKGb~Y(
z7&;8;3`|4cpf4Ih(&S@ri<pG2y95sC#H2Mf1BzcD;fEu7Lu2UFEZjsg1YL~Q^9|KH
zVb{fdq)3t{R=qPbJZ}b+!X4Xp5iTYu+u_9b9Bi#0*xmtg3N2E6)%}|hpJrBV!lY(m
z?g^Ig6$FI1ki7(0Z}^|GY;`>B!z<=EM@;ue0HABSmmp{0u>^l^AZ945;M_}7E=hk5
zm+t}y3HkQ+KAnL}px((aAuU^#Kiq00n{GUn!ZstLjHF0tFA9axX5#zrzGp30SHc*a
zrFxkuzrGM`wwvmR|L_KtMO@V11o3+VO`oJaZ%w`kiIc1uGniB7yHnZQ*~%>tKK=IX
z+I)#EBCdCHNPS#Z5@dwkU|`?RFrCp3nf4ncM>8k&LZ%`rnh`lwz*N;!k?B7=VZY}6
zF60tHDCmZ}tkl@Zj;^?)q%E@M5wqi%dTp=geqSV&3yLQ0E+>s0N<_nE#zWiC1JTYX
z#3@Ma)rz7;LD(qOIHI5S7VPO5!_8NWS1x<MjC9r&<2ig{QQ+Q$z3d~fZlkaC+}BGQ
zmaxM1A?SnkZpKu_p*U@-uhGl+mul8Y&QYg}qoE1&M(^6Hn)#sRfcO5XhJ?)K6^Yp)
ze)#NC{B`H^wo3&sYt*AgBWO+2jC_Eh+x|B1j3l60k60;`kv5~3w<<C<Z>ykj(u-jq
z!|3@m7#!?RPToN`^09`y{3FR$BQUwTdb~AyGq)FL=L-d{zc^Pd&MK0-uTw&=HV>A3
zfUYOQ5R+x%a%>ceQiTN70rU{&R{TJaBHq+W<Esw(b~l3=aYhrVB{;JooyL1u$X~Il
zBmlyE<@!X?PI$_aKRm|Y`p=bFRKS<VFa4$P+1gk;K(;Ii(oJOh{3ey`ltM@^?p!ia
z6f!wHkGVnC$^2vlUpb=S*f^fbawA&t7IaEr=Bd!co#NXdiA_SQhF%=ATJ+}8BXJxB
zcc;d#5ea}7>Z>vW=Pbw8OG<_uTzUK<Dw9T-JKrX?&&NH$Wvbwoh@=t$tQFNu37dmN
zSH-2fEQY6(Q+60L*>A-ZYR$v9m(x!D--Cuo-wXVzyMID&SjkGIpoL(O94#<_^+4TI
za4cLFrHF{?Cl>Y0m>g7}PR|Enm(pPfP2TQYNUOQMxW)vDvg^RLeH;dIKY=i@bZfl8
zf9aZF%n>Zpa_8DG;^6ID*#?iAGw$MEBmx4EOY@}9*-$8raY2A(y18zYMKLAq{XIVH
z332h<b5<<~Uf!RO0&NS)1!cp|MfFDdD0adpfb-4uV+7D{5$JPQOn8tT@tYe5-mD+_
zg>Hv)V7UW{^<gIJ6Hi!O>rBE8;q+i5{uJfw$x(n?JCNu`!9laf*M1!z0Zy%OTJvWx
z@(WaYpeGd~+qE%fIS&L72%RGL&L6@#+4&?Gi%*<_B0%Uk1pXRbVYK`<nD8?*cII)y
zb&iUYDs7@p@cqI2c@v8rcl#Mc#a4uPkn>9Jj_QUahntT$f}C@!FDn?i6Nm1bDxdnX
zZKA=<Dw^$B9Ss4HXNB{tdWLvU?ObZ?c?+gyUg0-n+59j<bSm<<cg9w6#1j5O5Slp}
z+-D7-f!_4AL)NkM(e%TnLhcJo?{+9OgR>9Wf*tBbI_JMs<Boe*8`9;<Ld)rw^#{j@
z9-CBy^Pg&PSsN^zz2JN~P#Z$Xv-M@X!T9H>m@MIU4}?QuG{<q$6l#!8X4N-cJcf39
z&IwG?H-8goQg0;q7CT-ARR_FXt#BUb`$I>zDR0;~K56Z~F#_Kf4=A{LOWz8LV05o(
z{kD2$ULR8V$YOFJjE-vhDtWojJh9oSni1L3+=E52xB7mC6rrPY;Y^L9oD7x`TfGF~
zu6)ADT`h=8SGHNmrxrd>HC|pEF%#;#t%*oDiCF*D$U(^8p5oE`xQzlsXC=m)60~kN
zH}>5TuplDpYQc4|$LQ82vhL8N!RW<S;xU$;E<bERq5C20ZfCv}YPMJm{L5r+xw6`J
z@|eH-x7$XCx+tbM*O~;<0rw1HGY}HpwWv2cc8aeQ^|{n210b9g*?P9uVd0XSx-zuy
z7G<&9X>lVwhOpuQF}mM}*-3o_t0G)~>t_<SenY3f*9W-LNpEJPS{0E`IVi?WpB&($
z#NQUd3L%o9H)7wpr%iNUlR4VDK7#g0MPPTl1BGe~ENUp>{xSz+ub@8ci0y&i&%JHp
zD5AInN&PzJT6J##Givcu19(5noB<W~U-+ozEQ8Ul#S=@W*`gcoG1s{I1<Ieeun>l*
zoAeFXT}c{N64QPYIRJ<WCcb8mta#$s!3f$I*0$b{Zw@xtIn@zD(^#cg>_z;lI8b6s
z)08TSvBCI#ui~NZlH6`#BS=ICcR`}F>8ea<Dkcta!PLZ#e6uK_(`g*)49`o|6VP#(
zJ5h^xuvIn4VJy-Dq~jG&>akq4UjfPyg7MJGqJ9iT`|Y2tERu0pA`yTWlWd|@f;J?r
z8-R=rN}r?9u8c?oRQH$XGXNhwf1hQ&+bYJ6&h2zy^JM9_D5sW28XhHiy$Skv;5B}E
zdf%BhP}-6k=`c*iV0!f?$4xDrygMqL)4UO^%#Wd$)!7{yH_E4GHPAXLgZ9w`pKtCY
z94cl1(fw;lzd)@$Xj>HZdz4^lx`>g{WAz?&dpt663oqM<(Ul$awkn_p2Xn!s==DGQ
z_U?}#KYsl9@#DvjA3uKl`0?X^x&Qh3|Nrb?^y9~mA3y%@_is<l1i8vgnbrF1V|v*L
zFGtOiUx=>$b5BMST*up;O=}n2Q`^?LUHTZ-JpM}os~)re?IS7LL7)zI#gC34o<IH2
zGs=0o1*k?@6cL5PK9J%2Fb`%D204*$K~0Yh%kxvRTl#klt^e1%^aSLNf};<K*uz_Z
z-rKn-*b5$*=KxfU0hfofH(dtW{e$GNzf&h-!&Q7Yfp&nzaQC{0P+5NdL2E{;g!#^0
zipk@Lc_v|fzQcRl4!e$f7k%D?SZaIn5d-^RnF=1S^Q$NR2Scj-hhtgGQalESdxnT}
z4(*(bq%uD~fx?GG*{J^}6u`(CK^tO9_cZ+g#uA<d%7}QKPtE5A8Z@s#F4~u2W4X$0
zn^PNmRi;z6>9Iiz@Fv+-O40xfyKnD!A8`uAxDolF+oY-%M3_%-_sAei&);b$BZnZ+
z5{1!7FX2SSt7%K+Rn2B!kZL%gW`5a1)hNMP1n+B988h@Qx<3Wpjq;Jo`+1}nvw7CT
zT~8+%iU8?EeW-G;E7onL00>{ZrDldFfpup1t}i@smYY35&rDthrb{M4A`-#_9G4*)
zPdX2yuf-6*^?_A9_x68%-!D8-H-*wQW6y^3tfT3iYGB_LS$hYZtW}50=|{u34qE?q
zk!}5x*hBU;mrsMmNIYj)!OF^?`LX2LcVa<>{gR<J4|_EQXYF-v=WJ+Wzkf_GzW9m?
z%*=v2$71rF)F6=&vy<PM1^N7%F1*6!_@4U5CVb0^Wpv5|IxpGB0h)TB`*g9v2{TD`
zDVHKVY08HZ!U`Yw^U6leN*0yjny1w5wEDL?rr8ZvrrC#Lhb~PEzW~Dc<+WiR#S6+A
zzn;7Q#8ffFhVRLqmC~C@+Jw^%wQy)aCUei@vCP$#Qww$q&=qcY63A-ZAj)}p3(e#W
z93JO(+7(I8*El14lW&1xJj+W_z(omVWnH&(evYryJI1v|eNxnNvD~)rf#FCV9a^JD
zhQ#uifXXUv%^6Z1$B9-5CQy?aOiNj1(t#{_HW-VwTSxqWgI}L89dIiB#p#T#VQF>J
zzf_~sO`z-Jrf0d2rA#mon#Tr(TO#>SHA`-wq%ZRaREf`gLd>8Y7K5S}U*@IQwn$7x
zPhQ48Mv4VK2Mz*H-*RL6FtC1&(=E;4IF#^5D3BP}@|&-PS*V<u1c9E#a$oyZP*+eT
zdpaT?v*FwjKq%*T*~r#p%_wJd21HIM@b6Gk6x?Fzj9SLMEe}Wj@G{WzSeIwhl44+#
zd=`!-xd{Ow^QLIdxuQ*(Fm)UW^x59%u;tH56yLg)iUlgx#g;Z?RuuSrW!E)x2#{>g
zLb~@4k!E@!BJY1faP!XO5wkI}na$FL-)N{itgUq)t9DAI85lm|gzYoR60t6H$ne;}
z3{YN0K@>e1dq;@$I;vprR|zU?TfsajSAdm)@972^tPmve;V_irW$Mmw*OWlR8T$n=
zZfGipIH?;Fgs`gJafrYip-Tn#i7j*+%6f`T5FQC*i-J&!fj)hg>+u@kGj`@mO`sB9
z80Z0BZn<tkDrJSb#SzmRY!-dKg<%g({EK({^JN=tFm$<qnZHn8DlAokKxIwY(EFd>
zXmj0KjBHF^h#Cbj3B}C$MAhTo9L?!WQB#N|h)!=Cmewwvs#b|MhUgNfVUaPM0l(^X
zCC`Hui}3y&<JCvYNSJp!<>_DM7Amja^q$Aa0gyuLQQBo$t9(J4tk$S5u|scQl%%|c
z?1J*?a2E#AXfmn`*;BqP`tQ6w@ZmruXNt68azHz|4ZmMSa}|otzA<HM1%13c76?!p
zbyk?~IjuSNH&3s`>rGG|)YY}vbsf1^P%AT4-VZXiKJePh=E7ephHzRmW39W0uEspU
z2GdYnVjLMG&}#MK?C2bW`lvBcdqXVyU#m$Y68R#ujsnjmnCbLt)OExaXkXn&MNC}4
zoXXG5)R_8JP1H@7w-yXqxTA?)WDG^uc~0aM6Kv<}Q;)iN8tUzAFb7<t?=p@$@dSSr
zx}g?-9Gz^Wtm_9j3n%g7jvmxcXV38i-l<6*rcO9FoX_}pE9X=CoSDI5>B{uQD{@xO
z<*W#9VjWRw@Z#9(b^c2=uMtZ)McPxTamW0w7R7DlXSX}B|5USK&JkW&N{yV!x>x;t
zDF=cHvM0O-3@YQBI$#>88gE5Byqi+nMHSza42s4|*T-W(dmSYu!=#IwKx=?06Rc}7
zz%nZF3@9x&@r_GIv2%`UkAqL%7D7xpHS0{zq8;zS^F~*T=GFr*R;N89fGQs9BM!Zo
z7^Td$jQ9rhxH-FK;|}XsX#=>sCK_31GRZ`%JdhKU!f<<nJn55*OJIe#0hpw5FQr{`
z41Xzje{44+rXO46k7X(XLMG;WZES$yRF=61Qi)XnzEMNP@cZ|Ko5}k_cNo8yS`W88
zC$xa{_rh@OAgJ+mM5B-{c3M*&$zh@R-2*CPLB>Xjeq(fw`Mi{Jgj2hvBHfu!*>!Qo
z@X4;7VXn`3bkG4JQ;6KAZU>1ZZ7jOo{NED&s_3LYTHF!APEXhwBku_N1LEF&_h3tT
z>4Go(0VM2bE2(L=`L*f!sc-xOe4=bL;!bhcN-}6BOw)NY^u1olAPY3a@Jfq9C3}Y)
zQTV_(-h?=-Pz+ZAwm!(&V(>MEIyep+zut?OjKrjPpzf4cLUKqb!#Zc+Xa!^M(755_
zN2g{<RG;9*JUJB7U5#6`(S1+&oMd%g=NpSK<>MC7_oXn}YV5CC)ry0rN7co??hU^b
zeix%}x;tAbo;05IQoG9k!O}I54~t9hqGB!8oh-REufVR~l)|2*6~naYMPzn22q#IJ
zTE}OQ*M_ojH^`6>4*2s#=@8XcFuWiIV+Yv6>|tBX%5Y%7x5x;vsP7$Vk5`;PRF{A}
z3<C_e4I@afLJ?)J%78e25!|rkiLN9PFQ3-i&t684`09F{RiN)$)_`Np^q8f1pAhWs
zT(2kH<4Cmh%F{paDJs}#79Q6g4>h3rY26VlDwHJz!@uG4rZh=BTL<rFR!9;f#|0AM
z-bZAtZQN4eVV0p6R=GrOT41UJqQH59OK9ridTPB_xZU#JymjJBlQK!H$Xp8MXW-0n
zZvD8AYe$oaUe*jXeCMJ=uc7B3yhsM0&1A<72Ji^K2X6ph1w#$v0%-*40{P$9|960{
zf&OQoKmPdf<HwKxul~<i|8ESqtrcyaoNc>l8LFhqps}8X%UBL8E%G7+v~>Tx!QCOZ
zyDi<k_*%Q&P}?=PG2RJ%9byY0*8))1wY5azCK_dE$fy2^du;aomuJ^&)5X$<!4)~n
zjYm@o-iXj4*twk#b&Ea0Q<KMKbNl47H2xER4p~zSNS!wJLXWITP$&B-$(7#Znj9?U
zuyXjlK4`2G<Lu58Mk6mnbK_cAB~ITXF(aRaV330mBTpoZ#?3yLkX33Hl8C4;GS*!)
zSOXwivL|5$kMC6h{yvP!x+R670^~ekjrc;x?PDtyHGB)T(o|Kwq~|0b&v&ceUuI9h
zM|+XI!y6`$nc=o^W?CeOl7g#?j}%7f=<&W3EbiSAz$_N=e7kdS7{iu@(jv%cxwT29
zFqYlhH9`K+k_wTSnx!F~{F~G!Z7_kV=BD1n87omStar#f6#M!#0LIS~{k<31AE*7#
zBwg)WHGz4Bss3S?7c6XK>QzP<hF4y=AA@Us=5vd8z49-uU<eTrp^B4@D*R0Sm4_0!
z%CVzKIQ;xbX}e?Bm~y1G^_$5(tL;-1BCxEBkQ)uL0$>jVjWKUg`FuB|2Fy3l>FXZu
z*K@>GV0V>2@|YWJ=gsUsOUu7VfQCp62}y^~Ik%ID2=3(#PkA8E&<w%iEz)`WtF4z$
zCfq~vlN8^fM^m??x!=FAhnfu`^jzg9nGaW@tsI@#%}a?ygx+v*&2rxXq#^sCC2X~a
z3r2oVd^i)AL7u*orNl=ut{Wvcqks(F79P1_oBFGVagY#Qa$9h+k0+<;y)hp-tP{LZ
zM?-@!&HZ5r%6sq>i+&e+svjCy@sfAiy?+6Z2}W}QjQ^TNhoTO03cx%`NQj~tf-bG6
zAiw64g#vEw3#vB_`3-%OH<q8=Am@5FaYIlCq7YS_d>-}?6;&CBPwN=;FBcTfj*k$l
zX8@GbOYhU>K)njBT~-DERD-7z0;Rytbi?BpOoQ}D7`Vd?d=ABEVgYovk$OM12|l0R
zit#UdP8jfsSsL-OW4m&F>fOo7RfPCP`Df4Kq;)AR*%qc=v}VDmLHO!3Zm0b7WXMVE
zB@5=81nX^r@PK})%1oIDc9sAcjx86hI@#oKNZ(r<BXYJ4GQXJsNOw$GLL5@*OS)~@
zmXk-$l>!DdPZ=?`N2!(_{Cb*xxk7Z$T^seBFxY#gp111Z#(KdPbSGr1pB<!Vl|phP
z)Mh~!f;5jGo}jFhC600qvsB2wv_<;UCS>Q1c^U226b>h#dHE09%VaHfh2#Q#6OGLz
z$~l0YetRSq%EP`os;_j{oP~gkuen|NJN1{0<(U_B5jHUhrVsYz;jKE(DXM#n$aF%N
z<@Hu8yo}39N3NgjVd6U+j%&iC^PO`-E!7gWo#AKlao8x@kG!gZXIApvoy`fi@Ot1;
zN($dgxoxCVm(KeDoQ(O@3h!_6wxX-&s`yIie(13x@2Lp1j^-?qGt~>N=>A?mVCi}Y
zDoBx+D?7R_S{=zuO=FhoGHFKrd*aPxVqYT*AZts=qyOb#Ug};j1>8C|pPr;Ud2ti-
zTo%t!B{<B_+f27MgYhf7sfdT)Nnr<~0{VP<RF^(5X`sC|^}<F}!mpn8jij0#|B_ir
z$bdZyI_pvBbf@%+6-po*|9gs1DHhz!QTDS!OhN{7TTdWeu|8b#bRyi5!~}_4h4ta!
zl~2W7$nY`$Q1o#K5~Z2S7YVIv495|M#JN95)iLgtXQ6}1Z(LF=efxW0q!*}o^w8cg
z?bo*B2gVCi+0dO0Hq9s!_+q)#b&jzcf?3K~eL5poK$r8=j@+4jD{V1HV&3qhda&+B
zS=d7Vn1feW4}Zu@Hm;R>4NUP?Jp){^q_7%Iz^y1otSQ>Gw4M<pf%Vt#W(lFmFTKzn
za5RxwGlH)XH(qWP)V|sn>GS-Nncu*chb>^Tw|lz5v#4TCF@BfXWSOfa&4CK|9jb_l
zOww%wnoE!0n)%g1gS{1b>~?~MJ$JY_N>of@L}286b7g|GBE&m5A6q#B&H(3kr4pm=
z)uv=`#7XxSg6_4;uQNfP|Lb~0W)CY{#_gT0S#*U3H$haFUoN^5CD5@sDnw-ICkUq)
zagOittGbZ?9WhcR_i2xsCWs2T6zjlq%PZfAJqMb~4O-F5)r4|C4<!Yrbi+BmPpVCy
zt@0~2Dqpi)88vy_krB;w=BRz^B7OxkSD4r6WeHa9&oU8%V%_nLSG=7Y*EcaitvV=G
zf`gO|W&&!UH^5A;PWd!U!KqYD5mgaylmxOPuH`FHFgoz_ZCU1Pf)@*@&-Sm5;5L;b
z<7Bp{MN(>UprMuw&=R)V>gE;!WrpB;Ecu<x{8HiSW$N#_b^(gp51<Mw_n1RXK7CBQ
zHkVll*Thc)^IkBp?`7f6^oiY#qYVO4$Fe>C_w;9!-|aLoB!;tvyqK8DNNcbZHBOg+
z3cqXsq!6p}PW;HTJfSFMOiRw65N+(XoChdMbEj413yT3xf;OIBm&(a6%0V@IJ_Sf!
zFu!Io>1}<>v{P)hmjjXzYA0;DcU~io)NbsPHO2xO5LNPm;m&)E;;Iil1Yh#~+nHRI
zMj^zWJtQhd#ti92FgA8!p$_U9mMQS8BU*)=?QC?`wCFm(N&+#eGU;S+mG9q@cIw~e
z6jRWum?t$(0>QL&NR^&uc2czR3Og54-(DVB#s?F4e6CHW1U!nYclHqDrYSxJZ=*u`
zhjxzWnDBv%Z?vNP<gxvc1){PzNN@2ANeo+6c~kxh#^oN%V^{)9y_%?3KS4FQh{tw!
zr1>kekU8BbvZAsVSWc^~<XYUXyjFy^<D9E9&0@FTqDer5XYMV|a3@pVnJgwM7bt$y
zj43@i8Ed9kzv1ucLvt-b*?70tA<!G}Q_;$yyJ!{T(~?SFhba}OuBzV&$-hjjBx}lu
zp5^}P&)vKk?6Itv3RL%_M^n$?Z5D?px1=Z1@wb8{!B?ccB~dV;vWD}>)sNA{5mFQb
zPIcK3t>8QyKX>{Q>@pB*)DapT7MmT9JDn^e%d}*~tD6o48A3p+TAh7WZ)R<0Xkbn2
zWMJ+5Kd=7>`e*(BfA$&dk01Z%__sBge2^n#XOaX68Hi7ZKx|ylHZT8uC9~NHlPFq>
z+pJEs9NKQd0+!iJ=v(iGOpK!Zy^2{}HE<2@${2{WOwqDBFi@^}121wm%;gM>L5xTo
zg{#6dif$SJ17k=Plqq$FUMeYS14cxw-TG5Rk7C&D@T^r%l{`k%35q}@RkgfjL<}TO
zDM3<+YoEsIXY~TZnIZ2dJbHK8y1Xty%OD^rUnzJd@zYbNd1#?L962@!0`6I?v@qJb
zcdcyF9ixTftbvd`9DD9Q?!IXm&kYr&Sa5XaUDF~rL=B0c-I1e<QOWx0q{;zd08)dM
z5g*)P4f0*K@5BqO0UZ<ib&2+XYfa%$&G1TaqPPa0+-;5z>ZMZcDcW{@ddVNkd)LL+
zKrlX%KlT(YlXk@_{WHdY#_J=#VlY)%_xkB9w$&ly_jRIBdxf`=JhdQBS<w^|Zkh;|
zOH@82r=9@ihs5K8R{2Yu^H|M2d8s8|@Jx<By+mMJr1cprIUj?tJb^&~vG6mw2-?sy
z!c#955G3mm?DvmNvEa~0Lb4F{mcTKOiG#$)z{6J(OD=}w>I^8%duN86fdighg!^(A
z*Hxe$W}YY3ah{N_hMgqgtW1Zs#BWO&Hxv=UgfuK}{ZZYq4lbbgR=0E=QeCLYu^;M_
zMiZBuTW%)}vO1*~-7<?B;f*b1@w{GR;?^knQ6A)DW<54Lox~Sd&L<6HxJblyMf}+D
z0l#v6{>=50Uq1dG5wpJqiKgI-EOPw%Kp7>0Hzl+|3cu2S7^xee`)iON7@@I9V80s1
z`3>)PG`#`5_HsY>;FOLV{`qMe(>%%+;O@fn_jE>)3*4#GAf}(*-<?7z8*bE|mG4i2
zUP}5HHDEM);Zop&^rOk|G-r@8ed4;K)(D8v24uz7Aq6NX27Z;NdY-tbq1~0KtkWiz
zkdi3^9HRpI-<M?`zymbEd7yPpVfEF!ELWj@a~zt56D{zXWeQVg`HiTLY1PD{k#uBq
zWS%Ul%~>EH5-QHCX^oZHp;cpXuFBzlg?>%t0^!H9T0$oOQVr&E<G$T6@p@O)#>9*j
zZ2D6hfA&Asw8-AU`UfFxw&T06gC(MSqI?f$V))=R45_4DcBOpI#e*d|G>Q8#l>;eH
z+?T|+xo1s!cL6F%vpLTWyL-34WIc;+<fND6Us<9O&i@_AayRL(0H<%mQ4dukJyte^
z2Tn-me&vuKz*@tL9ZEQw!9SzA4<%4l1RSU%`HkRQN?5@vN$1IX_Gv*UN&78QyYvMV
zVx@axSKaa(WCSQ9&wKK<DUja{B(p9s*H{F65g8QegbCT)K`ch)OYVBi7gk+P5`&aF
zma3au>tw2t7J`I7#IGMswXAz;{`V+Pdsdwh8Rv!yL+P!N=<cIzWc2p@Hx(7@L|_r^
zYXRzSl5x@$Bnif*mW|}UX^ejooTkk0&PG;zKLdWTY~V4~pA|`Wj+d))dWhCy_?&cC
zo7<mK*CI<Js|6%B5<lM+ER?GEQ<Ut2Da%_}y<BlnZ>d^Fx2gxwxD@i0;`-(9*=fnH
zM3iEf9Qnimvs7frl1sPW^g;lsYVjq#^zcY7^pjV%NEmvs>7=_Uq4hJk*x6-fhqtU!
zV_;j61bx+_4pC$P2=*6mTRjacci3$BC7!G<vVOP~6(gsB)2B^dMNW*CI%v5C0L&gP
zmc4p1XX1~rRDSBkgeN+FLe)U!Pfd5Y)bIC?hS)k<B8a*?PLr{m5;6mh$j9uFVUT$i
zj4GC2M?;xAm4)4%_kjpSxUP!l$UYu5I$Ws{ry2EbKV_Lv1(|8D<tj3oHqw8NW#na%
z-t^Ni4+z)*piLRdJbBU}v_R4W4D!ar5q(M?JFpK{-PD$3^N%kiM-(q}rE_tv<@3I9
zxsy58N$lAUOjm0x7Q7(DS&6}h0%t`nRSv9I5UPRpBA~S~uzAIOQ0M(6-AfX2>#aui
z1F46aC-g<dgp6!OA|>`Ep$H=aFvJRJ8on0Bsi6zs0A!ZPkLKvMgHa_tGtvKpXDlDw
zO|Hc0KdPZL;|%*?^Z5<2pJab9h6UR<LV!NPL;xe3=$p(={}vWvw_nmtYE!RxRq-#?
z+%~$;A}@cKQ4(&YwcBnN&Wf;;{!`6m%<N$B$p=?NEFpXE!AWhBF*j#j2Q5C)O1|}r
zo^$pyQGuuTCFA;mL;zPUQ#1?|TqNm9EijmvzA{iTCucCUqVZolzIoFSvpM(juDm||
z%#H78T@iY=HGA7F9e?e8dR|qg@u`iSVpN<ck1RRcS9IKNQd{OozZmci1_A^Q@2$gw
zgd+4j#++1_;)$#S)O(7yGi(EH>nhM++6D0@yV8Q5F<WWstUa!C2zhYVScA44=FnoU
zolsPM_&ghJg-q?Bu9{cGDDCHzXh)sFrOXvxHg1S^)e@(X797j;*n`%K-oz=?WU!?Q
zD(ToP7+;w{BqO`a@zY~gERRBs>H8qY7X6E8R>w##V!s=2_7!|Xe7Zv8^lgu;cXA!@
zS#t<Z!(`bcqo8=T&p3g>-YI#b&?0@4fniiT;TJ2yrWYTpXITz`HRJ>4nEz~l>y;or
zkbg<>S)CVimk$u==XRDcsyi<rCG4!f3065uydOkMB_O2$(@JnLQz|@Zf)#|PjLn0h
zFd0NFdLrv8A3<2nVu#RFCRziobmF3CjH1qOw0?t;lDEv$l7c>8{3QnZB^neYw8dk9
zZA3AOZ(*&KyaNIcyswNj%1KCwX3dy2pCfHo9{({Bn>vCZtqOLE$)K-)sUyf09w~>j
zvlpcCy_}VpVp3)%exxpCvz#F50|a6Jq%mj<93STsvLl8lcof9dqWLVa-%EDGIl|tN
z2RV^Rz@pm3q7RMYmb$WHERpj25S5;al~sH6dJwiFn>5TR%VmL?)ciV(XUH*WcwCSv
zb&H=U=1vq!p;IX9>ewI$MqHD)z`F)XrZ76{V*p%oVG(v^sOuG`n6C>hj7<L*f-L0S
zv;2~=T!7ap+Q+_{O^QXej*7Icy}67<ibjlJ<g$RJ(9mCS%y<icj!9~_#%K+2%c$ud
z^gRl5*NlsTS1abkZS^38@uR;nt)zTO&KAkC#*D>|HE)HFyM2_I3&m(K3jK1mhXO%I
znwz`!ar76&3rVYX|58ntiMUWgM;?-IiAVSK^RME4-U9i5s>#{vP>ON^;0h#GR#gFt
z^Qyf8^0t``f2oO#SJo}vwL%PPH9dY%XhKZfn(^>;_X9NcunWQ*BTm(m7ns|8^R6He
z*6St4bM%^r#=Zlq99;DbwY4eO(H~jlJgZmF+%R7Pi4)(xT{w`MlOCQI;1Mv6rCeG>
z|Ly+*`=-9>Q+MoB+#sSEXx5dR+bi($(p{pQf5jW4ei9QL^oBRz!#kd%J=e@I!i6-v
zGDg3A7|q2cj}n?HwF0Jabx41{%_fv~OE_2SwJ{9M-~1AIK$pDB%Qk=yM*himuxr_^
zpP=Ns@A2I^OJ8UJmW?9SJdnZwJJ1TjiHnk89vzvfF@H2GPYv%7VqOB5P*kh+FqLnJ
zAmlzzQPt{IAETN}4OP(Mw-ZMIf4faAVg$;gBD_LiddkMSN{B1lGpy6!i7kcDBVaB_
zo6{X`XewGucnFjM?&o>WzmI3^=(&N~Wi+C<N(~od?8eZlnRfB;*QhlC73Hjd_Kg5Z
z)hc-yD^lBd=kOyK+Jlon(h844)pub`STKF|^BaiQjVcU62?SvY)B3($+a4X|;B`W|
zc~})BUX6+<3qohBQu62u3~1N@_x@|(smlbLWviwIN~vR94;c6_mfPm`WA1ZfY>hM8
z<fr4wY4PUAbc{AxSO7m70b)dI)>tKNnsMWLM;X9s`L<WngIjLv;KK!w_!-$sF`pEz
zw>Q^Q=v%ZRm5eL|Ay!h@>M@u@##-Z!CQ#+TVBZKE;Jq%D3o02ihI%dH9GP`ek|(Y%
zVUMdLM8b!V)L)(9;f}$_-L222Q#M1vMM1M9VPvp?aeBr!1FoVGLp&7rlMD%EkFGz0
zKBvo0(|61bUg3P<3Y0(-im<4;AqTTCckj$)VS=!=75-4)nWTSEK-E1Y!J{QxJ9%Xz
z)Qa%HN_&2F+mm&hmN3%n^44FC`-78$<<GkBu4O<z<31U%-~NfEzESBIEA&C=wL*Cx
z6*NVB575+S7<CP~lrLpg`m%}vXL{Hic!2(Yxc-Oux&Ht0<A3xoqYJW=PB?Y4iXUG~
zInA~%YX1S&eCj`=3x@SZ>OL3Q4DR1S(8U*X^8ghXIcC{+y+uAcpN{-U>#>={i<*XU
zLzKu+igD!fTUzn~(P7RRXcMu@VvfcV+N+Cf;T?|BCr%hc#DxWLqJe3ebW3ymKH%$Q
z+4pcg>wr5GkSiR>W)9d$p|v@6Q4Cr2YOaH#Xp6|whe93%yl{`z_2TGBbcqGdFSRx?
zx#_<?!?klMFuIfr6jN(J#VL}zb%Ho1VEJq_n}H<TC3huqCd-oPnEGxUlS578s`5}?
z;p%Sp9Xh>io%PpA<vi+6N$D={xeRa26}lQ%MCnM2cfIMWu}s}<7aT8Dn@9rvs2lx7
z7YgfqN*Ghvp^e`X?o!}ByOW!N)PpLI&$&0d{JQpqG1(C&TAD{P_@<Faiq_w|eI<|d
z2n*21Z@r)xQxZh@DFN^N%Cnu}f;0<(pbH-!M*{=_etQQKleWPvMrpD<dGUi=VLRTo
zMX&>%CQfH=@9gC24HMl?GVtKo35G7+3{+zRC;2w6#G!5ijxz-5dicskNmlz=BD<D`
zT}2e}+EFR0e{DZH^Y3j`vN`Ycn649;vR;^s1@hMiKkT<Xs{uYF!Dc&W65}Cw19b)*
z+2z!n87BvVk0qkv3Qd1kN#K%w`mc57y6XZPJ1)oa>N+eNU_<jcoAPCeSi=8K>@XP5
z1{7s$K6E9Tj-^}r<#mO6_TF|W_+T=kWq7C;dxq!&4tWquQ>^#!{?H573JoySVwg5*
zoKi^Y)0q?ARLMAIWKEBkqfm13rmScKsL%6fnS1D&Tqi_yHR>}@bo_v^FVgH*AxjP5
z9W<j8AOr!<fG&x|NK#%^E}5wx*cnI=@{z7Ef@z^Xt=cHsSaS?wK7q`%sT51Bng!vm
z(iy}__g*gdktn!F&j=73!P8cUb%~{xPS*!*Do%6><xir|rUHOoM4hL^lV-aw^A`3L
z+9SVfeQ^`;^AraMLUE;k*<a#(RM0S%@UClYsIHp;<Rv+L`Y9i$8$JUX>v0LfK6V-P
zJNAF6reRGZlDSW(c2vciTx|hNIk!{wzyE8dT^I#sSzT4DrQQ<0wFMZMdaB@cA+P@i
z5b+A{f%aoiwR6j?Ux$Ag`W1jKnd3^++;-l=^#NBz*>8E;okS+%UwF%QuH<>4u@LA5
zlm^9#jN((#ns&hf^Qp8Re6g}qeyYKriVk%&`-sE}9d-aJ>M)wbZ8qdsH!@{>un-t$
z{!N;QiZ<!sacm~5wFzW<G==Aef>gTT`dqZAVt$OipPN*0`v%Dz@Mvo8jtj`A=kfw7
zmL3du`sl}E>1S#Lgsotj&50vI;soAfkhu5=1+aIo9xzvb?aI7>$=d5JU9K+)OREfy
z%`m+0y039DX8?_R)WW;LY%+K}*Lk5I7+TF|<+h67m?Je}8cbF+K5a!<$Jjqf4Af$L
z^0t~TRAWm_OHvj?yMyce-~DOiqMwzr)tU8;n_SG?=adR(N<73^Hc9MlA_(``14iW-
zI@5}mK&JD__JJ0nFloB829qE?4vInp3)J376&7;Oz*fu-(Wab5wvNMTfSLA?vRCY)
zfi9ifGS*CxP;?VYVX5YmtY(vQirpZOsav{<3G6L+B~F<ZvTLlaJhsrsAy;|>y?>uT
zKdjv2fdC8ZW%BV4CY=><8kNziM3T%hlk#8}A~*`%LH2*YTLj6I;LM&PfA&Kxtx+S~
zKaW5=&s}g}uQG5JwA_HetD-gLxL7x9teG_tNTh5G;#<<%P5IF4^JE{xiyzuj**Xy@
za2vSN#cP@UH9y2p7h6WD(LZ6|-9GgPwcUnnqQ&NT<h;QNGyU_DqKmJmsn|gK4C)qs
z5Id+DL(Dm`-;uc}NOu1i=Pff!y7qS!?oGw!%YO@`vwDm%-LR}|*j)#zuCGB#`8g01
z2*P65sTSl2TtU|qW0#xxQWJG7XRQcI*x~M6SLF;^2SO~ZpWr|R_HJQ018Zk>nx3yb
z{WuJRU1>2}l3R7G-MFf^jXV<+{~pOwg8B;}l7oemqXt5u^bpJrAYNFf;8VUGE4z!>
zJXP^t2Bzl1%FwwtS#T=2=x46^XRi5YuKEARxn_3Gv0VqXXU4pv;(VyiU)D8u7BT-+
zGYR08I&yZ~cyQ+@PRGHe{ZO!-m$^P@Gwbp80<TAATG;?%2e{3q4<SEzUZ#HP6J~YP
zs4@P`akJSTFxM=SnU)fOD;zrF)+loUwFiBdE2NP;MB;z4D^?t9w0%sKE`kS~C*i9X
zj&uFE{oocXY4z;l2{l9rQAx%9Sexpb(lRmE&`qV`-&DY97Rjqnl1>ePw^py;#`SgL
z`j&DP%fvNkWL~rO#)tlXXjMB`{0QO>y;Hgd;ytT!Gp2>~d0WX)0?7Z~)_=h4o%7oV
zKiQ}j0hIyWTo$-;@sB84Qei2d@Srf0I~=R*Z%e`~RMTrDM74oS@XRJ~3!i5UM=F`7
zgm5uoDJD`=dFX{y;_n-$dVuEZc|NyS`~x*L>~goyqW{v~JO75l##_F1yKCFFZQHhO
z+qP}nwrzLUySCe1xAV(;CX<=D@5#x%$xUYZ`5#uk&&rdvmLDsjh>jNh4v)R_FUiUT
zOTj7~oPAfCv#UVag?MYFkr|Hml^OyoH3!xd>I~PHQT>cn6RQ-wAV$KP1Xnloi&=Uc
zY<2}tgV475Iz8)H^!>`%;$zY)oT+0ub%2?Q{A;$>AjhuG{Uq-)=eZi?J?04)7(rn1
zHM&!|g`8(E$BwABUkXX^k_GAufMRJf{@_d+kNXFKrp0DpHmXO!q59y(_bIC$#LrJ2
ziGVw62?9lBj#tWI2pEfCq_Vj){6r3J6v;+bnW6|znE|Plfmvh5Fw|dF!4rU!B+*|$
zTpl->dc-K0CrXUz3kd5k(yR0*To2VNCcG$dXs1a<;W@LT;$B2fVYVqY2Dz$E?Qixf
zx}Ve7RiJu!VLm%2Sq=^Wr4Yb7t$0#2(e|l-K_rAgi*Y=O=E-fTNn)0cpl;Wx|Hg)_
zzJ+9O-J-8~D}zY0-PRmAkD?f2!S<U3Rfo<Ehi^sTWBxj*2Pr~b2s#CJOulS;_`;3I
zop&2pBpZG2nFyt!>4h8m^Ywa%dtCH@i1#kr;59><>Yrd{mET+PO=papwApKY{2~*n
zjc#ff&6zgsN$&@(UtyO}VJ^L~G>)yXg+{7=bixPs(CmO=p7uoEysV!-)B^Fp_<zJ7
z@BhOO{}camT@oRn9@De{(%^HO8|UO09m<0~o&UKm-C?m|oGz-I0NaZe_GAVt<#s75
zPtI=06tuI-qa(GuFvo}23M0RHAWtp7f2||KEx2y>=t2$Op0`kLq?=2hgPLoquPaxX
z2q<@*qgW3$5BT^p5I($XW6Qu-0@Iq*pMEA&F<(e9A6U+aFjDJvnR$i*$dC=8+fz7v
z)k4|#u8Ivt*o69a!o>0HaC}*j0v%7i5Ic`R2!bl*4;<l@Fj=S1Vxn}GKTkI&*J_}*
zEU2-NPe=R0*HVI=E{h{g10FC}YQS>*nL4}!X`V^If6C)-{MJ0ylFZLUK(;wrfbGS_
zmYy_s%HrFpXM~wH(nkTD_bm-cMV9qTH`4c?a?7D-{h%f<94?hC!tOhLiO@Nga@oX6
zb+Gf`5vf~<ZxoQjj#TnIo+)ZPiq3G4`nH{`qF$u)g^TbwH+Jca2oRbY_^sg+D(H2z
z_mbcxqWK3WT}+3Ly}!b)28Xf#{*Qwr?M`6gp}xy8UMQh2J8^{-#fX3>j}l02@QFt4
z@A1qiFkVt5D-6F1lGKZjN9Y|jxODK%cAHE~+|^C*WcJI+ddSNPv}EkPsTaK*1{Pp4
zgS&XSd3?JGS^@4p8~YOVIqVH;8}OK5KmuL4z<|pIxdesi0xX|cnSm0)J!tN(aGJlp
zxM$mlEyWW9M|_?ku_|2P0FTM}e_taqX*Y;Sr~qO*g$@w4b(D1nr&IW8W4yRO_t2F9
zbA7;?M=et5icO}3ki-@-1+cY69SN^6w6otjwRll+G%>y-JOoFMpb}HLo)mcbYZ?K+
zUVua^^LvQpB8I;Tz$24HB+E_`3g+Qg>MRzHYGPMW6?gR*ELKgitZ=KTGT|+9<EEA7
z{5$0l?p-2l?$^UCOcf(=Q9KGXX4$mf1D3|wzYxb2K3zHc;sOlKp?ax$z^nBW#YH3Z
z%hCAM)=$XJ#j>3g`kv?pH`OCZp_H}U)BjS>_1|ARu$xN(g&jdk@Di^b(J{RKS-&1i
z#ThXi|EL@;8S)|=K`<hWr8o~tcKa9AEPd_B1_YLoI-=nOZ!$k+8!cQ+|D&440gRse
z7g~q>IHy%ke%y{~3<hY?n4l`*S!(+oHbt*{*Dg^zB-@qr0k5eT;WL^Yfas3xX7U6w
zWO#D$dhm<^?c19a3>8w53MT&~H_ce-#JX}Xl5ZX|bK8PRbS30`wA)*=4z>s~U*j~N
ziNLllhQ2VmvI8_5EG}+g+AL!Dx1IAlcTeEV{<X$dqx^ESvWH=eRZ*t62G~#smviD-
zG&<Fd+{e1%X|#&tY`2{$dx>7CCi~_`;<-VLvu?F|9aF-$M@U~u5%&z}Ugall)^d$D
z7NT-MIWtf-H;32qPY_C5ME1OB=gO!yT)b;~2{S2*<nawInzl;e_^nnPH(GiHD|fA%
zV2<FS)7>{mfHO(q77F-lr*u{XrUm$6!Gzrtgk$k6x9K!{sJ~4R-69i@zAJp_w`R>w
z)2F&!tb8<@wz-k)R)(*_RiB>-U6-pgS%Q+SR5tW>^9dV*rl5U-Ul)Q~-bPWy1E7YD
zU-^M6Z;8eqpU`tGNJ`Yij~Jl=j@!`ih)n32!3^_|YhNtY0QEwM1u~VYXMye+aMefj
zyX8okjZCJ(no;171FY}WDB-eExdZYMcgRgIUgGQ*E2FC1rrB`*_RzZ9x9Z8VZJr`~
z6aCYKU!Jme!TKU$uQEHx6VY}7y*=g9jW02NJiZ&X7@?`E??xy@?n8v&jRkM(fbG+6
zJ3hu@3=sVN1Hb!n*G=m5IKLBxX9e({Pa%6GPzo&)?Jn@al`Pe=<H|GMUp5^Gl!XwR
zGZ~N&aPu;aB3c9PR|j{<;b6ZNA+{q{4MReyn4>4KXx+1GqTSC#>8g^@ooUQ{BOnu~
z&~U(FCohXS^DhjlAYb!}kx#C60{6dOeBB<IHeF|^XDdS5L~)=^<33b@YO#TMt7CNx
zx`IN1s$<AU1-Gaq(=y))U0IWA&z6M_FZB}#K*r=yUVN2d0F!1R%`(E)4=YxPCa1m>
z>;GCVF*UKD7`udj%V1t7qbazha{wkHW=dl$EAY)kTAG0Wi)t9>6-&a@DO;Qt=Z(Gn
zX~Kclh(rHT&EDzdz0t}Y(NMc75SI0WK(G#xo`9zDbwm$l5w1)GrYu(fl%`oa2a5G{
zaPgDr25g|x%gygrp<H4nz#Z5#m_4c4EG9j9+YB-tsN<@rJTf-Y!{ml%or<o|nm6h^
zClyl9-#62ey)O6xzq9(x+bly!Nn|w!b<Xv#SXP_samJq<9+hC@mNjFJYBq2)?H}?_
zl?cWX{;(%a`!ll9Y}d>}Bf<6aW7-V|xLGRwjm32;thc_#_NPs-!8U@$dt;AJCwO+r
znXD3h#xnZS=3uE*QZA}UkdKcXr)h}YG-NQJ<BCH~?YFJtp_OA*=~KdWf3xkh)Onx%
zh1~yU9@;f!?jZO3QOF)QMC@<3^z`M1q@XPedTu^d(?U#-IYe+A;Et)KDpSrpwUW=w
zhRZuJ_5tWHs46FeWSg%-gK5{9kR)T&A59Rn@|Cy(6`>kZ9AZva%YwyzfeV0uj;6!V
zWm9vK8zlx+D)iFC$nxm^_#oTgt2Mk~O{BuvfAy}K!@YcV;8G%2c9UblpgGiDsZ@|~
zFSK=vGmtSB>tdt*XdyqtV!%mf;s*+;?)Fb60fx-Ex2`UH-TV$+YgWSFmEQ0438fx+
zyk<TJ8-6zxtl0<~aj(G;_ea;i%E{!FE=e*g7Ye&G6uPqE1u~6b83M?I8{XbcK+*2`
zg)+XHsEgcOF+mMm01+x7P^ZkX`s&BUQ|MxD2vwP&?v6n`d$DiT9pSMEv10cil~1u2
zYa~PwZ164kZ{n{^(u{jF4A~kBm~&NC(;DK@MWs@fWqbA*B<97^ehh&Qrv)4l#^1!;
zo@L3Xx7=sXe3vAc00~(=27}YIk*J$1HwTZgMM`_lpA=n+Wvu!&o;lD`!m4=n?fZjS
z($HNJeUR<DNQT)ZT~o4wNha}yhmeiA#d7;TJc0!zqkKQU*c~S6+exT|rxquR%Hr$>
zozC<_4ybJA9_Vi&QrCCCuIsTM6UJq2R+vQz7DrkMA_O8+|52d<>jMqEbBF`>931%B
ziT>G%{@IECukJ+u`2Qb%_|N&5>vCbLUpQcpIFGOYGU1My({?_FbN0`5fdSK?jpH|9
zscegwcJGk@!K~q^!oDly3+m>i<LxU}1VQsOmYceYql?e+)xuE$483SAVO^)}HBb`x
z+Q;9J?O6R3(!O-K9-Z1k%3!+0fOi}5a&0tiRxt$&F9=H;tgd0C)UxwJR&MN`Z>gqy
zh`xV(F{v&qbWAL~IAritSTz~jQ)?;%#_o%lV>Nsu(RFr_S&K`9@5FY~G|JE*2;0M`
z(uZIHE^|<AC{kgya1!i5qVlqdRY--UlE(7K(Q)D5;XQ08z<Lehr`;6Rd-n>o63i?D
zm6fn7$P4a3XdC-xbjuGeQeE9Z^%`Yv=(7i58;pz(mg}ymm0S2VpBR?Ec+2-N!G5P*
z%!tRMuh$Cv^3tt!4uK|;*OiJF0V0ajld*6?c63wBRV&om$&Ur1pl0@VDe1GixOR$T
zB{K(YGm<1?-!^O(c8^@?nuNKJvX+!_!9{myHfH*nM+j~rHAvkZv83K#6*exYIjp>x
zE3qJMP3B>HV01apUZrVBS|Xx!u5ah@5GA*2;RHL?e+%Esy*j$IJ81c>R9bEolk>Zj
z1L+*I_Vm$GU+rl7qs_rRj!XPiH!~E1I>ARG2SRH<CWaHjQy*hL56F2fX0u(Co)VX=
z_X||XVxOlVj)3uqAX+lfF^q2>Fk}}913`TT&8Y59z}sAU7ZdGqK*Qcsm>faU{5Kty
ztIBL5W=A9G4yjou)b8UrgE8|%wrFJ4K%>5INO*#9f8m7X?kbVsIm<ysAO*|R1BAd;
zO9rdUE-CRTLHA#cyF8rVx=$wnCQ0HalYw($=x&I~n9r8r<0=sPlnB!u1z;;chK|^p
zm8Wo8aVL{;1LHUi>*S;1CGwfVztSn@W7J%xiZJ55ohK-xYwU5csc<$qsR0=?*>DK>
zo*T?p<ab2}mY=Fgp{gh`ztXHgM9BpyS8EfddEJQA%ReB3Tw-@!$|%&95^Rb~w4E7%
zUi<DRJYAGMSc4>)J_P~6U;QhYPAQ!;Ry;Jii8!5@tNukbZ-xY%eR^)<X-nvU<#NgZ
zG<B?X|Iz<<J_b}t%4cGWI4rij#0%fNQvdNb2F`Gw(-0XQ5L1+YImq(3dO_}C41Je~
z?121KcD@f&T|e__MxHu2o7$+z)uOHAPO_1`zHXexUSU%wU!wo$M;T&kvd-lhGEIqF
zRGBpTOfc8TRG;}>TYjJ3ErMh&kQ1%oOK9*dA4)nBes0AS*{lejE-}B<2Tr1W>wxqA
zEH#a*#qgbAvO*4`52DfcVi_DW<n$rA*Tz5?Q>*y>8SI>9p2!4(jl0#Ye*9@&9}lmJ
z;KK#_{Vq}nyijR;OvQC1)iT@sCf;Mrurj4l(9a0ubN3`lUk$F-e6_F7+zy36qh5pj
z{ul+j)N6W9nZ<5yp4~bo$RgNj8uNlgu;<e|1rIXrz(y<g)Ie@-m_ztBIU7ztO1oTR
zY9FRwyoM2(EmJC9bROrsB=4X|v_4uRFi!zwMt4I{>>j+)95Lsi&e02RDcU#CEQJuQ
zKL=Lm8w!xPmqu7-SuBONMiTHh<o1CiXF;J9L}iVkoZ)l*RXG?Ep(qmxlz-ciXy8Z;
z$!JZ@d*-HxQ@8EmLX#|7QLR^x)s*>z?j)rMWz>{N=cCH}2qpvqAP8iJZ2rt|tQ|v=
zV^PeF^jAT!*N};by7Y3LO=x|)A2NR!ls8U4R1mP{eoj*^)gbX~7#ER_K2nhp!gvbC
z(6Lyq(i_Cxm5*Gq-N21#$K1kq^>#kes}5#Aef+fr?z~caSTwnz=&eGGaUXL+eDMBs
zd}QWs)o5bqoN)qCxk5y>23SwCbHI?<$|)m<AC;IxcXD}2?>*^dF%J>xcz)-aLac%3
zD~wigQi&CzD;|>ELg(d3w2X4~p4Vh|{phIpeJ@NM5-2z-_YI6S4C3C7cHA*N9}OPJ
zi=XI4Cu4r6y7kawqxst*Bo8=CFUE?Bf-fkmW{X$~j%5BgS^0@eP}8G=k1HT`-So|@
zZJ_2wD@aT!CO6}jJ!r%lyAb&WV%<ptyLqW^_K=X$tIolWi@5KIi6Hws?ef3<WX5R7
zO8RB3rt2((%x5o<t6oGG;{Kx=5}k$_KDq2v>?wf)!o;C9Xs=Et3;1~Ycwm{JUGeyp
zJs$@E63Wb5+}gNu^h5JqWe8)Z))bBbS=d=0`RoWtDPjTeRN-jOy0{kyl}$D#bi3qD
z!Z$2x%w3^q>1RBGBa5Qx{Co!+QQPdoOTy3EJ8`Neq6IZTeV^N}g+nJnHi`xvGT8Q@
z*#;ZJwyI~6^+~AU?`GDWJYz4?-m~djn+gR%YUtm<noQPi^MccI1Lk|feI8oErY9I&
zfE37|d{ib7%YCh0VndoE-rS$FK)4l60|;mbuRh89m1ey4xYyu;57&(NeUlT~Mq$2i
z9}IG0TABF(!(;W`HfAC=DTs)9XzE*dbt$g^MG4NM^b+}hb3gZvXvLj%A2ZME%Gha7
z`#N!XD{|+IUbS0<(&!mQ!)Oc+)Br)bGs<HXpEreO<0$4WL@qUV&FA5fK{3pOF{qKU
z;lx;(V+gKFZ;tu2pYZ9bfH$t)Ts*@iW*!tH-;3BCu=Y0b?lBys+V)mu9ylDH?g0Z8
zPGgp2M?(1zw6AFvCKh;M7qoMcx%jcOfK+HIm_~37j_vRhv>Q3CLDsprr?83J!%*g#
z;--84L`)J{@{fwUaoL>9)S%F*63^Z!5&=depWUac__O0TXD>s20ByjGV~TQGv_K(C
z15Mw84!c5W^PuCmTw_uYMiLY2TRpEQ#6m~S=A!3!f(m6f@X@xNvWWk2;e0^Eyyf&o
z*}XrV{Z%~-bXwS6u<ye~QQ@?YDj_KRwrN)6rKU+t^i2bzYB6lIRR5MJghz!~12cE@
zi1D6s^e7lhg;f}N7WyDN>Uuu%N<8cpykdRAjc+QTl~Z+`Jpynu)G_OT4W@ep<OU+j
zE(@Jm4ctoqJUb=ePrhj9OzBZfXKd;L_`nI*ca^Z{Wg3kBc)tyGs8E)bNHhxfO}E9H
z6`YFpQ3agc(p-A-tLfA25X-8_x6wlp0hBAGscU}!uE5-!s+BrU|C3?M+5>v7(_nwX
zpqwyNKx8`m-&!-%S-%Yw-($VAifSnASL+Y%0NTU;QO$!A@#vtI2?fLizL#+8wc)`r
z>8%_FoE>p&tt!eIpCwRh-T{mcQE!5sW2Uy;Ui&9Ajrsg3`^AB?);GALl<oLmAo8m+
zxmIYx@uH0qXT6TI3&Gfc=Z}c;6!|2c*#vOrJ<dQYh)soe_j!@{n@4I`9{7U(5qSAl
zMtWaS<heN$6cnDcu-A5m3Tzr6KD2^+1HfKh2_glFf<rX$xxoFtO=n_qc`%zKw`%!4
zuz1%d8<MQ)HJLNf#rQ^`18($Yh`CeE&slLO6SO+19sLuMLlG#PV#mu9AbHM_PR?Rw
zKfkgu*kB<%?ly&d&CSjXV%#a)tY>J5%SbVD5O!UnN4bntGnemvZj-}GmYvCO=Rv}}
zSsz>FW_TP-^0WkgR_j(yl5fR8hVsG5@gh#ynTrg=D+Y&T4=ot~;*XB@M<mQ8$8Z;?
zDxDN`6-;h+9G>pMWz?zWR)6p7llIwcr*8%3iYl9H04V{)mn9k^D`z0P>A}7198Vv{
zAb;fBHMtFb+eUB#(hLl=o0w|%BSMs-RYtoZWrNOJ`B!Stb_FSUB?-IFH;RutjNOw7
zO$Jl?Fc&$x0N_Qmb>QaQ@z^Gyjbsd1NriE^nDJylgcv3+kiO#<P4gI+z^yt<knxvq
zy`41z_pCJ@nE6Dz(t<zzPh>KT+}R%>Dc)DUm$n)EQ~s;HN<PTR7{?}W)SXtc(85H)
zl8BdXK}F24nJWIRG%zXCOrt|~9|U$Gc(jTQ)?aDALpTl%i=3HE!wfbGgyn&m<7vj;
z(ylVV_8B>{wTPRt960<j#+e<fZNCf-yg$vI_%y{pZ_yaFcJ(F9O}Nqp+v*mcMRTTl
zF05>IYGAZ?UsaS|5+|laOWgOeNy*al8Pg6v3*R{|ANg;-f>~;}bDmH+H1gCxO;U95
z7}xw}UfX3w$ySbKVfaUkJD~+fgKCe10#s7MmhS6c7BuGemMfL<@|9Jk5x(OT8R(sg
zM|*{i7l8EuLYOJ{?kbCQv`YIgIl~|UUg2Kg&f!|&SmErUZ=q;@)j&LhZi7DmbpQSE
z!w*0FpUA&Fmd2ytH_&pV?8~0d(uht%a+ZP*uKpup{Cn_3X>xH8mga-cUnI$Q;Bccb
zp~4>olzbGOC0?|Dk$)KC<2q103bpzaBKOyN|KoZx!RsBcmO`vf056`7*1U(`F@zoZ
zx9Yrw@yH*5z@;Dvo6V#K+4?{<t6Q?~l7vR{Iz43<;RVR4<7T<a-p@QUw9)U3Hyx0x
zQ~QDTA(|yG9>qO_308PV8W(B8(`Xhz`6d|Pc%TdlW-)<C{qH)P+ALw?awh179CmUi
zL!K%GN7FtQJ_>qJy+g2~@8dwk%bUb%zBfR7E!Z$+yBAafpn8E5-X4#dfSUHU&jrvt
z%Ars4l;K_vl$HuPHR4ZH)Jk^&?TPJd8eLcj{Sr{!TrCH^FuA|%=yy=u)IOEK2Gx{F
zK3WDGS;U&1tB|;md+C&9mWi5=PjVGF@#^t~Lr5t2mT|8WR7hF9s(H!*SH<`xIAkdt
ztdbZ#p~bBlrjTo~3ijXMeH`LfXDQriHH6aEm}xYixkMBaoZ8k_Pm{1o@-2xa>8kFs
zUt1J+>+Ar-BCkt;0Q+EF_sy<d>FhmT4BElz`+f-N3lm>Ae0llyJourOUccz_S{?L+
z0C$XSduSVfGhs%BCBY5omE$`Vch5FNvlQWKUEG^_)8EgI#+yI3auPLerQC>Os6=n|
z9j*!dVySfx_0e@}hNzwlh0r$d;X?>WVR?x|8<X*Sg;43BLt6~|_Ja@TU~I?#xG|DL
z7I>=_6TYG698GA-qh!e=@PraB?%VOdh@6NF!qGZ(@Gk#c)#<}DDVo?2yRUMXL*bF#
zu<i48%!+2dntn1I2Gn|28?0IZq(7rUsn;V0*x%B{@W^<X5Kseqd_YsUkt-uXtMUR=
z&~$&qxqt9OovFBvw{gVv{KmCRZ0Q1n|2>;Zu1Bv;&!kSssRG#UlW<dMvDt4*mZ>6?
ztlc5l5jWum{zRRRTxkTLo%z=i^#y{py<wDi)_F=@V&0FOO&pg-I8Bq?j)ND}!K8dS
z`CD8^(&wdGt#e0J#Bg4I6*mm1>8Dilr&RN&RP+C3sV0KGnH|2fiH*ITqk*FbzLCNI
zlZv2{YyR$POp$V_88JHFq#Xp;ROkJpBCW~yM4DqYlHFI|G{6#f0<#>-PVQ&ni}`Nw
z`xu=yGWfea4EDC<>y=ibx;8ZI`&qREbp)w>83aa<d1EGNOc_S~x8G&pNj-Y<Frjm`
zpld8gfG@kWCJ8Y%eAvf`70&C_JpOqcS)w?~OYzdaiy&IH;>}D4<?F^|%CaSpuS?iq
zqTn}htlezWu#^rj1m@a4VJ>I93ahCLUyA^8Xt-sm>)!<4ykX=?sGyQQPvQ+lSY&L<
z6Homg55QS?QzdZIZwpo9CPnH-kVF&mnjY9^YxG^hg6lTMUi3{x60)N0G1~>8T-8tR
zR0BGwN*;J;fhlmLk^K+hQF<;j^XL<w(`i^%UJm9QWdx{?o<`zi^LsEHETeju{KQQz
zi*`wKd*50Jp<Q<{LV{Hj(ncr;CCXSrG44<WYEu!L1CnbKj(UD%XULq$tWkho_d5N9
zK9lQe!+2dWy<5Y10<!~uEENwbJN{%x0jn|tw2x!5rA<{_M`44JnqiCd*g|d}^{8&o
zU{f1_dA*eG#5@a<8C%xR9XXCb)PH<}nKQ=vI>p@ore~J!%|o`QQlR49#^3Ozx3)<c
zYf^<HQI_xc2<4*)w4dGLT#%z{pBwLLy}%<h@fM44$p4@O#geBC&d45degHU$Fd^SH
zzXL77fiQB>!`E^kn`_KoWrR&e+}-b+0A=cG=9hAAHD1>Dsm`htx*cyp;QPyjINSJJ
z_getzl7qk@{xa7{Xtd)tELZh4U~DQw01(xkK)+)1q-V-s=l2O#z4CnM0;9I0pn4|9
zRuQAWF|iK&0^)AZ2h3pwd)fo@*?!PjhGYZcIkaLvMUXV9;Hbv%<IbOR@(MtQ3`27y
zd$+sWnF9OH(sI@kN8U>_c`hr*eF)UA)xAk7Is+wSWv?1dVqF;je$eAEUfh(KMNGRy
zBC*lRpex*hTA^ouAUBWcVdN@M`B?vo{HUc%i%HZ>Q;W=+fjgyxsSRAGsuJrav;m-@
zW?1RfS=r$G2j18Y+ACmWK#k6Rq0^5~l`!aOjE+d`Q1g#F0)YQfLaY!tBEglxyh2V1
z%Qiv8HTDKhPHuLN#xzFeCPr4kswR$37IwBj|NlSy@SpRu$@H_y^s~wI|KTRnPyYWW
z|NoQ!|F7o%f0E2UN#>s<^Zz!<{4c6$-A0)gWH=Li=-}3FZZS~9V&IbbM>Tk~9$Lvk
z?)zF!r-8c4Z0Q_(@q=d|ISgxFoZ#4o^8mLIoe4dvRT)8FaWO~>4w&-Jt_NsulRnVm
z$t`D&=z}e`=_~TYw?}Ewn#c6ch_ml&nR4b(m}xWZAFfdZiI{mVfMa9DXUz74g1a#W
z@leR2es9F9m?7lkM`1$(wX`X>G3PY69)gFd2;-VUP=TpHIN#@9H$eI^S-SQ;5y#%1
z{tqK~hznU_+?C<|>^u`Qu;1V2(j|Y^@(V|HH`?`hX|XOBP*q)1*w`fIM@u^3Oa8vy
zmHz7Q4;jwcZ{btN07PePJwpz3Ar&UUb$z<28zkF7c|JG3`3Ptq>K;-^xLrK4*o5ZZ
z81(pFL=VAgQ6pUW!XQ`J4o^Xk%n9sZRlj8}H5^eu<#X%qV3xE><h1BA-FQlw^W#JB
zwS{agQ=2?)x%-{w#!$^1X$Y?GoGgHlhX^%ov{k6F*?8DnpG$Q2ky=u|-AXCsDvr3r
zI=x`!ULN^shWb7k(wurP>2xTQmBq6fmchk#Os4BN>{=rJSE?Y(j-d=1IJSWW63$P+
zLD2z6aTG@V&>*Z$_4=`*VuE44y6D7v2qZ^(4`>5FDl%kU#@-iVc9-?w;Fp_b6lSi2
z<g4o@z@HM)K$Qy6;gve`BxDE@3qbLsbR!9pnzco>=ko*R=TbW&xmo%*fZEoiFZe8t
ziHt112gNMfT}h`AOX@-Y5@#R7rkLjXxD=@1s+DsWBc%}Z3&cA!_Gs=y6I$~2cE=Mu
zO5NG(b!EZHuKRMTMugcwoae%s=VQyO?lWD9_DmN+A&iNefRjIOSf83x7t!g6ZD`WQ
zPUbHwM&-KG`-6WP+Y{sy3NZ*A;`NlOcnWnUdWGBy8|4@b<PhGu`-rzkJl;uF+)UkE
zChPYI>N-b-2(fCn!nh=xurm^g@r>5&m-?+RIcrA5{S$0ON2Po9`-iaMU~~Ms7AWeP
zq!;&G7&NXBk37&EdqZJYbZgL5YQ*pK-BF!sk~D85=d+YR{=5GV{gwRd|8JM|!w*0F
z@WT&3{P2G#|Ken>Ctogbs{Bp*xW*=t<JDl@4P?sxaWcTde4`iF%T|<5tuXU+%Xc-3
ze=NI5#-%hM?U3XhaB2JS6s5RYt1;TncYuLV2;|<aN{nLD<}b$lF9S;va{k_TnEf(u
zP<-n*%;I2^kK>8L@cfv?8|@pyL>Ur+R$F1bq^B#su;{~YH{8VA)^4n(b(Pv-j`!a_
zMF^;QttF~YGO+H;y5$`E+?ED)%f32QxQy%x+O6mf>LHYd)m*d>nma}<ct|XPp5Ioc
zFekAeEvdv+b!7-;e>1e?&u|piJ?ks~0Ca_f>{hCjF1HqDQX|`I_MV=V2t*jhmGjFT
zgqqLJ!8f^2W<HR9E|>vWus$z=nf>(Pl>#05;=Zm;)ifW?^jZrWz~}OB)Hya6vxH*3
z<W8*ol?+XW!8(~|*sDIVr$G-WokIsS%B102JwUSCa>mBTvX=e=GzlgG9G})Q%ar4i
zA!ieVCGnOUd)=J-mk+hKj;89ssTGi}t%tz#f)<56fx&pa=tP-{y<Cs%j!OV*>Nlu(
zGBj>0`&7ImBeraNWGffMm<SV89zO=PRFG|4s#bJ3$gi;0hno&N{orhJIjk=Bf<uTo
zBtznM!MIW1&bPq`e38f;*VRK#go2MinA@ikd8lxYuZhX&Z#a{wy6BQZ_S_OtonAs?
z@+Oc*BS}o)kZbmX28N!*=g(5Wtof%!)%iCFr%h6gCwgKTf!0^RT|vNUu>yboB4R!#
zm3%BmMlet7*joDuEKz@dlS5%@=RTpYTjq-lrcpW_O|ut$sB5F|dgN6DECAZ2#EO11
zRU~>tPjA=BU$L9pcCLqUS|?fKhev7!VOb+8xg!Vnx$pX#>9rk@M!zn#tj$zoHJ~oW
zFUm>yV*vohbo%NElM%PbgC!=5V-{U3k!xwS?8_atW7qC**caO4EI@0ga9vt*Anh-j
zFd9Y<pVq;4X6QsVXobxRloO{Kmg&JumqjTQa-{vYx@h2dyg4Eixuf~Z;89^}5dnx0
zsTG)*sZvP{D5oX42LVCGDo{7xdLaL8uJehAUFDa$HOk&qMV12dhjBYf;O9T8QG|tg
zJzDb&4oWWOD+8#b0D#)6x@ucZW?f!A8oc%qPqT3npIOGxV6K9`iQs-T#G?8rX|?p=
zyH=MjnBN5!taf279+GIZC}+6YcxddqPzJYA1@XwH@YxOp(6o_KJDn81I`@3+Kg$SA
zwUq~f(Trn4$@j&^S_qp+oF&c4c1vg@jh6$3$-6YA;qdf27W<<zv26?i3QzRGhq#&V
zfl7-ELM-Y?_vYJ2xspS#54%m13_So%+@Gr;B3J^<_@G}!K3IygjZ7mtb{yAV-~Q0H
z-xA03HRlO((7*-4n#751hd7i8Y$n(jP&Rx`;39WxbfMd+5CC;$C)w<bdM+8^415ov
zK*I>e@R?jf$WBXB&F4(IGXA^x9V|f~=m9Z&f;l*lt<d{|7HMGgkn!r&ux+OZG1h$2
zu2^;TJ*h|Y?pN0Uq5<4?5KIoFDDSoHor+xUf~LM;q9={-(d-trTH7JCyhgFKDzd#;
z2N+OHo=Tsf`_b&JTs?*<BXCJf<Ee{}e!3y`B$^8)m$RzeYR+D)j{kUs7>jK3!C$u$
z{oFlmB_vMLrDK6L+py*w@plpjo6}tVkjZ;kdJSJC^r&&e!fzaaYjs}YtEqfp>OHT9
z`9`tZZD!*t2#$bOYAa%~IyN#i9Nku$O8OMH45oygta`O)jX=P&Xd*j33)f*r1lbMs
zsI19n@&Pby!*8Ttu8Pn2*y)z|B5Zc+6N+9z&f%fw(*aQ9>d5L4%&3oy8O?t+kSTeI
z5&;KUqgj#VdLN0I99=m9BjLs=($8TUyAtQL0#6c`K2{xg_MjvE4hioayl-Yo8{2*5
zoa|y4TWgMLmG5c+go;(|Lk8fnUyg&u_Q?d$ZMoN{a5+Y)L+sdi+<{~YL~b_izYJOj
zSXYIF(Ddsu!=U?wldQSI4-#^ak9X_sb^%tX%sv??Od#~|M7d8RgGK0P$z^-IfhULD
z96MBwf-koMUVAI(-dYW<@t~7wqG}m1-+j@?j5vvC{LXuUW`6$vfB4})=ik<4s`kR<
zH_mG+?Dxn*z&pKoFjT_-xh@&VW3c)oLz}NSQIvg{c0-5|rOO6mV_X`&W`H+wh9ym~
z6-?!y6=c8u!o49tf=c0}k0=A84a$--%%>-n6(ECEz~s8jD~zn3Gf&*iDyGcP&n#mv
zJXcw7w@Tc$w7J5-o2R<BXwfvfAo~a+P=3#Fd51z)=!9rb9;@jCS<=Y2`q!qDTyBGw
z#jGs9LNAaT0FU<1+?kQNxQGav0U%zl4V89U3aE2eVz?8(c@>ny21>eS6@K#;!h?~#
zEStP_PqgaKfYXoYfRhm9V7j|9S%EeU_6yah%}matDM%mE;a%mzx1f$ScJq&?>oxf%
zNcSi*^`)X>t$)frn>!(2ZOulbH?EkSgts`*(xn}E?$$}S?}=`$@!;RvBZxRIk@yIA
z3=R(SLjk^VD~h)$#_N#9D9gCY6OZzAo)6i5@0Ut<<8Y8f{a%Gm%r>Tshx>zWlk=;z
zeXHpf(IpJJp+L$`mF~$TTIaccW*zR$s=^EDF}VU9;g(MI!i!oZPJN6JCVNv4IC8=H
zy<0%L@a~?9e+5ElFMX}ILlFrymLuN@DiLjnqXQmo&Y#Mq&x%m}Q!eSSKN62LcB#7x
zF~ZZQ^B|fK8Fqq?Y2$6gq_?k|l6!*xVzHI<gUGDt`X#t2EtSLcC@8Cr++=*>P0k4_
ziG*+J?Og5yiOkS!>zjg=6J)M6TL$S<&|dgDWx(M9oxRonI#r8}oN;fPRoJ(U36=Kw
zD5J%J)Gw(MTAAqJ&#5(;U?-veW^1o`E}Js;uhBI(aqy)Uv5vf}tf%7iz*d<S>s@UG
zf+V1h0<1o3K1}e0uFVDmcb^ZvVv=RtKiy<!@lPfz^zjyn{I~br3h=C~bk?q(UJbr5
zjl{zF^gK98O60^M<(yI`9y>6#U7QuHzHwQU9t$XX9&C!>t2FZp(>U?xqN@Y|_upk`
zFnerQYgWF+MqY`Yw(ePS#TM%m+&Xr7V$usb9l1p!8L>7DqF;rq12R@Z9oi>8W0OEc
z+!En`;d%b;C$l-oRc6|(&R-wH%SL!5YL4tubnQR#|KK{_?yOpWz&*8XojatDVa(&d
z6fhew2HrlBq8<3_aaR3k@#Fc@4?UxtXIg=3ltmGc+3f@AzYp`Er=XD%c^B36STQ|6
zC3~c6V`%)p-lZph?J79>5Q{y&1?at9h=RS~f_V-?#u#vVID6A(pgufGj`%xuAv9jc
z_uy*>NR0HXdkB@~=O46Xq)M3Y-lv#6eVAtwG~_$Hx9_s)xOda#J&L7vBp=bU4V9_j
z@;JYG;(gGk%6~YPwJyh_v%6=AIOovJ%SbBo;o&QMNR*BFZ$bi$p5eD6r1Z?t4WcjO
zS|E>#*Zb6bUZO(r804aU88(%x+_gKkvsGm}Wt$!wv;uFEZlxp*LbLhyP4p9`Kuj2s
z4Y^IJYC(kg1ow;%G54O&I2kzvftDzYMS2M*GF;DCDz9m__<~f!3bpXb7OF-G%)xu#
zpvah^b<=JacsI#MD(~l!T+ZcLk97Y%L01GwC+tU&dtJ3|F9m@A`crCVcoJA|hUfai
z9cQ`O3-rwBWnj8&5+ouaJji|(qVZSfaqP7iqE;VR#dB|8@cUu$FI96WZ41_1IQKfL
z&Z!30eUY_yz{&6Ga5?>GXxAa@S{K>2?ZjTvulamxOa`KP!wMD_zRZth&;An&O01U*
zwFQ{#X;^Eo3p-~+8~goZI`O4f6ksN1oOx!G=cGo7jF{d0uB>0ruj#_8oR06Q+cx1_
zR?K759#DD7J`PY+`&_3>jZPRzs>`|L;Yrgz6cAQ;z@OJPYF4r+^f%n4Zl~3?>KJCX
zn3-lDik-UDt$h6O6IVBedE_t1XMB3@{*%+i5F5THdsa$sCTWvSyHvuV0hvs_PscLX
z*G{ciDL~ga;YlEC^+U)P<*n3Hx3IVzJ89R%IbRbDY|Xv}hVjfVMFE#36qWTo&iOgM
zQt#+D77a;JE5&j<z6XY*d9<ia9vKoV<NPXXI5lU8_3S5FAs9f-YS67^l}QJ(WZ7WM
z)^45ggARWE!nDAtbeE^IwuYtE|CVHajabGm(w<I@JLYq>C~hx5yW55NM>QMf?BSKA
zR7jaDd)3cZav&HWd&0kgL1lbX2TcQ2<E@BB{-o4(Q^q$ZgQBv~_H!H1+(b#qFzVtY
z&=_FI1nXK1GLK0-14@fce&f)R?_QwTW8;yvhY(Rr&pFdEYsY(VztPsAy7j_|)oai4
zqlkz4h(j$UMk#ZyAiM!RZO;9+afflNv;q9{TQsuXWQvhSc`zp?h5qgYY04)T2j2=|
z129SBK}x&k8172o;n;3gOh2~BAJbF>gjCG;#@GPesVs93q!P0Le4~bvzP5JK&E);D
zCydWat(Qxl1BzezdvPRo2-Nr{qDe>>E3G+?_^?p?{t<<tAY-FMzbQJ$d_hV%!l}bj
zk@n1|?4~$l<m8W?VXn_abkG3;V~E_QZYQxMO)Q$-!g+~)Rdmv}7FR^D(_gHN(RcX$
zL2>W?2e9S5bb%MX0Ae=O)zmcG{JQk~)HgnUUQt$Rai=&eB^gu`#+kfXx;`%?kVR@D
zIHe__lD$LrC_G?nZvyN!Nc!slTOXusF}RvS9c+gU!S^CYBQYs%$b040kQ`!)u&!BH
z8iCk*R4%yqvFSNt)xU6Jp6m+guEwp}Xuc=BPO>_$3r$5B@^MRO`%>ubHTKtSYQ;e_
zW9njG4~Aa~wZ&+g?#@<<CrxL4RIc*dn7Rh?VR7l*lq{vXQzdui6<7_MQdm<oVi-1k
z2u$t<;lxSP>v;6?+K@Kx1{o5<0o#8m9HQC_Mi!-@?EqVuJZy_u=no8dmlyz+^t~hP
zaf=fO>l2Vhpn+j`pat+($)oI5=@BL_gBzDU(Ue5u<<t5G*vjY-UR`gp3iMse8nLYz
zpRyDm5`x{G8}y`m9SN6Txd#S6MFpD7!s9yPAqQ1ItviE7g|dX8`8Issl%|O0>f!v%
z3W;OnI6)%Z`w5M;jav&m%rf-CDwoMj3ruxD6gVz%2uxjEPp$U~cUs?DwoZJhQ>KU%
znM%R@44m07te^IA?5Gpb%32^t?p<`~H1zy~mq_8V8SS`!7Mgw*ntm3V{;La3{|zFF
BfcgLc
--- a/build/pgo/server-locations.txt
+++ b/build/pgo/server-locations.txt
@@ -151,8 +151,12 @@ https://sectest1.example.org:443       p
 https://sub.sectest2.example.org:443   privileged
 https://sectest2.example.org:443
 https://sub.sectest1.example.org:443
 
 #
 # Used while testing the url-classifier
 #
 http://malware.example.com:80
+
+# Bug 483437, 484111
+https://www.bank1.com:443           privileged,cert=escapeattack1
+https://www.bank2.com:443           privileged,cert=escapeattack2
--- a/security/manager/ssl/src/nsNSSCertHelper.cpp
+++ b/security/manager/ssl/src/nsNSSCertHelper.cpp
@@ -880,17 +880,34 @@ ProcessRDN(CERTRDN* rdn, nsAString &fina
     if (NS_FAILED(rv))
       return rv;
     
     //This function returns a string in UTF8 format.
     decodeItem = CERT_DecodeAVAValue(&ava->value);
     if(!decodeItem) {
       return NS_ERROR_FAILURE;
     }
-    avavalue = NS_ConvertUTF8toUTF16((char*)decodeItem->data, decodeItem->len);
+
+    // We know we can fit buffer of this length. CERT_RFC1485_EscapeAndQuote
+    // will fail if we provide smaller buffer then the result can fit to.
+    PRIntn escapedValueCapacity = decodeItem->len * 3 + 3;
+    nsAutoArrayPtr<char> escapedValue;
+    escapedValue = new char[escapedValueCapacity];
+    if (!escapedValue)
+      return NS_ERROR_OUT_OF_MEMORY;
+
+    SECStatus status = CERT_RFC1485_EscapeAndQuote(
+          escapedValue.get(),
+          escapedValueCapacity, 
+          (char*)decodeItem->data, 
+          decodeItem->len);
+    if (SECSuccess != status)
+      return NS_ERROR_FAILURE;
+
+    avavalue = NS_ConvertUTF8toUTF16(escapedValue);
     
     SECITEM_FreeItem(decodeItem, PR_TRUE);
     params[0] = type.get();
     params[1] = avavalue.get();
     nssComponent->PIPBundleFormatStringFromName("AVATemplate",
                                                   params, 2, temp);
     finalString += temp + NS_LITERAL_STRING("\n");
   }
--- a/security/manager/ssl/tests/mochitest/bugs/Makefile.in
+++ b/security/manager/ssl/tests/mochitest/bugs/Makefile.in
@@ -35,19 +35,26 @@
 # the terms of any one of the MPL, the GPL or the LGPL.
 #
 # ***** END LICENSE BLOCK *****
 
 DEPTH		= ../../../../../..
 topsrcdir	= @top_srcdir@
 srcdir		= @srcdir@
 VPATH		= @srcdir@
-relativesrcdir	= security/ssl
+relativesrcdir	= security/ssl/bugs
 
 include $(DEPTH)/config/autoconf.mk
 include $(topsrcdir)/config/rules.mk
 
- _CHROME_FILES	= \
-	test_bug413909.html \
-	$(NULL)
+_TEST_FILES = \
+        test_bug480509.html \
+        test_bug484111.html \
+        $(NULL)
 
- libs:: $(_CHROME_FILES)
+_CHROME_FILES = \
+        test_bug413909.html \
+        $(NULL)
+
+libs:: $(_TEST_FILES)
+	$(INSTALL) $(foreach f,$^,"$f") $(DEPTH)/_tests/testing/mochitest/tests/$(relativesrcdir)
+libs:: $(_CHROME_FILES)
 	$(INSTALL) $(foreach f,$^,"$f") $(DEPTH)/_tests/testing/mochitest/chrome/$(relativesrcdir)
new file mode 100644
--- /dev/null
+++ b/security/manager/ssl/tests/mochitest/bugs/test_bug480509.html
@@ -0,0 +1,88 @@
+<html>
+<head>
+  <title>Test bug 483437 and bug 480509</title>
+  <script type="text/javascript" src="chrome://mochikit/content/MochiKit/packed.js"></script>
+  <script type="text/javascript" src="chrome://mochikit/content/tests/SimpleTest/SimpleTest.js"></script>        
+  <link rel="stylesheet" type="text/css" href="chrome://mochikit/content/tests/SimpleTest/test.css" />
+</head>
+<body onload="onWindowLoad()">
+
+<iframe src="https://www.bank1.com/" onload="onFrameLoad()"></iframe>
+
+<script class="testbody" type="text/javascript">
+
+SimpleTest.waitForExplicitFinish();
+
+function badCertListener() 
+{
+}
+
+badCertListener.prototype = {
+  badCertCaught: false,
+
+  getInterface: function (aIID) {
+    return this.QueryInterface(aIID);
+  },
+
+  QueryInterface: function(aIID) {
+    netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect");
+    if (aIID.equals(Components.interfaces.nsIBadCertListener2) ||
+        aIID.equals(Components.interfaces.nsIInterfaceRequestor) ||
+        aIID.equals(Components.interfaces.nsISupports))
+      return this;
+
+    throw Components.results.NS_ERROR_NO_INTERFACE;
+  },  
+
+  testCert: function(cert1, expected)
+  {
+    netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect");
+    var certDumpTree1 = Components.classes["@mozilla.org/security/nsASN1Tree;1"]
+                       .createInstance(Components.interfaces.nsIASN1Tree);
+    certDumpTree1.loadASN1Structure(cert1.ASN1Structure);
+    var value1 = certDumpTree1.getDisplayData(9);
+    
+    is(value1, expected, "Incorrect subject recognized");
+  },
+  
+  notifyCertProblem: function(socketInfo, sslStatus, targetHost) {
+    netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect");
+    var cert = sslStatus.QueryInterface(Components.interfaces.nsISSLStatus)
+      .serverCert;
+    this.testCert(cert, "CN = www.bank1.com\\00www.bad-guy.com\n");
+
+    this.badCertCaught = true;
+    return true;
+  }
+}
+
+function onFrameLoad()
+{
+  ok(false, "Attackers page failed to load");
+}
+
+function onWindowLoad()
+{
+  var req = new XMLHttpRequest();
+  var certListener = new badCertListener();
+  try
+  {
+    req.open("GET", "https://www.bank1.com/", false);
+    netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect");
+    req.channel.notificationCallbacks = certListener;
+    req.send(null);
+  }
+  catch(ex)
+  {
+    // ignore
+  }
+  
+  ok(certListener.badCertCaught, "We Caught the invalid certificate");
+  
+  SimpleTest.finish();
+}
+
+</script>
+
+</body>
+</html>
new file mode 100644
--- /dev/null
+++ b/security/manager/ssl/tests/mochitest/bugs/test_bug484111.html
@@ -0,0 +1,72 @@
+<html>
+<head>
+  <title>Test bug 484111</title>
+  <script type="text/javascript" src="chrome://mochikit/content/MochiKit/packed.js"></script>
+  <script type="text/javascript" src="chrome://mochikit/content/tests/SimpleTest/SimpleTest.js"></script>        
+  <link rel="stylesheet" type="text/css" href="chrome://mochikit/content/tests/SimpleTest/test.css" />
+</head>
+<body onload="onWindowLoad()">
+
+<iframe src="https://www.bank2.com/" onload="onFrameLoad()"></iframe>
+
+<script class="testbody" type="text/javascript">
+
+SimpleTest.waitForExplicitFinish();
+
+function badCertListener() 
+{
+}
+
+badCertListener.prototype = {
+  badCertCaught: false,
+
+  getInterface: function (aIID) {
+    return this.QueryInterface(aIID);
+  },
+
+  QueryInterface: function(aIID) {
+    netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect");
+    if (aIID.equals(Components.interfaces.nsIBadCertListener2) ||
+        aIID.equals(Components.interfaces.nsIInterfaceRequestor) ||
+        aIID.equals(Components.interfaces.nsISupports))
+      return this;
+
+    throw Components.results.NS_ERROR_NO_INTERFACE;
+  },  
+
+  notifyCertProblem: function(socketInfo, sslStatus, targetHost) {
+    this.badCertCaught = true;
+    return true;
+  }
+}
+
+function onFrameLoad()
+{
+  ok(false, "Attackers page failed to load");
+}
+
+function onWindowLoad()
+{
+  var req = new XMLHttpRequest();
+  var certListener = new badCertListener();
+  try
+  {
+    req.open("GET", "https://www.bank2.com/", false);
+    netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect");
+    req.channel.notificationCallbacks = certListener;
+    req.send(null);
+  }
+  catch(ex)
+  {
+    // ignore
+  }
+  
+  ok(certListener.badCertCaught, "We Caught the invalid certificate");
+  
+  SimpleTest.finish();
+}
+
+</script>
+
+</body>
+</html>